这种在半导体中加入杂质形成P/N型半导体名称叫做金属氧化物半导体(metal-oxide semiconductor--MOS)。这种可以实现通路和断路的半导体就跟电子管、继电器一样,能够实现开关的功能,所以可以用来制造计算机。而晶体管的最大优势在于体积非常小,1平方厘米大小的硅片上可以集成数千万个晶体管,于是让计算机的体积大大减小了。
(2)逻辑门电路
在计算机中,逻辑运算是通过“逻辑门电路”来实现的。逻辑门电路包括“非门”(AND Gate)、“或门”(OR Gate)、“非门”(NOT Gate),它们对应的是AND,OR,NOT三种逻辑关系。
“非门”(AND Gate)
图2 非门电路示意图
对于不是从事计算机硬件开发的人,我们不需要深入研究具体的电路布置。我只要只要,通过PN型半导体的组合排列,可以形成“非门”(AND Gate)、“或门”(OR Gate)、“非门”(NOT Gate)以及这三者之间相互组合的“逻辑门电路”。而采用逻辑们电路,我们就能够通过电压来实现二进制的逻辑运算。
(3)逻辑组合
现在,我们已经了解了基本逻辑门的工作原理,接下来就一起来看看用这些基本逻辑门电路来构建计算机微结构所需要使用的结构单元。逻辑结构分为两大类,一类是可以存储信息,一类不能存储信息。我们先来看看三种不能存储信息的逻辑结构:译码器、多路复用器和全加器。
译码器:译码器可实现的功能是“读”,它可以对一个二进制数进行解释,然后有且只有一个结果输出。当译码器有n个输入时,则有2^n个输出。每条指令中的“操作码”就是由译码器进行解释,读出其中代表的动作。
多路复用器:多路复用器可实现的功能是“选择”,一个多路复用器有2^n个输入、1个输出和n个选择线组成。通过选择线型号的改变,可以实现对2^n个输入进行选择,然后输出一个结果。
全加器:全加器可实现的功能是“加”,可以实现二进制数的相加运算。
可编程逻辑阵列:可编程逻辑阵列最大的特点在于可编程,即可通过用户的需要进行自己编写,然后实现所需要的功能。
逻辑完备性:如果有足够的AND OR NOT门,我们可以实现任何逻辑函数,这就是逻辑的完备性。
(4)存储单元
可以实现存储功能的电路有:R-S锁存器、门控D锁存器和寄存器。
R-S锁存器:R-S锁存器时最简单的存储单元,它能够存储一个位的信息。它是由两个NAND(或与)门相连而成,其中一个NAND门的输出是另一个的输入。其具体工作机制我们不深究,但我们可以知道当两个输入R-S保持为1时,电路的状态就不会改变,实现存储功能。
门控D锁存器:门控D锁存器是由R-S锁存器和控制电路(2个门电路)两部分组成。控制电路的作用是:当且仅当WE有效时(WE=1),才使得锁存器的值(输出)等于D的输入值。WE代表“可写”,当WE=0时,S和R的输入都为1,于是R-S锁存器存储的值保持不变。但WE=1时,可对电路进行“写”操作,当WE恢复为0时,写入电路的值将永远存储在R-S锁存器中,直到下一次“写”操作。
寄存器:寄存器是由多个bit组合而成的一个独立单元,能够实现对二进制数据的存储。寄存器的bit宽度可达可小,大到需要的任意数,小到只有1个bit。
(5)内存的概念
内存是计算机中很重要的一个部件,它是存储程序以及数据的地方。例如我们用word处理文稿时,当你在键盘上敲入字符时,它就被存入内存中,当你选择存盘时,内存中的数据就会被存入硬盘。对于内存更详细的介绍,我们等到下一次介绍计算机整体结构时再做介绍。现在我们先来看看内存到底是个什么东西。
内存其实就是一个电路板,这个电路板可以存储程序和数据,而且可以快速地写入和读取。对于内存的基本架构,我们可以通过下面的例子加以介绍。
内存就像一个柜子,比如商场的寄存柜。我们描写寄存柜时需要用到两个参数,一个是这个柜有多少个格子,这个在内存中叫作寻址空间;另一个是这个柜的每个格子能装的包在最大重量,内存中交作寻址能力。假设我们现在有一个柜子,这个柜子有1024个格子,每个格子里能装256个包。但是计算机它不会十进制,所以我们得把十进制换成二进制。1024=2^10,256=2^8。我们定义一个单位,每两个数作为一个单位,叫做bit,1024就是10bit,256就是8bit。于是,我们可以说举例的内存的寻址空间是10bit,寻址能力是8bit。我们通常用的电脑1G内存其实是一个近似值,它真实的寻址空间是:30bit,即2^30=1073741824=1.07G个格子。现在通常用的是32位的电脑,就是32-bit寻址能力,而许多专用于科学计算的大型计算机采用的是64bit寻址了。
(6)时序电路
前面我们已经介绍过了用于计算但不具备数据处理能力的逻辑电路,如译码器,全加器等;也介绍了用于储存数据但不具备数据处理能力的逻辑电路,如内存。但有没有存在既能存储信息又能处理数据的逻辑电路呢?答案是肯定的。这种逻辑电路的输出即与当前电路输入相关,又与之前电路的状态相关,而且能对这些数据进行相关处理,这种逻辑电路称为时序电路。
在时序电路中“时序”值得我们重点注意。我们把能够具备数据处理能力的逻辑电路称为组合逻辑结构,组合的意思就在于不管数据输入的时间相不相同,主要“组合”出来的数据是一样的,那么结果就是一样的。而我们把这种能够储存数据和处理数据的电路称为时序逻辑电路。这里的“时序”二字强调的正式电路输出结果不经和输入的数据有关,而且输入的时间和顺序有关,也就是说在不同的时间和不同输入顺序下输入相同的数据得到的结果是不相同的。举个密码锁的例子就可以很清楚的看出这两者的差别。小时候用密码本时有一些将在书本边上安装很多数字按钮,形成一个密码锁,我们只要把数字按对了,就可以打开笔记本,而不用考虑那个数字先按,那个数字后按。而像很多老式的保险箱,用的是一个转轮的密码锁,这种密码锁除了要求你输入的数字是正确的,还要求你必须按顺序把数字输入进去才能打开。这就可以大概看出“时序”和“组合”的差别了。
在时序电路中数字处理是跟时间和顺序有关的,也是自然就可以引出“状态”的概念。如果我们明白了“时序”与“组合”的差别,状态就很好理解了。可以说一下时间和一定顺序下,就是一种状态。
时序逻辑电路主要是用于实现有限状态机。有限状态机简单地将就是输出的结果由前一个结果(或称为前一种状态)和输入的数据决定的。具体的我们就不去深究了。