计算机的基本概念Word文档下载推荐.docx
- 文档编号:20556614
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:11
- 大小:69.47KB
计算机的基本概念Word文档下载推荐.docx
《计算机的基本概念Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机的基本概念Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
(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<
math.h>
main()
{
ints;
floatn,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.6f\n"
pi);
}
第三步,编译。
第二步得到的程序在普通的计算机上通常不能直接执行,需要经过编译器(compiler)进行编译,以产生具体计算机的机器代码。
这一过程完成后,一般会产生一个可执行文件。
第四步,运行程序。
运行第三步生成的可执行文件,可以得到如下的输出结果:
pi=3.141593
第五步,结束运行。
上述的第一步是确定算法,这一步目前只能由人来完成。
这一步是其余各个步骤的基础,十分重要,是整个程序设计过程的核心与灵魂。
但是难度较大,需要深厚的理论功底和广博的专业知识。
如果计算机也能够进行这一工作,将会大大加速科学技术的前进步伐。
至少到目前为止,这还仅仅是一个理想。
科学家们也在不断努力,试图将这一理想变为现实。
当然,这是一个十分具有挑战性的课题。
第二步编写计算机程序是第一步中确定的算法的具体实现,通常也由人来完成。
目前人们都习惯采用高级程序编程语言(high-levelprogramminglanguage)编写程序。
第三步编译通常由编译器完成,编译器也是一种计算机程序,它能够将高级语言编写的程序自动转换成目标机的目标指令程序。
第四步运行程序才是计算机为解决问题而进行的具体工作。
人们利用数字电路能够高速运行的特点而设计的计算机可以在控制器的控制下,按照给定的程序快速、高效、自动、有条不紊地进行工作,从而帮助人们快速求得问题的解答。
数字计算机是通过执行人们给出的指令序列来解决问题的机器。
指令序列称为程序,它描述如何完成一个确定的任务。
每台计算机都只能识别和直接执行有限的简单的基本指令。
这些基本指令的功能都很简单,比如两个数相加、检查某数是否等于零、将一些数据从计算机内存的某些单元复制到其他的单元中或传送到寄存器中等。
计算机的这些原始指令共同组成了一种可供人和计算机进行交流的语言,称其为机器语言,在数字计算机中它是由0和1组成的二进制代码序列。
当然,用机器语言编写程序不方便,难以排除错误,而且十分乏味。
正因为如此,人们创造了采用助记符(英文单词或其缩写)表示机器指令的方法,这样做的好处是可以方便地记忆机器指令。
这种采用助记符表示机器指令的语言,就是汇编语言(assemblylanguage)。
计算机不能直接识别这种语言,因而需要一种程序,能够将符号表示的机器指令翻译成二进制代码(即机器语言)。
这样的程序称为汇编器(assembler)。
汇编器把符号表示的指令翻译成计算机可以直接执行的二进制指令,给程序员编写程序提供了方便。
虽然这是一个巨大的进步,但是纯粹的汇编语言需要程序员为每条机器要执行的指令写一行汇编代码,强迫程序员按机器的方式去思考问题。
机器语言(或汇编语言)与人类熟悉的自然语言(如汉语、英语等)相差甚远,这种差别称为语义差。
正是这种语义差的存在,使得人们不愿意使用机器语言编写程序,而更喜欢用人类的自然语言直接编写程序。
但是在试图利用计算机执行用自然语言编写的程序时遇到了巨大的困难。
至少到目前为止,人们还没设计出能够理解人类自然语言的计算机。
尽管如此,人们仍设计出了与自然语言相近的高级语言(如C语言、FORTRAN语言等),这些语言可以称为是“人工语言”,其语义差相对较小。
所有的高级语言编写的程序都必须在执行前转换成计算机的基本指令构成的机器语言程序。
这种转换是借助于翻译系统实现的。
这种翻译系统也是一种程序,称为编译器(compiler),它所编译的语言称为高级程序编程语言(high-levelprogramminglanguage),简称为高级语言。
例如,程序员可以书写下面的高级语言表达式:
A+B
假设编译器将它编译为下面的汇编语言语句:
addA,B
再假设汇编器把这条语句翻译成如下的二进制指令:
1000110010100000
1000110010100000告诉计算机将两个数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,以及一个进位输出Ci–1。
表1.1中列出了一位全加器进行加法运算的输入输出真值表。
表1.1一位全加器真值表
输入
输出
Ai
Bi
Ci
Si
Ci–1
1
根据布尔代数,在表1.1中所示的真值表里,三个输入端和两个输出端可按如下逻辑方程进行联系(证明见第2章):
(1.5)
有了(1.5)式以后,就可以设计出数字逻辑电路了,如图1.1所示。
这些电路及连接线构成了硬件。
(a)(b)
图1.1一位全加器(FA)的逻辑电路图和方框图
1.1.4指令系统——软、硬件的接口
软件和硬件的分界线就是指令系统(见图1.2)。
指令系统指的是程序员可见的实际指令的集合。
指令系统以上的部分是软件,指令系统以下的部分是硬件。
软件又分为系统软件(systemsoftware)和应用软件(applicationsoftware),这是软件按照用途进行分类的方式。
系统软件指的是提供经常使用的服务的软件。
操作系统、编译器和汇编器就是系统软件。
如果由一个独立的软件来管理一组运行中的程序,那么显然一组程序能更有效地运行。
某一程序一旦完成,管理程序就将开始运行队列中的下一个程序,从而避免延时。
这些包含了输入输出的管理程序就是今天称为操作系统(operatingsystem)的原型。
操作系统是运行于计算机上管理计算机资源以有利于运行其他程序的软件。
应用软件,或称为应用程序,指的是供计算机使用者使用的程序,如电子制表软件和文本编辑软件。
图1.3给出了应用软件、系统软件和硬件层次的图示。
高级语言程序属于应用软件。
通常,高级语言(如C语言)编写的源程序不能被计算机的指令系统直接执行,需要经过编译后才能由指令系统执行。
设计一种新的计算机时,人们必须首先确定指令系统,即决定其机器语言中包含哪些原始指令。
这些原始指令的集合构成了计算机的指令系统。
通常,原始指令应尽量简单,兼顾计算机的使用要求和性能要求,以降低实现电路的成本和复杂性。
在指令系统确定之后,就可以同时进行软件和硬件的设计,软件由指令系统开始向上面设计,硬件由指令系统开始向下面设计。
图1.2指令系统——软件和硬件的分界线
图1.3应用软件、系统软件、指令系统和硬件层次
指令系统就像连接软件和硬件的一座桥梁,软件的每一条指令都需要经过指令系统传达给硬件。
对于指令系统中的每一条指令的执行,则需要用硬件来实现。
硬件功能的强弱和速度的快慢直接影响着软件的运行效率。
因此,如何确定指令系统就是一个非常重要的问题。
事实上,指令系统的确定属于计算机体系结构研究的内容。
要确定指令系统,首先要根据要求来确定计算机指令系统的功能。
一旦确定了一系列功能要求后,指令系统设计者就要尽可能优化设计。
当然,究竟哪一种设计是最优的,取决于不同的衡量标准。
最普遍的标准包括价格和性能。
一种度量标准就是所谓的性能价格比。
对于许多应用领域,指令系统设计者会通过该领域的典型应用程序来定量描述计算机的性能。
除了性能以外,价格也是优化性能价格比的一个重要因素。
在对设计方案进行选择时,指令系统设计者必须考虑设计的复杂性。
实现复杂的设计需要的时间较长,产品投放市场的时间较迟。
这意味着要花较长时间才能实现的设计必须具有更高的性能,否则产品将丧失竞争力。
指令系统设计者必须时刻考虑到,软件和硬件设计方案的选择对实现时间的影响。
此外,设计者还必须密切关注实现技术和计算机应用方面的重要发展趋势,这不仅关系到产品未来的成本,而且能够决定其生命周期。
1.2结构化设计(研究)方法与计算机组成原理课程的研究内容
这一小节要讨论计算机组成原理课程的研究内容与方法。
读者需要仔细研究这一小节的内容,这些内容对于建立正确的学习方法,理解后面将要介绍的内容是很重要的。
在后面的学习中再回过头来看看这一小节也是很有益处的,当然,只有通过具体的使用和实践,才能深入理解这些内容。
1.2.1分层概念和结构化设计(研究)方法
本节介绍抽象层次概念。
抽象层次可以在以下两个域中表示:
∙结构域:
在结构域中,一个部件通过一些更基本部件的互连来描述。
∙行为域:
在行为域中,一个部件通过定义它的输入输出响应来描述。
抽象层次可以定义为:
一系列相关的表示层次(见图1.4),允许以不同的细节程度来描述一个系统。
在典型的抽象层次中,第i层可以转换成第i+1层。
此时,第i+1层的描述比起第i层的描述程度要更加细化一些。
一般而言,随着层次的下移,系统描述的细化程度会单调增加。
上述的抽象层次的分层概念可以应用到设计(研究)方法中,称为结构化的设计(研究)方法。
下面首先介绍一些基本概念。
∙设计:
从系统的一种表示到另一种表示的一系列转化,直到最终的表示能被生产出来。
∙综合:
把设计抽象层次中的一种表示转化成另一种表示的过程。
设计过程中的每一步都称为一个综合步。
综合也可以看成是完整设计过程的一个子过程。
在不至于引起混淆的情况下,本书也把综合称为设计子过程或简称为设计。
设计过程往往从高层的行为域开始,以低层的结构域结束,每个综合步是第i层到第j层的转换(i≤j)。
所以综合到一起的是第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、内部存储器、串口、并口和中断控制器等部件以及它们的相互连接,对于个人计算机,这些芯片常常在主板上)。
在系统级的行为域,常常采用性能规范来描述,诸如接口的功能、总线带宽、信息交互的同步等。
对于芯片级,设计者看到的是各种不同的芯片,如CPU、内部存储器、串口、并口和中断控制器等部件以及它们的相互连接。
而在芯片的结构域,其基本组成部件是寄存器级可见的部件,即寄存器、寄存器堆、计数器、多路器(MUX)和ALU等部件以及它们的相互连接。
复杂电路的芯片结构域模型常常被当作知识产权(intellectualproperty)予以保护。
也就是说,芯片级的研发者通常不会公开其结构域的细节,而是为了获得商业利益,将其芯片产品出售给另外一些公司。
为了使其生产的芯片能够被其他公司所使用,必须公开其芯片的行为域。
芯片级模型的行为域描述了该部件的I/O响应,即该芯片能够实现的算法。
在行为域,每个芯片部件都是一个确定的模型实体。
对于从其他制造商处购买芯片而不了解芯片内部结构的系统制造公司来说,就必须了解其行为域的模型,否则将无法使用该芯片。
对于寄存器级,设计者可见的基本部件是寄存器、寄存器堆、计数器、多路器(MUX)和ALU以及它们的相互连接。
在结构域,组成寄存器级的基本部件是相互连接的各种门。
在行为域,寄存器级常常采用真值表和状态图来表示,这两种形式可以用来进行这一层次的行为描述,称为数据流。
数据流描述了数据如何在寄存器间移动与变化,反映了具体实现时数据的实际分布状况。
对于门级,设计者可见的基本部件包括与门、或门、异或门、非门等门电路、不同类型的触发器以及它们的相互连接,这些单元的互连构成组合和时序逻辑电路,即数字器件的主要设计层次。
在结构域,门由更基本的电路元件组成,可以是二极管、三极管、电阻、电容等元件以及它们的相互连接。
在行为域,门级常由布尔方程组来描述其基本的行为特征。
对于电路级,设计者可见的基本部件包括电阻、电容、二极管和MOS晶体管等传统无源和有源电子电路元件以及它们的相互连接。
在电路级的结构域,它们由更基本的硅片级组成。
在电路级的行为域,通常采用微分方程组的形式来描述其行为方式,即通过电压和电流等变量参数建立的微分方程组来模拟电路的行为。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 基本概念