中文 英语
系统与设计
的意见

自定义现成处理器IP

向处理器添加自定义指令,而无需进行容易出错的手动编辑。

受欢迎程度

处理器定制是优化处理器IP核以处理特定工作负载的一种方法。在某些情况下,从头设计一个专用的核心是有意义的,但在许多情况下,现有的核心可能部分满足您的需求,并且可以作为优化核心的良好起点。

在过去,一些处理器IP供应商,特别是ARC和Tensilica,提供了可扩展的内核,允许有限的定制。然而,在Codasip Studio中,处理器体系结构和微体系结构可以用CodAL语言,在ISA和微架构方面提供了更多的自由度。

这种CodAL能力与RISC-V ISA特别协同,但它也可以应用于基于任何其他ISA的核心。

定制和RISC-V

RISC-V指令集有三类指令。对于给定的字长(32位、64位或128位)、不同组的可选标准扩展和非标准自定义扩展,有一个基本指令集。


模块指令集。来源:Codasip

有很大一部分操作码空间可用于自定义扩展。处理器架构师可以使用这种扩展来提供额外的处理性能,以解决给定的计算工作负载。

Codasip提供现成的RISC-V处理器核心它们以通常的方式获得RTL、测试平台和SDK的许可。这些核心还可以在CodAL源代码中获得许可,这些源代码用于设计核心并生成SDK和HDK。CodAL源代码可以被编辑以创建自定义扩展和修改其他架构特性。

Microsemi在音频设计中使用了这种方法,他们试图用RISC-V取代专有的嵌入式核心。1他们从基本的32位指令集开始,但发现循环计数太高了。添加乘法指令提高了性能,但没有达到它们的要求。最后,他们与Codasip合作创建了自定义DSP扩展,显著提高了56倍的性能,处理器核心gatecount增长了2.4倍。他们不仅实现了性能目标,而且代码大小从232 kB减少到64 kB,将所需的指令内存面积减少了3.6倍。


Microsemi案例:通过定制RISC-V扩展减少周期计数。来源:Codasip

Codasip工作室提供两种在硬件中实现自定义指令的方法:

  1. 在处理器管道中实现逻辑,
  2. 将协处理器与生成的接口连接起来。

设计自动化

向核心添加新指令的传统方法是基于手动编辑。添加自定义指令必须体现在以下几个方面:

  1. 软件工具链
  2. 指令集模拟器
  3. 验证环境
  4. RTL


没有Codasip Studio的自动化设计。来源:Codasip

使用软件工具链,可以创建intrinsic,这样编译器就可以使用新的指令,但这也意味着应用程序代码需要更新。然而,修改现有的ISS和RTL都是潜在的错误来源。最后,如果核查环境需要改变,这是另一个存在问题的领域。验证这些手动更改是一个很大的挑战,并为设计项目增加了风险。

一些供应商提供部分自动化的解决方案,但由于没有涵盖处理器定制的所有方面,因此仍然为手动更改留下了错误的空间。


使用Codasip Studio进行自动化设计。来源:Codasip

相比之下,使用Codasip只对CodAL源代码进行更改。LLVM工具链是自动生成的,支持新指令。类似地,生成ISS和RTL以包含自定义指令,并且可以使用更新的UVM环境进行检查。这种方法不仅节省时间,而且是一个更健壮的定制过程。你可以在这篇论文,或探索Codasip工作室更详细地说。

来源:实现物联网应用的RISC-V, Dan Ganousis和Vijay Subramaniam, DAC 2017。



留下回复


(注:此名称将公开显示)

Baidu