RISK和CISK
- RISK:精简指令集的简称,指的是机器码较少,指令比较紧凑,效率高。常见的RISK类型的处理器有MIPS、ARM、龙芯处理器(国产);
- CISK:即复杂指令集,机器码较多,指令效率不高。X86系列都属于CISK类型,如Intel、AMD等。
流水线停顿的概念和原因
- 概念:对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在特定的时钟中期执行。
- 原因:
结构冲突:硬件资源满足不了指令重叠执行的要求而发生的冲突。
解决方案:可以在前一个指令访问存储器时,将流水线停顿一个时钟,推迟后面取指令的操作。停顿周期称为“流水线气泡“。
在流水线处理机制中设置相互独立的指令。
数据冲突:指令在流水线重叠执行时,因需要用到前面的执行结果而发生的冲突。
解决方案:分为写后读冲突、写后写冲突和读后写冲突。通过定向技术减少数据冲突。设置流水线互锁机制。依靠编译器解决。
控制冲突:流水线遇到分支指令和其他会改变PC值得指令所引起的冲突。
解决方案:“冻结”或者“排空“。
cache缺失率的三种类型,并简单解释
- 强制性不命中:当一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache,这就是强制性不命中。
- 容量不命中: 如果程序执行所需的块不能全部调入Cache中,则当某些块被替换后,若又重新访问,就会发生不命中。
- 冲突不命中:在组相联或者直接映像Cache中,若太多的块映像到同一组(块)中,则会出现该组中某个块被别的块替换、然后又被重新访问的情况。
降低缺失率的方法:增加Cache块的大小、增加Cache的容量、提高相联度。
局部性原理
程序的局部性原理是指程序总是趋向于使用最近使用过的数据和指令,也就是说程序执行时所访问的存储器地址分布不是随机的,而是相对地簇集;这种簇集包括指令和数据两部分。
程序局部性包括程序的时间局部性和程序的空间局部性。
1. 程序的时间局部性: 是指程序即将用到的信息可能就是目前正在使用的信息。
2. 程序的空间局部性: 是指程序即将用到的信息可能与目前正在使用的信息在空间上相邻或者临近。
什么叫指令的流水线,为什么流水线起作用?为什么使用流水线?
把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,这样每个子过程就可以与其他子过程并行进行。这就是流水线技术。
流水线的作用:最大限度地利用了CPU资源,使每个部件在每个时钟周期都工作,大大提高了效率。
提高流水线的级数可以提高性能,级数越高越好吗?
一般说来,制程工艺确定以后,流水线级数越多,越有利于提升主频。在更高的主频下,完成一条指令的时间当然就短。也就是说,增加流水线级数是为了提升主频,进而缩短完成指令的时间。但是,如果仅仅增加流水线级数却不提高频率,是无法缩短指令周期的。物极必反,如果流水线级数太多,就会增加运算的中途出错率,一旦出错就必须返工重算,这样反而降低了CPU的运算性能。
优先考虑大概率大事件
在计算机系统设计中,对经常发生的情况,赋予它优先的处理权和资源使用权,以得到更多的总体上的改进。
非精确异常
在多发射乱序执行的流水线 CPU 上,从指令进入流水线到异常事件的发生,期间要经过若干流水级,此时 PC 的值已指向其后的某条指令,在实现非精确异常的 CPU 上就把此时的 PC 值作为引起异常指令的所在(为了表达的方便,记为 eptr)。
阿姆达尔定律
S=1/(1-a+a/n)
计算机各部分的性能必须平衡匹配,才能得到整体性能最佳的系统。