370 likes | 928 Views
CPU Tasarım – 2 Single – Cycle CPU Veriyolu Tasarımı. Processor. Input. Control. Memory. Datapath. Output. Giriş. Bilgisayarı oluşturan beş klasik parça. CPI. Komut Sayısı. Saat zamanı. İşlemci performansı. İşlemcinin performansı şu kriterlere göre belirlenir : İşlencek komut sayısı
E N D
Processor Input Control Memory Datapath Output Giriş • Bilgisayarı oluşturan beş klasik parça
CPI Komut Sayısı Saat zamanı İşlemci performansı • İşlemcinin performansı şu kriterlere göre belirlenir: • İşlencek komut sayısı • Saat frekansı • Bir komut için gerekli saat darbesi miktarı • İşlemci (veri yolu ve kontrol) tasarımı ile; • Saat frekansı • Bir komut için gerekli saat darbesi miktarı Belirlenir.
Single-cycle veri yolu • Bütün komutlar bir saat periyodunda işlenir (yükselen kenardan yükselen kenara) • Avantajı: İşlemcileri öğrenmek için iyi bir yol. • Dezavantajı: Donanımın boşa kullanılması, düşük saat periyodu.
D Q clk Single cycle veriyolu: Varsayımar İşlemciler senkron yapılar kullanırlar (saat sinyaline bağlı) • Bütün durum elemanları yükselen kenar tetiklemeli flip flop gibi varsayılır. • Saat sinyali tüm flip floplara aynı anda ulaşır.
CLK D Q D Q Kare tetiklemeli D flip floplar • Yükselen saat kenarında D deki değer örneklenir. • Q saat sinyalinin geri kalanında örneklenmiş değeri bulundurur.
Adım adım işlemci tasarımı 1. Komut seti analiz edillir => veri yolu gereksinimleri • Her komut register transferi şeklinde açılır • Veri yolu ISA register lar için depolama elemanı içermelidir • Veri yolu gerekli tüm register transfer işlemlerini desteklemelidir 2. Veri yolu elemanları seçilir ve saat metodu belirlenir 3. Gereklilikleri yerine getirecek şekilde veri yolu elemanları bir araya getirilir 4. Her komutun gerçeklenmesi ve çalışması analiz edilerek register transferlerine etki eden kontrol sinyalleri çıkartılır 5. Çıkarılan sinyallere göre kontrol devresi kurulur
31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 0 immediate op rs rt 6 bits 5 bits 5 bits 16 bits 31 26 0 op target address 6 bits 26 bits MIPS komut formatları • 3 adet komut formatı bulunmaktadır: • R-type • I-type • J-type • Formatlardaki alanlar: • op: komutun hangi operasyonu yapacağını bellirtir • rs, rt, rd: hedef ve kaynak register ları belirtir • shamt: kaydırma miktarını belirtir • funct: “op” alanındaki operasyonların alt operasyonlarını gösterir • address / immediate: adres değeri yada sabit değer bulundurur • target address: jump komutlarının hedef adresini belirtir
31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits 31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits 31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Birkaç MIPS komutunun incelenmesi • ADD/SUB • addU rd, rs, rt • subU rd, rs, rt • OR Immediate: • ori rt, rs, imm16 • LOAD/STORE Word • lw rt, rs, imm16 • sw rt, rs, imm16 • BRANCH • beq rs, rt, imm16
opcode rs rt rd shamt funct Instruction Fetch Instruction Decode Operand Fetch Execute Result Store MIPS komutlarının işlenmesi - Sıradaki komut memory den okunur. - Sıradaki komut için hazırlanılır - Komutun içindeki alanlar çözülerek anlamlandırılır - Register içerisindeki değerler alınır (rs, rt) - Operasyon gerçekleştirilir (add, sub, or, lw, sw, beq) - Sonuç register a(rt/rd) yada hafızaya yazılır , gerkiyorsa PCmodifiye edilir
Register transferleri • RTL bize komutun anlamını gösterir • Hepsi aşağıdaki gibi komutun fetch(hafızadan okunması) edilmesiyle başlıyor. • op | rs | rt | rd | shamt | funct = MEM[ PC ] • op | rs | rt | Imm16 = MEM[ PC ] • inst Register Transfers • ADDU R[rd] <– R[rs] + R[rt]; PC <– PC + 4 • SUBU R[rd] <– R[rs] – R[rt]; PC <– PC + 4 • ORi R[rt] <– R[rs] | zero_ext(Imm16); PC <– PC + 4 • LOAD R[rt] <– MEM[ R[rs] + sign_ext(Imm16)]; PC <– PC + 4 • STORE MEM[ R[rs] + sign_ext(Imm16) ] <– R[rt]; PC <– PC + 4 • BEQif ( R[rs] == R[rt] ) then PC <– PC + 4 +[sign_ext(Imm16) || 00] else PC <– PC + 4
Step 1: Komut setinin gereklilikleri • Hafıza • komutlar& veriler • Registers (32 x 32) • RS i oku • RT yi oku • RT yada RD ye yaz • PC • Extender • ALU işlemleri • PC + 4 yada PC +“extended immediate”hesaplanması
Step 2: Veri yolu elemanları • Combinational Elements • Storage Elements • Clocking methodology
Combinational Logic Elements (Basic Building Blocks) CarryIn A 32 • Adder • MUX • ALU Sum Adder 32 B Carry 32 Select A 32 Y MUX 32 B 32 OP A 32 Result ALU 32 B 32
Write Enable Data In Data Out N N Clk Depolama Elemanı: Register (Basic Building Block) • Register • Bir D Flip Flop dan farklı yanları; • N-bit giriş ve çıkış • Write Enable girişi • Write Enable: • Negated (0): Data Out değişmez • Asserted (1): Data Out Data In i gösterir
RW RA RB Write Enable 5 5 5 busA busW 32 32 32-bit Registers 32 busB Clk 32 Depolama Elemanı : Register File • Register File 32 register içerir: • İki tane 32 bitlik çıkış: busA ve busB • Bir tane 32 bitlik giriş: busW • Register seçimi: • RA (numara) busA ya konulacak register ı seçer (veri) • RB (numara) busB ya konulacak register ı seçer (veri) • RW (numara) Write enable 1 olduğunda busW (veri) nin içeriğinin yazılacağı register ı seçer • Clock input (CLK) • CLK sadece yazma işleminde bir faktördür. • Yapılar okuma işleminde combinational logic gibi davranır. • RA yada RB geçerliyse => busA yada busB ulaşım zamanından sonra geçerlidir.
Write Enable Address Data In DataOut 32 32 Clk Depolama Elemanı: Idealized Memory • Memory (ideal yapısı) • Bir giriş bus ı: Data In • Birçıkış bus ı: Data Out • Memory alanı seçimi: • Address, Data Out a konulacak olan verinin yerini seçer • Write Enable = 1: address, Data In bus dan gelen verinin nereye yazılacağını seçer • Clock input (CLK) • CLK sadece yazma işleminde bir faktördür. • Yapılar okuma işleminde combinational logic gibi davranır: • Address geçerli => Data Out “access time.” dan sonra geçerlidir.
Clk Setup Hold Setup Hold Don’t Care . . . . . . . . . . . . Clocking Methodology • Bütün depolama elemanları aynı saat köşe darbesinde tetiklenir • Flip-flop lar (FF) ve combinational logic ler fiziksel yapılar olduklarından bazı gecikmelere maruz kalırlar: • Kapılar: input un değişiminden output un değişimine kadarki gecikme • Sinyallerin FF ler arasındaki transferi için, FF lardaki sinyaller ilgili köşe tetiklemesi gelmeden istikrarlı hale gelmeli. • “Critical path” (tasarımdaki en uzun yol) saat periyodunun belirlenmesini sağlar.
Step 3: Veri yolu gereksinimlerinin karşılanması • Register Transfer Gereksinimleri Veri yolunungerçeklenmesi • Komutun alınması • Operantların okunması veişlenmesi • Sonucun ilgli alana yazılması
Clk PC Next Address Logic Address Instruction Word Instruction Memory 32 3a: Instruction Fetch Unitesine bakış • Yaygın RTL operasyonları • Fetch the Instruction: mem[PC] • PC == Program Counter, sonraki komutu gösterir • “Program counter” ın yenilenmesi: • Sıralı Code: PC <- PC + 4 • Branch ve Jump: PC <- “sabit bir değer”
Instr Mem 32 Data 31 26 21 16 11 6 0 op rs rt rd shamt funct Addr 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 0 32 immediate op rs rt 6 bits 5 bits 5 bits 16 bits 31 26 0 op target address 6 bits 26 bits CLK Address PC PC + 8 PC + 4 Data IMem[PC] IMem[PC + 8] IMem[PC + 4] Instruction Fetch Niçin +4 , +1 değil?
31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Rd Rs Rt ALUctr RegWr 5 5 5 busA Rw Ra Rb busW 32 Result 32 32-bit Registers ALU 32 32 busB Clk 32 3b: Add & Subtract • R[rd] <- R[rs] op R[rt] Örnek: addU rd, rs, rt • Ra, Rb, and Rw komutların rs, rt ve rd alanlarından geliyor • ALUctr ve RegWr: control logic tarafından komut çözüldükten sonra üretiliyorlar
op RegFile Instr Mem 5 Ra 32 32 5 Rb 5 Addr Data Rw 32 32 ALU WE 32 32 Yükselen kenardan sonra verinin ilerleyişi PC Adder D Q 4 Control Logic
Clk Clk-to-Q Old Value New Value PC Instruction Memory Access Time Rs, Rt, Rd, Op, Func Old Value New Value Delay through Control Logic ALUctr Old Value New Value RegWr Old Value New Value Register File Access Time busA, B Old Value New Value ALU Delay busW Old Value New Value Rd Rs Rt Register Write Occurs Here ALUctr RegWr 5 5 5 busA Rw Ra Rb busW 32 Result 32 32-bit Registers ALU 32 32 busB Clk 32 Register-Register Timing: One complete cycle
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Rd Rt RegDst Mux Rt? Rs ALUctr RegWr 5 5 5 busA Rw Ra Rb busW 32 Result 32 32-bit Registers ALU 32 32 busB Clk 32 Mux ZeroExt imm16 32 16 ALUSrc 3c: Immediate operasyonu • R[rt] <- R[rs] op ZeroExt[imm16]
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Rd Rt RegDst Mux Rt? Rs ALUctr RegWr 5 5 5 busA W_Src Rw Ra Rb busW 32 32 32-bit Registers ALU 32 32 busB Clk MemWr 32 Mux Mux WrEn Adr Data In 32 ?? Data Memory 32 Extender imm16 32 16 Clk ALUSrc ExtOp 3d: Load Operasyonu • R[rt] <- Mem[R[rs] + SignExt[imm16]] E.g.: lw rt, rs, imm16
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Rd Rt ALUctr MemWr W_Src RegDst Mux Rs Rt RegWr 5 5 5 busA Rw Ra Rb busW 32 32 32-bit Registers ALU 32 32 busB Clk 32 Mux Mux WrEn Adr Data In 32 32 Data Memory Extender imm16 32 16 Clk ALUSrc ExtOp 3e: Store Operasyonu • Mem[ R[rs] + SignExt[imm16] ] <- R[rt] E.g.: sw rt, rs, imm16
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits 3f: Branch komutu • beq rs, rt, imm16 • mem[PC] memory den komutu oku • Equal <- R[rs] == R[rt] branch durumunu hesapla • if (Equal) sonraki komut adresini hesapla • PC <- PC + 4 + ( SignExt(imm16) x 4 ) • else • PC <- PC + 4
31 26 21 16 0 op rs rt immediate 6 bits 5 bits 5 bits 16 bits Inst Address Cond nPC_sel Rs Rt 4 RegWr 5 5 5 busA 32 Adder Rw Ra Rb 00 busW 32 32 32-bit Registers Equal? Mux PC busB Clk 32 Adder imm16 PC Ext Clk Branch operasyonu için veriyolu • beq rs, rt, imm16Eşitlik sinyalini duruma göre veri yolu üretiyor
Inst Memory Instruction<31:0> <11:15> <0:15> <21:25> <16:20> Adr Rs Rt Rd Imm16 RegDst nPC_sel ALUctr MemWr MemtoReg Equal Rt Rd 0 1 Rs Rt 4 RegWr 5 5 5 Adder busA Rw Ra Rb = busW 00 32 32 32-bit Registers Mux ALU 0 32 busB 32 0 PC 32 Mux Mux Adder Clk 32 WrEn Adr 1 1 Data In Data Memory Extender imm16 PC Ext 32 Clk 16 Clk ExtOp ALUSrc Tamamı : A Single Cycle Datapath imm16
Ideal Instruction Memory Instruction Rd Rs Rt Imm 5 5 5 16 Instruction Address A Data Address 32 Rw Ra Rb 32 Ideal Data Memory 32 32 32-bit Registers ALU PC Next Address Data In B Clk Clk 32 Clk Critical Path • Register file ve ideal memory: • CLK sadece yazma işleminde bir faktördür. • Yapılar okuma işleminde combinational logic gibi davranır: • Address geçerli => Data Out “access time.” dan sonra geçerlidir. Critical Path (Load Operasyonu) = PC’s Clk-to-Q + Instruction Memory’s Access Time + Register File’s Access Time + ALU to Perform a 32-bit Add + Data Memory Access Time + Setup Time for Register File Write + Clock Skew
Control Ideal Instruction Memory Control Signals Conditions Instruction Rd Rs Rt 5 5 5 Instruction Address A Data Address Data Out 32 Rw Ra Rb 32 Ideal Data Memory 32 32 32-bit Registers ALU PC Next Address Data In B Clk Clk 32 Clk Datapath İmplementasyon
Summary • 5 steps to design a processor • Komut seti analiz edillir => veri yolu gereksinimleri 2. Veri yolu elemanları seçilir ve saat metodu belirlenir 3. Gereklilikleri yerine getirecek şekilde veri yolu elemanları bir araya getirilir 4. Her komutun gerçeklenmesi ve çalışması analiz edilerek register transferlerine etki eden kontrol sinyalleri çıkartılır 5. Çıkarılan sinyallere göre kontrol devresi kurulur
Summary • MIPS in sağladığı kolaylıklar • Tüm komutlar aynı boyuttadır • Kaynak registerları hep aynı yerde bulunur • Sabit değerler hep aynı boyutta ve aynı yerde bulunur • Operasyonlar her zaman register lar ve sabitler üzerinden yapılır • Single cycle datapath => CPI=1, CCT => uzun • Sonraki sunum : Control devresinin gerçeklenmesi