回顾:
一个存储器由存储体和MAR+MDR构成,存储体又由多个存储元构成的存储矩阵构成。
工作原理:把存储矩阵还有译码器和控制电路组装在一起就是一个存储芯片,其中有片选线、地址线和数据线,从而理解如何寻址。
具体分类:上一章说到存储器的分类以及组成,可以按照材料进行分类,也可以按照功能进行分类:分为Cache、内存、外存。
其中存储器还分为RAM和ROM,RAM就是随机存储寄存器,其读取需要的时间与存储的位置无关,又分为SRAM和DRAM,这两个一个是靠触发器,一个是靠电容。
DRAM由于其为破坏性读数,需要刷新,所以做主存更多,SRAM做缓存更多,来解决CPU和存储器速度不一致的问题,这两个都是一断电数据就丢失。
所以产生了ROM。
指令格式
指令寻址方式
两种设计方式:CISC和RISC
一条指令就是机器语言的一条,软件能工作也是因为其首先翻译成指令,硬件在指令的指挥下进行工作。
一条指令分为操作码+地址码
设主存里不仅存储指令还存储数据,那么一条指令的执行过程是这样的
假设执行的是
把()+()的内容放到里面,下一条指令是A4
其中地址为6位,地址中放的内容是32位,放的内容可能是数据也可能是指令,如果放的是指令那么操作码占8位,4个地址码占6位。
因为地址码占6位,那么一共有64个不同的位置。如上图叙述,该过程要访问主存4次。
如果把存放数据和指令放在两个不同的地方,那么执行完一条指令,直接读下一条指令就可以,即地址+1,所以增加了一个PC,计数器,会自加。这样就不需要了,指令结构可以优化为三地址指令,又接着优化为2地址指令和一地址指令,如图:
无论怎么改变都没有改变指令字长,这样的叫定长指令字结构:指令长度固定
还有变长指令字结构:随着地址码的减小指令变短。如:从一地址变为零地址
定长操作码和扩展操作码
扩展操作码是把其中一个状态表示为扩展状态,然后后面的地址码就表示操作码,对操作码进行扩展,地址减少,会变为n-1地址指令
就是哈夫曼编码
如何设计可扩展指令呢?假设指令字长固定为16
数据存放
其实这部分之前也讲过,大端模式:高位先放,小端模式:低位先放。
按字存储,按字节存储。
还有分为对齐和不对齐
不对齐效率低。
指令寻址
基于PC的顺序寻址和跳跃寻址
数据寻址有不同的寻址方式
形式地址不是真的对应存储器中的地址,而是根据存储特征,把他转化为存储器中的真实地址
这就是一地址指令,当然还有二地址指令
立即寻址
直接寻址
间接寻址
怎么判断寻址结束呢?
增加一个位,如果为1,则表示存储是形式地址,0的话表示存储的是实际地址
寄存器寻址
寄存器间接寻址
隐含寻址
默认把一个操作数放到硬件里