计算机的基本概念.doc_第1页
计算机的基本概念.doc_第2页
计算机的基本概念.doc_第3页
计算机的基本概念.doc_第4页
计算机的基本概念.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9第1章 绪论第1章 绪 论1.1 计算机的基本概念 从第一台通用电子计算机的问世(1946年)到现在已经过去半个多世纪了。这半个多世纪以来,计算机对人类社会产生了深刻的影响,并逐渐改变了人们的生活方式。随着计算机的日益普及和广泛应用,越来越多的人希望了解并学习计算机知识。在这一章里将要介绍计算机的基本概念和计算机组成原理等内容。1.1.1 为什么需要计算机自工业革命以来,人们发明了许多机器来减轻人类的体力劳动。随着社会的发展进步,人们自然也需要一种能够减轻脑力劳动的快速计算工具。比如,手工计算求解3阶线性方程组是一件烦琐的工作。如果手工计算求解100阶线性方程组,人们就会惊叹,其计算工作量如此巨大,简直无法完成。高阶线性方程组的求解在许多科学研究和工程设计领域中都有广泛的应用。如果没有一种快速计算工具,这些科学研究和工程设计都将无法进行下去。由于计算机可以帮助人们完成一些复杂的计算,大大减轻了人们的脑力劳动,因此获得了“电脑”的美称。这一名称容易使人产生误解,以为电脑也像人脑那样工作。至少到目前为止,人类对人脑的工作机理了解甚少,当然就谈不上研制出具有人脑功能的“电脑”。事实上,计算机在进行计算之前,首先需要给出算法,然后将算法编制成程序,再翻译成机器可以识别的机器指令(通常由编译器完成)。有了机器指令以后,计算机才能在控制器的控制下快速、高效、自动地进行计算工作。因此,计算机可以理解为按照人们给定的程序快速、高效、自动工作的机器。计算机的发展经历了电子管、晶体管、集成电路、超大规模集成电路的发展阶段,并且在计算机的设计过程中广泛地采用了数字技术,这样的计算机称为数字计算机。本书研究的就是数字计算机的组成原理。1.1.2 软件的概念为了能够理解软件的概念,下面先通过一个简单的例子来看一下采用计算机完成计算的完整过程。例1.1 求p的值,精确到106。解:第一步,确定算法(algorithm)。根据微积分的基本知识,有如下的公式: (1.1)令x=1,(1.1)式的右端级数是交错级数,满足收敛性条件。于是得到: (1.2)(1.2)式的一般项是: (1.3)根据交错级数理论,当(1.2)式的余项满足 (1.4)时,(1.2)式的前n项之和可以满足精度要求。第二步,编写计算机程序。计算机程序的编写可以采用多种不同的算法语言,本书中采用大家熟悉的C语言来编写程序。根据(1.2)(1.4)式,可以写出如下的C语言 程序。# include main() int s; float n,t,pi; t=1.0; pi=0.0; n=1.0; s=1; while(fabs(t)1e-6/4.0) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi);第三步,编译。第二步得到的程序在普通的计算机上通常不能直接执行,需要经过编译器(compiler)进行编译,以产生具体计算机的机器代码。这一过程完成后,一般会产生一个可执行文件。第四步,运行程序。运行第三步生成的可执行文件,可以得到如下的输出结果:pi=3.141593第五步,结束运行。上述的第一步是确定算法,这一步目前只能由人来完成。这一步是其余各个步骤的基础,十分重要,是整个程序设计过程的核心与灵魂。但是难度较大,需要深厚的理论功底和广博的专业知识。如果计算机也能够进行这一工作,将会大大加速科学技术的前进步伐。至少到目前为止,这还仅仅是一个理想。科学家们也在不断努力,试图将这一理想变为现实。当然,这是一个十分具有挑战性的课题。第二步编写计算机程序是第一步中确定的算法的具体实现,通常也由人来完成。目前人们都习惯采用高级程序编程语言(high-level programming language)编写程序。第三步编译通常由编译器完成,编译器也是一种计算机程序,它能够将高级语言编写的程序自动转换成目标机的目标指令程序。第四步运行程序才是计算机为解决问题而进行的具体工作。人们利用数字电路能够高速运行的特点而设计的计算机可以在控制器的控制下,按照给定的程序快速、高效、自动、有条不紊地进行工作,从而帮助人们快速求得问题的解答。数字计算机是通过执行人们给出的指令序列来解决问题的机器。指令序列称为程序,它描述如何完成一个确定的任务。每台计算机都只能识别和直接执行有限的简单的基本指令。这些基本指令的功能都很简单,比如两个数相加、检查某数是否等于零、将一些数据从计算机内存的某些单元复制到其他的单元中或传送到寄存器中等。计算机的这些原始指令共同组成了一种可供人和计算机进行交流的语言,称其为机器语言,在数字计算机中它是由0和1组成的二进制代码序列。当然,用机器语言编写程序不方便,难以排除错误,而且十分乏味。正因为如此,人们创造了采用助记符(英文单词或其缩写)表示机器指令的方法,这样做的好处是可以方便地记忆机器指令。这种采用助记符表示机器指令的语言,就是汇编语言(assembly language)。计算机不能直接识别这种语言,因而需要一种程序,能够将符号表示的机器指令翻译成二进制代码(即机器语言)。这样的程序称为汇编器(assembler)。汇编器把符号表示的指令翻译成计算机可以直接执行的二进制指令,给程序员编写程序提供了方便。虽然这是一个巨大的进步,但是纯粹的汇编语言需要程序员为每条机器要执行的指令写一行汇编代码,强迫程序员按机器的方式去思考问题。机器语言(或汇编语言)与人类熟悉的自然语言(如汉语、英语等)相差甚远,这种差别称为语义差。正是这种语义差的存在,使得人们不愿意使用机器语言编写程序,而更喜欢用人类的自然语言直接编写程序。但是在试图利用计算机执行用自然语言编写的程序时遇到了巨大的困难。至少到目前为止,人们还没设计出能够理解人类自然语言的计算机。尽管如此,人们仍设计出了与自然语言相近的高级语言(如C语言、FORTRAN语言等),这些语言可以称为是“人工语言”,其语义差相对较小。所有的高级语言编写的程序都必须在执行前转换成计算机的基本指令构成的机器语言程序。这种转换是借助于翻译系统实现的。这种翻译系统也是一种程序,称为编译器(compiler),它所编译的语言称为高级程序编程语言(high-level programming language),简称为高级语言。例如,程序员可以书写下面的高级语言表达式:A+B假设编译器将它编译为下面的汇编语言语句:add A,B再假设汇编器把这条语句翻译成如下的二进制指令:10001100101000001000110010100000告诉计算机将两个数A和B相加。当然,不同类型的计算机将有不同的二进制指令。这里假设1000110010100000是计算机将两个数A和B相加的机器 指令。高级语言具有几个重要的优点:(1)首先,它允许程序员用更自然的语言思考要处理的问题,用英语单词和数字表示算法,使程序看起来更像文章而不是枯燥乏味的字符。(2)此外,它允许按语言的用途来设计语言。例如,FORTRAN是为科学计算设计的,COBOL用于商业数据处理,LISP用于符号处理等。(3)可以提高程序员的编程效率。在软件开发方面,当使用能用较少的行来表达某个想法的语言编写程序时,所花费的时间相对较少,这一点已得到广泛认同。简明是高级语言相对于汇编语言的一个显著的优点。(4)允许程序独立于开发它的计算机,因为编译器和汇编器可以将高级语言程序翻译为任何机器的二进制指令。这四个优点是如此的明显,以至于现在几乎没人用汇编语言编写程序。有了以上的基本知识就可以讨论软件的概念了。软件是由算法(指明如何做某事的详细指令序列)及其在计算机中的表示程序组成。程序可被存储在硬盘、软盘、CD-ROM或其他存储介质上。但实质上,程序是指令的集合,而不是记录它们的物理介质。1.1.3 硬件的概念以上对软件作了定义,软件是算法在计算机中的表示,即计算机指令的有序集合。但是,仅仅有软件是不够的,还需要能够执行软件的物理实体,这些物理实体构成了计算机系统的硬件。下面通过具体的例子来说明。例1.2 试采用门电路实现一位二进制全加器。解:首先要进行分析和数字逻辑设计。一位二进制全加器的运算可以表示成,其中Ai 、Bi分别是本位的二进制数据,而Ci是低位送来的进位位。因此本位的计算结果也可能向高位产生进位输出,即两个二进制数字Ai 、Bi和一个进位输入Ci相加,产生一个和输出Si ,以及一个进位输出Ci1。表1.1中列出了一位全加器进行加法运算的输入输出真值表。表1.1 一位全加器真值表输 入输 出AiBiCiSiCi10000111100110011010101010110100100010111根据布尔代数,在表1.1中所示的真值表里,三个输入端和两个输出端可按如下逻辑方程进行联系(证明见第2章): (1.5)有了(1.5)式以后,就可以设计出数字逻辑电路了,如图1.1所示。这些电路及连接线构成了硬件。(a) (b)图1.1 一位全加器(FA)的逻辑电路图和方框图1.1.4 指令系统软、硬件的接口软件和硬件的分界线就是指令系统(见图1.2)。指令系统指的是程序员可见的实际指令的集合。指令系统以上的部分是软件,指令系统以下的部分是硬件。软件又分为系统软件(system software)和应用软件(application software),这是软件按照用途进行分类的方式。系统软件指的是提供经常使用的服务的软件。操作系统、编译器和汇编器就是系统软件。如果由一个独立的软件来管理一组运行中的程序,那么显然一组程序能更有效地运行。某一程序一旦完成,管理程序就将开始运行队列中的下一个程序,从而避免延时。这些包含了输入输出的管理程序就是今天称为操作系统(operating system)的原型。操作系统是运行于计算机上管理计算机资源以有利于运行其他程序的软件。应用软件,或称为应用程序,指的是供计算机使用者使用的程序,如电子制表软件和文本编辑软件。图1.3给出了应用软件、系统软件和硬件层次的图示。高级语言程序属于应用软件。通常,高级语言(如C语言)编写的源程序不能被计算机的指令系统直接执行,需要经过编译后才能由指令系统执行。设计一种新的计算机时,人们必须首先确定指令系统,即决定其机器语言中包含哪些原始指令。这些原始指令的集合构成了计算机的指令系统。通常,原始指令应尽量简单,兼顾计算机的使用要求和性能要求,以降低实现电路的成本和复杂性。在指令系统确定之后,就可以同时进行软件和硬件的设计,软件由指令系统开始向上面设计,硬件由指令系统开始向下面设计。图1.2 指令系统软件和硬件的分界线图1.3 应用软件、系统软件、指令系统和硬件层次指令系统就像连接软件和硬件的一座桥梁,软件的每一条指令都需要经过指令系统传达给硬件。对于指令系统中的每一条指令的执行,则需要用硬件来实现。硬件功能的强弱和速度的快慢直接影响着软件的运行效率。因此,如何确定指令系统就是一个非常重要的问题。事实上,指令系统的确定属于计算机体系结构研究的内容。要确定指令系统,首先要根据要求来确定计算机指令系统的功能。一旦确定了一系列功能要求后,指令系统设计者就要尽可能优化设计。当然,究竟哪一种设计是最优的,取决于不同的衡量标准。最普遍的标准包括价格和性能。一种度量标准就是所谓的性能价格比。对于许多应用领域,指令系统设计者会通过该领域的典型应用程序来定量描述计算机的性能。除了性能以外,价格也是优化性能价格比的一个重要因素。在对设计方案进行选择时,指令系统设计者必须考虑设计的复杂性。实现复杂的设计需要的时间较长,产品投放市场的时间较迟。这意味着要花较长时间才能实现的设计必须具有更高的性能,否则产品将丧失竞争力。指令系统设计者必须时刻考虑到,软件和硬件设计方案的选择对实现时间的影响。此外,设计者还必须密切关注实现技术和计算机应用方面的重要发展趋势,这不仅关系到产品未来的成本,而且能够决定其生命周期。1.2 结构化设计(研究)方法与计算机组成原理课程的研究内容这一小节要讨论计算机组成原理课程的研究内容与方法。读者需要仔细研究这一小节的内容,这些内容对于建立正确的学习方法,理解后面将要介绍的内容是很重要的。在后面的学习中再回过头来看看这一小节也是很有益处的,当然,只有通过具体的使用和实践,才能深入理解这些内容。1.2.1 分层概念和结构化设计(研究)方法本节介绍抽象层次概念。抽象层次可以在以下两个域中表示: 结构域:在结构域中,一个部件通过一些更基本部件的互连来描述。 行为域:在行为域中,一个部件通过定义它的输入输出响应来描述。抽象层次可以定义为:一系列相关的表示层次(见图1.4),允许以不同的细节程度来描述一个系统。在典型的抽象层次中,第i层可以转换成第i+1层。此时,第i+1层的描述比起第i层的描述程度要更加细化一些。一般而言,随着层次的下移,系统描述的细化程度会单调 增加。上述的抽象层次的分层概念可以应用到设计(研究)方法中,称为结构化的设计(研究)方法。下面首先介绍一些基本概念。 设计:从系统的一种表示到另一种表示的一系列转化,直到最终的表示能被生产出来。 综合:把设计抽象层次中的一种表示转化成另一种表示的过程。设计过程中的每一步都称为一个综合步。综合也可以看成是完整设计过程的一个子过程。在不至于引起混淆的情况下,本书也把综合称为设计子过程或简称为设计。设计过程往往从高层的行为域开始,以低层的结构域结束,每个综合步是第i层到第j层的转换(ij)。所以综合到一起的是第j层的表示,第i层的表示被用来作为综合过程的指导,并保证第j层的实现必须完成第i层同样的功能。在绝大部分情况下,j=i+1或j=i,也就是说这两层是相邻的,或是同一层内从行为模型到结构模型的转化。当然也存在综合过程中跳过一些层次的情况。图1.4 抽象层次结构设计表示可以是文字的,也可以是图形的。框图、状态图、时序图、状态表、状态赋值和真值表都是图形化的例子。常用的文字性的表示方法是自然语言(如汉语、英语等)、方程式(如布尔方程式、微分方程式等)和计算机算法语言。结构描述基本上都是图形性的,而行为描述则是文字性的。当然也有一些例外,如状态表、状态图和时序图,它们是图形表示的,但是用来描述行为。事实上,文字能更好地表达复杂行为,图形则更适合于阐明相互的结构关系。其各有优缺点,因此不能单纯依赖于文字或单纯依赖于图形。因此,在实际的设计系统中应权衡使用文字和图形。1.2.2 结构的分解设计层次的结构形式隐含着设计的分解过程,因为在选中的任何层,系统模型都是由为该层定义的基本部件连接而成的。在结构域,这些基本部件又可以由下一层次的基本部件的连接来定义。因此,一个设计可以被表示为树状结构,如图1.5所示,树状结构的每一层都对应抽象层次的相应层。但行为模型实际上是用过程来定义部件的操作,而不是用另外的更基本的部件来描述。即使在结构模型中,叶节点的基本单元也必须由行为模型来表示。一个行为模型可以存在于设计层次中的任何一层,不同的设计可以将行为定义在不同的层次。这样做的好处是可以实现多级仿真,即一些部件已经设计到较低级,而另一些部件只达到较高级时就可以对所设计的系统进行评价。设计树包括自顶向下设计和自底向上设计两个概念。这里的顶表示树的根,底表示树的叶。自顶向下设计中,设计者从根节点的功能出发,然后将根节点划分为较低一级的基本单元,这些基本部件又进一步划分为更低一级的基本部件的互连。继续这个过程,直到设计到达所有的叶节点时停止。在叶节点上,所使用的模型总是行为级模型。自顶向下设计的关键在于每一级的划分都可以根据客观限制条件进行优化,如开销、速度以及芯片面积等。划分过程并不受到“什么是可以达到的”这个问题的限制。图1.5 抽象层次的树状结构自底向上设计与自顶向下设计相反,由叶节点(此时的叶节点是站在自顶向下设计的角度来看的,而当站在自底向上的设计角度看过去,却仍可以看成是根节点)开始进行设计,但此时划分的条件受到“可以做到什么”的限制。树中距离根部较远的部分可能会由于在其他工程中必须使用而首先被设计。自顶向下设计看上去是一种理想的方法,它的缺点在于它所产生的部件并不是标准的,即它可能会增加设计的开销。而自底向上设计更加经济,但是它也同自顶向下设计一样,会遇到一些条件的限制。在大多数实际设计中,采用的是这两种方法的混合。有关层次的最后一个概念是设计窗口,它指的是设计树中设计者所使用的层次的 范围。如果将计算机与外部设备一起看成一个整体,并将其称为整机的话,那么对于整机级,人们直接看到的是计算机主机和一些输入输出设备(I/O设备),如打印机、显示器、鼠标、键盘等以及它们的连接方式。作为一个整体(计算机整机系统)考虑,它可以作为一个独立的节点,常常与人交互,因此行为域要描述其信息处理(如视觉功能、听觉功能)以及科学计算等功能。当然,如果考虑到计算机网络的功能,就需要在行为域描述其外部接口的功能以及相应的行为规范等。当然,计算机通常要与I/O设备(如显示器、打印机等)交换信息,因此输入输出设备也是计算机系统要研究的对象。但是I/O设备的种类繁多,工作原理各不相同,深入理解输入输出设备需要许多相关领域的专业知识,超出了本书的范围,有兴趣的读者可以参考介绍计算机外部设备的专业书籍。计算机的设计层次看成如下几级:主机系统级(简称系统级)、芯片级、寄存器级、门级、电路级、硅片级。硅片级是最低的层次,而主机系统级是最高的层次。一个设计可以用任何层次来表示。当设计从上而下进行时,该设计就逐步接近物理实现,在表示上就更少一些抽象。因此,表示一个设计所需的细节会随着它在层次中的下降而增加。应该强调:在一个具体层次的设计中,保证它具有充分而不过多的细节是非常重要的。细节不充分会给设计造成困难,产生不精确的结果;相反,过多的细节则会使该层次的设计活动变得逻辑混乱、烦琐、难以理解和不规范。对于系统级,设计者看到(可见)的是完整的主机系统。但在结构域,设计者看到的是组成主机系统的各种基本部件,即计算机各种芯片(如CPU、内部存储器、串口、并口和中断控制器等部件以及它们的相互连接,对于个人计算机,这些芯片常常在主板上)。在系统级的行为域,常常采用性能规范来描述,诸如接口的功能、总线带宽、信息交互的同步

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论