指令集體系結構 - 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計算機
- 指令集結構與微體系結構
- 設計一個簡易的處理器(1)--定義指令集體系結構(ISA)
- 指令集體系結構_計算機體系結構:指令程式碼計算機
- (計算機體系結構)MIPS指令集結構計算機
- CPU、指令集、體系結構以及作業系統作業系統
- Runtime中的 isa 結構體結構體
- 指令集結構
- 2_指令集、體系架構、微架構架構
- 【JZ2440】【知識點0】【ARM指令集體系結構和ARM系列】
- 計算機系統5-> 計組與體系結構2 | MIPS指令集(上)| 指令系統計算機
- Oracle體系結構之-記憶體結構Oracle記憶體
- 【PG體系結構】PG體系結構簡單說明
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- [Virtualization]ESXi體系結構與記憶體管理(一)體系結構記憶體
- Oracle體系結構之-物理結構Oracle
- BeanFactory體系結構Bean
- 【JVM體系結構】JVM
- Servlet 體系結構Servlet
- MySQL 體系結構MySql
- MongoDB 體系結構MongoDB
- 前端結構體系前端結構體
- 【EJB體系結構】
- postgresql體系結構SQL
- 體系結構1
- oracle體系結構Oracle
- SQLite體系結構SQLite
- ORACLE體系結構小結Oracle
- oracle體系結構總結Oracle
- ISA軟體研究初探
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- HDFS的體系結構
- oracle體系結構(轉)Oracle
- 1、JVM體系結構JVM
- MySQL 一 體系結構MySql
- PostgreSQL體系結構概述SQL
- ORACLE-體系結構Oracle
- android 體系結構Android