第二章 微型计算机组成结构(硬件)¶
- 硬件,基于Intel80X86中央处理器的IBM PC微型计算机及其兼容机的硬件系统
- 软件,Linux操作系统内核
术语: - PC/AT 指具有80386或以上CPU的IBM PC及其兼容微机
2.1微型计算机组成原理¶
CPU总线¶
CPU通过本地总线(或成为内部总线)与系统其他部分进行数据通信,总线由: - 地址线(用于提供内存或I/O设备的地址) - 数据线 - 控制信号线 三部分组成,对于80386CPU的PC机,其内部地址线和数据线都分别有32根。因此地址寻址空间范围有2^32字节,从0到4GB。
控制器¶
控制器举例:
- 中断控制器:Intel 8259A或其兼容芯片
- DMA控制器: Intel8237A芯片
- 定时计数器: Intel 8253/8254定时芯片
- 键盘控制器: Intel 8042芯片与键盘中的扫描电路进行通信。
控制卡(适配器)¶
控制卡(适配器)通过扩展插槽与主板上系统总线连接。
总线插槽是系统地址总线、数据总线和控制线的与扩展设备控制器的标准连接接口。
总线接口标准:
- 工业结构标准ISA(Industry Standard Architecture)
- 扩展工业标准结构总线EISA(Extended ISA)
- 外围组件互连PCI(Peripheral Component Interconnect)总线
- 加速图形端口AGP(Accelerated Graphics Port)视频总线
- 高速PCIE(PCI Express)总线
最初的80386机器上只有ISA总线,因此系统与外部I/O设备最多只能使用16位数据线进行数据传输
现代PC结构¶
主要使用两个超大规模芯片构成的芯片组或芯片集(chipsets)组成:
- 北桥(Northbridge)芯片,用于与CPU、内存、AGP视频接口,这些接口有很高的传输速率。还有存储器控制作用,又被称为MCH(Memory Controller Hub)芯片
- 南桥(Southbridge)芯片,用来管理低中速的组件,如PCI总线、IDE硬盘、USB端口等。南桥又被称为ICH(I/O Controller Hub)
2.2 I/O端口和寻址¶
I/O端口地址(简称端口)¶
CPU为了访问I/O接口控制器或控制卡上的数据和状态信息,需要首先指定它们的地址。这种地址就称为I/O端口地址或者简称端口
端口地址设置方法:
- 统一编址(存储器映像编址)
- 独立编址
2.2.2 接口访问控制¶
PC机I/O接口数据传输控制方式:
- 程序循环查询方式
- 中断处理方式(需要中断控制器,使用中断向量表)(主要方式)
- 直接存储器访问DMA(Direct Memory Access)传输方式(用于I/O设备与系统内存之间,无需CPU,需要专门的DMA控制器)
2.3 主存储器、BIOS和CMOS存储器¶
2.3.1 主存储器¶
- 1981年IBM PC机系统只带有640KB的RAM主存储器(简称内存)。由于所采用的8088/8086CPU只有20根地址线,因此内存寻址范围最高位1024KB(1MB)。
- 为了与原来的PC机在软件上兼容,系统1MB以下物理内存使用分配上仍然保持与原来PC机基本一致。
- 计算机上电初始化时,物理地址被设置为从地址0开始的连续区域。除了地址从0xA0000到0xFFFFF(640K到1M共384K)和0xFFFF0000到0xFFFFFFFF(4G处的最后一64K)范围外的所有内存都可以用作系统内存。这两个特定范围被用于I/O设备和BIOS程序。
2.3.2 基本输入/输出程序 BIOS¶
- 存放在ROM中的系统BIOS程序主要用于计算机开机时执行系统各部分的自检,建立操作系统需要使用的各种配置表。
当计算机系统上电开机或者按了机箱上的复位按钮时:
- CPU会自动把代码段寄存器CS设置为0xF000,其段基地址设置为0xFFFF0000,段长度设置为64KB。
- IP设置为0xFFF0
- 因此,此时CPU代码指针指向0xFFFFFFF0处,即4G空间最后一个64K的最后16字节处。由上节可知,这里正是ROM BIOS存放的位置。
- 并且BIOS会在此位置存放一条跳转指令JMP跳转到BIOS代码中64KB范围内的某一条指令开始执行。
- BIOS在执行了一些列硬件检测和初始化操作之后,就会把与原来PC机兼容的64KB BIOS代码和数据复制到内存低端1M末端的64K处,然后跳转到这个地方并且让CPU进入真正的实地址模式工作。
- 最后BIOS就会硬盘或其他块设备把操作系统引导程序加载到内存0x7c00(31KB)处,并跳转到这个地方继续执行引导程序。
2.3.3 CMOS存储器¶
CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)
CMOS用来存放计算机的实时时钟信息和系统硬件配置信息。需要I/O指令访问CMOS内存。
2.4 控制器和控制卡¶
- 使用两片级联的8259A可编程中断控制芯片,组成一个中断控制器。能为15个设备提供独立的中断控制功能。
- 开机时ROM BIOS会对8259A芯片初始化。同时在内存开始处0x000-0xFFF区域建立一个中断向量表。
- Linux操作系统在内核初始化期间重新对8259A进行了设置。
2.4.2 DMA控制器¶
- DMA控制器的主要功能是通过让外部设备直接与内存传输数据来增强系统的性能。
- 通常,它由机器上的Intel 8237芯片或其兼容芯片实现。
- PC/AT机中,使用了两片8237芯片,DMA控制器有八个独立通道可使用。其中后四个是16位通道。
- 软盘控制器使用DMA通道2。
- DMA寄存器是8位,地址和计数值是16位值,因此需要各自发送两次。
2.4.3 定时/计数器¶
- Intel 8253/8254 是可编程定时/计数器(PIT-Programmable Interval Timer)芯片,用于处理计算机中的精准时间延迟。
- 该芯片提供3个独立16位计数器通道。
- 在软件中实现延时,使用8253/8254执行循环语句,延时到后向CPU发送中断信号。
- PC/AT及其兼容微机采用8254芯片。
- 3个定时/计数器通道被分别用于日时钟计时中断信号、动态内存DRAM刷新定时电路和主机扬声器音调合成。
- LinuxO.11操作系统只对通道0进行了重新设置,使得该计数器工作在方式3(方式三是什么?)下,并且每间隔10毫秒发出一个信号以产生中断请求信号(IRQ0)。这个间隔定时产生的中断请求就是Linux0.11内核工作的脉搏,它用于定时切换当前执行的任务和统计每个任务使用的系统资源量(时间)。
2.4.4 键盘控制器¶
我们使用的键盘是IBM公司于1984年PC/AT微机兼容键盘,通常称为AT-PS/2兼容键盘并具有101到104个按键。
- 键盘上有一个称为键盘编码器的处理器(Intel 8048或兼容芯片)专门用来扫描收集所有按键按下和松开的状态信息(即扫描码),并发送到主机主板上键盘控制器中。 主机键盘控制器专门用来对接收到的键盘扫描码进行解码,并把解码后的数据发送到操作系统的键盘数据队列中。
- 当一个键被按下时,键盘发送的扫描码称为接通扫描码(Make code),或简称为接通码。
- 当一个被按下的键放开时发送的扫描码被称为断开扫描码(Break code),或简称为断开码。
- 每个按键的接通码与断开码都是不同的。
- 整个键盘上所有按键的接通和断开码就组成了键盘的一个扫描码集(Scan Code Set)
扫描码集(目前有三套):
1. 一:原始XT键盘扫描码集(目前很少用)。
2. 二:AT键盘扫描码集--现代键盘默认使用的扫描码集。
3. 三:PS/2键盘扫描码集(IBM的PS/2微机使用,现在很少使用)。
- AT键盘默认发送第二套扫描码集,但为了与PC/XT机的软件兼容,仍会把所有接收到的第二套扫描码转换为第一套扫描码,这也是后续涉及键盘内容只给出XT键盘扫描码集的原因。
- 键盘控制器接收键盘发送来的11位串行格式数据。其中第1位是起始位,第2--9位是8位键盘扫描码,第10位是奇校验校验位,第11位是停止位。
- 键盘接收器将11位串行数据转换为PC/XT标准键盘兼容的系统扫描码,然后通过中断控制器IRQ1引脚向CPU发送中断请求。当CPU响应该中断请求后,就会调用键盘中断处理程序来读取控制器中的XT键盘扫描码。
- XT键盘的断开码为其接通码加上0x80,即最高有效位(位7)置位时的接通码。
-
AT键盘在PC/XT键盘上扩展了一些按键,这些按键其接通和断开扫描码通常有2到4个字节,并且第一个字节一定是0xE0(本书附录有完整的扫描码集)。
-
键盘控制器8042的输出端口P2用于其他目的。其P20引脚用于实现CPU复位操作,P21引脚用于控制A20信号线开启与否(1开启,0禁止)。
2.4.5 串行控制卡¶
1.异步串行通信原理¶
- 计算机/设备与计算机/设备之间的“语言”称为通信协议。
- 通信协议规定了传送一个有效数据长度单位的格式,这种格式我们称为“帧”。
- 除必要数据外,在传输的一帧信息中还包含起同步和错误检测作用的其他信息。
- 串行通信的异步(字符)与同步(多个字符或字节)。
2.异步串行传输格式¶
帧格式:
- 起始位、数据位、奇偶校验位、停止位四部分构成。
- 起始位,起同步作用,值恒为0。
- 数据位,传输实际数据,长度为5-8比特。
- 奇偶校验位可有可无,由程序决定。
- 停止位恒为1,可由程序设定为1、1.5或2个比特位。
- 通信开始发送信息之前,双方必须设置成相同的格式,如具有相同数量的数据比特位和停止位。
- 无数据传输时,发送发一直处于传号(MARK)状态。若需要发送数据,则发送方需要先发送一个比特位间隔时间的空号起始位。
在异步通信规范中,把传送1称为传号(MARK),传送0称为空号(SPACE)。
3.串行控制器¶
- 为实现串行通信,PC机上通常都带有两个符合RS-232C标准的串行接口,并使用通用异步接收/发送器控制芯片UART(Universal Asyncronous Receiver/Transmitter)组成的串行控制器来处理串行数据收发工作。
- PC串行接口通常使用DB-25或DB-9连接器,主要用来连接MODEM(光猫;调制解调器)设备工作。
- NS8250或NS16450 UART芯片,现在PC机则使用16650A及其兼容芯片。
2.4.6 显示控制¶
1.MDA显示标准¶
- 单色显示适配器MDA(Monochrome Display Adapter)仅支持黑白两色显示。并且只支持独有的文本字符显示方式(BIOS显示方式7)。
- 屏幕显示规格:80列*25行,共可显示2000个字符。每个字符还带有一个属性字节,因此显示一屏(一帧)内容需要占4KB字节。其中偶地址字节存放字符代码,奇地址字节存放显示属性。
- MDA卡配置有8KB显示内存,在PC机内存寻址范围中占用从0xb0000开始的8KB空间(0xb0000 -- 0xb2000)。
2.CGA显示标准¶
彩色图形适配器CGA(Color Graphics Adapter)支持七种彩色和图形显示方式(BIOS显示方式0--6)。 - CGA有16KB显存(占用内存地址0xb8000-0xbc000), 但在console.c程序中只用了其中8KB显存(0xb8000--0xba000)
字符属性格式(8位): D7 -- 闪烁 D6-D4 --背景色RGB D3 -- 置1为高亮度 D2-D0 -- 前景色
D2-D0可以组合出8种颜色,前景色和高亮度比特位组合可以显示另外8种字符颜色。
3.EGA/VGA显示标准¶
- 在与MDA和CGA兼容的显示方式下,占用内存地址相同。EGA/VGA配有32KB以上的显存。在图形方式下占用从0xa0000开始的物理内存地址空间。
2.4.7 软盘和硬盘控制器¶
- 软盘控制系统:软盘片+软盘驱动器(软盘片可独立携带)
- 硬盘:硬盘+银盘驱动器(硬盘金属盘片固定在驱动器中,不可拆卸)
- 磁头通过切割运动磁介质磁感线产生感应电流读取数据。
盘片磁道格式(一条磁道(旋转一圈)):
GAP|扇区1|扇区2|扇区3|····|扇区n-1|扇区n|GAP
扇区格式(扇区3):
同步|地址|校验|GAP|同步|512字节数据|校验|GAP
扇区中的同步|地址|校验三部分为地址场,同步|512字节数据|校验为数据场。
- 盘片磁道格式中,GAP是间隔字段,用于起隔离作用。通常GAP是12个字节的0。
- 每个扇区的地址场的地址字段存放着相关扇区的柱面号、磁头号(面号)和扇区号。
- 为了读写磁盘(软盘和硬盘)上的数据,就必须使用磁盘控制器。磁盘控制器是CPU与驱动器之间的逻辑接口电路,它从CPU接收请求命令,向驱动器发送寻道、读/写和控制信号,并且控制和转换数据流形式。控制器与驱动器之间传输的数据包括扇区地址信息以及定时和时钟信息。
- PC/AT机中软盘驱动控制器FDC(Floppy Fisk Controller)采用NEC u PD765或其兼容芯片。
折叠测试 :
什么是iuap design
iuap design 是用友网络FED团队开发的企业级应用前端集成解决方案。2024.10.16-11.16 于云南昆明、兰州、泰安家中