计 算 机 组 织 与 系 统 结 构
æå°ç - å京大å¦å¾®å¤çå¨ç 究å¼åä¸å¿
æå°ç - å京大å¦å¾®å¤çå¨ç 究å¼åä¸å¿
- 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> <strong>算</strong> <strong>机</strong> <strong>组</strong> <strong>织</strong> <strong>与</strong> <strong>系</strong> <strong>统</strong> <strong>结</strong> <strong>构</strong><br />
设 <strong>计</strong> 单 周 期 数 据 通 路<br />
Designing a Single Cycle Datapath<br />
( 第 十 讲 )<br />
程 旭<br />
2008.5.5<br />
本 讲 提 纲<br />
° 介 绍<br />
° 设 <strong>计</strong> 处 理 器 的 步 骤<br />
° 数 据 通 路 、 寄 存 器 - 寄 存 器 操 作 的 定 时<br />
° 立 即 数 逻 辑 操 作 的 数 据 通 路<br />
° 装 入 和 存 储 操 作 的 数 据 通 路<br />
° 转 移 和 跳 转 操 作 的 数 据 通 路<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
编 译 器<br />
<strong>计</strong> <strong>算</strong> <strong>机</strong> <strong>组</strong> <strong>织</strong> <strong>与</strong> <strong>系</strong> <strong>统</strong> <strong>结</strong> <strong>构</strong> 课 程 内 容<br />
控 制<br />
接 口<br />
<strong>计</strong> <strong>算</strong> <strong>机</strong><br />
存 储 器<br />
输 入<br />
° 课 程 概 述 和 <strong>计</strong> <strong>算</strong> 技 术 发 展 简 史 ( 第 一 部 分 )<br />
° <strong>计</strong> <strong>算</strong> <strong>机</strong> 性 能 ( 第 二 部 分 )<br />
° 指 令 <strong>系</strong> <strong>统</strong> 体 <strong>系</strong> <strong>结</strong> <strong>构</strong> 和 MIPS ( 第 三 部 分 )<br />
性<br />
能<br />
评<br />
价<br />
处 理 器<br />
数 据 通 路<br />
输 出<br />
° 如 何 实 现 <strong>算</strong> 术 运 <strong>算</strong> 、 如 何 设 <strong>计</strong> ALU ( 第 四 部 分 )<br />
° 建 造 能 够 执 行 指 令 的 处 理 器 ( 第 五 部 分 )<br />
° 利 用 流 水 技 术 改 进 性 能 ( 第 六 部 分 )<br />
° 存 储 <strong>系</strong> <strong>统</strong> : caches 和 虚 拟 存 储 器 ( 第 七 部 分 )<br />
°I/O <strong>系</strong> <strong>统</strong> ( 第 八 部 分 )<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
教 学 目 标 : 已 经 掌 握 的 内 容<br />
处 理 器 性 能<br />
CPI<br />
° <strong>计</strong> <strong>算</strong> <strong>机</strong> 的 五 个 基 本 部 件<br />
处 理 器<br />
控 制<br />
数 据 通 路<br />
存 储 器<br />
输 入<br />
输 出<br />
° <strong>计</strong> <strong>算</strong> <strong>机</strong> 的 性 能 决 定 于 :<br />
• 指 令 总 数<br />
• 时 钟 周 期 时 间<br />
指 令 总 数<br />
• 每 条 指 令 的 时 钟 周 期 数 目<br />
° 处 理 器 设 <strong>计</strong> ( 数 据 通 路 和 控 制 ) 将 决 定 :<br />
• 时 钟 周 期 时 间<br />
• 每 条 指 令 的 时 钟 周 期 数 目<br />
周 期 时 间<br />
° 单 周 期 处 理 器 :<br />
• 优 点 : 每 条 指 令 一 个 时 钟 周 期<br />
° 本 讲 主 题 : 数 据 通 路 设 <strong>计</strong><br />
• 缺 点 : 时 钟 周 期 时 间 太 长<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
如 何 设 <strong>计</strong> 处 理 器 : 循 序 渐 进<br />
1. 分 析 指 令 <strong>系</strong> <strong>统</strong> => 数 据 通 路 需 求<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
通 过 寄 存 器 传 输 描 述 每 条 指 令 的 意 图<br />
针 对 ISA 寄 存 器 , 数 据 通 路 必 须 具 备 必 要 的 存 储 元 件<br />
可 能 需 要 多 个<br />
数 据 通 路 必 须 支 持 每 种 寄 存 器 传 输<br />
2. 选 择 一 <strong>组</strong> 数 据 通 路 部 件 , 建 立 时 钟 同 步 方 法<br />
3. 根 据 需 求 , <strong>组</strong> 装 数 据 通 路<br />
4. 分 析 每 条 指 令 的 实 现 , 以 确 定 如 何 设 置 影 响 寄 存 器 传 输<br />
的 控 制 点<br />
5. 装 配 控 制 逻 辑<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
MIPS 指 令 格 式<br />
° 所 有 的 MIPS 指 令 都 是 32 位 长 。 具 有 如 下 三 种 格 式 :<br />
31 26 21 16 11 6<br />
0<br />
• R 型<br />
op rs rt rd shamt funct<br />
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits<br />
31 26 21 16<br />
• I 型<br />
op rs rt immediate<br />
0<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
• J 型<br />
31 26<br />
0<br />
op<br />
target address<br />
6 bits 26 bits<br />
° 不 同 的 场 位 为 :<br />
• op: 指 令 的 操 作<br />
• rs, rt, rd: 源 和 目 的 寄 存 器 描 述 符<br />
• shamt: 移 位 量<br />
• funct: 选 择 Op 场 位 指 定 的 不 同 操 作<br />
• address / immediate: 地 址 偏 移 量 或 者 立 即 数 数 值<br />
• target address: 跳 转 指 令 的 目 标 地 址<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
本 讲 涉 及 的 MIPS 指 令 <strong>系</strong> <strong>统</strong> 子 集<br />
° 加 法 和 减 法<br />
• add rd, rs, rt<br />
• sub rd, rs, rt<br />
° 或 立 即 数 :<br />
• ori rt, rs, imm16<br />
° 装 入 和 存 储<br />
• lw rt, rs, imm16<br />
• sw rt, rs, imm16<br />
31<br />
31<br />
° 转 移 :<br />
• beq rs, rt, imm16<br />
31<br />
° 跳 转 :<br />
• j target<br />
26<br />
21<br />
16<br />
op rs rt rd shamt funct<br />
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
26<br />
op<br />
target address<br />
6 bits 26 bits<br />
11<br />
6<br />
0<br />
0<br />
0<br />
逻 辑 寄 存 器 传 输<br />
° 寄 存 器 传 输 语 言 (RTL) 描 述 每 条 指 令 的 意 图<br />
° 所 有 的 指 令 都 以 取 指 开 始<br />
inst<br />
op | rs | rt | rd | shamt | funct = MEM[ PC ]<br />
op | rs | rt | Imm16 = MEM[ PC ]<br />
Register Transfers<br />
ADDU R[rd] ⇐ R[rs] + R[rt]; PC ⇐ PC + 4<br />
SUBU R[rd] ⇐ R[rs] - R[rt]; PC ⇐ PC + 4<br />
ORi R[rt] ⇐ R[rs] ∪ zero_ext(Imm16); PC ⇐ PC + 4<br />
LOAD R[rt] ⇐ MEM[ R[rs] + sign_ext(Imm16)]; PC ⇐ PC + 4<br />
STORE MEM[ R[rs] + sign_ext(Imm16) ] ⇐ R[rt]; PC ⇐ PC + 4<br />
BEQ if ( R[rs] == R[rt] ) then PC ⇐ PC + sign_ext(Imm16)] || 00<br />
else PC ⇐ PC + 4<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
第 一 步 : 指 令 <strong>系</strong> <strong>统</strong> 需 求 分 析<br />
° 存 储 器<br />
• 指 令 和 数 据<br />
第 二 步 : 数 据 通 路 的 部 件<br />
° <strong>组</strong> 合 元 件<br />
° 通 用 寄 存 器 (32 x 32)<br />
• 读 RS<br />
• 读 RT<br />
• 写 RT 或 RD<br />
° 程 序 <strong>计</strong> 数 器 (PC)<br />
° 扩 展 器 (Extender)<br />
°Add 和 Sub 寄 存 器 或 扩 展 后 的 立 即 数<br />
°PC 加 上 4 或 扩 展 后 的 立 即 数<br />
A<br />
B<br />
32<br />
32<br />
Adder<br />
CarryIn<br />
° 存 储 元 件<br />
32<br />
• 时 钟 同 步 方 法<br />
Write Enable<br />
Data In<br />
N<br />
Clk<br />
Data Out<br />
N<br />
Sum<br />
Carry<br />
Selec<br />
A<br />
t<br />
32<br />
32<br />
Y<br />
B 32<br />
MUX<br />
RW RA RB<br />
Write Enable 5 5 5<br />
busW<br />
32<br />
Clk<br />
32 32-bit<br />
Registers<br />
busA<br />
32<br />
busB<br />
32<br />
A<br />
B<br />
32<br />
32<br />
ALU<br />
OP<br />
Result<br />
32<br />
Zero<br />
Write Enable<br />
Data In<br />
Address<br />
DataOut<br />
32 32<br />
Clk<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
<strong>组</strong> 合 逻 辑 部 件<br />
° 加 法 器<br />
° 多 路 选 择 器<br />
°ALU<br />
A<br />
32<br />
B<br />
32<br />
Select<br />
A<br />
32<br />
B<br />
32<br />
A<br />
32<br />
B<br />
32<br />
MUX<br />
CarryIn<br />
Adder<br />
32<br />
32<br />
OP<br />
32<br />
ALU<br />
Sum<br />
Carry<br />
Y<br />
Result<br />
Zero<br />
存 储 部 件 : 寄 存 器<br />
° 寄 存 器<br />
• 类 似 于 D 触 发 器 , 只 是<br />
- N 位 输 入 和 输 出<br />
- 写 操 作 使 能 输 入 (Write Enable<br />
input)<br />
• 写 使 能 (Write Enable:)<br />
- 0: 数 据 输 出 将 不 改 变<br />
Write Enable<br />
Data In<br />
- 1: 数 据 输 出 将 变 成 数 据 输 入 的 值<br />
N<br />
Clk<br />
Data Out<br />
N<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
存 储 部 件 : 寄 存 器 堆<br />
° 寄 存 器 堆 包 含 32 个 寄 存 器 :<br />
RW RA RB<br />
Write Enable<br />
5 5 5<br />
• 两 条 32 位 输 出 总 线 :<br />
busA<br />
busA 和 busB<br />
busW<br />
32 32-bit<br />
32<br />
• 一 条 32 位 输 入 总 线 : busW<br />
32 Registers<br />
Clk<br />
busB<br />
° 选 择 寄 存 器 :<br />
32<br />
• RA 选 择 将 数 据 放 到 busA 上 的 寄 存 器<br />
• RB 选 择 将 数 据 放 到 busB 上 的 寄 存 器<br />
• RW 选 择 在 写 使 能 为 1 时 , 由 busW 将 写 的 寄 存 器<br />
° 时 钟 输 入 (CLK)<br />
• 只 有 在 写 操 作 中 ,CLK 输 入 才 有 作 用<br />
• 在 读 操 作 中 , 寄 存 器 的 行 为 <strong>与</strong> <strong>组</strong> 合 逻 辑 电 路 一 样 :<br />
- RA 或 RB 有 效 => 在 访 问 时 间 之 后 ,busA 或 busB 有 效 。<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
存 储 部 件 : 理 想 化 的 存 储 器<br />
° 理 想 化 的 存 储 器<br />
• 单 输 入 总 线 : 数 据 输 入 (Data In)<br />
• 单 输 出 总 线 : 数 据 输 出 (Data Out)<br />
° 选 择 存 储 字 :<br />
Data In<br />
Write Enable Address<br />
DataOut<br />
32 32<br />
Clk<br />
• 地 址 (Address) 选 择 的 存 储 字 被 放 在 Data Out 上<br />
• Write Enable = 1: Data In 总 线 上 的 数 据 被 写 入 地 址 选 择 的<br />
存 储 单 元 中<br />
° 时 钟 输 入 (CLK)<br />
• 只 有 在 写 操 作 中 ,CLK 输 入 才 有 作 用<br />
• 在 读 操 作 中 , 寄 存 器 的 行 为 <strong>与</strong> <strong>组</strong> 合 逻 辑 电 路 一 样 :<br />
- RA 或 RB 有 效 => 在 访 问 时 间 之 后 ,busA 或 busB 有 效 。<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
实 现 抽 象<br />
时 钟 同 步 方 法<br />
Clk<br />
Clk<br />
PC<br />
Setup<br />
Hold<br />
Don’t Care<br />
Setup<br />
Hold<br />
指 令 地 址<br />
理 想<br />
指 令 存 储 器<br />
Rd<br />
5<br />
指 令<br />
Rs<br />
5<br />
Rt<br />
5<br />
Imm<br />
16<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
.<br />
32<br />
Clk<br />
Rw Ra Rb<br />
32 个 32 位<br />
寄 存 器<br />
32<br />
32<br />
ALU<br />
32<br />
数 据 地 址<br />
数 据 输 入<br />
Clk<br />
理 想<br />
数 据 存 储 器<br />
数 据 输 出<br />
° 所 有 的 存 储 元 件 都 受 相 同 的 时 钟 边 沿 来 驱 动<br />
° 周 期 时 间 >= CLK-to-Q 时 间 + 最 长 延 迟 路 径 时 间 + 建 立 时 间 + 时 钟 纽 斜<br />
°(CLK-to-Q 时 间 + 最 短 延 迟 路 径 时 间 - 时 钟 纽 斜 ) > 保 持 时 间<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
寄 存 器 传 输 语 言 : 加 法 指 令<br />
寄 存 器 传 输 语 言 : 装 入 指 令<br />
°add<br />
rd, rs, rt<br />
°lw<br />
rt, rs, imm16<br />
• mem[PC]<br />
从 存 储 器 中 取 出 指 令<br />
• mem[PC]<br />
从 存 储 器 中 取 出 指 令<br />
• R[rd] ⇐ R[rs] + R[rt]<br />
• PC ⇐ PC + 4<br />
加 法 操 作<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 地 址<br />
• Addr ⇐ R[rs] + SignExt(imm16) <strong>计</strong> <strong>算</strong> 存 储 器 地 址<br />
• R[rt] ⇐ Mem[Addr]<br />
将 数 据 装 入 寄 存 器<br />
• PC ⇐ PC + 4<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 的 地 址<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
第 三 步 根 据 需 求 <strong>组</strong> 装 数 据 通 路<br />
° 寄 存 器 传 输 需 求 分 析 和 装 配 数 据 通 路<br />
° 取 指<br />
° 读 取 操 作 数 和 执 行 操 作<br />
取 指 部 件 ( Instruction Fetch Unit) 概 况<br />
° 基 本 寄 存 器 传 输 语 言 操 作<br />
• 取 指 : mem[PC]<br />
• 修 改 程 序 <strong>计</strong> 数 器 :<br />
- 串 行 执 行 代 码 : PC⇐ PC + 4<br />
- 转 移 或 跳 转 : PC ⇐ 其 他 数 值<br />
Clk<br />
PC<br />
下 一 条 指 令<br />
逻 辑<br />
地 址<br />
指 令 存 储 器<br />
指 令 字<br />
32<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
寄 存 器 传 输 语 言 : 加 法 指 令<br />
寄 存 器 传 输 语 言 : 减 法 指 令<br />
31<br />
26 21 16 11 6<br />
op rs rt rd shamt funct<br />
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits<br />
0<br />
31<br />
26 21 16 11 6<br />
op rs rt rd shamt funct<br />
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits<br />
0<br />
°add<br />
rd, rs, rt<br />
°sub<br />
rd, rs, rt<br />
• mem[PC]<br />
从 存 储 器 中 读 取 指 令<br />
• mem[PC]<br />
从 存 储 器 中 读 取 指 令<br />
• R[rd] ⇐ R[rs] + R[rt]<br />
实 际 操 作<br />
• R[rd] ⇐ R[rs] - R[rt]<br />
实 际 操 作<br />
• PC ⇐ PC + 4<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 地 址<br />
• PC ⇐ PC + 4<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 地 址<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
寄 存 器 - 寄 存 器 操 作 的 数 据 通 路<br />
°R[rd] ⇐ R[rs] op R[rt] 例 如 : add rd, rs, rt<br />
• Ra, Rb 和 Rw 来 自 指 令 的 rs, rt 和 rd 场 位<br />
• ALUctr 和 RegWr: 在 对 指 令 进 行 译 码 之 后 的 控 制 逻 辑<br />
31<br />
busW<br />
26<br />
21<br />
16<br />
op rs rt rd shamt funct<br />
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits<br />
32<br />
Clk<br />
RegWr<br />
Rd<br />
Rs<br />
5 5 5<br />
Rt<br />
Rw Ra Rb<br />
32 32-bit<br />
寄 存 器<br />
busA<br />
32<br />
busB<br />
32<br />
11<br />
ALUctr<br />
ALU<br />
6<br />
32<br />
Result<br />
0<br />
Clk<br />
PC<br />
Rs, Rt, Rd,<br />
Op, Func<br />
ALUctr<br />
RegWr<br />
busA, B<br />
busW<br />
寄 存 器 - 寄 存 器 定 时 (Timing)<br />
旧 值<br />
旧 值<br />
Clk-to-Q<br />
新 值<br />
旧 值<br />
busW<br />
32<br />
Clk<br />
旧 值<br />
旧 值<br />
RegWr<br />
指 令 存 储 器 的 访 问 时 间<br />
新 值<br />
穿 过 控 制 逻 辑 的 延 迟<br />
旧 值<br />
新 值<br />
Rd Rs Rt<br />
5 5 5<br />
Rw Ra Rb<br />
32 32-bit<br />
寄 存 器<br />
新 值<br />
busA<br />
32<br />
busB<br />
32<br />
寄 存 器 堆 的 访 问 时 间<br />
新 值<br />
ALUctr<br />
ALU<br />
ALU 延 迟<br />
新 值<br />
32<br />
这 里 发 生 寄 存 器 写<br />
Result<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
寄 存 器 传 输 语 言 : 或 立 即 数 指 令<br />
有 立 即 数 的 逻 辑 操 作 的 数 据 通 路<br />
°ori<br />
31<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
rt, rs, imm16<br />
0<br />
°R[rt] ⇐ R[rs] op ZeroExt[imm16]] 示 例 : ori rt, rs, imm16<br />
31 26 21 16<br />
11<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits rd 16 bits<br />
0<br />
• mem[PC]<br />
从 存 储 器 中 读 取 指 令<br />
• R[rt] ⇐ R[rs] or ZeroExt(imm16)<br />
或 操 作<br />
• PC ⇐ PC + 4<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 的 地 址<br />
31 26 21 16 15<br />
0<br />
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 immediate<br />
16 bits<br />
16 bits<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
RegDst<br />
busW<br />
32<br />
Clk<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
RegWr<br />
Rd<br />
imm16<br />
Rt<br />
Mux<br />
Rs<br />
5 5 5<br />
Rw Ra Rb<br />
32 32-bit<br />
寄 存 器 堆<br />
16<br />
Don’t Care<br />
(Rt)<br />
busB<br />
ZeroExt<br />
32<br />
busA<br />
32<br />
32<br />
Mux<br />
ALUctr<br />
ALU<br />
Result<br />
32<br />
ALUSrc<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
°lw<br />
寄 存 器 传 输 语 言 : 装 入 指 令<br />
rt, rs, imm16<br />
• mem[PC]<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
从 存 储 器 中 读 取 指 令<br />
• Addr ⇐ R[rs] + SignExt(imm16)<br />
<strong>计</strong> <strong>算</strong> 存 储 器 的 地 址<br />
R[rt] ⇐ Mem[Addr]<br />
从 寄 存 器 中 装 入 数 据<br />
• PC ⇐ PC + 4<br />
31<br />
31<br />
26<br />
31<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
21<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 地 址<br />
16 15<br />
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 immediate<br />
16 bits<br />
16 bits<br />
26 21 16 15<br />
1111111111111111 1 immediate<br />
16 bits<br />
16 bits<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
0<br />
0<br />
0<br />
装 入 操 作 的 数 据 通 路<br />
°R[rt] ⇐ Mem[R[rs] + SignExt[imm16]] 示 例 : lw rt, rs, imm16<br />
Rd Rt<br />
RegDst<br />
Mux<br />
Rs<br />
RegWr 5 5 5<br />
busW<br />
32<br />
Clk<br />
31<br />
imm16<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
26 21 16<br />
11<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits rd 16 bits<br />
Rw Ra Rb<br />
32 32-bit<br />
寄 存 器 堆<br />
16<br />
Don’t Care<br />
(Rt)<br />
busB<br />
32<br />
Extender<br />
ExtOp<br />
busA<br />
32<br />
32<br />
Mux<br />
ALUSrc<br />
ALUctr<br />
ALU<br />
Data In<br />
32<br />
Clk<br />
32<br />
MemWr<br />
WrEn Adr<br />
数 据 存 储 器<br />
32<br />
0<br />
MemtoReg<br />
Mux<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
寄 存 器 传 输 语 言 : 存 储 指 令<br />
存 储 指 令 的 数 据 通 路<br />
°sw<br />
31<br />
rt, rs, imm16<br />
• mem[PC]<br />
• Addr ⇐ R[rs] + SignExt(imm16)<br />
• Mem[Addr] ⇐ R[rt]<br />
• PC ⇐ PC + 4<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
从 存 储 器 中 读 取 指 令<br />
<strong>计</strong> <strong>算</strong> 存 储 器 地 址<br />
将 寄 存 器 的 内 容 存 储 到 存 储 器 中<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 地 址<br />
0<br />
°Mem[R[rs] + SignExt[imm16] ⇐ R[rt]] 示 例 : sw rt, rs, imm16<br />
RegDst<br />
busW<br />
32<br />
Clk<br />
31<br />
Rd<br />
Mux<br />
RegWr 5 5<br />
0<br />
imm16<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
Rt<br />
Rs Rt<br />
5<br />
Rw Ra Rb<br />
32 32-bit<br />
寄 存 器 堆<br />
16<br />
busB<br />
32<br />
Extender<br />
busA<br />
32<br />
32<br />
Mux<br />
ALUSrc<br />
ALUctr<br />
ALU<br />
Data In32<br />
Clk<br />
32<br />
MemWr<br />
WrEn Adr<br />
数 据 存 储 器<br />
32<br />
0<br />
MemtoReg<br />
Mux<br />
ExtOp<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
寄 存 器 传 输 语 言 : 转 移 指 令<br />
°beq<br />
31<br />
rs, rt, imm16<br />
• mem[PC]<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
• Cond ⇐ R[rs] - R[rt]<br />
从 存 储 器 中 读 取 指 令<br />
<strong>计</strong> <strong>算</strong> 转 移 地 址<br />
• if (COND eq 0)<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 地 址<br />
- PC ⇐ PC + 4 + ( SignExt(imm16) x 4 )<br />
• else<br />
- PC ⇐ PC + 4<br />
0<br />
转 移 操 作 的 数 据 通 路<br />
°beq rs, rt, imm16 需 要 比 较 Rs 和 Rt!<br />
Rd Rt<br />
RegDst<br />
Mux<br />
Rs Rt<br />
RegWr 5 5 5<br />
busW<br />
32<br />
Clk<br />
31<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
imm16<br />
Rw Ra Rb<br />
32 32-bit<br />
寄 存 器 堆<br />
16<br />
busB<br />
32<br />
Extender<br />
busA<br />
32<br />
32<br />
Mux<br />
ALUSrc<br />
ALUctr<br />
ALU<br />
imm16<br />
16<br />
Branch<br />
相 等<br />
PC<br />
下 一 地 址<br />
逻 辑<br />
0<br />
至<br />
指 令 存 储 器<br />
Clk<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
ExtOp<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
下 一 地 址 的 二 进 制 运 <strong>算</strong><br />
° 从 理 论 上 讲 ,PC 是 一 个 输 入 到 指 令 存 储 器 的 32 位 的 字 节 地 址 :<br />
• 串 行 操 作 : PC = PC + 4<br />
• 转 移 操 作 : PC = PC + 4 + SignExt[Imm16] × 4<br />
° 总 是 产 生 奇 特 的 数 ??, 这 是 因 为 :<br />
• 32 位 PC 是 一 个 字 节 地 址<br />
• 并 且 , 所 有 的 指 令 都 是 4 字 节 (32 位 ) 长<br />
° 也 就 是 说 :<br />
• 32 位 PC 的 最 小 两 位 (LSB) 总 是 0 :-)<br />
• 因 而 , 没 有 必 要 用 硬 件 保 存 这 两 位<br />
° 实 际 上 , 可 以 只 使 用 30 位 PC:<br />
• 串 行 操 作 : PC = PC + 1<br />
• 转 移 操 作 : PC = PC + 1 + SignExt[Imm16]<br />
• 其 他 情 况 : 指 令 存 储 器 地 址 = PC || 00<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
下 一 地 址 逻 辑 : 昂 贵 、 快 速 的 解 决 方 案<br />
° 使 用 30 位 PC:<br />
• 串 行 操 作 : PC = PC + 1<br />
• 转 移 操 作 : PC = PC + 1 + SignExt[Imm16]<br />
• 其 他 情 况 : 指 令 存 储 器 地 址 = PC || 00<br />
30<br />
PC<br />
30<br />
+1<br />
Clk<br />
imm16<br />
指 令 <br />
16<br />
符 号 扩 展<br />
加 法 器<br />
30<br />
30<br />
30<br />
加 法 器<br />
30<br />
转 移 零<br />
00<br />
0<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
MUX<br />
1<br />
Addr<br />
Addr<br />
指 令 存 储 器<br />
32<br />
指 令
下 一 地 址 逻 辑 : 价 廉 、 慢 速 的 解 决 方 案<br />
° 为 什 么 慢 ?<br />
• 直 到 “ 零 ”(ALU) 的 输 出 有 效 之 后 , 才 能 开 始 地 址 加 法<br />
° 在 整 个 设 <strong>计</strong> 中 , 这 是 否 会 影 响 到 整 体 性 能 ?<br />
• 这 里 , 不 会 ! 因 为 , 关 键 路 径 是 装 入 操 作 。<br />
PC<br />
Clk<br />
imm16<br />
指 令 <br />
16<br />
30<br />
符 号 扩 展<br />
0<br />
30<br />
转 移<br />
0<br />
MUX<br />
1<br />
30<br />
30<br />
零<br />
1 Carry In<br />
加 法 器<br />
30<br />
00<br />
Addr<br />
Addr<br />
指 令 存 储 器<br />
32<br />
指 令 <br />
转 移 操 作 的 数 据 通 路<br />
°beq rs, rt, imm16 数 据 通 路 比 较 Rs 和 Rt, 生 成 条 件 ( 等 于 )!<br />
4<br />
imm16<br />
16<br />
31<br />
Adder<br />
PC Ext<br />
26 21 16<br />
op rs rt immediate<br />
6 bits 5 bits 5 bits<br />
16 bits<br />
32<br />
Adder<br />
nPC_sel<br />
Mux<br />
00<br />
32<br />
PC<br />
Clk<br />
指 令 地 址<br />
Rs Rt<br />
RegWr 5 5 5<br />
busA<br />
Rw Ra Rb<br />
32 32-bit<br />
寄 存 器 堆<br />
busW<br />
32<br />
Clk<br />
0<br />
busB<br />
32<br />
Cond<br />
Equal?<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
综 上 所 述 : 单 周 期 数 据 通 路 ( 不 包 括 Jump 指 令 )<br />
4<br />
imm16<br />
16<br />
PC Ext<br />
Adder<br />
32<br />
Adder<br />
nPC_sel<br />
Mux<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
指 令 存 储 器<br />
32<br />
00<br />
指 令 地 址<br />
PC<br />
Clk<br />
RegDst<br />
busW<br />
32<br />
Clk<br />
Rt<br />
Rd<br />
<br />
Rs<br />
<br />
1 Mux0<br />
Rs Rt<br />
RegWr<br />
5 5 5<br />
imm16<br />
Rt<br />
Rw Ra Rb<br />
32×32 位<br />
寄 存 器 堆<br />
16<br />
Rd<br />
<br />
busB<br />
32<br />
扩 展 器<br />
busA<br />
32<br />
ExtOp<br />
<br />
Imm16<br />
32<br />
0<br />
Mux<br />
1<br />
ALUSrc<br />
ALUctr<br />
指 令 <br />
ALU<br />
32<br />
Data In 32<br />
Clk<br />
相 等<br />
MemWr<br />
32<br />
WrEnAdr<br />
数 据 存 储 器<br />
MemtoReg<br />
Mux<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
0<br />
1<br />
关 键 路 径 抽 象<br />
° 寄 存 器 堆 和 理 想 存 储 器 :<br />
Clk<br />
• 只 有 在 写 操 作 中 ,CLK 输 入 才 能 产 生 影 响<br />
• 在 读 操 作 中 , 其 行 为 <strong>与</strong> <strong>组</strong> 合 逻 辑 电 路 一 样 :<br />
- 地 址 => 在 访 问 时 间 (Access time) 之 后 , 输 出 有 效 。<br />
PC<br />
指 令 地 址<br />
理 想<br />
指 令 存 储 器<br />
32<br />
Clk<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
Rd<br />
5<br />
指 令<br />
Rs<br />
5<br />
Rt<br />
5<br />
Rw Ra Rb<br />
32 个 32 位<br />
寄 存 器<br />
Imm<br />
16<br />
32<br />
32<br />
ALU<br />
32<br />
关 键 路 径 ( 装 入 操 作 ) =<br />
PC 的 Clk-to-Q 时 间 +<br />
指 令 存 储 器 的 访 问 时 间 +<br />
寄 存 器 堆 的 访 问 时 间 +<br />
ALU 完 成 32 位 加 法 +<br />
数 据 存 储 器 的 访 问 时 间 +<br />
写 寄 存 器 堆 的 建 立 时 间 +<br />
时 钟 纽 斜<br />
数 据 地 址<br />
数 据 输 入<br />
Clk<br />
理 想<br />
数 据 存 储 器<br />
数 据 输 出<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
第 四 步<br />
指 令<br />
存 储 器<br />
Adr<br />
nPC_sel<br />
给 定 数 据 通 路 :RTL ⇒ 控 制<br />
Op<br />
Instruction<br />
Fun<br />
<br />
Rt<br />
<br />
Rs<br />
<br />
Rd<br />
控 制<br />
RegWr RegDst ExtOp ALUSrc<br />
<br />
DATA PATH<br />
<br />
Imm16<br />
ALUctr<br />
MemWr<br />
MemtoReg<br />
Equal<br />
控 制 信 号 的 含 义<br />
°ExtOp: Zero / Sign<br />
°ALUsrc:<br />
°ALUctr:<br />
RegDst<br />
32<br />
Clk<br />
0 => regB; 1 => immed<br />
Add / Sub / Or<br />
Rd<br />
Rt<br />
1 Mux0<br />
Rs Rt<br />
RegWr<br />
5 5 5<br />
imm16<br />
Rw Ra Rb<br />
32×32 位<br />
寄 存 器 堆<br />
16<br />
busB<br />
32<br />
扩 展 器<br />
busA<br />
32<br />
32<br />
0<br />
Mux<br />
1<br />
°MemWr: write memory<br />
°MemtoReg: 1 => Mem<br />
°RegDst:<br />
°RegWr:<br />
ALUctr<br />
相 等<br />
=<br />
ALU<br />
32<br />
32<br />
WrEn Adr<br />
Data In32<br />
数 据 存 储 器<br />
Clk<br />
0 => Rt 1 => Rd<br />
write dest register<br />
MemWr MemtoReg<br />
0<br />
Mux<br />
1<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
ExtOp<br />
ALUSrc<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
控 制 信 号<br />
控 制 信 号<br />
指 令 寄 存 器 传 输<br />
ADD R[rd] ⇐ R[rs] + R[rt]; PC ⇐ PC + 4<br />
ALUsrc = RegB, ALUctr = Add RegDst = rd, RegWr, nPC_sel = +4<br />
SUB R[rd] ⇐ R[rs] - R[rt]; PC ⇐ PC + 4<br />
ALUsrc = ___, Extop = __, ALUctr = ___, RegDst = ___, RegWr(?), MemtoReg(?), MemWr(?), nPC_sel =__<br />
ORi R[rt] ⇐ R[rs] + zero_ext(Imm16); PC ⇐ PC + 4<br />
ALUsrc = ___, Extop = __, ALUctr = ___, RegDst = ___, RegWr(?), MemtoReg(?), MemWr(?), nPC_sel =__<br />
LOAD R[rt] ⇐ MEM[ R[rs] + sign_ext(Imm16)]; PC ⇐ PC + 4<br />
ALUsrc = ___, Extop = __, ALUctr = ___, RegDst = ___, RegWr(?), MemtoReg(?), MemWr(?), nPC_sel =__<br />
STORE MEM[ R[rs] + sign_ext(Imm16)] ⇐ R[rs]; PC ⇐ PC + 4<br />
ALUsrc = ___, Extop = __, ALUctr = ___, RegDst = ___, RegWr(?), MemtoReg(?), MemWr(?), nPC_sel =__<br />
BEQ if ( R[rs] == R[rt] ) then PC ⇐ PC + sign_ext(Imm16)] || 00 else PC ⇐ PC + 4<br />
ALUsrc = ___, Extop = __, ALUctr = ___, RegDst = ___, RegWr(?), MemtoReg(?), MemWr(?), nPC_sel =__<br />
inst<br />
Register Transfer<br />
ADD R[rd] ⇐ R[rs] + R[rt]; PC ⇐ PC + 4<br />
ALUsrc = RegB, ALUctr = Add RegDst = rd, RegWr, nPC_sel = +4<br />
SUB R[rd] ⇐ R[rs] - R[rt]; PC ⇐ PC + 4<br />
ALUsrc = RegB, ALUctr = Sub RegDst = rd, RegWr, nPC_sel = +4<br />
ORi R[rt] ⇐ R[rs] + zero_ext(Imm16); PC ⇐ PC + 4<br />
ALUsrc = Im, Extop = 0 ALUctr = Or RegDst = rt, RegWr, nPC_sel = +4<br />
LOAD R[rt] ⇐ MEM[ R[rs] + sign_ext(Imm16)]; PC ⇐ PC + 4<br />
ALUsrc = Im, Extop = Sign ALUctr = Add<br />
MemtoReg, RegDst = rt, RegWr, nPC_sel = +4<br />
STORE MEM[ R[rs] + sign_ext(Imm16)] ⇐ R[rs]; PC ⇐ PC + 4<br />
ALUsrc = Im, Extop = Sign ALUctr = Add MemWr, nPC_sel = +4<br />
BEQ if ( R[rs] == R[rt] ) then PC ⇐ PC + sign_ext(Imm16)] || 00 else PC ⇐ PC + 4<br />
nPC_sel = EQUAL, ALUctr = Sub<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
第 五 步 : 每 个 控 制 信 号 的 逻 辑<br />
°nPC_sel ⇐ if (OP == BEQ) then EQUAL else 0<br />
°ALUsrc ⇐ if (OP == 000000) then Reg B else Immed<br />
°ALUctr<br />
°ExtOp<br />
°MemWr<br />
°RegWr:<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
⇐ if (OP == 000000) then funct elseif (OP == ORi) then OR<br />
elseif (OP == BEQ) then Sub<br />
else Add<br />
⇐ if _____________<br />
(OP == ORi) then Zero else Sign<br />
⇐ (OP _____________ == Store)<br />
°MemtoReg ⇐ (OP _____________ == Load)<br />
°RegDst:<br />
⇐<br />
if _____________<br />
((OP == Store) ∪ (OP == BEQ)) then 0 else 1<br />
⇐ if _____________<br />
((OP == Load) ∪ (OP == ORi)) then 0 else 1<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
4<br />
imm16<br />
16<br />
例 如 : Load 指 令<br />
PC Ext<br />
Adder<br />
32<br />
Adder<br />
nPC_sel<br />
+4<br />
Mux<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
指 令 存 储 器<br />
指 令 地 址<br />
32<br />
00<br />
PC<br />
Clk<br />
busW<br />
32<br />
Clk<br />
Rt<br />
<br />
Rs<br />
<br />
Rd<br />
RegDst Rd Rt<br />
rt<br />
1 Mux0<br />
Rs Rt<br />
RegWr<br />
5 5 5<br />
imm16<br />
Rw Ra Rb<br />
32×32 位<br />
寄 存 器 堆<br />
16<br />
<br />
busB<br />
32<br />
扩 展 器<br />
sign<br />
<br />
Imm16<br />
busA<br />
32<br />
32<br />
0<br />
Mux<br />
1<br />
指 令 <br />
ALUctr<br />
add<br />
ext<br />
ALU<br />
Data In32<br />
32<br />
Clk<br />
相 等<br />
MemWr MemtoReg<br />
32<br />
WrEnAdr<br />
数 据 存 储 器<br />
Mux<br />
ExtOp ALUSrc<br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
0<br />
1<br />
实 现 的 抽 象 图<br />
实 际 MIPS 的 数 据 通 路<br />
控 制<br />
理 想<br />
指 令 存 储 器<br />
指 令 地 址<br />
指 令<br />
Rd Rs<br />
5 5<br />
Rt<br />
5<br />
控 制 信 号<br />
条 件<br />
Next Address<br />
00<br />
PC<br />
32<br />
Rw Ra Rb<br />
32 32-bit<br />
Registers<br />
A<br />
32<br />
B<br />
ALU<br />
32<br />
数 据 地 址<br />
理 想<br />
数 据 存 储 器<br />
数 据 输 入<br />
数 据 输 出<br />
Clk<br />
32<br />
Clk<br />
Clk<br />
Datapath<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心
寄 存 器 传 输 语 言 : 跳 转 指 令<br />
取 指 部 件<br />
31 26<br />
op<br />
target address<br />
6 bits 26 bits<br />
°j target<br />
• mem[PC]<br />
从 存 储 器 中 读 取 指 令<br />
• PC ⇐ PC || target<br />
<strong>计</strong> <strong>算</strong> 下 一 条 指 令 地 址<br />
0<br />
°j target<br />
• PC ⇐ PC || target<br />
30<br />
PC<br />
30<br />
1<br />
Clk<br />
imm16<br />
指 令 16<br />
PC<br />
4<br />
目 标 指 令 <br />
26<br />
加 法 器<br />
SignExt<br />
30<br />
加 法 器<br />
30<br />
30<br />
30<br />
30<br />
0<br />
MUX<br />
1<br />
0<br />
MUX<br />
1<br />
跳 转<br />
00<br />
Addr<br />
Addr<br />
指 令 存 储 器<br />
32<br />
指 令 <br />
转 移<br />
零<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
综 上 所 述 : 单 周 期 数 据 通 路 ( 包 括 Jump 指 令 )<br />
° 除 了 控 制 信 号 , 我 们 已 经 学 会 了 单 周 期 数 据 通 路 的 设 <strong>计</strong><br />
RegDst<br />
busW<br />
32<br />
Clk<br />
Rd<br />
Rt<br />
1 Mux0<br />
Rs Rt<br />
RegWr<br />
5 5 5<br />
imm16<br />
Rw Ra Rb<br />
32×32 位<br />
寄 存 器 堆<br />
16<br />
busB<br />
32<br />
扩 展 器<br />
busA<br />
32<br />
ExtOp<br />
转 移<br />
跳 转<br />
Clk<br />
32<br />
0<br />
Mux<br />
1<br />
ALUSrc<br />
取 指 部 件<br />
ALUctr<br />
ALU<br />
Data In 32<br />
Clk<br />
零<br />
32<br />
指 令 <br />
<br />
Rt<br />
Rs<br />
<br />
MemWr<br />
WrEn Adr<br />
数 据 存 储 器<br />
Rd<br />
<br />
32<br />
<br />
Imm16<br />
0<br />
Mux<br />
1<br />
MemtoReg<br />
本 讲 小 <strong>结</strong><br />
° 设 <strong>计</strong> 处 理 器 的 五 个 步 骤<br />
1. 分 析 指 令 <strong>系</strong> <strong>统</strong> => 数 据 通 路 需 求<br />
2. 选 择 一 <strong>组</strong> 数 据 通 路 部 件 , 建 立 时 钟 同 步 方 法<br />
3. 根 据 需 求 , <strong>组</strong> 装 数 据 通 路<br />
4. 分 析 每 条 指 令 的 实 现 , 以 确 定 如 何 设 置 影 响 寄 存 器 传 输 的 控 制 点<br />
5. 装 配 控 制 逻 辑<br />
°MIPS 可 以 简 化 上 述 工 作<br />
• 所 有 指 令 具 有 相 同 的 大 小<br />
• 源 寄 存 器 都 在 相 同 的 位 置<br />
• 立 即 数 的 场 位 大 小 、 位 置 恒 定<br />
• 操 作 都 作 用 于 寄 存 器 / 立 即 数<br />
° 单 周 期 数 据 通 路 ⇒ CPI=1, 时 钟 周 期 时 间 ⇒ 很 长<br />
° 下 一 讲 : 实 现 控 制 逻 辑<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心<br />
北 京 大 学 <strong>计</strong> <strong>算</strong> <strong>机</strong> 科 学 技 术 <strong>系</strong><br />
北 京 大 学 微 处 理 器 研 究 开 发 中 心