andreony
[admin]
 Din: bucharest
Inregistrat: acum 20 ani
Postari: 1062
|
|
Proiectarea unui procesor care efectueaza o instructiune in mai multe cicluri de ceas
Se considera procesorul DLX in varianta cu doua memorii: pentru Instructiuni (MI) si pentru Date (MD). Instructiunile se efectueaza in mai multe cicluri de ceas. O analiza a a derularii in timp a instructiunilor va evidentia 5 faze posibile: - Citeste instructiunea (Instruction Fetch – IF) - Decodifica instructiunea/Citeste registrele generale (Instruction Decode – ID) - Executa instructiunea/Calculeaza adresa (Instruction Execute – EXE) - Memoreaza rezultatul in Memoria de date (Store Memory – MEM) - Scrie rezultatul in registrul general (Writwe back - WB) In scopul derularii instructiunilor in mai multe perioade de ceas, au fost introduse o serie de registre temporare, care nu fac parte din arhitectura si care nu sunt vizibile pentru programator. Registrele temporare introduse sunt urmatoarele: - NPC (Next Program Counter) pentru stocarea valorii urmatoare a Contorului Programului - A, B si Imm – registre pentru stocarea operanzilor cititi din Registrele Generale si a operandului imediat dupa ce a fost prelucrat in circuitul de extindere EXT - ALUout – registru pentru stocarea rezultatului obtinut in Unitatea Aritmetica Logica - Cond – registru de un bit pentru stocarea rezultatului compararii cu 0 a continutului lui A - LMD – registru in care se stocheaza data citita din Memoria de Date Dupa cum se va vedea in derularea unora dintre instructiuni fazele MEM sau WB pot lipsi.
Etapele/Fazele derularii instructiunilor: 1. Citire Instructiune. (IF) IR <- MI[PC]; NPC <- PC + 4 2. Decodificare Instructiune/ Citire Registre Generale (ID) A <- RG[IR6..10]; B <- RG[IR10..15]; Imm <- ((IR16)16 ## IR16...31) 3. Executie/Calcul Adresa Efectiva. (EX) In functie de codul operatiei UAL executa una dintre urmatoarele 4 operatii: 3.1. Calcul Adresa Efectiva: UALies <- A + Imm 3.2. Executie Instructiune R-R: UALies <- A op B 3.3. Executie Instructiune R-I: UALies <- A op Imm 3.4. Ramificare: UALies <- NPC + Imm; Cond <- (A op 0) op constituie un operator relational, de exemplu “= =â€, pentru instructiunea BEQZ. Arhitectura “citeste/memoreazaâ€, pentru DLX permite combinarea operatiilor de executie a instructiunii si de calcul al adresei efective intr-un singur ciclu de ceas. 4. Accesul la Memoria de Date/Terminarea Ciclului de Ramificatie (MEM) In acest ciclul sunt active Incarcarile, Stocariile si Ramificarile. 4.1. Incarcari/Stocari – Accese la memorie LMD <- MD[UALies] sau MD[UALies] <- B 4.2. Ramificare if(cond) PC<- UALies else PC <- NPC 5. Scrie rezultatul (WB). 5.1. Instructiuni UAL: R-R RG[IR16..20] <- UALies 5.2. Instructiuni UAL: R-I RG[IR11..15] <- UALies 5.3. Instructiune Incarca: RG[IR11..15] <- LMD
Valoarea calculata in cadrul fiecarui ciclu este stocata la sfarsitul acestuia intr-un dispozitiv de memorare (memorie, registru general, PC, registre temporare: LMD, Imm, A, B, IR, NPC, ALUout, Cond) pentru a fi utilizata in ciclul urmator al instructiunii curente sau in cadrul instructiunii urmatoare. Registrele temporare pastreaza valorile intre ciclurile de ceas ale unei instructiuni, in timp ce alte elemente de memorare, care sunt parti vizibile ale starii masinii, pastreaza valorile intre instructiunile succesive. Se poate observa ca PC este actualizat in cadrul ciclului MEM, in timp ce Registrul General destinatie este actualizat pe durata ciclului WB. In aceasta implementare instructiunea de ramificare necesita 4 cicluri, iar celelalte instructiuni se executa in 5 cicluri. Daca procentul de aparitii ale instructiunii de ramificare este 12% se va obtine CPI = 4,88. Aceasta implementare nu este optimala nici sub aspectul performantei, nici sub aspectul cantitatii de hardware folosit. CPI poate fi redus in continuare prin terminarea instructiunilor UAL in ciclul MEM, intrucat ele sunt inactive in acest ciclu. Instructiunile UAL au o pondere de 44%, ceea ce va conduce la un CPI = 4,44 In continuare, incercarile de reducere a CPI vor conduce la aparitia mai multor activitati in cadrul fiecarui ciclu, ceea ce va conduce la cresterea perioadei ceasului. se poate realiza un compromis intre CPI si perioada ceasului..
Se pot efectua, de asemenea, si unele reduceri de hardware: - cele doua UAL-uri se pot reduce la una singura, intrucat nu sunt active in acelasi ciclu - se poate utiliza o singura memorie pentru instructiuni si pentru date. - Proiectarea unui procesor se poate realiza in mai multe moduri: - Bottom-up: - se asambleaza componentele in cadrul unei tehnologii date pentru a stabili nizarea/temporizarea critica - Top-down - se specifica comportamentul componentelor pe baza cerintelor furnizate la nivel ridicat - Rafinare iterativa: - se elaboreaza o solutie partiala, care se extinde si se imbunatateste
Reprezentarea abstracta a procesorului care opereaza intr-un singur ciclu de ceas Se prezinta ca un automat secvential cu un numar finit de stari, starea fiind furnizata de catre PC Duratele derularii diferitelor instructiuni in implementarea procesorului, care opereaza intr-un singur ciclu de ceas - Ciclul instructiunii este mare - Toate instructiunile se vor derula in acelsi interval de timp ca si cea mai lenta - Memoria reala prezinta mai multe probleme decat memoria ideala. Timpul de Acces al Memoriei - Tehnologia si capacitatea determina timpul de acces: memoriile de capacitate mica au timp mic de acces, memoriile de capacitate mare au timp mare de acces Comparatie intre fisierele/tablourile de registre generale si memorii Reducerea duratei ciclului: - se sectioneaza graful de dependenta combinational si se insereaza registre/latch-uri - se efectueaza activitate dintr-un ciclu lung in doua cicluri mai scurte Limitarile principale ale procesorului care opereaza intr-un singur ciclu de ceas Sectionarea Unitatii de Executie avand CPI = 1 - Se introduc registre intre cei mai mici pasi Exemplu de Unitate de executie care opereaza in mai multe cicluri de ceas Care este “drumul critic�
Proiectarea Procesorului Pas cu Pas (reluare):
1. ISA => Transferurile Logice intre Registre (RTL) 2. Componentele Unitatii de Executie 3. RTL + Componente => Unitatea de Executie 4. RTL + Componente => Transferuri intre Registre fizice 5. Transferuri intre Registre fizice => Comanda Pasul 4. Tipul R (add,sub,…) Pasul 4. Tipul I (andI, orI,…) Pasul 4. Incarca (Load) Pasul 4. Memoreaza(Store) Pasul 4. Ramificare (Branch) O reprezentarea alternativa a Unitatii de Executie
Se efectueaza urmatoarele reduceri de hardware: - o singura memorie - un singur sumator Modelul pentru comanda: - Starea specifica punctele de comanda pentru Transferul intre Registre - Transferul apare in momentul parasirii starii (pe acelasi front negativ) Intrari (conditii) Iesiri (spre punctele de control) Pasul 4. Specificatiile comenzii pentru procesorul care opereaza in mai multe cicluri de ceas Comanda conventionala. Automatul cu Numar Finit de Stari Pasul 5: Unitatea de Executie + Diagrama de Stare => Unitatea de Comanda - Translateaza Transferurile intre Registre in Puncte de Comanda - Asigneaza Starile - Construieste Unitatea de Comanda Asignarea Starilor Specificarea detaliata a comenzii Evaluarea Performantei - Care este CPI mediu? - Diagrama de stari furnizeaza CPI pentru fiecare tip de instructiune - Sarcina de lucru (workload) furnizeaza frecventa pentru fiecare tip Proiectarea Unitatii de Comanda - Diagramele de Stare definesc Unitatea de Comanda pentru un set de Instructiuni ale Procesorului si sunt in cea mai mare masura structurate; - Se utilizeaza aceasta structura pentru a construi un microsecventiator simplu - Controlul se reduce la programarea acestui dispozitiv extrem de simplu Microprogramare Exemplu: Contor – Jump Diagrama de Stari (Contor – Jump) Microsecventiatorul Specificatiile Controlului microprogramat Maparea in ROM Exemplu: Controlul Memoriei Controlul are in vedere o memorie reala (non-ideala) Diagrama de Stari – Comanda Reala Comanda Timp – Stare - Decodificare locala si comanda la fiecare etaj
Aspecte de baza privind Comanda - Comanda poate fi proiectata folosind una dintre reprezentarile initiale - Alegerea controlului secventei si a modului in care este reprezentata logica se pot efectua independent Comanda poate fi implementata cu una dintre metodele date, folosind o tehnica de logica structurata Sumar - Dezavantajele Procesorului care Opereaza intr-un Singur Ciclu - Durata mare a ciclului - Durata ciclului este mult prea mare pentru cea mai mare parte a instructiunilor, cu exceptia instructiunii Incarca - Procesorul care opereaza in mai multe Cicluri de Ceas - Se sparg instructiunile in pasi mai mici - Se executa fiecare pas (in locul intregii instructiuni) intr-un ciclu - Se partitioneaza Unitatea de Executie in segmente de dimensiuni egale pentru a minimiza durata ciclului - Se accepta circa 10 niveluri logice intre registre/latch-uri - Se urmareste aceeasi metoda, in 5 pasi, pentru proiectarea procesorului “real†- Comanda este specificata printr-o diagrama finita de stari - Diagramele de stari specializate se “transpun†usor intr-un microsecventiator - Campuri simple “increment & branch†- Campuri de comahda a Unitatii de Executie - Proiectarea Comenzii se reduce la Microprogramare - Comanda este mult mai complicata in cazurile urmatoare: - Set Complex de Instructiuni - Unitati de executie cu restrictii (Vezi anexa) - Set de Instructiuni Simplu si o Unitate de Executie puternica => Comanda Simpla - Se poate incerca simplificarea hardware-lui - In loc de a urmari cresterea de viteza => mai multe instructiuni simultan ANEXA Unitate de Executie in Mai multe Cicluri - In fiecare ciclu de ceas, fiecare Magistrala poate fi utilizata pentru transferul de la o singura sursa - μ-instructiunea poate contine campurile B-Bus si W-Bus Microarhitectura cu doua magistrale. Comentarii Ce se poate spune despre urmatoarele situatii: • O singura magistrala? • Un singur sumator? • Registre Generale cu un singur port?
_______________________________________ ------ eVoLuTiOn ------
|
|