Sunteți pe pagina 1din 24

Universitatea STEFAN CEL MARE Suceava _____________________________________________________________

Proiect
Disciplina: Arhitectura sistemelor de calcul (ASC) Tema:

Proiectarea unui microprocesor RISC

Indrumator: sef lucrari Andy Tanase

Student: Boicu George grupa 1131b

2004

1. Cerintele proiectului
Sa se proiecteze un microprocesor RISC cablat, cu urmatoarele caracteristici : ALU pe 16 biti 8 registre 6 instructiuni magistrale de adrese si date multiplexate instructiunea sa fie detectata si executata in 4 cicli procesor Sa se realizeze un program cu instructiunile alese care sa ordoneze crescator un sir.

2. Introducere in arhitectura RISC


n anii '80 a aprut ideea de a face procesoarele mult mai simple pentru a le permite s mearg mai repede. RISC (Reduced Instruction Set Computer). In comparatie cu procesoarele CISC (Complex Instruction Set Computer) , cum ar fi de exemplu cele de la Intel, procesoarele RISC suporta instructiuni de lungime fixa, mai simple si mai putine. Insa ideeal de a avea un set de instructiuni redus nu este "n sine" o modalitate de a mbunti performanele unui procesor, ci mai degrab, un "efect lateral", o consecin a unei optimizari globale. Premiza este ca un procesor RISC poate fi proiectat mult mai repede decat un procesor CISC, datorita design-ului sau mai simplu. In zilele de astazi, este in general acceptata ideea ca un procesor RISC este mai eficient decat unul CISC. Chiar si cel mai popular procesor CISC raspandit in toata lumea (Intel Pentium), intern translateaza instructiunile CISC in instructiuni RISC inainte ca acestea sa fie executate. Procesoarelor RISC le este caracteristica arhitectura load-store. Aceasta inseamna ca exista doua instructiuni pentru accesarea memoriei: load - pentru a incaraca o data din memorie store - pentru a scrie o data in memorie Nici o alta instruciune nu poate accesa memoria in mod direct. Deci o instructiune CISC cum ar fi add this byte from memory to register 1, in arhitectura load-store va avea nevoie de doua instructiuni: "load this byte from memory into register 2" si "add register 2 to register 1". Caracteristicile de mai sus fac ca designul RISC sa fie ideal pentru a se indrepta spre o directie puternica, cea a procesoarelor embedded (the system-on-achip). De asemenea, microprocesoarele RISC pot fi utilizate ca control inteligent intr-o gama larga de aplicatii cum ar fi: cuptoare cu microunde, sobe electrice, masini de cusut, sisteme cu autoaprindere, controlul motoarelor, recunoasterea limbii, modem-uri etc. Aceste aplicatii necesita in general capabilitati mai mari I/O si o putere de calcul relativ mai scazuta. O definiie posibil (dat de M. Slater n IEEE Micro, 1990) a procesoarelor RISC este urmtoarea: "Un procesor RISC are un set de instruciuni conceput: pentru o execuie eficace pe o structur pipeline pentru generarea codului de ctre un compilator cu optimizare"

Execuiei eficace pe o structur pipeline i corespund urmtoarele caracteristici: instruciuni de lungime fix instruciuni aritmetice/logice cu trei operanzi codarea simpl i omogen a instruciunilor acces la memorie doar prin instruciuni specifice (LOAD, STORE) moduri de adresare simple salturi ntrziate Generrii de cod optimizat la compilare i corespund urmtoarele caracteristici: instruciuni cu trei operanzi numr mare de registre set de instruciuni simetric Elementele de baza ale arhitecturii RISC: a) Structuri de tip pipeline Execuia unei instruciuni se poate descompune n mai multe faze elementare, care necesit fiecare unul sau mai multe cicluri de tact. b) Arhitectura registru-registru Accesul la memorie se face doar prin instruciuni load i store, iar instruciunile aritmetice i logice au trei operanzi care se gsesc toi n registre. Avantajele arhitecturii RISC: Mai rapid Hardware simplu Un ciclu mai scurt de design, datorita hardware-ului mai simplu Cost redus, datorita faptului ca mai multe blocuri pot fi plasate pe un singur chip
magistrala de adrese

Exemple de microprocesoare RISC : magistrala de date Motorola 88000 Sun SPARC magistrala de control Intel 860/960

UCP Sistemul de Sistemul de 3. Caracteristici generale ale unui microprocesor


memorie intrare-iesire 4 Dispozitive periferice

Fig. 3.1 Schema bloc a unui sistem de calcul

UCP este centrul de control al calculatorului care coordoneaza transferul de date cu memoria si cu porturile de intrare-iesire prin intermediul a 3 magistrale : de adrese, de date, de control si comada. Toate activitatile efectuate de UCP se sincronizeaza cu un circuit de ceas. Acesta ofera baza de timp pentru toate transferurile din sistem si defineste viteza de lucru a microprocesorului. Functionarea microprocesorului este complet definita de catre setul de instructiuni. Pe langa activitatile de comanda si control, p realizeaza operatii logice si aritmetice. Procesorul are la randul sau mai multe elemente componente de baza : Unitatea aritmetico-logica (ALU) Aceasta este sclavul calculatorului, dispozitivul care efectueaza operatiile aritmetice ca adunarea si scaderea sau operatiile logice ca SI si SAU. In general, ALU prezinta doua intrari pentru date si o iesire pentru rezultat. Registrele Procesorul este prevazut cu un set de registre interne, de uz general, care pot fi considerate ca alcatuind o memorie interna de viteza foarte mare, dar si cu un set de registre speciale, cum ar fi : numaratorul de program (Program counter), indicatorul de stiva (Stack Pointer), registrul pentru decodificarea instructiunilor si registrul acumulator. Calea de date Reprezinta o reea de uniti de stocare (registre) i uniti aritmetice i logice conectate prin magistrale (pentru transportul datelor) ale cror temporizare este controlat prin ceasuri. Unitatea de control Este un modul care controleaza modul si ordinea in care se executa operatiile.

4. Prezentare
5

4.1 Registrele
micro procesorul este prevazut cu un numar de 8 registre, acestea fiind denumite r0 - r7 si codificate pe cate 4 biti. r1 va fi un registru dedicat, iar celelalte vor fi de uz general. registru r0 r1 r2 r3 r4 r5 r6 r7 codificare 0000 0001 0010 0011 0100 0101 0110 0111

Tabelul 4.1 Codificarea registrelor

4.2 Setul de instructiuni


4.2.1 Generalitati UCP poate fi abordata ca fiind organizata pe 3 nivele. Pe nivelul superior se afla limbajul de asamblare care descrie setul de instructiuni a UCP. Prima etapa in prelucrarea unitatii centrale de prelucrare este acea referitoare la arhitectura setului de instructiuni : ISA (Instruction Set Architecture) reprezinta o interfata critica intre software si hardware, acea portiune a UCP vizibila programatorului sau proiectantului de compilatoare. Pentru a comanda hardware-ul unui calculator, trebuie sa vorbesti in limba acestuia. Cuvintele limbajului masinii se numesc instructiuni. Vocabularul acestui limbaj este denumit set de instructiuni. Executia unei instructiuni poate fi divizata intr-un numar de stagii. Numarul de stagii si scopul fiecarui stagiu sunt diferite de la procesor la procesor. In general acestea sunt:

IF ID EX

MA

WB

Instruction Fetch - extrage urmatoarea instructiune din memorie utilizand adresa din registrul PC (Program Counter) si depune aceasta instructiune in registrul IR (Instruction Register) Instruction Decode decodifica instructiunea din IR, calculeaza urmatorul PC, si citeste orice operand solicitat din fisierul de registre. Execute - "executa" instructiunea. De fapt, toate operatiile ALU sunt realizate in acest stagiu. Memory Access - Realizeaza toate accesele la memorie necesare instructiunii curente. Deci, pentru load, va incarca un operand din memorie. For store, va depune un operand in memorie. Pentru toate celelalte instructiuni nu va face nimic. Pentru instructiunile care au un rezultat (un registru destinatie), Write Back scrie acest rezultat inapoi in fisierul de registre. Aici sunt incluse aproape toate instructiunile cu exceptia instructiunii nop (no-op or no-operation) care pur si simplu nu face nimic si store. Ciclurile de executie sunt ilustrate in figura urmatoare:

Fig. 4.1 Ciclul de executie a unei instructiuni

15

4.2.2 Formatul instructiunilor Compromisul de a pastra toate instructiunile de aceeasi lungime determina utilizarea a mai multor formate de instructiuni. - un format pentru lucrul cu registre (tip R) - un format ce folosete un registru i o constant pe 8 bii (tip I) - un format pentru instructiuni de salt (tip J) Tip R
12 8 4 7

opcode 4b Tip I opcode 4b Tip J opcode 2b


rd 4b

rs 4b

rt 4b

rd 4b

im 8b

adresa 14b

rd = registru destinatie rs = registru sursa 1 rt = registru sursa 2 im = valoare imediata pe 8 biti (0 - 255) adresa = constanta pe 14 biti

4.2.3 Alegerea instructiunilor proprii a) b) c) d) Aritmetice De salt Lucru cu memoria Altele add sub cmp inc j jgt lw sw halt : : : : add, sub, cmp, inc j, jgt lw, sw halt Addition Substract Compare Increment Jump Jump if greater then Load word Store word Stop

Tabelul 4.2 Explicarea mnemonicelor instructiunilor

O descriere mai detaliata a instructiunilor este prezentata in tabelul urmator : Format R R R I J J R R R Instructiune add sub cmp inc j jgt lw sw halt Argumente rd, rs, rt rd, rs, rt rs, rt rd, im Im Im rd, (rs) rd, (rs) Descriere rd = rs + rt rd = rs - rt
r1 = 1 dc rs>rt r1 = 0 dc rs<=rt

Opcode 0000 0001 0010 0011 10 11 0100 0101 0111

Observatii
r1=1 la overflow altfel r1=0

rd+ = im
sare la adresa data de im dc r1 = 1, sare la adresa data de im incarca in rd cuv. de la adr. data de rs salveaza rd la adresa data de rs opreste executia

r1=1 la overflow altfel r1=0

Tabelul 4.3 Descrierea instructiunilor

4.3 Realizarea unui program de sortare a unui sir din memorie


9

4.3.1 Pseudocod Utilizand instructiunile alese, programul va sorta crescator un sir de numere stocate in memorie, utilizand algoritmul Bubble Sort al carui pseudocod este urmatorul: executa sortat = true pentru i=1 la n-1 daca v(i) > v(i+1) atunci aux = v(i) v(i) = v(i+1) v(i+1) = aux

sortat = false
cat timp (sortat = false) sortat = variabila booleana (flag) care indica daca s-a efectuat sau nu o interschimbare intre elementele sirului la iteratia curenta
4.3.2 Variabile, notatii, conventii

Fie: v = vectorul de elemente n = numarul de elemente din vector i = variabila contor Variabilele se vor asocia cu registrele in modul urmator: adresa v -> r0 n -> r2 valoarea elementului i : v[i] -> r3 adresa v[i] -> r4 valoarea lui v[i] -> r5 valoarea lui v[i+1] -> r6 valoarea flagului sortat -> r7 4.3.3 Programul in limbaj de asamblare
10

sub r0, r0, r0 inc r0, 50 sub r2, r2, r2 inc r2, 20 do: sub r7, r7, r7 sub r3, r3, r3 loop: cmp r3, r2 jgt end_for add r4, r0, r3 lw r5, (r4) inc r4, 1 lw r6, (r4) cmp r5, r6 jgt schimba jfor:

# r0=0 #pun in r0 adresa primului element din vector

#r7=0 (sortat=0) #r3=0 (i=0) #compar i cu n #daca i>n, se iesie din bucla #r5 = v[i] #incarc adresa llui v[i+1] #r6 = v[i+1] #compar v[i] cu v[i+1] #daca v[i]>v[i+1] sar la schimba

inc r3, 1 #incrementez i j loop #reiau bucla end_loop: cmp r7, ro jgt do end_do: halt #terminare schimba: add r4, r4, r0 sw r6, (r4) inc r4, 1 sw r5, (r4) inc r7, 1 j jfor data: #elementele vectorului byte 0x33 byte 0x40 byte 0x45 byte 0x34 byte 0x23 byte 0x99 byte 0x10 byte 0x98 byte 0x01 byte 0x55 byte 0x00 byte 0x10

11

5.

Proiectarea hardware

5.1 Principii de baza in proiectarea hardware


1. Simplitatea favorizeaza uniformitatea (Hardware-ul pentru un numar fix de operanzi este mai simplu decat cel pentru un numar variabil de operanzi.)
2. Mai mic inseamna mai rapid

(Un numar prea mare de registri ar creste durata ciclului de ceas, deoarece semnalelor electronice le-ar trebui mai mult timp sa parcurga o distanta mai mare datorita cresterii complexitatii in special a circuitelor de decodificare.) 3. Proiectarea buna necesita compromisuri bune (Compromisul este de a pastra toate instructiunile avand aceeasi lungime, solicitandu-se prin aceasta tipuri de format diferite pentru diferite tipuri de instructiuni.)

5.2 Blocurile principale


Primul element de care avem nevoie este un loc pentru pastrarea instructiunilor unui program. Pentru a pastra si pentru a furniza instructiuni, atunci cand se da o adresa, va fi folosita o unitate de memorie , care este un elemment de stare, asa ca in figura 5.1:

Fig. 5.1 Memoria de instructiuni

Adresa instructiunii trebuie si ea pastrata intr-un element de stare care se va numi contor de program (PC) :
Fig. 5.2 Program Counter

12

In sfarsit, avem nevoie de un sumator pentru a incrementa PC-ul la adresa instructiunii urmatoare :

Fig. 5.3 Sumator

Cele 8 registre ale procesorului sun pastrate intr-o structura numita fisier de registre.Un fisier de registre este o colectie de registre in care orice registru poate fi scris sau citit, prin specificarea numarului din fisier al registrului.

Fig. 5.4 Fisierul de registre

Fig. 5.5 Schema bloc a fisierului de registre

13

5.3 Proiectarea unitatii aritmetico-logice (ALU)


Asa cum am mai spus, ALU este unul din cele mai importante blocuri, fiind responsabil cu efectuarea operatiilor aritmetice si logice. Simbolul utilizat in mod obisnuit pentru a reprezenta un ALU este cel din figura urmatoare:

Fig. 5.6 ALU - simbol

5.3.1 ALU de 1 bit

Fig. 5.7 ALU de un bit, care excuta SI, SAU si aduna a cu b sau b negat

Schema de mai sus include si o intrare directa care este conectata pentru executia operatiei de setare la mai mic.
14

5.3.2 ALU de 16 biti Avand la dispozitie schema bloc a unui ALU de un bit, un ALU complet de 16 biti (necesar pentru microprocesorul de proiectat) se realizeaza cascadand 16 unitati ALU de 1 bit.

Fig. 5.8 ALU de 16 biti

15

5.4 Metodologia folosirii ceasului


Metodologia ceasului defineste momentele in care datele pot fi scrise si momentele in care datele pot fi citite. Este important sa definim aceste momente, deoarece daca citirea si scrierea se relizeaza in acelasi timp, valoarea citita poate fi vechea valoare , noua valoare sau o combinatie a acestor doua valori. Aceasta comportare este inacceptabila pentru un microprocesor. Schematic, metoda este prezentata in figura urmatoare :

Fig. 5.9 Metodologia folosirii ceasului

Se observa ca durata unui ciclu de ceas este o suma constand din urmatorii timpi : 1. intarzierea latch-urilor in raport cu intrarile registrelor (intarzierea cea mai mare e data de calea combinationala cea mai lunga) 2. timpul de setare a registrelor 3. timpul de crestere/cadere a semnalului de ceas

5.5 Proiectarea caii de date


5.5.1 Introducere O metoda rezonabila pentru inceperea proiectarii unei cai de date consta in examinarea echipamentelor principale necesare pentru executia fiecarei clase de instructiuni. Daca am considera o implementare simpla ce foloseste pentru fiecare instructiune o singura perioada lunga de ceas, calea de date pentru cele trei formate de instructiuni ar arata ca in figurile 5.7, 5.8 si 5.9. Aici fiecare instructiune isi incepe executia pe frontul unui impuls de ceas si isi incheie executia pe frontul urmator.
16

a) Calea de date pentru instructiunile de tip R

Fig. 5.10 Calea de date pentru instructiunile de tip R

b) Calea de date pentru instructiunile de tip I

Fig. 5.11 Calea de date pentru instructiunile de tip I

c) Calea de date pentru instructiunile de tip J

Fig. 5.12 Calea de date pentru instructiunile de tip J

17

5.5.2 Implementarea cu mai multe cicluri Desi este mai usor de inteles, implementarea cu un singur ciclu nu este practica, deoarece este mei lenta decat implementarea care permite diferitelor clase de instructiuni sa utilizeze numere diferite de cicluri de ceas, oricare dintre aceste cicluri putand fi de durata mult mai scurta. Deci, intr-o astfel de implementare, fiecare pas al executiei instructiunii va necesita o peroada de ceas sau, altfel spus, un ciclu masina. Implementarea cu mai multe cicluri permite ca o unitate funcionala sa fie folosita de mai multe ori pe durata executiei unei instructiuni, cuprecizarea ca nu poate fi folosita de doua ori in acelasi ciclu de ceas. Aceasta utilizare multipla reduce cantitatea de hardware necesara si ca urmare se reduce si pretul de cost. Principalele avantaje ale acestei implementari ar fi : 1. Se pot folosi un numar diferit de cicluri pentru fiecare instructiune 2. Aceeasi unitate functionala poate fi folosita de mai multe ori pe durata executiei unei instructiuni O reprezentare abstracta a caii de date pentru implementarea cu mai multe cicluri este ilustrata in figura urmatoare :

Fig. 5.13 Elementele principale ale caii de date cu mai multe cicluri

Se impun urmatoarele observatii : Este utilizata o singura UAL atat pentru instructiuni cat si pentru date Este utilizata o singura unitate de memorie pentru date cat si pentru instructiuni Sunt utilizate registre temporare la iesirile unitatilor functionale majorepentru a memora informatia pana la urmatorul ciclu de ceas. Registrele A si B sunt plasate la cele doua iesiri ale fisierului de registre si vor memora continutul respectiv pe durata unui ciclu de ceas. Registrul ALUout este un registru temporar de la iesirea ALU si va memora pe durata unui ciclu iesirea ALU.
18

Registrul IR pastreaza informatia pe durata executiei intregii instructiuni. Ca urmare, acest registru va folosi pe langa impulsul de ceas si un semnal de control al scrierii in registru. Celelalte registre trebuie sa memoreze informatia doar pe durata unui ciclu de ceas si ca urmare vor fi comandate doar cu impulsul de ceas. Deoarece unitatile functionale sunt folosite in comun pentru mai multe operatii, este necesara adaugarea unor multiplexoare, cat si extinderea multiplexoarelor curente. Astfel calea de date cu mai multe cicluri mai necesita unele completari, pentru a putea retine ramificatiile si salturile.

Fig. 5.14 Completarea caii de date

In concluzie, apar cteva registre (IR, MDR, A, B, UALOut), un multiplexor pentru adresa de memorie, un multiplexor pentru adresa de sus a UAL-ului i extinderea multiplexorului pentru intrarea de jos a UAL-ului ntr-un selector de patru ci. Aceste mici completri permit nlturarea a dou sumatoare i a unei uniti de memorie. Astfel, putem sa spunem ca pe durata unui ciclu de ceas se pot executa urmatoarele operatii : - un acces la memorie - un acces la fisierul de registre (doua citiri si o scriere) - o operatie in UAL

19

5.6 Multiplexarea intre calea de date si cea de adrese


Una din cerintele proiectului este ca magistrala de date si cea de adrese sa fie multiplexate. Acest lucru ar insemna utilizarea unei singure magistrale atat pentru date cat si pentru adrese (cu penalitatea de timp corespunzatoare). Este evident ca pe magistrala comuna va fi trimisa de fiecare data mai intai adresa si apoi datele, deoarece datele nu pot fi scrise sau citite decat de la o adresa specificata. Pentru a realiza acest lucru, avem nevoie de un element de memorare (latch) care sa retina adresa specificata pana la urmatorul ciclu de ceas. Aceeasi problema intervine si pentru date. Cel mai convenabil este sa folosim ca memorator un bistabil de tip D.
D T Fig. 5.15 Bistabil de tip D Q

intrare clk

iesire

Functionarea acestui bistabil este foarte simpla: atunci cand semnalul de clock este activ (1), iesirea copie intrarea (Q = D). Cand semnalul este pe front descrescator (0), iesirea pastreaza vechea valoare Q(t) = Q(t-1).

Fig. 5.16 Completarea pentru multiplexarea intre magistrala de date si cea de adrese

20

Consideram ca semnalul de control al multiplexorului MUX 2 este tot semnalul de ceas. Atunci cand semnalul de ceas este pe 0, este activata intrarea adr a multiplexorului MUX 2, permitandu-se intrarea adresei in Latch1. Cand semnalul de ceas este pe 1, se permite trecerea datei prin Latch2 spre intrarea 1 a MUX2, intrarea care este de altfel si intrarea selectata, deci data se va regasi la iesirea MUX2. Intrarea T a Latch1 va fi pe zero, in bistabil pastrandu-se adresa. Astfel data ajunge la intrarea WriteData in memoria de instructiuni iar adresa este deja cunoscuta.

5.7 Definirea controlului


Unitatea decontrol (Control Unit) este inima microprocesorului. Este cea care asigura extragerea si decodificarea instructiunilor din memorie, care gestioneaza traficul datelor pe magistrale. Unitatea ofera toate semnalele de control necesre pentru executia instructiunilor. Spre deosebire de calea de date cu un singur ciclu de ceas, pentru calea de date cu mai multe cicluri controlul este mai complex deoarece instructiunile se executa intr-o serie de pasi. Ca urmare, controlul trebuie sa specifice atat instructiunile care trebuie realizate in fiecare pas, precum si care este pasul urmator. Pentru implementarea controlului se pot utiliza doua tehnici. Prima tehnica se bazeaza pe teoria automatelor finite si pe reprezentarea grafica a acestora. Cea de-a doua foloseste implementarea structurata a controlului avand la baza executia unui microprogram. Ambele tehnici conduc la implementari folosind ROM-ul sau PLA-uri (arii logice programabile) si ambele metode pot fi automaizate folosind programe de tip CAD.

21

22

6. Bibliografie
1. Calculatoare Numerice 1 (curs) titular: prof. Vasile Gaitan 2. Organizarea si proiectarea calculatoarelor Interfata

hardware/software, David A. Peterson si John L. Hennessy


3. Structured Computer Organization, Tanenbaum, A., 4th ed. Upper Saddle

River, NJ: Prentice Hall, 1999 4. http://enter.ac.utt.ro/Materiale/aca.pdf

23

Cuprins
2. Introducere in arhitectura RISC.........................................................3 3. Caracteristici generale ale unui microprocesor...............................4

24

S-ar putea să vă placă și