TW202028958A - 用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 - Google Patents
用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 Download PDFInfo
- Publication number
- TW202028958A TW202028958A TW108101788A TW108101788A TW202028958A TW 202028958 A TW202028958 A TW 202028958A TW 108101788 A TW108101788 A TW 108101788A TW 108101788 A TW108101788 A TW 108101788A TW 202028958 A TW202028958 A TW 202028958A
- Authority
- TW
- Taiwan
- Prior art keywords
- host
- storage device
- data transmission
- memory
- memory controller
- Prior art date
Links
Images
Classifications
-
- 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/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; 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/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]
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
Abstract
儲存裝置之控制方法,當儲存裝置向主機請求資料傳送或將資料傳送到主機時,主機不能向儲存裝置發出命令,此控制方法包括以下步驟:(a)儲存裝置之記憶體控制器在向主機執行資料傳送之後具有資料傳送延遲時段,每當於資料傳送延遲時段之期間接收到來自主機的讀取命令時,透過記憶體控制器對主機之主機延遲時間進行偵測,記憶體控制器進行上述偵測多次,其中於資料傳送延遲時段之期間,記憶體控制器不會向主機發出任何資料傳送請求,直到接收到來自主機的讀取命令為止;以及(b)基於多個偵測到的主機之主機延遲時間來調整資料傳送延遲時段。
Description
本發明係關於一種資料儲存技術,更特別的是關於一種用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體。
電腦或伺服器等運算裝置在執行程式以處理資料,例如提取照片、播放音訊或視訊、進行運算或網路通訊時,往往在短時間內需要向儲存裝置提出資料讀取動作的請求。在隨機讀取之情況下,若資料讀取動作之間有較大的延遲,會影響到整體讀取的效率。
在許多儲存系統中,儲存裝置與主機之間存在同時傳送訊框之衝突時,儲存裝置相較於主機而言具有優先權。在這些情況下,例如當儲存裝置對主機發出了直接記憶體存取(direct memory access,DMA)設置訊框資訊結構(frame information structure,FIS)以進入資料傳送階段時,主機通常不能向儲存裝置發出任何命令。例如,主機在這種情況下,必須停止向儲存裝置發出訊框直到儲存裝置完成資料傳送階段為止。
由於主機本身具有主機延遲的情況存在,如果主機向儲存裝置發出多個讀取命令後,儲存裝置回覆此等讀取命令而不斷進入資料傳送階段時,主機往往必須在儲存裝置完成多個資料傳送階段後始能向儲存裝置發出新的讀取命令。在上述情景之下,由於儲存裝置相較於主機而言具有優先權且主機本身所具有主機延遲,會造成資料讀取動作之間有較大的延遲的情況,會影響到整體讀取的效率。
實施方式提供了一種用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體,其可據以實現基於偵測到的主機之主機延遲時間來對儲存裝置之資料傳送延遲時段進行調整。舉例而言,可以有助於儲存裝置找出對目前主機而言合適之資料傳送延遲時段,藉此,可以有助於改善主機向儲存裝置發出讀取命令的效率。
實施方式提供了一種儲存裝置之控制方法,當儲存裝置向主機請求資料傳送或將資料傳送到主機時,主機不能向儲存裝置發出命令,此控制方法包括以下步驟:(a)儲存裝置之記憶體控制器在向主機執行資料傳送之後具有資料傳送延遲時段,每當於資料傳送延遲時段之期間接收到來自主機的讀取命令時,透過儲存裝置之記憶體控制器對主機之主機延遲時間進行偵測,記憶體控制器進行上述偵測多次,其中於資料傳送延遲時段之期間,記憶體控制器不會向主機發出任何資料傳送請求,直到接收到來自主機的讀取命令為止;以及(b)透過記憶體控制器基於多個偵測到的主機之主機延遲時間來調整資料傳送延遲時段。
於一實施例中,步驟(a)包括以下步驟:透過記憶體控制器將資料傳送延遲時段設為一參考值,以便對主機之主機延遲進行偵測;以及當於資料傳送延遲時段之期間接收到來自主機的讀取命令時,對主機之主機延遲時間進行偵測。其中重複進行偵測直到偵測之次數達到偵測次數門檻值。
於一實施例中,在步驟(b)中,可以基於多個偵測到的主機之主機延遲時間中之最大值來調整資料傳送延遲時段。
於一實施例中,資料傳送延遲時段是用於直接記憶體存取(direct memory access,DMA)設置命令的延遲時段。
於一實施例中,當記憶體控制器於第一狀態下操作時執行步驟(a),並且當記憶體控制器於第二狀態下操作時執行步驟(b),上述控制方法更包括:於第二狀態下每當於經調整的資料傳送延遲時段之期間連續地未有從主機接收到讀取命令時,將記憶體控制器從第二狀態轉變為第一狀態以再次執行步驟(a),從而再次對主機之主機延遲時間進行偵測。
於一實施例中,上述控制方法更包括:當處於第一狀態的記憶體控制器在資料傳送延遲時段之期間連續地未有從主機接收到讀取命令時,將記憶體控制器從第二狀態轉變為第三狀態,其中記憶體控制器於第三狀態下執行向主機的資料傳送之後,並無資料傳送延遲時段。
於一實施例中,上述控制方法更包括:當處於第三狀態的記憶體控制器從主機接收讀取命令多次時,將記憶體控制器從第三狀態轉變到第一狀態,從而對主機之主機延遲時間進行偵測。
於一實施例中,儲存裝置使用基於串行高級技術附件(SATA)的協定與主機通訊。
實施方式亦提供了一種記錄媒體,其記錄用以讓儲存裝置中之處理元件執行如上述儲存裝置之控制方法之至少一實施例或其組合之程式碼。
實施方式又提供了一種用於儲存裝置之記憶體控制器,當儲存裝置向主機請求資料傳送或將資料傳送到主機時,主機不能向儲存裝置發出命令,記憶體控制器包括:主機介面單元以及記憶體控制單元。主機介面單元用於與主機通訊。記憶體控制單元,耦接至主機介面單元,且用於透過主機介面單元與主機通訊以接收來自主機之一或多個命令,以存取儲存裝置中之資料,其中記憶體控制器在向主機執行資料傳送之後具有資料傳送延遲時段,記憶體控制單元每當於資料傳送延遲時段之期間接收到來自主機的讀取命令時,對主機之主機延遲時間進行偵測,記憶體控制單元進行上述偵測多次;於資料傳送延遲時段之期間,記憶體控制器不會向主機發出任何資料傳送請求,直到接收到來自主機的讀取命令為止;其中記憶體控制單元基於多個偵測到的主機之主機延遲時間來調整資料傳送延遲時段。
於一實施例中,記憶體控制單元基於多個偵測到的主機之主機延遲時間中之最大值來調整資料傳送延遲時段。
於一實施例中,資料傳送延遲時段是用於直接記憶體存取(DMA)設置命令的延遲時段。
於一實施例中,當記憶體控制單元操作於第一狀態時,對主機之主機延遲時間進行上述偵測;記憶體控制單元操作於第二狀態時,對資料傳送延遲時段進行上述調整;記憶體控制單元於第二狀態下每當於經調整的資料傳送延遲時段之期間連續地未有從主機接收到讀取命令時,記憶體控制單元從第二狀態轉變為第一狀態,從而再次對主機之主機延遲時間進行偵測。
於一實施例中,當處於第一狀態的記憶體控制單元在資料傳送延遲時段之期間連續地未有從主機接收到讀取命令時,記憶體控制單元從第二狀態轉變為第三狀態,其中記憶體控制單元於第三狀態下執行向主機的資料傳送之後,並無資料傳送延遲時段。
於一實施例中,當處於第三狀態的記憶體控制單元從主機接收讀取命令多次時,記憶體控制單元從第三狀態轉變到第一狀態,從而對主機之主機延遲時間進行上述偵測。
於一實施例中,儲存裝置使用基於串行高級技術附件(SATA)的協定與主機通訊。
實施方式復提供一種儲存裝置,包括記憶體以及如上述記憶體控制器之實施例中至少一個或其組合。記憶體用於儲存資料。記憶體控制器耦接至記憶體,且用於與主機通訊以存取儲存裝置的記憶體。
於一實施例中,儲存裝置更包括記憶體介面單元,耦接至記憶體,且用於存取記憶體,其中記憶體控制器可以包括記憶體介面單元,或者記憶體介面單元在記憶體控制器之外部。
上述提供了用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體之實施例,其可據以實現基於偵測到的主機之主機延遲時間來對儲存裝置之資料傳送延遲時段進行調整。舉例而言,可以有助於儲存裝置找出對目前主機而言合適之資料傳送延遲時段。藉此,一些實施例更可用以改善主機向儲存裝置發出讀取命令的效率,從而改善主機對儲存裝置進行隨機讀取時的效率。
為充分瞭解本發明之目的、特徵及功效,茲藉由下述具體之實施例,並配合所附之圖式,對本發明做詳細說明,說明如後。
請參考圖1、圖2或圖3,其繪示本發明之儲存裝置的實施例,圖1、圖2或圖3所示的儲存裝置或記憶體控制器可以用於實現基於圖4或圖5之儲存裝置之控制方法(其將於之後詳細說明,此處先暫時略過)。如圖1所示,儲存裝置10包括記憶體控制器11以及記憶體12。記憶體12用於儲存資料。記憶體12例如包括多個記憶體晶片120,舉例而言,記憶體晶片120為快閃記憶體,譬如NOR型記憶體或NAND型記憶體,然而本發明的實現並不受此例子限制。記憶體控制器11耦接至記憶體12,且用於與主機90通訊以接收主機90的命令,並依據命令從而存取儲存裝置10的記憶體12。主機90例如是電腦或伺服器等運算裝置。此外,儲存裝置10更可以包括緩衝單元13,緩衝單元13可以利用揮發性記憶體或非揮發性記憶體來實現,緩衝單元13可以包含於記憶體控制器11中或在記憶體控制器11之外,且用以作為存取儲存裝置10的記憶體12時,存放命令之佇列或暫存來自主機90的資料或來自記憶體12之資料之用。此外,緩衝單元13亦可用作儲存程式碼以供記憶體控制器11中的處理元件(如微處理器等)來執行。
如圖2所示,於另一實施例中,儲存裝置10A包括記憶體控制器11A、記憶體介面單元115以及記憶體12。記憶體控制器11A係透過記憶體介面單元115而耦接至記憶體,且用於與主機90通訊以接收主機90的命令,並依據命令以請求記憶體介面單元115對儲存裝置10的記憶體12執行存取動作。記憶體介面單元115例如為快閃記憶體控制器。記憶體控制器11A可以包括主機介面單元110以及記憶體控制單元111。主機介面單元110用於與主機90通訊。記憶體控制單元111耦接至主機介面單元110,且用於透過主機介面單元110與主機90通訊以接收來自主機之一或多個命令,以存取儲存裝置10A中之資料。主機介面單元110可以依據主機90與儲存裝置10A之間使用的傳輸協定而實現。以儲存裝置10A使用基於串行高級技術附件(SATA)的協定與主機90通訊為例,主機介面單元110可以為SATA介面控制器。此外,如圖3所示,儲存裝置10B之記憶體控制器11B更可以被配置為包括主機介面單元110、記憶體控制單元111以及記憶體介面單元115。在各種其他實施例中,儲存裝置可以為但不限於串行連接(serial attached) SCSI(SAS)儲存裝置,光纖通道(fiber channel,FC)儲存裝置或通用串列匯流排(USB)儲存裝置,或任何其他存儲設備。然而本發明的實現並不受上述例子限制。
請參考圖4,其為儲存裝置之控制方法的一實施例之示意流程圖。如圖4所示之實施例可用於如基於圖1、圖2或圖3所示的儲存裝置或記憶體控制器。當儲存裝置(如10、10A或10B)向主機90請求資料傳送或將資料傳送到主機90時,主機90不能向儲存裝置發出命令。如圖4所示,儲存裝置之控制方法的一實施例包含以下步驟S10及S20。
如步驟S10所示,記憶體控制器在向主機執行資料傳送之後具有資料傳送延遲時段,每當於資料傳送延遲時段之期間接收到來自主機的讀取命令時,透過儲存裝置之記憶體控制器(如11、11A或11B)對主機之主機延遲時間進行偵測,記憶體控制器進行上述偵測多次,其中於資料傳送延遲時段之期間,記憶體控制器不會向主機發出任何資料傳送請求,直到接收到來自主機的讀取命令為止。
如步驟S20所示,透過記憶體控制器基於多個偵測到的主機之主機延遲時間來調整資料傳送延遲時段。
在實現基於圖4之控制方法時,可以利用記憶體控制器(如11、11A或11B)中的記憶體控制單元111或主機介面單元110來實現各步驟。
藉此基於圖4之控制方法,可據以實現基於偵測到的主機之主機延遲時間來對儲存裝置之資料傳送延遲時段進行調整之作用。舉例而言,基於圖4之控制方法可以有助於儲存裝置找出對目前主機而言合適之資料傳送延遲時段。一些實施例更可用以改善主機向儲存裝置發出讀取命令的效率,從而改善主機對儲存裝置進行隨機讀取時的效率。
舉例而言,在許多儲存系統中,儲存裝置與主機之間存在同時傳送訊框之衝突時,儲存裝置相較於主機而言具有優先權,故此於儲存裝置(如10、10A或10B)向主機90請求資料傳送或將資料傳送到主機90時,主機90不能向儲存裝置發出命令。此外,不同廠商、型號或不同規格之主機本身存在不同內在因素所造成的主機延遲,又主機可能因外在因素如運作環境等各種因素而變化,故綜合種種因素下,主機呈現出來的主機延遲時間往往在一個範圍內變動。
在上述情況下,藉由上述儲存裝置之控制方法之一實施例的步驟S10,可以令記憶體控制器在向主機執行資料傳送之後具有資料傳送延遲時段,若將資料傳送延遲時段之初始值設定為大於主機90之主機延遲時間,就可依據步驟S10而增加主機90向儲存裝置10發出讀取命令的機會並因而能夠偵測到主機90之主機延遲時間。
由於資料傳送延遲時段亦會造成資料傳送階段之間的時間,故藉由步驟S20,據以實現基於偵測到的主機之主機延遲時間來對儲存裝置之資料傳送延遲時段進行調整。舉例而言,可以有助於儲存裝置找出對目前主機而言合適之資料傳送延遲時段。藉此,儲存裝置可用以改善主機向儲存裝置發出讀取命令的效率,從而改善主機對儲存裝置進行隨機讀取時的效率。
以下列舉多個實施例以說明基於圖4之控制方法的各種實現方式。
請參考圖5,其為圖4中步驟S10之一實施例之示意流程圖。在圖4中,步驟S10可以包含步驟S100至S130。
如步驟S100所示,透過記憶體控制器將資料傳送延遲時段設為一參考值,以便對主機之主機延遲進行偵測。
如步驟S110所示,當於資料傳送延遲時段之期間接收到來自主機的讀取命令時,對主機之主機延遲時間進行偵測。例如,記錄從資料傳送延遲時段開始至接收到來自主機的讀取命令時所經過的時間來表示偵測到之主機延遲時間。
如步驟S120所示,記錄偵測到主機延遲時間之次數,並檢查上述偵測之次數是否達到偵測次數門檻值。例如,偵測次數門檻值例如為,但不限於10、100、200、500或1000或其他。若偵測之次數未達到偵測次數門檻值時,則再次執行步驟S110以便對主機之主機延遲進行偵測。
若偵測之次數達到偵測次數門檻值時,則如步驟S130所示,進行其他處理。步驟S130可以有各種實現方式。例如步驟S130可以包含:停止執行偵測,並進一步執行步驟S20。又例如,步驟S130包含:基於多個偵測到的主機之主機延遲時間來決定一估測值,此估測值可於步驟S20執行時使用。然而本發明的實現並不受上述例子限制。
請參考圖6,其為儲存裝置之資料傳送延遲時段之一實施例之示意圖。在圖6中,利用上、下兩個分別由代表主機90及儲存裝置10的方塊所延伸出的帶狀圖形來示意主機90及儲存裝置10分別在傳輸通道上隨時間變化發出訊息的先後順序,其中時間軸是由左往右。在圖6中,帶狀圖形中的實線方塊(如DS0、DA0等)是表示主機90或儲存裝置10所發出的訊息,如命令、資料或訊框等,儲存裝置10所屬的帶狀圖形中以虛線方塊來表示資料傳送延遲時段。以下取主機90及儲存裝置10之間利用基於SATA之傳輸通道為例說明,然而本發明並不受此例之限制。如圖6所示,儲存裝置10或記憶體控制器於回應主機90前次發出的讀取命令(圖未視)而向主機90執行資料傳送,例如透過發出訊框DS0、DA0、SDB0以完成針對此讀取命令之資料傳送。其中訊框DS0例如為由儲存裝置10向主機10傳送之直接記憶體存取設置(direct memory access setup,DMA setup)訊框資訊結構(frame information structure,FIS); DA0例如為由儲存裝置10向主機10傳送之資料訊框資訊結構(Data FIS);SDB0例如為由儲存裝置10向主機10傳送之設定裝置位元(Set Device Bits)訊框資訊結構。上述例子中的訊框為基於SATA的傳輸協定中所定義,然而本發明並不受此例之限制。
在步驟S10或S120中,為了進行偵測,記憶體控制器在向主機執行資料傳送之後具有資料傳送延遲時段。請再參考圖6,在此實施例中,儲存裝置10在發出訊框SDB0後會等待最多至此資料傳送延遲時段(如圖6中虛線方框TD所示)之時間T1。例如,資料傳送延遲時段TD是用於直接記憶體存取設置(DMA setup)命令的延遲時段。於資料傳送延遲時段TD之期間,儲存裝置10或記憶體控制器不會向主機90發出任何資料傳送請求,直到接收到來自主機的讀取命令為止。
以下分别說明在資料傳送延遲時段TD之期間,主機90並未發出讀取命令及主機90發出讀取命令兩種情景以作說明。
如圖6所示,在資料傳送延遲時段TD之期間,主機90並未發出讀取命令。故此,儲存裝置10或記憶體控制器不會向主機90發出任何資料傳送請求。此外,在圖6所示的實施例中,假設在資料傳送延遲時段TD結束後,由於儲存裝置10或記憶體控制器仍有未處理完畢的讀取命令(例如針對主機90先前所發出的多個讀取命令並未完全進行資料傳送動作),故儲存裝置10或記憶體控制器向主機90執行資料傳送,如透過發出訊框DS1、DA1、SDB1以完成針對一個讀取命令之資料傳送,其中此等訊框分別與訊框DS0、DA0、SDB0所表示的意義相同,上述訊框標號中的數字如0、1等是為了區別先後順序。然而本發明並不受此例之限制。
請參考圖7,其為對主機之主機延遲時間進行偵測之一實施例之示意圖。如圖7所示,在資料傳送延遲時段TD之期間,主機90發出讀取命令,如訊框H2D。訊框H2D例如為由主機10向儲存裝置10傳送之主機至裝置(Host to Device)訊框資訊結構,其為基於SATA的傳輸協定中所定義,然而本發明並不受此例之限制。依據步驟S110,當於資料傳送延遲時段之期間接收到來自主機的讀取命令時,對主機之主機延遲時間進行偵測。舉例而言,儲存裝置10或記憶體控制器可以在資料傳送延遲時段TD開始時啟動計時器,當接收到來自主機的讀取命令時,令計時器停止,此時計時器得到的時間值可以作為偵測到之主機延遲時間,如圖7中HL所示的時間。計時器例如可以利用類比電路、邏輯電路、韌體、程式方式或其結合之任何方式來實現。
此外,假設儲存裝置10或記憶體控制器除了上述訊框H2D所代表的讀取命令以外,並無其他讀取命令需要處理,故儲存裝置10或記憶體控制器向主機90針對上述讀取命令執行資料傳送,如透過發出訊框D2H、DS1、DA1、SDB1以完成針對上述讀取命令之資料傳送。訊框D2H例如為由儲存裝置10向主機10傳送之裝置至主機(Device to Host)訊框資訊結構,其為基於SATA的傳輸協定中所定義,然而本發明並不受上述例子限制。
如上述圖6及圖7的實施例可知,主機90與儲存裝置10之間有各種可能的讀取命令的發出或資料傳送的行為,故儲存裝置10或記憶體控制器可以進行多次偵測,並同時記錄偵測次數,當偵測次數達到門檻值以後,多個偵測到的主機延遲時間可得以利用來調整資料傳送延遲時段TD。譬如,資料傳送延遲時段TD的初始值設為2.2ms(或2.5ms),經過偵測次數為100次或以上的偵測後,偵測到的主機延遲時間是落在0.8ms至1.2ms之區域,故可以從選取其中最大值,如1.2ms,並基於此最大值來調整資料傳送延遲時段TD。例如,將資料傳送延遲時段TD從2.2微秒調整為1.2ms,或1.2ms加上容忍值,容忍值例如是一定值或與上述主機延遲時間之區域有關,如取0.2ms((1.2-0.8)/2=0.2)。舉例而言,基於上述主機延遲時間之區域的最大值可以使調整後的資料傳送延遲時段TD合適於各種情況,並可以增加主機90向儲存裝置10發出讀取命令而成功被接收的機會。此外,調整後的資料傳送延遲時段TD小於資料傳送延遲時段的初始值,可以有助於提升整體資料讀取效率,尤其是於多次隨機讀取之情況下,主機可以有效地利用傳輸通道而發出讀取命令。在另一實施例中,可以基於多個偵測到的主機延遲時間的平均值或上述主機延遲時間之區域的最大值及最小值來調整資料傳送延遲時段TD。本發明並不受上述例子限制,對於資料傳送延遲時段TD之調整可以採用其他不同方式來實現。
舉例而言,儲存裝置10或記憶體控制器可以設定資料傳送延遲時段TD的時間為大於一般主機延遲時間。請參考圖8,其為估算儲存裝置之資料傳送延遲時段之一實施例之示意圖。如圖8所示,為了估算一次隨機讀取操作所需的處理時間,可以定義參數x、y、z。x代表主機延遲時間。y代表主機發出一次讀取命令及儲存裝置對讀取命令反應所產生的訊框的時間,如y包含了訊框H2D及D2H的時間。z代表針對來自主機的讀取命令,儲存裝置將所欲讀取之資料傳送至主機的時間,如z包含了訊框DS、DA、SDB的時間。一次隨機讀取操作所需的處理時間pt,可以估計為 pt = x + y + z (單位為微秒,ms)。每秒輸入/輸出運作次數(input/output operations per second,IOPS)是一個用於儲存裝置效能測試的量測參數,可以視為每秒的讀寫次數。IOPS可以利用一次隨機讀取操作所需的處理時間來表示如下:
IOPS = (1/pt) ´ 1000000
= (1/(x + y + z)) ´ 1000000 (公式1)
以下就圖7中參數x、y、z及公式1,說明資料傳送延遲時段的初始值作出估算的例子。在此例子中,可以設定預期之IOPS為一個目標值,此目標值依據儲存裝置欲達成的值而決定。由於參數y及z之處理時間可以被推導或估測而得,故此依據公式1,可以得出參數x如下:
x = (1000000 / IOPS) - y - z (公式2)
例如,預期之IOPS = 80000;y =1.5ms;z = 8.8ms。
x = (1000000/80000) - 1.5 - 8.8 = 2.2ms。
藉此,可以將最大允許之主機延遲時間(如2.2ms)作為資料傳送延遲時段的初始值。然而,資料傳送延遲時段的初始值可以採用其他不同方式來決定,例如是對儲存裝置量測的實驗值或經驗值來估算等方式。本發明之實現並不受上述例子限制。
此外,在一些實施例中,基於圖4之控制方法可以利用狀態機(state machine)的方式來實現。例如,利用具有第一狀態及第二狀態的狀態機來實現基於圖4之控制方法。又例如,利用具有第一狀態、第二狀態及第三狀態的狀態機來實現基於圖4之控制方法。
於基於圖4之控制方法之一實施例中,當儲存裝置之記憶體控制器於第一狀態下操作時執行步驟S10,並且當記憶體控制器於第二狀態下操作時執行步驟S20。
於基於圖4之控制方法之一實施例中,本實施例之方法更包括:於第一狀態下當偵測之次數達到偵測次數門檻值時,將記憶體控制器從第一狀態轉變為第二狀態以執行步驟S20。此外,本實施例之方法更可包括:當偵測之次數達到偵測次數門檻值時,利用多個偵測到的主機之主機延遲時間來得出一數值,此數值可以於第二狀態中執行步驟S20時使用,如記憶體控制器可以基於此數值來調整資料傳送延遲時段。
於基於圖4之控制方法之一實施例中,本實施例之方法更包括:於第二狀態下每當於經調整的資料傳送延遲時段之期間連續地未有從主機接收到讀取命令時,例如未有從主機接收到讀取命令的次數達至一對應的門檻值時,將記憶體控制器從第二狀態轉變為第一狀態以再次執行步驟S10,從而再次對主機之主機延遲時間進行多次偵測。此實施例將有助於儲存裝置之記憶體控制器再次自我進行調整,從而進一步調整出資料傳送延遲時段以促進主機有效地發出讀取命令。
在利用具有第一狀態及第二狀態的狀態機來實現基於圖4之控制方法之實施例中,可以結合上述關於第一狀態及第二狀態之一個或多個實施例而加以實現。如此,可以實現儲存裝置自我學習調整資料傳送延遲時段,使得儲存裝置能因應主機之主機延遲的情況,找出合適的資料傳送延遲時段,從而改善讀取資料的效率。
於基於圖4之控制方法之一實施例中,上述方法更包括:當處於第一狀態的記憶體控制器在資料傳送延遲時段之期間連續地未有從主機接收到讀取命令時,例如未有從主機接收到讀取命令的次數達至一對應之門檻值時,將記憶體控制器從第一狀態轉變為第三狀態,其中記憶體控制器於第三狀態下執行向主機的資料傳送之後,並無資料傳送延遲時段。此實施例將有助於儲存裝置之記憶體控制器再次自我進行調整,在主機可能處於不需進行讀取資料或不需連續進行讀取資料的情況下,進一步使記憶體控制器轉變至第三狀態且並無資料傳送延遲時段並停止主機延遲時間偵測,以避免儲存裝置因不必要的偵測所造成的運算資源的負擔。
於基於圖4之控制方法之一實施例中,上述方法更包括:當處於第三狀態的記憶體控制器從主機接收讀取命令多次時,例如從主機接收到讀取命令的次數達至一對應之門檻值時,將記憶體控制器從第三狀態轉變到第一狀態,從而對主機之主機延遲時間進行偵測。此實施例將有助於儲存裝置之記憶體控制器再次自我進行調整,在主機再次發出多個讀取命令的情況下,進一步使記憶體控制器轉變至第一狀態以再次偵測主機延遲時間。
請參考圖9,其為基於圖4之儲存裝置之控制方法的另一實施例之示意狀態圖。如圖9所示,利用具有第一狀態、第二狀態及第三狀態的狀態機來實現基於圖4之控制方法,其可包含前述關於第一狀態、第二狀態及第三狀態之一個或多個實施例。如此,可以實現儲存裝置自我學習調整資料傳送延遲時段,使得儲存裝置能因應主機之主機延遲的情況,找出合適的資料傳送延遲時段,從而改善讀取資料的效率。此外,儲存裝置可以利用第三狀態避免儲存裝置因不必要的偵測所造成的運算資源的負擔,當儲存裝置判斷出主機進行多次的讀取資料時,再次對進行偵測主機延遲時間、調整資料傳送延遲時段,使儲存裝置能夠動態地因應主機之主機延遲變化而促進讀取資料的效率。然而,本發明並不受上述例子限制;例如,能夠促進主機發出讀取命令之調整後之資料傳送延遲時段可以作為下一次進入第一狀態時資料傳送延遲時段的初始值;又例如,調整後之資料傳送延遲時段可以儲存於儲存裝置中以供以後使用。
請參考圖10,其為基於圖4之儲存裝置之控制方法之一實施例於一應用情景時之示意圖。於一實施例中,儲存裝置使用基於串行高級技術附件(SATA)的協定與主機90通訊。如圖10所示,方塊1210所延伸出的帶狀圖形示意主機90對儲存裝置10在主機90及儲存裝置10之間的傳輸通道上隨時間變化發出訊框H2D的先後順序,其中時間軸是由左往右,如方塊1210對應之垂直線段代表主機90發出訊框H2D,如代表第一組讀取命令CMD1。方塊1221所延伸出的帶狀圖形示意儲存裝置10就主機90所發出的讀取命令(如第一組讀取命令CMD1)在傳輸通道上隨時間變化發出訊框D2H的先後順序,其中垂直線段代表儲存裝置10發出訊框D2H,分別在每個訊框H2D之後。方塊1222所延伸出的帶狀圖形示意儲存裝置10就主機90所發出的讀取命令(如第一組讀取命令CMD1)在傳輸通道上隨時間變化發出訊框DS的先後順序,其中垂直線段代表儲存裝置10發出訊框DS。方塊1223所延伸出的帶狀圖形示意儲存裝置10就主機90所發出的讀取命令(如第一組讀取命令CMD1)在傳輸通道上隨時間變化發出訊框DA的先後順序,其中小方塊代表儲存裝置10發出訊框DA,以將讀取命令所對應的資料傳送至主機90。方塊1224所延伸出的帶狀圖形示意儲存裝置10就主機90所發出的讀取命令(如第一組讀取命令CMD1)在傳輸通道上隨時間變化發出訊框SDB的先後順序,其中垂直線段代表儲存裝置10發出訊框SDB。如圖10所示,儲存裝置10就主機90所發出的讀取命令(如第一組讀取命令CMD1)在傳輸通道上隨時間變化發出訊框D2H、DS、DA、SDB的先後順序對為基於SATA的傳輸協定中所定義,例如SATA版本II或以上係支援「原生命令隊列」(native command queuing,NCQ)之運作模式,在NCQ之運作模式中,儲存裝置10內可以具有最多32個命令佇列來接收來自主機90的命令,其中命令佇列例如是利用緩衝單元13來實現,然而本發明並不受此例限制。請再參考圖10所示,在時段P1之期間,主機90向儲存裝置10發出之第一組讀取命令CMD1可以為32個或其他數目之隨機讀取命令,隨機讀取命令如為讀取4KB或以下之資料的讀取命令。換言之,在NCQ之運作模式之下,主機90可以一次送出多個讀取命令並等待儲存裝置10將資料傳送至主機90。在時段P1之期間,儲存裝置10就第一組讀取命令CMD1分別向主機90回覆多個訊框D2H。在儲存裝置10向主機90發出多個訊框D2H完畢後,由於儲存裝置10可能仍在處理第一組讀取命令CMD1中第一個讀取命令,所以在傳輸通道上可能會存在如圖10中時段P2所表示之等待時間。在時段P3之期間,儲存裝置10就第一組讀取命令CMD1的第一個讀取命令開始向主機90傳送訊框DS、DA、SDB以完成一次的資料傳送。如時段P4所示,由於在第一次的資料傳送之後,有足夠的資料傳送延遲時段TD(請參考圖7)使得主機90可以向儲存裝置10發出第二組讀取命令CMD2的第一個讀取命令;儲存裝置10也因此回應一個訊框D2H;接著,儲存裝置10就第一組讀取命令CMD1的第二個讀取命令再次向主機90傳送訊框DS、DA、SDB以完成第二次的資料傳送。如此類推,在第一組資料傳送時段DATA1中,儲存裝置10就第一組讀取命令CMD1的多個讀取命令向主機90傳送一組又一組的訊框DS、DA、SDB以完成多次的資料傳送。由於在每一次的資料傳送之後(如時段P3、P4所示),有足夠的資料傳送延遲時段TD(請參考圖7),主機90可以向儲存裝置10發出第二組讀取命令CMD2的下一個讀取命令;儲存裝置10也就此讀取命令逐一地回應一個訊框D2H。在第二組資料傳送時段DATA2開始時,儲存裝置10針對第二組讀取命令CMD2的第一個讀取命令開始向主機90傳送訊框DS、DA、SDB以完成一次的資料傳送,後續的運作過程亦可如此類推,故不再贅述。然而本發明並不受此例之限制。
如圖10所示,藉由基於圖4之控制方法之實施例,其可據以實現基於偵測到的主機之主機延遲時間來對儲存裝置10之資料傳送延遲時段進行調整。在經過資料傳送延遲時段調整後,使得主機90在儲存裝置10就上一組讀取命令(如第一組讀取命令CMD1)中的讀取命令發出一組又一組訊框DS、DA、SDB之間,因充足的資料傳送延遲時段而能夠發出下一個讀取命令(如第二組讀取命令CMD2中之一者)。如圖10所示,在儲存裝置10逐一地回應第一組讀取命令CMD1的每個讀取命令而進行資料傳送之間,主機90有效地利用調整後之資料傳送延遲時段來逐一地發出第二組讀取命令CMD2的各個讀取命令。第二組讀取命令CMD2可以為32個或其他數目的隨機讀取命令,隨機讀取命令如為讀取4KB或以下之資料的讀取命令。
上述圖10所示的實施例,表示基於圖4之控制方法將有助於儲存裝置之記憶體控制器自我進行資料傳送延遲時段之調整,從而讓主機在發出第一組讀取命令CMD1後,有效率地發出第二組讀取命令CMD2,使傳輸通道達到有效的運用。相較之下,習知的儲存裝置並無資料傳送延遲時段之調整,倘若資料傳送延遲時段不足以讓主機發出讀取令,主機就必須等待儲存裝置就第一組讀取命令CMD1而完成所有的資料傳送動作之後,才能發出第二組讀取命令CMD2。由上述圖10所示的實施例可見,基於圖4之控制方法可用以改善主機向儲存裝置發出讀取命令的效率,從而改善主機對儲存裝置進行隨機讀取時的效率。
此外,在一些實施例中,提出一種非暫態的可讀取記錄媒體,其記錄用以讓一儲存裝置中之處理元件(例如前述圖1、2或3所示的儲存裝置之記憶體控制器),執行基於圖4之控制方法之程式碼,其中方法包含依據圖3A之方法的前述實施例中至少一個或其組合。舉例而言,程式碼是一個或多個程式或程式模組,如用於實現依據圖4的步驟S10至S10、圖5的步驟S100和S130,或基於圖4之控制方法的狀態機之一實施例或其組合,此等模組之程式碼係協同運作,且可以用任何適合的順序或平行而被執行。當處理元件執行此程式碼時,能導致儲存裝置執行基於圖4之控制方法之一實施例。上述可讀取記錄媒體例如為靭體、ROM、RAM、記憶卡、光學式資訊儲存媒體、磁式資訊儲存媒體或其他任何種類的儲存媒體或記憶體,且本發明之實現方式並不受此例子限制。
此外,在上述關於儲存裝置或記憶體控制器的實施例(如圖1、圖2或圖3所示者)中,主機介面單元110、記憶體控制單元111、記憶體介面單元115中至少一者或其組合,係可以利用一個或多個電路來實現,如處理器、數位訊號處理器,或是以可程式化的積體電路如微控制裝置、元件可程式邏輯閘陣列(field programmable gate array, FPGA)或特殊應用積體電路(application specific integrated circuit,ASIC)之類的電路中之一個或多個電路來實現,亦可使用專屬的電路或模組來實現。記憶體控制器(11、 11A或11B)亦可以利用單晶片來實現。再者,記憶體控制器或記憶體控制單元所進行之偵測或調整亦可利用軟體方式如以行程、執行緒、程式模組或其他軟體方式來實現。然而,本發明之實現並不受此等例子所限制。
上述提供了用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體之實施例,其可據以實現基於偵測到的主機之主機延遲時間來對儲存裝置之資料傳送延遲時段進行調整。舉例而言,可以有助於儲存裝置找出對目前主機而言合適之資料傳送延遲時段。藉此,可用以改善主機向儲存裝置發出讀取命令的效率,從而改善主機對儲存裝置進行隨機讀取時的效率。
本發明在上文中已以較佳實施例揭露,然熟習本項技術者應理解的是,該實施例僅用於描繪本發明,而不應解讀為限制本發明之範圍。應注意的是,舉凡與該實施例等效之變化與置換,均應設為涵蓋於本發明之範疇內。因此,本發明之保護範圍當以申請專利範圍所界定者為準。
10、10A、10B:儲存裝置
11、 11A、11B:記憶體控制器
12:記憶體
13:緩衝單元
90:主機
110:主機介面單元
111:記憶體控制單元
115:記憶體介面單元
120:記憶體晶片
S10、S20:步驟
S100~S130:步驟
TD:資料傳送延遲時段
T1:資料傳送延遲時段之時間
HL:偵測到之主機延遲時間
H2D、D2H、DS、DA、SDB:訊框
DS0、DA0、SDB0:訊框
DS1、DA1、SDB1:訊框
x、y、z:參數
1210、1221~1224:方塊
CMD1:第一組讀取命令
CMD2:第二組讀取命令
DATA1:第一組資料傳送時段
DATA2:第二組資料傳送時段
P1、P2、P3、P4:時段
[圖1]為儲存裝置的一實施例之示意方塊圖。
[圖2]為圖1之儲存裝置中記憶體控制器之一實施例之示意方塊圖。
[圖3]為圖1之儲存裝置中記憶體控制器之另一實施例之示意方塊圖。
[圖4]為儲存裝置之控制方法的一實施例之示意流程圖。
[圖5]為圖4中步驟S10之一實施例之示意流程圖。
[圖6]為儲存裝置之資料傳送延遲時段之一實施例之示意圖。
[圖7]為對主機之主機延遲時間進行偵測之一實施例之示意圖。
[圖8]為估算儲存裝置之資料傳送延遲時段之一實施例之示意圖。
[圖9]為基於圖4之儲存裝置之控制方法的另一實施例之示意狀態圖。
[圖10]為基於圖4之儲存裝置之控制方法於一應用情景時之示意圖。
S10、S20:步驟
Claims (18)
- 一種儲存裝置之控制方法,當該儲存裝置向一主機請求資料傳送或將資料傳送到該主機時,該主機不能向該儲存裝置發出命令,該控制方法包括: (a)該儲存裝置之一記憶體控制器在向該主機執行資料傳送之後具有一資料傳送延遲時段,每當於該資料傳送延遲時段之期間接收到來自該主機的一讀取命令時,透過該記憶體控制器對該主機之主機延遲時間進行偵測,該記憶體控制器進行上述偵測多次,其中於該資料傳送延遲時段之期間,該記憶體控制器不會向該主機發出任何資料傳送請求,直到接收到來自該主機的讀取命令為止;以及 (b)透過該記憶體控制器基於該等偵測到的該主機之主機延遲時間來調整該資料傳送延遲時段。
- 如請求項1所述之控制方法,其中該步驟(a)包括: 透過該記憶體控制器將該資料傳送延遲時段設為一參考值,以便對該主機之主機延遲進行偵測; 當於該資料傳送延遲時段之期間接收到來自該主機的讀取命令時,對該主機之主機延遲時間進行偵測; 其中重複上述偵測直到上述偵測之次數達到一偵測次數門檻值。
- 如請求項1所述之控制方法,其中在步驟(b)中,基於該等偵測到的該主機之主機延遲時間中之一最大值來調整該資料傳送延遲時段。
- 如請求項1所述之控制方法,其中該資料傳送延遲時段是用於直接記憶體存取設置命令的延遲時段。
- 如請求項1所述之控制方法,其中當該記憶體控制器於一第一狀態下操作時執行該步驟(a),並且當該記憶體控制器於一第二狀態下操作時執行該步驟(b),該控制方法更包括: 於該第二狀態下每當於經調整的資料傳送延遲時段之期間連續地未有從該主機接收到讀取命令時,將該記憶體控制器從該第二狀態轉變為該第一狀態以再次執行步驟(a),從而再次對該主機之主機延遲時間進行上述偵測。
- 如請求項5所述之控制方法,其中該控制方法更包括: 當處於該第一狀態的該記憶體控制器在該資料傳送延遲時段之期間連續地未有從該主機接收到讀取命令時,將該記憶體控制器從該第二狀態轉變為一第三狀態,其中該記憶體控制器於該第三狀態下執行向該主機的資料傳送之後,並無資料傳送延遲時段。
- 如請求項6所述之控制方法,其中該控制方法更包括: 當處於該第三狀態的該記憶體控制器從該主機接收讀取命令多次時,將該記憶體控制器從該第三狀態轉變到該第一狀態,從而對該主機之主機延遲時間進行偵測。
- 如請求項1所述之控制方法,其中該儲存裝置使用基於串行高級技術附件(SATA)的協定與該主機通訊。
- 一種記錄媒體,其記錄用以讓一儲存裝置中之一處理元件執行如請求項1至8中任一項所述之儲存裝置之控制方法之程式碼。
- 一種用於儲存裝置之記憶體控制器,當該儲存裝置向一主機請求資料傳送或將資料傳送到該主機時,該主機不能向該儲存裝置發出命令,該記憶體控制器包括: 一主機介面單元,用於與該主機通訊; 以及 一記憶體控制單元,耦接至該主機介面單元,用於透過該主機介面單元與該主機通訊以接收來自該主機之一或多個命令,以存取該儲存裝置中之資料,其中該記憶體控制器在向該主機執行資料傳送之後具有一資料傳送延遲時段,該記憶體控制單元每當於該資料傳送延遲時段之期間接收到來自該主機的一讀取命令時,對該主機之主機延遲時間進行偵測,該記憶體控制單元進行上述偵測多次;且於該資料傳送延遲時段之期間,該記憶體控制器不會向該主機發出任何資料傳送請求,直到接收到來自該主機的讀取命令為止; 其中該記憶體控制單元基於該等偵測到的該主機之主機延遲時間來調整該資料傳送延遲時段。
- 如請求項10所述之記憶體控制器,其中該記憶體控制單元基於該等偵測到的該主機之主機延遲時間中之一最大值來調整該資料傳送延遲時段。
- 如請求項10所述之記憶體控制器,其中該資料傳送延遲時段是用於直接記憶體存取設置命令的延遲時段。
- 如請求項10所述之記憶體控制器,其中當該記憶體控制單元操作於一第一狀態時,對該主機之主機延遲時間進行上述偵測;該記憶體控制單元操作於一第二狀態時,對該資料傳送延遲時段進行上述調整;該記憶體控制單元於該第二狀態下每當於經調整的資料傳送延遲時段之期間連續地未有從該主機接收到讀取命令時,該記憶體控制單元從該第二狀態轉變為該第一狀態,從而再次對該主機之主機延遲時間進行上述偵測。
- 如請求項13所述之記憶體控制器,其中當處於該第一狀態的該記憶體控制單元在該資料傳送延遲時段之期間連續地未有從該主機接收到讀取命令時,該記憶體控制單元從該第二狀態轉變為一第三狀態,其中該記憶體控制單元於該第三狀態下執行向該主機的資料傳送之後,並無資料傳送延遲時段。
- 如請求項14所述之記憶體控制器,其中當處於該第三狀態的該記憶體控制單元從該主機接收讀取命令多次時,該記憶體控制單元從該第三狀態轉變到該第一狀態,從而對該主機之主機延遲時間進行偵測。
- 如請求項10所述之記憶體控制器,其中該儲存裝置使用基於串行高級技術附件(SATA)的協定與該主機通訊。
- 一種儲存裝置,包括: 一記憶體,用於儲存資料;以及 如請求項10至16中任一項所述之記憶體控制器,耦接至該記憶體,且用於與主機通訊以存取該儲存裝置的記憶體。
- 如請求項17所述之儲存裝置,其中該儲存裝置更包括: 一記憶體介面單元,耦接至該記憶體,用於存取該記憶體; 其中該記憶體控制器包括該記憶體介面單元,或者該記憶體介面單元在該記憶體控制器之外部。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108101788A TWI784120B (zh) | 2019-01-17 | 2019-01-17 | 用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 |
US16/658,373 US11036437B2 (en) | 2019-01-17 | 2019-10-21 | Memory controller for storage device, storage device, control method of storage device, and recording medium |
CN201911112791.6A CN112764672B (zh) | 2019-10-21 | 2019-11-14 | 存储器控制器、存储装置及其控制方法以及记录介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108101788A TWI784120B (zh) | 2019-01-17 | 2019-01-17 | 用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202028958A true TW202028958A (zh) | 2020-08-01 |
TWI784120B TWI784120B (zh) | 2022-11-21 |
Family
ID=71608958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108101788A TWI784120B (zh) | 2019-01-17 | 2019-01-17 | 用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11036437B2 (zh) |
TW (1) | TWI784120B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102655360B1 (ko) * | 2018-12-13 | 2024-04-05 | 에스케이하이닉스 주식회사 | 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법 |
US11386203B2 (en) | 2020-06-15 | 2022-07-12 | Western Digital Technologies, Inc. | Detection of compromised storage device firmware |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6334219B1 (en) * | 1994-09-26 | 2001-12-25 | Adc Telecommunications Inc. | Channel selection for a hybrid fiber coax network |
KR100578219B1 (ko) * | 2004-12-30 | 2006-05-12 | 주식회사 하이닉스반도체 | 온-칩 데이터 전송 제어장치 및 그 제어방법 |
US7848287B2 (en) * | 2006-05-16 | 2010-12-07 | Telefonaktiebolaget Lm Ericsson | Bi-directional RLC non-persistent mode for low delay services |
JP2009237678A (ja) * | 2008-03-26 | 2009-10-15 | Fujitsu Microelectronics Ltd | メモリコントローラデバイス、メモリコントローラデバイスの制御方法およびデータ受信デバイス |
US9541987B2 (en) * | 2013-06-28 | 2017-01-10 | Intel Corporation | Generic host-based controller latency method and appartus |
US20170060460A1 (en) | 2015-08-31 | 2017-03-02 | Megachips Corporation | Memory controller |
US10339050B2 (en) * | 2016-09-23 | 2019-07-02 | Arm Limited | Apparatus including a memory controller for controlling direct data transfer between first and second memory modules using direct transfer commands |
US11354064B2 (en) * | 2018-12-26 | 2022-06-07 | Micron Technology, Inc. | Detection of illegal commands |
US11209985B2 (en) * | 2019-04-23 | 2021-12-28 | Macronix International Co., Ltd. | Input/output delay optimization method, electronic system and memory device using the same |
US11188264B2 (en) * | 2020-02-03 | 2021-11-30 | Intel Corporation | Configurable write command delay in nonvolatile memory |
-
2019
- 2019-01-17 TW TW108101788A patent/TWI784120B/zh active
- 2019-10-21 US US16/658,373 patent/US11036437B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI784120B (zh) | 2022-11-21 |
US11036437B2 (en) | 2021-06-15 |
US20200233611A1 (en) | 2020-07-23 |
CN112764672A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9727248B2 (en) | Dynamic IO operation timeout assignment for a solid state drive | |
CN108292195B (zh) | 用于管理固态驱动器的操作特性的技术 | |
US10908839B2 (en) | Storage device throttling amount of communicated data depending on suspension frequency of operation | |
KR102293919B1 (ko) | 반도체 장치에 대한 상태 읽기를 수행하는 반도체 시스템 및 그것의 동작 방법 | |
CN110780807A (zh) | 控制固态驱动器的性能 | |
US11010094B2 (en) | Task management method and host for electronic storage device | |
TWI784120B (zh) | 用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 | |
US9377966B2 (en) | Method and apparatus for efficiently processing storage commands | |
CN107919143B (zh) | 固态存储设备及其温度控制方法 | |
US11461036B2 (en) | Technologies for logging and visualizing storage events | |
TW201824290A (zh) | 數據儲存裝置及其操作方法 | |
US20180173639A1 (en) | Memory access method, apparatus, and system | |
JP2002023961A (ja) | ディスクアレイ装置およびディスクアレイ装置の割り込み実行方法 | |
JP5949224B2 (ja) | ストレージ制御装置、該プログラム及び該方法 | |
KR100843199B1 (ko) | 고속 아이.디.이. 인터페이스 장치 및 그 방법 | |
US9870156B2 (en) | Memory system and method of controlling memory system | |
KR102527925B1 (ko) | 메모리 시스템 및 그것의 동작 방법 | |
CN112764672B (zh) | 存储器控制器、存储装置及其控制方法以及记录介质 | |
WO2022067686A1 (zh) | 一种应用于固态硬盘ssd的数据读取方法及相关装置 | |
US8745282B2 (en) | Concurrent response for device information during an initialization process for a storage device | |
KR102482527B1 (ko) | 시리얼 인터페이스를 사용하는 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 | |
EP3092570B1 (en) | Method for processing data in storage device and storage device | |
CN113495682A (zh) | 用于对装置管理配置请求进行列队的系统和方法 | |
JP2021051373A (ja) | ストレージコントローラ、ストレージ装置及びプログラム | |
US8972614B2 (en) | Half-duplex SATA link with controlled idle gap insertion |