TWI556110B - 用於提供存取裝置函數的設備、系統及方法 - Google Patents
用於提供存取裝置函數的設備、系統及方法 Download PDFInfo
- Publication number
- TWI556110B TWI556110B TW103106062A TW103106062A TWI556110B TW I556110 B TWI556110 B TW I556110B TW 103106062 A TW103106062 A TW 103106062A TW 103106062 A TW103106062 A TW 103106062A TW I556110 B TWI556110 B TW I556110B
- Authority
- TW
- Taiwan
- Prior art keywords
- function
- data structure
- software program
- context data
- access
- Prior art date
Links
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
- G06F13/423—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 with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
- Stored Programmes (AREA)
Description
在此所討論的實施例屬於電腦系統的領域。尤其是,某些實施例涉及高速點對點互連和通信架構的領域。
電腦系統包括一些組件和元件。組件經常經由匯流排或者互連耦合。週邊組件互連(Peripheral Component Interconnect,PCI)係發展於1992年的第二代平行匯流排架構作為工業標準架構(Industry Standard Architecture,ISA)匯流排的取代。在PCI中,所有的裝置分享相同的雙向、32位元(或64位元)的平行信號路徑。PCI匯流排帶來一些優於ISA匯流排的優點,包括隨插即用(plug-and-play)的操作。快速週邊組件互連(PCI Express,PCIe)係設計為用以取代PCI匯流排的第三代通用序列輸入/輸出(IO)互連。與其作為匯流排,PCIe係架構圍繞稱為通道(lanes)的點對點序列連結。
在PCI/PCIe架構中,軟體維持匯流排/裝置/
功能(Bus/Device/Function,BDF)資料結構,其緊密地與系統硬體的實體結構平行。PCI和PCIe的隨插即用機構支持硬體組件(和它們的功能)的運行時插入或移除。然而,相對於不太可能在平台運行操作期間被加入或移除的I/O硬體之操作,這種機構常常係次優化的。隨著製造技術的不斷朝向整合的趨勢,這種型態的I/O硬體越來越普遍,其中硬體功能被永久地連接到、或者甚至整合至用於中央處理單元(CPU)或其他關鍵平台邏輯的半導體晶片。
用於裝置發現和組態的PCI/PCIe的傳統裝置/功能模型,具有相對於提供映射硬體資源至軟體活動的彈性限制。PCI裝置/功能模型的另外一個問題係裝置發現和組態的技術和機構係不足的,從休眠狀態或其他此類的低電源狀態恢復時間變長。
在此討論的實施例提供各種關聯一或多個上下文的函數的機構和技術,函數係用以允許、有資格或甚至特徵為由軟體程序對函數的存取。這種一或多個上下文的函數之關聯係各種在此稱為「函數-上下文」或「函數文字」。
在一實施例中,正在與另一個(在此稱為「函數上下文實例」)關聯的函數和上下文的實例可以包括被創建的、被傳達或被判定之資訊實例用以定義函數和
上下文為彼此相關聯的。例如,函數-上下文實例可係或包括在主記憶體中的註冊或其他的資料之儲存以識別彼此相關聯的函數和上下文。基於定義的關聯,根據關聯的上下文,一或多個機構可操作以允許函數之利用(及/或有資格函數之利用)。函數可能係不同地被一些替代機構存取的,其係獨立於函數文字(FuncText,FT)實例,但與FuncText實例並行。
在一實施例中,FuncText資料結構-例如由主機所維持在DRAM或其他主記憶體中-儲存資料,FuncText資料結構描述用於函數之效能的實際的裝置狀態及/或期望的裝置狀態。這種裝置狀態資訊可能係不同地由實施裝置狀態的裝置及/或由用以存取如該裝置所提供的函數的軟體程序轉送至FuncText資料結構及/或從FuncText資料結構轉送。這種交換可能提供給FuncText資料結構以操作作為暫存器位準介面,在主記憶體中,用於裝置和軟體程序彼此的介面。在一實施例中,介面係獨立於主機OS(例如包括任何虛擬機器螢幕、客戶OS(guest OS)及/或其類似物)的一些或所有其他的軟體程序。
100‧‧‧電腦系統
102‧‧‧處理器
103‧‧‧處理器系統匯流排
104‧‧‧晶片組
106‧‧‧輸入/輸出埠
107‧‧‧點對點互連
108‧‧‧開關
109‧‧‧基本輸入/輸出系統
110-1‧‧‧I/O裝置
110-2‧‧‧I/O裝置
112‧‧‧點對點互連
114-0‧‧‧連結
114-1‧‧‧連結
114-2‧‧‧連結
116‧‧‧非揮發記憶體
120‧‧‧I/O裝置
122‧‧‧函數存取邏輯
124‧‧‧組態資料
130‧‧‧軟體程序
140‧‧‧主記憶體
142‧‧‧軟體狀態
144‧‧‧FT資料結構
150‧‧‧FT管理器
200‧‧‧I/O裝置
205‧‧‧通訊
210‧‧‧介面
230‧‧‧初始化邏輯
235‧‧‧儲存庫
240‧‧‧一致性引擎
250‧‧‧組態資料
300‧‧‧FT管理器
305‧‧‧通訊
310‧‧‧介面
320‧‧‧分配管理邏輯
330‧‧‧上下文管理邏輯
340‧‧‧階層管理邏輯
400‧‧‧組態資料
402‧‧‧裝置識別符(ID)暫存器
404‧‧‧供應商ID暫存器
406‧‧‧狀態暫存器
408‧‧‧命令暫存器
410‧‧‧分類碼暫存器
412‧‧‧修正ID
414‧‧‧基址暫存器
416‧‧‧暫存器
418‧‧‧暫存器
420‧‧‧暫存器
422‧‧‧暫存器
440‧‧‧FT資料結構
450‧‧‧FT標頭
452‧‧‧驅動程式ID欄位
454‧‧‧BDF參考欄位
460‧‧‧主體
462‧‧‧PCI型態0的標頭
464‧‧‧能力資料
500‧‧‧方法
600‧‧‧方法
700‧‧‧階層
710‧‧‧FT資料結構
712‧‧‧FT標頭
714‧‧‧主體
720‧‧‧FT資料結構
722‧‧‧FT標頭
724‧‧‧主體
730‧‧‧FT資料結構
732‧‧‧FT標頭
734‧‧‧主體
740‧‧‧音訊控制器
750‧‧‧網路介面卡
800‧‧‧系統
814‧‧‧I/O裝置
816‧‧‧第一匯流排
818‧‧‧匯流排橋
820‧‧‧第二匯流排
822‧‧‧鍵盤及/或滑鼠
824‧‧‧音訊I/O
827‧‧‧通訊裝置
828‧‧‧儲存單元
830‧‧‧碼和資料
832‧‧‧記憶體
834‧‧‧記憶體
838‧‧‧高效能圖形電路
839‧‧‧互連
850‧‧‧P-P互連
852‧‧‧P-P介面
854‧‧‧P-P介面
870‧‧‧處理器
872‧‧‧整合記憶體控制器單元
876‧‧‧P-P介面
878‧‧‧P-P介面
880‧‧‧處理器
882‧‧‧整合記憶體控制器單元
886‧‧‧P-P介面
888‧‧‧P-P介面
890‧‧‧晶片組
892‧‧‧介面電路
894‧‧‧點對點介面電路
896‧‧‧介面
898‧‧‧點對點介面電路
在隨附圖式的圖中,本發明的各種實施例通過舉例的方式示出,而不是通過限制的方式,其中:圖1為根據實施例說明用於提供存取輸入/輸出函數的系統之元件的方框圖。
圖2為根據實施例說明提供由軟體程序存取的函數的裝置之元件的方框圖。
圖3為根據實施例說明管理存取輸入/輸出函數的邏輯之元件的方框圖。
圖4A為根據實施例說明輸入/輸出裝置的組態資料之元件的方框圖。
圖4B為根據實施例說明用於關聯一或多個上下文的輸入/輸出函數的資料結構之元件的方框圖。
圖5為根據實施例說明用於提供存取輸入/輸出函數的方法之元件的流程圖。
圖6為根據實施例說明用於管理存取輸入/輸出函數的方法之元件的流程圖。
圖7為根據實施例說明用於提供存取輸入/輸出函數的階層資料結構之元件的方框圖。
圖8為根據實施例說明用於執行輸入/輸出操作的電腦平台之元件的方框圖。
圖1說明了根據一實施例包括用於提供函數存取的FuncText特徵的電腦系統100之元件。電腦系統100可包含用於在處理器102(例如包括CPU或其他的主機處理器)和晶片組104之間通訊資訊的處理器系統匯流排(前端匯流排(front side bus,FSB))103。處理器102可包括單核處理器或多核晶片多重處理器(chip
multiprocessor,CMP)用以操作作為系統100之主機處理器。在一實施例中,一些或所有的晶片組104可被整合在處理器102內以提供系統單晶片。
晶片組104可包含電路邏輯以交換在處理器102和一或多個系統100的I/O裝置之間的通訊-例如其中這種電路邏輯係用以根據PCI及/或PCIe通訊規格而操作作為根複合體(root complex)。例如,晶片組104可包括一或多個集線器裝置(未顯示)-例如包括記憶體控制器集線器、I/O控制器集線器及/或其類似物-不同地直接或間接地經由各別的互連而耦接至這種一或多的I/O裝置。
藉由說明的方式且不受限於,晶片組104可經由點對點互連107被耦接至主記憶體140以及經由點對點互連112連接至I/O裝置120。在一實施例中,主記憶體140可包括,但不受限於,隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、同步DRAM(SDRAM)、雙倍資料速率(double data rate,DDR)SDRAM(DDR-SDRAM)、Rambus DRAM(RDRAM)或任何具有支持高速資料的緩衝能力的裝置。I/O裝置120可包括任何用於交換資料的各種裝置,包括但不受限於音訊控制器、視訊控制器、網路介面卡、儲存控制器及/或其類似物。電腦系統100可進一步包括非揮發(例如快閃)記憶體116以操作作為「韌體集線器」(firmware hub)或FWH,非揮發記憶體116可包括基本輸
入/輸出系統(basic input/output system,BIOS)109以執行電腦系統100之初始化。
在一替代實施例中,I/O裝置120可經由一或多個橋、開關或其他中介裝置被耦接至晶片組104。某些實施例不受限於相對的特定數或將晶片組104與I/O裝置120互連的點對點連結之配置。額外的或替代地,根據不同的實施例,晶片組104可耦接至任何各種一或多個其他的I/O裝置。藉由說明的方式且不受限,系統100可進一步包括經由開關108耦接至連結114-0的I/O裝置110-1、110-2以及各別的耦接至連結114-1和114-2。反過來,連結114-0可耦接開關108至晶片組104的輸入/輸出埠106。
在一實施例中,互連107、112支持點對點連結通訊協定,包括但不受限於,通用系統介面(common system Interface,CSI)、週邊組件互連(PCI)、快速週邊組件互連(PCIe)或其他類似的點對點互連。因此,在一實施例中,互連107、112之一者或兩者可提供點對點連結,像是由快速週邊組件互連基礎規範版本1.1(PCI Express Base Specification Revision 1.1)以允許在晶片組104和一或多個I/O裝置120與主記憶體140之間的雙向通訊。在一實施例中,晶片組104可包括週邊組件互連的PCIe根埠-例如包括一些或所有的輸入/輸出埠106-以耦接連結107、112以連結晶片組104之控制器(未顯示)。雖然在此描述的一或多個實施例可參考PCIe而被提
供,那些領域中的通常知識者應認識到在此描述的該些實施例不受限於支持PCIe的點對點連結,且因此適用於其他類似的點對點連結通訊協定。
在傳統的PC和PCIe架構、I/O裝置係通常受限於在PCI函數和OS驅動程式實例之間的一對一映射。Functext概念從這種一對一關係提供通則,例如其中FuncText實例可被用以變化地將特定軟體程序對應至一個特定硬體資源、至多重I/O裝置之硬體資源池、及/或單一I/O裝置之硬體資源子集。
在根據一實施例的說明情況下,處理器102可執行用以存取函數的軟體程序130-例如其中軟體程序130係用以與執行函數的一些I/O硬體交換通訊。軟體程序130可包括用於這種I/O硬體的驅動程式,雖然某些實施例不受限於這方面。在一實施例中,軟體程序130的執行包括維持軟體程序130之狀態的主記憶體140-例如作為軟體狀態142。主記憶體140可進一步儲存FuncText資料結構144,其與一或多個FuncText硬體機構結合,促進這種由軟體程序130存取的函數。例如,FuncText資料144可儲存描述用於軟體程序130存取函數的I/O裝置120的實際狀態及/或期望狀態之資料。
藉由說明的方式且不受限於,I/O裝置120可包括組態資料124以儲存I/O裝置120的特定函數之效能的組態。根據定義在組態資料124中的組態,I/O裝置120的其他邏輯(未顯示)可執行函數,例如用以回應I/O
裝置120經由104接收用於函數的請求。
例如,系統100可包括-例如在晶片組104中-FuncText(FT)管理器150以準備使用FT資料結構144作為在提供函數的裝置和存取函數的軟體程序之間的暫存器位準介面。根據一實施例,這種準備可回應於識別I/O裝置120之能力的FT管理器150以支持FuncText功能性。
在一實施例中,FT管理器150創建在主記憶體140中實體位置的FT資料結構144及/或執行操作以在執行期間不同地加入、刪除或甚至修改在FT資料結構144的資料。在一實施例中,FT管理器150可被修正以包括對I/O裝置120的參考以及/或對軟體程序130的參考。替代地或額外的,FT管理器150可直接地或間接地通訊至I/O裝置120及/或軟體程序130,對FT資料結構144的一些參考(例如基址、指標、處理以及/或其類似物),用於從FT資料結構144讀出及/或寫入至FT資料結構144。
由軟體程序130對I/O裝置120之函數的存取可包括I/O裝置120和軟體程序130經由FT資料結構144通訊,作為在主記憶體140中的暫存器位準介面。例如,軟體程序130可執行指定具有FT資料結構144的資料之交換的一或多個指令,以及I/O裝置120之函數存取邏輯122可不同地將組態資料124與FT資料結構144同步。例如,軟體程序130可將不同的資料型態寫入至
FT資料結構144中的不同位置,其中I/O裝置120可不同地將這種在FT資料結構144中的不同位置各者與在組態資料124中的一不同的相應位置同步。
圖2說明根據實施例,用於提供存取函數的輸入/輸出(IO)裝置200之元件。例如,I/O裝置200可包括用以支持一或多個電腦系統100之FuncText機構的機構。在一實施例中,I/O裝置200包括一些或所有的I/O裝置120之特徵。
I/O裝置200可包括用於在電腦平台中操作的電路-例如包括用於經由一或多個點對點互連將I/O裝置200與電腦平台之晶片組耦接的介面210。I/O裝置200可經由介面210與像是PCI或PCIe的通訊標準相容的通訊205交換。
I/O裝置200可進一步包括能夠執行一或多個函數的硬體(未顯示)-例如經由介面210而直接或間接與I/O裝置200通訊的軟體程序。藉由說明的方式且不受限,I/O裝置200可支持根據存在的PCI匯流排、裝置、函數探索規範(Function discovery convention)而可被識別的任何種類的函數。某些實施例不受限於相對特定型態的I/O函數,以藉由FuncText實例而與上下文相關聯。
在一實施例中,I/O裝置200進一步包括FuncText機構-例如包括資料、控制電路、通訊電路及/或/其類似物-以提供存取(及/或有資格存取)至少一個這種函數。藉由說明的方式且不受限,I/O裝置200可包括
初始化邏輯230以在電腦平台的開機順序期間執行一或多個操作。在一實施例中,初始化邏輯230包括或耦接至I/O裝置200之儲存庫235(例如非揮發性記憶體的一或多個暫存器)其儲存已被預先程式化的資料-例如藉由I/O裝置200的製造商-在識別I/O裝置200之能力中使用。
基於這種預先程式化的資料,初始化邏輯230可在通訊205中發送資訊以識別I/O裝置200的裝置型態、I/O裝置200能夠執行的函數及/或用於提供存取至函數的I/O裝置200的一或多個FuncText機構。例如,一些或所有這種來自初始化邏輯230的資訊可在開機期間被直接地或間接地通訊至BIOS處理或電腦平台的其他裝置/函數探索機構。
額外或替代地,初始化邏輯230可經由通訊205接收對FuncText資料結構的參考(例如位址、指標、處理等等),其用於將函數與一或多個上下文關聯的FuncText實例。如在此所討論的,這種參考可由用於管理在主機側上的FuncText功能性的專用電路邏輯所提供-例如其中這種電路邏輯操作在電腦平台的晶片組中。I/O裝置200在支持提供對函數的存取之軟體時,隨後可使用用於與這種FuncText資料結構交換資訊的參考。在另一實施例中,I/O裝置200可在平台的執行操作期間接收這種FuncText資料結構參考(或替代的參考)。
在一實施例中,I/O裝置200包括額外的記憶
體以存入一或多個資料結構-由說明性的組態資料250所表示-用於I/O裝置200的組態以提供存取至函數。組態資料250可包括,例如經由平台晶片組所提供的資料(例如來自OS)、由I/O裝置200從主記憶體所擷取的資料及/或從儲存器235拷貝的資料。替代地或額外,組態資料250可包括在平台開機期間所提供的資訊及/或在平台的執行操作期間所提供的資訊。
在一實施例中,組態資料250包括在傳統的PCIe裝置之組態空間中的一些或所有的資訊型態。例如,這種資訊可包括PCIe型態(Type)0的標頭(header)資訊且在一實施例中,可進一步包括由PCI及/或PCIe所支持的一或多個型態的能力資訊。藉由說明的方式且不受限,組態資料250之資料結構可包括PCI功率管理能力(Power Management Capability)暫存器、訊息信號中斷能力(Message Signaled Interrupt(MSI)Capability)暫存器及/或用於儲存能力資料或其他函數上下文資訊的任何各種的額外或可替代的暫存器。
I/O裝置200可進一步包含一致性引擎240,一致性引擎240包括任何各種的硬體、韌體及/或執行軟體的組合,以維持一些或所有在組態資料250中的資訊,以促進由軟體程序存取的函數。例如,根據不同的實施例,一致性引擎240可包括應用特定積體電路(ASIC)、狀態機器、微控制器、微處理器、處理器及/或任何種類的其他電路邏輯。維持組態資料250可包括一致性引擎240
與在主記憶體中的FuncText資料結構交換通訊。例如,一致性引擎240可執行同步程序以更新具有資料的組態資料250,該資料已經被軟體程序寫入FuncText資料結構。替代地或額外的,同步程序可更新具有來自組態資料250的資料的FuncText資料結構-例如包括由軟體程序隨後從FuncText資料結構所讀出的資料。這種同步可提供在主記憶體中的FuncText資料結構和組態資料250之間的一致性-例如在他們儲存各別等同、一致或甚至同調的資訊的時間點中。
圖3根據用於管理存取至軟體程序的I/O函數之供應的實施例,說明FuncText管理器300之元件。在一實施例中,FT管理器300係用以促進軟體程序和裝置之間的通訊-例如包括一些或所有I/O裝置200之特徵-I/O裝置200係用以實施由軟體程序所存取的函數。例如,FT管理器300可包括一些或所有FT管理器150的特徵。
FT管理器300可包括由說明性介面310所表示的一或多個介面,介面用於將FT管理器300與電腦平台之主記憶體耦接,及/或經由一或多個各別的點對點互連與一或多個I/O裝置各者耦接。可替代地,FT管理器300可被整合至包括這種一或多個介面的設備中。在一實施例中,FT管理器300係經由介面310與相容於像是PCI或PCIe的通訊標準的通訊305交換。
通訊305可不同地提供I/O函數係如何被存
取的管理。例如,FT管理器300之分配管理邏輯320可包括用以發出命令的電路,以不同地創建或甚至組態在主記憶體中及/或用以執行函數的I/O裝置中的一或多個資料結構。替代地或額外的,分配管理邏輯320可發出通訊以將FuncText實例與用以執行FuncText實例之函數的I/O裝置硬體關聯。藉由說明的方式且不受限,分配管理邏輯320可將執行函數的I/O裝置的參考儲存在用於特定的FuncText實例的FuncText資料結構中。
在一實施例中,分配管理邏輯320可對I/O裝置及/或軟體程序提供對FuncText資料結構的參考-例如用於同步中或甚至存取FuncText資料結構中的後續使用。分配管理邏輯320亦可明確地對用以存取函數的軟體程序識別I/O裝置,雖然某些實施例並不受限於此。分配管理邏輯320可進一步設定用於I/O裝置的一或多個機構以被通知對FT資料結構的改變,其中與I/O裝置之組態資料的同步可能係基於這種通知。例如,分配管理邏輯320可直接地或間接地組態一或多個門鈴暫存器、輕型通知(lightweight notification,LN)通道-像是根據PCI-SIG的LN通訊埠-及/或任何種類的用於對FT資料結構通知I/O裝置的更新的其他機構。在一實施例中,分配管理邏輯320可在電腦平台的執行操作期間,不同地更新、刪除及/或修改一或多個FuncText資料結構、FuncText資料結構、I/O裝置參考、通知機構及/或其類似物。
在一實施例中,FT管理器300進一步包含邏輯用以識別哪個特定函數和哪個特定上下文將由FuncText實例使彼此相關聯。例如,FT管理器300的上下文管理邏輯330可檢測在電腦平台的一或多個I/O裝置中的函數之可用性-例如基於傳統的PCI及/或PCIe之裝置/函數探索機構。上下文管理邏輯330可進一步檢測一些或所有這種一或多個I/O裝置支持用於提供對函數的存取之FT為基的機構。
在一實施例中,上下文管理邏輯330可接收-例如來自用以提供函數的特定I/O裝置-識別一或多個上下文的資訊,其至少在特定的I/O裝置的情況中係需要的。替代地或額外的,上下文管理邏輯330可接收來自主機OS或其他來源的識別一或多個上下文的資訊,其相對於用以存取函數的軟體程序至少係需要的。在一實施例中,提供給上下文管理邏輯330的資訊可識別一或多個上下文,其係基於由電腦平台所施加其他限制。藉由說明的方式且不受限,這種限制可包括任何各種的服務品質需要及/或資源分配限制,用於通訊頻寬、處理週期、儲存容量及/或任何各種變化的平台之其他限制資源。在某些實施例中,將被與函數關聯的一些或所有上下文被提供做為對上下文管理邏輯330的先前(a priori)資訊-例如來自主機OS、專用的資源管理及/或QoS執行硬體機構等等。上下文管理邏輯330可改變在FuncText資料結構及/或I/O裝置資料結構中的資訊,以在電腦平台執行操作期
間不同地更新、刪除及/或修改與上下文關聯的函數。
用於實施FT為基的函數存取的資料結構和電路邏輯可包括用於在多重FuncText實例之間管理階層式關係的機構。例如像是在此所討論的,第一FuncText資料結構可儲存指示一些其他的FuncText資料結構是否係相對於該第一FuncText資料結構的子代FuncText資料結構或上代FuncText資料結構的資訊。在這種實施例中,FT管理器300可進一步包括階層管理邏輯340以執行用於創建、刪除、修改或甚至管理這種階層式關係的執行期間的操作。在某些其它的實施例中,FT管理器300不提供用於階層式FuncText關係的這種支持。一或多個階層式關係可被指定給階層管理邏輯340作為來自其他代理之OS的先前資訊。在一實施例中,階層管理邏輯340可在電腦平台之執行期間改變在一或多個FuncText資料結構中各種更新、刪除及/或修改在FuncText資料結構之間的階層式關係的資訊。
圖4A根據一實施例說明儲存在I/O裝置的資料儲存庫中的組態資料400之元件。例如,組態資料400可被儲存在具有一或多個I/O裝置120之FuncText能力的I/O裝置。在一實施例中,組態資料400儲存一些或所有在組態資料250的資訊。
組態資料400可包括資料結構其與PCI型態0的組態空間標頭相容-且在一實施例中,可作為-PCI型態0的組態空間標頭。例如,組態資料400可包括用以
儲存裝置模型之識別符的裝置識別符(ID)暫存器402、用以儲存指派給裝置之供應商之識別符的供應商ID暫存器404、用以儲存某些錯誤是否已經發生之指示的狀態暫存器406,以及用以儲存表示各種致能/失能的特徵之位元遮罩的命令暫存器408。組態資料400可進一步儲存用以儲存裝置之功能性分類的分類碼暫存器410、用以儲存用於裝置之修正識別符的修正ID 412以及用以儲存由裝置所使用的記憶體位址、位址偏移等等的各種基址暫存器414。在一實施例中,組態資料400進一步儲存用以儲存裝置需要多頻繁的存取PCI/PCIe互連的指示的暫存器Max_Lat 416、用以指定裝置所需的叢發期間長度的暫存器Min_Gnt 418、用以指定裝置將使用的中斷針腳(Pin)的暫存器Int Pin 420、以及用以指定輸入線給被連接之裝置的中斷針腳的暫存器Int Line 422。在組態資料400中的內容和資訊之配置係僅為一個實施的說明,且不限制於某些實施例上。
圖4B根據一實施例說明FT資料結構440之元件,FT資料結構440被儲存在主記憶體中以作為用於I/O裝置和軟體程序的暫存器位準介面,該軟體程序係用以存取由I/O裝置所提供的函數。在一實施例中,FT資料結構440提供用於軟體程序的硬體介面以存取像是組態資料250之資訊的資訊。例如,FT資料結構440可包括一些或所有FT資料結構144的特徵。
在一實施例中,440包括主體460以存取識別
或甚至指示用於與FuncText實例之函數關聯的FuncText實例上下文的資訊。藉由說明的方式且不受限,主體460可包括PCI型態0的標頭462,例如包括一些或所有組態資料400的特徵。在一實施例中,PCI型態0的標頭462對應至I/O裝置之PCI型態0的標頭,在一給定的時間,PCI型態0的標頭462係用以實施函數。提供存取函數的軟體程序可包括這種存取主記憶體的I/O裝置以將PCI型態0的標頭462與它的本地PCI型態0的標頭彼此同步。主體460可包括一或多個額外的暫存器用以儲存能力資料464,即使某些實施例不受限於此。例如,主體460可進一步包括一或多個PCI功率管理能力暫存器、訊息訊號中斷(Message Signaled Interrupt,MSI)能力暫存器、PCIe能力暫存器及/或任何各種的額外或可替代的暫存器用以儲存能力資料。這種能力資訊的版本可進一步被本地儲存在I/O裝置中-例如像是用以被不同地與FT資料結構440同步的組態資料400。
FT資料結構440可進一步包含用於識別的FT標頭450及/或FT資料結構440之使用以提供對I/O函數之存取。例如,在FT標頭450中的資訊可促進FT資料結構440之使用,作為在軟體程序和FT-特定I/O裝置之硬體之間的暫存器位準介面。FT標頭450可包括由說明性驅動程式ID欄位452所表示的欄位-以儲存軟體程序之指示,該軟體程序可使用由FT資料結構440所表示的FuncText實例來存取函數。在一實施例中,這種軟體程序
可係用於驅動I/O裝置之硬體資源的驅動程式程序。在驅動程式ID欄位452中的資訊可包括或甚至係基於用於在供應商-供應裝置驅動程式係被使用的情況下的供應商ID及/或裝置ID。替代地,這種資訊可包括或甚至係基於用於分類碼、子分類及/或程式介面資訊之PCI-SIG(Peripheral Component Interconnect Special Interest Group,周邊組件互連特別興趣小組)定義,用於在一般OS驅動程式係被使用的情況下。
FT標頭450可包括由說明性的BDF參考欄位454所表示的另一欄位,以儲存對用以執行FuncText實例之函數的I/O裝置的任何參考。在BDF參考欄位454中的資訊可包括指標指向用於特定的匯流排(Bus)、裝置(Device)和函數(Function)三重組的I/O裝置硬體。如在此所討論的,BDF參考欄位454可被組態以儲存NULL指標資訊-例如在FT資料結構440係FuncText資料結構之階層之一者的實施例中。
圖5根據實施例說明用於I/O裝置以提供對函數之存取的方法500之元件。例如,方法500可由裝置所執行,裝置包括一些或所有I/O裝置200之特徵。
方法500可包括,步驟510,在I/O裝置之組態資料結構中儲存用於函數的組態。儲存在510的組態可係包括或甚至根據I/O裝置係用以提供對函數之存取而指示上下文。組態可包括,例如,在PCI型態0的標頭中發現的型態之組態空間資訊。替代地或額外的,根據不同的
實施例,組態資訊可包括功率管理能力暫存器資訊、MSI暫存器資訊及/或各種的其他型態的組態之任何資訊。
在一實施例中,方法500可進一步包含,在步驟520,提供對函數之存取的軟體程序。軟體程序可係用於I/O裝置的驅動程式,即使某些實施例不受限於此。軟體程序可與耦接至I/O裝置的處理器和主記憶體一起執行,主記憶體儲存函數上下文資料結構。在520提供對函數的存取可包括將函數上下文資料結構和組態資料結構彼此同步。例如,I/O裝置可在電腦平台之執行期間接收對FuncText資料結構的參考(例如指標、基址、處理等等),其中同步係基於接收的對FuncText資料結構的參考。I/O裝置可存取資料結構以回應輕量通知通訊或替代地,以回應存取對應於FuncText資料結構的門鈴暫存器。在實施例中,主記憶體儲存包括FuncText資料結構和第二FuncText資料結構的FuncText資料結構之階層,其中軟體程序基於在FuncText第二資料結構中的資訊,存取FuncText資料結構。
在一實施例中,軟體程序係與用於存取函數的函數上下文資料結構交換資訊,其中函數上下文資料結構操作作為暫存器位準介面,其為I/O裝置和軟體程序彼此的介面。例如,藉由軟體程序存取至函數可包括在軟體程序和FuncText資料結構之間的交換,FuncText資料結構係獨立於任何其他可能與主機OS一起執行的軟體程序而執行。
圖6根據實施例說明用於裝置以管理對函數之存取的方法600之元件。例如,方法600可由裝置所執行,裝置包括一些或所有FT管理器300之特徵。
方法600可包括,步驟610,存取耦接至裝置之主記憶體之函數上下文資料結構,包括以函數上下文資料結構定義與上下文的函數之關聯。執行方法600的裝置可進一步耦接至I/O裝置。軟體程序可與耦接至裝置的主記憶體和主機處理器一起執行。
在一實施例中,方法600進一步包含,在步驟620,提供給I/O裝置或軟體程序對函數上下文資料結構的參考,其中基於參考,I/O裝置提供軟體程序存取至函數,即根據上下文之該存取。軟體程序可與用於存取函數的函數上下文資料結構交換資訊,其中函數上下文資料結構操作作為暫存器位準介面,其為I/O裝置和軟體程序彼此的介面。
在電腦平台之執行操作期間,執行方法600的裝置可進一步將參考寫入FuncText資料結構給I/O裝置。這種寫入可將FuncText實例從與用於提供存取至函數的第一I/O裝置相關聯,變換成與用於提供存取至函數的第二I/O裝置相關聯。替代地或額外的,執行方法600的裝置可在電腦平台之執行操作期間,存取FuncText資料結構以將FuncText資料結構從定義與函數的第一上下文之關聯,變換成定義與函數的第二上下文之關聯。在一實施例中,裝置可存取FuncText資料結構以定義在主記
憶體中的FuncText資料結構之階層,FuncText資料結構之階層包括FuncText資料結構。
圖7根據一實施例說明用於提供存取至I/O函數的在主記憶體中的FuncText資料結構之階層700之元件。階層700可被儲存在主記憶體140中,例如,以提供用於軟體程序以存取各別I/O函數的一或多個暫存器位準介面各者。
階層700之FT資料結構可不同地在電腦平台之執行操作期間,由FuncText管理邏輯所修正-例如用以改變對I/O裝置的FuncText實例之關聯、用以改變函數和上下文彼此之間的關聯、用以改變在FuncText資料結構及/或其類似物之間的階層關係。在根據一實施例的說明性情況下,階層700包括用於不同的各別FuncText實例的FT資料結構710、720、730。如所示,FT資料結構720、730為FT資料結構710之子代。在一實施例中,FT資料結構710、720和730包括各別的FT標頭712、722、732,其例如可不同地包括一或多個FT標頭450之特徵。藉由說明的方式且不受限,FT標頭712、722、732各者可將個別的驅動程式識別符資訊和任何參考儲存-例如包括BDF指標-至用以實施函數的各別裝置。
替代地或額外的,FT資料結構710、720和730各者可包括各別的主體714、724、734,其例如可不同地包括一或多個主體460之特徵。如圖7所示,FT資
料結構710、720和730之主體714、724、734可不同地儲存PCI型態0的標頭資訊、功率管理能力資訊、MSI能力資訊、PCIe能力資訊或任何不同地額外的或替代的資料之型態,資料之型態描述期望的或實際I/O硬體之組態。
I/O裝置及/或FuncText管理器之FT電路邏輯可存取階層700以動態地分配I/O資源。藉由說明的方式且不受限,使用者可從一些像是網際網路的遠程源開始對音訊內容的應用。反過來,應用可請求主機OS分配I/O資源以解碼和呈現資料流。
為了回應這種請求,主機OS和音訊驅動程式/子系統可在主記憶體中對FuncText建立FT資料結構710以播放這種音訊內容。FT資料結構710可在其本身,憑藉階層700之其他的FuncText資料結構,間接地與I/O硬體相關聯。例如,FT標頭712可包括在BDF參考欄位中,參考欄位儲存空指標,指示FT資料結構710表示的階層700之其他FT資料結構中識別硬體資源之邏輯群組。
在一實施例中,FT資料結構720、730也可用於兩個下屬FuncText而被建立在主記憶體中。FT標頭712、722、732各者可識別子代FuncText資料結構的各別數量及/或上代FuncText資料結構的各別數量。替代地或額外的,FT標頭712可包括指向本身各別的子代FT資料結構720、730的指標。在另一實施例中,FT標頭
722、732可不同地包括指標(未顯示)指回各別的上代FT資料結構710。
例如,FT資料結構720可將存取硬體音訊控制器740的軟體提供給整合至電腦平台的揚聲器。甚至,FuncText資料結構730可提供存取NIC(網路介面卡)750的軟體,其是用以串流後置通道音訊到透過使用者家用網路連接的揚聲器。依據由使用者終止的應用,一些或所有FuncTexts 710、720、730可在執行期間解除分配,以及他們各別的硬體資源被釋放。
現在指向圖8,示出根據一實施例的系統800之方框圖。如圖8所示,多重處理器系統800係點對點(P-P)互連系統,且包括經由P-P互連850耦接的第一處理器870和第二處理器880。處理器870和880各者可係處理器的一些版本。雖然示出兩個處理器870、880,可以理解的是本發明的範圍並不受限於此。在其它實施例中,任何不同的一或多個額外或替代的處理器可被表示在系統800中。
處理器870和880被示出各別地包括整合記憶體控制器單元872和882。處理器870也可包括作為它本身匯流排控制器單元P-P介面876和878之部分;類似地,第二處理器880包括P-P介面886和888。處理器870、880可使用P-P介面電路878、888經由P-P互連850來交換資訊。如圖8所示,IMC872和882耦接處理器至各別的記憶體,稱為記憶體832和記憶體834,其可
係本地連接至各別的處理器的主記憶體之部分。在一實施例中,記憶體832、834之一者或兩者儲存一或多個FuncText資料結構用於提供存取I/O功能性的軟體。
處理器870、880各者可使用點對點介面電路876、894、886、898經由個別的P-P介面852、854與晶片組890交換資訊。晶片組890亦可經由介面電路892沿著高效能圖形互連839與高效能圖形電路838交換資訊。晶片組890可經由介面896被耦接至第一匯流排816。在一實施例中,第一匯流排816可係週邊組件互連(PCI)匯流排或像是快速週邊組件互連(PCI Express)匯流排的匯流排或另一第三代I/O互連匯流排,即使本發明範圍並不受限於此。
如圖8所示,不同的I/O裝置814可被耦接至第一匯流排816,及/或匯流排橋818可將第一匯流排816耦接至第二匯流排820。一或多個這種I/O裝置814可不同地儲存組態資料且包括函數存取電路用於經由在主記憶體中的FuncText資料結構存取函數的軟體。在一實施例中,第二匯流排820包括低針腳數(low pin count,LPC)匯流排。任何不同的裝置可被耦接至第二匯流排820,第二匯流排820包括例如鍵盤及/或滑鼠822、通訊裝置827和像是硬碟或其他大量儲存裝置的儲存單元828,在一實施例中大量儲存裝置常常包括指令/碼和資料830。此外,音訊I/O 824被示出耦接至第二匯流排820。注意,其它架構也是可能的,其中所包括的元件和互連架
構可有所不同。例如,代替圖8中的點對點架構,一個系統可實現多點匯流排或其它這種架構。
系統800可包括裝置,裝置包含積體電路和用於積體電路的硬體介面。藉由說明的方式且不受限,這種裝置可包括處理器870、處理器880、晶片組890之封裝(未顯示)、記憶體832、記憶體834及/或系統800之任何不同的其他元件。
在此描述用於存取I/O裝置的功能之技術和體系結構。在以上描述中,為便於說明,設置許多具體細節規定以提供對某些實施例的透徹理解。然而對本領域技術人員這將是顯而易見的,某些實施例可以在沒有這些具體細節的情況下實踐。在其它情況下,結構和裝置以方框圖的形式示出,以避免模糊了描述。
本說明書中提及「一個實施例」或「實施例」時意味著有關該實施例所說明之一個特定的特徵、結構、或特性被包括在本發明的至少一個實施例中。在說明書中各個地方的「在一個實施例中」的片語之出現不一定全部指的是同一個實施例。
詳細說明書中的一些部分在此以電腦記憶體內資料位元上的操作之演算法和符號表示法表示。這些演算法描述和表示法是由在計算機領域中的本領域技術人員用來最有效地傳達他們工作的要點給其他本領域技術人員的手段。這裡的一演算法被設想為可導致理想結果的自相一致的步驟順序,通常也是如此。這些步驟需要物理量的
物理操作。通常情況下,雖然不一定,這些量採取能夠被儲存、轉送、合併、比較以及甚至操縱的電或磁性信號之形式。已經證明有時會方便將這些信號參照為位元、值、元件、符號、字符、術語、數字、或諸如此類,主要是為了通用的原因。
然而,應當牢記的是,所有這些和類似的術語將與適當的物理量相關聯,並且僅僅是應用於這些量的方便的標籤。從本文的討論可以明顯看出,除非另有特別述明,可以理解的是在整個說明書中,利用諸如「處理」或「計算」或「運算」或「判定」或「顯示」或類似詞的探討係指電腦系統、或類似的電子計算裝置的動作和處理,其將表示為電腦系統的暫存器和記憶體內的物理(電子)量的資料操縱或變換成類似地表示為在電腦系統記憶體或暫存器或其他這樣的資訊儲存、傳送或顯示裝置內的物理量之其它資料。
某些實施例還相關於用於執行在此的操作的裝置。此裝置可以被特別地建構用於所需目的,或它可以包含通用電腦選擇性地由儲存在電腦中的電腦程式激活或重新組態。這種電腦程式可以儲存於一電腦可讀取儲存媒介中,例如,但不限於,任何類型的碟,包括軟碟、光碟、CD-ROM和磁光碟、唯讀記憶體(ROM),隨機存取記憶體(RAM),如動態RAM(DRAM)、EPROM、EEPROM、磁卡或光卡、或任何類型的適於儲存電子指令的媒介,並耦合到電腦系統匯流排。
本文中所呈現的演算法和顯示並不固有地與任何特定電腦或其它裝置相關。根據本文的教示,各種通用系統可以與程式一起使用,或者可以證明便於建構更專用的裝置來執行所需的方法步驟。用於不同的這些系統的所需結構將從本文的描述出現。此外,某些實施例並非參考任何特定的程式語言所描述。可以理解的是多種程式語言可以用來實現如這裡描述的這種實施例的教示。
除了本說明書的記載,可以在不脫離所公開的實施例和實施之範圍的情況下對其做各種修改。因此,本文說明和示例應理解為說明性的,而不是限制性的。本發明的範圍應當僅參照後附之申請專利範圍裁量。
100‧‧‧電腦系統
102‧‧‧處理器
103‧‧‧處理器系統匯流排
104‧‧‧晶片組
106‧‧‧輸入/輸出埠
107‧‧‧點對點互連
108‧‧‧開關
109‧‧‧基本輸入/輸出系統
110-1‧‧‧I/O裝置
110-2‧‧‧I/O裝置
112‧‧‧點對點互連
114-0‧‧‧連結
114-1‧‧‧連結
114-2‧‧‧連結
116‧‧‧非揮發記憶體
120‧‧‧I/O裝置
122‧‧‧函數存取邏輯
124‧‧‧組態資料
130‧‧‧軟體程序
140‧‧‧主記憶體
142‧‧‧軟體狀態
144‧‧‧FT資料結構
150‧‧‧FT管理器
Claims (23)
- 一種輸入/輸出(IO)裝置包含:記憶體,用以儲存包括函數的組態的組態資料結構;以及一致性引擎,其包括用以提供軟體程序對該函數的存取之電路,包括用以執行相對於彼此的該組態資料結構和該函數上下文資料結構的同步之該一致性引擎,其中該函數上下文資料結構操作作為暫存器位準介面,其為I/O裝置和該軟體程序彼此的介面,其中該一致性引擎進一步在電腦平台執行期間接收對該函數上下文資料結構的參考,其中該一致性引擎基於該函數上下文資料結構而執行該同步。
- 如申請專利範圍第1項所述之I/O裝置,其中該軟體程序係用於該I/O裝置的驅動程式。
- 如申請專利範圍第1項所述之I/O裝置,其中在該軟體程序和該函數上下文資料結構之間的交換係獨立執行於與該主機OS執行的任何其他的軟體程序,該交換在該軟體程序和用於該軟體程序以存取該函數的該函數上下文資料結構之間。
- 如申請專利範圍第1項所述之I/O裝置,其中該I/O裝置存取該函數上下文資料結構,以回應輕型通知通訊。
- 如申請專利範圍第1項所述之I/O裝置,其中該 I/O裝置存取該函數上下文資料結構,以回應對應於該函數上下文資料結構的門鈴暫存器之存取。
- 如申請專利範圍第1項所述之I/O裝置,其中函數上下文資料結構之階層包括該函數上下文資料結構和第二函數上下文資料結構,其中該軟體程序基於在該第二函數上下文資料結構中的資訊,存取該函數上下文資料結構。
- 一種在輸入/輸出(IO)裝置的方法,該方法包含:在該I/O裝置之組態資料結構中儲存用於函數的組態;提供軟體程序對該函數的存取,該軟體程序與處理器和耦接至該I/O裝置的主記憶體一起執行,該主記憶體儲存函數上下文資料結構,該提供對該函數的該存取包括將該函數上下文資料結構和該組態資料結構相對於彼此同步,其中該軟體程序與用於對該函數的該存取之該函數上下文資料結構交換資訊,其中該函數上下文資料結構操作作為暫存器位準介面,其為該I/O裝置和該軟體程序彼此的介面;以及在電腦平台之執行期間,接收對該函數上下文資料結構的參考,其中該同步係基於對該函數上下文資料結構的該接收的該參考。
- 如申請專利範圍第7項所述之方法,其中該軟體程序係用於該I/O裝置的驅動程式。
- 如申請專利範圍第7項所述之方法,其中在該軟 體程序和該函數上下文資料結構之間的交換係獨立執行於與該主機OS執行的任何其他的軟體程序,該交換在該軟體程序和用於該軟體程序以存取該函數的該函數上下文資料結構之間。
- 如申請專利範圍第7項所述之方法,其中該I/O裝置存取該函數上下文資料結構,以回應輕型通知通訊。
- 如申請專利範圍第7項所述之方法,其中該I/O裝置存取該函數上下文資料結構,以回應對應於該函數上下文資料結構的門鈴暫存器之存取。
- 如申請專利範圍第7項所述之方法,其中該主記憶體儲存包括該函數上下文資料結構和第二函數上下文資料結構的函數上下文資料結構之階層,其中該軟體程序基於在該第二函數上下文資料結構中的資訊,存取該函數上下文資料結構。
- 一種裝置包含:一或多個介面,用以將函數上下文管理器耦接至主機處理器、主記憶體及I/O裝置,該主機處理器和該主記憶體用於軟體程序之執行;上下文管理邏輯,包括用以經由該一或多個介面存取該主記憶體的函數上下文資料結構之電路,其中該上下文管理邏輯用以與該函數上下文資料結構定義上下文的函數之關聯;以及分配管理邏輯,包括用以提供給該I/O裝置或該軟體程序對該函數上下文資料結構的參考之電路,其中,基於 該參考,該I/O裝置提供該軟體程序對該函數的存取,該存取根據該上下文,其中該軟體程序與用於對該函數的該存取之該函數上下文資料結構交換資訊,其中該函數上下文資料結構操作作為暫存器位準介面,其為該I/O裝置和該軟體程序彼此的介面,其中該I/O裝置執行該函數上下文資料結構與該I/O裝置之組態資料結構相對於彼此的同步。
- 如申請專利範圍第13項所述之裝置,其中,在電腦平台之執行操作期間,該分配管理邏輯進一步用以寫入該函數上下文資料結構對I/O裝置的參考,其中該分配管理邏輯將該函數上下文實例從與用於提供對該函數的存取之第一I/O裝置相關聯,變換成與用於提供對該函數的存取之第二1/O裝置相關聯。
- 如申請專利範圍第13項所述之裝置,其中,在該電腦平台之執行操作期間,該分配管理邏輯用以存取該函數上下文資料結構以將該函數上下文資料結構從定義與該函數的第一上下文之關聯,變換成定義與該函數的第二上下文之關聯。
- 如申請專利範圍第13項所述之裝置,其中在該軟體程序和該函數上下文資料結構之間的交換係獨立執行於與該主機OS執行的任何其他的軟體程序,該交換在該軟體程序和用於該軟體程序以存取該函數的該函數上下文資料結構之間。
- 如申請專利範圍第13項所述之裝置,進一步包 含階層管理邏輯,以存取該函數上下文資料結構,以定義在該主記憶體中的函數上下文資料結構之階層,該函數上下文資料結構之該階層包括該函數上下文資料結構。
- 一種在裝置的方法,該方法包含:存取耦接至該裝置的主記憶體之函數上下文資料結構,包括與該函數上下文資料結構定義上下文的函數之關聯,其中軟體程序與該主記憶體和耦接至該裝置的主機處理器執行,其中該裝置係進一步耦接至I/O裝置;提供給該I/O裝置或該軟體程序對該函數上下文資料結構的參考,其中,基於該參考,該I/O裝置提供該軟體程序對該函數的存取,該存取根據該上下文,其中該軟體程序與用於對該函數的該存取的該函數上下文資料結構交換資訊,其中該函數上下文資料結構操作作為暫存器位準介面,其為該I/O裝置和該軟體程序彼此的介面,其中該I/O裝置執行該函數上下文資料結構與該I/O裝置之組態資料結構相對於彼此的同步。
- 如申請專利範圍第18項所述之方法,進一步包含:在該電腦平台之執行操作期間,寫入該函數上下文資料結構對I/O裝置的參考,包括將該函數上下文實例從與用於提供對該函數的存取之第一I/O裝置相關聯,變換成與用於提供對該函數的存取之第二I/O裝置相關聯。
- 如申請專利範圍第18項所述之方法,進一步包含: 在該電腦平台之執行操作期間,存取該函數上下文資料結構,以將該函數上下文資料結構從定義與該函數的第一上下文之關聯,變換成定義與該函數的第二上下文之關聯。
- 如申請專利範圍第18項所述之方法,其中在該軟體程序和該函數上下文資料結構之間的交換係獨立執行於與該主機OS執行的任何其他的軟體程序,該交換在該軟體程序和用於該軟體程序以存取該函數的該函數上下文資料結構之間。
- 如申請專利範圍第18項所述之方法,存取該函數上下文資料結構以定義在該主記憶體中的函數上下文資料結構之階層,該函數上下文資料結構之該階層包括該函數上下文資料結構。
- 一種具有指令儲存於其上的電腦可讀儲存媒介,當由一或多個處理單元執行時,使I/O裝置執行方法包含:在該I/O裝置之組態資料結構中儲存函數的組態;以及提供軟體程序對該函數的存取,該軟體程序與處理器和耦接至該I/O裝置的主記憶體一起執行,該主記憶體儲存函數上下文資料結構,該提供對該函數的該存取包括將該函數上下文資料結構和該組態資料結構相對於彼此同步,其中該函數上下文資料結構操作作為暫存器位準介面,其為該I/O裝置和該軟體程序彼此的介面, 其中該I/O裝置執行該函數上下文資料結構與該I/O裝置之組態資料結構相對於彼此的同步。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/844,323 US9026698B2 (en) | 2013-03-15 | 2013-03-15 | Apparatus, system and method for providing access to a device function |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201506631A TW201506631A (zh) | 2015-02-16 |
TWI556110B true TWI556110B (zh) | 2016-11-01 |
Family
ID=50287878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103106062A TWI556110B (zh) | 2013-03-15 | 2014-02-24 | 用於提供存取裝置函數的設備、系統及方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9026698B2 (zh) |
EP (1) | EP2778936B1 (zh) |
KR (1) | KR101575070B1 (zh) |
CN (1) | CN104050118B (zh) |
BR (1) | BR102014006212A2 (zh) |
TW (1) | TWI556110B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016130114A1 (en) * | 2015-02-10 | 2016-08-18 | Hewlett Packard Enterprise Development Lp | Chipset reconfiguration based on device detection |
US10223314B2 (en) * | 2015-08-17 | 2019-03-05 | Avago Technologies International Sales Pte. Limited | PCI express connected network switch |
US20180063205A1 (en) * | 2016-08-30 | 2018-03-01 | Augre Mixed Reality Technologies, Llc | Mixed reality collaboration |
US10521388B2 (en) * | 2018-09-28 | 2019-12-31 | Intel Corporation | Multi-uplink device enumeration and management |
KR102518317B1 (ko) | 2021-04-13 | 2023-04-06 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102668564B1 (ko) | 2021-06-01 | 2024-05-24 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102509491B1 (ko) * | 2021-04-13 | 2023-03-14 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 시스템 및 그 동작 방법 |
US11789658B2 (en) | 2021-04-13 | 2023-10-17 | SK Hynix Inc. | Peripheral component interconnect express (PCIe) interface system and method of operating the same |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515522A (en) * | 1994-02-24 | 1996-05-07 | Hewlett-Packard Company | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache |
US6128669A (en) * | 1997-09-30 | 2000-10-03 | Compaq Computer Corporation | System having a bridge with distributed burst engine to decouple input/output task from a processor |
TW200421077A (en) * | 2003-01-09 | 2004-10-16 | Intel Corp | Memory controller considering processor power states |
TW200842627A (en) * | 2007-02-22 | 2008-11-01 | Microsoft Corp | Techniques to cross-synchronize data |
US20090276551A1 (en) * | 2008-05-05 | 2009-11-05 | International Business Machines Corporation | Native and Non-Native I/O Virtualization in a Single Adapter |
TW201104470A (en) * | 2009-07-29 | 2011-02-01 | Tomtom Int Bv | Data storage system and method |
CN101617298B (zh) * | 2004-06-08 | 2012-03-21 | 飞思卡尔半导体公司 | 用于dma、任务终止和同步操作的缓存一致保持 |
US8176097B2 (en) * | 2009-01-02 | 2012-05-08 | International Business Machines Corporation | Maintaining data coherency within related multi-perspective user interfaces via session-less queries |
US20120159481A1 (en) * | 2010-12-21 | 2012-06-21 | International Business Machines Corporation | Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions |
US20120167085A1 (en) * | 2010-12-28 | 2012-06-28 | Plx Technology, Inc. | Sharing multiple virtual functions to a host using a pseudo physical function |
US20120215941A1 (en) * | 2011-02-21 | 2012-08-23 | International Business Machines Corporation | Accessing a configuration space of a virtual function |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7934033B2 (en) | 2008-03-25 | 2011-04-26 | Aprius, Inc. | PCI-express function proxy |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
-
2013
- 2013-03-15 US US13/844,323 patent/US9026698B2/en not_active Expired - Fee Related
-
2014
- 2014-02-24 TW TW103106062A patent/TWI556110B/zh active
- 2014-03-11 EP EP14158781.6A patent/EP2778936B1/en active Active
- 2014-03-13 KR KR1020140029341A patent/KR101575070B1/ko active IP Right Grant
- 2014-03-14 CN CN201410095775.1A patent/CN104050118B/zh active Active
- 2014-03-14 BR BR102014006212A patent/BR102014006212A2/pt not_active IP Right Cessation
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515522A (en) * | 1994-02-24 | 1996-05-07 | Hewlett-Packard Company | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache |
US6128669A (en) * | 1997-09-30 | 2000-10-03 | Compaq Computer Corporation | System having a bridge with distributed burst engine to decouple input/output task from a processor |
TW200421077A (en) * | 2003-01-09 | 2004-10-16 | Intel Corp | Memory controller considering processor power states |
CN101617298B (zh) * | 2004-06-08 | 2012-03-21 | 飞思卡尔半导体公司 | 用于dma、任务终止和同步操作的缓存一致保持 |
TW200842627A (en) * | 2007-02-22 | 2008-11-01 | Microsoft Corp | Techniques to cross-synchronize data |
US20090276551A1 (en) * | 2008-05-05 | 2009-11-05 | International Business Machines Corporation | Native and Non-Native I/O Virtualization in a Single Adapter |
US8176097B2 (en) * | 2009-01-02 | 2012-05-08 | International Business Machines Corporation | Maintaining data coherency within related multi-perspective user interfaces via session-less queries |
TW201104470A (en) * | 2009-07-29 | 2011-02-01 | Tomtom Int Bv | Data storage system and method |
US20120159481A1 (en) * | 2010-12-21 | 2012-06-21 | International Business Machines Corporation | Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions |
US20120167085A1 (en) * | 2010-12-28 | 2012-06-28 | Plx Technology, Inc. | Sharing multiple virtual functions to a host using a pseudo physical function |
US20120215941A1 (en) * | 2011-02-21 | 2012-08-23 | International Business Machines Corporation | Accessing a configuration space of a virtual function |
Also Published As
Publication number | Publication date |
---|---|
EP2778936A1 (en) | 2014-09-17 |
KR101575070B1 (ko) | 2015-12-07 |
BR102014006212A2 (pt) | 2015-10-13 |
TW201506631A (zh) | 2015-02-16 |
US9026698B2 (en) | 2015-05-05 |
KR20140113439A (ko) | 2014-09-24 |
CN104050118B (zh) | 2017-12-26 |
US20140281062A1 (en) | 2014-09-18 |
EP2778936B1 (en) | 2016-07-20 |
CN104050118A (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI556110B (zh) | 用於提供存取裝置函數的設備、系統及方法 | |
TWI631470B (zh) | 透過一管理控制器動態重新配置一系統之至少一週邊匯流排交換器之方法及系統 | |
US9229730B2 (en) | Multi-chip initialization using a parallel firmware boot process | |
US9298648B2 (en) | Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch | |
TWI278755B (en) | An apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine | |
TWI743078B (zh) | 扁平化入口橋接器 | |
CN105264506B (zh) | 向内存映射配置分配处理器 | |
US20150278130A1 (en) | Completion notification for a storage device | |
TW445416B (en) | Upgrade card for a computer system and method of operating the same | |
US10061707B2 (en) | Speculative enumeration of bus-device-function address space | |
US20180189094A1 (en) | Virtual machine to host device bridging | |
US10754808B2 (en) | Bus-device-function address space mapping | |
TW201229742A (en) | Power-optimized interrupt delivery | |
TW201342207A (zh) | 上下文狀態管理技術 | |
US20180341620A1 (en) | Core mapping | |
US20040117743A1 (en) | Heterogeneous multi-processor reference design | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
US9875131B2 (en) | Virtual PCI device based hypervisor bypass using a bridge virtual machine | |
US11263019B2 (en) | Method for converting device tree data into ACPI data for edge device operating in a network | |
TW202240415A (zh) | PCIe裝置及其操作方法 | |
US10180800B2 (en) | Automated secure data and firmware migration between removable storage devices that supports boot partitions and replay protected memory blocks | |
CN106708596B (zh) | 一种输入输出虚拟化资源的调整方法及处理器 | |
US9330024B1 (en) | Processing device and method thereof | |
US10331557B1 (en) | Distribution of memory address resources to bus devices in a multi-processor computing system | |
TWI840849B (zh) | 計算系統、電腦實施方法及電腦程式產品 |