目前,进行体系结构实验主要有软件模拟与硬件仿真两种形式,虽然二者在功能上基本等效,但由于二者的抽象程度不同,它们所反映出的实现细节也不相同。例如在进行cache子系统设计实现时,采用硬件仿真可以更加清晰地反映出有效位(Valid Bit) 、“脏”位(Dirty Bit)等控制信息所占用的存储容量。此外,不少实验内容涉及软、硬两方面的设计工作,即除了设计与实现必要的硬件模块外,还必须实现对应的软件工具,以高效地对硬件模块编程,例如指令扩展等。因此,本书针对每一个实验内容都分别给出了软件模拟或硬件仿真或软硬件协同设计的实验步骤。
考虑到完成实验的工作量,我们选择32位DLX结构的处理器作为实验对象,因为DLX指令系统具有规整、简洁等优点,且具有开源的模拟器和编译器等软件工具供大家使用。除了包含流水线、指令级并行、cache等经典实验内容外,本书还特别面向指令集的设计与优化专门设计了实验。根据实验难度和工作量的不同,本书中列出的实验可分为两个层次:
一是,与计算机体系结构课程中处理器性能评价、指令系统、流水线等方面的教学内容相对应。具体实验内容包括确定DLX处理器的指令系统和指令编码方案,设计实现一个单流出的5级32位DLX整数流水线,并在FPGA平台上仿真。该流水线中没有cache模块,可以包含数据定向模块。同时,根据DLX指令系统修改开源的gcc编译器,使之能够生成可用的二进制测试代码。
二是,向在基础实验中实现的5级DLX整数流水线中增加一些高级功能模块,并在FPGA平台上仿真。这里的高级功能模块包括计算机体系结构课程中介绍的开发指令级并行和数据级并行的硬件机制、cache等,如DLX浮点流水线、记分牌算法、VLIW技术、分支目标缓冲器、SIMD指令扩展等,它们都是提高流水线性能的经典技术。