SPARC v9特有的指令

寄存器窗口(register windows)

SPARC 最獨特的特性是寄存器窗口展姐,一種優(yōu)化函數(shù)調(diào)用階段的手段剖毯。 每次調(diào)用逊谋,都會分配一個新的緩存窗口,來緩存需要壓棧的寄存器胶滋。 窗口的數(shù)量是一個限制,因此俭令,實現(xiàn)上采用的是環(huán)形緩存部宿。權(quán)衡消耗和性能之后,大概6到8個緩存窗口是最優(yōu)的設(shè)計赫蛇。

實際上SPARC支持2到32個窗口雾叭,每個窗口一般會緩存8個寄存器,包括全局變量织狐,局部變量,傳入?yún)?shù)旺嬉,返回參數(shù)起意。(每個窗口最多可以有16個不同的寄存器,SPARC體系結(jié)構(gòu)硬件實現(xiàn)最少會有40個寄存器悲酷,最多可以達(dá)到520個寄存器亲善,到目前為止,大多數(shù)設(shè)計都采用128到136個寄存器蛹头。) 窗口的使用方面戏溺,調(diào)用和返回指令并不會觸發(fā)窗口使用屠尊,SPARC 有專門的 SAVE 和 RESTORE 指令來觸發(fā)窗口使用讼昆。 SAVE 會指向下一個寄存器窗口,也就相當(dāng)于保存了調(diào)用函數(shù)的窗口浸赫。 有一個重點是源寄存器在調(diào)用者的窗口,而目標(biāo)寄存器位于被調(diào)用者的窗口中羡榴。 SPARC編譯器通常使用此指令來更改堆棧指針运敢,以在新的堆棧幀中分配局部變量。 RESTORE 跟 SAVE 相反肤视,從被調(diào)用者的窗口返回到調(diào)用者的窗口涉枫。 這將自動釋放堆棧幀。 編譯器也可以利用它來生成被調(diào)用方的最終返回值愿汰。

寄存器窗口的缺點是大量的寄存器可能會拖慢時鐘頻率。 雖然在早期這點看起來不是問題摇予。 SPARC體系結(jié)構(gòu)(有寄存器窗口)和 MIPS R2000 體系結(jié)構(gòu) (沒有寄存器窗口) 都是從 1987 就存在吗跋。 幾次更新?lián)Q代下來, 雖然使用了類似的技術(shù)酗宋,但是 SPARC 的頻率都沒有比 MIPS 的時鐘頻率慢疆拘, 也許這是因為 cache 的存在掩蓋了這一點。 最近一代計算機(jī)使用了不同的技術(shù)策略 —— 一個是順序回右,一個是亂序 —— 但是看起來寄存器的數(shù)量也不大會影響到時鐘頻率。 最近翔烁,Tensilica和IA-64也添加了寄存器窗口。

寄存器窗口的缺點是大量的寄存器可能會拖慢時鐘頻率阶女。 在早期頻率低的時代哩治,這點看起來當(dāng)然不是問題衬鱼。 實際上,SPARC體系結(jié)構(gòu)(有寄存器窗口)和 MIPS R2000 體系結(jié)構(gòu) (沒有寄存器窗口) 都是從 1987 就存在蒜胖,幾次更新?lián)Q代下來抛蚤,雖然使用了類似的技術(shù),但是 SPARC 的頻率都沒有比 MIPS 的時鐘頻率慢朋沮, 也許這是因為 cache 的存在掩蓋了這一點缀壤。 最近一代設(shè)計雖然使用了不同的技術(shù)策略 —— 一個是順序,一個是亂序 —— 但是看起來寄存器的數(shù)量也不大會影響到時鐘頻率筋夏。 最近图呢,Tensilica和IA-64也添加了寄存器窗口。

另一種數(shù)據(jù)傳輸?shù)奶匦允莑oad和store的可選項赴叹。 這可以簡化外設(shè)輸入輸出和控制寄存器的操作瞳筏。

快速 trap

SPARC 第9版支持了快速trap。 從單級trap擴(kuò)展到到至少4級trap姚炕, 允許獲取到窗口的上溢和下溢中斷丢烘。 額外的級別意味著處理程序不需要在代碼中顯式地檢查頁面錯誤或未對齊的堆棧指針播瞳,從而使處理程序更快免糕。 添加了兩個新的指令,從這個多級處理程序返回:RETRY(重新進(jìn)入中斷的指令)和 DONE(不重新進(jìn)入)石窑。 為了支持用戶級 trap 松逊,RETURN 指令還可以從非特權(quán)模式 trap 返回。

支持 LISP 和 Smalltalk

剩下的主要特性是算術(shù)加法和減法经宏。 SPARC 的設(shè)計者參考了LISP和Smalltalk等編程語言,并且影響了前面提到的一些功能:寄存器窗口耐亏,條件trap指令沪斟,帶32位指令地址的調(diào)用和多字算術(shù)(參見Taylor et al [1986]和Ungar等[1984])。 對加法轨域,減法和比較的操作杀餐, 添加了標(biāo)記數(shù)據(jù)類型的支持。 兩個最低有效位表示操作數(shù)是否為整數(shù)(編碼為00)枉长, 因此如果任一操作數(shù)未被標(biāo)記為整數(shù)或結(jié)果太大琼讽, 則TADDcc和TSUBCC將設(shè)置溢出位。 隨后的條件分支或trap指令可以決定要做什么钻蹬。 (如果操作數(shù)不是整數(shù), 軟件會恢復(fù)操作數(shù)肝匆, 檢查操作數(shù)的類型, 并根據(jù)這些類型調(diào)用正確的操作枯怖。) 事實證明能曾,不對齊的內(nèi)存訪問trap也可以用于標(biāo)記的數(shù)據(jù), 因為從具有錯誤標(biāo)簽的指針加載可能是無效的訪問蕊程。

整數(shù)和浮點交疊操作

SPARC允許用浮點指令執(zhí)行整數(shù)指令操作蚂斤。 在這種情況下,要從中斷恢復(fù),SPARC有一個待處理的浮點指令隊列及其地址岗钩。 RDPR允許處理器清空隊列兼吓。 第二個浮點特征是包含浮點平方根指令FSQRTS,F(xiàn)SQRTD和FSQRTQ视搏。

其余指令

SPARC 剩余的獨有特性如下:

  • JMPL 使用 Rd 來指定返回地址寄存器, 因此指定 r31 與 MIPS 中的 JAIR 相似浑娜, 指定 r0 與 JR 相似。
  • LDSTUB 加載單個字節(jié)到 Rd 打颤, 并且保存 FF16 到地址字節(jié)漓滔。 這種指令可以用來實現(xiàn)信號量。
  • CASA (CASXA) 是一條原子操作指令透且,比較寄存器中和內(nèi)存中的32位(64位)值豁鲤,如果相等罕邀,則交換第二個寄存器和內(nèi)存中的值养距。 這條第九版的指令可以用來實現(xiàn)沒有鎖的無等待同步算法。
  • XNOR 計算與第二個操作數(shù)的補(bǔ)碼的異或肾胯。
  • BPcc耘纱, BPr, 和 FBPcc 包括一個分支預(yù)測位艳馒,編譯器可以利用這個位來告訴計算機(jī)哪個分支更可能執(zhí)行员寇。
  • ILLTRAP 引發(fā)一個非法指令trap。 Muchnick [1988] 解釋了如何將其正確運用在C的返回返回程序中陆爽。
  • POPC 統(tǒng)計操作數(shù)中總共有多少個位被置位扳缕。 第三版 alpha 體系結(jié)構(gòu)也有這條指令。
  • 不會觸發(fā)失敗的 load 操作運行編譯器將其移動到條件控制前驴剔。
  • 四精度浮點算術(shù)和數(shù)據(jù)傳輸粥庄,允許浮點寄存器操作128位的浮點。
  • 乘法的多精度浮點結(jié)果指的是利花,兩個單精度相乘可以得到一個雙精度結(jié)果载佳,兩個雙精度結(jié)果相乘可以得到一個四精度結(jié)果。這些指令可以用在處理復(fù)雜和特定的一些浮點算術(shù)中挠乳。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盟蚣,隨后出現(xiàn)的幾起案子卖怜,更是在濱河造成了極大的恐慌,老刑警劉巖奄抽,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逞度,死亡現(xiàn)場離奇詭異妙啃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)揖赴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門储笑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事羽历〉玻” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵澎嚣,是天一觀的道長瘟芝。 經(jīng)常有香客問我,道長晤郑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任磕洪,我火速辦了婚禮诫龙,結(jié)果婚禮上签赃,老公的妹妹穿的比我還像新娘。我一直安慰自己姊舵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布荞下。 她就那樣靜靜地躺著尖昏,像睡著了一般构资。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迹淌,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天己单,我揣著相機(jī)與錄音,去河邊找鬼纹份。 笑死廷痘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的元暴。 我是一名探鬼主播鳞陨,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼援岩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起羽峰,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤梅屉,失蹤者是張志新(化名)和其女友劉穎鳞贷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搀愧,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡咱筛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年迅箩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饲趋。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡奕塑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情息楔,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布圃泡,位于F島的核電站愿险,受9級特大地震影響颇蜡,放射性物質(zhì)發(fā)生泄漏价说。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一风秤、第九天 我趴在偏房一處隱蔽的房頂上張望鳖目。 院中可真熱鬧,春花似錦缤弦、人聲如沸领迈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拟糕,卻和暖如春累提,著一層夾襖步出監(jiān)牢的瞬間尘喝,已是汗流浹背斋陪。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工朽褪, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鳍贾。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓鞍匾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骑科。 傳聞我的和親對象是個殘疾皇子橡淑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一、概要 1咆爽、數(shù)據(jù)的表示:數(shù)制及其轉(zhuǎn)換梁棠、原碼、反碼斗埂、補(bǔ)碼符糊、移碼、浮點數(shù)呛凶、溢出男娄、算...
    _Jason___閱讀 3,096評論 0 5
  • MIPS已經(jīng)經(jīng)歷了五代指令集,演進(jìn)過程通常是在增加其他架構(gòu)中有的特性漾稀。 下面是MIPS的特有的一些指令模闲,其中的幾個...
    rustydaar閱讀 4,743評論 0 1
  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎(chǔ)入門學(xué)習(xí)匯編語言》系列視頻的筆記亮航,在此感謝他和像他一樣...
    Gibbs基閱讀 37,117評論 8 114
  • 導(dǎo)語 人生有味塞赂,是清歡泪勒。從自然中生,回到自然中去宴猾。與花為伴圆存,和樹為友,以山水為鄰仇哆。享受四季陽光沦辙,深愛藍(lán)天白云,高山...
    漫游家閱讀 380評論 0 2
  • 生于黑色讹剔,長得長街油讯。生于白天,贏在美上延欠。 第一幕 內(nèi)景街角夜景 剛剛下過雨的街還夾雜著潮濕的空氣 行人來往的腳步帶...
    導(dǎo)演張升志閱讀 580評論 1 0