Instruction Set Architecture
ISA全称 Instruction Set Architecture. 其指的是一种围绕某种特定的指令集而构建的架构。在这种架构当中,指令集就是软件开发和硬件开发者的“合约”。软件开发者只需要关心自己设计的软件能被编译器编译成该指令集的指令即可,而不需要关心底层的硬件如何实现。而对于硬件设计师而言,他们只需要确保自己设计的处理器能满足指令集的要求即可。这使得处理器设计师可以在对软件设计者透明的情况下,更新处理器的设计,加快处理速度,进行优化而不用知会软件设计师,只要指令集不变,便能轻松实现向后兼容。同时,ISA也能使软件设计师设计的程序具有良好的可移植性,只需要确保该程序运行的机器的指令集是特定的指令集即可,不需要关心是什么厂商生产的什么配置机器。每一个指令集都有自己的汇编语言,如Intel使用的是X86指令集的汇编语言。通常可以使用操作数的数目来分辨指令集,譬如,指令集是有两个还是三个操作数对应的是两地址还是三地址的架构。
Dynamic Static Interface
DSI意思就是一个动态与静态的分界线。实质是编译器和底层硬件的分界线。叫做动态和静态的分界线是因为编译器和硬件对运行的程序的优化是静态/ 动态的。因为编译器的优化主要在于循环分解等在源代码的基础上作出的文本上的静态修改,所以,编译器的优化是静态的。而底层硬件的优化是通过Instrction paralism的方式,通过找可并行运行的代码、通过流水线的功能优化运行时序等动态方式来实现。
根据不同的计算机架构,DSI的位置的不一样,分为CISC(Complex Instruction Set Computer)和RISC(reduced Instruction Set Computer)。前者通过增加指令集的复杂度来通过硬件优化程序的运行速度(增加Microcode的模块)。后者通过编译器来优化程序,减少了Microcode模块和指令集的复杂度。
可以通过下面两幅图来体现:
Reference:
John Paul Shen <Modern Processor Design>