Page table, TLB, Cache简介(x86)

分页模型

以x86为例, intel的处理器的分页单元处理4kB的页, 32位的线性地址(虚拟地址)被分为3个域:

-Directory, 目录, 最高10位

-Table, 页表, 中间10位

-Offset, 偏移, 低12位

-正在使用的页目录的地址放在控制寄存器CR3中, directory字段决定页目录中的目录项, 而table则指向适当的页表项, 该页表项包含有所指向页框的物理地址,

而offset则决定页框内的具体地址.

-地址位(31-12)。指向页目录项/页表项/页的基地址。

-P(0)——存在位(Present)。表示该页表或页目录在、或不在物理存储器中。为0表示不再主存中。

如果对某个虚拟地址执行转换是所需要的页目录项或者页表项中的P位为0,则分页单元就将该虚拟地址放入到控制寄存器CR2中那个,并产生缺页异常。

-R/W(1)——读/写位(Read/Write)。指明页面是可读可写,还是只读。但是,R/W位对页的写保护只在处理器处于用户特权级时发挥作用。

当处理器处于系统特权级时,R/W位被忽略,即总可以读、写或执行。

-U/S(2)——用户/管理员位(User/Supervisor)。指明页面为用户层(特权层3)和管理员层的程序均能使用,仅还是能由管理员层(特权层0~2)的程序使用。

-PWT(3)——页直写位(Page-level Write Through)。控制使用直写还是回写的高速缓存写入策略。

-PCD(4)——页高速缓存禁止位(Page-level Cache Disable)。控制禁止还是使用高速缓存。

-A(5)——访问位(Accessed)。当页表或页面进行读或写操作后,处理器将该位置位。处理器一旦置位该位不再清除它,只有软件可以得其复位。

-D(6)——脏位。只用于页表项,当对所涉及的页面进行写操作时,页表项的D位被置位。类似访问位,只有软件可以复位。

-PS(7)——只用于页目录项,如果为1,表示页目录项指向的是2MB/4MB的页框。

-PAT(7)——(Pentium III processor) 选择一个PAT(page attribue table) 项,和PCD PWT 一起选择一个PAT表项,进而选择这个page的内存类型。

-G(8)——(Pentium Pro开始引入)置1代表是一个全局页。可以防止常用页从TLB中刷新出去。只有在CR4中的page global entry(PGE)标志置位时才起作用。

-AVL(D9~D11)——操作系统专用位(Available for system’s programmer use)。

-分页单元首先将线性地址的高20位与TLB中所有的32项相比较。

?如果有一个地址匹配(即TLB命中),就直接得到了页面的基地址,只要加上线性地址的低12位偏移量,就计算出32位物理地址。

?如果没有地址匹配,处理器将进行2级查表过程。同时,从页表中读到的高20位线性地址被存入TLB中。

TLB

-TLB (translation look-aside buffer), 其实就是一块buffer, 缓存了内存中的页表项, 以加快虚拟地址到物理地址的转换速度.

如果没有TLB, 则每次取数据都需要两次访存(查页表获得物理地址+取数据) .

32位地址划分及cache

Memory address被划分为3部分: tag, index和block offset.

-Index对应cache row, tag对应内存地址的最高位, block offset表示需要的数据在某个cache row中的data block中的位置.

-Index的长度=log2(cache rows)

-Block offset的长度=log2(bytes_per_data_block), 4K为页的话就是12

-Tag的长度=32 – index – block offset

-以 32KB ,4 路组相联,行大小为 16Bytes 的 Cache 为例,正常工作时其对地址的划分如下所示:

-Cache 以行大小(Line size)为单位分成若干个行。行 (Line) 是 Cache 的数据存储和管理单元。一个典型的 Cache 行结构为:

-其由 Tag 域、Status 域和数据域组成,

-Tag 域存放该行数据对应地址的高位。CPU 在索引后,用相应地址与组内所有行的Tag 相比较,以之区分具体的行。

-数据域能容纳的字节数是为行大小 (Line Size),其为 Cache 与内存之间数据交换的单位。

-Status 域则为一些控制位信息(如Valid, Lock 以及Parity check位等等),不同的Cache 类型,不同的Cache实现Status域稍有不同。

-以32KB 的4路组相联,行大小为 16Bytes的Cache为例的话,有 32*1024/(16 * 4)= 512 组

-CPU 访问组相联 Cache 时,就先用index索引到组,然后组内同时匹配 Tag,进行路选。

时间: 2024-12-31 03:50:07

Page table, TLB, Cache简介(x86)的相关文章

Virtual Memory PAGE TABLE STRUCTURE

COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION The basic mechanism for reading a word from memory involves the translation of a virtual, or logical, address, consisting of page number and offset, into a physical addres

查找idt table 所對應的page table in Linux

#include <linux/kernel.h> #include <linux/module.h> #include <linux/delay.h> #include <linux/string.h> #include <linux/jump_label.h> #include <linux/types.h> #include <asm/pgtable.h> #include <asm/pgtable_64.h&

Kernel Page Global Directory (PGD) of Page table of Process created in Linux Kernel

Kernel Page Global Directory (PGD) of User process created 在早期版本: 在fork一个进程的时候,必须建立进程自己的内核页目录项(内核页目录项要与用户空间的页目录放在同一个物理地址连续的页面上,所以不能共享,但所有进程的内核页表与进程0共享)3G用户,页目录中一项映射4M的空间(一项页目录1024项页表,每项页表对应1个页面4K),即:#define PGDIR_SHIFT 22#define PGDIR_SIZE (1UL << P

linux page table entry struct

Page Table Entry The access control information is held in the PTE and is CPU specific; figure bit fields have the following meanings: V Valid, if set this PTE is valid,       页表是否可用 FOE ``Fault on Execute'', Whenever an access of this type occurs, t

Cache 简介

一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache 二.缓存的分类1.基于web应用的系统架构图 2.在系统架构的不同层级之间,为了加快访问速度,都可以存在缓存 操作系统磁盘缓存->减少磁盘机械操作 数据库缓存->减少文件系统I/O 应用程序缓存->减少对数据库的查询 Web服务器缓存->减少应用服务器请求 客户端浏览器

KVM硬件辅助虚拟化之 EPT(Extended Page Table)

传统OS环境中,CPU对内存的访问都必须通过MMU将虚拟地址VA转换为物理地址PA从而得到真正的Physical Memory Access,即:VA->MMU->PA,见下图. 虚拟运行环境中由于Guest OS所使用的物理地址空间并不是真正的物理内存,而是由VMM供其所使用一层虚拟的物理地址空间,为使MMU能够正确的转换虚实地址,Guest中的地址空间的转换和访问都必须借助VMM来实现,这就是内存虚拟化的主要任务,即:GVA->MMU Virtualation->HPA,见下图

虚拟化技术漫谈

随着近年多核系统.集群.网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了 IT 成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中.本文针对 x86 平台,首先给出虚拟化技术的基本概念和分类,然后阐述纯软件虚拟化的实现原理和面临的挑战,最后详细介绍 Intel-VT 硬件辅助虚拟化技术. 一.虚拟化技术简介 什么是虚拟化 虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 S

虚拟化入门

一.虚拟化技术入门 虚拟化:计算机:CPU,memory,IO(disk networkk),...emulation:纯软件方式实现 //模拟virtulation:把硬件功能分割成多份//拥有一个VMM进行管理分配完全虚拟化:full-virt半虚拟化:para-virt 完全虚拟化: [v1.user][v1.ker ] =========================== |内核| 用户空间| | | [硬件] V1发起的特权指令,不能直接操作硬件//否则会影响其他虚拟机或者物理机 完

Oracle Memory Management and HugePage (连载一)

作者:沃趣科技高级数据库工程师  魏兴华 概述 大家好,我是魏兴华,你们可以叫我肉丝,我的英文名是Rose魏.在这篇文章中,我给大家介绍一些Oracle内存管理和大页的知识.Oracle发展这么多年,提供了多种的内存管理方式,从最早SGA.PGA手工管理,到9I版本出现的PGA的自动管理,到10G版本出现的SGA自动管理(ASMM),再到11G版本出现的memory自动管理(AMM),Oracle基本是在朝着智能化.傻瓜化.自动化的方向稳步前进着,对于初学Oracle的DBA来说,看到这些不同的