TLB & virtual memory & physical memory

本文深入解析虚拟内存的工作机制,阐述其如何使每个程序认为自己独占所有内存,并介绍CPU处理虚拟地址转换为物理地址的过程,包括TLB的作用及MMU在其中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.虚拟内存的作用:

每一个程序的组织结构,每一个程序认为自己独占所有内存,地址是逻辑的.不是真正可以拿来用的物理地址. 

程序结构

 

2.因为从程序里拿到的是程序认为的地址,也就是每一个程序都独占的所有内存,真正执行的时候需要转换为可以适用的物理地址.硬盘和内存都是分块的.

TLB

 

3.cpu拿到地址后的处理逻辑.查看TLB,就是看一看这个逻辑地址已经转换到物理地址没有.有就直接用.

顺便提一下,出现在TLB,意味着地址所在的page已经装载到内存里了.

 

TLB2

 

 

 

4.TLB hit & miss

TLB3

5.TLB & MMU 

MMU

 

### TLB与Cache的关系 TLB(Translation Lookaside Buffer)和Cache都属于计算机体系结构中的高速缓存组件,旨在提升系统的整体性能。然而两者功能不同,在内存管理中扮演着不同的角色。 #### 功能差异 TLB主要负责存储最近使用的页表项副本,用于加快虚拟地址到物理地址的转换过程[^1]。每当CPU尝试访问某个特定位置的数据时,会先通过TLB查找对应的映射关系;一旦匹配成功即可迅速定位目标数据的具体位置。相比之下,Cache则是用来临时保存从主存提取出来的常用或即将被频繁访问的数据块以及指令集,从而减少对较慢速RAM资源的需求频率并缩短等待时间[^2]。 #### 访问顺序 当程序发起一次访存请求时,系统通常遵循如下流程: - 首先查询TLB以完成地址变换; - 获取到有效的物理地址之后再转向Cache层寻找所需资料; - 若上述两步均未能命中,则最终不得不向更底层、速度也相对较慢的主要储存装置发出读写命令。 这种机制确保了即使是在多级架构下也能维持较高的效率水平,因为大多数情况下都能在前端就解决问题而不必深入后续环节。 ```python def memory_access(virtual_address): physical_address = tlb_lookup(virtual_address) if not physical_address: # 如果TLB未命中, 则需查询页表获得物理地址 physical_address = page_table_lookup(virtual_address) data = cache_lookup(physical_address) if not data: # 如果Cache未命中, 则需从主存加载数据 data = main_memory_load(physical_address) return data ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值