TLB:快表,是一种虚拟地址到物理地址的地址映射结构,当CPU传出一个地址时,首先到达的就是TLB,如果TLB命中,那么隐藏的含义就是,这个虚拟地址可以直接转换为物理地址(因为快表的表项中装的就是他的实页号,而页内陆址则在虚拟地址中可以找到,因此拼接起来就是物理地址)。
Page:页表,是一种虚拟地址到物理地址的地址映射结构,当CPU传出一个地址时,如果Page命中,那么隐藏的含义就是,这个虚拟地址可以直接转换为物理地址(因为页表的表项中装的就是他的实页号,而页内陆址则在虚拟地址中可以找到,因此拼接起来就是物理地址)。
Cache:高速缓存,是一种储存数据信息的结构,当物理地址传出时,首先到达的就是Cache,如果Cache命中,那么隐藏的含义就是,这个块我可以直接拿走(因为Cache中保存的就是主存的副本)。
主存:主存,是一种储存数据信息的结构,当物理地址传出时,如果Cache未命中,主存命中,那么隐藏的含义就是,这个块我可以从主存中拿走(因为主存中保存的就是我要的信息,不过速度肯定是没有Cache快,有的时候会差好几个数量级)。
再往下就到外存了,这里不做过多赘述
可以看到,
TLB和Page在形式上是高度相似的(他们都是地址映射的结构),Cache和主存在形式上是高度相似的(他们都是保存数据信息的结构)。
TLB和Cache在存取速度和优先级上是高度相似的(他们都是优先访问的,因为他们存取速度比较快),Page和主存在存取速度和优先级上是高度相似的(他们都是后访问的,因为他们都在主存中)
我们知道,Cache是主存的高速缓存。实际上,TLB就是页表的高速缓存。
而Cache用来加速数据存取,TLB用来加速地址转换。
对他们的访问均不算访问内存(因为他们的速度比访问主存快好几个数量级)。(这部分的知识对后面的访存部分有很大作用)
1. TLB命中:标记项相等且有效位是1。
2. Page命中:标记项相等且有效位是1。
3. Cache命中:标记项相等且有效位是1(如果是写回法,则还需要注意脏位)
首先,TLB Cache Page,都各有两种情况,命中和不命中。
因此,全排列应该是一共是2×2×2=8种情况(1:命中,0:不命中):
TLB | Page | Cache |
---|---|---|
1 | 1 | 1 |
1 | 1 | 0 |
1 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 1 |
0 | 1 | 0 |
0 | 0 | 1 |
0 | 0 | 0 |
其实可以看到,当TLB命中时,就无所谓页表命不命中了,因为压根就没有访问页表,因此也无所谓命不命中了(其实严格来说是无法判断,因为根据定义,需要发生标记位的比较和有效位的比较才可以判断命不命中)
实际上,这个题型第一次也是唯一一次出现是在2010的408真题中,也就是考408的第二年,我个人感觉是很不严谨的,而在2015年,同样的知识点,他就换了一种角度,用访存次数来考同学,那么这个是更严谨的表述其实是,当然也就更加需要同学们对于这几种结构有更深刻的理解。
这也充分说明,我们应该注重广度的同时,对重要的知识点,提高理解的深度。
因此,在下面用访存的角度进行分析。
排除了三种不可能之后,还剩余5种可能。
首先明确,我们如果要拿到数据需要两步:1. 拿到物理地址 2. 拿到数据 下面从这两个方面进行分析。
另外:页表(在主存中)对标主存(两者较慢算访存),快表对标cache(两者较快不算访存)
联系客服