计算机组成原理

Time: 2025-05-22 Thursday 12:00:22

计算机组成原理

冯诺依曼架构(运算器,控制器,存储器,输入输出设备)

程序的编译运行

程序的存储[指令(操作码和地址码)和数据]

存储器(配合MDR, MAR)

cpu结构

  • ACC: Accumulate 累加器
  • MQ: MultiPlier-Quotinet Register 乘商寄存器
  • X: 操作数寄存器
  • 控制器:
    • CU(Control Unit): 控制单元
    • IR(Instruction Register): 指令寄存器
    • PC(Progammer Count): 程序计数器

cpu执行流程

PC取值 -> 存放到IR -> CU获取操作码 -> IR通过MAR获取地址码数据传到MDR然后ACC -> CU操作 -> PC继续

什么是32位,64位机器

CPU处理数据的字长

CPU性能指标

  • 数据通路带宽:单位时间内可以传输的最大数据量
  • 吞吐量:
    • 网络吞吐量: 在网络中,吞吐量是指在单位时间内通过网络连接成功传输的数据总量。这与网络带宽密切相关,但通常小于或等于带宽,因为实际传输会受到网络延迟、丢包、协议开销等因素的影响。
    • 磁盘吞吐量: 衡量硬盘驱动器每秒可以读取或写入的数据量。受硬盘的读写速度、接口带宽、文件系统效率等因素影响。
    • CPU 吞吐量: 可以衡量 CPU 每秒执行的指令数或运算次数。受 CPU 主频、架构效率、指令集、缓存命中率等影响。
    • 系统整体吞吐量: 衡量整个计算机系统在单位时间内完成特定类型任务的数量,例如,每秒可以处理多少个用户请求。这受到所有子系统(CPU、内存、磁盘、网络等)性能的共同影响,往往由最慢的那个环节决定。
  • 响应时间
  • 主频
  • CPI:执行一条指令的时钟周期数
  • MIPS: 百万指令时间

计算机的补码计算

ALU计算加减法(溢出)

硬件如何设置溢出标志 (OF)?

0110 + 0110 为例

  • 计算机硬件在执行加法运算时,会自动计算出这次运算中,进入到最高位(符号位)的进位 和从最高位向外产生的进位 。
  • 然后,根据我们之前讨论的有符号溢出判断规则,硬件会根据 和 的关系来设置 OF 标志位。
  • OF 标志的设置规则:OF = (异或)
    • 如果 Cin和 C out相等 ,说明没有发生有符号溢出,OF 被设置为 0。
    • 如果 C in和 C out不相等 ,说明发生了有符号溢出,OF 被设置为 1。

对于我们的例子: 0110 + 0110

想象我们有 4 个“计算筐”,分别对应从右到左的第 0 位、第 1 位、第 2 位、第 3 位(最高位/符号位)。

1
3(符号位)   第2位   第1位   第0位  ------------------------------------       0           1       1       0     (第一个数)     + 0           1       1       0     (第二个数)     ------------------------------------     ? (?)         ?       ?       ?     (结果)   进位出去(?) ->   进位进来(?) ->

我们从右边(最低位)开始:

  1. 第 0 位 (个位):
    • 看最右边的两个 0: 0 + 0 = 0。没有超过 2,所以本位结果是 0向左(下一位)进位是 0
    • 这个“向左进位 0”就会进入到第 1 位。
  2. 第 1 位:
    • 看右数第二个两个 1: 1 + 1 = 2。
    • 别忘了从第 0 位进入的那个进位: 1 + 1 + 0 = 2。
    • 在二进制里,“2”就是“写 0,进 1”。所以本位结果是 0向左(下一位)进位是 1
    • 这个“向左进位 1”就会进入到第 2 位。
  3. 第 2 位:
    • 看右数第三个两个 1: 1 + 1 = 2。
    • 别忘了从第 1 位进入的那个进位: 1 + 1 + 1 = 3。
    • 在二进制里,“3”就是“写 1,进 1”。所以本位结果是 1向左(下一位)进位是 1
    • 这个“向左进位 1”就会进入到第 3 位(最高位/符号位)。
  4. 第 3 位 (最高位/符号位):
    • 看最左边的两个 0: 0 + 0 = 0。
    • 重点来啦! 别忘了从第 2 位进入到这里的那个进位: 0 + 0 + 1 = 1。
    • 这里的这个 “进入”的 1,就是我们说的 for the sign bit
    • 计算本位结果: 0 + 0 + 1 = 1。所以最左边(第 3 位)的本位结果是 1
    • 计算向左(超出 4 位)的进位: 0 + 0 + 1 = 1。没有超过 2,所以没有产生向第 4 位(外面)的进位
    • 这里的这个 “没有产生”的进位 0,就是我们说的 from the sign bit

总结来看:

  • 在处理最高位(第 3 位)的加法时,进入到这一位的“额外”数字(来自前一位即第 2 位的进位)是 1。 这就是 = 1。
  • 在处理最高位(第 3 位)的加法后,这一位“产生”并试图向更左边(超出 4 位)传递的“额外”数字(进位)是 0。 这就是 = 0。

所以, 指的是“从它右边的位计算后传递过来的进位”,而 指的是“它自己计算后向它左边的位传递的进位”。在判断有符号溢出时,我们只关心最高位的这两个进位。

存储器SRAM DRAM 主存的扩容


计算机组成原理
http://example.com/2025/05/22/计算机组成原理/
作者
Jack Asher
发布于
2025年5月22日
许可协议