408第二季 - 组成原理 - 指令的寻址方式
在开始CPU这位神人之前,先看一看指令系统的小知识点
指令集
RISC 通用寄存器多啊,组合逻辑控制啊,指令定长啊,流水线也是必须要实现的啊
CPU
组成部件
然后他们作用
简单看看哪些寄存器是小透明,不,认真看看
指令周期
取指周期和后面的 就是 机器周期
一个机器周期 就是若干个 时钟周期
比如下面的取指周期就有很多的时钟周期,下面都是我之前讲过的
就下面一套流程,简单看看
然后是书上的图
数据通路
搞人小器件
左边是一堆的操作
然后是数据通路的控制信号是这样写的
这个多路选择器就是A和B选一个输出,之前的加法器就说过了,就图下面这个
只能从宽的到窄的传输,然后EN控制能不能传输
单总线方式
可以看见这里只有一条总线,然后看见根据左边的操作看右边画的箭头
M()表示:内存读取操作。
然后画圈占两个时钟周期
多总线方式
可以看见左边有三条线,他们就可以多总线做辣
单总线方式更加详细
这整个大东西是CPU,然后上面4个是控制器,下面和ACC全是运算器
然后这个系统总线分别是CB(控制总线),DB,AB
然后就是看一下总线加CPU的组合
然后再看一看下面的小知识点
大题做一做
这里MDRinE是然后MDRin是
这里可以看一下,最后指向的是(R1),说明写回的是内存
然后这里注意下,这里MDRoutE是往内存送,MDRout是往CPU送
然后我们来具体看一下里面的部件
A是暂存器
然后我们来看一下没有暂存器会发生什么
可以看见的是如果没有暂存器,两端的内容会是一样的
然后运算之后也得把数据传到暂存器里,因为ALU没有存储数据的能力,不然就溜走了
这里就是说MAR的数据一直没有丢失
所以最后看一下过程
知道上面的之后 我会根据上面的C5 - C10 一一解读
C5 先看R0,R0是寄存器寻址,这就很爽了,就直接从寄存器R0给暂存器A就行了
C6 再看R1,R1有点麻烦了,因为是寄存器间接寻址,这时候就要去内存了,去内存又是经典的步骤,R1的内容先去地址寄存器MAR
C7 把内存里MAR指定的地址的内容取出来,给到数据寄存器MDR
C8 MDR也是又东西了,最后和暂存器里的A的值相加,存AC里
C9 AC也是有我们最需要的值了,我们要写回(R1),也就是R1的内存,这里也是先写回MDR(看图就知道了)
C10 这里MDR少个括号,然后就是写回MAR原本的内存地址
然后还可以优化
这里 A和MDR一块填充了数据
然后就是官方的答案
这里也是可以理解,反过来存放了而已