7.7 本 章 小 结
第 3 版 · OCR 辅助 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照
#### 7.7 本 章 小 结
每一类单独的存储器都不可能又快、又大、又便宜,为了构建理想的存储器系统,计算机
内部采用了一种层次化的存储器体系结构。按照速度从快到慢、容量从小到大、价格从贵到
便宜、与CPU连接的距离由近到远的顺序,将不同类型的存储器设置在计算机中,其设置
的顺序为寄存器→cache→主存→磁盘或固态硬盘→光盘和磁带。
利用程序访问的局部性特点,通常把主存中的一块数据复制到靠近 CPU 的 cache中。
cache 和主存间的映射有直接映射、全相联映射和组相联映射;替换算法主要有 FIFO 和
LRU;写策略有回写法和全写法。
虚拟存储器机制的引入,使得每个进程具有一个一致的、极大的、私有的虚拟地址空间。
虚拟地址空间按等长的页来划分,主存也按等长的页框划分。进程执行时将当前用到的页
面装入主存,其他暂时不用的部分放在硬盘上,通过页表建立虚拟页和主存页框之间的对应
关系。在指令执行过程中,由特殊硬件(MMU)和操作系统一起实现存储访问。虚拟存储
器有分页式、分段式、段页式3类。虚拟地址需转换成物理地址。为减少访问内存中页表的
次数,通常将活跃页的页表项放到一个特殊的高速缓存TLB(快表)中。虚拟存储器机制能
实现存储保护,通常有地址越界和访问越权两种内存保护错。
习题
1.给出以下概念的解释说明。
SRAM
DRAM
易失性存储器
相联存储器
记忆单元
编址方式
刷新周期
片选信号
地址引脚复用
行选通信号(RAS)
列选通信号(CAS) SDRAM
行缓冲
多模块存储器
连续编址方式
交又编址方式
柱面
磁道
扇区
记录密度
磁盘平均访问时间PROM
EPROM
EEPROM
闪存(Flash)
码制
码字
码距
时间局部性
空间局部性
命中率
命中时间
缺失率
缺失损失
虚拟地址
虚拟页号
物理地址
页框(页帧)
物理页号
地址转换
页表
页表基址寄存器
有效位(装入位)
修改位
缺页(page fault)
请求分页
FIFO
LRU
快表(TLB)
管理模式
用户模式
异常返回
存储保护
地址越界
访问越权
2.简单回答下列问题。
(1)计算机内部为何要采用层次化存储体系结构?层次化存储体系结构如何构成?
(2)SRAM芯片和 DRAM 芯片各有哪些特点?各自用在哪些场合?
(3)CPU和主存之间有哪两种通信定时方式?SDRAM芯片采用什么方式和 CPU交换信息?
(4)为什么在 CPU 和主存之间引入 cache 能提高 CPU访存效率?
(5)为什么说 cache对程序员来说是透明的?
(6)什么是 cache映射的关联度?关联度与命中率、命中时间的关系各是什么?
(7)为什么直接映射方式不需要考虑替换策略?
第7章
267
<!-- page: 285 -->
计算机组成与系统结构(第3版)
268
(8)为什么要考虑 cache的一致性问题?读操作时是否要考虑 cache 的一致性问题?为什么?
(9)什么是物理地址?什么是逻辑地址?地址转换由硬件还是软件实现?为什么?
(10)什么是页表?什么是快表?什么是慢表?
(11)在存储器层次结构中,“cache-主存”“主存-磁盘”这两个层次有哪些不同?
3.某计算机主存最大寻址空间为4GB,按字节编址,假定用64M×8位的具有8个位平面的DRAM芯
片组成容量为512MB、传输宽度为64位的内存条(主存模块)。回答下列问题。
(1)每个内存条需要多少个 DRAM 芯片?
(2)构建容量为2GB的主存时,需要几个内存条?
(3)主存地址共有多少位?其中哪几位用于DRAM芯片内地址?哪几位为DRAM芯片内的行地址?
哪几位为DRAM芯片内的列地址?哪几位用于选择芯片?
4.假定用64K×1位的 DRAM芯片构成256K×8位的存储器,要求回答下列问题。
(1)所需芯片数为多少?画出该存储器的逻辑框图。
(2)若每单元刷新间隔不超过2ms,则产生刷新信号的间隔是多少时间?
5.假定用8K×8位的 EPROM芯片组成32K×16位的只读存储器,要求回答以下问题。
(1)数据寄存器最少应有多少位?
(2)地址寄存器最少应有多少位?
(3)共需多少个 EPROM芯片?
6.某计算机中已配有0000H~7FFFH的ROM区域,现在再用8K×4位的RAM芯片形成32K×8
位的存储区域,CPU地址线为A0~A15,数据线为D0~D7,控制信号为R/W(读/写),MREQ(访存)。要
求说明地址译码方案,并画出ROM芯片、RAM芯片与CPU之间的连接图。假定上述其他条件不变,只
是CPU地址线改为24根,地址范围000000H~007FFFH为ROM区,剩下的所有地址空间都用8K×4位
的RAM芯片配置,则需要多少个这样的RAM芯片?
7.假定一个存储器系统支持四体交叉存取,某程序执行过程中访问地址序列为3,9,17,2,51,37,13,
4,8.41,67,10,则哪些地址访问会发生体冲突?
8.假定一个程序重复完成将磁盘上一个4KB的数据块读出,进行相应处理后,写回到磁盘的另外一
个数据区。各数据块内信息在磁盘上连续存放,并随机地置于磁盘的一个磁道上。磁盘转速为
7200RPM,平均寻道时间为10ms,磁盘最大数据传输率为40MB/s,磁盘控制器的开销为2ms,没有其他程
序使用磁盘和处理器,并且磁盘读写操作和磁盘数据的处理时间不重叠。若程序对磁盘数据的处理需要
20000个时钟周期,处理器时钟频率为500MHz,则该程序完成一次数据块“读出-处理-写回”操作所需的时
间为多少?每秒钟可以完成多少次这样的数据块操作?
9.现代计算机中,SRAM一般用于实现快速小容量的cache,而 DRAM用于实现慢速大容量的主存。
以前超级计算机通常不提供 cache,而是用SRAM来实现主存(如Cray巨型机),请问:如果不考虑成本,
你还这样设计高性能计算机吗?为什么?
10.对于数据的访问,分别给出具有下列要求的程序或程序段的示例:
(1)几乎没有时间局部性和空间局部性。
(2)有很好的时间局部性,但几乎没有空间局部性。
(3)有很好的空间局部性,但几乎没有时间局部性。
(4)空间局部性和时间局部性都好。
11.假定某计算机主存地址空间大小为1GB,按字节编址,cache的数据区(即不包括标记、有效位等存
储区)有64KB.块大小为128字节,采用直接映射和直写(write through)方式。请问:
(1)主存地址如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
(2)cache的总容量为多少位?
12.假定某计算机的 cache共16行,开始为空,块大小为1个字,采用直接映射方式,按字编址。CPU
<!-- page: 286 -->
存储器层次结构
执行某程序时,依次访问以下地址序列:2.3,11,16,21,13,64,48,19,11,3,22,4,27,6和11。
(1)说明每次访问是命中还是缺失,试计算访问上述地址序列的命中率。
(2)若 cache数据区容量不变,而块大小改为4个字,则上述地址序列的命中情况又如何?
13.假定数组元素在主存按从左到右的下标优先顺序存放。试改变下列函数中循环的顺序,使得其数
组元素的访问与排列顺序一致,并说明为什么修改后的程序比原来的程序执行时间更短。
int sum_array(int a[N][N][N])
int 1,j,k,sum=0;
for(i-0;i<N;i++)
for(j-0;j<N;j++)
for(k=0;k<N;k++)sum+=a[k][i][j];
return sum;
14.分析比较以下3个函数中数组访问的空间局部性,并指出哪个最好,哪个最差。
#define N 1000
typedef atruct (
int vel[3];
int ace[3];
) point;
point p[N]:
void clearl(point *p,int n)
(
int i,j;
for(i=0;i<n;i++)4
for(j=0;j<3;j++)
p[i].vel[j]=0;
for(j-0;1<3;j++)
p[1].acc[j]-0;
)
)
#define N 1000
typedef struct {
int vel[3];
int ace[3];
} point;
point p[n];
void clear2(point*p,int n)
(
int i,j;
for(1=0;i<n; i++)(
for(j-0;j<3;j++)(
p[i].vel[j]=0;
p[i].acc[j]=0;
)
)
#define N 1000
typedef struct
int vel[3];
int acc[3];
### 1 point;
point p?n];
void clear3(point*p,int n)
(
int i,j;
for(j=0;j<3;3++)(
for(i-0;i<n;i++)
p[1].vel[j]=0;
for(i=0;i<n;i++)
p[i].acc[j]-0;
1
1
15.以下是计算两个向量点积的程序段:
float dotproduct(float x[8], float y[B])
1
float sum=0.0;
int i;
for(i-0;i<8;i++)sum+-x[i]*y[1];
return sum;
(1)试分析该段代码中访问数组x和y的时间局部性和空间局部性,并推断命中率的高低。
(2)假定该段程序运行的计算机中数据 cache采用直接映射方式,其数据区容量为32字节,每个主存
块大小为16字节。假定编译程序将变量sum和i分配在寄存器中,数组x存放在00000040H开始的32
字节的连续存储区中,数组y则紧跟在x后进行存放。试计算该程序中数据访问的命中率,要求说明每次
访问时 cache的命中情况。
(3)将上述(2)中的数据cache改用2路组相联映射方式,块大小改为8字节,其他条件不变,则该程序
数据访问的命中率是多少?
第7章
269
<!-- page: 287 -->
计算机组成与系统结构(第 3版)
(4)上述(2)中条件不变的情况下,如果将数组x定义为float x[12],则数据访问的命中率又是多少?
16,以下是对矩阵进行转置的程序段:
270
typedef int array[4][4];
void transpose(array dst, array src)
int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)dst[j][i]=src[i][j];
假设该段程序运行的计算机中sizeof(int)=4,且只有一级 cache,其中L1数据 cache的数据区大小为
32B,采用直接映射、回写方式,块大小为16B,初始为空。数组 dst从地址0000 C000H开始存放,数组 sre
从地址0000C040H开始存放。填写下表,说明对数组元素 sre[row][col]和 dst[row][col]的访问是命中
(hit)还是缺失(miss)。若将L1数据 cache的数据区容量改为128B,请重新填写表中内容。
srr 数组
dst 数组
col=0
col=1
col=2
col=3
col=0
col=1
col=2
col=3
row=0
miss
miss
Tow=1
fow=2
row=3
17.通过对方格中每个点设置相应的CMYK值就可以将方格涂上相应的颜色。以下3个程序段都可
实现对一个8×8的方格涂上黄色的功能。
程序段 A
程序段 B
程序段C
struct pt_color (
int c;
lntm;
int y
int k;
)
struct pt_color square[8][8];
int i,j;
for(i=0;i<8;i++){
for(j-0;j<8;j++)4
square[i][j].c-0;
square[1][j].m=0;
square[4][j].y-1;
square[1][j].k=0;
struct pt_color l
int ci
int m;
int y:
int k;
1
struct pt_color square[8][B];
int 1,j;
for(i=0;i<8;i++)(
for(j-0;j<8;j++)(
square [j][i].c-0;
square[j][1].m=0;
square[j][i].y-1;
square [j][1].k-0;
)
1
struct pt_color (
int c
int m;
int yi
int k;
)
struct pt_color square[B][B];
inti,j;
for(i=0;i<8;i++)
for(j-0;j<8;j++)
square[i][j].y-1;
for(i=0;i<8;1++)
for(j=0;j<8;j++)t
square[1][j].c-0;
square[1][j].m-0;
square[i][j].k=0;
1
假设cache的数据区大小为512B,采用直接映射,块大小为32B,存储器按字节编址,sizeof(int)=4。
编译时变量i和;分配在寄存器中,数组square按行优先方式存放在000008C0H开始的连续区域中,主
存地址为32位。要求:
<!-- page: 288 -->
存储器层次结构
(1)对3个程序段 A、B、C中数组访问的时间局部性和空间局部性进行分析比较。
(2)画出主存中的数组元素和 cache中行的对应关系图。
(3)分别计算3个程序段 A、B、C中的写操作次数、写不命中次数和写缺失率。
18.假设某计算机的主存地址空间大小为64MB,采用字节编址方式。其cache数据区容量为4KB,采
用4路组相联映射方式、LRU替换算法和回写(write back)策略,块大小为64B。请问:
(1)主存地址字段如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
(2)该 cache 的总容量有多少位?
(3)假设cache初始为空,CPU依次从0号地址单元顺序访问到4344号单元,重复按此序列共访问16
次。若 cache命中时间为1个时钟周期,缺失损失为10个时钟周期,则CPU访存的平均时间为多少时钟
周期?
19.假定某处理器可通过软件对高速缓存设置不同的写策略,那么,在下列两种情况下,应分别设置成
什么写策略?为什么?
(1)处理器主要运行包含大量存储器写操作的数据访问密集型应用。
(2)处理器运行程序的性质与(1)相同,但安全性要求很高,不允许有任何数据不一致的情况发生。
20.已知 cache1采用直接映射方式,共16行,块大小为1个字,缺失损失为8个时钟周期;cache 2也
采用直接映射方式,共4行,块大小为4个字,缺失损失为11个时钟周期。假定开始时 cache为空,采用字
编址方式。找出一个访问地址序列,使得cache2具有更低的缺失率,但总的缺失损失反而比 cache1大。
21.提高关联度通常会降低缺失率,但并不总是这样。请给出一个地址访问序列,使得采用LRU替换
算法的2路组相联映射 cache 比具有同样大小的直接映射 cache的缺失率更高。
22.假定有3个处理器,分别带有以下不同的 cache:
cache 1:采用直接映射方式,块大小为1个字,指令和数据的缺失率分别为4?6??
cache 2:采用直接映射方式,块大小为4个字,指令和数据的缺失率分别为2?4??
cache 3:采用2路组相联映射方式,块大小为4个字,指令和数据的缺失率分别为2?3??
在这些处理器上运行同一个程序,其中有一半是访存指令,在3个处理器上测得该程序的CPI都为
2.0。已知处理器1和2的时钟周期都为420ps,处理器3的时钟周期为450ps。若缺失损失为(块大小+
6)个时钟周期,请问:哪个处理器因cache 缺失而引起的额外开销最大?哪个处理器执行速度最快?
23.假定某处理器带有一个数据区容量为256B的cache,其块大小为32B。以下C语言程序段运行在
该处理器上,设sizeof(int)=4,编译器将变量i,j,c,s都分配在通用寄存器中,因此,只要考虑数组元素的
访存情况。若cache采用直接映射方式,则当s=64和s=63时,缺失率分别为多少?若 cache采用2 路组
相联映射方式,则当s=64和s=63时,缺失率又分别为多少?
int i,j,c,s,a[128];
⋯*
for(i=0;1<10000;1++)
for(j=0;j<128;j=j+s)
c=a[j];
24.假定一个虚拟存储系统的虚拟地址为40位,物理地址为36位,页大小为16KB。若页表中有有效
位、存储保护位、修改位、使用位4个表项,共占4位,磁盘地址不记录在页表中,则该存储系统中每个进程
的页表大小为多少?如果按计算出来的实际大小构建页表,则会出现什么问题?
25.假定一个计算机系统中有一个 TLB和一个 L1数据 cache。该系统按字节编址,虚拟地址16位,
物理地址12位,页大小为128B;TLB采用4路组相联方式,共有16个页表项;L1数据cache采用直接映射
方式,块大小为4B,共16行。在系统运行到某一时刻时,TLB、页表和L1数据cache中的部分内容如下:
第7章
271
<!-- page: 289 -->
计算机组成与系统结构(第3版)
组号
标记
页框号 有效位
标记
页框号 有效位
标记
页框号 有效位
标记
页框号 有效位
0
03
0
09
0D
1
00
0
07
02
1
272
1
2
13
2D
1
02
0
04
0
0A
0
02
0
08
0
06
0
03
0
3
07
0
63
0D
1
0A
34
1
72
0
(a)TL.B(4路组相联):4组,16个页表项
虚页号 页框号 有效位
行索引
标记
有效位
字节 3
字节 2
字节1
字节 0
00
01
02
03
04
05
06
07
08
09
0A
0B
oC
0D
0E
0F
08
1
03
1
14
1
02
1
0
16
1
0
07
1
13
1
17
1
09
1
0
19
1
0
11
1
0D
1
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
19
1
12
56
C9
AC
—
0
1B
1
03
45
12
CD
—
0
一
一
一
32
1
23
34
C2
2A
0D
1
46
67
23
3D
0
16
1
12
54
65
DC
24
1
23
62
12
3A
0
2D
1
43
62
23
C3
一
0
12
1
76
83
21
35
16
1
A3
F4
23
11
33
1
2D
4A
45
55
0
(b)部分页表(开始16项)
(c)L.1数据 cache;直接映射,共16行,块大小为4B
请问(假定图中数据都为十六进制形式):
(1)虚拟地址中哪几位表示虚拟页号?哪几位表示页内偏移量?虚拟页号中哪几位表示TL.B标记?
哪几位表示 TLB索引?
(2)物理地址中哪几位表示物理页号?哪几位表示页内偏移量?
(3)主存物理地址如何划分成标记字段、行索引字段和块内地址字段?
(4)CPU从地址067AH中取出的值为多少?说明CPU读取地址067AH中内容的过程。
<!-- page: 290 -->
第
章
8
系统互连及输入输出组织
输入输出组织主要用于控制外设与内存、外设与CPU 之间进行数据交换。它是计算
机系统中重要的软、硬件结合的子系统。通常把外部设备及其接口、I/O控制部件以及I/O
软件统称为输入输出系统。输入输出组织要解决的问题是对各种形式的信息进行输入和输
出的控制。实现输入输出功能的关键是要解决以下一系列的问题:如何在 CPU、主存和外
设之间建立一个高效的信息传输“通路”;怎样将用户的I/O 请求转换成对设备的控制命
令;如何对外设进行编址;怎样使CPU方便地寻找到要访问的外设;I/O硬件和1/O软件如
何协调完成主机和外设之间的数据传送等。
本章将围绕以上这些问题,重点介绍常用的外部设备、I/O接口的功能和结构、外部设
备的编址和寻址,以及主机和外设间的互连及其数据传送的各种输入输出控制方式。
8.1外部设备的分类与特点
输入输出设备(又称外围设备或外部设备,简称外设)是计算机系统与人或其他机器之
间进行信息交换的装置。输入设备的功能是把数据、命令、字符、图形、图像、声音或电流、电
压等信息,以计算机可以接收和识别的二进制代码形式输入计算机中,供计算机进行处理。
输出设备的功能是把计算机处理的结果,变成人最终可以识别的数字、文字、图形、图像或声
音等信息,然后播放、打印或显示输出。
8.1.1外设的分类
外设按信息的传输方向来分,可分成输入设备、输出设备与输入/输出设备3类。
(1)输入设备:包括键盘、鼠标、触摸屏、跟踪球、控制杆、数字化仪、扫描仪、手写笔、光
学字符阅读机等,这类设备又可分成两类:媒体输入设备和交互式输入设备。媒体输入设
备有光学字符阅读机、扫描仪等,这些设备把记录在各种媒体上的信息送入计算机,一般采
用成批输入方式,一次成批输入一块数据,输入过程中不需操作者干预,因此这类设备属于
成块传送设备;交互式设备有键盘、鼠标、触摸屏、手写笔、跟踪球等,这些设备由操作者通过
操作直接输入信息。
(2)输出设备:包括显示器、打印机、绘图仪等。将计算机输出的数字信息转换成模拟
信息,送往自动控制系统进行过程控制的数模转换设备也可以视为一类输出设备。
<!-- page: 291 -->
计算机组成与系统结构(第3版)
274
(3)输入/输出设备:包括磁盘驱动器、光盘驱动器、CRT终端、网卡之类的通信设备
等。这类设备既可以输入信息,又可以输出信息。
外设按功能来分,可分成人机交互设备、存储设备和机-机通信设备3种。
(1)人机交互设备:用于用户和计算机之间交互通信的设备,如键盘、鼠标等。大多数
这类设备与主机交换信息以字符为单位,所以又称为字符型设备或面向字符的设备。
(2)存储设备:这类设备用于存储大容量数据,作为计算机的外存储器使用,如磁盘驱
动器、光盘驱动器等。这类设备与主机交换信息时采用成批方式,以几十、几百甚至更多字
节组成的信息块为单位,因此属于成块传送设备。
(3)机-机通信设备:主要用于计算机和计算机之间的通信,如网卡、调制解调器、数/模
和模/数转换设备等。
当然,外设的分类还有其他方式,例如,按所处理信息的形态来分,可分成处理数字和文
字的设备、处理图形与图像的设备以及处理声音与视频的设备等,这里不再赘述。
8.1.2外设的特点
外设种类繁多,性能各异,但归纳起来有以下几个特点。
(1)异步性。外设与CPU之间是完全异步的工作方式,两者之间无统一的时钟,且各
类外设之间工作速度相差很大,它们的操作在很大程度上独立于CPU,但又要在某个时刻
接受 CPU的控制,这就势必造成输入/输出操作相对CPU时间的任意性与异步性。必须
保证在连续两次CPU和外设的交往之间,CPU仍能高速地运行它自己的程序,以达到
CPU与外设之间、外设与外设之间的并行工作。
(2)实时性。一个计算机系统中,可能连接了各种各样类型的外设,且这些外设中有慢
速设备,也有快速设备,CPU必须及时按不同的传输速率和不同的传输方式接收来自多个
外设的信息或向多个外设发送信息,否则高速设备可能丢失信息。
(3)多样性。由于外设的多样性,它们的物理特性差异很大,信息类型与结构格式多种
多样,这就造成了主机与外设之间连接的复杂性。为简化控制,计算机系统中往往提供一些
标准接口,以便各类外设通过自己的设备控制器与标准接口相连,而主机无须了解各特定外
设的具体要求,可以通过统一的驱动程序来实现对外设的控制。
*8.2常用输入输出设备
最常用的输入设备是键盘与鼠标,相对而言它们比较简单。最常用的输出设备是打印
机与显示器。
*8.2.1键盘
键盘是计算机不可缺少的最常用的输入设备,用户通过键盘可向计算机输入字母、数字
和符号。键盘的电路板中包含键盘控制逻辑,由逻辑电路或单片机组成,键盘上每个按键发
出的信号由电路板转换为二进制代码,然后通过键盘接口送入计算机中。
按键的排列是一个m×n的二维阵列,每个按键对应该阵列中的一个位置。键盘采用
“按列扫描、接地检查”的方式进行工作。具体过程是:键盘电路板内的单片机每隔 3~5ms
<!-- page: 292 -->
系统互连及输入输出组织
对按键矩阵的各列进行顺序扫描,被扫描列接“地”,其他列接高电平。若此时被扫描的列中
正好有某个键被按下,则相应的行和列被接通,因而按键所在行输出变低电平,其他行输出
为高电平。如图8.1所示,当扫描最右边一列时,该列第二行的A键被按下,所以,第二行的
输出为低电平。此时,单片机可根据扫描的列号和输出为低电平的行号得到按键的位置,位
置信息称为按键的“扫描码”或“位置码”。
+5Vo-
+5Vo-
+5Vo
+5Vo-
+5Vo
R
R
R
R
R
人
人
人
人
人
①
0
④
0
①
①
将每一行
的状态读
入单片机
“此列被扫描时单片机
向此列送低电平
图8.1 按键矩阵与扫描码的形成
根据键盘输入主机的信息不同,键盘分成编码键盘和非编码键盘两类。编码键盘能将
单片机得到的位置码转换成相应的ASCII码送入主机;而非编码键盘送到主机的信息是位
置码,由键盘中断服务程序完成将位置码转换成ASCⅡ码,目前的PC大多用这种键盘。
键盘中的单片机除了完成按键扫描和生成扫描码的功能之外,它还将扫描码转换成串
行形式发送给主机,并具有消除抖动、扫描码缓冲和自动重复等功能。键盘所发出的串行数
据由1位起始位、8位数据位、1位奇偶校验位和1位停止位组成。主机的键盘控制电路接
收到这些串行数据后,去掉起始位、校验位和停止位,将8位数据通过串-并转换,形成并行
数据送入缓冲寄存器,然后向CPU发出键盘中断请求,CPU响应该中断后,由键盘中断服
务程序把扫描码转换成 ASCII码,然后送入主存中的键盘数据缓冲区。
*8.2.2打印机
打印机是计算机系统中最基本的输出设备。目前使用的打印机主要有针式打印机、激
光打印机和喷墨打印机3种。针式打印机是一种击打式打印机;而激光打印机和喷墨打印
机则是非击打式打印机。
1.击打式打印机
击打式打印机是最早研制成功的计算机打印设备,它以机械力量击打字锤从而使字模
隔着色带在纸上打印出字来。按字锤或字模的构成方式来分,又可以分成整字形打印设备
和点阵打印设备两类。点阵式打印设备是利用打印头中的多根印针经色带在纸上打印出点
阵字符的印字设备,又称针式打印机。目前有7针、9针、24针或48针的印字头。这类打印
设备相对于整字形打印设备,其机械结构简单、印字速度快、噪声小、成本低,目前在银行、证
券等行业的票据打印中广泛使用。
2.非击打式打印机
激光打印机印刷速度快、印字质量好、噪声低、分辨率高、印刷输出成本低,这是目前应
用最广泛的一种非击打式打印机。
第8章
275
<!-- page: 293 -->
计算机组成与系统结构(第3版)
276
激光印字机由打印机控制器和打印装置两部分组成。打印机控制器一般由功能较强的
处理器、缓冲存储器以及相应的辅助电路构成,负责与主机的通信,解释主机送来的打印语
言(包括打印机控制命令、页面格式命令、字体处理命令、图形命令等),格式化打印内容(如
纸张尺寸、边界设定、字符的大小与位置等),进行光栅化处理(把经过格式化的页面数据转
换成点阵数据)等,然后将打印内容送到打印装置进行输出。
喷墨打印机也是一种非击打式打印机,它利用喷墨头喷射出可控的墨滴,从而在打印纸
上形成文字或图片,它也是目前应用较多的一种打印输出设备。
过去,打印机与主机的接口主要是25芯的并行口,不支持即插即用,带电插拔时,一不
小心就会烧坏机器,很不方便。如今,大多数激光打印机和喷墨打印机都已经采用USB接口
和主机连接,高速打印机也可以用小型计算机系统接口(small computer system interface,
SCSI)和主机相连。
3.打印机与主机的连接
打印机通过打印控制器或打印适配器与主机连接,打印控制器由以下基本部件组成。
(1)数据锁存器:用于暂存CPU送来的打印数据。打印数据可以送入打印机缓冲器
准备打印,也可以回送 CPU以便进行检测。
(2)命令译码器:对CPU送来的命令进行译码,产生打印控制器内部使用的命令,如
数据传输方向、读数据、写数据、读控制、写控制和读状态等。
(3)控制锁存器:锁存CPU送来的控制命令,如初始化、选通、自动走纸等。这些命令
也可以回送 CPU以便检测。
(4)状态锁存器:保存打印机送来的状态信息,如打印机忙、缺纸、联机、认可和出错
等,以供CPU 随时检测使用。
图8.2 为打印机与主机的连接示意图。打印控制器与CPU之间的连接有数据线(发送
或接收数据、状态、命令字节)、地址线(选择打印控制器中寄存器的地址)和中断请求信号
(INT)等。打印控制器与打印机之间若用25芯并口连接的话,则有8位数据线D0~D7,打
印控制器送给打印机的初始化、选通、自动走纸等命令线,以及打印机回送打印控制器的反
映打印机目前状态的忙、缺纸、联机、出错、认可等信号线。
打印控制器
CPU
数据
地址
INT
数据锁存器
命令译码器
控制锁存器
状态锁存器
数据 D0~D7
初始化、选通、自动走纸
忙、缺纸、联机、出错、认可
打印机
图 8.2 打印机与主机的连接
打印机初始化主要是清除打印机缓冲和初始化打印机动作(如打击头回到起始位置
等)。CPU输出一个字符到打印控制器的数据锁存器后,要先判断打印机状态是否是“忙”。
只有当打印机不忙时,CPU才会发送选通信号,使打印机自动将打印数据从数据锁存器取
到自己的数据缓冲中。当打印机的数据缓冲中接收到一行数据后(以回车或换行符结束),
打印机才真正完成打印动作。
<!-- page: 294 -->
系统互连及输入输出组织
*8.2.3显示器
显示器是用来显示数字、字符、图形和图像的设备,由显示器(也称监视器)和显示控制
器组成,是计算机系统中最常用的输出设备之一。计算机使用的显示器主要分为两种:阴
极射线管(CRT)显示器,以及目前流行的LCD液晶显示器。
1.CRT显示器
早期常用的显示器是CRT显示器。CRT显示器由阴极射线管(CRT)、亮度控制电路
(控制栅)及扫描偏转电路(水平/垂直扫描偏转线圈)等部件构成。
CRT显示器有3个电子枪,射出的电子流必须精确聚集,否则就得不到清晰的图像显
示。因此,CRT显示器可能会因聚焦不准而造成图像模糊;此外,它还有体积大、能耗高的
缺点。目前CRT显示器已经逐步被液晶显示器所取代。
2.LCD 液晶显示器
液晶显示器的基本原理是基于液晶如下的物理特性:液晶通电时会改变其排列次序,
从而影响光线的通过。
因为每个液晶单元都是独立的开和关,不存在聚焦问题,因此,LCD屏幕上的图像非常
清晰;同时,LCD显示器不需要采用CRT显示器那样的光栅扫描,因此也没有屏幕闪烁问
题。由于具有体积小、耗电低、不闪烁等优点和良好的综合性能,LCD显示器目前已广泛应
用于各类计算设备中。
通常,显示器工作时有两种模式:一种是字符模式,显示存储器(简称显存、VRAM,也
称刷新存储器)中存放的是字符的编码(ASCII码或汉字代码)及其属性(如加亮、闪烁等),
其字形信息存放在字符发生器中;另一种模式是图形模式,此时每一字符的点阵信息直接存
储在显示存储器中,字符在屏幕上的显示位置可以定位到任意点。显示彩色或单色多级灰
度图像时,每一个像素需要使用多个二进位来表示,每个像素对应的二进位数称为颜色深
度。例如,若颜色深度为8位,则可以有256色;若颜色深度为24位,则可有16M种颜色
(称为真彩色)。在图形显示模式下,显示控制器(CRTC)除了完成前述的两个基本功能外,
还能实现画图功能。显示控制器接收并完成CPU送来的画图命令,将结果写入显存;同
时,显示控制器读出显存的内容,经并/串变换和D/A转换后,送显示器R、G、B3个不同的
颜色控制信号,从而在屏幕上显示出彩色图形。显示控制器的功能越来越强,除了能完成二
维画图命令以外,还具有三维图形显示功能。它可以集成在主板上,也可以以图形显示卡
(简称显卡)的方式插在主板扩充槽中。
显卡的核心是绘图处理器(graphics processing unit,GPU)。早期的绘图功能都由
CPU在内存中完成,然后将生成的图像位图从内存传送到显存中。这种方案显然加重了
CPU的工作量,并且绘图速度慢。目前显卡中的GPU专门用来进行绘图,它有一组可高速
执行的适用于图像和图形处理的指令,如数据块传送、基本图形绘制、区域填空、图案填空、
图形缩放、颜色转换等。由于采用专用处理器实现,因此图形操作速度快,并且大大减轻了
CPU的负担。
第8章
277
<!-- page: 295 -->
计算机组成与系统结构(第3版)
278
8.3外设与 CPU 和主存的互连
计算机由CPU、主存和各种I/O外部设备组成。计算机的所有功能都是通过CPU执
行指令实现的。在指令执行过程中,CPU、主存和外设之间要不断交换信息(包括数据、指
令和中断向量等),因此,可以说计算机所有功能的实现,归根结底是各种信息在计算机内部
的各部件之间进行交换的过程。要进行信息交换,必须在部件之间构建通信线路,通常把连
接各部件的通路的集合称为互连结构。
8.3.1总线的基本概念
部件之间的互连方式有两种,一种是各部件之间通过单独的连线互连,这种方式称为分
散连接;另一种是将多个部件连接到一组公共信息传输线上,这种方式称为总线连接。总线
连接结构的两个主要优点是灵活和成本低。它的灵活性体现在新部件可以很容易地加到总
线上,并且部件可以在使用相同总线的计算机系统之间互换。因为一组单独的连线可被多
个部件共享,所以总线的性价比高。总线的主要缺点是它可能产生通信瓶颈。
总线是计算机内数据传输的公共路径,用于实现两个或两个以上部件之间的信息交换。
计算机系统中有多种总线,它们在各个层次上提供部件之间的连接和信息交换通路。例如,
在处理器核内部各元件之间连接的总线为核内总线,可以连接核内各寄存器、ALU、指令部
件等。
系统总线指连接处理器芯片、存储器芯片和各种I/O模块等主要部件的总线,通常所
说的总线是指这类在系统主要模块之间互连的总线。
系统总线通常由一组控制线、一组数据线和一组地址线构成。也有些总线没有单独的
地址线,地址信息通过数据线来传送,这种情况称为数据线和地址线复用。
数据线用来承载在源部件和目的部件之间传输的信息,这个信息可能是CPU 和主存
之间交换的数据或从主存取出的指令,也可能是CPU向I/O模块发出的控制命令或从I/O
模块收集到的状态信息。如果数据线和地址线复用的话,数据线上也可以传送地址信息。
地址线用来给出源数据或目的数据所在的主存单元或1/O模块的地址。地址线是单向
的,总是由CPU将地址信息送到地址线,随后传送给CPU要访问的主存储器或I/O模块。
控制线用来控制对数据线和地址线的访问和使用。控制线用来传输定时信号和命令信
息。除地址线和数据线以外的通信线都称为控制线,如用于传送时钟、复位、总线操作控制、
总线请求和总线回答等信号的传输线。
传统的总线大多是同步总线,它采用公共的时钟信号进行定时。挂接在总线上的所有
设备都从时钟线上获得定时信号。同步总线的传输协议非常简单,只要在规定的第几个时
钟周期内完成特定的操作即可。例如,对于处理器通过总线访问存储器的操作来说,可以规
定以下“存储器读操作”协议:主控设备(即处理器)在第1个时钟周期发送地址和存储器读
命令(可利用控制线表明请求的类型为“存储器读”),从设备(即存储器)总是在第5个时钟
周期将数据放到总线上作为响应,处理器也在第5个时钟周期从数据线上取数据。
同步通信方式有两个缺点:第一,总线定时以最慢设备所用时间为标准,因此同步总线
适合于存取时间相差不大的多个功能部件之间的通信;第二,由于时钟偏移问题,导致同步