TWI740092B - 儲存裝置及巨集指令的執行方法 - Google Patents
儲存裝置及巨集指令的執行方法 Download PDFInfo
- Publication number
- TWI740092B TWI740092B TW108101642A TW108101642A TWI740092B TW I740092 B TWI740092 B TW I740092B TW 108101642 A TW108101642 A TW 108101642A TW 108101642 A TW108101642 A TW 108101642A TW I740092 B TWI740092 B TW I740092B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- memory
- macro
- register
- processing unit
- Prior art date
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明揭露一種儲存裝置,包括一記憶體模組及一記憶體控制器。記憶體控制器包括一記憶體介面控制單元、一指令佇列、一選擇單元、一緩存器以及一處理單元。處理單元用以執行:將複數序列的記憶體操作指令組成複數個巨集指令;寫入該些巨集指令至該緩存器;依據來自一主機的一主機指令寫入對應於主機指令的巨集指令的一或多個操作參數至該緩存器;命令選擇單元選擇緩存器做為輸入端;以及命令緩存器輸出對應於主機指令的巨集指令。
Description
本發明是有關於一種記憶體控制器及其操作方法。
儲存裝置(storage device)是計算機系統(computer system)中不可缺少的一個組件。一般而言,儲存裝置包括兩個部分:記憶體模組及記憶體控制器。記憶體模組可包括記憶體陣列及控制電路,其中記憶體陣列如NAND快閃(NAND flash)記憶體陣列或NOR快閃(NOR flash)記憶體陣列,而控制電路則是用以操作記憶體陣列以對其進行寫入操作或讀取操作。記憶體控制器作為主控制器(host controller)與記憶體模組的控制電路之間的控制介面,而接收來自主控制器的命令,並將之轉換為記憶體模組的控制電路能夠解析的訊號。若能提高記憶體控制器命令轉換的效率,將有助於提升儲存裝置的整體效能。
有鑑於此,本發明的目的是揭露一種記憶體控制器及其操作方法,以提高命令轉換的效率,進而提升儲存裝置的整體效能。
本發明的一方面揭露一種儲存裝置,包括一記憶體模組及一記憶體控制器。記憶體控制器耦接至記憶體模組,且包括一記憶體介面控制單元、一指令佇列、一選擇單元、一緩存器以及一處理單元。指令佇列耦接至記憶體介面控制單元。選擇單元耦接至指令佇列。緩存器耦接至選擇單元。處理單元耦接至選擇單元及緩存器,且用以執行:將複數序列的記憶體操作指令組成複數個巨集指令;寫入該些巨集指令至該緩存器;依據來自一主機的一主機指令寫入對應於主機指令的巨集指令的一或多個操作參數至該緩存器;命令選擇單元選擇緩存器做為輸入端;以及命令緩存器輸出對應於主機指令的巨集指令。
本發明的另一方面揭露一種巨集指令的執行方法,用於一儲存裝置。儲存裝置包括一記憶體模組及一記憶體控制器。執行方法包括:由記憶體控制器的一處理單元將複數序列的記憶體操作指令組成複數個巨集指令;由處理單元寫入該些巨集指令至記憶體控制器的一緩存器;由處理單元依據來自一主機的一主機指令寫入對應於主機指令的巨集指令的一或多個操作參數至該緩存器;由處理單元命令記憶體控制器的一選擇單元選擇該緩存器做為輸入端;以及由處理單元命令緩存器輸出對應於主機指令的巨集指令。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
100:主機
10:儲存裝置
20:記憶體模組
30:記憶體控制器
32:指令佇列
34:處理單元
36:緩存器
38:選擇單元
40:記憶體介面控制單元
S10至S18:步驟
第1圖繪示依據本發明一實施例的儲存裝置的方塊圖。
第2圖繪示依據本發明一實施例的資料讀取指令的記憶體操作指令的序列的示意圖。
第3圖繪示依據本發明一實施例的記憶體介面控制單元執行一序列的記憶體操作指令的時序圖。
第4圖繪示依據本發明一實施例的資料寫入指令的記憶體操作指令的序列的示意圖。
第5圖繪示依據本發明一實施例的巨集指令的示意圖。
第6圖繪示依據本發明一實施例的巨集指令的執行方法的流程圖
請參照第1圖,第1圖繪示依據本發明一實施例的儲存裝置的方塊圖。在一個實際的例子中,儲存裝置10中的記憶體控制器30可依據主機100所輸出的主機指令,對記憶體模組20進行資料的存取操作,例如,將來自主機100的使用者資料儲存至記憶體模組20的儲存空間中。主機指令例如是符合NVMe(Non-Volatile Memory Express,非揮發性記憶體儲存裝置)或是AHCI(進階主機控制器介面,Advanced Host Controller Interface)標準的指令,主機指令可藉由PCIE(快捷外設互聯標準,Peripheral Component Interconnect Express)、SATA(串
行ATA,Serial ATA)或SAS(序列式SCSI,Serial Attached SCSI)傳輸介面進行資料的傳輸。
記憶體模組20較佳可包括快閃記憶體(Flash Memory)、磁阻式隨機存取記憶體(Magnetoresistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式隨機存取記憶體(Resistive RAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM,STT-RAM)等具有長時間資料保存能力的記憶體。
記憶體控制器30可採用積體電路晶片的方式實現。記憶體控制器30包括指令佇列32、處理單元34、緩存器36、選擇單元38以及記憶體介面控制單元40。以記憶體控制器30採用NVMe指令為例,當NVMe指令為資料讀取指令或資料寫入指令,則NVMe指令包括一邏輯區塊位址、邏輯區塊數量、記憶體位址等資訊。以資料讀取指令為例,當收到資料讀取指令後,處理單元34依據邏輯-物理映射表(Logical to Physical Mapping Table,L2P映射表)而取得邏輯區塊的物理位址,之後,再輸出一序列的記憶體操作指令至指令佇列32,記憶體介面控制單元40再依序讀取(Pop)指令佇列32所佇列的記憶體操作指令,並依據記憶體操作指令以操作記憶體模組20,取得物理位址所儲存的使用者資料,並將取得的使用者資料傳送至資料讀取指令所指定的記憶體位址。
以快閃記憶體為例,處理單元34輸出一序列的記憶體操作指令至記憶體介面控制單元40以處理一筆資料讀取指令,如第2圖所示,一序列的記憶體操作指令包括致能晶片致能(Chip Enable On,CeOn)指令、致能第一命令鎖存(CLE,Command Latch Enable)指令、致能位址鎖存(ALE,Address Latch Enable)指令、致能第二命令鎖存指令、狀態查詢(Status Read)指令、資料存取指令等等。
部份記憶體操作指令更包含操作參數,例如,起始命令鎖存指令更包含操作參數0x00。因此,記憶體介面控制單元40除了致能命令鎖存訊號之外,更同時輸出操作參數0x00至記憶體模組20。致能位址鎖存指令更包含對應至物理位址的操作參數,此時操作參數的長度例如為五個位元。因此,記憶體介面控制單元40除了致能位址鎖存訊號之外,更依序輸出五個位元長度的物理位址值至記憶體模組20,其中,物理位址選自於L2P映射表。致能第二命令鎖存指令更包含操作參數0x30。因此,記憶體介面控制單元40除了致能命令鎖存訊號之外,更同時間輸出操作參數0x30至記憶體模組20。資料存取指令較佳為致能直接記憶體存取(Direct Memory Access,DMA),以讀取記憶體模組20的緩存頁所緩存的使用者資料。
另外,當記憶體模組20由單一記憶體晶片所構成時,致能晶片致能可不使用操作參數;當記憶體模組20由複數記
憶體晶片所構成時,致能晶片致能可使用操作參數而操作參數為記憶體晶片的代碼。
另外,當記憶體介面控制單元40依據記憶體操作指令操作記憶體模組20時,記憶體介面控制單元40可依據記憶體操作指令而輸出額外的訊號,例如,於執行狀態查詢指令時,亦會致能晶片致能以及致能第一命令鎖存。
另外,部份記憶體操作指令執行完成後,則會去能其所致能的訊號,例如,當致能第一命令鎖存指令以及致能第二命令鎖存指令執行完成後,皆會去能命令鎖存指令。相反的,部份記憶體操作指令執行完成後,仍會持續致能其所致能的訊號,例如,當致能晶片致能指令執行完成後,晶片致能訊號能被持續地致能,直到資料存取指令執行完成後晶片致能訊號才會被去能。
如第3圖所示,記憶體介面控制單元40執行一序列的記憶體操作指令可依據預設的時間順序而依序執行,亦可依據目前記憶體操作指令的執行結果而判斷是否執行下一個記憶體操作指令或中斷此序列的記憶體操作指令的執行。
當假如NVMe指令為資料寫入指令,則處理單元34輸出一序列的記憶體操作指令至記憶體介面控制單元40以將使用者資料寫入至記憶體模組20中(的物理位址),此時,一序列的記憶體操作指令包括致能晶片致能(CeOn)指令、致能第一命令鎖存(CLE,Command Latch Enable)指令、致能位址鎖存(ALE,Address Latch Enable)指令、資料存取指令、致能第
二命令鎖存指令、狀態查詢指令等等。由上述中可知,此序列的記憶體操作指令的順序及操作參數與NVMe指令為資料讀取指令有所不同,例如,起始命令鎖存指令的操作參數為0x80,致能第二命令鎖存指令的操作參數為0x10,資料存取指令置於致能第二命令鎖存指令之前,資料存取指令較佳為致能直接記憶體存取(Direct Memory Access,DMA),以寫入使用者資料至記憶體模組20的緩存頁,狀態查詢指令置於此序列的記憶體操作指令的最後,如第4圖所示。
如果NVMe指令中的邏輯區塊數量大於一時,處理單元34將重覆地輸出一序列的記憶體操作指令至記憶體介面控制單元40,然而,所有序列的記憶體操作指令之間卻僅有少數的差異,例如,對應至物理位址值的操作參數不同。在這種情況下,處理單元34一直重覆地輸出類似的記憶體操作指令至記憶體介面控制單元40,不但效率不彰,亦會消耗許多系統資源。因此,本發明揭露一種巨集(Marco)指令的執行方法,其中,巨集指令包括複數序列的記憶體操作指令,每一序列的記憶體操作指令對應至一筆資料存取指令,或是一筆資料存取指令中的一個邏輯區塊位址的處理。
第5圖為巨集指令的示意圖,此巨集指令包括處理一資料讀取指令所需的一序列的記憶體操作指令,第6圖為本發明巨集指令的執行方法的流程圖,並以資料讀取指令進行本發明巨
集指令的執行方法的說明。本發明巨集指令的執行方法亦可適用於各種的資料存取指令,並不以此為限。
如步驟S10所示,將一序列的記憶體操作指令組成巨集指令,巨集指令包括處理一資料存取指令所需的一序列的記憶體操作指令。如步驟S12所示,於儲存裝置10開機後,處理單元34將巨集指令寫入至緩存器36。在另一個實施例中,處理單元34可隨時變更緩存器36中的巨集指令,例如增加/減少巨集指令的數量及/或更新已存在的巨集指令的內容或組成。
如步驟S14所示,處理單元34依據主機指令而寫入巨集指令的操作參數至緩存器36。當收到主機指令後,處理單元34判斷主機指令的類型,例如,主機指令為資料讀取指令,處理單元34先依據L2P映射表取得邏輯區塊的物理位址,之後,將記憶體操作指令所需的操作參數,即巨集指令所需的操作參數,寫入至緩存器36中。
如步驟S16所示,處理單元34命令選擇單元38選取緩存器36作為輸入端,如步驟S18所示,處理單元34命令緩存器36輸出巨集指令,其中,命令可包括起始位址以及長度值,長度值等於序列的記憶體操作指令的長度,或是巨集指令的大小。在收到來自處理單元34的命令後,緩存器36開始輸出巨集指令,或是,輸出起始位址之後滿足長度值的一序列的記憶體操作指令。輸出的一序列的記憶體操作指令經由選擇單元38而輸出至指令佇列32並佇列之,其中,佇列的方式較佳為先進先出(First In First
Out,FIFO)。最後,記憶體介面控制單元40再依序讀取(Pop)佇列的序列的記憶體操作指令並執行之。由上述可知,處理單元34命令緩存器36輸出巨集指令後,處理單元34可以進入節電模式或處理下一個主機指令,無需再逐一輸出記憶體操作指令,因此,達到系統效能加速或是節電的效果。
巨集指令可更包括處理一資料寫入指令所需的一序列的記憶體操作指令。當收到為資料寫入指令的主機指令後,處理單元34將記憶體操作指令所需的操作參數寫入至巨集指令中,再命令選擇單元38選取緩存器36作為輸入端,又命令緩存器36依序輸出巨集指令中一序列的記憶體操作指令,此命令的起始位址與上述命令不同。由於緩存器36會自動依序輸出巨集指令中一序列的記憶體操作指令,並經由選擇單元38而輸出至指令佇列32。最後,在狀態查詢指令執行完成之後,處理單元34將使用者資料所儲存的物理位址更新至L2P映射表。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:主機
10:儲存裝置
20:記憶體模組
30:記憶體控制器
32:指令佇列
34:處理單元
36:緩存器
38:選擇單元
40:記憶體介面控制單元
Claims (10)
- 一種儲存裝置,包括:一記憶體模組;以及一記憶體控制器,耦接至該記憶體模組,且包括:一記憶體介面控制單元;一指令佇列,耦接至該記憶體介面控制單元;一選擇單元,耦接至該指令佇列;一緩存器,耦接至該選擇單元;以及一處理單元,耦接至該選擇單元及該緩存器,且用以執行:將複數序列的記憶體操作指令組成複數個巨集指令;寫入該些巨集指令至該緩存器;依據來自一主機的一主機指令寫入對應於該主機指令的該巨集指令的一或多個操作參數至該緩存器;命令該選擇單元選擇該緩存器做為輸入端;以及命令該緩存器輸出對應於該主機指令的該巨集指令。
- 如申請專利範圍第1項所述之儲存裝置,其中每一該些序列的記憶體操作指令對應至一筆資料存取指令,或是一筆資料存取指令中的對該記憶體模組的一邏輯區塊位址的處理。
- 如申請專利範圍第1項所述之儲存裝置,其中該處理單元係於該儲存裝置開機時將該些巨集指令寫入至該緩存器。
- 如申請專利範圍第1項所述之儲存裝置,其中於該處理單元命令該選擇單元選擇該緩存器做為輸入端時,該處理單元所下的命令包括一起始位址以及一長度值,該長度值等於對應於該主機指令的該巨集指令的該序列的記憶體操作指令的長度,或是該巨集指令的大小。
- 如申請專利範圍第1項所述之儲存裝置,其中該指令佇列係採用先進先出的佇列方式。
- 一種巨集指令的執行方法,用於一儲存裝置,該儲存裝置包括一記憶體模組及一記憶體控制器,該執行方法包括:由該記憶體控制器的一處理單元將複數序列的記憶體操作指令組成複數個巨集指令;由該處理單元寫入該些巨集指令至該記憶體控制器的一緩存器;由該處理單元依據來自一主機的一主機指令寫入對應於該主機指令的該巨集指令的一或多個操作參數至該緩存器;由該處理單元命令該記憶體控制器的一選擇單元選擇該緩存器做為輸入端;以及由該處理單元命令該緩存器輸出對應於該主機指令的該巨集指令。
- 如申請專利範圍第6項所述之執行方法,其中每一該些序列的記憶體操作指令對應至一筆資料存取指令,或是一筆資料存取指令中的對該記憶體模組的一邏輯區塊位址的處理。
- 如申請專利範圍第6項所述之執行方法,其中該處理單元係於該儲存裝置開機時將該些巨集指令寫入至該緩存器。
- 如申請專利範圍第6項所述之執行方法,其中於該處理單元命令該選擇單元選擇該緩存器做為輸入端時,該處理單元所下的命令包括一起始位址以及一長度值,該長度值等於對應於該主機指令的該巨集指令的該序列的記憶體操作指令的長度,或是該巨集指令的大小。
- 如申請專利範圍第6項所述之執行方法,其中由該選擇單元輸出的該巨集指令係被佇列至該記憶體控制器的一指令佇列,且該指令佇列係採用先進先出的佇列方式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910121796.9A CN110851073B (zh) | 2018-08-20 | 2019-02-19 | 储存装置及巨集指令的执行方法 |
US16/535,830 US11307798B2 (en) | 2018-08-20 | 2019-08-08 | Storage device and method for performing macro command |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862719908P | 2018-08-20 | 2018-08-20 | |
US62/719,908 | 2018-08-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202009697A TW202009697A (zh) | 2020-03-01 |
TWI740092B true TWI740092B (zh) | 2021-09-21 |
Family
ID=70766373
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107142242A TWI702499B (zh) | 2018-08-20 | 2018-11-27 | 儲存裝置及快取區定址方法 |
TW108101642A TWI740092B (zh) | 2018-08-20 | 2019-01-16 | 儲存裝置及巨集指令的執行方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107142242A TWI702499B (zh) | 2018-08-20 | 2018-11-27 | 儲存裝置及快取區定址方法 |
Country Status (1)
Country | Link |
---|---|
TW (2) | TWI702499B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119204A (en) * | 1998-06-30 | 2000-09-12 | International Business Machines Corporation | Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization |
US20050223172A1 (en) * | 2004-03-31 | 2005-10-06 | Ulrich Bortfeld | Instruction-word addressable L0 instruction cache |
WO2012040045A2 (en) * | 2010-09-22 | 2012-03-29 | Intel Corporation | Dynamic physical memory replacement through address swapping |
TW201346755A (zh) * | 2011-12-20 | 2013-11-16 | Intel Corp | 用於順序指令管線中的亂序預取指令的系統與方法 |
US20160378493A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
TWI592865B (zh) * | 2016-07-22 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 |
TWI636399B (zh) * | 2012-06-15 | 2018-09-21 | 英特爾股份有限公司 | 用於實施載入儲存重新排序與最佳化之指令定義 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016181464A1 (ja) * | 2015-05-11 | 2016-11-17 | 株式会社日立製作所 | ストレージシステム、及び、記憶制御方法 |
WO2018022779A1 (en) * | 2016-07-26 | 2018-02-01 | Pure Storage, Inc. | Evacuating blades in a storage array that includes a plurality of blades |
-
2018
- 2018-11-27 TW TW107142242A patent/TWI702499B/zh active
-
2019
- 2019-01-16 TW TW108101642A patent/TWI740092B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119204A (en) * | 1998-06-30 | 2000-09-12 | International Business Machines Corporation | Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization |
US20050223172A1 (en) * | 2004-03-31 | 2005-10-06 | Ulrich Bortfeld | Instruction-word addressable L0 instruction cache |
WO2012040045A2 (en) * | 2010-09-22 | 2012-03-29 | Intel Corporation | Dynamic physical memory replacement through address swapping |
TW201346755A (zh) * | 2011-12-20 | 2013-11-16 | Intel Corp | 用於順序指令管線中的亂序預取指令的系統與方法 |
TWI636399B (zh) * | 2012-06-15 | 2018-09-21 | 英特爾股份有限公司 | 用於實施載入儲存重新排序與最佳化之指令定義 |
US20160378493A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
TWI592865B (zh) * | 2016-07-22 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 資料讀取方法、資料寫入方法及使用所述方法的儲存控制器 |
Also Published As
Publication number | Publication date |
---|---|
TW202009697A (zh) | 2020-03-01 |
TW202009714A (zh) | 2020-03-01 |
TWI702499B (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947362B (zh) | 管理闪存存储器读取操作 | |
TWI435215B (zh) | 下達讀取指令與資料讀取方法、控制器與儲存系統 | |
US10782915B2 (en) | Device controller that schedules memory access to a host memory, and storage device including the same | |
CN109783411B (zh) | 一种基于fpga的flash阵列控制方法及控制器 | |
CN108932108B (zh) | 快闪存储器的命令排程及执行方法以及使用该方法的装置 | |
US10733122B2 (en) | System and method for direct memory access in a flash storage | |
TW201618096A (zh) | 記憶裝置中支援增進式流通量 | |
TWI738442B (zh) | 資料儲存裝置與資料處理方法 | |
TWI534615B (zh) | 串列周邊介面控制器、串列周邊介面快閃記憶體及其存取方法和存取控制方法 | |
TW202042065A (zh) | 資料儲存裝置及邏輯至物理位址映射表之載入方法 | |
CN113467704B (zh) | 通过智能阈值检测的命令优化 | |
TWI737031B (zh) | 多平面上頁面的片段資料讀取方法及電腦程式產品 | |
TWI698744B (zh) | 資料儲存裝置及邏輯至物理位址映射表之更新方法 | |
CN110851073B (zh) | 储存装置及巨集指令的执行方法 | |
EP3885888B1 (en) | Parallel overlap management for commands with overlapping ranges | |
CN106919343A (zh) | 周边接口电路与周边存储器系统 | |
US11366770B2 (en) | Storage controller managing completion timing, and operating method thereof | |
TWI707233B (zh) | 快閃記憶體控制器及方法 | |
TWI740092B (zh) | 儲存裝置及巨集指令的執行方法 | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
TWI714116B (zh) | 記憶體控制器、記憶體控制方法、以及電腦系統 | |
TWI822517B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
US10566062B2 (en) | Memory device and method for operating the same | |
TWI818762B (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 |