(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024044793
(43)【公開日】2024-04-02
(54)【発明の名称】メモリシステム、制御装置および方法
(51)【国際特許分類】
G06F 13/36 20060101AFI20240326BHJP
G06F 12/06 20060101ALI20240326BHJP
G06F 13/38 20060101ALI20240326BHJP
G06F 11/10 20060101ALI20240326BHJP
【FI】
G06F13/36 310E
G06F12/06 550A
G06F13/36 530B
G06F13/38 330Z
G06F11/10 608
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022150540
(22)【出願日】2022-09-21
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】大友 吾一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CD05
(57)【要約】
【課題】好適な構成を有する制御装置を備えるメモリシステム、制御装置、およびメモリシステムを制御する方法を提供すること。
【解決手段】メモリシステムは、第1装置と、1以上の第2装置がそれぞれに接続された複数の第1チャネルと、を備える半導体記憶装置と、第1装置に第2チャネルを介して接続された制御装置と、を備える。制御装置は、第2装置をアクセス先としたデータ転送を実行する複数の第1回路と、複数の第1回路と第2チャネルとの間に配置された第2回路とを備える。第2回路は、複数の第1回路が送るデータを結合して、結合前の各データの転送レートよりも高い転送レートで結合後のデータを第2チャネルに送る。第2回路は、第2チャネルを介して受信したデータを分割して、分割前のデータの転送レートよりも低い転送レートで複数のデータを複数の第1回路に分配する。
【選択図】
図9
【特許請求の範囲】
【請求項1】
第1装置と、それぞれメモリセルアレイを備える複数の第2装置と、前記第1装置に接続された複数の第1チャネルであって、前記複数の第1チャネルのそれぞれに前記複数の第2装置のうちの1以上の第2装置が接続された前記複数の第1チャネルと、を備える半導体記憶装置と、
前記第1装置に第2チャネルを介して接続された複数の第1回路であって、
前記複数の第1回路のそれぞれは、前記複数の第2装置のうちの一をアクセス先として前記アクセス先の第2装置に対し、エラー抑制にかかる処理を行いながら、データの送信および出力が可能な前記複数の第1回路と、
前記複数の第1回路と前記第2チャネルとの間に配置され、前記複数の第1回路が送信するデータを結合して結合前の各データの転送レートのn(nは整数を表す)倍の転送レートで結合後のデータを前記第2チャネルに送り、前記nは結合前のデータの数であり、前記第2チャネルを介して受信したデータを複数のデータに分割して分割前のデータの転送レートのm(mは整数を表す)分の1の転送レートで前記複数のデータを前記複数の第1回路のうちのm個の第1回路に分配し、前記mは分割後のデータの数である、第2回路と、
を備える制御装置と、
を備えるメモリシステム。
【請求項2】
前記制御装置は、
それぞれは複数の第2装置のうちの一をアクセス先として指定し、アクセス種別および転送データのサイズを指定した複数のアクセス要求を生成する第3回路と、
前記複数のアクセス要求のうちから、アクセス先として指定された第2装置が接続された第1チャネルがそれぞれ異なり、かつ指定されたアクセス種別および転送データのサイズが共通する2以上のアクセス要求を特定し、特定した前記2以上のアクセス要求のそれぞれを前記複数の第1回路のうちのそれぞれ異なる第1回路に入力する第4回路と、
をさらに備え、
前記複数の第1回路のうちの前記2以上のアクセス要求の一が入力された第1回路は、入力された前記一のアクセス要求によって指定されたアクセス先の第2装置に対し前記一のアクセス要求によって指定されたアクセス種別の前記一のアクセス要求によって指定されたサイズのデータの転送を実行する、
請求項1に記載のメモリシステム。
【請求項3】
前記第4回路は、
前記複数の第1チャネルのそれぞれを前記複数の第1回路の一と一対一に対応付け、
前記2以上のアクセス要求のそれぞれを、前記複数の第1回路のうちのアクセス先として指定された第2装置が接続された第1チャネルに対応する第1回路に入力する、
請求項2に記載のメモリシステム。
【請求項4】
前記エラー抑制にかかる処理は、誤り訂正符号化および誤り訂正を含む、
請求項1から請求項3の何れか一項に記載のメモリシステム。
【請求項5】
前記エラー抑制にかかる処理は、ランダマイズおよびランダマイズの逆処理を含む、
請求項1から請求項3の何れか一項に記載のメモリシステム。
【請求項6】
それぞれがメモリセルアレイを備える複数のメモリチップを有する半導体記憶装置と第1チャネルを介して接続可能な制御装置であって、
複数の第1回路と、
前記複数の第1回路のそれぞれと前記第1チャネルと、に接続された第2回路と、を備え、
前記複数の第1回路のそれぞれは、前記複数のメモリチップのうちの一つをアクセス先として前記アクセス先のメモリチップに対し、エラー抑制にかかる処理を行いながら、データの送信および出力を行い、
前記第2回路は、前記複数の第1回路が送信するデータを結合して結合前の各データの転送レートのn(nは整数を表す)倍の転送レートで結合後のデータを前記第1チャネルに送り、前記nは結合前のデータの数であり、前記第1チャネルを介して受信したデータを複数のデータに分割して分割前のデータの転送レートのm(mは整数を表す)分の1の転送レートで前記複数のデータを前記複数の第1回路のうちのm個の第1回路に分配し、前記mは分割後のデータの数である、
制御装置。
【請求項7】
前記半導体記憶装置は、それぞれに前記複数のメモリチップのうちの1以上のメモリチップが接続された複数の第2チャネルを備え、
それぞれは前記複数のメモリチップのうちの一をアクセス先として指定し、アクセス種別および転送データのサイズを指定した複数のアクセス要求を生成する第3回路と、
前記複数のアクセス要求のうちから、アクセス先として指定されたメモリチップが接続された第2チャネルがそれぞれ異なり、かつ指定されたアクセス種別および転送データのサイズが共通する2以上のアクセス要求を特定し、特定した前記2以上のアクセス要求のそれぞれを前記複数の第1回路のうちのそれぞれ異なる第1回路に入力する第4回路と、
をさらに備え、
前記複数の第1回路のうちの前記2以上のアクセス要求の一が入力された第1回路は、入力された前記一のアクセス要求によって指定されたアクセス先のメモリチップに対し前記一のアクセス要求によって指定されたアクセス種別の前記一のアクセス要求によって指定されたサイズのデータの転送を実行する、
請求項6に記載の制御装置。
【請求項8】
前記第4回路は、
前記複数の第2チャネルのそれぞれを前記複数の第1回路の一と一対一に対応付け、
前記2以上のアクセス要求のそれぞれを、前記複数の第1回路のうちのアクセス先として指定されたメモリチップが接続された第2チャネルに対応する第1回路に入力する、
請求項7に記載の制御装置。
【請求項9】
前記エラー抑制にかかる処理は、誤り訂正符号化および誤り訂正を含む、
請求項6から請求項8の何れか一項に記載の制御装置。
【請求項10】
前記エラー抑制にかかる処理は、ランダマイズおよびランダマイズの逆処理を含む、
請求項6から請求項8の何れか一項に記載の制御装置。
【請求項11】
第1装置と、それぞれメモリセルアレイを備える複数の第2装置と、前記第1装置に接続された複数の第1チャネルであって、前記複数の第1チャネルのそれぞれに前記複数の第2装置のうちの1以上の第2装置が接続された前記複数の第1チャネルと、を備える半導体記憶装置を制御する方法であって、
それぞれ異なる第1チャネルに接続された第2装置をアクセス先として指定した2以上のアクセス要求のそれぞれを複数の第1回路のうちのそれぞれ異なる第1回路に実行させることと、前記複数の第1回路のそれぞれは、指定されたアクセス先の第2装置に対し、エラー抑制にかかる処理を行いながら、データの送信および出力を実行することを含み、
前記第1回路のうちの前記2以上のアクセス要求のうちの一を実行する2以上の第1回路のそれぞれがデータを送信するケースでは、前記2以上の第1回路が送信するデータを結合して結合前の各データの転送レートのn(nは整数を表す)倍の転送レートで結合後のデータを前記半導体記憶装置に送信することと、前記nは結合前のデータの数であり、
前記2以上の第1回路のそれぞれが指定されたアクセス先にデータを出力させるケースでは、前記半導体記憶装置から受信したデータをそれぞれは前記2以上の第1回路のうちの一がアクセス先に出力させた2以上のデータに分割し、前記2以上のデータを分割前のデータの転送レートのm(mは整数を表す)分の1の転送レートで前記複数の第1回路のうちのm個の第1回路に分配することと、前記mは分割後のデータの数である、
を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステム、制御装置および方法に関する。
【背景技術】
【0002】
メモリコントローラと複数のメモリチップとの間にブリッジチップを備えたメモリシステムがある。メモリコントローラは、ブリッジチップを介して各メモリチップを制御する制御装置である。複数のメモリチップのそれぞれは、ブリッジチップに複数のチャネルの何れかを介して接続される。このようなメモリシステムでは、メモリコントローラは、複数のチャネルでデータ転送が並行して実行されるように複数のメモリチップに対するアクセスを行う。これにより、ひとつのチャネルの複数倍の転送レートで複数のメモリチップに対するアクセスを行うことが可能である。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、好適な構成を有する制御装置を備えるメモリシステム、制御装置、およびメモリシステムを制御する方法を提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、メモリシステムは、半導体記憶装置と、制御装置と、を備える。半導体記憶装置は、第1装置と、それぞれメモリセルを備える複数の第2装置と、第1装置に接続された複数の第1チャネルと、を備える。複数の第1チャネルのそれぞれに複数の第2装置のうちの1以上の第2装置が接続される。制御装置は、第1装置に第2チャネルを介して接続された複数の第1回路と、複数の第1回路と第2チャネルとの間に配置された第2回路と、を備える。複数の第1回路のそれぞれは、複数の第2装置のうちの一をアクセス先としてアクセス先の第2装置に対し、エラー抑制にかかる処理を行いながら、データの送信および出力が可能である。第2回路は、複数の第1回路が送信するデータを結合して結合前の各データの転送レートのn(nは整数を表す)倍の転送レートで結合後のデータを第2チャネルに送る。nは結合前のデータの数である。第2回路は、第2チャネルを介して受信したデータを複数のデータに分割して分割前のデータの転送レートのm(mは整数を表す)分の1の転送レートで複数のデータを複数の第1回路のうちのm個の第1回路に分配する。mは分割後のデータの数である。
【図面の簡単な説明】
【0006】
【
図1】実施形態のメモリシステムの構成の一例を示す模式的な図。
【
図3】実施形態のブリッジチップと各メモリチップとの間のより詳細な接続関係を説明するための模式的な図。
【
図4】実施形態のメモリコントローラが他のメモリシステムに適用された場合の接続例を示す模式的な図。
【
図5】実施形態のメモリコントローラのハードウェア構成の一例を示す図。
【
図6】実施形態のブリッジチップのハードウェア構成の一例を示す図。
【
図7】実施形態の分割・結合回路の、データを結合する機能の一例を説明するための図。
【
図8】実施形態の分割・結合回路の、データを分割する機能の一例を説明するための図。
【
図9】実施形態のメモリシステムにおけるデータの流れの一例を説明するための模式的な図。
【
図10】実施形態のメモリコントローラが一般的な構成のメモリシステムに適用された場合のメモリコントローラの設定の一例を示す模式的な図。
【
図11】実施形態のバッファメモリに格納されたアクセス要求の一覧の一例を示す図。
【
図12】実施形態のスケジューラが備えるプロセッサによって取得される対の一例を示す図。
【
図13】実施形態のスケジューラの動作の一例を示すフローチャート。
【
図14】実施形態のスケジューラの動作の別の一例を示すフローチャート。
【
図15】実施形態のメモリシステムの構成の別の一例を示す模式的な図。
【発明を実施するための形態】
【0007】
以下に添付図面を参照して、実施形態のメモリシステム、メモリコントローラ、および方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0008】
(実施形態)
図1は、実施形態のメモリシステムSYSの構成の一例を示す模式的な図である。
【0009】
メモリシステムSYSは、ホストHSに接続可能である。ホストHSとメモリシステムSYSとを接続する通信路および当該通信路を介した通信が準拠する規格は、特定の規格に限定されない。ホストHSは、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどである。ホストHSは、メモリシステムSYSにアクセスする際に、メモリシステムSYSにアクセスコマンドを送信する。アクセスコマンドは、ライトコマンドまたはリードコマンドなどを含む。
【0010】
メモリシステムSYSは、半導体記憶装置1、メモリコントローラMC、およびRAM(Random Access Memory)2を含む。
【0011】
メモリコントローラMCは、半導体記憶装置1の制御を行う制御装置である。メモリコントローラMCは、半導体記憶装置1の制御の一環として、ホストHSからのアクセスコマンドに応じたホストHSと半導体記憶装置1との間のデータ転送を実行する。
【0012】
RAM2は、メモリコントローラMCに、バッファエリア、キャッシュエリア、プログラムがロードされるエリア、などの機能を提供する。例えば、メモリコントローラMCは、ホストHSと半導体記憶装置1との間の転送データをRAM2にバッファすることができる。また、メモリコントローラMCは、ファームウェアプログラムをRAM2にロードして使用したり、各種管理データをRAM2にバッファまたはキャッシュしたりする。
【0013】
半導体記憶装置1は、外部端子群T、ブリッジチップBC、および複数のメモリチップCP0-0~CP0-3,CP1-0~CP1-3を備える。複数のメモリチップCP0-0~CP0-3,CP1-0~CP1-3のそれぞれは、例えば、NAND型フラッシュメモリ等の不揮発性メモリのメモリチップである。ここでは、複数のメモリチップCP0-0~CP0-3,CP1-0~CP1-3のそれぞれはNAND型フラッシュメモリのメモリチップであることとする。
【0014】
半導体記憶装置1は、メモリチップCP0-0~CP0-3およびメモリチップCP1-0~CP1-3それぞれが積層されたMCP(Multi Chip Package)として実装され得る。半導体記憶装置1がMCPとして実装される場合、半導体記憶装置1では、ブリッジチップBCおよび複数のメモリチップCP0-0~CP0-3,CP1-0~CP1-3の周囲が、モールド樹脂で封止されていてもよい。
【0015】
また、半導体記憶装置1は、複数のメモリチップCP0-0~CP0-3,CP1-0~CP1-3とブリッジチップBCとを接続する複数のチャネルを備える。この複数のチャネルのそれぞれを、NAND型のフラッシュメモリを接続するチャネルという意味で、メモリチャネルMCHと表記する。
【0016】
図1の例では、半導体記憶装置1は、複数のメモリチャネルMCHとして、メモリチャネルMCH0,MCH1を備える。そして、メモリチャネルMCH0を介してブリッジチップBCに4つのメモリチップCP0-0~CP0-3が接続され、メモリチャネルMCH1を介してブリッジチップBCに4つのメモリチップCP1-0~CP1-3が接続される。
【0017】
それぞれのメモリチャネルMCHは、所定の規格に基づき構成される。各メモリチップCP0-0~CP0-3,CP1-0~CP1-3がNAND型フラッシュメモリである場合、所定の規格は、例えば、トグルDDR規格である。
【0018】
なお、半導体記憶装置1が備えるメモリチップCPの数は8個に限定されない。また、ブリッジチップBCと複数のメモリチップCPとを接続するメモリチャネルMCHの数は2個に限定されない。
【0019】
なお、ブリッジチップBCは、第1装置の一例である。メモリチップCP0-0~CP0-3,CP1-0~CP1-3のそれぞれは、第2装置の一例である。各メモリチャネルMCHは、第1チャネルの一例である。各メモリチャネルMCHは、第2チャネルの一例でもある。
【0020】
以降、メモリチップCP0-0~CP0-3,CP1-0~CP1-3のそれぞれを、メモリチップCPと表記することがある。また、メモリチップCP0-0~CP0-3のそれぞれを、メモリチップCP0と表記することがある。また、メモリチップCP1-0~CP1-3のそれぞれを、メモリチップCP1と表記することがある。
【0021】
半導体記憶装置1は、1つのチャネルを介してメモリコントローラMCに接続される。この1つのチャネルを、ブリッジチップBCから見てホスト側のチャネルという意味で、ホストチャネルHCHと表記する。
【0022】
ホストチャネルHCHは、所定の規格に基づき構成される。各メモリチップCPがNAND型フラッシュメモリである場合、所定の規格は、例えば、トグルDDR規格である。
【0023】
なお、ホストチャネルHCHは、第2チャネルの一例である。ホストチャネルHCHは、第1チャネルの一例でもある。
【0024】
ホストチャネルHCHは、チップイネーブル信号CEnを転送する信号線、コマンドラッチ信号CLEを転送する信号線、アドレスラッチ信号ALEを転送する信号線、ライトイネーブル信号WEnを転送する信号線、リードイネーブル信号RE/REnを転送する信号線、データストローブ信号DQS/DQSnを転送する信号線、所定のビット幅(ここでは一例として8ビットの幅)を有するデータ信号DQ[7:0]を転送する信号線、レディービジー信号R/Bn_1を転送する信号線、およびレディービジー信号R/Bn_2を転送する信号線を含む。なお、信号を表す符号の末尾に記された「n」は、負論理で動作せしめられる信号であることを表す。各信号が負論理で動作せしめられるか正論理で動作せしめられるかは任意に設計され得る。
【0025】
チップイネーブル信号CEnは、アクセスの対象のメモリチップCPをイネーブル状態とするための信号である。データストローブ信号DQS/DQSnは、データ信号DQ[7:0]で送信されるデータを相手装置に取り込むように指示する信号である。データストローブ信号DQS/DQSnは、データストローブ信号DQSとデータストローブ信号DQSnとによって構成される差動信号である。コマンドラッチイネーブル信号CLEは、データ信号DQ[7:0]がコマンドであることを示す信号である。アドレスラッチイネーブル信号ALEは、データ信号DQ[7:0]がアドレスであることを示す信号である。ライトイネーブル信号WEnは、データ信号DQ[7:0]で送信されるコマンドまたはアドレスを取り込むように相手装置に指示する信号である。リードイネーブル信号RE/REnは、データ信号DQ[7:0]を出力するように相手装置に指示する信号である。リードイネーブル信号RE/REnは、リードイネーブル信号REおよびリードイネーブル信号REnによって構成される差動信号である。レディービジー信号R/Bn_1およびレディービジー信号R/Bn_2は、コマンドの受信を待機している状態であるレディー状態であるかコマンドを受信しても実行できない状態であるビジー状態であるかを示す信号である。なお、ホストチャネルHCHが含むレディービジー信号R/Bnを転送する信号線の構成は上記された例に限定されない。例えば、ホストチャネルHCHは、レディービジー信号R/Bnに関しては、メモリチャネルMCH0にかかるレディービジー信号R/Bnと、メモリチャネルMCH1にかかるレディービジー信号R/Bnと、からワイヤードOR接続などによって生成された一つのレディービジー信号R/Bnを転送するための1つの信号線を備えていてもよい。
【0026】
メモリチャネルMCH0,MCH1のそれぞれは、ホストチャネルHCHの信号群と同種の信号群を送受信できる。即ち、メモリチャネルMCH0,MCH1のそれぞれは、チップイネーブル信号CEnを転送する信号線、コマンドラッチ信号CLEを転送する信号線、アドレスラッチ信号ALEを転送する信号線、ライトイネーブル信号WEnを転送する信号線、リードイネーブル信号RE/REnを転送する信号線、データストローブ信号DQS/DQSnを転送する信号線、データ信号DQ[7:0]を転送する信号線群、およびレディービジー信号R/Bnを転送する信号線、を備えている。
【0027】
図2は、実施形態のメモリチップCPの構成例を示す図である。メモリチップCPは、アクセス回路201およびメモリセルアレイ202を備える。
【0028】
メモリセルアレイ202は、複数の物理ブロックBLK(BLK0、BLK1、…)を備える。各物理ブロックBLKは、複数の不揮発性メモリセルトランジスタの集合である。各物理ブロックBLKは、ページと称する記憶領域を複数備える。
【0029】
アクセス回路201は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。アクセス回路201は、メモリコントローラMCからブリッジチップBCを介して受信する指示に応じて、メモリセルアレイ202に対し、データのライト、データのリード、またはデータのイレースを実行する。
【0030】
具体的には、アクセス回路201は、ブリッジチップBCを介してメモリコントローラMCからページ単位のデータの入力を受け付けて、受け付けたページ単位のデータをメモリセルアレイ202にライトすることができる。また、アクセス回路201は、メモリセルアレイ202からページ単位のデータをリードして、リードしたページ単位のデータをクラスタと称されるページよりも小さいサイズのデータ毎に、ブリッジチップBCを介してメモリコントローラMCに出力することができる。また、アクセス回路201は、物理ブロックBLKでデータのイレースを実行することができる。
【0031】
なお、アクセス回路201およびメモリセルアレイ202は、互いに独立に動作可能な複数のプレーンと称する単位に分割されていてもよい。
【0032】
図3は、実施形態のブリッジチップBCと各メモリチップCPとの間のより詳細な接続関係を説明するための模式的な図である。
【0033】
図3に示すように、4つのメモリチップCP0-0~CP0-3は、メモリチャネルMCH0に共通接続される。同様に、4つのメモリチップCP1-0~CP1-3は、メモリチャネルMCH1に共通接続される。
【0034】
なお、メモリチップCP0-0~CP0-3、CP1-0~CP1-3は、対応するメモリチャネルMCHを構成する全ての信号線に共通接続されていなくてもよい。メモリチップCP0-0~CP0-3、CP1-0~CP1-3は、対応するメモリチャネルMCHを構成する信号線のうちのデータ信号DQ[7:0]を転送する信号線を除くいくつかの信号線はブリッジチップBCと個別のメモリチップCPとを一対一に接続するように構成されてもよい。
【0035】
上記のようにブリッジチップBCと各メモリチップCPとが接続されているため、ブリッジチップBCは、メモリチャネルMCH0を介したデータ転送と、メモリチャネルMCH1を介したデータ転送と、を互いに独立に実行し得る。そして、メモリコントローラMCとブリッジチップBCとの間を接続するホストチャネルHCHは、メモリチャネルMCH0を介したデータ転送と、メモリチャネルMCH1を介したデータ転送と、が並行して実行された場合でもブリッジチップBCにおいて転送データが滞ることを防ぐように制御される。このため、ホストチャネルHCHは、メモリチャネルMCH0の転送レートと、メモリチャネルMCH1の転送レートと、を合わせた転送レートでデータを転送することが可能とされる。つまり、ホストチャネルHCHは、メモリチャネルMCHの2倍の転送レートでデータを転送することが可能である。
【0036】
メモリコントローラMCは、メモリコントローラMCとメモリチップCPの群との間のデータ転送の転送レートをできるだけ高くするために、4つのメモリチップCP0-0~CP0-3の何れかをアクセス先とするデータ転送と、4つのメモリチップCP1-0~CP1-3の何れかをアクセス先とするデータ転送と、の間で互いにアクセス種別、転送サイズ、および転送タイミングが合致するように、メモリチップCP0-0~CP0-3、CP1-0~CP1-3に対するアクセスを行う。なお、アクセス種別は、リードおよびライトを含む。
【0037】
例えば、各メモリチップCPには、半導体記憶装置1内でユニークな識別番号であるLUN(Logical Unit Number)が与えられる。上記のアクセス制御を実現するために、メモリコントローラMCは、各メモリチップCPに与えられたLUNとメモリチップCPの接続先のメモリチャネルMCHとの関係を予め記憶する。
図3に示す例では、メモリチップCP0-0にはLUN0、メモリチップCP0-1にはLUN1、メモリチップCP0-2にはLUN2、メモリチップCP0-3にはLUN3、メモリチップCP1-0にはLUN4、メモリチップCP1-1にはLUN5、メモリチップCP1-2にはLUN6、メモリチップCP1-3にはLUN7が与えられている。そして、メモリコントローラMCは、LUN0~LUN3で識別される4つのメモリチップCP(即ちメモリチップCP0-1~CP0-3)はメモリチャネルMCH0に接続され、LUN4~LUN7で識別される4つのメモリチップCP(即ちメモリチップCP1-1~CP1-3)はメモリチャネルMCH1に接続されていることを予め記憶する。
【0038】
なお、一般的なメモリシステムとして、メモリチップがブリッジチップを介さずにメモリコントローラに接続されるメモリシステムが知られている。当該一般的なメモリシステムに搭載されるメモリコントローラを製造する製造者にとって、ブリッジチップを適用したシステムの専用にメモリコントローラを新しく設計することは、設計に要する労力が大きく、コストの点でも負担が大きい。よって、一般的なメモリシステムに搭載され得るメモリコントローラに対するわずかな設計変更だけでブリッジチップが適用されたメモリシステムも搭載可能にすることが望まれる。
【0039】
また、メモリコントローラを、設計変更なくまたはわずかな設計変更だけで、一般的なメモリシステムと、ブリッジチップが適用されたメモリシステムと、の何れにも搭載可能にすることが望まれる。
【0040】
実施形態のメモリコントローラMCは、一般的なメモリシステムに搭載されるメモリコントローラに対するわずかな設計変更で得られる、好適な構成を有する。
【0041】
さらに、実施形態のメモリコントローラMCは、設定をわずかに変更するだけで、例えば
図4に示すように、ブリッジチップBCを介さずにメモリチップCPが接続可能となるように構成される。なお、
図4に示す例では、実施形態のメモリコントローラMCは、ブリッジチップBCを有さないメモリシステムSYSaに搭載されている。そして、メモリチップCP2-0~CP2-3がチャネルCHを介してメモリコントローラMCに接続されている。チャネルCHは、例えば、ホストチャネルHCHまたはメモリチャネルMCHと同様の構成を有する。
【0042】
図5は、実施形態のメモリコントローラMCのハードウェア構成の一例を示す図である。
【0043】
メモリコントローラMCは、ホストインタフェースコントローラ(ホストI/Fコントローラ)10、CPU(Central Processing Unit)11、スケジューラ12、バス13、第1フラッシュコントローラ14-0、第2フラッシュコントローラ14-1、および分割・結合回路15を備える。なお、第1フラッシュコントローラ14-0、第2フラッシュコントローラ14-1のそれぞれを、フラッシュコントローラ14と表記することがある。
【0044】
ホストI/Fコントローラ10、CPU11、RAM2、およびスケジューラ12は、バス13に電気的に接続される。
【0045】
なお、メモリコントローラMCは、一例では、SoC(System-on-a-Chip)として構成される。メモリコントローラMCは、複数のチップによって構成されてもよい。メモリコントローラMCは、RAM2を含む1つのSoCとして構成されてもよい。
【0046】
各フラッシュコントローラ14は、第1回路の一例である。分割・結合回路15は、第2回路の一例である。CPU11は、第3回路の一例である。スケジューラ12は、第4回路の一例である。
【0047】
ホストI/Fコントローラ10は、ホストHSを相手とした信号の転送の制御を実行する。例えば、ホストI/Fコントローラ10は、ホストHSからの各種コマンドを受け付ける。また、ホストI/Fコントローラ10は、ホストHSに対してデータを転送する。
【0048】
CPU11は、メモリコントローラMC全体の制御を実行するプロセッサである。CPU11は、ファームウェアプログラムに基づいて当該制御を実行する。CPU11は、当該制御の一環として、ホストHSからのアクセスコマンドに含まれるアドレス情報に基づき、半導体記憶装置1におけるアクセス先の特定を行う。そして、CPU11は特定したアクセス先に対するアクセスの要求であるアクセス要求を生成する。アクセス要求は、アクセス先を示すアドレス情報、アクセス種別の指定、および転送データのサイズの指定を含む。
【0049】
各フラッシュコントローラ14は、CPU11が生成したアクセス要求に基づき、1つのメモリチップCPをアクセス先とした、メモリコントローラMCと半導体記憶装置1との間のデータ転送を制御する。各フラッシュコントローラ14は、アクセス要求によって指定されたアクセス先のメモリチップCPに対し、アクセス要求によって指定されたアクセス種別の、アクセス要求によって指定されたサイズのデータの転送を実行する。
【0050】
また、各フラッシュコントローラ14は、転送データに対してエラー抑制にかかる種々の処理を行う。エラー抑制にかかる種々の処理は、一例として、誤り訂正符号化、誤り訂正、ランダマイズ処理、およびランダマイズ処理の逆処理を含む。
【0051】
具体的には、各フラッシュコントローラ14は、ECC回路(Error Correction Code circuit:ECC)140と、ランダマイザ141と、を備える。
【0052】
ECC140は、半導体記憶装置1に送信されるデータに対し、クラスタ単位で誤り訂正符号化する。また、ECC140は、半導体記憶装置1から受信したデータに対し、クラスタ単位で誤り訂正を行う。
【0053】
ランダマイザ141は、半導体記憶装置1に送信されるデータに対し、「0」の出現頻度と「1」の出現頻度とを均一にするランダマイズ処理を実行する。また、ランダマイザ141は、半導体記憶装置1から受信したデータに対し、ランダマイズ処理の逆処理を実行することで、当該データをランダマイズ処理前の状態に復元する。
【0054】
スケジューラ12は、バッファメモリ120と、プロセッサ121と、を備える。バッファメモリ120は、CPU11によって生成されるアクセス要求を順次受け付ける。バッファメモリ120に溜まったアクセス要求の数が2以上になったとき、プロセッサ121は、当該2以上のアクセス要求から、4つのメモリチップCP0-0~CP0-3の何れかをアクセス先とするアクセス要求と、4つのメモリチップCP1-0~CP1-3の何れかをアクセス先とするアクセス要求と、を対にして取得する。ただし、プロセッサ121は、アクセス種別および転送サイズが共通する2つのアクセス要求を対にする。プロセッサ121は、対を構成する2つのアクセス要求のうちの一を第1フラッシュコントローラ14-0に、対を構成する2つのアクセス要求のうちの他を第2フラッシュコントローラ14-1に、同時に入力する。
【0055】
スケジューラ12は、2つのメモリチャネルMCHのそれぞれを、2つのフラッシュコントローラ14の1つと一対一に対応付ける。そして、スケジューラ12は、対を構成する2つのアクセス要求のうちの1つのアクセス要求を、当該アクセス要求によってアクセス先として指定されたメモリチップCPが接続されたメモリチャネルMCHに対応するフラッシュコントローラ14に入力する。また、スケジューラ12は、対を構成する2つのアクセス要求のうちの他の1つのアクセス要求を、当該アクセス要求によってアクセス先として指定されたメモリチップCPが接続されたメモリチャネルMCHに対応するフラッシュコントローラ14に入力する。
【0056】
ここでは一例として、メモリチャネルMCH0は第1フラッシュコントローラ14-0に対応付けられ、メモリチャネルMCH1は第2フラッシュコントローラ14-1に対応付けられていることとする。なお、2つのメモリチャネルMCHと2つのフラッシュコントローラ14との対応は、必ずしも固定されていなくてもよい。2つのメモリチャネルMCHと2つのフラッシュコントローラ14との対応は、動的に変更されてもよい。
【0057】
2つのフラッシュコントローラ14に、対を構成するアクセス要求が同時に入力されると、各フラッシュコントローラ14は、入力されたアクセス要求に基づき、アクセス先のメモリチップCPに対するデータ転送を同時に開始する。
【0058】
分割・結合回路15は、2つのフラッシュコントローラ14とホストチャネルHCHとの間に配置される。
【0059】
分割・結合回路15は、第1フラッシュコントローラ14-0および第2フラッシュコントローラ14-1から並行して転送データが入力された場合、第1フラッシュコントローラ14-0から入力された転送データと第2フラッシュコントローラ14-1から入力された転送データとを結合して、結合した転送データをメモリチャネルMCHの転送レートの倍の転送レートでホストチャネルHCHを介してブリッジチップBCに転送する。
【0060】
また、分割・結合回路15は、4つのメモリチップCP0-0~CP0-3の何れかから出力されたデータと、4つのメモリチップCP1-0~CP1-3の何れかから出力されたデータと、が結合されたデータを、ホストチャネルHCHを介してメモリチャネルMCHの倍の転送レートで受信した場合、受信したデータを2つに分割する。そして、分割・結合回路15は、分割によって生成された2つのデータの一をメモリチャネルMCHと同じ転送レートで第1フラッシュコントローラ14-0に転送し、分割によって生成された2つのデータの他をメモリチャネルMCHと同じ転送レートで第2フラッシュコントローラ14-1に転送する。
【0061】
なお、CPU11の機能の一部または全部は、FPGA(field-programmable gate array)またはASIC(application specific integrated circuit)などのハードウェア回路によって実現されてもよい。また、スケジューラ12の機能の一部または全部は、CPU11がファームウェアプログラムを実行することによって実現されてもよい。
【0062】
図6は、実施形態のブリッジチップBCのハードウェア構成の一例を示す図である。
【0063】
ブリッジチップBCは、第1インタフェース101と、2つの第2インタフェース102(102-0、102-1)と、コントローラ103と、を備える。
【0064】
第1インタフェース101は、メモリコントローラMCに対してホストチャネルHCHを介した信号の送受信を行うPHY回路である。
【0065】
2つの第2インタフェース102のうちの第2インタフェース102-0は、4個のメモリチップCP0-0~CP0-3に対してメモリチャネルMCH0を介した信号の送受信を行うPHY回路である。2つの第2インタフェース102のうちの第2インタフェース102-1は、4個のメモリチップCP1-0~CP1-3に対してメモリチャネルMCH1を介した信号の送受信を行うPHY回路である。
【0066】
コントローラ103は、第1インタフェース101と、2つの第2インタフェース102と、の間に配されている。コントローラ103は、第1インタフェース101と、2つの第2インタフェース102と、の間の情報の授受を制御する。
【0067】
コントローラ103は、コマンドデコーダ111、分割・結合回路112、およびレジスタ113を有する。
【0068】
コマンドデコーダ111は、メモリコントローラMCからホストチャネルHCHを介して受けたコマンドを解析する。コマンドデコーダ111は、解析結果に応じて、メモリチップCPに対するコマンドを発行することができる。
【0069】
レジスタ113は、ブリッジチップBCの動作を制御するための各種情報が格納されるメモリである。
【0070】
分割・結合回路112は、2つの第2インタフェース102から、4つのメモリチップCP0-0~CP0-3の何れかから出力されたデータと、4つのメモリチップCP1-0~CP1-3の何れかから出力されたデータと、が同時に入力された場合、当該2つのデータを結合する。分割・結合回路112は、結合したデータを、メモリチャネルMCHの転送レートの倍の転送レートで第1インタフェース101に供給する。第1インタフェース101は、結合したデータを、メモリチャネルMCHの転送レートの倍の転送レートでホストチャネルHCHを介してメモリコントローラMCに送る。
【0071】
また、分割・結合回路112は、4つのメモリチップCP0-0~CP0-3の何れかを送信先とするデータと、4つのメモリチップCP1-0~CP1-3の何れかを送信先とするデータと、が結合されたデータをホストチャネルHCHおよび第1インタフェース101を介してメモリチャネルMCHの倍の転送レートで受信した場合、受信したデータを2つに分割する。そして、分割・結合回路15は、分割によって生成された2つのデータの一をメモリチャネルMCHと同じ転送レートで第2インタフェース102-0に転送し、分割によって生成された2つのデータの他をメモリチャネルMCHと同じ転送レートで第2インタフェース102-1に転送する。
【0072】
図7は、実施形態の分割・結合回路15,112の、データを結合する機能の一例を説明するための図である。分割・結合回路15と、分割・結合回路112と、は同一の機能を有する。よってここでは、分割・結合回路15,112を代表して、分割・結合回路15として図示し、その機能について説明する。
【0073】
図7は、分割・結合回路15に、各々1バイトのデータA0、データA1、データA2、データA3のデータ列が入力され、これと同時に、各々1バイトのデータB0、データB1、データB2、データB3のデータ列が入力されたケースにおける結合方法を示す。このケースでは、分割・結合回路15は、入力された2つのデータ列から、2バイトずつ交互にデータを取得して、取得した2バイトのデータを取得した順で順次結合する。これによって、分割・結合回路15は、データA0、データA1、データB0、データB1、データA2、データA3、データB2、およびデータB3がこの順で並んだデータ列を生成する。そして、分割・結合回路15は、生成したデータA0、データA1、データB0、データB1、データA2、データA3、データB2、およびデータB3のデータ列を出力する。
【0074】
分割・結合回路15は、2つのデータ列が同時に入力されたときのそれぞれのデータ列の転送周波数の2倍の転送周波数で、2つのデータ列を結合して生成した1つのデータ列を出力する。分割・結合回路15には、2つのデータ列のそれぞれがメモリチャネルMCHの転送レートと同じ転送レートで入力される。よって、分割・結合回路15は、2つのデータ列を結合して生成した1つのデータ列をメモリチャネルMCHの転送レートの2倍の転送レートで出力する。
【0075】
図8は、実施形態の分割・結合回路15,112の、データを分割する機能の一例を説明するための図である。ここでも、分割・結合回路15,112を代表して、分割・結合回路15として図示し、その機能について説明する。
【0076】
図8は、分割・結合回路15に、各々1バイトのデータC0、データC1、データC2、データC3、データC4、データC5、データC6、およびデータC7のデータ列が入力されたケースにおける分割方法を示す。このケースでは、分割・結合回路15は、入力されたデータ列から2バイトずつデータを取得して、取得した2バイトのデータを2つの経路に交互に振り分ける。これによって、分割・結合回路15は、入力されたデータC0、データC1、データC2、データC3、データC4、データC5、データC6、およびデータC7のデータ列から、データC0、データC1、データC4、およびデータC5のデータ列と、データC2、データC3、データC6、およびデータC7のデータ列と、の2つのデータ列を生成し、生成した2つのデータ列を出力する。
【0077】
分割・結合回路15は、入力された1つのデータ列の転送周波数の半分の転送周波数で、分割によって生成した2つのデータ列のそれぞれを出力する。分割・結合回路15には、1つのデータ列がメモリチャネルMCHの転送レートの2倍の転送レートで入力される。よって、分割・結合回路15は、分割によって生成した2つのデータ列のそれぞれをメモリチャネルMCHの転送レートと同じ転送レートで出力する。
【0078】
なお、分割・結合回路15,112によるデータ列の結合の方法およびデータ列の分割の方法は、上記に述べた例に限定されない。
【0079】
例えば、分割・結合回路15,112は、2つのチャネルから入力された、それぞれが8ビット幅の2つの転送データそれぞれを4ビット幅の転送データに変換し、変換した4ビット幅の2つの転送データを結合し、統合した8ビット幅の転送データを結合前の倍の転送周波数で1つのチャネルに出力してもよい。
【0080】
また、分割・結合回路15,112は、1つのチャネルか8ビット幅の転送データを受信した場合、当該8ビット幅の転送データを2つの4ビット幅の転送データに分割する。そして、分割・結合回路15,112は、分割によって得られた時間的に連続する2つの4ビット幅の転送データのそれぞれを8ビット幅の転送データに変換し、変換後の2つの8ビット幅の転送データのそれぞれを、分割前の転送データの半分の転送周波数で2つのチャネルに出力してもよい。
【0081】
図9は、実施形態のメモリシステムSYSにおけるデータの流れの一例を説明するための模式的な図である。
【0082】
図9では、メモリシステムSYSが備える構成要素のうちのいくつかの構成要素の図示が省略されている。また、白抜き矢印は、メモリチャネルMCH0に接続されたメモリチップCP0をアクセス先としたデータ転送を示し、塗りつぶし矢印は、メモリチャネルMCH1に接続されたメモリチップCP1をアクセス先としたデータ転送を示す。そして、縦縞ハッチングされた矢印は、メモリチャネルMCH0に接続されたメモリチップCP0をアクセス先とした転送データと、メモリチャネルMCH1に接続されたメモリチップCP1をアクセス先とした転送データと、が結合されたデータのデータ転送を示す。また、メモリチャネルMCHの転送レートをR[GB/s]とする。よって、2つのデータ列が結合された1つのデータ列がホストチャネルHCHでは転送される場合、ホストチャネルHCHでの転送レートは2R[GB/s]とされる。
【0083】
例えば、スケジューラ12は、メモリチャネルMCH0に接続された何れかのメモリチップCP0がライト先として指定したデータD0、データD1、データD2、およびデータD3のデータ列のライト要求と、メモリチャネルMCH1に接続された何れかのメモリチップCP1がライト先として指定したデータE0、データE1、データE2、およびデータE3のデータ列のライト要求と、がバッファメモリ120に格納された場合、データD0、データD1、データD2、およびデータD3のデータ列のライト要求を第1フラッシュコントローラ14-0に入力し、それと同時に、データE0、データE1、データE2、およびデータE3のデータ列のライト要求を第2フラッシュコントローラ14-1に入力する。
【0084】
第1フラッシュコントローラ14-0は、入力されたライト要求に応じて、データD0、データD1、データD2、およびデータデータD3のデータ列を取得する。具体的には、データD0、データD1、データD2、およびデータD3のデータ列は、予めホストI/Fコントローラ10によってホストHSからメモリシステムSYSに取得されて、RAM2内のバッファエリアに格納されている。第1フラッシュコントローラ14-0は、ライト要求に応じて、データD0、データD1、データD2、およびデータD3のデータ列を当該バッファエリアからスケジューラ12を介して取得する。そして、第1フラッシュコントローラ14-0は、ECC140によって誤り訂正符号化を実行し、ランダマイザ141によってランダマイズ処理を実行する。そして、第1フラッシュコントローラ14-0は、各種処理後のデータD0、データD1、データD2、およびデータD3のデータ列をR[GB/s]で出力する。
【0085】
第1フラッシュコントローラ14-0と同様、第2フラッシュコントローラ14-1は、予めバッファエリアに格納されたデータE0、データE1、データE2、およびデータE3のデータ列を、ライト要求に応じて、バッファエリアからスケジューラ12を介して取得する。そして、第2フラッシュコントローラ14-1は、データE0、データE1、データE2、およびデータE3のデータ列に対し、ECC140によって誤り訂正符号化を実行し、ランダマイザ141によってランダマイズ処理を実行する。そして、第2フラッシュコントローラ14-1は、各種処理後のデータE0、データE1、データE2、およびデータE3のデータ列をR[GB/s]で出力する。
【0086】
各種処理後のデータD0、データD1、データD2、およびデータD3のデータ列の分割・結合回路15への入力と、各種処理後のデータE0、データE1、データE2、およびデータE3のデータ列の分割・結合回路15への入力と、が同時に行われる。分割・結合回路15は、入力された2つのデータ列を結合することで、データD0、データD1、データE0、データE1、データD2、データD3、データE2、およびデータE3のデータ列を生成し、生成したこのデータ列を2R[GB/s]の転送レートで出力する。
【0087】
分割・結合回路15が生成したデータ列は、2R[GB/s]の転送レートでホストチャネルHCHを転送されて、分割・結合回路112において結合前の2つのデータ列に復元され、復元された2つのデータ列のそれぞれはR[GB/s]の転送レートで出力される。復元された2つのデータ列のうちのデータD0、データD1、データD2、およびデータD3のデータ列は、メモリチャネルMCH0を介してライト先のメモリチップCP0に転送される。復元された2つのデータ列のうちのデータE0、データE1、データE2、およびデータE3のデータ列は、メモリチャネルMCH1を介してライト先のメモリチップCP1に転送される。
【0088】
スケジューラ12は、メモリチャネルMCH0に接続された何れかのメモリチップCP0に格納されたデータF0、データF1、データF2、およびデータF3のデータ列のリード要求と、メモリチャネルMCH1に接続された何れかのメモリチップCP1に格納されたデータG0、データG1、データG2、およびデータG3のデータ列のリード要求と、がバッファメモリ120に格納された場合、データF0、データF1、データF2、およびデータF3のデータ列のリード要求を第1フラッシュコントローラ14-0に入力し、それと同時に、データG0、データG1、データG2、およびデータG3のデータ列のリード要求を第2フラッシュコントローラ14-1に入力する。
【0089】
第1フラッシュコントローラ14-0は、リード要求に応じて、データF0、データF1、データF2、およびデータF3のデータ列を格納するメモリチップCP0にデータF0、データF1、データF2、およびデータF3のデータ列の出力を促す。出力を促されたメモリチップCP0は、データF0、データF1、データF2、およびデータF3のデータ列を出力する。
【0090】
第2フラッシュコントローラ14-1は、リード要求に応じて、データG0、データG1、データG2、およびデータG3のデータ列を格納するメモリチップCP1にデータG0、データG1、データG2、およびデータG3のデータ列の出力を促す。出力を促されたメモリチップCP1は、データG0、データG1、データG2、およびデータG3のデータ列を出力する。
【0091】
データF0、データF1、データF2、およびデータF3のデータ列は、メモリチャネルMCH0をR[GB/s]の転送レートで転送されて分割・結合回路112に入力される。それと同時に、データG0、データG1、データG2、およびデータG3のデータ列は、メモリチャネルMCH1をR[GB/s]の転送レートで転送されて分割・結合回路112に入力される。
【0092】
分割・結合回路112は、入力された2つのデータ列を結合することで、データF0、データF1、データG0、データG1、データF2、データF3、データG2、およびデータG3のデータ列を生成し、生成したこのデータ列を2R[GB/s]の転送レートで出力する。
【0093】
分割・結合回路112が出力したデータ列は、2R[GB/s]の転送レートでホストチャネルHCHを転送されて、分割・結合回路15において結合前の2つのデータ列に復元され、復元された2つのデータ列のそれぞれはR[GB/s]の転送レートで出力される。復元された2つのデータ列のうちのデータF0、データF1、データF2、およびデータF3のデータ列は、第1フラッシュコントローラ14-0にR[GB/s]の転送レートで入力される。復元された2つのデータ列のうちのデータG0、データG1、データG2、およびデータG3のデータ列は、第2フラッシュコントローラ14-1にR[GB/s]の転送レートで入力される。
【0094】
第1フラッシュコントローラ14-0では、データF0、データF1、データF2、およびデータF3のデータ列に対して、ランダマイザ141によるランダマイズ処理の逆処理と、ECC140による誤り訂正と、が実行される。そして、第1フラッシュコントローラ14-0は、各種処理後のデータF0、データF1、データF2、およびデータF3のデータ列を、スケジューラ12を介してRAM2内のバッファエリアに格納する。
【0095】
第1フラッシュコントローラ14-0と同様、第2フラッシュコントローラ14-1では、データG0、データG1、データG2、およびデータG3のデータ列に対して、ランダマイザ141によるランダマイズ処理の逆処理と、ECC140による誤り訂正と、が実行される。そして、第2フラッシュコントローラ14-1は、各種処理後のデータG0、データG1、データG2、およびデータG3のデータ列を、スケジューラ12を介してRAM2内のバッファエリアに格納する。
【0096】
ここで、実施形態と比較される技術について説明する。実施形態と比較される技術を、比較例と表記する。比較例によれば、メモリコントローラは、1つのホストチャネルに対して1つのフラッシュコントローラを備える。その場合、フラッシュコントローラは、メモリチャネルの転送レートにメモリチャネルの数を乗じて得られる転送レートでデータを処理できるスペックが要求される。よって、一般的な構成のメモリシステムのメモリコントローラを流用できないため、製造者は、上記したスペックを有するフラッシュコントローラを新たに設計する必要がある。
【0097】
また、比較例では、フラッシュコントローラは、複数のデータ列が結合された1つのデータ列に対して誤り訂正符号化および誤り訂正を実行する。よって、製造者は、誤り訂正符号化および誤り訂正のためのフレームのサイズを変更するために、フラッシュコントローラ内のECCやファームウェアプログラムにおけるデータの取り扱い単位を設計しなおす必要がある。
【0098】
また、複数のデータ列が1つに結合された状態で誤り訂正符号化されて、誤り訂正符号化された1つのデータ列は複数に分割されて接続先のメモリチャネルMCHが異なる複数のメモリチップCPに分散して格納される。ECCにおける誤り訂正が失敗するなどによって、データ列の再リードの必要が生じた場合、複数のメモリチップCPの全部からデータ列のリードを行うことができるように、ファームウェアプログラムを設計し直す必要がある。
【0099】
また、比較例では、製造者は、ランダマイザに関し、単に動作速度を向上させるだけでなく、分割後の各データ列において「0」の出現頻度と「1」の出現頻度とが等しくなることが保障されたランダマイズ処理を複数のデータ列が結合された1つのデータ列に対して実行できるよう、新たに設計する必要がある。
【0100】
これに対し、実施形態のメモリコントローラMCは、1つのホストチャネルHCHに対し、メモリチャネルMCHの数に対応できる十分な数のフラッシュコントローラ14と、分割・結合回路15と、を備える。分割・結合回路15は、メモリチャネルMCHの数に対応した数のフラッシュコントローラ14から出力された転送データを結合したり、ホストチャネルHCHを経由して受信した転送データを分割してメモリチャネルMCHの数に対応した数のフラッシュコントローラ14に分配したりする。よって、各フラッシュコントローラ14は、メモリチャネルMCHの転送レートと同じ転送レートでデータに対する誤り訂正符号化、誤り訂正、ランダマイズ処理、およびランダマイズ処理の逆処理のそれぞれを実行できるスペックを有していればよい。
【0101】
また、実施形態によれば、各フラッシュコントローラ14は、結合される前の、1つのメモリチップCPをアクセス先とした転送データに対して誤り訂正符号化、誤り訂正、ランダマイズ処理、およびランダマイズ処理の逆処理を行う。よって、メモリチップがブリッジチップを介さずにメモリコントローラに接続される一般的な構成のメモリシステムがすでに設計済みである場合、製造者は、その一般的なメモリシステムにおいて適用されたフラッシュコントローラを、実施形態のフラッシュコントローラ14としてそのまま流用することが可能である。
【0102】
また、各フラッシュコントローラ14では、1つのデータ列に結合される前の、1つのメモリチップCPをアクセス先とした転送データのデータ列を処理する。よって、一般的なメモリシステムにおいて適用されたファームウェアプログラムを大きく修正することなく実施形態のメモリシステムに適用することが可能である。
【0103】
つまり、実施形態のメモリシステムSYSは、一般的なメモリシステムに搭載され得るメモリコントローラに対するわずかな設計変更だけでブリッジチップBCが適用されたメモリシステムSYSに搭載される実施形態のメモリコントローラMCとして適用することが可能な、好適な構成を有する。
【0104】
なお、
図4を用いて説明したように、実施形態のメモリコントローラMCは、ブリッジチップBCを介さずにメモリチップCPを接続することも可能である。
【0105】
図10は、実施形態のメモリコントローラMCが一般的な構成のメモリシステムSYSaに適用された場合のメモリコントローラMCの設定の一例を示す模式的な図である。本図に示す例では、第1フラッシュコントローラ14-1は動作可能に設定され、第2フラッシュコントローラ14-1は動作しないように設定される。また、分割・結合回路15は、入力されたデータ列をそのまま、かつ転送レートを変更せずに出力するように設定される。
【0106】
スケジューラ12は、ホストチャネルHCHに接続された何れかのメモリチップCP2がライト先として指定されたデータH0、データH1、データH2、およびデータH3のデータ列のライト要求がバッファメモリ120に格納された場合、そのライト要求を第1フラッシュコントローラ14-0に入力する。
【0107】
第1フラッシュコントローラ14-0は、ライト要求に応じて、データH0、データH1、データH2、およびデータデータH3のデータ列を取得する。具体的には、データH0、データH1、データH2、およびデータH3のデータ列は、予めホストI/Fコントローラ10によってホストHSからメモリシステムSYSに取得されて、RAM2内のバッファエリアに格納されている。第1フラッシュコントローラ14-0は、ライト要求に応じて、データH0、データH1、データH2、およびデータH3のデータ列を当該バッファエリアからスケジューラ12を介して取得する。そして、第1フラッシュコントローラ14-0では、ECC140による誤り訂正符号化と、ランダマイザ141によるランダマイズ処理と、が実行される。そして、第1フラッシュコントローラ14-0は、各種処理後のデータH0、データH1、データH2、およびデータH3のデータ列をR[GB/s]で出力する。
【0108】
第1フラッシュコントローラ14-0から出力されたデータH0、データH1、データH2、およびデータH3のデータ列は、R[GB/s]の転送レートで分割・結合回路15に入力される。分割・結合回路15は、データH0、データH1、データH2、およびデータH3のデータ列をR[GB/s]の転送レートで出力する。
【0109】
分割・結合回路15から出力されたデータH0、データH1、データH2、およびデータH3のデータ列は、ホストチャネルHCHをR[GB/s]の転送レートで転送されて、ライト先として指定されたメモリチップCP2に入力される。
【0110】
また、例えば、スケジューラ12は、ホストチャネルHCHに接続された何れかのメモリチップCP2に格納されたデータI0、データI1、データI2、およびデータI3のデータ列のリード要求がバッファメモリ120に格納された場合、当該リード要求を第1フラッシュコントローラ14-0に入力する。
【0111】
第1フラッシュコントローラ14-0は、リード要求に応じて、データI0、データI1、データI2、およびデータI3のデータ列を格納するメモリチップCP2を制御して、当該メモリチップCP2にデータI0、データI1、データI2、およびデータI3のデータ列の出力を促す。出力を促されたメモリチップCP2は、データI0、データI1、データI2、およびデータI3のデータ列を出力する。
【0112】
データI0、データI1、データI2、およびデータI3のデータ列は、ホストチャネルHCHをR[GB/s]の転送レートで転送されて分割・結合回路15に入力される。分割・結合回路15は、データI0、データI1、データI2、およびデータI3のデータ列をR[GB/s]の転送レートで第1フラッシュコントローラ14-0に入力する。
【0113】
第1フラッシュコントローラ14-0では、データI0、データI1、データI2、およびデータI3のデータ列に対して、ランダマイザ141によるランダマイズ処理の逆処理と、ECC140による誤り訂正と、が実行される。そして、第1フラッシュコントローラ14-0は、各種処理後のデータI0、データI1、データI2、およびデータI3のデータ列を、スケジューラ12を介してRAM2内のバッファエリアに格納する。
【0114】
実施形態のメモリコントローラMCが備える各フラッシュコントローラ14は、結合される前の、1つのメモリチップCPをアクセス先とした転送データに対して誤り訂正符号化、誤り訂正、ランダマイズ処理、およびランダマイズ処理の逆処理を行うことができるように構成されている。よって、製造者は、
図10に示したように、メモリコントローラMCが備える複数のフラッシュコントローラ14のうちの1つのフラッシュコントローラ14のみを動作可能に設定することで、メモリコントローラMCを、ブリッジチップBCを有さないシステムにも適用することが可能である。
【0115】
つまり、メモリコントローラMCは、ごくわずかな変更でメモリシステムSYSaにも適用することが可能な、好適な構成を備える。
【0116】
続いて、実施形態のスケジューラ12の詳細を説明する。
【0117】
スケジューラ12が備えるバッファメモリ120には、CPU11によって生成されたアクセス要求が順次、格納される。
【0118】
図11は、実施形態のバッファメモリ120に格納されたアクセス要求の一覧の一例を示す図である。本図には、アクセス要求毎に、アクセス名とアクセス内容との対が描画されている。なお、アクセス名は、アクセス要求のIDである。アクセス内容は、アクセス先のメモリチップCPを示すLUN、転送データのサイズ、およびアクセス種別を含む。
図11および後に示す
図12では、アクセス名として「X」が与えられたアクセス要求を、アクセス要求#Xと表記する。
【0119】
前述したように、スケジューラ12が備えるプロセッサ121は、バッファメモリ120に格納された2以上のアクセス要求から、4つのメモリチップCP0-0~CP0-3の何れかをアクセス先とするアクセス要求と、4つのメモリチップCP1-0~CP1-3の何れかをアクセス先とするアクセス要求と、を対にして取得する。
【0120】
図12は、実施形態のスケジューラ12が備えるプロセッサ121によって取得される対の一例を示す図である。
【0121】
例えば、プロセッサ121は、LUN0、つまりメモリチャネルMCH0に接続されたメモリチップCP0-0、がアクセス先として指示され、指示された転送データのサイズが4[KB]であり、指示されたアクセス種別がリードであるアクセス要求#Aと、指示された転送データのサイズおよびアクセス種別がアクセス要求#Aと共通し、かつLUN7、つまりメモリチャネルMCH1に接続されたメモリチップCP1-3、がアクセス先として指示されたアクセス要求#Bと、を対にしてバッファメモリ120から取得する。そして、プロセッサ121は、指示されたアクセス先のメモリチップCPが接続されたメモリチャネルMCHがメモリチャネルMCH0であるアクセス要求#Aを第1フラッシュコントローラ14-0に入力し、指示されたアクセス先のメモリチップCPが接続されたメモリチャネルMCHがメモリチャネルMCH1であるアクセス要求#Bを第2フラッシュコントローラ14-1に入力する。
【0122】
同様に、プロセッサ121は、指示された転送データのサイズおよびアクセス種別が共通し、かつ指示されたアクセス先のメモリチップCPが接続されたメモリチャネルMCHが異なる2つのアクセス要求を順次、対として取得する。そして、プロセッサ121は、取得した対のうちの指示されたアクセス先のメモリチップCPが接続されたメモリチャネルMCHがメモリチャネルMCH0であるアクセス要求を第1フラッシュコントローラ14-0に入力し、指示されたアクセス先のメモリチップCPが接続されたメモリチャネルMCHがメモリチャネルMCH1であるアクセス要求を第2フラッシュコントローラ14-1に入力する。
【0123】
図12に示す例では、アクセス要求#Aとアクセス要求#Bとの対の後、プロセッサ121は、アクセス要求#Dとアクセス要求#Fとの対、アクセス要求#Gとアクセス要求#Eとの対、アクセス要求#Cとアクセス要求#Hとの対、をこの順で取得し、各対を構成する2つのアクセス要求のそれぞれを第1フラッシュコントローラ14-0または第2フラッシュコントローラ14-1に入力する。
【0124】
図13は、実施形態のスケジューラ12の動作の一例を示すフローチャートである。なお、ここでは、バッファメモリ120にアクセス要求が格納される動作の説明を省略する。アクセス要求がCPU11によって生成されると、当該アクセス要求は、
図13に示す一連の動作とは非同期に、バッファメモリ120に格納されることとする。
【0125】
まず、プロセッサ121は、バッファメモリ120に格納されている1以上のアクセス要求のうちから1つのアクセス要求を選択する(S101)。選択された1つのアクセス要求を、第1アクセス要求と表記する。
【0126】
続いて、プロセッサ121は、アクセス先として指示されたメモリチップCPが接続されたメモリチャネルMCHが第1アクセス要求と異なり、かつ指示された転送データのサイズおよびアクセス種別が第1アクセス要求と同じ1つのアクセス要求がバッファメモリ120に存在するか否かを判定する(S102)。メモリチャネルMCHが第1アクセス要求と異なり、かつ指示された転送データのサイズおよびアクセス種別が第1アクセス要求と同じアクセス要求を、第2アクセス要求と表記する。
【0127】
第2アクセス要求がバッファメモリ120に存在する場合(S102:Yes)、プロセッサ121は、第1アクセス要求および第2アクセス要求のそれぞれを、第1フラッシュコントローラ14-0および第2フラッシュコントローラ14-1のうちのアクセス先として指示されたメモリチップCPが接続されたメモリチャネルMCHに対応したフラッシュコントローラ14に同時に入力する(S103)。
【0128】
第2アクセス要求がバッファメモリ120に存在しない場合(S102:No)、またはS103の後、プロセッサ121は、未だフラッシュコントローラ14に入力していないアクセス要求がバッファメモリ120に存在するか否かを判定する(S104)。
【0129】
未だフラッシュコントローラ14に入力していないアクセス要求がバッファメモリ120に存在する場合(S104:Yes)、プロセッサ121は、未だフラッシュコントローラ14に入力していないアクセス要求のうちから新たにアクセス要求を選択する(S105)。そして、プロセッサ121は、S105において選択したアクセス要求を第1アクセス要求としてS102からの動作を繰り返す。
【0130】
未だフラッシュコントローラ14に入力していないアクセス要求がバッファメモリ120に存在しない場合(S104:No)、プロセッサ121は、S104の判定処理を再び実行する。これによって、プロセッサ121は、アクセス要求が新たにバッファメモリ120に格納されるまで、S105の処理の実行を待つ(postpone)。
【0131】
このように、
図12に示した例では、プロセッサ121は、バッファメモリ120内の1以上のアクセス要求のうちから4つのメモリチップCP0-0~CP0-3の何れかをアクセス先とするアクセス要求と、4つのメモリチップCP1-0~CP1-3の何れかをアクセス先とするアクセス要求と、を対が生成可能か否かを常に監視する。そして、対が生成可能である場合、プロセッサ121は、当該対をバッファメモリ120から取得して、対を構成する2つのアクセス要求のそれぞれを対応するフラッシュコントローラ14に入力する。
【0132】
なお、スケジューラ12の動作は種々に変形可能である。
図14は、実施形態のスケジューラ12の動作の別の一例を示すフローチャートである。ここでは、バッファメモリ120にアクセス要求が格納される動作の説明を省略する。アクセス要求がCPU11によって発行されると、当該アクセス要求は、
図14に示す一連の動作とは非同期に、バッファメモリ120に格納されることとする。
【0133】
まず、プロセッサ121は、所定数のアクセス要求がバッファメモリ120に存在するか否かを判定する(S201)。バッファメモリ120に格納されているアクセス要求の数が所定数に満たない場合(S201:No)、プロセッサ121は、S201の判定処理を再び実行することで、バッファメモリ120に格納されているアクセス要求の数が所定数に至るまで次の処理の実行を待つ(postpone)。
【0134】
所定数のアクセス要求がバッファメモリ120に存在する場合(S201:Yes)、プロセッサ121は、バッファメモリ120に格納されている所定数のアクセス要求のうちから1つのアクセス要求を選択する(S202)。S202の処理において選択されたアクセス要求を、第1アクセス要求と表記する。
【0135】
続いて、プロセッサ121は、アクセス先として指示されたメモリチップCPが接続されたメモリチャネルMCHが第1アクセス要求と異なり、かつ指示された転送データのサイズおよびアクセス種別が第1アクセス要求と同じアクセス要求がバッファメモリ120に存在するか否かを判定する(S203)。メモリチャネルMCHが第1アクセス要求と異なり、かつ指示された転送データのサイズおよびアクセス種別が第1アクセス要求と同じアクセス要求を、第2アクセス要求と表記する。
【0136】
第2アクセス要求がバッファメモリ120に存在する場合(S203:Yes)、プロセッサ121は、第1アクセス要求および第2アクセス要求のそれぞれを、第1フラッシュコントローラ14-0および第2フラッシュコントローラ14-1のうちのアクセス先として指示されたメモリチップCPが接続されたメモリチャネルMCHに対応したフラッシュコントローラ14に同時に入力する(S204)。
【0137】
第2アクセス要求がバッファメモリ120に存在しない場合(S203:No)、またはS204の後、プロセッサ121は、未だ第1アクセス要求として選択されていないアクセス要求がバッファメモリ120に存在するか否かを判定する(S205)。
【0138】
未だ第1アクセス要求として選択されていないアクセス要求がバッファメモリ120に存在する場合(S205:Yes)、プロセッサ121は、未だ第1アクセス要求として選択されていないアクセス要求のうちから新たにアクセス要求を選択する(S206)。そして、プロセッサ121は、S206において選択したアクセス要求を第1アクセス要求としてS203からの動作を繰り返す。
【0139】
未だ第1アクセス要求として選択されていないアクセス要求がバッファメモリ120に存在しない場合(S205:No)、プロセッサ121は、第1アクセス要求として選択した履歴をリセットして(S207)、S201の処理を再び実行する。
【0140】
このように、スケジューラ12は、バッファメモリ120に所定数のアクセス要求が溜まるまで、アクセス要求の対の生成を待ってもよい。
【0141】
以上では、1つのホストチャネルHCHによって1つの半導体記憶装置1がメモリコントローラMCに接続される例を説明した。実施形態の技術は、複数の半導体記憶装置1を備えたメモリシステムにも適用可能である。
【0142】
図15は、実施形態のメモリシステムの構成の別の一例を示す模式的な図である。本図に示すメモリシステムSYSbは、複数の半導体記憶装置1の一例として、2つの半導体記憶装置1を備える。2つの半導体記憶装置1の1つは、ホストチャネルHCH0によってメモリコントローラMCaに接続される。2つの半導体記憶装置1の他の1つは、ホストチャネルHCH1によってメモリコントローラMCaに接続される。
【0143】
メモリコントローラMCaは、スケジューラ12、2つのフラッシュコントローラ14、および分割・結合回路15のセットを、ホストチャネルHCH毎に備える。そして、各セットを構成するスケジューラ12、2つのフラッシュコントローラ14、および分割・結合回路15は、
図1~
図14を用いて説明した同名の構成要素と同じ動作を行う。
【0144】
また、以上では、半導体記憶装置1は、2つのメモリチャネルMCHを備える例を説明した。半導体記憶装置1は、3以上のメモリチャネルMCHを備え、それぞれのメモリチャネルMCHに1以上のメモリチップCPが接続されていてもよい。
【0145】
例えば、N(ただしNは2以上の整数)個のメモリチャネルMCHを備え、それぞれのメモリチャネルMCHに1以上のメモリチップCPが接続された半導体記憶装置1の制御を可能とするためには、メモリコントローラMCには、1つのホストチャネルHCHに対してN個またはN個より多いフラッシュコントローラ14が設けられる。そして、スケジューラ12は、バッファメモリ120に格納されたアクセス要求のうちから、指示された転送データのサイズおよびアクセス種別が共通し、かつ指示されたアクセス先のメモリチップCPが接続されたメモリチャネルMCHがそれぞれ異なるM(ただしMは2以上N以下の整数)個のアクセス要求のセットを順次、取得する。そして、スケジューラ12は、取得したセットを構成する各アクセス要求をN個のフラッシュコントローラ14のうちのそれぞれ異なるフラッシュコントローラ14に入力する。N個のフラッシュコントローラ14のうちのセットを構成するアクセス要求が入力されたM個のフラッシュコントローラ14は、それぞれ、入力されたアクセス要求に基づきデータ転送を行う。
【0146】
M個のアクセス要求のそれぞれで指示されたアクセス種別がライトである場合、分割・結合回路15は、M個のフラッシュコントローラ14が送信するM個のデータ列を1つのデータ列に結合して、メモリチャネルMCHの転送レートのM倍の転送レートで結合後の1つのデータ列を出力する。半導体記憶装置1では、分割・結合回路112は、受信した当該1つのデータ列を結合前のM個のデータに分割し、M個のデータのそれぞれはアクセス先のメモリチップCPに転送される。
【0147】
M個のアクセス要求のそれぞれで指示されたアクセス種別がリードである場合、M個のアクセス要求の1つが入力されたM個のフラッシュコントローラ14のそれぞれは、アクセス先のメモリチップCPにデータ出力を促す。半導体記憶装置1では、分割・結合回路112は、M個のメモリチップCPから出力されたM個のデータ列を1つのデータ列に結合して、メモリチャネルMCHの転送レートのM倍の転送レートで結合後の1つのデータ列を出力する。メモリコントローラMCでは、分割・結合回路15は、受信した当該1つのデータ列を結合前のM個のデータに分割し、M個のデータ列をM個のフラッシュコントローラ14に分配する。このとき、分割・結合回路15は、M個のデータ列のそれぞれを、受信した1つのデータ列の転送レートのM分の1の転送レート、つまりメモリチャネルMCHの転送レートと同じ転送レートでフラッシュコントローラ14に出力する。
【0148】
以上述べたように、実施形態によれば、メモリコントローラMCは、半導体記憶装置1が備える複数のメモリチップCPのうちの1つをアクセス先として、アクセス先のメモリチップCPに対し、エラー抑制にかかる処理を行いながら、データを送信したりデータを出力させたりするフラッシュコントローラ14を複数備える。メモリコントローラMCは、複数のフラッシュコントローラ14とホストチャネルHCHとの間に、分割・結合回路15を備える。分割・結合回路15は、複数のフラッシュコントローラ14が送信するデータを結合して、結合後の1つのデータをホストチャネルHCHに送る。ここで、分割・結合回路15は、結合後の1つのデータを、結合前の各データの転送レートの第1数倍の転送レートでホストチャネルHCHに送る。第1数は、結合前のデータの数と等しい。また、分割・結合回路15は、ホストチャネルHCHを介して受信したデータを複数のデータに分割して、分割前のデータの転送レートの第2数分の1の転送レートで複数のデータを第2数のフラッシュコントローラ14に分配する。
【0149】
よって、実施形態のメモリシステムSYS,SYSbに搭載されるメモリコントローラMCは、一般的なメモリシステムに搭載され得るメモリコントローラに対するわずかな設計変更だけで実現可能である。つまり、実施形態のメモリシステムSYS,SYSbは、好適な構成を有する。
【0150】
また、実施形態によれば、CPU11は、何れかのメモリチップCPをアクセス先として指定し、アクセス種別および転送データのサイズを指定したアクセス要求を複数、生成する。スケジューラ12は、CPU11によって生成された複数のアクセス要求のうちから、アクセス先として指定されたメモリチップCPが接続されたメモリチャネルMCHがそれぞれ異なり、かつ指定されたアクセス種別および転送データのサイズが共通する2以上のアクセス要求を特定する。そして、スケジューラ12は、特定した2以上のアクセス要求のそれぞれを複数のフラッシュコントローラ14のうちのそれぞれ異なるフラッシュコントローラ14に入力する。
【0151】
アクセス先として指定されたメモリチップCPが接続されたメモリチャネルMCHがそれぞれ異なる複数のデータ転送が同時に実行されるので、メモリコントローラMCと半導体記憶装置1との間の転送レートを高くすることが可能である。
【0152】
また、実施形態によれば、スケジューラ12は、複数のメモリチャネルMCHのそれぞれを複数のフラッシュコントローラ14の1つと一対一に対応付ける。そして、スケジューラ12は、アクセス要求を、複数のフラッシュコントローラ14のうちの当該アクセス要求によってアクセス先として指定されたメモリチップCPが接続されたメモリチャネルMCHに対応するフラッシュコントローラ14に入力する。
【0153】
なお、スケジューラ12によるアクセス要求の入力先のフラッシュコントローラ14の決定方法はこれに限定されない。
【0154】
また、実施形態によれば、エラー抑制のかかる処理は、ECC140による誤り訂正符号化および誤り訂正を含む。
【0155】
前述したように、各フラッシュコントローラ14のECC140は、結合される前の、1つのメモリチップCPをアクセス先として、メモリチャネルMCHの転送レートと同じ転送レートで転送される転送データに対して誤り訂正符号化および誤り訂正を実行できるスペックがあれば十分である。よって、メモリチップがブリッジチップを介さずにメモリコントローラに接続される一般的なメモリシステムを製造する製造者であれば、一般的なメモリシステムに搭載されるECCを実施形態のECC140としてそのまま流用することが可能である。
【0156】
また、実施形態によれば、エラー抑制のかかる処理は、ランダマイザ141によるランダマイズ処理およびランダマイズ処理の逆処理である。
【0157】
よって、ECC140の場合と同様、メモリチップがブリッジチップを介さずにメモリコントローラに接続される一般的なメモリシステムを製造する製造者であれば、一般的なメモリシステムに搭載されるランダマイザを実施形態のランダマイザ141としてそのまま流用することが可能である。
【0158】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0159】
1 半導体記憶装置、2 RAM、10 ホストI/Fコントローラ、11 CPU、12 スケジューラ、13 バス、14 フラッシュコントローラ、14-0 第1のフラッシュコントローラ、14-1 第2のフラッシュコントローラ、15,112 分割・結合回路、101 第1インタフェース、102 第2インタフェース、103 コントローラ、111 コマンドデコーダ、113 レジスタ、120 バッファメモリ、121 プロセッサ、140 ECC、141 ランダマイザ、201 アクセス回路、202 メモリセルアレイ、MC メモリコントローラ、BC ブリッジチップ、SYS,SYSa,SYSb メモリシステム、CP メモリチップ、HCH ホストチャネル、MCH メモリチャネル。
【手続補正書】
【提出日】2023-04-11
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0003
【補正方法】変更
【補正の内容】
【0003】