DLX procesor sa 5 stepena pipeline-a (VLSI sistemi projekat ETF Beograd 2010 deo 1)


Download Article as PDF


DLX procesor
sa 5 stepena pipeline-a

Nikola Vidosavljević, Nikola Milošević

 

1. Definisanje projekta

1.1 Uvod

Projekat iz VLSI (Very Large Scaled Integration) nam služi da savladamo osnovne
elemente jezika VHDL (VLSI Hardware Language) i projektovanjem sopstvenog
procesora upoznamo detalje njegove arhitekture koja je vrlo bliska sa
arhitekturom procesora koji se danas koriste, ali ipak dovoljno
pojednostavljena da ju je moguće isprojektovati kao domaći zadatak. Projekat je
logičan nastavak projekta iz predmeta AOR2 (Arhitektura i Organizacija Računara
2) gde smo imali priliku da projektujemo procesor, ali vrlo apstraktno. Uz
pomoć VHDL-a u obzir uzimamo sva kašnjenja koja elementi i provodnici unose,
što nije bio slučaj u projektu iz AOR-a 2. Takođe, analiza i testiranje su
konkretnije i jednostavnije uz pomoć VHDL-a.

1.2 Ciljevi projekta

Osim upoznavanja jezika VHDL i arhitekture
procesora, ovaj projekat se može iskoristiti za testiranje izvršavanja
instrukcija na opisanom procesoru. To je najoptimalnije iskoristiti u
edukacione svrhe za objašnjavanje osnovnih stvari u arhitekturi računara koje
se mnogo lakše mogu savladati uz pomoć vizuelizacije problema na koje studenti
mogu naići.

2. SpecifikacijA

2.1 Uvod

Isprojektovati i modelovati 16-bitni
troadresni procesor koji treba da ima sledeće grupe instrukcija:

load i store:

-jedine instrukcije koje pristupaju
memoriji,

-transfer između memorijske lokacije
zadate jednim registrom i drugog zadatog registra;

mov:

-transfer podataka iz registra u
registar,

-moguće zadati i rotiranje podatka
pri transferu sa 4-bitnim neoznačenim pomerajem u desno kao neposrednim
podatkom u instrukciji;

aritmetičke operacije sa 3 operanda:

-sabiranje,

-oduzimanje;

logičke instrukcije po bitima sa 3
operanda:

-i,

-ili,

-ekskluzivno ili,

-negacija;

Uslovni skokovi

-u zavisnosti od odnosa dva zadata
registra skače se na adresu zadatu trećim registrom,

-podržati proveru: >, >=,
<, <=, = =, !=;

podrška za potprograme:

-poziv potprograma (adresa se pamti
na dole opisanom steku),

-povratak iz potprograma (adresa se
skida sa dole opisanog steka);

funkcije za rad sa stekom:

-push

-pop

-transfer podataka sa steka
relativno u odnosu na vrh steka (označeni pomjeraj je dio instrukcije, 8 bita)
u zadati registar i obrnuto.

Procesor treba da poseduje
registarski fajl koji se sastoji od 16 registara. Adresni prostor procesora je 216
16-bitnih reči (adresibilna jedinica reč).

Za potrebe poziva potprograma,
procesor poseduje hardverski stek (potpuno odvojen od operativne memorije)
veličine 256 reči. U slučaju prepunjavanja steka ili prekoračenja opsega pri
pristupu steku resetovati procesor.

Po resetu, sistem počinje
izvršavanje od adrese 0.

Kao operand u bilo kojoj instrukciji
(uključujući i adresu u load i store), može da se pojavi samo registar, osim u
gore navedenim slučajevima kada je neki operand zadat kao neposredni podatak.

U sistemu postoje dva odvojena
adresna prostora, jedan za instrukcije i jedan za podatke. U skladu s tim,
postoji dvije 16-bitne adresne magistrale, dvije 16-bitne magistrale podataka,
kao i standardne linije, dve RD i jedna WR (instrukcije i podaci su odvojeni.
Ukoliko se neki od kontrolnih signala postavi do uzlazne ivice signala takta,
smatrati da će se odgovarajuća operacija obaviti pre naredne uzlazne ivice
signala takta.

Ako je to moguće, veličina svih
instrukcija treba da budu jedna reč.

Sve instrukcije se izvršavaju kroz 5
stepeni pipeline-a (u skladu sa potrebama pojedinih instrukcija):

1.             Dohvatanje
instrukcije,

2.             Dekodovanje
instrukcije,

3.             Dohvatanje
operanada,

4.             Izvršavanje
instrukcije,

5.             Upis
rezultata.

Neophodno
je detektovati sve hazarde na vreme i zaustaviti odgovarajuće stepene
pipeline-a potreban broj perioda takta da bi se dobio ispravan rezultat
izvršavanja programa.

2.2 Spoljašnji interfejsi

Uređaj sadrži 88 pinova, od kojih je 37 ulaznih i
51 izlazni. Ulazni su instrukcijska magistrala, magistrala podataka, takt,
reset procesora i linije koje nam pokazuju da li su eksterne memorije postavile
podatak na magistralu. Izlazni su adresne linije instrukcijske magistrale i
adresne linije memorijske magistrale. Izlazne linije su takođe linije ctrl_read
i ctrl_write koje služe za zahteve upisa i čitanja iz memorije. Postoji linija
inst_read koja je aktivna kada treba pročitati podatak iz instrukcijske
memorije. Program counter postavlja vrednost na adresne linije instrukcijske magistale
i zahtev inst_read, pomoću kojih se čita instrukcija. Takođe procesor postavlja
adresne linije i liniju zahteva prilikom upisa ili čitanja iz memorije, nakon
čega čeka signal function complete, koji postavlja memorija i tad skida podatak
sa magistale, na ivicu sledećeg takta.

2.3 Specifikacija hardvera

Pri projektovanju
procesora korišćeni su sledeći elementi: sabirač (sa uslovnim sumama), I, ILI,
NE i ekskluzivno ILI logička kola, blok za rotaciju (barel), dekoder, D
flip-flop, multiplekser, demultiplekser, registar, registarski file, sabirač,
trostatički elementi i stek.

Procesor se može
podeliti na 5 stepena protočne obrade.

U prvom stepenu se
čita instrukcija, tako što se pročita iz instrukcijske memeorije podatak koji
se nalazi na adresi na koju ukazuje PC. PC se nakon toga inkrementira u
sabiraču, i nakon toga učitava. U Instruction fetch jedinici postoji i
multiplekser koji ukoliko dodje do skoka, na ulaz PC propušta adresu skoka,
umesto inkrementirane vrednosti.

U drugom stepenu se
dohvataju operandi instrukcija iz registarskog file-a, kako se svi operandi
svih instrukcija moraju naći u nekom od registara opšte namene. Registara opšte
namene ima 16. U ovoj jedinici može doći do hazarda podataka ukoliko neka
kasnija instrukcija pokuša da čita podatak koji treba tek da se upiše i čija
obrada se nalazi u nekom od stepena protočne obrade.

U Execution fazi se
izvršavaju instrukcije računanja, jer se u njoj nalazi ALU jedinica. Takođe
ispred alu se nalaze multiplekseri koji određuju koji podatak će ući u ALU
jedinicu. U ovom bloku se određuje i da li će doći do skoka na osnovu flagova
koje daje ALU jedinica.

Postoji aritmetičko
logička jedinica (ALU) koja izvršava izračunavanja. Ulazi u ALU aedovode kao
pročitani registri iz registarskog file-a. Izlaz se vodi u EX/MEM blok. Sastoji
se od sabirača, I, ILI, ekskluzivno ILI i NOT logičkih kola i bloka za rotaciju
podatka. Izlazi ovih blokova su dovedeni na ulaz multipleksera koji pomoću
selekcionih ulaza u ALU blok bira jedan od njih i prosleđuje ga na izlaz.
Postoji kombinaciona mreža sastavljena od I, ILI i NE logičkih elemenata koja
izračunava statusne C, V, Z i N bitove. Kao sabirač je korišćen sabirač sa
uslovnim sumama. On je odabran jer predstavlja optimum između brzine složenosti
realizacije i brzine izvršavanja. Može se koristiti sabirač po bitima (Ripple
Carry) koji je jednostavniji, ali znatno sporiji ili Carry Select Adder koji je
neznatno brži ali koristi multipleksere sa većim brojem bitova, tako da mu je
struktura složenija.

Nardna faza služi za
upis u memoriju. U ovoj jedinici se generišu signali zahteva čitanja iz
memorije i pisanja u memoriju. Prilikom upisa se postavljaju vrednosti na
adresnu magistralu i magistalu podataka, dok se prilikom čitanja postavi adresa
i čeka se podatak. U ovoj jedinici se nalazi i stek, na koji se upisuje pomoću
instrukcija push ili prilikom jsr instrukcije se upisuje PC na stek. Takodje
pop instrukcija čita sa steka, ali i rti instrukcija čita PC sa steka.

Poslednja Write back
jedinica služi za vraćanje podatka u i upis u registarski file. U ovoj jedinici
postoji multiplekser koji određuje da li podatak pročitan iz memorije se
upisuje u registarski file ili je to podatak koji je dobijen nekom od operacija
u EX jedinici.

2.4 Specifikacija softvera

U sabiraču se koristi algoritam sabiranja sa
uslovnim sumama. Algoritam se sastoji u tome da se sabiranje bitova izvršava
istovremeno, pa se kasnije na osnovu prenosa iz ranijih razreda vrši selekcija
već izračunatih suma. U prvom koraku se vrši sabiranje pojedinačnih razreda, a
u narednim koracima se vrši grupisanje tako što se grupa povećava na dvostruko
veću od one u prethodnom koraku. Tako dolazimo da se sabiranje u našem slučaju
sa 16-bitnim sabiračem sabiranje vrši u 6 koraka (jedan za računanje početnih
suma i 5 koraka za selekciju uslovnih suma).

Algoritam se može iskazati sledećim formulama:

Rezultat kada je
prenos ulazni prenos 0:
Si0 = AiÅ Bi = (Ai + Bi) (Ai+Bi) = (Ai + Bi) (AiBi),
Ci0= AiBi

Rezultat kada je
prenos ulazni prenos 1:
Si1= AiÅ BiÅ 1 = AiÅ Bi= Si0,
Ci1= AiBi + (Ai + Bi) = Ai + Bi.

2.5 Interfejs između softvera i hardvera

3. Unutrašnji blokovi

Subblokovi procesora:

Registarski fajl sa logikom za čitanje i upis u
registarski fajl.

Hardveski stek, sa logikom koja služi za upis i
čitanje sa steka, kao i logikom za odlučivanje koji podatak treba upisati na
stek.

Aritmetičko-logički blok sastavlje od ALU jedinice
na ciji ulaz su dovedeni prihvatni registri operanada iz ID/EX jedinice.

IF/ID blok za prenos PC i IR iz Instruction feth
stepena u Instruction decode stepen.

ID/EX blok za prenos 3 regista opšte namene (dva
su operandi, dok se treći koristi u instrukcijama store kao operand koji se
smešta u memoriju i IR.

Zero blok koji detektuje na osnovu logike da li je
dožlo do skoka.

EX/MEM blok za prosleđivanje u MEM jedinicu
rezultata ALU jedinice, 2 registra, kao i bita koji određuje da li je došlo do
skoka i IR registra .

MEM/WB blok za prosleđivanje u Write back blok IR
registra i podataka koji treba da se smeste u registarski fajl.

Born in Bratislava, Slovakia, lived in Belgrade, Serbia, now living in Manchester, UK, and visitng the world. Nikola is a great enthusiast of AI, natural language processing, machine learning, web application security, open source, mobile and web technologies. Looking forward to create future. Nikola has done PhD in natural language processing and machine learning at the University of Manchester where he worked for 2 years. In 2020, Nikola moved to Berlin and works in Bayer Pharma R&D as a computational scientist.

Leave a Reply

Your email address will not be published. Required fields are marked *