第 8 章 现代微型计算机
DESCRIPTION
第 8 章 现代微型计算机. 8.1 80x86 系列微处理器 8.2 微型计算机体系结构 8.3 存储管理技术 8. 4 多任务管理与 I/O 管理 8. 5 现代微型计算机中断系统. 8.1 80x86 系列微处理器. 8.1.1 16 位80 X86 微处理器. 1. 8088微处理器 Intel 公司在推出8086之后, 推出了介于16位与8位之间的准16位微处理器8088。 8088与8086之间的区别主要在于8088对外只有8根数据线引脚,访问16位的操作数需要二个总线周期。 8088的这一特点使它能够十分方便地与8位接口芯片相连接。 - PowerPoint PPT PresentationTRANSCRIPT
第 8 章 现代微型计算机
8.1 80x86 系列微处理器
8.2 微型计算机体系结构
8.3 存储管理技术
8.4 多任务管理与 I/O 管理
8.5 现代微型计算机中断系统
8.1 80x86 系列微处理器
1 . 8088 微处理器• Intel 公司在推出 8086 之后, 推出了介于 16 位与 8
位之间的准 16 位微处理器 8088 。• 8088 与 8086 之间的区别主要在于 8088 对外只有 8 根
数据线引脚,访问 16 位的操作数需要二个总线周期。• 8088 的这一特点使它能够十分方便地与 8 位接口芯片
相连接。• 1980 年, IBM 公司使用 8088 成功地开发了 16 位微
型计算机—— IBM-PC 。
8.1.1 16 位 80X86 微处理器
• Intel 公司把大型计算机的技术融合到微处理器中 , 首先研制的 80186 在技术上并不十分成熟,没有获得广泛的应用。
• 1982 年 Intel 推出了增强型 16 微处理器 80286 ,集成 度 达 13 万 管 / 片 , 时 钟 频 率 提 高 到5MHz~25MHz ,它的 16 条数据线和 24 条地址线相互独立,不再分时使用,可以寻址 16M 的地址空间。
• 80286CPU 增加了运行多任务所需要的任务切换、存储管理和多种保护功能。
2 . 80186 和 80286 微处理器
80286CPU 基本工作方式:• 实地址方式:
和 8086 一样,使用 20 根地址线寻址 1M 的内存空间, DOS 应用程序占用全部系统资源。
• 保护方式:80286CPU 具有虚拟内存管理和多任务处理功能,
通过硬件控制可以在多任务之间进行快速切换。• 80286CPU 的内部组成:
总线接口部件 BIU :地址单元 AU 、指令单元 IU 、总线单元 BU 。
执行部件 EU:
• IBM 公司以 80286 为 CPU 生产了著名的 IBM-PC/AT微型计算机,它的许多技术被沿用至今。
图 8-1
Intel80286CPU 结构
物理地址加法器
地址锁存器和驱动器
协处理器接口
预取器
总线控制
数据收发器
6字节预取队列
总线单元(BU)
段基地址
段容量段限检查
ALU
控制器
寄存器
地址单元(AU)
3条已被译码的指令队列
指令译码器
指令单元(IU)
执行单元(EU)
偏移量加法器
NMI
INTR
ERRORBUSY
A23~A0BHE M/IO
PEACKPEREQ
READY HOLDS1,S0,COD/INTA
LOCK HLDAD15~D0
RESETCLKVssVccCAP
1 . 80386 微处理器• 1985 年, Intel 公司推出了第四代微处理器, 32 位的
微处理器 80386 。• 片内集成 27.5 万个晶体管,时钟频率为 16MHz ~ 33
MHz 。具有 32 位数据线和 32 位地址线, 32 位通用寄存器。
• 80386 内部由中央处理器 CPU 、存储器管理部件MMU 、总线接口部件 BIU 组成。
• 80386 有 3 种工作模式:实地址模式、虚地址保护模式和虚拟 8086模式。
8.1.2 32 位 80X86 微处理器
图 8-2
移位地址器
乘/除
寄存器集
ALU
译码和顺序
控制ROM
控制
指令译码
两个已译码的指令队列
指令预译码
预取限制检测
16字节代码队列
指令预取
地址驱动
流水线/总线容量控制
多路发送控制器
三输入地址
描述符寄存器
界限和特性PLA
段单元
保护检测单元
请求优先权
总线控制地 址
页高速缓冲器
控制和特性PLA
页单元
有效地址总线
32
3232
状态标志
ALU控制
32
内部控制总线
32
物理地址总线
控制
32
32
线性地址总线
ALU总线
HOLD,INTR,NMIERROR,BUSYRESET,HLDA
BE0#~BE3#A2~A31
M/IO#,D/C#,W/R#LOCK,ADS#,NA#BSIC#,READY#
D0~D31
偏移量总线
Intel80386CPU 结构
2 . 80486 微处理器
• 1989 年, Intel 公司推出了集成 120 万个晶体管的 32位微处理器 80486 。
• 80486 中集成了: 一个 80386 体系结构的主处理器; 一个与 80387 兼容的数字协处理器; 一个 8KB 的高速缓冲存储器( Cache )。
• 80486 首次采用了时钟倍频技术(在 80486DX 中使用),使内部部件可以以输入时钟的倍频运行。
• 80486 还支持外部的二级 Cache ,支持多处理器系统。
1. Pentium 微处理器• 1993 年, Intel 公司推出了新一代的 32 位微处理器
Pentium (奔腾,以 P5 代称),内部集成了 320 万个晶体管,具有 64 条数据线和 32 条地址线。
• Pentium 共有 3 个执行部件:两个整数执行部件 U 、 V 和一个浮点执行部件。
• 每个整数部件由五级流水线组成:• 浮点流水线由 8 级组成:• 通过上述流水线,微处理器可以在一个时钟周期内同时执
行两条整数指令,或者一条浮点指令,这种结构被称为“超标量结构”。
8.1.3 Pentium 系列微处理器
• Pentium 处理器内部 16KB 的一级 Cache 分为独立的8KB 指令 Cache 和 8KB 数据 Cache ,使取指令和取数据可以同时进行。
• Pentium 采用了分支预测技术(也称为转移预测技术),处理器效率得到提高。
• 除了实地址模式、虚地址保护模式和虚拟 8086 模式以外,又增加了一个系统管理模式。
• 1996 年, Intel 公司推出了改进型 32 位微处理器Pentium MMX (多能奔腾),它增加了 57 条 MMX(多媒体扩展指令集)指令,采用了 SIMD (单指令流多数据流)技术,提高了对多媒体数据的处理能力。
• 同一时期推出的第五代微处理器还有 IBM , Apple 和Motorola 三家联盟的 PowerPC (这是一款 RISC 微处理器)以及 AMD 公司的 K5 和 Cyrix 公司的 M1 。
2 .第六代微处理器• 1996 年 Intel 公司推出第六代微处理器 Pentium Pro
(高能奔腾)。 片内集成了 550 万个晶体管 具有 64 位数据线和 36 位地址线,物理地址空间
64GB ( 236 ),虚拟存储空间 64TB 。• 1997 年 5 月 Intel 公司发布了 PentiumII (奔腾 2 代) ,
采用 P6 核心结构,属于 32 位微处理器。 PentiumII 集成 750 万个晶体管 ; 加强了 MMX 技术,能同时处理两条 MMX 指令 ; L1 Cache 增加到 32KB ,并配备了 512KB 的 L2 Cache ,在
CPU 一半的频率下工作 ; PentiumII 采用了双独立总线结构,前端总线 FSB负责主存
储器的访问,后端总线与 L2 Cache 连接 ; 采用动态执行和寄存器重命名等 RISC 技术来执行 x86 指令。
• 动态执行技术主要包括: 多路分支预测:对程序的流向进行分析,以便程序的几
个分支可以同时在处理器内部执行。 数据流分析:对译码后的指令进行数据相关性和资源可
用性分析,判断该指令能否与其他指令同时执行。 推测执行:将多个程序流向的指令序列优化后送往处理
器的执行部件执行,充分发挥各部件的效能。多个分支的运行结果作为“预测结果”保留,将最终确定为“预测正确”的分支预测结果作为最终结果加以保存。
• 为了减少不同分支指令争用同一个寄存器的情况, PentiumII 增设了 40 个可以“重新命名”的“内部寄存器”,在指令流运行结束后写回“通用寄存器”,从而解决了多分支运行时争用寄存器的问题。
• 1999 年 2月, Intel 公司推出 Pentium III 微处理器。 集成了 950 万到 2800 万个晶体管 ; 它的前端总线频率( FSB )提高到 133MHz; 256KB 的 L2Cache 集成到芯片内,和 CPU 以相同的频率工
作 ; 与运算部件的数据通路从 64 位扩展到 256 位 ; 增加了新的 70 条 SSE 指令,使得多媒体信息的处理能力得到
进一步提高 ; PentiumIII 微处理器内置了一个引起争议的产品序列号
( PSN ),能惟一标识一个微处理器 ;
• 为了适应不同需求, Intel 公司还推出了面向低档微机的 Celeron (赛扬型)、面向服务器和工作站的Xeron (至强型)和面向可移动领域的移动型PentiumII 、 PentiumIII 。
• 类似的微处理器有 AMD 公司的 Athon ( K7 )。
图 8-3
L2 Cache
总线接口单元BIU L1数据Cache 16KB
主存
前端总线
L1指令Cache(16KB)
指令预取单元IFU
分支目标缓冲器BTB
译码器0
x86指令译码器译码器1
译码器2
寄存器别名表
指令重排缓冲器
微指令序列器
保
留
站
MMX ALUMMX乘法器复杂整数单元复杂浮点单元简单浮点单元
简单整数单元MMX ALUMMX 移位器
转移执行单元
加载地址单元
存储地址单元
存储数据单元
端口4
端口3
端口2
端口1
端口0
存储器排序缓冲器
后端总线
结
果
总
线
Pentium III 微处理器内部结构
3 .现代微处理器
• 1999 年, AMD 公司首先提出了 X86 系列微处理器的 64
位扩展架构 AMD64 ,并在随后应用到它的 Opteron及Athlon 64 微处理器之中。
• 此后 Intel 公司也提出了 IA-32e( Intel Achicture-32
Extend, Intel 32 位体系结构扩展),后来又改名为EM64T( Intel Extended Memory 64 Technology, Intel
64 位内存扩展技术),出现在 Prescott 核心的 Pentium 4
处理器上。
• 原 32位 x86 处理器的 32 位寄存器被扩展为 64 位,命名为RAX , RBX ……, ,增加了 8 个 64bit 的通用寄存器R8~R15 ,一个 64bit 的指令指针 RIP 。整数部件扩展为 6
4 位,可以进行 64 位的整数运算。• EM64T 的运行模式分为“传统的 IA-32 模式”和“ IA-32e
扩展模式”两大类。在传统的 IA-32 模式下, 64 位架构的处理器仍然像以前那样,工作在“保护模式”,“实地址模式”,“虚拟 8086 模式”下。在 IA-32e 扩展模式下,它可以工作在“ 32 位兼容模式”下,以“ 64 位处理器”的“身份”兼容运行 32 位处理器的程序,或者工作在真正的“ 64 位模式”下,运行 64 位程序。
• 为了进一步提升处理器的性能, AMD 公司、 Intel 公司先后推出了在一个微处理器芯片中集成两个 64 位处理器的新结构,两个处理器有各自的 L1 Cache ,共享 L2 。
• Intel 公司在 2006 年推出了称为“ Core” 的新内核。新一代“ Core” 内核将流水线从 Prescott 核心的 31 级降低为 1
4 级,通过优化整体结构提高性能。
• Core 内核使用了一种“指令融合”的新技术,通过“指令解码器”将功能相关的两条连续指令“融合”为一条“内部指令”。例如将比较指令和条件转移指令融合为一条“比较并转移”指令,用一条指令的执行时间完成这两条指令的功能。 Core 内核因此在一个时钟周期内可以完成 4
+1 条指令,其中的 +1 即为被融合的指令。• 内核的许多单元在空闲时可以进入“深度睡眠”状态,以
降低功耗。• Core 核心还包含了新的指令集 SSE4。
• 目 前 使 用 Core 内 核 的 处 理 器 产 品 称 为 “ Core 2 Duo
(酷睿 2 )”。
64 位微处理器
• 2001 年 5 月 29 日, Intel 公司推出了 64 位微处理器Itanium (安腾),数据通道宽度 128 位。
• Itanium 处理器采用了全新的设计,采用称为 IA-64 的体系结构,不再兼容之前的 80X86 系列微处理器,是真正的 64
位处理器。
• 该处理器目前主要用于服务器。
8.1.4 32 位微处理器的寄存器
0151631 8 7
AX
BX
CX
DX
AH AL
BH BL
CH CLDH DL
EAX
EBX
ECX
EDX
• 80X86 微处理器由 16 位升级为 32 位后,它的寄存器也对应升级为 32 位。• 为了新的工作方式和存储管理的需要,增加了一些用于控制的寄存器。1. 数据寄存器
16 位 80X86 处理器原有的 4 个通用数据寄存器扩展为 32 位,命名为 EAX 、 EBX 、 ECX 和 EDX 。仍然可以使用原有的 16 位和 8 位寄存器,如AX 、 BX 、 CX 、 DX 、 AH 、 AL 、 BH 、 BL...... 。
2. 地址寄存器• 原有的 4 个主要用于内存寻址的通用寄存器同样扩展为 32
位,命名为 ESI 、 EDI 、 EBP 、 ESP 。在实地址模式下仍然可以使用原有的 16 位寄存器 SI 、 DI 、 BP 和 SP 。
• 指令指针寄存器扩展为 32 位,更名为 EIP ,实地址下仍然可以使用它的低 16 位 IP 。
01531 16
0151631
EIP IP
BP
SP
SI
DI
ESP
EBP
ESI
EDI
• 在原有的 4 个段寄存器基础上,增加了 2 个新的段寄存器 FS 和 GS 。
• 段寄存器长度仍为 16 位,但是,它存放的不再是 16 位二进制表示的“段基址”,而是 13 位代表这个段的一个编号,称为“段选择子”。
• 段的其他信息(起始地址、段的长度、段的属性...)组成 64Bits 的“段描述符”,存放在二张称为“段描述符表”的表格中。
• 一张表格存放的是当前任务所使用的段的信息,称为“局部段描述符表( Local Descriptor Table, LDT ”) 。
• 另一张表格存放了系统所使用的段的信息,称为“全局段描述符表( Global Descriptor Table, GDT ”) 。
• 13 位二进制的“段选择子”就是这个段的“段描述符”在表中的顺序号。
• 16 位段寄存器的另一位称为“表指示器( Table Indicator, TI ”) ,用来在二张表中间进行选择。
• 16 位段寄存器的最低二位表示申请使用段的“特权级(RPL)” ,取值 0~3 。
• 每个段寄存器还有一个配套的 64bits“段描述符寄存器”。向段寄存器装入一个新的“段选择子”的同时,处理器会同时把它的描述符装入对应的“段描述符寄存器”。这些寄存器不能由指令来存取,对程序员是不可见的。
015
CS
DS
SS
ES
FS
GS
段寄存器
选择子 TI RPL
13 1 2
• 32 位微处理器增加了 4 个系统地址寄存器: 存放“全局段描述符表”首地址的 GDTR ; 存放“中断描述符表”首地址的 IDTR ; 存放“局部段描述符表” 选择子的 LDTR ; 存放“任务段”选择子的“任务寄存器” TR 。
0151647
015
GDTR
LDTR
线性地址线性地址
界限界限
TR
IDTR
3 . 控制寄存器
• 标志寄存器也扩展为 32 位,更名为 EFLAGS 。除了原有的状态、控制标志,增加了 2 位表示 IO 操作特权级别的 IOPL ,表示进入虚拟 8086 方式的 VM 标志等。
• 32 位微处理器增加了 5 个 32 位的控制寄存器,命名为CR0~CR4 。 CR0 寄存器的 PE=1表示目前系统运行在“保护模式”, PG=1表示允许进行分页操作。 CR3 寄存器存放“页目录表”的基地址。
• 此外,还有 8 个用于调试的• 寄存器 DR0~DR7 , 2 个用于测试的寄存器 TR6~TR7 。
1. 实地址方式• 32 位微处理器刚加电或者复位时,就进入实地址方式。• 实地址方式使用 16 位 80X86 的寻址方式、存储器管
理和中断管理。实地址方式下使用 20 位地址寻址1MB 空间,中断向量表安置在 00000H 开始的 1KB 内。
• 可以使用 32 位寄存器(需要在指令前加上寄存器扩展前缀),使用特权级 0 ,可以执行大多数指令。
• 实地址方式用于在开机后为进入保护模式做准备,也可以把 32 位处理器用作一片高速 16 位处理器使用。
8.1.5 32 位微处理器的工作方式
2. 保护方式
• 保护方式是 32 位微处理器的基本工作方式。• 保护方式下微处理器支持多任务运行环境,对任务进
行隔离和保护,进行虚拟存储管理。• 保护方式能够充分发挥 32 位处理器的优良性能。
3. 虚拟 8086 方式• 虚拟 8086 方式是保护模式下某个任务的工作方式,允许在保护模式下运行多个 8086 程序。
• 虚拟 8086 方式使用 8086 的寻址方式,每个任务使用1MB 的内存空间。虚拟 8086 方式的任务以最低特权级运行,所以不能使用特权指令。
4. 系统管理方式
• 系统管理模式( System Management Mode , SMM )主要用于电源管理
• SMM 可以使处理器和外围设备部件进入“休眠”状态,有键盘按下或鼠标移动时“唤醒”系统,使之继续工作。
• 利用 SMM 可以实现软件关机。
8.2 微型计算机体系结构
1. IBM-PC, PC/XT 微型计算机结构• IBM 公司以 8088 为 CPU 构建了的第一代的 PC 机——
IBM-PC ,该计算机以盒式录音机作为外存储设备 , 使用不够方便。
• 随后, IBM 公司推出了它的增强型— IBM-PC/XT ,它采用 10~20MB 的硬盘驱动器作为辅助存储设备,在一段时间内获得了广泛的认同。
• PC/XT 机采用以 CPU 为中心的简单结构,通过若干缓冲和锁存电路把 8088CPU 的信号连接到它的“系统板”上,构成了 62 线的“ XT 总线”。
8.2.1 80X86 微型计算机结构
• XT 总线包括 8 位数据线, 20 根地址线,使用与 CPU相同的 4.77MHz 的时钟信号。由于 8088CPU传输一次数据需要 4 个以上的时钟周期,所以 XT 总线的数据传输率约为 1.2MB/S 。
• 它的“系统板”上除了 8088CPU 及其外围电路,还集成了 ROM 、 RAM 、定时 / 计数器、中断控制器、 DMA 控制器、键盘、扬声器接口以及 8 个 62 引脚的“ XT 总线”扩展插槽。
• 它的显示器接口,打印机接口,串行通信接口都是以“接口卡”的形式通过 62 脚插槽与系统相连接的。主板上最多提供 256K 的 DRAM 存储器,更多的存储器需要做成“接口卡”与系统相连。
图 8-5
微处理器8088(4.77MHz)
数值协处理器8087(可选择)
外围芯片(地址锁存、数据缓冲等)
ROM(BIOS)
DRAM控制器
DRAM(64~256KB)
8253定时/计数器
8259中断控制器
键盘/开关接口(8255)
8237DMA控制器
DMA页面寄存器
62线扩展插座
IBM-PC/XT 微型计算机结构
2. PC/AT 微型计算机结构• 为了适应新的 CPU 的推出, IBM 公司推出了新一代
的微型计算机—— IBM PC/AT ;• PC/AT 对 8 位的“ XT 总线”进行了扩充,构成 16 位
的“ AT 总线” ;
• 随后, Intel 和其他公司联合,推出了与 AT 总线兼容的,公开的总线标准—— ISA ( Industry Standard Architecture ,工业标准体系结构)。
• ISA 总线使用 24 位地址、 16 位数据、 15 级硬件中断和 7 个 DMA 通道,使用 6~8MHz 时钟信号,最高数据传输率为 8MB/S 。
• ISA 总线与 XT 总线兼容, ISA插槽做成二段:第一段提供 XT信号,可以继续使用 XT 总线的接口卡;第二段提供 ISA 所增加的信号,同时插入二个插槽就得到完整的 ISA信号。
• 随着 CPU 主频的不断提高,要求内存储器的速度也要相应提高。在这样的情况下,出现了“分级”总线的微型计算机结构:把 CPU 与内存储器直接相连,称为“ CPU局部总线”;经过外围芯片(组)产生“系统总线”,与相对低速的其他 I/O设备相连接。
• L2 Cache 和 DRAM 及其控制器通过“ CPU局部总线”与 80486直接相连。在 AT 机型中还使用了独立的实时时钟 /日历芯片,关机时用后备电池供电,可以连续计时。
图 8-6
CPU(80486)
PC/AT/ISA核心逻辑芯片组
内含:总线缓冲器扩展总线控制15级中断7个DMA通道定时/计数器
DRAM与L2Cache控制器 L2 Cache DRAM
键盘/鼠标控制器
实时时钟/日历CMOS RAM
ROM BIOS(64~128KB)
ISA总线
8个8位XT插槽
6个16位ISA扩展插槽
CPU局部总线
IBM-PC/AT 微型计算机结构
• 自从 1987 年 Intel 公司生产出 8086 CPU 之后,每隔3-4 年,微处理器就要“升级换代”一次。
• 微处理器的快速更新带来了系统结构的“不稳定性”,给系统其他电路的研制、生产带来了巨大的压力。
• 为了获得一个稳定、高性能的系统结构, Intel 于 1991 年底提出, 1993 年联合其他公司推出了 PCI 总线规范。它独立于 CPU ,完全兼容当时已有的 ISA/EISA/微通道总线,具有高达 133MB/S 的数据传输速率,能够满足高性能图形接口和其他高速外设的需要。
• 随着同年高性能微处理器 Pentium 的推出, Pentium + PCI 成为新一代微型机计算机的的代名词。
8.2.2 Pentium 系列微型计算机结构
1 . “南北桥”结构• “南北桥”结构支持多级总线的系统组成。系统由处
理器总线( Host Bus ),局部总线( PCI )和系统总线( ISA )三级组成(图 8-7 )。
• 处理器总线连接高速缓存( Cache )和主存储器;• PCI 总线连接显示适配器、网络适配器、硬盘驱动器等高速设备;
• ISA 总线连接传统的并行口、串行口、软盘驱动器、键盘、鼠标等相对低速的外部设备。
• 各“级”之间信号的速度缓冲、电平转换、控制协议转换由称为“桥”的电路实现。
• 根据“桥”二端电路的不同,有“ CPU / PCI桥”( Host Bridge “), PCI / ISA桥”,“ PCI / PCI桥”等。
• “CPU / PCI桥”处于上部,按照地图的习惯,被称为“北桥”。该芯片除了“ CPU / PCI桥”电路之外,同时集成了 AGP 总线接口、主存储器控制器、 PCI仲裁器。
• “PCI / ISA桥”位于图的下方,被称为“南桥”,它同时还集成了 IDE辅助存储器接口,二个 8259 中断控制器,二个 DMA 控制器, 8253/8254定时 / 计数器和实时时钟,还增添了通用串行总线( USB )接口,“ I/O APIC”等。
• 传统的较低速的接口集成在称为“ Super I/O” 的电路中• 许多公司研制和生产了组成“南 -北桥”的芯片组,它们各自具有不同的性能和技术特征。
• Intel 公司生产的典型的“南 -北桥”的芯片组有 440BX和 440TX等。
• 从 Pentium II 开始的 CPU 还提供专用的引脚,通过南桥芯片的“ I/O APIC” 接口连接多于一个的 CPU ,构成多CPU 的系统。
图 8-7
PentiumII系列处理器 PentiumII系列处理器
主处理器总线(60~66MHz)
CPU/PCI桥
主存
L2 Cache图形设备
AGP总线 66/100MHz
PCI总线(33MHz)
PCI插槽
PCI/ISA桥
硬盘/CD-ROM驱动器
USB接口
ISA插槽
系统BIOS
ISA总线
I/OAPIC
APIC总线
SuperI/O
串行口
并行口
软盘接口
键盘接口
鼠标接口
“ 南北桥”结构的 PentiumII 微型计算机
2 . “两个中心”结构• “南 -北桥”结构存在一个明显的“数据传输瓶颈”:南桥芯片连接的高速外设都要通过 PCI 总线与处理器相连接。这增加了 PCI 总线数据交换的拥挤程度。 Intel公司为此又推出了称为“中心结构”的新的结构体系。
• “存储控制中心”( Memory Control Hub, MCH )芯片的主要任务是建立处理器与系统其他设备的高速连接。 它与处理器连接,通过存储器总线连接主存储器, 通过“中心高速接口”与称为“ I/O 控制中心( I/O
Control Hub , ICH ” ) 的芯片连接, 它还集成了高速 AGP 总线接口,电源管理部件和存储管
理部件。 有的 MCH 芯片还同时集成了 AGP图形接口,可以直接
连接显示设备,称为“图形存储控制中心( GMCH ”) 。
• “I/O 控制中心”芯片( ICH )负责建立 I/O设备与系统的连接。在它的内部集成了: 2 个 IDE辅助存储器接口( Primary IDE , Secondary
IDE ); 2 个或 4 个 USB 接口; 内置了 PCI 总线仲裁器和 PCI 总线接口; 内置了 AC'97 控制器,提供音频编码和调制解调器编码
接口; 通过 LPC I/F 和 Super I/O 芯片相连。该芯片内置相关
接口,连接软盘驱动器、键盘、鼠标等相对低速的外部设备,同时提供传统的并行、串行接口;
称为“固件中心”( FWH )的芯片主要用来存储系统和显示的 BIOS ,它也连接到 ICH 芯片上。
• Intel 公司生产的典型的“中心结构”的芯片组有 810 ,815 , 820 , 850 , 860 和 845等系列。
• PC'99规范中取消了 ISA 总线,需要使用时可通过“ PCI/ISA桥”芯片引出。
• “中心结构”进一步完善了多级总线结构,是目前普遍使用的微计算机系统结构 .
图 8-8
处理器 处理器处理器总线(400MHz)
存储控制中心(MCH)
主存AGP图形接口AGP总线
PCI总线(33MHz)
PCI插槽
I/O控制中心(ICH)
硬盘/CD-ROM驱动器
USB接口
固件中心
SuperI/O
AC’ 97编码LAN
串行口
并行口
软盘接口
键盘接口
鼠标接口
中心高速接口
“ 两个中心”结构的 Pentium 微型计算机
系统芯片组的作用: 连接构成系统的各个部件(处理器,主存储器,接口,外设)
提供各种基本信号,连接局部 / 系统总线, 集成了时钟、定时 / 计数器、中断控制器、 DMA 控制器
以及并行接口、串行接口等电路。• 系统芯片组在系统的构成上起着重要的作用,它使系统
结构简洁而同时又保持了强大的功能。• 广泛使用的 Intel 芯片组有 865 , 915 , 925 , 965等系列
8.2.3 Intel 系列芯片组
1 . Intel 845 芯片组
由存储控制中心芯片(如: 82845P )和第四代 IO 控制中心芯片( ICH4 ,如: 82801DB )组成。
• 支持 mPGA478 封装的 P4或 Celron D 处理器,处理器总线频率最高 533MHz;
• 支持 SDR/DDR SDRAM 等不同种类的存储器;
• 提供 1X/2X/4X AGP 图形总线;
• 支持 USB2.0。
2 . Intel 865 芯片组
由 865 系列的 MCH 芯片(如 82865PE )与第五代 IO 控制芯片( ICH5/ICH5R ,如 82801EB )组成。
• 支持 mPGA478 封装的 P4 或 Celeron D 处理器,支持超线程(Hyper Threading,HT )技术,支持 800MHz/533MHz/400MHz的处理器总线;
• 支持双通道 DDR400 存储器,带宽达到到 6.4GB/s( 64/8*400MHz*2),与处理器总线带宽相均衡;
• 提供 8X/4X AGP 图形总线;
• 提供串行 ATA硬盘驱动器接口和 Gb 级的以太网接口。
Intel Pentium 4Processor
82865PEMCH
ICH5/ICH5R
DDR
DDR
6通道Audio
高速USB2.08端口
PCI2.3
6.4, 4.2 or 3.2 GB/S
双通道DDR400/333/266 SDRAM
BIOS支持超线程
Intel RAID 技术仅ICH5R
AGP 8X
2.0GB/S
3.2GB/S
HUB 高速总线
150MB/S
Gb以太网
双通道串行ATA
10/100 LAN接口
Ultra ATA100
3.2GB/S
133MB/S
用 Intel 865 芯片组构建 PC 系统
3 . Intel 965 芯片组
Intel 965 芯 片 组配用 第八代 IO 控 制 芯 片 ( ICH8 , 如82801HB )。以 Intel G965 Express 芯片组( MCH 芯片为 Intel 82Q965 )为例:
• 支持多内核 CPU (如 Pentium D, Core 2 Duo),支持超线程技术,处理器总线频率为 1066MHz 或 800MHz ,使用 LGA775 封装;
• 提供 PCI Express x16 高速图形总线,带宽达到 8GB/s ,是 AGP 8X接口带宽的 3.5倍;
• 提供 6组 PCI Express X1 总线接口,供系统扩展;• 支持双通道 DDR2-667 存储器,最多 8GB ;• 提供 6 组独立的串行 ATA辅助存储器接口和增强型 SATA 。
用 Intel G965 芯片组构建系统Intel Core 2 Duo
Processor
G965MCH
G965ICH8
DDR2
DDR2
Intel 高解析度Audio
10端口高速USB2.0
8.5 GB/s
BIOS/Firmware
Intel 矩阵存储技术
Intel 图形媒体加速器X3000
12.8GB/s
2GB/s DMI
每路3Gb/s
PCI Expressx16图形接口
6端口SATA
Intel GbE LAN接口
6路PCI-Express x1
8GB/s
60MB/s
每路500MB/s
12.8GB/s
8.3 存储管理技术
• 对于半导体存储器器件而言,低价格、大容量、高速度是一组永恒的矛盾;
• 用单一工艺制造的半导体存储器难以同时满足上述三方面的要求。
• 解决这个问题的有效方法就是发挥不同存储器件各自的长处,采用多层次的存储系统。
8.3.1 高速缓存技术
1 . 多级存储体系• 多级存储体系就是把几种不同容量、速度的存储器合
理地组织在一起,使它们能较好地同时满足大容量、高速度、低价格的要求。
• 以增加技术复杂程度为代价。存储系统层次结构如下图,该系统由高速缓存( Chache )、主存、辅存三类存储器组成。三类存储器构成了二个层次的存储系统。
CPU
高速缓存
主
存
辅
存
( 1 )“高速缓存—主存”层次
• 高速缓存( Chache )存储器: 由小容量的高速静态存储器构成 速度很快,可以与处理器相匹配 容量小(约 32KB ),不会显著提高系统成本 一般将 Cache 集成在 CPU 的内部 Cache 存储处理器当前使用的指令和数据 和处理器之间以“字”为单位进行读写
• 主存储器: 由大容量的动态存储器组成 单位成本低于 Cache 速度相对较慢 Cache 与主存之间以“页”为单位进行读写
• 这一层次主要解决存储系统的“速度”问题。
( 2 )“主存—辅存”层次
• 辅助存储器: 由大容量的磁表面存储器或光存储器构成 具有很低的“位存储价格” 辅助存储器上储存着大量的程序和数据,处理器仅把目前
使用的程序和数据装入主存 辅存和主存之间以“块”为单位进行读写交换
• 这一层次主要解决存储系统的“容量”和“成本”问题• 以上二个层次的组合,本质上来说,是充分利用 Cache
的高速度,辅助存储器的大容量和低成本,使存储系统较好地解决“容量—速度—价格”之间的矛盾。
2 . 映射方式• 设置高速缓冲存储器之后,处理器需要的指令和数据首先在
Cache中寻找: 如果找到,则从 Cache中快速读取,这种情况称为“命中”
如果未能在 Cache中找到,则称为“失靶”,这时需要: 从主存中读取指令或数据所在“页”存入 Cache 同时将该指令或数据送入处理器
• 为了确定所要的指令 /数据是否在 Cache中, Cache中不但要存储指令 /数据的信息,同时还要储存该指令 /数据在主存的地址信息。这项信息纪录在“相联存储映像表”中。
• 缩短“主存地址信息”的长度,可以减少“相联存储映像表”的容量,同时可以简化查找和匹配过程。
• 为此,对主存“页”进入 Cache的位置作了种种限制,主存的“页”需要由某个“映像函数”确定它在 Cache中的位置。
( 1 ) 直接映像法假设 :Cache:
容量 16KB ,混合存储指令和数据信息 16 个“字”(每个字为 32bit=4Byte )为一“页” , 共
256“页” 每个字节用 8 位“页地址”加上 6 位“页内位置”表示
主存: 使用 32 位主存地址,寻址 4GB 的主存空间 每个字节用 18 位“组号”, 8 位“页地址”, 6 位“页
内地址”表示直接映像法:
主存中的一页只能进入与它页号相同的 Cache页中。
图 8-11
• Cache 为“空”时,处理器访问物理地址 12345678H 的主存单元,该地址可以划分为:
组号 =048D1H , 页地址 =59H , 页内地址 =38H
该内存页被读出,存入 Cache 中 59H页。“相联存储映像表”中该页的“标记( Tag ”) 被置为“ 048D1H” 。
• 随后,处理器访问地址为 12345644H 的主存单元,它的地址划分为: 组号 =048D1H , 页地址 =59H , 页内地址 =04H
查找“相联表”中页面为 59H 的标记项, “命中” 。 Cache 第 59H页面中页内地址为 04H 的“字”被读出,送往处理器。
• 处理器访问地址 12341678H 的主存单元,地址划分为:组号 =048D0H ,页地址 =59H ,页内地址 =38H 。
• 再次查找表中页面 59H 的标记项,发出“失靶”信息。• 主存中编号为 048D0 H 的 1页被读出,存入 Cache 第
59H页面中,对应的“标记” 修改为“ 048D0 H” 。• 一个新的主存页面进入 Cache ,原来的页面被覆盖。直接映像法特点:• 直接映像法采用简单的映射关系,查找方便。• 每个主存页面只与 Cache 中惟一的一个页相映射,增
加了页面冲突的可能性,会增加不合理的页面更换, Cache 的页面不能充分利用。
( 2 ) 全相联映像法全相联映像法:主存一页可以进入 Cache 任何一页。
例: 32 位主存地址, 16KB Cache ,划分同上。由于没有页号的限制,主存地址仅划分为二部分:
26 位页地址, 6 位页内地址。处理器发出主存物理地址之后, Cache 管理逻辑需要把主存的“页号”与所有的 “标记”逐一进行比较,以确定是否“命中”。
全相联映像法特点: “页面冲突”的可能降到最小; 查表,比较次数多,电路复杂; 只适用于小容量的 Cache
图 8-12
( 3 ) 组相联映像法
组相联映像法: Cache划分成大小相等的 “组”,每个组由若干“页”组成 允许主存的一个页与同一组内的多个页面进行映射例: 32位主存地址, 16KB Cache, Cache每“组”由二个页面组成,共 128个组。 Cache 内字节地址由 7 位“组号”, 1 位“页号”, 6 位“页内地址”组成。主存地址由 19 位“区号”, 7 位“页号”和 6 位“页内地址”组成。每个“区”包含 128 个“页”,等于 Cache “ 组”的数量。
• 主存每个区的 0#页面可以和 Cache 内 0 组二个页面中的任一个相映射,
• 1#页面可以和 Cache 内 1 组二个页面中的任一个相映射• ......
访问主存时,需要将主存 “区地址”部分与一个组内二个页面的“标记”同时进行比较,以确定是否“命中”。
组相联映像法特点:• 减少了页面冲突的可能性• 比较次数等于 Cache 内每组的页面数• 目前的微处理器多采用这种方法
图 8-13
3 .替换算法• 一个新的主存页面写入 Cache , Cache 中原有的页面就被覆盖或者说被替换。
• 使用“全相联映像法”和“组相联映像法”时,主存页的进入位置有一个以上的选择,管理逻辑需要决定覆盖或者替换哪一个 Cache页。
• 确定被替换页面的算法主要取决于实现的难易和命中率的高低。
常用的方法有以下二种。( 1 ) 先进先出法( FIFO)选择最早进入的页为被替换的页这种方法实现简单,但不够合理,最早进入的页仍然可能是现在频繁使用的页。
( 2 ) “近期最少使用”算法( LRU)这种算法比较合理,实现起来稍微复杂一些。
4 . Cache 和主存一致性问题• 使用高速缓存后,一项数据可能同时储存在二个位置上• 处理器把数据写入 Cache ,尚未写入主存时,就产生了
Cache— 主存内容的不一致性解决这个问题可以采用二种方法。( 1 ) 写回法( Write Back )
处理器执行写操作时,信息只写入 Cache ,该页被替换时,才将它写回主存。
( 2 ) 写直达法( Write Through )信息在写入 Cache 的同时也写回主存。
比较:使用写回法时,一个主存页面调入 Cache 后最多回写一次(内容未修改则不需要写回),节省了回写时间,但是一致性保持不如写直达法。
5 . 突发总线周期( Brust Bus Cycle)• 主存和 Cache 之间以“页”为单位进行信息交换,每次传送都是对连续的若干字节进行
• 新型主存器件都支持突发总线传输方式突发总线传输:向主存储器发送起始地址之后,连续传送多个字的数据。
例:• Pentium 的 Cache 每页 64 字节,与主存之间可以同时传输
64Bits 也就是 8 字节信息。• 主存页调入 Cache 时,向主存发出该页的起始地址,同时
发出“突发总线请求”信号。• 主存收到上述信号,适当延时,在连续的多个周期内每次
发送 8 字节( 64Bits )信息,最终把一页内容写入Cache 。
现代微型计算机对内存数量要求的增加:• 采用多任务的操作系统,提高 CPU利用率和性能• 多媒体技术的广泛使用,系统程序和应用程序使用的内存
数量越来越大。• 由于成本的原因,主存容量配置难以满足上述要求。
内存管理的“碎片”问题:• 任务运行时申请使用内存;任务撤销时释放内存。运行一段时间之后,主存空间将出现许多“碎片”。
• 清理这些“碎片”需要移动正在使用的“内存片”,这会带来许多复杂的问题。
8.3.2 虚拟存储技术
虚拟存储技术 :• 将主存储器和辅助存储器的一部分统一编址,看作一个完整的“虚拟存储空间”。
• 从 80386 开始的微处理器都内置了“存储管理部件( MMU ”) ,完成“虚存”和“实存”之间的调度。
使用虚拟存储技术的好处: 扩大了程序可用的存储空间; 有效地解决了任务之间,用户任务与操作系统之间存储
空间的隔离和保护; 有效解决“碎片”问题。
虚拟存储管理使用的地址空间:逻辑地址:程序中使用的存储空间线性地址:逻辑空间向物理空间转换中,线性排列的空间物理地址:实际的内存储器空间
1 . 段存储管理段存储管理完成逻辑地址向线性地址的转换。• 程序员使用的地址空间里,每个存储单元可以表示为“段名:段内偏移地址” 。这样的地址称为“逻辑地址”。
• 8086CPU 不支持虚拟存储管理,段寄存器直接记录了该段的起始地址信息。将段起始地址与偏移地址相加,就得到了该存储单元的物理地址。
• 32 位微处理器中,“段”的信息被纪录在“段描述符”中,包含32Bit段起始地址, 20Bit段界限值(段长度), 4Bit段类型, 2Bit段描述符优先级,以及其他信息共 64Bit 。
• 操作系统所使用段的“段描述符”顺序存放,组成“全局段描述符表( Global Descriptor Table, GDT ” ) 。 GDT表的首地址纪录在的“全局段描述符表寄存器( GDTR ”) 中。
• 每个用户所使用段的“段描述符”组成“局部段描述符表( Local Descriptor Table, LDT ” ) 。 LDT本身构成一个段, 这个段的“段选择子”放在寄存器( LDTR )中。
• 使用“段选择子”和二张“段描述符表”可以把“逻辑地址”转换成“线性地址”(图 8-15 )。
• GDT 和 LDT 二张表格存储在主存储器中。在保护状态下,每条指令的执行都伴随着逻辑地址向线性地址的转换过程。为了提高指令执行速度,在 32 位处理器内部除了在段寄存器中存有“段选择子”之外,还增设了与段寄存器对应的“段描述符寄存器”。在装载段选择子的同时,主存中对应的 64Bit段描述符信息同时进入该寄存器。
• 从理论上来说, 16 位段选择子可以选择二张表中共 21
3×2=214个不同的段。每个段最大可达 232字节。因此,通过段存储管理最多可管理 232×214=246=64TB 的虚拟地址空间。
图 8-14
2. 页存储管理• 线性地址空间是一个虚拟的地址空间,物理地址空间是实际的存储空间,它们都划分成若干大小相等的“页”。页存储管理部件负责完成线性地址向物理地址的转换。
• 线性地址空间一般远大于实际的物理地址空间,页存储管理部件需要决定“虚存”的哪些页调入“实存”,其余的则保存在辅助存储器中。
• 以 80386 为例,页面固定为 4KB ,每个线性地址页面的信息纪录在一个 32Bits 的“页表项”中,包括 32 位物理地址的高 20 位(低 12 位与线性地址的低 12 位相同),目前是否在“实存”中,以及该页的使用情况等相关信息。每 1024 个页面组成一个“页组”,它们对应的页表项构成一张“页表”, 4KB 大小的“页表”本身构成了一个特殊的“页”。
• 系统用一张“页组表”纪录所有页组的信息。“页组表”由 1024 个“页组目录项”组成, 32Bits 的“页组目录项”具有与“页表项”类似的格式,只不过它记录的是 1024 个特殊的“页”—“页组表”的相关信息。
于是, 32 位线性地址可以划分为: 10 位页组目录项索引——记录该线性地址单元所在
的页组; 10 位页表项索引——记录该线性地址单元在该页组
的哪一个页中; 12 位页内偏移地址——记录该线性地址单元在该页
内的相对位置。
图 8-15
• 线性地址向物理地址的转换通过查二次表实现(图 8-16 ): 用高 10 位查“页组目录项表”,得到该页组的“页组表”的
首地址; 用次 10 位在刚得到的“页组表”中查到该页的起始物理地址; 页的起始物理地址加上低 12 位的“页内偏移地址”,得到完
整的 32 位物理地址。• “页组目录项表”的首地址存放在处理器的“ CR3”
寄存器中。由于页表和页组目录项表每一项占用 4 个字节,所以二个 10 位的索引值都要乘以 4 与表的基地址相加,找到该目录项。
• 系统中应有一张页组目录项表,最多 1024张页表,这些表存放在主存储器中。实际使用时,把目前经常使用的表项转储在处理器内部称为“转换检测缓冲器( TLB ”) 的小型的高速缓存中,以提高查表速度。
• 在 Pentium II 开始的第六代微处理器中,可以使用“页目录指针表( PDPT ”) 。如果仍然以4KB 为一页, 32 位线性地址被划分为 4 部分: 2 位 PDPT项号,用来查 PDPT表,得到页目录表的
首地址; 9 位页目录项号,用来查页目录表; 9 位页面号,用来查页表,获得 24 位的“页基地址”; 12 位页内偏移地址,与 24 位“页基地址”组合,得
到 36 位物理地址。• 可以看出,它的基本方法与上面所述是一样的。
3 . 80X86 微机的虚拟存储管理
32位 X86 微处理器用 CR0 寄存器的 PE 位控制它的工作方式。
• PE=0 ,处理器工作在实地址方式下,处理器仍然使用 16 位 80X86 处理器的地址生成方式,用 20 位地址访问1M 字节的地址空间。
• PE=1 ,处理器工作在保护方式下,自动启用段存储管理机制。如果 CR0 寄存器的 PG 位为 1 ,同时启动页存储管理机制,实现段 /页二级虚拟存储管理。如果PG=0 ,则禁止使用页存储管理机制,由段存储管理产生的“线性地址”就是访问存储器要求的“物理地址”。
8.4 多任务管理与 I/O 管理
• 虚拟存储管理提供了运行多任务所必需的存储空间隔离和保护机制。
• 现代 32位微处理器的内部还集成了其他面向多任务运行所需要的管理逻辑。
8.4.1 多任务管理1 . 保护机制
保护模式下,处理器实施对任务和资源的保护机制。有 4 个( 0-3 )不同的“特权级”,用二位二进制表示。 0 级最高,可以访问系统的一切资源,供操作系统内核
使用。有些特殊的指令只能在 0 级执行,称为“特权指令”。
1 级次之,大多数的操作系统任务运行在这一层。 3 级最低,供一般用户程序使用,它不能使用具有 0~2
级特权的资源。
特权级出现在以下三个地方:( 1 ) 段描述符
每个段描述符内包括 2bit 的描述符特权级 DPL ,表示这个段(资源)的级别。
( 2 ) 选择子每个段选择子最低 2 位是它的请求特权级 RPL 。
( 3 ) 当前执行程序每个当前执行程序有一个当前特权级 CPL ,存放在段寄存器 CS 和 SS 的最低 2 位。 CPL表示该任务所拥有的特权级。
• 访问一个段时,要求 CPL 和 RPL 同时具有高于或等于 DPL 的特权级,否则将出现保护异常。
• 为了使得一般用户程序能够得到具有较高特权级的操作系统的服务,处理器特别提供了一种称为“调用门”的机制。“调用门”设在较低的的特权级上,通过它可以得到较高特权级的操作系统的服务。类似的还有任务门、中断门和自陷门。
2 . 任务结构一个任务由两部分组成: 一个任务的执行空间; 一个任务状态段 TSS ( Task Status Segment )
• 任务执行空间由该任务的代码段、堆栈段和若干个数据段组成。
• 任务状态段 TSS 是存储器内一个特殊的“段”,它储存了该任务的运行状态(包括各寄存器内容),使用的存储空间,允许使用的 I/O端口等信息,如图 8-17所示。当前任务的 TSS段的选择子装载在处理器的任务寄存器 TR 中。
图 8-16
3 . 任务的转换和连接• 作为一个“段”,任务状态段也有它的段描述符,存放
在“全局描述符表( GDT ”) 中。该描述符的“类型”字段包含一个“忙”标志位 B , B=1表示该任务正在执行。
• 处理器内 16 位的任务寄存器 TR 存放了当前正在执行任务的 TSS 的选择子。 TR 还包括一个不可见的 64 位描述符寄存器,那里存放了 TSS段描述符,它是 GDT 中对应描述符的拷贝,它使寻找该段的操作更加快速和简便。
• 指令 LTR 和 STR 用于装载和保存任务寄存器 TR 的 16位可见部分,其中 LTR 是一条特权指令,只能由 0 级特权的程序执行。
用 JMP或 CALL指令启动一个新的任务:• 指令目标地址“段选择子:偏移地址” 中,“段选择子” 指向 GDT 中新任务的 TSS段
• 处理器执行这条 JMP 或 CALL 指令时,会进行一系列的正确性检查
• 检查无误后,将当前任务的所有通用寄存器、所有段寄存器中的选择子、 EFLAGS 、 EIP 存入该任务自身的 TSS
• 将新任务的选择子、描述符装入 TR 寄存器(可见的和不可见的)
• 将对应 TSS段中所保存的通用寄存器、段寄存器(段选择子)、 EFLAGS 、 EIP副本装入处理器对应的寄存器中
• 在 CS:EIP 的控制下,一个新的任务开始执行。
• 除了上述 JMP 和 CALL 指令, IRET 指令、 INT-n 指令、中断和异常也会导致任务的转换。
• 32 位处理器的任务转移比起 16 位处理器的程序转移要复杂得多,它对任务的保护功能也强得多。由于这一系列的过程由处理器硬件完成,所以仍然能够实现快速的任务转换。
• 用 CALL 指令调用一个新任务时,处理器还将当前任务的 TSS 的选择子复制到新任务 TSS 中的“先前连接域”中,并将 EFLAGS 寄存器的 NT ( Nesting Task ,嵌套任务)位置 1 。新任务执行返回指令时,从 TSS 中找到保存的原 TSS选择子并返回。
用 JMP、 CALL指令调用同一个任务中其他程序段• 指令目标地址中,“段选择子”是目标段的选择子• 进行权限检查之后,该“段选择子”及其描述符被存入
CS 寄存器,“偏移地址”进入 EIP ,于是,目标程序被执行。
• 对于 CALL 指令,原来程序的返回信息“ CS:EIP” 被压入堆栈,在返回时恢复到 CS 和 EIP 中,以便顺序执行后续的指令。
• 在同一个任务中 CALL 和 JMP 指令的执行和 16 位微处理器中十分相似。
8.4.2 I/O 管理在多任务的运行环境中,如果多个任务都要对同一个 I/O端口进行访问,势必造成混乱,为此,必须对 I/O 操作进行必要的管理。
有二项措施来避免混乱的发生:• 处理器标志寄存器 EFLAGS 中 IOPL ( 2bits )规定
了执行 I/O 操作所需要的特权级;• 任务状态段 TSS 中有一个最多 64Kbits 组成的“ I/O允许位图( IOM ”) ,它的每一位对应一个对应位置的 I/O端口,为 0表示该端口允许这个用户进行 I/O操作。
• 对于运行在虚拟 8086 方式的任务,用 IOM来控制对I/O端口进行访问,对位图对应位为 1 的端口进行访问将产生保护异常。
• 在保护方式下,处理器首先检查当前任务的 CPL ,如果 CPL 的特权级高于或等于 EFLAGS 中由 IOPL规定的特权级, I/O 操作不会受限制,否则将进一步检查 IOM ,对 IOM 为 1 的端口进行操作将产生保护异常。
• 常用的一种办法是:在 IOM 中封锁对端口的访问,当前任务一旦执行 I/O 指令,立即产生保护异常,进入由操作系统设置的“异常处理程序”,在操作系统的控制下进行间接的“ I/O 操作”。
8.5 现代微型计算机中断系统
1 . 中断描述符表( IDT)
• 保护方式下用“中断描述符表 (IDT)”来指出各中断处理程序的入口地址。
• 每一个中断类型对应一个 64Bits 的“中断门”描述符,包括 16 位的“段选择子”, 32 位的偏移地址,它的类型代码以及特权级等信息。
8.5.1 保护方式下的中断管理
• 如果是由某种“异常”引起的中断,例如处理器内部的除法溢出,处理器外部的页面故障(访问存储器需要的页面不在物理存储器中),则对应一个“陷阱门”。它和“中断门”描述符形式上的区别仅仅是类型代码不同。
• 一个中断类型还可以对应于一个“任务门”。 64Bits的任务门包含了一个任务状态段的选择子( 16 位),但不含有偏移地址的信息。三种“门”的格式如图 8-18 。
• 图中, P 是存在位, =1表示该段已经在物理内存中,DPL 是“描述符特权级”。
• 与 DOS 方式下的中断向量表( IVT )不同, IDT 可以放在内存的任何位置,它的首地址(线性地址)存放在 IDTR 寄存器中。
图 8-17
2 . 中断响应过程
一次中断发生后 :
将 EFLAGS 、 CS 、 EIP 先后压入堆栈 清除 EFLAGS 中的 IF 和 TF 标志 将中断门中的段选择子装入 CS 依照 CS 内容,从 GDT 或 LDT表中找到中断服务
程序的段描述符,装入 CS 寄存器对应的描述符寄存器,中断门中的偏移地址装入 EIP 寄存器
进入由 CS:EIP 所指出的中断服务程序。
• 如果中断类型对应一个陷阱门,除了不清除 IF 标志位外,其他过程与上述相同。由于不清除 IF ,在中断处理过程能够被新的外部中断打断,这意味着它的中断优先级较低。
• 出于保护的需要,不同特权级的任务不能使用同一个堆栈。如果中断服务程序与被中断程序有不同的特权级,还需要在将 EFLAGS 、 CS 、 EIP压入堆栈后进行堆栈的切换,新的堆栈指针( SS:ESP )存放在当前任务的 TSS段中。为了保证正确的返回,需要把原来的堆栈指针也压入堆栈保护。
如果中断类型对应一个任务门
• 段选择符被装入 TR 寄存器• 依照段选择符的内容,从 GDT 中取出 TSS描述符装
入 TR 对应的描述符寄存器• 将当前任务的所有通用寄存器、所有段寄存器中的选择子、 EFLAGS 、 EIP 存入该任务的 TSS
• 将对应 TSS段中所保存的通用寄存器、段寄存器(段选择子)、 EFLAGS 、 EIP副本装入处理器对应的寄存器中
• 在 CS:EIP 的控制下,一个新的任务开始执行• 类似于用 JMP 和 CALL 指令连接一个新任务
• 在新的“两个中心”微计算机结构中,处理器以外的中断管理功能是由“ I/O 控制中心”芯片完成的。
• 图 8-10列出了它的中断接口信号。
8.5.2 I/O 控制中心( ICH )的中断管理功能
1 . 串行中断• 在以前的 PC 机中,外部中断请求信号连接在中断控
制器 8259A 的中断输入引脚上,所连接的引脚的编号与它的中断类型、中断优先级相对应。这种方式的优点是直观和简单,缺点是连线多,缺乏灵活性,不便于系统的扩充。
• 在新一代的 PC 微机中,采用了一种新的中断请求信号格式——串行中断,它用一根信号线( SERIRQ )来传递中断请求信号。所有支持串行中断的设备都可以用一个三态门连接到这根线上发送各自的中断请求信号(图 8-18 )。
图 8-18
SERIRQ信号线上的信息组织成“包”,用 PCI 的时钟信号( PCICLK )对“包”内信号进行同步。
“包”信息划分为开始帧、数据帧和停止帧 :
开始帧: 由 4 , 6 或 8 个 PCI 时钟周期的低电平组成,表示一
个“包”的开始。 开始帧可以由 ICH 控制器发起,也可以由一个外部设备发起。
数据帧:
开始帧结束后,每个外部设备以它的中断类型为序,占用一个数据帧发送自己的中断请求信号。
每个数据帧由三个 PCI 时钟周期组成。第一个周期为取样阶段,对于 PCI设备中断,低电平表示有中断请求,对于 ISA设备,高电平表示有中断请求。
第二个周期为恢复阶段,由设备输出高电平或悬浮态,SERIRQ信号线由上拉电阻保持为高电平。
第三个阶段为翻转阶段,设备输出端为悬浮态, SERIRQ信号线保持为高电平。数据帧的个数由ICH 所支持的串行中断个数决定。
停止帧:
• 数据帧结束后,由 ICH 发送 2-3 个 PCI 时钟周期的停止帧。
• 使用串行中断减少了中断请求的引脚数,但每个设备的相应逻辑变得复杂了。在开始帧出现之后,每个设备都要“侦听” SERIRQ信号线上的信号,以便在属于它的数据帧中发送正确的信号。
• 传统的外设,如键盘、鼠标等设备的接口集成在称为“ Super I/O” 的芯片中。它们的中断请求由“ Super I/O” 芯片转换成串行中断信号通过“ LPC I/F”送往ICH (参考图 8-8 )。
• ICH 内的控制逻辑在收到来自 SERIRQ信号线的串行中断信号后,将它们转换成独立的中断请求信号送往内部的 8259A 。
2 . ICH 内 8259A 的连接
• ICH 内集成了相当于二片 8259A 的中断管理逻辑。• 主片 8259A 使用 20H 和 21H 二个端口地址,提供了
IRQ0, 1, 3~7 的中断接入管理。• 从片 8259A 的中断请求输出 INTR 连接在主片的 IR2
引脚上,提供了 IRQ8~15 的中断接入管理,它使用0A0H 和 0A1H 二个端口地址。
• 新型微型计算机为了进一步提高性能,支持多处理器系统。这样带来了一个新的问题: 由哪一个处理器来启动系统; 一个外部中断到达之后,交给哪一个处理器去处理。
• 为了解决多处理器环境下处理器之间的联络、任务分配和中断处理,新一代微机计算机采用了 “高级可编程中断控制子系统( Advanced Programmable Interrupt Controlor , APIC ”) 。
8.5.3 APIC 中断
APIC子系统由三部分组成:( 1 ) Local APIC :这一部分集成在微处理器中,包括了
8259A 和 8254 的功能。它可以接受并响应来自 APIC子系统的外部中断请求、经 APIC子系统传来的其他处理器发来的中断请求,以及处理器内部产生的中断请求。
( 2 ) I/O APIC :它集成在 ICH 或“南桥”芯片的内部,它支持 24 个 APIC 中断。
( 3 ) APIC 总线:这是由三根线组成的一组同步总线,其中 APICD0 和 APICD1传送数据, APICCLK传送时钟信号。这组总线连接所有的 Local APIC 和 I/O APIC 。
• 系统中只有单片微处理器时,可以通过设定“绕过”方式,不使用 APIC 。
APIC 中断与传统 8259A 的区别:
• 中断信号在 APIC 上串行传送;• 无需中断响应周期;• 中断优先级与中断类型号相独立,中断类型号不决定
它的中断优先级;• 多中断控制器, APIC 通过仲裁允许连接多个中断控
制器 ;• 更多的中断,支持 24 个中断。
1. 查找相关资料,用列表方式给出 8088 , 8086 , ......直到 P4各代微处理器的地址、数据线引脚数量,并推算出各自的内存寻址空间。
2. 什么是 MMX 指令?它有什么特点?3. 什么叫动态执行?使用动态执行技术会带来什么好处?
4. 32 位微处理器有哪几种工作方式?各有什么特点?5. 叙述 XT 总线与 ISA 总线的异同之处。6. 什么叫分级总线?使用分级总线有什么优点?7. 简述“两个中心”结构与“南北桥”结构的区别,
同时说明“两个中心”结构的优越之处。
习题 8
8. CPU←→Cache , Cache←→ 主存,主存←→辅存之间的数据传输各有什么特点?为什么?请分析原因。
9. 什么叫“相联存储映像表”?说明它的结构和用途。10. 为什么要进行 Cache 和主存的“映像”?有哪几种相
联映像的方法?比较各自的利弊。11. 什么叫“突发总线周期”?它有什么优点?12. 逻辑地址是怎样转换成线性地址的?简要叙述转换过
程。13. 线性地址是怎样转换成物理地址的?简要叙述转换过
程。14. 请分析使用虚拟存储管理带来的利弊。15. 32 位微处理器实施保护机制的目的是什么?有哪些主
要措施?
16. 说明操作系统在保护模式下启动一个任务的过程。17. 32 位微处理器如何实施对 I/O 过程的管理?18. 简要叙述保护方式与实地址方式下的中断管理方法的
区别。19. 什么叫“串行中断”?它有什么优点?20. 什么叫“ APIC” 中断?它有什么用途?