计算机原理34097 264页

  • 1023.50 KB
  • 2022-08-30 发布

计算机原理34097

  • 264页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
高等院校计算机专业教材计算机原理张道光编著周兵主审西安电子科技大学出版社西安内容简介本书围绕计算机系统的组成,详细论述了各个部分的组成及工作原理,结合新的计算机技术应用,内容更具有创新性。全书共11章,其内容包括:计算机系统概论、数据的表示与校验、运算方法与运算器、存储器系统、指令系统、控制器、接口与输入输出、外围设备、总线、并行处理与互连网络、多处理机与机群系统。本书可作为高等院校计算机及相关专业本科生的教材,也可以作为计算机专业研究生及计算机工程技术人员的参考书。前言计算机技术的迅速发展对社会的进步带来了巨大的推动作用并产生了深远的影响,它正潜移默化地改变着人们的生产方式、工作方式、生活方式和学习方式,掌握计算机基本知识和应用技术已成为当今社会人们的迫切要求和参与社会竞争的必要条件,是衡量个人素质的重要标志之一。《计算机原理》是计算机科学与技术学科一门重要的专业基础课程,在计算机硬件课程群中起着承上启下的作用。为适应计算机的发展和教学改革的需要,编者结合多年的教学实践经验,首先进行内容“优化”,将计算机硬件课程群中相近的内容进行整合,使该教材既能体现原课程教材的主体面貌,又赋予了新的结构内容;其次突出内容“关联”,将内容之间的联系勾画出来,展现在读者面前,以达到“纲举目张”之目的;最后采用“案例教学”,针对目前学生普遍存在的“对设计无从下手,对问题束手无策”等现象,采用“案例教学”是培养学生分析解决、解决问题行之有效方法。全书共11章,第1章计算机概述;第2章计算机中数据的表示;第3章运算方法与运算器;第4章指令系统;第5章存储器系统;第6章控制器;第7章接口与输入输出;第8章外围设备;第9章总线;第10章并行处理与互连网络;第11章多处理机与机群系统。本书由张道光主编,并编写了第2章、第4章、第5章;第7章和第8章由副主编刘卫光编写;第10章由副主编夏冰编写;第1章和第3章由王鼎媛编写;第6章由张书钦编写;第9章和第11章由董跃钧编写。全书由张道光、周兵统稿。本书承蒙周兵教授审阅了全部书稿,并提出了许多宝贵意见,在此表示诚挚的感谢。由于时间仓促及编者水平有限,书中难免存在疏漏和错误,敬请广大读者批评指正。编者2008-10-25目录第1章计算机系统概论......................................................................................................................11.1计算机的发展与应用..................................................................................................................11.1.1计算机发展阶段和发展趋势................................................................................................1\n1.1.2计算机的应用........................................................................................................................31.2计算机系统的组成.....................................................................................................................41.2.1计算机系统的硬件................................................................................................................41.2.2计算机系统的软件................................................................................................................41.2.3计算机系统的层次结构........................................................................................................51.3计算机系统结构.........................................................................................................................61.3.1传统冯·诺依曼计算机系统结构........................................................................................61.3.2现代计算机系统结构............................................................................................................6关联..................................................................................................................................................7习题..................................................................................................................................................8第2章计算机中数据的表示..............................................................................................................92.1进位计数制及其之间的转换.....................................................................................................92.1.1进位计数制............................................................................................................................92.1.2进位计数制之间的相互转换..............................................................................................102.2定点数的表示............................................................................................................................112.2.1符号的表示..........................................................................................................................112.2.2小数点的表示......................................................................................................................122.2.3几种机器数形式..................................................................................................................122.3浮点数的表示............................................................................................................................162.3.1浮点数的格式......................................................................................................................162.3.2浮点数的规格化..................................................................................................................172.3.3浮点数的表示范围..............................................................................................................182.3.4浮点数的机器零..................................................................................................................182.4非数值数据的表示....................................................................................................................192.4.1ASCII码与字符串................................................................................................................192.4.2BCD码与十进制数串..........................................................................................................192.5数据校验码................................................................................................................................212.5.1奇偶校验码..........................................................................................................................212.5.2海明校验码..........................................................................................................................222.5.3循环冗余校验码..................................................................................................................24关联................................................................................................................................................26习题................................................................................................................................................27第3章运算方法与运算器................................................................................................................303.1定点数的算术运算与实现........................................................................................................303.1.1定点数加减运算..................................................................................................................303.1.2定点数乘法运算..................................................................................................................353.1.3定点数除法运算..................................................................................................................403.2逻辑运算和移位操作...............................................................................................................433.2.1逻辑运算..............................................................................................................................433.2.2移位操作..............................................................................................................................443.3定点运算器................................................................................................................................44\n3.3.1算术逻辑单元.......................................................................................................................443.3.2定点运算器的基本结构......................................................................................................483.3.3定点运算器模型..................................................................................................................493.4浮点数的算术运算与浮点运算器............................................................................................503.4.1浮点数的加减运算..............................................................................................................503.4.2浮点数的乘法和除法运算..................................................................................................513.4.3浮点运算器..........................................................................................................................53关联................................................................................................................................................54习题................................................................................................................................................55第4章存储器系统............................................................................................................................594.1存储器概述................................................................................................................................594.1.1存储器分类..........................................................................................................................594.1.2存储器系统结构..................................................................................................................604.1.3主存储器的技术指标..........................................................................................................604.2半导体存储器............................................................................................................................614.2.1半导体存储器分类..............................................................................................................614.2.2存储元电路..........................................................................................................................624.2.3存储器芯片..........................................................................................................................644.2.4存储器的扩展与应用..........................................................................................................734.2.5并行存储器..........................................................................................................................784.3高速缓冲存储器........................................................................................................................804.3.1Cache基本原理....................................................................................................................804.3.2Cache的结构........................................................................................................................814.3.3Cache的读写过程................................................................................................................854.4虚拟存储器................................................................................................................................854.4.1概述.....................................................................................................................................854.4.2页式虚拟存储器..................................................................................................................864.4.3段式虚拟存储器..................................................................................................................874.4.4段页式虚拟存储器..............................................................................................................884.4.5替换算法..............................................................................................................................89关联................................................................................................................................................90习题................................................................................................................................................91第5章指令系统................................................................................................................................945.1指令系统与性能........................................................................................................................945.1.1指令与指令系统..................................................................................................................945.1.2指令系统的性能..................................................................................................................945.2机器指令...................................................................................................................................955.2.1机器指令的格式..................................................................................................................955.2.2指令字的长度......................................................................................................................955.2.3机器指令的分类..................................................................................................................955.3操作码的编码方法....................................................................................................................96\n5.3.1定长编码..............................................................................................................................965.3.2变长编码..............................................................................................................................975.4地址码的寻址方式....................................................................................................................995.4.1指令寻址方式......................................................................................................................995.4.2操作数寻址方式.................................................................................................................1005.5典型的指令系统......................................................................................................................1035.5.1复杂指令系统....................................................................................................................1035.5.2精简指令系统....................................................................................................................105关联..............................................................................................................................................107习题..............................................................................................................................................108第6章控制器.................................................................................................................................1106.1CPU功能和组成.....................................................................................................................1106.1.1CPU的功能........................................................................................................................1106.1.2CPU的基本组成................................................................................................................1116.2控制器的时序系统和控制方式..............................................................................................1136.2.1有关周期的基本概念........................................................................................................1136.2.2时序信号与体制................................................................................................................1136.2.3时序信号发生器................................................................................................................1146.2.4控制方式............................................................................................................................1176.3指令流程图..............................................................................................................................1186.3.1五类典型指令的指令周期分析........................................................................................1186.3.2指令周期流程....................................................................................................................1256.4微程序控制器..........................................................................................................................1276.4.1基本概念............................................................................................................................1276.4.2微程序控制器基本原理....................................................................................................1296.4.3微程序设计......................................................................................................................1306.4.4微程序设计举例..............................................................................................................1346.4.5微程序控制器设计步骤..................................................................................................1376.5组合逻辑控制器......................................................................................................................1386.6门阵列控制器..........................................................................................................................1406.6.1可编程逻辑阵列PLA.......................................................................................................1416.6.2基本思想............................................................................................................................1416.7流水线处理技术......................................................................................................................1416.7.1指令执行方式....................................................................................................................1416.7.2流水线的分类....................................................................................................................1436.7.3线性流水线......................................................................................................................1436.7.4流水线中的相关问题........................................................................................................1456.8多媒体技术..............................................................................................................................1466.9典型CPU简介..........................................................................................................................1476.9.18086CPU............................................................................................................................1476.9.2Pentium微处理器..............................................................................................................148\n关联..............................................................................................................................................150习题..............................................................................................................................................151第7章接口与输入输出..................................................................................................................1557.1接口概述.................................................................................................................................1557.1.1接口的功能与组成............................................................................................................1557.1.2I/O端口的编址方式..........................................................................................................1567.1.3I/O端口地址的译码..........................................................................................................1567.2输入输出方式..........................................................................................................................1587.2.1程序控制传送方式............................................................................................................1587.2.2中断方式............................................................................................................................1617.2.3直接存储器方式................................................................................................................1657.2.4通道方式............................................................................................................................170关联..............................................................................................................................................171习题..............................................................................................................................................172第8章外围设备..............................................................................................................................1768.1外围设备概述..........................................................................................................................1768.1.1外围设备的概念................................................................................................................1768.1.2外围设备的分类................................................................................................................1778.1.3外围设备的功能................................................................................................................1778.2输入设备.................................................................................................................................1778.2.1键盘...................................................................................................................................1788.2.2鼠标...................................................................................................................................1788.2.3其他输入设备....................................................................................................................1798.3输出设备.................................................................................................................................1818.3.1显示器................................................................................................................................1818.3.2打印机................................................................................................................................1838.4外存储设备..............................................................................................................................1868.4.1磁表面存储器的原理.........................................................................................................1868.4.2磁记录方式.........................................................................................................................1878.4.3硬磁盘存储器....................................................................................................................1898.4.4光盘存储设备....................................................................................................................1918.4.4闪存...................................................................................................................................193关联..............................................................................................................................................194习题..............................................................................................................................................195第9章总线.....................................................................................................................................1979.1总线技术概述..........................................................................................................................1979.2总线系统结构..........................................................................................................................1999.2.1总线通道组成....................................................................................................................1999.2.2总线结构类型....................................................................................................................1999.3总线信息传送方式及定时......................................................................................................2019.3.1总线信息传送方式:........................................................................................................201\n9.3.2总线定时............................................................................................................................2029.4总线的仲裁..............................................................................................................................2029.4.1集中式仲裁........................................................................................................................2029.4.2分布式仲裁........................................................................................................................2049.5计算机中的总线......................................................................................................................2049.5.1内部总线............................................................................................................................2049.5.2外部通信总线....................................................................................................................2079.6新一代总线..............................................................................................................................2119.6.1PCIExpress总线................................................................................................................2119.6.2USB总线............................................................................................................................213关联..............................................................................................................................................216习题..............................................................................................................................................217第10章并行处理和互连网络........................................................................................................21910.1并行处理的概念....................................................................................................................21910.1.1并行性..............................................................................................................................21911.1.2并行性的等级和分类......................................................................................................21910.1.3开发并行性的途径..........................................................................................................22010.2并行处理机基本结构............................................................................................................22110.2.1并行处理机的两种典型结构..........................................................................................22111.2.2并行处理机的特点..........................................................................................................22210.3SIMD计算机基本结构...........................................................................................................22310.3.1SIMD计算机模型............................................................................................................22310.3.2SIMD计算机发展过程....................................................................................................22310.3.3IlliacIV计算机................................................................................................................22410.3.4BurroughsBSP计算机..................................................................................................22610.3.5CM-2计算机....................................................................................................................22810.4SIMD计算机的应用.............................................................................................................23010.4.1计算模型及有限差分......................................................................................................23010.4.2阵列处理机的几种基本算法..........................................................................................23110.5互连网络的概念....................................................................................................................23110.5.1基本概念和作用..............................................................................................................23210.5.2主要特性和性能参数......................................................................................................23310.5.3互连函数..........................................................................................................................23610.6静态互连网络........................................................................................................................23910.6.1静态互连网络结构..........................................................................................................23910.6.2静态互连网络特性..........................................................................................................24110.7动态互连网络........................................................................................................................24210.7.1动态互连网络的互连形式..............................................................................................24210.7.2动态网络互连方式的比较..............................................................................................24410.7.3多级互连网络..................................................................................................................24510.8互连网络的消息传递机制....................................................................................................245\n10.8.1消息寻径..........................................................................................................................24510.8.2死锁和虚拟通道..............................................................................................................24910.8.3单播方式下的寻径..........................................................................................................25210.8.4广播方式下的寻径..........................................................................................................254关联..............................................................................................................................................254习题..............................................................................................................................................255第11章多处理机与机群系统........................................................................................................25611.1多处理机系统特点与分类....................................................................................................25611.1.1基本结构..........................................................................................................................25611.1.2多处理机系统特点..........................................................................................................25711.1.3多处理机系统的Cache一致性问题..............................................................................25711.2多处理机软件和典型的多处理机系统................................................................................25911.2.1并行算法..........................................................................................................................25911.2.2程序并行性分析..............................................................................................................26011.2.3并行程序设计语言..........................................................................................................26111.2.4MPP和SMP.....................................................................................................................26111.2.5CM-5系统........................................................................................................................26411.3.3SGIOrigin2000系列服务器...........................................................................................26611.3机群系统................................................................................................................................26711.3.1机群系统的结构特点......................................................................................................26711.3.2机群系统的关键技术......................................................................................................26811.3.3提高通信系统的性能......................................................................................................26911.3.4几种典型系统..................................................................................................................271关联..............................................................................................................................................272习题..............................................................................................................................................2731第1章计算机系统概论【内容摘要】纵观计算机的发展长河,去认知计算机组成和计算机系统结构,正确理解计算机的一些基本概念,为后续内容的学习打下良好的基础。【学习要点】●计算机系统的硬件组成及其基本功能●计算机系统的软件组成与作用●计算机系统层次结构1.1计算机的发展与应用纵观计算机60多年的发展长河,我们可以明显看到计算机迅猛发展对人类社会的进步带来的巨大推动作用,尤其是微型计算机的出现和快速普及,极大地开拓了计算机更为广阔的应用领域,正潜移默化地改变人们的生产方式、工作方式、生活方式和学习方式。下面从计算机的硬件和软件两个方面来简单介绍计算机的发展历程。1.1.1计算机发展阶段和发展趋势1、按逻辑部件划分计算机发展阶段\n1946年2月,在美国的宾夕法尼亚大学研制成功了第一台电子计算机,称为“ENIAC”(ElectronicNumericalIntergratorandCalculator,电子数字积分器),它是一个重30吨、占地150平方米、每小时耗电150千瓦的庞然大物,其内部采用了18800只电子管,1500个继电器,与当今的微型计算机相比,相形见绌,只能送博物馆展览了,但它毕竟是计算机的鼻祖,是一个新生事物,自诞生之日起,便具有强大的生命力,随着主要电子器件的演变,计算机的发展按“代”划分为五个阶段。(1)电子管时代计算机(1946年~1959年)主要特点:逻辑器件━━━电子管主存━━━磁鼓辅存━━━磁带软件━━━机器语言、汇编语言应用━━━科学计算代表机型:IBM700系列计算机(2)晶体管时代计算机(1959年~1964年)主要特点:逻辑器件━━━晶体管主存━━━磁芯辅存━━━磁盘软件━━━高级语言、编译系统应用━━━除科学计算外,已开始应用于数据处理、过程控制代表机型:IBM7000系列计算机(3)集成电路时代计算机(1964年~1975年)主要特点:逻辑器件━━━小规模集成芯片主存━━━磁芯辅存━━━磁盘软件━━━高级语言、操作系统应用━━━科学计算、数据处理、过程控制代表机型:IBM360系列计算机、DEC生产的PDP-8小型商用计算机2(4)大规模/超大规模集成电路时代计算机(1975年~1990年)主要特点:逻辑器件━━━大规模/超大规模集成芯片主存━━━半导体存储芯片辅存━━━磁盘、光盘软件━━━高级语言、操作系统应用━━━科学计算、数据处理、过程控制,并进入网络应用时代代表机型:微型计算机(5)超级规模集成电路时代计算机(1990年~现在)随着集成电路的集成度进一步提高,出现了极大、甚大规模集成电路,推动计算机进入了第五个发展阶段。在此阶段,推出了32位、64位微处理器芯片,如Pentiun、Athlon64等,使微机的性能更上了一个台阶。同时,采用大规模并行计算和高性能机群计算技术的超级计算机也得到迅速发展,如IBM公司的“深蓝”超级并行计算机、我国2004年研制开发的“曙光”超级计算机。2、按应用特点划分计算机发展阶段\n计算机发展的每一个阶段与其应用密切相关,计算机按其应用特点可以划分三个阶段。(1)超、大、中、小型计算机阶段(1946年~1980年)计算机代替人的脑力劳动,提高工作效率,解决较复杂的数学计算和数据处理。(2)微型计算机阶段(1981年~1990年)随着微型计算机的普及和计算机技术的日新月异,计算机的功能日益强大,应用领域无所不在,无处不用,对世界科技和经济的发展起到了重要的推动作用。(3)计算机网络阶段(1981年以后)计算机技术与通信技术融合而聚变的网络技术在20世纪80年代以后发展极为迅速,由简单的远程终端,发展到今天遍布全球的因特网,实现了信息资源共享,推动了信息化社会的进程。3、计算机的发展趋势随着科学技术的不断进步,未来计算机将会朝着高性能、网络化、个性化等方向发展,具体体现以下几个方面:(1)两极发展方向当今计算机正朝着微型计算机和巨型计算机方向发展,微型计算机的发展和普及程度标志着计算机应用水平,巨型计算机的发展代表了计算机科学的发展水平。(2)智能化计算机它采用人工智能方法和技术,系统设计中充分考虑建造知识库管理系统,根据所存储的知识进行推理和判断,在某种程度上具有模仿人的思维功能,并具有声音和图像识别能力。(3)多媒体计算机它采用多媒体技术,充分考虑到人的听觉、视觉效果,将大量信息用数值、文字、声音、图形、图像、视频等进行展现,从而极大地改善人们生活、学习环境。(4)网络计算机计算机网络技术在压缩时空方面的出色表现而流行于世,已成为现代人们生活中必不可少的组成部分,它正朝着高速化、综合化、智能化方面发展。(5)非冯·诺依曼体系结构计算机冯·诺依曼(joheVonNeumman)在1946年提出了“存储程序”的计算机设计方案,人们把按照这一原理设计的计算机称之为冯·诺依曼计算机,该计算机“集中顺序控制”的串行机制严重制约了计算机的性能,为进一步提高计算机性能,非冯·诺依曼体系结构的计算机理论产生了,相继出现“并行处理机”、“神经网络计算机”、“生物晶体计算机”等。31.1.2计算机的应用随着计算机的普及和计算机技术日新月异,计算机应用范围从科学计算、数据处理等传统领域扩展到办公自动化、人工智能、电子商务、远程教育等,涉及到政治、经济、军事、科技以及社会生活的各个方面。归纳起来,计算机的应用有以下几个方面:1、科学计算在科学研究和工程技术中遇到的各类数学问题的计算统称为科学计算。科学计算问题复杂,计算量大,有些用人工计算甚至无法完成。例如地图着色的“四色问题”,需要上百亿次的计算,如果人工计算,一个人既便昼夜不停,也需要几万年!又如海域气象预报,如果用人工计算,算出结果时早已失去了实际意义。在工程预算方面,为选择一个理想的方案,往往需要计算几十个甚至上百个方案,只有使用计算机才能很好地解决上述问题。2、数据处理数据处理是指对数据进行收集、分析和加工等。据统计,世界上70%以上的计算机主\n要用于数据处理,因此,计算机不在是传统意义上的计算工具了,已成为数据处理领域最强有力的工具,被广泛用于信息传递、情报检索、企事业管理、金融、物流、办公自动化等。3、实时控制实时控制又称过程控制,要求及时地检测和收集被控对象的有关数据,并能按最佳状态进行自动调节和控制。利用计算机可以提高自动控制的准确性,实时控制广泛应用于冶金、机械、纺织、化工、电力等行业中。在军事上,导弹的发射、先进的防空系统等现代化军事设施通常都是计算机构成的控制系统。例如利用卫星定位系统控制导弹实际飞行轨道,直接袭击目标,其命中率几乎接近100%;美国在海湾战争和伊拉克战争中,计算机实时控制技术发挥了淋漓尽致的作用。4、计算机辅助系统计算机辅助设计CAD(ComputerAidedDesign)是人们借助计算机进行设计的一项专门技术,广泛应用于航空、制造、建筑及微电子技术等方面。首先按照设计任务书的要求提出设计方案,然后进行各种方案的比较,确定产品结构、外形尺寸、材料选择,进行模拟组装,再对模拟组装设备进行各种性能测试,根据测试结果进行修正,最后设计出产品,产品设计完成后再将其分解为零件、分装部件,并给出零件图、分装部件图、总体装配图等,上述全部工作都由计算机完成,大大降低了产品的设计成本,缩短了产品设计周期,因此,CAD技术被各制造业广泛应用。计算机辅助制造CAM(ComputerAidedManufacturing)是利用计算机代替人去完成制造过程相关工作,包括生产工艺控制、物料流控制、生产过程控制与仿真、质量控制与检测。目前人们将数控、物料流控制及储存、机器人、柔性制造、生产过程仿真等计算机相关控制技术统称为计算机辅助制造。利用计算机参与大脑的辅助工作是一个不断开拓的新领域,计算机辅助工艺规划CAPP(ComputerAidedProcessPlanning)、计算机辅助工程CAE(ComputerAidedEngineering)等越来越得到广泛的应用。5、人工智能人工智能研究如何让计算机模仿人类的高级思维活动,该领域是近年来重点开发的新兴领域,有着广阔的应用前景,被成功地用于机器人的研制和各类专家系统的开发,以及智能翻译系统、语音图像识别、密码分析、指纹鉴定等。6、远程教育Internet和WWW技术的发展带来了教育事业大变革,日渐兴起的远程教育使教学资源通过互联网穿越时空,学生受教育可以不受时间、空间和地域的限制,在全球的每一个角落通过网络自由学习,每一个学生都可以获得第一流老师的指导,都可以向世界最权威的专家请教,都可以从世界的任何角落获得最新的信息和资料。47、电子商务电子商务是指以电子形式进行的商品交易活动和服务。电子商务以其公平、快捷、方便、高效、中间环节少、24小时交易和服务等巨大优势赢得了人们的青睐,在短短几年时间,电子商务得到了突飞猛进的发展,电子商务已成为一股不可阻挡的潮流,改变整个未来世界的面貌,推动全球经济一体化的进程。1.2计算机系统的组成一个计算机系统是由硬件、软件两大部分组成。硬件是计算机系统的物质基础,没有硬件,再好的软件也无法运行;没有强有力的硬件支持,就不可能编制出高质量、高效率的软件;没有好的硬件环境,一些先进的软件也无法运行。同样,软件是计算机系统的灵魂,没\n有软件,再好的硬件也毫无用途,犹如一堆废物;没有高质量的软件,硬件也不可能充分发挥其效率。1.2.1计算机系统的硬件计算机的硬件由运算器、控制器、存储器、输入设备和输出设备五大组成部分,其中运算器和控制器是计算机的核心,统称为中央处理单元CPU(CentralProcessingUnit)。1、输入设备(InputDevice)输入设备用来向计算机输入程序和原始数据。可分为字符输入设备、图形输入设备和语音输入设备等,常用的输入设备有键盘、鼠标、扫描仪、光笔等。2、输出设备(OutputDevice)输出设备用来输出计算机的处理结果及程序,处理结果可以是数据、字符、表格、图形等,常用的输出设备有显示器、打印机、绘图仪等。3、存储器(Memory)存储器用来存放程序和数据,在控制器的控制下,可以与输入设备、输出设备、运算器、控制器等进行信息交换。计算机中的存储器分为三类:主存储器、辅助存储器和高速缓冲存储器。主存储器和高速缓冲存储器统称为内存储器,简称内存,由半导体存储器构成,是可以被CPU直接访问。辅助存储器又称为外存储器,简称外存,它不能被CPU直接访问。4、运算器(ArithmeticLogicUnit简称ALU)运算器是对数据进行运算的部件,其主要功能是对二进制数据进行算术运算(加、减、乘、除)和逻辑运算(与、或、非、移位),故又称为算术逻辑单元(ALU)。5、控制器(Controller)控制器是整个计算机的控制中心,其功能是控制计算机各个部件自动协调工作,具体而言,控制器的功能包括顺序控制、操作控制和时间控制。顺序控制是对程序中指令执行顺序的控制,换句话讲,如何保证计算机执行完一条指令后能够正确地取下一条指令并执行。操作控制是指计算机在执行一条指令时怎样产生这条指令所需的所有控制信号。时间控制是将指令所需的所有控制信号按照一定的时间顺序发送给相应部件,控制各个部件去完成相应动作,进而实现指令的功能。1.2.2计算机系统的软件计算机系统中各种软件的有机组合构成了计算机的软件系统,基本的软件系统包括系统软件和应用软件两大类。1、系统软件(1)操作系统操作系统是系统软件的核心,负责管理和控制计算机的硬件资源、软件资源和程序的运行,具体包括并发控制、内存管理、进程调度、I/O及文件管理等,它是用户与计算机之间的接口,提供了软件的开发环境和运行环境。5(2)语言处理程序由于计算机本身只能识别和处理用二进制的“0”或“1”形式表示的机器语言,因此任何用其他语言编写的都必须翻译为机器语言程序后才能由计算机去执行和处理。语言处理程序就是完成这种翻译工作的程序,其翻译方式有两种:一种称为解释,通过解释程序对用程序设计语言编写的源程序边解释边执行。另一种称为编译,通过编译程序将源程序全部翻译为机器语言的目标程序后再执行。(3)数据库管理系统数据管理系统被广泛应用在信息处理、情报检索和各种管理系统中,极大地方便了用户\n根据需要建立数据库,查询、显示、修改数据库的内容,打印各种表格等。(4)分布式软件系统分布式软件系统包括分布式操作系统、分布式编译系统、分布式数据库系统、分布式算法及软件包等,主要用于分布式计算环境、管理分布式计算资源、控制分布式程序的运行、提供分布式程序开发与设计工具等。(5)网络软件系统网络软件系统包括网络操作系统、网络协议、通信软件、网络应用程序等,支持网络活动和数据通信。人类借助计算机网络这个平台实现远程教育、网络聊天、视频点播、电子邮件、电子商务等。(6)各种服务程序服务程序是指为方便用户使用和维护计算机所编制的程序。这类程序包含的内容很广泛,如装入程序、编辑程序、调试程序、诊断程序等,一些通用的应用软件也可以作为服务程序,如文字处理程序、表格处理程序、图形处理软件等。2、应用软件应用软件是指用户为解决某个应用领域中的各类问题而编写开发的程序。由于计算机的应用极其广泛,所以应用软件种类繁多,极其丰富。目前应用软件正向标准化、集成化方向发展,许多通用的应用软件根据其功能组成不同的应用软件包,方便供用户选择使用。1.2.3计算机系统的层次结构由上述内容可知,计算机是硬件与软件相结合的一个整体,对于不同的应用、不同的对象、不同的设计者,计算机的复杂程度各不相同,从而使计算机具有了不同的属性。为了使计算机硬件和软件之间、系统与使用者之间更好地协调与配合,以便构成合理、高效的计算机系统,因此提出了计算机系统层次结构,如图1-1所示。1、微程序设计层此层可以进行微程序设计,由机器硬件直接执行微指令编写的微程序。2、指令系统层此层可以进行机器语言程序设计,该程序由第1层的微程序负责解释执行。3、操作系统层它由操作系统程序实现。操作系统程序是机器指令和广义指令组成,广义指令是对操作系统定义和解释的软件指令,因此,此层属于混合层。4、汇编语言层此层可以进行汇编语言程序设计,软件上需要汇编程序的支持。汇编语言层操作系统层指令系统层微程序设计层高级语言层5层3层2层\n1层图1-1计算机系统层次结构示意图4层65、高级语言层此层可以进行高级语言程序设计,是面向用户的,软件上需要各种高级语言编译程序的支持。由图1-1可以看到不同层次之间的关系:上面的一层是建立在下一层的基础上实现出来的,实现的功能更强大,更接近人解决问题的思维方式和处理问题的具体过程,对使用人员更方便,使用这一层提供的功能时,不必关心下一层的实现细节;下面一层是实现上一层的基础,更接近计算机硬件实现的细节,实现的功能相对简单,人们使用这些功能更感到困难。在实现这一层的功能时,可能尚无法了解其上一层的目标和将要解决的问题,也不必理解其更下一层实现中的有关细节问题,只要使用下一层所提供出来的功能来完成本层次的功能处理即可。采用这种分层次的方法来分析和解决某些问题,有利于简化处理问题的难度,在某一段时间,在处理某一层中的问题时,只需集中精力解决当前最需要关心的核心问题即可,而不必牵扯各上下层中的其他问题。1.3计算机系统结构1.3.1传统冯·诺依曼计算机系统结构传统冯·诺依曼计算机系统结构如图1-2所示。其硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。特点是以运算器为中心,采用存储程序原理,将编写好的程序预先存储到存储器中,然后启动系统自动执行程序。构成程序的指令是串行执行的,在控制器的控制下自动地、连续地从存储器中依此取出指令并进行分析和执行。存储器是按顺序的一维线性空间,按地址访问存储器。指令和数据采用二进制形式。图1-2传统的计算机基本结构框图1.3.2现代计算机系统结构由于传统冯·诺依曼计算机系统结构存在着很多缺点,首先是CPU与存储器之间的瓶颈和串行执行指令都会严重影响CPU功效的发挥;其次是高级语言与机器语言的巨大差异会带来较为繁重的编译工作;再者是较复杂的数据结构导致必须使用地址映射才能解决。以CPU为中心的传统冯·诺依曼计算机系统结构已不能计算机发展的需要,甚至会影响计算机的性能,因此,必须改变传统冯·诺依曼计算机系统结构,以适用计算机发展的需要。现代计算机系统结构孕育而生,新的计算机技术不断涌现。图1-3所示是以存储器为中心的现代计算机系统结构。现代计算机系统结构的计算机与传统冯·诺依曼计算机相比较,不同之处主要体现在三个方面:第一,现代计算机系统结构以存储器为中心,I/O设备与CPU可以并行工作,进一步改进了系统的性能。第二,现代计算机采用先行控制技术和流水线技术,改变传统的串行执行程序为并行,从而提高系统作业的吞吐量。第三,现代计算机中的存储器采用多体交叉存储器,可以在一个存储器访问周期中同时对多个存储单元进行访问,实现多字的一次性存取,增加存储带宽。输入设备控制器存储器运算器输出设备\n程序数据命令请求请求命令命令7图1-3现代的计算机基本结构框图关联基本概念CPU机器字长计算机系统存储程序计算机应用硬件系统存储器控制器输入输出运算器总线软件系统系统软件应用软件层次结构计算机的发展8习题1.1冯·诺依曼计算机由哪几个部分组成?各部分的功能是什么?1.2计算机的发展经历了哪几个时代?计算机有哪些方面的应用?1.3传统的计算机系统结构的特点?现代计算机系统结构为什么以存储器为中心?1.4解释下面术语的含义计算机系统、系统软件、计算机系统的层次结构、硬件、软件、微处理器、机器字长1.5单选题(1)1946年美国推出的世界上第一台计算机称为()。A、ENIACB、UNIVAC-IC、ILLIAC-IVD、EDVAC(2)完整的计算机系统包括两大部分,它们是()。A、运算器和控制器B、主机与外设C、硬件与软件D、硬件与操作系统(3)现代计算机系统结构是以()为中心的。A、运算器B、控制器\nC、存储器D、寄存器1.6填空题(1)CPU主要包括▁▁▁▁和▁▁▁▁两个部分(2)计算机系统的硬件包括▁▁▁▁、▁▁▁▁、▁▁▁▁、▁▁▁▁、▁▁▁▁等五大部分(3)从软件、硬件的交界面看,计算机层次结构包括▁▁▁▁和▁▁▁▁两大部分。9第2章计算机中数据的表示【内容摘要】数据是计算机处理的对象,它在计算机内部是用二进制信息来表示的,不仅表示形式最简单,而且,物理上最可靠。数据包括数值型数据和非数值型数据两种,数值型数据用于表示整数、小数和实数,其表示方式将会涉及数的位权、基数、符号、小数点等问题;非数值型数据用于表示字符、声音、图形、图像等,其表示方式主要是代码的约定。【学习要点】●进位计数制及其之间的相互转换●数据的定点表示法和数据的浮点表示法●机器数与真值●非数值数据的编码●数据的校验2.1进位计数制及其之间的转换2.1.1进位计数制进位计数制是一种按进位进行计数的制式。在日常工作生活中,我们习惯使用十进制数,而计算机内部则只能识别二进制数,但在程序设计时,数据往往用十进制数或十六进制数表示,而很少用二进制数,因为用二进制数表示数据或地址时,位数太长,书写不方便,易出错。进位计数制有两个特征:基数R(Radix):是指进制数中数码所允许取值的个数,且计数规则是“逢R进一”。位权W(Weight):是指基数R的i次幂(Ri),表示进制数中第i位的位权。1、十进制数(Decimal)十进制数是我们日常工作生活中最常用的数,数中的任一数码di∈{0,1,2,…,9},所以十进制数的基数为10,且逢十进一;十进制数的位权为10i。任何一个十进制数都可以用式(2-1)写成一个按权展开的多项式和的形式。D=dndn-1…d1d0.d-1…d-m=dn×10n+dn-1×10n-1+…+d1×101+d0×100+d-1×10-1+…+d-m×10-m=∑.=mnidi×10i(2-1)十进制数后缀为D,可省略。如78D,179.26D或78,179.26等。2、二进制数(Binary)二进制数中的任一数码bi∈{0,1},所以二进制数的基数为2,且逢二进一;二进制数的位权为2i。任何一个二进制数都可以用式(2-2)写成一个按权展开的多项式和的形式。\nB=bnbn-1…b1b0.b-1…b-m=bn×2n+bn-1×2n-1+…+b1×21+b0×20+b-1×2-1+…+b-m×2-m=∑.=mnibi×2i(2-2)二进制数后缀为B,如1001B,10011101.1101B等。3、十六进制数(Hexadecimal)十六进制数中的任一数码hi∈{0,1,2,…,9,A,B,C,D,E,F},所以十六进制10数的基数为16,且逢十六进一;十六进制数的位权为16i。任何一个十六进制数都可以用式(2-3)写成一个按权展开的多项式和的形式。H=hnhn-1…h1h0.h-1…h-m=hn×16n+hn-1×16n-1+…+h1×161+h0×160+h-1×16-1+…+h-m×16-m=∑.=mnihi×16i(2-3)十六进制数后缀为H,如23AH,9C78.1B3H等,A~F相当于十进制数的10~15。为了区分十六进制数和标识符(标号、变量等),当十六进制数首位为A~F时,其前必须加“0”,如0F08H,0C57.2H。2.1.2进位计数制之间的相互转换1、二进制数与十进制数之间的转换(1)二进制数转换为十进制数直接按式(2-1)展开并求和即可。【例2-1】将101110.101B转换为十进制数。解:101110.101B=1×25+0×24+1×23+1×22+1×21+0×20+1×2-1+0×2-2+1×2-3=46.625(2)十进制数转换为二进制数十进制数转换为二进制数有两种方法:直接法和查表法直接法:对于整数部分采用“除2取余法”,直到商为零,而余数(由低位到高位)即为转换成的二进制数整数部分;对于小数部分采用“乘2取整法”,而积的整数部分(由高位到低位)即为转换成的二进制数小数部分。最后将转换结果合起来便得到相应的二进制数。【例2-2】将25.696转换为二进制数。解:对整数部分,采用“除2取余法”,计算如下:因此25D=11001B对于小数部分,采用“乘2取整法”,计算如下:因此0.696D≈0.10110B25.696D≈11001.10110B查表法:利用十进制与二进制数对照表,把十进制数分解成2i多项式和的形式,然后查表求得对应的二进制数。十进制转换为二进制数对应关系如表2-1所示。\n表2-1十进制与2的整次幂之间的对应关系具体方法:把十进制数(整数和小数)分解成2的整次幂项的和,对于出现2的整次幂2-32-22-1202122232425262728292100.1250.250.512481632641282565121024126253222(最高位)2210余1(最低位)余0余0余1余1整数×20.696(最高位)1.3921(最低位)×2×2×2×21.1361.5680.3920.7840.1360.7840.5680.272011011项相应的位置数码取“1”,否则取“0”。【例2-3】将133.625D转换为二进制数。解:133.625D=128+4+1+0.5+0.125=27+22+20+2-1+2-3=10000101.101B2、二进制数与十六进制数之间的转换由于四位二进制数的编码与一位十六进制数的数码之间存在着一一对应的关系,如表2-2所示。因此,二进制数与十六进制数之间的转换十分简单、方便。表2-2二进制和十六进制之间的对应关系H0123456789ABCDEF\nB0000000100100011010001010110011110001001101010111100110111101111(1)二进制数转换为十六进制数以小数点为分界线,分别向左、向右按四位进行分组,不足四位者,在最前面或最后面补0,使之成为四位,然后,每四位按表2-2的对应关系用一位十六进制数来表示。【例2-4】将1111000111.10011B、110110001101B分别转换为十六进制数。解:1111000111.10011B=001111000111.10011000B=3C7.98H110110001101B=110110001101B=0D8DH(2)十六进制数转换为二进制数每一位十六进制数按表2-2的对应关系转换成四位的二进制数即可,小数点位置不变。【例2-5】将3F.75H转换为二进制数。解:3F.75H=00111111.01110101B=111111.01110101B3、十进制数与十六进制数之间的转换(1)十六进制数转换为十进制数直接按式(2-3)展开并求和即可。【例2-6】将7B9.62H转换为十进制数。解:7B9.3CH=7×162+11×161+9×160+3×16-1+12×16-2=1977.234375(2)十进制数转换为十六进制数采用类似于十进制转换为二进制数的方法,对于整数部分采用“除16取余法”,直到商为零,而余数(由低位到高位)即为转换成的十六进制数整数部分;对于小数部分采用“乘16取整法”,而积的整数部分(由高位到低位)即为转换成的十六进制数小数部分。最后将转换结果合起来便得到相应的十六进制数。这种方法因乘、除16比较复杂,一般采用下面间接方法。【例2-7】将105.75转换为十六进制数。解:105.75=1101001.11B=01101001.1100B=69.CH2.2定点数的表示2.2.1符号的表示计算机本身无法识别数据的符号(正号“+”、负号“-”),为了让计算机能够识别数的符号,必须用“0”和“1”来表示。因此规定:数据字的最高位为符号位,并且用“0”表示正(+);用“1”表示负(-)。于是一个数据字的书写形式和机器内的存储形式存在差异,为了区别这种不同,我们把书写形式(正、负符号加绝对值)的数据称为真值,机器内的存储形式(符号位加二进制数值)的数据称为机器数。一个数据的机器数究竟采用多少位表示,与机器的字长有关,若机器的字长是16位,则表示数据的机器数也是16位。机器数有一定的长度限制,相应的真值便会存在一定的范围要求,以8位机为例,8位的机器数相应的真值范围为-128~+127。十进制数二进制数十六进制数转换转换122.2.2小数点的表示数据中的小数点在计算机中有两种表示方法,即定点表示法和浮点表示法。1、定点表示法定点表示法所表示的数据为定点数。定点数指小数点在数中的位置是固定不变的。因此,\n计算机中数的小数点不用表示,或者隐含表示,不占用存储空间。下面以16位机为例说明定点表示法。(1)定点整数小数点被固定在数值位的最低有效位之后,其格式如下:(2)定点小数小数点被固定在符号位与尾数之间,其格式如下:定点整数表示的数只能是整数,而定点小数所表示的数只能是小数。在本书中,我们更侧重于定点小数。2、浮点表示法定点表示法难以表示数值很大的数据和数值很小的数据,为了表示更大范围的数据,数学上通常采用科学计数法,将数据表示成三部分:第一部分表示数据的符号;第二部分表示数据的有效值;第三部分表示数据中的小数点位置。改变了第三部分的数值,相当于改变了小数点位置,这种表示小数点的方法称为浮点表示法。浮点表示法所表示的数据是浮点数,浮点数x通常表示为:x=(-1)SM×Re其中,S(Sign)──符号,0表示正(+),1表示负(-)。M(Mantissa)──尾数,为定点小数,表示浮点数X的有效数字,决定浮点数的精度。e(exponent)──阶码,为定点整数,表示浮点数x中小数点的实际位置,是影响浮点数大小的主要因素,换一句话讲,决定了浮点数的表示范围。R(Radix)──基数,是一个系统中约定的常数,通常取值为2。由于R是一个常数,所以,浮点数在计算机中存储形式为S、E、M,其中E是阶码的移码形式。由此可见,浮点数的表示又归结到定点整数和定点小数表示问题。关于浮点数的表示更详细的内容将在2.3节中讨论。2.2.3几种机器数形式对于数据定点表示的符号问题,计算机如何处理符号位?符号位能否同数值位一样参加运算?为了妥善地处理好这个问题,下面以n位机为例,介绍几种定点数的机器数形式(机器数为n位,其中符号位占1位,数值位占n-1位,而小数点隐含)。1、原码原码是一种最简单、最直观的机器数表示形式,与真值的形式最为接近。(1)原码的定义设x为n位的二进制数据,式(2-4)和式(2-5)分别给出了x为定点小数±0.x1x2…xn-1和x为定点整数±x1x2…xn-1的原码定义。.D15D14D0尾数/数值位隐含的小数点符号位D15D14D0尾数/数值位隐含的小数点符号位13定点小数原码的定义:定点整数原码的定义:【例2-8】已知二进制数的真值x,求[x]原。①x=+0.0010110②x=-0.0010110③x=+0010110④x=-0010110解:由定义可得①∵x≥0,∴[x]原=x=0.0010110\n②∵x<0,∴[x]原=1-x=1.0010110③∵x≥0,∴[x]原=x=00010110④∵x<0,∴[x]原=27-x=10010110(2)原码所表示的数据大小以n位定点小数为例,分析原码所表示的数据范围。所以,n位定点小数的原码所表示的数据范围为[-(1-2-(n-1)),+(1-2-(n-1))]。0的原码形式有两种:+0的原码为0.00…0,-0的原码为1.00…0。(3)原码的运算特点1)原码的移位原码移位规则:符号位保持不变,数值位进行左移或右移,移出后出现的空位进行补0。【例2-9】已知x的原码[x]原,求[2x]原、[1/2x]原①[x]原=0.0101001②[x]原=1.0101001解:①[2x]原=0.1010010[1/2x]原=0.0010100②[2x]原=1.1010010[1/2x]原=1.00101002)原码的加减运算原码的加减运算较复杂,不仅要判断两个数的符号,确定是进行加法还是进行减罚运算,还要比较两个数的绝对值大小,来决定运算结果的符号。可见,原码不便于进行加减运算,对原码的符号位处理的硬件较复杂。为了简化运算,人们提出机器数的补码形式,从此,不再分别处理符号位和数值位,把符号位作为数值的一部分参与运算,并能将减法运算转换成加法运算,从而简化了硬件及结构,降低了成本。2、补码(1)互补数计数制中,为了简化计数,常采用一种计满归零的方法。例如钟表的计时,计满12归0,即12=0,于是有:13点=1点,14点=2点,…,23点=11点,24点=0点。因此,钟表是以12为模的计数方式,其数学表达式为:12=0(mod12)对于钟表的表盘,若时针指向12点,顺时针方向拨时针8格,即表示的时间为8点,而按逆时针方向拨时针4格,表示的时间仍为8点,因此,两种不同方向的拨法其结果是一样的,于是,8和-4是模12的互补数,记为:-4=8(mod12)对于任意一个数x,若模为M,则数x的补数[x]补数可由式(2-6)进行计算。[x]补数=M+x(modM)(2-6)x0≤x≤+(1-2-(n-1))(2-4)1-x=1+x∣∣-(1-2-(n-1))≤x≤0[]x原=x0≤x≤+(2n-1-1)(2-5)2n-1-x-(2n-1-1)≤x≤0[]x原=0.00…0+0┇0.11…1+(1-2-(n-1))n位定点正\n小数的原码1.00…0-0┇1.11…1-(1-2-(n-1))n位定点负小数的原码14根据式(2-6)可知:1)当x≥0时,M+x≥M,把M丢掉,[x]补数=x,即正数的补数等于他本身;2)当x<0时,[x]补数=M+x=M-∣x∣即负数的补数等于模与该数绝对值之差。【例2-10】求在模M=2的条件下,二进制数x的补数[x]补数①x=+0.0101001②x=-0.0101001解:①∵x≥0,∴[x]补数=2+x=x=0.0101001②∵x<0,∴[x]补数=2+x=2-∣x∣=2-0.0101001=1.1010111(2)补码的定义补码实际上是对模的补数,由于机器字长的限制,数据在计算机中的运算是有模运算。设x为n位的二进制数据,式(2-7)和式(2-8)分别给出了x为定点小数±0.x1x2…xn-1和x为定点整数±x1x2…xn-1的补码定义。定点小数补码的定义:定点整数补码的定义:【例2-11】已知x,求x的补码[x]补。①x=+0.0010110②x=-0.0010110③x=+0010110④x=-0010110解:由定义可得①∵x≥0,∴[x]补=x=0.0010110②∵x<0,∴[x]补=28+x=1.1101010③∵x≥0,∴[x]补=x=00010110④∵x<0,∴[x]补=28+x=11101010(3)补码所表示的数据大小以n位定点小数的补码为例,分析补码所表示的数据范围。所以,n位定点小数的补码所表示的数据范围为[-1,+(1-2-(n-1))]。小数0的补码形式只有一种:[+0]补=0.00…0,[-0]补=2+0.00…0=0.00…0。(4)补码的运算特点1)[x]补的移位补码的移位规则:补码的左移时,符号位保持不变,数值位进行左移,最底位出现的空位进行补0;补码的右移时,符号位保持不变,数值位进行右移,最高位出现的空位填补符号位。【例2-12】已知x的补码[x]补,求[2x]补、[1/2x]补①[x]补=0.0101001②[x]补=1.0101001解:①[2x]补=0.1010010[1/2x]补=0.0010100②[2x]补=1.1010010[1/2x]补=1.0010100在补码左移过程中,注意不要把高位的数值位移出,否则将会出错。例如,将8位定点正小数补码[x]补=0.1010011进行左移时,需要将最高数值位的1移出,如果将1\n移入符号位,正数的补码变成了负数的补码,造成符号出错;如果将1丢掉,又会失去最高位的有效数值x0≤x≤+(1-2-(n-1))(mod2)(2-7)2+x=1-x∣∣-1≤x≤0[]x补=x0≤x≤2n-1-1(mod2n)(2-8)2n+x-2n-1≤x≤0[]x补=0.00…0+0┇0.11…1+(1-2-(n-1))n位定点正小数的补码1.00…0-1┇1.11…1-2-(n-1)n位定点负小数的补码15而导致出错。同理,对于8位定点负小数补码[x]补=1.0010011进行左移时,也会出现同样的错误。2)[x]补与[x]原的转换若x≥0,则[x]原=[x]补。若x<0,则将[x]原除符号位以外的各位取反后,再在最底位上加1,即得到[x]补;反之,将[x]补除符号位以外的各位取反后,再在最底位上加1,即得到[x]原。【例2-13】已知[x]原,求[x]补。①[x]原=0.0010110②[x]原=1.0010110③[x]原=00010110④[x]原=10010110解:由定义可得①∵x≥0,∴[x]补=[x]原=0.0010110②∵x<0,∴[x]补=1.1101010③∵x≥0,∴[x]补=[x]原=00010110④∵x<0,∴[x]补=11101010从【例2-13】的结果中我们还可以看出一个规律:当x<0时,保持原码的符号位不变,从原码的最底位开始向高位扫描,在遇到第一个1之后,保持该位1和比他低的各位不变,将其余位取反,即得到[x]原对应的补码。【例2-14】已知[x]补,求[x]原。①[x]补=0.0010110②[x]补=1.0010110③[x]补=00010110④[x]补=10010110解:由定义可得①∵x≥0,∴[x]原=[x]补=0.0010110②∵x<0,∴[x]原=1.1101010③∵x≥0,∴[x]原=[x]补=00010110④∵x<0,∴[x]原=111010103)[x]补与[-x]补的关系\n已知[x]补求[-x]补称为对[x]补求补或变补。其规则是:将[x]补的各位取反(包括符号位),然后在最低位加1,即得到[-x]补。反之亦然。【例2-15】已知[x]补,求[-x]补。①[x]补=0.0010110②[x]补=1.0010110③[x]补=00010110④[x]=10010110解:由定义可得①[-x]补=1.1101010②[-x]补=0.1101010③[-x]补=11101010④[-x]补=011010103、反码反码实质上是一种特殊的补码,其特殊性在于反码的模比补码的模小2n-1。(1)反码的定义设x为n位的二进制数据,式(2-9)和式(2-10)给出了x为定点小数±0.x1x2…xn-1和x为定点整数±x1x2…xn-1的反码定义。定点小数反码的定义:定点整数反码的定义:【例2-16】已知x,求x的反码[x]反。①x=+0.0010110②x=-0.0010110③x=+0010110④x=-0010110解:由定义可得①[x]反=0.0010110②[x]反=1.1101001③[x]反=00010110④[x]反=11101001(2)反码所表示的数据大小以n位定点小数为例,分析反码所表示的数据范围。x0≤x≤+(1-2-(n-1))(mod(2-2-(n-1))(2-9)(2-2-(n-1))+x-(1-2-(n-1))≤x≤0)[]x反=x0≤x≤2n-1-1(mod(2n-1))(2-10)(2n-1)+x-(2n-1-1)≤x≤0)[]x反=16所以,n位定点小数的反码所表示的数据范围为[-(1-2-(n-1)),+(1-2-(n-1))]。小数0的反码形式有两种:+0的反码为0.00…0,-0的反码为1.11…1。4、移码移码通常用来表示浮点数的阶码e。我们知道阶码是整数,若采用定点整数补码形式表示,补码的符号位可以作为数值位,这样一来,负数补码的值总大于正数补码的值,在进行对阶时,需要进行比较两个浮点数的阶码大小,比较起来就不直观和方便。因此,人们提出了移码形式。浮点数阶码e的移码形式我们记为“E”。移码E实质上是将阶码e的真值映像到一个正数域,这样移码E的大小可以直观地反映出真值的大小,便于比较数值的大小。若阶码e的真值范围为[-128,+127],则E=128+e,移码E的范围是[0,255]。(1)移码的定义设x为n位的二进制数据,式(2-11)给出了x为定点整数±x1x2…xn-1的移码定义。定点整数移码的定义:[x]移=2n-1+x-2n-1≤x≤2n-1-1(2-11)由式(2-11)知,移码是把真值x在数轴上正向平移了2n-1,所以,移码也称为增量或余\n码。(2)移码所表示的数据大小对于n位定点整数的移码,其表示的数据范围。所以,n位定点整数的移码所表示的数据范围为[0,2n-1],0的移码形式只有一种,即100…0。(3)移码与补码的关系1)当0≤x≤2n-1-1时,∵[x]补=x,[x]移=2n-1+x,∴[x]移=2n-1+[x]补2)当-2n-1≤x<0时,∵[x]补=2n+x,[x]移=2n-1+x,∴[x]移=2n-1+[x]补-2n=[x]补-2n-1【例2-17】已知二进制数x,求[x]补和[x]移①x=+0101001②x=-0101001解:①∵x≥0,∴[x]补=00101001[x]移=10101001②∵x<0,∴[x]补=11010111[x]移=010101112.3浮点数的表示2.3.1浮点数的格式根据浮点表示法可知,计算机中的一个浮点数由阶码E、尾数M和符号S三个部分组成。其中E为定点整数的移码形式,M为定点小数的补码形式,S为数符。由于三个部分所占的位置和长度不同,浮点数的格式也不相同,为此,美国IEEE(电气电子工程师协会)提出了一个从系统结构角度支持浮点数的表示方法,称为IEEE754标准,是目前计算机普遍采用的标准。(1)32位单精度浮点数格式(IEEE754标准)32位单精度浮点数格式如图2-1所示。符号位S(1位)阶码E(8位)尾数M(23位)图2-1IEEE754标准32位单精度浮点数格式100…00┇011…12n-1n位定点整数的移码0.00…0+0┇0.11…1+(1-2-(n-1))n位定点正小数的反码1.00…0-(1-2-(n-1))┇1.11…1-0n位定点负小数的反码17S:数符,占1为。S为0表示“+”,S为1表示“-”。E:阶码e的移码形式,占据8位,包括1位阶符和7位数值。将阶码e的真值平移127便转换成移码E,即E=127+e。移码E的取值范围为[1,254],0和255\n用于表示特殊含义的数值。M:尾数,占23位。由于尾数的规格化要求,IEEE754标准约定小数点左边隐含一位“1”,从而使尾数的实际有效位为24位,即尾数的有效值为1.M。根据上述规定,32位单精度浮点数所表示的数值x为:x=(-1)S×2E-127×1.M若E=0,且M=0,则x为0若E=0,且M≠0,则x=(-1)S×2-127×0.M,为非规格化浮点数若1≤E≤254,则x=(-1)S×2E-127×1.M,为规格化浮点数若E=255,且M≠0,则x为“非数值”若E=255,且M=0,则x=(-1)S×∞值得注意的是:非规格化浮点数和0的尾数M前的隐含位是“0”而不是“1”。【例2-18】将5/32和-69.625表示成IEEE754单精度浮点数的格式。解:①5/32=0.00101B=1.01B×2-3,按IEEE754单精度浮点数的要求,∵x≥0,∴S=0∵尾数的有效值为1.M,∴M=01000000000000000000000B∵E=127+e,∴E=127+(-3)=124=01111100B5/32表示成IEEE754单精度浮点数的格式为:00111110001000000000000000000000②∵-69.625=-1000101.101B=-1.000101101B×26∴S=1M=00010110100000000000000BE=127+6=133=10000101B,其浮点数格式如下:11000010100010110100000000000000【例2-19】将IEEE754单精度浮点数42E48000H转换成真值十进制数。解:按IEEE754定义的单精度浮点数格式单精度浮点数42E48000H可表示为:01000010111001001000000000000000∴S=1,E=10000101B=133,M=11001001000000000000000B=0.78515625,其浮点数对应的真值为:(-1)S×2E-127×1.M=(-1)0×2133-127×1.78515625=1.78515625×26=114.25(2)64位双精度浮点数格式(IEEE754标准)64位双精度浮点数格式如图2-2所示。符号位S(1位)阶码E(8位)尾数M(23位)图2-2IEEE754标准64位双精度浮点数格式64位双精度浮点数所表示的数值x为:x=(-1)S×2E-1023×1.M2.3.2浮点数的规格化浮点数规格化的目的在于:一方面为了提高运算精度,尽可能占满尾数的位数,以保留更多的有效数字;另一方面保证了浮点数的唯一性。例如,对于浮点数0.001011×26,由于0.001011×26=0.101100×24=0.000001011×29=……,所以,同一个数0.001011×26就有多种表示,无法保证其唯一性。另外,如果规定尾数为6位,0.000001011×29就成了0.000001×29,从而丢掉了有效数字,降低了数的精度。对于基数R为2的浮点数,其规格化条件是:0.5≤M∣∣<1。在计算机中,浮点数通常是以规格化形式存储和参加运算的。18\n如果运算结果出现了非规格化浮点数,则必须对结果进行规格化处理。2.3.3浮点数的表示范围浮点数的格式被确定后,其所表示的数据范围也就确定了。求浮点数的表示范围,实质上是分析出浮点数所表示的最大数、最小数等。下面针对基数R为2的浮点数(阶码为m+1位(包括1位阶符),尾数为n+1位(包括1位数符)),分别讨论不同形式的机器数所表示的规格化和非规格化的最大、最小数。1、阶码和尾数均采用原码表示阶码和尾数均采用原码表示时,典型浮点数的机器数和真值如表2-3所示。表2-3阶码和尾数均用原码表示时机器数的规格化和非规格化最大、最小数典型浮点数机器数真值非规格化最小正数0111…100…01+2-n×2-(2m-1)规格化最小正数0111…110…00+2-1×2-(2m-1)最大正数0011…111…11+(1-2-n)×2(2m-1)非规格化最大负数1111…100…01-2-n×2-(2m-1)规格化最大负数1111…110…00-2-1×2-(2m-1)最小负数1011…111…11-(1-2-n)×2(2m-1)2、阶码和尾数均采用补码表示阶码和尾数均采用补码表示时,典型浮点数的机器数和真值如表2-4所示。表2-4阶码和尾数均用补码表示时机器数的规格化和非规格化最大、最小数典型浮点数机器数真值非规格化最小正数0100…000…01+2-n×2-2m规格化最小正数0100…010…00+2-1×2-2m最大正数0011…111…11+(1-2-n)×2(2m-1)非规格化最大负数1100…011…11-2-n×2-2m规格化最大负数1100…001…11-(2-1+2-n)×2-2m最小负数1011…100…00-1×2(2m-1)3、阶码和尾数分别采用移码和补码表示阶码和尾数分别采用移码和补码表示时,典型浮点数的机器数和真值如表2-5所示。表2-5阶码用移码尾数用补码表示时机器数的规格化和非规格化最大、最小数典型浮点数机器数真值非规格化最小正数0000…000…01+2-n×2-2m规格化最小正数0000…010…00+2-1×2-2m最大正数0111…111…11+(1-2-n)×2(2m-1)非规格化最大负数1000…011…11-2-n×2-2m规格化最大负数1000…001…11-(2-1+2-n)×2-2m最小负数1011…100…00-1×2(2m-1)2.3.4浮点数的机器零计算机在对浮点数处理的过程中,首先是判“0”,因为,当一个浮点数是“0”时,运算可以简化。机器零是指如果一个浮点数的尾数为全0,则不论阶码为何值;或者如果一个浮点数的阶码小于它所能表示的最小值,则不论其尾数为何值,计算机都会把这种浮点数当作零看待。特别是当阶码用移码表示、尾数用补码表示时,如果阶码为它所表示的最小数-2m(阶码为m位)且尾数为0时,其阶码的移码形式为全0,尾数的补码形式也为全0,这时的浮点数的机器数形式也为全0,从而有利于简化机器的判0电路。\n192.4非数值数据的表示2.4.1ASCII码与字符串字符和字符串是计算机中用得最多的非数值数据,人们利用字符和字符串编写程序、表达文字及各类信息,以便于与计算机进行交流。为了使计算机硬件能够识别和处理字符,必须对字符按一定规则用二进制进行编码。1、ASCII码ASCII码(AmericanStandardCodeforInformationInterchange美国标准信息交换码)是目前国际上广泛使用的字符编码。ASCII码为7位二进制编码,可表示128个字符,包括10个数字字符(0~9)、52个英文字母(大、小写各26个)、34个常用符号和32个控制字符(如空格符NUL、回车符CR、换行符LF等)。表2-6所示为ASCII编码。7位ASCII码用b6b5b4b3b2b1b0表示,其中b6b5b4为ASCII码的高3位,是字符所在表中列的编码;b3b2b1b0为ASCII码的低4位,是字符所在表中行的编码。表2-6ASCII码字符表b6b5b4b3b2b1b00000010100111001011101110000NULDLESP0@Pp0001SOHDC1!1AQaq0010STXDC2″2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB′7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l∣1101CRGS-=M]m}1110SORS﹒>N.n~1111SIUS/?O_oDEL在计算机中,一个字符用一个字节表示,由于ASCII码只有7位,因此,表示字符的字节的最高位b7有以下用法:(1)b7置0,用于表示字符的ASCII码(2)b7置1,用于表示汉字的编码(3)b7用作奇偶校验位2、字符串字符串是指连续的一串字符。由于一个字符占一个字节单元,所以字符串在存储时要占连续的多个字节单元,至于存储顺序不同的机器可以有不同的规定,字符串中的字符既可以从低位字节向高位字节顺序存放,也可以从高位字节向低位字节顺序存放。\n2.4.2BCD码与十进制数串1、8421BCD码BCD(BinaryCodedDecimal)码是对一位十进制数所进行的编码,其目的在于:一方20面方便快捷地将十进制数转换成二进制形式的数据;另一方面直接实现对十进制数的运算。BCD码的编码方法有多种,较常用的有8421BCD码、2421BCD和余3码。常见的BCD码如表2-7所示。表2-7BCD码一位十进制数8421BCD码2421BCD码余3码00000000000111000100010100200100010010130011001101104010001000111501011011100060110110010017011111011010810001110101191001111111008421BCD码是4位二进制编码,“8421”是指4个位置的位权分别为8、4、2、1,有且只有10个编码。由于4位二进制的编码有且只有16个编码,所以,8421BCD码与4位的二进制编码之间并不存在一一对应的关系。在对十进制数直接进行运算时,其结果可能会出现非8421BCD码,此时需要及时进行加6(0110)修正,否则,运算的结果会出错。另外需要注意的是BCD码是对一位十进制数所进行的编码,对于多位十进制数,则应用多个BCD码组合起来表示。例如十进制数147,对应的8421BCD码为000101000111。2、十进制数(1)非压缩型十进制数非压缩型十进制数主要应用于显示、打印等非数值处理过程中,是将十进制数以字符串的形式进行表示,即把十进制数中的每一位数字以及数的正、负符号都当作一个字符,用一个字节表示其ASCII码。根据数的符号(+、-)的ASCII码所存储的位置不同,非压缩型十进制数又可分为前分隔非压缩型十进制数和后嵌入非压缩型十进制数。1)前分隔非压缩型十进制数前分隔非压缩型十进制数的表示方法是:数的符号占一个字节,正号“+”的ASCII码为2BH,负号“-”的ASCII码为2DH,位于十进制数的数字位之前。【例2-20】采用前分隔非压缩型十进制数,写出十进制数+256和-1716在内存的存储形式。解:+256在内存的存储形式为:2B323536“+”“2”“5”“6”十进制数+256在内存中共占4个字节单元。-1716在内存的存储形式为:2D31373136“-”“1”“7”“1”“6”\n十进制数-1716在内存中共占5个字节单元。2)后嵌入非压缩型十进制数后嵌入非压缩型十进制数的表示方法是:数的符号不单独占一个字节,而是嵌入到最低位数字的编码中。其嵌入规则是:若数的符号为正号“+”,则最低位数字的ASCII码保持不变;若数的符号为负号“-”,则最低位数字的ASCII码加上40H。【例2-21】采用后嵌入非压缩型十进制数,写出十进制数+256和-1716在内存的存储形式。21解:+256在内存的存储形式为:323536“2”“5”“6”十进制数+256在内存中共占3个字节单元-1716在内存的存储形式为:31373176“1”“7”“1”“6”十进制数-1716在内存中共占4个字节单元(2)压缩型十进制数压缩型十进制数既能节省存储空间,又便于直接进行十进制运算,是被广泛采用的十进制数表示方法。此方法是用一个字节存放两位十进制数的BCD码,数的符号(+、-)占半个字节,并存放在最低位数字的BCD码之后。数的符号所占的半个字节规定为:“1100”表示正号(+),“1101”表示负号(-)。为了保证此表示方法不出现只有半个字节的情况,规定压缩型十进制数数字个数和1位符号之和必须是偶数,否则,在最高位数字之前补一个数字0。【例2-22】采用压缩型十进制数,写出十进制数+256和-1716在内存的存储形式。解:+256在内存的存储形式为:0010010101101100“2”“5”“6”“+”十进制数+256在内存中共占2个字节单元-1716在内存的存储形式为:00010111000101101101“1”“7”“1”“6”“-”十进制数-1716在内存中共占3个字节单元2.5数据校验码数据在存储和传送的过程中,难免不会出现错误,为了减少和避免错误的发生,一方面从硬件方面采取措施,提高硬件本身的抗干扰能力和可靠性;另一方面在数据编码上采取检错纠错的措施,使得机器能够自动发现错误,甚至能纠正错误。我们把这种具有检测错误或带有自动纠错能力的数据编码称为数据校验码。其原理是在数据中加入一些校验位,组成数据校验码,通过检查数据校验码的合法性来判断是否出错或进行纠错。常用的数据校验码有奇偶校验码、海明校验码和循环冗余校验码(CRC)等。2.5.1奇偶校验码奇偶校验码是一种最简单、最常用的校验码,被广泛应用于内存的读写校验和串行通信。1、奇偶校验码的编码对于n位二进制数D=dn-1dn-2…d1d0,添加一位校验位P,P的位置可以在数据D的最高\n位dn-1之前,也可以在数据D的最低位d0之后,并且,P是数据D的函数,即P=.(D)。于是,n位数据D和1位校验位P便构成了一个n+1位的奇偶校验码。奇偶校验码根据P~D之间的函数不同,可分为奇校验和偶校验。偶校验(Even):加入一位校验位PEven后,使得n+1位的奇偶校验码中“1”的个数为偶数,因此,PEven=dn-1⊕dn-2⊕…d1⊕d0。奇校验(Odd):加入一位校验位POdd后,使得n+1位的奇偶校验码中“1”的个数为奇数,因此,POdd=EvenP。2、奇偶校验码的校验22发送端将一个奇偶校验码发送后,接收端需要对接收到信息进行校验,判断所接收到的数据是否有误,以决定其取舍。具体校验方法为:如果接收端接收到一个1的个数为偶数的奇校验码,或接收端接收到一个1的个数为奇数的偶校验码,则表示接收端所接收的是一个有错的校验码。通过设置出错标志E(E=0,表示无误;E=1,表示有误),很容易实现校验。偶校验的出错标志EEven:EEven=dn-1⊕dn-2⊕…d1⊕d0⊕PEven奇校验的出错标志EOdd:EOdd=dn-1⊕dn-2⊕…d1⊕d0⊕POdd3、奇偶校验码的纠错能力根据奇偶校验码的校验可知,奇偶校验码只能发现一位出错或奇数位同时出错,至于出错的位置是无法确定的,因此,奇偶校验码无法实现纠错功能。尽管如此,由于一位出错的概率远远高于多位同时出错的概率,奇偶校验码能够满足一般可靠性的要求,因此,奇偶校验码一种最简单、最常用的数据校验码,它被广泛应用于对存储器中数据的检查或传送数据的检查。2.5.2海明校验码海明校验码是由RichardHamming于1950年提出的,到目前还被广泛应用。它是在奇偶校验的基础上,通过合理增加校验位的位数,组成海明校验码,不仅能够实现发现多位出错,而且能够对一位出错进行自动纠正。1、海明校验码中校验位的位数设数据的位数为n,校验位的位数为k,则组成的海明校验码为n+k位。校验时k位校验位的编码共有2k种状态,其中只有一种状态用来表示数据无误,其余2k-1种状态用来表示数据有措。由于海明校验码共n+k位,所以校验位的位数k与数据的位数n应满足:2k-1≥n+k(2-12)根据式(2-12)可计算出具有检测一位出错并能纠正一位错误能力的海明校验码中k与n的具体对应关系,如表2-8所示。表2-8海明校验码中校验位的位数k与数据的位数n的关系n最小的k1~445~11512~26627~577\n58~12082、海明校验码的编码设n位的数据为Dn-1…D1D0,k位的校验位为Pk-1…P1P0,组成的海明校验码为HmHm-1…H1,其中m=n+k,海明校验码的编码规则为:(1)校验位Pi在海明校验码HmHm-1…H1中的位置每一个校验位Pi在海明校验码中被安置在位号为2i的位置(i∈{0,1,…,k-1}),校验位Pk-1可能不满足这个关系,将其安置在海明校验码的最高位。其余各位为数据位,并按从低位到高位依次排列。(2)海明校验码HmHm-1…H1的校验海明校验码HmHm-1…H1中的每一位Hj是由多个校验位Pi来校验的(i∈{0,1,…,k-1}),其关系是被校验的每一位位号j等于校验它的各个校验位的位号之和。(3)校验位Pi的形成根据规则(2),找出校验位Pi参与了对哪些数据位的校验,反过来,被校验的这些数据位按照奇偶校验原理形成校验位Pi,下面以一个字节的数据为例来讨论海明校验码。由于数据为8位,即n=8,按式(2-12)可求出校验位的位数k=5,海明校验码的总位数为1323位,表示为H13H12…H1。按规则(1)知,海明校验码为P4D7D6D5D4P3D3D2D1P2D0P1P0按规则(2)可以得到表2-9所示的结果。表2-9海明校验码与校验位的关系海明校验码数据位/校验位参与校验的校验位位号被校验的海明校验码的位号等于校验它的各个校验位位号之和H1P011=1H2P122=2H3D01,23=1+2H4P244=4H5D11,45=1+4H6D22,46=2+4H7D31,2,47=1+2+4H8P388=8H9D41,89=1+8H10D52,810=2+8H11D61,2,811=1+2+8H12D74,812=4+8H13P41313=13按规则(3)可以将形成校验位Pi的数据位进行分组,即校验组的分组。如果需要区分是两位出错还是一位出错,可以补充一个总校验位P4\nP0:D0,D1,D3,D4,D6P1:D0,D2,D3,D5,D6P2:D1,D2,D3,D7P3:D4,D5,D6,D7P4:D0,D1,D2,D3,D4,D5,D6,D7,P0,P1,P2,P3若采用偶校验,则各个校验位的形成方法为:P0=D0⊕D1⊕D3⊕D4⊕D6P1=D0⊕D2⊕D3⊕D5⊕D6P2=D1⊕D2⊕D3⊕D7P3=D4⊕D5⊕D6⊕D7P4=D0⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕P0⊕P1⊕P2⊕P33、海明校验码的校验在接收端收到海明校验码后,需对k个校验位分别进行k组奇偶校验,以判断数据传输是否出错。分组校验后,校验结果形成k位的状态字Sk-1…S1S0,若状态字Sk-1…S1S0全0,则表示数据传输无误;否则,则表示数据传输有误,状态字Sk-1…S1S0所对应的十进制数值就是出错位的位号,将该位取反,即可实现纠错。下面以一个字节数据的海明校验码为例来说明校验过程。校验时按偶校验,状态字S4…S1S0形成如下:S0=P0⊕D0⊕D1⊕D3⊕D4⊕D6S1=P1⊕D0⊕D2⊕D3⊕D5⊕D6S2=P2⊕D1⊕D2⊕D3⊕D7S3=P3⊕D4⊕D5⊕D6⊕D7S4=P4⊕D0⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕P0⊕P1⊕P2⊕P324状态字S4…S1S0能够反映13位海明校验码的出错情况,错误个数为偶数时S4为0,错误个数为奇数时S4为1,以此可以判断是一位出错还是两位出错。2.5.3循环冗余校验码在一位出错的概率远远大于多位同时出错概率的情况下,奇偶校验是一种简单有效的检查方法,但在串行通信中,常常会遇到瞬间干扰,造成多位数据会同时发生错误,此时,使用奇偶校验码意义不大,通常采用循环冗余校验码,即CRC码(CyclicRedundancyCheck)。它是一种具有很强检错纠错能力的校验码。1、循环冗余校验思想用n位的数据dn-1…d1d0构成一个χ的n-1次幂的多项式M(χ),即M(χ)=dn-1χn-1+dn-2χn-2+…+d1χ1+d0,再用一个约定的多项式G(χ)去除M(χ),可得式(2-13)所示的关系式:=Q(χ)+(2-13)其中Q(χ)为商数,R(χ)为余数。由式(2-13)可得:M(χ)-R(χ)=Q(χ)×G(χ)(2-14)发送端将M(χ)-R(χ)作为校验码进行发送,接收端收到校验码后,用双方约定的多项式G(χ)去除,如果能够被整除,即余数为0,则表示数据传输无误,否则,则表示数据传输有误。\n2、模2运算由式(2-14)可知,M(χ)-R(χ)是减法运算,需要涉及到借位,难以用简单的拼装方法实现编码,为了回避借位运算,CRC码采用了模2运算。所谓模2运算,是指以按位模2加运算为基础的二进制四则运算。简单地讲,模2运算是一种不考虑进位和借位的运算。(1)模2加减模2加减是按异或规则实现按位加,不进位。其运算规则是:0±0=0,0±1=1,1±0=1,1±1=0【例2-23】按模2加减规则,计算1101+1011,1101-1011解:根据模2加减规则可得:①1101+1011=0110②1101-1011=0110由此可见,模2的加法运算等于模2的减法运算。(2)模2乘模2乘就是在进行乘法运算时,按模2加的运算规则,对各个位积进行模2加法。例如1010×1011=1001110。(3)模2除模2除就是在进行除法运算时,按模2减的运算求部分余数,计算时不进行借位。例如1011001÷1101=1100,余数为101。3、CRC码的编码设n位数据dn-1…d1d0所构成一个χ的n-1次幂的多项式M(χ),即M(χ)=dn-1χn-1+dn-2χn-2+…+d1χ1+d0,约定一个生成多项式G(χ)为χ的k次幂的多项式,即G(χ)=Ckχk+Ck-1χk-1+…+C1χ1+C0,G(χ)作为除数的余数多项式R(χ)最高次幂为χk-1,因此R(χ)相当于k位余数形成的多项式。把k位余数拼接在n位数据位之后,便构成n+k位的CRC码。CRC码的编码只是简单地拼接,关键是如何根据数据去产生k位余数。由于n位数据位后附加了k位余数,n位数据所构成一个χ的n-1次幂的多项式M(χ)25相当于提高了χk-1阶,即M(χ)·χk-1。然后按模2除法,用M(χ)·χk-1除以G(χ),便得到余数多项式R(χ),该多项式中χ的各个次幂的系数就是k位余数。=Q(χ)+(2-15)由式(2-15)可得:M(χ)·χk-1-R(χ)=Q(χ)×G(χ)根据模2加减运算规则可得:M(χ)·χk-1+R(χ)=Q(χ)×G(χ)(2-16)【例2-24】设生成多项式G(χ)=χ3+χ1+1,求4位数据1101的CRC码。解:∵G(χ)=χ3+χ1+1,是4位的多项式∴余数是3位根据式(2-16)可得3位的余数为101,因此,4位数据1101的CRC码为1101101。在CRC码中,由n位数据和k位校验构成的n+k位的CRC码,也称为(n+k,n)码。在【例2-24】中,由于n=4,n+k=7,故称(7,4)码。4、CRC码的校验接收端收到CRC码后,用双方约定的生成多项式G(χ)做模2除,如果除得的余数为0,则表示接收到的信息中没有错误,否则,则表示接收到的信息中某一位发生错误。出错的位置不同相应的余数也不同,因此,可以根据余数来确定出错的位置,进而实现纠错功\n能。在【例2-24】中,对于4位数据1101的(7,4)码出错情况如表2-10所示。表2-104位数据1101基于G(χ)=χ3+χ1+1(7,4)码的校验错误状态F7F6F5F4F3F2F1D3D2D1D0R2R1R0余数错误位置无误1101001000无有误11010000011有误11010110102有误11011011003有误11000010114有误11110011105有误10010011116有误01010011017以表2-10中的第二行为例,把余数001补0后再除以G(χ),得到的第二次余数为010,第二次余数为010再补0后除以G(χ),得到的第三次余数为100,按此继续做除法,不难发现所得的余数依次为011、110、111、101,最后又回到001,这就是为什么将此校验码称之为循环校验码的原因。根据循环码的这一特点,当接收端收到CRC码与生成多项式G(χ)做模2除得到的余数不为0时,可以一边对余数补0继续做模2除,同时使被检测的CRC码循环左移,当出现余数为101时,原来出错的位已移到F7的位置,将其取反进行纠错后,在下次移位时送回F1,将CRC码继续循环左移,移满一个循环后,可得到一个纠错后的CRC码。例如,若接收端收到CRC码字为1010111,用G(χ)=χ3+χ1+1做模2除,得到的余数为100,说明接收到的信息中某一位发生错误。将此余数补0后再除以G(χ),同时使CRC码循环左移。进行如此运算4次后,得到的余数为本101,此时,CRC码也循环左移了4位,变成了1111010。出错位已移至F7,将其取反可得0111010。再将它循环左移3位,补足7次(一个循环),出错位又回到F3,便得到一个正确的码字1010011。5、生成多项式G(χ)26由前面的内容可知,在CRC码的形成和校验过程中,生成多项式G(χ)起着非常重要的作用。采用的生成多项式G(χ)不同,所形成的CRC码字、码距不同,其检错和纠错能力也不同。关于生成多项式G(χ),并非任何一个χ的k次幂多项式都可以作为生成多项式,它应满足以下要求:(1)任何一位发生错误都应使余数不为0(2)不同位发生错误时,其余数应不同(3)对余数做模2除,应能使余数循环为便于选择满足以上要求的生成多项式G(χ),表2-11列出了常用的生成多项式。表2-11常用的生成多项式G(χ)CRC码长数据位数码距多项式G(χ)\n743χ3+χ+1743χ3+χ2+1734χ4+χ3+χ2+1734χ4+χ2+χ+115113χ4+χ+11575χ8+χ7+χ6+χ4+11557χ10+χ8+χ5+χ4+χ2+χ+131263χ5+χ2+131215χ10+χ9+χ8+χ6+χ5+χ3+163573χ6+χ+163515χ12+χ10+χ5+χ4+χ2+1在数据通信与网络中,由于数据位数多,上千位二进制数据位构成一帧,为检测信息传输的正确与错误,广泛采用CRC码进行校验。这时所使用的生成多项式的次幂比较高,常用的生成多项式有:G(χ)=χ16+χ15+χ2+1G(χ)=χ16+χ12+χ5+1G(χ)=χ32+χ26+χ22+χ16+χ12+χ11+χ10+χ8+χ7+χ5+χ4+χ2+χ+1关联27习题2.1数制转换(1)213=()B=()H(2)0F8EH=()B=()D(3)69.75=()B=()H(4)10111011B=()D=()H(5)110000010.0101B=()D=()H2.2设机器字长为8位(含一位符号位),分别求出[x]原、[x]反、[x]移、[x]补、[-x]补、[21x]补。(1)x=+119(2)x=-56(3)x=-1(4)x=+25/128(5)-37/642.3已知x二进制真值,试求[x]补、[-x]补、[21x]补、[41x]补、[2x]补、[4x]补、[-2x]补、[-41x]补。(1)x=+0.0101101(2)x=-0.0001011(3)x=-12.4已知[x]补,求x的真值。(1)[x]补=0.1010111(2)[x]补=1.1110010(3)[x]补=0.0101101(4)[x]补=1.11111112.5设十进制数x=(+124.625)×2-10。(1)写出x对应的二进制定点小数表示形式。(2)若机器的浮点数表示格式为:20191815140数符阶符阶码尾数其中阶码和尾数的基数均为2。1)写出阶码和尾数均采用原码表示时的机器数形式。\n2)写出阶码和尾数均采用补码表示时的机器数形式。2.6设某机字长为16位,数据表示格式如下。定点数:15140数符尾数浮点数:15141311100数符阶符阶码尾数分别写出下列数据表示形式中所能表示的最小正数、最大正数、最大负数、最小负数(绝对值最大的负数)以及浮点规格化最小正数、最大负数所对应的十进制真值。(1)原码表示的定点整数(2)补码表示的定点整数(3)阶码与尾数均用原码表示的浮点数(4)阶码与尾数均用补码表示的浮点数(5)阶码为移码、尾数用补码表示的浮点数2.7设2.6题的浮点数格式中,阶码与尾数均用补码表示,分别写出下面用十六进制书写的浮点数所对应的十进制真值。(1)FFFFH(2)C400H2.8写出下列十进制数的IEEE754标准32位单精度浮点数的机器数表示形式。(1)0.15625(2)-0.15625282.9写出IEEE754标准32位单精度浮点数所能表示的最小规格化正数和最大规格化负数的机器数表示形式。2.10写出下列十六进制的IEEE754单精度浮点数所代表的十进制数真值。(1)42E48000H(2)3F880000H(3)00800000H(4)C7F00000H2.11设有两个正浮点数:N1=M1×2e1,N2=M2×2e2(1)若e1>e2,是否有N1>N2?(2)若M1、M2均为规格化数,上述结论是否正确?2.12设一个6位二进制小数x=0.a1a2a3a4a5a6,x≥0,请回答:(1)若要x≥81,a1a2a3a4a5a6需要满足什么条件?(2)若要x>21,a1a2a3a4a5a6需要满足什么条件?(3)若要41≥x>161\n,a1a2a3a4a5a6需要满足什么条件?2.13分别用前分隔数字串、后嵌入数字串和压缩的十进制数串形式表示下列十进制数。(1)+79(2)-635(3)+2008(4)-85102.14下面是两个字符(ASCII码)的海明校验码(偶校验),请检测它们是否有错?如果有错,请加以改正,并写出相应的正确ASCII码所代表的字符。(1)10111010011(2)100010101102.15设数据信息是1010110010001111,选择生成多项式为G(x)=100101,求出数据的CRC码。2.16完成下列8421BCD码与其它数制/码制的转换。(1)(10010011)BCD=()D=()B(2)(001101110110.011)BCD=()D=()B(3)11010011B=()BCD(4)110000010.0101B=()BCD(5)151.625=()B=()BCD2.17计算下列BCD码的和,并按规则进行十进制调整。(1)96+87(2)1556+2982.18选择题(1)某机器字长64位,1位符号位,63位尾数。若采用定点小数表示,则最大正小数为()。A、+(1-2-64)B、+(1-2-63)C、2-64D、2-63(2)设[x]补=1.x1x2x3x4x5x6x7x8,当满足()时,x>-21成立。A、x1=1,x2x3x4x5x6x7x8至少有一个为1B、x1=0,x2x3x4x5x6x7x8至少有一个为1C、x1=1,x2x3x4x5x6x7x8任意D、x1=0,x2x3x4x5x6x7x8任意(3)在下列机器数中,哪种表示方式下零的表示形式是惟一的()。A、原码B、补码C、反码D、都不是(4)下列论述中,正确的是()。A、已知[x]原求[x]补的方法是在[x]原的末位加1B、已知[x]补求[-x]补的方法是在[x]补的末位加1C、已知[x]原求[x]补的方法是将尾数连同符号位一起取反,再在末位加1D、已知[x]补求[-x]补的方法是将尾数连同符号位一起取反,再在末位加1(5)IEEE754标准规定的32位浮点数格式中,符号位为1位,阶码为8位,尾数为23位,则它所能表示的最大规格化正数为()。29A、+(2-2-23)×2+127B、+(1-2-23)×2+127C、+(2-2-23)×2+255D、2+127×2-23(6)浮点数的表示范围取决于()。A、阶码的位数B、尾数的位数C、阶码采用的编码D、尾数采用的编码(7)假定下列字符码中有奇偶校验位,但没有数据错误,采用奇校验位的编码是()。A、10000010B、11010110C、11010111D、10111011\n2.19填空题(1)设某机器字长为8位(含一符号位),若[x]补=11001001,则x所表示的十进制数的真值为▁▁▁▁,[41x]补=▁▁▁▁;若[y]移=11001001,则y所表示的十进制数的真值为▁▁▁▁,y的原码[y]原=▁▁▁▁。(2)在带符号数的编码方式中,零的表示是惟一的有▁▁▁▁和▁▁▁▁。(3)若[x1]补=10110111,[x2]原=1.01101,则数x1的十进制数真值是▁▁▁▁,x2的十进制数真值是▁▁▁▁。(4)设某浮点数的阶码为8位,用移码表示;尾数为24位,采用规格化补码表示。则该浮点数能表示的最大正数的阶码为▁▁▁▁,尾数为▁▁▁▁;规格化最小负数的阶码为▁▁▁▁,尾数为▁▁▁▁。(5)设有效信息位的位数为k,校验位的位数为r,则能够检测出一位出错并能自动纠错的海明校验码应满足的关系是▁▁▁▁。30第3章运算方法与运算器【内容摘要】计算机最基本的功能是对数据进行处理。计算机对数据的处理可以归纳为两种基本运算:一是算术运算,二是逻辑运算。算术运算是指加、减、乘、除运算,逻辑运算是指逻辑移位和逻辑与、逻辑或、逻辑非等运算。无论哪一种运算,都会涉及到运算对象(数据),结合数据的不同表示方法,本章将侧重于以定点小数的补码来讨论计算机中各类数据的运算方法与硬件实现问题。【学习要点】●定点小数补码的四则运算与实现●浮点数的四则运算与实现●十进制数的加减运算与实现●逻辑运算与ALU●定点运算器与浮点运算器3.1定点数的算术运算与实现定点数的机器数有原码、反码、补码等形式,在本节中我们重点是以定点小数的补码来讨论定点数的加、减、乘、除运算。只有补码运算可以将减法转换为加法,补码的符号位同补码的数值位一样参与运算,运算规则简单,易于实现,所以现代计算机中的数据普遍采用补码。3.1.1定点数加减运算1、补码加减运算规则假设定点小数x的补码为[x]补,定点小数y的补码为[y]补。则有:[x+y]补=[x]补+[y]补(mod2)(3-1)[x-y]补=[x]补-[y]补=[x]补+[-y]补(mod2)(3-2)根据式(3-1)和式(3-2),补码加减运算的规则如下:\n规则1,参与运算的数是补码,运算结果也是补码;规则2,符号位同数值位一样参与运算,其结果的符号取决于运算结果的补码;规则3,加法运算时,直接将两个的补码相加;减法运算时,需要将减数变补(即[y]补求[-y]补),然后再与被减数的补码相加。这是由于数据采用补码形式后,减法运算转换成了加法运算,所以计算机实现加减运算只需加法器,无需减法器。我们在进行减法运算时也只能按加法进行运算;规则4,补码的运算是有模的运算,如果运算结果超出了模(即符号位的运算产生了进位),则将模自动丢失。这样处理的结果并非是错误的,还需要进一步进行溢出判断。2、溢出与溢出判断溢出是指运算结果超出了机器所能表示的数的范围。如果运算结果超出了机器所能表示的最大正数,称为上溢(正溢出);如果运算结果超出了机器所能表示的最小负数,称为下溢(负溢出)。一旦出现溢出,机器将无法表示正确结果,因此,计算机在运算的过程中必须正确判断溢出并及时处理。(1)单符号判别法符号判别法是根据参与运算数的符号和运算结果的符号进行判断溢出。设[x]补=x0.x1x2…xn-1,[y]补=y0.y1y2…yn-1,[z]补=[x+y]补=z0.z1z2…zn-1,溢出标志为V,则溢出标志V与符号位(x0、y0、z0)之间的关系如表3-1所示。根据真值表3-1,可得出溢出的判断条件为:31V=x0y00z+0x0yz0=(x0⊕y0)(x0⊕y0)表3-1溢出标志(V)与符号位(x0、y0、z0)之间的真值表x0y0z0V00000011010001101000101011011110(2)双符号判别法双符号判别法也称为变形补码法,是根据结果的变形补码来进行判断溢出。变形补码的定义如下:设x为n位的二进制数据,式(3-3)和式(3-4)分别给出了x为定点小数±0.x1x2…xn-1和x为定点整数±x1x2…xn-1的变形补码定义。定点小数变形补码的定义:定点整数变形补码的定义:由定义可知:1)变形补码只是比普通补码多了一位符号位,所以,变形补码也称双符号位补码。如:[x]补=x0.x1x2…xn-1,则[x]变补=x0x0.x1x2…xn-1,其中,x0x0为00表示正数,x0x0为11表示负数。2)变形补码的加减运算与普通补码的加减运算相同,只不过两个符号位都参与了运算,运算结果为:z'0z0.z1z2…zn-1,其中,z'\n0z0是结果的两个符号位,其含义为:z'0z0=00,表示结果为正,无溢出z'0z0=11,表示结果为负,无溢出z'0z0=01,表示结果正溢出z'0z0=10,表示结果负溢出由此可见,当z'0z0不一致时,结果便产生溢出。因此,采用变形补码进行运算时,溢出的判断条件为:V=z'00z+'0zz0=z'0⊕z0。(3)进位判别法当最高有效位产生进位而符号位无进位时,产生正溢;当最高有效位无进位而符号位产x0≤x<1(mod4)(3-3)4+x-1≤x<0[]x变补=x0≤x<2n-1(mod2n+1)(3-4)2n+1+x-2n-1≤x<0[]x变补=32生进位时,产生负溢。故溢出的判断条件为:V=Cs⊕C0,其中Cs为符号位产生的进位,C0为最高有效位产生的进位。3、补码加减运算的步骤补码的加减运算虽然十分简单,但一定要注意运算步骤的完整。为此归纳出补码的加减运算步骤:步骤1,求[x]补、[y]补、[-y]补;步骤2,按式(3-1)和式(3-2)进行二进制加法运算。注意:只能按加法进行运算,即使是减法运算,也要将减数变补(即由[y]补求[-y]补),然后再与被减数相加;步骤3,利用溢出判断条件,判断运算结果的正确性。【例3-1】已知x的真值,用补码的加减运算,计算x±y。①x=+0.1010y=+0.0011②x=-0.1101y=-0.1011解:①[x]补=0.1010,[y]补=0.0011,[-y]补=1.1101[x+y]补=[x]补+[y]补=0.1010+0.0011=0.1101[x-y]补=[x]补-[y]补=[x]补+[-y]补=0.1010+1.1101=0.0111具体运算过程如下:由单符号判别法可知,x±y的结果没有发生溢出。②[x]补=1.0011,[y]补=1.0101,[-y]补=0.1011[x+y]补=[x]补+[y]补=1.0011+1.0101=0.1000\n[x-y]补=[x]补-[y]补=[x]补+[-y]补=1.0011+0.1011=1.1110具体运算过程如下:由单符号判别法可知,x+y的结果为正,而参与运算的两个数是负数,所以结果发生了溢出。而x-y的结果不会发生溢出。【例3-2】已知x的真值,利用变形补码求x±y。①x=+0.1010y=+0.0011②x=-0.1101y=-0.1011解:①[x]变补=00.1010,[y]变补=00.0011,[-y]变补=11.1101[x+y]变补=[x]变补+[y]变补=00.1010+00.0011=00.1101[x-y]变补=[x]变补-[y]变补=[x]变补+[-y]变补=00.1010+11.1101=00.0111具体运算过程如下:由双符号判别法可知,x±y结果的双符号相同,所以没有发生溢出。②[x]变补=11.0011,[y]变补=11.0101,[-y]变补=00.1011[x+y]变补=[x]变补+[y]变补=11.0011+11.0101=10.1000[x-y]变补=[x]变补-[y]变补=[x]变补+[-y]变补=11.0011+00.1011=11.1110具体运算过程如下:0.1010+0.00110.1101进位位自然丢失0.1010+1.110110.01111.0011+0.10111.1110进位位自然丢失1.0011+1.010110.100000.1010+00.001100.1101进位位自然丢失00.1010+11.1101100.011111.0011+00.101111.1110进位位自然丢失\n11.0011+11.0101110.100033由双符号判别法可知,x+y结果的双符号为10,所以运算结果发生了溢出。而x-y结果的双符号为11,不会发生溢出。【例3-3】已知x=-0.10111,y=-0.10001,求(x+y)。解:∵[x]变补=11.01001,[y]变补=11.01111∴[x]变补=11.10100,[y]变补=11.10111[(x+y)]变补=[x]变补+[y]变补=11.10100+11.10111=11.01011溢出判断:由于结果的双符号位相同,未产生溢出,运算结果正确。∴(x+y)的真值为-0.101014、补码加减运算的逻辑实现(1)一位全加器设一位全加器FA(FullAddition)的输入为Ai和Bi,进位输入为Ci,结果输出为Si,进位输出为Ci+1,则一位全加器的真值表如表3-2所示。表3-2一位全加器的真值表输入AiBiCi输出Ci+1Si0000000101010010111010001101101101011111根据表3-2可得输出与输入之间的逻辑表达式:Si=(Ai⊕Bi)⊕Ci(3-5)Ci+1=AiBi+(Ai⊕Bi)·Ci(3-6)由式(3-5)和式(3-6),一位全加器逻辑电路如图3-1(b)所示。假设单位逻辑门电路(与门、与非门、或门、或非门)的时间延迟为T,则一个异或门的时间延迟为3T,一位全加器产生zi的时间延迟为6T,进位传递(由Ci到Ci+1)时间为2T。(2)n位补码加减运算的逻辑电路n位补码加减运算的逻辑电路需要n个一位全加器FA、外加控制信号M(M=0,实现加法;M=1,实现减法)组成。其逻辑电路如图3-1(a)所示。为了进一步讨论进位关系,将式(3-5)中进位输出Ci+1的关系式进行改变如下形式:Ci+1=AiBi+(Ai⊕Bi)·Ci=Gi+Pi·Ci其中,Gi=AiBi,为进位生成函数;Pi=Ai⊕Bi,为进位传递函数。下面讨论n位补码加减运算的进位关系。C1=G0+P0·C0\nC2=G1+P1·C1┇(3-7)Cn-1=Gn-2+Pn-2·Cn-2由式(3-7)可知,高位的进位Ci仅仅是它的低一位进位Ci-1的函数,也就是说,只有34产生出Ci-1后才能产生Ci,这种进位关系称为行波进位或串行进位。行波进位的补码加减运算时间主要取决于进位的传递时间。为了提高补码的加减运算速度,进位关系往往采用并行进位,即高位的进位Ci都是C0的函数。C1=G0+P0·C0C2=G1+P1·C1=G1+P1G0+P1P0·C0┇(3-8)Cn-1=gn-2+Pn-2·Cn-2=Gn-2+Pn-2Gn-3+…+Pn-3Pn-4…P1G0+Pn-3Pn-4…P1P0·C0由式(3-8)可知,n越大,进位逻辑电路越复杂,因此,往往将n位按4位进行分组,不难证明,n/4-1组间的进位信号G*和传递信号P*,的表达式。P*0=P3P2P1P0G*0=G3+P3G2+P3P2G1+P3P2P1G0P*1=P7P6P5P4G*1=G7+P7G6+P7P6G6+P7P6P5G4┇┇P*n/4-1=Pn-1Pn-2Pn-3Pn-4G*n/4-1=Gn-1+Pn-1Gn-2+Pn-1Pn-2Gn-3+Pn-1Pn-2Pn-3Gn-4它们同样满足C*i+1=G*i+P*iC*i各组的进位为:C*1=G*0+P*0·C0C*2=G*1+P*1G*0+P*1P*0·C0┇\nC*n/4-1=G*n/4-2+P*n/4-2G*n/4-3+…+P*n/4-2P*n/4-3…P*1G*0+P*n/4-2P*n/4-3…P*1P*0·C0n位定点数的加减运算进行分组后,组内可以按上述并行进位关系进行加法,而组间既可以是串行进位关系,也可以是组间并行进位关系,在这里我们不再进行嫯述,感兴趣的同学可以看有关的参考书。图3-1n位补码加减运算电路在实际的运算器中,参与运算的数据和运算结果通常存放在寄存器中,控制器控制将数据送入加法器,并进行加法运算,再将运算结果送回寄存器。如图3-2所示,给出了带有寄存器的实现补码加减运算的逻辑电路。其中寄存器A、B分别存放参与运算的两个补码数据,运算结果送回寄存器A保存。35图3-2实现补码加减运算的逻辑电路3.1.2定点数乘法运算1、补码与真值的关系设[x]补=x0.x1x2…xn-1当x≥0时,则[x]补=0.x1x2…xn-1=∑.=11nixi×2-i当x<0时,则[x]补=1.x1x2…xn-1=2+x∴x=[x]补-2=-1+0.x1x2…xn-1=-1+∑.=11nixi×2-i\n所以,对于任何数x,其补码与真值的关系如式(3-9)所示。x=-x0+∑.=11nixi×2-i=-x0+0.x1x2…xn-1(3-9)2、补码的右移∵x=-x0+∑.=11nixi×2-i=-x0+0.x1x2…xn-1=-x0+∑.=11nixi×2-i=-x0+x0+∑.=11nixi×2-i=-x0+∑.=10nixi×2-(i+1)=-x0+0.x0x1x2…xn-1=x0.x0x1x2…xn-1∴[补=x0.x0x1x2…xn-13、补码的一位乘法设被乘数[x]补=x0.x1x2…xn-1,乘数[y]补=y0.y1y2…yn-1,则:[x·y]补=[x]补×(-y0+∑.=11ni\nyi×2-i)=[x]补×[-y0+y12-1+y22-2+…+yn-12-(n-1)]=[x]补×[-y0+(y1-y12-1)+(y22-1-y22-2)+…+(yn-12-(n-2)-yn-12-(n-1)]=[x]补×[(y1-y0)+(y2-y1)2-1+…+(yn-1-yn-2)2-(n-2)+(0-yn-1)2-(n-1)]在乘数[y]补的最低位yn-1之后再添加一位yn,并令yn=0,在乘法运算开始时令部分积Z0=0,便可以得到布斯(Booth)递推公式:[Z0]补=0[Z1]补={[Z0]补+(yn-yn-1)[x]补}×2-1,yn=036[Z2]补={[Z1]补+(yn-1-yn-2)[x]补}×2-1┇[Zi]补={[Zi-1]补+(yn-i+1-yn-i)[x]补}×2-1┇[Zn-1]补={[Zn-2]补+(y2-y1)[x]补}×2-1[Zn]补={[Zn-1]补+(y1-y0)[x]补}Booth算法规则如表3-3所示,其操作流程如图3-3所示,最后一步(i=n)时不进行右移操作,即得到[x·y]补表3-3Booth算法规则yi+1yi(yi+1-yi)[x]补对上次部分积的操作000上次部分积加0,右移一位01-[x]补上次部分积加[-x]补,右移一位10[x]补上次部分积加[x]补,右移一位110上次部分积加0,右移一位图3-3补码一位乘Booth算法流程图【例3-4】已知x和y的真值,x=-0.1101y=0.1011,利用补码的一位乘求x·y。解:[x]补=11.0011,[y]补=00.1011,[-x]补=00.1101∴[x·y]补=11.01110001,x·y的真值为-0.10001111B37通过【例3-4】补码一位乘法的运算过程分析,用硬件实现补码一位乘法时,只需三个寄存器和一个n位加法器,实现补码一位乘法的硬件逻辑电路如图3-4所示。图中A、B、C为三个寄存器,在运算开始时,寄存器A用于存放乘积和部分积的高位部分,初始内容为0;寄存器C用于存放乘数和部分积的低位部分,初始内容为乘数;yn-1和yn用于控制进行+[x]补还是+[-x]补。寄存器B用于存放被乘数,可以在yn-1和yn控制下输出原码和反码,当执行+[x]补时,输出原码;当执行+[-x]补时,输出反码。Cx是乘法控制触发器,Cx=1,允许产生移位脉冲,以控制进行乘法运算;否则,停止进行乘法运算。计数器i用于记录乘法次数,在运算开始时,计数器i清0,每进行一次运算,计数器i进行加1,当计数到n+1时,结束运算。另外,当i=n时,将计数器i清0,使得在进行第n+1次运算时,不再进行移位。图3-4实现补码一位乘的逻辑电路\n4、补码的二位乘法根据布斯递推公式,将两步合并为一步,即可导出补码的两位乘法公式。设上次部分积为[Zi]补,本次的部分积则为:[Zi+1]补={[Zi]补+(yn-i-yn-i-1)[x]补}×2-1下次的部分积为:[Zi+2]补={[Zi+1]补+(yn-i-1-yn-i-2)[x]补}×2-1把[Zi+1]补带入[Zi+2]补中,可得:[Zi+2]补={{[Zi]补+(yn-i-yn-i-1)[x]补}×2-1+(yn-i-1-yn-i-2)[x]补}×2-1={[Zi]补+(yn-i-2yn-i-2+yn-i-1)[x]补}×2-2(yn-i-2yn-i-2+yn-i-1)式中yn-i、yn-i-2、yn-i-1的初始值分别为附加位yn=0、yn-1、yn-2。其值及其对应的操作如表3-4所示。表3-4(yn-i-2yn-i-2+yn-i-1)与[Pi+2]补的关系yn-i、yn-i-2、yn-i-1(yn-i-2yn-i-2+yn-i-1)[x]补[Zi+2]补0000{[Zi]补+0}×2-2001+[x]补{[Zi]补+[x]补}×2-2010-2[x]补{[Zi]补+2[-x]补}×2-2011-[x]补{[Zi]补+[-x]补}×2-2100+[x]补{[Zi]补+[x]补}×2-2101+2[x]补{[Zi]补+2[x]补}×2-2110-[x]补{[Zi]补+[-x]补}×2-21110{[Zi]补+0}×2-2【例3-5】已知x=-0.1101y=-0.0101,利用补码的二位乘求x·y。38解:[x]补=11.0011,[y]补=11.1011,[-x]补=00.1101∴[x·y]补=00.01000001,x·y的真值为+0.01000001B5、并行乘法运算由于乘法运算大约占全部算术运算的1/3左右,因此采用高速乘法器件,无论从速度上还是从效益上都是十分必要的。随着大规模集成电路的迅速发展,出现了各种形式的流水阵列乘法器,它们属于并行乘法器。在此只简单介绍阵列乘法器的基本原理。(1)无符号数阵列乘法器设A为m位的无符号二进制整数(A=am-1…a1a0),B为n位的无符号二进制整数(B=bn-1…b1b0),A、B的数值(真值)分别是a、b,其乘积为P(P=A·B),是一个m+n位无符号二进制整数,即P=pm+n-1…p1p0,数P的真值为p,则:a=∑.=10miai×2ib=∑.=\n10njbj×2jp=a·b=(∑.=10miai×2i)·(∑.=10njbj×2j)=∑.=10mi∑.=10nj(aibj)×2i+j=∑.+=10nmkpk×2k位积aibj{aibj∣0≤i≤m-1和0≤j≤n-1}可以用m×n个逻辑与门并行产生,乘积pk可由相同位权(2k)的位积相加,再加来自低位的进位产生。这样利用位积相加来实现乘法运算的器件称为阵列乘法器,如图3-5所示。该阵列乘法器从根本上避免了一位乘和两位乘中所需的大量重复的相加和移位操作,从而提高了乘法运算的速度。图3-5m×n位不带符号的阵列乘法器(2)带符号数阵列乘法器\n39带符号数阵列乘法器是在无符号数阵列乘法器的基础上增加了符号处理和求补电路,所以也称为符号求补的阵列乘法器。1)求补器按照扫描来进行的求补操作,对于n位带符号定点整数A=an-1…a1a0,从A的最低位a0开始向高位进行扫描,直到找到第一个“1”(例如ai=1,0≤i≤n-1),则该位置的1以及比ai低的所有位都保持不变,其余的位(比比ai高的所有位,不包括ai位)都求反,即实现了对A的求补。第i扫描的输出为Ci,则Ci=ai+Ci-1,C-1=0。求补器的输出ai*=ai⊕ECi-1,0≤i≤n-1,E为控制信号,当E=1时,启动求补器进行求补;当E=0时,ai*=ai,显然,数的符号位可以作为控制信号E。如图3-6所示,给出了一个4位的对2求补器电路。图3-6对2求补器电路2)带求补器的阵列乘法器设A=anan-1…a1a0,B=bnbn-1…b1b0,A和B为n+1位带符号定点整数。则A与B的乘积为P,P为一个2n位带符号数。P=A·B=P2n-1P2n-2…P1P0P2n=an⊕bn其中P2n为乘积的符号位。如图3-7所示,给出了带求补器的阵列乘法器。该带求补器的阵列乘法器使用了三个求补器,两个算前求补器是对A和B求绝对值,然后,将两个数的绝对值送入无符号数阵列乘法器中进行相乘,即得到2n位乘积的绝对值P2n-1P2n-2…P1P0。最后,再根据异或门输出的符号位P2n,控制算后求补器对P2n-1P2n-2…P1P0求补,即得到2n+1位的乘积P2nP2n-1P2n-2…P1P0。图3-7(n+1)×(n+1)位带求补器的阵列乘法器403.1.3定点数除法运算定点数除法可以分为恢复余数法和不恢复余数两种,我们在定点数原码除法中讨论恢复余数的除法。由于后者采用得较多,在定点数补码除法中讨论不恢复余数的除法(加减交替法)。1、原码的恢复余数法设被除数为x,其原码为[x]原=x0.x1x2…xn-1,除数为y,其原码为[y]原=y0.y1y2…yn-1,则有:商q=x/y,其原码为[q]原=(x0⊕y0)+(0.x1x2…xn-1/0.y1y2…yn-1)商的符号q0=(x0⊕y0),商的数值部分是(0.x1x2…xn-1/0.y1y2…yn-1),实质上是两个正数求商的运算,类似于十进制数的除法运算,其算法:(1)判断x0q1=1余数左移0.1101减y1.001余数为负1.1111<0q2=0余数左移1.111加y1.001余数为正0.110>0q3=1所以:商q=0.101余数r=0.0001103.2逻辑运算和移位操作计算机除了能进行加、减、乘、除等基本算术运算以外,还可以对逻辑数进行逻辑运算。逻辑数是指无符号的二进制数。逻辑运算主要指逻辑与、逻辑或、逻辑异或等。3.2.1逻辑运算设参与逻辑运算的两个数x和y:x=x0x1x2…xn-1y=y0y1y2…yn-11、逻辑与(逻辑乘):记作“∧”或“·”z=x∧y=z0z1z2…zn-1则zi=xi∧yii∈{0,1,2,…,n-1}2、逻辑或(逻辑加):记作“∨”或“+”z=x∨y=z0z1z2…zn-1则zi=xi∨yii∈{0,1,2,…,n-1}3、逻辑异或(逻辑异):记作“⊕”z=x⊕y=z0z1z2…zn-1则zi=xi⊕yii∈{0,1,2,…,n-1}44【例3-9】已知x=01101011B,y=11101001B,分别求x∧y、x∨y、x⊕y。解:3.2.2移位操作在定点数的运算中有左移和右移操作,在浮点数的运算中也用到移位操作,可见移位操作的重要性。由于机器字长的限制,当机器数进行左移或右移时,必然会使机器数产生空位和移出,移出的位到进位标志,而所产生的空位是填“0”、填“1”、还是填符号位或原来的进位标志,因此,移位操作分为逻辑移位、算术移位和循环移位,如图3-10所示。图3-10移位操作示意图3.3定点运算器运算器是CPU的重要组成部分,是专门加工处理数据的部件,根据所能处理的数据不同,运算器可以分为定点运算器和浮点运算器。运算器的核心是算术逻辑单元(ALU),除此之外,还有各类寄存器(通用寄存器、累加器、数据缓冲寄存器、标志寄存器等)、数据多路选择器和数据总线等。\n3.3.1算术逻辑单元1、一位算术逻辑单元已知Xi和Yi是一位二进制数,其算术运算的和为Fi,则Fi=Xi+Yi。表面上看,Fi只能是算术运算的结果。如果Xi或Yi是Ai、Bi的逻辑函数,例如X=Ai·Bi或Ai+Bi,当Yi=0时,则Fi=Xi+Yi=Xi=Ai·Bi或Ai+Bi。Fi便是Ai、Bi逻辑运算的结果。因此,一位算术逻辑单元是在一位加法器的基础上再加一个逻辑函数发生器构成,如图3-11所示。图3-11一位算术逻辑单元因此,一位算术逻辑单元的逻辑表达式为:01101011∧111010010110100101101011∨111010011110101101101011⊕111010011000001045Fi=Xi⊕Yi⊕Cn+iCn+i+1=XiYi+YiCn+i+Cn+iXiS0、S1、S2、S3是用来控制逻辑函数发生器的输入Ai和Bi,逻辑函数发生器的输出Xi和Yi分别是受S2S3控制的Ai和Bi的组合函数和受S0S1控制的Ai和Bi的组合函数,其函数关系如表3-5所示。表3-5Xi、Yi与控制信号(S0、S1、S2、S3)和数据输入(Ai、Bi)的关系S0S1YiS2S3Xi00iA00101iABi01iA+iB10iAiB10iA+Bi11011Ai由表3-5,可写出Xi和Yi的逻辑表达式\nXi=S2S3Ai+S23S(iA+Bi)+2SS3(iA+iB)+2S3S=iBASBASi2ii3+Yi=0S1SiA+0SS1iABi+S01SiAiB=iiBSBSA10i++结合一位全加器FA输出与输入之间的逻辑表达式,可得一位算术逻辑单元的一组逻辑表达式:Xi=iBASBASi2ii3+Yi=iiBSBSA10i++(3-13)Fi=Yi⊕Xi⊕Cn+iCn+i+1=Yi+XiCn+i2、四位算术逻辑单元四位算术逻辑单元是由4个一位算术逻辑单元组成,其内部的一位算术逻辑单元之间的进位关系可以是串行进位,也可以是并行进位。图3-12给出了串行进位的四位算术逻辑单元。图3-12四位ALU先行进位的四位算术逻辑单元(74181ALU)除产生4位的数据输出(F0F1F2F3)和146位进位输出Cn+4外,又多产生2个输出,一个是G,进位发生输出;另一个是P,进位传递输出。根据式(3-13),74181ALU内部采用先行进位的进位关系如下:第0位向第1位的进位公式为:Cn+1=Y0+X0CnCn是向第0位的进位第1位向第2位的进位公式为:Cn+2=Y1+X1Cn+1=Y1+Y0X1+X1X0Cn第2位向第3位的进位公式为:Cn+3=Y2+X2Cn+2=Y2+Y1X2+Y0X2X1+X2X1X0Cn第3位的进位输出公式为:Cn+4=Y3+X3Cn+3=Y3+Y2X3+Y1X3X2+Y0X3X2X1+X3X2X1X0Cn令G=Y3+Y2X3+Y1X3X2+Y0X3X2X1P=X3X2X1X0则Cn+4=G+PCn(3-14)综上所述,用TTL电路实现的四位算术逻辑单元(74181ALU)的逻辑电路如图3-13所示。M为逻辑运算与算术运算的控制信号。当M=1时,封锁了各位的进位输出,进行的是逻辑运算;当M=0时,所进行的是算术运算。74181ALU有两种工作方式:一种是采用正逻辑工作方式,另一种是采用负逻辑工作方式。无论哪一种工作方式都是等效的,都有16种逻辑运算和16种算术运算。表3-6列出了74181ALU正逻辑方式各种运算功能。74181ALU正、负逻辑的引脚图如图3-14所示。图3-1374181ALU逻辑电路图3-1474181ALU正、负逻辑的引脚图47表3-6正逻辑74181ALU算术/逻辑运算功能表S3S2S1S0逻辑运算(M=1)算术运算(M=0,Cn=1)0000AA0001BA+A+B\n0010ABA+B0011逻辑0减10100ABA+AB0101B(A+B)加AB0110A⊕BA减B减10111ABAB减11000A+BA加AB1001BA⊕A加B1010B(A+B)加AB1011ABAB减11100逻辑1A加2A1101A+B(A+B)加A1110A+B(A+B)加A1111AA减13、两级先行进位的ALU74181ALU为了方便多个74181ALU的连接,特设置了P和G两个先行进位输出端。如果将4个74181ALU的先行进位输出端(P0、G0,P1、G1,P2、G2,P3、G3)送到先行进位部件74182CLA,又可实现第二级的先行进位,即组与组之间的先行进位。按照式(3-14)可得先行进位部件74182CLA的进位逻辑关系:Cn+x=G0+P0CnCn+y=G1+P1Cn+x=G1+G0P1+P1P0CnCn+z=G2+P2Cn+y=G2+G1P2+G0P2P1+P2P1P0CnCn+4=G3+P3Cn+z=G3+G2P3+G1P3P2+G0P3P2P1+P3P2P1P0Cn令G*=G3+G2P3+G1P3P2+G0P3P2P1P*=P3P2P1P0则Cn+4=G*+P*Cn图3-1574182CLA的逻辑电路48用TTL电路实现的先行进位部件74182CLA的逻辑电路如图3-15所示。其中,G*称为成组进位发生输出,P*称为成组进位传递输出。由此可见,一个先行进位部件74182CLA可以连接4个74181ALU,实现一个16位的组间、组内都是先行进位的ALU,如图3-16所示。图3-1616位全先行进位的ALU显然,用两个16位全先行进位的ALU进行级联,便可以组成了一个32位的ALU。两个16位全先行进位ALU之间的进位采用的是串行进位。如图3-17所示。图3-1732位ALU3.3.2定点运算器的基本结构1、单总线结构运算器单总线结构运算器的特点是所有部件都连在一组总线上,在同一时间内,只能允许有一个数据放在总线上,参与运算的两个数据无法同时送到ALU,因此,在ALU的两个输入端分别设置了A、B\n两个缓冲器。运算结束时,再通过单总线将结果存于目的寄存器。单总线结构运算器的主要缺点是操作速度慢。单总线结构运算器如图3-18所示。图3-18单总线结构运算器492、双总线结构运算器双总线结构运算器的特点是操作部件连接在两组总线上,可以通过这两组总线同时传输数据,从而保证了在同一时间内将参与运算的两个数据送到ALU并进行运算,但运算结果不能直接到总线,因为,此时的两组总线都被参与运算的两个数据占用着,所以,在ALU的输出端设置一个数据缓冲寄存器,运算结果通过缓冲寄存器再送到总线。显然,双总线结构运算器的执行速度比单总线结构运算器的执行速度快。双总线结构运算器如图3-19所示。图3-19双总线结构运算器3、三总线结构运算器三总线结构运算器的特点是操作部件连接在三组总线上,可以通过这三组总线同时传输数据,不仅保证了在同一时间内将参与运算的两个数据送到ALU并进行运算,还可以将运算结果直接送到总线上。与前两种结构的运算器相比较,三总线结构运算器的执行速度最快,不过其控制也更复杂,在三总线结构运算器中,还设置一个总线旁路器,其目的是:当一组总线上的数据不需操作时,可以通过总线旁路器将此数据直接送到其它总线上,而不必经过ALU。三总线结构运算器如图3-20所示。图3-20三总线结构运算器3.3.3定点运算器模型运算器是由算术逻辑单元(ALU)、寄存器(通用寄存器、累加器、数据缓冲寄存器、标志寄存器等)、数据多路选择器和数据总线等组成。如图3-21所示,给出了单累加器运算器模型。该模型的核心是ALU,实现对数据的算术运算和逻辑运算。AC是累加器,实际上它也是寄存器,只不过使用得较频繁而已,不仅来存放参与运算的数据,还用来存放ALU所运算的结果。在此模型中所有运算结果只能存放于AC中。STR为状态寄存器,其内设置有多个状态标志,例如零标志、进位标志、溢出标志、符号标志等,数据在ALU中运算的过程中会对STR中的标志产生影响。DR为数据缓冲积存器,运算器与存储器之间的数据交换必需通过DR,设置DR主要是解决速度匹配问题。50图3-21定点运算器模型3.4浮点数的算术运算与浮点运算器3.4.1浮点数的加减运算设两个浮点数x和y,它们分别为x=Mx×2exx表示为ExMxx=My×2eyy表示为EyMy其中,Ex、Ey分别是浮点数x和y的阶码机器数形式,通常采用移码;Mx、My为x和y的尾数机器数形式,通常采用补码。令z=x±y,则z=x±y=(Mx×2ex-ey±My)×2eyex≤ey\n浮点数加减运算步骤如下:(1)0浮点数检查如果加减运算中的两个浮点数x和y有一个为0,则浮点数的加减运算就没有必要严格按照上述步骤进行,从而节约了运算时间,因此,0浮点数检查是十分必要的。(2)对阶阶码表示的是小数点的位置,对阶实际上是使小数点对齐。当两个浮点数的阶码不相同时,将阶码小的浮点数的尾数右移△E(△E=∣ex-ey∣位,其阶码值增加△E,使两个浮点数的阶码值相同,此操作称位对阶。因为浮点数的尾数右移时丢失的是低位数值位,这样造成的浮点数误差较小。(3)尾数加减对阶完成后,即可进行尾数的加减。不论是加法还是减法,都必须按加法进行运算。(4)结果规格化尾数的加减运算结果未必满足浮点数的规格化条件,有必要进行左规或右规。下面以变补形式的尾数为例来讨论左规、右规和舍入处理。当尾数加减运算结果的双符号位不同时,并不表示运算结果的溢出,因为影响浮点数大小的主要因素是阶码而不是尾数,仅表示尾数加减运算结果的绝对值大于1,向左破坏了规格化,因此,需要将尾数加减运算结果右移并相应地提高阶码来实现规格化,这种实现规格化的方法称为右规;当尾数加减运算结果的双符号位相同,且符号位与最高数值位相同时,尾数的加减运算结果不符合浮点数的规格化条件,因此,需要将尾数加减运算结果左移并相应地降低阶码来实现规格化,这种实现规格化的方法称为左规;当尾数加减运算结果的双符51号位相同,且符号位与最高数值位不相同时,尾数的加减运算结果符合浮点数的规格化条件,因此,不需要左规或右规。(5)舍入处理在对阶和右规时,需要将浮点数的尾数和尾数加减运算结果进行右移,被右移的低位部分会因此而丢失,从而造成一定的误差,因此,需要进行舍入处理。最简单的舍入处理方法有:1)“0舍1入”法:如果右移时被丢掉的数值位的最高位为0,则舍去;否则,在数值的最低位加1。2)“恒1”法:只要有数值位被丢掉,则在数值的最低位置“1”。(6)溢出判断浮点数加减运算结果的溢出判断取决于阶码的溢出。如果阶码没有溢出,浮点数加减运算结果不会溢出;如果阶码溢出,则需要进行相应地处理。阶码上溢:是指阶码超出了其所能表示的最大正数,一般认为结果是±∞。阶码下溢:是指阶码超出了其所能表示的最小负数,一般认为结果是0。【例3-10】已知x=2010×(-0.110100)y=2100×(0.101011),求x+y。解:(1)对阶(阶码和尾数均采用补码表示)[x]浮=00.010;11.001100[y]浮=00.100;00.101011浮点数x的阶码小,将x的尾数右移2位,x的阶码增2。即[x]浮=00.100;11.110011(2)尾数求和11.110011\n+00.101011100.011110(3)规格化∵尾数求和的结果为00.011110,符号位与数值最高位相同。∴需进行左规,即尾数向左移1位,阶码减1,可得:00.011;00.111100(4)舍入处理采用“0舍1入”法,由于左规时移出一位0,所以,舍去0。(5)溢出判别由于运算结果的阶码未发生溢出,所以运算结果未溢出。x+y=2011×(+0.111100)3.4.2浮点数的乘法和除法运算1、浮点数的乘法和除法运算规则设两个浮点数x和y,它们分别为x=Mx×2exx表示为ExMxy=My×2eyy表示为EyMy其中,Ex、Ey分别是浮点数x和y的阶码机器数形式,通常采用移码,Mx、My为x和y的尾数机器数形式,通常采用补码。则浮点数的乘法和除法运算规则:浮点数的乘法运算规则:x×y=(Mx+My)·2(ex+ey)浮点数的除法运算规则:x÷y=(Mx÷My)·2(ex-ey)2、浮点数的乘法和除法运算步骤浮点数的乘法和除法运算大体分为六步:第一步,0浮点数检查;第二步,阶码的加/52减运算;第三步,尾数乘/除运算;第四步,结果规格化;第五步,舍入处理;第六步,溢出判断。由于浮点数加减结果规格化、舍入处理也适用于浮点数的乘法和除法运算,尾数乘/除运算与定点数的乘/除类似,所以在此只讨论阶码的加/减运算及溢出判断和舍入处理。(1)阶码运算对阶码的运算有+1、-1、求和、求差四种,运算的同时还需要检查阶码是否溢出。由于阶码通常采用补码、移码形式,而补码的运算和溢出判别在前面已讲过,所以在此只讨论阶码的加/减运算及溢出判断。1)移码运算根据移码定义,对于n+1位的移码(1位符号和n位数值),则:[x]移=2n+x,-2n≤x<2n,[x]移+[y]移=2n+x+2n+y=2n+(2n+(x+y))=2n+[x+y]移即直接用移码求阶码之和时,结果的最高位多了一位1,要得到正确的移码形式结果,必须对结果的符号位取反。当混合使用移码和补码时,由于[y]补=2n+1+y(mod2n+1),则:[x]移+[y]补=2n+x+2n+1+y=2n+1+(2n+(x+y))=2n+1+[x+y]移即[x+y]移=[x]移+[y]补(mod2n+1)同理[x-y]移=[x]移+[-y]补(mod2n+1)\n2)溢出判断如果阶码运算的结果溢出,则上述各式均不成立。为了便于判断阶码运算的结果溢出,使用双符号位的阶码加法器,并规定移码的第二个符号位,即最高符号位恒用0参与运算,则溢出条件是结果的最高符号位为1。此时,若两符号位为10,表示结果上溢;若两符号位为11,表示结果下溢;若两符号位为00,表示结果为负;若两符号位为01,表示结果为正。【例3-11】已知x=+011y=+110,求[x+y]移和[x-y]移,并判断是否溢出。解:[x]移=01011,[y]补=00110,[-y]补=11010,[x+y]移=[x]移+[y]补=01011+00110=10001,双符号为10,结果上溢。[x-y]移=[x]移+[-y]补=01011+11010=00101,双符号为00,结果正确。(2)舍入处理舍入处理的目的是尽量减少误差,其方法有截断处理和修正处理。截断处理也称为恒舍法,是无条件地丢掉正常尾数最低位之后的全部数值。修正处理是保留右移过程中移出的若干高位的值,然后再按某种规则,用所保留的高位值来修正尾数。其舍入规则有:1)只要尾数的最低位为1或移出丢掉的几位中有1,把尾数的最低位置1,否则保持原来的02)最低位恒置13)0舍1入当失去的最高位的值为1时,把该1加到最低数值位上进行修正,否则,舍去丢掉的各位的值。【例3-12】已知[x]补=11.01100000,[x2]补=11.01100001,[x3]补=11.01111001,求执行只保留小数点后4位有效数字的舍入操作值。解:执行舍入处理后,其结果分别为[x]补=11.0110(不舍不入)[x2]补=11.0110(舍)[x3]补=11.1000(入)53【例3-13】已知x=2-5×0.0110011y=23×(-0.1110010),阶码用4位移码表示,尾数(含数符)用8位补码表示,求x×y。要求用补码完成尾数乘法运算,运算结果的尾数保留高8位,并用尾数低位字长的值处理舍入操作。解:阶码采用双符号移码,尾数采用双符号补码,则[Mx]补=00.0110011,[My]补=11.0001110[Ex]移=00011,[Ey]移=01.011,[Ey]补=00011[x]浮=00011,00.0110011,[y]移=01.011,11.0001110(1)求阶码和[Ex+Ey]移=[Ex]移+[Ey]补=00011+00011=00110,其真值为-2。(2)尾数乘法运算可采用补码一位乘实现,即[Mx]补×[My]补=00.0110011×11.0001110=11.10100101001010(3)规格化处理乘积的尾数符号位与最高数值位相同,不符合规格化要求,需进行左规,即尾数左移一位,阶码减1,此时,阶码为:00101(-3),尾数为:11.01001010010100。(4)舍入处理尾数为负数,取尾数高位字长,按舍入规则,舍去低位字长,故尾数为:1.0100101。[x×y]浮=00101,11.0100101x×y的真值为:23×(-0.1011011)\n3.4.3浮点运算器由于浮点数的运算是对阶码和尾数分别进行的运算,阶码是定点整数,尾数是定点小数,所以,浮点运算器实质上是两个定点运算器构成的,其工作原理结构图如图3-22所示。图3-22浮点运算器阶码运算部件用来对阶码进行加减运算,由寄存器(E1、E2)、计数器EC、并行加法器Fe组成。其中E1、E2用于存放与R0、R1中尾数相对应的阶码。1、尾数运算部件尾数运算部件用来对尾数进行加、减、乘、除运算,由寄存器(R0、R1、MQ)、并行加法器Fm组成。其中R0、R1用于存放操作数,R0还用来存放运算结果;MQ是乘商寄存器,用来进行乘除运算;R0、MQ具有联合左移、右移功能;R1具有右移功能,用于实现对阶的移位。2、工作原理(1)浮点数的加减运算阶码运算部件尾数运算部件E1ECFeE2R0MQFmR1±1+1+1541)阶码运算部件求出阶差△E=E1-E2,并存放于EC中,EC根据符号判断出哪个浮点数的阶码小,控制将其相应的尾数(R0或R1)进行右移。若△E为正,则E2小,控制R1进行右移,且每右移一位,EC-1;若△E为负,则E1小,控制R0进行右移,且每右移一位,EC-1。一直控制移位到EC=0,完成浮点数的对阶操作;2)尾数运算部件完成对尾数的加减,并将结果存于R0中;3)判别运算结果,进行规格化。在规格化处理过程中,每将R0左移(或右移)一位,应将E1、E2中的较大者减1(加1)。规格化处理结束后,将其作为结果的阶码。(2)浮点数的乘除运算在进行浮点数的乘除运算时,阶码运算部件和尾数运算部件独立工作,阶码运算部件只做阶码的加减运算,尾数运算部件完成尾数的乘除运算,运算结束后对结果进行规格化处理。关联运算器定点运算器浮点运算器定点数算术运算与实现逻辑运算与移位\n算术逻辑单元ALU浮点数算术运算浮点运算器组成定点数加减运算定点数乘运算定点数除运算溢出判别法浮点数加减运算浮点数乘除运算原码一位/二位乘法补码一位/二位乘法阵列乘法器加减交替除法恢复余数除法单符号判别法双符号判别法进位判别法55习题3.1已知[x]补、[y]补、计算[x+y]补和[x-y]补。(1)[x]补=0.11011,[y]补=0.00011(2)[x]补=0.10111,[y]补=1.00101(3)[x]补=1.01010,[y]补=1.100013.2已知[x]补、[y]补、计算[x+y]变补和[x-y]变补。(1)[x]补=100111,[y]补=111100(2)[x]补=011011,[y]补=110100(3)[x]补=101111,[y]补=0110003.3设某机字长为8位,给定十进制数:x=+49,y=-74,试按补码运算规则计算下列各题。(1)[x]补+[y]补(2)[x]补-[y]补(3)[-x]补+[21y]补(4)[2x-21y]补(5)[21x+21y]补(6)[-x]补+[2y]补3.4分别用原码一位乘法和补码一位乘法计算[x×y]原和[x×y]补。(1)x=0.11001,y=0.10001(2)x=0.01101,y=-0.10100\n(3)x=-0.10111,y=0.11011(4)x=-0.01011,y=-0.110103.5用补码两位乘法计算[x×y]原和[x×y]补。(1)x=0.11001,y=0.10001(2)x=0.10101,y=-0.01101(3)x=-0.01111,y=0.11101(4)x=-0.01001,y=-0.100103.6分别用原码不恢复余数法和补码不恢复余数法计算[x/y]原和[x/y]补。(1)x=0.01011,y=0.10110(2)x=0.10011,y=-0.11101(3)x=-0.10111,y=-0.11011(4)x=+10110,y=-001103.7在进行浮点加减运算时,为什么要进行对阶?说明对阶的方法和理由。3.8已知某模型机的浮点数据表示格式如下:151413870数符阶符阶码尾数其中,浮点数尾数和阶码的基值均为2,均采用补码表示。(1)求该机所能表示的规格化最小正数和非规格化最小负数及其所对应的十进制真值。(2)已知两个浮点数的机器数表示为EF80H和FFFFH,求它们所对应的十进制真值。(3)已知浮点数的机器数表示为:[x]补=1111100100100101,[y]补=1111011100110100试按浮点加减运算,计算[x±y]补。3.9已知某机浮点数表示格式如下:11109760数符阶符阶码尾数其中,浮点数尾数和阶码的基值均为2,阶码用移码表示,尾数用补码表示。设:x=0.110101×2-001y=-0.100101×2+001用浮点运算规则,计算x+y、x-y、x×y、x/y(要求写出详细运算步骤,并进行规格化)。3.10下图给出了实现补码乘法的部分硬件框图。(1)请将图中逻辑门AND1和AND2的输入信号填写正确。56题图3.10补码乘法部分框图(2)按补码乘法规则,将下列乘法运算算式完成,写出x×y的真值。00.00000→00.0000000.110011001100010011000.11001→00.01100→00.0011010100110101001(3)根据(2)中的乘法算式,将乘法运算初始和结束时,三个寄存器中的数据填入下列表格中。寄存器ABC运算初始运算结束\n3.11说明定点补码和浮点补码加减运算的溢出判断方法。3.12设有一个16位定点补码运算器,数据最低位的序号为1。运算器可实现下述功能:(1)A±B→A(2)B×C→A、C(乘积高位在A中)(3)A÷B→C(商在C中)请设计并画出运算器第4位及A、C寄存器第4位输入逻辑。加法器本身逻辑可以不画。3.13设一个8位寄存器的内容为十六进制数0C5H,连续经过一次算术右移、一次逻辑左移、一次大循环右移、一次小循环左移。写出每次移位后寄存器的内容和进位标志C的状态。3.14选择题(1)运算器的核心部分是()。A、数据总线B、累加寄存器C、算术逻辑运算单元D、多路开关(2)在浮点运算中下面的论述正确的是()。A、对阶时应采用向左规格化B、对阶时可以使小阶向大阶对齐,也可以使大阶向小阶对齐C、尾数相加后可能会出现溢出,但可采用向右规格化的方法得出正确结论D、尾数相加后不可能得出规格化的数(3)当采用双符号位进行数据运算时,若运算结果的双符号位为01,则表明运算()。A、无溢出B、正溢出C、负溢出D、不能判别是否溢出(4)补码加法运算的规则是()。57A、操作数用补码表示,符号位单独处理B、操作数用补码表示,连同符号位一起相加C、操作数用补码表示,将加数变补,然后相加D、操作数用补码表示,将被加数变补,然后相加(5)原码乘除法运算要求()。A、操作数必须都是正数B、操作数必须具有相同的符号位C、对操作数符号没有限制D、以上都不对(6)进行补码一位乘法时,被乘数和乘数均用补码表示,运算时()。A、首先在乘数yn后增设附加位yn+1,且初始yn+1=0,依照ynyn+1的值确定下面的运算B、首先在乘数yn后增设附加位yn+1,且初始yn+1=1,依照ynyn+1的值确定下面的运算C、根据乘数符号位,决定乘数yn后附加位yn+1的值,依照ynyn+1的值确定下面的运算D、不在乘数yn后增设附加位yn+1,而直接根据乘数的末两位yn-1yn确定下面的运算(7)下面对浮点运算器的描述中正确的是()。A、浮点运算器由阶码部件和尾数部件实现B、阶码部件可实现加、减、乘、除四种运算C、阶码部件只能进行阶码的移位操作D、尾数部件只能进行乘法和加法运算(8)若浮点数的阶码和尾数都用补码表示,则判断运算结果是否为规格化数的方法是()。A、阶符与数符相同为规格化数B、阶符与数符相异为规格化数C、数符与尾数小数点后第一位数字相异为规格化数D、数符与尾数小数点后第一位数字相同为规格化数(9)已知[x]补=1.01010,[y]补=1.10001,下列答案正确的是()。\nA.、[x]补+[y]补=1.11011B、[x]补+[y]补=0.11011C、[x]补-[y]补=0.11011D、[x]补-[y]补=1.11001(10)下列叙述中概念正确的是()。A、定点补码运算时,其符号位不参加运算B、浮点运算中,尾数部分只进行乘法和除法运算C、浮点数的正负由阶码的正负符号决定D、在定点小数一位除法中,为了避免溢出,被除数的绝对值一定小于除数的绝对值3.15填空题(1)在补码加减运算中,符号位与数据▁▁▁▁参加运算,符号位产生的进位▁▁▁▁。(2)在采用变形补码进行加减运算时,若运算结果中两个符号位▁▁▁▁,表示发生了溢出。若结果的两个符号位为▁▁▁▁,表示发生正溢出;为▁▁▁▁,表示发生负溢出。(3)浮点乘除法运算的运算步骤包括:▁▁▁▁、▁▁▁▁、▁▁▁▁、▁▁▁▁和▁▁▁▁。(4)在浮点运算过程中,如果运算结果的尾数部分不是▁▁▁▁形式,则需要进行规格化处理。设尾数采用补码表示形式,当运算结果▁▁▁▁时,需要进行右规操作;当运算结果▁▁▁▁时,需要进行左规操作。(5)浮点运算器由▁▁▁▁和▁▁▁▁两部分组成,它们本身都是定点运算器。3.16是非题(1)运算器的主要功能是进行加法运算。()(2)加法器是构成运算器的主要部件,为了提高运算速度,运算器中通常都采用并行加法器。()(3)在定点整数除法中,为了避免运算结果的溢出,要求︱被除数︱<︱除数︱。()58(4)浮点运算器中的阶码部件可实现加、减、乘、除运算。()(5)根据数据的传递过程和运算控制过程来看,阵列乘法器实现的是全并行运算。()(6)逻辑右移执行的操作是进位标志位移入符号位,其余数据位依次右移1位,最低位移入进位标志位。()59第4章存储器系统【内容摘要】存储器是计算机的重要组成部分之一,是用来存放程序和数据的。为了解决存储器的容量大、速度快、价格低三方面的矛盾,计算机往往采用多级存储体系结构(即Cache、主存、辅存结构),从而使各种存储器构成一个有机整体,称之为存储器系统。其中主存是一种半导体存储器,包括只读存储器、随机存储器、闪速存储器和并行存储器等,它是本章的一个重点;Cache是一种高速缓冲存储器,是为了解决CPU与主存之间的速度匹配问题而采用的一种硬件技术,并发展为多级Cache体系,分为指令Cache和数据Cache;辅存是一种虚拟存储器,可以分为段式、页式、段页式虚拟存储器。【学习要点】●存储器的分类和技术指标●半导体存储器工作原理与扩展方法●闪速存储器、双端存储器和多体交叉存储器●Cache地址映射方法\n●虚拟存储器基本概念及其地址变换过程4.1存储器概述4.1.1存储器分类存储器随着计算机的发展进步较快,种类繁多,其分类方法也有多种。1、按存储器在系统中的作用进行分类(1)主存储器主存储器是用来存放当前运行的程序和数据的,可以被CPU直接访问的半导体存储器。它位于主机内部,又称内存储器,简称内存或主存。(2)辅助存储器辅助存储器是为解决主存容量不足而设置的存储器,是用来存放CPU暂不执行的程序和数据,它可以是硬盘、U盘、光盘等,其特点是存储容量大。辅助存储器又称外存储器,简称外存或辅存。辅存是不能被CPU直接访问的,当需要运行存放在辅存中的程序时,必须将辅存中的程序调入内存,然后再由CPU去执行。近年来,大容量半导体存储器如FLASH存储器的价格迅速下降,用闪存制成的“优盘”成为了一种很受欢迎的外存。(3)高速缓冲存储器高速缓冲存储器是介于CPU与主存之间,用来解决CPU与主存之间的速度匹配问题而设置的高速小容量的存储器,简称Cache。它可以做在CPU内部,称内部Cache,也可以位于CPU之外,称为外部Cache。2、按存取方式进行分类(1)随机存储器随机存储器简称为RAM(RandomAccessMemory),是指存储单元既能被CPU读,又能被CPU写,CPU对存储单元的读、写都是随机的,且读、写时间与存储单元的物理位置无关。一般主存主要是由RAM组成。(2)只读存储器只读存储器简称为ROM(ReadOnlyMemory),是指存储单元只能被CPU随机地进行读,而不能进行写。只读存储器可以作为主存的一部分,用来存放不变的程序和数据,例如计算机的加电诊断程序、系统引导程序等。(3)顺序存储器60顺序存储器简称SAM(SequentialAccessMemory),是指存储器的内部信息排列有序的,CPU对存储器的读或写是按顺序进行的,并且CPU对存储器的读或写时间与信息在存储器中的物理位置有关。2、按存储介质进行分类(1)半导体存储器半导体存储器是一种利用半导体器件来进行存储二进制信息的存储器。计算机的内存一般是由半导体存储器组成,根据半导体存储器的制造工艺不同,可以将半导体存储器分为双极型和MOS型。(2)磁表面存储器磁表面存储器是利用涂在基体表面上的一层磁性材料来存储二进制信息的存储器,例如\n磁盘等。(3)光存储器光存储器是采用光学原理制成的存储器,它是通过能量高度集中的激光束照在基体表面而引起的物理或化学的变化来记忆二进制信息。4.1.2存储器系统结构不管计算机的主存容量有多大,总是无法满足人们的期望。为了解决存储器的容量大、速度快、价格低三方面的矛盾,计算机往往采用多级存储体系结构,如图4-1所示。最上层(即第一层)是CPU的内部寄存器,数量是有限的,其访问时间是几个ns;第二层是Cache,存储容量在32KB~几十MB,其访问时间是十几个ns;第三层是主存,存储容量几十MB~几个GB,其访问时间是几十个ns;第四层是辅存,存储容量在几个GB~几十GB,其访问时间是10ms以上,如果是光盘,其驱动时间加图4-1多级存储体系结构加上访问时间就需要用秒来衡量了。4.1.3主存储器的技术指标主存储器一般是半导体存储器,主存储器的技术指标也是指半导体存储器的技术指标。半导体存储器的组成结构如图4-2所示。存储体是存储二进制信息的主体,是由很多存储单元组成,为了区别不同的存储单元,就需要对存储体中每一个存储单元进行统一编号,这个编号我们称之为存储单元的地址。于是,存储单元与其地址之间建立了一一对应的关系,一旦给出一个单元的地址就能唯一确定一个存储单元。存储单元所存储的二进制信息称之为存储单元的内容,由此可见,存储单元的地址与存储单元的内容是两个不同的概念,但两者又存在一定的关系,即存储单元的内容可以用存储单元的地址来表示。这种通过存储单元的地址来访问存储单元的方法称为编址方法,可以分为按字节编址和按字编址。按字节编址是指与存储单元的地址相对应的存储单元内容是一个字节,即最小寻址单位是一个字节,目前大多数计算机采用的是按字节编址。按字编址是指与存储单元地址相对应的存储单元内容是一个字。1、存储容量存储容量是存储器主要性能指标,存储容量越大,所能存储的信息量就越多。存储容量的大小常用B、KB、MB、GB和TB为单位表示。其中,1KB=210B=1024B;1MB=1024KB61=220B;1GB=l024MB=230B;1TB=1024GB=240B。2、存取时间存取时间是指从启动一次存储器操作到完成该操作所经历的时间。例如,读出时间是指从CPU向存储器发出有效地址和读命令开始,直到将被选单元的内容读出为止所用的时间。显然,存取时间越小,存取速度越快。3、存储周期\n连续启动两次独立的存储器操作(如连续两次读操作)所需要的最短间隔时间称为存储周期。它是衡量主存储器工作速度的重要指标。一般情况下,存储周期略大于存取时间。4、存储器带宽存储器带宽是指在单位时间内从存储器中所存取的信息量,是衡量数据传输速率的重要技术指标,通常以位/秒或字节/秒做度量单位。5、可靠性可靠性一般指存储器对外界电磁场及温度等变化的抗干扰能力。存储器的可靠性用平均故障间隔时间MTBF(MeanTimeBetweenFailures)来衡量。MTBF可以理解为两次故障之间的平均时间间隔,MTBF越长,可靠性越高,存储器正常工作能力越强。6、性能/价格比性能/价格比(简称性价比)是衡量存储器经济性能好坏的综合指标,它关系到存储器的实用价值。性能包括前述的各项指标,其中存取时间、存储周期、存储器带宽都反映了主存速度的指标,而价格是指存储单元本身和外围电路的总价格。图4-2存储器组成结构4.2半导体存储器4.2.1半导体存储器分类半导体存储器是目前被广泛应用于主存的一种存储器,按其读写性能可分为:随机读写存储器(RAM)和只读存储器(ROM)两大类,如图4-3所示。1、RAMRAM是可读、可写的存储器,又称为读写存储器,其特点是:系统断电后会自动丢失其中存储的信息。根据制造工艺,RAM可分为双极型和MOS型两种,其中MOS型RAM62按信息存放方式不同,可分为静态RAM(StaticRAM,简称SRAM)和动态RAM(DynamicRAM,简称DRAM)。2、ROM只读存储器ROM是非易失性存储器,其特点是:系统断电后其中所存储的信息不会丢失。只读存储器种类繁多,在此只能对几种ROM进行简单地介绍。(1)PROMPROM(ProgrammableROM)称为可编程ROM,是由用户把要写入的信息“烧”入PROM中,对PROM的“烧”入操作,需要一个ROM编程器的特殊设备。(2)EPROMEPROM(ErasablePROM)称为紫外线擦除PROM,用紫外光照射EPROM,可实现对EPROM图4-3半导体存储器分类中信息的擦除,所有EPROM芯片都有一个窗口用于接收照射它的紫外线。(3)EEPROMEEPROM(ElectricallyEPROM)称为电擦除PROM,它与EPROM相比,存在很多优势:其一,它是采用电擦除,可以实现瞬间擦除,而EPROM需要20分钟左右的擦除时间;其二,用户可以对EEPROM进行有选择地擦除,而EPROM是对整个芯片所有内容进行擦除;其三,用户可以直接在电路板上对EEPROM进行擦除和编程,而不需要额外的设备。\n(4)FE2PROMFE2PROM(FlashEEPROM)称为闪烁可编程可擦除ROM,简称闪存,也是半导体存储器,它既吸收了EPROM结构简单、编程可靠的优点,又保留了E2PROM用隧道效应擦除快捷的特性,而且集成度可以做得很高。4.2.2存储元电路存储元电路是指存储一位二进制信息“1”或“0”的电路,又称存储细胞或基本单元电路。结合半导体存储器的分类,下面分别介绍几种存储元电路。1、六管静态存储元六管静态存储元是由六只NMOS管(T1~T6)组成,如图4-4所示。其中T1与T2构成一个反相器,T3与T4构成另一个反相器,两个反相器的输入与输出交叉连接构成双稳态触发器,利用稳态来存储一位二进制信息“1”或“0”。当T1导通、T3截止时为0状态;当T3导通、T1截止时为1状态。在不掉电的情况下,存储元所存储的一位二进制信息是不会改变的。T5、T6是门控管(行选通管),由Xi线控制其导通或截止。当Xi=1时,T5、T6导通;当Xi=0时,T5、T6截止。T7、T8也是门控管(列选通管),其导通与截止受Yi线控制。当Yj=1时,T7、T8导通;当Yj=0时,T7、T8截止。T7、T8是用来控制位线与数据线之间连接状态,并不是每个存储元都需要这两只管子,所以称为六管NMOS静态存储元。只有当存储元所在的行、列对应的Xi、Yj线均为1时,该存储元才与数据线接通,才能对它进行读或写,这种状态称为选中状态。TTTTTTTTXY存储单元位线B位线BDD数据线VV12\n345678DDGij图4-4六管静态存储元易失性存储器非易失性存储器半导体存储器只读存储器ROM随机读写存储器RAM掩膜ROM可编程ROM(PROM)可擦除ROM(EPROM)电擦除ROM(E2PROM)静态RAM(SRAM)动态RAM(DRAM)快速擦写存储器(FlashMemory)632、单管动态存储元单管动态存储元只有一个电容和一个MOS管组成,如图4-5所示。一位二进制信息存储依靠的是MOS管栅极与源极之间的极间电容,若极间电容有电荷,表示所储存的信息为“1”;否则,表示所储存的信息为“0”。在保持状态下,行选择信号线为低电平,V管截止,电容C不存在充放电回路(当然还有一定的泄漏),其上的电荷状态将保持不变(有电荷表示存“1”,无电荷表示存“0”)。(1)读出在对存储元进行读操作时,行选择线为高电平,使V管导通,于是刷新放大器读取对应电容C上的电压值,只有\n当列选择信号有效时,存储元才可以输出信息。刷新放大器的灵敏度很高,放大倍数很大,并且能将读取电容上的电压值转换为逻辑“0”或者逻辑“1”。因此在读出的过程中,存储元中的电容将会受到影响,为了在读出信息之后存储元仍能保持原有的信息,刷新放大器在读取电容上的电压值之后又立即进行重写,使每次读出后电容C上的电荷保持不变,这就是所谓的“再生”或“刷新”。(2)写入在对存储元进行写操作时,行选择线为高电平,使V管导通,如果列选择信号也为高电平,则存储元被选中,于是由数据输入/输出线送来的信息通过刷新放大器和T管送到电容C。(3)刷新由于晶体管V存在漏电流,平时电容C上的电荷将逐渐泄漏掉,不能长期保存,将使存入的信息消失。为此,需要周期性地对电容进行充电,以补充泄漏的电荷,通常把这种补充电荷的过程叫刷新或再生。随着器件工作温度的增高,放电速度会变快。刷新时间间隔一般要求在1~100mS。工作温度为70℃时,典型的刷新时间间隔为2mS,因此,2mS内必须对存储的信息刷新一遍。3、只读存储器存储元(1)EPROM存储元初期的EPROM存储元是浮栅雪崩注入MOS,记为FAMOS。它的集成度低,用户使用不方便,速度慢,因此很快被性能和结构更好的叠栅注入MOS(SIMOS)取代。SIMOS管结构如图4-6(a)所示。它属于NMOS,与普通NMOS不同的是:它有两个栅极,一个是控制栅CG,另一个是浮栅FG。FG在CG的下面,被SiO2所包围,与四周绝缘。单个SIMOS管构成一个EPROM存储元,如图4-6(b)所示。与CG连接的线W称为字线,读出和编程时作选址用。漏极与位线D相连接,读出或编程时输出、输入信息。源极接VSS(接地)。当FG上没有电子驻留时,CG开启电压为正常值Vcc,若W线上加高电平,源、漏间也加高电平,SIMOS形成沟道并导通,称此状态为“1”;当FG上有电子驻留,CG开启电压升高超过Vcc,这时若W线加高电平,源、漏间仍加高电平,SIMOS不导通,称此状态为“0”。人们就是利用SIMOS管FG上有无电子驻留来存储二进制信息“1”或“0”。因FG上电子被绝缘材料包围,不获得足够能量DDSFGCGWVSS(地)(b)(a)\nN+3~4μmN+P-SiSiO2SCGFGD(a)SIMOS管结构;(b)SIMOSEPROM存储元图4-6SIMOS型EPROM行选择信号VC刷新放大器列选择信号数据输入/输出线图4-5单管动态存储元64很难跑掉,所以可以长期保存信息,即使断电也不丢失。SIMOSEPROM芯片出厂时FG上是没有电子的,即都是“1”信息。对它编程就是在CG和漏极都加高电压,向某些元件的FG注入一定数量的电子,把它们写为“0”。EPROM封装方法与一般集成电路不同,需要有一个能通过紫外线的石英窗口,擦除时将芯片放入擦除器的小盒中,用紫外灯照射约20分钟,若读出各单元内容均为FFH,说明原信息已被全部擦除,恢复到出厂状态。写好信息的EPROM为了防止光线长期照射而引起的信息破坏,常用遮光胶纸贴于石英窗口上。EPROM的擦除是对整个芯片进行的,不能只擦除个别单元或个别位,擦除时间较长,且擦和写均需离线操作,使用起来不方便,因此,能够在线擦写的E2PROM芯片近年来得到广泛应用。(2)FE2PROM存储元闪存是新一代电信号擦除的可编程ROM,它既吸收了EPROM结构简单、编程可靠的优点,又保留了E2PROM用隧道效应擦除快捷的特性,而且集成度可以做得很高。图4-7(a)是闪存采用的叠栅MOS管示意图。其结构与EPROM中的SIMOS管相似,两者区别在于浮栅与衬底间氧化层的厚度不同,在EPROM中氧化层的厚度一般为30~40nm,在闪存中仅为10~14nm,而且浮栅和源区重叠的部分是源区的横向扩散形成的,面积极小,因而浮栅与源区之间的电容很小,当Gc和S之间加电压时,大部分电压将降在浮栅与源区之间的电容上,闪存的存储元就是用这样一只单管组成的,如图4-7(b)所示。闪存存储元的写入方法和EPROM相同,即利用雪崩注入的方法使浮栅充电。在读出状态下,字线加上+5V,若浮栅上没有电荷,则叠栅MOS管导通,位线输出低电平;如果浮栅上充有电荷,则叠栅管截止,位线输出高电平。擦除方法是利用隧道效应进行的,类似于\nE2PROM写0操作。在擦除状态下,控制栅处等于0电平,同时在源极加入幅度为12V左右、宽度为100mS的正脉冲,在浮栅和源区间极小的重叠部分产生隧道效应,使浮栅上的电荷经隧道释放,但由于片内所有叠栅MOS管的源极连在一起,所以擦除时是将全部存储单元同时擦除,这是不同于E2PROM的一个特点。4.2.3存储器芯片1、半导体存储器芯片组成与结构每一个存储器芯片都具有一定的存储容量,通常表示为N×m(bit),其中N是存储器芯片的字数,一般为2的n次幂(N=2n),m是存储器芯片的位数,一般为1、4、8等。由此可见,一个存储器芯片内部包含N×m个存储元电路,将N×m个存储元电路排列成矩阵,即构成存储矩阵,也称之为存储体。存储体是存储器芯片的核心,它与外围电路(地址译码图4-8半导体存储器芯片基本结构电路、读/写控制电路、输入/输出控制电路等)集成在一块硅片上,称为存储器组件。DSGcGfN+N+P隧道区DGcSGc位线字线DSWiUSSDi(a)(b)(a)叠栅MOS管;(b)存储单元图4-7快闪存储器65存储器组件经过各种形式的封装,引出地址线、数据线、控制线和电源与地线等,即制成了半导体存储器芯片。半导体存储器芯片基本结构如图4-8\n所示。半导体存储器芯片根据位数m的不同,可以将存储器芯片分为字片式结构(m≠1)和位片式结构(m=1)。(1)字片式结构半导体存储器芯片图4-9所示是16×8位的字片式结构半导体存储器芯片结构图。图中每一个小方块表示一个存储元电路,存储矩阵的每一行由8个存储元电路组成一个存储单元,存放一个8位的存储字。一行中所有存储元电路的字线连在一起,与地址译码器的某一个输出端相连;所有存储单元相同的位组成一列,一列中所有存储元电路的两条位线分别连在一起,并使用同一个读写放大电路,读写放大电路与双向数据线相连。若存储器芯片接到地址信息为A3A2A1A0=1111时,A3A2A1A0经地址译码器译码后字线15有效,即选中15号字线相应的存储单元,从而实现对该单元中所有的存储元电路同时进行读/写。这种对地址仅进行一个方向上的译码方式称为单译码方式或一维译码方式。由于字片式结构半导体存储器芯片采用单译码方式,芯片内有多少个存储单元就需要多少个译码驱动电路,所需译码驱动电路较多,电路复杂,为此,大多数存储器芯片都采用双译码方式,既位片式结构。图4-9字片式结构存储器芯片(2)位片式半导体存储器芯片图4-10所示是1K×1位的位片式结构半导体存储器芯片结构图。采用多字1位结构,即1024个字排列成32×32的矩阵,中间每一个小方块代表一个存储元电路。图4-10位片式结构存储器芯片66为了方便存取,给它们编上号,32行的编号为X0、X1、…、X31,32列的编号为Y0、Y1、…、Y31。这样每一个存储元电路便组成一个存储单元,都有一个唯一的固定编号(Xi行、Yj列),这个编号称为存储单元的地址。地址译码器是将地址信息转换成有效的行选信号(Xi)和列选信号(Yj),从而选中某一存储单元。对于图4-10所示双译码方式的存储器芯片,行地址译码器采用5∶32译码器,即5条地址线A0、A1、…、A4作为译码器的输入,译码器的输出为X0、X1、…、X31;列地址译码器也采用5∶32译码器,地址线A5、A6、…、A9作为译码器的输入,译码器输出为Y0、Y1、…、Y31,这样共有10条地址线用来寻址1K字(210=1K)。例如,输入地址为A9A8A7A6A5A4A3A2A1A0=0000000001,则行选信号X1=1和列选信号Y0=1,所以选中第X1行、第Y0列存储单元中的1个存储元电路,从而实现对该单元中的这一个存储元电路进行读/写。2、半导体存储器芯片工作原理(1)半导体存储器芯片内部控制电路1)读/写控制对于被选中的存储单元,究竟进行读操作还是写操作,是由读/写控制逻辑电路进行控制。如果是读操作,则被选中存储单元中的数据经数据线、输入/输出线传送出去;如果是写操作,则将数据经过输入/输出线、数据线存入被选中单元中的各个存储元电路。2)输入/输出控制被选中的存储单元通过输入/输出端进行交换\n数据,读出时它是输出端,写入时它是输入端,即一线二用,由读/写控制信号控制。图4-11给出了一个简单的输入/输出控制电路。当选片信号CS=1时,G5、G4输出为0,三态门G1、G2、G3均处于高阻状态,输入/输出(I/O)端与存储器内部完全隔离,存储器禁止读/写操作,即不工作。当选片信号CS=0时,芯片被选通,如果W/R=1时,G5输出高电平,G3被打开,于是被选中单元中所存储的数据出现在I/O端,存储器执行读操作;如果W/R=0时,G4输出高电平,G1、G2被打开,此时加在I/O端的数据以互补的形式出现在内部数据线上,并被存入到所选中的存储单元中,存储器执行写操作。输入/输出端数据线的条数与被选中存储单元所存储的位数相同,例如1024×1位的位片式结构半导体存储器芯片,一个地址只能选中由1个存储元电路组成的存储单元,因此只有1条输入/输出线;对于256×4位的半导体存储器芯片,一个地址只能选中由4个存储元电路组成的存储单元,所以有4条输入/输出线。但也有半导体存储器芯片的数据输入线和输出线是分开的。3)片选控制一个半导体存储器芯片的存储容量总是有限的,计算机的主存往往是由一定数量的半导体存储器芯片按某种方式进行连接组合而成。当访问存储器时,一次只能访问主存中的某一片(或几片)半导体存储器芯片,为了方便实现对存储器芯片选择的控制,半导体存储器芯片往往设置有一条或几条片选信号(CS或CE)线。当芯片的片选信号有效时,该芯片被选中;当芯片的片选信号无效时,该芯片未被选中。存储器芯片的片选信号通常是由地址译码器的输出信号与&&GGGCSR/W3451DGI/O\n2DG图4-11输入/输出控制电路图4-12存储器读操作时序67一些控制信号(读写命令)来形成。(2)半导体存储器芯片工作时序1)读操作时序读操作时序如图4-12所示。具体过程如下:①欲读出单元的地址送地址总线AB②待地址稳定后形成有效的选片信号CS③在W/R线上加高电平,经过一段延时后,所选择单元的内容出现在I/O端。④使选片信号CS无效,I/O端呈高阻态,本次读出过程结束。由于地址缓冲器、译码器及输入/输出电路存在延时,所以在地址信号加到存储器上之后,必须等待一段时间,数据才能稳定地传输到数据输出端,这段时间称为地址存取时间,记为tAA。如果在存储器芯片的地址输入端已经有稳定地址的条件下,加入选片信号,从选片信号有效到数据稳定输出,这段时间间隔记为tACS。显然在进行存储器读操作时,只有在地址和选片信号加入,且分别等待tAA和tACS以后,被读单元的内容才能稳定地出现在数据输出端。图中tRC为读周期,它表示该芯片连续进行两次读操作必须的时间间隔。2)写操作时序写操作时序如图4-13所示。具体过程如下:①将欲写入单元的地址送地址总线AB②在选片信号CS端加上有效电平,选中SRAM芯片③将待写入的数据加到数据输入端④在W/R线上加入低电平,进入写工作状态⑤使选片信号无效,数据输入线回到高阻状态由于地址改变时,新地址的稳定需要经过一段时间,如果在这段时间内加入写控制信号(即W/R变低),就可能将数据错误地写入其他单元。为防止这种情况出现,在写控制信号有效前,地址必须稳定一段时间,这段时间称为地址建立时间,记为tAS。同时在写信号失效后,地址信号至少还要维持一段写恢复时间(tWR),为了保证速度最慢的存储器芯片的写入,写信号有效的时间不得小于写脉冲宽度(tWP)。此外,对于写入的数据,应在写信号tDW时间内保持稳定,且在写信号失效后继续保持tDH时间。在时序图中\n还给出了写周期tWC,它反应了连续进行两次写操作所需要的最小时间间隔。对大多数静态半导体存储器来说,读周期和写周期是相等的,一般为十几到几十nS。3、半导体存储器芯片实例(1)静态存储器芯片(SRAM)Intel2114SRAM芯片的容量为1K×4位,tWC写入单元的地址ADDtWPCSR/WI/O写入数据AStWRtDWtDHt图4-13存储器写操作时序A3A4A5A6A7A8行地址译码存储矩阵64×64列选择A0A1A2A9…输入数据控制I/O1&1&2I/O2I/O3I/O4CS\nWE列I/O电路图4-14Intel2114内部结构Intel2114123456789101112131415161718Intel2114A6A5A4A3A0A1A2GNDCSWEI/O4I/O3I/O2I/O1A9A8A7VCC(a)A0\nA1A2A3A4A5A6A7A8A9WECS(b)I/O2I/O3I/O4I/O1(a)引脚;(b)逻辑符号图4-15Intel2114引脚及逻辑符号68芯片内部结构如图4-14所示。该芯片采用18脚封装,+5V电源,芯片的实际引脚图和逻辑符号如图4-15所示。由于1K×4=4096,所以Intel2114SRAM芯片有4096个基本存储电路,将4096个基本存储电路排成64行、64列的存储矩阵,每根列选择线同时连接4位列线,对应于并行的4位(位于同一行的4位应作为同一单元的内容被同时选中),从而构成了64行16列=1K个存储单元,每个单元存储4位二进制信息。由于有1K个存储单元(210=1K),所以Intel2114SRAM芯片应有10条地址输入信号线A0…A9。由于芯片采用双译码方式,6条地址A3…A8作为行地址译码输入,经行译码产生64条行选择线,其余4条A0、A1、A2和A9用于列地址译码输入,经过列译码产生16条列选择线。10条地址线A0…A9送来的地址信号分别送到行、列地址译码器,经译码后选中一个存储单元(有4个存储元电路)。当片选信号CS=0,WE=0时,数据输入三态门打开,I/O电路对被选中单元的4个存储元电路进行写入操作;当CS=0,WE=1时,数据输入三态门关闭,而数据输出三态门打开,I/O电路将被选中单元内的4个存储元电路所存储的4位信息被读出并送数据线;当CS=1,即CS无效时,不论WE为何种状态,各三态门均为高阻状态,芯片不工作。(2)动态存储器芯片(DRAM)DRAM芯片的结构大体与SRAM芯片相似,是由存储矩阵和外围电路构成。不过DRAM芯片集成度高,存储容量大,导致芯片的地址引脚多,给制造芯片带来较大的难度,为此,DRAM芯片的地址采用分时复用技术,即地址分两次送的方法,从而将地址线减少一半;另外DRAM芯片还需要刷新电路。\n1)Intel2164ADRAM芯片DRAM芯片Intel2164A芯片的存储容量为64K×1位,采用单管动态存储元电路,每个存储单元只有一个存储元电路,即一个存储单元只能存储1位数据,其内部结构如图4-16所示。Intel2164A芯片的存储体本应构成一个256×256的存储矩阵,为提高工作速度(需减少行列线上的分布电容),将存储矩阵分为4个128×128矩阵,每个128×128矩阵配有128个读出图4-16Intel2164A芯片内部结构放大器,各有一套I/O控制(读/写控制)电路。64K字(216=64K)容量本需16条地址线,由于采用分时复用技术,芯片的地址线只需8条A7…A0,其引脚如图4-17所示。在行地址选通信号RAS控制下,先将8位行地址A7…A0送入行地址锁存器,经译码后产生两组行选择线,每组128根。然后在列地址选通信号CAS控制下,将8位列地址A7…A0送入列地址锁存器,经译码后产生两组列选择线,每组128根。行地址与列地址选择4个128×128矩阵之一,因此,16位地址是分成两次送入芯片的,对于某一地址码,只有一个128×128矩阵和它的I/O控制电路被选中。A7~A0这8根地址线还用于在刷新时提供行地址,因为刷新是一行一行进行的。12345678910111213141516NCDIN\nVSSA0A2A1VDDDOUTA6A3A4A5A7WECASRASDINA7A0…CASRASDOUTWEA7~A0CASRASWEVSSVDD地址输入列地址选通行地址选通写允许+5地(a)(b)图4-17Intel2164A引脚与逻辑符号(a)引脚;(b)逻辑符号69Intel2164A读/写操作由WE信号来控制。读操作时,WE为高电平,选中单元的内容经三态输出缓冲器从DOUT引脚输出;写操作时,WE为低电平,DIN引脚上的信息经数据输入缓冲器写入选中单元。Intel2164A没有片选信号,实际上用行地址和列地址选通信号RAS和CAS作为片选信号,可见,片选信号已分解为行选信号与列选信号两部分。2)动态存储器刷新方式动态存储器的刷新方式有集中式、分散式和异步式三种。如图4-18所示。\n图4-18动态存储器刷新时间分配图①集中式刷新所谓集中式刷新,是指在允许的最大刷新周期内,根据存储容量的大小和存取周期的长短,集中安排一段刷新时间,在刷新时间内停止读写操作。例如,某一动态RAM由128×128存储矩阵组成,存取周期为0.5μs,连续刷新128行,共需128个读周期,即一次刷新的总时间为64μs。若刷新周期为2ms,那么,2ms内有4000个读写操作。在这4000个读写操作内,前面3872个周期用来进行读写或维持信息,后面128个周期用来刷新。集中式刷新时间分配图如图4-18(a)所示。由此图可以看出,在读写操作时,不进行刷新操作,因此,读写操作不受刷新操作影响,读写速度较高。但在刷新时,必须停止读写操作。这段不能进行读写操作的时间称为“死区”。在本例中,这段“死区”占4000个周期中的128个,故死时间率为3.2%。“死区”随存储矩阵行数的增加而增加,对于256×256存储矩阵来说,死时间率增加一倍。为了减少“死区”的时间,对于大容量的动态RAM芯片,可以采用在一个刷新周期内同时刷新多行的方法,以减少刷新周期数。②分散式刷新分散式刷新是指把每行存储单元的刷新分散到每个读写周期内进行,即把系统对存储器的访问周期分为两段,前一段用来读写数据或使存储器处于保持状态,后一段用来对存储矩阵的一行进行刷新。分散式刷新时间分配图如图4-18(b)所示。这种刷新方式增加了系统对存储器的存储时间,如动态存储器芯片的存储时间为0.5μs,则系统对存储器的存储时间为1μs。对于前述128×128存储矩阵的芯片来说,这个存储器刷新一遍需要128μs,就是以128μs作为间隔时间。这种刷新方法避免了“死区”,但加长了存储器的存储时间,降低了70整机的处理速度。而且刷新时间过于频繁,没有充分利用所允许的最大刷新间隔时间。这种方式不适用于高速存储器。③异步式刷新异步式刷新是上述两种方法的结合,它充分利用最大间隔时间并使“死区”缩短。对于128×128存储矩阵的芯片来说,每行的刷新间隔时间是2ms/128,即每隔15.6μs刷新一行。在2ms内分散地对128行轮流刷新一遍,刷新一行是只停止一次读写操作时间。分散式刷新时间分配图如图4-18(c)所示。这样,对每一行来说,刷新时间仍为2ms,而“死区”的长度则缩短为0.5μs。消除“死区”的方法,还可以采用不定期的刷新方法。即可以把刷新时间安排在CPU不访问内存的时间内进行。这种刷新方法没有单独占用CPU的时间,也没有“死区”,效率最高,但是,刷新的控制线路较复杂。3)DRAM芯片的存取模式①标准模式的DRAM芯片由Intel2164ADRAM芯片可知,标准模式DRAM芯片的访问步骤:先给出所要访问存储单元的行地址并保持稳定,然后给出有效的行地址选通信号RAS,将行地址锁存到行地址译码器,此后再给出所要访问存储单元的列地址并保持稳定,然后给出有效的列地址选通信号CAS,将列地址锁存到列地址译码器,通过行、列地址译码器的译码,找到相应的存储单元,在读/写控制信号W/R作用下,实现对该存储单元的读或写操作。标准模式DRAM芯片的访问时间是指从芯片地址引脚上给出行地址开始,到可以使用出现在芯片数据引脚上的数据为止所需的时间。由于RAS信号失效后DRAM芯片尚需一个预充时间tRP,以便为下\n次访问做准备。所以,DRAM芯片存取周期比访问时间要长,至少要长tRP时间,这也是DRAM芯片与SRAM芯片的不同之处。为了消除DRAM芯片的预充时间所带来的负面影响,采用交错内存连接方法,即将两个内存条安排在一起使用,交替地访问两个内存条。当访问一个内存条的同时,另一个内存条执行预充操作,从而将预充时间隐藏在访问时间之中。②页模式DRAM芯片芯片内存储元电路组成的存储矩阵是芯片的核心,存储矩阵中的一行所包含的存储元电路的个数称为一页。由于绝大多数情况下对存储器的访问是连续的,所以没有必要像对标准模式DRAM芯片的访问,每次都要给出行地址和列地址。对页模式DRAM芯片的访问,如果所访问的存储元电路与上次访问的存储元电路在同一页中,只给出列地址,行地址保持不变,便可以选中并访问该存储元电路,与标准模式DRAM芯片比较,可以看出,第二次访问时间比第一次访问时间要短了许多。③静态列模式DRAM芯片静态列模式DRAM芯片与页模式DRAM芯片相似,访问某一行的第一个存储元电路所需要的时间是标准的RAS访问时间。当给出所要访问存储单元的行地址并保持稳定,然后给出有效的行地址选通信号RAS,将行地址锁存到行地址译码器,行地址在访问本行中的存储元电路的过程中保持不变,接着给出列地址,并给出有效的片选信号CS,然后,列地址在存储器芯片之外的一个增量寄存器中不断增量,并将每次增量后的地址信号送往存储器芯片,作为列地址译码器的输入,列地址译码器不断译码以确定要访问的存储单元。这样,只要RAS和CS始终保持低电平,同一行中各个存储元电路所存储的数据就连续地出现在静态列模式DRAM芯片的数据输出端,直到这一行中的最后一个存储元电路所存储的数据出现在数据输出端为止。④半字节模式DRAM芯片在对半字节模式DRAM芯片访问时,先给出行地址,并辅以有效的RAS信号,将行地址锁存,然后再给出列地址,同时CAS信号有效,将第一个列地址锁存。然后RAS信号保71持有效,行地址不再变化,而CAS信号在有效和无效之间不停地切换,连续读出一行中的四位。可见半字节模式DRAM芯片类似于页模式DRAM芯片,只是页模式DRAM芯片一次要连续读出一行中的所有位,而半字节模式DRAM芯片只是读出一行中连续的4位。除此之外,半字节模式DRAM芯片与页模式DRAM芯片和静态列模式DRAM芯片的不同之处是:半字节模式DRAM芯片不需要设置列地址计数器电路。⑤EDODRAM芯片EDODRAM芯片是后期研发的一种高速存储器芯片,EDODRAM(ExtendedData-OutDRAM)称为扩展数据输出DRAM,有时也称超级页模式DRAM,事实上它是页模式DRAM的超级版本,为解决页模式DRAM芯片的局限性而研制开发的。⑥同步DRAM芯片(SDRAM)当CPU总线速度超过75Hz时,即使是EDODRAM芯片也不能满足CPU速度的要求,所以人们开发了同步DRAM。在所有传统DRAM芯片中(包括页模式DRAM芯片、EDODRAM芯片),DRAM的时序与CPU的时序是不同步的,即CPU和DRAM芯片间没有一个公共的参考时钟。如果CPU访问DRAM时,DRAM不能及时给出数据,它会发出NOT\nREADY信号告知CPU,CPU通过在总线时序中插入等待周期来响应NOTREADY信号。而SDRAM芯片,CPU与SDRAM芯片间存在一个公共时钟信号,任何操作都与公共时钟信号同步,CPU无需等待,从而实现突发模式操作。突发模式既可用于读操作,也可以用于写操作,为简便起见,在此只讨论突发模式的读操作。在突发读模式中,CPU像正常情况一样提供第一个欲访问单元的地址,先给出RAS信号,接着给出CAS信号。由于CPU读SDRAM的内容用于填充Cache,所以要一次读几个连续的单元(所读单元的个数取决于Cache结构)。因此,CPU在给出第一个单元的地址后,后续单元的地址就无需再给出了,从而节省了建立地址和保持信息的时间。即可简单地通过编程把SDRAM设置为突发模式,告诉它一次要连续读的单元个数就可以了。每次突发读出的单元个数称为突发长度(BurstLength),可以是1、2、4、8、16、256(整页)。为了进一步提高性能,SDRAM芯片内部采用交错连接,即存储元电路的安排是遵循交错方式,从而实现了在访问一组存储元电路的同时刷新另一组存储元电路。如果SDRAM芯片融合了突发模式和交错连接两种技术,那么由SDRAM芯片构成的内存可用于总线频率高达124MHz,若总线频率超高125MHz,SDRAM也不能满足性能要求了,只能采用速度更高的DDRSDRAM(DoubleDataRateSDRAM)。由于篇幅的限制,在此不再讨论,感兴趣的同学可以看相关的参考书。(3)只读存储器芯片半导体只读存储器芯片种类较多,就EPROM芯片而言,存在多种型号,常用的有2716(2K×8)、2732(4K×8)、2764(8K×8)、27128(16K×8)、27246(32K×8)等。1)Intel2716EPROM芯片①Intel2716芯片的内部结构和外部引脚Intel2716EPROM芯片采用NMOS工艺制造,双列直插式24引脚封装。其引脚、逻辑符号及内部结构如图4-19所示。11条地址输入线A10…A0,其中7条用于行译码,4条用于列译码。O7…O0:8位数据线。编程写入时是输入线,正常读出时是输出线。Intel271612345678910111213141516171819\n2021222324A7A6A5A4A3A2A1A0O0O1O2GNDO3O4O5O6O7PD/PGMA10VCCA8A9VPPCS(a)Intel2716石英窗口A0A1A2A3A4A5A6A7A8A9A10PD/PGMO0\nO1O2O3O4O5O6O7CS(b)列译码行译码A10~A0地址输入读出放大2K×8位存储矩阵输出缓冲器数据输出端O7~O0……片选,功率下降和编程逻辑CSPD/PGM(c)VPPGNDVCC图4-19Intel2716的引脚、逻辑符号及内部结构(a)引脚;(b)逻辑符号;(c)内部结构72CS:片选信号。当CS=0时,允许2716读出。PD/PGM:待机/编程控制信号,输入。VPP:编程电源。在编程写入时,VPP=+25V;正常读出时,VPP=+5V。VCC:工作电源,为+5V。②Intel2716芯片的工作方式Intel2716芯片的工作方式如表4-1所示。读出方式:当CS=0时,此方式可以将选中存储单元的内容读出。未选中:当CS=l时,不论PD/PGM状态如何,Intel2716芯片均未被选中,数据线呈高阻态。待机(备用)方式:当PD/PGM=1时,Intel2716芯片处于待机方式。这种方式和未选中方式类似,但其功耗由525mW下降到132mW,下降了75%,所以又称为功率下降方式,此时数据线呈高阻态。\n编程方式:当VPP=+25V,CS=l,并在PD/PGM端加上52mS宽的正脉冲时,可以将数据线上的信息写入指定的地址单元。数据线为输入状态。校验编程内容方式:此方式与读出方式基本相同,只是VPP=+25V。在编程后,可将Intel2716芯片中的信息读出,与写入的内容进行比较,以验证写入内容是否正确。数据线为输出状态。禁止编程方式:此方式禁止将数据总线上的信息写入Intel2716芯片。表4-1Intel2716工作方式工作方式PD/PGMCS电压(V)数据线读出00+5输出未选中×1+5高阻待机1×+5高阻编程正脉冲1+25输入校验编程00+25输出禁止编程01+25高阻2)Intel2816E2PROM芯片Intel2816芯片是2K×8位的E2PROM芯片,有24条引脚,单一+5V电源。其引脚如图4-20所示。其工作方式如表4-2所示。读出方式:当CE=0,OE=0,并且VPP端加+4~+6V电压时,Intel2816芯片处于正常的读工作方式,此时数据线为输出状态。待机(备用)方式:当CE=1,OE为任意状态,且VPP端加+4~+6V电压时,Intel2816芯片处于待机状态。与Intel2716芯片一样,待机状态下芯片的功耗将下降。字节擦除方式:当CE=0,OE=1,数据线(I/O0~I/O7)都加高电平且VPP加幅度为+2lV、宽度为9~15mS的脉冲时,Intel2816芯片处于以字节为单位的擦除方式。整片擦除方式:当CE=0,数据线(I/O0~I/O7)都为高电平,OE端加+9~+15V电压及VPP加21V、9~15mS的脉冲时,约经10mS可擦除整片的内容。字节写入方式:当CE=0,OE=1,VPP加幅度为+2lV、宽度为9~15mS的脉冲时,来自数据线(I/O7~I/O0)的数据字节可写入Intel2816芯片的存储单元中。可见,字节写入和字节擦除方式实际是同一种操作,只是在字节擦除方式中,写入的信息为全“1”而已。Intel281612345678910111213141516171819\n2021222324A7A6A5A4A3A2A1A0I/O0GNDA10VCCA8A9WEI/O1I/O2OECEI/O7I/O6I/O5I/O4I/O3A10~A0OEI/O7~I/O0CEWE地址引脚输出允许数据输入/输出片选信号写允许图4-20Intel2816的引脚73禁止方式:当CE=1,VPP为+4~+22V时,不管OE是高电平还是低电平,Intel2816芯片都将进入禁止状态,其数据线(I/O0~I/O7)呈高阻态,内部存储单元与外界隔离。表4-22816的工作方式CEOEVpp/V数据线状态\n读出004V~6V输出备用1X4V~6V高阻字节擦除0121V输入全1字节写入0121V输入整片擦除0+9~+1421V输入全1擦写禁止1X4V~22V高阻4.2.4存储器的扩展与应用无论哪种存储器芯片,CPU对存储器的访问,首先通过地址总线给出所要访问存储单元的地址,经地址译码器译码后,选中所要访问的单元,然后发出相应的读/写控制信号,最后才是数据在数据总线上进行传送。所以,存储器芯片与CPU的连接主要是存储器芯片上地址信号线、数据信号线和控制信号线与系统总线(地址总线AB、数据总线DB、控制总线CB)的连接。由于一个存储器芯片的容量(N×M位)总是有限的,因此,内存总是由一定数量的存储器芯片构成。面对种类繁多的存储器芯片,首先要考虑如何选择合理的芯片和需要多少芯片问题,其次是如何把这些芯片连接起来,最后是与系统总线的连接问题。存储器芯片的选择通常要考虑存储器芯片的存取速度、存储容量、电源电压、功耗及成本等多个因素。确定某一存储器芯片后,根据内存容量大小,计算出所需存储器芯片的数量。假设存储器芯片的容量为N×M位,内存的容量为K×L位,由于内存容量要比一个存储器芯片的容量大得多,所以,K≥N、L≥M,所需存储器芯片的数量可按式(4-1)进行计算。芯片数=×(4-1)式(4-1)中,K和N分别是内存的字数(单元数)和芯片的字数(单元数),L和M分别是内存中一个字的位数和芯片中一个字的位数。字数K和N一般为2的整次幂,且K≥N;内存中一个字的位数L与机器的字长相关,一般是字节的整数倍,而芯片中一个字的位数N可以是1、4、8等不等。所以,使用存储器芯片构成内存时,需要在字、位两方面进行扩展,具体扩展方法可以分为位扩展、字扩展和字位扩展。1、存储芯片的扩展(1)位扩展位扩展是指存储器芯片的字(单元)数满足要求而位数不够,即K=N、L>M,需对每个存储单元的位数进行扩展。图4-21给出了使用8片8K×1位的RAM芯片位扩展构成8K×8位存储器系统的连线图。由于存储器的I/O8I/O7I/O6I/O5\nI/O4I/O3I/O28K×1I/O1CSWR…D7…D0数据总线CSWR控制总线…A0A12地址总线图4-21位扩展连接方式2-4译码器0123A15A1416×8(1)CEWE…16×8(2)CEWE…16×8(3)\nCEWE…16×8(4)CEWE…A0A13…WED7~D0图4-22字扩展连接方式74字数与存储器芯片的字数一致,8K=213,故需13根地址线A12…A0对各芯片内的存储单元进行寻址。每一个芯片只有一条数据线,所以需要8片这样的芯片,将它们的数据线分别接到数据总线D7…D0上。因此,每一条地址线有8个负载,每一条数据线有一个负载。位扩展法中,所有芯片都应同时被选中,各芯片CS端可直接接地,也可并联在一起,根据地址范围的要求,与高位地址线译码产生的片选信号相连。若地址线A12…A0为全0,即选中了存储器0号单元,该单元的8位信息是由各芯片0号单元的1位信息共同构成的。可以看出,位扩展的连接方式是将各芯片的地址线、片选CS、读/写控制线进行并联,而数据线分别接到数据总线D7…D0上。(2)字扩展字扩展用于存储芯片的位数满足要求而字数不够的情况,即K>N、L=M,需对存储单元数量的扩展。图4-22给出了用4个16K×8位的存储芯片构成一个64K×8位存储器连接图。图4-22中4个芯片的数据线与数据总线D7…D0相并连;地址总线的低位地址A13…A0与各芯片的14位地址线连接,用于进行片内寻址;为了区分4个芯片的地址范围,还需要2根高位地址线A14、A15,经2:4译码器产生4个输出信号,分别与4个芯片的片选端相连。采用如此连接后,各芯片的地址范围如表4-3所示。可以看出,字扩展的连接方式是将各芯片的地址线、数据线、读/写控制线进行并联,将地址总线中的低位地址线直接与各芯片地址线相连,以选择片内的某个单元,即实现片内寻址;而剩余的高位地址线用来产生片选信号,连接到各芯片的片选端,以选择某一个芯片,即实现对芯片的寻址。剩余的高位地址线如何用来产生片选信号呢?具体方法有:全译码法、部分译码法和线选法。1)全译码法所谓全译码法是指剩余的所有高位地址线都作为译码器的输入,其输出作为片选信号。也就是说,除了已经连接到存储器芯片上的地址线外,其他高位的地址线都被送入译码电路,以产生片选信号。采用全译码法所构成的存储器,存储单元的地址将是唯一的,不会出现地\n址重叠。2)部分译码法所谓部分译码法是指剩余的一部分高位地址线作为译码器的输入,其输出作为片选信表4-3各个芯片的地址空间分配情况芯片A15A14A13A12……A1A0地址范围10000………00┇┇┇11110000H┇03FFH20100………00┇┇┇11114000h┇07FFH31000………00┇┇┇11118000h┇0BFFFH41100………00┇┇┇11110C000h┇0FFFFH75号。由于有些地址线未参与译码,则该地址线是“0”或“1”将不影响芯片的选中与否。采用部分译码法所构成的存储器,存储单元的地址将不再是唯一的,会出现一定程度的地址重叠。3)线选法所谓线选法是指剩余的高位地址线直接作为芯片的片选信号。也就是说,不在存储器芯片上的高位地址线直接作为存储器芯片的片选信号。使用线选法的好处是译码电路简单。但\n线选不仅导致一个存储单元有多个地址,还有可能一个地址同时选种多个单元,会引起数据总线的冲突。(3)字位扩展在实际应用中,往往会遇到字数和位数都需要扩展的情况。若使用N×M位的存储器芯片构成一个容量为K×L位(K>N,L>M)的存储器,那么这个存储器共需要(N/K)×(M/L)个存储器芯片。连接时可将这些芯片分成N/K个组,每组有M/L个芯片。组内采用位扩展法,组间采用字扩展法。例如用Intel2114RAM芯片(1K×4)构成4K×8存储器,其存储器连接方法如图4-23所示。其中8片Intel2114芯片分成4组(RAM1、RAM2、RAM3和RAM4),每组2片。组内采用位扩展法构成1K×8的存储模块,4个存储模块用字扩展法连接成4K×8的存储器。用10根地址线A9…A0对每组芯片进行片内寻址,同组芯片应被同时选中,因此,同组芯片的片选信号应并联在一起。2:4译码器对两根高位地址线A11A10进行译码,产生4个输出信号分别与各组芯片的片选端相连。(4)用不同规格的存储器芯片扩展存储器用不同规格的存储器芯片扩展存储器,地址范围的分配问题较为复杂,除了考虑字扩展和位扩展外,还要考虑如何选择合理的芯片和采用怎样的结构,关于结构问题将在4.2.5并行存储器中进行讨论,在此以具体的例子来说明地址译码器和存储器片选信号的连接。【例4-1】试用现有存储器芯片EPROM(8K×8位)和SRAM(16K×1位、2K×8位、4K×8位、8K×8位)去构成主存储器,具体要求是:0~8191(8KB)为系统程序区,由只读存储器芯片组成;8192~32767(24KB)为用户程序区;最后2KB地址空间为系统程序工作区。若系统的地址总线16条A15…A0,双向数据总线8条(D7…D0),控制总线与主存有关的信号有MERQ、W/R。试从上述芯片中选择适当芯片设计该计算机主存储器,并画出主存储器逻辑框图。解:根据主存储器的具体要求,8KB的系统程序区可用1片8K×8位的EPROM芯片组成;24KB的用户程序区可以用SRAM芯片组成,由于SRAM芯片种类较多,究竟选用哪一种芯片较合理,不仅要看芯片的位数与系统的数据总线是否匹配,还要看组成存储器的芯片所需的片选信号是否最少,只有这样,存储器的译码电路才能是最简单的,因此,这24KB的用户程序区可选用3片8K×8位的SRAM芯片组成;最后2KB的系统程序工作区可选用1片2K×8位的SRAM芯片组成。各个芯片的地址空间范围如表4-4所示。表4-4存储器各个芯片地址范围A15A14A13A12A11A10………………………A0各个芯片的地址范围00000┇\n110…………………………0┇1…………………………10000H~1FFFH(8KBEPROM)000…………………………0I/O1~I/O4RAM12114A9~A02-4译码器A11A10D3~D0A9~A0RAM12114I/O1~I/O4WECSWECSI/O1~I/O4RAM22114A9~A0A9~A0RAM22114I/O1~I/O4WECSWECSI/O1~I/O4RAM32114A9~A0A9~A0RAM32114I/O1~I/O4WECSWECSI/O1~I/O4RAM4\n2114A9~A0A9~A0RAM42114I/O1~I/O4WECSWECSD7~D4WRA9~A0图4-23字位扩展连接方式76001┇11┇1…………………………12000H~3FFFH(8KBSRAM)01000┇110…………………………0┇1…………………………14000H~5FFFH(8KBSRAM)01100┇110…………………………0┇1…………………………16000H~7FFFH(8K×8SRAM)111110…………………………0┇1…………………………1\nF800H~FFFFH(2KBSRAM)结合表4-4的地址分配情况,考虑到多数芯片是8K×8位的,所以选用地址总线中的低16位地址线A12…A0作为片内寻址,高3位地址线A15A14A13作为译码器的输入,其输出作为片选信号。对于2K×8的SRAM芯片片选信号需要另加门电路解决。主存储器连接图如图4-24所示。【例4-2】试用4片4K×4位的芯片和3片8K×8位的芯片扩展32KB主存储器。若系统的地址总线16条A15…A0,双向数据总线8条(D7…D0),控制总线与主存有关的信号有:MERQ、W/R。解:扩展32KB的主存储器需要15条地址线A14…A0、8条数据线D7…D0和相关控制信号线。4片4K×4位的存储器芯片构成8KB的主存,采用字位扩展法,每两片为一组,每组构成4KB的主存;3片8K×8的存储器芯片构成24KB的主存储器,采用字扩展法。这32KB的主存储器的地址范围分配如表4-5所示。存储器的具体连接要考虑控制线、数据线和地址线的连接。具体而言:控制线的连接:控制线的连接较简单,只要将控制总线的读写控制信号WE与每一存储器芯片的读写控制线WE直接相连即可。数据线的连接:3片8K×8位SRAM芯片为8位数据宽度,将对应8位数据线与系统数据总线相连即可;4片4K×4位SRAM芯片,分成两组,每组两片,每片数据宽度为4位。,将每组其中一片4位数据线连接到系统数据总线D7…D4上,另一片连接到D3…D0上。地址线的连接:不同规格芯片的连接,关键在于译码器输入与输出的选择。对于输入线来说,通常以容量最小的芯片为基础。因此,容量大的芯片其片内高位地址线也要参加译码。表4-532K×8位主存储器地址范围A15A14A13A12A11………………………A0各个芯片的地址范围0000┇10…………………………0┇1…………………………10000H~1FFFH(第三组8KB主存)0010┇10…………………………0┇1…………………………12000H~3FFFH\n(第四组8KB主存)0100┇10…………………………0┇1…………………………14000H~5FFFH(第五组8KB主存)01100…………………………0┇1…………………………16000H~6FFFH(第一组4KB主存)7701110…………………………0┇1…………………………17000H~7FFFH(第二组4KB主存)本例以最小容量4K×4位的存储器芯片为基础,32K是4K的8倍,故选用74LS138译码器。用3条地址线A14、A13、A12作为译码器的输入,其译码器的输出有8个信号,由上到下,000选择第一组芯片,001选择第二组芯片,第三组至第五组为8K×8位的芯片,有8K个单元,是第一、第二组芯片4K个单元的两倍,需用两条译码输出线选择,故各增加与门一个,由010和011共同选择第三组芯片,由100和101共同选择第四组芯片,110和111共同选择第五组芯片。另外,由于系统地址总线有16条,而32KB主存储器需要15条地址线A14…A0,A15地址线如果不参加译码,它可随机出现0、1两种情况,将其加于A14…A0决定的任何一个地址码上,可以出现两种不同的地址码,这种现象称为地址的重合,局部译码时必定会出现地址重合或覆盖现象。为避免地址重合或覆盖现象,必须采用全译码,实现全译码在此只需将A15与74LS138的G1相连,此时A15为1;或将A15与74LS138的G2a或G2b相连,A15为0,本例采用后者连接,32KB主存储器具体连接如图4-25所示。图4-2436KB主存储器图4-2532KB主存储器\n784.2.5并行存储器随着软件规模的增大和系统性能要求的提高,对主存的要求是容量要大,速度要快。尽管主存的存取速度在不断地提高,但它的速度与CPU的速度相比,仍存在较大的差距,主存的存取速度是整个计算机系统速度的瓶颈。为了解决这个问题,存储器系统采用了层次结构,用虚拟存储器的方式扩大主存的存储容量,用高速缓冲存储器提高存取速度。除此以外,调整主存的组织结构来提高存取速度,也是一种行之有效的方法。在常规主存储器设计中,访问地址采用顺序方式,如图4-26(a)所示。主存储器容量为32字,分成4个模块M0…M3,每个模块存储8个字。访问地址按顺序分配给一个模块后,接着再按顺序为下一个模块分配访问地址。由此可见,在对顺序方式中的某个模块进行访问时,其他模块是不工作的,一旦某一模块出现故障,对其他模块不会造成影响。但由于各个模块是一个接一个串行工作,将会限制存储器的带宽。为了提高存储器的带宽,实现多模块流水式并行工作,访问地址采用交叉方式,如图4-26(b)所示。地址的分配方法与顺序方式不同:先将4个线性地址0,1,2,3依次分配给M0,M1,M2,M3模块,再将线性地址4,5,6,7依次分配给M0,M1,M2,M3模块……直到全部线性地址分配完毕为止。可以看出,连续地址分布在相邻的不同模块内,而同一个模块内的地址都是不连续的,因此,对于连续字的块传送,交叉方式的存储器可以实现多模块流水式并行存取,从而大大提高存储器的带宽。图4-26并行存储器1、多体顺序并行存储器前面所讨论的存储器,一个存取周期只能访问一个存储单元,无法实现并行操作,要想进行对存储器的并行处理,必须改变存储器的组织结构,将大容量的存储器分成若干个存储体,每个存储体都有自己的读写线路、地址寄存器和数据寄存器,并能以同等的方式与CPU交换信息。另外,每个存储体容量相等,它们既能同时工作又能独立编址。图4-27是多体顺序并行存储器原理图。图4-27多体顺序并行存储器原理图79主存由n个容量相等的存储体组成,其中MAR为存储体地址寄存器,MDR为存储体数据寄存器,主存地址寄存器的高位表示不同的存储体,低位表示存储体内单元地址,各体内地址寄存器指示存储单元的内容。这种结构使得各个存储体内相邻单元的地址是连续的,从而体现多体“顺序”这一特点,有利于并行处理,能够实现n个存储体的并行操作,即一次能访问并处理n个字。2、多体交叉并行存储器多体交叉并行存储器类似于多体顺序并行存储器,都是由多个相对独立的存储体组成,所不同的是多体交叉并行存储器的主存地址的高位表示存储体内单元地址,低位用于选择不同的存储体,这种组织形式使得各个存储体内相邻单元的地址是不连续的,而相邻存储体之间相同位置的单元地址是连续的,从而体现多体“交叉”这一特点。下面以一个四体交叉并行存储器为例,来说明多体交叉并行存储器的工作原理。如图4-28所示是一个四体交叉并行存储器,该存储器由4个独立的存储体M0、M1、M2、M3\n组成,低位地址用于选择不同的存储体,高位地址表示存储体内单元地址。n体交叉并行存储器的编址规则如下:规则1,地址连续的两个单元分布在相邻的两个存储体中,地址按存储体方向顺序编号。规则2,同一存储体内相邻的两个单元地址之差等于n。例如在四体交叉并行存储器中,同一存储体内相邻的两个单元地址之差等于4。图4-28多体交叉并行存储器原理图规则3,任何一个存储单元地址编号的末log2n位正好指示该单元所属存储体的编号,访问主存时只要判断这几位就能决定访问的是哪个存储体。在四体交叉并行存储器中,M0存储体中每个单元地址的最后两位都是“00”,M1存储体中每个单元地址的最后两位都是“01”,M2存储体中每个单元地址的最后两位都是“10”,M3存储体中每个单元地址的最后两位都是“11”。规则4,同一存储体中每个单元地址除去存储体编号后的高位地址正好是存储体中单元的顺序号,由此就可决定访问单元在存储体中的位置。多体交叉并行存储器地址交叉排列的目的是为了便于各个存储体同时工作。假设CPU要取4条长度为一个字长的指令,这4条指令分别存放在地址为0、1、A、B的4个单元中,这4个单元分别在M0、M1、M2、M3四不同的存储体中。为了在一个存取周期内能访问4个指令字,在多体并行主存系统中采用了分时工作的方法,目前普遍采用的是分时读出法,即每个存储体每次读写一个字,各存储体分时启动,即每隔四分之一存取周期启动一个存储体,其时序如图4-29所示,M0存储体在第一个主存周期开始读写,经过1/4TM启动M1存储体,M2和M3存储体分别在1/2TM、3/4TM时刻开始它们各自的读写操作,4个存储体以1/4TM的时间间隔进入并行工作状态。80图4-29四体交叉并行存储器工作时序4.3高速缓冲存储器4.3.1Cache基本原理1、Cache与程序访问的局部性虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构、存储部件的存取速度、信息在各个部件之间的传送速度、指令结构等因素有关,特别是主存的存取速度。如果CPU工作速度较高,而主存的存取速度较低,必然会造成CPU的等待,从而降低了CPU的处理速度和效率。如400MHz的PIII,一次指令执行时间为2nS,与其相配的主存SDRAM存取时间为10nS,比前者慢了5倍。如何解决CPU与主存之间的速度匹配问题?一种方法是在基本总线周期中插入等待,尽管能处理好速度匹配问题,但无法保证CPU较高的工作速度;另一种方法是采用存取速度较快的SRAM做主存,却又大幅度提升了系统成本。如何在不大增加系统成本的前提下又能保证系统性能的提升?人们开始对大量典型程序运行情况进行分析,结果表明:在一个较短的时间间隔内,由程序\n产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然具有时间上集中分布的倾向。数据分布的集中倾向虽不如指令明显,但对数组的存储和访问以及工作单元的选择,都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址访问甚少的现象,称之为程序访问的局部性。根据程序访问的局部性原理,在主存和CPU之间设置一个高速的、容量相对较小的存储器,该存储器包括管理在内的全部功能都由硬件实现,如图4-30所示。把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,起到缓冲作用,以实现速度匹配。这种方法既保证了系统成本增加不大,又保证了系统性能的有效提升,是目前计算机普遍采用的一种行之有效的技术。为此,我们把介于CPU和主存之间的高速、小容量、起缓冲作用的存储器称作高速缓冲存储器(Cache)。基于目前大规模集成电路技术和生产工艺,在CPU芯片内部做成一定容量的Cache,称之为一级(L1)Cache,CPU外部由SRAM构成的Cache称为二级(L2)Cache。最新的CPU内部已经出现二级甚至三级Cache。图4-30Cache与主存的关系812、Cache的工作原理CPU与Cache之间的数据交换是以字为单位,而Cache与主存之间的数据交换是以块为单位,一个块由若干个字组成的。当CPU读取主存中一个字时,便发出此字的内存地址到Cache和主存,Cache控制逻辑根据地址判断此字当前是否在Cache中。如果在Cache中,我们称之为命中,命中时CPU通过访问Cache把此字读出送给CPU;如果不在Cache中,我们称之为不命中,不命中时CPU用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到Cache中。系统正是依据此原理,不断地与当前指令集相关联的一个不太大的后继指令集从内存读到Cache,然后再与CPU高速传送,从而达到速度匹配。CPU对存储器进行数据请求时,通常先访问Cache,由于局部性原理不能保证所请求的数据百分之百地在Cache中,这里便存在一个命中率,即CPU在任一时刻从Cache中获取数据的几率。命中率越高,从Cache中获取数据的可能性就越大,一般来说,Cache的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显地增长。只要Cache的空间与主存空间在一定范围内保持适当比例的映射关系,Cache的命中率还是相当高的。一般规定Cache与主存空间比为4:1000,即128KBCache可映射32MB主存、256KBCache可映射64MB主存,在这种情况下,命中率都在90%以上。至于没有命中的数据,CPU只好直接从主存获取,获取的同时,也把它拷贝到Cache,以备下次访问。4.3.2Cache的结构Cache通常由相联存储器实现。相联存储器的每一个存储块都具有额外的存储信息,称为标签Tag。当访问相联存储器时,将地址和每一个标签进行比较,从而对标签相同的存储块进行访问。为了说明Cache的结构,设块的大小为2b个连续的字,将整个主存按块的大小进行分块,共分为2m个块,其块号用j表示,其中j=0,1,2,…,2m-1;将Cache\n也按块的大小进行分块,共分为2c个块,其块号用i表示,其中i=0,1,2,…,2c-1。地址映射是指把主存地址空间映射到Cache地址空间的规则,即主存块与Cache块之间的对应关系,此规则可以表示为i与j之间的函数关系,根据i与j之间的函数关系(映射方式)的不同,可以将Cache的结构分为全相联映射Cache、直接映射Cache、组相联映射Cache三种基本结构。不同结构的Cache必然有与之对应的地址变换方法,所谓地址变换是指程序在实际运行过程中,如何把主存地址变换成Cache地址的方法。1、全相联映射在全相联映射Cache中,地址映射函数关系为:i=j,即主存中的任意一块j可以映射到Cache中任何一块位置上。全相联映射方式如图4-31所示。全相联映射方式的地址变换如图4-32所示。主存地址包括主存块号j和块内地址w。主存块号j作为相联查找的关键字段,与目录表中的主存块号字段进行比较,若找到一个与主存块号j相同的主存块号,并且有效位为1时,则取其Cache块号i与块内地址w拼接在一起,形成一个Cache地址。如果在相联查找中没有发现与主存块号j相同的主存块号,表明该主存块尚未装入Cache,则调入该主存块到Cache中,并修改目录表。由于任何一个主存块可以存放在任何一个空闲Cache块的位置上,因此,全相联映射方式发生两个主存块争用一个Cache块位置的冲突概率较低,Cache的空间利用率也因此较高。但是由于全相联映射方式的地址变换需要容量为C个存储字的相联存储器来存放目录表,Cache越大,要求相联存储器的容量也越来越大,过大的相联存储器不仅价格昂贵,而且也会降低地址变换的速度。82图4-31全相联映射方式图4-32全相联映射方式的地址变换【例4-3】假设某计算机系统中Cache容量为32KB,块大小是16个字节,主存容量为1MB,地址映射为全相联映射方式。(1)主存地址多少位?如何分配?(2)Cache地址多少位?如何分配?(3)目录表的格式和容量?解:(1)主存地址共20位,1MB=220B。主存可分为4MB/16B=216个块,主存地址为:块号(16位)、块内字地址(4位)(2)Cache地址为15位:块号(11位)、块内字地址(4位)(3)目录表的格式为:主存块号(16位)+Cache块号(11位)+有效位(1位)。目录表容量为Cache的块数,即2KB。2、直接映像直接映像Cache中,地址映射函数关系为:i=jmod2c,即主存中的任意一块j可以映射\n到Cache中满足i=jmod2c的块位置上。C为Cache的块容量,将主存按Cache块容量大小进行分区,可分为P=M/C个区,其区号用k表示,k=0,1,…,P-1。在直接映射方式中,83主存的一个区与整个Cache相对应,因此,Cache的地址与主存地址中除区号外的低位地址完全相同。主存地址由区号k、块号j、块内地址w组成,用块号j去访问区表存储器,把从中读出的区号与主存地址中区号k进行比较,如果区号相同,并且有效位为1时,则命中,主存地址中块号j与块内地址w直接作为Cache地址,从而访问Cache;如果区号相同,但有效位为0时,则表示Cache中虽然已有要访问的块,但该块与已经被修改的主存副本块内容不一致,是一个作废的块,需要再从主存中调入并重写该块,并且重写后将有效位置1。如果区号不相同,并且有效位为1时,则表示没有命中,但该块为有效块,需要把该块调出,写入主存,并修改主存中相应的副本块;如果区号不相同,并且有效位为0时,则表示没有命中,可以直接调入所需要的新块。直接映射方式的地址变换如图4-33所示。主存地址由三部分组成,末b位为字块内地址,中间c位为Cache字块地址,高t位(t=m-c)是主存字块标记,也就是记录在相应Cache字块标记中的内容,当有效位为“1”时,表明该数据块是主存中一块数据的副本。Cache在接收到CPU送来的主存地址和读写命令后,用中间c位字段找到对应的Cache中字块,然后将其标记与主存地址的高t位比较,如果两者相等,而且有效位为“1”,则可根据b位块内地址,从Cache中取得所需的指令或数据;如果两者不相等,或者有效位为“0”,就从主存读出新的字块替换Cache中旧的字块,同时修改Cache中标记,并将数据送给CPU。图4-33直接映射方式地址变换直接映射方式映射函数简单,实现的硬件简单,地址变换速度快,一旦命中且有效,主存地址中除区号外的低位地址直接变换成Cache的地址。但也存在比较突出的缺点,Cache的利用率不高,其原因是,当两个以上的主存块映射到相同的Cache块位置而发生冲突时,即使其他Cache块位置空闲也不能被利用。【例4-4】假设某计算机系统中Cache容量为64KB,块大小是16个字节,主存容量为4MB,地址映射为直接映射方式。(1)主存地址多少位?如何分配?(2)Cache地址多少位?如何分配?(3)目录表的格式和容量?解:(1)主存地址共22位,4MB=222B。主存可分为4MB/64KB=64个区,每个区的块84数为:64KB/16=4KB,因此,主存地址为:区号(6位)、块号(12位)、块内字地址(4位)。(2)Cache地址为16位:块号(12位)、块内字地址(4位)\n(3)目录表的格式为:区号(6位)+有效位(1位)。目录表容量与缓冲块容量相同,4KB。3、组相联映射组相联映射Cache是介于全相联映射Cache和直接映射Cache之间的一种结构,是目前采用较多的一种地址映射方式。组相联映射方式是把整个主存按Cache的容量C进行分区,区号为k,每个区和Cache再按同样大小划分成数量相等的组,组号为g,组内再划分成块,主存的组到Cache的组之间采用直接映射方式,对应组内各个块之间采用全相联映射方式。用于地址变换的块表容量与Cache的块容量相等,块表的字长包含主存地址的区号、组内块号、Cache地址的组内块号、1位有效位。组相联映射方式的地址变换如图4-34所示。主存地址由区号k、组号g、组内块号j、块内地址w组成,用组号g去访问块表存储器,从中读出一组字,字数为组内的块容量。把这些字中的区号和块号与主存地址中区号k和块号j进行相联比较,如果发现有相等的,则表示Cache中已有要访问的块,若有效位为1,则命中,从这个字中取出Cache的块号i与主存地址中的组号g与块内地址w拼接起来形成Cache地址;如果相联比较不等或有效位为0,则不命中,应调入新块。图4-34组相联映射方式的地址变换【例4-5】假设某计算机系统中Cache容量为32KB,块大小是64个字节,缓存共分128个组,主存容量为1MB,地址映射为组相联映射方式。(1)主存地址多少位?如何分配?(2)Cache地址多少位?如何分配?(3)块表的格式和容量?解:(1)主存地址共20位,1MB=220B。主存可分为1MB/32KB=25个区,区号为5位;Cache共分128个组,组号为7位;块内地址w为6位;块号为32KB/128/64=22,即2位。(2)Cache地址为16位:组号(6位)、块号为(2)、块内字地址(6位)85(3)目录表的格式为:区号(5位)+主存组内块号(2)+Cache组内块号(2)+有效位(1位)。块表容量与Cache的块容量相同,即:组数×组内块数=128×4=512。4.3.3Cache的读写过程1、Cache的读过程当CPU发出读请求时,如果Cache命中,通过地址变换,就可以直接对Cache进行读操作,不需要对主存进行读操作;如果Cache未命中,则CPU直接对主存进行读操作,同时将相应的块调入到Cache,若此时Cache已满,如何将Cache中的某块调出,把新块调入?这就需要替换策略。常用的替换算法有以下四种。(1)随机算法(Random,RAND)随机算法是一种最简单的替换算法,不考虑Cache中块的过去、现在和将来的使用情况,随机地选择一块进行替换。(2)先进先出算法(First-InFirst-Out,FIFO)先进先出算法是按调入Cache的先后顺序,在需要替换时将最先调入Cache中的块替换\n掉。这种方法容易实现,而且系统开销较小。(3)最近最少使用算法(LeastRecentlyUsed,LRU)最近最少使用算法是根据块的使用情况,将CPU最近最少使用的块作为被替换的对象。这种替换方法需要随时记录Cache中各个块的使用情况,以便确定Cache中哪一个块是最近最少使用的块。LRU算法相对比较合理,但实现起来较为复杂。为此,有人提出最久未使用算法(LeastFrequentlyUsed,LFU),将“使用的多少”问题转换为“有没有使用”,从而把算术问题转换成逻辑记录问题,简化了算法的实现过程,从而被广泛应用。(4)最优化算法(OPTimization,OPT)最优化算法是一种以将来使用最少作为替换目标的算法,该算法是一种理想化算法,现实中很少使用,它常被用来评价其他替换算法优劣的标准。2、Cache的写过程当CPU发出写请求时,如果Cache未命中,则CPU直接对主存进行写操作,与Cache无关;如果Cache命中,就会出现如何保持Cache中的内容与主存中内容的一致性问题,一般的处理方法有如下两种。(1)写直达法(Write-Through)CPU同时写主存和Cache,以保证主存的数据能同步地更新。这种方法实现简单,但可能增加多次不必要的主存写入。(2)回写法(Write-Back)将CPU要写的信息暂时只写入Cache,并用标志将该块注明,直到该块从Cache中替换出去时才一次写回主存。这种方法操作速度快,但因主存中的字块未经随时修改而有可能出错。4.4虚拟存储器4.4.1概述1、虚拟存储器虚拟存储器(VirtualMemory)是建立在主存—辅存的物理结构基础之上,不断发展完善,逐步形成的。早期具有辅存的存储系统并不是虚拟存储器,这是因为用户最多只允许使用主存容量,而实际上用户编程所用空间要比主存容量小的多。用户编程要想超出可使用的主存空间范围,就必须对程序进行对准分段。对于哪段存放在主存、哪段存放在辅存、何时从辅存调入主存、又何时从主存调出到辅存、存储空间如何分配、地址如何编写等一系列问题,都要求编程人员认真考虑并事先在程序中安排;在多道程序和多用户分时系统的运行86情况下,还往往会发生用户竞争存储空间的矛盾;随着计算机规模的扩大和复杂程度的增加,用户的负担日益加重。如何让用户从繁重的负担中解脱出来,不再去考虑主存空间大小、主存与辅存的差别等,用户编程可以随意使用存储空间,在用户心目中,计算机系统有一个大容量、高速度、可满足要求、使用方便的存储器,而没有主存、辅存之分,于是便产生了虚拟存储器的概念。所谓虚拟存储器是指主存—辅存层次,它以透明的方式给用户提供了一个比实际主存空间大得多的程序地址空间。2、虚地址与实地址用户编程时所用的地址称虚拟地址或逻辑地址,简称虚地址。虚地址的全部集合构成的地址空间称为虚拟地址空间或逻辑空间,实际的主存地址称为物理地址或实地址,实地址对应的空间为主存空间或物理空间,其容量为主存容量或实存容量。对于虚拟存储器,程序运\n行中每次访问主存时,都必须进行虚、实地址的变换。3、虚拟存储器与Cache的比较主存—辅存层次与Cache—主存层次是两种不同的层次,有很多相似之处,他们所采用的地址变换、地址映射方式、替换策略等,在原理上看是相同的,都是基于程序局部性原理,而不同之处在于:Cache用于弥补主存与CPU之间的速度差距,而虚拟存储器用来弥补主存与辅存之间的容量差距;Cache与主存之间每次传送是以块为单位,块的大小只有几十个字节,而虚拟存储器的信息传送单位可以是页、段等,长度很大,几百至几百K字节;主存的访问速度比Cache慢5~10倍,而辅存比主存要慢上千倍,因此,CPU访问未命中时,系统的相对性能损失有很大不同,在虚拟存储器中未命中时性能损失远远大于Cache中未命中性能损失。4、虚拟存储器的管理方式由于主存—辅存层次的基本信息传送单位可以采用段、页、段页几种不同方案,因此,虚拟存储器的存储管理方法也就相应存在段式管理、页式管理和段页式管理。(1)段式管理段式管理是把主存按段分配的存储管理方式。段是指逻辑结构相对独立的部分,例如子程序、数据表等。段作为独立的逻辑单位可以被其他程序段调用,形成规模较大的程序。因此,段作为基本信息单位在主存—辅存之间传送和定位是比较合理的。段的逻辑独立性易于编译、管理、修改和保护,也便于多道程序的共享;某些类型的段(堆栈、队列)具有动态可变长度,允许自由调度以便有效利用主存空间。但由于段的长度各不相同,段的起点和终点不定,给主存空间分配带来麻烦,而且容易在段间留下许多空余的零碎存储空间不好利用而造成浪费。各个段在主存的位置是由段表指示的,段表包括段起址、段长和控制位组成。(2)页式管理针对段式管理会在主存中各个段之间留下一些不好利用的空余零碎空间,有人提出了页式管理方式。所谓页式管理是指把主存的物理空间和辅存的逻辑空间按页(一定长度的区域)划分并进行管理。各个页在主存中的位置由页表指示,页表包括实页号和控制位组成。页作为主存—辅存之间基本信息传送单位,唯一可能造成浪费的是程序最后一页零头的页内空间。由于页不是逻辑上独立的实体,所以,处理、保护、共享都不及段式管理方便。(3)段页式管理段页式管理兼顾前两种管理方式的优点,是将程序按模块分段,段再分页,进入主存仍以页为基本信息传送单位,用段表和页表进行两级定位的管理方式。4.4.2页式虚拟存储器在页式虚拟存储器中,设虚拟空间分成m个逻辑页,其逻辑页号为0,1,2,…,m-1;主存空间也按同样大小分成n个物理页,其物理页号为0,1,2,…,n-1。显然,m>n,由于页的大小都为2的整数幂个字,所以,页的起点都落在低位字段为零的地址上。因此,87虚地址分为两个字段:高位字段为逻辑页号,低位字段为页内行地址。同样,实地址也分为两个字段:高位字段为物理页号,低位字段为页内行地址。由于页面大小相同,所以虚地址与实地址中页内行地址是相同的。虚地址到实地址的变换是通过页表来实现的。在页表中,每一个逻辑页号都对应一个表目,表目内容包括该逻辑页所在主存的物理页号和一些控制位,用其中的物理页号与虚地址中的页内行地址拼接成实地址,据此来访问主存。页式虚拟存储器的地址变换如图4-35所示。\n图4-35页式虚拟存储器的地址变换过程通常页表中的一些控制位包括装入有效位、修改位、替换控制位等,其中如果装入有效位为1,表示该逻辑页已在主存;如果装入有效位为0,表示该逻辑页尚未调入主存,CPU如果访问该页,就会页面失效中断,启动输入输出系统,将辅存中的逻辑页调入到主存;修改位用来指示主存页面中的内容是否被修改过,若修改位为1,表示该物理页修改过,在该物理页被替换时必须写回主存;替换控制位是用来指出需替换的页。假设页表已保存或已调入主存,在访问存储器时,首先要查页表,即使页表命中,也得先访问一次主存去查页表,形成实地址后再访问一次主存才能取出数据,相当于访问两次主存。如果页面失效,还要进行页面替换、页面修改,访问主存的次数将会更多。因此,把页表的最活跃部分存放在一个高速存储器中组成一个快表,这是减少时间开销的一种方法。一种由快表和慢表组合实现地址变换如图4-36所示。快表由硬件组成,它比页表小得多,仅仅是慢表的一个小小副本。查表时,由逻辑页号同时去查快表和慢表,当在快表中找到此逻辑页号时,就能很快地形成实地址,并使慢表的查找作废;如果在快表中找不到此逻辑页号,那就要访问一次主存去查慢表,形成实地址,同时将此逻辑页号和对应的物理页号送入快表,替换快表中的内容,这也要用到替换算法。4.4.3段式虚拟存储器在段式虚拟存储器中,段是按程序的逻辑结构划分的,各个段的长度因程序而异,因此虚地址是由段号和段内地址组成。虚地址到实地址的变换是通过段表来实现的。在段表中,每一个段号都对应一个表目,表目内容包括段起址、段长和一些控制位,用其中段起址与虚地址中的段内地址相加成实地址,据此来访问主存。段式虚拟存储器的地址变换如图4-37所示。88图4-36快表和慢表组合实现地址变换图4-37段式虚拟存储器地址变换过程4.4.4段页式虚拟存储器段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合,是把程序按逻辑单位进89行分段,再把每个段分成固定大小的页。程序对主存的调入调出是按页面进行的,但它又可以按段实现共享和保护。因此,它兼备了段式虚拟存储器和页式虚拟存储器的优点。其缺点是地址变换过程中需要多次查表。在段页式虚拟存储器中,每道程序是通过一个段表和一组页表来进行定位的。段表中的每一个表目对应一个段,表目的内容包括该段的页表起始地址和该段的控制保护信息。由页表指明该段的各个页在主存中的位置以及是否装入、已修改等状态信息。多道程序的每一道程序需要一个基号(用户标志号、程序标志号),由它指明该道程序的段表起始地址(存放在基址寄存器中),因此,虚地址由基号、段号、页号、页内地址组成。下面通过举例来说明虚地址到实地址的变换过程。【例4-6】假设有三道程序(用户标志号为A、B、C),其基址寄存器内容分别为SA、SB、SC,虚地址到实地址的变换过程如图4-38所示。在主存中每道程序都有一张段表,A程序有4段,C程序有3段。每段应有一张页表,段表的每行就表示页表的起始位置,而页表的每行为相应的物理页号。解:①根据基号C,执行SC+段号(1)操作,得到段表相应的行地址,其内容为页表\n的起始地址b②执行b+页号(2),得到物理页号的地址,其内容为物理页号(10)③物理页号与页内地址拼接成物理地址由此可见,段页式虚拟存储器由虚地址到实地址的变换至少需要查两次表,一次段表和一次页表。段、页表构成表层次,表层次并不只是段页式存在,页表也存在,这是因为整个页表是连续存储的,当一个页表的大小超过一个页面大小时,页表就可能分成几个表,分存于几个不连续的主存页面中,然后,将这些页表的起始地址又放入一个新的页表中,从而形成了二级表层次。一个大的程序可能需要多级页表层次。对于多级页表层次,在程序运行时,除了第一级页表需驻留在主存外,整个页表中只需有一部分是在主存中,大部分可存于外存,需要时再由第一级页表调入,从而减少每道程序占用的主存空间。图4-38段页式虚拟存储器地址变换过程4.4.5替换算法在Cache中我们讨论过替换算法,在虚拟存储器中仍然存在替换问题,当CPU访问主存而产生页面失效(缺页)时,若主存页面已全部被占满,必须采用替换算法将主存中的某页进行替换。虚拟存储器中的替换与Cache中的替换有很多相似之处,但也存在明显的不同,90主要表现在两个方面,一是缺页至少要涉及一次磁盘存取,以读取所缺的页,因此缺页使系统蒙受的损失比Cache未命中大得多;二是页面替换的选择余地大,属于一个进程的页面都可替换。为了换取更高的命中率,虚拟存储器中的替换策略一般采用LRU算法、LFU算法、FIFO算法。对于将被替换出去的页面是否要进行某些处理?由于主存中的每一个页在辅存中都留有副本,假如该页调入主存后没有被修改过,那么就不必进行处理,否则,应该把该页重新写入辅存,以保证辅存中数据的正确性。为此,页表中专门设置有修改控制位,当该页刚调入主存时,此控制位为0;当对该页进行写操作时,此控制位置1。在该页被替换时,检查其修改控制位是否为1,如果为1,则先将该页从主存写入辅存,然后再从辅存接收新的一页;如果为0,直接从辅存接收新的一页。在虚拟存储器中,为了实现逻辑地址到物理地址的转换,并在页面失效时进行合理有效的管理,专门设置了由硬件实现的存储器管理部件MMU。关联存储器半导体存储器(主存)高速缓冲存储器(Cache)虚拟存储器(辅存)存储元存储器芯片主存扩展\n方法动态存储元只读存储元芯片组成与结构静态存储器芯片(SRAM)动态存储器芯片(DRAM)只读存储器芯片(ROM)位扩展法字扩展法字位扩展法局部性原理映射方式替换与写策略管理方式地址变换直接映射全相联映射组相联映射段式虚拟存储器页式虚拟存储器段页式虚拟存储器静态存储元91习题4.1判断题(1)外存比内存的存储容量大、存取速度快。()(2)动态RAM和静态RAM都是易失性半导体存储器。()(3)Cache是内存的一部分,它可由指令直接访问。()(4)引入虚拟存储系统的目的,是为了加快外存的存取速度。()(5)多体交叉存储器主要是为了解决扩充容量问题。()(6)数据引脚和地址引脚越多,芯片的容量越大。()(7)存储芯片的价格取决于芯片的容量和速度。()(8)要访问DRAM,应首先给出RAS地址,之后再给出CAS地址。()4.2选择题(1)内存储器用来存放()。A、程序B、数据C、微程序D、程序和数据(2)某一静态RAM芯片,其容量为64K×1位,则其地址线有()。A、64条B、64000条C、16条D、64436条(3)需要定期刷新的存储芯片是()。A、EPROMB、DRAMC、SRAMD、EEPROM(4)()存储芯片是易失性的。A、SRAMB、UV-EPROMC、NV-RAMD、EEPROM(5)有RAS和CAS引脚的存储芯片是()。\nA、EPROMB、DRAMC、SRAMD、三者都不是(6)下面叙述不正确的是()。A、半导体随机存储器可随时存取信息,掉电后信息丢失B、在访问随机存储器时,访问时间与单元的物理位置无关C、内存储器中存储的信息均是不可改变的D、随机存储器和只读存储器可以统一编址(7)动态RAM与静态RAM相比,其优点是()。A、动态RAM的存储速度快B、动态RAM不易丢失数据C、在工艺上,比静态RAM的存储密度高D、控制比静态RAM简单(8)某512×8位RAM芯片采用一位读/写线控制读写,该芯片的引脚至少有()。A、17条B、19条C、21条D、22条(9)下列存储器中,存取速度最慢的是()。A、半导体存储器B、光盘存储器C、磁带存储器D、硬盘存储器(10)在主存储器和CPU之间增加Cache的主要目的是()。A、降低整机系统的成本B、解决CPU和主存之间的速度匹配问题C、扩大主存容量D、替代CPU中的寄存器工作(11)采用虚拟存储器的主要目的是()。A、提高主存储器的存取速度B、扩大主存储器的存储空间,并能进行自动管理和调度C、提高外存储器的存取速度92D、扩大外存储器的存储空间(12)某计算机的字长是32位,其存储容量是32MB,若按字编址,它的寻址范围是()。A、0~8MBB、0~32MC、0~32MBD、0~8M(13)在Cache的地址映射中,若主存储器中的任意一块均可映射到Cache内的任意一块的位置上,则这种方法称为()。A、直接映射B、组相联映射C、全相联映射D、混合映射4.3填空题(1)采用4K×4位的静态RAM存储芯片扩展32KB的存储模块,需要存储芯片数为▁▁▁▁片。(2)存储器的技术指标有▁▁▁▁、▁▁▁▁、▁▁▁▁和▁▁▁▁等。(3)CPU能直接访问▁▁▁▁和▁▁▁▁,但不能直接访问▁▁▁▁。(4)Cache存储器的主要作用是解决▁▁▁▁▁。(5)存储器的取数时间是衡量主存▁▁▁▁的重要指标,它是从▁▁▁▁到▁▁▁▁的时间。(6)某存储器数据总线宽度为32位,存取周期为250ns,则其带宽是▁▁▁▁▁\n(7)Cache的地址映像方式有▁▁▁▁▁、▁▁▁▁▁和▁▁▁▁▁三种。(8)虚拟存储器处于▁▁▁▁▁层次,它给用户提供了一个比实际▁▁▁▁空间大得多的▁▁▁▁空间。4.4静态MOS存储器与动态MOS存储器存储信息的原理有何不同?为什么动态MOS存储器需要刷新?一般有哪几种刷新方式?4.5某一动态RAM芯片(64K×1位),采用地址复用技术,则除了电源和地引脚外,该芯片还有哪些引脚?各为多少位?4.6在页模式DRAM中,“打开一页”指什么?在打开一页的操作中,信号RAS和CAS的作用是什么?4.7DRAM的tRC和tRAC指什么?两者有何不同?4.8假设某存储器地址为22位,存储器字长为16位,试问:(1)该存储器能存储多少字节信息?(2)若用64K×4位的DRAM芯片组成该存储器,则需多少片芯片?(3)在该存储器的22位地址中,多少位用于片间寻址?多少位用于片内寻址?4.9某8位计算机采用单总线结构,地址总线17根(A16…A0,),数据总线8根,双向(D7…D0),控制信号W/R(高电平为读,低电平为写)。已知该机存储器地址空间从0连续编址,其地址空间分配如下:最低8KB为系统程序区,由ROM芯片组成;紧接着40KB为备用区,暂不连接芯片;而后78KB为用户程序和数据空间,用静态RAM芯片组成;最后2KB用于I/O设备(与主存统一编址)。现有芯片如题图4.9所示。SRAM:16K×8位,其中CS为片选信号,低电平有效;WE为写控制信号,低电平写,高电平读。ROM:8K×8位,其中CS为片选信号,低电平有效;OE为读出控制,低电平读出有效。译码器:3-8译码器,输出低电平有效;EN为使能信号,低电平时译码器功能有效。其他与、或等逻辑门电路自选。93CSWECSWEEN0Y1Y2Y3Y4Y5Y6Y7Y题图4.9(1)请问该主存需多少SRAM芯片?(2)试画出主存芯片与CPU的连接逻辑图。(3)写出各芯片地址分配表。4.10已知某8位机的主存采用4K×4位的SRAM芯片构成该机所允许的最大主存空间,并选用模块板结构形式,该机地址总线为18位,问:(1)若每个模块板为32K×8位,共需几个模块板?(2)每个模块板内共有多少块4K×4位的RAM芯片?画出一个模块板内各芯片连接的逻辑框图。(3)该主存共需要多少4K×4位的RAM芯片?CPU如何选择各个模块板?4.1164K×1位DRAM芯片通常制成两个独立的128×256阵列。若存储器的读/写周期为0.5μs,则对集中式刷新而言,其“死区”时间是多少?如果是一个256K×1位的DRAM\n芯片,希望能与上述64K×1位DRAM芯片有相同的刷新延时,则存储阵列应如何安排?4.12访问主存的地址是20位(A19…A0),数据总线为8位,分别计算下列各种情况下标识cache和数据cache的大小,并画出对应的结构框图。(1)全相连映像,内容cache大小为1024(2)直接映像,A15…A0作为索引(3)2路组相连映像,A14…A0作为索引(4)4路组相连映像,A13…A0作为索引(5)8路组相连映像,A12…A0作为索引94第5章指令系统【内容摘要】指令系统是指计算机所能执行的全部指令的集合,也称为指令集,它不仅是计算机硬件设计的依据,还是软件设计的基础,因此,一台计算机指令系统的优劣直接影响着计算机系统的性能和功能。本章将围绕机器指令探讨指令的格式和长度、操作码编码技术、地址码寻址技术,结合指令的分类和功能,剖析复杂指令系统和精简指令系统。【学习要点】●指令的基本格式●固定长度的操作码编码和可变长度的操作码编码●指令的寻址方式和操作数的寻址方式●复杂指令系统和精简指令系统5.1指令系统与性能5.1.1指令与指令系统指令是指示计算机去执行某种操作的命令。如果命令是二进制代码形式,则相应的指令为机器指令,机器指令是计算机能直接识别并执行的指令,而用任何其他形式的指令或语言所编写的程序必须通过“翻译”或“编译”,编译成机器语言程序,才能在计算机中运行。指令系统则是指计算机所有机器指令的集合,也称指令集(InstructionSet)。它是面向机器的,不同的计算机具有不同的指令系统,反过来讲,不同的指令系统决定了计算机不同的性能和功能。随着计算机的发展和应用领域的不断扩大,指令系统越来越丰富,机器指令的数量成倍增长,多达成百上千条指令,如此庞大的指令系统我们称之为复杂指令系统(CIS),具有复杂指令系统的计算机称为复杂指令系统计算机(CISC)。CISC就是采用复杂的指令系统,来达到增强计算机的功能、提高速度的目的。经过对CISC指令使用频率的测试分析,发现只有占指令系统20%的指令是常用的,剩余80%的指令在程序中出现的概率大约20%。测试结果表明:花费巨大代价所增加的复杂指令只有20%左右的使用率,这将造成计算机硬件资源的巨大浪费。为此,人们开始考虑能否用最常用的20%左右的简单指令来组合实现不常用的80%的指令,于是,出现了精简指令系统(RIS)和精简指令系统计算机(RISC)。精简指令系统(RIS)是对复杂指令系统(CIS)进行简化和优化,使机器结构简化的同时,有效地提高机器的性能、速度和性能价格比。5.1.2指令系统的性能指令系统的性能将决定计算机的基本功能,因此,指令系统的设计是计算机系统设计的一个核心问题,它不仅与计算机的硬件紧密相关,而且直接影响到用户的使用。一个完善的指令系统应满足以下几个方面的要求:\n第一是完备性:要求机器的指令系统丰富,且功能齐全。第二是有效性:有效性是指用指令系统中的指令所编写的程序能被高效率地运行。高效率表现在程序所占存储空间小、执行速度快。第三是规整性:规整性包括指令系统的对称性、均匀性、一致性。对称性是指寄存器与存储器的对称,能对寄存器操作的指令同样能对存储器操作。均匀性是指各种数据类型适用于一种操作性质的指令。一致性是指指令长度和数据长度通常是字节的整数倍。第四是兼容性:兼容性是指“向上兼容”,即抵挡机上运行的软件可以在高档机上运行。第五是可扩展性:可扩展性是指保留一定余量的操作码空间,便于扩展指令使用。955.2机器指令5.2.1机器指令的格式根据指令的概念,一条机器指令形式上是一串二进制代码,我们通常把表示机器指令的这一串二进制代码称为指令字。作为一个指令字,不仅要表示出指令所进行的某种具体操作,还要表示出指令对谁操作以及操作结果的去向,即指令的操作对象。因此,任何一条机器指令都有两部分组成:一部分是操作码,另一部分是地址码。其格式如图5-1所示。操作码(OP)地址码(A)图5-1机器指令的基本格式操作码OP:是指令所进行的具体操作的编码。不同的指令相应的操作和功能不同,则需要用不同的操作码来表示。因此,操作码的长度与机器所能执行操作的多少有关。地址码A:是指令操作对象的地址编码。它是一个广义的概念,它不仅可以是操作对象的存储地址,还可以是操作对象本身。因此,地址码的长度与存储器的容量、寄存器的多少、机器的长度有关。5.2.2指令字的长度指令字的长度是指一个指令字所包含的二进制代码的位数。结合机器指令的格式,指令字的长度取决与操作码的长度、地址码的长度和地址码的个数,因此,影响指令字长度的因素有多种,不同指令系统的指令长度各不相同,同一个指令系统的不同指令其长度也不尽相同,但为了便于存储,指令字的长度与机器字长之间具有一定的匹配关系,通常指令长度设计为字节的整数倍。例如8086/8088CPU的指令系统,最短的指令长度为1个字节,最长的指令长度为6个字节;再如奔腾系列机的指令系统,最短的指令长度为1个字节,最长的指令长度为12个字节。由于指令的长度不尽相同,我们不仅可以将指令按其长度进行分类,还可以将指令系统进行分类。如果指令的长度等于机器的字长,这样的指令称为单字长指令;如果指令的长度等于两倍的机器字长,这样的指令称为双字长指令;还可以分为更多倍字长的指令以及半字长指令等。如果指令系统中各种指令字的长度均固定,则称为定长指令字结构;如果指令系统中各种指令字的长度随指令功能而异,则称为可变长指令字结构。定长指令字结构:结构简单,指令的译码时间短,有利于硬件控制系统的设计,多用于机器字长较长的大、中型计算机和精简指令系统计算机。但指令字的长度普遍较长,冗余现象严重,不利于指令扩展。可变长指令字结构:结构灵活,能充分利用指令中的每一位,信息冗余少,平均指令长度短,易于指令的扩展。但指令格式不规整,硬件控制系统复杂。5.2.3机器指令的分类机器指令不仅可以按其长度划分为单字指令、双字指令和多字指令,还可以按指令中地\n址码的多少将机器指令划分为:零地址指令、单地址指令、双地址指令和多地址指令。1、零地址指令零地址指令的指令字中只有操作码,而没有地址码。其格式为:OP零地址指令有以下两种情况:第一是指令不需要操作对象,也就不需要地址码,例如停机指令、空操作指令等。第二是指令需要一个操作对象,但这个操作对象可以隐含,从而指令的地址码也隐含,例如对堆栈、累加器操作的指令。指令功能为:OP(AC)→AC。2、单地址指令单地址指令的指令字中只有一个地址码A,也称为一地址指令。其格式为:OPA96单地址指令有以下两种情况:第一是指令有一个操作对象,并且这个操作对象不能隐含,必须用一个地址码表示,例如加1指令、减1指令等。指令功能为:OP(A)→A。第二是指令有两个操作对象,其中一个操作对象隐含,通常指累加器(AC),另一个用一个地址码表示,例如加法指令、减法指令等。指令功能为:(AC)OP(A)→AC。3、双地址指令双地址指令的指令字中有二个地址码A1和A2,也称为二地址指令。其格式为:OPA1A2双地址指令的指令功能为:(A1)OP(A2)→A1或(A1)OP(A2)→A2双地址指令可以分为三种指令类型:(1)S—S型指令即存储器—存储器型指令,是指指令中两个操作对象都是存储器,用地址码A1和A2进行表示,A1、A2为主存地址。(2)R—R型指令即寄存器—寄存器型指令,是指指令中两个操作对象都是寄存器,用地址码R1和R2进行表示,R1、R2为寄存器地址。(3)R—S型指令即寄存器—存储器型指令,是指指令中两个操作对象一个是寄存器,一个是存储器,用地址码R和A进行表示,R为寄存器地址,A为主存地址。在以上三种指令类型中,R—R型指令在被执行过程中不需要访问存储器,执行速度最快,因此是双地址指令中最常用的一种指令格式,尤其在RISC中,所有运算指令均为R—R型指令。4、三地址指令三地址指令的指令字中有三个地址码A1、A2和A3,也称为多地址指令。其格式为:OPA1A2A3三地址指令的指令功能为:(A1)OP(A2)→A3三地址指令的指令字较长,多用于字长较长的大、中型计算机中,小型机和微型机很少使用。5.3操作码的编码方法操作码是机器指令的重要组成部分,是对指令所执行操作的编码,指令不同其操作码也不同,具体表现在:操作码长度相同,操作码不同或操作码长度不同。所以,按指令字中操\n作码的长度是否相同或固定,可以将操作码的编码分为固定长度的定长编码和可变长度的变长编码两种。5.3.1定长编码定长编码是最简单的操作码编码方法。由于操作码的长度和位置在指令字中是固定的,有利于简化指令结构和减少指令的译码时间,适用于字长较长的大、中型计算机。例如IBM370机,其字长是32位,指令分为半字长、单字长、1.5倍字长指令类型,无论哪一种类型的指令,其操作码的长度和位置都是固定的,由于操作码的长度固定为8位,指令系统所能允许的指令条数最多为28=256,实际上IBM370机只有183条指令,剩余的操作码编码为非法的操作码。如果操作码的编码采用定长编码,指令字中的操作码长度取决于指令系统中的全部指令条数。例如若指令系统中有m条指令,则操作码的长度n应满足式(5-1)n≥log2m(5-1)975.3.2变长编码变长编码是指指令字中操作码的长度和位置不固定,随指令的不同而存在差异。采用变长编码方法,可以有效地压缩操作码的平均长度,在小型机和微机中被广泛采用。如小型机PDP-11,机器字长为16位,指令分为单字长、双字长、三字长等指令类型,操作码占5~6位,且遍及整个指令字长度范围。但由于操作码长度和位置的不固定,增加了指令译码和分析的难度,使硬件设计复杂化。1、操作码扩展技术在不增加指令字长度的情况下,通过采用操作码扩展技术,使操作码的长度随地址码的减少而增加,这样一来,对于地址码个数不同的指令,可以具有不同长度的操作码,从而可以充分利用指令字的地址码,使有限的指令字长度可以表示更多的指令。设机器指令字长度为16位。其中操作码为4位,地址码为4位。指令格式为:OPA1A2A3如果采用定长编码,4位操作码只能表示16条三地址指令。如果指令系统中除三地址指令外,还有二地址、一地址和零地址指令,且要求有15条三地址指令、15条二地址指令、15条一地址指令和16条零地址指令,则采用定长编码方法是无法满足上述要求的,这就需要采用变长编码方法,操作码的长度随地址码的减少而增加,具体操作码扩展如下:【例5-1】某机器指令字长度为16位。其中地址码长度为4位。如果指令系统中三地址指令有11条、二地址指令有72条、零地址指令有64条。问最多还能设计多少条一地址指令?解:对于三地址指令:地址码共占12位,指令字中还剩4位用于操作码,其编码最多为24=16个,由于实际只有11条三地址指令,所以还剩下16-11=4个编码,可用于二地址指令。对于二地址指令:地址码共占8位,指令字中还剩8位用于操作码,扣除三地址指令用过的操作码,其编码最多为5×24=80个,由于实际只有72\n条二地址指令,所以还剩下80-72=8个编码,可用于一地址指令。对于一地址指令:地址码共占4位,指令字中还剩12位用于操作码,扣除三地址指令三地址指令操作码的编码二地址指令操作码的编码一地址指令操作码的编码零地址指令操作码的编码0000××××××××××××0001××××××××××××┇1110××××××××××××11110000××××××××11110001××××××××┇11111110××××××××111111110000××××111111110001××××┇111111111110××××11111111111100001111111111110001┇111111111111111115条三地址指令15条二地址指令15条一地址指令16条零地址指令98和二地址指令用过的操作码,其编码最多为8×24=128个,如果这128个编码都表示一地址指令,那么指令系统中就不存在零地址指令,实际上存在有零地址指令,所以,这128个编码并不都是一地址指令。究竟一地址指令还能设计多少条,这就取决于实际存在的零地址指令条数。由于系统要求有64条零地址指令,而4位操作码只能最多表示16条指令,所以,需要一地址指令提供64/16=4个操作码编码用于零地址指令,以保证零地址指令有64条。因此,指令系统中一地址指令最多还能设计128-4=124条指令。2、Huffman编码法Huffman编码法是根据各种指令使用的频率不同,采用优化技术,将使用频率最高的指令用最短的编码表示,而对于使用频率较低的指令用较长的编码表示,从而缩短操作码的平均长度。采用Huffman编码法所得到的操作码的平均长度为:H=∑=ni1\nPi×Li其中Pi是第i条指令使用的频率,Li是第i条指令操作码的长度,n是指令总数。下面以10条指令的机器为例来说明Huffman编码过程。已知10条指令的使用频率如表5-1所示。表5-1指令的使用频率指令使用频率(pi)I00.30I10.20I20.16I30.09I40.08I50.07I60.04I70.03I80.02I90.01(1)Huffman树根据指令的使用频率,画出Huffman树,具体步骤:1)按频率大小进行排列,频率相同的可任意排列。2)把出现频率最小的两项进行合并,将其频率相加,再把相加后的频率进行重新排序。3)重复步骤2),直至只剩下最后两个频率,再将其合并,便形成Huffman树。如图5-2所示。图5-2Huffman树0.151.000.390.190.100.060.030.310.610.010.020.030.040.070.080.090.160.200.3099(2)Huffman编码过程根据Huffman树,从根节点(最后两个频率形成的节点)开始编码,左分支编码为“1”,右分支编码为“0”;各个子节点也同根节点一样,左分支编码为“1”,右分支编码为“0”,直到末节点为止。各条指令的编码便是从根节点开始到末节点结束的一个二进制代码。如表5-2所示。表5-2Huffman编码结果指令Huffman编码法长度2-5-6扩展编码法长度I0112112I1012012\nI2101310104I3001300104I41001410014I51000410004I60001400014I70000150000106I800000160000016I900000060000006则采用Huffman编码法所得到的操作码平均长度为:H=∑=ni1Pi×Li=(0.30+0.20)×2+(0.16+0.09+0.08+0.07+0.04)×4+(0.03+0.02+0.01)×6=1+0.75+0.76+0.15+0.18=2.85若采用定长编码,由于指令有10条,所以操作码的长度为4。可见,采用Huffman编码法更有效地缩短了操作码的平均长度。3、扩展编码法采用Huffman编码法能更有效地缩短操作码的平均长度,但这种编码方法所形成的操作码很不规整,将会给译码造成极大的困难,不利于软件的编译。于是,采取了一种折中的方案,将Huffman编码法与定长编码法进行有效结合,在缩短操作码平均长度的基础上,使操作码更加规整。这种编码方法称为扩展编码法。扩展编码结果如表5-2所示。采用扩展编码法所得到的操作码平均长度:H=∑=ni1Pi×Li=(0.30+0.20)×2+(0.16+0.09)×3+(0.08+0.07+0.04)×4+0.03×5+(0.02+0.01)×6=1+1.76+0.36=3.125.4地址码的寻址方式寻址方式是指在指令被执行的过程中,根据指令字中的地址码去寻找操作对象的方式。如果地址码所表示的操作对象是数据信息,这样的操作对象称为操作数,对应的寻址方式为操作数寻址方式;如果地址码所表示的操作对象是指令信息,相应的寻址方式为指令寻址方式。5.4.1指令寻址方式指令寻址方式又可分为顺序寻址方式和跳转寻址方式。如图5-3所示。1001、顺序寻址方式顺序寻址方式是采用PC增量的方式形成下一条指令地址。具体寻址过程如图5-3(a)所示,PC称为程序计数器,是用来跟踪程序的执行并指向下一条将要被执行的指令。由于程序在内存中是连续存放的,当程序顺序执行时,PC的内容加上一定的增量,便形成下一条将要被执行指令的地址,至于增量是多少,取决于指令所占存储单元的个数。\n2、跳转寻址方式跳转寻址方式是指当程序发生转移时,下一条将要执行的指令地址不再是PC的内容,而是根据转移指令字中的地址码A去形成下一条将要执行的指令地址。具体寻址过程如图5-3(b)所示,如果是地址码直接形成PC,记作A→PC,这种跳转寻址方式也称为绝对跳转;如果是当前PC的内容(现行PC加上增量)加上地址码形成PC,记作(PC)+A→PC,这种跳转寻址方式也称为相对跳转。图5-3指令的寻址方式5.4.2操作数寻址方式操作数的存放不象指令的存放有规律,它既可以存放在寄存器、存储器和外设中,也可以存放在指令中,因此表示操作数的地址码尽管形式上都是二进制代码,但所表示的含义各不相同,有时代表的是地址,有时代表的是数据,往往比较复杂,一般讨论寻址方式时,主要是讨论操作数寻址方式。下面以一地址指令为例,介绍几种最常用的基本寻址方式。一地址指令格式如图5-4所示。OP寻址方式MOD形式地址A图5-4一地址指令格式由于操作数寻址方式种类较多,所以在指令字中设置一个寻址方式MOD字段,用来指明具体的寻址方式。当操作数存放在存储器中时,指令字中的地址码并不是内存的实际地址,因此我们把它称为形式地址。形式地址必须转换成内存的实际地址,然后才能访问存储器。内存的实际地址也称为有效地址(EA)。所以,EA是A的一个函数,记为:EA=.(A)。函数.不同,其寻址方式也不同。1、立即寻址立即寻址方式是指指令字中的地址码本身就是操作数,即操作数是D,D也称为立即数。OP立即寻址D立即寻址的优点:由于从存储器中取出指令的同时,操作数也被取出了,因为操作数是101在指令字中,所以在执行指令时,不必再次访问存储器,从而提高了指令的执行速度。但由于指令字长度的限制,D的位数限制了立即数的大小。2、直接寻址直接寻址方式是指指令字中的地址码D(形式地址)就是操作数的有效地址,即EA=D。如图5-5所示。图5-5直接寻址方式直接寻址简单直观,便于硬件实现。但由于指令字长度的限制,形式地址D限制了指令的寻址范围,随着内存容量不断扩大,要想寻址整个内存空间,势必造成指令字长度的增加。另外在编程时,如果使用了直接寻址指令,一旦操作数地址发生变化,就必须修改指令中的D,给编程带来不便。3、间接寻址间接寻址方式是指指令字中的地址码D(形式地址)不是操作数的有效地址,而是操作数的有效地址的有效地址,即EA=(D)。如图5-6所示。图5-6间接寻址方式与直接寻址相比,间接寻址比直接寻址灵活,使用较短的地址码可以访问较大的存储空间。另外有利于编程,如果使用了间接寻址指令,当操作数地址发生变化时,可不必修改指令,只需修改存放有效地址的单元内容即可。其缺点比较明显,指令的执行时间较长,因为\n需要多次访问存储器。4、寄存器直接寻址寄存器直接寻址方式也称寄存器寻址方式,是指指令字中的地址码R(形式地址)是某一寄存器的编号,其寄存器的内容为指令所需的操作数,即EA=(R)。如图5-7所示。图5-7寄存器直接寻址方式由于寄存器寻址方式的操作数位于寄存器中,采用寄存器寻址方式的指令在被执行时,无需访问内存,从而减少了指令的执行时间;另外,由于内部寄存器数量有限,指令字中的102地址码较短,有效地缩短了指令字长度。因此,寄存器寻址方式在计算机中得到了广泛的应用。5、寄存器间接寻址寄存器间接寻址方式是指指令字中的地址码A(形式地址)是某一寄存器的编号,其寄存器的内容不是指令所需的操作数,而是指令所需操作数的有效地址,即EA=((R))。如图5-8所示。图5-8寄存器间接寻址方式指令采用寄存器间接寻址方式时,由于操作数的有效地址存放在寄存器中,此指令在被执行时,只需访问两次存储器,比间接寻址速度快。6、变址寻址变址寻址方式是指指令字中的地址码A(形式地址)加上指令中指定的变址寄存器的内容形成操作数的有效地址,即EA=A+(Ri)。如图5-9所示。图5-9变址寻址方式指令采用变址寻址方式时,如果操作数地址发生变化时,可不必修改指令,只需按一定增量修改变址寄存器的内容,方便实现循环程序设计。7、基址寻址基址寻址方式是指指令字中的地址码D(形式地址)加上指令中指定的基址寄存器的内容形成操作数的有效地址,即EA=D+(Rb),基址寄存器通常是专用的寄存器。如图5-10所示。图5-10基址寻址方式103基址寻址与变址寻址有效地址的形成过程很相似,但两者的应用有着本质的区别。基址寻址是面向系统的,用于将用户程序的逻辑地址转换成物理地址,以便实现程序的再定位,基址寄存器的内容通常是由操作系统进行设置,不允许进行增量或减量,并对用户是透明的。8、相对寻址相对寻址方式是将当前PC的内容(现行PC加上增量)加上地址码(形式地址)形成操作数的有效地址,即EA=(PC)+D→PC,D称为位移量,是定点整数的补码。如图5-11所示。图5-11相对寻址方式示意图指令采用相对寻址方式时,编程时不需要用指令的绝对地址,可以将程序放在内存的任何地方。9、隐含寻址隐含寻址是指指令字中的地址码A隐含的。对于一地址指令而言,指令格式中地址码A就缺省了,尽管没有地址码,但操作数是存在的,并规定为累加器AC。\n5.5典型的指令系统5.5.1复杂指令系统1、指令类型不同机器的指令系统是各不相同的,CISC的指令系统一般有上百种指令,按照指令的功能对指令进行归类,一个较完善的复杂指令系统应该包含以下8种指令类型。(1)数据传送指令数据传送指令主要包括取数指令、存数指令、传送指令、交换指令、对堆栈操作的指令等,用来实现存储器与寄存器、堆栈之间、寄存器与寄存器、堆栈之间的数据传送。(2)算术运算指令算术运算指令主要包括二进制定点数的四则运算指令、十进制数的四则运算指令、浮点数的四则运算指令、算术移位指令、比较指令、求补和求反指令等。这类指令主要用于定点数和浮点数的算术运算。(3)逻辑运算指令逻辑运算指令主要包括逻辑与、逻辑或、逻辑非、逻辑移位等指令,主要用于无符号数的位操作、代码转换、逻辑判断。(4)串操作指令串操作指令包括串传送指令、串比较指令、串搜索指令、串替换指令等。主要用于对字符串和数据串的处理。104(5)转移指令转移指令也称程序控制指令,主要包括无条件转移指令、条件转移指令、调用与返回指令、中断与返回指令等,主要用来控制改变程序的执行顺序。(6)输入输出指令输入输出指令主要用来控制外设、检测外设的工作状态、实现对外设的数据传送。(7)特权指令特权指令是指具有特殊权限的指令,只用于操作系统,一般不会直接提供给用户。(8)其它指令其他指令主要指复位指令、停机指令、空操作指令、对状态寄存器的置位和复位指令。综上所述,CISC指令系统的特点有:1)指令系统复杂庞大。表现在指令条数较多2)指令格式多样。表现在指令字长不固定,寻址方式种类较多3)指令的执行时间差别较大4)大多数CISC采用微程序控制器2、8086CPU指令格式8086CPU指令长度可以是l~6字节,其指令格式如图5-12所示。其中B1和B2为基本字节,B3~B6将根据不同指令做不同的定义。图5-128086指令格式(1)B1字节各字段定义1)OP:表示指令操作码2)D:表示方向。D=1时寄存器为目的操作数;D=0时寄存器为源操作数。3)W:表示字节或字处理方式。W=0表示字节处理指令;W=1表示字处理指令。(2)B2字节各字段定义1)MOD:表示指令的寻址方式。8086的一条指令中,最多可使用两个操作数,它们\n不能同时位于存储器中,最多只能有一个是存储器操作数。当MOD≠11时为存储器方式,即有一个操作数位于存储器中;MOD=00,没有位移量。MOD=01,只有低8位位移量,需将符号扩展8位,形成16位。MOD=10有16位位移量。当MOD=11时,为寄存器方式,两个操作数均为寄存器。2)REG:表示指令中只有一个操作数,这个操作数为寄存器。3)R/M:R/M受MOD制约。当MOD=11(即寄存器方式时),由此字段给出指令中第二个操作数所在的寄存器编码;当MOD≠11时,此字段用来指出应如何计算指令中使用的存储器操作数的有效地址。MOD和R/M字段表示的有效地址EA计算方法。(3)B3~B6字节1)这四个字节一般是给出存储器操作数地址的位移量(即偏移量)或立即操作数。位移量可为8位,也可为16位,这由MOD来决定。8086规定16位的字位移量的低位字节放于低地址单元,高位字节放于高地址单元。2)若指令中只有8位位移量,8086在计算有效地址时,自动用8位位移量的符号将其105扩展成一个16位的双字节数,以保证有效地址的计算不产生错误,实现正确的寻址。指令中的立即操作数位于位移量的后面。若B3B4有位移量,立即操作数就位于B5B6。若指令中无位移量,立即操作数就位于B3B4字节。总之,指令中缺少的项将由后面存在的项向前顶替,以减少指令的长度。5.5.2精简指令系统1、RISC指令系统的特点结合表5-3所列出的典型RISC指令系统的基本特征,我们可以看出RISC指令系统的最大特点:第一是指令条数少,所选取的指令都是使用频率较高的简单指令;第二是指令字长固定,且指令格式种类少;第三是只有取数/存数指令可以访问存储器,其它指令的操作都在寄存器之间进行。表5-3典型RISC指令系统的基本特征机器型号指令数寻址方式指令格式通用寄存器数主频/MHzRISC-13122788MIPS5534164SPARC7553120~13625~33MIPSR300091333225i860653432502、SPARC机指令系统SPARC机是RISC最典型代表,机器的字长为32位,其指令系统有75条指令。(1)指令类型和指令格式1)SPARC机指令类型①算术运算/逻辑运算/移位指令②取数(LOAD)/存数(STORE)指令③控制转移指令\n④读/写专用寄存器指令⑤浮点运算指令⑥协处理器指令2)SPARC机指令格式SPARC机有三种指令格式,如表5-4所示。表5-4SPARC指令格式313029280格式1CALL指令OPDisp30(偏移量)31302928252422210OPaCondOP2Disp22(偏移量)格式2Branc指令SETH指令OPRdOP2imm22(立即数)31302925241918151312540OPRdOP3Rs1iAs1Rs2OPRdOP3Rs1iSimm13格式3其他指令OPRdOP3Rs1OPfRs2其中OP、OP2、OP3为指令操作码,OPf为浮点指令操作码。为了增加立即数和偏移量的长度,调用指令CALL、转移指令BRANCH和SETHI指令操作码缩短了,其中SETHI指令是将22位的立即数(imm22)左移10位,送到Rd所指示的寄存器中,然后再执行一条加法指令,以补充后面10位数据,从而形成32位字长的数据。106Rs1、Rs2为通用寄存器地址,用作源操作数寄存器地址或地址寄存器地址。Rd为目的寄存器地址,用来保存运算结果或从存储器取来的数据。Simm13是13位扩展符号的立即数。运算时如果Simm13最高位是1,则最高位前面的所有位都扩展为1;否则,最高位前面的所有位都扩展为0。i是用来选择第二个操作数。当i=0,第二个操作数在Rs2中;当i=1,第二个操作数为Simm13。(2)指令功能与寻址方式1)算术逻辑运算指令功能:将Rs1、Rs2的内容(或Simm13)按操作码规定的操作运算后结果送Rd。当i=0时,(Rs1)OP(Rs2)→Rd当i=1时,(Rs1)OPSimm13→Rd2)取数/存数指令功能:取数指令LOAD将存储器中的数据送往Rd;存数指令STORE将Rd中的数据送往存储器。存储器地址的计算方法如下(寄存器间接寻址):当i=0时,存储器地址=(Rs1)+(Rs2)当i=1时,存储器地址(Rs1)+Simm133)控制转移指令\n条件转移(BRANCH):由Cond字段决定程序是否转移,用相对寻址方式形成转移地址。转移并连接(JMPL):将本指令的地址保存在Rd所指示的寄存器中,以备程序返回使用。用寄存器间接寻址形成转移地址。调用(CALL):采用相对寻址方式形成转移地址。陷阱(TRAP):采用寄存器间接寻址形成转移地址。TRAP程序返回(RETT):采用寄存器间接寻址形成转移地址。4)读/写专用寄存器指令SPARC有4个专用寄存器(PSR、Y、WIM、TBR),其中PSR称为程序状态寄存器,其内容反映并控制机器的运行状态,非常重要,因此,读/写PSR指令一般是特权指令。综上所述,对于SPARC机的指令系统,由于采用RIS技术,该机器的指令系统只设置了75条指令,还有一些指令并没有选入指令系统,但很容易用指令系统中的指令去替代实现。如表5-5所示。其中,表的左边列出了6条指令,表的右边给出了替代指令及实现方法。(SPARC约定R0的内容恒为0)表5-5RISC指令的替代与实现指令功能替代指令实现方法MOVE寄存器间数据传送ADDRs+R0→RdINC寄存器内容加1ADDimm13=1,为操作数DEC寄存器内容减1SUBimm13=-1,为操作数NEG求补SUBR0-Rs→RdNOT逻辑非XORimm13=-1,为操作数CLR清除寄存器ADDR0+R0→Rd107关联108习题5.1什么叫指令?什么叫指令系统?指令通常有哪几种地址格式?5.2什么叫指令地址?什么叫形式地址?什么叫有效地址?5.3什么叫寻址方式?有哪些基本的寻址方式?简述其寻址过程。5.4基址寻址方式和变址寻址方式各有什么不同?5.5设某机指令长为16位,每个操作数的地址码为6位,指令分为单地址指令、双地址指令和零地址指令。若双地址指令为K条,零地址指令为L条,问最多可有多少条单地址指令?5.6设某机指令长为16位,每个地址码长为4位,试用扩展操作码方法设计指令格式。其中是三地址指令有10条,二地址指令为90条,单地址指令32条,还有若干零地址指令,问零地址指令最多有多少条?5.7设某机字长为32位,CPU有32个32位通用寄存器,有8种寻址方式,包括直接寻址、间接寻址、立即寻址、变址寻址等,采用R-S型单字长指令格式,共有120条指令,试问:(1)该机直接寻址的最大存储空间为多少?(2)若采用间接寻址,则可寻址的最大存储空间为多少?如果采用变址寻址呢?(3)若立即数为带符号的补码整数,试写出立即数范围。\n5.8一种单地址指令格式如下所示,其中I为间接特征,X为寻址模式,D为形式地址。I、X、D组成该指令操作数的有效地址E。设R为变址寄存器,R1为基址寄存器,PC为程序计数器,请在下表中第一列位置填写适当的寻址方式。OPIXD寻址方式IX有效地址E①000E=D②001E=(PC)+D③010E=(R)+D④011E=(R1)+D⑤100E=(D)⑥111E=((R1)+D),D=05.9简述RISC的主要特点。5.10选择题(1)计算机系统中,硬件能够直接识别的指令是()。A、机器指令B、汇编语言指令C、高级语言指令D、特权指令(2)指令系统中采用不同的寻址方式的主要目的是()。A、增加内存的容量B、缩短指令长度,扩大寻址范围C、提高访问内存的速度D、简化指令译码电路(3)在相对寻址方式中,若指令中地址码为X,则操作数的地址为()。A、XB、(PC)+XC、X+段基址D、变址寄存器+X(4)在指令的地址字段中直接指出操作数本身的寻址方式,称为()。A、隐含地址B、立即寻址C、寄存器寻址D、直接寻址(5)在一地址指令格式中,下面论述正确的是()。A、只能有一个操作数,它由地址码提供B、一定有两个操作数,另一个是隐含的C、可能有一个操作数,也可能有两个操作数109D、如果有两个操作数,另一个操作数一定在堆栈中(6)在变址寄存器寻址方式中,若变址寄存器的内容是4E3CH,给出的偏移量是63H,则它对应的有效地址是()。A、63HB、4D9FHC、4E3CHD、4F9FH(7)程序控制类指令的功能是()。A、进行算术运算和逻辑运算B、进行主存与CPU之间的数据传送C、进行CPU和I/O设备之间的数据传送D、改变程序执行的顺序(8)算术右移指令执行的操作是()。A、符号位填0,并顺次右移1位,最低位移至进位标志位B、符号位不变,并顺次右移1位,最低位移至进位标志位C、进位标志位移至符号位,顺次右移1位,最低位移至进位标志位D、符号位填1,并顺次右移1位,最低位移至进位标志位\n(9)下列几项中,不符合RISC指令系统的特点是()。A、指令长度固定,指令种类少B、寻址方式种类尽量多,指令功能尽可能强C、增加寄存器的数目,以尽量减少访存次数D、选取使用频率最高的一些简单指令以及很有用但不复杂的指令5.13填空题(1)一台计算机所具有所有机器指令的集合称为该计算机的▁▁▁▁。它是计算机与▁▁▁▁之间的接口。(2)在指令编码中,操作码用于表示▁▁▁▁,n位操作码最多可以表示▁▁▁▁条指令。地址码用于表示▁▁▁▁。(3)在寄存器寻址方式中,指令的地址码部分给出的是▁▁▁▁,操作数存放在▁▁▁▁。(4)采用存储器间接寻址方式的指令中,指令的地址码字段中给出的是▁▁▁▁所在的存储器单元地址,CPU需要访问内存▁▁▁▁次才能获得操作数。(5)操作数直接出现在指令的地址码字段中的寻址方式称为▁▁▁▁寻址;操作数所在的内存单元地址直接出现在指令的地址码字段中的寻址方式称为▁▁▁▁寻址。5.14判断下列各题的正误(1)利用堆栈进行算术/逻辑运算的指令可以不设置地址码。()(2)指令中地址码所指定寄存器的内容是操作数有效地址的寻址方式称为寄存器寻址。()(3)一条单地址格式的双操作数加法指令,其中一个操作数来自指令中地址字段指定的存储单元,另一个操作数则采用间接寻址方式获得。()(4)在计算机的指令系统中,真正必需的指令种类并不多,很多指令都是为了提高机器速度和便于编程而引入的。()(5)RISC系统的特征是使用了丰富的寻址方式。()110第6章控制器【内容摘要】控制器是计算机的一个重要组成部分,是计算机的指挥和控制中心,它与CPU密不可分。本章我们从CPU功能出发,探讨其内部组成与结构,揭开CPU这个神秘的面纱,围绕控制功能的实现,重点介绍微程序控制器、组合逻辑控制器和门阵列控制器的设计思想和方法;结合典型CPU案例,体会采用新技术后的高性能微处理器。【学习要点】●控制器的组成及结构●控制方式与指令周期●控制器的设计(逻辑控制器和微程序控制器)●新技术(指令流水线技术、MMS技术)6.1CPU功能和组成6.1.1CPU的功能大家知道CPU是由运算器和控制器两大部分组成,其基本任务是执行程序,而程序是指令的有序集合,因此,CPU的基本功能体现在两个方面:一方面是如何保证程序中指令执行顺序的正确,另一方面是如何实现一条指令的功能。具体控制如下:1、指令控制按照冯·诺依曼“存储程序”思想,程序被装入主存后,计算机应能按其预先设定的要\n求有条不紊地执行指令,才可完成具体的任务。因此,严格控制程序的执行顺序,是CPU的首要任务。指令控制能实现对程序中指令的执行顺序进行控制。由于程序中的指令有两大类,一是顺序执行的指令,二是转移指令。对于顺序执行的指令,当CPU执行完此指令后,该指令下面的一条指令便是CPU要执行的下一条指令,由于程序的连续存放,可以通过设置一个程序计数器PC或指令指针(Programcounter)进行控制,且PC具有自动加1的功能,因此,PC始终指向的是下一条CPU将要执行的指令。对于转移指令,当CPU执行完此指令后,将转移的目的指令所在的地址送PC,便实现转移指令的正确转移。2、操作控制对于一条指令的执行,要涉及到计算机中的若干个部件。指令不同,控制完成指令的功能所涉及的部件不同。如何控制这些部件,就需要各种不同的操作控制信号。因此,一条指令对应一组操作控制信号。指令不同,指令的操作码不同,指令所对应的一组操作控制信号也不同。因此,操作控制是对指令的操作码进行译码来产生该指令所需要的一组操作控制信号。3、时序控制在操作控制的基础上,需要对各种操作控制信号的产生时间、稳定时间、撤销时间及相互之间的关系进行严格控制。因为指令所对应一组操作控制信号并不是同时作用于相应的各个部件。这种对操作控制信号施加时间上的控制,称为时序控制。实现时序控制需要设置时序产生器和操作控制器。只有严格地进行时序控制,才能保证各功能部件组合构成有机的计算机系统。4、数据加工数据加工是对数据进行算术运算和逻辑运算,它是CPU的根本任务,也是运算器的基本功能,而运算器是CPU组成的一个部分,因此,数据加工不可避免地会涉及到运算器和寄存器。1116.1.2CPU的基本组成CPU是运算器和控制器的总称,它既具有运算器的功能,又具有控制器的功能。欲实现控制器的功能,作为控制器应由程序计数器PC(Programcounter)、指令寄存器IR(InstrackRegister)、指令译码器、时序产生器和操作控制器组成。欲实现运算器的功能,作为运算器应由算术逻辑单元ALU、累加寄存器简称累加器AC(Accunulator)、数据缓冲寄存器DR(DataRegister)、状态寄存器STR(StruRegister)组成。具体CPU模型如图6-1所示。图6-1CPU主要组成部件逻辑结构示意图1、指令的执行过程(1)取指令根据指令所在存储器单元的地址(由程序计数器PC提供),将PC中的指令地址送地址寄存器AR,此后,PC自动加1,地址寄存器AR的内容经地址总线和地址译码器选中指令所在的存储单元,CPU发出读命令,将该指令从主存中取出,经数据总线送到数据缓冲寄存器DR,由于所取的是指令而不是数据,因此,再将数据缓冲寄存器DR中的指令送往指令寄存器IR,从而完成取指令。由此可见:1)所有指令的取指令阶段是完全相同的2)CPU当前正在执行的指令是指令寄存器IR中的指令\n3)程序计数器PC始终指向的是下一条CPU将要执行的指令(2)分析指令对指令寄存器IR中指令的操作码进行译码分析,产生该指令所需要的一组操作控制信号(译码信号),再经时序产生器和操作控制器形成时序控制信号(控制命令);通过对指令寄存器IR中指令的地址码进行分析,形成操作对象(操作数)的有效地址,并按此地址去读取操作数,或形成转移地址,以实现程序的转移。(3)执行指令时序控制信号(控制命令)作用于相应的各个部件,使各个部件产生相应的动作,从而112完成指令的功能,并根据需要,保存操作结果。一条指令执行结束,若没有异常情况和特殊请求,则按程序顺序,再去取出并执行下一条指令。控制器就是按取指令、分析指令、执行指令这样的步骤进行周而复始的控制过程,直到完成程序所规定的任务并停机为止。2、CPU内部主要寄存器CPU内部寄存器是用来保存运算和控制过程中的中间结果、最后结果和控制、状态信息。不同的CPU,其内部寄存器可能有所差异,但不论哪一种CPU,其内部寄存器至少要有一下6类寄存器。(1)数据缓冲寄存器(DR)数据缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。缓冲寄存器的作用是: 1)作为CPU和内存、外部设备之间信息传送的中转站 2)补偿CPU和内存、外围设备之间在操作速度上的差别3)在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器(2)指令寄存器(IR)指令寄存器用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。 (3)程序计数器(PC)为了保证程序中指令的执行顺序的正确,CPU必须设置一个计数器,用来指示CPU将要执行的下一条指令,起这种作用的计数器通常称为指令计数器,简称PC。在程序开始执行前,必须将程序的起始地址装入PC,即程序的一条指令所在内存单元地址送入PC。当执行指令时,CPU将自动修改PC的内容,使其保持的总是将要执行的下一条指令的地址,由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。但是,当遇到转移指令时,那么后继指令的地址(即PC的内容)必须从指令的地址码取得,在这种情况下,下一条从内存取出的指令将由转移指令来规定,不同于顺序指令只是简单的对PC加1。因此,程序计数器的结构应当是具有寄存和计数两种功能的结构。(4)地址寄存器(AR)地址寄存器用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在\n着操作速度上的差别,所以,必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。当CPU访问主存时,即CPU对主存存/取数据或者CPU从主存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,当CPU访问外设时,同样要使用地址寄存器和数据缓冲寄存器。(5)累加器(AC)累加器是累加寄存器的简称,它是一个通用寄存器。其功能是:当运算器进行算术或逻辑运算时,一方面作为ALU一个输入端,为ALU提供一个操作数;另一方面作为ALU一个输出端,用来存放ALU运算的结果。显然,运算器中至少要有一个累加器,当运算器内部只有一个累加器时,我们称为单累加器结构的运算器或CPU。目前,CPU中的累加器多达16个、32个、甚至更多,当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个既可存放源操作数,也可存放目的操作数。(6)状态寄存器(SR)113状态寄存器也称为程序状态字,简称PSW,用来保存CPU在执行算术指令和逻辑指令时建立的各种条件码内容,如运算结果进位标志(C),运算结果溢出标志(V),运算结果为零标志(Z),运算结果为负标志(N)等等。这些标志位通常分别由1位触发器保存。除此之外,状态寄存器还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器工作状态和程序运行状态。因此,状态寄存器是一个由各种状态条件标志拼凑而成的寄存器。3、控制器的分类根据时序控制信号或控制命令产生方法不同,可以将控制器分为组合逻辑控制器、微程序控制器和门阵列控制器三种。本章将重点讨论微程序控制器和组合逻辑控制器。(1)组合逻辑控制器组合逻辑控制器是采用组合逻辑技术来产生控制命令,它是分立元件时代的产物,其最大优点是速度快,但结构不规整,设计、调试和维修较困难,难以实现设计自动化,目前只有一些巨型机和RISC机为了追求高速度仍采用组合逻辑控制器。(2)微程序控制器微程序控制器是采用存储逻辑来产生控制命令,它是将控制命令代码化,机器指令转化成一段微程序,并存于控制存储器中,通过执行控存中的微程序来产生机器指令所需的一组控制命令。它与组合逻辑控制器的设计思想截然不同,微程序控制器设计规整,调试、维修以及更改、扩充指令方便,易于实现自动化设计,已成为当前控制器的主流。(3)门阵列控制器门阵列控制器实质上也是一种组合逻辑控制器,但它与传统的组合逻辑控制器不同,它是程序可编的,它吸收了前两种控制器的设计思想,被广泛应用于嵌入式系统。6.2控制器的时序系统和控制方式6.2.1有关周期的基本概念1、指令周期指令周期是指从取指令、分析指令到执行完该指令所需的全部时间。一个指令周期一般包含若干个CPU周期。由于指令的操作功能不同,有的简单,有的复杂,因此,不同指令的指令周期不尽相同。2、CPU周期\n一个CPU周期又称一个机器周期,与机器的一个基本操作相对应,结合机器的基本操作,一般机器的CPU周期有取指周期、取数周期、执行周期、中断周期等。由于CPU内部的操作速度较快,而CPU访问一次内存所花的时间较长,因此,通常用从内存读取一条指令字的最短时间来规定CPU周期。3、节拍在一个CPU周期内要完成一个基本操作,由于一个基本操作又包含若干个微操作,这些微操作不但需要占用一定的时间,而且有一定的先后次序。因此,需要把一个CPU周期等分成若干个时间小段,每一小段称为一个节拍,一个节拍对应一个电位信号,控制一个或几个微操作的执行。4、脉冲在一个节拍内,有时还需要设置一个或几个工作脉冲,工作脉冲也称为时钟周期或T周期。上述指令周期、CPU周期、时钟周期之间的关系如图6-2所示。一个指令周期包含两个CPU周期,每个CPU周期包含四个时钟周期。6.2.2时序信号与体制时序信号是对操作控制信号实施时间控制而形成的信号,是利用定时脉冲的顺序和不同114的脉冲间隔,有条理、有节奏地指挥机器的动作,规定在这个脉冲到来时做什么,在那个脉冲到来时又做什么,给计算机各部分提供工作所需的时间标志。为此,需要采用周期、节拍、脉冲多级时序体制。至于计算机内存中所存放的二进制形式的指令和数据的区分问题,我们可以从两个层面上进行区分,一是从时间上来说,取指令是发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据是发生在指令周期的后面几个CPU周期中,即发生在“执行指令”阶段。二是从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。由此可见,时间控制对计算机来说是十分重要,计算机的协调动作需要时间标志,而时间标志则是用时序信号来体现的,控制器所产生的各种控制信号都是时间因素(时序信号)和空间因素(部件)的函数。时序信号最基本的体制是电位─脉冲制,该体制下最容易理解的例子是寄存器之间的数据传送,数据加在触发器的电位输入端,用电位的高低来表示数据是“1”还是“0”;而打入数据的控制信号加在触发器的时钟输入端,且要求打入数据的控制信号到来之前,电位信号必须是稳定的,只有电位信号先建立,打入到寄存器中的数据才是可靠的。在组合逻辑控制器中,时序信号的体制往往采用周期─节拍─脉冲三级体制,即一个CPU周期包含多个节拍,每个节拍又允许包含多个脉冲。在图6-5中,一个CPU周期包含4个节拍,每个节拍又包含1个脉冲。在微程序控制器中,时序信号比较简单,一般采用节拍─脉冲二级体制。图6-2指令周期、CPU周期、时钟周期间的关系6.2.3时序信号发生器时序信号发生器的电路是不尽相同的,组合逻辑控制器的时序电路复杂,而微程序控制器的时序电路简单,但无论哪一种控制器,其内部的时序信号发生器最基本的构成是一样的,都是由时钟源、环形脉冲发生器、节拍脉冲和读写时序译码逻辑、启停控制逻辑等部分组成。如图6-3所示。1、时钟源\n时钟源用来为环形脉冲发生器提供频率稳定且电平匹配的方波时钟脉冲信号。它通常由石英晶体振荡器和与非门组成的正反馈振荡电路组成,其输出送至环形脉冲发生器。 2、环形脉冲发生器环形脉冲发生器是用来产生一组有序的间隔相等或不等的脉冲序列,以便通过译码电路来产生最后所需的节拍脉冲。为了在节拍脉冲上不带干扰毛刺,环形脉冲发生器通常采用循环移位寄存器形式。典型的环形脉冲发生器及其译码如图6-4所示。假设时钟源产生的时钟信号为5MHz(时钟周期200ns),当控制台发出总清信号(CLR),使触发器C4置“1”,门3打开,第一个正脉冲Φ通过门3,使触发器C1~C3清“0”。经过半个脉冲周期(100ns)的延迟,触发器C4由“1”状态翻到“0”状态,再经半个脉冲周期(100ns)的延迟,第二个正脉冲的上升沿(即第一个Φ的后沿)作移位信号,使触发器C1~C3115变为“100”状态。此后,第二个Φ、第三个Φ连续通过门2形成移位信号,使触发器C1~C3相继变为“110”、“111”状态。当C3变为“1”状态时,对应第四个正脉冲,其状态便反映图6-3时序信号发生器图6-4环形脉冲发生器及其译码逻辑到触发器C4的D端,因而第四个正脉冲的下降沿又将C4置“1”,门3再次打开,第五个正脉冲便通过门3,形成清“0”脉冲,使触发器C1~C3清“0”。于是下一个循环再度开始。其过程如图6-5所示。3、节拍脉冲和读写时序的译码节拍脉冲和读写时序的译码逻辑如图6-4的上半部。假设一个CPU周期产生4个等间116隔的节拍,根据图6-5节拍与脉冲之间的时序关系,其译码逻辑可表示为:图6-5节拍与脉冲之间的时序关系T10=C1·2CT20=C2·3CT30=C3T40=1CRD°=C2·RD′WE°=C3·WE′值得注意的是:(1)节拍脉冲间逻辑关系节拍T10、T20、T30、T40与图6-5中的节拍T1、T2、T3、T4在逻辑关系上是完全相同,只是后者是经过启停控制逻辑中的与门输出的。(2)节拍脉冲宽度一个CPU周期为800ns,在周期─节拍─脉冲三级体制中,一个CPU周期包含4个节\n拍,每一个节拍包含一个脉冲(时钟周期),因此,节拍T10、T20、T30、T40的脉冲宽度均为200ns。(3)读写控制信号由图6-5可以看出:信号RD′/WE′的持续时间为一个CPU周期。根据图6-4可知,信号RD°/WE°受控于信号RD′/WE′,只有当RD′/WE′有效后才会产生RD°/WE°,结合图6-6,读写信号RD/WE是RD°/WE°经过启停控制逻辑中的与非门输出的。4、启停控制逻辑启停控制逻辑电路如图6-6所示。其核心是触发器Cr,当触发器Cr为“1”时,原始的节拍T10、T20、T30、T40和读/写时序信号RD°/WE°通过门电路转变为CPU真正需要的节拍T1、T2、T3、T4和读/写时序信号RD/WE;否则,当触发器Cr为“0”时,将关闭时序信号发生器。为了保证时序信号发生器产生完整的脉冲,在T1的前沿启动时序信号发生117器,在T4的后沿关闭时序信号发生器,在触发器Cr的下面加上一个RS触发器,且用o4T作为触发器Cr的时钟控制端。图6-6启停控制逻辑6.2.4控制方式控制方式是指对各种操作在时间上所进行的控制,其实质反映了时序信号的定时方式。常用的控制方式有同步控制、异步控制、联合控制。1、同步控制方式同步控制方式是指任何指令的执行或指令中各个具体操作的执行均由确定统一的时间基准信号所控制,尽管指令功能不同,但在同步控制方式下,指令在执行时所需的机器周期数和时钟周期数都固定不变,即完全同步控制方式,此方式的优点是时序关系简单,控制方便,但会造成大量时间的浪费。这是因为大多数简单指令的很多节拍是不用的,处于等待状态。因此,在实际应用中往往采取折中的方案。常用的方法有:(1)采用中央控制与局部控制相结合的方法根据周期─节拍─脉冲三级体制,一个CPU周期包含多个节拍。大多数指令的CPU周期均采用统一的节拍,称为中央控制,对于少数在统一节拍内不能完成的指令,需要延长节拍或增加节拍,使之在延长节拍内完成指令,并再返回到中央控制,这种通过延长节拍或增加节拍来控制完成指令称为局部控制。(2)采用不同的机器周期和延长节拍的方法不同指令的指令周期可以划分为若干个CPU周期,如取指、取数、执行等周期,根据执行指令的需要,可选取不同的CPU周期数。在节拍安排上,每个CPU周期划分为固定的节拍,每个节拍都可根据需要延长一个节拍。\n118(3)采用分散节拍的方法分散节拍是指根据操作的实际需要,需要多少节拍,时序发生器就产生多少节拍,这样可以做到完全避免节拍轮空,是提高指令运行速度的有效方法,但这种方法会使时序发生器复杂化,同时也无法解决节拍内那些简单操作因等待所浪费的时间。2、异步控制方式异步控制方式是根据每条指令或每个操作的实际需要,需要多少时间就分配多少时间。这意味着每条指令的指令周期可由多少不等的机器周期数组成;也可以是当控制器发出某一操作控制信号后,等待执行部件完成操作后发“回答”信号,再开始新的操作。显然,用这种方式形成的操作控制序列没有固定的CPU周期数(节拍电位)或严格的时钟周期(节拍脉冲)与之同步。 3、联合控制方式联合控制方式是同步控制与异步控制相结合的方式。现代计算机中没有完全采用同步或完全采用异步的控制方式,大多数都采用联合控制方式。即在功能部件内部采用同步控制方式或以同步控制方式为主的控制方式,在功能部件之间采用异步控制方式。6.3指令流程图指令流程图是控制器设计的基础,它是用方框图语言来表示的指令周期。结合图6-1CPU的结构模型,分析常用指令的指令周期,并在此基础上划出指令流程图。6.3.1五类典型指令的指令周期分析五类典型指令包括非访内指令(CLA指令)、直接访内指令(ADD指令)、写存指令(STA指令)、转移指令(JMP指令)和空操作指令(NOP指令)。这些指令的存储见表6-1。表6-1五条典型的指令八进制地址八进制内容助记符020021022023024┇030031┇040250000030000020040000000140021┇000006000040┇存和数单元\nCLAADD30STA40NOPJMP21┇数据数据┇数据1、CLA指令周期CLA指令是一条非访内指令,此类指令的指令周期需要两个CPU周期,第一个CPU周期完成取指和译码操作,第二个CPU周期用作指令的执行操作。CLA指令周期如图6-7所示。非访内指令包括寄存器之间的数据传送指令、对累加器操作的指令和其他一些零地址指令,下面以CLA指令为例来说明非访内指令的两个CPU周期所进行的具体操作。(1)取指周期CLA指令的第一个CPU周期为取指周期,此周期完成取指令并对指令的操作码进行译码。假设程序计数器PC的内容为020Q,正指向CLA指令,则取指周期所进行的具体操作如图6-8所示。操作步骤如下:①将程序计数器PC的内容020Q送入地址寄存器AR(PC→AR)②程序计数器PC的值加1,使PC指向下一条CPU将要执行的指令(PC+1)119③将地址寄存器AR的内容送到地址总线上(AR→ABUS)④CPU发出读命令,将所选主存地址为020的单元内容“250000”读出,经过数据总线,传送给数据缓冲寄存器DR(W/R=1)⑤数据缓冲寄存器的内容“250000”送给指令寄存器IR(DR→IR)图6-7CLA指令的指令周期指令译码器ID对指令寄存器中操作码进行译码,产生出该指令所需的所有控制信号,以便执行指令操作。由于所有指令的指令周期中第一个CPU周期都是取指周期,该周期所进行的操作都相同,因此,取指周期作为指令流程图的公共部分,任何一条指令执行结束时必须返回到取指周期,以便继续取下一条指令。(2)执行周期CLA指令的第二个CPU周期为执行周期,此周期完成对累加器AC的清0。其具体操作如图6-9所示。操作步骤如下:①操作控制器送CLA相应的控制信号给算术逻辑单元ALU(0→AC)②ALU响应该控制信号,将累加器AC的内容清零(AC=0)图6-8CLA取指周期阶段120图6-9CLA执行周期2、ADD指令周期分ADD指令是一条直接访内指令,此类指令的指令周期需要三个CPU周期,第一个CPU\n周期完成取指和译码操作,第二个CPU周期将指令寄存器IR中的地址码送往地址寄存器,第三个CPU周期从内存中取出操作数并完成相加操作。ADD指令周期如图6-10所示。图6-10ADD指令的指令周期121(1)取指周期在取得前一条指令CLA后,程序计数器PC的值已经加1,修改为021Q,正指向当前ADD指令。经ADD指令的第一个CPU周期后,取出021Q单元的内容“030030”(ADD30指令)送指令寄存器IR,PC的值加1,即PC的值修改为22,指向下一条CPU将要执行的指令,经指令译码器得出该指令的功能,即将累加器的内容和主存030单元的内容相加。由于ADD指令的取指、译码操作过程与CLA指令的第一个CPU周期完全相同,在此不作重复。(2)指令寄存器IR中的地址码装入地址寄存器AR(IRAddr→AR)ADD指令的第二个CPU周期完成指令寄存器IR中的地址码(030)装入地址寄存器AR,表示为030→AR,其中030为内存中存放操作数的地址。具体操作如图6-11所示。图6-11指令寄存器IR中的地址码(030)装入地址寄存器AR根据图6-1CPU模型,对于单累加器结构的CPU,一个操作数必然隐含在累加器AC中,另一个操作数只能来源于数据缓冲寄存器DR,因此,对于直接寻址指令而言,都会面临一个相同的操作,即将指令寄存器IR中的地址码装入地址寄存器AR(IRAddr→AR),在此,我们将此操作理解为一个机器周期或CPU周期。(3)两操作数相加ADD指令的第三个CPU周期主要完成取操作数并执行加法操作。其具体操作如图6-12所示。操作步骤如下:①把地址寄存器AR中的操作数的地址(30)送地址总线;(AR→ABUS)②CPU发出读命令,将主存地址为30的单元内容6读出,经过数据总线送给数据缓冲寄存器DR;(W/R=1)③执行加法运算。数据缓冲寄存器的内容6为算术逻辑单元提供一个操作数,累加器为ALU提供另一个操作数,两个操作数经ALU相加,并把加法的结果送给累加器,此时,累加器的内容为6。(“+”)122图6-12两操作数相加3、STA指令周期STA指令是一条间接访内指令,该指令的指令周期由4个CPU周期组成,如图6-13所示。第一个CPU周期完成取指和译码操作,第二个CPU周期将指令寄存器IR中指令的地址码送往地址寄存器,第三个CPU周期从内存中取出操作数的地址并送往地址寄存器,第四个CPU周期将累加器AC的内容写入内存单元。(1)取指周期STA指令的第一个CPU周期仍为取指周期,将当前PC所指的主存单元中的指令“STA\nI30”(机器码为“021031”)取出并译码,PC的值加1,指向下一条CPU将要执行的指令。由于STA指令的第一个CPU周期与CLA、ADD指令的第一个CPU周期的操作完全相同,所以在此不再重复。(2)指令寄存器IR中的地址码装入地址寄存器AR(IRAddr→AR)STA指令的第二个CPU周期将指令寄存器IR中的地址码(031)装入地址寄存器AR(031→AR)。由于STA指令的第二个CPU周期与ADD指令的第二个CPU周期的操作完全相同,所以在此也不再重复。只是强调:ADD指令中的地址码030是操作数所在内存单元的地址,而STA指令中的地址码31并不是操作数所在内存单元的地址,而是操作数所在内存单元的地址所在的内存单元的地址。简单地讲,STA指令中的地址码31是操作数所在内存单元地址的地址。123图6-13STA指令的指令周期(3)取操作数的地址并送往地址寄存器STA指令的第3个CPU周期主要完成从内存单元地址为31的单元中取出操作数地址40,其具体操作如图6-14所示。操作步骤如下:图6-14取操作数的地址并送往地址寄存器①地址寄存器的内容31发送到地址总线;(AR→ABUS)②CPU发出读命令,将选中的地址为31内存单元的内容40读到数据总线上;(W/R=1)③把数据总线上的内容装入地址寄存器AR。于是40进入地址寄存器,替代原来的内容31。(DBUS→AR)(4)累加器AC的内容写入内存单元STA指令的第4个CPU周期主要完成累加器AC的内容写入内存单元。其具体操作如图6-15所示。操作步骤如下:①累加器AC的内容6送给数据缓冲寄存器DR;(AC→DR)②把地址寄存器AR的内容40送到地址总线上;(AR→ABUS)③把数据缓冲寄存器DR的内容6发送到数据总线;(DR→DBUS)④CPU发出写命令,将数据总线上的内容写入到所选的主存单元中,即将数据6写入地124址为40的主存单元。(W/R=0)图6-15累加器AC的内容写入内存单元4、JMP指令周期JMP指令可以是直接寻址,也可以是间接寻址。在本例中,JMP指令采用直接寻址,该指令的指令周期需要两个CPU周期,第一个CPU周期完成取指和译码操作,第二个CPU周期将指令寄存器IR中指令的地址码送往地址寄存器AR和程序计数器PC。JMP指令的指令周期如图6-16所示。图6-16JMP指令的指令周期(1)取指周期\n125JMP指令的第一个CPU周期仍为取指周期,即将当前PC所指的主存单元中的指令“JMP21”(机器码为“140021”)取出并译码,PC的值加1。由于JMP指令的第一个CPU周期与CLA、ADD、STA指令的第一个CPU周期的操作完全相同,所以在此不再重复。(2)指令寄存器IR中的地址码装入地址寄存器AR和程序计数器PC(IRAddr→AR、PC)JMP指令的第二个CPU周期将指令寄存器IR中的地址码(021)装入地址寄存器AR和程序计数器PC(IRAddr→AR、PC)。类似于ADD、STA指令的第二个CPU周期,所不同的是,指令寄存器IR中的地址码(021)不仅装入地址寄存器AR,还要装入程序计数器PC,从而代替了PC原来的内容24,这样,下一条CPU将要执行的指令不是24单元中的指令,而是21单元中的指令,从而改变了程序原来的执行顺序,实现了程序的转移。5、NOP指令周期NOP指令是一条空操作指令,也是非访内指令,此指令的指令周期由两个CPU周期组成,第一个CPU周期完成取指和译码操作,第二个CPU周期用作指令的执行操作。由于NOP指令是一条空操作指令,所以,在第二个CPU周期中不产生任何控制信号。NOP指令的指令周期与CLA指令的指令周期相同,在此不再重复。6.3.2指令周期流程通过分析典型指令的指令周期,对每一条指令的取指过程和执行过程有了较为深刻的印象。为了便于进行控制器的设计,指令周期可以采用类似程序流程图的形式进行描述。指令周期流程主要由方框、棱形框、有向线段和公共操作符~组成。其中,一个方框代表一个CPU周期,表示某些具体的操作;棱形框表示某种判断或测试,不单独占用一个CPU周期;有向线段表示时间的先后顺序;公共操作符~表示一条指令执行结束,转入公操作。由于所有指令的取指令阶段完全相同,并且是指令的第一个CPU周期,因此,取指令可以作为公操作。指令不同只是指令的执行阶段不同,可以根据指令的操作码转向不同指令的执行阶段。我们把CLA、ADD、STA、JMP四条典型指令的指令周期进行归纳,划出了指令周期流程图。如图6-17所示。图6-17指令周期流程图126图6-17中,对于ADD、STA、JMP指令,由于指令的寻址方式不同,可以采用直接寻址,也可以采用间接寻址,因此,指令流程图出现了分支,请读者来分析哪一个分支是直接寻址,哪一个分支是间接寻址。【例6-1】图6-18所示为双总线结构机器的数据通路,IR为指令寄存器,PC为程序计数器(具有自增功能),M为主存(受R/W信号控制),AR为地址寄存器,DR为数据缓冲寄存器,ALU由加、减控制信号决定完成何种操作,控制信号G控制的是一个门电路。另外,线上标注有小圈表示有控制信号,例中yi表示y寄存器的输入控制信号,R1o为寄存器R1的输出控制信号,未标字符的线为直通线,不受控制。\n(1)画出“ADDR0,R2”的指令周期流程图,并列出相应的操作控制信号序列。假设该指令的地址已放入PC中。(2)画出“SUBR1,R3”的指令周期流程图,并列出相应的操作控制信号序列。假设该指令的地址已放入PC中。图6-18双总线结构机器的数据通路解:(1)“ADDR0,R2”指令是一条加法指令,其功能为(R0)+(R2)→R0,根据给定的数据通路,“ADDR0,R2”的指令周期流程如图6-19(a)所示,该图的右侧注明了相应的操作控制信号序列。(2)“SUBR1,R3”指令是一条减法指令,其功能为(R1)-(R3)→R3,其指令周期流程如图6-19(b)所示,该图的右侧注明了相应的操作控制信号序列。图6-19指令周期流程图IRPCARMDRR0R1R2R3XYALUIRiPCiARiR/WDRiR0iR3iXi+-GYiR3oR0oPCoIRoA总线B总线1276.4微程序控制器微程序控制器具有规整性、灵活性、可维护性等一系列优点而被广泛应用。早在1951年,英国剑桥大学的M.V.Wilkes教授提出了微程序设计,微程序设计的实质是用程序设计的思想方法来组织操作控制逻辑,把各条指令的微操作序列编制成微程序,并存放在控制存储器中,执行机器指令时,通过读取并执行相应的微程序来实现这条机器指令的功能。6.4.1基本概念1、微命令和微操作我们可以把组成计算机的各个部分划分为两大类,一类是控制部件,另一类是执行部件。控制器就是控制部件,而运算器、存储器、外围设备相对控制器来讲,就是执行部件,控制部件与执行部件之间的联系依靠的是控制信号线,我们通常把控制部件通过控制信号线向执行部件发出各种控制命令称为微命令,由此可见,微命令是构成控制信号序列的最小单位。而执行部件接受微命令后所进行的操作称为微操作,微操作是执行部件中最基本的操作。微操作可以分为相容性和相斥性两种。所谓相容性的微操作,是指在同时或同一个CPU周期内可以并行执行的微操作。所谓相斥性的微操作,是指不能在同时或不能同一个CPU周期内可以并行执行的微操作。图6-20所示给出了一个简单运算器模型,其中ALU为算术逻辑单元,R1、R2、R3为三\n个寄存器,三个寄存器的内容可以通过多路开关从ALU的X输入端或Y输入端送至ALU,而ALU的输出可以送往任何一个寄存器或同时送往R1、R2、R3三个寄存器。多路开关的每个控制门是一个常闭的开关,它的一个输入端代表来自寄存器的信息,而另一个输入端是控制端,一旦两个输入端都有输入信号,多路开关则处于开的状态,才会产生输出。图中每一个开关门都有相应的微命令来控制,例如,开关门4由编号为4的微命令控制,开关门5由编号为5的微命令控制,如此等等。三个寄存器R1、R2、R3分别由1、2、3微命令控制,以便在ALU运算完毕时,将运算结果打入到某一寄存器。另外,ALU只有+、-和M三种操作。Cy为进位触发器,只有ALU产生进位时该触发器的状态为“1”。图6-20简单运算器模型128由此可见,ALU的操作(+、-、M)在同一个CPU周期中只能选择一种,所以,+、-、M三个微操作是相斥性的微操作。另外,4、6、8三个微操作是相斥性的微操作,5、7、9三个微操作也是相斥性的微操作。微操作1、2、3是可以同时进行的,所以是相容性的微操作。另外,ALU的X输入微操作4、6、8分别与Y输入的微操作5、7、9任意两个微操作都是相容性的微操作。2、微指令和微程序微指令是指在一个CPU周期中能够实现一定操作功能的一组微命令。而微程序则是微指令序列。我们知道一条机器指令的指令周期包含多个CPU周期,根据微指令的概念,一个CPU周期对应一条微指令,因此,一条机器指令的功能是由多条微指令组成的序列来实现的。作为微指令,一方面要形成后继微地址,即执行完某一条微指令后,必须给出下一条微指令的地址,下一条微指令的地址也称为后继微地址,以便当前微指令执行完毕后能正确取出下一条微指令;另一方面要产生一组微命令。因此,微指令的格式应至少包含操作控制字段和顺序控制字段两部分。操作控制字段用来产生微命令,顺序控制字段用来形成后继微地址。某一具体微指令格式如图6-21所示。其微指令长度为23位,包含操作控制字段和顺序控制字段两部分。其中操作控制字段占17位,每一位表示一个微命令。当操作控制字段某一位为“1”时,则表示发出该位相应的微命令;否则,则表示不发出该位相应的微命令。例如,当微指令第一位为“1”时,表示发出LDR′1微命令,运算器执行ALU→R1的微操作。同样,当微指令第10位为“1”时,表示向ALU发出“+”微命令,ALU则执行“+”微操作。图6-21微指令格式微指令的顺序控制字段占6位。其中4位(20~23)用来直接形成后继微地址,第18、19位两位作为判断测试标志。当此两位都为“0”时,表示不进行测试,直接将微指令中第20~23位作为后继微地址;当微指令的第18位或第19位为“1”时,表示要进行P1或P2的判断测试,根据测试结果,需要对微指令中第20~23位的某一位或某几位进行修改,将修改后的地址作为后继微地址。3、机器指令与微指令机器指令与微指令的关系如图6-22所示。(1)机器指令与微指令所处的位置不同\n机器指令在程序中,位于主存储器内,该机器指令的第一个CPU周期完成取指和译码,即将机器指令从主存中取出,并送到指令寄存器IR中,再对IR中的指令操作码进行译码,从而识别出是什么机器指令。而微指令在微程序中,位于控制存储器内,在一个微周期中完成从控制存储器取出微指令,并存放于微指令寄存器μIR,再执行μIR中的微指令。(2)机器指令与微程序的对应关系一条机器指令对应一个微程序,也就是说,一条机器指令是由一个微程序负责解释执行的。129在控制存储器中存在着所有机器指令的微程序,如何实现不同的机器指令转去执行相应的微程序呢?在机器指令的第一个CPU周期完成取指和译码后,由于机器指令不同,其指令的操作码也不同,因此,可以根据指令寄存器IR中的指令操作码去产生该机器指令相应的微程序入口地址。具体而言,可以把机器指令的操作码直接作为该机器指令相应的微程序入口地址,也可以通过映像存储器来实现操作码与微程序入口地址之间的转换。产生出该机器指令相应的微程序入口地址后,将该微程序入口地址送到微地址寄存器μAR,从而实现机器指令正确转移到相应的微程序。(3)公共的取指微指令由于所有机器指令的第一个CPU周期所进行的操作都完全相同,结合微指令的定义可知,一个CPU周期对应一条微指令,因此,所有机器指令相应微程序的第一条微指令完全相同,为了节约控制存储器的存储容量,将微程序的第一条微指令(即取指微指令)设置为公共微指令,任何一个微程序执行完毕后都转到该公共的取指微指令,以完成下一条机器指令的读取操作。图6-22机器指令与微指令的关系6.4.2微程序控制器基本原理1、微程序控制器的组成微程序控制器的组成与结构如图6-23所示。它主要由控制存储器、微指令寄存器和微指令地址形成部件三大部分组成。图6-23微程序控制器的组成与结构(1)控制存储器(CM)控制存储器是用来存放指令系统所对应的全部微程序,它是一种读出时间较快的只读存储器,其容量视指令系统而定,其字长由控制命令的多少、微指令的编码格式以及下址字段130的宽度而定。(2)微指令寄存器(μIR)微指令寄存器是用来存放从控制存储器读出的一条微指令。微指令由操作控制字段和顺序控制字段构成,其中顺序控制字段用来产生将要执行的下一条微指令的地址,操作控制字段则用来产生一组微命令。(3)微指令地址形成部件\n微指令地址形成部件又称微指令地址发生器或后继微地址形成部件,是用来形成将要执行的下一条微指令的地址(简称后继微地址)。一般情况下,下一条微指令的地址由上一条微指令的顺序控制字段直接决定。当微程序出现分支时,将由状态条件的反馈信息去形成转移地址;当取指令公共操作完成后,可以根据指令的操作码去产生微指令入口地址。图6-24仅给出了上述三种后继微地址的形成方式,根据计算机规模不同,还可以有更多的后继微地址形成方式。2、微程序的执行过程微程序的执行过程类似于CPU对程序的执行,一方面要控制微程序中微指令的执行顺序,另一方面要控制执行微指令,其具体过程如下:(1)读取并执行公共的“取指令”微指令从控制存储器中取出一条公共的“取指令”微指令,并送到微指令寄存器μIR。由于这是一条公用的微指令,一般存放在控制存储器的0号或1号地址单元。CPU在执行微指令寄存器μIR中的微指令时,操作控制字段产生相关的微命令,这些微命令实现从主存中读取机器指令并将其送到指令寄存器IR。(2)形成微程序入口地址根据指令寄存器IR中的指令操作码,通过微地址形成线路产生相应的微程序入口地址,并将微程序入口地址送往微地址寄存器μAR。(3)执行微程序根据微地址寄存器μAR中的微地址,取出微程序中第一条微指令并送入微指令寄存器μIR,开始执行μIR中的微指令,操作控制字段产生微命令,顺序控制字段形成后继微地址。该微指令执行结束时,将顺序控制字段所形成的后继微地址再送入微地址寄存器μAR,去读取下一条微指令。如此重复,直至微程序中的最后一条微指令。(4)实现返回执行完一条机器指令对应的一段微程序后,返回0号或1号微地址单元,读取并执行“取指令”微指令。由此可见,微程序控制器的工作过程涉及到两个层面:一个层面是程序员所看到的传统机器级,包括指令、程序、主存储器;另一个层面是设计者所看到的微程序级,包括微指令、微程序、控制存储器(相对程序员是“透明”的)。6.4.3微程序设计微程序设计的关键是如何设计微指令的结构,与微指令结构相关的因素较多,除机器硬件外,还要考虑如何缩短微指令字的长度,如何提高微程序的执行速度,如何有利于对微指令的修改,以便提高微程序设计的灵活性。1、微命令编码微命令编码是指对微指令中的操作控制字段所进行的编码,其编码方法有直接表示法、编码表示法、混合表示法。(1)直接表示法操作控制字段中的每一位代表一个微命令的编码方法称为微命令的直接表示法。直接表示法对微命令不需要译码。其优点是简单、直观,输出可直接用于控制,一条微指令可以定131义并执行多个并行的微命令。微指令的直接表示法如图6-24所示。显然,当微指令中的微命令增多时,会导致微指令字加长,使控制存储器的容量加大。因此,直接表示法只适用于微命令数量不多的CPU。对于微命令较多的CPU而言,常采用编码表示法。\n图6-24微命令直接表示法(2)编码表示法编码表示法把一组相斥性的微命令组成一个字段,然后通过微命令译码器对每一个字段进行译码,译码输出作为微命令。编码表示法的微指令结构如图6-25所示。采用编码表示法,可以用较少的二进制信息位表示较多的微命令。例如,某一个3位的二进制信息字段,经译码后可以表示8个微命令;4位的二进制信息字段,经译码后可以表示16个微命令。与直接表示法相比,编码表示法可使微指令字大大缩短,但由于增加了译码电路,编码表示法比直接表示法的速度要慢一些。图6-25微命令的编码表示法(3)混合表示法混合表示法把直接表示法和编码表示法相混合使用,以便能综合考虑微指令字长、灵活性和执行速度等方面的要求。另外,在微指令中还增加一个常数字段,该字段可作为操作数送入ALU运算,也可作为计数器的初值用来控制微程序循环次数。2、后续微地址的形成方法微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。通常,产生后续微地址的方法有计数器方式、增量方式与断定方式结合、多路转移方式三种。(1)计数器方式这种方式与用程序计数器PC来产生后续指令地址的方法类似。计算机加电后执行的第一条微指令地址(微程序入口)来自专门的硬件电路,控制实现取指令操作,然后由指令操作码产生后续微地址。若是顺序执行微指令,则将现行微地址(在微地址计数器μPC中)132加1产生后续微地址;若遇到转移类微指令,则由μPC与形成转移微地址的逻辑电路组合成后续微地址,例如利用该逻辑电路的输出与μPC低位进行逻辑加,形成后续微地址。这种方式可使微指令的下址字段很短,仅起选择作用。其缺点是微程序转移不灵活,使得微程序在控制存储器中的空间分配较困难。计数器方式的原理如图6-26所示。图6-26计数器方式在图6-26中,μPC兼作控制存储器的地址寄存器,其输入有4个。下址字段仅有两位,其功能是选择3个输入源的一个作为μPC的输入,而微程序入口是由专门的硬件电路产生,不受下址字段控制。计数器方式的基本特点是:微指令的顺序控制字段较短,微地址产生机构简单。但是多路并行转移功能较弱,速度较慢,灵活性较差。(2)增量方式与断定方式的结合在这种方式中,微指令顺序控制字段又分为条件选择字段和转移地址字段两部分,其中条件选择字段用来规定“条件转移”微指令要测试的外部条件;转移地址字段可用作后继微地址,当转移条件满足时,用它作下一个微地址,即将“转移地址”送给微程序计数器μPC;当转移条件不满足时,则使用微程序计数器μPC提供下一条微指令的地址。增量方式与断定方式结合形成后续微地址的原理图如图6-27所示。图6-27增量方式与断定方式结合形成后续微地址的原理图133μPC是微程序计数器,具有计数和并行接受数据的功能;μIR是微指令寄存器。当μIR中的转移条件(条件选择)字段指出一次转移时,微指令“转移地址”字段的内容就被送入\nμPC。“条件选择”字段用来控制一个多路开关,根据外部的状态条件信息,多路开关将所选的某一路数据并行打入μPC中。假设必须测试的两个状态条件变量为V1和V2,故需使用一个2位的条件选择字段S1S0:①当S1S0=00时,微程序不转移。②当S1S0=01时,如果V1=1则转移,否则顺序执行。③当S1S0=10时,如果V2=1则转移,否则顺序执行。④当S1S0=11时,无条件转移。与此对应,多路开关有4个输入X0、X1、X2、X3,其中X0=0,X1=V1,X2=V2,X3=1。因此,当S1S0=i时,它选通多路开关输出Xi。从而控制“转移地址”字段的内容送入或不送入μPC。(3)多路转移方式在执行一条微指令时,可能会遇到从若干个微地址中选择一个作为后续微地址的情况,这种转移方式称为多路转移。例如,微指令在执行时,有时要根据某些硬件状态来决定后续微地址,属于这些状态的可以是根据运算结果所置的标志位、计数器状态、数据通道状态等。一种状态(0或1)可以用来选择两个微地址之一,即两路转移;而两种状态可以用来选择4个微地址之一,即四路选择。微程序设计实践表明,实现两路转移的情况较多,其次是四路转移,而四路以上转移的情况比较少见。两路转移只涉及微地址的一位;四路转移涉及微地址的两位,一般就定在微地址的最后两位,也就是说,当执行转移微指令时,根据条件可转移到4个微地址中的一个,这4个微地址的高位部分相同,仅是最低两位不同。实现多路转移可以减少微指令的长度,对于一般条件转移微指令(相当于两路转移)来说,需要两条微指令来完成上述四路转移的功能。多路转移方式的特点是:能与较短的顺序控制字段配合,实现多路并行转移,灵活性好,速度快,但转移地址逻辑需要用组合逻辑方法实现。3、微指令的格式微指令的格式大体分成两类:水平型微指令和垂直型微指令。(1)水平型微指令水平型微指令是指一次能定义并执行多个并行操作微命令的微指令。其一般格式如下:控制字段条件测试字段下址字段按照控制字段的编码方法不同,水平型微指令可分为直接表示水平型微指令、字段译码水平型微指令和混合表示水平型微指令,这些微指令在介绍微命令表示法时已作叙述,在此不作重复。(2)垂直型微指令微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。其格式类似于机器指令,它有操作码,在一条微指令中只有1~2个微命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构。下面介绍4条垂直型微指令。设微指令字长为16位,微操作码3位。1)寄存器─寄存器传送型微指令其功能是把源寄存器中的数据传送到目标寄存器。15~13位为微操作码,源寄存器和目标寄存器编址各5位,可指定32个寄存器。2)运算控制型微指令15131287320\n000源寄存器编址目的寄存器编址其他134其功能是选择ALU的左、右两个输入源,按ALU字段所指定的运算功能(8种操作)进行处理,并将结果送入暂存器中。左、右输入源编址可指定32种信息源之一。3)访存微指令其功能是将主存中一个单元的信息送入寄存器或者将寄存器的数据送往主存。存储器编址是指按规定的寻址方式进行编址。第2位指定读操作或写操作4)条件转移微指令 其功能是根据测试条件决定是转移到D所指定的微地址单元,还是顺序执行下一条微指令。9位D字段不足以表示一个完整的微地址,但可以用来替代现行μPC的低位地址。测试条件字段有4位,可规定16种测试条件。由此可见,水平型微指令和垂直型微指令各有所长。第一,水平型微指令并行操作能力强,效率高,灵活性强,而垂直型微指令则较差;第二,水平型微指令执行一条指令的时间短,而垂直型微指令执行时间长;第三,水平型微指令编写的微程序较短,而垂直型微指令编写的微程序较长;第四,水平型微指令用户难以掌握,而垂直型微指令与机器指令相似,相对来说,比较容易掌握。6.4.4微程序设计举例我们知道微程序设计的关键是设计微指令的结构,而微指令的结构设计又取决于控制器和运算器的结构。在此我们以图6-20所示的运算器、图6-21所示的微指令格式为例,来具体说明“十进制加法”指令的微程序设计过程。1、十进制加法指令的功能十进制加法指令的功能是用BCD码来完成一位十进制数的加法运算。当两个一位十进制数进行相加运算时,如果和数大于9,图6-28十进制加法指令的微程序流程151312430000D测试条件151312873210000寄存器编址存储器器编址读写其他15131287320000左输入源编址右输入源编址ALU000000010000\n100110000000RD0000Cy=0Cy=1PC→AR→ABUSDBUS→DR→IR,PC+1P1R1+R2→R2R2+R3→R2P2R2-R3→R2135其运算结果是错误的,必须对错误的结果进行加6修正,方可得到正确的结果;如果和数小于或等于9,十进制运算的结果是正确的,无须进行修正。2、十进制加法指令的微程序流程图假设两个一位十进制数a和b已存放在图6-20中的R1和R2寄存器中,数6存放在R3寄存器中。其算法采用先进行a+b+6运算,再判断结果有无进位,若有进位Cy=1,不减6;若无进位Cy=0,减去6。因此,完成十进制加法指令的微程序流程如图6-28所示。3、十进制加法指令的微程序根据图6-28可知,十进制加法指令的微程序由4条微指令组成。第一条微指令是完成取指操作,该微指令所在控制存储器该微指令所在控制存储器的地址为0000,其编码为:00000000000011111100000这条微指令在执行时,一方面操作控制字段产生5个微命令,他们分别是LDAR′、RD′、LDDR′、LDIR′、PC+1。LDAR′执行PC→AR;PC+1执行PC+1→PC;RD′和LDDR′执行M→DR;LDIR′执行DR→IR。假设十进制加法指令的操作码为1000,那么指令寄存器IR中的指令操作码是1000。另一方面,顺序控制字段指明下一条微指令的地址为0000。由于判断字段中P1=1,表示测试的“状态条件”是指令寄存器IR中的指令操作码1000,即用指令操作码1000作为下一条微指令的地址,因此,此微指令的下址0000并不是下一条微指令的真正地址。下一条微指令的真正地址是指令的操作码1000,于是,微地址寄存器μAR的内容修改为1000。第二条微指令是完成a+b运算操作,该微指令的微地址为1000,其编码为:01010010010000000001001根据微地址寄存器μAR的内容1000,取出第二条微指令并执行。执行时,一方面操作控制字段产生4个微命令,他们分别是R1→X、R2→Y、+、LDR2′。于是,运算器完成R1+R2→R2的操作。另一方面,顺序控制字段中判断测试字段P1和P2均为0,表示不进行测试,于是,该微指令的下址字段1001直接作为下一条微指令的地址,并传送到微地址寄存器μAR。\n第三条微指令是完成a+b+6运算操作,该微指令的微地址为1001,其编码为:01000100110000000010000根据微地址寄存器μAR的内容1001,取出第三条微指令并执行。执行时,一方面操作控制字段产生4个微命令,他们分别是R2→X、R3→Y、+、LDR2′。于是,运算器完成R2+R3→R2的操作。另一方面,顺序控制字段中判断测试字段P2为1,表示对P2进行测试,测试的“状态条件”为进位标志Cy,根据进位标志Cy的状态来修改微地址寄存器μAR的最后一位:若Cy=0时,下一条微指令的地址为0001;若Cy=1时,下一条微指令的地址为0000。由此可见,该微指令的下址0000并不是下一条微指令的真正地址。下一条微指令的真正地址是对下址0000的修改。在此假设Cy=0,则要执行的下一条微指令的地址为0001,送到微地址寄存器μAR。第四条微指令是完成a+b-6运算操作,该微指令的微地址为0001,其编码为:01000100100100000000000根据微地址寄存器μAR的内容0001,取出第四条微指令并执行。执行时,一方面操作控制字段产生4个微命令,他们分别是R2→X、R3→Y、-、LDR2′。于是,运算器完成R2-R3→R2的操作。另一方面,顺序控制字段中判断测试字段P1和P2均为0,表示不进行测试,于是,该微指令的下址字段0000直接作为下一条微指令的地址,并传送到微地址寄存器μAR,按该地址取出的微指令为“取指”微指令。如果第三条微指令进行测试时Cy=1,那么,下一条微指令的地址为0000,将不执行第四条微指令,而是直接由第三条微指令就转向“取指”微指令,便开始从内存中取第二条机136器指令,再转去执行该机器指令相应的微程序。【例6-2】设某运算器的结构如图6-29(a)所示,其中ALU为16位算术逻辑单元,SA、SB为16位暂存器,4个通用寄存器由D触发器组成其读写控制功能见表6-2。机器采用串行微程序控制方式,其微指令周期如图6-29(b)所示。其中读ROM是从控制存储器中读出一条微指令的时间,为1μs;ALU做加法运算时间为500ns;m1是读寄存器的时间为500ns;m2是写寄存器的工作脉冲宽度为100ns。表6-2通用寄存器读写控制功能读控制写控制RRA0RA1选择WWA0WA1选择11110001\n1×0101×R0R1R2R3不读出111100011×0101×R0R1R2R3不写入微指令字长为12位,其格式如下:(未考虑顺序控制字段)01234567891011RA0RA1WA0WA1RWLDSALDSBSB→ALUBS→ALUReset~其中RA0RA1:读R0──R3的选择控制WA0WA1:写R0──R3的选择控制R:寄存器读命令W:寄存器写命令LDSA:打入SA的控制信号LDSB:打入SB的控制信号SB→ALU:传送SB的控制信号BS→ALU:传送BS的控制信号并使ALU最低位加1Reset:清暂存器SB为0的信号\n~:一段微程序结束,转入取指令的控制信号图6-2916位的运算器要求用二进制代码写出一下机器指令的微程序:(1)ADDR0,R1;(R0)+(R1)→R1137(2)SUBR2,R3;(R3)—(R2)→R3(3)MOVR2,R3;(R2)→(R3)解:首先根据机器指令的功能,画出三条机器指令的微程序流程图,如图6-30所示。其中未考虑公共的取指周期和顺序控制问题,在每方框的右上角仅用数字标号表示微指令的顺序。其次根据机器指令的微程序流程图,设计微程序,表6-3给出了三条机器指令的微程序见。其中×表示任意设置(0或1均可)。可以看出:ADD和SUB指令的微程序由3条微指令构成,MOV指令的微程序由2条微指令构成。图6-30微程序流程图表6-3三条机器指令的微程序机器指令微程序的二进制代码ADDR0,R11.00××101000002.01××100100003.××0101001001SUBR2,R34.11××101000005.10××100100006.××1101000101MOVR2,R37.10××101000008.××11010010116.4.5微程序控制器设计步骤微程序控制器设计的最主要任务是编写所有机器指令对应的微程序。具体微程序控制器设计步骤如下:1、设计微指令的结构设计微程序结构时,首先分析机器的组成结构,拟定微命令集,找出相容性和相斥性微命令,选择以微指令的执行方式(串行方式还是并行方式),确定微命令的编码方式和字段的划分;其次分析测试条件,以确定后续微地址的形成方法(增量方式、断定方式)。2、画出微程序流程图在分析所有机器指令的功能基础上,合理安排控制存储器中的微程序,画出微程序流程ADDSUBMOVPC→AR→ABUS,PC+1RD,DBUS→DR→IRR3→SAR2→SBSA-SB→R3R0→SA\nR1→SBSA+SB→R1R2→SA,0→SBSA+SB→R3P138图。3、编制微程序根据微指令格式和微程序流程图编写微程序,并对所有微程序进行优化和代码化。4、写控制存储器将指令系统中所有机器指令的微程序进行二进制编码,并写入控制存储器。如果控制存储器采用只读存储器,一旦写入,其内容将不会改变,此控制器为静态微程序控制器;如果控制存储器采用随机存储器,则为动态微程序控制器。6.5组合逻辑控制器组合逻辑控制器也称为硬布线控制器,是早期设计计算机的一种方法,这种方法是把控制部件看作为产生专门固定时序控制信号的逻辑电路,而此逻辑电路以使用最少元件和取得最高操作速度为设计目标,一旦控制部件构成后,除非重新设计和物理上对它重新布线,否则要想增加新的控制功能是不可能的,这种缺陷使得组合逻辑控制器的设计和调试变得非常复杂,而且代价巨大,所以,组合逻辑控制器后来被微程序控制器所取代。但随着新一代计算机和VLSI技术的发展,组合逻辑控制器又得到了重视,如RISC精简指令系统计算机广泛使用这种控制器。组合逻辑控制器由组合逻辑线路、模k时序产生器和1/k译码器等部件组成,其原理如图6-31所示。图6-31组合逻辑控制器原理框图其中,组合逻辑线路的输入信号有:来自指令译码器的输出Im、来自执行部件的反馈信息Bj、来自时序产生器的节拍脉冲信号Tk;组合逻辑线路的输出信号就是微操作控制信号,用来对执行部件进行控制。某一微操作控制信号Cn是指令操码译码器的输出Im、节拍脉冲信号Tk和反馈信息Bj的逻辑函数,即Cn=.(Im,Tk,Bj)。为了说明组合逻辑控制器的工作原理,假设简化的CPU模型为如图6-32所示。指令的执行过程如图6-33所示。其中前3139步为取指令,对所有指令来说是相同的,后3步为执行指令,随指令功能的差异而变化。根据指令ADD、AND、STA、LDA、JMP、JMPZ、COM的功能,我们可以画出指令的流程图,如图6-34所示。图中微操作决定了在CPU中所需的控制信号和控制点。我们假定读主存和写主存的操作在两个单位时间内完成,其他微操作都可以在一个单位时间内执行完毕。由指令流程图可以看出,ADD、AND、STA、LDA指令需要8个单位时间,其中取指周期需要4个单位时间,执行周期需要4个单位时间;而JMP、JMPZ、COM指令只需5个单位时间,4个单位时间用于取指,一个单位时间用于执行。假定一个单位时间用一个节拍脉冲的时序信号来体现,因此需要一个模8计数器。\n显然,根据指令流程图,可以确定在指令周期中各时刻必须激活某一指令的某些操作信号。例如,对引起一次内存读操作的操作信号C3来说,当T2=1,取指令时被激活;而当T6=1,3条指令(LDA、ADD、AND)取操作数时也被激活,此时,指令译码器的LDA、ADD、AND输出为“1”,因此,C3的逻辑表达式为:C3=T2+T6(LDA+ADD+AND)一般来说,控制信号Cn=∑(Ti∑Im)。其中,Im为指令译码器的输出。在要求i95%的PCI-E通道数据占用率。这样的传输受益于增加的传输通道,\n但大多数应用程序如USB或以太网络控制器会把传输内容拆成小的数据包,同时还会强制加上确认信号。这类数据传输由于增加了数据包的解析和强制中断,降低了传输通道的效率。这种效率的降低并非只出现在PCI-E上。3、PCIExpress总线的特点(1)易于布线、减少串扰,多方式连接PCIExpress导线数量比PCI减少近75%,数据不需要同步,在同一系统内能够以不同频率运行,而且能够延伸到系统之外,采用专用线缆可将各种外设直接与系统内的PCIExpress总线连接在一起。这是PCI无法做到的。(2)PCIExpress数据传输速率快每个通道带宽为2.5Gb/s(可提升到5Gb/s),理论上最高连接带宽可达8-10GB/s。(3)兼容PCI和PCI-X(4)其它功能PCIExpress接口标准可以支持不同的信令协议;采用先进电源管理技术,支持热插拔功能;可以对所有的接入设备进行实时监控;采用独特的纠错机制保证整个系统的稳定运行。9.6.2USB总线USB(UniversalSerialBus)称为通用串行总线,是在20世纪90年代中期由Compaq、DEC、IBM、Intel、Microsoft和NEC等多家美国和日本公司共同提出的新一代接口标准总线。1994年,Intel、Digital、IBM、Microsoft、NEC、NorthernTelecom等几家世界著名的计算机和通信公司成立了USB论坛,花了近两年的时间形成了统一的意见,于1995年11月正式制定了USB0.9通用串行总线规范,1997年,真正符合USB技术标准的外设出现了。1999年初在Intel的开发者论坛大会上,与会者介绍了USB2.0规范,该规范的支持者除了原有的Intel、Microsoft和NEC等成员外,还有惠普、朗讯和飞利浦三个新成员。USB2.0向下兼容USB1.1,传输率将达到480Mbps,还支持宽带数字摄像设备及下一代扫描仪、打印机及存储设备。USB总线接口如图9-10所示。214图9-10USB总线接口USB总线是为了适应微机系统应用的日益广泛,需要连接的外部设备不断增加,解决微机端口短缺而产生的。它和IEEE1394同样是一种连接外围设备的机外总线。从性能上看,最初USB总线在很多方面不如IEEE1394,但是却拥有IEEE1394无法比拟的价格优势,在一段时期内,它和IEEE1394总线并存,分别管理低速和高速外设。随后由于廉价的USB总线具有热插拨的魅力,使得USB大量出现在主板上,出现在打印机、扫描仪、摄像头、优盘,甚至是显示器等设备上。USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB接口支持设备的即插即用和热插拔功能。USB使用一个四针的插头作为标准插头,采用菊花链形式可以把所有的外设连接起来。USB接口可用于连接多达127种外设,如鼠标、调制解调器和键盘等。USB自从1996年推出后,已成功替代串口和并口,并成为当今个人电脑和大量智能设备的必配的接口之一。1、USB总线的性能\nUSB是一条串行总线,传统的串行端口是各自独立的,例如,键盘端口只能连接键盘,鼠标器端口只能连接鼠标器,它们相互间并不连通。但在USB总线上,各USB端口是互相关联的,除连接自己的外设外,也同时连接到USB提供的4根连线上,其中2根为信号传输线,2根为电源连接线。但是,同其他总线的工作相似,在某一特定的时间,信号传输线只能与某一特定的外设相连通。也就是说,在同一时间内只能有一台外设获得USB的控制权,以确保各台外设传送的信号互不干扰。区别于传统端口一个端口只能连接一台外设,USB端口连接的外设可以有两类:一类是单个的外设,在USB术语中称为“功能单元”(Function);另一类是“集线器”(Hub),它带有连接其他外设的USB端口,使USB可经过它再连接到其他外设上。由于集线器具有多路转换的功能,所以不论有多少台外设连到集线器上,在同一时刻只有一台外设可以通过集线器与USB相连。采用集线器之后,USB的拓扑结构将呈现树状结构,其连接的外设总台数可以达到127台。2、USB总线的特点特点一,可以热插拔,这就让用户在使用外接设备时,不需要重复“关机将并口或串口电缆接上再开机”这样的动作,而是直接在PC开机时,就可以将USB电缆插上使用;特点二,标准统一,大家常见的是IDE接口的硬盘,串口的鼠标键盘,并口的打印机扫描仪,可是有了USB之后,这些应用外设统统可以用同样的标准与PC连接,这时就有了USB硬盘、USB鼠标、USB打印机,等等;特点三,可接入多达127个设备,目前计算机外设越来越多,PC机内有限的插槽和接口已经不能满足要求,USB缓解了这一矛盾;特点四,携带方便,USB设备大多以“小、轻、薄”见长,对用户来说,同样20G的硬盘,USB硬盘比IDE硬盘要轻一半的重量,在想要随身携带大量数据时,当然USB硬盘会是首要之选了;特点五,可即插即用;特点六,适用于低速外设的连接。3、USB的应用215随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?USB就是基于这个目的产生的。USB是一个使计算机周边设备连接标准化、单一化的接口,其规格是由Intel、NEC、Compaq、DEC、IBM、Microsoft、NorthernTelecom联系制定的。USB1.1标准接口传输速率为12Mbps,但是一个USB设备最多只可以得到6Mbps的传输频宽。因此若要外接光驱,至多能接六倍速光驱,无法再高。而若要即时播放MPEG-1的VCD影片,至少要1.5Mbps的传输频宽,这点USB办得到,但是要完成数据量大四倍的MPEG-2的DVD影片播放,USB可能就很吃力了,若再加上AC-3音频数据,USB设备就\n很难实现即时播放了。不过,并非所有的Windows系统都支持USB。目前,Windows系统中有许多不同的版本,在这些版本中,只有Windows98以上版本的系统对USB的支持较好,而其他的Windows版本并不能完整支持USB。例如Windows95的零售版是不支持USB的,只有后来与PC捆绑销售的Windows95版本才支持USB。目前USB设备虽已被广泛应用,但比较普遍的却是USB1.1接口,它的传输速度仅为12Mbps。举个例子说,当你用USB1.1的扫描仪扫一张大小为40M的图片,需要4分钟之久。这样的速度,让用户觉得非常不方便,如果有好几张图片要扫的话,就得要有很好的耐心来等待了。用户的需求,是促进科技发展的动力,厂商也同样认识到了这个瓶颈。这时,COMPAQ、HewlettPackard、Intel、Lucent、Microsoft、NEC和PHILIPS这7家厂商联合制定了USB2.0接口标准。USB2.0将设备之间的数据传输速度增加到了480Mbps,比USB1.1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB2.0的线路上,而且无需担心数据传输时发生瓶颈效应。所以,如果你用USB2.0的扫描仪,就完全不同了,扫一张40M的图片只需半分钟左右的时间,一眨眼就过去了,效率大大提高。而且,USB2.0可以使用原来USB定义中同样规格的电缆,接头的规格也完全相同,在高速的前提下一样保持了USB1.1的优秀特色,并且,USB2.0的设备不会和USB1.X设备在共同使用的时候发生任何冲突。USB2.0兼容USB1.1,也就是说USB1.1设备可以和USB2.0设备通用,但是这时USB2.0设备只能工作在全速状态下(12Mbit/s)。USB2.0有高速、全速和低速三种工作速度,高速是480Mbit/s,全速是12Mbit/s,低速是1.5Mbit/s。其中全速和低速是为兼容USB1.1而设计的,因此选购USB产品时不能只听商家宣传USB2.0,还要搞清楚是高速、全速还是低速设备。USB总线是一种单向总线,主控制器在PC机上,USB设备不能主动与PC机通信。为解决USB设备互通信问题,有关厂商又开发了USBOTG标准,允许嵌入式系统通过USB接口互相通信,从而甩掉了PC机。随着USB2.0协议的推出,USB总线的应用会更加广泛。USB2.0将设备之间的数据传输速度增加到了480Mbps,比USB1.1标准快40倍左右,速度的提高对于用户的最大好处就是意味着用户可以使用到更高效的外部设备,而且具有多种速度的周边设备都可以被连接到USB2.0的线路上,而且无需担心数据传输时发生瓶颈效应。而且,USB2.0可以使用原来USB定义中同样规格的电缆,接头的规格也完全相同,在高速的前提下一样保持了USB1.1的优秀特色。USB2.0设备在和USB1.X设备共同使用的时候也不会发生任何冲突。3、USB3.0简介216\n英特尔公司(Intel)和业界领先的公司一起携手组建了USB3.0推广组,旨在开发速度超过当今10倍的超高效USB互联技术。该技术是由英特尔,以及惠普(HP)、NEC、NXP半导体以及德州仪器(TexasInstruments)等公司共同开发的,应用领域包括个人计算机、消费及移动类产品的快速同步即时传输。随着数字媒体的日益普及以及传输文件的不断增大——甚至超过25GB,快速同步即时传输已经成为必要的性能需求。USB3.0具有后向兼容标准,并兼具传统USB技术的易用性和即插即用功能。该技术的目标是推出比目前连接水平快10倍以上的产品,采用与有线USB相同的架构。除对USB3.0规格进行优化以实现更低的能耗和更高的协议效率之外,USB3.0的端口和线缆能够实现向后兼容,以及支持未来的光纤传输。从逻辑上说USB3.0将成为下一代最普及的个人电脑有线互联方式,英特尔技术战略师JeffRavencraft说道:“数字时代需要高速的性能和可靠的互联来实现日常生活中庞大数据量的传输,USB3.0可以很好地应对这一挑战,并继续提供用户已习惯并继续期待的USB易用性体验。”关联ISAAGPPCIExpressIEEE1394RS232CUSBPCIEISA217习题9.1判断题(1)总线是专门用于完成数据传送的一组信号线。()(2)无条件式的I/O是按先读状态口,再读数据口的顺序传送数据的。()(3)计算机使用总线结构主要优点是便于实现模块化,同时减少了信息传输线的数目。()(4)在计算机的总线中,地址信息、数据信息和控制信息不能同时出现。()(5)内部总线是指CPU内部连接各逻辑部件的一组数据传输线,它用三态门和多路开关来实现。()(6)USB提供的4根连线中有2根信号线,每一条信号线可以连通一台外设,因此,在某一时刻,可以同时有2台外设获得USB的控制权。()(7)组成总线不仅要有传输信息的传输线,还应有实现总线传输控制的器件,它们是总线缓冲器和总线控制器。()(8)总线的发展是和CPU的发展紧密相连的,CPU的速度提高后,总线的数据传输率如果不随之提高,势必妨碍整机性能的提高。()9.2选择题(1)现代计算机的运算器一般通过总线结构来组织,下述总线结构的运算器中,()的操作速度最快,()的操作速度最慢。A、单总线结构B、双总线结构C、三总线结构D、多总线结构\n(2)把总线分成数据总线、地址总线、控制总线三类是根据()来分的。A、总线所处的位置B、总线传送的内容C、总线的传送方式D、总线的传送方向(3)CPU与I.O设备间传送的信号有()。A、数据信息B、控制信息C、状态信息D、以上三种都是(4)将处理器、内存储及I/O接口连接起来的总线是()。A、片总线B、外总线C、系统总线D、内部总线(5)计算机中地址总线的作用是()。A、用于选择存储单元B、用于选择进行信息传输的设备C、指定存储单元和I/O设备接口电路的选择地址D、用于确定操作对象(6)计算机使用总线结构便于增减外设,同时()。A、减少了信息的传输量B、提高了信息的传输量C、减少了信息传输线的条数D、增加了信息传输线的条数(7)在计算机中将各个主要组成部件连接起来,组成一个可扩充基本系统的总线称之为()。A、外部总线B、内部总线C、局部总线D、系统总线(8)状态信息是通过()总线进行传送的。A、数据B、地址C、控制D、外部(9)下列总线中,属于局部总线的是()。A、ISAB、EISAC、MCAD、PCI(10)为协调计算机系统各部件工作,需有一种器件来提供统一的时钟标准,这个器件是()。A、总线缓冲器B、总线控制器C、时钟发生器D、操作命令产生器9.3填空题(1)在链式查询、计数器定时查询、独立请求三种总线控制判优方式中,响应时间最快的是▁▁▁▁方式;对电路故障最敏感的是▁▁▁▁方式。218(2)在单总线、双总线、三总线三种系统中,从信息流传送效率的角度看,▁▁▁▁的工作效率最低;从吞吐量来看,▁▁▁▁最强。(3)连接在单总线上的设备均以▁▁▁▁或▁▁▁▁的形式申请使用总线。(4)在单总线结构的计算机系统中,每个时刻只能有两个设备进行通信,在这两个设备中,获得总线控制权的设备叫▁▁▁▁,由它指定并与之通信的设备叫▁▁▁▁。(5)标准微机总线中,PC/AT总线是▁▁▁▁位总线,MCA总线是▁▁▁▁位总线,EISA总线是▁▁▁▁位总线,PCI总线是▁▁▁▁位总线。(6)AGP总线不同于通用的PCI局部总线,它是供▁▁▁▁专用的。它在▁▁▁▁与系统内存之间提供了一条直接的访问途径。(7)USB串行接口通过使用▁▁▁▁,可以使一台PC机连接的外部设备数多达▁▁▁▁台。(8)在计算机系统中根据总线所传输的信息内容的不同,总线可分为▁▁▁▁、▁▁▁▁和▁▁▁▁。任何类型计算机的总线都包含有这三种总线。9.4什么叫总线?为什么各种计算机系统中普遍采用总线式结构?9.5总线按照功能分类可分为哪几类,各完成什么功能?9.6总线的结构类型有哪些,都有什么特点?\n219第10章并行处理和互连网络【内容摘要】并行处理(ParallelProcessing)是计算机系统中能同时执行两个或更多个处理机的一种计算方法,是提高系统性能的主要手段,是信息处理的一种有效形式。互连网络已成为并行处理系统的核心组成部分,它对并行处理系统的性能起着决定性的作用。【学习要点】●并行处理概念、基本结构和特点●典型SIMD计算机结构和应用●互连网络的概念和互连函数●静态和动态互连网络●互连网络消息传递机制和死锁10.1并行处理的概念10.1.1并行性研究改进计算机系统结构的一个主要方面是如何开发出并行性。并行性(Parallelism)是指问题中具有可同时进行运算或操作的特性。如在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不同的任务为并行性。开发并行性的目的是为了能予以并行处理,以提高解题效率。并行性有两个含义:一是同时性(Simultaneity),是指两个或多个事件在同一时刻发生在多个资源中;二是并发性(Concurrency),指两个或多个事件在同一时间间隔内发生在多个资源中。并行处理是一种有效的强调开发计算过程中并行事件的信息处理方式,是提高系统性能的主要手段之一。如在运算器中采用串行结构运算,每次进行一位运算,那么完成n位数据的运算要花费n个时间单位,如果采用并行结构,设置一个n位运算器,则用1个时间单位就可完成(理想状态下)。可以看出,在元器件速度相同的条件下,后者的速度几乎是前者的n倍。可见,并行处理能大幅度的提高计算机系统的运行速度。11.1.2并行性的等级和分类从不同的角度看,并行性有不同的类型。1、从计算机系统处理数据的角度从计算机系统处理数据的角度看,并行性等级由低到高,分别是位串字串(串行单处理机,无并行性)、位并字串(传统并行单处理机)、位片串字并、全并行。2、从计算机信息加工的各个步骤和阶段的角度从计算机信息加工的各个步骤和阶段的角度,并行性等级可分为如下4种:(1)存储器操作并行性存储器操作并行性如并行存储器和相连处理机,可采用单体多字,多体交叉存取等方式,在一个存储周期内访问多个字。(2)处理器操作步骤并行处理器操作步骤并行如流水线处理机,指令处理器在执行取指令、分析指令、执行指令等过程中的并行。(3)处理器操作并行处理器操作并行如阵列并行处理机,为支持向量、数组运算、可以通过重复设置处理单元进行。\n(4)指令、任务、作业的并行220这种并行称为高级并行,指令级以上并行是指多个处理机同时对多条指令及有关的数据进行处理。如多指令流多数据流多处理机、分布处理系统和计算机网络等。3、从计算机系统中执行程序的角度从计算机系统中执行程序的角度看,并行性等级由低到高,分别是指令内各微操作之间的并行、多条指令之间的并行、多个任务或进程之间的并行和多个作业或程序之间的并行。4、从系统结构发展的角度从系统结构发展来看,并行性等级由低到高,分别是高性能的单处理机、SIMD并行处理机、多处理机和多计算机系统、非冯·诺依曼计算机。按照Flynn分类法归纳的并行计算机体系结构图谱可如图10-1所示。图10-1并行计算机的Flynn分类图10.1.3开发并行性的途径提高计算机系统的并行性,可通过多种技术途径来实现。通常以时间重叠、资源重复和资源共享为开发并行性的三个主要途径。1、时间重叠(TimeInterleaving)时间重叠是在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度,如指令内部各操作步骤采用重叠流水的工作方式。一条指令的解释分为取指、分析、执行三大步骤,分别在相应的硬件上完成。只要不出现相关,则每过一个△t时间,就可以流出结果,从而加快了程序的执行速度。这种时间重叠技术原则上不需要增加更多的硬件设备就可以提高计算机系统的性能价格比。2、资源重复(ResourceReplication)资源重复是在并行性中引入空间的因素。它是靠重复设置硬件资源来提高可靠性或性能,如通过使用两台或多台完全相同的处理器或计算机完成同样的任务来提高性能。典型的例子是双工系统、相连处理机和阵列处理机等。3、资源共享资源共享是用软件方法让多个用户共用同一套资源,通过提高系统资源的利用率来提高系统的性能和效率。典型的例子是多道程序分时系统、它是利用共享CPU、主存资源以降低系统价格来提高设备利用率的一个实例。例子还包括计算机网络和分布处理系统等。沿时间重叠途径,多个处理机进行流水线构成的多处理机,一般都是非对称型或异构型的;沿资源重复途径,构成的相联处理机和阵列处理机都是对称型或同构型的多处理机;沿资源共享途径发展的多处理机则既可以是同构型的,也可以是异构型的。22110.2并行处理机基本结构并行处理机也称阵列机,是采用资源重复的并行性措施实现。它是指将大量重复设置的多个处理单元PE(ProcessingElement)按一定方式互连成阵列,在统一的控制部件CU(ControlUnit)控制下,对各自所分配的不同数据并行执行同一指令规定的操作,是操作并行的SIMD(单指令流多数据流)计算机。它采用资源重复的措施开发并行性,是以SIMD方式工作的。这里的PE是指不带指令控制部件的算术逻辑运算单元。10.2.1并行处理机的两种典型结构并行处理机通常由一个控制器CU(ControlUnit,CU)、N个处理器单元PE(Processing\nElement,PE)、M个存储模块以及一个互连网络部件(InterConnectionNetwork,ICN)组成。根据其中存储器模块的分布方式,并行处理机可分为两种基本结构:分布式存储器的并行处理机和共享存储器的并行处理机。这两种结构的共同特点是在整个系统中设置多个处理单元,各个处理单元按照一定的连接方式交换信息,在统一的控制部件作用下,各自对分配来的数据并行地完成同一条指令所规定的操作。下面分别对这两种基本结构进行介绍。1、分布式存储器结构并行处理机分布式存储器结构并行处理机具备4个特点:○1包含重复设置的多个同样的处理单元PE,通过数据寻径网络以一定方式互相连接;○2各PE都拥有自己的局部存储器PEM(ProcessingElementMemory),存放被分配的数据并只能被本处理单元直接访问;○3在统一的阵列控制部件作用下,实现并行操作;○4程序和数据通过主机装入控制存储器。由于通过控制部件的是单指令流,所以指令的执行顺序还是和单处理机一样,基本上是串行处理。其结构图如图10-2所示。主机I/O接口I/O设备PEM0PEM1PEMN-1PE0PE1PEN-1互连网络控制部件存储器CU控制数据总线控制控制总线……图10-2分布式存储器的并行处理机结构图这种结构的并行处理机种处理单元的数目和存储体的数目是相同的,每个处理单元仅和自己的存储体之间相连,直接交换数据。在实现时,为了有效地进行高速处理,数据应在各存储体间合理分配,使各处理单元都可以依靠自身存储体中的数据进行运算。各数据单元之间交换数据是经过两条途径相互联系:一条是直接通过互连网络;另外一条是如果在某个存储体中存有各处理单元都需要的公共数据,则可以通过将处理单元局部存储体PEM读入控制单元,然后通过公共数据总线“广播”到全部处理单元中。在处理单元很多的并行处理机中,PE之间的互连网络只能是有限而固定的连接。ILLIAC-IV是这种结构的SIMD机器,它由64个本地存储器的PE组成,PE间通过8×8222环绕连接网格实现互连,因而也称为阵列处理机,其处理速度达每秒150×106次64位浮点加法运算。各种SIMD机器的主要差别在于进行PE之间互相通信的数据寻径网络不同。目\n前的大部分并行处理机是基于分布式存储器模型的系统。2、共享存储器并行处理机共享存储器并行处理机结构有M个存储体构成统一的并行处理机存储器,经过互连网络ICN连接,为全部处理单元PE0~PEn-1所共享,其结构图如图10-3所示。主机CUI/O-CHPE0PE1PEN-1SM0SM1SMN-1互连网络控制……I/O系统存储器控制…图10-3共享存储器的并行处理机结构图为了使各处理单元能同时对向量的各个元素进行并行处理,一般都使存储体的数量M大于或等于处理单元的数量n。同时,在存储体之间合理分配数据,使各处理单元数据能来自不同的存储体,从而最少化受存储器冲突的影响。从图10-3中可以看出,在这种结构中,互连网络是处理单元和存储器之间交换数据的通道。它提供多种连接方式,使每个处理单元之间的数据传送在大多数向量运算不受影响的情况下是非常重要的。同时也可以看到,这种互连网络是复杂的,因此,这种结构在处理单元数量不大的情况下是很理想的。如Burroughs公司和伊利诺斯大学在1979年研制的科学处理机BSP,就属于这种结构,它有16个处理单元,17个存储体,最高的向量运算速度可达50×106次浮点加法运算。11.2.2并行处理机的特点并行处理机利用多个处理单元对向量或数组所包含的各个分量同时进行运算,从而易于获得很高的处理速度。与同样擅长于向量处理的流水线处理机相比,并行处理机有如下特点:1、多处理单元的互连网络连接互连网络是并行处理的最有特色的一个组成部分,它规定了处理单元的连接方式,决定了并行处理能适应的算法类别,对系统整体的各项性能指标产生了重要的影响。2、依靠资源重复并行措施并行处理机获得高速度的主要原因就是使用大量的处理单元对向量所包含的各个分量进行运算,每一个处理单元要负责多种处理功能,相当于向量处理机中的多功能流水线部件,但其效率要比单个的功能流水线低。因此,只有在硬件价格降低和系统结构不断改进,并行处理机才具有较好的性能价格比。3、同时性它的每个处理单元在同一时刻要同等地担负起各种运算功能,相当于向量处理机的多功223能流水线部件那样,但其效率(设备利用率)可能没有多个单功能流水线部件那样高。4、运算速度高主要是靠增大处理单元个数,与依靠缩短时钟周期地向量流水线处理机来说,速度提高\n的潜力要大得多。正像并行处理机的特点描述一样,并行处理机主要是由处理单元代替了向量处理机中的流水线,用设备的重复设置达到高速运算的目的。事实上,SIMD计算机正是属于多处理单元的这一类,下面将重点介绍SIMD计算机的结构与设计。10.3SIMD计算机基本结构SIMD计算机属于多处理机单元范畴,它含一个控制单元,多个处理单元,取指令在控制单元的作用下进行,取出的指令经分析译码后送给个处理器协作完成任务,也就是说指令流是单独的,数据流是多倍的。下面着重以典型SIMD计算机为例介绍其发展进程、结构和设计。10.3.1SIMD计算机模型SIMD计算机的抽象模型可以理解为:在同一个控制部件管理下,有多个处理单元,所以处理单元均收到从控制部件广播来的同一条指令,但操作对象是不同的数据。H.J.Siegel提出了SIMD计算机的操作模型,如图10-4所示。图10-4SIMD计算机的操作模型SIMD计算机的操作模型可用五元组表示:M=(N,C,I,M,R),其字母所代表的含义如下:N为机器的处理单元(PE)数。例如,IlliacIV采用64个PE,连接机(ConnectionMachine)CM-2采用65536个PE。C为由控制部件(CU)直接执行的指令集,包括标量和程序流控制指令。I为由CU广播至所有PE进行并行执行的指令集,它包括算术运算、逻辑运算、数据寻径、屏蔽以及其它由每个活动的PE对它的数据所执行的局部操作。M为屏蔽方案集,其中每种屏蔽将PE集划分为允许操作和禁止操作两种子集。R是数据寻径功能集,说明互连网络中PE间通信所需要的各种设置模式。10.3.2SIMD计算机发展过程IlliacIV是最先采用SIMD计算机结构的计算机。它分成两个分支,一个是为用位片PE制造的SIMD计算机,如GoodyearMPP、AMT/DSP610和TMC/CM-2,CM-5是以SIMD224模式运行的同步MIMD计算机;另外一个是用字宽运算PE的中粒度SIMD计算机,如BSP是16台处理机和17个存储模块同步工作的共享存储SIMD计算机,MasParMP-1是中粒度SIMD计算机。SIMD计算机的发展过程如图10-5所示:图10-5SIMD计算机的发展过程图10.3.3IlliacIV计算机IlliacIV阵列机是世界上最早采用SIMD结构设计的计算机,由美国宝来公司(Burroughs)和伊利诺斯大学合作1965年研制,并与1972年生产。IlliacIV系统的原理总框图如图10-6所示。图10-6IlliacIV的系统结构框图总体由两大部分组成,即IlliacIV阵列和IlliacIV输入输出系统。具体来讲,它是有三种类型处理机联合组成的多机系统:一是专门对付数组运算的处理单元阵列(Processingelementarray);二是阵列控制器(arraycontrolunit),它既是处理单元阵列的控制部分,又可以看作一台相对独立的小型标量处理机;三是一台标准的BurrouthsB6700计算机,担负IlliacIV输入输出系统和操作系统管理功能。\n1、IlliacIV阵列IlliacIV阵列处理器采用分布式存储器结构。每个处理单元配有专用的存储器模块,共由64个处理单元、64个处理单元存储器和存储器逻辑部件所组成。这个阵列的64个处理部件PU0~PU63排列成8×8的方阵,每一个PUi只和其东、西、南、北四个近邻PUi+1(mod64)、PUi-1(mod64)、PUi+8(mod64)和PUi-8(mod64)有直接连接。按照此规则,南北方向上同一列的PU两端相连成一个双向环,东西方向上每一行的东端PU与下一行的西端PU双向相连,最下面一行的东端PU则与最上面一行的西端PU双向相连,从而2258行构成一个闭合螺线形状。因此,IlliacIV的阵列结构又称为闭合螺线阵列。如图10-7所示。这种连接方式即便于一维长向量(最多64个元素)的处理,又便于两维数组运算,从而缩短处理单元之间数据传送的路径距离。在这个阵列中,任意两个单元之间的数据传送步距不超过7步。一般来讲,这种闭合螺线结构的连接方式,有n×n个单元组成的阵列中,任意两个处理单元之间的最短距离不会超过(n-1)步。例如,从PU10到PU45的距离以下列路径为最短:PU10→PU1→PU57→PU56→PU48→PU47→PU46→PU45图10-7IlliacIV各处理单元阵列结构的闭合螺线连接方式处理单元数组处理的运算部分,它可对64位、32位和8位操作数进行多种算术和逻辑操作,包括48位、24位或8位定点运算。处理单元存储器PEM分属每一个处理单元,各有2048×64位的存储容量和不大于350ns的取数时间。64个PEM联合组成阵列存储器,存放数据和指令。PE和PEM之间经过存储器逻辑部件MLU相连,这些部件用于处理机与存储模块接口的逻辑电路,它包含存储器信息寄存器和有关控制逻辑线路,用于实现PEM分别和PE、CU以及I/O之间的信息传送。2、阵列控制器阵列控制器CU实际上是一台小型控制计算机。它除了对阵列的处理单元实行控制以外,如发控制信号、广播公共地址、广播公共数据,还能利用本身的内部资源执行一整套指令,用以完成标量操作,在时间上与各PE的数组操作重叠起来。因此,控制器的功能有以下五个方面:第一,对指令流进行控制和译码,包括执行一整套标量操作指令;第二,向各处理单元发出执行数组操作指令所需的控制信号;第三,产生和向所有处理单元广播公共的地址部分;第四,产生和向所有处理单元广播公共的数据;第五,接收和处理由各PE(如计算出错时)、系统I/O操作以及B6700所产生的陷阱中断信号。IlliacIV阵列控制器CU与处理单元阵列之间的信息联系有以下四条信息通路:(1)CU总线\n处理单元存储器PEM经过CU总线把指令和数据送往阵列控制器,以8个64位字为一信息块。这里指令是指分布存放在阵列存储器中用户程序的指令;而数据可以是处理所需的公共数据,先将它们送到CU,再利用CU的广播功能送到各处理单元。(2)公共数据总线CDB(CommonDataBus)这是64位总线,用作向64个处理单元同时广播公共数据的通路。PU0PU8PU56PU1PU9PU57PU7PU15PU63………226(3)模式位线(modebitline)每一个单元都可以经过模式位线把它的模式寄存器(moderegister)状态送到CU中来,送来的信息中也包括该处理单元的"活动"状态位。只有那些处于"活动"状态的处理单元才执行单指令流所规定的公共操作。(4)指令控制线处理单元微操作控制信号和处理单元存储器地址、读/写控制信号都经过约200根指令控制线由CU送到阵列处理单元PE和存储器逻辑部件MLU中来。3、输入输出系统IlliacIV输入/输出系统由磁盘文件系统DFS(DiskFileSystem)、I/O分系统和B6700处理机组成。磁盘文件系统DFS是两套大容量并行读写磁盘系统及其相应的控制器。I/O分系统又输入输出开关IOS(InputOutputSwitch)、控制描述字控制器CDC(ControlDescriptionWordController)和输入输出缓冲存储器BIOM(BufferofInputandOutputMemory)三个部分组成IOS的功能有二:一是作为名副其实的开关,用以把DFS或可能连上的实时装置转接到阵列存储器,进行大批数据的I/O传送;二是作为DFS和PEM之间的缓冲,以平衡两边不同的数据宽度。CDC的功能是对阵列控制器的I/O请求进行管理。BIOM处在DFS和B6700之间,是为了取得二者之间传送频带的匹配用到的缓冲。B6700管理计算机的基本组成部分是:一般配置一个CPU(另一CPU可选)、32K字内存(最大可扩充至512K字)和经过多路开关控制的一大批外围设备(包括一台容量为1012位的激光外存储器以及ARPA网络接口)。B6700的作用是管理全部系统资源,完成用户程序的编译或汇编,为IlliacIV进行作业调度、存储分配、产生入/出控制描述字送至CDC、处理中断,以及提供操作系统所具备的其它服务等。10.3.4BurroughsBSP计算机BSP(BSP—BurroughsScientificProcessor)是美国Burroughs公司和伊里诺大学合作设计的用于科学计算的并行处理机,于1979年生产。与IlliacIV不同,这台计算机是采用共享\n集中式主存结构的计算机,是共享存储器SIMD结构的典型代表。BSP计算机系统组成如图10-8所示。它由系统管理计算机B7700/B7800和BSP处理机两大部分组成。图10-8BSP科学计算机系统结构图BSP不能够单独工作,而是作为管理机B7700/B7800的后台机工作的。BSP大部分与分布式相同,区别是它的系统的存储器是由K个存储体(M0~Mk-1)集中在一起构成,经过互227连网络ICN为全部N个处理单元(PE0~PEN-1)所共享。这种结构形式中,为使各处理单元对长度为N的向量中的各个元素都能同时并行处理,存储体的体数K通常总是等于或多于处理单元的个数N。为了各处理单元在访问主存时,尽可能避免发生分体冲突,也要求有合适的算法能够将数据按一定规律合理地分配到各个存储体中。与分布式存储器结构另一个不同之处在于互连网络ICN的作用不同。集中式主存的结构形式中,互连网络是用来连接处理单元和存储器分体之间的数据通路的,希望能让各个处理单元可有高速、灵活的方式连到不同的存储体上。因此有的并行处理机系统上将其称为对准网络(AlignmentNetwork)。BSP系统采用了全面并行化操作,即把资源重复和时间重叠两种并行性技术结合起来,有人称为第二代并行处理机。BSP科学处理机系统由系统管理机(又称系统资源机)和科学处理机两大系统构成。前者担负BSP编译,任务调度,数据通讯,外部设备管理等任务;而科学处理机本身又包括控制处理机、文件存储器及并行处理机三大部分。1、BSP处理机的组成BSP处理机可分为4个部分,即并行处理机、控制处理器、文件存储器和对准网络。(1)并行处理机并行处理机包含16个算术单元、由17个存储模块(与16最接近的质数)组成的一个无冲突访问的并行存储器和一套对准网络。并行机中每个处理器以160ns的时钟周期进行向量计算。所有16个算术单元AE对不同的数据组(从并行处理机控制器广播来)进行同一种指令操作,大部分的算术运算能在2个时钟周期(320ns)内完成。进行向量运算的数据是存在17个并行存储器模块中,每个模块的容量可达512千字,17个存储器模块的组织形成了一个无冲突访问存储器,它容许对任意长度以及跳距不是17倍数的向量实现无冲突存取。(2)控制处理器控制处理器是一台用于控制的计算机,其核心是标量处理单元,处理机的时钟频率是1MHz。它除了用以控制并行处理机以外,还提供了与系统管理机相连的接口。标量处理机则处理存储在控制存储器中的全部操作系统和用户程序的指令,即指令/控制存储器。(3)文件存储器文件存储器是一个半导体辅助存储器,是一个高速大容量外存储器,是置于BSP直接控制下的唯一外围设备。BSP的计算任务文件是从系统管理机加载到它上面,然后对这些任务进行排队,由控制处理机取出并加以执行。BSP在运行过程中产生的输出文件和中间结果也都暂存于文件存储器中,由于读写速度较快,可很好的解决处理机和外设之间的带宽瓶颈。(4)对准网络\n对准网络包涵完全交叉开关以及用来实现数据从一个源广播至几个目的地以及当几个源寻找一个目的地址时能分解冲突的硬件。这就需要在算术单元阵列和存储器模块之间具备通用的互连特性,而存储模块和对准网络的组合功能则提供了并行存储器的无冲突访问能力。算术单元也利用输出对准网络来实现一些诸如数据压缩和扩展操作以及快速傅立叶变换算法等专用功能。2、BSP的并行存储器BSP并行存储器又称为质数存储系统,由17个存储模块组成,存储周期为160ns。BSP并行存储器的无冲突访问是它的一个独特的技术性能。其实现的硬件技术包括:质数个存储器端口(BSP并行存储器的存储体数是一个质数17)、存储器端口和AE之间的完全交叉开关(对准网络)、以及特殊的存储器地址生成机构。3、BSP的并行流水技术BSP系统采用了全面的并行性技术,它并不依靠提高时钟频率获得高速,而是依靠并行228性。在BSP中,存储器-存储器型的浮点运算是流水进行的。BSP的流水线组织由5个功能级组成,尤其是并行处理机包括有16个处理单元、17个存储器模块和2套互连网络(亦称对准网络)组合在一起,就形成了一条五级的数据流水线,使连续几条向量指令能在时间上重叠起来执行。其结构示意图如图10-9所示,五级的功能作用依次是:①由17个存储器模块并行读出16个操作数;②经对准网络NW1将16个操作数重新排列成16个处理单元所需要的次序;③将排列好的16个操作送到并行处理单元完成操作;④所得的16个结果经过对准网络NW2重新排列成17个存储器模块所需要的次序;⑤写入存储器。两套对准网络NW1/2的作用分别是在读与写存储器时,使得并行存储器中为保证无冲突访问而错开存放的操作数顺序能够与算术单元并行处理要求的正常顺序一致。整个流水线由统一的指令译码和控制部件进行控制。这种流水线结构是很新颖的,对提高系统处理效率起着很大的作用。图10-9BSP数据流水线结构示意图BSP还有一个高效率的FORTRAN编译程序,具有很强的向量化功能,对程序中隐含的并行性保证有较高识别率。向量程序不但能够处理明显的数组操作,还能处理线性递归,循环内部的条件分支等进程,并产生明显的加速效果。10.3.5CM-2计算机CM-2是ThinkingMachinesCo-operation于1987年推出的ConnectionMachine系列机中的一台高档机,是一台细粒度的SIMD计算机,它由数千个位片PE组成,它的峰值处理速度超过10Gflops,它的系统结构如图10-10所示。所有程序从前端开始执行,当需要并行数据操作时,发送微指令到后端处理阵列。定序器(sequencer)分解这些微指令并且把它们广播给阵列中的所有数据处理器(dataprocessor)。前端机和处理阵列之间有三条交换数据计算结果的通路:广播总线(broadcasting)、全局组合总线(globalcombining)和标量存储器总线(scalarmemorybus),其组成部分介绍如下。\n229图10-10CM-2的系统结构图1、处理阵列CM-2是一台数据并行计算的后端机。处理阵列包含4K到64K个位片数据处理器(或PE),所有数据处理器都由定序器控制。定序器对来自前端机的微指令进行译码,然后把毫微指令广播到阵列中各个处理器。所有处理器可以同时访问它们的存储器,它们以锁步方式执行广播来的指令。处理器之间通过寻径、NEWS网格(NEWSgird)或扫描机构(scanningmechanism)相互交换数据。这些网络也与I/O接口相连。称为数据穹(datavault)的大容量存储器子系统与I/O相连,它可存储多达60G字节的数据。2、寻径器、NEWS网格和扫描机构CM-2处理机间能够快速高效的通信,主要是通过下列技术构造的互联网络来实现。(1)寻径器每个处理器芯片包含一个用于处理器之间数据寻径的专门硬件。把所有处理器芯片上的寻径器结点用线连在一起形成一个布尔n-立方体。在CM-2最大配置时,所有处理器芯片上共有4096个寻径器结点,连成一个12维的超立方体。(2)NEWS网格每个处理器芯片中的16个物理处理器可以排列成8×2,1×16,4×4,4×2×2或2×2×2×2等形式的网格。规定每个物理处理器有64个虚拟处理器。可以想象这64个虚拟处理器在芯片中排列成8×8网格。(3)扫描机构除了通过超立方体寻径器可以动态地重构NEWS网格外,CM-2还有专门的硬件支持对整个NEWS网格的扫描或传播。这些都是很有效的并行操作,在整个阵列中进行快速的数据组合和传播。3、输入输出系统ConnectionMachine不但强调计算的大规模并行性,还强调计算结果的可视化。2到16条高速I/O通道用于数据和/或图象I/O操作。连接到I/O通道的外围设备包括数据穹、CM-HIPPI系统、CM-IOP系统和VME总线接口控制器,如图0-13所示。数据穹(DataVault)是基于磁盘的海量存储系统,用来存放程序文件和大数据库。CM-2已经用于解决几乎所有MPP所面临的具有重大挑战性的应用问题。特别是ConnectionMachine系列已经用于借助相关反馈技术的文档检索、基于记忆的推理,如用在230医疗诊断系统QUACK中摸拟诊断疾病以及处理工作量很大的自然语言等。CM-2的其它应用包括SPICE的VLSI电路分析和布线、计算流体动力学、信号/图象/视觉处理和集成、神经网络模拟和连接模型、动态规划,上下文无关文法分析、射线追踪图以及计算几何等问题。10.4SIMD计算机的应用本节主要结合SIMD计算机的特点给出几种基本的数据处理算法。10.4.1计算模型及有限差分哈辛诺在1986年将物理计算模型分成连续模型和离散模型(粒子模型)。\n连续模型是指所有计算的时间和空间是连续变化的物理量,且这些物理量是一定范围内的平均值。典型的参数如电荷密度、温度和压力等。粒子模型则将世界看成是由离散的粒子组成的,这些物理量反映单个粒子的当前状态,典型的参数如速度、力和动量等。两种模型只是对同一问题的两种不同观察方法而已。连续模型和离散模型的主要区别表现在连续模型符合偏微分方程。按离散形式处理时,方程式中所有变量的变化都是其近邻变量的函数,远程变量没有直接的影响。先通过作用于近邻变量,近邻变量再作用于随后的近邻变量,由此向前非直接地作用于整个媒质,也就是通过局部作用而将作用传送到整个媒质。离散模型(粒子模型)允许粒子受远程粒子的影响。任何粒子在任何时刻都与模型中的其它粒子有关。应用有限差分方法求解连续模型对于并行计算具有很大的吸引力。有限差分方法是求解偏微分方程的一种有效方法,它把一个有规则的网格履盖在整个模型域上,用网格点上变量值写出差分方程组以代替连续模型的偏微分方程来进行计算。作为连续模型,在解决物理问题时,我们考察描述平面域的拉普拉依方程。将这个方程离散化,即在x和y方向上每隔一个相同的距离h取一个样值点,这个微分方程就可以用差分方程的形式表示。下面的就是二阶偏导数表示为差分形式,式中(x,y)为平面直角坐标,h为网格间距。把上述差分方程代入原方程,则可得有限差分计算公式:IlliacIV的阵列结构特别适用于计算这种在网格上定义的有限差分函数。这是因为,根据拉普拉依方程,任一网格点(x,y)上的函数值可由其四周邻近点的函数值计算出来,这一要求正好反映了阵列处理机每一处理单元与其4个近邻连接的性质。实际计算时,应利用张弛法进行。每一网格点上的函数值用求其四邻平均值的方法计算,经多次迭代,逐次逼近其最终的平均值。网格边缘的函数值是已知的,由场域的边界条件决定;而对于内部各点的函数值,开始时可选择为零,然后根据拉普拉依方程多次迭代求U(x,y)值,直至连续二次迭代所求值的差小于规定误差为止(已知迭代过程是收敛的)。IlliacIV在计算时,是把内部网格点分配给各个处理单元的。因此,上述计算过程可以231并行地完成,从而可几十倍地提高处理速度。由于实际问题中所遇到的内部网格点数目往往是很大的,因此需要将其分成许多子网格,然后才能在IlliacIV上求解。10.4.2阵列处理机的几种基本算法1、矩阵加在阵列处理机上,实现矩阵加的算法是最简单的一维数组运算。设A和B是n×n阶矩阵,A、B相加的和矩阵为C,它也是n×n阶矩阵。矩阵加的算法为A+B=C;其中cij=aij+bij2、矩阵乘设A和B是n×n阶矩阵,A、B的乘积矩阵C也是n×n阶矩阵。矩阵乘的传统串行算法为A×B=C;其中其中0≤i≤n-1且0≤j≤n-1。3、累加和累加和并行算法是将N个数的顺序相加过程变为并行相加过程。串行求和的FORTRAN程序如下:C(-1)=0DO10I=0,N\n10C(I)=C(I-1)+A(I)在并行处理机上,采用递归加法,FORTRAN程序如下:DO10I=0,log2N-110A=A+SRL(A,2**I);把A向量逻辑右移2i个PE,只需做log2N次加法。例如,当N=8时,在SISD计算机要用8次加法时间。如果在并行处理机上,采用成对递归相加的算法,则只需log28=3次加法时间就够了。首先,原始数据A(I),0>Teraflops,就是说目前限制并行程序性能的因数主要来自I/O瓶颈,提高I/O性能的方法较之提高CPU速度更能增强并行系统的性能。由于网络技术的发展,通信延迟越来越小,网络访问比本地磁盘访问要快得多。在155Mbits/s的ATM网络上,读取其他结点的内存100MBytes的时间是读取本地磁盘的五分之一。现在的工作站和高档PC机都配有相当多的内存(32Mbytes~64MBytes),整个机群系统的全部内存是一个很大的资源,利用其他结点的空闲内存作为本地结点的虚拟内存和文件缓存,可以节省相当多的访盘时间。据UCBerkeley的实验统计,对需要经常访盘的应用程序,使用这种方式可以比使用本地磁盘快5~10倍。\n除了这几个主要方面的研究之外,还有许多特定应用方面的研究,比如,广播、多播等全局操作的高效实现、DSM并行模型的支持、并行I/O的研究等。5、机群负载平衡技术在并行处理系统中,一个大的任务往往由多个子任务组成,这些子任务被分配到各个处理结点上并行执行,称之为负载。由于由各结点处理机结构不同,处理能力不同,使得各种子任务在其上运行时间和资源占有率不同。当整个系统任务较多时,各结点上的负载可能产生不均衡现象,就会影响整个系统的利用率。这就是负载不平衡问题,这个问题解决好坏直接影响到系统性能,因此它就成为并行处理中的一个重要问题。为了充分利用高度并行的系统资源,提高整个系统的吞吐率,就需要负载平衡技术的支持,负载平衡技术的核心就是调度算法,即将各个任务比较均衡地分布到不同的处理结点并行计算,从而使各结点的利用率达到最大。在机群系统上,负载平衡要解决的问题主要表现为系统资源使用不均和多用户系统资源分配问题。11.3.3提高通信系统的性能通信子系统是并行计算机系统的重要组成部分,它完成系统中各结点之间数据传递的功能,其性能的好坏直接影响到并行计算的加速比和效率。这是因为并行计算时间是由各结点计算时间和结点间数据通信时间两部分组成,如果通信时间所占的比例过大,则必然使得并行计算的加速比下降,整个系统的效率也不会高。并行机群系统是基于高性能工作站或高档微机和局域网(LAN)而发展起来的新系统,它是一个由若干微机或工作站通过普通LAN互联而成的松耦合计算机系统,这与大规模并行计算机(MPP)有较大差别,MPP则通常是采用专用网络以紧耦合方式进行结点间的互联。与MPP相比,机群系统具有可扩展性好、性能/价格比高的特点,但网络带宽通常较低,如,使用广泛的传统以太网的带宽只有10Mb/s,即使是新出现的一些高速网络的带宽也只不过上百Mb/s,另外,局域网LAN所使用的通信协议通常是TCP/IP协议,这种协议处理270开销比较大,影响了网络硬件特性的发挥;而MPP的内部网络带宽通常都在数百Mb/s以上,而且是采用专用的通信协议,如ParagonXP/S的网络带宽可达到1.4Gb/s,其通信协议是NX通信库。可见,机群系统中性能过低的通信系统会影响到整个并行计算效率的提高,因此要大力发展并行机群系统,一个关键的问题是对其通信技术进行深入的研究,以期大幅度地提高网络通信系统的性能。1、影响通信系统性能的因素机群系统下的通信子系统的性能是整个系统的薄弱环节,在介绍提高通信系统性能的方法措施之前,先从网络硬件、通信软件两方面分析影响通信系统性能的主要因素。(1)网络带宽低机群系统使用的网络是普通的局域网,而局域网的带宽通常都比较低,如传统以太网的带宽只有10Mb/s。局域网的带宽之所以低,原因主要是局域网是为长距离的数据通信而设计的,由于通信距离较长,限制了通信速度的提高,因为信号的频率越高,它能够传输的距离也越短。另外一个原因是出于价格上的考虑。为了降低网络系统布线所需的成本,大多数LAN是共享一根信号总线进行数据传输,因此这也在很大程度上影响了网络系统的性能,特别是在网络负载较重时,由于各结点都要抢占信号总线,很容易造成通信阻塞,使得实际通信带宽比其最大带宽要小得多。(2)传统TCP/IP协议的多层次结构带来了很大的处理开销\nTCP/IP协议是面向低速率、高差错和大数据包传输而设计的,它是一个多层次的软件结构,按自底向上的顺序划分,可分为四层:网络接口层、网络层(IP)、传输层(TCP)和应用层。由于协议层次多,在进行数据传输时,数据需要经过多次拷贝才能从应用层传递到网络接口或从网络接口传送到应用层,而多次的拷贝带来了很大的网络延迟时间。另外,在多层协议的实现中,各层还重复实现了很多相同的功能,比如从IP层到传输层都要进行差错控制、从网络接口层到应用层都要进行协议的处理机调度、从IP层到应用层都要进行流量控制、从IP层到应用层都要进行数据包组装和定序的缓冲。这些冗余的功能虽然可确保数据的无差错传送,但确限制了数据及时提交给应用程序处理。可见,多层次的协议结构是造成通信瓶颈的主要原因之一,合并某些层次,删除冗余的处理,设计一种轻型通信协议,是提高通信性能的重要方法。(3)协议复杂的缓冲管理增加了网络延迟网络协议处理包括很多功能,如流量控制、差错控制、出错重发机制、拥塞控制等,而这些功能的实现都与缓冲管理密切相关。缓冲管理的作用是完成数据的分组和组装,缓冲区可看成一种网络资源,这种资源是有限的,对它的管理很重要。不过通常的缓冲管理机制都比较复杂,缓冲管理带来的网络延迟也很大,因此如何简化协议复杂的缓冲管理也是通信技术研究的主要内容。(4)操作系统额外开销不可忽视操作系统提供的系统调用和原语是网络协议实现的底层软件支持。在网络协议实现中涉及到上下文切换、调入/调出页面、启动I/O设备、中断响应等操作系统处理,有时这些开销可能比协议本身的处理开销还大。因此,要提高通信系统的性能,降低网络延迟,应当尽量减少网络协议对主机操作系统的服务请求,最大限度地使通信与计算重叠。2、提高通信系统性能的方法措施(1)采用新型高速网络,提高网络带宽为了提高机群系统的网络带宽,必须采用新型的高速网络来取代10Mb/s以太网。由于多媒体应用、实时网络系统、大规模并行计算等应用对高速网络的需求,推动了网络技术的飞速发展,目前出现了多种新型的高速网络,如快速以太网、ATM、Myrinet。这些新型网络的传输速度是传统以太网的十倍或更高。由于高速网络的运用,使得影响通信系统性能的271瓶颈已从过去的网络硬件转移到网络通信软件上,因为虽然高速网络降低了网络的传输延迟,但并没有减少通信协议的处理开销。由于通信协议处理开销过大,在很大程度上阻碍了高速网实际性能的提高。(2)设计新的通信协议,降低通信延迟为了获得高带宽、低延迟的网络通信,必须对传统的通信协议作较大的修改,以克服传统协议的弊病,使高速网络的优越性能得以充分展现。主要方案有在用户空间实现通信协议、精简通信协议和利用ActiveMessage通信机制。为了减少操作系统的额外开销,一个重要的方法是在用户空间实现一个用户态的协议层,使得此协议层能够旁路操作系统的影响,直接对网络硬件设备进行操作,这样就可减少数据拷贝次数,提高通信效率;把协议实现放在用户空间的另一优点是可以减少操作系统调用的时间开销,而且通讯协议能够与用户的实际应用密切结合,可减少协议不必要的冗余,同时也不有损它的灵活性。不过,把通信协议放在用户空间实现,必须解决好两个问题:一个是多进程复用网络的问题;另一个是在没用核心参与的情况下,如何管理有限网络资源的问题。只有这样,用户态通信协议才能得以有效地实现。前面的分析说明,通信的开销很大程度上是由于协议层次多、数据拷贝频繁引起的,另\n外,通用的网络接口和协议为满足各种用户的需求,增加了很多与数据传输无关的服务,这些服务也带来了额外的开销。而在并行机群系统中,有些功能是不必要的,完全可以进行精简,以降低通信开销。所谓精简,它包括两部分内容:一部分是功能的精简,就是删除不必要和冗余的功能;第二部分是协议层次的精简,合并各层的功能,使得通信协议变为一层,以达到减少数据拷贝次数的目的。比如,在操作系统Solaris2.4中,通信协议由网络驱动程序、数据链路层、IP层、TCP层和Socket接口组成,由于数据链路层DLPI已经提供了不保证数据包无差错传送的基本数据通信功能,因此可以在它基础上实现一个保证数据可靠传送的模块以取代复杂的TCP/IP协议层和Socket接口,这样新的通信协议不论从结构上看,还是从功能上分析,都比原有的协议要简单得多。通信协议的用户态实现以及协议的精简这两种方法都是针对传统通信协议在实现方法上所做的改进,而ActiveMessage则是一种全新的通信机制,能够更为有效地提高通信系统的性能。11.3.4几种典型系统目前国内外许多科研机构都在对机群系统下的通信技术进行深入的研究,如UCB(UniversityofCalifornia,Berkeley)提出的NOW计划,Cornell大学研制的U-Net系统,清华大学提出的精简通信协议RCP等,如表11-1所示列举了在机群系统中实现的几种典型的通信子系统。表11-1典型通信机群子系统系统名称网络类型实现技术往返延迟时间(ms)峰值宽度(Mb/s)RCP(清华大学)10MbpsEthernet精简通信协议950(TCP为1438)8.98(TCP为8.92)FMP(清华大学)1.28GbpsMyrinet快速消息传递24.8(TCP为220)360(TCP为252)Fastocket(UCB)640MbpsMyrinet精简通信协议8096FM(UIUC)640MbpsMyrinetActiveMessage50130AM(UCB)640MbpsMyrinetActiveMessage31.5152U-Net(Cornell)155MbpsATMActiveMessage65(TCP为1285)120(TCP为80)HPAM(UCB)100MbpsFDDIActiveMessage29(TCP为2000)96(TCP为43)这些系统从实现技术上看,可以分成两类:一类是采用精简通信协议的方法;另一类是使用ActiveMessage通信机制。对比这两类系统的性能可知,采用ActiveMessage通信机制272实现的系统性能比用精简通信协议实现的系统一般来说要好一些。关联CacheI/OMPPSMPCM-5SGIOrigin2000\n273习题11.1解释下列概念机群系统共享存储多处理机监听协议基于目录的协议Cache一致性MPPSMPS2MPUMANUMACOMA11.2试比较多处理机系统与并行处理机系统在结构、工作方式及其应用范围方面的差同点。11.3共享存储器的多处理机系统有哪几种结构形式?画出它们的结构框图,并说明每种结构的主要特点。11.4多处理机系统为什么会出现Cache不一致的问题?两种解决不一致问题的方法各用在什么场合?11.5简要说明监听协议如何保证Cache的一致性。11.6比较集中共享与分布式存储器系统在结构上的特点,并说明它们各自的优缺点及适用场合。11.7简述MPP和SMP之间的区别。11.8什么是机群系统?发展机群系统的关键技术是什么?11.9提高机群系统的通信性能的途径有哪些?为什么要精简通信协议?11.10以Origin2000为例,说明为什么分布式共享存储器系统有很好的可扩展性?参考文献1.AndrewS.Tanenbaum著,刘卫东,徐恪译.结构化计算机组成原理.北京:机械工业出版社,20012.GaryB.Shell,ThomasJ.Cashman,MistyE.Vermaat.DiscoveringComputers2004,AGatewaytoInformation.THOMSONCourseTechnology,20033.白中英.计算机组成原理(第三版)北京:科学出版社,20014.张功萱,顾一禾等.计算机组成原理.北京:清华大学出版社,20055.蒋本珊.计算机组成原理.北京:清华大学出版社,20036.张五一,张道光.微型计算机原理与接口技术.郑州:河南科学技术出版社,20067.贾金玲.微型计算机原理与接口技术.重庆:重庆大学出版社,20018.王爱英.计算机组成与结构(第三版).北京:清华大学出版社,20009.郑玮民,汤志忠.计算机体系结构(第二版).北京:清华大学出版社,199810.马礼.计算机组成原理与系统结构.北京:人民邮电出版社,200411.孙强南,孙昱东.计算机系统结构.北京:科学出版社,200012.Hennessy,J.L.等著,白跃彬译.计算机系统结构-量化研究方法(第四版).北京:电子工业出版社,200713.张钧良.计算机外围设备.北京:清华大学出版社,2005

相关文档