TW202240414A - PCIe功能及其操作方法 - Google Patents
PCIe功能及其操作方法 Download PDFInfo
- Publication number
- TW202240414A TW202240414A TW111114066A TW111114066A TW202240414A TW 202240414 A TW202240414 A TW 202240414A TW 111114066 A TW111114066 A TW 111114066A TW 111114066 A TW111114066 A TW 111114066A TW 202240414 A TW202240414 A TW 202240414A
- Authority
- TW
- Taiwan
- Prior art keywords
- identification information
- access
- pcie
- function
- access identification
- 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/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/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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- 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/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/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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
一種快速週邊組件互連(PCIe)功能包括:存取標識資訊控制器,生成用於允許存取PCIe功能的第一存取標識資訊,並且向已經分配了PCIe功能的分配系統映像提供第一存取標識資訊,分配系統映像是複數個系統映像中的一個;以及資料包接收器,從目標系統映像接收包括目標標識資訊的資料包,目標標識資訊指示從複數個系統映像之中選擇的目標系統映像;以及存取允許確定器,基於第一存取標識資訊和目標標識資訊來確定是否允許存取目標系統映像。
Description
本揭示內容 關於一種電子裝置,並且更特別地, 關於一種快速週邊組件互連(PCIe)功能及其操作方法。
近來,快速週邊組件互連(PCIe)裝置可以定義用於將輸入/輸出裝置連接到主機裝置的匯流排協定。快速PCI(PCIe)具有由PCI標準來定義的編程構思,並且包括被定義為高速序列介面的物理通訊層。
儲存裝置可以回應於諸如電腦或智慧型手機的主機裝置的控制而儲存資料。儲存裝置可以包括儲存資料的記憶體裝置及控制記憶體裝置的記憶體控制器。記憶體裝置可以被劃分為揮發性記憶體裝置和非揮發性記憶體裝置。
揮發性記憶體裝置只要被供應電力就可以保留資料,並且在沒有電源的情况下可能丟失所儲存的資料。揮發性記憶體裝置的類型可以包括靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)等。
非揮發性記憶體裝置即使沒有電力供應也不會丟失資料。非揮發性記憶體裝置的類型可以包括唯讀記憶體(ROM)、可編程ROM(PROM)、電可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)和快閃記憶體。
本發明實施例提供一種具有高操作速度和高安全性的PCIe功能及其操作方法。
根據實施例,一種快速週邊組件互連(PCIe)功能可以包括:存取標識資訊控制器,生成用於允許存取PCIe功能的第一存取標識資訊,並且向已經分配了PCIe功能的分配系統映像(assigned system image)提供第一存取標識資訊,分配系統映像是複數個系統映像中的一個;以及資料包接收器,從目標系統映像接收包括目標標識資訊的資料包,目標標識資訊指示從複數個系統映像之中選擇的目標系統映像;以及存取允許確定器,基於第一存取標識資訊和目標標識資訊來確定是否允許存取目標系統映像。
根據實施例,一種計算系統可以包括:複數個快速週邊組件互連(PCIe)功能;以及主機,包括複數個系統映像,生成存取標識資訊,存取標識資訊用於允許存取複數個PCIe功能之中被分配給複數個系統映像中的相應系統映像的PCIe功能,並且向PCIe功能提供存取標識資訊,並且PCIe功能儲存從主機提供的存取標識資訊,從目標系統映像接收資料包,資料包包括指示目標系統映像的目標標識資訊,目標系統映像是複數個系統映像中的一個,並且基於存取標識資訊和目標標識資訊來確定是否允許存取目標系統映像。
根據實施例,一種用於操作快速週邊組件互連(PCIe)功能的方法,PCIe功能被分配給複數個系統映像中的一個,該方法可以包括:生成用於允許存取PCIe功能的存取標識資訊,向分配系統映像提供存取標識資訊,從目標系統映像接收資料包,資料包包括指示複數個系統映像之中的目標系統映像的目標標識資訊,並且基於存取標識資訊和目標標識資訊來確定是否允許存取目標系統映像。
相關申請案的交叉引用:
本申請案請求於2021年4月13日提交的申請號為10-2021-0048077的韓國專利申請案的優先權,該韓國專利申請案透過引用整體並入本文。
對根據本說明書中公開的構思的實施例的示例的具體結構或功能的描述僅為了描述根據該構思的實施例的示例而示出,並且根據該構思的實施例的示例可以透過各種形式來執行,但是這些描述不限於在本說明書中描述的實施例的示例。
圖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)裝置或基本功能(base function, BF)裝置。例如,物理功能裝置可以被配置為虛擬化中介被授予存取權限的虛擬裝置。虛擬功能裝置可以被配置為分配給主機1000的虛擬機的虛擬裝置。基本功能裝置可以被配置為在包括複數個根聯合體的虛擬化環境中使用的虛擬裝置。
圖2示出了根據本揭示內容的實施例的計算系統的另一示例(計算系統200)。
根據實施例,圖2示出了PCIe可用的通用平臺配置的示例。
參照圖2,計算系統200可以包括主機1000a和複數個PCIe裝置2000-1~2000-3。
主機1000a可以進一步包括複數個系統映像210-1~210-n、虛擬化中介220、根聯合體230和交換機240。在圖2所示的實施例中,因為處理器1100和記憶體1200具有與圖1所示的相同的配置,所以將省略重複的描述。
根據實施例,複數個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可以包括主機1000b和複數個PCIe裝置2000-1~2000-3。
主機1000b可以包括單根PCI管理器(single root PCI manager, SR-PCIM)310、轉換代理(translation agent, TA)320和位址轉換和保護表(address translation and protection table, ATPT)300。在圖3所示的實施例中,因為處理器1100、記憶體1200、複數個系統映像210-1~210-n、虛擬化中介220、根聯合體230和交換機240具有與圖1所示的相同的配置,所以將省略它們的重複描述。
根據實施例,如圖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可以包括複數個PCIe功能PCIe Function 0~PCIe Function N。根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N可以是物理功能。當PCIe裝置400中包括的所有功能PCIe Function 0~PCIe Function N都是物理功能時,相應的PCIe裝置400可以被定義為多功能裝置。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N可以共享通用PCIe鏈路。由所有PCIe功能PCIe Function 0~PCIe Function N共享的鏈路和PCIe功能可以透過PCIe Function0來管理。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N可以支持替換路由標識符(Alternative Routing Identifier,ARI)能力。另外,複數個PCIe功能PCIe Function 0~PCIe Function N可以使用透過PCI枚舉過程(PCI enumeration process)捕獲的單個匯流排編號。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N可以支持ATS能力。複數個PCIe功能PCIe Function 0~PCIe Function N可以包括位址轉換快取,以用於管理ATS獲得的轉換後的位址。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N中的每一個可以包括特有的物理資源,該特有的物理資源包括單獨的配置空間、基位址暫存器(BAR)等。物理資源可以指PCIe裝置400的物理資源中的一些。換句話說,複數個PCIe功能PCIe Function 0~PCIe Function N可以將物理資源提供給被分配到這些PCIe功能的系統映像。
複數個PCIe功能PCIe Function 0~PCIe Function N可以分別被分配給系統映像。為了防止一個系統映像影響另一系統映像,所有PCIe配置操作都可以被虛擬化中介攔截和處理。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N的配置空間可以包括類型0配置空間標頭。例如,類型0配置空間標頭可以包括標頭類型暫存器(header type register)和中斷引脚暫存器(interrupt pin register)。
標頭類型暫存器可以被包括在配置空間的類型0配置空間標頭中。標頭類型暫存器可以識別複數個功能是否可以被包括在預定義的第二部分(從配置空間的10h字節開始)和PCIe裝置400的布局中。例如,可以包括標頭類型暫存器的多功能裝置字段。當多功能裝置字段被設置時,PCIe裝置400可以包括複數個PCIe功能PCIe Function 0~PCIe Function N。軟體可以探測除了PCIe Function 0之外的其他PCIe功能PCIe Function 1~PCIe Function N。
中斷引脚暫存器可以是識別功能使用的傳統中斷訊息的唯讀暫存器。有效值可以是01h、02h、03h和04h,01h、02h、03h和04h分別映射到INTA、INTB、INTC和INTD的傳統中斷訊息。值00h可以表示該功能不使用傳統中斷訊息。值05h至值FFh可以被保留。快速PCI可以針對單功能裝置定義一個傳統中斷訊息並針對多功能裝置定義多達四個傳統中斷訊息。針對單功能裝置,只可以使用INTA。多功能裝置的複數個PCIe功能PCIe Function 0~PCIe Function N可以使用INTx訊息。當裝置實施單個傳統中斷訊息時,其應該是INTA。當實施兩個傳統中斷訊息時,其應該是INTA和INTB。在多功能裝置方面,複數個PCIe功能PCIe Function 0~PCIe Function N可以使用相同的INTx訊息,或者每個都有自身的INTx訊息(最多4個),或其任意組合。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe 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的最大有效載荷大小。對於該字段,多功能裝置的PCIe功能PCIe Function 0~PCIe Function N可以具有不同的值。裝置能力暫存器的位元4:3可以是不明功能支持字段(phantom function supported field)。不明功能支持字段可以具有唯讀屬性。不明功能支持字段可以指示支持對未聲明的功能編號的使用,以透過將未聲明的功能編號與標籤標識符邏輯地相組合來擴展所允許的未完成交易的數量。
裝置控制暫存器可以控制PCIe裝置特定的參數。根據實施例,裝置控制暫存器可以是16位元暫存器。裝置控制暫存器的位元0可以是可校正錯誤報告致能字段。可校正錯誤報告致能字段可以結合其他位元來控制發送ERR_COR訊息。針對多功能裝置,可校正錯誤報告致能字段可以控制每個PCIe功能(PCIe Function 0~PCIe Function N)的錯誤報告。可校正錯誤報告致能字段可以具有讀取寫入(read-write, RW)屬性。裝置控制暫存器的位元1可以是非嚴重(non-fatal)可校正錯誤報告致能字段。非嚴重可校正錯誤報告致能字段可以結合其他位元來控制發送ERR_NONFATAL訊息。針對多功能裝置,從每個PCIe功能(PCIe Function 0~PCIe Function N)的視角來看,非嚴重錯誤報告致能字段可以控制每個PCIe功能(PCIe Function 0~PCIe Function N)的錯誤報告。非嚴重錯誤報告致能字段可以具有讀取寫入屬性。裝置控制暫存器的位元2可以是嚴重錯誤報告致能字段。嚴重錯誤報告致能字段可以結合其他位元來控制發送ERR_FATAL訊息。針對多功能裝置,從每個PCIe功能(PCIe Function 0~PCIe Function N)的視角來看,嚴重錯誤報告致能字段可以控制每個PCIe功能(PCIe Function 0~PCIe Function N)的錯誤報告。嚴重錯誤報告致能字段可以具有讀取寫入屬性。裝置控制暫存器的位元3可以是不被支持請求報告致能字段(unsupported request reporting enable field)。不被支持請求報告致能字段可以結合其他位元透過發送錯誤訊息來控制不被支持請求錯誤的訊號發送(signaling)。針對多功能裝置,從每個PCIe功能(PCIe Function 0~PCIe Function N)的視角來看,不被支持請求報告致能字段可以控制每個PCIe功能(PCIe Function 0~PCIe Function N)的錯誤報告。不被支持請求報告致能字段可以具有讀取寫入屬性。裝置控制暫存器的位元7:5可以是最大有效載荷大小(Max_Payload_Size)字段。最大有效載荷大小字段可以設置功能的最大TLP有效載荷大小。作為接收器,功能不可以生成超過設置值的TLP。作為發送器,允許值可以由功能能力暫存器的最大有效載荷大小支持字段來指示。多功能裝置的所有PCIe功能PCIe Function 0~PCIe Function N可以在最大有效載荷大小字段中具有不同的值。針對ARI裝置,最大有效載荷大小字段可以僅由PCIe Function 0中的設置來確定。其他功能中的設置可以總是返回為每個功能軟體編程的任何值,否則可以被組件忽略。最大有效載荷大小字段可以具有讀取寫入屬性。
裝置狀態暫存器可以提供關於PCIe裝置(功能)特定的參數的資訊。根據實施例,裝置狀態暫存器可以是16位元暫存器。裝置狀態暫存器的位元0可以是可校正錯誤檢測字段。可校正錯誤檢測字段可以指示檢測到可校正的錯誤。不管在裝置控制暫存器中是否致能了錯誤報告,都可以在可校正錯誤檢測字段中記錄可校正的錯誤。針對多功能裝置,每個PCIe功能(PCIe Function 0~PCIe Function N)可以表示由每個PCIe功能(PCIe Function 0~PCIe Function N)感知的錯誤狀態。可校正錯誤檢測字段可以具有寫入1至清除(Write-1-to-Clear,RW1C)狀態屬性。裝置狀態暫存器的位元1可以是非嚴重可校正錯誤檢測字段。非嚴重可校正錯誤檢測字段可以指示檢測到非嚴重的錯誤。不管在裝置控制暫存器中是否致能了錯誤報告,都可以在非嚴重錯誤檢測字段中記錄非嚴重的錯誤。針對多功能裝置,每個PCIe功能(PCIe Function 0~PCIe Function N)可以指示由每個PCIe功能(PCIe Function 0~PCIe Function N)感知的錯誤狀態。非嚴重錯誤檢測字段可以具有RW1C屬性。裝置狀態暫存器的位元2可以是嚴重錯誤檢測字段。嚴重錯誤檢測字段可以指示檢測到嚴重錯誤的狀態。不管在裝置控制暫存器中是否致能了錯誤報告,都可以在嚴重錯誤檢測字段中記錄嚴重錯誤。針對多功能裝置,每個PCIe功能(PCIe Function 0~PCIe Function N)可以指示由每個PCIe功能(PCIe Function 0~PCIe Function N)感知的錯誤狀態。嚴重錯誤檢測字段可以具有RW1C屬性。裝置狀態暫存器的位元3可以是不被支持請求字段。不被支持請求檢測字段可以指示功能已經接收到不被支持的請求。不管在裝置控制暫存器中是否致能了錯誤報告,都可以在不被支持請求檢測字段中記錄錯誤。針對多功能裝置,每個PCIe功能(PCIe Function 0~PCIe Function N)可以指示由每個PCIe功能(PCIe Function 0~PCIe Function N)感知的錯誤狀態。不被支持請求檢測字段可以具有RW1C屬性。裝置狀態暫存器的位元6是緊急省電檢測字段,當PCIe功能PCIe Function 0~PCIe Function N進入緊急省電狀態時,可以設置該緊急省電檢測字段。每當存在進入緊急省電狀態的條件時, PCIe功能PCIe Function 0~PCIe Function N就可以保持緊急省電狀態。耦接到上游埠的多功能裝置可以在支持緊急省電狀態的所有PCIe功能PCIe Function 0~PCIe Function N中設置緊急省電檢測字段。緊急省電檢測字段可以具有RW1C屬性。
鏈路能力暫存器可以識別PCIe鏈路特定的能力。對於多功能裝置,所有PCIe功能PCIe Function 0~PCIe Function N的鏈路能力暫存器的字段值可以相同。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N中的配置空間可以包括:訊息訊號中斷(Message Signaled Interrupt, MSI)能力結構、輔助快速PCI擴展能力、資料鏈路特徵擴展能力和ACS擴展能力。所有生成中斷的PCIe功能PCIe Function 0~PCIe Function N都可以實施MSI或MSI-X。
另外,除了上述暫存器之外,複數個PCIe功能PCIe Function 0~PCIe Function N的配置空間還可以包括與多功能裝置相關聯的各個暫存器。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N可以執行錯誤處理操作。例如,複數個PCIe功能PCIe Function 0~PCIe Function N可以使用高級錯誤報告(advanced error reporting, AER)來執行錯誤處理操作。例如,當檢測到錯誤時,複數個功能 Function 0~Function N可以透過如下操作來執行錯誤處理操作:透過完成狀態字段來指示錯誤狀態,向根聯合體發送錯誤訊息或者進行錯誤轉發。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N可以執行功能級重設(function level reset, FLR)操作。例如,複數個PCIe功能PCIe Function 0~PCIe Function N可以在主機的請求下執行功能級重設(FLR)操作。
功能級重設機制可以使軟體能夠以功能級顆粒度來使端點硬體靜止(quiesce)和重設端點硬體。
功能級重設可以應用於PCIe功能PCIe Function 0~PCIe Function N中的每一個。只有目標PCIe功能(PCIe Function 0~PCIe Function N)可能受到功能級重設操作的影響。鏈路狀態可以不受功能級重設的影響。
功能級重設可以修改PCIe功能PCIe Function 0~PCIe Function N中的每一個的狀態。
例如,除了黏性類型暫存器(ROS、RWS、RW1CS)、HwInit類型定義暫存器以及其他此類字段或暫存器之外,功能暫存器和功能特定的狀態機可以被重設為功能暫存器和功能特定的狀態機的初始值。
另外,功能級重設(FLR)可以修改諸如以下各項的功能狀態:裝置能力暫存器的捕獲的插槽電力限制值、裝置能力暫存器的捕獲的插槽電力限制尺度、裝置控制暫存器的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擴展能力結構的所有暫存器、以及接收器擴展能力結構的通道裕度的所有暫存器。
可以清除使PCIe功能PCIe Function 0~PCIe Function N對快速PCI發起請求的控制,包括匯流排主控致能、MSI中斷致能等,從而有效地使PCIe功能PCIe Function 0~PCIe Function N在鏈路上變得靜止。
與鏈路功能相關聯的埠狀態機(包括物理和資料鏈路層中的埠狀態機)可以不被FLR重設,並且VC0可以在FLR之後保持初始化。由PCIe功能PCIe Function 0~PCIe Function N生效(assert)的任意未完成的INTx中斷可以透過在FLR開始之前發送相應的Deassert_INTx訊息而被失效(deassert)。
當將FLR初始化到PCIe裝置400的PCIe功能PCIe Function 0~PCIe Function N時,如果另一功能繼續使匹配的INTx生效,則將不會傳輸Deassert_INTx訊息。
在透過將1b寫入到初始化功能級重設位元來將FLR初始化之後,PCIe功能PCIe Function 0~PCIe Function N必須在100 ms內完成FLR。如果軟體在交易暫停位元為1b時將FLR初始化,則軟體不可以將PCIe功能PCIe Function 0~PCIe Function N初始化,直到允許充足的時間來實現任意相關聯的完成,或者達到合理的確定性(即,任意剩餘的完成將不會實現)。因此,計算系統可以允許與完成超時的預FLR值所設置的一樣多的時間。如果在發布FLR時PCIe功能PCIe Function 0~PCIe Function N上的完成超時被失能,則延遲可以取決於系統,但是可以為100 ms或更長。當實施功能就緒狀態時,計算系統可以在接收到指示PCIe功能PCIe Function 0~PCIe Function N完全準備好進行配置的功能級重設訊息之後立即向PCIe功能PCIe Function 0~PCIe Function N發布配置請求。
在收到FLR時,PCIe功能PCIe Function 0~PCIe Function N可以清除所有交易狀態,包括交易暫停,或者可以將完成超時設置成其默認值,以使所有暫停交易在FLR運行期間超時。在FLR完成時,可以清除交易暫停位元。
因為FLR修改功能狀態,所以FLR的行為可以使用如下的一組標準來規範:當應用於PCIe功能PCIe Function 0~PCIe Function N時,示出PCIe功能PCIe Function 0~PCIe Function N具有修改後的狀態。必須使用功能特定的知識來應用以下標準,以評估PCIe功能PCIe Function 0~PCIe Function N回應於FLR的行為。
– PCIe功能(PCIe Function 0~PCIe Function N)在由相應PCIe功能(PCIe Function 0~PCIe Function N)控制的任意外部介面上可以不顯現透過活動的主機初始化的配接器。終止外部介面上的活動所需的步驟可以例外。例如,網路配接器可以不對將需要由主機系統進行配接器初始化或與活動的主機系統進行交互的查詢進行回應,但是可以被允許執行被設計成在沒有主機初始化或交互的情况下執行的動作。當網路配接器包括在相同的外部網路介面上運行的複數個PCIe功能PCIe Function 0~PCIe Function N時,該規則可以僅影響與由FLR重設的特定功能相關聯的那些方面。
- PCIe功能PCIe Function 0~PCIe Function N可以不在其自身內保持軟體可讀取狀態,該軟體可讀取狀態可以包括與PCIe功能PCIe Function 0~PCIe Function N的任意先前使用相關聯的機密資訊。分配給PCIe功能PCIe Function 0~PCIe Function N的主要主機記憶體(Main host memory)可以不被PCIe功能PCIe Function 0~PCIe Function N修改。例如,具有可由主機軟體直接或間接讀取的內部記憶體的PCIe功能(PCIe Function 0~PCIe Function N)可以清除或隨機化該記憶體。
- PCIe功能(PCIe Function 0~PCIe Function N)可以返回狀態,使得PCIe功能(PCIe Function 0~PCIe Function N)的快速PCI介面的正常配置可以使其可由通常與PCIe功能PCIe Function 0~PCIe Function N相關聯的驅動器使用。
當將FLR初始化時,目標PCIe功能PCIe Function 0~PCIe Function N必須按如下行動:
- PCIe功能PCIe Function 0~PCIe Function N可以返回針對使FLR操作初始化的配置寫入的完成,並且然後可以將FLR初始化。
- 當正在進行FLR時,在針對PCIe功能PCIe Function 0~PCIe Function N的請求到達的情况下,可以允許將該請求靜默地丟棄(在更新流量控制信用之後)而不將其記錄或用訊號通知為錯誤。另外,如果完成到達,則可以允許將該完成作為意外完成來處理或靜默地丟棄而不將其記錄或用訊號通知為錯誤。
當需要PCIe功能(PCIe Function 0~PCIe Function N)在時間限制內完成FLR操作時,後續的功能特定的初始化序列可能需要額外的時間。當需要額外的時間時,當在該時間限制之後接收到配置請求時,PCIe功能(PCIe Function 0~PCIe Function N)可以返回配置請求重試狀態(configuration request retry status,CRS)完成狀態。在PCIe功能(PCIe Function 0~PCIe 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描述的配置空間、暫存器設置處理、錯誤處理操作和功能級重設操作可以應用於PCIe物理功能0。
物理功能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)在設置虛擬功能致能(VF Enable)之後,已經經過最小虛擬功能致能時間。虛擬功能致能時間可以是與虛擬功能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未初始化(D0uninitialized)狀態。如果物理功能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的暫存器字段值來執行配置操作。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function N可以執行錯誤處理操作。例如,當物理功能PF0使用高級錯誤報告來處理錯誤時,虛擬功能VF0_1~VF0_N也可以使用高級錯誤報告來處理錯誤。
根據實施例,複數個PCIe功能PCIe Function 0~PCIe Function 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訊息。
在由複數個系統映像組成的虛擬化環境中,特定系統映像的作業系統(OS)終止和重新啓動操作可以不影響另一系統映像的操作。然而,當特定系統映像存取被分配給另一系統映像的PCIe功能時,這可能導致另一系統映像的錯誤。
因此,可以在一些平臺中使用具有使用如圖3所示的虛擬功能的SR-IOV配置的計算系統300。在具有SR-IOV配置的計算系統300中,可以使用虛擬位址來存取PCIe功能。因此,特定系統映像可能無法存取被分配給另一個系統映像的PCIe功能。然而,在具有SR-IOV配置的計算系統300中,可能需要諸如用於將虛擬位址轉換為物理位址的轉換代理320的軟體或硬體。另外,計算系統300的性能可能由於位址轉換而劣化。
因為使用物理位址,所以由如圖2所示的多功能裝置組成的計算系統200可能不需要位址轉換操作。然而,由於由多功能裝置組成的計算系統200不使用虛擬位址,因此特定系統映像可能存取另一系統映像。因此,計算系統200可能具有弱安全性。
因此,需要加强多功能裝置的弱安全性並且提高計算系統200的性能的技術。
圖6示出了根據本揭示內容的實施例的PCIe功能600。
如圖6所示的主機1000a、複數個系統映像210-1~210-n和根聯合體230可以分別表示如圖2所示的主機1000a、複數個系統映像210-1~210-n和根聯合體230。在實施例中,系統映像201-1~201-n是虛擬機,虛擬機可以是系統虛擬機或進程虛擬機。
參照圖6,PCIe功能600可以被分配給複數個系統映像210-1~210-n中的一個。在圖6中,可以假設PCIe功能600被分配給系統映像210-i。
根據實施例,PCIe功能600可以是PCIe介面適用的各種功能中的一種,諸如物理功能、虛擬功能、基本功能等。基本功能可以是在使用多根I/O虛擬化(Multi Root I/O Virtualization, MR-IOV)的虛擬化環境中使用的PCIe功能。MR-IOV可以與允許系統映像210-1~210-n在包括複數個虛擬層級結構的虛擬化環境中共享PCIe硬體資源的技術相對應。虛擬層級結構中的每一個可以包括至少一個物理功能。另外,虛擬層級結構中的每一個可以進一步包括被分配給物理功能的至少一個虛擬功能。根據實施例,基本功能可以是支持MR-IOV能力的PCIe功能。在包括複數個根聯合體的虛擬化環境中,MR-IOV能力可以具有允許將單個PCIe裝置指示為系統映像210-1~210-n上的複數個PCIe裝置的規範。例如,基本功能可以根據MR-IOV能力來管理虛擬層級結構和物理功能,並將虛擬功能分配給虛擬層級結構。
根據實施例,PCIe功能600可以包括存取標識資訊控制器610、資料包接收器620和存取允許確定器630。
存取標識資訊控制器610可以生成存取標識資訊ACCESS_ID。存取標識資訊ACCESS_ID可以是用於允許存取PCIe功能600的資訊。換句話說,分配系統映像210-i可以使用存取標識資訊ACCESS_ID來存取PCIe功能600。因此,複數個PCIe功能PCIe Function 0~PCIe Function N(諸如圖3至圖5中所示的那些)中的每一個可以生成唯一的存取標識資訊ACCESS_ID。系統映像210-1~210-n中的每一個可以從複數個PCIe功能PCIe Function 0~PCIe Function N中的每一個接收唯一的存取標識資訊ACCESS_ID。
根據實施例,存取標識資訊ACCESS_ID可以由存取標識資訊控制器610或主機1000a生成。圖6描述了存取標識資訊ACCESS_ID由存取標識資訊控制器610生成的示例。下文將參照圖12和圖13描述存取標識資訊ACCESS_ID由主機1000a生成的示例。
另外,存取標識資訊控制器610可以儲存存取標識資訊ACCESS_ID並向分配系統映像210-i提供存取標識資訊ACCESS_ID。例如,存取標識資訊控制器610可以向根聯合體230提供存取標識資訊ACCESS_ID。根聯合體230可以將提供的存取標識資訊ACCESS_ID傳輸到系統映像210-i。系統映像210-i可以儲存所傳送的存取標識資訊ACCESS_ID。
資料包接收器620可以從複數個系統映像210-1~210-n之中的目標系統映像210-i接收資料包。在本揭示內容中,目標系統映像210-i可以被定義為將資料包傳送到PCIe功能600的系統映像210-i。
根據實施例,資料包可以包括目標標識資訊。例如,資料包的前綴可以包括目標標識資訊。目標標識資訊可以指示目標系統映像210-i。換句話說,目標系統映像210-i可以基於從所分配的PCIe功能600接收的存取標識資訊來接收和儲存目標標識資訊。
根據實施例,資料包可以是交易層資料包TLP。目標系統映像210-i可以將包括目標標識資訊的交易層資料包TLP傳送到PCIe功能600以進行存取。例如,目標系統映像210-i可以透過根聯合體來將交易層資料包TLP傳送到PCIe功能600。目標標識資訊可以被包括在交易層資料包TLP的前綴中。資料包接收器620可以從目標系統映像210-i接收交易層資料包TLP。之後,資料包接收器620可以向存取允許確定器630提供交易層資料包TLP。
存取允許確定器630可以基於存取標識資訊ACCESS_ID和目標標識資訊來確定是否允許存取目標系統映像210-i。例如,存取允許確定器630可以從存取標識資訊控制器610接收存取標識資訊ACCESS_ID,並從交易層資料包TLP中獲得目標標識資訊。存取允許確定器630可以將存取標識資訊ACCESS_ID與目標標識資訊進行比較,並基於比較結果來確定是否允許存取目標系統映像210-i。
例如,當存取標識資訊ACCESS_ID和目標標識資訊彼此一致時,存取允許確定器630可以允許存取目標系統映像210-i。
在另一示例中,當存取標識資訊ACCESS_ID和目標標識資訊彼此不一致時,存取允許確定器630可以不允許存取目標系統映像210-i。例如,當從另一系統映像而不是從被分配了PCIe功能600的系統映像210-i接收到交易層資料包TLP時,存取標識資訊ACCESS_ID和目標標識資訊可能彼此不一致。存取允許確定器630可以丟棄接收到的交易層資料包TLP並向目標系統映像提供完成方中止(Completer Abort, CA)資訊。
因此,根據實施例,透過基於包括在資料包的前綴中的目標標識資訊和儲存在PCIe功能中的存取標識資訊來確定是否允許存取,可以增强包括PCIe功能的計算系統200的安全性。
圖7示出了根據本揭示內容的實施例的交易層資料包700的結構。
根據實施例,交易層資料包700可以是用於在PCIe介面中執行通訊的資料包。例如,請求方可以透過使用交易層資料包700向完成方提供請求。請求方可以表示用於發布請求的配置,並且完成方可以是提供與該請求相對應的完成的配置。
參照圖7,交易層資料包700可以包括前綴PREFIX、標頭HEADER、資料有效載荷DATA PAYLOAD和摘要DIGEST。
前綴PREFIX位於標頭HEADER之前,並且可以包括附加資訊。根據實施例,前綴PREFIX可以包括存取標識資訊ACCESS_ID。例如,系統映像210-1~210-n可以透過在前綴PREFIX中包括存取標識資訊ACCESS_ID來生成交易層資料包700。系統映像210-1~210-n可以向PCIe功能600提供所生成的交易層資料包700。PCIe功能600可以從目標系統映像(210-1~210-n)接收交易層資料包700。所接收的交易層資料包700的前綴PREFIX可以包括目標標識資訊,即,來自目標系統映像(210-1~210-n)的存取標識資訊ACCESS_ID。
標頭HEADER可以包含確定交易層資料包700的特性和目的所需的資訊。例如,標頭HEADER可以包括諸如格式、類型、交易ID、屬性、流量類別、位址/路由資訊、字節致能、訊息編碼和交易層資料包700的完成狀態的資訊。
資料有效載荷DATA PAYLOAD可以包括待透過交易層資料包700傳輸的資訊。換句話說,資料有效載荷DATA PAYLOAD可以包括將由接收交易層資料包700的配置來處理的資訊。
摘要DIGEST可以包括用於檢測交易層資料包700中的錯誤的端到端CRC(end-to-end CRC, ECRC)值。摘要DIGEST可以是可選的。
圖8示出了根據本揭示內容的實施例的生成存取標識資訊的示例。
在圖8中,可以假設PCIe功能600被分配給系統映像210-i。
圖8示出了存取標識資訊ACCESS_ID由PCIe功能600生成的示例。
參照圖8,存取標識資訊控制器610可以包括存取標識資訊生成器611、存取標識資訊儲存裝置612和存取標識資訊提供器613。
存取標識資訊生成器611可以根據隨機數生成方案來生成隨機數並基於所生成的隨機數來生成存取標識資訊ACCESS_ID。例如,存取標識資訊ACCESS_ID可以包括隨機數。
根據實施例,存取標識資訊生成器611可以基於與在另一PCIe功能中使用的種子(seed)不同的種子來生成隨機數。種子可以包括用於生成隨機數的隨機數表。例如,複數個PCIe功能PCIe Function 0~PCIe Function N可以基於不同的各個種子來生成隨機數。
根據實施例,存取標識資訊生成器611可以基於另一PCIe功能的存取標識資訊與由存取標識資訊生成器611生成的存取標識資訊之間的比較結果來確定是否不重新生成存取標識資訊ACCESS_ID。例如,存取標識資訊生成器611可以從另一PCIe功能接收該另一PCIe功能的存取標識資訊。之後,存取標識資訊生成器611可以將另一PCIe功能的存取標識資訊與由存取標識資訊生成器611生成的存取標識資訊進行比較。當另一PCIe功能的存取標識資訊與由存取標識資訊生成器611生成的存取標識資訊一致時,存取標識資訊生成器611可以重新生成PCIe功能600的存取標識資訊。在實施例中,當存取標識資訊與另一存取標識資訊相同時,該存取標識資訊與該另一存取標識資訊一致,但實施例不限於此。隨後,存取標識資訊生成器611可以重複存取標識資訊的比較和存取標識資訊的重新生成,直到另一PCIe功能的存取標識資訊與由存取標識資訊生成器611生成的存取標識資訊不一致。當另一PCIe功能的存取標識資訊與所生成的存取標識資訊不一致時,存取標識資訊生成器611可以將所生成的存取標識資訊ACCESS_ID提供到存取標識資訊儲存裝置612和存取標識資訊提供器613。
存取標識資訊儲存裝置612可以儲存存取標識資訊ACCESS_ID。在實施例中,存取標識資訊儲存裝置612可以儲存兩個或更多個不同的存取標識資訊ACCESS_ID。
存取標識資訊提供器613可以向分配系統映像210-i提供存取標識資訊ACCESS_ID。例如,存取標識資訊提供器613可以向根聯合體230提供存取標識資訊ACCESS_ID。根聯合體230可以向分配系統映像210-i提供存取標識資訊ACCESS_ID。
另外,當確定是否允許存取時,存取標識資訊提供器613可以向存取允許確定器630提供儲存在存取標識資訊儲存裝置612中的一個或複數個存取標識資訊ACCESS_ID。
根據實施例,存取標識資訊提供器613可以使用以下中的一項來提供存取標識資訊ACCESS_ID:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(System Manager bus, SMbus)上的管理組件傳輸協定(Management Component Transport Protocol, MCTP)和PCIe上的MCTP。
根據實施例,供應商定義訊息可以允許擴展快速PCI訊息傳遞能力。例如,供應商定義訊息可以包括用於傳輸訊息的請求方ID字段、用於接收訊息的接收方ID字段和供應商定義的字段。接收方ID可以包括匯流排編號、裝置編號和功能編號中的至少一個。例如,存取標識資訊提供器613可以透過供應商定義訊息的供應商定義的字段向系統映像210-i提供存取標識資訊ACCESS_ID。請求方ID可以包括PCIe功能600的標識資訊。請求方ID可以包括系統映像210-i的標識資訊。
根據實施例,供應商特定能力(vendor-specific capability)可以是PCI兼容配置空間中的能力結構。供應商特定能力可以允許裝置供應商將能力機制用於供應商特定資訊。供應商特定能力暫存器可以包括能力ID字段、下一個能力指針字段、能力長度字段和供應商特定資訊字段。能力ID字段可以指示PCIe能力結構。能力ID字段可以提供指示供應商特定能力結構的能力ID。下一個能力指針字段可以指示下一個PCI能力結構的偏移。當能力的鏈接列表中不存在項目時,下一個能力指針字段可以包括00h。能力長度字段可以提供能力結構中包括的字節的數量。供應商特定資訊字段可以根據供應商而改變。因此,可以根據使用者將供應商特定資訊字段設置為各種值。例如,存取標識資訊提供器613可以透過供應商特定能力的供應商特定資訊字段來向系統映像210-i提供存取標識資訊ACCESS_ID。
根據實施例,由使用者定義的新PCIe能力可以包括提供資訊的裝置的標識資訊、接收資訊的裝置的標識資訊以及包括資訊的字段。
根據實施例,存取標識資訊控制器610可以每隔預定時段更新存取標識資訊ACCESS_ID。例如,存取標識資訊生成器611可以每隔預設時段生成新的存取標識資訊。存取標識資訊生成器611可以執行上述存取標識資訊比較和存取標識資訊重新生成。存取標識資訊儲存裝置612可以儲存新的存取標識資訊,並且存取標識資訊提供器613可以向分配系統映像210-i提供新的存取標識資訊。因此,系統映像210-i可以每隔預定時段儲存新的存取標識資訊。系統映像210-i可以移除在生成新的存取標識資訊之前生成的先前的存取標識資訊,並且可以向PCIe功能600提供包括新的存取標識資訊的資料包。
根據實施例,當存取標識資訊儲存裝置612透過資料包接收器620從系統映像210-i接收到包括新的存取標識資訊的資料包時,存取標識資訊儲存裝置612可以移除舊的存取標識資訊。存取允許確定器630可以允許存取包括新的存取標識資訊的資料包。換句話說,存取允許確定器630在移除舊的標識資訊之後可以不允許存取包括先前存取標識資訊的資料包。另一方面,當存取標識資訊儲存裝置612沒有接收到包括新的存取標識資訊的資料包並且將新的存取標識資訊和舊的存取標識資訊都儲存在存取標識資訊儲存裝置612中時,存取允許確定器630可以允許存取新的存取標識資訊和舊的存取標識資訊。下面將參照圖11描述存取允許操作。
圖9示出了根據本揭示內容的實施例的允許存取的示例。
在圖9中,可以假設PCIe功能900被分配給系統映像210-i。
參照圖9,PCIe功能900可以進一步包括配置空間910和操作控制器920。在圖9所示的示例中,因為存取標識資訊控制器610、存取標識資訊生成器611、存取標識資訊儲存裝置612和存取允許確定器630是與圖8中所示的配置相同的配置,所以將省略對其的描述。
配置空間910可以包括用於配置PCIe功能900的資訊。例如,配置空間910可以包括用於配置通用功能900以執行與PCIe介面相關聯的操作的暫存器。根據實施例,配置空間910可以包括關於PCIe功能900中可用的能力的資訊。
根據實施例,PCIe功能900可以回應於主機1000a的配置請求而執行配置操作。PCIe功能900和主機1000a可以基於根據配置操作設置的配置空間910中儲存的值來執行通訊。
操作控制器920可以基於配置空間910中包括的資訊來控制PCIe功能900的操作。例如,操作控制器920可以基於根據配置操作設置的配置空間910來控制PCIe功能900的操作。操作控制器920可以基於在配置空間910中設置的暫存器的字段值來控制PCIe功能900的操作。
根據實施例,當確定存取允許時,操作控制器920可以處理從資料包接收器620提供的交易層資料包TLP。例如,目標系統映像210-i可以向資料包接收器620提供包括儲存在目標系統映像210-i中的目標標識資訊的交易層資料包TLP。系統映像210-i中儲存的目標標識資訊可以指示存取標識資訊。存取允許確定器630可以從資料包接收器620接收交易層資料包TLP並且從存取標識資訊提供器613接收存取標識資訊儲存裝置612中儲存的存取標識資訊ACCESS_ID。因為交易層資料包TLP中包括的目標標識資訊與存取標識資訊儲存裝置612中儲存的存取標識資訊ACCESS_ID一致(例如,相同),所以存取允許確定器630可以允許存取交易層資料包TLP。存取允許確定器630可以向資料包接收器620提供存取允許訊號ALLOW。操作控制器920可以根據存取允許訊號ALLOW來處理從資料包接收器620提供的交易層資料包TLP。
圖10示出了根據本揭示內容的實施例的不允許存取的示例。
在圖10中,可以假設PCIe功能900被分配給系統映像210-i。另外,可以假設PCIe功能900從未分配系統映像210-2接收交易層資料包TLP。
參照圖10,目標系統映像210-2可以向資料包接收器620提供包括目標系統映像210-2中儲存的目標標識資訊的交易層資料包TLP。目標系統映像210-2中儲存的目標標識資訊可以指示存取標識資訊。存取允許確定器630可以從資料包接收器620接收交易層資料包TLP並且可以從存取標識資訊提供器613接收存取標識資訊儲存裝置612中儲存的存取標識資訊ACCESS_ID。因為交易層資料包TLP中儲存的目標標識資訊和存取標識資訊ACCESS_ID彼此不一致,所以存取允許確定器630可以不允許存取交易層資料包TLP。在實施例中,當存取標識資訊與目標標識資訊相同時,存取標識資訊與目標標識資訊一致,但實施例不限於此。存取允許確定器630可以向資料包接收器620提供存取禁止訊號DISALLOW。回應於存取禁止訊號DISALLOW,資料包接收器620可以丟棄交易層資料包TLP。
根據實施例,存取允許確定器630可以向目標系統映像210-2提供完成方中止(CA)資訊。例如,存取允許確定器630可以回應於交易層資料包TLP而提供完成資訊。完成資訊可以包括指示PCIe功能900的當前狀態的資訊。例如,完成資訊可以包括完成標頭,完成標頭包括完成狀態字段。完成狀態字段可以包括成功完成(SC)資訊、不被支持請求(UR)資訊、配置請求重試狀態(CRS)資訊和完成方中止(CA)資訊。例如,存取允許確定器630可以根據針對交易層資料包TLP的存取禁止來確定來將CA資訊返回到目標系統映像210-2。
圖11示出了根據本揭示內容的實施例的確定是否允許存取的示例。
在圖11中,指向頂部和中間的箭頭指示根據時間流的、系統映像210用來傳送交易層資料包並且PCIe功能900用來提供存取標識資訊的操作。底部的框指示隨時間的存取允許條件。存取允許條件可以指用於與目標標識資訊進行比較的存取標識資訊。可以假設PCIe功能900被分配給系統映像210。系統映像210可以指示如圖2所示的複數個系統映像210-1~210-n中的一個。參照圖11描述的操作可以應用於PCIe功能600。
參照圖11,在T0,計算系統200可以處於計算系統200透過鏈路初始化和訓練來執行正常的資料包交換的狀態。因為PCIe功能900未從系統映像210接收到交易層資料包,所以在存取標識資訊儲存裝置612中可以不存在存取標識資訊(NO ACCESS_ID)。
另外,因為系統映像210未從PCIe功能900接收到存取標識資訊,所以首先提供給PCIe功能900的交易層資料包TLP可以不包括存取標識資訊。
在T1,PCIe功能900可以接收不包括存取標識資訊的交易層資料包TLP0。因為存取標識資訊儲存裝置612不包含存取標識資訊,所以存取允許確定器630可以允許存取交易層資料包TLP0。
在T2,存取標識資訊生成器611可以生成第一存取標識資訊ACCESS_ID1。所生成的第一存取標識資訊ACCESS_ID1可以被儲存在存取標識資訊儲存裝置612中。另外,PCIe功能900可以向系統映像210提供第一存取標識資訊ACCESS_ID1。
根據實施例,當新的存取標識資訊或在新的存取標識資訊之前生成的(尚未删除的)舊的存取標識資訊與目標標識資訊一致時,存取允許確定器630可以允許存取目標系統映像210。當新的存取標識資訊和舊的存取標識資訊都與目標標識資訊不一致時,存取允許確定器630可以不允許存取並且可以向目標系統映像210提供CA資訊。換句話說,存取允許確定器630可以使用新的存取標識資訊和舊的存取標識資訊作為存取允許條件,直到舊的存取標識資訊被更新為新的存取標識資訊並且舊的存取標識資訊被删除。當接收到包括新的存取標識資訊的交易層資料包時,可以從存取標識資訊儲存裝置612中删除舊的存取標識資訊。
例如,從T2到接收到包括與第一存取標識資訊ACCESS_ID1一致的目標標識資訊的交易層資料包TLP1的T3,存取允許確定器630可以允許存取不包括存取標識資訊的交易層資料包或包括第一存取標識資訊ACCESS_ID1的交易層資料包。
在T3,PCIe功能900可以從系統映像210接收包括第一存取標識資訊ACCESS_ID1的交易層資料包TLP1。因為第一存取標識資訊ACCESS_ID1尚未被删除,所以存取允許確定器630可以允許存取交易層資料包TLP1。另外,存取允許確定器630可以從存取允許條件中移除不包括存取標識資訊的交易層資料包;即,在T3由PCIe功能900接收到包括與第一存取標識資訊ACCESS_ID1一致的目標標識資訊的交易層資料包TLP1之後,將不允許存取不包括存取標識資訊的交易層資料包。
從T3到生成第二存取標識資訊ACCESS_ID2的T4,存取允許確定器630可以允許存取包括與第一存取標識資訊ACCESS_ID1一致的目標標識資訊的交易層資料包。
在T4,存取標識資訊生成器611可以生成第二存取標識資訊ACCESS_ID2。T4可以指從T2開始經過預定時段之後的時間。第二存取標識資訊ACCESS_ID2可以被儲存在存取標識資訊儲存裝置612中。存取標識資訊儲存裝置612可以一起儲存第一存取標識資訊ACCESS_ID1和第二存取標識資訊ACCESS_ID2。另外,PCIe功能900可以向系統映像210提供第二存取標識資訊ACCESS_ID2。
從T4到接收到包括第二存取標識資訊ACCESS_ID2的交易層資料包TLP3的T6,存取允許確定器630可以允許存取包括與第一存取標識資訊ACCESS_ID1一致的目標標識資訊的交易層資料包或包括與第二存取標識資訊ACCESS_ID2一致的目標標識資訊的交易層資料包。
在T5,PCIe功能900可以從系統映像210接收包括與第一存取標識資訊ACCESS_ID1一致的目標標識資訊的交易層資料包TLP2。存取允許確定器630可以允許存取交易層資料包TLP2。因為PCIe功能900已經接收到與對應於舊的存取標識資訊的第一存取標識資訊ACCESS_ID1一致的目標標識資訊,而未接收到與新的存取標識資訊即第二存取標識資訊ACCESS_ID2一致的目標標識資訊,所以第一存取標識資訊ACCESS_ID1可以被保留在存取標識資訊儲存裝置612中。
在T6,PCIe功能900可以從系統映像210接收包括與第二存取標識資訊ACCESS_ID2一致的目標標識資訊的交易層資料包TLP3。作為回應,存取允許確定器630可以允許存取交易層資料包TLP3,並且存取標識資訊儲存裝置612可以移除第一存取標識資訊ACCESS_ID1。另外,存取允許確定器630可以從存取允許條件中移除包括與第一存取標識資訊ACCESS_ID1一致的目標標識資訊的交易層資料包。
根據實施例,當從存取標識資訊儲存裝置612中移除舊的存取標識資訊時,存取允許確定器630可以基於最近的存取標識資訊與目標標識資訊的比較結果來確定是否允許存取目標系統映像210。例如,當最近的存取標識資訊和目標標識資訊彼此一致時,存取允許確定器630可以允許存取目標系統映像210。另外,當新的存取標識資訊與目標標識資訊不一致時,存取允許確定器630可以不允許存取目標系統映像210並且可以向目標系統映像210提供CA資訊。
例如,從T6到生成第三存取標識資訊ACCESS_ID3的T7,存取允許確定器630可以允許存取包括與第二存取標識資訊ACCESS_ID2一致的目標標識資訊的交易層資料包。
在T7,存取標識資訊生成器611可以生成第三存取標識資訊ACCESS_ID3。T7可以指從T4開始經過預定時段之後的時間。第三存取標識資訊ACCESS_ID3可以被儲存在存取標識資訊儲存裝置612中。存取標識資訊儲存裝置612可以一起儲存第二存取標識資訊ACCESS_ID2和第三存取標識資訊ACCESS_ID3。另外,PCIe功能900可以向系統映像210提供第三存取標識資訊ACCESS_ID3。
從T7到接收到包括第三存取標識資訊ACCESS_ID3的交易層資料包的時間,存取允許確定器630可以允許存取包括與第二存取標識資訊ACCESS_ID2一致的目標標識資訊的交易層資料包或包括與第三存取標識資訊ACCESS_ID3一致的目標標識資訊的交易層資料包。
圖12示出了根據本揭示內容的實施例的生成存取標識資訊的另一示例。
參照圖12描述了存取標識資訊ACCESS_ID由系統映像210-1~210-n生成的示例。在圖12中,可以假設PCIe功能600被分配給系統映像210-i。另外,在圖12中,存取標識資訊控制器610可以不包括存取標識資訊生成器611。
因為如圖12所示的主機1000a、複數個系統映像210-1~210-n、根聯合體230、資料包接收器620和存取允許確定器630與圖6或圖8中所示的主機1000a、複數個系統映像210-1~210-n、根聯合體230、資料包接收器620和存取允許確定器630相同,所以將省略對其的描述。
參照圖12,主機1000a可以生成存取標識資訊ACCESS_ID。例如,系統映像210-i可以生成存取標識資訊ACCESS_ID。系統映像210-i可以儲存存取標識資訊ACCESS_ID。系統映像210-i可以向PCIe功能600提供存取標識資訊ACCESS_ID。上面參照圖8描述的由存取標識資訊生成器611執行的存取標識資訊生成操作,例如基於隨機數的存取標識資訊的生成、存取標識資訊重新生成以及預定時段的存取標識資訊的更新,在本實施例中可以由系統映像210-i來執行。
根據實施例,系統映像210-i可以透過使用以下中的一項來向PCIe功能600提供存取標識資訊ACCESS_ID:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(SMbus)上的管理組件傳輸協定(MCTP)和PCIe上的MCTP。
存取標識資訊儲存裝置612可以儲存從系統映像210-i提供的存取標識資訊ACCESS_ID。存取允許確定器630可以基於從存取標識資訊提供器613傳送的存取標識資訊ACCESS_ID來確定是否允許存取。
因為存取標識資訊ACCESS_ID由系統映像210-i生成,所以系統映像210-i可以不需要提供舊的存取標識資訊;即,系統映像210-i在發送新生成的存取標識資訊ACCESS_ID之後將不使用舊的存取標識資訊來發送資料包。因此,當系統映像210-i每隔預定時段更新存取標識資訊ACCESS_ID時,存取允許確定器630可以僅基於最近接收到的存取標識資訊來確定是否允許存取。
圖13示出了根據本揭示內容的實施例的生成存取標識資訊的另一示例。
圖13示出了存取標識資訊ACCESS_ID由虛擬化中介220生成的示例。在圖13中,可以假設PCIe功能600被分配給系統映像210-i。另外,在圖13中,存取標識資訊控制器610可以不包括存取標識資訊生成器611。
因為如圖13所示的主機1000a、複數個系統映像210-1~210-n、根聯合體230、資料包接收器620和存取允許確定器630與圖6或圖8中所示的主機1000a、複數個系統映像210-1~210-n、根聯合體230、資料包接收器620和存取允許確定器630相同,所以將省略對其的描述。
參照圖13,主機1000a可以生成存取標識資訊ACCESS_ID。例如,虛擬化中介可以生成存取標識資訊ACCESS_ID。例如,虛擬化中介可以儲存存取標識資訊ACCESS_ID。虛擬化中介220可以向系統映像210-i和PCIe功能600提供存取標識資訊ACCESS_ID。上面參照圖8描述的由存取標識資訊生成器611執行的存取標識資訊生成操作,例如基於隨機數的存取標識資訊的生成、存取標識資訊重新生成以及預定時段的存取標識資訊的更新,可以由本實施例中的虛擬化中介220來執行。
根據實施例,虛擬化中介220可以透過使用以下中的一項來向PCIe功能600提供存取標識資訊ACCESS_ID:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(SMbus)上的管理組件傳輸協定(MCTP)和PCIe上的MCTP。
存取標識資訊儲存裝置612可以儲存從虛擬化中介220提供的存取標識資訊ACCESS_ID。存取允許確定器630可以基於從存取標識資訊提供器613傳送的存取標識資訊ACCESS_ID來確定是否允許存取。
在虛擬化中介220生成存取標識資訊ACCESS_ID之後,系統映像210-i可能需要時間將舊的存取標識資訊更新為新的存取標識資訊。因此,上面參照圖11描述的確定是否允許存取的操作可以應用於存取允許確定器630。
圖14是示出了根據本發明的實施例的操作PCIe功能的過程的流程圖。
參照圖14,操作過程可以由圖6或圖8的PCIe功能600或者圖9或圖10的PCIe功能900執行。因此,下面將描述的操作PCIe功能600的過程可以適用於PCIe功能900。
參照圖14,在步驟S1401,PCIe功能600可以生成存取標識資訊。
在步驟S1403,PCIe功能600可以向分配系統映像提供存取標識資訊。
根據實施例,PCIe功能600可以透過使用以下中的一項來提供存取標識資訊:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(SMbus)上的管理組件傳輸協定(MCTP)和PCIe上的MCTP。
在步驟S1405,PCIe功能600可以從複數個系統映像之中的目標系統映像接收包括指示目標系統映像的目標標識資訊的資料包。
目標標識資訊可以被包括在資料包的前綴中。
在步驟S1407,PCIe功能600可以基於存取標識資訊和目標標識資訊來確定是否允許存取目標系統映像。
當存取標識資訊和目標標識資訊彼此一致時,PCIe功能600可以允許存取目標系統映像。另外,當存取標識資訊和目標標識資訊彼此不一致時,PCIe功能600可以不允許存取目標系統映像並且可以向目標系統映像提供CA資訊。
圖15是示出了根據本揭示內容的實施例的生成存取標識資訊的處理的流程圖。
根據實施例,圖15是圖14的步驟S1401和步驟S1403的詳細示圖。
參照圖15,生成存取標識資訊的過程可以由圖6或圖8的PCIe功能600或者圖9或圖10的PCIe功能900執行。因此,下面將描述的由PCIe功能600執行的操作過程可以適用於PCIe功能900。
參照圖15,在步驟S1501,PCIe功能600可以使用隨機數生成方案來生成隨機數。
PCIe功能600可以基於與另一PCIe功能使用的種子不同的種子來生成隨機數。
在步驟S1503,PCIe功能600可以基於所生成的隨機數來生成存取標識資訊。
在步驟S1505,PCIe功能600可以從另一PCIe功能接收該另一PCIe功能的存取標識資訊。
在步驟S1507,PCIe功能600可以確定另一PCIe功能的存取標識資訊是否與所生成的存取標識資訊一致。
根據步驟S1507的確定結果,當另一PCIe功能的存取標識資訊與所生成的存取標識資訊一致時,PCIe功能600可以重複步驟S1501、步驟S1503和步驟S1505。
根據步驟S1507的確定結果,當另一PCIe功能的存取標識資訊與所生成的存取標識資訊不一致時,PCIe功能600可以在步驟S1509向系統映像提供所生成的存取標識資訊。
圖16是示出了根據本揭示內容的實施例的管理存取標識資訊的過程的流程圖。
根據實施例,圖16是圖14的步驟S1401和步驟S1403的詳細示圖。
參照圖16,管理存取標識資訊的過程可以由圖6或圖8的PCIe功能600或者圖9或圖10的PCIe功能900執行。因此,下面將描述的由PCIe功能600執行的操作過程可以適用於PCIe功能900。
參照圖16,在步驟S1601,PCIe功能600可以透過隨機數生成方案來生成隨機數。
在步驟S1603,PCIe功能600可以基於所生成的隨機數來生成存取標識資訊。
在步驟S1605,PCIe功能600可以向系統映像提供所生成的存取標識資訊。
在步驟S1607,PCIe功能600可以確定從最後生成存取標識資訊的時間起是否已經經過了預定時段。
根據在步驟S1607的確定結果,當未經過預定時段時,PCIe功能600可以在步驟S1607繼續檢查是否已經經過了預定時段。
根據步驟S1607的確定結果,當已經經過了預定時段時,PCIe功能600可以在步驟S1609生成新的存取標識資訊。
在步驟S1611,PCIe功能600可以向系統映像提供新的存取標識資訊。
在步驟S1613,PCIe功能600可以確定是否接收到新的存取標識資訊。例如,PCIe功能600可以確定是否接收到包括與新存取標識資訊一致的目標標識資訊的資料包。
作為步驟S1613的確定結果,當沒有接收到新的存取標識資訊時,PCIe功能600可以在步驟S1613繼續檢查是否接收到新的存取標識資訊。
作為步驟S1613的確定結果,當接收到新的存取標識資訊時,在步驟S1615,PCIe功能600可以移除在生成新的存取標識資訊之前生成的舊的存取標識資訊。
圖17是示出根據本揭示內容的實施例的確定是否允許存取的過程的流程圖。
根據實施例,圖17是圖14的步驟S1407的詳細示圖。
例如,參照圖17,確定是否允許存取的過程可以由圖6或圖8的PCIe功能600或者圖9或圖10的PCIe功能900執行。下面將描述的由PCIe功能600執行的操作過程可以適用於PCIe功能900。
參照圖17,在步驟S1701中,PCIe功能600可以確定存取標識資訊和從系統映像接收到的目標標識資訊是否一致。
作為步驟S1701的確定結果,當存取標識資訊和目標標識資訊彼此一致時,PCIe功能600可以在步驟S1703允許存取系統映像。
作為步驟S1701的確定結果,當存取標識資訊和目標標識資訊彼此不一致時,PCIe功能600可以在步驟S1705向系統映像提供CA資訊。
根據本揭示內容,可以提供一種高安全性的PCIe功能及其操作處理。
根據本揭示內容,可以提供一種不因位址轉換而導致性能劣化的PCIe功能及其操作處理。
雖然出於說明性目的公開了本揭示內容的示例性實施例,但是本發明所屬技術領域中具有通常知識者將理解的是,可以進行各種修改、添加和替換。因此,本發明旨在涵蓋所有這些修改,只要它們落在所附申請專利範圍及其等同方案的範圍內即可。
100:計算系統
200:計算系統
210-1:系統映像
210-2:系統映像
210-i:系統映像
210-n:系統映像
220:虛擬化中介
230:根聯合體
231-1:根埠
232-2:根埠
240:交換機
300:計算系統
310:單根PCI管理器
320:轉換代理
330:位址轉換和保護表
341:位址轉換快取
342:物理功能
343:虛擬功能
400:PCIe裝置
500:PCIe裝置
600:PCIe功能
610:存取標識資訊控制器
611:存取標識資訊生成器
612:存取標識資訊儲存裝置
613:存取標識資訊提供器
620:資料包接收器
630:存取允許確定器
700:交易層資料包
900:PCIe功能
910:配置空間
920:操作控制器
1000:主機
1000a:主機
1000b:主機
1100:處理器
1200:記憶體
1300:輸入/輸出管理器
1400:匯流排
2000:快速週邊組件互連裝置
2000-1~2000-3:PCIe裝置
ACCESS_ID:存取標識資訊
ACCESS_ID1:第一存取標識資訊
ACCESS_ID2:第二存取標識資訊
ACCESS_ID3:第三存取標識資訊
ALLOW:存取允許訊號
CA:完成方中止
DISALLOW:存取禁止訊號
NO ACCESS_ID:不存在存取標識資訊
PCIe Function 0~PCIe Function N:PCIe功能
PF0:物理功能
PREFIX:前綴
S1401~S1407:步驟
S1501~S1509:步驟
S1601~S1613:步驟
S1701~S1705:步驟
T0~T7:時間
TLP:交易層資料包
TLP0:交易層資料包
TLP1:交易層資料包
TLP2:交易層資料包
TLP3:交易層資料包
VF0_1~VF0_N:虛擬功能
圖1示出了根據本揭示內容的實施例的計算系統的示例;
圖2示出了根據本揭示內容的實施例的計算系統的另一示例;
圖3示出了根據本揭示內容的實施例的計算系統的另一示例;
圖4示出了根據本揭示內容實施例的多功能裝置;
圖5示出了根據本揭示內容的實施例的具有單根輸入/輸出虛擬化(single root input/output virtualization,SR-IOV)能力的PCIe裝置的示例;
圖6示出了根據本揭示內容的實施例的PCIe功能;
圖7示出了根據本揭示內容的實施例的交易層資料包(TLP)的結構;
圖8示出了根據本揭示內容的實施例的生成存取標識資訊的示例;
圖9示出了根據本揭示內容的實施例的允許存取的示例;
圖10示出了根據本揭示內容的實施例的不允許存取的示例;
圖11示出了根據本揭示內容的實施例的確定是否允許存取的示例;
圖12示出了根據本揭示內容的實施例的生成存取標識資訊的另一示例;
圖13示出了根據本揭示內容的實施例的生成存取標識資訊的另一示例;
圖14是示出了根據本發明的實施例的操作PCIe功能的過程的流程圖;
圖15是示出了根據本揭示內容的實施例的生成存取標識資訊的過程的流程圖;
圖16是示出了根據本揭示內容的實施例的管理存取標識資訊的過程的流程圖;
圖17是示出根據本揭示內容的實施例的確定是否允許存取的過程的流程圖。
無
210-1:系統映像
210-2:系統映像
210-i:系統映像
210-n:系統映像
230:根聯合體
600:PCIe功能
610:存取標識資訊控制器
620:資料包接收器
630:存取允許確定器
1000a:主機
ACCESS_ID:存取標識資訊
TLP:交易層資料包
Claims (20)
- 一種快速週邊組件互連(Peripheral Component Interconnect Express, PCIe)功能,所述PCIe功能包括: 存取標識資訊控制器,生成用於允許存取所述PCIe功能的第一存取標識資訊,並且向已經分配了所述PCIe功能的分配系統映像提供所述第一存取標識資訊,所述分配系統映像是複數個系統映像中的一個;以及 資料包接收器,從目標系統映像接收包括目標標識資訊的資料包,所述目標標識資訊指示從所述複數個系統映像之中選擇的所述目標系統映像;以及 存取允許確定器,基於所述第一存取標識資訊和所述目標標識資訊來確定是否允許存取所述目標系統映像。
- 如請求項1所述的PCIe功能,其中所述PCIe功能是物理功能、虛擬功能和基礎功能中的一種。
- 如請求項1所述的PCIe功能,其中所述目標標識資訊被包括在所述資料包的前綴中。
- 如請求項1所述的PCIe功能,其中當所述第一存取標識資訊與所述目標標識資訊彼此一致時,所述存取允許確定器允許存取所述目標系統映像,或 當所述第一存取標識資訊與所述目標標識資訊彼此不一致時,所述存取允許確定器向所述目標系統映像提供完成方中止(completer abort, CA)資訊。
- 如請求項1所述的PCIe功能,其中所述PCIe功能為第一PCIe功能,並且所述存取標識資訊控制器包括: 存取標識資訊生成器,根據隨機數生成方案來生成隨機數,其中所述隨機數用於生成所述第一存取標識資訊; 存取標識資訊儲存裝置,儲存所述第一存取標識資訊;以及 存取標識資訊提供器,向所述分配系統映像提供所述第一存取標識資訊。
- 如請求項5所述的PCIe功能,其中所述存取標識資訊生成器基於與第二PCIe功能中使用的種子不同的種子來生成所述隨機數,所述第二PCIe功能與所述第一PCIe功能不同。
- 如請求項5所述的PCIe功能,其中所述存取標識資訊生成器從第二PCIe功能接收所述第二PCIe功能的存取標識資訊,並且當所述第二PCIe功能的存取標識資訊與由所述存取標識資訊生成器生成的所述第一存取標識資訊彼此一致時,重新生成所述PCIe功能的所述第一存取標識資訊。
- 如請求項5所述的PCIe功能,其中所述存取標識資訊生成器在生成所述第一存取標識資訊之後的預定時間處生成第二存取標識資訊, 其中所述存取標識資訊儲存裝置儲存所述第二存取標識資訊,並且 其中所述存取標識資訊提供器向所述分配系統映像提供所述第二存取標識資訊。
- 如請求項8所述的PCIe功能,其中當所述第一存取標識資訊和所述第二存取標識資訊被儲存在所述存取標識資訊儲存裝置中時: 當所述第二存取標識資訊或所述第一存取標識資訊與所述目標標識資訊一致時,所述存取允許確定器允許存取所述目標系統映像,或 當所述第二存取標識資訊與所述目標標識資訊不一致並且所述第一存取標識資訊與所述目標標識資訊不一致時,所述存取允許確定器向所述目標系統映像提供完成方中止(CA)資訊。
- 如請求項8所述的PCIe功能,其中當所述資料包接收器接收到包括與所述第二存取標識資訊一致的目標標識資訊的資料包時,所述存取標識資訊儲存裝置移除所述第一存取標識資訊。
- 如請求項10所述的PCIe功能,其中當所述第二存取標識資訊與所述目標標識資訊彼此一致時,所述存取允許確定器允許存取所述目標系統映像,或 當所述第二存取標識資訊與所述目標標識資訊彼此不一致時,所述存取允許確定器向所述目標系統映像提供完成方中止(CA)資訊。
- 如請求項5所述的PCIe功能,其中所述存取標識資訊提供器透過使用以下中的一項來向所述分配系統映像提供所述第一存取標識資訊:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(System Manager bus, SMbus)上的管理組件傳輸協定(Management Component Transport Protocol, MCTP)、以及PCIe上的MCTP。
- 一種計算系統:包括: 複數個快速週邊組件互連(Peripheral Component Interconnect Express, PCIe)功能;以及 主機,包括複數個系統映像,所述主機執行: 生成存取標識資訊,所述存取標識資訊用於允許存取所述複數個PCIe功能之中的被分配給所述複數個系統映像中的相應系統映像的PCIe功能,並且 向所述PCIe功能提供所述存取標識資訊,並且 所述PCIe功能執行: 儲存從所述主機提供的所述存取標識資訊, 從目標系統映像接收資料包,所述資料包包括指示所述目標系統映像的目標標識資訊,所述目標系統映像是所述複數個系統映像中的一個,並且 基於所述存取標識資訊和所述目標標識資訊來確定是否允許存取所述目標系統映像。
- 如請求項13所述的計算系統,其中所述相應系統映像儲存所述存取標識資訊,生成包括所述存取標識資訊的資料包,並向所述PCIe功能提供所述資料包以存取所述PCIe功能。
- 如請求項14所述的計算系統,其中所述存取標識資訊被包括在所述資料包的前綴中。
- 如請求項13所述的計算系統,其中所述主機進一步包括:虛擬化中介,管理所述複數個系統映像。
- 如請求項16所述的計算系統,其中由所述相應系統映像和所述虛擬化中介中的一個生成所述存取標識資訊。
- 如請求項13所述的計算系統,其中所述主機透過使用以下中一項來向所分配的PCIe功能提供所述存取標識資訊:供應商定義訊息、供應商定義能力、由使用者定義的新PCIe能力、系統管理器匯流排(System Manager bus, SMbus)上的管理組件傳輸協定(Management Component Transport Protocol, MCTP)、以及PCIe上的MCTP。
- 一種用於操作快速週邊組件互連(Peripheral Component Interconnect Express, PCIe)功能的方法,所述PCIe功能被分配給複數個系統映像中的一個,所述方法包括: 生成用於允許存取所述PCIe功能的存取標識資訊; 向分配系統映像提供所述存取標識資訊; 從目標系統映像接收資料包,所述資料包包括指示所述複數個系統映像之中的所述目標系統映像的目標標識資訊;並且 基於所述存取標識資訊和所述目標標識資訊來確定是否允許存取所述目標系統映像。
- 如請求項19所述的方法,其中所述目標標識資訊被包括在所述資料包的前綴中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210048077A KR102568909B1 (ko) | 2021-04-13 | 2021-04-13 | PCIe 펑션 및 그 동작 방법 |
KR10-2021-0048077 | 2021-04-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202240414A true TW202240414A (zh) | 2022-10-16 |
Family
ID=83509315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111114066A TW202240414A (zh) | 2021-04-13 | 2022-04-13 | PCIe功能及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220327228A1 (zh) |
KR (1) | KR102568909B1 (zh) |
CN (1) | CN115203110A (zh) |
TW (1) | TW202240414A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102570943B1 (ko) | 2021-04-13 | 2023-08-28 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
US11928070B2 (en) * | 2021-04-13 | 2024-03-12 | SK Hynix Inc. | PCIe device |
KR102568906B1 (ko) | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7979592B1 (en) | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge 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 |
US10521365B2 (en) * | 2014-10-05 | 2019-12-31 | Amazon Technologies, Inc. | Emulated endpoint configuration |
US10374926B2 (en) | 2016-01-28 | 2019-08-06 | Oracle International Corporation | System and method for monitoring logical network traffic flows using a ternary content addressable memory in a high performance computing environment |
US10498718B2 (en) | 2017-06-16 | 2019-12-03 | Amazon Technologies, Inc. | Device identification and authentication in a network |
US10929310B2 (en) | 2019-03-01 | 2021-02-23 | Cisco Technology, Inc. | Adaptive address translation caches |
US11928070B2 (en) * | 2021-04-13 | 2024-03-12 | SK Hynix Inc. | PCIe device |
KR102568906B1 (ko) * | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
-
2021
- 2021-04-13 KR KR1020210048077A patent/KR102568909B1/ko active IP Right Grant
- 2021-10-18 US US17/504,346 patent/US20220327228A1/en active Pending
-
2022
- 2022-03-03 CN CN202210202142.0A patent/CN115203110A/zh active Pending
- 2022-04-13 TW TW111114066A patent/TW202240414A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR20220141678A (ko) | 2022-10-20 |
CN115203110A (zh) | 2022-10-18 |
KR102568909B1 (ko) | 2023-08-21 |
US20220327228A1 (en) | 2022-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11983136B2 (en) | PCIe device and operating method thereof | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
US11928070B2 (en) | PCIe device | |
JP5315209B2 (ja) | 冗長構成を生成するための周辺機器相互接続入出力仮想化デバイスの使用 | |
US8103810B2 (en) | Native and non-native I/O virtualization in a single adapter | |
CN115039077A (zh) | 为实时虚拟化执行环境迁移维护存储命名空间标识符 | |
TW202240414A (zh) | PCIe功能及其操作方法 | |
US10846254B2 (en) | Management controller including virtual USB host controller | |
US10067900B2 (en) | Virtualized I/O device sharing within a distributed processing node system | |
US11741039B2 (en) | Peripheral component interconnect express device and method of operating the same | |
US11119704B2 (en) | System, 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 | |
US12026110B2 (en) | Dynamic interrupt provisioning | |
US20200210359A1 (en) | Dynamic interrupt provisioning |