计算机硬件

早期冯诺依曼机

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

alt text

  • 输入设备:将信息转换成机器能识别的形式
  • 输出设备:将结果转换成人们熟悉的形式
  • 存储器:存放数据和程序
  • 运算器:算术运算,逻辑运算
  • 控制器:指挥程序运行

在计算机系统中,硬件和软件在逻辑上时等效的。对于乘法运算,就可以设计一个专门的硬件电路实现乘法运算也可以用软件的方式,执行多次加法实现。

冯诺依曼计算机的特点

  • 计算机有五大部件组成:控制器,存储器,运算器,输入输出设备等等。
  • 指令和数据以同等地位存储器,可按地址访存,指令和数据用二进制表示
  • 指令有操作码和地址码组成:操作码指明运算方式,地址码指明在哪找数据进行运算。
  • 存储程序:会提前把指令程序提前存到存储器中
  • 以运算器为中心:输入输出设备与存储器之间的数据传送通过运算器完成

不合理的地方:输入设备到存储器要经过运算器处理,这就大大降低了运算器的效率。

现代计算机的结构

现代计算机:以存储器为中心

alt text

在集成电路出现了之后,运算器和控制器被集成到一起,这就是CPU

alt text

  • 内存:主存(内存条,基于DRAM)与高速缓存(Cache,基于SRAM)两部分。主存就是内存是内存的一部分。
  • 外存又称为辅存:是指除计算机内存及CPU缓存以外的存储器,此类存储器断电后仍能保存数据。常见的外存有硬盘、光盘、U盘等。我们现在笔记本所使用的SSD固态硬盘,机械硬盘等等就是外部存储器。CPU如果想访问外存中的数据,必须先把外存的数据保存到内存中,CPU再去读取内存中的数据。

硬件工作原理

主存储器的基本组成

alt text{: height=50% width=50%}

  • 存储体:数据在存储器内按地址存储
  • 存储单元:每个存储单元存放一串二进制代码
  • 存储字:存储单元中二进制代码的组合
  • 存储字长:存储单元中二进制代码的位数
  • 存储元:存储二进制数据的电子元件,每个电子元件存储1bit

MAR:存储地址寄存器,MAR位数反应存储单元的个数。
MDR:存储数据寄存器,存储器中取出的数据将放到MDR中,所以MDR的位数等于存储字长。

注意:现代的计算机将MAR和MDR也集成到了CPU中
  1. 如果MAR4位,那么总共就有$2^4$个存储单元
  2. 如果MDR16位,每个存储单元可存放16bit1字(word) = 16bit,(字的大小取决于计算机硬件

工作过程

alt text

CPU通过控制总线控制主存储器写数据还是读数据

读数据的过程

  1. CPU将数据的地址写到MAR
  2. MAR根据地址找到这个数据所在的位置。
  3. MAR将数据写到MDR中。
  4. CPUMDR中拿走数据

运算器的基本组成

alt text

控制器基本组成

alt text

完成一条指令:

  • 取指令 PC 取址
  • 分析指令 IR 取址
  • 执行指令 CU 计算

计算机工作过程

alt text

alt text

alt text

alt text

alt text

alt text

计算机软件

三种高级语言

alt text

编译程序:将高级语言编写的源程序全部语句一次全部反应成机器语言程序,而后再执行机器语言程序。(只需编译一次)
解释程序:将源程序的一条语句翻译成对应于机器语言程序的语句,并立即执行。紧接着再翻译下一句(每次执行都要编译)

软件和硬件逻辑功能等价性

软件和硬件逻辑功能等价性:同一个功能,既可以用硬件实现(性能高或者成本高),也可以使用软件实现(性能成本低)

alt text

指令集体系结构(ISA):软件和硬件之间的界面,设计计算机系统的ISA。就是要定义一台计算机可以支持哪些指令,以及每条指令的作用是什么,每条指令的用法是什么。

计算机系统的的层次解构

alt text

  • 计算机体系结构:计算机语言程序员所见到的计算机系统的属性概念性的结构和功能。(指令系统,数据类型,寻址技术,I/O原理)
  • 计算机组成原理:实现计算机体系结构所体现的属性,对程序员透明(具体指令的实现)

计算机系统的工作原理

存储程序的工作模式

存储程序工作方式规定:程序执行前,需要将程序所含的指令和数据送入主存储器,一旦程序被启动执行,就无需操作人员干预,自动逐条完成指令的取出和执行任务。

每条指令的执行过程:

  1. 从主存储器中取指令,对指令进行译码。
  2. 计算下一条指令地址。
  3. 取操作数并执行。
  4. 将结果送回存储器。

每次先将程序的第一条指令放到存储器中,取指令时,将PC的内容作为地址访问存储器。每条指令的执行过程中,都需要计算下条将执行指令的地址,并送至PC

  • 对于顺序型指令:下一条指令地址为PC的内容加上当前指令的长度。
  • 对于跳转型指令:下一条指令地址为指令中指定目标的地址。

源程序到可执行文件

alt text

  • 编译器:将源程序翻译为汇编语言
  • 汇编器:将汇编语言程序翻译为二进制机器语言
  • 连接器:将多个相关的目标模块连接成完整的可执行文件。
  1. 预处理阶段:预处理器(cpp)先将包含的头文件内容插入程序文件,输出结果是以.i为拓展名的文件。
  2. 编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成一个汇编语言程序。输出结果是以.s为拓展名的文件。
  3. 汇编阶段:汇编器(as)将汇编文件翻译为机器语言指令,输出结果是以.o为拓展名的文件。
  4. 链接阶段:链接器(ld)将多个.o文件和标准库函数合并作为一个可执行的目标文件,简称可执行文件。