IB/第4组/计算机科学/计算机组织/硬件层

晶体管是一种由半导体制成的电子元件,能够调节电流流动。晶体管通常由硅或锗制成。晶体管有三个连接点:发射极,充当输出端;基极,用于控制电流;集电极,充当输出端。使用基极可以调节从集电极到发射极的电流流动。
晶体管用于创建逻辑门或开关,通过控制发射极的输出来实现。不同的晶体管类型可以使用不同的结构来表示不同的逻辑门。例如,与门的晶体管布局与或门的布局不同,或门的发射极位于不同的位置。
晶体管最初是为了取代真空管而创建的,真空管具有类似的功能。最初,晶体管是独立工作的离散元件,计算机也是用单个晶体管组装的。如今,晶体管可以在集成电路中大量组装(见下文)。
考试不需要
考试不需要
概述

集成电路 (IC) 是电子设备的核心组件,有些人称之为“大多数电路的心脏和大脑”(SparkFun Learn)。集成电路更常被称为“芯片”或“微电子电路”,它是一种半导体晶圆——通常由硅(一种半导体材料)制成——在其上放置微型元件以确保设备的功能(例如电阻器——调节电流——电容器——储存能量——二极管——信号电流——以及晶体管——二进制开关门/见什么是晶体管?文章)。这种微芯片的容量从数千个到数百万个晶体管不等,具体取决于机器的需求。
制造过程:光刻
集成电路是通过重复一个称为光刻的过程来制造的,这是一种使用光线将复杂图案转移到称为光掩模(通常是金属)的合适材料的图案薄膜上的技术,光掩模放置在硅晶圆(一种半导体材料)上;用于构建晶体管。
将晶体管安装到集成电路
然后重复该过程,直到所有所需的图案都被转移到样品上,然后样品就变成一个晶体管。查看摩尔定律图(晶体管页面)了解过去几十年可以安装在集成电路中的晶体管数量是如何演变的。
集成电路是电子元件,相当于我们的 DNA:它们构成了设备的构建模块,确保其基本功能。因此,它的作用在任何单元的功能中都是至关重要的,确保多个操作同时运行(充当放大器、振荡器、计时器、计数器等)(Whatis.com, 2021)。
即使将多个电子粒子组合在一起的首次尝试可以追溯到 1920 年代,但第一个可以与现代集成电路相比的芯片是由德国工程师沃纳·雅各比制造的,他在 1949 年为他的发明申请了专利:一种半导体放大设备,显示五个晶体管安装在一个三级放大器排列中(维基百科,2022)。然而,关于集成电路的大部分进展发生在 60 年代、70 年代和 80 年代,因为工程师试图克服数字霸权问题(当数百万个电子元件要组装成一个单一的芯片时,然后由于光刻工艺,数十万个芯片要安装到一台计算机上)。在 2022 年,雅各比发现 63 年后,苹果公司在其基于 ARM 的双芯片 M1 Ultra 系统中成功地安装了1140 亿个晶体管,该芯片使用台积电的5 纳米 (1 米 x 10-9) 半导体(维基百科,2022)。
2.1.11 定义布尔运算符;与、或、非、与非、或非和异或。
2.1.12 使用上述运算符构建真值表。
计算机中的门有时被称为逻辑门,因为它们每个只执行一个逻辑功能。也就是说,每个门接收一个或多个输入值并产生单个输出值。因为我们处理的是二进制信息,所以每个输入和输出要么是0
,对应于低电压信号,要么是1
,对应于高电压信号。门的类型和输入值决定了输出值。
布尔逻辑(布尔代数)是一种常用的数学工具,用于计算机逻辑。
在布尔逻辑中,值仅由“假”或“真”(0
或 1
)表示。在硬件中,“假”和“真”由电流“关闭”或“打开”来表示。
存在布尔运算符(与、或、非、与非、或非和异或),它们接收一个或两个输入并输出一个输出。这些操作是更复杂的计算机算法的基础。

晶体管由三个主要部分组成,集电极、基极和发射极(在右侧的图中分别标记为“C”、“B”和“E”)。集电极始终有电流流过,但是如果基极没有电流,则集电极会被阻塞。遵循相同的逻辑,如果基极有电流流过而集电极没有,则电流会被阻塞。如果集电极和基极都有电流流过,则发射极会输出电流。
两个串联的晶体管可以构成布尔门 AND,因为如果第一个晶体管没有输出,则第二个晶体管的集电极将没有电流。
两个并联的晶体管可以构成布尔门 OR,因为如果其中一个发射极输出电流,则电流将到达输出端。
布尔表达式 | 逻辑图符号 | 真值表 | ||||||
---|---|---|---|---|---|---|---|---|
X = A' |
A ![]() X |
|
NOT 门接收一个输入信号并产生一个输出信号。右侧的表以三种方式说明了 NOT 门:布尔表达式、逻辑图符号和真值表。在每种表示中,变量A
表示输入信号,它可以是0
或1
。变量X
表示输出信号,其值(0
或1
)由A
的值决定。
根据定义,如果 NOT 门的输入值为0
,则输出为1
;如果输入值为1
,则输出为0
。NOT 门有时被称为反相器,因为它会反转输入值。
在布尔表达式中,NOT 操作由'
标记表示。有时,此操作也可以用水平线覆盖被否定值的表示(例如,ā
)。在右侧表格中相应的表示中,通过对输入值A
应用 NOT 操作,为X
分配一个值。在这样的赋值语句中,等号左侧的变量取等号右侧表达式的值。
NOT 门的逻辑图符号表示为一个三角形,在其末端有一个小圆圈(称为反转泡)。输入和输出显示为流入和流出门的线条。有时这些线条有标签,但并不总是这样。输入信号A
通常位于图的左侧,输出X
通常位于图的右侧,表示 NOT 门的结果。
真值表显示了 NOT 门所有可能的输入值及其各自的输出值。因为 NOT 门只有一个输入信号,并且该信号只能是0
或1
,所以真值表中标记为输入信号 A 的列只有两种可能性。标记为X
的列显示了门的输出,它是输入的反转。请注意,在三种表示中,只有真值表实际上定义了门在所有情况下或可能性的行为。
这三种符号是表示 NOT 门的不同方式。例如,布尔表达式0'
的结果始终为1
,而布尔表达式1'
的结果始终为0
。这种行为始终与三种符号中显示的值一致。
布尔表达式 | 逻辑图符号 | 真值表 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X = A • B
|
|
|
与接收一个输入信号的 NOT 门不同,AND 门接收两个输入信号。两个输入信号的值决定了输出信号的值。如果 AND 门的两个输入值都是1
,则输出为1
;否则,输出为0
。
布尔代数中的 AND 操作用单个点 (•
) 表示,或者在某些情况下用星号 (*
) 表示。通常操作符本身被认为是隐含的,例如A•B
通常写成AB
。
因为有两个输入,每个输入有两个可能的值,所以可以将四种可能的1
和0
组合作为输入提供给 AND 门。因此,在布尔表达式中使用 AND 运算符时,可能发生四种情况。
同样地,显示 AND 门行为的真值表有四行,显示了所有四种可能的输入组合。
布尔表达式 | 逻辑图符号 | 真值表 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X = A + B
|
|
|
与 AND 门一样,OR 门也有两个输入。如果两个输入值都是 0,则输出值为 0;否则,输入为 1。
布尔代数 OR 操作用加号 (+) 表示。OR 门有两个输入,每个输入都可以是两个值之一,因此与 AND 门一样,有四种输入组合,因此真值表中有四行。
NAND 门 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
布尔表达式 | 逻辑图符号 | 真值表 | |||||||||||||||||||
X = (A • B)'
|
|
| |||||||||||||||||||
NOR 门 | |||||||||||||||||||||
布尔表达式 | 逻辑图符号 | 真值表 | |||||||||||||||||||
X = (A + B)' X = A - B
|
|
|
NAND 和 NOR 门接受两个输入值。NAND 和 NOR 门本质上分别是 AND 和 OR 门的相反。也就是说,NAND 门的输出与取 AND 门的输出并将其输入反相器(NOT 门)相同。
在布尔代数中通常没有用于表示 NAND 和 NOR 门操作的特定符号。相反,应该依靠它们的定义来表达这些概念。也就是说,NAND 的布尔代数表达式是 AND 操作的否定。同样,NOR 的布尔代数表达式是 OR 操作的否定。
NAND 和 NOR 的逻辑图符号与 AND 和 OR 的符号相同,只是 NAND 和 NOR 符号有反转泡(表示否定)。比较 AND 和 NAND 的真值表的输出列。它们是相反的,逐行比较。OR 和 NOR 门也是如此。
布尔门 XOR 与通常称为“或”门的 OR 门在两个主要方面不同。
布尔表达式 | 逻辑图符号 | 真值表 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X = A ⊕ B
|
|
|
布尔门 XOR 与通常称为“或”门的 OR 门在两个主要方面不同。
首先,布尔门 XOR 或“异或”门的运算与 OR 门完全相同,只是如果两个输入都为真 (1),则结果输出为假。XOR 门在两个输入为真 (1) 时产生假 (0),否则产生真 (1)。请注意 XOR 门与 OR 门之间的区别;它们只在一个输入情况下不同。当两个输入信号都为真 (1) 时,OR 门产生真 (1),而 XOR 产生假 (0)。
布尔代数符号⊕有时用于表示 XOR 操作。但是,XOR 操作也可以使用其他操作符来表示,例如А̄B + AB̅。
“或”门与“异或”门之间的另一个主要区别是用于显示 XOR 门的符号。“异或”门符号具有与“或”门相同的形状,但其左侧有一个曲线,沿着“或”门的左侧曲线端口延伸。
人们已经观察到六种特定的门类型。记住它们并了解它们的工作原理似乎是一项艰巨的任务。好吧,这可能取决于个人的思考方式。你不应该被鼓励去死记硬背真值表。这些门的处理可以用一般的术语简要描述。如果你用这种方式思考,就可以在需要的时候随时生成相应的真值表。
其中一些描述是根据什么输入值会导致门产生 1 作为输出;在任何其他情况下,它都会产生 0。
- 非门反转其单个输入值
- 与门在两个输入值都为 1 时产生 1
- 或门在其中一个或两个输入值都为 1 时产生 1
- 异或门在只有一个输入值为 1 时产生 1
- 与非门产生与与门相反的结果
- 或非门产生与或门相反的结果

真值表是电路各种输入以及与每个输入组合相关的输出的可视化表示。要创建真值表,请按顺序绘制一个表格,为每个输入设置一列,为输出设置一列。右侧的图像表示 Q = A 或非 B 的真值表。在第一行中,按图像中显示的顺序写入输入和输出的名称。然后,在每一行添加所有可能的输入组合,并根据所选布尔门的输入确定每一行的输出。
输入组合的数量应对应于 2 的输入数量次方(2 个输入 = 4 个组合,3 个输入 = 8 个组合)。
对于更复杂的布尔表达式,最好为中间运算添加额外的列。
例如,对于表达式 Q = A 与 (B 或 C),除了输入 A、B 和 C 的列之外,你还可以添加一个名为“B 或 C”的新列。这不是强制性的,但有助于可视化运算并防止错误。
- 从布尔表达式中识别门
- 确定门处理的顺序
- 开始为输入信号插入真或假,遵循布尔表达式以了解背后的逻辑流程
- 开始构建逻辑图
组合电路由逻辑门组成,这些逻辑门的输出在任何时候都由当前的输入组合决定,而与之前的输入无关。它由输入变量、逻辑门和输出变量组成。逻辑门接受来自输入的信号,并在输出端生成信号。组合电路的一些例子包括二进制加法器、十进制加法器、译码器、多路复用器、半加法器、半减法器等。
考试不需要
用于添加两个一位数的逻辑电路称为半加法器。输出两个位:加法的和以及进位。碰巧,由于 0 + 0 = 0 且 1 + 0 = 0 + 1 = 1,如果 A 和 B 都不为 1,则半加法器的输出与异或门的输出相同,只有在将 1 和 1 相加时才需要与门。

因此,进位仅在 1 + 1 的加法中是必要的,这等于 10(2 的二进制)。此真值表中再现了加法过程。
A | B | 进位 | 和 |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |

全加法器是一个由逻辑门组成的电路,类似于半加法器,但多了一个输入来考虑进位变量。全加法器最多可以加三个一位变量,并输出一个和和进位,与半加法器相同。全加法器由两个半加法器和一个用于处理进位的或门组成。
A | B | C | 进位 | 和 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
考试不需要

现在您已经熟悉了半加法器和全加法器,我们可以构建一个完整的电路来添加两个 8 位整数。这个电路称为 8 位进位链加法器。
结构很简单。第一个电路是半加法器,接下来的所有电路都是全加法器。第一个电路的进位将被传递给全加法器,然后全加法器将其进位传递给下一个全加法器,依此类推。每个组件都接收来自两个数字的对应位置的位。每个组件还输出结果。当组合在一起时,每个单独组件的结果字符串会给出最终结果。
考试不需要
算术逻辑单元是 CPU(中央处理器)的主要组件之一,负责对来自不同存储位置(例如 RAM 或硬盘)的二进制数执行算术运算。
ALU 由两个基本组件组成:算术单元和逻辑单元。
算术逻辑单元 (ALU) 能够执行基本的算术运算,例如将两个数字相加、相减、相乘和相除。这个单元还能够执行逻辑运算,例如AND
、OR
和 NOT
。 ALU 对字进行操作,字是与特定计算机设计相关联的自然数据单位。从历史上看,计算机的字长是 ALU 每次处理的位数。然而,当前的英特尔处理器系列模糊了这个定义,将字长定义为 16 位。处理器可以处理字(16 位)、双字(32 位)和四字(64 位)。在本维基百科的其他部分,当提到字时,将是指前面提到的历史意义上的字长。

大多数现代 ALU 都有少量特殊的存储单元,称为 寄存器。这些寄存器包含一个字,用于存储需要立即再次使用的信息。例如,在计算 1 × (2 + 3) 中。首先将 2 加到 3,然后将结果乘以 1。与其将 2 和 3 相加的结果存储在内存中,然后将其检索出来乘以 1,不如将结果保留在寄存器中,然后将寄存器的内容乘以 1。访问寄存器的速度比访问内存位置快得多。
从比喻的角度来看,ALU 可以被看作是计算器和人脑(所有逻辑都在这里处理)的结合。
行波进位加法器工作正常,但速度很慢,因为“梯形”中的每个全加器都必须等待前一个加器的进位才能进行计算。先行进位加法器可以通过绕过此问题来执行更快的计算,它使用单独的模块提前计算进位。
考试不需要
首先,移位电路是一种逻辑门电路,它对输入进行指定数量和指定方向的移位操作。它们主要用于通过将数据移位一定数量的位来将数据从一个区域移动到另一个区域。移位电路(如下面图像中所示的电路)由或门和与门组成。

二进制移位电路有两个输入和一个输出。其中一个输入(A)是将要移位的输入,另一个输入(D)是移位器。D 输入将按一定数量移位 A 输入。当 D = 0 时,A 输入将向左移一位,当 D = 1 时,A 输入将向右移一位。
将数字移位 1、2 或 3 位意味着将数字除以或乘以 2、4 或 8 倍。那么要移位 A 输入需要什么?我们需要另一个输入,即 D 输入,它将按指定方向将 A 输入移位任意数量的位。
比较器电路是一种电子电路,它比较两个输入以最终产生输出。该电路的输出值指示哪个输入更大或更小,使用运算放大器。运算放大器可以帮助放大两个输入之间的电压。
比较器电路有两种类型:反相和非反相。
反相比较器电路
考试不需要
多路复用器是一种组合电路,它可以根据一个或多个选择输入产生多个输出。

在左侧的图像中,我们可以看到可能的输出(标记为“A”和“B”)根据选择器输入(标记为“sel”)而改变。
该多路复用器的真值表将是
sel | 输出 |
---|---|
0 | A |
1 | B |
在上面的真值表中,我们可以观察到,根据“sel”的输出,整个电路的输出从 A 变为 B。

如果我们想要更多可能的输出,我们也必须更改选择器输入的数量。对于 N 个输入线,我们需要 个选择器输入。遵循相同的逻辑,我们需要 个输入线,每个 个选择器线。
该多路复用器的真值表将是
X | Y | 输出 |
0 | 0 | f(0) |
0 | 1 | f(1) |
1 | 0 | f(2) |
1 | 1 | f(3) |
内存是单元的集合,每个单元都有唯一的物理地址。我们在这里使用通用词“单元”而不是“字节”,因为每个可寻址位置的位数(称为内存的 可寻址性)因机器而异。如今,大多数计算机都是字节可寻址的。
为了充分说明内存的概念,以一台具有 4 GB RAM 的计算机为例。内存包含 4 × 230 个字节,这意味着计算机的每个字节都是唯一可寻址的,并且该机器的 可寻址性 为 8 位。内存中的单元从 0 开始连续编号。例如,如果 可寻址性 为 8,并且有 256 个内存单元,则这些单元将按以下方式寻址
地址 | 目录 |
---|---|
00000000 | 11100011 |
00000001 | 01010101 |
11111100 | 00000000 |
11111101 | 11111111 |
11111110 | 10101010 |
11111111 | 00110011 |
地址 11111110
的内容是什么?存储在该位置的位模式为 10101010
。但是,内容的实际含义(无论是指令、值、符号等)将在后面讨论。然而,重要的是要了解位模式是信息,可以被解释。
在引用字节或字中的位时,位从右到左开始,从零开始编号。地址 1111110
中的位编号如下
位位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
目录 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |

门控锁存器是一个具有 3 个输入的电路。与普通锁存器电路类似,门控锁存器使用置位和复位锁存器,它与普通锁存器不同之处在于使用了一个使能开关。
置位和复位开关,通常称为 S-R 锁存器,用于将输入置位为 1 或将输入复位为 0。
该开关打开上述置位和复位开关。如果这个使能开关关闭会发生什么?如果使能开关关闭,那么置位和复位开关也会关闭。因此,当使能开关打开时,另外两个开关,置位开关和复位开关,能够在需要时通电。
门控开关主要用于什么?门控锁存器主要用于数字存储,是每个电子设备必不可少的组成部分。当门控锁存器中存储的内存不需要计算机使用时,门控锁存器将关闭。
寄存器是一小块存储单个数值的内存。更大的内存结构(如 RAM)由多个寄存器组成。寄存器也用在 CPU 中,在那里它们充当小型但快速的临时存储信息的方式(这些称为处理器寄存器)。

只读存储器 (ROM) 是一种在创建后无法更改的存储设备。为此,该设备通常必须进行硬连线。
顾名思义,只能从 ROM 中读取数据。
通常,ROM 用于很少需要更改的软件。但是,ROM 的执行速度比 RAM 慢。
右侧显示了 ROM 在主板上可能的样子。

主存储器被定义为 CPU 可以直接访问和修改的内存。 这带来的副作用是它易失性,这意味着当电源关闭时会被删除,但是它提高了 CPU 读取和写入内存的速度。 主存储器由计算机的寄存器、高速缓存和 RAM 组成。
主存储器用于需要快速内存访问的操作,因为它比将所有内容写入辅助存储器更快。 它还用于存储不需要保存的数据(例如,当你复制某些东西时,它被存储在主存储器中),以及用于记住 CPU 要执行的指令。

辅助存储器是非易失性的,这意味着即使电源关闭,也可以访问或检索数据和程序。 辅助存储器包括所有永久性或持久性存储设备,例如只读存储器 (ROM)。 在计算操作中,辅助存储器只能由主存储器访问,然后才能传输到处理器 - 这就是它运行速度比 RAM 慢的原因。
一般来说,任何长期存储的东西都会进入辅助存储器。 这主要是计算机系统的启动部分,应该保持一致,比如 Windows 运行所需的程序文件。
它可以被解释为计算机中的文件存储系统。 RAM 可以根据需要轻松访问辅助存储器中的数据。
2.1.5 确定持久存储的必要性。
输入设备是将数据和程序输入计算机并存储到内存中的方式。 输出设备是将结果发送回用户的工具。 由于大部分主内存都是易失性的并且容量有限,因此必须存在其他类型的存储设备,以便在不再处理程序和数据或机器未开启时存储程序和数据。 这些其他类型的存储设备(除了主存储器之外)被称为辅助或辅助存储设备。 由于必须从这些设备读取数据并写入这些设备,因此每个存储设备也是输入和输出设备。
辅助存储设备的示例包括;
- 磁带,
- 磁盘,
- CD 和 DVD,
- 闪存驱动器,
- 外置硬盘