第
This presentation is the property of its rightful owner.
Sponsored Links
1 / 36

第 4 章 现代微机的存储系统 PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on
  • Presentation posted in: General

第 4 章 现代微机的存储系统. 张明武 [email protected] 华南农业大学信息(软件)学院. 4.1 现代微机的存储结构. CPU 内 的寄存器. L1 数据 Cache. L1 代码 Cache. L2 Cache. L3 Cache. 内部存储器(内存). 外存 Cache. 外部存储器(外存). 4.2 现代微机的系统地址映射. 1MB. 0FFFFFH. 系统 BIOS (上端) 64KB. 0F0000H. 960KB. 0EFFFFH. 扩展系统 BIOS (低端)

Download Presentation

第 4 章 现代微机的存储系统

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4

第4章 现代微机的存储系统

张明武

[email protected]

华南农业大学信息(软件)学院


4

4.1 现代微机的存储结构

CPU内

的寄存器

L1 数据Cache

L1 代码Cache

L2 Cache

L3 Cache

内部存储器(内存)

外存Cache

外部存储器(外存)


4

4.2 现代微机的系统地址映射

1MB

0FFFFFH

系统BIOS(上端)

64KB

0F0000H

960KB

0EFFFFH

扩展系统BIOS(低端)

64KB(16KB4)

0E0000H

896KB

0DFFFFH

扩充区

128KB(16 KB8)

0C0000H

768KB

传统视频区

(SMM存储器)

128KB

0BFFFFH

0A0000H

640KB

09FFFFH

DOS区

00000H

4.2.1 传统地址范围(实地址模式)


4 2 2 1mb tolud

4.2.2 主存储地址范围(1MB-TOLUD)

最大4GB

0FFFFFFFFH

Flash Memory

APIC

PCI存储范围

TOLUD

IGD(1~64MB可选)

TSEG(1MB/2MB/8MB可选)

主存储区

100000H

ISA Hole(可选)

15MB

0F0000H

主存储区

1MB

10000H

兼容DOS存储(传统地址范围)

0H

0MB


4 2 3 pci tolud 4gb

4.2.3 PCI存储地址范围(TOLUD-4GB)


4 3 ia 32

4.3 IA-32结构保护模式下的存储管理

4.3.1 保护模式下的段式存储管理

1. 段式管理的地址变换

31(63) 0

45(77) 32(64)

逻辑地址

段寄存器的15~2位

偏移量

段基址

段描述符

段表

物理地址

32(64)位线性地址


4

D7 D0

段界限 7~0

0

段界限 15~8

1

基址 7~0

2

基址 15~8

3

基址 23~16

4

P

DPL

S

TYPE

5

G

D/B

段界限 19~16

L

AVL

6

7

基址 31~24

2. 段描述符


4

D7 D0

L

AVL

G

段界限 19~16

D/B

用户的操作系统可用位

1=在64位模式,0=在兼容或IA-32模式

D/B位

G=0 段长以1字节为单位

粒度位

G=1 段长以4K字节为单位

D=1 使用32位操作系统和32位寻址方式

代码段(D位)

D=0 使用16位操作系统和16位寻址方式

D/B位

B=1 使用ESP寄存器,上限为FFFFFFFFH

数据段(B位)

B=0 使用SP寄存器,上限为FFFFH


4

E=0

ED

W

DPL

S=1

P

A

E=1

C

R

非系统段中的第5字节

扩展方向位

数据段标志

可写位

可执行位

D7 D0

兼容位

存在位

访问位

特权位

代码段标志

可读位

S=1是非系统段

S=0是系统描述符


4

系统描述符中的TYPE


4

选择符(段寄存器)

15 2 1 0

索引

Ti

RPL

Ti=0

Ti=1

LDT

……

……

LDT

2

2

1

1

0

0

LDT

GDT

选择符

界限

界限

基址

基址

GDTR

LDTR


4

#include "stdafx.h"

#include <stdio.h>

#include <wtypes.h>// wtypes.h定义了WORDLONG,

//DWORD,WORD等数据类型

DWORDLONG gdtr,savegdt;

//下面是GDT中将创建的数据段描述符表,基地址0X00000F00,

//段界限为0XFFFF,优先级为3的在内存中的可写数据段

WORD descriptor[4]= {0xFFFF, 0X0F00, 0XF200,

0X0040};

int result[10];

int main(int argc, char* argv[])

{_asm

{pushebp

sgdtgdtr// 将GDTR寄存器的内容读取到

//gdtr开始的6个字节中,其中

// 前两个字节给出GDT的界限值,

//高4个字节给出GDT的基地址


4

movebp,dword ptr [gdtr+2] // 将gdt的基

// 地址读到EBP中

addebp,70h// 我们选择70H偏移下的段描述

// 符(GDT中第14个描述符)

leaedi,savegdt

movesi,ebp

movsd // 以上4条指令保存原来在70H偏移上

movsd// 的描述符

movedi,ebp

leaesi,descriptor;

movsd // 把我们的数据段描述符装入70H

movsd// 偏移上

pushes

movax,0073h// 选择字为描述符偏移70H拼接上

// 低3位控制位元,其中Ti为0,表

// 示访问GDT,RPL为11,为3级优

// 先级,所以就为73H


4

moves,ax// ES装入选择字73H

leaedi,result// 将存放输出结果的变量

//的地址放在EDI中

moveax,1

movebx,1

}

_asm

{movcx,10

a1:moves:[eax],eax

addeax,4

loopa1// 上面4条指令将向物理地址

// 0X00000F00处写10个双字

}

_asm

{movcx,10

a2:moveax,es:[ebx]

mov[edi],eax


4

addebx,4

addedi,4

loopa2// 以上从物理地址0X00000F00

// 处依次读出10个数据存放在

// result数组中

}

_asm

{popes

popebp

}

printf("result=");

for(int i=0;i<10;i++)

printf("%d,",result[i]);// 输出结果

return 0;

}


4

~

~

~

~

4.3.2 保护模式下的虚拟页式存储管理

主存

程序1

页面

程序2

页框

程序3


4

31 7 6 5 4 3 2 1 0

8

TSD

DE

PVI

CR4

MCE

保留,缺省为全0

PAE

PSE

PGE

VME

PCE


4

31 22 21 12 11 0

偏移

页目录项号

32位线性地址

页面号

低12位

CR3

32位物理地址

高20位

页表

页目录

31 12 11 9 8 7 6 5 4 3 2 1 0

页目录项

0

A

US

P

PCD

PWT

D

页表基地址31~12

AVL

RW

G

31 12 11 9 8 7 6 5 4 3 2 1 0

页表项

A

US

P

D

PCD

PWT

RW

AVL

页框基地址31~12

G PAT

32位物理地址下的4KB分页方式

P=出现位,US=用户/监督位,PCD是页Cache禁止,D=Cache“脏”位,RW=读/写位,PWT=页写贯穿位,A=访问位,AVL=用户的操作系统可用位。而第7位(PS)在4KB分页中为0


4

31 22 21 0

32位线性地址

偏移

页目录项号

CR3

低22位

32位物理地址

高10位

页目录

31 22 13 12 11 9 8 7 6 5 4 3 2 1 0

页目录项

PAT

A

PCD

US

P

AVL

1

D

PWT

RW

页框基地址31~22

G

32位地址模式下的4MB分页方式


4

31 5 4 3 2 1 0

PWT

32字节对齐的PDPT基地址

PCD

CR3寄存器

63 36 35 12 11 9 8 5 4 3 2 1 0

PDPT项

PWT

AVL

P

PCD

4KB对齐的页目录基地址(高24位)

31 30 29 21 20 12 11 0

PDPT项号

页目录项号

偏移

页面号

32位线性地址

CR3

低12位

36位物理地址

高24位

页目录指针表

页表

页目录

4×64位

512×64位

512×64位

63 36 35 12 11 9 8 7 6 5 4 3 2 1 0

0

A

PCD

US

P

PWT

RW

AVL

页目录项

4KB对齐的页表基地址

63 36 35 12 11 9 8 7 6 5 4 3 2 1 0

G

0

A

PCD

US

P

D

PWT

RW

AVL

页表项

4KB对齐的页框基地址

36位地址下的4KB分页方式地址转换


4

31 30 29 21 20 0

PDPT项号

页目录项号

偏移

32位线性地址

低21位

CR3

36位物理地址

高15位

页目录指针表

页目录

4×64位

512×64位

63 36 35 21 20 13 12 11 9 8 7 6 5 4 3 2 1 0

页目录项

G

1

A

PCD

US

P

PAT

D

PWT

RW

AVL

2MB对齐的页框基地址

36位地址下的2MB分页方式地址转换


4

PML4表

63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0

RW

EXB

A

PCD

P

AVL

PWT

US

AVL

PML4基地址

PDPT表

63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0

A

PCD

P

AVL

PWT

RW

EXB

US

AVL

页目录基地址

页目录项(4KByte页表)

63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0

US

0 0 0

A

PCD

P

AVL

PWT

RW

EXB

AVL

页目录基地址

页表(4KByte页表)

63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0

G PAT D

A

PCD

US

P

AVL

PWT

RW

EXB

AVL

页目录基地址

IA-32e模式下的4KB内存分页结构项的格式


4

IA-32e模式下4KB分页方式地址转换


4

IA-32e模式下的2MB内存分页结构项的格式

PML4表

63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0

RW

EXB

A

PCD

P

AVL

PWT

US

AVL

PML4基地址

PDPT表

63 62 51 39 12 11 9 8 7 6 5 4 3 2 1 0

A

PCD

P

AVL

PWT

RW

EXB

US

AVL

页目录基地址

页目录项(4MB页表)

63 62 51 39 13 12 11 9 8 7 6 5 4 3 2 1 0

US

G 1 D

A

PCD

P

AVL

PWT

RW

EXB

PAT

AVL

AVL

页目录基地址


4

IA-32e模式下2MB分页方式地址转换


4 4 cache

4.4 高速缓冲存储器Cache

4.1.1 Cache的工作原理与地址映射

1. Cache的工作原理


4

2. Cache的地址映像

1) 直接映像

主存中的每一页都映像到高速缓存中的一个固定页,而高速缓存中的每一页却对应着主存中的若干页。

这是最简单的一种映像技术,易于实现,地址变换速度快,但是不够灵活,Cache的页冲突概率高,空间利用率低。

2) 全相联映像

全相联映像技术允许主存中每一个页面映像到Cache的任何一个页面位置上,也允许采用某种替换算法从已占满的Cache中替换出任何一个旧页面。这种方式冲突概率低,可达到很高的Cache命中率,但实现起来比较困难。

3)组相联映像

将主存空间按Cache大小等分成组,再将Cache空间和主存空间中的每一组都等分成大小相同的块,使得主存中一个组内的页数与Cache中的分块数相同。各组之间是直接映像,而组内各块之间则是全相联映像。


4

3. Cache的读写操作

  • 存储器读

  • 访问页面在Cache中——直接读Cache,不读主存

  • 访问页面不在Cache中——

  • · 贯穿读出式:页面从主存读到Cache,再到CPU

  • · 旁路读出式:页面直接从主存读到CPU,而不

  • 经过Cache

  • 存储器写

  • · 写回法:写Cache页时不写主存,到下次页面修改时再写主存。

  • · 写贯穿法:页面在写到Cache时同时写到主存,以保持主存与Cache的相关页的内容一致


4 4 2 ia 32 cache

4.4.2 IA-32的Cache结构

物理存储器

L3 Cache*

系统总线

(外部)

L2 Cache

数据Cache(L1)

总线接口单元

Instruction TLBs

Data TLBs

存储缓冲

指令译码器 跟踪Cache**/L1指令Cache

* Intel Xeon 处理器才有

** 跟踪Cache只有Pentium 4才有


4

  • Core Solo,Core Duo,Core 2,Pentium 4中L1和L2Cache行和Intel Xeon 处理器的L1 、L2和L3 Cache行都是64字节。

  • 一个Cache行可以使用8个突发传送事件来填满。Cache不支持部分Cache行的填充。

  • TLBs存储最近用过的页目录和页表项。他们通过降低访问主存中页表的次数来加快页表的访问。

  • 处理器的Cache对软件来说基本上是透明的。

  • 对Cache行为的了解有助于优化软件的性能。


4 4 3 ia 32 caching

4.4.3 IA-32的Caching类型

  • 强不可缓存(Strong Uncacheable,UC)型:主存单元的读写不使用Cache。所有读和写都只针对主存,并且以程序的次序执行而不会重排序。

  • 不可缓存(Uncacheable,UC-)型:和UC存储器具有一些相同的特征,不过这种存储器类型可以通过对WC类型存储器的MTRRs编程来撤消。

  • 写组合(Write Combining,WC)型:和UC-存储器一样,主存单元的读写不使用Cache,并且处理器总线的一致性协议也没有被强制使用。


4

  • 写贯穿(Write-through,WT)型:对主存的读或写操作都使用Cache。如果Cache命中,则读操作将会直接读Cache行,如果没有命中则会引起一个Cache填充事件。所有的写在可能的情况下都被写入到Cache行,并且同时写到主存中。

  • 写回(Write-back,WB)型:对主存的写和读操作都使用Cache。如果Cache命中,则读操作将会直接读Cache行,如果没有命中则会引起一个Cache填充事件。写操作被写到Cache中。被修改的Cache行,在稍后才被写到主存中。

  • 写保护(Write-protected,WP)型:读操作在可能的情况下是从Cache行中读数据, 读操作没有命中Cache时会引起Cache填充。写操作被传送到内存中,而且导致在系统总线上的所有处理器中的相应Cache行变为无效。


4

Cache不同类型的特点


4 4 4 ia 32 cache

4.4.4 IA-32的Cache一致性协议

MESI(Modified、Exclusive、Shared、Invalid)Cache一致性协议是一种写-无效监听协议。它跟踪存储器数据变化,保证了一个Cache行数据更新以后,能够和所有与它的地址有关联的存储单元保持数据的一致性。


4

  • 已修改(Modified):指出Cache行数据已被更新,但该更新不会送上系统总线,因此此时的Cache行内容与主存及其它Cache的不一样。当该Cache控制器之后监听到该行再次命中,必须将修改行的数据写回存储器,以保持数据一直;

  • 独占(Exclusive):指出这个Cache行的数据与主存相联地址的内容一样,并且其它Cache中不包括此Cache行的内容;

  • 共享(Shared):指出此Cache行的内容存在于几个Cache当中,在每个相关的Cache行和存储器行里都存放了这行内容的副本;

  • 无效(Invalid):复位以后的无效状态,指示这一Cache行无效。


4

IA-32 MESI Cache行状态


  • Login