嵌入式 > 技术百科 > 详情

多CPU系统级芯片设计的CPU内核选择

发布时间:2023-06-25 发布时间:
|

在系统级芯片(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所示,当系统执行一个典型的旗语访问代码序列时,使用LL和SC指令就可以无需对系统传输一个锁定信息而直接执行自动的Read-Modify-Write序列。 例如,在一个测试-设置旋转锁(spin-lock)中,执行LL指令时会在信号接口上产生一个读操作,这个信号接口在系统中标记为LL。然后,系统会在该地址设置一个监测器,监测该接口所在地址的状态。此时,如果另一个处理器向这个被监测的地址进行写操作,那么监测器的pass/fail标志位将被清零。而系统执行SC指令时,系统逻辑会根据监测器的状态有条件地执行存储操作,即有条件地向存储器中写入数据。接着,系统会将监测器的Pass/fail标志位返回给处理器,然后将工作交给处理器中的软件去执行。该软件执行的操作起初通常会失败,但它会不断重复执行,直到成功为止。类似地,SYNC指令的语义解释也被转移到CPU外执行,这样系统才能保证内存排序器正确操作。 如图2中范例所示,SYNC位于连接到共享缓冲的最后一个存储器和释放控制信号的存储器之间。在执行SYNC指令时,CPU向系统逻辑发送信号,表示它已经准备接收同步响应。一旦系统确保工作次序正常,就向CPU返回一个信号,接着,负载和存储内容才得以释放。如果系统是一个简单系统,那么必须按部就班地等待所有重要的转换完成;但如果系统比较复杂,就能够保持其序列中的次序,并以更快的速度进行响应。但在这两种情况下,CPU软件和硬件的运行机制都是相同的。 M4K上的处理器内部通信机制得到业界的标准开发工的全面支持。设计工程师如果用M4K内核进行多CPU设计,那么他们就可以利用M4K的这些特性在不同的处理器内核间方便快捷地进行通信,从而缩短设计时间并降低风险。 多CPU系统的应用 系统有了多个CPU内核后,能做些什么呢?以图3的NAS设计为例,其主处理器为一个MIPS6420Kc内核,使用了多处理器核后,网络存储系统就可以将许多特定功能从主处理器中转移出来。例如将一个CPU放在网络接口处,将一些较高级的功能,如滤波、L2或L3协议响应以及分段和重装等转移到本地的外围器件中去完成,从而将主处理器解放出来去执行一些更高级的协议和管理功能。 与此类似,在一个加速器内使用一个或多个M4K处理器内核,可以将一些特殊的高性能的功能从主处理器中分离出来,而同时并不影响标准可再编程器件的优势。 多CPU系统设计的另一个常见的例子是线路卡,这类线路卡可用于网络路由器和DSLAM中,也可以用于无线基站。在这些情况下使用并行CPU子系统(有时也叫微引擎)能令高度并行的应用(如L2层处理、数据包分类、滤波或标志管理)实现极好的总体性能。此时,主处理器主要用于异常处理。该方法在实现时有多种不同的形式,不但可以采用并行处理,还可以采用处理器管线或并行处理器管线来实现。 多CPU设计能够提供可扩展、可编程的特性,非常适用于将许多网络和嵌入式系统设计中的功能分离出主处理器,因而这种方法在芯片设计中逐渐得到很多应用。当然,就如今的大多数SoC设计而言,多CPU设计并非毫无问题,但我们通过采用MIPS32M4K这类优化的CPU内核,可以在相当大的程度上减少这些问题。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
光纤通道的实时数字图像存储