综合技术
直播中

杨伟

7年用户 222经验值
私信 关注
[问答]

基于PCI Express SR-IOV的大量虚拟化功能

当今数据中心用的PCI Express最强大的一个功能是I/O虚拟化。I/O虚拟化让虚拟机直接访问I/O硬件设备,提高了企业级服务器的性能。单根I/O虚拟化(SR-IOV)技术规范拉动了市场。SR-IOV技术规范让一台PCI Express设备能在主机里呈现为多台不同的“虚拟”设备。这是通过在传统PCI Express功能(即实体功能)上添加一个新的PCI Express功能结构实现的。实体功能控制新型虚拟化功能的创建和分配。
虚拟化功能共享设备的底层硬件和PCI Express 链接(见图1)。SR-IOV技术规范的主要特点是,虚拟化功能非常轻量化,从而可以在单一设备上实现。

图1:仍用一个PCIe接口移动数据时,虚拟化功能呈现实体功能底层硬件相互独立的视图和配置。



回帖(3)

白桦

2019-7-17 17:14:02
虚拟化功能的要求
系统级芯片的架构师常常要花费很大的精力,来确定设备需要提供多少虚拟化功能。单个最小的虚拟化功能需要约1,000字节存储器才符合轻量化的定义。如果每种虚拟化功能都需要面向数据中心的特定功能,例如高级错误报告(AER)和消息信号中断(MSI/MSI-X),需要的存储器字节数会增加三四倍。系统级芯片应用逻辑需要增加逻辑才能虚拟化系统级芯片关键任务的功能,不过这不是本文讨论的内容。系统级芯片的架构师至少应该为设备预期支持的每台虚拟机提供一种虚拟化功能。
假设有一台八核四插槽服务器——该系统用超线程运行32台虚拟机(每核一台),甚至64台虚拟机(或更多)完全是可行的。有些类型的应用,例如高端网络设计或存储处理器,把系统级芯片资源进一步细分,由单个虚拟化功能来控制资源,可能会有意义。虚拟机管理器通过向每台虚拟机分配数量不等的虚拟化功能,可以向各虚拟机分配大小不同的系统级芯片容量。这样一来,这些类型的设备架构很容易就能处理成百上千个虚拟化功能!
举报

卓侨汉

2019-7-17 17:14:14
为虚拟化功能确定正确的存储方案
PCIe配置空间一般是在基于触发器的寄存器上实现的。之所以这样安排,是因为PCIe设备可有六个左右的地址译码器、各种不同的控制字节、大量错误状态或其他状态的字节,所有这些的运行都是相互独立的。
基于触发器的地址译码器把延迟降至最低,而基于触发器的控制和状态寄存器可以直接与相关逻辑连接,都会简化设计工程师的工作,有助于直接合成数据。不幸的是,随着虚拟化功能的增多,以及每种虚拟化功能的PCIe功能的增多(尤其是像AER和MSI-X这类占用寄存器多的功能),寄存器栅极的负担会非常重。要给PCIe添加几百个全性能虚拟化功能,产品上可能要增加多达二三百万个栅极。
由于SR-IOV技术规范支持在一台设备里用64,000多种虚拟化功能,PCI-SIG花很大力气来支持安装启动,而不是直接映射到触发器。只要有可能,所有虚拟化功能的控制和状态功能都与相关的实体功能统一起来。
所有PCI Express链接层控制都属于这一类,因为一种虚拟化功能不应把与其他虚拟化功能共享的链接拿走。复制的只有每种虚拟化功能(例如启用总线主控)必须单独执行的各种控制。通过对实体功能区域内所有虚拟化功能复本的连续定位,大大简化了地址译码——因此不管有多少虚拟化功能,每个区域只需要增加两个译码器,而不是每增加一种虚拟化功能就要增加一个译码器(见图2)。正因如此,一种虚拟化功能的大多数存储器与直接映射到触发器的相同时钟周期的访问时间相比会比较慢,而且延迟的时间长。

图2:因为对虚拟化功能内存区域连续定位,所以大大简化了虚拟化功能的内存地址译码。

PCI Express控制器设计工程师谨慎地把每种虚拟化功能的速度快延迟小的少量存储器(例如触发器)隔离开,巧妙地增加一些逻辑用于合并较慢的大容量存储器的数据,有些情况下则要合并实体功能的数据(见图3)。这自然会增加设备配置空间的系统读写延迟时间,不过,初始化时就完成了对那些寄存器的存取,也不会影响执行输入输出的设备的性能。

图3:较慢的大容量存储器数据与底层实体功能信息合并,启用PCI Express控制器外部虚拟化功能配置空间的存储器。

不管配置空间是触发器还是较慢的存储器,都能以相同的速度存取SR-IOV设备主内存地址空间。只有当主机先初始化了设备,处理链接层错误时,才能访问配置空间,其他时候都将暂停虚拟机操作。还要注意,SR-IOV技术规范假定虚拟机管理器会限制和截取虚拟机对每个配置空间的访问,所以在硬件上哪怕只增加几十个时钟周期,名义上都会受到整个系统配置空间的存取时间影响。
举报

李果

2019-7-17 17:14:19
片上存储器与基于CPU的存储器对比
由于配置的存取速度对设备性能不重要,PCI Express控制器的设计工程师可能会把大容量存储器置于片上静态随机存储器(SRAM)里,甚至置于芯片外的专用内存里,例如DDR内存。由于现在有高密度硅处理工艺,很小硅面积就能实现比较大的SRAM——当然这个小是与几千台虚拟设备安装基于触发器的寄存器需要数百万的栅极相比较而言的。面对虚拟化功能多如牛毛的系统级芯片设计工程师们应该为此感到振奋,不过尽管如此,还是需要相当多的实体内存专门用于SR-IOV。这在系统不需要使用设备提供的所有虚拟化功能时,或者一个硅片要用于多种不同功能的的产品时,就有不浪费内存的优势。
有些系统级芯片架构可能会用容易分割的专门内存,以便更改用途,让底层应用逻辑使用SR-IOV不需要的内存。其他架构里,尽管系统级芯片的架构可能希望考虑能否通过中断机制(见图4)把大容量存储器卸载到本地CPU。这种情况下PCI Express控制器会显示大容量存储器(实际上由本地CPU提供服务,数据或确认返回到控制器硬件)的读写请求。由于系统级芯片固件可以选择分配多少CPU内存而不必查询其他的硬件或多个端口的内存,避免了浪费,从而使RAM划分机制非常直接。由于大多数虚拟化功能可以在固件里执行,使用这种方法的设备支持PCIe功能也很灵活。通过不同的固件构建或只是通过不同的配置,硬件可以支持不同的SKU,它的虚拟化功能数量不同,可以支持或不支持AER和MSI-X。

图4:大容量传感器可以直接安装在片上存储器里,或者间接通过本地CPU提供读写请求。

小结
系统级芯片架构和PCI Express控制器设计工程师应该评估他们需要的虚拟化功能的总量,根据总量和硅面积限制决定是用触发器、SRAM,还是用基于CPU的存储器合适。新思科技提供PCI Express经过硅验证的DesignWare IP解决方案,它兼容最新的PCI-SIG和SR-IOV技术规范,能混合使用触发器、RAM和本地CPU,灵活安装数以千计的虚拟化功能。DesignWare PCI Express IP的SR-IOV实现可以配置和扩展,使设计工程师能加快把产品推向市场的速度。
来源: 电子工程专辑
举报

更多回帖

发帖
×
20
完善资料,
赚取积分