自己动手写CPU之第九阶段(4)——载入存储指令实现思路
将陆续上传新书《自己动手写CPU》,今天是第40篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了,一直都有事,不好意思哈。
开展晒书评送书活动,在 q=%E4%BA%9A%E9%A9%AC%E9%80%8A&ie=utf-8&src=se_lighten_f" style="color:rgb(51,102,153); text-decoration:none; display:inline; position:static">亚马逊
活动时间:2014-9-11至2014-10-30
9.2 载入存储指令实现思路
9.2.1 实现思路
本节介绍除ll、sc之外的载入存储指令的实现思路,ll、sc指令的实现思路将在9.7节专题介绍。
1、载入指令实现思路
载入指令在译码阶段进行译码,得到运算类型alusel_o、aluop_o,以及要写的目的寄存器信息。这些信息传递到运行阶段,然后又传递到訪存阶段,訪存阶段根据这些信息。设置对数据存储器RAM的訪问信号。
从RAM读取回来的数据须要依照载入指令的类型、载入地址进行对齐调整,调整后的结果作为终于要写入目的寄存器的数据。
2、存储指令实现思路
存储指令在译码阶段进行译码,得到运算类型alusel_o、aluop_o,以及要存储的数据。
这些信息传递到运行阶段,然后又传递到訪存阶段,訪存阶段根据这些信息。设置对数据存储器RAM的訪问信号。将数据写入RAM。
须要特别注意的是:本章如果能够在一个时钟周期内完毕对外部数据存储器RAM的读、写操作,在兴许章节实现实践版OpenMIPS处理器的时候会考虑复杂情况。
9.2.2 数据流图的改动
为了实现除ll、sc之外的载入存储指令,改动数据流图如图9-18所看到的。主要是在訪存阶段添加了对数据存储器RAM的訪问。同一时候,因为要写入目的寄存器的数据可能是运行阶段的结果,也可能是在訪存阶段从数据存储器RAM载入得到的数据,所以在訪存阶段添加了一个多路选择器。进行选择。
9.2.3 系统结构的改动
为了实现除ll、sc之外的载入存储指令,须要对系统结构进行改动,添加部分模块的接口,改动后的系统结构如图9-19所看到的。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGVpc2hhbmd3ZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
主要改动内容例如以下。
(1)译码阶段的ID模块添加了输出信号inst_o,其值就是处于译码阶段的指令,该信号会传递到运行阶段,在运行阶段的EX模块会利用该信号的值计算载入、存储地址mem_addr_o。
(2)运行阶段的EX模块将运算子类型aluop_o、载入存储地址mem_addr_o、读取的第二个操作数reg2_o等信息,通过EX/MEM模块传递到訪存阶段的MEM模块。
(3)訪存阶段的MEM模块根据载入、存储指令的类型,确定对数据存储器RAM的訪问信息,通过mem_ce_o接口送出数据存储器使能信号,mem_addr_o接口送出訪问地址,mem_we_o接口指出是载入还是存储操作、mem_sel_o接口送出字节选择信号。假设是存储指令。那么还通过mem_data_o接口输出要存储的数据,假设是载入指令。那么会从mem_data_i接口获得读取到的数据。然后MEM模块根据详细的载入指令类型、载入地址,对获取的数据进行对齐调整,终于得到要写入目的寄存器的数据。
下一次将改动OpenMIPS的代码以实现载入存储指令。
自己动手写CPU之第九阶段(4)——载入存储指令实现思路的更多相关文章
- 自己动手写CPU之第九阶段(8)——MIPS32中的LL、SC指令说明
将陆续上传新书<自己动手写CPU>,今天是第47篇. 9.7 ll.sc指令实现思路 9.7.1 实现思路 这2条指令都涉及到訪问链接状态位LLbit,能够将LLbit当做寄存器处理,ll ...
- 自己动手写CPU之第九阶段(2)——载入存储指令说明2(lwl、lwr)
将陆续上传新书<自己动手写CPU>.今天是第38篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了.一直都有事,不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9 ...
- 自己动手写CPU之第九阶段(7)——MIPS32中的LL、SC指令说明
将陆续上传新书<自己动手写CPU>,今天是第46篇. 在MIPS32指令集中有两条特殊的存储载入指令:链接载入指令LL.条件存储指令SC,本次将介绍这两条指令.在兴许将实现这两条指令. 9 ...
- 自己动手写CPU之第七阶段(7)——乘累加指令的实现
将陆续上传本人写的新书<自己动手写CPU>.今天是第30篇.我尽量每周四篇 亚马逊的销售地址例如以下.欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8 ...
- 自己动手写CPU之第五阶段(1)——流水线数据相关问题
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第15篇,我尽量每周四篇 上一章建立了原始的OpenMIPS五级流水线结构,可是仅仅实现了一条ori指令,从本章開始,将逐步完 ...
- 自己动手写CPU之第六阶段(2)——移动操作指令实现思路
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第21篇,我尽量每周四篇 6.2 移动操作指令实现思路 6.2.1 实现思路 这6条移动操作指令能够分为两类:一类是不涉及特殊 ...
- 自己动手写CPU之第四阶段(3)——MIPS编译环境的建立
将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第13篇.我尽量每周四篇 4.4 MIPS编译环境的建立 OpenMIPS处理器在设计的时候就计划与MIPS32指令集架构兼容 ...
- 自己动手写CPU之第五阶段(2)——OpenMIPS对数据相关问题的解决措施
将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第16篇.我尽量每周四篇 5.2 OpenMIPS对数据相关问题的解决措施 OpenMIPS处理器採用数据前推的方法来解决流水 ...
- 自己动手写CPU之第七阶段(2)——简单算术操作指令实现过程
将陆续上传本人写的新书<自己动手写CPU>.今天是第25篇.我尽量每周四篇 亚马逊的预售地址例如以下,欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8 ...
随机推荐
- sweetalert使用随笔
删除前确认框: //找到删除那天记录的按钮,触发点击事件 $(".del").on('click', function () { swal({ title: "操作确认& ...
- failed to execute goal org.apache.maven.plugins:maven-archetype-plugin错误解决方法
使用maven创建project时碰到如下错误: D:\codes\JSF>mvn archetype:create -DgroupId=com.tutorialspoint.test -Dar ...
- java中的equals与==的区别
equals是Object类的公共方法,方法内部是用==实现的.但是很多类都重写了equals方法,例如基本数据类型的封装类和String类,重写后比较的是对象的值或者内容是否相同.而==是比较地址, ...
- 3,bool值之间的转换,和str的各个功能属性。
bool值之间的转换 and 空字符串即为False 字符串内有内容即为True. a = 11 c = str(a) #int转换成str print(type(c)) a = ' b = in ...
- 【转载】标准C语言的输入输出流(i/o)方法详解
标准 C I/O clearerr 语法: #include <stdio.h> void clearerr( FILE *stream ); clearerr函数重置错误标记和给出的流的 ...
- 【转】DCOM远程调用权限设置
原文:https://blog.csdn.net/ervinsas/article/details/36424127 最近几天被搞得焦头烂额,由于DCOM客户端程序是在32位系统下开发的,调试时DCO ...
- Consecutive Subsequence (DP+map)
You are given an integer array of length nn. You have to choose some subsequence of this array of ma ...
- HDU-4825 Xor Sum,字典树好题!
Xor Sum 一遍A了之后大呼一声好(keng)题!debug了两小时~~~~百度之星资格赛,可以. 题意:给你一个n个元素的数组,m次查询,每次输入一个数k要求从数组中找到一个数与k异或值最大,输 ...
- POJ-2078 Matrix,暴力枚举!
Matrix 题意:一个n*n的数字矩阵,每次操作可以对任意一行或者一列进行循 ...
- 九度oj 题目1491:求1和2的个数
题目描述: 给定正整数N,函数F(N)表示小于等于N的自然数中1和2的个数之和,例如:1,2,3,4,5,6,7,8,9,10序列中1和2的个数之和为3,因此F(10)=3.输入N,求F(N)的值,1 ...