IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム及びリード方法 図1
  • 特開-メモリシステム及びリード方法 図2
  • 特開-メモリシステム及びリード方法 図3
  • 特開-メモリシステム及びリード方法 図4
  • 特開-メモリシステム及びリード方法 図5
  • 特開-メモリシステム及びリード方法 図6
  • 特開-メモリシステム及びリード方法 図7
  • 特開-メモリシステム及びリード方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024000283
(43)【公開日】2024-01-05
(54)【発明の名称】メモリシステム及びリード方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20231225BHJP
【FI】
G06F12/00 560A
G06F12/00 597U
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022098996
(22)【出願日】2022-06-20
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】天田 皇
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CA06
(57)【要約】
【課題】リード性能が向上するメモリシステム及びリード方法を提供すること。
【解決手段】実施形態に係るメモリシステムは、不揮発性メモリと、前記不揮発性メモリからデータを読み出すコントローラと、を具備する。前記コントローラは、入力アドレスから第1予測アドレスを求め、前記入力アドレスから前記第1予測アドレスとは異なる第2予測アドレスを求め、前記入力アドレスの次の入力アドレスと前記第1予測アドレス又は前記第2予測アドレスとの比較結果に基づいて、前記入力アドレス又は前記第1予測アドレス又は前記第2予測アドレスを用いて前記不揮発性メモリに対するリード要求を生成する。
【選択図】図4
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリからデータを読み出すコントローラと、
を具備し、
前記コントローラは、
入力アドレスから第1予測アドレスを求め、
前記入力アドレスから前記第1予測アドレスとは異なる第2予測アドレスを求め、
前記入力アドレスの次の入力アドレスと前記第1予測アドレス又は前記第2予測アドレスとの比較結果に基づいて、前記第1予測アドレス又は前記第2予測アドレスを用いて前記不揮発性メモリに対するリード要求を生成する、メモリシステム。
【請求項2】
前記コントローラは、
前記不揮発性メモリに対するライトの際の書き込み順に従ってデータを前記不揮発性メモリに書き込み、
前記入力アドレスと前記書き込み順に基づいて前記第1予測アドレスを求める、請求項1記載のメモリシステム。
【請求項3】
前記コントローラは、
書き込み順に従って変化する複数の第1ライトアドレスを用いて一部のデータを前記不揮発性メモリに書き込み、
前記書き込み順に従わずに変化する複数の第2ライトアドレスを用いて残りのデータを前記不揮発性メモリに書き込み、
前記複数の第2ライトアドレスを記憶し、
前記入力アドレスと前記書き込み順、又は前記入力アドレスと前記複数の第2ライトアドレスに基づいて前記第1予測アドレスを求める、請求項1記載のメモリシステム。
【請求項4】
前記コントローラは、
複数の前記入力アドレスを受け、
複数の前記入力アドレスの履歴を記憶し、
前記入力アドレスと前記履歴に基づいて前記第2予測アドレスを求める、請求項1記載のメモリシステム。
【請求項5】
前記コントローラは、
前記第1予測アドレスについて予測が当たった率を示す第1ヒット率を計算し、
前記第2予測アドレスについて予測が当たった率を示す第2ヒット率を計算し、
前記第1ヒット率と前記第2ヒット率とに基づいて、前記入力アドレス又は前記第1予測アドレス又は前記第2予測アドレスを用いてリード要求を生成する、請求項1記載のメモリシステム。
【請求項6】
前記コントローラは、
前記第1ヒット率と前記第2ヒット率のうちの高いヒット率が閾値以上であり、前記第1ヒット率が前記第2ヒット率より高い場合、前記第1予測アドレスを用いてリード要求を生成し、
前記第1ヒット率と前記第2ヒット率のうちの高いヒット率が閾値以上であり、前記第2ヒット率が前記第1ヒット率より高い場合、前記第2予測アドレスを用いてリード要求を生成し、
前記第1ヒット率と前記第2ヒット率のうちの高いヒット率が閾値未満である場合、前記入力アドレスを用いてリード要求を生成する、請求項5記載のメモリシステム。
【請求項7】
不揮発性メモリを具備するメモリシステムのリード方法であって、
入力アドレスから第1予測アドレスを求め、
前記入力アドレスから前記第1予測アドレスとは異なる第2予測アドレスを求め、
前記入力アドレスの次の入力アドレスと前記第1予測アドレス又は前記第2予測アドレスとの比較結果に基づいて、前記第1予測アドレス又は前記第2予測アドレスを用いて前記不揮発性メモリに対するリード要求を生成する、リード方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム及びリード方法に関する。
【背景技術】
【0002】
メモリシステムは、リード性能を向上するために、先行リードを実行する。メモリシステムは、リード要求を受信する前に次のリード要求の対象となるアドレスを予測し、予測したアドレスを用いて先行リードを実行する。
【0003】
予測したアドレスが、次のリード要求の対象となるアドレスと異なる場合、次のリード要求で指示されるアドレスでリードを実行する。このとき、予測したアドレスを用いた先行リードは無駄になる。従って、先行リードにおいて予測するアドレスの精度の向上が求められる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2021/0200448号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、リード性能が向上するメモリシステム及びリード方法を提供することである。
【課題を解決するための手段】
【0006】
実施形態に係るメモリシステムは、不揮発性メモリと、前記不揮発性メモリからデータを読み出すコントローラと、を具備する。前記コントローラは、入力アドレスから第1予測アドレスを求め、前記入力アドレスから前記第1予測アドレスとは異なる第2予測アドレスを求め、前記入力アドレスの次の入力アドレスと前記第1予測アドレス又は前記第2予測アドレスとの比較結果に基づいて、前記入力アドレス又は前記第1予測アドレス又は前記第2予測アドレスを用いて前記不揮発性メモリに対するリード要求を生成する。
【図面の簡単な説明】
【0007】
図1】実施形態に係るメモリシステムとホストとを含む情報処理システムの一例を説明するためのブロック図。
図2】実施形態に係るCPUの機能の一例を説明するための機能ブロック図。
図3】実施形態に係るリードアドレスメモリの一例を説明するための図。
図4】実施形態に係るアドレス予測部、リード要求生成部、及びリードデータ出力部の動作の一例を説明するためのブロック図。
図5】実施形態に係るコントローラの処理の一例を説明するためのフローチャート。
図6】通常リード動作を実行する際の実施形態に係るアドレス予測部とリードデータ出力部の一例を説明するためのブロック図。
図7】先行リード動作を実行する際の実施形態に係るアドレス予測部とリードデータ出力部の一例を説明するためのブロック図。
図8】先行リード動作が失敗した後通常リード動作を実行する際の実施形態に係るアドレス予測部とリードデータ出力部の一例を説明するためのブロック図。
【発明を実施するための形態】
【0008】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介した接続も含む場合もある。
【0009】
以下、図面を参照しながら本実施の形態について詳細に説明する。
【0010】
図1は、実施形態に係るメモリシステム4と、メモリシステム4と接続可能なホスト2とを含む情報処理システム1の一例を説明するためのブロック図である。メモリシステム4は、不揮発性記憶媒体にデータを書き込む、又は不揮発性記憶媒体からデータを読み出すように構成されたストレージデバイスである。メモリシステム4は、例えば、SSD(Solid State Drive)、UFSデバイス、メモリカードである。不揮発性記憶媒体は、例えば、NAND型フラッシュメモリ、NOR型フラッシュメモリ、MRAM(Magneto-resistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等である。以降、不揮発性記憶媒体としてNANDメモリ12を備えるメモリシステム4を説明する。
【0011】
ホスト2は、メモリシステム4にアクセスする外部機器としての情報処理装置である。ホスト2は、大量且つ多様なデータをメモリシステム4に保存するサーバ(ストレージサーバ)であってもよい。ホスト2は、パーソナルコンピュータであってもよい。メモリシステム4は、データセンター等のサーバに組み込まれるビジネスユース向けのSSDであってもよい。メモリシステム4はパーソナルコンピュータに組み込まれるパーソナルユース向けのSSDであってもよい。
【0012】
メモリシステム4は、コントローラ10、NANDメモリ12、DRAM(Dynamic Random Access Memory)14を備える。メモリシステム4は、ホスト2のメインストレージとして使用され得る。メモリシステム4は、ホスト2に内蔵されてもよいし、ホスト2の外部に設けられ、ホスト2にケーブルまたはネットワークを介して接続されてもよい。
【0013】
コントローラ10は、ホスト2から送信される要求に従って、NANDメモリ12にデータを書き込み、又は、NANDメモリ12からデータを読み出す。コントローラ10は、SoC(System on a Chip)のような回路によって構成され得る。
【0014】
DRAM14は、揮発性メモリの一例である。DRAM14は、例えばDDR3L(Double Data Rate 3 Low voltage)規格のDRAMである。DRAM14は、ホスト2からメモリシステム4に供給され、NANDメモリ12に書き込まれている途中あるいは未書き込みのデータや、NANDメモリ12から読み出され、ホスト2に転送中あるいは未転送のデータを記憶するバッファメモリとして動作する。DRAM14は、ホスト2が指定するアドレスに関する論理アドレスと、NANDメモリ12の物理アドレスとの対応付けを定義するアドレス変換テーブルを記憶するエリアと、ホスト2から受信した要求を記憶するエリアと、NANDメモリ12に書き込まれている途中あるいは未書き込みのデータを記憶するエリア(ライトバッファと称される)と、NANDメモリ12から読み出され、ホスト2に転送中のデータあるいは未転送のデータを記憶するエリア(リードバッファと称される)とを備える。
【0015】
揮発性メモリとしてのDRAM14は、コントローラ10の外部に設けるのではなく、コントローラ10の内部に設けてもよい。なお、揮発性メモリとしては、DRAM14の代わりに、より高速アクセスが可能なSRAM(Static Random Access Memory)を用いてもよい。
【0016】
NANDメモリ12は、複数のNANDチップを含んでいる。各NANDチップは、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。メモリセルアレイは、複数のメモリセルが平面状に配置された二次元構造のメモリセルアレイであってもよいし、複数のメモリセルが立体状に配置された三次元構造のメモリセルアレイであってもよい。各NANDチップのメモリセルアレイは、複数のブロックを含んでいる。各ブロックは、共通のワード線に接続される。
【0017】
コントローラ10は、CPU20、ホストインタフェース(ホストI/F)回路22、NANDインターフェース(NAND I/F)回路24、DRAMインターフェース(DRAM I/F)回路26を備える。CPU20、ホストI/F回路22、NAND I/F回路24、DRAM I/F回路26はバスライン28に接続される。
【0018】
CPU20は、例えばNANDメモリ12に記憶されているファームウェアを実行し、種々の機能を実現する。種々の機能は、例えばホスト2から送信されるホスト要求の実行である。ホスト要求は、例えば、ホストリード要求、ホストライト要求を含む。
【0019】
ホストI/F回路22はホスト2に電気的に接続され、NAND I/F回路24はNANDメモリ12に電気的に接続され、DRAM I/F回路26はDRAM14に電気的に接続される。
【0020】
ホストI/F回路22は、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)、ATA(AT Attachment)、SATA(Serial ATA)、PCIe(PCI Express)TM、EthernetTM、Fibre channelTM、NVMe(NVM Express)TM、USB(Universal Serial Bus)TM、UART(Universal Asynchronous Receiver/Transmitter)TM等の規格に準拠する。
【0021】
NAND I/F回路24は、Toggle DDR、ONFI(Open NAND Flash Interface)等の規格に準拠する。
【0022】
図2は、CPU20の機能の一例を説明するための機能ブロック図である。CPU20は、アドレス予測部32、リード要求生成部34、及びリードデータ出力部36を備える。アドレス予測部32、リード要求生成部34、及びリードデータ出力部36は、CPU20が、NANDメモリ12に記憶されているファームウェアを実行することにより、実現される。
【0023】
DRAM14は、リードアドレスメモリ40、ライトアドレスメモリ42、及びリードバッファ44を備える。リードアドレスメモリ40とライトアドレスメモリ42は、アドレス予測部32に接続される。リードアドレスメモリ40は、リード要求生成部34に接続される。リードバッファ44は、リードデータ出力部36に接続される。
【0024】
リードアドレスメモリ40は、リード要求生成部34から送信される複数のリードアドレスを記憶する。
【0025】
ライトアドレスメモリ42は、NANDメモリ12の複数のNANDチップに対するライトデータの書き込み順を表すライト順データを記憶する。メモリシステム4は、ライト時に、ライトデータが複数のNANDチップに対して特定の順に従って書き込まれるように、ライト順データを決定する。ライト順データは、メモリシステム4の設計仕様で決まる。例えば、ライト順データは、チップ1、チップ2、チップ3、…、チップNの昇順、チップN、チップ(N-1)、…、チップ2、チップ1の降順、またはチップ1、チップ3、チップ5、…、チップ2、チップ4、…、チップ(N-2)、チップNのような不連続な順を表す。
【0026】
リードアドレスメモリ40に記憶されているリードアドレスとライトアドレスメモリ42に記憶されているライト順データは、メモリシステム4の電源断時、NANDメモリ12に書き込まれることにより、不揮発化される。NANDメモリ12に書き込まれたリードアドレスとライト順データは、メモリシステム4の電源投入後に、DRAM14に書き込まれる。
【0027】
ホスト2がホストリード要求をメモリシステム4に送信し、ホストI/F回路22がホストリード要求を受信すると、CPU20は、アドレス変換テーブルを用いて、ホストリード要求で指定されるアドレスに関する論理アドレスを物理アドレスに変換する。物理アドレス(以降、入力アドレスと称される)はアドレス予測部32、リード要求生成部34、及びリードデータ出力部36に入力される。論理アドレスの例は、ホスト2が指定するアドレスについて連続する複数のアドレスを単位とするアドレスである。物理アドレスは、NANDメモリ12の物理的な記憶位置を表す。
【0028】
アドレス予測部32は、リードアドレスメモリ40に記憶されているリードアドレスとライトアドレスメモリ42に記憶されているライト順データに基づく2つの予測方法に従って入力アドレスから2つの予測アドレスを決定する。
【0029】
アドレス予測部32は、入力アドレスと予測アドレスを用いて、予測アドレスについて予測が当たったか否かを表すヒット率を算出する。アドレス予測部32は、予測アドレスとヒット率をリード要求生成部34とリードデータ出力部36に送信する。
【0030】
リード要求生成部34は、入力アドレス、予測アドレス、及びヒット率に基づいてリード要求を生成する。リード要求生成部34は、生成したリード要求をNAND I/F回路24に送信するとともに、生成したリード要求に関するリードアドレスをリードアドレスメモリ40に送信する。リードアドレスメモリ40は、NANDメモリ12に送信された複数のリード要求に関する複数のリードアドレスを、送信された順に記憶する。
【0031】
リードアドレスメモリ40の記憶容量は予め決まっており、固定である。リードアドレスメモリ40の空き記憶容量が0になると、最も古いリードアドレスに新しいリードアドレスが上書きされる。
【0032】
NAND I/F回路24は、リード要求をNANDメモリ12に送信する。NAND I/F回路24は、リード要求に応じたNANDメモリ12からのリードデータを受信する。NANDメモリ12からのリードデータは、リードバッファ44に書き込まれる。
【0033】
リードデータ出力部36は、リードバッファ44からリードデータを読み出し、リードデータをホストI/F回路22へ送信する。ホストI/F回路22はリードデータをホスト2へ送信する。
【0034】
図3は、リードアドレスメモリ40の一例を説明するための図である。NANDメモリ12の物理アドレスは、NANDチップを識別するチップ番号と、ブロックを識別するブロック番号と、ワード線を識別するワード線アドレスを含む。リードアドレスも、チップ番号、ブロック番号、及びワード線アドレスを含んでもよい。
【0035】
リードアドレスメモリ40は、チップ番号と、ワード線アドレスを含むリードアドレスを記憶する。ワード線の数はブロックの数に比べて非常に多い。そのため、リードアドレスの予測に際して、ワード線アドレスは重要であるが、ブロック番号はそれ程重要ではない。そのため、記憶するデータのサイズを小さくするために、リードアドレスメモリ40は、ブロック番号を記憶しない。
【0036】
アドレス予測部32は、チップ番号と、ワード線アドレスの変化パターンに応じて、入力アドレスから予測アドレスを決定する。アドレス予測部32は、予測アドレスの決定に際して、ブロック番号は1つ前のリード要求時のブロック番号と同じであると仮定する。
【0037】
さらに、記憶容量を節約するために、リードアドレスメモリ40は、ワード線アドレスそのものを記憶するのではなく、ワード線アドレスを1つ前のリード要求に関するワード線アドレスとの差分として記憶する。この場合、例えば、リードアドレスメモリ40の最初のエントリのワード線アドレスそのものを記憶しておけばよい。
【0038】
図4は、アドレス予測部32、リード要求生成部34、及びリードデータ出力部36の動作の一例を説明するためのブロック図である。
【0039】
アドレス予測部32は、遅延器50、第1予測アドレス決定部52a、第2予測アドレス決定部52b、第1セレクタ54、第1ヒット率算出部56a、第2ヒット率算出部56b、遅延器58a、58b、及びヒット率比較部60を備える。
【0040】
遅延器50は、1つのリード要求に関する入力アドレスを記憶する。1つのリード要求に関する入力アドレスが遅延器50に記憶されている時に次のリード要求に関する入力アドレスが遅延器50に入力されると、遅延器50は、1つのリード要求に関する入力アドレスに替えて次のリード要求に関する入力アドレスを記憶する。n番目(nは正整数)のリード要求に関する入力アドレスは、第1ヒット率算出部56aと第2ヒット率算出部56bに入力される。n番目のリード要求に関する入力アドレスが遅延器50に入力されると、(n-1)番目のリード要求に関する入力アドレスが第1予測アドレス決定部52aと第2予測アドレス決定部52bに入力される。
【0041】
第1予測アドレス決定部52aは、ライトアドレスメモリ42に接続される。第1予測アドレス決定部52aは、n番目の入力アドレスとライト順データに基づいて(n+1)番目のリード要求に基づく第1予測アドレスを決定する。例えば、ライト順データがチップ1、チップ2、チップ3、…、チップNの昇順でデータを異なるチップにライトすることを示し、入力アドレスがチップ1のワード線アドレス1を示す場合、第1予測アドレスはチップ2のワード線アドレス1を示す。
【0042】
第1予測アドレス決定部52aは、第1予測アドレスを第1セレクタ54の第1入力端子54a及び第1ヒット率算出部56aへ送信する。
【0043】
第2予測アドレス決定部52bは、リードアドレスメモリ40に接続される。第2予測アドレス決定部52bは、リードアドレスの変化パターンに応じて、リード動作中にアドレスを動的に予測する。例えば、第2予測アドレス決定部52bは、直近の複数回(例えば、4回)のリード要求に関する複数個の入力アドレスを記憶するメモリを含む。第2予測アドレス決定部52bは、(n-3)番目のリード要求に関する入力アドレス、(n-2)番目のリード要求に関する入力アドレス、(n-1)番目のリード要求に関する入力アドレス、n番目のリード要求に関する入力アドレスの変化パターンに基づいて(n+1)番目のリード要求に基づく第2予測アドレスを決定する。例えば、第2予測アドレス決定部52bは、(n-3)番目乃至n番目のリード要求に関する4個の入力アドレスの変化パターンを、リードアドレスメモリ40に記憶され、4個のリードアドレスを含むアドレスグループと順次比較する。例えば、図3に示すように、第2予測アドレス決定部52bは、nがインデックス=12である場合、インデックス=9~12の4個の入力アドレスの変化パターンと一致する変化パターンを有するアドレスグループ102が、リードアドレスメモリ40に存在するかを判定する。存在する場合、第2予測アドレス決定部52bは、アドレスグループ102に後続する、インデックス=13のリードアドレス104を第2予測アドレスとする。
【0044】
第2予測アドレス決定部52bは、第2予測アドレスを第1セレクタ54の第2入力端子54b及び第2ヒット率算出部56bへ送信する。
【0045】
第1ヒット率算出部56aは、入力アドレスと第1予測アドレスを用いて、第1予測アドレスの第1ヒット率r1を算出する。第1ヒット率算出部56aは、入力アドレスと第1予測アドレスを比較して、両者が一致する(予測が当たった)か否かを判定する。第1ヒット率算出部56aは、直近の複数回(例えば、4回)の判定結果を記憶するメモリを含む。第1ヒット率r1は、複数の判定結果の平均値であり、複数の判定結果に対する第1予測アドレスが当たった割合を示す。第1ヒット率r1は(予測が当たったリード要求数)÷(総リード要求数)で計算できる。しかし、計算する代わりに、リード予測が当たったリード要求が何回連続するかによりヒット率を求めてもよい。例えば、入力アドレスと第1予測アドレスが一致する場合、判定結果を100%とし、入力アドレスと第1予測アドレスが一致しない場合、判定結果を0%とし、連続する4回のリード要求の予測が当たった場合、第1ヒット率を100%としてもよい。
【0046】
第1ヒット率r1は、遅延器58aを介してヒット率比較部60及びリードデータ出力部36に入力される。遅延器58aは、1つのリード要求に基づく第1予測アドレスの第1ヒット率r1を記憶する。1つのリード要求に基づく第1予測アドレスの第1ヒット率r1が遅延器58aに記憶されている時に次のリード要求に基づく第1予測アドレスの第1ヒット率r1が遅延器58aに入力されると、遅延器58aは、1つのリード要求に基づく第1予測アドレスの第1ヒット率r1に替えて次のリード要求に基づく第1予測アドレスの第1ヒット率r1を記憶する。
【0047】
第2ヒット率算出部56bは、入力アドレスと第2予測アドレスを用いて、第2予測アドレスの第2ヒット率r2を算出する。第2ヒット率算出部56bは、入力アドレスと第2予測アドレスを比較して、両者が一致する(予測が当たった)か否かを判定する。第2ヒット率算出部56bは、直近の複数回(例えば、4回)の判定結果を記憶するメモリを含む。第2ヒット率r2は、複数の判定結果の平均値であり、複数の判定結果に対する第2予測アドレスが当たった割合を示す。第2ヒット率r2は(予測が当たったリード要求数)÷(総リード要求数)で計算できる。しかし、計算する代わりに、リード予測が当たったリード要求が何回連続するかによりヒット率を求めてもよい。例えば、入力アドレスと第2予測アドレスが一致する場合、判定結果を100%とし、入力アドレスと第2予測アドレスが一致しない場合、判定結果を0%とし、連続する4回のリード要求の予測が当たった場合、第2ヒット率を100%としてもよい。
【0048】
第2ヒット率r2は、遅延器58bを介してヒット率比較部60及びリードデータ出力部36に入力される。遅延器58bは、1つのリード要求に基づく第2予測アドレスの第2ヒット率r2を記憶する。1つのリード要求に基づく第2予測アドレスの第2ヒット率r2が遅延器58bに記憶されている時に次のリード要求に基づく第2予測アドレスの第2ヒット率r2が遅延器58bに入力されると、遅延器58bは、1つのリード要求に基づく第2予測アドレスの第2ヒット率r2に替えて次のリード要求に基づく第2予測アドレスの第2ヒット率r2を記憶する。
【0049】
ヒット率比較部60は、第1ヒット率r1と第2ヒット率r2とを比較する。ヒット率比較部60は、比較結果に対応する選択信号を第1セレクタ54に出力する。ヒット率比較部60は、第1ヒット率r1が第2ヒット率r2より高い場合、第1セレクタ54に第1入力端子54aを選択させる。ヒット率比較部60は、第1ヒット率r1が第2ヒット率r2より高くない場合、第1セレクタ54に第2入力端子54bを選択させる。第1セレクタ54は、入力された選択信号に応じた出力信号を出力する。第1セレクタ54の出力信号はリード要求生成部34とリードデータ出力部36に送信される。
【0050】
リード要求生成部34は、第1リード要求生成部34aと第2リード要求生成部34bを備える。
【0051】
リードバッファ44は、第1リードバッファ44aと第2リードバッファ44bを備える。
【0052】
入力アドレスは、第1リード要求生成部34aに更に入力される。第1リード要求生成部34aは、入力アドレスを用いて第1リード要求を生成し、リードデータ出力部36からの信号に基づいて第1リード要求をNAND I/F回路24に送信する。第1リード要求は、入力アドレスを受信してから発行される。第1リード要求に応じたリードは、入力アドレスを受信してから実行され、通常リードとも称される。
【0053】
NAND I/F回路24は、第1リード要求をNANDメモリ12に送信する。第1リード要求に応じてNANDメモリ12から読み出されたリードデータは、第1リードバッファ44aに書き込まれる。
【0054】
第1セレクタ54から出力される予測アドレス(第1予測アドレスまたは第2予測アドレス)は、第2リード要求生成部34bに入力される。第2リード要求生成部34bは、予測アドレスを用いて第2リード要求を生成し、リードデータ出力部36からの信号に基づいて第2リード要求をNAND I/F回路24に送信する。第2リード要求は、入力アドレスを受信する前に発行される。第2リード要求に応じたリードは、入力アドレスを受信する前に実行され、先行リードとも称される。
【0055】
NAND I/F回路24は、第2リード要求をNANDメモリ12に送信する。第2リード要求に応じてNANDメモリ12から読み出されたリードデータは、第2リードバッファ44bに書き込まれる。
【0056】
リードデータ出力部36は、第2セレクタ70、第3セレクタ72、アドレス比較部74、及び先行リード可否判定部76を備える。第1リードバッファ44aに記憶されているリードデータは、第2セレクタ70の第1入力端子70aと第3セレクタ72の第1入力端子72aに送信される。第2リードバッファ44bに記憶されているリードデータは、第2セレクタ70の第2入力端子70bに送信される。
【0057】
入力アドレスと、第1セレクタ54から出力される第1予測アドレス又は第2予測アドレスとは、アドレス比較部74に入力される。アドレス比較部74は、入力アドレスと第1予測アドレス又は第2予測アドレスが等しいか否かを判定する。アドレス比較部74は、判定結果を表す比較信号を第2セレクタ70と第1リード要求生成部34aに送信する。
【0058】
第2セレクタ70は、比較信号に応じて第1入力端子70aと第2入力端子70bを選択する。第2セレクタ70は、入力アドレスと第1予測アドレス又は第2予測アドレスが等しいことを示す比較信号に応じて、第2入力端子70bを選択する。第2セレクタ70は、入力アドレスと第1予測アドレス又は第2予測アドレスが等しくないことを示す比較信号に応じて、第1入力端子70aを選択する。
【0059】
遅延器58aから出力される第1ヒット率r1と遅延器58bから出力される第2ヒット率r2は、先行リード可否判定部76に入力される。先行リード閾値thも先行リード可否判定部76に入力される。先行リード可否判定部76は、第1ヒット率r1と第2ヒット率r2との最大値(すなわち、大きい方の値)が先行リード閾値th以上であるか否かを判定することにより、先行リードが可であるか否かを判定する。先行リード可否判定部76は、判定結果を表す可否信号を第3セレクタ72と第1リード要求生成部34aと第2リード要求生成部34bに送信する。
【0060】
第3セレクタ72は、可否信号に応じて第1入力端子72aと第2入力端子72bを選択する。第3セレクタ72は、第1ヒット率r1と第2ヒット率r2の大きい方が先行リード閾値th以上である(先行リードが可である)ことを示す可否信号に応じて、第2入力端子72bを選択する。第3セレクタ72は、第1ヒット率r1と第2ヒット率r2の大きい方が先行リード閾値th未満である(先行リードが不可である)ことを示す可否信号に応じて、第1入力端子72aを選択する。
【0061】
第1リード要求生成部34aは、可否信号が先行リードが不可であることを示す場合、又は可否信号が先行リードが可であることを示し、予測アドレスが入力アドレスと一致しない場合、第1リード要求をNAND I/F回路24に送信する。第2リード要求生成部34bは、可否信号が先行リードが可であることを示す場合、第2リード要求をNAND I/F回路24に送信する。
【0062】
図5は、コントローラ10の処理の一例を説明するためのフローチャートである。
【0063】
CPU20が、入力アドレスをアドレス予測部32、リード要求生成部34、及びリードデータ出力部36に送信する前に、図5の処理は開始する。入力アドレスは、(n+1)番目のリード要求に関する入力アドレスであるとする。
【0064】
第1予測アドレス決定部52aは、遅延器50に記憶されているn番目のリード要求に関する入力アドレスと、ライトアドレスメモリ42に記憶されているライト順データが表す書き込み順とに基づいて、(n+1)番目のリード要求に関するリードアドレス(第1予測アドレス)を決定する(S104)。
【0065】
第2予測アドレス決定部52bは、n番目のリード要求に関する入力アドレスとリードアドレスメモリ40に記憶されているリードアドレスとに基づいて、(n+1)番目のリード要求に基づくリードアドレス(第2予測アドレス)を決定する(S106)。
【0066】
第1ヒット率算出部56aは、(n+1)番目のリード要求の受信時にその入力アドレスと、n番目のリード要求に基づく第1予測アドレスを用いて第1ヒット率r1を算出している。同様に、第2ヒット率算出部56bは、(n+1)番目のリード要求の受信時にその入力アドレスと、n番目のリード要求に基づく第2予測アドレスを用いて第2ヒット率r2を算出している。
【0067】
先行リード可否判定部76は、遅延器58aから送信されたヒット率r1と遅延器58bから送信されたヒット率r2との最大値を先行リード閾値thと比較して、先行リードの可否を判定する(S108)。具体的には、先行リード可否判定部76は、第1ヒット率r1と第2ヒット率r2との最大値が先行リード閾値thより大きいか否かを判定する。先行リード可否判定部76は、判定結果を表す可否信号を第3セレクタ72に送信する。
【0068】
第1ヒット率r1と第2ヒット率r2との最大値が先行リード閾値thより大きい場合(S108のYES)、第3セレクタ72は、第2入力端子72bを選択する(S112)。第1ヒット率r1と第2ヒット率r2との最大値が先行リード閾値thより大きくない場合(S108のNO)、第3セレクタ72は、第1入力端子72aを選択する(S114)。
【0069】
S112の処理後、ヒット率比較部60は、第1ヒット率r1が第2ヒット率r2より大きいか否かを判定する(S116)。判定結果を表す判定信号は、第1セレクタ54に入力される。第1セレクタ54は、判定信号に基づき、入力端子を選択する。
【0070】
第1ヒット率r1が第2ヒット率r2より大きい場合(S116のYES)、第1セレクタ54は第1入力端子54aを選択する(S118)。第1ヒット率r1が第2ヒット率r2より大きくない場合(S116のNO)、第1セレクタ54は第2入力端子54bを選択する(S122)。この結果、第1予測アドレスまたは第2予測アドレスが第1セレクタ54を介して第2リード要求生成部34bとアドレス比較部74に入力される。
【0071】
S118またはS122の処理の後、第2リード要求生成部34bは、第1予測アドレスまたは第2予測アドレスを用いて第2リード要求を生成する(S124)。
【0072】
第2リード要求はNAND I/F回路24へ送信される。NAND I/F回路24は、第2リード要求をNANDメモリ12へ送信する。NANDメモリ12は、第2リード要求に基づく予測アドレスに基づいて先行リードを実行する。先行リードにより読み出されたリードデータがNANDメモリ12からNAND I/F回路24に送信される。リードデータは、第2リードバッファ44bに書き込まれる。
【0073】
アドレス予測部32に(n+1)番目の入力アドレスが入力されると、アドレス比較部74は、先行リードで用いた(n+1)番目の予測アドレスが(n+1)番目の入力アドレスと等しいか否かを判定する(S126)。予測アドレスが入力アドレスと等しい場合、先行リードは成功であると判定できる。予測アドレスが入力アドレスと等しくない場合、先行リードは失敗であると判定できる。先行リードは失敗であると判定される場合、入力アドレスを用いる通常リードを実行する必要がある。
【0074】
アドレス比較部74は、判定信号をリード要求生成部34aと第2セレクタ70に送信する。第2セレクタ70は、判定信号に基づき、入力端子を選択する。
【0075】
(n+1)番目の予測アドレスが(n+1)番目の入力アドレスと等しい場合(S126のYES)、第2セレクタ70は、第2入力端子70bを選択する(S128)。(n+1)番目の予測アドレスが(n+1)番目の入力アドレスと等しくない場合(S126のNO)、第2セレクタ70は、第1入力端子70aを選択する(S132)。
【0076】
S128の処理の後、リードデータ出力部36は、第2リードバッファ44bからリードデータを読み出し、リードデータを第2セレクタ70の第2入力端子70bと第3セレクタ72の第2入力端子72bを介して出力する(S134)。リードデータ出力部36から出力されたリードデータは、ホストI/F回路22を介してホスト2に送信される。
【0077】
第1ヒット率算出部56aは、(n+1)番目の入力アドレスと(n+1)番目の第1予測アドレスに基づいて第1ヒット率r1を算出(更新)する(S136)。第2ヒット率算出部56bは、(n+1)番目の入力アドレスと(n+1)番目の第2予測アドレスに基づいて第2ヒット率r2を算出(更新)する(S138)。これにより、1個の入力アドレスに対する処理は終了する。
【0078】
S114又はS132の処理の後、第1リード要求生成部34aは、入力アドレスを用いて第1リード要求を生成する(S142)。
【0079】
第1リード要求はNAND I/F回路24へ送信される。NAND I/F回路24は、第1リード要求をNANDメモリ12へ送信する。NANDメモリ12は、第1リード要求に関する入力アドレスに基づいて通常リードを実行する。通常リードにより読み出されたリードデータがNANDメモリ12からNAND I/F回路24に送信される。リードデータは、第1リードバッファ44aに書き込まれる。
【0080】
リードデータ出力部36は、第1リードバッファ44aからリードデータを読み出し、リードデータを第3セレクタ72の第1入力端子72aを介して出力する(S144)。リードデータ出力部36から出力されたリードデータは、ホストI/F回路22を介してホスト2に送信される。
【0081】
S144の処理の後、S136の処理が実行される。
【0082】
図6は、先行リード動作を実行しないで通常リード動作を実行する際のアドレス予測部32とリードデータ出力部36の一例を説明するためのブロック図である。図6は、図5のフローチャートのS114、S142、S144の処理の実行後のアドレス予測部32とリードデータ出力部36の状態を示す。すなわち、先行リード可否判定部76は、先行リード不可を表す可否信号を出力する。第3セレクタ72は、この可否信号に応じて第1入力端子72aを選択する。第1リード要求生成部34aは、この可否信号に応じて第1リード要求を生成する。第1リード要求に応じてNANDメモリ12から読み出されたリードデータが第1リードバッファ44aに書き込まれる。第1リードバッファ44aから読み出されたリードデータが、第3セレクタ72(第1入力端子72a)を介して出力される。
【0083】
図7は、先行リード動作を実行する際のアドレス予測部32とリードデータ出力部36の一例を説明するためのブロック図である。図7は、図5のフローチャートのS112、S118(またはS122)、S124、S128、S134の処理の実行後のアドレス予測部32とリードデータ出力部36の状態を示す。すなわち、先行リード可否判定部76は、先行リード可を表す可否信号を出力する。第3セレクタ72は、この可否信号に応じて第2入力端子72bを選択する。第2リード要求生成部34bは、この可否信号に応じて第2リード要求を生成する。第2リード要求に応じてNANDメモリ12から読み出されたリードデータが第2リードバッファ44bに書き込まれる。アドレス比較部74は、入力アドレスと予測アドレスが等しいことを表す比較信号を出力する。第2セレクタ70は、この比較信号に応じて第2入力端子70bを選択する。第2リードバッファ44bから読み出されたリードデータが、第2セレクタ70(第2入力端子70b)と第3セレクタ72(第2入力端子72b)を介して出力される。
【0084】
図8は、先行リード動作が失敗した後通常リードを実行する際のアドレス予測部32とリードデータ出力部36の一例を説明するためのブロック図である。図8は、図5のフローチャートのS112、S118(またはS122)、S124、S132、S142、S144の処理の実行後のアドレス予測部32とリードデータ出力部36の状態を示す。すなわち、先行リード可否判定部76は、先行リード可を表す可否信号を出力する。第3セレクタ72は、この可否信号に応じて第2入力端子72bを選択する。アドレス比較部74は、入力アドレスと予測アドレスが等しくないことを表す比較信号を出力する。第2セレクタ70は、この比較信号に応じて第1入力端子70aを選択する。第1リード要求生成部34aは、この比較信号に応じて第1リード要求を生成する。第1リード要求に応じてNANDメモリ12から読み出されたリードデータが第1リードバッファ44aに書き込まれる。第1リードバッファ44aから読み出されたリードデータが、第2セレクタ70(第1入力端子70a)と第3セレクタ72(第2入力端子72b)を介して出力される。
【0085】
実施形態によれば、入力アドレスとライト順データに基づき第1予測アドレスが決定され、入力アドレスと直近の複数回のリード要求に関するリードアドレスに基づき第2予測アドレスが決定される。第1予測アドレスがどの程度入力アドレスに一致するかを示す第1ヒット率が算出される。第2予測アドレスがどの程度入力アドレスに一致するかを示す第2ヒット率が算出される。
【0086】
第1ヒット率と第2ヒット率の最大値が閾値以上の場合、入力アドレスを受信する前に先行リード動作が実行される。先行リード要求はヒット率が高い予測アドレスを用いて生成される。このため、リードアドレスがライトデータの書き込み順と異なる順で変化するリード時は、リードアドレスを用いて予測された第2予測アドレスを用いて先行リードをするので、先行リードが成功する可能性が高い。このため、リード性能が向上する。
【0087】
先行リードが失敗した場合は、通常リード動作が実行されるので、入力アドレスで指定されたデータを読み出すことができる。
【0088】
第1ヒット率と第2ヒット率の最大値が閾値未満の場合、先行リードが失敗する可能性が高く、先行リード動作は実行されず、通常リード動作が実行される。このため、無駄な先行リード動作が実行される可能性が低く、リード性能が向上する。
【0089】
変形例を説明する。
予測するアドレスの数は2つに限らず、3つ以上でもよい。例えば、ライト動作の際、一部のライトデータはライト順データに従って書き込まれるが、残りのライトアドレスはライト順データに従わずに書き込まれる場合がある。この場合、DRAM14に第2ライトアドレスメモリが備えられる。アドレス予測部32に、第1予測アドレス決定部52aと第2予測アドレス決定部52bと並列に第3予測アドレス決定部が備えられ、第1ヒット率算出部56aと第2ヒット率算出部56bと並列に第3ヒット率算出部が備えられ、遅延器58a、58bと並列に第3の遅延器が備えられる。ライト順データに従わずに書き込まれたライトデータの第2ライトアドレスが第2ライトアドレスメモリに記憶される。第3予測アドレス決定部は、直近の複数回のリード要求に関する複数個の入力アドレスの変化パターンを複数個の第2ライトアドレスを含むライトアドレスグループと比較して、第3予測アドレスを決定してもよい。
【0090】
アドレス予測部32に入力されるアドレスは物理アドレスとして説明したが、論理アドレスで予測してもよい。
【0091】
第2予測アドレス決定部52bが第2予測アドレスを決定する際に参照するリードアドレスは、リードアドレスメモリ40に記憶されている。予測の精度を上げるには、多数のリードアドレスをリードアドレスメモリ40に記憶する必要がある。第2予測アドレス決定部52bを時系列データの学習アルゴリズムを利用して第2予測アドレスを決定するように構成すると、リードアドレスメモリ40に記憶されるリードアドレスの数を実施形態より減らすことができる。あるいは、同じ数のリードアドレスを記憶する場合、変形例は実施形態よりも第2予測アドレスのヒット率が向上する。
【0092】
第1ヒット率r1と第2ヒット率r2をある時間の単純平均により求める例を説明したが、複数時間の平均値の平均値により求める例、算術平均により求める例、再帰平均により求める例を採用してもよい。
【0093】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0094】
2…ホスト、4…メモリシステム、10…コントローラ、12…NANDメモリ、14…DRAM、20…CPU、32…アドレス予測部、34…リード要求生成部、36…リードデータ出力部、40…リードアドレスメモリ、42…ライトアドレスメモリ、44…リードバッファ
図1
図2
図3
図4
図5
図6
図7
図8