程序运行模型-计算机体系结构
在我们日常生活中,经常用到电脑、手机、智能家电等电子产品。我们都会使用它们,它们的里面都有各自的程序在不停的运行着。那么,这些程序是怎么运行的呢?在哪里运行?程序又放在哪里呢?这节将会为大家解答这些疑问。本节以最简单的方式讲解计算机的程序在底层的基本运行模型。让大家对程序运行有一个基础的认知。
CPU###
说到CPU,大家都很清楚CPU是计算机的处理器,决定着程序的运行速度。CPU对程序的执行有很重要的作用,但是一个计算机程序的运行快慢并不是完全由CPU决定,除了CPU还有内存、闪存等,这些会在后面的内容中说到。
中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
从这里可看到,CPU的功能主要有两个:
- 解释计算机的指令,也就是代码指令的执行就是在CPU中进行的。相当于控制器的作用(控制器查看上一节讲到的内容)
- 处理计算机软件中的数据,这就是数据的计算。相当于运算器的作用(运算器查看上一节讲到的内容)
所以,CPU其实就是解释指令和计算结果的地方。比如要计算两个数的和,控制器就会把两个数传到加法器中运算,这就是解释了指令。接着,加法器根据控制器传过来的数据,计算出结果,这就是处理了数据。
内存###
CPU解释指令和处理数据,控制器向加法器中传入X和Y,加法器输出X和Y的和。那么X、Y这两个数值从哪里来?输出的和又放到哪里去?指令又是从哪里来?其实,这些数据都存放于内存之中。
内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
从这里我们可以知道:
- 指令存放于内存之中,CPU从内存中读取指令,然后CPU解释指令。
- 程序运行过程中的数据存放于内存之中,CPU解释指令后,从内存中读取数据并处理,然后把结果放回到内存。
冯·诺依曼结构###
这就是我们常用的电脑中的程序的运行模型,这一种计算机的结构称为冯·诺依曼结构,把指令和数据用同一个存储器来存储。我们日常使用的电脑都是使用冯·诺依曼结构的。
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同
闪存###
上面讲的是电脑上的程序运行基本模型,但是在嵌入式领域,特别是在嵌入式单片机中,并没有使用哈佛结构,也就是指令和数据不是放在一个存储器之中。在这些单片机中,指令放在闪存(FLASH)中,数据放在内存中。
闪存是一种非易失性( Non-Volatile )内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。
关于内存和闪存的内容,请查看:
哈佛结构###
在嵌入式单片机领域,程序运行过程中,指令和数据分别存放于不同的存储器。这种存储器结构称为哈佛结构。
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。