TW202240415A - PCIe裝置及其操作方法 - Google Patents
PCIe裝置及其操作方法 Download PDFInfo
- Publication number
- TW202240415A TW202240415A TW111114067A TW111114067A TW202240415A TW 202240415 A TW202240415 A TW 202240415A TW 111114067 A TW111114067 A TW 111114067A TW 111114067 A TW111114067 A TW 111114067A TW 202240415 A TW202240415 A TW 202240415A
- Authority
- TW
- Taiwan
- Prior art keywords
- function
- physical
- physical function
- pcie
- functions
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4045—Coupling between buses using bus bridges where the bus bridge performs an extender function
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
- Circuit For Audible Band Transducer (AREA)
Abstract
一種透過PCIe鏈路與主機執行通訊的快速週邊組件互連(PCIe)裝置包括第一物理功能、複數個第二物理功能和功能模式控制器。第一物理功能管理PCIe鏈路並從主機接收功能模式控制資訊。可以根據各個操作模式來致能或失能複數個第二物理功能中的每一個。基於功能模式控制資訊,功能模式控制器將複數個第二物理功能的操作模式設置成活動模式和非活動模式中的一個。
Description
本揭示內容關於一種電子裝置,並且更具體地關於一種快速週邊組件互連(PCIe)裝置及其操作方法。
快速週邊組件互連(Peripheral Component Interconnect Express, PCIe)裝置可以定義用於將輸入/輸出裝置連接到主機裝置的匯流排協定。快速PCI(PCIe)具有由PCI標準定義的編程構思,並且包括被定義為高速序列介面的物理通訊層。
儲存裝置可以回應於諸如電腦或智慧型手機等主機裝置的控制而儲存資料。儲存裝置可以包括儲存資料的記憶體裝置和控制記憶體裝置的記憶體控制器。記憶體裝置可以被劃分為揮發性記憶體裝置和非揮發性記憶體裝置。
揮發性記憶體裝置只有被供電時才可以保持資料,並且在沒有電力供應的情况下可能丟失所儲存的資料。揮發性記憶體裝置的類型可以包括靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)等。
非揮發性記憶體裝置即使沒有電力供應也不會丟失資料。非揮發性記憶體裝置的類型可以包括唯讀記憶體(ROM)、可編程ROM(PROM)、電可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)和快閃記憶體。
各個實施例關於一種能夠降低包括PCIe裝置的計算系統的操作成本的PCIe裝置及其操作方法。
根據實施例,一種快速週邊組件互連(PCIe)裝置可以包括:第一物理功能,管理PCIe鏈路並從主機接收功能模式控制資訊;複數個第二物理功能,根據各自的操作模式分別被致能或失能;以及功能模式控制器,基於功能模式控制資訊來設置複數個第二物理功能的操作模式,操作模式中的每一個被設置為活動模式和非活動模式中的一個。
根據實施例,一種操作快速週邊組件互連(PCIe)裝置的方法,該PCIe裝置包括第一物理功能和複數個第二物理功能,第一物理功能管理耦接到主機的PCIe鏈路,該方法可以包括:透過第一物理功能從主機接收功能模式控制資訊;並且基於功能模式控制資訊來設置複數個第二物理功能中的每一個的操作模式,每個操作模式分別被設置為活動模式和非活動模式中的一個。
相關申請案的交叉引用:
本申請案請求於2021年4月13日提交的申請號為10-2021-0048073的韓國專利申請案的優先權,該韓國專利申請案透過引用整體併入本文。
對根據本說明書中揭示的構思的實施例的示例的具體結構或功能的描述僅為了描述根據該構思的實施例的示例而示出,並且根據該構思的實施例的示例可以透過各種形式來執行,但是這些描述不限於在本說明書中描述的實施例的示例。
圖1示出了根據本揭示內容的實施例的計算系統100的示例。
參照圖1,計算系統100可以包括主機1000和快速週邊組件互連(PCIe)裝置2000。計算系統100可以是:例如,手機、智慧型手機、MP3播放器、筆記型電腦、桌上型電腦、游戲機、電視機、平板PC或車載式資訊娛樂系統。
主機1000可以包括處理器1100、記憶體1200、輸入/輸出(I/O)管理器1300和匯流排1400。主機1000的組件可以透過匯流排1400來交換訊號和資料。
處理器1100可以包括用於處理資料和控制計算系統100的組件的操作的電路、介面或程式代碼。例如,處理器1100可以包括CPU(諸如ARMTM處理器)、微控制器或特定應用積體電路(application specific integrated circuit, ASIC)。
記憶體1200可以包括SRAM或DRAM,SRAM或DRAM儲存計算系統100的操作所需的資料、命令或程式代碼。然而,處理器1100可以包括非揮發性記憶體。根據實施例,記憶體1200可以包括可以操作以運行一個或複數個作業系統(OS)和虛擬機(VM)的程式代碼以及運行用於管理虛擬機的虛擬化中介(VI)的程式代碼。
處理器1100可以透過驅動記憶體1200中儲存的程式代碼來運行一個或複數個作業系統和虛擬機。另外,處理器1100可以運行用於管理虛擬機的虛擬化中介。透過這種方式,處理器1100可以控制計算系統100的組件的操作。
I/O管理器1300可以是將輸入/輸出裝置連接到主機1000的配接器。例如,I/O管理器1300可以包括:通用序列匯流排(USB)配接器、週邊組件互連(PCI)或快速PCI(PCIe)配接器、小型電腦系統介面(SCSI)配接器、序列先進技術附接(SATA)配接器、高速非揮發性記憶體(NVMe)配接器或者它們的組合。I/O管理器1300可以包括可操作以與連接到計算系統100的裝置進行資訊通訊的電路、介面或代碼。I/O管理器1300可以包括一個或複數個標準化匯流排以及一個或複數個匯流排控制器。因此,I/O管理器1300可以感知連接到匯流排1400的裝置,列出連接到匯流排1400的裝置,並對連接到匯流排1400的各個裝置執行資源分配和資源釋放(deallocation)。換句話說, I/O管理器1300可以操作以管理透過匯流排1400進行的通訊。例如,I/O管理器1300可以是PCI或PCIe系統,並且包括PCIe根聯合體(root complex, RC)、一個或複數個PCIe交換機或者橋接器。例如,I/O管理器1300可以由虛擬化中介控制。
PCI可以定義用於將I/O裝置連接到處理器1100的匯流排協定。PCIe可以具有由PCI標準定義的編程構思,並且將物理通訊層定義為高速序列介面。
PCIe裝置2000可以使用PCIe與主機1000通訊。例如,PCIe裝置2000可以被實施為諸如網路和儲存裝置的各種I/O裝置類型。
根據實施例,PCIe裝置2000可以被定義為端點或包括端點的裝置。
端點可以指可以如下類型的功能:其可以是PCIe交易的請求方或完成方。端點可以被分類為傳統端點、快速PCI(PCIe)端點或根聯合體集成(root complex integrated, RCiEP)端點。
傳統端點可以是具有類型00h配置空間標頭(header)的功能。傳統端點可以作為完成方來支持配置請求。傳統端點可以作為完成方來支持I/O請求。傳統端點可以接受對80h和84h位置中的任一個或兩者的I/O請求,而不管相應端點的I/O解碼配置如何。傳統端點可以支持I/O請求。傳統端點不應發布鎖定請求。傳統端點可以實施擴展的配置空間能力。作為記憶體交易的請求方進行操作的傳統端點可能不需要生成4GB或更多的位址。當請求中斷資源時,可能需要傳統端點來支持訊息訊號中斷(Message Signaled Interrupt, MSI)或MSI-X或兩者。當實施MSI時,傳統端點可以支持具有MSI功能結構的32位元或64位元訊息位址版本。對於請求記憶體資源的基位址暫存器,傳統端點可以支持32位元的位址指定。傳統端點可以出現在源自於根聯合體的複數個層級結構域中的一個內。
PCIe端點可以是具有類型00h配置空間標頭的功能。PCIe端點可以作為完成方來支持配置請求。PCIe端點不應依賴於透過基位址暫存器(base address registers, BAR)聲明(claimed)的對I/O資源的作業系統分配。PCIe端點可以不生成I/O請求。PCIe端點不可以作為完成方來支持鎖定請求或作為請求方來生成鎖定請求。可以編寫PCIe兼容的軟體驅動器和應用程式,以防止在存取PCIe端點時使用鎖定語義(lock semantic)。作為記憶體交易的請求方進行操作的PCIe端點可以生成超過4GB的位址。當請求中斷資源時,可能需要PCIe端點來支持訊息訊號中斷(MSI)、MSI-X或兩者。當實施MSI時,PCIe端點可以支持具有MSI功能結構的64位元訊息位址版本。由基位址暫存器請求的最小位址範圍可以是128個字節。PCIe端點可以出現在源自於根聯合體的層級結構域中的一個中。
RCiEP可以在包含根埠的根聯合體的內部邏輯上實施。RCiEP可以是具有類型00h配置空間標頭的功能。RCiEP可以作為完成方來支持配置請求。RCiEP可以不請求透過基位址暫存器聲明的I/O資源。RCiEP可以不生成I/O請求。RCiEP不可以作為完成方來支持鎖定請求或作為請求方來生成鎖定請求。可以編寫PCIe兼容的軟體驅動器和應用程式,以防止在存取RCiEP時使用鎖定語義。作為記憶體交易的請求方進行操作的RCiEP可以生成位址,該位址可以等於或大於可以由作為完成方的主機1000處理的位址。當請求中斷資源時,可能需要RCiEP來支持MSI、MSI-X或兩者。當實施MSI時,RCiEP可以支持具有MSI功能結構的32位元或64位元訊息位址版本。針對請求記憶體資源的基位址暫存器,RCiEP可以支持32位元的位址指定。RCiEP可以在PCIe擴展能力中實施鏈路能力、鏈路狀態、鏈路控制、鏈路能力2、鏈路狀態2和鏈路控制2暫存器。RCiEP可以不實施活動狀態電源管理。RCiEP可以不獨立於整個根聯合體進行熱插拔。RCiEP可以不出現在由根聯合體暴露的層級結構域中。RCiEP可以不出現在交換機中。
根據實施例,PCIe裝置2000可以生成至少一個虛擬裝置。例如,PCIe裝置2000可以儲存用於生成至少一個虛擬裝置的程式代碼。
根據實施例,PCIe裝置2000可以回應於從主機1000接收到的虛擬化請求來生成物理功能(physical function, PF)裝置或虛擬功能(virtual function, VF)裝置。例如,物理功能裝置可以被設置成虛擬化中介被授予存取權限的虛擬裝置。虛擬功能裝置可以被設置成分配給主機1000的虛擬機的虛擬裝置。
圖2示出了根據本揭示內容的實施例的計算系統的另一示例(計算系統200)。
根據實施例,圖2示出了PCIe可用的通用平臺配置的示例。
參照圖2,計算系統200可以包括:處理器1100、記憶體1200、複數個系統映像210-1~210-n、虛擬化中介220、根聯合體230、交換機240和複數個PCIe裝置2000-1~2000-3。
圖2所示的處理器1100和記憶體1200可以分別表示圖1所示的處理器1100和記憶體1200。根據實施例,處理器1100、記憶體1200、複數個系統映像210-1~210-n、虛擬化中介220、根聯合體230和交換機240可以被包括在圖1的主機1000中。根據實施例,複數個PCIe裝置2000-1~2000-3可以表示圖1的PCIe裝置2000。
系統映像210-1~210-n可以指在分配有PCIe功能的虛擬系統中運行的軟體組件。根據實施例,系統映像210-1~210-n可以被稱為虛擬機。系統映像210-1~210-n可以是用於運行應用或可靠服務的軟體,例如,作業系統。例如,系統映像210-1~210-n中的每一個可以分別被配置為客戶OS、共享或非共享I/O裝置驅動器等。為了在不進行硬體修改的情况下增加有效的硬體資源利用率,可以在計算系統200中運行複數個系統映像210-1~210-n。
根據實施例,PCIe功能可以指用於提供PCIe裝置2000-1~2000-3中包括的物理資源的獨立操作單元。在本揭示內容中,PCIe功能和「功能」可以指相同的含義。
虛擬化中介220可以是支持一個或複數個系統映像210-1~210-n的軟體組件。根據實施例,虛擬化中介220可以被稱為管理程式(hypervisor)或虛擬機監視器(virtual machine monitor, VMM)。虛擬化中介220可以插設在諸如處理器1100和記憶體1200的硬體與系統映像210-1~210-n之間。計算系統200中的I/O操作(入站或出站)可以被虛擬化中介220攔截和處理。虛擬化中介220可以利用其自身的虛擬系統對系統映像210-1~210-n呈現抽象的硬體資源(abstract hardware resource)。可用於系統映像210-1~210-n中的每一個的實際硬體資源可以根據工作負載或客戶特定的策略而變化。
根聯合體230可以表示將處理器1100/記憶體1200子系統連接到I/O的I/O層級結構的根。根據實施例,根聯合體230可以被實施為如圖1所示的I/O管理器1300的一種配置。
計算系統200可以包括至少一個根聯合體230。另外,每個根聯合體230可以包括一個或複數個根埠,根埠231-1和根埠232-2。根埠231-1和根埠232-2中的每一個可以示出單獨的層級結構。根聯合體230可以透過根埠231-1和根埠232-2與交換機240或PCIe裝置2000-1~2000-3通訊。
透過根聯合體230在複數個層級結構域之間路由對等(peer-to-peer)交易的能力可以是可選的。層級結構域可以由單個端點組成,或由包含一個或複數個交換機和端點的子層級結構組成。
當在層級結構域之間路由對等交易時,根聯合體230可以將資料包拆分成更小的資料包。例如,根聯合體230可以將具有256字節的有效載荷的單個資料包拆分成兩個資料包,每個資料包具有128字節的有效載荷。然而,支持供應商定義訊息的對等路由的根聯合體230可以不將供應商定義訊息拆分為更小的資料包,除了在128字節的邊界處之外(即,除了最後的資料包之外的所有產生的資料包必須是128個字節的整數倍)。
根聯合體230可以作為請求方來支持配置請求的生成。根聯合體230可以作為請求方來支持I/O請求的生成。
根聯合體230不可以作為完成方來支持鎖定語義。根聯合體230可以作為請求方來支持鎖定請求的生成。
交換機240可以被定義為各個虛擬PCI到PCI橋的邏輯組件。交換機240可以與PCIe裝置2000-2和PCIe裝置2000-3通訊。
交換機240可以作為具有兩個或更多個邏輯PCI到PCI橋的配置軟體來出現。
交換機240可以使用PCI橋機制來轉發交易。交換機240可以在所有埠集之間轉發所有類型的交易層資料包(TLP)。交換機240可以支持鎖定請求。
交換機240可以不被允許將資料包拆分成更小的資料包。
當在相同的虛擬通道上發生競爭時,可以使用輪詢或加權輪詢來實施交換機240的入口埠之間的仲裁。
端點可以不作為表示交換機下游埠的虛擬PCI到PCI橋的對等方出現在交換機240的內部匯流排上的配置軟體中。
圖3示出了根據本揭示內容的實施例的計算系統的另一示例(計算系統300)。
根據實施例,圖3示出了單根輸入/輸出虛擬化(Single Root input/output Virtualization, SR-IOV)配置平臺的示例。
單根I/O虛擬化(Single Root I/O Virtualization, SR-IOV)可以使系統映像210-1~210-n能夠在虛擬環境中共享PCIe硬體資源。根據實施例,可以開發SR-IOV以提高PCIe裝置2000-1~2000-3的I/O能力並且直接連接系統映像210-1~210-n與PCIe裝置2000-1~2000-3。因此,在包含SR-IOV能力的計算系統300中,一個或複數個PCIe裝置2000-1~2000-3或者PCIe功能可以被分配給系統映像210-1~210-n中的一個。根據實施例,SR-IOV能力可以具有如下規範:單個PCIe裝置(2000-1~2000-3)可以在單個根埠下作為系統映像(210-1~210-n)上的單獨的PCI裝置2000-1~2000-3而出現。根據實施例,支持SR-IOV能力的PCIe裝置2000-1~2000-3可以在系統映像210-1~210-n上顯示複數個實例,即PCIe功能。另外,在應用了SR-IOV能力的計算系統300中,根聯合體230可以在沒有虛擬化中介220的情况下將系統映像210-1~210-n直接連接到PCIe功能。因此,透過使用SR-IOV能力,根聯合體230可以不經由虛擬化中介220而將主機1000的系統映像210-1~210-n直接連接到PCIe功能。
參照圖3,計算系統300可以包括:處理器1100、記憶體1200、複數個系統映像210-1~210-n、虛擬化中介220、根聯合體230、交換機240、單根PCI管理器(single root PCI manager, SR-PCIM)310、轉換代理(translation agent, TA)320、位址轉換和保護表(address translation and protection table, ATPT)330以及複數個PCIe裝置2000-1~2000-3。
相對於圖2的計算系統200,圖3所示的計算系統300可以進一步包括:單根PCI管理器310、轉換代理320以及位址轉換和保護表330。
如圖3所示的複數個PCI裝置2000-1~2000-3可以表示圖2的複數個PCIe裝置2000-1~2000-3。另外,PCIe裝置2000-1~2000-3中的每一個可以包括:位址轉換快取(address translation cache, ATC)341、物理功能(PF0)342和複數個虛擬功能(VF0_1~VF0_N)343。為了便於說明,圖3示出了一個物理功能。然而,根據實施例,可以存在複數個物理功能。
單根PCI管理器310可以包括負責SR-IOV能力的配置、物理功能342和虛擬功能343的管理、相關聯的錯誤事件的處理、以及諸如電源管理和熱插拔服務的總體裝置控制的軟體。根據實施例,單根PCI管理器310可以在邏輯上位於虛擬化中介220中。
轉換代理320可以是負責將PCIe交易內的位址轉換成相關聯的平臺物理位址的硬體或硬體和軟體的組合。轉換代理320可以包括位址轉換快取以加速轉換表存取。另外,轉換代理320可以支持位址轉換服務(address translation services, ATS),位址轉換服務(ATS)使PCIe功能能夠在DMA存取相關聯的記憶體之前獲得位址轉換。在SR-IOV實施方案中,轉換代理320的使用可以是可選的。
位址轉換和保護表330可以包含由轉換代理320存取以處理PCIe請求(DMA讀取、DMA寫入或中斷請求)的位址轉換的集合。在PCIe中,中斷可以被視為記憶體寫入操作。透過PCIe交易內包含的請求方標識符和位址的組合,可以將中斷路由到對相關聯的I/O功能透明的任意目標(例如,處理器核心)。DMA讀取請求和寫入請求可以透過路由ID和PCIe交易內包含的位址的組合進行轉換。位址轉換和保護表330的使用在SR-IOV實施方案中可以是可選的。
位址轉換快取341可以存在於平臺內的兩個位置。例如,位址轉換快取341可以集成在轉換代理320之內、位於RC中或者位於PCIe裝置2000-1~2000-3中。在PCIe裝置2000-1~2000-3中,可以使用ATS技術來向位址轉換快取341輸入資料。指示包含轉換後的位址的PCIe交易可以在不損害與位址轉換和保護表330相關的優勢的情况下繞過平臺的位址轉換快取341以提高性能。位址轉換快取341的使用在SR-IOV實施方案中可以是可選的。
物理功能342可以是支持SR-IOV能力並存取單根PCI管理器310、虛擬化中介220或系統映像210-1~210-n的PCIe功能。
虛擬功能343可以是可以直接存取系統映像210-1~210-n的輕量級PCIe功能。虛擬功能343可以作為物理功能342的虛擬實例來操作。因此,從系統映像210-1~210-n的視角來看,虛擬功能343可以作為物理功能342的實例出現。可以在系統映像210-1~210-n中使用與功能的主要資料移動相關聯的資源。虛擬功能343可以由不同的系統映像210-1~210-n逐次地共享。例如,虛擬功能343可以被分配給一個系統映像(210-1~210-n),可以被重設,並且然後可以被分配給另一系統映像(210-1~210-n)。虛擬功能343可以選擇性地從一個物理功能342遷移到另一物理功能。與物理功能342相關聯的所有虛擬功能343可以具有與物理功能342相同的裝置類型(例如,相同的網路裝置類型或相同的儲存裝置類型)。
圖4示出了根據本揭示內容的實施例的多功能裝置。
圖4所示的PCIe裝置400可以表示以下中的一個:圖1所示的PCIe裝置2000以及圖2和圖3所示的PCIe裝置2000-1~2000-3。
參照圖4,PCIe裝置400可以包括複數個功能Function 0~Function N。根據實施例,複數個功能Function 0~Function N可以是物理功能。當PCIe裝置400中包括的所有功能Function 0~Function N都是物理功能時,相應的PCIe裝置400可以被定義為多功能裝置。
根據實施例,複數個功能Function 0~Function N可以共享通用PCIe鏈路。由所有功能Function 0~Function N共享的鏈路和PCIe功能可以透過第零功能Function0來管理。
根據實施例,複數個功能Function 0~Function N可以支持替換路由標識符(Alternative Routing Identifier,ARI)能力。另外,複數個替換路由標識符(ARI)能力可以使用透過PCI枚舉過程(PCI enumeration process)捕獲的單個匯流排編號。
根據實施例,複數個功能Function 0~Function N可以支持ATS能力。複數個功能Function 0~Function N可以包括位址轉換快取,以用於管理ATS獲得的轉換後的位址。
根據實施例,複數個功能Function 0~Function N中的每一個可以包括特有的物理資源,該特有的物理資源包括單獨的配置空間、基位址暫存器(BAR)等。物理資源可以指PCIe裝置400的物理資源中的一些。換句話說,複數個功能Function 0~Function N可以將物理資源提供給所分配的系統映像。
複數個功能Function 0~Function N可以分別被分配給系統映像。為了防止一個系統映像影響另一系統映像,所有PCIe配置操作都可以被虛擬化中介攔截和處理。
根據實施例,複數個功能Function 0~Function N中的每一個的配置空間可以包括類型0配置空間標頭。例如,類型0配置空間標頭可以包括標頭類型暫存器(header type register)和中斷引腳暫存器(interrupt pin register)。
標頭類型暫存器可以被包括在配置空間的類型0配置空間標頭中。標頭類型暫存器可以識別複數個功能是否可以被包括在預定義的第二部分(從配置空間的10h字節開始)和PCIe裝置400的布局中。例如,可以包括標頭類型暫存器的多功能裝置字段。當多功能裝置字段被設置時,PCIe裝置400可以包括複數個功能Function 0~Function N。軟體可以探測除第零功能Function 0之外的其他功能Function 1~Function N。
中斷引腳暫存器可以是唯讀暫存器,其識別功能使用的傳統中斷訊息。有效值可以是01h、02h、03h和04h,01h、02h、03h和04h分別映射到INTA、INTB、INTC和INTD的傳統中斷訊息。值00h可以表示該功能不使用傳統中斷訊息。值05h至值FFh可以被保留。快速PCI可以針對單功能裝置定義一個傳統中斷訊息並針對多功能裝置定義多達四個傳統中斷訊息。針對單功能裝置,只可以使用INTA。多功能裝置的所有功能Function 0~Function N都可以使用INTx訊息。當裝置實施單個傳統中斷訊息時,其應該是INTA。當實施兩個傳統中斷訊息時,其應該是INTA和INTB。針對多功能裝置,所有功能Function 0~Function N可以使用相同的INTx,或者每個都有自身的INTx(最多四個),或其組合。
根據實施例,所有功能Function 0~Function N的配置空間可以被包括在PCIe能力結構中。例如,PCIe能力結構可以包括:PCIe能力暫存器、裝置能力暫存器、裝置控制暫存器、裝置狀態暫存器、鏈路能力暫存器、鏈路控制暫存器、鏈路狀態暫存器、插槽能力暫存器、插槽控制暫存器、插槽狀態暫存器、根控制暫存器、根能力暫存器、根狀態暫存器、裝置能力2暫存器、裝置控制2暫存器、裝置狀態2暫存器、鏈路能力2暫存器、鏈路控制2暫存器、鏈路狀態2暫存器、插槽能力2暫存器、插槽控制2暫存器、插槽狀態2暫存器、根控制器2暫存器、根能力2暫存器、根狀態2暫存器等。
PCIe能力暫存器可以識別PCIe裝置功能類型和相關聯的能力。根據實施例,PCIe能力暫存器可以是16位元暫存器。PCIe能力暫存器的位元3:0可以是能力版本字段。能力版本字段可以具有唯讀屬性。更具體地,能力版本字段可以指示PCI-SIG定義的快速PCI功能結構版本編號。PCIe能力暫存器的位元7:4可以是裝置/埠類型字段。裝置/埠類型字段可以具有唯讀屬性。更具體地,裝置/埠類型字段可以指示功能的特定類型。在裝置/埠類型字段中,多功能裝置的功能可以指不同的類型。PCIe能力暫存器的位元8可以是插槽實施字段。插槽實施字段可以具有硬體初始化(HwInit)屬性。當設置插槽實施字段時,其可以表示連接到該埠的鏈路被連接到插槽。PCIe能力暫存器的位元13:9可以是中斷訊息編號字段(interrupt message number field)。中斷訊息編號字段可以具有唯讀屬性。中斷訊息編號字段可以指示將哪個MSI/MSI-X向量用於與具有功能結構的狀態位元相關聯地生成的中斷訊息。針對MSI,中斷訊息數量字段的值可以指示基訊息資料與所生成的中斷訊息之間的偏移量。針對MSI-X,中斷訊息編號字段的值可以指示用於生成中斷訊息的MSI-X表條目。當實施MSI和MSI-X二者時,雖然軟體一次只能致能一種機制,但可以允許MSI和MSI-X使用不同的向量。例如,當致能MSI-X時,中斷訊息編號字段的值可以指示MSI-X向量。當致能MSI或者MSI和MSI-X都沒有被致能時,中斷訊息編號字段的值可以指示MSI向量。當同時致能MSI和MSI-X時,中斷訊息編號字段中的值可以不定義。PCIe能力暫存器的位元14可以具有唯讀屬性,並且可以不被定義。
裝置能力暫存器可以識別PCIe裝置功能特定的能力。根據實施例,裝置能力暫存器可以是32位元暫存器。裝置能力暫存器的位元2:0可以是最大有效載荷大小支持(Max_Payload_Size Supported)字段。最大有效載荷大小支持字段可以具有唯讀屬性。最大有效載荷大小支持字段可以指示支持TLP的最大有效載荷大小。對於該字段,多功能裝置的功能Function 0~Function N可以具有不同的值。裝置能力暫存器的位元4:3可以是不明功能支持字段(phantom function supported field)。不明功能支持字段可以具有唯讀屬性。不明功能支持字段可以指示支持對未聲明的功能編號的使用,以透過將未聲明的功能編號與標籤標識符邏輯地相組合來擴展所允許的未完成交易的數量。
裝置控制暫存器可以控制PCIe裝置特定的參數。根據實施例,裝置控制暫存器可以是16位元暫存器。裝置控制暫存器的位元0可以是可校正錯誤報告致能字段。可校正錯誤報告致能字段可以結合其他位元來控制發送ERR_COR訊息。針對多功能裝置,可校正錯誤報告致能字段可以控制每個功能(Function 0~Function N)的錯誤報告。可校正錯誤報告致能字段可以具有讀取寫入(read-write, RW)屬性。裝置控制暫存器的位元1可以是非嚴重(non-fatal)可校正錯誤報告致能字段。非嚴重可校正錯誤報告致能字段可以結合其他位元來控制發送ERR_NONFATAL訊息。針對多功能裝置,從每個功能(Function 0~Function N)的視角來看,非嚴重錯誤報告致能字段可以控制每個功能(Function 0~Function N)的錯誤報告。非嚴重錯誤報告致能字段可以具有讀取寫入屬性。裝置控制暫存器的位元2可以是嚴重可校正錯誤報告致能字段。嚴重可校正錯誤報告致能字段可以結合其他位元來控制發送ERR_FATAL訊息。針對多功能裝置,從每個功能(Function 0~Function N)的視角來看,嚴重可校正錯誤報告致能字段可以控制每個功能(Function 0~Function N)的錯誤報告。嚴重可校正錯誤報告致能字段可以具有讀取寫入屬性。裝置控制暫存器的位元3可以是不被支持請求報告致能字段(unsupported request reporting enable field)。不被支持請求報告致能字段可以結合其他位元透過發送錯誤訊息來控制不被支持請求錯誤的訊號發送(signaling)。針對多功能裝置,從每個功能(Function 0~Function N)的視角來看,不被支持請求報告致能字段可以控制每個功能(Function 0~Function N)的錯誤報告。不被支持請求報告致能字段可以具有讀取寫入屬性。裝置控制暫存器的位元7:5可以是最大有效載荷大小(Max_Payload_Size)字段。最大有效載荷大小字段可以設置功能的最大TLP有效載荷大小。作為接收器,功能不可以生成超過設置值的TLP。作為發送器,允許值可以由功能能力暫存器的最大有效載荷大小支持字段來指示。多功能裝置的所有功能Function 0~Function N可以在最大有效載荷大小字段中具有不同的值。針對替換路由標識符(Alternative Routing Identifier, ARI)裝置,最大有效載荷大小字段可以僅由第零功能Function 0中的設置來確定。其他功能中的設置可以總是返回為每個功能軟體編程的任何值,否則可以被組件忽略。最大有效載荷大小字段可以具有讀取寫入屬性。
裝置狀態暫存器可以提供關於PCIe裝置(功能)特定的參數的資訊。根據實施例,裝置狀態暫存器可以是16位元暫存器。裝置狀態暫存器的位元0可以是可校正錯誤檢測字段。可校正錯誤檢測字段可以指示檢測到可校正的錯誤。不管裝置控制暫存器中是否致能了錯誤報告,都可以在可校正錯誤檢測字段中記錄可校正的錯誤。針對多功能裝置,每個功能(Function 0~Function N)可以指示由每個功能(Function 0~Function N)感知的錯誤狀態。可校正錯誤檢測字段可以具有寫入1至清除(Write-1-to-Clear,RW1C)狀態屬性。裝置狀態暫存器的位元1可以是非嚴重可校正錯誤檢測字段。非嚴重可校正錯誤檢測字段可以指示檢測到非嚴重的錯誤。不管在裝置控制暫存器中是否致能了錯誤報告,都可以在非嚴重錯誤檢測字段中記錄非嚴重的錯誤。針對多功能裝置,每個功能(Function 0~Function N)可以指示由每個功能(Function 0~Function N)感知的錯誤狀態。非嚴重錯誤檢測字段可以具有RW1C屬性。裝置狀態暫存器的位元2可以是嚴重錯誤檢測字段。嚴重錯誤檢測字段可以指示檢測到嚴重錯誤的狀態。不管裝置控制暫存器中是否致能了錯誤報告,都可以在嚴重錯誤檢測字段中記錄嚴重錯誤。針對多功能裝置,每個功能(Function 0~Function N)可以指示由每個功能(Function 0~Function N)感知的錯誤狀態。嚴重錯誤檢測字段可以具有RW1C屬性。裝置狀態暫存器的位元3可以是不被支持請求字段。不被支持請求檢測字段可以指示功能已經接收到不被支持的請求。不管裝置控制暫存器中是否致能了錯誤報告,都可以在不被支持請求檢測字段中記錄錯誤。針對多功能裝置,每個功能(Function 0~Function N)可以指示由每個功能(Function 0~Function N)感知的錯誤狀態。不被支持請求檢測字段可以具有RW1C屬性。裝置狀態暫存器的位元6是緊急省電檢測字段,當功能Function 0~Function N進入緊急省電狀態時,可以設置該緊急省電檢測字段。每當存在進入緊急省電狀態的條件時,功能Function 0~Function N就可以保持緊急省電狀態。耦接到上游埠的多功能裝置可以在支持緊急省電狀態的所有功能Function 0~Function N中設置緊急省電檢測字段。緊急省電檢測字段可以具有RW1C屬性。
鏈路能力暫存器可以識別PCIe鏈路特定的能力。對於多功能裝置,所有功能Function 0~Function N的鏈路能力暫存器的字段值可以相同。
根據實施例,複數個功能Function 0~Function N中的每一個的配置空間可以包括:訊息訊號中斷(Message Signaled Interrupt, MSI)能力結構、輔助快速PCI擴展能力、資料鏈路特徵擴展能力和ACS擴展能力。所有生成中斷的功能Function 0~Function N都可以實施MSI或MSI-X。
另外,除了上述暫存器之外,複數個功能Function 0~Function N中的每一個的配置空間還可以包括與多功能裝置相關聯的各個暫存器。
根據實施例,複數個功能Function 0~Function N可以執行錯誤處理操作。例如,複數個功能Function 0~Function N可以使用高級錯誤報告(advanced error reporting, AER)來執行錯誤處理操作。例如,當檢測到錯誤時,複數個功能 Function 0~Function N可以透過如下操作來執行錯誤處理操作:透過完成狀態字段來指示錯誤狀態,向根聯合體發送錯誤訊息或者進行錯誤轉發。
根據實施例,複數個功能Function 0~Function N可以執行功能級重設(function level reset, FLR)操作。例如,複數個功能Function 0~Function N可以在主機的請求下執行功能級重設(FLR)操作。
功能級重設機制可以使軟體能夠以功能級顆粒度來使端點硬體靜止(quiesce)和重設端點硬體。
功能級重設可以應用於功能Function 0~Function N中的每一個。只有目標功能(Function 0~Function N)可以受到功能級重設操作的影響。鏈路狀態可以不受功能級重設的影響。
功能級重設可以修改功能Function 0~Function N的狀態。
例如,除了黏性類型暫存器(ROS、RWS、RW1CS)、HwInit類型定義暫存器以及其他此類字段或暫存器之外,功能暫存器和功能特定的狀態機可以被設置為功能暫存器和功能特定的狀態機的初始值。
另外,功能級重設可以修改諸如以下各項的功能狀態:裝置能力暫存器的捕獲的插槽電力限制值、裝置能力暫存器的捕獲的插槽電力限制尺度、裝置控制暫存器的Max_Payload_Size、鏈路控制暫存器的活動狀態電源管理(Active State Power Management, ASPM)控制、鏈路控制暫存器的讀取完成邊界(Read Completion Boundary,RCB)、鏈路控制暫存器的通用時脈配置、鏈路控制暫存器的擴展同步、鏈路控制暫存器的致能時脈電源管理、鏈路控制暫存器的硬體自主寬度失能、鏈路控制2暫存器的硬體自主速度失能、鏈路狀態2暫存器的鏈路均衡8.0 GT/s請求、16.0 GT/s狀態暫存器的鏈路均衡請求16.0 GT/s、輔助快速PCI擴展能力結構的通道均衡控制暫存器、物理層16.0 GT/s擴展能力結構的16.0 GT/s通道均衡控制暫存器、所有暫存器的虛擬通道能力結構、多功能虛擬通道能力結構的所有暫存器、資料鏈路特徵擴展能力結構的所有暫存器、物理層16.0 GT/s擴展能力結構的所有暫存器、以及接收器擴展能力結構的通道裕度的所有暫存器。
可以清除使功能Function 0~Function N對快速PCI發起請求的控制,包括匯流排主控致能、MSI中斷致能等,從而有效地使功能Function 0~Function N在鏈路上變得靜止。
與鏈路功能相關聯的埠狀態機(包括物理和資料鏈路層中的埠狀態機)可以不被FLR重設,並且VC0可以在FLR之後保持初始化。由功能Function 0~Function N生效(assert)的任意未完成的INTx中斷可以透過在FLR開始之前發送相應的Deassert_INTx訊息而被失效(deassert)。
當將FLR初始化到PCIe裝置400的功能Function 0~Function N時,如果另一功能繼續使匹配的INTx生效,則將不會傳輸Deassert_INTx訊息。
在透過將1b寫入到初始化功能級重設位元來將FLR初始化之後,功能Function 0~Function N必須在100 ms內完成FLR。如果軟體在交易暫停位元為1b時將FLR初始化,則軟體不可以將功能Function 0~Function N初始化,直到允許充足的時間來實現任意相關聯的完成,或者達到合理的確定性(即,任意剩餘的完成將不會實現)。因此,計算系統可以允許與完成超時的預FLR值所設置的一樣多的時間。如果在發布FLR時功能Function 0~Function N上的完成超時被失能,則延遲可以取決於系統,但是可以為100 ms或更長。當實施功能就緒狀態時,計算系統可以在接收到指示功能Function 0~Function N完全準備好進行配置的功能級重設訊息之後立即向功能Function 0~Function N發布配置請求。
在收到FLR時,功能Function 0~Function N可以清除所有交易狀態(包括交易暫停),或者可以將完成超時設置成其默認值,以使所有暫停交易在FLR運行期間超時。在FLR完成時,可以清除交易暫停位元。
因為FLR修改功能狀態,所以FLR的行為可以使用如下的一組標準來規範:當應用於功能Function 0~Function N時,示出功能Function 0~Function N具有修改後的狀態。必須使用功能特定的知識來應用以下標準,以評估功能Function 0~Function N回應於FLR的行為。
- 功能(Function 0~Function N)在由相應功能(Function 0~Function N)控制的任意外部介面上可以不顯現透過活動主機初始化的配接器。終止外部介面上的活動所需的步驟可以例外。例如,對於需要由主機系統進行配接器初始化或與活動主機系統進行交互的查詢,網路配接器可以不對其回應,但是網路配接器可以被允許執行被設計成在沒有主機初始化或交互的情况下執行的動作。當網路配接器包括在相同的外部網路介面上運行的複數個功能Function 0~Function N時,該規則可以僅影響與由FLR重設的特定功能相關聯的那些方面。
- 功能Function 0~Function N可以不在其自身內保持軟體可讀取狀態,該軟體可讀取狀態可包括與功能Function 0~Function N的任意先前使用相關聯的機密資訊。分配給功能Function 0~Function N的主要主機記憶體(Main host memory)可以不被功能Function 0~Function N修改。例如,具有可由主機軟體直接或間接讀取的內部記憶體的功能(Function 0~Function N)可以清除或隨機化該記憶體。
- 功能(Function 0~Function N)可以返回狀態,使得功能(Function 0~Function N)的快速PCI介面的正常配置可以使其可由通常與功能Function 0~Function N相關聯的驅動器使用。
當將FLR初始化時,目標功能Function 0~Function N必須按如下行動:
- 功能Function 0~Function N可以返回針對使FLR操作初始化的配置寫入的完成,並且然後可以將FLR初始化。
- 當正在進行FLR時,在請求到達的情况下,可以允許將該請求靜默地丟棄而不將其記錄或用訊號通知為錯誤。另外,如果完成到達,則可以允許將該完成作為意外完成來處理或靜默地丟棄而不將其記錄或用訊號通知為錯誤。
當需要功能(Function 0~Function N)在時間限制內完成FLR操作時,後續的功能特定的初始化序列可能需要額外的時間。當需要額外的時間時,當在該時間限制之後接收到配置請求時,功能(Function 0~Function N)可以返回配置請求重試狀態(configuration request retry status, CRS)完成狀態。在功能(Function 0~Function N)以除了CRS之外的完成狀態來回應配置請求之後,可以不允許返回CRS,直到其被再次重設。
圖5示出了根據本揭示內容的實施例的具有單根輸入/輸出虛擬化(SR-IOV)能力的PCIe裝置500的示例。
圖5所示的PCIe裝置500可以表示以下中的一個:圖1所示的PCIe裝置2000以及圖2和圖3所示的PCIe裝置2000-1~2000-3。
例如,圖5可以表示應用SR-IOV能力的PCIe裝置500。
參照圖5,PCIe裝置500可以包括物理功能PF0和與物理功能PF0相關聯的複數個虛擬功能VF0_1~VF0_N。虛擬功能VF0_1可以指與物理功能PF0相關聯的第一虛擬功能。透過相同的方式,虛擬功能VF0_N可以指與物理功能PF0相關聯的第N虛擬功能。根據實施例,上面參照圖4描述的配置空間、暫存器設置處理、錯誤處理操作和功能級重設操作可以應用於物理功能PF0。
物理功能PF0可以支持SR-IOV能力。根據實施例,在重設操作之後,物理功能PF0可以失能SR-IOV能力。為了發現物理功能PF0和複數個虛擬功能VF0_1~VF0_N所支持的頁面大小,可以讀取支持頁面大小配置字段。
複數個虛擬功能VF0_1~VF0_N可以與物理功能PF0共享複數個公共配置空間字段。共享可以減少實施複數個虛擬功能VF0_1~VF0_N的硬體資源需求。例如,複數個虛擬功能VF0_1~VF0_N可以使用與物理功能PF0相同的配置機制和標頭類型。另外,複數個虛擬功能VF0_1~VF0_N可以共享VF BAR集。另外,複數個虛擬功能VF0_1~VF0_N可以共享控制對VF儲存空間的存取的VF儲存空間致能(memory space enable, MSE)位元。換句話說,當VF MSE位元被清除時,可以失能分配給所有虛擬功能VF0_1~VF0_N的儲存映射空間。
SR-IOV能力中包括的初始VF(InitialVFs)和總VF(TotalVFs)字段可以用於發現可以與物理功能PF0相關聯的虛擬功能的最大數量。例如,當PCIe裝置500不支持VF遷移時,TotalVFs和InitialVFs可以包含相同的值。另一方面,當PCIe裝置500支持VF遷移時,如果讀取TotalVFs,則物理功能PF0可以返回可以分配給物理功能PF0的虛擬功能的數量。另外,當讀取InitialVFs時,物理功能PF0可以返回分配給物理功能PF0的虛擬功能的初始數量。
物理功能PF0和複數個虛擬功能VF0_1~VF0_N可以被分配唯一的路由ID。可以使用物理功能PF0的路由ID和物理功能PF0的SR-IOV能力中包括的字段來確定每個虛擬功能(VF0_1~VF0_N)的路由ID。
所有PCIe和SR-IOV配置存取都可以透過諸如虛擬化中介或單根PCI管理器的受信任的軟體組件來執行。
根據實施例,物理功能PF0和複數個虛擬功能VF0_1~VF0_N可以包含包括配置空間的物理資源。每個虛擬功能(VF0_1~VF0_N)可以包含傳遞功能特定的服務所需的非共享物理資源集合,例如,諸如工作隊列、資料緩衝器等資源。這些資源可以由系統映像直接存取而無需虛擬化中介或單根PCI管理器的干預。
一個或複數個虛擬功能VF0_1~VF0_N可以被分配給每個系統映像。物理功能PF0和複數個虛擬功能VF0_1~VF0_N可以包括ATC。
根據實施例,物理功能PF0可以用於管理裝置特定的功能,例如,對每個虛擬功能(VF0_1~VF0_N)的內部資源分配以及對諸如PCIe鏈路或功能特定的鏈路(例如,網路或儲存鏈路)的共享資源的VF仲裁等。
根據實施例,物理功能PF0的配置空間可以包括SR-IOV擴展能力。例如,SR-IOV擴展能力可以包括:SR-IOV擴展能力標頭暫存器、SR-IOV能力暫存器、SR-IOV控制暫存器、SR-IOV狀態暫存器、InitialVFs暫存器、TotalVFs暫存器、NumVFs暫存器、功能依賴鏈路暫存器、第一VF偏移暫存器、VF步長暫存器、VF裝置ID暫存器、支持頁面大小暫存器、系統頁面大小暫存器、VF BAR0、VF BAR1、……、VF BAR5暫存器以及VF遷移狀態陣列偏移暫存器。
SR-IVO控制暫存器可以包括虛擬功能(VF)致能字段。
虛擬功能致能可以管理複數個虛擬功能VF0_1~VF0_N針對相關聯的物理功能PF0的分配。當設置虛擬功能致能時,可以在快速PCI架構中存取與物理功能PF0相關聯的複數個虛擬功能VF0_1~VF0_N。當設置虛擬功能致能時,虛擬功能VF0_1~VF0_N可以遵循快速PCI端點功能的規則來回應和發布快速PCI交易。
當清除虛擬功能致能時,複數個虛擬功能VF0_1~VF0_N可以被失能並且在快速PCI架構中可能不可見。對這些虛擬功能VF0_1~VF0_N的請求可以收到不被支持請求(Unsupported Request, UR)並且可以不發布快速PCI交易。
為了讓組件執行內部初始化,在將虛擬功能致能位元從0改變為1之後,可以不允許系統向由相應的致能位元所致能的虛擬功能VF0_1~VF0_N發布請求,直到滿足以下中的一項:至少已經經過100毫秒;已經從物理功能PF0接收到帶有虛擬功能致能的原因代碼的FRS訊息;以及至少已經經過VF致能時間。VF致能時間可以是與虛擬功能VF0_1~VF0_N相關聯的就緒時間報告能力中的重設時間值,或者是由系統軟體/韌體確定的值。
在根聯合體和/或系統軟體可以確定無法返回針對有效配置請求的成功完成狀態的虛擬功能(VF0_1~VF0_N)損壞之前,根聯合體和/或系統軟體可以在設置VF致能位元之後允許至少1.0秒。在設置VF致能位元之後,當由相應的VF致能位元致能的虛擬功能VF0_1~VF0_N尚未準備提供針對有效配置請求的成功完成狀態時,可以允許虛擬功能VF0_1~VF0_N在最多1.0秒的限制內將CRS狀態返回到配置請求。在物理功能PF0發送具有VF致能的原因代碼的FRS訊息之後,不允許與相應的物理功能PF0相關聯的虛擬功能VF0_1~VF0_N在沒有介入VF失能或其他有效重設條件的情况下返回CRS。在成功完成返回到任意請求之後,可以不允許虛擬功能VF0_1~VF0_N在沒有介入VF失能或其他有效重設條件的情况下返回CRS。
因為虛擬功能VF0_1~VF0_N沒有MSE位元(虛擬功能VF0_1~VF0_N中的MSE由物理功能PF0中的SR-IOV能力中的VF MSE位元控制),所以軟體可以在虛擬功能(VF0_1~VF0_N)準備處理MSE位元之前發布儲存請求。因此,在滿足以下條件中的至少一項之前,不能向虛擬功能VF0_1~VF0_N發布儲存請求:
- 虛擬功能(VF0_1~VF0_N)已經成功回應了配置請求(不返回CRS)。
- 在向VF發布FLR之後,滿足以下中的至少一項:(1)自發布FLR以來至少已經經過1.0秒;(2)虛擬功能VF0_1~VF0_N支持功能就緒狀態,並且在發布FLR之後,已經接收到來自虛擬功能VF0_1~VF0_N的具有FLR完成的原因代碼的FRS訊息;或者(3)自發布FLR以來至少已經經過FLR時間。FLR時間可以是與虛擬功能VF0_1~VF0_N相關聯的就緒時間報告能力中的FLR時間值,或者是由系統軟體/韌體確定的值。
- 在物理功能PF0中設置VF致能之後,以下中的至少一項為真:(1)自設置VF致能以來至少已經經過1.0秒;(2)物理功能PF0支持功能就緒狀態,並且在設置VF致能之後,已經接收到來自物理功能PF0的具有虛擬功能致能的原因代碼的FRS訊息;或者(3)在設置虛擬功能致能之後,已經經過最小虛擬功能致能時間。虛擬功能致能時間可以是與虛擬功能VF0_1~VF0_N相關聯的就緒時間報告能力中的重設時間值,或者是由系統軟體/韌體確定的值。
在向虛擬功能VF0_1~VF0_N發布FLR之後或者在相關聯的物理功能PF0中在SR-IOV能力中設置VF致能之後,可以允許虛擬功能VF0_1~VF0_N靜默地丟棄儲存請求,直到虛擬功能VF0_1~VF0_N對任意請求成功地進行回應(在不返回CRS的情况下)為止 。
清除VF致能可以有效地破壞虛擬功能VF0_1~VF0_N。設置VF致能可以有效地創建虛擬功能VF0_1~VF0_N。在VF致能先前被清除之後設置VF致能可以產生一組新的虛擬功能VF0_1~VF0_N。當物理功能PF0處於D0功率狀態時,該新的虛擬功能VF0_1~VF0_N可以處於D0未初始化(D0
uninitialized)狀態。如果物理功能PF0處於低功率狀態,則行為可以不被定義。
當清除VF致能時,支持FRS的物理功能PF0可以發送具有VF失能的FRS原因的FRS訊息,以指示該操作何時完成。當存在由物理功能PF0或與物理功能PF0相關聯的任意虛擬功能VF0_1~VF0_N發布的未完成的非遞送請求(non-posted request)時,可以不允許物理功能PF0發送該訊息。FRS訊息只可以在這些請求完成(或超時)之後發送。
當軟體清除VF致能時,SR-IOV擴展能力或VF遷移狀態陣列中的字段都不可以存取,直到:
- 在清除VF致能之後至少經過1.0秒,或者
- 物理功能PF0支持FRS,並且在清除VF致能之後,已經從物理功能PF0接收到具有VF失能的原因代碼的FRS訊息。
InitialVFs暫存器可以向SR-PCIM指示與物理功能PF0初始相關聯的虛擬功能VF0_1~VF0_N的數量。
InitialVFs暫存器可以指示可以與物理功能PF0相關聯的虛擬功能VF0_1~VF0_N的最大數量。
NumVFs暫存器可以控制可見的虛擬功能VF0_1~VF0_N的數量。
虛擬功能基位址暫存器可以定義虛擬功能VF0_1~VF0_N的基位址暫存器(BAR)。當虛擬功能基位址暫存器寫入實際位址值,並且設置VF致能和VF MSE時,BAR可以映射NumVFs個BAR。
根據實施例,物理功能PF0和虛擬功能VF0_1~VF0_N的配置空間可以包括類型0配置空間標頭、PCIe能力暫存器、PCI標準能力暫存器、PCIe擴展能力暫存器等。
根據實施例,虛擬功能VF0_1~VF0_N的配置空間中包括的暫存器字段值可以從屬於或獨立於物理功能PF0的配置空間中包括的暫存器字段值。例如,當虛擬功能VF0_1~VF0_N的配置空間中包括的暫存器字段值從屬於物理功能PF0的配置空間中包括的暫存器字段值時,虛擬功能VF0_1~VF0_N的配置空間中包括的暫存器字段值可以具有值0(零)。虛擬功能VF0_1~VF0_N可以根據相關聯的物理功能PF0的暫存器字段值來執行配置操作。
根據實施例,複數個虛擬功能VF0_1~VF0_N可以執行錯誤處理操作。例如,當物理功能PF0使用高級錯誤報告來處理錯誤時,虛擬功能VF0_1~VF0_N也可以使用高級錯誤報告來處理錯誤。
根據實施例,複數個虛擬功能VF0_1~VF0_N可以執行重設操作。
例如,虛擬功能VF0_1~VF0_N可以在以下情况中的一個發生時完成內部初始化:
- 虛擬功能(VF0_1~VF0_N)已經成功回應了配置請求(未返回CRS)。
- 在向虛擬功能VF0_1~VF0_N發布功能級重設之後,以下中的至少一項為真:(1)至少已經經過1.0秒;(2)已經接收到來自虛擬功能VF0_1~VF0_N的具有FLR完成的原因代碼的FRS訊息;或者(3)已經經過最小FLR時間。功能級重設時間可以是與虛擬功能VF0_1~VF0_N相關聯的就緒時間報告能力中的功能級重設時間值,或者是由系統軟體/韌體確定的值。
-在物理功能PF0中設置VF致能之後,以下中的至少一項可以為真:(1)自設置VF致能以來至少經過1.0秒;或者(2)在設置VF致能之後,已經接收到來自物理功能PF0的具有VF致能的原因代碼的FRS訊息。
針對上面參照圖4描述的多功能裝置,可能無法控制物理功能的數量,並且當需要客戶OS終止操作時可能不隱藏物理功能。類似地,針對參照圖5描述的虛擬功能,為了控制虛擬功能的數量,可能需要失能所有虛擬功能。另外,因為虛擬功能的大部分配置空間都受其所從屬的物理功能的影響,因此可能無法針對每個虛擬功能執行PCIe配置設置。因此,需要兼具物理功能和虛擬功能的優勢的PCIe裝置。
圖6示出了根據本揭示內容的實施例的PCIe裝置600。
PCIe裝置600可以透過PCIe鏈路與主機1000通訊。
參照圖6,PCIe裝置600可以包括物理功能(PF)0 610、物理功能1 620-1至物理功能n 620-n和功能模式控制器630。PCIe裝置600可以表示圖1所示的PCIe裝置2000或者可以是圖2和圖3所示的PCIe裝置2000-1~2000-3中的一個。物理功能0 610可以具有與上面參照圖4描述的物理功能PF0以及上面參照圖5描述的物理功能PF0相同的配置。在本說明書中,物理功能0 610可以被稱為「第一物理功能」。另外,在本說明書中,物理功能1 620-1至物理功能n 620-n可以被稱為「複數個第二物理功能」。
物理功能0 610和物理功能1 620-1至物理功能n 620-n可以是PCIe功能。物理功能0 610和物理功能1 620-1至物理功能n 620-n中的每一個可以被分配給主機1000中包括的複數個系統映像中的一個。複數個系統映像可以存取物理功能610和物理功能620-1~620-n的分配的物理功能。
根據實施例,物理功能0 610和物理功能1 620-1至物理功能n 620-n中的每一個可以是用於提供PCIe裝置600中包括的物理資源的獨立操作單元。物理功能0 610和物理功能1 620-1至物理功能n 620-n中的每一個可以被分配給主機1000中包括的複數個物理資源中的一些。物理功能0 610和物理功能1 620-1至物理功能n 620-n中的每一個可以將PCIe裝置600和主機1000的相應物理資源提供給所分配的系統映像中的每一個。
物理功能0 610可以是必須包括在PCIe裝置600中的功能。根據實施例,物理功能0 610可以是無法被失能的功能。
根據實施例,物理功能0 610可以管理耦接到主機1000的PCIe鏈路。PCIe鏈路可以是由物理功能0 610和物理功能1 620-1至物理功能n 620-n共享的通用鏈路。物理功能0 610和物理功能1 620-1至物理功能n 620-n中的每一個可以透過PCIe鏈路向所分配的系統映像傳輸資料、資料包等並且從所分配的系統映像接收資料、資料包等。
另外,物理功能0 610可以管理PCIe功能。PCIe功能可以是由物理功能0 610和物理功能1 620-1至物理功能n 620-n共享的通用功能。
根據實施例,物理功能0 610可以從主機1000接收功能模式控制資訊MODE_INFO。物理功能0 610可以向功能模式控制器630提供功能模式控制資訊MODE_INFO。
功能模式控制資訊MODE_INFO可以包括用於設置物理功能1 620-1至物理功能n 620-n的操作模式的資訊。根據實施例,功能模式控制資訊MODE_INFO可以包括以下中的至少一個:物理功能1 620-1至物理功能n 620-n之中的待致能的物理功能的數量,待致能的物理功能的標識資訊,物理功能1 620-1至物理功能n 620-n之中待失能的物理功能的數量,待失能的物理功能的標識資訊。例如,當要致能複數個物理功能時,功能模式控制資訊MODE_INFO可以包括物理功能1 620-1至物理功能n 620-n之中的待致能的物理功能的數量和待致能的物理功能的標識資訊。在另一示例中,當要失能複數個物理功能時,功能模式控制資訊MODE_INFO可以包括物理功能1 620-1至物理功能n 620-n之中的待失能的物理功能的數量和待失能的物理功能的標識資訊。在另一示例中,當要致能一個物理功能時,功能模式控制資訊MODE_INFO可以包括物理功能1 620-1至物理功能n 620-n之中的待致能的物理功能的標識資訊。在另一示例中,當要失能一個物理功能時,功能模式控制資訊MODE_INFO可以包括物理功能1 620-1至物理功能n 620-n之中的待失能的物理功能的標識資訊。根據實施例,物理功能的標識資訊可以包括匯流排編號、裝置編號和功能編號中的至少一個。
根據示例,物理功能0 610可以使用以下中的一項來從主機1000接收功能模式控制資訊MODE_INFO:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(System Manager bus, SMbus)上的管理組件傳輸協定(Management Component Transport Protocol, MCTP)和PCIe上的MCTP。
根據實施例,供應商定義訊息可以允許擴展快速PCI訊息傳遞能力。例如,供應商定義訊息可以包括用於發送訊息的請求方ID字段、用於接收訊息的接收方ID字段和供應商定義的字段。接收方ID可以包括匯流排編號、裝置編號和功能編號中的至少一個。例如,主機1000可以透過供應商定義訊息的供應商定義的字段來向物理功能0 610提供功能模式控制資訊MODE_INFO。請求方ID可以包括主機1000或系統映像的標識資訊。接收方ID可以接收其接收訊息的PCIe裝置600或者物理功能的標識資訊。
根據實施例,供應商特定能力可以是PCI兼容配置空間的能力結構。供應商特定能力可以允許裝置供應商將能力機制用於供應商特定的資訊。供應商特定能力暫存器可以包括能力ID字段、下一個能力指針字段、能力長度字段和供應商特定資訊字段。能力ID字段可以指示PCIe能力結構。能力ID字段可以提供指示供應商特定能力結構的能力ID。下一個能力指針字段可以指示下一個PCI能力結構的偏移。當不存在能力的鏈接列表時,下一個能力指針字段可以包括00h。能力長度字段可以提供能力結構中包括的字節的數量。供應商特定資訊字段可以根據供應商而改變。因此,可以根據使用者將供應商特定資訊字段設置為各種值。例如,主機1000可以透過供應商特定能力的特定資訊字段來向物理功能0 610提供功能模式控制資訊MODE_INFO。
根據實施例,由使用者定義的新PCIe能力可以包括提供資訊的裝置的標識資訊、接收資訊的裝置的標識資訊以及包括資訊的字段。
根據實施例,物理功能1 620-1至物理功能n 620-n可以根據操作模式而被致能或失能。例如,物理功能1 620-1至物理功能n 620-n可以被設置為活動模式或非活動模式中的一個。被設置成活動模式的物理功能1 620-1至物理功能n 620-n可以被致能以執行操作並且可以透過PCIe鏈路來執行與所分配的系統映像的通訊。被設置成非活動模式的物理功能1 620-1至物理功能n 620-n可以被失能以便不執行操作並且可以不透過PCIe鏈路來執行通訊。
根據實施例,功能模式控制器630可以基於功能模式控制資訊MODE_INFO來將物理功能1 620-1至物理功能n 620-n中的每一個的操作模式設置為活動模式和非活動模式中的一個。
例如,功能模式控制器630可以基於功能模式控制資訊MODE_INFO向物理功能1 620-1至物理功能n 620-n提供致能控制訊號ENABLE。已經接收到致能控制訊號ENABLE的物理功能1 620-1至物理功能n 620-n可以被設置為活動模式。
根據實施例,被設置成活動模式的一個或複數個物理功能1 620-1至物理功能n 620-n可以執行配置操作。在配置操作期間,可以將儲存在物理功能610和物理功能1 620-1至物理功能n 620-n的配置空間中的資訊提供給主機1000,並且配置空間可以回應於來自主機1000的配置請求而設置。例如,被設置成活動模式的物理功能1 620-1至物理功能n 620-n中的每一個可以從主機1000接收配置請求並且可以回應於配置請求來執行配置操作。
例如,功能模式控制器630可以基於功能模式控制資訊MODE_INFO向物理功能1 620-1至物理功能n 620-n提供失能控制訊號DISABLE。已經接收到失能控制訊號DISABLE的物理功能1 620-1至物理功能n 620-n可以被設置為非活動模式。
根據實施例,功能模式控制器630可以對被設置成非活動模式的一個或複數個第二物理功能620-1~620-n執行時脈閘控以降低PCIe裝置600的功率消耗。
因此,根據實施例,透過基於利用各種通訊技術從主機1000接收的功能模式控制資訊MODE_INFO來致能或失能物理功能1 620-1至物理功能n 620-n,可以根據使用者的意圖來控制這些功能,並且可以降低包括PCIe裝置600的計算系統的操作開支。
圖7示出了根據本揭示內容的實施例的物理功能700。
如圖7所示的物理功能700可以表示圖6所示的物理功能0 610或圖6所示的物理功能1 620-1至物理功能n 620-n中的一個。
參照圖7,物理功能700可以包括配置空間710和操作控制器720。
配置空間710可以包括用於配置物理功能700的資訊。例如,配置空間710可以包括用於配置物理功能700以執行與PCIe介面相關聯的操作的暫存器。根據實施例,配置空間710可以包括關於物理功能700中可用的能力的資訊。
根據實施例,物理功能700可以回應於主機1000的配置請求而執行配置操作。物理功能700和主機1000可以基於根據配置操作設置的配置空間710來執行通訊。
操作控制器720可以基於配置空間710中包括的資訊來控制物理功能700的操作。例如,操作控制器720可以基於根據配置操作設置的配置空間710來控制物理功能700的操作。操作控制器720可以基於在配置空間710中設置的暫存器的字段值來控制物理功能700的操作。
如圖6所示的物理功能0 610可以進一步包括用於管理PCIe鏈路以及用於管理在物理功能0 610與物理功能1 620-1至物理功能n 620-n之間共享的功能的配置。
圖8A示出了根據本揭示內容的實施例的處於鏈路接通(link up)狀態的PCIe裝置。圖8B示出了根據本揭示內容的實施例的在鏈路接通之後將物理功能的操作模式設置為活動模式。圖8C示出了根據本揭示內容的實施例的在一般操作狀態下將物理功能的操作模式設置為非活動模式。圖8D示出了根據本揭示內容的實施例的在一般操作狀態下將物理功能的操作模式設置為活動模式。
參照圖8A,鏈路接通狀態可以指PCIe裝置600的通電或者剛好在物理功能0 610和物理功能1 620-1至物理功能n 620-n的初始化之後的狀態。PCIe裝置600可以執行鏈路初始化和訓練,以便在鏈路接通之後透過PCIe鏈路與主機1000執行正常的資料包交換。執行正常的資料包交換的狀態可以被定義為「L0」。可以由鏈路訓練和狀態機(LTSSM)執行鏈路初始化和訓練。
根據實施例,處於鏈路接通狀態的PCIe裝置600中包括的物理功能1 620-1到物理功能n 620-n可以被設置成非活動模式。因此,物理功能1 620-1至物理功能n 620-n可以被失能。
參考圖8B,在鏈路接通之後,物理功能0 610可以從主機1000接收功能模式控制資訊MODE_INFO。物理功能0 610可以向功能模式控制器630提供功能模式控制資訊MODE_INFO。
在圖8B的示例中,功能模式控制資訊MODE_INFO包括待致能的物理功能的數量(在該示例中為2)以及待致能的物理功能1 620-1和物理功能3 620-3的標識資訊。功能模式控制器630可以基於功能模式控制資訊MODE_INFO來向物理功能1 620-1和物理功能3 620-3提供致能控制訊號ENABLE。物理功能1 620-1和物理功能3 620-3可以將操作模式設置成活動模式。因此,可以致能物理功能1 620-1和物理功能3 620-3。
致能的物理功能1 620-1和物理功能3 620-3隨後可以從主機1000接收配置請求。物理功能1 620-1和物理功能3 620-3可以回應於配置請求而執行配置操作。
參照圖8C,在鏈路初始化和訓練完成並且物理功能0 610進行正常操作之後,物理功能0 610可以從主機1000接收功能模式控制資訊MODE_INFO。
在圖8C的示例中,功能模式控制資訊MODE_INFO包括待致能的物理功能n 620-n的標識資訊。功能模式控制器630可以基於功能模式控制資訊MODE_INFO來向物理功能n 620-n提供致能控制訊號ENABLE。物理功能n 620-n可以回應於致能控制訊號ENABLE而將操作模式設置為活動模式。因此,可以致能物理功能n 620-n。
致能的物理功能n 620-n隨後可以從主機1000接收配置請求。物理功能n 620-n可以回應於配置請求而執行配置操作。
參照圖8D,在鏈路初始化和訓練完成並且物理功能0 610進行正常操作之後,物理功能0 610可以從主機1000接收功能模式控制資訊MODE_INFO。
在圖8D的示例中,功能模式控制資訊MODE_INFO包括待失能的物理功能3 620-3的標識資訊。功能模式控制器630可以基於功能模式控制資訊MODE_INFO來向物理功能3 620-3提供失能控制訊號DISABLE。物理功能3 620-3可以回應於失能控制訊號DISABLE而將操作模式設置為非活動模式。因此,可以失能物理功能3 620-3。
功能模式控制器630可以對失能的物理功能3 620-3執行時脈閘控。
圖9示出了根據本揭示內容的另一實施例的PCIe裝置900。
PCIe裝置900可以進一步包括功能狀態管理器910。因為對PCIe裝置900的物理功能0 610、物理功能1 620-1至物理功能n 620-n以及功能模式控制器630的描述與圖6所示的PCIe裝置600的相應特徵相同,所以將這些描述省略。
根據實施例,功能狀態管理器910可以儲存物理功能1 620-1至物理功能n 620-n之中的被設置成非活動模式的一個或複數個第二物理功能中的每一個的狀態資訊STATUS_INFO。例如,失能的物理功能1 620-1可以向功能狀態管理器910和物理功能0 610提供指示非活動狀態的狀態資訊STATUS_INFO。功能狀態管理器910和物理功能0 610可以儲存物理功能1 620-1的標識資訊和物理功能1 620-1的狀態資訊STATUS_INFO。
根據實施例,物理功能0 610和物理功能1 620-1至物理功能n 620-n可以回應於主機1000的請求REQUEST而提供完成資訊。完成資訊可以包括指示物理功能610和物理功能620-1至物理功能620-n的當前狀態的資訊。例如,完成資訊可以包括的完成標頭,完成標頭包括完成狀態字段。完成狀態字段可以包括成功完成(Successful Completion, SC)資訊、不被支持請求(Unsupported Request, UR)資訊、配置請求重試狀態(Configuration Request Retry Status, CRS)資訊和完成者中止(Completer Abort, CA)資訊中的一項。例如,物理功能0 610和物理功能1 620-1至物理功能n 620-n可以回應於主機1000的請求REQUEST而返回與當前狀態相對應的完成資訊。
根據實施例,主機1000的請求REQUEST可以包括配置請求。
在實施例中,當PCIe裝置900從主機1000接收到針對被設置為非活動模式的物理功能的請求REQUEST時,物理功能0 610可以向主機1000提供UR資訊。
在另一實施例中,當從主機1000接收到針對被設置成非活動模式的物理功能的請求REQUEST時,功能狀態管理器910可以向主機1000提供UR資訊。
例如,主機1000可以向失能的物理功能1 620-1發送請求REQUEST。作為回應,物理功能0 610或功能狀態管理器910可以向主機1000提供UR資訊。已經接收到UR資訊的主機1000可以感知到物理功能1 620-1被失能。
根據實施例,當主機1000向物理功能1 620-1至物理功能n 620-n中的、處於正在被設置成活動模式或非活動模式的過程的第二物理功能發送請求REQUEST時,第二物理功能可以向主機1000提供CRS資訊。例如,圖9示出回應於致能控制訊號ENABLE而將物理功能2 620-2設置成活動模式。因此,回應於從主機1000接收到請求REQUEST,物理功能2 620-2可以向主機1000提供CRS資訊。已經接收到CRS資訊的主機1000可以感知到物理功能2 620-2正在被設置。
在上面的示例中,當在物理功能正在被設置成活動模式的同時接收到請求時,可以提供CRS資訊。然而,CRS資訊提供操作也可以適用於在物理功能正在被設置成非活動模式的同時接收到請求的情况。
根據實施例,當物理功能1 620-1到物理功能n 620-n之中的一個或複數個物理功能被設置成活動模式然後接收到來自主機1000的請求時,物理功能可以向主機1000提供SC資訊。例如,圖9示出回應於致能控制訊號ENABLE而將物理功能3 630-3設置成活動模式。當從主機1000接收到請求REQUEST時,物理功能3 620-3可以向主機1000提供SC資訊。已經接收到SC資訊的主機1000可以感知到物理功能3 620-3被致能。
圖10示出了根據本揭示內容的實施例的操作PCIe裝置600的過程。
圖10所示的過程可以由例如圖6所示的PCIe裝置600或圖9所示的PCIe裝置900來執行。下文中,將描述如圖6所示的PCIe 600的操作過程。然而,操作過程也可以由如圖9所示的PCIe裝置900來執行。在圖10中,第一物理功能可以表示如上面參照圖6或圖9所述的物理功能0 610。在圖10中,第二物理功能可以表示如上面參照圖6或圖9所述的物理功能1 620-1至物理功能n 620-n中的一個。
參照圖10,在步驟S1001,PCIe裝置600可以透過第一物理功能從主機1000接收功能模式控制資訊。
第一物理功能可以透過使用供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(SMbus)上的管理組件傳輸協定(MCTP)和PCIe上的MCTP中的一個來從主機1000接收功能模式控制資訊。
在步驟S1003,PCIe裝置600可以基於功能模式控制資訊來將第二物理功能中的每一個的操作模式設置成活動模式和非活動模式中的一個。
圖11示出了根據本揭示內容的實施例的提供PCIe裝置完成資訊的過程。
圖11所示的過程可以由例如圖9所示的PCIe裝置900來執行。在圖11中,第一物理功能可以表示上面參照圖6或圖9所述的物理功能0 610。在圖11中,第二物理功能可以表示上面參照圖6或圖9所述的物理功能1 620-1至物理功能n 620-n中的一個。
參照圖11,在步驟S1101,PCIe裝置900可以從主機1000接收針對第二物理功能的請求。
在步驟S1103,PCIe裝置900可以確定請求所針對的第二物理功能是否被設置成非活動模式。
根據步驟S1103的確定結果,當第二物理功能被設置成非活動模式時,PCIe裝置900可以在步驟S1105向主機1000提供UR資訊。
根據步驟S1103的確定結果,當第二物理功能未被設置成非活動模式時,PCIe裝置900可以執行步驟S1107。
在步驟S1107,PCIe裝置900可以確定請求所針對的第二物理功能是否被設置成活動模式。
根據步驟S1107的確定結果,當第二物理功能被設置成活動模式時,PCIe裝置900可以在步驟S1109向主機1000提供SC資訊。
根據步驟S1107的確定結果,當第二物理功能未被設置成活動模式時,PCIe裝置900可以在步驟S1111向主機1000提供CRS資訊。
例如,當PCIe裝置900在第二物理功能正在被設置成活動模式或正在被設置成非活動模式的同時接收到來自主機1000的請求時,PCIe裝置900可以在步驟S1111向主機1000提供CRS資訊。
圖12示出了根據本揭示內容的實施例的用於控制被設置為活動模式的物理功能的過程。
圖12所示的過程可以由例如圖6所示的PCIe裝置600或圖9所示的PCIe裝置900來執行。下文中,將描述如圖6所示的PCIe裝置600的操作過程。然而,該操作過程也可以由如圖9所示的PCIe裝置900來執行。在圖12中,第一物理功能可以表示上面參照圖6或圖9所述的物理功能0 610。在圖12中,第二物理功能可以表示如上面參照圖6或圖9所述的物理功能1 620-1至物理功能n 620-n中的一個。
參照圖12,在步驟S1201,PCIe裝置600可以基於功能模式控制資訊來將第二物理功能的操作模式設置成活動模式。
在步驟S1203,PCIe裝置600可以從主機1000接收針對被設置成活動模式的第二物理功能的配置請求。
在步驟S1205,PCIe裝置600可以向主機1000提供SC資訊。
步驟S1203和步驟S1205可以對應於參照圖11描述的步驟S1101、步驟S1107和步驟S1109。
在步驟S1207中,PCIe裝置600可以對被設置成活動模式的第二物理功能執行配置操作。
PCIe裝置600可以向主機1000提供包括在被設置成活動模式的第二物理功能的配置空間中的資訊。另外,PCIe裝置600可以回應於配置請求而設置第二物理功能的配置空間。
圖13示出了根據本揭示內容的實施例的用於控制被設置為非活動模式的物理功能的過程。
圖13所示的過程可以由例如圖6所示的PCIe裝置600或圖9所示的PCIe裝置900來執行。下文中,將描述如圖6所示的PCIe 600的操作過程。然而,操作過程也可以由如圖9所示的PCIe裝置900來執行。在圖13中,第一物理功能可以表示上面參照圖6或圖9所述的物理功能0 610。在圖13中,第二物理功能可以表示如上面參照圖6或圖9所述的物理功能1 620-1至物理功能n 620-n中的一個。
參照圖13,在步驟S1301,PCIe裝置600可以基於功能模式控制資訊來將第二物理功能的操作模式設置成非活動模式。
在步驟S1303中,PCIe裝置600可以對被設置成非活動模式的第二物理功能執行時脈閘控。對第二物理功能執行時脈閘控可以降低PCIe裝置600的功率消耗。
根據本揭示內容,可以提供一種能夠降低包括PCIe裝置的計算系統的操作成本的PCIe裝置及其操作方法。
另外,根據本揭示內容,可以提供一種根據使用者的意圖來致能或失能PCIe功能的PCIe裝置及其操作方法。
雖然出於說明性目的揭示了本揭示內容的實施例,但是本發明所屬技術領域中具有通常知識者將理解的是,可以進行各種修改、添加和替換。因此,本發明旨在涵蓋所有這些修改,只要它們落在所附申請專利範圍及其等同方案的範圍內即可。
100:計算系統
200:計算系統
210-1~210-n:系統映像
220:虛擬化中介
230:根聯合體
231-1:根埠
231-2:根埠
240:交換機
310:PCI管理器
320:轉換代理
330:位址轉換和保護表
341:位址轉換快取
342:物理功能
343:虛擬功能
400:PCIe裝置
500:PCIe裝置
600:PCIe裝置
610:物理功能0
620-1:物理功能1
620-2:物理功能2
620-3:物理功能3
620-n:物理功能n
630:功能模式控制器
700:物理功能
710:配置空間
720:操作控制器
900:PCIe裝置
910:功能狀態管理器
1000:主機
1100:處理器
1200:記憶體
1300:輸入/輸出管理器
1400:匯流排
2000:快速週邊組件互連裝置
DISABLE:失能控制訊號
ENABLE:致能控制訊號
Function 0~Function N:功能
MODE_INFO功能模式控制資訊
2000-1~2000-3:PCIe裝置
PF0:物理功能
PF1:物理功能
PF2:物理功能
PF3:物理功能
PFn:物理功能
REQUEST:請求
S1001~S1003:步驟
S1101~S1111:步驟
S1201~S1207:步驟
S1301~S1303:步驟
STATUS_INFO:狀態資訊
VF0_1~VF0_N:虛擬功能
圖1示出了根據本揭示內容的實施例的計算系統的示例;
圖2示出了根據本揭示內容的實施例的計算系統的另一示例;
圖3示出了根據本揭示內容的實施例的計算系統的另一示例;
圖4示出了根據本揭示內容實施例的多功能裝置。
圖5示出了根據本揭示內容的實施例的具有單根輸入/輸出虛擬化(single root input/output virtualization, SR-IOV)能力的PCIe裝置的示例;
圖6示出了根據本揭示內容的實施例的PCIe裝置;
圖7示出了根據本揭示內容的實施例的物理功能;
圖8A示出了根據本揭示內容的實施例的處於鏈路接通(link up)狀態的PCIe裝置;
圖8B示出了根據本揭示內容的實施例的在鏈路接通之後將物理功能的操作模式設置為活動模式;
圖8C示出了根據本揭示內容的實施例的在一般操作狀態下將物理功能的操作模式設置為非活動模式;
圖8D示出了根據本揭示內容的實施例的在一般操作狀態下將物理功能的操作模式設置為活動模式;
圖9示出了根據本揭示內容的另一實施例的PCIe裝置;
圖10示出了根據本揭示內容的實施例的操作PCIe裝置的過程;
圖11示出了根據本揭示內容的實施例的提供PCIe裝置完成資訊的過程。
圖12示出了根據本揭示內容的實施例的用於控制被設置為活動模式的物理功能的過程;以及
圖13示出了根據本揭示內容的實施例的用於控制被設置為非活動模式的物理功能的過程。
無
600:PCIe裝置
610:物理功能0
620-1:物理功能1
620-2:物理功能2
620-3:物理功能3
620-n:物理功能n
630:功能模式控制器
1000:主機
DISABLE:失能控制訊號
ENABLE:致能控制訊號
MODE_INFO:功能模式控制資訊
PF0:物理功能
PF1:物理功能
PF2:物理功能
PF3:物理功能
PFn:物理功能
Claims (20)
- 一種快速週邊組件互連裝置(Peripheral Component Interconnect Express, PCIe)裝置,包括: 第一物理功能,管理PCIe鏈路並從主機接收功能模式控制資訊; 複數個第二物理功能,根據各自的操作模式分別被致能或失能;以及 功能模式控制器,基於所述功能模式控制資訊來設置所述複數個第二物理功能的操作模式,所述操作模式中的每一個被設置為活動模式和非活動模式中的一個。
- 如請求項1所述的PCIe裝置,其中所述功能模式控制資訊包括以下中的至少一項:所述複數個第二物理功能之中的待致能的第二物理功能的數量,待致能的第二物理功能的標識資訊,所述複數個第二物理功能之中的待失能的第二物理功能的數量,以及待失能的第二物理功能的標識資訊。
- 如請求項1所述的PCIe裝置,其中所述第一物理功能使用以下中的一項來接收所述功能模式控制資訊:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(SMbus)上的管理組件傳輸協定(MCTP)、以及PCIe上的MCTP。
- 如請求項1所述的PCIe裝置,其中當所述PCIe裝置從所述主機接收到針對所述複數個第二物理功能中的第二物理功能的請求並且所述第二物理功能被設置成非活動模式時,所述第一物理功能向所述主機提供不被支持請求(UR)資訊。
- 如請求項1所述的PCIe裝置,進一步包括功能狀態管理器,所述功能狀態管理器儲存與所述複數個第二物理功能之中的被設置成非活動模式的第二物理功能相關的資訊。
- 如請求項5所述的PCIe裝置,其中當所述PCIe裝置從所述主機接收到針對所述第二物理功能的請求並且所述第二物理功能被設置成非活動模式時,所述功能狀態管理器向所述主機提供不被支持請求(UR)資訊。
- 如請求項1所述的PCIe裝置,其中當所述複數個第二物理功能之中的一個第二物理功能在所述第二物理功能處於正在被設置成活動模式的過程或處於正在被設置成非活動模式的過程時接收到來自所述主機的請求時,所述第二物理功能向所述主機提供配置請求重試狀態(CRS)資訊。
- 如請求項1所述的PCIe裝置,其中當所述複數個第二物理功能之中的一個第二物理功能從所述主機接收到請求並且所述第二物理功能被設置成活動模式時,所述第二物理功能向主機提供成功完成(SC)資訊。
- 如請求項1所述的PCIe裝置,其中所述複數個第二物理功能中的每一個第二物理功能包括: 配置空間,包括用於配置所述第二物理功能的資訊;以及 操作控制器,基於所述第二物理功能的所述配置空間中包括的資訊來控制所述第二物理功能的操作。
- 如請求項9所述的PCIe裝置,其中所述複數個第二物理功能之中的被設置成活動模式的第二物理功能向所述主機提供包括在所述配置空間中的資訊並且當所述第二物理功能從所述主機接收到配置請求時回應於所述配置請求而設置所述配置空間。
- 如請求項1所述的PCIe裝置,其中當所述複數個第二物理功能之中的一個第二物理功能被設置成非活動模式時,所述功能模式控制器對所述第二物理功能執行時脈閘控。
- 一種操作快速週邊組件互連裝置(Peripheral Component Interconnect Express, PCIe)裝置的方法,所述PCIe裝置包括第一物理功能和複數個第二物理功能,所述第一物理功能管理耦接到主機的PCIe鏈路,所述方法包括: 透過所述第一物理功能來從所述主機接收功能模式控制資訊;並且 基於所述功能模式控制資訊來設置所述複數個第二物理功能中的每一個的操作模式,每個操作模式分別被設置成活動模式和非活動模式中的一個。
- 如請求項12所述的方法,其中所述功能模式控制資訊包括以下中的至少一項:所述複數個第二物理功能之中的待致能的第二物理功能的數量、待致能的第二物理功能的標識資訊、所述複數個第二物理功能之中的待失能的第二物理功能的數量、以及待失能的第二物理功能的標識資訊。
- 如請求項12所述的方法,其中接收所述功能模式控制資訊包括使用以下中的一項來接收所述功能模式控制資訊:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(SMbus)上的管理組件傳輸協定(MCTP)、以及PCIe上的MCTP。
- 如請求項12所述的方法,進一步包括:回應於從所述主機接收到針對所述複數個第二物理功能之中的被設置成所述非活動模式的第二物理功能的請求,向所述主機提供不被支持請求(UR)資訊。
- 如請求項12所述的方法,進一步包括:回應於在所述複數個第二物理功能之中的一個第二物理功能正在被設置成活動模式或非活動模式時從所述主機接收到針對所述第二物理功能的請求,向所述主機提供配置請求重試狀態(CRS)資訊。
- 如請求項12所述的方法,進一步包括:回應於從所述主機接收到針對所述複數個第二物理功能之中的被設置成活動模式的第二物理功能的請求,向所述主機提供成功完成(SC)資訊。
- 如請求項12所述的方法,進一步包括:回應於從所述主機接收到針對所述複數個第二物理功能之中的被設置成活動模式的第二物理功能的配置請求,對所述第二物理功能執行配置操作。
- 如請求項18所述的方法,其中執行所述配置操作包括: 向所述主機提供包括在所述第二物理功能的配置空間中的資訊;並且 回應於所述配置請求來設置所述配置空間。
- 如請求項12所述的方法,進一步包括:對所述複數個第二物理功能之中的被設置成非活動模式的第二物理功能進行時脈閘控。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210048073A KR102570943B1 (ko) | 2021-04-13 | 2021-04-13 | PCIe 디바이스 및 그 동작 방법 |
KR10-2021-0048073 | 2021-04-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202240415A true TW202240415A (zh) | 2022-10-16 |
Family
ID=83509273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111114067A TW202240415A (zh) | 2021-04-13 | 2022-04-13 | PCIe裝置及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11983136B2 (zh) |
KR (1) | KR102570943B1 (zh) |
CN (1) | CN115203101A (zh) |
TW (1) | TW202240415A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928070B2 (en) * | 2021-04-13 | 2024-03-12 | SK Hynix Inc. | PCIe device |
KR102568906B1 (ko) | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
KR102570943B1 (ko) | 2021-04-13 | 2023-08-28 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
CN117369612B (zh) * | 2023-12-08 | 2024-02-13 | 电子科技大学 | 一种服务器硬件管理系统及方法 |
CN117743212A (zh) * | 2024-02-19 | 2024-03-22 | 北京光润通科技发展有限公司 | 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6647434B1 (en) * | 1999-12-28 | 2003-11-11 | Dell Usa, L.P. | Multifunction device with register space for individually enabling or disabling a function of plurality of functions in response to function configuration |
US7979592B1 (en) | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge device |
US8359408B2 (en) | 2008-06-30 | 2013-01-22 | Intel Corporation | Enabling functional dependency in a multi-function device |
US8503468B2 (en) | 2008-11-05 | 2013-08-06 | Fusion-Io, Inc. | PCI express load sharing network interface controller cluster |
US8117350B2 (en) | 2009-11-03 | 2012-02-14 | Oracle America, Inc. | Configuration space compaction |
US9851969B2 (en) | 2010-06-24 | 2017-12-26 | International Business Machines Corporation | Function virtualization facility for function query of a processor |
US8291146B2 (en) | 2010-07-15 | 2012-10-16 | Ati Technologies Ulc | System and method for accessing resources of a PCI express compliant device |
WO2013184141A1 (en) | 2012-06-08 | 2013-12-12 | Intel Corporation | Sr-iov failover & aggregation control system to ensure within-physical-port veb loopback |
US10067777B2 (en) | 2014-09-18 | 2018-09-04 | Intel Corporation | Supporting multiple operating system environments in computing device without contents conversion |
SG11201702584UA (en) | 2014-10-05 | 2017-04-27 | Amazon Tech Inc | Emulated endpoint configuration |
KR102473665B1 (ko) | 2015-07-28 | 2022-12-02 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 가상화 시스템 |
US10581711B2 (en) | 2016-01-28 | 2020-03-03 | Oracle International Corporation | System and method for policing network traffic flows using a ternary content addressable memory in a high performance computing environment |
US10635499B2 (en) | 2016-03-23 | 2020-04-28 | Unisys Corporation | Multifunction option virtualization for single root I/O virtualization |
KR101767181B1 (ko) | 2017-02-21 | 2017-08-22 | 한국과학기술정보연구원 | 다목적 어댑터 카드 및 그 통합 방법 |
US10498718B2 (en) | 2017-06-16 | 2019-12-03 | Amazon Technologies, Inc. | Device identification and authentication in a network |
US11307925B2 (en) * | 2018-03-29 | 2022-04-19 | Intel Corporation | Systems and methods for isolating an accelerated function unit and/or an accelerated function context |
US11068203B2 (en) * | 2018-08-01 | 2021-07-20 | Micron Technology, Inc. | NVMe direct virtualization with configurable storage |
US11531752B2 (en) | 2018-09-26 | 2022-12-20 | Intel Corporation | Technologies for control plane separation in a network interface controller |
US10929310B2 (en) | 2019-03-01 | 2021-02-23 | Cisco Technology, Inc. | Adaptive address translation caches |
US10970238B2 (en) * | 2019-04-19 | 2021-04-06 | Intel Corporation | Non-posted write transactions for a computer bus |
US20200409732A1 (en) | 2019-06-26 | 2020-12-31 | Ati Technologies Ulc | Sharing multimedia physical functions in a virtualized environment on a processing unit |
US11321257B2 (en) * | 2019-12-31 | 2022-05-03 | Micron Technology, Inc. | Quality of service control of logical devices for a memory sub-system |
US11704059B2 (en) * | 2020-02-07 | 2023-07-18 | Samsung Electronics Co., Ltd. | Remote direct attached multiple storage function storage device |
US20220188073A1 (en) | 2020-12-11 | 2022-06-16 | Amazon Technologies, Inc. | Data-type-aware clock-gating |
KR102529761B1 (ko) | 2021-03-18 | 2023-05-09 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
US20220300442A1 (en) | 2021-03-18 | 2022-09-22 | SK Hynix Inc. | Peripheral component interconnect express device and method of operating the same |
US11928070B2 (en) | 2021-04-13 | 2024-03-12 | SK Hynix Inc. | PCIe device |
KR102568909B1 (ko) | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | PCIe 펑션 및 그 동작 방법 |
KR102568906B1 (ko) | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
KR102570943B1 (ko) | 2021-04-13 | 2023-08-28 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
-
2021
- 2021-04-13 KR KR1020210048073A patent/KR102570943B1/ko active IP Right Grant
- 2021-10-19 US US17/504,884 patent/US11983136B2/en active Active
-
2022
- 2022-02-25 CN CN202210175921.6A patent/CN115203101A/zh active Pending
- 2022-04-13 TW TW111114067A patent/TW202240415A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN115203101A (zh) | 2022-10-18 |
KR102570943B1 (ko) | 2023-08-28 |
US20220327081A1 (en) | 2022-10-13 |
US11983136B2 (en) | 2024-05-14 |
KR20220141677A (ko) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202240415A (zh) | PCIe裝置及其操作方法 | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
US8103810B2 (en) | Native and non-native I/O virtualization in a single adapter | |
JP5085334B2 (ja) | Usb・otgコントローラ | |
US11928070B2 (en) | PCIe device | |
US10846254B2 (en) | Management controller including virtual USB host controller | |
TW202240414A (zh) | PCIe功能及其操作方法 | |
US11829309B2 (en) | Data forwarding chip and server | |
US11741039B2 (en) | Peripheral component interconnect express device and method of operating the same | |
EP3716084A1 (en) | Apparatus and method for sharing a flash device among multiple masters of a computing platform | |
US20220300442A1 (en) | Peripheral component interconnect express device and method of operating the same | |
US8527745B2 (en) | Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available | |
US20230318606A1 (en) | Interface device and method of operating the same | |
US20230350824A1 (en) | Peripheral component interconnect express device and operating method thereof |