CS 2410计算机体系结构
2024年春季课程项目分发时间:2024年2月19日到期时间:4月22日晚上11:592024年
介绍
这是一个单人项目。允许并鼓励你与同学讨论该项目,但不得分享项目源代码和报告。请在报告中列出您的讨论同行(如果有的话)屈服动态调度处理器的一个优点是它能够容忍延迟或在无序推测处理器中发布功能。该项目的目的是评估不同体系结构参数对CPU的影响通过模拟PowerPc 604和620体系结构的修改(和简化)版本来进行设计。我们将假设一个32位体系结构,它执行RISC V ISA的一个子集,该子集由以下10条指令:fld、fsd、add、addi、slt、fadd、fsub、fmul、fdiv、bne。见附录A在教科书中的指令语法和语义。您的模拟器应该将一个输入文件作为命令行输入。例如,prog.dat将包含RISC V汇编语言程序(代码段)。输入中的每一行文件是来自上述10条指令的RISC V指令。你的模拟器应该阅读该输入文件,识别指令,识别指令的不同字段,以及在下面的讲义中描述的体系结构上模拟它们的执行。你的遗嘱必须实现功能+时序模拟器。在开始构建模拟器之前,请仔细阅读以下a-g。模拟的体系结构是一个推测性的、多问题的、无序的CPU,其中:(假设您的第一条指令位于内存位置(字节地址)0x00000hex。那个是,第一条指令的地址是0x00000hex。PC+4点到下一个指令)。a.获取单元每个周期获取多达NF=4条指令(即,发布宽度为4)。b.具有16入口分支的2位动态分支预测器(初始化为预测弱取(t))使用目标缓冲器(BTB)。它使用位将分支的地址L散列到BTB中的一个条目L.的7-4。c.解码单元对提取单元提取的指令进行解码(在单独的周期中),并存储在可容纳多达NI=16个指令的指令队列中的解码令。d.每个时钟周期最多可以向预留站发出NW=4条指令。这个体系结构具有以下功能单元,显示了延迟和保留数量车站。操作预留的单位延迟(周期)
工作站指令执行在单元上INT 1(整数和逻辑运算)4添加,添加,slt载/存储1用于地址计算2加载缓冲区+
2存储缓冲区
fld
fsd
FPadd 3(流水线FP-add)3衰减,fsub
FPmult 4(流水线FP乘法)3 fmul
FPdiv 8(非流水线除法)2 fdiv
BU 1(条件和目标评估)2 bne
e.具有NR=16个条目的循环重新排序缓冲器(ROB)与NB=4个公共数据总线一起使(CDB)将WB级和ROB连接到保留站和寄存器堆。你必须设计政策来解决CDB上ROB和WB阶段之间的争论公共汽车。
f.您需要执行寄存器重命名,以消除解码阶段的错误依赖性。假设我们总共有32个物理寄存器(p0,p1,p2,…p31)。您需要实施一个映射表和一个物理寄存器空闲列表,正如我们在课堂上讨论的那样。此外,假设所有的物理寄存器都可以由整数或浮点指令使用。
g.专用/独立ALU用于分支单元(BU)中的有效地址计算同时,使用专用硬件来评估分支条件。此外,一个专用/单独的ALU用于加载/存储单元中的有效地址计算。你还需要在模拟设计中实现转发。模拟器应该被参数化以使得可以用不同的NF、NI值进行实验,NW、NR和NB(通过命令行参数或读取配置文件)。到简化模拟,我们将假设指令缓存行包含NF指令并且整个代 写CS 2410程序适合指令缓存(即,读取高速缓存行)。此外,数据缓存(单端口)非常大,因此将单词写入或读取到数据高速缓存总是占用一个周期(即消除存储器访问中的高速缓存效应)。您的模拟应该保留有关执行周期数、次数的统计信息由于1)给定单元的预留站被占用,2)重新排序缓冲区已满。您还应该跟踪CDB总线的使用情况。这可能帮助识别体系结构的瓶颈。您的模拟应该是功能和时间正确的。对于功能,我们检查寄存器
以及存储器内容。对于定时,我们检查执行周期。比较分析:上面指定的参数运行基准测试后,执行以下分析:
1) 研究更改问题的效果,并将宽度设置为2。那是设定NW=NB=2而不是4。
2) 研究更改获取/解码宽度的影响。这就是设置NF=2而不是4。
3) 研究将NI更改为4而不是16的效果。
4) 研究更改重新排序缓冲区条目数的影响。这是设置NR=
4、8和32您需要在项目报告中提供结果和分析。项目语言:您只能选择C/C++(强烈推荐)或Python来实现您的项目。不其他语言。测试基准使用以下内容作为初始基准(即输入文件prog.dat的内容)。%所有寄存器的初始值都为0。%内存内容以地址、值的形式存在。
0, 111
8, 14
16, 5
24, 10
100, 2
108, 27
116, 3
124, 8
200, 12
附加R1、R0、24
附加R2、R0、124
fld F2200(R0)
回路:fld F0,0(R1)
fmul F0、F0、F2
fld F4,0(R2)
渐变F0、F0、F4
fsd F0,0(R2)
附加R1,R1,-8
附加R2、R2、-8
bne R1,0美元,循环
(请注意,这只是一个测试台,用于验证您的设计。您提交的文件应支持表中列出的所有说明,您应该验证并确保模拟使用这九条指令的不同程序的正确性。当您提交代码时,我们将使用更复杂的程序(具有多个分支和表中的所有指令)以测试您的提交)。项目提交:您提交的文件将包括两部分:i)代码包和ii)项目报告.代码包:a.包括所有带有代码注释的源代码文件。b.有一个自述文件1)包含编译源代码的说明,2)使用行参数/配置的说明以及操作说明来运行您的模拟器。
2.项目报告
a.一个带有详细文本的图,用于描述代码的模块设计。在您的报告中,您还需要标记并列出代码中使用的关键数据结构。
b.以上比较分析的结果和分析
c.你的讨论同行以及你的讨论的简要总结(如果有的话)。项目分级:
1.我们将使用更复杂的程序测试您的模拟器的时间和功能由九条RISC V指令组成。
2.我们稍后将要求您设置一个演示,以一对一的方式测试代码的正确性。
3.我们将检查您的代码设计,并在代码结构、模块设计和代码注释。
4.我们将检查您的设计细节和比较分析报告。
5.违反学术诚信的处罚参见教学大纲。请注意,任何违反课程完整性的行为以及任何形式的作弊和复制公众的代码/报告将报告给部门和廉政办公室。