pipelining în verilog

A

amitgvlsijune06

Guest
cum de a aduce pipelining în verilog de codificare a unei architecture.please special, să-mi daţi câteva exemplu.

 
Cel mai simplu este de conducte prin utilizarea latches.Consideraţi un ckt cu combinational blocuri conectate la ele .. de exemplu, de o / P de la 1 bloc merge ca i / p la următorul şi aşa mai on.till ce ajunge la o ultima / p scena ..Pentru a conductei acest lucru, pur şi simplu am pricepe de date între fiecare etapă comună şi de a folosi un ceas pentru aceste latches.Aceasta este cea mai simplă de conducte.

În procesorului context, pipelining mijloace de duplicat de bază de unităţi,
de exemplu, dacă, ID, EX unitate.Dacă you'r stadiul de punere în aplicare a 5 conducte, apoi u duplica aceste blocuri de 5 ori.

Ce am spus aici este doar de baza ..există şi alte consideraţii care urmează să fie luate de îngrijire, atunci când pipelining.

 
pls elabora un pic mai ... cu somecoding exemple.am înţeles ce spune Yu r

 
Puteţi avea independent bloc de cod pentru,
să zicem 5 etape de ur procesor conducte ...... Când U da un ceas comună pentru toate aceste unităţi de producţie şi, atunci când o unitate este conectat la următoarele unităţi care creează automat ... .. o conductă de la fiecare unitate de procesare a datelor de la unitatea de precedent în următorul ciclu de ceas.

 
în curent continuu, u căpuşă afla unele lucruri interesante pe pipelining ...
thr r trei comenzi legate de retiming!!
optimize_timing
pipeline_register
register_balance
i hav la luk în doc pentru comenzi corect ..
u hav separate doc în vândute pentru retiming!!trece prin ea
Shiv

 
Să spunem că au o bază 5 etape de conducte DACĂ ID EX MEM BM:

Acum,
să spunem că au două nr.în instrucţiuni care trebuie să fie adăugate ADAUGA 05,06 (aceasta este doar de exemplu, unul dintre acestea trebuie sa fie un registru).Acum, haideţi să uit la ceas:
opcode pentru ADD = AB (să zicem), astfel de instrucţiuni va arăta AB 05 06,
să spun putem descărca toate cele trei, în acelaşi timp, din memorie

Ceas 1: IF
AB 05 06 sunt descărcat din memorie.de date este latched şi trimis la cea de-a doua etapă a conductei
mostre de cod:
mereu @ (posedge sys_clk)
opcode <= AB; (n registrele utilizate)
data1 <= 05; (m registrele utilizate)
data2 <= 06; (m registrele utilizate)Ceas 2: ID
aici ştim că instrn este ADD pentru a ne trimite la ALU care este cea de-a treia etapă
mostre de cod:

mereu @ (posedge sys_clk)
ALU_op <= op_code; (decodare are loc aici = unele combinational logica n regs)
ALU_data1 <= data1; (m regs mai mult)
ALU_data2 <= data2; (m regs mai mult)

Ceas 3: EX
Aici, datele se adaugă în ALU.Acum,
să înţeleagă că aici a datelor (05 06) a fost disponibil în prima etapă în sine (ceasul 1)
În ciuda faptul că a trebuit să treacă printr-o primele 2 etape, astfel încât ambele opcode şi datele sunt availbale la ceas în timpul ALU 3.
Cu alte cuvinte, aceste date trece prin conducte 2 etape (= suplimentare flops / registrele)

Acum,
să spunem că este necesar de iesire din ALU în etapa a 5 (poate un precedent de instruire are nevoie de acest lucru).Deci, datele pot fi trimise direct la etapa a 5.
Nu-i nevoie să treacă printr-o etapa 4 & 5.Acest lucru este cunoscut sub numele de expediere în conducte.Pentru detalii, se referă la Computer Architecture: hardware software abordare de hennessey şi Patterson.
Acest lucru a fost explicat foarte bine în această carte.

Practic fiecare etapă de conducte este pur şi simplu de iesire din receptiv etapă separate printr-un chix.

HTH,
B

 

Welcome to EDABoard.com

Sponsor

Back
Top