原创 《大話處理器》連載——微架構(1) 順溜的2級流水線

        2009年央視有部熱播大劇:《我的兄弟叫順溜》。劇中順溜是一個神槍手,裏面有一個場景,當鬼子來襲擊部隊時,順溜向團長建議,給自己配2個人裝彈,自己專門負責打槍。   《我的兄弟叫順溜》劇照           從直觀的

原创 《大話處理器》連載——微架構(7) 流水線上的冒險——數據冒險

(2) 數據冒險         流水線使原先有先後順序的指令同時處理,當出現某些指令的組合時,可能會導致指令使用了錯誤的數據。 看下面這個例子: 寄存器訪問的數據冒險           add R1,R2,R3將寄存器R2和R3的和

原创 《大話處理器》連載——微架構(6) 流水線上的冒險——免不了磕磕絆絆

         人生路上總是磕磕絆絆,流水線也一樣。流水線中每個節拍硬件被充分利用,這隻存在於理想的烏托邦中,現實總會出現這樣或那樣的問題,讓原本順暢的流水線出現停頓,斷斷續續。這些導致流水線出現停頓的因素稱爲流水線冒險(Hazard)

原创 《大話處理器》連載—PC機結構探祕(6)顯示設備——臉面(1)

        女生們常說男人是視覺動物,並對此表示不滿,不過大家看《非誠勿擾》時就會發現,當男嘉賓容貌一般時,女生們的問題通常比較犀利,說話的語氣也不那麼注意,而要是有一個很帥的男嘉賓出現時,女生們則都改作溫柔狀,說話的語氣、提出的問題

原创 《大話處理器》連載——微架構(16) Buffer的作用——去耦合

       在順序執行內核中,指令依次流經各個流水線單元,不需要進行緩存,而爲了要能亂序執行,首先需要一個Buffer來緩存還沒有執行的指令,然後在這個Buffer中去調度指令的執行順序。亂序執行內核的基本模型如下:   亂序執行基本

原创 《大話處理器》連載——微架構(5) DSP更深的流水線

        不同的處理器會有不同的流水線劃分。在TI C6000 DSP中,所有指令的執行都可分爲Fetch(取指)、Decode(譯碼)、Execute (執行)3個大的步驟,每個大的步驟又可以細分爲一些小的步驟:   C6000

原创 《大話處理器》連載—PC機結構探祕(7)顯示設備——臉面(2)

 (4) 多屏 多屏電腦        一般的電腦只有一個屏,不過這種蘋果的新概念電腦有3個屏。中間的屏幕玩遊戲,左邊的屏幕聊天,右邊的屏幕看電影,真是絕配!  (5) 卷軸顯示屏 左邊爲伸展開的電腦,右邊爲卷好的電腦        

原创 《大話處理器》連載——微架構(15) 寄存器重命名

        寄存器不能隨便改名字,否則原來的數據依賴關係被打亂,會導致錯誤的執行結果,那麼怎樣才能既保留原先的數據依賴關係,又能將沒有數據依賴性的指令的寄存器改名字呢? 這裏介紹一種在處理器中經常實現的策略: 1.         將

原创 《大話處理器》連載——微架構(11) 從順序執行到亂序執行——因時制宜

       話說有一日,項羽率兵來打劉邦,劉邦命士兵在城外3個路段分別設3個陷阱,劉邦給出如下的指令:    攻城戰        偏巧那一日路段1下雨沒幹,沒法設置陷阱,衆士兵就準備在那裏等待,這時一個聰明的士兵就說:“敵軍不日

原创 《大話處理器》連載——微架構(18) 指令的順序提交

        在指令的執行過程中,通常會有中斷和異常產生,例如在下面這個例子中,  中斷例子          XOR指令執行完後,來了一箇中斷,中斷處理一般都是將處理器的ISA寄存器壓棧,執行中斷服務程序,然後再退回來執行中斷後面的

原创 《大話處理器》連載——微架構(17) 指令調度

       在前面亂序設置陷阱的利子中,如果沒有那個聰明的士兵,亂序也就無從談起。同樣,處理器的亂序執行內核也需要一個調度器,分析指令間中的相關性,分析指令什麼時候能開始執行。        指令什麼時候能開始執行呢?       

原创 《大話處理器》連載——微架構(2) 順溜流水線的深入分析

       在上一節中,順溜已經告訴了我們流水線的基本概念,順溜將整個射擊過程分成了2個步驟(術語稱之爲節拍),兩個步驟可以並行起來執行,只是時間上進行了些許的錯位,這就是流水線的本質。         這條流水線被劃分成了2個節拍,也

原创 《大話處理器》連載——微架構(4) 史上最經典的5級流水線

        處理器內部有很多通用寄存器,這些寄存器用來存儲指令的操作數,它對程序員可見,如x86有8個通用寄存器,RISC處理器則更多,常有32個或64個等等。這一堆寄存器也被叫做Register file(寄存器堆)。       

原创 《大話處理器》連載——微架構(9) 分支預測——以古爲鏡,可以知興替

        高級語言中的for、if、else、switch等等,都是通過跳轉來實現的。正是由於計算機指令中具有能夠改變程序流向的指令,才使得程序結構靈活多樣,程序功能豐富多彩。例如下面這個for循環: for循環在x86上的彙編實

原创 《大話處理器》連載——微架構(10) 分支預測實現與條件執行

(2) 分支預測實現        算法是基礎,有了算法後,就可以在處理器中實現分支預測功能。Intel的分支預測模塊包含了3個單元:        1.         Branch Target Buffer(BTB)