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

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

寄存器传送语言RTL

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

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

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

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

输出信号改变时机

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

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

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

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

寄存器组解读

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

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

内部结构图

3)理想数据存储器

① add指令(R-type)

指令: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

② ori指令(I-type)

指令: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

③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延迟+写存储器的建立时间+时钟偏移

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

因为指令长度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

⑤Jump指令(J-type)

指令: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

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

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

加我一起学习

公众号:凡古一往

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

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

  1. 计算机组成原理+左冬红,计算机组成原理与接口技术--基于MIPS架构(第2版高等学校电子信息类专业系列教材)...

    导语 内容提要 华中科技大学电子信息与通信学院基于FPGA平台的"微机原理与接口技术"课程教学改革已进行数载,作者在总结教学经验基础上,对<计算机组成原理与接口技术>进 ...

  2. 模型计算机控制器的逻辑设计,计算机组成原理和结构图式(第三章 CPU子系统—CPU模型的设计)...

    计算机组成原理和结构图式(第三章 CPU子系统-CPU模型的设计) CPU设计步骤 1.拟定指令系统 字长16位,寄存器型寻址方式一个地址码6位(寻址方式3位+寄存器类3位) 地址码位由寄存器种类决定 ...

  3. 计算机组成原理微命令序列图,计算机组成原理和结构图式(第三章 CPU子系统)...

    计算机组成原理和结构图式(第三章 CPU子系统) 1.CPU概述 M:存储部件(存储单元在存储部件中) R:通用寄存器组 ALU:逻辑运算部件 1)CPU的基本组成: 1.运算部件 2.寄存器组 3. ...

  4. 【计算机组成原理】中央处理器(一)—— CPU 的功能与基本结构

    [计算机组成原理]中央处理器(一)-- CPU 的功能与基本结构 一.现代计算机的结构 1. 运算器的基本组成 2. 控制器的基本组成 二.CPU 的功能 1. 运算器的基本结构 2. 控制器的基本结 ...

  5. 计算机组成原理学习笔记(第三部分 CPU部分)

    学习视频 随看随记 MAR(主存地址寄存器)和MDR(主存数据寄存器)不是CPU的组件,但是常常把他们两个集成到CPU中. ()中保存的是地址,或者寄存器,表示地址或寄存器中的内容.例如AD(IR): ...

  6. [计算机组成原理] 第六章 控制系统与CPU

    第六章 控制系统与CPU 6.1 控制器概述 (CU Control Unit) 6.1.1 指令执行的基本步骤 CPU (Central Process Unit) 中央处理器 = 控制器 + 运算 ...

  7. 计算机组成原理——CPU功能结构 指令周期 数据通路 控制器 流水线

    笔记整理来源于王道考研视频 CPU的功能和结构 CPU的功能 指令控制 操作控制 时间控制 数据加工 中断处理 运算器的基本结构 算术逻辑单元:主要功能是进行算术/逻辑运算 通用寄存器组:如AX,BX ...

  8. 12年计算机考研大纲,2012年计算机考研大纲解析之计算机组成原理

    2012年计算机统考大纲已经公布,我们第一时间来解析一下计算机统考大纲的第二部分计算机组成原理及相关知识点:计算机组成原理部分也占了45分,是分值最高的两部分之一,可见计算机专业研究生选拔对计算机组成 ...

  9. 12年计算机考研大纲,2012计算机考研大纲解析之计算机组成原理

    2012年计算机统考大纲已经公布,我们第一时间来解析一下计算机统考大纲的第二部分计算机组成原理及相关知识点:计算机组成原理部分也占了45分,是分值最高的两部分之一,可见计算机专业研究生选拔对计算机组成 ...

最新文章

  1. 70个NumPy分级练习:用Python一举搞定机器学习矩阵运算
  2. html5 popup,popup.js-jQuery和CSS3可互动的3D弹出窗口插件
  3. ubuntu下解决Ruby安装后缺少openssl的问题
  4. 这套“人造肌腱”装备,可保护你的老腰|Science子刊
  5. Dubbo快速启动示例
  6. matlab路面,赛道道路路况分析问题 matlab高手进下
  7. python获取eth0_Python获取网卡信息(名称、MAC、IP、网关等)
  8. 【转】关闭特定虚拟机上声音嘟嘟声
  9. 编码引出的问题_FileReader读取GBK格式的文件
  10. 以非泛型方式调用泛型方法(三)
  11. 欢乐纪中某A组赛【2019.1.19】
  12. 【安卓开发 】Android初级开发(八)WebView网页
  13. StreamWriter类的一般使用方法
  14. Java集合框架-重构设计
  15. 如何在ashx页面获取Session值 (仅供个人参考)
  16. 深入理解计算机系统 相关课程,深入理解计算机系统
  17. Ubuntu 18.04从源代码编译安装GPU支持的Tensorflow 1.8.0
  18. Windows固态硬盘,unbuntu机械硬盘双系统方案
  19. 霍尔传感器和直流无刷电机
  20. 姿态估计之Yaw Pitch Roll

热门文章

  1. SpringBoot入门到精通_第3篇 _应用组件分析
  2. JavaScript 常用工具函数
  3. Windows批处理文件(.bat文件和.cmd文件)简单使用
  4. 编写一个C程序,实现以下功能:定义一个学生结构体Student(含学号、姓名、年龄、身高)和一个函数sort(struct Student *p),该函数使用选择排序法按年龄由小到大排序。在主函数中
  5. 360断网急救箱_万事不求人,教你自己动手修复网络断网
  6. 怎么添加一个程序集_门店小程序,微信小程序怎么添加店铺
  7. 相对熵与交叉熵_详解机器学习中的熵、条件熵、相对熵、交叉熵
  8. BugkuCTF-PWN题pwn1-瑞士军刀
  9. linux ftp下载函数函数,FTP下载的函数
  10. mysql 生明变量_mysql中变量的使用