加载中...

2、计算机的基本组成

一、冯诺依曼计算机的特点

说到计算机的发展,就不能不提到匈牙利科学家冯诺依曼(曾在德国柏林大学任教)。从20世纪初,物理学和电子学科学家们就在争论制造可以进行数值计算的机器应该采用什么样的结构。人们被十进制这个人类习惯的计数方法所困扰。所以,那时以研制模拟计算机的呼声更为响亮和有力。20世纪30年代中期,匈牙利科学家冯诺依曼大胆地提出,抛弃十进制,采用二进制作为数字计算机的数制基础。同时,他还说预先编制计算程序,然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作。

  1. 计算机由五大部件组成
- 存储器:存放数据和程序。
- 运算器:算术运算、逻辑运算。
- 控制器:指挥程序运行。
- 输入设备:将信息转换成机器能识别的形式。
- 输出设备:将结果转换成人们熟悉的形式。
  1. 指令和数据以同等地位存于存储器,可按地址寻访

  2. 指令和数据用二进制表示

  3. 指令由操作码和地址码组成

  4. 存储程序

  5. 以运算器为中心

冯.诺依曼计算机硬件

现代计算机硬件框图

现代计算机硬件框图

二、计算机的工作步骤

用计算机解决一个实际问题通常包含两大步骤。一个是上机前的各种准备,另一个是上机运行程序。

1、上机前的准备

  • 建立数学模型

    根据任务的要求,来建立数学模型。

  • 确定计算方法

确定计算方法

  • 编制解题程序

    编程举例

这些动作,最后会在计算机中变成按照指令的方式进行工作。在指令中,分为两部分,操作码和地址码。

操作码指明要进行什么操作,地址码表示要操作的数据在什么地方。

指令格式举例

程序清单

2、计算机的解题过程

解题过程也就是计算机程序是怎么样运行的过程,运行的过程涉及到计算机的控制器,存储器、运算器等。下面先逐个介绍各个器件。

2.1 存储器

存储器的主要功能就是保存数据,存储器由存储体、MAR(存储器地址寄存器)、MDR(存储器数据寄存器)组成

  • 存储体:我们的数据就存储在存储体中,存储体由若干个存储单元组成。

    • 存储单元:又称为:寄存器。每个存储单元中存储了一串01二进制代码,存储单元又是由若干个存储元件组成。

      一串01组成的二进制代码称为:存储字,代码有多长则称为存储字长。

      每一个存储单元都会分配有一个存储地址。将来在找某个数据的时候是按地址查找(按地址寻访)

    • 存储元件:每一个存储元件里面都存储了0或者1。

存储体举例

  • MAR(存储器地址寄存器):用来存储存储器的地址和每一个存储单元的地址,它的长度决定了存储单元的个数。

    例如:MAR = 4 位,即从0000到1111就有16种组合,存储单元的个数就有16个。

  • MDR(存储器数据寄存器):MDR保存要被写入地址单元或者从地址单元读出的数据,它的长度决定了存储单元的存储字长。

    MDR = 8 位,存储字长也是8位

MAR和MDR组合起来看:MAR = 4 位与MDR = 8 位,就是说存储体里面有16个存储单元,每个存储单元是8位的存储字长。

存储体

存储字长

2.2 运算器

运算器的主要功能是进行加减乘除等算术运算,还可以进行逻辑运算,又称为ALU(算术逻辑运算部件),计算机中通常采用二进制数,运算器长度一般是8、16、32、64位。

运算器由算术逻辑单元(ALU)、累加器(ACC,主要存放被加数、和、被减数、差、乘积高位、被除数、余数)、MQ(乘商寄存器,主要存放乘数、乘积低位和商)、状态寄存器、通用寄存器组(x)等组成,每个运算器中的器件也是不一样的。

运算器是数据加工处理部件,其中,算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作。

计算机运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中。

运算器的组成

2.3 控制器

控制器是计算机的神经中枢,指挥全机中各个部件自动协调工作。在控制器的控制下,计算机能够自动按照程序设定的步骤进行一系列操作,以完成特定任务。

  • 控制器内部的主要部件如下:

    ①指令寄存器(IR):存放由存储器取得的指令。

    ②译码器:将指令中的操作码翻译成控制信号。

    ③时序节拍发生器:产生时序脉冲节拍信号,使计算机有节奏、有次序地工作。

    ④操作控制部件:将控制信号组合起来,控制各个部件完成相应的操作。

    ⑤指令计数器(PC):计算并指出下一条指令的地址。

  • 控制器工作流程

    (1)取指令。控制器的指令计数器(Program Counter,PC)中存放当前指令的地址。执行一条指令的第一步就是把该地址送到存储器的地址驱动器,按地址取出指令,送到指令寄存器(Instruction Register,IR)中。同时,PC也拥有计数功能,能自动加一个的指令长度,准备取下一条指令。

    (2)分析指令(IR)。一条指令由两部分组成:一部分称为操作码(Operation code,OP)。指出该指令要进行什么操作;另一部分称为数据地址码,用于指出要对存放在哪个地址中的数据进行操作。

    在分析指令阶段,要将数据地址码送到存储器中取出需要的操作数到运算器。同时把OP送到指令译码部件(指令寄存器),翻译成要对哪些部件进行哪些操作的信号,再通过操作控制逻辑,将指定的信号(和时序信号)送到指定的部件。

    (3)发送操作控制信号(执行指令 CU)。将有关操作控制信号,按照时序安排发送到相关部件,使有关部件在规定的节拍中完成规定的操作。

控制器的组成

2.4 计算机完成一条指令的过程

1、机器启动后,PC(指令计数器,用来存放当前欲执行指令的地址,位于控制器中)是一开始存放指令的部件,

PC要将指令的地址送到MAR(存储器地址寄存器,用来存放存储单元的地址)PC----->MAR,pc也要加1。

2、再由MAR送给存储体,在控制器的控制下,存储体把指定存储单元中存储的指令取出来,暂存在MDR中(存储器地址寄存器,用来存放从存储体中某单元中取出的代码)。

3、这时指令已经存放到MDR中,取出的指令要送入IR(指令寄存器,用来存放当前要处理的指令,位于控制器中)MDR---->IR,此时完成取指过程。

4、分析指令进行存数:把IR中保存的指令的操作码部分送到CU(控制单元)中,OP(IR)---->CU,CU分析指令,发出信号来完成指令所需操作,因为本指令是存数指令,所以要将ACC中的数据放到存储体指定的单元中,在控制器的控制下,将IR中的地址码送到MAR,Ad(IR)---->MAR,然后由MAR送到存储体,告诉存储体要存入数据的地址是多少,然后把ACC中的数据存入到MDR,ACC—>MDR,因为存储体中输入和输出的数据都需要经过MDR,在控制器的控制之下,将MDR中的数据存放到存储体中。完成执行存数指令。

程序运行过程

三、计算机硬件的主要技术指标

衡量一台计算机性能的优劣势根据多项技术指标综合确定的。其中,既包括硬件的各种性能指标,又包括软件的各种功能。这里主要讨论硬件的技术指标。

  • 机器字长

机器字长是指CPU 一次能处理数据的位数,与 CPU 中的 寄存器位数有关。常说的32位计算机,64位计算机,指定就是计算机能一次处理32位、63位二进制数。

字长越长,数的表示范围越大,精度也越高。机器的字长也会影响机器的运算速度。倘若CPU字长较短,又要运算位数较多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响机器的运算速度。
机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或 ALU) ,数据总线以及存储字长的位数。所以机器字长的确定不能单从精度和数的表示范围来考虑。

  • 运算速度

计算机的运算速度与许多因素有关,如机器的主频,执行什么样的操作、主存本身的速度(主存速度快,取指.取数就快)等都有关。早期用完成一次加法或乘法所需的时间来衡量运算速度,即普通法,显然是很不合理的。后来采用吉普森(Gibson )法,它综合考虑每条指令的执行t间]以及它们在全部操作中所占的百分比。

现在机器的运算速度普遍采用单位时间内执行指令的平均条数来衡量,并用MIPS(Million In-struction Per Second,百万条指令每秒)作为计量单位。例如,某机每秒能执行200万条指令,则记作2 MIPS。也可以用CPI(Cycle Per Instruction)即执行一条指令所需的时钟周期(机器主频的倒数)数,或用FLOPS( Floating Point Operation Per Second , 浮点运算次数每秒)来衡量运算速度。

  • CPU执行时间:表示CPU执行一般程序所占用的CPU时间,可用下式计算:
    CPU执行时间 = CPU时钟周期数 * CPU时钟周期

  • CPI:表示每条指令周期数,即执行一条指令所需的平均时钟周期数。用下式计算:
    CPI = 执行某段程序所需的CPU时钟周期数 + 程序包含的指令条数

  • MIPS (Million Instructions Per Second)的缩写,表示平均每秒执行多少百万条定点指令数,用下式计算:
    MIPS = 指令数 + (程序执行时间 * 10^6)

  • FLOPS (Floating-point Operations Per Second) 的缩写,表示每秒执行浮点操作的次数,用来衡量机器浮点操作的性能。用下式计算:
    FLOPS = 程序中的浮点操作次数 / 程序执行时间(s)

  • 存储容量

    存储器的容量应该包括主存容量和辅存容量。主存容量是指主存中存放二进制代码的总位数。即
    存储容量=存储单元个数×存储字长

    • 存储器容量:存储器中所有存储单元的总数目, 通常用KB、MB、GB、TB来表示。
    • 存储器带宽:单位时间内从存储器读出的二进制数信息量,一般用字节数/秒表示。
posted @ 2021-10-10 17:19  沐风半岛  阅读(1128)  评论(0编辑  收藏  举报