TWI684864B - 管理輸入輸出可虛擬化儲存裝置中之功能級重置 - Google Patents

管理輸入輸出可虛擬化儲存裝置中之功能級重置 Download PDF

Info

Publication number
TWI684864B
TWI684864B TW107127474A TW107127474A TWI684864B TW I684864 B TWI684864 B TW I684864B TW 107127474 A TW107127474 A TW 107127474A TW 107127474 A TW107127474 A TW 107127474A TW I684864 B TWI684864 B TW I684864B
Authority
TW
Taiwan
Prior art keywords
flr
functions
command
manager
storage device
Prior art date
Application number
TW107127474A
Other languages
English (en)
Other versions
TW201911054A (zh
Inventor
志敏 丁
桑賈爾 K 歐爾開
Original Assignee
日商東芝記憶體股份有限公司
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 日商東芝記憶體股份有限公司 filed Critical 日商東芝記憶體股份有限公司
Publication of TW201911054A publication Critical patent/TW201911054A/zh
Application granted granted Critical
Publication of TWI684864B publication Critical patent/TWI684864B/zh

Links

Images

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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/0658Controller construction arrangements
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation

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)
  • Quality & Reliability (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一種資料儲存裝置包含一非揮發性半導體記憶體裝置及一固態硬碟控制器,該固態硬碟控制器以通信方式耦接至該非揮發性半導體記憶體裝置且包括一功能級重置管理器。該功能級重置管理器可自一主機系統接收一功能級重置請求、基於該功能級重置請求產生一功能級重置位圖,並向一命令處理管線廣播該功能級重置請求。該功能級重置位圖可指示哪些功能處於一重置狀態。另外,該功能級重置管理器可判定哪些功能處於該重置狀態,並指示該命令處理管線取消與處於該重置狀態之該等功能相關聯的命令。

Description

管理輸入輸出可虛擬化儲存裝置中之功能級重置
本發明係關於資料儲存裝置及用於管理輸入/輸出可虛擬化儲存裝置中之功能級重置請求的方法。
在輸入/輸出(IO)虛擬化之情況下,例如固態硬碟(SSD)之高容量儲存裝置可以在高度虛擬化環境中有效運行。主機環境中之複數個虛擬機(VM)可利用SSD中之不同實體及虛擬功能(VF),並且以一種好像每個VM獨佔訪問整個SSD之方式運行。然而,一直存在關於支援IO虛擬化之SSD所發出之潛在安全性及穩定性的問題。
功能級重置(FLR)使得系統能夠重置正常中止運行或不穩定之功能。若相關聯之VM有故障或為惡意的,則虛擬功能可能會變得不穩定。針對每一功能應用FLR請求,且FLR請求僅影響目標功能。然而,一直以來都希望系統能夠快速且選擇性地中止及清除屬於受重置影響之功能的命令,同時使在其他功能之速度及穩定性方面的影響最小。
本發明係關於一種資料儲存裝置,其包含非揮發性半導體記憶體裝置及SSD控制器,該SSD控制器以通信方式耦接至該非揮發性半導體記憶體裝置且包括FLR管理器。FLR管理器可自主機系統接收FLR請求、基於FLR請求產生FLR位圖、向命令處理管線廣播FLR請求,並指示命令處理管線取消與處於重置狀態之功能相關聯的命令。FLR位圖可指示複數個功能中之哪些功能處於重置狀態。
根據一個實施方案,FLR管理器可判定複數個功能中之哪些功能處於重置狀態。複數個功能中之每一者可與複數個命令中之一個命令相關聯。在一些實施方案中,命令處理管線可取消與複數個功能中處於重置狀態之功能相關聯的命令。
在其他實施方案中,命令處理管線可基於FLR位圖判定複數個功能中之哪些功能處於重置狀態。
在某些實施方案中,FLR管理器可基於以通信方式耦接至FLR管理器之命令計數器而判定複數個功能中之哪些功能處於重置狀態。命令計數器可經組態以針對每一功能儲存命令處理管線中之複數個命令的計數。
根據一些實施方案,FLR管理器可處理與複數個功能中不處於重置狀態之功能相關聯的命令。
在一些實施方案中,主機系統係包含複數個虛擬機之虛擬機主機。根據一個實施方案,複數個功能包含複數個實體功能。在其他實施方案中,複數個功能包含複數個虛擬功能,其中複數個虛擬功能中之每一者與至少一個實體功能相關聯。
在某些實施方案中,FLR管理器經由周邊組件互連高速(PCIe)介面以通信方式耦接至主機系統。
本發明之第二態樣係關於一種管理資料儲存裝置中之FLR的方法。方法包含在FLR管理器處自主機系統接收FLR請求。FLR管理器可在SSD控制器內。方法亦包含在FLR管理器處基於FLR請求產生FLR位圖。FLR位圖可指示複數個功能中之哪些功能處於重置狀態。另外,方法包含自FLR管理器向命令處理管線廣播FLR請求。方法亦包含在命令處理管線處取消與複數個功能中處於重置狀態之功能相關聯的命令。
根據一些實施方案,方法亦包含在命令處理管線處判定複數個功能中之哪些功能處於重置狀態。複數個功能中之每一者可與複數個命令中之一個命令相關聯。
在一些實施方案中,方法亦包含在命令處理管線處基於FLR位圖判定複數個功能中之哪些功能處於重置狀態。
在其他實施方案中,方法亦包含在命令處理管線處基於命令計數器判定複數個功能中之哪些功能處於重置狀態。命令計數器可儲存命令處理管線中之複數個命令的計數。
根據一些實施方案,方法亦包含處理與複數個功能中不處於重置狀態之功能相關聯的命令。
在某些實施方案中,主機系統係包含複數個虛擬機之虛擬機主機。在其他實施方案中,複數個功能包含複數個實體功能。根據一些實施方案,複數個功能包含複數個虛擬功能,其中複數個虛擬功能中之每一者與至少一個實體功能相關聯。
在某些實施方案中,FLR管理器經由PCIe介面與主機系統通信。
圖1展示包含主機系統102及儲存裝置108之計算系統100的示意性圖示。主機系統102以通信方式耦接至儲存裝置108。主機系統102係包含虛擬機104及超管理器106之計算系統。超管理器106管理被稱作虛擬機104之多個獨立電腦系統仿真。虛擬機104在向SSD控制器110發出命令時各自指定不同虛擬功能。儲存裝置108係包含SSD控制器110、緩衝記憶體117及記憶體118之SSD。SSD控制器110包含PCIe介面112、前端114及後端116。儲存裝置108提供非揮發性記憶體功能性供主機系統102使用,且包括非揮發性半導體儲存元件118作為儲存媒體,該非揮發性半導體儲存元件118例如基於NAND之快閃記憶體。緩衝記憶體117充當主機系統102及記憶體116之間的傳輸的高速中間緩衝器。儲存裝置108亦可包括未展示之其他元件,例如供電電路、指示燈電路、溫度感測器、啟動電路、時鐘電路及用於輔助各個功能之其他電路。
SSD控制器110接收並處理來自主機系統102之命令,以便對記憶體118執行操作。來自主機系統102之命令包括針對記憶體118內之位置的讀取或寫入請求及管理命令,例如用於查詢儲存裝置108之特徵集的命令、用於格式化記憶體118的命令、用於創建及修改各種類型之佇列的命令、用於請求各種事件之通知的命令以及各種其他命令。SSD控制器110亦可包括未展示之其他元件。
PCIe介面112包含用於根據已知PCIe標準與主機系統102通信之電路。在另一實施例中,儲存裝置108使用串列進階技術附件(SATA)介面與主機系統102通信。PCIe介面112使得儲存裝置108能夠以相比於SATA介面更快之資料傳輸速度及更大之頻寬來與主機系統102通信。
前端114使用PCIe介面112與主機系統102通信,以接收、組織及處理來自主機系統102之命令及資料。前端114亦使用PCIe介面112在主機系統102及儲存裝置108之間傳輸資料。後端116執行與自前端114接收到之命令相關聯的資料傳輸任務。後端116所執行之任務包括在記憶體118與緩衝記憶體117之間傳輸資料。
記憶體118係在主機系統102請求時儲存資料之非揮發性半導體記憶體。記憶體118包括一或多個基於非揮發性半導體之儲存元件的陣列,該基於非揮發性半導體之儲存元件的一些實例包括非揮發性NAND快閃記憶體、非揮發性NOR快閃記憶體、基於非揮發性DRAM之記憶體、磁阻式隨機存取記憶體(MRAM)及其他類型之記憶體。
緩衝記憶體117用作主機系統102與記憶體118之間的高速緩衝器。緩衝記憶體117可包括DRAM,但是亦可包括基於非揮發性半導體之儲存元件,例如某些應用中之相變記憶體(PCM)、MRAM或電阻式RAM (ReRAM)。藉由前端114將資料自主機系統102傳輸至緩衝記憶體117中。接著,藉由後端116將資料自緩衝記憶體117傳輸至記憶體118。
SSD控制器110內之各種資源可在複數個虛擬功能之間共用。SSD控制器110提供一種主機系統102可藉以組態在虛擬功能之間共用資源之方式的機制。更確切而言,主機系統102可向SSD控制器110傳送命令,以使SSD控制器110改變指配給不同虛擬功能之資源量。
在主機系統102內,超管理器106管理被稱作虛擬機104之多個獨立電腦系統仿真。虛擬機104在向SSD控制器110發出命令時各自指定不同虛擬功能。超管理器106管理虛擬機104之各種功能態樣,包括IO操作。超管理器106向每個不同虛擬機104指派不同虛擬功能號。超管理器106可向特定虛擬機104指派超過一個虛擬功能號,但是不向多個虛擬機104指派同一虛擬功能號。因此,每一虛擬功能被唯一地指配給唯一一個虛擬機104。當虛擬機104產生訪問儲存裝置108之命令時,超管理器106變換命令以包括指配給虛擬機104之虛擬功能號,並使用PCIe介面112向儲存裝置108傳送該命令及虛擬功能號以供處理。
虛擬機104可查詢儲存裝置108以判定指配給與彼虛擬機104相關聯之虛擬功能之資源量。更確切而言,在任何時間,虛擬機104可向儲存裝置108傳送查詢命令,請求關於指配給與虛擬機104相關聯之虛擬功能之資源數量的資訊。作為回應,儲存裝置108傳送指示指配給彼等虛擬功能之每一特定資源之數量的訊息。
圖2展示包含主機客戶端102及儲存裝置108之計算系統200的示意性圖示。計算系統200係計算系統100之示範性實例。主機客戶端102係包含虛擬機104之計算系統。虛擬機104包含提交佇列(SQ)暫存器202及完成佇列(CQ)暫存器204。儲存裝置108係包含PCIe介面112、前端114、FLR管理器206、命令計數器208及FLR位圖210之SSD。為了易於解釋,已經省略圖1中之計算系統100所說明的其他組件。
前端114包含多個功能單元,包括佇列介面212、命令剖析單元214、位址設置單元216及資料傳輸單元218。每一功能單元可含有處理邏輯、暫存器及本端記憶體,並且可偵測某些狀況,例如錯誤狀況及異常。佇列介面212就在儲存於主機系統102內之記憶體中之提交佇列及完成佇列中儲存之命令狀態與主機系統102通信。提交佇列儲存將由SSD控制器110獲取之命令,且完成佇列儲存關於由SSD控制器110完成之命令的資訊。命令剖析單元214剖析或解碼命令以供進一步處理。
位址設置單元216採用由剖析單元214解碼之記憶體編址資訊(呈實體區域頁(PRP)或分散集中清單(SGL)值之形式),並設置記憶體位址以在主機與儲存裝置之間執行資料之DMA傳輸。緩衝記憶體117充當PCIe介面112與後端116之間的中介。資料傳輸單元218執行主機記憶體(藉由PRP/SGL值定位)及本端緩衝記憶體117之間的直接資料傳輸。
儲存裝置108內之一些共用資源包括於佇列介面單元212、命令剖析單元214、位址設置單元216及資料傳輸單元218內。額外資源包括儲存在主機系統102中之提交佇列(SQ)暫存器202及完成佇列(CQ)暫存器204。SQ暫存器202儲存將由儲存裝置108獲取之命令標識符、操作碼及緩衝位址參數。CQ暫存器204儲存標記(reference)已由儲存裝置104完成之命令之命令狀態。
FLR管理器206充當在利用許多VF運行時確保系統穩定性之監督者。一或多個VF可因為與VF相關聯之VM 104出現故障或有惡意而變得不穩定,並且可進入及脫離重置。FLR管理器206將確保一個VM 104及/或相關聯之VF之不良穩定性不會漸漸損害其他VF之穩定性,即使其共用SSD上之資源池亦如此。
FLR管理器206偵測FLR請求並針對每一功能向前端114之處理子單元、佇列介面單元212、命令剖析單元214、位址設置單元216及資料傳輸單元218報告此類請求。接著,前端114之每一處理子單元將快速且選擇性地中止或捨棄受影響VF之命令/工作負荷,同時繼續處理不受影響之VF的命令。使用命令處理系統300以管線化方式完成不同VF之工作負荷的處理,此在下文描述。
FLR管理器206針對每一VF經由PCIe介面112自主機系統102接收FLR請求。FLR管理器206繼續請求命令處理系統300清除或排空屬於管線中受影響VF之所有命令,並重置與受影響VF相關聯之處理區塊的操作狀態。FLR管理器206亦停用與受影響功能相關聯之佇列。當FLR管理器206結束此程序並判定所有受影響命令在命令處理系統300中已排空時,FLR管理器206使用PCIe介面112向主機系統102發送FLR完成指示符。接著,主機系統102可重新啟用受影響VF。
FLR管理器206首先藉由偵測經由PCIe介面112來自主機系統102之FLR請求來實現此操作。若存在多個FLR請求,則FLR管理器206可對FLR請求進行優先化及串列化。接著,FLR管理器206經由專用匯流排向前端114之所有處理子單元廣播FLR請求。較佳廣播FLR請求之專用匯流排,但是可存在其他執行廣播之方式。FLR位圖210對處於重置之功能進行編碼。FLR管理器206在接收FLR請求後更新FLR位圖210以維持處於重置之功能的記錄。前端114之所有處理子單元皆可訪問FLR位圖210。在一些實施例中,前端114之每一處理子單元維持其自己的FLR位圖210。命令計數器208維持針對每一功能在管線中處理多少個命令之記錄。
圖3展示包含管線302之命令處理系統300的示意性圖示。管線302包含多個階段,包括階段1 304、階段2 310、階段3 312及階段4 314。每一階段304、310、312及314包含多個命令區塊3061-N 。管線302亦可在每一階段304、310、312及314之間包含FLR檢查點308。
使用命令處理系統300以管線化方式在多個階段中處理與不同VF相關聯之命令。例如,當與第一VF相關聯之第一命令佔用階段1 304之命令區塊306時,與第二VF相關聯之第二命令佔用階段2 310之命令區塊306。
當命令進入管線302時,圖2中所展示之命令計數器208將進行更新(遞增)以反映特定VF之命令處理系統300中之命令的增加量。類似地,當命令離開管線302時,命令計數器208將進行更新(遞減)以反映特定VF之命令處理系統300中之命令的減少量。
在管線302之每一階段之後存在FLR檢查點308。在一些實施例中,可存在管線302之一些階段之後沒有FLR檢查點308。當命令使用FLR位圖210自前一階段進入一個階段時,FLR檢查點308將檢查命令。例如,若命令離開階段1 304並進入階段2 310,則FLR檢查點308將在命令進入階段2 310之前進行檢查。若命令屬於處於重置之功能,則命令將自管線302中刪除。若命令已經自管線302中刪除,則已經被刪除之命令被視為已經離開管線302。此事件將使命令計數器208更新以反映該VF之命令處理系統300中之命令的減少量。
FLR管理器206監測命令計數器208以判定FLR請求是否已完成。當已接收到FLR請求之給定VF之命令計數器208達到零時,FLR程序被視為已完成。若FLR程序結束,則FLR管理器206使用PCIe介面112向主機系統102告知FLR完成狀態。
在FLR請求之處理期間,藉由清除管線302中受FLR影響之所有命令,減小繼續處理受FLR影響之命令的機率。此減小了系統因為出現故障之VF及其相關聯之VM 104而鎖定的機率。另外,FLR管理器206將釋放資源以處理屬於處於健康狀態之VF的其他命令。
圖4中說明使用計算系統200及命令處理系統300管理FLR之程序400。程序400開始於步驟402,自主機客戶端102向儲存裝置108發送FLR請求。例如,與主機系統102之VM 104相關聯之VF可為不穩定的。主機系統102向儲存裝置108發送不穩定VF之FLR請求,以阻止處理與故障VF相關聯之命令。
程序400繼續進行至在步驟404中,自PCIe介面112向FLR管理器206發送FLR請求。例如,PCIe介面112可使用資料匯流排以通信方式耦接至FLR管理器206。可針對每一VF自PCIe介面112向FLR管理器206發送FLR請求。
程序400繼續進行至在步驟406中,在FLR管理器206處偵測FLR請求。例如,FLR管理器206偵測經由PCIe介面112來自主機系統102之FLR請求。在一些實施例中,FLR管理器206針對每一VF經由PCIe介面112自主機系統102接收FLR請求。
程序400繼續進行至在步驟408中,在FLR管理器206處對FLR進行判優及串列化。例如,若超過一個FLR請求同時被發送至FLR管理器206,則FLR管理器206在接收FLR請求後可判定FLR請求之優先級。此外,FLR管理器206可產生指示哪些VF與FLR請求相關聯之FLR位圖210。FLR位圖210對處於重置之功能進行編碼。
程序400繼續進行至在步驟410中,更新來自FLR管理器206之FLR位圖210。例如,FLR管理器206在接收FLR請求後更新FLR位圖210,以維持處於重置之功能的記錄。在下文描述程序500時進一步描述步驟410。
程序400繼續進行至在步驟412中,自FLR管理器206向命令處理管線302廣播FLR。例如,FLR管理器206可經由專用匯流排向前端114之所有處理子單元、佇列介面單元212、命令剖析單元214、位址設置單元216及資料傳輸單元218廣播FLR請求。在一些實施例中,FLR管理器206針對每一功能向前端114之處理子單元報告此類FLR請求。
程序400繼續進行至在步驟414中,比較命令處理管線302與FLR位圖210。例如,若佔用命令區塊306之命令與受影響VF相關聯,則FLR管理器206可比較命令區塊306之位置與FLR位圖210,以判定當前哪一命令區塊306被受影響命令佔用。
程序400結束於步驟416,取消命令處理管線302中受FLR影響之命令。例如,前端114之每一處理子單元可選擇性地中止或捨棄受影響VF之命令/工作負荷,同時繼續處理不受影響之VF的命令。例如,當命令使用FLR位圖210自前一階段進入一個階段時,FLR檢查點308將檢查命令。若命令離開階段1 304並進入階段2 310,則FLR檢查點308將在命令進入階段2 310之前進行檢查。若命令屬於處於重置之功能,則命令將自管線302中刪除。若命令已經自管線302中刪除,則已經被刪除之命令被視為已經離開管線302。
圖5中說明使用計算系統200及命令處理系統300管理命令計數器208之程序500。程序500開始於步驟502,更新命令計數器208。例如,命令計數器208維持針對每一功能在管線中處理多少個命令之記錄。
程序500繼續進行至在步驟504中,判定命令計數器208是否已達到零。例如,FLR管理器206監測命令計數器208以判定FLR請求是否已完成。當已接收到FLR請求之給定VF的命令計數器208達到零時,FLR程序被視為已完成。若命令計數器208已達到零,則程序500繼續進行至步驟506。否則,程序500繼續進行至步驟508。
程序500繼續進行至在步驟506中,終止FLR請求。例如,當已接收到FLR請求之給定VF的命令計數器208達到零時,FLR程序被視為已完成。若FLR程序結束,則FLR管理器206使用PCIe介面112向主機系統102告知FLR完成狀態。
程序500繼續進行至在步驟508中,判定與FLR相關聯之命令是否已進入命令處理管線302。例如,當命令進入管線302並佔用命令區塊306時,FLR管理器206可更新命令計數器208以反映特定VF之命令處理系統300中之命令的增加量。若與FLR相關聯之命令已進入命令處理管線302,則程序500繼續進行至步驟510。否則,程序500繼續進行至步驟512。
程序500繼續進行至在步驟510中,增加命令計數器208。例如,當命令進入管線302時,命令計數器208將進行更新以反映特定VF之命令處理系統300中之命令的增加量。
程序500繼續進行至在步驟512中,判定與FLR相關聯之命令是否已離開命令處理管線302。例如,當命令離開管線302時,FLR管理器206可更新命令計數器208以反映特定VF之命令處理系統300中之命令的減少量。若與FLR相關聯之命令已離開命令處理管線302,則程序500前進至步驟514。否則,程序500前進至步驟516。
程序500繼續進行至在步驟514中,減少命令計數器208。例如,當命令離開管線302時,命令計數器208將進行更新以反映特定VF之命令處理系統300中之命令的減少量。
程序500繼續進行至在步驟516中,判定與FLR相關聯之命令是否已被取消。例如,當命令使用FLR位圖210自前一階段進入一個階段時,FLR檢查點308將檢查命令。若命令離開階段1 304並進入階段2 310,則,FLR檢查點308將在命令進入階段2 310之前進行檢查。若命令屬於處於重置之功能,則命令將自管線302中刪除。若命令已經自管線302中刪除,則已經被刪除之命令被視為已離開管線302。若與FLR相關聯之命令已被取消,則程序500前進至步驟518。否則,程序500前進至步驟502。
程序500結束於步驟518,減少命令計數器208。例如,若命令已經自管線302中刪除,則已經被刪除之命令被視為已離開管線302。此事件將使命令計數器208進行更新以反映該VF之命令處理系統300中之命令的減少量。
在步驟510、514及518之後,程序500前進至步驟502,以更新命令計數器208。執行此操作以便命令計數器208維持針對每一功能在管線中處理多少個命令之記錄。
熟習本發明領域者將清楚本發明之各個態樣的其他目標、優勢及實施例,且其在本描述內容及附圖之範疇內。例如但不限於,結構或功能元件可根據本發明重新配置。類似地,根據本發明之原理可應用至即使本文中未具體地詳細描述但仍在本發明之範疇內的其他實例。
100‧‧‧計算系統102‧‧‧主機系統/主機客戶端104‧‧‧虛擬機106‧‧‧超管理器108‧‧‧儲存裝置110‧‧‧SSD控制器112‧‧‧PCIe介面114‧‧‧前端116‧‧‧後端117‧‧‧緩衝記憶體118‧‧‧記憶體200‧‧‧計算系統202‧‧‧提交佇列(SQ)暫存器204‧‧‧完成佇列(CQ)暫存器206‧‧‧FLR管理器208‧‧‧命令計數器210‧‧‧FLR位圖212‧‧‧佇列介面214‧‧‧命令剖析單元216‧‧‧位址設置單元218‧‧‧資料傳輸單元300‧‧‧命令處理系統302‧‧‧管線304‧‧‧階段13061‧‧‧命令區塊3062‧‧‧命令區塊3063‧‧‧命令區塊3064‧‧‧命令區塊3065‧‧‧命令區塊3066‧‧‧命令區塊3067‧‧‧命令區塊3068‧‧‧命令區塊3069‧‧‧命令區塊30610‧‧‧命令區塊30611‧‧‧命令區塊30612‧‧‧命令區塊30613‧‧‧命令區塊30614‧‧‧命令區塊30615‧‧‧命令區塊306N‧‧‧命令區塊308‧‧‧FLR檢查點310‧‧‧階段2312‧‧‧階段3314‧‧‧階段4400‧‧‧程序402‧‧‧步驟404‧‧‧步驟406‧‧‧步驟408‧‧‧步驟410‧‧‧步驟412‧‧‧步驟414‧‧‧步驟416‧‧‧步驟500‧‧‧程序502‧‧‧步驟504‧‧‧步驟506‧‧‧步驟508‧‧‧步驟510‧‧‧步驟512‧‧‧步驟514‧‧‧步驟516‧‧‧步驟518‧‧‧步驟
在結合附圖考慮以下詳細描述後,前述以及其他目標及優勢將為顯而易見的,在所有附圖中相同參考標號指代相同部件,且其中:
圖1展示根據本發明之一或多個實施例組態之資料儲存裝置的示意性圖示;
圖2展示根據本發明之實施例之資料儲存裝置的示意性圖示;
圖3展示根據本發明之一或多個實施例組態之命令處理管線的示意性圖示;
圖4係根據本發明之實施例的用於管理資料儲存裝置中之FLR之方法步驟的流程圖;
圖5係根據本發明之一或多個實施例組態之用於更新命令計數器之方法步驟的流程圖;
100‧‧‧計算系統
102‧‧‧主機系統/主機客戶端
104‧‧‧虛擬機
106‧‧‧超管理器
108‧‧‧儲存裝置
110‧‧‧SSD控制器
112‧‧‧PCIe介面
114‧‧‧前端
116‧‧‧後端
117‧‧‧緩衝記憶體
118‧‧‧記憶體

Claims (20)

  1. 一種資料儲存裝置,其包含: 一非揮發性半導體記憶體裝置;以及 一固態硬碟(SSD)控制器,其以通信方式耦接至該非揮發性半導體記憶體裝置且包括一功能級重置(FLR)管理器,該功能級重置(FLR)管理器經組態以: 自一主機系統接收一FLR請求; 回應於接收到一FLR請求,基於該FLR請求產生一FLR位圖,其中該FLR位圖指示複數個功能中之哪些功能處於一重置狀態; 向一命令處理管線廣播該FLR請求;以及 指示該命令處理管線取消與該複數個功能中處於該重置狀態之該等功能相關聯的命令。
  2. 如請求項1之資料儲存裝置,其中該SSD控制器經進一步組態以: 基於該FLR位圖,判定該複數個功能中之哪些功能處於該重置狀態,其中該複數個功能中之每一者與複數個命令中之一命令相關聯。
  3. 如請求項1之資料儲存裝置,其中該命令處理管線包含複數個FLR檢查點,並且其中該SSD控制器經進一步組態以: 指示該命令處理管線在每一FLR檢查點處取消與該複數個功能中處於該重置狀態之該等功能相關聯的命令。
  4. 如請求項2之資料儲存裝置,其中該SSD控制器進一步包含以通信方式耦接至該FLR管理器之一命令計數器,其中該判定進一步基於該命令計數器。
  5. 如請求項4之資料儲存裝置,其中該命令計數器經組態以針對該複數個功能中之每一功能儲存該命令處理管線中之該複數個命令的一計數。
  6. 如請求項1之資料儲存裝置,其中該SSD控制器經進一步組態以處理與該複數個功能中不處於該重置狀態之功能相關聯的命令。
  7. 如請求項1之資料儲存裝置,其中該主機系統係包含複數個虛擬機的一虛擬機主機。
  8. 如請求項1之資料儲存裝置,其中該複數個功能包含複數個實體功能。
  9. 如請求項8之資料儲存裝置,其中該複數個功能進一步包含複數個虛擬功能,其中該複數個虛擬功能中之每一者與至少一個實體功能相關聯。
  10. 如請求項1之資料儲存裝置,其中該FLR管理器經由一周邊組件互連高速(PCIe)介面以通信方式耦接至該主機系統。
  11. 一種管理一資料儲存裝置中之一功能級重置(FLR)的方法,該方法包含: 在一FLR管理器處自一主機系統接收一FLR請求,其中該FLR管理器在一固態硬碟(SSD)控制器內; 回應於接收到該FLR請求,在該FLR管理器處基於該FLR請求產生一FLR位圖,其中該FLR位圖指示複數個功能中之哪些功能處於一重置狀態; 自該FLR管理器向一命令處理管線廣播該FLR請求;以及 在該命令處理管線處取消與該複數個功能中處於該重置狀態之該等功能相關聯的命令。
  12. 如請求項11之方法,其進一步包含: 基於該FLR位圖,在該命令處理管線處判定該複數個功能中之哪些功能處於該重置狀態,其中該複數個功能中之每一者與複數個命令中之一命令相關聯。
  13. 如請求項11之方法,其中該命令處理管線包含複數個FLR檢查點,該方法進一步包含: 指示該命令處理管線在每一FLR檢查點處取消與該複數個功能中處於該重置狀態之該等功能相關聯的命令。
  14. 如請求項12之方法,其中該判定進一步基於以通信方式耦接至該FLR管理器之一命令計數器。
  15. 如請求項14之方法,其中該命令計數器針對該複數個功能中之每一功能儲存該命令處理管線中之該複數個命令的一計數。
  16. 如請求項12之方法,其進一步包含處理與該複數個功能中不處於該重置狀態之功能相關聯的命令。
  17. 如請求項11之方法,其中該主機系統係包含複數個虛擬機之一虛擬機主機。
  18. 如請求項11之方法,其中該複數個功能包含複數個實體功能。
  19. 如請求項11之方法,其中該複數個功能包含複數個虛擬功能,其中該複數個虛擬功能中之每一者與至少一個實體功能相關聯。
  20. 如請求項11之方法,其中該FLR管理器經由一周邊組件互連高速(PCIe)介面與該主機系統通信。
TW107127474A 2017-08-08 2018-08-07 管理輸入輸出可虛擬化儲存裝置中之功能級重置 TWI684864B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/671,436 US10908998B2 (en) 2017-08-08 2017-08-08 Managing function level reset in an IO virtualization-enabled storage device
US15/671,436 2017-08-08

Publications (2)

Publication Number Publication Date
TW201911054A TW201911054A (zh) 2019-03-16
TWI684864B true TWI684864B (zh) 2020-02-11

Family

ID=63407033

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107127474A TWI684864B (zh) 2017-08-08 2018-08-07 管理輸入輸出可虛擬化儲存裝置中之功能級重置

Country Status (4)

Country Link
US (1) US10908998B2 (zh)
EP (1) EP3441870B1 (zh)
CN (1) CN109388340B (zh)
TW (1) TWI684864B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11074013B2 (en) 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
CN111831388A (zh) * 2019-04-17 2020-10-27 Ati科技无限责任公司 用于过多虚拟机请求的事件保护
CN111338895B (zh) * 2020-02-22 2023-01-10 苏州浪潮智能科技有限公司 一种基于位图的状态管理方法、装置、设备和介质
EP4309168A1 (en) * 2021-04-27 2024-01-24 ARK Engineering & Technical Services Inc. Reduced footprint ssd with test station for an underground pipeline
US11640335B2 (en) 2021-06-15 2023-05-02 Western Digital Technologies, Inc. Multiple function level reset management
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201235947A (en) * 2010-12-21 2012-09-01 Ibm Method for virtual machine management and system supporting the same
TW201237619A (en) * 2010-12-25 2012-09-16 Intel Corp Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
TW201543230A (zh) * 2014-03-27 2015-11-16 Intel Corp 用於實施安全視訊輸出路徑的硬體輔助虛擬化
TW201602806A (zh) * 2014-03-18 2016-01-16 萬國商業機器公司 架構模式組態

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7013383B2 (en) * 2003-06-24 2006-03-14 Via-Cyrix, Inc. Apparatus and method for managing a processor pipeline in response to exceptions
JP4182486B2 (ja) 2004-12-20 2008-11-19 日本電気株式会社 フォールト・トレラント・コンピュータ・リセット方法及びそのシステム
US20070240018A1 (en) * 2005-12-29 2007-10-11 Intel Corporation Functional level reset on a per device/function basis
US8898261B1 (en) * 2007-07-02 2014-11-25 Emc Corporation Configuring agent services operable by agents in a storage area network
JP5182771B2 (ja) * 2008-04-02 2013-04-17 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 共有i/oにおけるリセットの変換
US8176304B2 (en) 2008-10-22 2012-05-08 Oracle America, Inc. Mechanism for performing function level reset in an I/O device
US8527745B2 (en) 2009-12-07 2013-09-03 Oracle America, Inc. Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
US8677030B2 (en) * 2009-12-09 2014-03-18 Oracle America, Inc. Apparatus and method for managing packet classification tables
US8271716B2 (en) 2010-02-01 2012-09-18 Oracle America, Inc. Virtualization of an input/output device for supporting multiple hosts and functions by using an ingress manager for accepting into a buffer communications identified by functions hosted by a single host
US8543754B2 (en) * 2011-02-25 2013-09-24 International Business Machines Corporation Low latency precedence ordering in a PCI express multiple root I/O virtualization environment
KR101438716B1 (ko) * 2011-08-09 2014-09-11 엘에스아이 코포레이션 I/o 디바이스 및 컴퓨팅 호스팅 상호동작
CN103200204A (zh) * 2012-01-04 2013-07-10 中兴通讯股份有限公司 基于云存储的分布式转码系统及其方法
US9047208B1 (en) 2012-12-10 2015-06-02 Qlogic, Corporation Method and system of configuring virtual function in peripheral devices
US9201682B2 (en) 2013-06-21 2015-12-01 Ati Technologies Ulc Virtualized device reset
JP6307847B2 (ja) 2013-11-19 2018-04-11 富士通株式会社 情報処理装置,制御装置及び制御プログラム
WO2016057315A1 (en) 2014-10-05 2016-04-14 Amazon Technologies, Inc. Emulated endpoint configuration
US10551902B2 (en) * 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201235947A (en) * 2010-12-21 2012-09-01 Ibm Method for virtual machine management and system supporting the same
TW201237619A (en) * 2010-12-25 2012-09-16 Intel Corp Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
TW201602806A (zh) * 2014-03-18 2016-01-16 萬國商業機器公司 架構模式組態
TW201543230A (zh) * 2014-03-27 2015-11-16 Intel Corp 用於實施安全視訊輸出路徑的硬體輔助虛擬化

Also Published As

Publication number Publication date
EP3441870B1 (en) 2023-10-04
EP3441870A1 (en) 2019-02-13
TW201911054A (zh) 2019-03-16
US20190050295A1 (en) 2019-02-14
CN109388340B (zh) 2022-06-03
US10908998B2 (en) 2021-02-02
CN109388340A (zh) 2019-02-26

Similar Documents

Publication Publication Date Title
TWI684864B (zh) 管理輸入輸出可虛擬化儲存裝置中之功能級重置
US10649815B2 (en) Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
KR102259249B1 (ko) Ssd 스토리지 시스템들에서 독출 레이턴시 바운드를 위한 방법
US10133668B2 (en) Technologies for providing cross data storage device communications
US9015268B2 (en) Remote direct storage access
US10248322B2 (en) Memory system
US20150089287A1 (en) Event-triggered storage of data to non-volatile memory
KR20180016679A (ko) 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US11119691B1 (en) Method and apparatus to perform a function level reset in a memory controller
US10956189B2 (en) Methods for managing virtualized remote direct memory access devices
CN110647359B (zh) 半导体装置、其操作方法和具有其的层叠存储装置
US10282103B1 (en) Method and apparatus to delete a command queue
US20190155765A1 (en) Operation method of host system including storage device and operation method of storage device controller
TWI824837B (zh) 記憶體系統
US9448845B2 (en) Extendible input/output data mechanism for accelerators
JP6868087B2 (ja) 管理コントローラへの通信チャネルの方法及びシステム
US10180800B2 (en) Automated secure data and firmware migration between removable storage devices that supports boot partitions and replay protected memory blocks
US8924644B2 (en) Extending cache in a multi-processor computer
JP2018181305A (ja) プールされた物理リソースのローカルディスク消去メカニズム
KR20230035811A (ko) 데이터 처리 시스템 내 공유된 메모리 공간을 제어하기 위한 장치 및 방법
US10394673B2 (en) Method and system for hardware accelerated copyback
US20220011939A1 (en) Technologies for memory mirroring across an interconnect
TW202407547A (zh) 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法