PA-RISC 2.0特有的指令

PA-RISC 在 1990 年有一個(gè) 1.1 版本的小更新, 1996 年擴(kuò)展到 2.0 則是一版大更新。 PA-RISC 可能擁有最多的不常見的桌面 RISC 特性。 比如, 它有最多的尋址模式和指令格式, 并且, 我們馬上會(huì)看到, 有些指令完全是其他指令合并而來(lái)。

Nullification

有些 RISC 可以選擇不執(zhí)行延時(shí)跳轉(zhuǎn)后的指令, 來(lái)更好的利用跳轉(zhuǎn)間隙。 在 PA-RISC 中, 這叫 nullification, 它也被普遍的用在各種算術(shù)和邏輯指令。 因此, 一條加法指令可以將兩個(gè)操作數(shù)相加,保存相加結(jié)果, 假如相加的結(jié)果是0, 則可以跳過(guò)接下來(lái)的指令。 就像條件執(zhí)行的賦值指令 nullification 允許 PA-RISC 避免執(zhí)行那些只需要執(zhí)行1條指令的分支。

豐富的條件分支指令

有了 nullification, PA-RISC 并不需要分開條件分支指令。 可以取消的指令可以被安排在無(wú)條件分支前執(zhí)行,這樣也可以簡(jiǎn)化指令集。 然而, PA-RISC 卻有 RISC 中最多的條件分支指令。 圖33羅列了 PA-RISC 的分支指令。 如你所見, 有些單純是將其他兩條指令的合并在了一起。

合成乘法和除法

PA-RISC 提供了一些原語(yǔ), 可以軟件用它們合成乘法和除法。 比如,移位并相加的指令可以用在乘法上面。 (Alpha 也包括乘以加法或者減法的第二個(gè)操作數(shù)的指令: S4ADD, S8ADD, S4SUB, S8SUB。) 除法步驟的關(guān)鍵是根據(jù)符號(hào)做加法和減法。 Magenheimer et al. [1988] 測(cè)試了乘法步驟的最好情況。利用這些是數(shù)據(jù),Muchnick [1988] 發(fā)現(xiàn)乘以常數(shù)需要6個(gè)周期,乘以變量則需要24個(gè)周期。 PA-RISC 為這些操作提供了10條指令。

原始的 SPARC 體系結(jié)構(gòu)也提供了類似優(yōu)化, 但是隨著晶體管數(shù)量的增多,已經(jīng)擴(kuò)展出了完整的乘法和除法操作。 PA-RISC 在浮點(diǎn)單元支持了32位整數(shù)乘法, 也就是說(shuō), 做整數(shù)乘法之前, 還需要將值移到浮點(diǎn)寄存器中。

十進(jìn)制操作

COBOL 程序計(jì)算十進(jìn)制的時(shí)候, 并不會(huì)將它們?cè)诙M(jìn)制和十進(jìn)制之間轉(zhuǎn)換, 而是將十進(jìn)制的每個(gè)數(shù)字放到4個(gè)位中。 PA-RISC 為此提供了32位到十進(jìn)制之間的加法轉(zhuǎn)換指令。 還提供了邏輯和算術(shù)指令, 可以判定溢出, 測(cè)試字節(jié)或者半字是不是0. 這種操作都可以用在8位的 ASCII 算術(shù)計(jì)算中。 總共有5條十進(jìn)制操作指令。

其他的指令

下面是余下的 PA-RISC 指令:

  • 跳轉(zhuǎn)指令可以左移索引寄存器3位,然后再加上基址寄存器,來(lái)獲取到目標(biāo)地址。 這一般可以用在switch、case。
  • 提取和存取指令可以使用任意位的移位。
  • 為了簡(jiǎn)化32位地址常數(shù)的使用,PA-RISC包括ADDIL,ADDIL向寄存器添加一個(gè)左調(diào)整的21位常量,并將結(jié)果存入寄存器1.以下數(shù)據(jù)傳輸指令使用偏移尋址來(lái)添加較低的11位地址到寄存器1.這對(duì)指令允許PA-RISC向基址寄存器添加一個(gè)32位常數(shù),代價(jià)是改變寄存器1。
  • PA-RISC有九個(gè)調(diào)試指令,可以在指令或數(shù)據(jù)地址上設(shè)置斷點(diǎn),并返回被捕獲的地址。
  • 加載和清除指令提供了從內(nèi)存中讀取值然后寫入0的信號(hào)量或鎖。
  • 存儲(chǔ)字節(jié)短優(yōu)化未對(duì)齊的數(shù)據(jù)移動(dòng),根據(jù)指令選項(xiàng)和條件代碼位,將單詞中的最左邊或最右邊的字節(jié)移動(dòng)到有效地址。
  • 加載和存儲(chǔ)可以與緩存一起使用,方法是提供有關(guān)是否將數(shù)據(jù)加載到緩存中的提示(如果尚未在緩存中)。例如,將寄存器0的目的地加載定義為軟件控制的高速緩存預(yù)取。
  • PA-RISC 2.0擴(kuò)展緩存提示以存儲(chǔ)以指示塊副本,建議處理器不將數(shù)據(jù)加載到緩存中,如果它尚未在高速緩存中。它還可以表明,在加載和存儲(chǔ)上,存在空間位置以準(zhǔn)備高速緩存用于后續(xù)的順序訪問(wèn)。
  • PA-RISC 2.0還提供了一個(gè)可選的分支目標(biāo)棧來(lái)預(yù)測(cè)子程序返回中使用的間接跳轉(zhuǎn)。軟件可以建議將哪些地址放置在分支目標(biāo)棧中并從其移除,但硬件控制這些地址是否有效。
  • 乘/加和乘/減是浮點(diǎn)運(yùn)算,在PA-RISC 2.0版中引入的乘法和加法的融合,乘法和減法的融合,也就是說(shuō)可以在單??個(gè)指令中啟動(dòng)兩個(gè)獨(dú)立的浮點(diǎn)運(yùn)算。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容