基本概念
TLB:Translation lookaside buffer,即旁路转换缓冲,或称为
页表缓冲;里面存放的是一些
页表文件(
虚拟地址到物理地址的转换表)。
又称为
快表技术。由于“
页表”存储在
主存储器中,查询页表所付出的代价很大,由此产生了TLB。
对应于
虚拟地址:叫page(页面);对应于物理地址:叫frame(
页框);
X86体系的
系统内存里存放了两级
页表,第一级页表称为页目录,第二级称为页表。
TLB和CPU里的一级、二级
缓存之间不存在本质的区别,只不过前者
缓存页表数据,而后两个缓存实际数据。
内部组成
1:TLB在X86体系的CPU里的实际应用最早是从Intel的486CPU开始的,在X86体系的CPU里边,一般都设有如下4组TLB:
第一组:缓存一般
页表(4K字节页面)的指令页表缓存(Instruction-TLB);
第二组:缓存一般
页表(4K字节页面)的数据页表缓存(Data-TLB);
第三组:缓存大尺寸
页表(2M/4M字节页面)的指令页表缓存(Instruction-TLB);
第四组:缓存大尺寸
页表(2M/4M字节页面)的数据页表缓存(Data-TLB);
2:TLB命中和TLB失败
如果TLB中正好存放着所需的
页表,则称为TLB命中(TLB Hit);如果TLB中没有所需的页表,则称为TLB失败(TLB Miss)。
3: TLB条目数 即TLB里面可以存储的表项数目,一般也叫entry数。
4:TLB的联合方式
1〉全相联方式:Athlon XP
2〉组相联方式:P4
当CPU执行机构收到
应用程序发来的
虚拟地址后,首先到TLB中查找相应的
页表数据,如果TLB中正好存放着所需的
页表,则称为TLB命中(TLB Hit),接下来CPU再依次看TLB中页表所对应的
物理内存地址中的数据是不是已经在一级、二级缓存里了,若没有则到内存中取相应地址所存放的数据。既然说TLB是内存里存放的页表的
缓存,那么它里边存放的数据实际上和内存页表区的数据是一致的,在内存的页表区里,每一条记录虚拟页面和物理
页框对应关系的记录称之为一个页表条目(Entry),同样地,在TLB里边也缓存了同样大小的页表条目(Entry)。