指令集体系结构(Instruction-Set Architecutre,ISA):一个处理器支持的指令和指令的字节级编码,称为处理器的ISA。ISA在编译器编写者和处理器设计人员之间提供一层抽象,编译器编写者只需要知道该处理器支持哪些指令,以及这些指令是如何编码的;处理器设计人员要建造出执行这些指令的处理器。

不同处理器家族,比如Intel IA32和x86-64、IBM和ARM,都有不同的ISA,意味着程序编译出来的可执行文件不能在不同处理器上运行,因为它们具有不同的ISA。而同一个处理器家族的ISA通常是可兼容的。

需要注意,现代处理器的实际工作方式可能和ISA隐含的计算模型相差很大。ISA模型隐含的是顺序执行每条指令,但是为了提高效率,处理器会同时处理多条指令的不同部分,并且采用一些特殊机制保证处理器运行结果和顺序执行相同。

本章首先定义了一个简单的指令集Y86-64,作为处理器实现的运行实例。本章可以分成以下三部分内容:

  1. 提供一些硬件设计背景,描述处理器中使用的基本结构块以及它们如何连接和操作的。
  2. 给出一个基于顺序操作、功能正确的Y86-64处理器。每个时钟周期执行一条完整得到Y86-64指令。
  3. 创建一个流水线化的处理器(Pipelined processor),处理器将每条指令分成五个阶段,每个阶段在独立的硬件部分或阶段处理,由此处理器能同时执行五条指令的不同阶段。

1 硬件控制语言HCL

**硬件描述语言(Hardware Description Language,HDL)**可以用来描述硬件结构,是一种文本语言,类似于编程语言,包括Verilog和VHDL。**逻辑合成程序(Logic Synthesis)**可以根据HDL的描述来生成有效的电路设计。所以从手工设计电路到合成生成的转变,就好像从手写汇编到高级语言的转变。

硬件控制语言(Hardware Control Language,HCL)只表达硬件设计的控制部分,只有有限的操作集合,也没有模块化,可以参考这里

这么课开发了将HCL翻译成Verilog的工具,然后结合基本硬件单元的Verilog代码,就能产生HDL描述,由此就能合成实际能工作的微处理器了。可以参考这里

2 逻辑设计

当前逻辑1是由1.0伏特左右的高电压表示,逻辑0是由0.0伏特左右的低电压表示。

实现一个数字系统主要有三个组成部分:

  1. 计算对位进行操作的函数的组合逻辑
  2. 存储位的存储器单元
  3. 控制存储器单元更新的时钟信号