在Athlon微架构中,L1 Cache的大小为128KB,分别为64KB Data和64KB Instruction Cache,运行频率与CPU Core Clock相同,在Hit时的Load-Use Latency为3个Clock Cycle。L2 Cache大小为512KB,运行频率为CPU Core Clock的一半[86][1]。L1与L2 Cache之间的比值为4,这使得Exclusive Cache结构成为必然的选择。在L1 Cache与L2 Cache之间,Athlon微架构设置了专用的Buffer,暂存从L1 Cache中淘汰的Cache Block,这个Buffer也被称之为Victim Buffer。L1 Cache,L2 Cache与Victim Buffer的组成结构如所示。
在Athlon微架构中,Victim Buffer由8个64B大小的Entry组成。而L1 Cache,Victim Buffer和L2 Cache之间也是严格的Exclusive关系。在Athlon微架构盛行的年代,L1 Cache容量为128KB是一个很大的数字,这个数字放到今天也并不小。这使得CPU Core访问的多数数据在L1 Cache中命中,L1 Cache和L2 Cache间的总线并不繁忙,Victim Buffer暂存的Cache Block可以在总线Idle时与L2 Cache进行同步。Victim Buffer很少会因为所有都Entry被占用而成为系统瓶颈[86]。
当CPUCore读取的数据在L1 Cache Miss,而在Victim Buffer Hit时,数据将从Victim Buffer中传递给CPU Core和L1 Cache,从L1 Cache中Evict的Cache Block将送至Victim Cache,无需L2 Cache的参与。即便数据访问在L1 Cache和Victim Buffer全部Miss时,Athlon微架构L2 Cache的Load-Use Latency也仅为11个Clock Cycle,包括L1 Miss所使用的3个Cycle。
在VictimBuffer为满,CPU Core访问的数据在L1 Cache中Miss且在L2 Cache中Hit的场景中,Victim Buffer暂存的Cache Block需要使用8个Cycle刷新到L2 Cache中;之后L2 Cache需要2个Cycles的Tu