全文如下:在特定领域架构可调式处理器的设计流程方面所做出的努力

9月26日,开源生态论坛在浙江乌镇召开。论坛第三环节,印度InCore Semiconductor首席执行官兼联合创始人GS Madhusudan发表了视频演讲。

全文如下:

大家好,我是 GS Madhusudan,InCore Semiconductor 的首席执行官兼联合创始人。

今天,我想谈谈我们在特定领域可调处理器的设计流程中所做的努力。这项工作仍在进行中。我将与您分享我们在开发过程中获得的一些技巧、我们所犯的错误,以及我认为其他团队如果想要这样做就需要遵循的方法。我不会详细介绍我们的具体工作流程,但会更多地关注我们在开发过程中学到的一般技巧。

我们所知道的半导体行业的每一条法律都已告一段落。摩尔定律几乎不再适用,丹纳德的比例定律已经失效。我们还遇到了其他问题。单线程性能的提升趋于停滞,CPU的复杂度不断升级,这意味着很难继续开发更复杂的处理器。安全挑战和复杂的软件语言正在拉低处理器性能。那么,可以做些什么来进一步提高性能呢?

可能唯一的选择是特定领域的架构。你可以选择设计专用芯片,但问题是它的软件不可编程。如果要在可编程性和更高性能之间取得平衡,只能针对某一特定领域优化处理器。如果你想在大方向上改进,你不能两者兼得。RISC-V开放指令集架构让我们可以轻松实现DSA架构。问题是,我们如何制造使用 DSA 架构的 CPU。当指令集兼容某种类型的 DSA 扩展时,设计的难度取决于你的工具链,更重要的是产品的验证。幸运的是,这个过程已经高度自动化,大大减少了设计时间,

另一个可能出现的问题是碎片化。因为每家公司只使用一部分指令集,

这就产生了一个问题,工具链是开源社区开发的,一旦指令集和工具链不兼容,就必须保持同步。这可能会演变成一场噩梦。所以,关键是如果你想基于可配置指令集构建处理器,你必须遵循可配置的设计流程。也就是说,我们需要一个通用的进程和一个通用的处理器。快速和超低功耗的处理器内核有些过时了。虽然它们仍然有市场,但相比之下,可配置内核变得越来越重要。

考虑到应用工作负载的复杂性导致的指令集的不断演进,我们必须完成流程开发全生命周期的自动化。我们还需要使用代码生成器并修复构造技术。核心思想是不要让工程师在低抽象层上工作。理想情况下,工程师应该在高抽象层次上处理复杂的任务,而不是在可以自动化的较低层次上工作,以最大限度地发挥他的专业知识。也就是说,InCore 的 INflo 处理器设计流程旨在实现完整的设计流程。我们还没有完全成功,但我认为我们正在取得良好的进展。

图片[1]-全文如下:在特定领域架构可调式处理器的设计流程方面所做出的努力-老王博客

首先,您需要使用标准规范工具捕获您的配置,因为您需要与指令集兼容。此外易语言 超级模块 连点器,您需要一个可配置的内核生成器,而不是多核生成器,因为您无法确定您的 DSA 需要多少内核。最后,您还需要现代工具集,对此我再怎么强调也不为过。在我看来,BSV、Chisel、Verilog 和 SystemVerilog 都已经过时了。如果您想提高生产力并缩短处理器开发周期,则必须使用现代硬件设计语言。中间表示语言是BSV语言转换为Verilog语言的部分。市场上有几种新的中间表示语言。我记得 Open-Hardware 也有一套语言即将推出。在我看来,这是编程语言的未来。Verilog 从未为此目的而设计。在仿真目标的验证等方面存在很多问题。它与我们今天谈论的内容无关,但仍然值得深入研究。

由于复杂性的爆炸式增长,经典的验证方法已经不够用了,所以还需要进行形式化验证。任何处理器都包含一些关键组件。如果你能正式证明它们的正确性,就会减轻你的验证压力。当然,您还需要一组可配置的身份验证流程组件。

除了设计组件外,InCore 还有两个已经完成或正在开发的组件。其中 RIVER_CORE 用于内核级验证,RIVER_SOC 用于片上系统验证。

顺便说一句,RIVER_CORE 是开源的,可供您使用。Open-Hardware开发的CORE-V-VERIF是一套类似的可配置流程易语言 超级模块 连点器,同样优秀,值得一看。可配置的指令集需要可配置的内核。

当然,这是显而易见的,但我还是想强调一下。您需要从基础处理器开始,然后继续添加组件。您需要捕获指令集中的所有挂钩,最好是在配置文件中连同微架构挂钩。然后你需要根据对应的钩子来配置你的指令集。事实上,使用 Chisel 语言可以让你的配置更容易使用。在硬件方面,我最后想说的是,与指令集的兼容性是必不可少的。您的所有配置都必须单独映射到指令集。

下一步是微架构测试。您需要使用程序生成器和测试生成器自动生成尽可能多的测试项目。BSV、Chisel等高抽象语言的覆盖测试变得越来越困难。我认为我们应该重新定义覆盖范围。

最后,不能不提到软件部分在整个过程中的重要性。通过利用指令集微架构的部分模板,我们应该能够构建编译器扩展和其他工具链扩展。这对我们来说是一个新兴领域。我们正在与合作伙伴一起研究我们能做什么。但是目前,当您添加新指令时,您必须尝试手动破解编译器。因此,这方面的研究是必要的。如果没有这样的工具,添加新指令将是一场噩梦。自动生成编译器扩展很容易,难的是让这些扩展充分发挥其优势。

总而言之,解决这个问题并不容易,但是为了缩短基于DSA架构的产品的开发周期,我们必须解决这个问题。

我的整个报告都围绕着自动化和缩短周转时间,因为如果设计一个基于 DSA 架构的产品需要 2-3 年,那么没有人会使用 DSA 进行扩展。

我今天就停在这里。感谢收听。祝大家生活愉快。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论