软考教材分享:程序员教程
更新时间:2023-03-14 07:04:01 阅读量: 教育文库 文档下载
程序员 http://www.educity.cn/jiaocheng/zg14.html
程序员教程
第 1 章 计算机硬件基础
计算机硬件基础知识历来都是程序员考试的重点。从历年考试试题分数的分布来看,每年的分值都在十分左右。主要涉及到进制间的转换、数据表示、CPU的组成、存储器、校验方法和校验码、总线以及I/O设备等。本章在考纲中涉及到的考点如下:
(1)进制及转换:掌握并能应用二进制与十进制之间的相互转换以及二进制与十六进制之间的相互转换。
(2)数据的表示:掌握并能应用带符号定点数据的原码、反码以及补码的表示方法;理解浮点数的表示方法;掌握精度和溢出的概念;理解字符、汉字、声音和图像的表示方法。 (3)算术运算和逻辑运算:理解补码表示的定点数的加减运算;掌握基本的与、或、非逻辑运算。
(4)编码基础:掌握并能应用ASCII码的特点及编码计算、掌握并能应用奇偶校验码的特点及其计算、理解循环冗余码以及海明码的定义和构造。 (5)计算机的类型和特点:理解各种计算机的特点。
(6)中央处理器CPU:理解CPU的构成、常用的寄存器、指令以及指令系统的概念;理解指令的执行过程以及流水线、中断的概念。
(7)主存和辅存:理解各种存储介质的特点;理解Cache的概念、作用和基本构成;掌握主存的类型、容量和性能指标;掌握各种辅存设备的容量及其性能。
(8)I/O接口、I/O设备和通信设备:理解I/O接口的特点;程序查询方式、中断方式以及DMA方式的含义和特点;理解常见的I/O设备、通信设备的类型和特点;理解常见
程序员 http://www.educity.cn/jiaocheng/zg14.html
的I/O设备与主机的连接方法;掌握总线的概念、类型和特点;理解常见的通信设备的连接方法以及常见的连接介质的特点。
1.1 计算机组成
一个完整的计算机系统包括硬件系统和软件系统两部分,计算机硬件是计算机系统中所有实际物理装置的总称,计算机软件是指在硬件上运行的程序和相关的数据及文档。计算机系统的组成如图1-1所示。
图1-1 计算机系统组成示意图
1.1.1 计算机系统的硬件组成
自从1946年世界上出现第一台计算机以来,计算机软件系统和硬件结构都已经发生了很大的变化,但大多数计算机仍然基于冯·诺依曼结构,其硬件系统是由运算器、控制器、存储器、输入设备和输出设备五部分组成,它们通过系统总线互相连接,如图1-2所示,完成计算机的基本功能。其中运算器、控制器、以及相关的寄存器组,构成中央处理器(CPU),它是计算机系统的核心。
程序员 http://www.educity.cn/jiaocheng/zg14.html
图1-2 计算机的基本组成
1. 中央处理器
中央处理器主要由运算器、控制器和寄存器组三部分组成,其组成结构如图1-3所示。
图1-3 CPU组成结构图
(1)运算器。运算器是处理器的执行单元,主要包括算术逻辑部件(ALU)和一定数量的寄存器。加法是运算器的基本运算,在大多数中央处理器中,其它运算最终都可转化为加法运算。运算器的位数指的是运算器一次能对多少位数据作加法,是衡量中央处理器的一个重要指标。按照总线结构,运算器可以分成单总线结构运算器、双总线结构运算器和三总线结构运算器。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(2)控制器。控制器是中央处理器的核心。控制器每次从存储器中取出一条指令,对指令进行译码和测试,并产生相应的微操作控制信号,发给各个执行部件并控制它们,使整个计算机系统可以连续、有条不紊地工作。控制器的主要任务是控制CPU按照正确时序产生操作控制信号。
控制器通常由指令寄存器IR、指令译码器、程序计数器PC、时序电路、微操作信号发生器、状态\\条件寄存器PSW、堆栈和堆栈指针、总线控制逻辑等部件组成,其组成图如图1-4所示。
图1-4 控制器组成结构图
· 指令寄存器IR:存放正在执行的指令,以便在整个指令执行过程中,实现一条指令的全部功能控制。
· 指令译码器ID:又称操作码译码器,它对指令寄存器IR中的指令进行分析,确定指令类型、指令所要完成的操作以及寻址方式等,并产生相应的控制信号提供给微操作信号发生
程序员 http://www.educity.cn/jiaocheng/zg14.html
器。
· 程序计数器PC:又称指令计数器或指令指针(IP),在某些类型的计算机中用来存放正在执行的指令地址;在大多数机器中则存放将要执行的下一条指令的地址。
· 时序电路:以时钟脉冲为基础,产生不同指令相对应的周期、节拍、工作脉冲等时序信号,确定各种微操作的执行时间,从而实现机器指令执行过程的时序控制。
· 微操作信号发生器:它根据指令译码器ID产生的操作信号、时序电路产生的时序信号,以及各个功能部件反馈的状态信号等,产生执行指令所需的全部微操作控制信号,形成特定的操作序列,从而实现对指令的执行控制。
· 状态\\条件寄存器PSW:它保存指令执行完成后产生的条件码,记录了运算器、控制器、中断系统的重要状态或特征,例如运算结果是否溢出、是否被0除、是否有进位、是否关中断等。该寄存器每一位保存一个特征,其典型应用是作为跳转指令的判断条件。 · 堆栈和堆栈指针:堆栈是一组寄存器或者处于存储器内的特定区域,由于寄存器数量有限,所以大多数系统采用了存储器的软件堆栈,堆栈顶部的指针称为堆栈指针。 · 总线控制逻辑:接收各部件发送过来的总线请求信号,根据相应的仲裁措施,把总线的使用权分配给各个部件。总线是系统性能的瓶颈,一个好的总线控制逻辑,可以大幅提高总线利用率,充分发挥各个部件的功能。 指令的执行过程分为如下几个步骤:
· 取指令:控制器按照程序计数器PC中保存的地址从内存中取出将要执行的指令。 · 分析指令:把该指令送给指令译码器ID,ID对指令进行译码和测试,然后根据指令的功能产生相应的操作控制信号,向有关部件发出控制命令。
· 执行指令:根据译码器产生的操作控制信号以及状态/条件(PSW)寄存器的状态,
程序员 http://www.educity.cn/jiaocheng/zg14.html
由时序电路形成微操作时序信号,然后再由微操作信号发生器产生一系列CPU内部和外部控制信号,这些信号驱动相关部件运行,从而实现指令的具体功能。
· 形成下一条指令地址:若是顺序执行指令,则程序计数器自动加\形成下一条指令的地址;若是转移指令,则根据转移条件确定是否把转移地址送入程序计数器。 程序由指令构成,通过逐一执行上述指令,计算机就可以完成程序指定的任务。 2. 寄存器组
寄存器组是CPU内部的临时存储单元,即可以存放数据和地址,又可以存放控制信息或CPU工作状态。在存储器体系结构中,寄存器组距离CPU最近,执行速度最快,适当增加寄存器数量,可以减少访问内存的次数,提高其运行速度。按照存放数据的不同,CPU中的寄存器可以分为以下类型:
(1)累加器:是一个数据寄存器,在运算过程中暂时存放被操作数和中间运算结果,它不能用于长时间地保存一个数据。
(2)通用寄存器组:CPU中的一组工作寄存器,运算时暂时存放操作数或地址,可以减少CPU与外部的数据交换,从而加快CPU的运行速度。
(3)标志寄存器:又称为状态寄存器,记录运算中产生的标志信息,它的每一位都可以单独使用,称为标志位。标志位反映了ALU当前工作状态,可以作为跳转指令的判断条件。常用的标志位包括以下几种:
·a 进位标志位(C):当运算结果最高位产生进位时置\ ·b 零标志位(Z):当运算结果为零时置\ ·c 符号标志位(S):当运算结果为负时置\ ·d 溢出标志位(O):当运算结果溢出时置\
程序员 http://www.educity.cn/jiaocheng/zg14.html
·e 奇偶标志位(P):当运算结果中\的个数为偶数时置\
·f 方向标志位(D):用于串处理,每次操作后若SI和DI减少,则置为\否则置为\
·g 中段标志位(I):开中断时置为\否则置为\
(4)指令寄存器:存放正在执行的指令,在指令执行过程中,该寄存器中的内容保持不变。
(5)地址寄存器:存放指令、数据区、堆栈的相关地址,包括程序计数器、堆栈指示器、变址寄存器、段地址寄存器等,主要用于指令和数据的定位。
(6)其它寄存器:根据CPU结构特点还有一些其它寄存器,例如:控制寄存器CR0、CR1、CR2,它的作用是切换实模式和保护模式;调试寄存器D0、D1、D2、D3……,它们可以作为调试器的硬件支持来设置条件断点;测试寄存器TR3、TR4、TR5、TR6,它们可以用于某些条件测试。 3. 存储器
存储器是存放二进制形式信息的部件,它用二进制形式的\或\存放程序和数据。从功能的角度,存储器可以分为以下三种:
(1)高速缓冲存储器(cache)。位于CPU和主存DRAM之间的高速小容量存储器,通常由高速SRAM组成,集中保存当前CPU要调用的内存数据,其存取速度接近CPU的工作速度,临时存放指令和数据。引入cache之后,可以缓解内存和CPU之间存在的速度瓶颈,加快程序运行速度。
(2)主存储器。主存储器简称主存,又叫内存,用来存储计算机当前正在执行的程序和处理的数据,主存储器目前一般由MOS半导体存储器构成,其优点是存取速度快,存储
程序员 http://www.educity.cn/jiaocheng/zg14.html
体积小,可靠性高,价格低廉;缺点是断电后存储器不能保存信息。
(3)辅助存储器。辅助存储器又称外存储器,包括磁带存储器、磁盘存储器及光盘存储器。它用于存放当前不使用的信息,其特点是存储容量大、可靠性高、价格低,在脱机情况下可以永久地保存信息。
一般而言,存储器速度、容量和价格三者之间相互矛盾。若要求存储器速度很高,则其容量就不可能很大,价格也不可能很低;若要求存储器容量很大,则其存取速度就不可能很高,成本也不会很低。为了较好地满足上述三方面的要求,有效的办法是采用不同形式的存储器构成存储器层次结构,使得在该存储体系中,速度接近最快的那个存储器,容量与容量最大的那个存储器相等,单位容量的价格接近最便宜的那个存储器。常用的存储器体系包括\寄存器-cache-主存-辅存-海量存储器\这五个层次。 4. 输入输出设备
计算机系统与人或其它设备之间进行信息交换的装置,所谓的输入和输出都是相对于主机而言的,二者的区别是信息流向不同。输入设备的功能是把数据、命令、图形、图像、声音以及电流、电压等信息,转换成计算机可以接收和识别的二进制代码,输入到计算机存储器中,以便进行数据处理。输出设备的功能是把计算机处理的结果,转换成为人最终可以识别的数字、文字、图形、图像和声音等信息,输出到外部存储介质上,并可以通过相关设备进行显示,以供人们分析和使用。
输入输出设备有多种分类方法,按照信息的传输方向来分,可以分成输入、输出与输入/输出三类设备。
1.1.2 计算机系统的软件组成
软件包括了使PC机运行所需要的各种程序、数据及其有关的文档资料。程序是完成某
程序员 http://www.educity.cn/jiaocheng/zg14.html
一任务的指令或语句的有序集合;数据是程序处理的对象及结果;文档是描述程序操作及使用的相关资料。功能主要包括下述四个方面:
(1)控制和管理计算机硬件资源,提高计算机资源的使用效率,协调计算机各组成部分的工作。
(2)向用户提供尽可能方便、灵活的计算机操作界面。 (3)为专业人员提供开发计算机应用软件的工具和环境。 (4)为用户完成特定应用的信息处理任务。
按照上述功能,计算机软件可以分为系统软件和应用软件两大类。如图1-5所示,硬件、软件、用户之间形成一种层次关系,即通过为硬件逐层地添加各类软件后,才能形成一个供用户使用的功能丰富而界面友好的计算机系统。
图1-5 计算机系统的层次构成
1. 系统软件
系统软件控制计算机的运行,管理计算机的各种资源,并用应用软件提供支持和服务的一类软件。系统软件的主要目的是方便用户,提高计算机使用效率,扩充系统的功能。通常包括:
(1)操作系统。操作系统是计算机硬件的第一级扩充,是软件中最基础和最核心的部
程序员 http://www.educity.cn/jiaocheng/zg14.html
分,任何其它软件都必须在操作系统的支持下才能运行。操作系统负责对计算机系统的各种资源(包括硬件和软件资源)进行统一控制、管理、调度和监督,合理地组织计算机的工作流程,其目的是提高各类资源利用率,方便用户使用,并为其它软件的开发提供必要的服务和相应的接口。操作系统种类繁多,常用的包括OS/2、UNIX、Linux、Windows、NetWare等。
(2)程序设计语言及其处理程序。从计算机发展史角度来看,程序设计语言可分为四类:机器语言、汇编语言、高级语言及第四代高级语言。
机器语言是由\、\构成的二进制指令代码,是一种面向机器的低级语言,其指令代码随CPU型号不同而不同,通用性差。通常不用机器语言直接编写程序。
汇编语言是一种与机器语言相当接近的符号语言,它用助记符代替操作码,用地址符号代替操作数,又称为符号语言,汇编语言通常依赖于特定计算机的指令集,也是一种面向机器的低级语言,不具有通用性和可移植性。
高级语言由各种有意义的词和数学公式按照一定的语法规则组成,更加接近于人们日常所使用的书面语言(英语),高级语言可分为面向过程的语言和面向对象的语言两种。 高级语言是\过程化语言\编码时要告诉计算机每一步应该\怎样做\程序员的编程任务还是很繁重。而第四代高级语言(4GL)编码时,仅仅需要告诉计算机\做什么\在一定程度上可以提高编码效率。
除了机器语言,其它语言计算机都不能直接执行,语言处理程序能把它们翻译成可直接执行的机器语言。翻译的方式有两种:解释方式和编译方式。
(3)数据库管理系统。从计算机软件系统的构成来看,数据库系统是介于用户和操作系统之间的一组软件,它实现了对共享数据的有效组织、管理和存取。按照数据模型的不同,
程序员 http://www.educity.cn/jiaocheng/zg14.html
数据库管理系统分为层次型、网状型和关系型三种。其中关系型数据库使用最广泛。 (4)实用程序与软件工具。实用程序是指一些日常使用的辅助性、工具性程序。软件工具指一类对软件开发特别有用的程序,它们可以用来帮助用户对其它程序进行开发、修复或者优化性能等。在整个软件开发生命周期中,包括系统分析、系统设计、项目管理、文档生成和质量保证中都需要软件工具的支持。 2. 应用软件
应用软件指的是软件公司或用户为解决各种不同具体应用问题而专门研制的软件。按照应用软件的开发方式和适用范围,可以分为两类:针对具体应用问题而定制的应用软件,通常称为定制软件;以及在许多行业和部门中可以广泛使用的软件,通常称为通用软件。
1.1.3 总线与接口
从物理上看,总线是一组传输公共信号的信号线的集合,使在计算机系统各部件之间传输地址、数据和控制信息的公共通路。它由一组导线和相关的控制、驱动电路组成。CPU通过总线实现读取指令,并实现与内存、外设之间的数据交换。
总线按功能分为地址总线(AB)、数据总线(DB)和控制总线(CB),AB位数决定了总线的寻址能力,DB位数与总线的数据传输能力有关,CB决定总线功能的强弱和适应性。
按照总线的物理位置,通常分为以下几类:
(1)芯片内总线:用于集成电路内部各部分的连接。 (2)元件级总线:用于一块电路板内各元器件间的连接。 (3)内总线:又称为系统总线,用于计算机各组成部分间的连接。
(4)外总线:又称为通信总线,用于计算机与外设或计算机之间的连接或通信。
程序员 http://www.educity.cn/jiaocheng/zg14.html
1. 内总线
内总线有专用内总线和标准内总线之分。内总线的性能直接影响着整个计算机系统的性能。自计算机发明以来,尤其是微型机诞生之后,内总线的标准已超过百条。常见的内总线标准如下:
(1)ISA.ISA是工业标准总线,它向上与更早的PC总线兼容。ISA总线是在PC总线62个插座信号的基础上,再扩充另一个36个信号的插座而构成的。
(2)EISA.EISA总线是在ISA总线的基础上发展起来的32位总线。该总线定义了32位地址线、32位数据线,以及其它控制信号线、电源线、地线等196个接点。总线传输速率可达33MB/s.EISA总线利用总线插座与ISA总线兼容,将插板插在上层为ISA总线,将插板插在下层为EISA总线。
(3)PCI.PCI总线是目前微型机上广泛使用的内总线。PCI总线有两种标准:适用于32位机的124个信号的标准和适用于64位机的188个信号的标准。PCI总线的传输速率至少为133MB/s,64位PCI总线的传输速率为266MB/s.PCI总线的工作与处理器的工作相互独立,也就是说PCI总线时钟与处理器时钟是独立的、非同步的。PCI总线上的设备是即插即用的。 2. 外总线
外总线的标准有七八十种之多,此处仅介绍下面几种:
(1)RS-232C.该总线是一条串行外总线,其主要特点是:传输线比较少,最少只需3条线(一条发、一条收、一条地线)即可实现全双工通信。传送距离远,用电平传送为15m,电流环传送可达千米。并有多种可供选择的传送速率,具有较好的抗干扰性。
(2)SCSI(小型计算机系统接口)。该总线是一条并行外总线,广泛用于连接软硬磁
程序员 http://www.educity.cn/jiaocheng/zg14.html
盘、光盘、扫描仪等。该接口总线早期是8位的,后来发展到16位。传输速率由SCSI-1的5MB/s到16位的Ultra2 SCSI的80MB/s.该总线上最多可接63种外设,传送距离可达20m.
(3)USB(通用串行总线)。该总线是1994年底由Compaq、IBM、Microsoft等众多公司联合发布的。近几年得到广泛应用。USB由四条信号线组成,其中两条用于传送数据,另外两条传送+5V容量为500mA的电源,可以经过集线器hub进行树状连接,最多可达五层,该总线可接127个设备。USB1.0有两种传送速率:低速1.5Mb/s,高速12Mb/s,USB2.0的传送速率为480Mb/s.该总线的最大优点是支持即插即用并支持热插拔。 (4)IEEE 1394.IEEE 1394由6条信号线组成,其中两条用于传送数据,两条传送控制信号,另外两条传送8~40V容量为1500mA的电源。该总线最大优点在于它支持即插即用并支持热插拔。 3. 总线的性能指标
总线的性能指标主要包含下述几个方面:
(1)总线的位宽。指的是总线能同时传送的数据位数,即常说的16位、32位、64位等。
(2)总线的工作频率。也称为总线的时钟频率,常以MHz为单位。它是指用于协调总线上各种操作的时钟信号的频率。
(3)总线的带宽。也称为总线的数据传输速率,指的是单位时间内总线上可传送的数据量,即常说的每秒钟传送多少个字节。用公式Q=W×F/N表示。其中,Q为总线的带宽,单位是MB/s;W为总线的数据宽度,单位为字节;F为总线工作频率,单位为MHz;N为传送一个数据所需的总线时钟周期个数。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(4)总线的寻址能力。指的是地址总线的位数及所能直接寻址的存储器空间的大小。一般地,地址线的位数越多,能寻址的地址空间越大。
(5)总线的握手协议。指的是总线上各个信号之间的时序关系,一般分为同步、异步和半同步三种。
(6)猝发传送。有些总线支持一种连续的、成块数据的传送,传送开始后,只需给出数据的首地址,然后连续地传送出多个数据,后继数据的地址默认为前数据地址加1,这种数据传送方式称为猝发传送。它可以实现一个时钟传送一个数据,故在总线宽度和总线时钟频率相同的情况下,支持猝发传送的总线传输率高于不支持猝发的总线。
(7)总线的负载能力。可简单理解为总线上所能挂接的设备的数目,由于总线上只有扩展槽能由用户使用。故一般是指总线上的扩展槽个数,即可连到总线上的扩展电路板的个数。 4. 接口
I/O设备在结构和工作原理上与主机有很大的差异,它们都有各自单独的时钟,独立的时序控制和状态标准。主机与外部设备工作在不同速度下,它们速度之间的差别一般能够达到几个数量级。同时主机与外设在数据格式上也不相同:主机采用二进制编码表示数据,而外部设备一般采用ASCII编码。因此在主机与外设进行数据交换时必须引入相应的逻辑部件解决两者之间的同步与协调、数据格式转换等问题,这些逻辑部件就称为输入输出接口,简称为接口。接口与CPU、外设的连接示意图,如图1-6所示。
程序员 http://www.educity.cn/jiaocheng/zg14.html
图1-6 接口与CPU、外设连接示意图
除了完成设备间物理设备上的连接,接口还具有下述主要功能:
(1)地址译码功能:由于一个计算机系统中连接有多台I/O设备,相应的接口也有多个,为了能够进行区别和选择,必须给它们分配不同的地址码,这与存储器中对存储单元编址的原理是一样的。
(2)在主机与I/O设备间交换数据、控制命令及状态信息等。 (3)支持主机采用程序查询、中断、DMA等访问方式。
(4)提供主机和I/O设备所需的缓冲、暂存、驱动能力,满足一定的负载要求和时序要求。
(5)进行数据的类型、格式等方面的转换。 接口的分类方法很多,例如:
(1)按数据传送的格式可分为:并行接口和串行接口。
(2)按主机访问I/O设备的控制方式,可分为程序查询接口、中断接口、DMA接口,以及更复杂一些的通道控制器、I/O处理机等。 (3)按时序控制方式可分为同步接口和异步接口。
(4)按功能选择的灵活性可分为可编程接口和不可编程接口。 (5)按通用性可分为通用接口和专用接口。 (6)按输入输出的信号可分为数字接口和模拟接口。
(7)按应用可分为运行辅助接口、用户交互接口、传感接口、控制接口。
当然,一个完整的I/O接口不仅包括一些硬件电路,也可能包括相关的软件驱动程序模块。这些软件模块有的放在接口的ROM中,有的放在主机系统上的ROM中,也有的存储
程序员 http://www.educity.cn/jiaocheng/zg14.html
在外存中,需要时再装入内存执行。
1.1.4 流水线
为了帮助读者理解流水线的概念,先介绍并行性的概念。
并行性是指计算机系统可以同时进行运算或操作的特性,它包括同时性与并发性两种含义,同时性指两个或两个以上的事件在同一时刻发生,并发性指的是两个或两个以上的事件在同一时间间隔发生。在计算机系统中,提高并行性的措施包括以下三种:
(1)时间重叠。也称为时间并行技术。在并行性概念中引入时间因素,即多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转时间而赢得速度。
(2)资源重复。也成为空间并行技术。在并行性概念中引入空间因素,以数量取胜的原则,通过重复设置硬件资源,大幅度提高计算机系统的性能。
(3)资源共享。一种软件方法,它是多个任务按一定时间顺序轮流使用同一套硬件设备,该方法降低了成本,同时又提高了计算机设备的利用率。
一条指令的执行过程可以分为多个阶段(或子过程),具体分法随计算机不同而不同。采用流水线技术可以使每个子过程与其它子过程并行执行。从本质上讲,流水线技术是一种时间并行技术,只需增加少量硬件就能把计算机的运算速度提高几倍。
程序员 http://www.educity.cn/jiaocheng/zg14.html
图1-7 指令的顺序执行与并行执行
如图1-7所示,一条指令的执行过程可以分成以下3个阶段:
(1)取指令。按照指令计数器的内容访问主存储器,取出一条指令送到指令寄存器。 (2)指令分析。对指令操作码部分进行译码,按照给定的寻址方式和地址字段中的内容形成操作数地址,并用这个地址读取操作数。
(3)指令执行。把运算结果写到通用寄存器或主存中。
1.2 数据运算
在计算机中,所有处理工作最终都是通过数据运算来完成的,因此,掌握数据运算的基本原理,对程序员来说,是至关重要的。
1.2.1 数制及其转换
按照进位的原则进行计数,称为进位计数制,简称\数制\或\进制\
在采用进位计数的数字系统中,如果只用r个基本符号表示数值,则称其为r进制,r称为该进制的基数。不同的数制,有下述共同特点:
(1)每一种数制都有固定的符号集:例如十进制数制的基本符号有10个(0,1,2,……,9),二进制数制的基本符号有0和1两个。
(2)每一种数制都使用位置表示法:即处于不同位置的数符所代表的值不同,与它所在位置的权值有关。
例如,十进制数1234.45可表示为:
程序员 http://www.educity.cn/jiaocheng/zg14.html
二进制数11011011.01可表示为:
可以看出,各种进位计数制中的权值就是基数的某次幂,所以任何一种进位计数制表示的数都可以写成按权展开的多项式之和。计算机中常用的几种进位制如表1-1所示。
表1-1 计算机中常用的进位数制表示
将数由一种数制转换成另一种数制称为数制间的转换。常用数制包括二进制、八进制、十进制、十六进制等,在不同的场合(环境)需要使用不同的数制。常用数制转换方法如下: (1)二进制、八进制、十六进制转换为十进制。一般采用乘权相加法,把二(八、十六)进制的每一位乘以它的权,然后相加。例如,把二进制数110.011转换成相应的十进制数:
(2)十进制转换为二进制、八进制、十六进制。整数部分和小数部分分别转换,然后再合并。整数部分方法是\除2(8、16)取余\小数部分方法是\乘2(8、16)取整\例如,把十进制数43.375转换成相应的二进制数的过程如图1-8和图1-9所示。
程序员 http://www.educity.cn/jiaocheng/zg14.html
图1-8 整数部分除2取余法 图1-9 小数部分乘2取整法
图1-8表示整数部分除2取余过程,所以(43)10=(101011)2,图1-9表示小数部分乘2取整过程,所以(0.375)10=(0.011)2,合并整数和小数部分,所以(43.375)10=(101011. 011)2.
十进制转换成二进制数还有一种简便的方法:把一个十进制数写成按二进制数权大小展开的多项式,按权值从高到低依次取各项的系数就可得到相应的二进制数。例如,把十进制数175.71875转换为相应的二进制数
(3)二进制与八进制相互转换。从小数点起,把二进制数每三位分成一组,然后写出每一组的等值八进制数,顺序排列起来就得到所要求的八进制数;同理,将一位八进制数用三位二进制数表示,就可直接将八进制数转换成二进制数。例如,把二进制数10111011.01100111转换为相应的八进制数:
(4)二进制与十六进制相互转换。从小数点起,把二进制数每四位分成一组,然后写
程序员 http://www.educity.cn/jiaocheng/zg14.html
出每一组的等值十六进制数,顺序排列起来就得到所要求的十六进制数;同理,将一位十六进制数用四位二进制数表示,就可直接将十六进制数转换成二进制数。例如,把二进制数10111011.01100111转换为相应的十六进制数:
(5)八进制与十六进制相互转换。通常采用二进制作为中间媒介,即先把八进制转换为二进制,然后再把二进制转换成为对应的十六进制。把十六进制转换为八进制与此相似。
1.2.2 数据的表示
各种数据在计算机中表示的形式称为机器数,其特点是符号位与数值位一起编码,数的符号用0、1表示,小数点隐含表示并不占位置。机器数对应的实际数值称为数的真值。 机器数包括无符号数和有符号数两种。对于带符号数,机器数的最高位是表示正、负的符号位,其余位表示数值。若小数点位置在最低数值位之后,则是纯整数;若小数点位置在最高数值位之前(符号位之后),则是纯小数。 1. 常用码制
带符号机器数可采用原码、反码、补码和移码等不同编码方法,这些编码方法称为码制。 (1)原码表示法。编码规则是:符号位为0表示正,为1表示负,数值部分用该数绝对值的二进制数表示。用原码表示整数时,小数点隐含在最低位之后;用原码表示纯小数时,小数点隐含在符号位和数值位之间,均不占位。通常用[X]原表示数X的原码。例如,设机器字长为8位,则有下列结果:
程序员 http://www.educity.cn/jiaocheng/zg14.html
按照原码编码规则,零有两种表示形式。
原码表示方法简明易懂,与其真值转换方便,比较容易进行乘除运算,但是在进行加减运算时,原码运算不方便,主要源于符号位不能参加运算,需要增加很多判断条件。 (2)反码表示法。编码规则是:符号位为0表示正,为1表示负,正数的反码等于原码,负数的反码等于原码除符号位外按位取反,即0变1,1变0.通常用[X]反表示数X的反码。例如,设机器字长为8位,则有下列结果:
按照反码编码规则,零也有两种表示形式,反码同样不方便运算。
(3)补码表示法。编码规则是:符号位为0表示正,为1表示负,正数的补码等于原码,负数的补码等于反码末位加1.通常用[X]补表示数X的补码。例如,设机器字长为8位,则有下列结果:
按照补码编码规则,零有唯一的表示形式。
采用补码进行加减运算十分方便,可以允许符号位一起参与运算,而且可以把减法运算转化为加法运算,提高了运算速度。
(4)移码表示法。编码规则是:把数据加上一个偏移量,当机器字长为n,偏移量为2n-1
程序员 http://www.educity.cn/jiaocheng/zg14.html
时,将补码的符号位取反就得到对应的移码。例如,设机器字长为8位,则有下列结果:
2. 定点数和浮点数
在机器数中,按照小数点位置是否固定,把机器数分为定点数和浮点数两种。 (1)定点数。小数点位置固定不变的数叫做定点数。通常包括两种类型:定点整数(纯整数,小数点在最低有效数值位之后)、定点小数(纯小数,小数点在最高有效数值位之前)。 设机器字长为n,各种码制下带符号定点数的范围如表1-2所示。
表1-2 各种码制下带符号定点数的范围(机器字长=n)
(2)浮点数。小数点位置不固定的数叫做浮点数,浮点数主要用来表示实数。 一个实数总可以表示成一个纯小数和一个乘幂之积,例如:56.725=102×(0.56725)、-1894.0456=104×(-0.18940456),二进制数据也可以这样表示。一个二进制数N通常表示为如下形式:
其中E称为阶码,F称为尾数。用阶码和尾数表示的数叫做浮点数,这种表示数的方法称为浮点表示法。
程序员 http://www.educity.cn/jiaocheng/zg14.html
在浮点表示法中,阶码通常是带符号的纯整数,尾数是带符号的纯小数,表示格式如下:
在浮点表示法中,阶码决定数值范围,尾数决定数值精度。通常采用规格化浮点数来比表示尾数,将尾数的绝对值限制在区间[0.5, 1],从而表示更多的有效数字。当尾数用补码表示时,需要注意下述问题:
· 若尾数,则其规格化的尾数形式为:F=0.1×××…×,其中×可为0,也可以为1,即将尾数限定在区间[0.5,1].
· 若尾数,则其规格化的尾数形式为:F=1.0×××…×,其中×可为0,也可以为1,即将尾数限定在区间[-1,-0.5].
如果浮点数的阶码(包括一位阶符)用R位移码来表示,尾数(包括一位数符)用M位补码表示,则这种浮点数的表数范围为:
很明显,一个数的浮点表示法不唯一,这就容易导致不同计算机之间数据格式的不兼容性。为此,IEEE制定了浮点数表示的工业标准IEEE754,被广泛使用。该标准表示形式如下:
其中,(-1)S称为数符,当s为0时表示正数,当s为1时表示负数;E为阶码,用移码表示;(b0b1b2…bp-1)是尾数,用原码表示,p是尾数的长度,它表示尾数共p位。 目前,计算机中主要使用3种形式的IEEE754浮点数,如表1-3所示。
表1-3 三种不同类型的IEEE754浮点数
程序员 http://www.educity.cn/jiaocheng/zg14.html
单精度、双精度浮点数格式如图1-10所示,从中可以看到IEEE754中的尾数最高位b0总是1,而且它和小数点一样隐含存在,在机器中并不明确表示出来。
图1-10 单精度、双精度IEEE754浮点数格式
例如,将十进制数178.125表示成单精度浮点数。首先将178.125表示成二进制形式:(178.125)10=(10110010.001)2,再将二进制实数表示成规格化形式:10110010.001=1.0110010001
×
27.
所
以
符
号
位
s=0,
尾
数
=01100100010000000000000,阶码E=(7+127)10=(134)10=(10000110)2.即十进制数178.125对应的单精度浮点数形式为:
又如,可以根据下述单精度浮点数,求出其对应的十进制数值。
程序员 http://www.educity.cn/jiaocheng/zg14.html
指数=E-127=(01111110)2-127=126-127=-1,尾数=1.1011,所以该浮点数的数值为1.1011*2-1=(0.11011)2=(0.84375)10. 3. 二-十进制编码
用4位二进制代码表示1位十进制数,称为二-十进制编码,简称BCD编码。根据4位代码中每一位是否有确定的权来划分,可分为有权码和无权码两类。
应用最多的有权码是8421码,即4个二进制位的权从高到低分别为8、4、2和1.无权码中用得较多的是余3码和格雷码。余3码是在8421码的基础上,把每个数的代码加上0011后构成的。格雷码的编码规则是相邻的两个代码之间只有一位不同。 常用的8421BCD码、余3码、格雷码与十进制数的对应关系如表1-4所示。
表1-4 8421BCD码、余3码、格雷码与十进制数的对应关系
4. 字符表示法
字符编码就是为每个字符确定一个对应的整数值,以及相对应的二进制编码。常用的字符编码标准有ASCII字符编码标准以及IBM公司提出的EBCDIC代码等,其中ASCII码的
程序员 http://www.educity.cn/jiaocheng/zg14.html
应用范围最广。国际标准化组织(ISO)和我国都颁布了与ASCII编码一致的编码(ISO-646和GB-1988-80)。
ASCII码采用7个二进制位对字符进行编码:低4位组d3d2d1d0用作行编码,高3位组d6d5d4用作列编码,其格式如图1-11所示。
图1-11 ASCII码编码格式
采用7位编码构成的ASCII码基本字符集只能表示128个字符,不能满足信息处理的需要,所以对ASCII码基本字符集进行扩充,采用一个字节(8位二进制数)表示一个字符,一共可以表示256种字符和图形符号,称为扩充的ASCII码字符集。 5. 汉字表示法
汉字种类繁多,编码比拼音文字困难,而且在同一汉字处理系统中,输入、内部处理、存储和输出对汉字代码的要求不同,所以编码也不相同,关键是要进行一系列汉字代码转换。 按照计算机中汉字处理流程,汉字编码一般分成输入码、内部码和字形码三种。 (1)输入码。输入码的作用是考虑如何把汉字输入到计算机内,常用输入码包括下述四种:
· 数字编码:用一串数字来表示汉字的编码方法。 · 字音编码:一种基于汉语拼音的编码方法。
· 字形编码:将汉字字形分解归类,得到基本字形,汉字由基本字形组成。 · 形音编码:吸取了字音编码和字形编码的优点。
在上述输入码基础上,近年来,基于统计和学习功能的、以词语(短语)或句子作为输
程序员 http://www.educity.cn/jiaocheng/zg14.html
入单位的输入方法效率高,很受用户欢迎。
输入码和内部码、字形码属于完全不同的范畴,使用不同的输入码输入同一个汉字,它们对应的内部码、字形码完全相同。
(2)内部码。汉字内部码(简称汉字内码)是在设备和信息处理系统内部存储、处理、传输汉字用的代码,这种代码仅仅存在于中文计算机中。
1981年我国颁布了《信息交换用汉字编码字符集·基本集》(GB2312-80),在其中规定了汉字国标码,它采用两个字节存放一个汉字的内码,每个字节使用低7位,为了与标准ASCII码兼容,每个字节只使用94个编码。
GB2312-80国标字符集由三部分组成。第一部分是字母、数字和各种符号,共682个;第二部分是一级常用汉字,共3755个,按汉语拼音排列;第三部分是二级常用字,共3008个,不是太常用,采用偏旁部分排列。
GB2312国标字符集构成一个二维平面,它分为94行、94列,行号称为区号,列号称为位号。每一个字符在码表中都有唯一的位置编码,该编码就是字符所在区号(行号)及位号(列号)的二进制编码(区号在左,位号在右),称为\区位码\
但区位码并不是国标码,由于信息传输的原因,每个汉字的区号和位号必须分别加上32,构成的新代码就是国标码。
计算机中的双字节汉字与单字节西文字符经常混合在一起处理,容易混淆,所以需要对汉字信息进行标识。通常是把汉字两个字节的最高位都置为\置\后的双字节汉字编码就称为汉字\机内码\简称\内码\
为了统一地表示世界各国文字,1993年国际标准化组织公布\通过多八位编码字符集\的国际标准ISO/IEC 10646,简称UCS.它包含了中、日、韩等国的文字。微软、IBM等公司
程序员 http://www.educity.cn/jiaocheng/zg14.html
联合制定的工业标准Unicode(统一码或联合码),就是为此而提出。我国在1994年制定了与ISO/IEC 10646等同的国家标准Gb13000.
(3)字形码。汉字字形码是表示汉字字形的字模数据,通常采用点阵、矢量函数等方式来表示。
采用点阵形式时,汉字字形码就是这个汉字字形点阵的代码,它采用一组排成方阵的二进制位数字来表示一个汉字。这种表示形式所占存储空间相当大。
采用矢量函数形式时,用一组直线和曲线来勾画汉字、字母和符号中笔画的轮廓,记下每一条直线和曲线的数学描述(端点及控制点坐标)。这种方式输出之前必须经过复杂的运算处理,转换成点阵形式。Windows中使用的TrueType字库采用的就是这种表示形式。 6. 校验方法及校验码
计算机中的数据在存储和传输过程中可能会发生错误,通常采用校验码的方法来检测传送的数据是否出错。一个编码系统中任意两个合法编码之间的不同的二进制位称为这两个码字的码距。该编码系统任意两个编码之间距离的最小值称为该编码系统的码距。码距是衡量编码方式抗错误能力的一个指标,码距越大,则错误编码个数越多,当数据出现错误时,出现在错误编码集合中的概率就越大,从而更容易发现错误。
常用的校验方法有奇偶校验方法、循环冗余校验方法、海明码校验方法,每种校验方法都有对应的校验码。
(1)奇偶校验方法。在每组数据信息上附加一个校验位,校验位的取值(0或1)取决于这组信息中1的个数和校验方式(奇或偶校验)。如果采用奇校验,则这组数据加上校验码后数据中1的个数应为奇数。如果采用偶校验,则这组数据加上校验码后数据中1的个数应为偶数。
程序员 http://www.educity.cn/jiaocheng/zg14.html
奇偶校验方法的特点如下:
· 码距为2,可检验出奇数个位数出错的情况,但不能检验出欧数个位数出错的情况,但实际中两位同时出错的概率很低,该方法适用性比较强。
· 该方法只能发现错误,但不知错误的位置,所以不能自动纠正。
常用的奇偶校验码有三种:水平奇偶校验码、垂直奇偶校验码和水平垂直校验码。 · 水平奇偶校验码。对每一个数据的编码添加校验位,使信息位与校验位处于同一行。 · 垂直奇偶校验码。这种校验方法把数据分成若干组,一组数据占一行,排列整齐,再加一行校验码,针对每一列采用奇偶校验。例如,对于32位数据10100101 00110110 11001100 10101011进行垂直奇偶校验,如表1-5所示。
表1-5 垂直校验码的例子
· 水平垂直校验码。在垂直校验码的基础上,对每个数据再增加一位水平校验位,便构成水平垂直校验码。例如,对于32位数据10100101 00110110 11001100 10101011进行水平垂直奇偶校验,如表1-6所示。
表1-6 水平垂直校验码的例子
程序员 http://www.educity.cn/jiaocheng/zg14.html
(2)循环冗余校验方法(CRC码)。该方法能够校验传送信息的对错,并且能自动修正错误,它广泛用于通信和磁介质存储器中。如图1-12所示,CRC编码格式是在位信息后加位检验码。
图1-12 CRC编码格式
CRC码长度为n=k+r位,所以又叫做(n,k)码,用C(x)表示被传送的位二进制信息位,用G(x)表示系统的生成多项式,则构成CRC码流程如下:
程序员 http://www.educity.cn/jiaocheng/zg14.html
上式左边就是CRC码,所以CRC码的生成过程是\左移位→除去生成多项式得到余数→加上余数\发送信息时将CRC码传送给对方,对方接收到以后除以G(x),如果传输正确,则结果为0,否则根据余数的数值确定是哪位数据出错。
(3)海明码校验方法。海明码校验方法是奇偶校验的一种扩充,但其不同之处在于采用多位校验码,能够检测出具体错误位置并纠正,其原理是在数据中加入个校验位,将码距按照一定规则拉长。
r位校验码有2r个值,其中只有一个表示数据正确,剩下的2r-1个值表示数据中存在错误,如果
满足(k+r表示编码后的总长度),在理论上r位校验码就可以
判断哪一位(包括信息位和校验位)出现问题,所以r位校验码最多可标明错误信息。表1-7显示了数据位k与校验位r的对应关系。
表1-7 数据位k与校验位r的对应关系
个
程序员 http://www.educity.cn/jiaocheng/zg14.html
CRC的编码规则是:海明码的总位数等于数据位与校验位之和,每个校验位Pi放在第2i-1个位置。以4位校验码为例,此时最多可以校验11位数据,设这11位数据是
,其校验码是 ,所以对应的海明
码是 。海明码的每一位用多个校验
位进行校验,被校验位号等于校验它的各个校验位位号和,各校验位的值为它参与校验的数据位的异或。11位数据对应的校验表如表1-8所示。
表1-8 11位数据海明码校验表
程序员 http://www.educity.cn/jiaocheng/zg14.html
按照海明码编码规则,结合上表,可知其各校验位形成公式如下:
上述方式中的采用的是偶校验,当采用奇校验时,则取反。
海明码数据传送到接收方后,将各校验位的值与它所参与校验的数据位的异或结果进行异或运算。运算结果称为校验和,对于上述11位数据来说,校验和共有4个,如下所示:
对偶校验来说,如果校验和不为0则表示传输过程中有错误,错误位置由4个校验和
依序排列后直接指明。例如:
位即D5发生了错误,此时把D5取反就纠正了错误。
当时,就表明海明码第9
当采用奇校验时,当校验位都是1时,表明传输没有错误,否则传输有错误。
1.2.3 算术运算与逻辑运算
按照运算对象,算术运算分为定点数运算和浮点数运算。 1. 定点数运算
程序员 http://www.educity.cn/jiaocheng/zg14.html
计算机中通常只有加法器,其他运算都可转换为加法运算,一般都用补码进行运算。补码加减法经常使用下述规则,可以把减法运算转化为加法运算。 [X+Y]补=[X]补+[Y]补 [X-Y]补=[X]补+[-Y]补
由[X]补求[-X]补的方法是:[X]补的各位取反(包括符号位),末尾加1.例如,设二进制整数X=+1000011,Y=+11110,求X+Y、X-Y的值。采用8位补码表示X、Y,[X]补=01000011,[Y]补=00011110,[-Y]补=11100010,符号位参与运算,过程如下:
在计算过程中,有时结果会超出机器所能表示的范围,这时就会发生溢出。只有当两个相同符号数相加(或者是相异符号数相减)时,才会发生溢出,判断是否溢出经常使用下述两种方法:
(1)单符号位判决法。两个相同符号数相加时,如果结果符号位与加数符号位相反,则说明发生溢出。两个相异符号数相减时,如果结果符号位于被减数符号位相反,则说明发生溢出。
(2)双符号位判决法。采用两位表示符号,即00表示正号、11表示负号,若结果中两个符号位不一致,则说明发生溢出。 2. 浮点数运算
程序员 http://www.educity.cn/jiaocheng/zg14.html
(1)0检测:检测A和中是否B有0,若A=0,则
,运算结束。
,若B=0,则
(2)对阶:使参与运算的两个数阶码相同,设 ,把阶码小的数尾
数右移K位,其阶码加上K。该过程会使指数小的浮点数失去某些有效位,如果两个浮点数阶数相差很大,大于指数小的浮点数的尾数有效位数,那么对阶后该数就变成0,从而带来误差,所以需要进行舍入处理,以求得误差最小。常用的舍入处理方法如下: · 截断法:将要保留的数据末位右边的数据全部截去。 · 末位恒1法:将要保留的末位数据置1.
· 0舍1入法:舍去的数据为0时,保持末位原始状态,若舍去的数据为1,则将末位加1,类似十进制中的四舍五入。
(3)尾数计算:两个浮点数对阶后其尾数按照定点数计算。
(4)结果规格化:若结果中尾数不是规格化的数,则进行规格化,若结果溢出,还需调整阶码。如果阶码上溢出,则结果为溢出,若阶码下溢出,则结果为0. 3. 逻辑运算
1849年英国数学家乔治·布尔提出了逻辑代数,它采用代数方法描述和分析逻辑变量,也称为布尔代数。其中参与运算的只有\真\和\假\通常用\和\来表示。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(1)逻辑与运算。该运算又称为逻辑乘,其运算符号常用AND、 、 或·表示。
设A和B为两个逻辑变量,当且仅当A和B的取值都为\真\时,二者逻辑与的结果才为\真\否则为\假\
(2)逻辑或运算。该运算又称为逻辑加,其运算符号常用OR、
、
或+表示。
设A和B为两个逻辑变量,当且仅当A和B的取值都为\假\时,二者逻辑与的结果才为\假\否则为\真\
(3)逻辑非运算。该运算又称逻辑求反,常用 表示对变量 的值求反。规则很
简单 。
上述是最基本的逻辑运算,其它逻辑运算可以由这三种运算组合来表示。 常用逻辑公式如表1-9所示。
表1-9 常用逻辑公式
(4)逻辑表达式及化简。逻辑表达式是用逻辑运算符把逻辑变量(常量)连接在一起表示某种逻辑关系的表达式。逻辑表达式化简主要是利用上面提高的各种恒等式,将复杂的元素变成简单的表达式。 例如,化简逻辑表达式
程序员 http://www.educity.cn/jiaocheng/zg14.html
的过程如下:
1.3 指令系统
计算机通过执行指令序列完成相关操作,每种计算机都提供一组指令集供用户使用,这组指令集称为指令系统,它是硬件与软件的之间接口。
1.3.1 指令格式
一般而言,一条指令包含操作码和地址码两部分。其中,操作码确定指令类型,地址码确定指令要处理的数据,根据地址码个数可以把指令分为三地址指令、二地址指令、一地址指令和无地址指令四种。
1.3.2 寻址方式
寻址方式就是根据指令中的地址码获得指令要处理数据的方法,地址码代表的地址类型不同,寻址方式也不同,常用寻址方式如下:
(1)立即数寻址。操作数就是地址码,取出指令后就可以立刻运算,这种方式不需要访问内存去取操作数,也无需修改操作数。
(2)直接寻址。操作数的地址是地址码,指令根据地址码在内存中找到操作数,这种方式不需做任何变换,但由于地址码位数有限,限制了寻址空间。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(3)寄存器寻址。操作数存放在寄存器中,地址码是寄存器地址,指令访问寄存器就获得操作数,这种方式访问速度很快,不足之处在于寄存器数量有限。
(4)间接寻址。地址码指向某内存单元,该单元保存的是操作数地址,这种方式提高了寻址空间,但由于要多次读内存,速度大大降低。
(5)寄存器间寻址方式就是根据指令中的地址码获得指令要处理数据的方法,地址码代表的地址类型不同,寻址方式也不同,常用寻址方式如下:接寻址。地址码指向某寄存器,寄存器中保存的是操作数地址,这种方式充分结合了寄存器速度快和字宽比较大的性质,即快又灵活,是一种广泛使用的寻址方式。
(6)变址寻址。将地址码和变址寄存器内容相加后形成操作数地址,变址寄存器内容能自动修改,这种方式适用于数组运算、字符串操作等批量数据处理。
(7)基址寻址。将地址码和基址寄存器内容相加后形成操作数地址,这种方式与变址寻址有些相似,但又有些不同,这里基址寄存器内容不变化,变化的是地址码,所以这种方式可以扩大寻址空间和再定位。
(8)页面寻址。将主存分成若干个区,寻址时使用区码加区内偏移的方式确定操作数位置。
(9)相对寻址。与变址寻址相似,这里将变址寄存器换成了程序计数器。
1.3.3 常用基本指令
一般而言,所有计算机都包含以下几种基本指令:
(1)数据传送指令。实现寄存器与寄存器,寄存器与存储单元以及存储单元与存储单元之间的数据传诵。数据传送时,数据从源地址传到目的地址,而源地址中的数据保持不变。 (2)算术运算指令。控制CPU实现各种算术运算,主要包括加法、减法、乘法、除
程序员 http://www.educity.cn/jiaocheng/zg14.html
法、求补、加1、减1、比较等指令。
(3)逻辑运算指令。控制CPU实现各种逻辑运算,主要包括与、或、异或、取反等指令。
(4)移位运算指令。实现对操作数左移或右移一位或若干位,按移位方式分为三种:算术移位指令、逻辑移位指令和循环移位指令。
· 算术移位指令:对带符号操作数进行移位,其执行过程如图1-13所示。
图1-13 算术移位操作示意图
左移时从最低位依次向最高位移动,最低位补0,最高位移入\进位\位C中。右移时最高位向最低位依序移动,最低位移入\进位\位C,而最高位(即符号位)保持不变。 · 逻辑移位指令。该指令对无符号操作数进行移位,其执行过程如图1-14所示,逻辑左移指令的执行过程与算术左移相同,而逻辑右移与算术右移不同,是用0补充最高位。
图1-14 逻辑移位操作示意图
· 循环移位指令。该指令分为不带进位的循环移位和带进位的循环移位两种,其执行过程如图1-15所示。
程序员 http://www.educity.cn/jiaocheng/zg14.html
图1-15 循环移位操作示意图
(5)堆栈操作指令。主要包括栈初始化、进栈、出栈、判断栈空(满)等操作。 (6)字符串处理指令。一种非数值处理指令,一般包括字符串传送,字符串转换(把一种编码的字符串转换为另一种编码的字符串),字符串比较,字符串查找(查找字符串中的某个子串)等。
除了上述指令外,还包括下述存在但不常用的指令:输入输出指令、特权指令、转移指令、陷阱与陷阱指令、子程序调用指令等。
1.4 存储体系
存储器是计算机的记忆部件,主要用来存放程序和数据,CPU在工作过程中要频繁地与存储器进行信息交换,因此主存储器的性能在很大程度上影响整个计算机系统的性能。
1.4.1 存储器分类
存储器有很多种分类方法,例如:
(1)按存储器的功能和所处的位置分类,存储器分为主存储器和辅助存储器。 (2)存储介质是指用来制作存储信息的物质。按存储介质分类:存储器分为半导体存储器、磁存储器和光存储器。
(3)按信息的可保护性分类,存储器可分为易失性存储器和非易失性存储器。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(4)按寻址方式分类,存储器可分为随机存储器、顺序存储器和直接存储器。 (5)按访问方式分类,存储器可分为按地址访问的存储器和按内容访问的存储器。
1.4.2 存储器层次结构 存储器的主要性能指标如下:
(1)容量。存储器的容量可以用公式SM=W×I×M来表示,其中中SM表示存储体容量,其中W表示存贮体的字长,单位为bit或Byte;I表示每个存储器的字数;M表示并行工作的存储器个数。
(2)速度。从下面三个方面来描述:
· 访问时间。一般用读出时间TA及写入时间TW来描述,TA是从存储器接收读命令后到信息被送到数据总线上的时间,TW是将一个字写入存储器所需的时间。
· 存储周期。一般用TM表示,即存储器一次完整读写操作所需要的全部时间,即存储器进行连续读写操作所允许的最短时间间隔,它直接关系到计算机运行速度,TM一般比TA或TW要大。
· 存储器频宽。是指存贮器可以提供的数据传送率,一般用每秒钟所传送的信息位数来衡量。
(3)价格。可以用总价格C或每位价格c来表示,具有SM位的存贮器每位价格c=C/SM,其中包括了存贮器本身的价格和为该存贮器操作所必须的外围电路的价格。
一般来说,如果存储器速度、价格、容量三者之间相互矛盾,为了能较好地满足上述三个方面的要求,有效办法是采用由不同介质存储器构成存储器层次结构,使得信息以各种方式分布于不同的存贮器中。其速度接近速度最快的存储器,存储容量与容量最大的存储器相等,单位容量的价格接近最便宜的存储器。
程序员 http://www.educity.cn/jiaocheng/zg14.html
存储器层次结构经历了一级存储结构、二级存储结构以及多级存储结构三个阶段。在计算机系统中,三级存储结构应用最广泛,以cache存储系统为例,其主要性能如下(虚拟存储系统也与此相似):
(1)容量。等于主存储器的容量,并且提供尽可能大、能随机访问的地址空间。实现方法有两种:
· cache存储系统只对主存储器进行编址,cache只在内部编址 · 虚拟存储系统另外设计一个容量很大的逻辑地址空间
(2)速度。接近cache的访问速度,为了达到这一点,需要尽可能提高系统命中率和访问效率。
(3)命中率。在cache存储器中访问到的概率,公式如下:
其中N1是cache的访问次数,N2是主存储器的访问次数。
系统的访问周期与命中率之间的关系为:T=H×T1+(1-H)×T2,其中T1与T2分别是cache与主存的访问周期。当命中率H→1时,T→T1,所以提高命中率非常重要。 (4)访问效率。指的是访问cache所用时间所有时间的比例,即:
由此可知,存储系统的访问效率主要与命中率和两级存储器的速度之比有关。 当访问效率e→1时,T→T1,所以提高访问效率也非常重要。
(5)单位容量平均价格。用S1、C1分别表示cache的容量和单位容量平均价格,用S2、C2分别表示主存储器的容量和单位容量平均价格,则存储系统的单位容量平均价格如
程序员 http://www.educity.cn/jiaocheng/zg14.html
下:
由上式可知,当
时,
,单位容量的平均价格接近主存储器,但
是二者容量差别不能太大,否则速度会受到影响。
1.4.3 主存储器
主存一般由RAM和ROM这两种工作方式的存储器组成,其绝大多数存储空间由RAM构成。主存储器主要由存储体、地址译码器、驱动器、读写电路和控制电路等五部分组成,如图1-16所示。
图1-16 主存储器组成图
(1)存储体(存储矩阵)。存储单元的集合,用来存放程序和数据,容量较大的存储器往往把各个字的同一位组织在一个集成片中。
(2)地址译码器。把用二进制表示的地址转换为译码输入线上的高电位,在存储体中找到相应的存储单元,以便驱动相应的读写电路。地址译码有两种方式:一种是单译码方式,适用于小容量存储器;另一种是双译码方式,适用于容量较大的存储器。
(3)驱动器。在双译码结构中,一条X方向选择线要控制在其方向上各个存储单元字
程序员 http://www.educity.cn/jiaocheng/zg14.html
选线,所以负载比较大,需要在译码器输出后加驱动器。
(4)读写电路。根据CPU给出的信号是读命令还是写命令,控制被选中存储单元的读写。
(5)控制电路。根据读写命令,控制主存储器各个部分协作完成相应的操作。 存储周期:连续两次存储器访问的最小时间间隔,记作Tm.
带宽:存储器的数据传送速率,即每秒传送的数据位数,记作Bm.设存储器传送的数
据宽度为W位(一个存储周期内读取或写入的字数),那么
1.4.4 高速缓冲存储器
。
计算机中CPU与内存、内存与外存之间速度差别很大,在数据读取过程中会造成计算机性能大幅下降,为了尽可能减少慢速设备对快速设备的约束,可以采用高速缓存技术。 cache是位于CPU与主存之间的高速小容量存储器,其容量一般在几KB到几MB之间,速度一般比主存快5~10倍,由快速半导体存储器制成,即可存放程序又可存放数据,其内容是主存内容的副本,对程序员来说是透明。有的高档微机为了获得更高的效率,不仅设立了独立的指令cache和数据cache,还把cache设置成二级或三级。
cache的速度可以和CPU相匹配,当CPU需要从主存中读取数据或者指令时,先在cache中查找,如果里面已经存在,则直接从cache中读取,否则就要从主存中读取,并把该数据及其周围的数据都拷贝在缓存中,利用局部性原理提高计算机性能。 高速缓存中的数据必须和外存中的数据保持一致,通常采用以下方法: (1)写通:写内存的同时也写缓存。
(2)只写内存:将缓存中相应部分内容设置为无效。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(3)写回:只写缓存,有缓存控制器决定在合适的时候写内存,这种方式效率最高,但存在一定风险,容易导致数据没有写入磁盘而造成数据丢失。
1.4.5 辅助存储器
主要包括软盘存储器、硬盘存储器、磁带存储器、光盘存储器等。 1. 软盘存储器
由软盘片、软盘驱动器、软盘适配器(盘控)3部分组成,曾经是昔日PC移动存储器的霸主,但好长时间没有发展,已经让位给U盘和移动硬盘。 2. 硬盘存储器
最早的硬盘是由IBM公司开发的温彻斯特硬盘,它由磁盘盘片(存储介质)、主轴、主轴电机、移动臂、磁头和控制电路等部分组成。硬盘运行时,电机带动主轴,主轴带动磁盘高速旋转,旋转时的气流将磁头托起,移动臂控制磁头移动到指定磁道来读取或写入数据。 磁盘表面有外向里分成若干个同心圆,称为磁道,每个磁道分成若干个扇区。在多个单碟上相同磁道的组合称为柱面。所以定位磁盘上一个物理记录需要三个参数:柱面号、扇区号和磁头号。
硬盘接口电路可以在主机和硬盘驱动器之间提供一个数据、地址和控制信号的控制通道,实现主机对硬盘驱动器的各种控制,从而完成主机与硬盘的数据交换。常用的接口包括IDE接口、SCSI接口和IEEE1394接口。 硬盘的主要性能指标如下:
(1)容量。计算公式如下:磁盘容量=磁头数×柱面数×扇区数×扇区容量
(2)平均等待时间。数据所在的扇区转到磁头下的平均时间,是盘片旋转周期的1/2. (3)平均寻道时间。移动磁头到数据所在磁道(柱面)所需要的时间。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(4)平均访问时间。平均等待时间和平均寻道时间之和,它表示硬盘找到数据所在扇区所需要的平均时间。
(5)Cache容量。高速缓冲存储器的容量,从理论上讲越大、越快就越好。 (6)数据传输速率。也称为磁盘的吞吐率,分为外部传输速率和内部传输速率两种。 移动存储器容量大、携带方便,是近年来外存储器的一个重要品种,移动存储器包括闪存盘和移动硬盘两种。
常用的提高磁盘容量、速度和可靠性的技术包括:镜像技术、校验技术、条块技术。 磁盘阵列(RAID)是一种新的磁盘组织方案,它通过将多个磁盘按照一定的形式和方案组织起来,如同使用一个硬盘,但却获得比单个硬盘更高的速度、更好的稳定性和更大的存储容量。
RAID的标准形式包括:RAID0、RAID1、RAID2、RAID5,它们的可靠性逐渐增强,但价格也逐渐增加。其中,RAID0最基本,没有校验功能;RAID1采用镜像技术,把相同数据备份放在两个驱动器中,当一个驱动器出现故障时采用另外一个维持正常运转;RAID2采用海明码校验技术;RAID5采用数据块条块技术和分布式奇偶校验技术,当一个驱动器出现故障时,可以利用其它驱动器中的校验信息来恢复数据,它是目前最流行的RAID应用形式。
单一RAID形式不能满足各种不同应用的需要,可以将各种RAID形式联合起来构成复合RAID形式,最常用的复合形式是0+1和1+0,它们都需要4块硬盘。 3. 磁带存储器
由磁带和磁带机(驱动器)两部分组成,它把磁性材料涂在一条长带子上,利用这条带子保存信息。磁带机按其记录方式,可分为数据流磁带机和数字音频磁带(DAT)机,前者
程序员 http://www.educity.cn/jiaocheng/zg14.html
又分为单磁头工作方式的1/4英寸磁带机及多磁头工作方式的高端应用1/2英寸磁带机,后者分为8mmDAT机及4mmDAT机。 4. 光盘存储器
出现在20世纪70年代初期,近年来发展迅速,包括下述三种类型产品:
(1)固定型光盘。又称只读光盘,它把需要记录的信息事先记录到光盘上,用户不能抹除,也不能再写入,只能读取,例如:CD-ROM.
(2)追记型光盘。又称一次式光盘,用户自己将信息写入光盘,但写过后不能抹除和修改,只能读出,例如:CD-R.
(3)可改写型光盘。又称可擦写型光盘,用户可写入信息,也能对写入的信息进行擦除和改写,例如:CD-RW.
光盘存储器采用了很多新技术,主要包括:局部恒定角速度技术(PCAV)、\一光多道\并行读取技术、自动平衡减震技术、悬挂式光头、全钢机芯、人工智能纠错技术等。 近年来,计算机中处理的信息量逐渐增加,传统的CD光盘已不能满足大容量需要,于是产生了大容量DVD光盘。从存储器角度来看,它主要包括:DVD-ROM(只读型光盘)、DVD-R(限写一次型光盘)、DVD-RW(可多次读写型光盘)。
1.5 输入输出方式
在计算机系统中,有多种输入输出方式,包括程序控制、中断、DMA和通道等。 1. 程序控制工作方式
指在程序的控制下进行数据传送,是CPU与外设之间交换信息的最简单形式,包括: (1)无条件传送方式。传送数据之前不查询外设状态而直接执行输入或输出命令,这
程序员 http://www.educity.cn/jiaocheng/zg14.html
种方式下的外设总处于\待命\状态,可根据其固定的或已知的时序,将I/O指令插在程序中,当程序执行到该条指令时,就开始输入或输出数据。这种方式最简单,但是可靠性不高。 (2)条件传送方式。也称为查询传送,CPU通过执行程序不断读取并测试外设状态,若输入设备处于准备好状态或输出设备处于空闲状态,则CPU执行I/O指令与外设交换信息,这要求接口电路中除了有数据端口外,还要有状态端口。它比无条件传送可靠,使用面也广,但这种方式要求CPU不断检测外设状态,占用了CPU大量时间,效率不高。 2. 中断工作方式
中断方式可以克服查询方式的低效问题,当CPU执行到I/O请求时,向I/O控制器发出相应指令后,CPU并不等待,而是继续执行其它操作。由于CPU无需等待I/O控制器与外设的数据交换,所以效率得到了提高。
中断是指在CPU执行程序的过程中,由于某一外部或CPU内部事件的发生,使CPU暂时中止正在执行的程序,转去处理这一事件,当该事件处理完毕后又回到原先被中止的程序,接着中止前的状态继续向下执行。
引起中断的事件称为中断源。其中,由CPU内部产生的中断称为内部中断,它包括溢出中断、除法错中断、断点中断、软中断及单步中断;由CPU外部产生的中断称为外部中断,它包括可屏蔽中断和非屏蔽中断。
CPU接到中断请求后,如果是当前允许的中断,那么要停止正在执行的代码,并把内部寄存器入栈,这个过程不能再次被打断,所以要先关中断,入栈完后再开中断。这个过程应该尽量短,以防止错过了其它中断,该过程消耗的时间称为中断响应时间。然后再执行中断处理程序,一般都比较简单,就是设置一些标志位,做简单的数据处理而已,其它更耗时的处理由非中断程序完成。中断处理完成后要恢复现场,把入栈寄存器出栈,继续执行被中
程序员 http://www.educity.cn/jiaocheng/zg14.html
断的程序,这个过程消耗的时间称为中断处理时间,该时间大小与中断类型、应用类型有关,也不是一味求短,现在大多数CPU都支持多极中断,在执行中断时还可以响应其它中断,形成中断嵌套。
当有多个中断源时,通常采用下述方法确定需要处理的中断:
(1)直接相连法:每个中断源使用自己的中断请求信号和CPU相连,由于CPU的外部中断引脚个数有限,所以这种方式适用于中断源不是很多的情况。
(2)统一的中断请求:由CPU使用专门程序一次判断是哪个中断源的请求,通过查询的次序,可以实现中断的优先级控制。
(3)硬件查询法:由一条中断确认信号链和输入、输出设备相连,某个外设发出中断请求后,中断确认信号开始在各外设间传递,发出中断请求的外设响应这个信号。 (4)总线仲裁:外设需先得到总线控制权,发出中断请求,最后将设备号通过数据总线发给CPU,由总线仲裁机制决定可以发信号的外设。
(5)中断向量表:是一张保存不同中断处理程序入口地址的表格,里面的记录称为\中断向量\根据中断号查询该表,可以得到中断处理程序的入口地址。 3. DMA工作方式
该方式采用DMA控制器DMAC执行数据传送,DMAC从CPU处接管系统总线控制权,发出控制信号使数据通过总线直接在存储器和I/O设备之间进行传送。其工作过程如下: (1)I/O设备向DMAC发出DMA请求信号,要求进行数据传送。 (2)DMAC向CPU发出总线请求信号HRQ.
(3)CPU完成当前总线周期后,暂停操作,向DMAC发响应DMA请求的回答信号HLDA,并交出总线控制权,由DMAC接管总线。
程序员 http://www.educity.cn/jiaocheng/zg14.html
(4)DMAC向存储器发存储器地址信号。
(5)DMAC发读/写控制信号,在存储器与I/O设备之间传送一个字节数据。 (6)每传送一个字节,DMAC的地址寄存器加1,字节计数器减1.
(7)检测传送是否结束,若为结束则转入(4)继续数据传送,否则DMAC将总线控制权交还给CPU,CPU继续原来的操作。
因为DMA方式仅仅在需要占用总线传送数据时才暂停CPU操作,因此CPU的工作效率极高。虽然DMAC能够代替CPU接管总线执行数据传送,但二者还是有很大的差别。CPU能识别系统指令,具有运算判断、处理各种事件的能力,它不但使用总线还管理总线。而DMAC只能识别少数几种命令字,其主要功能是完成数据传输,它想使用总线时必须向CPU发出申请。 4. 通道控制方式
通道是一种专用控制器,它通过执行通道程序进行I/O操作管理,为主机与I/O设备提供一种数据传输通道。用通道指令编制的程序存放在存储器中,当需要进行I/O操作时,CPU只要按约定格式准备好命令和数据,然后启动通道即可;通道则执行相应的通道程序,完成所要求的操作。用通道程序也可完成较复杂的I/O管理和预处理,从而在很大程度上将主机从繁琐的I/O管理工作中解脱出来,提高了系统效率。
1.6 系统性能评价
本节主要介绍系统性能评价的有关参数。 1. Amdahl定律
在设计计算机系统时,经常性事件的处理比较简单,而且常和应用有关,加快经常性事
正在阅读:
软考教材分享:程序员教程03-14
机械实习周记09-03
工程造价管理中问题及应对策略07-03
画画比赛活动方案10-02
重庆市梁平红旗中学高2011级招生简章10-22
河海大学2016年成人高等教育招生章程03-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 程序员
- 教材
- 教程
- 分享
- 进步主义教育思潮
- 2018年人事科年度工作总结
- Maya新手教程:角色快速建模步骤 - 图文
- 《四个太阳》说课稿
- 送戏下乡活动方案
- 常州沟通与协调能力考试 附答案和分数(68分)
- 我的物料衡算
- 谈谈如何提高小学低年级学生写话技巧
- 同等学力英语单词
- 面板堆石坝填筑细则
- 邓小平理论-填空,名词解释,简答和论述
- 《英美概况》试题(附答案)
- 2013李伟明数量关系讲义下
- 论“汶川”地震中灭失的建设用地使用权风险承担
- 2012孝感党的基层组织建设工作考核评价项目
- 2017-2022年中国太阳能设备行业市场发展战略分析及投资前景专项预测报告(目录)
- 调幅与检波multisim仿真
- 山西广电网络(集团)有限公司薪酬激励制度
- 迤那镇麻窝小学2014年师德师风教育周活动方案
- 高三数学一轮复习 函数与导数(解析版)