説明

メモリシステム

【課題】 DRAMを用いずに、データの高速な読み出しが可能なメモリシステムを提供する。
【解決手段】 複数の不揮発性メモリ11は、複数のチャネルのそれぞれに接続され、複数のバンクを有している。バッファ17は、複数の不揮発性メモリから読み出されたデータを保持し、同時に読み出し可能なデータサイズのほぼ2倍の容量を有するスタティックメモリにより構成されている。複数のチャネル制御部16-0〜16-7は、複数の不揮発性メモリからデータを読み出すための読み出し要求を複数のチャネル毎に保持するキューを有している。バッファ制御部15は、読み出し要求を複数のチャネル制御部のいずれかのキューに供給するとともに、バッファ内に不揮発性メモリから読み出されたデータを保持するための領域を確保する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性半導体記憶装置を用いたメモリシステム、例えばSSD(Solid-State Drive)に関する。
【背景技術】
【0002】
SSDは、複数のバンクを有し、各バンクは、例えばNANDフラッシュメモリにより構成されている。各バンクは、それぞれチャネルに接続され、複数のバンク、及び複数のチャネルを用いて各バンクから並列にデータを読み出したり、書き込んだりすることにより、必要なバンド幅を確保している。
【0003】
ところで、NANDフラッシュメモリは、ページ単位にデータの読み出し、及び書き込みが行われる。低速なNANDフラッシュメモリが高速なホストインターフェースと効率よくデータを転送可能とするため、ダイナミックメモリ(DRAM)が用いられている。しかし、DRAMによる作業領域の容量は、数百Mバイトを必要とする。このため、SSDの製造コストを低減することが困難となっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−20883号公報
【特許文献2】特開2010−527059号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本実施形態は、DRAMを用いずに、データの高速な読み出しが可能なメモリシステムを提供する。
【課題を解決するための手段】
【0006】
本実施形態に係るメモリシステムは、複数のチャネルのそれぞれに接続され、複数のバンクを有する複数の不揮発性メモリと、前記複数の不揮発性メモリから読み出されたデータを保持し、同時に読み出し可能なデータサイズのほぼ2倍の容量を有するスタティックメモリにより構成されたバッファと、前記複数の不揮発性メモリからデータを読み出すための読み出し要求を前記複数のチャネル毎に保持するキューを有する複数のチャネル制御部と、前記読み出し要求を前記複数のチャネル制御部のいずれかの前記キューに供給するとともに、前記バッファ内に前記不揮発性メモリから読み出されたデータを保持するための領域を確保するバッファ制御部と、を具備することを特徴とする。
【図面の簡単な説明】
【0007】
【図1】本実施形態を示すものであり、メモリシステムの読み出し系を示す構成図。
【図2】図1の一部を概略的に示す構成図。
【図3】図1、図2の動作を説明するために示すフローチャート。
【発明を実施するための形態】
【0008】
以下、実施の形態について、図面を参照して説明する。
【0009】
本実施形態は、DRAMを用いることなく、複数のバンクからデータを読み出すことを特徴としている。複数のバンクをアクセスする際、例えば1つのバンクに集中してアクセスした場合、待ちが発生するため、所要の性能を得ることができない。本実施形態は、バンクアクセスの集中を回避可能とし、小容量の作業領域により、データの高速な読み出しを可能としている。この結果、DRAMなしでSSDを構成でき、SATA Gen.3(6Gbps=600MB/s)を達成可能としている。
【0010】
図1は、本実施形態に係るメモリシステムの読み出し系の構成を示し、書き込み系の構成は省略している。
【0011】
図1において、メモリシステムとしてのSSD10は、複数のNANDフラッシュメモリにより構成されたNANDメモリ11と、ドライブ制御回路12により構成されている。
【0012】
NANDメモリ11は、例えば8並列動作を行う8つのバンク群11−0、11−1〜11−7を有し、8つのバンク群11−0、11−1〜11−7は、8つのチャネルCH0、CH1〜CH7によりドライブ制御回路12に接続されている。各バンク群11−0、11−1〜11−7は、バンクインターリーブが可能な、例えば4つのバンクBK0〜BK3によって構成されている。各バンクBK0〜BK3は、NANDフラッシュメモリにより構成されている。
【0013】
ドライブ制御回路12は、例えばホストインターフェース(IF)13、アドレス変換回路14、リードバッファ制御部15、チャネル制御部16−0、16−1〜16−7、リードバッファ17により構成されている。
【0014】
ホストインターフェース13は、ホストデバイス18とのインターフェース処理を行う。具体的には、ホストデバイス18から発行される読み出しコマンドを受け、この読み出しコマンドをアドレス変換回路14に供給するとともに、リードバッファ17から供給される読み出しデータをホストデバイス18に転送する。
【0015】
アドレス変換回路14は、ホストインターフェース13から供給されるコマンドに付加された論理アドレスをNANDメモリ11の物理アドレスに変換する。また、アドレス変換回路14は、後述するように、長いデータ長を有する読み出しコマンドは、NANDメモリ11の先頭クラスタの論理ブロックアドレスのみを変換する。後続のアドレスは、読み出しコマンドをチャネル制御部16−0〜16−7に転送する直前に変換する。
【0016】
ここで、クラスタとは、論理アドレスを物理アドレスに変換する単位であり、一般に、1つのクラスタは連続する論理アドレスを有する複数のセクタを含んでいる。セクタは、データに論理アドレスが付される単位を示している。また、ページは、一般に、NANDフラッシュメモリの読み出し、書き込み単位であり、複数のクラスタにより構成される。
【0017】
リードバッファ制御部15は、アドレス変換回路14により変換された物理アドレス及び読み出しコマンドを順次受け、この物理アドレス及び後述するキューの空き状況に従って、これら物理アドレス及び読み出しコマンドをチャネル制御部16−0〜16−7のいずれかに供給する。すなわち、リードバッファ制御部15は、複数の物理アドレス及び読み出しコマンドを保持可能とされている。
【0018】
さらに、リードバッファ制御部15は、物理アドレス及び読み出しコマンドに基づき例えばスタティックRAM(SRAM)により構成されたリードバッファ17内にNANDメモリ11から読み出されたデータを保持する領域を確保する。この領域を確保できた物理アドレス及び読み出しコマンドが、チャネル制御部16−0〜16−7に転送される候補となる。
【0019】
チャネル制御部16−0、16−1〜16−7は、前記チャネルCH0、CH1〜CH7を介してバンク群11−0、11−1〜11−7にそれぞれ接続されている。チャネル制御部16−0、16−1〜16−7は、チャネルCH0〜CH7とバンクBK0〜BK3に区分されたキューを有している。バンクBK0〜BK3に対応するキューを、Q0〜Q3で示している。バンクBK0〜BK3に対応するキューQ0〜Q3のそれぞれは、コマンドが入力される2つのエントリを有している。
【0020】
リードバッファ17は、NANDメモリ11から読み出されたデータを保持するメモリであり、例えばスタティックRAM(SRAM)により構成されている。このリードバッファ17は、後述するように、NANDメモリ11から同時に読み出し可能なデータサイズのほぼ2倍の記憶容量を有している。
【0021】
図2は、チャネルCH0〜CH7とバンク部B0〜B3に対応するキューQ0〜Q3との関係を概略的に示している。すなわち、チャネル制御部16−0、16−1〜16−7は、それぞれキューQ0〜Q3を有している。各キューQ0〜Q3の2つのエントリには、リードバッファ制御部15から供給されるコマンドが保持可能とされている。図2において、黒丸印は、エントリ内のコマンドの数を示している。黒丸印の無い部分は、コマンドが保持されておらず、キューが空であることを示している。
【0022】
これらキューQ0〜Q3に保持された少なくとも1つのコマンドは、対応するチャネルCH0、CH1〜CH7に接続されたバンクBK0〜BK3の処理が終了される毎に順次実行される。例えばチャネルCH0に対応するキューQ1には、2つの読み出しコマンドが保持されている。この保持されたコマンドのうち先に保持されたコマンドは、チャネルCH0に接続されたバンクBK1の読み出し動作が終了した後、実行される。このバンクBK1の読み出し動作により読み出されたデータは、チャネルCH0、チャネル制御部16−0を介してリードバッファ17に供給され、このコマンドに対応してリードバッファ制御部15により確保された領域に保持される。次いで、キューQ1のエントリに保持された残りの読み出しコマンドが実行される。
【0023】
チャネル制御部16−0〜16−7、及びバンク群11−0、11−1〜11−7は、並列に動作可能とされている。このため、リードバッファ制御部15には、同時に8つのチャネルCH0〜CH7及びチャネル制御部16−0〜16−7を介して8つのバンクから読み出されたデータが供給されることが可能とされている。
【0024】
本実施形態は、図2に示すチャネル制御部16−0〜16−7のキューQ0〜Q3へ適確にコマンドを割り当てることにより、バンド幅を向上可能としている。このため、リードバッファ制御部15は、物理アドレスに基づき、空のキューに優先的にコマンドを割り当てている。
【0025】
次に、図2、図3を参照して、各キューQ0〜Q3に対するコマンド割り当て動作について説明する。
【0026】
図3は、ドライブ制御回路12の動作を示している。ドライブ制御回路12において、前述したように、ホストデバイス18から供給された読み出しコマンドは、ホストインターフェース13を介してアドレス変換回路14に供給される。このアドレス変換回路14は、コマンドに付加された論理アドレスをNANDメモリ11の物理アドレスに変換する(S11)。このとき、長いデータ長を有する読み出しコマンドは、NANDメモリ11の先頭クラスタの論理ブロックアドレスのみを変換し、後続のアドレスは、コマンド選択完了後、キューに転送する直前に変換する。すなわち、長いデータ長を有するデータは、隣接する複数のチャネルに接続されたバンクに分散して記憶されることが多いため、ステップS12以降の選択処理で考慮しなくとも、自然に読み出し処理が並列化されて効率良く制御できる可能性が高い。このため、後続のアドレスはステップS11において変換しなくても良い。
【0027】
このアドレス変換の後、ステップS12以降の処理によって、リードバッファ制御部15内にある読み出しコマンドから、1つの読み出しコマンドが選択される。
【0028】
先ず、各チャネルCH0〜CH7に対応するキューQ0〜Q3の中から、アドレス及び読み出しコマンド(以下、単に、コマンドと称す)を保存するためのバンクの候補が判別される(S12、S13)。具体的には、各キューQ0〜Q3から、コマンド数が0個のキューの候補が判別される。
【0029】
図2に示す例の場合、CH0のキューQ3、CH3のキューQ0、Q2、CH4のキューQ1、CH5のキューQ3、CH6のキューQ1,Q2,Q3、CH7のキューQ0がそれぞれ空き状態であり、これらのキューに対応するアドレスを持つコマンドが候補として判別される。
【0030】
ステップS13の後、候補のコマンドに対応するチャネルのうち、既にキューに保持しているコマンド数の合計が最も少ないチャネルが選択される(S14)。
【0031】
図2に示す例の場合、CH0のコマンド数の合計は、4個であり、CH3のコマンド数の合計は、2個であり、CH4のコマンド数の合計は、3個であり、CH5のコマンド数の合計は、3個であり、CH6のコマンド数の合計は、1個であり、CH7のコマンド数の合計は、3個である。このため、CH6に対応するコマンドの候補があれば、最もコマンド数が少ないCH6が選択される。
【0032】
尚、最もコマンド数が少ないチャネルが複数ある場合、例えば前回選択されたチャネル+1のチャネルが最優先として、1つのチャネルが選択される。
【0033】
上記のように、最もコマンド数が少ないチャネルが選択された後、選択されたチャネル内のキューが選択される(S15)。この場合、前回選択されたキュー+1のキューが最優先として、1つのキューが選択される。すなわち、図2に示す例の場合、CH6が選択され、このCH6のうち、前回選択されたキューは、既にコマンドが保持されているQ0であるため、今回はQ0の次のQ1が最優先として、1つのキューが選択される。
【0034】
この後、リードバッファ制御部15内の残った候補のうち、最も古い読み出しコマンドが選択され、上記選択されたQ1に転送される(S16)。
【0035】
一方、ステップS13において、コマンド数が0個のキューの候補が無いと判別された場合、コマンド数が1個のキューの候補が判別される(S17、S18)。図2に示す例の場合、CH0のキューQ0,Q2、CH2のキューQ1,Q2,Q3、CH2のキューQ0,Q1,Q3、CH4のキューQ0,Q2,Q3、CH5のキューQ0,Q1,Q2、CH6のキューQ0、CH7のキューQ1,Q2,Q3がそれぞれ1個のコマンドを保持した状態である。その後、ステップS14〜S16の処理が、前述したように実行される。
【0036】
一方、ステップS18において、1個のコマンドが保持されたキューの候補がないと判別された場合、リードバッファ制御部15にあるどのコマンドもキューに転送する必要は無いと判断される。この後、新たな読み出しコマンドがホストデバイスから転送されるか、キューが保持しているいずれかのコマンドの処理が終了した場合、再度、図3の処理が実行される。
【0037】
上記のように、各チャネル制御部16−0〜16−7の各キューQ0〜Q3に読み出しコマンドが保持される。各キューQ0〜Q3に保持された読み出しコマンドは、対応するNANDメモリ11のバンクの読み出し動作が終了する毎に、順次実行される。
【0038】
各バンクから読み出されたデータは、対応するチャネルCH0〜CH7、チャネル制御部16−0〜16−7を介して、前述したリードバッファ17のコマンドに対応して確保された領域に転送される。このリードバッファ17の各領域に転送されたデータは、アドレスに従って並べ替えられ、ホストインターフェース13を介してホストデバイス18に供給される。
【0039】
上記実施形態によれば、NANDメモリ11の複数のバンクにそれぞれ対応して設けられたチャネルCH0〜CH7に接続されたチャネル制御部16−0〜16−7に、それぞれバンクBK0〜BK3に対応してコマンドを保持するキューQ0〜Q3を設け、これらキューQ0〜Q3のうち、保持されたコマンド数の少ないキューに優先的にコマンドを供給している。このため、キュー内において待たされるコマンドを低減でき、コマンドを迅速に実行することができる。したがって、バンクから読み出され、リードバッファ17に転送されたデータが、リードバッファ17内に滞留する時間も短縮することができる。
【0040】
リードバッファ17内のデータの滞留時間が長い場合、バンクから読み出されたデータを保持するために大きな容量のリードバッファが必要となる。このため、リードバッファをDRAMで構成した場合、数M〜数十Mバイトの容量のDRAMを必要としていた。
【0041】
しかし、本実施形態の場合、リードバッファ17内のデータの滞留時間を短縮することが可能であるため、リードバッファ17の容量は、1Mバイト以下程度とすることが可能である。このため、リードバッファ17を、ドライブ制御回路12を構成するロジック回路に混載されるSRAMにより構成することが可能であり、例えばロジック回路と別のチップにより構成される高価なDRAMを用いる必要がない。したがって、DRAMを用いずにSSD10を構成することが可能であり、製造コストの低減を図ることが可能である。
【0042】
具体的には、チャネル数が8チャネル、バンク数が4バンク、1ページが16kバイトである場合、同時に読み出し可能なデータのサイズは、8チャネル×4バンク×16kB=512kBである。リードバッファ17は、このデータサイズの2倍の容量、すなわち1MBの容量を有していれば、NANDメモリ11からデータを読み出し、リードバッファ17に転送している間に、リードバッファ17に保持されたデータをホストデバイス18に転送することが可能である。したがって、間断なくNANDメモリ11からデータを読み出し、ホストデバイス18に転送することができる。
【0043】
しかも、本実施形態によれば、空きを有するキューに優先的にコマンドを割り当てることにより、コマンドがキューに割り当てられてからNANDメモリの読み出し動作が開始されるまでの時間を短縮することが可能である。このため、リードバッファ17の領域が確保されてから開放されるまでの時間を短縮することが可能となり、次にリードバッファ17の領域を確保するまでの時間も短縮することが可能である。
【0044】
さらに、リードバッファ制御部15は、リードバッファ17に領域を確保できた読み出しコマンドのみをチャネル制御部16−0〜16−7に供給している。このため、NANDメモリ11において、読み出し動作の待ち時間を短縮でき、高速な読み出しが可能となる。
【0045】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0046】
10…SSD、11…NANDメモリ、12…ドライブ制御回路、13…ホストインターフェース、14…アドレス変換回路、15…リードバッファ制御部、16−0〜16−7…チャネル制御部、17…リードバッファ、CH0〜CH7…チャネル、BK0〜BK4…バンク。

【特許請求の範囲】
【請求項1】
複数のチャネルのそれぞれに接続され、複数のバンクを有する複数の不揮発性メモリと、
前記複数の不揮発性メモリから読み出されたデータを保持し、同時に読み出し可能なデータサイズのほぼ2倍の容量を有するスタティックメモリにより構成されたバッファと、
前記複数の不揮発性メモリからデータを読み出すための読み出し要求を前記複数のチャネル毎に保持するキューを有する複数のチャネル制御部と、
前記読み出し要求を前記複数のチャネル制御部のいずれかの前記キューに供給するとともに、前記バッファ内に前記不揮発性メモリから読み出されたデータを保持するための領域を確保するバッファ制御部と、
を具備することを特徴とするメモリシステム。
【請求項2】
前記バッファ制御部は、前記読み出し要求を前記複数のチャネル制御部の空きを有するキューから優先的に供給することを特徴とする請求項1記載のメモリシステム。
【請求項3】
前記バッファ制御部は、前記キューが複数の読み出し要求を有する場合、新たな読み出し要求を供給しないことを特徴とする請求項2記載のメモリシステム。
【請求項4】
前記複数のチャネル制御部のキューの数は、バンクの数に対応していることを特徴とする請求項3記載のメモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate