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

一切用电设备的使用结果,都是由电路的闭合通电得到的,芯片也不例外,只是在晶圆上制造了数亿个电路开关而已,然后把这些导电结果输出到其它元件上。我们把电路的闭合开关描述成0和1,0和1只是我们便于编程式及交流人为描述的,但芯片它本身又不认识0和1,那么芯片是怎样存储程序的,程序是怎样控制芯片的电路开关闭合的?

 

软件归根结底,就是二进制代码01,而在电路上的确是没有直接的01的,电路上只有高低电平,所谓的01,是通过显示器显示出来的一种给人看的,方便你理解的东西,电路上并没有什么0和1这个代码,本质上它在硬件电路上还是高低电平,比如可以规定TTL电路高电平是:2.4V-5.0V;而低电平是:0.0V-0.4V。也就是电路上的电压在某个数值范围代表1,某个数值范围代表0,请关注:容济点火器

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

然后电路上的这些高低电平这些东西,一般是通过触发器这些电路来存储的,比如RS触发器,它是最基本的,可以通过阻容和三极管这些器件来组成,你在电脑上看到的所谓1或者0,在实际电路上它就是电压不同而已。软件是如何做到控制芯片电路的闭合的?

然后多个触发器组合成移位寄存器这些,通过硬件的晶振发出脉冲来让这些寄存器移位,这样寄存器的状态就可以改变了,你在键盘上下某个命令,就相当于触发某个开关,开关导通了,当然会直接让某个电路状态变化,移位寄存器的01状态也跟着改动,这样电路上就会达到你需要的功能,然后电路状态变化后,又通过液晶这些,把这种变化的状态,显示出来所谓的01给你看,你看到的只是一个符号而已,实际上电路上变化的,还是电压。

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

然后很多个寄存器再组合起来,就形成了所谓的芯片,讲白了,就是把这些硬件电路做得非常小,集成到一块硅片上去了。

 

 

芯片是通过半导体晶体管中的PN结实现电路开关状态变化的,存储程序是通过存储芯片对存储介质进行读写的。我们用的软件,在存储介质上其实就是磁针的不同状态(机械硬盘)或者浮置栅极存储的状态(SSD)。

1、半导体晶体管是如何忠实地执行软件的?

众所周知,芯片就是半导体材料做成上亿的晶体管排列组合而成。晶体管最重要的控制开关也就是PN结。由于PN结的存在,才有了半导体的说法。就是正向电压导通,反向电压断开。原理如下:

①、半导体的特性

所谓的PN结就是采用不同的掺杂工艺,通过扩散作用,将P型半导体与N型半导*作在同一块半导体基片上,在它们的交界面就形成空间电荷区称为PN结。PN结具有单向导电性

  • 正向导通:我们的电源一端接P区(空穴较多的P型半导体这一边),一端接N区(*电子较多的N型半导体这一边)。如果这个时候加载一个合适的正向电压在PN节上,也就是P区电压高于N区电压,那么P区的空穴和N区的电子都会向中间的沟道(耗尽层)运动,沟道就会变小,电阻相应就变得很小了,电路就接通了。
  • 反向断开:如果在PN结加载一个合适的反向电压,即N区电压高于P区电压。那么,N区的电子都向电源的正极运动,P区的空穴都向电源的负极运动。所以,导致中间的沟道就会变得更宽。电阻就变大了,电路就无法接通了。

芯片上的晶体管正是利用这个特性来做的,比如:二极管、三极管、场效应管。

 

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

②、计算机芯片执行程序

计算机芯片我们看起来很聪明,但追踪到二进制层面,其实它只是做简单的数学运算(加减乘除)。其他操作都是通过转化成数学运算来实现的。在晶体管里面是如何实现的呢?它就是通过CMOS电路中的与非门电路来实现的。我们都知道与非门可以实现以下功能:

  • 与 门:只有两个输入都是高电位时,输出端才有高电位。也就可以实现计算机的与运算“&”。即:0&0=0;0&1=0;1&0=0;1&1=1;
  • 非门:输出电位始终和输入电位相反,输入是高电位,输出就是低电位。这就实现了计算机需要的非运算“~”,即:0~=1;1~=0;
  • 或门:只要输入端有1个是高电位,输出端就是高电位。也就实现了计算机的或运算“|”,即:0|0=0;0|1=1;1|0=1;1|1=1;

以上是三个最基本的逻辑运算和晶体管组成的与非门的关系。更多的运算都是通过这三种基本运算组合而来。

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

2、计算机系统是如何从加电开始运行的?

我们购买回来的计算机通常包含了CPU、内存、主板、硬盘、外设等。这些硬件里面都内置了控制硬件的微码

  • CPU:里面包含CPU的基础指令集,要想在该CPU上运行的软件,最终都必须编译成该CPU支持的指令集。同时
  • 内存:内存里面有SPD芯片,它里面存储了这条内存的参数,以便和CPU、主板协同工作。
  • 主板:X86架构都有南桥和北桥两大主要芯片,还有FSB总线。这里负责控制外设、负责数据传输给CPU。里面集成了微系统。
  • 硬盘:硬盘的电路板上有主控芯片和缓存,控制数据到达硬盘后该如何存储,也控制读取指令该如何去读数据。

有了这些微码程序,计算机硬件就是非常顺畅地协同工作了。当我们接通电源,并按下开机按钮,计算机主板的启动电路会触发主板开始按照微码工作。当自检各硬件正常后,按顺序加载硬盘启动分区的数据,操作系统就放置在这里。操作系统也就顺利被载入内存,开始工作。后面就不多说了,大家都清楚。

 

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

3、硬盘是如何存储软件的?

软件在计算机看来就是0和1组成的数据。我们现在用的很多都是固态硬盘,但早年用的是机械硬盘。他们存储数据的方式有些许不同。

①、机械盘存储读写数据

机械硬盘由电机、磁头、盘片和控制电路组成。控制电路负责和主板进行通讯,包括接收请求、读写缓存等。盘片上布满微小的磁针,它是存储数据的最小颗粒,磁针指向北就是1,磁针不指向北就是0。 磁头就是磁感应头,电机负责盘体的转动和磁头的移动。

  • 读操作时:磁盘控制器接收到指令,首先看看高速缓存中有没有,如果没有,磁盘就会开始高速旋转,磁头则在盘片上方以固定半径扫描盘片。按照指令要求进行寻道,当找到相应地址后,磁头感应到盘片上的磁针状态,并将它转化为电信号由硬盘控制芯片传导给内存。
  • 写操作时:磁盘控制器接收到指令,首先将数据写入高速缓存,得到磁盘响应时,盘体开始旋转,磁头寻找到对应位置。找到位置后,磁头开始磁化改变磁针的状态。按要求全部改完后,将写完状态反馈给控制器。

 

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

②、SSD盘存储读写数据

SSD盘主要有主控制器、存储单元、缓存等组成。主控制器有嵌入式处理器,负责做ECC校验、磨损平衡、坏块映射、缓存控制、垃圾回收等等。存储单元主要采用的是NAND闪存,NAND存储数据的方式就是通过控制器对浮置栅极存储进行加压,当浮置栅极存储电荷增多,达到4V以上,则表示已编程,当没有充电或者电压阀值低于4V时,就表示已擦除。同时,已编程的单元,又以相位状态不同或者电压高低不同来表示数据的0,1

  • 读操作时:只需要对相应的存储块进行加电压,感应电压或者相位就可以读取数据。
  • 写操作时:也是通过对相应的存储块进行加电压,改变相应块的相位或者电压就可以完成写入。

因为SSD盘不需要机械转动,速度比机械盘快了很多。所以,现在更多人使用的是SSD盘。

 

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

总结

总之,软件在计算机底层就是0和1组成的指令集合。而0和1的指令集合是通过CPU芯片里面的晶体管来实现运算和控制的。晶体管最重要的组件就是半导体PN结,它帮计算机实现了各种逻辑运算。至于存储数据,无论是机械盘还是SSD,最终都是将数据0和1对应物理介质的磁针状态或者浮置栅极存储状态来对应表示。

上一篇:IS620F PN博途组态TO工艺对象,讨论汇川IS620F 替代西门子V90 PN的可行性


下一篇:C++指针做形参与指针的引用做形参的区别