1. 衡量效率指标
衡量一个服务性能好坏高低 ,每秒事务处理数事重要的指标之一(TPS),它代表一秒内服务能处理的请求数,而TPS的大小又与程序并发能力有着重要的关系。
2.硬件的效率与一致性
如何压榨cpu资源
2.1高速缓存
计算机的存储设备与cpu的运算速度有几个数量级的差距,因此现代计算机都加上一层读写速度尽可能接近与cpu处理速度的高速缓存来充当内存与cpu的中间层,将要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从高速缓存同步回内存中,多个进程(线程)把各自需要运算的数据提前放置到高速缓存中,cpu在多个进程(线程)间切换,基于高速缓存做运算,这样就无需等待缓慢的内存读写了,可以充分的压榨计算机性能。把cpu比作高射速的机枪,缓存就是弹夹,各个进程(线程)就是多个给弹夹压子弹的人,只有子弹供给上了才能压榨机枪的威力。
引入的新问题,在多处理器(多核心)系统中,每个处理器都有自己的高速缓存,而他们又共享同一主存,当过个核心的运算任务都涉及到同一块主存时,到底以谁的结果为准,这就引入了缓存一致性的问题。为了解决这一问题,各个处理器访问缓存时都要遵循一些缓存一致性协议进行操作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2.2乱序执行优化
为了使得处理器内部的运算单元尽可能被利用,处理器可能会对输入代码进行乱序执行优化,处理器会将乱序执行结果进行重组,保证该结果与顺序执行结果是一致的,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因此一个计算任务在计算任务依赖于另一个计算任务的中间结果,那么其顺序性不能靠代码的先后顺序保证。
一条语句的执行需要好多步,简单来说可以分为以下几步:
- 取指 IF
- 译码和取寄存器操作数 ID
- 执行或者有效地址计算EX
- 存储器访问MEM
- 写回 WB
先简单看一个A=B+C的流水线执行情况,其中LW表示load, LW R1,B表示把B的值加载到R1寄存器中。ADD 就是加法,SW表示存储。
从上往下是执行顺序,右边是流水线情况,注意在ADD指令上有⊙,表示一个中断,即在这里停顿了以下,因为R2中的数据还没有准备好,所以ADD必须进行一次等待,因此会导致后边的所有指令都慢一个节拍。
下边看个复杂一点的例子A=B+C,D=E-F

这个运算有不少停顿,为什么不在停顿的时间做点别的事情呢

将E和F的读取向前提,整个执行周期减少了两个节拍,而最终的执行结果也没改变,由此可见,执行重排序对提高cpu处理性能是十分必要的