PCIe SR-IOV:爲什麼需要SR-IOV

PCIe SR-IOV:爲什麼需要SR-IOV

1. SR-IOV的最終目標

終極目標:提高硬件資源利用率。

2 發展歷程

2.1 原始狀態v1.0

在這裏插入圖片描述
上圖展示了在沒有引入任何虛擬化技術時,一個PCIe系統的狀態。它主要有以下組件構成:

  • 處理器:可以是通用處理器、嵌入式處理器、專用處理器等等。
  • 內存
  • PCIe Root Complex(RC):一個平臺系統下,可以包含一個或多個RC。
  • PCIe Root Port(RP):每個RC可以支持一個或多個RP。每個RP代表了一個獨立的層次結構。SR-IOV中的SR(single root)就是指只有一個RP的場景。
  • PCIe Switch:用於PCIe擴展,即允許連接更多的PCIe設備或PCIe Switch。
  • PCIe Device:PCIe設備終端,可以是網卡、存儲等等。
  • System Image:操作系統。

既然是原始狀態,那麼也就意味着當前系統狀態的硬件資源利用率存在可優化的空間,因此衍生出了進化版v2.0

2.2 進化版v2.0

在這裏插入圖片描述

爲了在不改變硬件的情況下提升資源利用率,在硬件資源和System Image之間增加一個虛擬化中間層(Virtualization Intermediary,簡稱VI)。與此同時,System Image的數量也增加了(此時的SI可以看做是運行在服務器上的多個虛擬機)。

這種系統架構下,VI負責管理所有硬件並將硬件虛擬化之後提供給SI。每個SI可以使用的硬件資源可以根據負載或者用戶需求進行調整。這種架構可以應對許多使用場景,但是由於每一筆I/O操作都需要VI層的參與,導致性能明顯下降,因此在I/O性能要求較高的場景下很難滿足需求。

基於當前架構的侷限性,PCI-SIG開發出了SR-IOV技術。

2.3 進化版v3.0 —— SR-IOV

在這裏插入圖片描述
SR-IOV的優點:

  • 主要數據傳輸階段(DMA、內存空間訪問、中斷處理等)不再需要VI的參與,明顯提升了性能。
  • 通過SR-PCIM(Single Root PCI Manager)對SR-IOV資源進行標準化配置和管理。
  • 只需要比較少的硬件投入,就可以在一個設備中添加大量的I/O Function支持。
  • 能夠將SR-IOV與其他I/O虛擬化技術集成在一起,從而創建健壯、完整的I/O虛擬化解決方案。相關的虛擬化技術包括:Address Translation Services (ATS)、Address Translation and Protection Table (ATPT)技術、interrupt remapping technologies。

SR-IOV架構中新增的組件:

  • Single Root PCI Manager(SR-PCIM)

軟件實現。負責SR-IOV capability的配置、PF和VF的管理、錯誤事件的處理、設備的統籌管理(例如電源管理、熱插拔等)。

  • Optional Translation Agent(TA)

硬件實現或者軟硬件聯合實現。負責將PCIe事務中的地址轉化成實際的物理地址。TA中可能包含Address Translation Cache,用於加速地址轉換表的訪問。TA可能支持Address Translation Services(ATS),ATS能夠使PCIe Function在開啓DMA之前預先獲取目標內存的地址轉換關係。如果PCIe事務表明他們包含了轉換之後的地址,那麼就可以省略address translation的查表過程,所以,ATS能提升性能。

  • Optional Address Translation and Protection Table(ATPT)

ATPT就是存放地址轉換關係的表,供TA訪問。

  • Optional Address Translation Cache(ATC)

本質就是Cache,能夠加速Address Translation的查表效率。

  • Optional Access Control Services(ACS)

ACS能夠決定一個TLP能夠routed normally,blocked或者redirected。在SR-IOV系統中,還能防止屬於VI或者不同SI的設備Function之間直接通信。(這個不太理解,以後再細研究)

  • Physical Function(PF)

PF就是支持SR-IOV capability,並且能被SR-PCIM、VI或者SI訪問的PCIe Function。

  • Virtual Function(VF)

VF是一個輕量級的PCIe Function,能夠被SI直接訪問。
VF中與主要數據傳輸有關的資源可以被VI直接訪問。配置資源(Configuration resources)應該只允許被受信任的軟件訪問,例如VI,SR-PCIM。

參考資料:《Single Root I/O Virtualization and Sharing Specification Revision 1.1》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章