Välimuistin laskeminen

Oppin välimuistien logiikkaa. Ihmettelen, pystytkö varmistamaan, että ymmärsin oikein. Jos välimuisti on tagikentässä sisältää 16 bittiä, asetetulla kentällä on 10 bittiä ja lohkokentän tavu on 6 bittiä, niin voin johtaa vain näistä tiedoista että kapasiteetti on 128 kt ja se on kaksisuuntainen asetettu assosiatiiviseksi lohkokoon 64 tavun kanssa, koska 2 because = 64 tavua lohkokentän tavusta. p>

Olen oppinut, että kaavat ovat

lohkojen lukumäärä = kapasiteetti / lohkon koko

sarjojen lukumäärä = lohkojen lukumäärä / # assosiatiivisuus

Siksi Voin kaksinkertaistaa assosiatiivisuuden 4-tie, mutta en voinut täyttää vaatimuksia 4-tie välimuisti, koska se ei Tarvitset uuden määrän bittejä asetetussa kentässä.

Ymmärsinkö oikein?

Vastaa

Auttaako tämä kuva sinua ymmärtämään, miten assosiatiiviset välimuistit toimivat rakenteellisesti?

kirjoita kuvan kuvaus tähän lainattu osoitteesta täällä

Lyhyesti sanottuna lohkojen offset-bitit määrittävät lohkosi koon (kuinka monta tavua välimuistirivillä on, kuinka monta saraketta, jos haluat). Indeksibitit määräävät, kuinka monta riviä kussakin sarjassa on. Välimuistin kapasiteetti on 2 ^ (blockoffsetbits + indexbits) * #sets. Tällöin se on 2 ^ (4 + 4) * 4 = 256 * 4 = 1 kilotavu.

Samankokoiselle välimuistille (kapasiteetti), jos siirrytään 4-suuntaisesta kaksitaajuiseen tavalla asetettu assosiatiivinen, se on kaksisuuntainen assosiatiivinen, voit tehdä sen joko kaksinkertaistamalla jokaisen sarjan rivit tai kaksinkertaistamalla sarakkeet sarjassa, toisin sanoen kaksinkertaistamalla välimuistilinjojen määrän tai kaksinkertaistamalla lohkon koon.

Jos päätät kaksinkertaistaa rivien lukumäärän, päädytään siten, että 12-bittinen osoitteesi jaetaan 5-bittiseksi indeksiksi ja 4-bittiseksi lohkonsiirroksi, jolloin jäljelle jää 3-bittinen tagi.

Jos päätät kaksinkertaistaa lohkokoon, päädytään jakamaan 12-bittinen osoitteesi 4-bittiseksi indeksiksi, 5-bittiseksi lohkonsiirroksi, jättäen 3-bittinen tagi.

Toistettavaksi mielestäni assosiatiivisten välimuistien hallitsevat kaavat ovat:

Cache Capacity = (Block Size in Bytes) * (Blocks per Set) * (Number of Sets) Index Bits = LOG2(Blocks per Set) Block Offset Bits = LOG2(Block Size in Bytes) Tag Bits = (Address Bits) - (Index Bits) - (Block Offset Bits) 

Alun perin mainitussa esimerkissä en Luulen, että voit päätellä välimuistin koon vastaavien osoitebittikenttien koon perusteella tekemättä oletusta abo assosiatiivisuutta. Jos se on kaksisuuntainen assosiatiivinen, niin voit sanoa:

Välimuistin kapasiteetti = (2 ^ 6) * (2 ^ 10) * (2) = 2 ^ 18 = 2 ^ 8 kilotavua = 256 kilotavua. En ole varma, kuinka keksit 128 kilotavua. Näin olisi, jos se olisi yksisuuntainen assosiatiivinen (suoraan yhdistetty).

128 kt: n (2 ^ 17 tavua) välimuistikapasiteetille voisi tehdä 4-suuntaisen assosiatiivisen välimuistin 64-tavuisella lohkokoolla sanomalla:

2^17 = 2^6 * (Blocks per Set) * 4 Blocks per Set = 2^17 / 2^6 / 2^2 = 2^9 = 512 

… ja varaamalla siksi 9 hakemistobittiä, 4 lohkosiirtobittiä ja loput (19) tagibittiä.

Vastaa

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