




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机组成原理辅导1 计算机系统概述1.1计算机系统的基本组成和它的层次结构计算机系统由硬件和软件(两类资源)组成。计算机的硬件系统是计算机系统中的物理设备。计算机的软件系统是计算机系统中的程序和数据,包括完成计算机资源管理、方便用户使用的系统软件操作系统。硬件是计算机系统中保存与运行软件程序的物质基础,软件则是指挥硬件完成预期功能的智能部分。计算机系统的层次结构(图1.1)计算机硬、软件系统可划分为6个层次,每一层是实现上一层的基础,是对下一层的功能扩展。数字逻辑层指制造计算机硬件的数字逻辑电路技术。现在人们所说的计算机或电脑,其全称应该是“通用数字电子计算机”,它的硬件的设计制造采用的是数字逻辑电路技术,所以计算机系统的最底层应该是数字逻辑层。使用何种电路实现信息存储、信息传送以及信息运算与加工,是这一层要解决的基本问题。微体系结构层指的是由运算器、控制器、存储器、输入设备、输出设备这5大部件组成的裸机。裸机实际是按照指令系统设计制造的,能够识别、执行特定指令的一个完整的电子装置。电子装置有很多种,如电视机、收音机等,而计算机裸机这个电子装置与其它电子装置的不同之处在于,计算机裸机能够(仅能够)识别、执行二进制形式的指令(机器指令),这是计算机裸机的高明之处。进一步说,现在的计算机都是属于冯诺依曼计算机,它的结构、工作原理决定它只要一加电,就会自动地从存储器中取出一条指令,然后分析这条指令,再然后根据分析结果执行这条指令;接着再取下一条指令,分析下一条指令,执行下一条指令,如此不断往复循环。人们根据特定的需要,将指令有序的组织起来(即成为程序了),就可以叫计算机做各种各样的事。这里也就体现了计算机的通用性。当然这里所说的指令是机器指令。这一层的主要内容是,为了执行指令,需要在计算机中设置哪些功能部件,每个部件如何组成和工作,这些部件之间如何实现相互连接并协同工作等。这个层次是本课程的主要内容。指令系统层指一台计算机特有的指令系统(当然是二进制形式的机器指令),它的位置特别特殊。指令系统层以上的所有层次的工作或者说成果,最终都要以机器指令的形式来表示,因为裸机只认识二进制形式的机器指令。从这个角度我们说这一层处于硬件和软件之间。操作系统层。从这一层往上,都是软件层。操作系统层指的是目前几乎所有的计算机都配置的一种软件操作系统。操作系统是一种软件,而其它的所有软件都在它的上面,唯独操作系统处于这样一种特殊的地位,为什么呢?这要从操作系统的功能说起。有了裸机和指令系统,理论上人们就可以使用计算机了。我们用指令系统(机器指令)编写程序,然后把程序放入裸机的存储器中,启动计算机,计算机就会执行相应的程序了。但实际的裸机有太多太复杂的各种器件,各器件之间的关系错综复杂,即便是裸机的设计者,面对裸机也无法随心所欲。记住,使用机器指令来编写程序是面向裸机的,所以当你用机器指令面向裸机编制程序,并试图操纵计算机的时候,一定会困难重重。为此,人们设计编制了一种软件,由这种软件来具体操纵、管理裸机的运作,这种软件就是操作系统。操作系统除了具有这一功能外,还有其它的功能,如操作系统将人们经常需要的对裸机的一些复杂操作,(如向内存某个位置放入一个程序,向某个输出设备输出一串字符)预先编制了程序予以实现,提供给程序员的是一个抽象的程序(模块)接口,程序员只需按接口所要求的规范、参数,调用相应的程序就可以实现所需的功能。这就是操作系统中所谓的系统调用。有了系统调用,程序员就没有了面对裸机的烦恼和恐惧,换来的是面对系统调用的轻松和喜悦。操作系统还有一个重要的功能,就是向大众提供友好的使用界面。鉴于上述的各种功能,操作系统在整个计算机系统中具有了特殊的地位,使它总的处于硬件系统和软件系统之间,有人将操作系统称为计算机系统中硬件和软件之间的桥梁。汇编语言层,指对应于某种机器语言的汇编语言。这一层相对来说并不重要,甚至是无关紧要,不存在也无所谓。汇编语言是符号化(尽可能接近英语)的机器语言,相比于二进制形式的机器语言,符号化的汇编语言更容易记忆,识别,从而给程序员开发程序带来了方便。从这个角度说,汇编语言仅是程序员编程的一种工具,但相对于高级语言,汇编语言功能太弱。注意,程序员可以用汇编语言来编写程序,但最终要裸机来执行,还必须将汇编语言编写的程序翻译成为机器语言形式的程序。这个翻译理论上当然可以由人工进行,但实际由人工翻译,一则需要此人熟悉机器语言,二则难度和工作量都太大,所以是不现实的。实际情况是由一种软件来承担这个翻译任务,这种软件一般称为汇编程序(或汇编系统)。高级语言层,指的是各种接近于人类自然语言(一般指英语)的编程语言。人类用高级语言来编制各种希望计算机执行的各种程序,由于高级语言接近于人类的自然语言,当然还有适合于各种应用环境的语言特色,使得人类编制设计各种程序更容易,使用计算机更方便了。当然,我们要知道这些优越性的基础,是必须有能够将高级语言编制的程序翻译成为机器语言形式的程序的翻译程序。这里一般翻译有两种形式:解释和编译,相应的程序就称为解释程序和编译程序。以上是从功能的角度来分析介绍图1.1所示的计算机系统层次结构。当然在具体的实现过程中,每一层还有许多技术问题,如在指令系统层中,一台计算机的指令系统是指令多一点好呢(多了一定会复杂),还是少一点好(少了一定会简捷),或者怎么取得折衷。等等。有些技术问题书上有所介绍,大家可以看一下。计算机系统6层结构在不同层次之间的关系:见教材。12计算机硬件系统的5个功能部件及其功能图1.2 计算机硬件系统的组成示意图计算机硬件系统的5大组成部分、三类总线、CPU、主机和外围设备等概念。硬件系统由运算器部件、控制器部件、存储器部件、输入设备和输出设备5个大的功能部件组成,见图1.2。其中运算器和控制器共同构成了大家熟知的CPU,各部件间通过总线连接。显然,这些部件中运算器用于完成数据的运算处理功能;控制器向各个部件、设备提供协调运行所需要的控制信号;存储器用于完成对数据存储功能;输入设备和输出设备分别用于完成对原始数据输入功能和对运算结果输出功能。图1.3计算机的组成结构早期以运算器为中心,现在流行的更多的是以存储器为中心。计算机软件系统是由完成计算机资源管理、方便用户使用的系统软件(厂家提供),和完成用户对数据的预期处理功能(用户设计,自己使用)的程序这样两大部分构成的。基本系统软件主要由3个部分组成:(1)分担计算机系统中的资源管理与分配,也向使用者和程序设计人员提供简单、方便、高效服务的操作系统;(2)支持用户按照计算机最基本功能(指令)设计程序的汇编语言;(3)支持用户按照解题算法设计程序的高级语言。在一个完整的计算机系统中,软件系统是建立在硬件系统层次之上的部分,它的存在以已有硬件系统为前提,并且必须在已有硬件上才能运行。硬件系统也必须在软件系统的调度指挥下才能发挥出应有的运行效率,体现出它的使用价值。指令系统是设置在硬件系统和软件系统之间的结合点和纽带,硬件系统实现每一条指令的功能,全部软件系统都是由指令序列组成的程序。三个级别的程序例子。13计算机硬件系统的主要的技术和性能指标计算机字长。硬件一次运算处理的二进制数据的长度。CPU速度。主频、MIPS主频,CPU核心的工作时钟的频率。MIPS,每一秒时间内CPU执行多少百万条指令。TIC:CPU时钟的时间长度(周期),f:CPU时钟的频率,两者是倒数关系。CPI:执行一条指令平均所需的CPU时钟数。每一秒时间内CPU执行的指令数=1/(CPITIC)= 1/(CPI1/f)=f/CPI试图更精确计算的二种思路。存储容量。给出了存储系统中的一些概念,最后提到了磁盘阵列技术(RAID技术)。从原理的角度,这里要注意,计算机5大部件中的存储器指的是内存储器,外存储器实际是属于输入输出设备。内存储器的存取(读写)周期和外存储器的数据传送速率。内存储器的读写周期是指启动连续的两次读写操作所必需的时间间隔。外存储器较多的依赖于机电技术,由此决定了它是现行计算机系统的速度瓶颈。输入/输出设备的入出速度。通常还需要关注计算机内部的并行处理能力。14计算机系统的体系结构、组成和实现概述计算机体系结构,首先涉及的是系统中硬件和软件功能的划分,确定硬件和软件功能的界面,即哪些功能应划分给硬件子系统完成,哪些功能应划分到软件子系统中完成。随着技术的进步及需求的不同,这些划分是可以有变化的。在此基础上,对硬件系统进行概念层次上的设计,如字长、数据类型及其表示(当然这里的数据类型是直接面向计算机硬件的)、指令系统组成、指令类别、格式和功能、指令中使用的寄存器数量和表示方法,支持的寻址方式,存储器、输入输出设备和CPU之间数据传送的方式和控制,中断的类型和处理流程,系统中对各类信息的保护,计算机的运行状态的定义和切换,对各种运行异常或者出错的检测和处理方案等。总之,计算机的体系结构设计完成之后,一个概念上的计算机硬件系统已经完成。计算机组成是计算机体系结构的逻辑实现,是在依据计算机体系结构确定并且分配了硬件子系统的概念结构和功能特性的基础上,设计计算机各部件的具体组成、它们之间的连接关系、实现机器指令级的各种功能和特性。对相同的计算机体系结构所要求的功能,可以有不同的计算机组成设计方案。在计算机组成的领域内,需要重点解决的问题之一是合理的性能价格比,关键的技术措施在于处理好计算机内部的数据流和控制流,合理地匹配各功能部件的性能参数,也就是尽力避免因一个部件形成的“瓶颈”而影响计算机的整体性能。计算机实现,是计算机组成的物理实现。15计算机系统的发展、应用和分类计算机系统性能的发展历程计算机性能的提高,在物质的层面上,依靠的是集成电路生产工艺改进带来的半导体器件性能的提高;在技术层面上,依靠的是计算机体系结构和组成方面的创新和进步。从计算机使用的元器件划分计算机的发展历程从制作计算机使用的元器件不同,计算机的发展依次经历了电子管时代、晶体管时代、中小规模集成电路时代、大规模和超大规模集成电路时代。计算机的分类计算机发展的深远影响2 数据表示和运算方法21二进制码与进制计数制1、从十进制看进位记数制为了能用有限的基本符号(十进制的基本符号只有0、1、2、9,共十个)表示无限的数,进位记数法或者称为位置记数法中,同一个基本符号在不同的数位上代表不同的值。十进制是我们最熟悉的进位记数制。让我们从十进制出发,搞清楚进位记数制的一些特点,再推广到任意进制(如二进制、八进制、十六进制等)的进位记数制。十进制数的特点:(1)有十个基本符号0、1、2、9。基(或称为基数)为10。(2)逢十进一(加法)或借一当十(减法)。(3)权(位权)的概念。十进制数只有十个基本符号,而需要表示的数是无限的。为了用有限的基本符号表示无限的数,我们采用了“位置记数法”。在位置记数法中,不同位置(数位)上有不同的权。所谓的权是指每个数位上,单位1所代表的数值。十进制中各位的权如下:103、102、101、100.(小数点)10-1、10-2、10-3(4)一个数中每个基本符号对整个数的贡献=该基本符号乘以其所处数位的权。例:257.29=2102+5101+7100+210-1+910-2从十进制数的特点我们可以体会到,对一个进位记数制来说,最重要的是“基”和“权”两个概念。2、二进制编码和二进制数二进制编码:使用“0”和“1”这两个符号组成的符号串表示各种信息。二进制的数值数据亦是如此。二进制数的特点:(1)有两个基本符号0、1。基为2。(2)逢二进一(加法)或借一当二(减法)。(3)权。二进制中各位的权如下: 23、22、21、20.(小数点)2-1、2-2、2-3(4)一个数中每个基本符号对整个数的贡献=该基本符号乘其所处数位的权。例:(1010.01)2=123+022+121+020+02-1+12-2=8+2+0.25=(10.25)103、八进制、十六进制由于二进制与八进制、十六进制之间的转换十分简便容易,所以在计算机科学中的各种文献资料中广泛使用八进制和十六进制。八进制数的特点:(1)有八个记数符号0、1、2、7。基为8。(2)逢八进一(加法)或借一当八(减法)。(3)权。八进制中各位的权如下:83、82、81、80.(小数点)8-1、8-2、8-3(4)与十进制相同。例:(272.4)8=282+781+280+48-1=264+78+2+4/8=128+56+2+0.5=(186.5)10十六进制数的特点:(1)有十六个记数符号0、1、2、9、A、B、C、D、E、F。基为16。注:十六进制中,10用A表示,11用B表示15用F表示。(2)逢十六进一(加法)或借一当十六(减法)。(3)权。十六进制中各位的权如下:163、162、161、160.(小数点)16-1、16-2、16-3(4)与十进制相同。例:(B2E.8)16=11162+2161+14160+816-1=11256+216+14+8/16=2816+32+14+0.5=(2862.5)100222121112 502 212 100.40.85 20.7 210.4 210.8 200.6 210.2 210余数整数小数点4、数制转换(1)二、八、十六进制数转换成十进制数以上已有介绍,其方法可简单的概括为:各位乘权展开相加即可。(2)十进制数转换成二进制数整数部分和小数部分需分别处理:整数部分除2取余法,一直除到商为0为止;小数部分乘2取整法。注意:小数部分有可能无法实现精确转换。此时只要转换到小数部分的位数达到一定的精度要求即可(误差值小于求得的最低一位的位权)。例:(22.85)10=(10110.1101100110)2详细计算过程如右所示。此例小数部分就出现了无穷循环(最后加下划线的0110将无限循环)。在手工进行转换时,往往很少使用上面介绍的方法,更多的是使用“凑数”的方法。当然这时候要求我们对二进制各位的权十分熟悉。如十进制数37=32+5=(100000)2+(101)2=(100101)2又例如十进制数126=128-2=(10000000)2-(10)2=(1111110)2(3)十进制数转换成八、十六进制数原理上可以使用与十进制数转换成二进制数类似的方法,整数部分除8(16)取余法;小数部分乘8(16)取整法。但在实践中,由于二进制转换成八、十六进制十分容易,所以一般可以先将十进制数转换成二进制数,再由二进制数转换成八进制或十六进制数。(4)二进制数与八、十六进制数的转换二进制数转换成八、十六进制数:以小数点为界,三(四)位一并。前后不足三(四)位时补零。例:(100111011.11001)2=(0001 0011 1011.1100 1000)2=(13B.C8)16例:(100111011.11001)2=(100 111 011.110 010)2=(473.62)8八、十六进制数转换成二进制数:以小数点为界,一分为三(四)。注意一定要一分为三(四)。例:(6E.A8)16=(0110 1110.1010 1000)2=(1101110.10101)2例:(73.23)8=(111 011.010 011)2=(111011.010011)222定点数在计算机内的表示和编码通常可以把计算机内部的数据划分为逻辑数据、数值数据、文本数据、图形数据和多媒体数据这样5种主要类型,尽管它们都选用二进制编码的形式来表示,但却属于不同类型信息的载体。数值型数据的编码是重点。对于数值型数据,我们引入“机器数”和“数的真值”(一般简称“真值”)的概念。机器数是指对数据完成符号位数字化处理后的机内表示,一般用0表示正,用1表示负。机器数所代表的实际值称为数的真值。最基本的数值型数据,分定点数(小数点位置固定的)和浮点数(小数点位置可移动的)。定点数又分为定点小数(小数点约定在符号位和最高数值位之间)和定点整数(小数点约定在最低数值位之后)。定点小数没有整数部分,定点整数没有小数部分。而浮点数有整数部分和小数部分。221定点小数和整数的编码方法(原码、反码、补码)注:以下都以一字节的机器数为例。1、原码:用机器数的最高一位表示符号(0代表正,1代表负)。其余位表示数值的绝对值。定点小数原码的定义:X原=表示范围:-(1-27)+(1-27)定点整数原码的定义:X原=表示范围:-(27-1)即-127+(27-1)即+127正数的原码是增加一位用0表示的符号位,负数的原码则是增加一位用1表示的符号位。在原码表示中,0有两种形式:+0原=00000000,-0原=10000000。原码表示的优点是,在数的真值与它的原码表示之间的对应关系简单,相互转换容易,用原码实现乘除运算的规则简单;缺点是用原码实现加减运算很不方便,要比较参与加减运算两个数的符号和两个数的绝对值的大小,才能确定运算结果的数值(实际是加还是减)和正确的符号等,因此在计算机中经常用后面介绍的补码实现加减运算。2、反码:正数:反码=原码;负数:对原码除符号位外逐位求反。在反码表示中,0也有两种形式:+0反=00000000,-0反=11111111。当机器数为一个字节时,表示范围为:定点小数:-(1-27)+(1-27)定点整数:-(27-1)即-127+(27-1)即+127用反码实现算术运算很不方便,一般很少使用。定点小数反码的定义:X反=定点整数反码的定义:X反=3、补码:定点小数补码的定义:X补=表示范围:-1+(1-27)。根据定义,-1的补码为2+(-1)=1,二进制形式为10000000。定点整数补码的定义:X补=表示范围:-27+(27-1)。根据定义,-27的补码为28+(-27)=128,二进制形式为10000000。实际操作:正数:补码=原码;负数:对原码除符号位外逐位求反加1。注:由x补求x原的操作为:正数不变,负数则除符号位外逐位求反加1。在补码表示中,0只有一种形式:+0补=-0补=00000000。补码表示的两个数在进行加法时,可以把符号位与数值位同等处理,只要结果不超出机器数能表示的范围(即不发生溢出),运算后的结果按2取模(对定点小数)或按28取模(对一字节定点整数)后(即忽略最高位即符号位向上的进位),得到的结果就是本次加法的正确结果(和的补码),即:X+Y补=X补+Y补 MOD 2或MOD 28补码的算术移位:当X补的符号位连同数值位一起右移一次并保持原符号位的值不变,可实现除2功能。当X补的符号位连同数值位一起左移一次,可实现乘2功能,但注意乘2的结果不能超出机器数能表示的范围。补码的意义:假设当前正确的时间是7点,而你的表却指向9点,则你的表快了2个小时,予以纠正的办法有:逆时钟方向拨2个小时(相当于做减法),但如果假设你的表指针只能顺时钟方向运动(只能做加法,不能做减法),那么我们也有办法来纠正,只要顺时钟方向拨12-2=10个小时(相当于做加法,这里10相当于-2的补码),指针也能指向正确的时间7点。这里就是用“加”运算来实现“减”运算。原因是因为钟表是一个有限系统,其中9+10=19中有一个12自然消失了,19-12=7,得到正确的结果。计算机的计数系统也是一个有限系统,所以也采用类似的方法,让“减”运算用“加”运算来实现,实现时只需要加法器即可。222二-十进制数的编码二十进制编码(BCD编码):用四位二进制表示一位十进制,四位二进制16个编码状态选用其中的10个有多种方案,例如:8421码,余3码,循环码等。二十进制编码又可区分为:有权码:每位上的1代表确定的值;无权码:无法确定每位上的1代表的值;例:有权码、无权码判别。以8421码、余3码为例。以余3码为例。假设余3码为有权码,则由其1用0100表示,可知0100中1所处位置的权为1,由其5用1000表示,可知1000中1所处位置的权为5,从而可知1100应该表示6(1+5),而实际余3码中1100表示9,产生矛盾。从而可知余3码不是有权码,而是无权码。对8421码,用以上相同的方法对其所有的10个编码进行推理,不会产生矛盾,所以它是有权码。用BCD码来表示十进制数字时,1个字节存放2位十进制数字,符号位放在最低位数字之后,一般用C表示正号,用D表示负号。23浮点数在计算机内的表示5、浮点数常用的编码方法浮点数是指小数点在数据中的位置可以左右浮动的数据。通常被表示为:N=(-1)SMRES符号位,一般用0表示正,1表示负。M尾数,通常用定点小数形式表示,决定浮点数的精度,即有效数字的位数。R指数的底,一般约定为2,不需要在浮点数中明确表示出来。E阶码,一般用移码表示,指出小数点在整个数据中的位置,决定浮点数的表示范围。在计算机内,浮点数通常被表示为如下格式:SEM1位m位n位以下我们以一个10进制的简单例子(并非计算机使用的)来说明浮点数的一些特点。考虑一种浮点数表示法:使用带符号的三位尾数M,它的表示范围为0.1|M|1(所谓的规格化),或者为0;阶码使用带符号的两位数(基数设为10)。这种表示法的表示范围,按绝对值计算从0.10010-99到0.99910+99,几乎跨越了10的199次方,但是只使用了五位数字和两个符号位(整个数的符号和阶码的符号),从而可知在占用同样位数的情况下,浮点数可表示的范围远大于定点数表示的范围。浮点数可以用于模拟数学中的实数,但是两者之间存在着不少不容忽视的差别。我们对实数作一种粗略的划分,把实数划分成7个区域:负数下溢0负数上溢正数上溢正数下溢可以表示的负数可以表示的正数(3)(4)(5)(1)(2)(6)(7)(1)小于-0.99910+99的大负数。(2)-0.99910+99到-0.10010-99之间的负数。(3)绝对值小于0.10010-99的小负数。(4)0。(5)绝对值小于0.10010-99的小正数。(6)0.10010-99到0.99910+99之间的正数。(7)大于0.99910+99的大正数。上图表示了以上7个区域在实数轴上的分布。使用三位尾数和两位阶码表示的浮点数和实数之间的主要区别在于前者不能表示1、3、5、7区域中的数。如果算术运算的结果使数字落在了区域1或者区域7,例如10501050=10100,就会产生上溢错并导致结果不正确。出现这种问题的原因在于有限位数的浮点数它的表示能力是有限的,因此出现这种问题也是不可避免的。同样,区域3和区域5的数也无法表示,这种情况称为下溢错。和上溢错相比,下溢的结果并不十分严重,因为区域3和区域5中的数一般情况下可以认为已经十分接近0了,所以通常可以用0来近似表示。浮点数和实数之间的另一个重要区别是它们的密度不同。无论两个实数多么接近,它们之间总存在另一个实数,这是实数的连续性。而有限位数的浮点数则没有连续性。例如0.100103除以3的结果就不能在我们的例子中精确地表示出来。如果计算的结果不能精确地表示出来,那么就需要用最接近它的数来表示它。上面的例子是使用三位尾数和两位阶码。若增加尾数的位数,可以增加数的密度,从而相应地提高表示的精度;增加阶码可以增大区域2和区域6,从而提高表示的范围。但不管如何改变,总是存在如上所述的问题。以下我们回到教材中的内容,浮点数的编码一般形式为N=(-1)SMRES代表符号位;M尾数的绝对值;E阶码;R阶码基数。实际计算机中M和E都以二进制代码形式表示,R一般约定为2,不必显式表示。在计算机内,浮点数通常被表示为如下格式:SEM1位m位n位通常情况下,数据的符号位S采用0表示正数,1表示负数的规则。数的尾数部分M采用定点小数形式,可用原码(或补码)表示。多数通用计算机中,浮点数的阶码部分E采用整数形式的移码表示。关于移码:对用n位二进制(包括符号位)表示的X的移码定义为:每个数(不论正负)加2n-1,即X移=2n-1+X,如n=8,则每个数的移码都是自身加128(可称为偏移值为128的移码。对同一个X,它的偏移值为128的移码和补码有简单的对应关系,数值位相同,符号位相反,移码用0表示负号,1表示正号)。以下列出了真值与相应的移码(偏移值为127的移码用于IEEE754浮点数标准,在后面有介绍)。真值移码(偏移值为128)偏移值为127的移码-12800000000-1270000000100000000-1260000001000000001-101111111011111100100000000111111111000000110000000210000010100000011261111111011111101127111111111111111012811111111移码只用于表示浮点数的阶码,故只用于整数。使用移码的优点是,便于比较两个浮点数的大小,移码表示的机器数与数在数轴上的排列关系一致,用在浮点数的阶码部分时,有利于加快浮点数的比较速度,并有利于判断浮点数的0。对两个浮点数进行乘除运算时,是尾数实现乘除运算,阶码执行加减运算。移码执行加减运算时,需要对得到的结果加以修正,修正量为偏移值。关于浮点数的规格化:若不对浮点数的表示格式作出明确规定,同一个浮点数的表示就不是唯一的。例如0.6可以表示为0.6100,也可以表示为0.06101、6010-2等。为了提高数据的表示精度,也为了便于浮点数之间的运算与比较,传统上规定计算机内浮点数的尾数部分用纯小数形式给出,而且当尾数的值不为0时,其最高位必须不等于0,这就是传统的浮点数规格化表示。对不符合这一规定的浮点数,要通过修改阶码并同时左右移尾数的办法使其变成满足这一要求的表示形式,这种操作被称为规格化处理,对浮点数的运算结果就经常需要进行规格化处理。以前,每个计算机厂商都使用自己的浮点数标准。这样对计算机产业显然是不利的。为了改变这种状况,国际电子电气工程师协会IEEE对浮点数进行标准化,制定并推出了相应的标准IEEE 754浮点数标准。现在大部分CPU的浮点数指令都符合IEEE 754浮点数标准。IEEE 754标准中定义了三种格式:短浮点数,又称为单精度(32位);长浮点数,又称为双精度(64位)和临时浮点数,又称为扩展精度(80位)。我们仅对单精度作一简单介绍。IEEE单精度浮点数格式如下符号位S阶码E尾数M1位8位23位符号位:0表示正数,1表示负数。在IEEE 754标准中,对浮点数的表示和存储进行了某些扩展,把浮点数划发为规格化浮点数、非规格化浮点数(用于表示非常小的更接近0的浮点数)、正负无穷大(使浮点数的覆盖范围更大)和非合法数据这几种形式,并对规格化浮点数采用了隐藏位技术,为此,阶码采用了偏移值为127的移码,即整数(不论正负)都加上127。以上也列了真值与偏移值为127的移码的对应关系。注意:00000000和11111111不用于规格化浮点数,所以对规格化浮点数,阶码的表示范围为-126到+127,对应的移码是1到254(0000000111111110)。尾数使用原码表示。规格化尾数(IEEE754的规格化标准):当尾数不为0时,其最高一位必定为1,在将这样的浮点数写入内存或磁盘时,不必给出该位,可左移一位去掉它,同时还要把原来的阶码值减1。这种处理技术称为隐藏位技术,目的是用同样多位的尾数能多保存一位二进制位,从而提高数据的表示精度。所以在内存或磁盘中的规格化浮点数的尾数由隐含的1、隐含的小数点和23位二进制数组成。如果内存或磁盘中的浮点数的23位尾数都是0,尾数的数值就是1.0;如果全部都是1,那么尾数的数值就比2.0略小。例:内存或磁盘中单精度格式表示的0.5(2-11)、1(201)、1.5(201.1),分别为:00111111000000000000000000000000(3F000000H)00111111100000000000000000000000(3F800000H)00111111110000000000000000000000(3FC00000H)注:加下划线部分为阶码。注意:在将浮点数取回运算器执行运算时,要恢复隐藏位的值和原来的阶码值。规格化数的最大绝对值为1.111111111111111111111112127规格化数的最小绝对值为1.000000000000000000000002-126除了“规格化数”,标准还定义了“非规格化数(用于表示非常小的更接近0的浮点数)”、“0”、“正负无穷大(使浮点数的覆盖范围更大)”和“非合法数据”这四种数据类型。阶码和尾数都为全0,是浮点数的0值,也有正0和负0之分,由符号位来决定。阶码为0(真值为-127)而尾数非全0,表示非规格化浮点数,不使用隐藏位技术。阶码为全1,尾数为全0,用于表示正无穷大和负无穷大。阶码为全1,尾数不全为0,是非合法数据,表明这不是一个浮点数。24文字和多媒体信息的表示与编码241西文字符的编码西文是由拉丁字母、数字、标点符号及一些特殊的符号所组成。ASCII码,用七位二进制表示一个字符,通常以字节为单位,则最高位补0。242汉字的编码汉字输入码,也称外码,为将汉字输入计算机(用普通键盘)而编制的代码。有数字编码,如区位码、国标码等;有拼音编码,如全拼码、双拼码等;有字形码,如五笔字形码、郑码等;有音形编码,如表形码、钱码等。汉字内码,又称机内码,用于汉字在计算机中的存储、交换、检索等。一般采用2字节表示。各种不同的输入法输入的汉字,其在计算机中的内码是相同的。汉字内码一般采用国标码加8080H。计算机中的汉字编码都是软件定义和处理的,通常硬件不直接提供对汉字处理的支持。汉字字形码,又称汉字字模码或点阵码,是对汉字字形经过点阵数字化后形成的一串二进制数,用于汉字的显示打印。汉字库中就是汉字的字形码。243多媒体信息的编码1、图的编码表示一幅图在计算机内部有两种表示方式:图像(image)方式和图形(graphics)方式。图像方式类似于汉字的点阵码,只是汉字点阵码描述的仅仅是形状(字模),而对于图像除了要描述形状外,还要描述其颜色或灰度。图形表示方式是根据画面中所包含的内容,分别用几何要素(如点、线、面、体)和物体表面的材料与性质以及环境的光照条件、观察位置等来进行描述。如工程图纸、地图等可以采用图形表示,它们易于加工处理,数据量也少。汉字字形的轮廓描述方法就属于图形表示。2、声音的编码表示计算机处理的声音可以分为三种,第一种是语音,即人的说话声,第二种是音乐,即各种乐器演奏出的声音,第三种是效果声,如掌声、雷声、爆炸等声音。计算机内部表示声音有波形法和合成法两种方法。所有的声音都可以用波形法来表示,但波形法更多用于语音和效果声,对于音乐,则用合成法来表示更好一些。波形法:声音可以用一种连续的随时间变化的声波波形来表示,计算机要对声音进行处理,必须将声波波形转换成二进制表示形式,即对声音进行数字化编码。声音数字化编码的三个步骤。采样,涉及到采样频率。采样频率越高,接收的声音信息就越多,声音的保真度越好。量化,即将每个采样值用二进制形式表示,涉及到量化位数,位数越多,量化精度越高,噪声越小,声音质量也就越好。上两个步骤也可称为对声音进行模数转换(A/D转换)。最后对产生的二进制数据进行编码(有时还需要进行数据压缩),以按照规定的统一格式进行表示。采样频率为44.1kHz,量位位数为16bit的一分钟声音的数据量:44.1100016/860=5292000Byte=5.3MB声音的另一种表示法是合成法,它主要适用于音乐在计算机内的表示,它把音乐乐谱、弹奏的乐器类型和弹奏的力度用符号来进行记录。目前广泛采用的一种标准是MIDI。与波形法相比,合成法的数据量要少的多(相差2到3个数量级),编辑也比较容易。但它主要适用于表现各种乐器所演奏的乐曲,不能用来表示语音等其他声音。为了处理上述两类数字声音信息,计算机内部有一个相应的声音处理硬件(如声卡),它用来完成对各种声音输入设备所输入的声音进行数字化编码处理,并将处理后的数字波形声音还原为模拟信号声音,经功率放大后输出。有的声音处理硬件可外接MIDI键盘,将弹奏的乐曲以MIDI形式输入计算机内,并将计算机处理后的MIDI乐曲经合成器合成为音乐声音后输出。3、视频信息的编码表示视频信息的处理是多媒体技术的核心。计算机通过在内部安装一个视频获取设备(如视频卡),将各类视频源(如电视机、摄像机和VCD机或放像机等)输入的视频信号进行相应的处理,转化为计算机内部可以表示的二进制数字信息。视频获取设备(如视频卡)将视频信号(如电视机、摄像机等)转换为计算机内部表示的二进制数字信息的过程称为视频信号的“数字化”。视频信息的数字化过程比声音更复杂,它是以一幅幅彩色画面为单位进行的。每幅彩色画面有亮度(Y)和色差(U、V)3个分量,对这3个分量需分别进行采样和量化,得到一幅数字图像。由于人眼对颜色信号的敏感度远不如对亮度信号灵敏,所以色度信号(U、V)的取样频率可以比亮度信号(Y)的取样频率低,以减少数字视频的数据量。CCIR601格式在每条扫描线上色度信号的取样只是亮度信号的一半,见下表。CIF和QCIF格式在水平和垂直方向上色度信号的取样都只是亮度信号的一半,见下表。几种常用数字视频的取样频率:CCIR601CIFQCIF行数/帧像素/行行数/帧像素/行行数/帧像素/行亮度(Y)576720288360144180色度(U)5763601441807290色度(V)5763601441807290视频信号编码数据量的计算:CCIR601:每秒的数据量:720576258+360576254+360576254=124416000b/秒124Mb/秒每分钟的数据量:124608=930MB/分1GB/分CIF:每秒的数据量:360288258+180144254+180144254=25920000b/秒26Mb/秒每分钟的数据量:26608=195MB/分从以上计算可知,数字视频信息的数据量非常大。一分钟CCIR601数字视频的数据量就约为1GB。这样大的数据量无论是存储、传输还是处理,都相当困难,必须进行压缩处理。在获取数字视频的同时立即进行压缩编码的处理,称为实时压缩。有些视频获取设备具有实时压缩的功能。2.5数据检验码1、概念与思路检错:仅能发现错误。纠错:不但能发现错误,还能纠正错误。注意:任何检错纠错码的能力都是有限的,并不能检查出或纠正所有可能发生的错误。一般都仅对发生概率最大的那类错误进行检查或纠正。校验码码距的概念:校验码中任意两个合法码字中具有不同代码的位的个数叫做这两个码字间的“距离”。一种码制可能有若干个码字,而且其中任意两个码字间的距离可能不同,我们将各码字间的最小距离称为“码距”,又称为海明距离。k位码有2k个编码状态(如k为3,则有000、001、010、011、100、101、110、111这样8个编码状态),全用于表示合法码,这时码距为1(如000与001码字间的距离为1),则任何一位出错,均变成另一个合法码,这时不具有检错能力。只有码距2时,校验码才具有检错能力,码距3时,才具有纠错能力。一般说来,合理地增大编码的码距,就能提高发现错误的能力,但表示一定数量的合法码所使用的二进制位数要增多,增加了电子线路的复杂性和数据存储、传送的量。在确定和使用数据校验码的时候,通常要考虑在不过多增加硬件开销的情况下,尽可能地发现较多的错误,甚至能自动纠正某些最常出现的错误。检错纠错码的基本思路:有效数据(传送前的数据、写入的数据等)在被传送或写入前,先按照某种关系附加上一定的冗余位,构成一个符合某一规则的码字后(一个码字是指数据位和校验位按照某种规律排列后得到的代码。)再传送或写入。在接收处收到或读出码字后,判断它是否仍然符合规则。若不符合规则,就可以判定传输过程中有错误发生。2、几种常用的检错纠错码(1)奇偶校验码奇偶校验码是通过增加一位冗余位来使得码字中“1”的个数为奇数(奇校验)或偶数(偶校验)的编码方法,相应的冗余位称为校验位。例:数据奇校验的编码偶校验的编码00000000100000000000000000010101000010101001010101000111111100111111110111111111111111111111111011111111上例中数据为8位,加1位校验位,码字为9位。码字中的最高一位是校验位。这种方法只能发现一位错或奇数个位错,但不能确定是哪一位错,也不能发现偶数个位的错。但一位出错的概率比多位出错的概率高得多,所以该方案有很好的实用价值。常用于可靠性要求不是特别高的存储器的读写检查(一些内存条中的数据校验就采用这种方法)和ASCII字符或其它类型信息的异步传输中的出错检查。例:ASCII码不加奇偶校验位时码距是1(如A的ASCII码为1000001,C的ASCII码为1000011,码距为1),加了一个奇偶校验位后的码距就变为2(原来码距为1,取原来码距为1的两个数。码距为1,意味着这两个数中只有1位不同,其它的位都相同,则这两个数中1的个数的奇偶性肯定也不同,加奇偶检验位时,加上去的奇偶检验位肯定也不同,从而增加了一个不相同的位,所以码距变为2。),增大了编码的码距,增加了发现错误的能力。这时任何一位差错(即只有一位出错)的出现,都使合法码字变成不合法码字。码字的合法与不合法可以通过特定的线路来判别(若为奇校验,则码字中1的个数为奇数为合法码字,1的个数为偶数为不合法码字),从而可以用来检测一位错。(2)海明校验码海明校验码:通过增加少数几个校验位,就能检测出二位同时出错,亦能检测出一位出错并自动恢复该出错位的正确值(自动纠错)。主要用于高档计算机中的存储器数据存取校验。实现原理:在n个数据位之外加上k个校验位,从而形成n+k个位的新码字,使新码字的码距比较均匀地拉大。使每一个数据位对应几个校验位的不同组合,当某一位出错后,就会引起相关的几个校验位的值发生变化,这一变化不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。海明校验码实质上是一种多重奇偶校验码。能纠一位错的编码所需的最少校验位数的推导:假定有n位数据位,k位校验位,码字长n+k,要求能纠正所有的一位错。k个检验位有2k个编码状态,可以选用其中1个状态表示海明码无错,用剩余的状态表示k+n位码字中每位单独出错的情况,由此得出数据位的位数n和检验位的位数k应满足的关系:2kn+k+1。此时的码距为3,校验能力是只能发现并纠正一位错,不能发现两位错。如要能检出并自动纠正一位错,并能同时发现两位错,则应该在前一条件下再增加一位被称为总校验位的方案来实现,这一位的关键作用是区分是一位错还是两位错。这时校验位的位数k与数据位的位数n应满足下述关系:2k-1n+k(本式是用k-1替代上式的k得到)。此时的码距为4。海明码编码的设计:设计海明码编码的关键技术,是合理地把每个数据位分配到k个校验组中(每个校验位需一个校验组,则k个校验位有k个校验组),以确保发现码字中任何一位出错;若要实现纠错,还要求能指出哪一位出错,对出错位求反则得到该位的正确值。例:设计一个针对3个数据位的海明校验码。解:数据为3位,用D3、D2、D1表示,根据公式2k-1n+k,需4位校验位(24-13+4,87),用P4、P3、P2、P1表示。用下表的关系,将每个数据位划分在形成不同校验位的逻辑表达式中。下表的做法:下表分三部分。第一部分为标题行,第二部分是中间的一些0、1二进制码,第三部分是最后一行,其中的数字是中间部分后4行二进制数竖着读下来的值。我们主要交代第二部分,即中间部分的0、1如何设置。设置方法如下:第一行全为1。除第一行外,P1列倒数第1行为1,其余为0;P2列倒数第2行为1,其余为0;P3列同理设置,P4列后3行全为0。将P1到P4后3行二进制数竖着读出来,分别是1、2、4、0,填入第三部分。由于P1到P4已经用了1、2、4、0,则分配D1、D2、D3为3、5、6,分别填入第三部分。然后在D1、D2、D3列的后3行中分别填入二进制形式的3、5、6。到此完成了下表的制作。D3D2D1P4P3P2P1111011011011100011001010P4根据这一行求得;P3根据这一行求得:P2根据这一行求得;P1根据这一行求得。10016530421传送前校验位的生成:对P1P3的值,用上表中处在与其取值为1的同一行中的用1标记出来的数据位执行偶校验来求得。对最高一位校验位(P4)通过对全部数据位和其他全部校验位执行偶校验来求得。从上表可得编码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年装配式建筑居间:高品质服务合同范本
- 2025年航空货运代理业务合同模板
- 2025年度特色小吃连锁品牌视觉识别系统设计及市场推广合作协议
- 2025年度科研院所延期科研项目经费借款合同官方范本
- 2025年办公楼室内装修一体化合同(含吊顶及灯具配置)
- 2025年北京市民间艺术品抵押贷款服务合同
- 2025新型环保印刷生产线整体升级及技术研发合作协议
- 2025年环保材料研发与节能降耗服务全面合作协议
- 2025孕期及产后心理康复与家庭关系调解合同
- 2025年品牌授权下终端零售商销售返利协议书
- 2025云南省腾冲市边防办招聘边境专职联防员(10人)笔试备考试题及答案解析
- 湘教版七年级地理上册同步课时教学设计
- 涂装安全知识培训课件
- GB/T 20833.2-2025旋转电机绕组绝缘第2部分:定子绕组绝缘在线局部放电测量
- 2025人教版(PEP)2024一年级上册英语教学计划
- 2025年高考甘肃卷地理试题解读及答案详解讲评(课件)
- 幼儿园保安培训课件
- 2025企业级AI Agent(智能体)价值及应用报告
- 《党政机关厉行节约反对浪费条例》培训课件
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 新教师跟岗学习实施方案
评论
0/150
提交评论