芯片
文章平均质量分 70
小刘真的很努力
一个疯狂努力的代码人
展开
-
第十一章:异常相关指令的实现
11.1 MIPS32架构中定义的异常类型在MIPS32架构中,有一些事件要打断程序的正常执行流程,这些事件有中断(Interrupt)、陷阱(Trap)、系统调用(System Call)以及其他任何可以打断程序正常执行流程的情况,统称为异常。异常类型及其优先级如表所示。 OpenMIPS处理器只实现对其中6种异常情况的处理,列举如下:硬件复位中断(包含软中断、硬中断)syscall系统调用无效指令溢出自陷指令引发的异常异常发生后,会进入异常处理例程进行具体的异常处理,处理结束后,返回原创 2022-02-01 13:36:45 · 2224 阅读 · 0 评论 -
第十章协处理器访问指令的实现
10.1 协处理器介绍协处理器一词通常用来表示处理器的一个可选部件,负责处理指令集的某个扩展,具有与处理器核独立的寄存器。MIPS32架构提供了最多4个协处理器,分别是CP0-CP3,作用如表所示:协处理器CP0用作系统控制,CP1,CP3用作浮点处理单元,而CP2被保留用于特定实现。除CP0处的协处理器都是可选的,OpenMIPS没有实现浮点运算,所以CP1,CP3不用实现,而CP0是不可选的,需要实现,所以下面重点介绍协处理器CP0.截至本章,我们的OpenMIPS处理器实现了很多指令,但这些指令原创 2022-01-30 20:29:02 · 691 阅读 · 0 评论 -
第九章 加载存储指令的实现
本章将实现MIPS32指令集架构中定义的加载存储指令,分两步:首先实现除ll、sc指令外的一般加载存储指令,其次实现比较特殊的加载存储指令ll、sc。9.1 加载存储指令说明MIPS指令集架构中定义的加载存储指令共有14条,如下:9.1.1 加载指令lb,lbu,lh,lhu,lw说明加载指令lb,lbu,lh,lhu,lw说明从图中可知,这5条加载指令可以根据指令中26-31bit的指令码加以区分,另外,加载指令的第0-15bit是offset,第21-15bit是base,加载地址的计算方原创 2022-01-30 14:43:43 · 4099 阅读 · 0 评论 -
第八章:转移指令的实现
本章将为OpenMIPS处理器添加转移指令,转移指令包括跳转、分支两种,区别是前者是绝对转移,后者是相对转移,但实现方法是相似的。转移指令涉及延迟槽。8.1 延迟槽在实现转移指令之前,先介绍一下延迟槽的概念。在第五章已经介绍了流水线中存在的三种相关:数据相关、结构相关、控制相关。其中,控制相关是指流水线中的转移指令或者其他需要改写PC指令造成的相关。这些指令改写了PC的值,所以导致后面已经进入流水线的几条指令无效,比如:如果转移指令在流水线的执行阶段进行转移条件判断,在发生转移时,会导致当前处于取指、译原创 2022-01-26 13:48:59 · 1312 阅读 · 0 评论 -
算数指令的实现
7.5 流水线暂停机制的设计与实现7.5.1流水线暂停机制的设计因为OpenMIPS设计乘累加、乘累减、除法指令在流水线执行阶段占用多个时钟周期,因此需要暂停流水线,以等待这些多周期指令执行完毕,一种直观的实现方法是:要暂停流水线,只需要保持取指令地址PC的值不变,同时保持流水线各个阶段的寄存器(也就是IF/ID、ID/EX、EX/MEM、MEM/WB模块的输出)不变。OpenMIPS采用的是一种改进的方法,假如位于流水线第n阶段的指令需要多个时钟周期,进而请求流水线暂停,那么需要保持取指地址PC的值原创 2022-01-16 15:25:46 · 545 阅读 · 0 评论 -
第七章 算术操作指令的实现
本章将实现MIPS32指令集架构定义的所有算数指令,共有21条,按照OpenMIPS实现这些指令的方式,可以分为三类,分别介绍如下:(1)简单算数操作指令共有15条,包括加法、减法、比较、乘法等指令,这些指令在流水线执行阶段都只需要一个时钟周期,而且实现思路很直观,与第4章添加逻辑操作指令类似,只需修改译码阶段的ID模块,执行阶段的EX模块,即可实现。(2)乘累加、乘累减治令共有4条:乘累加(madd)、无符号乘累加(maddu)、乘累减(msub)、无符号乘累减(msubu)。其中madd、mad原创 2022-01-14 12:16:28 · 10038 阅读 · 0 评论 -
移位操作的代码原理
6.2.1 新的数据相关情况的解决进一步考虑mfhi、mflo指令的处理过程,这2条指令会在流水线执行阶段读取HI、LO寄存器的值,如果直接采用HILO模块给出的HI、LO寄存器的值,可能不是正确的HI、LO寄存器的值,因为此时处于访存、回写阶段的指令有可能会修改HI、LO寄存器,以如下程序为例。指令3 4 5 需要修改HI寄存器,当指令6处在执行阶段时,指令5处于访存阶段,指令4处于回写阶段,而此时HI 寄存器的值是指令3刚刚写入的0x00000000,HILO模块正是将该值传到执行阶段。如果采用这个原创 2022-01-13 12:38:49 · 727 阅读 · 0 评论 -
第六章移动操作指令的实现
本章将实现移动操作指令,首先在6.1节介绍了MIPS32指令集架构中定义的移动操作指令的格式、作用,接着在6.2节给出移动操作指令的实现思路,介绍了修改后的数据流图,新出现的数据相关问题及其解决措施,并给出了修改后的OpenMIPS系统结构图。6.1 移动操作指令说明MIPS32指令集架构中定义的移动操作指令共有6条:movn、movz、mfhi、mthi、mflo、mtlo,后4条指令涉及对特殊寄存器hi、LO的读/写操作。截至到本章,我们的OpenMIPS处理器只实现了32个通用寄存器以及PC、所有原创 2022-01-11 20:01:13 · 1343 阅读 · 0 评论 -
逻辑移位空指令代码原理
5.5.1 修改译码阶段的ID模块对指令译码的前提是能判断出指令种类,这个过程如图5-15所示。其中op就是指指令的第26-31bit,即指令码,op2就是指令的第6-10bit,op3就是指令的第0-5bit,即功能码,op4就是指令的第16-20bit.定义如下:首先依据指令码op进行判断,如果是SPECIAL类指令,再判断指令的第6-10bit(即op2)是否为0,如果为0,那么再依据功能码op3的值,进行最终判断,确定指令类型。如果指令码op不为SPECIAL,那么就直接依据指令码op的值进行判断原创 2022-01-11 11:34:09 · 1661 阅读 · 0 评论 -
第五章逻辑、移位操作与空指令的实现
上一章建立了原始的OpenMIPS五级流水线结构,但是只实现了一条ori指令,从本章开始,将逐步完善。本章首先讨论了流水线数据相关问题,然后修改OpenMIPS以解决问题。接着对逻辑、移位操作和空指令的指令格式、用法进行了一一说明。5.1流水线数据相关问题流水线中经常有一些被称为“相关”的情况发生,它使得指令序列中下一条指令无法按照设计周期执行,这些“相关”会降低流水线的性能,流水线中的相关分为以下三种类型。结构相关:在指令执行过程中,由于硬件资源满足不了指令执行的要求,发生硬件资源冲突而产生的相关原创 2022-01-10 18:53:31 · 4362 阅读 · 0 评论 -
ori指令的测试
ori 自己动手写cpu原创 2022-01-09 13:54:03 · 881 阅读 · 0 评论 -
ORI指令实现代码
ori指令原创 2022-01-09 12:35:38 · 1158 阅读 · 0 评论 -
4. 第一条ORI的实现
ori指令介绍原创 2022-01-08 13:45:13 · 2252 阅读 · 0 评论 -
MIPS处理器
3.1系统设计目标3.1.1设计目标教学版的OpenMIPS处理器是一款具有哈佛结构的32位标量处理器,兼容MIPS32Release1指令集架构,可以使用现有的MIPS编译环境,如:GCC编译器等,设计目标如下:五级流水线哈佛结构,分开的指令、数据接口32个32位整数寄存器大端模式向量化异常处理,支持精准异常处理支持6个外部中断具有32bit数据、地址总线宽度能实现单周期乘法支持延迟转移兼容MIPS32指令集架构,支持MIPS32指令集中的所有整数指令大多数指令可以在一个时钟周原创 2022-01-02 16:55:41 · 989 阅读 · 0 评论 -
2021-09-30
模块模块是verilog基本单元的定义,是与外界交互的接口module module_name#(parameter_list)#(port_list); Declarations_and_Statements;endmodule模块的定义必须以关键词module开始,以关键词endmodule结束模块名,端口信号,端口声明和可选参数声明等,出现在设计使用的verilog语句(Declarations_and_Statements之前)模块内部有可选的 5 部分组成,分别是变原创 2021-10-15 16:55:09 · 166 阅读 · 0 评论 -
2021-10-10
指令格式及操作数MIPS指令指令的一般性语法格式:1个操作符,3个操作数op dst,scr1,scr2op:指令的基本功能dst:保存结果的寄存器 destinationscr1:第一个操作数 source1scr2:第二个操作数 source2固定的格式1、有助于人的记忆和书写2、有助于使得硬件简单硬件越简单,延迟越小MIPS指令每条指令只有一个操作每行写一个指令与C语言高度相关一行C代码对应多条指令C程序:变量的数量近受限于内存容量不用考虑变量的数量ISA:有一组原创 2021-10-15 16:53:46 · 97 阅读 · 0 评论 -
2021-09-30
远程仓库gitee/github公钥是为了建立远程和本地仓库的连接git clone;%远程到本地origin;git remote;%本地到远程本地仓库(HEAD)暂存区存在的意义https://www.pianshen.com/article/1196848392/原文链接使得开发的时候更灵活,不需要像svn那样需要保证提交的代码完成度,用暂存区代替提交来保存阶段性的代码,让人的确心里压力小不少。可以联系现实当中仓库中的暂存区现实中的仓库是用来存放成品的区域,在仓库的产品不会原创 2021-10-15 16:52:48 · 61 阅读 · 0 评论 -
2021-09-26
片上系统(Soc)是以CPU的核心,实现负责存储程序和数据的内存,负责和外部进行输入输出的I/O半导体导体导体原子结构价带与核心原子最外层轨道叫做价带轨道,决定着原子的电特性自由电子原子核心与价电子之间吸引力很小,外力非常容易是这个电子脱离铜原子,价电子被称为自由电子外加小电流,即移动半导体8电子-绝缘体 1价电子-导体 4个价电子-最好的半导体锗早期唯一,缺点:反向电流过大硅硅除氧外最丰富的元素,提纯后的硅最好的原料硅原子核心4个电子硅晶体结合为固体时,排列具有规律性,原创 2021-09-30 00:51:49 · 1059 阅读 · 0 评论