CPU是如何识别代码的?他的工作原理是怎样的?

从本质上来说,CPU根本不认识代码!它的工作是机械化执行这些人类给出的指令,然后完成指令动作。

大家好!我是叮当大数据,很高兴回答您的这个问题,今天抛砖引玉,和您探讨这个问题。


一、CPU的组成:

每片CPU中都会有最基础的两个部分,控制单元 CU和算术和逻辑单元 ALU。

1、控制单元 CU

CU指控制单元(Control Unit),控制单元是CPU第一个必备的组件,因为它是整个CPU的指挥控制中心。

它根据我们预先编好的机器语言,按照顺序从存储器中取出各条指令,放在指令寄存器IR中,再通过指令译码确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出控制信号。

它分为硬连线控制单元和微型可编程控制单元两种类型。区别是,硬连线控制单元速度更快,而微型可编程控制单元则是可以自己调节。

2、算术和逻辑单元 ALU

ALU非常容易理解,算术逻辑单元(arithmetic and logic unit) ,简称ALU.

它的任务是完成所有算术和逻辑计算。它是由执行逻辑电路或逻辑门组成。

3、寄存器和内存

大家知道,CPU的工作就是执行提供的指令,而处理这些指令时需要大量的数据。

这些数据包括了中间数据,或是输入数据,或是输出数据。

那么这些数据放在哪里了?

于是有了寄存器。你理解成CPU内小容量的存储数据的地方就可以了,寄存器可以存储指令,输出数据,存储地址或任何类型的数据。

而寄存器的基础就是触发器(锁存器),它是由电路构成的逻辑门的组合 。

一个基础锁存器有一个逻辑门单元和3根线构成,我们可以启通过写入线来更改存储的数据。而禁用写入线时,输出始终保持不变。

当然,集成在CPU内的寄存器的速度很快,但很昂贵。

所以,人们想出了一个好办法,于是速度很慢的RAM出现了,人们叫它随机存取存储器,通俗叫法内存。没错就是你电脑插的内存条。

其实RAM就是一片集成了大量寄存器的集合,它可以存储更多数据。而当RAM没有电源供给时,数据会丢失。


4、高速公路是总线

以上的CPU,寄存器,存储器和输入输出设备中,所有数据都必须通过总线进行传输。下图很容易看到电脑的三种总线的对应关系,篇幅原因,不多说,理解就行了。

二、CPU机器语言

CPU执行的我们叫它机器语言程序,就是用硬件实现的机器指令。

它是由一条一条指令组成的。机器语言使用绝对地址和绝对操作码,每一条指令都对应一个CPU的一个基本操作,而这些操作看透了实际上非常简单。

一条机器指令绝对操作码必须包括操作码和地址码。

操作码就是该指令所要完成的操作(加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。

地址码用来指上面加、减、乘、除的操作对象是谁?或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址,它是确定的一个地址,所以叫绝对地址。

简单理解一条机器语言指令,请CPU同学将寄存器中第三排第二行数据加上第三排第三行数据相加,结果输出告诉我答案后,你就可以休息了。

基本内容:

  • 算术,例如 加法、减法
  • 逻辑指令,例如 和, 或,而 不是
  • 数据指令,例如 移动、输入、输出、 加载、存储
  • 控制流指令,例如 goto, 如果... goto,则 调用并 返回
  • 通知程序已经结束,CPU 暂停

三、汇编语言

看上去简单,但要实现用机器语言编写的程序的兼容,对计算机体系结构有非常苛刻的要求,且不说每家计算机其指令的数量与功能、指令格式、寻址方式、数据格式是差别的。

光是开发者的计算机的体系结构和普通用户程序接口必须完全相同,就很难达成。

并且机器语言灵活性较差,可阅读性也很差,编写程序员要求太高了,于是直接拿机器语言来编写成为不可能完成的任务。

怎么办?

于是汇编语言出现了,而与机器语言对应的语言我们叫统称汇编语言,它可以完美的改写成机器语言,这样就达到直接指挥CPU工作。

汇编语言使用了助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。

由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存。

因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应用。


以上从CPU的组成、工作流程、机器语言、汇编语言简单阐述了CPU为什么能够执行指令。

希望对您有所启发!

(0)

相关推荐

  • 算数逻辑单元

    算数逻辑单元是运算器的重要组成部分,负责处理数据,实现对数据的算术运算和逻辑运算. CPU中其他部件作用: 程序计数器是用于存放下一条指令所在单元的地址的地方.在程序执行前,必须将程序的起始地址即程序 ...

  • cpu是芯片吗?芯片和cpu是什么关系?

    对于cpu和芯片的问题,很多朋友搞不清楚它们的不同,有的认为cpu就是芯片,那么cpu是芯片吗?芯片和cpu有什么不同?它们的关系如何呢?今天就给大家具体介绍下这些问题,以供参考. cpu是芯片吗? ...

  • 一文看懂8088和8086微型计算机的区别

    一.8088介绍 8088是一个Intel以8086为基础的微处理器,拥有16位元暂存器和8位元外部资料总线.8088使用8位元的设计,所针对的是较为经济之系统.在它推出时候,大的资料总线宽度电路板还 ...

  • CPU是如何识别代码的他的工作原理是怎样的(汇编语言使用了助记符代替机器指令的操作码用地址符号或标号代替指令或操作数的地址)

    https://m.toutiao.com/is/dFLjRAQ/ (汇编语言使用了助记符代替机器指令的操作码用地址符号或标号代替指令或操作数的地址) https://m.toutiao.com/is ...

  • CPU到底是怎么识别代码的?

    先说一下半导体,啥叫半导体? 就是介于导体和绝缘体中间的一种东西,比如二极管. 电流可以从A端流向C端,但反过来则不行.你可以把它理解成一种防止电流逆流的东西. 当C端10V,A端0V,二极管可以视为 ...

  • 无形的代码与有形的电路:详解CPU是如何识别0和1

    昨晚在回顾之前所写的问答时,我发现一篇关于"CPU是怎么认识代码"的问题热度很高,很多朋友表示看了我写依旧云里雾里,不得要领.原因在于我主要讲的是编译器的作用和CPU的工作模式,没 ...

  • 「不懂就问」CPU到底是怎么识别代码的?

    https://m.toutiao.com/is/JccuuK1/ 首先要开始这个话题要先说一下半导体.啥叫半导体? 半导体其实就是介于导体和绝缘体中间的一种东西,比如二极管. 电流可以从A端流向C端 ...

  • usb设备无法识别代码43怎么办

    现如今不少的设备都是需要通过usb进行连接电脑的,所以出现了某些问题就会很影响我们的使用.例如usb设备无法识别代码43的情况,那对于这一情况我们要怎么来处理呢?有些小伙伴不太清楚,那么今天本文就来为 ...

  • 从计算简史与开关电路组合理解计算机如何识别代码

    毕达哥拉斯说:万物皆数,万物皆可用整数或分数来表示. 希帕索斯(Hippasus,公元前5世纪)不以为然:一个腰为1的等腰直角三角形的斜边的长度是多少?由此引发了第一次数学危机,自此,几何学强势崛起. ...

  • 为什么CPU流水线会提高代码执行效率?

    为什么有些CPU的主频更低,但运算效率却更高呢? 比如:51单片机30M主频,STM32单片机20M主频,执行相同一段代码可能主频更低的STM32所花的时间更短. 这里就牵涉到CPU流水线的问题,本文 ...

  • CPU是怎么认识代码的?

    我是电子及工控技术,我来回答这个问题.作为中央处理器的CPU是无法识别我们人类编写的程序代码的,而CPU所能够识别的"语言"其实很简单,就是由"1"和" ...

  • CPU是怎么认识代码的(3电子工控技术)

    https://m.toutiao.com/is/Jbewmo1/ 我是电子及工控技术,我来回答这个问题.作为中央处理器的CPU是无法识别我们人类编写的程序代码的,而CPU所能够识别的"语言 ...