TEHNIČKO REŠENJE. Algoritam za sinhronizaciju rada prediktora DRAM memorija

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

Projektovanje paralelnih algoritama II

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Mathcad sa algoritmima

Red veze za benzen. Slika 1.

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

TEORIJA SKUPOVA Zadaci

Fajl koji je korišćen može se naći na

Uvod u relacione baze podataka

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

DISTRIBUIRANI ALGORITMI I SISTEMI

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Metrički prostori i Riman-Stiltjesov integral

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

Konstrukcija i analiza algoritama

Programiranje u realnom vremenu Bojan Furlan

Metode praćenja planova

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

PRECIPITATION FORECAST USING STATISTICAL APPROACHES UDC 55:311.3

BROJEVNE KONGRUENCIJE

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Neke klase maksimalnih hiperklonova

APPROPRIATENESS OF GENETIC ALGORITHM USE FOR DISASSEMBLY SEQUENCE OPTIMIZATION

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU

BREEDING AND GENETIC PROPERTIES OF THE MAIZE VARIETY UZBEKSKA BELA

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

UNIVERZITET U BEOGRADU MATEMATIČKI FAKULTET

MREŽNI DIJAGRAMI Planiranje

1. Ocena performansi

EXPERIMENTAL ANALYSIS OF THE STRENGTH OF A POLYMER PRODUCED FROM RECYCLED MATERIAL

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

Funkcijske jednadºbe

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

THE CHANGE OF GENETIC AND PHENOTYPIC VARIABILITY OF YIELD COMPONENTS AFTER RECURRENT SELECTION OF MAIZE

U člnaku se nastoji na jednostavan i sažet način bez ulaženja u egzaktne i formalizirane dokaze postići slijedeće:

IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION

Karakterizacija problema zadovoljenja uslova širine 1

UOPŠTENI INVERZI, FAKTORI USLOVLJENOSTI I PERTURBACIJE

U X. 1. Multivarijantna statistička analiza 1

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

Operativni sistemi 2

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS

ADAPTIVE NEURO-FUZZY MODELING OF THERMAL VOLTAGE PARAMETERS FOR TOOL LIFE ASSESSMENT IN FACE MILLING

pretraživanje teksta Knuth-Morris-Pratt algoritam

Klase neograničenih operatora

AN EXPERIMENTAL METHOD FOR DETERMINATION OF NATURAL CIRCULAR FREQUENCY OF HELICAL TORSIONAL SPRINGS UDC:

Uvod u algoritamske tehnike

Hornerov algoritam i primjene

Konstrukcija i analiza algoritama

povezuju tačke na četiri različita načina (pravom linijom, splajnom,

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION

Modified Zagreb M 2 Index Comparison with the Randi} Connectivity Index for Benzenoid Systems

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

1.1 Algoritmi. 2 Uvod

AIR CURTAINS VAZDU[NE ZAVESE V H

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

Grafovi. Osnovni algoritmi sa grafovima. Predstavljanje grafova

STRUCTURAL VEHICLE IMPACT LOADING UDC =111. Dragoslav Stojić #, Stefan Conić

On the relation between Zenkevich and Wiener indices of alkanes

O homomorfizam-homogenim geometrijama ranga 2

MAGNETIC FIELD OF ELECTRICAL RADIANT HEATING SYSTEM

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

A STUDY ON NATURAL CONVECTION HEAT TRANSFER IN COMPLEX BOUNDARIES

Current Serbian Design Codes Transfering from a Deterministic to a Semi- Probabilistic Approach

VREMENSKE SERIJE U FINANSIJAMA: ARCH I GARCH

Jedna familija trokoračnih postupaka šestog reda za rešavanje nelinearnih jednačina

Fraktali - konačno u beskonačnom

A SPECTRAL ATLAS OF λ BOOTIS STARS

LLL Seminari u okviru TEMPUS projekta

ALGORITAM FAKTORIZACIJE GNFS

PRELIMINARY COMMUNICATION Influence of chloride ions on the open circuit potentials of chromium in deaerated sulfuric acid solutions

GIS AND REMOTE SENSING APPLICATION IN GEOLOGICAL MAPPING AND 3D TERRAIN MODELING: A CASE STUDY IN EGHEI UPLIFT, LIBYA

A NEW THREE-DIMENSIONAL CHAOTIC SYSTEM WITHOUT EQUILIBRIUM POINTS, ITS DYNAMICAL ANALYSES AND ELECTRONIC CIRCUIT APPLICATION

Fibonaccijev brojevni sustav

HENDERSON'S APPROACH TO VARIANCE COMPONENTS ESTIMATION FOR UNBALANCED DATA UDC Vera Djordjević, Vinko Lepojević

NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI

Napredni standard enkripcije (AES)

Problemi transporta i analiza osetljivosti

Teorem o reziduumima i primjene. Završni rad

Andrea Rožnjik. VaR KAO MERA RIZIKA U OPTIMIZACIJI PORTFOLIA. - magistarska teza - Novi Sad, 2008.

DETERMINATION OF THE EFFECTIVE STRAIN FLOW IN COLD FORMED MATERIAL

5 th INTERNATIONAL CONFERENCE Contemporary achievements in civil engineering 21. April Subotica, SERBIA

Didaktički aspekti matematičkog modeliranja

DIRECT-MAT. WP4: Uklanjanje asfaltnih kolovoza i reciklaža putnih materijala u asfalt. Dr Milorad Smiljanić, Institut za puteve, Beograd

Transcription:

TEHNIČKO REŠENJE Algoritam za sinhronizaciju rada prediktora DRAM memorija M-85: Prototip, nova metoda, softver, standardizovan ili atestiran instrument, nova genetska proba, mikroorganizmi Autori: Vladimir Stanković (1), Nebojša Milenković (1) (1) Elektronski fakultet, Univerzitet u Nišu

1. Kratak opis U cilju smanjenja latencije DRAM memorije poslednjih godina često se koriste prediktori, koji predviđaju da li i kada odgovarajuću vrstu DRAM memorije ostaviti otvorenu ili je zatvoriti, kao i koju vrstu otvoriti unapred. U slučaju postojanja više različitih prediktora potrebno je izvršiti njihovu sinhronizaciju, obzirom da kontroler DRAM memorije treba da, po potrebi, poziva i ažurira svaki od prediktora, izvršavajući pritom standardne komande, kao štu su otvaranje/zatvaranje vrste, pristup koloni i sl. U ovom tehničkom rešenju predstavljen je univerzalni algoritam za sinhronizaciju prediktora koji je u stanju da sinhronizuje tri postojeće vrste prediktora (prediktor nultog vremena života, prediktor mrtve faze i prediktor sledeće vrste) bez obzira na specifičnosti samih prediktora, odnosno njihovih metoda predviđanja. Algoritam je razvijen na Elektronskom fakultetu u Nišu u okviru projekta "Inteligentni kabinet za fizikalnu medicinu", finansiran od strane Ministarstva prosvete i nauke Republike Srbije pod brojem TR32012. Tehničke karakteristike: Algoritam vrši sinhronizaciju prediktora nultog vremena života, prediktora mrtve faze i prediktora sledeće vrste, za varijante ovih prediktora onako kako su definisani u ovom tehničkom rešenju. U samom rešenju je pokazano da je algoritam univerzalan, odnosno da se može primeniti i na drugačije varijante prediktora. Takođe je dat pregled potrebnih (sitnih) izmena u algoritmu za slučaj da se koriste druge varijante ovih prediktora, i to za sve prediktore DRAM memorija koji su poznati u literaturi. Tehničke mogućnosti: Algoritam se, direktno ili uz minimalne modifikacije, može primeniti na bilo koju kombinaciju prediktora nultog vremena života, prediktora mrtve faze i prediktora sledeće vrste. Realizator: Korisnik: Elektronski fakultet, Univerzitet u Nišu Elektromedicina d.o.o.niš/yumis, Niš Podtip rešenja: Softver -M85 Projekat u okviru koga je realizovano tehničko rešenje: Program istraživanja u oblasti tehnološkog razvoja za period 2011.-2015. Tehnološka Elektronika, telekomunikacije i informacione oblast: tehnologije Rukovodilac Prof. dr Ivan Milentijević projekta: Naziv projekta: Inteligentni KAbinet za FIzikalnu Medicinu IKAFIM Broj projekta: TR 32012

2. Stanje u svetu Postoji ogroman jaz između brzine centralnog procesora i brzine DRAM memorije, nazvan memorijski jaz, koji otežava optimalno korišćenje centralnog procesora, odnosno njegovih performansi. Novi tipovi DRAM memorija uglavnom imaju poboljšanu propusnost (količinu podataka koju memorija može da pročita ili upiše u jedinici vremena), ali je vrlo malo učinjeno po pitanju smanjenja latencije (početnog kašnjenja do pojave prvog podatka ili prvog dela podatka). Naime, DDR, DDR2, DDR3 itd. praktično imaju isto memorijsko jezgro tako da nema mnogo razlike u veličini latencije. Ono što je poboljšano, i to u priličnoj meri, je propusnost DDR2 ima dvostruko veću propusnost u odnosu na DDR, DDR3 ima dvostruko veću propusnost u odnosu na DDR2 [1], dok sa druge strane poboljšanja po pitanju latencije iznose svega 5% godišnje [2]. Posledica ovoga je da kod svake nove generacije DRAM memorije latencija obuhvata sve veći i veći udeo ukupnog kašnjenja, i polako postaje dominantna. Tako se, na primer, lako može izračunati da udeo latencije prilikom prenosa bloka podataka veličine 128B od DDR3 SDRAM memorije do keš memorije obuhvata oko 70-90% ukupnog kašnjenja. Iz tih razloga ulažu se napori da se latencija DRAM memorije smanji ili, primenom određenih tehnika, sakrije. Politike rada DRAM kontrolera i prediktori Tipičan DRAM kontroler poseduje 2 osnovne politike (strategije) rada: politiku Otvorene Vrste (OV) i politiku Zatvorene Vrste (ZV). U prvom slučaju vrsta nakon pristupa ostaje otvorena, što daje minimalnu latenciju u slučaju da je sledeći pristup (u tu banku) usmeren u istu vrstu, i maksimalnu latenciju u slučaju da je sledeći pristup (u tu banku) usmeren u neku drugu vrstu. U slučaju tzv. pogotka u otvorenu vrstu latencija iznosi tcas, dok u slučaju promašaja u otvorenu vrstu latencija iznosi trp+trcd+tcas [1]. Ovde je sa trp označeno vreme pretpunjenja (Row Precharge), sa trcd vreme potrebno za otvaranje vrste (Row to Column Delay), a sa tcas vreme pristupa koloni (Column Access Strobe latency). Obzirom da je za otvaranje nove vrste potrebno prethodno obaviti pretpunjenje, ono se u žargonu zove i zatvaranje vrste (potrebno je prvo zatvoriti vrstu koja je trenutno otvorena da bismo otvorili neku drugu vrstu). Kod korišćenja politike ZV vrsta se nakon svakog pristupa zatvara, odnosno vrši se pretpunjenje, uglavnom korišćenjem komandi sa tzv. automatskim pretpunjenjem. Ovim se vrši skrivanje vremena trp, tako da je latencija kod svakog pristupa praktično jednaka trcd+tcas [1]. Ideja korišćenja prediktora se sastoji u tome da se vrši dinamička promena korišćene politike rada DRAM kontrolera (u toku izvršenja programa). Na taj način moguće je dobiti hibridnu politiku koja daje bolje performanse i od politike OV i od politike ZV. U idealnom slučaju, vrsta treba da ostane otvorena sve dok postoje obraćanja usmerena u tu vrstu (korišćenje politike OV), da bi se zatvorila pre nego se desi obraćanje u neku drugu vrstu (prelazak na politiku ZV). Dodatni korak bi bio predviđanje koja će biti sledeća vrsta u koju će biti usmeren pristup i otvaranje te vrste unapred. Kolika je vrednost latencije DRAM memorije kada se koriste prediktori? Uglavnom se polazi od korišćenja politike OV u težnji da dođe do pogotka u otvorenu vrstu, što daje minimalnu moguću latenciju od tcas. Pritom se nastoji da se predvidi trenutak kada treba zatvoriti vrstu i preći na politiku ZV. Tačna predikcija bi smanjila latenciju sa trp+trcd+tcas na trcd+tcas. Obzirom da su vrednosti trp, trcd i tcas uglavnom međusobno jednake, ovim bi se latencija smanjila za 33%. Ako bismo uspeli da još i tačno predvidimo sledeću vrstu u koju je usmeren pristup onda bi se latencija dodatno prepolovila, jer bi iznosila samo tcas. Možemo da zaključimo da bismo u idealnom slučaju (tačno predviđanje kada zatvoriti vrstu uz tačno predviđanje sledeće vrste) stalno imali pogodak u otvorenu vrstu, odnosno minimalnu moguću latenciju od tcas.

Vrste prediktora Na osnovu prethodnog se može zaključiti da, generalno gledano, postoje 2 vrste prediktora DRAM memorija: oni koji predviđaju kada zatvoriti vrstu, tj. kada preći sa politike OV na politiku ZV Prediktori koji Zatvaraju Vrstu (PZV) i oni koji predviđaju sledeću vrstu u koju će biti usmeren pristup Prediktori Sledeće Vrste (PSV). Da bismo bolje razumeli moguće tipove PZV prediktora, definišimo metriku iz [3] tako da se ona odnosi na DRAM memoriju, kao što je to prikazano na slici 1. Vreme života (live time) je vreme koje protekne od trenutka otvaranja neke vrste do poslednjeg pristupa u tu vrstu pre njenog zatvaranja. Vreme mrtve faze (dead time) je vreme koje protekne od poslednjeg pristupa u otvorenu vrstu do njenog zatvaranja. Interval pristupa ili vreme intervala pristupa (access interval) je vreme koje protekne između dva uzastopna obraćanja u otvorenu vrstu. Nulto vreme života (zero live time) je vreme života kod kojeg je prvi pristup ujedno i poslednji nakon otvaranja vrste i pristupa koloni sledeći pristup u tu banku je usmeren u neku drugu vrstu. Ako nakon otvaranja vrste i pristupa koloni postoji barem još jedan pristup u tu vrstu pre njenog zatvaranja, za takvo vreme života se kaže da je nenulto (nonzero live time). Koristeći ove metrike sve PZV prediktore možemo podeliti u dve grupe: 1. Predikcija da li zatvoriti vrstu se obavlja odmah nakon njenog otvaranja (pre ili za vreme prvog pristupa koloni). 2. Vrsta (nakon prvog pristupa koloni) ostaje otvorena, a predikcija da vrstu treba zatvoriti se obavlja kasnije, nakon ispunjenja nekih uslova. Slika 1. Vreme života, vreme mrtve faze i interval pristupa definisani u odnosu na DRAM Ovo praktično znači da svi PZV prediktori mogu da budu ili neka vrsta tzv. Prediktora Nultog Vremena Života (PNVŽ) ili neka vrsta Prediktora Mrtve Faze (PMF) ili neka kombinacija ova dva prediktora. Ako prediktor odmah nakon otvaranja vrste predviđa da vrstu treba zatvoriti (ili je ne zatvoriti), onda se radi o PNVŽ tipu prediktora predviđa se da će vreme života vrste biti nulto ili nenulto. Ako se odluka da se vrsta zatvori ne donosi odmah prilikom njenog otvaranja, već kasnije, nakon ispunjenja nekih uslova, onda se radi o PMF tipu prediktora predviđa se da je vrsta ušla u mrtvu fazu, pa treba da se zatvori. U ovom tehničkom rešenju definisane su varijante za sva 3 tipa prediktora (PNVŽ, PMF i PSV), koje su izložene i u [4], i odgovarajući algoritam za njihovu sinhronizaciju, takođe izložen u [5]. Algoritam je univerzalan i može se primeniti i za drugačije definisane prediktore (što je takođe pokazano u [5]). Naime, svaki prediktor obavlja dve osnovne operacije: Lookup i Update. Prvom operacijom prediktor se poziva da da svoju predikciju,

dok se druga operacija izvršava u slučaju pojave nekih bitnih događaja koji zahtevaju da prediktor obavi ažuriranje podataka na osnovu kojih vrši predikciju. U zavisnosti od specifičnih načina predviđanja, moguće je da upotreba nekih prediktora zahteva sitne izmene koje se odnose na način korišćenja odnosno mesta pozivanja operacija Lookup ili Update, ali je sam algoritam univerzalan, što je u tehničkom rešenju i pokazano. Postojeći prediktori U literaturi postoji nekoliko radova i patenata koji nastoje da smanje latenciju DRAM memorije korišćenjem prediktora. Oni koriste razne vrste PNVŽ i PMF prediktora, ili njihovih kombinacija. U radu [6] se predlaže prediktor koji broji pristupe u datu vrstu DRAM memorije. Na osnovu toga se donosi odluka o trenutku zatvaranja vrste. Ovo predstavlja kombinaciju PNVŽ i PMF prediktora prediktor se može koristiti prilikom otvaranja vrste da predvidi nulto/nenulto vreme života, a takođe se može koristiti kasnije da predvidi da je vrsta ušla u mrtvu fazu. U radu [7] se koriste rešenja upotrebljena kod 2-nivovskih prediktora grananja za predviđanje da li vrstu treba zatvoriti ili ne. Ovo je bazirano na analogiji između predviđanja da će se grananje obaviti ili neće i predviđanja da će sledeći pristup biti usmeren u istu vrstu ili neće. Ovaj prediktor takođe predstavlja kombinaciju PNVŽ i PMF prediktora. Autori rada [8] predlažu prediktor koji koristi analizu adresa. Na bazi kolekcije statističkih informacija o distribuciji adresa instrukcija koje čekaju na pristup memoriji, i analize regularnih promena adresa pristupa, ovaj prediktor predviđa trenutak kada treba obaviti zatvaranje trenutno otvorene vrste. Ovo je PMF tip prediktora. U radu [9] predlaže se šema koja definiše memorijske modove na bazi dvobitnih brojača, kojima se predviđa korišćenje odgovarajuće politike (OV ili ZV) prilikom otvaranja vrste. Ovo je PNVŽ tip prediktora. Autori patenta [10] predlažu metod koji se bazira na praćenju pristupa bankama i dinamičkom podešavanju politike kontrolera. Kod svakog pristupa generiše se pogodak ili promašaj otvorene vrste. U zavisnosti od toga podešava se trenutak donošenja odluke da se zatvori vrsta, i to onda kada vremenski brojač koji odgovara datoj vrsti dostigne graničnu vrednost. Ovo je tipičan primer PMF prediktora. Autor patenta [11] predlaže metod koji generiše signal selekcije koji je u skladu sa barem jednim ulaznim signalom i postojećom politikom kontrolera i koji modifikuje postojeću politiku na bazi generisanog signala selekcije. Ovo je PMF tip prediktora koji može biti korišćen i kao PNVŽ. U radu [12] razmatra se mogućnost primene prediktora kod stream arhitektura, tako što se dozvoljava da višestruki pristupi usmereni u istu vrstu budu spojeni u okviru reda zahteva i bafera podataka, a ujedno se vrši analiza regularnih promena adresa pristupa. Na taj način, u situacijama gde je odgovarajući red prazan, predviđa se da li će naredni pristup biti usmeren u istu vrstu i donosi odluka da vrsta ostane otvorena ili da se zatvori. Ovo je vrsta PMF prediktora koji bi, osim kod stream arhitektura, verovatno mogao da bude primenjen i u slučaju standardnih računarskih sistema.

3.Definicije prediktora U ovom odeljku date su definicije korišćenih PNVŽ, PMF i PSV prediktora. Prediktor nultog vremena života (PNVŽ) PNVŽ ima 2 bita (koji se koriste kao brojač sa zasićenjem, sa mogućim vrednostima od 0 do 3) za svaku grupu od nekoliko susednih vrsta. Svaki put kad se javi nulto vreme života odgovarajući brojač se inkrementira, osim ako je njegova vrednost 3. Svaki put kad se javi nenulto vreme života odgovarajući brojač se dekrementira, osim ako je njegova vrednost 0. Kod predviđanja, predviđa se da će vreme života biti nulto ako je vrednost odgovarajućeg brojača jednaka 2 ili 3, odnosno nenulto ako je ta vrednost jednaka 0 ili 1. Odgovarajuće funkcije Lookup i Update za PNVŽ su jednostavne i, za izabranu vrstu R, izgledaju ovako: Lookup(R): Ako je za vrstu R stanje dvobitnog brojača 2 ili 3, predviđa se nulto vreme života. Ako je stanje brojača 0 ili 1, predviđa se nenulto vreme života. Update(R): Ako je obraćanje usmereno u vrstu R, znači u istu vrstu kao i prethodno (nenulto vreme života), vrši se dekrementiranje sa zasićenjem brojača vrste R. Ako je obraćanje usmereno u neku drugu vrstu (nulto vreme života), vrši se inkrementiranje sa zasićenjem brojača vrste R. Prediktor mrtve faze (PMF) PMF je baziran na vrednostima intervala pristupa. Svaki put kada od poslednjeg pristupa u neku vrstu protekne vreme koje je jednako poslednje zabeleženom vremenu intervala pristupa za tu banku, pomnoženom sa 2, predviđa se da je vrsta ušla u mrtvu fazu. Neka ukupno imamo N banaka u memorijskom sistemu, označenih sa B k, k=1, 2,..., N. Označimo sa RAOV k (Registar Adrese Otvorene Vrste) registar u kome se pamti koja vrsta je trenutno otvorena u banci B k. Označimo dalje sa BIP k (Brojač Intervala Pristupa) i RIP k (Registar Intervala Pristupa) respektivno brojač i registar uz pomoć kojih se evidentiraju intervali pristupa u banci B k i proverava da li je vrsta ušla u mrtvu fazu. Uvedimo takođe za svaku banku registar Identifikator Banke (IB k ) koji označava jednu od N banaka. Neka brojači i RIP registri imaju po b bitova, odnosno neka su formata BIP k [(b-1)-0] i RIP k [(b-1)-0] pri čemu je bit RIP k [0] fiksiran na nulu (zbog množenja sa 2). Izgled ovog prediktora prikazan je na slici 2, za slučaj da sistem ima 16 banaka. Lookup: Komanda Lookup ne postoji kao klasična komanda kod ovog prediktora provera da li je vrsta ušla u mrtvu fazu nije zadatak DRAM kontrolera, već sam prediktor u slučaju da je uslov za predviđanje ulaska u mrtvu fazu ispunjen, obavlja upis odgovarajućeg IB identifikatora banke u specijalni red komandi pretpunjenja RED_B (red u kome se čuvaju nalozi za zatvaranjem vrste, o ovome će biti više reči u narednom odeljku, u kome je opisana međusobna sinhronizacija sva tri prediktora). U slučaju da ima više takvih banaka

mora postojati neki mehanizam serijalizacije upisa tih identifikatora (BSER na slici 2). DRAM kontroler proverava da li je nešto upisano u RED_B svaki put kad je slobodan. U slučaju da jeste, obavlja se pretpunjenje date banke (ili datih banki, ako ih ima više od jedne). Sama provera uslova da je banka ušla u mrtvu fazu vrši se uz pomoć komparatora pridruženih parovima (BIP k, RIP k ), koji izlaznim signalom 1 pri BIP k [(b-1)-0] = RIP k [(b-1)- 0] pokazuju na banke za čije se otvorene vrste predviđa da su ušle u mrtvu fazu. BAK 0 DB 0 DEK 1 od 16 0 1 15. BSER Ck 800MHz CE Ck 50MHz b-1 Set b-1 b-1. BIP 0 b KOMP 0 0 > b Mrtva 0 faza 1 0.. RIP 0 Res. Data WE WE BAK 15 DB 15 CE Ck 50MHz b-1 Set b-1 b-1. BIP 15 b KOMP 15 b RIP 15 1 0 0 0 Res > Mrtva faza. Slika 2. Prediktor mrtve faze Update: Ako je kod obraćanja banci B k obraćanje usmereno u različitu vrstu u odnosu na prethodno obraćanje banci B k, tada resetovati BIP k i dozvoliti brojanje za ovaj brojač. Ako je kod obraćanja banci B k obraćanje usmereno u istu vrstu kao kod prethodnog obraćanja banci B k (definisana je nova vrednost za interval pristupa), tada obaviti upis RIP k [(b-1)-1] BIP k [(b-2)-0], a zatim resetovati BIP k i dati mu dozvolu brojanja. Prediktor sledeće vrste (PSV) PSV, prikazan na slici 3, sastoji se od dve tabele: Tabela istorije vrsta (Row History Table - RHT) i Tabela istorije obrazaca (Pattern History Table - PHT). RHT za svaku od banaka pamti poslednjih k vrsta kojima se pristupalo, š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 (r k ) i sledeću vrstu (r nxt ). Indeks za pristup PHT dobija se kao t najnižih bitova sabiranja sa odsecanjem poslednjih k indeksa vrste iz stavke za tu banku u RHT, tako da je m=2 t. Ako sa tekuća_banka i nova_vrsta respektivno označimo banku u kojoj se javio pristup i adekvatnu novu vrstu, tada bi funkcije Update i Lookup izgledale ovako:

Slika 3. Prediktor sledeće vrste Lookup: 1. Oznaka banke tekuća_banka se koristi kao indeks za pristup RHT, i locira se adekvatna sekvenca vrsta (vrsta 1, vrsta 2,... vrsta k ). 2. Sekvenca vrsta (vrsta 1, vrsta 2,... vrsta k ) koristi se za izračunavanje indeksa za lociranje stavke u PHT. 3. Proverava se da li neko od polja u datoj stavki u svom prvom delu sadrži vrsta k. Ukoliko takvo polje ne postoji, tada za taj slučaj ne postoji predikcija i to je kraj operacije Lookup. Ukoliko takvo polje postoji, nastavlja se sa korakom 4. 4. Selektuje se drugi deo nađenog polja, koji predviđa sledeću vrstu (r nxt ), pošto on predviđa sledeću vrstu kao nastavak sekvence (vrsta 1, vrsta 2,... vrsta k ). 5. Vraća se vrednost r nxt kao predviđanje sledeće vrste u koju će biti usmeren pristup u datoj banci. Update: 1. Za početak, tekuća_banka se koristi kao indeks za pristup RHT, i locira se sekvenca vrsta (vrsta 1, vrsta 2,... vrsta k ). Ako treba ažurirati i RHT i PHT, obavlja se privremeno pamćenje ove sekvence u odgovarajući bafer. 2. Sekvenca vrsta (vrsta 1, vrsta 2,... vrsta k ) u RHT zamenjuje se sekvencom (vrsta 2,... vrsta k, nova_vrsta). Ako se ažurira samo RHT, ovo je kraj operacije Update. Ako treba ažurirati i PHT, onda se nastavlja sa korakom 3. 3. Na bazi zapamćenje sekvence (vrsta 1, vrsta 2,... vrsta k ), vrši se indeksiranje PHT i locira se odgovarajuća stavka u njoj. Od svih dvodelnih polja u izabranoj stavci PHT, locira se polje koje počinje sa vrsta k. Ukoliko takvo polje postoji, deo koji predviđa sledeću vrstu u lociranom polju zamenjuje se sa nova_vrsta. Kraj operacije Update.

4. 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. 5. U novom polju (ili izabranom nepopunjenom polju) se kao prvi deo polja upisuje vrsta k, a kao drugi deo upisuje nova_vrsta. Kraj operacije Update.

4. Sinhronizacija prediktora U ovom odeljku opisan je algoritam sinhronizacije rada prediktora. On se primenjuje prilikom obrade pristiglih naloga, za svaki od naloga. Kao što je već rečeno, u kontroleru DRAM memorije za svaku banku B k, k=1,2,,n, postoji po jedan Registar Adrese Otvorene Vrste (RAOV k ) u kome se čuva adresa trenutno otvorene vrste u banci B k. Takođe, potrebno je da za svaku banku B k postoji i po jedan Registar Adrese Zatvorene Vrste (RAZV k ). U njemu se pamti adresa vrste koja je pod dejstvom prediktora zatvorena. Ako nakon toga prediktor sledeće vrste otvori novu vrstu, njena adresa će biti upisana u RAOV k, što znači da bi, bez postojanja registra RAZV k, bila izgubljena informacija o vrsti koja je zatvorena. Za implementaciju algoritma sinhronizacije, za svaku banku B k potrebno je postojanje i sledećih 5 indikatora: 1. Bit Vrsta Zatvorena Predikcijom (BVZP k ), koji se postavlja svaki put kad PMF ili PNVŽ zatvore vrstu, a briše kad se predvidi da će sledeći pristup biti usmeren u istu vrstu, odnosno kad PNVŽ predvidi nenulto vreme života, 2. Bit Jedini Pristup Vrsti (BJPV k ), koji se postavlja pri prvom pristupu posle aktiviranjaotvaranja vrste, a briše pri prvom sledećem pristupu u istu vrstu, 3. Bit Prediktor Mrtve Faze Aktivan (BPMFA k ), koji se postavlja kad se upravljanje preda PMF prediktoru, a briše kad se upravljanje preda PNVŽ prediktoru. 4. Bit Prediktor Mrtve Faze Zatvorio Vrstu (BPMFZV k ), koji se postavlja kad PMF zatvori vrstu, a briše kad PNVŽ zatvori vrstu. 5. Bit Banka Aktivna (BBAK k ), koji se postavlja ako je u banci neka vrsta otvorena, a briše ako u njoj nema otvorenih vrsta. Početno stanje BBAK k =0. Da bi kontroler DRAM-a mogao da realizuje izloženi algoritam, potrebno je da postoje dva reda za prihvatanje naloga: - red sa tekućim nalozima pristiglim od procesora-keša (RED_A), - red sa nalozima za pretpunjenje iz PMF prediktora (RED_B). Pri tome opsluživanje naloga iz reda RED_A ima prioritet u odnosu na opsluživanje naloga iz reda RED_B. U nastavku je dat algoritam sinhronizacije rada prediktora. Pritom je sa R t označena adresa vrste kojoj se trenutno pristupa u banci B k, dobijena iz tekućeg naloga iz reda RED_A. Red RED_A: Za nalog sa početka reda RED_A (a zatim redom i za sve ostale naloge iz ovog reda) DRAM kontroler obavlja sledeće aktivnosti.

1. Proveriti da li je u banci B k otvorena vrsta, tj. da li je BBAK k (Bit Banka Aktivna) postavljen. Ako jeste, preći na korak 2. Ako nije, preći na korak 14. 2. (Otvorena je vrsta) Proveriti da li je RAOV k = R t (da li je otvorena prava vrsta). Ako jeste preći na korak 3. Ako nije preći na korak 7. 3. (Otvorena je prava vrsta) Proveriti da li je bit BVZP k (Bit Vrsta Zatvorena Predikcijom) postavljen. Ako jeste (prethodna vrsta je zatvorena predikcijom, a potom je PSV otvorio tačnu vrstu), preći na korak 4. Ako nije (imamo slučaj pogotka u otvorenu vrstu), preći na korak 6. 4. Pročitati predviđanje PNVŽ za vrstu R t. Ako predviđa nulto vreme života, preći na korak 5. Ako predviđa nenulto vreme života, komandu pristupa koloni obaviti bez pratećeg pretpunjenja. Postaviti bit BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i obrisati bit BVZP k (Bit Vrsta Zatvorena Predikcijom). Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (ovo se odnosi na prethodno zatvorenu vrstu, čija adresa se nalazi u RAZV k ), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod prethodne vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT za PSV. (Nema potrebe ažurirati PHT, jer je predviđanje PSV bilo tačno). Kraj algoritma. 5. (Predviđanje nultog vremena života) Komandu pristupa koloni obaviti sa pratećim pretpunjenjem. Obrisati bitove BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i BPMFZV k (Bit Prediktor Mrtve Faze Zatvorio Vrstu) i postaviti bit BVZP k (Bit Vrsta Zatvorena Predikcijom). 5.1 Nakon obavljenog pristupa koloni sa pratećim pretpunjenjem proveriti predviđanje PSV. Ako postoji predviđanje, otvoriti vrstu koju prediktor predviđa i postaviti BBAK k =1, inače obrisati BBAK k =0. 5.2 Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (ovo se odnosi na prethodno zatvorenu vrstu, čija adresa se nalazi u RAZV k ), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod prethodne vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT za PSV. (Nema potrebe ažurirati PHT, jer je predviđanje PSV bilo tačno). Upisati u registar RAZV k (Registar Adrese Zatvorene Vrste) R t. Kraj algoritma. 6. (Pogodak u otvorenu vrstu) Nakon pristupa koloni obaviti ažuriranje PMF. Proveriti da li je bit BJPV k (Bit Jedini Pristup Vrsti) postavljen, i ako jeste ažurirati i PNVŽ za vrstu R t dekrementiranjem sa zasićenjem (kod tekuće vrste imamo nenulto vreme života). Obrisati bit BJPV k (Bit Jedini Pristup Vrsti). Kraj algoritma. 7. (Otvorena je pogrešna vrsta) Proveriti bit BVZP k (Bit Vrsta Zatvorena Predikcijom). Ako je postavljen (prethodna vrsta je zatvorena predikcijom, a potom je PSV otvorio pogrešnu vrstu), preći na korak 8. Ako nije (slučaj klasičnog promašaja u otvorenu vrstu), preći na korak 12.

8. (PSV je otvorio pogrešnu vrstu) Obaviti pretpunjenje i otvaranje vrste R t. Proveriti da li je R t = RAZV k (Registar Adrese Zatvorene Vrste). Ako jeste (PNVŽ ili PMF su prethodno pogrešno zatvorili vrstu), preći na korak 9. Ako nije (PNVŽ ili PMF su prethodno ispravno zatvorili vrstu), preći na korak 10. 9. (Prethodna vrsta je bila greškom zatvorena) Obaviti pristup koloni (bez pretpunjenja). Ažurirati PMF. Proveriti da li je bit BJPV k postavljen, i ako jeste ažurirati i PNVŽ za vrstu R t dekrementiranjem sa zasićenjem (kod tekuće vrste imamo nenulto vreme života). (RHT i PHT ne treba ažurirati, jer još nije bilo pristupa u novu vrstu.) Obrisati bit BJPV k i postaviti bit BPMFA k. Kraj algoritma. 10. (Prethodna vrsta je bila ispravno zatvorena) Pročitati predviđanje PNVŽ za vrstu R t. Ako predviđa nulto vreme života, preći na korak 11. Ako predviđa nenulto vreme života, komandu pristupa koloni obaviti bez pratećeg pretpunjenja. Postaviti bit BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i obrisati bit BVZP k (Bit Vrsta Zatvorena Predikcijom). Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (ovo se odnosi na prethodno zatvorenu vrstu, čija je adresa zapamćena u RAZV k ), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod prethodne vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT i PHT za PSV. Kraj algoritma. 11. (Predviđanje nultog vremena života) Komandu pristupa koloni obaviti sa pratećim pretpunjenjem. Obrisati bitove BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i BPMFZV k (Bit Prediktor Mrtve Faze Zatvorio Vrstu) i postaviti bit BVZP k (Bit Vrsta Zatvorena Predikcijom). 11.1 Nakon obavljenog pristupa koloni sa pratećim pretpunjenjem proveriti predviđanje PSV. Ako postoji predviđanje, otvoriti vrstu koju prediktor predviđa i postaviti BBAK k =1, inače obrisati BBAK k =0. 11.2 Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (ovo se odnosi na prethodno zatvorenu vrstu, čija je adresa zapamćena u RAZV k ), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod prethodne vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT i PHT za PSV. Upisati u registar RAZV k (Registar Adrese Zatvorene Vrste) R t. Kraj algoritma. 12. (Promašaj u otvorenu vrstu) Obaviti pretpunjenje (uz pamćenje indeksa vrste RAOV k u RAZV k ) i aktiviranje vrste R t. Pročitati predviđanje PNVŽ za vrstu R t. Ako predviđa nulto vreme života, preći na korak 13. Ako predviđa nenulto vreme života, komandu pristupa koloni obaviti bez pratećeg pretpunjenja. Postaviti bit BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i obrisati bit BVZP k (Bit Vrsta Zatvorena Predikcijom). Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (ovo se odnosi na upravo zatvorenu vrstu, čija je adresa u RAZV k ), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod upravo zatvorene vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT i PHT za PSV. Kraj algoritma.

13. (Predviđanje nultog vremena života) Komandu pristupa koloni obaviti sa pratećim pretpunjenjem. Obrisati bitove BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i BPMFZV k (Bit Prediktor Mrtve Faze Zatvorio Vrstu) i postaviti bit BVZP k (Bit Vrsta Zatvorena Predikcijom). 13.1 Nakon obavljenog pristupa koloni sa pratećim pretpunjenjem proveriti predviđanje PSV. Ako postoji predviđanje, otvoriti vrstu koju prediktor predviđa i postaviti BBAK k =1, inače obrisati BBAK k =0. 13.2 Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (ovo se odnosi na upravo zatvorenu vrstu RAZV k ), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod upravo zatvorene vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT i PHT za PSV. Upisati R t u registar RAZV k. Kraj algoritma. 14. (Nije otvorena vrsta) Otvoriti vrstu R t i postaviti BBAK k =1. Proveriti da li je R t = RAZV k. Ako jeste (PNVŽ ili PMF su pogrešno zatvorili vrstu), preći na korak 15. Ako nije (PNVŽ ili PMF su ispravno zatvorili vrstu ili je prvi pristup u tu banku uopšte), preći na korak 16. 15. (Prethodna vrsta je bila greškom zatvorena) Obaviti pristup koloni (bez pratećeg pretpunjenja). Ažurirati PMF. Proveriti da li je bit BJPV k postavljen, i ako jeste ažurirati i PNVŽ za vrstu R t dekrementiranjem sa zasićenjem (kod tekuće vrste imamo nenulto vreme života). (RHT i PHT ne treba ažurirati, jer još nije bilo pristupa u novu vrstu.) Obrisati bit BJPV k i postaviti bit BPMFA k. Kraj algoritma. 16. (Prethodna vrsta je bila ispravno zatvorena ili je prvi pristup u datu banku) Pročitati predviđanje PNVŽ za vrstu R t. Ako predviđa nulto vreme života, preći na korak 17. Ako predviđa nenulto vreme života, komandu pristupa koloni obaviti bez pratećeg pretpunjenja. Postaviti bit BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i obrisati bit BVZP k (Bit Vrsta Zatvorena Predikcijom). Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (tada nije prvi pristup u datu banku uopšte, već je vrsta prethodno bila zatvorena, i to odmah nakon prvog pristupa), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod prethodne vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT i PHT za PSV. Kraj algoritma. 17. (Predviđanje nultog vremena života) Komandu pristupa koloni obaviti sa pratećim pretpunjenjem. Obrisati bitove BPMFA k (Bit Prediktor Mrtve Faze Aktivan) i BPMFZV k (Bit Prediktor Mrtve Faze Zatvorio Vrstu) i postaviti bit BVZP k (Bit Vrsta Zatvorena Predikcijom). 17.1 Nakon obavljenog pristupa koloni sa pratećim pretpunjenjem proveriti predviđanje PSV. Ako postoji predviđanje, otvoriti vrstu koju prediktor predviđa i postaviti BBAK k =1, inače obrisati BBAK k =0. 17.2 Proveriti bit BJPV k (Bit Jedini Pristup Vrsti). Ako je postavljen (nije prvi pristup u datu banku uopšte, već je vrsta prethodno bila zatvorena, i to odmah nakon prvog pristupa), ažurirati PNVŽ za vrstu određenu RAZV k inkrementiranjem sa zasićenjem (kod

prethodne vrste smo imali nulto vreme života). Postaviti bit BJPV k (Bit Jedini Pristup Vrsti). Ažurirati RHT i PHT za PSV. Upisati R t u registar RAZV k. Kraj algoritma. Red RED_B: Za sve naloge iz reda RED_B DRAM kontroler obavlja sledeće aktivnosti. Obaviti zatvaranje vrste RAOV k i upis njene adrese u RAZV k. Postaviti bitove BPMFZV k (Bit Prediktor Mrtve Faze Zatvorio Vrstu) i BVZP k (Bit Vrsta Zatvorena Predikcijom). Proveriti predviđanje PSV (Prediktora Sledeće Vrste). Ako postoji predviđanje, otvoriti vrstu koju prediktor predviđa i postaviti BBAK k =1, inače obrisati BBAK k =0. Radi lakšeg praćenja prikazani algoritam nema minimalan broj koraka. Na primer, koraci 13 i 17 su potpuno isti kao korak 11, gledano u odnosu na korišćene registre i indikatore, ali se komentari koji stoje u zagradama razlikuju, pa je algoritam prikazan sa većim brojem koraka radi lakšeg razumevanja. U nastavku sledi prikaz algoritma sa minimalnim brojem koraka, i bez objašnjenja. Red RED_A: Za svaki nalog iz reda RED_A: 1. if (BBAK k == 1) goto 2 else goto 13 2. if (RAOV k == R t ) goto 3 else goto 7 3. if (BVZP k == 1) goto 4 else goto 6 4. if (PNVŽ-Lookup(R t ) == zero) goto 5 else column access, BPMFA k = 1 BVZP k = 0 if (BJPV k == 1) PNVŽ-Update(RAZV k, inc) BJPV k = 1 PSV-Update(RHT) //ažurira se samo RHT, ne i PHT goto end 5. column access with autoprecharge BPMFA k = 0 BPMFZV k = 0 BVZP k = 1 if (PSV-Lookup(R)) activate R, BBAK k =1 else BBAK k =0 if (BJPV k == 1) PNVŽ-Update(RAZV k, inc) BJPV k = 1 PSV-Update(RHT) //ažurira se samo RHT, ne i PHT RAZV k = R t

goto end 6. column access PMF-Update if (BJPV k == 1) PNVŽ-Update(R t, dec) BJPV k = 0 goto end 7. if (BVZP k == 1) goto 8 else goto 12 8. precharge activate(r t ) if (R t == RAZV k ) goto 9 else goto 10 9. column access PMF-Update if (BJPV k == 1) PNVŽ-Update(R t, dec) BJPV k = 0 BPMFA k = 1 goto end 10. if (PNVŽ-Lookup(R t ) == zero) goto 11 else column access BPMFA k = 1 BVZP k = 0 if (BJPV k == 1) PNVŽ-Update(RAZV k, inc) BJPV k = 1 PSV-Update(RHT, PHT) //ažuriraj i RHT i PHT (jedina razlika u odnosu na korak 4) goto end 11. column access with autoprecharge BPMFA k = 0 BPMFZV k = 0 BVZP k = 1 if (PSV-Lookup(R)) activate R, BBAK k =1 else BBAK k =0 if (BJPV k == 1) PNVŽ-Update(RAZV k, inc) BJPV k = 1 PSV-Update(RHT, PHT) //ažuriraj i RHT i PHT (jedina razlika u odnosu na korak 5) RAZV k = R t goto end 12. RAZV k = RAOV k precharge goto 10 13. activate R t BBAK k =1

if (R t == RAZV k ) goto 9 else goto 10 Red RED_B: Za sve naloge iz reda RED_B: RAZV k = RAOV k precharge BPMFZV k = 1 BVZP k = 1 if (PSV-Lookup(R)) activate R, BBAK k = 1 else BBAK k = 0

5. Univerzalnost algoritma Algoritam izložen u prethodnom odeljku je univerzalan, što znači da se može primeniti na bilo koju kombinaciju PNVŽ, PMF i PSV prediktora, a ne samo na one varijante tih prediktora koje su definisane u trećem odeljku. Kao što smo videli, svaki prediktor obavlja dve osnovne funkcije: Lookup i Update. U zavisnosti od specifičnosti prediktora, može biti potrebno da se promene načini ili mesta poziva ovih funkcija, ali je algoritam u svakom slučaju primenljiv i na drugačije definisane prediktore. Kako bismo ovo pokazali, posmatrajmo korišćenje funkcija Lookup i Update u samom algoritmu. Krenimo od funkcije Lookup. Logično je da bez obzira na to kako su odgovarajući prediktori definisani, nema potrebe menjati načine odnosno mesta pozivanja ove funkcije. Ovo ćemo pokazati za sva 3 prediktora posebno: 1. Što se tiče PNVŽ prediktora, funkcija Lookup se poziva svaki put kad se otvara nova vrsta u nekoj banci (da predvidi nulto ili nenulto vreme života), kako bismo doneli odluku da li da, nakon odgovarajućeg pristupa koloni, zatvorimo vrstu ili ne. Ovo važi za bilo koju vrstu PNVŽ prediktora, obzirom da je to trenutak kada sistem treba da donese odluku da li da primeni politiku OV (odnosno ostavu vrstu otvorenu) ili politiku ZV (odnosno da zatvori vrstu). Ukoliko se odgovarajuća odluka ne donosi odmah, već nešto kasnije, onda se ne radi o PNVŽ, već o PMF tipu prediktora. 2. Što se tiča PMF prediktora, ne postoji klasična Lookup funkcija, jer je takva priroda ovog prediktora sam prediktor, u slučaju predviđanja mrtve faze, obavlja upis odgovarajućeg identifikatora banke u RED_B. Ovo će, očigledno da funkcioniše za bilo koji PMF tip prediktora. Za neke PMF prediktore, poput [6, 7], verovatno je efikasnije da se algoritam promeni i doda eksplicitan poziv funkcije Lookup. Ovaj poziv treba obaviti svaki put kad se pojavljuje pristup koloni, odnosno u koracima 6 i 9. Na ovim mestima mogu se dodati odgovarajući pozivi funkcije Lookup, pri čemu treba, u slučaju da PMF predvidi mrtvu fazu, obaviti niz aktivnosti iz dela algoritma koji se odnosi na RED_B. Jasno je, takođe, da bi algoritam radio korektno i bez ovih sitnih izmena. Za druge PMF tipove prediktora, poput [8, 10, 12], algoritam je idealan u izloženom obliku tipičnim PMF prediktorima savršeno odgovara korišćenje reda RED_B. 3. Što se tiče PSV prediktora, funkcija Lookup se poziva svaki put kad se desi zatvaranje vrste od strane PNVŽ ili PMF prediktora, što je i suština postojanja PSV prediktora nakon zatvaranja vrste nastojimo da predvidimo sledeću vrstu i otvorimo je unapred. Očigledno je da bi ovaj poziv trebalo da se izvrši u ovom trenutku za bilo koji tip PSV prediktora, bez obzira na to koliko on bio drugačiji od prediktora predloženog u ovom tehničkom rešenju. To znači da, po pitanju poziva funkcije Lookup u vezi sa PSV prediktorom, ne bi bilo nikakvih izmena sa bilo kojim drugim tipom PSV prediktora. Iz 1, 2, and 3 možemo da zaključimo da nema potrebe vršiti bilo kakve izmene u algoritmu u slučaju funkcije Lookup. Za neke tipove PMF prediktora dodavanje eksplicitnog poziva ove funkcije može da optimizuje algoritam, ali je algoritam očigledno i dalje primenljiv. Analizirajmo sada situaciju po pitanju funkcije Update. 1. Naš PNVŽ bazira se na praćenju pojavljivanja nultih i nenultih vremena života i inkrementiranju ili dekrementiranju odgovarajućih brojača. Zbog toga se funkcija Update poziva kad se desi novi pristup nakon otvaranja neke vrste. To je trenutak kada možemo da

zaključimo da li prethodno otvorena vrsta ima nulto ili nenulto vreme života (a prepoznavanje tog trenutka se vrši uz pomoć bita BJPV k ). Ako je pristup usmeren u istu vrstu, imamo pojavu nenultog vremena života, u suprotnom imamo pojavu nultog vremena života. U skladu sa tim vrši se inkrementiranje ili dekrementiranje sa zasićenjem odgovarajućeg brojača. Ovo se dešava u koracima 4, 5, 6, 9, 10 i 11 - u koracima 4 i 5 (kao i u koracima 10 i 11 koji se od koraka 4 i 5 razlikuju samo po pitanju ažuriranja PSV prediktora) vrši se inkrementiranje, a u koracima 6 i 9 dekrementiranje. Ovo treba da ostane tako kako jeste za slučaj PNVŽ prediktora iz [9]. Za PNVŽ prediktore iz [6, 7] pozivi funkcije Update treba da ostanu na istim mestima, ali bez korišćenja bita BJPV k i bez specificiranja da li treba obaviti inkrementiranje ili dekrementiranje brojača, obzirom da su ovi PNVŽ prediktori totalno drugačiji. Kod njih bismo, umesto if (BSRAk== 1) ZLTP- Update(CRARk, inc) ili if (BSRAk== 1) ZLTP-Update(CRARk, dec), imali jednostavno samo ZLTP-Update i odgovarajući prediktori bi izvršili svoje funkcije ažuriranja. 2. Poziv funkcije PMF-Update se dešava svaki put kod pogotka u otvorenu vrstu u koracima 6 i 9. Razlog za ovo je činjenica da pogodak u otvorenu vrstu znači pojavu nove vrednosti intervala pristupa, pa treba ažurirati prediktor. Situacija je slična i kod prediktora iz [6]. Ovde nakon pogotka u otvorenu vrstu treba inkrementirati brojač koji broji pristupe vrsti. Stoga bi, u slučaju korišćenja ovog prediktora kao PMF prediktora, algoritam ostao takav kakav jeste. Ovo je takođe tačno i za prediktor iz [7]. Za ova dva prediktora bi trebalo da imamo odgovarajuće ažuriranje, odnosno poziv funkcije Update, kod svakog pristupa koloni, odnosno u koracima 4, 5, 6, 9, 10 i 11 kao što smo zaključili kada smo ih analizirali kao PNVŽ tipove prediktora. Praktično ako koristimo prediktore iz [6, 7] i kao PNVŽ i kao PMF tipove prediktora, možemo da objedinimo pozive funkcije Update umesto zasebnih PNVŽ-Update i PMF-Update poziva imaćemo jedinstveni Update poziv. PMF prediktorima iz [8, 12] nisu potrebni Update pozivi, obzirom da sami prediktori ažuriraju podatke na osnovu analize adresa. Kod takvih prediktora bi trebalo da obrišemo odgovarajuće pozive funkcija Update u koracima 6 i 9. PMF prediktor iz [10] je sličan prediktorima iz [6, 7] trebalo bi da imamo poziv funkcije Update kod svakog pristupa koloni. 3. Poziv PSV-Update se dešava kod svakog pristupa u novu vrstu (koraci 4, 5, 10, 11). Kod pogodaka u otvorenu vrstu (koraci 6 i 9) nema novih informacija koje mogu da pomognu predviđanje sledeće vrste, obzirom da je naš PSV tako definisan. U opštem slučaju može da se desi da PSV bude definisan tako da PSV-Update treba da se pozove i kod pojave pogotka u otvorenu vrstu. Tada bi trebalo dodati PSV-Update pozive i u koracima 6 i 9. Možemo da zaključimo da, u zavisnosti od konkretnih korišćenih prediktora, može biti potrebno da se izvrše sitne izmene u algoritmu po pitanju poziva funkcije Update, ali je algoritam definitivno primenljiv na sve moguće tipove prediktora, bez obzira na njihove eventualne razlike u odnosu na prediktore izložene u ovom tehničkom rešenju.

6. Zaključak U ovom tehničkom rešenju prikazan je univerzalni algoritam za sinhronizaciju prediktora DRAM memorija, primenljiv na bilo koju kombinaciju PNVŽ, PMF i PSV prediktora, čak i za varijante ovih prediktora koje se po načinu predviđanja prilično razlikuju od varijanti koje su izložene u tehničkom rešenju. Potreba ovog algoritma proističe usled korišćenja sve 3 moguće vrste prediktora. Ako se koristi samo PNVŽ ili PMF, bez PSV prediktora, sinhronizacija aktivnosti prediktora sa ostalim aktivnostima kontrolera DRAM memorije je relativno jednostavna, i algoritam sinhronizacije nije neophodan. Ako, sa druge strane, kontroler osim PZV prediktora koristi i PSV prediktor, naročito ako koristi oba moguća tipa PZV prediktora (i PNVŽ i PMF), onda sinhronizacija postaje prilično kompleksna i zahteva odgovarajući algoritam. Ova kompleksna sinhronizacija opravdana je mogućnostima poboljšanja koje se dobijaju. Naime, ako se koristi samo PZV prediktor, moguća poboljšanja su znatno manja u odnosu na situaciju kada imamo i PSV prediktor. U idealnom slučaju, kada PZV prediktor tačno predvidi kada zatvoriti vrstu, a PSV tačno predvidi koja će biti sledeća vrsta u koju će biti usmeren pristup, dobija se minimalna moguća latencija.

7. Reference 1. Jacob B, Ng S, Wang D (2007) Memory systems: cache, DRAM, disk. MorganKaufman, Massachusetts 2. Hennessy J, Patterson D (2011) Computer architecture: a quantitative approach, 5th edn. Morgan Kaufman, Massachusetts 3. Hu Z, Kaxiras S, Martonosi M (2002) Timekeeping in the memory system: predicting and optimizing memory behavior. In: Proc. 29th annual international symposium on computer architecture (ISCA 02), pp 209 220 4. Stankovic V, Milenkovic N (2009) DRAM controller with a complete predictor. IEICE Trans Inf Syst E92 D(4): 584 593 5. Stankovic V, Milenkovic N (2015) Synchronization algorithm for predictors for SDRAM memories. Journal of Supercomputing, Volume 79, Number 9, September 2015, pp 3609-3636 6. Awasthi M, Nellans DW, Balasubramonian R, Davis A (2011) Prediction based DRAM row-buffer management in the Many-Core Era. In: Proc. International conf. Parallel architectures and compilation, techniques, pp 183 184 7. Xu Y, Agarwal AS, Davis BT (2009) Prediction in dynamic SDRAM controller policies. In: Bertels K et al (eds) SAMOS 2009, LNCS 5657. Springer, Berlin, pp 128 138 8. Chiyuan M, Shuming C (2007) A DRAM precharge policy based on address analysis. In: Proc. 10th euromicro conf. digital system design architectures, methods and tools (DSD 07), pp 244 248 9. Park SI, Park IC (2003) History-based memory mode prediction for improving memory performance. In: Proc. international symp. circuits and systems (ISCAS 03), vol. 5, pp 185 188 10. Kahn O, Wilcox J (2004) Method for dynamically adjusting a memory page closing policy. United States Patent, Patent No. US 6,799,241 B2 11. Fanning B (2003) Method for dynamically adjusting memory system paging policy. United States Patent, Patent No. US 6,604,186 B1 12. Chiyuan M, Xiaoqiang N (2014) A memory schedule policy oriented to stream architecture. In: Proc. international conf. on embedded and real-time computing systems and applications (RTCSA 14), pp 1 5