【实验】多周期CPU微程序设计
基础知识
取指令阶段
- 需要完成的功能是 Mem[PC++] → IR
- 计算+1的动作和访问内存可以并行
- 但是内存取出来的地址和ALU的结果必须分不同的周期送回
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | Mem[PC]→IR,(PC)→AluSrcA,(AluOut)→PC |
IRin,IRWrite,AluSrcA=PC,IR_{in}, IRWrite, AluSrcA=PC,IRin,IRWrite,AluSrcA=PC, AluOp=ADD,ALuSrcB=4,PCWriteAluOp=ADD, ALuSrcB=4,PCWriteAluOp=ADD,ALuSrcB=4,PCWrite |
完成PC+=4和内存取指令 |
T2 | (IR)→OP/Func/R1#/R2#/Imm, PC+4+Imm16<<2→C | AluOp=ADD,AluSrcB=(PC+4+Imm)AluOp=ADD, AluSrcB=(PC+4+Imm)AluOp=ADD,AluSrcB=(PC+4+Imm) | 完成译码,取操作数和分支地址的计算 |
LOAD 指令
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | (A)+Imm→C) | AluOP=ADD,AluSrcA=A,AluSrcB=ImmAluOP=ADD,AluSrcA=A, AluSrcB=ImmAluOP=ADD,AluSrcA=A,AluSrcB=Imm | 算操作数地址 |
T2 | Mem[C]→DR | IorD=1IorD=1IorD=1 | 访问主存 |
T3 | (DR)→Reg | RegWrite,MemtoRegRegWrite,MemtoRegRegWrite,MemtoReg | 寄存器的写回 |
ADD 指令
- (R0) + (R1) → R0
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | (R1)+(R2)→C | AluOP=OP,AluSrcA=A,AluSrcB=BAluOP=OP, AluSrcA=A,AluSrcB=BAluOP=OP,AluSrcA=A,AluSrcB=B | 完成实际的运算,保存在C中 |
T2 | ©→Reg | RegDst=rd,RegWrite=1,MemtoReg=CRegDst=rd, RegWrite=1,MemtoReg=CRegDst=rd,RegWrite=1,MemtoReg=C | 运算结果写回到通用寄存器 |
STORE指令
- (R0)→Mem[R2]
- 涉及到内存的写,寄存器的读
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | (A)+Imm→C | AluOP=ADD,AluSrcA,AluSrcB=ImmAluOP=ADD, AluSrcA, AluSrcB=ImmAluOP=ADD,AluSrcA,AluSrcB=Imm | 算要访问的地址 |
T2 | Mem[C]=B | MemWrite=1,IorD=1MemWrite=1, IorD=1MemWrite=1,IorD=1 | 将寄存器B的值锁存到指定地址 |
BEQ
节拍 | 数据通路 | 控制信号 | 说明 |
---|---|---|---|
T1 | cmp(A,B) | Branch,PCSrc=1,AlUOP=cmp,AluSrcA=A,AluSrcB=BBranch, PCSrc=1, AlUOP=cmp,AluSrcA=A, AluSrcB=BBranch,PCSrc=1,AlUOP=cmp,AluSrcA=A,AluSrcB=B |
微指令的结构分析
- 下址地段:若P标志位为0,则表示下一条微指令的地址
- 0号地址一定为取指微程序的入口
- 每段微程序的最后一条要跳转到0地址回到取指阶段
【实验】多周期CPU微程序设计相关推荐
- 合肥工业大学宣城校区计算机组成原理实验 单周期 CPU 设计与实现
本实验使用的是Verilog,离谱的是CSDN居然找不到Verilog的代码块,只能使用c语言的代码块了. 一.实验目的: 通过设计并实现支持 10 条指令的CPU,进一步理解和掌握CPU 设计的基本 ...
- 计算机组成原理实验2---单周期CPU
实验目的 实验内容 设计一个单周期CPU,该CPU至少能实现以下指令功能操作. 必须写一段测试用的汇编程序,而且必须包含所要求的所有指令,slti指令必须检查两种情况:"小于"和& ...
- 计算机组成原理实验——单周期CPU相关问题
目录 Q&A casex是什么意思 always(*)中的*是什么意思 wire,reg,assign,always,initial都代表什么含义?在什么类型的语句中使用? 怎么看仿真波形 g ...
- 计算机组成原理实验单周期处理,计算机组成原理实验实验报告-单周期cpu设计...
计算机组成原理实验实验报告-单周期cpu设计 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机组成原理实验计算机组成原理实验 ...
- 【中山大学计算机组成原理实验】单周期CPU设计与实现
实验一 : 单周期CPU设计与实现 一. 实验目的 (1) 掌握单周期CPU数据通路图的构成.原理及其设计方法: (2) 掌握单周期CPU的实现方法,代码实现方法: (3) 认识和掌握指令与CPU的关 ...
- 计算机公共基础知识实验报告,MIPS单周期CPU实验报告总结.doc
<计算机组成原理实验> 实验报告 (实验二) 学 院 名 称 : 专业(班级) : 学 生 姓 名 : 学号 : 时间:2017年11月25日 成 绩 : 实 验 二 : 单周期 CPU设 ...
- 【计算机组成原理】实验4:单周期CPU(Verilog)中海大
[计算机组成原理]实验4 使用Verilog语言实现一个单周期CPU,测试平台:Vivado ①部分代码: single_cycle_cpu.v: `timescale 1ns / 1ps`defin ...
- 【Computer Organization笔记10】单周期CPU设计:基于7条MIPS指令的数据通路
本次笔记内容: P19 计算机组成原理(19) P20 计算机组成原理(20) 本节课对应幻灯片: 组成原理24 singlecycle.pptx 基于上节课的7条MIPS指令的数据通路,分别针对7条 ...
- (Verilog)多周期CPU设计
(Verilog)多周期CPU设计 写在前面:在参考别人的博客自己做了一遍单周期cpu后,觉得不是很难,于是自己尝试了做一下多周期cpu,然后被各种bug糊脸...果然,自己尝试和有大佬指路还是有很大 ...
最新文章
- Matlab与线性代数 -- 全1矩阵
- javascript——事件默认行为
- 教程-DelphiXE7如何调用Java Class,JAR等文件?
- Winform中实现连接Mysql8使用mysqldump实现备份表的数据
- PHP 在作为中间件时print无返回值问题
- C#委托、事件学习之(三)——热水器烧水案例
- jdbc显示mysql的数据_JDBC链接mysql插入数据后显示问号的原因及解决办法
- c语言实现全排列并存储,C语言实现全排列和回溯法总结
- 【优化分类】基于matlab GA优化GRNN超参数分类【含Matlab源码 1399期】
- opencv实时录像+视频打码
- python计算快递运费价格表_python实现快递价格查询系统
- 下厨房某词条下的所有图片爬取
- 湍流公式推导系列——(一) 不可压湍动能方程的推导与含义
- SLG手游卡牌类游戏机器人逻辑算法
- 《牡丹亭》中的情与理
- opencv_contrib安装笔记
- python打包成.exe文件时出现“系统找不到指定路径”
- java % 负数_Java如何在括号中显示负数?
- cs231n-2022-assignment2#Q1:多层全连接神经网络
- [共享工具] 一套鼠标键盘控制两台不同系统的主机
热门文章
- clickhouse 常用函数 算数函数 时间函数 日期函数 字符串函数 比较函数 数据类型函数 逻辑函数 类型转换函数 替换函数 数组函数 随机函数 编码函数 UUID URL IP 函数
- 英特尔 SST 技术
- Acne Scarring Treatment
- “2021天府金融指数”发布 专家热议绿色金融创新支持低碳转型发展
- 运维知识体系-V3.0
- 堆(Heap)数据结构介绍
- JSP电影院在线订票系统JSP电影购票系统JSP电影票预订系统JSP电影院管理jsp电影购票系统
- 冒险岛登录服务器未响应是什么意思,冒险岛079单机/小范围联机游戏搭建
- 安卓远程连接linux软件,推荐Windows、Linux安卓远程软件
- 近期Java高级开发岗面试总结