1、3、了解提高访存速度的各种技术。本章难点:1、SRAM、DRAM基本单元的读/写原理,扩展技术。 2、Cache和虚拟存储器各种组织中的地址映象、地址变换、多级页表和TLB的理解,以及分析和相关的计算。第4章 指令系统1. 理解指令的基本、定长与扩展操作码格式2. 掌握指令寻址方式的基本概念、常见寻址方式及其有效地址的计算3. 了解CISC和RISC的基本概念指令是指示计算机执行某项运算或处理功能的命令,一台计算机支持(或称使用)的全部指令构成这台计算机的指令系统。设计一套好的指令系统无论对计算机的厂家和还是用户都是十分重要的事情,它与计算机系统的运行性能、硬件结构的复杂程度和制作成本、使用的
2、方便性等密切相关,是设计一台计算机的起始点和基本依据。指令是指示计算机执行某项运算或处理功能的命令,是用户使用计算机与计算机本身运行的最小功能单位。早期的计算机,从简化计算机硬件结构、降低成本考虑,指令系统都比较简单,条数少、运算功能弱,能处理的数据只是定点小数,使用相当困难。到了20世纪六、七十年代,随着集成电路和超大规模集成电路的出现与发展,计算机硬件成本直线下降,相应的软件成本所占比例迅速增加,计算机的指令系统日渐变得复杂和完备,指令条数多达三、五百条,寻址方式也多达十几种,能直接处理的数据类型更多,构成了复杂指令系统的计算机(CISC)。在1975年前后,人们又发现,一味追求指令系统的
3、复杂和完备程度,也不是提高计算机性能的唯一途径,在CISC计算机中,有80%的功能更强、实现起来更为复杂的指令却较少被使用,在程序运行的过程中只占到20%的时间,有80%的程序运行时间使用的是另外20%的功能简单、实现容易的指令。据此提出了简化指令系统的计算机(RISC)的概念并予以实现,只选用几种简单的寻址方式和最常用的几十条指令,充分考虑了超大规模集成电路设计、制造中的有关问题,吸收当前软件研究的各项成果,从硬、软件结合的角度解决了许多矛盾,设计制造出运行性能更高的计算机系统。要确定一台计算机的指令系统并评价其优劣,通常应从如下4个方面考虑:(1) 指令系统的完备性,常用指令齐全,编程方便
4、;(2) 指令系统的高效性,程序占内存空间少,运行速度快;(3) 指令系统的规整性,指令和数据使用规则统一简单,易学易记;(4) 指令系统的兼容性,同一系列的低档计算机的程序能在新的高档机上直接运行。要完全同时满足上述标准是困难的,但它可以指导我们设计出更加合理的指令系统。设计指令系统的核心问题是选定指令的功能和格式。指令的格式与计算机的字长、期望的存储器容量和读写方式、支持的数据类型、计算机硬件结构的复杂程度和追求的运算性能等有关。本章内容相对简单,也没有太多答题技巧。第5章 中央处理器计算机的CPU由运算器和控制器两部分组成,是计算机5个功能部件中的两个核心部件。运算器主要完成对数据的运算
5、处理功能,有处理整型数据的定点运算器和处理浮点型数据的浮点运算器两种类型;控制器用于控制计算机各部件协同运行,即控制计算机硬件系统自动、连续地执行指令。控制器有硬连线(组合逻辑)控制器和微程序控制器两种类型。计算机的功能是执行程序,程序是用于完成某种运算处理功能的一个指令代码序列,指令是计算机能够完成的、用户可能使用的最小的功能单位。每一条指令的功能通常要经过几个步骤来才能完成,是在取指、译码、执行这样3个阶段的循环中完成的。从如何安排每一条指令的指行步骤来看,有对全部指令选用相同执行步骤的单一指令周期的方案,和对功能繁简程度不同的指令选用不同执行步骤的多种指令周期的两种方案。从如何对待程序中
6、相邻指令的执行过程来看,有串行顺序执行每一条指令(即在前一条指令结束之后才启动下一条指令)的方案,有每个执行步骤启动一条指令的并行执行几条指令(即指令流水线技术)的方案,有每个执行步骤都可以同时启动几条指令的并行执行(超标量、超流水线技术)方案的三种情况。上述各种不同方案对计算机系统的结构和CPU的组成都有直接影响。本章将主要针对这后一点进行必要说明。对计算机整机系统的认识与理解深度往往比较多地体现在对CPU的组成与运行原理的理解的全面和准确程度,其难度既不同于数学中的公式推导或定理证明之类的解题思路那么难以想到,也不同于物理学中高深理论那么难以理解。对于初学者或涉足不深的人员,拆开来看计算机
7、系统中的许多问题的某一个侧面、某一个具体问题的解决思路都不会感到太难,难就难在形不成计算机系统一个整体概貌,难以建立起信息在计算机各部件之间流动的时间、空间关系,而CPU系统恰恰涉及到计算机系统的整体组成和各部件的连接关系,解决的就是如何控制各部件协同运行,保证信息(指令、数据、控制信号)在系统中的恰当合理的流动,即正确地实现每一条指令的功能。本章内容属于课程中比较难掌握的部分,需要讲解得细致一些。请读者注意,脱离具体实际例子来泛泛地讲所谓原理是不易理解、难以记忆的,但任何实际例子都只是计算机实现中的一个特例,只是作为理解原理的一个认知过程来给出的,掌握原理知识是根本任务,切不要迷失方向,不要
8、纠缠于特例中的一些具体设计和实现方案等细节问题。CPU基本系统的特例选自MIPS计算机,其规范程度高,实现简单,可以很好地体现相关的基本原理。在特例的基础上,还会讨论到与这个特例不同的其他一些设计与实现技术,把通用基本原理的知识面展现得更加完整一些。1. 基本知识与基本理论 预备性知识:数据的表示和运算方法,指令的格式、功能,寻址方式。清楚算术逻辑运算单元ALU的具体功能和它的线路实现原理; 理解计算机硬件的5个功能部件各自的功能及其相互连接关系,清楚信息在各部件之间传送的时间和空间关系。 理解运算器部件的组成和运行原理,运算器部件在整机系统中的作用,与其他部件的物理连接关系和信息传送通路。以
9、理解定点运算器部件的组成和运行原理为基本要求。 理解寄存器组的构成和使用方法,了解通用寄存器的数量对计算机系统性能的影响。掌握数据在运算器中实现运算和处理的过程,了解标志位(C、Z、V、S)的产生、保存和使用。 掌握控制器部件的组成和运行原理,控制器部件在整机系统中的作用,与其他部件的物理连接关系和信息传送路径。 准确理解程序计数器PC和指令寄存器IR的功能,它们与其他部件的信息传送关系。 理解硬连线控制器和微程序控制器在组成和运行原理两个方面的相同和差异之处,能通过对比的方式加深对控制器部件的理解深度。 在硬连线控制器中,清楚节拍发生器的功能和运行原理。控制信号产生电路的设计原理和实现方案。
10、 在微程序控制器中,了解下一条微指令地址的可能方式和实现思路。 在微程序控制器中,清楚微指令的格式和编码方式。 在微程序控制器中,控制存储器和微指令寄存器的作用与实现方案。 指令流水线的概念、表示、分类与性能指标。 指令流水线中的3种相关问题及其解决思路。 超标量和超级流水线的概念。2. 基本技能与实践 会设计很简单的定点运算器部件并原理性给出需要控制器提供给它的控制信号。 对硬连线控制器的组成和设计过程有比较正确的认识,会用有限状态机理论设计节拍发生器。 正确理解指令的指行步骤,理解步骤之间的次序关系,会原理上划分简单常用指令的指行步骤。 了解从指令中的形式地址得到内存储器有效地址的实现方案
11、及其在计算机中的实现。 对微程序控制器的组成和设计过程有比较正确的认识,会对微指令下地址的方案进行分析。 可以对指令不同的执行方式进行原理上的性能分析。第六章 总线 掌握总线仲裁、操作和定时方式,能对具体问题作分析和带宽等计算; 了解总线的基本概念、分类、组成及性能指标; 了解微机总线的常用标准和典型的性能参数。在于总线的仲裁方式和定时方式第七章 输入输出(I/O)系统 理解I/O系统的3部分内容及其内存联系; 掌握CPU与外设的信息交换及其控制方式;理解常用外设的基本工作原理;理解中断、DMA的基本概念及其工作原理;了解I/O接口的功能及编址方法;中断、DMA的工作原理,I/O系统中有关逻辑
12、电路的分析。 重点知识和概念精讲1.1 计算机的产生、发展与应用1. 硬件的发展自从1946年诞生人类第一台数字电子计算机ENIAC以来,即从1946年直至现在,构成计算机硬件的主要器件从电子管发展成晶体管、中小规模集成电路、大规模集成电路直至超大规模集成电路,使计算机从第一代发展到四代,直至现在正研制的新一代计算机,它的速度从40 000次/秒发展到100 000 000次/秒。微处理机的字长从4位的4004发展到8位的8080直至目前64位的Pentium 。根据摩尔定律集成电路容量大体上每18个月翻一番,可能今后的10年仍然会如此。2. 软件的发展计算机系统的发展与软件技术的兴起和发展也
13、是密切相关的。计算机语言的发展历经了面向机器的机器语言和汇编语言、面向问题的高级语言;高级语言的发展也从科学计算和工程计算的FORTRAN、结构化程序设计PASCAL到面向对象的C语言和适应网络环境的Java语言;与此同时,直接影响计算机系统性能提升的各种系统软件,也有了长足的发展,特别是微机的操作系统,从DOS发展到目前的窗口与网络操作系统。3. 计算机的应用计算机系统的发展实际上与计算机的应用是互相促进的,计算机的应用从早期的科学计算、数据处理到工业控制、实时控制,直至目前的网络技术(电子商务、网络教育)、和多媒体技术与人工智能方面等等诸多的应用。随着社会需求和微电子技术的不断发展,计算机
14、的系统结构仍在继续发展,其发展趋势是:从体积上向巨型化和微小型化发展;从处理与应用上向并行处理、网络化、多媒体、智能化等方向发展;计算机的体系结构等方面可能有发展或重大突破。1.2 计算机的分类 按信号类型分为模拟计算机和数字计算机;按规模分为:嵌入式,单片机,微型机,小型机,中型机,大型机和巨型机;按发展历程分为(世界上第一台计算机诞生的时间1946年和名称ENIAC):电子管,晶体管,集成电路,大规模、超大规模集成电路4代计算机;按指令和数据流分为:(1)单指令流、单数据流系统SISD(传统冯诺依曼体系结构),(2)单指令流、多数据流系统SIMD(阵列处理机和向量处理机系统),(3)多指令
15、流、单数据流系统MISI(?),(4)多指令流、多数据流系统MIMD(多处理机和多计算机系统)。1.3 计算机系统的层次结构计算机硬件的基本组成1. 冯诺依曼体系结构计算机,存储程序的计算机,其特点是:使用电子电路实现计算机的主要功能,完成高速、自动的运行过程,使用二进制代码,既表示数据又表示指令,运行的程序和数据保存在存储器中,按地址顺序存放,通过地址完成读写在早期是以运算器为中心来组织的,指令串行执行,是典型的单指令流单数据流的系统。2. 硬件组成的5个功能部件:计算机硬件的5个功能部件奠定了至今仍在沿用的计算机的基本结构,但有了许多改进和完善。(1)运算器:完成数据的暂存、变换、算术和逻
16、辑运算功能,(2)控制器:完成对计算机各部件协同运行的指挥控制,即保证指令按预定的次序执行,保障每一条指令按规定的执行步骤正确执行,还要处理各项紧急事件。(3)存储器:主存和辅存,主存存储正在运行的程序和相关数据,辅存保存程序和数据文档;(4)输入设备:用于向计算机送入用户操作命令、程序和数据;(5)输出设备:用于送出计算机的运行结果等内容,计算机的5个功能部件通过数据总线、地址总线、控制总线彼此连接在一起,实现信息通讯,3种总线分别用于传送数据(指令)信息,主存和入出设备接口的地址信息,主存和入出设备等的操作与控制信息。1.4 计算机软件的分类1. 分类(1) 系统软件用于管理整个计算机系统
17、语言处理程序:有操作系统;服务性程序;数据库管理系统;网络软件。(2)应用软件:指按任务需要编制成的各种程序。2. 三个级别的语言(1)机器语言机器语言指的是一台计算机的指令系统,它可以被用来编写程序,构成编写程序的一种语言,又被称为二进制代码语言。(2)汇编语言汇编语言大体上是对计算机机器语言的符号化处理的结果,再增加一些为方便程序设计而实现的扩展功能。(3)高级语言高级语言又称算法语言(algorithm language),它的实现思路,不再是过分地“靠拢”计算机硬件的指令系统,而是着重面向解决实际问题所用的算法。1.5 计算机系统的层次结构完整的计算机系统由硬件(hardware)和软
18、件(software)两类资源组成。计算机的硬件系统是计算机系统中的物理设备,是一种高度复杂的、由多种电子线路、精密机械装置等构成的、能自动并且高速地完成数据计算的装置或者工具。计算机的软件系统是计算机系统中的程序和相关数据,包括完成计算机资源管理、方便用户使用的系统软件(厂家提供),和完成用户对数据的预期处理功能的应用软件(厂家提供)与用户软件(用户设计并自己使用)两大部分。计算机的硬、软件,二者相互依存,分工互动,缺一不可。硬件是计算机系统中保存与运行软件程序的物质基础,软件则是指挥硬件完成预期功能的智力部分,正如一个健全和健康的人一样,必须同时具备物质性的肉体和精神性的智力与思维。计算机
19、硬件和软件系统的组成关系可以从如图1.1所示的六个层次来进一步深入认识。图中最下面的2层属于硬件部分,最上面的3层属于软件部分,而中间的指令系统层连接了硬件和软件两部分,与两部分都有密切关系。构成计算机系统的最底层即第0层,是数字逻辑层。这说明实现计算机硬件的最重要的物质材料是电子线路,是能够直接处理离散的数字信号的数字逻辑电路。数字电路和逻辑设计是学习计算机组成原理时要用到的预备性知识。图1.1 计算机系统层次结构第1层是微体系结构(micro architecture)层,也可以称其为计算机裸机。计算机的核心功能是执行程序,程序是按一定规则和顺序组织起来的指令序列。这一层体现的是,为了执行
20、指令,需要在计算机中设置哪些功能部件(例如:存储、运算、输入和输出、接口和总线等部件,当然还有更复杂一点的是控制器部件),每个部件又如何具体组成和怎样运行,这些部件如何实现相互连接并协同工作等方面的知识和技术。通常,计算机硬件系统由运算器部件(数据通路)、控制器部件、存储器部件、输入设备、输出设备这5部分组成。第2层是指令系统(instruction set)层,它介于硬件和软件之间。这涉及到需要确定使用哪些指令,指令能够处理的数据类型和对其运算所用的算法,每一条指令的格式和完成的功能,如何指出想要对其执行读操作或者写操作的存储器的一个存储单元,如何指出想要执行输入或者输出操作的一个外围设备,
21、对哪一个或二个数据进行运算,执行哪一种运算、如何保存计算结果等。指令系统是计算机硬件系统设计、实现的最基本和最重要的依据,与计算机硬件实现的复杂程度、设计程序的难易程度、程序占用硬件资源的多少、程序运行的效率等都直接相关。计算机是由人指挥控制的,供人来使用的。第3层是操作系统(operating system)层。它主要分担计算机系统中的资源管理与分配,也向使用者和程序设计人员提供简单、方便、高效的服务。一套计算机系统,包含了大量的、高价的、管理和使用相当复杂的硬件资源和软件资源,不仅一般水平的使用人员,就是水平很高的专业人员都难以直接控制和操作,还是把资源管理和调度功能留给计算机系统本身来完
22、成更可靠,这些功能是由操作系统承担的。操作系统的存在,又为使用计算机的用户提供了许多支持,与程序设计语言相结合,使得程序设计更简化,建立用户的应用程序和操作计算机更方便。第4层是汇编语言(assembly language)层。与机器语言相比,汇编语言至少有2大优点。首先实现用英文单词或其缩写形式替代二进制的指令代码,更容易为人们记忆和理解;其次是可以选用含义明确的英文单词来表示程序中用到的数据(常量和变量),并且避免程序设计人员亲自花费精力为这些数据分配存储单元。如果在此基础上,还可以在支持程序的不同结构特性(如循环和重复执行等结构),子程序所用形式参数替换为真实参数等方面提供必要的支持。汇
23、编语言的程序必须经过一个叫做汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上予以执行。第5层是高级语言层,高级语言又称算法语言(algorithm language),它的实现思路,不再是过分地“靠拢”计算机硬件的指令系统,而是着重面向解决实际问题所用的算法,更多的是为方便程序设计人员写出自己解决问题的处理方案和解题过程的程序。目前常用的高级语言有BASIC、C、C+、,PASCAL、JAVA、PROLOG等多种。用这些语言设计出来的程序,通常需要经过一个叫做编译程序的软件编译成机器语言程序,或者首先编译成汇编程序后,再经过汇编操作后得到机器语言程序,才能在计算
24、机的硬件系统上予以执行;也可以由一个叫做解释执行程序的软件,逐条取来相应高级语言程序的每个语句并直接控制其完成执行过程,而不是把整个程序编译为机器语言程序之后再交给硬件系统加以执行,解释执行程序的最大缺点是运行效率比很低。高级语言不属于计算机组成课程的内容。在高级语言层之上,还可以有应用层,由解决实际问题的处理程序组成,例如文字处理软件,数据库软件,网络软件,多媒体信息处理软件,办公自动化软件等。计算机是用于解决各种应用问题的系统,为有应用而存在,为处理各种应用问题而体现出它的性能和价值。上述可知,计算机系统的6层结构在不同层次之间的关系表现为:(1)上面的一层是建立在下一层的基础上实现出来的
25、,实现的功能更强大。也就是说,上一层较下一层更接近人们解决问题的思维方式和处理问题的具体过程,更便于使用,而且使用这一层提供的功能时,不必关心下一层的实现细节。(2)下面一层是实现上一层的基础,更接近计算机硬件实现的细节,实现的功能相对简单,人们使用这些功能更感到困难。在实现这一层的功能时,可能尚无法了解其上一层的最终目标和将要解决的问题,也不必理解其更下一层实现中的有关细节问题,只要使用下一层所提供出来的功能来完成本层次的功能处理即可。(3)采用这种分层次的方法来分析和解决某些问题,有利于简化处理问题的难度,在某一段时间,在处理某一层中的问题时,只需集中精力解决当前最需要关心的核心问题即可,
26、而不必牵扯各上下层中的其他问题。例如,在用高级语言设计程序时,无需深入了解汇编及其各低层内容。在大部分的教材中,人们通常把没有配备软件的纯硬件系统成为“裸机”,这是计算机系统的根基或称“内核”,它的设计目标更多地集中到有利于提供性能又方便硬件实现和降低成本,因此提供的功能相对较弱,只能执行由机器语言构成的程序,非常难以使用。为此,人们期望能开发出功能更强、更接近人的思维方式和使用习惯的语言,这是通过在裸机上配备适当的软件来完成的。每加一层软件就构成一个新的“虚拟计算机”,功能更强大,使用也更加方便。例如,可以把计算机系统的一到五层分别称为L0裸机、L1虚拟机(支持机器语言)、L2虚拟机(增加了
27、操作系统)、L3虚拟机(增加了汇编语言)、L4虚拟机(增加了高级语言)。1.6 计算机的工作过程 使用计算机处理一个实际问题的过程(1)建立数学模型,找出反映待处理问题规律的数学模型(2)找出计算方法,选择实现模型计算的具体算法(3)编写计算机程序,选用合适的计算机语言编写实现算法的程序(4)调试运行程序,调试写好的程序,调试正确后则运行这个程序(5)输出运算结果,把程序的运行结果输出出来 计算机硬件的工作过程如果仅从得到计算机机器语言的程序之后看(1)把程序和数据装入到主存储器中(2)从程序的起始地址运行程序;(3)用程序首地址从存储器中取出第1条指令,经过译码、执行步骤等控制计算机各功能部
28、件协同运行,完成这条指令功能,并计算出下一条指令的地址;(4)用新得到的指令地址继续读出第2条指令并执行之,直到程序结束为止;每一条指令都是在取指、译码和执行的循环过程中完成的。1.7 计算机系统性能指标这里只是从整机的角度,给出计算机系统的某些技术与性能指标,突出几个重要概念和基本术语,各个部件的更具体的指标安排到后续的章节去介绍。(1) 计算机字长从物理上容易实现和数据运算规则简单考虑,现代的计算机普遍使用二进制,即每一位(一个bit)上的数值只有0和1两个值,相邻数位之间采用“逢二进一”的规则处理,用从右到左依次排列起来的一串二进制的数表示不同的数值和信息。在计算机系统内部,通常选用多少
29、个二进制位来表示一个数据或一条指令是一个关键技术指标,例如16、32或者64位,这个位数被称为计算机字长。通常是2、4、8个Byte(Byte,由8个二进制位组成)。(2) CPU速度衡量CPU速度,通常有两种方式。第一种方式使用CPU主频,即CPU系统使用的时钟脉冲的频率(每一秒钟提供的时钟脉冲的个数称为赫兹Hz,106Hz:MHz,109Hz:GHz)来表示,例如500MHz。对同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快,但对不同厂家、不同系列的计算机系统,只用CPU主频来说明其运行速度就未必准确。第二种方式使用CPU每一秒钟能执行的指令条数,单位是MIPS(millio
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1