course subject: how to make processor fast
- parallelism
- do less work
- cache
- optimization
pipelining lessons
- 流水线不改善延迟(一个任务执行完成时间),改善吞吐,stage越多,可能吞吐越大
- 流水线cycle受最慢stage限制
- stage不平衡时制约加速(平衡:stage时间近似相等,每个ins时间相等)
- 每个stage fill和drain的时间也会降低速度
typical RISC
- 32位固定格式
- 访存操作仅能load/store
- 32个32位GPR(而CISC里面ax,bx负责结果相关;cx负责计数;ci,si负责指针)
- 3address,reg,regarithmetic
- 直接访存,base+displacement
- simple branch conditions
- delayed branch
单周期,多周期,流水线
- 单周期的CPU会在一个时钟周期内完成所有的工作,既从指令取出,到得到结果,全部在一个时钟之内完成。(控制器一开始就产生所有控制信号发到所有阶段)
- 多周期CPU的设计是将整个CPU的执行过程分成几个阶段,每个阶段用一个时钟去完成。不仅能提高CPU的工作频率,还为组成指令流水线提供了基础。(控制器只向活动的阶段发信号)
- 在多周期CPU设计的基础上,利用各阶段电路间可并行执行的特点,让各个阶段的执行在时间上重叠起来,这种技术就是流水线技术。
data plane,control plane(控制器)
双端口ram
hazard
- structural hazard:增加部件
- data hazard:增加距离,转发,renaming
- control hazard:pc计算提前,stall,delay
cpu performance
tomasulo
- dynamic scheduling
- -
precise interrupt
- rob
cache
- direct mapped:一组假如大小为8,12mod8得到set位置。相当于1路组相连
- n-way set associative,将每一组里的路拉宽,在这些路里可以随意选取,路拉宽的,set就变扁了。
- fully associative,set到最扁的时候,就变成1,即全相连。
- 每个路称作line,line里面有tag,valid bit,以及block(数据块)
- 从0开始的memory往n路组相连里面填的时候,block大小的放入set1的line1,接下来是set2line1,后面全填满了再是set1line2
- 全相连因为没有索引所以速度是最慢的,但二级三级cache为了保证命中率一般采用全相连。
4 questions on memory hierarchy
- where can a block be placed in the upper layer
- how is a block found if it’s in the upper layer
- which block should be replaced on a miss
- what happens on a write
cache performance
4c
- compulsory
- capacity:即使在全相连的时候也会miss
- conflict:在Nway set associate的cache中miss
- coherence:在分布式中,一个cache影响其他cache
2:1cache rule
reduce misses rate
- large block size:block size变大之后,可以减少miss率,因为一个块里面的东西更多了。
- reduce via higher associativity:关联度变高之后,可以随意调节的也变多了,自然miss率降低
- via a victim cache:进一步增加容忍度,增加一个buffer
- via pseudo-associativity:暂时放在其他cache里面,伪关联
- hardware prefetch:
- software prefetch
- binding
- non-binding
- compiler opt
- merge arrays.两个int数组放到一个结构体中
- loop interchange:改善空间locality
- loop fusion:相同循环放到一起
- blocking:数组太大,将其切块