自己动手写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 ...
随机推荐
- Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
创建一个 Django 项目及应用 django-admin startproject orm cd orm python manage.py startapp app01 在 models.py 上 ...
- 【HDU 2126】Buy the souvenirs(01背包)
When the winter holiday comes, a lot of people will have a trip. Generally, there are a lot of souve ...
- Java技术——Java中的内存泄漏
. OOM的常见类型 按照JVM规范,JAVA虚拟机在运行时会管理以下的内存区域: 程序计数器:当前线程执行的字节码的行号指示器,线程私有. JAVA虚拟机栈:Java方法执行的内存模型,每个Java ...
- 网址导航[IT]
一.Linux/UNIX Linux公社:http://www.linuxidc.com/index.htm Linux命令大全:http://man.linuxde.net 伯乐在线:http:// ...
- 【29】html5新标签有哪些?
[29]html5新标签有哪些? canvas svg video audio [01]article(IE8不支持) [01]details [02]aside(IE8不支持) [03]header ...
- python+selenium 鼠标事件操作
一.前言 除了可以使用 click( ) 来模拟鼠标的单击操作,现在Web产品中还提供了更丰富的鼠标交互方式,例如鼠标右键.双击.悬停.拖动等功能,在WebDriver中,将这些关于鼠标操作的方法都封 ...
- CentOS使用dnf安装Redis
1.查询可用的redis安装包 输入以下命令: dnf list redis 输出: redis.x86_64 3.2.10-2.el7 2.安装软件 输入以下命令: dnf install redi ...
- WordPress 编辑器没有可视化
第一次安装wordpress后出现文章编辑器只有一行按钮的问题,即使我安装了其他的编辑插件也是一样只有一行, 解决方法: 原来是再Users->All Users 中勾选了Disable the ...
- RESTful API接口
我所理解的RESTful Web API [设计篇] 百度:RESTful restful一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件 ...
- cell展开的几种方式
一.插入新的cell 原理: (1)定义是否展开,和展开的cell的下标 @property (assign, nonatomic) BOOL isExpand; //是否展开 @property ( ...