繁体   English   中英

关于TLB和缓存在典型程序中的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM