05.09.2015 Views

计 算 机 组 织 与 系 统 结 构

打印版 - 北京大学微处理器研究开发中心

打印版 - 北京大学微处理器研究开发中心

SHOW MORE
SHOW LESS
  • 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 />

北 京 大 学 微 处 理 器 研 究 开 发 中 心

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!