TWI502348B - 延伸唯讀記憶體管理系統、方法及其管理主機 - Google Patents

延伸唯讀記憶體管理系統、方法及其管理主機 Download PDF

Info

Publication number
TWI502348B
TWI502348B TW103115818A TW103115818A TWI502348B TW I502348 B TWI502348 B TW I502348B TW 103115818 A TW103115818 A TW 103115818A TW 103115818 A TW103115818 A TW 103115818A TW I502348 B TWI502348 B TW I502348B
Authority
TW
Taiwan
Prior art keywords
memory
host
read
data
computing host
Prior art date
Application number
TW103115818A
Other languages
English (en)
Other versions
TW201543216A (zh
Inventor
Kuan Jui Ho
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Priority to TW103115818A priority Critical patent/TWI502348B/zh
Priority to US14/463,679 priority patent/US9423958B2/en
Priority to CN201410519366.XA priority patent/CN104298535B/zh
Application granted granted Critical
Publication of TWI502348B publication Critical patent/TWI502348B/zh
Publication of TW201543216A publication Critical patent/TW201543216A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

延伸唯讀記憶體管理系統、方法及其管理主機
本發明是有關於一種電腦系統的虛擬化技術,且特別是有關於一種支援虛擬功能(virtual function;VF)的延伸唯讀記憶體管理系統、方法及其管理主機。
近年來,隨著網際網路(Internet)的蓬勃發展,使用者對於資訊服務的需求越來越高,伺服器承受的負擔亦越來越大。因此,為了降低成本及有效利用資源,伺服器虛擬化的技術亦逐漸成為發展的趨勢。而在周邊裝置連接快遞(Peripheral Component Interconnection Express;PCIE)的規格中,單根輸入輸出虛擬化(Single Root I/O Virtualization;SR-IOV)即是伺服器虛擬化的有效解決方案之一。單根輸入輸出虛擬化技術可以讓實體主機(例如,計算主機(computer host))分配多個虛擬功能(virtual function;VF)給不同虛擬機器(virtual machine)。
另一方面,由於作業系統可儲存於多種儲存媒介(例如,硬碟(hard disc)、網路伺服器、光碟唯讀記憶體等),實體主機中 便具備多種開機選項以供使用者選擇載入的系統。舉例來說,支援單根輸入輸出虛擬化技術的裝置,例如網路轉接卡(network adapter),其實體功能(physical function;PF)中的延伸唯讀記憶體基底位址暫存器(expansion read-only memory base address register;expansion ROM BAR)所配置的記憶體應射存取位址(MMIO address)可用來存取延伸唯讀記憶體的內容,而此內容為支援預先載入執行環境(Preboot Execution Environment;PXE)的程式或核心(kernel)。實體主機需取得預先載入執行環境(PXE)的程式內容,才可透過網路取得開機所需的作業系統。然而,支援單根輸入輸出虛擬化技術的裝置,其虛擬功能的中的延伸唯讀記憶體基底位址暫存器(expansion ROM BAR)是保留(Reserved)的,故無法支援預先載入執行環境啟動(PXE boot)。
本發明提供一種延伸唯讀記憶體(Expansion ROM)管理系統、方法及其管理主機,其可支援虛擬功能來應用延伸唯讀記憶體。
本發明提出一種延伸唯讀記憶體管理系統,此系統包括計算主機以及管理主機。管理主機分別透過橋接器(bridge)連接至對應的計算主機(compute host),管理主機具備虛擬功能(virtual function;VF),管理主機建立位址對照表以將虛擬功能及對應於虛擬功能的延伸唯讀記憶體分配至計算主機。並且,當計算主機 提出請求以取得虛擬功能的延伸唯讀記憶體的尺寸時,管理主機依據位址對照表將對應於延伸唯讀記憶體的影子暫存區塊中的資料提供給計算主機,計算主機依據影子暫存區塊中的資料分配計算主機中的記憶體區塊給延伸唯讀記憶體。當計算主機提出請求以透過橋接器取得延伸唯讀記憶體的資料時,管理主機依據記憶體區塊提供延伸唯讀記憶體的資料給計算主機。
另一觀點而言,本發明提出一種延伸唯讀記憶體管理方法,此方法包括下列步驟。建立位址對照表以將虛擬功能及對應於虛擬功能的至少延伸唯讀記憶體分配給計算主機。當計算主機提出請求以取得虛擬功能的延伸唯讀記憶體的尺寸時,依據位址對照表將對應於延伸唯讀記憶體的影子暫存區塊中的資料給計算主機。並且,計算主機依據影子暫存區塊中的資料分配計算主機中的記憶體區塊給延伸唯讀記憶體。當計算主機提出請求以透過橋接器取得延伸唯讀記憶體的資料時,依據記憶體區塊提供延伸唯讀記憶體的資料給計算主機。
另一觀點而言,本發明提出一種管理主機,此管理主機包括交換器(switch)、輸入輸出虛擬化裝置以及管理處理器。交換器包括橋接器,其中橋接器分別耦接對應的計算主機。輸入輸出虛擬化裝置耦接該交換器,輸入輸出虛擬化裝置具備虛擬功能。管理處理器耦接交換器,管理處理器建立位址對照表以將虛擬功能及對應於虛擬功能的延伸唯讀記憶體分配至計算主機。當計算主機提出請求以取得虛擬功能的延伸唯讀記憶體的尺寸時, 管理處理器依據位址對照表將對應於延伸唯讀記憶體的影子暫存區塊中的資料至計算主機,計算主機依據影子暫存區塊中的資料分配記憶體區塊給延伸唯讀記憶體,其中,當計算主機提出請求以透過橋接器取得延伸唯讀記憶體的資料時,管理處理器依據記憶體區塊提供延伸唯讀記憶體的資料給計算主機。
基於上述,本發明實施例所述的延伸唯讀記憶體管理系統預先分配虛擬功能及延伸唯讀記憶體分配給計算主機以建立位址對照表,當計算主機欲取得延伸唯讀記憶體的尺寸時,管理主機將計算主機所傳送之寫入指令進行運算,以提供對應於延伸唯讀記憶體的影子暫存區塊中的資料給計算主機,進而使計算主機可透過橋接器讀取延伸唯讀記憶體的資料。藉此,本發明實施例的延伸唯讀記憶體管理系統可使其虛擬功能支援提供延伸唯讀記憶體的資料。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100‧‧‧延伸唯讀記憶體管理系統
110、115、291‧‧‧計算主機
110a、115a‧‧‧根埠
130‧‧‧管理主機
131、270‧‧‧輸入輸出虛擬化裝置
134、565‧‧‧記憶體
135、210‧‧‧管理處理器
136‧‧‧軟體
137、250‧‧‧交換器
138、139、290‧‧‧橋接器
138_1、138_3、138_5‧‧‧暫存器
138_2、138_6‧‧‧指標器
220‧‧‧根複合器
S310~S370、S510~S590、S610~S690、S710~S790‧‧‧步驟
550‧‧‧位址對照表
560‧‧‧系統單晶片
561‧‧‧中央處理器
563‧‧‧晶片組
圖1是依據本發明一實施例說明一種延伸唯讀記憶體管理系統的方塊圖。
圖2是依據本發明一實施例說明圖1的管理主機的範例。
圖3是依據本發明一實施例說明一種延伸唯讀記憶體管理方 法的流程圖。
圖4A及圖4B為依據本發明一實施例說明延伸唯讀記憶體基底位址暫存器及運算遮罩位元的範例。
圖5是依據本發明一實施例說明計算主機讀取延伸唯讀記憶體的資料的流程示意圖。
圖6是依據本發明另一實施例說明計算主機讀取延伸唯讀記憶體的資料的流程示意圖。
圖7A及圖7B是依據本發明另一實施例說明計算主機讀取延伸唯讀記憶體的資料的流程示意圖。
為了使單根輸入輸出虛擬化(SR-IOV)裝置中的虛擬功能支援延伸唯讀記憶體,進而可透過網路取得開機所需的作業系統。本發明實施例提出一種虛擬功能分配系統、方法及其管理主機。當計算主機欲取得管理主機中的延伸唯讀記憶體的尺寸時,管理主機將計算主機傳送的寫入指令寫入影子暫存區塊,並透過運算,使得計算主機可獲得管理主機所提供的影子暫存區塊中的尺寸資料。在此,管理主機利用軟體模擬進行代理(Proxy),並且影子暫存區塊(Shadow Register Block)可以儲存與代理有關的資料,例如:虛擬的延伸唯讀記憶體基底位址暫存器(expansion ROM BAR)的資料、記憶體致能位元(memory enable bit)的資料等。當尺寸確認後,計算主機將記憶體位址分配給延伸唯讀記 憶體,以取得延伸唯讀記憶體的資料。除此之外,本發明實施例中的管理主機更可利用軟體模擬方式取得記憶體中延伸唯讀記憶體的資料。藉此,透過本發明便能使虛擬功能支援延伸唯讀記憶體,以使得管理主機能夠更彈性地運用單根輸入輸出虛擬裝置中的資源。
圖1是依據本發明一實施例說明一種延伸唯讀記憶體管理系統的方塊圖。請參照圖1,延伸唯讀記憶體管理系統100包括計算主機110、115以及管理主機130。
計算主機110及115可以是桌上型(desktop)電腦、筆記型電腦(laptop)等具備中央處理單元(Central Processing Unit;CPU)或是其他可程式化之一般用途或特殊用途的微處理器(Microprocessor)、數位信號處理器(Digital Signal Processor;DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuit;ASIC)的電子裝置。值得注意的是,在本實施例中,計算主機110及115更包括如同南橋(south bridge)晶片(chipset)、北橋(north bridge)晶片…等可處理計算主機110及115中各元件/設備的傳輸訊號的晶片。
在本實施例中,計算主機110、115及管理主機130支援周邊裝置連接快遞(Peripheral Component Interconnection Express;PCIe)規格,計算主機110、115及管理主機130之間可藉由纜線(cable)搭配PCIe連接器(connector)、或是將計算主機110、115的PCIe連接器***管理主機130中的PCIe插槽(slot) 來進行電性連接、通訊、檢測及存取。然而,本發明實施例對於計算主機110、115及管理主機130之間的耦接方式並不受限於此,端視應用本實施例者所採用的傳輸介面而定。
在本實施例中,管理主機130包括輸入輸出虛擬化裝置131、管理處理器135及交換器137。輸入輸出虛擬化裝置131可以是支援單根輸入輸出虛擬化技術的網路轉接卡(network adapter)等設備。一般而言,支援單根輸入輸出虛擬化技術的輸入輸出虛擬化裝置131可包括一個或多個PCIe實體功能(physical function;PF),且各個實體功能可對應至少一個虛擬功能(virtual function;VF),其中虛擬功能可提供虛擬機器(virtual machine)使用,而實體功能例如對應64個虛擬功能。
一般而言,當使用者開啟電腦(例如,桌上型電腦、筆記型電腦)時,基本輸入輸出系統(Basic Input/Output System;BIOS)會傳送電源啟動自我測試(power on self-test;POST)序列以掃描主機板所連接的各組件,並尋找延伸唯讀記憶體以載入作業系統。具體而言,基本輸入輸入系統先透過延伸唯讀記憶體的載具(例如,網路轉接卡)所提供延伸唯讀記憶體的尺寸以確認延伸唯讀記憶體基底位址暫存器的內容有效性。若有效,則配置記憶體映射輸入輸出(memory-mapping input and output;MMIO)位址可用來存取延伸唯讀記憶體的內容,其中此內容為支援預先載入執行環境(Preboot Execution Environment;PXE)的程式。接著,實體主機需取得預先載入執行環境(PXE)的程式內容,以 透過網路取得開機所需的作業系統。然而,一般情況下,僅有實體功能的延伸唯讀記憶體基底位址暫存器的內容可以被確認。因為虛擬功能的延伸唯讀記憶體基底位址暫存器的位元內容為0,且為唯讀(Read Only),故無法被確認,從而無法讀取虛擬功能所對應之延伸唯讀記憶體的資料。
此外,雖然單根輸入輸出虛擬化技術能使多台虛擬機器使用輸入輸出虛擬化裝置的虛擬功能,但是其僅能支援單一計算主機(例如:計算主機110或115其中之一)。因此,為了解決單根輸入輸出虛擬化技術的限制,管理主機130可利用非透明橋接器(Non-Transparent Bridge;NTB),並將輸入輸出虛擬化裝置131的虛擬功能分配給計算主機110及115,使得輸入輸出虛擬化裝置131可以同時被計算主機110及115使用。然而,上述的非透明橋接器雖然解決了單一計算主機的使用限制,但計算主機依然無法讀取虛擬功能所對應之延伸唯讀記憶體的資料。亦即,管理主機依然僅能提供實體功能所對應之延伸唯讀記憶體的資料。因此,當計算主機欲取得虛擬功能所對應之延伸唯讀記憶體之尺寸時,本發明可利用軟體模擬來提供影子暫存區塊中的資料,以使得計算主機獲得有效的基底位址暫存器之內容,進而使計算主機能夠讀取虛擬功能所對應之延伸唯讀記憶體的資料。
請繼續參照圖1,管理處理器135可以是中央處理單元,或是其他可程式化之一般用途或特殊用途的微處理器、數位信號處理器、可程式化控制器、特殊應用積體電路或其他類似元件或 上述元件的組合。在本實施例中,管理處理器135用以處理本實施例之管理主機130所有作業。此外,管理處理器135可得知管理主機130中可用的虛擬功能及其數量,且管理處理器135亦可得知可用的計算主機及其數量。在本實施例中,以兩個計算主機110、115為範例,然不以此為限。管理處理器135可依據計算主機110、115及虛擬功能的能力(例如,運算速度、記憶體尺寸等)或上層軟體傳送的建立虛擬機器要求建立對照表,進而依據對照表將虛擬功能分配給計算主機110、115。其中,對照表包括計算主機110、115所對應的各虛擬功能的PCI組態空間位址(PCI Configuration Space Address),例如:匯流排/裝置/功能(Bus/Device/Function)的位址。
交換器137可以是PCIe交換器(switch)、或是其他支援PCIe規格的交換器。交換器137包括橋接器138及139。由計算主機110、115的觀點而言,橋接器138及139可視為是周邊裝置連接至周邊裝置連接(PCI-to-PCI;P2P)橋接器;由管理處理器135觀點而言,橋接器138及13可視為是非透明橋接器(NTB)。橋接器138、139的兩端因分別連接計算主機110、115及管理主機131,因此具有各自的PCI域(domain)及記憶體域(memory domain),進而需透過位址轉換對照表進行此二個PCI域及記憶體域的位址轉換(address translation),其中位址轉換對照表將於稍後對照表再作說明。另外,橋接器138及139例如是分別耦接至對應的計算主機110及115的根埠(Root Port)110a及115a,且 上述的橋接器138及139可為實體橋接器(Physical Bridge),其具有匯流排/裝置/功能(Bus/Device/Function)的位址。
圖2是依據本發明一實施例說明圖1的管理主機130的範例。在本實施例中,管理主機130中的管理處理器210經由根複合器(root complex device)220來控制PCIe交換器250。PCIe交換器250連接單根輸入輸出虛擬化裝置270及多個橋接器290,而橋接器290可連接對應的計算主機291。由計算主機291的觀點而言,橋接器290可視為周邊裝置連接至周邊裝置連接(P2P)橋接器,而由管理處理器135觀點來說可將橋接器290視為是非透明橋接器(NTB)。在本實施例中,管理處理器210可視為是圖1的管理處理器135的一種實施方式。在本實施例中,PCIe交換器250可視為圖1的交換器137的一種實施方式。單根輸入輸出虛擬化裝置270可視為圖1的輸入輸出虛擬化裝置131的一種實施方式。橋接器290可視為圖1的橋接器138、139的一種實施方式。計算主機291可視為圖1的橋接器110、115的一種實施方式。此外,根複合器220可視為圖1的管理處理器135的一部份或是交換器137一部份。
為了方便說明,以下實施例將以圖1中的計算主機110作為範例,在其他實施例中亦可使用計算主機115,且不以此為限。管理主機130的管理處理器135會建立位址對照表以將虛擬功能及對應於虛擬功能的延伸唯讀記憶體分配至計算主機110。舉例而言,表(1)為位址對照表的範例,其中位址對照表表(1)包括 有效狀態(Valid)、計算主機編號(CH)、計算主機端的虛擬功能位址(CH-B/D/F)、管理主機端的虛擬功能位址(M-B/D/F)、過濾狀態(filter enable)、過濾範圍(filter range)、影子暫存區塊(shadow register block)、計算主機端記憶體位址(CH memory)、管理主機端記憶體位址(M memory)、記憶體尺寸(size)及記憶體位址轉換致能狀態(memory address remap enable)。
管理處理器135依據有效狀態以決定是否利用軟體模擬進行代理。例如,當表(1)的有效狀態的數值例如為0表示禁能,管理主機130不進行代理,且影子暫存區塊不儲存任何資料(Data)。而當有效狀態的數值例如為1表示致能,則管理主機130進行代理,並且相關的代理資料可被儲存於影子暫存區塊中。位 址對照表中的計算主機110編號(例如,1),而此計算主機端的虛擬功能CH-B/D/F位址(例如,2/0/0),且管理主機端的虛擬功能M-B/D/F位址(例如,4/3/2)。上述的B/D/1F位址係指匯流排/裝置/功能(Bus/Device/Function)的位址。過濾狀態filter enable的數值例如為0表示為禁能,而數值例如為1表示致能。過濾範圍表示延伸唯讀記憶體的暫存器位址(例如,影子暫存區塊中的位址Offset 30-33)。影子暫存區塊中的資料例如為0表示未儲存任何資料,且影子暫存區塊中的資料亦可儲存與管理主機130代理有關的資料(例如,儲存於Offset 30-33位址的對應虛擬功能之虛擬的延伸唯讀記憶體基底位址暫存器的資料或儲存於Offset 04位址的記憶體致能位元)。一般來說,影子暫存區塊中的資料會依據有關的寫入組態指令而寫入相關的資料。在一實施例中,影子暫存區塊為一記憶體區塊(例如,管理主機130的記憶體(未繪示於圖)中的記憶體區塊)。計算主機端記憶體位址的數值例如為0表示計算主機110尚未分配位址給延伸唯讀記憶體。管理主機端記憶體位址假設為Mem_m,表示管理主機130分配位址Mem_m給延伸唯讀記憶體。記憶體尺寸為延伸唯讀記憶體的尺寸(例如,1M Bytes)。記憶體位址轉換致能狀態的數值例如為0表示管理主機130不進行記憶體位址轉換,而記憶體位址轉換致能狀態數值例如為1表示管理主機130進行記憶體位址轉換。
在上述參數的設定下,管理主機130收到來自計算主機110的組態指令(例如,讀取或寫入指令),則會將計算主機端的 虛擬功能CH-B/D/F位址(例如,2/0/0)轉換成管理主機端的虛擬功能M-B/D/F位址(例如,4/3/2)。並且,影子暫存區塊會儲存有關組態指令的寫入資料。需說明的是,表(1)中的各參數值僅為示例,在其他實施例中,實施本發明之本領域技術人員可隨其需求而調整。
表(2)為位址對照表的另一實施例。當上述參數設定中的過濾狀態filter enable的值,例如為1時,表示為致能。此時,當管理主機130收到來自計算主機110的讀取組態指令時,則會依過濾範圍(例如:Offset 30-33位址)對指令進行過濾。若範圍符合(Hit),則管理處理器135會將計算主機端的虛擬功能CH-B/D/F位址(例如為2/0/0)轉換至影子暫存區塊以讀取相關資料,而不 再至管理主機端的虛擬功能M-B/D/F位址(例如為:4/3/2)進行讀取。同樣地,若自計算主機110收到的讀取組態指令為寫入組態指令時,則管理處理器135會依據過濾範圍(例如:Rx30-33位址)對指令進行過濾。若範圍符合(Hit),則管理處理器135會將計算主機端的虛擬功能CH-B/D/F位址(例如為2/0/0)只寫入影子暫存區塊相關資料中,而不再至管理主機端的虛擬功能M-B/D/F位址(例如為:4/3/2)進行寫入。反之,若範圍未符合,則管理主機130會依照過濾狀態filter enable為禁能的方式處理。
圖3是依據本發明一實施例說明一種延伸唯讀記憶體管理方法的流程圖。請參照圖3,本實施例的判斷方法適用於圖1的延伸唯讀記憶體管理系統100。下文中,將依延伸唯讀記憶體管理系統100中的各項模組及元件說明本發明實施例所述之管理方法。本方法的各個流程可依照實施情形而隨之調整,且並不僅限於此。在步驟S310中,管理主機130的管理處理器135建立位址對照表以將虛擬功能及對應於虛擬功能的延伸唯讀記憶體分配至計算主機110。在此,所建立的位址對照表例如為前述的表(2)。
需說明的是,在使用者開啟計算主機110之後,基本輸入輸出系統將執行開機程序(例如,傳送電源啟動自我測試(POST)序列),且開始執行列舉程序(enumeration process),計算主機110詢問管理主機130中PCIe裝置(例如,虛擬功能、虛擬橋接器等)的連接配置。當計算主機110掃描到橋接器138時,管理處理器135依據位址對照表(例如,前述表(2))透過橋接器 138傳送虛擬功能的資料。具體而言,若計算主機110此時發出包含計算主機端的虛擬功能位址(例如,2/0/0)的組態(configuration)指令(例如:讀取(read)指令),則管理主機130中的軟體(例如,作業系統、應用程式、韌體(firmware)及控制程式等)會依據將此指令與位址對照表中的資料進行比對,確認是否符合(Hit)。在表(2)中,位址對照表中計算主機端的B/D/F位址(例如,2/0/0)對應於管理主機端的B/D/F位址(例如,4/3/2),管理主機130便將計算主機端的B/D/F位址(例如,2/0/0)將轉換成管理主機端的B/D/F位址(例如,4/3/2),此時是由管理主機130的軟體代理去產生包含(例如,4/3/2)的B/D/F位址的組態指令,而至對應的位址而得到虛擬功能的相關資料(Data)。接著,管理處理器135再將與虛擬功能的相關資料寫入橋接器138,並通知計算主機110此組態指令完成。
當計算主機110得知組態指令已完成時,計算主機110便發現管理主機130所配置的將虛擬功能。在步驟S330中,當計算主機110提出請求以取得延伸唯讀記憶體的尺寸時,依據位址對照表將對應於延伸唯讀記憶體的影子暫存區塊中的運算結果(資料)提供給計算主機110。位址對照表(例如,表(1))中的該過濾狀態預設為禁能,當計算主機110傳送寫入指令至管理主機130時,管理處理器135依據寫入指令將位址對照表(例如,表(1))中的過濾狀態設為致能。具體而言,表(3)為位址對照表的另一範例。
請參照表(3),計算主機110傳送寫入指令以要求取得唯讀記憶體的尺寸。當管理主機130接收到計算主機110所傳送的寫入指令時,由於位址對照表的過濾狀態filter enable的值為1,表示致能,故會依照過濾範圍(例如:Offset 30-33位址)對指令進行過濾。若範圍符合(Hit),管理主機130利用軟體模擬(例如,作業系統、應用程式、韌體及控制程式等)將寫入指令僅寫入位址對照表中的對應的影子暫存區塊。管理主機130對對應的影子暫存區塊中的資料(即,位址對照表中的影子暫存區塊中的資料)進行運算(例如,利用寫入指令以及後述的遮罩位元(mask bit)進行運算),依據運算結果提供對應的影子暫存區塊中的資料給計 算主機110。需說明的是,在本實施例中,寫入指令中的所有位元皆為1。在此步驟中,管理處理器135不會將計算主機110所傳送的寫入指令傳送到管理主機端的虛擬功能M-B/D/F位址(例如為:4/3/2)進行寫入。
圖4A及圖4B為依據本發明一實施例說明延伸唯讀記憶體基底位址暫存器及運算遮罩位元的範例。請先參照圖4A,圖4A為實體功能的延伸唯讀記憶體基底位址暫存器的範例,圖4A中的第1位元至第19位元(位元[19:1])皆為唯讀且第20位元至第31位元(位元[31:20])和第0位元(位元[0])為可讀寫。第0位元(位元[0])為延伸唯讀記憶體基底位址暫存器的致能位元(expansion ROM BAR enable bit),其數值例如為0表示禁能,而數值例如為1表示致能。對於一般的裝置或是支援單根輸入輸出虛擬化技術的裝置的實體功能,管理處理器135會將寫入指令傳送到此裝置,亦會將讀取指令傳送到此裝置,並將結果傳送回計算主機110。亦即,管理處理器135會至對應的管理主機端的虛擬功能M-B/D/F位址(例如為:4/3/2)進行寫入,並將運算結果傳送回計算主機110,而不需要配置影子暫存區塊,來儲存寫入指令。然而,在單根輸入輸出虛擬化技術的標準中限制虛擬功能的延伸唯讀記憶體基底位址暫存器中的所有位元皆為唯讀,且數值為0。因此,計算主機110會判斷虛擬功能的延伸唯讀記憶體的尺寸為無效,而無法繼續進行讀取虛擬功能的延伸唯讀記憶體的資料之操作。為了解決上述限制,本發明先依據虛擬功能的延伸唯 讀記憶體的尺寸(例如,1M Bytes)產生遮罩位元,管理處理器135將影子暫存區塊中的資料(例如:全為1的寫入指令)與遮罩位元進行及運算(AND),且管理處理器135將運算結果作為影子暫存區塊中的資料以透過交換器137傳送至計算主機110。在此,上述運算結果可視為虛擬功能的位於影子暫存區塊中的虛擬位址暫存器(例如,虛擬的延伸唯讀記憶體基底位址暫存器)。
需說明的是,請參照圖4B,圖4B為依據本發明一實施例的遮罩位元之範例,管理處理器135基於延伸唯讀記憶體的尺寸來產生遮罩位元。具體而言,本發明產生遮罩位元的方法是先取得延伸記憶體的尺寸(例如,1M Bytes),將延伸唯讀記憶體的尺寸依據二進位形式呈現(例如,1M大約為2^20,而二進位轉換則為100000000000000000000b),將二進位形式的延伸唯讀記憶體的尺寸填入遮罩位元,並將二進位形式的延伸唯讀記憶體的尺寸的最高有效位元(most significant bit;MSB)至遮罩位元的最高有效位元的值皆設為1(例如:位元[31:20]),將作為致能位元的第0位元(位元[0])設為1,以表示致能,而其餘位元設為0(位元[1:19]),則完成遮罩位元。
需說明的是,當位址對照表中的過濾狀態filter enable為禁能時(例如,表(1),過濾狀態數值為0),管理處理器135不會過濾延伸唯讀記憶體基底位址暫存器,也就是說,當計算主機110向管理主機130提出請求來取得延伸唯讀記憶體的尺寸時,管理主機130會依照一般的方式透過虛擬功能讀出相對應的暫存器內 容,並傳送至計算主機110。反之,當位址對照表中的過濾狀態filter enable為致能時(例如,表(2)或表(3),過濾狀態數值為1),管理處理器135會過濾延伸唯讀記憶體基底位址暫存器(即,步驟S330所述管理處理器135將寫入指令寫入影子暫存區塊,並將寫入指令與遮罩位元進行運算),以提供儲存於影子暫存區塊中的運算結果給計算主機110。值得注意的是,對於支援單根輸入輸出虛擬化技術裝置的限制虛擬功能而言,本發明利用運算結果取代原本的延伸唯讀記憶體基底位址暫存器,以提供虛擬的延伸唯讀記憶體基底位址暫存器,進而克服延伸唯讀記憶體基底位址暫存器中所有位元皆為唯讀且數值為0的限制。換言之,運算結果可視為虛擬的延伸唯讀記憶體基底位址暫存器。
在步驟S350中,計算主機110依據影子暫存區塊中的資料分配計算主機110中的記憶體區塊給延伸唯讀記憶體。如表(4)所示。
具體而言,當計算主機110判斷所讀到的虛擬的延伸唯讀記憶體基底位址暫存器中的資料為有效時,計算主機110依據虛擬的延伸唯讀記憶體基底位址暫存器中的資料計算延伸唯讀記憶體的尺寸(例如,1M Bytes、2M Bytes等)。需說明的是,若計算主機110取得的代表延伸唯讀記憶體的尺寸的資料中所有位元皆為0,則計算主機110判斷此延伸唯讀記憶體為無效。特別是,若延伸唯讀記憶體的尺寸的資料中的所有位元並非皆為0,則計算主機110判斷為有效。上述延伸唯讀記憶體的尺寸的資料係指虛擬的延伸唯讀記憶體基底位址暫存器中的資料所計算出來的尺寸。此外,對於虛擬功能來說,若未透過影子暫存區塊提供運算結果給計算主機110,則虛擬功能對應的延伸唯讀記憶體的尺寸的資料中所有位元皆為0,則計算主機將視此延伸唯讀記憶體的尺寸為無效。因此,當延伸唯讀記憶體的尺寸為有效時,計算主機110依據延伸唯讀記憶體的尺寸於計算主機110的記憶體(未繪示於圖)中分配記憶體區塊給延伸唯讀記憶體。例如,計算主機110將其記憶體中3G至3G+1M-1的位址分配給延伸唯讀記憶體,計算主機110將分配結果寫入虛擬的延伸唯讀記憶體基底位址暫存器中,管理主機130收到這個寫入指令後寫入表(4)中的計算主機 端記憶體位址。
需說明的是,一般來說,計算主機110為了進行例如記憶體映射輸入輸出(memory-mapping input and output;MMIO)程序,計算主機110會在其記憶體(未繪示於圖)中分配部份記憶體區塊(例如,記憶體位址0×11000000至0×11001000)給週邊設備(例如,網路卡、顯示卡等),以將週邊設備的儲存器或暫存器映射至此記憶體區塊,計算主機110便可進行輸入輸出(I/O)作業。
一般來說,位於影子暫存區塊中的記憶體致能位元(例如,位於影子暫存區塊中的位址Offse 04)以及虛擬的延伸唯讀記憶體基底位址暫存器的致能位元預設值為0,以表示禁能。當計算主機110獲得延伸唯讀記憶體的尺寸,進而分配計算主機端記憶體位址(例如,3G等)給延伸唯讀記憶體時,計算主機110會將虛擬的延伸唯讀記憶體基底位址暫存器設為3G且延伸唯讀記憶體基底位址暫存器的致能位元設為致能,再將虛擬功能的記憶體致能位元設為致能。另一方面,記憶體位址轉換致能狀態預設為禁能,而當過濾狀態、影子暫存區塊中的資料中的致能位元(例如,影子暫存區塊中的資料中的第0位元)以及記憶體致能位元為致能時,管理處理器135將記憶體位址轉換致能狀態設為致能。換言之,管理主機130必須同時符合過濾狀態致能(數值例如為1)、虛擬的延伸唯讀記憶體基底位址暫存器的致能位元致能(數值例如為1)、位於影子暫存區塊中的記憶體致能位元致能(數值 例如為1),此時管理主機130才會進行計算主機端與管理主機端的記憶體位址轉換,同時管理處理器135會將記憶體位址轉換致能狀態由原本的禁能(數值例如為0)轉變成致能(數值例如為1)。此時,如表(5)所示。
在步驟S370中,當計算主機110提出請求以透過橋接器138取得延伸唯讀記憶體的資料時,依據記憶體區塊提供延伸唯讀記憶體的資料給計算主機110。具體而言,由於計算主機110已分配記憶體區塊(例如:記憶體位址3G)給延伸唯讀記憶體,計算主機110便可執行記憶體映射輸入輸出(MMIO)程序(例如,傳送MMIO讀取指令(read cycle))以讀取延伸唯讀記憶體的資料。 當該計算主機110傳送讀取指令時,管理主機130依據位址對照表提供延伸唯讀記憶體的資料,其中管理主機130檢查記憶體位址轉換致能狀態是否為致能。另一方面,若計算主機110傳送對寫入指令於延伸唯讀記憶體,則管理主機130將忽略此寫入指令。以下將以四個實施例說明本發明如何讓計算主機110、115讀取延伸唯讀記憶體的資料,其中這些實施例中,僅以連接一個計算主機(例如,計算主機110或計算主機115)做為範例,然這些實施例僅為本案之實施方式的說明,應用本實施例者可將這些實施例進行適度地結合與應用,因此下述實施例並非用以限定本發明。
圖5是依據本發明一實施例說明計算主機110讀取延伸唯讀記憶體的資料的流程示意圖。請參照圖1及圖5,計算主機110透過橋接器138連接管理主機130,而管理主機130內嵌或耦接(例如,透過並行或序列匯流排(bus)、如同乙太網路(ethernet)或光纖等網路介面等)系統單晶片560(System-on-chip;SoC),其中系統單晶片560包括中央處理單元(central processing unit;CPU)、晶片組563(chipset)及記憶體565。在本實施例中,橋接器138具備位址對照表550。橋接器138接收計算主機110傳送的讀取指令,橋接器138依據位址對照表550讀取延伸唯讀記憶體的資料,且橋接器138將延伸唯讀記憶體的資料傳送至計算主機110。
具體而言,在步驟S510中,計算主機110傳送讀取要求(例如,MMIO讀取指令(MMIO read cycle))至橋接器138,其 中讀取要求包括計算主機端記憶體位址(例如,3G)。在步驟S520中,橋接器138依據位址對照表550的資料(例如,表(5)中的管理主機端記憶體位址Mem_m及記憶體尺寸1M Bytes)傳送記憶體讀取要求至系統單晶片560,其中橋接器138比對位址對照表以及讀取要求中的計算主機端記憶體位址。當比對相符時,橋接器138將傳送包括管理主機端記憶體位址的記憶體讀取要求至系統單晶片560。系統單晶片560中的中央處理單元561依據記憶體讀取要求透過晶片組563對記憶體565取得位址對照表550中記錄的管理主機端記憶體位址(例如,記憶體位址Mem_m)的資料,其中此管理主機端記憶體位址用於存放延伸唯讀記憶體的資料。在步驟S530中,晶片563傳送回應於步驟S520所傳送的記憶體讀取要求的記憶體讀取回應,其中此記憶體讀取回應伴隨著取得的延伸唯讀記憶體的資料。在步驟S530中,橋接器138傳送回應於步驟S510所傳送的讀取要求的讀取回應,其中此讀取回應伴隨著延伸唯讀記憶體的資料。藉此,計算主機110便能將延伸唯讀記憶體的資料載入以完成開機程序。
需說明的是,在計算主機110傳送讀取要求(例如,步驟S510)之前,中央處理單元561已先依據位址對照表將記憶體565中對應於管理主機端記憶體位址的記憶體位址(例如,記憶體位址Mem_m)分配給延伸唯讀記憶體,以儲存延伸唯讀記憶體的資料。此外,以下實施例提及用於存放延伸唯讀記憶體的資料的記憶體位址的相關說明請參照前述說明,於後不再贅述。
圖6是依據本發明另一實施例說明計算主機110讀取延伸唯讀記憶體的資料的流程示意圖。請參照圖1及圖6,橋接器138接收計算主機110傳送的讀取指令,橋接器138通知管理主機130,管理處理器135利用軟體模擬來取得讀取指令且依據位址對照表將延伸唯讀記憶體的資料傳送至橋接器138並通知橋接器138,且橋接器138將延伸唯讀記憶體的資料傳送至計算主機110。
具體而言,在步驟S610中,計算主機110傳送讀取要求至橋接器138,暫存器138_1紀錄此讀取要求並傳送中斷(interrupt)指令(步驟S630),此時管理主機130是經由軟體(例如,應用程式、韌體、系統等)模擬來執行計算主機的操作。在步驟S640中,管理處理器135利用軟體模擬來向暫存器138_1取得讀取資料,並依據位址對照表與讀取資料比對。在步驟S650中,管理處理器135利用軟體模擬比對相符(hit)時,並向暫存器138_3回應延伸唯讀記憶體的資料,其中管理處理器135可利用軟體模擬來事先取得延伸唯讀記憶體的資料。管理處理器135利用軟體模擬來傳送觸發(assert)指令至暫存器138_5(例如,觸發暫存器)(步驟S670),暫存器138_3便將延伸唯讀記憶體的資料傳送至計算主機110(步驟S690)。
需說明的是,在一實施例中,管理處理器135利用軟體模擬而依據位址對照表(例如,表(5)中的計算主機端記憶體位址、管理主機端記憶體位址以及記憶體尺寸)來事先至管理主機130的記憶體(未繪示於圖)中的記憶體位址(即,用於儲存延伸記 憶體的資料的記憶體位址,例如,記憶體位址Mem_m)取得延伸唯讀記憶體的資料,以便稍後提供給計算主機110。在另一實施例中,管理處理器135亦可依據步驟S640中所取得的讀取資料來比對位址對照表(例如,表(5)中的計算主機端記憶體位址),若比對相符時,則管理處理器依據位址對照表(例如,表(5)中的管理主機端記憶體位址)至管理主機130的記憶體的記憶體位址(對應於管理主機端記憶體位址M memory,例如,記憶體位址Mem_m)中取得延伸唯讀記憶體的資料,以提供給暫存器138_3。
圖7A及圖7B是依據本發明另一實施例說明計算主機110讀取延伸唯讀記憶體的資料的流程示意圖。請先參照圖1及圖7A,橋接器138具備指標器(pointer)138_2,橋接器138接收計算主機110傳送的讀取指令,指標器138_2寫入此讀取指令且通知管理主機130,管理處理器135利用軟體模擬來取得延伸唯讀記憶體的資料,且管理處理器135傳送延伸唯讀記憶體的資料至橋接器138並通知橋接器138,且橋接器138將延伸唯讀記憶體的資料傳送至計算主機110。
具體而言,在步驟S710中,計算主機110傳送讀取要求至橋接器138,橋接器138利用指標器138_2將接收的讀取要求寫入記憶體134(步驟S720),並傳送中斷指令至管理處理器135所模擬的軟體(步驟S730)。管理處理器135利用軟體模擬自記憶體134取得讀取要求(步驟S740)並進行比對,當比對相符時,向暫存器138_3回應延伸唯讀記憶體的資料(步驟S750),其中管理 處理器135可利用軟體136模擬來事先取得延伸唯讀記憶體的資料。管理處理器135利用軟體136模擬來傳送觸發(assert)指令至暫存器138_5(例如,觸發暫存器)(步驟S770),暫存器138_3便將延伸唯讀記憶體的資料傳送至計算主機110(步驟S790)。需說明的是,指標器138_2可預先設定指向的記憶體位址,或者,經由交握(handshaking)程序來取得指向的記憶體位址。
接著,請參照圖1及圖7B,圖7B中的橋接器138具備指標器138_2、138_6,橋接器138接收計算主機110傳送的讀取指令,指標器138_2寫入此讀取指令且通知管理主機130,管理處理器135利用軟體136模擬來取得讀取要求,且管理處理器135產生包括對應於讀取要求的資料的回應資料且通知橋接器,指標器138_6讀取回應資料,且橋接器138將回應資料傳送至計算主機110。
請同時參照圖7A及圖7B,圖7B與圖7A不同的地方在於,橋接器138更具備指標器138_6,且在步驟S740之後,管理處理器135利用軟體136模擬將包括對應於延伸唯讀記憶體的資料的回應資料寫入記憶體134(步驟S760)。在步驟S770中傳送觸發指令之後,指標器138_6便向記憶體134取得步驟S760所寫入的包括對應於延伸唯讀記憶體的資料的回應資料。因此,指標器138_6便能提供延伸唯讀記憶體的資料給計算主機110。需說明的是,指標器138_2、138_6可預先設定指向的記憶體位址,或者,經由交握程序來取得指向的記憶體位址。
綜上所述,本發明的延伸唯讀記憶體管理系統、方法及其管理主機利用軟體模擬方式依據位址對照表提供影子暫存區塊中的資料,以回應於計算主機對於延伸唯讀記憶體的尺寸之讀取要求以及配置要求。並且,本發明依據位址對照表提供延伸唯讀記憶體的資料給計算主機。藉此,透過本發明便能使虛擬功能支援延伸唯讀記憶體,以使得管理主機能夠更彈性地運用單根輸入輸出虛擬裝置中的資源。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S310~S370‧‧‧步驟

Claims (30)

  1. 一種延伸唯讀記憶體管理系統,包括:至少一計算主機;以及一管理主機,分別透過至少一橋接器連接至對應的該至少一計算主機,該管理主機具備至少一虛擬功能,該管理主機建立至少一位址對照表以將該至少一虛擬功能及對應於該至少一虛擬功能的至少一延伸唯讀記憶體分配至該至少一計算主機,其中,當該至少一計算主機提出請求以取得該至少一虛擬功能的該至少一延伸唯讀記憶體的尺寸時,該管理主機依據該至少一位址對照表將對應於該至少一延伸唯讀記憶體的至少一影子暫存區塊中的資料提供給該至少一計算主機,該至少一計算主機依據該至少一影子暫存區塊中的資料分配該至少一計算主機中的至少一記憶體區塊給該至少一延伸唯讀記憶體,其中,當該至少一計算主機提出請求以透過該至少一橋接器取得該至少一延伸唯讀記憶體的資料時,該管理主機依據該至少一記憶體區塊提供該至少一延伸唯讀記憶體的資料給該至少一計算主機。
  2. 如申請專利範圍第1項所述的延伸唯讀記憶體管理系統,其中該管理主機將一寫入指令與一遮罩位元進行及運算,且該管理主機將一運算結果作為該至少一影子暫存區塊中的資料以傳送至該至少一計算主機,其中該運算結果代表該至少一虛擬功能位 於該至少一影子暫存區塊中的一虛擬位址暫存器。
  3. 如申請專利範圍第2項所述的延伸唯讀記憶體管理系統,其中該管理主機基於該至少一延伸唯讀記憶體的尺寸來產生該遮罩位元。
  4. 如申請專利範圍第1項所述的延伸唯讀記憶體管理系統,其中各該至少一位址對照表包括一有效狀態、一計算主機編號、一計算主機端的虛擬功能位址、一管理主機端的虛擬功能位址、一過濾狀態、一過濾範圍以及對應的該至少一影子暫存區塊,其中該過濾範圍表示該至少一延伸唯讀記憶體的一暫存器位址,其中,該至少一位址對照表中的該過濾狀態預設為禁能,當該至少一計算主機傳送一寫入指令至該管理主機時,該管理主機依據該寫入指令將該至少一位址對照表中的該過濾狀態設為致能,該管理主機利用軟體模擬將該寫入指令僅寫入該至少一位址對照表中的該至少一影子暫存區塊,該管理主機對對應的該至少一影子暫存區塊中的資料進行運算且依據一運算結果提供對應的該至少一影子暫存區塊中的資料給該至少一計算主機。
  5. 如申請專利範圍第4項所述的延伸唯讀記憶體管理系統,其中各該至少一位址對照表更包括一計算主機端記憶體位址、一管理主機端記憶體位址、一記憶體尺寸及一記憶體位址轉換致能狀態,其中該記憶體尺寸指示該至少一延伸唯讀記憶體的尺寸,其中, 該記憶體位址轉換致能狀態預設為禁能,當該至少一計算主機分配該至少一記憶體區塊給該至少一延伸唯讀記憶體時,該至少一計算主機將一記憶體致能位元設為致能,該管理主機將該至少一記憶體區塊的資料作為該至少一位址對照表中的該計算主機端記憶體位址,且當該過濾狀態、對應的該至少一影子暫存區塊中的資料中的一致能位元以及該記憶體致能位元為致能時,該管理主機將該記憶體位址轉換致能狀態設為致能。
  6. 如申請專利範圍第1項所述的延伸唯讀記憶體管理系統,其中當該至少一計算主機判斷該至少一影子暫存區塊中的資料為有效時,該至少一計算主機依據該至少一影子暫存區塊中的資料計算該至少一延伸唯讀記憶體的尺寸,且該至少一計算主機依據該至少一延伸唯讀記憶體的尺寸分配該至少一記憶體區塊給該至少一延伸唯讀記憶體。
  7. 如申請專利範圍第1項所述的延伸唯讀記憶體管理系統,其中該至少一橋接器具備該至少一位址對照表,當該至少一計算主機傳送一讀取指令時,該至少一橋接器依據該至少一位址對照表讀取該至少一延伸唯讀記憶體的資料,且該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  8. 如申請專利範圍第1項所述的延伸唯讀記憶體管理系統,其中當該至少一計算主機傳送一讀取指令時,該至少一橋接器通知該管理主機,該管理主機利用軟體模擬來讀取該讀取指令且依據該至少一位址對照表將至少一延伸唯讀記憶體的資料傳送至該 至少一橋接器並通知該至少一橋接器,且該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  9. 如申請專利範圍第1項所述的延伸唯讀記憶體管理系統,其中該至少一橋接器具備一指標器,當該至少一計算主機傳送一讀取指令時,該指標器寫入該讀取指令且通知該管理主機,該管理主機利用軟體模擬來取得該至少一延伸唯讀記憶體的資料,且該管理主機傳送該至少一延伸唯讀記憶體的資料至該至少一橋接器並通知該至少一橋接器,且該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  10. 如申請專利範圍第1項所述的延伸唯讀記憶體管理系統,其中該至少一橋接器具備一第一指標器及一第二指標器,當該至少一計算主機傳送一讀取指令時,該第一指標器寫入該讀取指令且通知該管理主機,該管理主機利用軟體模擬來取得該至少一延伸唯讀記憶體的資料,且該管理主機產生包括對應於該至少一延伸唯讀記憶體的資料的一回應資料且通知該至少一橋接器,該第二指標器讀取該回應資料,且該至少一橋接器將該回應資料傳送至該至少一計算主機。
  11. 一種延伸唯讀記憶體管理方法,包括:建立至少一位址對照表以將至少一虛擬功能及對應於該至少一虛擬功能的至少一延伸唯讀記憶體分配至至少一計算主機;當該至少一計算主機提出請求以取得該至少一虛擬功能的該至少一延伸唯讀記憶體的尺寸時,依據該至少一位址對照表將對 應於該至少一延伸唯讀記憶體的至少一影子暫存區塊中的資料提供給該至少一計算主機;該至少一計算主機依據該至少一影子暫存區塊中的資料分配該至少一計算主機中的至少一記憶體區塊給該至少一延伸唯讀記憶體;以及當該至少一計算主機提出請求以透過至少一橋接器取得該至少一延伸唯讀記憶體的資料時,依據該至少一記憶體區塊提供該至少一延伸唯讀記憶體的資料給該至少一計算主機。
  12. 如申請專利範圍第11項所述的管理方法,其中當該至少一計算主機提出請求以取得該至少一虛擬功能的該至少一延伸唯讀記憶體的尺寸時,依據該至少一位址對照表將對應於該至少一延伸唯讀記憶體的該至少一影子暫存區塊中的資料給提供該至少一計算主機的步驟包括:將一寫入指令與一遮罩位元進行及運算;將一運算結果作為該至少一影子暫存區塊中的資料以傳送至該至少一計算主機,其中該運算結果代表該至少一虛擬功能位於該至少一影子暫存區塊中的一虛擬位址暫存器。
  13. 如申請專利範圍第12項所述的管理方法,其中將該寫入指令與該遮罩位元進行及運算之前的步驟,更包括:基於該至少一延伸唯讀記憶體的尺寸來產生該遮罩位元。
  14. 如申請專利範圍第11項所述的管理方法,其中各該至少一位址對照表包括一有效狀態、一計算主機編號、一計算主機端 的虛擬功能位址、一管理主機端的虛擬功能位址、一過濾狀態、一過濾範圍以及對應的該至少一影子暫存區塊,其中該至少一位址對照表中的該過濾狀態預設為禁能,且該過濾範圍表示至少一延伸唯讀記憶體的一暫存器位址,而當該至少一計算主機提出請求以取得該至少一虛擬功能的該至少一延伸唯讀記憶體的尺寸時,依據該至少一位址對照表將對應於該至少一延伸唯讀記憶體的該至少一影子暫存區塊中的資料給提供該至少一計算主機的步驟包括:當接收到來自該至少一計算主機的一寫入指令時,依據該寫入指令將該至少一位址對照表中的該過濾狀態設為致能;利用軟體模擬將該寫入指令僅寫入該至少一位址對照表中的該至少一影子暫存區塊;以及對對應的該至少一影子暫存區塊中的資料進行運算且依據一運算結果提供對應的該至少一影子暫存區塊中的資料給該至少一計算主機。
  15. 如申請專利範圍第14項所述的管理方法,其中各該至少一位址對照表更包括一計算主機端記憶體位址、一管理主機端記憶體位址、一記憶體尺寸及一記憶體位址轉換致能狀態,其中該記憶體位址轉換致能狀態預設為禁能,且該記憶體尺寸指示該至少一延伸唯讀記憶體的尺寸,而該至少一計算主機依據該至少一影子暫存區塊中的資料分配該至少一計算主機中的該至少一記憶體區塊給該至少一延伸唯讀記憶體的步驟包括: 當該至少一計算主機分配該至少一記憶體區塊給該至少一延伸唯讀記憶體時,該至少一計算主機將一記憶體致能位元設為致能;將該至少一記憶體區塊的資料作為該至少一位址對照表中的該計算主機端記憶體位址;以及當該過濾狀態、對應的該至少一影子暫存區塊中的資料中的一致能位元以及該記憶體致能位元為致能時,將該記憶體位址轉換致能狀態設為致能。
  16. 如申請專利範圍第11項所述的管理方法,其中該至少一計算主機依據該至少一影子暫存區塊中的資料分配該至少一計算主機中的該至少一記憶體區塊給該至少一延伸唯讀記憶體的步驟包括:當該至少一計算主機判斷該至少一影子暫存區塊中的資料為有效時,該至少一計算主機依據該至少一影子暫存區塊中的資料計算該至少一延伸唯讀記憶體的尺寸;以及該至少一計算主機依據該至少一延伸唯讀記憶體的尺寸分配該至少一記憶體區塊給該至少一延伸唯讀記憶體。
  17. 如申請專利範圍第11項所述的管理方法,其中該至少一橋接器具備該至少一位址對照表,而當該至少一計算主機提出請求以透過該至少一橋接器取得該至少一延伸唯讀記憶體的資料時,依據該至少一記憶體區塊提供該至少一延伸唯讀記憶體的資料給該至少一計算主機的步驟包括: 接收該至少一計算主機傳送的一讀取指令;透過該至少一橋接器依據該至少一位址對照表讀取該至少一延伸唯讀記憶體的資料;以及透過該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  18. 如申請專利範圍第11項所述的管理方法,其中當該至少一計算主機提出請求以透過該至少一橋接器取得該至少一延伸唯讀記憶體的資料時,依據該至少一記憶體區塊提供該至少一延伸唯讀記憶體的資料給該至少一計算主機的步驟包括:接收該至少一計算主機傳送的一讀取指令;接收該至少一橋接器的通知;利用軟體模擬來讀取該讀取指令且依據該至少一位址對照表將至少一延伸唯讀記憶體的資料傳送至該至少一橋接器且通知該至少一橋接器;以及透過該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  19. 如申請專利範圍第11項所述的管理方法,其中該至少一橋接器具備一指標器,而當該至少一計算主機提出請求以透過該至少一橋接器取得該至少一延伸唯讀記憶體的資料時,依據該至少一記憶體區塊提供該至少一延伸唯讀記憶體的資料給該至少一計算主機的步驟包括:接收該至少一計算主機傳送的一讀取指令; 藉由該指標器寫入該讀取指令且傳送通知;利用軟體模擬來取得該至少一延伸唯讀記憶體的資料;傳送該至少一延伸唯讀記憶體的資料至該至少一橋接器且通知該至少一橋接器;以及透過該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  20. 如申請專利範圍第11項所述的管理方法,其中該至少一橋接器具備一第一指標器及一第二指標器,而當該至少一計算主機提出請求以透過該至少一橋接器取得該至少一延伸唯讀記憶體的資料時,依據該至少一記憶體區塊提供該至少一延伸唯讀記憶體的資料給該至少一計算主機的步驟包括:接收該至少一計算主機傳送的一讀取指令;藉由該第一指標器寫入該讀取指令且傳送通知;利用軟體模擬來取得該至少一延伸唯讀記憶體的資料;產生包括對應於該至少一延伸唯讀記憶體的資料的一回應資料且通知該至少一橋接器;藉由該第二指標器讀取該回應資料;以及該至少一橋接器將該回應資料傳送至該至少一計算主機。
  21. 一種管理主機,包括:一交換器,包括至少一橋接器,其中該至少一橋接器分別耦接至對應的至少一計算主機;一輸入輸出虛擬化裝置,耦接該交換器,具備至少一虛擬功 能;以及一管理處理器,耦接該交換器,建立至少一位址對照表以將該至少一虛擬功能及對應於該至少一虛擬功能的至少一延伸唯讀記憶體分配至該至少一計算主機,其中,當該至少一計算主機提出請求以取得該至少一虛擬功能的該至少一延伸唯讀記憶體的尺寸時,該管理處理器依據該至少一位址對照表將對應於該至少一延伸唯讀記憶體的至少一影子暫存區塊中的資料至該至少一計算主機,該至少一計算主機依據該至少一影子暫存區塊中的資料分配該至少一記憶體區塊給該至少一延伸唯讀記憶體,其中,當該至少一計算主機提出請求以透過該至少一橋接器取得該至少一延伸唯讀記憶體的資料時,該管理處理器依據該至少一記憶體區塊提供該至少一延伸唯讀記憶體的資料給該至少一計算主機。
  22. 如申請專利範圍第21項所述的管理主機,其中該管理處理器將一寫入指令與一遮罩位元進行及運算,且該管理處理器將一運算結果作為該至少一影子暫存區塊中的資料以傳送至該至少一計算主機,其中該運算結果代表該至少一虛擬功能位於該至少一影子暫存區塊中的一虛擬位址暫存器。
  23. 如申請專利範圍第22項所述的管理主機,其中該管理處理器基於該至少一延伸唯讀記憶體的尺寸來產生該遮罩位元。
  24. 如申請專利範圍第21項所述的管理主機,其中各該至少 一位址對照表包括一有效狀態、一計算主機編號、一計算主機端的虛擬功能位址、一管理主機端的虛擬功能位址、一過濾狀態、一過濾範圍以及對應的該至少一影子暫存區塊,其中該過濾範圍表示至少一延伸唯讀記憶體的一暫存器位址,其中,該至少一位址對照表中的該過濾狀態預設為禁能,當該至少一計算主機傳送一寫入指令至該管理主機時,該管理處理器依據該寫入指令將該至少一位址對照表中的該過濾狀態設為致能,該管理處理器利用軟體模擬將該寫入指令僅寫入該至少一位址對照表中的對應的該至少一影子暫存區塊,該管理處理器對對應的該至少一影子暫存區塊中的資料進行運算且依據一運算結果透過該至少一橋接器以提供對應的該至少一影子暫存區塊中的資料給該至少一計算主機。
  25. 如申請專利範圍第24項所述的管理主機,其中各該至少一位址對照表更包括一計算主機端記憶體位址、一管理主機端記憶體位址、一記憶體尺寸及一記憶體位址轉換致能狀態,其中該記憶體尺寸指示該至少一延伸唯讀記憶體的尺寸,其中,該記憶體位址轉換致能狀態預設為禁能,當該至少一計算主機分配該至少一記憶體區塊給該至少一延伸唯讀記憶體時,該至少一計算主機將一記憶體致能位元設為致能,該管理處理器將該至少一記憶體區塊的資料作為該至少一位址對照表中的該計算主機端記憶體位址,且當該過濾狀態、該至少一影子暫存區塊中的資料中一致能位元以及該記憶體致能位元為致能時,該管理處理 器將該記憶體位址轉換致能狀態設為致能。
  26. 如申請專利範圍第21項所述的管理主機,其中當該至少一計算主機判斷該至少一影子暫存區塊中的資料為有效時,該至少一計算主機依據該至少一影子暫存區塊中的資料計算該至少一延伸唯讀記憶體的尺寸,且該至少一計算主機依據該至少一延伸唯讀記憶體的尺寸分配該至少一記憶體區塊給該至少一延伸唯讀記憶體。
  27. 如申請專利範圍第21項所述的管理主機,其中該交換器中的該至少一橋接器具備該至少一位址對照表,當該至少一計算主機傳送一讀取指令時,該至少一橋接器依據該至少一位址對照表讀取該至少一延伸唯讀記憶體的資料,且該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  28. 如申請專利範圍第21項所述的管理主機,其中當該至少一計算主機傳送一讀取指令時,該交換器中的該至少一橋接器通知該管理主機,該管理處理器利用軟體模擬來讀取該讀取指令且依據該至少一位址對照表將至少一延伸唯讀記憶體的資料傳送至該至少一橋接器並通知該至少一橋接器,且該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  29. 如申請專利範圍第21項所述的管理主機,其中該交換器中的該至少一橋接器具備一指標器,當該至少一計算主機傳送一讀取指令時,該指標器寫入該讀取指令且通知該管理主機,該管理處理器利用軟體模擬來取得該至少一延伸唯讀記憶體的資料, 且該管理處理器傳送該至少一延伸唯讀記憶體的資料至該至少一橋接器並通知該至少一橋接器,且該至少一橋接器將該至少一延伸唯讀記憶體的資料傳送至該至少一計算主機。
  30. 如申請專利範圍第21項所述的管理主機,其中該交換器中的該至少一橋接器具備一第一指標器及一第二指標器,當該至少一計算主機傳送一讀取指令時,該第一指標器寫入該讀取指令且通知該管理主機,該管理處理器利用軟體模擬來取得該至少一延伸唯讀記憶體的資料,且該管理處理器產生包括對應於該至少一延伸唯讀記憶體的資料的一回應資料且通知該至少一橋接器,該第二指標器讀取該回應資料,且該至少一橋接器將該回應資料傳送至該至少一計算主機。
TW103115818A 2014-05-02 2014-05-02 延伸唯讀記憶體管理系統、方法及其管理主機 TWI502348B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW103115818A TWI502348B (zh) 2014-05-02 2014-05-02 延伸唯讀記憶體管理系統、方法及其管理主機
US14/463,679 US9423958B2 (en) 2014-05-02 2014-08-20 System and method for managing expansion read-only memory and management host thereof
CN201410519366.XA CN104298535B (zh) 2014-05-02 2014-09-30 延伸只读存储器管理***、方法及其管理主机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW103115818A TWI502348B (zh) 2014-05-02 2014-05-02 延伸唯讀記憶體管理系統、方法及其管理主機

Publications (2)

Publication Number Publication Date
TWI502348B true TWI502348B (zh) 2015-10-01
TW201543216A TW201543216A (zh) 2015-11-16

Family

ID=52318275

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103115818A TWI502348B (zh) 2014-05-02 2014-05-02 延伸唯讀記憶體管理系統、方法及其管理主機

Country Status (3)

Country Link
US (1) US9423958B2 (zh)
CN (1) CN104298535B (zh)
TW (1) TWI502348B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI656444B (zh) * 2015-11-13 2019-04-11 日電平臺股份有限公司 Scope external reference detecting device, method and recording medium

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990282B2 (en) * 2016-04-27 2018-06-05 Oracle International Corporation Address space expander for a processor
CN108959127B (zh) 2018-05-31 2021-02-09 华为技术有限公司 地址转换方法、装置及***
CN109446445B (zh) * 2018-10-23 2022-03-22 北京乐我无限科技有限责任公司 一种资源获取方法及装置
US11573891B2 (en) * 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
KR102456176B1 (ko) 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11429289B2 (en) * 2020-03-27 2022-08-30 Intel Corporation Memory map protection mechanism
CN113806273B (zh) * 2020-06-16 2024-04-09 英业达科技有限公司 快速周边组件互连数据传输控制***
TWI767266B (zh) * 2020-06-30 2022-06-11 神雲科技股份有限公司 基於記憶體對映輸入輸出的記憶體空間自動分配方法
CN113110269A (zh) * 2021-05-31 2021-07-13 上海电气集团股份有限公司 一种通用型中高压电力电子设备控制器
CN113377704B (zh) * 2021-06-11 2022-04-12 上海壁仞智能科技有限公司 人工智能芯片以及数据操作方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130298236A1 (en) * 2012-05-01 2013-11-07 Harris Corporation Systems and methods for identifying, deterring and/or delaying attacks to a network using shadow networking techniques
TW201415225A (zh) * 2012-08-13 2014-04-16 Lsi Corp 矽獨立元件之部分冗餘陣列
TW201415468A (zh) * 2012-09-15 2014-04-16 Lsi Corp 在一非揮發性記憶體中測量平均抹除之記憶體胞損壞

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7873754B2 (en) * 2006-02-17 2011-01-18 International Business Machines Corporation Structure for option ROM characterization
TWI358024B (en) * 2008-01-23 2012-02-11 Phison Electronics Corp Non-volatile memory storage system and method for
US9135044B2 (en) * 2010-10-26 2015-09-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Virtual function boot in multi-root I/O virtualization environments to enable multiple servers to share virtual functions of a storage adapter through a MR-IOV switch
US8521941B2 (en) * 2010-12-28 2013-08-27 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US9411654B2 (en) * 2011-12-16 2016-08-09 International Business Machines Corporation Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation
CN102819447B (zh) * 2012-05-29 2015-06-03 中国科学院计算技术研究所 一种用于多根共享***的直接i/o虚拟化方法和装置
CN103049331B (zh) * 2012-12-06 2015-09-23 华中科技大学 一种虚拟功能的动态调度方法
US9501441B2 (en) * 2013-12-16 2016-11-22 Dell Products, Lp Mechanism to boot multiple hosts from a shared PCIe device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130298236A1 (en) * 2012-05-01 2013-11-07 Harris Corporation Systems and methods for identifying, deterring and/or delaying attacks to a network using shadow networking techniques
TW201415225A (zh) * 2012-08-13 2014-04-16 Lsi Corp 矽獨立元件之部分冗餘陣列
TW201415468A (zh) * 2012-09-15 2014-04-16 Lsi Corp 在一非揮發性記憶體中測量平均抹除之記憶體胞損壞

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI656444B (zh) * 2015-11-13 2019-04-11 日電平臺股份有限公司 Scope external reference detecting device, method and recording medium

Also Published As

Publication number Publication date
TW201543216A (zh) 2015-11-16
CN104298535A (zh) 2015-01-21
US9423958B2 (en) 2016-08-23
CN104298535B (zh) 2017-08-15
US20150317089A1 (en) 2015-11-05

Similar Documents

Publication Publication Date Title
TWI502348B (zh) 延伸唯讀記憶體管理系統、方法及其管理主機
EP2927812B1 (en) Method and apparatus for extending pcie bus domain
TWI556174B (zh) 虛擬功能分配系統、方法及其管理主機
JP5541117B2 (ja) 仮想マシン移行システム、仮想マシン移行プログラム、及び仮想マシン移行方法
US8645594B2 (en) Driver-assisted base address register mapping
US20090133028A1 (en) System and method for management of an iov adapter through a virtual intermediary in a hypervisor with functional management in an iov management partition
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
US20090077297A1 (en) Method and system for dynamically reconfiguring PCIe-cardbus controllers
TW201423422A (zh) 具有PCIe介面的裝置共享系統及方法
JP2010152891A (ja) ヘテロジニアス処理ユニット間での不均一メモリアクセスのためのチップセットサポート
JP6242502B2 (ja) 仮想計算機システムの制御方法及び仮想計算機システム
CN115203101A (zh) PCIe装置及其操作方法
JP7497146B2 (ja) 多数の装置環境でペアリングするfpgaとssdを識別するためのストレージ装置及びコプロセッサを含むシステム及び方法
JP4692912B2 (ja) リソース割り当てシステム、及びリソース割り当て方法
Liao Linux device drivers
Kristiansen et al. Device lending in PCI express networks
TW201351128A (zh) 預啟動執行環境測試裝置、方法及系統
Krause et al. I/O virtualization and sharing
Wong PCI express multi-root switch reconfiguration during system operation
WO2016090577A1 (zh) 计算机及设备访问方法
Zhang et al. HD-IOV: SW-HW Co-designed I/O Virtualization with Scalability and Flexibility for Hyper-Density Cloud
KR20220059906A (ko) 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법
Misono et al. System Software Of A Future Computer System With Mesh Interconnect