RISC-V合规的不确定性

需要测试和验证,但是,仍然不能保证这些开源越将与其他软件。

受欢迎程度

RISC-V设计可以推多远,仍然是兼容的吗?

答案并不总是黑白,因为RISC-V概念是完全不同于以前的开源项目。但随着兴趣和活动RISC-V继续增长,建设性的讨论进行解决的一些挑战的设计开放标准ISA。

“RISC-V标准是实现兼容,”Mark Himelstein说RISC-V国际首席技术官。“然而,我们一般不使用“兼容”,因为这个词的终极目标是运行应用程序在实现兼容一个概要文件。遵从性是一个意味着达到兼容性。”

一个问题在缩小这些定义的历史背景。不像一些开放处理器项目,如OpenSPARC,没有源代码。OpenSPARC提供RTL描述太阳微系统公司的处理器,而不是提供一个像RISC-V ISA。

“RISC-V不同于早些时候RISC指令集被模块化,“罗迪厄克特说,高级技术营销总监Codasip。“RISC-V需要使用一个基整数指令集像RV32I或RV64I,并已批准各种标准的扩展是可选的。它还定义指令编码空间自定义指令。ISA合规,必要条件是使用适当的基地整数集但如果结合标准扩展和/或自定义扩展使用ISA是RISC-V兼容。

不过,这个谜题有很多块,和大量的余地就如何定义。

“RISC-V兼容,你真的只需要实现一个很小的子集的指令,“罗伯•艾特肯表示杰出的建筑师Synopsys对此。“然后你可以说你的设计是RISC-V-compliant,因为它实现了最小整数指令集。它背后的想法是一个加速器可以固定到系统,然后你可以不管操作码,等等,你想要为你的加速器,这可能共存的指令集空间RISC-V最小指令块。所有这些是哲学上允许的标准。所以有效地“兼容”只意味着我实现了块RISC-V说我实现,和其他我所做的就是在可扩展性框架定义的,这是它是什么。比先前的账户,这是一个不同的野兽,如果有任何可扩展性,它非常受限。”

理查德•Grisenthwaite执行副总裁兼首席架构师手臂解释道,“合规是二进制:你100%兼容或不兼容。如果您想要运行的软件依赖说明你不建立,那么它不会在您的硬件上运行。如果你想要的软件运行在你的设备广泛应用生态系统的一部分,那么它没有意义,使用说明不可以在其他硬件——这可能是有问题的在鼓励软件作者写不可移植的软件。这就是为什么手臂和许多其他ISA提供者包括开源播放器,正与一组名称扩展,有效地规范架构。如果你一直呆在这些扩展和规范合规不是问题,但这并不让你的灵活性可能期望从开源的。”

的上下文中理解合规与开放标准设计账户仍然是具有挑战性的。

“正确地做需要难以置信的大量的资源,”Simon Davidmann说的首席执行官治之软件。“合规控制。如果你想成为兼容的定义,有人提供依从性和执行能力。手臂这样的公司做的是控制它在很多不同的方面,因为所有账户在过去所做的。他们说,‘这是我们的定义。你不可以改变它的信封。的胳膊,你不能添加指令,你不能改变解码,你不能添加寄存器,因为如果你做任何,它不是一个“手臂”,许可他们让你有不允许你这样做。即使谷歌,三星和其他建筑许可法律不能阻止它被一只手臂。”

然而,手臂确实允许建筑许可改变RTL一点,但不是源代码。“你可以在管道中添加一个额外的阶段,或者你可以实现它不同,苹果在其M1和M2,“Davidmann说。“但是他们如何不辜负这一事实仍然是一只手臂吗?如何符合手臂?部门提供了重要的技术,这取决于你许可,多少你可以玩弄它。例如,人只是小核心和许可不允许改变它只会得到一些非常简单的兼容性测试,以检查它,因为他们不允许做任何事情来改变它。他们不能真正改变RTL,所以没有很多要做。他们可以合成它,他们可以目标不同的东西和得到不同的盖茨,但是他们不允许改变RTL,而Arm架构被许可方如苹果或谷歌和三星或联发科技可以改变管道阶段。他们可以做他们想做的事,实际上,一些可以从头开始。他们会说,‘我们将你的文件,我们把它构建任何我们喜欢的方式。 How do we prove it’s compliant? For the architecture licensees as part of their millions of dollars, they get a huge amount of compatibility technology, which includes references, tests, and frameworks. Then they can run it through and find out if it’s still an Arm or not, and they’ve got to fix it.”

进一步,嵌入式处理器的用户经常从源代码编译软件,丰富的操作系统和应用程序,它们作为二进制文件上运行。

厄克特指出,这需要一套基整数和可选的标准扩展是一致的。“RISC-V RVA22U64等国际标准化这个定义概要文件,指定一个强制性标准扩展的组合。因此,在某些情况下,遵守一个概要文件除了ISA是很重要的。如果设计是作为RTL实现,例如,可以对一个instruction-accurate模型验证吗?这将要求模型包括整数指令,选择的标准扩展和自定义指令。”

Codasip工作室,例如,可以生成一个UVM环境。但从另一个角度看,合规过程影响的设计或设计过程。

今年第一个“概要”批准,其中包含一代扩展指令组成的状态和行为,共同努力,根据国际RISC-V Himelstein。“扩展强制或可选的。实现选择兼容一个概要文件必须实现强制所有扩展。资料给操作系统和工具链一个目标来支持整个社会。”

如果有不符合的问题,供应商发布勘误表和康复计划。“如果是故意的,允许自定义更改,然后供应商不能品牌产品RISC-V Profile-compatible,“Himelstein说。

每一个建筑都有这个问题。“我们有一个基本的测试集验证对模拟器产生黄金的结果,“Himelstein指出。“但它由供应商来证明他们已经做了足够的DV,系统测试,软件测试,等。我们不是一个认证机构。这是需要一个经济可行的软件驱动Profile-compatible每个人,所以软件供应商可以有一个释放/ OS类型跨越多种实现。我们是一个社区,社区是一个持续改进的组织。我们总是致力于改善模拟器和测试。”

分裂的风险
碎片总是担心在软件领域。而开放的硬件标准不一定需要支持的开源编译器,有一个巨大的努力在LLVM社区和GCC RISC-V社区支持,并从硬件标准偏差影响的开源实现。

“RISC-V世界,标准的部分,花了很长时间才得到批准是向量扩展RISC-V标准,”凯瑟琳摩尔解释说,软件工程总监西门子数字行业软件。“很多硬件厂商需要扩展批准之前,很多硬件厂商去和实现他们认为标准的样子,和实现自己的版本的标准,等等,现在这些东西都是硬编码到版本的标准,这偏离最终被批准。因此,他们不得不开发编译工具来支持他们的剥离的标准,和我们所看到的,当然,是分裂的。”

反过来,创建组的机会,为开源编译器提供定制软件服务的工具。

“当这些硬件标准变得支离破碎的机会,这是一个巨大的支持,因为大多数人构建开源组件想要他们提交和接受到开源社区他们建造的,”摩尔说。“但GCC,例如,不会接受任何偏离标准的提交,所以供应商在RISC-V一次性向量扩展的实现需要支持以外的社区支持,可以通过GCC或LLVM。”

碎片的影响是重大的,影响是,它将更昂贵的支持,因为标准的一部分,实现不同设计以外的社区。

即便如此,RISC-V确实允许自定义指令集。”有一个扩展RISC-V标准,允许供应商创建自己的自定义指令,”摩尔说。“碎片分开,因为有一个标准如何创建单独的指令。有一个编码,标志着独立的和专有的。这些事情应该考虑这个标准的一部分。实现一个扩展不同于标准的方式批准你遇到麻烦,至少在软件世界。”

敲响了警钟
RISC-V设计要符合另一个ISA需要大量的验证兼容性测试。

以同样的方式“RISC-V不是倡导合规,一只胳膊,“治之”Davidmann说。“他们没有资源来提供兼容性测试。他们是自愿工作,创建开放社区测试,基本上是非常简单的兼容性。我不相信有很好的兼容性套件。与我们的第一个工作,当我们的模型和参考模拟器兼容性,我们创建了一些测试,我们创建了一个参考和帮助,但没有可用资源。在商业公司,你必须认为,英特尔使财富从硅所以它可以大举投资验证兼容性的东西。手臂使很多钱在其许可的核心,所以这些巨大的收入来源,他们做的是投资在他们的生态系统,和许多破产兼容性。RISC-V生态系统没有资金。每个人都是一个个体。兼容性是说他们所做的一切,这里有一些简单的测试,你必须通过运行它们。 When you’ve run them through, send us your data, and we’ll allow you to use the badge that you are RISC-V compatible.’ But that is not a commercially sound insurance policy.”

此外,合规是必要但不充分的组成部分验证。

“微体系结构设计可能有各种各样的缺陷与ISA或合规,“Codasip厄克特说。“例如,可能存在竞争条件或问题与中断或缓存。考虑到一个处理器设计有一个非常大的状态空间,验证的RTL比天生的加速器块要复杂得多。通常,多种方法结合找到缺陷包括直接测试,约束随机方法和形式验证。”

Synopsys对此“艾特肯同意遵从性测试是棘手的。“这是真正的无论是打开或关闭ISA。这真是一个可定制的或可扩展对象的合规变得更具挑战性。你这么说是什么意思呢?如果你有一个非法操作码在手臂或x86,只是说,“非法指令”故事的结束。但在RISC-V设计,根据操作码是什么,它实际上可能是非法操作码实现。它可能是有人补充道。他们必须告诉别人呢?有很多灰色地带,可以存在于这个空间,可能因为它是一团糟,人们避免它通过选择良好定义的子集,回避问题。”

合规和验证的区别为一个固定的ISA有点清晰比为一个可扩展的ISA。“这个东西实现指令应该吗?这是一个简单的问题回答,”艾特肯说。“它声称它做其他的事情吗?兼容的方式这样做吗?之间有一个灰色地带,叶子,某种实现错误开始,这部分是由于ISA和架构之间的差别或微体系结构和具体实现的微体系结构。如果只有一个,这个问题存在吗?作为用户的一件事,你可能不知道。即使作为一名开发人员,您可能并不一定在连续你的问题在哪里。如果是在这里,和我们解释规范的错误,那么这是一个合规问题。 If we interpreted the spec correctly, but we implemented it wrong, that could be an architecture bug, a microarchitecture bug, or an implementation bug depending on what exactly you did because you implemented it wrong.”

开发人员如何确定?“不,”他说。“你只知道最终你必须找出是错误的,并修复它。但精确的描述了什么和我们描述它未必清楚。所以它将降至务实的观点,“它之前没有工作,现在。复选框。“它为什么不工作吗?嗯,这很复杂。”

不过值得注意的是
在一天结束的时候,兼容性测试RISC-V不验证,这意味着当他们完成使命的时候,他们可能会覆盖10%或20%的规范的实际功能,Davidmann说。“RISC-V真正陷入困境是有很多选择的客户可以实现,实际上是很难编写测试,适用于所有这些不同的设计。自由他们给RISC-V辉煌从一个行业试图建立芯片定义的软件,但这种自由意味着它是一个完整的噩梦的兼容性。RISC-V行业并没有真正理解这种兼容性的复杂性的挑战,他们是绝对不会把资源。”

手臂Grisenthwaite补充道,“合规是验证的一部分,但它是重要的精确和全面规范需要建造为了兼容。当谈到个人指令,这很简单;对于其他项目,这是更复杂的,微妙的随访可以明目张胆的失败一样大的一个问题如果软件依赖于所涉及的行为。,重要的是要记住,合规是验证的一个子集,其中包括更紧密地寻找问题是特定于一个特定的实现,包括性能异常。验证显然是设计过程的核心——通常它是最耗时的组件和一个验证方法成为值得信赖的和有弹性的,因为它是被部署在数以百万计的设计在一个广泛的生态系统”的用户。

一个可扩展的架构使其更加困难。

“如果你想要一个可扩展的ISA,变得更具挑战性,“Davidmann总结道。“有一个公司的资金投资。社区投资爱好者不工作。Linux手臂有问题时,他们一起把Linaro,年经费3000万美元,或40美元的投资。这不可能是爱好俱乐部。必须有专职工程师。对于RISC-V,您应该有一个20人的团队全职建筑技术的兼容性。这是引用,验证功能,它的测试。在亚洲一些爱好者吗?对不起,不会。 The impact of all of this is that if you’re licensing a processor, you need to know two things. Does it meet the standard so everything’s going to work? Have you got other bugs in it? Those are the questions that every IP vendor will be asked by their customers, and RISC-V International today is not concerned with the issues of compliance at the level that it should be. They say it’s on paper. Their actions do not indicate that they worry about it.”



留下一个回复


(注意:这个名字会显示公开)

Baidu