-
实现 Y86 处理器 —— 需要的部件
从本篇起,我们将自己实现一个 Y86 处理器。
首先看一下为了实现 Y86 处理器,我们都需要哪些部件。
我们已经知道,CPU 会逐条地执行机器指令。那么 CPU 是如何判断正在执行的指令是否执行完毕,继而可以开始执行下一条指令的呢?
-
实现 Y86 处理器 —— 组合电路
在硬件设计中,用电子电路来实现对位的运算,以及在各种存储器中存储位。
大多数的现代电路技术都是用信号线上的高低压来表示不同的位值。
在当前的技术中,逻辑 1 使用 1.0 V 左右的高电压表示,而逻辑 0 则是用 0.0 V 左右的低电压表示。
-
实现 Y86 处理器 —— 指令集体系结构
指令被编码为由一个或多个字节序列组成的二进制格式。
一个处理器支持的指令和指令的字节级编码称为它的 指令集体系结构(Instruction-Set Architecture, ISA)。
定义一个指令集体系结构,包括:
-
实现 Y86 处理器 —— 指令执行分析及顺序实现
我们初步要实现的处理器是顺序的,即完全执行完一条指令才执行下一条指令。
通常,会将不同的指令分解成相同的阶段序列,这样有利于简化处理器设计及充分利用硬件。
下面是各阶段的简略描述:
-
实现 Y86 处理器 —— 流水线实现
在 SEQ 的结构中,一条指令必须等到它之前的指令执行完毕,才能被执行。
通过流水线技术,可以增加系统的 吞吐量(throughput),也就是单位时间内执行的指令数量。
执行一条指令所花费的时间称为 延迟(latency)。
-
实现 Y86 处理器 —— 流水线冒险与异常处理
在上一章中,已经介绍了指令相关的两种形式:数据相关和控制相关。
这些相关可能会导致流水线产生计算错误,称为 冒险(hazard)。
与两种指令相关对应,冒险也分为 数据冒险(data hazard) 和 控制冒险(control hazard)。