JP4966404B2 - メモリ制御装置、記憶装置、及びメモリ制御方法 - Google Patents

メモリ制御装置、記憶装置、及びメモリ制御方法 Download PDF

Info

Publication number
JP4966404B2
JP4966404B2 JP2010236549A JP2010236549A JP4966404B2 JP 4966404 B2 JP4966404 B2 JP 4966404B2 JP 2010236549 A JP2010236549 A JP 2010236549A JP 2010236549 A JP2010236549 A JP 2010236549A JP 4966404 B2 JP4966404 B2 JP 4966404B2
Authority
JP
Japan
Prior art keywords
channels
command
write
queue
read
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.)
Expired - Fee Related
Application number
JP2010236549A
Other languages
English (en)
Other versions
JP2012089010A (ja
Inventor
隆裕 南郷
祐行 茂呂
徹 福田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010236549A priority Critical patent/JP4966404B2/ja
Priority to US13/205,193 priority patent/US9304952B2/en
Publication of JP2012089010A publication Critical patent/JP2012089010A/ja
Application granted granted Critical
Publication of JP4966404B2 publication Critical patent/JP4966404B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明の実施形態は、メモリ制御装置、記憶装置、及びメモリ制御方法に関する。
従来から、様々なデータ記憶装置が開発されている。このようなデータ記憶装置として、例えば、書き換え可能な不揮発性メモリの一種であるNAND型フラッシュメモリを記憶媒体とするSSD(Solid State Drive)が開発されている。
かかるSSDでは、ページ(Page)やクラスタ(cluster)と呼ぶ論理的なアクセス単位でデータの書き込み、読み出し動作が実行される。このようなSSDでは、処理を高速に行うために、どのタイミングでリード/ライトを行うのかが重要となる。
特開2001−27966号公報
しかしながら、近年、SSDに対して多チャネルでリード/ライトを行う傾向にあるが、従来技術においては、多チャネルに適したリード/ライトのタイミングについては考慮されていない。
本発明は、上記に鑑みてなされたものであって、多チャネルによるリード/ライトを適切なタイミングで行うメモリ制御装置、記憶装置、及びメモリ制御方法を提案する。
実施形態のメモリ制御装置は、複数のチャネルで記憶媒体に対する命令処理を行うメモリ制御装置において、チャネル毎のキューと、第1の制御手段と、生成手段と、第2の制御手段と、を備える。キューは、記憶媒体に対するデータの書込命令を保持する。第1の制御手段は、複数のチャネルのキューに書込命令が保持され、複数のチャネルを同期させた上で書込命令の処理が可能になるまでの間に、記憶媒体に対するデータの読出命令を受け付けた場合に、当該読出命令によるデータの読み出し処理を、書込命令より優先して行わせ、複数のチャネルで書込命令の処理が可能になった場合に、複数のチャネルを同期させた上で書込命令によるデータの書き込み処理を行わせる。生成手段は、複数のチャネルで同期させて書込命令による処理を行う際、複数のチャネルで書き込まれるデータに基づいて、複数のチャネルで書き込まれたデータの誤りを検出および訂正するためのエラー訂正符号を生成する。第2の制御手段は、エラー訂正符号を、記憶媒体に書き込む処理を行う。
図1は、第1の実施形態にかかるデータ記憶装置の構成を示すブロック図である。 図2は、第1の実施形態にかかるタイミング制御部と、チャネル・キュー処理回路の内部構成と、を示した図である。 図3は、発行順決定回路で発行されるコマンドの優先順位を示した図である。 図4は、第1の実施の形態にかかるデータ記憶装置1における、複数のチャネル分のNANDフラッシュ制御部による並列構成を示した図である。 図5は、リードコマンド及びライトコマンドが共に発行可能な場合に、各チャネルのキューの優先順位の切替を示した説明図である。 図6は、第1の実施の形態にかかるNANDフラッシュ制御部における、読み出し及び書き込みの処理の手順を示すフローチャートである。 図7は、第1の実施の形態にかかる、各チャネルの優先順位の切替に従ったコマンドの発行タイミングを示した図である。 図8は、第2の実施形態にかかるタイミング制御部と、チャネル・キュー処理回路の内部構成と、を示した図である。 図9は、第2の実施の形態にかかる、各チャネルのキューの優先順位の切替を示した説明図である。 図10は、第2の実施の形態にかかるNANDフラッシュ制御部における、読み出し及び書き込みの処理の手順を示すフローチャートである。 図11は、第2の実施の形態にかかる、各チャネルの優先順位の切替に従ったコマンドの発行タイミングを示した図である。
(第1の実施形態)
図1は、第1の実施形態にかかるデータ記憶装置1の構成を示すブロック図である。データ記憶装置1は、NAND型フラッシュメモリ20(以下、フラッシュメモリと称す)を記憶媒体として使用するSSD(Solid State Drive)とする。図1に示すように、データ記憶装置1は、メモリコントローラチップ(以下、コントローラと称す)100と、複数のフラッシュメモリ20と、ブート用ROM(Read Only Memory)150と、を有する。そして、データ記憶装置1は、ホストデバイス160から入力されるコマンドに従ってデータの読み出し、書き込み等を行う。
ホストデバイス160は、例えばパーソナルコンピュータとSSDとを接続する。ホストデバイス160は、例えばSAS(Serial Attached SCSI)規格やSATA(Serial ATA)規格のインターフェースコントローラとする。なお、ホストデバイス160は、論理ブロックアドレス(LBA)によりアクセスを行なう。
ブート用ROM150は、フラッシュメモリで構成され、SSDに対して外部(例えば、ホストデバイス160)からのアクセスを可能とするための起動用プログラムが格納されている。
NAND型フラッシュメモリ20は、読み書き可能な記憶媒体であり、チャネル(パッケージ)単位で外付け可能とする。本実施の形態では、消費電力の観点等からNAND型フラッシュメモリ20の数を、CPU101内のファームウェアからの指示により任意に変更することができる。
コントローラ100は、フラッシュメモリ20に対してアドレスやデータ制御を行なうNANDフラッシュメモリコントローラ104と、メモリインターフェース110と、ホストインターフェース106と、データフロー制御回路105と、マイクロプロセッサ(CPU)101と、DRAM(Dynamic Random Access Memory)102と、内部バス103と、を有する。
CPU101は、データ記憶装置1全体を制御するプロセッサとする。CPU101は、ファームウェアを含み、ホストデバイス160からのコマンドに応じて、データの書き込み動作及び読み出し制御を行うコマンドを、NANDフラッシュメモリコントローラ104に出力する。
DRAM102は、CPU101の作業領域として用いられ、CPU101からのアクセス制御に応じて、NAND型フラッシュメモリ20への書き込みデータおよびNAND型フラッシュメモリ20からの読み出しデータ、さらにはテーブル情報などを格納する。
メモリインターフェース110は、入出力(I/O)バッファを含み、フラッシュメモリ20との間でアドレスやデータの入出力を制御する。
ホストインターフェース106は、ホストデバイス160との間でデータ又はコマンドを転送する。
データフロー制御回路105は、ホストインターフェース106により転送するデータのバッファ制御を行なう。
NANDフラッシュメモリコントローラ104は、ホストインターフェース106により転送するデータのバッファ制御を行なう。
NANDフラッシュメモリコントローラ104は、コマンド・テーブル管理部107と、タイミング制御部108と、NANDフラッシュ制御部109_0〜109_nと、を有し、フラッシュメモリ20に対して、複数のチャネルで読み出し/書き込みを行う。
コマンド・テーブル管理部107は、レスポンス・キュー111と、コマンド・キュー受領回路112と、コマンド処理回路113と、テーブル管理回路114と、を備える。
レスポンス・キュー111は、CPU101にコマンド終了情報とステータス情報を提供する。
コマンド・キュー受領回路112は、(図示しない)コマンド・キューを有し、CPU101からのコマンドを受領し、当該コマンド・キューに格納する。コマンド・キューは、待ち行列バッファであり、CPU101からのライトやリードのコマンドが格納される。ここでのコマンド・フォーマットはハードウエアが処理しやすいビットフォーマットとする。コマンド・キュー受領回路112へのキューの発行は、CPU101のファームウェアで行なう。
コマンド処理回路113は、コマンド・キュー受領回路112内のキューに格納されているライトコマンドなどのコマンドを解読、制御する。また、コマンド処理回路113から投入されるコマンドは、クラスタ(4Kバイト)単位とする。
コマンド処理回路113は、コマンド・キュー受領回路112から受領したデータ転送長や、テーブル管理回路114から対象データの物理ブロック番号やチップ番号を、受領する。そして、コマンド処理回路113は、チャネル毎のNANDフラッシュ制御部109_0〜109_n内のチャネル・キュー処理回路121_0〜121_nへ、ライトコマンドやリードコマンドをキューイングする。
テーブル管理回路114は、DRAM102に格納されているテーブル情報(LBAと物理アドレスの変換用テーブルなど)を更新する。
また、テーブル管理回路114は、LBA(論理ブロックアドレス)をインデックスとして用い、DRAM102から各種テーブルを参照し、対象データの物理ブロック番号やチップ番号を算出する。
NANDフラッシュ制御部109_0〜109_nは、複数のNAND型フラッシュメモリ20に対してアドレスやデータ制御を行なうための構成であり、NANDフラッシュにアクセスするチャネルの数だけ備えている。
NANDフラッシュ制御部109_0は、チャネル・キュー処理回路121_0と、データ処理回路122_0と、NANDフラッシュコマンドシーケンサ123_0と、を備える。なお、NANDフラッシュ制御部109_1〜109_nについても同様の構成を備えるものとする。
チャネル・キュー処理回路121_0は、各チャネルでコマンド制御を行うための様々なキューを有し、コマンド処理回路113からのコマンドを受領し、各キューに格納する。
データ処理回路122_0は、データフロー制御回路105やNAND型フラッシュメモリ20とのデータ転送インタフェースとなる。さらに、データ処理回路122_0は、データのエラー検出処理やエラー訂正処理(ECC処理など)を行なう。
NANDフラッシュコマンドシーケンサ123_0は、複数あるNAND型フラッシュメモリ20の選択と、NAND型フラッシュメモリ20に対するアクセスコマンド発行を行う。
次に、本実施の形態にかかるデータ記憶装置1で行われる、フラッシュメモリ20に対するリード動作、及びライト動作について説明する。
本実施の形態にかかるリード動作時において、コマンド処理回路113は、コマンド・キュー受領回路112にキューイングされていたリードコマンドを取り出す。そして、コマンド処理回路113は、任意のチャネルとして、例えばNANDフラッシュコマンドシーケンサ123_0にコマンド発行し、NANDフラッシュコマンドシーケンサ123_0を起動させる。その後、NANDフラッシュコマンドシーケンサ123_0は、メモリインターフェース110を介して、NAND型フラッシュメモリ20からデータをリードする。なお、NAND型フラッシュメモリ20では、格納されたデータが有効であるか否かをフラグで管理され、当該リードは、当該フラグに従って有効なデータに対して行われる。また、NANDフラッシュコマンドシーケンサ123_0は、NAND型フラッシュメモリ20にアクセスする際、データ処理回路122_0に対してDRAM102へのデータ転送要求を実施し、データ処理回路122_0は、データ読み出しが完了するとNANDフラッシュコマンドシーケンサ123_0に終了レスポンスを返す。
本実施の形態にかかるライト動作時において、コマンド処理回路113は、コマンド・キュー受領回路112にキューイングされていたライトコマンドを取り出す。そして、コマンド処理回路113は、任意のチャネルとして、例えばNANDフラッシュコマンドシーケンサ123_0にコマンド発行し、NANDフラッシュコマンドシーケンサ123_0を起動させる。その後、NANDフラッシュコマンドシーケンサ123_0は、メモリインターフェース110を介して、NAND型フラッシュメモリ20に対するデータのライトを制御する。この時、NANDフラッシュコマンドシーケンサ123_0は、データ処理回路122_0に対してDRAM102からデータ転送要求を実施する。そして、データ処理回路122_0は、データフロー制御回路105を介して、ライトの対象となるデータを受領する。そして、データ処理回路122_0は、メモリインターフェース110を介して受領したデータを、NAND型フラッシュメモリ20に書き込む。そして、データ処理回路122_0は、データの受領及び書き込みが完了した後、NANDフラッシュコマンドシーケンサ123_0に終了レスポンスを返す。その後、NANDフラッシュコマンドシーケンサ123_0は、テーブル管理回路114に対して、終了通知とテーブル更新に必要な情報と、を受け渡す。これにより、テーブル管理回路114が、DRAM102上のデータを更新する。その後、テーブル管理回路114が、レスポンス・キュー111へ終了情報とステータスを発行する。そして、CPU101は、当該情報を参照し、ライト動作が正常に終了したかを判断する。実際にはその他の管理テーブルや、テーブルアップデート処理に関する動作があるが、従来からの手法を用いればよいものとして、説明を省略する。
ところで、本実施の形態では、上述したように、NAND型フラッシュメモリ20は、複数のチャネルで構成される。
そこで、本実施の形態にかかるデータ記憶装置1では、NAND型フラッシュメモリ20に対して読み出し処理を行なう場合、NANDフラッシュ制御部109_0〜109_nのいずれか1つが、制御の対象となる1つのチャネルの状態に応じて、リードコマンドを発行する。これにより、上述したリード動作が、任意のチャネルで行われる。
一方、本実施の形態にかかるデータ記憶装置1では、NAND型フラッシュメモリ20に対して書き込み処理を行う際、NANDフラッシュ制御部109_0〜109_nの全てが、同期をとった上で、一斉にライトコマンドを発行する。これにより、上述したライト動作が、全チャネルで行われる。
このような同期を取るため、タイミング制御部108は、NANDフラッシュ制御部109_0〜109_nによる書き込み処理の同期を行うためのタイミングを制御する。
このように、本実施の形態にかかるデータ記憶装置1では、コマンドの種類に応じて、マルチチャネルアクセスと、シングルチャネルアクセスと、が行われることになる。これらコマンド制御を行うために構成について説明する。
図2は、フラッシュメモリ20に対するコマンドを発行するために用いられる、タイミング制御部108と、チャネル・キュー処理回路121_0〜121_n内部の構成と、を示した図である。
チャネル・キュー処理回路121_0は、発行順決定回路251_0と、シングル・リード・キュー252_0と、ユーザ・マルチ・キュー253_0と、Aリード・キュー254_0と、Bマルチ・キュー255_0と、セレクタ256_0を備える。なお、チャネル・キュー処理回路121_1〜121_nについても同様の構成を備えているものとする。
シングル・リード・キュー252_0は、NAND型フラッシュメモリ20に対するリードコマンドを保持するキューであって、同一チャネルへのリードアクセスが重なっても効率よく処理を可能とする0〜m段のEntryを有する。また、シングル・リード・キュー252_0は、ユーザデータのリードするリードコマンドを保持するためのキューとする。
本実施の形態においては、チャネル・キュー処理回路121_0のシングル・リード・キュー252_0にリードコマンドが1つでも格納された場合に、リードコマンドが発行可能となる。そして、NANDフラッシュコマンドシーケンサ123_0に対してリードコマンドを発行すると、シングル・リード・キュー252_0は、1Entry分のキューが空く。これにより、コマンド処理回路113から次のコマンドが受け付け可能となる。なお、シングル・リード・キュー252_0が有するキューの段数は、要求性能によって異ならせても良い。
ユーザ・マルチ・キュー253_0は、NAND型フラッシュメモリ20に対する、ユーザデータのライトコマンドを保持するキューであって、論理ページ単位で書き込みを行うために必要な段数(本実施の形態では4段)のコンテキストを格納できるEntryを有する。
本実施の形態においては、1論理ページが8KBのNAND型フラッシュメモリ20を用いる。そして、本実施の形態では2クラスタを1ページとする。そして、本実施の形態にかかるチャネル・キュー処理回路121_0は、マルチページライト(マルチプレーンライトとも称す)を実行する場合、ユーザ・マルチ・キュー253_0に4クラスタ分のコマンド(Context0-3)が格納されるまで、NANDフラッシュコマンドシーケンサ123_0にライトコマンドを発行しない。つまり、本実施の形態では、各チャネルのユーザ・マルチ・キュー253_(i)(i=1〜n)に4クラスタ分のコマンドが格納された場合に、同期した上で書き込み制御がなされることになる。
また、ユーザ・マルチ・キュー253_0は、4段のコンテキスト全てにライトコマンドが格納された場合に、Ch0UMQFull=“H”信号を、CH間同期状態確認回路201に出力する。各チャネル(i=0〜n)からCh(i)UMQFull=“H”が入力されるか否かにより、タイミング制御部108内のCH間同期状態確認回路201は、各チャネルのユーザ・マルチ・キュー253_(i)のコンテキスト全てにライトコマンドが格納されたか否かを確認できる。
Aリード・キュー254_0は、コンパクション等を行うために、データ記憶装置1で発行されたリードコマンドを保持するキューであって、0〜m段のEntryを有する。
Bマルチ・キュー255_0は、コンパクション等を行うために、データ記憶装置1で発行されたライトコマンドを保持するキューであって、4段のコンテキストを格納できるEntryを有する。
そして、チャネル・キュー処理回路121_0〜121_nは、上記の各キューに格納されたコマンドに基づいて、NANDフラッシュコマンドシーケンサ123_0〜123_nにコマンド発行する。コマンド発行により、上記の各キューに空きができると、コマンド処理回路113が、次のコマンドを空きができたキューに投入する。
そして、シングル・リード・キュー252_(i)、ユーザ・マルチ・キュー253_(i)、Aリード・キュー254_(i)、及びBマルチ・キュー255_(i)(i=0〜n)は、チャネル毎に設けられたチャネル・キュー処理回路121_0〜121_nの各々に設けられる。
なお、本実施の形態は、チャネル・キュー処理回路121_0内部に設けられた各キューの構成の例を示したものであり、これらの構成に制限するものではない。
発行順決定回路251_0は、シングル・リード・キュー252_0、ユーザ・マルチ・キュー253_0、Aリード・キュー254_0、及びBマルチ・キュー255_0に格納されたコマンドのうち、いずれのコマンドを発行するか決定する。
図3は、発行順決定回路251_0で発行されるコマンドの優先順位を示した図である。図3に示すように、各キューのコマンドが発行可能になった場合、発行順決定回路251_0は、B・マルチ・キュー255_0、Aリード・キュー254_0、シングル・リード・キュー252_0並びにユーザ・マルチ・キュー253_0の順に、各コマンドに格納されたコマンドを発行する。
さらに、発行順決定回路251_0は、全チャネルのユーザ・マルチ・キュー253_(i)(i=1〜n)のコンテキスト全てにライトコマンドが保持され、各チャネルを同期させた上でライトコマンドの処理が可能になるまでの間に、当該チャネル0のシングル・リード・キュー252_0にフラッシュメモリ20に対するデータのリードコマンドが格納された場合に、当該リードコマンドによるデータの読み出し処理を、ライトコマンドより優先して行わせるよう、セレクタ256_0を制御する。
また、発行順決定回路251_0は、全チャネルのユーザ・マルチ・キュー253_(i)(なお、iは1〜nとする)のコンテキスト全てにライトコマンドが保持され、各チャネルを同期させた上でライトコマンドの処理が可能になった場合、換言すればCH間同期状態確認回路201からUsrWriteGo=“H”信号が入力された場合に、当該信号が入力されたタイミングをトリガーとして、当該チャネル0のユーザ・マルチ・キュー253_0に格納されたライトコマンドによるデータの書き込み処理を行う。当該タイミングをトリガーとして、書き込み命令を行うことで、各チャネルでライトコマンドを同期させた上で書き込み処理を行うことができる。
そして、本実施の形態にかかるタイミング制御部108は、キューイングされたライトコマンドが全チャネルで発行可能になった時点と、1つのリードコマンドが任意のチャネルで発行可能になった時点と、で、どちらを優先すべきか優先順を決定して、コマンド発行を行なうこととする。これにより、リードの発行が長時間待たされてしまうことを回避し、リードのコマンド発行のパフォーマンスを向上できる。
セレクタ256_0は、発行順決定回路251_0からの制御に従って、シングル・リード・キュー252_0、ユーザ・マルチ・キュー253_0、Aリード・キュー254_0、及びBマルチ・キュー255_0から命令を発行するのか選択する。そして、当該選択に従って、キューに蓄積されたコマンドが、NANDフラッシュコマンドシーケンサ123_0に出力される。
図4は、本実施の形態にかかるデータ記憶装置1における、NANDフラッシュ制御部109_0〜109_nによる並列構成を示した図である。
本実施の形態のデータ記憶装置1では、各チャネルを同期した上でライト処理を行う際に、各チャネルのデータに基づいて、エラーの検出及び訂正を行うための符号を生成し、当該エラー訂正用の符号をNAND型フラッシュメモリ20に書き込む。そして、データの読み出し時に当該エラー訂正用符号も読み出し、読み出したデータに対するエラーの検出、訂正が行われる。
上述した機能を実現するために、NANDフラッシュ制御部109_0〜109_(n−1)までは、ライト制御時に、CPU101から要求されたユーザデータを書き込む。
NANDフラッシュ制御部109_nは、エラー訂正符号生成部301を備え、エラー訂正符号生成部301により生成されたエラー訂正用の符号を、フラッシュメモリ20のSyndrome格納部に対して書き込む。なお、本実施の形態は、エラー訂正符号の生成、書き込みを行う構成がNANDフラッシュ制御部109_nとした例を示したものであり、他の構成で行ってもよい。
エラー訂正符号生成部301は、チャネル0〜チャネルn−1で同期させたライトコマンドによる処理を行う際、チャネル0〜チャネルn−1で書き込まれるデータに基づいて、チャネル0〜チャネルn−1で書き込まれたデータの誤りを検出、訂正するためのエラー訂正用の符号を生成する。
チャネル間の同期を取ってエラー訂正を行なうデータ記憶装置1では、ライト処理時には全チャネルでNANDフラッシュメモリ20に対して規則正しく、NANDフラッシュコマンドシーケンサ123_(i)(i=1〜n)にコマンド発行しなければならない。そこで、本実施の形態では各チャネルについて同時にコマンド発行を行うこととした。
例えば、n=6であれば、6チャネルのうち1チャネルは符号化データ格納メモリ構成となる。そして、5チャネル分のNANDフラッシュ制御部109_(i)(i=0〜4)が、各々4個のコマンドを、フラッシュコマンドシーケンサ123_(i)に発行する。そして、エラー訂正符号生成部301は、20コマンド(4個×5チャネル)で書き込み対象となるデータから、Syndrome計算等のエラー訂正用の符号化を行なう。
次に、本実施の形態にかかる、リードコマンドやライトコマンドの発行の優先順位の決定手法について説明する。
NANDフラッシュ制御部109_(i)(i=0〜n)のコマンド実行は、図4に示すように、チャネル毎に並列動作している。そして、チャネル間でのコマンド実行順番は保証されない。またチャネル内においては、ライトコマンドでは、マルチページライトを行い、リードコマンドでは、クラスタリードを行う。
上述したように、ライトコマンドが各ユーザ・マルチ・キュー253_(i)(i=0〜n)の全コンテキストに格納され、マルチページライトが実行可能になるまで、リードコマンドが優先して実行される。このため、コマンド実行順番は保証されない。図2を用いて説明すると、例えばチャネル0に対して、Write context0、Write context1、Read context0の順番でコマンドをキューイングしても、ユーザ・マルチ・キュー253_0の全コンテキストを満たしていないため、リードコマンドがライトコマンドより優先して実行される。
ところで、従来の技術を用いて各チャネルの同期を行った場合、各チャネルのユーザ・マルチ・キュー253_(i)で、ライトコマンドが4個キューイングされ、Entryが満たされた時点で、当該チャネルのライトコマンドの優先順位を高く設定されることになる。しかしながら、ライトコマンドを発行する場合には全チャネルを同期させる必要があるため、1つのチャネルでEntryが満たされても全チャネルのEntryが満たされるまでライトコマンドが発行されない。このため、全チャネルのEntryが満たされるまでの間に、リードコマンドがキューイングされた場合、リードコマンドの発行可能であるにも関わらず、長時間待たされることになる。
そこで、本実施の形態では、図2に示すタイミング制御部108内で各コマンドの優先順位が高く設定されるタイミングを調整することとした。
図2のタイミング制御部108は、CH間同期状態確認回路201と、コマンドレディ制御回路202と、を備える。
CH間同期状態確認回路201は、各チャネルのユーザ・マルチ・キュー253_(i)(i=1〜n)から、送信されるCh(i)UMQFull信号により、全チャネルのユーザ・マルチ・キュー253_(i)のコンテキスト全てにライトコマンドが格納されたか否かを確認できる。なお、Ch(i)UMQFull信号は、各チャネルのEntryが満たされた状態であることを示す信号とする。
そして、全チャネルのユーザ・マルチ・キュー253_(i)のEntryが満たされたことを確認した場合、各チャネルの発行順決定回路251_(i)に対して、UsrWriteGo=“H”信号を出力する。
そして、各チャネルのチャネル・キュー処理回路121_(i)の発行順決定回路251_(i)は、UsrWriteGo=“H”信号を受領した時に、全チャネルのEntryにライトコマンドが満たされたことを認識する。そして、発行順決定回路251_(i)は、当該認識に基づいて、いずれのコマンドを発行するか決定する。当該決定は、仮に、全チャネルのライトコマンドが満たされた時に、無条件にライトコマンドの優先順位を高くすると、当該ライトコマンドが満たされた状態が継続した場合に、リードコマンドが発行されないという問題を抑止するために行われるものである。
そこで、本実施の形態にかかるデータ記憶装置1では、全チャネルのEntryにライトコマンドが満たされた状態であり且つ、任意のチャネルにリードコマンドが1つEntryされた状態を満たした場合、換言するとリードコマンド及びライトコマンドとも発行可能状態になった場合には、各チャネルの発行順決定回路251_(i)(i=1〜n)がラウンドロビンを用いて、シングル・リード・キュー252_(i)と、ユーザ・マルチ・キュー253_(i)と、のどちらの優先順位を高くするかを、交互に切り替える。これにより、ライトコマンド受領期間中にリードコマンドの発行が長時間待たされることを回避できる。
そして、シングル・リード・キュー252_(i)の優先順位が高く設定された後、各チャネルのチャネル・キュー処理回路121_(i)が、NANDフラッシュコマンドシーケンサ123_(i)からCh(i)CmdReady信号でコマンドの発行準備が整ったことを受信した場合、発行順決定回路251_(i)は、リードコマンドを発行するよう、セレクタ256_(i)を制御する。(シングル)リード(SR)コマンドが発行された場合に、次はライトコマンドを優先させるため、発行順決定回路251_(i)は、ユーザ・マルチ・キュー253_(i)の優先順位を高くするよう設定する。
ユーザ・マルチ・キュー253_(i)の優先順位が高く設定された場合、各チャネルのチャネル・キュー処理回路121_(i)は、CH間同期状態確認回路201からUsrWriteGo信号で、全チャネルのユーザ・マルチ・キュー253_0〜253_nのEntryが満たされたことを受信した後、発行順決定回路251_(i)は、AllCmdReady信号を用いて全チャネルを同期させた上で、ライトコマンドを発行するよう、セレクタ256_(i)を制御する。
図5は、リードコマンド及びライトコマンドが共に発行可能な場合に、各チャネルのキューの優先順位の切替を示した説明図である。なお、データ記憶装置1によるハードウェア・リセット解除がされた場合に、発行順決定回路251_(i)は、初期値として、ユーザ・マルチ・キュー253_(i)の優先順位を高く設定する。
図5に示すように、各チャネルのチャネル・キュー処理回路121_(i)(i=1〜n)では、ユーザ・マルチ・キュー(UMQ)253_(i)の優先順位が高い場合、ライトコマンドが発行された後、発行順決定回路251_(i)は、シングル・リード・キュー(SRQ)252_(i)の優先順位を高く設定する。
そして、シングル・リード・キュー(SRQ)252_(i)の優先順位が高く設定された場合、リードコマンドが発行された後、発行順決定回路251_(i)は、ユーザ・マルチ・キュー253_(i)の優先順位を高く設定する。
このように、ユーザ・マルチ・キュー253_(i)、及びシングル・リード・キュー252_(i)の優先順位は、NANDフラッシュコマンドシーケンサ123_(i)がコマンドを発行する度に切り替えられる。
そして、コマンドレディ制御回路202は、全てのNANDフラッシュコマンドシーケンサ123_0〜123_nからCh(i)CmdReady信号でコマンド発行の準備が整ったことを受信した場合に、全チャネルに対してAllCmdReady信号で、全チャネルでコマンド発行の準備が整ったこと(AllCmdReady=“H”)を出力する。これにより、全チャネルで同期してライトコマンドの発行がなされる。
次に、本実施の形態にかかるデータ記憶装置1のNANDフラッシュ制御部109_0〜109_nにおける、読み出し及び書き込みの処理について説明する。図6は、本実施の形態にかかるNANDフラッシュ制御部109_0〜109_nにおける、上述した処理の手順を示すフローチャートである。
図6に示すように、読み込み及び書き込みのために行われる処理は、ステージで管理されている。図6に示すように、当該処理手順は、第1ステージ651、第2ステージ652、及び第3ステージ653で構成されている。これらのステージ内の処理が、CPU101のクロックサイクルに合わせて実行される。つまり、CPU101のクロックサイクルに合わせて、第1ステージ651、第2ステージ652、及び第3ステージ653の順に処理を行った後、再び第1ステージ651に戻る。このように各ステージの処理が、ステージの順にクロックサイクルに合わせて繰り返し(第1ステージ651、第2ステージ652、第3ステージ653、第1ステージ651、第2ステージ652、第3ステージ653、第1ステージ651の順)で行われる。第1ステージ651では、各チャネルで実行するコマンドを決めるための優先順位を決定するステージとする。第2ステージ652では、全チャネルの同期を取るステージとする。第3ステージ653では、実際にコマンドをシーケンサに発行するステージとする。次に、ステージ毎の処理について説明する。
まず、各ステージの処理を行う前に、NANDフラッシュ制御部109_(i)(i=0〜n)の発行順決定回路251_(i)は、ユーザ・マルチ・キュー(UMQ)253_(i)の優先順位を、初期値として高く設定しておく(ステップS601)。
次に、第1ステージ651の最初の処理として、各チャネルのチャネル・キュー処理回路121_(i)(i=0〜n)は、NANDフラッシュコマンドシーケンサ123_(i)からCh(i)CmdReady信号=“H”を受信したか否かを判定する(ステップS602)。そして、Ch(i)CmdReady信号=“H”を受信しなかった、換言すればAllCmdReady信号=“L”を受信した場合(ステップS602:No)、当該チャネルにおいては、これ以降の処理(第2ステージ652及び第3ステージ653の処理)を行わず、再びステップS602に戻る。
一方、Ch(i)CmdReady信号=“H”を受信した場合(ステップS602:Yes)、当該チャネルでは、シングル・リード・キュー252_(i)に、リードコマンドがあるか否かに応じて処理を切り替える(ステップS603)。シングル・リード・キュー252_(i)にリードコマンドが格納されていない場合(ステップS603:No)、当該ユーザ・マルチ・キュー253_(i)のEntryが満たされているか否かで処理を切り替える(ステップS604)。当該ユーザ・マルチ・キュー253_(i)にEntryが満たされていない場合(ステップS604:No)、これ以降の処理(第2ステージ652及び第3ステージ653の処理)を行わず、再びステップS602に戻る。また、ユーザ・マルチ・キュー253_(i)のEntryが満たされた場合(ステップS604:Yes)、ユーザ・マルチ・キュー253_(i)からCh(i)UMQFull=“H”信号を、CH間同期状態確認回路201に出力し、第2ステージ652のステップS610の処理に進む。
また、ステップS603において、シングル・リード・キュー252_(i)にリードコマンドが格納されている場合(ステップS603:Yes)、当該ユーザ・マルチ・キュー253_(i)のEntryが満たされているか否かで処理を切り替える(ステップS605)。当該ユーザ・マルチ・キュー253_(i)にEntryが満たされていない場合(ステップS605:No)、第2ステージ652のステップS607に進む。また、ユーザ・マルチ・キュー253_(i)のEntryが満たされた場合(ステップS605:Yes)、ユーザ・マルチ・キュー253_(i)からCh(i)UMQFull=“H”信号を、CH間同期状態確認回路201に出力する。この状況では、当該チャネルでライトコマンド及びリードコマンド共に格納されているため、どちらを優先すべきかを決定する必要がある。そこで、各チャネルの発行順決定回路251_(i)が、ユーザ・マルチ・キュー(UMQ)253_(i)の優先順位が高いか否かを判定する(ステップS606)。ユーザ・マルチ・キュー(UMQ)253_(i)の優先順位が高いと判定した場合(ステップS606:Yes)、第2ステージ652のステップS610の処理に進む。一方、ユーザ・マルチ・キュー(UMQ)253_(i)の優先順位が高くない、換言すればシングル・リード・キュー252_(i)の優先順位が高いと判定した場合(ステップS606:No)、第2ステージのステップS607に進む。
次に、CPU101のクロックサイクルに合わせて、第2ステージ652の処理が行われる。ステップS604でユーザ・マルチ・キュー253_(i)のEntryが満たされた場合(ステップS604:Yes)、またはステップS606でユーザ・マルチ・キュー(UMQ)253_(i)の優先順位が高いと判定された場合(ステップS606:Yes)、各チャネルの発行順決定回路252_(i)が、UserWriteGo信号=“H”を受信したか否かにより、全チャネルのユーザ・マルチ・キュー(UMQ)253_1〜253_nのEntryが満たされたか否かを判定する(ステップS610)。全チャネルのユーザ・マルチ・キュー(UMQ)253_1〜253_nのEntryが満たされていないと判定した場合(ステップS610:No)、第3ステージの処理を行わずに、ステップS602に戻る。このように全チャネルのユーザ・マルチ・キュー(UMQ)253_1〜253_nのEntryが満たされていない場合に、第1ステージ651のステップS602に戻って、処理を繰り返すことで、ユーザ・マルチ・キュー(UMQ)253_1〜253_nのEntryが満たされていないが、リードコマンドを受け付けたチャネルがある場合に、当該チャネルにおいて、リードコマンドの発行が可能となる。
一方、各チャネルの発行順決定回路252_(i)が、UserWriteGo信号=“H”を受信したことで、全チャネルのユーザ・マルチ・キュー(UMQ)253_1〜253_nのEntryが満たされていると判定した場合(ステップS610:Yes)、コマンドレディ制御回路202からAllCmdReady信号=“H”を受信したか否かを判定する(ステップS611)。そして、AllCmdReady信号=“H”を受信しなかった場合(ステップS611:No)、第3ステージの処理を行わずに、第1ステージ651のステップS602に戻る。そして、AllCmdReady信号=“H”を受信した場合(ステップS611:Yes)、第3ステージ653のステップS612に進む。
また、第1のステージ651において、ステップS605でユーザ・マルチ・キュー253_(i)のEntryが満たされていない(ステップS605:No)、またステップS606で、ユーザ・マルチ・キュー(UMQ)253_(i)の優先順位が低いと判定した場合(ステップS606:No)、当該チャネルについて、第2ステージ652では、CPU101のクロックサイクルに合わせてウェイト処理が行われる(ステップS607)。
そして、第2ステージ652において、各チャネルの発行順決定回路252_(i)がAllCmdReady信号=“H”を受信していた場合(ステップS611:Yes)、第3ステージ653で、全チャネルの発行順決定回路251_0〜251_nが、対応するセレクタ256_(i)を制御して、ユーザ・マルチ・キュー253_(i)からコマンドが発行されるように設定する。これにより、全チャネルを同期した上で、ライトコマンドによる書き込み処理が、全チャネルのNANDフラッシュコマンドシーケンサ123_0〜123_nにより行われる(ステップS612)。その後、全チャネルの発行順決定回路251_0〜251_nは、シングル・リード・キュー252_(i)(i=0〜n)の優先度を高く設定する(ステップS613)。
また、第2ステージ652において、CPU101のクロックサイクルに合わせてウェイト処理が行われていた場合(ステップS607)、第3ステージ653で、リードコマンドによる読み出し処理が、NANDフラッシュコマンドシーケンサ123_(i)により行われる(ステップS608)。その後、当該チャネルの発行順決定回路251_(i)は、当該チャネルのユーザ・マルチ・キュー(UMQ)253_(i)の優先順位を高く設定する(ステップS609)。
その後、第3ステージ653の処理の後、全チャネルのNANDフラッシュ制御部109_(i)(i=0〜n)において、全てのキューのコマンドの処理が完了していない場合(ステップ614:No)には、再び第1ステージ651のステップS602に戻る。全てのキューのコマンドの処理が完了している場合(ステップ614:Yes)には、全ての処理を終了する。
なお、本実施の形態では、各処理をステージ毎に管理する例について説明したが、ステージ毎に管理することに制限するものではなく、様々な手法で行なってよい。つまり、ユーザ・マルチ・キュー(UMQ)253が満たされるまでの間に、リードコマンドを受け付けた場合にはリードコマンドを発行し、リードコマンド及びライトコマンドが発行可能となった場合に、ラウンドロビンでどちらのコマンドを発行するかを決定できるような処理手順であればよい。
本実施の形態では、上述した処理手順で優先順位の切替と、読み出し及び書き込み処理とが行われることになる。
図7は、第1の実施の形態にかかる、各チャネルの優先順位の切替に従ったコマンドの発行タイミングを示した図である。
(1)ユーザーデータのライトコマンド(UW)が、ユーザ・マルチ・キュー253_(i)(i=1〜n)からNANDフラッシュコマンドシーケンサ123_(i)に発行されることで、シングル・リード・キュー252_(i)の優先順位が高く設定される。なお、NAND型フラッシュメモリ20への書き込み動作が実行中とする。
(2)このような状態で、新たなユーザデータのライトコマンドが投入され、全チャネル、全Entryが満たされた場合であっても、全チャネルのCh(i)CmdReadyの論理積を取ったALLCmdReady信号が“H”となり(全チャネルのコマンドが完了し)、ユーザデータのライトコマンドを発行可能となるまで待機している。
(3)ところで、(1)でシングル・リード・キュー252_(i)の優先順位が高く設定されていると共に、リードコマンドは、チャネル毎に単独で動作可能である。このため、チャネル・キュー処理回路121_(i)のシングル・リード・キュー252_(i)にリードコマンドが格納された際、各チャネルでコマンドの発行の準備が完了したタイミング(Ch(i)CmdReady=“H”が入力されたタイミング)、換言すれば当該チャネルのライト処理が完了したタイミングで、発行順決定回路251_(i)は、シングル・リードコマンドを発行するよう制御する。
(4)各チャネルでシングル・リード・キュー252_(i)の優先順位は高く設定されているので、発行順決定回路251_(i)は、各チャネルで一度はシングル・リードコマンドを発行するよう制御できる。そして、各チャネルでリードコマンドが発行される度に、当該チャネルのユーザ・マルチ・キュー253_(i)の優先順位が高く設定される。最大nチャネル分のシングル・リードコマンドが発行された段階で、全チャネルのユーザ・マルチ・キュー253_(i)の優先順位が高く設定されることになる。そして、全チャネルのリードが完了すると、コマンドレディ制御回路202から出力されるAllCmdReady信号が“H”となり、全チャネルの発行順決定回路251_(i)は、AllCmdReady信号=“H”を受け取ったタイミングで、ユーザデータのライトコマンドを発行するよう制御する。
なお、全チャネルでリードコマンドを発行する前に、各チャネルにリードコマンドの投入がなされなくなり、全チャネルのリードが完了すると、コマンドレディ制御回路202が出力するAllCmdReady信号が“H”となる。この場合、全チャネルの発行順決定回路251_(i)は、AllCmdReady信号=“H”を受け取ったタイミングで、ユーザ・マルチ・キュー253_(i)の優先順位を高くし、ユーザデータのライトコマンドを発行する。
なお、本実施の形態においては、全チャネルのライトコマンドを同時に実行することで同期させることとしたが、同時に実行することに制限するものではない。ライトコマンドが投入される度に、ライトコマンドの発行を許可するデータ記憶装置において、発行された各チャネルのライトコマンド及び書き込むデータを、一時的にSRAM等にキャッシュして、全チャネルのライトコマンド及びデータが蓄積された段階で、エラー訂正符号を生成しても良い。このように同時にコマンドが実行されずとも、全チャネルのライトコマンド及びデータが揃うよう、同期制御がされていればよい。
本実施の形態にかかるデータ記憶装置1では、キューイングされたコマンドのコマンド発行の優先順位がラウンドロビンによって決定することとした。これにより読み出し処理と、書き込み処理と、がそれぞれ長時間待機されることなく、均等に処理が行うことができる。
本実施の形態にかかるデータ記憶装置1では、全チャネルについてライトコマンドの発行可能状態であり、且つ任意のチャネルでリードコマンドの発行可能状態になった場合に、ラウンドロビンで優先順位を切り替えることで、リードコマンドの発行が長時間待たされてしまうことを回避し、リードコマンドの発行のパフォーマンスを向上させることができる。
(第2の実施の形態)
第1の実施の形態では、図7に示すように、各チャネルにシングル・リードコマンドが逐次投入された場合、シングル・リード・キュー252_(i)(i=1〜n)の優先順位の高い状態が継続し、ユーザ・マルチ・キュー253_(i)の優先順位を高くするタイミングが遅延する。そこで、第2の実施の形態では、ユーザ・マルチ・キュー253_(i)の優先順位を高くするタイミングを異ならせた例について説明する。
図8は、第2の実施の形態にかかるタイミング制御部801と、チャネル・キュー処理回路821_0〜821_nと、の構成を示した図である。なお、第2の実施の形態にかかるデータ記憶装置1は、第1の実施の形態のタイミング制御回路108及びチャネル・キュー処理回路121_0〜121_nが、タイミング制御部801及びチャネル・キュー処理回路821_0〜821_nに変更された以外、第1の実施の形態と同様の構成として説明を省略する。
チャネル・キュー処理回路821_0は、第1の実施の形態のチャネル処理回路121_0と比べ、発行順決定回路251_0と実行する処理が異なる発行順決定回路851_0に変更されている。
発行順決定回路851_0は、第1の実施の形態の発行順決定回路251_0と同様の処理を行うほか、UsrWriteGo=“H”信号を受領し、シングル・リード・キュー252_(i)からリードコマンドを発行した場合、Ch(i)UMWSRIssue信号でその旨を、特殊発行制御回路810に通知する。
タイミング制御回路801は、第1の実施の形態のタイミング制御回路108と比べて、特殊発行制御回路810が追加された構成とする。
第2の実施の形態にかかる特殊発行制御回路810は、全チャネルのうち、任意の1つのチャネルでリードコマンドを発行した処理を行った時(つまり、発行順決定回路281_(i)からCh(i)UMWSRIssueでその旨を受信した時)、全チャネルのユーザ・マルチ・キュー253_(i)の優先順位を高く設定する。
図9は、第2の実施の形態にかかる、各チャネルのキューの優先順位の切替を示した説明図である。なお、データ記憶装置1によるハードウェア・リセット解除がされた場合に、発行順決定回路851_(i)は、初期値として、ユーザ・マルチ・キュー253_(i)の優先順位を高く設定する。
図9に示すように、各チャネルのチャネル・キュー処理回路821_(i)(i=1〜n)では、ユーザ・マルチ・キュー(UMQ)253_(i)の優先順位が高い場合、ライトコマンドを発行した後、発行順決定回路851_(i)が、シングル・リード・キュー(SRQ)252_(i)の優先順位を高く設定する。
そして、シングル・リード・キュー(SRQ)252_(i)の優先順位が高い場合にリードコマンドが発行された後、発行順決定回路851_(i)が、ユーザ・マルチ・キュー253_(i)の優先順位を高く設定する。
さらに、シングル・リード・キュー(SRQ)252_(i)の優先順位が高い場合に、全チャネルでライトコマンドが発行可能な状態であり、且つ任意の1つのチャネルでリードコマンドが実行されると、全チャネルの発行順決定回路851_0〜851_nが、ユーザ・マルチ・キュー253_0〜253_nの優先順位を高く設定する。
つまり、任意のチャネルの発行順決定回路851_(i)が、CH間同期状態確認回路201からUsrWriteGo信号が入力されていると共に、シングル・リード・キュー252_(i)からリードコマンドを発行した場合に、Ch(i)UMWSRIssueでその旨を、特殊発行制御回路810に通知する。この通知を受けた特殊発行制御回路810が、全チャネルに対して、UMWPriorityH信号で、ユーザ・マルチ・キュー253_(i)の優先順位を高く設定するよう通知する。これにより、全チャネルで、ユーザ・マルチ・キュー253_0〜253_nの優先順位が高く設定される。
このように、第2の実施の形態では、ユーザ・マルチ・キュー253_(i)の優先順位が高くなるための遷移条件が1つ追加された。第2の実施の形態にかかるデータ記憶装置1では、追加された遷移条件を満たした場合に全チャネルのユーザ・マルチ・キュー253_0〜253_nの優先順位が高く設定されるため、コマンド発行の準備が整い次第、即座にライトコマンドが発行されることになる。換言すれば、リードコマンドが発行可能となっても、ユーザ・マルチ・キュー253_0〜253_nの優先順位が高いためリードコマンドが発行されない。
次に、第2の実施の形態にかかるデータ記憶装置1の、NANDフラッシュ制御部109_0〜109_nにおける、読み出し及び書き込みの処理について説明する。図10は、本実施の形態にかかるNANDフラッシュ制御部109_0〜109_nにおける、上述した処理の手順を示すフローチャートである。
第2の実施の形態においては、第1の実施の形態の図6で示した処理手順のうち、ステップS609を除いた処理手順(ステップS601〜S608、S610〜S614)と同様の処理が行われる(ステップS1001〜S1008、S1010〜S1014)。
そして、ステップS1008において、任意のチャネル(i)で、リードコマンドによる読み出し処理が行われた後、第1の実施の形態のステップS609の処理の代わりに、発行順決定回路851_(i)は、リードコマンドを発行した旨を、Ch(i)UMWSRIssue信号で、特殊発行制御回路810に通知する。これにより、特殊発行制御回路810が、全チャネルに対してUMWPriorityH信号で、ユーザ・マルチ・キュー253_(i)の優先順位を高くするよう通知する。これにより全チャネルについて、ユーザ・マルチ・キュー253_0〜253_nの優先順位が高く設定される(ステップS1009)。
また、第2の実施の形態の第1ステージ1051、第2ステージ1052、及び第3ステージ1053においても、第1の実施の形態の第1ステージ651、第2ステージ652、及び第3ステージ653と同様に、CPU101のクロックサイクルに合わせて実行される。
本実施の形態では、上述した処理手順で優先順位の切替と、読み出し及び書き込み処理とが行われることになる。
図11は、第2の実施の形態にかかる、各チャネルの優先順位の切替に従ったコマンドの発行タイミングを示した図である。図11に示す例では、図7で示す例と同様のタイミングで、シングル・リードコマンドの投入がなされているものとする。
(1)ユーザーデータのライトコマンド(UW)が、ユーザ・マルチ・キュー253_(i)からNANDフラッシュコマンドシーケンサ123_(i)に発行されることで、シングル・リード・キュー252_(i)(i=1〜n)の優先順位が高く設定される。なお、NAND型フラッシュメモリ20への書き込み動作が実行中とする。
(2)このような状態で、新たなユーザデータのライトコマンドが投入され、全チャネル、全Entryが満たされた場合であっても、全チャネルのCh(i)CmdReadyの論理積を取ったALLCmdReady信号が”H”となり(全チャネルのコマンドが完了し)、ユーザデータのライトコマンドを発行可能となるまで待機している。
(3)ところで、(1)でシングル・リード・キュー252_(i)の優先順位が高く設定されていると共に、リードコマンドは、チャネル毎に単独で動作可能である。このため、チャネル・キュー処理回路821_(i)のシングル・リード・キュー252_(i)にリードコマンドが格納された際、リードコマンドは、チャネル毎に単独で動作可能である。そこで、各チャネルでコマンドの発行の準備が完了したタイミング(Ch(i)CmdReady=”H”が入力されたタイミング)、換言すれば当該チャネルのライト処理が完了したタイミングで、シングル・リード・キュー252_(i)の優先順位が高いので、発行順決定回路851_(i)は、シングル・リードコマンドを発行するよう制御する。
(4)上記の(3)でシングル・リードコマンドが発行された場合において、当該発行を制御した発行順決定回路851_(i)にUserWriteGo信号が入力されている場合、発行順決定回路851_(i)は、Ch(i)UMWSRIssue信号を、特殊発行制御回路810に出力する。
(5)特殊発行制御回路810は、全チャネルのCh(i)UMWSRIssueの論理和を取っているので、少なくとも1つのチャネルからCh(i)UMWSGRIssueが入力された場合、全チャネルに対して、ユーザ・マルチ・キュー253_(i)の優先順位を高くする信号(UMWPriorityH=”H”)を出力する。
(6)そして、ユーザ・マルチ・キュー253_(i)の優先順位を高くする信号(UMWPriorityH=”H”)を受信した全チャネルで、ユーザ・マルチ・キュー253_0〜253_nの優先順位が高く設定される。この場合、各チャネルにリードコマンドが投入されたとして、リードコマンドは発行されない。そして、全チャネルの発行順決定回路851_0〜851_nは、ALLCmdReady=“H”を受信したタイミングで、全チャネルで同期した上で、ライトコマンドが発行される。
このように、第2の実施の形態では、全チャネルでライトコマンドの発行が可能な場合、任意のチャネルでリードコマンドの発行を一度だけ許可した後、全チャネルのユーザ・マルチ・キュー253_0〜253_nの優先順位を強制的に高く設定するよう制御することとした。これにより、ライトコマンドの発行が、第1の実施の形態と比べて迅速に発行することが可能となった。
ところで、通常のNAND型フラッシュメモリへのライト処理は、数msオーダーかかるとされていて、リード処理よりも処理時間を要する。したがって、ライト処理が待機されることは、システム全体のパフォーマンスに大きな影響を与える。ライトコマンドが発行可能になった段階で、優先的にライトコマンドを発行させることは、システム全体のパフォーマンスを向上させることが可能となる。
つまり、第2の実施の形態においては、リードコマンドが延々と継続して投入される場合でも、上述した制御でライトコマンドの発行を優先させ、ライトコマンドの発行が長時間待機されることを回避することで、第2の実施の形態にかかるデータ記憶装置1全体のパフォーマンスを向上できる。
以上説明したとおり、第1〜第2の実施形態によれば、データ記憶装置1のメモリコントローラチップ100は、全チャネルのライトコマンドの発行可能となるまでの間は、リードコマンドを優先的に発行することで、リードコマンドの発行が長時間待機されることを回避でき、リードコマンド発行のパフォーマンスを向上できる。
さらに、第1〜第2の実施形態によれば、データ記憶装置1のメモリコントローラチップ100は、マルチチャネルアクセスのライトコマンドの発行と、シングルチャネルアクセスのリードコマンドの発行と、が可能状態になった時点で、どちらを優先させるかをラウンドロビンで交互に設定することで、リードコマンドの発行が長時間待機されることを回避でき、リードコマンド発行のパフォーマンスを向上できる。同様にライトコマンドの発行が長時間待機されることも回避でき、ライトコマンドの発行のパフォーマンスを向上できる。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
1…データ記憶装置、20…NAND型フラッシュメモリ、100…コントローラ、101…CPU、102…DRAM、103…内部バス、104…フラッシュメモリコントローラ、105…データフロー制御回路、106…ホストインターフェース、107…コマンド・テーブル管理部、108…タイミング制御部、109_0〜109_n…フラッシュ制御部、110…メモリインターフェース、111…レスポンス・キュー、112…コマンド・キュー受領回路、113…コマンド処理回路、114…テーブル管理回路、121_0〜121_n…チャネル・キュー処理回路、122_0〜122_n…データ処理回路、123_0〜123_n…フラッシュコマンドシーケンサ、150…ブート用ROM、160…ホストデバイス、201…間同期状態確認回路、202…特殊発行制御回路、251_0〜251_n…発行順決定回路、252_0〜252_n…シングル・リード・キュー、253_0〜253_n…ユーザ・マルチ・キュー、254_0〜254_n…Aリード・キュー、255_0〜255_n…Bマルチ・キュー、256_0〜256_n…セレクタ、301…エラー訂正符号生成部

Claims (7)

  1. 複数のチャネルで記憶媒体に対する命令処理を行うメモリ制御装置において、
    前記記憶媒体に対するデータの書込命令を保持する、前記チャネル毎のキューと、
    前記複数のチャネルの前記キューに前記書込命令が保持され、前記複数のチャネルを同期させた上で前記書込命令の処理が可能になるまでの間に、前記記憶媒体に対するデータの読出命令を受け付けた場合に、当該読出命令によるデータの読み出し処理を、前記書込命令より優先して行わせ、前記複数のチャネルで前記書込命令の処理が可能になった場合に、前記複数のチャネルを同期させた上で前記書込命令によるデータの書き込み処理を行わせる第1の制御手段と、
    前記複数のチャネルで同期させて前記書込命令による処理を行う際、前記複数のチャネルで書き込まれる前記データに基づいて、前記複数のチャネルで書き込まれた前記データの誤りを検出および訂正するためのエラー訂正符号を生成する生成手段と、
    前記エラー訂正符号を、前記記憶媒体に書き込む処理を行う第2の制御手段と、
    前記複数のチャネルの各々の前記キューに前記書込命令が保持され、前記複数のチャネルを同期させた上で前記書込命令の処理が可能になると共に、任意のチャネルで前記記憶媒体に対するデータの読出命令を受け付けた場合に、前記書込命令と前記読出命令とのうちどちらを優先して処理するのかをラウンドロビンで決定する決定手段と、
    を備えることを特徴とするメモリ制御装置。
  2. 前記決定手段は、前記ラウンドロビンによる決定として、各チャネルで前記書込命令による処理を行った時、次に行う命令として読出命令を優先するよう設定し、各チャネルで前記読出命令による処理を行った時、次に行う命令として書込命令を優先するよう設定すること、
    を特徴とする請求項に記載のメモリ制御装置。
  3. 前記決定手段は、さらに、前記複数のチャネルのうちの任意の1つのチャネルで前記読出命令による処理を行った時、前記複数のチャネルの全てで前記書込命令による処理が可能な場合、前記複数のチャネルに対して前記書込命令を優先するよう設定すること、
    を特徴とする請求項に記載のメモリ制御装置。
  4. 複数のチャネル分の前記記憶媒体と、
    前記記憶媒体に対するデータの書込命令を保持する、前記チャネル毎のキューと、
    前記複数のチャネルの前記キューに前記書込命令が保持され、前記複数のチャネルを同期させた上で前記書込命令の処理が可能になるまでの間に、前記記憶媒体に対するデータの読出命令を受け付けた場合に、当該読出命令によるデータの読み出し処理を、前記書込命令より優先して行わせ、前記複数のチャネルで前記書込命令の処理が可能になった場合に、前記複数のチャネルを同期させた上で前記書込命令によるデータの書き込み処理を行わせる第1の制御手段と、
    前記複数のチャネルで同期させて前記書込命令による処理を行う際、前記複数のチャネルで書き込まれるデータに基づいて、前記複数のチャネルで書き込まれたデータの誤りを検出および訂正するためのエラー訂正符号を生成する生成手段と、
    前記エラー訂正符号を、前記記憶媒体に書き込む処理を行う第2の制御手段と、
    前記複数のチャネルの各々の前記キューに前記書込命令が保持され、前記複数のチャネルを同期させた上で前記書込命令の処理が可能になると共に、任意のチャネルで前記記憶媒体に対するデータの読出命令を受け付けた場合に、前記書込命令と前記読出命令とのうちどちらを優先して処理するのかをラウンドロビンで決定する決定手段と、
    を備えることを特徴とする記憶装置。
  5. 前記決定手段は、前記ラウンドロビンによる決定として、各チャネルで前記書込命令による処理を行った時、次に行う命令として読出命令を優先するよう設定し、各チャネルで前記読出命令による処理を行った時、次に行う命令として書込命令を優先するよう設定すること、
    を特徴とする請求項に記載の記憶装置。
  6. 前記決定手段は、さらに、前記複数のチャネルのうちの任意の1つのチャネルで前記読出命令による処理を行った時、前記複数のチャネルの全てで前記書込命令による処理が可能な場合、前記複数のチャネルに対して前記書込命令を優先するよう設定すること、
    を特徴とする請求項に記載の記憶装置。
  7. 複数のチャネルで前記記憶媒体に対する命令処理を行うメモリ制御装置で実行されるメモリ制御方法であって、
    前記複数のチャネルの各々のキューが、前記記憶媒体に対するデータの書込命令を保持する保持ステップと、
    第1の制御手段が、前記複数のチャネルの前記キューに前記書込命令が保持され、前記複数のチャネルを同期させた上で前記書込命令の処理が可能になるまでの間に、前記記憶媒体に対するデータの読出命令を受け付けた場合に、当該読出命令によるデータの読み出し処理を、前記書込命令より優先して行わせ、前記複数のチャネルで前記書込命令の処理が可能になった場合に、前記複数のチャネルを同期させた上で前記書込命令によるデータの書き込み処理を行わせる制御ステップと、
    生成手段が、前記複数のチャネルで同期させて前記書込命令による処理を行う際、前記複数のチャネルで書き込まれるデータに基づいて、前記複数のチャネルで書き込まれたデータの誤りを検出および訂正するためのエラー訂正符号を生成する生成ステップと、
    第2の制御手段が、前記エラー訂正符号を、前記記憶媒体に書き込む処理を行う書込ステップと、
    決定手段が、前記複数のチャネルの各々の前記キューに前記書込命令が保持され、前記複数のチャネルを同期させた上で前記書込命令の処理が可能になると共に、任意のチャネルで前記記憶媒体に対するデータの読出命令を受け付けた場合に、前記書込命令と前記読出命令とのうちどちらを優先して処理するのかをラウンドロビンで決定する決定ステップと、
    を含むことを特徴とするメモリ制御方法。
JP2010236549A 2010-10-21 2010-10-21 メモリ制御装置、記憶装置、及びメモリ制御方法 Expired - Fee Related JP4966404B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010236549A JP4966404B2 (ja) 2010-10-21 2010-10-21 メモリ制御装置、記憶装置、及びメモリ制御方法
US13/205,193 US9304952B2 (en) 2010-10-21 2011-08-08 Memory control device, storage device, and memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010236549A JP4966404B2 (ja) 2010-10-21 2010-10-21 メモリ制御装置、記憶装置、及びメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2012089010A JP2012089010A (ja) 2012-05-10
JP4966404B2 true JP4966404B2 (ja) 2012-07-04

Family

ID=45973954

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010236549A Expired - Fee Related JP4966404B2 (ja) 2010-10-21 2010-10-21 メモリ制御装置、記憶装置、及びメモリ制御方法

Country Status (2)

Country Link
US (1) US9304952B2 (ja)
JP (1) JP4966404B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5318076B2 (ja) * 2010-11-30 2013-10-16 株式会社東芝 複数のアクセスコマンドを並行して実行するメモリ装置及び同装置におけるメモリアクセス方法
KR20130084902A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 저장 장치, 저장 시스템 및 저장 장치에 대한 입출력 제어 방법
KR101919903B1 (ko) 2012-09-14 2018-11-19 삼성전자 주식회사 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
US9076558B2 (en) * 2012-11-01 2015-07-07 Nanya Technology Corporation Memory test system and memory test method
KR102101304B1 (ko) * 2013-03-15 2020-04-16 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US9235504B2 (en) 2013-07-16 2016-01-12 Kabushiki Kaisha Toshiba Prioritizing read-command issuance in a data storage apparatus
CN108173892B (zh) * 2016-12-07 2020-11-13 腾讯科技(深圳)有限公司 云端镜像操作方法和装置
US10275352B1 (en) * 2017-12-28 2019-04-30 Advanced Micro Devices, Inc. Supporting responses for memory types with non-uniform latencies on same channel
JP7417455B2 (ja) 2020-03-27 2024-01-18 キヤノン株式会社 電子機器及びその制御方法、プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2317721B (en) 1996-09-30 2001-09-12 Nokia Mobile Phones Ltd Memory device
JP3440032B2 (ja) 1999-07-15 2003-08-25 パナソニック コミュニケーションズ株式会社 メモリ制御装置,ファクシミリ装置および画像形成装置
JP4059473B2 (ja) * 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
US6938133B2 (en) * 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US7155568B2 (en) * 2001-09-29 2006-12-26 Hewlett-Packard Development Company, L.P. Transaction generator for initialization, rebuild, and verify of memory
US20070011396A1 (en) * 2005-06-30 2007-01-11 Utstarcom, Inc. Method and apparatus for bandwidth efficient and bounded latency packet buffering
US7661002B2 (en) 2005-08-04 2010-02-09 Dot Hill Systems Corporation Storage controller super capacitor dynamic voltage throttling
JP4932427B2 (ja) 2006-10-20 2012-05-16 株式会社日立製作所 記憶装置及び記憶方法
JP5345679B2 (ja) * 2008-05-13 2013-11-20 ラムバス・インコーポレーテッド メモリデバイス用の部分プログラムコマンド
JP5216463B2 (ja) * 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
JP2010108385A (ja) 2008-10-31 2010-05-13 Hitachi Ulsi Systems Co Ltd 記憶装置
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands

Also Published As

Publication number Publication date
US20120102262A1 (en) 2012-04-26
JP2012089010A (ja) 2012-05-10
US9304952B2 (en) 2016-04-05

Similar Documents

Publication Publication Date Title
JP4966404B2 (ja) メモリ制御装置、記憶装置、及びメモリ制御方法
JP6983313B2 (ja) 不揮発性メモリの書込みクレジットの管理
JP6163532B2 (ja) メモリシステムコントローラを含む装置
US8386699B2 (en) Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same
US9043541B2 (en) Storage control device, storage device, and control method for controlling storage control device
TWI454906B (zh) 資料讀取方法、快閃記憶體控制器與儲存系統
US11960749B2 (en) Data migration method, host, and solid state disk
US20110296084A1 (en) Data storage apparatus and method of writing data
US10108565B2 (en) Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements
KR20100116396A (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
JP2002288034A (ja) 半導体記憶装置とその読出し・書き込み方法
JP2012128815A (ja) メモリシステム
US10120580B2 (en) Method and design for dynamic management of descriptors for SGL operation
TW201923573A (zh) 記憶體控制器、系統及包括記憶體控制器的應用處理器
US10503438B1 (en) Memory sub-system supporting non-deterministic commands
WO2021035761A1 (zh) 一种固态硬盘混合读写的实现方法以及装置
US10896131B2 (en) System and method for configuring a storage device based on prediction of host source
JP4922442B2 (ja) バッファ管理装置、同装置を備えた記憶装置、及びバッファ管理方法
TWI698744B (zh) 資料儲存裝置及邏輯至物理位址映射表之更新方法
KR20120110450A (ko) 에러 정정 디코더 및 그것의 에러 정정 방법
JP2019204463A (ja) ストレージシステム及びその制御方法
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory
CN109542336B (zh) 存储设备及其操作方法
JP5982148B2 (ja) 半導体記憶装置
US11354063B2 (en) Memory system

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120306

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120330

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees