gpt4 book ai didi

parallel-processing - 由具有不同延迟的操作组成的非常长的指令

转载 作者:行者123 更新时间:2023-12-04 08:16:51 26 4
gpt4 key购买 nike

考虑一个问题宽度等于N的VLIW处理器:这意味着它能够同时启动N操作,所以每个很长的指令最多可以包含N个操作。

假设 VLIW 处理器加载一条超长指令,其中包含具有不同延迟的操作:属于同一超长指令的操作可能会在不同时间结束。如果一个操作在属于同一超长指令的其他操作之前完成执行,会发生什么情况?后续操作(即属于下一个超长指令的操作)能否在当前超长指令的剩余操作被执行之前开始执行?还是超长指令等待属于当前超长指令的所有操作完成?

最佳答案

我见过的大多数 VLIW 处理器都支持具有不同延迟的操作。

由编译器来安排这些指令,并确保操作数在操作执行之前可用。 VLIW 处理器是愚蠢,并且不检查操作之间的任何依赖关系。当一个长指令字执行,字中的每个操作只是从寄存器中读取其输入数据文件,并在同一周期结束时将其结果写回,或者稍后,如果一个操作需要两个或三个周期。

这仅在指令是确定性的并且总是采用相同的指令时有效循环次数。我见过的所有 VLIW 架构都有需要的操作固定的循环次数,不能少,不能多。以防他们确实需要更长的时间,例如例如外部内存获取,整个机器就会停止运行。

现在有一件关键的事情限制了指令的调度不同的延迟:寄存器文件的端口数。这些端口是寄存器文件和操作的执行单元之间的连接。在 VLIW 处理器中,每个操作都在一个发布槽中执行,并且每个发布槽有自己的寄存器文件端口。端口在硬件方面很昂贵。端口越多,实现寄存器文件所需的芯片就越多。

现在考虑下面的情况,其中一个双周期操作想要写它的结果寄存器文件同时作为一个单周期操作被安排在它之后。现在有冲突,因为两个操作都想通过同一端口写入同一寄存器文件。同样,这是编译器的任务以确保不会发生这种情况。在许多 VLIW 架构中,操作数在同一个问题槽中执行的都具有相同的延迟。这避免了这个冲突。

现在回答你的问题:

你说:“如果一个操作先于其他操作完成执行,会发生什么?属于同一条超长指令的操作?”

没有什么特别的事情发生。处理器只是继续执行下一个很长的指令字。

您说:“后续操作(即属于下一条很长的指令)在剩下的操作之前开始执行当前正在执行的超长指令?”

是的,但这可能会在以后出现寄存器端口冲突。这取决于编译器来防止这种情况。

你说:“或者一个很长的指令等待所有的完成属于当前超长指令的操作?”

没有。处理器在每个周期都简单地转到下一条很长的指令单词。有一个异常(exception),那就是当一个操作花费的时间超过正常,例如因为缓存未命中,然后管道是停止,并且机器不会进行下一个长指令字。

关于parallel-processing - 由具有不同延迟的操作组成的非常长的指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com