美文网首页
通俗的说一说指令集是什么?CPU是如何工作的?

通俗的说一说指令集是什么?CPU是如何工作的?

作者: guanalex | 来源:发表于2019-06-25 23:12 被阅读0次

本文转载自https://baijiahao.baidu.com/s?id=1599862816733469968&wfr=spider&for=pc

前言:

挺久之前写过一篇文章《通俗的说一说:一堆沙子是如何变成芯片的》,有网友回复要求讲一讲CPU是如何工作的。

老实说,虽然在很多年前学过数字电路,也学过一点汇编语言,可是早已经交还给老师了,更不要说当年就没怎么学好。

一直拖了很久,看过一些资料之后,才再次提起这一事,本人试图用最通俗的语句来描述一下什么是指令集和CPU的工作原理。说得不对,也请大家包涵指正。

要说清楚CPU如何工作,我们先得了解一下程序是如何运行的,因为CPU是由程序驱动并完成程序的指令,从而得到运算结果的。

在最早的计算机上,编程人员将计算要求转换成1010这样的二进制程序,再将1010在纸带上用孔来表示,打孔的纸带输入到计算机之后,计算机就能计算了。

这纸带上的二进制程序就是机器语言,这些孔就是告诉计算机,该读数据、进行加减乘除、或者“与或”逻辑运算,而纸带上直接的输入是“孔”和“非孔”,也就“断电”和“通电”,反应在晶体管上的状态就是“闭”与“开”,如果晶体管是一个灯泡,那它表现出来就是一闪一灭。

然而,机器语言太过于专业难懂,科学家们用了一种高级的语言来代替它,这就是汇编语言。汇编语言更接近人类的语言,用编译器可以将汇编语言转为机器可以识别的机器语言。

这编译器就相当于一个翻译机,它根据设定好的规则,将汇编语言一条条转化为二进制语言。

这个时候,问题就来了!编译器所用的规则,是由设计计算机(现在归结为CPU)的人规定的,那么用汇编语言的工程师,就必须按照他所给的规则来编,要不然,编译器转化出来的二进制语言就是乱七八糟的,在电脑上反应出来的就是蓝屏了,因为CPU根本不管你输入的101010是对是错,它就按给的来执行,这时出来的结果就不知道是什么东西了。

好了,设计CPU的人给出的编写规则就可以说是指令,这一系列的规则就是指令集(合)。

而设计CPU的厂商有多家,这样就产生了不同的指令集,比如intel阵营的8086指令集,ARM阵营的RISC指令集。不同阵营,其对应的汇编语言也是不一样的。

虽然汇编语言比较接近人类语言,但是毕竟还是过于难懂,这也是为什么古代有那么多秘籍,能练成绝世武功的人少之又少,那是因为,并不一定所有得到秘籍的人都能看得懂。

为了解决跨平台运行程序的问题,科学家又发展出了各种各样的高级语言,比如C、C++、VB、PHP、JAVA等等,用这些语言编写的程序要么在相应系统正确的运行环境中直接运行,要么经过编译,打包出对应的程序就可以了。比如用JAVA或PHP写了一个APP,通过打包工具,可以直接打包成安卓APP,也可以打包成苹果APP,这就解决了汇编语言不兼容的问题。

用下面的图表示一下这三类语言的区别与关系:

用户的需求就如探子得到的情报,大帅必须对敌人来犯进行处理。这时大帅就写了一个“射箭”的程序。旗手将“射箭”转化成了旗语的汇编语言。最后箭队的队长就将旗语转化成了“拉弓”、“放箭”这样的二进制机器语言。箭兵得到命令,按指令进行操作。

image

如何打一场战争

好了,这个箭队就是最终执行任务的CPU。

更专业些的描述是下面的图形

image

那么CPU的工作原理,就是将输入的信息转化成10101数字信号,这些信号通过可以应用傅立叶变换的CPU模块转换成高电平与低电平,(《最高等的美:数学史上十大最美的公式》),这些模拟电信号按指定通过不同的模块,CPU模块上的微小晶体管就会产生“闭”与“开”的动作,最终得到计算结果。

image

与傅立叶变换相关的正弦波

可进行读、写、转换等操作的模块是下图中的control(控制器),存放数据的是cache、DRAM,真正进行计算的是ALU单元。

image

左CPU右GPU的微架构

相信看到这里的朋友应该大致对CPU和指令集有些概念了,现在再去百度,应该很容易理解那些专业的内容了。

相关文章

  • 通俗的说一说指令集是什么?CPU是如何工作的?

    本文转载自https://baijiahao.baidu.com/s?id=1599862816733469968...

  • iOS 制作 framework 动态库

    指令集 通常会把CPU的扩展指令集称为”CPU的指令集”(因为基本的,类似加减的指令似乎是必须被CPU所支持的指令...

  • iOS指令集总结

    指令集 通常会把CPU的扩展指令集称为”CPU的指令集”(因为基本的,类似加减的指令似乎是必须被CPU所支持的指令...

  • 日记随笔32/64位cpu 2019-11-30

    CPU CPU可分为精简指令集CPU(如移动端的ARM系列)和复杂指令集CPU(如Intel core和AMD系列...

  • Linux(1)-CPU

    Linux的CPU Linux的CPU主要是已X86和ARM两个主阵营。 CPU的架构 CPU的指令集:复杂指令集...

  • Android中ABI和CPU的关系

    不同的Android手机使用不同的CPU,而不同的 CPU 支持不同的指令集,CPU 与指令集的每种组合都有专属的...

  • CPU指令集了解一下

    指令集不是写入CPU的,指令集是CPU体系结构设计的一个重要方面。 CPU依靠指令来计算和控制系统,每款CPU在设...

  • 指令集发展

    指令集发展 什么是指令集? 所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU...

  • 架构、指令集、编译、汇编?

    指令集:操作指令集合,CPU中用来计算和控制计算机系统的一套指令的集合。 架构:为了实现某种指令集,cpu采用何种...

  • Android CPU ABI

    ABI 简述 不同 Android 手机使用不同的 CPU,因此支持不同的指令集。CPU 与指令集的每种组合都有其...

网友评论

      本文标题:通俗的说一说指令集是什么?CPU是如何工作的?

      本文链接:https://www.haomeiwen.com/subject/wimfcctx.html