考虑一个带有 TLB 的分页硬件。假设整个页表和所有页都在物理内存中。搜索TLB需要10毫秒,访问物理内存需要80毫秒。如果 TLB 命中率为 0.6,则有效内存访问时间(以毫秒为单位)为 _________。
(一) 120
(二) 122
(三) 124
(四) 118答案:(乙)
说明: TLB 代表 Translation Lookaside Buffer 。在虚拟内存系统中,cpu 生成虚拟内存地址。但是,数据存储在实际的物理内存中,即我们需要在内存总线上放置一个物理内存地址以从内存电路中获取数据。因此,操作系统维护了一个特殊的表,称为页表。该表包含虚拟地址和物理地址之间的映射。因此,每次cpu生成虚拟地址时,都必须查找操作系统页表以找到对应的物理地址。为了加快速度,有一种称为 TLB 的硬件支持。 TLB 是页表的高速缓存,即包含最近访问的虚拟到物理转换。 TLB 命中率 – TLB 命中是在 TLB 中已经找到虚拟到物理地址转换的次数,而不是一直到位于较慢物理内存中的页表。 TLB命中率只不过是TLB命中率/TLB查询总数的比率。如果页面在 TLB 中找到(TLB 命中),总时间将是在 TLB 中搜索的时间加上访问内存的时间,所以
TLB_hit_time := TLB_search_time + memory_access_time
如果在 TLB 中找不到页面(TLB 未命中),总时间将是搜索 TLB 的时间(您没有找到任何内容,但仍然进行了搜索)加上访问内存以获取页表的时间和帧,加上访问内存获取数据的时间,所以
TLB_miss_time := TLB_search_time + memory_access_time + memory_access_time
但这是在个别情况下,当您想知道 TLB 性能的平均度量时,您使用有效访问时间,即之前度量的加权平均值
EAT := TLB_miss_time * (1- hit_ratio) + TLB_hit_time * hit_ratio。
EAT := (TLB_search_time + 2*memory_access_time) * (1- hit_ratio) + (TLB_search_time + memory_access_time)* hit_ratio。
由于页表和页都在物理内存中
T(eff) = 命中率 *(TLB 访问时间 + 主存访问时间)+
(1 – 命中率) * (TLB 访问时间 + 2 * 主存时间)
= 0.6*(10+80) + (1-0.6)*(10+2*80)
= 0.6 * (90) + 0.4 * (170)
= 122
这个解决方案是由Nitika Bansal 贡献的这个问题的测验