指令|小速学编程:CPU的结构、指令与程序初探

陈小速:一名职业技术学院计算机技术与应用专业的学生 , 他梦想成为一名程序员 。
吴进:一所重点大学软件工程专业大三学生 , 编程经验丰富 。
阅读本文之前 , 可以先温习一下历史文章:小速学编程:计算机系统的组成 引言
陈小速如约来找吴进了 , 一见面他就嚷道:“吴大哥 , 我回去以后就给同学们讲解计算机的系统组成原理了 。没想到 , 同学们问了我很多细节问题 , 一下子还回答不上来 。不过我想既然原理都明白了 , 那找答案也快吧 。果然 , 我一边教一边找答案 , 我自己都觉得比以前更明白了 。”
“那就好 , ” 吴进温和地笑着 , “我想你也会有新的问题吧?”
“是的 , ” 陈小速腆着脸笑了起来 , “所以这就又过来找吴大哥了 。”
“我能理解 , 学习到一个阶段之后 , 自然会有新的问题出来 , 这样才能一直进步嘛 。今天我先问你一个问题 , 你知道CPU是怎么工作的吗?” 吴进说着望向了陈小速 。
陈小速默思了一会儿 , 说:“我看了一些书上的内容 , CPU执行运算是通过接收指令的 , 对吧?然后这个指令 , 我理解它就像是一个命令一样 , 让CPU干啥就干啥 , 是这意思吗?”
“原理没错 , ” 吴进仍然表示了肯定 , “但这样描述的话 , 模糊的地方太多了 。我们应该追问的更深入一些 , 这样才不会停留在似懂非懂的状态 。这也是我学习时的一个习惯 , 如果我对一个东西好奇 , 就一定会把它弄透 。”
“向吴大哥学习 。” 陈小速真心诚意地说 。
“好了 , 我们先从第一个问题开始 。CPU的结构是怎样的?”吴进开始了讲解 。
指令|小速学编程:CPU的结构、指令与程序初探
文章图片

文章图片

CPU的结构
现代计算机的理论基础是冯·诺依曼提出的“存储程序”思想 。其实这是一个很简单的概念 , 就是说处理器要从存储设备中读取指令代码并执行 。
说起来好像废话一样 , 但在谁也不知道该怎么设计计算机的时候 , 提出了开创性的思想就是相当了不起的成就 。
有了“存储程序”的概念 , CPU应该包括的功能也就能确定了 。首先要能运算 , 这在CPU内被称为算术逻辑单元ALU(Arithmetic Logic Unit) 。
有了ALU , 接下来就要从存储中读取数据了 。待运算的数据会放在寄存器内 , 而待执行的指令则会放在L1 , L2 , L3 cache三级高速缓存中 。
【指令|小速学编程:CPU的结构、指令与程序初探】有了存储 , 就需要一个控制器 , 决定何时从存储中读取指令 , 并交给ALU进行计算了 。这样 , 一个CPU的基本结构就出来了 , 它包括ALU、寄存器与高速缓存 , 还有控制器 。
这是核心部件 , 但数据要送进来 , 计算完了结果还输出去 , 那就还需要I/O模块 , 通过总线完成数据的输入输出操作 。
指令|小速学编程:CPU的结构、指令与程序初探
文章图片

文章图片

指令
看到上面这张图 , 陈小速点了点头 , 说:“吴大哥 , 我明白了 。实际的CPU肯定比这个要复杂得多 , 但这个原理我是完全理解了 。”
吴进赞许地拍了拍陈小速的肩膀 , 说:“那再问你一个问题 , 什么是CPU能执行的指令?”
陈小速茫然地摇了摇了头 , 说:“我只知道它就像命令一样 , 具体是什么样的我还真不知道 。”
吴进又开始对指令进行讲解 。
一条指令是CPU能执行的最小功能单元 , 而单个指令的功能也是很单一的 。例如加法指令 , 就是将两个数相加 。而由功能单一的指令所构成的集合 , 就被称为指令集 。
以一个加法的实现为例说明 。


推荐阅读