TWI484414B - 用於記憶體之工作排程方法及其記憶體系統 - Google Patents
用於記憶體之工作排程方法及其記憶體系統 Download PDFInfo
- Publication number
- TWI484414B TWI484414B TW102107055A TW102107055A TWI484414B TW I484414 B TWI484414 B TW I484414B TW 102107055 A TW102107055 A TW 102107055A TW 102107055 A TW102107055 A TW 102107055A TW I484414 B TWI484414 B TW I484414B
- Authority
- TW
- Taiwan
- Prior art keywords
- work
- queue
- command
- memory system
- priority
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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
- 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/0625—Power saving in 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/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/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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
本發明係指一種用於一記憶體系統中複數個記憶體之工作排程方法及其記憶體系統,尤指一種可指定複數個工作之優先權,以透過最佳化順序來執行此複數個工作,進而改善記憶體系統效能之工作排程方法及其記憶體系統。
記憶體控制器常用於記憶體系統(特別是非揮發性記憶體系統)中,用來進行工作管理。一般來說,當非揮發性記憶體系統之電源關閉時,儲存於非揮發性記憶體系統的資料不會遺失,因此非揮發性記憶體系統可作為一種用來儲存系統資料的重要裝置。在各類非揮發性記憶體系統中,由於反及閘快閃記憶體(NAND flash memory)具有低功耗及速度快之優點,因此,伴隨近年來可攜式裝置的普及化,反及閘快閃記憶體已被廣為採用。
然而,反及閘快閃記憶體具有一些缺點。例如,反及閘快閃記憶體中每一區塊之存取次數存在一上限;此外,在區塊被抹除之前,資料不可直接寫入其中。為了克服這些缺點,用於反及閘快閃記憶體的控制器必須執行一些工作,如平均抹寫儲存區塊(wear leveling)、垃圾回收(garbage collection)、故障區塊管理(bad block management)等。因此,記憶體控制器在反及閘快閃記憶體中扮演重要角色,而許多工作
皆可由反及閘快閃記憶體之控制裝置所執行。一般來說,大多數工作可分類為以下四種主要工作類型:使用者資料存取、詮釋資料(metadata)管理、平均抹寫儲存區塊控制以及垃圾回收。使用者資料存取係記憶體之基本存取運作,如讀取及寫入。詮釋資料管理係管理記憶體中使用者存取資料的位置,例如使用一表格或目錄來顯示哪一區塊存有資料,或哪一區塊是空的而可用來存取其它使用者資料。平均抹寫儲存區塊係將較常修改的資料搬移至較少使用的區塊,並將較少修改的資料搬移至較常使用的區塊,進而使每一區塊的使用頻率相等,以避免部分區塊由於太常使用而提早到達存取次數的上限,導致區塊損毀。垃圾回收係用於清除每一區塊之前,先在區塊中收集有用的剩餘資料。
請參考第1圖,第1圖為習知一記憶體系統10之示意圖。如第1圖所示,記憶體系統10包含一快閃記憶體控制器100及一快閃記憶體陣列150。快閃記憶體控制器100透過一快閃記憶體介面與快閃記憶體陣列150進行通訊。快閃記憶體控制器100另透過一主機介面與一主機進行通訊,其中該主機可為需在記憶體系統10存取資料的處理器或伺服器。快閃記憶體控制器100包含一快閃記憶體轉換層(flash translation layer,FTL)110及一實體驅動程式120。快閃記憶體轉換層110可將由主機接收到的指令轉換為可於快閃記憶體中執行之不同工作類型112A~112D的工作。快閃記憶體轉換層110另包含一仲裁單元114,用來管理及協調這些工作。實體驅動程式120係用來驅動快閃記憶體陣列150中之快閃記憶體來執行這些工作。所有快閃記憶體皆配置於快閃記憶體陣列150中,快閃記憶體陣列150之每一欄可表示為通道Ch0~Ch3,而每一通道中的快閃記憶體可由致能訊號CE0~CE3來控制。因此,通道Ch0~Ch3及致能訊號CE0~CE3可用來存取快閃記憶體陣列150中的記憶體。每當實體驅動程式120欲驅動某一特定記憶體時,對應於此特定
記憶體之致能訊號會啟動,使得工作可執行於此特定記憶體。
根據上述結構,當主機下指令於記憶體系統10時,快閃記憶體轉換層110接收指令,進而指示欲執行的工作。接著,仲裁單元114會監控實體驅動程式120。一般來說,當實體驅動程式120處於空閒狀態時,仲裁單元114會指示實體驅動程式120以驅動快閃記憶體陣列150中一特定記憶體,使工作可在此特定記憶體執行。另一方面,當實體驅動程式120處於忙碌狀態時,必須等到前一工作完成之後,才執行下一個工作。快閃記憶體10之效能可能會因此受到影響,而無法維持一定大小的吞吐量以提供予使用者。有鑑於此,習知技術實有改善之必要。
因此,本發明之主要目的即在於提供一種可指定複數個工作之優先權,以透過最佳化順序來執行此複數個工作,進而改善記憶體系統效能之工作排程方法及其記憶體系統。
本發明揭露一種工作排程方法,用於一記憶體系統中之複數個記憶體,該方法包含有將該複數個工作中每一工作分類至複數個工作類型當中任一工作類型;根據該複數個工作類型,配置複數個工作佇列,其中每一工作佇列儲存該複數個工作中之一工作,該工作屬於該複數個工作類型之一且為欲執行之工作;指定該複數個工作類型中每一工作類型之一優先權;配置至少一執行佇列;以及將儲存於該複數個工作佇列中一第一工作佇列之一第一工作轉換為至少一命令,以儲存於該至少一執行佇列中一第一執行佇列;其中,該第一執行佇列中之該至少一命令係根據對應於該第一工作佇列之一第一工作類型之優先權來執行。
本發明另揭露一種記憶體系統,包含有複數個記憶體;以及
一記憶體控制器。該記憶體控制器可實現為一程式碼,用來指示一處理器執行一種用於該記憶體系統中該複數個記憶體之工作排程方法,該方法包含有將該複數個工作中每一工作分類至複數個工作類型當中任一工作類型;根據該複數個工作類型,配置複數個工作佇列,其中每一工作佇列儲存該複數個工作中之一工作,該工作屬於該複數個工作類型之一且為欲執行之工作;指定該複數個工作類型中每一工作類型之一優先權;配置至少一執行佇列;以及將儲存於該複數個工作佇列中一第一工作佇列之一第一工作轉換為至少一命令,以儲存於該至少一執行佇列中一第一執行佇列;其中,該第一執行佇列中之該至少一命令係根據對應於該第一工作佇列之一第一工作類型之優先權來執行。
10‧‧‧記憶體系統
100‧‧‧快閃記憶體控制器
110‧‧‧快閃記憶體轉換層
112A~112D‧‧‧工作類型
114‧‧‧仲裁單元
120‧‧‧實體驅動程式
150‧‧‧快閃記憶體陣列
Ch0~Ch3‧‧‧通道
CE0~CE3‧‧‧致能訊號
20‧‧‧記憶體系統
200‧‧‧快閃記憶體控制器
220‧‧‧實體驅動程式
230‧‧‧虛擬驅動程式
232A~232D‧‧‧工作佇列
234A~234D‧‧‧執行佇列
242‧‧‧工作排程單元
244‧‧‧執行排程單元
250‧‧‧快閃記憶體陣列
252、254、256、258‧‧‧記憶體空間
60‧‧‧記憶體控制流程
600~612‧‧‧步驟
第1圖為習知一記憶體系統之示意圖。
第2圖為本發明實施例一記憶體系統之示意圖。
第3圖為本發明實施例儲存於工作佇列之工作之示意圖。
第4圖為本發明實施例儲存於執行佇列之命令之示意圖。
第5A圖為本發明實施例儲存於工作佇列之工作欲根據優先權轉換為命令之示意圖。
第5B圖為本發明實施例根據優先權將工作轉換為命令之示意圖。
第5C圖為本發明實施例當數個命令正在執行且數個工作及數個命令正在執行佇列中等待時,一新工作到達之示意圖。
第5D圖為本發明實施例具有較高優先權之工作轉換為命令之示意圖。
第6圖為本發明實施例一記憶體控制流程之示意圖。
第7圖為本發明實施例透過一交錯方式執行命令之示意圖。
請參考第2圖,第2圖為本發明實施例一記憶體系統20之示意圖。如第2圖所示,記憶體系統20包含一快閃記憶體控制器200及一快閃記憶體陣列250。與記憶體系統10相同,快閃記憶體控制器200透過一快閃記憶體介面與快閃記憶體陣列250進行通訊。快閃記憶體控制器200另透過一主機介面與一主機進行通訊,其中該主機可為需在記憶體系統20存取資料的處理器或伺服器。快閃記憶體陣列250與快閃記憶體陣列150相似。由於快閃記憶體陣列250具有四個欄以及四個列,因此通道Ch0~Ch3及致能訊號CE0~CE3可用來存取快閃記憶體陣列250中的快閃記憶體。於其它實施例中,快閃記憶體陣列可能具有任何大小之欄數以及任何大小之列數,因此通道及致能訊號之數量皆可任意決定。於部分實施例中,對應於一通道及一致能訊號之記憶體可對應於數個記憶體單元(如邏輯單元的數量)。在此情況下,必須使用特定的致能訊號來存取這些記憶體單元中某一特定的記憶體單元。
請繼續參考第2圖。如第2圖所示,記憶體系統20與記憶體系統10之主要差異在於「快閃記憶體控制器」的部分。快閃記憶體控制器200另包含一虛擬驅動程式230,而刪除仲裁單元114。虛擬驅動程式230包含一實體驅動程式220、工作佇列232A~232D、執行佇列234A~234D、一工作排程單元242及一執行排程單元244。實體驅動程式220與實體驅動程式120之架構相似。工作佇列232A~232D可用來儲存工作,其中每一工作佇列對應於一工作類型,並儲存屬於相對應工作類型且欲執行的工作。舉例來說,請參考第3圖,第3圖為儲存於工作佇列232A~232D之工作之示意圖。如第3圖所示,二個欲執行之使用者資料存取112A之工作儲存於工作佇列232A,一欲執行之詮釋資料管理112B之工作儲存於工作佇列232B,一欲執行之平均抹寫儲存區塊控制112C之工作儲存於工作佇列232C,而一欲執行之垃圾回收112D之工作儲存
於工作佇列232D。此四種工作類型之分類僅為可用於記憶體系統20之其中一種可行的實施例,於其它實施例中,工作可透過任何方式分類。因此,記憶體系統20中可能存在任何數量的工作類型,因此可能存在任何數量的工作佇列,以分別對應於不同工作類型。於一般反及閘快閃記憶體(NAND flash memory)中,多數工作皆可分類為上述四種工作類型(即使用者資料存取112A、詮釋資料管理112B、平均抹寫儲存區塊控制112C及垃圾回收112D),因此本實施例之記憶體系統20可將所有工作根據工作類型112A~112D進行分類。工作排程單元242耦接於每一工作佇列232A~232D,用來判斷工作優先權,並將屬於工作類型112A~112D之工作分別轉換為可儲存於執行佇列234A~234D之命令。
另一方面,執行排程單元244耦接於實體驅動程式220,可用來根據工作優先權,配置頻寬以提供予執行佇列234A~234D中的命令。執行佇列234A~234D可用來儲存命令,而這些命令可執行於快閃記憶體陣列250中的記憶體,其中可執行之命令係由儲存於工作佇列232A~232D而欲執行之工作透過工作排程單元242轉換而成。執行佇列234A~234D中每一執行佇列可對應於通道Ch0~Ch3中之一通道,而每一執行佇列儲存須在此通道中的記憶體執行之命令。舉例來說,請參考第4圖,第4圖為儲存於執行佇列234A~234D之命令之示意圖。如第4圖所示,一平均抹寫儲存區塊控制112C之命令、一垃圾回收112D之命令、一詮釋資料管理112B之命令及一使用者資料存取112A之命令係儲存於執行佇列234A,一垃圾回收112D之命令及一使用者資料存取112A之命令係儲存於執行佇列234B,一使用者資料存取112A之命令係儲存於執行佇列234C,以及一使用者資料存取112A之命令係儲存於執行佇列234D。此四個執行佇列234A~234D的配置僅為一種可能的實施例,於其它實施例中,由於快閃記憶體陣列中可能具有任何大小之欄數,其可
能對應於任何數量之通道。因此,任何數量之執行佇列皆可能實現於虛擬驅動程式230中,以對應於快閃記憶體陣列250之通道數量。
詳細來說,每一工作皆可被分類為工作類型112A~112D之一。當欲執行一工作時,可將此工作儲存於所屬之工作類型所對應的工作佇列,其包含於工作佇列232A~232D中。當欲執行之工作排入工作佇列232A~232D之後,虛擬驅動程式230根據相對應工作類型之優先權,將此工作轉換為可執行之命令。每一工作可由工作排程單元242轉換為至少一可執行命令,進而透過執行排程單元244配置於執行佇列234A~234D中至少一執行佇列。舉例來說,如第2圖所示,若一平均抹寫儲存區塊控制112C之工作係由一記憶體空間252將資料搬移至一記憶體空間254,此工作可被轉換為二個命令:從記憶體空間252讀取資料以及將資料寫入記憶體空間254。因此,讀取命令可配置於執行佇列234A,而寫入命令可配置於執行佇列234C。接著,實體驅動程式220可依序執行讀取命令及寫入命令,進而完成此平均抹寫儲存區塊控制112C之工作。
一般來說,針對傳送於快閃記憶體介面的資料,快閃記憶體系統可定義一吞吐量。舉例來說,若記憶體系統20之吞吐量為10MB/s,則記憶體系統20之頻寬亦為10MB/s。另一方面,工作類型112A~112D中每一工作類型亦具有一吞吐量,其定義為該工作類型之工作由實體驅動程式220執行時,其佔據記憶體系統20之頻寬大小。若工作類型112A~112D之吞吐量加總小於記憶體系統20之吞吐量時,工作佇列232A~232D中所有工作皆可順利執行。若工作類型112A~112D之吞吐量加總大於記憶體系統20之吞吐量時,部分工作必須在工作佇列232A~232D或執行佇列234A~234D中等待,而無法及時被執行。因此,必
須透過優先權來判斷哪些工作可先執行,以透過最佳化順序來執行所有工作,進而改善記憶體系統20之效能。
舉例來說,假設記憶體系統20之頻寬為10MB/s。使用者資料存取112A工作之吞吐量表示為U MB/s,詮釋資料管理112B工作之吞吐量表示為M MB/s,平均抹寫儲存區塊控制112C工作之吞吐量表示為W MB/s,以及垃圾回收112D工作之吞吐量表示為G MB/s。若U+M+W+G<=10時,所有工作佇列232A~232D中的工作皆可順利執行。若U+M+W+G>10時,部分工作必須在工作佇列232A~232D中等待,而無法及時被執行。因此,必須透過優先權來進行排程。
值得注意的是,優先權可根據記憶體系統20之狀態進行調整。一般來說,預設的優先權順序由高至低排列可能為詮釋資料管理112B、使用者資料存取112A、垃圾回收112D及平均抹寫儲存區塊控制112C。由於儲存於詮釋資料中的快閃記憶體陣列250狀態須時常更新,詮釋資料管理112B通常擁有最高優先權。於部分實施例中,若快閃記憶體陣列250的可用空間不足以致於無法存取用戶資料,或可用空間少於一臨界值時,垃圾回收112D可擁有最高優先權。實體驅動程式220可先清除資料並執行垃圾回收112D,進而回收利用這些可用空間,以利後續操作。於部分實施例中,若記憶體系統20之效能為主要考量時,使用者資料存取112A可擁有最高優先權,以維持一定程度的吞吐量提供予使用者。實際上,優先權可透過不同方式決定,使得工作的執行達到最佳化。如上所述,快閃記憶體中可能包含任何數量的工作類型以及任何分類方式,因此,優先權的決定可據以進行調整,而不限於此。
請參考第5A圖,第5A圖為本發明實施例儲存於工作佇列
232A~232D之工作欲根據優先權轉換為命令之示意圖。如第5A圖所示,使用者資料存取112A之工作U1~U3、一詮釋資料管理112B之工作M1、一平均抹寫儲存區塊控制112C之工作W1以及一垃圾回收112D之工作G1分別儲存於工作佇列232A~232D。假設記憶體系統20之頻寬為16MB/s,而每一命令(由工作類型112A~112D中之一工作透過工作排程單元242轉換而得)佔有的吞吐量為4MB/s。因此,最多四個命令可順利執行。一般來說,記憶體系統20之頻寬16MB/s可平均分配至四個通道Ch0~Ch3,因此每一通道分配有4MB/s,使得每一執行佇列中僅有一個命令可順利執行。根據優先權之預設順序(即詮釋資料管理112B、使用者資料存取112A、垃圾回收112D及平均抹寫儲存區塊控制112C),工作排程單元242先將詮釋資料管理112B之工作M1轉換為命令,並儲存於執行佇列234A~234D中相對應的執行佇列。接著,使用者資料存取112A之工作U1~U3及垃圾回收112D之工作G1依序被轉換為命令,並根據優先權以及欲進行工作的記憶體位置,儲存於執行佇列234A~234D中相對應的執行佇列,如第5B圖所示。此時,假設平均抹寫儲存區塊控制112C之工作W1欲執行於通道Ch0的記憶體,而必須分配至執行佇列234A,但執行佇列234A的空間已完全被佔據時,工作W1必須在工作佇列232C中等待,直到執行佇列234A的儲存空間釋放出來。
每當一新工作進入工作佇列232A~232D時,必須將優先權套用於此新工作,以藉由最佳化順序來執行,進而改善記憶體系統20之效能。請參考第5C圖,第5C圖為第5B圖所示之狀態下當數個命令正在執行且數個工作及數個命令正在執行佇列234A~234D中等待時,一新工作U4到達之示意圖。假設新到達之工作U4屬於使用者資料存取112A之工作類型,且用於通道Ch0之記憶體,因此,工作U4配置於工
作佇列232A且欲轉換至執行佇列234A。此時,由於執行佇列234A的空間已完全被佔據,因此工作W1及U4須分別在工作佇列232C及232A中等待。當每一執行佇列中,部分對應於工作(如M1及U1)之命令完成之後,頻寬及執行佇列234A~234D的儲存空間同時被釋放出來,使得工作佇列232A~232D中部分工作可轉換為命令。此時,工作排程單元242可根據優先權選擇工作佇列232A~232D中欲轉換為命令之工作。由於工作W1及工作U4皆用於通道Ch0之記憶體,工作排程單元242必須根據優先權將工作轉換至執行佇列234A。再者,由於使用者資料存取112A之工作相較於平均抹寫儲存區塊控制112C之工作具有較高優先權,即使工作U4較晚進入工作佇列,仍先被轉換為命令,而工作W1須在工作佇列232C等待,如第5D圖所示。更進一步地,根據優先權,儲存於執行佇列234A~234D中的命令之順序亦可能改變。因此,於執行佇列234A中,工作U4轉換為命令之後儲存於對應於工作G1的命令之前的位置,且可在工作U2及U3對應的命令執行完成之後被執行。
一程式碼可實現於記憶體控制器200中,用來指示一處理器執行上述操作。而上述操作可歸納為一記憶體控制流程60,如第6圖所示。記憶體控制流程60包含以下步驟:步驟600:開始。
步驟602:將複數個工作中每一工作分類至工作類型112A~112D當中任一工作類型。
步驟604:根據工作類型112A~112D,配置工作佇列232A~232D,其中每一工作佇列儲存複數個工作中之一工作,此工作屬於工作類型112A~112D之一且為欲執行之工作。
步驟606:指定一優先權於工作類型112A~112D中每一工作類型。
步驟608:配置執行佇列234A~234D。
步驟610:將儲存於工作佇列232A~232D中一第一工作佇列之一第一工作轉換為至少一命令,以儲存於執行佇列234A~234D中一第一執行佇列,其中,第一執行佇列中之至少一命令係根據對應於第一工作佇列之一第一工作類型之優先權來執行。
步驟612:結束。
值得注意的是,本發明之主要精神在於可透過最佳化順序執行記憶體系統中的工作,進而改善記憶體系統之效能。本領域具通常知識者當可據以修飾或變化,而不限於此。舉例來說,於上述實施例中,工作排程之方法係用於快閃類型的記憶體系統20中,但於部分實施例中,只要包含有記憶體控制器,任何類型之記憶體系統皆可使用上述工作排程方法。另一方面,如第2圖~第5D圖所示,每一工作佇列232A~232D中儲存工作的空間以及每一執行佇列234A~234D中儲存命令的空間皆為4個單元,但於其它實施例中,用來儲存工作或命令的空間可能具有不同大小,或可根據系統需求而進行調整,而不限於此。更進一步地,於部分實施例中,執行排程單元244可根據系統需求,依照任何順序將命令分配於執行佇列中,因此,排列於執行佇列的命令可依照任何順序來執行。以下實施例中,命令係透過一交錯方式執行。
請參考第7圖,第7圖為本發明實施例透過一交錯方式執行命令之示意圖。如第7圖所示,使用者資料存取112A之工作U4及U5儲存於工作佇列232A中。工作U4可轉換為命令U4A及U4B並執行於位於通道Ch0之一記憶體空間256,工作U5可轉換為命令U5A及U5B並執行於同樣位於通道Ch0之另一記憶體空間258。在此情況下,實體驅動程式220可依照U4A、U5A、U4B及U5B之順序來執行命令。當執
行命令U4於記憶體空間256時,即使實體驅動程式220已完成其任務且準備好執行後續命令,記憶體空間256可能仍在進行資料轉傳而處於忙碌狀態。此時,命令U4B必須等待於執行佇列中,直到記憶體空間256空出之後才可執行。此時若記憶體空間258處於空閒狀態,實體驅動程式220可先執行命令U5A,以提升效率。如此一來,命令可透過交錯方式執行,進而達到記憶體系統20之較高效能。於其它實施例中,工作U4及U5可先分割為較小的工作,再將較小工作轉換為命令U4A、U4B、U5A及U5B,此命令亦可透過交錯方式執行。
一般來說,大多數快閃記憶體定義一種吞吐量之規格,如一等級四(class-4)快閃記憶體代表使用者資料存取之吞吐量至少須大於4MB/s,一等級六(class-6)快閃記憶體代表使用者資料存取之吞吐量至少須大於6MB/s。在此情況下,須確保使用者資料存取112A之工作之吞吐量大於一目標值。舉例來說,於上述實施例中,記憶體系統20之頻寬為10MB/s,若使用者資料存取112A工作之目標吞吐量設定為6MB/s,僅剩下4MB/s頻寬提供予其它工作類型之工作使用。因此,在上述實施例中,可定義一種新的規則。若M+W+G<=4時,所有工作佇列232A~232D中的工作皆可順利執行。若M+W+G>4時,部分工作必須在工作佇列232A~232D中等待,而無法及時被執行。在此情況下,可確保使用者資料存取112A工作之吞吐量大於6MB/s。然而,在少數情況下,若記憶體系統20之頻寬被某些須緊急處理之工作佔據時,使用者資料存取112A工作之吞吐量仍可能下降至低於目標吞吐量。
於習知技術中,當實體驅動程式處於忙碌狀態時,必須等到現有工作完成之後,才執行下一個工作。因此,實體驅動程式必須先完成前一個工作,再開始執行後續工作。如此一來,快閃記憶體的效能可
能會降低。相較之下,本發明可指定複數個工作之優先權,以透過最佳化順序執行複數個工作,進而改善快閃記憶體之效能。
20‧‧‧記憶體系統
200‧‧‧快閃記憶體控制器
220‧‧‧實體驅動程式
230‧‧‧虛擬驅動程式
232A~232D‧‧‧工作佇列
234A~234D‧‧‧執行佇列
242‧‧‧工作排程單元
244‧‧‧執行排程單元
250‧‧‧快閃記憶體陣列
252、254‧‧‧記憶體空間
Claims (21)
- 一種工作排程方法,用於一記憶體系統中之複數個記憶體,該方法包含有:將該複數個工作中每一工作分類至複數個工作類型當中任一工作類型;根據該複數個工作類型,配置複數個工作佇列,其中每一工作佇列儲存該複數個工作中之一工作,該工作屬於該複數個工作類型之一且為欲執行之工作;指定該複數個工作類型中每一工作類型之一優先權;配置至少一執行佇列;以及將儲存於該複數個工作佇列中一第一工作佇列之一第一工作轉換為至少一命令,以儲存於該至少一執行佇列中一第一執行佇列;其中,該第一執行佇列中之該至少一命令係根據對應於該第一工作佇列之一第一工作類型之優先權來執行;其中,當該複數個工作佇列中所有工作吞吐量之加總大於該記憶體系統之一頻寬時,該第一工作係根據對應於該第一工作佇列之該第一工作類型之優先權進行選擇。
- 如請求項1所述之方法,其中當欲執行之一第二工作到達時,該第二工作被分類至該複數個工作類型中一第二工作類型並儲存於對應於該第二工作類型之一第二工作佇列。
- 如請求項2所述之方法,另包含將儲存於該複數個工作佇列中該第二工作佇列之該第二工作轉換為至少一命令,以儲存於該至少一執行佇列中一第二執行佇列。
- 如請求項3所述之方法,其中該第二執行佇列中之該至少一命令係根據 對應於該第二工作佇列之一第二工作類型之優先權來執行。
- 如請求項2所述之方法,另包含將儲存於該複數個工作佇列中該第二工作佇列之該第二工作轉換為至少一命令,以儲存於該至少一執行佇列中該第一執行佇列。
- 如請求項5所述之方法,其中該第二工作之優先權高於該第一工作之優先權,由該第二工作轉換之命令先被執行,再執行由該第一工作轉換之命令。
- 如請求項1所述之方法,另包含於該複數個工作類型中一工作類型定義一目標吞吐量。
- 如請求項1所述之方法,其中該至少一執行佇列中每一執行佇列係對應於該複數個記憶體中至少一記憶體。
- 如請求項8所述之方法,其中該至少一命令係透過一交錯方式執行於該複數個記憶體中。
- 如請求項1所述之方法,其中該複數個工作類型中每一工作類型之該優先權係根據該記憶體系統之一狀態來指定。
- 一種記憶體系統,包含有:複數個記憶體;以及一記憶體控制器,可實現為一程式碼,用來指示一處理器執行一種用於該記憶體系統中該複數個記憶體之工作排程方法,該方法包含有:將該複數個工作中每一工作分類至複數個工作類型當中任一工作類 型;根據該複數個工作類型,配置複數個工作佇列,其中每一工作佇列儲存該複數個工作中之一工作,該工作屬於該複數個工作類型之一且為欲執行之工作;指定該複數個工作類型中每一工作類型之一優先權;配置至少一執行佇列;以及將儲存於該複數個工作佇列中一第一工作佇列之一第一工作轉換為至少一命令,以儲存於該至少一執行佇列中一第一執行佇列;其中,該第一執行佇列中之該至少一命令係根據對應於該第一工作佇列之一第一工作類型之優先權來執行;其中,當該複數個工作佇列中所有工作吞吐量之加總大於該記憶體系統之一頻寬時,該第一工作係根據對應於該第一工作佇列之該第一工作類型之優先權進行選擇。
- 如請求項11所述之記憶體系統,其中當欲執行之一第二工作到達時,該第二工作被分類至該複數個工作類型中一第二工作類型並儲存於對應於該第二工作類型之一第二工作佇列。
- 如請求項12所述之記憶體系統,另包含將儲存於該複數個工作佇列中該第二工作佇列之該第二工作轉換為至少一命令,以儲存於該至少一執行佇列中一第二執行佇列。
- 如請求項13所述之記憶體系統,其中該第二執行佇列中之該至少一命令係根據對應於該第二工作佇列之一第二工作類型之優先權來執行。
- 如請求項12所述之記憶體系統,另包含將儲存於該複數個工作佇列中該 第二工作佇列之該第二工作轉換為至少一命令,以儲存於該至少一執行佇列中該第一執行佇列。
- 如請求項15所述之記憶體系統,其中該第二工作之優先權高於該第一工作之優先權,由該第二工作轉換之命令先被執行,再執行由該第一工作轉換之命令。
- 如請求項11所述之記憶體系統,另包含於該複數個工作類型中一工作類型定義一目標吞吐量。
- 如請求項11所述之記憶體系統,其中該至少一執行佇列中每一執行佇列係對應於該複數個記憶體中至少一記憶體。
- 如請求項18所述之記憶體系統,其中該至少一命令係透過一交錯方式執行於該複數個記憶體中。
- 如請求項11所述之記憶體系統,其中該複數個工作類型中每一工作類型之該優先權係根據該記憶體系統之一狀態來指定。
- 一種工作排程方法,用於一記憶體系統中之複數個記憶體,該方法包含有:接收一工作;判斷該工作之一工作類型;根據該工作之該工作類型,將該工作排列於一相對應的工作佇列;當複數個工作佇列中複數個工作的吞吐量之加總大於該記憶體系統之一頻寬時,根據該工作之該工作類型,賦予該工作一優先權;根據該工作之該優先權,將該工作轉換為至少一命令;以及 根據該工作之該優先權,將由該工作轉換而成之該至少一命令排入一相對應的執行佇列。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/674,106 US9058208B2 (en) | 2012-11-12 | 2012-11-12 | Method of scheduling tasks for memories and memory system thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201419157A TW201419157A (zh) | 2014-05-16 |
TWI484414B true TWI484414B (zh) | 2015-05-11 |
Family
ID=50683047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102107055A TWI484414B (zh) | 2012-11-12 | 2013-02-27 | 用於記憶體之工作排程方法及其記憶體系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9058208B2 (zh) |
CN (1) | CN103809917A (zh) |
TW (1) | TWI484414B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015086846A2 (fr) * | 2013-12-12 | 2015-06-18 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Systeme de gestion de l'usure d'une memoire electronique |
EP3080815B1 (fr) * | 2013-12-12 | 2023-11-22 | Commissariat à l'Energie Atomique et aux Energies Alternatives | Système et procédé de gestion de l'usure d'une mémoire électronique |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9536010B2 (en) * | 2014-08-11 | 2017-01-03 | Amadeus S.A.S. | Automated ticketing |
US9547521B2 (en) * | 2014-09-25 | 2017-01-17 | Oracle International Corporation | System and method for supporting dynamic thread pool sizing in a distributed data grid |
US9965323B2 (en) | 2015-03-11 | 2018-05-08 | Western Digital Technologies, Inc. | Task queues |
KR102464801B1 (ko) * | 2015-04-14 | 2022-11-07 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
US9870266B2 (en) * | 2015-07-30 | 2018-01-16 | Nasdaq, Inc. | Background job processing framework |
CN106547701B (zh) * | 2015-09-17 | 2020-01-10 | 慧荣科技股份有限公司 | 记忆装置及数据读取方法 |
TWI629638B (zh) * | 2015-11-10 | 2018-07-11 | 慧榮科技股份有限公司 | 儲存裝置及其任務執行方法、對應於儲存裝置的主機及其任務執行方法、以及應用於儲存裝置的控制單元 |
WO2017171575A1 (en) * | 2016-03-30 | 2017-10-05 | Emc Corporation | Virtual machine storage management queue |
TWI587214B (zh) * | 2016-04-21 | 2017-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置、其控制單元及其任務排序方法 |
KR20180053027A (ko) | 2016-11-11 | 2018-05-21 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
CN106547492B (zh) * | 2016-12-08 | 2018-03-20 | 北京得瑞领新科技有限公司 | 一种nand闪存设备的操作指令调度方法及装置 |
CN108228240B (zh) * | 2016-12-14 | 2021-02-26 | 北京国双科技有限公司 | 多任务队列中任务的处理方法和装置 |
JP6677627B2 (ja) * | 2016-12-20 | 2020-04-08 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびメモリアクセス方法 |
US10503412B2 (en) * | 2017-05-24 | 2019-12-10 | Western Digital Technologies, Inc. | Priority-based internal data movement |
US10359948B2 (en) * | 2017-08-28 | 2019-07-23 | International Business Machines Corporation | I/O performance in heterogeneous storage environments |
CN108182158A (zh) * | 2018-01-12 | 2018-06-19 | 江苏华存电子科技有限公司 | 一种应用在存储系统中的任务调度优化方法 |
KR20200076923A (ko) * | 2018-12-20 | 2020-06-30 | 에스케이하이닉스 주식회사 | 저장 장치, 컨트롤러 및 저장 장치의 동작 방법 |
KR20210025412A (ko) * | 2019-08-27 | 2021-03-09 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
CN111158888A (zh) * | 2019-12-31 | 2020-05-15 | 北京明略软件系统有限公司 | 多任务调度方法和装置 |
CN113985818B (zh) * | 2021-10-25 | 2023-06-27 | 西安热工研究院有限公司 | 汽轮机伺服卡任务调度方法、调度系统及汽轮机伺服卡 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061709A (en) * | 1998-07-31 | 2000-05-09 | Integrated Systems Design Center, Inc. | Integrated hardware and software task control executive |
US20010007559A1 (en) * | 2000-01-06 | 2001-07-12 | International Business Machines Corporation | Interleaved processing system for processing frames within a network router |
US20020191555A1 (en) * | 2001-03-09 | 2002-12-19 | Borst Simon C. | Dynamic rate control methods and apparatus for scheduling data transmissions in a communication network |
US7155716B2 (en) * | 2002-03-08 | 2006-12-26 | Intel Corporation | Weighted and prioritized task scheduler |
-
2012
- 2012-11-12 US US13/674,106 patent/US9058208B2/en active Active - Reinstated
-
2013
- 2013-02-27 TW TW102107055A patent/TWI484414B/zh active
- 2013-03-21 CN CN201310091661.5A patent/CN103809917A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061709A (en) * | 1998-07-31 | 2000-05-09 | Integrated Systems Design Center, Inc. | Integrated hardware and software task control executive |
US20010007559A1 (en) * | 2000-01-06 | 2001-07-12 | International Business Machines Corporation | Interleaved processing system for processing frames within a network router |
US20020191555A1 (en) * | 2001-03-09 | 2002-12-19 | Borst Simon C. | Dynamic rate control methods and apparatus for scheduling data transmissions in a communication network |
US7155716B2 (en) * | 2002-03-08 | 2006-12-26 | Intel Corporation | Weighted and prioritized task scheduler |
Also Published As
Publication number | Publication date |
---|---|
TW201419157A (zh) | 2014-05-16 |
US20140137128A1 (en) | 2014-05-15 |
US9058208B2 (en) | 2015-06-16 |
CN103809917A (zh) | 2014-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI484414B (zh) | 用於記憶體之工作排程方法及其記憶體系統 | |
US11681614B1 (en) | Storage device with subdivisions, subdivision query, and write operations | |
CN108932109B (zh) | 基于优先级的内部数据移动 | |
US9710377B1 (en) | Multi-array operation support and related devices, systems and software | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
KR101486987B1 (ko) | 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법 | |
US8341374B2 (en) | Solid state drive and related method of scheduling operations | |
CN103135945B (zh) | 用于ssd的多通道动态读写调度方法 | |
US20130212319A1 (en) | Memory system and method of controlling memory system | |
US20120110239A1 (en) | Causing Related Data to be Written Together to Non-Volatile, Solid State Memory | |
WO2020007030A1 (zh) | 一种系统控制器和系统垃圾回收方法 | |
US20200409874A1 (en) | Data storage system data access arbitration | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
US10628045B2 (en) | Internal data transfer management in a hybrid data storage device | |
CN112783424B (zh) | 存储装置及其控制方法 | |
US11593262B1 (en) | Garbage collection command scheduling | |
US10872015B2 (en) | Data storage system with strategic contention avoidance | |
US20220113898A1 (en) | Data storage system with workload-based asymmetry compensation | |
CN114174977B (zh) | 改进对存储器子系统中的主机起始的请求的处置 | |
CN1749971A (zh) | 用长寿命非挥发性存储芯片提高内部或外部存储器使用寿命 | |
US20120082017A1 (en) | Storage region providing device, storage region providing method, and recording medium | |
US20230393877A1 (en) | Apparatus with dynamic arbitration mechanism and methods for operating the same | |
KR20120011634A (ko) | 플래시 메모리장치 | |
Xiangfeng | IO Pattern based Optimization in SSD | |
CN117632255A (zh) | 基于命令处理器工作负载的存储器命令指派 |