我们先来看一张现代PC机的芯片构成图:
现代PC机的主板主要有北桥和南桥两大芯片构成,一改往日的将控制器与适配器接在本地总线上的设计。这两大芯片主要完成的主要功能是
- 北桥芯片:完成CPU、视频接口(AGP)、存储器接口这些数据传输较快的设备之间的数据通信。
- 南桥芯片:完成低层IO设备之间的数据交流:像USB串行设备、硬盘接口等等。
IO端口寻址和访问控制方式
CPU与IO设备之间进行通信,必须首先知道对方的地址:即端口地址,其次我们需要知道数据交流的具体方式。通常来说一个IO控制器存在数据端口、命令端口、状态端口三种端口,对于端口地址的设计有两种方式:独立编址和统一编址。数据传输的具体方式可以分为三种:程序循环查询、中断、DMA(直接存储器访问)。接下来我们具体谈一下这些概念。
-
编址方式
- 独立编址:为IO设备划分独立的内存区域,设计另外不同于存储器访问的IO指令
- 统一编址:将IO设备的地址纳入存储器地址空间范围内,可以共用存储器访问的IO指令
-
访问控制方式
- 程序循环查询:利用代码实现对IO控制器状态的查询,查找可以进行数据传输的设备
- 中断处理方式:该方式需要专门的中断控制器。首先中断控制器会向CPU提出中断请求,CPU收到相应的中断请求之后暂停当前进程的运行,然后去执行预先设置好的中断服务子程序。执行完毕后重现将CPU的控制权交给当前进程。
- DMA方式:通常用来进行大量的数据传输,可以将DMA控制器看作是一个专为IO设计的处理机,他可以暂时结果总线控制权,当数据传输完成后重新将控制权移交给CPU。
存储器和BIOS
先来看一张图片:
从图中可以看到供用户使用的内存并不是连续的,内存的区域被分割成了不同的区域,通常来说BIOS程序被储存在了CPU寻址能力的最高端。
BIOS:开机时主要完成主板设备的自检并引导加载操作系统.
我们简单回顾一下计算机的开机过程:当我们按下电源键或者复位键时,CPU代码指针将指向内存空间中最后64K空间中的某一块内存区域,该区域存放的是一条跳转指令,接着CPU会将64K大小的BIOS代码和数据拷贝到低端内存1M位置的末端,同时跳转到此处。最后BIOS程序开始从硬盘或者块设备将操作系统加载到内存地址的0x7c00处,并跳转到该地方继续执行引导程序。
异步串行通信
计算机与计算机之间通信需要双方都应遵守的通信协议,通信协议的设计一般如下图,我们将这种双方都遵守的通信格式称为帧
串行通信作为计算机通信方式的一种,每次传输一个比特位。通常分为异步和同步两种:
- 同步串行通信:计算机在进行数据交流过程中每次传输多个字符
- 异步串行通信:计算机在进行数据交流过程中每次传输一个字符
从两种不同的方式来看,如果我们将通信单位看作是一个字符,那么同步串行通信也可以看作是异步的。
异步串行通信的数据格式
异步串行通信的具体过程:
发送方在发送数据前,比特位一直处于高电平,当比特位转为低电平后此时表明双方开始传输数据,双方的数据开始同步。如果格式中存在校验位,还需要相应的附加计算。比特位再次转换为高电平意味着数据传送结束。