《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > MIPS 體系和CISC體系結構有什么不同
MIPS 體系和CISC體系結構有什么不同
摘要: 所有指令長度都是32位:這意味著沒有指令能夠僅占用兩三個字節的內存空間(因而MIPS的二進制文件比典型的680x0或80x86大百分之二十到三十),也沒有指令可以超過四個字節。
關鍵詞: MIPS
Abstract:
Key words :

一、MIPS指令集的限制
(1)所有指令長度都是32位:這意味著沒有指令能夠僅占用兩三個字節的內存空間(因而MIPS的二進制文件比典型的680x0或80x86大百分之二十到三十),也沒有指令可以超過四個字節。
隨之而來就是不可能把一個32位常數放進單個指令中。MIPS設計者決定留出26位常數的空間用以編碼跳轉和調用指令的目標地址:但是僅有給兩條指令。其它指令只能有16位空間留給常數。這樣裝入任意32位數值需要一個兩條指令的序列,條件分支被限制到64K指令范圍。
(2) 指令操作必須適合流水線:只能在相應的流水線階段才能執行任務,并且必須在一個時鐘周期內完成。例如:寄存器寫回階段只能有一個值存入寄存器堆,所以指令只能修改一個寄存器。
整數乘除是不可或缺的重要指令,但是不能在一個時鐘周期內完成。MIPS CPU傳統的做法是發送這些操作到一個獨立的流水線單元,這個我們以后再說。
(3)三操作數的指令:算數/邏輯指令不需要指定內存地址,所以空出了充足的指令位可以定義兩個獨立的源操作數和一個目的操作數。編譯器喜歡三操作數指令,其給了優化程序更大的空間來處理復雜的表達式的代碼。
(4)32個寄存器:寄存器數量的選擇主要是由軟件需求驅動的,在現代體系結構中一組32個通用寄存器是最為流行的。采用16個肯定不夠現代編譯器的需要,但是32個足夠讓C編譯器把常用的數據保存在寄存器中。采用64個或者更多的寄存器需要更大的指令域去編碼寄存器而且也增加了上下文切換的負擔。
(5)寄存器零:$0寄存器永遠返回零,給這個常用的數提供一個簡縮的編碼。
(6)沒有條件碼:MIPS的指令集的一個特征就是沒有條件標志,這即使在1985年的RISC中也是極為激進的。許多體系結構有多個標志位來表示運算結果的“進位”、“為零”等等。CISC的典型做法是根據一些指令的操作結果設置這些標志,有些RISC體系結構保留了標志位。
MIPS體系結構決定把所有信息保存到寄存器堆中。比較指令設置通用寄存器,條件分支指令檢測通用寄存器。那樣確實有利于流水線實現,因為能夠減少對算術/邏輯操作依賴的巧妙機制不論從哪一種也都同時會減少比較/分支指令對中的依賴。
我們后邊會看到有效的條件分支意味著是否分支的決定必須在半個流水線周期內作出:該體系結構通過保持分支決策的測試條件簡單有助于實現這一點。所以MIPS的條件分支只測試單個寄存器的符號/為零或者一對寄存器是否相等。

二、尋址和訪存
(1)訪問內存只能通過簡單的寄存器加載和存儲:對內存變量進行算術運算會打亂流水線。,所以不這么做。每次內存訪問都要一條顯式的加載或存儲指令。大的寄存器堆使得這一點實際遠沒有聽上去那么麻煩。
(2)只有一種數據尋址方式:幾乎所有的加載和存儲都通過單個寄存器基址加上一個16位的常數偏移量尋址內存。
(3)字節地址指令:一旦數據存入MIPS CPU的寄存器,所有的操作都是在整個寄存器上操作。但是象C這樣的語句語義不適合不能尋址內存到字節粒度的機器。因而MIPS對8-和16-位變量提供了一套完整的裝入/存儲操作。一旦數據到達寄存器,就當作寄存器全長來處理,所以部分字節愛在指令有兩種形式——符號擴展和零擴展。
(4)load/store必須對齊:內存操作只能從對齊到相應數據類型邊界的地址加載荷存儲數據。字節可以在任意地址傳輸,但是半字必須在偶數地址對齊,字在四字節邊界對齊。許多CISC微處理器可以從任意字節地址加載/存儲四字節數據,但是要花費額外的時鐘周期。
但是,MIPS指令集體系結構確實包含有幾個特殊的指令以簡化對沒有適當對齊的地址存取操作。
(5)跳轉指令:有限的32為指令長度在想要支持很大程序的體系結構上對分支是個問題。MIPS指令的最小操作碼域為6位,留出了26位來定義跳轉的目標。因為所有指令在內存中都是四字節邊界對齊的,低兩位地址無需保存,這樣可有256MB的地址范圍。這個地址不是相對PC的,而是解釋成256MB段內的絕對地址。這對大于256MB的單個程序極為不便,到目前按還沒有碰到太大的問題。
超出段內的分支可以通過使用一個寄存器跳轉指令做到,該指令可以跳轉任意32位地址。
條件分支只有16位的偏移域——給出了262144字節的范圍,因為指令都是四字節對齊的——解釋成相對PC的帶符號的偏移量。如果知道分支目標會在緊跟分支之后的指令的128KB范圍內,編譯器就能只生成一個簡單的條件分支指令。

三、MIPS沒有的特性
(1)沒有字節或半字數據的運算:所有算術和邏輯操作都是在32位的數據上進行。字節或半字的運算需要大量額外的資源和許多額外的操作碼,而且很少有用。C語言的語法讓大多數的計算用int 類型,對MIPS而言int就是32位的整數。
然而當程序明確做short或者char運算時,MIPS編譯器必須插入額外的代碼以保證結果回繞和溢出,生成跟8-或16-位機器上一樣的結果。
(2)沒有對堆棧的特殊支持:傳統的MIPS匯編確實定義了一個寄存器作為堆棧指針,但是硬件上SP沒有任何特殊之處。有一種推薦的關于子程序調用的棧幀布局,這樣可以混合不同語言和編譯器的模塊;你應當遵守這些約定,但是這些與硬件無關。
堆棧彈出不能適應流水線,因為有兩個寄存器要寫。
(3)最少的子程序支持:有一點比較特別:跳轉指令有一個跳轉并鏈接的選項,把返回地址存入一個寄存器,默認是#31.所以方便起見習慣上用#31作為返回地址寄存器。
這樣做比起把返回地址保存到堆棧上要簡單,但卻帶來明顯的好處。隨便舉兩個好處瞧瞧:第一,保持了分支和訪存指令的完全分離;第二,當調用許多根本不需要在堆棧保存返回地址的小程序時,這樣做又助于提高效率。
(4)最少的中斷處理:很難看到硬件能做得比這更少的了。它把重新開始的地址存放到一個特殊的寄存器,接著僅修改剛剛夠找出怎么回事的少量機器狀態并禁止進一步中斷,然后跳轉到低端內存事先定義好的一個單一入口地址,伺候一切由軟件負責。
(5)最少的異常處理:中斷只是異常的一種類型。一個異常可以來自一個中斷,來自對物理上不存在的虛擬內存的試圖訪問、或者其它很多情況。一條有意引入的、類似系統調用的、用來進入受保護的OS內核的自陷指令發生時,也會進入一個異常。所有異常都導致控制傳遞到同樣的固定入口地址。任何異常發生時,MIPS CPU都不會存進堆棧、寫入內存或者備份寄存器。
按照約定,保留了兩個通用寄存器給用于異常,這樣異常處理程序可以自舉。對于運行在允許中斷和自陷的任何系統上的程序來說,這兩個寄存器的值隨時可能變化,所以最好不要用。

四、程序員可見的流水線效果
到目前為止,以上就是你需要從一個簡化的CPU了解的全部內容。然而使得指令集適應流水線也會導致一些奇怪的效果。為了便于理解,我們畫圖說明。
                
                                                                      圖1.3:流水線和分支延遲
(1)延遲分支:MIPS CPU的流水線結構意味著當一個跳轉/分支指令到達執行階段產生新的程序計數器值時,跟在跳轉指令后的指令已經開始了,該體系結構并不是丟棄這部分有潛在用途的工作,而是要求緊跟分支后的指令總是在分支目標指令之前執行。緊接分支指令后的指令位置稱為分支延遲槽。
要是硬件沒有特殊處理,是否分支的決定以及分支的目標地址,就會在ALU流水階段結束時得到——到此時,如圖1.3所示,已經太晚了,甚至在下下一個流水線槽都來不及提供一個指令地址。
但是分支指令的重要性足以給予特殊處理。從圖1.3所示,提供了一條經ALU的特殊路徑可以讓分支目標地址提早半個周期到達。連同取指階段多出來的半個時鐘周期的偏移,就剛好來得及去除分支目標指令作為下下一個指令。這樣硬件就會運行分支指令、接著運行分支延遲槽指令、然后是分支目標指令——再沒有其它的延遲。
編譯器系統或者匯編程序應該考慮甚至利用分支延遲;結果是通常有可能通過適當安排使得延遲槽中的指令做些有用的工作。經常可以把別處的指令一道延遲槽中。
對于條件分支問題會有點復雜,分支延遲指令應當對兩條分支路徑都無害。實在找不到有用的事情可做時,延遲槽中填入一條nop指令。除非明確要求,否則許多MIPS匯編器都對程序員隱藏這個古怪的特性。

                  
                                                                               圖1.4:流水線和加載延遲
(2)數據加載延遲:流水線的另一個后果就是一條加載指令的數據在下一條指令的ALU階段的開始才從高速緩存/內存系統到達——所以在下一條指令中不能使用加載的數據。
緊接加載指令后的指令位置稱為加載延遲槽,一個優化的編譯器將試圖用它做些有用的事情。匯編器對程序員隱藏這一點,但可能插入一條nop指令。
在現代的MIPS CPU上,加載結果是互鎖的:如果你試圖過早使用結果,CPU將停下來等待數據到達。但是早期的MIPS CPU沒有互鎖,在延遲槽中試圖使用數據將導致無法預料的結果。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品欧美极品| 亚洲一区精品电影| 一区二区三区产品免费精品久久75| 国产视频在线观看一区二区| 国产精品乱人伦中文| 欧美日韩一区二区三区在线| 欧美国产精品久久| 免费在线欧美黄色| 免费成人在线观看视频| 久久婷婷av| 久久免费黄色| 久久欧美肥婆一二区| 欧美专区18| 欧美在线免费| 欧美中文字幕在线观看| 久久精品人人做人人爽电影蜜月| 欧美在线播放一区| 久久国产精品第一页| 欧美一区二区三区在线看| 亚洲欧美另类中文字幕| 亚洲一区二区三区乱码aⅴ蜜桃女| 一本色道**综合亚洲精品蜜桃冫| 一本色道久久加勒比精品| 一个色综合导航| 亚洲视频综合在线| 亚洲欧美视频一区| 午夜亚洲激情| 久久动漫亚洲| 久久一区二区三区国产精品| 美女网站在线免费欧美精品| 欧美二区在线观看| 欧美日韩123| 国产精品国产一区二区 | 亚洲黄色av| 日韩一级精品| 亚洲一区日韩在线| 久久国产精品久久w女人spa| 91久久黄色| 亚洲视频在线一区| 欧美在线视频免费播放| 麻豆成人在线观看| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲精品免费电影| 一区二区三区**美女毛片| 亚洲欧美在线免费| 亚洲国产精品成人综合色在线婷婷| 亚洲精品乱码久久久久久黑人| 亚洲午夜电影在线观看| 欧美在线亚洲综合一区| 麻豆成人精品| 国产精品国产福利国产秒拍| 国产视频在线观看一区二区三区| 亚洲高清一区二| 亚洲视频一区在线观看| 久久激情综合网| 一本色道久久综合一区| 欧美专区亚洲专区| 欧美激情欧美狂野欧美精品| 国产精品亚洲人在线观看| 有码中文亚洲精品| 一区二区三区国产精华| 久久精品123| 亚洲淫性视频| 免费黄网站欧美| 欧美午夜精品久久久久久久| 好看的日韩视频| 一本色道久久综合亚洲精品不| 欧美一区二区三区视频在线观看| 99热免费精品| 久久精品视频网| 欧美日韩一二三区| 影音先锋亚洲电影| 亚洲自拍偷拍麻豆| 99精品视频免费观看视频| 久久久亚洲影院你懂的| 欧美日韩视频不卡| 一区二区亚洲精品国产| 亚洲一二三区在线| 日韩视频中午一区| 久久久人成影片一区二区三区观看| 欧美日一区二区在线观看| 黄色小说综合网站| 亚洲一区二区三区免费视频 | 欧美日韩亚洲成人| 在线观看一区欧美| 午夜精品久久久久久久白皮肤| 99热这里只有精品8| 久热爱精品视频线路一| 国产精品一香蕉国产线看观看| 亚洲国产专区| 亚洲国产欧美一区| 久久国产精品久久久| 欧美三级网址| 亚洲日本成人女熟在线观看| 亚洲国产精品久久久久婷婷884| 欧美在线精品免播放器视频| 欧美午夜精品久久久| 亚洲人成在线播放网站岛国| 亚洲国产成人精品女人久久久| 久久国产精品黑丝| 国产欧美欧美| 亚洲一区一卡| 亚洲一区欧美二区| 欧美日韩大片| 亚洲精品午夜| 99精品国产一区二区青青牛奶 | 国产亚洲综合在线| 亚洲欧美日韩国产综合精品二区| 亚洲午夜视频| 欧美体内she精视频在线观看| 亚洲毛片av| 一本久久综合| 欧美人在线视频| 亚洲人成网在线播放| 日韩一级片网址| 欧美激情影音先锋| 亚洲国产精品99久久久久久久久| 亚洲国产经典视频| 久久在线免费观看| 狠狠干综合网| 亚洲第一区在线| 久久亚洲一区二区| 黑丝一区二区| 亚洲黄网站黄| 欧美粗暴jizz性欧美20| 亚洲狠狠丁香婷婷综合久久久| 日韩视频在线你懂得| 欧美日韩1080p| 夜夜嗨av色一区二区不卡| 亚洲少妇在线| 欧美亚一区二区| 亚洲欧美国产一区二区三区| 欧美一区影院| 国外精品视频| 亚洲精品国久久99热| 欧美另类视频在线| 艳妇臀荡乳欲伦亚洲一区| 午夜精彩国产免费不卡不顿大片| 国产精品天天看| 久久99在线观看| 男女精品视频| 日韩一级黄色片| 欧美亚洲三区| 国产视频在线观看一区 | 一区二区三区www| 欧美小视频在线观看| 亚洲综合成人婷婷小说| 久久精品一区中文字幕| 伊人久久婷婷| 亚洲手机在线| 国产一区二区三区观看| 亚洲国产精品久久久久| 欧美日韩国产成人在线91| 亚洲一区www| 久久久之久亚州精品露出| 亚洲精品在线看| 亚洲一本视频| 久久国产一区二区| 国内精品国语自产拍在线观看| 久久精品免费电影| 日韩视频一区二区三区在线播放| 黄色日韩网站视频| 亚洲欧洲日韩女同| 欧美视频在线观看免费| 亚洲欧美综合精品久久成人 | 久久久www成人免费无遮挡大片| 亚洲福利在线看| 亚洲网站在线观看| 国产丝袜美腿一区二区三区| 亚洲日本中文字幕区| 国产精品久久久久久影视| 欧美中文在线观看| 欧美日韩国产专区| 亚洲欧美国产一区二区三区| 欧美不卡一区| 亚洲在线视频网站| 欧美va天堂在线| 亚洲欧美国产三级| 欧美高清成人| 欧美在线视频一区| 欧美先锋影音| 亚洲片在线观看| 国产精品自拍三区| 日韩网站免费观看| 国产丝袜一区二区| 在线亚洲激情| 狠狠色丁香久久婷婷综合丁香| 中日韩午夜理伦电影免费| 国模一区二区三区| 亚洲欧美另类在线观看| 91久久国产综合久久91精品网站| 香港久久久电影| 亚洲国产一区二区三区a毛片| 久久精品1区| 一区二区三区视频在线播放| 裸体歌舞表演一区二区| 亚洲一级影院| 欧美三日本三级三级在线播放| 亚洲激情av| 国产一区二区三区在线观看免费视频|