计算机体系架构rtl 第五章第六章
来源:互联网 发布:flash mac版下载 编辑:程序博客网 时间:2024/06/05 11:10
第五章:单周期的cpu
1。在cpu中需要实现一个寄存器堆,这个寄存器堆中包括了:常数,汇编器专用(什么意思),表达式计算或者函数调用的返回结果,a函数调用参数,t临时变量(函数调用时不需要保存和恢复的),s函数调用时需要保存和恢复的寄存器变量,t临时变量(函数调用时不需要保存和恢复的),操作系统专用,全局变量指针,堆栈指针,帧指针,返回地址
2。pc端的mux有几种?
a) pc+立即数(条件转移类型)
b) 跳转指令,从指令中直接decode出来的(跳转和子程序调用)
第六章 异常与中断处理及其电路实现
注意,在程序跳转时,不是软件将返回地址写入地址保存寄存器,而是硬件写。
第八章 流水线
另外,流水线中,对每一个阶段的控制信号都进行了打拍,即,比如id阶段的wreg,在exe阶段,就有ewreg,在mem阶段,就有mwreg,在wb阶段就有wwreg。
为什么?因为多条指令流水执行,每条指令在各个阶段的控制信号并不相同。
流水线中的问题:
(1)结构相关
在数据和指令mem没有分开,是一个mem的情况下,如果这个周期的数据mem想要访问,而下一个周期的mem也要访问,那么就会造成结构冲突。
通过增加资源解决。
(2)数据相关
数据相关,比如上一个周期要写r3,下一个周期要读r3,但是上一个周期的r3还没写出来,那么这个周期读出来的也不对,因此就是数据冲突。
通过bypass,内部旁路解决。
如果是add这种,在exe阶段就会生成结果数据,只不过是在第五个周期将数据存入寄存器堆,如果下一条指令需要使用这个数据,那么其实可以直接传递给下一个指令的exe进行操作。
注意,像lw这种,持续5个周期的,将会在最后一个周期更新寄存器,如果下一条指令就用这个寄存器,那么怎么解决?通过暂停流水线解决。
这时,如果不采取其他措施,停一级流水线将会导致IR中的指令执行两次。因此我们要废弃一次指令的执行。如何废弃?非常简单,只需进制它修改CPU的状态(封存写信号)
(3)控制相关
控制相关就是上一条是跳转,那么下一条怎么执行。
通过增加延迟槽解决。
- 计算机体系架构rtl 第五章第六章
- 计算机操作系统-第六章
- 第六章数组 第五题
- C++第六章第五题
- 第六章 计算机性能测试
- 计算机应用基础第六章
- 客户端网页编程--第五章、第六章
- 谢希仁《计算机网络》第五版---第六章
- C++PrimerPlus第六中文版第五章答案
- 《C++ primer 》第五版 第六章 笔记
- c++primer第五版第六章练习
- 第五章第六节-装配集合
- 架构之美第五章-架构概述
- 架构之美第五章-架构概述
- 第六章 计算机的运算方法
- 第二章 InnoDB体系架构(一)
- 计算机组成原理(第六章:计算机的运算方法)
- 第五章 计算机故障诊断与排除
- ES6箭头函数
- 约瑟夫环问题
- CF512A:Fox And Names(拓扑排序 & 字典树)
- easyui filebox限制文件上传的类型accept (新旧版本)
- eclipse import Existing Projects into Workspace导入时没找到项目的解決办法
- 计算机体系架构rtl 第五章第六章
- mac上访问samba服务器
- 唯一分解定理(算术基本定理)
- Uniwebview1.9的使用总结发布ios和Android
- 【备忘】HTML5教程从入门到精通及网站源码下载
- 最长公共子串、最长公共子序列、最长回文子串、最长回文子序列、回文子串个数
- 【最短路入门专题1】] hdu2544 A
- sass教程随笔(三)
- ORA-00245: control file backup failed; target is likely on a local file system