TWI840795B - 主機系統及其操作方法 - Google Patents
主機系統及其操作方法 Download PDFInfo
- Publication number
- TWI840795B TWI840795B TW111116199A TW111116199A TWI840795B TW I840795 B TWI840795 B TW I840795B TW 111116199 A TW111116199 A TW 111116199A TW 111116199 A TW111116199 A TW 111116199A TW I840795 B TWI840795 B TW I840795B
- Authority
- TW
- Taiwan
- Prior art keywords
- host
- storage device
- acquisition
- host controller
- enable
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明公開了一種主機系統及其操作方法,該方法包括:由主機控制器檢測到主機驅動器已禁用提交佇列(SQ)的啟用指示符;停止從SQ的進一步獲取;將已經從SQ獲取的所有條目發送到與主機系統耦接的存儲設備;以及由主機控制器設置SQ的狀態指示符以指示SQ的停止獲取。本發明中可以改進對主機系統和存儲設備之間資料傳輸的管理。
Description
本發明涉及一種存儲設備(storage device),更具體地,涉及主機(host)和存儲設備之間資料傳輸的管理。
電子系統通常包括耦接到存儲設備的主機。主機和存儲設備通過介面互連,介面可例如通用快閃記憶體(Universal Flash Storage,UFS)介面、串列高級技術附件(Serial Advanced Technology Attachment,SATA)介面、小型電腦小型介面(Small Computer Small Interface,SCSI)、串列連接SCSI(Serial Attached SCSI,SAS)、嵌入式多媒體卡(embedded Multi-Media Card,eMMC)介面等。
UFS介面主要用於主機和非易失性記憶體(non-volatile memory,NVM)存儲設備之間的移動系統。主機包括主機控制器,其用於負責管理主機系統和UFS存儲設備之間的資料傳輸。
當電子系統中發生錯誤情況時,主機系統可以中止資料傳輸命令(data transfer command)。例如,錯誤情況可能由軟體崩潰、電氣或網路問題、或運行時的其他異常引起。但是,在a)主機控制器向存儲設備發送將要被中止的命令和b)存儲設備對主機系統詢問存儲設備是否已收到該命令進行回應之間,可能會出現競爭狀態。存儲設備是否接收到該將要中止的命令並不確定。當主機控制器已獲取該命令但太忙而沒有將其發送到存儲設備時,可能會發生這種情況。在存在這種不確定性的情況下,主機系統可能會反復詢問存儲設備以檢查存儲設備是否已經接收到命令。重複詢問可能導致主機和存儲設備之間的延遲和資料傳輸的增加。因此,需要對主機和存儲設備之間資料傳輸的管理進行改進。
有鑑於此,本發明提供了一種主機系統及其操作方法,用於對主機系統和存儲設備之間資料傳輸的管理進行改進。
在一個實施例中,提供了一種主機系統的操作方法,包括:由主機控制器檢測到主機驅動器已禁用提交佇列(SQ)的啟用指示符;停止從所述SQ的進一步獲取;將已經從所述SQ獲取的所有條目發送到與所述主機系統耦接的存儲設備;以及由所述主機控制器設置所述SQ的狀態指示符以指示所述SQ的停止獲取。
在另一實施例中,提供了一種主機系統,包括主機控制器、用於執行主機驅動器的操作的一個或多個處理器、以及用於存儲所述主機驅動器和多個SQ的記憶體,其中所述主機控制器用於:檢測所述主機驅動器已禁用所述SQ的啟用指示符;停止從所述SQ進一步獲取;將已從所述SQ獲取的所有條目發送到與所述主機系統耦接的存儲設備;以及設置所述SQ的狀態指示符以指示所述SQ的停止獲取。
本發明中通過SQ的啟用指示符和狀態指示符,當主機驅動器中止了命令並且該命令已被從 SQ取出時,主機驅動器可以確保該命令已發送到存儲設備,無需重複查詢存儲設備以確認命令被接收。因而改進了對主機系統和存儲設備之間資料傳輸的管理。
其他方面和特徵對於本領域習知技藝者來說,在結合附圖閱讀以下具體實施例的描述時將變得顯而易見。
在以下描述中,闡述了許多具體細節。然而,應當理解,可以在沒有這些具體細節的情況下實踐本發明的實施例。在其他情況下,未詳細示出眾所周知的電路、結構和技術,以免混淆對本發明的理解。然而,本領域的技術人員將理解,本發明可以在沒有這些具體細節的情況下實施。本領域習知技藝者通過本發明的描述將能夠實現適當的功能,而無需過度實驗。
本發明的實施例為主機驅動器(host driver)提供了硬體支援以中止發送給存儲系統的命令。主機驅動器位於耦接到存儲設備的主機系統中。主機驅動器中提供有多個寄存器來檢查命令是否已發送到存儲設備。還提供了使用這些寄存器的方法。這些方法定義了主機系統中的主機驅動器和主機硬體要遵循的步驟。
在一個實施例中,可以由一組提交佇列(submission queue,SQ)啟用指示符(enable indicators)和一組SQ狀態指示符(status indicators)來實現硬體支援。這些指示符可以存儲在主機系統的寄存器中。對於每個 SQ,SQ啟用寄存器(SQ enable register)存儲1位元值 (SQx.Enable) 作為啟用指示符,SQ狀態寄存器存儲1位元值 (SQx.Status)作為狀態指示符。通過更改 SQx.Enable的位元值,主機驅動器可以啟用或禁用主機控制器從相應SQ進一步獲取命令。通過改變SQx.Status的位元值,主機控制器可以向主機驅動器確保已從SQ獲取的或正在從SQ獲取的所有命令都被發送到存儲設備。因此,當主機驅動器中止了命令並且該命令已被從 SQ取出時,主機驅動器可以確保該命令已發送到存儲設備。因此,無需重複查詢存儲設備以確認命令被接收。
第1圖是示出根據本發明實施例耦接到存儲設備150 (也稱為設備)的主機系統100的框圖。主機系統100包括主機驅動器130和應用軟體140。主機驅動器130和應用軟體140可以存儲在主機系統100的主機記憶體110中。主機記憶體110可以包括諸如動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態 RAM (static RAM,SRAM) 和/或其他易失性和非易失性記憶體的記憶體設備。主機系統100還包括一個或多個處理器190,例如通用處理器(例如,中央處理單元(CPU)、數位訊號處理器(DSP)、圖形處理單元(GPU)等)和/或專用電路,來執行主機驅動器130和應用軟體140的操作。在一個實施例中,主機系統100可以是多核系統。
主機系統100還包括主機控制器120,用以管理主機系統100和存儲設備150之間的資料傳輸。主機控制器120可以由處理硬體和軟體程式的組合來實現。NVM 記憶體的一個例子是快閃記憶體(flash memory)。在一個實施例中,主機系統100可以集成為片上系統(system-on-a-chip,SOC)。可以理解,為了便於說明,第1圖的實施例已被簡化。還可以包括額外的硬體元件。
存儲設備150包括諸如非易失性記憶體(non-volatile memory,NVM)記憶體160的存儲單元。在一個實施例中,存儲設備150是UFS設備。也就是說,主機控制器120和存儲設備150之間交換的請求、資料和回應,遵循諸如UFS標準的標準。儘管在本發明中描述了UFS,但是應該理解,這裡描述的方法和系統可以應用於其他存儲系統標準。
將主機系統100稱為“主機”,將存儲設備150稱為“設備”,每個UFS命令包括三個階段:請求階段(從主機到設備)、資料登錄/輸出階段(從設備到主機,或從主機到設備)、回應階段(從設備到主機)。在本發明中,當主機取出命令並向設備發送命令時,是命令的請求階段。
在一個實施例中,主機系統100管理主機記憶體110中的多個佇列。多個佇列包括一組提交佇列(submission queue,SQ)125和一組完成佇列(completion queue,CQ)126。主機控制器120和主機驅動器130可以通過這些佇列和一組寄存器123進行通信。對於每個SQ 125,主機驅動器130是生產者(producer)並且主機控制器120是消費者(consumer)。主機驅動器130使用SQ 125向主機控制器120提交命令描述符(command descriptors),指示由存儲設備150要處理的命令。應當理解,為了便於描述,在本發明中“向SQ提交命令”和“從SQ獲取命令”可以分別與“向SQ提交命令描述符”和“從SQ獲取命令描述符”互換使用。命令描述符用於識別命令並指向在主機記憶體110中存儲的命令的指令。
每個SQ 125可以識別CQ 126,其中CQ 126將要接收SQ 125的命令完成通知(command completion notification)。對於每個CQ 126,主機控制器120是生產者而主機驅動器130是消費者。主機控制器120使用CQ 126來向主機驅動器130指示總體命令狀態(overall command status,OCS)。每個CQ條目可以識別出該命令源自哪個SQ、該命令的唯一識別碼、OCS欄位(field)。
例如,主機驅動器130可以通過以命令描述符的形式將命令寫入SQ 125之一,(代表應用軟體140)請求向存儲設備150傳輸資料。主機控制器120可以按照命令被放入SQ的順序,將SQ中的命令發送到存儲設備150。存儲設備150執行命令後,將完成狀態通知主機控制器120。主機控制器120將完成資訊(completion information)發佈在與始發(originating)SQ對應的CQ中,以通知主機驅動器130所請求的資料傳輸的完成。
在一個實施例中,SQ 125和CQ 126都是循環佇列並且統稱為多循環佇列(multi-circular queue,MCQ)。循環佇列使用頭指標和尾指標來跟蹤其當前內容。佇列條目從佇列頭部移除以進行處理,新條目添加到佇列尾部。
在一個實施例中,寄存器123包括SQ啟用寄存器(enable register)170和SQ狀態寄存器(status register)180。SQ啟用寄存器170包括用於每個SQ的1位元SQ啟用指示符,以供主機驅動器130指示SQ的獲取是否被啟用或禁止。SQ狀態寄存器180包括用於每個SQ的1位元SQ狀態指示符,以供主機控制器120確認對應的SQ的獲取正在運行中還是停止。對於每個 SQ,主機驅動器130可以通過設置SQ啟用寄存器 170 中的1位元SQ啟用指示符,來啟用和禁用主機控制器的獲取操作。對於每個 SQ,主機控制器120可以通過設置SQ狀態寄存器180中的 1 位元SQ狀態指示符,將SQ的狀態(例如,停止或運行)通知給主機驅動器130。
第2圖是根據一個實施例例示提交佇列(SQ)210和完成佇列(CQ)220的示意圖。還參考第1圖,SQ 210可以是SQ 125中的任何一個,CQ 220可以是CQ 126中的任何一個。SQ 210和CQ 220都是循環佇列,並且每個佇列使用頭指標和尾指標。頭指標和尾指標可以存儲在第1圖的寄存器123中。主機驅動器130可以向SQ 210添加條目(例如,條目N+3)並更新SQ 210的尾指標以指向添加的條目。主機控制器120可以從SQ 210獲取條目(例如,條目N+1)並且更新SQ 210的頭指標以指向該條目(例如,條目N+1)。
為了描述的簡單,SQ條目以及SQ條目中的命令使用相同的數位索引;例如,條目(entry)N包含命令(Cmd)N。應該理解,索引用於指示佇列中的放置順序。因此,命令N可以是符合預定協議的任何資料傳輸命令或請求。
在一個實施例中,每個SQ具有對應的CQ。在此示例中,CQ 220 是與SQ 210對應的完成佇列。也就是說,在主機控制器 120 向存儲設備150發送命令N並且存儲設備150完成請求的操作之後,主機控制器120用來自存儲設備150的回應來更新CQ 220,以指示命令N的完成。主機控制器120將該回應置於CQ 220的尾部並更新CQ 220的尾指標以指向該回應。
在一個實施例中,當主機驅動器130中止命令N時,主機驅動器130和主機控制器120協調它們關於停止和恢復從SQ 210的獲取的操作。通過SQ 210的啟用指示符(SQx .Enable)和狀態指示符(SQx.Status)來執行協調。SQx中的尾碼“x”表示用於標識SQ的索引。啟用指示符可以存儲在SQ啟用寄存器170中並且狀態指示符可以存儲在SQ狀態寄存器180中。
第3圖是示出根據一個實施例的用於啟用和禁用SQ的獲取的主機系統操作的示意圖。頂部框310包括用於禁止SQ的進一步獲取的步驟,底部框350包括用於啟用SQ的獲取的步驟。還參考第1圖,第3圖中指示的主機驅動器 (HD)可以是主機驅動器130,而主機控制器(HW)可以是主機控制器120。主機驅動器在中止開始時設置 SQx.Enable = 0 ,以阻止主機控制器對SQ的進一步獲取。主機驅動器設置 SQx.Enable = 1 以重新開始SQ的獲取。主機控制器設置 SQx.Status=0 ,以指示所有獲取的命令都已被發送到存儲設備,設置 SQx.Status=1以指示SQ的獲取已經重新開始。
以下描述提供了頂部框310的進一步細節;即SQx.Enable 1→0。在步驟311,當主機驅動器設置啟用指示符SQx.Enable=0時,主機控制器檢測到SQx.Enable寄存器值已從1變為0;即,通過下降沿檢測。在檢測到 SQx.Enable 從1變為0後,主機控制器在步驟 312 完成當前條目的獲取,並在步驟 313 停止進一步獲取SQ條目。主機控制器在步驟 314 發送所有獲取的SQ條目到存儲設備(直到檢測到SQx.Enable 1→0)。然後在步驟315,主機控制器設置SQx.Status=0以指示SQ的獲取已經停止並且所有獲取的SQ條目都已經被發送到存儲設備。
當主機驅動器發起中止命令N並將SQx.Enable從1更改為0時,主機控制器完成對當前命令的獲取並將所有獲取的命令發送到存儲設備。在一個實施例中,獲取和發送的命令包括命令N。在實施例中,命令N即“當前正在執行”。“當前正在執行”是指主機控制器已經獲取或正在獲取該命令。使用 SQx.Enable 1→0 和 SQx.Status = 0 可以為主機驅動器和主機控制器提供關於命令N被提取以及被發送到存儲設備的確定性。
以下描述提供了底部框350的進一步細節;即,SQx.Enable 0→1。在步驟351,主機驅動器設置啟用指示符SQx.Enable=1。當以如下的一種可能的方式處理中止時,啟用指示符將被設置為1,可能的方式可以例如,存儲設備在命令中止發生之前完成了命令N,主機控制器跳過從SQ獲取命令N,或者存儲設備完成了命令N的中止。主機控制器檢測到SQx.Enable從0改變為 1 (例如,通過上升沿檢測),並且在步驟 352 設置 SQx.Status = 1 以指示SQ的獲取已經恢復。然後主機控制器在步驟 353 繼續從 SQ獲取。
應當理解,在替代實施例中,二進位值0和1的含義可以顛倒。例如,啟用指示符值1可以表示禁止獲取,而0可以表示啟用獲取。同樣,狀態指示符值1可以表示停止獲取,而 0 可以表示恢復獲取。
第4圖是例示根據一個實施例的SQ啟用指示符和SQ狀態指示符的使用示例的流程圖400。還參照第1圖,第4圖中的主機控制器和主機驅動器可以分別是第1圖中的主機控制器120和主機驅動器130。如前所述,主機驅動器將SQ條目放在SQ的尾部,主機控制器從SQ的頭部取出SQ條目。在步驟410,主機控制器根據佇列優先順序在多個SQ中選擇一個SQ。在步驟420,主機控制器從選定的SQ中取出一個SQ條目並將該條目移動到內部緩衝器。在步驟430,主機控制器更新SQ頭索引寄存器。主機控制器可以對所有的SQ重複執行步驟410至步驟430。在步驟 410至步驟430期間的某個點,主機驅動器開始中止已從給定 SQ (例如,SQx) 中取出或正在取出的命令N,並將 SQx 的啟用指示符從1變為0(即 SQx.Enable 1→0)以停止從給定SQ 的進一步獲取。主機控制器在步驟440檢測SQx.Enable 1→0。主機控制器完成當前SQ條目的獲取(如果有的話),並停止進一步獲取。在步驟450,主機控制器將所有取出的命令從內部緩衝器發送到存儲設備,並將SQx.Status從1更改為0,以指示在SQx的獲取已經停止並且所有獲取的SQx條目都已發送到存儲設備。
以下步驟描述了存儲設備完成命令中止的場景。在這種情況下,主機驅動器發送任務管理(Task Management)請求以通知存儲設備中止命令N,該命令N由唯一標籤(unique tag)標識。在步驟460,存儲設備接收中止命令N的任務管理請求,並相應地中止命令N。在步驟470,主機系統從存儲設備接收對中止請求的回應。在步驟 480,主機系統清理命令 N 所使用的資源。在步驟 490,主機驅動器將SQ啟用指示符更改為啟用(即 SQx.Enable 0→1),並且主機控制器將SQ狀態更改為運行(即,恢復獲取)。
在步驟 430,頭指標可以指向已被取出或正在被取出的條目。也就是說,頭指標所指向的SQ條目之前的以及包括該SQ條目在內的所有SQ條目都可能已被取出,但可能已被發送到存儲設備,也可能尚未發送到存儲設備。在這種情況下使用SQx.Enable 可確保主機控制器發送出由主機控制器已取出的所有SQ條目。
第5圖是例示根據一個實施例的耦接到存儲設備的主機系統的方法500的流程圖。更具體地,方法500可以由主機控制器回應於SQ的禁用指示來執行。在步驟510,主機控制器檢測到主機驅動器已禁用了SQ的啟用指示符(例如,SQx.Enable 1→0)。在步驟520,主機控制器停止進一步從SQ的獲取。在步驟530,主機控制器將已經從SQ獲取的所有條目發送到存儲設備。在步驟 540,主機控制器設置SQ的狀態寄存器,以指示對SQ的停止獲取(例如,SQx.Status = 0)。
第6圖是例示根據一個實施例的回應於SQ的啟用指示的主機控制器的方法600的流程圖。主機控制器在步驟610檢測到主機驅動器已啟用SQ的啟用指示符(例如,SQx.Enable 0→1)。在步驟620,主機控制器設置SQ的狀態寄存器,以指示SQ的恢復獲取(例如,SQx.Status=1)。在步驟630,主機控制器恢復從SQ獲取條目。
在一個實施例中,當檢測到啟用指示符的禁用時,主機控制器完成正在從SQ獲取的任何條目並將該條目發送到存儲設備。在一個實施例中,在狀態指示符被設置為指示停止獲取之後,主機系統向存儲設備發送中止請求(例如,主機驅動器透過主機控制器要求主機控制器發送中止請求),以中止從SQ獲取並發送到存儲設備的命令。在主機系統(例如,主機控制器)從存儲系統接收到對中止請求的回應後,主機驅動器啟用SQ的啟用指示符。
在一個實施例中,SQ的啟用指示符是可由主機驅動器寫入的1位元值,用於啟用或禁用獲取操作。SQ的狀態指示符是可由主機控制器寫入的1位元值,用於指示停止的或恢復的獲取操作。
在一個實施例中,SQ是循環佇列,並且主機控制器已經獲取了SQ的頭指針之前的所有條目。主機控制器可以通過下降沿或上升沿檢測來檢測啟用指示符中的變化。在一個實施例中,主機控制器根據通用快閃記憶體(Universal Flash Storage,UFS)標準與存儲設備進行通信。
在前面的描述中,主機驅動器被描述為可以是主機軟體的一部分。然而,應該理解,這裡描述的主機驅動器的一些操作可以由主機硬體來執行。例如,主機硬體可以執行主機驅動器的操作以啟用和/或禁用SQ的啟用指示符。
已經參照第1圖的示例性實施例描述了第4圖-第6圖的流程圖的操作。然而,應當理解,第4圖-第6圖的流程圖的操作可以通過第1圖的實施例之外的本發明實施例來執行,第1圖的實施例可以執行與流程圖中所示操作不同的操作。雖然第4圖-第6圖的流程圖示出了由本發明的某些實施例執行的操作的特定順序,但應該理解這種順序是示例性的(例如,替代實施例可以以不同的循序執行操作、組合某些操作、或重複執行某些操作等)。
本文已經描述了各種功能元件、框或模組。如本領域技術人員將理解的,功能塊或模組可以通過包括電晶體的電路(在一個或多個處理器和編碼指令的控制下操作的專用電路或通用電路)來實現,電晶體通常被配置為根據這裡描述的功能和操作來控制電路的操作。
雖然本發明已經根據幾個實施例進行了描述,但是本領域技術人員將認識到本發明不限於所描述的實施例,並且可以在所附權利要求的精神和範圍內進行修改和變更。本說明書被認為是說明性的而不是限制性的。
150:存儲設備
100:主機系統
130:主機驅動器
140:應用軟體
110:主機記憶體
190:處理器
120:主機控制器
160:NVM記憶體
125,210:提交佇列SQ
126,220:完成佇列CQ
123:寄存器
170:SQ啟用寄存器
180:SQ狀態寄存器
310:頂部框
311~315:步驟
350:底部框
351~353:步驟
400:流程圖
410~490:步驟
500,600:方法
510~540,610~630:步驟
本發明通過示例而非限制的方式在附圖的圖中示出,其中相同的附圖標記指示相似的元件。此外,當結合實施例描述特定特徵、結構或特性時,是指在本領域習知技藝者的知識範圍內可以結合其他實施例實現這種特徵、結構或特性。
第1圖是示出根據一個實施例的耦接到存儲系統的主機系統的框圖。
第2圖是示出根據一個實施例的提交佇列(SQ)和完成佇列(CQ)的圖。
第3圖是例示根據一個實施例的用於啟用和禁用SQ獲取的主機系統操作的圖。
第4圖是例示根據一個實施例的SQ啟用指示符和SQ狀態指示符的使用示例的流程圖。
第5圖是示出根據一個實施例的回應於SQ的禁用指示的主機控制器的方法的流程圖。
第6圖是示出根據一個實施例的回應於SQ的啟用指示的主機控制器的方法的流程圖。
500:方法
510~540:步驟
Claims (20)
- 一種主機系統的操作方法,包括:由主機控制器檢測到主機驅動器已禁用提交佇列(SQ)的啟用指示符,其中所述SQ的所述啟用指示符用於指示所述SQ的獲取被啟用或禁用;所述主機控制器停止從所述SQ的進一步獲取;所述主機控制器將已經從所述SQ獲取的所有條目發送到與所述主機系統耦接的存儲設備;以及由所述主機控制器設置所述SQ的狀態指示符以指示所述SQ的停止獲取,其中所述SQ的所述狀態指示符用於指示所述SQ的獲取的停止或恢復。
- 如請求項1之方法,還包括:由所述主機控制器檢測到所述主機驅動器已啟用了所述SQ的所述啟用指示符;由所述主機控制器設置所述SQ的所述狀態指示符,以指示從所述SQ的恢復獲取;以及恢復從所述SQ獲取條目。
- 如請求項1之方法,其中,當檢測到所述啟用指示符的禁用時,所述方法還包括:完成對正在從所述SQ中獲取的條目的獲取;以及將所述條目發送到所述存儲設備。
- 如請求項1之方法,還包括:在所述狀態指示符被設置為停止獲取後,從所述主機系統向所述存儲設備發送中止請求,以中止已從所述SQ獲取並發送給所述存儲設備的命令。
- 如請求項4之方法,其中,在所述主機系統從所述存儲設備接收到對所述中止請求的回應之後,所述主機驅動器啟用所述SQ的所述啟用指示 符。
- 如請求項1之方法,其中所述SQ的所述啟用指示符是由所述主機驅動器可寫入的1位元值。
- 如請求項1之方法,其中,所述SQ的所述狀態指示符是由所述主機控制器可寫入的1位元值。
- 如請求項1之方法,其中,所述SQ是循環佇列,並且所述主機控制器已經獲取在所述SQ的頭指針之前的所有條目。
- 如請求項1之方法,其中,所述主機控制器通過下降沿或上升沿檢測來檢測所述啟用指示符的變化。
- 如請求項1之方法,其中,所述主機控制器根據通用快閃記憶體(UFS)標準與所述存儲設備進行通信。
- 一種主機系統,包括:主機控制器;一個或多個處理器,用於執行主機驅動器的操作;以及記憶體,用於存儲所述主機驅動器和多個SQ,其中所述主機控制器用於:檢測所述主機驅動器已禁用所述SQ的啟用指示符,其中所述SQ的所述啟用指示符用於指示所述SQ的獲取被啟用或禁用;停止從所述SQ進一步獲取;將已從所述SQ獲取的所有條目發送到與所述主機系統耦接的存儲設備;以及設置所述SQ的狀態指示符以指示所述SQ的停止獲取,其中所述SQ的所述狀態指示符用於指示所述SQ的獲取的停止或恢復。
- 如請求項11之主機系統,其中,所述主機控制器還用於:檢測所述主機驅動器已啟用所述SQ的所述啟用指示符; 設置所述SQ的所述狀態指示符以指示從所述SQ的恢復獲取;以及從所述SQ繼續獲取條目。
- 如請求項11之主機系統,其中,所述主機控制器還用於:完成獲取正在從所述SQ中獲取的條目;以及將正在從所述SQ獲取的條目發送到所述存儲設備。
- 如請求項11之主機系統,其中,在所述狀態指示符被設置為停止獲取之後,所述主機系統進一步用於:向所述存儲設備發送中止請求,以中止已從所述SQ獲取並發送到所述存儲設備的命令。
- 如請求項14之主機系統,其中,在所述主機系統從所述存儲設備接收到對所述中止請求的回應之後,啟用所述SQ的所述啟用指示符。
- 如請求項11之主機系統,其中,所述SQ的所述啟用指示符是由所述主機驅動器可寫入的啟用寄存器中的1位元值。
- 如請求項11之主機系統,其中,所述SQ的所述狀態指示符是由所述主機控制器可寫入的狀態寄存器中的1位元值。
- 如請求項11之主機系統,其中,所述SQ是循環佇列,並且所述主機控制器已獲取在所述SQ的頭指針之前的所有條目。
- 如請求項11之主機系統,其中,所述主機控制器通過下降沿或上升沿檢測,來檢測所述啟用指示符的變化。
- 如請求項11之主機系統,其中,所述主機控制器根據UFS標準與所述存儲設備通信。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163180676P | 2021-04-28 | 2021-04-28 | |
| US63/180,676 | 2021-04-28 | ||
| US17/724,286 | 2022-04-19 | ||
| US17/724,286 US12086463B2 (en) | 2021-04-28 | 2022-04-19 | Abort handling by host controller for storage device |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202242645A TW202242645A (zh) | 2022-11-01 |
| TWI840795B true TWI840795B (zh) | 2024-05-01 |
Family
ID=83808405
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111116199A TWI840795B (zh) | 2021-04-28 | 2022-04-28 | 主機系統及其操作方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12086463B2 (zh) |
| CN (1) | CN115407930B (zh) |
| TW (1) | TWI840795B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2024179958A (ja) | 2023-06-16 | 2024-12-26 | キオクシア株式会社 | メモリシステム |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140331001A1 (en) * | 2013-05-02 | 2014-11-06 | Lsi Corporation | Command Barrier for a Solid State Drive Controller |
| US20150178017A1 (en) * | 2013-12-20 | 2015-06-25 | HGST Netherlands B.V. | Abort function for storage devices by using a poison bit flag wherein a command for indicating which command should be aborted |
| TW201828035A (zh) * | 2017-01-17 | 2018-08-01 | 群聯電子股份有限公司 | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 |
| US20180217951A1 (en) * | 2015-09-28 | 2018-08-02 | Sandisk Technologies Llc | Systems, Methods, and Computer-Readable Media for Managing Instruction Fetch in Virtual Computing Environments |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109117095B (zh) * | 2015-10-10 | 2021-06-15 | 北京忆芯科技有限公司 | NVMe协议处理器及其处理方法 |
| US10817191B2 (en) * | 2017-03-13 | 2020-10-27 | Western Digital Technologies, Inc. | Storage system and method for thermal throttling via command arbitration |
| US11704058B2 (en) * | 2020-07-28 | 2023-07-18 | Samsung Electronics Co., Ltd. | Systems and methods for resource-based scheduling of commands |
| CN112256601B (zh) * | 2020-10-19 | 2023-04-21 | 苏州凌云光工业智能技术有限公司 | 数据存取控制方法、嵌入式存储系统及嵌入式设备 |
-
2022
- 2022-04-19 US US17/724,286 patent/US12086463B2/en active Active
- 2022-04-28 CN CN202210469707.1A patent/CN115407930B/zh active Active
- 2022-04-28 TW TW111116199A patent/TWI840795B/zh active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140331001A1 (en) * | 2013-05-02 | 2014-11-06 | Lsi Corporation | Command Barrier for a Solid State Drive Controller |
| US20150178017A1 (en) * | 2013-12-20 | 2015-06-25 | HGST Netherlands B.V. | Abort function for storage devices by using a poison bit flag wherein a command for indicating which command should be aborted |
| US20180217951A1 (en) * | 2015-09-28 | 2018-08-02 | Sandisk Technologies Llc | Systems, Methods, and Computer-Readable Media for Managing Instruction Fetch in Virtual Computing Environments |
| TW201828035A (zh) * | 2017-01-17 | 2018-08-01 | 群聯電子股份有限公司 | 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN115407930A (zh) | 2022-11-29 |
| TW202242645A (zh) | 2022-11-01 |
| CN115407930B (zh) | 2025-09-16 |
| US20220350536A1 (en) | 2022-11-03 |
| US12086463B2 (en) | 2024-09-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN104937577B (zh) | 支持扩展写入的存储器模块控制器 | |
| US8607003B2 (en) | Memory access to a dual in-line memory module form factor flash memory | |
| US20180113615A1 (en) | Storage device generating adaptive interrupt and operating method thereof | |
| US10585822B2 (en) | Operation method of host system including storage device and operation method of storage device controller | |
| TWI891902B (zh) | 使用讀可選命令和寫可選命令的方法、計算設備及非暫時性處理器可讀儲存媒體 | |
| US9239742B2 (en) | Embedded systems and methods for threads and buffer management thereof | |
| CN109983749B (zh) | 计算设备和提高数据传递速度的方法 | |
| TWI840795B (zh) | 主機系統及其操作方法 | |
| US10402101B2 (en) | System and method for using persistent memory to accelerate write performance | |
| US8938588B2 (en) | Ensuring forward progress of token-required cache operations in a shared cache | |
| US12175134B2 (en) | Abort handling by host controller for storage device | |
| CN113467721B (zh) | 一种数据删除系统、方法及装置 | |
| CN119088724A (zh) | 数据重放方法、数据处理器、网络接口卡、设备和存储介质 | |
| CN109144760B (zh) | 用于获取内存状态的方法、装置、系统及介质 | |
| US20040103229A1 (en) | Bus management techniques | |
| US20240045618A1 (en) | Completion Queue Handling By Host Controller For Storage Device | |
| US20120047285A1 (en) | Interrupt-based command processing | |
| TWI569129B (zh) | 系統暫停方法、系統回復方法及應用其之電腦系統 | |
| WO2024187452A1 (en) | Handling uncorrectable errors in memory | |
| WO2021035609A1 (zh) | 一种交互方法、设备、系统及可读存储介质 | |
| EP3502902A1 (en) | Method and apparatus for managing a non-volatile random-access memory using a monitor | |
| US20240220122A1 (en) | Partial Address Memory Requests | |
| US20250085999A1 (en) | Inter-core communication method and apparatus, computer equipment and computer-readable storage medium | |
| CN119759624A (zh) | 存储设备异常掉电时保存固件调试信息的方法和装置 | |
| CN117829170A (zh) | Sd卡读/写速度确定方法、介质及装置 |