计算机组成原理单周期mips,计算机组成原理CPU单周期数据通路(MIPS)

计算机组成原理CPU单周期数据通路(MIPS)

【计算机组成原理】CPU:单周期数据通路(MIPS)

寄存器传送语言RTL

1)R(r)表示寄存器r的内容

2)M(address)表示主存储器地址address的内容

3)传输方向“←”表示,从右向左传输

4)程序计数器PC的内容直接用PC表示

输出信号改变时机

55dbcdda0f4ce9085f199e50856ba649.png

1)setup建立时间:触发时钟边缘之前保持稳定一段时间

2)hold保持时间:触发时钟边缘之后保持稳定一段时间

3)clk-2-Q time锁存延迟:触发时钟边缘之后不能立即变化,有一点点延迟

即:输入的信号(1或0)在输入之前(下跳沿到达之前)要稳住自己,不能出差错,在到达下调沿时输入信号不会立刻影响输出,而是经历一点点延迟(clk2Q)输出才改变,而与此同时输入信号会保持更长一段时间。

寄存器组解读

a65c99b00a229319818cec275da058c8.png

1)ReadinA\RB两个读入接口,符合组合逻辑,输入5-bit寄存器编号,选择32个寄存器之一的内容,耗费一小段时间(取数时间AccessTime),从BusA\busB输出(2^5=32)。

2)busWrite是写入接口,是时序逻辑,在(WriteEnable=1)&&(时钟下降沿到达)的情况下经过延迟(CLK2Q)将busW的值写入RW读入接口指定的寄存器中;WE=0时即使下降沿到来也不会写入。

内部结构图

2e503c3b8c8044f0cf4de1929dc3e0a5.png

3)理想数据存储器

26675f5cb4423471a8b68b224bd6b6ba.png

① add指令(R-type)

4b1883a985cf64ab2b961519725b5dae.png

指令:add rd,rs,rt

RTL:

1)M[PC];

2)R[rd]←R[rs]+R[rt];

3)PC ← PC + 4

设计思路:不考虑1)3)两个公共操作:

(1)Rs、Rt表示两个源寄存器编号,故与RA、RB相连,读取这两个寄存器的值,分别由busA、busB送入ALU计算,由func控制ALUctr进行add操作;

(2)结果送入busW写入RW指定的寄存器,故RW连接Rd,只有当结果不溢出且RegWr=1的情况下才将结果写入,结果溢出(OF=1)则送出到溢出处理通路。

花费时间:PC的CLK2Q时间+指令存储器取指令时间+寄存器组取数时间+ALU延迟+寄存器建立时间+时钟偏移

ALUctr=add,RegWr=1

90f327d58b2e211d6ecefca6408a0929.png

② ori指令(I-type)

b7fd12d0f652952dc387b00dc0b693fe.png

指令:ori rt,rs,imm16

RTL:

1)M[PC];

2)R[rt] ← R[rs] or ZeroExt(imm16);

3)PC ← PC + 4

设计思路:不考虑1)3)两个公共操作:

(1)因为目的寄存器是rt,跟R-type的rd不一样,所以得在RW装个多路选择器,用RegDst控制是用哪个做目的寄存器(R-type用0,I-type用1);

(2)由于要进行立即数零扩展(32位才能送入ALU),添加一个扩展器,用ExtOp=1控制进行符号扩展,ExtOp=0控制进行零扩展;

(3)由于R-type是两个寄存器数运算,I-type有一个来自立即数,所以要在ALU一个输入接口装一个多路选择器,用ALUSrc=0控制寄存器输入,ALUSrc=1控制立即数输入。

时间:PC的CLK2Q时间+指令存储器取数时间+寄存器组取数时间+ALU延迟+写寄存器的建立时间+时钟偏移

ALUctr=or,RegWr=1,RegDst=1,ExtOp=0,ALUSrc=1

d0a9e066f01dc89e7292d00a585fbb76.png

③lw、sw指令(I-type)

指令:lw:lw rt,rs,imm16;sw:sw rt, rs,imm16

RTL:

1)M[PC];

2)Addr←R[rs]+SignExt(imm16);

3)lw:R[rt]←M[Addr];sw:M[Addr]←R[rt];

4)PC ← PC + 4)

设计思路:不考虑1)4)两个公共操作:

(1)因为写入目的寄存器的数据来源不是ALU结果,而是存储器的输出,所以要在busW加一个多路选择器,用MemtoReg=0控制ALU结果写入,MemtoReg=1控制存储器读出数据写入;

(2)因为要从数据存储器取数,所以添加了一个数据存储器部件,存储器的取数地址由ALU计算R[rs]+SignExt(imm16)得到,所以ALU结果连接Adr端,图中busB输出端连接DataIn将数据写入实现的是指令sw的功能,注意该写入是时序逻辑。

花费时间:

lw:PC的CLK2Q时间+指令存储器取数时间+寄存器组取数时间+ALU延迟+数据存储器取数时间+写寄存器的建立时间+时钟偏移

sw:PC的CLK2Q时间+指令存储器取数时间+寄存器组取数时间+ALU延迟+写存储器的建立时间+时钟偏移

ff99a13dfc5028b8e461b8b66f6b79bc.png

ALUctr=addu,RegWr=1,RegDst=1,ExtOp=1,ALUSrc=1,

MemWr=1,MemtoReg=1

④beq指令(I-type)

指令:beq rs,rt,imm16

RTL:

1)M[PC];

2)Cond ←R[rs]-R[rt];

3)if (Cond = 0) {PC ← PC + 4 + (SignExt(imm16) x 4)} else{PC ← PC + 4}

设计思路:不考虑1)4)两个公共操作:

(1)因为PC下地址产生不同,所以增加了下地址逻辑,输出下一条指令地址,用Branch=1使用分支功能,Branch=0不使用;

(2)Zero为R[rs]-R[rt]的零标志,在Branch=1启用分支功能时,Zero=0表示两个源寄存器内容相等,应该走PC ← PC + 4 + ( SignExt(imm16)x4)这一路,反之走普通的PC←PC + 4,Branch=0时不用考虑Zero的值,因为没有启用分支。注意这里的立即数是相对偏移指令数,前面的立即数是相对偏移存储单元数。

时间:PC的CLK2Q时间+指令存储器取数时间+寄存器组取数时间+ALU延迟+寄存器建立时间(写入PC)+时钟偏移

ALUctr=subu,RegWr=0,RegDst=1/0,ExtOp=1/0,MemWr=0,MemtoReg=1/0,ALUSrc=1,Branch=1

1c46848ca3108d1d0845645a47cad9c2.png

因为指令长度32-bit,主存按字节编址,所以指令的地址总是4的倍数,所以低两位总是00,所以PC只用存放前30位,即PC<31:2>,所以下条指令的计算方法如下:

顺序执行时:PC<31:2> = PC<31:2> + 1

转移执行时:PC<31:2> = PC<31:2> + 1 + SignExt[imm16]

取指令时:指令地址=PC<31:2> 串接“00”

另外:这里用Adder是因为无需ALUctr

0d0194e57992ff3bfc13673b83e7f100.png

⑤Jump指令(J-type)

3c26003b76c1890570d21875dfb7c146.png

指令:j target

RTL:

1)M[PC];

2)PC<31:2>←PC<31:28>串接 target<25:0>

设计思路:不考虑1)4)两个公共操作:

(1)因为功能是无条件将目标地址写到PC中,所以主要修改的是取指令部件;

(2)因为送到下一个PC的值不再仅仅是计算结果,也可能是直接跳越的结果,所以在PC的写入端加一个多路选择器,用Jump=1控制写入跳跃目的地址,Jump=0控制写入计算结果。

时间:PC的CLK2Q时间+指令存储器取数时间+寄存器建立时间(写入PC)+时钟偏移

ALUctr=1/0,RegWr=0,RegDst=1/0,ExtOp=1/0,ALUSrc=1/0,MemWr=1,MemtoReg=0,Jump=1

65cc29a73b4a0f628601d0a1929cc73f.png

跳转指令的范围:2^28=256MB的内存

【计算机组成原理】CPU:单周期数据通路(MIPS)

加我一起学习

公众号:凡古一往

计算机组成原理CPU单周期数据通路(MIPS)相关教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不规则图形数格子的方法_【微课堂】人教版五年级数学(上)6.5不规则图形的面积图文精讲+教学视频+同步练习...

小学生精选资料库&#xff0c;家有小学生都在关注更多资料、微课堂&#xff0c;请至文末人教教材同步微课堂(包括视频微课、教材同步、图文讲解、同步练习等)&#xff0c;可以在课堂之外帮助同学们学习。欢迎转发给更多的同学哦~~电子课本点击图片&#xff0c;查看大图▼▼▼▼…

动态获取某个元素的高度_codeforces 1443D,解法简单,思维缜密的动态规划问题...

大家好&#xff0c;欢迎来到codeforces专题。今天选择的问题是1443场次的D题&#xff0c;这题是全场倒数第三题&#xff0c;截止到现在一共通过了2800余人。这题的思路不算难&#xff0c;但是思考过程非常有趣&#xff0c;这也是这一期选择它的原因。链接&#xff1a;https://c…

显卡的优化以提高计算机性能作用,显卡优化,教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...

多人玩游戏可能都只是在游戏中设置画质选项&#xff0c;比如反锯齿等&#xff1b;而对显卡驱动控制面板中的设置并不关注。其实在显卡驱动面板中设置游戏文件&#xff0c;可以更好的控制和提高游戏画质、性能。那如何设置NVIDIA显卡玩游戏性能更高&#xff1f;下面&#xff0c;…

服务器选购seo优化规则,如何选择有利于SEO优化的空间服务器

之前我们讲过域名&#xff0c;讲过程序&#xff0c;今天我们来讲解空间&#xff0c;其实空间主要影响SEO只有两个方面&#xff0c;一个是速度&#xff0c;一个是稳定性&#xff0c;如果你的空间稳定性不够&#xff0c;经常打不开&#xff0c;百度蜘蛛经常抓取不了&#xff0c;就…

安装npm_Npm安装包的版本号是如何更新的?

点击右上方红色按钮关注“小郑搞码事”&#xff0c;每天都能学到知识&#xff0c;搞懂一个问题&#xff01;大家好&#xff01;我是/小郑搞码事/的小郑今天和大家分享一下关于NPM安装包的版本号是如何更新的问题。版本号&#xff1f;先来看一张图上图就是2.29.1就是安装包Momen…

xp系统如何开启共享服务器,xp系统怎么关闭共享服务 xp系统共享打印机如何设置...

XP系统虽然已经出来很久了&#xff0c;但是仍然还有很多用户在使用&#xff0c;其实不管哪个系统只要电脑可以正常使用就行。很多XP用户在开启共享功能之后&#xff0c;想关闭但是又不知道如何设置&#xff0c;那么下面小编就为大家分享XP系统关闭共享服务的步骤教程&#xff0…

用udp协议通讯时怎样得知目标机是否获得了数据包?_和相亲对象聊天,你属于UDP还是CDP?...

有人说和相亲对象聊天就像ping服务器每发一条消息就像发出一条Ping命令等待对方回复从而得到响应速度结果但是难受的是这个响应速度永远无法做到秒级少点几分钟多则几十分钟甚至几十个小时才有响应有时候真希望对方不要响应了就能判断此处Ping不通从此断了念想...你是否也像这位…

三星w系列vip服务器,高端人士候机专属特权 三星W2017一张行走的VIP卡

原标题&#xff1a;高端人士候机专属特权 三星W2017一张行走的VIP卡17年春运时间为1月13日至2月21日&#xff0c;如今春节假期已过&#xff0c;亿万人开始踏上了离乡之路追寻梦想。每年春运都给交通带来巨大压力&#xff0c;今年为期40天的春运预计全国发送旅客或超29亿人次。铁…

阿酷快捷键怎么使用_必须收藏!Linux用户必须知道的常用终端快捷键

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]简介&#xff1a;以下是一些每个 Linux 用户必须使用的键盘快捷键。使用命令行时&#xff0c;这些 Linux 快捷键将提升你的工作效率。你知道什么把专业用户和普通用户分开的吗&#xff1f;掌握键盘快捷键。好的&#xff01…

checkbox ajax 不选中的值,php – 无法通过ajax传递checkbox的值

我有从数据库收到的表&#xff1a;//$id $_SESSION[staff_id];$teamResult getQuarter($leader_id);$count1 0;if (mysqli_num_rows($teamResult) > 0){?>1st Quarterwhile($row mysqli_fetch_array($teamResult)){$staff_id $row[staff_id];$username $row[usern…

3dmax天光渲染设置_【扮家家云渲染效果图】3dmax测试全局照明效果|干货教程...

首先打开场景文件&#xff0c;首先按快捷键8&#xff0c;打开环境和效果控制面板。下面有一个全局照明这样一个选项卡&#xff0c;有染色、级别、环境光三个参数。默认情况下染色为白色&#xff0c;级别为1&#xff0c;环境光为黑色。此时我们可以单击渲染&#xff0c;查看一下…

手写table用ajax遍历,原生js把数据循遍历到前端table

用前端框架去给表格赋值简直不要太容易和简单。但是原生js就会复杂一些了。特别是按钮事件的那个(“ )和 (’)特别让人脑瓜子疼。最近做了一个功能&#xff0c;里面用的就是原生js实现。写在js里面的代码&#xff1a;(用的ajax请求将文件保存到服务器&#xff0c;返回的数据遍历…

centos7下载安装mysql步骤_Linux-centos7安装mysql步骤

Centos7.3 yum安装MySQL5.7.25扩展&#xff1a;在CentOS中默认安装有MariaDB&#xff0c;这个是MySQL的分支&#xff0c;但为了需要&#xff0c;还是要在系统中安装MySQL&#xff0c;而且安装完成之后可以直接覆盖掉MariaDB。1 下载并安装MySQL官方的 Yum Repository[rootlocal…

mysql 常用命令的使用_MySQL基本命令

基操操作命令创建数据库CREATE DATABASE 数据库名&#xff1b;指定要操作的数据库USE 数据库名&#xff1b;创建数据表CREATE TABLE 数据表名&#xff1b;查看数据表SHOW CREATE TABLE 数据表名&#xff1b;使用DESCRIBE语句查看数据表DESCRIBE 数据表名&#xff1b;为数据表重…

python模糊图像清晰化_视频模糊图像处理

随着科学技术的不断发展和进步以及人们的安防意识不断加强&#xff0c;人们对于安防技术的要求越来越高。电子监控在许多领域中都得到了广泛的应用&#xff0c;如交通监控、军事侦查、公共场所安全防范等。清晰的图像能够准确地锁定犯罪证据和犯罪嫌疑人&#xff0c;能够清晰地…

mysql分页 disti_MySql查询性能优化

慢查询判定1.开启慢查询日志记录执行时间超过long_query_time 秒的sql语句2.通过show processlist命令查看线程执行状态3.通过explain解析sql了解执行状态慢查询优化是否向服务器请求列不必要的数据查询不需要的记录(limit)&#xff0c;多表关联返回全部列&#xff0c;总是取出…

python利用matplotlib做饼图_python利用matplotlib库绘制饼图的方法示例

介绍matplotlib 是python最著名的绘图库&#xff0c;它提供了一整套和matlab相似的命令API&#xff0c;十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件&#xff0c;嵌入GUI应用程序中。它的文档相当完备&#xff0c;并且 Gallery页面 中有上百幅缩略图&#xff0…

react同步请求_React中setState同步更新策略

setState 同步更新我们在上文中提及&#xff0c;为了提高性能React将setState设置为批次更新&#xff0c;即是异步操作函数&#xff0c;并不能以顺序控制流的方式设置某些事件&#xff0c;我们也不能依赖于this.state来计算未来状态。典型的譬如我们希望在从服务端抓取数据并且…

DVWA设置mysql_dvwa安装、配置、使用教程(Linux)

一、搭建LAMP环境二、安装DVWA2.1 下载dvwa2.2 解压安装将下载的应用解压到apache默认的主目录/var/www/html&#xff1a;unzip DVWA-master.zip -d /usr/www/html2.3 启用功能dvwa上的漏洞&#xff0c;需要些刻意的配置才能被利用。访问&#xff1a;http://172.0.0.1/dvwa如下…

java jdbc rowset_JAVA基础知识之JDBC——RowSet

RowSet概念在C#中&#xff0c;提供了一个DataSet&#xff0c;可以把数据库的数据放在内存中进行离线操作(读写)&#xff0c;操作完成之后再同步到数据库中去&#xff0c;Java中则提供了类似的功能RowSet.RowSet接口继承自ResultSet接口。与ResultSet相比&#xff0c;RowSet默认…