ArticlePDF Available

IMPLEMENTACIJA PREDIKTORA ZA UPRAVLJANJE PRISTUPIMA SDRAM MEMORIJI IMPLEMENTATION OF PREDICTOR FOR ACCESS CONTROLL TO SDRAM MEMORY

Authors:

Abstract

Sadržaj – Pristupi dinamičkoj (SDRAM) memoriji uključuju tri aktivnosti: pretpunjenje, aktiviranje (Abstract – Dynamic memory accesses include three activities: precharge, row activation and column access, each of about 15 ns or more. For a sequence of successive accesses to columns into the same row of a bank, precharge and row activation must precede only the first access in the sequence, and subsequent accesses require only column accesses. One task of SDRAM controller is to minimize latency or to maximize bandwidth during memory accesses. Authors have proposed usage of hardware predictors to minimize latency of SDRAM memory accesses in their previous papers. Predictors dynamically register SDRAM access history, and based on them predict when to close opened row (this excludes precharge time) and which next row to open (this excludes row activation time) before next access into the same bank. In this paper design of hardware for closed row predictor and opened row predictor as elements of SDRAM memory controller is explained on functional blocks level.
INFOTEH-JAHORINA Vol. 9, Ref. E-II-12, p. 545-549, March 2010.
545
IMPLEMENTACIJA PREDIKTORA ZA UPRAVLJANJE PRISTUPIMA SDRAM MEMORIJI
IMPLEMENTATION OF PREDICTOR FOR ACCESS CONTROLL TO SDRAM MEMORY
Nebojša Milenković, Vladimir Stanković, Elektronski fakultet u Nišu
SadržajPristupi dinamičkoj (SDRAM) memoriji uključuju tri aktivnosti: pretpunjenje,
aktiviranje (otvaranje) vrste i pristup koloni, svaka u trajanju petnaestak ili više nsec. Pri nizu
sukcesivnih obraćanja kolonama u istoj vrsti banke, pretpunjenje i otvaranje vrste prethodi samo
prvom obraćanju u tom nizu obraćanja, dok ostala obraćanja zahtevaju samo pristupe koloni.
Jedan od zadataka kontrolera SDRAM memorija je da minimizira latenciju ili maksimizira
propusnost pri pristupima memoriji. U prethodnim radovima autora predloženo je korišćenje
hardverskih prediktora za minimiziranje latencije pri pristupima SDRAM memoriji. Prediktori
dinamički prate istoriju obraćanja SDRAM memoriji, i na osnovu toga predviđaju kada treba
zatvoriti otvorenu vrstu (čime se isključuje vreme pretpunjenja) i koju vrstu treba otvoriti kao
sledeću aktivnu vrstu (čime se isključuje vreme otvaranja vrste) pre sledećeg pristupa u okviru iste
banke. U ovom radu izloženo je projektovanje na nivou funkcionalnih blokova hadvera prediktora
zatvorene vrste i prediktora otvorene vrste kao elemenata kontrolera SDRAM memorija.
Ključne reči: SDRAM, kontroler SDRAM-a, latencija, prediktor zatvorene vrste, prediktor
otvorene vrste.
AbstractDynamic memory accesses include three activities: precharge, row activation and
column access, each of about 15 ns or more. For a sequence of successive accesses to columns
into the same row of a bank, precharge and row activation must precede only the first access in
the sequence, and subsequent accesses require only column accesses. One task of SDRAM
controller is to minimize latency or to maximize bandwidth during memory accesses. Authors have
proposed usage of hardware predictors to minimize latency of SDRAM memory accesses in their
previous papers. Predictors dynamically register SDRAM access history, and based on them
predict when to close opened row (this excludes precharge time) and which next row to open (this
excludes row activation time) before next access into the same bank. In this paper design of
hardware for closed row predictor and opened row predictor as elements of SDRAM memory
controller is explained on functional blocks level.
Key words: SDRAM, SDRAM controller, latency, closed row predictor, opened row predictor.
1. UVOD
Već duže od trideset godina glavne memorije računara
najčće se implementiraju dinamičkim RAM (DRAM)
memorijama. Savremeni tipovi ovih memorija sa
najraširenijom primenom su sinhrone DDR2 i DDR3
SDRAM memorije. Čipovi ovakvih memorija sadrže po 4 ili
8 nezavisnih banaka memorije, sa pratećim kolima za pristup
lokacijama u njima i privremeno čuvanje pročitanih podataka
u pridruženim sens pojačavačima. U tipičnim aplikacijama
DRAM memorije se u računaru nalaze iza keš memorija sa
kojima razmenjuju blokove podataka dužine 32 bajta (B) do
128B. Punjenje keš memorija promašenim blokovima
podataka značajno utiče na performanse računara kao celine.
Vreme za punjenje keša promašenim blokovima podataka TM
uključuje latenciju DRAM memorije TA i vreme prenosa
bloka podataka TT, TM = TA + TT. Fizika rada i implementaci-
ja DRAM memorija zahtevaju da se pri pristupu obave tri
aktivnosti: pretpunjenje, aktiviranje (otvaranje) vrste i pristup
koloni, koje se izvršavaju u vremenskim intervalima tRP , tRA i
tCL respektivno. Latencija memorije TA jednaka je zbiru ova
tri vremenska intervala TA= tRP+ tRA+ tCL . Svi podaci pročita-
ni iz jedne vrste prilikom njenog aktiviranja prisutni su u sens
pojačavačima (kao baferu vrste) sve do zatvaranja te vrste
sledećim pretpunjenjem. Ovo omogućuje da se po otvaranju
vrste sledeća uzastopna obraćanja kolonama u toj vrsti svedu
samo na pristupe kolonama, sa vremenom TA= tCL. Postoji
mogućnost da se pristupima pri čitanju ili upisu pridoda i
pretpunjenje, za čime onda nema potrebe pri sledećem
obraćanju nekoj drugoj vrsti u banci, pa se latencija onda
svodi na TA= tRA+ tCL . Ovo pokazuje da DRAM memorije
nisu u strogom smislu memorije sa slučajnim pristupom, koje
karakteriše vreme pristupa nezavisno od adresa lokacija
kojima se pristupa, već su memorije sa bankama, vrstama i
kolonama kao dimenzijama koje određuju vreme pristupa.
Pošto vreme pristupa TA može imati tri veličine: tRP+tRA+tCL,
tRA+ tCL ili samo tCL , istražuju se rešenja koja u pojedinim
oblastima aplikacija mogu smanjivati latenciju pristupa ka
donjoj granici tCL [1,2]. Aktuelne DDR3 i DDR2 SDRAM
memorije imaju vremena tRP, tRA i tCL veličina 12÷18 ns. Ove
memorije rade u režimu prenosa grupe podataka (burst mode)
dužine 8 ili 4 reči, i pri brzini prenosa 1333MTps, prenos
bloka podataka dužine 64 bajta preko 64-bitne magistrale
podataka traje samo TT = 6ns. Ovo pokazuje da u vremenu
TM latencija DRAM memorija ima dominantan uticaj.
546
Pogoršanje performansi procesora zbog čekanja na
pribavljanje podataka iz glavne memorije smanjuje se
korišćenjem neblokirajućih keš memorija, pribavljanjem
podaka unapred i drugim rešenjima [3,4,5], koja imaju svoju
cenu i ograničenja. Kao korisnu dopunu ovih rešenja autori
su predložili i istražili korišćenje prediktora u upravljanju
pristupima DRAM memoriji [6,8], koji mogu u značajnom
broju slučajeva unapred naložiti pretpunjenje i otvaranje nove
vrste, i time eliministi vremena tRP i tRA pri novim pristupima.
U daljem tekstu u odeljku 2 ukratko su izložene osnove
rada dva prediktora koji unapred zatvaraju otvorenu vrstu,
zaključujući na osnovu predistorije da ta vrsta dalje neće biti
aktivna. Na osnovu toga predložene su hardverske
implementacije ovih prediktora. Odeljak 3 sadrži prikaz
osnova rada prediktora koji unapred otvara novu vrstu, u koju
će verovatno biti usmeren sledeći pristup u okviru banke, i
hardverske implementacije ovog prediktora. Hardverske
implementacije prikazane su na nivou funkcionalnih blokova,
što omogućuje približnu procenu složenosti ovih prediktora.
Odeljak 4 sadrži zaključak, a odeljak 5 literaturu.
U radu su prikazane implementacije prediktora za DRAM
memoriju organizacije 2 grupe čipova sa po 64 linija
podataka, ukupnog kapaciteta 2GB. U svakoj grupi imamo po
8 DDR3 SDRAM čipova kapaciteta 1Gbit, sa 8 banaka
unutar čipa, svaka sa 8K vrsta sa 2K 8-bitnih kolona u svakoj
vrsti.
2. PREDIKTORI ZATVORENE VRSTE
Rad prediktora zatvorene vrste zasniva se na praćenju
vremenskih intervala između sukcesivnih pristupa u okviru
iste banke DRAM-a. Sledeća vremena karakterišu takve
pristupe. Vreme života je vreme koje protekne od prvog
pristupa u neku vrstu banke DRAM memorije do poslednjeg
pristupa u tu vrstu, pre njenog zatvaranja pretpunjenjem.
Vreme mrtve faze je vreme koje protekne od poslednjeg
pristupa u neku vrstu DRAM memorije do njenog zatvaranja.
Interval pristupa je vreme koje protekne između dva
sukcesivna pristupa istoj vrsti DRAM memorije. Ovo je
prikazano na slici 1. Ukoliko nakon otvaranja neke vrste u
nju više nemamo nijedan pristup pre njenog zatvaranja, tada
je taj prvi pristup ujedno i poslednji, pa je tada vreme života
te vrste jednako nuli, to jest imamo pojavu nultog vremena
života.
Simulacijom ponašanja SDRAM memorija pri izvršenju
grupe benchmark programa iz SPECint95 ustanovili smo
sledeće odnose između intervala pristupa i vremena mrtve
faze. Ako nakon poslednjeg pristupa otvorenoj vrsti protekne
vreme nekoliko puta duže od poslednjeg intervala pristupa,
velika je verovatnoća da je vrsta ušla u mrtvu fazu, pa je treba
zatvoriti komandom pretpunjenja. Već dvostruko duže vreme
od poslednjeg intervala pristupa daje dobru indikaciju ulaska
vrste u mrtvu fazu. Upravo ovo iskoristili smo da definišemo
rad prediktora mrtve faze i njegovu hardversku
implementaciju.
Simulacijom smo takođe ustanovili da je vreme života
znatnog broja tek otvorenih vrsta jednako nuli. Ovo upućuje
da vrste sa nultim vremenom života odmah posle otvaranja i
čitanja ili upisa treba zatvoriti pridodavanjem i komande
pretpunjenja. Dinamičkim praćenjem istorije tipa nulto-
nenulto vreme života svake novo otvorene vrste može se sa
znatnom izvesnošću predvideti da li će pri ponovnom
otvaranju vrsta imati nulto vreme života.
2.1 Prediktor nultog vremena života
Za beleženje istorije nulto-nenulto vreme života koristimo
dvobitne brojače sa zasićenjem, sa stanjima {0,1,2,3} i
početnim stanjem 0. Neka stanja 0 i 1 ukazuju da pri
sledećem otvaranju vrsta neće imati nulto vreme života, a
stanja 2 i 3 da će imati nulto vreme života. Nulto vreme
života po otvaranju vrste zahteva inkrementiranje stanja
brojača, osim ako je ono već bilo 3, a nenulto vreme života
zahteva dekrementiranje stanja brojača, osim ako je ono već
bilo 0. Rezultati simulacije pokazali su da se neznatno lošiji
rezultati predviđanja dobijaju ako se po jedan ovakav brojač
koristi za grupu od 16 sukcesivnih vrsta, što broj potrebnih
brojača za razmatranu konfiguraciju DRAM memorija
smanjuje sa 128K na samo 8K. Na osnovu tih zaključaka
razradili smo prediktor nultog vremena života.
Kontroler DRAM-a ima dva reda za prihvatanje naloga:
- red sa tekućim nalozima pristiglim od procesora-keša ili
DMA kontrolera (RED_A),
- red sa nalozima za pretpunjenje iz prediktora mrtve faze
(RED_B).
Opsluživanje naloga iz reda RED_A ima prioritet u odnosu
na opsluživanje naloga iz reda RED_B.
U kontroleru DRAM memorije za svaku banku Bk,
k=1,2,…,N, uveden je:
Po jedan Registar Adrese Otvorene Vrste (RAOVk) u
kome se čuva adresa trenutno otvorene vrste u banci Bk. Neka
je Ri =(RAOVk). Označimo sa Rj adresu vrste kojoj se
trenutno pristupa u banci Bk, na osnovu naloga iz reda
RED_A.
Po jedan Registar Adrese Zatvorene Vrste (RAZVk) u
kome se čuva adresa vrste zatvorene neposredno pre ili pri
otvaranju tekuće otvorene vrste u banci Bk.
Po jedan indikator Ponovnog Pristupa Vrsti (PPV) sa
početnim stanjem 0
Korišćenje ovakvih prediktora nultog vremena života
organizujmo uz pomoć sledeće dve funkcije.
Čitanje predikcije:
Pri aktiviranju sledeće vrste Rj u banci Bk čita se stanje
prediktora pridruženog toj vrsti.
A1. Ako je stanje prediktora {2,3} (prediktor svojim
stanjem prognozira nulto vreme života aktivirane vrste),
primljenom nalogu od procesora (čitanje, upis) kontroler
DRAM-a pridodaje i komandu pretpunjenja (čitanje sa
pretpunjenjem, upis sa pretpunjenjem). Preći na A3.
Otvaranje
vrste A Otvaranje
vrste B
interval
pristupa
vreme života vreme mrtve
faze
Pre -t
punjenje
R/W
A R/W
A R/W
A R/W
A
Sl. 1. Karakteristična vremena pri pristupima DRAM-u
547
A2. Ako je stanje prediktora {0,1} (prediktor svojim
stanjem prognozira nenulto vreme života aktivirane vrste),
primljeni nalog od procesora (čitanje, upis) kontroler DRAM-
a prosleđuje u vidu komande (čitanje, upis).
A3. Kraj. Preći na ažuriranje prediktora nultog vremena
života.
Ažuriranje prediktora:
B1. Ako je pristup u banci Bk usmeren u pogrešno zatvorenu
vrstu Rj = Ri (ima se nenulto vreme života) i PPVk=0,
postaviti PPVk1 i dekrementirati sa zasićenjem 2-bitni
prediktor. Ako je PPVk već jednako 1 ne činiti ništa. Preneti
upravljanje na prediktor mrtve faze.
B2. Ako je pristup u banci Bk usmeren u novu vrstu Rj Ri , a
za banku je PPVk=0 (bilo je nulto vreme života vrste Ri ),
prediktor za vrstu Ri inkrementirati sa zasićenjem. Vrsta Ri
određena je sadržajem registra adrese otvorene vrste RAOVk
u banci Bk. Tek posle ažuriranja prediktora za vrstu Ri i
prenosa RAZVk (RAOVk) u registar RAOVk može se
upisati adresa nove aktivirane vrste Rj.
B3. Ako je pristup u banci Bk usmeren u novu vrstu Rj Ri , a
za banku je PPVk=1 (bilo je nenulto vreme života vrste Ri ),
prediktor za vrstu Ri dekrementirati sa zasićenjem, a PPVk
obrisati (PPVk0), i u kontroleru DRAM-a za banku Bk
upisati adresu Rj u registar RAOVk.
Elementi prediktora nultog vremena života prikazani su
na slici 2. Svih 8K 2-bitnih prediktora locirano je u SRAM
memoriji, adresiranoj sa 13 najznačajnijih od 28 bitova
adresa podataka u SDRAM memoriji. Čitanje stanja
izabranog prediktora kao i njegovo ažuriranje obavlja se u 2-
bitnom brojaču sa zasićenjem BRZS. Indikatori PPVk
grupisani su u polje indikatora, a registri RAOVk i RAZVk u
polja registara, k=1,2,...,N. Adresiranje indikatora PPVk i
registara RAOVk i RAZVk vrši se sa 4 bita adrese najveće
težine.
2.2 Prediktor mrtve faze
Ako zatvaranje otvorene vrste ne naloži prediktor nultog
vremena života, zaduženje za to prenosi se na prediktor mrtve
faze. To se dešava i kada prediktor nultog vremena života
pogrešno zatvori vrstu, koja pri sledećem obraćanju banci
biva ponovo otvorena. Da prediktor mrtve faze zatvara vrste
sa nenultim vremenom života, trebalo bi da on za svaku
banku Bk, k=1,...,N, u SDRAM memoriji ima po:
Brojač Intervala Pristupa BIPk formata BIPk [b-1:0],
Registar Intervala Pristupa RIPk formata RIPk [b-1:0], sa
bitom RIPk [0] fiksiranim na nuli,
Komparator (b-to bitni) sadržaja brojača BIPk i registra
RIPk,
Indikator Banka Aktivna (BAKk) koji stanjem 1 ukazuje
da je u banci k neka vrsta aktivirana,
Flip- flop Dozvole Brojanja (DBk).
Brojači Intervala Pristupa pridruženi bankama okidaju se
taktnim signalom učestanosti 50MHz. Pošto interfejs
kontrolera DRAM-a sa DRAM-om radi na 800MHz, to se
okidni signal za ove registre dobija deobom signala od
800MHz sa 16. Kako je taktni signal procesora 3,2GHz, ovih
50MHz odgovaraju deobi taktnog signala procesora sa 64.
Ovo znači da jedinični inkrement Brojača Intervala Pristupa
uključuje 64 jedinice intervala pristupa merenih periodama
takta procesora. U postupku inicijalizacije kontrolera
SDRAM-a svi registri RIP postavljaju se na maksimalnu
vrednost.
C1. Pri aktiviranju nove vrste Rj u banci Bk brojač BIPk se
resetuje a indikator PPVk se briše. Daje se dozvola da taktni
signal od 50MHz okida brojač BIPk (DBk 1).
Posle svakog taktnog ciklusa signala od 50MHz kojim se
okidaju brojači BIP za sve banke u kojima postoje otvorene
vrste, komparatori pridruženi parovima (BIP, RIP) izlaznim
signalom 1 pri (BIPk[b-1:0])>(RIPk[b-1:0]) pokazuju na
banke u kojima su otvorene vrste ušle u mrtvu fazu. Za one
banke za koje je taj uslov ispunjen ukida se dozvola brojanja
za njihove brojače BIP i njihovi identifikatori ID upisuju se u
RED_B komandi pretpunjenja. Za slučaj da ima više takvih
banaka mehanizam serijalizacije upravlja upisima tih
identifikatora u ovaj red.
C2. Ako je sledeće obraćanje u banci Bk usmereno u otvorenu
vrstu Rj = Ri naložiti prenos RIPk[b-1:1] (BIPk[b-2:0]),
zatim resetovati BIPk i dozvoliti brojanje za ovaj brojač
(DBk1).
Elementi prediktora mrtve faze prikazani su na slici 3.
Rezultati simulacije pokazali su da je za praćenje intervala
pristupa na korišćenoj grupi benchmark programa dovoljno
korišćenje brojača BIP i registara RIP dužina b=10 binarnih
pozicija. BSER je 4-bitni brojač koji generiše adrese banaka i
SRAM
Memorija
8K x 2b
BRZS
RAOV
(15-0) RAZV
(15-0)
Adresa
(27:15)
Reset
Predikcija
CE
DO
Inc Dec
13 13
DI
CK
WE
PPV
16 x 1b
Adresa
(27:24)
Adresa
(27:24)
DIO
DIO DIO
Sl. 2 Elementi prediktora nultog vremena života
Mrtva
faza
Ck
50MHz
Ck
800MHz
Data
CE
DB
0
BAK
0
BAK
15
WE
Izlaz
Upravljanje
RED_B
0
0
0
1
0
b-1
b
b
b-1
b-1
115
BSER
DEK 1 od 16
BIP
0
RIP
0
KOMP
0
Res
Set
.
..
.
.
.
.
>
Mrtva
faza
Ck
50MHz
CE
DB
15
0
0
1
0
b-1
b
b
b-1
b-1
BIP
15
RIP
15
KOMP
15
Res
Set
..
>
Sl.3 Elementi prediktora mrtve faze
548
koji zajedno sa dekoderom tipa 1 od 16 obavlja funkciju
serijalizacije upisa u RED_B identifikatora ID banaka čije
otvorene vrste su ušle u mrtvu fazu. BSER se okida taktnim
signalom učestanosti 800MHz. Po zapisivanju identifikatora
banke za koju je ispunjen kriterijum ulaska u mrtvu fazu, njen
brojač BIP automatski se resetuje. Upravljačka jedinica
kontrolera DRAM memorije upravlja pristupima registrima u
okviru reda RED_B, prenosima RIPk[b-1:1] (BIPk[b-2:0]),
stanjima signala BAK i DB i drugim aktivnostima prediktora
mrtve faze.
U radu [7] prikazan je prediktor koji unapred zatvara
otvorenu vrstu organizovan po analogiji sa prediktorima
grananja u dva nivoa.
3. PREDIKTOR SLEDEĆE VRSTE
Blagovremeno zatvaranje otvorene vrste eliminiše
potrebu za pretpunjenjem pri sledećem pristupu nekoj drugoj
vrsti u banci. Ostaje potreba za otvaranjem te vrste pre
pristupa podacima u odgovarajućim kolonama. Dinamičkim
praćenjem redosleda otvaranja vrsta u banci, posle zatvaranja
neke vrste moguće je predvideti kojoj vrsti će biti upućen
sledeći pristup, pa unapred otvoriti tu vrstu. Time se u
vremenu pristupa TA pored vremena tRP eliminiše i vreme tRA,
svodeći vreme pristupa na teorijski minimum tCL. Poslednjih
godina mnogi autori predlagali su rešenja za efikasno
pribavljanje unapred blokova podataka u keš memoriju.
Rešenja izložena u radovima [3,4] inspirisala su nas da slično
rešenje predložimo za organizovanje prediktora sledeće vrste.
Zasnovanost ovog rešenja sa rezultatima simulacije koji
potvrđuju dobru tačnost predviđanja koju vrstu otvoriti
unapred izložena je u radu autora [8].
Funkcionalna organizacija prediktora koji predviđa koju
sledeću vrstu otvoriti data je na slici 4. Prediktor se sastoji od
dve tabele: Tabele istorije vrsta (Row History Table-RHT) i
Tabele istorije obrazaca (Pattern History Table - PHT). RHT
pamti poslednjih p vrsta kojima se pristupalo za svaku od
banaka, što znači da RHT ima onoliko stavki koliko ima
banaka. PHT sadrži predikcije, i ima m stavki, pri čemu je
maksimalna vrednost za m broj vrsta u banci. Svaka stavka
sadrži j dvodelnih polja: trenutnu vrstu (rp) i sledeću vrstu
(rsld). Indeks za pristup PHT dobija se kao t najnižih bitova
sabiranja sa odsecanjem poslednjih p indeksa vrste iz stavke
za tu banku u RHT, tako da je m=2t.
Prediktor koji predviđa koju sledeću vrstu treba otvoriti
realizuje se preko dve osnovne funkcije Ažuriranje i Čitanje
predikcije. Ako sa tekuća_banka i nova_vrsta označimo
banku u kojoj se javio pristup i adekvatnu novu vrstu, tada bi
ove funkcije izgledale ovako.
Ažuriranje prediktora:
Ova operacija vrši ažuriranje RHT i PHT kod otvaranja nove
vrste, tako da istorija zapamćena u ovim tabelama bude
validna i sastoji se iz sledećih koraka:
D1. Za početak, tekuća_banka se koristi kao indeks za pristup
RHT, i locira se sekvenca vrsta (vrsta1, vrsta2, ... vrstap). Ova
sekvenca koristi se za indeksiranje PHT i locira se
odgovarajuća stavka u njoj.
D2. Sekvenca vrsta (vrsta1, vrsta2, ... vrstap) zamenjuje se
sekvencom (vrsta2, ... vrstap, nova_vrsta).
D3. Od svih dvodelnih polja u izabranoj stavci PHT, locira se
polje koje počinje sa vrstap. Ukoliko takvo polje postoji, deo
koji predviđa sledeću vrstu u lociranom polju zamenjuje se sa
nova_vrsta. Kraj operacije Ažuriranje.
D4. Ukoliko takvo polje ne postoji, proverava se da li su sva
dvodelna polja u datoj stavci popunjena. Ako jesu, vrši se
izbor polja koje će biti izbačeno, koristeći FIFO algoritam,
umesto kojeg će biti ubačeno novo polje.
D5. Ubacuje se novo dvodelno polje. U njemu se kao prvi
deo polja upisuje vrstap a kao drugi deo upisuje nova_vrsta.
Kraj operacije Ažuriranje.
Korakom D3, odnosno D5 nova_vrsta se definiše kao sledeća
vrsta koja neposredno sledi za sekvencom (vrsta1, vrsta2, ...,
vrstap).
Čitanje predikcije:
Ova operacija predviđa sledeću vrstu, na bazi tekuće, i na
bazi informacije da je prethodna sekvenca vrsta kojima se
pristupalo u datoj banci (vrsta1, vrsta2, ... vrstap).
E1. Oznaka banke tekuća_banka se koristi kao indeks za
pristup RHT, i locira se adekvatna sekvenca vrsta (vrsta1,
vrsta2, ... vrstap).
E2. Sekvenca vrsta (vrsta1, vrsta2, ... vrstap) koristi se za
izračunavanje indeksa za lociranje stavke u PHT.
E3. Proverava se da li neko od polja u datoj stavki u svom
prvom delu sadrži vrstap. Ukoliko takvo polje ne postoji, tada
za taj slučaj ne postoji predikcija i to je kraj operacije Čitanje
predikcije. Ukoliko takvo polje postoji, nastavlja se sa
sledećim korakom.
E4. Selektuje se drugi deo nađenog polja, koji predviđa
sledeću vrstu (rsld), pošto on predviđa sledeću vrstu kao
nastavak sekvence (vrsta1, vrsta2, ... vrstap).
E5. Konačno, kontroler DRAM memorije koristi rsld kako bi
inicirao otvaranje te vrste u datoj banci.
Implementacija prediktora koji predviđa sledeću vrstu
zahteva gbp⋅⎡log2n bitova za RHT i mj2⋅⎡log2n bitova za
PHT. Ovde je g broj grupa DRAM čipova kojima se pristupa
istovremeno, b broj banaka u svakoj grupi čipova, a n je broj
vrsta u jednoj banci. Takođe, potreban je jedan t-bitni sabirač
i dodatna logika za implementaciju operacija Ažuriranje i
Čitanje predikcije. Za usvojenu DRAM strukturu od 2GB,
korišćene su sledeće vrednosti: p=4, j=2, i dve vrednosti za
m: 4096 i 1024. Za izabrane vrednosti, potrebno je 832b za
RHT i 26KB za PHT, ako je m=4096, odnosno 6.5KB za
PHT, ako je m=1024.
Šematski prikaz implementacije prediktora sledeće vrste
prikazan je na slici 5. RHT tabelu sa 2×8 = 16 stavki
implementirajmo u memoriji MRHT organizovanoj kao 4
paralelne memorije MRHT(0), …, MRHT(3) tipa 16×13 bita.
Ovde je jedna stavka RHT tabele sa adresama poslednje 4
otvorene vrste u jednoj banci smeštena na istim relativnim
gra
addr.
remmap.
bnka rowa
r
sld
RHT PHT
Adresa podatka u DRAM-u
r
1
r
2
r
P
r
P
cola
..
..
..
Sl. 4. Organizacija prediktora koji predviđa sledeću vrstu
549
adresama u okviru ove 4 paralelne memorije, čime je
omogućeno istovremeno čitanje sve 4 vrste iz date stavke
RHT tabele. Na taj način one se mogu sabrati uz pomoć 3
sabirača ne zahtevajući predugo vreme sabiranja. Obzirom da
se ovim sabiranjem formira adresa za pristup PHT tabeli,
koja ima 1K stavki, sabirači su 10-bitni (koriste se niža 10
bita 13-bitnih adresa vrsta iz odgovarajuće stavke RHT-a), sa
odbacivanjem prenosa. ASRHT je 4-bitni registar koji u
memorijama MRHT(0), …,MRHT(3) adresira lokacije koje
sadrže elemente iste stavke RHT tabele. Za ažuriranje stavki
RHT-a, lokacije sa istim adresama u MRHT(0), …,
MRHT(3) organizujmo u obliku kružnog reda, sa 2-bitnim
pokazivačem na početak reda POC, u koji se upisuje adresa
poslednje otvorene vrste. Svakoj stavci RHT-a pridružimo po
indikator PD (Predikcija Dopuštena), sa početnim stanjem 0,
koji se postavlja kada se u odgovarajuću stavku RHT-a upišu
4 adrese otvorenih vrsta u odgovarajućoj banci. Ovih
pokazivača i indikatora ima po 16, za svaku stavku RHT-a po
jedan: POC[0], …, POC[15] i PD[0], …, PD[15]. Pokazivači
POC implementirani su kao brojači sa upravljačkim ulazima
za inkrementiranje INK i resetovanje RES. Indikatori PD
brišu se resetom, a postavljaju signalom prenosa iz
odgovarajućih brojača POC.
Tabela PHT organizovana je kao 4 paralelne memorije
MPHT(0), …, MPHT(3), svaka organizacije 1Kx13 bita, pri
čemu je svaka stavka PHT tabele smeštena u 4 lokacije
paralelnih memorija koje imaju istu relativnu adresu, čime je
omogućeno istovremeno čitanje sve 4 lokacije. Ove 4
lokacije sadrže 2 para vrsta-sledeća_vrsta, odnosno rp-rsld.
ASPHT je 10-bitni registar pokazivač stavke PHT-a, koji
adresira lokacije MPHT(0), …, MPHT(3) sa istim adresama.
Prilikom pristupa PHT-u koriste se i 2 bita koji određuju
kojoj se od 4 paralelne memorije pristupa. Ova 2 bita
određuju se uz pomoć FIMPHT i PFIFO. FIMPHT, koji je
organizacije 1Kx2 bita, za svaku stavku PHT-a sadrži po dva
bita koja ukazuju na popunjenost prvog, odnosno drugog para
rp-rsld, čime se definiše upis na odgovarajuće mesto. U slučaju
da su oba para popunjena PFIFO, koji je organizacije 1Kx1b
definiše u koji od dva para će se obaviti upis, odnosno koji
par će biti izbačen. Tom prilikom se odgovarajući bit PFIFO
komplementira. U fazi inicijalizacije se sve pomoćne
strukture resetuju (brišu): POC[0], …, POC[15], PD[0], …,
PD[15], kompletan FIMPHT i kompletan PFIFO.
4. ZAKLJUČAK
U radu je izložena implementacija prediktora koji u
DRAM memoriji unapred zatvaraju otvorenu vrstu i unapred
otvaraju vrstu u koju će verovatno biti upućen sledeći pristup.
Organizacija hardvera tri tipa prediktora prikazana je na
nivou funkcionalnih blokova. Ovakva organizacija hardvera
prediktora, zajedno sa blokom upravljanja koji organizuje rad
ovih prediktora na opisani način, sintetizovana je na FPGA
čipu familije Xilinx SpartanII, model xc2v500-6fg256.
Skraćenje prosečne latencije DRAM memorija koje se može
postići primenom ovih prediktora, navedeno u radu [8],
opravdava povećanje cene realizacije kontrolera DRAM
memorije sa pridodatim ovde prikazanim prediktorima.
5. LITERATURA
[1] Rixner, S.”Memory controller optimization for Web
servers”, Proc. MICRO-37, 2004., pp. 355-366.
[2] V. Stankovic, N. Milenkovic, “Access Latency
Reduction in Contemporary DRAM Memories”, Facta
Universitatis, series: Electronics and Energetics, Vol. 17,
No. 1, April 2004, pp. 81-97.
[3] Z. Hu, S. Kaxiras, M. Martonosi, “Timekeeping in the
Memory System: Predicting and Optimizing Memory
Behavior”, The 2003 IEEE International Solid_state Circuits
Conference (ISSCC 2003), February 2003.
[4] A. Lai, C. Fide, B. Falsafi, “Dead-Block Prediction and
Dead-Block Correlating Prefetchers”, Proc. 28th ISCA, June
2001, pp. 144-154.
[5] Hu,Z., M.Martonosi and S.Kaxiras,”TCP: Tag
Correlating prefetchers”, Proc. 9th HPCA, 2003, pp.317-326.
[6] V. Stankovic, N. Milenkovic, “DRAM Controller with a
Close-Page Predictor”, Eurocon 2005 - The International
Conference on “Computer as a Tool, Belgrade, November
2005, pp. 693-696.
[7] Xu,Y., A.S.Agarwal, and B.T.Davis,”Prediction in
dynamic SDRAM controller policies”, in SAMOS, LNCS
5657, pp. 128-138, Springer 2009.
[8] V. Stankovic, N. Milenkovic, “DRAM Controller with a
Complete Predictor”, IEICE Transactions on Information and
Systems, Vol. E92-D, No.4, April 2009, pp. 584-593.
Sl. 5. Hardver
p
rediktora sledeće otvorene vrste
ResearchGate has not been able to resolve any citations for this publication.
Article
Full-text available
Performances of DRAM memories are characterized by memory latency and bandwidth. Contemporary DRAM memories more successfully satisfy demands for higher bandwidth than lower latency. In this paper solutions, which may reduce latency of these memories, are investigated. These solutions are two new controller policies called 'Write-miss Only Close-Page' and 'Write-miss Only Close-Page-Open previous Page' as well as several address remapping schemes. 'Write-miss Only Close-Page' policy is basically a combination of the policies 'Open-Page' and 'Close- Page-Autoprecharge'. For all DRAM reads 'Open-Page' policy is used. Also for all DRAM writes that cause row-buffer hits 'Open-Page' policy is used. For all DRAM writes that cause row-buffer misses 'Close- Page-Autoprecharge' policy is used. 'Write-miss Only Close-Page-Open previous Page' policy is the same as 'Writemiss Only Close-Page', except that after the precharge the previously open row is opened again. Simulations show improvements in using these combined policies. Permutation-based Page Interleaving scheme is known as an effective address remapping scheme for reducing row-buffer conflicts, which are consequence of conflict cache memory misses. This scheme is based on using xor circuits for changing bank indices of data blocks that fit into the same cache memory line set. We improve this scheme by proposing five similar schemes, with slightly better effectiveness. Three of the proposed schemes have approximately the same performances, but do not use xor circuits at all. Two of the proposed schemes use xor circuits but have slightly better performances.
Conference Paper
Full-text available
Better insight of programs behavior can help in overcoming large speed difference of central processors and main memories implemented with DRAM chips. It allows us to predict required next actions, based on observed main memory access patterns, which can hide some time components in accessing DRAM memory. Authors of this paper proposed a simple dead time predictor which helps in predicting when to close the opened DRAM row. In this paper this predictor is further improved by adding a zero live time predictor. The zero live time predictor, by its essence, completes the dead time predictor
Conference Paper
Full-text available
Memory access latency can limit microcontroller system performance. SDRAM access control policies impact latency through SDRAM device state. It is shown that execution time can be reduced by using a state machine which predicts, for each access, the policy which will minimize latency. Two-level dynamic predictors are incorporated into the SDRAM controller. A range of organizations for dynamic predictors are described, and the performance improvements predicted by simulation are compared using execution time and prediction accuracy as metrics. Results show that predictive SDRAM controllers, reduce execution time by 1.6% to 17% over static access control policies. The prediction accuracy of the best predictor results in 93% prediction accuracy, with 87% accuracy for OP state preferred accesses, and 96% for CPA state preferred accesses. Results show that execution time is strongly correlated to the prediction accuracy of OP, suggesting directions for future predictor development.
Conference Paper
Full-text available
Computer architects have long exploited observed memory referencing characteristics to optimize memory performance. We introduce timekeeping metrics for improving program memory performance and power dissipation. Performance and power results for previously proposed timekeeping structures are briefly summarized and implementation options are presented. Simulation focusses on implementation issues.
Conference Paper
Full-text available
Although caches for decades have been the backbone of the memory system, the speed gap between CPU and main memory suggests their augmentation with prefetching mechanisms. Recently, sophisticated hardware correlating prefetching mechanisms have been proposed, in some cases coupled with some form of dead-block prediction. In many proposals, however correlating prefetchers demand a significant investment in hardware. In this paper we show that correlating prefetchers that work with tags instead of cache-line addresses are significantly more resource-efficient, providing equal or better performance than previous proposals. We support this claim by showing that per-set tag sequences exhibit highly repetitive patterns both within a set and across different sets. Because a single tag sequence can capture multiple address sequences spread over different cache sets, significant space savings can be achieved. We propose a tag-based prefetcher called a tag correlating prefetcher (TCP). Even with very small history tables, TCP outperforms address-based correlating prefetchers many times larger. In addition, we show that such a prefetcher can yield most of its performance benefits if placed at the L2 level of an aggressive out-of-order processor. Only if one wants prefetching all the way up to L1, is dead-block prediction required. Finally, we draw parallels between the two-level structure of TCP and similar structures for branch prediction mechanisms; these parallels raise interesting opportunities for improving correlating memory prefetchers by harnessing lessons already learned for correlating branch predictors.
Article
Full-text available
Techniques for analyzing and improving memory referencing behavior continue to be important for achieving good overall program performance due to the ever-increasing performance gap between processors and main memory. This paper offers a fresh perspective on the problem of predicting and optimizing memory behavior. Namely, we show quantitatively the extent to which detailed timing characteristics of past memory reference events are strongly predictive of future program reference behavior. We propose a family of timekeeping techniques that optimize behavior based on observations about particular cache time durations, such as the cache access interval or the cache dead time. Timekeeping techniques can be used to build small, simple, and high-accuracy (often 90% or more) predictors for identifying conflict misses, for predicting dead blocks, and even for estimating the time at which the next reference to a cache frame will occur and the address that will be accessed. Based on these predictors, we demonstrate two new and complementary time-based hardware structures: (1) a time-based victim cache that improves performance by only storing conflict miss lines with likely reuse, and (2) a time-based prefetching technique that hones in on the right address to prefetch, and the right time to schedule the prefetch. Our victim cache technique improves performance over previous proposals by better selections of what to place in the victim cache. Our prefetching technique outperforms similar prior hardware prefetching proposals, despite being orders of magnitude smaller. Overall, these techniques improve performance by more than 11% across the SPEC2000 benchmark suite.
Article
Performances of DRAM memories are characterized by memory latency and bandwidth. Contemporary DRAM memories more successfully satisfy demands for higher bandwidth than lower latency. In this paper solutions, which may reduce latency of these memories, are investigated. These solutions are two new controller policies called 'Write-miss Only Close-Page' and 'Write-miss Only Close-Page-Open previous Page' as well as several address remapping schemes. 'Write-miss Only Close-Page' policy is basically a combination of the policies 'Open-Page' and 'Close-Page-Autoprecharge'. For all DRAM reads 'Open-Page' policy is used. Also for all DRAM writes that cause row-buffer hits 'Open-Page' policy is used. For all DRAM writes that cause row-buffer misses 'Close-Page-Autoprecharge' policy is used. 'Write-miss Only Close-Page-Open previous Page' policy is the same as 'Write-miss Only Close-Page', except that after the precharge the previously open row is opened again. Simulations show improvements in using these combined policies. Permutation-based Page Interleaving scheme is known as an effective address remapping scheme for reducing row-buffer conflicts, which are consequence of con-flict cache memory misses. This scheme is based on using xor circuits for changing bank indices of data blocks that fit into the same cache memory line set. We im-prove this scheme by proposing five similar schemes, with slightly better effective-ness. Three of the proposed schemes have approximately the same performances, but do not use xor circuits at all. Two of the proposed schemes use xor circuits but have slightly better performances.
Article
In the arsenal of resources for computer memory system performance improvement, predictors have gained an increasing role in the past years. They can suppress the latencies when accessing cache or main memory. In paper[1] it is shown how temporal parameters of cache memory access, defined as live time, dead time and access interval could be used for prediction of data prefetching. This paper examines the feasibility of applying an analog technique on controlling of opening/closing DRAM memory rows, with various improvements. The results described herein confirm the feasibility, and allow us to propose a DRAM controller with predictors that not only close the opened DRAM row, but also predict the next row to be opened.
Conference Paper
This paper analyzes memory access scheduling and virtual channels as mechanisms to reduce the latency of main memory accesses by the CPU and peripherals in web servers. Despite the address filtering effects of the CPU's cache hierarchy, there is significant locality and bank parallelism in the DRAM access stream of a web server, which includes traffic from the operating system, application, and peripherals. However, a sequential memory controller leaves much of this locality and parallelism unexploited, as serialization and bank conflicts affect the realizable latency. Aggressive scheduling within the memory controller to exploit the available parallelism and locality can reduce the average read latency of the SDRAM. However, bank conflicts and the limited ability of the SDRAM's internal row buffers to act as a cache hinder further latency reduction. Virtual channel SDRAMovercomes these limitations by providing a set of channel buffers that can hold segments from rows of any internal SDRAM bank. This paper presents memory controller policies that can make effective use of these channel buffers to further reduce the average read latency of the SDRAM.
Conference Paper
Effective data prefetching requires accurate mechanisms to predict both “which” cache blocks to prefetch and “when” to prefetch them. This paper proposes the Dead-Block Predictors (DBPs), trace-based predictors that accurately identify “when” an Ll data cache block becomes evictable or “dead”. Predicting a dead block significantly enhances prefetching lookahead and opportunity, and enables placing data directly into Ll, obviating the need for auxiliary prefetch buffers. This paper also proposes Dead-Block Correlating Prefetchers (DBCPs), that use address correlation to predict “which” subsequent block to prefetch when a block becomes evictable. A DBCP enables effective data prefetching in a wide spectrum of pointer-intensive, integer, and floating-point applications. We use cycle-accurate simulation of an out-of-order superscalar processor and memory-intensive benchmarks to show that: (1) dead-block prediction enhances prefetching lookahead at least by an order of magnitude as compared to previous techniques, (2) a DBP can predict dead blocks on average with a coverage of 90% only mispredicting 4% of the time, (3) a DBCP offers an address prediction coverage of 86% only mispredicting 3% of the time, and (4) DBCPs improve performance by 62% on average and 282% at best in the benchmarks we studied.