多CPU系统级芯片设计的CPU内核选择
发布时间:2008/5/28 0:00:00 访问次数:548
在系统级芯片(soc)设计中采用多个cpu已经成为一种越来越常用的设计方法。为多cpu应用而设计的处理器内核应具备几个重要特性,例如较高的性能密度、有效的处理器内部通信能力、支持调试,以及可灵活实现和可配置性。本文将针对这些与多cpu设计相关的内核性能进行讨论。
由于业界对soc器件的可编程性要求越来越高,所以采用多cpu进行soc设计变得更加普遍。对许多应用来说,单cpu很难满足人们对设备性能飞速提高的要求。而在复杂的实时系统中,采用多cpu通常会使性能分配更加容易做到,因此响应时间也更容易达到要求。同时,外围器件或专用加速器中的专用cpu也能够分担主cpu中那些比较低级的功能,从而使主cpu能够专注于高级功能的实现。
多cpu设计非常适用于今天的嵌入式系统,这主要有三个方面的原因。首先,嵌入式应用的功能通常可以灵活地进行分离,因此很容易将其功能映射到多个cpu中。有时,将嵌入式系统的功能分割映射到多个单独的cpu中甚至比映射到一个cpu中更容易。其次,许多嵌入式应用都具备明显的并行性,因而可以用一系列并行cpu来开发。例如,网络处理器(npu)设计工程师已经利用这个特性开发路由功能。最后一点,随着当今0.13和0.10微米工艺技术的出现,已经可以以较低的成本实现用多cpu方法构造soc系统。
目前,多cpu设计在很多重要市场中都有应用,例如网络路由器,大多数新一代npu都是基于多cpu设计。除了这些标准的npu以外,核心assp也开始采用多处理器构建更加优化的针对特定应用的路由解决方案。对于很多应用来说,特定目标应用的assp比标准npu效率高。一个assp可以集成合适的物理接口,根据目标应用确定存储器大小,并可以为处理器提供最佳配置。
诸如dslam和基站或高性能网络存储设备等的相关应用中,在采用这种多处理器的“分而治之”的方法来构建高性能可编程解决方案时,都实现了较好的工作性能。而且,为了节约成本并降低功耗,甚至终端用户设备都开始采用多cpu来获取最佳性能密度。例如,在设计机顶盒、住宅网关,甚至智能移动设备时也可采用多cpu方法。需要说明的是,这里的多cpu并不是单用一个risc处理器和一个dsp,而是采用多个rsic处理器和多个dsp。
如何获得优秀的cpu内核
一个适用于多cpu设计的处理器内核,必须具备以下几个重要的特性:
首先最重要的是它必须能够提供较高的性能密度。多cpu设计的目的就在于在每平方毫米内,或在单位功耗内获得尽可能高的总性能。因此,理想的效果是在最小的空间内或最低的功耗内得到最佳的mips性能。
其次,它必须能够在处理器内实现有效通信。因为尽管许多多cpu设计都是软件相关的,但在设计过程中仍然十分需要进行处理器内的通信。如果处理器内核不提供一种支持处理器内的通信机制,那么这种内部通信的功能就必须由soc设计工程师来开发。这不仅非常耗时,而且也从其它方面增加了设计的复杂性。而如果在处理器内核处提供对内部通信的支持将简化soc设计工程师的工作,从而也缩短开发周期。
通常,多cpu设计在调试时比较困难,因为这些处理器内核既相互独立又相互影响,而且在调试多cpusoc时,设计工程师必须看到各处理器之间相互影响的情况。这就要求在cpu内置一种功能,使多cpu能够同时进行调试,并且充分地相互作用。否则,多cpusoc的调试工作将十分艰难,甚至根本不可能对所有cpu进行全面调试。同时,调试工具必须支持这些cpu,这样,设计工程师才能利用cpu内嵌的调试功能进行调试。
此外,在判断一个处理器内核是否适用于多cpu设计时,还需考虑配置和实现该cpu内核时的灵活度。在进行一个多cpu设计时,应尽量将产品尺寸和功耗降至最低,同时必须尽力提高其性能。设计工程师只有采用高度可配置和高度可综合的cpu,才能设计出尺寸、功耗和频率都满足特定应用要求的soc产品。而对于一个固化的或不可配置的cpu内核,则不可能构造出满足各种要求的产品。
基于这些思想,mipstechnologies公司最近研制出一款专门针对多cpu设计的cpu内核--mips32m4k。该内核可达到很高的性能,而且尺寸和功耗都很低。同时,该内核还具备可综合性,并内带一个快速响应的存储器系统。
处理器间通信
在多cpu设计中,处理器之间必须能够相互通信,以便控制对共享资源的访问。但在如今构建的很多多cpu设计中,存储器相关性都是通过纯软件方式管理的,因此不能利用常规的高速缓存相关机制通信。
m4k中,通过外部执行mips结构中的负载链接(loadlinked,ll)指令和条件存储(sc)指令来支持多cpu旗语(semaphore),并以此使得系统能够对各cpu保持必要的监控。同时,为实现对系统的最大控制和灵活性,sync指令动作也被移出到信号接口。通过执行该指令,可以为系统提供一个内存排序器(memorybarrier),以保证分类指令语义正确。
如图1所示,当系统执行一个典型的旗
在系统级芯片(soc)设计中采用多个cpu已经成为一种越来越常用的设计方法。为多cpu应用而设计的处理器内核应具备几个重要特性,例如较高的性能密度、有效的处理器内部通信能力、支持调试,以及可灵活实现和可配置性。本文将针对这些与多cpu设计相关的内核性能进行讨论。
由于业界对soc器件的可编程性要求越来越高,所以采用多cpu进行soc设计变得更加普遍。对许多应用来说,单cpu很难满足人们对设备性能飞速提高的要求。而在复杂的实时系统中,采用多cpu通常会使性能分配更加容易做到,因此响应时间也更容易达到要求。同时,外围器件或专用加速器中的专用cpu也能够分担主cpu中那些比较低级的功能,从而使主cpu能够专注于高级功能的实现。
多cpu设计非常适用于今天的嵌入式系统,这主要有三个方面的原因。首先,嵌入式应用的功能通常可以灵活地进行分离,因此很容易将其功能映射到多个cpu中。有时,将嵌入式系统的功能分割映射到多个单独的cpu中甚至比映射到一个cpu中更容易。其次,许多嵌入式应用都具备明显的并行性,因而可以用一系列并行cpu来开发。例如,网络处理器(npu)设计工程师已经利用这个特性开发路由功能。最后一点,随着当今0.13和0.10微米工艺技术的出现,已经可以以较低的成本实现用多cpu方法构造soc系统。
目前,多cpu设计在很多重要市场中都有应用,例如网络路由器,大多数新一代npu都是基于多cpu设计。除了这些标准的npu以外,核心assp也开始采用多处理器构建更加优化的针对特定应用的路由解决方案。对于很多应用来说,特定目标应用的assp比标准npu效率高。一个assp可以集成合适的物理接口,根据目标应用确定存储器大小,并可以为处理器提供最佳配置。
诸如dslam和基站或高性能网络存储设备等的相关应用中,在采用这种多处理器的“分而治之”的方法来构建高性能可编程解决方案时,都实现了较好的工作性能。而且,为了节约成本并降低功耗,甚至终端用户设备都开始采用多cpu来获取最佳性能密度。例如,在设计机顶盒、住宅网关,甚至智能移动设备时也可采用多cpu方法。需要说明的是,这里的多cpu并不是单用一个risc处理器和一个dsp,而是采用多个rsic处理器和多个dsp。
如何获得优秀的cpu内核
一个适用于多cpu设计的处理器内核,必须具备以下几个重要的特性:
首先最重要的是它必须能够提供较高的性能密度。多cpu设计的目的就在于在每平方毫米内,或在单位功耗内获得尽可能高的总性能。因此,理想的效果是在最小的空间内或最低的功耗内得到最佳的mips性能。
其次,它必须能够在处理器内实现有效通信。因为尽管许多多cpu设计都是软件相关的,但在设计过程中仍然十分需要进行处理器内的通信。如果处理器内核不提供一种支持处理器内的通信机制,那么这种内部通信的功能就必须由soc设计工程师来开发。这不仅非常耗时,而且也从其它方面增加了设计的复杂性。而如果在处理器内核处提供对内部通信的支持将简化soc设计工程师的工作,从而也缩短开发周期。
通常,多cpu设计在调试时比较困难,因为这些处理器内核既相互独立又相互影响,而且在调试多cpusoc时,设计工程师必须看到各处理器之间相互影响的情况。这就要求在cpu内置一种功能,使多cpu能够同时进行调试,并且充分地相互作用。否则,多cpusoc的调试工作将十分艰难,甚至根本不可能对所有cpu进行全面调试。同时,调试工具必须支持这些cpu,这样,设计工程师才能利用cpu内嵌的调试功能进行调试。
此外,在判断一个处理器内核是否适用于多cpu设计时,还需考虑配置和实现该cpu内核时的灵活度。在进行一个多cpu设计时,应尽量将产品尺寸和功耗降至最低,同时必须尽力提高其性能。设计工程师只有采用高度可配置和高度可综合的cpu,才能设计出尺寸、功耗和频率都满足特定应用要求的soc产品。而对于一个固化的或不可配置的cpu内核,则不可能构造出满足各种要求的产品。
基于这些思想,mipstechnologies公司最近研制出一款专门针对多cpu设计的cpu内核--mips32m4k。该内核可达到很高的性能,而且尺寸和功耗都很低。同时,该内核还具备可综合性,并内带一个快速响应的存储器系统。
处理器间通信
在多cpu设计中,处理器之间必须能够相互通信,以便控制对共享资源的访问。但在如今构建的很多多cpu设计中,存储器相关性都是通过纯软件方式管理的,因此不能利用常规的高速缓存相关机制通信。
m4k中,通过外部执行mips结构中的负载链接(loadlinked,ll)指令和条件存储(sc)指令来支持多cpu旗语(semaphore),并以此使得系统能够对各cpu保持必要的监控。同时,为实现对系统的最大控制和灵活性,sync指令动作也被移出到信号接口。通过执行该指令,可以为系统提供一个内存排序器(memorybarrier),以保证分类指令语义正确。
如图1所示,当系统执行一个典型的旗