计算机科学导论--计算机体系结构与组织胡军南京航空航天大学hujun.nju@139.com2012,102020/2/1222.1计算机系统简介•现代计算机系统是一种能够按照事先存储的程序,自动、高速地对数据进行输入、处理、输出和存储的系统,由计算机硬件系统和计算机软件系统两大部分组成:–硬件系统:由一系列电子元器件按照一定逻辑关系连接而成,是计算机系统的物质基础;–软件系统:由操作系统、语言处理系统以及各种软件工具和应用软件等软件程序组成。计算机软件指挥和控制计算机硬件系统按照预定的程序运行和工作,从而达到预定目标。2020/2/1232.1.1计算机的硬件系统•现代计算机的基本工作原理是存储程序和程序控制(冯•诺依曼原理,1946年提出);其相应的计算机体系结构称为冯•诺依曼结构。•基本思想:–二进制替代十进制。–采用存储程序的思想。–把计算机从逻辑上划分为5大部分,即运算器、控制器、存储器、输入/输出设备。2020/2/124计算机的五大部件CPU运算器控制器运行结果程序、数据输入设备输出设备内存储器数据数据指令注:数据信号控制信号2020/2/1252.1.2计算机的软件系统•没有配备任何软件的硬件计算机称为裸机,裸机向外部世界提供的界面只是机器指令(…0101010…)。•计算机软件系统分为系统软件和应用软件–软件系统之间的层次结构(洋葱结构,抽象层次)–软件不仅包括程序,还包括相关的文档。•软件可能是有史以来人们所构造的最复杂的系统–如:微软的Windows系统比人类所建造的任何建筑都复杂的多2020/2/1262.1.2计算机的软件系统(续)•计算机科学中的核心概念–抽象(abstraction)–直观理解:一个实体(东西)的外部特征与内部构成细节之间的分离.(如:计算机,汽车,电视,微波炉等)–抽象能让我们忽略复杂设备的内部细节,而将其作为一个单一的可理解单元。正是通过这种抽象机制,复杂的系统才能被设计和生产出来.–具备抽象的能力也是人类区别于其他自然界动物的本质特征之一.2020/2/1272.1.2计算机的软件系统(续)•计算机科学中的核心概念–抽象(abstraction)–与“抽象”紧密相关联的另一个概念就是系统层次结构(hierarchy),每个层次都代表了一层抽象.–抽象并不局限于计算机、科学、技术,其实它在我们日常生活中无处不在.–计算机及其软件系统非常集中的、非常精巧的体现了人类处理复杂系统的抽象能力.2020/2/1282.1.3计算机系统主要技术指标•字长–字节(8位bit,byte);字(word):8位、16位、32位、64位•时钟周期/主频–CPU的节拍(心跳);指令的执行需要多个节拍•运算速度–平均指令执行时间;MIPS(每秒执行百万条指令数)•内存(存储)容量–字节为单位;1KB=1024Bytes,1MB,1GB,1TB,…•数据输入输出最高速率–32KBit/S;1MBit/S;……2020/2/1292.2数值数据计算机只能识别二进制编码的指令和数据,其他的如数字、字符、声音、图形、图像等信息都必须转换成二进制的形式,才能提供给计算机进行识别和处理。由于二进制只有两个状态即0和1,这正好与物理器件的两种状态相对应,如电压信号的高与低、电路的导通与截止、脉冲的有无等;而十进制电路则需要用10种状态来描述,这将使得电路十分复杂,处理也非常困难。2020/2/12102.2.1二进制数的逻辑运算操作•布尔(逻辑)运算:–AND(“与”)–OR(“或”)–XOR(exclusiveor)(“异或”)–NOT(“非”)•0和1其实就代表了真(True)和假(False)2020/2/1211AND、OR与XOR的布尔运算法则2020/2/12122.2.2门和触发器•门(Gate):可以进行布尔运算的设备,–齿轮、继电器、微电子电路(数字0和1由电压电平来表示)等;–门电路为构造计算机提供了最基础的构件;–VLSI(VeryLargeScaleIntegration,超大规模集成电路)2020/2/12132.2.2门和触发器(续)2020/2/12142.2.2门和触发器(续)•触发器(Flip-flops):由门电路组成的电路结构,可以用来保存数据0或1;–一个输入端用来设置其保存的值为1(即:输出为1);–另一个输入端用来设置其保存的值为0(即:输出为0);–当两个输入端都为0时,则不改变原有的值(即:输出保持不变);2020/2/12152020/2/12162.2数值数据(续)采用二进制将使得计算机在物理上实现简单、处理简单,且具有可靠性高、抗干扰能力强等优点。–数字式:用空桶表示二进制的0,盛满水的桶表示1;用桶的组合来表示数值;–模拟式:用桶中的水位来表示数值.2020/2/1217进位计数制(位置计数法)–(123.45)10=1×102+2×101+3×100+4×10-1+5×10-2–(101.01)2=1×22+0×21+1×20+0×2-1+1×2-2–ai:数码(数字符号),–X:基数,简称“基”或“底”(如:10,2)–Xi:权(每一固定位置对应的单位,如:102,101,22,21,等)i=-mn-1(N)x=∑ai×xi2.3数的表示及数制转换2020/2/1218计数规则:逢基数进一十进制系统中,进位原则是“逢十进一”在二进制系统中,其进位原则是“逢二进一”日常生活中常用十进制数;计算机内所有数据都是以二进制代码的形式存储、处理和传送在输入/输出或书写时,为了用户方便,也经常用到八进制和十六进制;“逢八进一”;“逢十六进一”2.3数的表示及数制转换(续)2020/2/1219各种进制的基、位权及基本符号进制名称基R位权基本符号十进制10…,103,102,101,100,10-1,10-2,10-3,…0,1,2,…,9二进制2…,23,22,21,20,2-1,2-2,2-3,…0,1八进制8…,83,82,81,80,8-1,8-2,8-3,…0,1,2,…,7十六进制16…,163,162,161,160,16-1,16-2,16-3,…0,1,…,9,A,B,C,D,E,F2020/2/1220数制间的基本关系十进制二进制八进制十六进制0000000010001011200100223001103340100044501010556011006670111077810001089100111910101012A11101113B12110014C13110115D14111016E15111117F2020/2/1221数制的表示下标法:用小括号将所表示的数括起来,然后在右括号右下角写上数制的基R。(123.45)10(101.01)2字母法:在所表示的数的末尾写上相应数制字母。010110B3AE2H2020/2/1222数制之间的转换其它进制转换为十进制二进制与八进制、十六进制的相互转换十进制数转换为其它进制数2020/2/1223其它进制转换为十进制例1:将二进制数1101.101转换为十进制数解:(1011.101)2=1×23+0×22+1×21+1×20+1×2-1+0×2-2+1×2-3=8+0+2+1+0.5+0+0.125=11.625例2:将十六进制数2AE.4转换为十进制数解:2AE.4H=2×162+10×161+14×160+4×16-1=512+160+14+0.25=686.252020/2/1224二进制与十六进制的相互转换方法:四位二进制对应一位十六进制(整数部分从右到左,小数部分从左到右)例1:将1011101001.110101B转换为十六进制数解:整数部分:0010111010012E9小数部分:11010100D4故1011101001.110101B=2E9.D4H2020/2/1225二进制与十六进制的相互转换例2:将5A.3BH转换为二进制数解:5A.3B1011010.00111011故5A.3BH=1011010.00111011B2020/2/1226例1:将十进制整数105转换为二进制整数解:2︳1052︳52余数为12︳26余数为02︳13余数为02︳6余数为12︳3余数为02︳1余数为10余数为1所以,(105)10=(1101001)2十进制数转换为二进制数或十六进制数2020/2/1227例2:将十进制小数(0.8125)转换为二进制小数,采用“乘2顺取整”的方法:0.8125×2=1.625取整数位10.625×2=1.25取整数位10.25×2=0.5取整数位00.5×2=1.0取整数位1所以,(0.8125)10=(0.1101)2注意:1.如果出现乘积的小数部分一直不为“0”(如:0.6876),则需要根据精度要求截取一定的位数(截断误差).2.只有很少一部分十进制小数具有精确的二进制浮点数表达。(运算过程的误差累积)(《数值分析》)十进制数转换为二进制数或十六进制数2020/2/1228思考与练习将十进制数11.375转换为二进制数将十进制数301.6875转换为十六进制数将3ADH转换为十进制数将10001110010001010B转换为十六进制2020/2/12292.4数的原码、反码和补码数有正负、整数、小数,因此,数值数据在计算机中的表示必须明确指明符号表示方法和小数点的位置表示方法。符号表示方法:占用一位二进制数位(最高位);“0”表示正号,“1”表示负号N1=+1101010N2=-1011100N1:01101010N2:110111002020/2/1230真值与机器数机器数是指数在计算机中的具体表示形式,我们将通常的数称为机器数的真值。在计算机中只有机器数,不存在数的真值。如:两个数N1和N2的真值分别为:N1=+1101010;N2=-1011100所对应的机器数分别为:N1:01101010;N2:110111002020/2/1231表示整数的原码、反码和补码二进制数值数据(整数)在计算机中有原码、反码和补码3种表示方法–主要考虑到实现数值运算电路设计的高效和可靠问题反码很少使用表示整数最普遍的系统:二进制补码–小数也可以用类似的方式来表示2020/2/1232原码原码:一个二进制数,最高位表示数的符号(0正,1负),其余各位保持不变表示数值本身。例:求+1011,-1011的原码原码的特点:数的原码与真值之间的关系较简单,与真值的转换方便适于作乘除运算在机器中进行加减法运算时比较复杂2020/2/1233补码补码:对于最左边的符号,如果是正数,补码的符号位为0,其余数值位不变;如果是负数,则补码的符号位为1,然后其余数值位按位取反后加1。2020/2/1234补码的运算应用二进制补码的计算机设计只需要用加法电路和取负电路就可以完成加、减、乘、除。简单、高效、可靠。溢出问题(overflow)(“千年虫”)如:4位二进制补码系统中,5+4=9(-7)?32位(最大数2147483647)、64位补码系统、…2020/2/1235数值数据中的小数点表示方法--定点数和浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数:定点数(fixed-pointnumber):小数点的位置事先已有约定,不再改变.浮点数(floating-pointnumber):小数点的位置可以变动;科学计数法小数点位置隐含约定(节省内存)2020/2/1236定点数基本思想:小数点固定,位于实数所有数字中间的某个位置;计算机设计时在机器结构中约定好.如:货币的表达(99.00或00.99)可以用于表达具有四位精度的数,小数点后有两位的货币值.定点整数定点小数16位定点整数形式表示的十进制数(195)16位定点小数形式表示的十进制数(-0.6876)2020/2/1237优点:计算规则简单、方便;机器硬件实现也较简单.(在特定需求场