一切用电设备的使用结果,都是由电路的闭合通电得到的,芯片也不例外,只是在晶圆上制造了数亿个电路开关而已,然后把这些导电结果输出到其它元件上。我们把电路的闭合开关描述成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对应物理介质的磁针状态或者浮置栅极存储状态来对应表示。

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

  1. CATIA软件使用技巧之层叠成形的闭合点

    对于CATIA软件有些较复杂的曲面体,需要使用层叠成形命令. 使用此命令常见的问题是:即使所使用的草图曲线只有两条,得到的模型也很容易发生扭曲,如图4(a)所示.而且如果使用的是草图曲线增加,这一问题 ...

  2. 通过软件的方式,控制芯片引脚的高低电平

    首先可以进入该芯片或者SOC的后台,既终端界面: 要有芯片或SOC的端口控制表,如: NO Name Description 1 GND1 Ground connections 2 VDD1 Powe ...

  3. FPGA基础知识极简教程(2)抛却软件思维去设计硬件电路

    博文目录 写在前面 正文 可综合以及不可综合的代码 每个软件程序员需要了解的有关硬件设计的内容 参考资料 交个朋友 写在前面 相关博文 个人博客首页 注:学习交流使用! 学过一门或多门软件语言的数字设 ...

  4. 51单片机----Keil uVision程序编译软件与Proteus 8 Professional电路仿真软件之间调到统一频率(12MHz)

    1.调节Keil uVision程序点击 再次点击1-2-点击OK. 2.Proteus 8 Professional调节频率,双击单片机,把这里修改为12MHz. 注意:这里12 MHz千万不要删掉 ...

  5. 编程语言和操作系统是什么关系?编程语言如何被计算机执行的?驱动程序的理解?

    编程语言和操作系统是什么关系? 首先,编程语言是不能运行的,它是可运行的计算机程序的一种表达方式,而编译器或者解释器把编程语言转换为计算机可执行的程序. 而操作系统也是一种可执行的计算机程序,它通常先 ...

  6. 单片机STM8S测量电压电路_单片机电路设计中的10个难点

    单片机是嵌入式系统的核心元件,使用单片机的电路要复杂得多,但在更改和添加新功能时,带有单片机的电路更加容易实现,这也正是电器设备使用单片机的原因.那么在单片机电路的设计中需要注意的难点有哪些? 嵌入式 ...

  7. 单片机复位电路电容一定用电解电容_学好单片机必须了解的10个电路

    一.单片机上拉电阻的选择 大家可以看到复位电路中电阻R1=10k时RST是高电平 ,而当R1=50时RST为低电平,很明显R1=10k时是错误的,单片机一直处在复位状态时根本无法工作.出现这样的原因是 ...

  8. CADe_SIMU软件实现传送带电气线路的仿真

    传送带电气控制线路 一.设计概述     将四台传送带理想化为四台三相异步交流电动机,即接收传送由三相异步电动机拖动实现. 实现传送带接收传送目标: 1.当分别按下四个复合按钮(电气原理图中分别为SB ...

  9. 利用MEGA32制作辉光数码管显示电路

    简 介: 为了驱动两个辉光数码管,供有20个数字,使用MEGA32 MCU制作了一个秒表运行驱动电路板. 关键词: 辉光数码管,IN 12,MEGA32 #mermaid-svg-2FBANG5Zss ...

  10. 测试dali协议的软件,基于DALI协议的数字照明控制软件的研发

    摘要: 根据"全国民用建筑工程设计技术措施"的要求,在民用建筑工程电气设计工作中,应大力推广和实施节能方针.基于节约能源为目的,同时满足人们需要的各种光环境,本文开发了基于DALI ...

最新文章

  1. 图书大甩卖(操作系统、C语言、Linux) 已成交
  2. Spring+Ibatis集成开发实例
  3. JavaFX中基于表达式的PathTransitions
  4. 第三十四期:一次非常有意思的sql优化经历
  5. 机器学习算法总结--线性回归和逻辑回归
  6. 40年技术发展变革,物联网行业的趋势、现状与挑战
  7. python中用于输出内容到终端的函数是_python执行linux shell管道输出内容
  8. WebSphere 集群环境下配置 Quartz集群
  9. python测网速_tespeed-测试网速的Python工具
  10. ios沙箱软件_ios沙盒2存档-ios沙盒2最新版下载0.5.2苹果版-西西软件下载
  11. STM32单片用什么编程?如何学习STM32单片机开发
  12. 移动端车牌识别SDK应用
  13. Python 爬取所有51VOA网站的Learn a words文本及mp3音频
  14. 实现跨word文档的格式刷,两个word间格式刷
  15. js获取手机型号和系统
  16. java话费充值_手机话费充值-java示例
  17. Python实现统一社会信用代码校验(GB32100-2015)
  18. 火焰纹章16进制是怎么算_火焰是值得你的时间
  19. Ubuntu 16.04 下 旋转显示器屏幕 竖屏显示
  20. do while(0)的作用

热门文章

  1. Paxos算法和Raft算法
  2. 搞定INTEL快速存储技术(用SSD硬盘做缓存加速)
  3. 20140419-MCSA 2012 Server R2 Command
  4. 【深度学习】cs224n 自然语言处理
  5. 机器学习读书笔记:贝叶斯公式
  6. python 机器翻译免费接口调用
  7. 人工智能常用英文缩写
  8. Halcon教程一 :软件入门
  9. STM32红外串口接收
  10. 计算机联锁维修管理机,计算机联锁试卷