设计依据
一方面,硬件设计者根据指令系统进行硬件的逻辑设计
另一方面,根据指令系统来建立计算机系统软件;
指令格式
操作码OP + 地址码A
寻址方式
显地址:
隐地址: 减少指令中地址数;
顺序寻址:访问连续数据的时候高效,比如循环和数组遍历
跳跃寻址:处理器根据地址跳到另一个地方执行,方便执行非顺序的代码段,实现分支和循环控制
立即寻址:不用通过访问内存来获取操作数,操作数直接包含在指令字中
寄存器寻址: 寄存器寻址涉及到使用寄存器中的数据作为操作数
间接寻址: 涉及到通过一个变量来访问内存地址,先访问指定寄存器或者内存
单地址指令
- 隐含约定目的地的双操作数:
其中一个操作数(通常是目的操作数)的位置是隐含的,不需要在指令中明确给出其地址; 而另一个操作数则默认来自某个特定的寄存器,比如累加器(ACC);
- 目的操作数的单操作数:
在这种指令格式中,只有一个操作数的地址被给出,并且这个操作数同时也是操作的结果存放地 增加、减少、取反等,操作完成后将结果存回原地址
零地址
不用操作数的指令,栈顶单元部分操作
字长拓展的问题:
cache替换算法
先进先出算法 可能导致命中率不高
最不经常使用算法Least Frequently Used (LFU)记录淘汰率,最小的淘汰
一些冷数据可能因为历史使用次数高而不会被淘汰;
近期最少使用算法Least Recently Used(LRU) 淘汰近期最久没有访问过的算法
随机替换算法:命中率一般,对于数据量多的时候,可以减少些损失;
cache的写入策略
写回法:只改缓存,而只有当缓存被认为“脏”,需要被替换出去时,才会被写回主存;
写穿法:只写法,任何对缓存的更改都会反映到主存中