關於處理器指令集與微構架的訴說

          大二的時候學了STM32書上一直說他是ARM指令集Cortex-M3微構架,上微機原理時老師又講了什麼X86指令集,天天寫彙編更是把我搞得暈頭轉向,當時一直有個疑問

寫51用的彙編和STM32的彙編,X86的彙編,他們寫起來有些形似,但是仔細看卻用以下不同的地方,有時連源操作數和目的操作數的位置都不一樣,還會有一些名字不一樣

的指令,同樣是彙編語言差距怎麼就那麼大捏。  

          現在仔細想想他們到底是些什麼東西。

          說起指令集就不得不說與他密切相關的微構架,中國爲什麼一直要搞自己的CPU但一直搞不出來捏,其實也不能光說集成電路不行,另外一個主要原因就是沒有自己的指令

集。“漢芯”就不說了純屬改logo;“龍芯”是用的MIPS指令集,不過用的是自己的微構架,其實這已經是我國電子事業的進步了。

           先說指令集,以下是當今幾個盛興的指令集。

     X86構架,主要是應用於電腦CPU,主要應用公司是intel和AMD。

     ARM構架,是全球銷量最大的,主要應用於手機,主要廠商爲:高通,TI,東芝,三星。

     MIPS構架,和ARM構架應用領域重疊。

     Power構架,主要公司IBM,Freescale,處於衰落。

     C6000構架,應用於DSP,主要廠商TI。

      構架不同就會引起彙編的不同,這就解答了前面我我的疑問,構架不同引起他們的操作數個數不同,操作數順序不同,存儲方式不同,尋址方式等的不同,其中各有優劣,

也有他們各自所適合的領域。

     不過好的指令集應該具有以下特點:兼容性,易實現,易編程,高性能。

    下面說一下微構架,他對處理器至關重要,主要影響他的效率,速度。

    先說流水線,最經典的是五級流水線,DSP具有更深的流水線,有流水線就存在冒險,冒險分爲:結構冒險,數據冒險和控制冒險。

    然後是分支預測,所謂分支就是程序遇到判斷是有可能會發生跳轉,開始沒有運行到這裏的時候處理器並不知道會不會發生跳轉,這樣由於流水線的原因就必須預測一條路來

運行,如果預測錯誤那麼各級流水線就都不能用了,要重新開始流水線。所以,這個預測算法就有講究了,一般是用2位預測,如果發生跳轉就加一加到3爲止,如果不跳轉就

減一減到零爲止,當計數器爲0,1時,就預測分支不執行,當爲2,3時預測分支執行。

    亂序也是很重要的一點,什麼情況下能亂序,就是在指令之間沒用相關性的時候才能亂序,去相關性。

    處理器並行設計,指令並行,數據並行,線程並行



發佈了41 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章