8.8 A Simple Computer Architecture Program Instruction Opcode (Operation code) 2m tane opcode için m bit kullanmak yeterli. Explicitly instruction; hedef registeri açık olarak komutta belirtilir. R1 R2+R3 Implicitly instruction; hedef dolaylı olarak belirtilir; R1 R1+1 (INC R1)
8.8 A Simple Computer Architecture Fields Instruction Format Immediate operand “Jump” ve “branch” ta işaretli sayılar kullanılır! AD=AD(left) || AD(right) 6-bit işaretli binary address offset (± 32 max.) Örn. PC=55, branch adresi 35 olsun. AD=35-55= -20 olmalı. AD=101100 (6-bit gösterim) = (-20) desimal AD=1111111111101100 (16-bit signed extension gösterim) = (-20) desimal
8.8 A Simple Computer Architecture In many computers, the word length is from 32 to 64 bits, and the number of registers is often larger, so the register fields must contain more bits. Recognize the difference between a computer operation and a hardware microoperation.
8.8 A Simple Computer Architecture
8.9 Single Cycle Hardwired Control Fetches and executes an instruction in a single clock cycle Extend Zerofill
8.9 Single Cycle Hardwired Control
8.9 Single Cycle Hardwired Control Jump ve branch instructionlarda; FS=00000 olmalı! Böylece Bus A, ALU’dan geçiyor ve bayraklar (C,Z,V,N) kuruluyor. Bu bayraklara göre branch mümkün hale geliyor.
8.9 Single Cycle Hardwired Control zf: zero fill se: signed extention
8.9 Single Cycle Hardwired Control 83 – (2 + 3) işlemini yaptıralım. R[R3]=248 M[248]=2 M[249]=83 olsun ve sonuç M[250]’ye yazılsın. ; R3=248 LD R1,R3 ; R1=2 ADI R1,R1,3 ; R1=2+3=5 NOT R1,R1 ; R1=R1’ INC R1,R1 ; R1=-5 INC R3,R3 ; R3=249 LD R2,R3 ; R2=83 ADD R2,R2,R1 ; R2=78 INC R3,R3 ; R3=250 ST R3,R2 ; M[250]=78
8.9 Single Cycle Hardwired Control Max clock freq.= 1/17ns = 58.8MHz Single cycle computer Hardwired and Microprogrammed control , they require multiple cycle, can not be implemented
8.10 Multiple-Cycle Hardwired Control
8.10 Multiple-Cycle Hardwired Control Bir instruction birden fazla clock kullanılarak işleneceğinden, bir datanın daha sonraki clocklarda da kullanılabilir kalması için geçici bir registerde saklanması ihtiyacı doğar. Bu nedenle temporary register (R8) kullanılır, ve kullanıcı bu registeri göremez. Buna uygun olarak register file’da değişiklik yapılmıştır. TD, TA ve TB bitleri sırasıyla DR, SA ve SB adres girişlerinin en soluna eklenerek bu register sembolik olarak belirtilmiştir. Örn. TA=0 ise AA=TA||SA=0||SA 8 registerden (R0... R7) birini işaret eder. TA=1 ise AA=TA||SA=1||SA R8’i işaret eder.
8.10 Multiple-Cycle Hardwired Control Yine aynı sebeple instruction’ın da bir kayıtçıda (register) tutulması ihtiyacı doğar. Çünkü program ve data memory aynı fiziksel bellektedir. Bu register IR, yani Instruction registerdir. IR’ye yükleme sadece IL (Instruction load) lojik 1 olduğu zaman gerçekleşmektedir. IL , sadece memory’den instruction fetch edildiği zaman aktif olur! Instruction fetch: “program memory” den PC’nin gösterdiği instruction alınıp, IR’ye yazılması işlemine denir
8.10 Multiple-Cycle Hardwired Control PC: Program Counter Eğer PI=1 ise; PC instruction fetch edildiğinde bir artar. Eğer PL=1 ise; PCPC+se(DR||SB) ile yüklenir. Bu jump veya branch instructionlarda olur. Böylece single cycle computerdeki branch kontrol elimine edilmektedir!!
8.10 Multiple-Cycle Hardwired Control Instruction format ile microinstruction format aynı değil!! Instruction format daha az bit sayısına sahip. DR, SA ve SB direkt olarak kullanılıyor. Geriye kalan 7-bit OPCODE’un en soluna “0” yerleştirilerek 8-bit yapılıyor ve control memory’yi adreslemekte kullanılıyor.
8.10 Multiple-Cycle Hardwired Control Microprogram kontrol “Control Memory” deki instructionlar CAR ile adreslenir. “binary multiplier” deki kontrol ile benzeşiyor ancak biraz daha karmaşık! CAR’ın “increment” veya “load” olması MUX S tarafından seçiliyor. MUX S çıkışı 0 ise CAR CAR+1, değilse MUX C çıkışındaki değer ile yükleniyor. MUX S için 3-bitlik MS girişi var. Örn. MS=000 ise MUX S çıkışı 0 ve INC CAR MS=010 ise MUX S çıkışı C C=1 ise LOAD C=0 ise INC
DATAPATH CONTROL SIGNALS Next Address
SEQUENCE CONTROL SIGNALS Next Address
MICROPROGRAM DESIGN OPCODE 7-bit. (27=128 adet farklı komut olabilir) CAR Address OPCODE 7-bit. (27=128 adet farklı komut olabilir) 1. in IF state: IR M[PC], PC PC+1 2. in EX0 state: CAR 0||IR (soluna “0” eklenerek CAR’a yüklenir. 3. in ADI state: Add immediate. 4. IF state’ine dönüş.
MICROPROGRAM DESIGN
MICROPROGRAM DESIGN
MICROPROGRAM DESIGN Her instruction’ın fetch ve execute edilmesi 3 clock cycle sürüyor Single cycle computerde 1 clock sürüyordu! İşlemler parçalandığı için gecikme süreleri kısaldı ancak eklenen flip flopların (CAR, IR) setup sürelerinin olması toplamda sürenin biraz uzamasına bile neden olabiliyor. ÖYLEYSE NEDEN MULTICYCLE!!? PROGRAM VE DATA İÇİN TEK BİR MEMORY KULLANMAKTAN BAŞKA BİR AVANTAJI YOK MU?
MICROPROGRAM DESIGN Indirect addressing R[DR] M[M[R[SA]]] Aynı işlemi 2 adet LD komutu ile yapabilirdik, ancak 6 clock gerekirdi. Böyle 4 clock gerekiyor.
“Indirect addressing” nedir? ÖRN. R[R4]M[M[R[R0]]] İşlem sonunda R[R4]=0x00FC olur.
Right-Shift Multiple Instruction SRM1’de R8 yüklenirken ALU’dan geçtiği için aynı zamanda Z (zero flag) da kurulur! R8 (yani, IR[2:0] sıfır ise işlem biter ve sıradaki komuta geçilir (IF). Farklı ise R[SA] bir sağa kaydırılıp R[DR]’ye yüklenir ve R8 bir azaltılıp test edilir. Bu işlemler R8 sıfır oluncaya kadar tekrarlanır. Bu instruction’ı single cycle computer yapısında yapmak mümkün değil. s defa kaydırmak için 2s+4 clock gerekli. S tane “rl” komutu için 3s gerekli. Öyleyse; (3s)-(2s+4)= s-4 clock az kullanılıyor. (s>4 ise tek bir komut kullanmak karlı!!) bit kaydırma sayısı 15, 31 gibi büyük değerlere ulaşınca avantaj ortaya çıkıyor Jump ve bracnh komutları içinde aynı yöntem geçerli!!
HARDWIRED ALTERNATIVE CAR’ı IR ile yüklemiyoruz. İlk 6 instruction 2 clock cycle’da bitiyor. Son instruction “LRI” 3 clock.
HARDWIRED ALTERNATIVE Counter resetlenince çıkışı “00” oluyor ve IF state seçiliyor. Bu basit bir örnek. Sadece 7 instruction ve 3 state var. Counter birer artarak state seçiyor. Sadece 7 instruction olduğu için IR’nin 9, 10 ve 11 bitleri decode ediliyor!! Control logic, decoder çıkışlarına göre kontrol sinyallerini üretiyor.
HARDWIRED ALTERNATIVE IF state kodu “00”; öyleyse counter resetlenince IF state’ine gidiliyor! İlk 6 instructionda EX0’dan sonra , son instructionda ise EX1’den sonra IF’ye geçiliyor. Öyleyse; CR=EX0.LRI+EX1 RW, yani register write, sadece ST’de kullanılmıyor. Öyleyse; RW=EX0.ST Benzer şekilde diğer kontrol çıkışları da belirlenebilir.
MICROPROGRAMMED CONTROL Mikroprogramlı kontrolün (Microprogrammed control) ün bir avantajı; hardware yapısının bir defa oluşturulduktan sonra, başka hiçbir ek bağlantı ve elemana ihtiyaç duymadan, mikrokomutlarla (microinstruction) istenilen program komutlarının (instruction) elde edilebilmesidir. Sadece kontrol memory’nin değiştirilmesi ile işlemler farklılaştırılabilmektedir. İkinci avantajı, çok kompleks komutları gerçekleştiebilmek için daha büyük control belleği kullanmak yeterli iken, hardwired kontrolde , donanım oldukça karmaşıklaşabilir ve maliyetler oldukça artar. Öte yandan eğer komutlar çok basit ise mikroprogram kullanmak lüks olabilir, hardwired kontrol daha ucuz olabilir.
Decode and operand fetch PIPELINED CONTROL Pipeline kontrolde; komutları yütürmek için gerekli işlemler belirli aşamalara ayrılarak, zamanı bunlar arasında paylaştırmak esastır. Bu işlem bir fabrikanın üretim hattına benzetilebilir. Burada her kişi işin belirli bir aşamasını yapar ve sonunda aynı ürün daha kısa bir sürede üretilebilir. Decode and operand fetch Execute Instruction Fetch Writeback
Pipelined Control 5ns 5ns 5ns 5ns Toplam 17ns 58.8MHz Toplam 20ns 17ns/komut Toplam 20ns 200MHz 5ns/komut
Pipelined Control Gerekli süre 10 clock, yani 10x5ns=50 ns Örnek: 1 LDI R1,1 2 LDI R2,2 3 LDI R3,3 4 LDI R4,4 5 LDI R5,5 6 LDI R6,6 7 LDI R7,7 Gerekli süre 10 clock, yani 10x5ns=50 ns Single cycle computer 7 clock, 7x17ns=119ns 119/50=2.4 kat hızlı. Filling ve emptying için geçen zamanlarda dikkate alınırsa 3.4 kat hızlanıyor.