JP2020154503A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2020154503A
JP2020154503A JP2019050808A JP2019050808A JP2020154503A JP 2020154503 A JP2020154503 A JP 2020154503A JP 2019050808 A JP2019050808 A JP 2019050808A JP 2019050808 A JP2019050808 A JP 2019050808A JP 2020154503 A JP2020154503 A JP 2020154503A
Authority
JP
Japan
Prior art keywords
volatile
memory
processing
chip
memory chip
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2019050808A
Other languages
English (en)
Inventor
哲彦 東
Tetsuhiko Azuma
哲彦 東
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019050808A priority Critical patent/JP2020154503A/ja
Priority to US16/556,020 priority patent/US11354063B2/en
Publication of JP2020154503A publication Critical patent/JP2020154503A/ja
Pending legal-status Critical Current

Links

Images

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/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

【課題】メモリチップに品質の差がある場合においても、性能を低減することなく不揮発化処理を実行する。【解決手段】メモリシステム100は、不揮発性の複数のメモリチップ208と各メモリチップの動作を制御するメモリコントローラ200とを備える。メモリコントローラは、ホスト10と接続され、不揮発化データ発行部201とNANDコントローラ207とを備える。不揮発化データ発行部は、前記メモリチップの所定の単位における各不揮発化処理の調停期間がメモリチップ毎に設定された調停期間設定パラメータセットを保持し、複数のメモリチップに対する不揮発化処理を指示する際に調停期間設定パラメータセットを発行する。NANDコントローラは、ホストから転送される書き込み用データを複数のメモリチップに対して不揮発化する不揮発化処理を実行する際に、発行された調停期間設定パラメータセットに設定されている所定の単位毎の調停期間に従って、所定の単位毎に不揮発化処理を調停する。【選択図】図1

Description

本発明の実施形態は、メモリシステムに関する。
NAND型フラッシュメモリのような不揮発性半導体メモリにおいて、複数のメモリチップに品質の差があると、不揮発化処理に要する時間にも差が生じる場合がある。
特開2011−191867号公報
本発明の実施形態は、複数のメモリチップを搭載したメモリシステムにおいて、個々のメモリチップに品質の差がある場合においても、性能を低減することなく不揮発化処理を実行可能なメモリシステムを提供する。
本発明の実施形態によれば、メモリシステムは、ホストと接続可能なメモリコントローラと、不揮発性の複数のメモリチップとを備える。メモリコントローラは、不揮発化データ発行部とコントローラとを備え、複数のメモリチップと接続されて各メモリチップの動作を制御する。不揮発化データ発行部は、メモリチップの所定の単位における各不揮発化処理の調停期間がメモリチップ毎に設定された調停期間設定パラメータセットを保持し、複数のメモリチップに対する不揮発化処理を指示する際に調停期間設定パラメータセットをコントローラに発行する。コントローラは、ホストから転送される書き込み用データを複数のメモリチップに対して不揮発化する不揮発化処理を実行する際に、不揮発化データ発行部から発行された調停期間設定パラメータセットに設定されている所定の単位毎の調停期間に従って、所定の単位毎に不揮発化処理を調停する。
実施の形態に係るメモリシステム及びメモリコントローラの模式的ブロック構成図。 実施の形態に係るメモリコントローラにおける調停期間設定パラメータセットの転送方式と情報選択の一例を示す説明図。 複数セットの調停期間設定パラメータセットを用いた場合の処理手順例を示す説明図。 実施の形態に係るメモリコントローラによる不揮発化制御処理例を示すフローチャート。 実施の形態に係るメモリコントローラによる不揮発化制御処理例を示すフローチャート。 比較例における不揮発化制御処理(不揮発化処理が完了したケース)の一例を示すタイミングチャート。 比較例における不揮発化制御処理(周回遅れが発生したケース)の一例を示すタイミングチャート。 実施の形態における不揮発化制御処理の一例を示すタイミングチャート。 実施の形態における不揮発化制御処理の別の一例を示すタイミングチャート。 実施の形態における不揮発化制御処理の一例を示すタイミングチャート。 実施の形態における調停期間設定パラメータセットの設定例を示す説明図。 実施の形態における調停期間設定パラメータセットの設定処理例を示すフローチャート。 実施の形態に係るメモリコントローラにおいて用いられる論物チップ番号変換テーブルの一例を示す説明図。 実施の形態に係るメモリコントローラにおいて用いられる論物アドレス変換テーブルの一例を示す説明図。 実施の形態に係るメモリコントローラによる不揮発化制御処理の後処理の一例を示すフローチャート。
次に、図面を参照して、本実施の形態について説明する。以下に説明する図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。但し、図面は模式的なものであり、各構成部品の厚みと平面寸法との関係等は現実のものとは異なることに留意すべきである。従って、具体的な厚みや寸法は以下の説明を参酌して判断すべきものである。また、図面の相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
また、以下に示す実施の形態は、技術的思想を具体化するための装置や方法を例示するものであって、各構成部品の材質、形状、構造、配置等を特定するものではない。この実施の形態は、特許請求の範囲において、種々の変更を加えることができる。
[実施の形態]
ソリッドステートドライブ(SSD:Solid State Drive)などの不揮発性のストレージデバイス(メモリシステムとも呼ばれる)を構成する場合、複数の不揮発性メモリチップが使用されることがある。不揮発性メモリとしては、例えば、NAND型フラッシュメモリ、抵抗変化型メモリ(ReRAM(Resistive Random Access Memory))、強誘電体メモリ(FeRAM(Ferroelectric Random Access Memory))、磁気抵抗メモリ(MRAM(Magnetoresistive Random Access Memory))などが挙げられる。
例えば、新製品のNAND型フラッシュメモリチップを使用する場合、製品の品質ばらつきが存在する。DRAM(Dynamic Random Access Memory)などを用いた大容量バッファを搭載した場合、品質のばらつきをバッファ容量の大きさで隠蔽可能である。例えば、ホストから常時最高速度で不揮発化データを転送する場合、NAND型フラッシュメモリ側で不揮発化処理の性能が不足していたとしても、大容量バッファを有していれば、DRAMの転送性能がNAND型フラッシュメモリの転送性能より高いため、大容量バッファ分のサイズまではホストからのデータを高速に受信可能である。従って、見かけ上NAND型フラッシュメモリの品質ばらつきを隠蔽することができる。
一方、大容量バッファを搭載しない場合には、メモリコントローラに内蔵される限られたメモリを使用しつつ、いかに滞りなく不揮発化処理を実行していくかがストレージデバイスの性能を左右する。
例えば、ストレージデバイスのコントローラには、NAND型フラッシュメモリの不揮発化処理に対応するために、チップ単位の不揮発化処理を円滑に実行するための調停(アービトレーション)機能がある。
通常、チップ単位に順番に(例えば、チップ番号の昇順に)不揮発化処理を行うメモリチップを切り替えていくが、本来の順番によれば不揮発化処理の対象となるメモリチップにおける以前の不揮発化処理が完了していなければ、そのメモリチップは、所定の調停期間経過後に不揮発化処理の対象から外され、不揮発化処理が後回し(例えば周回遅れ)になってしまうことがある。
組み合されるメモリチップの品質が均一な状態であれば、各メモリチップに同一に設定された調停期間が用いられても、このような周回遅れのメモリチップが出現しないように、不揮発化処理をスケジューリングすることができる。しかしながら、メモリチップ毎の品質が揃っていなければ、各メモリチップに同一に設定された調停期間が用いられると、周回遅れのメモリチップが出現し、結果として、ストレージデバイス全体の性能が低下する。
そこで、本実施の形態では、NAND型フラッシュメモリのメモリチップ毎の不揮発化処理に要する時間(不揮発化実行時間)のばらつきに注目し、不揮発化実行時間が比較的長く掛かるメモリチップが、不揮発化実行時間が比較的短い、すなわち品質の良い他のメモリチップの性能を犠牲にすることがないように、所定の単位(例えばメモリチップ単位)に不揮発化調停期間を設定できるように構成する。これにより、不揮発化調停期間に間に合わないような事象を発生しにくくし、ストレージデバイスの性能を維持するようにする。
不揮発化調停期間は、調停期間とも称される。不揮発化調停期間は、不揮発化猶予期間若しくは猶予期間、又は、不揮発化待機期間若しくは待機期間と称しても良い。
(メモリシステム及びメモリコントローラ)
実施の形態に係るメモリシステム100及びメモリコントローラ200の模式的ブロック構成は、図1に示すように表される。
実施の形態に係るメモリシステム100は、図1に示すように、メモリコントローラ200と、複数のメモリチップ208とを備える。メモリシステム100は、より詳細には、ソリッドステートドライブ(SSD)などのストレージデバイスを構成し、ホスト10と接続可能である。メモリコントローラ200は、複数のメモリチップ208と接続されて各メモリチップ208の動作を制御する。複数のメモリチップ208は、不揮発性半導体メモリ210を構成するメモリチップ群である。以下では、メモリチップ208をNAND型フラッシュメモリチップと呼び、不揮発性半導体メモリ210をNAND型フラッシュメモリ210と呼ぶ。
実施の形態に係るメモリコントローラ200は、図1に示すように、ホスト10と接続可能であり、複数のメモリチップ(NAND型フラッシュメモリチップ)208と接続されて各メモリチップ208の動作を制御する。
ホスト10としては、例えば、サーバー、ノートPC、デスクトップPC、タブレットPC、携帯電話、スキャナ、プリンタ、カメラ、ホームシアタ、ゲーム機器、セットトップボックス、ナビゲーションシステム、電子楽器など、幅広い電子機器等が対象となる。
実施の形態に係るメモリコントローラ200は、図1に示すように、不揮発化データ発行部201と、ダイレクトメモリアクセス(DMA:Direct Memory Access)コントローラ202と、制御部(CPU)203と、内部メモリ205と、データバッファ206と、NANDコントローラ207と、ホストインタフェース(I/F)部209と、誤り訂正符号(ECC:Error Correction Code)部218と、メモリコントローラ200内の各部、すなわち不揮発化データ発行部201、DMAコントローラ202、制御部203、内部メモリ205、データバッファ206、NANDコントローラ207、ホストI/F部209、誤り訂正符号部218を相互に繋ぐ内部バスマトリックス204とを備える。メモリコントローラ200の各機能は、例えば、SoC(System-on-a-Chip)として、専用のハードウェアで実現してもよく、CPU203がファームウェアを実行することにより実現してもよい。
ホストI/F部209は、外部のホスト10との接続を行うインターフェース部である。ホストI/F部209は、例えば、SATA(Serial AT Attachment)、SAS(Serial Attached SCSI)、PCIe(PCI Express)、NVMe(NVM Express)などに準拠する。DMAコントローラ202は、データ転送を実施するコントローラである。CPU203は、メモリコントローラ200の各部の制御・動作設定を行う制御処理ユニットである。内部バスマトリックス204は、メモリコントローラ200の内部の各機能ブロック間を接続するバス信号線である。内部メモリ205は、例えばSRAM(Static Random Access Memory)であり、例えばCPU203用の作業のメモリである。内部メモリ205には、図13及び14を参照して後述する論物チップ変換テーブル251及び論物アドレス変換テーブル252が格納される。データバッファ206は、例えばDRAM(Dynamic Random Access Memory)であり、ホスト10から転送されたメモリチップ208への書き込み用データを一時的に格納しておくためのメモリである。データバッファ206は、メモリコントローラ200の外部に設けられても良い。誤り訂正符号部218は、メモリチップ208から読み出したデータの誤り訂正処理を行う処理ブロックである。誤り訂正処理に用いられる誤り訂正符号としては、例えば、リード・ソロモン(RS(Reed-Solomon))符号、BCH(Bose-Chaudhuri-Hocquenghem)符号、低密度パリティ検査(LDPC(Low-Density Parity-Check))符号などが挙げられる。
不揮発化データ発行部201は、不揮発化処理に必要なデータがデータバッファ206にバッファリングされた場合に、NANDコントローラ207に対して、不揮発化アドレス情報や、書き込み時に必要なその他属性情報を生成して、不揮発化指示を送信する機能を備える。不揮発化データ発行部201は、シーケンサ211と、パラメータテーブル212と、パラメータ転送部213と、プログラムジェネレータ214とを備える。
パラメータ転送部213は、所定の単位毎にNANDコントローラ207が参照する設定値(不揮発化調停期間)を選び出す際に用いられるインデックス(Index)値を、不揮発化処理の開始前に予めNANDコントローラ207に送信する。ここで、メモリチップ208の「所定の単位」とは、メモリチップ208の単位或いは各々のメモリチップ208内の複数の物理領域のうちの1つの物理領域単位で定義される。また、不揮発化処理の「シーケンス」とは、所定の単位毎に順番に(例えば、チップ番号の昇順に)実行される一連の不揮発化処理である。
不揮発化データ発行部201は、ホスト10から転送されてデータバッファ206に格納されている書き込み用データや、図13及び14を参照して後述する、更新されて内部メモリ205に格納されている論物チップ変換テーブル251、論物アドレス変換テーブル252を、不揮発化対象データとして、NANDコントローラ207に送信する。不揮発化データ発行部201は、不揮発化処理のシーケンスにおける所定の単位の不揮発化処理で用いられる調停期間が設定された調停期間設定パラメータセットをパラメータテーブル212に保持する。
図2に示すように、パラメータテーブル212内に保持される調停期間設定パラメータセットには、所定の単位毎に、どの調停期間番号(Arbitration_Period No.)の調停期間を使用するのかを示すインデックス(Index)値が含まれる。インデックス値は、0〜n(nは1以上の整数)の値をとり得る。調停期間設定パラメータセットは、不揮発化調停期間の番号に対応するインデックス値を1セットにまとめた構成を有する。「1セット」とは、一例として、NAND型フラッシュメモリ210が8つのメモリチップ208で構成されている場合、チップ0〜チップ7にそれぞれ対応して設定されている不揮発化調停期間の番号に対応するインデックス値(Index0〜Index7)を、1回分の不揮発化処理のシーケンス用にまとめたものである。
不揮発化データ発行部201は、複数のメモリチップ208の不揮発化処理を指示する際に、プログラムジェネレータ214を用いて、パラメータ転送部213を介して、パラメータテーブル212内のインデックス値をNANDコントローラ207に送信する。
NANDコントローラ207は、不揮発化データ発行部201により指示された複数のメモリチップ208に対する不揮発化処理を実行する際に、不揮発化データ発行部201から送信されたインデックス値に対応する調停期間番号が示す調停期間に従って、所定の単位毎に不揮発化処理を調停する。
すなわち、不揮発化データ発行部201は、所定の単位毎に順番に実行される一連の不揮発化処理毎に設定が可能である調停期間設定をNANDコントローラ207に供給する。これにより、メモリチップ208毎に品質のばらつきがある場合においても、周回遅れのメモリチップ208が出現しないように不揮発化処理を調停することができる。そのため、メモリチップ208毎の品質の差による影響を最小化することができ、ストレージデバイスの性能を低減することなく不揮発化処理を実行することができる。
ここで、NANDコントローラ207は、不揮発化処理の対象となるメモリチップ208の調停期間内に、不揮発化処理に用いるデータが揃い且つ不揮発化処理の対象となるメモリチップ208の直前の周回の不揮発化処理が完了していれば、当該メモリチップ208に関する不揮発化処理を続行する。
一方で、NANDコントローラ207は、不揮発化処理の対象となるメモリチップ208の調停期間内に、不揮発化処理に用いるデータが揃わないか、不揮発化処理の対象となるメモリチップ208の直前の周回の不揮発化処理が完了していない場合に、当該メモリチップ208に関する不揮発化処理をスキップする。
また、NANDコントローラ207は、不揮発化データ発行部201から送信されてきたインデックス値270と、不揮発化対象のチップ番号を格納する不揮発化対象チップ番号表272と、インデックス値と調停期間番号とを対応付けて保持するレジスタ271と、不揮発化対象チップ番号表272のチップ番号に対応して選択されたインデックス値270を参照して、レジスタ271内に保持されている調停期間番号を所定の単位毎に選択するセレクタ273と、調停期間設定部275と、を備える。
NANDコントローラ207は、メモリチップ208に対して、データ不揮発化処理及びその調停などの制御を行う機能ブロックである。NANDコントローラ207は、不揮発化調停期間のインデックス値270をメモリチップ208のチップ番号単位で選択して、レジスタ271内のインデックス値に対応付ける。レジスタ271とセレクタ273は、インデックス値270を所定の単位毎に切り替えるために用いられる。NANDコントローラ207は、所定の単位毎に例えば、不揮発化対象チップ番号表272のチップ番号とレジスタ271内のインデックス値とに対応してセレクタ273によって選択された調停期間番号を調停期間設定部275に渡す。調停期間設定部275は、所定の単位毎の調停期間番号に従って、所定の単位毎にメモリチップ208の不揮発化処理を調停する。
図2において、パラメータテーブル212内に保持される調停期間設定パラメータセットの値は、メモリチップ208毎のIDX(インデックス値)を示す。例えば、図2のパラメータテーブル212内に保持される調停期間設定パラメータセットの値(「0」「0」「1」「2」「0」「1」「2」「0」)は、左から、チップ(0)用のインデックス値(IDX0=0)、チップ(1)用のインデックス値(IDX1=0)、チップ(2)用のインデックス値(IDX2=1)、チップ(3)用のインデックス値(IDX3=2)、…、チップ(7)用のインデックス値(IDX7=0)に対応している。NANDコントローラ207は、例えば不揮発化対象のメモリチップ208がチップ(2)であれば、インデックス値270の中から不揮発化対象チップ番号表272の上から3番目のチップ番号「2」に対応するインデックス値である「1」を選択し、レジスタ271内のインデックス値=1に対応する調停期間番号(Arbitration_Period No.1)に設定された調停期間の値をセレクタ273によって選択し、調停期間設定部275に渡す。
尚、インデックス値の並びは、メモリチップ208の番号順(図2の例では昇順)に限らず、任意の順番にすることができる。
尚、不揮発化データ発行部201のパラメータテーブル212内に保持されてNANDコントローラ207に送信される調停期間設定パラメータセットは、1セットのみに限定されるわけではない。例えば、同一のチップ内でも、メモリアドレス(記憶領域)が変わると特性も変わる可能性もあるため、メモリチップ208の複数の物理領域単位にそれぞれ対応して複数の調停期間設定パラメータセットを用意することもできる。
複数セットの調停期間設定パラメータセットを用いた場合の処理手順例は、図3に示すように表される。図3に示す例は、各メモリチップ(0〜7)について、n+1周分(nは2以上の整数)の不揮発化処理を実行するための調停期間設定パラメータセット(0〜n)の一例を示す。以降、n+1周目の調停期間設定パラメータセットを示す番号(n)を、パラメータセット番号(PARAM_SET_NUM)と称する。本実施の形態では、設定可能な周回数は特に限定されない。実際に、メモリコントローラ200のファームウェア等が周回数を設定する場合には、ファームウェアに過度な負荷をかけないようにある程度余裕を持たせた周回数分のパラメータセットを設定しても良い。
図3に示すように、調停期間設定パラメータセット(0)は、1周目の不揮発化処理に用いられ、調停期間設定パラメータセット(1)は、2周目の不揮発化処理に用いられ、調停期間設定パラメータセット(2)は、3周目の不揮発化処理に用いられ、調停期間設定パラメータセット(n)は、n+1周目の不揮発化処理に用いられるようにしても良い。
(不揮発化制御処理:不揮発化データ発行部)
実施の形態に係るメモリコントローラ200の不揮発化データ発行部201による不揮発化制御処理例のフローチャートは、図4に示すように表される。
(a)まず、ステップS100において、動作が開始されると、不揮発化データ発行部201は、予めパラメータテーブル212内に調停期間設定パラメータセットを設定する。
(b)次に、ステップS101において、不揮発化データ発行部201は、転送指示とともに、パラメータテーブル212内のインデックス値を含む調停期間パラメータセットを、NANDコントローラ207に転送する。
(c)次に、ステップS102において、不揮発化処理の開始指示、例えば、ホスト10からの不揮発化コマンドの受領待ちの状態に移行する。
(d)次に、ステップS103において、ホスト10からホストI/F部209を介して不揮発化処理の開始コマンドを受けると(すなわちステップS103の判定の結果YESの場合)、ステップS104に移行し、CPU203は、NANDコントローラ207に対して、不揮発化対象データを転送し始める。より具体的には、CPU203から不揮発化処理の開始指示を受けた不揮発化データ発行部201は、DMAコントローラ202を使用してNANDコントローラ207に対して不揮発化対象データを転送するようにしても良い。
それに呼応して、NANDコントローラ207は、以下の図5に例示するような不揮発化制御処理を実行する。
(不揮発化制御処理:NANDコントローラ)
実施の形態に係るメモリコントローラ200のNANDコントローラ207による不揮発化制御処理例を示すフローチャートは、図5に示すように表される。
(A)まず、1周目の処理開始時は、NANDコントローラ207は、不揮発化データ発行部201から予め転送されていたパラメータセット番号が0であり(ステップS200)且つ不揮発化チップ番号が0である(ステップS201)調停期間設定パラメータセットから処理を開始する。
(B)次に、ステップS202において、NANDコントローラ207は、チップ番号が0であるメモリチップに対応する不揮発化対象のデータを待つ状態に移行する。
(C)次に、ステップS203において、不揮発化対象データが到着すると(すなわちステップS202の判定の結果YESの場合)、NANDコントローラ207は、対応するメモリチップ208に対して、不揮発化処理の調停の判断を行う。ここでいう「調停の判断」とは、対応するメモリチップ208に対する不揮発化処理が可能であるか否かの判断である。その際に使用する調停期間は、前述のように、調停期間設定パラメータセットのインデックス値と不揮発化対象チップ番号表272とから決まる「調停期間番号(Arbitration_Period No.)」に応じて設定される期間である。より具体的には、パラメータセット番号(PARAM_SET_NUM)(ステップS200)で示されるパラメータセットのうち不揮発化対象チップ番号(NAND_CHIP_NUM)(ステップS201)で示されるインデックス値を用いて調停期間番号が選択される。そして、その調停期間番号で示される調停期間値を選択して、調停の判断を行う。
(D)次に、ステップS204及びS205において、1周目の不揮発化処理の場合には、不揮発化データが到着すると、該当のメモリチップ208に対する不揮発化処理が可能であるので、つまり、最初の周回では不揮発化処理の完了待ちの状態になっていることはないので、ステップS207に進んで、NANDコントローラ207は、直ちに不揮発化処理を実行する。すなわち、1周目の不揮発化処理に関しては、その前には不揮発化処理が行われていないので、NANDチップ自体の不揮発化実行時間の影響はない。そのため、不揮発化データが到着していれば直ちに不揮発化を実行することができる。
(E)次に、ステップS205において、不揮発化データが到着していない場合、ステップS206に進み、NANDコントローラ207は、不揮発化データの到着を所定の時間待機した後、ステップS203に戻って、調停期間が過ぎるまでリトライする。
(F)次に、該当のメモリチップ208に対する1周目の不揮発化処理が終わると、ステップS208に進み、NANDコントローラ207は、不揮発化対象チップ番号に1を加算して(すなわち、次のメモリチップ208を新たな対象として)、ステップS203〜ステップS207の処理を行う。これを、メモリチップ208の構成数の分繰り返す(ステップS209)。
(G)次に、2周目以降に関しては、その前の不揮発化処理が完了していない場合には、不揮発化データが到着していたとしても、メモリチップ208自体の不揮発化実行時間の影響を受ける可能性がある。
(H)ステップS204の判定処理において、調停期間を過ぎるまでは(すなわちステップS204の判定の結果NOの場合)、NANDコントローラ207は、該当のメモリチップ208に対して不揮発化処理が可能かどうかを判断し(ステップS205)、不揮発化可能な条件が揃わなければ(すなわちステップS205の判定の結果NOの場合)、調停期間が過ぎるまで、不揮発化条件を満たすか否かを判定し続ける(ステップS205)。不揮発化処理の実行が可能になれば(すなわちステップS205の判定の結果YESの場合)、NANDコントローラ207は、直ちに不揮発化を実行する(ステップS207)。
(I)ステップS204の判定処理において、調停期間を過ぎてしまった場合(すなわちステップS204の判定の結果YESの場合)には、そのメモリチップ208については、ステップS205〜ステップS207の処理をスキップして(すなわち、該当メモリチップ208は周回遅れとなる)、ステップS208に進み、NANDコントローラ207は、次のメモリチップ208への不揮発化処理に移行する。周回遅れとなったメモリチップ208については、次の周回時に不揮発化処理をリトライすることになる。
(J)ステップS209において、不揮発化対象チップ番号(すなわち、不揮発化処理済みのチップ数)が、搭載されているメモリチップ208数を超えると(すなわちステップS209の判定の結果YESの場合)、ステップS210において、NANDコントローラ207は、使用する調停期間設定パラメータセットを指定するパラメータセット番号(PARAM_SET_NUM)に1を加算して、次のパラメータセットを選択する。
(K)次に、ステップS211において、パラメータセット番号(PARAM_SET_NUM)が、設定可能なパラメータセット数を超えていなければ(すなわちステップS211の判定の結果NOの場合)、ステップS201に戻り、NANDコントローラ207は、次のパラメータセットを用いて不揮発化処理を行う。
(L)ステップS211において、パラメータセット番号(PARAM_SET_NUM)が、設定可能なパラメータセット数を超えていれば(すなわちステップS211の判定の結果YESの場合)、ステップS200に戻って、NANDコントローラ207は、パラメータセット番号(PARAM_SET_NUM)を「0」(初期値)に戻す(すなわち1周目の処理に戻る)。
(比較例による不揮発化制御処理の例)
比較例における不揮発化制御処理(不揮発化処理が完了したケース)のタイミングチャートは、図6に示すように表され、比較例における不揮発化制御処理(周回遅れが発生したケース)のタイミングチャートは、図7に示すように表される。
図中、「ISSUE」は、不揮発化対象のデータをデータバッファ206に格納し、さらにNANDコントローラ207転送している期間を示している。また、図中、「PROG」は、該当のメモリチップ208に対して不揮発化処理を実行している期間(PROG_PERIOD)を示している。
比較例では、図6及び図7に示すように、どのメモリチップに対しても同一の調停期間が設定されている。n+1周目の不揮発化データの転送は、n+1周目の調停期間内に完了していなければならない。あるメモリチップ208に対するn+1周目の不揮発化データの転送が完了すると、直ちに次のメモリチップ208のn+1周目の不揮発化データの転送が開始される。
周回遅れの問題が起きないケースでは、図6に示すように、対象のメモリチップ208がn+1周目の不揮発化対象として選択されたときに、当該メモリチップ208のn周目の不揮発化処理が完了しており、且つn+1周目の不揮発化対象のデータが、対応するNANDコントローラ207に転送可能な状態である。例えば、チップ0では、n+1周目の「ISSUE」期間の開始(時刻t8)の前に、n周目の「PROG」処理が完了しており、チップ1では、n+1周目の「ISSUE」期間の開始(時刻t9)の前に、n周目の「PROG」処理が完了しており、以降同様に、チップ7では、n+1周目の「ISSUE」期間の開始(時刻t15)の前に、n周目の「PROG」処理が完了している。この場合には、不揮発化処理の対象チップを昇順に切り替えながら、滞りなく不揮発化を実施していくことができる。
周回遅れの問題が起きるケースでは、図7に示すように、対象のメモリチップ208がn+1周目の不揮発化対象として選択されたときに、当該メモリチップ208のn周目不揮発化処理が完了していない。例えば、図7に示すように、チップ0のn+1周目の調停期間の終了時刻(時刻t9)になってもチップ0のn周目の「PROG」処理が完了していないため、結果として、チップ0のn+1周目の不揮発化処理はスキップされることになる(すなわち、周回遅れとなる)。
複数のチップによりRAIDを構成する場合、あるチップに対するエラー訂正用のパリティ情報を生成するためには、例えば、ある周回におけるすべての不揮発化対象データについて不揮発化処理が完了している必要がある。周回毎にパリティ情報の生成を行う場合、例えば、チップ2の2周目で周回遅れを起こして、不揮発化処理が完了していない不揮発化対象データが残っている時点では、2周目の不揮発化処理の対象データを用いたエラー訂正用のパリティ情報も生成できなくなる。2周目のエラー訂正用のパリティ情報を生成できない状態では、3周目以降の不揮発化対象データについての不揮発化処理はできなくなる。なぜなら、2周目のエラー訂正用のパリティ情報を生成するためには、2周目の不揮発化対象データをデータバッファ206に残しておく必要があるため、結果的にデータバッファ206のメモリが不足し、3周目以降の不揮発化処理を行うのが困難になるからである。
比較例においては、調停期間の長さは各チップで同一であるため、チップ0の周回遅れを回避するためにチップ0の不揮発化実行期間に合わせて調停期間を長く設定すると、他のすべてのメモリチップ208の調停期間が長くなり、性能の低下に繋がる。
(実施の形態による不揮発化制御処理の例)
実施の形態における不揮発化制御処理の一例を示すタイミングチャートは、図8に示すように表され、実施の形態における不揮発化制御処理の別の一例を示すタイミングチャートは、図9に示すように表される。
実施の形態では、所定の単位毎に調停期間が設定される。比較例では、どのチップに対しても一様の長さの調停期間を用いたが、実施の形態では、図8に示すように、例えばチップ0に対するn+1周目の調停期間には、時刻t8〜t9_1までの長さに相当する期間が割り当てられている。
ここで割り当てる調停期間は、例えば、図11に例示するように、メモリチップ208毎の品質に応じて複数種類(図11の例では3種類)に区分化されている。即ち、長さがP1であるARBIT_PERIOD[0]と、長さがP3であるARBIT_PERIOD[1]と、長さがP2であるARBIT_PERIOD[2]とが用意され、各メモリチップ208に割り当てられる。ここで、P1<P2<P3である。尚、調停期間は、図11に示したような3種類に限らず、2種類でも4種類以上でも構わない。また、調停期間の長さについても、メモリチップ208の性能に応じて、適宜調整することができる。
図8に示すように、n+1周目の調停期間(時刻t8〜t9_1まで)の間に、チップ0に対するn周目の不揮発化処理が完了していれば、チップ0に対するn+1周目の不揮発化処理を実行することができる。そのため、チップ0のn+1周目には、時刻t8〜t9_0に相当する長さのARBIT_PERIOD[0]や、時刻t8〜t10に相当する長さのARBIT_PERIOD[1]ではなく、最適な長さである時刻t8〜t9_1までに相当する長さのARBIT_PERIOD[2]を割り当てるほうが好ましい。
それに対し、図9に示すように、チップ0に対するn周目の不揮発化処理が時刻t9_2まで掛かるような場合には、周回遅れを防止するため、n+1周目の調停期間には、時刻t8〜t9_1までに相当する長さのARBIT_PERIOD[2]ではなく、時刻t8〜t10までに相当する長さのARBIT_PERIOD[1]を割り当てるほうが好ましい。
実施の形態では、これらの調停期間の設定を所定の単位、すなわちメモリチップ208のチップ単位或いは各々のメモリチップ208の複数の物理領域単位毎に設定する。これにより、他のメモリチップよりも性能が劣り、不揮発化処理が長く掛かるメモリチップには、適当な調停期間を設定することができる。
実施の形態における不揮発化制御処理の一例を示すタイミングチャートは、図10に示すように表される。
図10の例では、図11に示すような3種類に区分化された調停期間、即ち、ARBIT_PERIOD[0]とARBIT_PERIOD[1]とARBIT_PERIOD[2]とが用意され、各メモリチップ208に対して調停期間が割り当てられる。但し、1周目については、各チップ0〜7に対して同一の調停期間(ARBIT_PERIOD[0])が設定されている。
2周目以降については、チップ0にはARBIT_PERIOD[2]が設定され、チップ3にはARBIT_PERIOD[1]が設定され、それ以外のチップ1〜2,4〜7にはABIT_PERIOD[0]が設定されている。前述のように、ARBIT_PERIOD[0]が最も短い期間(P1)であり、ARBIT_PERIOD[1]が最も長い期間(P3)であり、ARBIT_PERIOD[2]がP1とP3との間の長さの期間(P2)となっている。従って、不揮発化処理の実行時間が短いチップ1〜2,4〜7にはARBIT_PERIOD[0]が設定され、不揮発化処理の実行時間が長いチップ3にはARBIT_PERIOD[1]が設定され、次に不揮発化処理の実行時間が長いチップ0にはARBIT_PERIOD[2]が設定されている。
そのため、図10に示すように、不揮発化処理の実行時間が長いチップ3についても、次に不揮発化処理の実行時間が長いチップ0についても、個別に調整して設定した調停期間(ARBIT_PERIOD[1]とARBIT_PERIOD[2])によって、それぞれ、周回遅れになるのを回避することができる。即ち、チップ0については、2周回の調停期間(ARBIT_PERIOD[2]に等しい時刻t8〜t10)内に1周目の不揮発化処理が完了している。同様に、チップ3についても、2周回の調停期間(ARBIT_PERIOD[1]に等しい時刻t11〜t13_1)内に1周目の不揮発化処理が完了している。
尚、図10における各調停期間の起点は、図10の最上段の不揮発化対象チップ番号が切り替わったときを起点とする。すなわち、例えばチップ0に対するn+1周目の調停期間の起点は、チップ0〜チップ7のすべてに対するn周目の調停期間が完了したときである。また、図10に示した例において、同じ調停期間(例えばARBIT_PERIOD[0])を設定しているのにも関わらず長さが異なる場合があるのは、データの不揮発化処理が完了するタイミングによって次のチップの不揮発化処理が開始されるタイミングが異なるからである。
(調停期間の設定処理例)
実施の形態における調停期間設定パラメータセットの設定処理例を示すフローチャートは、図12に示すように表される。図12に示すように、例えば、メモリチップ208の初期化(フォーマット)などの際に実行する不揮発化処理の結果を基に、その際に掛かった不揮発化処理時間から、所定の単位、すなわちメモリチップ208のチップ単位或いは各々のメモリチップ208の複数の物理領域単位毎に調停期間を算出して設定する。尚、不揮発化処理時間を取得するタイミングは、メモリチップ208の初期化に限らず、例えば、メモリチップ208のバックアップ時や通常のリード・ライト時など、様々なタイミングが想定される。
(a)まず、ステップS301において、メモリコントローラ200は、メモリチップ208の初期化処理を開始する。
(b)次に、ステップS302において、メモリコントローラ200は、初期化処理の過程で実行する不揮発化処理の結果を基に、その際に掛かった不揮発化処理時間から、所定の単位毎に調停期間を算出する。
(c)次に、ステップS303において、メモリコントローラ200は、ステップS302で算出した所定の単位毎の調停期間を調停期間格納部300に格納しておく。この調停期間格納部300は、メモリチップ208内に設けても良いし、メモリコントローラ200内に設けても良い。或いは、必要なときにアクセス可能な外部の媒体(図示せず)に格納しておいても良い。
(d)一方で、メモリコントローラ200は、不揮発化処理を実行する際に(ステップS401)、調停期間格納部300に予め格納されている所定の単位毎の調停期間を用いて(ステップS402)、不揮発化処理を実行する。不揮発化処理を実行する際には、調停期間格納部300から読み出した所定の単位毎の調停期間の情報を、不揮発化の対象チップのインデックス値に対応付けて調停期間番号(Arbitration_Period No.)に設定する。また、使用するNANDチップのアドレス情報が変わる度に、それに適応した調停期間番号を設定する。
ステップS302における算出方法としては、例えば、所定の単位毎に不揮発化処理に要する時間を算出しておき、標準的な(或いは高品質のチップの)不揮発化処理時間との差分を用いて、所定の単位毎に調停期間を算出することができる。
(不揮発化制御処理の後処理)
実施の形態に係るメモリコントローラにおいて用いられる論物チップ変換テーブル251の一例は、図13に示すように表され、論物アドレス変換テーブル252の一例は、図14に示すように表される。
論物チップ変換テーブル251は、メモリコントローラ内で識別している仮想的なチップ番号と、メモリチップ208の物理チップ番号との対応を示す論物チップ変換テーブルであり、不揮発化処理を、メモリチップ208のチップ単位に実行する際に用いられる。
また、論物アドレス変換テーブル252は、ホスト10が発行するコマンドにおける論理アドレスと、メモリチップ208の物理アドレスとの対応を示す論物アドレス変換テーブルであり、不揮発化処理を、各々のメモリチップ208の複数の物理領域単位に実行する際に用いられる。
また、実施の形態に係るメモリコントローラによる不揮発化制御処理の後処理の一例を示すフローチャートは、図15に示すように表される。
(A)まず、ステップS501において、メモリコントローラ200は、メモリチップ208への書き込みデータの不揮発化処理を開始する。
(B)次に、ステップS502において、メモリコントローラ200は、不揮発化処理を実行する。
(C)次に、不揮発化処理の実行が終わると、すなわち、論物チップ変換テーブル251及び論物アドレス変換テーブル252に関わるすべての書き込みデータの不揮発化処理が完了すると、ステップS503において、メモリコントローラ200は、論物チップ変換テーブル251及び論物アドレス変換テーブル252の更新処理を実行する。例えば、全メモリチップ208に対してそれぞれ1回ずつの書き込みデータの不揮発化処理を行う処理を、複数回完了した時点で、メモリコントローラ200は、論物チップ変換テーブル251及び論物アドレス変換テーブル252を更新する。
(D)次に、論物チップ変換テーブル251及び論物アドレス変換テーブル252の更新処理が終わると、ステップS504において、メモリコントローラ200は、エラー訂正用データの生成処理を実行する。エラー訂正用データの生成処理(ステップS504)は、メモリチップ208からデータをリードした際にエラーが発生した場合に用いる復元用パリティ情報等のエラー訂正用データを生成する処理であり、メモリコントローラ200内のECC部218によって実行される。
(E)次に、エラー訂正用データの生成処理が終わると、ステップS505において、メモリコントローラ200は、不揮発化処理を終了する。
論物アドレス変換テーブルの更新処理(ステップS503)は、論物アドレス変換テーブル252を更新する。例えば、同一の論理アドレスにデータを書き込む場合、実際に書き込まれるメモリチップ208の物理アドレスは、書き込みの度に変化していく。そのため、ステップS502の不揮発化処理を実行後に、メモリコントローラ200は、論物アドレス変換テーブル252を更新する。論物アドレス変換テーブル252は、内部メモリ205内のキャッシュメモリに格納され、メモリコントローラ200による次回の不揮発化処理に用いられる。尚、ステップS503で更新された論物アドレス変換テーブル252は、更新後すぐに不揮発化される必要はない。例えば、内部メモリ205内のキャッシュメモリが飽和するまでは、更新された論物アドレス変換テーブル252キャッシュメモリに保持しても良い。キャッシュメモリ内に更新された論物アドレス変換テーブル252が保持されている間は、メモリチップ208に対してデータのリードが高速に実行できる。
また、論物アドレス変換テーブルの更新処理(ステップS503)において、論物チップ変換テーブル251を更新する際に、例えば、1周分として配置された論理チップ番号「0」〜「7」の7つのメモリチップ208群のうち1つのメモリチップ208が不良ブロックを有する場合に、その不良ブロックを有するメモリチップ208を論理チップ番号「7」に設定し、それ以外の不良ブロックがないメモリチップ208を論理チップ番号「0」〜「6」に設定するようにしても良い。
メモリチップ208の不揮発化処理において、周回遅れのメモリチップ208が出現すると、全体の性能の劣化に繋がり、更には、論物アドレス変換テーブルの生成処理(ステップS503)及びエラー訂正用データの生成処理(ステップS504)にも影響が及ぶ。
しかしながら、本実施の形態によれば、周回遅れのメモリチップ208の出現を極力回避することができるため、論物アドレス変換テーブルの更新処理(ステップS503)及びエラー訂正用データの生成処理(ステップS504)への影響も低減することができる。
以上説明したように、本実施の形態によれば、不揮発化実行時間が遅い特定のチップの不揮発化処理が周回遅れにならないようにすることができるため、その後に同一チップに対する不揮発化要求を発行できなくなるのを防ぎ、且つ関連情報の生成も滞ることがないようにすることができる。
従って、メモリチップに品質の差がある場合においても、性能を低減することなく不揮発化処理を実行することができるメモリシステムを提供することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
このように、本実施の形態は、ここでは記載していない様々な実施の形態等を含む。
201…不揮発化データ発行部、202…ダイレクトメモリアクセス(DMA)コントローラ、203…制御部(CPU)、205…内部メモリ、206…データバッファ、207…NANDコントローラ、208…メモリチップ、209…ホストインタフェース(I/F)部、218…誤り訂正符号(ECC)部、204…内部バスマトリックス、211…シーケンサ、212…パラメータテーブル、213…パラメータ転送部、214…プログラムジェネレータ、251…論物チップ変換テーブル、252…論物アドレス変換テーブル、271…レジスタ

Claims (10)

  1. 不揮発性の複数のメモリチップと、
    前記複数のメモリチップと接続されて各メモリチップの動作を制御するメモリコントローラとを備え、
    前記メモリコントローラは、
    前記メモリチップの所定の単位における各不揮発化処理の調停期間が、前記メモリチップ毎に設定された調停期間設定パラメータセットを保持し、前記複数のメモリチップに対する不揮発化処理を指示する際に前記調停期間設定パラメータセットを発行する不揮発化データ発行部と、
    ホストから転送される書き込み用データを前記複数のメモリチップに対して不揮発化する前記不揮発化処理を実行する際に、前記不揮発化データ発行部から発行された前記調停期間設定パラメータセットに設定されている前記所定の単位毎の調停期間に従って、前記所定の単位毎に前記不揮発化処理を調停するコントローラと
    を備える、メモリシステム。
  2. 前記所定の単位は、前記メモリチップのチップ単位である、請求項1に記載のメモリシステム。
  3. 前記所定の単位は、各々のメモリチップ内の複数の物理領域のうちの1つの物理領域単位である、請求項1に記載のメモリシステム。
  4. 前記コントローラは、前記不揮発化処理の対象となるメモリチップの調停期間内に、前記不揮発化処理に用いるデータが揃い且つ前記不揮発化処理の対象となるメモリチップの直前の周回の不揮発化処理が完了していれば、当該メモリチップに関する不揮発化処理を続行する、請求項1に記載のメモリシステム。
  5. 前記コントローラは、前記不揮発化処理の対象となるメモリチップの調停期間内に、前記不揮発化処理に用いるデータが揃わないか、若しくは前記不揮発化処理の対象となるメモリチップの直前の周回の不揮発化処理が完了していない場合に、当該メモリチップに関する不揮発化処理をスキップする、請求項1に記載のメモリシステム。
  6. 当該メモリチップに関する前記不揮発化処理をスキップすることにより、当該メモリチップとは別のメモリチップに対する不揮発化処理を実行する、請求項5に記載のメモリシステム。
  7. 前記調停期間設定パラメータセットは、前記所定の単位毎に、どの調停期間を使用するのかを示すインデックス値を備える、請求項1に記載のメモリシステム。
  8. 前記コントローラは、
    前記インデックス値と前記調停において用いられる前記調停期間の値とを対応付けて保持するレジスタと、
    前記調停期間設定パラメータセットの前記インデックス値を参照して、前記レジスタ内に保持されている前記調停期間の値を前記所定の単位毎に選択するセレクタと
    を備える、請求項7に記載のメモリシステム。
  9. 前記調停期間の長さは、前記不揮発化処理の実行時間の長さに応じて設定される、請求項1に記載のメモリシステム。
  10. 前記不揮発化処理の実行時間の長さは、前記メモリチップの不揮発化処理の実行時間である、請求項9に記載のメモリシステム。

JP2019050808A 2019-03-19 2019-03-19 メモリシステム Pending JP2020154503A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019050808A JP2020154503A (ja) 2019-03-19 2019-03-19 メモリシステム
US16/556,020 US11354063B2 (en) 2019-03-19 2019-08-29 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019050808A JP2020154503A (ja) 2019-03-19 2019-03-19 メモリシステム

Publications (1)

Publication Number Publication Date
JP2020154503A true JP2020154503A (ja) 2020-09-24

Family

ID=72515400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019050808A Pending JP2020154503A (ja) 2019-03-19 2019-03-19 メモリシステム

Country Status (2)

Country Link
US (1) US11354063B2 (ja)
JP (1) JP2020154503A (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000267943A (ja) 1999-03-18 2000-09-29 Hitachi Ltd データ書込み管理方式
US7688863B2 (en) * 2001-10-19 2010-03-30 Renesas Technology America, Inc. Methods and apparatus for sharing network bandwidth
JP2011191867A (ja) 2010-03-12 2011-09-29 Panasonic Corp 不揮発性記憶装置
JP5565204B2 (ja) * 2010-08-23 2014-08-06 株式会社リコー データ転送装置、データ転送方法およびプログラム、ならびに、画像形成装置
US8533403B1 (en) * 2010-09-30 2013-09-10 Apple Inc. Arbitration unit for memory system
JP6127872B2 (ja) * 2013-09-27 2017-05-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10379769B2 (en) 2016-12-30 2019-08-13 Western Digital Technologies, Inc. Continuous adaptive calibration for flash memory devices

Also Published As

Publication number Publication date
US20200301603A1 (en) 2020-09-24
US11354063B2 (en) 2022-06-07

Similar Documents

Publication Publication Date Title
TWI408556B (zh) 記憶體控制器及用於運作記憶體裝置之方法
JP5525605B2 (ja) フラッシュメモリモジュール
JP4901968B2 (ja) 半導体記憶装置
JP4966404B2 (ja) メモリ制御装置、記憶装置、及びメモリ制御方法
US20110296084A1 (en) Data storage apparatus and method of writing data
US20140380092A1 (en) Efficient raid technique for reliable ssd
JP5364807B2 (ja) メモリコントローラ及び不揮発性記憶装置
US10108565B2 (en) Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements
JP2010152551A (ja) 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法
JP2013222435A (ja) 半導体記憶装置及びその制御方法
JP2006120082A (ja) メモリカード、半導体装置、及びメモリカードの制御方法
JP4745465B1 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
US20150234448A1 (en) Information processing system and storage device
JP5259755B2 (ja) マルチチャネルを有するメモリ装置及び同装置におけるメモリアクセス方法
JP4922442B2 (ja) バッファ管理装置、同装置を備えた記憶装置、及びバッファ管理方法
US20170371554A1 (en) Internal Data Transfer Management in a Hybrid Data Storage Device
US11354063B2 (en) Memory system
JP2018106573A (ja) ストレージ制御装置及び制御プログラム
US11099739B2 (en) System and method for accessing redundant array of independent disks
JP5910596B2 (ja) ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム
US11029878B2 (en) Information processing system
WO2023055610A1 (en) Dynamic repartition of memory physical address mapping
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
US10635534B2 (en) Nonvolatile memory module
JP6073717B2 (ja) ストレージ制御装置及びストレージシステム