软件是如何做到控制芯片电路的闭合的?

在芯片、电路的世界里只能识别0和1

代码、软件、UI界面、图片、视频、文件、数据等等都是为了方便人看而存在的,但它们的本质还是0和1。

芯片、电路如何表示0和1?

芯片、电路是通过高电平和低电平来表示0和1的,比如5V电压时就表示0,那么0V电压时就表示为1。

0和1怎么就成了我们常看到的文字、图片、还有声音的呢?

苹果英文叫做Apple,但不管我们叫它苹果还是Apple,它还是我们生活中的一种实物“苹果”,在中文里表示苹果,而在英文里用Apple来表示。这就是语言不同表示的形式不同,每种语言都有自己的规则,在0和1组成的世界里也有自己的一套规则,这套规则就是编码表,比如ASCII字符表,比如出现了“01001011”这串数字,那么CPU就会在编码表里找到这串数字所对应的“K”,然后在屏幕上把这个“K”显示出来。

当我们放大一张黑白的图片时就会发现图片是由无数的小方块组成,这些小方块就是像素点,那么要用二进制来保存这些像素点,要么是“1”,要么就是“0”。所以图片的像素点二进制位数越多,图片所能表现的颜色也就越丰富,当一个像素点是8个二进制位的时候,这个图片的每个像素点都有256种颜色可以显示。视频和图片是同样的道理,只不过每秒钟的视频是由好几帧的图片组成。

使用0和1表示声音的第一步就是对声音进行模拟采样,然后再经过量化的过程将原始波形变成二进制数。量化就好比100个人参加考试,有多少人是优秀、有多少人是良好、有多少人是不及格,并不能体现每个人的具体分数,所以二进制的数字声音和我们的原声还是会有很大的差别,这种差别就叫失真。

软件是如何控制硬件的?

我们都知道CPU的内部主要是由运算器和控制器组成的,如果再详细一点就会发现CPU的内部就相当于一个庞大的流水线,内存就相当于临时的仓库。

当程序打开的时候,和这个程序相关的数据就会从硬盘中读取,传输到内存中。硬盘的磁头读取数据时,旁边的读取器可以识别磁性材料的不同极性,再还原成高电平和低电平,刚刚我们就提到了在芯片和电路中0和1是由高电平和低电平来表示。

这些被临时存储的程序数据就在内存里面等着被CPU提取,内存是易失性存储设备,断电时所有的数据都会清空,通电时就能存储数据。比如当电子数量高于一个中间值时就表示0,低于中间值就表示1。

内存里面准备的数据主要就是程序的指令和数据,数据就相当于马上要被加工的原材料,而指令就相当于客户的订单,订单上面就是对产品的要求,告诉CPU要怎么去做。刚刚提到内存是临时仓库,那么CPU内部就有负责取货的。第一个取货的是程序设计计数器,主要是告诉CPU即将要用到的原材料和仓库具体的位置;第二个取货的是地址寄存器,主要是负责记录正在提取的原材料在内存的具体位置,因为CPU的读取速度要比内存快很多;第三个取货的是数据寄存器,主要是负责整个CPU工厂数据的分发,从外面进来的数据和已经生产好的数据都是由数据寄存器负责。

CPU准备好后,CPU内的指令寄存器就会从内存中提取指令,取完指令后就会对指令进行译码,看看订单有什么要求,计划一下后面生产过程中需要用到的工种、设备等等。随后操作控制器就会按照计划好的订单让所有要参与这次生产的设备准备好进行开工。开工的过程中,数据寄存器就会去内存中将处理的数据提取出来,传给算术逻辑单元。算术逻辑单元包含了累加寄存器、程序状态寄存器,累加寄存器就相当于草稿纸,运算过程中的一些数据和结果会临时保存在这个地方,而程序状态寄存器就专门负责记录运算有没有进位、溢出之类的信息。访存取数后的就是将结果取回最终通过内存再保存到硬盘中。当然这个过程中少不了时序发生器,时序可以精准地安排什么时候,什么人该干什么事。

CPU内的晶体管是如何区分工种的呢?

我们都知道三极管具有开关的特性,只要控制端电压满足一定的条件,就可以控制电路的通断。

鉴于半导体的特性于是就有了门电路,它可以使输出信号与输入信号之间产生一定的逻辑关系。通过门电路的逻辑关系实现对信号的转换。比如下图的与门电路,只要当A、B两个开关都接通时灯泡才亮。

与门的真值表如下图。除此之外还有或门电路,非门电路等,感兴趣的小伙伴们可以查找相关的资料。

通过这些基本的门电路的组合就可以组成各种各样的运算法则,让芯片懂得什么是加减乘除。

经过芯片加工过后的数据最终会通过芯片的引脚输出出来,这些数据最终是通过高、低电平来表示0和1,通过一些半导体开关元器件很容易实现硬件的打开和关闭。比如常用的继电器,只要控制端满足相应的条件,就能控制电路的开和关。同理芯片引脚输出的高、低电平就可以控制电路的开和关。


以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!

(0)

相关推荐