Sıra | DOSYA ADI | Format | Bağlantı |
---|---|---|---|
01. | Datapath Ve Kontrol | ppt | Sunumu İndir |
Transkript
Bölüm: 5İşlemci: Datapath ve KontrolSlide Kaynağı: Patterson & Hennessy COD book website (copyright Morgan Kaufmann)adapted and supplementedÖnemli bir problemin çözümünde, hiçbir detay önemsiz değildir – French Proverb Adam haklı – Hayrettin Can
Biz şimdi bir MIPS komut setinin gerçekleştirilmesini incelemeye hazırız. Komut yapılarını ana hatlarıyla hatırlayalım. Aritmetik-Lojik komutlar: add, sub, and, or, slt Hafıza-tabanlı komutlar: lw, sw Kontrol-Akış komutları: beq, jMIPS’in gerçekleştirilmesiop rs rt offset6 bits 5 bits 5 bits 16 bitsop rs rt rd functshamt6 bits 5 bits 5 bits 5 bits 5 bits 6 bitsR-FormatI-Formatop address6 bits 26 bitsJ-Format
Fetch/execute gerçekleştirme işlemine yüksek seviye ayrıştırmayla bakarsak: Komut adresini okumak için program Counter (PC) kullanılır. Komutun hafızadan alınması ve PC’nin arttırılması. Okunacak registerleri seçmek için için komut yapısındaki alanları kullan. Örneğin transfer komutu (Load, store) sadece 1 registerin okunmasına gerek duyar fakat diğer komutlar 2 reg’in okunmasına gerek duyar. Komut sınıfına bağlı yürütme (execute ) işlemi. Tekrar…….MIPS’in gerçekleştirilmesi: Fetch/Execute ÇevrimiDikkat ediniz ki çoğu komutlar doğrudan icra edilir ve bir sonraki komutun adresi PC+4 ile yazılır. Fakat dallanma veya atlama komutlarında ise ALU dallanılacak yeni komut adresini hesap edebilir. Veya şartsız dallanma komutlarında ise PC+4 ikinci bir toplama ile dallanılacak komutun adresi elde edilir.Komut getirildikten sonra, formatına göre operandlar ilgili reg’lere getirilip işlenir. Veya ana hafıza ya load/store edilebilir.
İşlemcilerde gerçekleştirme stilleri Tek Cycle Herbir komut 1 clock cycle’da icra edilir. Clock en yavaş komutlar için yeterince uzun olmalıdır.; Bu yüzden, Dez avantaj: sistem en yavaş komut kadar hızlıdır. Çoklu-Cycle Çoklu-cycle adımlarında fetch (Alma)/execute(Yürütme) yapılır Her bir clock cycle’da 1 adım icra edilir. Avantajı: Her bir komut ihtiyacı kadar birkaç cycle kullanır. Pipeline Herbir komut çoklu adımlarda yürütülür. Her bir clock cycle’da 1 adım/komut icra edilir. Paralel olarak çoklu komutlar işlenir – assembly line
Donanımda 2 tip fonksiyonel eleman vardır. Veri üzerinde işlem yapan elemanları : (Kombinasyonal elemanlar olarak adlandırılır – Toplayıcılar v.b.) Veri içeren elemanlar: (state veya ardışıl elemanlar olarak adlandırılır. Hafıza elemanları v.b)Functional Elemanlar
Kombinasyonal Elemanlar giriş çıkış fonksiyonları gibi çalışır . örneğin; ALU Kombinasyonal lojik, bir registerden okur veya bir registere veya okuduğu registere yazar. read/write bir cycle’da meydana gelir. – kombinasyonal eleman gelecekte kullanabilmek için veri depolayamazClock cycleStateelement1Combinational logicStateelement2StateelementCombinational logicCombinational logic donanım birimleri
State (Durum) Elemanlar State elemanlar dahili hafızaları içerir. Ör: registers ve hafıza. Bütün state elemanlar makinanın durumunu tanımlar Bunun anlamı nedir? Tekrar açmayı ve kapatmayı düşün. Flipflops ve latches are 1 bitlik state elemanlardır, Eşdeğeri 1 bitlik hafızalardır. Flip-flop veya Latch’in çıkış(ları) daima saklanan bit değerine bağlıdır. Onların durumu 0/1 veya yüksek/düşük veya doğru/yanlış olarak adlandırılır. Bir flip-flop veya latch’in girişi onun durumuna bağlı olarak clock olup olmadığına göre değişebilir.
Set-Reset (SR-) latch (unclocked)QQbarSbar(set)Rbar(reset)n1n2Q_QRSNOR latch
Clock işareti; bir state elemanını (FF’lar barındıran) senkronlamak veya ona yaz/oku yapmayı denetlemek için kullanılır. Genellikle kenar tetiklemeli (Yükselen/Düşen) state elemanları kullanılır. Latch’ler seviye tetiklemelidir. Flip-flops are kenar teteiklemelidir.Senkronize Lojik: Clock girişli FF’lar veya LATCH’lerClock period Rising edgeFalling edge
Durum (Q) sadece clk’nın 1 olduğu zamanda değişebilir. Tek bir data (D) girişi vardır. (SR-latch ile karşılaştırıldığında) Tanımlanmamaış davranışı yoktur.Clock girişli D-latchDCQD-LATCH’in zamanlama diyagramıDQQbarn1n2clkr2r1a1a2clkbarXYDbar
Clock girişli D-flipflop Negatif kenar tetiklemeli FF’dır. 3 tane S-R Mandal’la yapılır.sbarsrqqbarrbarclearclkcbardclkbar
Registerler D-flipflop’ların dizisi ile gerçekleştirilir. Data path’de durum(State) elemanları: Register FileRegister file iki okuma portu ve 1 yazma portuna sahiptir.
Port gerçekleştirme:n-to-1decoderRegister 0Register 1Register n – 1CCDDRegister nCCDDRegister numberWriteRegister data01n – 1nMuxRegister 0Register 1Register n – 1Register nMuxRead data 1Read data 2Read registernumber 1Read registernumber 232 register için oku portları5 bit mux’ların çifti ilegerçekleştirilir. Yazma portu bir decoder kullanılarak gerçekleştirilir. 32 register için 5’e 32’lik decoderdir. Yazma işlemi Clock ile ilişkilidir. (Yükselen veya düşen kenar)ClockClockDATA PATH’de durum(state) elemanları: Register File
Verilog - VHDL Donanım tanımlama dili, Bütün donanımlar Verilog veya VHDL donanım tanımlama dili kullanılarak gerçekleştirilebilir. Detaylı bilgi ve örnekler için Verilog, VHDL slide’larına bakınız
MIPS’in tek Cycle’da gerçekleştirme MIPS komut seti mimarisinin ilk gerçekleştirilmesinde her bir komut için yeterince uzun tek bir clock cycle kullanacağız. Herbir komut yükselen veya düşen clock kenarı ile başlar ve yükselen veya düşen kenar ile sonlanır. Bu yaklaşım pratik değildir. Multicycle işlemeden daha yavaştır.Burada farklı komut sınıfları farklı cycle zamanları alabilir. Herbir komut bir tek cycle gerçekleştirmede en yavaş komut kadar zaman alır. multicycle gerçekleştirmede bir kaç cycle kullanılarak bu problemden kaçınılır. Tek cycle yaklaşımı pratik olmamasına rağmen konuyu anlamak için yararlı ve önemlidir. Note : we shall implement jump at the very end
Datapath: komut Store/Fetch & PC arttırma PCInstructionmemoryInstructionaddressInstructiona. Instruction memory b. Program counterAdd Sumc. AdderFetch ve depolama ve PC’ yi arttırmak için 3 elaman kullanılırDATAPATH
Datapath AnimasyonuInstruction <- MEM[PC]PC <- PC + 4RDMemoryADDRPCInstruction4ADD
Datapath: R-Tipi KomutALU controlRegWriteRegistersWriteregisterReaddata 1Readdata 2Readregister 1Readregister 2WritedataALUresultALUDataDataRegisternumbersa. Registers b. ALUZero555 3InstructionRegistersWriteregisterReaddata 1Readdata 2Readregister 1Readregister 2WritedataALUresultALUZeroRegWriteALU operation3R-type komutları gerçekleştirmek için 2 eleman kullanıldı Datapath
Datapath Animasyonu …add rd, rs, rtR[rd] <- R[rs] + R[rt];5 5 5RD1RD2RN1 RN2 WNWDRegWriteRegister Fileop rs rt rd functshamtOperationALU ZeroInstruction3
Datapath: Load/Store Komutu16 32Signextendb. Sign-extension unitMemReadMemWriteDatamemoryWritedataReaddataa. Data memory unitAddressInstruction16 32RegistersWriteregisterReaddata 1Readdata 2Readregister 1Readregister 2DatamemoryWritedataReaddataWritedataSignextendALUresultZeroALUAddressMemReadMemWriteRegWriteALU operation3load/store komutunu gerçekleştirmek içinİki ek eleman kullanıldıDatapath
Datapath Animasyonu…….op rs rt offset/immediate5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadMemoryADDRMemWrite5lw rt, offset(rs)R[rt] <- MEM[R[rs] + s_extend(offset)];
Datapath Animasyonu……op rs rt offset/immediate5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadMemoryADDRMemWrite5sw rt, offset(rs)MEM[R[rs] + sign_extend(offset)] <- R[rt]
Datapath: Branch Instruction (Dallanma komutları)16 32SignextendZeroALUSumShiftleft 2To branchcontrol logicBranch targetPC + 4 from instruction datapathInstructionAddRegistersWriteregisterReaddata 1Readdata 2Readregister 1Readregister 2WritedataRegWriteALU operation3DatapathKaydırma donanımı gerekli değildir:Basit olarak girişler çıkışlar bağlıdır Herbir kaydırma 2 bit soladır.
Animating the Datapathbeq rs, rt, offsetop rs rt offset/immediate5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALUEXTND16 32ZeroADD<<2PC +4 from instruction datapathif (R[rs] == R[rt]) then PC <- PC+4 + s_extend(offset<<2)
MIPS Veriyolu I: Single-CycleGiriş ya register (R-type) yada komutun alt yarısı R-tip komutlar ve load/store için veriyolu oluşturmak için 2 mux kullanılır Veri ya ALU’dan (R-type)Yada hafızadan (load)
R-tipi komutun çalışmasıadd rd,rs,rt5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction32MUXMUXALUSrcMemtoReg
Load Komutunun Çalışmasılw rt,offset(rs)5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction32MUXMUXALUSrcMemtoReg
Store komutunun Çalışmasısw rt,offset(rs)5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction32MUXMUXALUSrcMemtoReg
MIPS Datapath II: Single-CyclePCInstructionmemoryReadaddressInstruction16 32RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendALUresultZeroDatamemoryAddressWritedataReaddata Mux4AddMuxALURegWriteALU operation3MemReadMemWriteALUSrcMemtoReg komut fetch’i eklemeKomut ve veri okuma aynı clock cycle da farklı komuthafızada meydana gelir.ALU işlemleri ve PC artımı aynı clock cycle’da farklı toplayıcılarda meydana gelir
MIPS DATA PATH III: Single-CyclePCInstructionmemoryReadaddressInstruction16 32Add ALUresultMuxRegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2Shiftleft 24MuxALU operation3RegWriteMemReadMemWritePCSrcALUSrcMemtoRegALUresultZeroALUDatamemoryAddressWritedataReaddata MuxSignextendAdd dallanma yeteneğinin ve diğer mux’un eklenmesiInstruction address is eitherPC+4 or branch target addressHerbir cycleda her iki toplamaiçin exstra ikinci toplayıcıyaihtiyaç vardır.Yeni muxÖnemli not: single-cycle gerçekleştirmede veri komut boyunca depolanamaz. Veri yalnızca kombinasyonal lojik yoluyla taşınırSoru: Memread sinyaline gerçekten ihtiyaç varmıdır. RegWrite’ ı düşünün
DATAPATH: Executing addadd rd, rs, rt5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrc
DATAPATH Executing lwlw rt,offset(rs)5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrc
DATAPATH Executing swsw rt,offset(rs)5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrc
DATAPATH Executing beqbeq r1,r2,offset5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrc
DATA PATH, Kontrol Ana Kontrol biriminin girişleri; Komut kodu formatındaki opcode bitleri (6 bit)’dir. Ana Kontrol birimi aşağıdaki çıkışları üretir. ALU kontrol girişleri ( 2 bit input) Yazma enable (olası olarak, okuma enable ) her bir depolama elemanları için sinyal. Herbir mux için seçme kontrolü
Kontrol BirimleriAna Kontrol Birimi devre şemasıALU Kontrol Bloku
ALU Kontrol ALU kontrol planı: Ana kontrol birimi; ALU kontrol birimi girişine iki bit (ALUop kontrol) gönderir. ALU kontrol birimi girişine ayrıca komutun 6 bitlik funct bitleri de uygulanır. Çıkışta, ALU kontrolu için 3 bitli oluşur. ALU kontrol alanı Fonksiyon 000 and 001 or 010 add 110 sub 111 slt ALU icra etmelidir. load/stores için add (ALUOp 00) Dallanma için sub (ALUOp 01) and, or, add, sub, slt R-type komutlarının biri için, 6 bit funct alanınına bağlıdır. (ALUOp 10)MainControlALUControl2ALUOp6Instructionfunct field3ALU controlinputToALUALUOp generationby main controlRecall from Ch. 4
ALU kontrol bit ayarlarıkomut AluOp komut Funct Alanı İstenen ALU opcode işlemi ALU etkisi girişiLW 00 load word xxxxxx add 010SW 00 store word xxxxxx add 010Branch eq 01 branch eq xxxxxx subtract 110R-type 10 add 100000 add 010R-type 10 subtract 100010 subtract 110R-type 10 AND 100100 and 000R-type 10 OR 100101 or 001R-type 10 set on less 101010 set on less 111ALU kontrol bitleri için doğruluk tablosuALUOp Funct field OperationALUOp1 ALUOp0 F5 F4 F3 F2 F1 F00 0 X X X X X X 0100 1 X X X X X X 1101 X X X 0 0 0 0 0101 X X X 0 0 1 0 1101 X X X 0 1 0 0 0001 X X X 0 1 0 1 0011 X X X 1 0 1 0 111**, eğer X olursa,ozaman satır 2 ile 3-7 arası çatışmaVardır.
Ana kontrol Birimi tasarımı MIPS komut formatları hakkında gözlemler opcode daima 31-26 bitlerindedir. Okunabilen 2 register daima rs (bits 25-21) ve rt (bits 20-16) dir.- load/stores için base register daima rs (bits 25-21) dir. Dallanma ve load/store için 16-bit offset daima 15-0 bitleridir. Load için hedef register 20-16 (rt) bitlerindedir. R-type komutlarda 15-11 (rd) bitleridir. (bunun için mux ile seçmek gereklidir)31-26 25-21 20-16 15-1110-6 5-031-26 25-21 20-16 15-0opcodeopcodersrsrtrt addressrd shamt functR-typeLoad/store or branch
DATA PATH ve kontrol IMemtoRegMemReadMemWriteALUOpALUSrcRegDstPCInstructionmemoryReadaddressInstruction[31– 0]Instruction [20– 16]Instruction [25– 21]AddInstruction [5– 0]RegWrite416 32Instruction [15– 0]0RegistersWriteregisterWritedataWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendALUresultZeroDatamemoryAddress Readdata Mux10Mux10Mux10Mux1Instruction [15– 11]ALUcontrolShiftleft 2PCSrcALUAdd ALUresultMIPS DATAPATH III’e kontrol ekleme (ve özel hedef register için alan seçmek için yeni bir mux): 9 kontrol sinyallerinin fonksiyonları nedir?New multiplexor
Kontrol sinyalleriSignal Name Effect when deasserted (Lojik 0) Effect when asserted (Lojik 1)RegDst yazma registeri için hedef register sayısı yazma registeri için hedef register sayısı rt alanı (bits 20-16) rd alanı (bits 15-11)RegWrite None Write register girişindeki datayı, hedef reg’e yazar.ALUSrc ikinci ALU operandı İkinci ALU operandı is the sign-extended, ikinci register file çıkışından gelir(Read data 2) komutun düşük 16 bitine sign-extended dirPCSrc PC toplayıcının çıkışı tarafından yer değiştirilir. PC Toplatıcının çıkışı tarafından yer değiştirilir. bu PC + 4 ile hesaplanır bu hedef dallanmayla hesaplanır.MemRead None Data memory içeriği giriş adresine göre belirlenir bu giriş ilk ilk Read data çıkışına konurMemWrite None Data memory içeriği giriş adresine göre belirlenir bu giriş Write data ğirişinin değeri tarafından değiştirilir.MemtoReg ALU’dan gelen değeri Write Data memory’den gelen değeri Write data giriş registerine yaz data giriş registerine yaz Yedi kontrol sinyalinin etkileri
Datapath with Control IIPCInstructionmemoryReadaddressInstruction[31– 0]Instruction [20 16]Instruction [25 21]AddInstruction [5 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31 26]416 32Instruction [15 0]00Mux01ControlAdd ALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendMux1ALUresultZeroPCSrcDatamemoryWritedataReaddataMux1Instruction [15 11]ALUcontrolShiftleft 2ALUAddressKontrol birimi ile MIPS Veri yolu: Kontrol girişi 6-bit komut opcode alanıdır.Çıkış 7, 1-bit signal ve 2-bit ALUOp sinyalidir.
Instruction RegDst ALUSrcMemto-RegReg WriteMem ReadMem Write Branch ALUOp1 ALUp0R-format 1 0 0 1 0 0 0 1 0lw 0 1 1 1 1 0 0 0 0sw X 1 X 0 0 1 0 0 0beq X 0 X 0 0 0 1 0 1Komut opcode tabanlı MIPS veriyolu için kontrol sinyalleri hesaplamaPCSrc opcode’dan doğrudan set edilemez:Sıfır test çıkışıGereklidir.PCInstructionmemoryReadaddressInstruction[31– 0]Instruction [20 16]Instruction [25 21]AddInstruction [5 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31 26]416 32Instruction [15 0]00Mux01ControlAdd ALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendMux1ALUresultZeroPCSrcDatamemoryWritedataReaddataMux1Instruction [15 11]ALUcontrolShiftleft 2ALUAddress
Control Signals:R-Type InstructionControl signalsshown in blue10001???Value depends on funct005 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction I32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrcMUX RegDst5rdI[15:11]rtI[20:16]rsI[25:21]immediate/offsetI[15:0]01011010
5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction I32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrcMUX RegDst5rdI[15:11]rtI[20:16]rsI[25:21]immediate/offsetI[15:0]01011010Kontrol sinyalleri: lw komutu0Kontrol sinyalleri mavi renktir.001011101
5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction I32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrcMUX RegDst5rdI[15:11]rtI[20:16]rsI[25:21]immediate/offsetI[15:0]01011010Kontrol sinyalleri: sw komutu0Kontrol sinyalleriMavidir.X0101X010
5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction I32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrcMUX RegDst5rdI[15:11]rtI[20:16]rsI[25:21]immediate/offsetI[15:0]01011010Kontrol Sinyalleri: beq komutuKontrol sinyallerimavidir.X1100X0001 if Zero=1
DATAPATH kontrol: IIIShiftleft 2PCInstructionmemoryReadaddressInstruction[31– 0]DatamemoryReaddataWritedataRegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2Instruction [15– 11]Instruction [20– 16]Instruction [25– 21]AddALUresultZeroInstruction [5– 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchJumpRegDstALUSrcInstruction [31– 26]4MuxInstruction [25– 0] Jump address [31– 0]PC+4 [31– 28]Signextend16 32Instruction [15– 0]1Mux10Mux01Mux01ALUcontrolControlAdd ALUresultMux01 0ALUShiftleft 226 28Address31-26 25-0opcode addressJumpJump’lar için MIPS veri yolu genişletilir: kontrol birimi yeni jump kontrol biti üretir.İlave jump kontrol bitiile yeni muxHedef adresejump oluşturma
DATAPATH: Executing j(j komutunun yürütülmesi)5 516RD1RD2RN1 RN2 WNWDRegWriteRegister FileOperationALU3EXTND16 32ZeroRDWDMemReadDataMemoryADDRMemWrite5Instruction I32MUXALUSrcMemtoRegADD<<2RDInstructionMemoryADDRPC4ADDADDMUXMUXPCSrcMUX RegDst501011010ALUControlControlUnit6 6op I[31:op I[31:26] funct I[5:0]ALUOp2BranchMUX01Jump<<226CONCAT28jmpaddr I[25:0]PC+4[31-28]32
R-type Komutlar: Step 1add $t1, $t2, $t3 (active = bold)PCInstructionmemoryReadaddressInstruction[31– 0]Instruction [20– 16]Instruction [25– 21]AddInstruction [5– 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31– 26]416 32Instruction [15– 0]00Mux01ControlAdd ALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendShiftleft 2Mux1ALUresultZeroDatamemoryWritedataReaddataMux1Instruction [15– 11]ALUcontrolALUAddressFetch ( komutun getirilmesi ) PC’nin içeriğinin arttırılması
R-type Komut: Step 2add $t1, $t2, $t3 (active = bold)PCInstructionmemoryReadaddressInstruction[31– 0]Instruction [20– 16]Instruction [25– 21]AddInstruction [5– 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31– 26]416 32Instruction [15– 0]00Mux01ControlAdd ALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendShiftleft 2Mux1ALUresultZeroDatamemoryWritedataReaddataMux1Instruction [15– 11]ALUcontrolALUAddressRegister file’dan 2 kaynak register oku
R-type komut: Step 3add $t1, $t2, $t3 (active = bold)PCInstructionmemoryReadaddressInstruction[31– 0]Instruction [20 16]Instruction [25 21]AddInstruction [5 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31 26]416 32Instruction [15 0]00Mux01ALUcontrolControlAdd ALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendMux1ALUresultZeroDatamemoryReaddataAddressWritedataMux1Instruction [15 11]ALUShiftleft 2ALU 2 register operandı işler
R-type komut: Step 4add $t1, $t2, $t3 (active = bold)PCInstructionmemoryReadaddressInstruction[31– 0]Instruction [20 16]Instruction [25 21]AddInstruction [5 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31 26]416 32Instruction [15 0]00Mux01ALUcontrolControlShiftleft 2Add ALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendMux1ALUresultZeroDatamemoryWritedataReaddataMux1Instruction [15 11]ALUAddressSonuç registere yazılır.
Single-cycle Gerçekleştirme Notları Adımlar gerçekten ayrı değildir. Tamamen bir clock cycle’da herbir komut tamamlanır. Bir cycle boyunca Datapath’in işletimi kombinasyoneldir. Hiçbir şey bir clock cycle boyunca depolanmaz. Bu yüzden, makine bir cycle başlangıcında stabildir. Ve cycle sonunda makine yeni bir stabil duruma geçer. single-cycle işlemeyi anlamak için çok önemli: bizim Verilogdaki SimpleSingleCycleComputer örneklerine bak.
1. Komutu Fetch et ve PC’ yi arttır.2. Register file’dan base registeri oku: base register ($t2) komutun 25-21 bitleri ile verilir.3. ALU 16 bitlik lower sign-extended ve register file’dan değerlerin toplamını hesaplar4. ALU’dan toplam data memory için adres olarak kullanılır. 5. Hafıza biriminden data register file’a yazılır. Hedef register ($t1) komutun 20-16 bitleriyle verilirLoad komut adımları lw $t1,offset($t2)
Load komutu : lw $t1 offset($t2)PCInstructionmemoryReadaddressInstruction[31– 0]Instruction [15– 11]Instruction [20– 16]Instruction [25– 21]AddInstruction [5– 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31– 26]416 32Instruction [15– 0]00Mux01ALUcontrolControlShiftleft 2Add ALUresultMux01RegistersWriteregisterWritedataReaddata 1Readdata 2Readregister 1Readregister 2SignextendMux1ALUresultZeroDatamemoryWritedataReaddataMux1ALUAddress
1. Komutu Fetch et ve PC’yi arttır.2. Register file’dan iki registeri ($t1 and $t2) oku3. ALU register file’dan veri değerlerini çıkararak icra eder; PC+4’ ün değeri Hedef dallanma adresini vermek için 2 sola kaydırılan komutun sign-extended lower 16 bit (offset)’ eklenir. 4. ALU’dan Zero sonuçları karar vermek için kullanılır PC’de depolamak için sonuçlar toplanır. ( 1 veya 3. adımdan) Branch komut adımları: beq $t1, $t2, offset
Branch komutu : beq $t1, $t2, offsetPCInstructionmemoryReadaddressInstruction[31– 0]Instruction [15– 11]Instruction [20– 16]Instruction [25– 21]AddInstruction [5– 0]MemtoRegALUOpMemWriteRegWriteMemReadBranchRegDstALUSrcInstruction [31– 26]416 32Instruction [15– 0]Shiftleft 20Mux01ALUcontrolControlRegistersWriteregisterWritedataReaddata 1Readregister 1Readregister 2Signextend1ALUresultZeroDatamemoryWritedataReaddataMuxReaddata 2Add ALUresultMux01Mux10ALUAddress
Gerçekleştirme: ALU kontrol Bloğu Operation2Operation1Operation0OperationALUOp1F3F2F1F0F (5– 0)ALUOp0ALUOpALU control blockALU Kontrol logicTruth table for ALU control bitsALUOp Funct field OperationALUOp1 ALUOp0 F5 F4 F3 F2 F1 F00 0 X X X X X X 0100 1 X X X X X X 1101 X X X 0 0 0 0 0101 X X X 0 0 1 0 1101 X X X 0 1 0 0 0001 X X X 0 1 0 1 0011 X X X 1 0 1 0 111*•Eğer X olursa satır-2 ve satır3-7 arası karışıklık olur.
Gerçekleştirme: Ana kontrol bloğuR-format Iw sw beqOp0Op1Op2Op3Op4Op5InputsOutputsRegDstALUSrcMemtoRegRegWriteMemReadMemWriteBranchALUOp1ALUOpOSignal R- Format lw sw beqname Op5 0 1 1 0Op4 0 0 0 0Op3 0 0 1 0Op2 0 0 0 1Op1 0 1 1 0Op0 0 1 1 0RegDst 1 0 x xALUSrc 0 1 1 0MemtoReg 0 1 x xRegWrite 1 1 0 0MemRead 0 1 0 0 MemWrite 0 0 1 0Branch 0 0 0 1ALUOp1 1 0 0 0ALUOP2 0 0 0 1GirişlerÇıkışlarAna kontrol sinyalleri için doğruluk tablosuAna kontrol PLA (programmablelogic array): LA altında yatan prensipHerhangi bir mantıksal gösterimÜrünlerin toplamı olarak yazılabilir.
Farzedin ki fixed-period clock çalışmada; her komut datapath’de bir clock cycle kullanır. CPI = 1 “cycle time” en uzun komutun uzunluğu tarafından belirlenir. Ancak birkaç komut kısa clock cycle’da çalışabilir. Zaman israfı Düşünün Daha komplike komutlara floating point gibi sahip olursak! resources used more than once in the same cycle need to be duplicated Donanım ve chip alan israfıSingle-Cycle Tasarım Problemleri
Örnek:Tek cycle gerçekleştirmede Fixed-period clock , variable-period clock kullanımı Kayan nokta ünitesi eklenmiş bir makine düşünün. Aşağıdaki gibi işlevsel(fonksiyonel) gecikmelerin olduğunu varsayalım: Memory erişimi: 2 ns., ALU and adders: 2 ns., FPU add: 8 ns., FPU multiply: 16 ns., register file access (read or write): 1 ns. multiplexors, control unit, PC accesses, sign extension, wires: gecikme yok. Farzedin ki komutlar aşağıdaki gibi karıştırılmıştır. Yükleme komutu (Load) %31’lik benzer zaman almaktadır. Tüm store’lar 21%’lik benzer zamanda oluşur. R-format komutlar 27% de (Bir periyotluk zamanın %27 si) oluşmakta. Dallanmalar 5% ‘lik zamanda oluşmakta. Şartsız dallanmalar 2% Lik zaman almakta. FP toplama ve çıkarma benzer olarak toplam 7%’lik zamanda oluşmakta. FP çarpma ve bölme benzer olarak toplam 7%’lik bir zaman almakta. (a) Bir sabit periyotlu Clock işareti ile single-cycle gerçekleştirme işlemi (b) Her bir komutun yürütülmesi için yeteri kadar zaman uzunluğundaki değişken Clock periyoduna göre çalışan single-cycle işlemi ( bu tip çalışma gerçekleştirilecek bir uygulama değildir.)için performans karşılaştırması yapınız.
Çözüm Clock period for fixed-period clock = longest instruction time = 20 ns. Average clock period for variable-period clock = 8 31% + 7 21% + 6 27% + 5 5% + 2 2% + 20 7% + 12 7% = 8.1 ns. Bu şekilde, performancevar-period /performancefixed-period = 20/7 = 2.46 Instruction Instr. Register ALU Data Register FPU FPU Total class mem. read oper. mem. write add/ mul/ time sub div ns.Load word 2 1 2 2 1 8Store word 2 1 2 2 7R-format 2 1 2 0 1 6Branch 2 1 2 5Jump 2 2FP mul/div 2 1 1 16 20FP add/sub 2 1 1 8 12