TW202009695A - 資料儲存裝置及其共享控制器中記憶體的方法 - Google Patents

資料儲存裝置及其共享控制器中記憶體的方法 Download PDF

Info

Publication number
TW202009695A
TW202009695A TW108102013A TW108102013A TW202009695A TW 202009695 A TW202009695 A TW 202009695A TW 108102013 A TW108102013 A TW 108102013A TW 108102013 A TW108102013 A TW 108102013A TW 202009695 A TW202009695 A TW 202009695A
Authority
TW
Taiwan
Prior art keywords
memory
data
central processor
error correction
volatile memory
Prior art date
Application number
TW108102013A
Other languages
English (en)
Other versions
TWI703499B (zh
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 TW202009695A publication Critical patent/TW202009695A/zh
Application granted granted Critical
Publication of TWI703499B publication Critical patent/TWI703499B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Quality & Reliability (AREA)
  • Multi Processors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)

Abstract

一種資料儲存裝置及其共享控制器中記憶體的方法。所述資料儲存裝置包括非揮發性記憶體,以及電性耦接於非揮發性記憶體的控制器。控制器包括存取介面、容錯式磁碟陣列錯誤更正碼引擎以及中央處理器。中央處理器具有第一記憶體以用來儲存暫時資料,容錯式磁碟陣列錯誤更正碼引擎具有第二記憶體,並當第二記憶體有未被完全使用到時,控制器是將第二記憶體的未使用的記憶體空間映射到第一記憶體下,以虛擬成為第一記憶體的一部份,使得中央處理器也就能夠利用第二記憶體的未使用的記憶體空間來儲存暫時資料。

Description

資料儲存裝置及其共享控制器中記憶體的方法
本發明是有關於一種資料儲存裝置,且特別是一種資料儲存裝置及其共享控制器中記憶體的方法。
一般來說,資料儲存裝置是由控制器(Controller)與非揮發性記憶體,例如快閃記憶體(Flash Memory)所構成,控制器又主要包括中央處理器(Central Processing Unit,CPU),且中央處理器具有自己的記憶體,例如CPU記憶體以用來儲存資料或程式。然而,由於CPU記憶體通常為固定大小,所以只要中央處理器所欲儲存的資料或程式大於CPU記憶體的可用空間時,中央處理器就會將該資料或程式改存在控制器外的動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)中,但中央處理器存取外部DRAM上的速度遠比於存取內部CPU記憶體上的速度慢許多,以致於造成整體系統效能下降。
有鑑於此,本發明之目的在於提出一種資料儲存裝置及其共享控制器中記憶體的方法。為達上述目的,本發明實施例提供一種資料儲存裝置,所述資料儲存裝置包括非揮發性記憶體,以及電性耦接於非揮發性記憶體的控制器。控制器包括存取介面(Access Interface)、容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)錯誤更正碼(Error Correcting Code, ECC)引擎以及中央處理器。存取介面耦接於主機(Host)與非揮發性記憶體,RAID ECC引擎主要用來進行錯誤更正程序,中央處理器則用來解讀由主機所下達的寫入/讀取命令,並且控制存取介面去對非揮發性記憶體作使用者資料的存取。中央處理器具有第一記憶體以用來儲存暫時資料,RAID ECC引擎具有第二記憶體,並當第二記憶體有未被完全使用到時,控制器是將第二記憶體的未使用的記憶體空間映射到第一記憶體下,以虛擬成為第一記憶體的一部份,使得中央處理器也就能夠利用第二記憶體的未使用的記憶體空間來儲存暫時資料。
此外,本發明實施例另提供一種共享控制器中記憶體的方法,所述方法適用於前述資料儲存裝置中,且其包括如下步驟。首先,由中央處理器發出至少一控制信號給RAID ECC引擎。接著,根據控制信號,RAID ECC引擎來把第二記憶體的未使用的記憶體空間映射到中央處理器的第一記憶體下,以虛擬成為第一記憶體的一部份,使得中央處理器也就能夠利用第二記憶體的未使用的記憶體空間來儲存暫時資料。
為使能更進一步瞭解本發明之特徵及技術內容,請參閱以下有關本發明之詳細說明與附圖,但是此等說明與所附圖式僅係用來說明本發明,而非對本發明的權利範圍作任何的限制。
在下文中,將藉由圖式說明本發明之各種實施例來詳細描述本發明。然而,本發明概念可能以許多不同形式來體現,且不應解釋為限於本文中所闡述之例示性實施例。此外,在圖式中相同參考數字可用以表示類似的元件。
首先,請參閱圖1,圖1是本發明實施例所提供的資料儲存裝置的功能方塊示意圖。資料儲存裝置1包括非揮發性記憶體110與控制器120。在本實施例中,非揮發性記憶體110包括多個區塊(未繪示),每一區塊又包含複數個頁面(Pages),且頁面即為編程(Program)的最小單元。也就是說,頁面為寫入或讀取資料時的最小單元,且一條字線(Word Line)可控制一個以上的頁面。另外,區塊為資料抹除的最小單元。因此,區塊依據其功能又可區分為閒置(Spare)區塊、主動(Active)區塊與資料區塊,其中閒置區塊為可被選取並寫入資料的區塊,主動區塊為已被選取並正在寫入資料的區塊,資料區塊則為完成資料寫入且不能再寫入資料的區塊。需說明的是,本發明並不限制區塊及頁面的具體實現方式,本技術領域中具有通常知識者應可依據實際需求或應用來進行相關設計。此外,在本實施例中,非揮發性記憶體110較佳是以快閃記憶體來實現,但本發明亦不以此為限制。
控制器120電性耦接於非揮發性記憶體110,並且用來控制非揮發性記憶體110內的資料存取。必須瞭解的是,資料儲存裝置1通常是會與主機2一起使用,並且根據主機2所下達的寫入/讀取命令,來將使用者資料寫入到非揮發性記憶體110中,或者從非揮發性記憶體110中讀取使用者資料。因此,在本實施例中,控制器120較佳相應為快閃記憶體控制器,且其主要包括中央處理器124、存取介面121以及RAID ECC引擎123。如同前面內容所述,中央處理器124較佳可具有自己的記憶體,例如CPU記憶體1241以用來儲存資料或程式,在本實施例中將CPU記憶體1241所儲存的資料或程式簡稱為暫時資料,而且為了方便以下說明,本實施例是將中央處理器124與CPU記憶體1241作分開繪製,但本技術領域中具有通常知識者應可理解的是,CPU記憶體1241則實際涵蓋在中央處理器124內。
存取介面121耦接於主機2與非揮發性記憶體110,中央處理器124則用來解讀由主機2所下達的寫入/讀取命令以產生操作命令,並且依據操作命令來控制存取介面121去對非揮發性記憶體110作使用者資料的存取。另外,在本實施例中,控制器120更可包括資料緩存器(Data Buffer)122,耦接於存取介面121、RAID ECC引擎123與非揮發性記憶體110,並且用來暫存自於主機2或非揮發性記憶體110的使用者資料。然而,除了使用者資料外,資料緩存器122較佳也可用來暫存中央處理器124運作所需的在系統編程(In-System Programming,ISP)或邏輯至物理位址(Logical-to-Physical Address)映射表等,但本發明皆不以此為限制。此外,在本實施例中,資料緩存器122即可例如為靜態隨機存取記憶體(Static Random Access Memory,SRAM)或可快速存取的RAM。
RAID ECC引擎123耦接於中央處理器124、資料緩存器122與非揮發性記憶體110,並且主要用來對使用者資料進行錯誤更正程序。在本實施例中,RAID ECC引擎123所進行的錯誤更正程序也就是指互斥或(Exclusive OR,XOR)邏輯運算,且其依據功能又可區分為作編碼或解碼運算。因此,在圖1中,不同的運算路徑(Path)將會用以不同鏈線作表示,並且應當理解的是,解碼運算也就是提供錯誤偵測與更正,或者資料回復(Recovery)等功能。另外,在本實施例中,資料儲存裝置1更可包括動態隨機存取記憶體(DRAM)130,被配置在控制器120外,並且同樣可用來讓中央處理器124作儲存暫時資料。然而,除了DRAM 130外,中央處理器124亦可透過主機記憶體緩存器(Host Memory Buffer,HMB)功能來利用主機2內的DRAM(未繪示),以儲存資料儲存裝置1運作所需的資料或程式。總而言之,由於中央處理器124所儲存暫時資料到外部DRAM的源由已如同前述內容所陳,故於此就不再多加贅述。
在本實施例中,RAID ECC引擎123較佳也具有自己的記憶體,例如隨機存取記憶體(RAM)1231,並且當主機2要寫使用者資料到非揮發性記憶體110時,控制器120同時也將該使用者資料送入RAID ECC引擎123中作編碼運算,直到一頁面群組(Page Group)的使用者資料,例如頁面0到頁面N-1的使用者資料完成送入後,RAID ECC引擎123就會產生與頁面0到頁面N-1的使用者資料相應的校驗碼(Parity Code),然後也將該校驗碼寫到非揮發性記憶體110中,亦即該校驗碼將可作為頁面N的資料,其中N為大於1的任意正整數。另外,如果使用者資料的管理單位為區段(Sector)而非頁面的話,例如一個頁面可包括多個區段,控制器120則將一區段群組的使用者資料,例如區段0到區段S-1的使用者資料,以及RAID ECC引擎123所產生與區段0到區段S-1的使用者資料相應的校驗碼,依序寫入到頁面0到頁面N的區段0到區段S中,其中S亦為大於1的任意正整數。然而,由於區段和頁面的資料管理方式類似,因此於下文內都將僅以頁面的例子作說明,但本發明並不以此為限制。
相對地,當控制器120要從非揮發性記憶體110中讀取使用者資料時,控制器120會根據預設的讀取參數來讀取頁面的使用者資料,並且利用其他錯誤更正碼,例如低密度奇偶校驗(Low Density Parity Check,LDPC)碼來對所讀取到的頁面的使用者資料進行更正錯誤操作。如果當控制器120讀取該頁面群組的某一頁面的使用者資料,例如頁面1的使用者資料,而發生LDPC碼無法更正錯誤時,控制器120就可將頁面群組中的頁面0、頁面2到頁面N-1的使用者資料以及頁面N的校驗碼從非揮發性記憶體110中讀出,再送入RAID ECC引擎123中作解碼運算,且解碼運算後所得到的資料便為已更正錯誤後的頁面1的使用者資料。然而,由於RAID ECC引擎123的運作原理將會在下文中經由各種實施例來作詳盡說明,因此有關上述細節於此就先不再多加贅述。
總而言之, RAID ECC引擎123要作編碼或解碼運算時,都會用到其內部RAM 1231來作運算值的暫存,且其內部RAM 1231的大小可例如為64KB,但是RAID ECC引擎123依據實際需求,例如頁面大小、校驗碼大小或使用的路徑數目等,來運作時所需的記憶體空間可能只要16KB或32KB,所以當RAM 1231的記憶體空間有未被完全使用到時,未使用(閒置)的記憶體空間就會形成系統資源的浪費。因此,如圖1的斜線框所示,本實施例將RAM 1231的未使用的記憶體空間映射到CPU記憶體1241下,也就是說將該未使用的記憶體空間作分享,並且將該未使用的記憶體空間位址映射到CPU記憶體1241的記憶體空間位址下,以虛擬成為CPU記憶體1241的一部份,即等同延伸(擴充)了CPU記憶體1241的記憶體空間。如此一來,中央處理器124也就能夠利用RAM 1231的未使用的記憶體空間來儲存暫時資料。換句話說,中央處理器124可利用的內部記憶體空間變大了,暫時資料除了可儲存在CPU記憶體1241外,也可儲存在RAID ECC引擎123的RAM 1231中,而不需儲存在控制器120外的DRAM 130中,這樣也就能夠減少中央處理器124所存取DRAM 130的頻率,並使整體系統效能提升。
接著,以下將再針對本實施例的RAID ECC引擎123的實現方式作進一步地介紹。請一併參閱圖2,圖2是圖1的資料儲存裝置中的RAID ECC引擎的功能方塊示意圖,其中圖2部分與圖1相同之元件以相同之圖號標示,故於此不再多加詳述其細節。在本實施例中,RAID ECC引擎123主要包括狀態機(State Machine)220、選擇器(Selector)230、控制暫存器(Control Register)240與M+1個運算電路210_0~210_M,其中M為大於1的任意正整數,且每一運算電路210_0~210_M包括一XOR邏輯運算單元、一頁面緩存器(Page Buffer)及一第一選擇器。例如,運算電路210_0包括XOR邏輯運算單元211_0、頁面緩存器212_0及第一選擇器213_0,以此類推,運算電路210_M包括XOR邏輯運算單元211_M、頁面緩存器212_ M及第一選擇器213_ M。可以理解的是,上述狀態機220、選擇器230、控制暫存器240、XOR邏輯運算單元211_0~211_M與第一選擇器213_0~213_M可以是通過純硬件電路來實現,或者是通過硬件電路搭配固件或軟件來實現,但本發明皆不以此為限制。
在本實施例中,控制暫存器240耦接於中央處理器124,並且用來接收自於中央處理器124的至少一控制信號及該暫時資料。另外,為了方便以下說明,本實施例將僅先以其中一個運算電路,例如運算電路210_0的例子來作介紹,但本技術領域中具有通常知識者應可瞭解到其他運算電路210_1~210_M的運作原理。如圖2所示,第一選擇器213_0具有兩輸入端0、1分別耦接於XOR邏輯運算單元211_0的輸出端與控制暫存器240,以及一輸出端耦接於頁面緩存器212_0。在本實施中,中央處理器124可藉由控制暫存器240控制(設定)第一選擇器213_0的選擇端(Sel)而選取輸入端0作為頁面緩存器212_0的輸入源以輸入資料,所以此時的輸入資料為XOR邏輯運算單元211_0的運算結果,且該運算結果可儲存至頁面緩存器212_0中。相對地,中央處理器124也可藉由控制暫存器240控制(設定)第一選擇器213_0的選擇端而選取輸入端1作為頁面緩存器212_0的輸入源以輸入資料,所以此時的輸入資料則改由控制暫存器240所提供自於中央處理器124的暫時資料,且該暫時資料同樣可儲存至頁面緩存器212_0中。也就是說,圖1中的RAM 1231即可例如是由圖2的這些頁面緩存器212_0~212_M所組成,並且當運算電路210_0不進行編碼或解碼運算時,亦即運算電路210_0的頁面緩存器212_0未被使用到,中央處理器124就可控制第一選擇器213_0以使得第一選擇器213_0的輸入端1作為頁面緩存器212_0的輸入源,如此一來,未被使用到的頁面緩存器212_0就可用來儲存自於中央處理器124的暫時資料,以藉此達到本發明的目的。
仔細地說,狀態機220耦接於控制暫存器240,並且用來控制RAID ECC引擎123是進行編碼或解碼運算,又或者是進入到閒置(Idle)或完成(Done)狀態。除此之外,狀態機220更可協助控制暫存器240控制(設定)第一選擇器213_0~213_M的選擇端以決定頁面緩存器212_0~212_M的輸入源,以及協助控制暫存器240控制選擇器230的選擇端以決定其輸出接口。在本實施例中,選擇器230則具有M+1個輸出端分別耦接於運算電路210_0~210_M的輸入端,以及一輸入端耦接於資料緩存器122或非揮發性記憶體110。因此,在本實施例中,中央處理器124也可藉由控制暫存器240控制(設定)選擇器230的選擇端,使得選擇器230的輸入端所接收到的使用者資料輸出至指定的運算電路210_0~210_M中,以執行後續的編碼或解碼運算。總而言之,控制暫存器240則不只用來控制(設定)第一選擇器213_0~213_M的選擇端外,也用來控制(設定)選擇器230的選擇端,並且更可用來控制狀態機220的運作。實作上,這些運算電路210_0~210_M的第一選擇器213_0~213_M即可分別較佳是以多工器(Multiplexer,MUX)來實現,且選擇器230則較佳是以解多工器(Demultiplexer,DeMUX)來實現,但本發明均不以此為限制。
接著,再請一併參閱圖3A至圖3C,圖3A至圖3C將用來詳盡解釋本實施例的RAID ECC引擎123的運作原理,其中圖3A與圖3B分別是圖2的RAID ECC引擎123所進行編碼及解碼運算時的示意圖,而圖3C是圖2的RAID ECC引擎123所進行共享記憶體時的示意圖。如圖3A所示,當主機2要寫使用者資料到非揮發性記憶體110時,中央處理器124會先將使用者資料暫存在資料緩存器122中,並將使用者資料輸出至RAID ECC引擎123。然後,中央處理器124藉由設定控制暫存器240以觸發狀態機220而指示RAID ECC引擎123來對使用者資料進行編碼運算。接著,控制暫存器240控制選擇器230,使得選擇器230的輸入端所接收到自於資料緩存器122的使用者資料,例如頁面0到頁面N-1的使用者資料,經由選擇器230的輸出端0而輸出至運算電路210_0。同時,控制暫存器240將運算電路210_0的第一選擇器213_0的選擇端設定為「0」,使得運算電路210_0的XOR邏輯運算單元211_0可對選擇器230所輸出的使用者資料與頁面緩存器212_0所暫存的編碼資料進行編碼運算(XOR邏輯運算),並且再將運算結果(新編碼資料)輸出至頁面緩存器212_0中以替代掉原本所暫存的編碼資料(舊編碼資料)。依照上述程序,運算電路210_0可依序收到由資料緩存器122所傳來的頁面0到頁面N-1的使用者資料,並且再由XOR邏輯運算單元211_0對頁面0到頁面N-1的使用者資料進行編碼運算,最後得到同為一個頁面大小的校驗碼,以完成整個編碼運算。最終,RAID ECC引擎123再將該校驗碼經由頁面緩存器212_0來寫到非揮發性記憶體110的頁面N中,或者是RAID ECC引擎123則輸出該校驗碼至資料緩存器122中,之後資料緩存器122再將頁面0到頁面N-1的使用者資料以及該校驗碼依序寫到非揮發性記憶體110的頁面0-N中。總而言之,本發明並不限制寫入使用者資料及該校驗碼到非揮發性記憶體110中的具體實現方式,而且上述所決定採用運算電路210_0來進行編碼運算也僅只是舉例,其並非用以限制本發明,中央處理器124應可依據實際需求或應用來決定是要由哪幾個運算電路來進行編碼運算。
相對地,如圖3B所示,假如當控制器120讀取頁面1的使用者資料而發生無法更正錯誤時,中央處理器124將會藉由設定控制暫存器240以觸發狀態機220而指示RAID ECC引擎123是進行解碼運算。然後,控制暫存器240控制選擇器230,使得選擇器230的輸入端所接收到自於非揮發性記憶體110的使用者資料,例如頁面0、頁面2到頁面N-1的使用者資料,以及頁面N的校驗碼,經由選擇器230的輸出端1而輸出至運算電路210_1。同時,控制暫存器240將運算電路210_1的第一選擇器213_1的選擇端設定為「0」,使得運算電路210_1的XOR邏輯運算單元211_1對選擇器230所輸出的資料與頁面緩存器212_1所暫存的解碼資料進行解碼運算(XOR邏輯運算),並且再將運算結果(新解碼資料)輸出至頁面緩存器212_1中以替代掉原本暫存的解碼資料(舊解碼資料)。依照上述程序,運算電路210_1可依序收到由非揮發性記憶體110所傳來的頁面0的使用者資料、頁面N的校驗碼,以及頁面2到頁面N-1的使用者資料,並且再由XOR邏輯運算單元211_0對上述資料進行解碼運算,最後得到同為一個頁面大小的解碼資料,而此解碼資料便為已更正錯誤後的頁面1的使用者資料,以完成整個解碼運算。最終,RAID ECC引擎123再將已更正錯誤後的頁面1的使用者資料輸出至資料緩存器122,並替代掉資料緩存器122所暫存的(錯誤的)頁面1的使用者資料。另外,在其它實施例中,頁面0、頁面2到頁面N-1的使用者資料以及頁面N的校驗碼亦可先傳送至資料緩存器122中,然後再由資料緩存器122送到RAID ECC引擎123作解碼運算,但本發明皆不以此為限制。總而言之,由於RAID ECC引擎123所進行編碼或解碼運算的運作原理已為本技術領域中具有通常知識者所習知,因此有關上述細節於此就不再多加贅述。當然,如果控制器120讀取頁面1的使用者資料而未發生無法更正錯誤的話,中央處理器124也就無需設定控制暫存器240,或是可設定控制暫存器240使得RAID ECC引擎123進入到省電模式。
再者,如圖3C所示,當運算電路210_2未被使用到時,中央處理器124則通過設定控制暫存器240以控制第一選擇器213_2,使得第一選擇器213_2的輸入端1作為頁面緩存器212_2的輸入源,亦即圖3C的第一選擇器213_2的選擇端設定為「1」,這樣中央處理器124所要儲存的暫時資料就可經由控制暫存器240而傳送到第一選擇器213_2的輸入端1,以寫入到頁面緩存器212_2中。類似地,中央處理器124也只需經由控制暫存器240就可讀到頁面緩存器212_2中的該暫時資料。也就是說,只要是本實施例所沒有使用到的頁面緩存器都可通過設定控制暫存器240來轉換成中央處理器124所能存取的路徑,亦即把那些沒有用到的頁面緩存器作分享並映射到中央處理器124的CPU記憶體1241下,以達到擴充CPU記憶體1241的效果,並進而提升整體系統效能。當然,如果這時RAID ECC引擎123不需進行編碼或解碼運算的話,本實施例也就不用控制(設定)選擇器230。另外,本實施例所有的路徑,即編碼運算的路徑、解碼運算的路徑,以及中央處理器124所能存取暫時資料的路徑都可通過控制暫存器240來作設定,因此,只要不是選擇到同一頁面緩存器的話,所有路徑就都可同時運行。
最後,為了更進一步說明關於資料儲存裝置1所共享RAID ECC引擎123中記憶體的運作流程,本發明進一步提供其方法的一種實施方式。因此,請一併參閱圖4,圖4是本發明實施例所提供共享控制器中記憶體的方法的流程示意圖。需說明的是,圖4的方法是可以適用於圖1的資料儲存裝置1中,但本發明亦不限制圖4的方法僅能夠適用於圖1的資料儲存裝置1中。如圖4所示,在步驟S410中,由中央處理器124發出至少一控制信號給RAID ECC引擎123。接著,在步驟S420中,根據控制信號,RAID ECC引擎123來把RAM 1231的未使用的記憶體空間映射到中央處理器124的CPU記憶體1241下,以虛擬成為CPU記憶體1241的一部份,使得中央處理器124也就能夠利用RAM 1231的未使用的記憶體空間來儲存暫時資料。由於詳盡細節亦如同前述內容所述,故於此就不再多加贅述。
綜上所述,本發明實施例所提供的資料儲存裝置及其共享控制器中記憶體的方法,可以是把RAID ECC引擎的記憶體作分享,並且映射到中央處理器的記憶體下,以達到擴充中央處理器的記憶體的效果,而且中央處理器所欲儲存的暫時資料就無需放在控制器外的DRAM中,這樣也就能夠減少中央處理器所存取外部DRAM的頻率,並進而提升整體系統效能。
以上所述僅為本發明之實施例,其並非用以侷限本發明之專利範圍。
1‧‧‧資料儲存裝置110‧‧‧非揮發性記憶體120‧‧‧控制器121‧‧‧存取介面122‧‧‧資料緩存器123‧‧‧RAID ECC引擎1231‧‧‧隨機存取記憶體124‧‧‧中央處理器1241‧‧‧CPU記憶體130‧‧‧動態隨機存取記憶體2‧‧‧主機210_0~210_M‧‧‧運算電路211_0~211_M‧‧‧XOR邏輯運算單元212_0~212_M‧‧‧頁面緩存器213_0~213_M‧‧‧第一選擇器220‧‧‧狀態機230‧‧‧選擇器240‧‧‧控制暫存器S410~S420‧‧‧流程步驟
圖1是本發明實施例所提供的資料儲存裝置的功能方塊示意圖; 圖2是圖1的資料儲存裝置中的RAID ECC引擎的功能方塊示意圖; 圖3A是圖2的RAID ECC引擎所進行編碼運算時的示意圖; 圖3B是圖2的RAID ECC引擎所進行解碼運算時的示意圖; 圖3C是圖2的RAID ECC引擎所進行共享記憶體時的示意圖; 圖4是本發明實施例所提供共享控制器中記憶體的方法的流程示意圖。
1‧‧‧資料儲存裝置
110‧‧‧非揮發性記憶體
120‧‧‧控制器
121‧‧‧存取介面
122‧‧‧資料緩存器
123‧‧‧RAID ECC引擎
1231‧‧‧隨機存取記憶體
124‧‧‧中央處理器
1241‧‧‧CPU記憶體
130‧‧‧動態隨機存取記憶體
2‧‧‧主機

Claims (8)

  1. 一種資料儲存裝置,包括: 一非揮發性記憶體;以及 一控制器,電性耦接於該非揮發性記憶體,並且包括: 一存取介面(Access Interface),耦接於一主機(Host)與該非揮發性記憶體; 一容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)錯誤更正碼(Error Correcting Code,ECC)引擎,主要用來進行一錯誤更正程序;以及 一中央處理器(Central Processing Unit,CPU),用來解讀由該主機所下達的寫入/讀取命令,並且控制該存取介面去對該非揮發性記憶體作使用者資料的存取,其中該中央處理器具有一第一記憶體以用來儲存暫時資料,該容錯式磁碟陣列錯誤更正碼引擎則具有一第二記憶體,並當該第二記憶體有未被完全使用到時,該控制器是將該第二記憶體的未使用的記憶體空間映射到該第一記憶體下,以虛擬成為該第一記憶體的一部份,使得該中央處理器也就能夠利用該第二記憶體的該未使用的記憶體空間來儲存該暫時資料。
  2. 如請求項第1項所述的資料儲存裝置,其中該控制器更包括: 一資料緩存器(Data Buffer),耦接於該存取介面、該容錯式磁碟陣列錯誤更正碼引擎與該非揮發性記憶體,用來暫存自於該主機或該非揮發性記憶體的該使用者資料。
  3. 如請求項第2項所述的資料儲存裝置,其中該容錯式磁碟陣列錯誤更正碼引擎包括: 一控制暫存器(Control Register),耦接於該中央處理器,並且用來接收自於該中央處理器的至少一控制信號及該暫時資料;以及 多個運算電路,且每一該些運算電路包括: 一互斥或(Exclusive OR,XOR)邏輯運算單元; 一頁面緩存器(Page Buffer);以及 一第一選擇器(Selector),具有兩輸入端分別耦接於該互斥或邏輯運算單元的輸出端與該控制暫存器,以及一輸出端耦接於該頁面緩存器,其中該中央處理器是藉由該控制暫存器控制該第一選擇器以決定該頁面緩存器的輸入源,使得該頁面緩存器用來儲存自於該互斥或邏輯運算單元的運算結果,或者用來儲存自於該中央處理器的該暫時資料。
  4. 如請求項第3項所述的資料儲存裝置,其中該錯誤更正程序區分為作一編碼(Encode)或一解碼(Decode)運算,且該容錯式磁碟陣列錯誤更正碼引擎更包括: 一狀態機(State Machine),耦接於該控制暫存器,並且用來控制該容錯式磁碟陣列錯誤更正碼引擎是進行該編碼或該解碼運算;以及 一第二選擇器,具有多個輸出端分別耦接於該些運算電路的輸入端,以及一輸入端耦接於該資料緩存器或該非揮發性記憶體,其中該中央處理器是藉由該控制暫存器控制該第二選擇器,使得該第二選擇器的該輸入端所接收到自於該資料緩存器或該非揮發性記憶體的該使用者資料,輸出至指定的該些運算電路的至少其中之一。
  5. 一種共享控制器中記憶體的方法,適用於一資料儲存裝置中,該資料儲存裝置包括一非揮發性記憶體,以及電性耦接於該非揮發性記憶體的該控制器,該控制器包括一存取介面、一容錯式磁碟陣列錯誤更正碼引擎以及一中央處理器,該存取介面耦接於一主機與該非揮發性記憶體,該容錯式磁碟陣列錯誤更正碼引擎主要用來進行一錯誤更正程序,該中央處理器則用來解讀由該主機所下達的寫入/讀取命令,並且控制該存取介面去對該非揮發性記憶體作使用者資料的存取,其中該中央處理器具有一第一記憶體以用來儲存暫時資料,該容錯式磁碟陣列錯誤更正碼引擎具有一第二記憶體,且該方法包括: 由該中央處理器發出至少一控制信號給該容錯式磁碟陣列錯誤更正碼引擎;以及 根據該控制信號,該容錯式磁碟陣列錯誤更正碼引擎來把該第二記憶體的的未使用的記憶體空間映射到該第一記憶體下,以虛擬成為該第一記憶體的一部份,使得該中央處理器也就能夠利用該第二記憶體的該未使用的記憶體空間來儲存該暫時資料。
  6. 如請求項第5項所述的方法,其中該控制器更包括: 一資料緩存器,耦接於該存取介面、該容錯式磁碟陣列錯誤更正碼引擎與該非揮發性記憶體,用來暫存自於該主機或該非揮發性記憶體的該使用者資料。
  7. 如請求項第6項所述的方法,其中該容錯式磁碟陣列錯誤更正碼引擎包括: 一控制暫存器,耦接於該中央處理器,並且用來接收自於該中央處理器的至少一控制信號及該暫時資料;以及 多個運算電路,且每一該些運算電路包括: 一互斥或邏輯運算單元; 一頁面緩存器;以及 一第一選擇器,具有兩輸入端分別耦接於該互斥或邏輯運算單元的輸出端與該控制暫存器,以及一輸出端耦接於該頁面緩存器,其中該中央處理器是藉由該控制暫存器控制該第一選擇器以決定該頁面緩存器的輸入源,使得該頁面緩存器用來儲存自於該互斥或邏輯運算單元的運算結果,或者用來儲存自於該中央處理器的該暫時資料。
  8. 如請求項第7項所述的方法,其中該錯誤更正程序區分為作一編碼或一解碼運算,且該容錯式磁碟陣列錯誤更正碼引擎更包括: 一狀態機,耦接於該控制暫存器,並且用來控制該容錯式磁碟陣列錯誤更正碼引擎是進行該編碼或該解碼運算;以及 一第二選擇器,具有多個輸出端分別耦接於該些運算電路的輸入端,以及一輸入端耦接於該資料緩存器或該非揮發性記憶體,其中該中央處理器是藉由該控制暫存器控制該第二選擇器,使得該第二選擇器的該輸入端所接收到自於該資料緩存器或該非揮發性記憶體的該使用者資料,輸出至指定的該些運算電路的至少其中之一。
TW108102013A 2018-08-23 2019-01-18 資料儲存裝置及其共享控制器中記憶體的方法 TWI703499B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862721767P 2018-08-23 2018-08-23
US62/721767 2018-08-23

Publications (2)

Publication Number Publication Date
TW202009695A true TW202009695A (zh) 2020-03-01
TWI703499B TWI703499B (zh) 2020-09-01

Family

ID=69582259

Family Applications (3)

Application Number Title Priority Date Filing Date
TW107139472A TWI680375B (zh) 2018-08-23 2018-11-07 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
TW107139473A TWI703501B (zh) 2018-08-23 2018-11-07 具有分散式信箱架構的多處理器系統及其溝通方法
TW108102013A TWI703499B (zh) 2018-08-23 2019-01-18 資料儲存裝置及其共享控制器中記憶體的方法

Family Applications Before (2)

Application Number Title Priority Date Filing Date
TW107139472A TWI680375B (zh) 2018-08-23 2018-11-07 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
TW107139473A TWI703501B (zh) 2018-08-23 2018-11-07 具有分散式信箱架構的多處理器系統及其溝通方法

Country Status (3)

Country Link
US (3) US11314571B2 (zh)
CN (3) CN110858188B (zh)
TW (3) TWI680375B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112965670A (zh) * 2021-04-22 2021-06-15 群联电子股份有限公司 主机存储器缓冲区管理方法、存储装置与控制电路单元
TWI787110B (zh) * 2021-09-29 2022-12-11 慧榮科技股份有限公司 寫入資料到閃存記憶體的方法及裝置
TWI798680B (zh) * 2021-04-14 2023-04-11 群聯電子股份有限公司 主機記憶體緩衝區管理方法、記憶體儲存裝置與記憶體控制電路單元
US11860775B2 (en) 2021-09-29 2024-01-02 Silicon Motion, Inc. Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware
US11972150B2 (en) 2021-09-29 2024-04-30 Silicon Motion, Inc. Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111191777B (zh) * 2019-12-27 2022-07-26 深圳云天励飞技术股份有限公司 一种神经网络处理器及其控制方法
CN112506847B (zh) * 2021-02-04 2021-04-30 上海励驰半导体有限公司 多处理器通信方法及系统

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4872106A (en) * 1983-04-06 1989-10-03 New Forney Corp. Industrial process control system with back-up data processors to take over from failed primary data processors
IT1184553B (it) * 1985-05-07 1987-10-28 Honeywell Inf Systems Architettura di sistema a piu' processori
US5142683A (en) * 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
CA2009780C (en) * 1989-05-17 1999-07-27 Ernest D. Baker Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems
US5423008A (en) * 1992-08-03 1995-06-06 Silicon Graphics, Inc. Apparatus and method for detecting the activities of a plurality of processors on a shared bus
JPH0778766B2 (ja) * 1992-09-25 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ランダム・アクセス可能かつ書換え可能メモリを用いる外部記憶装置におけるプログラム直接実行の制御方法および装置
EP0640929A3 (en) * 1993-08-30 1995-11-29 Advanced Micro Devices Inc Interprocessor communication via a post MEV.
US5737240A (en) * 1996-01-25 1998-04-07 International Business Machines Corporation Programmable hardware mailbox message technique and system
US5978953A (en) * 1996-12-19 1999-11-02 Compaq Computer Corporation error detection and correction
JP3230485B2 (ja) * 1998-04-09 2001-11-19 日本電気株式会社 1チップマイクロコンピュータ
US6070255A (en) * 1998-05-28 2000-05-30 International Business Machines Corporation Error protection power-on-self-test for memory cards having ECC on board
US7233977B2 (en) * 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6912716B1 (en) * 1999-11-05 2005-06-28 Agere Systems Inc. Maximized data space in shared memory between processors
US6735173B1 (en) * 2000-03-07 2004-05-11 Cisco Technology, Inc. Method and apparatus for accumulating and distributing data items within a packet switching system
US6938253B2 (en) * 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
US7415576B2 (en) * 2002-09-30 2008-08-19 Renesas Technology Corp. Data processor with block transfer control
TWI222597B (en) * 2003-03-14 2004-10-21 Mediatek Inc Method for accessing external memory of a microprocessor
CN1232918C (zh) * 2003-04-11 2005-12-21 大唐移动通信设备有限公司 一种基于共享存储器的多处理器间数据交互方法及装置
GB0308991D0 (en) * 2003-04-17 2003-05-28 Psion Digital Ltd A data access replication or communication system comprising a distributed software application
KR100506366B1 (ko) * 2003-11-20 2005-08-10 현대모비스 주식회사 복합마이컴형 제품 및 슬레이브 리셋 방법
US7203889B2 (en) * 2004-04-01 2007-04-10 Intel Corporation Error correction for memory
US7467247B2 (en) * 2005-10-31 2008-12-16 Hewlett-Packard Development Company, L.P. Timeouts on accessing a shared resource
TWI309773B (en) * 2006-03-14 2009-05-11 Fulhua Microelectronics Corp Memory accessing system and method
KR100822468B1 (ko) * 2006-09-11 2008-04-16 엠텍비젼 주식회사 공유 메모리를 구비한 장치 및 코드 데이터 전송 방법
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
KR100871700B1 (ko) * 2007-02-13 2008-12-08 삼성전자주식회사 불휘발성 메모리 장치에서 전하 손실에 기인한 오류 데이터정정 방법
US8055982B2 (en) * 2007-02-21 2011-11-08 Sigmatel, Inc. Error correction system and method
TWI346873B (en) * 2007-03-27 2011-08-11 Ind Tech Res Inst A direct memory access controller with dynamic data width adjustment, method thereof, and computer accessible storage media to store program thereof
US20090138673A1 (en) * 2007-11-28 2009-05-28 Apple Inc. Internal memory mapped external memory interface
US8230180B2 (en) * 2008-06-11 2012-07-24 Samsung Electronics Co., Ltd. Shared memory burst communications
KR20100041309A (ko) * 2008-10-14 2010-04-22 삼성전자주식회사 각 프로세서들의 어플리케이션 기능을 모두 활용 가능한 멀티 프로세서 시스템
KR20110013868A (ko) * 2009-08-04 2011-02-10 삼성전자주식회사 멀티 코멘드 셋 동작 및 우선처리 동작 기능을 갖는 멀티 프로세서 시스템
US8356130B2 (en) * 2009-08-14 2013-01-15 Advanced Micro Devices, Inc. Mechanism for recording undeliverable user-level interrupts
TW201111991A (en) * 2009-09-23 2011-04-01 Tatung Co Memory access system and method for virtualizing off-chip memory of a processor
JP2013522779A (ja) * 2010-03-22 2013-06-13 モサイド・テクノロジーズ・インコーポレーテッド 誤り訂正を有する複合半導体メモリデバイス
TWI465916B (zh) * 2010-09-01 2014-12-21 Tatung Co 異質雙核心之非對稱傳輸系統與方法
CN102654858B (zh) * 2011-03-04 2015-02-04 国基电子(上海)有限公司 双处理器系统及双处理器系统的通信方法
CN102137310A (zh) * 2011-03-15 2011-07-27 崔莉莉 分布式实时控制的楼宇对讲系统
US8621113B2 (en) * 2011-05-31 2013-12-31 Micron Technology, Inc. Apparatus including host bus adapter and serial attachment programming compliant device and related methods
CN102891762B (zh) * 2011-07-20 2016-05-04 赛恩倍吉科技顾问(深圳)有限公司 连续处理网络数据的系统及方法
TWI452471B (zh) * 2011-11-16 2014-09-11 Sk Hynix Inc 用於通用序列匯流排裝置的全雙工控制器與其方法
US9009566B2 (en) * 2012-09-12 2015-04-14 Macronix International Co., Ltd. Outputting information of ECC corrected bits
CN103324599A (zh) * 2013-06-04 2013-09-25 北京创毅讯联科技股份有限公司 处理器间通信方法与系统级芯片
US9329931B2 (en) * 2013-07-24 2016-05-03 Seagate Technology Llc Solid state drive emergency pre-boot application providing expanded data recovery function
US9720830B2 (en) * 2015-07-10 2017-08-01 Macom Connectivity Solutions, Llc Systems and methods facilitating reduced latency via stashing in system on chips
US9823968B1 (en) * 2015-08-21 2017-11-21 Datadirect Networks, Inc. Data storage system employing a variable redundancy distributed RAID controller with embedded RAID logic and method for data migration between high-performance computing architectures and data storage devices using the same
KR102407917B1 (ko) * 2015-11-12 2022-06-10 삼성전자주식회사 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법
CN105487989A (zh) * 2015-11-27 2016-04-13 杭州朔天科技有限公司 一种降低响应延时提高系统效率的中断控制器及控制方法
TWI585676B (zh) * 2016-03-18 2017-06-01 慧榮科技股份有限公司 資料儲存裝置、記憶體控制器及其操作方法
US10282251B2 (en) * 2016-09-07 2019-05-07 Sandisk Technologies Llc System and method for protecting firmware integrity in a multi-processor non-volatile memory system
US10127103B2 (en) * 2016-09-07 2018-11-13 Sandisk Technologies Llc System and method for detecting and correcting mapping table errors in a non-volatile memory system
TWI645295B (zh) * 2017-06-20 2018-12-21 慧榮科技股份有限公司 資料儲存裝置與資料儲存方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI798680B (zh) * 2021-04-14 2023-04-11 群聯電子股份有限公司 主機記憶體緩衝區管理方法、記憶體儲存裝置與記憶體控制電路單元
CN112965670A (zh) * 2021-04-22 2021-06-15 群联电子股份有限公司 主机存储器缓冲区管理方法、存储装置与控制电路单元
CN112965670B (zh) * 2021-04-22 2023-08-01 群联电子股份有限公司 主机存储器缓冲区管理方法、存储装置与控制电路单元
TWI787110B (zh) * 2021-09-29 2022-12-11 慧榮科技股份有限公司 寫入資料到閃存記憶體的方法及裝置
US11860775B2 (en) 2021-09-29 2024-01-02 Silicon Motion, Inc. Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware
US11966604B2 (en) 2021-09-29 2024-04-23 Silicon Motion, Inc. Method and apparatus for programming data arranged to undergo specific stages into flash memory based on virtual carriers
US11972150B2 (en) 2021-09-29 2024-04-30 Silicon Motion, Inc. Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware

Also Published As

Publication number Publication date
US11314571B2 (en) 2022-04-26
CN110858128B (zh) 2023-04-18
CN110858128A (zh) 2020-03-03
TW202009699A (zh) 2020-03-01
CN110858187B (zh) 2023-07-04
US20200065167A1 (en) 2020-02-27
TWI680375B (zh) 2019-12-21
CN110858188A (zh) 2020-03-03
US20200065190A1 (en) 2020-02-27
US20200065177A1 (en) 2020-02-27
CN110858188B (zh) 2023-08-01
TW202009731A (zh) 2020-03-01
CN110858187A (zh) 2020-03-03
TWI703499B (zh) 2020-09-01
TWI703501B (zh) 2020-09-01
US11334415B2 (en) 2022-05-17

Similar Documents

Publication Publication Date Title
TWI773890B (zh) 資料儲存裝置及其校驗碼處理方法
TWI703499B (zh) 資料儲存裝置及其共享控制器中記憶體的方法
US9128822B2 (en) On-chip bad block management for NAND flash memory
CN111081308A (zh) 用于混合非易失性存储系统的系统和方法
JP2017224379A (ja) 内部ecc処理を有するnand型フラッシュメモリおよびその動作方法
US11681472B2 (en) Unmap data pattern for coarse mapping memory sub-system
TWI656442B (zh) 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器
TW201913382A (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
CN109491828B (zh) 解码方法、存储器存储装置及存储器控制电路单元
TWI587302B (zh) 記憶體編程方法以及記憶體裝置
JP2017504920A (ja) 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
TW201926043A (zh) 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器
US20130067141A1 (en) Data writing method, and memory controller and memory storage apparatus using the same
CN108664350B (zh) 数据保护方法、存储器存储装置及存储器控制电路单元
TWI634561B (zh) 資料保護方法、記憶體儲存裝置及記憶體控制電路單元
TW201939261A (zh) 基於主機系統之工作負載識別用於儲存裝置之讀取操作
US11609855B2 (en) Bit masking valid sectors for write-back coalescing
JP2010026584A (ja) メモリコントローラおよび不揮発性記憶装置
JP4582078B2 (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20210124503A1 (en) Storage node of distributed storage system and method of operating the same
TWI837829B (zh) 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置
US11429485B1 (en) Memories with end-to-end data protection using physical location check
CN112799973B (zh) 编码控制方法、存储器存储装置及存储器控制电路单元
TWI807919B (zh) 資料重讀方法、記憶體儲存裝置及記憶體控制電路單元
US11996860B2 (en) Scaled bit flip thresholds across columns for irregular low density parity check decoding