Tavuosoitettava vs sana, johon osoite on osoitettavissa

Yritän ymmärtää eroa tavuosoituksen ja sanaosoituksen välillä.

4-tieinen sarja-assosiatiivinen välimuistiyksikkö, jonka kapasiteetti on 16 kt, on rakennettu käyttäen 8 sanan lohkokokoa. Sanan pituus on 32 bittiä. Fyysisen osoitetilan koko on 4 Gt.

Sarjojen määrä välimuistissa $ = (16 * 1024) / (4 * 8 * 4) = 2 ^ 7 $

Jos käytetään sanaosoitetta:

Estä offset $ = 3 \ bits $

Koska PAS on $ 4 \ GB $ , osoitteiden kokonaismäärä = $ 2 ^ {32} / 2 ^ 2 = 2 ^ {30} $

Osoitebittien kokonaismäärä $ = 30 \ bitti $

Osoiterakenne:

Tunnistebitit: $ 20 \ bits $
Aseta bittejä: $ 7 \ bits $
Estä offsetbitit: $ 3 \ bits $

Oletetaan, että keskusyksikkö haluaa nyt käyttää Tietyn sanan kolmas tavu.

  1. Välimuistiohjain käyttää joukkoa $ 7 \ bitti $ joukkoihin indeksoimiseksi ja sitten verrataan ylempää $ 20 \ bits $ -tagikenttää kaikkiin $ 4 $ lohkot sarjassa. Jos osuma löydetään, välimuistin osuma tapahtuu ja alempi $ 3 \ bits $ $ -siirtymä siirtää yhden sanasta $ 8 $ sanat yhdessä yleiskäyttöisessä rekisterissä. Sitten keskusyksikkö purkaa kolmannen tavun sanasta ja suorittaa toiminnon.
  2. Jos tunnisteita ei ole sovitettu, välimuistihäiriö tapahtuu, muistin lukusignaali lähetetään ja viittauksen paikkatietopaikan vuoksi lohko, joka sisältää sana siirretään välimuistiin.

Jos CPU on tavu osoitettavissa:

Osoitebittejä yhteensä $ = 32 $

Osoiterakenne: Tunnistebitit: $ 20 \ bits $
Aseta bittejä: $ 7 \ bits $
Estä offsetbitit: $ 5 \ bits $

Jos keskusyksikkö haluaa käyttää sana:

  1. Sama kuin sanan osoitettava vaiheessa 1, mutta keskusyksikkö voi nyt suoraan kohdistaa sanan 3. tavun käyttämällä alempaa $ 2 \ bittiä $ tavun siirtymä. Olen kuitenkin hämmentynyt siitä, miten se tapahtuisi. Koska CPU-rekisterin koon leveys on 1 sana, samanlainen kuin sanaosoitus, yksi sana lohkon 8 sanasta siirretään rekisteriin. Mutta miten ”tavujen purku” -vaihe on täällä helpompaa? Ja miksi kutsumme sitä tavuosoitteeksi, jos silti todella osoitamme sanaa?
  2. Sama kuin sanaosoitteen vaiheessa 2. Tietolohko siirretään muistista välimuistiin välimuistin puuttuessa.

Tässä vastauksessa sanotaan myös, että fyysinen muisti on aina tavua osoitettavissa. Mitä eroa on nyt muistin osoitettavuuden ja suorittimen arkkitehtuurin osoitettavuuden välillä?

Vastaa

Sanaan osoitettu tarkoittaa, että prosessorin osoiteväylän rivien määrä on pienempi kuin sanan itse bittien määrä.

Sanotaan, että meillä on 4 tavun sana. (32-bittinen osoitetila)

Jos tämä kone on tavutunniste Tällöin CPU: n osoiteväylällä on 32 riviä, mikä mahdollistaa sen pääsyn jokaiseen tavuun muistissa.

Jos tämä kone on sanaosoitettava, CPU: n osoiteväylällä on 30 riviä ( $ 32 – log_ {2} 4 = 30 $ ), mikä sallii sen käyttää muistia VAIN 4 tavun sanoina / paloina ja myös osoitteista, jotka ovat sanakoon moninkertaisia.

Jos nyt pyydät suorittinta hakemaan tavun tietystä osoitteesta, se pudottaa ensin 2 vähiten merkitsevää bittiä (pisaralla tarkoitan korvaa ne 0 ”s) osoitteella, hae sana tuloksena olevasta osoitteesta ja palauta tavu käyttäen kahta vähiten merkitsevää bittiä offsetina haetussa sanassa.

Tämä lisää muistin käyttöaikaa, koska suorittimen on käytettävä enemmän aikaa osoitteen muokkaamiseen ja käsittelyyn. Mutta se auttaa myös vähentämään laitteistokustannuksia, koska piirien monimutkaisuus vähenee johtuen osoiteväyläjohtojen vähenemisestä.

Tätä yleiskustannusta ei kuitenkaan koskaan esiinny tavua osoittavassa koneessa, joten ”tavu” ”” on helpompaa purkaa.

Kommentit

  • Ymmärrän mitä sanot '. Mutta mitä ' tapahtuu, jos tavu osoitetaan? Oletetaan, että keskusyksikkö tarvitsee sanan kolmannen tavun. Se lähettää 32-bittisen osoitteen, jossa vähintään 2 merkitsevää bittiä on asetettu arvoon 10, oikea t?Mutta miten se sitten tallentaa tavun, kun otetaan huomioon, että se käyttää yhden sanan leveyttä rekisteriä? Voitti ' t, tässä tapauksessa myös keskusyksikkö noutaa sanan välimuistista ja tallentaa sen ' -rekisteriin?
  • Sinulle 1. kysymys: Tavuosoitteisilla suorittimilla on erilliset kirjoitusohjeet kirjoitettavien tietojen koon perusteella. Yksi tavulle, yksi kaksoistavulle, yksi nelitavuiselle, yksi sanalle jne. (Itse asiassa missä tahansa CPU: ssa on erilliset kirjoitusohjeet jokaiselle kirjoitettavalle tuetulle koolle). kirjoitettava tavu tallennetaan yleensä rekisterin 8 LSB: hen, sitten suoritetaan tavun kirjoitusohje. Tämä saa VAIN rekisterin 8 LSB-bittiä latautumaan tietoväylään, ja vain yksi tavu muistissa olevassa osoitteessa muuttuu.
  • En tehnyt ' ei ymmärrä toista kysymystäsi. Voisitteko kertoa tarkemmin.
  • Oletan, että sama tapahtuu lukemalla tavua tavua osoittavassa koneessa, eikö? Anna esimerkiksi ' s sanoa, että ' s merkkiryhmä char arr[10] ja keskusyksikkö haluaa lukea kolmannen merkin, eli arr[2]. Sitten kun tavu on käytetty 32-bittisellä osoitteella, se tallentaa sen rekisterin 8 LSB: hen. Mutta jos kyseessä on sana, joka on osoitettavissa, keskusyksikkö laskee ensin sen sanan osoitteen, johon kolmas tavu kuuluu (eli korvaa 2 LSB: tä 0: lla) ja noutaa sen sanan ' s -rekisteri. Sen jälkeen se käyttää tavueroa tarvittavan tavun saamiseksi. Onko tämä oikein?
  • Paljon kiitoksia. Pyydän teitä yhdistämään nämä kaikki alkuperäiseen vastaukseen, jotta se voisi auttaa kaikkia tulevia lukijoita.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *