硬件软化:使用应用专用处理器优化现代 SoC 设计

新思科技高级产品营销经理 Markus Willems

片上系统 (SoC) 设计人员正在软件中实现越来越多的功能,以获得灵活性,减轻为了支持不断演化的标准而导致的不确定性,并使同一个芯片能够为众多最终产品提供服务。

相较于优化硬件而言,将功能从硬件移动到在处理器上运行的软件中,可能会付出性能降低和功耗增加的代价。解决这一问题,其中一种方法是使用一组小型任务专用处理器,而不是一个大型通用处理器。此方法可在图像识别、数据库查询和机器学习等应用中使用。图 1 显示了移动 SoC 如何部署各种专用处理器,以在控制系统功耗的同时实现高系统性能。

图 1:在移动 SoC 中协同工作的专用处理器

许多 SoC 开发人员都转向 IP 公司以获取此类专用处理器。但是,如果 IP 提供商尚未为新兴应用提供此类处理器,SoC 设计师通常被迫选择使用“足够接近”所需功能的现有处理器,或重新使用毫无灵活性的固定功能硬件。第三种选择是构建应用专用的指令集处理器 (ASIP),并根据目标应用的需求定制其指令集 (ISA) 和微架构。到底是在内部开发 ASIP 还是使用现成的处理器 IP,则需要对 ASIP 带来的差异化优势,以及为实现最终应用进行 ASIP 设计、优化、验证和编程的工程工作权衡之后,再作出的最终决定。反过来,这又取决于为编程 ASIP 构建一个功能合理的工具链所需要的工作。

架构选项

ASIP 是软件可编程处理器和应用专用功能单元的组合,其中针对一组功能进行了优化。ASIP 设计人员利用并行化和专业化来实现此优化,同时保留完整的 C 语言可编程性。

并行化使设计可以一次运行多个功能,并且其三种主要形式可以单独或组合应用以增强性能。这些选项在图 2 中列出,并在此处进行说明。

指令级并行化 使用正交指令集(如在超长指令字 (VLIW) 架构中),或编码指令集(它提供了所需的操作并行化,而不需要与 VLIW 架构相关的开销)。

数据级并行化实现向量处理,涉及对多个数据项应用同一指令。

任务级并行化(如在多核/多线程实现中)支持具有不同控制流的多个协同算法并行运行。

图 2:设计选项 — 并行化

专业化使设计人员能够通过自定义处理器的流水线、内/外部存储器、寄存器架构和连接,利用一个或多个指令执行功能。设计人员还可以定义应用专用的数据类型和接口。图 3 描绘了各种专业化形式。

图 3:设计选项 — 专业化

开发 ASIP 时需要考虑的因素

ASIP 只有在设计的市场窗口内能够带来有用的差异化优势时,才值得开发。因此,设计人员需要做三件事,以便快速了解架构选择对其 ASIP 的影响:

1.      定义最终应用的代表性基准,以便对正在考虑的架构进行定量比较。基准必须具备:

  • 功能规范,描述需要实现的应用内核。基准通常以 C 表示,方便完成实现和架构独立。
  • 环境,描述导致执行该基准的激励因素。
  • 性能指标,如功耗、性能和目标频率。

2.      描述候选架构

设计人员需要一种快速简单的方法来定义候选架构,最好使用建模方法,以避免在设计过程早期指定深入的实现细节。

设计人员还需要软件工具将基准代码映射到候选架构上。为每个候选架构手动开发新的工具链是不切实际的,所以需要执行自动开发。

3.      探索设计空间

设计探索包括根据定义的基准评估每个候选架构。此处要应用两个主要概念。

在环编译器:设计人员需要使用 C/C++ 编译器对每个候选架构运行基准,而不是尝试使用耗时且易错的汇编语言。此外,还必须配备一个周期精确指令仿真器 (ISS) 和一个用于分析结果的分析器。C/C++ 编译器、ISS 和分析器可与调试器、汇编器和链接器结合,以形成完整的软件开发工具包 (SDK)。

SDK 应在设计过程的早期提供,并且可以快速再定向到各种架构替代方案,以实现高效的设计空间探索。

在环综合:可用于快速分析候选架构在运行频率、面积和功耗效率方面的硬件成本和特征。为此,应该有一种自动生成可综合的 RTL 的方法,然后使用综合工具来分析每个候选架构的硬件特征。

ASIP Designer

新思科技的 ASIP Designer 加速了 ASIP 的创建。它提供可再定向的编译和架构探索技术、快速仿真以及与实现流程的集成。

图 4 显示了如何在 ASIP Designer 中支持 ASIP 开发,以及如何将其集成到新思科技设计和验证流程中。

图 4:ASIP Designer 工具流

处理器建模

ASIP 使用 nML 进行描述,nML 是一种条理清晰的架构描述语言,能够高效而简洁地描述与编程手册相同抽象级别的处理器架构。该语言用于定义设计的结构特征(寄存器、功能单元、信号等)和指令集架构。nML 还使用户能够描述数据路径和 I/O 接口的周期精确和位精确行为。

SDK 生成

在 ASIP Designer 中,ASIP 的 nML 描述用作可重定向 SDK 的输入(图 4 中的第 1 步),该 SDK 会自动适应定义的处理器架构。SDK 包含经过优化的 C/C ++ 编译器、汇编器/反汇编器、链接器、周期精确和指令精确的指令集仿真器,以及图形调试器,如图 5 所示。

图 5:软件开发工具包的组件

由于编译器实现了普遍优化,所以能够适应每个候选架构的细节。GNU 或 LLVM 等其他编译器框架需要为每个候选程序提供一个架构专用的编译器后端。编译器的即时可用性支持快速架构探索和迭代(参见图 4 中的第 2 步)。

配备在环编译器还意味着软件编写人员可以向 ASIP 设计人员提供反馈,因此处理器的动态性能可以得到研究和优化。在这个抽象级别进行这些调整和权衡比在生成 RTL 描述后再尝试这样做更有效。

SDK 还可使最终用户在 SoC 中对已经实现了的 ASIP 进行编程。架构专用的 SDK 可作为独立包提供给客户。

硬件的生成和验证

设计满足其功能要求后,ASIP Designer 就会与新思科技实现和验证工具集成,将设计从 RTL 描述推向流片环节。

ASIP Designer 会将 nML 模型转化为可完全综合的 Verilog 或 VHDL(参见图 4 中的第 3 步),对硬件进行全周期精确和位精确控制。然后可以使用新思科技的 Design Compiler 和 VCS 等设计和验证工具实现 ASIP。例如,可以使用 Design Compiler 生成门级描述,该描述可以预测电路的功耗要求和面积,或使用布局布线工具(如 IC Compiler)来了解布线拥塞的风险。

采用这种“循环内综合”方法能够作出有根据的决策,从而避免在设计过程的后期出现意外情况。如果设计在实现过程中遇到问题,则开发人员可以回到 nML 描述进行调整,以解决问题。nML 中采用单源条目,所以 SDK 和 RTL 会保持同步。

验证 ASIP

验证 ASIP 有两个方面。

首先,验证处理器模型(如 nML 中所述)是否按预期运行。ASIP Designer 通过支持以下诊断提供帮助:对照设计人员工作站上的本机执行,确认测试案例是否得以正确执行;自动一致性检查;分析连接性、硬件冲突、未使用指令、管道危害的诊断报告;自动生成处理器专用“单行”C 程序,检查是否具备编译器需要的所有单元;以及其他诊断。

第二个关键方面是验证 RTL 模型,确保生成的 RTL 正确地实现处理器模型。ASIP Designer 支持:自动生成定向随机指令序列作为汇编代码,通过为所有必填字段生成随机值生成指令序列模板,自动生成覆盖点等等。这些在 SystemVerilog 中提供,可以集成到整体测试平台中。

验证 ASIP 所需的工作取决于其使用方式。ASIP 的定义越精确,其功能验证与验证固定功能 RTL 实现的相似程度就越高。ASIP 越宽泛,功能验证工作就越接近处理器 IP 提供商为确保其 IP 在几乎任何用例中正常发挥作用所采取的工作。

结语

ASIP 可实现硬件效率和软件灵活性的实用结合,如果其设计、验证和编程速度足够快,就可以满足项目要求。

ASIP Designer 可通过实现详细的架构探索、编译器和在环综合分析以及通过自动生成更优的 SDK 进行直接编程来提供帮助。如需更多信息,请访问应用专用指令集处理器页面。