Sıra | DOSYA ADI | Format | Bağlantı |
---|---|---|---|
01. | Pi̇peli̇ne (boru Hatti) İşlemi Ile Performansın Geliştirilmesi | ppt | Sunumu İndir |
Transkript
PİPELİNE (BORU HATTI) İşlemi ile Performansın Geliştirilmesi
Paralel İşleme ve PİPELİNE Aynı zamanda, birden fazla veya çok sayıda işlemin yapılabilmesi bilgisayar sisteminin hızını (Throuhput) arttırır. Paralel işlemede ise aynı anda birden fazla komut icra edilir. Örneğin, bir zaman diliminde bir komut ALU’da yürütülürken (execute), aynı zaman diliminde daha sonraki komut ise bellekten okunabilir. Bu işlem tek işlemcili paralel çalışmaya örnektir. Paralel çalışmaya diğer örnek , birden fazla işlemcisi bulunan sistemlerdir. Paralel işleme aşağıdaki başlıklarda incelenebilir. 1- PİPELİNE (Boru Hattı) İşlemleri 2-VEKTÖR İŞLEMLERİ 3-DİZİ İŞLEMCiLERİPipeline bir yürütme tekniği olup, artmetik alt işlemlerde veya bir komutun fazlarının (evrelerinin) işlenmesi sırasında üstüste gelmesidir. Vektör işlemleri büyük boyutlu vektörel veya matris işlemlerinin yapılması içindir. Dizi İşlemcileri ise büyük çaplı diziler üzerinde işlem yaparlar.
Pipelining Bir işe başladıktan sonra en kısa sürede bitir.!! Zaman kaybetme!Time76 PM 8 9 10 11 12 1 2 AMABCDTime76 PM 8 9 10 11 12 1 2 AMABCDTaskorderTaskorderFarz etki her bir görev ( yıkama-kurutma- katlama- dolaba yerleştirme) 30 dakikadır. Ve ayrı görevler için ayrı donanımlar kullanılıyorsa, farklı görevler aynı zamanda üstüste çakışabilir. PipelinedNot pipelined
PİPELİNE İŞLEMLERİNİN ANLAŞILMASI Pipeline işlemi birtakım işlemlerin topluluğudur ve boru hattını oluşturan her bir kesimde (segmentte) herbir farklı işin farklı alt işlemleri aynı zamanda gerçekleşir. Bir kesimde elde edilen sonuç aynı iş için sonraki kesimde kullanılmak üzere saklanır.Her bir kesimde icra edilecek alt işlemler şekilde verilmiştir. 5 Registerden herbiri, her clock cyce’lında yeni veriler ile yüklenir.Reg’lerin içeriklerinin değişimi
Aynı biçimde alt işlemlere parçalanabilen ve aynı karışıkılğa sahip her işlem PİPELİNE olarak işlenebilir. Herbir alt işlem segment(kesimde ) yapılır. Bir önceki işlemde elde edilen sonucun bir sonraki işlemde kullanılabilmesi için Reg’lere ihtiyaç vardır. Aşağıdaki durum 4 kesimli bir PİPELiNE işlemidir.PİPELİNE davranışı uzay-zaman diyagramı ile gösterilebilir. 4 kesimli bir PİPELİNE işlemi ile 6 tane görevin icra edilmesi aşağıdaki şemada verilmiştir.
PİPELİNE işlemenin hızı (Kazancımız ne?)n: Görev Sayısı (Bir assemler programdaki işlenecek komut sayısı diyebiliriz.)PİPELİNE çalışmayan bir makine için;tn: Clock cycle (her bir görevi bitirmek için gerekli zaman)t1: n tane görevi tamamlamak için gerekli harcanacak zaman. → t1 = n * tnPİPELİNE bir makine için. (k kesimli (durumlu))tp: Clock cycle (Herbir alt işlemin tamamlanması için gerekli zaman)tk: n adet görevin başarılması için gerekli zaman→ tk = (k + n - 1) * tp Hızlanma (Speedup) Sk: Speedup→ Sk = t1 / tk = n*tn / (k + n - 1)*tpn görev sayısı arttıkça (k + n -1) terimi yaklaşık n olur. Buna göre aşağıdaki bağıntı ortaya çıkar.Sk= tn / tp Eğer; pipeline ve pipeline olmayan bilgisayarlarda bir görevin tamamlanması için geçen zaman eşit ise, Bu durumda; pipeline toplam hızlandırması k (kesim sayısı) kadar olabilir.
Örnek:4-kesimli pipeline’da, bir alt işlemin her bir kesimde işlenebilmesi için gerekli zaman; tp = 20nS olsun. İcra edilecek görev sayısı 100 olsun. Sk hızlanma değerini hesaplayınız.Çözüm: Pipeline olmayan bir sistemde, tekbir görev için harcanacak zaman 20*4 = 80nSTüm görevin icra edilmesi için harcanacak zaman: 100*20*4 =8000 ns. Pipeline makine için toplam süre ; (k + n - 1)*tp =(4+100 -1)*20=2060 ns Buna göre; Sk = 8000 / 2060 = 3.88Elde edilir.Önemli not: Bütün alt işlemlerin icra sürelerinin aynı olduğunu kabul ediyoruz.
PİPELİNE İşlemenin 2 temel uygulaması vardır. 1- Aritmetik işlemlerde PİPELİNE 2-Komut Yürütmede PİPELİNE
Aritmetik İşlemlerde PİPELİNEPİPELİNE aritmetik birimleri, FP işlemler için ve çarpma işlemleri için önemli bir hızlandırıcı yapıdır.Floating-point Toplama[1] Exponentlerin karşılaştırılması[2] Mantisanın hizalanması[3] Mantisaların toplanması/Çıkarılması[4] Sonuç Normalizasyonu
Örnek:4 kesim için harcanan zamanlar: t1=60ns, t2=70ns,t3=100ns, t4=80ns , fiziksel gecikmeler 10ns olsun. Buna göre; pipeline’sız bir makinada 1 toplama işlemi için: 60+70+100+80+10 = 320nsAritmetik işlem için 4 kesimli pipeline ‘da ise herbir kesim de hrcanan süre farklı olduğundan en kötü durum olarak pipeline clock cycel’ını 100ns alarak tp = 100+10 =110 ns elde ederiz. Buna göre; Sk= tn / tp = 320 / 110 = 2.9
Komut Yürütme için Pipeline Single-Cycle Komut Yürütme: PlanlamaInstructionfetchReg ALU DataaccessReg8 nsInstructionfetchReg ALU DataaccessReg8 nsInstructionfetch 8 nsTimelw $1, 100($0)lw $2, 200($0)lw $3, 300($0)2 4 6 8 10 12 14 16 182 4 6 8 10 12 14...Programexecutionorder(in instructions)InstructionfetchReg ALUDataaccessRegTimelw $1, 100($0)lw $2, 200($0)lw $3, 300($0)2 nsInstructionfetchReg ALUDataaccessReg2 nsInstructionfetchReg ALUDataaccessReg2 ns 2 ns 2 ns 2 ns 2 nsProgramexecutionorder(in instructions)Single-cyclePipelinedFarzedin ki memorye erişim ve ALU işlemleri 2 ns ; register erişimi 1 ns.Buna göre, single cycle clock 8 ns’dir. Pipelined clock cycle ise 2 ns.
Pipelining: Unutma Pipeline işlemi tek bir görev (veya komut işlemesi ) için harcanacak zamanı (latency) azaltmaz fakat görevin bütünü (bir programın sıralı komutları v.b) için harcanan zamanı azaltır (Verilen sabit bir zamanda yapılan iş miktarını –throughput- arttırır). Pipeline hızı en uzun durum ile sınırlıdır. potential hızlandırıcı= Boru durumları sayısıdır (kesim sayısı). Dengesiz boru durumları hızı azaltır (her kesim için farklı süreler). Pipeline sürecinde herhangi bir fazda boş kalmak pipeline’ı yavaşlatır. En verimli pipeline işlemi, komutların parçalanmasıyla oluşan alt işlem sürelerinin (fetch, decode v.b) eşit sürelerde işlenmesi ile olur.
Örnek Problem Problem: Çamaşır yıkama örneği için aşağıdaki tabloyu doldurmak isteyelim.1. Her bir durumun uzunluğu(stage lengths) 30, 30, 30 30 dak. olsun.2. Durumların uzunluğu (stage lengths) , 20, 20, 60, 20 dak. olsun. Pipeline’ı hızlandırmak için bir formül ortaya çıkaralım?Person Unpipelined Pipeline 1 Ratio unpipelined Pipeline 2 Ratio unpiplelined finish time finish time to pipeline 1 finish time to pipeline 2 1 120 d. 120 d. 120/120 = 1 120 d. 120/120 = 1 2 2x120=240d 120+30=150d 240/150 = 1.6 180 d 240/180 = 1.33 3 4 n n x 120/(120+((n-1)x30)
Dört kesimli (Segmentli) Komut İçin PipelineDört aşamaya (faz – Kesim-segment) bölünmüş komutlar için kesimler ;FI: Komutu getirDA: Komutu çöz, etkin adresi hesaplaFO: Veriyi getirEX: Komutu yürütNot: komut ve data hafızalarına ayrı ayrı erişildiğini düşününüz.Dallanma komutu olmadığı sürece, hiçbir kesim boş geçilmez. Farklı işlemler yapar. Ancak 3. komutun dallanma olduğu durumu inceleyelim. Neler olur ve neden olur? Niye 5.ve 6. adımlarda işlem yapılmaz?Dallanma komutunun işleyip dallanılacak adres ortaya çıkıncaya kadar bir sonraki komut ile ilgili sadece Fetch işlemi yapılabilir. 5.6. adımlarda işlem yapılmaz.
MIPS’te PİPELİNE MIPS için Pipeline işlem neden kolaydır? Bütün komutlar benzer uzunluktadır. Tüm komutlar için fetch ve decode durumları benzer şekilde işlenir. Yalnızca birkaç komut formatları vardır. Basit bir şekilde, Komutların decodlanması ve tek durumda yapılması mümkün hale gelir. Memory işlemleri sadece load/store komutlarında oluşur.Böylece memory erişimi tam olarak bir sonraki duruma ertelenmiş olabilir Operandlar (İşlenenler) memory’de dizili sıralıdır. Bir data transfer komutu yalnızca bir memory’e erişim durumuna ihtiyaç duyar.
MIPS’te PipelineNeler zorlaştırır?Structural hazards (Yapısal tehlikeler): Pipeline işleminde, farklı komutlarda , farklı durumlarda aynı donanım kaynaklarının kullanılması durumu oluşabilir (Kaynak Çatışması).Control hazards (Kontrol tehlikeleri): Bir önceki dallanma komutunun sonucuna bağlı olarak, izleyen komutu mevcut pipeline içine alma sorunu (Dallanma zorluğu).Data hazards (Data tehlikeleri): Pipeline’daki bir komutun, aynı pipelin’daki önceki komutun hesapladığı datayı kullanması gerektiğinde (Veri Beklentisi).Biz, pipeLine’lı datapath’ı inclemeden önce yukarıda sıralanan olası tehlikeleri tek tek incelemeliyiz.
Structural Hazards (Yapısal Tehlikeler) Structural hazard : Pipeline işleminde aynı clock cyclında bütün komutların eşzamanlı işlemesi için gereken donanımın yetersizliği. Örnek: Varsayınız ki, komut ve data hafızası tek olan, yani tekbir veriyolu kullanan, bir yapıda pipeline işlemi yapılsın. O zaman 1. ve 4. lw komutları arasında bir structural hazard oluşablilir. Korkmayın MIPS PİPELİNE’ı destekler şekilde dizayn edilmiştir. Yapısal tehlikelerden kolayca kaçınılır.2 4 6 8 10 12 14InstructionfetchReg ALUDataaccessRegTimelw $1, 100($0)lw $2, 200($0)lw $3, 300($0)2 nsInstructionfetchReg ALUDataaccessReg2 nsInstructionfetchReg ALUDataaccessReg2 ns 2 ns 2 ns 2 ns 2 nsProgramexecutionorder(in instructions)PipelinedInstructionfetchReg ALUDataaccessReg2 nslw $4, 400($0)Hazard if single memory
Control Hazards Control hazard (Kontrol Tehlikesi): PİPELİNE’in yürütülmesinde bir önceki komutun sonucuna göre karar vermek gerekebilir. Bu problem genellikle şartlı ve şartsız dallanma komutlarının işlenmesi durumunda çok önemlidir. Çözüm 1 Stall the pipeline (Pipeline’ı geciktirme)InstructionfetchReg ALUDataaccessRegTimebeq $1, $2, 40add $4, $5, $6lw $3, 300($0)4 nsInstructionfetchReg ALUDataaccessReg2nsInstructionfetchReg ALUDataaccessReg2ns2 4 6 8 10 12 14 16Programexecutionorder(in instructions)Pipeline stall (Pipeline gecikmesi)bubbleNote that branch outcome iscomputed in ID stage withadded hardware (later…)
Control Hazards Çözüm 2 Predict branch outcome (dallanma sonucunun önceden tahmin edilmesi veya dallanmanın olmayacağının tahmini)InstructionfetchReg ALUDataaccessRegTimebeq $1, $2, 40add $4, $5, $6lw $3, 300($0)InstructionfetchReg ALUDataaccessReg2 nsInstructionfetchReg ALUDataaccessReg2 nsProgramexecutionorder(in instructions)InstructionfetchReg ALUDataaccessRegTimebeq $1, $2, 40add $4, $5 ,$6or $7, $8, $9InstructionfetchReg ALUDataaccessReg2 4 6 8 10 12 142 4 6 8 10 12 14InstructionfetchReg ALUDataaccessReg2 ns4 nsbubble bubble bubble bubble bubbleProgramexecutionorder(in instructions)Tahmin başarısıTahmin hatası: lw’ü geri al (=flush)
Control Hazards (Kontrol Tehlikesi) Çözüm 3: Gecikmiş dallanma (Delayed branch) :Derleyici , dallanmaları yeniden düzenleyerek, zamanında pipeline içine olmalarını sağlar. Bu yöntemde derleyici dallanma komutundan önceki ve sonraki komutları analiz ederek geciktireceği komutların önüne faydalı komutlar yazarak program akışını yeniden düzenler. Yani dallanma komutuna sıra gelmeden önündeki komutları, akışı bozmamak şartıyla gecikme adımlarına alıp bu esnada dallanma komutunuda diğer kesimlerde işlemeye devam eder. Böylece dallanmanın gecikmesi önlenmiş olur.InstructionfetchReg ALUDataaccessRegTimebeq $1, $2, 40add $4, $5, $6lw $3, 300($0)InstructionfetchReg ALUDataaccessReg2 nsInstructionfetchReg ALUDataaccessReg2 ns2 4 6 8 1 0 12 142 ns(d elayed branch slot)Programexecutionorder(in instructions)Delayed branch beq is followed by add that isindependent of branch outcome
Gecikmiş Dallanmaya Örnek:5 komutluk bir program olsun. Komutlar sırayla;1- Hafızadan R1’e yükle2-R2’yi arttır.3-R3 e R4’ü topla4-R5’i R6’dan çıkar5-X adresine dallanAşağıda derleyicinin yapabileceği 2 gerçekleştirme verilmiştir.İşlem yok komutu kullanılarakKomutları tekrar sıralayarak
Data Hazards (Veri Tehlikeleri) Data hazard : Bir sonraki komut, yürütmesi bitmemiş bir önceki komutun datasına ihtiyaç duyabilir. Çözüm : Mümkünse datayı ilerlet.…Time2 4 6 8 10add $s0, $t0, $t1 IF ID WBEX MEMadd $s0, $t0, $t1sub $t2, $s0, $t3Programexecutionorder(in instructions)IF ID WBEXIF ID MEMEXTime2 4 6 8 10MEMWBKomutun Pipeline diyagramı:shade indicates use – left=write, right=readİlerletme yoksa – mavi çizgi –Veri zamanda geri gitmek durumunda. Yani 2.komut 6,8 arasında bekleyecek.;İlerletme varsa– kırmızı çizgi – Veri, zamanında hazır edilmiş. 2.komut 6,8 süresinde işlem yapar.
Data Hazards Datayı ilerletmeninde yetmeyeceği durumlar olabilir. Örneğin, R-tipi bir komut yükleme komutunu takip ediyorsa, yüklenen değeri kullanacaksa – load-use data hazard’ı olarak bilinir.Time2 4 6 8 10 12 14lw $s0, 20($t1)sub $t2, $s0, $t3Programexecutionorder(in instructions)IF ID WBMEMEXIF ID WBMEMEXTime2 4 6 8 10 12 14lw $s0, 20($t1)sub $t2, $s0, $t3Programexecutionorder(in instructions)IF ID WBMEMEXIF ID WBMEMEXbubble bubble bubble bubble bubbleBir kesim(stage) gecikmesiyle, ilerletilen data sub komutunda kullanılabilir. Bir Durma (gecikme) olmadan ,alt komuta girdi sağlamak mümkün değildir. NİYE?
PİPELİNE gecikmesinden (Stall) kaçınmak için kodlamayı yeniden düzenleme.(Software Solution) Example:lw $t0, 0($t1)lw $t2, 4($t1)sw $t2, 0($t1)sw $t0, 4($t1) Reordered code:lw $t0, 0($t1)lw $t2, 4($t1)sw $t0, 4($t1)sw $t2, 0($t1)Data hazardInterchanged
Pipeline çalışan Datapath Şimdi bir pipeline datapath yapısını açıklayabiliriz. İlk önce bir komutun tamamlanmasındaki 5 adımı hatırlayalım. 1. Instruction Fetch & PC Increment (IF)2. Instruction Decode and Register Read (ID)3. Execution or calculate address (EX)4. Memory access (MEM)5. Write result into register (WB) Hatırlatma: single-cycle işlemci için 5 adımın hepsi birden single clock cycle’ında yapılır. Herbir adım için atanmış bir donanıma (fonsiyonel yapıya) ihtiyaç vardır. Biz single cyle datapath donanımını değiştirmeden, bir komutun işlenmesini birden fazla cycle’da gerçekleşecek şekilde parçalasaydık neler oluşurdu? What happens if we break the execution into multiple cycles, but keep the extra hardware?
Hatırlatma - Single-Cycle Datapath “Steps”5 516RD1RD2RN1 RN2 WNWDRegister File ALUEXTND16 32RDWDDataMemoryADDR5Instruction I32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX32IFInstruction FetchIDInstruction DecodeEXExecute/ Address Calc.MEMMemory AccessWBWrite BackZero
Pipelined Datapath – Temel Fikirler Extra donanımları korumak şartıyla, bir yürütme işlemini bir çok cycle’a bölersek ne olur? What happens if we break the execution into multiple cycles, but keep the extra hardware? Cevap: Her bir clok çevriminde yeni bir komutu işlemeye başlayabiliriz. We may be able to start executing a new instruction at each clock cycle - pipelining İşte bu Pipeline işlemidir. Fakat; bu cycle’lar arasındaki süreçte (segment-Kesim) datayı tutmak için extra registerlara ihtiyaç vardır. Bunlar pipeline register’larıdır. Önemli not: Pipeline yürütmede herbir kesimde(segmentte) elde edilen sonuç bir sonraki kesime aktarılabilir. Aynı kesimde farklı komutlar için eş zamanlı olarak farklı datalar ile farklı işlemler yapılabilir. Dolayısıyla her kesim için bir pipeline register kullanılmalıdır.
Pipelined DatapathIF/IDPipeline registers5 516RD1RD2RN1 RN2 WNWDRegister File ALUEXTND16 32RDWDDataMemoryADDR5Instruction I32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX32ID/EX EX/MEM MEM/WBZero64 bits97 bits 64 bits128 bits(datayı saklamak için yeterince genişliktedirler)
Pipelined DatapathIF/IDPipeline registers5 516RD1RD2RN1 RN2 WNWDRegister File ALUEXTND16 32RDWDDataMemoryADDR5Instruction I32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX32ID/EX EX/MEM MEM/WBZero64 bits97 bits 64 bits128 bits(datayı saklamak için yeterince genişliktedirler)Sadece soldan sağa doğru akan veri durumunda tehlikeler oluşabilir? neden?
Datapath’de hatalar5 516RD1RD2RN1 RN2 WNWDRegister File ALUEXTND16 32RDWDDataMemoryADDR5Instruction I32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX32Hedef reg’e yazılma süreci, sonraki bir komutun başka bir işlem fazından sonraya denk gelebilir.IF/ID ID/EX EX/MEM MEM/WB
Düzeltilmiş DATAPATH5RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555EX/MEM MEM/WBZeroID/EXIF/ID64 bits 133 bits102 bits 69 bitsHedef Reg’in adresi (5 bitlik) ID/EX, EX/MEM ve MEM/WB reg’lerinede yazılır. Şimdi bu reg’lerin genişlikleri 5 bit artmıştır.
Pipeline Örnekleri Aşağıdaki komut dizisini gözönünde bulundur. lw $t0, 10($t1) sw $t3, 20($t4) add $t5, $t6, $t7 sub $t8, $t9, $t10
Single-Clock-Cycle Diagram:Clock Cycle 1LW5RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZero
5RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZeroSingle-Clock-Cycle Diagram: Clock Cycle 2LWSW
5RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZeroSingle-Clock-Cycle Diagram: Clock Cycle 3LWSWADD
5RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZeroSingle-Clock-Cycle Diagram: Clock Cycle 4LWSWADDSUB
Single-Clock-Cycle Diagram: Clock Cycle 55RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZeroLWSWADDSUB
Single-Clock-Cycle Diagram: Clock Cycle 65RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZeroSWADDSUB
Single-Clock-Cycle Diagram: Clock Cycle 75RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZeroADDSUB
Single-Clock-Cycle Diagram: Clock Cycle 85RD1RD2RN1RN2WNWDRegisterFileALUEXTND16 32RDWDDataMemoryADDR32MUX<<2RDInstructionMemoryADDRPC4ADDADDMUX555IF/ID ID/EX EX/MEM MEM/WBZeroSUB
Alternative View – Multiple-Clock-Cycle DiagramIM REG ALU DM REGlw $t0, 10($t1)sw $t3, 20($t4)add $t5, $t6, $t7CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7IM REG ALU DM REGIM REG ALU DM REGsub $t8, $t9, $t10 IM REG ALU DM REGCC 8Time axis (Clock Cycle)
Not: Bir R-tipi komutunun yürütülmesi sürecinde; Multicycle ve pipeline gerçekleştirmeler arasında önemli fark: R tipi bir komutta, registere write-back işlemi 5. pipeline kesimindedir ( last write-back segmentindedir). Oysa multicycle gerçekleştirmede ise bu işlem 4. durumda gerçekleşir. Niyen? Reg.file’a yazarken yapısal tehlikelerden dolayı olabilir. Tekrar etmeye değer: Boru hattı ve multicycle uygulamalar arasındaki temel fark, 5 durumu biribirinden ayrıştırmak için pipeline register yerleştirilmesidir. İdeal Pipeline (Duraksama-gecikme yosa) için CPI =1 ‘dir. Niye?
Simple Example: Comparing Performance Compare performance for single-cycle, multicycle, and pipelined datapaths using the gcc instruction mix assume 2 ns for memory access, 2 ns for ALU operation, 1 ns for register read or write assume gcc instruction mix 23% loads, 13% stores, 19% branches, 2% jumps, 43% ALU for pipelined execution assume 50% of the loads are followed immediately by an instruction that uses the result of the load 25% of branches are mispredicted branch delay on misprediction is 1 clock cycle jumps always incur 1 clock cycle delay so their average time is 2 clock cycles
Simple Example: Comparing Performance Single-cycle (p. 373): average instruction time 8 ns Multicycle (p. 397): average instruction time 8.04 ns Pipelined: loads use 1 cc (clock cycle) when no load-use dependency and 2 cc when there is dependency – given 50% of loads are followed by dependency the average cc per load is 1.5 stores use 1 cc each branches use 1 cc when predicted correctly and 2 cc when not – given 25% misprediction average cc per branch is 1.25 jumps use 2 cc each ALU instructions use 1 cc each therefore, average CPI is1.5 23% + 1 13% + 1.25 19% + 2 2% + 1 43% = 1.18 therefore, average instruction time is 1.18 2 = 2.36 ns
Vektör İşlemleriBirçok yazılım uygulaması ( Görüntü işleme, insan genetiği, Sismik veri analizi v.b), büyük sayı dizileri üzerinde çok büyük sayıda aritmetik işlem yapmayı gerektirir. Bu sayılar çoğu zaman Floating Point sayı düzlemindeki tek boyutlu veya çok boyutlu diziler şeklinde toplanmışlardır. . Sıradan bilgisayarlar bu çalışmaları çok uzun sürede sonlandırabilir. Sayılan işlemlerin yapılabilmesi için iyi kaliteli ( vektör ve paralel işleme özelliği olan) bilgisayarlara gerek vardır.Vektör: Tek Boyutlu veri dizisidir.Satır veya sütün vektörleri şeklinde ifade edilebilirler. V = [V1 V2 V3……….Vn] . Elemanları V olan bir satır vektörü V(I) şeklinde I indisi ile gösterilir ve bir hafızada dizi şeklinde saklanır.Bir vektör olmayan işlemci ile vektör işlemci arasındaki farkı anlamak için aşağıdaki döngüyü göz önüne alalım.
Vektör işlemci için komut formatıİç çarpım hesabı için PİPELiNE