Upload
senona
View
84
Download
0
Embed Size (px)
DESCRIPTION
第 4 章 现代微机的存储系统. 4.1 现代微机的存储结构. CPU 内 的寄存器. L1 数据 Cache. L1 代码 Cache. L2 Cache. L3 Cache. 内部存储器(内存). 外存 Cache. 外部存储器(外存). 4.2 现代微机的系统地址映射. 1MB. 0FFFFFH. 系统 BIOS (上端) 64KB. 0F0000H. 960KB. 0EFFFFH. 扩展系统 BIOS (低端) 64KB ( 16KB 4 ). 0E0000H. 896KB. 0DFFFFH. 扩充区 - PowerPoint PPT Presentation
Citation preview
1
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
第 4 章 现代微机的存储系统
2
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.1 现代微机的存储结构
CPU 内的寄存器
L1 数据 Cach
e
L1 代码 Cach
eL2 Cache
L3 Cache
内部存储器(内存)
外部存储器(外存)
外存 Cache
3
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.2 现代微机的系统地址映射 4.2.1 4.2.1 传统地址范围(实地址模式)传统地址范围(实地址模式)
960KB
640KB
768KB
896KB
0F0000H0EFFFFH
0E0000H0DFFFFH
0C0000H
0A0000H
0BFFFFH
09FFFFH
0FFFFFH 1MB
00000H
DOS 区
传统视频区( SMM 存储器)
128KB
扩充区128KB ( 16 KB8 )
扩展系统 BIOS (低端)64KB ( 16KB4 )
系统 BIOS (上端)64KB
4
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.2.2 主存储地址范围( 1MB-TOLUD )
兼容 DOS 存储(传统地址范围)0MB
10000H
主存储区1MB
0H
15MB0F0000H
TOLUD
100000H ISA Hole (可选)
主存储区
TSEG ( 1MB/2MB/8MB 可选)IGD ( 1~64MB 可选)
PCI 存储范围
APIC
Flash Memory最 大 4GB
0FFFFFFFFH
5
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.2.3 PCI 存储地址范围( TOLUD-4GB )
6
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.3 IA-32 结构保护模式下的存储管理 4.3.1 保护模式下的段式存储管理 1. 段式管理的地址变换
段寄存器的 15~2 位 偏移量45(77) 32(64) 31(63) 0
段描述符
段表32(64) 位线性地址 物理
地址
逻辑地址
段基址
7
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
2. 段描述符
D7 D0段界限 7~0
段界限 15~8基址 7~0
基址 15~8
基址 23~16
基址 31~24
TYPES
AVL
DPLP
G D/B L 段界限 19~16
0
1
2
3
4
5
6
7
8
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
D7 D0
AVLG D/B L 段界限 19~16
用户的操作系统可用位
D/B 位
代码段 (D 位 )D=1 使用 32 位操作系统
和 32 位寻址方式D=0 使用 16 位操作系
统和 16 位寻址方式
数据段 (B 位 )
B=1 使用 ESP 寄存器,上限为 FFFFFFFFH
B=0 使用 SP 寄存器,上限为 FFFFH
G=0 段长以 1 字节为单位G=1 段长以 4K 字节为单位
D/B 位粒度位
1 =在 64 位模式, 0 =在兼容或 IA-32 模式
9
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
AWR
EDC
E=0E=1
S=1DPLP
D7 D0
存在位 特权位
S=1 是非系统段S=0 是系统描述符
代码段标志
数据段标志
兼容位可读位
访问位
扩展方向位 可写位
非系统段中的第 5 字节
可执行位
10
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
系统描述符中的 TYPE
11
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
RPLTi
选择符(段寄存器)15 2 1 0
索引
Ti=1Ti=0
……
01
……
01
LDT
LDT
LDT
GDT
基址界限
选择符
基址界限
LDTR GDTR
22
12
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
#include "stdafx.h"#include <stdio.h>#include <wtypes.h> // wtypes.h// wtypes.h 定义了定义了 WORDLONG, WORDLONG,
//DWORD,WORD//DWORD,WORD 等数据类型等数据类型DWORDLONG gdtr,savegdt ;//// 下面是下面是 GDTGDT 中将创建的数据段描述符表中将创建的数据段描述符表 ,, 基地址基地址 0X00000F000X00000F00,,//// 段界限为段界限为 0XFFFF,0XFFFF, 优先级为优先级为 33 的在内存中的可写数据段的在内存中的可写数据段WORD descriptor[4]= {0xFFFF, 0X0F00, 0XF200,
0X0040} ; int result[10] ;int main ( int argc, char* argv[] ){_asm { push ebp
sgdt gdtr // // 将将 GDTRGDTR 寄存器的内容读取到寄存器的内容读取到////gdtrgdtr 开始的开始的 66 个字节中,其中个字节中,其中// // 前两个字节给出前两个字节给出 GDTGDT 的界限值的界限值 ,,//// 高高 44 个字节给出个字节给出 GDTGDT 的基地址的基地址
13
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
mov ebp,dword ptr [gdtr+2] // // 将将 gdtgdt 的基的基 // // 地址读到地址读到 EBPEBP 中中
add ebp,70h // // 我们选择我们选择 70H70H 偏移下的段描述偏移下的段描述// // 符(符( GDTGDT 中第中第 1414 个描述符)个描述符)
lea edi,savegdtmov esi,ebpmovsd /// / 以上以上 44 条指令保存原来在条指令保存原来在 70H70H 偏移上偏移上movsd // // 的描述符的描述符mov edi,ebplea esi,descriptor ;movsd // // 把我们的数据段描述符装入把我们的数据段描述符装入 70H70Hmovsd // // 偏移上偏移上push esmov ax,0073h /// / 选择字为描述符偏移选择字为描述符偏移 70H70H 拼接上拼接上
// // 低低 33 位控制位元位控制位元 ,, 其中其中 TiTi 为为 0,0, 表表// // 示访问示访问 GDT,RPLGDT,RPL 为为 11,11, 为为 33 级优级优// // 先级先级 ,, 所以就为所以就为 73H73H
14
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
mov es,ax // ES// ES 装入选择字装入选择字 73H73Hlea edi,result /// / 将存放输出结果的变量将存放输出结果的变量
//// 的地址放在的地址放在 EDIEDI 中中mov eax,1mov ebx,1
}_asm{ mov cx,10a1 : mov es : [eax],eax
add eax,4loop a1 // // 上面上面 44 条指令将向物理地址条指令将向物理地址
// // 0X00000F000X00000F00 处写处写 1010 个双字个双字}_asm{ mov cx,10a2 : mov eax,es : [ebx]
mov [edi],eax
15
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
add ebx,4add edi,4loop a2 // // 以上从物理地址以上从物理地址 0X00000F000X00000F00
// // 处依次读出处依次读出 1010 个数据存放在个数据存放在// result// result 数组中数组中
}_asm{ pop es
pop ebp}
printf ( "result=" );for ( int i=0 ; i<10 ; i++ )printf ( "%d,",result[i] ); // // 输出结果输出结果return 0 ;
}
16
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.3.2 保护模式下的虚拟页式存储管理 主存
~~
~~
页框
页面
程序 1
程序 2
程序 3
17
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
PGEPCE
831 7 6 5 4 3 2 1 0
MCEPAE PSE DE TSD VMEPVI保留,缺省为全 0 CR4
PAE PSE 物理地址位数 页面大小0 0 32位 4KB
0 1 32位 4KB/4MB
1 0 36位 4KB
1 1 36位 4KB/2MB
18
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
3232 位物理地址下的位物理地址下的 4KB4KB 分页方式分页方式
P=P= 出现位,出现位, US=US= 用户用户 // 监督位,监督位, PCDPCD 是页是页 CacheCache 禁止,禁止, D=Cache“D=Cache“ 脏”脏”位,位, RW=RW= 读读 // 写位,写位, PWT=PWT= 页写贯穿位,页写贯穿位, A=A= 访问位,访问位, AVL=AVL= 用户的操用户的操作系统可用位。而第作系统可用位。而第 77 位(位( PSPS )在)在 4KB4KB 分页中为分页中为 0 0
页目录
32 位线性地址
页目录项号 页面号 偏移
CR3
32 位物理地址
31 22 21 12 11 0
页表
低 12位
高 20位
31 12 11 9 8 7 6 5 4 3 2 1 0
PWTPCD页表基地址 31~12 PRWUSGAVL AD0页目录项
PWTPCD页框基地址 31~12 PRWUSG PAT
AVL AD页表项
31 12 11 9 8 7 6 5 4 3 2 1 0
19
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
3232 位地址模式下的位地址模式下的 4MB4MB 分页方式分页方式
32 位线性地址
页目录项号 偏移
CR
3
32 位物理地址
31 22 21 0
页目录
低 22位
高 10位
31 22 13 12 11 9 8 7 6 5 4 3 2 1 0
PWTPCD页框基地址 31~22
PRWUSAD1页目录项
PAT AVL G
20
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
31 5 4 3 2 1 0
PWTPCD32 字节对齐的 PDPT 基地址
CR3 寄存器63 36 35 12 11 9 8 5 4 3 2 1 0
PWTPCD PAVLPDPT 项 4KB 对齐的页目录基地址(高 24 位)
63 36 35 12 11 9 8 7 6 5 4 3 2 1 0
PWTPCD4KB 对齐的页表基地址 PRWUSAVL A0页目录项
PWTPCD4KB 对齐的页框基地址 PRWUSAVL AD页表项63 36 35 12 11 9 8 7 6 5 4 3 2 1 0
0G
3636 位地址下的位地址下的 4KB4KB 分页方式地址转换 分页方式地址转换
32 位线性地址页目录项号 页面号 偏移
CR3
36 位物理地址
31 30 29 21 20 12 11 0
页目录 页表
PDPT 项号
页目录指针表4×64 位 512×64 位 512×64 位
低 12位
高 24位
21
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
3636 位地址下的位地址下的 2MB2MB 分页方式地址转换 分页方式地址转换
32 位线性地址页目录项号 偏移
CR3
36 位物理地址
31 30 29 21 20 0
页目录
PDPT 项号
页目录指针表4×64 位 512×64 位
页目录项 PWTPCD2MB 对齐的页框基地
址PRWUSAVL AD
63 36 35 21 20 13 12 11 9 8 7 6 5 4 3 2 1 0
1G
低 21 位
高 15 位
PAT
22
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
IA-32eIA-32e 模式下的模式下的 4KB4KB 内存分页结构项的格式内存分页结构项的格式
PWTPCDPML4 基地址 PRWUSA
63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0
AVL
PML4 表
EXB AVL
PDPT 表
PWTPCD页目录基地址 PRWUSA
63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0
AVLEXB AVL
页目录项( 4KByte 页表)
PWTPCD页目录基地址 PRWUSA
63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0
AVLEXB AVL 0 0 0
页表( 4KByte 页表)
PWTPCD页目录基地址 PRWUSA
63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0
AVLEXB AVL G PAT D
23
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
IA-32eIA-32e 模式下模式下 4KB4KB 分页方式地址转换 分页方式地址转换
24
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
IA-32eIA-32e 模式下的模式下的 2MB2MB 内存分页结构项的格式内存分页结构项的格式
PWTPCDPML4 基地址 PRWUSA
63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0
AVL
PML4 表
EXB AVL
PDPT 表
PWTPCD页目录基地址 PRWUSA
63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0
AVLEXB AVL
页目录项( 4MB 页表)
PWTPCD页目录基地址 PRWUSA
63 62 51 39 13 12 11 9 8 7 6 5 4 3 2 1 0
AVLEXB AVL G 1 DAVLPAT
25
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
IA-32eIA-32e 模式下模式下 2MB2MB 分页方式地址转换 分页方式地址转换
26
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.4 高速缓冲存储器 Cache 4.1.1 Cache 的工作原理与地址映射 1. Cache 的工作原理
27
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
2. Cache 的地址映像 1) 1) 直接映像直接映像主存中的每一页都映像到高速缓存中的一个固定页,而高速
缓存中的每一页却对应着主存中的若干页。这是最简单的一种映像技术,易于实现,地址变换速度快,
但是不够灵活, Cache 的页冲突概率高,空间利用率低。 2) 2) 全相联映像全相联映像 全相联映像技术允许主存中每一个页面映像到 Cache 的任何一个页面位置上,也允许采用某种替换算法从已占满的 Cache中替换出任何一个旧页面。这种方式冲突概率低,可达到很高的 Cache 命中率,但实现起来比较困难。
33 )组相联映像)组相联映像将主存空间按 Cache 大小等分成组,再将 Cache 空间和主
存空间中的每一组都等分成大小相同的块,使得主存中一个组内的页数与 Cache 中的分块数相同。各组之间是直接映像,而组内各块之间则是全相联映像。
28
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
3. Cache 的读写操作
1)1) 存储器读存储器读 访问页面在 Cache 中——直接读 Cache ,不读主存 访问页面不在 Cache 中—— · 贯穿读出式:页面从主存读到 Cache ,再到 C
PU · 旁路读出式:页面直接从主存读到 CPU ,而不 经过 Cache2)2) 存储器写存储器写 · 写回法:写 Cache 页时不写主存,到下次页面修改时再写主存。
· 写贯穿法:页面在写到 Cache时同时写到主存,以保持主存与 Cache 的相关页的内容一致
29
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.4.2 IA-32 的 Cache 结构 物理存储器
系统总线( 外部 )
总线接口单元
L2 Cache
L3 Cache*
数据 Cache( L1 )
指令译码器 跟踪 Cache**/L1 指令 Cache
Instruction TLBs
Data TLBs
存储缓冲
* Intel Xeon 处理器才有** 跟踪 Cache 只有 Pentium 4 才有
30
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
• Core Solo , Core Duo , Core 2 , Pentium 4中 L1 和 L2Cache 行和 Intel Xeon 处理器的 L1 、 L2 和 L3 Cache 行都是 64 字节。
• 一个 Cache 行可以使用 8 个突发传送事件来填满。 Cache 不支持部分 Cache 行的填充。
• TLBs 存储最近用过的页目录和页表项。他们通过降低访问主存中页表的次数来加快页表的访问。
• 处理器的 Cache 对软件来说基本上是透明的。 • 对 Cache 行为的了解有助于优化软件的性能。
31
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.4.3 IA-32 的 Caching 类型• 强不可缓存(强不可缓存( Strong UncacheableStrong Uncacheable ,, UCUC )型:)型:主存
单元的读写不使用 Cache 。所有读和写都只针对主存,并且以程序的次序执行而不会重排序。
• 不可缓存(不可缓存( UncacheableUncacheable ,, UC-UC- )型:)型:和 UC 存储器具有一些相同的特征,不过这种存储器类型可以通过对 WC 类型存储器的 MTRRs编程来撤消。
• 写组合(写组合( Write CombiningWrite Combining ,, WCWC )型:)型:和 UC- 存储器一样,主存单元的读写不使用 Cache ,并且处理器总线的一致性协议也没有被强制使用。
32
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
• 写贯穿(写贯穿( Write-throughWrite-through ,, WTWT )型:)型:对主存的读或写操作都使用 Cache 。如果 Cache 命中,则读操作将会直接读 Cache 行,如果没有命中则会引起一个 Cache填充事件。所有的写在可能的情况下都被写入到 Cache 行,并且同时写到主存中。
• 写回(写回( Write-backWrite-back ,, WBWB )型:)型:对主存的写和读操作都使用 Cache 。如果 Cache 命中,则读操作将会直接读 Cache 行,如果没有命中则会引起一个 Cache填充事件。写操作被写到 Cache 中。被修改的 Cache 行,在稍后才被写到主存中。
• 写保护(写保护( Write-protectedWrite-protected ,, WPWP )型:)型:读操作在可能的情况下是从 Cache 行中读数据, 读操作没有命中Cache时会引起 Cache填充。写操作被传送到内存中,而且导致在系统总线上的所有处理器中的相应 Cache 行变为无效。
33
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
CacheCache 不同类型的特点 不同类型的特点
34
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
4.4.4 IA-32 的 Cache 一致性协议
MESI ( Modified、 Exclusive、 Shared、 Invalid ) Cache 一致性协议是一种写 -无效监听协议。它跟踪存储器数据变化,保证了一个Cache 行数据更新以后,能够和所有与它的地址有关联的存储单元保持数据的一致性。
35
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
• 已修改(已修改( ModifiedModified ):):指出 Cache 行数据已被更新,但该更新不会送上系统总线,因此此时的 Cache 行内容与主存及其它 Cache 的不一样。当该 Cache 控制器之后监听到该行再次命中,必须将修改行的数据写回存储器,以保持数据一直;
• 独占(独占( ExclusiveExclusive ):):指出这个 Cache 行的数据与主存相联地址的内容一样,并且其它 Cache 中不包括此Cache 行的内容;
• 共享(共享( SharedShared ):):指出此 Cache 行的内容存在于几个 Cache当中,在每个相关的 Cache 行和存储器行里都存放了这行内容的副本;
• 无效(无效( InvalidInvalid ):):复位以后的无效状态,指示这一Cache 行无效。
36
现代微机原理与接口技术现代微机原理与接口技术 (( 第第 22版版 ))
http://www.njyangqs.com/http://www.njyangqs.com/
IA-32 MESI Cache 行状态