C66x指令集(一)——指令集架構初探索
最近面試的時候被問到指令集,一頭霧水,由於之前的工作沒有涉及到指令集方面的知識,現總結成文。
定義
指令集架構(英語:Instruction Set Architecture,縮寫為ISA),又稱指令集或指令集體系,是計算機體系結構中與程式設計有關的部分,包含了基本資料型別,指令集,暫存器,定址模式,儲存體系,中斷,異常處理以及外部I/O。指令集架構包含一系列的opcode即操作碼(機器語言),以及由特定處理器執行的基本命令。(wiki定義 )
關於指令集的工作方式,知乎上有一個回答我覺得還可以,這裡引用一下:
CPU的指令集存放在哪裡?
其內容如下:
比如我們設計一套指令集,其中肯定有條加法指令。比如Add R1 R2 。我們可以認為這條指令的意思是計算暫存器R1中的內容和R2的和,然後把結果存到R1暫存器中。
那麼經過編譯後這條指令會變成二進位制,比如010100010010 。這條二進位制指令一共12位。明顯可以分為三大部分。最前面的0101表示這是條加法指令,後面0001說的是第一個運算元是暫存器1,最後0010說的是第二個數就是暫存器2(其實實際沒有這麼簡單的指令,至少應該區分運算元是暫存器還是直接的資料,但為了把這說的更容易理解作了簡化)。我們可以通過十二根導線把這條指令輸入一個CPU中。導線通電就是1,不通電就是0 。為了敘述方便我們從左到右用A0-A11給這12根導線編上號。
然後計算機會分析這條指令。步驟如下:
最開始的兩根導線A0和A1,第一根有電第二根沒電,就能知道這是一條運算指令(而非儲存器操作或者跳轉等指令)。那麼指令將被送入邏輯運算單元(ALU)去進行計算。其實很簡單。只要這兩根線控制接下來那部分電路開關即可。
接下來的A2和A3,01表示加法,那麼就走加法運算那部分電路,關閉減法等運算電路。
A4-A7將被送入暫存器電路,從中讀取暫存器儲存的值。送到ALU的第一個資料介面電路上。
後面的A8-A11同樣被送入暫存器選擇電路,接通R2暫存器,然後R2就把值送出來,放到ALU的第二個資料介面上。
ALU開始運算,把兩個介面電路上的資料加起來,然後輸出。
最後結果又被送回R1。
基本上簡單的運算計算機就是這麼操作的。他其實不知道你那些指令都是什麼意思。具體的指令程式設計機器碼後就會變成數位電路的開關訊號。其中某幾段會作為控制訊號,控制其他部分的資料走不同的電路以執行運算。他沒有一個地方儲存著如何翻譯這些機器碼的字典,所有機器碼的意義都被體現在整個電路的設計中了。
當然,從彙編到機器碼這步是彙編程式翻譯的。彙編程式當然知道某條指令要翻譯成什麼樣的機器碼。
所以指令集的目的就是為了實現底層操作,為每一種運算,每一種操作(如資料移動)提供相應的暫存器級別的動作,這些暫存器再和最底層的邏輯電路對應,最終完成頂層類似於"int a = 0; a = 1 + 2"的功能。
Reference:
[1] Wiki:指令集架構
[2] 知乎——CPU的指令集放在哪裡?
相關文章
- 2_指令集、體系架構、微架構架構
- Lec 03 系統指令集架構架構
- 指令集結構
- 處理器指令集架構的位數架構
- 處理器核、Core、處理器、CPU區別&&指令集架構與微架構的區別&&32位與64位指令集架構說明架構
- ARM晶片、核心、架構、指令集的聯絡與區別晶片架構
- javap 指令集Java
- 指令集彙總
- CISC(複雜指令集)與RISC(精簡指令集)的區別
- JVM筆記 -- JVM的發展以及基於棧的指令集架構JVM筆記架構
- (計算機體系結構)MIPS指令集結構計算機
- C++系統相關操作4 - 獲取CPU(指令集)架構型別C++架構型別
- 【軟體硬體】精簡指令集和複雜指令集的區別
- CPU指令集SSE、AVX等
- 計算機基礎——指令集體系結構ISA計算機
- 處理器、指令集架構和作業系統——32-bit與64-bit架構作業系統
- ARM彙編指令集彙總
- 安裝Tensorflow使用AVX指令集
- IOT2050基本使用和指令集
- 指令集體系結構_計算機體系結構:指令程式碼計算機
- OpenHarmony LiteOS C-SKY指令集移植指北
- 計算機指令集的相關概念計算機
- RSIC-V指令集——spec閱讀記錄
- 動手寫一個簡單版的谷歌TPU-指令集谷歌
- C語言轉寫成MIPS指令集彙編以及MIPS指令集彙編中函式呼叫時棧的變化C語言函式
- 死磕以太坊原始碼分析之EVM指令集原始碼
- Tomcat 架構探索Tomcat架構
- 解密prompt系列5. APE+SELF=自動化指令集構建程式碼實現解密
- Simd庫——影像處理領域的CPU指令集加速庫
- 架構-初識BFF架構
- 架構-初識DDD架構
- 探索ABP基礎架構架構
- 關於使用向量指令集對memcpy最佳化的分析memcpy
- Golang實現JAVA虛擬機器-指令集和直譯器GolangJava虛擬機
- 微服務架構初識微服務架構
- 計算機系統5-> 計組與體系結構2 | MIPS指令集(上)| 指令系統計算機
- 探索ABP基礎架構-下架構
- iOS外掛化架構探索iOS架構