TLB、cache与buffer的比较分析.doc
文本预览下载声明
TLB、cache与buffer的比较
Tag:?CPU???TLB???CACHE??
一TLB
1)TLB的概述
TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存.
TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据.
?
2)TLB的原理
当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找.TLB中保存着虚拟地址(前20位)和页框号的对映关系,如果匹配到虚拟地址就可以迅速找到页框号,通过页框号与虚拟地址后12位的偏移组合得到最终的物理地址.页框号可以理解为页表项
如果没在TLB中匹配到虚拟地址,就出现TLB丢失,需要到页表中查询页表项,如果不在页表中,说明要读取的内容不在内存,需要到磁盘读取.
TLB是MMU中的一块高速缓存,也是一种Cache.
在分页机制中,TLB中的数据和页表的数据关联,不是由处理器维护,而是由OS来维护,TLB的刷新是通过装入处理器中的CR3寄存器来完成.
如果MMU发现在TLB中没有命中,它在常规的页表查找后,用找到的页表项替换TLB中的一个条目.
?
3)TLB的刷新原则
当进程进行上下文切换时重新设置cr3寄存器,并且刷新tlb.
有两种情况可以避免刷tlb.第一种情况是使用相同页表的进程切换.第二种情况是普通进程切换到内核线程.
lazy-tlb(懒惰模式)的技术是为了避免进程切换导致tlb被刷新.当普通进程切换到内核线程时,系统进入lazy-tlb模式,切到普通进程时退出该模式.
?
二cache1)cache的概念:cache是为了解决处理器与慢速DRAM设备之间巨大的速度差异而出现的.cache属于硬件系统,linux不能管理cache.但会提供flush整个cache的接口.cache分为一级cache,二级cache,三级cache等等.一级cache与cpu处于同一个指令周期.例如:查看当前系统的cache.
dmidecode -t cache
# dmidecode 2.9SMBIOS 2.6 present.
Handle 0x0700, DMI type 7, 19 bytesCache InformationSocket Designation: Not SpecifiedConfiguration: Enabled, Not Socketed, Level 1Operational Mode: Write BackLocation: InternalInstalled Size: 128 KBMaximum Size: 128 KBSupported SRAM Types:UnknownInstalled SRAM Type: UnknownSpeed: UnknownError Correction Type: Single-bit ECCSystem Type: DataAssociativity: 8-way Set-associative
Handle 0x0701, DMI type 7, 19 bytesCache InformationSocket Designation: Not SpecifiedConfiguration: Enabled, Not Socketed, Level 2Operational Mode: Write BackLocation: InternalInstalled Size: 1024 KBMaximum Size: 2048 KBSupported SRAM Types:UnknownInstalled SRAM Type: UnknownSpeed: UnknownError Correction Type: Single-bit ECCSystem Type: UnifiedAssociativity: 8-way Set-associative
Handle 0x0702, DMI type 7, 19 bytesCache InformationSocket Designation: Not SpecifiedConfiguration: Enabled, Not Socketed, Level 3Operational Mode: Write BackLocation: InternalInstalled Size: 4096 KBMaximum Size: 4096 KBSupported SRAM Types:UnknownInstalled SRAM Type: UnknownSpeed: Unk
显示全部