计算机组成原理(一)——计算机系统概述

1. 引言

在学习计算机组成原理之前,首先我们要了解什么是计算机系统。计算机系统=硬件+软件

硬件:计算机的实体,如主机、外设等。

软件:由具有各类特殊功能的程序组成。

计算机组成原理主要研究的是计算机系统里的硬件。

2. 计算机发展历程(了解,大纲已删)

2.1 计算机硬件的发展(四代变化)

(1)第一代计算机(1946~1957年)——电子管时代。

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

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

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

2.2 计算机软件的发展

计算机语言的发展经历了面向机器的机器语言和汇编语言、面向问题的高级语言。其中高级语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的FORTRAN、结构化程序设计的PASCAL到面向对象的C++和适应网络环境的Java。

3. 计算机系统层次结构

硬件系统和软件系统共同构成了一个完整的计算机系统。硬件是指有形的物理设备,是计算机系统中实际物理装置的总称。软件是指在硬件上运行的程序和相关的数据及文档。对于某一个功能来说,若其既可以用软件实现,又可以用硬件实现,则称为软/硬件在逻辑功能上是等价的

3.1 计算机硬件的基本组成

3.1.1 早期冯诺依曼机结构

1945 年,冯·诺依曼中提出了冯·诺依曼体系结构,又称:存储程序计算机。即:程序本身是存储在主机内存中的,可以通过加载不同的程序来解决不同的问题。

冯诺依曼在研究EDVAC(离散变量自动电子计算机)机时提出了>“存储程序”的概念。

存储程序的基本思想:将事先编制好的程序和原始数据送入主存储器后才能执行,一旦程序被启动执行,就无须操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束。

存储程序:将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令。以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

冯诺依曼机结构组成:

计算机组成原理(一)——计算机系统概述——冯诺依曼结构.png

冯诺依曼计算机特点:

  1. 计算机由五大部件组成::运算器,存储器,控制器,输入设备,输出设备。
  2. 指令和数据以同等地位存于存储器,可按地址寻访。
  3. 指令和数据用二进制表示。
  4. 指令由操作码和地址码组成。
  5. 存储程序。
  6. 以运算器为中心。(输入/输出设备与存储器之间的数据传送通过运算器完成。)

3.1.2 现代计算机结构

计算机组成原理(一)——计算机系统概述——现代计算机结构.png

现代计算机结构特点:以存储器为中心。

CPU=运算器+控制器

计算机组成原理(一)——计算机系统概述——现代计算机结构系统.png

3.1.3 硬件组成小结

计算机组成原理(一)——计算机系统概述——硬件组成小结.png

3.2 各硬件的工作原理

3.2.1 主存储器的组成

存储器被分为主存储器(也称内存储器或主存,我们还常说他是运行内存)和辅助存储器(也称外存储器或外存,我们也常说他是机身存储)。CPU能够直接访问的存储器是主存储器。辅助存储器用于帮助主存储器记忆更多的信息。主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式

计算机组成原理(一)——计算机系统概述——主存储器的组成.png

MAR:地址寄存器。

MDR:数据寄存器。

存储体:存放二进制信息。

CPU从主存储器读取数据过程:首先,CPU将所要读取数据的地址写到MAR地址寄存器里。然后,主存储器根据MAR地址寄存器里接收到的地址信息,去存储体里找到该地址上的数据,并将其写到MDR的数据寄存器里。最后,CPU通过数据总线去MDR里读取想要的数据。

CPU向主存储器写入数据过程:首先,CPU先向MAR里写入想要写入数据所存放的地址。然后,CPU通过控制总线告诉主存储器这次操作为写操作。最后,CPU通过数据总线向MDR里写入该地址上想要写入的数据。

注意:CPU向主存储器里进行读写操作时,一般都是先给MAR,再给CU,MDR会等待操作以后才进行数据读写。

先给MAR,再通过CU给控制信号是因为在CPU执行读取指令的过程中,这个地址由PC(程序计数器)提供,通过内部总线传递到MAR。当MAR接收到地址后,它会通过地址总线将指令地址发送到存储器。

在地址信号稳定之后,CPU的控制单元(CU)才会发出读写信号。这是因为需要确保地址信号已经稳定,防止在地址信号变化期间错误地写入数据,从而避免破坏数据。

因此,CPU在执行读取指令的过程中,是先向MAR发送地址,等地址信号稳定后再通过CU发出读写信号。这个过程确保了数据读取的准确性和可靠性。

3.2.2 运算器的基本组成

计算机组成原理(一)——计算机系统概述——运算器的组成.png运算器的主要作用是用于进算术运算和逻辑运算

运算器的核心是算术逻辑单元(ALU)。运算器包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等。

运算器内部还有程序状态寄存器(PSW),也称标志寄存器。(PSW即操作系统里所讲的内核态和用户态的标志位,可以联系我的操作系统第一章笔记里的中断和异常一起学习。[操作系统(一)—— 计算机系统概述]

3.2.3 控制器的基本组成

计算机组成原理(一)——计算机系统概述——控制器的基本组成.png

一条指令的完成分为三个阶段:

​ 第一阶段:会根据PC里面记录的指令地址,从内存里取出该地址上的指令。被取出的指令会放在IR里。

​ 第二阶段:CU分析IR里的指令。

​ 第三阶段:当CU分析完IR指令以后,CU会控制其它部件,来配合着完成指令的具体执行。

注意:很多地方也会把前面两个阶段统一的称为取指阶段,最后一个阶段称为执行阶段。

3.2.4 计算机工作过程

这里以执行下面这段程序为例,来展示计算机的工作过程。

1
2
3
4
5
int a=2,b=3,c=1,y=0;
void main()
{
y=a*b+c;
}

这段程序经过编译之后,以机器指令的形式装载进如下图的主存。

计算机组成原理(一)——计算机系统概述——主存装载指令.png

第一条指令(主存地址为0)执行过程:

计算机组成原理(一)——计算机系统概述——第一条指令执行过程.png

第二条指令(主存地址为1)执行过程:

计算机组成原理(一)——计算机系统概述——第二条指令执行过程.png

第三条指令(主存地址为2)执行过程:

计算机组成原理(一)——计算机系统概述——第三条指令执行过程.png

第四条指令(主存地址为3)执行过程:

计算机组成原理(一)——计算机系统概述——第四条指令执行过程.png

第五条指令(主存地址为4)执行过程:

计算机组成原理(一)——计算机系统概述——第五条指令执行过程.png

注意:CPU区分指令和数据的依据:指令周期的不同阶段。即CPU根据指令执行周期的不同,就处于不同的阶段,CPU就能区分出这次从内存里取出的是指令还是数据。

3.2.5 硬件工作原理小结

计算机组成原理(一)——计算机系统概述——硬件工作原理小结.png

3.3 计算机系统层次结构

3.3.1 计算机系统的层次结构

计算机是一个硬软件组成的综合体。因为面对的应用范围越来越广,所以必须有复杂的系统软件和硬件的支持。由于软/硬件设计者和使用者从不同角度、用不同语言来对待同一个计算机系统,因此他们看到的计算机系统的属性对计算机系统提出的要求也就各不相同。

为了针对上述情况,就产生了计算机系统的多级层次结构的作用,根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。

但关于计算机系统层次结构的分层方式,目前尚无统一的标准。

计算机组成原理(一)——计算机系统概述——计算机系统层次结构.png

上图是常用的一种计算机系统层次结构。大致可分为以下5级:

  1. 第1级是微程序机器层,这是一个实在的硬件层,由机器硬件直接执行微指令。
  2. 第2级是传统机器语言层,这也是一个实际的机器层,由微程序解释机器指令系统。
  3. 第3级是操作系统层,它由操作系统程序实现。(可查看操作系统笔记,在此不详述。)
  4. 第4级是汇编语言层,这一层由汇编程序支持和执行,借此可编写汇编语言源程序。
  5. 第5级是高级语言层,它是面向用户的,是为了方便用户编写应用程序而设置。

注意:

  1. 层次之间的关系紧密,下层是上层的基础,上层是下层的扩展。
  2. 软件和硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。可以看出,ISA是指软件能感知到的部分,也称软件可见部分。

3.3.2 三个级别的语言

三个级别的语言分别是:机器语言、汇编语言和高级语言。

机器语言:也称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。

汇编语言:汇编语言用英文单词或其缩写代替二进制的指令代码。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言程序后,才能在计算机的硬件系统上执行。

高级语言:高级语言是为方便程序设计人员写出解决问题的处理方案和解题过程的此程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。

补充:各种翻译程序的概念

  1. 编译程序(编译器):将高级语言编写的源程序全部语句依次全部翻译成机器语言程序,而后再执行机器语言程序。
  2. 解释程序(解释器):将源程序的一条语句翻译成对应机器语言的语句,并立即执行。紧接着再翻译下一句。
  3. 汇编程序(汇编器):将汇编语言程序翻译成机器语言程序。

如果某一功能能被硬件实现也能被软件实现,在用户角度来看,它在功能上是等价的。这一等价性被称为软/硬件逻辑功能的等价性。(可查看3.计算机系统层次结构一栏的开头)

计算机组成原理(一)——计算机系统概述——三个级别的语言.png

3.3.3 计算机层次结构小结

计算机组成原理(一)——计算机系统概述——计算机层次结构.png

4. 计算机性能指标

4.1 机器字长

通常所说的“某16位或32位机器”,其中的16,32指的是机器字长,简称字长。字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、ALU有关。

补充:计算机中的ALU和通用寄存器的位数(宽度)一定与机器字长相同。

考题:下列给出的部件中,其位数(宽度)一定与机器字长相同的是( B)。

​ Ⅰ. ALU Ⅱ. 指令寄存器 Ⅲ. 通用寄存器 IV. 浮点寄存器

​ A. 仅Ⅰ、Ⅱ B. 仅Ⅰ、Ⅲ C. 仅Ⅱ、Ⅲ D. 仅Ⅱ、Ⅲ、IV

解答:

机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。因为计算机中数的表示有定点数和浮点数之分,定点数又有定点整数和定点小数之分,这里所说的整数运算即定点整数运算。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度。

机器字长反映了计算机的运算精度,即字长越长,数的表示范围也越大,精度也越高。机器的字长也会影响机器的运算速度。倘若CPU字长较短,又要运算位数较多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响整机的运行速度。

机器字长与主存储器字长通常是相同的,但也可以不同。不同的情况下,一般是主存储器字长小于机器字长,例如机器字长是32位,主存储器字长可以是32位,也可以是16位,当然,两者都会影响CPU的工作效率。

Ⅰ. ALU(算术逻辑单元):ALU是执行算术和逻辑操作的核心部件。它通常是根据机器字长设计的,能够处理与机器字长相同位数的数据。因此,ALU的位数一定与机器字长相同。正确。

Ⅱ. 指令寄存器:指令寄存器用于存储当前执行的指令。其位数(宽度)可能比机器字长更小,因为指令可能只需要较少的位数来表示。错误。

Ⅲ. 通用寄存器:通用寄存器是用于存储临时数据和计算结果的寄存器。这些寄存器通常与机器字长相匹配,以便能够存储和处理与机器字长相同位数的数据。正确。

IV. 浮点寄存器:浮点寄存器用于存储浮点数数据。其位数可以与机器字长相同,也可以不同,取决于计算机体系结构的设计。错误。

综上,Ⅰ和Ⅲ的位数一定与机器字长相同。本题选B。

4.2 数据通路带宽

数据通路带宽是指数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)。这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。

例如:假设数据通路带宽为8bit,那么想从存储体里读取16bit数据到CPU里,就要进行两次数据传输。

4.3 主存容量

主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数×字长(如512K×16位)来表示存储容量。其中MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。例如MAR位16位,表示216=65536,即此存储体内有65536个存储单元(可称为64K内存,1K=1024),若MDR为32位,则表示存储容量为64K×32位。

计算机组成原理(一)——计算机系统概述——主存容量.png

4.4 运算速度

4.4.1 吞吐量和响应时间

(1)吞吐量:指系统在单位时间内处理请求的数量。它取决于信息能够多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入。

(2)响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。

4.4.2 主频&CPU时钟周期&CPI

(1)CPU时钟周期:机器内部主时钟脉冲信号的宽度,它是CPU工作的最小时间单位。单位常用微秒,纳秒。

​ 时钟脉冲信号由机器脉冲源发出的脉冲信号径整形和分频后形成。

​ 时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定。

​ 时钟周期也以指令流水线的每个流水段的最大延迟时间确定。

(2)主频(CPU时钟频率):机器内部主时钟的频率(CPU内数字脉冲信号振荡的频率),即时钟周期的倒数,它是衡量机器速度的重要参数。单位常用Hz(赫兹)(10Hz:每秒振荡10次或每秒产生10个时钟周期。)

对于同一型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。主频最直观的理解就是每秒有多少个时钟周期。

(3)CPI:即执行一条指令所需的时钟周期数。不同的指令,CPI不同。相同的指令,CPI也可能发生变化。

执行一条指令的耗时=CPI×CPU时钟周期

计算机组成原理(一)——计算机系统概述——主频和时钟周期和CPI.png

4.4.3 IPS&FLOPS&基准程序

(1)IPS:每秒执行多少条指令。

(2)FLOPS:即每秒执行多少次浮点运算。

计算机组成原理(一)——计算机系统概述——IPS和FLOPS.png

(3)基准程序:专门用来进行性能评价的一组程序,如鲁大师跑分,就是通过测试电脑执行程序进行性能评估。

4.4.5 补充思考

  1. 主频高的CPU一定比主频低的CPU快吗?

    答:不一定,如果两个CPU,A的主频为2GHz,平均CPI=10,则IPS=0.2G。

    B的主频为1GHz,平均CPI=1,则IPS=1G。显然B的CPU主频没A高,但比A快。

  2. 若A主频高于B,且A、B两个CPU的平均CPI相同,那么A一定更快吗?

    答:不一定,还要看指令系统,如果A不支持乘法指令,只能用多次加法实现乘法;而B支持乘法指令,那么B可能表现的比A快。

  3. 基准此程序执行得越快说明机器性能越好吗?

    答:不一定,基准程序中的语句存在频度差异,运行结果也不能完全说明问题。

4.5 计算机性能小结

计算机组成原理(一)——计算机系统概述——计算机性能小结.png