指令集體系結構 - ISA
1. 指令集體系結構(Instruction-Set Architecture, ISA)
1.1 定義
一個處理器支援的指令和指令的位元組級編碼就是這個處理器的ISA,包括很多個部分:
- 指令集
- 指令集編碼
- 基本資料型別
- 一組程式設計規範
- 暫存器
- 定址模式
- 儲存體系
- 異常事件處理
- 中斷
- 外部I/O
不同的處理器家族,例如Intel IA32、IBM/Freescale PowerPC和ARM,都有不同的ISA。維基百科 - Architecture list
1.2 作用
- ISA在編譯器編寫者(CPU軟體)和處理器設計人員(CPU硬體)之間提供了一個抽象層:
- 處理器設計者:依據ISA來設計處理器
- 處理器使用者(如:寫編譯器的牛*程式設計師):依據ISA就知道CPU選用的指令集,就知道自己可以使用哪些指令以及遵循哪些規範
- 定義處理器上的軟體如何構建,這是ISA的最重要內涵,現代處理器都是支援高階語言程式設計、作業系統等等特性,ISA要定義出指令集內的指令是如何支撐起C語言裡堆疊、過程呼叫,作業系統裡異常、中斷,多媒體平臺裡數字影像處理、3D加速等等。
1.3 TIPS
- 常見的一個誤解的答案:指令集並不儲存於CPU中,應該這樣說:CPU本身是指令集(結構)的一個實現/例項;
- 一個ISA可能包含多個指令集;
2. ISA與微體系結構
ISA只是描述了CPU應該支援的每條指令是做什麼事的,即指令的功能。而微體系結構是描述處理器實際上是怎麼實現的。
2.1 微體系結構
微體系結構是計算機體系結構中偏向硬體的部分,它可以理解成數位電路如何實現處理器中的各個功能,通常關心的內容包括,指令的流水線結構,計算單元的電路(加法器等等),儲存器的結構(暫存器堆、Cache的結構)等等 ;
一個例項如下:
1. 拿Intel來說,(其ISA是IA-32等)其pentium 4處理器的微體系結構是NetBurst,現代,其Core(酷睿)系列CPU的微體系結構已經經歷了好幾代:Bloomfield(2008年)、Lynnfield(2009年)、Clarksfield(2009年)、Ar randale(2010年)、Gulftown(2010年)、Sandy Bridge(2011年)、Ivy Bridge(2012年)、Haswell(2013年)、Haswell Devil’s Canyon(2014年)、Broadwell(2015年)、Skylake(2015年)。
2. 拿ARM來說,(其ISA是ARMv7等)其微體系結構是ARM11等從11往後叫cortex系列,其中cortex-A系列有32位的A7、A9、A15,64位的A53、A57。
3. 指令集(Instruction set)
3.1 定義
通常會把CPU的擴充套件指令集稱為”CPU的指令集”(因為基本的,類似加減的指令似乎是必須被CPU所支援的指令)。每款CPU在設計時就規定了一系列與其硬體電路相配合的指令集。
指令集可分為複雜指令集(CISC:sisk)和精簡指令集(RISC:risk)兩部分,這部分暫不繼續討論了。
Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的擴充套件指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。維基百科 - Comparison instruction set
3.2 指令
一條二進位制機器指令由:指令碼(操作碼)+運算元組成。
- 操作碼用來說明:指令的功能和執行的操作;
- 運算元說明:操作所涉及的源和目的資料的位置;
- 源:立即數(即指令中包含的常亮)、暫存器、儲存器、I/O埠等;
一個流程
一個我思考出來的可能的流程是這樣:
- CPU開發商
- 一個CPU廠商決定開發一個CPU,他們先要決定/選定一種指令集體系結構,他們當然不想自己開發,好了他們選用ARM的ARMv7;
- 那麼該如何實現ARMv7呢?我們還是不去自己設計微體系結構了,還是用ARM公司配套的cortex吧,這樣我們就能在矽晶片上做出一個CPU了;(當然中間省去了很多步驟)
- CPU使用者(開發一個C編譯器)
- 這顆CPU可以執行什麼樣的指令呢?發現使用CPU使用的是ARMv7,那麼就檢視ARMv7的文件就好了,這是RISC的一種
- 編譯器完成了,它的功能是:將C原始碼編譯為可以在ARMv7上執行的二進位制命令程式碼,即目標檔案
- 此時一個小程式設計師寫了一段簡單C程式test.c,我們呼叫編譯器將test.c編譯為ARMv7上的可執行檔案test.o
- 目標檔案中包含了程式怎麼開始和結束執行、需要操作的資料、如何與作業系統互動等等。只要執行這個目標程式,CPU就能執行其中的指令了
後續的理解
何為x86 - 20160921記錄
Intel 8086是一個Intel於1978年設計的16位微處理器晶片。資料匯流排16位,CPU20條地址匯流排-直接定址1MB儲存空間,每個儲存空間可以存放一個Byte資訊;20條地址匯流排:20根線條,每個有0個1兩種狀態,那麼組合起來就有2^20中結果,也就是1048576 bit = 131072 byte = 128KB
來源於8086指令集的一系列處理器,都稱為x86處理器。
收到
相關文章
- 計算機基礎——指令集體系結構ISA計算機
- (計算機體系結構)MIPS指令集結構計算機
- 指令集體系結構_計算機體系結構:指令程式碼計算機
- Runtime中的 isa 結構體結構體
- 指令集結構
- 2_指令集、體系架構、微架構架構
- 計算機系統5-> 計組與體系結構2 | MIPS指令集(上)| 指令系統計算機
- Lec 03 系統指令集架構架構
- 【PG體系結構】PG體系結構簡單說明
- MySQL 體系結構MySql
- 【JVM體系結構】JVM
- BeanFactory體系結構Bean
- MongoDB 體系結構MongoDB
- Servlet 體系結構Servlet
- 3:Oracle體系結構(邏輯結構)Oracle
- HDFS的體系結構
- MySQL 一 體系結構MySql
- oracle體系結構(轉)Oracle
- PostgreSQL體系結構概述SQL
- 1、JVM體系結構JVM
- iOS進階之路 (三)OC物件的原理 - isa 結構 & 走位iOS物件
- 軟體體系結構評估
- 作業系統體系結構作業系統
- 計算機系統6-> 計組與體系結構3 | MIPS指令集(中)| MIPS彙編指令與機器表示計算機
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- 【Oracle體系結構】 Oracle19C 系統結構介紹Oracle
- 網路管理體系結構
- 0718_oracle 體系結構Oracle
- 磁碟知識體系結構
- MySQL入門--體系結構MySql
- 計算機體系結構計算機
- MySQL體系結構概覽MySql
- 論軟體體系結構的演化
- C66x指令集(一)——指令集架構初探索架構
- DSSA特定領域軟體體系結構
- 架構知識體系總結架構
- Oracle OCP(37):Database 體系結構OracleDatabase
- java中serverlet的體系結構JavaServer
- 【JVM】體系結構及其細節JVM