001 计算机系统概论【计组】

1、计算机发展

1)第一代计算机(1946—1957)—— 电子管时代。
特点:逻辑元件使用电子管;使用机器语言编程;主存储器采用磁鼓和磁心存储器,容量极小;体积庞大,成本高;运算速度很慢,大概每秒在几千至上万次左右。

​ 第一台计算机,ENIAC,用于解决当时美国国防部弹道研究实验室开放新武器的射程和检测模拟运算表的难题,与1946年交付使用,ENIAC使用十进制运算,使用18000多个电子管,耗电量达150千瓦,重达30吨,占地面积为1500平方英尺,而且需要手工搬动开关和拨、插电缆来编制程序,使用起来非常非常之麻烦,但在当时它的运算速度无疑比其他工具快,每秒可进行5000多次加法运算;ENIAC的出现标志着计算工具已经进入一个崭新的时代。ENIAC于1955年正式退役。

​ 1945年ENIAC的顾问、数学家冯诺·依曼提出了存储程序的概念,即将程序和数据一起存放在存储器中,使编程更加简单。

2)第二代计算机(1958—1964)—— 晶体管时代。

​ 特点:逻辑元件使用晶体管;主存储器采用磁芯;焊点多达百万个,导致计算机工作的可靠性不高;出现面向过程高级语言,如Fortran;运算速度达几万次至几十万次每秒。(晶体管由贝尔实验室制成)

3)第三代计算机(1965—1971)—— 中小规模集成电路。

​ 随着新的光刻技术和设备的成熟,计算机进入了一个崭新的时代——集成电路时代。

​ 特点:逻辑元件使用中小规模集成电路;以操作系统为中心;主存储器以半导体存储器

4)第四代计算机(1972至今)—— 大规模超大规模集成电路时代

​ 特点:逻辑元件采用大规模超大规模集成电路,出现了微处理器

2、计算机系统简介

2.1 计算机系统的组成

​ 计算机系统有“硬件”和“软件”两大部分组成。

​ 所谓硬件,指的是计算机的实体部分,是看得见摸得着的各种电子元器件,如主机、外部设备等

​ 所谓软件,它是看不见摸不着的,是由人们使用编程语言编制的具有特定功能的程序。

​ 计算机软件通常可以分为两类:系统软件和应用软件。

​ 系统软件主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。

​ 应用软件又称应用程序,它是用户根据任务需要所编写的各种程序。

​ 一台计算机的性能取决于软硬件功能的总和。

​ 硬件为软件提供了解开,比如指令集,我们可以应用这些指令集编写能够完成一定功能的软件。

​ 软件和硬件在逻辑上是等效的。比如实现乘法可以使用多次加法来实现,也可以设计一个专门用于乘法运行的逻辑电路;前者可以使用软件的调度来进行多次加法实现乘法,成本低,但速度较慢;后者直接进行乘法运行,层高较高,但速度快。

​ 固件:指设备内部保存的设备“驱动程序”,可以将软件永恒的存于只读存储器中,如BIOS,还有破解版路由器就是通过刷固件来实现其他操作的(懂的都懂)。

2.2 计算机系统的层次结构

现代计算机的解题过程:通常由用户用高级语言编写程序(称为源程序),然后将它和数据一起送入计算机内,再由计算机将其翻译成机器能够识别的机器语言程序(称为目标程序),机器自动运行该机器语言程序,并将计算结果输出。过程如图1.1:
(img-bcrvZ4lw-1633762141210)(计组1.assets/image-20211005212933364.png)]
​ 早期,用户只能使用机器语言的二进制代码(0、1)来编写程序(即机器语言程序)。使用机器语言编写程序难度很大,操作过程也极容易出错,同时不同的机器机器语言是不同的,所以可移植性很差。但编写好的程序可以直接在机器上执行,程序执行效率较高。我们把直接执行机器语言的机器称为实际机器M1,如图1.2所示:
在这里插入图片描述

​ 20世纪50年代开始出现了符号化的程序设计语言即汇编语言,它使程序员可以不再使用繁杂的二进制代码来编写程序,从而提高了程序的编写效率。但实际上没有一种机器能够直接识别汇编语言,必须先将汇编语言程序翻译为机器语言程序才能被机器所执行,这个翻译过程是有计算机系统软件中的汇编程序来完成的。我们把这台具有翻译功能的机器看做是一台M2机器,那么可以任务M2在M1之上,用户可以利用M2的翻译功能直接向M2输入汇编语言程序,然后有M1来执行并输出结果。因此,M2并不是一台实际机器,它只是我们感到存在的一台具有翻译功能的机器,我们称这类机器为虚拟机器。这样,整个计算机系统便具有两级层次结构,如图1.3所示:
在这里插入图片描述

​ 使用汇编语言编写程序是,仍要求程序员对实际机器M1的内部组成和指令系统非常熟悉,也就是说程序员必须经过专门的训练,否则是无法操作计算机的;其次,汇编语言的每条指令是和机器指令一一对应的,因而摆脱不了实际机器的指令系统,每台机器必须拥有一种与之对应的汇编语言,也就是说在我机器可以运行的程序,在其他机器上可能运行不了或是运行结果不错误,所以它的可移植性和机器语言一样差。

​ 这时候,高级语言相继问世,如FORTRAN、BASIC、PASCAL、C等。高级语言使用很接近自然语言,简单易懂,且具有较强的可移植性。此时,程序员就不需要去了解实际机器M1的内部指令系统这些东西了,只需要掌握高级语言的语法和语义即可直接编写程序。当然,机器M1本身是不能识别高级语言的,因此,在进入实际机器M1运行前必须先将高级语言程序翻译差汇编语言程序(或其他中间语言程序),然后再将其翻译成机器语言程序;也可以直接将高级语言程序翻译成机器语言程序。这些工作都是有虚拟机器M3来完成的,程序员不需要这个这个翻译过程,因此又可得出具有三级层次结构的计算机系统,如图1.4所示:
在这里插入图片描述

​ 通常,将高级语言程序翻译成机器语言程序的软件称为翻译程序。翻译程序有两种:一种是编译程序,另一种是解释程序。编译程序是将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序,因此,只要源程序不变,就无须再次进行翻译。目前市场上流行的C、C++等语言就是用编译程序来完成翻译的。解释程序是将源程序的一条语句翻译成对应的机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句并执行,如此重复至完成源程序的全部翻译任务。特点是翻译一次执行一次,即使下一次重复执行该语句是,也必须重新翻译。目前市场上流行的JavaScript、Python等语言就是用解释程序来完成的。(至于Java有人说是解释型也有人说是编译型)

​ 由于软件的发展,使实际机器M1向上延伸构成了各级虚拟机器。同时,机器M1内部也可以乡下延伸二形成下一级的微程序机器M0.微程序机器M0可以看做是对机器M1的分解,便于提升效率(有关微程序机器后面再做介绍)。由于M0也是实际机器,因此,为了区别于M1,通常又将M1称为传统机器,将M0称为微程序机器。这样又可以认为计算机系统具有四级层次结构,如图1.5所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDuaYgkx-1633762141236)(计组1.assets/image-20211005215109093.png)]

​ 在上述的四级层次结构的系统中,实际上在实际机器M1与虚拟机器M2之前还有一级虚拟机器,它是由操作系统构成的。操作系统提供了在汇编语言和高级语言的使用和是乡村所需的基本操作,还起到控制并管理计算机系统全部硬件和软件资源的作用,例如操作系统会把一些长时间没有使用的进程或是一些系统垃圾及时释放。操作系统的功能是通过其控制语言来实现的。图1.6描绘了一个常见的五级计算机系统的层次结构。
在这里插入图片描述

​ 虚拟机M4还可以向上延伸,构成应用语言虚拟机。这一级是为使计算机满足某种用途而专门设计的,该级所用到的语言是各种面向问题的应用语言,如应用于人工智能和计算机设计等方面的语言。应用语言编写的程序一般有应用程序包翻译到虚拟机器M4上。

3、计算机的基本组成

3.1 冯·诺依曼计算机的特点及结构

​ 1945年,数学家冯·诺依曼在研究EDVAC机时提出了“存储程序”的概念。以此概念为基础的各类计算机通称为冯·诺依曼机。它的特点如下:

  • 计算机有运算器、存储器、控制器、输入设备和输出设备五大部件组成。
  • 指令和数据以同等地位存放于存储器内,并可按地址寻址。
  • 指令和数据均用二进制数表示。
  • 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
  • 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
  • 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。

​ 典型的冯·诺依曼计算机结构如图1.7所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-edhAgKKC-1633762141239)(计组1.assets/image-20211007205132325.png)]

​ 冯·诺依曼结构的计算机中,输入的原始数据首先送到运算器中,然后又由运算器送到存储器中,如果需要进行数据运算,又将数据送到运算器中进行运算,然后将结果送到输出设备中输出。当然数据由输入设备流向运算器、由运算器流向存储器等这些过程,都是由控制器来控制的。

3.2 现代计算机组织结构

​ 随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量 I/O设备的速度和CPU的速度差距悬殊,因此以运算器为中心的结构已经不能够满足现在计算机发展要求了。现代计算机已经发展为以存储器为中心,是 I/O 操作尽可能绕过CPU,直接在 I/O 设备和存储器之间完成,以提高计算机整体运行效率,其结构如图1.8所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LOiBYmzo-1633762141240)(计组1.assets/image-20211007194850117.png)]

图中各部件的功能如下:

  • 运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内
  • 存储器用来存放数据和程序
  • 控制器用来控制、指挥和数据的输入、运行以及处理运算结果
  • 输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式
  • 输出设备可将机器运行结果转换为人们熟悉的信息形式

计算机的五大部件(又称五大子系统)在控制器的统一指挥下有条不紊的自动工作

​ 由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,尤其在大规模集成电路制作工艺出现后,这里大部件往往集成在同一芯片上,因此,通常将它们合起来统称为中央处理器(Central Processing Unit, CPU)。把输入设备与输出设备简称为 I/O 设备(Input/Output Enquipment)。

​ 这样,现在计算机可以认为有三大部分组成:CPU、I/O 设备以及主存储器(Main Memory, MM),如图1.9所示。CUP与主存储器联合起来又可称为主机,I/O 设备又可称为外部设备。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LZrZGBWZ-1633762141242)(计组1.assets/image-20211007210812226.png)]

​ 图1.9中主存储器是存储器子系统中的一类,用来存放数据和程序,可以直接与CPU交换信息。另一类称为辅助存储器,简称辅存,又称外存。

​ 算术逻辑单元(Arithmetic Logic Unit,ALU)简称算辑部件,用来完成算术逻辑运算。控制单元(Control Unit,CU)用来解释存储器中的指令,并发出各种操作命令来执行指令。ALU和CU是CPU的核心部件。

​ I/O 设备也受CU控制,用来完成相应的输入输出操作。

3.3 计算机各功能部件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fqv8NeE5-1633762141244)(计组1.assets/image-20211008203408639.png)]

1)主存储器(Main Memory,MM)

​ 主存储器(简称主存或内存)包括存储体M、各种逻辑部件及控制电路等。存储体有多个存储单元组成,每个存储单元有包含若干个存储元件(或称存储基元、存储元),每个存储元件能存放一位二进制位(0或1)。可见,存储单元可存储一串二进制代码,称这串代码位存储字,称这串代码的位数位存储字长。存储字长可以是1Byte(8bit)或是字节的偶数倍。

​ 主存的工作方式就是按存储单元的地址编号来实现对数据的存取的,这种存取方式称为按地址存取方式,及按地址访问存储器(简称访存)。

​ 为了能实现按地址访问的方式,主存中还必须配置两个寄存器MAR和MDR。MAR(Memory Address Register)是存储器地址寄存器,用来存放欲访问的存储单元的地址。MDR(Memory Data Register)是存储器数据寄存器,用来存放从存储体单元取出的代码或准备往某存储单元存入的数据。时序控制逻辑用于产生存储器操作所需的各种时序信号。

​ MAR的位数对应着存储单元的个数,如MAR为10为,则有2的10次方个存储单元,即1024,记为1K。MDR的位数与存储字长相等,MDR的长度代表了系统支持的最大主存。

​ 随着硬件技术的发展,而将MAR和MDR集成再了CPU芯片中。

2)运算器(Arithmetic Unit)

​ 运算器是计算机的执行部件,用于进行算术运算和逻辑运算。运算器最少包括3个寄存器(现代计算机内部通常设有通用寄存器)和一个算数逻辑单元(Arithmetic Logic Unit,ALU)。其中ACC(Accumulator)为累加器,MQ (Multiplier-Quatient Register)为乘商寄存器,X为操作数寄存器,它们都是用来暂存操作数和中间结果的。

在这里插入图片描述

3)控制器(Controller)

​ 控制器是计算机的大脑,它指挥着各部件自动地、协调地工作。

​ 控制器由程序计数器(Program Counter,PC)、指令寄存器(Instruction Register,IR)和控制单元(Control Unit,CU)组成。PC用来存放当前欲执行指令的地址,它与主存的MAR之间由一条直接通路且具有自动加1的功能,这样就能自动形成下一条指令的地址。IR用来存放当前的指令,IR的内容来自主存的MDR。CU用来分析当前指令需要完成的操作,并发出各种控制信号,用来控制所有被控对象。

​ 完成一条指令需要三步:取指令、分析指令和指令指令。IR中的操作码 (OP(IR)) 送至CU,记作 OP(IR) → CU,用来分析指令;其地址码 (Ad(IR)) 作为操作数的地址送至存储器的MAR,记作 Ad(IR) → MAR。

4)I/O(Input/Output)

​ I/O 子系统包括各种 I/O 设备机器相应的解开,每一种 I/O 设备都有 I/O 接口与主机联系,它结束CU发出的各种控制命令,并完成相应的操作。

​ 输入设备的主要功能是将程序和数据以机器所能是被和接受的信息形式输入计算机。输出设备的作用是将计算机处理的结构以人们所能接受和识别的心事或其他系统所要求的信息形式输出。

4. 计算机指令执行分析

​ 我们通常用 M 表示存储器的任一地址号;[M] 表示对应 M 地址号单元中的内容;X 表示 X 寄存器,[X] 表示 X 寄存器中的内容;ACC 表示累加器,[ACC] 表示累加器中的内容;MQ表示乘商寄存器,[MQ] 表示乘商寄存器中的内容。

​ 假设 ACC 中已存在前一时刻的运算结果,并作为下述四则运算中的一个操作数。

4.1 加法操作

​ 加法过程为:

① [M] → X
② [ACC] + [X] → ACC

​ 将 [ACC] 看做被加数,先从主存中去一个存放在 M 地址号单元的加数 [M],送至运算器的 X 寄存器中,然后将被加数 [ACC] 与加数 [X] 相加,结果保留在 ACC 中

4.2 减法操作

​ 加法过程为

① [M] → X
② [ACC] - [X] → ACC

​ 和加法操作类似

4.3 乘法操作

​ 除法过程为:

① [M] → MQ
② [ACC] → X
③ 0 → ACC
④ [X] * [MQ] → ACC//MQ 

​ 将 [ACC] 看做被乘数,先把 M 地址号单元的乘数 [M] 送至乘商寄存器 MQ 中,再把 [ACC] 作为被乘数送至 X 寄存器中,并件 [ACC] 置为"0",然后 [X] 和 [MQ] 相乘,将结果保留在 ACC 中,如果 ACC 不足以把结果存下,则将结果的高位保留在 ACC 中,乘积低位送至 MQ 中。

4.4 除法操作

① [M] → X
② [ACC] / [X] → MQ
③ 余数R送至ACC中

​ 将 [ACC] 看做被除数,先取出存放在主存 M 号地址单元中的除数 [M] 并送至 X 寄存器中,然后 [ACC] 除以 [X],将结果暂存与 MQ,余数R存至 ACC 中。

4.5 完整指令执行过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wiBkLyb-1633762141245)(计组1.assets/image-20211009105044533.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7CgkZc53-1633762141247)(计组1.assets/image-20211009105347222.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PEbevoNc-1633762141248)(计组1.assets/image-20211009105636799.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yCxVxaNe-1633762141250)(计组1.assets/image-20211009105728766.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hli0GsP3-1633762141251)(计组1.assets/image-20211009105804894.png)]

5、计算机的性能指标

5.1 机器字长

​ 机器字长是指CPU一次能处理的位数,通常与CPU的寄存器位数有关。字长越长,数的表示范围越大,精度也越高。倘若CPU字长较短,又要运算位数较多的数据,那么需要经过多次运算才能完成,这样势必会影响机器的运算速度。

​ 机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或ALU)、数据总线以及存储字长的位数。所以机器字长的确定不能单从精度和数的表示范围来考虑。

5.2 主存容量

​ 主存容量是指主存中存放二进制代码的总位数,即最大容量,主存容量的计算公式为

​ 主存容量 = 存储单元个数 x 存储字长

​ MAR的位数反映存储单元的数量最多能有多少个,MDR位数等于存储字长等于每个存储单元的大小

在这里插入图片描述

如:MAR为32位,MDR为8位,则主存容量为=2^32 x 8bit = 4GB

5.3 运算速度

(1)主频和CPU时钟周期

  • 主频(CPU时钟频率)。机器内部主时钟的频率,它表示CPU内数字脉冲信号震荡的频率,是衡量机器速度的重要参数。对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。
  • CPU时钟周期。通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作执行至少需要1个时钟周期。

CPU时钟周期 = 1/主频,主频通常以Hz(赫兹)为单位,1Hz表示每秒有1个脉冲信号

(2)CPI(Clock cycle Per Instruction),指执行一条指令所需的时钟周期数。

(3)CPU执行时间,指运行一个程序所花费的时间

​ CPU执行时间 = CPU时钟周期数/主频 = (指令条数*CPI)/ 主频

​ 上述公式表明,CPU的性能(CPU执行时间)取决于三个要素:①主频(时钟频率)②CPI ③指令条数

(4)MIPS、MFLOPS、CFLOPS和TFLOPS

  • MIPS(Million Instructions Per Second),即每秒执行多少百万条指令。MIPS = 指令条数/(执行时间*10^6)
  • MFLOPS(Million Floating-point Operations Per Second),即每秒执行多少百万次浮点运算。MFLOPS= 浮点操作次数/(执行时间*10^6)
  • GFLOPS(Giga Floating-point Operations Per Second),即每秒执行多少十亿次浮点运算。GFLOPS= 浮点操作次数/(执行时间*10^9)
  • TFLOPS(Tera Floating-point Operations Per Second),即每秒执行多少万亿次浮点运算。TFLOPS= 浮点操作次数/(执行时间*10^12)
若某CPU主频为1000Hz,某程序中共有100条指令,平局来看指令的CPI=3。则
该程序在该CPU上执行需要多长时间?
	(100 * 3) / 100 = 0.3s

参考文献:
[1]唐朔飞. 计算机组成原理. 第2版. 高等教育出版社
[2]王道论坛. 2021年计算机组成原理考研复习指导. 电子工业出版社

以上是我在学习至于所做笔记,如有不对的地方希望大家能够指出。

本人博客所有文章,均为原创。部分文章中或引用相关资料,但均已著明来源出处。可随意转载、分享,但需加本文链接,以及版权说明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值