1.1 计算机系统简介
计算机称为computer ;但是计算机不仅仅是咱们生活中常用的laptop and personal computer ;
由小到大:还包括 sensors ;informational appliances;server ;mainfrine(大型机);HPC(higher powerful computer);
HPC:比如中国的tianhe-2;美国的taitan-cray-XK7
智慧地球概念把sensors嵌入到电网,铁路,桥梁…等各种物体之中,并且被普遍连接,形成所谓物联网。再将物联网与互联网整合起来,实现人类社会与物理系统的整合,形成智慧地球。
1.1.1 计算机软硬件的概念
所有的计算机的基本结构都有共性特征:
分为软件和硬件;
硬件:计算机的实体部分;由看得见摸得着的各种电子元器件构成;如主机,外设…
软件:它看不见摸不着,由人们事先编制好的具有特殊功能的程序组成。具体可以分为系统软件和应用软件。
系统软件(系统程序):管理 (分配资源,处理…)整个计算机系统;如:语言处理程序;操作系统;服务性程序;数据库管理系统;网络软件。
应用软件(应用程序):按任务编成的各种程序;比如一个满足人们射击游戏的任务。CS就是一个应用软件。
1.1.2 计算机系统的结构层次
计算机解决问题的一般过程:
通常由用户用高级语言编程序(称为源程序),然后将他和数据一起送入计算机内,计算机惊醒一系列操作转化为机器语言(编译,连接…),机器自动运行机器语言程序,并将计算结果输出。
(具体可以见本人博客:c语言 -chapter 1)
实际上,早期的计算机只有机器语言(用0.1代码表示的语言),用户必须用二进制代码(0、1)来编写程序(即机器语言程序)。这就要求程序员对他们所使用的计算机硬件及其指令系统十分熟悉,编写程序难度很大.操作过程也极容易出错。但用户编写的机器语言程序可以直接在机器上执行。直接执行机器语言的机器称为实际机器M1,如图所示。
20世纪50年代开始出现了符号式的程序设计语言,即汇编语言。它用符号ADD,SUB,MUL ,DIV等分别表示加、减、乘、除等操作,并用符号表示指令或数据所在存储单元的地址,使程序员可以不再使用繁杂而又易错的二 进制代码来编写程序。但是,实际上没有一种机器能直接识别这种汇编语言程序。必须先将汇编语言程序翻译成机器语言程序然后才能被机器接受并自动运行。这个翻译过程是由机器系统软件中的汇编程序来完成的。如果把具有翻译功能的汇编程序的打算机看做一台机器M2,那么,可以认为M2,在M1之上,用户可以利用M2的翻译功能直接向M2输人汇编语言程序,而M2又会将翻译后的机器语言程序输人给M1,M1执行后将结果输出。因此,M2并不是台实际机器。它只是人们感到存在的一台具有翻译功能的机器,称这类机器为虚拟机。这样,整个计算机系统便具有两级层次结构。
尽管有了虚拟机M2,使用户编程更为方便,但从本质上看,汇遍语言仍然是面向实际机器的语言。它的每条语句都与机器语言的每一 条语句(0,1代码)一一对应。所以编写程序时,仍要求程序员对实际机器M1的内部组成和指令系统非常熟悉,也就是说,程序员必须经过专门的训练,否则是无法操作计算机的。另一方面,由于汇编语言,摆脱不了实际机器的指令系统。因此汇编语言没有通用性,每台机器必须有种与之相对应的汇编语言。 这使得程序员要掌握不同机器的指令系统,不利于计算机的广泛应用和发展。汇编语言仍然属于一种低级语言。
20世纪60年代开始先后出现了各种面向问题的高级语言,如FORTRAN,BASIC,PASCAL,C等。这类高级语言对问题的描述十分接近人们的习惯,并且还具有较强的通用性。程序员完全不必了解、掌握实际机器M1的机型、内部的具体组成及其指令系统,只要掌握这类高级语言的语法和语义,便可直接用这种高级语言来编程,这给程序员带来了极大的方便。当然:机器M1本身是不能识别高级语言的,因此,在进入机器M1运行前,必须先将高级语言程序翻译成汇编语言程序(或其他中间语言程序),然后再将其翻译成机器语言程序;也可以将高级语言程序直接翻译成机器语言程序。这些工作都是由虚拟机器M3,来完成的。对程序员而言,他们并不知道这个翻译过程。由此又可得出具有三级层次结构的计算机系统。
通常.将高级语言程序翻译成机器语言程序的软件称为翻译程序。翻译程序有两种:一种是编译程序,另一种是解释程序。编译程序是将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序。因此,只要源程序不变,就无须再次进行翻译。例如FORTRAN、PASCAL等语言就是用编译程序来完成翻译的。解释程序是将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句接着翻译源程序的下一条语句, 并执行这条语句,如此重复直至完成源程序的全部翻译任务。它的特点是翻译一次执行一次,即使下一次重复执行该语句时,也必须重新翻译。例如,BASIC语言的翻译就有解释程序和编译程序两种。
从上述介绍中不难看出,由于软件的发展,使实际机器M1向上延伸构成了各级虚拟机器。同理,机器M1内部也可向下延伸而形成下一级的微程序机器 M0。机器M0是直接将机器M1中的每一条机器指令翻译成一组微指令,即构成一个微程序。机器M0每执行完对应于一条机器指令的一个微程序后,便由机器M1中的下一条机器指令使机器M0自动进入与其相对应的另一个微程序执行。由此可见,微程序机器M0可看做是对实际机器M1的分解,即用M0的微程序解释并执行M1的每一条机器指令(有关微程序机器的介绍,详见第10章)。由于机器M0也是实际机器,因此,为了区别于M1,通常又将M1称为传统机器,将M0称为微程序机器。这样又可认为计算机系统具有四级层次结构。
在上述四级层次结构的系统中.实际上在实际机器M1与虚拟机器M2之间还有一级虚拟机器.它是由操作系统软件构成的。操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制并管理计算机系统全部硬件和软件资源的作用,为用户使用计算机系统提供板为方便的条件。操作系统的功能是通过其控制语言来实现的。描绘了一个常见的五级计算机系统的层次结构。
从计算机系统的多级层次结构来看,可以将硬件研究的主要对象归结为传统机器M1和微程序机器M0。软件的研究对象主要是操作系统级以上的各级虚拟机。本书主要讨论传统机器M和微程序机器M。的组成原理及设计思想。
1.1.3 计算机组成和计算机体系结构
在学习计算机组成时,应当注意如何区别计算机体系结构与计算机组成这两个基本概念。
计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。计算机系统的属性通常是指用机器语言编程的程序员(也包括汇编语言程序设干者和汇编程序设计者)所看到的传统机器的属性,包括指令集数据类型存储器寻址技术、1/0机理等,大都属于抽象的属性。由于计算机系统具有多级层次结构,因此,站在不同层次上编程的程序员所看到的计算机属性也是各不相同的。例如,用高级语言编程的程序员可以把IBM PC与RS6000两种机器看成是同一属性的机器。可是,对使用汇编语言编程的程序员来说,IBM PC与RS6000是两种截然不同的机器。因为程序员所看到的这两种机器的属性,如指令集、数据类型、寻址技术等,都完全不同,因此,认为这两种机器的结构是各不相同的。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。例如,指令系统体现了机器的属性,这是属于计算机结构的问题。但指令的实现,即如何取指令、分析指令、取操作数、运算、送结果等,这些都属于计算机组成问题。因此,当两台机器指令系统相同时,只能认为它们具有相同的结构。至于这两台机器如何实现其指令的功能,完全可以不同,则它们的组成方式是不同的。例如,一台机器是否具备乘法指令的功能,这是一个结构问题, 可是,实现乘法指令采用什么方式 ,则是一个组成问题。
1.2 计算机基本组成
1.2.1 冯-诺依曼计算机的特点
1945年,数学家冯.诺依曼( von Neuman)在研究EDVAC机时提出了“存储程序概念”。以此概念为基础的各类计算机通称为冯.诺依曼机。它的特点可归结如下:
计算机由运算器、存储器、控制器,输人设备和输出设备五大部件组成。
指令和数据以同等地位存放于存储器内,并可按地址寻访。
指令和数据均用二进制数表示。
指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存诸器中的位置。
指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
机器以运算器为中心,输人输出设备与存储器间的数据传送通过运算器完成。
1.2.2 计算机的硬件框图
图中各部件的功能如下:
运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
存储器用来存放数据和程序。
控制器用来控制、指挥程序和数据的输人运行以及处理运算结果。
输人设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。
输出设备可将机器运算结果转换为人们熟悉的信息形式, 如打印机输出、显示器输出等。
以上使结构框图,是从计算机体系结构上考虑。下面咱们从组成上考虑,具体看看实现体系结构的方法。
算术逻辑单元( Arithmetic Logic Unit, ALU)简称算逻部件,用来完成算术逻辑运算。
控制单元( Control Unit,CU)用来解释存储器中的指令,并发出各种操作命令来执行指令。
ALU和CU是CPU的核心部件。
由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,尤其在大规模集成电路制作工艺出现后,这两大部件往往集成在同一芯片上,因此,通常将它们合起来统称为中央处理器( Central Processing Unit,CPU)。
主存储器又分为主存和辅存,主存储器是存储器子系统中的一类,用来存放程序和数据,也叫内存,可以直接与CPU交换信息。另一类称为辅助存储器,简称辅存,又称外存
CPU与主存储器合起来又可称为主机
把输入设备与输出设备加上辅助存储器简称为I/O设备( Input/Output Equip-
ment)。I/0设备又可称为外部设备。
这样,现代计算机可认为由三大部分组成:CPU、I/O设备(包括了外存)及主存储器(MainMemory,MM),如图所示。
I/O设备也受CU控制,用来完成相应的输人、输出操作。
可见,计算机有条不紊地自动工作都是在控制器统一指挥 下完成的。
咱们改进一下==>改进:以存储器为中心
如下图:
1.2.3 计算机的工作步骤
1.上机前的准备
(由于计算机只能执行最基础的四则运算,所以意味着在上机前有些需要我们认为去准备)
建立数学模型:
确定计算方法:
编制解题程序:(程序:运算的全部步骤。指令:每一个步骤)
编程举例:ax^2+bx+c
所以说建立不同的数学模型,所编制的程序是不一样的。除了上述步骤之外,还有一些没有涉及到的步骤, 取数 保存 打印 停机。
指令:(下面是任意假设某机型的指令,可能不同机型指令不一样)
假设某机的指令字长16位,其中操作码占据6位,地址码占据10位。操作码表示机器所执行的各种操作,如取数,存数,四则,停机,打印。地址码表示参加运算的数在储存器内的位置。机器指令的操作码与指令码都是用0/1来表示。
咱们可以根据以上指令人为在纸上编写出运算清单,如下图:
准备工作结束,等待上机;
2.计算机的工作过程
主存储器:
主存储器(简称主存或者内存)包括存储体M、各种逻辑部件及控制电路等。