微码(英语:microcode),又称微指令,是在
CISC结构下,
运行一些功能复杂的
指令时,所分解一系列相对简单的指令。相关的概念最早在1947年开始出现。
微指令(英语:microcode),又称微码,是在
CISC结构下,运行一些功能复杂的
指令时,所分解一系列相对简单的指令。相关的概念最早在1947年开始出现。
微指令的作用是将
机器指令与相关的
电路实现分离,这样一来机器指令可以更自由的进行设计与修改,而不用考虑到实际的电路架构。与其他方式比较起来,使用微指令架构可以在降低电路复杂度的同时,建构出复杂的多步骤机器指令。撰写微指令一般称为
微程序设计(microprogramming),而特定架构下的处理器实做中微指令有时会称为
微程序(microprogram)。
现代的微指令通常由
CPU工程师在设计阶段编写,并且存储在
只读内存(ROM, read-only-memory)或可编程逻辑数组(PLA, programmable logic array)中。然而有些机器会将微指令存储在静态随机存取内存(SRAM)或是
闪存(flash memory)中。它通常对普通程序员甚至是
汇编语言程序员来说是不可见的,也是无法修改的。与机器指令不同的是,机器指令必须在一系列不同的处理器之间维持兼容性,而微指令只设计成在特定的电路架构下运行,成为特定处理器设计的一部分。
指令集架构(英语:Instruction Set Architecture,缩写为ISA),又称指令集或指令集体系,是
计算机体系结构中与
程序设计有关的部分,包含了基本数据类型,指令集,
寄存器,
寻址模式,存储体系,
中断,
异常处理以及外部
I/O。指令集架构包含一系列的
opcode即操作码(
机器语言),以及由特定处理器执行的基本命令。
指令集体系与
微架构(一套用于执行指令集的微处理器设计方法)不同。使用不同微架构的电脑可以共享一种指令集。例如,
Intel的
Pentium和
AMD的AMD Athlon,两者几乎采用相同版本的
x86指令集体系,但是两者在内部设计上有本质的区别。
一些虚拟机器支持基于
Smalltalk,
Java虚拟机,微软的
公共语言运行时虚拟机所生成的
字节码,他们的指令集体系将bytecode(字节码)从作为一般手段的代码路径翻译成本地的机器语言,并通过解译执行并不常用的代码路径,
全美达以相同的方式开发了基于x86指令体系的
VLIW处理器。
复杂指令集计算机包含许多应用程序中很少使用的特定指令,由此产生的缺陷是指令长度不固定。
精简指令集计算机通过只执行在程序中经常使用的指令来简化处理器的结构,而特殊操作则以子程序的方式实现,它们的特殊使用通过处理器额外的执行时间来弥补。理论上的重要类型还包括最小指令集计算机与单指令集计算机,但都未用作商业处理器。另外一种衍生类型是
超长指令字,处理器接受许多经过编码的指令并通过检索提取出一个指令字并执行。
复杂的操作可以借由将简单的指令合并而达成,可以(在冯·诺依曼体系中)连续的执行,也可以藉
控制流来执行指令。
复杂指令集(
英文:Complex Instruction Set Computing;
缩写:CISC)是一种
微处理器指令集架构,每个指令可执行若干低阶操作,诸如从
内存读取、储存、和
计算操作,全部集于单一指令之中。与之相对的是
精简指令集。
复杂指令集的特点是指令数目多而复杂,每条指令字长并不相等,电脑必须加以判读,并为此付出了性能的代价。
在
精简指令集处理器发迹以前,许多电脑架构尝试跨越“
语义鸿沟”──设计出借由提供“高阶”指令支援高阶编程语言的指令集,诸如程序调用和返回,循环指令诸如“若非零则减量和分支”和复杂
寻址模式以允许数据结构和阵列存取以结合至单一指令。与复杂指令集相比,
精简指令集实现更容易,指令并行执行程度更好,编译器的效率更高。
属于复杂指令集的处理器有CDC 6600、System/360、
VAX、
PDP-11、Motorola 68000家族、
x86等。