《计算机系统:核心概念及软硬件实现(原书第4版)》——1.2 硬件

简介:

本节书摘来自华章计算机《计算机系统:核心概念及软硬件实现(原书第4版)》一书中的第1章,第1.2节,作者:[美] J. 斯坦利·沃法德(J. Stanley Warford)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 硬件

我们构建计算机是为了解决问题。早期的计算机主要解决数学和工程问题,后来的计算机强调商业应用的信息处理,今天,计算机也控制各种诸如汽车发动机、机器人和微波炉之类的机器。计算机系统通过接收输入、处理输入并生成输出来解决这些领域的问题。图1-8说明了计算机系统的功能。

image


计算机系统由硬件和软件组成。硬件(hardware)是系统的物理组成部分,一旦设计好,更改它会很困难且昂贵。软件(software)是一组程序,它指示硬件进行工作,比硬件容易修改。与只能解决一种问题的专用机器相比,计算机的价值在于它是可以解决许多不同问题的通用机器。通过给系统提供不同的指示,即不同的软件,用相同的硬件可以解决不同的问题。
每台计算机有4个基本的硬件组件:
输入设备。
输出设备。
主存储器。
中央处理单元(CPU)。
图1-9以框图的形式展示了这些组件。方框之间的线代表信息流。总线是一组连接组件的线路,信息通过总线(bus)从一个组件流向另一个组件。处理过程是在CPU和主存储器(简称主存)中进行的。图1-9中的各个组件通过总线互连的结构是常见的,但是也有其他可能的结构。

image


通常根据计算机硬件的相对物理大小对其进行分类:
小个人计算机。
中工作站。
大大型主机。
对于大型主机,仅仅CPU就能占据一个整个的机柜,它的输入/输出(I/O)设备和存储器可能会填满一个房间。个人计算机可以小到放在桌子上或者公文包里。随着技术的发展,过去可能只能在大型计算机上做的处理变得可能在更小的计算机上进行了。现在,个人计算机可以做很多过去只有工作站或大型主机才能做的工作。
上述分类是基于计算机的物理大小,而不是存储器大小。计算机系统用户通常更关心存储器的大小,因为它是一个更直观的指标,指明硬件可以执行的有效工作量。计算速率是另一个对用户来说很重要的特性。一般来说,用户希望他的计算机CPU运算速率快并且存储容量大,而输入/输出设备和主存占用的物理空间又要小。
因此,当计算机科学家研究问题时,他们关心的是空间和时间—计算机系统内存储问题所需的空间和解决问题所需的时间。他们通常用如图1-10a所示的公制前缀来表示空间或时间的大小数量。

image

例1.1在图1-9中,假设通过总线从一个组件传送一些信息到另外一个组件需要4.5微秒(μs),(a)该传送需要多少秒?(b)1分钟内能发生多少次传送?
(a)从图1-10a可知,时间4.5微秒是4.5×10-6或者0.000 004 5秒。(b)因为1分钟等于60秒,所以1分钟内可发生的传送次数是(60秒)/(0.000 004 5 秒/传送),即13 300 000次传送。注意,由于题目给出的原始数据是2位有效数字,所以结果的有效数字不能超过2位或3位。      □
图1-10a说明在公制系统中,前缀kilo-表示1000,mega-表示1 000 000。但是,在计算机科学中,kilo-表示210或者1024。1000 比1024小不到3%,因此你可以把计算机科学中的kilo-理解为1000,尽管它稍微大一点。这种方式同样适用于mega-和giga-,如图1-10b所示。这时,近似值的偏差更大一些,但是对于mega-,偏差仍在5%以内。采用这些看起来奇怪的惯例与在指令集架构层(ISA3层)的信息表示有关。
1.2.1输入设备
输入设备(input device)把从外部世界来的信息传送到计算机的存储器。图1-11展示了数据通过总线从输入设备到存储器的路径。输入设备的类型有很多种,包括:
键盘。
磁盘驱动器。
USB闪存驱动器。
鼠标设备。
条形码读码器。
当在键盘上敲击一个键时,你将一个字符发送到主存,这个字符以8位电子信号序列的形式存储在存储器中。序列中的每一位信号称为一个二进制数字(binary digit)(或者比特,bit(有时也译作“位”))。这个信号可以是高电压,用符号1表示,或是低电压,用符号0表示。8位信号序列组成的字符叫作1字节(byte),如图1-12所示。
办公室文员在一台计算机键盘上进行输入是在应用层(App7层),这是计算机系统结构中的最高抽象层次。他们不需要知道他们输入的每字符的位模式(bit pattern)。而指令集架构层(ISA3层)的程序员必须知道位模式。现在,你应该记住数据的一个字节对应键盘的一个字符。
image

例1.2一个打字员以每分钟35个单词的速度在一台计算机键盘上输入文本。如果平均每个单词的长度是7个字符,那么每秒有多少比特被传送到主存呢?一个空格键是一个字符,假设平均每个单词后有一个空格。
包括空格,每个单词是8个字符,每秒输入的字符数等于(35单词/分钟)×(8字符/单词)×(1分钟/60秒)=4.67字符/秒。因为一个字节存储一个字符,一个字节包含8比特,所以比特率是(4.67字符/秒)×(1字节/字符)×(8比特/字节)=37.4比特/秒。  □
字节的缩写是大写字母B,比特的缩写是小写字母b。因此,例1.2中的结果可以写作37.4 b/s,再举一个例子,你可以把12 000字节写作12 KB。
磁盘驱动器(disk drive)是计算机的一部分,我们从磁盘提取数据或者把数据写到磁盘上。磁盘驱动器包括一个使磁盘旋转的发动机,一个轴或轮毂夹用于把磁盘固定在发动机上,一个或多个用来探测磁盘表面单个比特的读/写头。
硬盘被永久固定密封在磁盘驱动器中。通常,个人计算机的存储容量为250 GB~1 TB之间,工作站的存储容量为1 T~100 TB,大型主机的容量大于100 TB。硬盘驱动器通过在一个轴上堆叠数个盘片的方式来实现高容量,每个磁盘表面有一个专门的读/写头。
光盘最初是作为音频压缩盘流行起来的,不过很快就用于为计算机存储数据。光盘的记录技术是基于激光的,激光可以形成高度聚焦的单色光束。光盘上有嵌入式的纹理,它从中心螺旋状地盘出,上面有激光束记录的凹凸序列,每个凹或者凸代表被光束反射所探测到的比特信息。一张CD的典型存储容量是650 MB。DVD当初设计用来存储多通道伴音的视频信息,现在也被计算机工业采用,一张DVD的典型存储容量是4.7 GB。
例1.3要想把硬盘上20 GB信息传送到一组CD上,需要多少张CD?
硬盘上确切的字节数是20×10 737 412 824,每片CD上的字节数是650×1 048 576。然而,如果你满足于近似值,你可以估计硬盘上是20×109字节,每片CD是650×106字节。需要的CD数量是(20×109)/(650×106)=31张。   □
USB闪存驱动器(flash drive),也称为拇指驱动器,其实并不是一个磁盘驱动器。它是一个没有移动部件的固态设备,用来模仿硬盘驱动器的行为。缩写USB表示通用串行总线(Universal Serial Bus),它定义了许多硬盘驱动器和计算机系统之间的连接协议。当你把一个拇指驱动器插在计算机上时,对计算机来说,它就好像一个硬盘驱动器一样。因为拇指驱动器没有移动部件,所以它比硬盘驱动器要耐用,也不像硬盘驱动器,它是可移动的,存储容量可以达到大约16 GB。
鼠标(mouse)是一种非常常用的手持输入设备。光学鼠标内部是一个小的发光二极管,它向下在桌面或者鼠标垫上投射光束,光反射回一个每秒采样1 500次的传感器。鼠标里有一个数字信号处理器,它像一个被编程为只处理一个任务的微小计算机:探测桌面或者鼠标垫图像中的模式,并确定从上次采样到现在它们移动了多远。鼠标中的这个处理器从模式中计算鼠标的方向和速度,然后把这些数据发送到个人计算机,计算机再在显示器上显示光标图像。
条形码读码器(bar code reader)是另一种高效的输入设备。最常见的条形码也许就是超市商品上的通用产品代码(Universal Product Code,UPC)(见图1-13)。UPC符号中的每个数字有7个垂直的数据元素,每个数据元素是白色或者黑色。条形码读码器中的光电管检测明暗区域并把它们转换为比特,白色元素被读为0,黑色元素被读为1。图1-14展示了图1-13中UPC符号右半部分中两位数字的比特与黑白区域之间的对应关系。
image

图1-15给出了UPC中十进制数值和二进制数值之间的对应关系,左半部分和右半部分中的字符代码是不一样的。一个黑色的竖条是由1~4个相邻的黑色区域构成,每个十进制数字都含有两个黑条和2个白色的空间。左半部分的字符都始于白条终于黑条,右半部分的字符都始于黑条终于白色空间;每个左半部分的字符都有奇数个1,而每个右半部分的字符有偶数个1。

image


超市的收银员在最高的抽象层次工作,他们不需要知道UPC符号的细节,只知道要录入UPC符号,如果没有听到确认的“哔”声,那就是发生了录入错误,必须重新扫描条形码。然而在较低层次的程序员必须知道编码的细节。例如,他们的程序必须检测左半部分每个字符的1或者黑色元素的个数,如果左半部分的字符1的个数是偶数,那么程序就不能发布确认的哔声。
1.2.2输出设备
输出设备(output device)从计算机的存储器传送信息到外部世界。图1-16展示了数据从主存到输出设备的通路。输出时,数据经过与输入设备使用的一样的总线。输出设备包括:
磁盘驱动器。
USB闪存驱动器。
显示屏(screen)。
打印机。
需要注意的是,磁盘驱动器和USB闪存驱动器既可以作为输入设备也可以作为输出设备。当磁盘用于输入时,这个过程叫作读;当磁盘用于输出时,这个过程叫作写。

image


显示屏是一种类似于电视机屏幕的视觉显示设备,它可以是阴极射线管(CRT)或平板。显示器是与键盘、CPU分开包装的。终端(terminal)是显示器加键盘。终端虽然好像是但其实并不是一台完备的通用个人计算机。终端与工作站和大型主机通信,没有这些后台设备,终端是没有用的。另一方面,个人计算机是完备的,就算不连接到更大的机器也能处理信息。个人计算机也能像终端一样和其他机器通信。在计算机发展的早期,一台标准终端显示屏有24行文本,一行最多80个字符。随着图形用户界面的出现,显示屏的大小不再是固定的文本行数,因为窗口和对话框的大小可以是各种各样的。不过,个人计算机上的终端仿真器程序在代表终端的窗口中有时遵循24行80字符的老标准。
显示屏上的单个字符实际上是由一个矩形点阵网格组成,每个点称为像素(pixel),它代表图像的元素。在黑白显示屏上,一个像素或明或暗。矩形网格中亮像素的模式形成了字符的图像。图1-17显示了一个形成字符‘B’的5列7行的像素网格。更高质量的显示屏在矩形网格中有更多的像素来形成更平滑的字符图像。你看在9×13这样的区域中,‘B’的图像是多么清晰。

image

打印机(printer)在性能和价格方面的差别很大。喷墨打印机的工作原理和显示屏上显示像素是一样的。当打印头移动通过纸张时,在适当的时刻向纸面喷射小的墨滴,形成所期望的图像。由计算机程序来控制释放墨水的时机。和显示屏一样,形成单个字符的点的数量越多,打印出来的图像质量就越高。许多打印机有多种运行模式,从低质量高速度到高质量低速度。
页面打印机是一种高质量的输出设备。大多数页面打印机用激光束在页面上形成图像。页面打印机的成像系统也使用像素,但是像素间隔足够紧密到不易察觉。一台常用的桌面激光打印机每英寸有600或1 200像素,一台每英寸600像素的打印机每平方英寸有600×600(即360 000)像素,而商用排版机器每英寸有2 400像素或者更多。
1.2.3主存储器
主存储器(main memory,简称为主存)存储被处理的数据和处理数据的程序。和磁盘一样,主存也是用字节来度量其容量的。小的个人计算机通常有1 GB主存,大的能够达到8 GB;工作站通常有大于8 GB的主存;而大型主机有数百GB的主存。
主存的一个重要特性是,它是易失的。即,如果计算机的供电被有意或无意地中断,那么主存中的信息就会丢失,而磁盘不会这样。你可以从一台计算机上拔掉USB闪存,关掉机器,第二天回来时信息仍然在你的闪存里。
主存的另一个重要特性是,它的访问方式是随机的。实际上,组成主存的电子组件经常称作随机访问存储器(Random Access Memory,RAM)电路。不像硬盘驱动器,如果你刚从主存的一端获得一些信息,你可以不用经过中间的信息立刻随机地从另一端得到信息。
1.2.4中央处理单元
中央处理单元(Central Processing Unit,CPU)包括控制计算机所有其他部分的电路。它有自己的存储器,称为寄存器(register)。CPU电路中也永久固化有一组指令。这些指令完成的工作有:从存储器获取信息到寄存器、加、减、比较、把信息从寄存器存储回存储器等。指令执行的顺序不是固定不变的,这是由第三层的机器语言编写的程序所决定的。
按照人的标准,机器指令的执行是很快的。CPU的速度一般用GHz(即千兆赫兹)来度量。1 Hz是每秒1条指令,因此,1 GHz就是每秒10亿条指令。
例1.4假设CPU的频率是2.5 GHz,执行一条指令的平均时长是多少?
2.5 GHz表示每秒2.5×109条指令,那么每条指令的时长是1/(2.5×109)=0.4×10-9秒或400皮秒。 □
为了处理存储在主存中的数据,CPU必须首先把数据放到自己本地的寄存器中,然后处理这些数据,再把结果返回到主存。最终,数据必须传送到输出设备才能为用户所用。图1-18展示了一个完整作业的数据流。

image

相关文章
|
存储 C++ Python
《计算机系统:核心概念及软硬件实现(原书第4版)》——导读
这种方法为讨论计算机科学中的核心问题提供了一种很自然的环境。例如,本书介绍了HOL6层的结构化编程,可以和Asmb5层的非结构化编程的可能性进行对比。书中讨论了goto争议、结构化编程/效率之间的折中,给出了两个层次上语言的实际例子。
1830 0