计算机系统概论

来源:互联网 发布:古典网站源码 编辑:程序博客网 时间:2024/05/29 04:17

(一)计算机发展历程
(二)计算机系统层次结构
1.计算机系统的基本组成
2.计算机硬件的基本组成
3.计算机软件的基本组成
4.计算机系统的工作过程
(三)计算机性能指标
—吞吐量、响应时间;
—CPU 时钟周期、主频、CPI、CPU执行时间
—MIPS、MFLOPS、GFLOPS、TFLOPS、PFLOPS

1.1计算机发展历程
1.第一代电子管计算机 1946-1957 硬件技术:电子管 速度:40000次/秒
1946年 美国 ENIAC 1955年退役
十进制运算 用手工搬动开关和拔插电缆编程
18000多个电子管 1500多个继电器 150千瓦耗电量 30吨重 1500平方英尺占地面积 5000次加法/秒的运算
1945年,ENIAC的顾问冯诺依曼在为一台新的计算机EDVAC(电子离散变量计算机)指定的计划中首次提出了存储程序的概念,即将程序和数据一起存放在存储器中,使编程更加方便,图灵几乎同时也有了这个想法。

2.第二代晶体管计算机 1958-1964 硬件技术:晶体管 速度:200000次/秒
1947年贝尔实验室使用半导体硅作为基片,制成了第一个晶体管,特点是体积小、低耗电、及载流子高速运行。
3.第三代集成电路计算机
1965-1971 硬件技术:中小规模集成电路 速度1000000(一百万)次/秒
1972-1977 硬件技术:大规模集成电路 速度10000000(一千万)次/秒
1978至今 硬件技术:超大规模集成电路 速度100000000(一亿)次/秒
计算机的数据存储、数据处理、数据传送以及各类控制功能基本上都是由具有布尔逻辑功能的各类门电路完成的,而大量门电路又是由晶体管、电阻、电容灯搭接而成,因此当集成电路制造技术出现后,可以用光刻技术把晶体管、电阻和电容灯构成的单个电路制作在一块极小的硅片上,并引出外部引线。这样计算机的体积大大缩小、耗电量下降,提高了计算机的可靠性。
小规模集成电路(SSI)
中等规模集成电路(MSI)
大规模集成电路(LSI)
超大规模集成电路(VLSI)

从ENIAC到1964年的IBM System/360 不到二十年的时间,计算机发展经历了电子管->晶体管->集成电路三个阶段。显然早起计算机的更新换代主要集中体现在组成计算机的基本电路元件(电子管、晶体管、集成电路)上。

微型计算机的出现和发展
集成电路把计算机的控制单元和算逻单元集成到一个芯片上(CPU),制成了微处理器芯片。
微处理芯片:4位->8位->16位->32位->64位
存储器芯片:256位->1K位->4K位->16K位->64K位->256K位->1M位->4M位->16M位->64M位->256M位->1G位->…

1.2计算机系统层次结构——虚拟机
一、计算机的软硬件概念
1.计算机系统
计算机系统:硬件:计算机实体、如主机外设
软件:由具有各类特殊功能的信息(程序)组成

解剖——计算机(分而治之)
个人计算机由主机和外设组成->主机中包含多个电路板->每个电路板中有十几个集成成电路->每个集成电路有十几个模块->每个模块有上千万个存储单元->每个单元有十几个门电路->每个门电路实现基本的逻辑运算+所有信息都是由二进制编码表示

软件:系统软件 用来管理整个计算机系统                语言处理程序                操作系统                服务型程序                数据库管理软件                网络软件     应用软件 按任务需要编制成的各类软件(APP)各类语言机器语言 面向机器(二进制、机器能直接执行、速度快)汇编语言 面向机器(符号化的机器语言,经汇编后执行)高级语言 面向问题(类自然语言,经编译连接后执行)

二、计算机系统的层次结构
机器语言:
用户用高级语言编写程序(被称为源程序),然后将它和数据一起送入计算机内,再由计算机将其翻译成计算机能够识别的机器语言程序(成为目标程序),机器自动运行该机器语言程序,并将结果输出。
早期计算机只有机器语言(0、1代码表示的语言),机器语言程序可以直接在机器上执行。直接执行机器语言的机器被称为实际机器M1

汇编语言:
20实际50年代开始出现符号式程序设计语言,即汇编语言。它用符号ADD、SUB、MUL、DIV表示加减乘除,并用符号表示指令或数据所在存储单元的地址。但是并没有一种机器可以直接识别汇编语言程序,必须先将汇编语言程序翻译成机器语言程序,才能被运行。这个翻译过程就是由机器中的汇编程序所完成的。
具有汇编程序的机器被看作一台机器M2(忽略操作系统这一层),用户可以直接利用M2的翻译功能直接向M2输入汇编语言程序,而M2由会将翻译后的机器语言程序输入给M1,M1执行后将结果直接输出。由此可以看出,M2并不是一台实际的机器,它只是人们感到存在的一台具有翻译功能的机器,称为虚拟机。
尽管M2使得用户编程变的简单,但是汇编语言仍是一种面向机器的语言,它的每一条指令都与机器语言的某一条语句(0、1代码)一一对应。因此程序员仍需要对实际机器M1的内部组成和指令系统十分熟悉。另外,由于汇编语言摆脱不了实际机器的指令系统,因此,汇编语言没有通用性(!重点!),每台机器都必须有一种与其对应的汇编语言。

高级语言:
20世纪60年代,开始出现了面向问题的高级语言,此时,程序员不必了解实际机器M1的机型、内部具体组成及其指令系统,只要掌握高级语言的语义和语法,可以直接使用这种语言在各种机器上进行编程。
当然机器仍不能直接识别高级语言,必须将高级语言转化成机器能够识别的机器语言,所以在进入M1运行前,必须将高级语言转化成汇编语言(或其他中间语言),然后再将其翻译成机器语言。也可以直接将高级语言转化成机器语言。这些工作是由虚拟机器M3完成。
注意:
通常将高级语言程序翻译成机器语言程序的软件被称为翻译程序。翻译程序有两种。
一是编译程序,编译程序可将用户编写的高级语言程序的全部语句一次全部翻译成机器语言程序。因此只要源程序不变,就不必再次翻译。
二是解释语言,解释语言是将源程序的一条语句翻译成对应的机器语言的一条语句,并立刻执行这条语句。然后在翻译下一条语句,重复这个过程直至源程序全部翻译完成。

微指令系统
实际机器M1向上延伸成了各级虚拟机器,同理,机器M1内部也可向下延伸而形成下一级的微程序机器M0,M0是将M1中的每一条机器指令翻译成一组微指令,即构成一个微程序。机器M0每执行完对应于一条机器指令的一个微程序,便由M1的下一条机器指令使得M0自动进入与其相对应的另外一个微程序的执行。即用M0的微程序解释并执行M1的每一条机器指令。M0被称为微程序机器。
在四级层次结构:M0微程序机器、M1实际机器、M2汇编语言机器、M3高级语言机器中,实际上再M1与M2之间还有一层虚拟机器,它由操作系统软件构成。操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制并管理计算机系统全部硬件和软件资源的作用,为用户使用计算机系统提供极为方便的条件。操作系统的功能是通过其控制语言来实现的。M4语言还可向上延伸,如Tensorflow.

高级语言 虚拟机器M4 用编译程序翻译成汇编语言程序或直接翻译成机器语言程序汇编语言   虚拟机器M3   用汇编程序翻译成机器语言程序操作系统   虚拟机器M2   用机器语言解释操作系统机器语言   实际机器M1   用微指令解释机器指令微指令系统 微程序机器M0 由硬件直接执行微指令

2.系统软件
语言处理程序 汇编程序 编译程序 解释程序
操作系统 DOS UNIX Windows
服务型程序 装配 调试 诊断 拍错
数据库管理系统 数据库和数据库管理软件
网络软件

三、计算机体系结构和计算机组成
计算机体系结构 ——有无乘法指令
:程序员所见到的计算机系统的属性,即概念性的结构与功能特性
(指令系统、数据类型、寻址技术、I/O机理)

计算机组成 ——如何实现乘法指令
实现计算机体系结构所体现的属性(具体指令的实现)
如何取令、分析指令、取操作数、运算、送结果

四、计算机硬件的基本组成和工作原理
冯诺依曼在研究EDVAC机时提出“存储程序”的概念,以此概念为基础的各类计算机通称为冯诺依曼机。
冯诺依曼计算机的特点:
(1)计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成。
(2)执行方式是按存储程序的方式,指令和数据以同等地位存放于存储器内,并按地址寻访。
(3)指令和数据均用二进制码表示。
(4)指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器的位置。
(5)指令在存储器内按执行顺序存放(由PC(程序计数器)指明要执行的指令的单元地址)。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件 改变执行顺序。(PC里放的是地址,地址放的是一条指令)
(6)机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。

计算机的硬件框图
典型的冯诺依曼机是以运算器为中心的
这里写图片描述
现代的计算器已转化为以存储器为中心
这里写图片描述
(1)运算器用来完成算数运算和逻辑运算,并将运算的中间结果暂存在运算器内。
(2)存储器用来存放数据和程序。
(3)控制器用来控制、指挥程序和数据输入、运行以及处理运算结果。
(4)输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。
(5)输出设备可将机器运算结果转换为人们熟悉的信息形式,如打印机、显示器输出等。

由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,在大规模集成电路从技术出现之后,运算器和控制器往往被集成在一片芯片上,它们合称中央处理器(Central Processing Unit,CPU)。把输入设备和输出设备简称为I/O设备。
现代计算机被认为由CPU、主存储器、I/O设备组成。CPU和主存储器合称主机,I/O设备由称为外部设备,外部设备和主机合称为硬件。

这里写图片描述

存储器:主存储器、辅存储器
主存储器用来存放程序和数据,可以直接和CPU交换信息。
算数逻辑单元(Arithmetic Logic Unit, ALU)简称算逻部件,用来完成算数逻辑运算。控制单元(Control Unit,CU)用来解释存储器中的指令,并发出各种操作命令来执行指令。ALU和CU是CPU的核心部件。
I/O也受CU控制,用来完成相应的输入输出操作。
计算机的工作是在控制器的指挥下完成的。

这里写图片描述

(1)主存储器包括存储体M、各种逻辑部件(MAR、MDR)及控制电路。

存储体由多个存储单元组成,每个存储单元又包含多个存储元件,每个存储元件能寄存一位二进制码(0或1)。可见,一个存储单元课存储一串二进制代码,这串二进制代码称为一个存储字,这串二进制代码的位数被称为存储字长。存储字长可以是8位的,16位的,32位等。
如果将存储体看作一栋大厦,那么每个存储单元可看作大楼中的每个房间,每个存储元相当于一张床位,有人则为“1”,无人则为“0”。床位数量等于存储字长。每个房间的房间编号被称为存储单元的地址。
存储体:存储单元:存储元件(0、1)
主存的工作方式就是按存储单元的地址号来实现对存储字各位的存(写入)取(读出)。这种方式被称为按地址访问存储器。
为了实现按地址访问的方式,主存中配置了两个寄存器MAR、MDR。
MAR(Memory Address Register)是存储器地址寄存器,用来存放欲访问的存储单元的地址,其位数对应存储单元的个数(如MAR为10位,则有2^10=1024个存储单元,记为1K)。MDR(Memory Data Register)是存储器数据寄存器,用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。
早期计算机的存储字长一般和机器的指令字长或数据字长相等,故访问一次主存便可取一条指令或一个数据。随着计算机应用的扩大,往往要求指令字长是可变的,数据字长也要求是可变的。为了适应指令和数据字长的可变性,其长度不由存储字长来确定,而由字节的个数来表示。一个字节(Byte)被定义为由8位(bit)二进制代码组成。4字节数据就是32位二进制代码;2字节就是16位二进制代码。当然此时存储字长、指令字长、数据字长三者可不相同,但它们必须是字节的整数倍。
存储器容量(主存容量和辅存容量)
主存容量是指主存中存放二进制代码的总位数。即
存储容量=存储单元个数*存储字长(每个存储单元有多少个0或1)
MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长。例如,MAR为16位,根据2^16=65536,表示存储体内有65536个存储单元(即64K个存储字,2^10*2^6=64*1K);而MDR为32位,表示存储容量为2^16*32=2^21=2M位
现代计算机常以字节数来描述容量大小,因一个字节被定义为8位二进制代码,故用字节数便能反映主存容量。故上述存储容量为2^3*2^18位=2^18字节,记作2^18B,或者256KB。
辅存容量用字节数表示,如某辅存(硬盘)容量为80GB。
存储器单位:2^10byte=1K
2^10K=1M
2^10M=1G
2^10G=1T

(2)运算器
运算器最少包括三个寄存器和一个算数逻辑单元(ALU)。其中ACC(Accumulator)为累加器,MQ(Multiplier-Quotient Register)为乘商寄存器,X为操作数寄存器。这3个寄存器在完成不同运算时,所存放的操作数类别也各不相同。
这里写图片描述
不同机器的运算器结构是不同的。运算器可将运算结果从ACC送至存储器中的MDR;而存储器的操作数也可从MDR送至运算器中的ADD、MQ、X。有的机器用MDR取代X寄存器。

(3)控制器
控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。具体而言,它首先要命令存储器读出一条指令,称为取指过程。接着它对这条指令进行分析,之处该指令要完成什么操作,并按寻址特征知名操作数的地址,称为分析过程。最后根据操作数所在地址及指令的操作码完成某种操作,称为执行过程。
完成一条指令操作分为取指、分析、执行三个阶段。
控制器由程序计数器(Program Counter,PC)、指令寄存器(Instruction Register,IR)以及控制单元(CU)组成。
PC用来存放当前欲执行指令的地址,它与主存储器的MAR之间有一条直接通道,且具有自动加1的功能,即可自动形成下一条指令的地址。IR用来存放当前指令,IR的内容来自主存的MDR。IR中的操作码(OP(IR))送至CU,记作OP(IR)—>CU,用来分析指令;其地址码(Ad(IR))作为操作数的地址送至存储器的MAR,CU用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用来控制所被控对象。
PC-> IR | IR操作数->CU:分析指令
| IR地址码->MAR

控制器基本任务:按照一定顺序一条接着一条取指令、指令译码、执行指令。
指令周期分为取指周期和执行周期
-取指周期中从内存读取的信息流是指令流,流向控制器
-执行周期中从内存读出的信息流是数据流,流向运算器

(4)I/O
I/O子系统包括各种I/O设备及其相应接口。每一种I/O设备都由I/O接口与主机联系,它接收CU发出的各种控制命令,并完成相关操作。

计算机工作全过程
输入程序和数据
程序的首地址——PC
启动运行程序
取指令PC—>MAR—>M—>MDR—>IR,(PC+1)—>PC
分析指令OP(IR)—>CU
执行指令Ad(IR)—>MAR—>M—>MDR—>ACC
打印结果
停机

区分指令地址、操作码、地址码
指令由操作码和地址码组成,例如,某机的指令字长为16位,其中操作码占6位,地址码占10位。操作码表示机器所执行的各种操作,地址码表示参加运算的数在存储器内的位置。
这里写图片描述
这里写图片描述

1.3计算机的性能指标
机器字长 是指CPU一次能处理数据的位数,也可指参与运算的数的基本位数,它是由加法器、寄存器的位数决定的。

数据总线一次所能并行传递信息的位数,称为数据通路宽度。

一个主存储器所能存储的全部信息量称为主存容量。

存储器容量(主存容量和辅存容量)
主存容量是指主存中存放二进制代码的总位数。(也可以是字节数)

存储容量=存储单元个数*存储字长(每个存储单元有多少个0或1)
MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长。例如,MAR为16位,根据2^16=65536,表示存储体内有65536个存储单元(即64K个存储字,2^10*2^6=64*1K);而MDR为32位,表示存储容量为2^16*32=2^21=2M位
现代计算机常以字节数来描述容量大小,因一个字节被定义为8位二进制代码,故用字节数便能反映主存容量。故上述存储容量为2^3*2^18位=2^18字节,记作2^18B,或者256KB。
辅存容量用字节数表示,如某辅存(硬盘)容量为80GB。

吞吐量是指系统在单位时间内处理请求的数量。
响应时间是指系统对请求做出响应的时间。
包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)的综合。

CPU的主频又称时钟频率,表示CPU内数字脉冲信号振荡的速度。(单位时间内CPU的时钟周期数)
主频的倒数就是CPU的时钟周期,CPU最小的时间元素。每个动作至少需要一个时钟周期。
主频=时钟周期数/s
CPI 是指每条指令执行所用的时钟周期数
IPC 每个时钟周期执行的指令数
CPI=1/IPC

MIPS表示每秒执行多少百万条指令
—MIPS =指令条数/执行时间*10^6
— =主频/CPI
MFLOPS表示每秒执行多少百万次浮点运算

提高计算机系统速度的因素
—提高CPU的时钟频率 (主频)
—优化数据通路结构,解决速度瓶颈可以提高计算机系统的吞吐量,从而加快程序的执行速度
—对程序进行编译优化,可以提高程序的执行效率,缩短程序的执行时间

原创粉丝点击