(57)【要約】【課題】動作速度の向上を図ることができるメモリシステムを提供することである。【解決手段】実施形態のメモリシステムは、第１コントローラと、複数の半導体モジュールとを備えている。前記第１コントローラは、ホストシステムと電気的に接続される。前記複数の半導体モジュールの各々は、前記第１コントローラとの間でデータが転送される第２コントローラと、前記第２コントローラによって少なくともデータの書き込みおよび読み出しが制御される１つ以上の不揮発性メモリチップとを含む。【選択図】図１
2019049893.tif 000002
【特許請求の範囲】
【請求項１】
基板と、
前記基板に実装され、ホストシステムと電気的に接続される第１コントローラと、
前記第１コントローラとの間でデータが転送される第２コントローラと、前記第２コントローラによって少なくともデータの書き込みおよび読み出しが制御される１つ以上の不揮発性メモリチップとをそれぞれ含み前記基板に実装された複数の半導体モジュールと、
を備えたメモリシステム。
【請求項２】
前記複数の半導体モジュールの各々は、前記第２コントローラおよび前記１つ以上の不揮発性メモリチップが実装されたパッケージ基板と、前記第２コントローラおよび前記１つ以上の不揮発性メモリチップを一体に封止した封止樹脂部と、前記パッケージ基板に電気的に接続されるとともに前記基板に接合された複数の電極とを有した、
請求項１に記載のメモリシステム。
【請求項３】
前記半導体モジュールは、ＢＧＡ（Ball Grid Array）モジュールである、
請求項２に記載のメモリシステム。
【請求項４】
前記第１コントローラと前記第２コントローラとの間のデータの最大転送速度は、前記１つ以上の不揮発性メモリチップに対する前記第２コントローラのデータの最大書き込み速度よりも速い、
請求項１に記載のメモリシステム。
【請求項５】
前記第２コントローラは、前記第１コントローラと通信するインターフェースコントローラを含み、前記インターフェースコントローラの動作周波数は、前記１つ以上の不揮発性メモリチップの動作周波数よりも高い、
請求項４に記載のメモリシステム。
【請求項６】
前記第２コントローラは、前記第１コントローラから前記第２コントローラに転送されたデータの少なくとも一部を一時的に格納可能な記憶領域を有する、
請求項４に記載のメモリシステム。
【請求項７】
前記第１コントローラは、前記ホストシステムから複数のライトコマンドを連続して受信した場合、前記複数のライトコマンドで書き込みが要求された複数のデータを、前記複数の半導体モジュールに含まれる２つ以上の半導体モジュールに分けて転送する、
請求項１に記載のメモリシステム。
【請求項８】
前記第１コントローラは、前記ホストシステムから所定時間の間に複数のライトコマンドを受信した場合、前記複数のライトコマンドで書き込みが要求された複数のデータを、前記複数の半導体モジュールに含まれる２つ以上の半導体モジュールに分けて転送する、
請求項１に記載のメモリシステム。
【請求項９】
前記第１コントローラは、前記ホストシステムからライトコマンドを受信し、前記ライトコマンドを受信した時刻よりも前の所定時間以内にリードコマンドを受信している場合に、前記複数の半導体モジュールのなかで、前記リードコマンドで読み出しが要求されたデータが書き込まれている半導体モジュールとは別の半導体モジュールに、前記ライトコマンドで書き込みが要求されたデータを転送する、
請求項１に記載のメモリシステム。
【請求項１０】
前記基板は、前記ホストシステムと前記第１コントローラとを電気的に接続する複数の外部接続線と、前記第１コントローラと前記複数の半導体モジュールとを電気的に接続した複数の内部接続線とを含み、
前記第１コントローラは、前記ホストシステムとの間で前記複数の外部接続線を介して複数組の差動信号を並行して送受信し、前記複数の半導体モジュールの各々との間で前記複数の内部接続線に含まれる２つの内部接続線を介して１組の差動信号を送受信する、
請求項１に記載のメモリシステム。
【請求項１１】
前記基板は、前記第１コントローラと前記複数の半導体モジュールに含まれる第１半導体モジュールとを接続した第１接続線と、前記第１コントローラと前記複数の半導体モジュールに含まれる第２半導体モジュールとを接続した第２接続線とを含み、
前記第１接続線と前記第２接続線とは長さが互いに略同じである、
請求項１に記載のメモリシステム。
【請求項１２】
前記基板は、前記第１コントローラと前記複数の半導体モジュールに含まれる第３半導体モジュールとを接続した第３接続線をさらに含み、
前記第３接続線は、前記第１接続線よりも長く、
前記第１コントローラは、前記第１半導体モジュールをデータの主書き込み先として使用し、前記第３半導体モジュールをデータの一時退避先として使用する、
請求項１１に記載のメモリシステム。
【請求項１３】
前記第１コントローラは、前記ホストシステムからライトコマンドを受信した場合、前記ライトコマンドで書き込みが要求されたデータを書き込む１つ以上の半導体モジュールを、前記複数の半導体モジュールのなかから選択する、
請求項１に記載のメモリシステム。
【請求項１４】
前記第１コントローラは、前記複数の半導体モジュールに割り当てられた用途を示す情報に基づき、前記ライトコマンドで書き込みが要求されたデータを書き込む１つ以上の半導体モジュールを選択する、
請求項１３に記載のメモリシステム。
【請求項１５】
前記用途を示す情報は、前記複数の半導体モジュールのなかで、ライトコマンドで書き込みが要求されたデータのデータ量が所定条件を満たす場合に前記データの書き込み先候補となる１つ以上の半導体モジュールを示す情報を含み、
前記第１コントローラは、前記用途を示す情報と、前記ライトコマンドで書き込みが要求されたデータのデータ量とに基づき、前記データを書き込む１つ以上の半導体モジュールを選択する、
請求項１４に記載のメモリシステム。
【請求項１６】
前記第１コントローラは、前記複数の半導体モジュールの各々の疲弊度に基づき、前記ライトコマンドで書き込みが要求されたデータを書き込む１つ以上の半導体モジュールを選択する、
請求項１３に記載のメモリシステム。
【請求項１７】
ホストシステムと電気的に接続される第１コントローラと、
前記第１コントローラとの間でデータが転送される第２コントローラと、前記第２コントローラによって少なくともデータの書き込みおよび読み出しが制御される１つ以上の不揮発性メモリチップとをそれぞれ含む複数の半導体モジュールと、
を備えたメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
ＳＳＤ（Solid State Drive）のようなメモリシステムが知られている。ところで、メモリシステムは、動作速度の向上が期待されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１５２８５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、動作速度の向上を図ることができるメモリシステムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のメモリシステムは、第１コントローラと、複数の半導体モジュールとを備えている。前記第１コントローラは、ホストシステムと電気的に接続される。前記複数の半導体モジュールの各々は、前記第１コントローラとの間でデータが転送される第２コントローラと、前記第２コントローラによって少なくともデータの書き込みおよび読み出しが制御される１つ以上の不揮発性メモリチップとを含む。
【図面の簡単な説明】
【０００６】
【図１】実施形態のメモリシステムを示す平面図。
【図２】図１中に示されたメモリシステムのＦ２−Ｆ２線に沿う断面図。
【図３】実施形態のコントローラＢＧＡおよび半導体モジュールＢＧＡの機能構成を示すブロック図。
【図４】実施形態の転送先履歴情報の内容の一例を示す図。
【図５】実施形態の用途設定情報の内容の一例を示す図。
【図６】実施形態の疲弊度情報の内容の一例を示す図。
【図７】実施形態のメモリシステムの処理の流れの一例を示すフローチャート。
【図８】実施形態のメモリシステムの作用を示す図。
【図９】実施形態の第１変形例のメモリシステムを示す平面図。
【図１０】実施形態の第２変形例のメモリシステムを示す平面図。
【発明を実施するための形態】
【０００７】
以下、実施形態のメモリシステムを、図面を参照して説明する。なお以下の説明では、同一または類似の機能を有する構成に同一の符号を付す。そして、それら構成の重複する説明は省略する場合がある。また、本願でいう「ＸＸに基づく」とは、「少なくともＸＸに基づく」ことを意味し、ＸＸに加えて別の要素に基づく場合も含む。また、「ＸＸに基づく」とは、ＸＸを直接に用いる場合に限定されず、ＸＸに対して演算や加工が行われたものに基づく場合も含む。「ＸＸ」は、任意の要素（例えば、任意の情報）である。また、以下の説明では、いくつかの箇所で「所定時間」といった用語が用いられている。これらいくつかの箇所で用いられる「所定時間」は、互いに同じでもよく、異なってもよい。
【０００８】
ここで、比較例のメモリシステムは、ホストシステムとの間でデータを送受信するとともに複数の不揮発性メモリチップに対する書き込みおよび読み出しを制御するメモリコントローラを備えている。このような構成では、ホストシステムとメモリコントローラとの間のデータ転送速度に比べて、複数の不揮発性メモリチップに対するメモリコントローラのデータの書き込み速度および読み出し速度が遅い場合がある。このため、メモリシステムの動作速度の向上を図ることが難しい場合がある。
【０００９】
一方で、以下に説明するいくつかの実施形態では、メモリシステムは、ホストシステムと電気的に接続される第１コントローラと、複数の半導体モジュールとを備える。複数の半導体モジュールの各々は、前記第１コントローラとの間でデータが転送される第２コントローラと、前記第２コントローラによって少なくともデータの書き込みおよび読み出しが制御される１つ以上の不揮発性メモリチップとを含む。このような構成によれば、複数の不揮発性メモリチップに対するデータの書き込みおよび読み出しを複数の第２コントローラによって分散して処理することができる。これにより、メモリシステムの動作速度の向上を図ることができる。以下、この内容に関して説明する。
【００１０】
（実施形態）
図１は、実施形態のメモリシステム１を示す平面図である。メモリシステム１は、ホストシステム２と通信可能に接続され、ホストシステム２の記憶空間として使用される。メモリシステム１は、例えば、ＳＳＤのようなストレージデバイスであるが、これに限定されない。ホストシステム２は、データセンサのサーバ装置やパーソナルコンピュータのような情報処理装置であるが、これらに限定されない。ホストシステム２は、メモリシステム１が通信可能に接続されるシステムを広く意味する。「ホストシステム」は、「外部装置」と称されてもよい。
【００１１】
図１に示すように、メモリシステム１は、例えば、基板１０と、コントローラＢＧＡ２０と、複数（例えば１０個）の半導体モジュールＢＧＡ３０と、これらを収容する図示しないケースとを含む。コントローラＢＧＡ２０と複数の半導体モジュールＢＧＡ３０とは、同一の基板１０に実装されたモジュールを構成している。ただし、半導体モジュールＢＧＡ３０の数は、１０個よりも少なくてもよく、多くてもよい。
【００１２】
まず、基板１０について説明する。基板１０は、プリント回路基板であり、第１面１０ａと、第１面１０ａとは反対側に位置した第２面１０ｂ（図２参照）とを有する。基板１０の第１面１０ａには、コントローラＢＧＡ２０および複数の半導体モジュールＢＧＡ３０が実装されている。
【００１３】
基板１０は、外部接続コネクタ１１（以下、単に「コネクタ１１」と称する）と、複数の外部接続線１２と、複数の内部接続線１３とを有する。コネクタ１１は、ホストシステム２と電気的および機械的に接続される。
【００１４】
複数の外部接続線１２は、コネクタ１１とコントローラＢＧＡ２０との間に設けられ、コネクタ１１とコントローラＢＧＡ２０とを電気的に接続している。言い換えると、複数の外部接続線１２は、コネクタ１１がホストシステム２に接続された場合、ホストシステム２とコントローラＢＧＡ２０とを電気的に接続する。外部接続線１２は、基板１０の表面（例えば第１面１０ａ）に設けられてもよく、基板１０の内部に設けられてもよい。複数の外部接続線１２は、電気的に互いに並列に設けられている。複数の外部接続線１２およびコネクタ１１は、ホストシステム２とコントローラＢＧＡ２０との間のインターフェース（以下、外部Ｉ／Ｆ１５と称する）の一例を形成している。
【００１５】
外部Ｉ／Ｆ１５は、例えば、４レーン、８レーン、または１６レーンのＰＣＩｅ（PCI Express）インターフェースである。この場合、コントローラＢＧＡ２０は、外部Ｉ／Ｆ１５の複数の外部接続線１２を介して、ホストシステム２との間で複数組の差動信号を並行して送受信する。ただし、外部Ｉ／Ｆ１５は、上記例に限定さない。外部Ｉ／Ｆ１５は、ＤＩＭＭ（Dual Inline Memory Module）インターフェース、ＳＡＴＡ（Serial Advanced Technology Attachment）インターフェース、ＳＡＳ（Serial Attached SCSI（Small Computer System Interface））インターフェース、またはＮＶＭｅ（NVM Express ；Non-Volatile Memory Host Controller Interface）インターフェースなどでもよい。
【００１６】
複数の内部接続線１３は、コントローラＢＧＡ２０と複数の半導体モジュールＢＧＡ３０との間に設けられ、コントローラＢＧＡ２０と複数の半導体モジュールＢＧＡ３０とを電気的に接続している。内部接続線１３は、基板１０の表面（例えば第１面１０ａ）に設けられてもよく、基板１０の内部に設けられてもよい。複数の内部接続線１３は、電気的に互いに並列に設けられている。複数の内部接続線１３は、コントローラＢＧＡ２０と複数の半導体モジュールＢＧＡ３０の各々との間のインターフェース（以下、内部Ｉ／Ｆ１６と称する）の一例を形成している。
【００１７】
本実施形態では、各半導体モジュールＢＧＡ３０に対して、例えば２本の内部接続線１３が接続されている。本実施形態では、内部Ｉ／Ｆ１６は、２レーンのＰＣＩｅインターフェースである。この場合、コントローラＢＧＡ２０は、内部Ｉ／Ｆ１６の２本の内部接続線１３を介して、各半導体モジュールＢＧＡ３０との間で１組の差動信号を送受信する。ただし、内部Ｉ／Ｆ１６は、上記例に限定されない。内部Ｉ／Ｆ１６は、ＵＦＳ（Universal Flash Storage）規格に沿うインターフェースでもよい。各半導体モジュールＢＧＡ３０に対して接続される内部接続線１３は、２本に限らず、１本でもよい。この場合、基板１０のグラウンド層が信号の帰還経路となる。
【００１８】
次に、コントローラＢＧＡ２０について説明する。コントローラＢＧＡ２０は、「第１コントローラ」の一例である。コントローラＢＧＡ２０は、電気的観点で、コネクタ１１と、複数の半導体モジュールＢＧＡ３０の各々との間に位置する。コントローラＢＧＡ２０は、複数の半導体モジュールＢＧＡ３０を統括的に制御する。コントローラＢＧＡ２０は、外部接続線１２に電気的に接続された物理層（Ｐｈｙ）を制御する第１インターフェースコントローラ２０ａと、内部接続線１３に電気的に接続された物理層を制御する第２インターフェースコントローラ２０ｂとを有する。第１インターフェースコントローラ２０ａは、外部接続線１２を介してホストシステム２と通信する。第２インターフェースコントローラ２０ｂは、内部接続線１３を介して半導体モジュールＢＧＡ３０と通信する。本実施形態では、コントローラＢＧＡ２０の動作周波数（例えばインターフェースコントローラ２０ａ，２０ｂの動作周波数）は、ＮＡＮＤチップ３２（後述）の動作周波数よりも高い。「動作周波数」とは、１秒間に刻むクロックの数を表す。「クロック」とは部品の動作基準となる時間単いである。部品は、クロックの整数倍の時間をかけて命令を実行する。なお、コントローラＢＧＡ２０の構成および機能は詳しく後述する。
【００１９】
次に、半導体モジュールＢＧＡ３０について説明する。半導体モジュールＢＧＡ３０は、「半導体モジュール」の一例である。複数の半導体モジュールＢＧＡ３０は、基板１０の第１面１０ａにおいて、互いに並べて配置されている。複数の半導体モジュールＢＧＡ３０は、コントローラＢＧＡ２０に対して互いに電気的に並列に接続されている。各半導体モジュールＢＧＡ３０は、例えば、コントローラＢＧＡ２０との間でデータを転送するコントローラチップ３１（以下、説明の便宜上、第２コントローラチップ３１と称する）と、第２コントローラチップ３１によって少なくともデータの書き込みおよび読み出しが制御される１つ以上のＮＡＮＤチップ３２と、接続線３３とを有する。第２コントローラチップ３１は、内部接続線１３に電気的に接続された物理層を制御するインターフェースコントローラ３１ａと、ＮＡＮＤチップ３２に電気的に接続された物理層を制御するＮＡＮＤコントローラ５３（図３参照）とを有する。インターフェースコントローラ３１ａは、内部接続線１３を介してコントローラＢＧＡ２０の第２インターフェースコントローラ２０ｂと通信する。ＮＡＮＤコントローラ５３は、接続線３３を介してＮＡＮＤチップ３２と通信する。本実施形態では、第２コントローラチップ３１の動作周波数（例えばインターフェースコントローラ３１ａの動作周波数）は、ＮＡＮＤチップ３２の動作周波数よりも高い。
【００２０】
接続線３３は、第２コントローラチップ３１と、１つ以上のＮＡＮＤチップ３２との間に設けられ、第２コントローラチップ３１と、１つ以上のＮＡＮＤチップ３２とを電気的に接続している。接続線３３は、例えば、後述するボンディングワイヤ３７Ａ，３７Ｂ（図２参照）を含む。接続線３３は、第２コントローラチップ３１とＮＡＮＤチップ３２との間のインターフェース（以下、ＮＡＮＤＩ／Ｆ３５と称する）の一例を形成している。なお、半導体モジュールＢＧＡ３０のその他の構成および機能は詳しく後述する。
【００２１】
本実施形態では、外部Ｉ／Ｆ１５の最大転送速度をＶ１、内部Ｉ／Ｆ１６の最大転送速度をＶ２、ＮＡＮＤＩ／Ｆ３５の最大転送速度をＶ３とすると、Ｖ１＞Ｖ２＞Ｖ３の関係が成り立つ。「外部Ｉ／Ｆ１５の最大転送速度」とは、ホストシステム２とコントローラＢＧＡ２０との間のデータの最大転送速度である。「内部Ｉ／Ｆ１６の最大転送速度」とは、コントローラＢＧＡ２０と半導体モジュールＢＧＡ３０の第２コントローラチップ３１との間のデータの最大転送速度である。「ＮＡＮＤＩ／Ｆ３５の最大転送速度」とは、１つ以上のＮＡＮＤチップ３２に対する第２コントローラチップ３１のデータの最大書き込み速度である。
【００２２】
次に、複数の内部接続線１３と複数の半導体モジュールＢＧＡ３０との関係を示す。本実施形態では、複数の半導体モジュールＢＧＡ３０は、半導体モジュールＢＧＡ３０−１、半導体モジュールＢＧＡ３０−２、半導体モジュールＢＧＡ３０−３、…、半導体モジュールＢＧＡ３０−１０を含む。半導体モジュールＢＧＡ３０−５は、「第１半導体モジュール」の一例である。半導体モジュールＢＧＡ３０−６は、「第２半導体モジュール」の一例である。半導体モジュールＢＧＡ３０−１は、「第３半導体モジュール」の一例である。
【００２３】
複数の内部接続線１３は、接続線１３−１、接続線１３−２、接続線１３−３、…、接続線１３−１０を含む。接続線１３−１は、半導体モジュールＢＧＡ３０−１を、コントローラＢＧＡ２０に接続している。同様に、接続線１３−２、接続線１３−３、…、接続線１３−１０は、半導体モジュールＢＧＡ３０−２、半導体モジュールＢＧＡ３０−３、…、半導体モジュールＢＧＡ３０−１０を、それぞれ、コントローラＢＧＡ２０に接続している。接続線１３−５は、「第１接続線」の一例である。接続線１３−６は、「第２接続線」の一例である。接続線１３−１は、「第３接続線」の一例である。
【００２４】
接続線１３−５および接続線１３−６は、長さ（配線長）が互いに略同じである。同様に、接続線１３−４および接続線１３−７は、長さが互いに略同じである。接続線１３−３および接続線１３−８は、長さが互いに略同じである。接続線１３−２および接続線１３−９は、長さが互いに略同じである。接続線１３−１および接続線１３−１０は、長さが互いに略同じである。また、接続線１３−１および接続線１３−１０の各々は、接続線１３−２〜９の各々よりも長い。
【００２５】
次に、図２を参照して、コントローラＢＧＡ２０および半導体モジュールＢＧＡ３０の物理的構成について説明する。図２は、図１中に示されたメモリシステム１のＦ２−Ｆ２線に沿う断面図である。
【００２６】
コントローラＢＧＡ２０は、例えば、ＢＧＡ(Ball Grid Array)モジュールである。コントローラＢＧＡ２０は、第１パッケージ基板２１と、第１コントローラチップ２２と、複数のボンディングワイヤ２３と、封止樹脂部２４と、複数の電極２５とを有する。
【００２７】
第１パッケージ基板２１は、第１面２１ａと、第１面２１ａとは反対側に位置した第２面２１ｂとを含む。第１コントローラチップ２２は、第１パッケージ基板２１の第１面２１ａに実装されている。第１コントローラチップ２２は、１つのチップ部品で構成されることに代えて、複数のチップ部品に分かれていてもよい。
【００２８】
複数のボンディングワイヤ２３は、第１コントローラチップ２２と第１パッケージ基板２１とを電気的に接続している。封止樹脂部２４は、第１コントローラチップ２２および複数のボンディングワイヤ２３を一体に封止している。ただし、第１コントローラチップ２２は、ボンディングワイヤ２３によって第１パッケージ基板２１に電気的に接続される例に限定されない。例えば、第１コントローラチップ２２は、複数のバンプを有し、第１パッケージ基板２１にフリップチップ実装されてもよい。
【００２９】
複数の電極２５は、第１パッケージ基板２１の第２面２１ｂに設けられている。複数の電極２５は、例えば半田ボールであるが、金バンプなどでもよい。複数の電極２５は、第１パッケージ基板２１に電気的に接続され、第１パッケージ基板２１を介して第１コントローラチップ２２に電気的に接続されている。また、電極２５は、基板１０に接合されている。一部の電極２５は、基板１０の外部接続線１２に電気的に接続されている。別の一部の電極２５は、基板１０の内部接続線１３に電気的に接続されている。
【００３０】
ＢＧＡを用いた半導体モジュール３０（本明細書では、半導体モジュールＢＧＡ３０と称する）は、第２パッケージ基板３６と、第２コントローラチップ３１と、１つ以上のＮＡＮＤチップ３２と、複数のボンディングワイヤ３７Ａ，３７Ｂと、封止樹脂部３８と、複数の電極３９とを含む。本実施形態では、半導体モジュールＢＧＡ３０は、複数のＮＡＮＤチップ３２を含む。
【００３１】
第２パッケージ基板３６は、第１面３６ａと、第１面３６ａとは反対側に位置した第２面３６ｂとを有する。第２コントローラチップ３１は、第２パッケージ基板３６の第１面３６ａに実装されている。第２コントローラチップ３１は、１つのチップ部品で構成されることに代えて、複数のチップ部品に分かれていてもよい。第２コントローラチップ３１は、「第２コントローラ」の一例である。複数のＮＡＮＤチップ３２は、第２パッケージ基板３６の第１面３６ａに実装されている（積層されている）。ＮＡＮＤチップ３２は、例えば、ＮＡＮＤ型フラッシュメモリチップである。ＮＡＮＤチップ３２は、「不揮発性メモリチップ」の一例である。ただし、不揮発性メモリチップは、ＮＡＮＤチップに限定されず、磁気抵抗メモリ（ＭＲＡＭ：Magnetoresistive Random Access Memory）でもよく、他の種類のメモリチップでもよい。
【００３２】
ボンディングワイヤ３７Ａは、第２コントローラチップ３１と第２パッケージ基板３６とを電気的に接続している。別のボンディングワイヤ３７Ｂは、複数のＮＡＮＤチップ３２と第２パッケージ基板３６とを電気的に接続している。封止樹脂部３８は、第２コントローラチップ３１、複数のＮＡＮＤチップ３２、および複数のボンディングワイヤ３７Ａ，３７Ｂを一体に封止している。ただし、第２コントローラチップ３１および複数のＮＡＮＤチップ３２は、ボンディングワイヤ３７Ａ，３７Ｂによって第２パッケージ基板３６に電気的に接続される例に限定されない。第２コントローラチップ３１は、複数のバンプを有し、第２パッケージ基板３６にフリップチップ実装されてもよい。第２コントローラチップ３１および複数のＮＡＮＤチップ３２は、ＴＳＶ（Through-Silicon Via）などの貫通電極により第２パッケージ基板３６に電気的に接続されてもよい。
【００３３】
複数の電極３９は、第２パッケージ基板３６の第２面３６ｂに設けられている。複数の電極３９は、例えば半田ボールであるが、金バンプなどでもよい。複数の電極３９は、第２パッケージ基板３６に電気的に接続され、第２パッケージ基板３６を介して第２コントローラチップ３１に電気的に接続されている。また、電極３９は、基板１０に接合されている。一部の電極３９は、基板１０の内部接続線１３に電気的に接続されている。
【００３４】
本実施形態では、コントローラＢＧＡ２０および半導体モジュールＢＧＡ３０には、ホストシステム２から電源およびベースクロックが供給される。コントローラＢＧＡ２０および半導体モジュールＢＧＡ３０は、ベースクロックに基づき、動作周波数を規定するクロックを生成する。また、コントローラＢＧＡ２０および半導体モジュールＢＧＡ３０は、例えば、１．２Ｖまたは１．８Ｖの電源により動作する。コントローラＢＧＡ２０および半導体モジュールＢＧＡ３０が１．２Ｖまたは１．８Ｖの電源で動作すると、ホストシステム２の消費電力化を図ることができる。
【００３５】
次に、図３を参照して、コントローラＢＧＡ２０および半導体モジュールＢＧＡ３０の機能構成について説明する。図３は、コントローラＢＧＡ２０および半導体モジュールＢＧＡ３０の機能構成を示すブロック図である。以下では、説明の便宜上、コントローラＢＧＡ２０を「第１コントローラ２０」と称し、第２コントローラチップ３１を「第２コントローラ３１」と称する。
【００３６】
ここで、いくつかの用語を定義する。「コマンド」とは、目的とする処理をコンピュータ（例えば、メモリシステム１）に実行させる指示を広く意味する。「ライトコマンド」とは、ホストシステム２から通知されるデータの書き込み要求を意味する。ライトコマンドは、例えば、ライトデータ（書き込み対象のデータ）の書き込み先を示す情報（例えば、メモリシステム１内の書き込み先論理アドレス）を含む。一方で、「リードコマンド」とは、ホストシステム２から通知されるデータの読み出し要求を意味する。リードコマンドは、例えば、リードデータ（読み出し対象のデータ）の読み出し先を示す情報（例えば、メモリシステム１内の読み出し先論理アドレス）を含む。
【００３７】
まず、第１コントローラ２０の機能構成について説明する。第１コントローラ２０は、ホストシステム２と複数の半導体モジュールＢＧＡ３０の第２コントローラ３１との間に位置し、ホストシステム２に対するメモリシステム１のデータの送受信をコントロールする。例えば、第１コントローラ２０は、ホストシステム２からライトコマンドおよびリードコマンドを受信する。第１コントローラ２０は、ライトコマンドおよびリードコマンドで要求された処理を実行するために、当該第１コントローラ２０と１つ以上の半導体モジュールＢＧＡ３０との間でライトデータおよびリードデータを転送する。詳しく述べると、第１コントローラ２０は、モジュール選択部４１と、転送部４２と、記憶領域４３とを含む。
【００３８】
モジュール選択部４１は、第１コントローラ２０がホストシステム２からライトコマンドを受信した場合、複数の半導体モジュールＢＧＡ３０のなかから、当該ライトコマンドに含まれるライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択する。
【００３９】
本実施形態では、モジュール選択部４１は、第１コントローラ２０がホストシステム２から複数のライトコマンドを連続して受信した場合に、前記複数のライトコマンドで要求された複数のライトデータの書き込みが複数の第２コントローラ３１によって分散して処理されるように、前記複数のライトデータを分けて転送する（別々に転送する）２つ以上の半導体モジュールＢＧＡ３０を選択する。例えば、モジュール選択部４１は、第１コントローラ２０がホストシステム２から第１ライトコマンドと第２ライトコマンドとを連続して受信した場合に、複数の半導体モジュールＢＧＡ３０のなかから、第１ライトコマンドに含まれる第１ライトデータを書き込む半導体モジュールＢＧＡ３０（Ａ）と、第２ライトコマンドに含まれる第２ライトデータを書き込む半導体モジュールＢＧＡ３０（Ｂ）とを選択する。半導体モジュールＢＧＡ３０（Ａ）と、半導体モジュールＢＧＡ３０（Ｂ）とは互いに異なる半導体モジュールＢＧＡ３０である。なお「複数のライトコマンドを連続して受信」とは、複数のライトコマンドを受信する間に別の種類のコマンド（例えばリードコマンド）が無いことを意味する。
【００４０】
また、本実施形態では、モジュール選択部４１は、第１コントローラ２０がホストシステム２から所定時間の間に複数のライトコマンドを受信した場合、前記複数のライトコマンドで要求された複数のライトデータの書き込みが複数の第２コントローラ３１によって分散して処理されるように、前記複数のライトデータを分けて転送する（別々に転送する）２つ以上の半導体モジュールＢＧＡ３０を選択する。
【００４１】
さらに本実施形態では、モジュール選択部４１は、第１コントローラ２０がホストシステム２からライトコマンドを受信し、当該ライトコマンドを受信した時刻よりも前の所定時間以内に第１コントローラ２０がリードコマンドを受信している場合に、前記リードコマンドで要求された読み出しと、前記ライトコマンドで要求された書き込みとが複数の第２コントローラ３１によって分散して処理されるように、前記リードコマンドで読み出しが要求されたデータが書き込まれている半導体モジュールＢＧＡ３０とは別の半導体モジュールＢＧＡ３０を、前記ライトコマンドのライトデータの転送先として選択する。
【００４２】
なお、上述したいくつかの機能は、全てが実行されてもよく、いずれか１つが実行されてもよい。本実施形態では、上述したいくつかの機能を実現する１つの方法として、モジュール選択部４１は、転送先履歴情報Ｓ１に基づき、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択する。
【００４３】
図４は、転送先履歴情報Ｓ１の内容の一例を示す図である。転送先履歴情報Ｓ１は、第１コントローラ２０がホストシステム２から受信した複数のライトコマンドと、そのライトコマンドを受信した時刻と、そのライトコマンドに含まれるライトデータのデータ量と、そのライトコマンドに含まれるライトデータの転送先として選択された半導体モジュールＢＧＡ３０とがそれぞれ関連付けられた情報である。モジュール選択部４１は、第１コントローラ２０がライトコマンドを受信した場合に、転送先履歴情報Ｓ１に基づき、１つ前に受信されたライトコマンド（または直近の所定時間以内に受信された複数のライトコマンド）に含まれるライトデータの転送先として選択された半導体モジュールＢＧＡ３０とは異なる半導体モジュールＢＧＡ３０を、新しく受信したライトコマンドに含まれるライトデータの転送先として選択する。
【００４４】
このとき、モジュール選択部４１は、過去に受信したライトコマンドに含まれるライトデータのデータ量を考慮してもよい。すなわち、モジュール選択部４１は、１つ前に受信されたライトコマンド（または直近の所定時間以内に受信された複数のライトコマンド）に含まれるライトデータのデータ量が閾値以上の場合に限り、そのライトデータが転送された半導体モジュールＢＧＡ３０とは異なる半導体モジュールＢＧＡ３０を、新しく受信したライトコマンドに含まれるライトデータの転送先として選択してもよい。
【００４５】
また１つの変形例として、モジュール選択部４１は、第１コントローラ２０が１つのライトコマンドを受信した場合に、当該ライトコマンドに含まれるライトデータの書き込みが複数の半導体モジュールＢＧＡ３０の第２コントローラ３１によって分散して処理されるように、前記ライトデータを複数の部分に分けて転送する２つ以上の半導体モジュールＢＧＡ３０を選択してもよい。
【００４６】
また、モジュール選択部４１は、用途設定情報Ｓ２に基づき、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択してもよい。
【００４７】
図５は、用途設定情報Ｓ２の内容の一例を示す図である。用途設定情報Ｓ２は、複数の半導体モジュールＢＧＡ３０に割り当てられた用途を示す情報である。用途設定情報Ｓ２では、複数の半導体モジュールＢＧＡ３０と、その半導体モジュールＢＧＡ３０に対して設定された用途とがそれぞれ関連付けられている。なお、用途の設定は、ユーザによる指定に基づいて行われてもよく、モジュール選択部４１により自動的に行われてもよい。
【００４８】
図５に示すように、本実施形態では、半導体モジュールＢＧＡ３０−１および半導体モジュールＢＧＡ３０−１０は、「一次退避先（キャッシュ）」に設定されている。「一時退避先」とは、「主書き込み先」として設定された半導体モジュールＢＧＡ３０−２〜９の第２コントローラ３１の記憶領域４３（後述）に十分な空き容量がなく、半導体モジュールＢＧＡ３０−２〜９にライトデータをすぐに転送できない場合に、ライトデータが一時的に書き込まれる半導体モジュールＢＧＡ３０を意味する。本実施形態では、最も長い内部接続線１３が接続された半導体モジュールＢＧＡ３０−１および半導体モジュールＢＧＡ３０−１０が「一時退避先」として設定されている。
【００４９】
また本実施形態では、半導体モジュールＢＧＡ３０−２〜６は、「主書き込み先（データ量：大）」として設定されている。半導体モジュールＢＧＡ３０−２〜６の各々には、データ量が閾値以上のライトデータが優先して書き込まれる。一方で、半導体モジュールＢＧＡ３０−７〜９は、「主書き込み先（データ量：小）」として設定されている。半導体モジュールＢＧＡ３０−７〜９の各々には、データ量が閾値未満のライトデータが優先して書き込まれる。「主書き込み先（データ量：大）」を示す情報および「主書き込み先（データ量：小）」を示す情報の各々は、「データのデータ量が所定条件を満たす場合に前記データの書き込み先候補となる１つ以上の半導体モジュールを示す情報」の一例である。ただし、上述した用途設定情報Ｓ２の内容は、あくまで一例であり、これらに限定されるものではない。
【００５０】
本実施形態では、モジュール選択部４１は、ライトデータのデータ量に基づき、主書き込み先として設定された複数の半導体モジュールＢＧＡ３０−２〜９のなかから、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択する。例えば、モジュール選択部４１は、ライトデータのデータ量が閾値以上の場合に、「主書き込み先（データ量：大）」として設定された半導体モジュールＢＧＡ３０−２〜６のなかから１つ以上の半導体モジュールＢＧＡ３０を選択する。一方で、モジュール選択部４１は、ライトデータのデータ量が閾値未満の場合に、「主書き込み先（データ量：小）」として設定された半導体モジュールＢＧＡ３０−７〜９のなかから１つ以上の半導体モジュールＢＧＡ３０を選択する。
【００５１】
また、モジュール選択部４１は、疲弊度情報Ｓ３に基づき、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択してもよい。
【００５２】
図６は、疲弊度情報Ｓ３の内容の一例を示す図である。疲弊度情報Ｓ３は、複数の半導体モジュールＢＧＡ３０と、その半導体モジュールＢＧＡ３０の疲弊度とがそれぞれ関連付けられた情報である。「疲弊度」は、例えば、各半導体モジュールＢＧＡ３０のＮＡＮＤチップ３２に含まれる複数のブロック（例えば論理ブロック）の疲弊度の平均値を意味する。「ブロックの疲弊度」とは、例えば、ブロックに対するデータの書き込み回数、読み出し回数、消去回数、および動作温度の履歴などの１つ以上に基づく値である。なお、疲弊度情報Ｓ３は、第１コントローラ２０によって記録されて更新されてもよいし、各半導体モジュールＢＧＡ３０で管理されている疲弊度を示す情報に基づいて第１コントローラ２０によって更新されてもよい。
【００５３】
本実施形態では、モジュール選択部４１は、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択する場合、疲弊度情報Ｓ３に基づき、選択可能な複数の半導体モジュールＢＧＡ３０なかから、疲弊度が最も低い（または疲弊度が閾値以下である）半導体モジュールＢＧＡ３０をライトデータの書き込み先として選択する。
【００５４】
次に、図３に戻り、転送部４２について説明する。転送部４２は、モジュール選択部４１によって選択された半導体モジュールＢＧＡ３０を示す信号を、モジュール選択部４１から受け取る。転送部４２は、ホストシステム２から受け取るライトコマンド（ライトデータを含む）を、モジュール選択部４１によって選択された半導体モジュールＢＧＡ３０に転送する。なお、転送部４２は、ライトコマンドそのものを転送することに代えて、モジュール選択部４１によって選択された半導体モジュールＢＧＡ３０にライトデータの書き込みを指示する信号を送るとともに、ライトコマンドのなかでライトデータのみをその半導体モジュールＢＧＡ３０に転送してもよい。転送部４２は、半導体モジュールＢＧＡ３０においてライトデータの書き込みが完了した場合に、ライトデータの書き込みが完了したことを示す信号を第２コントローラ３１から受け取る。そして、転送部４２は、アドレス変換テーブルＴにおいて、ライトデータの書き込み先をＮＡＮＤチップ３２の物理アドレスに更新する。アドレス変換テーブルＴは、データの書き込み先の論理アドレスと物理アドレスとが関連付けられた情報である。
【００５５】
また、転送部４２は、第１コントローラ２０がホストシステム２からリードコマンドを受信した場合、リードコマンドとアドレス変換テーブルＴとに基づき、リードコマンドで指定されたリードデータが書き込まれている半導体モジュールＢＧＡ３０を特定する。そして、転送部４２は、特定した半導体モジュールＢＧＡ３０にリードコマンドを転送する。なお、転送部４２は、リードコマンドそのものを転送することに代えて、リードデータの読み出しを指示する信号を特定した半導体モジュールＢＧＡ３０に送ってもよい。以下では、「リードコマンド」および「リードデータの読み出しを指示する信号」を併せて「リードに関する指示」と称する。転送部４２は、リードに関する指示に応じて半導体モジュールＢＧＡ３０から読み出されたリードデータを半導体モジュールＢＧＡ３０から受け取り、受け取ったリードデータをホストシステム２に送信する。
【００５６】
以上説明したモジュール選択部４１、転送部４２、および上述のインターフェースコントローラ２０ａ，２０ｂは、第１コントローラ２０に含まれるＣＰＵ（Central Processing Unit）のようなプロセッサがプログラムメモリに格納されたプログラム（例えばファームウェア）を実行することにより実現される。ただし、これらの機能部の一部または全部は、ＬＳＩ（Large Scale Integration）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）などのハードウェア（例えば、回路部；circuitry）により実現されてもよい。
【００５７】
記憶領域４３は、第１コントローラ２０の内部の一時記憶領域として機能する。記憶領域４３には、例えば、転送先履歴情報Ｓ１、用途設定情報Ｓ２、疲弊度情報Ｓ３、およびアドレス変換テーブルＴを格納している。記憶領域４３は、ホストシステム２から受信したライトデータの少なくとも一部、およびホストシステム２に送信予定のリードデータの少なくとも一部を格納してもよい。記憶領域４３は、例えば、ＳＲＡＭ（Static Random Access Memory）により実現されるが、他の種類のメモリチップにより実現されてもよい。
【００５８】
次に、半導体モジュールＢＧＡ３０の機能構成について説明する。半導体モジュールＢＧＡ３０は、例えば、第２コントローラ３１と、複数のＮＡＮＤチップ３２とを含む。第２コントローラ３１は、リードライトコントローラ５１と、内部処理コントローラ５２と、ＮＡＮＤコントローラ５３と、記憶領域５４とを含む。
【００５９】
リードライトコントローラ５１は、例えば、第１コントローラ２０からライトデータを受け取る。リードライトコントローラ５１は、ライトデータを受け取った場合、ＮＡＮＤコントローラ５３を制御して、ライトデータをＮＡＮＤチップ３２に書き込む。また、リードライトコントローラ５１は、第１コントローラ２０からリードに関する指示を受け取る。リードライトコントローラ５１は、リードに関する指示を受け取った場合、ＮＡＮＤコントローラ５３を制御して、ＮＡＮＤチップ３２からリードデータを読み出す。リードライトコントローラ５１は、ＮＡＮＤチップ３２から読み出されたリードデータを、第１コントローラ２０に転送する。
【００６０】
内部処理コントローラ５２は、半導体モジュールＢＧＡ３０の内部処理を実行する。「内部処理」とは、ホストシステム２からのコマンドには基づかない半導体モジュールＢＧＡ３０の内部処理を意味する。このような内部処理は、例えば、リフレッシュおよび／またはガーベジコレクションがある。ただし、内部処理は、リフレッシュおよびガーベジコレクションに限定されない。
【００６１】
「リフレッシュ」とは、ＮＡＮＤチップ３２内のある領域に書き込まれているデータを、ＮＡＮＤチップ３２内の別の領域、またはＮＡＮＤチップ３２内のリフレッシュ前と同じ領域に書き込み直すことを意味する。例えば、リフレッシュは、誤り訂正符号によるエラー訂正の限界を超える前に、エラーの追加発生を抑制するために行われる。内部処理コントローラ５２は、ＮＡＮＤチップ３２のブロック（例えば論理ブロック）毎に、ブロックの状態を監視する。内部処理コントローラ５２は、ブロックが所定条件を満たした場合（例えば、ブロックに記憶されたデータに関するエラー発生数が所定数を超えた場合、またはブロックに含まれるメモリセル関してリードディスターブに伴うストレスが所定以上作用していると検出された場合）に、ＮＡＮＤコントローラ５３を制御することで、当該ブロックを対象とするリフレッシュを実行する。
【００６２】
「ガーベジコレクション」とはＮＡＮＤチップ３２内の不要なデータが書き込まれている領域を再利用できるようにするため、不要なデータ以外のデータ（例えば有効データ）をＮＡＮＤチップ３２内の任意の領域に移動させ、移動元の領域を解放する処理である。内部処理コントローラ５２は、例えばデータの書き込み先として利用可能なフリーブロックの数が一定数以下になった場合に、ＮＡＮＤコントローラ５３を制御することで、ガーベジコレクションを実行する。
【００６３】
ＮＡＮＤコントローラ５３は、ＮＡＮＤチップ３２を制御する。ＮＡＮＤコントローラ５３は、例えば、キュー５３ａおよびシーケンサ５３ｂを含む。キュー５３ａには、ＮＡＮＤチップ３２に関する複数のコマンドが格納される。キュー５３ａには、リードライトコントローラ５１および内部処理コントローラ５２から供給されるコマンドが格納される。キュー５３ａに格納された複数のコマンドは、キュー５３ａに格納された順に、ＮＡＮＤコントローラ５３によってＮＡＮＤチップ３２に対する指示に変換されてシーケンサ５３ｂによって処理される。
【００６４】
以上説明したリードライトコントローラ５１、内部処理コントローラ５２、ＮＡＮＤコントローラ５３、および上述のインターフェースコントローラ３１ａは、第２コントローラ３１に含まれるＣＰＵのようなプロセッサがプログラムメモリに格納されたプログラム（例えばファームウェア）を実行することにより実現される。ただし、これらの機能部の一部または全部は、ＬＳＩ、ＡＳＩＣ、ＦＰＧＡなどのハードウェア（例えば、回路部；circuitry）により実現されてもよい。
【００６５】
記憶領域５４は、第２コントローラ３１の内部の一時記憶領域として機能する。記憶領域５４には、例えば、第１コントローラ２０から第２コントローラ３１に転送されたライトデータの少なくとも一部を格納可能である。例えば、記憶領域５４は、第１コントローラ２０と第２コントローラ３１との間のデータ転送速度と、ＮＡＮＤチップ３２に対する第２コントローラ３１の書き込み速度との違いに基づき第２コントローラ３１に溜まるデータを一時的に格納する。記憶領域５４は、例えば、ＳＲＡＭにより実現されるが、他の種類のメモリチップにより実現されてもよい。
【００６６】
次に、メモリシステム１の処理の流れの一例について説明する。図７は、メモリシステム１の処理の流れの一例を示すフローチャートである。なお、図７は、メモリシステム１がホストシステム２からライトコマンドを受信した場合の例を示す。
【００６７】
まず、第１コントローラ２０は、ホストシステム２から送信されたライトコマンドを受信する（Ｓ１０１）。次に、第１コントローラ２０は、所定条件を満たすか否かを判定する（Ｓ１０２）。「所定条件」とは、複数の第２コントローラ３１によって処理を分散すべき場合に成立する条件である。例えば、「所定条件」は、直近の所定時間内に別のコマンド（例えば別のライトコマンドまたはリードコマンド）をホストシステム２から受信している場合などである。
【００６８】
第１コントローラ２０は、所定条件が満たされる場合（Ｓ１０２：ＹＥＳ）、例えば転送先履歴情報Ｓ１に基づき、特定の半導体モジュールＢＧＡ３０を除いた残りの半導体モジュールＢＧＡ３０のなかから、ライトデータの転送先となる１つ以上の半導体モジュールＢＧＡ３０を選択する（Ｓ１０３）。「特定の半導体モジュールＢＧＡ３０」とは、例えば、直近の所定時間内に別のライトデータが転送された半導体モジュールＢＧＡ３０や、直近の所定時間内にリードに関する指示が送られた半導体モジュールＢＧＡ３０である。この場合、第１コントローラ２０は、選択可能な残りの複数の半導体モジュールＢＧＡ３０のなかから、例えば用途設定情報Ｓ２および疲弊度情報Ｓ３に基づき、１つ以上の半導体モジュールＢＧＡ３０を選択する。
【００６９】
一方で、第１コントローラ２０は、所定条件が満たされない場合（Ｓ１０２：ＮＯ）、全ての半導体モジュールＢＧＡ３０のなかから、ライトデータを転送する１つ以上の半導体モジュールＢＧＡ３０を選択する（Ｓ１０４）。この場合、第１コントローラ２０は、複数の半導体モジュールＢＧＡ３０のなかから、例えば用途設定情報Ｓ２および疲弊度情報Ｓ３に基づき、１つ以上の半導体モジュールＢＧＡ３０を選択する。
【００７０】
そして、第１コントローラ２０は、選択された半導体モジュールＢＧＡ３０の第２コントローラ３１に、ライトデータを転送する（Ｓ１０５）。第２コントローラ３１は、第１コントローラ２０からライトデータを受け取る。第２コントローラ３１は、ＮＡＮＤコントローラ５３を制御することで、ＮＡＮＤチップ３２にライトデータを書き込む（Ｓ１０６）。これにより、一連の処理が終了する。
【００７１】
次に、図８を参照し、メモリシステム１の作用について説明する。図８は、メモリシステム１の作用を示す図である。本実施形態では、第１コントローラ２０と各半導体モジュールＢＧＡ３０の第２コントローラ３１との間のデータ転送速度は、比較的速い。このため、第１コントローラ２０は、ホストシステム２からライトコマンドおよびリードコマンドを受信する毎に、第１コントローラ２０と第２コントローラ３１との間のデータ転送速度とＮＡＮＤチップ３２に対する第２コントローラ３１のデータの書き込み速度との差を生かして、複数の半導体モジュールＢＧＡ３０の第２コントローラ３１に次々に指示を送る。第２コントローラ３１は、第１コントローラ２０からの指示内容に基づき、ＮＡＮＤチップ３２に対する書き込みおよび読み出しを制御する。これにより、複数の半導体モジュールＢＧＡ３０は、互いに並列動作する。
【００７２】
このような構成によれば、大容量のデータの転送速度の向上を図ることができる。ここで、外部Ｉ／Ｆ１５と、ＮＡＮＤＩ／Ｆ３５とのデータ転送速度には、大きな開きがある。このため、仮に１つのメモリコントローラがホストシステム２との間でデータを送受信するとともに複数のＮＡＮＤチップ３２に対する書き込みおよび読み出しを制御する場合、ＮＡＮＤＩ／Ｆ３５のデータ転送速度がボトルネックになり、メモリシステムの動作速度の向上を図ることが難しい場合がある。
【００７３】
一方で、本実施形態では、メモリシステム１は、第１コントローラ２０と、複数の半導体モジュールＢＧＡ３０とを有する。第１コントローラ２０は、ホストシステム２と電気的に接続される。複数の半導体モジュールＢＧＡ３０の各々は、第１コントローラ２０との間でデータが転送される第２コントローラ３１と、第２コントローラ３１によって少なくともデータの書き込みおよび読み出しが制御される１つ以上のＮＡＮＤチップ３２とを含む。このような構成によれば、複数のＮＡＮＤチップ３２に対する書き込みおよび読み出しを、複数の第２コントローラ３１によって分散して処理することができる。このため、複数のＮＡＮＤチップ３２に対する書き込みおよび読み出しを並列して行うことができる。これにより、ＮＡＮＤＩ／Ｆ３５のデータ転送速度がボトルネックになりにくい。そのため、メモリシステム１の動作速度の向上を図ることができる。
【００７４】
本実施形態では、第１コントローラ２０と第２コントローラ３１との間のデータの最大転送速度は、１つ以上のＮＡＮＤチップ３２に対する第２コントローラ３１のデータの最大書き込み速度よりも速い。このような構成によれば、第１コントローラ２０は、第１コントローラ２０と第２コントローラ３１との間のデータ転送速度とＮＡＮＤチップ３２に対する第２コントローラ３１のデータの書き込み速度との差を生かして、複数の半導体モジュールＢＧＡ３０の第２コントローラ３２に次々に指示を送ることができる。このため、複数のＮＡＮＤチップ３２に対する書き込みおよび読み出しの並列処理をより促進することができ、メモリシステム１の動作速度の向上をさらに図ることができる。
【００７５】
本実施形態では、第２コントローラ３１は、第１コントローラ２０から第２コントローラ３１に転送されたデータの少なくとも一部を一時的に格納可能な記憶領域５４を有する。このような構成によれば、第１コントローラ２０は、第１コントローラ２０と第２コントローラ３１との間のデータ転送速度に比べてＮＡＮＤチップ３２に対する第２コントローラ３１の書き込み速度が遅い場合であっても、第１コントローラ２０と第２コントローラ３１との間のデータ転送速度を生かして第１コントローラ２０から第２コントローラ３１にデータを転送することができる。これにより、メモリシステム１の動作速度の向上をさらに図ることができる。
【００７６】
本実施形態では、第１コントローラ２０は、ホストシステム２から複数のライトコマンドを連続して受信した場合、複数のライトコマンドで書き込みが要求された複数のライトデータを、複数の半導体モジュールＢＧＡ３０に含まれる２つ以上の半導体モジュールＢＧＡ３０に分けて転送する。このような構成によれば、複数のライトデータの書き込みを、２つ以上の半導体モジュールＢＧＡ３０の第２コントローラ３１によって並列して処理することができる。これにより、メモリシステム１の動作速度の向上をさらに図ることができる。
【００７７】
本実施形態では、第１コントローラ２０は、ホストシステム２から所定時間の間に複数のライトコマンドを受信した場合、前記複数のライトコマンドで書き込みが要求された複数のライトデータを、複数の半導体モジュールＢＧＡ３０に含まれる２つ以上の半導体モジュールＢＧＡ３０に分けて転送する。このような構成によれば、複数のライトデータの書き込みを、２つ以上の半導体モジュールＢＧＡ３０の第２コントローラ３１によって並列して処理することができる。これにより、メモリシステム１の動作速度の向上をさらに図ることができる。
【００７８】
本実施形態では、第１コントローラ２０は、ホストシステム２からライトコマンドを受信し、当該ライトコマンドを受信した時刻よりも前の所定時間以内にリードコマンドを受信している場合に、複数の半導体モジュールＢＧＡ３０のなかで、前記リードコマンドで読み出しが要求されたリードデータが書き込まれている半導体モジュールＢＧＡ３０とは別の半導体モジュールＢＧＡ３０に、前記ライトコマンドで書き込みが要求されたデータを転送する。このような構成によれば、前記リードデータの読み出しと前記ライトデータの書き込みとを、２つ以上の半導体モジュールＢＧＡ３０の第２コントローラ３１によって並列して処理することができる。これにより、メモリシステム１の動作速度の向上をさらに図ることができる。
【００７９】
本実施形態では、基板１０は、ホストシステム２と第１コントローラ２０とを電気的に接続する複数の外部接続線１２と、第１コントローラ２０と複数の半導体モジュールＢＧＡ３０とを電気的に接続した複数の内部接続線１３とを含む。第１コントローラ２０は、ホストシステム２との間で複数の外部接続線１２を介して複数組の差動信号を並行して送受信する。第１コントローラ２０は、複数の半導体モジュールＢＧＡ３０の各々との間で複数の内部接続線１３に含まれる２つの内部接続線１３を介して１組の差動信号を送受信する。このような構成によれば、ホストシステム２から第２コントローラ３１まで信号を高速で送ることができる。これにより、メモリシステム１の動作速度の向上をさらに図ることができる。
【００８０】
本実施形態では、基板１０は、第１コントローラ２０と半導体モジュールＢＧＡ３０−５とを接続した接続線１３−５と、第１コントローラ２０と半導体モジュールＢＧＡ３０−６とを接続した接続線１３−６とを含む。接続線１３−５と接続線１３−６とは長さが互いに略同じである。このような構成によれば、少なくとも第１コントローラ２０から半導体モジュールＢＧＡ３０−５と半導体モジュールＢＧＡ３０−６とに対するデータの転送時間が略同じになる。その結果、メモリシステム１の動作の管理が行いやすくなる。
【００８１】
本実施形態では、基板１０は、第１コントローラ２０と半導体モジュールＢＧＡ３０−１とを接続した接続線１３−１をさらに含む。接続線１３−１は、接続線１３−５よりも長い。第１コントローラ２０は、半導体モジュールＢＧＡ３０−１を、データの一時退避先として使用する。このような構成によれば、配線長が相対的に長い半導体モジュールＢＧＡ３０−１をデータの一時退避先とし、配線長が相対的に短い半導体モジュールＢＧＡ３０−２〜９を主書き込み先として使い分けることができる。配線長が相対的に短い半導体モジュールＢＧＡ３０−２〜９は、配線長が相対的に長い半導体モジュールＢＧＡ３０−１と比べて、第１コントローラ２０と第２コントローラ３１との間のデータ転送時間を短くすることができる。このため、配線長が相対的に短い半導体モジュールＢＧＡ３０−２〜９をデータの主書き込み先として優先的に使用することで、メモリシステム１の動作速度の向上をさらに図ることができる。
【００８２】
本実施形態では、第１コントローラ２０は、複数の半導体モジュールＢＧＡ３０に割り当てられた用途を示す情報に基づき、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択する。このような構成によれば、複数の複数の半導体モジュールＢＧＡ３０を用途によって使い分けることができる。これにより、メモリシステム１の動作速度の向上をさらに図ることができる。
【００８３】
本実施形態では、前記用途を示す情報は、複数の半導体モジュールＢＧＡ３０のなかで、ライトデータのデータ量が所定条件を満たす場合にライトデータの書き込み先候補となる１つ以上の半導体モジュールＢＧＡ３０を示す情報を含む。第１コントローラ２０は、前記用途を示す情報と、ライトデータのデータ量とに基づき、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択する。このような構成によれば、例えば、データ量が閾値以上のライトデータが書き込まれる半導体モジュールＢＧＡ３０と、データ量が閾値未満のライトデータが書き込まれる半導体モジュールＢＧＡ３０とを分けることができる。これにより、データ量が閾値以上のライトデータの書き込みおよび読み出しが行われている間に、データ量が閾値未満のライトデータの書き込みおよび読み出しが停滞することを避けることができる。これにより、データ量が小さなデータのホストシステム２へのレスポンスを高めることができる。
【００８４】
本実施形態では、第１コントローラ２０は、複数の半導体モジュールＢＧＡ３０の各々の疲弊度に基づき、ライトデータを書き込む１つ以上の半導体モジュールＢＧＡ３０を選択する。このような構成によれば、複数の半導体モジュールＢＧＡ３０の疲弊度のばらつきを抑制することができる。これにより、メモリシステム１の動作の安定性および信頼性を高めることができる。
【００８５】
次に、上記実施形態の２つの変形例について説明する。なお、以下に説明する以外の構成は、上記実施形態の構成と略同じである。
【００８６】
（第１変形例）
図９は、第１変形例のメモリシステムを示す図である。本変形例では、複数の半導体モジュールＢＧＡ３０は、第１コントローラ２０に対して互いに略同じ距離だけ離れている。言い換えると、複数の内部接続線１３の長さは、互いに略同じである。このような構成によれば、第１コントローラ２０と複数の第２コントローラ３１との間の転送時間が略同じになる。これにより、メモリシステム１の動作速度の向上をさらに図ることができるとともに、メモリシステム１の動作の管理をより行いやすくなる。
【００８７】
（第２変形例）
図１０は、第２変形例のメモリシステムを示す図である。本変形例では、複数の半導体モジュールＢＧＡ３０は、第１コントローラ２０から第１距離Ｌ１だけ離れた複数の半導体モジュールＢＧＡ３０と、第１コントローラ２０から第２距離Ｌ２だけ離れた複数の半導体モジュールＢＧＡ３０とを含む。第２距離Ｌ２は、第１距離Ｌ１よりも長い。そして、第１コントローラ２０から第１距離Ｌ１だけ離れた半導体モジュールＢＧＡ３０と、第１コントローラ２０から第２距離Ｌ２だけ離れた半導体モジュールＢＧＡ３０とは、例えばコントローラＢＧＡ２０の各辺において、交互に配置されている。このような構成によれば、複数の半導体モジュールＢＧＡ３０が物理的に分散して配置される。これにより、複数の半導体モジュールＢＧＡ３０の放熱性を高めることができる。
【００８８】
以上説明した少なくともひとつの実施形態によれば、メモリシステムは、第１コントローラと、複数の半導体モジュールを備えている。前記第１コントローラは、ホストシステムと電気的に接続される。前記複数の半導体モジュールの各々は、前記第１コントローラとの間でデータが転送される第２コントローラと、前記第２コントローラによって少なくともデータの書き込みおよび読み出しが制御される１つ以上の不揮発性メモリチップとを含む。このような構成によれば、メモリシステムの動作速度の向上を図ることができる。
【００８９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００９０】
１…メモリシステム、２…ホストシステム、１０…基板、１２…外部接続線、１３…内部接続線、１３−１…接続線（第３接続線）、１３−５…接続線（第１接続線）、１３−６…接続線（第２接続線）、２０…コントローラＢＧＡ（第１コントローラ）、３０…半導体モジュールＢＧＡ（半導体モジュール）、３０−１…半導体モジュールＢＧＡ（第３半導体モジュール）、３０−５…半導体モジュールＢＧＡ（第１半導体モジュール）、３０−６…半導体モジュールＢＧＡ（第２半導体モジュール）、３１…第２コントローラチップ（第２コントローラ）、３１ａ…インターフェースコントローラ、３２…ＮＡＮＤチップ（不揮発性メモリチップ）、３６…第２パッケージ基板（パッケージ基板）、３８…封止樹脂部、３９…電極、５４…記憶領域。
【図１】
2019049893.tif 000003
【図２】
2019049893.tif 000004
【図３】
2019049893.tif 000005
【図４】
2019049893.tif 000006
【図５】
2019049893.tif 000007
【図６】
2019049893.tif 000008
【図７】
2019049893.tif 000009
【図８】
2019049893.tif 000010
【図９】
2019049893.tif 000011
【図１０】
2019049893.tif 000012