计算机基础原理深度解析
立即解锁
发布时间: 2025-08-20 02:12:40 阅读量: 1 订阅数: 4 


计算机架构:软件、编码与硬件的综合探讨
# 计算机基础原理深度解析
## 1. 程序终止机制
程序如何终止呢?在计算机运行过程中,操作系统(OS)会与用户程序并行运行。从概念上讲,程序的最后一条指令应将控制权交还给操作系统。在现代计算机设计中,这通过执行中断(int)指令来实现。执行该指令后,CPU 会将控制权从当前程序转移到内存中操作系统所在的特定位置。也就是说,程序终止后,操作系统会重新获得控制权并继续执行。
## 2. 执行单元概述
执行单元(EU)是执行操作数运算的地方。一个简单的执行单元可能由几个工作寄存器和一个加法器组成。如果将逻辑功能和移位功能集成到加法器中,就得到了算术逻辑单元(ALU)。在高性能计算机中,执行单元由许多硬件单元组成,如乘法、除法、移位等单元,采用并行逻辑。为了说明基本概念,我们主要讨论顺序操作。简单的 CPU 有一个能处理一元和二元操作的 ALU,例如加法、减法、乘法、除法、与、非、或、异或、移位等操作。
### 2.1 工作寄存器
执行单元支持一组工作寄存器。每个寄存器是一组有序的触发器,每个触发器是一个一位存储设备。以简单的 D 触发器为例,它有两个输入(D 数据和 Clk 时钟)和两个输出(Q 和 \Q)。\Q 右侧的圆圈表示 Q 的补码。只要有时钟信号,该触发器的输出 Q 总是遵循 D 输入。时钟信号是一个矩形电压脉冲,从 0V 上升到 3.3V 再下降。时钟输入处的圆圈表示触发器在时钟的下降沿改变状态,这意味着触发器状态改变时有一位延迟。如果时钟频率是 100MHz,其周期为 10ns,代表了 CPU 的原始速度。需要记住两点:一是没有时钟信号作为输入,触发器无法改变状态;二是寄存器的输出有原码和补码两种形式。
在第一代计算机中,只有一个寄存器,即累加器(acc)。对于二元操作,第一个源操作数在累加器中,目标也是累加器。从编程角度看,更多的工作寄存器能为用户提供更高的速度和便利性。因此,现代计算机通常有 8、16 或 32 个工作寄存器,具体情况如下表所示:
| 计算机型号 | 工作寄存器数量 | 寄存器位数 | 加法指令中的地址数量 |
| --- | --- | --- | --- |
| Burks | 1 | 16 | 1 |
| PDP - 8 | 1 | 12 | 1 |
| VAX | 16 | 32 | 2,3 |
| IBM360/370 | 16 | 32 | 2 |
| CDC6600/7600 | 24 | 60, 24 | 3 |
| CRAY 1 | 16 | 64,24 | 3 |
| B5000 | 0 | 48 (word) | - |
| MIPS | 32 | 32 | - |
| Pentium | 14 | 32, 16 | - |
| Itanium | 128 | 64 | - |
这些计算机在计算历史上都很有名。例如,Burks 机器的内存字长为 16 位,指令中编码了一个地址;PDP - 8 是第一台小型计算机,有一个 12 位的累加器,其加法指令包含一个地址;VAX 是超级小型计算机,使用 16 个 32 位寄存器;IBM 大型机有 16 个 32 位通用寄存器;CDC 大型机有 8 个 60 位操作数寄存器和 16 个 24 位地址寄存器;CRAY 1 超级计算机有 8 个 64 位操作数寄存器、8 个 24 位地址寄存器以及许多作为暂存器的保存寄存器;Burroughs 机器根本没有工作寄存器,其加法指令只有操作码,是一种栈机器,所有操作数(源和目标)都隐含在栈中,每个内存字长为 48 位。最后三种微型计算机具有引领未来趋势的特点,MIPS 机器是精简指令集计算机(RISC),共有 32 个 32 位寄存器;Pentium 使用 8 个 32 位寄存器进行数据或寻址,还有 6 个 16 位段寄存器;Itanium 有 128 个通用寄存器,每个寄存器为 64 位。
不同类型计算机的设计特点对比情况如下表所示:
| 计算机类型 | 加法器宽度 | 寄存器数量 | 操作系统保护 |
| --- | --- | --- | --- |
| 微型计算机 | 8 | 4 | 差 |
| 小型计算机 | 16 | 8 | 差 |
| 大型计算机 | 32 | 16 | 非常高 |
| 超级计算机 | 64 | 8 | 高 |
加法器宽度定义为一个时钟周期内可以相加的位数。一般来说,简单的微型计算机有 8 位或 16 位的加法器,其输入/输出结构和操作系统相对简单。在运行应用程序或进行开发工作时,微型计算机的操作系统经常会崩溃。不过,未来的微处理器将拥有更宽的内存数据总线、更宽的加法器和更可靠的操作系统。未来的大型机或超级计算机将被设计成微处理器集群,并配备非常复杂的操作系统。
### 2.2 先行进位加法器
执行单元中的加法器由许多一位全加器组成。加法器速度越快,CPU 速度就越快。加法器宽度在一定程度上决定了 CPU 的性能。在具有相同架构的大型计算机家族中,不同型号的加法器宽度可能不同。例如,最低型号一次只能加 8 位,因此需要四个基本加法周期才能加两个 32 位整数;而较高型号一次可以加 32 位,只需一个加法周期就能完成相同操作。尽管加法器宽度不同,但所有型号执行的是相同的指令来加两个 32 位整数。较低型号使用的硬件较少,成本较低,但速度也较慢。
直观地说,执行单元中的加法器宽度应与内存数据总线宽度相同。这样,一个操作数可以在一个物理内存周期内被取出,加法器可以在一个时钟周期内完成操作。一般来说,超级计算机使用 64 位加法器,大型机使用 32 位加法器,微型计算机使用 16 位加法器。如今,现代微型计算机不仅使用许多 32 位或 64 位加法器,还使用 64 位或 128 位数据总线。
加法器是简单 CPU 的核心。在加法操作过程中,进位可能会从最低有效位(LSB)传播到最高有效位(MSB)。为了减少电路延迟,先行进位加法器使用组合逻辑,通过许多级联的与 - 或门来生成进位输出。特定位位置的进位输入被扩展为前一阶段所有输入位的函数。这样,门级数量和电路延迟都会减少,最终目标是在一个时钟周期内完成加法操作。为了说明这一概念,我们先设计一个四位先行进位加法器,然后将其设计扩展到 16 位,最后扩展到 64 位。基本逻辑运算符如下:
- 括号( )具有最高优先级,用于组合多个操作。
- 反斜杠 \ 是 NOT 运算符,用于逻辑仿真。
- 句点(.)或空格是 AND 运算符。
- 加号(+)是 OR 运算符。
使用先行进位逻辑的进位传播加法器(CPA)由许多一位全加器组成。在每个位位置 i,有三个输入 Ai、Bi 和 Ci,两个输出 Si(和)和 Ci + 1(进位),其逻辑方程如下:
\[
\begin{align*}
S_i &= \overline{A_i} \overline{B_i} C_i + \overline{A_i} B_i \overline{C_i} + A_i \overline{B_i} \overline{C_i} + A_i B_i C_i\\
C_{i + 1} &= A_i B_i + B_i C_i + A_i C_i
\end{align*}
\]
在第 0 位(LSB),三个输入是 A0、B0 和 C0,两个输出是 S0 和 C1。定义如下函数:
\[
\begin{align*}
G_0 &= (A_0 B_0)\\
P_0 &= (A_0 + B_0)
\end{align*}
\]
其中,G0 是第 0 位的生成函数,意味着如果 A0 和 B0 都为真,无论进位输入如何,进位输出都为真;P0 是第 0 位的传播函数,意味着如果 A0 或 B0 为真,且进位输入 C0 也为真,则进位输出为真。第 0 位的进位输出 C1 是第 1 位的进位输入,其逻辑方程为:
\[
\begin{align*}
C_1 &= A_0 B_0 + B_0 C_0 + A_0 C_0\\
&= A_0 B_0 + (A_0 + B_0) C_0\\
&= G_0 + (P_0 C_0)
\end{align*}
\]
进一步定义:
\[
\begin{align*}
P_i &= A_i + B_i\\
G_i &= A_i B_i
\end{align*}
\]
Pi 函数在第 i 位
0
0
复制全文
相关推荐










