TWI408556B - 記憶體控制器及用於運作記憶體裝置之方法 - Google Patents
記憶體控制器及用於運作記憶體裝置之方法 Download PDFInfo
- Publication number
- TWI408556B TWI408556B TW098146473A TW98146473A TWI408556B TW I408556 B TWI408556 B TW I408556B TW 098146473 A TW098146473 A TW 098146473A TW 98146473 A TW98146473 A TW 98146473A TW I408556 B TWI408556 B TW I408556B
- Authority
- TW
- Taiwan
- Prior art keywords
- instructions
- instruction
- queue
- certain number
- channel
- Prior art date
Links
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
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- Time-Division Multiplex Systems (AREA)
- Executing Machine-Instructions (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
本發明概言之係關於半導體記憶體裝置、方法及系統,且更特定而言係關於修正指令。
通常提供記憶體裝置作為電腦或其他電子裝置中之內部半導體積體電路。存在諸多不同類型之記憶體,包括揮發性及非揮發性記憶體。揮發性記憶體可需要電力來維持其資料,且可包括隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)及同步動態隨機存取記憶體(SDRAM)及其他記憶體。非揮發性記憶體可藉由在不被供電時保留所儲存之資訊來提供持續資料,且可包括NAND快閃記憶體、NOR快閃記憶體、唯讀記憶體(ROM)、電可擦除可程式化ROM(EEPROM)、可擦除可程式化ROM(RPROM)及相變隨機存取記憶體(PCRAM)及其他記憶體。
可將多個記憶體裝置組合在一起以形成一固態驅動器(SSD)。一SSD可包括非揮發性記憶體(例如NAND快閃記憶體及NOR快閃記憶體)及/或可包括揮發性記憶體(例如DRAM及SRAM)及各種其他類型之非揮發性及揮發性記憶體。
一SSD可用於替代硬碟驅動器作為一電腦之主儲存裝置,此乃因SSD可在(舉例而言)效能、大小、重量、耐用性、運作溫度範圍及功率消耗方面具有勝於硬驅動器之優點。舉例而言,SSD在與磁碟驅動器比較時因其缺少移動部件而可具有優越的效能,該缺少移動部件可改善與磁碟驅動器相關聯之搜尋時間、延時及其他機電延遲。SSD生產商可使用非揮發性快閃記憶體來形成快閃SSD,該等快閃SSD可不使用一內部電池電源,因此允許該驅動器更多樣性且更小型。
一SSD可包括一定數目個記憶體裝置,例如一定數目個記憶體晶片(本文所用「一定數目個」某物可指代一個或多個此物,例如一定數目個記憶體裝置可指代一個或多個記憶體裝置)。如熟習此項技術者將瞭解,一記憶體晶片可包括一定數目個晶粒。每一晶粒可包括一定數目個記憶體陣列及其上之周邊電路。一記憶體陣列可包括一定數目個平面,其中每一平面包括一定數目個記憶體單元實體區塊。每一實體區塊可包括可儲存一定數目個資料扇區之一定數目個記憶體單元頁。
在一SSD運作期間,可使用諸如程式化指令、讀取指令、及擦除指令及其他指令等指令。舉例而言,一程式化(例如寫入)指令可用於將資料程式化在一固態驅動器上,一讀取指令可用於讀取一固態驅動器上之資料,且一擦除指令可用於擦除一固態驅動器上之資料。
本發明包括用於修正指令之方法、裝置、模組及系統。一個裝置實施例包括一記憶體控制器,該記憶體控制器包括一通道,其中該通道包括經組態以保持指令之一指令佇列及經組態以修正該佇列中之至少一定數目個指令且執行該等經修正指令之電路。
於本發明之以下詳細說明中,參照形成本發明之一部分之隨附圖式,且在圖式中以圖解說明方式顯示可如何實踐本發明之一個或多個實施例。充分詳細地闡述此等實施例以使熟習此項技術者能夠實踐本發明之該等實施例,且應理解,可利用其他實施例且可作出製程、電、及/或結構改變,而不背離本發明之範疇。如本文中所使用,標示符「N」及「M」(尤其關於圖式中之參照編號)指示本發明之一個或多個實施例可包括如此標示之特定特徵之一數目。該等標示符可表示相同數目個或不同數目個特定特徵。
本文中之圖遵循以下一編號慣例:其中第一個數字或前幾個數字對應於圖式圖編號,且其餘數字識別圖式中之一元件或組件。不同圖之間的類似元件或組件可藉由使用類似數字來識別。舉例而言,101可指代圖1中之元件「10」,且一類似元件在圖2中可標號為201。如將瞭解,可添加、交換及/或消除本文中各種實施例中所示之元件以提供本發明之一定數目個額外實施例。另外,如將瞭解,該等圖中所提供之該等元件之比例及相對比例尺意欲圖解說明本發明之該等實施例而非在一限定意義上繪製。
圖1圖解說明根據本發明之一個或多個實施例之一記憶體系統120之一方塊圖。在一個或多個實施例中,記憶體系統120可係一固態驅動器。圖1之實施例圖解說明記憶體系統120之一個實施例之組件及架構。在圖1中所圖解說明之實施例中,記憶體系統120包括一控制器101、一介面連接器103及記憶體陣列130-1、...、130-N。在一個或多個實施例中,記憶體系統120可包括用以包封記憶體系統120之一外殼,但此外殼並非係必需。
介面連接器103可用於在記憶體系統120與另一裝置(諸如一計算裝置)之間傳送資訊。舉例而言,當記憶體系統120用於一計算裝置中之資料儲存時,介面103可尤其係一串列高級技術附件(SATA)。
控制器101可與記憶體陣列130-1、...、130-N通信以在記憶體陣列130-1、...、130-N上實施讀取、程式化(例如寫入)及擦除作業及其他作業。控制器101可用於管理記憶體系統120中之作業。控制器101可具有可係一定數目個積體電路之電路。控制器101亦可具有可係一定數目個分立組件之電路。對於一個或多個實施例,控制器101中之電路可包括用於控制跨一定數目個記憶體陣列進行存取之控制電路。控制器101中之電路亦可包括用於提供一外部主機與記憶體系統120之間的一轉譯層之控制電路。因此,一記憶體控制器可選擇性地耦合一記憶體陣列之一I/O連接(未於圖1中顯示)以在適當時間在適當I/O連接處接收適當信號。類似地,一主機與記憶體系統120之間的通信協定可不同於存取一記憶體陣列(例如記憶體陣列130-1、...、130-N)所需之協定。然後,記憶體控制器101可將自一主機接收之指令轉譯成適當指令以達成對一記憶體陣列之所期望存取。
記憶體陣列130-1、...、130-N可係各種類型之揮發性及非揮發性記憶體陣列(例如快閃及DRAM陣列及其他陣列)。在一個或多個實施例中,記憶體陣列130-1、...、130-N可係固態記憶體陣列。記憶體陣列130-1、...、130-N可包括可分組成多個單元之一定數目個記憶體單元。如本文所用,一單元可包括一定數目個記憶體單元,諸如一頁、實體區塊、平面、一整個陣列或其他記憶體單元群組。舉例而言,一記憶體陣列可包括一定數目個平面,其中每一平面包括一定數目個實體區塊。每一實體區塊中之記憶體單元可作為一單元一起被擦除,例如可以一大致同時之方式擦除每一實體區塊中之胞。舉例而言,可在一單個作業中一起擦除每一實體區塊中之胞。一實體區塊可包括一定數目個頁。每一頁中之記憶體單元可作為一單元一起被程式化,例如可以一大致同時之方式程式化每一頁中之胞。每一頁中之記憶體單元亦可作為一單元一起被讀取。作為一實例,一128GB記憶體裝置可包括每頁4314個資料位元組,每實體區塊128個頁,每平面2048個實體區塊,且每裝置16個平面。然而,實施例並不限於此實例。
一記憶體系統之一實體扇區可對應於一邏輯扇區且可包括附加項資訊(諸如錯誤糾正碼(ECC)資訊)及邏輯區塊位址(LBA)資訊以及使用者資料。如熟習此項技術者將瞭解,邏輯區塊定址係一主機識別一資訊邏輯扇區通常所用之方案。作為一實例,每一實體扇區可儲存表示一定數目個資料位元組之資訊,例如256個位元組、512個位元組或1024個位元組及其他數目個位元組。然而,本發明之實施例並不限於儲存於一實體扇區中或與一邏輯扇區相關聯之一特定數目個資料位元組。
圖2圖解說明可根據本發明之一個或多個實施例運作之一記憶體控制器201之一功能方塊圖。在一個或多個實施例中,記憶體控制器201可係一固態驅動器控制器。在一個或多個實施例中,記憶體控制器201可類似於圖1中所示之控制器101。
如在圖2中所示,記憶體控制器201包括一前端部分及一後端部分。該前端部分可對應於一前端通道,且該後端部分可對應於一定數目個後端通道,例如後端通道1 210-1、...、後端通道N 210-N。記憶體控制器201可使用前端通道及後端通道來與記憶體陣列230-1、...、230-N通信以在記憶體陣列230-1、...、230-N上實施讀取、程式化(例如寫入)及擦除作業及其他作業。在一個或多個實施例中,記憶體陣列230-1、...、230-N可係固態記憶體陣列。在一個或多個實施例中,記憶體陣列230-1、...、230-N可類似於圖1中所示之記憶體陣列130-1、...、130-N。
如在圖2中所示,控制器201之前端部分(例如前端通道)包括主機介面202、指令處理器204、前端直接記憶體存取(DMA)206及指令調度器208。後端通道210-1、...、210-N可包括後端通道處理器211-1、...、211-N、後端通道DMA 213-1、...、213-N、後端通道指令佇列215-1、...、215-N、資料緩衝器217-1、...、217-N及ECC引擎/陣列介面219-1、...、219-N。雖然圖2中所示之實施例將每一後端通道210-1、...、210-N圖解說明為包括一後端通道處理器,但本發明之實施例並不如此限定。舉例而言,該後端部分可包括可在每一後端通道210-1、...、210-N上運作之電路,例如一單個後端處理器或硬體邏輯,諸如一專用積體電路(ASIC)。
在圖2中所圖解說明之實施例中,該前端通道可經由前端DMA 206及指令調度器208耦合至後端通道,例如後端通道210-1、...、210-N。舉例而言,前端DMA 206可耦合至後端通道處理器211-1、...、211-N及後端通道DMA 213-1、...、213-N。指令調度器208可耦合至後端通道指令佇列215-1、...、215-N。主機介面202可用於在控制器201與一主機裝置(未顯示,諸如一計算裝置)之間傳送資訊。在一個或多個實施例中,主機介面202可用於經由一介面連接器(例如圖1中所示之介面連接器103)在控制器201與該主機裝置之間傳送資訊。
在一個或多個實施例中,在主機裝置與控制器201之間傳送之資訊可包括一定數目個指令,諸如程式化指令、讀取指令、及擦除指令及其他指令。一程式化(例如寫入)指令可用於在記憶體陣列230-1、...、230-N上程式化資料,一讀取指令可用於讀取記憶體陣列230-1、...、230-N上之資料,且一擦除指令可用於擦除記憶體陣列230-1、...、230-N上之資料。該等指令可包括指示被命令之作業類型(例如程式化、讀取或擦除)、一數量(例如邏輯扇區數目)及該指令欲開始執行之一位置(例如一開始位址)之資訊及其他資訊。若該指令係一程式化指令,則該指令可後跟(未必緊接著)將被程式化至對應記憶體單元之資料。在一個或多個實施例中,該數量可係一主機之對應於一定數目個記憶體單元之一定數目個邏輯扇區。在一個或多個實施例中,該指令中所包括之「位置」可係一邏輯區塊位址(LBA)。
資料緩衝器217-1、...、217-N可經由主機介面202、前端DMA 206及後端通道DMA 213-1、...、213-N自主機接收將在記憶體陣列230-1、...、230-N上程式化之資料。該資料可經由ECC引擎/陣列介面219-1、...、219-N自資料緩衝器217-1、...、217-N發送至記憶體陣列230-1、...、230-N。
在一個或多個實施例中,一LBA可與主機之一邏輯扇區相關聯,例如一主機之每一邏輯扇區可與一特定LBA相關聯。舉例而言,LBA 1000可與一第一邏輯扇區相關聯,LBA 1001可與一第二邏輯扇區相關聯,LBA 1002可與一第三邏輯扇區相關聯等。作為一進一步實例,用以程式化該陣列中對應於開始於LBA 1000之16個邏輯扇區之記憶體單元之指令可程式化與LBA 1000至1016相關聯之記憶體單元,例如對應於與LBA 1000至1016相關聯之邏輯扇區之記憶體單元。
指令調度器208可經由主機介面202自主機接收一定數目個指令。指令調度器208可保持該等所接收之指令,且將該等指令發送至適當後端通道210-1、...、210-N。舉例而言,後端通道佇列215-1、...、215-N可自指令調度器208接收該等指令。在一個或多個實施例中,後端通道210-1、...、210-N可按指令調度器208自主機接收該等指令之次序接收該等指令。在一個或多個實施例中,指令調度器208可保持多達一特定數目個指令,且若指令調度器208正保持該特定數目個指令(例如若指令調度器208係充滿),則其可無法自主機接收指令。
在一個或多個實施例中,後端通道指令佇列215-1、...、215-N可保持自指令調度器208接收之一定數目個指令。在一個或多個實施例中,該等佇列可按該等指令欲被執行之次序保持該等指令。在一個或多個實施例中,該等佇列可按自該指令調度器接收該等指令之次序保持該等指令。在一個或多個實施例中,每一佇列可保持等於指令調度器208可保持之一定數目個指令之一定數目個指令。舉例而言,在一個或多個實施例中,指令調度器208及該等佇列可各自保持多達32個指令。然而,本發明之實施例並不限於特定數目個指令。
根據一個或多個實施例,後端通道處理器211-1、...、211-N可確定是否可修正保持於該等佇列中之指令且可相應地(諸如)在其保持於該等佇列中時修正該等指令。在一個或多個實施例中,若可改變該等指令保持於一佇列中之次序,若可將一佇列中之該等指令中之一定數目個指令組合成一指令(例如一單個指令),或若一佇列中之該等指令中之一定數目個指令將被該佇列中之一隨後指令覆寫,則可修正該等指令。在一個或多個實施例中,修正指令可包括:改變指令保持於佇列中之次序、將一佇列中之一定數目個可組合指令組合成一單個指令、或刪除一佇列中之將被該佇列中之一隨後指令覆寫之一定數目個指令及其他修正。
在一個或多個實施例中,若保持於一佇列中之指令係重疊指令,則該等指令係可組合的,(例如)可將其組合成一單個指令。如本文所用,重疊指令係與重疊位址(諸如重疊邏輯區塊位址(LBA))相關聯之一定數目個指令。舉例而言,重疊指令可包括與該等指令欲執行於其上之記憶體陣列之一共同位置相關聯之指令。一具體實例包括用以程式化一陣列中對應於一主機之開始於邏輯區塊位址(LBA)1000之48個邏輯扇區(例如來自該主機之48個資料邏輯扇區)之記憶體單元之一第一指令及用以程式化該陣列中對應於該主機之開始於LBA 1040之16個邏輯扇區之記憶體單元之一第二指令。該第一及第二指令係重疊指令,此乃因兩個指令皆與開始於LBA 1040之相同8個邏輯扇區相關聯。因此,可將此兩個指令組合成用以程式化對應於開始於LBA 1000之56個邏輯扇區之記憶體單元之一單個指令。可組合保持於該佇列中之重疊指令而不管其接收於該佇列中之次序如何。
在一個或多個實施例中,若保持於一佇列中之指令係順序指令,則該等指令係可組合的,例如可組合成一單個指令。如本文所用,順序指令係與該等指令欲執行於其上之順序位址(諸如順序LBA)相關聯之一定數目個指令。舉例而言,順序指令可包括與一如下邏輯扇區相關聯之指令:該邏輯扇區緊在與其他指令中之一者相關聯之該(等)邏輯扇區之前或之後。一具體實例包括用以程式化一陣列中對應於一主機之開始於LBA 1000之16個邏輯扇區之記憶體單元之一第一指令及用以程式化該陣列中對應於該主機之開始於LBA 1016之32個邏輯扇區之記憶體單元之一第二指令。該第一及第二指令係順序指令,此乃因與該第一指令相關聯之位址緊在與該第二指令相關聯之位址之前,例如與該第二指令相關聯之位置緊在與該第一指令相關聯之位置之後。因此,可將此兩個指令組合成用以程式化對應於該主機之開始於LBA 1000之48個邏輯扇區之記憶體單元之一單個指令。可組合保持於該佇列中之順序指令而不管其接收於該佇列中之次序如何。
在一個或多個實施例中,若一佇列中之一第一指令與該佇列中之一隨後指令皆與該等指令欲執行於其上之相同位址(諸如相同LBA)相關聯,則該第一指令將被該隨後指令覆寫。舉例而言,用以程式化一陣列中對應於一主機之開始於LBA 1000之16個邏輯扇區之記憶體單元之一第一指令將會被用以程式化該陣列中對應於該主機之開始於LBA 1000之16個邏輯扇區之記憶體單元之一隨後指令覆寫,此乃因該第一指令及該隨後指令兩者皆與相同之位址相關聯。因此,可刪除該第一指令。
在一個或多個實施例中,若與一佇列中之一第一指令相關聯之位址係在與該佇列中之一隨後指令相關聯之位址之一範圍內,則該第一指令將會被該隨後指令覆寫。舉例而言,用以程式化一陣列中對應於一主機之開始於LBA 1000之16個邏輯扇區之記憶體單元之一第一指令將會被用以程式化該陣列中對應於該主機之開始於LBA 1000之48個邏輯扇區之記憶體單元之一隨後指令覆寫。因此,可刪除該第一指令。
後端通道處理器211-1、...、211-N可根據該等經修正指令保持於該等佇列中之次序執行該等經修正指令。舉例而言,若藉由改變該等指令保持於該等佇列中之次序來修正該等指令,則後端通道處理器可根據該已改變次序執行該等指令。若藉由將該等指令中之一定數目個指令組合成一單個指令來修正該等指令,則後端通道處理器可執行該單個指令來代替單獨地執行該一定數目個指令。若藉由刪除將會被一隨後指令覆寫之一(或多個)指令來修正該等指令,則後端通道處理器可執行該隨後指令而不執行該(等)已刪除之指令。
在一個或多個實施例中,若藉由將該等指令中之一定數目個指令組合成一單個指令來修正保持於後端通道指令佇列215-1、...、215-N中之指令,則可認為保持於指令調度器208中亦可與該單個指令組合之任何指令已完成。後端通道處理器211-1、...、211-N可通知指令處理器204此等指令已完成。舉例而言,若將佇列215-1中用以程式化一陣列中對應於一主機之開始於LBA 1000之48個邏輯扇區之記憶體單元之一第一指令及佇列215-N中用以程式化該陣列中對應於該主機之開始於LBA 1040之16個邏輯扇區之記憶體單元之一第二指令組合成一單個指令(例如用以程式化對應於該主機之開始於LBA 1000之56個邏輯扇區之記憶體單元之一指令),則可認為保持於指令調度器208中用以程式化對應於該主機之開始於LBA 1000之16個邏輯扇區之記憶體單元之一指令完成,例如後端通道處理器211-1可通知指令處理器204此指令已完成,此乃因此指令可與該單個指令組合。
後端通道處理器211-1、...、211-N亦可根據該等經修正之指令修正欲在記憶體陣列230-1、...、230-N上程式化之資料。舉例而言,後端通道處理器211-1、...、211-N可修正該資料以匹配該經修正之指令。後端通道處理器211-1、...、211-N可在資料緩衝器217-1、...、217-N接收到該資料之前(例如在將該資料自前端DMA 206發送至資料緩衝器217-1、...、217-N時)修正該資料。後端通道處理器211-1、...、211-N亦可在將資料自資料緩衝器217-1、...、217-N發送至記憶體陣列230-1、...、230-N之後修正該資料。
在一個或多個實施例中,後端通道指令佇列215-1、...、215-N可在後端通道處理器211-1、...、211-N正執行該等經修正之指令之同時保持自指令調度器208接收之額外指令。後端通道處理器211-1、...、211-N可在執行該等經修正之指令之同時修正該等額外指令。
ECC引擎/陣列介面219-1、...、219-N可用於將記憶體控制器201耦合至記憶體陣列230-1、...、230-N。後端通道處理器211-1、...、211-N可經由ECC引擎/陣列介面219-1、...、219-N在記憶體陣列230-1、...、230-N上執行經修正指令。雖然圖2中所示之實施例將該等指令圖解說明為通過後端通道處理器211-1、...、211-N行進,但本發明之實施例並不如此限定。舉例而言,該等指令可經由ECC引擎/陣列介面219-1、...、219-N直接自後端通道指令佇列215-1、...、215-N行進至記憶體陣列230-1、...、230-N。
資料緩衝器217-1、...、217-N可保持在一定數目個先前讀取作業期間所讀取之資料,例如,回應於一先前讀取指令在位於記憶體陣列230-1、...、230-N中之一定數目個記憶體單元上實施之讀取。在一個或多個實施例中,保持於後端通道指令佇列215-1、...、215-N中之該等指令可包括用以讀取先前經讀取之一定數目個記憶體單元(例如該等記憶體單元之資料已保持於資料緩衝器217-1、...、217-N中)之一定數目個指令。在此等實施例中,後端通道處理器211-1、...、211-N可(例如)不存取記憶體陣列230-1、...、230-N而藉由存取資料緩衝器217-1、...、217-N來執行此等讀取指令,或藉由僅存取僅針對未在該(等)資料緩衝器中之資料之該(等)記憶體陣列來執行讀取指令。
在一個或多個實施例中,藉由將一定數目個可組合指令組合成一單個指令來修正指令可消除或減少一記憶體系統所實施之部分頁程式化作業之數目,此可改良該系統之總效能及/或可靠性。如熟習此項技術者將理解,一部分頁程式化作業可包括定位一新區塊、將儲存於位於一舊區塊中之一頁上之資料讀取至一資料緩衝器中、將該資料緩衝器中之該資料與新資料合併及/或用新資料替代該資料緩衝器中之該資料以使得該資料緩衝器中之資料包括新資料及自舊區塊中之頁讀取之資料兩者,且以該資料緩衝器中之資料程式化新區塊中之一頁。該部分頁程式化作業亦可包括將儲存於該舊區塊中之剩餘頁之資料傳送至該新區塊中之剩餘頁(例如讀取儲存於該舊區塊中剩餘頁上之資料且以該資料程式化該新區塊中之剩餘頁),標記該舊區塊以用於擦除,且擦除該舊區塊。
如熟習此項技術者將理解,一部分頁程式化作業可由用以僅程式化一頁之一部分之一指令而產生,例如藉由此一指令起始。舉例而言,僅程式化一頁之一部分之一指令可在程式化該頁之一剩餘部分之一指令已執行之情形下,起始一部分頁程式化作業。然而,可藉由根據本發明之一個或多個實施例組合用以僅程式化一頁之一部分之一指令與用以程式化該頁之該(等)剩餘部分之一定數目個指令來避免一部分頁程式化作業,例如可避免實施與上文所闡述之一部分頁程式化作業相關聯之作業之需要。舉例而言,涉及包括對應於一主機之開始於LBA 3000之4個邏輯扇區之記憶體單元之一頁之一部分頁程式化作業可藉由根據本發明之一個或多個實施例組合用以程式化該頁中對應於該主機之開始於LBA 3000之2個邏輯扇區之記憶體單元之一指令與用以程式化該頁中對應於該主機之開始於LBA 3002之2個邏輯扇區之記憶體單元之一指令來避免。
在一個或多個實施例中,指令處理器204可實施類似於後端通道處理器211-1、...、211-N所執行之功能之功能。舉例而言,指令處理器204可確定是否可修正保持於指令調度器208中之該等指令,且可在該等指令保持於指令調度器208中之同時相應地修正該等指令。若可改變該等指令發送至後端通道之次序,若可將該等指令中之一定數目個指令組合成一單個指令,若該等指令中之一定數目個指令將被一隨後指令覆寫等,則可修正該等指令。修正該等指令可包括改變指令調度器208將指令發送至後端通道之次序、將指令調度器208所接收之一定數目個可組合指令組合成一單個指令、刪除指令調度器208所接收之將被指令調度器208所接收之一隨後指令覆寫之一定數目個指令等。
在一個或多個實施例中,指令處理器204可在指令調度器208無法自主機接收指令時實施此等功能,例如可確定是否可修正保持於指令調度器208中之指令且可在該等指令保持於指令調度器208中之同時相應地修正該等指令。舉例而言,指令處理器204可在指令調度器208係充滿時實施此等功能。
在一個或多個實施例中,指令處理器204可確定保持於指令調度器208中之指令是否係不欲由後端通道處理器211-1、...、211-N修正之指令。若指令處理器204確定保持於指令調度器208中之一定數目個指令不欲由後端通道處理器修正,則指令處理器204可將此等指令標記(例如加標籤)為不欲由後端通道處理器修正之指令。由指令處理器204標記為不欲被修正之指令將不會由後端通道處理器211-1、...、211-N修正,儘管其係保持於後端通道指令佇列215-1、...、15-N中。舉例而言,若後端通道指令佇列215-1保持用以程式化一陣列中對應於一主機之開始於LBA 1000之48個邏輯扇區之記憶體單元之一第一指令及用以程式化該陣列中對應於該主機之開始於LBA 1040之16個邏輯扇區之記憶體單元之一第二指令,且指令處理器204已將此等指令中之一者或兩者標記為不欲被修正之一(多個)指令,則後端通道處理器211-1將不修正(例如組合)此兩個指令。不欲被修正之指令可包括(舉例而言)係一覆寫作業之一部分之指令,例如一如下作業:其中一第一程式化指令後跟一讀取指令,且該讀取指令後跟意欲覆寫該最初程式化指令之一第二程式化指令。然而,本發明之實施例並不如此限定,且不欲被修正之指令可包括其他類型之指令。
根據本發明之一個或多個實施例運作一記憶體裝置可藉由(舉例而言)刪除重複指令且將多個指令組合成一個指令來減少執行一定數目個指令所用之時間量,藉此增加該記憶體裝置之效率。另外,由於後端通道可與記憶體陣列230-1、...、230-N緊密地耦合(例如位於其附近),因而可藉由根據本發明之一個或多個實施例運作一記憶體裝置來增加該記憶體裝置之效率。
圖3圖解說明根據本發明一個或多個實施例之通道指令佇列315之一方塊圖。在一個或多個實施例中,通道指令佇列315可類似於圖2中所示之後端通道指令佇列215-1、...、215-N。
如在圖3中所示,通道指令佇列315包括通道指令槽1 325-1、通道指令槽2 325-2、通道指令槽3 325-3、通道指令槽4 325-4、...、通道指令槽M 325-M。每一通道指令槽325-1、325-2、325-3、325-4、...、325-M可保持一個指令,例如通道指令佇列315可保持多達M個指令。在一個或多個實施例中,如本文中先前所闡述,可修正保持於通道指令佇列315中之指令。
在一個或多個實施例中,通道指令佇列315中之槽數目(例如通道指令佇列315可保持之指令數目)可等於通道指令佇列315自其接收指令之一裝置(諸如圖2中所示之指令調度器208)可保持之指令數目。舉例而言,若指令調度器208可保持多達32個指令,則通道指令佇列315可具有32個槽,例如通道指令佇列315可保持多達32個指令。然而,本發明之實施例並不如此限定,且通道指令佇列315可具有不同數目個槽。
在一個或多個實施例中,通道指令佇列315可按指令欲執行之次序保持該等指令。在一個或多個實施例中,通道指令佇列315可按其接收指令之次序保持該等指令。舉例而言,通道指令槽1 325-1可保持欲第一個執行及/或通道指令佇列315第一個接收到之一指令,通道指令槽1 325-2可保持欲在保持於通道指令槽1 325-1中之指令執行之後執行及/或在接收到保持於通道指令槽1 325-1中之指令之後接收到之一指令,通道指令槽2 325-3可保持欲在保持於通道指令槽2 325-2中之指令執行之後執行及/或在接收到保持於通道指令槽2 325-2中之指令之後接收到之一指令等。
圖4A圖解說明根據本發明一個或多個實施例之一通道指令佇列415之一方塊圖。在一個或多個實施例中,通道指令佇列415可類似於圖2中所示之後端通道1指令佇列215-1、...、215-N或圖3中所示之通道指令佇列315。通道指令佇列415包括通道指令槽425-1、425-2、425-3、425-4、425-5、425-6、425-7、425-8、...、425-M,該等通道指令槽可類似於圖3中所示之通道指令槽1 325-1、通道指令槽2 325-2、通道指令槽3 325-3、通道指令槽4 325-4、...、通道指令槽M 325-M。
在圖4A所圖解說明之實施例中,每一通道指令槽425-1至425-M皆保持一指令。舉例而言,通道指令槽425-1正保持指令1,通道指令槽425-2正保持指令2等。指令1係用以程式化一陣列中對應於一主機之開始於LBA 1000之16個邏輯扇區(例如來自主機之16個資料邏輯扇區)之記憶體單元之一指令。指令2係用以讀取該陣列中對應於該主機之開始於LBA 2000之4個邏輯扇區之記憶體單元之一指令。指令3係用以程式化該陣列中對應於該主機之開始於LBA 1000之48個邏輯扇區之記憶體單元之一指令。指令4係用以讀取該陣列中對應於該主機之開始於LBA 2002之10個邏輯扇區之記憶體單元之一指令。指令5係用以讀取該陣列中對應於該主機之開始於LBA 2000之16個邏輯扇區之記憶體單元之一指令。指令6係用以程式化該陣列中對應於該主機之開始於LBA 1040之16個邏輯扇區之記憶體單元之一指令。指令7係用以程式化該陣列中對應於該主機之開始於LBA 3000之2個邏輯扇區之記憶體單元之一指令。指令8係用以程式化該陣列中對應於該主機之開始於LBA 3002之2個邏輯扇區之記憶體單元之一指令。
可根據本發明之一個或多個實施例修正保持於通道指令佇列415中之指令。舉例而言,可將通道指令槽425-1、425-3、及425-6中之指令組合成用以程式化該陣列中對應於該主機之開始於LBA 1000之56個邏輯扇區之記憶體單元之一指令(例如一單個指令)。可刪除通道指令槽425-2及425-4中之指令。可將通道指令槽425-7及425-8中之指令組合成用以程式化該陣列中對應於該主機之開始於LBA 3000之4個邏輯扇區之記憶體單元之一單個指令。
圖4B圖解說明在根據本發明之一個或多個實施例修正圖4A中所示之指令之後的通道指令佇列415之一方塊圖。如在圖4B中所示,保持於通道指令槽425-1中之指令1係用以程式化該陣列中對應於該主機之開始於LBA 1000之56個邏輯扇區之記憶體單元之一指令,保持於通道指令槽425-2中之指令2係用以讀取該陣列中對應於該主機之開始於LBA 2000之16個邏輯扇區之記憶體單元之一指令,且保持於通道指令槽425-3中之指令3係用以程式化該陣列中對應於該主機之開始於LBA 3000之4個邏輯扇區之記憶體單元之一指令。
本發明包括用於修正指令之方法、裝置、模組及系統。一個裝置實施例包括一記憶體控制器,該記憶體控制器包括一通道,其中該通道包括經組態以保持指令之一指令佇列及經組態以修正該佇列中之至少一定數目個指令且執行該等經修正指令之電路。
雖然本文中已圖解說明及闡述了具體實施例,但熟習此項技術者將瞭解,經計算以達成相同結果之一配置可替代所顯示之具體實施例。本發明意欲涵蓋本發明之一個或多個實施例之修改或變化形式。應理解,已以一說明性方式而非一限定性方式作出以上說明。在審閱以上說明後,熟習此項技術者將明瞭以上實施例之組合及本文中未具體闡述之其他實施例。本發明之一個或多個實施例之範疇包括其中使用以上結構及方法之其他應用。因此,應參照隨附申請專利範圍連同此等申請專利範圍授權於其之等效物之全部範圍來確定本發明之一個或多個實施例之範疇。
先前述實施方式中,出於簡化本發明之目的而將某些特徵一起集合在一單個實施例中。本發明之此方法不應解釋為反映本發明之所揭示實施例必須使用比明確陳述於每一請求項中更多之特徵之一意圖。而是,如以下申請專利範圍所反映,發明性標的物在於少於一單個所揭示實施例之所有特徵。因此,以下申請專利範圍藉此併入實施方式中,其中每一請求項獨立地作為一單獨實施例。
101...控制器
103...介面連接器
120...記憶體系統
130-1...記憶體陣列
130-N...記憶體陣列
201...記憶體控制器
202...主機介面
204...指令處理器
206...前端直接記憶體存取
208...指令調度器
210-1...後端通道
210-N...後端通道
211-1...後端通道處理器
211-N...後端通道處理器
213-1...後端通道DMA
213-N...後端通道DMA
215-1...後端通道指令佇列
215-N...後端通道指令佇列
217-1...資料緩衝器
217-N...資料緩衝器
219-1...ECC引擎/陣列介面
219-N...ECC引擎/陣列介面
230-1...記憶體陣列
230-N...記憶體陣列
325-1...通道指令槽1
325-2...通道指令槽2
325-3...通道指令槽3
325-M...通道指令槽M
425-1...通道指令槽
425-2...通道指令槽
425-3...通道指令槽
425-4...通道指令槽
425-5...通道指令槽
425-6...通道指令槽
425-7...通道指令槽
425-8...通道指令槽
425-M...通道指令槽
圖1圖解說明根據本發明一個或多個實施例之一記憶體系統之一方塊圖;
圖2圖解說明可根據本發明一個或多個實施例運作之一記憶體控制器之一功能方塊圖;
圖3圖解說明根據本發明一個或多個實施例之一通道指令佇列之一方塊圖;及
圖4A及4B圖解說明根據本發明一個或多個實施例之一通道指令佇列之一方塊圖。
201‧‧‧記憶體控制器
202‧‧‧主機介面
204‧‧‧指令處理器
206‧‧‧前端直接記憶體存取
208‧‧‧指令調度器
210-1‧‧‧後端通道
210-N‧‧‧後端通道
211-1‧‧‧後端通道處理器
211-N‧‧‧後端通道處理器
213-1‧‧‧後端通道DMA
213-N‧‧‧後端通道DMA
215-1‧‧‧後端通道指令佇列
215-N‧‧‧後端通道指令佇列
217-1‧‧‧資料緩衝器
217-N‧‧‧資料緩衝器
219-1‧‧‧ECC引擎/陣列介面
219-N‧‧‧ECC引擎/陣列介面
230-1‧‧‧記憶體陣列
230-N‧‧‧記憶體陣列
Claims (39)
- 一種記憶體控制器,其包含:一後端通道,其中該後端通道包括:一指令佇列,其經組態以保持指令;及電路,其經組態以:修正該佇列中之至少一定數目個指令;及執行該等經修正指令;及一前端通道,其中該前端通道包括電路,其經組態以:自一主機接收指令;將指令發送至該後端通道;及實施選自包括以下各項之功能群組之一定數目個功能:改變該等指令被發送至該後端通道之次序;將自該主機接收之一定數目個可組合指令組合成一指令;及刪除自該主機接收之將被自該主機接收之一其他指令覆寫之一指令。
- 如請求項1之記憶體控制器,其中經組態以修正至少一定數目個指令之電路包含經組態以在該一定數目個指令保持於該佇列中時修正該一定數目個指令之電路。
- 如請求項1之記憶體控制器,其中經組態以修正至少一定數目個指令之電路包含經組態以改變該佇列中之指令保持於該佇列中之一次序之電路。
- 如請求項3之記憶體控制器,其中經組態以執行該等經修正指令之電路包含經組態以根據該已改變次序執行該佇列中之指令之電路。
- 如請求項1之記憶體控制器,其中該電路進一步經組態以確定是否可修正該佇列中之指令。
- 如請求項1之記憶體控制器,其中經組態以修正至少一定數目個指令之電路包含以下電路中之至少一者:經組態以在可將該佇列中之一定數目個指令組合成一指令時修正該佇列中之該一定數目個指令之電路;或經組態以在該佇列中之一定數目個指令將被該佇列中之另一指令覆寫時修正該佇列中之該一定數目個指令之電路。
- 如請求項6之記憶體控制器,其中經組態以在可將該佇列中之一定數目個指令組合成一指令時修正該佇列中之該一定數目個指令之電路包含經組態以在可將該佇列中之一定數目個指令組合成一單個指令時修正該佇列中之該一定數目個指令之電路。
- 如請求項6之記憶體控制器,其中經組態以在可將該佇列中之一定數目個指令組合成一指令時修正該佇列中之該一定數目個指令之電路包含以下電路中之至少一者:經組態以將一定數目個重疊指令組合成一指令之電路;或經組態以將一定數目個順序指令組合成一指令之電路。
- 如請求項6之記憶體控制器,其中經組態以在該佇列中之一定數目個指令將被該佇列中之另一指令覆寫時修正該佇列中之該一定數目個指令之電路包含經組態以執行以下作業之電路:確定該佇列中之一指令是否將被該佇列中之一其他指令覆寫;及刪除將被該其他指令覆寫之該指令。
- 如請求項1之記憶體控制器,其中該後端通道之該電路包括以下各項中之至少一者:一處理器;或一專用積體電路。
- 一種記憶體控制器,其包含:一後端通道,其中該後端通道包括:一指令佇列,其經組態以保持一定數目個指令;及一處理器,其經組態以實施選自包括以下各項之功能群組之一定數目個功能:改變指令保持於該佇列中之一次序;將該佇列中之一定數目個可組合指令組合成一指令;及刪除該佇列中將被該佇列中之一其他指令覆寫之一指令;及一前端通道,其中該前端通道包括:一指令調度器,其經組態以:自一主機接收一定數目個指令;及 將一定數目個指令發送至該後端通道;及一指令處理器,其經組態以實施選自包括以下各項之功能群組之一定數目個功能:改變該指令調度器將指令發送至該後端通道之該次序;將該指令調度器自該主機接收之一定數目個可組合指令組合成一指令;及刪除該指令調度器自該主機接收之將被該指令調度器自該主機接收之一其他指令覆寫之一指令。
- 如請求項11之記憶體控制器,其中該後端通道之該處理器包含經組態以實施選自該功能群組之一個或多個功能之一處理器。
- 如請求項11之記憶體控制器,其中可組合指令包括:重疊指令;及順序指令。
- 如請求項11之記憶體控制器,其中:該佇列經組態以按該指令調度器將該等指令發送至該後端通道之次序保持指令。
- 如請求項11之記憶體控制器,其中該佇列經組態以保持等於該指令調度器可保持之一定數目個指令之一定數目個指令。
- 如請求項11之記憶體控制器,其中該指令調度器經組態以:按該指令調度器自該主機接收該等指令之次序將該等 指令發送至該後端通道。
- 如請求項11之記憶體控制器,其中該指令處理器經組態以當該指令調度器無法自該主機接收指令時實施該一定數目個功能。
- 如請求項17之記憶體控制器,其中該指令處理器經組態以當該指令調度器係充滿時實施該一定數目個功能。
- 如請求項11之記憶體控制器,其中:該指令處理器經組態以:確定是否不欲對保持於該指令調度器中之指令實施經組態以由該後端通道之該處理器實施之該功能群組中之該等功能;及將保持於該指令調度器中之若干指令標記為不對其等實施經組態以由該後端通道之該處理器實施之該功能群組中之該等功能。
- 如請求項19之記憶體控制器,其中該後端通道之該處理器經組態以不對經標記指令實施該功能群組中之該等功能。
- 一種記憶體控制器,其包含:一前端通道,其中該前端通道包括一前端直接記憶體存取(DMA);及一定數目個後端通道,其中該一定數目個後端通道包括:一後端通道DMA,其耦合至該前端DMA且經組態以: 耦合該前端通道至該等後端通道;及自該前端DMA接收將程式化至一記憶體陣列之資料;一指令佇列,其經組態以保持一定數目個指令;及一處理器,其經組態以:修正該指令佇列中之指令,其中修正該等指令包括實施選自包括以下各項之功能群組中之一定數目個功能:改變指令保持於該佇列中之一次序;將該佇列中之重疊指令組合成一指令;將該佇列中之順序指令組合成一指令;及刪除該佇列中將被該佇列中之一其他指令覆寫之一指令;及根據該等經修正指令保持於該佇列中之一次序執行該等經修正指令。
- 如請求項21之記憶體控制器,其中經組態以保持一定數目個指令之一指令佇列包含經組態以保持一定數目個讀取指令之一指令佇列,其中該一定數目個讀取指令包括用以讀取回應於一先前讀取指令而先前所讀取之儲存於一記憶體陣列中之一定數目個記憶體單元上之資料之一指令,且其中該記憶體控制器進一步經組態以在不存取該陣列之情況下執行讀取先前所讀取資料之該指令。
- 如請求項22之記憶體控制器,其中該一定數目個後端通道包括經組態以保持該先前所讀取之資料之一資料緩衝 器,且其中該處理器經組態以藉由存取該資料緩衝器來執行該一定數目個讀取指令中之至少一者之至少一部分。
- 如請求項21之記憶體控制器,其中該一定數目個後端通道包括經組態以將該記憶體控制器耦合至一定數目個記憶體陣列之一介面。
- 一種用於運作一記憶體裝置之方法,其包含:修正保持於一後端通道中之一佇列中之一定數目個指令,其中修正該一定數目個指令包括實施選自包括以下各項之功能群組之一定數目個功能:改變指令保持於該佇列中之一次序;將該佇列中之一定數目個可組合指令組合成一指令;及刪除該佇列中將被該佇列中之一其他指令覆寫之一指令;根據該等經修正指令保持於該佇列中之一次序執行該等經修正指令;藉由一前端通道之電路自一主機接收指令;藉由該前端通道之該電路將指令發送至該後端通道;及藉由該前端通道之該電路實施選自包括以下各項之功能群組之一定數目個功能:改變該等指令被發送至該後端通道之次序;將自該主機接收之一定數目個可組合指令組合成一 指令;及刪除自該主機接收之將被自該主機接收之一其他指令覆寫之一指令。
- 如請求項25之方法,其中:改變指令保持於該佇列中之一次序包括按該等指令欲執行之一次序排序該等指令;及根據該等經修正指令保持於該佇列中之一次序執行該等經修正指令包括根據該等指令欲執行之該次序執行該等指令。
- 如請求項25之方法,其中將該佇列中之一定數目個可組合指令組合成一指令包括將該佇列中之一定數目個可組合指令組合成一單個指令。
- 如請求項25之方法,其中組合一定數目個可組合指令包括:組合重疊指令;及組合順序指令。
- 如請求項25之方法,其中該方法包括:在執行該等經修正指令之同時在該佇列中接收額外指令;及在執行該等經修正指令之同時修正該等額外指令。
- 如請求項25之方法,其中執行該等經修正指令包括執行欲在一記憶體陣列上運作之該等經修正指令。
- 一種用於運作一記憶體裝置之方法,其包含:將保持於一後端通道中之一佇列中之一定數目個可組 合指令組合成一指令,藉此避免一部分頁程式化作業;藉由一前端通道之一指令調度器自一主機接收一定數目個指令;藉由該前端通道之該指令調度器將一定數目個指令發送至該後端通道;及藉由該前端通道之一指令處理器實施選自包括以下各項之功能群組之一定數目個功能:改變該指令調度器將指令發送至該後端通道之該次序;將該指令調度器自該主機接收之一定數目個可組合指令組合成一指令;及刪除該指令調度器自該主機接收之將被該指令調度器自該主機接收之一其他指令覆寫之一指令。
- 如請求項31之方法,其中保持於該佇列中之該一定數目個可組合指令中之每一者皆與一特定記憶體單元頁之一部分相關聯。
- 如請求項31之方法,其進一步包含執行組合自保持於該佇列中之該一定數目個可組合指令之該指令。
- 一種用於運作一記憶體裝置之方法,其包含:在位於一記憶體控制器之一後端通道中之一佇列中接收一定數目個指令;修正該佇列中之該一定數目個指令;執行該等經修正指令;藉由耦合至該記憶體控制器之一前端通道之一前端 DMA之該後端通道之一後端通道直接記憶體存取(DMA)來耦合該前端通道至該後端通道;及藉由該後端通道DMA而自該前端DMA接收將程式化至一記憶體陣列之資料。
- 如請求項34之方法,其中:修正該佇列中之該一定數目個指令包括改變該一定數目個指令之一次序;及執行該等經修正指令包括根據該已改變次序執行該一定數目個指令。
- 如請求項34之方法,其中:在該佇列中接收一定數目個指令包括接收與重疊邏輯區塊位址(LBA)相關聯之一定數目個指令;及修正該佇列中之該一定數目個指令包括將與重疊LBA相關聯之該一定數目個指令組合成一單個指令。
- 如請求項34之方法,其中:在該佇列中接收一定數目個指令包括接收與順序邏輯區塊位址(LBA)相關聯之一定數目個指令;及修正該佇列中之該一定數目個指令包括將與順序LBA相關聯之該一定數目個指令組合成一單個指令。
- 如請求項34之方法,其中:在該佇列中接收一定數目個指令包括:接收與一特定邏輯區塊位址(LBA)相關聯之一第一指令;及在該第一指令之後接收與該特定LBA相關聯之一第 二指令;及修正該佇列中之該一定數目個指令包括刪除該第一指令。
- 如請求項34之方法,其中在該佇列中接收一定數目個指令包括自該前端通道接收一定數目個指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/351,206 US8078848B2 (en) | 2009-01-09 | 2009-01-09 | Memory controller having front end and back end channels for modifying commands |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201040733A TW201040733A (en) | 2010-11-16 |
TWI408556B true TWI408556B (zh) | 2013-09-11 |
Family
ID=42317039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098146473A TWI408556B (zh) | 2009-01-09 | 2009-12-31 | 記憶體控制器及用於運作記憶體裝置之方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8078848B2 (zh) |
EP (1) | EP2377028B1 (zh) |
JP (1) | JP5354404B2 (zh) |
KR (1) | KR101284440B1 (zh) |
CN (1) | CN102317928B (zh) |
TW (1) | TWI408556B (zh) |
WO (1) | WO2010080142A2 (zh) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8543758B2 (en) * | 2011-05-31 | 2013-09-24 | Micron Technology, Inc. | Apparatus including memory channel control circuit and related methods for relaying commands to logical units |
US9898402B2 (en) | 2011-07-01 | 2018-02-20 | Micron Technology, Inc. | Unaligned data coalescing |
JP2013061799A (ja) * | 2011-09-13 | 2013-04-04 | Toshiba Corp | 記憶装置、記憶装置の制御方法およびコントローラ |
EP3249546B1 (en) | 2011-12-14 | 2022-02-09 | Level 3 Communications, LLC | Content delivery network |
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US9146856B2 (en) * | 2012-04-10 | 2015-09-29 | Micron Technology, Inc. | Remapping and compacting in a memory device |
TWI454913B (zh) * | 2012-06-26 | 2014-10-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US9122401B2 (en) * | 2012-08-23 | 2015-09-01 | Apple Inc. | Efficient enforcement of command execution order in solid state drives |
US9471484B2 (en) | 2012-09-19 | 2016-10-18 | Novachips Canada Inc. | Flash memory controller having dual mode pin-out |
US10652087B2 (en) | 2012-12-13 | 2020-05-12 | Level 3 Communications, Llc | Content delivery framework having fill services |
US10701149B2 (en) | 2012-12-13 | 2020-06-30 | Level 3 Communications, Llc | Content delivery framework having origin services |
US10701148B2 (en) | 2012-12-13 | 2020-06-30 | Level 3 Communications, Llc | Content delivery framework having storage services |
US9634918B2 (en) | 2012-12-13 | 2017-04-25 | Level 3 Communications, Llc | Invalidation sequencing in a content delivery framework |
US10791050B2 (en) | 2012-12-13 | 2020-09-29 | Level 3 Communications, Llc | Geographic location determination in a content delivery framework |
US9722882B2 (en) | 2012-12-13 | 2017-08-01 | Level 3 Communications, Llc | Devices and methods supporting content delivery with adaptation services with provisioning |
US20140337472A1 (en) | 2012-12-13 | 2014-11-13 | Level 3 Communications, Llc | Beacon Services in a Content Delivery Framework |
CN103914125A (zh) * | 2013-01-06 | 2014-07-09 | 海尔集团公司 | 设备控制方法、设备控制装置、设备和设备控制系统 |
US9298521B1 (en) | 2013-04-29 | 2016-03-29 | Seagate Technology Llc | Command sets and functions |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9348747B2 (en) * | 2013-10-29 | 2016-05-24 | Seagate Technology Llc | Solid state memory command queue in hybrid device |
KR102198855B1 (ko) * | 2014-04-24 | 2021-01-05 | 삼성전자 주식회사 | 메모리 시스템 및 상기 메모리 시스템의 동작 방법 |
US9384830B2 (en) * | 2014-05-06 | 2016-07-05 | Micron Technology, Inc. | Apparatuses and methods for performing multiple memory operations |
KR20160118836A (ko) | 2015-04-03 | 2016-10-12 | 에스케이하이닉스 주식회사 | 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법 |
CN106293623B (zh) * | 2015-05-18 | 2020-09-01 | 北京忆芯科技有限公司 | 微指令序列执行方法及其装置 |
US9904609B2 (en) * | 2015-11-04 | 2018-02-27 | Toshiba Memory Corporation | Memory controller and memory device |
US9591047B1 (en) | 2016-04-11 | 2017-03-07 | Level 3 Communications, Llc | Invalidation in a content delivery network (CDN) |
JP6784051B2 (ja) * | 2016-04-18 | 2020-11-11 | ブラザー工業株式会社 | インクジェット記録装置 |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10521344B1 (en) * | 2017-03-10 | 2019-12-31 | Pure Storage, Inc. | Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems |
JP6880402B2 (ja) * | 2017-05-10 | 2021-06-02 | 富士通株式会社 | メモリアクセス制御装置及びその制御方法 |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
KR20190019712A (ko) * | 2017-08-18 | 2019-02-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR102474035B1 (ko) * | 2017-08-18 | 2022-12-06 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20190032809A (ko) * | 2017-09-20 | 2019-03-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
CN108628759B (zh) * | 2017-12-29 | 2020-09-01 | 贵阳忆芯科技有限公司 | 乱序执行nvm命令的方法与装置 |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
KR20190110360A (ko) * | 2018-03-20 | 2019-09-30 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 시스템 및 그 동작 방법 |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
KR102707637B1 (ko) * | 2019-04-29 | 2024-09-13 | 에스케이하이닉스 주식회사 | 명령 머지 동작을 수행하는 반도체 메모리 장치 및 그 동작 방법 |
KR20210108466A (ko) * | 2019-05-05 | 2021-09-02 | 양쯔 메모리 테크놀로지스 씨오., 엘티디. | 시퀀스 프로세싱 유닛이 있는 메모리 제어 시스템 |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
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 |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US11409681B2 (en) | 2020-09-04 | 2022-08-09 | Paypal, Inc. | Computer system communication via sideband processor |
US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470445B1 (en) * | 1999-09-07 | 2002-10-22 | Hewlett-Packard Company | Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write |
US7181548B2 (en) * | 1998-10-30 | 2007-02-20 | Lsi Logic Corporation | Command queueing engine |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5924485A (ja) | 1982-07-30 | 1984-02-08 | Toshiba Corp | 入出力ペ−ジング機構 |
DE3241376A1 (de) | 1982-11-09 | 1984-05-10 | Siemens AG, 1000 Berlin und 8000 München | Dma-steuereinrichtung zur uebertragung von daten zwischen einem datensender und einem datenempfaenger |
US4797812A (en) | 1985-06-19 | 1989-01-10 | Kabushiki Kaisha Toshiba | System for continuous DMA transfer of virtually addressed data blocks |
US5544347A (en) | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US5182800A (en) | 1990-11-16 | 1993-01-26 | International Business Machines Corporation | Direct memory access controller with adaptive pipelining and bus control features |
US5640596A (en) * | 1992-03-10 | 1997-06-17 | Hitachi, Ltd. | Input output control system for transferring control programs collectively as one transfer unit designated by plurality of input output requests to be executed |
JP2774728B2 (ja) * | 1992-04-08 | 1998-07-09 | 株式会社日立製作所 | ディスクアレイ制御方式 |
US5526484A (en) | 1992-12-10 | 1996-06-11 | International Business Machines Corporation | Method and system for pipelining the processing of channel command words |
US5517670A (en) | 1992-12-30 | 1996-05-14 | International Business Machines Corporation | Adaptive data transfer channel employing extended data block capability |
JP3250861B2 (ja) * | 1993-03-09 | 2002-01-28 | 株式会社日立製作所 | ディスク装置システム |
US5564055A (en) | 1994-08-30 | 1996-10-08 | Lucent Technologies Inc. | PCMCIA slot expander and method |
US5717952A (en) | 1994-11-16 | 1998-02-10 | Apple Computer, Inc. | DMA controller with mechanism for conditional action under control of status register, prespecified parameters, and condition field of channel command |
US5870625A (en) * | 1995-12-11 | 1999-02-09 | Industrial Technology Research Institute | Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command |
JP3287203B2 (ja) | 1996-01-10 | 2002-06-04 | 株式会社日立製作所 | 外部記憶制御装置及び外部記憶制御装置間データ転送方法 |
US6185521B1 (en) | 1996-02-16 | 2001-02-06 | Emc Corporation | System and method for emulating mainframe channel programs by open systems computer systems |
US5901327A (en) | 1996-05-28 | 1999-05-04 | Emc Corporation | Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring |
US6029226A (en) * | 1996-09-30 | 2000-02-22 | Lsi Logic Corporation | Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command |
US5928370A (en) | 1997-02-05 | 1999-07-27 | Lexar Media, Inc. | Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure |
US6034897A (en) | 1999-04-01 | 2000-03-07 | Lexar Media, Inc. | Space management for managing high capacity nonvolatile memory |
US5974499A (en) | 1997-04-23 | 1999-10-26 | Micron Technology, Inc. | Memory system having read modify write function and method |
US6012104A (en) | 1997-10-24 | 2000-01-04 | International Business Machines Corporation | Method and apparatus for dynamic extension of channel programs |
US6076137A (en) | 1997-12-11 | 2000-06-13 | Lexar Media, Inc. | Method and apparatus for storing location identification information within non-volatile memory devices |
US6192444B1 (en) | 1998-01-05 | 2001-02-20 | International Business Machines Corporation | Method and system for providing additional addressable functional space on a disk for use with a virtual data storage subsystem |
JP2001209500A (ja) * | 2000-01-28 | 2001-08-03 | Fujitsu Ltd | ディスク装置およびディスク装置のリード・ライト処理方法 |
US7102671B1 (en) | 2000-02-08 | 2006-09-05 | Lexar Media, Inc. | Enhanced compact flash memory card |
JP2001290607A (ja) * | 2000-04-06 | 2001-10-19 | Matsushita Electric Ind Co Ltd | デバイスドライバのコマンドキューイング制御方法及びコンピュータシステム |
US6564304B1 (en) * | 2000-09-01 | 2003-05-13 | Ati Technologies Inc. | Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching |
JP3908482B2 (ja) * | 2001-06-22 | 2007-04-25 | 富士通株式会社 | 入出力制御装置及び入出力制御方法並びに情報記憶システム |
US6912669B2 (en) | 2002-02-21 | 2005-06-28 | International Business Machines Corporation | Method and apparatus for maintaining cache coherency in a storage system |
US6915378B2 (en) | 2003-04-23 | 2005-07-05 | Hypernova Technologies, Inc. | Method and system for improving the performance of a processing system |
US7010654B2 (en) | 2003-07-24 | 2006-03-07 | International Business Machines Corporation | Methods and systems for re-ordering commands to access memory |
TW200506733A (en) | 2003-08-15 | 2005-02-16 | Via Tech Inc | Apparatus and method for the co-simulation of CPU and DUT modules |
KR100585136B1 (ko) | 2004-03-04 | 2006-05-30 | 삼성전자주식회사 | 메모리 시스템의 데이터 채널 초기화 방법 |
US7418540B2 (en) * | 2004-04-28 | 2008-08-26 | Intel Corporation | Memory controller with command queue look-ahead |
US7328317B2 (en) | 2004-10-21 | 2008-02-05 | International Business Machines Corporation | Memory controller and method for optimized read/modify/write performance |
US8332526B2 (en) | 2005-05-25 | 2012-12-11 | Microsoft Corporation | Data communication protocol including negotiation and command compounding |
JP2007058646A (ja) | 2005-08-25 | 2007-03-08 | Hitachi Ltd | データ処理システム |
US7587625B2 (en) * | 2006-02-16 | 2009-09-08 | Intel Corporation | Memory replay mechanism |
JP4935182B2 (ja) | 2006-05-11 | 2012-05-23 | 富士ゼロックス株式会社 | コマンドキューイング制御装置、コマンドキューイングプログラム及びストレージシステム |
US8244975B2 (en) | 2006-06-30 | 2012-08-14 | Seagate Technology Llc | Command queue ordering by flipping active write zones |
US20080126641A1 (en) * | 2006-08-31 | 2008-05-29 | Irish John D | Methods and Apparatus for Combining Commands Prior to Issuing the Commands on a Bus |
US20080107275A1 (en) | 2006-11-08 | 2008-05-08 | Mehdi Asnaashari | Method and system for encryption of information stored in an external nonvolatile memory |
US7996599B2 (en) * | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
-
2009
- 2009-01-09 US US12/351,206 patent/US8078848B2/en active Active
- 2009-12-30 JP JP2011545333A patent/JP5354404B2/ja active Active
- 2009-12-30 WO PCT/US2009/006741 patent/WO2010080142A2/en active Application Filing
- 2009-12-30 KR KR1020117018454A patent/KR101284440B1/ko active IP Right Grant
- 2009-12-30 EP EP09837729.4A patent/EP2377028B1/en active Active
- 2009-12-30 CN CN200980156842.3A patent/CN102317928B/zh active Active
- 2009-12-31 TW TW098146473A patent/TWI408556B/zh active
-
2011
- 2011-10-11 US US13/270,675 patent/US8966231B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7181548B2 (en) * | 1998-10-30 | 2007-02-20 | Lsi Logic Corporation | Command queueing engine |
US6470445B1 (en) * | 1999-09-07 | 2002-10-22 | Hewlett-Packard Company | Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write |
Also Published As
Publication number | Publication date |
---|---|
KR20110112420A (ko) | 2011-10-12 |
JP2012514809A (ja) | 2012-06-28 |
TW201040733A (en) | 2010-11-16 |
EP2377028A2 (en) | 2011-10-19 |
JP5354404B2 (ja) | 2013-11-27 |
WO2010080142A3 (en) | 2010-09-23 |
CN102317928A (zh) | 2012-01-11 |
EP2377028B1 (en) | 2016-06-22 |
US20120030452A1 (en) | 2012-02-02 |
WO2010080142A2 (en) | 2010-07-15 |
CN102317928B (zh) | 2014-08-06 |
US8966231B2 (en) | 2015-02-24 |
US20100180105A1 (en) | 2010-07-15 |
KR101284440B1 (ko) | 2013-07-09 |
US8078848B2 (en) | 2011-12-13 |
EP2377028A4 (en) | 2012-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI408556B (zh) | 記憶體控制器及用於運作記憶體裝置之方法 | |
US10949091B2 (en) | Memory controllers, memory systems, solid state drives and methods for processing a number of commands | |
US9229655B2 (en) | Controller and method for performing background operations | |
US10275378B2 (en) | Data buffer pointer fetching for direct memory access | |
US8370603B2 (en) | Architecture for address mapping of managed non-volatile memory | |
KR20140013098A (ko) | 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 | |
KR20190057779A (ko) | 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치 | |
KR20200003055A (ko) | Nand 버퍼를 갖는 nand 플래시 저장 디바이스 | |
CN114649012A (zh) | 存储器控制器和包括存储器控制器的存储装置 | |
US20150254011A1 (en) | Memory system, memory controller and control method of non-volatile memory | |
US11354063B2 (en) | Memory system |