(57)【要約】【課題】メモリサブシステムとメモリ制御器とを含むメモリシステムが提供される。【解決手段】メモリサブシステムは、相変化メモリで実現される複数の第１メモリモジュール１２２ａ、１２２ｂと、相変化メモリより書込み速度が速いメモリで実現される第２メモリモジュール１２２ｃとを含む。メモリ制御器１２１は、原データが分けられた複数のサブデータからノンブロッキング符号を生成し、ノンブロッキング符号を第２メモリモジュール１２２ｃに書込み、複数のサブデータをそれぞれ複数の第１メモリモジュール１２２ａ、１２２ｂに書込み、読出し要請の際に、所定の条件下で複数の第１メモリモジュール１２２ａ、１２２ｂのうち一部の第１メモリモジュールから読出した複数のサブデータのうち一部のサブデータと、第２メモリモジュール１２２ｃから読出したノンブロッキング符号とから原データを再構成する。【選択図】図１
2020004412.tif 000002
【特許請求の範囲】
【請求項１】
相変化メモリで実現される複数の第１メモリモジュールと、相変化メモリより書込み速度が速いメモリで実現される第２メモリモジュールとを含むメモリサブシステムと、
前記複数の第１メモリモジュールと前記第２メモリモジュールに複数のチャネルを介して連結されるメモリ制御器とを含み、
前記メモリ制御器は、原データが分けられた複数のサブデータからノンブロッキング符号を生成し、前記ノンブロッキング符号を前記第２メモリモジュールに書込み、前記複数のサブデータをそれぞれ前記複数の第１メモリモジュールに書込み、読出し要請の際に、所定の条件下で前記複数の第１メモリモジュールのうち一部の第１メモリモジュールから読出した前記複数のサブデータのうち一部のサブデータと、前記第２メモリモジュールから読出した前記ノンブロッキング符号とから前記原データを再構成するメモリシステム。
【請求項２】
前記メモリ制御器は、中央処理ユニット（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、ＣＰＵ）からの書込み要請に応じて、前記書込み要請に相当するデータを格納するキャッシュを含む、請求項１に記載のメモリシステム。
【請求項３】
前記原データが前記キャッシュに格納されている場合、前記メモリ制御器は、前記キャッシュに格納された前記原データを前記メモリサブシステムにマイグレーションする時、前記ノンブロッキング符号を前記第２メモリモジュールに書込み、前記複数のサブデータをそれぞれ前記複数の第１メモリモジュールに書込む、請求項２に記載のメモリシステム。
【請求項４】
前記複数のサブデータは、第１サブデータと第２サブデータとを含み、
前記複数のサブデータをそれぞれ前記複数の第１メモリモジュールに書込む時、前記メモリ制御器は、前記第１サブデータを前記複数の第１メモリモジュールのうち対応する第１メモリモジュールに書込み、前記第１サブデータの書込み完了後に、前記第２サブデータを前記複数の第１メモリモジュールのうち対応する第１メモリモジュールに書込む、請求項３に記載のメモリシステム。
【請求項５】
前記複数のサブデータを前記複数の第１メモリモジュールに書込むことが完了した後、前記メモリ制御器は、前記原データを前記キャッシュから除去する、請求項４に記載のメモリシステム。
【請求項６】
前記第１サブデータを前記対応する第１メモリモジュールに書込む時、前記メモリ制御器は、前記ノンブロッキング符号を前記第２メモリモジュールに書込む、請求項４または５に記載のメモリシステム。
【請求項７】
前記原データを前記メモリサブシステムにマイグレーションしている間に前記原データに対してキャッシュヒットが発生する場合、前記メモリ制御器は、前記原データのマイグレーションを中止する、請求項４〜６のいずれか１項に記載のメモリシステム。
【請求項８】
各第１メモリモジュールのメモリセルアレイは、複数のパーティションに分割されており、
前記所定の条件は、前記複数のサブデータのうち他の一部のサブデータが格納されたパーティションで書込み動作が進行中の条件を含む、請求項２〜７のいずれか１項に記載のメモリシステム。
【請求項９】
前記所定の条件は、前記原データの前記読出し要請に対してキャッシュミスが発生する条件をさらに含む、請求項８に記載のメモリシステム。
【請求項１０】
前記キャッシュは、不揮発性メモリで実現される、請求項２〜９のいずれか１項に記載のメモリシステム。
【請求項１１】
前記メモリシステムは、コンピューティングデバイスのＣＰＵによって用いられるメインメモリである、請求項１に記載のメモリシステム。
【請求項１２】
相変化メモリで実現される第１メモリモジュールおよび第２メモリモジュールと、相変化メモリより書込み速度が速いメモリで実現される第３メモリモジュールとを含むメモリサブシステムに複数のチャネルを介して連結されるメモリ制御装置であって、
中央処理ユニット（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、ＣＰＵ）からの書込み要請に応じて、前記書込み要請に相当するデータを格納するキャッシュと、
前記キャッシュに格納された原データを第１サブデータと第２サブデータとを含む複数のサブデータに分け、前記複数のサブデータからノンブロッキング符号を生成し、マイグレーションの際に、前記第１サブデータを前記第１メモリモジュールに書込み、前記第２サブデータを前記第２メモリモジュールに書込み、前記ノンブロッキング符号を前記第３メモリモジュールに書込み、前記ＣＰＵからの読出し要請の際に、所定の条件下で前記第２メモリモジュールから前記第２サブデータを読出さずに前記第１メモリモジュールから読出した前記第１サブデータと、前記第３メモリモジュールから読出した前記ノンブロッキング符号とから前記原データを再構成するメモリ制御器とを含むメモリ制御装置。
【請求項１３】
前記メモリ制御器は、前記第１および第２サブデータのうちいずれか１つのサブデータを前記第１および第２メモリモジュールのうち対応するメモリモジュールに書込み、前記いずれか１つのサブデータの書込み完了後に、前記第１および第２サブデータのうち他の１つのサブデータを前記第１および第２メモリモジュールのうち対応するメモリモジュールに書込む、請求項１２に記載のメモリ制御装置。
【請求項１４】
前記第１および第２サブデータを前記第１および第２メモリモジュールに書込むことが完了した後、前記メモリ制御器は、前記原データを前記キャッシュから除去する、請求項１３に記載のメモリ制御装置。
【請求項１５】
前記いずれか１つのサブデータを前記対応するメモリモジュールに書込む時、前記メモリ制御器は、前記ノンブロッキング符号を前記第３メモリモジュールに書込む、請求項１３または１４に記載のメモリ制御装置。
【請求項１６】
前記マイグレーション中に前記原データに対してキャッシュヒットが発生する場合、前記メモリ制御器は、前記原データのマイグレーションを中止する、請求項１３〜１５のいずれか１項に記載のメモリ制御装置。
【請求項１７】
前記第２メモリモジュールのメモリセルアレイは、複数のパーティションに分割されており、
前記所定の条件は、前記第２サブデータが格納されたパーティションで書込み動作が進行中の条件を含む、請求項１２〜１６のいずれか１項に記載のメモリ制御装置。
【請求項１８】
前記所定の条件は、前記原データの前記読出し要請に対してキャッシュミスが発生する条件をさらに含む、請求項１７に記載のメモリ制御装置。
【請求項１９】
前記キャッシュは、不揮発性メモリで実現される、請求項１２に記載のメモリ制御装置。
【請求項２０】
請求項１２〜１９のいずれか１項に記載の前記メモリ制御装置と、
前記メモリサブシステムとを含むメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置およびこれを含むメモリシステムに関する。
【背景技術】
【０００２】
半導体メモリの高性能化および低電力化傾向に合わせて次世代半導体メモリが開発されている。このような次世代半導体メモリのうち、相変化物質（ｐｈａｓｅ−ｃｈａｎｇｅ  ｍａｔｅｒｉａｌ）を用いる相変化メモリ（ｐｈａｓｅ−ｃｈａｎｇｅ  ｍｅｍｏｒｙ、ＰＣＭ）、特に相変化ランダムアクセスメモリ（ｐｈａｓｅ−ｃｈａｎｇｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＰＲＡＭ）がある。相変化メモリは、結晶質状態（ｃｒｙｓｔａｌｌｉｎｅ  ｓｔａｔｅ）と非晶質状態（ａｍｏｒｐｈｏｕｓ  ｓｔａｔｅ）とを切り換える相変化物質を使用し、結晶質状態と非晶質状態との抵抗率の差に基づいてデータを格納する。
【０００３】
このような相変化メモリにおいて、現在の状態の相変化物質によりデータを読出す場合より、相変化物質の状態を変更する必要があるデータの書込みに時間が多くかかるという問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明がなそうとする課題は、応答速度を増加させることができる相変化メモリを用いるメモリシステムおよびメモリ制御装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明の一実施形態によれば、相変化メモリで実現される複数の第１メモリモジュールと、相変化メモリより書込み速度が速いメモリで実現される第２メモリモジュールとを含むメモリサブシステムと、前記複数の第１メモリモジュールと前記第２メモリモジュールに複数のチャネルを介して連結されるメモリ制御器とを含むメモリシステムが提供される。前記メモリ制御器は、原データが分けられた複数のサブデータからノンブロッキング符号を生成し、前記ノンブロッキング符号を前記第２メモリモジュールに書込み、前記複数のサブデータをそれぞれ前記複数の第１メモリモジュールに書込み、読出し要請の際に、所定の条件下で前記複数の第１メモリモジュールのうち一部の第１メモリモジュールから読出した前記複数のサブデータのうち一部のサブデータと、前記第２メモリモジュールから読出した前記ノンブロッキング符号とから前記原データを再構成する。
【０００６】
前記メモリ制御器は、中央処理ユニット（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、ＣＰＵ）からの書込み要請に応じて、前記書込み要請に相当するデータを格納するキャッシュを含んでもよい。
【０００７】
前記原データが前記キャッシュに格納されている場合、前記メモリ制御器は、前記キャッシュに格納された前記原データを前記メモリサブシステムにマイグレーションする時、前記ノンブロッキング符号を前記第２メモリモジュールに書込み、前記複数のサブデータをそれぞれ前記複数の第１メモリモジュールに書込んでもよい。
【０００８】
前記複数のサブデータは、第１サブデータと第２サブデータとを含んでもよい。この時、前記複数のサブデータをそれぞれ前記複数の第１メモリモジュールに書込む時、前記メモリ制御器は、前記第１サブデータを前記複数の第１メモリモジュールのうち対応する第１メモリモジュールに書込み、前記第１サブデータの書込み完了後に、前記第２サブデータを前記複数の第１メモリモジュールのうち対応する第１メモリモジュールに書込んでもよい。
【０００９】
前記複数のサブデータを前記複数の第１メモリモジュールに書込むことが完了した後、前記メモリ制御器は、前記原データを前記キャッシュから除去してもよい。
【００１０】
前記第１サブデータを前記対応する第１メモリモジュールに書込む時、前記メモリ制御器は、前記ノンブロッキング符号を前記第２メモリモジュールに書込んでもよい。
【００１１】
前記原データを前記メモリサブシステムにマイグレーションしている間に前記原データに対してキャッシュヒットが発生する場合、前記メモリ制御器は、前記原データのマイグレーションを中止してもよい。
【００１２】
各第１メモリモジュールのメモリセルアレイは、複数のパーティションに分割されていてもよい。この時、前記所定の条件は、前記複数のサブデータのうち他の一部のサブデータが格納されたパーティションで書込み動作が進行中の条件を含んでもよい。
【００１３】
前記所定の条件は、前記原データの前記読出し要請に対してキャッシュミスが発生する条件をさらに含んでもよい。
【００１４】
前記キャッシュは、不揮発性メモリで実現されてもよい。
【００１５】
前記メモリシステムは、コンピューティングデバイスのＣＰＵによって用いられるメインメモリであってもよい。
【００１６】
本発明の他の実施形態によれば、相変化メモリで実現される第１メモリモジュールおよび第２メモリモジュールと、相変化メモリより書込み速度が速いメモリで実現される第３メモリモジュールとを含むメモリサブシステムに複数のチャネルを介して連結されるメモリ制御装置が提供される。前記メモリ制御装置は、キャッシュと、メモリ制御器とを含む。前記キャッシュは、ＣＰＵからの書込み要請に応じて、前記書込み要請に相当するデータを格納する。前記メモリ制御器は、前記キャッシュに格納された原データを第１サブデータと第２サブデータとを含む複数のサブデータに分け、前記複数のサブデータからノンブロッキング符号を生成し、マイグレーションの際に、前記第１サブデータを前記第１メモリモジュールに書込み、前記第２サブデータを前記第２メモリモジュールに書込み、前記ノンブロッキング符号を前記第３メモリモジュールに書込み、前記ＣＰＵからの読出し要請の際に、所定の条件下で前記第２メモリモジュールから前記第２サブデータを読出さずに前記第１メモリモジュールから読出した前記第１サブデータと、前記第３メモリモジュールから読出した前記ノンブロッキング符号とから前記原データを再構成する。
【００１７】
前記メモリ制御器は、前記第１および第２サブデータのうちいずれか１つのサブデータを前記第１および第２メモリモジュールのうち対応するメモリモジュールに書込み、前記いずれか１つのサブデータの書込み完了後に、前記第１および第２サブデータのうち他の１つのサブデータを前記第１および第２メモリモジュールのうち対応するメモリモジュールに書込んでもよい。
【００１８】
前記第１および第２サブデータを前記第１および第２メモリモジュールに書込むことが完了した後、前記メモリ制御器は、前記原データを前記キャッシュから除去してもよい。
【００１９】
前記いずれか１つのサブデータを前記対応するメモリモジュールに書込む時、前記メモリ制御器は、前記ノンブロッキング符号を前記第３メモリモジュールに書込んでもよい。
【００２０】
前記マイグレーション中に前記原データに対してキャッシュヒットが発生する場合、前記メモリ制御器は、前記原データのマイグレーションを中止してもよい。
【００２１】
前記第２メモリモジュールのメモリセルアレイは、複数のパーティションに分割されていてもよい。この時、前記所定の条件は、前記第２サブデータが格納されたパーティションで書込み動作が進行中の条件を含んでもよい。
【００２２】
前記所定の条件は、前記原データの前記読出し要請に対してキャッシュミスが発生する条件をさらに含んでもよい。
【００２３】
前記キャッシュは、不揮発性メモリで実現されてもよい。
【００２４】
本発明のさらに他の実施形態によれば、前記メモリ制御装置と、前記メモリサブシステムとを含むメモリシステムが提供される。
【００２５】
本発明のさらに他の実施形態によれば、第１類型のメモリで実現される複数の第１メモリモジュールと、前記第１類型のメモリより書込み速度が速い第２類型のメモリで実現される第２メモリモジュールとを含むメモリサブシステムと、前記複数の第１メモリモジュールと前記第２メモリモジュールに複数のチャネルを介して連結されるメモリ制御器とを含むメモリシステムが提供される。前記メモリ制御器は、原データが分けられた複数のサブデータからノンブロッキング符号を生成し、前記ノンブロッキング符号を前記第２メモリモジュールに書込み、前記複数のサブデータをそれぞれ前記複数の第１メモリモジュールに書込み、読出し要請の際に、所定の条件下で前記複数の第１メモリモジュールのうち一部の第１メモリモジュールから前記サブデータを読出さずに残る一部の第１メモリモジュールから読出した前記複数のサブデータのうち一部のサブデータと、前記第２メモリモジュールから読出した前記ノンブロッキング符号とから前記原データを再構成する。
【００２６】
本発明のさらに他の実施形態によれば、第１類型のメモリで実現される第１メモリモジュールおよび第２メモリモジュールと、前記第１類型のメモリより書込み速度が速い第２類型のメモリで実現される第３メモリモジュールとを含むメモリサブシステムに複数のチャネルを介して連結されるメモリ制御装置が提供される。前記メモリ制御装置は、ＣＰＵからの書込み要請に応じて、前記書込み要請に相当するデータを格納するキャッシュと、メモリ制御器とを含む。前記メモリ制御器は、前記キャッシュに格納された原データを第１サブデータと第２サブデータとを含む複数のサブデータに分け、前記複数のサブデータからノンブロッキング符号を生成し、マイグレーションの際に、前記第１サブデータを前記第１メモリモジュールに書込み、前記第２サブデータを前記第２メモリモジュールに書込み、前記ノンブロッキング符号を前記第３メモリモジュールに書込み、前記ＣＰＵからの読出し要請の際に、所定の条件下で前記第２メモリモジュールから前記第２サブデータを読出さずに前記第１メモリモジュールから読出した前記第１サブデータと、前記第３メモリモジュールから読出した前記ノンブロッキング符号とから前記原データを再構成する。
【発明の効果】
【００２７】
本発明の一実施形態によれば、相変化メモリにおける長い書込み遅延を隠蔽することができ、また、読出し要請の遮断なしに読出し要請のデータが提供される。他の実施形態によれば、ログデータを格納するロギングメカニズムなしにメモリの連続性を提供することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態によるコンピューティングデバイスの概略的なブロック図である。
【図２】ＰＲＡＭにおける１つのメモリセルを概略的に示す図である。
【図３】図２に示したメモリセルに印加される電流を示す図である。
【図４】図２に示したメモリセルに図３に示した電流が印加される時の温度変化を示す図である。
【図５】本発明の一実施形態によるＰＲＡＭベースの加速器におけるＰＲＡＭモジュールの概略的なブロック図である。
【図６】本発明の一実施形態によるＰＲＡＭにおけるメモリセルアレイのパーティション方法の一例を説明する図である。
【図７】本発明の一実施形態によるＰＲＡＭにおけるパーティションの一例を説明する図である。
【図８】本発明の一実施形態によるメモリシステムの概略的なブロック図である。
【図９】本発明の他の実施形態によるメモリシステムの概略的なブロック図である。
【図１０】本発明の一実施形態によるメモリ制御器におけるキャッシュ制御モジュールの動作を示すフローチャートである。
【図１１】本発明の一実施形態によるメモリ制御器におけるマイグレーションモジュールの動作を示すフローチャートである。
【図１２】メモリシステムにおけるロギングメカニズムを説明する図である。
【発明を実施するための形態】
【００２９】
以下、添付した図面を参照して、本発明の実施例について、本発明の属する技術分野における通常の知識を有する者が容易に実施できるように詳細に説明する。しかし、本発明は種々の異なる形態で実現可能であり、ここで説明する実施例に限定されない。そして、図面において、本発明を明確に説明するために説明上不必要な部分は省略し、明細書全体にわたって類似の部分については類似の図面符号を付した。
【００３０】
図１は、本発明の一実施形態によるコンピューティングデバイスの概略的なブロック図である。図１は、可能なコンピューティングデバイスの一例であり、本発明の実施形態によるコンピューティングデバイスは、他の多様な構造で実現される。
【００３１】
図１を参照すれば、本発明の一実施形態によるコンピューティングデバイス１００は、中央処理ユニット（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、ＣＰＵ）１１０と、メモリ１２０とを含む。
【００３２】
メモリ１２０は、ＣＰＵ１１０によってアクセスされて用いられる。ある実施例において、メモリ１２０は、コンピューティングデバイスのメインメモリであってもよい。この場合、メモリ１２０は、バイト単位でアドレス可能な（ｂｙｔｅ−ａｄｄｒｅｓｓａｂｌｅ）メモリであってもよい。
【００３３】
ある実施例において、コンピューティングデバイス１００は、別の格納装置１３０をさらに含んでもよい。
【００３４】
ある実施例において、コンピューティングデバイス１００は、メモリ１２０と格納装置１３０をＣＰＵ１１０と連結するために、メモリブリッジ１４０をさらに含んでもよい。メモリブリッジ１４０は、例えば、ノースブリッジ（ｎｏｒｔｈｂｒｉｄｇｅ）またはメモリコントローラハブ（ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ、ＭＣＨ）であってもよい。
【００３５】
再び図１を参照すれば、メモリ１２０に用いられるメモリシステム１２０は、メモリ制御器１２１と、メモリサブシステムとを含み、メモリサブシステムは、メモリ制御器１２１に複数のチャネル１２３ａ、１２３ｂ、１２３ｃを介して連結されている。メモリ制御器１２１は、ＣＰＵ１１０から要請、例えば、入出力（ｉｎｐｕｔ／ｏｕｔｐｕｔ、Ｉ／Ｏ）要請を受信し、受信したＩ／Ｏ要請に基づいてメモリサブシステムにアクセスする。
【００３６】
メモリサブシステムは、複数の相変化メモリ（ｐｈａｓｅ−ｃｈａｎｇｅ  ｍｅｍｏｒｙ、ＰＣＭ）モジュール１２２ａ、１２２ｂと、ノンブロッキング（ｎｏｎ−ｂｌｏｃｋｉｎｇ）メモリモジュール１２２ｃとを含む。以下、相変化ランダムアクセスメモリ（ｐｈａｓｅ−ｃｈａｎｇｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＰＲＡＭ）をＰＣＭの一例として説明する。また、ノンブロッキングメモリモジュール１２２ｃとしては、ＰＲＡＭより書込み速度が速いメモリが用いられ、以下、ノンブロッキングメモリモジュール１２２ｃに動的ランダムアクセスメモリ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＤＲＡＭ）モジュールが用いられると説明する。
【００３７】
ＰＲＡＭモジュール１２２ａ、１２２ｂは、データを格納する空間として提供され、各ＰＲＡＭモジュール１２２ａ、１２２ｂは、対応するチャネル１２３ａ、１２３ｂ、つまり、ＰＲＡＭチャネル１２３ａ、１２３ｂを介してメモリ制御器１２１に連結されている。ＤＲＡＭモジュール１２２ｃは、ノンブロッキング符号（ｎｏｎ−ｂｌｏｃｋｉｎｇ  ｃｏｄｅ）を格納する空間として提供され、ＤＲＡＭモジュール１２２ｃも、対応するチャネル１２３ｃ、つまり、ＤＲＡＭチャネル１２３ｃを介してメモリ制御器１２１に連結されている。ノンブロッキング符号は、原データから一部のデータが抜けても残りのデータと共に原データを再構成するのに使用可能な符号である。
【００３８】
メモリ制御器１２１は、Ｉ／Ｏ要請に応じて、メモリサブシステムに書込む書込みデータを複数のサブデータ（ｓｕｂ−ｄａｔａ）に分け、複数のサブデータに基づいてノンブロッキング符号を生成する。メモリ制御器１２１は、複数のサブデータを複数のＰＲＡＭチャネル１２３ａ、１２３ｂを介して複数のＰＲＡＭモジュール１２２ａ、１２２ｂに書込み、ノンブロッキング符号をＤＲＡＭチャネル１２３ｃを介してＤＲＡＭモジュール１２２ｃに書込む。また、書込みデータが分けられて記録された複数のＰＲＡＭモジュール１２２ａ、１２２ｂのうち一部のＰＲＡＭモジュールで読出し動作が不可能な場合、メモリ制御器１２１は、複数のＰＲＡＭモジュール１２２ａ、１２２ｂのうち読出し動作が可能な一部のＰＲＡＭモジュールからサブデータを読出し、ＤＲＡＭモジュール１２２ｃからノンブロッキング符号を読出した後、読出したサブデータとノンブロッキング符号とから元の書込みデータを再構成することができる。
【００３９】
図１に示すように、２つのＰＲＡＭモジュール１２２ａ、１２２ｂが用いられる場合、メモリ制御器１２１は、書込みデータを２つのサブデータに分けられる。例えば、書込みデータが６４バイトのデータの場合、メモリ制御器１２１は、書込みデータを２つの３２バイトのサブデータに分けて２つのＰＲＡＭモジュール１２２ａ、１２２ｂにそれぞれ書込むことができる。メモリ制御器１２１は、２つのサブデータを符号化してノンブロッキング符号を生成してＤＲＡＭモジュール１２２ｃに書込むことができる。また、メモリ制御器１２１は、２つのＰＲＡＭモジュール１２２ａ、１２２ｂのうち１つのＰＲＡＭモジュールからサブデータを読出し、ＤＲＡＭモジュール１２２ｃからノンブロッキング符号を読出し、読出したサブデータとノンブロッキング符号とを合わせて元の書込みデータを再構成することができる。
【００４０】
図１には、２つのＰＲＡＭモジュール１２２ａ、１２２ｂと、これに対応する２つのＰＲＡＭチャネル１２３ａ、１２３ｂとが用いられる例を示したが、ＰＲＡＭモジュールの個数は２つに限定されず、２つ以上であってもよい。また、前記では、原データを２つのサブデータに分ける例を図１を参照して説明したが、原データが分けられるサブデータの個数は２つに限定されず、原データは２つ以上のサブデータに分けられる。
【００４１】
例えば、原データは、４つのサブデータ（データＡ、データＢ、データＣ、データＤ）に分けられる。この場合、メモリサブシステムは、少なくとも４つのＰＲＡＭモジュール（ＰＲＡＭモジュールＡ、ＰＲＡＭモジュールＢ、ＰＲＡＭモジュールＣ、ＰＲＡＭモジュールＤ）を含むことができ、データＡ、データＢ、データＣおよびデータＤは、それぞれＰＲＡＭモジュールＡ、ＰＲＡＭモジュールＢ、ＰＲＡＭモジュールＣおよびＰＲＡＭモジュールＤに格納される。
【００４２】
一例において、メモリ制御器１２１は、データＡ、データＢ、データＣおよびデータＤを符号化して、１つのノンブロッキング符号を生成してＤＲＡＭモジュールに格納してもよい。この場合、メモリ制御器１２１は、１つのＰＲＡＭモジュール（例えば、ＰＲＡＭモジュールＡ）からデータＡを読出せなくても、残る３つのＰＲＡＭモジュール（例えば、ＰＲＡＭモジュールＢ、ＰＲＡＭモジュールＣ、ＰＲＡＭモジュールＤ）から読出した３つのデータ（データＢ、データＣ、データＤ）と、ＤＲＡＭモジュールから読出したノンブロッキング符号とから原データを再構成することができる。
【００４３】
他の例において、メモリ制御器１２１は、データＡとデータＢとを結合したデータと、データＣとデータＤとを結合したデータとを符号化して、１つのノンブロッキング符号を生成してＤＲＡＭモジュールに格納してもよい。この場合、メモリ制御器１２１は、２つのＰＲＡＭモジュール（例えば、ＰＲＡＭモジュールＡ、ＰＲＡＭモジュールＢ）からデータＡおよびデータＢを読出せなくても、残る２つのＰＲＡＭモジュール（例えば、ＰＲＡＭモジュールＣ、ＰＲＡＭモジュールＤ）から読出した２つのデータ（データＣ、データＤ）と、ＤＲＡＭモジュールから読出したノンブロッキング符号とから原データを再構成することができる。
【００４４】
さらに他の例において、メモリ制御器１２１は、データＡとデータＢとを符号化して、１つのノンブロッキング符号を生成してＤＲＡＭモジュールに格納し、データＣとデータＤとを符号化して、他の１つのノンブロッキング符号を生成してＤＲＡＭモジュールに格納してもよい。この場合、２つのノンブロッキング符号は、互いに異なるＤＲＡＭモジュールに格納される。この場合、メモリ制御器１２１は、２つのＰＲＡＭモジュール（例えば、ＰＲＡＭモジュールＡ、ＰＲＡＭモジュールＣ）からデータＡおよびデータＣを読出せなくても、残る２つのＰＲＡＭモジュール（例えば、ＰＲＡＭモジュールＢ、ＰＲＡＭモジュールＤ）から読出した２つのデータ（データＢ、データＤ）と、ＤＲＡＭモジュールから読出した２つのノンブロッキング符号とから原データを再構成することができる。
【００４５】
再び図１を参照すれば、１つのチャネルに連結されたＰＲＡＭモジュール１２２ａまたは１２２ｂは、複数のＰＲＡＭチップ（またはＰＲＡＭバンク）１２４を含む。ある実施例において、各ＰＲＡＭチップ（またはＰＲＡＭバンク）は、複数のパーティションＰＡＲＴ０−ＰＡＲＴｎに分割される。１つのチャネルに連結されたＰＲＡＭモジュール１２２ａまたは１２２ｂは、１つのランク（ｒａｎｋ）からなり、または複数のランクに拡張されてもよい。ある実施例において、１つのチャネルに連結された複数のランクが互いに独立して動作できれば、各ランクが独立したＰＲＡＭモジュールとして動作できる。この場合、複数のＰＲＡＭモジュール（つまり、複数のランク）が１つのチャネルを共有してもよい。１つのチャネルに連結されたＤＲＡＭモジュール１２２ｃは、複数のＤＲＡＭチップ（またはＤＲＡＭバンク）を含む。１つのチャネルに連結されたＤＲＡＭモジュール１２２ｃは、１つのランク（ｒａｎｋ）からなり、または複数のランクに拡張されてもよい。
【００４６】
次に、本発明の一実施形態によるメモリシステムに含まれるＰＲＡＭの一例について説明する。
【００４７】
図２は、ＰＲＡＭにおける１つのメモリセルを概略的に示す図であり、図３は、図２に示したメモリセルに印加される電流を示す図であり、図４は、図２に示したメモリセルに図３に示した電流が印加される時の温度変化を示す図である。
【００４８】
図２に示したメモリセルは１つの例であり、本発明の実施形態によるＰＲＡＭのメモリセルは多様な形態で実現される。
【００４９】
図２を参照すれば、ＰＲＡＭのメモリセル２００は、相変化素子２１０と、スイッチング素子２２０とを含む。スイッチング素子２２０は、トランジスタ、ダイオードなどの多様な素子で実現される。相変化素子２１０は、相変化膜２１２と、相変化膜２１２の上に形成されている上部電極２１１と、相変化膜２１２の下に形成されている下部電極２１３とを含む。例えば、相変化膜２１２は、相変化物質として、ゲルマニウム（ｇｅｒｍａｎｉｕｍ、Ｇｅ）、アンチモン（ａｎｔｉｍｏｎｙ、Ｓｂ）およびテルル（ｔｅｌｌｕｒｉｕｍ、Ｔｅ）の混合物（「ＧＳＴ物質」と呼ばれることもある）を含むことができる。
【００５０】
相変化物質は、比較的高い抵抗率（ｒｅｓｉｓｔｉｖｉｔｙ）を有する非晶質状態と、比較的低い抵抗率を有する結晶質状態とを切り換えることができる。この時、相変化物質の状態は、加熱する温度と加熱時間によって決定される。
【００５１】
再び図２を参照すれば、メモリセル２００に電流が印加されると、印加された電流は下部電極２１３を通して流れる。短い時間の間電流がメモリセル２００に印加されると、印加された電流は下部電極２１３の隣接した膜を加熱する。この時、加熱プロファイルの差によって、相変化膜２１２の一部（図２におけるハッチングされた部分）が結晶質状態になったり、非晶質状態になる。結晶質状態は「セット（ｓｅｔ）状態」と呼ばれ、非晶質状態は「リセット（ｒｅｓｅｔ）状態」と呼ばれる。
【００５２】
図３および図４を参照すれば、高い電流のリセットパルスＲＥＳＥＴが短い時間ｔＲＳＴの間メモリセル２００に印加される時、相変化膜２１２は、リセット状態になる。リセットパルスＲＥＳＥＴの印加によって、相変化膜２１２の相変化物質が加熱されて温度Ｔｒが融点以上になれば、相変化物質が溶けた後、冷めながら非晶質状態に変化する。リセットパルスＲＥＳＥＴより低い電流を有するセットパルスＳＥＴがリセットパルスＲＥＳＥＴより長い時間ｔＳＥＴの間相変化膜２１２に印加される時、相変化膜２１２は、セット状態になる。セット電流ＳＥＴの印加によって、相変化物質が加熱されて温度Ｔｓが融点より低い結晶化温度に到達すれば、結晶質状態に変化する。セットパルスＳＥＴより低い電流が印加されたり、短い時間電流が印加される場合には、このようなリセット状態およびセット状態が維持されるので、メモリセル２００にデータを書込むことができる。
【００５３】
この時、リセット状態とセット状態は、それぞれ「１」と「０」のデータに設定され、これは、メモリセル２００の相変化素子２１０の抵抗率を測定することにより検知される。これとは異なり、リセット状態とセット状態をそれぞれ「０」と「１」のデータに設定してもよい。
【００５４】
したがって、メモリセル２００に読出しパルスＲＥＡＤを印加することによって、メモリセル２００に格納されたデータを読出すことができる。読出しパルスＲＥＡＤは、低い電流で短い時間ｔＲＥＡＤの間印加され、メモリセル２００の状態を変更しなくて済む。読出しパルスＲＥＡＤは、電流の大きさがセットパルスＳＥＴより低く、印加される時間ｔＲＥＡＤがリセットパルスＲＥＳＥＴの印加時間ｔＲＳＴより短くてよい。メモリセル２００の相変化素子２１０の抵抗率が状態に応じて異なるので、相変化素子２１０に流れる電流の大きさまたは相変化素子２１０における電圧降下の大きさでメモリセル２００の状態、つまり、メモリセル２００に格納されたデータを読出すことができる。
【００５５】
一つの実施例において、読出しパルスＲＥＡＤを印加した時、メモリセル２００にかかる電圧の大きさの差からメモリセル２００の状態を読出してもよい。この場合、リセット状態でメモリセル２００の相変化素子２１０は大きい抵抗を有するので、相変化素子２１０で検知された電圧が大きい場合をリセット状態に、相変化素子２１０で検知された電圧が小さい場合をセット状態に決定することができる。他の実施例において、メモリセル２００に電圧を印加した時、出力される電流の差からメモリセル２００の状態を読出してもよい。この場合、相変化素子２１０で検知された電流が小さい場合をリセット状態に、相変化素子２１０で検知された電流が大きい場合をセット状態に決定することができる。
【００５６】
ＰＲＡＭでは、データ書込みは一連のリセット過程とセット過程とにより行われるので、印加時間が長いリセットパルスによって書込み動作が読出し動作より遅い。
【００５７】
図５は、本発明の一実施形態によるメモリシステムにおけるＰＲＡＭの概略的なブロック図である。図５に示したＰＲＡＭは、１つのＰＲＡＭチップまたは１つのＰＲＡＭバンクであってもよい。
【００５８】
図５を参照すれば、ＰＲＡＭ５００は、メモリセルアレイ５１０と、行アドレスバッファ５２０と、行データバッファ５３０と、行デコーダ５４０と、センスアンプ（ｓｅｎｓｅ  ａｍｐｌｉｆｉｅｒ）５５０と、書込みドライバ５６０とを含む。
【００５９】
メモリセルアレイ５１０は、略行方向に延びている複数のワードライン（図示せず）と、略列方向に延びている複数のビットライン（図示せず）と、これに連結されており、略行列形態に配列された複数のメモリセル（図示せず）とを含む。メモリセルは、例えば、図２を参照して説明したメモリセル２００であってもよい。
【００６０】
行アドレスバッファ５２０と行データバッファ５３０は、行バッファを形成する。各行バッファは、行アドレスバッファ５２０と行データバッファ５３０とによって論理的に対になっており、バッファアドレスによって選択される。
【００６１】
行アドレスバッファ５２０は、メモリコントローラ（図示せず）から伝達される命令データとアドレス（特に、行アドレス）を格納する。行データバッファ５３０は、メモリセルアレイ５１０から伝達されたデータを格納する。
【００６２】
ある実施例において、ＰＲＡＭ５００は、複数の行バッファ５２０、５３０を用いるために、不揮発性メモリインターフェースを採用してもよい。一つの実施例において、不揮発性メモリインターフェースは、ＤＤＲ（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ）インターフェース、例えば、ＬＰＤＤＲ２（ｌｏｗ−ｐｏｗｅｒ  ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ２）−ＮＶＭ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）インターフェースであってもよい。行アドレスバッファ５２０は、不揮発性メモリインターフェースを介して行アドレスおよびバンクアドレスを受信し、行データバッファ５３０は、不揮発性メモリインターフェースを介してデータを出力する。
【００６３】
行デコーダ５４０は、行アドレスを復号してメモリセルアレイ５１０の複数の行からターゲット行を選択する。つまり、行デコーダ５４０は、メモリセルアレイ５１０の複数のワードラインのうち、データを読出したり、データを書込むワードラインを選択する。
【００６４】
ある実施例において、メモリコントローラから伝達される行アドレスは、上位アドレス（ｕｐｐｅｒ  ａｄｄｒｅｓｓ）と、下位アドレス（ｌｏｗｅｒ  ａｄｄｒｅｓｓ）とを含むことができる。この場合、上位アドレスは、行アドレスバッファ５２０に伝達され、下位アドレスは、行デコーダ５４０に直接伝達される。この時、行デコーダ５４０は、行アドレスバッファ５２０に格納された上位アドレスと、直接伝達された下位アドレスとを結合してターゲット行を選択することができる。
【００６５】
センスアンプ５５０は、メモリセルアレイ５１０に格納されたデータを読出す動作を行う。センスアンプ５５０は、行デコーダ５４０が選択したワードラインに連結された複数のメモリセルから複数のビットラインを介してデータを読出すことができる。書込みドライバ５６０は、入力されるデータをメモリセルアレイ５１０に書込む。書込みドライバ５６０は、行デコーダ５４０が選択したワードラインに連結された複数のメモリセルに複数のビットラインを介してデータを書込むことができる。
【００６６】
ある実施例において、ＰＲＡＭ５００では、書込み動作が読出し動作より遅いので、これを解決するために、ＰＲＡＭ５００は、入力されるデータをバッファに先に格納した後に、これをメモリセルアレイ５１０に書込むことができる。このために、ＰＲＡＭ５００は、メモリマッピングされた（ｍｅｍｏｒｙ−ｍａｐｐｅｄ）レジスタとしてオーバレイウィンドウ５７０、５８０を含むことができる。オーバレイウィンドウは、オーバレイウィンドウレジスタ５７０と、プログラムバッファ５８０とを含むことができる。一つの実施例において、書込みデータに関する情報（例えば、最初のデータアドレスと書込まれるバイト数）がレジスタ５７０に書込まれた後に、書込みデータがプログラムバッファ５８０に格納される。次に、オーバレイウィンドウレジスタ５７０に所定の値が書込まれると、プログラムバッファ５８０に格納されたデータがメモリセルアレイ５１０に書込まれる。この場合、メモリコントローラは、オーバレイウィンドウレジスタ５７０をフォーリングすることによって、メモリセルアレイ５１０への書込み動作が完了したかを確認することができる。
【００６７】
図６は、本発明の一実施形態によるＰＲＡＭにおけるメモリセルアレイのパーティション方法の一例を説明する図であり、図７は、本発明の一実施形態によるＰＲＡＭにおけるパーティションの一例を説明する図である。
【００６８】
図６を参照すれば、ある実施例において、１つのメモリセルアレイ５１０、例えば、ＰＲＡＭバンクは、複数のパーティションＰＡＲＴ０−ＰＡＲＴ１５に分割される。図６では、メモリセルアレイ５１０が１６個のパーティションＰＡＲＴ０−ＰＡＲＴ１５に分割される例を示した。この時、複数の行バッファ５２０、５３０は、複数のパーティションＰＡＲＴ０−ＰＡＲＴ１５に連結される。例えば、各パーティションは、６４ビットの並列入出力処理を行うことができる。
【００６９】
ある実施例において、複数のパーティションＰＡＲＴ０−ＰＡＲＴ１５は、センスアンプ（図５の５５０）のような読出し回路を共有することができる。
【００７０】
図７を参照すれば、ある実施例において、各パーティションは、複数のサブアレイ（ｓｕｂ−ａｒｒａｙ）を含むことができる。サブアレイは、抵抗性タイル（ｒｅｓｉｓｔｉｖｅ  ｔｉｌｅ）と呼ばれる。図７では、１つのパーティションが６４個のタイルＴｉｌｅ０−Ｔｉｌｅ６３を含むものとして示した。
【００７１】
各タイルは、複数のビットライン（例えば、２０４８ビットライン）と複数のワードライン（例えば、４０９６ワードライン）に連結される複数のメモリセル、つまり、ＰＲＡＭコアを含む。説明の便宜上、図７では、各タイルに含まれている複数のメモリセルのうち１つのメモリセルと、これに連結されている１つのビットラインＢＬおよびワードラインＷＬだけを示し、メモリセルを形成する相変化素子とスイッチング素子をそれぞれ抵抗とダイオードで示した。
【００７２】
各タイルには、ローカル列デコーダ（ｌｏｃａｌ  ｃｏｌｕｍｎ  ｄｅｃｏｄｅｒ）（以降、「ＬＹＤＥＣ」という）７１０が連結されていてもよい。ＬＹＤＥＣ７１０は、対応するタイルの複数のビットラインＢＬに連結されている。また、パーティションには、複数のタイルにそれぞれ対応する複数のグローバルビットラインＧＢＬが形成される。各グローバルビットラインＧＢＬは、対応するタイルの複数のビットラインＢＬに連結されており、グローバル列デコーダ（ｇｌｏｂａｌ  ｃｏｌｕｍｎ  ｄｅｃｏｄｅｒ）（以降、「ＧＹＤＥＣ」という）に連結されていてもよい。ある実施例において、ＬＹＤＥＣ７１０は、ＧＹＤＥＣと共に対応するパーティションの対応するタイルからビットラインＢＬを選択するのに用いられる。センスアンプ（図５の５５０）が選択されたビットラインＢＬを介してデータを読出したり、書込みドライバ（図５の５６０）が選択されたビットラインＢＬを介してデータを書込むことができる。
【００７３】
並列化を最大化するために、各タイルには、サブワードラインドライバ（ｓｕｂ  ｗｏｒｄ  ｌｉｎｅ  ｄｒｉｖｅｒ）（以降、「ＳＷＤ」という）７２０が連結されていてもよい。パーティションにグローバルワードラインＧＷＬが形成され、グローバルワードラインＧＷＬは、メインワードラインドライバ（ｍａｉｎ  ｗｏｒｄ  ｌｉｎｅ  ｄｒｉｖｅｒ）（以降、「ＭＷＤ」という）７３０に連結されていてもよい。この場合、パーティションに形成される複数のワードラインＷＬがグローバルワードラインＧＷＬに連結されていてもよい。パーティション内のすべてのＳＷＤは、ＭＷＤ７３０に連結されている。ある実施例において、ＳＷＤ７２０は、ＭＷＤ７３０と共に対応するタイルからワードラインＷＬを駆動するのに用いられる。この時、駆動されるワードラインＷＬは、行デコーダ（図５の５４０）によって選択される。
【００７４】
図６および図７に示したパーティション構造を用いる場合、パーティションあたりの複数の入出力（ｉｎｐｕｔ／ｏｕｔｐｕｔ、Ｉ／Ｏ）動作（例えば、図７の例では、６４個のＩ／Ｏ動作）を同時に行うことができる。また、図６および図７に示すように、各パーティションでローカルデコーダとワードラインドライバが用いられるので、メモリシステムは、互いに異なるパーティションに並列にアクセスすることができる。しかし、互いに異なるパーティションは、受信したＩ／Ｏ要請の類型が互いに異なる場合にのみ同時にＩ／Ｏサービスを支援することができる。
【００７５】
例えば、ＰＲＡＭのパーティション０で書込み動作が進行している間、パーティション０とは異なるパーティション、例えば、パーティション１で読出しサービスを提供することができる。このように、互いに異なるパーティションで読出しと書込みを並列に提供できるので、遅い書込み動作が進行している間、他の読出し動作が進行する。したがって、書込み動作が完了することを待つ必要なく、書込み遅延時間多くの読出し要請を並列に処理することができる。
【００７６】
しかし、ＰＲＡＭのパーティション０で書込み動作が進行している間、パーティション０で読出しサービスを提供することはできない。そのため、パーティション０で書込み動作が完了した後に、パーティション０で読出し動作が進行する。この場合、読出し要請の応答時間（つまり、読出し動作が完了するのにかかる時間）は、書込み遅延時間と読出し遅延時間との合計に相当する。このように、読出し要請の応答時間が長くかかる場合を防止するための実施例について説明する。
【００７７】
次の本発明の一実施形態によるメモリシステムについて、図８を参照して説明する。
【００７８】
図８は、本発明の一実施形態によるメモリシステムの概略的なブロック図である。
【００７９】
図８を参照すれば、本発明の一実施形態によるメモリシステムは、メモリ制御器８００と、メモリサブシステムとを含む。
【００８０】
図１を参照して説明したように、メモリ制御器８００は、ＰＲＡＭモジュール１２２ａ、１２２ｂとＤＲＡＭモジュール１２２ｃとを含むメモリサブシステムに複数のチャネル１２３ａ、１２３ｂ、１２３ｃを介して連結されており、キャッシュ８１０と、キャッシュ制御モジュール８２０と、マイグレーション（ｍｉｇｒａｔｉｏｎ）モジュール８３０とを含む。
【００８１】
メモリサブシステムは、ＰＲＡＭチャネル１２３ａ、１２３ｂを介してそれぞれメモリ制御器８００に連結されるＰＲＡＭモジュール１２２ａ、１２２ｂと、ＤＲＡＭチャネル１２３ｃを介してメモリ制御器８００に連結されるＤＲＡＭモジュール１２２ｃとを含む。以下、説明の便宜上、２つのＰＲＡＭチャネル１２３ａ、１２３ｂ、つまり、ＰＲＡＭモジュール１２２ａ、１２２ｂが用いられる例を説明するが、本発明はこれに限定されない。
【００８２】
キャッシュ８１０は、ＣＰＵから書込み要請を受信する場合に、ＣＰＵから提供される原データを格納し、また、キャッシュ情報を格納している。ある実施例において、キャッシュ８１０は、原データを複数のサブデータＤＡＴＡ＿Ａ、ＤＡＴＡ＿Ｂに分けて格納してもよい。キャッシュ８１０は、ＰＲＡＭより書込み速度が速いメモリ、例えば、ＤＲＡＭまたは磁気抵抗ランダムアクセスメモリ（ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＭＲＡＭ）を用いる。これにより、メモリシステムにおけるＰＲＡＭによる書込み遅延をＣＰＵから隠蔽することができる。
【００８３】
マイグレーションモジュール８３０は、キャッシュ８１０に格納されたサブデータＤＡＴＡ＿Ａ、ＤＡＴＡ＿Ｂからノンブロッキング符号を生成する。マイグレーションモジュール８３０は、サブデータＤＡＴＡ＿Ａ、ＤＡＴＡ＿Ｂをそれぞれ対応するＰＲＡＭチャネル１２３ａ、１２３ｂを介してＰＲＡＭモジュール１２２ａ、１２２ｂに書込み、ノンブロッキング符号をＤＲＡＭチャネル１２３ｃを介してＤＲＡＭモジュール１２２ｃに書込んで、キャッシュ８１０のデータをメモリサブシステムにマイグレーションする。ある実施例において、マイグレーションは、メモリ制御器８００の休止（ｉｄｌｅ）時間進行する。
【００８４】
一つの実施例において、ノンブロッキング符号を生成する符号化で排他的論理和（ｅｘｃｌｕｓｉｖｅ  ＯＲ、ＸＯＲ）演算を用いてもよい。この場合、６４バイトの原データが２つの３２バイトのサブデータＤＡＴＡ＿Ａ、ＤＡＴＡ＿Ｂに分けられる場合、３２バイトのサブデータＤＡＴＡ＿Ａ、ＤＡＴＡ＿Ｂをビット単位（ｂｉｔｗｉｓｅ）ＸＯＲ演算して、３２バイトのノンブロッキング符号が生成される。例えば、「００１０１１１００１１０」の原データが「００１０１１」のＤＡＴＡ＿Ａと「１００１１０」のＤＡＴＡ＿Ｂに分けられる場合、ノンブロッキング符号は「１０１１０１」として生成される。この時、ＤＡＴＡ＿Ａとノンブロッキング符号とのＸＯＲ演算により「１００１１０」のＤＡＴＡ＿Ｂを復旧したり、ＤＡＴＡ＿Ｂとノンブロッキング符号とのＸＯＲ演算により「００１０１１」のＤＡＴＡ＿Ａを復旧することができる。
【００８５】
他の実施例において、ＸＯＲのほか、ノンブロッキング符号を生成できる他の符号化が用いられる。このような符号化を用いる場合、ノンブロッキング符号の大きさをＸＯＲ演算に比べて低減できる。
【００８６】
一例として、エラー訂正符号化（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｃｏｄｉｎｇ、ＥＣＣ）がノンブロッキング符号を生成する符号化として用いられる。例えば、低密度パリティ検査（ｌｏｗ  ｄｅｎｓｉｔｙ  ｐａｒｉｔｙ  ｃｈｅｃｋ、ＬＤＰＣ）符号化によりノンブロッキング符号としてパリティ符号を生成することができる。
【００８７】
他の例として、消去符号化（ｅｒａｓｕｒｅ  ｃｏｄｉｎｇ）がノンブロッキング符号を生成する符号化として用いられる。消去符号化では、原データをｎ個のデータチャンク（ｃｈｕｎｋ）に分け、消去符号化アルゴリズムを用いてｎ個のデータチャンクからｋ個の符号チャンクを生成することができる。使用不可能なデータチャンクの個数だけ符号チャンクを用いて、ｎ個のチャンクにより原データを復旧することができる。
【００８８】
さらに他の実施例において、典型的なＰＲＡＭモジュールおよびそのメモリ制御器でエラー訂正のために提供される符号化が用いられる。
【００８９】
メモリ制御器８００がＣＰＵから読出し要請を受信する場合、キャッシュ制御モジュール８２０は、ロックアップテーブルを照会して、キャッシュヒットであるか、キャッシュミスであるかを判断する。読出し要請がヒットであれば、キャッシュ制御モジュール８２０は、キャッシュ８１０からデータを読出す。読出し要請がミスの場合、メモリ制御器８００は、メモリサブシステムからデータを読出す。この時、２つのＰＲＡＭモジュール１２２ａ、１２２ｂのうちいずれか１つのＰＲＡＭモジュールからサブデータを読出せない場合が発生することがある。例えば、ＰＲＡＭモジュール１２２ｂにおいて、サブデータＤＡＴＡ＿Ｂが格納されたパーティションと同一のパーティションで書込み動作が進行中であれば（つまり、パーティション衝突が発生すれば）、ＰＲＡＭモジュール１２２ｂからサブデータＤＡＴＡ＿Ｂを読出せない。この場合、メモリ制御器８００は、ＰＲＡＭモジュール１２２ａからサブデータＤＡＴＡ＿Ａを読出し、ＤＲＡＭモジュール１２２ｃからノンブロッキング符号を読出す。そして、メモリ制御器８００のキャッシュ制御モジュール８２０は、ノンブロッキング符号とサブデータＤＡＴＡ＿Ａとから原データを再構成する。例えば、ノンブロッキング符号生成のための符号化としてＸＯＲ演算が用いられた場合、キャッシュ制御モジュール８２０は、サブデータＤＡＴＡ＿Ａとノンブロッキング符号とをＸＯＲ演算して原データを再構成することができる。
【００９０】
このように、本発明の一実施形態によれば、キャッシュミスによって、メモリサブシステムからデータを読出す場合に、パーティション衝突のような理由からＰＲＡＭモジュールでデータを直接読出せなくても、書込み動作が完了するまで待つ必要なく、ノンブロッキング符号を用いて読出しデータを提供することができる。
【００９１】
図９は、本発明の他の実施形態によるメモリシステムの概略的なブロック図である。
【００９２】
図９を参照すれば、メモリ制御器９００は、ルックアップモジュール９１０と、キャッシュ制御モジュール８２０と、マイグレーションモジュール８３０とを含み、ルックアップモジュール９１０は、キャッシュ９１１と、マイグレーションキュー９１２とを含む。
【００９３】
キャッシュ９１１は、原データ９１１ａのほか、ルックアップテーブル９１１ｂを格納していてもよい。ある実施例において、ルックアップテーブル９１１ｂは、キャッシュインデックスに対応する複数のエントリを含んでもよい。各エントリは、キャッシュ９１１の格納空間でのキャッシュエントリ（例えば、キャッシュライン）を指示してもよい。ＣＰＵから受信されるＩ／Ｏ要請は、少なくともタグとキャッシュインデックスとに分離される。タグとキャッシュインデックスは、キャッシュ９１１の大きさによって決定される。例えば、５１２Ｋ個のキャッシュインデックスを用いる場合、Ｉ／Ｏ要請のアドレス（例えば、３２ビット）は、オフセット（例えば、５ビット）を除き、１９ビットのキャッシュインデックスと３ビットのタグとに分離される。この場合、ルックアップテーブル９１１ｂは、１９ビットのキャッシュインデックス、つまり、５１２Ｋ個のキャッシュインデックスに対応できるように５１２Ｋ個のエントリを有することができる。一つの実施例において、各エントリは、タグアレイ、カウンタおよび有効ビットを含んでもよい。タグアレイは、Ｉ／Ｏ要請のアドレスのタグを格納し、有効ビットは、対応するキャッシュエントリにデータが存在するかを指示することができる。また、カウンタは、対応するキャッシュエントリのアクセスによって更新される。
【００９４】
マイグレーションキュー９１２は、マイグレーションが必要なキャッシュエントリの情報を格納する。マイグレーションキュー９１２は、ＰＲＡＭより書込み速度が速いメモリ、例えば、ＤＲＡＭまたはＭＲＡＭで実現されてもよい。
【００９５】
キャッシュ制御モジュール８２０は、Ｉ／Ｏ要請のキャッシュヒット／ミスを判断するために、ルックアップモジュール９１０に照会（ｌｏｏｋｕｐ）命令を伝達してもよい。Ｉ／Ｏ要請のアドレスとルックアップモジュール９１０のルックアップテーブル９１１ｂに基づいてＩ／Ｏ要請のキャッシュヒットまたはキャッシュミスが判断される。キャッシュミスの場合、キャッシュ制御モジュール８２０は、空きキャッシュエントリが存在するかを判断するために、ルックアップモジュール９１０に検索（ｆｉｎｄ）命令を伝達してもよい。ルックアップモジュール９１０のルックアップテーブル９１１ｂに基づいて空きキャッシュエントリが存在するかが判断される。キャッシュ制御モジュール８２０は、ルックアップテーブル９１１ｂの更新のために更新命令をルックアップモジュール９１０に伝達してもよい。これにより、キャッシュヒットの場合、キャッシュヒットのキャッシュエントリに対応するルックアップテーブル９１１ｂのカウンタが更新され、キャッシュミスの場合、ルックアップテーブル９１１ｂに新しいエントリが追加され、カウンタが更新される。
【００９６】
マイグレーションモジュール８３０は、マイグレーションを開始するために、マイグレーションキュー９１２からヘッド（ｈｅａｄ）がポイントする情報（つまり、ヘッド情報）を読出すために、ルックアップモジュール９１０に読出し命令を伝達してもよい。すると、ルックアップモジュール９１０は、マイグレーションキュー９１２からヘッド情報を読出し、ヘッド情報に相当するキャッシュエントリに格納されたデータのマイグレーションが開始される。マイグレーションモジュール８３０は、マイグレーションが完了したデータをキャッシュエントリから除去するために、除去命令をルックアップモジュール９１０に伝達してもよい。すると、ルックアップモジュール９１０は、マイグレーションキュー９１２からヘッドに相当するキューエントリを除去し、次のキューエントリにヘッドを移動し、当該キャッシュエントリからデータを除去することができる。ルックアップモジュール９１０は、新しいエントリが追加される場合（つまり、キャッシュエントリに新しいデータが格納される場合）、挿入（ｉｎｓｅｒｔ）命令によりマイグレーションキュー９１２に新たに入力されたキャッシュエントリの情報を追加してもよい。
【００９７】
メモリ制御器９００は、ＰＲＡＭモジュール１２２ａ、１２２ｂおよびＤＲＡＭモジュール１２２ｃをそれぞれ制御するためのメモリ制御ユニット（ＭＣＵ）９５１、９５２、９５３をさらに含んでもよい。また、メモリ制御器９００は、キャッシュ制御モジュール８２０からの読出し／書込みによるメモリ要請、またはマイグレーションモジュール８３０からのマイグレーションによるメモリ要請を対応するメモリ制御ユニット（ＭＣＵ）９５１、９５２、９５３に伝達するための多重化器９４０をさらに含んでもよい。
【００９８】
図１０は、本発明の一実施形態によるメモリ制御器におけるキャッシュ制御モジュールの動作を示すフローチャートである。
【００９９】
図１０を参照すれば、キャッシュ制御モジュール（図８または図９の８２０）は、キャッシュ（図８の８１０または図９の９１１）のキャッシュ情報を参照して、ＣＰＵからの要請がキャッシュヒットであるか、キャッシュミスであるかを判断する（Ｓ１０１０）。キャッシュヒットの場合（Ｓ１０１０：はい）、キャッシュ制御モジュール８２０は、キャッシュを介して要請に相当するサービスを提供する（Ｓ１０２０、Ｓ１０３０、Ｓ１０３５）。つまり、要請が読出し要請であれば（Ｓ１０２０：はい）、キャッシュ制御モジュール８２０は、キャッシュ８１０または９１１から読出し要請に対応するデータを読出す（Ｓ１０３０）。要請が書込み要請であれば（Ｓ１０２０：いいえ）、キャッシュ制御モジュール８２０は、キャッシュ８１０または９１１に書込み要請に対応するデータを書込む（Ｓ１０３５）。ある実施例において、キャッシュ制御モジュール８２０は、キャッシュヒットに応じてキャッシュ情報を更新してもよい（Ｓ１０５０）。
【０１００】
キャッシュミスの場合（Ｓ１０１０：いいえ）、要請が書込み要請であれば（Ｓ１０４０：はい）、キャッシュ制御モジュール８２０は、キャッシュ情報を参照して、キャッシュ８１０または９１１に空きエントリ（つまり、キャッシュライン）があるかを判断する（Ｓ１０４５）。キャッシュ８１０または９１１に空きエントリがあれば（Ｓ１０４５：はい）、キャッシュ制御モジュール８２０は、キャッシュ（つまり、キャッシュの空きエントリ）８１０または９１１に書込み要請に相当するデータを書込む（Ｓ１０５０）。ある実施例において、キャッシュ制御モジュール８２０は、データが書込まれたエントリに関する情報をキャッシュ情報に追加してキャッシュ情報を更新してもよい（Ｓ１０５０）。キャッシュ８１０または９１１に空きエントリがなければ、キャッシュ８１０または９１１からメモリサブシステムのＰＲＡＭモジュール（図８または図９の１２２ａ、１２２ｂ）にデータが書込まれている間（つまり、マイグレーションされている間）であるので、キャッシュ制御モジュール８２０は、ＰＲＡＭモジュールへの書込みが完了するまで待機する（Ｓ１０５５：いいえ）。ＰＲＡＭモジュールへの書込みが完了してキャッシュ８１０または９１１に空きエントリが生じた後に（Ｓ１０５５：はい）、キャッシュ制御モジュール８２０は、キャッシュ８１０または９１１の空きエントリに書込み要請に相当するデータを書込む（Ｓ１０５０）。
【０１０１】
キャッシュミスの場合、要請が読出し要請であれば（Ｓ１０４０：いいえ）、キャッシュ制御モジュール８２０は、現在のメモリサブシステムがＰＲＡＭモジュール１２２ａ、１２２ｂから原データに相当するすべてのサブデータを読出すことができる条件を満足するかを判断する（Ｓ１０６０）。ある実施例において、ＰＲＡＭモジュール１２２ａ、１２２ｂともに書込みが進行中でなければ、メモリサブシステムがＰＲＡＭモジュール１２２ａ、１２２ｂから原データに相当するすべてのサブデータを読出すことができる。あるいは、ＰＲＡＭモジュール１２２ａ、１２２ｂのいずれか１つに書込みが進行中でも、書込み進行中のパーティションとサブデータを読出すパーティションとが衝突しなければ、メモリサブシステムがＰＲＡＭモジュール１２２ａ、１２２ｂから原データに相当するすべてのサブデータを読出すことができる。
【０１０２】
メモリサブシステムがＰＲＡＭモジュール１２２ａ、１２２ｂから原データに相当するすべてのサブデータを読出すことができれば（Ｓ１０６０：はい）、キャッシュ制御モジュール８２０は、ＰＲＡＭチャネル（図８または図９の１２３ａ、１２３ｂ）を介してＰＲＡＭモジュール１２２ａ、１２２ｂからサブデータを読出して、読出したサブデータ、つまり、原データをＣＰＵに伝達する（Ｓ１０７０）。メモリサブシステムが一部のＰＲＡＭモジュール（例えば、１２２ｂ）からサブデータを読出せなければ（Ｓ１０６０：いいえ）、キャッシュ制御モジュール８２０は、データ読出しが可能なＰＲＡＭモジュール１２２ａからサブデータを読出し、ＤＲＡＭチャネル（図８または図９の１２３ｃ）を介してＤＲＡＭモジュール（図８または図９の１２２ｃ）からノンブロッキング符号を読出す（Ｓ１０７５）。キャッシュ制御モジュール８２０は、サブデータとノンブロッキング符号とから原データを再構成してＣＰＵに伝達する（Ｓ１０７５）。
【０１０３】
図１１は、本発明の一実施形態によるメモリ制御器におけるマイグレーションモジュールの動作を示すフローチャートである。
【０１０４】
図１１を参照すれば、マイグレーションモジュール（図８または図９の８３０）は、キャッシュ８１０または９１１にマイグレーションを開始するデータが格納されているかを判断する（Ｓ１１１０）。ある実施例において、マイグレーションモジュール８３０は、マイグレーションキュー（図９の９１２）が空いているかを確認してもよい（Ｓ１１１０）。マイグレーションキュー９１２が空いていれば、つまり、キャッシュ８１０または９１１にマイグレーションするデータがなければ（Ｓ１１１０：はい）、マイグレーションモジュール８３０は、マイグレーションキュー９１２に新しいキャッシュエントリの情報が追加されるまで（つまり、キャッシュ８１０または９１１に新しいデータが格納されるまで）待機する。
【０１０５】
マイグレーションキュー９１２が空いていなければ、つまり、キャッシュ８１０または９１１にマイグレーションするデータがあれば（Ｓ１１１０：いいえ）、マイグレーションモジュール８３０は、キャッシュ８１０または９１１からマイグレーションする原データを読出し、原データが分けられた複数のサブデータからノンブロッキング符号を生成する（Ｓ１１２０）。ある実施例において、マイグレーションモジュール８３０は、マイグレーションキュー９１２のヘッド情報に対応するキャッシュエントリに格納されたデータを読出してもよい（Ｓ１１２０）。マイグレーションモジュール８３０は、サブデータを対応するＰＲＡＭチャネルを介して対応するＰＲＡＭモジュールに書込み、ノンブロッキング符号をＤＲＡＭチャネル（図８または図９の１２３ｃ）を介してＤＲＡＭモジュール（図８または図９の１２２ｃ）に書込む（Ｓ１１３０）。ある実施例において、マイグレーションモジュール８３０は、複数のサブデータのうち一部のサブデータのみに対応するＰＲＡＭモジュールに先に書込み、ノンブロッキング符号をＤＲＡＭモジュールに書込むことができる（Ｓ１１３０）。一つの実施例において、原データが２つのサブデータに分けられる場合、マイグレーションモジュール８３０は、１つのサブデータを対応するＰＲＡＭモジュール（図８または図９の１２２ａ）に書込んでもよい（Ｓ１１３０）。すべてのサブデータをすべてのＰＲＡＭチャネルを介してＰＲＡＭモジュールに書込む場合、読出し要請が発生した時、読出し要請とパーティション衝突が発生する場合、読出し要請が遮断されうるため、一部のサブデータに対して書込みが先に進行する。すると、読出し要請に対してＰＲＡＭモジュール１２２ａでパーティション衝突が発生しても、書込み進行中でない他のＰＲＡＭモジュール（図８または図９の１２２ｂ）から読出したデータとノンブロッキング符号とから原データを再構成することができる。
【０１０６】
ある実施例において、書込み動作が行われたＰＲＡＭモジュール１２２ａで書込みが完了すれば（Ｓ１１４０：はい）、マイグレーションモジュール８３０は、残る一部のサブデータを対応するＰＲＡＭモジュールに書込んでもよい（Ｓ１１６０）。一つの実施例において、原データが２つのサブデータに分けられる場合、マイグレーションモジュール８３０は、残りのサブデータを対応するＰＲＡＭモジュール１２２ｂに書込むことができる（Ｓ１１６０）。
【０１０７】
ある実施例において、残る一部のサブデータを対応するＰＲＡＭモジュールに書込む前に（Ｓ１１６０）、マイグレーションを進行させているデータに対してキャッシュヒットが発生すれば（Ｓ１１５０：はい）、マイグレーションモジュール８３０は、残る一部のサブデータに対して書込みを進行させずにマイグレーションを終了してもよい。キャッシュ９１１のデータをＰＲＡＭモジュールにマイグレーションしている間に、当該データに対してキャッシュヒットが発生すれば、要請したデータを優先的に処理する必要があるため、マイグレーションを終了してもよい。キャッシュヒットが発生しなければ（Ｓ１１５０：いいえ）、マイグレーションモジュール８３０は、残る一部のサブデータを対応するＰＲＡＭモジュールに書込むことができる（Ｓ１１６０）。
【０１０８】
残る一部のサブデータの書込みが完了すれば（Ｓ１１７０：はい）、マイグレーションモジュール８３０は、キャッシュ９１１から相当するキャッシュエントリのデータを削除する（Ｓ１１８０）。ある実施例において、マイグレーションモジュール８３０は、マイグレーションキュー９１２からキューエントリを削除してもよい（Ｓ１１８０）。
【０１０９】
このように、本発明の一実施形態によれば、書込み遅延が長いＰＲＡＭモジュールの代わりにキャッシュで先に書込みが進行するので、ＰＲＡＭモジュールの長い書込み遅延を隠蔽することができる。また、パーティション衝突がある書込みと読出しが同時に進行しうるため、読出し要請の遮断なしに読出し要請のデータが提供される。また、メモリ制御器の休止時間キャッシュのデータをＰＲＡＭモジュールにマイグレーションしてキャッシュを空けられるので、メモリシステムの全体的な応答速度を高めることができる。これにより、本発明の一実施形態によるメモリシステムをＣＰＵのメインメモリとして用いることができ、また、ＤＲＡＭとは異なり、不揮発性メモリシステムを提供することができる。
【０１１０】
一般に、メモリの連続性（ｐｅｒｓｉｓｔｅｎｃｙ）を提供するために、コンピューティングデバイスの電源障害などでシャットダウンされる時、データが維持されなければならないだけでなく、コンピューティングデバイスが再び起動された時、停止していた位置で再び動作が行われなければならない。このために、コンピューティングデバイスの再起動の際に、ログ領域（ｌｏｇ  ａｒｅａ）を先に探索して、終了していた時点に復旧し、コンピューティングデバイスを駆動するロギングメカニズム（ｌｏｇｇｉｎｇ  ｍｅｃｈａｎｉｓｍ）が用いられる。
【０１１１】
図１２に示すように、ロギングメカニズムのために、ＰＲＡＭモジュール１２００には、データ格納領域１２１０のほか、ログ領域１２２０が存在する。メモリ制御器は、ＣＰＵからログデータ（ｌｏｇ  ｄａｔａ）のためのキャッシュラインフラッシュ命令ｃｌｆｌｕｓｈを受信する場合、キャッシュのデータをログ領域１２２０に格納する。次に、メモリ制御器は、データのためのキャッシュラインフラッシュ命令ｃｌｆｌｕｓｈとフェンス命令ｓｆｅｎｃｅを受信する場合、キャッシュのデータをＰＲＡＭモジュールのデータ格納領域１２１０に格納する。したがって、コンピューティングデバイスがシャットダウンされた後に再起動される場合、ログ領域１２２０のログデータが正常であれば、ログデータでデータを復旧することができる。ログ領域１２２０のログデータが異常であれば、命令が実行されなかったと判断して無視することができる。この場合、キャッシュのデータをＰＲＡＭモジュールのデータ格納領域１２１０に格納する前にログデータをログ領域１２２０に重複して格納するので、データの重複問題が発生し、命令実行で速度低下が発生することがある。
【０１１２】
しかし、本発明の一実施形態によれば、マイグレーションによりキャッシュ（図８の８１０または図９の９１１）に格納されたデータが持続的に不揮発性メモリのＰＲＡＭモジュールに記録される。この場合、キャッシュ８１０または９１１としてＤＲＡＭのような揮発性メモリが用いられる場合、電源障害が発生しても、バックアップ用バッテリを介してキャッシュのデータが無くなる前にＰＲＡＭモジュールにデータを記録できるので、ロギングメカニズムを用いなくても、電源障害時にメモリの連続性を提供することができる。ある実施例において、キャッシュ８１０または９１１が不揮発性メモリ、例えば、ＭＲＡＭで実現されてもよい。この場合、電源障害などでコンピューティングデバイスがシャットダウンされても、不揮発性のキャッシュ８１０、９１１にデータが保存されているので、ロギングメカニズムなしにメモリの連続性を提供することができ、また、バックアップ用バッテリを用いなくてもよい。
【０１１３】
ある実施例において、本発明の一実施形態によるメモリシステムは、コンピューティングデバイスの格納装置（例えば、図１の１３０）として用いられてもよい。
【０１１４】
以上、本発明の実施例について詳細に説明したが、本発明の権利範囲はこれに限定されるのではなく、次の請求の範囲で定義している本発明の基本概念を利用した当業者の様々な変形および改良形態も本発明の権利範囲に属する。
【図１】
2020004412.tif 000003
【図２】
2020004412.tif 000004
【図３】
2020004412.tif 000005
【図４】
2020004412.tif 000006
【図５】
2020004412.tif 000007
【図６】
2020004412.tif 000008
【図７】
2020004412.tif 000009
【図８】
2020004412.tif 000010
【図９】
2020004412.tif 000011
【図１０】
2020004412.tif 000012
【図１１】
2020004412.tif 000013
【図１２】
2020004412.tif 000014