gpt4 book ai didi

riscv - 如何保持 RISC-V 合规性?

转载 作者:行者123 更新时间:2023-12-02 04:26:15 24 4
gpt4 key购买 nike

我刚刚与一位同事讨论了 RISC-V 合规性的实际含义。我们详细讨论了以下主题:

  1. 据我了解,只要处理器实现了 RISC-V 基本指令集和可选的一个或多个标准扩展,它就是 RISC-V 兼容的。 完全,而不是部分。只要不触及基本指令集或任何标准扩展,甚至可以定义和实现自己的指令(如棕地或绿地扩展)。为了保证这一点,任何 RISC-V 兼容编译器生成的机器代码都可以在我的机器上运行。这就是重点,对吧?

    • RISC-V ISA 不打算延迟分支。我的理解是,分支是否延迟的定义已经是 ISA 的一部分,而不是实现问题。这是正确的吗?

    • 假设您想要使用带有延迟分支的 RISC-V。不管这是不是一个好主意,让我们只关注合规性问题。在我看来,将基本指令集的一些现有分支/跳转指令定义和实现为延迟分支不再符合 RISC-V。 RISC-V 兼容编译器的编译将不再适用于这样的机器。人们可以自由地定义自己的延迟分支指令。当然,与任何自写扩展一样,不能指望任意编译器会使用这样的指令。我说得对吗?

  2. 根据 RISC-V 规范,“程序计数器 pc 保存当前指令的地址。”我对这句话的理解是,任何跳转/分支指令都是指它存放的地址。同样,独立于实现。示例:假设一个实现,其中跳转/分支指令在被提取后执行几个周期。这意味着 PC 可能已经增加了。因此,实现的任务是以某种方式存储跳转/分支指令的地址。编译器的任务不是了解此延迟并通过修改要添加到 PC 的立即数来补偿它。我的总结是否正确?

所以,简而言之,我的问题的简短版本:

  1. RISC-V 合规性是否意味着基本整数指令集和标准扩展不得更改或删除?

  2. 分支是否延迟的信息是否已经是 ISA 的一部分?

  3. RISC-V 的 PC 是否被认为不受任何管道延迟的影响?

我认为 ISA 通常与任何实现细节无关。与我所主张的相反的论点是,人们必须告诉编译器有关实现细节(延迟分支、PC 行为等),并且这仍然可以被视为符合 ISA。

最佳答案

我不是专家,但在过去 20 年中实现了一些核心。您的三个部分问题中的关键概念是完整性用户可见性。在我看来,声称完整性意味着不能更改或删除标准的任何部分。然而,如果它没有可疑的点和可能被不同人解释不同的部分,那确实是一个难得的标准。在 RISC-V 的具体情况下,我想指出对 indicate compliance 的帮助。 , 如果你还没有看过的话。

如果有真正的专家来回答这个问题就好了。

  1. Does RISC-V compliance mean that base integer instruction set and standard extension must neither be changed nor stripped?

我的理解和你一样。声明标准中定义的行为然后不遵守该标准是没有意义的。

  1. Is the information whether a branch is delayed or not already part of the ISA?

我再次同意你的看法。延迟分支是处理器用户的公开功能。因此,ISA 必须指定此类分支的最终存在,事实上,从 riscv-spec-v2.2.pdf 的第 15 页开始:

"Control transfer instructions in RV32I do not have architecturally visible delay slots."

注意措辞,只要您的实现不向用户暴露任何延迟槽,您就可以随心所欲。通过非标准扩展,您可以完全自由地设计具有延迟槽的指令,您甚至可以将 RV32I 指令放入这些槽中。

  1. Is the PC of RISC-V considered agnostic to any pipeline delay?

是的。

关于riscv - 如何保持 RISC-V 合规性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54327399/

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