
昨晚,在回顾我之前写的问答时,我发现了一篇有关“ CPU如何识别代码”的文章. 许多朋友说,读完我的作品后,它仍然在云端,而且毫无用处. 原因是我主要讨论了编译器的作用和CPU的工作模式,而没有涉及更多的底层知识. 大家的疑惑主要集中在一点上: 我们都知道CPU只识别0和1,但是CPU如何识别0和1?
机器没有思想,只会安装指定的电路才能工作
当我们了解微控制器时,我们会将编写的程序刻录到CPU中. 那么,您是否考虑过为什么将此过程称为“刻录”?
原因是它确实在燃烧: 芯片内部密密麻麻地排列着矩阵状的保险丝. 编写完程序后,编译器将程序转换为二进制代码(0或1),然后将保险丝吹过燃烧器的大流,并将这些二进制代码写入空白芯片. 程序中的0表示要烧断保险丝,而1表示不要烧断保险丝. 此方法记录二进制信息. 程序刻录后,芯片具有逻辑功能.
简单来说,刻录意味着指定了电路,用户只需要打开CPU的电源,它就可以根据预定的电路获得结果. 从用户的角度来看,计算机似乎可以理解我们编写的程序,但实际上它只是在遵循规则. 这与打开和关闭灯没有什么不同,除了打开和关闭的灯更多,而且电路状态更复杂之外.
下图是早期的只读存储器PROM. 由于保险丝在燃烧后无法恢复,因此只能用于存储特定程序,因此也称为一次性存储器.

现在,这种保险丝设计的存储器已基本消除,取而代之的是可重复擦除和写入的EPROM,其结构如下:


我们会发现EPROM不使用保险丝设计,而是使用沟壑. 这实际上是现代数字电路场效应晶体管的基础. 在详细介绍场效应管之前,让我们首先了解计算机和集成电路的发展.
计算机发展和数字电路的历史
自从1946年第一台真正的电子计算机ENIAC推出以来,计算机硬件技术已发展到第四代.
第一代电子管计算机: 逻辑元件采用真空管,它们的体积大,可靠性差,成本高,为计算机的未来发展奠定了基础;第二代晶体管计算机: 逻辑元件使用晶体管,并且电子电路的结构得到了优化. 改进大大提高了计算机的使用寿命,并降低了功耗. 第三代集成电路数字机: 逻辑部件采用中小型集成电路板,大大提高了速度和性能,计算机正式进入图像和文字处理. 第四代集成电路: 逻辑组件采用和超集成电路,大大提高了性能并降低了成本. 计算机已经开始进入成千上万的家庭. 这也是我们今天主要使用的计算机类型. 根据功能和结构的不同,集成电路可以分为三种类型: 模拟电路,数字电路和数字/模拟混合电路. 由于模拟电路不稳定,抗干扰能力差,数字/模拟混合电路还不成熟,所以目前主要使用的集成电路板是由数字电路构建的.
所谓的数字电路是一种使用数学信号来完成数字过程中的数字和逻辑运算的电路. 基本电气原理与模拟电路相同. 了解数字电路是什么之后,让我们再次看一下FET.

场效应晶体管简称为MOS,它是一种金属氧化物半导体. 蓝色部分是FET的主要部分,通常是绝缘的. 此时,源极和漏极电流不能流过. 当栅极(门)上有电压时,蓝色区域的一部分变成导体,并且源极和漏极打开.
只要我们通过电网电压,我们就可以知道电路是否打开,就像我们打开灯一样. 应该注意的是,场效应管的外观类似于模拟电路中的PN结二极管,两者均可以实现电流控制,但两者之间存在本质的区别: 场效应管是电压控制元件,二极管是电流控制元件. ,MOS不会击穿,其安全性远高于二极管.
了解了什么是编程以及MOS的作用之后,我们可以设计电路以实现算术和逻辑运算.

布尔运算,二进制和门电路
1845年,一位鲜为人知的英国数学家乔治·布尔(George Bull)在敬拜期间心血来潮,他认为哲学问题可以用数学来表示. 他将自己的思想汇编成书,即《逻辑的数学分析》和《思维定律的研究》,其中详细阐述了如何将逻辑问题转换为数学公式.
布尔代数中只有两个值: 1和0;三种操作: 逻辑加法,逻辑乘法和逻辑求反. 这里的1和0在数字意义上不是1和0,而是一件事情的两个矛盾状态. 例如,如果一个人还活着,则为1;如果他已经死了,则为0.
尽管George Bull的想法具有创新性,但当时并没有认真对待它们,甚至一度被认为是伪科学. 直到乔治·布尔(George Bull)死后多年,另一位计算机先驱,加密技术的创始人香农(Shannon)才发现了这一被遗忘的宝藏. 1938年,Shannon在“继电器和开关电路的符号分析”中将布尔代数与开关电路联系在一起. 通过这篇文章,年仅22岁的Shannon在MIT取得了电气工程硕.
人们可以依靠继电器形成逻辑门电路,从而得出逻辑运算结果:
与门: 当两个输入端子A和B均为“ 1”时,输出端子C为“ 1”,否则为“ 0”;或门: 当两个输入端子A和B都位于时. 当至少一个输入端子为“ 1”时,输出端子C为“ 1 NOT”门: 总输出状态与输入状态相反.
根据这三个基本门电路,可以形成其他门电路,例如NAND和XOR. 其符号和结构如下图所示:

人类用门电路创造了第一台电子管计算机. 在设计之初,科学家仍然使用人类的思维并采用了十进制. 用十个真空管代表一位数字0〜9似乎很方便,但是对于计算机来说,对应一位数字太浪费了. 体积也很大. 这时,另一位未出生的天才科学家再次站起来. 他是冯·诺依曼(von Neumann),被称为“现代计算机之父”.

冯·诺依曼(Von Neumann)提议将CPU更改为二进制. 二进制的优点是它对应于高电平和低电平. 他规定1代表高水平,0代表低水平. 此外,还有一个二进制系统. 优点是精度足够高. 例如,将0〜5V分为10个部分,每0.5V的电压变化表示一个十进制0〜9的值. 当时,电子元件的精度远不如现在. 一旦发生错误判断,后果将非常严重. 由于这两点,今天已经使用了二进制设计.
自行设计CPU
严格来说,CPU只是芯片的一部分,但是目前我们习惯上将这两个概念混合在一起. CPU被称为中央处理单元,它由三部分组成: 控制单元,计算单元和存储单元. 这里我们仅以算术单元为例,讨论如何使用逻辑门实现数字运算.

算术单元类型很多,加法器是最基本的一种,其他三个运算可以通过加法实现.
不考虑进位,根据布尔代数的定义,我们可以得到加法真值表:

A和B为输入,C为进位,S为输出值. 这种加法器称为半加法器,其布尔公式为A⊕B= AB + AB

![]()
当需要考虑进位时,输入变为三位数. 根据布尔代数的定义,一个完整的加法器还需要一个进位输入,因此需要使用两个半加法器将一个半加法器的和输出相加到另一个半加法器,以便可以将其用于进位. 我们可以列出真值表,其布尔公式如下:
(A⊕B)⊕C=A⊕B⊕C,由于排版的原因,在此不再赘述.

门电路图如下,

设计完一个完整的加法器后,我们构建了一个二进制加法器. 以一个八位二进制加法器为例,您需要使用八个全加法器,2 ^ 8 = 256,这样加法器可以在0〜255范围内执行加法运算,并且每个全加法器的进位输入都与加法器相同. 前一个. 全加法器的进位输出已连接.

因为减法可以被视为加一个负数(计算机通常使用“负补数1”),乘法被视为是多个数的加法,而除法则被视为被除数的减法运算,所以我们已经完成了设计的算术单元.
无论是内存(以特定顺序排列内存中的0和1以形成不同的信息),算术单元还是控制器,它们在原理上都是相同的,并且都基于对由布尔公式得出的真值输出相应的门电路. 因此,每个人现在都可以理解为什么CPU如此昂贵. 在一个小型CPU上集成这么多复杂的组件确实不是一件容易的事.
简单地说,编译器将首先翻译一段代码,并将其变成0和1的排列. 它们对应于高电平和低电平,并根据电平使用不同的逻辑电路. 我们只需要从键盘上输入几行代码,计算机就可以完成很多计算工作.
因此,选择计算机作为人类历史上最文明的产品并不是没有根据的.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-298706-1.html
估计更差