专题:页,页框,逻辑地址,物理地址,Cache-TLB-虚拟页式存储系统以及各种乱七八糟映射机制的地址分划
专题:页,页框,逻辑地址,物理地址,Cache-TLB-虚拟页式存储系统以及各种乱七八糟映射机制的地址分划
原理已经理解的很清楚了,这里就是重新总结一下方法以及规范名词指称,防止做到后面心态崩了.
Key:主存是连接两个系统的桥梁.更详细一点,是物理地址
虚拟页式存储:磁盘-主存系统
名词指称
页:虚拟页式存储的基本单位.在主存中和磁盘中大小应该一致.
逻辑地址:逻辑地址空间的虚地址.在程序链接(attach to system library)的时候就确定.运行时程序根据逻辑地址寻址,然后转化为物理地址取值.
物理地址:数据在主存中的实际存储地址.在运行的时候动态调整.
页表:储存在主存中,访问需要1次访存.内容是页号-页框的映射.
TLB:储存在reg中的页表的Cache.访问速度较快.
页内地址/偏移:略
页号:虚拟地址中除了页内地址的部分.
页框:地址映射机构给该页在主存上分配的页号.即地址映射的时候将页号换成页框号,就是将虚拟地址映射为物理地址.
数据流向
从物理地址开始
- 按照地址分划取得页号
- 去查页框号:
- 先去TLB查,如果没有:
- 访存去页表查
- 还没有的话就考虑调页进来
- 拿到页框号替换页号取得物理地址
Cache: Reg-主存系统
名词指称
行号:Cache行的编号.约等于虚拟页式存储的页框号.
标记:约等于页号,主存上的物理地址除去块内偏移的部分
x路组相连:一个组内有x行cache,只要是映射到这个组里的块可以随便挑一个空闲的放.
数据流向
这个很简单,略.
Combination: Cache-TLB-虚拟页式存储系统的操作流程/地址映射/数据流向
- CPU发出地址调用请求,此时给出的地址是虚拟地址
- 虚拟地址经过页表转为物理地址:
- 先找TLB
- 没有就去找页表.页表在主存中.
- 页表没有的话就报缺页中断,从外存调入.
- 物理地址再换成Cache号+块内偏移,取数
- 没有的话就去找主存.
实际上就是虚拟地址-物理地址-cache行的过程.
两个系统的地址分划
首先明确几种映射方式:
页系统没有组相联的方式,直接往空闲的地方扔就行.因此只有一种地址分划:
[页号][页内偏移]
对于Cache系统:
- 直接映射:没有映射规则,哪里空就往哪里放.
- 全相连:即1路组相连.映射行号=标记%总行数
- x路组相联:解释见上.映射行号=标记%组数=标记%(行数/x)
实际上分开还是相当基本的内容,就是不能被玩昏了头.
地址转换与分划:
页式存储使用逻辑地址和物理地址,Cache系统使用物理地址和Cache地址(姑且这么说)
主存作为联系的桥梁是关键.
虚拟/逻辑地址:
[页号][页内偏移]
物理地址:
[页框号][页内偏移]或者[标记][块内偏移]
Cache地址:
[行号][块内偏移]
页式系统和cache系统快速入手思路
用于刚拿到题目的时候快速入手展开思路.
- 明确(逻辑/物理/Cache)地址空间大小,得出地址位数
- 检查基本单位(块/页)大小,得出页/块内偏移位数
- (仅限Cache)检查映射方式,得出是否需要加组号,组号占Tag内部多少位
分划完成.