原创 智能手机再一次成为人们热议的话题:这次的主角是T-Mobile G1,一款很明显非苹果风格,非iPh

2009-8-14 09:01 1887 6 6 分类: MCU/ 嵌入式
近年来,越来越多的嵌入式系统和SoC开始转向使用可配置处理器技术,这样既可以缩短产品开发周期,又可使设计更加灵活,甚至流片后仍可以修改部分功能。这要求处理器设计不仅能灵活重用已有设计,同时又要高效,对于特定应用具有很好的性能,并在符合性能、功耗前提下,能够直接替代硬连线逻辑模块。目前ESL工具对处理器的不同配置和扩展已经有很好的支持,但针对于像多核SoC(MPSoC)这样的复杂设计,ESL工具还很难满足设计需求。我们可以将通常的ESL领域划分成5个主要部分:


* 算法设计与实现

* 行为级综合

* SoC架构设计、仿真及分析

* 构建虚拟系统原型

* 功能-架构协同设计


算法设计工具允许用户对算法进行描述、仿真,并且可以生成算法实现流程的代码描述。比如Mathworks的Matlab和Simlink就是这种工具。目前大部分的工具是使用面向数据流或数据密集型算法进行建模,但是也有一些工具,如Mathworks的StateFlow,允许用户使用有限状态机对控制逻辑进行描述,并可实现自动生成C代码。


行为级综合工具是新一代基于C/C++或SystemC开发的工具,专门为满足算法和软件工程师而非硬件工程师的设计需要而开发的。由于使用C/C++,因此仿真速度比使用传统的RTL方法有了10~1000倍的显著提高。这也为系统硬件、软件和算法的联合仿真开辟了一条新道路。


用户通过SoC的架构设计工具使用传统总线,标准嵌入式处理器库(如MIPS或ARM),以及其他的一些组件(如存储器,特殊的硬件模块和外设等)来构建SoC系统。之后便可以对整个设计进行仿真,通常使用SystemC或C/C++描述的指令集仿真器(ISS)和外围硬件模块联合仿真。这样便可分析得到一些系统级的特性,如总线负荷、竞争,内存访问,处理器负荷等。这些工具可以从CoWare,ARM,Synopsys等公司得到。


虚拟系统原型工具提供单核或多核SoC平台的仿真模型,可以以数十MHz的速度仿真实际系统。系统架构师需要在这样的平台上运行大量的测试序列,并得到系统性能分析的结果,软件开发人员也可在接近实际的仿真模型中测试他们的嵌入式软件。


但现今提供的商业ESL工具没有一种可以在更早的阶段帮助工程师决定系统的基础架构,例如决定整个系统需要使用处理器的数量和种类;需要设计专门的通信机制还是使用传统的分级总线;如何将应用程序划分成多个任务,并分配到不同的处理器上运行;如何有效的探索各种可能的设计方案等。现在的SoC架构设计工具和ISS要在体系架构确定后才有用武之地。


今天的设计要比上世纪90年代末处理器加硬件模块的结构复杂许多。从最小、最简单的手持无线设备到标准的、带有语音视频处理功能的蜂窝电话,直至非常复杂的电子设备,当今的技术已经可以把多颗处理器、多片存储器、复杂的片上通信总线网络,以及由相当可观的硬件模块组成的协同工作子系统集成到一颗SoC中。同时应用软件也愈加复杂,数百万行代码组成的系统软件已是司空见惯了。因此,使用传统方法进行体系结构设计变得日益困难,这一切都使得ESL设计方法学变得越来越必要。尤其是当可配置处理器代替传统的固定指令集处理器,可能的设计方案越来越多时更是如此。


定制指令集处理器(ASIP)


基于特定应用定制指令集处理器(ASIP),这一概念在嵌入式系统设计中变得越来越重要。ASIP的设计方法学和开发工具也在学术界和IP设计领域被提及,并且许多商业的ESL工具已经提供了类似的处理器和协处理器综合工具。处理器的指令集大都采用一种中间形式进行描述。Tensilica提供的XPRES工具也提供这样的功能,由Tensilica定义的TIE语言描述的,并且工程师可以应用这种语言,进一步手动优化处理器的特定配置。


如果SoC的设计是要通过单颗CPU实现,也许再增加一些硬件加速器来提升性能,那么现在的这些工具和设计方??就已经足够了。但事情并非如此简单,如今已有很多的SoC设计使用了至少两颗处理器(一颗是做控制的RISC,另一颗是进行数据处理的DSP),并且下一代SoC设计正朝着6~10颗处理器这一方向前进。在这种情况下,目前显然缺乏设计方??和工具来支持这样的设计。


使用可配置处理器搭建MPSoC系统


当使用多颗处理器尤其是使用可配置处理器来设计SoC时,将会遇到一些关键问题,包括:


* 一个或一组应用需要使用多少颗处理器

* 应如何配置、扩展这些处理器

* 处理器采用同构方式还是异构方式

* 处理器之间如何通信?采用标准总线,还是片上网络(NoC),采用点到点方式,或是多种方式的组合。

* 如何选择正确的并行模式,是流水线还是多线程?

* 工程师如何从应用程序中提取可并行执行的任务?又怎样分解他们?

* 在可配置处理器,多处理器,新的通信架构以及内存选择等多种可供选择的技术下,如何能得到多种设计方案并进行对比?

* 在90nm以下的工艺流程上,如何从10个处理器的设计扩展到100个,甚至1000个处理器?


如今EDA供应商所提供的ESL工具还不足以解决这些问题。可配置处理器IP厂商的工具提供了以下流程帮助工程师进行设计:从已有的应用程序或算法的软件代码开始;分解成多个同步处理进程;将各个进程分别映射到已经优化过的处理器上,这些处理器之间有着理想的通信网络;迭代处理器定义和进程映射;分析处理器间通信网络的需求;设计并行控制和调度模块;涉及通信网络(包括存储器、总线、队列等);分析结果并且迭代其他可能的配置;反复迭代优化直至实现满足设计需求的MPSoC系统;实现软件/硬件的具体设计。


这种自上至下、以应用需求为驱动的设计流程,在一些MPSoC子系统的应用设计中是非常适合的。尤其是当需要一个全新的功能,或者之前的系统设计方案不足以支持新标准应用程序的开发时,这种从设计需求和应用程序的特征出发进行设计的方法,往往可以得到最优的解决方案。使用这种方法定义系统的体系架构时,通过模拟、分析,并迭代得出使用处理器的种类和数量,内存的层次结构以及通信子系统等等是非常有效的。


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条