随笔分类 -  2021秋-计算机组成原理

摘要:概况 常规单发射5级流水线cpu。新增支持指令{mtc0, mfc0, eret, syscall, break, bgezal, bltzal};新增异常处理{Int, AdEL, AdES, Ov, RI},其中Int中断包括软件、硬件、计时器中断(硬件中断未测);新增CP0寄存器{BadVAd 阅读全文
posted @ 2022-02-11 01:53 Xlucidator 阅读(359) 评论(0) 推荐(0)
摘要:我开P6是过P5了吗?笑死,P5又挂了,还是经典的blezalc指令,天知道原来我是不会写的,前近一个月每次branch类指令全都加错,而且是错得离谱。但都把重心放在课下debug上了,自以为不就是branch+jal嘛没什么大不了;考前自己练习加到一半就停了,没想到真考到发现还得拓展传递一条信号并 阅读全文
posted @ 2021-12-15 22:35 Xlucidator 阅读(345) 评论(0) 推荐(0)
摘要:连续摸了4天鱼。有bug但过了enhanced的流水线是看也没再看过。虽说被禁考一周错因在我,但确实有被背刺的感觉很难受。 25号周四那天可以说是心情不好直接摆烂,但后面三天只能说是堤溃后欲罢不能地持续摸鱼了。高中那种边放纵边焦虑的破败感觉又回来了。曾经尝试放大学科的森然恢弘与未来可期刺激自己,不过 阅读全文
posted @ 2021-11-28 23:32 Xlucidator 阅读(219) 评论(3) 推荐(0)
摘要:课下 Thinking_Log 1.为何不允许直接转发功能部件的输出 直接转发会使一些组合逻辑部件增加新的长短不一的操作延迟,不利于计算设置流水线是时钟频率(保证流水线吞吐量?)。 2.jal中将NPC+4/8存入$ra的操作为何需流过全级 不要因为beq指令提前得到结果完成跳转的事情乱了方寸。ja 阅读全文
posted @ 2021-11-20 00:10 Xlucidator 阅读(642) 评论(0) 推荐(0)
摘要:自动化流程思路 1.C++/Python:生成大量包含指定指令的mips程序(A.asm) 2.命令行:导出该mips程序指令的机器码(A.txt) 3.魔改MARS:产生测试所需的IM、DM存入信息 4.命令行:导出该mips程序在魔改MARS运行产生的测试所需信息(B.txt) 5.Verilo 阅读全文
posted @ 2021-11-15 23:30 Xlucidator 阅读(340) 评论(0) 推荐(0)
摘要:课下 Bug_Log 1.模块实例化的信号需先定义,且记得定义完备 其实testbench见过多次了,自己写的时候还想不清。 若实例化模块时使用的信号,若事先无声明,则会自动生成1bit此名称信号,自然在多位信号传输中便出错了。使用单位信号的模块到可以省略实现声明。 !由于mips.v的clk和re 阅读全文
posted @ 2021-11-14 23:33 Xlucidator 阅读(1132) 评论(0) 推荐(0)
摘要:最近在想,我究竟能从计组课程中学到什么。依葫芦画瓢地搭一个CPU不难,但稍微设想一下从无到有设计指令,构建数据通路控制器,再到优化为多周期、流水线,在权衡中各模块互相调节...整个过程复杂困难曲折到令人咋舌。(就比如流水线CPU的构想,要是我来设计,遇到数据冒险的问题后,估计直接放弃方案了) 搭建之 阅读全文
posted @ 2021-11-12 22:34 Xlucidator 阅读(4765) 评论(1) 推荐(1)
摘要:课上 T1 在n位数中删除N个数使剩下的(n-N)位数最大 写得似乎过于谨慎而慢了,没出现寄存器打错的问题,一遍过了 T2 拆分数字 将输入整数N拆分为几个数相加的形式,按拆分项数降序排列,每项按数字大小升序排列(giao记不清了) 输入 5 输出 1+1+1+1+1 1+1+1+2 1+1+3 1 阅读全文
posted @ 2021-11-04 12:55 Xlucidator 阅读(379) 评论(0) 推荐(0)
摘要:1..word使用 .word 0:63 并非划出了64个 4Byte 地址,而是63个,可从编译后Label窗口中查看 2.syscall读取字符 li $v0, 12 syscall 此时\n也会被读入,需考虑类似C中%c的处理手法。 输入时连续输入内容不加回车,或者每次读取调用两次syscal 阅读全文
posted @ 2021-10-30 20:21 Xlucidator 阅读(81) 评论(0) 推荐(0)
摘要:课上 再次体验大心脏 T1 奇偶校验 for循环数1的个数判断奇偶/异或缩减运算符判断奇偶,然后根据check的奇偶要求调整最高位 bug1 !注意优先级:位运算 低于 比较运算。 cnt & 1 == 0 //恒为0 (cnt & 1) == 0 //cnt偶数时为1 属于是灯下黑了,调试了半天人 阅读全文
posted @ 2021-10-28 12:24 Xlucidator 阅读(192) 评论(0) 推荐(0)
摘要:缘起于p1课下alu算数位移设计。查了好多资料,最后发现还是主要在翻译官方文档。浪费了超多时间啊,感觉还是没搞透,还是先以应用为导向放一放,且用且归纳 1.表达式位宽 expression bit length 身为硬件描述语言,Verilog表达式运算过程中必然要严肃考虑位宽问题 表达式的位宽由式 阅读全文
posted @ 2021-10-23 18:11 Xlucidator 阅读(3228) 评论(0) 推荐(1)
摘要:属于是拾人牙慧 子电路外观 子电路逻辑 描述: Q端 Counter + MUX : 实现初始化。初始时MUX选择init,待时钟第一个上升沿后,Counter([Data Bit]:1bit,[Action on Overflow]:Stay at value)达到最大值,Carry出1将MUX选 阅读全文
posted @ 2021-10-21 14:47 Xlucidator 阅读(1402) 评论(0) 推荐(0)
摘要:课上 过得十分狼狈。经鉴定孩子可能脑子拗 T1 投票决议 组内投票,赞成>反对,则通过;组长拥有一票否决权。 信号名 方向 描述 [1:0] s Input 2'b00 赞成2'b01 反对2'b10 弃权2'b11 一票否决 [1:0] t0[1:0] t1[1:0] t2 Input 2'b00 阅读全文
posted @ 2021-10-21 10:34 Xlucidator 阅读(493) 评论(0) 推荐(0)
摘要:好家伙,开门挂 T2 字符自动机cscore 1.审题·惯性思维:直接输出了当前连续数,题目要求是最大连续数 → 【重新读题解决】 2.非阻塞赋值运用:若在always块内通过if(out1 > max) max <= out1更新max值,需要考虑out1的更新靠非阻塞赋值,比较时out1取更新前 阅读全文
posted @ 2021-10-13 23:20 Xlucidator 阅读(197) 评论(0) 推荐(0)
摘要:Directives声明变量值存储 容易将数据段地址和地址上的内容搞混 .data fibs: .space 48 # allocate 12 * 4 = 48 Byte memory, store first address in label "fibs" size: .word 12 # all 阅读全文
posted @ 2021-10-07 21:48 Xlucidator 阅读(336) 评论(0) 推荐(0)
摘要:1.小端存储方式:LSB在低地址 以4Byte一个字为单位,其内按字节逆序排列 \(\to\) 其实就是以字节为单位,低有效字节LSB放在在低地址处,而字节内的位序不变(或者说不care,交给更底层的硬件实现,不过硬件中一般位序采用大端,符合人脑直觉方便实现) 概念上-数据真值 机器码-内存存储 M 阅读全文
posted @ 2021-10-06 22:57 Xlucidator 阅读(624) 评论(0) 推荐(0)