TWI536268B - 記憶體排程之方法、系統及裝置 - Google Patents

記憶體排程之方法、系統及裝置 Download PDF

Info

Publication number
TWI536268B
TWI536268B TW100147290A TW100147290A TWI536268B TW I536268 B TWI536268 B TW I536268B TW 100147290 A TW100147290 A TW 100147290A TW 100147290 A TW100147290 A TW 100147290A TW I536268 B TWI536268 B TW I536268B
Authority
TW
Taiwan
Prior art keywords
segment
channel
description symbol
command
data
Prior art date
Application number
TW100147290A
Other languages
English (en)
Other versions
TW201246083A (en
Inventor
李欽剛
舒皇 弗萊德 歐
补強吉
陳映書
Original Assignee
馬維爾世界貿易股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 馬維爾世界貿易股份有限公司 filed Critical 馬維爾世界貿易股份有限公司
Publication of TW201246083A publication Critical patent/TW201246083A/zh
Application granted granted Critical
Publication of TWI536268B publication Critical patent/TWI536268B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Description

記憶體排程之方法、系統及裝置 相關申請案之交叉引用
本申請案主張2010年12月20日申請之名稱為「DESCRIPTOR SCHEDULER」之美國臨時申請案第61/425,098號之優先權,該案之揭示內容以引用之方式全部併入本文。本申請案亦關於2009年9月29日申請之名稱為「FLEXIBLE SEQUENCE DESIGN ARCHITECTURE FOR SOLID STATE MEMORY CONTROLLER」之美國申請案第12/569,089號,並且主張2009年1月8日申請之美國臨時申請案第61/143,386號之優先權利。
本申請案之標的大致上係關於記憶體管理。
許多電子器件包含嵌入式系統以控制底層器件之操作且提供增強功能及操作靈活性。通常包含非揮發性記憶體作為嵌入式系統之一部分以儲存用於操作該嵌入式系統之操作系統程式碼、發布之命令及關鍵資料。近來,嵌入式系統開始使用固態記憶體作為非揮發性記憶體(例如,電可抹除唯讀記憶體(EEPROM))。固態記憶體可用來加速應用程式以增加資料存取時間,並且可有利經程式化或重新程式化以提供資訊之非揮發性儲存。
描述用於提供排程工作描述符號之一定序器之方法、系統及電腦程式產品。該定序器可基於工作描述符號之各自片段及通道之可用性而管理用於執行之工作描述符號之排程。舉例而言,該定序器可檢查片段之狀態,並且識別處於忙碌或滿狀態之一或多個片段,或者處於不忙碌或空狀態之一或多個片段。基於該狀態檢查,該定序器可不按順序地執行工作描述符號,且特定言之,使其相關聯片段為可用之工作描述符號優先於其相關聯片段處於忙碌或滿狀態之工作描述符號。如此做時,可更快速地處理待決之工作描述符號且可避免非所需之延時。
在一些實施方案中,提供一種器件,該器件包含:具有複數個片段之一緩衝器管理器,該複數個片段各儲存與複數個工作描述符號之一不同工作描述符號相關聯之資料;一控制器,其控制各操作性耦合至一對應通道之複數個快閃記憶體器件,該控制器經組態以控制與各自工作描述符號相關聯之資料透過該對應通道而往返於該複數個快閃記憶體器件之一通訊;及一定序器,其基於一對應片段或通道之一可用性而排程該複數個工作描述符號之各者之一執行。
在一些實施方案中,提供一種方法,該方法包含:接收存取一記憶體之一第一命令,該第一命令包含伺服與該第一命令相關聯之資料之一第一片段,或用於透過一第一通道而從一第一快閃記憶體器件擷取資料或將資料寫入至該第一快閃記憶體器件之一第一指令之至少一者;接收一 第二命令,該第二命令包含伺服與該第二命令相關聯之資料之一第二片段,或用於透過一第二通道而從一第二快閃記憶體器件擷取資料或將資料寫入至該第二快閃記憶體器件之一第二指令之至少一者;決定該第一片段及該第二片段之一片段狀態,或者該第一通道及該第二通道之一通道狀態;以及基於該片段狀態或該通道狀態排程該第一命令及該第二命令之一處理。
在一些實施方案中,提供一種系統,該系統包含:一主機,其發布各指明一目標片段或目標通道之至少一者之複數個工作描述符號;一緩衝器管理器,其控制包含該目標片段之複數個片段,各片段與一不同工作描述符號相關聯用於暫存與該不同工作描述符號相關聯之資料,該資料包含待寫入至一快閃記憶體器件之資料或從該快閃記憶體器件讀取之資料;複數個快閃記憶體器件,其等各操作性耦合至用於在該主機與各自快閃記憶體器件之間通訊與該不同工作描述符號相關聯之該資料之一不同通道;以及一定序器,其基於該目標片段或該目標通道之一可用性而排程一工作描述符號相對於其他工作描述符號之一執行。
可實現下列優點之一者或多者。定序器可檢查片段之狀態,並且識別處於忙碌或滿狀態之一或多個片段,或者處於不忙碌或空狀態之一或多個片段。基於該狀態檢查,該定序器可不按順序地執行工作描述符號,且特定言之,使其相關聯片段為可用之工作描述符號優先於其相關聯片段處於忙碌或滿狀態之工作描述符號。如此做時,可更快速地處理待決之工作描述符號且可避免非所需之延時。
在附圖及下文之描述中提出本發明之一或多個實施例之細節。參閱描述及圖式,且參閱申請專利範圍後將顯而易知本發明之其他特徵、目的及優點。
描述用於提供排程工作描述符號之一定序器之系統、方法及電腦程式產品。傳統定序器以由韌體指明或從韌體接收之順序執行工作描述符號。接著由一相關聯片段以該順序伺服各工作描述符號。舉例而言,由片段「0」伺服一早期發布之工作描述符號「DES#1」;在已由片段「0」伺服第一工作描述符號「DES#1」之後由片段「1」伺服一後期發布之工作描述符號「DES#2」;並且在已由片段「1」處理後期發布之工作描述符號「DES#2」之後由片段「2」伺服一最後發布之工作描述符號「DES#3」。
當由其相關聯片段指定用於處理之一工作描述符號時,若該片段可用或為「空」,則習知定序器在該片段中儲存該工作描述符號。當已處理該片段中之資料時,一片段為可用或空。當該片段仍正處理舊資料或來自一先前循環之資料時,該片段為不可用或「滿」。當一片段不可用時,其相關聯工作描述符號被保持在習知定序器處。因為以一特定順序處理工作描述符號,所以後期發布之工作描述符號亦被保持在習知定序器處直至早期發布之工作描述符號獲處理。
舉例而言,雖然一早期發布之工作描述符號「DES#1」歸因於其經指派之片段「0」之忙碌狀態而處於保持,但是 即使經指派以儲存後期發布之工作描述符號「DES#2」之片段(例如片段「1」)可用,該後期發布之工作描述符號「DES#2」仍亦保持在習知定序器處且等待處理。當已處理片段「0」中之全部資料且片段「0」再次變為可用時,將早期發布之工作描述符號「DES#1」轉發至片段「0」用於儲存。接著在已執行第一工作描述符號「DES#1」且可釋放該第一工作描述符號「DES#1」之後,發送該後期發布之工作描述符號「DES#2」且將其儲存於片段「1」中。
歸因於缺乏排程方案,習知定序器可能因為僅可在完成先前工作描述符號(例如工作描述符號「DES#1」)之執行後儲存且執行後期發布之工作描述符號(例如工作描述符號「DES#2」)而遭受延時問題。在此「等待」時段期間,即使後期發布之工作描述符號之各自片段可用於儲存,其等仍「卡」在管線中。在用於傳輸與早期發布之工作描述符號相關聯之資料之記憶體通道不可用,同時與後期發布之工作描述符號相關聯之其他記憶體通道可用之情形中亦存在前述效能問題。後期發布之工作描述符號無法存取可用之通道直至已處理忙碌通道中之早期發布之工作描述符號。
為了克服習知定序器中注意到的各種效能問題,如本文所述之一定序器可經組態以基於用於執行之工作描述符號之各自片段及通道之可用性來管理該等工作描述符號之排程。舉例而言,該定序器可檢查該等片段之狀態,並且識別處於忙碌或滿狀態之一或多個片段,或者處於不忙碌或空狀態之一或多個片段。基於該狀態檢查,定序器可不 按順序地執行工作描述符號,且特定言之,使其相關聯片段為可用之工作描述符號優先於其相關聯片段處於忙碌或滿狀態之工作描述符號。舉例而言,使用上文給出之實例,若早期發布之工作描述符號「DES#1」當前正待決且等待對片段「0」之存取,則該定序器可首先排程後期發布之工作描述符號「DES#2」用於儲存於片段「1」中並執行。如此做時,可較快地處理待決之工作描述符號且可避免延時。
類似地,該定序器可檢查記憶體通道之各者以及其等之各自可用狀態,並且基於此等通道狀態而排程待決之工作描述符號。舉例而言,若指派給工作描述符號「DES#1」之通道CH「0」為忙碌而指派給工作描述符號「DES#2」之通道CH「1」為閒置或可用,則該定序器可排定該等工作描述符號之優先順序且在執行工作描述符號「DES#1」之前排程首先經由通道CH「1」待處理之工作描述符號「DES#2」。
藉由不按順序地排程工作描述符號且基於片段或通道之可用性排定工作描述符號之優先順序,定序器容許更快之記憶體快閃操作,諸如記憶體讀取、寫入及抹除操作,並且增強管理快閃記憶體中之資料之固態控制器之整體效能。
快閃記憶體概述
在與相機、視訊遊戲機、電腦及其他電子器件相關聯之隨身碟、記憶體卡及其他非揮發性記憶體應用中使用諸如快閃電可抹除可程式化唯讀記憶體(EEPROM)之快閃記憶體器件。
如第1圖所展示,快閃記憶體器件100係可按位元加以組織。舉例而言,記憶體器件100可為在深度108上包含8位元之一陣列之形式。該快閃記憶體器件100亦可按位元組加以組織。舉例而言,該快閃記憶體器件100可包含含有2K位元組之一部分104,以及含有64位元組之一部分106。該快閃記憶體器件100進一步可組織成頁面。舉例而言,該快閃記憶體器件100可包含512K頁面110。一單頁面112可組織成兩個部分,其等可包含部分104及部分106作為一第一部分114,以及一第二部分116。該第二部分116可對應於八位元寬之資料輸入/輸出(I/O)路徑(例如,I/O[0]-I/O[7])。甚至進一步言之,該快閃記憶體器件100可配置成若干區塊。舉例而言,該快閃記憶體器件100可包含等於64頁面之一區塊102。該區塊可經由定義大小以儲存一個區段之使用者資料及附加資料,包含諸如(不限於)與使用者資料相關聯之一錯誤校正碼(ECC)、使用區塊之一歷史、記憶體胞元之缺陷及其他實體資訊之資訊。可使用前述位元、位元組、頁面及區塊形成快閃記憶體器件100。
在一些實施方案中,快閃記憶體器件可為一「NAND」型快閃記憶體。NAND快閃記憶體通常比例如NOR型快閃記憶體具有更快之抹除及程式化時間,更高之密度、每位元更低之成本,以及更多之耐久度。NAND快閃記憶體可利用併同個別位元線與一參考電位之間之一或多個選擇電晶體連接之兩個以上(諸如16個或32個)記憶體胞元之串列串來形成胞元行。字線可延伸成跨越此類行內之胞 元。可藉由造成接通串中之剩餘胞元使得流動通過一串之電流可取決於經定址之胞元中所儲存之電荷之位準,而在程式化期間讀取且確認一行內之一個別胞元。
一NAND快閃I/O介面可用於與一NAND記憶體通信,並且可容許循序存取該NAND快閃記憶體中所儲存之資料。該NAND快閃I/O介面可包含各對應於一特定功能之多個接腳。雖然已僅描述NAND快閃記憶體,但是應注意亦可使用其他記憶體類型,諸如(不限於)NOR快閃EEPROM、AND快閃EEPROM、DiNOR快閃EEPROM、串列快閃EEPROM、DRAM、SRAM、ROM、EPROM、FRAM、MRAM及PCRAM。
固態驅動機系統
第2A圖展示一固態驅動機機系統200之一實施例,該固態驅動機系統200包含諸如第1圖所展示之一或多個快閃記憶體器件206。如第2A圖所展示,該系統200包含一主機202,該主機202透過一主機介面210而與一固態驅動機204通信。在一些實施方案中,該主機介面210可包含一串列進階技術附件(SATA)介面或一並列進階技術附件(PATA)介面。一SATA介面或PATA介面可用來將串列或並列資料分別轉換成並列或串列資料。舉例而言,若主機介面210包含一SATA介面,則該SATA介面可透過一匯流排203(例如,一SATA匯流排)而接收從該主機202傳送之串列資料,並且將所接收之串列資料轉換成並列資料。在其他實施方案中,主機介面210可包含一混合式介面。在此等實施方案中,可結合例如一串列介面使用混合式介 面。
在一些實施方案中,主機介面210可包含在其中可暫存來自主機202之操作命令及位址之一或多個暫存器。該主機介面210可回應於該(等)暫存器中所儲存之資訊而將一寫入或讀取操作通訊至一固態控制器208。
在一些實施方案中,固態驅動機204可支援一或多個通道(例如,八個通道),且如下文將更詳細討論,各通道可經組態以接收一或多個控制信號(例如,四個晶片啟用信號)以容納一內部命令佇列217中待決之一個以上命令。
快閃記憶體器件
在一些實施方案中,各快閃記憶體器件206可包含一非揮發性記憶體(例如,一單級快閃記憶體或一多級快閃記憶體)。在一些實施方案中,非揮發性記憶體可包含一NAND型快閃記憶體模組。一NAND型快閃記憶體模組可包含一命令/位址/資料多工介面,使得可透過對應輸入/輸出接腳而提供命令、資料及位址。
在一些實施方案中,各快閃記憶體器件可連接至一通道226。各通道可支援例如一或多個輸入與輸出線、晶片選擇信號線、晶片啟用信號線及類似信號線。該通道亦可支援其他信號線,諸如寫入啟用、讀取啟用、讀取/忙碌輸出,以及重設信號線。在一些實施方案中,快閃記憶體器件206a-206d可共用一共同通道。在其他實施方案中,為了增加並列度,各快閃記憶體器件其自身可具有連接至固態驅動機204之通道。舉例而言,可使用通道226a將快閃記憶體器件206a連接至固態驅動機204;可使用通道226b將快 閃記憶體器件206b連接至固態驅動機204;可使用通道226c將快閃記憶體器件206c連接至固態驅動機204;且可使用通道226d將快閃記憶體器件206d連接至固態驅動機204。
在一些實施方案中,快閃記憶體器件206a-206d可為拆換式。在一些實施方案中,可使用標準連接器將快閃記憶體器件206a-206d連接至固態驅動機204。標準連接器之實例可包含(不限於)SATA、USB(通用串列匯流排)、SCSI(小型電腦系統介面)、PCMCIA(個人電腦記憶體卡國際協會),以及IEEE-1394(韌體)。
在一些實施方案中,各快閃記憶體器件206可包含配置成一排之一或多個固態儲存元件。一固態儲存元件可分割成若干頁面。在一些實施方案中,一固態儲存元件可具有2000位元組之一容量(亦即,一個頁面)。在一些實施方案中,一固態儲存元件可包含兩個暫存器以提供4000-4096位元組(亦即,4kB)之一總容量。
在一些實施方案中,各快閃記憶體器件206亦可包含各使用一晶片啟用信號或晶片選擇信號而選擇之一排或多排。該晶片啟用或晶片選擇信號可回應於一主機命令而選擇一或多個固態儲存元件。
在一些實施方案中,各固態儲存元件可包含一或多個單層胞元(「SLC」)器件。在一些實施方案中,各固態儲存元件可包含一或多個多層胞元(「MLC」)器件。可使用一晶片啟用信號或晶片選擇信號來選擇該等SLC或MLC器件,可使用從主機202接收之控制資訊及位址資訊之一組合而由控制器208產生該晶片啟用信號或晶片選擇信號。
在一些實施方案中,使用多排,固態驅動機208可同時存取一相同快閃記憶體中之一排以上。在一些實施方案中,固態驅動機208可同時存取不同快閃記憶體器件中之不同排。存取一排以上之能力容許固態驅動機204充分利用可用資源及通道226a-226d以增加該固態驅動機204之整體效能。此外,在快閃記憶體器件206a-206d共用一相同記憶體輸入/輸出線及控制信號(例如,晶片啟用信號)之處,可減小控制器208之接腳之數目以進一步最小化用於製造固態驅動機204之成本。
固態控制器
用作一快閃控制器之固態控制器208接收一或多個伺服請求或命令(例如,讀取及程式化請求)。該控制器208可經組態以處置用於存取快閃記憶體器件206a-206d之任何命令、狀態或控制請求。舉例而言,該控制器208可經組態以管理且控制快閃記憶體器件206a-206d中之資料之儲存及擷取。
在一些實施方案中,控制器208可為在一微處理器(未圖示)控制下之一微電腦系統之一部分。該控制器208可控制主機202與固態驅動機204之間之命令及資料流動。在一些實施方案中,控制器208可包含唯讀記憶體(ROM)、隨機存取記憶體(RAM)及其他內部電路。在一些實施方案中,控制器208可經組態以支援與快閃記憶體器件206相關聯之各種功能,諸如(不限於)診斷快閃記憶體器件206、將命令(例如,啟動、讀取、程式化、抹除、預充電及刷新命令)發送至快閃記憶體器件206,以及從該等快閃 記憶體器件206接收狀態。該控制器208可形成於一不同晶片上作為快閃記憶體器件206a-206d(例如,形成於一相同晶片上作為固態驅動機204)或形成於一相同晶片上。
如第2A圖所展示,控制器208可包含一錯誤檢查碼(ECC)212、介面邏輯214、一定序器216及一先進先出(FIFO)218。在一些實施方案中,固態驅動機204可包含一中央處理單元(CPU)223,該中央處理單元(CPU)223具有可藉由其來控制控制器208之嵌入式韌體224。該CPU 223可包含一微處理器、一信號處理器(例如,一數位信號處理器)或微控制器。在一些實施方案中,具有嵌入式韌體224之CPU 223可常駐於固態驅動機224之外部。
在一些實施方案中,固態驅動機204亦可連接至用於控制一或多個硬碟222之一硬碟機(HDD)控制器220。該HDD控制器220可為用於一大容量儲存系統之一控制器、一光碟機控制器或用於管理資料儲存之其他類似控制器。在一些實施方案中,可結合控制器208使用HDD控制器220以管理且控制快閃記憶體器件及硬碟222以最大化固態系統200之儲存容量。
介面邏輯模組
介面邏輯214可將命令、位址及控制資訊從控制器208發送至快閃記憶體器件206a-206d。該介面邏輯214亦可將命令狀態從快閃記憶體器件206a-206d中繼至控制器208。
在一些實施方案中,介面邏輯214可經組態以支援NAND型快閃記憶體及NOR型快閃記憶體。該介面邏輯214可透過通道226a與快閃記憶體器件206a-206d通信。在使 用不同類型之快閃記憶體器件(例如,NAND記憶體及NOR記憶體)處,通道226a-226d可連接至相同或不同類型之記憶體。在一些實施方案中,當對不同通道進行讀取或程式化操作時,介面邏輯214可選擇性實行例如軟體及硬體交插操作。在其他實施方案中,介面邏輯214亦可為不同通道同時處置讀取及程式化操作。
在一些實施方案中,介面邏輯214可包含(不限於)一或多個資料埠、信號偵測器、編碼器、解碼器、交插器、解交插器、比較器及類似器件。該介面邏輯214可充當控制器208與快閃記憶體器件206a-206d之間之一介面,用於時脈、資料遮罩、選通、陣序選擇、記憶體位址、記憶體命令及讀取與程式化資料。在於快閃記憶體器件206a-206d中包含SLC或MLC器件(例如,為了儲存資料之區塊及頁面緩衝器)之處,介面邏輯214可提供一低級記憶體介面用於與SLC/MLC器件通信。
FIFO
可使用一先進先出方案操作FIFO 218,且該FIFO 218可經組態以一相同順序輸出接收之資料(例如,輸出首先接收之資料)。在一些實施方案中,FIFO 218可包含各具有多於一虛擬頁面之資料片段之一容量之一或多個暫存器。該FIFI 218可用來暫存例如被傳送至定序器216及快閃記憶體器件206用於執行時未曾加以處理之資料及命令。在一些實施方案中,ECC 212及/或介面邏輯214可利用FIFO 218以緩衝主機202與快閃記憶體器件206之間之資料傳送,並且為從快閃記憶體器件206接收或傳輸至該快閃記 憶體器件206之資料提供錯誤校正。在一些實施方案中,FIFO 218亦可包含一內部命令佇列(例如,獨立於內部命令佇列217),透過該內部命令佇列,定序器216可儲存命令或控制信號以命令或控制快閃記憶體器件216。相同或不同內部命令佇列亦可用來在嵌入式韌體(例如,韌體224)與快閃記憶體器件206之間儲存標頭及/或內部資料。
在一些實施方案中,FIFO 218可產生資料及控制信號,用於透過例如定序器216之一內部命令佇列217(如下文將更詳細討論)而將資料傳送至控制器208與從該控制器208接收資料。該FIFO 218可基於例如來自主機、定序器204或快閃記憶體器件206a-206d之命令而決定儲存於內部命令佇列217中之資料之傳送方向。
在一些實施方案中,由ECC 212處理之資料可儲存於FIFO 218中。在一些實施方案中,ECC 212可釋放儲存於FIFO 218中之各資料區塊用於碼校正。明確言之,當ECC 212識別資料中之錯誤時,可對該資料應用校正。接著可在完成對資料之ECC處理程序之後,基於從主機202接收之命令將經校正之資料區塊從FIFO 218傳送至由定序器216選擇之一快閃記憶體器件。
錯誤校正碼
快閃記憶體器件206a-206d易受缺陷及故障影響。眾多因素可引起此類錯誤,包含例如記憶體狀態之臨限位準因周邊狀況、來自包含程式化、抹除、讀取操作及類似操作之常規操作之應力而逐漸位移。其他錯誤可能是由於例如一快閃器件中之一故障記憶體位元或多個位元、往返於一 快閃器件之故障傳輸及類似者所致。因此,在一些實施方案中,為了防止操作期間之錯誤,可在控制器208中包含ECC 212以確保固態驅動機系統200之資料完整性。該ECC 212可經組態以偵測且校正例如讀取、抹除或程式化時間時由軟體錯誤及硬體錯誤所造成之資料故障。
在一些實施方案中,ECC 212可用於在與儲存於定序器216之內部命令佇列217中之資料及命令相關聯之錯誤被發送至快閃記憶體器件206之前檢查且校正該等錯誤。另外,該ECC 212可用於檢查且校正與傳輸至快閃記憶體器件206且從該快閃記憶體器件206接收之資料相關聯之錯誤。舉例而言,當將資料(例如,一狀態命令)從一快閃記憶體器件傳送至控制器208時,ECC 212可執行一錯誤偵測操作以確保所傳送之資料之完整性。若在所傳送之資料中偵測到一錯誤,則該ECC 212可迅速請求來自控制器208之錯誤校正且隨後實行資料校正。接著可將經校正之資料發送至定序器216用於進一步處理。
作為一實例操作,可由定序器216(如下文將更詳細討論)使一讀取請求佇列化且將其發送至一快閃記憶體器件206。接著可使資料從快閃記憶體器件206返回至ECC 212。該ECC 212可檢查所返回之資料之錯誤。若偵測到一錯誤而錯誤校正被禁用,則可代替預期之資料而將一錯誤通知發送至定序器216。該錯誤通知可包含指示發生一資料錯誤之一錯誤報告。接著可藉由將故障位置之位址移動至一故障圖而禁用該位置。常式可繼續且等待下一請求。若該ECC 212偵測一錯誤且啟用校正函數,則可校正、確認 故障之資料並將其轉發給定序器216。
在一些實施方案中,控制器204可產生在程式操作期間可附加至資料區段之冗餘位元(例如同位檢查位元)。舉例而言,一512位元組資料區段可包含16位元組之附加ECC資料,導致一528位元組頁面。在讀取操作期間,可利用表示為16位元組之ECC資料之冗餘資料以偵測且校正從快閃記憶體器件206讀出之資料中之錯誤。
在一些實施方案中,ECC 212亦可經組態以偵測且校正在主機202與固態器件204之間流動之資料中之錯誤。當檢查且校正錯誤時,該ECC 212可實施一錯誤校正方案,包含循環冗餘檢查(CRC),以及同位檢查及前向錯誤校正(FEC)。
定序器
在一些實施方案中,定序器216可用來進行代表韌體224之命令。該定序器216可控制例如寫入至快閃記憶體器件206a-206d之一或多個資料區段及從該等快閃記憶體器件206a-206d之一或多個資料區段讀取之一者或二者的一存取處理程序。
在一些實施方案中,定序器216可在一內部命令佇列217中儲存從韌體224(或主機202)接收之命令。該內部命令佇列217容許控制器208實行多區段資料存取。在一些實施方案中,快閃記憶體器件(例如,快閃記憶體器件206a-d)包含一512位元組頁面暫存器,該512位元組頁面暫存器經內建使得當實行至快閃記憶體器件之資料寫入時,資料會在被寫入至快閃記憶體胞元之前首先被寫入至 頁面暫存器。習知快閃控制器藉由一次傳送一個單區段(512位元組)之資料給快閃記憶體器件之頁面暫存器而控制快閃記憶體存取循環。因此,一旦充填512位元組頁面暫存器,則不容許對快閃記憶體器件之其他存取。因而,使用一單區塊資料存取方法學之習知快閃控制器限制往返於快閃記憶體器件之資料之儲存及擷取之效能。
為了增強資料並列度且擴大控制器208接收至任何給定快閃記憶體器件之一個以上命令之能力,可提供內部命令佇列217且使其用於儲存待決命令,且在一些實施方案中,內部命令佇列217可具有適於儲存各表示一個頁面之資訊之三十二個命令之一容量。主機202可將各含有唯一資料之多個命令同時發送至控制器208,且該控制器208可在內部命令佇列217中儲存此類命令用於同時或循序傳輸至快閃記憶體器件206a-206d。不同於一次傳送一單個資料區塊之習知單區塊資料傳送控制器,利用定序器216及內部命令佇列217之控制器208容許將一個以上命令發送至快閃記憶體器件206a-206d,因此得以顯著改良資料傳送效能。
作為一實例,主機202可發布一讀取命令,並且將該讀取命令發送至定序器216。當該定序器216接收該讀取命令時,該定序器216可將該命令放置於內部命令佇列217中。接著該定序器216可識別將發送命令至其處之快閃記憶體器件,以及在其處將讀取資料之經識別之快閃記憶體器件之位址。在確認可在該位址存取已識別之快閃記憶體器件之後,該定序器216可藉由使用一晶片啟用(或晶片 選擇)信號選擇經識別之快閃記憶體器件,並且將位址及命令外發至該經選擇之快閃記憶體器件而將該位址及該命令閘送至該經識別之快閃記憶體器件。在從定序器216接收讀取命令(或指示該讀取命令之一控制信號)後,已識別之快閃記憶體器件可處理該讀取命令,且隨後將串列資料或命令狀態資訊發回至該定序器216。此處理程序可繼續至已由經識別之快閃器件傳輸且由定序器216接收經定址之資料的最後位元。
在一些實施方案中,從經識別之快閃記憶體器件接收之資料可首先儲存於FIFO 218中。若由該經識別之快閃記憶體器件傳輸之資料含有一壞位元,則可在將該資料發送至定序器216之前由一經校正之位元/多個位元取代該/該等壞位元。或者,可將從經識別之快閃記憶體器件接收之資料發送至定序器216,在此之後,將該資料轉發至FIFO 218以待外發至主機202。雖然資料係在FIFO 218中等待,但是可對該資料實行ECC處理。在已執行命令或命令組之後,定序器216可載入內部命令佇列217中之下一命令或命令組用於處理。
類似地,當主機202發布一程式命令時,定序器216可從韌體224(或從該主機202)提取寫入資料。該韌體224可嵌入於固態驅動機204之CPU 223中用於控制控制器208。在接收資料後,定序器216可請求ECC 212實行一ECC錯誤校正程序。此容許傳輸期間產生之錯誤在被寫入至經識別之快閃記憶體器件之前被偵測到並獲校正。當實行一ECC錯誤校正程序時,經寫入之資料可儲存於FIFO 218中,且在校正之後隨後路由至指定快閃器件。
在一些實施方案中,在將資料(例如,其可包含命令、位址及控制資訊)發送至快閃記憶體器件206a-206d之前,可將該資料格式化成串列資料。由於將資料從介面邏輯214閘送至經識別之快閃記憶體器件,故亦可使用一管線架構來提供有效的輸送量。在一些實施方案中,在將從介面邏輯214中閘送之資料發送至經識別之快閃記憶體器件之前,可首先確認該資料。在已將資料載入至經識別之快閃記憶體器件中之後,該快閃記憶體器件可處理包含命令之資料。
在一些實施方案中,定序器216可以一輪流基礎執行各命令(例如,如其被接收般執行各命令)。在其他實施方案中,定序器216可決定內部命令佇列217是否為滿或近乎滿(例如,包含預定數目個命令)。在一些實施方案中,當內部命令佇列217為滿或近乎滿時,定序器216可逐個或同時執行命令(例如,一起執行當前儲存於命令佇列217中之待決命令之全部)。在期望處理多個命令之處,介面邏輯214可經組態以並行執行多個命令。序列216可視需要包含具有多個核心之一多核心系統,其中各核心經組態以處理一個命令以便容許立刻執行多個命令。
舉例而言,假定內部命令佇列217可容納三十二個命令,則定序器216可監視內部命令佇列217以決定該內部命令佇列217中是否儲存三十二個待決命令。若存在三十二個待決命令,則該定序器216可同時執行全部三十二個命令,並且在正滿足與各經執行之命令相關聯之請求時, 將該命令之狀態報告給韌體224。在一些實施方案中,定序器216可對介面邏輯214發布一或多個命令或控制信號使得通道226a-226d可同時開始資料傳送處理程序。
在從定序器216接收一或多個命令之後,所選擇之快閃器件可實行經請求且與該等命令相關聯之操作(例如,讀取或程式化操作)。在一些實施方案中,在正進行一命令時,韌體224無需輪詢該命令之狀態。在此等實施方案中,快閃記憶體器件226a-226d可透過介面邏輯214將可觸發一中斷常式之命令狀態資訊轉發給定序器216。當觸發該中斷常式時,可將一中斷(或其他形式之一訊息)發送至韌體224以通知該韌體224有命令狀態資訊。
在一些實施方案中,在正從對應快閃記憶體器件發送一命令之狀態時,定序器216可將該狀態實時報告給韌體224。在一些實施方案中,定序器216可經組態使得該定序器216僅在符合一特定條件時報告命令狀態。該特定條件可包含一錯誤偵測、一錯誤校正、一程式延遲及類似條件。在一些實施方案中,特定條件可取決於由命令中之一T位元供應之資訊。第3圖繪示多個待決命令各含有T位元資訊的一實例內部命令佇列300。
如第3圖所展示,當前在內部命令佇列300中儲存一命令302以待執行。舉例而言,可從主機202接收該命令302。各命令可包含與一命令號碼欄位308、一命令類型欄位310、一通道欄位318、一晶片啟用欄位312、一T位元欄位314及一記憶體欄位316相關聯之資訊。
命令號碼欄位308可用來指示當前儲存於內部命令佇 列300中之命令之號碼。命令類型欄位310可指示與各命令相關聯之命令之類型。舉例而言,命令302具有一命令類型「讀取」,其指示命令302為一讀取命令。作為另一實例,命令304具有一命令類型「程式化」,其指示命令304為一程式化命令。
通道欄位318可界定透過其將發送對應命令之通道(例如通道226a-226d之一者)。作為一實例,命令302將透過通道「1」而被發送至快閃記憶體之一陣列中之第三快閃記憶體器件(如記憶體欄位316中所指示)。作為另一實例,命令304將透過通道「2」而被發送至第六快閃記憶體器件。作為又另一實例,命令306將透過通道「3」而被發送至第七快閃記憶體器件。
在一些實施方案中,韌體224可界定T位元欄位314之T位元資訊用於各命令。在一些實施方案中,T位元資訊充當關於是否將觸發用於通知韌體224有命令狀態資訊之一中斷常式的一指示符。舉例而言,如第3圖所展示,韌體224可指定命令306之T位元欄位314為「1」,指示在可從第七快閃記憶體器件得到與該命令306相關聯之狀態時,定序器216將發送一中斷至該韌體224。作為另一實例,韌體224可指定命令302之T位元欄位314為「0」,指示在可從第三快閃記憶體器件得到與該命令302相關聯之狀態時,定序器216無需發送一中斷至該韌體224。類似地,韌體224可指定命令304之T位元欄位314為「0」,指示在可從第六快閃記憶體器件得到與該命令304相關聯之狀態時,定序器216無需發送一中斷至該韌體224。一般言之, T位元欄位314可對韌體224提供界定何時且有多頻繁地訪問韌體之靈活性,使得可將非所需之計算資源之使用,以及與接收狀態資訊相關聯之延時減小至一最小值。
在一些實施方案中,韌體224可將T位元資訊併同從主機202接收之命令一起提供給定序器216。在其他實施方案中,韌體224可將T位元資訊及從主機202接收之命令分別提供給定序器216。
該定序器216可促進待決命令之整體處理,包含(不限於)儲存從韌體224接收之一或多個待決命令、將一待決命令傳送至一對應快閃記憶體器件、在正由快閃記憶體器件處理命令時,協調該命令之狀態輪詢,以及將該命令之狀態報告給該韌體224。
在一些實施方案中,固態驅動機204(及/或主機202)可安裝於一晶片上系統(SOC)上。在此等實施方案中,可使用例如一半導體製程製造SOC。該SOC可包含獨立於固態驅動機204中之處理系統之一嵌入式處理系統(例如,一嵌入式CPU)。該SOC亦可包含用於處理程式碼及資料之一SRAM、系統邏輯、快取記憶體及快取控制器。可將與嵌入式處理系統相關聯之程式碼及資料儲存於快閃器件206中,且可透過例如一介面而將其通訊至SOC。可由一轉譯器(未圖示)使用此介面以轉譯在該介面與該SOC之內部匯流排結構之間流動之資訊。在例如讀取操作期間,當指令及資料可從快閃記憶體器件206a-206d流動至SOC時,控制信號可從該SOC流動至快閃記憶體器件206a-206d。當然,在例如抹除操作期間,指令及資料亦可 朝快閃記憶體器件206a-206d流動。
工作描述符號排程
第2B圖係繪示一工作描述符號排程處理程序的一方塊圖。在一些實施方案中,韌體224可以工作描述符號之形式產生至控制器208之一或多個命令。作為一實例,該韌體224可產生各表示諸如一讀取、寫入或抹除操作之一處理操作之工作描述符號230(DES#1)及232(DES#2)。當韌體224指派一工作給一快閃記憶體器件206時,發布一特定工作描述符號,該特定工作描述符號含有諸如(例如)目標片段、目標通道(例如,通道226a-226d之任何者)、目標快閃記憶體器件(例如,快閃記憶體器件206a-206d之任何者)、資料之類型及量、操作之類型(例如,讀取、寫入、抹除或其組合),以及ECC功率校正資訊之資訊。
定序器216可接收從韌體224發布之工作描述符號,且基於一或多個排程條件(如下文將更詳細描述)排程該等工作描述符號之各者用於儲存及執行。排程經發布之工作描述符號之儲存及執行藉由在排程其經指派之通道當前為不可用或處於一「忙碌狀態」(下文將更詳細描述)之處理之前,容許首先排程其經指派之片段或通道為「可用」、「自由」、或非「忙碌」之工作描述符號用於儲存及處理,而增强資料並列度且最大化固態驅動機204之資料處理速度。當已執行指明使用一忙碌片段之工作描述符號且不再需要該片段時,該片段變為可用(例如,已從快閃記憶體器件226擷取由韌體224請求之資料或者已將該資料寫入至該(等)快閃記憶體器件226)。
當定序器216排定工作描述符號之優先順序且排程其執行時,可執行該等工作描述符號,而不會招致起因於早期發布之工作描述符號被「截阻」在處理管道中,且在處理該等早期發布之工作描述符號之前後期發布之工作描述符號無法繼續時發生之一「卡」狀況的任何延遲。當該等早期發布之工作描述符號之經指派之通道或片段暫時不可用時,其等可能被「截阻」在處理管道中。舉例而言,在指派一工作描述符號給片段「0」用於暫存(例如,在檢查錯誤及錯誤校正之前)但是區段「0」不可用時,控制器208在執行早期發布之工作描述符號之前無法繼續執行後期發布之工作描述符號。
為了有效管理全部可用帶寬,定序器216可以一特定排程順序排程工作描述符號用於儲存及執行。在一些實施方案中,定序器216可檢查一工作描述符號中指明之目標片段、目標通道及/或目標快閃記憶體之可用性,並且只要該目標片段、該目標通道及/或該(等)目標快閃記憶體器件變為可用,便排程該工作描述符號用於暫存及執行。不同於需要以由主機發布之順序執行工作描述符號之習知方案(其在一早期發布之工作描述符號等待處理時產生「卡」狀況),定序器216可實施其中在處理後期發布之工作描述符號之後處理早期發布之工作描述符號的一排程方案。若多個工作描述符號之各自目標器件、片段或通道為可用,則該定序器216亦可立即排程該多個工作描述符號之執行。藉由適當排序且排程工作描述之執行,可增强資料並列度且可減小或消除延時問題。
在一些實施方案中,韌體224無需保持追踪各工作描述符號之狀態。取而代之,該韌體224可藉由設定一工作描述符號之一特定位元而使若干工作描述符號處於一單磁軌中。舉例而言,若韌體224意欲使十六(16)個描述符號處於一單磁軌中,則可設定最後描述符號之T位元(例如,T位元314)。該T位元容許將多個工作描述符號分組在一起且在完成後報告給韌體224使得該韌體224無需花費過多時間來伺服各工作描述符號。接著當完成一追踪時(例如,完成磁軌中之工作描述符號中界定之全部工作時),定序器216可產生至該韌體224之一中斷信號。該韌體224可每磁軌邊界程式化工作描述符號。在一些實施方案中,無關於追踪,只要目標快閃記憶體器件可用,便可並行地發布各工作描述符號。
為了有效執行工作描述符號,定序器216可與緩衝器管理器213通信,並且在緩衝器219中暫存各描述符號直至ECC 212識別且校正與一工作描述符號相關聯之全部錯誤(例如,執行工作描述符號,或回應於該工作描述符號而從一目標快閃記憶體器件讀取資料或者將資料寫入至該目標快閃記憶體器件時發生之錯誤)。該緩衝器219可為一DDR SDRAM(雙倍資料速率同步動態隨機存取記憶體)緩衝器、SDR SDRAM(單倍資料速率同步動態隨機存取記憶體)、RDRAM(直接高速匯流排式隨機存取記憶體),或者具有一固定或可變分割區大小之其他類似類型之記憶體。一般言之,緩衝器219可為用作一暫存設備之一本端記憶體,用於儲存與工作描述符號相關聯之資料或工作描述符 號其等本身。
緩衝器219可分成相同固定大小之分割區。舉例而言,該緩衝器219可分成各具有六十四(64)位元組之多個分割區。緩衝器219中之分割區之數目可等於支援流及快閃記憶體器件之數目,且該等分割區可為相同大小。舉例而言,緩衝器219可分割成各對應於四個快閃記憶體器件206a-206d之一者之四個相同大小的分割區。
該等分割區亦可分組成複數個虛擬或邏輯群組。舉例而言,該等分割區可分成兩個群組,其中一個群組用於資料寫入且另一群組用於資料讀取。雖然分割區為相同大小(例如各群組中有四個分割區),但是該等分割區亦可為不同大小(例如,一個群組中有四個分割區,且另一群組中有十二個分割區)。該等分割區亦無需全部為連續位址。
虛擬分割區係分組成資料記錄,其中分組係基於預定規則或準則而形成。各虛擬分割區可與任何時刻之緩衝器219中之一片段相關聯且映射至該片段,並且隨著建立額外片段而可重新映射至一不同片段。一片段為緩衝器219中已保留用於儲存資料之區塊的一實體區域(或其部分)。一片段可為用於一次存取儲存快取之一資料大小單元(存取單元)。一片段之大小可依不同快取分割區區域而不同。一虛擬分割區內之全部資料記錄可儲存於該虛擬分割區映射至其處之片段中。一片段可儲存屬於映射至該片段之一或多個虛擬分割區之資料記錄。可儲存於一片段中之其他資料包含(不限於)將主機202之位址映射至一目標快閃記憶體器件206之位址之映射表以及支援韌體操作之其他資 料。
當伺服一工作描述符號時,可將相關聯資料或其之一區塊發送至緩衝器219中之一片段。通常可將一次操作中讀取之部分發送至緩衝器219中之相同邏輯片段。該等邏輯片段可為連續位址空間,且指示從第一體分割區之第一記憶體位置至最後分割區之最後記憶體位置的一單組連續記憶體位置。舉例而言,若緩衝器219中存在「X」個分割區,且各分割區為「Y」記憶體位置寬,則第一片段對應於第一XY記憶體位置,且第二片段對應於下個XY記憶體位置。該等邏輯片段亦可實體分散、連結,且由緩衝器管理器213及/或控制器208管理。
緩衝器219之整體大小可為一(1)十億位元組(Gb)或二(2)Gb,且該緩衝器219可分成256K分割區。一般言之,緩衝器大小係應用及設計相依的,且亦考慮其他緩衝器大小。256K分割區之各者可被靜態地指派給一快閃記憶體器件206且對應於一不同片段(例如,片段「1」指第一分割區),使得每個流及快閃記憶體器件與一個分割區及片段相關聯。
為了實行一讀取操作,韌體224可發布請求快閃記憶體器件206之一讀取存取之一工作描述符號。在接收該工作描述符號之後,定序器216可從該工作描述符號之內容中識別對其指派該工作描述符號之片段。舉例而言,定序器216可從工作描述符號230之內容中識別已指派片段「0」用於儲存從一目標快閃記憶體器件擷取或存取之資料。作為另一實例,定序器216可將片段「1」識別為已回應於工 作描述符號232而被指派用於儲存待寫入至一目標快閃記憶體器件之資料。如上所討論,可由韌體224指派用於各工作描述符號之片段。可在各工作描述符號之內容中包含經指派之通道。各工作描述符號之內容亦可包含一邏輯區塊位址(例如,界定如何儲存資料以由諸如CPU 223之一主機使用)、一緩衝器位址(例如,界定一目標片段),以及識別例如一目標通道及一目標快閃記憶體器件之一實體區塊位址。
第4圖係展示用於排程工作描述符號之一處理程序400之一實例的一流程圖。參考第4圖,在402處,接收一第一命令以存取一記憶體,其中與該第一命令相關聯之資料將儲存於一緩衝器之一第一片段中。舉例而言,在排程工作描述符號用於執行時,定序器216可決定是否存在一早期發布之工作描述符號,且若如此,則該早期發布之工作描述符號仍待決。當例如伺服一早期發布之工作描述符號之片段為「滿」、「不可用」或「忙碌」時,該早期發布之工作描述符號正待決。一「滿」、「不可用」或「忙碌」片段意指該片段含有資料且無可用空間。相反,當一片段不含資料時,則該片段為「空」或「可用」。
舉例而言,定序器216可決定工作描述符號230為第一發布之工作描述符號,且因此,在發布工作描述符號230之前不存在待決之早期發布之工作描述符號。該定序器216亦可決定工作描述符號230指明緩衝器219之片段「0」用於暫存與該工作描述符號230相關聯之資料(例如,待寫入至一目標快閃記憶體器件或從該目標快閃記憶體器件讀 取之資料)。
在404處,接收一第二命令,其中與該第二命令相關聯之資料將儲存於緩衝器之一第二片段中。作為一實例,定序器216可接收工作描述符號232。當接收工作描述符號232時,定序器216可決定該工作描述符號232為第二發布之工作描述符號,且決定韌體224已在發布該工作描述符號232之前發布工作描述符號230。
在406處,可決定該第一片段及該第二片段之一狀態。舉例而言,在決定第一片段及第二片段之狀態時,定序器216可請求緩衝器管理器213更新該第一片段及該第二片段。舉例而言,該緩衝器管理器213可以片段「0」為忙碌(或滿)且片段「1」為可用(或空)之一狀態更新定序器216。作為另一實例,緩衝器管理器213可以片段「0」及片段「1」二者為忙碌或片段「0」及片段「1」二者為可用之一狀態更新定序器216。
在408處,可基於該狀態而排程第一命令及第二命令之處理。舉例而言,為了排程工作描述符號230及工作描述符號232之執行,定序器216可首先考慮片段「0」(伺服工作描述符號230)是否為忙碌或可用。該定序器216亦可考慮片段「1」(伺服工作描述符號232)是否忙碌或可用。作為一實例,在片段「0」及片段「1」二者為可用之處,定序器216可以任何順序,或以由韌體224指派之順序執行工作描述符號230及工作描述符號232二者。作為另一實例,在片段「0」為不可用而片段「1」為可用之處,定序器216可排程其資料將首先被儲存且執行之工作描述符 號232。一旦已暫存與工作描述符號232相關聯之資料且隨後已執行該工作描述符號232,則可將與工作描述符號230相關聯之資料排程為待暫存且接著待執行該工作描述符號230。作為又另一實例,在片段「0」為可用而片段「1」為不可用之處,定序器216可將工作描述符號230排程為首先待執行且後續接著工作描述符號232。
在一些實施方案中,若片段「0」為可用,則定序器216無需考慮片段「1」是否為忙碌或可用,因為工作描述符號230為一早期發布之描述符號,所以除至其之早期發布之工作描述符號為不可用之片段之外,該早期發布之描述符號230可藉由預設而優先於後期發布之工作描述符號。
在存在額外工作描述符號(例如,工作描述符號230及工作描述符號232之後發布之工作描述符號)之處,可重複前述排程處理程序以決定對其指派此等新工作描述符號之片段之各者是否亦可用。接著即使其相關聯之片段為可用之工作描述符號為後期發布之描述符號,仍可使此等工作描述符號優先。
作為一實例,在存在以一個別化片段(例如,片段「2」)指派之一後期發布之工作描述符號234(DES#3)之處,定序器216可藉由進一步檢查片段「2」是否可用而在工作描述符號230、工作描述符號232與工作描述符號234之間排定優先順序。若片段「2」可用(而片段「0」及片段「1」不可用),則該定序器216可首先排程與工作描述符號234相關聯之資料之暫存以及該工作描述符號234之執行。當在工作描述符號230與工作描述符號232之間時,可應用 先前所討論之排程處理程序來決定其等之各自優先順序及排程(例如,若片段「0」不可用且片段「1」可用,則首先排程工作描述符號232,或者若片段「0」可用且片段「1」不可用,則首先排程工作描述符號230)。
緩衝器管理器213可儲存從一目標快閃記憶體器件讀取/或寫入至該目標快閃記憶體器件之資料。舉例而言,該緩衝器管理器213可在緩衝器219中儲存由控制器208擷取之資料用於暫存且隨後傳輸至CPU 223。作為另一實例,該緩衝器213可在緩衝器219中暫存待寫入至一目標快閃記憶體器件之資料(例如,如由CPU 223或另一主機接收),直至已由控制器208將全部資料寫入至該目標快閃記憶體器件。ECC 212可視需要檢查經擷取之資料或控制器208待寫入之資料以決定該經擷取之資料或待寫入之資料是否無錯誤,且若該經擷取之資料或待寫入之資料含有一或多個錯誤,則實行錯誤校正以移除此等錯誤。
ECC 212可與定序器216及CPU 223連續通信以使該定序器216及該CPU 223更新與工作描述符號相關聯之資料中存在之任何錯誤。舉例而言,定序器216可暫存經擷取之資料直至已由ECC 212檢視該經擷取之資料並且將其發送至緩衝器219之對應片段用於暫存。作為另一實例,該定序器可暫存由控制器208待寫入至一目標快閃記憶體器件之資料直至已由ECC 212檢視待寫入之資料。緩衝器219中之各片段可對應於待伺服之一命令,並且儲存錯誤經檢查之資料。如上所討論,CPU 223及韌體224可在各命令中指明會將經擷取之資料或待寫入之資料暫存至其處之特 定片段。舉例而言,由CPU 223發布之讀取命令可指明將回應於工作描述符號230而存取之資料儲存於區段「0」中。
在一些實施方案中,在處理一工作描述符號時,定序器216可將一描述符號ID加入至工作描述符號以產生一新描述符號。緩衝器管理器213可在其對應片段中儲存與該新描述符號相關聯之資料,直至已從目標快閃記憶體器件擷取全部相關資料並將其傳輸至緩衝器219或ECC 212。
在由ECC 212檢查經擷取之資料處,該ECC 212可隨著從控制器208接收經擷取之資料之各區塊而逐個處理該經擷取之資料。在一些實施方案中,一工作描述符號可包含一緩衝器位址欄位,且ECC 212可在該工作描述符號中使用緩衝器位址欄位以將經擷取之資料之各區塊發送至緩衝器219中之正確片段。該工作描述符號亦可包含一ID欄位,且該ECC 212可在該工作描述符號中使用該「ID」欄位以將一信號傳輸至定序器216,指示經擷取之資料之對應區塊之錯誤檢查已完成。
定序器216可在「ID」欄位中收集如從ECC 212傳輸之資料。在一些實施方案中,定序器216可經組態以儲存記錄ID欄位中識別用於各工作描述符號之資料之一清單。以此方式,定序器216可追踪控制器208回應於經發布之工作描述符號之各者而擷取之經請求之資料之各部分或區塊。當定序器216決定ECC 212傳輸全部部分或區塊之資料時,該定序器216可將一請求傳輸至緩衝器管理器213以將經請求之資料之全部部分或區塊傳輸至CPU 223。
雖然在回應於讀取命令而擷取(或讀取)資料方面描 述前述實施方案,但是相同處理程序亦可用於寫入或抹除資料。類似地,前述實施方案亦可應用於基於通道226之可用性而排程工作描述符號。
舉例而言,亦可對各工作描述符號指派一通道,且若一早期發布之工作描述符號之經指派之通道為不可用,則定序器216可首先排程後期發布之工作描述符號用於執行。該定序器216向控制器208查詢通道之各者或一特定通道之一狀態之一更新。
在接收工作描述符號之各者之各自通道狀態之後,定序器216可藉由決定工作描述符號之優先順序而排程工作描述符號之執行。作為一實例,該定序器216可接收一工作描述符號236(DES#4),後續接著另一工作描述符號238(DES#5)。該定序器216可從各自工作描述符號236及238之內容中決定該工作描述符號236被指派給通道CH「0」且該工作描述符號238被指派給通道CH「1」。
在決定通道CH「1」及通道CH「0」之狀態時,定序器216可請求控制器208更新通道226。舉例而言,該控制器208可以通道CH「0」為忙碌(或滿)且通道CH「1」為可用(或空)之一狀態更新定序器216。作為另一實例,緩衝器管理器213可以片段「0」及片段「1」二者為忙碌,或者片段「0」及片段「1」二者為可用之一狀態更新定序器216。
若一通道連接至其之一目標快閃記憶體器件為閒置,則該通道可用。當例如一目標快閃記憶體器件回應於任何工作描述符號或命令未存取其資料時,該目標快閃記憶體 器件為閒置。舉例而言,若快閃記憶體器件206a為閒置且可用於存取(或者在通道226a中無命令/資料傳送之處),則通道226a為可用。在對多個快閃記憶體器件指派一通道之處,若至少一經指派之快閃記憶體器件為閒置,則一通道亦可視為閒置。作為另一實例,若快閃記憶體器件206正忙於處置寫入之資料或讀取之資料,則通道226b為不可用。
為了排程工作描述符號236及工作描述符號238之執行,定序器216可考慮通道CH「0」(對其指派工作描述符號236)是否忙碌或可用。該定序器216亦可考慮通道CH「1」(對其指派工作描述符號238)是否忙碌或可用。舉例而言,在通道CH「0」及通道CH「1」二者為可用之處,定序器216可以任何順序或以由韌體224發布之順序執行工作描述符號236及工作描述符號238二者。作為另一實例,在通道CH「0」不可用而通道CH「1」為可用之處,定序器216可將工作描述符號238首先排程為待執行。一旦已執行該工作描述符號238,則可將該工作描述符號236排程為由控制器208接著執行。作為又另一實例,在通道CH「0」為可用而通道CH「1」為不可用之處,定序器216可將工作描述符號236排程為由控制器首先執行,後續接著該工作描述符號238。
類似於用於評估片段之可用性之處理程序,若通道「0」為可用,則定序器216無需考慮通道「1」(對其指派工作描述符號238)是否為忙碌或可用,因為工作描述符號236為一早期發布之描述符號,所以除至其之早期發布之工作 描述符號為不可用之通道之外,該早期發布之描述符號236可藉由預設而優先於後期發布工作描述符號。
在存在額外工作描述符號(例如,工作描述符號236及工作描述符號238之後發布之工作描述符號)之處,可重複前述排程處理程序以決定對其指派此等新工作描述符號之片段之各者是否可用。接著即使其相關聯通道為可用之工作描述符號為後期發布之描述符號,仍可使此等工作描述符號優先。
作為一實例,在存在指派給通道CH「2」之一後期發布工作描述符號240(DES#6)之處,定序器216可藉由進一步檢查通道CH「2」是否可用而在工作描述符號236、工作描述符號238與工作描述符號240之間排定優先順序。若通道CH「2」可用(而通道CH「0」及通道CH「1」不可用),則該定序器216可首先排程相關聯之資料之暫存以及工作描述符號240之執行。當在工作描述符號226與工作描述符號238之間時,可應用先前所討論之排程處理程序來決定其等之各自優先順序及排程(例如,若通道CH「0」不可用且通道CH「1」可用,則首先排程工作描述符號238用於執行,或者若通道CH「0」可用且通道CH「1」不可用,則首先排程工作描述符號236用於執行)。
總而言之,定序器216可操作為將執行工作描述符號時進行排程之一排程器。韌體224可在各工作描述符號中指明該定序器216可使用以排程工作描述符號之暫存及執行的全部片段及通道資訊。
如上所討論,各工作描述符號可用作用於寫入、讀取 或抹除往返於一目標快閃記憶體器件之資料的一命令。可將資料之區塊寫入至連續快閃記憶體器件或自該等連續快閃記憶體器件讀取或抹除。或者,可將資料至區塊寫入至相同快閃記憶體器件或自該相同快取記憶體器件讀取或抹除。在另一替代例中,資料之區塊可分佈成跨越多個快閃記憶體器件,且各快閃記憶體器件可包含各實體儲存一區塊或多個區塊之資料的一或多個區段。可發布一工作描述符號以從多個快閃記憶體器件中包含之多個區段讀取資料之區塊或將資料之區塊寫入至該多個區段。
定序器216可在發布各工作描述符號時排程工作描述符號之執行(例如,只要韌體224對定序器216發布一工作描述符號,便可發生排程)。或者,一旦已接收全部工作描述符號或其之一子組,該定序器216便可排程該等工作描述符號之暫存及執行。
雖然基於片段或通道之可用性而在排程工作描述符號方面描述前述實施方案,但是定序器216亦可基於片段及通道二者之可用性而實行排程。舉例而言,在指派給一工作描述符號之一片段及一通道二者為可用之處,可優先於其片段或通道为忙碌之一早期發布之工作描述符號而首先排程該工作描述符號用於執行。作為另一實例,在指派給一工作描述符號之一片段為可用而其通道為不可用之處,可優先於其片段為不可用之一早期發布之工作描述符號而首先排程該工作描述符號用於執行,即使指派給該早期發布之工作描述符號之通道為可用。作為又另一實例,在指派給一工作描述符號之一片段為不可用而其通道為可用之 處,可優先於其通道為不可用之一早期發布之工作描述符號而首先排程該工作描述符號用於執行,即使指派給該早期發布之工作描述符號之片段為可用。
在一些實施方案中,在一早期發布之工作描述符號及一後期發布之工作描述符號二者之各自片段二者為可用之處,若指派給該後期發布之工作描述符號之通道為可用而指派給該早期發布之工作描述符號之通道為不可用,則定序器216可首先排程該後期發布之工作描述符號之執行。在存在額外後期發布之工作描述符號之處,若該等後期發布之工作描述符號之片段或通道全部為可用或不可用,則可基於所接收之順序排程該等後期發布之工作描述符號。
如上所討論,定序器216亦可向緩衝器管理器213及控制器208分別查詢緩衝器219及通道226之片段之狀態。在一些實施方案中,定序器216可向緩衝器管理器213查詢估計或預測一特定片段變得可用於資料儲存將花費多長時間。類似地,定序器216可向控制器208查詢估計或預測一特定通道變可用將花費多長時間。此一估計可基於一片段或通道之先前存取,或者當前被執行之操作之類型。接著此估計可用來在其片段為可用而通道為不可用之工作描述符號與其片段為不可用而通道為可用之工作描述符號之間進行排程。
作為一實例,若估計展示在一早期發布之工作描述符號(例如,具有一可用片段及一不可用通道)之不可用通道變可用之前,一後期發布之工作描述符號(例如,具有一可用通道及一不可用片段)之不可用片段可能變可用, 則定序器216可優先於該早期發布之工作描述符號而首先排程該後期發布之工作描述符號。
該估計亦可用來排程競爭相同可用之片段及/或通道之工作描述符號。舉例而言,若早期發布之工作描述符號及後期發布之工作描述符號之片段(或通道)二者均不可用,則若估計展示在該早期發布之工作描述符號之片段(或通道)變可用之前後期發布之工作描述符號之片段(或通道)可能首先變可用,則定序器216可優先於該後期發布之工作描述符號而首先排程該後期發布之工作描述符號用於執行。
除了用於一特定片段或通道之一時間長度變可用之外,該估計亦可取決於其他準則,諸如一操作(例如,定序器216可使必須在一極嚴格之時框中完成之關鍵工作描述符號優先)之重要性、一工作描述符號之(多個)條件(例如,在可執行工作描述符號之前必須符合之條件),以及相依約束條件(例如,基於成功完成其他工作描述符號)。
如上所討論,工作描述符號之優先順序及排程亦可取決於所實行之操作之類型。舉例而言,在一個工作描述符號(例如,DES#6)指明一寫入操作(例如,將資料從片段「6」傳送至一快閃記憶體器件)且另一工作描述符號(例如,DES#7)指明一讀取操作(例如,將由工作描述符號DES#6寫入之資料從快閃記憶體器件傳送至片段「7」)之處,定序器216可在DES#7之前排程DES#6且使該DES#6優先於該DES#7。若DES#7將優先於DES#6,則工作描述符號DES#7將傳送舊資料而非如由DES#6寫入至緩衝器 219之新資料。
所述特徵可實施於數位電子電路中,或者實施於電腦硬體、韌體、軟體或其等之組合中。該裝置可實施於一電腦程式產品中,該電腦程式產品在一機器可讀儲存器件中實體體現以由一可程式化處理器執行;且方法步驟可由執行一程式指令之一可程式化處理器實行以藉由操作輸入資料且產生輸出而實行所述實施方案之功能。所述特徵可有利實施於可在一可程式化系統上執行之一或多個電腦程式中,該可程式化系統包含經耦合以從一資料儲存系統接收資料及指令且將資料及指令傳輸至該資料儲存系統之至少一可程式化處理器,至少一輸入器件,以及至少一輸出器件。一電腦程式為可直接或間接用於一電腦中以實行特定活動或帶來特定結果之一組指令。可以任何形式之程式化語言寫入一電腦程式,包含編譯語言或解譯語言,且可將其部署成任何形式,包含部署成一獨立程式或部署成一模組、組件、子常式或適用於在一計算環境中使用之其他單元。
舉例而言,用於執行一程式指令之適當處理器包含通用微處理器及專用微處理器二者,以及單處理器或任何種類之電腦之多處理器之一者。一處理器通常將從一唯讀記憶體或一隨機存取記憶體或二者接收指令及資料。一電腦之基本元件為用於執行指令之一處理器以及用於儲存指令及資料之一或多個記憶體。一電腦通常亦將包含用於儲存資料檔案之一或多個大容量儲存器件,或者經操作性耦合以與該一或多個大容量儲存器件通信;此類器件包含磁 碟,諸如內部硬碟及可抽換式磁碟;磁光碟;以及光碟。適用於實體體現電腦程式指令及資料之存儲器件包含全部形式之非揮發性記憶體,包含例如半導體記憶體器件,諸如EPROM、EEPROM及快閃記憶體器件;諸如內部硬碟及可抽換式磁碟之磁碟;磁光碟及CD-ROM及DVD-ROM碟。處理器及記憶體可由ASIC(特定用途積體電路)補充或併入於其中。
另外,圖式中所描繪之邏輯流無需所展示之特定順序、或循序順序來達成所期望之結果。另外,可提供其他步驟,或者可從所述流中消除多個步驟,且可將其他組件加入至所述系統或者從所述系統移除。相應地,其他實施方案係在下列申請專利範圍之範疇之內。
已描述本發明之若干實施例。然而,應理解可在不脫離本發明之精神及範疇下進行各種修改。相應地,其他實施例係在下列申請專利範圍之範疇之內。
上文已詳細描述若干實施例,且各種修改係可行的。所揭示之標的(包含本說明書所述之功能操作)可實施於電子電路、電腦硬體、韌體、軟體或其等之組合中,諸如本說明書所揭示之結構性構件及其結構性等效物,其潜在包含可操作以造成一或多個資料處理裝置實行所述操作之一程式(諸如在可為一記憶體器件、一儲存器件、一機器可讀儲存基板或其他實體、機器可讀媒體或其等之一者或多者之組合之一電腦可讀媒體中編碼之一程式)。
可以任何形式之程式化語言寫入一程式(亦已知為一電腦程式、軟體、軟體應用、腳本或程式碼),包含寫成一 獨立程式或寫成一模組、組件、子常式或適用於在一計算環境中使用之其他單元。一程式無需對應於一檔案系統中之一檔案。一程式可儲存於保持其他程式或資料(例如,儲存為標記語言文件之一或多個腳本)之一檔案之一部分中,專用於討論中之程式之一單個檔案中,或者儲存於多個協調檔案(例如,儲存一或多個模組、子程式或程式碼之部分之檔案)中。一程式可部署成在一個電腦上執行或者在位於一個站點或分佈成跨越多個站點且由一通信網路互連之多個電腦上執行。
雖然本說明書含有許多細節,但是此等不應視為對可主張之物之範疇有所限制,而應視為對特定實施例而言可為特定的特徵之描述。在本說明書中不同實施例之內容中所述之特定特徵亦可組合實施為一單個實施例。相反,在一單個實施例之內容中所述之各個特徵亦可單獨或以任何適當子組合實施於多個實施例中。此外,儘管多個特徵在上文係描述為以特定組合發揮作用且甚至最初如此主張,然而來自一主張之組合之一或多個特徵在一些情形中可脫離該組合,且所主張之組合可集中於一子組合或一子組合之變體。
100‧‧‧快閃記憶體器件
102‧‧‧64頁面區塊
104‧‧‧2K位元組部分
106‧‧‧64位元組部分
108‧‧‧深度
110‧‧‧512K頁面
112‧‧‧單頁面
114‧‧‧單頁面第一部分
116‧‧‧單頁面第二部分
200‧‧‧固態驅動機機系統
202‧‧‧主機
203‧‧‧匯流排
204‧‧‧固態驅動機
206‧‧‧快閃記憶體器件
208‧‧‧控制器
210‧‧‧主機介面
212‧‧‧錯誤檢查碼/ECC
213‧‧‧緩衝器管理器
214‧‧‧介面邏輯
216‧‧‧定序器
217‧‧‧內部命令佇列
218‧‧‧先進先出/FIFO
219‧‧‧緩衝器
220‧‧‧硬碟機控制器
222‧‧‧硬碟
223‧‧‧中央處理器/CPU
224‧‧‧韌體
226‧‧‧通道
230‧‧‧工作描述符號
232‧‧‧工作描述符號
234‧‧‧工作描述符號
236‧‧‧工作描述符號
238‧‧‧工作描述符號
240‧‧‧工作描述符號
300‧‧‧內部命令佇列
302‧‧‧讀取命令
304‧‧‧程式化命令
306‧‧‧讀取命令
308‧‧‧命令號碼欄位
310‧‧‧命令類型欄位
312‧‧‧晶片啟用欄位
314‧‧‧T位元欄位
316‧‧‧記憶體欄位
318‧‧‧通道欄位
第1圖展示一快閃記憶體器件之一實施例的一方塊圖。
第2A圖展示包含第1圖所展示之一或多個快閃記憶體器件之一固態驅動機系統的一實施例。
第2B圖展示繪示實施排程工作描述符號之執行之一排程方案之一定序器的一方塊圖。
第3圖展示具有各含有T位元之資訊之多個待決命令之一內部命令佇列的一實施例。
第4圖係展示用於排程工作描述符號之一處理程序之一實例之一流程圖的一實例。
各個圖式中之相同參考符號指示相同元件。
206‧‧‧快閃記憶體器件
208‧‧‧控制器
212‧‧‧錯誤檢查碼/ECC
213‧‧‧緩衝器管理器
216‧‧‧定序器
219‧‧‧緩衝器
223‧‧‧中央處理器/CPU
224‧‧‧韌體
226‧‧‧通道
230‧‧‧工作描述符號
232‧‧‧工作描述符號
234‧‧‧工作描述符號
236‧‧‧工作描述符號
238‧‧‧工作描述符號
240‧‧‧工作描述符號

Claims (21)

  1. 一種用以記憶體排程之裝置,該裝置包括:一緩衝器管理器,該緩衝器管理器包含硬體以及該緩衝器管理器具有複數個片段(segments),該複數個片段各儲存與複數個工作描述符號(job descriptors)之一不同工作描述符號相關聯之資料;一控制器,該控制器包含硬體以及該控制器被設置以控制各操作性耦合至一對應通道之複數個快閃記憶體器件,該控制器經組態以控制與各自工作描述符號相關聯之資料透過該對應通道而往返於該複數個快閃記憶體器件之一通訊;及一定序器(sequencer),該定序器包含硬體以及該定序器設置以一第一順序接收該複數個工作描述符號且基於一對應片段或通道之一可用性(availability)而排程該複數個工作描述符號之每一者之一循序執行,其中所排程的該複數個工作描述符號之該循序執行係以一第二順序,該第二順序不同於該第一順序。
  2. 如申請專利範圍第1項所述之裝置,其中該複數個工作描述符號包含一第一工作描述符號,該第一工作描述符號指明伺服與該第一工作描述符號相關聯之資料之一第一片段,以及一第二工作描述符號,該第二工作描述符號指明伺服與該第二工作描述符號相關聯之資料之一第二片段。
  3. 如申請專利範圍第2項所述之裝置,其中若該第二片段可用且該第一片段不可用,則該定序器在該第一工作 描述符號之前排程該第二工作描述符號之一執行。
  4. 如申請專利範圍第2項所述之裝置,其中若該第一片段可用且該第二片段不可用,則該定序器在該第二工作描述符號之前排程該第一工作描述符號之一執行。
  5. 如申請專利範圍第2項所述之裝置,其中:該複數個工作描述符號包含一第三工作描述符號,該第三工作描述符號指明伺服與該第三工作描述符號相關聯之資料之一第三片段;且若該第一片段及該第二片段不可用且該第三片段可用,則該定序器在該第一工作描述符號及該第二工作描述符號之前排程該第三工作描述符號之一執行。
  6. 如申請專利範圍第2項所述之裝置,其中:該複數個工作描述符號包含指明一第三片段之一第三工作描述符號;且若該第一片段及該第三片段可用且該第二片段不可用,則該定序器在該第一工作描述符號之後但在該第二工作描述符號之前排程該第三工作描述符號之一執行。
  7. 如申請專利範圍第1項所述之裝置,其中該複數個工作描述符號包含一第一描述符號,該第一工作描述符號指明用於將資料傳輸至一第一快閃記憶體器件或從該第一快閃記憶體器件接收資料之一第一通道;以及一第二工作描述符號,其指明不同於該第一通道之一第二通道,該第二通道用於將資料傳輸至不同於該第一快閃記憶體器件之一第二快閃記憶體器件或從該第二快閃記憶體器件接收資料。
  8. 如申請專利範圍第7項所述之裝置,其中若該第二通道可用且該第一通道不可用,則該定序器在該第一工作描述符號之前排程該第二工作描述符號之一執行。
  9. 一種用以記憶體排程之方法,該方法包括:接收存取一記憶體之一第一命令,該第一命令指示伺服與該第一命令相關聯之資料之一第一片段(segment),或用於透過一第一通道而從一第一快閃記憶體器件擷取資料或將資料寫入至該第一快閃記憶體器件之一第一指令之至少一者;接收一第二命令,該第二命令指示伺服與該第二命令相關聯之資料之一第二片段,或用於透過一第二通道而從一第二快閃記憶體器件擷取資料或將資料寫入至該第二快閃記憶體器件之一第二指令之至少一者;決定該第一片段及該第二片段之一片段狀態,或者該第一通道及該第二通道之一通道狀態;及基於該片段狀態或該通道狀態排程該第一命令及該第二命令之一處理,使得該第一命令及該第二命令之所排程處理的一順序包含於一早期發布指令前處理一後期發布指令。
  10. 如申請專利範圍第9項所述之方法,其中:接收包含指明該第一片段或該第一指令之至少一者之一第一工作描述符號之該第一命令;及接收包含指明該第二片段或該第二指令之至少一者之一第二工作描述符號之該第二命令。
  11. 如申請專利範圍第10項所述之方法,其進一步包括 決定該第一通道及該第二通道之該通道狀態;其中若該通道狀態指示該第二通道可用且該第一通道不可用,則排程該第一命令及該第二命令之該處理包含在該第一工作描述符號之前排程該第二工作描述符號之該處理。
  12. 如申請專利範圍第10項所述之方法,其進一步包括決定該第一通道及該第二通道之該通道狀態;其中若該通道狀態指示該第一通道可用且該第二通道不可用,則排程該第一命令及該第二命令之該處理包含在該第二工作描述符號之前排程該第一工作描述符號之該排程。
  13. 如申請專利範圍第10項所述之方法,其進一步包括:接收包含一第三工作描述符號之一第三命令,該第三工作描述符號指明一第三指令用於透過一第三通道而從一第三快閃記憶體器件擷取資料或將資料寫入至該第三快閃記憶體器件。
  14. 如申請專利範圍第13項所述之方法,其進一步包括決定該第一通道、該第二通道及該第三通道之該通道狀態;其中若該第一通道及該第二通道不可用且該第三通道可用,則該第一工作描述符號、該第二工作描述符號及該第三工作描述符號之該處理包含在該第一工作描述符號及該第二工作描述符號之前排程該第三工作描述符號之該處理。
  15. 如申請專利範圍第13項所述之方法,其進一步包括 決定該第一通道、該第二通道及該第三通道之該通道狀態;其中若該通道狀態指示該第一通道及該第三通道可用且該第二通道不可用,則該第一工作描述符號、該第二工作描述符號及該第三工作描述符號之該處理包含在該第一工作描述符號之後但在該第二工作描述符號之前排程該第三工作描述符號之該處理。
  16. 如申請專利範圍第10項所述之方法,其進一步包括決定該第一片段及該第二片段之該片段狀態;其中若該第二片段可用且該第一片段不可用,則該第一命令及該第二命令之該處理包含在該第一工作描述符號之前排程該第二工作描述符號之該處理。
  17. 如申請專利範圍第10項所述之方法,其進一步包括決定該第一片段及該第二片段之該片段狀態;其中若該第一片段可用且該第二片段不可用,則該第一命令及該第二命令之該處理包含在該第二工作描述符號之前排程該第一工作描述符號之該處理。
  18. 如申請專利範圍第10項所述之方法,其進一步包括接收包含一第三工作描述符號之一第三命令,該第三工作描述符號指明伺服與該第三工作描述符號相關聯之資料之一第三片段;其中:決定該片段狀態包含決定該第一片段、該第二片段及該第三片段之該片段狀態;且若該第一片段及該第二片段不可用且該第三片段可 用,則該第一命令及該第二命令之該處理包含在該第一工作描述符號及該第二工作描述符號之前排程該第三工作描述符號之該處理。
  19. 如申請專利範圍第10項所述之方法,其進一步包括接收包含一第三工作描述符號之一第三命令,該第三工作描述符號指明伺服與該第三工作描述符號相關聯之資料之一第三片段;其中:決定該片段狀態包含決定該第一片段、該第二片段及該第三片段之該片段狀態;且若該第一片段及該第三片段可用且該第二片段不可用,則該第一命令及該第二命令之該處理包含在該第一工作描述符號之後但在該第二工作描述符號之前排程該第三工作描述符號之該處理。
  20. 如申請專利範圍第9項所述之方法,其進一步包括決定該第一片段及該第二片段之該片段狀態,以及該第一通道及該第二通道之該通道狀態;其中排程該第一命令及該第二命令之該處理係基於該片段狀態及該通道狀態二者執行。
  21. 一種用以記憶體排程之系統,該系統包括:一主機,其發布各指明一目標片段(segment)或目標通道之至少一者之複數個工作描述符號(job descriptors);一緩衝器管理器,其控制包含該目標片段之複數個片段,各片段與一不同工作描述符號相關聯用於暫存與該不同工作描述符號相關聯之資料,該資料包含特寫入 至一快閃記憶體器件之資料或從該快閃記憶體器件讀取之資料;複數個快閃記憶體器件,其各操作性耦合至用於在該主機與各自快閃記憶體器件之間通訊與該不同工作描述符號相關聯之該資料之一不同通道;及一定序器,其基於該目標片段或該目標通道之一可用性(availability)而排程一工作描述符號相對於其他工作描述符號之一執行,使得該複數個工作描述符號之所排程執行的一順序包含於一早期發布工作描述符號前執行一後期發布工作描述符號。
TW100147290A 2010-12-20 2011-12-20 記憶體排程之方法、系統及裝置 TWI536268B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201061425098P 2010-12-20 2010-12-20

Publications (2)

Publication Number Publication Date
TW201246083A TW201246083A (en) 2012-11-16
TWI536268B true TWI536268B (zh) 2016-06-01

Family

ID=45509668

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100147290A TWI536268B (zh) 2010-12-20 2011-12-20 記憶體排程之方法、系統及裝置

Country Status (5)

Country Link
US (1) US8788781B2 (zh)
EP (1) EP2656216B1 (zh)
CN (1) CN103403681B (zh)
TW (1) TWI536268B (zh)
WO (1) WO2012087971A2 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255615B1 (en) 2009-01-08 2012-08-28 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
US9141538B2 (en) * 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US9135168B2 (en) 2010-07-07 2015-09-15 Marvell World Trade Ltd. Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
US8868852B2 (en) 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
EP2856315A4 (en) * 2012-05-30 2016-02-17 Intel Corp TERMINATION REQUEST BETWEEN A HETEROGEN GROUP OF PROCESSORS
WO2014021823A1 (en) * 2012-07-30 2014-02-06 Empire Technology Development Llc Bad block compensation for solid state storage devices
US9092156B1 (en) * 2013-05-30 2015-07-28 Marvell International Ltd. Methods and apparatus for managing storage device commands
JP6160294B2 (ja) * 2013-06-24 2017-07-12 富士通株式会社 ストレージシステム、ストレージ装置及びストレージシステムの制御方法
US9430306B2 (en) 2013-10-08 2016-08-30 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Anticipatory protection of critical jobs in a computing system
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
EP3145132B1 (en) * 2014-06-17 2018-08-08 Huawei Technologies Co., Ltd. Control device and system and transmission channel control method in software-defined networking
US9489141B2 (en) * 2014-12-18 2016-11-08 Nimble Storage, Inc. Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device
KR102339779B1 (ko) 2015-04-06 2021-12-15 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법
JP2017045388A (ja) * 2015-08-28 2017-03-02 株式会社東芝 メモリシステム
US10037167B2 (en) * 2015-09-11 2018-07-31 Sandisk Technologies Llc Multiple scheduling schemes for handling read requests
CN105868121B (zh) * 2016-03-28 2019-05-17 北京联想核芯科技有限公司 一种信息处理方法及电子设备
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10585624B2 (en) 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
US10740042B2 (en) 2016-12-30 2020-08-11 Western Digital Technologies, Inc. Scheduling access commands for data storage devices
US11003602B2 (en) 2017-01-24 2021-05-11 Micron Technology, Inc. Memory protocol with command priority
US10635613B2 (en) 2017-04-11 2020-04-28 Micron Technology, Inc. Transaction identification
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US11768613B2 (en) 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11762798B2 (en) * 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US11797188B2 (en) * 2019-12-12 2023-10-24 Sk Hynix Nand Product Solutions Corp. Solid state drive with multiplexed internal channel access during program data transfers
US11966631B2 (en) * 2021-04-16 2024-04-23 Western Digital Technologies, Inc. Command queue order adjustment in a data storage device
TWI798034B (zh) * 2022-03-23 2023-04-01 慧榮科技股份有限公司 記憶體控制器與資料處理方法
CN116185892B (zh) * 2023-04-27 2023-07-21 珠海妙存科技有限公司 闪存控制器及其访问闪存颗粒的方法
CN116893987B (zh) * 2023-09-11 2024-01-12 归芯科技(深圳)有限公司 硬件加速方法、硬件加速器及硬件加速系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787484A (en) 1996-08-08 1998-07-28 Micron Technology, Inc. System and method which compares data preread from memory cells to data to be written to the cells
TW511034B (en) * 1998-11-09 2002-11-21 Intel Corp Scheduling requests in a system
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US7020815B2 (en) 2002-08-29 2006-03-28 Micron Technology, Inc. Memory technology test apparatus
US7421694B2 (en) 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7370326B2 (en) * 2004-04-02 2008-05-06 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
CN101512496A (zh) * 2005-11-09 2009-08-19 晟蝶以色列有限公司 用于监控闪存操作的设备和方法
US8185713B2 (en) * 2007-09-19 2012-05-22 Marvell World Travel Ltd. Flexible sequencer design architecture for solid state memory controller
US8438356B2 (en) * 2007-10-01 2013-05-07 Marvell World Trade Ltd. Flash memory controller
TWI366094B (en) 2007-12-28 2012-06-11 Asmedia Technology Inc Method and system of integrating data assessing commands and data accessing device thereof
US7930470B2 (en) 2008-01-24 2011-04-19 International Business Machines Corporation System to enable a memory hub device to manage thermal conditions at a memory device level transparent to a memory controller
US9021490B2 (en) * 2008-08-18 2015-04-28 Benoît Marchand Optimizing allocation of computer resources by tracking job status and resource availability profiles
WO2010027983A1 (en) * 2008-09-03 2010-03-11 Marvell World Trade Ltd. Progamming data into a multi-plane flash memory
US8255615B1 (en) 2009-01-08 2012-08-28 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
US8489803B2 (en) 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives

Also Published As

Publication number Publication date
TW201246083A (en) 2012-11-16
EP2656216B1 (en) 2018-12-19
US20120159052A1 (en) 2012-06-21
CN103403681A (zh) 2013-11-20
WO2012087971A3 (en) 2012-09-20
US8788781B2 (en) 2014-07-22
WO2012087971A2 (en) 2012-06-28
EP2656216A2 (en) 2013-10-30
CN103403681B (zh) 2018-09-18

Similar Documents

Publication Publication Date Title
TWI536268B (zh) 記憶體排程之方法、系統及裝置
CN108932109B (zh) 基于优先级的内部数据移动
JP5759623B2 (ja) メモリシステムコントローラを含む装置および関連する方法
US9021178B2 (en) High performance path for command processing
KR100621631B1 (ko) 반도체 디스크 제어 장치
US9058261B1 (en) Systems and methods for detailed error reporting in data storage systems
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
US11043271B2 (en) Reusing a cell block for hybrid dual write
US9348536B1 (en) Flexible sequence design architecture for solid state memory controller
WO2014085702A1 (en) Storage control system with data management mechanism of parity and method of operation thereof
WO2012166535A2 (en) Apparatus including memory system controllers and related methods
US9195530B1 (en) Systems and methods for improved data management in data storage systems
US11436153B2 (en) Moving change log tables to align to zones
US20210318801A1 (en) Zone-append command scheduling based on zone state
US11593262B1 (en) Garbage collection command scheduling
KR20180053027A (ko) 스토리지 장치 및 그 동작 방법
US11307768B2 (en) Namespace auto-routing data storage system
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
KR20240073166A (ko) 저장 디바이스 열 로드에 기초한 제어된 시스템 관리
US20140244900A1 (en) Non-volatile memory based system ram
CN113157205A (zh) 一种nand阵列的控制方法、控制器、电子设备及存储介质
CN114730247A (zh) 具有数据的最小写入大小的存储设备
TW202418087A (zh) 在多個記憶體區域中分配和儲存寫入資料的裝置和方法
WO2021211188A1 (en) Storage system and method for multiprotocol handling

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees