1. 程式人生 > >A Quantitative Approach-appendix K(2)——RISC指令系統的擴充套件指令比較

A Quantitative Approach-appendix K(2)——RISC指令系統的擴充套件指令比較

A Quantitative Approach-appendix K(2)——RISC指令系統的擴充套件指令比較

  1. Instructions: Multimedia Extensions of the Desktop/Server RISCs

    • 圖形顯示器是桌面不可缺少的一部分,使用8位即可表示畫素。對於聲音而言,則需要16位來儲存更完整的資訊
    • 所有的微處理器都支援位元組和半字的資料傳輸,但是卻沒有運算操作。一個原因是當時的電晶體整合度太低,設計單獨的向量處理單元的成本太高
    • HP是第一個支援多媒體的桌面RISC
    • 多媒體擴充套件常被稱為:subword parallelism(子字並行化),vector,SIMD。Intel使用SIMD描述80x86的MMX擴充套件,因此SIMD也被更廣泛的應用
    • 多媒體擴充套件中較為常見的操作:飽和操作。當一次計算結果溢位時,將結果設定為最大的正數/最小的負數,而不是對結果取模
    • 針對於擴充套件的指令,Alpha和HP RA-RISC使用現有的整數暫存器儲存運算元,MIPS和SUN使用浮點暫存器。資料讀寫使用標準的讀寫指令,Power PC ActiveC添加了32個128位的暫存器,MIPS添加了192位(64*3)的暫存器作為操作的累加器
    • 在多媒體擴充套件中,不同的指令系統之間,擴充套件的結果不再具有一致性,相同的只有邏輯運算和4個半字的加法和減法(除了Alpha)
    • 增加的指令都是用於手工優化的子程式庫,編譯器很難自動進行優化
      在這裡插入圖片描述

    B代表byte(8個bit),H代表半字(16個bit),W代表字(32個bit)。8B的意思是一條指令一次操作8個字。pack和unpack用2*2W的意思是兩個運算元都是兩個字大小。

  2. Instructions: Digital Signal-Processing Extensions of the Embedded RISCs

    • 所有DSP架構的共同特徵:支援整數乘法累加。乘法更多的發生在16位數上,累加則更多的需要64位數的累加
    • Thumb和MIPS 16是ARM和MIPS的子集,不支援類似擴充套件,但是可以直接ARM和MIPS 64中定義的擴充套件指令
      在這裡插入圖片描述
  3. MIPS擴充套件指令的相似指令:(至少可以在兩種標準體系結構中可以找到相似的指令)

    • 原子交換指令:暫存器和記憶體之間的資料交換,可以防止操作被打斷
    • 64位資料傳輸和操作
    • 預取指令:提供資料的地址和一些其它提示資訊(包括資料是否可能很快被讀取/寫入,被讀取/寫入的次數等),然後將資料提前放到更高層次的儲存層次中。
    • “Big/Little” 表示處理器的程式狀態暫存器上有一個位用於標明處理器使用的是大端定址還是小端定址
    • 儲存同步指令,例如柵欄指令FENCE,BARRIER
      在這裡插入圖片描述
      在這裡插入圖片描述
      在這裡插入圖片描述
      在這裡插入圖片描述
      在這裡插入圖片描述
      在這裡插入圖片描述
  4. 條件分支指令的優化

    • Alpha和PowerPC使用分支預測器加速分支,其它的桌面RISCs都提供了延遲分支(分支延遲槽)

    • 嵌入式RISCs除了SuperH,都不支援延遲分支,SuperH為可選項

    • SPARC的annulling delayed branch(取消延遲分支指令)只有在分支指令實際發生跳轉時,延遲槽的指令才會執行。即分支跳轉處的指令可以被複制到延遲槽中。但是在編譯時,必須保證跳轉的目的地址處不能夠時分支指令。後續的MIPS 64中也支援這種方式

    • PA-RISC的取消分支指令是否執行下一條指令,取決於分支的跳轉方向和是否會跳轉。(考慮是為了優化迴圈)
      在這裡插入圖片描述