计算机称为computer ;但是计算机不仅仅是咱们生活中常用的laptop and personal computer ;
由小到大:还包括 sensors ;informational appliances;server ;mainfrine(大型机);HPC(higher powerful computer);
HPC:比如中国的tianhe-2;美国的taitan-cray-XK7
智慧地球概念把sensors嵌入到电网,铁路,桥梁…等各种物体之中,并且被普遍连接,形成所谓物联网。再将物联网与互联网整合起来,实现人类社会与物理系统的整合,形成智慧地球。
所有的计算机的基本结构都有共性特征:
分为软件和硬件;
硬件:计算机的实体部分;由看得见摸得着的各种电子元器件构成;如主机,外设…
软件:它看不见摸不着,由人们事先编制好的具有特殊功能的程序组成。具体可以分为系统软件和应用软件。
系统软件(系统程序):管理 (分配资源,处理…)整个计算机系统;如:语言处理程序;操作系统;服务性程序;数据库管理系统;网络软件。
应用软件(应用程序):按任务编成的各种程序;比如一个满足人们射击游戏的任务。CS就是一个应用软件。
计算机解决问题的一般过程:
通常由用户用高级语言编程序(称为源程序),然后将他和数据一起送入计算机内,计算机惊醒一系列操作转化为机器语言(编译,连接…),机器自动运行机器语言程序,并将计算结果输出。
(具体可以见本人博客: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/0机理等,大都属于抽象的属性。由于计算机系统具有多级层次结构,因此,站在不同层次上编程的程序员所看到的计算机属性也是各不相同的。例如,用高级语言编程的程序员可以把IBM PC与RS6000两种机器看成是同一属性的机器。可是,对使用汇编语言编程的程序员来说,IBM PC与RS6000是两种截然不同的机器。因为程序员所看到的这两种机器的属性,如指令集、数据类型、寻址技术等,都完全不同,因此,认为这两种机器的结构是各不相同的。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。例如,指令系统体现了机器的属性,这是属于计算机结构的问题。但指令的实现,即如何取指令、分析指令、取操作数、运算、送结果等,这些都属于计算机组成问题。因此,当两台机器指令系统相同时,只能认为它们具有相同的结构。至于这两台机器如何实现其指令的功能,完全可以不同,则它们的组成方式是不同的。例如,一台机器是否具备乘法指令的功能,这是一个结构问题, 可是,实现乘法指令采用什么方式 ,则是一个组成问题。
1945年,数学家冯.诺依曼( von Neuman)在研究EDVAC机时提出了“存储程序概念”。以此概念为基础的各类计算机通称为冯.诺依曼机。它的特点可归结如下:
计算机由运算器、存储器、控制器,输人设备和输出设备五大部件组成。
指令和数据以同等地位存放于存储器内,并可按地址寻访。
指令和数据均用二进制数表示。
指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存诸器中的位置。
指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
机器以运算器为中心,输人输出设备与存储器间的数据传送通过运算器完成。
运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
存储器用来存放数据和程序。
控制器用来控制、指挥程序和数据的输人运行以及处理运算结果。
输人设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。
输出设备可将机器运算结果转换为人们熟悉的信息形式, 如打印机输出、显示器输出等。
以上使结构框图,是从计算机体系结构上考虑。下面咱们从组成上考虑,具体看看实现体系结构的方法。
算术逻辑单元( 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控制,用来完成相应的输人、输出操作。
可见,计算机有条不紊地自动工作都是在控制器统一指挥 下完成的。
咱们改进一下==>改进:以存储器为中心
如下图:
(由于计算机只能执行最基础的四则运算,所以意味着在上机前有些需要我们认为去准备)
建立数学模型:
确定计算方法:
编制解题程序:(程序:运算的全部步骤。指令:每一个步骤)
编程举例:ax^2+bx+c
所以说建立不同的数学模型,所编制的程序是不一样的。除了上述步骤之外,还有一些没有涉及到的步骤, 取数 保存 打印 停机。
指令:(下面是任意假设某机型的指令,可能不同机型指令不一样)
假设某机的指令字长16位,其中操作码占据6位,地址码占据10位。操作码表示机器所执行的各种操作,如取数,存数,四则,停机,打印。地址码表示参加运算的数在储存器内的位置。机器指令的操作码与指令码都是用0/1来表示。
咱们可以根据以上指令人为在纸上编写出运算清单,如下图:
准备工作结束,等待上机;
主存储器:
主存储器(简称主存或者内存)包括存储体M、各种逻辑部件及控制电路等。
存储体由许多存储单元组成,每个存储单元又包含若干个存储元件(或存储基元,存储元),每个存储元件能寄存一位二进制代码“0”或1”。咱们说的“位”。
一个存储单元可存储一串二进制代码,称这串二进制代码为一个存储字,这串二进制代码的位数称为存储字长。存储字长可以是8位,16位,32位等。 咱们说的“字节”;赋予每个存储单元一个编号 ,称为存储单元的地址号。
一个存储字(一个存储单元的二进制代码)可以代表很多意思,不仅仅是16个二进制数本身,具体代表什么,按照输出的格式。如存储字为0011011001111101 既可表示为由十六进制字符组成的367DH,又可代表16位的二进制数,此值对应十进制数为13949,还可代表两个ASCII 码:“{"和“6”一个存储字还可代表一条指令.
主存的工作方式就是按存储单元的地址号来实现对存储字各位的存(写人)、取(读出)。
这种存取方式称为按地址存取方式,即按地址访问存储器(简称访存)。
为了能实现按地址访问的方式,主存中还必须配置两个寄存器MAR和MDR。
MAR(Memory Address Register) 是存储器地址寄存器,用来存放欲访问的 存储单元的地址,其位数对应存储单元的个数 (如 MAR为10位,则有2^10=1024个存储单元,记为1 K)。
MDR(Memory Data Reg-ister)是存储器数据寄存器。用来存放从存储体某单元取出的代码或者准备在某存储单元存入的代码,其位数与存储字长相等。(一个储存单元的储存字长)
运算器:
运算器最少包括3个寄存器(现代计算机内部往设有通用寄存器组)和一个算术逻辑单元(ALU)。其中ACC(accumulator)为累加器,MQ( Multiplier-Quotient Register) 为乘商寄存器,X为操作数寄存器 。这3个寄存器在完成不同运算时所存放的操作数类别也各不相同。列出了寄存器存放不同类别操作数的情况。
下面简单用图片说明运算器是如何进行四则运算的操作过程:
先假设
M:表示存储器的任一地址号码;[M]表示对应M地址号单元中的内容;
X:表示X寄存器;[X]:表示X寄存器的内容;
ACC表示累加器,[ACC]表示累加器的内容;
MQ表示乘商寄存器,[MQ] 表示乘商寄存器的内容;
控制器:
控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。具体面言.
它首先要命令存储器读出一条指令, 称为取指过程(也称取指阶段)。
接着,它要对这条指令进行分析.指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,称为分析过程(也称分析阶段)。
最后根据操作数所在的地址以及指令的操作码完成某种操作,称为执行过程(也称执行阶段)。
以上就是通常所说的完成一条指令操作的取指、分析和执行3个阶段。
控制器由程序计数器( Program Counter, PC)、指令寄存器( Instruction Register, IR)以及控制单元(CU)组成。PC用来存放当前欲执行指令的地址,它与主存的MAR之间有一条直接通路,且具有自动加1的功能,即可自动形成下一条指令的地址。
IR用来存放当前的指令,IR的内容来自主存的MDR。IR中的操作码(OP(IR))送至CU,记作OP(IR)→CU,用来分析指令;其地址码(Ad(IR))作为操作数的地址送至存储器的MAR,记作Ad(IR)→MAR。
CU用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象。
I/O:
I/O子系统包括各种I/O设备及其相应的接口。每一种I/O设备都由I/O接口与主机联系,它接受CU发出的各种控制命令,并完成相应的操作。
计算机工作的全过程:
(以前面ax^2+bx+c为例子)
首先按程序清单所列的有序指令和数据,通过键盘输人到主存第0号至第12号单元中,并置PC的初值为0(令程序的首地址为0)。启动机器后,计算机便自动按存储器中所存放的指令顺序有序地逐条完成取指令、分析指令和执行指令,直至执行到程序的最后一条指令为止。
例如,启动机器后,控制器立即将PC的内容送至主存的MAR(记作PC→MAR),并命令存储器做读操作,此刻主存“0”号单元的内容“0000000001000”(程序清单所列程序的第一条指令)便被送人MDR内。然后由MDR送至控制器的IR(记作MDR-→IR),完成了一条指令的取指过程。经CU分析(记作OP(IR)- CU),操作码“000001”为取数指令,于是CU又将IR中的地址码0000001000”送至MAR(记作Ad(IR)-→MAR),并命令存储器做读操作,将该地址单元中的操作数x送至MDR.再由MDR送至运算器的ACC(记作MDR→ACC),完成此指令的执行过程。此刻,也即完成了第一条取数指令的全过程,即将操作数x送至运算器ACC中。与此同时,PC完成自动加1的操作,形成下一条指令的地址“1”号。
同上所述,由PC将第二条指令的地址送至MAR.命令存储器做读操作,将00000001001”送入MDR,又由MDR送至IR。接着CU分析操作码000100”为乘法指令,故CU向存储器发出读命令,取出对应地址为0000001001”单元中的操作数a,经MDR送至运算器MQ,CU再向运算器发送乘法操作命令,完成ax的运算,并把运算结果ax存放在ACC中。同时PC又完成一次(PC)+1→PC,形成下一条指令的地址“2”号。依次类推,逐条取指、分析执行,直至打印出结果。最后执行完停机指令后,机器便自动停机。
存数的时候和前面差不多,到第6步都是一样的,第7步是告诉存储体由这样一个地址的数要存进来,然后第8是把数存到MDR,然后存到存储体相应的地址中去。
机器字长是指CPU一次能处理数据的位数,通常与 CPU的寄存器位数有关。字长越长.数的表示范围越大,精度也越高。机器的字长也会影响机器的运算速度。倘若CPU字长较短,又要运算位数较多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响机器的运算速度。
机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或ALU)、数据总线以及存储字长的位数。所以机器字长的确定不能单从精度和数的表示范围来考虑。
存储器的容量应该包括主存容量和辅存容量。
主存容量是指主存中存放二进制代码的总位数。即
存储容量=存储单元个数x存储字长
bit(位)
Btye(字节)
1B=8b
2^10=1K=1024
2^20=1M
2^30=1G
主存既可以用位表示,也可以用字节表示容量。辅存太大,一般用字节表示。
现在一般采用MIPS:单位时间内执行指令的平均条数来衡量。(单位:百万条指令每秒)。除此之外还有CPI,FLOPS…
本书主要讲解的是计算机的硬件。计算机内部一些关键硬件主要如下表所示,本书按照下面的结构进行叙述
本书介绍计算机组成原理,其内容安排如下:
第1篇:概论,介绍计算机系统的基本组成、应用与发展。
chapter 1:计算机系统概论
chapter 2:计算机的发展和应用
第2篇:计算机系统的硬件结构,引导读者自顶向下了解计算机系统的硬件结构,包括中央处理器、存储器、I/O等主要部件以及连接它们的系统总线。其中,除中央处理器比较复杂放在第3篇单独讲述外,其他各部件均在此篇介绍。
chapter 3:系统总线
chapter 4:存储器
chapter 5:输入输出系统
第3篇:中央处理器(CPU),本篇讲述CPU的功能和结构,并对影响CPU特性、结构和功能的算逻单元及其运算方法、指令系统、指令流水、中断系统等进行详细分析。有关控制单元(CU)在第4篇单独介绍。
chapter 6:计算机的运算方法
chapter 7:指令系统
chapter 8:cpu的结构和功能
第4篇:控制单元(CU),本篇在详细分析时序系统以及微操作命令节拍安排的基础上,分别介绍如何用组合逻辑控制及微程序控制两种方法设计和实现控制单元。
chapter 9:控制单元的功能
chapter 10:控制单元的设计
总之,全书按自顶向下、由表及里的层次结构,向读者展示计算机的组成及其工作原理,目的是使读者能先从整体上对计算机有一个粗略的认识,然后,,逐步深人到机器内核,从而更容易形成计算机的整体概念。图1.12形象地描述了上述各章节之间的联系。