TLB和大叶

本文详细介绍了32位X86处理器如何将逻辑地址转换为物理地址的过程,并阐述了TLB(Translation Lookaside Buffer)的工作原理及其在提高内存访问速度方面的作用。此外,还讨论了使用大页的好处。

目录

TLBCache本质上都是一种高速的SRAMCache存放的是内存中的数据或者代码,而TLB存放的是页表项。
分页是指把物理内存分成固定大小的块,按照页来进行分配和释放。一般常规页大小为4K个字节,之后又因为一些需要,出现了大页,比如2M个字节.

逻辑地址转换物理地址

对于32X86的处理器来说,把一个逻辑地址分为3段,每一段对应一个偏移地址。查表的顺序如下:

  • 根据位[31:22]加上寄存器CR3存放的页目录表的基址,获得页目录表中对应表项的物理地址,读内存,从内存中获得该表项内容,从而获得下一级页表的基址。
  • 根据位[21:12]页表加上上一步获得的页表基址,获得页表中对应表项的物理地址,读内存,从内存中获得该表项内容,从而获得内容页的基址。
  • 根据为[11:0]加上上一步获得的内容页的基址得到准确的物理地址,读内容获得真正的内容。
    928041-20170715100813478-221497667.png
TLB

为了提高效率,X86架构的TLB被分为4组:

缓存一般页表(4KB页面)的指令页表缓存(Instruction-TLB)。
缓存一般页表(4KB页面)的数据页表缓存(Data-TLB)。
缓存大尺寸页表(2MB/4MB页面)的指令页表缓存(Instruction-TLB)。
缓存大尺寸页表(2MB/4MB页面)的数据页表缓存(Data-TLB)。
使用大页

使用大页的理由:

  • TLB空间很小,使用大页可以减少页表项.
  • 提高了命中率.

转载于:https://www.cnblogs.com/simon88/p/7181819.html

### TLB Cache 的区别与联系 TLB(Translation Lookaside Buffer) Cache 是计算机系统中两种重要的硬件组件,它们在功能、工作原理以及使用场景上存在显著的区别,但也有一定的联系。以下是关于两者的概念、工作原理以及区别与联系的详细分析。 #### 1. 概念 - **TLB**:TLB 是一种高速缓存,用于存储虚拟地址到物理地址的映射关系。它的主要作用是加速地址转换过程,减少访问内存时因页表查找而产生的延迟[^1]。 - **Cache**:Cache 是一种高速存储器,用于暂存从主存中读取的数据或指令。它的目的是缩小处理器与慢速 DRAM 设备之间的速度差异,提高数据访问效率[^2]。 #### 2. 工作原理 - **TLB 的工作原理**: TLB 存储的是虚拟地址到物理地址的映射关系。当 CPU 需要访问内存时,首先会查询 TLB 是否包含当前虚拟地址对应的物理地址。如果命中(即 TLB 中存在该映射),则直接使用物理地址访问内存;否则需要通过分页机制进行完整的地址转换,并将结果更新到 TLB 中以供后续使用[^1]。 - **Cache 的工作原理**: Cache 存储的是最近访问过的数据或指令。当 CPU 请求数据时,首先检查 Cache 中是否存在所需数据。如果命中,则直接从 Cache 中读取数据;如果没有命中,则从主存中加载数据到 Cache,并返回给 CPU 使用[^2]。 #### 3. 区别 | 特性 | TLB | Cache | |------------------|------------------------------------------|-------------------------------------------| | **存储内容** | 虚拟地址到物理地址的映射关系 | 数据或指令 | | **主要功能** | 加速地址转换过程 | 缩小处理器与主存之间的速度差异 | | **命中后的操作** | 提供物理地址 | 提供数据或指令 | | **未命中后的操作** | 进行完整地址转换并更新 TLB | 从主存加载数据到 Cache 并返回给 CPU | | **是否涉及地址转换** | 是,TLB 直接参与地址转换 | 否,Cache 只涉及数据缓存 | #### 4. 联系 尽管 TLB Cache 的功能不同,但在实际系统中它们常常协同工作。例如,在访问内存时,通常需要先通过 TLB 将虚拟地址转换为物理地址,然后使用该物理地址去访问 Cache 或主存。此外,根据 TLB Cache 的相对位置,可以分为以下两种情况: - **物理 Cache**:TLB 位于 CPU Cache 之间,即 MMU 介于 CPU Cache 之间。在这种情况下,CPU 首先访问 TLB 完成地址转换,然后使用物理地址访问 Cache[^3]。 - **逻辑 Cache**:TLB 位于 Cache Memory 之间,即 MMU 介于 Cache Memory 之间。在这种情况下,CPU 首先使用虚拟地址访问 Cache。如果 Cache 命中,则直接返回数据;如果未命中,则通过 TLB 完成地址转换后从主存加载数据[^3]。 #### 5. 示例代码 以下是一个简单的伪代码示例,展示 TLB Cache 在内存访问中的协作过程: ```python def memory_access(virtual_address): # 查询 TLB 获取物理地址 physical_address = tlb_lookup(virtual_address) if physical_address is None: # 如果 TLB 未命中,则进行完整地址转换 physical_address = page_table_walk(virtual_address) update_tlb(virtual_address, physical_address) # 使用物理地址访问 Cache data = cache_lookup(physical_address) if data is None: # 如果 Cache 未命中,则从主存加载数据 data = load_from_memory(physical_address) update_cache(physical_address, data) return data def tlb_lookup(virtual_address): # 模拟 TLB 查询逻辑 pass def page_table_walk(virtual_address): # 模拟完整地址转换逻辑 pass def cache_lookup(physical_address): # 模拟 Cache 查询逻辑 pass def load_from_memory(physical_address): # 模拟从主存加载数据逻辑 pass ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值