www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件

MIPS(Million Instructions Per Second):?jiǎn)巫珠L(zhǎng)定點(diǎn)指令平均執(zhí)行速度 Million Instructions Per Second的縮寫(xiě),每秒處理的百萬(wàn)級(jí)的機(jī)器語(yǔ)言指令數(shù)。這是衡量CPU速度的一個(gè)指標(biāo)。像是一個(gè)Intel 80386 電腦可以每秒處理3百萬(wàn)到5百萬(wàn)機(jī)器語(yǔ)言指令,即我們可以說(shuō)80386是3到5MIPS的CPU。MIPS只是衡量CPU性能的指標(biāo)。MIPS是世界上很流行的一種RISC處理器。MIPS的意思是“無(wú)內(nèi)部互鎖流水級(jí)的微處理器”(Microprocessor without interlocked piped stages),其機(jī)制是盡量利用軟件辦法避免流水線(xiàn)中的數(shù)據(jù)相關(guān)問(wèn)題。它最早是在80年代初期由斯坦福(Stanford)大學(xué)Hennessy教授領(lǐng)導(dǎo)的研究小組研制出來(lái)的。MIPS公司的R系列就是在此基礎(chǔ)上開(kāi)發(fā)的RISC工業(yè)產(chǎn)品的微處理器。這些系列產(chǎn)品為很多計(jì)算機(jī)公司采用構(gòu)成各種工作站和計(jì)算機(jī)系統(tǒng)。

一、MIPS指令集的限制

(1)所有指令長(zhǎng)度都是32位:這意味著沒(méi)有指令能夠僅占用兩三個(gè)字節(jié)的內(nèi)存空間(因而MIPS的二進(jìn)制文件比典型的680x0或80x86大百分之二十到三十),也沒(méi)有指令可以超過(guò)四個(gè)字節(jié)。

隨之而來(lái)就是不可能把一個(gè)32位常數(shù)放進(jìn)單個(gè)指令中。MIPS設(shè)計(jì)者決定留出26位常數(shù)的空間用以編碼跳轉(zhuǎn)和調(diào)用指令的目標(biāo)地址:但是僅有給兩條指令。其它指令只能有16位空間留給常數(shù)。

(2) 指令操作必須適合流水線(xiàn):只能在相應(yīng)的流水線(xiàn)階段才能執(zhí)行任務(wù),并且必須在一個(gè)時(shí)鐘周期內(nèi)完成。例如:寄存器寫(xiě)回階段只能有一個(gè)值存入寄存器堆,所以指令只能修改一個(gè)寄存器。

(3)三操作數(shù)的指令:算數(shù)/邏輯指令不需要指定內(nèi)存地址,所以空出了充足的指令位可以定義兩個(gè)獨(dú)立的源操作數(shù)和一個(gè)目的操作數(shù)。編譯器喜歡三操作數(shù)指令,其給了優(yōu)化程序更大的空間來(lái)處理復(fù)雜的表達(dá)式的代碼。

(4)32個(gè)寄存器:寄存器數(shù)量的選擇主要是由軟件需求驅(qū)動(dòng)的,在現(xiàn)代體系結(jié)構(gòu)中一組32個(gè)通用寄存器是最為流行的。采用16個(gè)肯定不夠現(xiàn)代編譯器的需要,但是32個(gè)足夠讓C編譯器把常用的數(shù)據(jù)保存在寄存器中。

(5)寄存器零:$0寄存器永遠(yuǎn)返回零,給這個(gè)常用的數(shù)提供一個(gè)簡(jiǎn)縮的編碼。

(6)沒(méi)有條件碼:MIPS的指令集的一個(gè)特征就是沒(méi)有條件標(biāo)志,這即使在1985年的RISC中也是極為激進(jìn)的。許多體系結(jié)構(gòu)有多個(gè)標(biāo)志位來(lái)表示運(yùn)算結(jié)果的“進(jìn)位”、“為零”等等。CISC的典型做法是根據(jù)一些指令的操作結(jié)果設(shè)置這些標(biāo)志,有些RISC體系結(jié)構(gòu)保留了標(biāo)志位。CISC是復(fù)雜指令系統(tǒng)計(jì)算機(jī)的簡(jiǎn)稱(chēng),微處理器是臺(tái)式計(jì)算機(jī)系統(tǒng)的基本處理部件,每個(gè)微處理器的核心是運(yùn)行指令的電路。指令由完成任務(wù)的多個(gè)步驟所組成,把數(shù)值傳送進(jìn)寄存器或進(jìn)行相加運(yùn)算。復(fù)雜指令集計(jì)算機(jī)(Complex Instruction System Computer,CISC)早期的計(jì)算機(jī)部件比較昂貴,主頻低,運(yùn)算速度慢。為了提高運(yùn)算速度,人們不得不將越來(lái)越多的復(fù)雜指令加入到指令系統(tǒng)中,以提高計(jì)算機(jī)的處理效率,這就逐步形成復(fù)雜指令集計(jì)算機(jī)體系。為了在有限的指令長(zhǎng)度內(nèi)實(shí)現(xiàn)更多的指令,人們又設(shè)計(jì)了操作碼擴(kuò)展。然后,為了達(dá)到操作碼擴(kuò)展的先決條件——減少地址碼,設(shè)計(jì)師又發(fā)現(xiàn)了各種尋址方式,如基址尋址、相對(duì)尋址等,以最大限度地壓縮地址長(zhǎng)度,為操作碼留出空間。

MIPS體系結(jié)構(gòu)決定把所有信息保存到寄存器堆中。比較指令設(shè)置通用寄存器,條件分支指令檢測(cè)通用寄存器。那樣確實(shí)有利于流水線(xiàn)實(shí)現(xiàn),因?yàn)槟軌驕p少對(duì)算術(shù)/邏輯操作依賴(lài)的巧妙機(jī)制不論從哪一種也都同時(shí)會(huì)減少比較/分支指令對(duì)中的依賴(lài)。

我們后邊會(huì)看到有效的條件分支意味著是否分支的決定必須在半個(gè)流水線(xiàn)周期內(nèi)作出:該體系結(jié)構(gòu)通過(guò)保持分支決策的測(cè)試條件簡(jiǎn)單有助于實(shí)現(xiàn)這一點(diǎn)。所以MIPS的條件分支只測(cè)試單個(gè)寄存器的符號(hào)/為零或者一對(duì)寄存器是否相等。

二、尋址和訪(fǎng)存

(1)訪(fǎng)問(wèn)內(nèi)存只能通過(guò)簡(jiǎn)單的寄存器加載和存儲(chǔ):對(duì)內(nèi)存變量進(jìn)行算術(shù)運(yùn)算會(huì)打亂流水線(xiàn)。,所以不這么做。每次內(nèi)存訪(fǎng)問(wèn)都要一條顯式的加載或存儲(chǔ)指令……

(2)只有一種數(shù)據(jù)尋址方式:幾乎所有的加載和存儲(chǔ)都通過(guò)單個(gè)寄存器基址加上一個(gè)16位的常數(shù)偏移量尋址內(nèi)存。

(3)字節(jié)地址指令:一旦數(shù)據(jù)存入MIPS CPU的寄存器,所有的操作都是在整個(gè)寄存器上操作。但是象C這樣的語(yǔ)句語(yǔ)義不適合不能尋址內(nèi)存到字節(jié)粒度的機(jī)器。因而MIPS對(duì)8-和16-位變量提供了一套完整的裝入/存儲(chǔ)操作。

(4)load/store必須對(duì)齊:內(nèi)存操作只能從對(duì)齊到相應(yīng)數(shù)據(jù)類(lèi)型邊界的地址加載荷存儲(chǔ)數(shù)據(jù)。字節(jié)可以在任意地址傳輸,但是半字必須在偶數(shù)地址對(duì)齊,字在四字節(jié)邊界對(duì)齊。

(5)跳轉(zhuǎn)指令:有限的32為指令長(zhǎng)度在想要支持很大程序的體系結(jié)構(gòu)上對(duì)分支是個(gè)問(wèn)題。MIPS指令的最小操作碼域?yàn)?位,留出了26位來(lái)定義跳轉(zhuǎn)的目標(biāo)。因?yàn)樗兄噶钤趦?nèi)存中都是四字節(jié)邊界對(duì)齊的,低兩位地址無(wú)需保存,這樣可有256MB的地址范圍。這個(gè)地址不是相對(duì)PC的,而是解釋成256MB段內(nèi)的絕對(duì)地址。這對(duì)大于256MB的單個(gè)程序極為不便,到目前按還沒(méi)有碰到太大的問(wèn)題。

超出段內(nèi)的分支可以通過(guò)使用一個(gè)寄存器跳轉(zhuǎn)指令做到,該指令可以跳轉(zhuǎn)任意32位地址。

條件分支只有16位的偏移域——給出了262144字節(jié)的范圍,因?yàn)橹噶疃际撬淖止?jié)對(duì)齊的——解釋成相對(duì)PC的帶符號(hào)的偏移量。如果知道分支目標(biāo)會(huì)在緊跟分支之后的指令的128KB范圍內(nèi),編譯器就能只生成一個(gè)簡(jiǎn)單的條件分支指令。

三、MIPS沒(méi)有的特性

(1)沒(méi)有字節(jié)或半字?jǐn)?shù)據(jù)的運(yùn)算:所有算術(shù)和邏輯操作都是在32位的數(shù)據(jù)上進(jìn)行。字節(jié)或半字的運(yùn)算需要大量額外的資源和許多額外的操作碼,而且很少有用。

然而當(dāng)程序明確做short或者char運(yùn)算時(shí),MIPS編譯器必須插入額外的代碼以保證結(jié)果回繞和溢出,生成跟8-或16-位機(jī)器上一樣的結(jié)果。

(2)沒(méi)有對(duì)堆棧的特殊支持:傳統(tǒng)的MIPS匯編確實(shí)定義了一個(gè)寄存器作為堆棧指針,但是硬件上SP沒(méi)有任何特殊之處。有一種推薦的關(guān)于子程序調(diào)用的棧幀布局,這樣可以混合不同語(yǔ)言和編譯器的模塊;你應(yīng)當(dāng)遵守這些約定,但是這些與硬件無(wú)關(guān)。

(3)最少的子程序支持:有一點(diǎn)比較特別:跳轉(zhuǎn)指令有一個(gè)跳轉(zhuǎn)并鏈接的選項(xiàng),把返回地址存入一個(gè)寄存器,默認(rèn)是#31.所以方便起見(jiàn)習(xí)慣上用#31作為返回地址寄存器。

這樣做比起把返回地址保存到堆棧上要簡(jiǎn)單,但卻帶來(lái)明顯的好處。隨便舉兩個(gè)好處瞧瞧:第一,保持了分支和訪(fǎng)存指令的完全分離;第二,當(dāng)調(diào)用許多根本不需要在堆棧保存返回地址的小程序時(shí),這樣做又助于提高效率。

(4)最少的中斷處理:很難看到硬件能做得比這更少的了。它把重新開(kāi)始的地址存放到一個(gè)特殊的寄存器,接著僅修改剛剛夠找出怎么回事的少量機(jī)器狀態(tài)并禁止進(jìn)一步中斷,然后跳轉(zhuǎn)到低端內(nèi)存事先定義好的一個(gè)單一入口地址,伺候一切由軟件負(fù)責(zé)。

(5)最少的異常處理:中斷只是異常的一種類(lèi)型。一個(gè)異??梢詠?lái)自一個(gè)中斷,來(lái)自對(duì)物理上不存在的虛擬內(nèi)存的試圖訪(fǎng)問(wèn)、或者其它很多情況。一條有意引入的、類(lèi)似系統(tǒng)調(diào)用的、用來(lái)進(jìn)入受保護(hù)的OS內(nèi)核的自陷指令發(fā)生時(shí),也會(huì)進(jìn)入一個(gè)異常。所有異常都導(dǎo)致控制傳遞到同樣的固定入口地址。

按照約定,保留了兩個(gè)通用寄存器給用于異常,這樣異常處理程序可以自舉。對(duì)于運(yùn)行在允許中斷和自陷的任何系統(tǒng)上的程序來(lái)說(shuō),這兩個(gè)寄存器的值隨時(shí)可能變化,所以最好不要用。

四、程序員可見(jiàn)的流水線(xiàn)效果

到目前為止,以上就是你需要從一個(gè)簡(jiǎn)化的CPU了解的全部?jī)?nèi)容。中央處理器(英文Central Processing Unit,CPU)是一臺(tái)計(jì)算機(jī)的運(yùn)算核心和控制核心。CPU、內(nèi)部存儲(chǔ)器和輸入/輸出設(shè)備是電子計(jì)算機(jī)三大核心部件。電腦中所有操作都由CPU負(fù)責(zé)讀取指令,對(duì)指令譯碼并執(zhí)行指令的核心部件。其功能主要是解釋計(jì)算機(jī)指令以及處理計(jì)算機(jī)軟件中的數(shù)據(jù)。所謂的計(jì)算機(jī)的可編程性主要是指對(duì)CPU的編程。 CPU由運(yùn)算器、控制器和寄存器及實(shí)現(xiàn)它們之間聯(lián)系的數(shù)據(jù)、控制及狀態(tài)的總線(xiàn)構(gòu)成。差不多所有的CPU的運(yùn)作原理可分為四個(gè)階段:提?。‵etch)、解碼(Decode)、執(zhí)行(Execute)和寫(xiě)回(Writeback)。然而使得指令集適應(yīng)流水線(xiàn)也會(huì)導(dǎo)致一些奇怪的效果。

圖1.3:流水線(xiàn)和分支延遲

(1)延遲分支:MIPS CPU的流水線(xiàn)結(jié)構(gòu)意味著當(dāng)一個(gè)跳轉(zhuǎn)/分支指令到達(dá)執(zhí)行階段產(chǎn)生新的程序計(jì)數(shù)器值時(shí),跟在跳轉(zhuǎn)指令后的指令已經(jīng)開(kāi)始了,該體系結(jié)構(gòu)并不是丟棄這部分有潛在用途的工作,而是要求緊跟分支后的指令總是在分支目標(biāo)指令之前執(zhí)行。MIPS處理器是八十年代中期RISC CPU設(shè)計(jì)的一大熱點(diǎn)。MIPS是賣(mài)的最好的RISC CPU,可以從任何地方,如Sony, Nintendo的游戲機(jī),Cisco的路由器和SGI超級(jí)計(jì)算機(jī),看見(jiàn)MIPS產(chǎn)品在銷(xiāo)售。目前隨著RISC體系結(jié)構(gòu)遭到x86芯片的競(jìng)爭(zhēng),MIPS有可能是起初RISC CPU設(shè)計(jì)中唯一的一個(gè)在本世紀(jì)盈利的。和英特爾相比,MIPS的授權(quán)費(fèi)用比較低,也就為除英特爾外的大多數(shù)芯片廠(chǎng)商所采用。

要是硬件沒(méi)有特殊處理,是否分支的決定以及分支的目標(biāo)地址,就會(huì)在ALU流水階段結(jié)束時(shí)得到——到此時(shí),如圖1.3所示,已經(jīng)太晚了,甚至在下下一個(gè)流水線(xiàn)槽都來(lái)不及提供一個(gè)指令地址。

但是分支指令的重要性足以給予特殊處理。從圖1.3所示,提供了一條經(jīng)ALU的特殊路徑可以讓分支目標(biāo)地址提早半個(gè)周期到達(dá)。連同取指階段多出來(lái)的半個(gè)時(shí)鐘周期的偏移,就剛好來(lái)得及去除分支目標(biāo)指令作為下下一個(gè)指令。

編譯器系統(tǒng)或者匯編程序應(yīng)該考慮甚至利用分支延遲;結(jié)果是通常有可能通過(guò)適當(dāng)安排使得延遲槽中的指令做些有用的工作。經(jīng)??梢园褎e處的指令一道延遲槽中。

對(duì)于條件分支問(wèn)題會(huì)有點(diǎn)復(fù)雜,分支延遲指令應(yīng)當(dāng)對(duì)兩條分支路徑都無(wú)害。實(shí)在找不到有用的事情可做時(shí),延遲槽中填入一條nop指令。除非明確要求,否則許多MIPS匯編器都對(duì)程序員隱藏這個(gè)古怪的特性。

圖1.4:流水線(xiàn)和加載延遲

(2)數(shù)據(jù)加載延遲:流水線(xiàn)的另一個(gè)后果就是一條加載指令的數(shù)據(jù)在下一條指令的ALU階段的開(kāi)始才從高速緩存/內(nèi)存系統(tǒng)到達(dá)——所以在下一條指令中不能使用加載的數(shù)據(jù)。

緊接加載指令后的指令位置稱(chēng)為加載延遲槽,一個(gè)優(yōu)化的編譯器將試圖用它做些有用的事情。匯編器對(duì)程序員隱藏這一點(diǎn),但可能插入一條nop指令。

在現(xiàn)代的MIPS CPU上,加載結(jié)果是互鎖的:如果你試圖過(guò)早使用結(jié)果,CPU將停下來(lái)等待數(shù)據(jù)到達(dá)。但是早期的MIPS CPU沒(méi)有互鎖,在延遲槽中試圖使用數(shù)據(jù)將導(dǎo)致無(wú)法預(yù)料的結(jié)果。



QICK

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

為增進(jìn)大家對(duì)嵌入式的認(rèn)識(shí),本文將對(duì)嵌入式開(kāi)發(fā)以及學(xué)習(xí)嵌入式需要注意的事項(xiàng)予以介紹。

關(guān)鍵字: 嵌入式 指數(shù) 嵌入式開(kāi)發(fā)

中國(guó)上海,2025年4月7日 — 全球領(lǐng)先的嵌入式系統(tǒng)開(kāi)發(fā)軟件解決方案供應(yīng)商IAR正式發(fā)布全新云就緒平臺(tái),為嵌入式開(kāi)發(fā)團(tuán)隊(duì)提供企業(yè)級(jí)的可擴(kuò)展性、安全性和自動(dòng)化能力。該平臺(tái)于在德國(guó)紐倫堡舉辦的embedded world...

關(guān)鍵字: 自動(dòng)化 嵌入式開(kāi)發(fā) RISC-V

在嵌入式系統(tǒng)開(kāi)發(fā)領(lǐng)域,VS Code(Visual Studio Code)作為一款輕量級(jí)但功能強(qiáng)大的代碼編輯器,正逐漸成為開(kāi)發(fā)者的首選工具。本文將詳細(xì)介紹如何在VS Code上搭建嵌入式開(kāi)發(fā)環(huán)境,并分享一些調(diào)試技巧。

關(guān)鍵字: VS Code 嵌入式開(kāi)發(fā)

隨著汽車(chē)電子化、智能化程度的不斷提高,車(chē)載以太網(wǎng)(Automotive Ethernet)作為新一代車(chē)載網(wǎng)絡(luò)通信技術(shù),正逐漸成為汽車(chē)內(nèi)部通信的主干網(wǎng)絡(luò)。它以其高帶寬、低延遲和強(qiáng)抗干擾能力,為汽車(chē)提供了更加高效、可靠的數(shù)據(jù)...

關(guān)鍵字: 車(chē)載以太網(wǎng) 嵌入式開(kāi)發(fā)

隨著物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)對(duì)實(shí)時(shí)性、低功耗和可擴(kuò)展性的要求越來(lái)越高。Zephyr RTOS(實(shí)時(shí)操作系統(tǒng))作為一款專(zhuān)為資源受限設(shè)備設(shè)計(jì)的開(kāi)源RTOS,憑借其輕量級(jí)、模塊化和高可擴(kuò)展性,在嵌入式開(kāi)發(fā)領(lǐng)域得到了廣泛...

關(guān)鍵字: 嵌入式開(kāi)發(fā) Zephyr RTOS 物聯(lián)網(wǎng)

嵌入式開(kāi)發(fā),作為電子工程和計(jì)算機(jī)科學(xué)交叉領(lǐng)域的重要分支,對(duì)于構(gòu)建穩(wěn)定、高效的軟件系統(tǒng)提出了獨(dú)特挑戰(zhàn)。本文將深入探討嵌入式開(kāi)發(fā)的可靠方法論,結(jié)合實(shí)例與代碼,為開(kāi)發(fā)者提供一套系統(tǒng)化的指導(dǎo)原則。

關(guān)鍵字: 嵌入式開(kāi)發(fā) 計(jì)算機(jī)科學(xué)

嵌入式開(kāi)發(fā),作為電子工程和計(jì)算機(jī)科學(xué)的交匯點(diǎn),對(duì)軟件系統(tǒng)的穩(wěn)定性和效率提出了極高的要求。本文將結(jié)合具體案例,深入探討嵌入式開(kāi)發(fā)中的可靠方法論,為開(kāi)發(fā)者提供一套系統(tǒng)化的指導(dǎo)原則。

關(guān)鍵字: 嵌入式開(kāi)發(fā) 智能家居

在科技日新月異的今天,嵌入式開(kāi)發(fā)作為連接硬件與軟件的橋梁,在物聯(lián)網(wǎng)、智能設(shè)備、工業(yè)自動(dòng)化等領(lǐng)域扮演著至關(guān)重要的角色。對(duì)于許多技術(shù)愛(ài)好者而言,自學(xué)嵌入式開(kāi)發(fā)既是一個(gè)充滿(mǎn)魅力的挑戰(zhàn),也是一條通往創(chuàng)新實(shí)踐的必由之路。然而,這條...

關(guān)鍵字: 嵌入式開(kāi)發(fā) 物聯(lián)網(wǎng)

在科技日新月異的今天,嵌入式開(kāi)發(fā)與Java開(kāi)發(fā)作為軟件開(kāi)發(fā)領(lǐng)域的兩大重要分支,各自展現(xiàn)出了獨(dú)特的發(fā)展軌跡和市場(chǎng)前景。近年來(lái),關(guān)于嵌入式開(kāi)發(fā)是否會(huì)像Java開(kāi)發(fā)一樣“卷”的討論日益增多,這背后既反映了市場(chǎng)對(duì)技術(shù)趨勢(shì)的敏銳洞...

關(guān)鍵字: 嵌入式開(kāi)發(fā) Java開(kāi)發(fā)

現(xiàn)在在嵌入式開(kāi)發(fā)MCU中,八塊MCU仍占據(jù)三分之一以上的份額,在工業(yè)控制,安全,物聯(lián)網(wǎng),消費(fèi)電子等諸多領(lǐng)域,八塊MCU依然隨處可見(jiàn)。

關(guān)鍵字: 嵌入式開(kāi)發(fā) MCU
關(guān)閉