微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种基于硬件的虚拟化设计简化多核处理器的方案

一种基于硬件的虚拟化设计简化多核处理器的方案

时间:03-12 来源:互联网 点击:

也需要支持虚拟化。

图2.基于硬件的虚拟化卸下了应用处理器的队列管理负担,包括刷新队列状态,维持填充水平和阈值,分配与重新分配缓冲区,以及当应用要访问某队列时,确认其访问权限。

在一个传统架构中,处理器通过一个软件层,管理着自己对共享资源的访问(图3a)。处理器必须知道哪个资源是可用的,以及自己可以使用它们的频率。随着处理数量的增加,资源共享的复杂性也在增长。基于软件虚拟化的一个缺点在于,它为数据包存储以及接下来数据包获取的每个事务都引入了一个开销。这种开销消耗了处理器周期,为代码处理带来了复杂性。它还给虚拟化软件带来了带宽管理和满足预订保证的负担。即使通过工具实现了虚拟化代码的自动化创建,开发者仍然必须在应用交互通过虚拟化代码时,进行查错调试。


图3.(a)随着处理器数量的增长,资源共享的复杂性与开销也在增加

(b)除卸载了队列与流量管理工作以外,资源共享变得对应用透明

2.1 虚拟化增加了开销和复杂性,限制了多核SoC的使用

不过,队列和流量管理是一个相当确定性的过程,可以采用硬件实现。开发人员为某个应用配置一次队列,然后硬件机制就可以完整地卸下队列管理负载,因此将相当多的计算周期还给了应用处理器。动态改变分配的能力使得可以在运行时修改配置,以适应不断变化的工作负载。

在一个采用基于硬件的队列与同步机制的架构中,每个处理器都独立于其它处理器而运行(图3b)。通过资源的虚拟化,共享就对应用透明了。机制会分配每个处理器和每个任务的资源带宽,而每个处理器和任务运行时则像是资源唯一控制方。尽管不同应用实现队列和流量管理的粒度并不相同,但基于硬件的资源虚拟化与共享能显着提高系统的效率。

2.2 基于硬件的虚拟化层去除或加快了软件虚拟化层

虚拟化的卸载显着增加了处理器的效率。在某些情况下,基于硬件的虚拟化完全不需要基于软件的虚拟化,除了在初始配置期间。还有一些情况下,基于硬件的队列与流量管理大大加快了数据路径中虚拟化软件的速度。

2.3 基于硬件的虚拟化层还降低了设计的复杂性,加快了开发进度

因为它不需要开发人员围绕虚拟化层作实现和设计。这种方案简化了设计,加快了上市时间。

2.4 基于硬件的虚拟化层还提高了确定性

由于没有了虚拟化开销,就减少了系统中断的重要来源。于是降低了处理延时,增加了系统的响应能力。

这种方案的另一个好处是简化了调试工作。由于虚拟化和资源共享都是硬件功能,虚拟化层本身就不是开发过程的一部分。但如调试有要求,开发人员仍然拥有对队列的完全访问和控制能力。基于硬件的虚拟化层还增加了可靠性,因为硬件实现的队列和流量管理不易受很多在软件实现中容易出现的问题的影响。例如,如果基于软件的代码处理虚拟化有所折衷,则整个系统就很脆弱。采用基于硬件的实现时,就不存在有受损危险的中心化控制例程。

3 处理器卸载

所支持的队列卸载水平与实现有关。例如,有些SoC可能提供锁定机制,但并不管理队列的全部状态。理想情况下,开发人员想要一个支持不同配置的灵活系统,能直接与软件整合,并尽可能减少为适应SoC而做的软件修改。一个虚拟化机制可能很有效;但是,如果要与传统编程模型有大的变化,则移植应用代码会增加系统成本,延迟上市时间。

实现队列的方式也会影响到系统的性能。例如,队列的位置影响着哪些处理器可以访问这些队列。有些队列必须以内存类型存在,在整个芯片上分布,或者被捆绑到某个资源上。动态分配的队列使开发人员拥有某种灵活性,能恰当地将队列划分给应用和资源。对于采用多只多核SoC的系统,如拥有通过一个系统总线(如PCIe)管理队列的能力,则资源的共享不仅能在同一SoC的不同核心之间,而且能在不同SoC之间。例如,一个处理簇可以共享单个转发数据库。另外,一个多SoC系统可能拥有一个单一的深层数据包检查引擎,而运行在不同SoC上的应用必须访问该引擎。这种多芯片的资源共享能够实现更进一步的系统资源虚拟化。

多芯片架构中最大的设计挑战之一是用某种方式的分区工作,以将资源需求平均地分配给所有处理器。在基于软件的虚拟化中,这个过程可能非常耗时,为设计人员增加了负担,包括高效管理空闲内存池的挑战。另外,软件的任何修改都可能为资源需求带来变化,这就需要开发人员重新划分系统分区。非对称和对称多处理器架构都有很多这类问题。

采用基于硬件的虚拟化时,大多数分区管理任务放在硬件上,而操作系统则处理少量剩余任务。由于采用这种抽象分区,开发人员于做系统修改时,无需对系统做手工

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top