Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Proiect
Disciplina: Arhitectura sistemelor de calcul (ASC) Tema:
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.
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 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
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:
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
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
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
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
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:
#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
(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.)
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 :
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.
13
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.
15
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
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.
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
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.
21
22
6. Bibliografie
1. Calculatoare Numerice 1 (curs) titular: prof. Vasile Gaitan 2. Organizarea si proiectarea calculatoarelor Interfata
23
Cuprins
2. Introducere in arhitectura RISC.........................................................3 3. Caracteristici generale ale unui microprocesor...............................4
24