账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
从软硬件相辅设计到系统单芯片
系统级芯片设计专栏(7)

【作者: 柯力群,陳少傑】2003年07月05日 星期六

浏览人次:【3854】

软硬件相辅设计(Hardware-Software Codesign)这个名词最早出现于1980年代的计算器辅助设计研究领域之中,而直到了1990年代中期才开始出现了一些相关研究的重要成果。当时这门学问兴起的背景在于科学家们希望可以发展出一套流程,让一个产品能自最初的设计开发时期开始,即可透过建立系统的模型来自动生成出最后的产品。而在整个过程之中,可以大致区分为建立系统模型、系统软硬件功能区块自动分割、软硬件自动合成、软硬件共同仿真以及验证、以及最后系统雏型(prototype)之建立这几个步骤。后来几个相当著名的软硬件相辅设计系统像是COSYMA、VULCAN、LYCOS等都是于该段时间所被发表。但由于相关的研究长期被局限在特定的应用领域中(如:嵌入式系统控制器),故并未受到太大的重视。直到最近系统单芯片的掘起,使得系统的设计开发工作越来越复杂。至此,人们才又开始对有别传统设计流程的软硬件相辅设计感到兴趣。



在这篇文章之中,笔者首先会举实例就软硬件相辅设计的概念加以说明,其次会对一些早期软硬件相辅设计工具内含的想法做简单的介绍,紧接着谈到这些想法对后来软硬件相辅设计发展造成的影响以及相衍而生的功能──架构相辅设计(Function-Architecture Codesign)流程,最后会对现今SoC设计潮流之下为何这些设计方法又再度引起重视加以分析,并点出其未来所将面临之挑战。



软硬件相辅设计之重要性与流程说明


在本段中,笔者首先要以一个MPEG影音译码装置 [1],来说明软硬件相辅设计之重要性,其次再对完整的相辅设计流程加以介绍。



《图一 传统设计之MPEG影音译码装置》


《图二 经软硬件分割设计之MPEG影音译码装置》


(图一)与(图二)中分别展示了两种不同的MPEG影音译码装置实作方式,前者是以全硬件控制的方式来完成,而后者则是结合了在处理器上执行之软件程度以及硬件译码组件来完成。两者相较之下,前者的好处在于所有的设计工作都可按照传统之设计流程来进行,而后者在透过软硬件相辅设计之后却增加了以下几项优点:




  • (1)整个产品的设计变得更有弹性,透过修改软件程序的内容便可增加系统功能,甚至在整个硬件规格都已确定后仍可透过软件的更新来做某些程度之修正。



  • (2)多了一个中央处理器将可分担较不耗资源之运算工作。





利用处理器来分配排程可提高各硬件之使用率,以及减少原需硬件之面积藉以达到降低成本之目的。而由于在现实的情况中,嵌入式处理器之选择相当有限,所以在进行软硬分割时,可以把问题视为该如何来分配工作给这些处理器同时又不会使它超过负载。虽然说有的时候可以很轻易地就看出那些功能适合给软件做,那些又适合给硬件做,但也有些时候这种抉择并不明显,此时若没有良好的计算机辅助工具来帮忙,设计者可能就无法让处理器之利用率提升到最高,或是只能找到比较少的功能交给它来做。而软硬件相辅设计最初的想法,就是希望可以透过工具软件将整个系统做优化的设计,同时又可以缩短产品推出的时间,减少需要人力参与的部份以达到用最低的成本换取最高的效益的目的。



《图三 使用计算机辅助工具之软硬件相辅设计流程》


(图三)所展示的是一个完整的软硬件相辅设计流程,首先,设计者要先以系统描述语言来建立整个系统的分析模型,将这个系统用一个比较具体的方式来加以描述,比如说利用现有的硬件描述语言(VHDL、Verilog)、软件程序语言(C/C++)、或专门用以描述系统的语言(如System C)等,接着再透过系统分割演算来对整个系统进行软硬件功能区块之自动分割,以及对系统初步分割的结果评估是否满足所要求之设计限制。在软硬件自动合成的步骤中,首先要决定系统内部所将使用之通讯协议(communication protocol),其次预留系统所需之共享内存,再来就是产生出能被处理器执行之软件程序代码以及能做成ASIC之硬件语言描述档。接着透过系统验证的技术,可以建立出数学模型来对系统的行为做像是死结(dead lock)或是资源贫乏(resource starving)等排程方面的功能验证,最后透过软硬件共同仿真,设计者能对不同的系统实作方式作一比较,同时进行功能方面的除错、追踪各系统事件发生之时序等,来决定所需处理器之指令周期以及系统排程机制来建立出系统雏型(prototype)。



早期软硬件相辅设计平台介绍


在软硬件相辅设计刚被提出的前期,整体的开发概念尚不完整,每个开发平台仅会就自己的主要考虑来进行系统的实作。在这一段介绍中笔者将对几个比较具代表性的系统作介绍。



COSYMA


COSYMA(COSYthesis for eMbedded micro Achitecture )[2],是一个建立在仿真退火(simulated annealing)算法上的软硬件相辅设计平台,它是一个以软件为设计导向(software-oriented)的系统开发平台。首先,它将整个系统以纯软件的方式来完成,但以纯软件的方式来完成系统必会使得整体执行速度相当缓慢,所以接下来它会不断地从系统中撷取出几块适合用硬件来实现的部份,直到整个系统能满足原来的时间限制(timing constraint)为止。



VULCAN


相较于以软件为设计导向的开发平台,Gupta 以及 De Micheli 则提出一个以硬件为导向(hardware-oriented)的软硬件相辅设计系统VULCAN[3]、[4]。 它是以一个纯硬件实作的系统解决方案开始,不断地将其中能以软件实现的部份在能满足所有设计限制的前提之下分割出来,直到不能再分割为止。在VULCAN系统中用户必须提供系统设计之序列图(sequencing graph),运算频率限制,软件、硬件以及接口之间的成本消耗模型(cost model),再来VULCAN能依据这些信息并考虑处理器使用率、系统总线使用率、运算频率限制等在满足分割成本函数(partition cost function)的前题之下产生出最终系统硬件以及软件之设计序列图。



PACE


在COSYMA以及VULCAN之后的软硬件相辅设计系统,则开始以各种不同的角度来设计分割算法以及建立系统之软硬件分割模型。当中比较著名的像是被LYCOS(Lyngby Co-Sythesis System)系统所采用的PACE(Partitioning Algorithm with Communication Emphasis)[5]算法,PACE算法考虑的情形是当同时把两个系统组件(system component)一起放在硬件部份时,除了它们本身衍生自硬件实作上的执行运算加速之外,尚可得到因两者已可直接传递数据而减少之通讯消耗上的额外加速。PACE算法可以用在解决如何让硬件使用面积最小而所得效益又最大的问题上。



另外,为了能准确的估计各个操作数件之间数据传递的时间,Niemann[6]将所有数据的传递都分为读取(read phase)与写入(write phase)两个象限来仿真系统通讯消耗。如此对于分割后整体系统的运行时间便能做出更精准之估计。



GCLP


而在进行系统分割时,针对系统中每个运算单元究竟是该以硬件来实现以减少运行时间或是以软件来实现以减少硬件所占之面积,Kalavade与Lee则提出了GCLP(Global Critically/Local Phase)[7]算法。在做系统分割时,往往需要同时要兼顾硬件面积最小化以及缩短整体运算时间两个目的,但这两者其实是互相矛盾的,因为想要缩短运行时间势必需要更多运算单元以硬件的方式来实现,如此必将造成硬件所占整体面积的增加。相对地,如果只注重在让硬件所占之面积最小化上设计出的系统则可能会造成整体运算时间无法满足时间上的限制。GCLP算法会针对系统内的每个运算单元之重要性,对该点到底是应以面积最小化为主要考虑或是以缩短整体运算时间为主要考虑来做优化之选择。



功能──架构相辅设计


在软硬件相辅设计概念被提出来之后,Tabbara等人针对大型系统的设计规划则提出了另一种建立于其上的功能──架构相辅设计(Function-Architecture Codesgin ),[8]、[9]它是一种兼具由上而下(top-down)以及由下而上(bottom-up)特性的系统阶层设计方法,其中最主要的三个观念如下:



(1)系统功能之分解(decomposition):


在一个由上而下的设计流程中,若整个系统相当庞大的话事实上是很难在设计初期就决定好最终的特定目标架构(target architecture)为何。所以为了在系统功能与设计限制间取得最佳之平衡,在系统设计初期应先将整个系统功能先分解成不同区块,同时也把设计的限制也分别对应到不同区块内来考虑以降低设计上的复杂度。



(2)架构抽象化以及持续的推演:


在将系统功能及限制加以分析之后,接着要做的是将不同的系统功能在能满足所有的设计限制前提之下对应到不同的子系统架构中。在这个步骤的刚开始,系统架构是单以一个抽象的架构模型来表示,其次经过不断地推演来决定最终架构应该由那些硬件以及软件区块来组成。



@小标(3)目标架构探索与评估:



这块是属于由下而上设计的部份,在此将针对所选定之目标架构加以分析以及进行设计限制考虑上的评估。当然,除非可以找到适当的分析方法来对该架构进行评估,否则是无法完成系统设计之优化的。



功能──架构设计流程的步骤


在以功能──架构为基础的设计流程之中,主要分成两个步骤,首先将是系统层次的功能分解与目标架构取舍,即(图四)中的功能层(Function Level)及架构层(Architecture Level),第二个步骤则是将不同的功能分别对应到不同的架构之上,即图四中的对应层(Mapping Level)。所谓目标架构的取舍是指决定像加法器、乘法器的数量以及种类,同时也包括决定如缓存器等内存大小等这些可参数化的设计。如果整个设计并无这些可调参数的话,则在此一步骤中能做的仅剩对系统功能做优化之分解。做完系统功分解及决定系统架构后接着要做的,就是将抽象的系统功能对应到实体架构上,而传统的软硬件相辅设计主要做的工作就是在这部份,但在传统的流程之中因为在对系统进行分析时就先就将架构给限制住而少了系统功能抽象化的描述,如此将限制住其后系统软硬件分割上的弹性与取舍且仅能得到一个系统设计上的次佳解。



《图四 功能──架构相辅设计示意图》


系统单芯片SoC


进入系统单芯片的设计时代之后,传统的设计流程渐渐地受其影响而改变。当今最广为看好的一项便是以平台为基础(platform-based)的设计流程。在此流程下系统工程师主要做的事在于如何在既有的平台上增加更多的功能。此时如何选用事先经过验证的IP(Intellectual Properties)在整个系统单芯片的开发流程内扮演着关键的角色。适当地使用经过验证的IP不但可让产品推出的速度加快,同时也有助于让各种不同的功能全部整合到单一系统内,而IP本身的特性也使得系统内的功能在进行设计时可达到更高层次的抽象化以及模块化[10]。



《图五 系统单芯片架构示意图》


如(图五)所示,在一个系统单芯片的架构之下可能会被囊括的部份有:处理器核心、数字数信号处理单元、内部存储器(SRAM、ROM、Flash Memory等等)、模拟混合讯号区块,以及一些IP区块与通讯界面。显而易见的,在系统规划的初期亦须先要做好软硬件功能区块分割的动作,而受限于目前在处理器核心的选择上种类较少,故在进行软硬件切割时主要的考虑,应是如何能让这个处理器能分担最多的工作同时又不致于使它超过负载。所以在进行系统单芯片的设计规划时,一个可行的作法即是套用既有的功能──架构相辅设计的流程。



SoC设计规划流程


首先,在既有的架构平台之下,将所需新增加的不同功能需求找出来,将这些新增的功能予以抽象化以及模块化,进行系统层次之新增功能分解。其次,在功能及架构之映像的步骤中,所须进行的是传统软硬件相辅设计下的主要工作──决定系统最佳之软硬件分割,此时所做的事在于评估这些新增的功能究竟该以软件的方式来实现,交由处理器核心来进行运算,或是该透过第三者,购买或自行开发IP以硬件的方式来实现,以达到增进系统执行效能的目的。



而在此设计流程之下,所会牵扯到的问题又包括既有处理器核心能否承受新增的工作,总线的带宽在增加功能后能否满足软硬间数据交换的要求,程序内存容量是否足够,系统正常工作的排程会不会受到影响,购买新的IP是否让成本大幅上升等等问题。在系统相当复杂之时,分析其中任何一个问题都需要透过精确的计算才能得到答案。如此,并不难以想象,若想要聪明地解决这些问题,还须依赖在不久的将来能出现合适的计算机辅助设计工具来帮忙。



(作者柯力群为信息工业策进会副工程师,陈少杰为台大电子研究所暨台大系统芯片中心教授 )



<参考文献:



[1]. Lippens, P.; Nagasamy, V.; Wolf, W., "CAD challenges in multimedia computing," 1995 IEEE/ACM International Conference on Computer-Aided Design, pp. 502 -508, 1995.



[2]. J. Henkel, Th. Benner, R.Ernst, W.Ye, N.Serafimov, and G. Glawe. "COSYMA: A Software-Oriented Approach to Hardware-software Codesign," The Journal of Computer and Software Engineering, 2(3), pp. 293-314, 1994.



[3]. Rajesh Kumar Gupta, Co-synthesis of hardware and software for embedded systems, Kluwer Academic Publishers, 1995.



[4]. R.K. Gupta and G. De Micheli, "Hardware-software Cosynthesis for Digital Systems," IEEE Design and Test of Computers, pp. 29-49, Dec. 1993.



[5]. P. V. Kundsen and J. Madsen. "PACE: A Dynamic Programming Algorithm for Hardware-software Partitioning," International Workshop on Hardware-software Codesign, pp.85-92, 1996.



[6]. R. Niemann, Hardware-software Co-design for Data Flow Dominated Embedded Systems, Kluwer Academic Plublishers, 1998.



[7]. A. Kalavade, E.A. Lee, "A Global Critically/Local Phase Driven Algorithm for the Constrained Hardware/Software Partitioning Problem," Internal Workshop on Hardware/Software Codseign, pp. 42-48, 1994.



[8]. F. Balarin, M Chiodo, P. Giusto, H. Hsieh, A. Jurecska, L. Lavagno, C. Passerone, Sangiovanni-Vincentelli, E. Sentovich, K. Suzuki, and B. Tabbarra, Hardware- Software Co-design of Embedded Systems The POLIS Approach, Kluwer Academic Publishers 1997.



[9]. B. Tabbara, A. Tabbara, A. Sangiovanni-Vincentelli, Function/Architecture Optimization and Co-design of Embedded Systems, Kluwer Academic Publishers 2000.



[10]. Henry Chang, Larry Cooke, Merrill Hunt, Grant Martin, Andrew McNelly, Lee Todd, Surviving the SOC Revolution, Kluwer Academic Publishers 1999.>



相关文章
从CMGI的雄心壮志看网络触及率
comments powered by Disqus
相关讨论
  相关新闻
» 美光针对用户端和资料中心等市场 推出232层QLC NAND
» 摩尔斯微电子在台湾设立新办公室 为进军亚太写下新里程碑
» 爱德万测试与东丽签订Micro LED显示屏制造战略夥伴关系
» 格斯科技携手生态系夥伴产学合作 推出油电转纯电示范车
» Arm:因应AI永无止尽的能源需求 推动AI资料中心工作负载


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK84SAQDA2OSTACUK0
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw