计算机系统的发展史、基本组成、工作原理

1 计算机的发展史

1.1 第一台通用电子计算机的诞生

1946年,第1台通用电子计算机 ENIAC诞生:

  • 由电子真空管组成
  • 美国宾夕法尼亚大学研制
  • 用于解决复杂弹道计算问题
  • 5000次加法/s –平方、立方、sin、cos等
  • 用十进制表示信息并运算
  • 采用手动编程,通过设置开关和插拔电缆来实现

Electronic Numerical Integrator And Computer:电子数字积分计算机。

1.2 冯诺依曼的故事

  • 1944年,冯·诺伊曼参加原子弹的研制工作,涉及到极为困难的计算。
  • 1944年夏的一天,诺伊曼巧遇美国弹道实验室的军方负责人戈尔斯坦,他正参与ENIAC的研制工作。
  • 冯·诺依曼被戈尔斯坦介绍加入ENIAC研制组,1945年,他们在共同讨论的基础上,冯·诺伊曼以“关于EDVAC的报告草案”为题,起草了长达101页的总结报告,发表了全新的“存储程序通用电子计算机方案”。
  • 一向专搞理论研究的普林斯顿高等研究院批准让冯·诺依曼建造计算机,其依据就是这份报告。
  • Electronic Discrete Variable Automatic Compute(电子离散变量自动计算)。

1.3 现代计算机的原型

1946年,普林斯顿高等研究院(the Institute for Advance Study at Princeton,IAS )开始设计“存储程序”计算机,被称为IAS计算机(1951年才完成,并不是第一台存储程序计算机,1949年由英国剑桥大学完成的EDSAC是第一台)。

  • 在那个报告中提出的计算机结构被称为冯·诺依曼结构。
  • 冯·诺依曼结构最重要的思想是“存储程序(Stored-program)”工作方式:任何要计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行。一旦程序被启动,计算机应能在不需操作人员干预下,自动完成逐条取出指令和执行指令的任务。
  • 冯·诺依曼结构计算机也称为冯·诺依曼机器(Von Neumann Machine)。
  • 几乎现代所有的通用计算机大都采用冯·诺依曼结构,因此,IAS计算机是现代计算机的原型机。

IAS计算机结构大致如下:
计算机系统的发展史、基本组成、工作原理

  • 应该有个主存,用来存放程序和数据。
  • 应该有一个自动逐条取出指令的部件。
  • 还应该有具体执行指令(即运算)的部件。
  • 程序由指令构成。
  • 指令描述如何对数据进行处理。
  • 应该有将程序和原始数据输入计算机的部件。
  • 应该有将运算结果输出计算机的部件。

2 冯·诺依曼结构

2.1 冯·诺依曼结构计算机模型

计算机系统的发展史、基本组成、工作原理
早期,部件之间用分散方式相连。现在,部件之间大多用总线方式相连。

2.2 冯·诺依曼结构的主要思想

  • 计算机应由运算器、控制器、存储器、输入设备和输出设备五个基本部件组成。
  • 各基本部件的功能是:
    • 存储器不仅能存放数据,而且也能存放指令,形式上两者没有区别,但计算机应能区分数据还是指令;
    • 控制器应能自动取出指令来执行;
    • 运算器应能进行加/减/乘/除四种基本算术运算,并且也能进行一些逻辑运算和附加运算;
    • 操作人员可以通过输入设备、输出设备和主机进行通信。
  • 内部以二进制表示指令和数据。每条指令由操作码和地址码两部分组成。操作码指出操作类型,地址码指出操作数的地址。由一串指令组成程序。
  • 采用“存储程序”工作方式。

3 现代计算机结构

3.1 现代计算机结构模型

计算机系统的发展史、基本组成、工作原理
计算机中最基本的部件:

  • CPU:中央处理器;
  • PC:程序计数器;
  • MAR:存储器地址寄存器;
  • ALU:算术逻辑部件;
  • IR:指令寄存器;
  • MDR:存储器数据寄存器;
  • GPRs:通用寄存器组(由若干通用寄存器组成,早期就是累加器)。

3.2 计算机是如何工作的

类似“存储程序”工作方式。

先想象一下妈妈是怎样做一桌你喜欢(指定)的菜的?

  • 厨房-CPU,你妈-控制器,盘-GPRs,锅灶等-ALU ,架子-存储器。

做菜前:

  • 原材料(数据)和菜谱(指令)都按序放在厨房外的架子(存储器)上, 每个架子有编号(存储单元地址)。
  • 菜谱上信息:原料位置、做法、做好的菜放在哪里等
    • 例如,把10、11号架上的原料一起炒,并装入3号盘
  • 然后,我告诉妈妈从第5个架上(起始PC=5)指定菜谱开始做

开始做菜:

  • 第一步:从5号架上取菜谱(根据PC取指令)
  • 第二步:看菜谱(指令译码)
  • 第三步:从架上或盘中取原材料(取操作数)
  • 第四步:洗、切、炒等具体操作(指令执行)
  • 第五步:装盘或直接送桌(回写结果)
  • 第六步:算出下一菜谱所在架子号6=5+1(修改PC的值)继续做下一道菜(执行下一条指令)。

类似的,计算机工作方式如下:
程序由指令组成(菜单由菜谱组成)。

程序在执行前:

  • 数据和指令事先存放在存储器中,每条指令和每个数据都有地址,指令按序存放,指令由OP、ADDR字段组成,程序起始地址置PC(原材料和菜谱都放在厨房外的架子上, 每个架子有编号。妈妈从第5个架上指定菜谱开始做)

开始执行程序:

  • 第一步:根据PC取指令(从5号架上取菜谱)
  • 第二步:指令译码(看菜谱)
  • 第三步:取操作数(从架上或盘中取原材料)
  • 第四步:指令执行(洗、切、炒等具体操作)
  • 第五步:回写结果(装盘或直接送桌)
  • 第六步:修改PC的值(算出下一菜谱所在架子号6=5+1)继续执行下一条指令(继续做下一道菜)

3.3 计算机的基本组成与基本功能

什么是计算机:

  • 计算机是一种能对数字化信息进行自动、高速算术和逻辑运算的处理装置。

计算机的基本部件及功能:

  • 运算器(数据运算):ALU、GPRs、标志寄存器等
  • 存储器(数据存储):存储阵列、地址译码器、读写控制电路
  • 总线(数据传送):数据(MDR)、地址(MAR)和控制线
  • 控制器(控制):对指令译码生成控制信号

计算机实现的所有任务都是通过执行一条一条指令完成的!


4 指令和数据

程序启动前:

  • 指令和数据都存放在存储器中,形式上没有差别,都是0/1序列。

采用”存储程序“工作方式:

  • 程序由指令组成,程序被启动后,计算机能自动取出一条一条指令执行,在执行过程中无需人的干预。

指令执行过程中:

  • 指令和数据被从存储器取到CPU,存放在CPU内的寄存器中,指令在IR中,数据在GPR中。

指令中需给出的信息:

  • 操作性质(操作码)
  • 源操作数1 或/和 源操作数2 (立即数、寄存器编号、存储地址)
  • 目的操作数地址 (寄存器编号、存储地址)
  • 存储地址的描述与操作数的数据结构有关!

参考资料:

  1. 计算机系统基础(一):程序的表示、转换与链接