TW202101951A - 輕量橋接器電路以及用於多實體功能模擬的方法及物品 - Google Patents
輕量橋接器電路以及用於多實體功能模擬的方法及物品 Download PDFInfo
- Publication number
- TW202101951A TW202101951A TW109121535A TW109121535A TW202101951A TW 202101951 A TW202101951 A TW 202101951A TW 109121535 A TW109121535 A TW 109121535A TW 109121535 A TW109121535 A TW 109121535A TW 202101951 A TW202101951 A TW 202101951A
- Authority
- TW
- Taiwan
- Prior art keywords
- exposed
- lwb
- endpoint
- ssd
- function
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- 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/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- 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
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- 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
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- 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/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Human Computer Interaction (AREA)
- Architecture (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Bus Control (AREA)
Abstract
一種輕量橋接器電路以及用於多實體功能模擬的方法及物品。揭露一種輕量橋接器。輕量橋接器可為電路。輕量橋接器的端點可將多個實體功能暴露至主機。輕量橋接器的根埠可連接至裝置且判定由裝置暴露的實體功能及虛擬功能。應用層端點及應用層根埠可在由端點暴露的實體功能與由裝置暴露的實體功能/虛擬功能之間進行轉換。應用層端點及應用層根埠可實施由端點暴露的實體功能與由裝置暴露的實體功能/虛擬功能之間的映射。
Description
本發明概念大體上涉及儲存裝置,且更特定言之,涉及模擬外圍組件互連高速(Peripheral Component Interconnect Express;PCIe)虛擬功能(Virtual Function;VF)作為PCIe實體功能(Physical Function;PF)。
[相關申請案資料]
本申請案主張2019年6月24日申請的美國臨時專利申請案第62/865,962號及2020年1月21日申請的美國臨時專利申請案第62/964,114號的權益,所述兩個美國臨時專利申請案出於所有目的以引用的方式併入本文中。
諸如外圍組件互連高速(PCIe)裝置的裝置暴露可由電腦系統中的其他組件存取的各種功能。舉例而言,主機處理器可使用由固態驅動器(Solid State Drive;SSD)暴露的此類功能來執行SSD內的各種操作。這些功能可在儲存於SSD上的資料上操作,或可在由主機提供的資料上操作。通常,由裝置暴露的功能涉及裝置的普通操作,但此類限制不為所需要的:例如,在SSD傳統地用於儲存資料時,若SSD包含處理器,則所述處理器可用於分擔來自主機處理器的處理。
在主機在啟動時枚舉裝置時(或當安裝時,若裝置的熱安裝經支援),由裝置暴露的功能可由主機發現。作為發現的部分,主機可向裝置查詢任何暴露的功能,所述功能可隨後添加至用於裝置的可用功能清單。
功能屬於兩個類別:實體及虛擬。實體功能(PF)可使用裝置內的硬體來實施。PF的資源可獨立於由裝置提供的任何其他PF而經管理及組態。虛擬功能(VF)為可當作虛擬化功能的輕量功能。不同於PF,VF通常與特定PF相關聯,且通常與其相關聯PF(且亦可能與相關聯於PF的其他VF)共用資源。
因為PF彼此獨立,且因為VF可需要將單根輸入/輸出虛擬化(Single Root Input/Output Virtualization;SR-IOV)用於主機以存取VF,故裝置偏好於暴露PF。但因為PF為獨立的,故其可需要單獨硬體,從而增大裝置內所需要的空間及由裝置消耗的功率。SR-IOV協定可增加尤其用於虛擬化使用案例的主機系統軟體堆疊的複雜度。
仍需要在不增加PF的成本需求的情況下為裝置提供PF,使得系統軟體複雜度可降低。
根據本發明概念的例示性實施例,如下提供一種輕量橋接器(lightweight bridge;LWB)電路。所述輕量橋接器(LWB)電路包含:端點,用以連接至主機,所述端點暴露多個實體功能(PF);根埠,用以連接至裝置,所述裝置將至少一個PF及至少一個虛擬功能(VF)暴露於根埠;以及應用層端點(Application Layer-End Point;APP-EP)及應用層根埠(Application Layer-Root Port;APP-RP),用以在暴露於主機的多個PF與由裝置暴露的至少一個PF及至少一個VF之間進行轉換,其中APP-EP及APP-RP實施由端點暴露的多個PF與由裝置暴露的至少一個PF及至少一個VF之間的映射。
根據本發明概念的另一例示性實施例,如下提供一種用於多實體功能模擬的方法。所述方法包含:使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF);使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF);在LWB的端點處產生多個PF以暴露於主機;以及使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)將LWB的端點處的多個PF映射至由裝置暴露的至少一個PF及至少一個VF。
根據本發明概念的另一例示性實施例,如下提供一種用於多實體功能模擬的物品。所述物品包含非暫時性儲存媒體,所述非暫時性儲存媒體在其上儲存有在由機器執行時引起以下操作的指令:使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF);使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF);在LWB的端點處產生多個PF以暴露於主機;以及使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)將LWB的端點處的多個PF映射至由裝置暴露的至少一個PF及至少一個VF。
現將詳細參考本發明的某些實施例,其實例在附圖中加以說明。在以下詳細描述中,闡述大量特定細節以使得能夠透徹理解本發明。然而,應理解,於本領域具有通常知識者可在無這些特定細節的情況下實踐本發明。在其他情況下,尚未詳細描述熟知方法、程序、組件、電路以及網路,以免不必要地混淆實施例的態樣。
應理解,儘管在本文中可使用術語第一、第二等來描述各種元件,但這些元件不應受限於這些術語。這些術語僅用於區分一個元件與另一元件。舉例而言,在不脫離本發明的範疇的情況下,第一模組可稱為第二模組,且類似地,第二模組可稱為第一模組。
本發明的描述中使用的術語僅出於描述特定實施例的目的,且不意欲限制本發明。如本發明的描述及所附申請專利範圍中所使用,除非上下文中另有清楚指示,否則單數形式「一(a/an)」及「所述」亦意欲包含複數形式。亦將理解,如本文中所使用的術語「及/或」指且涵蓋相關聯列出項目中的一或多者的任何及所有可能組合。將更應瞭解,術語「包括(comprises/comprising)」在用於本說明書中時指明存在所陳述的特徵、整數、步驟、操作、元件及/或組件,但不排除存在或添加一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組。圖式的組件及特徵未必按比例繪製。
本發明概念的實施例包含使用由裝置支援的虛擬功能(VF)來模擬諸如固態驅動器(SSD)的裝置中的多個實體功能(PF)的方法及系統。SSD可具有由多個PCIe實體功能(PF)或PCIe虛擬功能(VF)表示的多個NVMe控制器。每一PF或VF基本上呈現可由主機NVMe驅動器使用來執行資料儲存功能的NVMe控制器。PF具有實際的實體資源,而虛擬功能與PF共用資源。本發明概念的實施例可使用SSD控制器中的VF集合來將多個PF暴露於主機。亦即,多個PF可由裝置模擬且VF可在內部使用。在主機視角,主機系統軟體堆疊看到多個PCIe PF及那些PF後的NVMe控制器。本發明概念的實施例可將主機對PF的所有存取內部地映射及轉換至VF。
PCIe PF獨立於任何其他功能(實體或虛擬)。亦即,PF具有其自身專用的實體資源,諸如記憶體緩衝器。對於支援大量PF的裝置,會增加底層裝置的邏輯區域、功耗以及複雜度。因此,為降低裝置側的成本及複雜度,PCIe規範提供對虛擬功能(VF)的支援。VF與PF共用實體資源且視用於所有實體態樣的PF而定。這些實體態樣包含PCIe鏈路控制、裝置控制、功率管理等。
雖然VF降低裝置側的成本及複雜度,但VF增加系統軟體側的複雜度。系統軟體需要支援能夠與VF通信的單根輸入/輸出虛擬化(SR-IOV)協定。此添加的功能有時降低在額外時延方面的I/O效能。因此,期望具有來自系統軟體視角的PF。
本發明概念的實施例允許裝置使用SSD控制器中的VF來模擬PF。亦即,自主機視角,儲存裝置SSD看起來具有多個PF。但在裝置側上,那些PF可使用VF集合進行模擬。為降低成本,輕量橋接器(LWB)可用於暴露諸如SSD的裝置的功能,而不要求各種功能在SSD控制器ASIC中實施為PF。
在LWB的實例實施方案中,總共16個功能可如同其為實體功能而由LWB暴露,即使底層裝置可將功能中的一些或大多數實施為VF而非PF。LWB充當主機與SSD控制器自身之間的橋接器:LWB可實施為整體SSD裝置的部分,或實施為單獨組件。裝置可為SSD,其中功能(1個PF及15個VF)實施為SSD控制器的端點的部分。(SSD亦可習知地包含主機介面層(host interface layer;HIL)、快閃轉換層(flash translation layer;FTL)以及用以存取快閃記憶體的快閃控制器(flash controller;FC)。)
LWB可使用3代PCIe匯流排的四個通路與主機通信,而在LWB通信內部可使用3代PCIe匯流排的16個通路來實施。但本發明概念的實施例可使用PCIe匯流排(或其他匯流排類型)的任何特定版本來支援,且可在主機及在內部均不受限制地支援任何所要速度或通路或頻寬。本說明書中的PCIe通路寬度及速度僅為實例,且應理解,任何組合可使用相同概念來實施。
代替SSD控制器與主機上的根埠或根複合體通信,SSD控制器可與LWB的根埠通信。SSD控制器可未察覺此改變,且可如同通信為來自主機的通信而處理來自LWB的根埠的通信。類似地,主機可與LWB的端點通信,而不知曉所述端點不為SSD控制器(所述SSD控制器實施經暴露功能)。只要SSD控制器或主機為相關的,則與所述SSD控制器或主機通信的那一方(在本發明概念的實施例中,LWB)可視為黑箱。
LWB的端點可暴露與SSD控制器的端點相同數目的功能。但代替這些功能中的一些經暴露為VF,LWB的端點可暴露所有功能作為PF。LWB亦可包含用於端點的PCIe應用層(PCIe Application Layer for Endpoint;PAPP-EP)及用於根埠的PCIe應用層(PCIe Application Layer for Root Port;PAPP-RP)。PAPP-EP及PAPP-RP可管理自如由LWB的端點暴露的PF至如由SSD控制器的端點暴露的功能(實體或虛擬)的映射。PAPP-RP可包含組態轉換表以輔助管理暴露於主機的PF的PCIe組態空間至SSD控制器EP的PF及/或VF的PCIe組態空間的映射。此表亦可指示由LWB端點暴露的PF映射至由SSD控制器端點暴露的所述功能,以及與映射相關的其他資訊(例如,SSD控制器中的哪些位址可儲存用於經暴露功能的資料)。由LWB的端點提供的PCIe組態特徵及能力可(且通常確實)不同於由SSD控制器的端點提供的那些組態特徵及能力:組態轉換表可幫助管理這些差異。PAPP-RP亦可處置暴露於主機的PF的記憶體基礎位址寄存器(base address register;BAR)位址與SSD控制器EP的PF及/或VF的BAR的轉換。視需要,PAPP-EP及/或PAPP-RP亦可包含其他表。主機暴露PF與SSD控制器內部PF/VF的映射可本質上為靈活及動態的。映射可在運行時間期間基於由諸如主機及/或板管理控制器(Board Management Controller;BMC)的管理實體發出的某些事件及/或策略改變而改變。這些事件的一些實例為虛擬機(Virtual Machine;VM)遷移、SLA改變、功率/效能節制、日期、時間等。
雖然PAPP-EP及PAPP-RP在本發明概念的一些實施例中可為單獨組件,但本發明概念的其他實施例可在單個實施方案中實施這些組件(及有可能LWB的端點、根埠以及組態管理器)。舉例而言,LWB可使用場可程式化閘陣列(Field Programmable Gate Array;FPGA)或特殊應用積體電路(Application-Specific Integrated Circuit;ASIC)來實施(此僅為可能實施方案的兩個實例)。PAPP-EP及PAPP-RP可使用任何所要機構進行通信。舉例而言,中間資料格式可經定義,所述中間資料格式可用於在PAPP-EP與PAPP-RP之間交換資料以調用特定功能且返回結果。
LWB亦可包含組態管理器。組態管理器可枚舉由SSD控制器的端點提供的功能(PF及VF兩者)。組態管理器可隨後使用資訊來「定義」由LWB的端點暴露的功能以及幫助建構PAPP-RP中的組態空間轉換表。一般而言,組態管理器主要在啟動期間使用。但主機可改變用於與(LWB的)端點關於各種功能通信的PF(諸如中斷)的PCIe組態空間,或主機可啟用或停用特定功能。組態管理器可視需要用於輔助產生這些改變。LWB亦可需要確保類似PCIe組態空間改變視需要經傳播至SSD控制器。亦即,LWB執行在暴露於主機的PF與由內部SSD控制器EP暴露的PF/VF之間的PCIe組態鏡射。因此,LWB亦可管理由SSD控制器暴露的功能。
因為在整體裝置中存在兩個端點(一個在LWB中,一個在SSD控制器中),故所述端點各自維持其自身組態空間。這些組態空間應同步以避免潛在問題或衝突。當主機發送組態寫入命令時,LWB可更新LWB端點中的組態空間。組態寫入命令亦可轉遞至SSD的端點(經由PAPP-EP、PAPP-RP以及根埠),使得SSD控制器的端點亦可經更新。並非所有主機引發的組態寫入命令可經反映至SSD控制器。亦即,主機組態空間改變中的一些可並不原樣反映至後端SSD控制器。舉例而言,主機可對LWB EP進行功率管理改變,然而,所述或類似改變可並不藉由LWB而對SSD控制器EP進行。
當主機發送組態讀取命令時,命令可由LWB的端點滿足。LWB的端點可將組態讀取命令轉遞至PAPP-EP,但PAPP-EP可終止所述命令:由於兩個組態空間同步,故每一組態空間中的資料應相同。(替代地,LWB的端點可對組態讀取命令作出回應且在彼時終止所述命令,而不將組態讀取命令轉遞至PAPP-EP。)
當LWB接收記憶體讀取或寫入交易(經由LWB的端點自主機接收或經由LWB的根點自SSD控制器接收)時,LWB可將交易轉遞至另一方(視需要,主機或SSD控制器)。LWB可使用PAPP-EP及/或PAPP-RP中的BAR表來執行適當位址轉換。用於自主機接收到的交易的此類位址轉換的一個實例為PAPP-EP可自接收到的位址減去PF BAR且PAPP-RP可將VF BAR添加至所述位址以達到SSD控制器中的正確位址。
本發明概念的實施例亦可包含PAPP-EP與PAPP-RP之間的視情況選用的中間元件,其可用於映射、頻寬控制等。此視情況選用的元件亦可用以出於多種原因可變地「節制」頻寬。舉例而言,由LWB的端點暴露的不同功能可具有不同服務品質(QoS)需求或服務等級協定(Service Level Agreement;SLA)。具有低頻寬QoS的PF可經節制以確保存在用於具有較高QoS頻寬需求的PF的足夠頻寬。節制頻寬的其他原因可包含功率或溫度。LWB可用於基於每PF來執行頻寬節制,或所述LWB可基於諸如主機及/或BMC的管理實體的組態設置或策略設置來執行對所有PF的頻寬節制。溫度或功率節制決策可基於兩個臨限值,high_limit及low_limit。當功耗或溫度超出high_limit時,頻寬節制可基於策略而應用於所有PF或選擇性PF。頻寬節制可經應用直至功率或溫度降至低於相應low_limit臨限值為止。
在本發明概念的以上實例實施例中,SSD控制器的端點經描述為提供可映射至LWB的端點處的16個不同PF的1個PF及15個VF。這些數目為任意的:SSD控制器的端點可提供任何數目的PF及VF,所述PF及VF可映射至LWB的端點上的16個PF,或更多或更少PF。
若需要,則SSD控制器上的VF可視需要在LWB內經遷移,其中在LWB及/或SSD控制器內進行任何適當改變。因此,自由LWB的端點暴露的PF至由SSD控制器暴露的功能的映射可在運行時間內修改,且因此為靈活的。
LWB內部的通信可使用任何所要技術完成。舉例而言,在端點、PAPP-EP、PAPP-RP與根埠之間交換的資訊可使用交易等級封包(transaction level packet;TLP)協定。
裝置自身可具有任何外觀尺寸。舉例而言,SSD可使用U.2或全高半長(Full Height, Half Length;FHHL)外觀尺寸進行封裝,以及其他可能性。其他類型的裝置可類似地以任何所要外觀尺寸進行封裝。
在本發明概念的另一實施例中,可包含多個SSD控制器,每一SSD控制器提供任何數目個功能:例如,每一SSD控制器可提供總共8個功能。多工器/解多工器可耦接在LWB的端點之間,所述多工器/解多工器可將與特定暴露PF相關的資料導向至適當PAPP-EP/PAPP-RP/根埠/SSD控制器以用於最終執行。以此方式,單個LWB可暴露比可由單個SSD控制器提供的功能更多的功能。
每一SSD控制器可與LWB中的單獨根埠通信,每一根埠具有由PAPP-EP、PAPP-RP以及組態轉換表組成的其自身片層。以此方式,涉及一個SSD控制器的操作可不在涉及另一SSD控制器的操作上內部地影響LWB。
舉例而言,當單個SSD控制器上的端點並不滿足主機的所有需求時,可使用諸如此的本發明概念的實施例。舉例而言,若SSD控制器支援僅8個PCIe通路但主機希望支援16個通路的頻寬,則多個SSD控制器可用於支援所需要的頻寬。或若SSD控制器總共僅支援八個功能且主機希望支援16個功能,則多個SSD控制器可用於供應所需要的功能集。亦即,LWB可用於使用適當數目的PAPP-EP/PAPP-RP/RP片層將任何數目的SSD控制器連接至主機作為單個多功能PCIe儲存裝置。
如同本發明概念的其他實施例,所用數目為例示性的且並不為限制性的。因此,LWB的端點可使用任何類型的匯流排、任何版本的彼匯流排以及彼匯流排上的任何數目的通路;LWB的端點可暴露任何數目的PF;由每一SSD控制器暴露的PF的數目可改變;內部匯流排類型、版本以及速度可改變,與SSD控制器的連接亦可改變(其亦可單獨地改變);連接至LWB的SSD控制器的數目可改變(且可連接至LWB中的不同或相同路由點);等等。
圖1展示根據本發明概念的實施例的包含能夠使用裝置的虛擬功能(VF)來模擬由LWB暴露的實體功能(PF)的輕量橋接器(LWB)的機器。在圖1中,展示機器105,其亦可稱為主機。機器105可包含處理器110。處理器110可為任何種類的處理器:例如,Intel Xeon、Celeron、Itanium或Atom處理器、AMD Opteron處理器、ARM處理器等。雖然圖1展示機器105中的單個處理器110,但機器105可包含任何數目的處理器,所述處理器中的每一者可為單核心或多核心處理器,且可以任何所要組合混合。
機器105亦可包含記憶體115。記憶體115可為任何種類的記憶體,諸如快閃記憶體、動態隨機存取記憶體(Dynamic Random Access Memory;DRAM)、靜態隨機存取記憶體(Static Random Access Memory;SRAM)、持續性隨機存取記憶體、鐵電隨機存取記憶體(Ferroelectric Random Access Memory;FRAM)或非易失性隨機存取記憶體(Non-Volatile Random Access Memory;NVRAM),諸如磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory;MRAM)等。記憶體115亦可為不同記憶體類型的任何所要組合。機器105亦可包含可用於管理對記憶體115的存取的記憶體控制器120。
機器105亦可包含固態驅動器(SSD)125。SSD 125可用於儲存資料,且可暴露由處理器110(及在其上執行的軟體)用來調用SSD 125的各種能力的實體功能(PF)及虛擬功能(VF)兩者。雖然圖1展示SSD 125,但本發明概念的實施例可包含提供PF及VF的任何類型的裝置。舉例而言,提供PF及VF的諸如硬碟驅動機的其他類型的儲存裝置可用於SSD 125的位置,作為提供除資料儲存以外的基礎功能性的可能裝置。在此文檔的其餘部分中,任何對SSD 125的參考意欲包含參考可提供PF/VF的其他類型的裝置。在本發明概念的一些實施例中,SSD 125可用於連接至外圍組件互連高速(PCIe)匯流排且提供PCIe PF及VF,但本發明概念的實施例可使用其他介面。處理器110可運行可支援對SSD 125的存取的裝置驅動器130。
輕量橋接器(LWB)135可定位於SSD 125與機器105的其餘部分之間。LWB可充當SSD 125與機器105的其餘部分之間的橋接器,且可暴露SSD 125的功能,但以PF而非VF形式。
雖然圖1描繪機器105作為伺服器(其可為獨立或框架伺服器),但本發明概念的實施例可包含但不限於任何所要類型的機器105。舉例而言,機器105可經桌上型電腦或膝上型電腦或可得益於本發明概念的實施例的任何其他機器置換。機器105亦可包含特殊化攜帶型計算機器、平板電腦、智慧型電話以及其他計算機器。另外,可自SSD 125存取資料的應用程式可定位於與機器105分離的另一機器中且經由穿越任何類型的一或多個網路(有線、無線、全域等)的網路連接來存取機器105。
圖2展示圖1的機器105的額外細節。在圖2中,通常,機器105包含可包含記憶體控制器120及時鐘205的可用於協調裝置105的組件的操作的一或多個處理器110。處理器110亦可耦接至記憶體115,作為實例,記憶體115可包含隨機存取記憶體(RAM)、唯讀記憶體(read-only memory;ROM)或其他狀態保留媒體。處理器110亦可耦接至儲存裝置125且耦接至網路連接器210,網路連接器210可為例如乙太網路連接器或無線連接器。處理器110亦可連接至匯流排215,使用者介面220及可使用輸入/輸出引擎225管理的輸入/輸出介面埠以及其他組件可附接至匯流排215。
圖3展示圖1的SSD 125的細節。在圖3中,SSD 125可包含主機介面邏輯(host interface logic;HIL)305、SSD控制器310以及可組織至各種通道320-1至通道320-4中的各種快閃記憶體晶片315-1至快閃記憶體晶片315-8(亦稱為「快閃記憶體儲存器」)。主機介面邏輯305可管理SSD 125與其他組件(諸如圖1的處理器110及圖1的LWB 135)之間的通信。主機介面邏輯305亦可管理與遠離SSD 125的裝置的通信:亦即,不認為是裝置105的部分但例如經由一或多個網路連接與SSD 125通信的裝置。這些通信可包含用以自SSD 125讀取資料的讀取請求、用以將資料寫入至SSD 125的寫入請求以及用以自SSD 125刪除資料的刪除請求。主機介面邏輯305可管理僅跨單個埠的介面,或主機介面邏輯305可管理跨多個埠的介面。替代地,SSD 125可包含多個埠,所述埠中的每一者可具有單獨主機介面邏輯305以管理跨彼埠的介面。本發明概念的實施例亦可混合可能性(例如,具有三個埠的SSD可具有管理一個埠的一個主機介面邏輯及管理另兩個埠的第二主機介面邏輯)。
SSD控制器310可使用快閃記憶體控制器(在圖3中未展示)來管理快閃記憶體晶片315-1至快閃記憶體晶片315-8上的讀取及寫入操作,連同垃圾收集及其他操作。SSD控制器310可包含快閃轉換層325、快閃控制器330以及端點335。快閃轉換層可管理邏輯區塊位址(logical block address;LBA)(如由圖1的主機105使用)至實體區塊位址(physical block address;PBA)的映射,其中資料實際上儲存於SSD 310上。藉由使用快閃轉換層325,當資料在SSD 125內自一個區塊移動至另一區塊時,圖1的主機105並不需要經告知。
快閃控制器330可管理資料至快閃晶片315-1至快閃晶片315-8的寫入以及自所述快閃晶片315-1至快閃晶片315-8的資料讀取。端點335可充當用於SSD 125的端點,所述端點可連接至另一裝置(諸如圖1的主機105或圖1的LWB 135)上的根埠。
雖然圖3將SSD 125展示為包含組織至四個通道320-1至通道320-4中的八個快閃記憶體晶片315-1至快閃記憶體晶片315-8,但本發明概念的實施例可支援組織至任何數目的通道中的任何數目的快閃記憶體晶片。類似地,雖然圖3展示SSD的結構,但可使用不同但具有類似潛在益處的結構來實施其他儲存裝置(例如,硬碟驅動機)。
圖4A至圖4C展示根據本發明概念的各種實施例的圖1的LWB 135。在圖4A中,LWB 135經展示為包含端點405,應用層端點(APP-EP)410、應用層根埠(APP-RP)415以及根埠420。端點405可用於與其他裝置(諸如圖1的主機105)的根埠通信。在圖4A中,端點405經展示為將16個PF暴露於上游裝置,且經展示為使用與四個通路介接的3代PCIe,所述通路可用於與上游裝置通信。因此,與圖1的主機105的介面可為與四個通路介接的3代PCIe,如由介面425所展示。類似地,根埠420可與其他裝置(諸如SSD 125)的端點通信。因此,與SSD 125的介面可為與四個通路介接的3代PCIe,如由介面430所展示。在圖4A中,根埠420經展示為使用與四個通路介接的3代PCIe,所述通路可用於與下游裝置通信。在圖4A中,根埠420經展示為具有來自SSD 125的所枚舉的一個PF及15個VF,且端點405經展示為暴露16個PF:一個PF由端點405暴露以用於由SSD 125暴露的每一功能(實體或虛擬)。
端點405可與APP-EP 410通信,APP-EP 410又可與APP-RP 415通信。APP-EP 410及APP-RP 415可管理端點405與根埠420之間的資訊轉換。圖4A並不展示端點405如何與APP-EP 410通信、APP-EP 410如何與APP-RP 415通信或APP-RP 415如何與根埠420通信的細節,此是因為可使用任何所要通信機構。舉例而言,端點405、APP-EP 410、APP-RP 415以及根埠420可使用PCIe或另一匯流排(諸如進階可擴展介面(Advanced eXtensible Interface;AXI)匯流排)與任何所要版本且包含任何所要數目的資料匯流排寬度的介面通信。或,端點405、APP-EP 410、APP-RP 415以及根埠420可使用專屬傳訊方案使用任何所要匯流排/介面進行通信。本發明概念的實施例亦可包含端點405、APP-EP 410、APP-RP 415與根埠420之間的通信的其他機構。在LWB 135內部的通信方式與自LWB 135至圖1的主機105或SSD 125的通信方式之間可不存在關係。
APP-RP 415可包含組態表435。組態表435可儲存關於LWB 135的組態資訊。此類組態資訊的實例可包含由端點405暴露的PF與由SSD 125提供(且經由枚舉經由根埠420判定)的PF/VF之間的映射。儲存於組態表435中的組態資訊亦可包含可與由端點405暴露的特定PF相關聯的關於服務品質(QoS)策略(其亦可稱為服務等級協定(SLA))的資訊。組態管理器440可用於組態LWB 135,從而將資訊儲存在組態表435中。組態管理器440亦可用以判定關於由SSD 125暴露的功能的資訊,且可程式化端點405以提供類似(或相同)功能性(但使用僅PF,而非PF及VF)。組態管理器440進行什麼操作的細節可視由SSD 125提供的特定功能而定(由於組態管理器440可組態端點405以提供與由SSD 125提供的PF及VF匹配的PF的集合),但原理可大體上概述為判定由SSD 125暴露的個別PF/VF的組態,從而確立待由端點405暴露的適當數目的PF,且組態那些PF以匹配由SSD 125暴露的PF/VF的組態。
雖然圖4A將APP-EP 410及APP-RP 415展示為單獨組件,但本發明概念的實施例可將這兩種組件組合為單個組件(負責如所描述處置APP-EP 410及APP-RP 415兩者的功能)。實際上,整個LWB 135可實施為單個單元,而非實施為彼此通信的單獨組件。LWB 135(以及端點405、APP-EP 410、APP-RP 415、根埠420以及組態管理器440)可以任何所要方式實施。本發明概念的實施例可使用具有適當軟體的通用處理器、場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、圖形處理單元(Graphics Processing Unit;GPU)以及通用GPU(General Purpose GPU;GPGPU)來實施LWB 135(及/或其組件,單獨地及/或共同地),以及其他可能性。
在圖4A中(且與以下圖4B至圖4C類似地),所展示的任何特定數目僅意欲為實例,且本發明概念的實施例可包含其他數目。舉例而言,根埠420經展示為具有來自SSD 125的所枚舉的1個PF及15個VF,但SSD 125可暴露任何數目(0或大於0)的PF及VF(雖然由於任何暴露的VF視來自某一PF的硬體而定,必須存在經暴露以提供用於任何暴露的VF的硬體的至少一個PF)。類似地,端點405經展示為暴露16個PF,但端點405可將任何數目(0或大於0)的PF暴露於圖1的主機105。應注意,雖然端點405暴露與SSD 125相同數目的總功能,但由SSD 125暴露的功能與由端點405暴露的功能之間並不需要為一對一對應。舉例而言,由SSD 125暴露的一些功能可不具有由端點405暴露的對應PF,或由端點405暴露的單個PF可映射至由SSD 125暴露的多個功能(實體及/或虛擬)。作為前者的一實例,寫入請求每次可經導向至僅一個SSD,此將使得支援在非選擇SSD上的寫入請求的功能不具有由端點405暴露的對應PF。作為後者的一實例,在本發明概念的實施例中,其中LWB 135連接至多個SSD(諸如展示於下圖4C中),用以執行垃圾收集的藉由圖1的主機105的請求可經發送至連接至LWB 135的所有SSD,即使僅單個PF可由端點405暴露至請求執行垃圾收集的圖1的主機105。
以類似方式,展示於圖4A中的特定產品的任何版本僅意欲為實例,且本發明概念的實施例可使用其他產品或產品的其他版本。舉例而言,圖4A展示LWB 135與圖1的主機105通信(經由介面425)且使用具有四個通路的3代PCIe與SSD 125通信(經由介面430)。本發明概念的其他實施例可使用其他代的PCIe匯流排/介面,或其他數目的通路,或甚至另一類型的匯流排,諸如進階可擴展介面(AXI)匯流排。舉例而言,除介面425及介面430使用具有八個而非四個通路的3代PCIe的事實以外,圖4B類似於圖4A。
在本發明概念的一些實施例中,單個SSD 125可出於圖1的主機105的目的而不提供充足能力。舉例而言,假若圖4A至圖4B的SSD 125僅提供1個PF及7個VF,且因此並不提供圖1的主機105所要的特定功能會怎樣?將有可能用提供所要功能性的另一裝置置換SSD 125。但作為替代方案,LWB 135可連接至多個裝置,如圖4C中所展示。
在圖4C中,LWB 135經展示為分別通過介面430-1及介面430-2連接至SSD 125-1及SSD 125-2。因為SSD 125-1及SSD 125-2各自提供1個PF及7個VF,(如根埠420-1及根埠420-2中可見),因此SSD 125-1及SSD 125-2均不能單獨提供16個功能。但是,SSD 125-1及SSD125-2總共提供16個功能。因此,藉由聚集SSD 125-1及SSD 125-2的資源(諸如經暴露功能),LWB 135可提供總共16個PF而無需單個SSD提供所有功能。
如在圖4C中可見,LWB 135僅包含一個端點405,但包含各兩個APP-EP 410-1及APP-EP 410-2、APP-RP 415-1及APP-RP 415-2、組態表435-1及組態表435-2以及根埠420-1及根埠420-2。以此方式,LWB 135可藉由聚集由SSD 125-1及SSD 125-2提供的功能來暴露來自單個端點(端點405)的所有16個功能。但因為由端點405暴露的不同PF可映射至SSD 125-1及SSD 125-2上的功能,故LWB 135亦可包含多工器/解多工器445。多工器/解多工器445可將與端點405的特定暴露PF相關聯的請求路由至適當APP-EP 410-1或APP-EP 410-2,所述適當APP-EP 410-1或APP-EP 410-2的通信路徑使得SSD 125-1或SSD 125-2提供對應PF或VF。雖然圖4A至圖4B並不展示多工器/解多工器445(由於僅存在連接至LWB 135的SSD 125),但LWB 135仍可包含本發明概念的實施例中的多工器/解多工器445,其中LWB 135僅連接至一個SSD 125:多工器/解多工器445可不添加任何功能,但亦不存在與包含多工器/解多工器445相關聯的任何實際成本。(但若LWB 135僅能夠連接至單個裝置,則包含多工器/解多工器亦並不添加任何益處。)
應注意,本發明概念的實施例可聚集除恰好暴露的功能以外的資源。舉例而言,在圖4C中,介面430-1及介面430-2可各自包含3代PCIe匯流排/介面的八個通路。但因為SSD 125-1及SSD 125-2可並行地使用(亦即,SSD 125-1及SSD 125-2兩者可同時處理請求),故LWB 135可經由與圖1的主機105的介面425來提供3代PCIe匯流排/介面的16個通路。以相同方式,由SSD 125-1及SSD 125-2中的每一者提供的頻寬可經聚集,使得LWB可通告等於由SSD 125-1及SSD 125-2分別提供的頻寬的總和的頻寬。本發明概念的實施例亦可聚集除功能、PCIe通路或頻寬外的其他資源。
如同圖4A至圖4B,展示於圖4C中的任何數目或版本僅作為實例使用,且本發明概念的實施例可支援其他數目或版本。舉例而言,SSD 125-1及SSD 125-2並不需要提供相同數目的暴露功能(實體及/或虛擬),亦並不必需使用相同代或數目的PCIe匯流排/介面的通路。
在圖4A至圖4C中,LWB 135經展示為與SSD 125分離。但本發明概念的實施例可將這兩種裝置組合為單個單元。亦即,SSD 125在其情況內可包含定位於圖3的主機介面邏輯305之前(或至少在圖3的SSD 控制器310之前)的LWB 135。本發明概念的實施例亦不限於在單個SSD內包含LWB 135:容納多個SSD的單個外殼亦可容納LWB 135,以實現展示於圖4C中的實施方案。出於此文檔的目的,術語「連接的」及類似術語意欲意謂無論是藉助於與裝置實體上共用任何硬體抑或是由於LWB 135實體上不同於SSD 125而藉助於經由某種介面的連接來與LWB 135通信的任何裝置。
如上文所論述,暴露VF的裝置的問題中的一者為圖1的主機105可需要實施SR-IOV軟體以存取經暴露VF。此SR-IOV軟體增加與裝置的通信的時延。但由於預先已知用於管理對裝置的VF的存取的SR-IOV序列,故SR-IOV序列可使用狀態機來實施,從而緩解圖1的主機105必須使用SR-IOV來存取裝置的VF的負擔。另外,因為狀態機可使用硬體來實施,故使用LWB 135內的狀態機而非圖1的主機105內的SR-IOV軟體亦可減少在處理請求中的時延。使用狀態機在LWB 135內實施SR-IOV序列自主機基本上分擔並隱藏與裝置的SR-IOV協定的所有負擔。換言之,圖1的主機105可對與圖1的主機105通信的裝置內部的SR-IOV的任何實施方案的存在不可知。
圖5展示圖4A至圖4C的組態管理器440的細節。在圖5中,組態管理器440可包含單根輸入/輸出虛擬化(SR-IOV)序列505及狀態機510。SR-IOV序列505可為將在圖1的主機105內的SR-IOV軟體中實施的序列且可使用狀態機510執行。SR-IOV序列505可儲存於組態管理器440內的唯讀記憶體(ROM)中。狀態機510類似圖4A至圖4C中展示的LWB 135自身及其組件,除其他可能性外,可使用通用處理器、FPGA、ASIC、GPU或GPGPU來實施。
圖6展示由圖1的LWB 135暴露的PF與由圖1的SSD 125(或圖4C的SSD 125-1及SSD 125-2)暴露的PF/VF之間的映射。在圖6中,PF 605為由圖1的LWB 135暴露的PF(更具體而言,由圖4A至4C的端點405暴露的PF)。另一方面,PF/VF 610為由圖1的SSD 125暴露的功能(實體及虛擬兩者)。映射615可隨後表示PF 605與PF/VF 610之間的映射。展示於圖6中的映射用於說明性目的且為基本上任意的,但圖4A至圖4C的組態管理器440可使用任何所要機構來判定PF 605的哪一PF映射至PF/VF 610的哪一PF/VF。映射可考慮到由圖1的主機105(或圖1的主機105內的底板管理控制器(Baseboard Management Controller;BMC))或圖1的SSD 125設置的指南及/或策略而實施。
圖7展示圖1的LWB 135處理來自圖1的主機105的組態寫入請求。在圖7中,圖1的LWB 135(更具體而言,端點405)可接收組態寫入請求705。端點405可隨後在本端處理組態寫入請求705以進行包含於組態寫入請求705中的無論任何改變。
應注意,組態寫入請求705可不要求對SSD 125進行改變。舉例而言,由圖1的主機105確立的QoS策略可僅影響由端點405暴露的PF,且不要求SSD 125內的任何改變。但在一些情形中,組態寫入請求705亦可要求修改SSD 125。舉例而言,組態寫入請求可改變關於SSD 125上的底層功能的資料,而非可由圖1的LWB 135單獨管理的資料。在此等情形下,端點405可經由根埠420將組態寫入請求705傳播至SSD 125(如由虛線箭頭710及虛線箭頭715所展示)。組態寫入請求705可經由圖4A至圖4C的APP-EP 410及圖4A至圖4C的APP-RP 415或經由圖4A至圖4C的組態管理器440來轉遞至根埠420。圖4A至圖4B的組態表435可用於判定組態寫入請求705是否應亦應用於SSD 125(以確保端點405與SSD 125的組態彼此鏡射)。
如同圖4A至圖4C,端點405(及有可能SSD 125)可如何經組態的細節很大程度上視組態寫入請求705的細節而定。但在組態寫入請求705的細節已知後,對端點405(及有可能SSD 125)進行的改變可直接進行。
如上文所提及,需要端點405與SSD 125的組態彼此鏡射。但如上所指出,可存在單獨應用於端點405(或將因為端點405可處理那些改變而對SSD 125不重要)的一些組態。其中組態改變將對SSD 125不重要,那些組態改變無需遞送至SSD 125。
在圖7中,組態寫入請求705經描述為來源於圖1的主機105。但本發明概念的實施例可支援SSD 125請求圖4A至圖4C的端點405中的組態改變。亦即,圖1的SSD 125可在運行時間期間向圖1的主機105動態地請求對由圖4A至圖4C的端點405暴露的PF的組態、特徵或能力的改變。舉例而言,圖1的SSD 125可增大或減少用於由圖4A至圖4C的端點405暴露的PF的中斷向量的數目。此類改變可為來自由圖1的主機105使用諸如非揮發性記憶體高速(Non-Volatile Memory Express;NVMe)的較高層級儲存器通信協定(經由圖1的LWB 125)傳達至圖1的SSD 125的應用需求中的改變的結果。
圖8展示圖1的LWB 135處理來自圖1的主機105的組態讀取請求。在圖8中,端點405可自圖1的主機105接收組態讀取請求805。端點405可隨後讀取所請求的組態資訊且將所述組態資訊返回至圖1的主機105作為組態資訊810。
如同圖7的組態寫入請求705,組態讀取請求805可遞送至SSD 125以待自SSD 125讀取。因此,組態讀取請求805可分別作為組態讀取請求815及組態讀取請求820遞送至根埠420及SSD 125,其中組態資訊810作為組態資訊825及組態資訊830返回。但由於端點405的組態應鏡射SSD 125的組態,故可不需要將組態讀取請求805遞送至SSD 125以判定所請求的組態資訊。另外,如同圖7的組態寫入請求705,組態讀取請求805可經由圖4A至圖4C的APP-EP 410及圖4A至圖4C的APP-RP 415或經由圖4A至圖4C的組態管理器440來遞送至根埠420。
圖9展示圖4A至圖4C的應用層端點(APP-EP)410及圖4A至圖4C的應用層根埠(APP-RP)415在LWB 135內處置位址轉換。在圖9中,位址905可為自圖1的主機105(例如,圖1的主機105請求讀取的NVMe寄存器)接收到的位址。APP-EP 410可隨後減去用於由圖1的主機105調用的PF的主機基礎位址寄存器(BAR)910。APP-RP 415可隨後添加用於圖4A至圖4C的端點405的所請求PF映射至的PF/VF的SSD BAR 915,籍此產生SSD位址920。以此方式,APP-EP 410及APP-RP 415可將如自主機的視角所見的位址轉換為可由圖1的SSD 125處理的位址。
應注意,所述處理可相反用於將SSD位址轉換回至自主機的視角的位址。因此,APP-RP 415可自SSD位址920減去SSD BAR 915且APP-EP 410可添加主機BAR 910,籍此產生主機位址905。
圖10展示在圖1的LWB 135內改變圖6的映射。存在映射615為何可改變的多種原因。舉例而言,儲存器參數1005可觸發對映射615的改變:例如,若特定SSD上的可用容量降至低於自由空間的臨限量,則新的寫入請求可經導向至連接至圖1的LWB 135的不同SSD,諸如圖4C的SSD 125-2。替代地,日1010或日時間1015可觸發對映射615的改變:舉例而言,在特定主機105處用於特定請求的峰值時間可在6:30 am與8:00 am之間及在5:00 pm與9:00 pm之間,因此與處置此類請求的PF相關聯的頻寬可在那數小時期間增大且在其他數小時減小。即使未使用習知或已知日/時間值來指明,但日1010及日時間1015可一般化為涉及日及/或時間的任何觸發。舉例而言,在體育事件結尾時,即使此類請求將開始處的特定時間可並不已知(體育事件持續時間大致已知,但可視事件自身而定進行更短或更長時間),但可預期歸家的粉絲可自其智慧型電話上的GPS應用請求方向。頻寬利用率1020自身亦可觸發對映射615的改變:例如,以平衡連接至圖1的LWB 135的SSD上的負載。最後,QoS策略中的改變1025可觸發對映射615的改變:例如,添加新的QoS策略可要求功能如何映射中的改變。本發明概念的實施例亦可包含對映射615的改變的其他觸發。在不考慮觸發的情況下,作為改變映射615可經映射1030置換的結果,映射615仍將由圖4A至圖4C的端點405暴露的PF映射至由圖1的SSD 125暴露的PF/VF,但可能以不同配置。
圖11展示由圖1的LWB 135暴露的PF具有相關聯服務品質(QoS)策略。在圖11中,展示具有與經暴露PF相關聯的單個QoS策略1105的一個PF(如由圖4A至圖4C的端點405暴露)。但本發明概念的實施例可包含具有任何數目的相關聯QoS策略的經暴露PF。舉例而言,由圖4A至圖4C的端點405暴露的一些PF可具有不相關QoS策略;由圖4A至圖4C的端點405暴露的其他PF可具有兩個或大於兩個相關聯QoS策略。
與由圖4A至圖4C的端點405、圖1的LWB 135暴露的PF相關聯的給定QoS策略1105可根據其規範來實施彼QoS策略。再次,由於所述規範可廣泛改變,故圖1的LWB 135如何實施特定QoS策略的細節可不在本文中加以陳述。但作為一實例,QoS策略1105可指明用於特定PF的最大(及/或最小)頻寬(由此確保所述特定PF並不防止其他PF接收其公平共用的頻寬或確保所述特定PF接收其指明分配的頻寬)。隨後,藉由防止使用圖1的SSD 125上的彼對應PF/VF的通信超出最大頻寬,或藉由確保使用圖1的SSD 125上的除對應於PF的PF/VF以外的PF/VF的通信保證用於經暴露PF的最小頻寬,圖1的LWB 135可確保QoS策略1105經滿足。
雖然圖1的LWB 135可實施QoS策略1105,但取決於圖1的主機105(或圖1的SSD 125,若圖1的SSD 125請求策略經應用)來確保策略恰當。舉例而言,假定圖1的SSD 125具有100 Gb/秒的最大頻寬,其中支援總共16個功能(PF及VF)。若主機將指派保證由LWB 135暴露的每一PF具有10 GB/秒的最小頻寬的QoS策略,則總分配頻寬將為160 GB/秒,此超出圖1的SSD 125的能力。因此,一些PF將不滿足其相關聯QoS策略。因此,雖然圖1的LWB 135可實施QoS策略1105,但LWB 135可不檢查與指派至各種PF的其他QoS策略組合的QoS策略1105可皆同時實施。
因此,在實施QoS策略與確保QoS策略始終可實施之間存在差異。圖1的LWB 135可執行前者;其可不執行後者。但不值得的是,僅因為QoS策略的集合可不同時實施,彼事實並不意謂將存在一段將不滿足任何個別QoS策略的時間。舉例而言,再次考慮提供總共10 GB/秒的頻寬的圖1的SSD 125,且假定圖1的主機105指明用於由圖4A至圖4C的端點405暴露的兩個不同PF的QoS策略,從而保證每一PF具有6 GB/秒的最小頻寬。共同地,兩個QoS策略可不滿足,此是由於每一PF「保證」圖1的SSD 125的可用10 GB/秒的頻寬中的6 GB/秒。但若確認邏輯上(或實體上)不可能同時調用兩個功能(例如,若一個功能與自圖1的SSD 125讀取資料或將資料寫入至圖1的SSD 125有關,且另一功能與圖1的SSD 125執行內部一致性檢查有關,所述一致性檢查使得圖1的SSD 125不能對任何其他功能作出回應直至一致性檢查完成為止),則圖1的主機105有可能指明兩個QoS策略:即使所述功能累積超過由圖1的SSD 125提供的頻寬,所述兩個策略將不同時實施,因此僅存在邏輯衝突,沒有實際(或甚至潛在)衝突。
如上文所提及,圖1的LWB 135有時可需要執行頻寬節制:例如,以防止由圖4A至圖4C的端點405暴露的特定PF使用過多頻寬以至於圖1的SSD 125的其他功能過度受限。圖12A至圖12B展示圖1的LWB 135執行頻寬節制。在圖12A中,LWB 135經展示為自圖1的主機105接收「高」或「大」頻寬1205。若此頻寬因無論任何原因而過於大,則LWB 135可將頻寬節制至圖1的SSD 125,如由「低」或「小」頻寬1210所展示。在圖12B中,展示相反情形:LWB 135可利用圖1的SSD 125而具有「高」或「大」頻寬1215,但可利用圖1的主機105來節制頻寬1220。因此,當圖1的SSD 125的可用頻寬高於為PF設置的SLA的最大頻寬時,LWB 135可節制頻寬。
本發明概念的實施例可出於多種原因而執行頻寬節制。除圖11的QoS策略1105(其可節制與由圖4A至圖4C的端點405暴露的特定PF相關聯的頻寬,若用於彼PF的頻寬過於大)以外,用於節制頻寬的其他原因可包含溫度或功耗。舉例而言,若LWB 135(或圖1的SSD 125)的溫度變得過高(亦即,超出某一臨限值),則LWB 135可節制頻寬以降低溫度。隨後,在溫度已充分下降(其可意謂降至低於原始臨限值或降至低於可低於原始臨限值的另一臨限值)後,LWB 135可停止節制頻寬。除了LWB 135(或圖1的SSD 125)的功耗可觸發頻寬節制,其中減小的功耗臨限值釋放頻寬節制之外,功耗可以與溫度相同的方式觸發頻寬節制。這些臨限值可儲存在LWB 135內某處。為何頻寬可經節制的又一原因可歸因於針對由圖4A至圖4C的端點405暴露的PF確立的優先級:當不同PF在使用中時,具有較低優先級的PF上的頻寬可經節制以有利於具有較高優先級的PF的頻寬。
節制頻寬的另一原因可為管理QoS或SLA。舉例而言,圖1的主機105可僅向比LWB 135能夠提供的更低等級的頻寬付費。因此,即使圖1的主機105及LWB 135有可能使用較高總頻寬通信,但LWB 135可對圖1的主機105限制頻寬,使得提供的服務不超過已對圖1的主機105確保的服務。換言之,LWB 135可基於SLA或定價計劃而限制或覆蓋對PF的最大儲存頻寬。
應注意,雖然圖12A至圖12B特定地論述頻寬,但可類似地監測及節制用於與圖1的主機105或圖1的SSD 125通信的其他資源。舉例而言,時延可在一定程度上加以控制,從而與具有較高目標時延的PF相比有助於具有較低目標時延的PF。
LWB 135可量測及監測分別由圖4A至圖4C的端點405暴露的每一PF所消耗的頻寬(或其他資源)。頻寬可在兩個方向上經量測及監測:即,主機至裝置(主機寫入操作)及裝置至主機(主機讀取操作)。頻寬節制亦可在任一方向上獨立經執行。頻寬(或其他資源)節制可作為經量測頻寬及QoS策略設置兩者的結果而經執行。
圖13展示圖1的LWB 135將信用發出至圖1的SSD 125。信用為一種其中LWB 135可管理SSD 125使用多少頻寬的方式。鑒於特定請求,LWB 135可發出某一數目的信用1305,其中每一信用1305表示SSD 125可傳送的特定量的資料。因此,LWB 135發出的信用1305的數目可控制SSD 125的頻寬:LWB 135可發出恰好足夠(或幾乎恰好足夠,或任何其他所要數目)的信用1305以覆蓋資料傳送。當SSD 125傳送資料時,資料傳送使用信用1305:若SSD 125不具有任何可用信用,則SSD 125可不傳送任何資料直至新的信用經發出為止。
信用1305可以任何所要方式發出。在本發明概念的一些實施例中,LWB 135可經由訊息將信用1305發送至SSD 125,所述訊息可為例如專屬訊息。在本發明概念的其他實施例中,LWB 135可將信用1305寫入至SSD 125上的特定位址中:例如,NVMe位址空間中的保留位址。在本發明概念的又其他實施例中,LWB 135可將信用1305寫入至LWB 135內的位址(同樣,有可能保留位址)中:SSD 125可隨後讀取彼位址以查看哪些信用1305可用。信用1305的使用為一種用以節制SSD 125的頻寬的方式。藉由限制發佈至SSD 125的信用1305的數目,SSD 125可防止在給定時間單元內下載特定交易所需要的所有資料。藉由減小SSD 125上的頻寬,SSD 125可經歷減少功耗及/或較低溫度。最終,若功耗及/或溫度下降至可接受的水準(其可不同於在其處頻寬節制可開始的水準,如上文參考圖12A至圖12B所論述),則LWB 135可停止節制SSD 125的頻寬。
在另一實施例中,LWB 135可在資料傳送封包之間插入空閒時段以實現頻寬節制。藉由調整資料封包的封包間間隙,基於經量測頻寬(或其他資源)及QoS策略設置,LWB 135可實現對個別PF或共同地所有PF的所要頻寬限制。
圖14A至圖14B展示根據本發明概念的實施例的用以識別由圖1的SSD 125暴露的PF/VF、暴露來自LWB 135的PF且產生由圖1的LWB 135暴露的PF與由圖1的SSD 125暴露的PF/VF之間的映射615的用於圖1的LWB 135的實例程序的流程圖。在圖14A中,在區塊1405處,圖1的LWB 135可枚舉由圖1的SSD 125暴露的PF及VF。在區塊1410處,圖1的LWB 135可產生待由圖1的LWB 135暴露的PF(更具體而言,待由圖4A至圖4C的端點405暴露的PF)。應注意,由圖1的LWB 135產生的PF的數目可能未必等於由圖1的SSD 125暴露的PF及VF的數目:由圖1的SSD 125暴露的某些功能可不得到由圖1的LWB 135暴露的對應PF,且由圖1的LWB 135暴露的單個PF可映射至圖1的SSD 125的多個PF/VF。在區塊1415處,圖1的LWB 135可檢查以查看是否存在進行枚舉的任何其他連接的裝置(諸如圖4C的SSD 125-2)。若存在,則處理可返回至區塊1405以枚舉下一裝置的PF及VF。
假定所有連接的裝置已枚舉,則在區塊1420(圖14B)處,圖1的LWB 135可將由圖4A至圖4C的端點405暴露的PF映射至由圖1的SSD 125(及其他連接的裝置)暴露的PF及VF。在區塊1425處,圖1的LWB 135可判定圖1的SSD 125及任何其他連接的裝置的其他資源,諸如頻寬(此判定亦可構成圖14A的區塊1405的部分),且在區塊1430處,圖1的LWB 135可聚集所有連接的裝置的資源。以此方式,圖1的LWB 135可看起來提供比個別裝置中的任一者更高的總資源。
在區塊1435處,圖1的LWB 135可自圖1的主機105接收枚舉請求。在區塊1440處,圖1的LWB 135可藉由暴露圖4A至圖4C的端點405的PF來對圖1的主機105的枚舉請求作出回應。
圖15A至圖15B展示用以接收且處理來自圖1的主機105的請求的用於圖1的LWB 135的實例程序的流程圖。在圖15A中,在區塊1505處,圖1的LWB 135可在由圖4A至圖4C的端點405暴露的一些PF處自圖1的主機135接收請求:所述請求經導向至哪一PF及彼PF表示哪一功能與分析不相關。在區塊1510處,圖1的LWB 135可將請求經導向至的PF映射至圖1的SSD 125的PF或VF(所述映射可使用例如圖4A至圖4C的組態表435來執行)。在區塊1515處,LWB 135可選擇圖1的SSD 125作為包含由圖4A至圖4C的端點405暴露的PF映射至的PF或VF的裝置。應注意,區塊1515可僅在圖1的LWB 135連接至多個裝置的情況下才起作用,如圖4C中所展示:若可存在多個裝置,則圖4C的多個APP-EP 410-1及APP-EP 410-2可接收請求。在本發明概念的實施例中,其中僅一個裝置可連接至圖1的LWB 135(因為LWB 135僅包含圖4A至圖4B的一個APP-EP 410,或因為圖1的僅一個SSD 125連接至圖1的LWB 135),區塊1515可省略,如由虛線1520所展示。
在已識別適當裝置及適當目的地PF/VF後,隨後在區塊1525處,圖1的LWB 135可將請求轉換為用於經識別PF/VF的請求。此可涉及例如如上文參考圖9所描述(及下文參考圖16所描述)的位址轉換。在區塊1530(圖15B)處,圖1的LWB 135可將經轉換請求發送至經識別裝置上的經識別PF/VF。
在區塊1535處,圖1的LWB 135可自經識別裝置的經識別PF/VF接收回應。在區塊1540處,圖1的LWB 135可將經識別裝置的PF/VF映射至由圖4A至圖4C的端點405暴露的PF(所述映射可使用例如圖4A至圖4C的組態表435來執行)。在區塊1545處,圖1的LWB 135可將回應轉換為用於圖1的主機135的回應。最後,在區塊1550處,圖1的LWB 135可如同來自圖4A至圖4C的端點405的經暴露PF而將回應發送回至主機。
圖16展示用以在圖1的主機105與圖1的SSD 125之間轉換位址的用於圖4A至圖4C的APP-EP及APP-RP的實例程序的流程圖。在圖16中,在區塊1605處,圖4A至圖4C的APP-EP 410可自來自圖1的主機105的請求中包含的位址減去主機BAR,且在區塊1610處,圖4A至圖4C的APP-RP 415可將裝置BAR添加至在區塊1605中判定的位址。
應注意,相反位址轉換(自圖1的SSD 125至圖1的主機105)可經省略。圖1的SSD 125(如任何此類裝置)可接收圖1的主機105所使用的完整位址。因此,由圖1的SSD 125提供的位址可用於存取圖1的主機105內的特定位址而無需轉換。但若圖1的SSD 125並不具有圖1的主機105的完整位址,則位址轉換可相反地執行,其中圖4A至圖4C的APP-RP 415自來自圖1的SSD 125的請求中包含的位址減去裝置BAR且圖4A至圖4C的APP-EP 410將主機BAR添加至位址。
圖17展示用以將圖13的信用1305發出至圖1的SSD 125的用於圖1的LWB 135的實例程序的流程圖。在圖17中,在區塊1705處,圖1的LWB 135可量測或監測由個別PF消耗的頻寬,所述個別PF由圖4A至圖4C的端點405暴露。在區塊1710處,圖1的LWB 135可判定發出至圖1的SSD 125的圖13的信用1305。這些信用可基於由圖4A至圖4C的端點405暴露的PF所消耗的頻寬及圖1的SSD 125可需要傳送的資料量而判定。圖1的SSD 125可使用這些信用來將資料傳送至圖1的SSD 125或自圖1的SSD 125傳送資料。此時,存在用於將圖13的信用1305遞送至圖1的SSD 125的多個選項。在區塊1715處,圖1的LWB 135可將圖13的信用1305寫入至圖1的SSD 125中的位址。替代地,在區塊1720處,LWB 135可將圖13的信用1305寫入至圖1的LWB 135中的位址,且圖1的SSD 125可自圖1的LWB 135中的彼位址讀取圖13的信用1305。替代地,在區塊1725處,圖1的LWB 135可將訊息發送至圖1的SSD 125,所述訊息可包含圖13的信用1305。
圖18展示用以處理圖7的組態寫入請求705的用於圖1的LWB 135的實例程序的流程圖。在圖18中,在區塊1805處,圖1的LWB 135可接收圖7的組態寫入請求705:圖7的組態寫入請求705可自圖1的主機105或圖1的SSD 125接收到。在區塊1810處,圖1的LWB 135(更具體而言,圖4A至圖4C的組態模組440)可如由圖7的組態寫入請求705所指明組態由圖4A至圖4C的端點405暴露的PF。在區塊1815處,圖1的LWB 135可使用圖5的狀態機510及圖5的SR-IOV序列505來執行此組態。最後,在區塊1820處,圖1的LWB 135可確保由圖1的SSD 125暴露的PF/VF的組態鏡射由圖4A至圖4C的端點405暴露的PF的組態:此可涉及將圖7的組態寫入請求705發送至圖1的SSD 125,如由虛線箭頭710及虛線箭頭715所展示。由於圖7的組態寫入請求705可不需要發送至圖1的SSD 125,區塊1820為視情況選用的,如由虛線1825所展示。
圖19展示用以處理圖8的組態讀取請求805的用於圖1的LWB 135的實例程序的流程圖。
圖19展示用以處理圖8的組態讀取請求805的用於圖1的LWB 135的實例程序的流程圖。在圖19中,在區塊1905處,圖1的LWB 135可接收圖8的組態讀取請求805:圖8的組態讀取請求805可自圖1的主機105或圖1的SSD 125接收到(但通常圖8的組態讀取請求805可自圖1的主機105接收到)。此時,存在一些替代方案。在區塊1910處,圖1的LWB 135(更具體而言,圖4A至圖4C的組態模組440)可判定由圖4A至圖4C的端點405暴露的PF的組態。在本發明概念的實施例中,其中使用區塊1910,可不需要向圖1的SSD 125查詢其暴露PF/VF的組態,此是由於由圖1的SSD 125暴露的PF的組態應鏡射由圖4A至4C的端點405暴露的PF的組態(但亦可向圖1的SSD 125查詢其暴露PF/VF的組態)。替代地,在區塊1915處,圖1的LWB 135可將圖8的組態讀取請求805遞送至圖1的SSD 125,如由圖8的虛線箭頭815及虛線箭頭820所展示,且可接收返回的圖8的組態資訊810(展示為圖8的虛線箭頭825及虛線箭頭830)。任一方式,在區塊1920處,圖1的LWB 135可將圖8的組態資訊810返回至請求者。
圖20展示用以使圖11的QoS策略1105與由圖1的LWB 135暴露的PF相關聯的用於圖1的LWB 135的實例程序的流程圖。在圖20中,在區塊2005處,圖1的LWB 135可自一來源接收圖11的QoS策略1105,所述來源可為圖1的主機105或圖1的SSD 125。隨後,在區塊2010處,圖1的LWB 135可使策略與由圖4A至圖4C的端點405暴露的經識別PF相關聯且視需要實施所述策略。
圖21展示用以動態地改變由圖1的LWB 135暴露的PF至由圖1的SSD 125暴露的PF/VF的映射的用於圖1的LWB 135的實例程序的流程圖。在圖21中,在區塊2105處,圖1的LWB 135可識別已改變的圖10的儲存器參數1005、圖10的日1010、圖10的日時間1015、圖10的頻寬利用率1020或圖10的QoS策略改變1025。在區塊2110處,圖1的LWB 135可回應於偵測到的改變而動態地改變圖6的PF 605與圖6的PF/VF 610之間的圖6的映射615。
圖22A至圖22B展示用以執行頻寬節制的用於圖1的LWB 135的實例程序的流程圖。在圖22A中,在區塊2205處,圖1的LWB 135可判定圖11的QoS策略1105,或圖1的LWB 135或圖1的SSD 125的溫度或功耗。在區塊2210處,圖1的LWB 135可判定頻寬節制是否適用:例如,藉由比較圖1的LWB 135或圖1的SSD 125的溫度或功耗與圖1的LWB 135中儲存的臨限值。
若頻寬節制適用,則在區塊2215處,圖1的LWB 135可節制圖1的SSD 125的頻寬。此節制可藉由限制發出至圖1的SSD 125的圖13的信用1305的數目來實現。隨後,在區塊2220(圖22B)處,圖1的LWB 135可判定圖11的QoS策略1105(其可為與圖22A的區塊2210中的經觸發頻寬節制相同的圖11的QoS策略1105或不同QoS策略)或圖1的LWB 135或圖1的SSD 125的溫度或功耗。在區塊2225處,圖1的LWB 135可判定圖11的QoS策略1105或圖1的LWB 135或圖1的SSD 125的新溫度或功耗是否已達到在其處不再需要頻寬節制的程度。若頻寬節制仍適用,則控制可返回至區塊2220以再次檢查可結束頻寬節制的改變是否已發生。否則,在區塊2230處,圖1的LWB 135可停止頻寬節制。
在圖14A至圖22B中,展示本發明的一些實施例。但本領域的技術人員將認識到,藉由改變區塊的次序,藉由省略區塊,或藉由在圖式中包含未展示的鏈接,本發明的其他實施例亦為可能的。流程圖的所有這些變化認為是本發明的實施例,無論是否明確地描述。
本發明概念的實施例包含優於習知實施方案的技術優點。輕量橋接器(LWB)可將實體功能(PF)暴露至主機,此消除對用以執行單根輸入/輸出虛擬化(SR-IOV)軟體以存取諸如固態驅動器(SSD)的裝置的虛擬功能(VF)的主機的需求。裝置亦並不必需要求任何硬體修改,此是由於LWB可為單獨裝置且裝置並不要求用以支援多個PF的特定硬體。實際上,即使單個外殼容納LWB及裝置兩者,且即使LWB及裝置經實施於共用印刷電路板上,但LWB的包含可並不要求任何對裝置的硬體改變,由此允許現有SSD(及其他裝置)與LWB一起使用且允許未來SSD(及其他裝置)持續提供VF而非包含用以支援多個PF的硬體。(裝置可要求一些韌體更新,例如,以支援用以管理資料傳送的信用的使用,但甚至在現有裝置的領域中,此類更新可易於執行。)另外,因為LWB可聚集多個裝置的資源,故LWB可提供比任何個別裝置可提供的更佳的總效能。
以下論述意欲提供其中可實施本發明的某些態樣的一或多個合適機器的簡潔的一般描述。可至少部分地藉由來自習知輸入裝置(諸如,鍵盤、滑鼠等)的輸入以及藉由自另一機器接收到的指引來控制一或多個機器與虛擬實境(virtual reality;VR)環境、生物統計反饋或其他輸入信號的交互。如本文中所使用,術語「機器」意欲廣泛地涵蓋單個機器、虛擬機器,或通信耦接機器、虛擬機器或共同操作裝置的系統。例示性機器包含計算裝置,諸如個人電腦、工作站、伺服器、攜帶型電腦、手持型裝置、電話、平板電腦等;以及運輸裝置,諸如私用或公共交通,例如汽車、火車、出租車等。
一或多個機器可包含嵌入型控制器,諸如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(ASIC)、嵌入型電腦、智慧卡以及類似者。一或多個機器可利用與一或多個遠端機器的一或多個連接,諸如經由網路介面、調制解調器或其他通信耦接。可藉助於實體及/或邏輯網路,諸如企業內部網路、網際網路、局域網路、廣域網路等來互連機器。本領域的技術人員將瞭解,網路通信可利用各種有線及/或無線的短程或長程載體及協定,包含射頻(radio frequency;RF)、衛星、微波、電機電子工程師學會(Institute of Electrical and Electronics Engineers;IEEE)802.11、Bluetooth®、光學、紅外線、纜線、雷射等。
可藉由參考或結合相關聯的資料來描述本發明的實施例,所述資料包含功能、程序、資料結構、應用程式等,當所述資料由機器存取時使得機器執行任務或定義抽象的資料類型或低級硬體上下文。舉例而言,相關聯的資料可儲存於揮發性及/或非揮發性記憶體中,例如RAM、ROM等;或儲存於其他儲存裝置及其相關聯的儲存媒體中,包含硬碟機、軟磁碟、光學儲存器、磁帶、快閃記憶體、記憶體棒、數位視訊磁碟、生物儲存器等。相關聯的資料可以封包、串列資料、並列資料、經傳播信號等的形式經由傳輸環境(包含實體及/或邏輯網路)遞送,且可以壓縮或加密的格式使用。相關聯的資料可用於分散式環境中,且儲存在本端及/或遠端以用於機器存取。
本發明的實施例可包含包括可由一或多個處理器執行的指令的有形的非暫時性機器可讀媒體,所述指令包括執行如本文中所描述的本發明的要素的指令。
已參看所說明的實施例來描述及說明本發明的原理,將認識到,所說明的實施例可在不脫離此類原理的情況下修改配置及細節,且可以任何所要方式組合。且儘管前述論述集中於特定實施例,但涵蓋其他組態。特定而言,儘管本文中使用諸如「根據本發明的實施例」或類似者的表達,但這些片語通常意欲大體上參考實施例可能性,且並不意欲將本發明限制於特定實施例組態。如本文中所使用,這些術語可參考可組合至其他實施例中的相同或不同實施例。
前述說明性實施例並不應解釋為限制其本發明。儘管已描述了幾個實施例,但本領域的技術人員將易於瞭解,在不實質上脫離本發明的新穎教示及優點的情況下,對那些實施例的許多修改是可能的。因此,所有此類修改意欲包含於如申請專利範圍中所定義的本發明的範疇內。
本發明的實施例可延伸至但不限於以下陳述:
陳述1. 本發明概念的實施例包含一種輕量橋接器(LWB)電路,包括:
端點,用以連接至主機,端點暴露多個實體功能(PF),
根埠,用以連接至裝置,裝置將至少一個PF及至少一個虛擬功能(VF)暴露於根埠;以及
應用層端點(APP-EP)及應用層根埠(APP-RP),用以在暴露於主機的多個PF與由裝置暴露的至少一個PF及至少一個VF之間進行轉換,
其中APP-EP及APP-RP實施由端點暴露的多個PF與由裝置暴露的至少一個PF及至少一個VF之間的映射。
陳述2. 本發明概念的實施例包含如陳述1之LWB電路,其中裝置包含固態驅動器(SSD)。
陳述3. 本發明概念的實施例包含如陳述1之LWB電路,其中裝置包含LWB電路。
陳述4. 本發明概念的實施例包含如陳述1之LWB電路,其中LWB電路連接至裝置。
陳述5. 本發明概念的實施例包含如陳述1之LWB電路,其中APP-EP及APP-RP可經實施為單個組件。
陳述6. 本發明概念的實施例包含如陳述1之LWB電路,其中LWB電路包含場可程式化閘陣列(FPGA)、特殊應用積體電路(ASIC)、通用處理器、圖形處理單元(GPU)以及通用GPU(GPGPU)中的至少一者。
陳述7. 本發明概念的實施例包含如陳述1之LWB電路,其中:
多個PF包含多個外圍組件互連高速(PCIe)PF;
至少一個PF包含至少一個PCIe PF;且
至少一個虛擬功能(VF)包含至少一個PCIe VF。
陳述8. 本發明概念的實施例包含如陳述7之LWB電路,其中:
APP-EP包含PCIe APP-EP(PAPP-EP);且
APP-RP包含PCIe APP-RP(PAPP-RP)。
陳述9. 本發明概念的實施例包含如陳述1之LWB電路,更包括用以組態APP-EP及APP-RP的組態管理器。
陳述10. 本發明概念的實施例包含如陳述9之LWB電路,其中APP-RP可包含儲存器,儲存器用於組態表以儲存由端點暴露的多個PF與由裝置暴露的至少一個PF及至少一個VF之間的映射。
陳述11. 本發明概念的實施例包含如陳述9之LWB電路,其中組態管理器可枚舉由裝置暴露的至少一個PF及至少一個VF,且至少部分地基於由裝置暴露的至少一個PF及至少一個VF來產生由端點暴露的多個PF。
陳述12. 本發明概念的實施例包含如陳述9之LWB電路,其中組態管理器可組態裝置。
陳述13. 本發明概念的實施例包含如陳述12之LWB電路,其中組態管理器可至少部分地基於可在端點處自主機接收到的組態寫入請求來組態裝置。
陳述14. 本發明概念的實施例包含如陳述9之LWB電路,其中APP-EP可自主機攔截組態讀取請求且將組態資訊返回至主機。
陳述15. 本發明概念的實施例包含如陳述9之LWB電路,其中組態管理器可確保裝置的第一組態鏡射端點的第二組態。
陳述16. 本發明概念的實施例包含如陳述9之LWB電路,其中組態管理器包含唯讀記憶體(ROM)及用以實施單根輸入/輸出虛擬化(SR-IOV)序列的狀態機。
陳述17. 本發明概念的實施例包含如陳述1之LWB電路,其中:
APP-EP可自來自主機的請求中接收到的位址減去由端點暴露的PF的基礎位址寄存器(BAR);且
APP-RP可將由裝置暴露的VF的BAR添加至自APP-EP接收到的位址。
陳述18. 本發明概念的實施例包含如陳述1之LWB電路,更包括:
第二APP-EP及第二APP-RP;
第二裝置,暴露至少一個第二PF及至少一個第二VF;以及
多工器/解多工器,經配置以連接至端點且連接至APP-EP及第二APP-EP中的每一者,
其中第二APP-EP及第二APP-RP實施由端點暴露的多個PF與由第二裝置暴露的至少一個第二PF及至少一個第二VF之間的第二映射。
陳述19. 本發明概念的實施例包含如陳述18之LWB電路,其中LWB電路可提供裝置及第二裝置的聚集資源。
陳述20. 本發明概念的實施例包含如陳述1之LWB電路,其中由端點暴露的多個PF與由裝置暴露的至少一個PF及至少一個VF之間的映射可動態地改變。
陳述21. 本發明概念的實施例包含如陳述20之LWB電路,其中由端點暴露的多個PF與由裝置暴露的至少一個PF及至少一個VF之間的映射可至少部分地基於儲存器參數、日、日時間、頻寬利用率或用於由端點暴露的多個PF中的至少一者的服務品質(QoS)策略的改變而改變。
陳述22. 本發明概念的實施例包含如陳述1之LWB電路,其中LWB電路可實施頻寬節制。
陳述23. 本發明概念的實施例包含如陳述22之LWB電路,其中LWB電路可量測由端點暴露的多個PF中的至少一者所使用的頻寬。
陳述24. 本發明概念的實施例包含如陳述22之LWB電路,其中LWB電路可至少部分地基於由主機設置的策略、由裝置設置的策略、LWB電路的溫度、LWB電路的功耗、SSD的溫度或SSD的功耗來實施頻寬節制。
陳述25. 本發明概念的實施例包含如陳述24之LWB電路,其中LWB電路更包括用以觸發頻寬節制的用於臨限值的儲存器。
陳述26. 本發明概念的實施例包含如陳述25之LWB電路,其中LWB電路更包括用以觸發結束頻寬節制的用於第二臨限值的儲存器。
陳述27. 本發明概念的實施例包含如陳述22之LWB電路,其中LWB電路可將信用發出至裝置以用於資料傳送。
陳述28. 本發明概念的實施例包含如陳述27之LWB電路,其中LWB電路可將信用寫入至裝置中的位址。
陳述29. 本發明概念的實施例包含如陳述27之LWB電路,其中裝置可在LWB電路中自位址讀取信用。
陳述30. 本發明概念的實施例包含如陳述27之LWB電路,其中LWB電路可以訊息形式將信用發送至裝置。
陳述31. 本發明概念的實施例包含如陳述22之LWB電路,其中LWB電路可藉由在第一資料封包與第二資料封包之間引入封包間間隙來實施頻寬節制。
陳述32. 本發明概念的實施例包含如陳述1之LWB電路,其中LWB電路可在由裝置暴露的多個PF中的一PF上實施QoS策略。
陳述33. 本發明概念的實施例包含如陳述32之LWB電路,其中策略可由主機、BMC或裝置中的一者設置。
陳述34. 本發明概念的實施例包含如陳述1之LWB電路,其中LWB電路可至少部分地基於自裝置接收到的組態寫入請求來組態由端點暴露的多個PF中的至少一者的能力。
陳述35. 本發明概念的實施例包含一種方法,包括:
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF);
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF);
在LWB的端點處產生多個PF以暴露於主機;以及
使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)將LWB的端點處的多個PF映射至由裝置暴露的至少一個PF及至少一個VF。
陳述36. 本發明概念的實施例包含如陳述35之方法,其中:
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF)包含在LWB啟動時使用LWB的根埠來枚舉由裝置暴露的至少一個PF;且
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF)包含在LWB啟動時使用LWB的根埠來枚舉由裝置暴露的至少一個VF。
陳述37. 本發明概念的實施例包含如陳述35之方法,其中:
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF)包含在裝置連接至LWB時使用LWB的根埠來枚舉由裝置暴露的至少一個PF;且
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF)包含在裝置連接至LWB時使用LWB的根埠來枚舉由裝置暴露的至少一個VF。
陳述38. 本發明概念的實施例包含如陳述35之方法,其中裝置包含固態驅動器(SSD)。
陳述39. 本發明概念的實施例包含如陳述35之方法,其中:
多個PF包含多個外圍組件互連高速(PCIe)PF;
至少一個實體功能(PF)包含至少一個PCIe PF;且
至少一個虛擬功能(VF)包含至少一個PCIe VF。
陳述40. 本發明概念的實施例包含如陳述39之方法,其中:
APP-EP包含PCIe APP-EP(PAPP-EP);且
APP-RP包含PCIe APP-RP(PAPP-RP)。
陳述41. 本發明概念的實施例包含如陳述35之方法,更包括:
自主機接收枚舉;以及
將LWB的端點處的多個PF暴露於主機。
陳述42. 本發明概念的實施例包含如陳述35之方法,其中
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF)包含使用LWB的第二根埠來枚舉由第二裝置暴露的至少一個第二PF;
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF)包含使用LWB的第二根埠來枚舉由第二裝置暴露的至少一個第二VF;且
將多個PF映射至至少一個PF及至少一個VF包含將多個PF映射至至少一個PF、至少一個VF、至少一個第二PF以及至少一個第二VF。
陳述43. 本發明概念的實施例包含如陳述42之方法,更包括:
判定裝置及第二裝置的資源;以及
聚集裝置及第二裝置的資源。
陳述44. 本發明概念的實施例包含如陳述35之方法,更包括:
在由端點暴露的多個PF中的一PF處接收來自主機的請求;
將由LWB的端點暴露的多個PF中的所述PF映射至由裝置暴露的至少一個VF中的一VF;
將請求自由端點暴露的多個PF中的所述PF轉換至由裝置暴露的至少一個VF中的所述VF;以及
將請求發送至由裝置暴露的至少一個VF中的所述VF。
陳述45. 本發明概念的實施例包含如陳述44之方法,更包括:
自由裝置暴露的至少一個VF中的所述VF接收對請求的回應;
將由裝置暴露的至少一個VF中的所述VF映射至由LWB的端點暴露的多個PF中的所述PF;
將回應自由裝置暴露的至少一個VF中的所述VF轉換至由端點暴露的多個PF中的所述PF;以及
經由由LWB的端點暴露的多個PF中的所述PF將回應發送至主機。
陳述46. 本發明概念的實施例包含如陳述45之方法,其中將回應自由裝置暴露的至少一個VF中的所述VF轉換至由端點暴露的多個PF中的所述PF包含基於由端點暴露的多個PF中的所述PF的第一基礎位址寄存器(BAR)及由裝置暴露的至少一個VF中的所述VF的第二BAR來修改回應中的位址。
陳述47. 本發明概念的實施例包含如陳述45之方法,其中將由裝置暴露的至少一個VF中的所述VF映射至由LWB的端點暴露的多個PF中的所述PF包含使用LWB的APP-RP中的組態表來將由裝置暴露的至少一個VF中的所述VF映射至由LWB的端點暴露的多個PF中的所述PF。
陳述48. 本發明概念的實施例包含如陳述44之方法,其中將請求自由端點暴露的多個PF中的所述PF轉換至由裝置暴露的至少一個VF中的所述VF包含基於由端點暴露的多個PF中的所述PF的第一基礎位址寄存器(BAR)及由裝置暴露的至少一個VF中的所述VF的第二BAR來修改請求中的位址。
陳述49. 本發明概念的實施例包含如陳述44之方法,其中將由LWB的端點暴露的多個PF中的所述PF映射至由裝置暴露的至少一個VF中的所述VF包含使用LWB的APP-RP中的組態表來將由LWB的端點暴露的多個PF中的所述PF映射至由裝置暴露的至少一個VF中的所述VF。
陳述50. 本發明概念的實施例包含如陳述44之方法,其中將請求發送至由裝置暴露的至少一個VF中的所述VF包含:
至少部分地基於由LWB的端點暴露的多個PF中的所述PF至由裝置暴露的至少一個VF中的一VF的映射來在裝置及第二裝置當中選擇第二裝置,所述第二裝置暴露至少一個第二PF及至少一個第二VF;以及
將請求發送至與裝置相關聯的APP-EP。
陳述51. 本發明概念的實施例包含如陳述44之方法,更包括:
判定用於涉及裝置的資料傳送的信用;以及
將信用發出至裝置。
陳述52. 本發明概念的實施例包含如陳述51之方法,其中將信用發出至裝置包含將信用寫入至裝置中的位址。
陳述53. 本發明概念的實施例包含如陳述51之方法,其中將信用發出至裝置包含裝置自LWB中的位址讀取信用。
陳述54. 本發明概念的實施例包含如陳述51之方法,其中將信用發出至裝置包含將訊息自LWB發送至裝置,訊息包含信用。
陳述55. 本發明概念的實施例包含如陳述35之方法,更包括:
接收組態寫入請求;以及
至少部分地基於組態寫入請求來組態由LWB的端點暴露的多個PF。
陳述56. 本發明概念的實施例包含如陳述55之方法,更包括至少部分地基於組態寫入請求來組態由裝置暴露的至少一個PF及至少一個VF以鏡射由LWB的端點暴露的多個PF的組態。
陳述57. 本發明概念的實施例包含如陳述55之方法,其中接收組態寫入請求包含自主機接收組態寫入請求。
陳述58. 本發明概念的實施例包含如陳述55之方法,其中接收組態寫入請求包含自裝置接收組態寫入請求。
陳述59. 本發明概念的實施例包含如陳述58之方法,其中至少部分地基於組態寫入請求來組態由LWB的端點暴露的多個PF包含至少部分地基於自裝置接收到的組態寫入請求來組態由端點暴露的多個PF中的至少一者的能力。
陳述60. 本發明概念的實施例包含如陳述55之方法,其中至少部分地基於組態配置寫入請求來組態由LWB的端點暴露的多個PF包含使用狀態機來執行單根輸入/輸出虛擬化(SR-IOV)序列。
陳述61. 本發明概念的實施例包含如陳述35之方法,更包括:
接收組態讀取請求;
判定裝置的至少一個PF及至少一個VF的組態;以及
利用裝置的至少一個PF及至少一個VF的組態來對組態讀取請求作出回應。
陳述62. 本發明概念的實施例包含如陳述61之方法,其中判定裝置的至少一個PF及至少一個VF的組態包含判定由裝置的端點暴露的多個PF的組態。
陳述63. 本發明概念的實施例包含如陳述61之方法,其中判定裝置的至少一個PF及至少一個VF的組態包含向裝置查詢裝置的至少一個PF及至少一個VF的組態。
陳述64. 本發明概念的實施例包含如陳述61之方法,其中判定裝置的至少一個PF及至少一個VF的組態包含不將組態讀取請求遞送至裝置。
陳述65. 本發明概念的實施例包含如陳述35之方法,更包括使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)來動態地改變LWB的端點處的多個PF至由裝置暴露的至少一個PF及至少一個VF的映射。
陳述66. 本發明概念的實施例包含如陳述65之方法,其中使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)來動態地改變LWB的端點處的多個PF至由裝置暴露的至少一個PF及至少一個VF的映射包含至少部分地基於儲存器參數、日、日時間、頻寬利用率或用於由LWB的端點暴露的多個PF中的至少一者的服務品質(QoS)策略的改變而使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)來動態地改變LWB的端點處的多個PF至由裝置暴露的至少一個PF及至少一個VF的映射。
陳述67. 本發明概念的實施例包含如陳述35之方法,更包括節制用於裝置的頻寬。
陳述68. 本發明概念的實施例包含如陳述67之方法,更包括量測由端點暴露的多個PF中的至少一者所使用的頻寬。
陳述69. 本發明概念的實施例包含如陳述67之方法,其中節制用於裝置的頻寬包含在第一資料封包與第二資料封包之間引入封包間間隙。
陳述70. 本發明概念的實施例包含如陳述67之方法,其中節制用於裝置的頻寬包含至少部分地基於由主機設置的QoS策略、由裝置設置的QoS策略、LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來節制用於裝置的頻寬。
陳述71. 本發明概念的實施例包含如陳述70之方法,其中至少部分地基於由主機設置的QoS策略、由裝置設置的QoS策略、LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來節制用於裝置的頻寬包含至少部分地基於超出臨限值的LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來節制用於裝置的頻寬。
陳述72. 本發明概念的實施例包含如陳述71之方法,更包括至少部分地基於降至低於第二臨限值的LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來結束節制用於裝置的頻寬。
陳述73. 本發明概念的實施例包含如陳述35之方法,更包括:
接收用於由LWB的端點暴露的多個PF中的一PF的QoS策略;以及
實施用於由LWB的端點暴露的多個PF中的所述PF的QoS策略。
陳述74. 本發明概念的實施例包含如陳述73之方法,其中接收用於由LWB的端點暴露的多個PF中的一PF的QoS策略包含自主機或裝置中的一者接收用於由LWB的端點暴露的多個PF中的所述PF的QoS策略。
陳述75. 本發明概念的實施例包含一種物品,包括非暫時性儲存媒體,所述非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的指令:
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF);
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF);
在LWB的端點處產生多個PF以暴露於主機;以及
使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)將LWB的端點處的多個PF映射至由裝置暴露的至少一個PF及至少一個VF。
陳述76. 本發明概念的實施例包含如陳述75之物品,其中:
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF)包含在LWB啟動時使用LWB的根埠來枚舉由裝置暴露的至少一個PF;且
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF)包含在LWB啟動時使用LWB的根埠來枚舉由裝置暴露的至少一個VF。
陳述77. 本發明概念的實施例包含如陳述75之物品,其中:
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF)包含在裝置連接至LWB時使用LWB的根埠來枚舉由裝置暴露的至少一個PF;且
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF)包含在裝置連接至LWB時使用LWB的根埠來枚舉由裝置暴露的至少一個VF。
陳述78. 本發明概念的實施例包含如陳述75之物品,其中裝置包含固態驅動器(SSD)。
陳述79. 本發明概念的實施例包含如陳述75之物品,其中:
多個PF包含多個外圍組件互連高速(PCIe)PF;
至少一個實體功能(PF)包含至少一個PCIe PF;且
至少一個虛擬功能(VF)包含至少一個PCIe VF。
陳述80. 本發明概念的實施例包含如陳述79之物品,其中:
APP-EP包含PCIe APP-EP(PAPP-EP);且
APP-RP包含PCIe APP-RP(PAPP-RP)。
陳述81. 本發明概念的實施例包含如陳述75之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
自主機接收枚舉;以及
將LWB的端點處的多個PF暴露於主機。
陳述82. 本發明概念的實施例包含如陳述75之物品,其中
使用輕量橋接器(LWB)的根埠來枚舉由裝置暴露的至少一個實體功能(PF)包含使用LWB的第二根埠來枚舉由第二裝置暴露的至少一個第二PF;
使用LWB的根埠來枚舉由裝置暴露的至少一個虛擬功能(VF)包含使用LWB的第二根埠來枚舉由第二裝置暴露的至少一個第二VF;且
將多個PF映射至至少一個PF及至少一個VF包含將多個PF映射至至少一個PF、至少一個VF、至少一個第二PF以及至少一個第二VF。
陳述83. 本發明概念的實施例包含如陳述82之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
判定裝置及第二裝置的資源;以及
聚集裝置及第二裝置的資源。
陳述84. 本發明概念的實施例包含如陳述75之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
在由端點暴露的多個PF中的一PF處接收來自主機的請求;
將由LWB的端點暴露的多個PF中的所述PF映射至由裝置暴露的至少一個VF中的一VF;
將請求自由端點暴露的多個PF中的所述PF轉換至由裝置暴露的至少一個VF中的所述VF;以及
將請求發送至由裝置暴露的至少一個VF中的所述VF。
陳述85. 本發明概念的實施例包含如陳述84之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
自由裝置暴露的至少一個VF中的所述VF接收對請求的回應;
將由裝置暴露的至少一個VF中的所述VF映射至由LWB的端點暴露的多個PF中的所述PF;
將回應自由裝置暴露的至少一個VF中的所述VF轉換至由端點暴露的多個PF中的所述PF;以及
經由由LWB的端點暴露的多個PF中的所述PF將回應發送至主機。
陳述86. 本發明概念的實施例包含如陳述85之物品,其中將回應自由裝置暴露的至少一個VF中的所述VF轉換至由端點暴露的多個PF中的所述PF包含基於由端點暴露的多個PF中的所述PF的第一基礎位址寄存器(BAR)及由裝置暴露的至少一個VF中的所述VF的第二BAR來修改回應中的位址。
陳述87. 本發明概念的實施例包含如陳述85之物品,其中將由裝置暴露的至少一個VF中的所述VF映射至由LWB的端點暴露的多個PF中的所述PF包含使用LWB的APP-RP中的組態表來將由裝置暴露的至少一個VF中的所述VF映射至由LWB的端點暴露的多個PF中的所述PF。
陳述88. 本發明概念的實施例包含如陳述84之物品,其中將請求自由端點暴露的多個PF中的所述PF轉換至由裝置暴露的至少一個VF中的所述VF包含基於由端點暴露的多個PF中的所述PF的第一基礎位址寄存器(BAR)及由裝置暴露的至少一個VF中的所述VF的第二BAR來修改請求中的位址。
陳述89. 本發明概念的實施例包含如陳述84之物品,其中將由LWB的端點暴露的多個PF中的所述PF映射至由裝置暴露的至少一個VF中的一VF包含使用LWB的APP-RP中的組態表來將由LWB的端點暴露的多個PF中的所述PF映射至由裝置暴露的至少一個VF中的一VF。
陳述90. 本發明概念的實施例包含如陳述84之物品,其中將請求發送至由裝置暴露的至少一個VF中的所述VF包含:
至少部分地基於由LWB的端點暴露的多個PF中的所述PF至由裝置暴露的至少一個VF中的一VF的映射來在裝置及第二裝置當中選擇第二裝置,所述第二裝置暴露至少一個第二PF及至少一個第二VF;以及
將請求發送至與裝置相關聯的APP-EP。
陳述91. 本發明概念的實施例包含如陳述84之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
判定用於涉及裝置的資料傳送的信用;以及
將信用發出至裝置。
陳述92. 本發明概念的實施例包含如陳述91之物品,其中將信用發出至裝置包含將信用寫入至裝置中的位址。
陳述93. 本發明概念的實施例包含如陳述91之物品,其中將信用發出至裝置包含裝置自LWB中的位址讀取信用。
陳述94. 本發明概念的實施例包含如陳述91之物品,其中將信用發出至裝置包含將訊息自LWB發送至裝置,訊息包含信用。
陳述95. 本發明概念的實施例包含如陳述75之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
接收組態寫入請求;以及
至少部分地基於組態寫入請求來組態由LWB的端點暴露的多個PF。
陳述96. 本發明概念的實施例包含如陳述95之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:至少部分地基於組態寫入請求來組態由裝置暴露的至少一個PF及至少一個VF以鏡射由LWB的端點暴露的多個PF的組態。
陳述97. 本發明概念的實施例包含如陳述95之物品,其中接收組態寫入請求包含自主機接收組態寫入請求。
陳述98. 本發明概念的實施例包含如陳述95之物品,其中接收組態寫入請求包含自裝置接收組態寫入請求。
陳述99. 本發明概念的實施例包含如陳述98之物品,其中至少部分地基於組態寫入請求來組態由LWB的端點暴露的多個PF包含至少部分地基於自裝置接收到的組態寫入請求來組態由端點暴露的多個PF中的至少一者的能力。
陳述100. 本發明概念的實施例包含如陳述95之物品,其中至少部分地基於組態寫入請求來組態由LWB的端點暴露的多個PF包含使用狀態機來執行單根輸入/輸出虛擬化(SR-IOV)序列。
陳述101. 本發明概念的實施例包含如陳述75之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
接收組態讀取請求;
判定裝置的至少一個PF及至少一個VF的組態;以及
利用裝置的至少一個PF及至少一個VF的組態來對組態讀取請求作出回應。
陳述102. 本發明概念的實施例包含如陳述101之物品,其中判定裝置的至少一個PF及至少一個VF的組態包含判定由裝置的端點暴露的多個PF的組態。
陳述103. 本發明概念的實施例包含如陳述101之物品,其中判定裝置的至少一個PF及至少一個VF的組態包含向裝置查詢裝置的至少一個PF及至少一個VF的組態。
陳述104. 本發明概念的實施例包含如陳述101之物品,其中判定裝置的至少一個PF及至少一個VF的組態包含不將組態讀取請求遞送至裝置。
陳述105. 本發明概念的實施例包含如陳述75之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)來動態地改變LWB的端點處的多個PF至由裝置暴露的至少一個PF及至少一個VF的映射。
陳述106. 本發明概念的實施例包含如陳述105之物品,其中使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)來動態地改變LWB的端點處的多個PF至由裝置暴露的至少一個PF及至少一個VF的映射包含至少部分地基於儲存器參數、日、日時間、頻寬利用率或用於由LWB的端點暴露的多個PF中的至少一者的服務品質(QoS)策略的改變而使用LWB的應用層端點(APP-EP)及應用層根埠(APP-RP)來動態地改變LWB的端點處的多個PF至由裝置暴露的至少一個PF及至少一個VF的映射。
陳述107. 本發明概念的實施例包含如陳述75之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:節制用於裝置的頻寬。
陳述108. 本發明概念的實施例包含如陳述107之物品,更包括量測由端點暴露的多個PF中的至少一者所使用的頻寬。
陳述109. 本發明概念的實施例包含如陳述107之物品,其中節制用於裝置的頻寬包含在第一資料封包與第二資料封包之間引入封包間間隙。
陳述110. 本發明概念的實施例包含如陳述107之物品,其中節制用於裝置的頻寬包含至少部分地基於由主機設置的QoS策略、由裝置設置的QoS策略、LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來節制用於裝置的頻寬。
陳述111. 本發明概念的實施例包含如陳述110之物品,其中至少部分地基於由主機設置的QoS策略、由裝置設置的QoS策略、LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來節制用於裝置的頻寬包含至少部分地基於超出臨限值的LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來節制用於裝置的頻寬。
陳述112. 本發明概念的實施例包含如陳述111之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:至少部分地基於降至低於第二臨限值的LWB的溫度、LWB的功耗、SSD的溫度或SSD的功耗中的一者來結束節制用於裝置的頻寬。
陳述113. 本發明概念的實施例包含如陳述75之物品,非暫時性儲存媒體於其上儲存有在由機器執行時引起如下操作的其他指令:
接收用於由LWB的端點暴露的多個PF中的一PF的QoS策略;以及
實施用於由LWB的端點暴露的多個PF中的所述PF的QoS策略。
陳述114. 本發明概念的實施例包含如陳述75之物品,其中接收用於由LWB的端點暴露的多個PF中的一PF的QoS策略包含自主機或裝置中的一者接收用於由LWB的端點暴露的多個PF中的所述PF的QoS策略。
因此,考慮到本文中所描述的實施例的廣泛多種改變,此詳細描述及隨附材料僅意欲為說明性的,而不應視為限制本發明的範疇。所主張的本發明因此是可在以下申請專利範圍及其等效物的範疇及精神內的所有此類修改。
105:機器
110:處理器
115:記憶體
120:記憶體控制器
125、125-1、125-2:固態驅動器
130:裝置驅動器
135:輕量橋接器
205:時鐘
210:網路連接器
215:匯流排
220:使用者介面
225:輸入/輸出引擎
305:主機介面邏輯
310:SSD控制器
315-1、315-2、315-3、315-4、315-5、315-6、315-7、315-8:快閃記憶體晶片
320-1、320-2、320-3、320-4:通道
325:快閃轉換層
330:快閃控制器
335、405:端點
410、410-1、410-2:應用層端點
415、415-1、415-2:應用層根埠
420、420-1、420-2:根埠
425、430、430-1、430-2:介面
435、435-1、435-2:組態表
440:組態管理器
445:多工器/解多工器
505:單根輸入/輸出虛擬化序列
510:狀態機
605:PF
610:PF/VF
615、1030:映射
705:組態寫入請求
710、715:虛線箭頭
805、815、820:組態讀取請求
810、825、830:組態資訊
905:主機位址
910:主機基礎位址寄存器
915:SSD BAR
920:SSD位址
1005:儲存器參數
1010:日
1015:日時間
1020:頻寬利用率
1025:QoS策略改變
1105:QoS策略
1205、1210、1215、1220:頻寬
1305:信用
1405、1410、1415、1420、1425、1430、1435、1440、1505、1510、1515、1525、1530、1535、1540、1545、1550、1605、1610、1705、1710、1715、1720、1725、1805、1810、1815、1820、1905、1910、1915、1920、2005、2010、2105、2110、2205、2210、2215、2220、2225、2230:區塊
1520、1825:虛線
圖1展示根據本發明概念的實施例的包含能夠使用固態驅動器(SSD)的虛擬功能(VF)來模擬由LWB暴露的實體功能(PF)的輕量橋接器(LWB)的機器。
圖2展示圖1的機器的額外細節。
圖3展示圖1的SSD的細節。
圖4A至圖4C展示根據本發明概念的各種實施例的圖1的LWB。
圖5展示圖4A至圖4C的組態管理器的細節。
圖6展示由圖1的LWB暴露的PF與由圖1的SSD暴露的PF/VF之間的映射。
圖7展示圖1的LWB處理來自圖1的主機的組態寫入請求。
圖8展示圖1的LWB處理來自圖1的主機的組態讀取請求。
圖9展示圖4A至圖4C的應用層端點(APP-EP)及應用層根埠(APP-RP)在LWB內處置位址轉換。
圖10展示在圖1的LWB內改變圖6的映射。
圖11展示由圖1的LWB暴露的PF具有相關聯服務品質(Quality of Service;QoS)策略。
圖12A至圖12B展示圖1的LWB執行頻寬節制。
圖13展示圖1的LWB將信用發出至圖1的SSD。
圖14A至圖14B展示根據本發明概念的實施例的用以識別由圖1的SSD暴露的PF/VF、暴露來自LWB的PF且產生由圖1的LWB暴露的PF與由圖1的SSD暴露的PF/VF之間的映射的用於圖1的LWB的實例程序的流程圖。
圖15A至圖15B展示用以接收且處理來自圖1的主機的請求的用於圖1的LWB的實例程序的流程圖。
圖16展示用以在圖1的主機與圖1的SSD之間轉換位址的用於圖4A至圖4C的APP-EP及APP-RP的實例程序的流程圖。
圖17展示用以將信用發出至圖1的SSD的用於圖1的LWB的實例程序的流程圖。
圖18展示用以處理組態寫入請求的用於圖1的LWB的實例程序的流程圖。
圖19展示用以處理組態讀取請求的用於圖1的LWB的實例程序的流程圖。
圖20展示用以使QoS策略與由圖1的LWB暴露的PF相關聯的用於圖1的LWB的實例程序的流程圖。
圖21展示用以動態地改變由圖1的LWB暴露的PF至由圖1的SSD暴露的PF/VF的映射的用於圖1的LWB的實例程序的流程圖。
圖22A至圖22B展示用以執行頻寬節制的用於圖1的LWB的實例程序的流程圖。
105:機器
110:處理器
115:記憶體
120:記憶體控制器
125:固態驅動器
130:裝置驅動器
135:輕量橋接器
Claims (20)
- 一種輕量橋接器電路,包括: 端點,用以連接至主機,所述端點暴露多個實體功能, 根埠,用以連接至裝置,所述裝置將至少一個實體功能及至少一個虛擬功能暴露於所述根埠;以及 應用層端點及應用層根埠,用以在暴露於所述主機的所述多個實體功能與由所述裝置暴露的所述至少一個實體功能及所述至少一個虛擬功能之間進行轉換, 其中所述應用層端點及所述應用層根埠實施由所述端點暴露的所述多個實體功能與由所述裝置暴露的所述至少一個實體功能及所述至少一個虛擬功能之間的映射。
- 如請求項1所述的輕量橋接器電路,更包括用以將所述應用層端點及所述應用層根埠進行組態的組態管理器。
- 如請求項2所述的輕量橋接器電路,其中所述應用層根埠可包含儲存器,所述儲存器用於組態表以儲存由所述端點暴露的所述多個實體功能與由所述裝置暴露的所述至少一個實體功能及所述至少一個虛擬功能之間的所述映射。
- 如請求項2所述的輕量橋接器電路,其中所述組態管理器可枚舉由所述裝置暴露的所述至少一個實體功能及所述至少一個虛擬功能,且至少部分地基於由所述裝置暴露的所述至少一個實體功能及所述至少一個虛擬功能來產生由所述端點暴露的所述多個實體功能。
- 如請求項2所述的輕量橋接器電路,其中所述組態管理器可確保所述裝置的第一組態鏡射所述端點的第二組態。
- 如請求項2所述的輕量橋接器電路,其中所述組態管理器包含唯讀記憶體及用以實施單根輸入/輸出虛擬化序列的狀態機。
- 如請求項1所述的輕量橋接器電路,更包括: 第二應用層端點及第二應用層根埠; 第二裝置,暴露至少一個第二實體功能及至少一個第二虛擬功能;以及 多工器/解多工器,經配置以連接至所述端點且連接至所述應用層端點及所述第二應用層端點中的每一者, 其中所述第二應用層端點及所述第二應用層根埠實施由所述端點暴露的所述多個實體功能與由所述第二裝置暴露的所述至少一個第二實體功能及所述至少一個第二虛擬功能之間的第二映射。
- 如請求項7所述的輕量橋接器電路,其中所述輕量橋接器電路可提供所述裝置及所述第二裝置的聚集資源。
- 如請求項1所述的輕量橋接器電路,其中所述輕量橋接器電路可實施頻寬節制。
- 如請求項9所述的輕量橋接器電路,其中所述輕量橋接器電路可至少部分地基於由所述主機設置的策略、由所述裝置設置的策略、所述輕量橋接器電路的溫度、所述輕量橋接器電路的功耗、固態驅動器的溫度或所述固態驅動器的功耗來實施頻寬節制。
- 如請求項1所述的輕量橋接器電路,其中所述輕量橋接器電路可在由所述裝置暴露的所述多個實體功能中的一實體功能上實施服務品質策略。
- 一種用於多實體功能模擬的方法,包括: 使用輕量橋接器的根埠來枚舉由裝置暴露的至少一個實體功能; 使用所述輕量橋接器的所述根埠來枚舉由所述裝置暴露的至少一個虛擬功能; 在所述輕量橋接器的端點處產生多個實體功能以暴露於主機;以及 使用所述輕量橋接器的應用層端點及應用層根埠將所述輕量橋接器的所述端點處的所述多個實體功能映射至由所述裝置暴露的所述至少一個實體功能及所述至少一個虛擬功能。
- 如請求項12所述的方法,其中 使用所述輕量橋接器的所述根埠來枚舉由所述裝置暴露的所述至少一個實體功能包含使用所述輕量橋接器的第二根埠來枚舉由第二裝置暴露的至少一個第二實體功能; 使用所述輕量橋接器的所述根埠來枚舉由所述裝置暴露的所述至少一個虛擬功能包含使用所述輕量橋接器的所述第二根埠來枚舉由所述第二裝置暴露的至少一個第二虛擬功能;以及 將所述多個實體功能映射至所述至少一個實體功能及所述至少一個虛擬功能包含將所述多個實體功能映射至所述至少一個實體功能、所述至少一個虛擬功能、所述至少一個第二實體功能以及所述至少一個第二虛擬功能。
- 如請求項13所述的方法,更包括: 判定所述裝置及所述第二裝置的資源;以及 聚集所述裝置及所述第二裝置的所述資源。
- 如請求項12所述的方法,更包括: 在由所述端點暴露的所述多個實體功能中的一實體功能處接收來自所述主機的請求; 將由所述輕量橋接器的所述端點暴露的所述多個實體功能中的所述實體功能映射至由所述裝置暴露的所述至少一個虛擬功能中的一虛擬功能; 將所述請求自由所述端點暴露的所述多個實體功能中的所述實體功能轉換至由所述裝置暴露的所述至少一個虛擬功能中的所述虛擬功能;以及 將所述請求發送至由所述裝置暴露的所述至少一個虛擬功能中的所述虛擬功能。
- 如請求項15所述的方法,更包括: 判定用於涉及所述裝置的資料傳送的信用;以及 將所述信用發出至所述裝置。
- 如請求項12所述的方法,更包括節制用於所述裝置的頻寬。
- 如請求項17所述的方法,其中節制用於所述裝置的頻寬包含至少部分地基於由所述主機設置的服務品質策略、由所述裝置設置的服務品質策略、所述輕量橋接器的溫度、所述輕量橋接器的功耗、固態驅動器的溫度及所述固態驅動器的功耗中的一者來節制用於所述裝置的頻寬。
- 一種用於多實體功能模擬的物品,包括非暫時性儲存媒體,所述非暫時性儲存媒體在其上儲存有在由機器執行時引起以下操作的指令: 使用輕量橋接器的根埠來枚舉由裝置暴露的至少一個實體功能; 使用所述輕量橋接器的所述根埠來枚舉由所述裝置暴露的至少一個虛擬功能; 在所述輕量橋接器的端點處產生多個實體功能以暴露於主機;以及 使用所述輕量橋接器的應用層端點及應用層根埠將所述輕量橋接器的所述端點處的所述多個實體功能映射至由所述裝置暴露的所述至少一個實體功能及所述至少一個虛擬功能。
- 如請求項19所述的物品,其中 使用所述輕量橋接器的所述根埠來枚舉由所述裝置暴露的所述至少一個實體功能包含使用所述輕量橋接器的第二根埠來枚舉由第二裝置暴露的至少一個第二實體功能; 使用所述輕量橋接器的所述根埠來枚舉由所述裝置暴露的所述至少一個虛擬功能包含使用所述輕量橋接器的所述第二根埠來枚舉由所述第二裝置暴露的至少一個第二虛擬功能;以及 將所述多個實體功能映射至所述至少一個實體功能及所述至少一個虛擬功能包含將所述多個實體功能映射至所述至少一個實體功能、所述至少一個虛擬功能、所述至少一個第二實體功能以及所述至少一個第二虛擬功能。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962865962P | 2019-06-24 | 2019-06-24 | |
US62/865,962 | 2019-06-24 | ||
US202062964114P | 2020-01-21 | 2020-01-21 | |
US62/964,114 | 2020-01-21 | ||
US16/846,271 | 2020-04-10 | ||
US16/846,271 US11809799B2 (en) | 2019-06-24 | 2020-04-10 | Systems and methods for multi PF emulation using VFs in SSD controller |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202101951A true TW202101951A (zh) | 2021-01-01 |
TWI825327B TWI825327B (zh) | 2023-12-11 |
Family
ID=74039265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109121535A TWI825327B (zh) | 2019-06-24 | 2020-06-24 | 輕量橋接器電路以及用於多實體功能模擬的方法及物品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11809799B2 (zh) |
KR (1) | KR20210000268A (zh) |
TW (1) | TWI825327B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312143B (zh) * | 2021-03-03 | 2024-01-23 | 阿里巴巴新加坡控股有限公司 | 云计算系统、命令处理方法及虚拟化仿真装置 |
EP4134830B1 (en) * | 2021-08-12 | 2024-07-03 | Samsung Electronics Co., Ltd. | Multi-function flexible computational storage device |
US12045467B2 (en) * | 2022-03-30 | 2024-07-23 | Micron Technology, Inc. | Dynamic memory device management and stream prioritization based on quality of service metrics |
CN115993937A (zh) * | 2023-03-21 | 2023-04-21 | 苏州浪潮智能科技有限公司 | 一种多进程固态硬盘仿真环境实现方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7529860B2 (en) * | 2006-12-19 | 2009-05-05 | International Business Machines Corporation | System and method for configuring an endpoint based on specified valid combinations of functions |
US7979592B1 (en) * | 2007-02-09 | 2011-07-12 | Emulex Design And Manufacturing Corporation | Virtualization bridge device |
US20110060859A1 (en) * | 2008-04-21 | 2011-03-10 | Rishabhkumar Shukla | Host-to-host software-based virtual system |
WO2014169010A1 (en) * | 2013-04-10 | 2014-10-16 | Marvell World Trade Ltd. | Tunneling transaction packets |
US9043501B2 (en) * | 2013-07-25 | 2015-05-26 | International Business Machines Corporation | Input/output monitoring mechanism |
US20160154756A1 (en) * | 2014-03-31 | 2016-06-02 | Avago Technologies General Ip (Singapore) Pte. Ltd | Unordered multi-path routing in a pcie express fabric environment |
US10838852B2 (en) | 2015-04-17 | 2020-11-17 | Samsung Electronics Co., Ltd. | System and method to extend NVME queues to user space |
CN106484492A (zh) | 2015-08-28 | 2017-03-08 | 杭州华为数字技术有限公司 | 配置接口的方法和系统 |
US20170212579A1 (en) * | 2016-01-25 | 2017-07-27 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Storage Device With Power Management Throttling |
US10719474B2 (en) | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US11556437B2 (en) * | 2018-08-22 | 2023-01-17 | Intel Corporation | Live migration of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture |
US10929310B2 (en) * | 2019-03-01 | 2021-02-23 | Cisco Technology, Inc. | Adaptive address translation caches |
US11372785B2 (en) * | 2020-05-06 | 2022-06-28 | Microsoft Technology Licensing, Llc | Local non-volatile memory express virtualization device |
-
2020
- 2020-04-10 US US16/846,271 patent/US11809799B2/en active Active
- 2020-06-08 KR KR1020200069049A patent/KR20210000268A/ko not_active Application Discontinuation
- 2020-06-24 TW TW109121535A patent/TWI825327B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20200401751A1 (en) | 2020-12-24 |
US11809799B2 (en) | 2023-11-07 |
KR20210000268A (ko) | 2021-01-04 |
TWI825327B (zh) | 2023-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI765138B (zh) | 主機系統及其方法和加速模組 | |
TWI825327B (zh) | 輕量橋接器電路以及用於多實體功能模擬的方法及物品 | |
US10713074B2 (en) | Method, apparatus, and system for accessing storage device | |
CN107690622B9 (zh) | 实现硬件加速处理的方法、设备和系统 | |
US9329783B2 (en) | Data processing system and data processing method | |
CN110727617B (zh) | 同时通过PCIe EP和网络接口访问双线SSD装置的方法和系统 | |
TWI772279B (zh) | 用於具有可重配置多端口的快捷外設互聯標準儲存系統的服務品質感測輸入輸出管理的方法、系統及設備 | |
CN108701004A (zh) | 一种数据处理的系统、方法及对应装置 | |
US9178839B2 (en) | Sharing buffer space in link aggregation configurations | |
US10474606B2 (en) | Management controller including virtual USB host controller | |
CN114442916A (zh) | 存储器设备、主机系统及操作存储器设备的方法 | |
JP2023524665A (ja) | ネットワーク・スタック・フレームワークにおいてコヒーレントにアタッチされたインターフェースを利用すること | |
US20230051825A1 (en) | System supporting virtualization of sr-iov capable devices | |
JP6760579B2 (ja) | ネットワークラインカード(lc)のホストオペレーティングシステム(os)への統合 | |
JP2023528782A (ja) | ネットワークアダプタのデータ処理方法およびネットワークアダプタ | |
KR20220082563A (ko) | 스토리지 장치 및 이의 동작 방법 | |
CN112131166B (zh) | 轻量桥接器电路及其操作方法 | |
US20240281402A1 (en) | Computing systems having congestion monitors therein and methods of controlling operation of same |