三步教你用Verilog写一个CPU
第三步:登峰造极
基础
课程要求:数字电路、计算机组成原理、程序设计
编程语言:Verilog
开发平台:xilinx ISE
FPGA开发板:Nexys3
教学大纲
第一步
指令集设计与五级流水线的实现
第二步
内存设计与CPU测试
第三步
指令冲突避免
指令冲突介绍
在我们之前的测试中可以看到,指令之间加入了许多额外的NOP指令,这都是为了避免指令冲突,插入NOP可以有软件的实现方式(编译器),也可以通过硬件实现,即CPU检测到冲突的时候就执行NOP指令。不过对于CPU的设计者来说,这极大地降低了CPU的性能,是不可容忍的。下面我来详细讲解指令冲突的不同场合以及避免措施。
流水线处理中,由于各个阶段的依赖关系、硬件资源的竞争等原因,会出现操作无法同时执行的情况。造成流水线故障的原因称为冒险,冒险分为构造冒险、数据冒险和控制冒险 3 种类型。
构造冒险
由于硬件资源的竞争,操作无法同时执行的情况。由于内存设计采用了指令内存和数据内存分离的方式,因此不会产生构造冒险。
数据冒险
由于指令执行所需要的数据还未准备好所引起的冒险情况。当即将