更 加 细 化 的 框 图
ä¹æ³&移ä½
ä¹æ³&移ä½
- No tags were found...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
先 行 进 位 <strong>的</strong> 理 论 基 础 ( 续 )<br />
° 使 用 新 定 义 <strong>的</strong> 两 个 术 语 :<br />
• 第 i 位 产 生 <strong>的</strong> 进 位<br />
gi = Ai & Bi<br />
• 通 过 第 i 位 <strong>的</strong> 传 播 进 位 pi = Ai or Bi We can rewrite:<br />
• Cin1 = g0 | (p0 & Cin0)<br />
• Cin2 = g1 | (p1 & g0) | (p1 & p0 & Cin0)<br />
• Cin3 = g2 | (p2 & g1) | (p2 & p1 & g0) | (p2 & p1 & p0 & Cin0)<br />
° 进 入 第 3 位 <strong>的</strong> 进 位 是 1, 如 果<br />
• 在 第 2 位 , 产 生 了 进 位 (g2)<br />
• 或 者 在 第 1 位 产 生 了 进 位 (g1) 并 且<br />
第 2 位 传 播 了 这 个 进 位 (p2 & g1)<br />
• 或 者 在 第 0 位 产 生 了 进 位 (g0) 并 且<br />
第 1 位 和 第 2 位 都 传 播 了 这 个 进 位 (p2 & p1 & g0)<br />
• 或 者 在 第 0 位 有 输 入 进 位 (Cin0) 并 且<br />
第 0 位 、 第 1 位 和 第 2 位 都 传 播 了 这 个 进 位 (p2 & p1 & p0 & Cin0)<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
道 管 : 先 行 进 位 <strong>的</strong> 类 比<br />
g0<br />
p0<br />
c0<br />
c1<br />
g0<br />
p0<br />
c0<br />
g1<br />
p1<br />
g0<br />
p0<br />
c0<br />
c2<br />
g1<br />
p1<br />
g2<br />
p2<br />
g3<br />
p3<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
c4<br />
计 算 机 系 统 结 构 教 研 室
设 计 过 程 <strong>的</strong> 要 素<br />
° 分 治 Divide and Conquer (e.g., ALU)<br />
• 针 对 较 简 单 <strong>的</strong> 部 件 , 阐 明 解 决 方 案 .<br />
• 设 计 每 个 部 件 ( 子 问 题 )<br />
° 产 生 并 测 试 Generate and Test (e.g., ALU)<br />
• 给 出 一 组 构 件 , 如 何 将 它 们 组 装 起 来 , 并 满 足 需 求<br />
° 逐 步 求 精 Successive Refinement (e.g., carry lookahead)<br />
• 解 决 “ 大 多 数 ” 问 题 ( 即 , 忽 视 一 些 约 束 或 特 殊 情 况 ), 检 查<br />
并 修 改 不 足<br />
° 阐 明 可 供 选 择 <strong>的</strong> 高 级 方 案 Formulate High-Level Alternatives (e.g.,<br />
carry select)<br />
• 当 选 择 任 何 一 种 方 案 时 , 都 要 考 虑 多 种 策 略<br />
° 做 已 知 如 何 做 <strong>的</strong> 事 情 Work on the Things you Know How<br />
to Do<br />
• 在 不 断 前 进 中 , 未 知 <strong>的</strong> 事 情 将 越 来 越 明 显 。<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
设 计 过 程 小 结<br />
采 用 层 次 式 设 计 处 理 复 杂 性<br />
自 顶 向 下 vs. 自 底 向 上 vs. 逐 步 求 精<br />
设 计 表 达 <strong>的</strong> 重 要 性 :<br />
• 基 本 模 块 (Block Diagrams)<br />
• 分 解 为 位 片 ( Bit Slices)<br />
• 真 值 表 、 K-Maps<br />
• 电 路 <strong>图</strong><br />
top<br />
down<br />
bottom<br />
up<br />
mux design<br />
meets at TT<br />
• 其 他 描 述 : 状 态 <strong>图</strong> 、 时 序 <strong>图</strong> , 寄 存 器 传 输 , . . .<br />
优 <strong>化</strong> 标 准 :<br />
门 数<br />
[ 封 装 数 ]<br />
面 积<br />
Logic Levels<br />
Fan-in/Fan-out<br />
Delay<br />
Power<br />
管 教 输 出<br />
Cost<br />
Design time<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
上 讲 总 结<br />
° 设 计 过 程 概 述<br />
• 设 计 是 一 个 不 断 反 复 <strong>的</strong> 过 程 -- 逐 步 求 精<br />
• 无 需 等 到 洞 察 一 切 后 才 开 始 设 计<br />
° 二 进 制 算 术 绪 论<br />
• 使 用 补 码 表 示 , 易 于 实 现 减 法<br />
°ALU 设 计<br />
• 设 计 一 个 简 单 <strong>的</strong> 4 位 ALU<br />
• 其 他 构 建 ALU <strong>的</strong> 技 术<br />
°ISA 驱 动 <strong>的</strong> ALU 设 计<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
本 讲 提 纲<br />
° 上 一 讲 复 习<br />
° 根 据 指 令 系 统 和 移 位 , 设 计 ALU<br />
° 乘 法<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
对 ALU 进 行 需 求 分 析<br />
° 从 指 令 系 统 体 系 结 构 开 始 : 必 须 能 够 完 成 ISA<br />
中 <strong>的</strong> 所 有 操 作<br />
° 根 据 出 现 频 率 和 硬 件 预 算 , 对 成 本 和 性 能 进<br />
行 权 衡<br />
° MIPS ISA<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
MIPS <strong>的</strong> 算 术 指 令<br />
指 令 示 例 含 义 注 释<br />
add add $1,$2,$3 $1 = $2 + $3 3 operands; exception possible<br />
subtract sub $1,$2,$3 $1 = $2 -$3 3 operands; exception possible<br />
add immediate addi $1,$2,100 $1 = $2 + 100 + constant; exception possible<br />
add unsigned addu $1,$2,$3 $1 = $2 + $3 3 operands; no exceptions<br />
subtract unsigned subu $1,$2,$3 $1 = $2 -$3 3 operands; no exceptions<br />
add imm. unsign. addiu $1,$2,100 $1 = $2 + 100 + constant; no exceptions<br />
multiply mult $2,$3 Hi, Lo = $2 x $3 64-bit signed product<br />
multiply unsigned multu$2,$3 Hi, Lo = $2 x $3 64-bit unsigned product<br />
divide div $2,$3 Lo = $2 ÷$3, Lo = quotient, Hi = remainder<br />
Hi = $2 mod $3<br />
divide unsigned divu $2,$3 Lo = $2 ÷$3, Unsigned quotient & remainder<br />
Hi = $2 mod $3<br />
Move from Hi mfhi $1 $1 = Hi Used to get copy of Hi<br />
Move from Lo mflo $1 $1 = Lo Used to get copy of Lo<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
乘 法 ( 无 符 号 数 )<br />
° 从 纸 和 笔 做 乘 法 ( 无 符 号 数 ):<br />
被 乘 数 Multiplicand 1000<br />
乘 数 x 1001<br />
Multiplier 1000<br />
0000<br />
0000<br />
1000<br />
乘 积 Product 1001000<br />
° 如 果 忽 略 符 号 位 ,m 位 x n 位 = m+n 位 乘 积<br />
° 二 进 制 , 使 得 乘 法 <strong>更</strong> 易 实 现 :<br />
• 0 => 0 ( 0 x 被 乘 数 )<br />
• 1 => 被 乘 数 ( 1 x 被 乘 数 )<br />
°4 种 乘 法 硬 件 / 算 法<br />
• 循 序 渐 进<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
无 符 号 组 合 乘 法 器<br />
0 0 0 0<br />
A 3 A 2 A 1 A 0<br />
A 3 A 2 A 1 A 0<br />
A 3 A 2 A 1 A 0<br />
A 2 A 1 A 0<br />
P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0<br />
A 3<br />
B 1<br />
° 如 果 B i == 1, 那 么 , 第 i 级 累 计 A * 2 i<br />
° 问 题 : 32 位 乘 法 器 需 要 多 少 硬 件 ? 关 键 路 径 ?<br />
B 0<br />
B 2<br />
B 3<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
上 述 乘 法 器 如 何 工 作 ?<br />
P 7<br />
0<br />
P 6<br />
0<br />
A 3<br />
2<br />
P 5<br />
0<br />
A 3<br />
A 2<br />
1<br />
P 4<br />
0<br />
A 3<br />
A 2<br />
A 1 A<br />
A 0<br />
P 3<br />
0<br />
A 2<br />
A 1<br />
0<br />
P 2<br />
0<br />
A 1<br />
A 0<br />
P 1<br />
0<br />
A 0<br />
P 0<br />
A A<br />
A 3<br />
B 1<br />
B 0<br />
B 2<br />
B 3<br />
° 每 级 都 对 A 进 行 左 移 ( x 2)<br />
° 使 用 B <strong>的</strong> 下 一 位 来 判 断 是 否 <strong>加</strong> 上 左 移 后 <strong>的</strong> 被 乘 数<br />
° 每 级 都 累 计 2n 位 <strong>的</strong> 部 分 积<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
第 一 种 无 符 号 移 位 - <strong>加</strong> 法 乘 法 器<br />
°64 位 被 乘 数 寄 存 器 、64 位 ALU、64 位 乘 积 寄 存 器 、32 位 乘 数 寄 存 器<br />
Multiplicand<br />
64 bits<br />
Shift Left<br />
64-bit ALU<br />
Multiplier<br />
Shift Right<br />
32 bits<br />
Product<br />
64 bits<br />
Write<br />
Control<br />
乘 法 器 = 数 据 通 路 + 控 制<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
第 一 种 乘 法 算 法<br />
Start<br />
Multiplier0 = 1<br />
1. Test<br />
Multiplier0<br />
Multiplier0 = 0<br />
1a. Add multiplicand to product &<br />
place the result in Product register<br />
° 乘 积 乘 数 被 乘 数<br />
° 0000 0000 0011 0000 0010<br />
°0000 0010 0001 0000 0100<br />
°0000 0110 0000 0000 1000<br />
°0000 0110<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
2. Shift the Multiplicand register left 1 bit.<br />
3. Shift the Multiplier register right 1 bit.<br />
32nd<br />
repetition?<br />
No: < 32 repetitions<br />
Yes: 32 repetitions<br />
Done<br />
计 算 机 系 统 结 构 教 研 室
上 述 乘 法 器 如 何 工 作 ?<br />
P 7<br />
0<br />
P 6<br />
0<br />
A 3<br />
2<br />
P 5<br />
0<br />
A 3<br />
A 2<br />
1<br />
P 4<br />
0<br />
A 3<br />
A 2<br />
A 1 A<br />
A 0<br />
P 3<br />
0<br />
A 2<br />
A 1<br />
0<br />
P 2<br />
0<br />
A 1<br />
A 0<br />
P 1<br />
0<br />
A 0<br />
P 0<br />
A A<br />
A 3<br />
B 1<br />
B 0<br />
B 2<br />
B 3<br />
° 每 级 都 对 A 进 行 左 移 ( x 2)<br />
° 使 用 B <strong>的</strong> 下 一 位 来 判 断 是 否 <strong>加</strong> 上 左 移 后 <strong>的</strong> 被 乘 数<br />
° 每 级 都 累 计 2n 位 <strong>的</strong> 部 分 积<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
第 一 种 乘 法 <strong>的</strong> 启 示<br />
° 每 个 周 期 1 个 时 钟 => 每 次 乘 法 大 约 100(323) 个 时 钟<br />
• 乘 法 与 <strong>加</strong> 法 <strong>的</strong> 出 现 频 率 比 5:1 ~ 100:1<br />
° 64 位 被 乘 数 中 1/2 <strong>的</strong> 位 数 总 是 为 0<br />
=> 使 用 64 位 <strong>加</strong> 法 器 , 太 浪 费 !!!<br />
° 在 被 乘 数 左 移 <strong>的</strong> 过 程 中 , 在 左 边 插 入 0<br />
=> 一 旦 产 生 了 乘 积 <strong>的</strong> 最 小 位 , 它 就 永 远 不 变 !!!<br />
° 用 乘 积 右 移 替 代 被 乘 数 左 移 ?<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
如 何 进 一 步 改 进 ?<br />
0 0 0 0<br />
A 3<br />
A 0<br />
A 2<br />
A 1<br />
A 0<br />
B 0<br />
A 3<br />
A 0<br />
A 2<br />
A 1<br />
B 1<br />
B 2<br />
A 3<br />
A 0<br />
A 2<br />
A 1<br />
A 3<br />
A 2<br />
A 1<br />
B 3<br />
P 7<br />
P 6<br />
P 5<br />
P 4<br />
P 3<br />
P 2<br />
P 1<br />
P 0<br />
° 被 乘 数 固 定 不 动 , 乘 积 右 移<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
第 二 种 乘 法 硬 件<br />
°32 位 被 乘 数 寄 存 器 、32 位 ALU、64 位 乘 积 寄 存 器 、32 位 乘 数 寄 存 器<br />
Multiplicand<br />
32 bits<br />
32-bit ALU<br />
Product<br />
64 bits<br />
Shift Right<br />
Write<br />
Multiplier<br />
Shift Shift Right Right<br />
32 bits<br />
Control<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
第 二 种 乘 法 算 法<br />
Start<br />
Multiplier0 = 1<br />
1. Test<br />
Multiplier0<br />
Multiplier0 = 0<br />
1a. Add multiplicand to the left half of product &<br />
place the result in the left half of Product register<br />
Product Multiplier Multiplicand<br />
0000 0000 0011 0010<br />
1: 0010 0000 0011 0010<br />
2: 0001 0000 0011 0010<br />
3: 0001 0000 0001 0010<br />
1: 0011 0000 0001 0010<br />
2: 0001 1000 0001 0010<br />
3: 0001 1000 0000 0010<br />
1: 0001 1000 0000 0010<br />
2: 0000 1100 0000 0010<br />
3: 0000 1100 0000 0010<br />
1: 0000 1100 0000 0010<br />
2: 0000 0110 0000 0010<br />
3: 0000 0110 0000 0010<br />
0000 0110 0000 0010<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
2. Shift the Product register right 1 bit.<br />
3. Shift the Multiplier register right 1 bit.<br />
32nd<br />
repetition?<br />
No: < 32 repetitions<br />
Yes: 32 repetitions<br />
Done<br />
计 算 机 系 统 结 构 教 研 室
第 二 种 乘 法 算 法<br />
仍 然 浪 费 很 多 资 源 !<br />
Multiplier0 = 1<br />
Start<br />
1. Test<br />
Multiplier0<br />
Multiplier0 = 0<br />
1a. Add multiplicand to the left half of product &<br />
place the result in the left half of Product register<br />
Product Multiplier Multiplicand<br />
0000 0000 0011 0010<br />
1: 0010 0000 0011 0010<br />
2: 0001 0000 0011 0010<br />
3: 0001 0000 0001 0010<br />
1: 0011 0000 0001 0010<br />
2: 0001 1000 0001 0010<br />
3: 0001 1000 0000 0010<br />
1: 0001 1000 0000 0010<br />
2: 0000 1100 0000 0010<br />
3: 0000 1100 0000 0010<br />
1: 0000 1100 0000 0010<br />
2: 0000 0110 0000 0010<br />
3: 0000 0110 0000 0010<br />
0000 0110 0000 0010<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
2. Shift the Product register right 1 bit.<br />
3. Shift the Multiplier register right 1 bit.<br />
32nd<br />
repetition?<br />
No: < 32 repetitions<br />
Yes: 32 repetitions<br />
Done<br />
计 算 机 系 统 结 构 教 研 室
第 二 种 乘 法 <strong>的</strong> 启 示<br />
° 乘 积 寄 存 器 浪 费 <strong>的</strong> 空 间 正 好 与 乘 数 中 无 用 <strong>的</strong> 空 间 相<br />
同<br />
=> 联 合 使 用 乘 数 寄 存 器 和 乘 积 寄 存 器<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
第 三 种 乘 法 硬 件<br />
°32 位 被 乘 数 寄 存 器 、32 位 ALU、64 位 乘 积 寄 存 器 ( 没 有 乘 数 寄 存 器 )<br />
Multiplicand<br />
32 bits<br />
32-bit ALU<br />
Product (Multiplier)<br />
64 bits<br />
Shift Right<br />
Write<br />
Control<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
第 三 种 乘 法 算 法<br />
Start<br />
Multiplicand Product<br />
0010 0000 0011<br />
Product0 = 1<br />
1. Test<br />
Product0<br />
Product0 = 0<br />
1a. Add multiplicand to the left half of product &<br />
place the result in the left half of Product register<br />
°Product<br />
0000 0011<br />
Multiplicand<br />
0010<br />
°0001 0001 0010<br />
2. Shift the Product register right 1 bit.<br />
°0001 1000 0010<br />
°0000 1100 0010<br />
°0000 0110 0010<br />
32nd<br />
repetition?<br />
No: < 32 repetitions<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
Yes: 32 repetitions<br />
Done<br />
计 算 机 系 统 结 构 教 研 室
第 三 种 乘 法 <strong>的</strong> 启 示<br />
° 由 于 乘 数 和 乘 积 结 合 在 一 起 , 每 位 需 要 2 步<br />
°MIPS 中 寄 存 器 Hi 和 Lo 是 乘 积 <strong>的</strong> 左 半 部 和 右 半 部<br />
° 提 供 了 MIPS 指 令 MultU<br />
° 如 何 进 一 步 改 进 该 算 法 <strong>的</strong> 速 度 ?<br />
° 有 符 号 数 乘 法 如 何 ?<br />
• 简 单 地 策 略 是 假 设 两 个 源 操 作 数 都 位 正 数 , 在 运 算 结 束 时 在 对<br />
乘 积 进 行 修 正 ( 不 算 符 号 位 , 运 算 31 步 )<br />
• 使 用 补 码<br />
- 需 要 对 部 分 乘 积 进 行 符 号 扩 展 , 在 最 后 再 进 行 减 法<br />
• Booth 算 法 是 一 种 利 用 上 述 硬 件 进 行 有 符 号 数 乘 法 <strong>的</strong> 优 秀 算 法<br />
- 可 同 时 处 理 多 位<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
Booth 算 法 <strong>的</strong> 动 机<br />
° 示 例 : 2 x 6 = 0010 x 0110:<br />
0010<br />
x 0110<br />
0000 移 位 ( 乘 数 运 算 位 为 0)<br />
+ 0010 <strong>加</strong> 法 ( 乘 数 运 算 位 为 1)<br />
+ 0100 <strong>加</strong> 法 ( 乘 数 运 算 位 为 1)<br />
+ 0000 移 位 ( 乘 数 运 算 位 为 0)<br />
00001100<br />
° 具 有 <strong>加</strong> 法 或 减 法 <strong>的</strong> ALU 可 以 采 用 多 种 方 式 计 算 相 同 <strong>的</strong> 结 果 :<br />
6= -2 + 8 或 者 0110 = -0010+ 1000<br />
° 乘 数 中 <strong>的</strong> 1 串 可 以 用 看 到 第 一 个 1 时 , 进 行 一 次 减 法 , 在 处 理 完 最 后 一 个 1 后 , 再 <strong>加</strong> !<br />
0010<br />
x 0110<br />
0000 移 位 ( 乘 数 运 算 位 为 0)<br />
- 0010 sub ( 乘 数 中 <strong>的</strong> 第 一 个 1)<br />
+ 0000 shift (1 串 <strong>的</strong> 中 部 )<br />
+ 0010 add ( 最 后 1 <strong>的</strong> 前 步 )<br />
00001100<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
Booth 算 法 探 奥<br />
运 行 尾 部<br />
(end of run)<br />
将 乘 数 中 间 <strong>的</strong> 1 串 用<br />
运 行 中 部 (middle of run)<br />
0 1 1 1 1 0<br />
当 前 位 右 边 位 解 释 示 例<br />
1 0 1 串 运 行 <strong>的</strong> 首 部 0001111000<br />
1 1 1 串 运 行 <strong>的</strong> 中 部 0001111000<br />
0 1 1 串 运 行 <strong>的</strong> 尾 部 0001111000<br />
0 0 0 串 运 行 <strong>的</strong> 中 部 0001111000<br />
早 期 , 由 于 移 位 比 <strong>加</strong> 法 速 度 <strong>更</strong> 快 , 采 用 该 算 法 主 要 为 了 速 度<br />
运 行 首 部<br />
(beginning of run)<br />
在 第 一 次 看 见 1 时 <strong>的</strong> 一 次 初 始 减 法 和 在 最 后 一 个 1 后 <strong>的</strong> 一 次 <strong>加</strong> 法 代 替 。<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
Booth 算 法<br />
1. 依 赖 于 当 前 和 以 前 <strong>的</strong> 位 , 进 行 下 述 步 骤 之 一 :<br />
00: a. 0 串 <strong>的</strong> 中 部 , 不 进 行 任 何 运 算 操 作 .<br />
01: b. 1 串 <strong>的</strong> 结 束 , 将 被 乘 数 <strong>加</strong> 到 乘 积 <strong>的</strong> 左 半 部 .<br />
10: c. 1 串 <strong>的</strong> 首 部 , 从 乘 积 <strong>的</strong> 左 半 部 减 去 被 乘 数 .<br />
11: d. 1 串 <strong>的</strong> 中 部 , 不 进 行 任 何 运 算 操 作 .<br />
2. 象 第 三 种 乘 法 算 法 一 样 , 将 乘 积 算 术 右 移 1 位 .<br />
被 乘 数 乘 积 (2 x 3)<br />
0010 0000 0011 0<br />
被 乘 数 乘 积 (2 x -3)<br />
0010 0000 1101 0<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
Booth 算 法 探 奥<br />
a i a i-1 Operation<br />
0 0 Do Nothing<br />
0 1 Add b<br />
1 0 Subtract b<br />
1 1 Do Nothing<br />
对 于 a i-1 - a i:<br />
0: do nothing<br />
+1: add b<br />
- 1: subtract b<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
( a<br />
<br />
<br />
Booth 算 法 探 奥<br />
1<br />
( a<br />
( a<br />
...<br />
0<br />
1<br />
<br />
a<br />
<br />
<br />
0<br />
a<br />
a<br />
) b<br />
<br />
1<br />
2<br />
2<br />
0<br />
) b<br />
2<br />
) b<br />
2<br />
1<br />
2<br />
<br />
( a<br />
30<br />
<br />
a<br />
31<br />
) b<br />
<br />
2<br />
31<br />
<br />
a<br />
i<br />
i1<br />
i<br />
i<br />
i<br />
i<br />
2<br />
ai<br />
2<br />
( ai<br />
2ai<br />
) 2<br />
( 2ai<br />
ai<br />
) 2<br />
ai<br />
2<br />
a 1<br />
0<br />
<br />
b(( a<br />
31<br />
2<br />
31<br />
) <br />
( a<br />
30<br />
<br />
2<br />
30<br />
) <br />
... <br />
( a<br />
1<br />
<br />
2<br />
1<br />
) <br />
( a<br />
0<br />
<br />
2<br />
0<br />
)<br />
<br />
ba<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
Booths 示 例 (2 x 7)<br />
Operation Multiplicand Product next?<br />
0. initial value 0010 0000 0111 0 10 sub<br />
1a. P = P - m 1110 +1110 1110 0111 0 shift P (sign ext)<br />
1b. 0010 1111 0011 1 11 nop, shift<br />
2. 0010 1111 1001 1 11 nop, shift<br />
3. 0010 1111 1100 1 01 add<br />
4a. 0010 +0010 0001 1100 1 shift<br />
4b. 0010 0000 1110 0 done<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
Booths 示 例 (2 x -3)<br />
Operation Multiplicand Product next?<br />
0. initial value 0010 0000 1101 0 10 sub<br />
1a. P = P - m 1110 +1110 1110 1101 0 shift P (sign ext)<br />
1b. 0010 1111 0110 1 01 add<br />
+ 0010<br />
2a. 0001 0110 1 shift P<br />
2b. 0010 0000 1011 0 10 sub<br />
+1110<br />
3a. 0010 1110 1011 0 shift<br />
3b. 0010 1111 0101 1 11 nop<br />
4a 1111 0101 1 shift<br />
4b. 0010 1111 1010 1 done<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
MIPS <strong>的</strong> 逻 辑 指 令<br />
指 令 示 例 含 义 注 释<br />
and and $1,$2,$3 $1 = $2 & $3 3 reg. operands; Logical AND<br />
or or $1,$2,$3 $1 = $2 | $3 3 reg. operands; Logical OR<br />
xor xor $1,$2,$3 $1 = $2 $3 3 reg. operands; Logical XOR<br />
nor nor $1,$2,$3 $1 = ~($2 |$3) 3 reg. operands; Logical NOR<br />
and immediate andi $1,$2,10 $1 = $2 & 10 Logical AND reg, constant<br />
or immediate ori $1,$2,10 $1 = $2 | 10 Logical OR reg, constant<br />
xor immediate xori $1, $2,10 $1 = ~$2 &~10 Logical XOR reg, constant<br />
shift left logical sll $1,$2,10 $1 = $2 > 10 Shift right by constant<br />
shift right arithm. sra $1,$2,10 $1 = $2 >> 10 Shift right (sign extend)<br />
shift left logical sllv $1,$2,$3 $1 = $2 > $3 Shift right by variable<br />
shift right arithm. srav $1,$2, $3 $1 = $2 >> $3 Shift right arith. by variable<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
比 较 并 转 移<br />
° 比 较 并 转 移<br />
• BEQ rs, rt, offset if R[rs] == R[rt] then PC-relative branch<br />
• BNE rs, rt, offset <br />
° 与 零 比 较 并 转 移<br />
• BLEZ rs, offset if R[rs] <br />
• BLT <<br />
• BGEZ >=<br />
• BLTZAL rs, offset If R[rs] < 0 then branch and link (into R 31)<br />
• BGEZAL >=<br />
° 几 乎 所 有 <strong>的</strong> 比 较 都 是 与 进 行 比 较 !<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
MIPS 对 ALU <strong>的</strong> 需 求<br />
° Add, AddU, Sub, SubU, AddI, AddIU<br />
=> 带 溢 出 检 测 和 反 向 器 <strong>的</strong> 补 码 <strong>加</strong> 法 器<br />
° SLTI, SLTIU (set less than)<br />
=> 带 反 向 器 <strong>的</strong> 补 码 <strong>加</strong> 法 器 , 检 测 结 果 <strong>的</strong> 符 号<br />
° BEQ, BNE (branch on equal or not equal)<br />
=> 带 反 向 器 <strong>的</strong> 补 码 <strong>加</strong> 法 器 , 检 测 结 果 是 否 为 零<br />
° And, Or, AndI, OrI<br />
=> 逻 辑 或 、 逻 辑 与<br />
° 上 一 讲 介 绍 <strong>的</strong> ALU 支 持 这 些 操 作<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
MIPS 对 ALU <strong>的</strong> 其 他 需 求<br />
°Xor, Nor, XorI<br />
=> 逻 辑 异 或 、 逻 辑 或 非 或 者 两 步 策 略 :<br />
° (A OR B) XOR 1111....1111<br />
°Sll, Srl, Sra<br />
=> 需 要 进 行 0~31 位 <strong>的</strong> 左 移 、 右 移 、 算 术 右 移 运 算<br />
°Mult, MultU, Div, DivU<br />
=> 需 要 有 符 号 、 无 符 号 <strong>的</strong> 32 位 乘 法 和 除 法<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
对 ALU 增 <strong>加</strong> 异 或 功 能<br />
° 扩 展 多 路 选 择 器<br />
CarryIn<br />
A<br />
B<br />
1-bit<br />
全 <strong>加</strong> 器<br />
多 路 选 择 器<br />
结 果<br />
CarryOut<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
三 种 移 位 器<br />
逻 辑 (logical) 移 入 <strong>的</strong> 数 值 总 是 "0"<br />
"0" msb lsb "0"<br />
算 术 (arithmetic) 在 右 移 时 , 进 行 符 号 扩 展<br />
msb lsb "0"<br />
循 环 (rotating) 移 出 <strong>的</strong> 位 又 从 另 一 端 移 入 ( 在 MIPS 中 不 支 持 )<br />
msb<br />
left<br />
lsb<br />
right<br />
msb<br />
lsb<br />
注 : 需 要 一 位 移 动 。 特 定 指 令 可 能 要 求 进 行 032 位 移 动 !<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
使 用 多 路 选 择 器 <strong>的</strong> 组 合 移 位 器<br />
基 本 单 元<br />
A B<br />
sel 1 0<br />
8 位 右 移 器<br />
D<br />
A 6<br />
A 5<br />
A 4<br />
A 3<br />
A 2<br />
A 1<br />
A 0<br />
S 2 S 1 S 0<br />
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0<br />
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0<br />
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0<br />
R 7<br />
A 7<br />
R 0<br />
R 6<br />
R 5<br />
R 4<br />
R 3<br />
R 2<br />
R 1<br />
°MSBs <strong>的</strong> 输 入 如 何 ?<br />
°32 位 移 位 器 需 要 多 少 级 ?<br />
° 如 果 使 用 4-1 多 路 选 择 器 , 结 果 如 何 ?<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
SHR:<br />
Q3<br />
0<br />
Q2<br />
Q3<br />
Q1<br />
Q2<br />
Q0<br />
Q1<br />
多 路 选 择 器 / 移 位 器<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
SHR/<br />
don't<br />
shift<br />
D3<br />
D2<br />
D1<br />
D0<br />
( 5 inputs)<br />
Q3<br />
0<br />
0<br />
0<br />
Q2<br />
Q3<br />
0<br />
0<br />
Q1<br />
Q2<br />
Q3<br />
0<br />
Q0<br />
Q1<br />
Q2<br />
Q3<br />
0<br />
1<br />
2<br />
3<br />
0<br />
1<br />
2<br />
3<br />
0<br />
1<br />
2<br />
3<br />
0<br />
1<br />
2<br />
3<br />
SHR 0, 1, 2, 3 bits:<br />
D3<br />
D2<br />
D1<br />
D0<br />
Q3<br />
0<br />
Q2<br />
Q3<br />
Q1<br />
Q2<br />
Q0<br />
Q1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
0<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
x 1 x 2<br />
8 x 2:1 Mux<br />
2 stages<br />
D3<br />
D2<br />
D1<br />
D0<br />
算 术 右 移 如 何 做 ?<br />
shift amount<br />
(0,1,2,3)<br />
4 x 4:1 Mux<br />
1 stage<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
通 用 右 移 策 略 (16 位 )<br />
S 0<br />
(0,1)<br />
S 1<br />
(0, 2)<br />
S 2<br />
(0, 4)<br />
S 3<br />
(0, 8)<br />
如 果 增 <strong>加</strong> 自 右 至 左 <strong>的</strong> 连 接 , 就 可 以 支 持 循 环 移 位<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
32 位 移 位 器<br />
使 用 上 述 配 置 对 32 位 数 据 进 行 0~31 位 移 位 将 导 致 :<br />
如 果 使 用 2:1 多 路 选 择 器 , 那 么 需 要 5 级 多 路 选 择 器 (x1, x2, x4,<br />
x8, x16)<br />
32 位 x 5 级 = 160 个 2:1 多 路 选 择 器 !<br />
如 果 使 用 2 级 4:1 多 路 选 择 器 和 1 级 2:1 多 路 选 择 器 , 那 么 需 要 3 级 多<br />
路 选 择 器<br />
32 x 4:1 + 32 x 4:1 + 32 x 2:1<br />
如 果 使 用 1 级 8:1 多 路 选 择 器 和 1 级 4:1 多 路 选 择 器 , 那 么 需 要 2 级 多<br />
路 选 择 器<br />
32 x 8:1 + 32 x 4:1<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
多 位 移 位<br />
复 合 策 略 , 每 次 循 环 完 成 多 位 <strong>的</strong> 多 重 控 制 循 环<br />
31 位 移 位 :<br />
使 用 0、1 位 移 位 器<br />
使 用 0、1、2、3 位 移 位 器<br />
使 用 0、1、2、3、4、5、6、7 位 移 位 器<br />
使 用 015 位 移 位 器<br />
31 次 迭 代<br />
11 次 迭 代<br />
5 次 迭 代<br />
3 次 迭 代<br />
实 际 上 , 大 多 数 移 位 都 比 较 短 ( 通 常 , 实 现 0-3)<br />
非 常 复 杂 : 目 前 , 只 能 进 行 右 移<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
漏 斗 移 位 器 (Funnel Shifter)<br />
代 替 从 64 位 中 抽 取 32 位 .<br />
Y<br />
X<br />
右 移<br />
°A 右 移 i 位 ( sa = shift right amount )<br />
° 逻 辑 : Y = 0, X=A, sa=i<br />
° 算 术 : Y = sign(A), X=A<br />
° 循 环 : Y=A, X=A<br />
° 左 移 : Y=A, X=0, sa= 32 - i<br />
R<br />
32 32<br />
右 移<br />
32<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
桶 式 移 位 器 (Barrel Shifter)<br />
依 赖 于 技 术 工 艺 <strong>的</strong> 解 决 方 案 : 每 个 开 关 一 个 晶 体 管<br />
SR3<br />
SR2<br />
SR1<br />
SR0<br />
D3<br />
A6<br />
D2<br />
A5<br />
D1<br />
A4<br />
D0<br />
A3 A2 A1 A0<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室
总 结<br />
° 指 令 系 统 驱 动 ALU 设 计<br />
° 移 位 器 : 从 每 次 1 位 到 桶 式 移 位 器 逐 步 完 善<br />
° 乘 法 : 逐 步 完 善<br />
• 32 位 <strong>加</strong> 法 器 、64 位 移 位 寄 存 器 、32 被 乘 数 寄 存 器<br />
• 可 处 理 有 符 号 数 <strong>的</strong> Booth 算 法<br />
° 可 以 设 计 出 每 次 运 算 多 位 <strong>的</strong> 乘 法 算 法<br />
° 移 位 器 : 每 次 1 位 <strong>的</strong> 寄 存 器 、 桶 式 移 位 器<br />
北 京 大 学 计 算 机 科 学 技 术 系<br />
计 算 机 系 统 结 构 教 研 室