{"name":"运算方法与运算器","id":"计算机系统-程序结构和执行-运算方法与运算器","content":"\n# 运算方法与运算器\n\n---\n\n## 一、机器算术系统的本质\n\n### 1.1 有限字长数值系统\n\n计算机中的数不是数学实数，而是：\n\n> **有限位模式（bit pattern）**\n\n设字长为 n 位，则可表示状态数：\n\n$$\n2^n\n$$\n\n因此计算机数值空间本质为：\n\n$$\n\\mathbb{Z}_{2^n}\n$$\n\n即：\n\n**模 $2^n$ 整数环**\n\n---\n\n### 1.2 机器数的编码方式\n\n编码的目标：\n\n将数学整数映射为位模式。\n\n#### 常见编码\n\n| 编码 | 特点        | 运算特性   |\n| -- | --------- | ------ |\n| 原码 | 符号位 + 数值位 | 加减需分情况 |\n| 反码 | 负数按位取反    | 存在双零   |\n| 补码 | 模环表示      | 运算统一   |\n\n---\n\n### 1.3 补码的本质\n\n补码定义：\n\n$$\n-x \\equiv 2^n - x\n$$\n\n意义：\n\n> 负数 = 模空间中的加法逆元\n\n因此：\n\n$$\nX - Y = X + (-Y)\n$$\n\n计算机无需减法器。\n\n---\n\n### 1.4 机器算术统一原理\n\n计算机整数运算本质：\n\n$$\n结果 = 真值 \\bmod 2^n\n$$\n\n所有加减法统一为：\n\n**模加法**\n\n---\n\n## 二、运算语义与位级行为\n\n机器执行的是位操作，但对应数值意义。\n\n---\n\n### 2.1 移位运算的数值语义\n\n#### 逻辑左移\n\n位左移，低位补0：\n\n$$\nx \\times 2\n$$\n\n（无符号）\n\n---\n\n#### 算术右移\n\n最高位复制：\n\n$$\n\\lfloor x / 2 \\rfloor\n$$\n\n（保持符号）\n\n---\n\n### 2.2 进位与溢出\n\n必须区分：\n\n| 概念 | 含义     |\n| -- | ------ |\n| 进位 | 超出位宽   |\n| 溢出 | 数值语义错误 |\n\n---\n\n#### 有符号溢出条件\n\n同号相加结果异号。\n\n---\n\n#### 硬件检测\n\n设：\n\n* $C_{in}$：符号位进位\n* $C_{out}$：最高位进位\n\n则：\n\n$$\nOverflow = C_{in} \\oplus C_{out}\n$$\n\n---\n\n## 三、定点数基本运算\n\n---\n\n### 3.1 补码加法\n\n$$\n[X]_{补} + [Y]_{补}\n= [X+Y]_{补} \\bmod 2^n\n$$\n\n---\n\n### 3.2 补码减法\n\n$$\nX - Y = X + (-Y)\n$$\n\n---\n\n### 3.3 溢出检测实现（软件）\n\n```c\nint tadd_ok(int x, int y) {\n    int sum = x + y;\n    int neg_over = x < 0 && y < 0 && sum >= 0;\n    int pos_over = x >= 0 && y >= 0 && sum < 0;\n    return !(neg_over || pos_over);\n}\n```\n\n---\n\n## 四、乘法运算体系\n\n乘法目标：\n\n$$\nP = X \\times Y\n$$\n\n本质：\n\n**部分积累加**\n\n---\n\n### 4.1 乘法算法分类\n\n```\n乘法算法\n├ 串行乘法\n│   ├ 原码乘法\n│   ├ Booth乘法\n│\n├ 并行乘法\n│   ├ 阵列乘法器\n│   ├ Wallace tree\n│\n└ 高速乘法\n```\n\n---\n\n### 4.2 原码一位乘法\n\n核心思想：\n\n逐位检查乘数：\n\n* 位=1 → 加被乘数\n* 位=0 → 不加\n* 每轮移位\n\n---\n\n#### 符号处理\n\n符号位独立：\n\n$$\nSign = Sign_X \\oplus Sign_Y\n$$\n\n---\n\n#### 运算流程\n\n```\n部分积清零\n重复 n 次：\n    若乘数最低位=1 → 加被乘数\n    右移\n处理符号\n```\n\n---\n\n### 4.3 补码一位乘法（Booth）\n\n动机：\n\n减少加法次数。\n\n---\n\n#### 核心思想\n\n检测位对：\n\n| 当前位     | 前一位 | 操作 |\n| ------- | --- | -- |\n| 01      | +X  |    |\n| 10      | -X  |    |\n| 00 / 11 | 不变  |    |\n\n---\n\n#### 每轮操作\n\n1. 加 / 减\n2. 算术右移\n\n---\n\n## 五、除法运算体系\n\n目标：\n\n$$\nQ = X / Y\n$$\n\n本质：\n\n**试商 + 修正**\n\n---\n\n### 5.1 算法分类\n\n```\n除法算法\n├ 恢复除法\n├ 不恢复除法\n├ SRT除法\n```\n\n---\n\n### 5.2 恢复除法\n\n流程：\n\n```\n左移\n减除数\n若负 → 恢复 + 商0\n否则 → 商1\n```\n\n---\n\n### 5.3 不恢复除法\n\n若上次为负：\n\n→ 加除数\n\n否则：\n\n→ 减除数\n\n避免恢复步骤。\n\n---\n\n## 六、运算器（ALU）体系结构\n\n运算器 = 数据通路 + 控制通路\n\n---\n\n### 6.1 数据通路\n\n```\n寄存器组\n加法器 / ALU\n移位器\n部分积寄存器\n乘数寄存器\n计数器\n```\n\n---\n\n### 6.2 控制通路\n\n控制：\n\n* 何时加\n* 何时移位\n* 循环次数\n\n实现：\n\n有限状态机。\n\n---\n\n### 6.3 乘法器典型结构\n\n```\n        ┌─────────┐\nX ─────→│ 被乘数寄存器 │\n        └─────────┘\n               ↓\n        ┌─────────┐\n        │   ALU   │\n        └─────────┘\n               ↓\n        ┌─────────┐\n        │ 部分积寄存器 │\n        └─────────┘\n               ↓\n        移位器\n```\n\n---\n\n## 七、微操作与执行过程\n\n机器执行的不是算法，而是：\n\n**微操作序列**\n\n例：\n\n```\nA ← 0\nrepeat n:\n    if Q0=1 → A ← A + X\n    (A,Q) 算术右移\n```\n\n---\n\n## 八、性能与实现权衡\n\n| 设计维度  | 影响   |\n| ----- | ---- |\n| 位宽    | 延迟   |\n| 并行度   | 面积   |\n| 流水线   | 吞吐   |\n| 算法复杂度 | 控制逻辑 |\n\n---\n\n## 九、运算器体系演进\n\n```\n串行加法器\n→ 并行加法器\n→ 乘法阵列\n→ 流水线ALU\n→ SIMD\n→ 向量处理器\n```\n\n---\n\n## 十、统一认知模型（核心）\n\n计算机算术的本质链：\n\n```\n数值编码\n→ 模运算语义\n→ 位级操作\n→ 运算算法\n→ 微操作序列\n→ 数据通路\n→ 控制逻辑\n→ 运算器\n→ 处理器执行\n```\n\n---\n\n## 十一、核心原理总结（最重要）\n\n1. 机器数是模空间元素\n2. 补码是加法逆元编码\n3. 运算 = 模运算\n4. 移位 = 乘除2\n5. 乘法 = 部分积累加\n6. 除法 = 试商修正\n7. 运算器 = 数据流 + 控制流\n\n---\n\n## 十二、知识结构树\n\n```\n机器算术系统\n├ 数值表示\n│   ├ 原码\n│   ├ 反码\n│   └ 补码\n│\n├ 运算语义\n│   ├ 模运算\n│   ├ 移位语义\n│   └ 溢出\n│\n├ 运算算法\n│   ├ 加减\n│   ├ 乘法\n│   └ 除法\n│\n├ 运算器结构\n│   ├ 数据通路\n│   └ 控制通路\n│\n└ 工程实现\n    ├ 微操作\n    ├ 时序\n    └ 性能\n```\n\n## 关联内容（自动生成）\n\n- [/计算机系统/数字逻辑电路.md](/计算机系统/数字逻辑电路.md) 数字逻辑电路是运算方法与运算器的硬件基础，运算器由逻辑门、组合逻辑电路构成\n- [/计算机系统/程序结构和执行/数据的表示.md](/计算机系统/程序结构和执行/数据的表示.md) 数据表示与运算方法密切相关，数值的编码方式直接影响运算实现\n- [/计算机系统/程序结构和执行/处理器体系架构.md](/计算机系统/程序结构和执行/处理器体系架构.md) 处理器体系架构包含运算器的具体实现，是运算方法的物理载体\n- [/计算机系统/程序结构和执行/指令系统.md](/计算机系统/程序结构和执行/指令系统.md) 指令系统定义了算术逻辑运算指令，与运算方法和运算器设计直接相关\n- [/计算机系统/计算机系统.md](/计算机系统/计算机系统.md) 计算机系统概述了运算器作为状态变换功能单元的作用，与本文档内容相互补充\n","metadata":"tags: ['数值表示', '数值模型', '处理器架构', '数字逻辑电路', '体系结构']","hasMoreCommit":false,"totalCommits":6,"commitList":[{"date":"2026-02-12T10:42:17+08:00","author":"MY","message":"feat(computer-system): 完善运算方法与运算器文档内容","hash":"e64e3a1838285e897f35883cd8b5caab81ed722b"},{"date":"2025-12-04T17:14:37+08:00","author":"MY","message":"docs(computer-system/program-execution): 更新定点数运算公式表示","hash":"eae8286385abdf3eb31506cddc23073951b5f48c"},{"date":"2020-01-14T15:48:33+08:00","author":"MY","message":"更新存储器层次结构","hash":"4e3abb5751e192d16d8eb8f8b3a4a08ed1adb986"},{"date":"2020-01-13T13:54:46+08:00","author":"MY","message":"增加补码乘法与乘法器","hash":"c6b1971b2622ddbd6d45b8ad5a72a5ed5efe4d43"},{"date":"2020-01-12T10:00:29+08:00","author":"MY","message":"增加移位操作","hash":"d28987e8cbd340f05c70d728b063f1dc65a84a86"},{"date":"2020-01-11T15:38:34+08:00","author":"MY","message":"增加定点数运算及溢出检测","hash":"f29d167349e589ca5dc33c07b2ac733e436ae9f1"}],"createTime":"2020-01-11T15:38:34+08:00"}