指令集架構
指令集架構(英語:,縮寫為ISA),又稱指令集或指令集体系,是计算机体系结构中與程序設計有關的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中斷,異常處理以及外部I/O。指令集架構包含一系列的opcode即操作码(機器語言),以及由特定處理器执行的基本命令。
不同的处理器“家族”——例如Intel IA-32和x86-64、IBM/Freescale Power和ARM处理器家族——有不同的指令集架构。[1]
指令集体系与微架构(一套用于执行指令集的微处理器设计方法)不同。使用不同微架構的電腦可以共享一种指令集。例如,Intel的Pentium和AMD的AMD Athlon,兩者几乎採用相同版本的x86指令集体系,但是兩者在内部设计上有本质的区别。
一些虛擬機器支持基于Smalltalk,Java虛擬機,微軟的公共語言运行时虛擬機所生成的字节码,他們的指令集体系將bytecode(字节码)从作为一般手段的代码路径翻譯成本地的機器語言,并通过解译执行并不常用的代码路径,全美達以相同的方式开发了基于x86指令体系的VLIW處理器。
指令集的分类
复杂指令集计算机包含许多应用程序中很少使用的特定指令,由此产生的缺陷是指令长度不固定。精简指令集计算机通过只执行在程序中经常使用的指令来简化处理器的结构,而特殊操作则以子程序的方式实现,它们的特殊使用通过处理器额外的执行时间来弥补。理论上的重要类型还包括最小指令集计算机与单指令集计算机,但都未用作商业处理器。另外一种衍生类型是超长指令字,处理器接受许多经过编码的指令并通过检索提取出一个指令字并执行。
機器語言
機器語言是由声明和指令所組成的。在处理结构上,一個特定指令指明了以下几个部分:
複雜的操作可以藉由將簡單的指令合併而達成,可以(在冯·诺依曼体系中)連續的執行,也可以藉控制流來執行指令。
指令类型
有效的指令操作須包含:
複雜指令
一些電腦在他們的指令集架構內包含複雜指令。複雜指令包含:
- 將許多暫存器存成堆疊的形式。
- 移動記憶體內大筆的資料。
- 複雜或是浮點數運算(正弦,餘弦,平方根等等)
- 執行test-and-set指令。
- 執行數字存在記憶體而非暫存器的運算
有一種複雜指令單指令流多資料流(),或向量指令,這是一種可以在同一時間對多筆資料進行相同運算的操作。有能力在短時間內將大筆的向量和矩陣計算完成。指令使平行計算變得簡單,各種指令集被開發出來,例如MMX,3DNow!以及AltiVec。
指令的組成
在傳統的架構上,一條指令包含op code,表示運算的方式,以及零個或是更多的運算元,有些像是運算元的數字可能指的是暫存器的編號,還有記憶體位置,或是文字資料。
在超長指令字(VLIW)的結構中,包含了許多微指令,藉此將複雜的指令分解為簡單的指令。
指令集的實作
在設計處理器內的微架構時,工程師使用藉電路連接的區塊來架構,區塊用來表示加法器,乘法器,計數器,暫存器,算術邏輯單元等等,暫存器傳遞語言通常被用來描述被解碼的指令,指令是藉由微架構來執行指令。 有兩種基本的方法來建構控制單元,藉控制單元,以微架構作為通路來執行指令:
- 早期的電腦和採用精簡指令集的電腦藉將電路接線(像是微架構剩下的部分)。
- 其他的裝置使用微程序來達成—像是電晶體ROM或PLA(即使RAM已使用很久)。
電腦微处理器的指令集架構(Instruction Set Architecture)常见的有三种:
- 复杂指令集运算(Complex Instruction Set Computing,CISC)
- 目前x86架构微处理器如Intel的Pentium/Celeron/Xeon与AMD的Athlon/Duron/Sempron;以及其64位扩展系统的x86-64架构的Intel 64的Intel Core/Core 2/Celeron/Pentium/Xeon与AMD64的Phenom II/Phenom/Athlon 64/Athlon II/Opteron/AMD APU/Ryzen/EPYC都属于复杂指令集。主要针对的操作系统是微软的Windows和苹果公司的macOS。另外Linux,一些UNIX等,都可以运行在x86(复杂指令集)架构的微处理器。
- 精简指令集运算(Reduced Instruction Set Computing,RISC)
- 这种指令集运算包括惠普的PA-RISC,国际商业机器的PowerPC,康柏(後被惠普收购)的Alpha,美普思科技公司的MIPS,SUN公司的SPARC,ARM公司的ARM架構等。目前有UNIX、Linux以及包括iOS、Android、Windows Phone等在内的大多数移动操作系统运行在精简指令集的处理器上。
- 顯式並行指令運算(Explicitly Parallel Instruction Computing,EPIC)
- 顯式並行指令運算乃先进的全新指令集运算,只有Intel的IA-64架构的纯64位微处理器的Itanium/Itanium 2。EPIC指令集运算的IA-64架构主要针对的操作系统是微软64位安腾版的Windows XP以及64位安腾版的Windows Server 2003。另外一些64位的Linux,一些64位的UNIX也可以运行IA-64(顯式並行指令運算)架构。
- 超長指令字指令集运算(VLIW)
- 通過將多條指令放入一個指令字,有效的提高了CPU各個計算功能部件的利用效率,提高了程序的性能
參考文獻
- Randal E. Bryant; David R. O'Hallaron. Third. Pearson Education. 2016: 352.
延伸閱讀
- Bowen, Jonathan P. 9 (6): 274–290. July–August 1985. doi:10.1016/0141-9331(85)90116-4.
外部連結
- Programming Textfiles: Bowen's Instruction Summary Cards
- Mark Smotherman's Historical Computer Designs Page (页面存档备份,存于)