[英]Regarding how TLB and Cache are different in a typical program
一个典型的存储器指令有20%。假设有TLB丢失数据占5%,每条指令需要100个周期来处理。假设每条指令需要执行1个周期,每个高速缓存中的存储器操作1个周期,则有10%的数据访问是高速缓存未命中。每个高速缓存未命中为15个周期,因此执行1000条指令需要多长时间。
我不知道答案,但是我对TLB和缓存的使用感到困惑,我对缓存和TLB是同一件事感到印象深刻?
他们是两件截然不同的事情...
简而言之,TLB仅包含地址 (需要使用TLB来加速虚拟地址的转换),而高速缓存可以包含任何内容(即,任何类型的内存,代码或数据)。
缓存丢失的开销= 14个周期
TLB遗失的开销= 99cycles
缓存未命中= 1000 * 20%* 10%= 20
TLB失误= 1000 * 20%* 5%= 10
总周期= 1000个周期+(由于高速缓存未命中而导致的开销)+(由于TLB未命中而导致的开销)
= 1000 + (20 * 14) + (10 * 99) = 1000 + 280 + 990 = 2270 cycles
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.