TWI685744B - 指令處理方法及使用所述方法的儲存控制器 - Google Patents
指令處理方法及使用所述方法的儲存控制器 Download PDFInfo
- Publication number
- TWI685744B TWI685744B TW107131366A TW107131366A TWI685744B TW I685744 B TWI685744 B TW I685744B TW 107131366 A TW107131366 A TW 107131366A TW 107131366 A TW107131366 A TW 107131366A TW I685744 B TWI685744 B TW I685744B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- command
- continuous
- commands
- instructions
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000001186 cumulative effect Effects 0.000 claims description 5
- 230000007423 decrease Effects 0.000 claims 2
- 230000015654 memory Effects 0.000 description 22
- 230000005540 biological transmission Effects 0.000 description 20
- 230000005055 memory storage Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000010187 selection method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
Abstract
本發明提出一種指令處理方法及儲存控制器。指令處理方法包括:對指令佇列依序接收的多個指令執行指令合併程序。指令合併程序包括初始化步驟及多個疊代。初始化步驟包括:將指令佇列中的指令傳送到連續性檢查池,將連續性檢查池中的指令的初始指令傳送到連續清單,並設定連續清單的範圍。每個疊代包括:將指令佇列中的指令傳送到連續性檢查池;判斷連續性檢查池的指令與連續清單的範圍是否符合連續條件;以及當指令的第一指令與範圍符合連續條件時,將第一指令附接到連續清單並根據第一指令重新設定連續清單的範圍。
Description
本發明是有關於一種指令處理方法及使用所述方法的儲存控制器,且特別是有關於一種能預先將存取連續位址的指令排序的指令處理方法及使用所述方法的儲存控制器。
一般的儲存控制器在處理主機命令時通常是依照從主機接收到的命令的順序來執行命令。當主機要存取檔案時,可以傳送單一輸入輸出指令來對應檔案的總傳輸大小,或是傳送多個輸入輸出指令分別對應較小的檔案傳輸大小。與多個輸入輸出指令將比,單一輸入輸出指令可讓韌體更容易管理所需的資料緩衝器。
在存取儲存媒體的觀點中,具有連續邏輯區塊位址的資料往往會儲存在儲存媒體的連續或鄰近的實體位址。當主機傳資料到儲存裝置時,越多的邏輯區塊連續性可讓儲存裝置有更短的媒體存取延遲及更少的媒體資料管理負擔。
在支持非依序(out of order)指令執行的系統架構中,儲存控制器可不依照從主機接收到的命令的順序來執行命令。因此,如何能將主機命令重新排列以增加命令所存取的邏輯區塊的連續性,是本領域技術人員應致力的目標。
本發明提供一種指令處理方法及使用所述方法的儲存控制器,能增加主機命令所存取的邏輯區塊的連續性。
本發明提出一種指令處理方法,適用於儲存控制器。儲存控制器用於存取儲存媒體並耦接至主機系統。指令處理方法包括:從讀取指令佇列及寫入指令佇列選出指令佇列,並對指令佇列依序接收的多個指令執行指令合併程序。上述指令包括起始邏輯區塊位址及結束邏輯區塊位址。指令合併程序包括初始化步驟及多個疊代。初始化步驟包括:將指令佇列中的指令傳送到連續性檢查池,將連續性檢查池中的指令的初始指令傳送到連續清單,並將連續清單的範圍設定為初始指令的起始邏輯區塊位址及結束邏輯區塊位址。每個疊代包括:將指令佇列中的指令傳送到連續性檢查池;判斷連續性檢查池的指令與連續清單的範圍是否符合連續條件;以及當上述指令的第一指令與上述範圍符合連續條件時,將第一指令附接到連續清單並根據第一指令重新設定連續清單的範圍。
在本發明的一實施例中,當第一指令的起始邏輯區塊位址等於連續清單的結束邏輯區塊位址加一,或第一指令的結束邏輯區塊位址等於連續清單的起始邏輯區塊位址減一時,第一指令與連續清單的範圍符合連續條件。
在本發明的一實施例中,上述指令處理方法更包括:當指令合併程序完成時,依序執行連續清單的指令。
在本發明的一實施例中,上述指令合併程序的完成條件為:在疊代的其中之一,連續性檢查池的指令與連續清單的範圍都不連續。
在本發明的一實施例中,上述指令合併程序的完成條件為:疊代的其中之一完成且些疊代的累積次數等於預定次數。
在本發明的一實施例中,上述指令合併程序的完成條件為:計時器到期,其中計時器在指令合併程序開始時開始。
在本發明的一實施例中,上述在每個疊代中,傳送到連續性檢查池的指令的數量小於連續性檢查池的最大指令數量減掉儲存於連續性檢查池中的指令的數量。
本發明提出一種儲存控制器,用於存取儲存媒體並耦接至主機系統。儲存控制器包括:指令分派器,將多個讀取指令分派到讀取指令佇列並將多個寫入指令分派到寫入指令佇列;指令排程器,耦接到指令分派器;仲裁器,耦接到指令排程器;以及處理器,耦接到指令分派器、指令排程器及仲裁器的至少其中之一。仲裁器從讀取指令佇列及寫入指令佇列選出指令佇列,且指令排程器對指令佇列依序接收的多個指令執行指令合併程序。指令包括起始邏輯區塊位址及結束邏輯區塊位址。指令合併程序包括初始化步驟及多個疊代。初始化步驟包括:藉由指令排程器將指令佇列中的指令傳送到連續性檢查池,將連續性檢查池中的指令的初始指令傳送到連續清單,並將連續清單的範圍設定為初始指令的起始邏輯區塊位址及結束邏輯區塊位址。每個疊代包括:藉由指令排程器將指令佇列中的指令傳送到連續性檢查池;判斷連續性檢查池的指令與連續清單的範圍是否符合連續條件;以及當些指令的第一指令與上述範圍符合連續條件時,將第一指令附接到連續清單並根據第一指令重新設定連續清單的範圍。
在本發明的一實施例中,當第一指令的起始邏輯區塊位址等於連續清單的結束邏輯區塊位址加一,或第一指令的結束邏輯區塊位址等於連續清單的起始邏輯區塊位址減一時,第一指令與連續清單的範圍符合連續條件。
在本發明的一實施例中,上述指令處理方法更包括:當指令合併程序完成時,處理器依序執行連續清單的指令。
在本發明的一實施例中,上述指令合併程序的完成條件為:在疊代的其中之一,連續性檢查池的指令與連續清單的範圍都不連續。
在本發明的一實施例中,上述指令合併程序的完成條件為:疊代的其中之一完成且些疊代的累積次數等於預定次數。
在本發明的一實施例中,上述指令合併程序的完成條件為:計時器到期,其中計時器在指令合併程序開始時開始。
在本發明的一實施例中,上述在每個疊代中,傳送到連續性檢查池的指令的數量小於連續性檢查池的最大指令數量減掉儲存於連續性檢查池中的指令的數量。
基於上述,本發明的指令處理方法及使用所述方法的儲存控制器會將從主機接收的指令分派到讀取指令佇列及寫入指令佇列,並從讀取指令佇列及寫入指令佇列選出一指令佇列以進行指令合併程序。在指令合併程序的初始化步驟中,初始指令會被傳送到連續清單且連續清單的範圍會被設定為初始指令的起始邏輯區塊位址及結束邏輯區塊位址。在指令合併程序的多個疊代中,當有指令與連續清單的範圍符合連續條件時,此指令會被附接到連續清單並根據此指令重新設定連續清單的範圍。當指令合併程序完成時,處理器依序執行連續清單的指令,以存取連續的邏輯區塊位址。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,儲存裝置包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與儲存裝置控制器(亦稱,儲存控制器或儲存控制電路)。通常儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至儲存裝置或從儲存裝置中讀取資料。
圖1為根據本發明一實施例的主機系統及儲存裝置的方塊圖。
請參照圖1,主機系統(Host System)10包括主機處理器(未繪示於圖中)、主機記憶體(Host Memory)100及資料傳輸介面電路(Data Transfer Interface Circuit) (未繪示於圖中)。在本實施例中,資料傳輸介面電路耦接(亦稱,電性連接)至主機處理器與主機記憶體100。在另一實施例中,主機處理器、主機記憶體100與資料傳輸介面電路之間利用系統匯流排(System Bus)彼此耦接。
儲存裝置20包括儲存控制器(Storage Controller)200、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)300、儲存媒體(Storage Media)400_0至400_n及連接介面電路(Connection Interface Circuit)(未繪示於圖中)。儲存媒體400_0至400_n可為可複寫式非揮發性記憶體模組(Rewritable Non-Volatile Memory Module)。
在本實施例中,主機系統10是透過資料傳輸介面電路與儲存裝置20的連接介面電路(又稱為儲存裝置20的主機介面)至儲存裝置20來進行資料的存取操作。例如,主機系統10可經由資料傳輸介面電路將資料儲存至儲存裝置20或從儲存裝置20中讀取資料。
在本實施例中,主機處理器、主機記憶體100及資料傳輸介面電路可設置在主機系統10的主機板上。資料傳輸介面電路的數目可以是一或多個。透過資料傳輸介面電路,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive, SSD)或無線記憶體儲存裝置。無線記憶體儲存裝置可例如是近距離無線通訊(Near Field Communication, NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機系統10也可以透過系統匯流排耦接至全球定位系統(Global Positioning System, GPS)模組、網路介面卡、無線傳輸裝置、鍵盤、螢幕、喇叭等各式I/O裝置。
在本實施例中,資料傳輸介面電路與連接介面電路是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準的介面電路。並且,資料傳輸介面電路與連接介面電路之間是利用快速非揮發性記憶體(Non-Volatile Memory express,NVMe)控制器介面、進階主機控制器介面(Advanced Host Controller Interface,AHCI)或PCIe架構佇列介面(PCIe architecture Queuing Interface,PQI)等協定來進行資料的傳輸並可具有亂序執行(out-of-order execution,OOE)功能。其中快速非揮發性記憶體協定可具有輸入輸出提交佇列(Input/Output Submission Queue,IOSQ)及輸入輸出完成佇列(Input/Output Completion Queue,IOCQ)架構,進階主機控制器介面協定可具有(Native Command Queue,NCQ)指令支援,PCIe架構佇列介面協定可具有輸入佇列(Input Queue,IQ)及輸出佇列(Output Queue,OQ)架構。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路與連接介面電路亦可以是符合並列先進附件(Parallel Advanced Technology Attachment, PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers, IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment, SATA)標準、通用序列匯流排(Universal Serial Bus, USB)標準、SD介面標準、超高速一代(Ultra High Speed-I, UHS-I)介面標準、超高速二代(Ultra High Speed-II, UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card, MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage, UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics, IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路可與儲存控制器200封裝在一個晶片中,或者連接介面電路是佈設於一包含儲存控制器200之晶片外。
在本實施例中,主機記憶體100用以暫存主機處理器所執行的指令或資料。例如,在本範例實施例中,主機記憶體100可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體100也可以是其他適合的記憶體。
在本實施例中,儲存控制器200包括處理器201、指令輸入器210、指令分派器220、讀取指令排程器230、寫入指令排程器240、仲裁器250。處理器201負責主機輸入輸出指令的處理。除了處理器201之外,儲存控制器200還可包括一到多個處理器202,負責主機輸入輸出指令以外的指令的處理。
當指令輸入器210從主機記憶體100接收到多個指令時,指令輸入器210會將指令傳送到指令分派器220。指令分派器220會將指令分為讀取指令與寫入指令,並分別將讀取指令與寫入指令分派到讀取指令排程器230的讀取指令佇列231及寫入指令排程器240的寫入指令佇列241。仲裁器250會根據一個預定仲裁機制來選擇讀取指令排程器230中的讀取指令群組或寫入指令排程器240中的寫入指令群組,並執行選出的讀取指令群組或寫入指令群組。
以下說明寫入指令群組的選擇方法。當仲裁器250選擇寫入指令群組時,寫入指令排程器240會開始執行指令合併程序。寫入指令排程器240會將寫入指令佇列241中的寫入指令載入連續性檢查池(Continuity Checking Pool,CCP)242中。連續性檢查池242可為緩衝記憶體,且連續性檢查池242中儲存的寫入指令並沒有順序的分別。接著,寫入指令排程器240會檢查連續性檢查池242中的寫入指令是否能附接(append)到連續清單(Continuity List,CL)243。連續清單243記錄了一到多個邏輯區塊位址連續的寫入指令,且連續資訊記錄器(Continuity Information Recorder,CIR)244會記錄連續清單243中的連續寫入指令的起始邏輯區塊位址(Starting Logic Block Address,SLBA)及結束邏輯區塊位址(Ending Logic Block Address,SLBA)。若連續性檢查池242中存在一個寫入指令可附接到連續清單243前或連續清單243後,則寫入指令排程器240會將此寫入指令附接到連續清單243,並且更新連續資訊記錄器244的起始邏輯區塊位址及結束邏輯區塊位址。
舉例來說,當一個寫入指令附接到連續清單243前的時候,連續資訊記錄器244的起始邏輯區塊位址會被更新成附接到連續清單243前的寫入指令的起始邏輯區塊位址。當一個寫入指令附接到連續清單243後的時候,連續資訊記錄器244的結束邏輯區塊位址會被更新成附接到連續清單243後的寫入指令的結束邏輯區塊位址。
值得注意的是,當連續清單243中沒有寫入指令時,寫入指令排程器240可從連續性檢查池242中隨機選擇一個寫入指令傳送到連續清單243,並將連續資訊記錄器244的起始邏輯區塊位址及結束邏輯區塊位址初始化成隨機選擇的寫入指令的起始邏輯區塊位址及結束邏輯區塊位址。在另一實施例中,當連續清單243中沒有寫入指令時,寫入指令排程器240也可從連續性檢查池242中選擇最先從寫入指令佇列241提出(pop)出來的寫入指令傳送到連續清單243。
在連續性檢查池242的寫入指令附接到連續清單243並更新連續資訊記錄器244之後,就完成了一次疊代操作。寫入指令排程器240可執行多次疊代操作以將連續性檢查池242中的連續寫入指令傳送到連續清單243。在一實施例中,當寫入指令排程器240在連續性檢查池242中再也找不到能附接到連續清單243的寫入指令時,則指令合併程序完成。處理器201依序執行連續清單243的寫入指令並啟動對應寫入指令的資料傳輸。在另一實施例中,指令合併程序完成的條件可設定為其中一次疊代操作完成且疊代操作的累積次數等於一預定次數。在另一實施例中,指令合併程序完成的條件可設定為計時器到期,其中計時器在指令合併程序開始時開始。
讀取指令群組的選擇方法與上述寫入指令群組的選擇方法類似,因此不再贅述。
在本實施例中,儲存控制器200還包括資料傳輸電路260、資料緩衝器270與儲存媒體介面電路280。當指令被執行時,資料傳輸電路260用以接受處理器201的指示來與主機記憶體100進行資料的傳輸。例如,經由連接介面電路從主機系統10(如,主機記憶體100)讀取資料,將從主機系統10讀取的資料暫存在資料緩衝器270,接著將所讀取的資料經由儲存媒體介面電路280寫入至儲存媒體400_0至400_n中。又例如,經由儲存媒體介面電路280從儲存媒體400_0至400_n讀取資料,並且將所讀取的資料經由連接介面電路寫入至主機系統10(如,主機記憶體100)中。儲存媒體介面電路280用以接受處理器201的指示,配合資料傳輸電路260來進行對於儲存媒體400_0至400_n的資料的寫入(亦稱,程式化,Programming)、讀取操作。儲存媒體介面電路280亦可對儲存媒體400_0至400_n進行抹除操作。此外,透過儲存媒體介面電路280寫入儲存媒體400_0至400_n的資料可以先暫存在動態隨機存取記憶體300中,且儲存媒體介面電路280從儲存媒體400_0至400_n讀出的資料也可暫存在動態隨機存取記憶體300中。
值得注意的是,指令輸入器210、指令分派器220、讀取指令排程器230、寫入指令排程器240、仲裁器250可由硬體電路或韌體的方式來實作。
圖2為根據本發明一實施例的指令合併程序的流程圖。
請參照圖2,在步驟S201中,仲裁器250選擇下個指令群組。在此的指令群組可分別對應到讀取指令排程器230中的讀取指令群組或寫入指令排程器240中的讀取指令群組。
在步驟S210中,執行初始化步驟。
在步驟S211中,重新載入(reload)連續性檢查池。
在步驟S212中,判斷是否有指令在連續性檢查池中。若有指令在連續性檢查池中,則進入步驟S213。若沒有指令在連續性檢查池中,則回到步驟S201。
在步驟S213中,從連續性檢查池選出一個指令並根據此指令更新連續清單及連續資訊記錄器,再從連續性檢查池移除此指令。
在步驟S220中,執行疊代步驟。
在步驟S221中,重新載入連續性檢查池。
在步驟S222中,連續性檢查池中是否存在尚未檢查連續性的指令。若連續性檢查池中不存在尚未檢查連續性的指令,則進入步驟S230,啟動連續清單指令的資料傳輸。若連續性檢查池中存在尚未檢查連續性的指令,則進入步驟S223。
在步驟S223中,選擇一個連續性檢查池中存在尚未檢查連續性的指令,並檢查此指令的連續性。
在步驟S224中,指令是否符合連續性條件。若指令不符合連續性條件,則回到步驟S222。若指令符合連續性條件,則進入步驟S225。
在步驟S225中,根據符合連續性條件的指令更新連續清單及連續資訊記錄器,再從連續性檢查池移除此指令。
表1為指令佇列(讀取指令佇列231或寫入指令佇列241)從命令分派器220依序接收到的10個指令C
0、C
1、…、C
9。每個指令的邏輯區塊位址(Logic Block Address,LBA)的範圍為1到3。表1列舉了每個指令的起始邏輯區塊位址(Starting Logic Block Address,SLBA)資訊、邏輯區塊數量(Number of Logic Blocks,NLB)資訊、結束邏輯區塊位址(Ending Logic Block Address,ELBA)資訊。
[表1]
SLBA | NLB | ELBA | |
C0 | 8 | 1 | 9 |
C1 | 5 | 0 | 5 |
C2 | 10 | 1 | 11 |
C3 | 2 | 1 | 3 |
C4 | 6 | 1 | 7 |
C5 | 13 | 1 | 14 |
C6 | 12 | 0 | 12 |
C7 | 17 | 2 | 19 |
C8 | 1 | 0 | 1 |
C9 | 14 | 2 | 16 |
圖3為根據本發明一實施例的指令合併程序的範例。
在圖3中,連續性檢查池的指令緩衝器大小為4。也就是說連續性檢查池最多能暫存4個指令。
請同時參照圖3及表1。首先,在仲裁器250選擇指令群組並開始指令合併程序之後,指令C
0、C
1、C
2依序被傳送到指令佇列中。
在初始化步驟中,指令佇列中的C
0、C
1、C
2被傳送到連續性檢查池。連續清單被初始化成C
0,且連續資訊記錄器的SLBA欄位及ELBA欄位分別被初始化成C
0的SLBA及ELBA,也就是8及9。同時,指令佇列接收到新的指令C
3。
在第1次疊代中,C
3從指令佇列被載入連續性檢查池中(即,重新載入連續性檢查池)。由於C
2符合連續性條件,因此C
2從連續性檢查池被移除並被附接在連續清單之後。連續資訊記錄器的ELBA欄位被更新成11。同時,指令佇列接收到新的指令C
4、C
5、C
6、C
7、C
8。
值得注意的是,在本實施例中,當一個指令的SLBA等於連續資訊記錄器的ELBA+1,或是一個指令的ELBA等於連續資訊記錄器的SLBA-1,則此指令就符合連續性條件。
在第2次疊代中,C
4、C
5從指令佇列被載入連續性檢查池中。由於C
4符合連續性條件,因此C
4從連續性檢查池被移除並被附接在連續清單之前。連續資訊記錄器的SLBA欄位被更新成6。同時,指令佇列接收到新的指令C
9。
在第3次疊代中,C
6從指令佇列被載入連續性檢查池中。由於C
1、C
6符合連續性條件,因此C
1從連續性檢查池被移除並被附接在連續清單之前,且C
6從連續性檢查池被移除並被附接在連續清單之後。連續資訊記錄器的SLBA欄位被更新成5且SLBA欄位被更新成12。值得注意的是,雖然在圖2實施例中,在一次疊代中只會將一個指令附接到連續清單,但本發明並不以此為限。在另一實施例中,在一次疊代中也可將兩個指令附接到連續清單。例如,在本範例的第3次疊代中,由於C
1、C
6都符合連續性條件,因此C
1與C
6分別被附接到連續清單之前與之後。
在第4次疊代中,C
7、C
8從指令佇列被載入連續性檢查池中。由於C
5符合連續性條件,因此C
5從連續性檢查池被移除並被附接在連續清單之後。連續資訊記錄器的ELBA欄位被更新成14。
在第5次疊代中,C
9從指令佇列被載入連續性檢查池中。由於連續性檢查池中沒有指令符合連續條件,因此指令合併程序結束且處理器201啟動對應連續清單中的指令的資料傳輸。
圖4A到圖4C為傳統指令處理方法與本發明實施例的指令處理方法的指令連續性比較。
在圖4A中,指令C
0到C
9會被依序執行,這造成執行過程中指令所存取的邏輯區塊位址的不連續。
在圖4B中,顯示了將連續性檢查池的大小(即,連續性檢查池可暫存的指令數量)設定為4時,會將指令C
0到C
9分成3組邏輯區塊位址連續的指令群組。這可增加指令執行的效率。P代表了第P次指令合併程序。
在圖4C中,顯示了將連續性檢查池的大小設定為2時,會將指令C
0到C
9分成6組邏輯區塊位址連續的指令群組。由圖4B及圖4C的比較可得知,若使用更多資源來增加連續性檢查池的大小,就可增加指令合併程序的執行效果。
綜上所述,本發明的指令處理方法及使用所述方法的儲存控制器會將從主機接收的指令分派到讀取指令佇列及寫入指令佇列,並從讀取指令佇列及寫入指令佇列選出一指令佇列以進行指令合併程序。在指令合併程序的初始化步驟中,初始指令會被傳送到連續清單且連續清單的範圍會被設定為初始指令的起始邏輯區塊位址及結束邏輯區塊位址。在指令合併程序的多個疊代中,當有指令與連續清單的範圍符合連續條件時,此指令會被附接到連續清單並根據此指令重新設定連續清單的範圍。當指令合併程序完成時,處理器依序執行連續清單的指令,以存取連續的邏輯區塊位址。透過本發明的指令處理方法及使用所述方法的儲存控制器,可增加資料傳輸時邏輯區塊位址連續的機會,從而獲得更短的媒體存取延遲及更少的媒體資料管理負擔。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧主機系統
20‧‧‧儲存裝置
100‧‧‧主機記憶體
200‧‧‧儲存控制器
201、202‧‧‧處理器
210‧‧‧指令輸入器
220‧‧‧指令分派器
230‧‧‧讀取指令排程器
231‧‧‧讀取指令佇列
232‧‧‧連續性檢查池
233‧‧‧連續清單
234‧‧‧連續資訊記錄器
240‧‧‧寫入指令排程器
241‧‧‧寫入指令佇列
242‧‧‧連續性檢查池
243‧‧‧連續清單
244‧‧‧連續資訊記錄器
250‧‧‧仲裁器
260‧‧‧資料傳輸電路
270‧‧‧資料緩衝器
280‧‧‧儲存媒體介面電路
300‧‧‧動態隨機存取記憶體
400_0~400_n‧‧‧儲存媒體
S201、S210~S213、S220~S225、S230‧‧‧指令處理方法的步驟
圖1為根據本發明一實施例的主機系統及儲存裝置的方塊圖。 圖2為根據本發明一實施例的指令合併程序的流程圖。 圖3為根據本發明一實施例的指令合併程序的範例。 圖4A為傳統指令處理方法的指令連續性。 圖4B為根據本發明一實施例的指令處理方法的指令連續性。 圖4C為根據本發明另一實施例的指令處理方法的指令連續性。
S201、S210~S213、S220~S225、S230‧‧‧指令處理方法的步驟
Claims (14)
- 一種指令處理方法,適用於一儲存控制器,該儲存控制器用於存取一儲存媒體並耦接至一主機系統,該儲存控制器支持一非依序指令執行並可不依照從該主機系統接收到的多個命令的順序來執行該些命令,該指令處理方法包括:從一讀取指令佇列及一寫入指令佇列選出一指令佇列,並對該指令佇列依序接收的多個指令執行一指令合併程序,該些指令包括一起始邏輯區塊位址及一結束邏輯區塊位址,該指令合併程序包括一初始化步驟及多個疊代(iteration),其中該初始化步驟包括:將該指令佇列中的該些指令傳送到一連續性檢查池,將該連續性檢查池中的該些指令的一初始指令傳送到一連續清單,並將該連續清單的一範圍設定為該初始指令的該起始邏輯區塊位址及該結束邏輯區塊位址,其中每個該些疊代包括:將該指令佇列中的該些指令傳送到該連續性檢查池;判斷該連續性檢查池的該些指令與該連續清單的該範圍是否符合一連續條件;以及當該些指令的一第一指令與該範圍符合該連續條件時,將該第一指令附接到該連續清單並根據該第一指令重新設定該連續清單的該範圍。
- 如申請專利範圍第1項所述的指令處理方法,其中當該第一指令的該起始邏輯區塊位址等於該連續清單的該結束邏輯區塊位址加一,或該第一指令的該結束邏輯區塊位址等於該連續清 單的該起始邏輯區塊位址減一時,該第一指令與該連續清單的該範圍符合該連續條件。
- 如申請專利範圍第1項所述的指令處理方法,更包括:當該指令合併程序完成時,依序執行該連續清單的該些指令。
- 如申請專利範圍第3項所述的指令處理方法,其中該指令合併程序的完成條件為:在該些疊代的其中之一,該連續性檢查池的該些指令與該連續清單的該範圍都不連續。
- 如申請專利範圍第3項所述的指令處理方法,其中該指令合併程序的完成條件為:該些疊代的其中之一完成且該些疊代的一累積次數等於一預定次數。
- 如申請專利範圍第3項所述的指令處理方法,其中該指令合併程序的完成條件為:一計時器到期,其中該計時器在該指令合併程序開始時開始。
- 如申請專利範圍第1項所述的指令處理方法,其中在每個該些疊代中,傳送到該連續性檢查池的該些指令的數量小於該連續性檢查池的一最大指令數量減掉儲存於該連續性檢查池中的該些指令的數量。
- 一種儲存控制器,用於存取一儲存媒體並耦接至一主機系統,該儲存控制器支持一非依序指令執行並可不依照從該主機系統接收到的多個命令的順序來執行該些命令,該儲存控制器包括:一指令分派器,將多個讀取指令分派到一讀取指令佇列並將 多個寫入指令分派到一寫入指令佇列;一指令排程器,耦接到該指令分派器;一仲裁器,耦接到該指令排程器;以及一處理器,耦接到該指令分派器、該指令排程器及該仲裁器的至少其中之一,其中該仲裁器從該讀取指令佇列及該寫入指令佇列選出一指令佇列,且該指令排程器對該指令佇列依序接收的多個指令執行一指令合併程序,該些指令包括一起始邏輯區塊位址及一結束邏輯區塊位址,該指令合併程序包括一初始化步驟及多個疊代(iteration),其中該初始化步驟包括:藉由該指令排程器將該指令佇列中的該些指令傳送到一連續性檢查池,將該連續性檢查池中的該些指令的一初始指令傳送到一連續清單,並將該連續清單的一範圍設定為該初始指令的該起始邏輯區塊位址及該結束邏輯區塊位址,其中每個該些疊代包括:藉由該指令排程器將該指令佇列中的該些指令傳送到該連續性檢查池;判斷該連續性檢查池的該些指令與該連續清單的該範圍是否符合一連續條件;以及當該些指令的一第一指令與該範圍符合該連續條件時,將該第一指令附接到該連續清單並根據該第一指令重新設定該連續清單的該範圍。
- 如申請專利範圍第8項所述的儲存控制器,其中當該第一指令的該起始邏輯區塊位址等於該連續清單的該結束邏輯區塊位址加一,或該第一指令的該結束邏輯區塊位址等於該連續清單 的該起始邏輯區塊位址減一時,該第一指令與該連續清單的該範圍符合該連續條件。
- 如申請專利範圍第8項所述的儲存控制器,其中當該指令合併程序完成時,該處理器依序執行該連續清單的該些指令。
- 如申請專利範圍第10項所述的儲存控制器,其中該指令合併程序的完成條件為:在該些疊代的其中之一,該連續性檢查池的該些指令與該連續清單的該範圍都不連續。
- 如申請專利範圍第10項所述的儲存控制器,其中該指令合併程序的完成條件為:該些疊代的其中之一完成且該些疊代的一累積次數等於一預定次數。
- 如申請專利範圍第10項所述的儲存控制器,其中該指令合併程序的完成條件為:一計時器到期,其中該計時器在該指令合併程序開始時開始。
- 如申請專利範圍第8項所述的儲存控制器,其中在每個該些疊代中,傳送到該連續性檢查池的該些指令的數量小於該連續性檢查池的一最大指令數量減掉儲存於該連續性檢查池中的該些指令的數量。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107131366A TWI685744B (zh) | 2018-09-06 | 2018-09-06 | 指令處理方法及使用所述方法的儲存控制器 |
US16/184,928 US10782919B2 (en) | 2018-09-06 | 2018-11-08 | Command processing method and storage controller using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107131366A TWI685744B (zh) | 2018-09-06 | 2018-09-06 | 指令處理方法及使用所述方法的儲存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI685744B true TWI685744B (zh) | 2020-02-21 |
TW202011203A TW202011203A (zh) | 2020-03-16 |
Family
ID=69719573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107131366A TWI685744B (zh) | 2018-09-06 | 2018-09-06 | 指令處理方法及使用所述方法的儲存控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10782919B2 (zh) |
TW (1) | TWI685744B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3846026A4 (en) * | 2018-09-21 | 2021-11-03 | Huawei Technologies Co., Ltd. | DATA EXTRACTION PROCESS AND DEVICE |
CN110187835B (zh) * | 2019-05-24 | 2023-02-03 | 北京百度网讯科技有限公司 | 用于管理访问请求的方法、装置、设备和存储介质 |
CN114281723A (zh) * | 2020-09-28 | 2022-04-05 | 马来西亚瑞天芯私人有限公司 | 一种存储设备的内存控制器系统和内存调度方法 |
CN114416178A (zh) * | 2021-12-16 | 2022-04-29 | 北京小米移动软件有限公司 | 数据访问方法、装置及非临时性计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5519847A (en) * | 1993-06-30 | 1996-05-21 | Intel Corporation | Method of pipelining sequential writes in a flash memory |
US20100058022A1 (en) * | 2008-08-06 | 2010-03-04 | Yen-Ju Lu | Adaptive buffer device and method thereof |
US8484408B2 (en) * | 2010-12-29 | 2013-07-09 | International Business Machines Corporation | Storage system cache with flash memory in a raid configuration that commits writes as full stripes |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI366094B (en) * | 2007-12-28 | 2012-06-11 | Asmedia Technology Inc | Method and system of integrating data assessing commands and data accessing device thereof |
JP2010027032A (ja) * | 2008-06-17 | 2010-02-04 | Nec Electronics Corp | Fifo装置及びfifoバッファへのデータ格納方法 |
US9158687B2 (en) * | 2013-03-04 | 2015-10-13 | Dot Hill Systems Corporation | Method and apparatus for processing fast asynchronous streams |
-
2018
- 2018-09-06 TW TW107131366A patent/TWI685744B/zh active
- 2018-11-08 US US16/184,928 patent/US10782919B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5519847A (en) * | 1993-06-30 | 1996-05-21 | Intel Corporation | Method of pipelining sequential writes in a flash memory |
US20100058022A1 (en) * | 2008-08-06 | 2010-03-04 | Yen-Ju Lu | Adaptive buffer device and method thereof |
US8484408B2 (en) * | 2010-12-29 | 2013-07-09 | International Business Machines Corporation | Storage system cache with flash memory in a raid configuration that commits writes as full stripes |
Non-Patent Citations (2)
Title |
---|
Feng Chen, David A. Koufaty, and Xiaodong Zhang, "Understanding Intrinsic Characteristics and System^&rn^Implications of Flash Memory based Solid State Drives," ACM SIGMETRICS, 2009^&rn^ |
Feng Chen, David A. Koufaty, and Xiaodong Zhang, "Understanding Intrinsic Characteristics and System^&rn^Implications of Flash Memory based Solid State Drives," ACM SIGMETRICS, 2009^&rn^ * |
Also Published As
Publication number | Publication date |
---|---|
US20200081654A1 (en) | 2020-03-12 |
TW202011203A (zh) | 2020-03-16 |
US10782919B2 (en) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI685744B (zh) | 指令處理方法及使用所述方法的儲存控制器 | |
US9824004B2 (en) | Methods and apparatuses for requesting ready status information from a memory | |
TWI493350B (zh) | 用於周邊組件之高優先權命令佇列 | |
US8396994B1 (en) | Command queue for peripheral component | |
KR102330389B1 (ko) | 데이터 저장 장치 및 그것의 데이터 처리 방법 | |
US10338846B2 (en) | Method for reducing read buffer size requirements in NVMe based solid state drives | |
KR20160049200A (ko) | 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법 | |
US20170168930A1 (en) | Method for operating storage controller and method for operating storage device including the same | |
US20130179614A1 (en) | Command Abort to Reduce Latency in Flash Memory Access | |
US10585822B2 (en) | Operation method of host system including storage device and operation method of storage device controller | |
US20190384730A1 (en) | System And Method For Direct Memory Access In A Flash Storage | |
TWI639921B (zh) | 指令處理方法及使用所述方法的儲存控制器 | |
US8918680B2 (en) | Trace queue for peripheral component | |
TWI592866B (zh) | 固態硬碟系統的原子寫入方法以及使用該方法的裝置 | |
TWI474254B (zh) | 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統 | |
CN110908717B (zh) | 指令处理方法及使用所述方法的存储控制器 | |
US8117427B2 (en) | Motherboard, storage device and controller thereof, and booting method | |
KR20090053164A (ko) | 상태 정보를 관리하는 플래시 메모리 제어 장치 및 방법 | |
US10566062B2 (en) | Memory device and method for operating the same | |
US20240079037A1 (en) | Memory device for supporting stable data transfer and memory system including the same | |
CN109857331B (zh) | 指令处理方法及使用所述方法的储存控制器 | |
US20180307640A1 (en) | Data transfer apparatus, data transfer method, and computer-readable medium |