我在几分钟前问过另一个问题,但是,我正在完成一个项目。奖金的一部分是管道我们的处理器设计。我有一个简单的基于累加器的处理器,带有数据总线和地址总线。它有三个基本阶段[获取,解码,执行]和大多数处理简单处理器的基本功能单元。像数据存储器,指令寄存器,ALU,MAR,MDR,控制器(处理状态和控制信号)等。
我知道什么是管道衬里,但还没有弄清楚如何在功能层面实现它。我已经四处寻找,但没有简化它,因为我需要它做什么或者没有找到任何例子。
答案 0 :(得分:3)
从Instruction Pipeline起,risc处理器的经典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周中使用。
数据路径插入了触发器以将其分解为(流水线)阶段然后您需要延迟解码的指令字的相关部分,以便它们在与预期的数据同时到达功能块的同时操作。