Verilog:流水线化简单处理器的步骤

时间:2013-12-17 22:17:21

标签: computer-science verilog computer-architecture pipelining

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

我知道什么是管道衬里,但还没有弄清楚如何在功能层面实现它。我已经四处寻找,但没有简化它,因为我需要它做什么或者没有找到任何例子。

1 个答案:

答案 0 :(得分:3)

Instruction Pipeline起,risc处理器的经典​​5个阶段是:

  1. 取指令
  2. 指令解码和寄存器提取
  3. 执行
  4. 内存访问
  5. 注册回写
  6. 如果一切都在零时间内工作,就不需要管道级,但正如您在组合逻辑中所看到的那样,输入上的数据需要时间来波及。添加加载和保存数据到内存的要求,可以看出在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周中使用。

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