计算机组成原理

173 阅读3分钟

前言

c-o-architecture.jpg

冯·诺伊曼体系结构(Von Neumann architecture)

存储程序计算机(“可编程” + “可存储”),抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。

包含:

  • 处理器单元(Processing Unit),包含算数逻辑单元(Arithmetic Logic Unit, ALU)和处理器寄存器(Progressor Register),用来完成各种算数和逻辑运算。
  • 控制器单元(Control Unit/CU),包含指令寄存器(Instruction Register)和程序计数器(Program Counter),用来控制程序的流程,通常就是不同条件下的分支和跳转。

在现在的计算机里,算数逻辑单元和控制器单元共同组成了我们说的CPU。

  • 内存,存储数据(Data)和指令(Instruction)
  • 外部存储,比如现在的硬盘,过去的磁带、磁鼓等设备。
  • 输入输出设备,比如鼠标、键盘、显示器等。

c-o-vonNeumann.jpg

所有的计算机程序,也都可以抽象为从输入设备读取输入信息,通过运算器控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。

计算机性能

计算机性能,一般会以电脑系统在指定时间和使用资源的条件下,所完成工作的数量来表示。

一般来说,我们会用 响应时间(Response time)吞吐率(Throughput) 来衡量一个计算机的性能。

响应时间

在计算机里,我们有一个计时单位,俗称 "时钟"。 :::tip 时钟 计算机的计时器通常是一个精密加工的石英晶体,我们称其为晶体振荡器(Oscillator Crystal),简称为晶振。石英晶体在其张力限度内以一定的频率振荡,这个频率取决于晶体本身如何被切割及其受到的张力的大小。

有两个寄存器与每个晶振相关联,一个是计数器(counter),另一个是保持寄存器(holding register)。晶振的每次振荡使计数器-1,当减为0时则触发一个中断;然后,计数器从保持寄存器中重新装入初始值。每次中断称为一个时钟滴答。 :::

每一次时钟滴答,我们称其为时钟周期时间。那么这个时钟周期时间在我们的计算机上是如何体现的呢?

我们找一台计算机,查看它的处理器规格,例如我手头上这台联想,它的处理器规格是 AMD Ryzen 7 5800H with Radeon Graphics 3.20 GHz。这里的3.2GHz,就是电脑的主频(Frequency/Clock Rate),它意味着1s内晶振振动了3.2亿次。而时钟周期时间,就是主频的倒数,就是1/3.2G s。

现在我们来思考,响应时间取决于什么。

响应时间,也就是程序的CPU执行时间,等于:

CPU时钟周期数×时钟周期时间\color{green}{CPU 时钟周期数 × 时钟周期时间}

CPU 时钟周期数又可以分解为:

指令数×每条指令的平均时钟周期数(CyclesPerInstruction,简称CPI\color{green}{指令数 × 每条指令的平均时钟周期数(Cycles Per Instruction,简称 CPI)}