從4004到core i7:處理器的進(jìn)化史(3)-4-第一次加速
現在加入流水線(xiàn)。為了將每個(gè)環(huán)節分割開(kāi)來(lái),我們需要在環(huán)節之間加入寄存器以隔離相鄰的環(huán)節,獲得獨立的輸入、輸出。不妨假設在相鄰環(huán)節之間插入只一個(gè)寄存器。其具有自己的時(shí)間約束t_c,q(寄存器從輸入到輸出的傳輸延時(shí))和t_su(建立時(shí)間,這常常和具體的電路結構有關(guān))。為了保證正確性,需要有:
本文引用地址:http://dyxdggzs.com/article/233547.htm
由于我們將整個(gè)電路分割成了很多個(gè)很小的部分,因此max(t_pd)一般要遠遠小于t_pd,logic,也就是說(shuō),我們可以大大提升時(shí)鐘頻率,這與前面的敘述是一致的。
然而上面的t_c,q和t_su卻給我們提了一個(gè)醒:
主頻的提升并非沒(méi)有代價(jià),它實(shí)際上是以一條指令完整執行的時(shí)間(latency)的延長(cháng)(它現在需要通過(guò)很多級寄存器了)來(lái)?yè)Q取吞吐量(throughput,即單位時(shí)間內流經(jīng)某一級的指令數量)的提升。
在指令流連續時(shí),一切都很美好;但是一旦指令流中斷(最典型的當然是branch),引入pipeline的額外開(kāi)銷(xiāo)就顯著(zhù)地體現出來(lái)了。這里我再自己寫(xiě)一個(gè)公式:
T_sum=T_latency+N*T_min,pipe
其中T_sum是執行一段很長(cháng)很長(cháng)的指令流的總用時(shí)(第一條IF到最后一條WB),N是指令數。這樣,我們得到了一種衡量性能的方法:
t_avg=T_latency/N+T_min,pipe
不難想象,當N很小時(shí),很長(cháng)的pipleline帶來(lái)的巨大的latency將會(huì )讓平均指令執行時(shí)間t_avg變得很難看。
事實(shí)上還有一個(gè)限制主頻瘋狂提升的因素。記得嗎,那就是我前面說(shuō)過(guò)的功耗!
正因為以上的兩個(gè)因素,intel雖然曾經(jīng)將netburst的流水線(xiàn)做到了28級,頻率提高到3.8GHz,甚至差一點(diǎn)就發(fā)布了4GHz的Pentium 4,卻最終冷靜了下來(lái),不再通過(guò)越來(lái)越深的pipeline不顧一切地提升時(shí)鐘頻率了。
作為參照,core架構的流水線(xiàn)僅14級。
pipeline并不是萬(wàn)靈藥,我們需要另外的加速方法。
說(shuō)完了pipeline,你應該就能看懂這張386的圖了:

Pipeline is everywhere!!

評論