软件日益增加的对系统级芯片(SoC)设计的重要性已不是什么新鲜事,同样今天的SoC通常含有几种不同类型的处理器也已很常见。不过,令人惊讶的是,业界很少对这些技术发展可能造成的影响进行讨论。
当一个嵌入式系统只包括一个工业标准微处理器时,实时操作系统(RTOS)通常还承担任务管理的工作。这个RTOS可能是商业版的,但更可能是内部自己开发的。在任一种情况下,其工作都是调度、分派、监控和在各种计算任务后整理内存,并为它们提供一个统一的、独立于硬件的系统资源接口。
事实上也是这样,而且有证据表明,过去的自己开发的RTOS正逐步让位于更小的和低版税的第三方产品。不过,RTOS在遇到含有多处理内核的SoC器件时通常会碰壁,尤其是当各种处理内核的架构不同时。市场上很少有能支持对称多处理的RTOS产品,更不用说由CPU、DSP和定制模块构成的异质架构了。
最常见的情况是,位于中央CPU上的RTOS通过信标、邮箱、扩音器或任何该架构能设计出来的东西与在其它模块上运行的特别(Ad-Hoc)控制程序进行通信。如果有些模块不是软件可编程的,那么就可能需要一个set-and-test寄存器接口。
所有的事情都在向专用化转变。评估和性能分析变得充满挑战性,经理们紧张不安。人们开始非常关心嵌入式软件的大小,CPU的执行周期预算和SoC的能耗正在进入RTOS的工作范畴,而非工作负荷。
新创公司Ignios正在致力于解决这种状况。这家公司已经创建了一套应用程序接口(API),它们可用来控制系统中每一个任务的状态、以及中断处理和任务间通信。这些API独立于SoC中的特定硬件模块、任务以及系统所使用的RTOS。
但是,为确保芯片中每一模块上的控制寄存器、中断处理和任务管理能够与API正确通信,仍有大量依赖于硬件的编程工作要做。而且,在任务管理上,还存在许多时间和功率方面的问题。
图:1.硬件任务主控器
2.系统存储器
3.硬件引擎
4.SystemWeaver
5.系统互联
6.DMA引擎
7.资料来源:Ignios Ltd.
因此,Ingios走出了下面关键的一步。该公司创建了一个硬件IP模块,用来处理任务调度和任务间通信。
正如该公司业务开发副总裁Dan Chester所描述的,该模块类似于一个能够创建并遍历任务控制块链表的精细状态机。那些任务描述符,以及可用硬件资源的描述符,被存储在一个本地快速RAM中。整个封包由硬件IP、存储器和API代码组成,被称为SystemWeaver。
在实际运作中,SystemWeaver IP通常放在总线、一个交叉条(crossbar)或SoC的其它单元上。设计人员可以直接从个别模块向SystemWeaver模块发送中断信号,但这不是必需的。
除了将SystemWeaver模块插入到SoC设计之外,SoC中的每一个处理单元可能还另外需要少许软件或硬件。当一个任务被阻塞或完成时,为了向SystemWeaver模块发送信号,这些软件或硬件是必需的;Chester估计,这需要在每个模块上增加不超过10kb的代码。在非编程模块中,该功能由一个小型状态机处理。
最后,必须在SystemWeaver本地存储器中建立任务和系统资源结构。
一旦系统被初始化,SystemWeaver硬件就扮演RTOS内核中的任务控制器的角色,建立一个就绪任务清单,并在硬件资源可用时将任务分配到每一资源。这个模块也作为任务间通信媒介。
任务/数据对
数据集和任务代码绑定在一起,当任务准备就绪时,该任务/数据对被分派到第一个可用的处理器。也可以执行优先级排序和其它服务质量(QoS)分配方案。
如果需要,一个数据集也可以与运行在不同处理器模块上的两个任务邦定,这样当高速资源紧张时,该任务可以在稍慢的不太重要的资源上运行。还有其它好的选择,例如用于处理运行时间可重配置硬件资源的方案。
当一个任务被阻塞或完成时,正在执行该任务的处理器向SystemWeaver模块发出信号,后者查看其任务清单,然后分配一个新的任务给这个处理器。
Chester认为,可以把整个第三方RTOS作为一个任务来启动,允许它在SystemWeaver环境中运行,控制自己的任务或是简单地把任务控制责任转交给SystemWeaver模块。Ignios正在寻求与RTOS供应商的合作,在选择RTOS产品和系统间发展更紧密的协同关系。
从功能上来说,SystemWeaver模块没有做任何RTOS内部的工作。不过,任务分配的全部关键路径都发生在硬件中,从而大幅减少任务间的延迟,并从控制CPU中删除了相当多的高优先级负载。
这个方案的另一个好处是,由SystemWeaver API创建的抽象层通常可用来管理系统级调试。它允许设计人员在任务级检查整个系统,而不必深究6个不同处理器的源代码,也不需要费力理解一、两个硬件状态机的状态。
Ignios可提供该硬件模块的一个全面SystemC模型,它可用于实现系统建模、集成和验证。
SystemWeaver 1.0版本目前正向重点客户授权。该版本包括针对硬件模块的可综合RTL、API代码、SystemC模型以及使用该模块的SoC的一些参考设计数据。
作者:Ron Wilson








京公网安备 11011202001138号
