From 511db78ac904c3ca750115b5accc290f425ea89a Mon Sep 17 00:00:00 2001 From: Liphen Date: Wed, 24 Jan 2024 14:55:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80=E4=B8=8Bla?= =?UTF-8?q?b9=E7=9A=84=E8=AF=AD=E8=A8=80=E8=A1=A8=E8=BE=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lab09/image/image-20240107213027949.png | Bin 40171 -> 0 bytes .../lab09/image/image-20240109144722861.png | Bin 41438 -> 0 bytes .../lab09/image/image-20240109153542526.png | Bin 19008 -> 0 bytes .../lab09/image/image-20240124134556170.png | Bin 0 -> 38948 bytes .../lab09/image/image-20240124141127010.png | Bin 0 -> 37394 bytes doc/计算机结构设计实验/lab09/main.typ | 305 ++++++++++++++---- .../lab09/实现 R 型运算类指令的理想流水线设计实验.md | 6 +- 7 files changed, 254 insertions(+), 57 deletions(-) delete mode 100644 doc/计算机结构设计实验/lab09/image/image-20240107213027949.png delete mode 100644 doc/计算机结构设计实验/lab09/image/image-20240109144722861.png delete mode 100644 doc/计算机结构设计实验/lab09/image/image-20240109153542526.png create mode 100644 doc/计算机结构设计实验/lab09/image/image-20240124134556170.png create mode 100644 doc/计算机结构设计实验/lab09/image/image-20240124141127010.png diff --git a/doc/计算机结构设计实验/lab09/image/image-20240107213027949.png b/doc/计算机结构设计实验/lab09/image/image-20240107213027949.png deleted file mode 100644 index 30bbb086cbedf91f746e2a65ec610ebbc35a36ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40171 zcmb5VQ*tAwdUO6^0H!Z&{)s_002%xTv!nR038EoX63jo+JRB(lkPJ@9Jed|B<(Ldfl18682 zd_H)#?|olmpSO^oZ8zRmIgWGw?A*Ts0)ImW{uZ|n`nrVX{{=4a>p>5!9|m{`G7ua# z1pU7w;7}N_bpJ&`BGF^${x67FpT5ige*^!11>Xebcv{w^mNc=01~g{)&~}F`l`3ar z9;d#Xj)f8ZVnmyl?W)fEIMNjS?`+KS--7P(sjtk1Sld%S{S#8-FjD}u|{b$Rh4mKR8Bxb5y8L1 zT-9xc>#iuAckio-RQz@r?4tBh)m%r;01jGed&=T7UDy>8lUw>WeR5Ui>EJvcBh;!C z=2s?6TfXxe{<<|3p$G}CIs4abYL{$P_zIsA2ly1<mE3-_6?3#(k!ub9`+l&o)~XZ(f*sF-##Ax&hb#iHagkb7GR}N zR@P(od&@jmNOC zN;1`V7&aBxrlv<#_}kU`Y_Tg}V8BBbX)Txglcw;%V&b`|MAMRDI87k?elK!0^XW$Y z{(AwH`W(4QJD(~w1IzB!JY&svhmV*Wbq2T5ZA)S*9d4SPq^HmE+MkypK23j!5vkUIpWRatfELv8_?8Z|X>( zW^A6vjR9zjsW*ZmB5)MPtd9%xsk6&Zv~aGhb4p5z^KMza2BYRYaMZv>yS85R@{y8) za4WL5?-eidf(8!&d_2SQQ1izN*YGdc zl;H%w7sGbqpmN*&w%q|}(Z8x#M{;x#`yI6?tOmqo2y zn3Yh+WoaSH%D`we-5RLQ57QhKwr)q)5-lJ@YP7b1V;N#B)YQ-hB(bOBlku7lZ^{x!-+jFoUisGeT8Wj)+^GjB$!|K_SQ$~(}0K_%m^}JZ(fswzq__kPP z%PJ#B^x^B`dYoebu~3L|M^t0tlD`r4Y?qXm;*#RP{egJN5uJ=;3IPxY%+2Yd#Y6G1 zC}QC;uIgwZ-*e=brG>@KsJ%XnOoY+>W_c2hjOY>A&3WsX%SAv&Mn*#mw0Q(AIXU0} ztL`_fF!$Xet;s8^tssq;s16$z(74Rb|LXj0v5Rrgi-43Favg>{hQ)jS2$dNs~ zYXgXnjY$G$T7TS7Smdjx*PWrMsj4d?At7m};iAU#otE{P2JCS9YeSxhmZthQ4IF@f zL_#Vo@`Hw8iL3xAL7l^dgd|wtcp+M@tJ!S4Z`r%nBlRhI=6o!&%l+)%+aXExddt+k zVq#oUN?g)UK%EIal261h-y*wh5*8Yh1-AOZ*u|aO=0Pt zc41{P1u4yj>)jW?!S)vSy5C-o8AUq9v+L9igHuk&wTCV?z+VB?%Q3z-CyN-A#O#9U z*xp(IIdl8_Ba-Nu4v)om{4(gFiY)Xfw$2fL-I=XBSmXWa?P(ORBto4SG$2k<8Jp3x z|B!7FRGYW>?l8F7Xt;{=p1SyEF&(w=GHaNc=Q-rB<%GApeM@aJv@B=*=qp-|4JYtL19Reo~!cb{…{c8kD@eborHgvR%Sf@HNdT>vfsksZN+$P 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 WWopX+f=E|lfV{MdRIP+r`2PSm&jJ+y diff --git a/doc/计算机结构设计实验/lab09/image/image-20240109144722861.png b/doc/计算机结构设计实验/lab09/image/image-20240109144722861.png deleted file mode 100644 index be809e90bbbb49f214cb0f456d28deff9828e6cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41438 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 diff --git a/doc/计算机结构设计实验/lab09/image/image-20240109153542526.png b/doc/计算机结构设计实验/lab09/image/image-20240109153542526.png deleted file mode 100644 index 81addf5fa8af8cc23e89ae6f3e4f8861f5ab06f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19008 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 literal 0 HcmV?d00001 diff --git a/doc/计算机结构设计实验/lab09/main.typ b/doc/计算机结构设计实验/lab09/main.typ index d55d932..279fec4 100644 --- a/doc/计算机结构设计实验/lab09/main.typ +++ b/doc/计算机结构设计实验/lab09/main.typ @@ -98,7 +98,7 @@ RISC-V单周期CPU设计实现简单,控制器部分是纯组合逻辑电路 === 设计的基本方法 -在计算机结构设计实验中,需要设计实现的CPU也是一个数字逻辑电路,其设计应该遵循数字逻辑电路设计的一般性方法。CPU不但要完成运算,也要维持自身的状态,所以CPU这个数字逻辑电路一定是既有组合逻辑电路又有时序逻辑电路的。CPU输入的、运算的、存储的、输出的数据都在组合逻辑电路和时序逻辑电路上流转,这些逻辑电路被称为数据通路(Datapath)。因此,要设计CPU这个数字逻辑电路,首要的工作就是设计数据通路。同时,因为数据通路中会有多路选择器、时序逻辑器件,所以还要有相应的控制信号,产生这些控制信号的逻辑被称为控制逻辑。所以,从宏观的视角来看,设计一个CPU就是设计“数据通路+控制逻辑”。 +在计算机结构设计实验中,需要设计实现的CPU也是一个数字逻辑电路,其设计应该遵循数字逻辑电路设计的一般性方法。CPU不但要完成运算,也要维持自身的状态,所以CPU一定是既有组合逻辑电路又有时序逻辑电路的。CPU输入的、运算的、存储的、输出的数据都在组合逻辑电路和时序逻辑电路上流转,这些逻辑电路被称为数据通路(Datapath)。因此,要设计CPU这个数字逻辑电路,首要的工作就是设计数据通路。同时,因为数据通路中会有多路选择器、时序逻辑器件,所以还要有相应的控制信号,产生这些控制信号的逻辑被称为控制逻辑。所以,从宏观的视角来看,设计一个CPU就是设计“数据通路+控制逻辑”。 #fakepar #figure( @@ -107,13 +107,13 @@ RISC-V单周期CPU设计实现简单,控制器部分是纯组合逻辑电路 )<理想的五级流水线CPU数据与控制信号传递图> #fakepar -根据指令系统规范中的定义设计出“数据通路+控制逻辑”的基本方法是:对指令系统中定义的指令逐条进行功能分解,得到一系列操作和操作的对象。显然,这些操作和操作的对象必然对应其各自的数据通路,又因为指令间存在一些相同或相近的操作和操作对象,所以我们可以只设计一套数据通路供多个指令公用。对于确实存在差异无法共享数据通路的情况,只能各自设计一套,再用多路选择器从中选择出所需的结果。接下来,我们将遵循这个一般性方法,具体介绍如何分析指令的功能以及如何设计出数据通路。@理想的五级流水线CPU数据与控制信号传递图 展示了RISC-V理想的五级流水线CPU数据与控制信号传递图。 +根据指令系统规范中的定义设计出“数据通路+控制逻辑”的基本方法是:对指令系统中定义的指令逐条进行功能分解,得到一系列操作和操作的对象。显然,这些操作和操作的对象必然对应其各自的数据通路,又因为指令间存在一些相同或相近的操作和操作对象,所以可以只设计一套数据通路供多个指令公用。对于确实存在差异无法共享数据通路的情况,只能各自设计一套,再用多路选择器从中选择出所需的结果。遵循这个一般性方法,下面具体介绍如何分析指令的功能以及如何设计出数据通路。@理想的五级流水线CPU数据与控制信号传递图 展示了RISC-V理想的五级流水线CPU数据与控制信号传递图。 === 以ADD指令为例 -我们来分析一下ADD指令需要哪些数据通路部件。 +以ADD指令为例,分析一下该指令需要哪些数据通路部件。 -首先,我们需要得到ADD这条指令:需要使用这条指令对应的PC作为虚拟地址进行虚实地址转换,得到访问指令SRAM的物理地址。这意味着需要的数据通路部件有:取指单元、虚实地址转换部件和指令SRAM。我们先对这部分的数据通路进行实现。 +首先,执行指令的前提是需要得到ADD这条指令,需要使用这条指令对应的PC作为虚拟地址进行虚实地址转换,得到访问指令SRAM的物理地址。这意味着需要的数据通路部件有:取指单元、虚实地址转换部件和指令SRAM。下面先对这部分的数据通路进行实现。 #noindent #strong(text(12pt, red)[前端]) @@ -125,7 +125,7 @@ RISC-V单周期CPU设计实现简单,控制器部分是纯组合逻辑电路 #noindent #text(fill: blue)[(#unitcnt_inc)取指单元] -因为实现的是一个64位的处理器,所以PC的指令宽度是64比特。我们用一组64位的触发器来存放PC。(后面为了行文简洁,在不会导致混淆的情况下,我们用pc代表这组用于存放PC的64位触发器。)由于我们的处理器使用到了SRAM进行数据的存取,而SRAM的特性是一次读数操作需要跨越两个时钟周期,第一个时钟周期向RAM发出读使能和读地址,第二个时钟周期RAM才能返回读结果。因此我们发送给指令SRAM的地址应该是下一拍的PC,也就是pc_next,而目前的实验设计pc_next的大小将一直等于pc+4(这里的4代表寻址4个字节,即一条指令的宽度),因此pc_next和pc之间只是组合逻辑的关系。 +因为实现的是一个64位的处理器,所以PC的指令宽度是64比特。用一组64位的触发器来存放PC。(后面为了行文简洁,在不会导致混淆的情况下,用pc代表这组用于存放PC的64位触发器。)由于处理器使用到了SRAM进行数据的存取,而SRAM的特性是一次读数操作需要跨越两个时钟周期,第一个时钟周期向RAM发出读使能和读地址,第二个时钟周期RAM才能返回读结果。因此发送给指令SRAM的地址应该是下一条指令的PC,也就是pc_next,而目前的实验设计pc_next的大小将一直等于pc+4(这里的4代表寻址4个字节,即一条指令的宽度),因此pc_next和pc之间只是组合逻辑的关系。 #fakepar #figure( @@ -134,38 +134,40 @@ RISC-V单周期CPU设计实现简单,控制器部分是纯组合逻辑电路 )<取指单元及指令RAM> #fakepar -pc的输出将送到指令SRAM中用于获取指令,由于我们的指令SRAM的地址宽度只有#paddr_wid 位,因此只有pc的低#paddr_wid 会被使用。目前来看,PC的输入有两个,一个是复位值0x80000000(由于发送给指令SRAM的是pc_next,所以pc的真正复位值其实是0x80000000-0x4),一个是复位撤销之后pc_next的值。 +pc的输出将送到指令SRAM中用于获取指令,由于指令SRAM的地址宽度只有#paddr_wid 位,因此只有pc的低#paddr_wid 会被使用。目前来看,PC的输入有两个,一个是复位值0x80000000(由于发送给指令SRAM的是pc_next,所以pc的真正复位值其实是0x80000000-0x4),一个是复位撤销之后pc_next的值。 因为取指单元只会对内存进行读操作,因此inst_sram_en只要在reset无效时使能即可,而inst_sram_wen应该恒为低电平。@取指单元及指令RAM 展示了取指单元的结构。 #noindent #text(fill: blue)[(#unitcnt_inc)虚实地址转换] -任何时候CPU上运行的程序中出现的地址都是虚地址,而CPU本身访问内存、I/O所用的地址都是物理地址,因此我们需要对CPU发出的虚拟地址进行转换,使用物理地址进行访存。在实现RISC-V的S模式之前,目前我们实现的CPU的虚拟地址与物理地址之间使用直接映射的方式,即物理地址的值等于虚拟地址的值。因此虚实地址转换部件目前可以先省略。 +任何时候CPU上运行的程序中出现的地址都是虚地址,而CPU本身访问内存、I/O所用的地址都是物理地址,因此需要对CPU发出的虚拟地址进行转换,使用物理地址进行访存。在实现RISC-V的S模式之前,目前实现的CPU的虚拟地址与物理地址之间使用直接映射的方式,即物理地址的值等于虚拟地址的值。因此虚实地址转换部件目前可以先省略。 #noindent #text(fill: blue)[(#unitcnt_inc)指令RAM] -得到取指所需的物理地址后,接下来就要将该地址送往内存。我们采用片上的RAM作为内存,并且将RAM进一步分拆为指令RAM和数据RAM两块物理上独立的RAM以简化设计。 +得到取指所需的物理地址后,接下来需要将该地址送往内存。实验采用片上的RAM作为内存,并且将RAM进一步分拆为指令RAM和数据RAM两块物理上独立的RAM以简化设计。 -指令RAM输出的#inst_ram_date_wid 位数据就是指令码。本书中我们实现的CPU采用小尾端的寻址,所以指令RAM输出的#inst_ram_date_wid 位数据与指令系统规范中的定义的字节顺序是一致的,不需要做任何字节序调整。 +指令RAM输出的#inst_ram_date_wid 位数据就是指令码。实验实现的CPU采用小尾端的寻址,所以指令RAM输出的#inst_ram_date_wid 位数据与指令系统规范中的定义的字节顺序是一致的,不需要做任何字节序调整。 @取指单元及指令RAM 展示了指令RAM的结构。指令RAM保留了写接口,这样的接口设计,是为了和之后的AXI的设计保持一致性。 #noindent #text(fill: blue)[(#unitcnt_inc)指令队列] -我们将取指单元/译码单元之间的流水线缓存称为指令队列。我们将指令队列之前的阶段称为前端,将指令队列之后的阶段称为后端。当取指单元一次取指的数量大于译码单元可以解码的数量时,又或是后端流水线发生暂停时,取指单元可以继续取指,多余的指令可以在指令队列中排队等待,而不用暂停取指。通过指令队列这个部件可以解耦前后端。 +取指单元/译码单元之间的流水线缓存称为指令队列。指令队列之前的阶段称为前端,指令队列之后的阶段称为后端。 + +当取指单元一次取指的数量大于译码单元可以解码的数量时,又或是后端流水线发生暂停时,取指单元可以继续取指,多余的指令可以在指令队列中排队等待,而不用暂停取指。因此指令队列部件的实现可以解耦前后端。 #fakepar #figure( - image("image/image-20240109153542526.png"), + image("image/image-20240124134556170.png"), caption: "指令队列" )<指令队列> #fakepar -如@指令队列 所示,指令队列的实现是一个深度为depth的寄存器组,每个寄存器中保存一个叫做data的数据包(目前我们需要保存指令的内容以及指令的PC这两个数据),宽度应该和data的宽度一致。出队指针和入队指针都是一个宽度为$log_2 lr(("depth"), size: #50%)$的寄存器。我们使用出队指针指示队列的头部,入队指针指示队列的尾部。由取指单元发送的数据存入入队指针指示的寄存器;出队指针指示的寄存器保存的数据发送到译码单元中。目前我们实现的是理想流水线,因此每一个clock我们的入队指针和出队指针都应该加1,发生reset时,两个指针都应该置为0。 +如@指令队列 所示,指令队列的实现是一个深度为depth的寄存器组,每个寄存器中保存一个叫做data的数据包(目前需要保存指令的内容以及指令的PC这两个数据),宽度应该和data的宽度一致。出队指针和入队指针都是一个宽度为$log_2 lr(("depth"), size: #50%)$的寄存器。使用出队指针指示队列的头部,入队指针指示队列的尾部。由取指单元发送的数据存入入队指针指示的寄存器;出队指针指示的寄存器保存的数据发送到译码单元中。目前实现的是理想流水线,因此每一个clock的上跳沿来临时入队指针和出队指针都应该加1,发生reset时,两个指针都应该置为0。 #noindent #strong(text(12pt, fill: red)[后端]) -前端部分我们已经成功取得指令,接下来我们需要通过译码识别出这条指令为ADD指令,并产生相应的控制信号。 +前端部分已经成功取得指令,接下来需要通过译码识别出这条指令为ADD指令,并产生相应的控制信号。 #noindent #text(fill: blue)[(#unitcnt_inc)译码单元] @@ -173,25 +175,224 @@ pc的输出将送到指令SRAM中用于获取指令,由于我们的指令SRAM (a)译码器 -首先我们要明白译码器是如何解码不同指令的。RISC-V有6种指令格式,如@R型指令格式 所示。译码器根据指令的opcode段识别出指令的格式,再进行下一步的译码。 +首先需要明白译码器是如何解码不同指令的。RISC-V有6种指令格式,如@RISC-V指令格式 所示。译码器根据指令的opcode段识别出指令的格式,再进行下一步的译码。 #fakepar #figure( - image("image/image-20240109144722861.png"), - caption: "R型指令格式" -) + tablex( + columns: 33, + align: center + horizon, + repeat-header: true, + header-rows: 1, + auto-lines: false, + + vlinex(x:0, start:1), vlinex(x:7, start:1), vlinex(x:12, start:1), vlinex(x:17, start:1), vlinex(x:20, start:1), vlinex(x:25, start:1), vlinex(x:32, start:1), + + cellx(align: left, colspan: 6)[31], cellx(align: right)[25], cellx(align: left, colspan: 4)[24], cellx(align: right)[20], cellx(align: left, colspan: 4)[19], cellx(align: right)[15], cellx(align: left, colspan: 2)[14], cellx(align: right)[12], cellx(align: left, colspan: 4)[11], cellx(align: right)[7], cellx(align: left, colspan: 6)[6], cellx(align: right)[0], [], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[funct7], colspanx(5, inset:(x: 2em))[rs2], colspanx(5, inset:(x: 2em))[rs1], colspanx(3)[funct3], colspanx(5, inset:(x: 2em))[rd], colspanx(7, inset:(x: 1.5em))[opcode], [R-type], + + hlinex(end:32), + + colspanx(12)[imm[11:0]], colspanx(5)[rs1], colspanx(3)[funct3], colspanx(5)[rd], colspanx(7)[opcode], [I-type], + + hlinex(end:32), + + colspanx(7)[imm[15:5]], colspanx(5)[rs2], colspanx(5)[rs1], colspanx(3)[funct3], colspanx(5)[imm[4:0]], colspanx(7)[opcode], [S-type], + + hlinex(end:32), + + colspanx(7)[imm[12|10:5]], colspanx(5)[rs2], colspanx(5)[rs1], colspanx(3)[funct3], colspanx(5)[imm[4:1|11]], colspanx(7)[opcode], [B-type], + + hlinex(end:32), + + colspanx(20)[imm[31:12]], colspanx(5)[rd], colspanx(7)[opcode], [U-type], + + hlinex(end:32), + + colspanx(20)[imm[20|10:1|11|19:12]], colspanx(5)[rd], colspanx(7)[opcode], [J-type], + + hlinex(end:32), + ), + caption: "RISC-V指令格式", + kind: table +) #fakepar -在本实验中,我们只需要实现R型的运算指令。@R型运算指令 展示了RV64中所有R型运算指令。我们先分析非字指令,不难发现,R型运算指令的opcode是0110011,再通过func3区别各指令的运算类型,其中ADD和SUB、SRL和SRA的func3一致,再由func7的第6位进行区分。而字指令的分析也和非字指令的分析一致。 +本实验只需要实现R型的运算指令。@R型运算指令 展示了RV64中所有R型运算指令。先分析非字指令,不难发现,R型运算指令的opcode是0110011,再通过func3区别各指令的运算类型,其中ADD和SUB、SRL和SRA的func3一致,再由func7的第6位进行区分。而字指令的分析也和非字指令的分析一致。 #fakepar -#figure( - image("image/image-20240109161753616.png", width: 95%), - caption: "R型运算指令" -) +#[ + #show figure: set block(breakable: true) + #figure( + tablex( + columns: 33, + align: center + horizon, + repeat-header: true, + header-rows: 1, + auto-lines: false, + + map-cells: cell => { + if (cell.x == 32) { + cell.content = { + set align(left) + cell.content + } + } + cell + }, + + vlinex(x:0, start:1), vlinex(x:6, start:1), vlinex(x:7, start:1), vlinex(x:12, start:1), vlinex(x:17, start:1), vlinex(x:20, start:1), vlinex(x:25, start:1), vlinex(x:32, start:1), + + cellx(align: left, colspan: 6)[31], cellx(align: right)[25], cellx(align: left, colspan: 4)[24], cellx(align: right)[20], cellx(align: left, colspan: 4)[19], cellx(align: right)[15], cellx(align: left, colspan: 2)[14], cellx(align: right)[12], cellx(align: left, colspan: 4)[11], cellx(align: right)[7], cellx(align: left, colspan: 6)[6], cellx(align: right)[0], [], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[000], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [ADD], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0100000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[000], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [SUB], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[001], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [SLL], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[010], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [SLT], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[011], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [SLTU], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[100], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [XOR], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[101], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [SRL], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0100000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[101], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [SRA], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[110], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [OR], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[111], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0110011], [AND], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[000], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0111011], [ADDW], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0100000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[000], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0111011], [ADDW], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[001], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0111011], [SLLW], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0000000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[101], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0111011], [SRLW], + + hlinex(end:32), + + colspanx(7, inset:(x: 5em))[0100000], + colspanx(5, inset:(x: 2em))[rs2], + colspanx(5, inset:(x: 2em))[rs1], + colspanx(3)[101], + colspanx(5, inset:(x: 2em))[rd], + colspanx(7, inset:(x: 1.5em))[0111011], [SRAW], + + hlinex(end:32), + + ), + caption: "R型运算指令", + kind: table + ) +] #fakepar -R型运算指令都是三地址指令,每条指令都有两个源操作数以及一个目的操作数。我们记源操作数1为src1,源操作数2为src2。因此译码器中要产生的控制信号如下: +R型运算指令都是三地址指令,每条指令都有两个源操作数以及一个目的操作数。记源操作数1为src1,源操作数2为src2。因此译码器中要产生的控制信号如下: - src1_ren:src1 是否需要读通用寄存器堆 - src1_raddr:src1 的通用寄存器堆读地址 @@ -201,16 +402,15 @@ R型运算指令都是三地址指令,每条指令都有两个源操作数以 - reg_wen:是否需要写回通用寄存器堆 - reg_waddr:通用寄存器堆的写地址 -#indent 接下来我们应该阅读手册,根据手册对指令功能的定义对各控制信号进行赋值。@ADD指令定义 展示了ADD指令的定义。 +#indent 接下来阅读手册,根据手册对指令功能的定义对各控制信号进行赋值。@ADD指令定义 展示了ADD指令的定义。 -#fakepar #figure( - image("image/image-20240107213027949.png"), + image("image/image-20240124141127010.png"), caption: "ADD指令定义" ) #fakepar -ADD指令的源操作数都来自通用寄存器堆,因此src1_ren和src2_ren都为1,src1_raddr对应指令的19至15位,src2_raddr对应指令的24至20位。ADD指令需要写回通用寄存器堆,因此reg_wen为1,reg_waddr对应指令的11至7位。因为目前我们要实现的指令都在执行单元的ALU中进行运算,因此只需要将op设置正确就能完成指令的区分。op的设置有多种方法,下面介绍两种: +ADD指令的源操作数都来自通用寄存器堆,因此src1_ren和src2_ren都为1,src1_raddr对应指令的19至15位,src2_raddr对应指令的24至20位。ADD指令需要写回通用寄存器堆,因此reg_wen为1,reg_waddr对应指令的11至7位。因为目前要实现的指令都在执行单元的ALU中进行运算,因此只需要将op设置正确就能完成指令的区分。op的设置有多种方法,下面介绍两种: 1. 简单的方法: @@ -218,15 +418,15 @@ ADD指令的源操作数都来自通用寄存器堆,因此src1_ren和src2_ren 2. 稍微复杂一些的方法: -#indent 观察指令格式进行op的设计,比如非字指令的opcode一致,仅func3以及func7的第6位有区别,那么我们可以将这几位进行拼接,由于ADD又有ADD和ADDW的区别,因此我们可以再加一位进行字指令的区分,因此ADD的op可以设计为00000。按这种思路,SRAW的op就是11101。 +#indent 观察指令格式进行op的设计,比如非字指令的opcode一致,仅func3以及func7的第6位有区别,那么可以将这几位进行拼接,由于ADD又有ADD和ADDW的区别,因此可以再加一位进行字指令的区分,因此ADD的op可以设计为00000。按这种思路,SRAW的op就是11101。 -不同的op设计对于FU(FunctionUnit,功能部件)内部的解码会有一定的影响,我们等下在ALU的设计中会进行介绍。 +不同的op设计对于FU(FunctionUnit,功能部件)内部的解码会有一定的影响,好的编码设计可以大大提升硬件性能。 (b)通用寄存器堆 -完成了控制信号的生成,接下来我们需要准备源操作数,也就是访问通用寄存器堆,相比SRAM这种存储类型,通用寄存器堆的访问都是当拍完成。通用寄存器堆可以实现在译码单元内部,也可以直接实现在CPU内部作为一个独立模块,两者没有什么太大的区别。 +完成了控制信号的生成,接下来需要准备源操作数,也就是访问通用寄存器堆,相比SRAM这种存储类型,通用寄存器堆的访问都是当拍完成。通用寄存器堆可以实现在译码单元内部,也可以直接实现在CPU内部作为一个独立模块,两者没有什么太大的区别。 -@译码单元 展示了译码单元的结构,译码器将从指令队列获得的指令进行译码,产生了相关的控制信号,我们将所有的控制信号打包成info数据包与寄存器堆读回的源操作数组成的src_info数据包以及指令队列获得的pc(传递pc的原因会在后面进行解释)一起打包成一个data数据包发送至下一级流水线缓存。 +@译码单元 展示了译码单元的结构,译码器将从指令队列获得的指令进行译码,产生了相关的控制信号,将所有的控制信号打包成info数据包与寄存器堆读回的源操作数组成的src_info数据包以及指令队列获得的pc一起打包成一个data数据包发送至下一级流水线缓存。 #fakepar #figure( @@ -237,7 +437,7 @@ ADD指令的源操作数都来自通用寄存器堆,因此src1_ren和src2_ren #noindent #text(fill: blue)[(#unitcnt_inc)执行级缓存] -我们将译码单元/执行单元这两级间的缓存称为执行级缓存,将缓存的名称归到它的输出对应的那一个流水阶段。这种命名风格来自我们进行仿真波形调试时的观察习惯,即除了触发器时钟采样边沿附近那段建立保持时间(当采用零延迟仿真时,这段时间可以看作瞬时、无穷小)外,触发器中存储的内容都是与它输出那一级流水的组合逻辑相关联的。后面也将统一采用这种单级流水线标识的方式。 +译码单元/执行单元这两级间的缓存称为执行级缓存,将缓存的名称归到它的输出对应的那一个流水阶段。这样子命名可以与仿真波形调试时的观察习惯保持一致,即除了触发器时钟采样边沿附近那段建立保持时间(当采用零延迟仿真时,这段时间可以看作瞬时、无穷小)外,触发器中存储的内容都是与它输出那一级流水的组合逻辑相关联的,如执行单元中运行的指令实际上是译码单元/执行单元这两级缓存中存储的数据。后面流水线级间缓存也将统一采用这种标识的方式。 #fakepar #figure( @@ -246,7 +446,7 @@ ADD指令的源操作数都来自通用寄存器堆,因此src1_ren和src2_ren )<执行级缓存> #fakepar -@执行级缓存 展示了执行级缓存的结构。执行级缓存内部有一个用于保存上一级传来的data的寄存器,在每个clock的上跳沿更新寄存器内容。寄存器保存的内容直接传往下一级。 +@执行级缓存 展示了执行级缓存的结构。执行级缓存内部有一个用于保存上一级传来的data数据包的寄存器,在每个clock的上跳沿更新寄存器内容。寄存器保存的内容直接传往下一级。 #noindent #text(fill: blue)[(#unitcnt_inc)执行单元] @@ -259,7 +459,7 @@ ADD指令的源操作数都来自通用寄存器堆,因此src1_ren和src2_ren )<执行单元> #fakepar -@执行单元 展示了执行单元的结构,R型运算指令只需要使用ALU这一个部件即可(ALU部件已经在数字电路实验中学习过)。我们将执行级缓存传来的data数据包(包内包括info数据包和src_info数据包)发送至ALU中。ALU可以通过info数据包内op的区别进行不同的计算操作,而源操作数在src_info数据包中。ALU将运算结果reg_wdata打包到rd_info数据包中和info数据包内的reg_wen、reg_waddr一块打包成新的data数据包发送至访存级缓存。 +@执行单元 展示了执行单元的结构,R型运算指令只需要使用ALU这一个部件即可(ALU部件已经在数字电路实验中学习过)。将执行级缓存传来的data数据包(包内包括info数据包和src_info数据包)发送至ALU中。ALU可以通过info数据包内op的区别进行不同的计算操作,而源操作数在src_info数据包中。ALU将运算结果reg_wdata打包到rd_info数据包中和info数据包内的reg_wen、reg_waddr一块打包成新的data数据包发送至访存级缓存。 #noindent #text(fill: blue)[(#unitcnt_inc)访存级缓存] @@ -281,7 +481,7 @@ ADD指令的源操作数都来自通用寄存器堆,因此src1_ren和src2_ren )<访存单元> #fakepar -ADD指令并不需要访问内存,因此在该流水级什么也不做,只需要将上一级缓存内的data数据包传到下一级缓存中即可。@访存单元 展示了访存单元的结构。我们将data_sram_en和data_sram_wen置为0,对于data_sram_addr、data_sram_wdata以及data_sram_rdata这三个信号就不需要理会了。 +ADD指令并不需要访问内存,因此在该流水级什么也不做,只需要将上一级缓存内的data数据包传到下一级缓存中即可。@访存单元 展示了访存单元的结构。将data_sram_en和data_sram_wen置为0,对于data_sram_addr、data_sram_wdata以及data_sram_rdata这三个信号就不需要理会了(在chisel语言中可以使用DontCare对data_sram_addr和data_sram_wdata进行赋值)。 #noindent #text(fill: blue)[(#unitcnt_inc)写回级缓存] @@ -296,7 +496,7 @@ ADD指令并不需要访问内存,因此在该流水级什么也不做,只 #noindent #text(fill: blue)[(#unitcnt_inc)写回单元] -ADD指令需要写回通用寄存器堆,因此我们需要在写回级访问通用寄存器堆。我们将data数据包解包,将info数据包内的reg_wen、reg_waddr和reg_wdata发送至通用寄存器堆,同时这些信号还需要与pc一起发往CPU的外部作为debug信号。 +ADD指令需要写回通用寄存器堆,因此需要在写回级访问通用寄存器堆。将data数据包解包,将info数据包内的reg_wen、reg_waddr和reg_wdata发送至通用寄存器堆,同时这些信号还需要与pc一起发往CPU的外部作为debug信号。 #fakepar #figure( @@ -307,7 +507,7 @@ ADD指令需要写回通用寄存器堆,因此我们需要在写回级访问 == 开发环境的组织与结构 -整个CPU设计开发环境(#dir_name)的目录结构及各主要部分的功能如下所示。其中只有标黑色的部分是需要大家自行开发的,其余部分都已经设计好了。 +整个CPU设计开发环境(#dir_name)的目录结构及各主要部分的功能如下所示。其中只有标黑色的部分是需要自行开发的,其余部分均为开发环境框架代码已经设计完毕。 // #fakepar // #figure( @@ -318,9 +518,9 @@ TODO:增加目录结构图 === 验证所用的计算机硬件系统 -单纯实现一个CPU没有什么实用价值,通常我们需要基于CPU搭建一个计算机硬件系统。在本书中,我们也是基于CPU搭建一个计算机硬件系统,然后通过在这个计算机硬件系统上运行测试程序来完成CPU的功能验证。 +单纯实现一个CPU没有什么实用价值,通常需要基于CPU搭建一个计算机硬件系统。本实验也是基于CPU搭建一个计算机硬件系统,然后通过在这个计算机硬件系统上运行测试程序来完成CPU的功能验证。 -在引入AXI总线接口设计之前,我们将采用一个简单的计算机硬件系统。这个硬件系统将通过FPGA开发板实现。其核心是在FPGA芯片上实现的一个片上系统(System On Chip,SoC)。这个SoC芯片通过引脚连接电路板上的时钟晶振、复位电路,以及LED灯、数码管、按键等外设接口设备。SoC芯片内部也是一个小系统,其顶层为SoC_Lite,内部结构如@基于myCPU的简单Soc结构 所示,对应的RTL代码均位于mycpu_verify/rtl/目录下。我们重点关注SoC_Lite这个小系统。可以看到,SoC_Lite的核心是我们将要实现的CPU——myCPU。这个CPU与指令RAM(Inst Sram)和数据RAM(Data Sram)进行交互,完成取指和访存的功能。除此之外,这个小系统中还包含PLL、Peripherals等模块。 +在引入AXI总线接口设计之前,实验将采用一个简单的计算机硬件系统。这个硬件系统将通过FPGA开发板实现。其核心是在FPGA芯片上实现的一个片上系统(System On Chip,SoC)。这个SoC芯片通过引脚连接电路板上的时钟晶振、复位电路,以及LED灯、数码管、按键等外设接口设备。SoC芯片内部也是一个小系统,其顶层为SoC_Lite,内部结构如@基于myCPU的简单Soc结构 所示,对应的RTL代码均位于mycpu_verify/rtl/目录下。只需重点关注SoC_Lite这个小系统。可以看到,SoC_Lite的核心是实验将要实现的CPU——myCPU。这个CPU与指令RAM(Inst Sram)和数据RAM(Data Sram)进行交互,完成取指和访存的功能。除此之外,这个小系统中还包含PLL、Peripherals等模块。 #fakepar #figure( @@ -329,25 +529,25 @@ TODO:增加目录结构图 )<基于myCPU的简单Soc结构> #fakepar -指令RAM和数据RAM与CPU之间的关系大家已经了解了。这里简单解释一下PLL、Peripherals以及myCPU与Data Sram、Peripherals之间的二选一功能。 +在数据通路分析中已经阐述了指令RAM和数据RAM与CPU之间的关系。这里简单解释一下PLL、Peripherals以及myCPU与Data Sram、Peripherals之间的二选一功能。 -我们在开发板上给FPGA芯片提供的时钟(来自时钟晶振)主频是#soc_freq。如果直接使用这个时钟作为SoC_Lite中各个模块的时钟,则意味着myCPU的主频至少要能达到#soc_freq。对于初学者来说,这可能是个比较严格的要求,因此我们添加了一个PLL IP,将其输出时钟作为myCPU的时钟输入。这个PLL以#soc_freq 输入时钟作为参考时钟,输出时钟频率可以配置为低于#soc_freq。 +开发板上给FPGA芯片提供的时钟(来自时钟晶振)主频是#soc_freq。如果直接使用这个时钟作为SoC_Lite中各个模块的时钟,则意味着myCPU的主频至少要能达到#soc_freq。对于初学者来说,这可能是个比较严格的要求,因此实验添加了一个PLL IP,将其输出时钟作为myCPU的时钟输入。这个PLL以#soc_freq 输入时钟作为参考时钟,输出时钟频率可以配置为低于#soc_freq。 myCPU通过访问Peripherals部件来驱动板上的LED灯、数码管,接收外部按键的输入。其操控的原理如下:外部的LED灯、数码管以及按键都是通过导线直接连接到FPGA的引脚上的,通过控制FPGA输出引脚上的电平的高、低就可以控制LED灯和数码管。同样,也可以通过观察FPGA输入引脚上电平的变化来判断一个按键是否按下。这些FPGA引脚又进一步连接到Peripherals部件中某些寄存器的某些位上,所以myCPU可以通过写Peripherals部件寄存器控制输出引脚的电平来控制LED灯和数码管,也可以通过读Peripherals部件寄存器来知晓连接到按键的引脚是高电平还是低电平。 -myCPU和dram、Peripherals之间有一个“一分二”部件。这是因为在RISC-V指令系统架构下,所有I/O设备的寄存器都是采用Memory Mapped方式访问的。我们这里实现的Peripherals也不例外。MemoryMapped访问方式意味I/O设备中的寄存器各自有一个唯一内存编址,所以CPU可以通过load、store 指令对其进行访问。不过,dram作为内存也是通过load、store指令进行访问的。对于一条load或store指令来说,如何知晓它访问的是Peripherals还是dram?我们在设计SoC的时候可以用地址对其进行区分。因此在设计SoC的数据通路时就需要在这里引入一个“一分二”部件,它的选择控制信号是通过对访存的地址范围进行判断而得到的。 +myCPU和dram、Peripherals之间有一个“一分二”部件。这是因为在RISC-V指令系统架构下,所有I/O设备的寄存器都是采用Memory Mapped方式访问的,这里实现的Peripherals也不例外。MemoryMapped访问方式意味I/O设备中的寄存器各自有一个唯一内存编址,所以CPU可以通过load、store 指令对其进行访问。不过,dram作为内存也是通过load、store指令进行访问的。对于一条load或store指令来说,如何知晓它访问的是Peripherals还是dram?在设计SoC的时候可以用地址对其进行区分(相当于存在一个数据选择器,其根据地址选择数据)。因此在设计SoC的数据通路时就需要在这里引入一个“一分二”部件,它的选择控制信号是通过对访存的地址范围进行判断而得到的。 -这里要提醒大家的是,因为整个SoC_Lite的设计都要实现到FPGA芯片中,所以在进行综合实现的时候,你选择的顶层应该是SoC_Lite,而不是你自己写的myCPU。 +这里要提醒是,因为整个SoC_Lite的设计都要实现到FPGA芯片中,所以在进行综合实现的时候,所需选择的顶层应该是SoC_Lite,而不是设计实现的myCPU。 === 验证所用的计算机仿真系统 -由于上板的限制条件很多,这里我们再介绍我们实现的软件仿真方法,其运行效果与上板仿真几乎无异,但效率更高且更加方便。 +由于上板的限制条件很多,这里再介绍软件的仿真方法,其运行效果与上板仿真几乎无异,但效率更高且更加方便。 TODO:仿真结构 === myCPU的顶层接口 -为了让大家设计的CPU能够直接集成到本平台所提供的CPU实验环境中,我们要对CPU的顶层接口做出明确的规定。myCPU顶层接口信号的详细定义如@差分测试框架接口 以及@myCPU顶层接口信号的描述 所示。只要大家设计的CPU符合这样的顶层接口就可以接入我们的差分测试框架中使用。 +为了使设计的CPU能够直接集成到本平台所提供的CPU实验环境中,这里要对CPU的顶层接口做出明确的规定。myCPU顶层接口信号的详细定义如@差分测试框架接口 以及@myCPU顶层接口信号的描述 所示。只要设计的CPU符合这样的顶层接口就可以接入的差分测试框架中使用。 #fakepar #figure( @@ -406,7 +606,7 @@ TODO:仿真结构 == 差分测试 -可能你会觉得疑惑,为什么在写回级将pc以及通用寄存器的写回信号发往CPU外部,其实这些信号都是为了进行差分测试服务的。在介绍如何对CPU进行差分测试前,我们先来了解下如何对数字逻辑电路的进行功能验证。 +在介绍如何对CPU进行差分测试前,先了解下如何对数字逻辑电路的进行功能验证。 #fakepar #figure( @@ -415,20 +615,16 @@ TODO:仿真结构 )<功能验证框架> #fakepar -数字逻辑电路的功能验证的作用是检查所设计的数字逻辑电路在功能上是否符合设计目标。简单来说,就是检查设计的电路功能是否正确。我们这里所说的功能验证与软件开发里的功能测试的意图是一样的。但是,要注意,我们使用了“验证”(Verification)这个词,这是为了避免和本领域另一个概念“测试”(Test)相混淆。在集成电路设计领域,测试通常指检查生产出的电路没有物理上的缺陷和偏 +数字逻辑电路的功能验证的作用是检查所设计的数字逻辑电路在功能上是否符合设计目标。简单来说,就是检查设计的电路功能是否正确。这里所说的功能验证与软件开发里的功能测试的意图是一样的。但是,要注意,这里使用了“验证”(Verification)这个词,这是为了避免和本领域另一个概念“测试”(Test)相混淆。在集成电路设计领域,测试通常指检查生产出的电路没有物理上的缺陷和偏 差,能够正常体现设计所期望的电路行为和电气特性。 所谓数字电路的功能仿真验证,就是用(软件模拟)仿真的方式而非电路实测的方式进行电路的功能验证。@功能验证框架 给出了数字电路功能仿真验证的基本框架。 -在这个基本框架中,我们给待验证电路(DUT)一些特定的输入激励,然后观察DUT的输出结果是否和预期一致。这个过程很类似与程序编程里的OJ(Online Judge)测试,通过输入不同的测试数据得到不同的运行结果,我们再比对运行结果进行判断程序的正确性。 +在这个基本框架中,给待验证电路(DUT)一些特定的输入激励,然后观察DUT的输出结果是否和预期一致。这个过程很类似与程序编程里的OJ(Online Judge)测试,通过输入不同的测试数据得到不同的运行结果,比对运行结果进行判断程序的正确性。 -我们对CPU设计进行功能仿真验证时,沿用的依然是上面的思路,但是在输入激励和输出结果检查方面的具体处理方式与简单的数字逻辑电路设计有区别。对简单数字逻辑电路进行功能仿真验证时,通常是产生一系列变化的激励信号,输入到被验证电路的输入端口上,然后观察电路输出端口的信号,以判断结果是否符合预期。对于CPU来说,其输入/输出端口只有时钟、复位和I/O,采用这种直接驱动和观察输入/输出端口的方式,验证效率太低。 +对CPU设计进行功能仿真验证时,沿用的依然是上面的思路,但是在输入激励和输出结果检查方面的具体处理方式与简单的数字逻辑电路设计有区别。对简单数字逻辑电路进行功能仿真验证时,通常是产生一系列变化的激励信号,输入到被验证电路的输入端口上,然后观察电路输出端口的信号,以判断结果是否符合预期。对于CPU来说,其输入/输出端口只有时钟、复位和I/O,采用这种直接驱动和观察输入/输出端口的方式,验证效率太低。 -我们采用测试程序作为CPU功能验证的激励,即输入激励是一段测试指令序列,这个指令序列通常是用汇编语言或C语言编写、用编译器编译出来的机器代码。我们通过观察测试程序的执行结果是否符合预期来判断CPU功能是否正确。这样做可以大幅度提高验证的效率,但是验证过程中出错后定位出错点的调试难度也相应提升了。考虑到初学者尚不具备强大的调试能力,我们提供了一套基于Trace比对的调试辅助手段,以帮助大家在调试过程中更加快速地定位错误。 - -大家在调试C程序的时候应该都用过单步调试这种调试手段。在通过单步调试这样的“慢动作”来运行程序的每一行代码的情况下,能够看到每一行代码的运行行为是否符合预期,从而及时定位到出错点。我们在本书开发环境中提供给大家的这套基于Trace比对的调试辅助手段,借鉴的就是这种单步调试的策略。 - -具体实现方式是:在myCPU每条指令写寄存器的时候,将myCPU中的PC和写寄存器的信息同模拟器的PC以及写寄存器信号进行比对,如果不一样,那么立刻报错并停止仿真。 +框架采用测试程序作为CPU功能验证的激励,即输入激励是一段测试指令序列,这个指令序列通常是用汇编语言或C语言编写、用编译器编译出来的机器代码。通过观察测试程序的执行结果是否符合预期来判断CPU功能是否正确。这样做可以大幅度提高验证的效率,但是验证过程中出错后定位出错点的调试难度也相应提升了。为了解决这个问题,框架在myCPU每条指令写寄存器的时候,将myCPU中的PC和写寄存器的信息同实现之前的模拟器的PC以及写寄存器信号进行比对,如果不一样,那么立刻报错并停止仿真。 = 实验要求 @@ -460,4 +656,5 @@ TODO:仿真结构 + RISC-V 的运算指令有进行运算结果的溢出判断吗,为什么要这样设计?可以对比 MIPS 指令集进行说明(无溢出判断,相比 MIPS 少了 ADDU 等不判断溢出的指令,应该是为了节省指令编码空间,况且溢出判断可以用软件实现) + 为什么并不是所有的R型计算指令都有对应的字指令? + 请问差分测试框架只有这些debug信号就够了吗?假如有的指令不写回通用寄存器堆呢,这时框架又该如何发现问题?(即使是跳转指令或是访存指令当时未写回寄存器堆,但仍然会影响之后的指令执行结果,只是我们发现问题的时间晚了一些,但不影响问题的发现) ++ 当前处理器采用的是哈佛结构还是冯诺依曼结构? + 谈谈你在实验中碰到了哪些问题?又是如何解决的? \ No newline at end of file diff --git a/doc/计算机结构设计实验/lab09/实现 R 型运算类指令的理想流水线设计实验.md b/doc/计算机结构设计实验/lab09/实现 R 型运算类指令的理想流水线设计实验.md index bd242a1..6d9f711 100644 --- a/doc/计算机结构设计实验/lab09/实现 R 型运算类指令的理想流水线设计实验.md +++ b/doc/计算机结构设计实验/lab09/实现 R 型运算类指令的理想流水线设计实验.md @@ -88,7 +88,7 @@ pc 的输出将送到指令 SRAM 中用于获取指令,由于我们的指令 S 我们将 Fetch/Decode 之间的流水线缓存称为指令队列。我们将指令队列之前的阶段称为前端,将指令队列之后的阶段称为后端。当取指单元一次取指的数量大于译码单元可以解码的数量时,又或是后端流水线发生暂停时,取指单元可以继续取指,多余的指令可以在指令队列中排队等待,而不用暂停取指。通过指令队列这个部件可以解耦前后端。 -![图 9.7 指令队列](image/image-20240109153542526.png) +![image-20240124134556170](image/image-20240124134556170.png) 如图 9.7 所示,指令队列的实现是一个深度为 depth 的寄存器组,每个寄存器中保存一个叫做 data 的数据包(目前我们需要保存指令的内容以及指令的 PC 这两个数据),宽度应该和 data 的宽度一致。出队指针和入队指针都是一个宽度为 $\rm log_2(depth)$的寄存器。我们使用出队指针指示队列的头部,入队指针指示队列的尾部。由取指单元发送的数据存入入队指针指示的寄存器;出队指针指示的寄存器保存的数据发送到译码单元中。目前我们实现的是理想流水线,因此每一个 clock 我们的入队指针和出队指针都应该加 1,发生 reset 时,两个指针都应该置为 0。 @@ -104,7 +104,7 @@ a)译码器 首先我们要明白译码器是如何解码不同指令的。RISC-V 有 6 种指令格式,如图 9.8 所示。译码器根据指令的 opcode 段识别出指令的格式,再进行下一步的译码。 -![图 9.8 R型指令格式](image/image-20240109144722861.png) + 在本实验中,我们只需要实现 R 型的运算指令。图 9.9 展示了 RV64 中所有 R 型运算指令。我们先分析非字指令,不难发现,R 型运算指令的 opcode 是 0110011,再通过 func3 区别各指令的运算类型,其中 ADD 和 SUB、SRL 和 SRA 的 func3 一致,再由 func7 的第 6 位进行区分。而字指令的分析也和非字指令的分析一致。 @@ -124,7 +124,7 @@ R 型运算指令都是三地址指令,每条指令都有两个源操作数以 接下来我们应该阅读手册,根据手册对指令功能的定义对各控制信号进行赋值。图 9.10 展示了 ADD 指令的定义。 -![图 9.10 ADD指令的定义](image/image-20240107213027949.png) +![image-20240124141127010](image/image-20240124141127010.png) ADD 指令的源操作数都来自通用寄存器堆,因此 src1_ren 和 src2_ren 都为 1,src1_raddr 对应指令的 19 至 15 位,src2_raddr 对应指令的 24 至 20 位。