TWI474254B - 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統 - Google Patents
用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統 Download PDFInfo
- Publication number
- TWI474254B TWI474254B TW101150179A TW101150179A TWI474254B TW I474254 B TWI474254 B TW I474254B TW 101150179 A TW101150179 A TW 101150179A TW 101150179 A TW101150179 A TW 101150179A TW I474254 B TWI474254 B TW I474254B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- host
- progress
- time
- memory
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims description 75
- 238000000034 method Methods 0.000 title claims description 44
- 238000013500 data storage Methods 0.000 title claims description 9
- 230000008569 process Effects 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 13
- 238000012546 transfer Methods 0.000 claims description 13
- 239000000463 material Substances 0.000 claims description 8
- 230000004044 response Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
Classifications
-
- 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
-
- 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/0613—Improving I/O performance in relation to throughput
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Communication Control (AREA)
Description
本發明大體係關於資料儲存,且特別係關於用於記憶體命令之同時執行之方法及系統。
與儲存器件通信之各種儲存協定在此項技術中為吾人所知。一實例儲存協定為串列進階附接技術(Serial Advanced Technology Attachment,SATA)協定。叫作進階主機控制器介面(Advanced Host Controller Interface,AHCI)之協定指定主機系統記憶體與附接之儲存器件之間使用SATA協定進行之資料交換。
舉例而言,在被以引用的方式併入本文中的2009年6月2日之「Serial ATA International Organization:Serial ATA Revision 3.0」中指定了SATA。舉例而言,在被以引用的方式併入本文中的2008年6月26日之「Serial ATA Advanced Host Controller Interface(AHCI)」修訂本1.3中指定了AHCI。
本文所描述的本發明之一實施例提供一種方法,該方法包括根據支援在任何給定時間處理僅一單一命令之一儲存協定自一主機接收多個命令以供在一記憶體中執行。在一第一時間,即使不同於一第一命令之一第二命令經選擇為充當根據該儲存協定當前支援該處理之該單一命令,亦在該記憶體中執行該第一命令且與該主機交換相關於該第一
命令之資料。在偵測出該第一命令經選擇為充當當前支援該處理之該單一命令後,即在一第二時間向該主機報告該第一命令之一進度,該第二時間遲於該第一時間。
在一些實施例中,該儲存協定包括一進階主機控制器介面(AHCI)協定。在一實施例中,執行該第一命令包括在該第一時間抑制報告該第一命令之該進度。在一所揭示實施例中,執行該第一命令包括在該第一時間快取該第一命令之該進度,且報告該進度包括在該第二時間向該主機報告該經快取進度。在一實例實施例中,該主機提供用於報告支援其處理之該單一命令之該進度的一或多個暫存器,且報告該進度包括用該經快取進度來更新該等暫存器。
在另一實施例中,交換該資料包括交換相關於該第一命令之該資料之兩個或兩個以上部分,該等部分與相關於至少一其他命令之額外資料交錯。在又一實施例中,交換該資料包括即使該第一命令並非根據該儲存協定當前支援該處理之該單一命令,亦與該主機交換相關於該第一命令之該資料。
在再一實施例中,執行該第一命令包括即使該第一命令並非根據該儲存協定當前支援該處理之該單一命令,亦執行該第一命令。在一實施例中,接收該等命令包括按一第一次序自該主機接受該等命令,及按不同於該第一次序之一第二次序執行該等命令。交換該資料可包括在不涉及該主機之一處理器的情況下將該資料傳送至該主機中之一主機記憶體或自該主機記憶體傳送該資料。
根據本發明之一實施例,另外提供一種裝置,該裝置包括:一記憶體;及一記憶體控制器。該記憶體控制器經組態以:根據支援在任何給定時間處理僅一單一命令之一儲存協定自一主機接收多個命令以供在該記憶體中執行;即使不同於一第一命令之一第二命令經選擇為充當根據該儲存協定當前支援該處理之該單一命令,亦在一第一時間在該記憶體中執行該第一命令且與該主機交換相關於該第一命令之資料;及在偵測出該第一命令經選擇為充當支援該處理之該單一命令後,即在一第二時間向該主機報告該第一命令之一進度,該第二時間遲於該第一時間。
根據本發明之一實施例,亦提供一種系統,該系統包括一主機及一儲存器件。該儲存器件經組態以:根據支援在任何給定時間處理僅一單一命令之一儲存協定自該主機接收多個命令以供在該儲存器件之一記憶體中執行;即使不同於一第一命令之一第二命令經選擇為充當根據該儲存協定當前支援該處理之該單一命令,亦在一第一時間在該記憶體中執行該第一命令且與該主機交換相關於該第一命令之資料;及在偵測出該第一命令經選擇為充當支援該處理之該單一命令後,即在一第二時間向該主機報告該第一命令之一進度,該第二時間遲於該第一時間。
自本發明之實施例之以下詳細描述連同圖式,將更全面地理解本發明。
一些儲存協定允許儲存器件同時地且可能不按次序接收及處理多個儲存命令。舉例而言,SATA協定支援原生命令佇列(Native Command Queuing,NCQ)模式,在該模式下,主機可將高達三十二個未處理命令發出至儲存器件。此特徵使合適的儲存器件能夠以高效率及小延時執行該等命令。
AHCI儲存協定經與SATA相比而被定義,且提供用於儲存器件與主機記憶體之間的直接資料交換之標準化介面及資料結構。然而,AHCI指定在任何給定時間針對僅單一命令之資料傳送及進度報告。
本文所描述的本發明之實施例提供用於資料儲存之改良型方法及系統,該等方法及系統使儲存器件能夠同時地且不按次序處理多個命令,且同時符合AHCI。儘管本文所描述之實施例主要參考AHCI,但所揭示技術亦可供支援每次處理僅單一命令之其他儲存協定使用。
在一些實施例中,儲存器件包含一記憶體及一控制器。控制器自主機接收命令,且在記憶體中執行該等命令。根據AHCI協定,在任何給定時間選擇單一命令,且僅針對此單一命令來准許資料傳送及進度報告。然而,在所揭示實施例中,控制器同時地執行多個命令,且對於若干命令之單一命令或交錯之資料可能不按次序傳送資料,例如,根據儲存器件之一些內部排程偏好。
若正執行之命令不同於根據AHCI協定當前支援其處理之單一命令,則控制器直接地與主機記憶體交換相關於所
執行命令之資料,但抑制使用適當AHCI暫存器向主機報告該命令之進度。取而代之,控制器快取命令之進度,且僅稍後當在考慮中之命令根據AHCI協定被選擇為單一命令時向主機報告進度。另外,若以不按次序方式傳送來自特定命令之資料,則通常將僅針對資料傳送之有序部分發生進度報告。
換言之,控制器同時地且可能不按次序或以交錯之方式執行多個所接收命令,而不管哪一命令當前經選擇以供按AHCI協定處理。一旦可得到或需要每一所執行命令之資料,控制器通常就直接地與主機記憶體交換該資料,且因此,控制器消除對緩衝該資料之需要。在需要時,可以交錯之方式與主機記憶體交換多個不同命令之資料。
然而,為了保持符合AHCI協定,控制器延遲所執行命令之進度報告,直至該命令經選擇為充當其處理被AHCI協定准許之單一命令為止。因此,在一些情況下,主機將具有來自由儲存器件控制器與主機之記憶體交換之某一命令的資料,但針對此命令之進度報告將稍後到達。以此方式使資料傳送自進度報告去耦不會違反AHCI協定。
所揭示技術使記憶體器件能夠享有同時且不按次序之命令執行的效能益處,且同時遵照AHCI規範。因為一旦產生資料就將該資料傳送至主機記憶體,所以無需資料緩衝,且在主機中無需修改AHCI驅動程式。
圖1為示意性地說明根據本發明之一實施例的資料儲存
系統20之方塊圖。系統20包含將資料儲存於儲存器件(在本實例中,固態硬碟(SSD)28)中之主機24。主機24與SSD 28經由周邊組件互連(Peripheral Component Interconnect,PCI)或快速PCI(PCI-express,PCIe)匯流排30而相互通信。
舉例而言,主機24可包含個人電腦或行動計算或通信器件,或企業系統。在替代實施例中,所揭示技術可供任何其他合適類型之儲存器件及供各種其他主機使用。
主機24經組態以根據上文所引證之AHCI協定將資料儲存於SSD 28中。SSD 28經組態以在使用下文詳細地描述之技術的情況下並行地且可能不按次序進行多個儲存命令,且同時遵照AHCI規範。
主機24包含一中央處理單元(CPU)32,CPU 32使用AHCI驅動程式36及PCI根複合體(root complex)40與SSD 28通信。AHCI驅動程式36分配命令以供執行,準備鏈路清單以供資料傳送,且向較高軟體層報告每一命令之完成。驅動程式設定指定記憶體映射I/O(Memory-Mapped I/O,MMIO)暫存器,其為用於執行未決命令之主機CPU記憶體結構中之資料結構。
主機24包含一主機記憶體44,其通常為隨機存取記憶體(RAM)。主機記憶體44可適於主機中之各種功能。根據AHCI規範,SSD 28通常直接地與主機記憶體交換資料,例如,儲存已在讀取命令中擷取之資料,或讀取待寫入於寫入命令中之資料。
SSD 28包含非揮發性記憶體,非揮發性記憶體用於儲存
由主機24提供之資料。在本實例中,非揮發性記憶體包含多個反及(NAND)快閃記憶體器件48。在替代實施例中,非揮發性記憶體可包含任何其他合適類型之記憶體。SSD控制器52進行SSD之各種功能,包括(例如)在快閃器件48中之資料儲存及擷取,以及使用所揭示技術而與主機24介面連接。術語「SSD控制器」及「記憶體控制器」在本文中可被互換地使用。
在圖1之實例中,SSD控制器52包含一PCI控制器,PCI控制器充當SSD與主機之間的PCI介面。前端CPU 60執行在各功能中管理SSD控制器之AHCI協定操作之軟體。直接記憶體存取(Direct Memory Access,DMA)模組64經由匯流排30而直接地(亦即,在不涉及CPU 32的情況下)與主機記憶體44交換資料。內部記憶體68(通常為動態RAM(DRAM))用於SSD控制器中之內部儲存。通常,在使用SSD控制器52之其他元件的情況下由前端CPU 60進行本文所描述之介面連接及通信程序。
包括PCI控制器56、前端CPU 60及/或DMA模組64之SSD控制器52可以硬體實施。或者,SSD控制器之某些功能(例如,CPU 60之功能)可使用執行合適軟體之微處理器實施,或藉由硬體元件與軟體元件之組合實施。在一些實施例中,CPU 60包含通用處理器,通用處理器係以軟體程式化以進行本文所描述之功能。該軟體可(例如)經由網路而以電子形式下載至處理器,或者或另外,該軟體可提供及/或儲存於諸如磁性、光學或電子記憶體之有形媒體上。
圖1之系統組態為一實例組態,其係純粹地出於概念清晰性而展示。亦可使用任何其他合適的系統組態。舉例而言,在一些實施例中,兩個或兩個以上SSD可連接至同一主機。已為了清晰起見而自該圖省略對於理解本發明之原理並非必要之元件,諸如,各種介面、定址電路、時序及定序電路以及除錯電路。
在圖1所示之例示性SSD組態中,記憶體器件48及SSD控制器52被實施為分離積體電路(IC)。然而,在替代實施例中,記憶體器件及SSD控制器可整合於單一多晶片封裝(MCP)或系統單晶片(SoC)中之分離半導體晶粒上,且可由內部匯流排互連。再或者,SSD控制器電路中之一些或全部可常駐於其上安置有記憶體器件48中之一或多者的同一晶粒上。再或者,SSD控制器52之功能性中之一些或全部可以軟體實施,且由主機24或由任何其他類型之記憶體控制器進行。在一些實施例中,主機24及SSD控制器52可製造於同一晶粒上,或製造於同一器件封裝中之分離晶粒上。
儘管SATA協定支援同時地執行多個儲存命令,但AHCI規範之協定及資料結構支援每次針對僅單一命令之執行及進度報告。根據AHCI,主機可將多個未處理命令發出至儲存器件。然而,儲存器件可不按次序選擇命令以供執行,但不應交錯若干命令之資料或不按次序傳回特定命令之資料。
通常,主機24中之AHCI驅動程式36在給定時間自多個未處理命令中選擇單一命令。僅針對彼單一命令來支援資料傳送及進度報告。當完成單一當前選定命令之執行時,AHCI驅動程式選擇另一命令以供執行。此種類之依序按次序操作可顯著地使SSD儲存效能降級,例如,增加延時且減少總處理能力。
在一些實施例中,SSD控制器52遵照AHCI協定之以上限定,且使用AHCI之標準協定及資料結構。然而,SSD控制器同時地執行多個命令且可能不按次序遞送特定命令之資料。藉由使資料傳送自進度報告去耦來達成此特徵。
自主機中之AHCI驅動程式36的觀點看來,SSD被預期僅執行當前選定命令,使用DMA模組64而與主機記憶體44交換相關於該命令之資料,且用該命令之進度來更新主機,直至完成命令執行為止。AHCI驅動程式提供針對此流程之合適命令及資料結構,包括用於報告命令執行進度之暫存器。
在一些實施例中,SSD控制器52自主機24接收多個儲存命令(例如,讀取命令及寫入命令)。SSD控制器根據SSD 28之一些排程偏好而在記憶體器件48中執行該等命令,未必按自主機接收該等命令之次序執行。此外,SSD控制器執行給定命令,而不管此命令當前是否被選擇以供AHCI驅動程式執行。
當執行某一命令時,SSD控制器與主機記憶體44交換相關於該命令之資料。舉例而言,當執行寫入命令時,SSD
控制器自主機記憶體讀取供儲存之資料且將資料儲存於快閃器件48中。在讀取命令中,SSD控制器將已自快閃器件48擷取之資料儲存於主機記憶體44中。
SSD控制器進行上文所描述之資料交換,而不管所執行命令是否為當前被選擇以供AHCI驅動程式36執行之單一命令。因此,SSD控制器具有根據某合適偏好、策略或準則而不按次序來有效率地執行命令的自由。因為一旦在命令執行期間可得到資料就與主機記憶體交換該資料,所以在SSD控制器中無需緩衝。
考慮SSD控制器執行當前未被選擇以供AHCI驅動程式執行之命令的情境。在此狀況下,AHCI驅動程式不提供SSD報告此命令之執行進度的方式。(此時,AHCI驅動程式實際地預期針對不同命令(當前由AHCI驅動程式選擇之單一命令)之進度報告)。因此,在一些實施例中,SSD控制器延遲針對當前所執行命令之進度報告,直至此命令將由AHCI驅動程式選擇的稍後時間為止。
在一些實施例中,AHCI驅動程式36提供一或多個暫存器,在使用該一或多個暫存器的情況下,SSD被預期報告當前由AHCI驅動程式選擇之單一命令之執行進度。當執行當前未由AHCI驅動程式選擇之命令時,SSD控制器52通常快取針對正執行之命令的進度報告,例如,在記憶體68中之內部暫存器中。稍後,當此命令由AHCI驅動程式選擇以供執行時,SSD控制器用該命令之經快取進度報告來更新AHCI驅動程式暫存器。
當使用所揭示技術時,SSD控制器常針對當前正被執行但未被選擇以供AHCI驅動程式執行之命令而與主機記憶體交換資料。因為針對此命令之進度報告被延遲,所以AHCI驅動程式通常未意識到資料已被交換或命令執行完成。僅稍後當AHCI驅動程式選擇命令且接收適當進度報告時AHCI驅動程式變得意識到命令完成且資料已被交換。
此外,使用此技術,在需要時,SSD控制器可以交錯之方式與主機記憶體交換兩個或兩個以上命令之資料,亦即,在針對不同命令之資料傳送部分之間交替。在給定命令之執行完成且已與主機記憶體交換所有相關資料之後,SSD控制器將向主機報告此進度。此類別之操作不違反AHCI規範,此係因為每一命令通常在主機記憶體44中被預分配一專用空間。另一方面,此類別之操作實現顯著並行性且因此實現效能改良。
圖2為示意性地說明根據本發明之一實施例的用於多個命令之同時符合AHCI執行之方法之流程圖。該方法始於在輸入步驟70處SSD 28之SSD控制器52自主機24接收多個儲存命令。
在執行步驟74處SSD控制器52在快閃器件48中執行多個命令。SSD控制器通常可能同時地且可能不按次序根據某一內部排程偏好來執行命令。進行命令執行,而不管哪一命令當前被選擇以供主機中之AHCI驅動程式36執行。在執行期間,SSD控制器追蹤各種命令之進度,例如,哪些
命令仍在進行中及哪些命令完成。
在多個命令之執行期間,在報告檢查步驟78處SSD控制器52檢查該等命令中任一者是否具有應向主機報告之進度更新。若否,則該方法循環回至以上步驟74。若給定命令具有應被報告之進度更新,則在選擇檢查步驟82處SSD控制器檢查此命令是否為當前根據AHCI規範被選擇以供AHCI驅動程式36執行之單一命令。
若在考慮中之命令自AHCI驅動程式的觀點看為當前選定命令,則在進度報告步驟86處SSD控制器藉由更新適當AHCI暫存器來報告此命令之進度。否則,在延遲步驟90處SSD控制器延遲進度報告。SSD控制器通常快取進度報告,且在偵測出在考慮中之命令被選擇以供AHCI驅動程式執行後即在稍後時間更新AHCI暫存器。該方法接著循環回至以上步驟74。
在多個命令之執行期間,在資料檢查步驟94處SSD控制器52檢查該等命令中任一者是否具有待與主機記憶體44交換之資料。若否,則該方法循環回至以上步驟74。若給定命令具有待交換之資料,則在資料傳送步驟98處SSD控制器在可適用時將資料傳送至主機記憶體或自主機記憶體傳送資料。一旦可得到資料或一旦需要資料,則SSD控制器就傳送資料,而不管給定命令當前是否被選擇以供AHCI驅動程式執行。該方法接著循環回至以上步驟74。
應瞭解,上文所描述之實施例係藉由實例被引證,且本發明不限於上文已特定地展示及描述之內容。實情為,本
發明之範疇包括上文所描述之各種特徵之組合及次組合兩者,以及其變化及修改,該等變化及修改將由熟習此項技術者在閱讀前述描述後即想到且在先前技術中未被揭示。被以引用的方式併入本專利申請案中之文件應被視為本申請案之整體部分,惟如下情形除外:在任何術語以與本說明書中明確地或隱含地作出之定義相衝突之方式定義於此等經併入之文件中的程度上,應僅考慮本說明書中之定義。
20‧‧‧資料儲存系統
24‧‧‧主機
28‧‧‧固態硬碟(SSD)
30‧‧‧周邊組件互連(PCI)或快速PCI(PCIe)匯流排
32‧‧‧中央處理單元(CPU)
36‧‧‧進階主機控制器介面(AHCI)驅動程式
40‧‧‧周邊組件互連(PCI)根複合體
44‧‧‧主機記憶體
48‧‧‧反及(NAND)快閃記憶體器件/快閃器件
52‧‧‧SSD控制器
56‧‧‧PCI控制器
60‧‧‧前端CPU
64‧‧‧直接記憶體存取(DMA)模組
68‧‧‧內部記憶體
圖1為示意性地說明根據本發明之一實施例的資料儲存系統之方塊圖;及圖2為示意性地說明根據本發明之一實施例的用於多個命令之同時符合AHCI執行之方法之流程圖。
20‧‧‧資料儲存系統
24‧‧‧主機
28‧‧‧固態硬碟(SSD)
30‧‧‧周邊組件互連(PCI)或快速PCI(PCIe)匯流排
32‧‧‧中央處理單元(CPU)
36‧‧‧進階主機控制器介面(AHCI)驅動程式
40‧‧‧周邊組件互連(PCI)根複合體
44‧‧‧主機記憶體
48‧‧‧反及(NAND)快閃記憶體器件/快閃器件
52‧‧‧SSD控制器
56‧‧‧PCI控制器
60‧‧‧前端CPU
64‧‧‧直接記憶體存取(DMA)模組
68‧‧‧內部記憶體
Claims (20)
- 一種用於在一記憶體系統中執行命令的方法,其包含:根據針對在一給定串列次序(serial order)之命令指定資料傳送及進度報告之一儲存協定,藉由來自一主機之一記憶體系統接收多數個命令(multiple commands),其中該記憶體系統包括一記憶體控制器及複數個記憶體,其中該等多數個命令之每一命令由該記憶體控制器執行;在一第一時間,在該記憶體控制器中執行一第一命令且與該主機交換相關於該第一命令之資料,其中不同於該第一命令之一第二命令根據該儲存協定作為用於執行之當前支援;在一第二時間,執行該第二命令且向該主機報告該第二命令之進度,該第二時間遲於該第一時間;及回應於偵測出該第一命令係根據該儲存協定作為用於執行之當前支援後,即在一第三時間向該主機報告該第一命令之一進度,該第三時間遲於該第二時間。
- 如請求項1之方法,其中該儲存協定包含一進階主機控制器介面(AHCI)協定。
- 如請求項1之方法,其中執行該第一命令包含:在該第一時間抑制報告該第一命令之該進度。
- 如請求項1之方法,其中執行該第一命令包含在該第一時間快取該第一命令之該進度,且其中報告該進度包含在該第二時間向該主機報告該經快取進度。
- 如請求項4之方法,其中該主機提供用於報告支援其處理之該單一命令之該進度的一或多個暫存器,且其中報告該進度包含用該經快取進度來更新該等暫存器。
- 如請求項1之方法,其中交換該資料包含:交換相關於該第一命令之該資料之兩個或兩個以上部分,該等部分與相關於至少一其他命令之額外資料交錯。
- 如請求項1之方法,其中交換該資料包含:即使該第一命令並非根據該儲存協定當前支援該處理之該單一命令亦與該主機交換相關於該第一命令之該資料。
- 如請求項1之方法,其中執行該第一命令包含:即使該第一命令並非根據該儲存協定當前支援該處理之該單一命令,亦執行該第一命令。
- 如請求項1之方法,其中接收該等多數個命令包含:按一第一次序自該主機接受該等多數個命令,且包含按不同於該第一次序之一第二次序執行該等多數個命令。
- 如請求項1之方法,其中交換該資料包含:在不涉及該主機之一處理器的情況下將該資料傳送至該主機中之一主機記憶體或自該主機記憶體傳送該資料。
- 一種用於在一記憶體器件中執行命令之裝置,其包含:一記憶體;及一記憶體控制器,其經組態以:根據在任何給定時間針對僅一單一命令指定資料傳送及進度報告之一儲存協定,自一主機接收多數個命令以供在該記憶體中執行,以在一第一時間在該記憶體中執行該第一命令且與該主 機交換相關於該第一命令之資料;其中不同於一第一命令之一第二命令經選擇為充當根據該儲存協定當前支援處理之該單一命令;及在偵測出該第一命令經選擇為充當支援該處理之該單一命令後,即在一第二時間向該主機報告該第一命令之一進度,該第二時間遲於該第一時間。
- 如請求項11之裝置,其中該儲存協定包含一進階主機控制器介面(AHCI)協定。
- 如請求項11之裝置,其中該記憶體控制器經組態以在該第一時間抑制報告該第一命令之該進度。
- 如請求項11之裝置,其中該記憶體控制器經組態以在該第一時間快取該第一命令之該進度,且在該第二時間向該主機報告該經快取進度。
- 如請求項14之裝置,其中該主機提供用於報告支援其處理之該單一命令之該進度的一或多個暫存器,且其中該記憶體控制器經組態以藉由用該經快取進度來更新該等暫存器而報告該進度。
- 如請求項11之裝置,其中該記憶體控制器經組態以交換相關於該第一命令之該資料之兩個或兩個以上部分,該等部分與相關於至少一其他命令之額外資料交錯。
- 如請求項11之裝置,其中該記憶體控制器經組態以即使該第一命令並非根據該儲存協定當前支援該處理之該單一命令,亦與該主機交換相關於該第一命令之該資料。
- 如請求項11之裝置,其中該記憶體控制器經組態以即使 該第一命令並非根據該儲存協定當前支援該處理之該單一命令,亦執行該第一命令。
- 如請求項11之裝置,其中該記憶體控制器經組態以按一第一次序自該主機接受該等多數個命令,且按不同於該第一次序之一第二次序執行該等多數個命令。
- 一種資料儲存系統,其包含:一主機;及一儲存器件,其經組態以:根據在任何給定時間針對僅一單一命令指定資料資料傳送及進度報告之一儲存協定自該主機接收多個命令以供在該儲存器件之一記憶體中執行,以在一第一時間在該記憶體中執行該第一命令且與該主機交換相關於該第一命令之資料;其中不同於一第一命令之一第二命令經選擇為充當根據該儲存協定當前支援處理之該單一命令;及在偵測出該第一命令經選擇為充當支援該處理之該單一命令後,即在一第二時間向該主機報告該第一命令之一進度,該第二時間遲於該第一時間。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161580324P | 2011-12-27 | 2011-12-27 | |
US13/560,152 US8713204B2 (en) | 2011-12-27 | 2012-07-27 | High-performance AHCI interface |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342193A TW201342193A (zh) | 2013-10-16 |
TWI474254B true TWI474254B (zh) | 2015-02-21 |
Family
ID=47522271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101150179A TWI474254B (zh) | 2011-12-27 | 2012-12-26 | 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8713204B2 (zh) |
EP (1) | EP2610731A3 (zh) |
JP (1) | JP5896328B2 (zh) |
KR (1) | KR101428317B1 (zh) |
CN (1) | CN103186351B (zh) |
BR (1) | BR102012033264A2 (zh) |
DE (1) | DE202012013729U1 (zh) |
TW (1) | TWI474254B (zh) |
WO (1) | WO2013101357A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101988287B1 (ko) * | 2012-11-26 | 2019-06-12 | 삼성전자주식회사 | 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법 |
TWI507883B (zh) * | 2013-09-18 | 2015-11-11 | Realtek Semiconductor Corp | 記憶卡存取裝置、其控制方法與記憶卡存取系統 |
CN105808444B (zh) * | 2015-01-19 | 2019-01-01 | 东芝存储器株式会社 | 存储装置及非易失性存储器的控制方法 |
KR102564165B1 (ko) | 2016-04-25 | 2023-08-04 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131360A1 (en) * | 2009-11-30 | 2011-06-02 | Noeldner David R | Context Execution in a Media Controller Architecture |
TW201126347A (en) * | 2010-01-29 | 2011-08-01 | Innostor Technology Corp | Switching interface method for a multi-interface storage device |
US20110314264A1 (en) * | 2010-06-21 | 2011-12-22 | Arm Limited | Key allocation when tracing data processing systems |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04190435A (ja) | 1990-11-26 | 1992-07-08 | Hitachi Ltd | マルチプロセッサシステムのメモリアクセス順序保証方式 |
JPH05189154A (ja) | 1992-01-14 | 1993-07-30 | Nec Corp | シーケンシャル動作ディスクファイル装置 |
JPH11167557A (ja) | 1997-12-02 | 1999-06-22 | Hitachi Ltd | 共有メモリアクセス順序保証方法及びマルチプロセッサシステム |
US6141707A (en) * | 1998-05-28 | 2000-10-31 | Emc Corporation | Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume |
JP2005215729A (ja) | 2004-01-27 | 2005-08-11 | Hitachi Global Storage Technologies Netherlands Bv | データ伝送制御方法及び記憶装置 |
US20070174504A1 (en) * | 2006-01-05 | 2007-07-26 | Pao-Ching Tseng | Method and Apparatus for Advanced Technology Attachment Packet Interface Native Command Queuing |
US7464228B2 (en) | 2006-05-31 | 2008-12-09 | Dell Products L.P. | System and method to conserve conventional memory required to implement serial ATA advanced host controller interface |
US7844777B2 (en) * | 2007-06-26 | 2010-11-30 | Intel Corporation | Cache for a host controller to store command header information |
US8762620B2 (en) | 2007-12-27 | 2014-06-24 | Sandisk Enterprise Ip Llc | Multiprocessor storage controller |
US8131921B2 (en) | 2008-09-17 | 2012-03-06 | Intel Corporation | Command suspension in response, at least in part, to detected acceleration and/or orientation change |
US9128699B2 (en) * | 2008-12-22 | 2015-09-08 | Intel Corporation | Method and system for queuing transfers of multiple non-contiguous address ranges with a single command |
US8219776B2 (en) | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
JP5216719B2 (ja) | 2009-08-27 | 2013-06-19 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置および制御装置 |
US8281043B2 (en) * | 2010-07-14 | 2012-10-02 | Intel Corporation | Out-of-band access to storage devices through port-sharing hardware |
US8595522B2 (en) * | 2010-09-30 | 2013-11-26 | Intel Corporation | Monitoring transaction requests using a policy engine within a storage drive driver to change power capability and latency settings for a storage drive |
-
2012
- 2012-07-27 US US13/560,152 patent/US8713204B2/en active Active
- 2012-11-16 WO PCT/US2012/065428 patent/WO2013101357A1/en active Application Filing
- 2012-11-22 DE DE202012013729.8U patent/DE202012013729U1/de not_active Expired - Lifetime
- 2012-11-22 EP EP12193776.7A patent/EP2610731A3/en not_active Ceased
- 2012-12-26 TW TW101150179A patent/TWI474254B/zh active
- 2012-12-26 BR BR102012033264-7A patent/BR102012033264A2/pt not_active Application Discontinuation
- 2012-12-26 JP JP2012289464A patent/JP5896328B2/ja active Active
- 2012-12-26 KR KR1020120153134A patent/KR101428317B1/ko active IP Right Grant
- 2012-12-27 CN CN201210578775.8A patent/CN103186351B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110131360A1 (en) * | 2009-11-30 | 2011-06-02 | Noeldner David R | Context Execution in a Media Controller Architecture |
TW201126347A (en) * | 2010-01-29 | 2011-08-01 | Innostor Technology Corp | Switching interface method for a multi-interface storage device |
US20110314264A1 (en) * | 2010-06-21 | 2011-12-22 | Arm Limited | Key allocation when tracing data processing systems |
Also Published As
Publication number | Publication date |
---|---|
TW201342193A (zh) | 2013-10-16 |
JP5896328B2 (ja) | 2016-03-30 |
US8713204B2 (en) | 2014-04-29 |
JP2013137772A (ja) | 2013-07-11 |
KR101428317B1 (ko) | 2014-08-07 |
CN103186351B (zh) | 2016-05-25 |
WO2013101357A1 (en) | 2013-07-04 |
DE202012013729U1 (de) | 2020-07-07 |
US20130166781A1 (en) | 2013-06-27 |
BR102012033264A2 (pt) | 2013-10-08 |
CN103186351A (zh) | 2013-07-03 |
EP2610731A2 (en) | 2013-07-03 |
EP2610731A3 (en) | 2016-10-12 |
KR20130075694A (ko) | 2013-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11042297B2 (en) | Techniques to configure a solid state drive to operate in a storage mode or a memory mode | |
US9256384B2 (en) | Method and system for reducing write latency in a data storage system by using a command-push model | |
US10496281B2 (en) | Data storage device, data processing system and method of operation | |
JP5729774B2 (ja) | いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法 | |
KR100909119B1 (ko) | 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법 | |
KR102353782B1 (ko) | NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 | |
KR20160049200A (ko) | 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법 | |
KR20140013098A (ko) | 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 | |
US8954644B2 (en) | Apparatus and method for controlling memory | |
TWI639921B (zh) | 指令處理方法及使用所述方法的儲存控制器 | |
US10782919B2 (en) | Command processing method and storage controller using the same | |
TWI474254B (zh) | 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統 | |
EP2546756A2 (en) | Effective utilization of flash interface | |
US10592113B2 (en) | Method for transferring command from host to device controller and system using the same | |
US9128924B2 (en) | Method and apparatus for wireless broadband systems direct data transfer | |
US20120159024A1 (en) | Semiconductor apparatus | |
WO2021075076A1 (ja) | 情報処理装置、及び情報処理方法 | |
CN106775663A (zh) | 一种sys/bios***下基于sil3132控制器的sata硬盘驱动方法 |