CPU指令集存儲位置在哪裏?

首先,CPU指令集是在CPU設計時固化在裏面的“硬程序”,整合在CPU內部的邏輯電路中,不是什麼代碼,也談不上“存儲”。所以我們在CPU裏是不可能找到“指令集”的實體的,如果非要具象化,那它就是“彙編語言”轉換到“機器碼”(相當於一個翻譯過程)+CPU執行機器碼的晶體管和邏輯電路的集合。

CPU指令集與CPU的架構息息相關,我們常見的有英特爾和AMD爲代表的X86體系,大量用於電腦和服務器;另外就是精簡指令集架構的ARM,集於ARM架構的CPU大量用於移動設備。比方說我們做了一個應用程序,想同時可以運行在PC和手機上,那樣把它編譯成X86版本就可以在X86指令集上運行,相應的再編譯一個ARM版本就可以在ARM指令集上運行,不管編譯成什麼版本,從哪個設備上運行,大體流程就是從軟件請求>操作系統請求>CPU指令集執行這麼一個過程,大量跨平臺的應用程序就是這樣來的。

指令集的存在規定了CPU如何識別彙編指令,以及如何與操作系統(上層)交互。打個比方說,指令集就像路上的紅綠燈,紅燈停綠燈行,車輛什麼時候可以走,什麼時候不可以走,都是按這個既定規則才能執行的,而且這個規則不可變動。我們常用的win7、win10等操作系統的底層架構就是基於CPU的指令集進行設計的,必須無條件服從指令集體系,所以問題所說的“操作系統從哪裏獲取CPU指令集信息”的說法是不成立的。

我們再談一談具體的指令集,像英特爾主流酷睿處理器中就具備EM64T,MMX,SSE,SSE2,SSE3,SSE4A,SSE4.1,SSE4.2,AVX,AVX2等指令集,AMD處理器也有一些專有的指令集,但是還是以兼容英特爾的爲主,爲什麼要這樣,首先英特爾多年雄厚的技術實力使得它牢牢掌握着指令集制定權(開發全新指令集可不是件容易的事),支持新指令集的CPU推出後,衆多開發者會開始進行學習並應用到新的應用程序中,從而提高運行效率,對於AMD而言,開發新指令集的實力遠不如英特爾,也耗不起那個時間,索性就直接支持英特爾的指令集,這樣也能保證CPU的速度,同時讓廣大應用開發者還免去了重複學習成本。

每個指令集都有自身的用途,比如SSE指令集主要在於加強CPU浮點運算效能,AVX指令集則可以大大提高CPU視頻編碼的效能,它們就像一道道高效率的數學公式,如果有應用程序針對這些指令集進行設計優化,則可以大大提高程序某些方面的運行效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章