VXZH

指令是如何运行的

一条指令的执行,必然会涉及到硬盘、内存、CPU三大计算机主要硬件的协同合作,在讲明它们是怎么协同合作之前,先让我们了解一下它们都是什么。

指令

计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。通俗点说就是我们写的每一行代码,最终都对计算机起到指示和命令。

硬盘

硬盘是计算机的主要存储媒介,它可以在计算机断电的情况下存储数据。正是因为这个特点,我们的工作结果才得以保存起来。硬盘有机械硬盘(HDD)、固态硬盘(SSD)、混合硬盘,机械硬盘是传统硬盘,而固态硬盘由于读写速度都要比传统硬盘快,现在越来越受用户青睐。

内存

计算机运行的所有程序,都是在内存中完成的。它是与CPU之间沟通的桥梁。内存(Memory)也被称为主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

CPU

CPU,又称中央处理器(Central Processing Unit),是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。

现在我们了解了它们各自是什么,那么接下来我们聊一聊它们是怎么一起协调工作执行一条指令的。首先,请看下图,是一台计算机的硬件系统的主要部件(IO设备等没在此图展现)。

计算机硬件系统组成

我们写好的程序(如.java),原文件及编译后生成的字节码文件(.class),都会以二进制的形式存储在硬盘上。当我们想运行这个程序的时候,首先会将字节码文件经过IO总线、内存总线加载到内存中,等待CPU的调用。前面我们说过,CPU包括逻辑运算单元和寄存器(缓存等暂且不讨论),逻辑运算单元当然就是完成各种计算的任务了,而寄存器则用来暂存。它会将从内存读取的数据、指令、地址暂存起来,等待逻辑运算单元进行计算。

逻辑运算单元计算的结果,会暂存在寄存器中,之后写回内存。最后我们可以选择将结果打印到屏幕上,还是写入硬盘永久保存起来。