Bloc de Memorie

Unitatea de încărcare și salvare(LS) executa scrierile și citirile memoriei. Lățimea sa de banda a fost dublată in Zen 2, fiind de 256biti. LS-ul conține o coadă de încărcare (LDQ) cu 44 de intrări care primește operații încărcate de Dispatch prin folosind unuul dintre cele două AGU-uri din motorul de execuție și, atasat acestor, adresa lor liniară. O operație rămâne salvată în LDQ până când procesarea ei este finalizata sau o eroare este întâmpinată. Operațiile primite de la Dispatch, împreună cu adresele lor liniare și alte date destinate stocării primite de la motoarele de execuție, sunt primite in coada de salvare (STQ). In Zen 2, STQ-ul dispunde 48 de intrari, spre deosebire de Zen+, care are doar 44. O operație rămâne în STQ până în momentul în care operația de salvare a fost finalizată sau se întâmpină o eroare.

Cele trei canale independente de care dispune LS-ul pot executa două operații de încărcare de 256biti și o operație de salvare de 256 biti per ciclu. Canalele de încărcare transformă adresele liniare în adrese fizice de memorie, în paralel accesând și cache-ul L1. Unitatea LS, in anumite situatii, poate prioritiza anumite operații de încărcare sau de salvare.

Trecerea bruscă de la salvare la încărcare este posibilă atunci când toate datele unei operații aflate în STQ au fost salvate și aceasta poate fi inaintata spre executie. Acest proces este executat prin intermediul unui buffer de translație pe două nivele (TLB). Acesta salvează temporar traducerile adreselor liniare în adrese fizice, mai simplu spus, e un cache al traducerilor de adrese de memorie. TLB-ul dedicat cache-ului L1 contine 64 de intrari și poate salva tabele cu dimensiunea de până la 1Gb. TLB-ul dedicat cache-ului L2 a fost îmbunătățit în Zen 2, acum având 2048 de intrari și poate salva tabele de până la 2Mb, dar și cuprinsuri de tabel (PDE). PDE-urile sunt folosite pentru parcurgerile mai rapide în DTLB și ITLB.

Unitatea LS folosește un bloc de memorie cache L1 (DC) de 32Kb cu protectie ECC. DC-ul poate executa două sarcini simultan (dacă acestea accesează blocuri diferite de memorie) și poate executa o singură operație de salvare per ciclu (cu dimensiunea maximă de 256 biti). În Zen 2 vectorii de 256 biti se pot salva sau accesa într-o singură operație, spre deosebire de Zen+ care desparte acești vectori în două jumătăți a câte 128 biti fiecare, astfel fiind necesare două operații. Latența de accesare a DC-ului de către unitatea Integer este de 4 cicluri, iar în cazul unității FP este de 7 cicluri. Adresele de memorie sunt generate în moduri simple, și anume: bază+dislocare, bază+index, dislocare; metodele mai complexe ar crește latenta generării cu un ciclu.

L1 DC Tags contine tag-uri bazate pe adresă liniară, astfel obținând mai repede datele solicitate pentru încărcare, în comparație cu determinarea adresei fizice a acestora. Prin această metodă se reduce atât consumul de energie cât și sarcina supusă asupra cache-ului.

Pages ( 7 of 12 ): « Previous1 ... 56 7 89 ... 12Next »

Leave a Reply

Lasă un răspuns

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.