-1

几分钟前我问了另一个问题,但是,我正在完成一个项目。部分好处是流水线化我们的处理器设计。我有一个简单的基于累加器的处理器,带有数据总线和地址总线。它具有三个基本阶段 [获取、解码、执行] 和大多数简单处理器中的基本功能单元。像数据存储器、指令寄存器、ALU、MAR、MDR、控制器(处理状态和控制信号)等。

我知道什么是管道内衬,但还没有弄清楚如何在功能级别上实现它。我已经四处搜索,但没有什么可以简化我需要它做的事情,或者没有找到任何示例。

4

1 回答 1

3

指令流水线中,RISC 处理器的经典​​ 5 个阶段是:

  1. 取指令
  2. 指令解码和寄存器获取
  3. 执行
  4. 内存访问
  5. 寄存器回写

如果一切都在零时间内工作,则不需要流水线阶段,但正如您可能已经看到的组合逻辑,输入的变化需要时间来波及。加上将数据加载和保存到内存的要求,可以看出在 1 个时钟周期内处理所有事情会非常困难。

为了简化它考虑3个阶段从内存加载,执行和存储到内存。

3 指令(添加内存指令)处理器有寄存器 r1,r2,r3

addr3 = addr1 + addr2
addr6 = addr4 + addr5
addr9 = addr7 + addr8

     Unit Load        Execute        Store
Cycle 1 : r1 = addr1  -              -
          r2 = addr2  

Cycle 2 : r1 = addr4  acc = r1 + r2  -
          r2 = addr5

Cycle 3 : r1 = addr7  acc = r1 + r2  addr3 = acc
          r2 = addr8

Cycle 4 : r1 = 0      acc = r1 + r2  addr6 = acc
          r2 = 0 

Cycle 5 : r1 = 0      acc = 0        addr9 = acc
          r2 = 0

因此,当从程序中读取指令时,我们可以看到它的不同部分在不同的时间被使用,读取内存地址使用周期 1,操作类型加法,减法乘法将在周期 2 中使用,存储内存地址将在循环 3 中使用。

数据路径插入了触发器以将其分解为(流水线)阶段,然后您需要延迟解码指令字的相关部分,以便它们与要操作的数据同时到达功能块。

于 2013-12-18T00:04:34.330 回答