前言
冯·诺伊曼体系结构(Von Neumann architecture)
即 存储程序计算机(“可编程” + “可存储”),抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。
包含:
- 处理器单元
(Processing Unit),包含算数逻辑单元(Arithmetic Logic Unit, ALU)和处理器寄存器(Progressor Register),用来完成各种算数和逻辑运算。 - 控制器单元
(Control Unit/CU),包含指令寄存器(Instruction Register)和程序计数器(Program Counter),用来控制程序的流程,通常就是不同条件下的分支和跳转。
在现在的计算机里,算数逻辑单元和控制器单元共同组成了我们说的CPU。
- 内存,存储数据
(Data)和指令(Instruction)。 - 外部存储,比如现在的硬盘,过去的磁带、磁鼓等设备。
- 输入输出设备,比如鼠标、键盘、显示器等。
所有的计算机程序,也都可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。
计算机性能
计算机性能,一般会以电脑系统在指定时间和使用资源的条件下,所完成工作的数量来表示。
一般来说,我们会用 响应时间(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 时钟周期数又可以分解为: