深入理解计算机系统-读书笔记(第4章)- 处理器体系结构

Posted by Taolee on May 14, 2016

概念,什么是指令集体系结构

  • 机器指令

    在机器语言级别,处理器必须执行一系列指令,每一条指令执行某个简单操作。这些简单操作的组合构成了千变万化的程序。编译器负责将高级别 的语言翻译成机器指令。

  • 指令集体系结构(Instruction Architechture Set, ISA)

    一个处理器支持的指令指令的字节级编码,称为它的指令集体系结构(ISA)。如下图所示,描述了一个最简单的用来演示的Y86(好山寨~~)体系的指令集。 Y86ISA

为什么需要ISA

ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些指令,以及它们是如何编码的。而处理器设计者 必须建造出执行这些指令的处理器。

按顺序执行ISA中的指令序列不一定是硬件的真实工作方式

但是现代处理器的实际工作方式可能跟ISA隐含的计算模型大相径庭。ISA模型是指令按照顺序完全的先后执行,一个指令执行完成 之后,另一个才能开始。但是为了提高性能,处理设计者设计了一些机制(比如流水线)使得硬件同时处理多条指令的不同部分

但是这种并行可能打破指令按照完全顺序执行这种计算模型,会出现冒险和冲突(Hazard)的情况。冒险就是一条指令为位置或者操作数依赖于其他正在 流水线中的指令。因此,处理器设计者还需要设计对应的特殊机制,来保持一系列指令的运行结果和顺序执行完全相同,制造出一种完全相同的幻象。

汇编程序员(或者编译器)和硬件设计人员的如何使用ISA

汇编程序员(或者高级语言的编译器)将ISA中的指令作为基本的工具,产生一个指令序列,来实现高更层次的计算任务。 硬件设计人员设计一系列的硬件机制,来实现指令集中的每一个指令,同时提供能够保证一个指令序列的计算结果是按照顺序执行的。

举个盖楼的栗子,ISA就像盖大楼用的各式各样各种形状的砖头的规格定义。 程序员将这些砖头累积起来制造大楼,而处理器设计人员保证每一个砖头是可用的,和定义的用起来一模一样。