以下、本発明の実施の形態につき添付図面を参照しながら詳細に説明する。実施の形態において各ブロックを構成する回路素子は、特に制限されないが、公知のCMOS(相補型MOSトランジスタ)等の集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。
(第1の実施の形態)
図1は本発明を適用した第1の実施の形態である情報処理装置CPU_CHIPとメモリモジュールMEMとから構成される情報処理システムを示したものである。以下におのおのについ説明する。
情報処理装置CPU_CHIPは、情報処理回路CPU0、CPU1、CPU2、CPU3とメモリ制御回路CONから構成されている。メモリ制御回路CONは、リクエストキューRqQ、レスポンスキューRsQ、ブートデバイスIDレジスタBotID、最端デバイスIDレジスタEndID、リクエスト番号生成回路RqN、リクエスト番号生成レジスタRqNRを含む。CPU0、CPU1、CPU2、CPU3では、メモリ制御回路CONを通じて、メモリモジュールMEMより、OSやアプリケーションプログラムおよびアプリケーションプログラムにて処理を行うデータを読みだし実行する。
リクエストキューRqQ は、メモリモジュールMEMへ出力するためのCPU0、CPU1、CPU2およびCPU3で実行しているアプリケーションプログラムの結果などを格納する。レスポンスキューRsQは、CPU0、CPU1、CPU2およびCPU3へ出力するためのメモリモジュールMEMから読み出したアプリケーションプログラムなどを格納する。
メモリモジュールMEMは、メモリチップM0、M1、M2から構成される。また、情報処理装置CPU_CHIPとメモリチップM0、M1、M2は直列に接続されている。メモリチップM0は揮発性メモリであり、メモリチップM1およびM2は不揮発性メモリである。代表的な揮発性メモリには、メモリアレイにダイナミックランダムアクセスメモリセルを用いたDRAM及び疑似スタティックランダムアクセスメモリPSRAM、スタティックランダムアクセスメモリセルを用いたSRAM等があり、本発明には全ての揮発性メモリセルを利用することができる。本実施の形態ではメモリアレイにダイナミックランダムアクセスメモリセルを用いた例を説明する。
不揮発性メモリにはROM(リードオンリーメモリ)、EEPROM(エレクトリカリイレーサブルアンドプログラマブルROM)、フラッシュメモリ、相変化メモリ、マグネティック・ランダムアクセスメモリMRAM、抵抗スイッチング型ランダムアクセスメモリReRAM等を用いることができる。本実施の形態ではフラッシュメモリを例に説明する。
また、代表的なフラッシュメモリには、NOR型フラッシュメモリと、AND型フラッシュメモリと、NAND型フラッシュメモリと、ORNAND型フラッシュメモリがあり、本発明には全てのフラッシュメモリを利用することができる。本発明には全てのフラッシュメモリを利用することができる。本実施の形態では、NOR型フラッシュメモリとNAND型フラッシュメモリを例に説明する。
特に限定しないが、メモリチップM0として用いられる典型的な揮発性メモリは、ダイナミックメモリセルを利用したダイナミックランダムアクセスメモリであり、読み出し時間が15ns程度で、約1Gbitの記憶容量を持っている。特に限定しないがメモリチップM0は情報処理装置CPU_CHIPにてアプリケーションプログラムを実行するための一時的なワークメモリとして利用される。
特に限定しないが、メモリチップM1として用いられる典型的なフラッシュメモリは、NOR型フラッシュメモリセルを利用し、読み出し時間が80ns程度であり、約1Gbitの大きな記憶容量を持っている。特に限定しないが、メモリチップM1には情報処理装置CPU_CHIPにて実行するOS、ブートコード、ブートデバイスID値、最端デバイスID値およびアプリケーションプログラムなどが格納される。
特に限定しないが、メモリチップM2として用いられる典型的なフラッシュメモリはNAND型フラッシュメモリセルを利用し、読み出し時間が25μs程度であり、約4Gbitの記憶容量を持っている。特に限定しないが、メモリチップM1には主に情報処理装置CPU_CHIPにて再生、録音および録画処理を行うために必要な音声データ、静止画像データや動画像データなどが格納される。
メモリチップM0は、初期設定回路INIT、リクエストインターフェース回路ReqIFと、レスポンスインターフェース回路ResIFと、メモリ回路MemVLから構成されている。リクエストインターフェース回路ReqIFは、リクエストクロック制御回路RqCkCおよび、リクエストキュー制御回路RqCTから構成される。レスポンスインターフェース回路ResIFは、レスポンスクロック制御回路RsCkCおよび、レスポンスキュー制御回路RqCTから構成される。メモリ回路MemVLは、特に限定しないが、揮発性メモリであり、ダイナミックランダムアクセスメモリセルを利用したダイナミックランダムアクセスメモリである。リクエストクロック制御回路RqCkCは、クロックドライバ回路Drv1およびクロック分周回路Div1から構成される。メモリチップM1は、初期設定回路INIT、リクエストインターフェース回路ReqIFと、レスポンスインターフェース回路ResIFと、メモリ回路MemNV1から構成されている。
リクエストインターフェース回路ReqIFは、リクエストクロック制御回路RqCkCおよび、リクエストキュー制御回路RqCTから構成される。
レスポンスインターフェース回路ResIFは、レスポンスクロック制御回路RsCkCおよび、レスポンスキュー制御回路RqCTから構成される。
特に限定しないが、各メモリチップのリクエストキュー制御回路RqCTには、主に複数のリクエストを格納できるリクエストキューReqQ、IDレジスタIDR、レイテンシ値出力設定レジスタLRG、レスポンス順序設定レジスタRRG、リクエスト番号設定回路RNBなどが装備され、レスポンスキュー制御回路RqCTには、主に複数のレスポンスを格納できるレスポンスキューResQ、レイテンシ計算回路LAおよびレスポンス番号テーブルTBなどが装備されている。
メモリチップM1は、初期設定回路INIT1、リクエストインターフェース回路ReqIFと、レスポンスインターフェース回路ResIFと、メモリ回路MemNV1から構成されている。
リクエストインターフェース回路ReqIFは、リクエストクロック制御回路RqCkCおよび、リクエストキュー制御回路RqCTから構成される。レスポンスインターフェース回路ResIFは、レスポンスクロック制御回路RsCkCおよび、レスポンスキュー制御回路RqCTから構成される。メモリ回路MemNV1は、特に限定しないが、不揮発性メモリであり、NOR型フラッシュメモリセルを利用したNOR型フラッシュメモリである。リクエストクロック制御回路RqCkCは、クロックドライバ回路Drv1およびクロック分周回路Div1から構成される。
リクエストインターフェース回路ReqIFおよびレスポンスインターフェース回路ResIFの構成は、メモリチップM0と同じである。
メモリチップM2は、初期設定回路INIT、リクエストインターフェース回路ReqIFと、レスポンスインターフェース回路ResIFと、メモリ回路MemNV2から構成されている。メモリチップM2は、直列的に接続しているメモリチップの中で、最も終端のメモリチップであることを示すため、特に限定しないがRqEn3、RsMux3、RqCk3を接地(gnd)している。
リクエストインターフェース回路ReqIFは、リクエストクロック制御回路RqCkCおよび、リクエストキュー制御回路RqCTから構成される。レスポンスインターフェース回路ResIFは、レスポンスクロック制御回路RsCkCおよび、レスポンスキュー制御回路RqCTから構成される。メモリ回路MemNV2は、特に限定しないが、不揮発性メモリであり、NAND型フラッシュメモリセルを利用したNAND型フラッシュメモリである。リクエストクロック制御回路RqCkCは、クロックドライバ回路Drv1およびクロック分周回路Div1から構成される。
リクエストインターフェース回路ReqIFおよびレスポンスインターフェース回路ResIFの構成は、メモリチップM0と同じである。
メモリチップM0、M1及びM2の初期設定回路INITは電源投入直後に、それぞれのメモリチップに対し初期設定を行う。メモリチップM0、M1及びM2のリクエストキュー制御回路RqCTには、それぞれのメモリチップのID番号を格納するIDレジスタが設けられている。電源投入直後に先ず、初期設定回路INITによって初期設定され、次に、情報処理装置CPU_CHIPによってメモリチップM0、M1、M2のID番号が決定され、それぞれのメモリチップ内のIDレジスタへID番号が格納される。
メモリチップM0、M1及びM2は、特に限定しないが、それぞれブートデバイス認識信号Bsigを持っており、このブートデバイス認識信号Bsigが接地(gnd)されている場合は、そのメモリチップが電源投入直後の動作を行うためのブートプログラムを格納しているブートデバイスであることを示す。ブートデバイス認識信号Bsigが電源(vdd)に接続されている場合は、そのメモリチップがブートデバイスではないことを示す。特に限定しないが、メモリチップM1がブートデバイスであり、メモリチップM0およびM2はブートデバイスに設定されていない。また、ブートデバイス認識信号Bsigによって、どのチップをブートデバイスにするかをプログラムすることができる。
RqCk0、RqCK1およびRqCk2は、リクエストクロックであり、RsCk0、RsCK1およびRsCk2はレスポンスクロックである。RqEN0、RqEN1およびRqEN2は、リクエストイネーブル信号であり、RsEN0、RsEN1およびRsEN2はレスポンスイネーブル信号である。RqMux0、RqMux1およびRqMux2は、リクエス信号であり、RsMux0、RsMux1およびRsMux2はレスポンス信号である。
メモリチップM0は、特に限定しないが、情報処理装置CPU_CHIPからのリクエストを受け付けることが可能であればRqEN0をHighにし、受け付けることが不可能であればRqEN0をLowにする。メモリチップM1は、特に限定しないが、メモリチップM0からのリクエストを受け付けることが可能であればRqEN1をHighにし、受け付けることが不可能であればRqEN1をLowにする。メモリチップM2は、特に限定しないが、メモリチップM1からのリクエストを受け付けることが可能であればRqEN2をHighにし、受け付けることが不可能であればRqEN2をLowにする。
RqMux0、RqMux1およびRqMux2は、リクエスト信号であり、これらリクエスト信号を通じて送信されるリクエストは、特に限定しないがID値、コマンド、アドレス、リクエスト番号及び書き込みデータなどが、多重化され、それぞれのリクエストクロックRqCk0、RqCk1およびRqCk2に同期して送信される。RsMux0、RsMux1およびRsMux2のレスポンス信号であり、これらレスポンス信号を通じて送信されるレスポンスは、特に限定しないがID値、レスポンス番号、読み出しデータのレイテンシ値あるいはレイテンシレベル値及び読み出したデータなどが、多重化され、それぞれのレスポンスクロックRsCk0、RsCk1、RsCk2に同期して送信される。
以下に本情報処理システムの動作を説明する。先ず、電源投入時および電源投入直後の動作について説明する。
<電源投入直後の動作説明><電源投入時の初期シーケンス>
先ず、図1および図2を用いて電源投入時の本情報処理システムの動作の一例について説明する。
図2は、本情報処理システム装置の電源投入時の初期シーケンスを示す一例である。
T1の期間(PwON)で情報処理装置CPU_CHIPと、メモリモジュールMEM内のメモリチップM0、M1及びM2へ電源投入を行い、T2の期間(Reset)でリセットを行う。リセットの方法は特に限定しないが、それぞれの内蔵回路で自動的にリセットを行う方法でも、あるいは、外部にリセット端子を持ち、このリセット信号によってリセット動作を行うこととしても良い。
T2のリセット期間(Reset)の期間では、情報処理装置CPU_CHIP、メモリチップM0、M1及びM2の内部状態を初期設定する。以下に一例を示す。
情報処理装置CPU_CHIPはブートデバイスIDレジスタBotIDを1へ、最端デバイスIDレジスタEndIDを0へ初期設定する。
メモリチップM0は、自身の初期設定回路INITが、自身のリクエストキュー制御回路RqCT、レスポンスキュー制御回路RqCT、リクエスト制御回路RqCkc、レスポンスクロック制御回路RsCkC、クロック分周回路Div1、Div2およびメモリ回路MemVLを初期設定する。IDレジスタIDRが持つID値は0へ、ID有効ビットはLowへ初期設定される。
レイテンシ出力レジスタLRGが持つイテンシ値出力フラグ情報LRGFlag値およびID情報値は0へ初期設定される。
レスポンス順序設定レジスタRRGが持つリクエスト番号選択フラグRSELFlag値と、レスポンス順序フラグRRGFlag値と、ID情報値は0へ初期設定される。
レスポンスキュー制御回路RqCTが持つレスポンス調停回路のレスポンス優先順位に関して、メモリチップM0のレスポンス優先順位は1へ、メモリチップM1のレスポンス優先順位は2へ、メモリチップM2のレスポンス優先順位は3へ初期設定される。クロック分周回路Div1およびDiv2の分周比は1へ初期設定される。
メモリチップM1は、自身の初期設定回路INITが、自身のリクエストキュー制御回路RqCT、レスポンスキュー制御回路RqCT、リクエスト制御回路RqCkc、レスポンスクロック制御回路RsCkC、クロック分周回路Div1、Div2およびメモリ回路MemNV1を初期設定する。IDレジスタIDRが持つID値は0へ、ID有効ビットはLowへ初期設定される。レイテンシ出力レジスタLRGが持つイテンシ値出力フラグ情報LRGFlag値およびID情報値は0へ初期設定される。
レスポンス順序設定レジスタRRGが持つリクエスト番号選択フラグRSELFlag値と、レスポンス順序フラグRRGFlag値と、ID情報値は0へ初期設定される。メモリチップM1のレスポンスキュー制御回路RqCTが持つレスポンス調停回路のレスポンス優先順位に関して、メモリチップM1のレスポンス優先順位は1へ、メモリチップM2のレスポンス優先順位は2へ初期設定される。クロック分周回路Div1およびDiv2の分周比は1に設定される。
メモリチップM2は、自身の初期設定回路INITが、自身のリクエストキュー制御回路RqCT、レスポンスキュー制御回路RqCT、リクエスト制御回路RqCkc、レスポンスクロック制御回路RsCkC、クロック分周回路Div1、Div2およびメモリ回路MemNV2を初期設定する。IDレジスタIDRが持つID値は0へ、ID有効ビットはLowへ初期設定される。レイテンシ出力レジスタLRGが持つイテンシ値出力フラグ情報LRGFlag値およびID情報値は0へ初期設定される。
レスポンス順序設定レジスタRRGが持つリクエスト番号選択フラグRSELFlag値と、レスポンス順序フラグRRGFlag値と、ID情報値は0へ初期設定される。メモリチップM2のレスポンスキュー制御回路RqCTが持つレスポンス調停回路のレスポンス優先順位に関してメモリチップM2のレスポンス優先順位は1へ初期設定される。クロック分周回路Div1およびDiv2の分周比は1に設定される。
T2のリセット期間(Reset)が終了した後のT3の期間(LinkEn)では、情報処理装置CPU_CHIP、メモリチップM0,M1およびM2の信号の接続確認を行う。以下に一例を示す。
情報処理装置CPU_CHIPからリクエストクロックRqCk0がメモリチップM0へ入力され、メモリチップM0のクロックドライバDrv1を通じてクロック分周回路Div1およびクロック信号ck1としてクロック分周回路Div2へ出力される。クロック分周回路Div1へ入力したクロックは、リクエストクロックRqCk1を通じてメモリチップM1へ出力する。クロック分周回路Div1へ入力したクロックは、クロック信号ck2から出力され、また、リクエストクロックRqCk1を通じてメモリチップM2へ出力する。クロック分周回路Div2へ入力したクロックはクロック信号ck3から出力され、また、レスポンスクロックRsCk0を通じて情報処理装置CPU_CHIPへ出力する。メモリチップM1のクロックドライバDrv1へ入力されたクロックは、クロック分周回路Div1およびクロック信号ck1としてクロック分周回路Div2へ出力される。クロック分周回路Div1へ入力したクロックは、クロック信号ck2から出力され、また、リクエストクロックRqCk1を通じてメモリチップM2へ出力する。クロック分周回路Div2へ入力したクロックは、クロック信号ck3から出力され、また、レスポンスクロックRsCk1を通じてメモリチップM0へ出力する。レスポンスクロックRsCk1を通じてメモリチップM0のクロックドライバDrv2へ入力されたクロックはクロック信号ck4へ出力される。メモリチップM2のクロックドライバDrv1へ入力されたクロックはクロック分周回路Div1およびおよびクロック信号ck1としてクロック分周回路Div2へ出力される。クロック分周回路Div2へ入力したクロックはクロック信号ck3から出力され、またリクエストクロックRqCk1を通じてメモリチップM2へ出力する。レスポンスクロックRsCk2を通じてメモリチップM1のクロックドライバDrv2へ入力されたクロックはクロック信号ck4へ出力される。
次に、メモリチップM0は、ブートデバイス認識信号Bsigが電源vddに接続されているので、自分自身はブートデバイスではないことを認識する。メモリチップM1は、ブートデバイス認識信号Bsigが接地gndされているので、自分自身がブートデバイスであることを認識し、自らのメモリ回路MemNV1が保持しているブートデバイスID値1をIDレジスタへ設定し、ID有効ビットをHighにする。メモリチップM2は、ブートデバイス認識信号Bsigが電源に接続されているので、自分自身はブートデバイスではないことを認識する。さらに、メモリチップM2は、RqEn3、RsMux3、RqCk3を接地(gnd)していることによって、直列接続しているメモリチップの最も終端のメモリチップであることを認識し、リクエストイネーブル信号RqEn2をHighにする。
次に、メモリチップM1はリクエストイネーブル信号RqEn2がHighになったことを確認し、レスポンスイネーブル信号RsEn2及びリクエストイネーブル信号RqEn1をHighにする。次に、メモリチップM0はリクエストイネーブル信号RqEn1がHighになったことを確認し、レスポンスイネーブル信号RsEn1及びリクエストイネーブル信号RqEn0をHighにする。最後に、情報処理装置CPU_CHIPは、リクエストイネーブル信号RqEn0がHighになったことを確認し、各メモリチップの信号接続が確認されたことを知り、レスポンスイネーブル信号RsEn0をHighにする。これによって、情報処理装置CPU_CHIPおよびメモリチップM0、M1、M2が直列接続されていることが確認できる。
T3の期間が終了した後のT4の期間(BootRd)では情報処理装置CPU_CHIPがメモリチップM1よりブートデータを読み出す。以下に動作の一例を示す。
情報処理装置CPU_CHIPは、ブートデバイスIDレジスタBotIDの値1を読み出し、リクエスト信号RqMux0を通じて、ID値1、バンクアクティブ命令BA、バンクアドレスBK0、ページアドレスPage0を多重化したリクエストReqBAm1をクロック信号RqCK0に同期させ、メモリチップM0へ転送する。
続いて、リクエスト信号RqMux0を通じて、ID値1、読み出し命令RD、バンクアドレスBK0、カラムアドレスColを多重化したリクエストReqRDm1をクロック信号RqCK0に同期させ、メモリチップM0へ転送する。
メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqBAm1とReqRDm1を順に、自身のリクエストキュー制御回路RqCTへ格納する。
メモリチップM0は、リクエストReqBAm1およびReqRDm1に含まれるID値1と自身のIDレジスタの値2を順に比較する。比較結果は不一致のため、メモリチップM0はリクエストReqBAm1およびReqRD16m1を自身へのリクエストではないと判断し、リクエスト信号RqMux1を通じて、順にメモリチップM1へ転送する。
メモリチップM1は、メモリチップM0からのリクエストReqBAm1およびReqRDm1を自身のリクエストキュー制御回路RqCTへ格納する。
メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqBAm1に含まれるID値1と自身のIDレジスタの値1を比較する。双方は一致しているため、リクエストキュー制御回路RqCTはリクエストReqBA1をメモリ回路MemVLへ送信する。メモリ回路MemVLは、リクエストReqBAm1にバンクアクティブ命令BA、バンクアドレスBK0、ページアドレスPage0によって、指定された1ページ分(特に限定しないが1kバイト分)のブートデータがバッファBUF0へ転送される。ブートデータには、ブートプログラムと最終端デバイスID番号3が含まれる。
メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqRDm1に含まれるID値1と自身のIDレジスタの値1を比較する。双方は一致しているため、リクエストキュー制御回路RqCTは、リクエストReqRDm1をメモリ回路MemVLへ送信する。
メモリチップM1のメモリ回路MemNV1からリクエストReqRDm1に含まれる読み出し命令RD16、バンクアドレスBK0、カラムアドレスColによって、バッファBUF0内の最終端デバイスID番号3を含んだブートデータが読み出され、IDレジスタ値1を含めて、レスポンスキュー制御回路RsCTへレスポンスRsRDm1として転送される。
メモリチップM1のレスポンスキュー制御回路RsCTは、レスポンス信号RsMux0を通じて、レスポンスRsRDm1をメモリチップM0へ出力する。メモリチップM0は、レスポンスRsRDm1を受け取り情報処理装置CPU_CHIPへ出力する。
情報処理装置CPU_CHIPは、レスポンスResRDm1をレスポンスキューRsQへ格納する。レスポンスResBRD1に含まれるID値1により、ブートデータが、メモリチップM1から送信されたことを知ることができる。最終端デバイスID値3はメモリ制御回路CON内の最終端デバイスIDレジスタEndIDへ保存される。
T4の期間が終了した後のT5の期間(InitID)では、情報処理装置CPU_CHIPは、ブートプログラムによって自らを立ち上げ、次に各メモリチップM0、M1、M2へID番号の割り当てを行う。以下に動作の一例を示す。
情報処理装置CPU_CHIPはブートコードに従い、先ず、各メモリチップへのID番号付けを行う。情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID番号2とID設定命令をメモリチップM0へ転送する。メモリチップM0では、ID有効ビットがLowのため、まだID番号付けが行われていない。そこで、メモリチップM0は、ID番号2とID設定命令によってIDレジスタへID番号2を設定し、ID有効ビットをHighにする。ID有効ビットがHighとなることで、ID番号付けが完了したことを示す。メモリチップM0のID番号付けが完了すると、メモリチップM0はレスポンス信号RsMux0を通じて、メモリチップM0のID値2およびID番号付け完了情報を出力する。情報処理装置CPU_CHIPは、メモリチップM0のID値2およびID番号付け完了情報を受け取り、メモリチップM0のID番号付けが完了したことを知る。
次に、情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じてID番号3とID設定命令を多重化したリクエストReqID3をメモリチップM0へ転送する。メモリチップM0は自身のID番号2とリクエストReqID3に含まれるID番号3とを比較し、不一致のため、リクエストReqID3をメモリチップM1へ転送する。
メモリチップM1は自身のID番号1とリクエストReqID3に含まれるID番号3とを比較し、不一致のため、リクエストReqID3をメモリチップM2へ転送する。メモリチップM2では、ID有効ビットがLowのため、まだID番号付けが行われていない。そこで、メモリチップM2は、リクエストReqID3に含まれるID番号3とID設定命令によってメモリチップM2のIDレジスタへID番号3を設定し、ID有効ビットをHighにする。最終端のメモリチップM2のID番号付けが完了すると、メモリチップM2はレスポンス信号RqMux2を通じて、メモリチップM2のID値3およびID番号付け完了情報を多重化したレスポンスResID3をメモリチップM1へ出力する。メモリチップM1はレスポンス信号RqMux1を通じてレスポンスResID3をメモリチップM0へ出力する。メモリチップM0はレスポンス信号RqMux0を通じてレスポンスResID3を情報処理装置CPU_CHIPへ転送する。情報処理装置CPU_CHIPは、レスポンスResID3を受け取り、このレスポンスResID3に含まれるメモリチップM2のID値3およびID番号付け完了情報を受け取り、メモリチップM2のID番号付けが完了したことを知る。さらに、情報処理装置CPU_CHIPは、転送されたメモリチップM2のID値3と、メモリ制御回路CON内の最終端デバイスIDレジスタEndIDに設定されている最終端デバイスID値3とを比較し、双方が一致したことで、最終端のメモリチップまでID番号付けが行われたことを確認する。
T5の期間が終了した後のT6の期間(Idle)以降は、メモリモジュールMEMはアイドル状態となり、情報処理装置CPU_CHPからのリクエストを待つ状態となる。
このように、電源投入直後に、直列接続の確認動作を行うことで、確実にメモリ同士が接続されていることが確認できる。さらに、ブートデバイスおよび、最端のメモリチップを明示し、自動的に各メモリへのID付けが行われることで、容易に、必要な分だけメモリチップを接続し、メモリ容量を拡張することができる。
<レジスタ設定 レイテンシ値出力設定レジスタLRG>
電源投入時の初期シーケンスが終了した後、メモリチップM0、M1およびM2のレイテンシ値出力レジスタLREGへのデータ設定動作について図3を利用し説明する。
特に限定しないがレイテンシ値出力設定レジスタLRGでは、メモリチップM0、M1およびM2の、どのメモリチップからのレスポンスに関するレイテンシ値を出力すればいいのかを設定できる。
特に限定しないが、メモリチップM0、M1、M2のそれぞれのIDレジスタ値が2、1及び3に設定されている。
図3はメモリチップM0、M1およびM2のレイテンシ値出力レジスタLREGへデータを設定する動作の一例を示すフローチャートである。
特に限定しないが、メモリチップM0、M1、M2のそれぞれのIDレジスタ値が2、1及び3に設定されている。
先ず、メモリチップM0のレイテンシ値出力レジスタLREGへのデータ設定動作について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値2、レイテンシ値出力レジスタ設定命令LRGSet、レイテンシ値出力レジスタLRGへの設定値LRGData0を多重化したリクエストReqLRGSet0をクロック信号RqCK0に同期させ、メモリチップM0へ転送する(図3 :Step1)。レイテンシ出力レジスタLRGへの設定値LRGData0には、レイテンシ値出力フラグ情報LRGFlag値1と、ID値2と、ID値1と、ID値3が含まれる。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqLRGSet0を格納する(図3:Step2)。
次に、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqLRGSet0に含まれるID値2と自身のIDレジスタの値2を比較する(図3:Step3)。
双方は一致しているため、メモリチップM0のレイテンシ値出力レジスタLRGへ設定値LRGData0が設定される(図3:Step4)。
次に、メモリチップM1のレイテンシ値出力レジスタLREGへのデータ設定動作について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値1、レイテンシ値出力レジスタ設定命令LRGSet、レイテンシ値出力レジスタLRGへの設定値LRGData1を多重化したリクエストReqLRGSet1をクロック信号RqCK0に同期させ、メモリチップM0へ転送する(図3:Step1)。設定値LRGData1には、レイテンシ値出力フラグ情報LRGFlag値1と、ID値2と、ID値1と、ID値3が含まれる。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqLRGSet1を格納する(図3:Step2)。
次に、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqLRGSet1に含まれるID値1と自身のIDレジスタの値2を比較する(図3:Step3)。
双方は不一致のため、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqLRGSet1をリクエストキュー回路RqQXOへ転送し、メモリチップM1へ送信する((図3:Step5)。
メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqLRGSet1を格納する(図3:Step2)。
次に、メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqLRGSet1に含まれるID値1と自身のIDレジスタの値1を比較する(図3:Step3)。
双方は一致しているため、メモリチップM1のレイテンシ値出力レジスタLRGへ設定値LRGData1が設定される(図3:Step4)。
メモリチップM2のレイテンシ値出力レジスタLREGへのデータ設定動作はメモリチップM1と同様の動作で行われる。
図4は、メモリチップM0、M1およびM2のレイテンシ値出力レジスタLREGの設定値の一例を示す。
メモリチップM0のレイテンシ値出力レジスタM0_LREGの設定値によってメモリチップM0は、自身へのリクエストに対するレスポンスと、メモリチップM1へのリクエストと、メモリチップM2へのリクエストに関するレイテンシ値を出力する。
メモリチップM1のレイテンシ値出力レジスタM1_LREGの設定値によってメモリチップM1は、自身へのリクエストに対するレスポンスと、メモリチップM2へのリクエストに関するレイテンシ値を出力する。
メモリチップM2のレイテンシ値出力レジスタM2_LREGの設定値によってメモリチップM2は、自身へのリクエストに対するレスポンスに関するレイテンシ値を出力する。
このように、データを出力する前に、そのデータが何時出力するかを示すレイテンシ値を出力することで、情報処理装置CPU_CHIPは、前もって、データの到着時間を知ることができる。そのため、情報処理装置CPU_CHIPはデータの到着前に必要な他の処理を行うことができ性能向上が図れる。
<レジスタ設定 レスポンス順序設定レジスタRRG>
図5はメモリチップM0、M1およびM2のレスポンス順序設定レジスタRRGへデータを設定する動作の一例を示すフローチャートである。
先ず、メモリチップM0のレスポンス順序設定レジスタRRGへのデータ設定動作について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値2、レスポンス順序設定レジスタ設定命令RRGSet、レスポンス順序設定レジスタRRGへの設定値RRGData0を多重化したリクエストReqRRGSet0をクロック信号RqCK0に同期させ、メモリチップM0へ転送する(図5:Step1)。設定値RRGData0には、リクエスト番号選択フラグ情報RSELFlag値と、レスポンス順序フラグRRGFlag情報と、ID値が含まれる。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRRGSet0を格納する(図5:Step2)。
次に、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRRGSet0に含まれるID値2と自身のIDレジスタの値2を比較する(図5:Step3)。
双方は一致しているため、メモリチップM0のレスポンス順序設定レジスタRRGへ設定値RRGData0が設定される。(図5:Step4)。
次に、メモリチップM1のへのデータ設定動作について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値1、レスポンス順序設定レジスタ設定命令RRGSet、レスポンス順序設定レジスタRRGへの設定値RRGData1を多重化したリクエストReqRRGSet1をクロック信号RqCK0に同期させ、メモリチップM0へ転送する(図5:Step1)。
設定値RRGData1には、リクエスト番号選択フラグ情報RSELFlag値1と、レスポンス順序フラグ情報RRGFlag値1と、ID値2が含まれる。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRRGSet1を格納する(図5:Step2)。
次に、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRRGSet1に含まれるID値1と自身のIDレジスタの値2を比較する(図5:Step3)。
双方は不一致のため、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRRGSet1をリクエストキュー回路RqQXOへ転送し、メモリチップM1へ送信する(図5:Step5)。
メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqRRGSet1を格納する(図5:Step2)。
次に、メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqRRGSet1に含まれるID値1と自身のIDレジスタの値1を比較する(図5:Step3)。
双方は一致しているため、メモリチップM1のレスポンス順序設定レジスタRRGへ設定値RRGData1が設定される(図5:Step4)。
メモリチップM2のレスポンス順序設定レジスタRRG設定動作はメモリチップM1と同様の動作で行われる。
図6(a)および(b)は、メモリチップM0、M1およびM2のレスポンス順序設定レジスタRRGの設定値の一例を示す。M0_RRGはメモリチップM0のレスポンス順序設定レジスタRRGである。M1_RRGはメモリチップM1のレスポンス順序設定レジスタRRGである。M2_RRGはメモリチップM2のレスポンス順序設定レジスタRRGである。
特に限定しないがリクエスト番号選択フラグ情報RSELFlag値が0の場合は、情報処理装置CPU_CHIPからメモリモジュールMEMへ送信されるリクエストに含まれるリクエスト番号を利用しレスポンス順序を決め、また、リクエスト番号選択フラグ情報RSELFlag値が1の場合は、情報処理装置CPU_CHIPからメモリモジュールMEMへ送信されるリクエストに対応するリクエスト番号をメモリチップが生成し、その生成したリクエスト番号を利用し、レスポンス順序を決める。
また、特に限定しないがレスポンス順序フラグ情報RRGFlag値が0の場合は、メモリモジュールMEMへ入力したリクエスト順には制限を受けないで、早く送信できるレスポンスから送信し、また、レスポンス順序フラグ情報RRGFlag値が1の場合は、メモリモジュールMEMへ入力したリクエスト順にレスポンスを送信する。
図6(a)が示すレスポンス順序設定レジスタRRGの設定値により、メモリチップM0は、自身へのリクエストに関してはメモリチップM0自身が生成したリクエスト番号を利用し、入力したリクエスト順にレスポンスを送信する。また、メモリチップM0は、自身のレスポンスと、メモリチップM1あるいはM2からメモリチップM0 へ入力したレスポンスの間では、リクエストの入力順序に関わらず、早く送信できるレスポンは、遅いレスポンを待つことなく、情報処理装置CPU_CHIPへ送信できる。
メモリチップM1は、自身へのリクエストに関してはメモリチップM1自身が生成したリクエスト番号を利用し、入力したリクエスト順にレスポンスを送信する。また、メモリチップM1は、自身のレスポンスと、メモリチップM2からメモリチップM1 へ入力したレスポンスの間では、リクエストの入力順序に関わらず、早く送信できるレスポンは、遅いレスポンを待つことなく、メモリチップM0へ送信できる。
メモリチップM2は、自身へのリクエストに関してはメモリチップM2自身が生成したリクエスト番号を利用し、入力したリクエスト順にレスポンスを、メモリチップM1へ送信する。
図6(b)が示すレスポンス順序設定レジスタRRGの設定値により、メモリチップM0は、自身へのリクエストに関しては、情報処理装置CPU_CHIPから送信されるリクエスト番号を利用し、リクエストの入力順序に関わらず、早く送信できるレスポンは、遅いレスポンを待つことなく情報処理装置CPU_CHIPへ送信される。また、メモリチップM0は、自身のレスポンスと、メモリチップM1あるいはM2からメモリチップM0 へ入力したレスポンスの間では、リクエストの入力順序に関わらず、早く送信できるレスポンは、遅いレスポンを待つことなく、情報処理装置CPU_CHIPへ送信できる。
メモリチップM1は、自身へのリクエストに関しては、情報処理装置CPU_CHIPから送信されるリクエスト番号を利用し、リクエストの入力順序に関わらず、早く送信できるレスポンは、遅いレスポンを待つことなくモリチップM0へ送信される。また、メモリチップM1は、自身のレスポンスと、メモリチップM2からメモリチップM1 へ入力したレスポンスの間では、リクエストの入力順序に関わらず、早く送信できるレスポンは、遅いレスポンを待つことなくメモリチップM0へ送信できる。
メモリチップM2は、自身へのリクエストに関しては、情報処理装置CPU_CHIPから送信されるリクエスト番号を利用し、リクエストの入力順序に関わらず、早く送信できるレスポンは、遅いレスポンを待つことなくメモリチップM1へ送信される。
また、レスポンス順序設定レジスタRRGのレスポンス順序フラグ情報RRGFlagに対応したID値を複数設定することにより複数のメモリチップ間でのレスポンス順序を設定できることは言うまでもない。
以上説明したように、レスポンス順序設定レジスタRRGによって、メモリチップ毎やチップ間で、入力したリクエスト順にレスポンスを送信するのか、あるいは入力したリクエスト順には制限を受けないで、早く送信できるレスポンスから送信するのかを設定できるため、扱うシステムに応じて情報処理装置CPU_CHIPが様々に要求するOS、ブートプログラムおよびアプリケーションプログラムなどのメモリチップへの配置方法に柔軟に対応しながら性能向上が図れる。
<通常動作の説明:レイテンシ値の出力>
メモリモジュールMEMと情報処理装置CPU_CHIP間の、レイテンシ値の出力を含むデータ転送について、図1と図7を利用し説明する。
特に限定しないが、メモリチップM0、M1、M2のそれぞれのIDレジスタ値が2、1及び3に設定されている。
特に限定しないが、メモリチップM0、M1およびM2のレイテンシ値出力レジスタLRGは、図4で示した値に設定されており、レスポンス順序設定レジスタRRGは、図6(a)で示された値に設定されている。
特に限定しないが、メモリチップM0、M1、M2のリクエストキュー制御回路RqCTにはリクエストキューは2つ存在し、リクエストがエントリされていない状態であり、メモリチップM0のレスポンスキュー制御回路RsCTにはレスポンスキューが2つ存在し、このレスポンスキューにはレスポンスがすでに1つエントリされている場合のデータ転送について説明する。
特に限定しないが、1つのリクエストキューは1バイトのID値、1バイトのリクエスト番号、1バイトの命令、2バイトのアドレス、32バイトの書き込みデータを格納でき、1つのレスポンスキューは1バイトのID値、1バイトのリクエスト番号、32バイトの読み出しデータを格納できる。
また、特に限定しないが、メモリチップM0、M1、M2のそれぞれのメモリ回路MemVL、MemNV1、MemNV2は8つのメモリバンクから構成されており、1つのメモリバンクには1つのセンスアンプ回路が装置されている。
メモリチップM0は、自身のリクエストキューに情報処理装置CPU_CHIPからのリクエストがエントリされていないため、クエストイネーブル信号RqEn0をHighにし、リクエストを受け付けることができることを情報処理装置CPU_CHIPへ知らせる。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値2、バンクアクティブ命令BA、バンクアドレスBK0、ロウアドレスRow0を多重化したリクエストReqBAm01をクロック信号RqCK0に同期させ、メモリチップM0へ転送する。
続いて、リクエスト信号RqMux0を通じて、ID値2、16バイト読み出し命令RD、バンクアドレスBK0、カラムアドレスCol31を多重化したリクエストReqRDm16をクロック信号RqCK0に同期させ、メモリチップM0へ転送する( 図7:Step1 )。
メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqBAm01とReqRDm16を順に、自身のリクエストキュー制御回路RqCTへ格納する( 図7:Step2 )。
これで、リクエストキュー制御回路RqCT内の全てのリクエストキューはエントリされ、情報処理装置CPU_CHIPからの新たなリクエストを受け付けることができないため、リクエストイネーブル信号RqEn0をLowにする。
リクエストイネーブル信号RqEn0がLowになったことで、情報処理装置CPU_CHIPは、メモリチップM0が、リクエストを受け付けられなくなったことを知ることができる。
その後、リクエストキュー制御回路RqCTはリクエストReqBAm01に含まれるID値2と自身のIDレジスタの値2を比較する。リクエストReqBA1に含まれるID値2とメモリチップM0のIDレジスタ値2は一致しているため、リクエストキュー制御回路RqCTはリクエストReqBA1をメモリ回路MemVLへ送信する。メモリ回路MemVLは、リクエストReqBAm01にバンクアクティブ命令BA、バンクアドレスBK0、ロウアドレスRow0によって、バンク0内のロウ0に接続されている1ページ分(特に限定しないが8192ビット分)のメモリセルが活性化されセンスアンプへ転送される。
リクエストReqBAm01が処理されたことによって、リクエストキュー制御回路RqCT内のリクエストキューがひとつ分空いたため、メモリチップM0はリクエストイネーブル信号RqEn0をHighにし、新たなリクエストを受け付け可能であることを情報処理装置CPU_CHIPへ知らせる。
次に、リクエストキュー制御回路RqCTはリクエストReqRDm16に含まれるID値2と自身のIDレジスタの値2を順に比較する( 図7:Step3 )。リクエストReqRDm16に含まれるID値2とメモリチップM0のIDレジスタ値2はまた一致しているため、リクエストキュー制御回路RqCTは、リクエストReqRDm16をメモリ回路MemVLへ送信する。
また、リクエストキュー制御回路RqCTは、読み出しリクエストReqRDm16をメモリ回路MemVLへ送信する際は、レイテンシ値出力レジスタLRGの設定に従って、リクエストReqRDm04に含まれるID値2とレイテンシ値出力レジスタLRG内のレイテンシ値出力フラグ情報LRGFlag値1をレスポンスキュー制御回路RsCT内のレイテンシ計算回路LAへ送信する。
レイテンシ計算回路LAは受け取ったレイテンシ値出力フラグ情報LRGFlag値が1であることを確認し( 図7:Step4 )、リクエストReqRDm16に対するデータがレスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ出力されるまでのレイテンシ値LaRdを計算する( 図7:Step5 )。次にレスポンスキュー制御回路RsCTは、ID値2と計算したレイテンシ値LaRdを含んだレスポンスRsLaをレスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ送信する図7:Step6 )。
もし、レイテンシ計算回路LAは、受け取ったレイテンシ値出力フラグ情報LRGFlag値が0の場合は、レイテンシの計算を実行せず終了する( 図7:Step8 )。
情報処理装置CPU_CHIPのメモリ制御回路CONは、レスポンスRsLaを、レスポンスキューRsQへ受け取る。情報処理装置CPU_CHIPは、レスポンスキューRsQへ送信されたレスポンスRsLa に含まれるID値2およびレイテンシ値LaRdによって、リクエストRqRDm04に対応するデータが何時までに、メモリチップM0から送信されるかどうかをを前もって確認できる。
次にメモリ回路MemVLからリクエストReqRDm16に含まれる16バイト読み出し命令RD16、バンクアドレスBK0、カラムアドレスCol31によって、メモリ回路MemVLのバンク0のセンスアンプに保持されているデータのなかで、カラムアドレスCol31を開始アドレスとした16 バイト分のデータが読み出され、IDレジスタ値2を含めて、レスポンスキュー制御回路RsCTへレスポンスResRDm16として転送される。
レスポンスキュー制御回路RsCTは、レスポンス信号RsMux0を通じて、レスポンスRsRDm16を情報処理装置CPU_CHIPへ出力する。情報処理装置CPU_CHIPのメモリ制御回路CONはレスポンスRsRDm16を、レスポンスキューRsQへ受け取る。情報処理装置CPU_CHIPは、レスポンスキューRsQへ送信されたレスポンスRsRDm04に含まれるID値2によって、リクエストRqRDm16に対応するデータが正しくメモリチップM0から送信されたことを確認できる。
レスポンスキュー制御回路RsCTでの、レイテンシの計算方法は、特に限定しないが、Tinitial + Sum(Tcycle)としてもよい。
リクエストReqRDm16がメモリ回路MemVLへ送信されてから、所望のデータが読み出されレスポンスキュー制御回路RsCTへレスポンスResRDm16として入力されるまでの時間であり、特に限定しないが、3クロックサイクル程度である。
Sum(Tcycle)はレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでにレスポンスデータを保持しているレスポンスキューに関して、そのレスポンスデータすべてを出力するために必要なデータ転送クロックサイクル数Tcycleの総和である。
レスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでに1つのレスポンスキューにレスポンスデータが保持されており、そのレスポンスデータのデータ転送クロックサイクル数を16とすると、リクエストReqRDm16に対する出力データのレイテンシ値LaRdは3+16=19サイクルとなる。
ここでは、メモリチップM0が出力するレイテンシ値は、具体的なクロックサイクル数を例に説明したが、レイテンシ値はクロックサイクル数に対応したレベル値であってもよい。
上記では、メモリチップM0でのデータの読み出しについて説明したが、メモリチップM1およびM2についても同様の動作を実行できることは言うまでもない。
特に限定しないが、レスポンスキューRsQへ入力したデータは情報処理回路CPU0、CPU1、CPU2およびCPU3のいずれかでデータ処理が行われる。
次に、情報処理装置CPU_CHIPとメモリチップM1とのデータ転送について説明する。
特に限定しないが、メモリチップM0、M1、M2のリクエストキュー制御回路RqCTにはリクエストキューは2つ存在し、リクエストがエントリされていない状態である。また、メモリチップM0、M1、M2のレスポンスキュー制御回路RsCTにはレスポンスキューが2つ存在し、メモリチップM0およびM1のレスポンスキューにはレスポンスがすでに1つエントリされている場合のデータ転送について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値1、バンクアクティブ命令BA、バンクアドレスBK0、ページアドレスPage0を多重化したリクエストReqBAm1をクロック信号RqCK0に同期させ、メモリチップM0へ転送する。
続いて、リクエスト信号RqMux0を通じて、ID値1、16バイト読み出し命令RD16、バンクアドレスBK0、カラムアドレスCol31を多重化したリクエストReqRD16m1をクロック信号RqCK0に同期させ、メモリチップM0へ転送する( 図7:Step1 )。
メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqBAm1とReqRD16m1を順に、自身のリクエストキュー制御回路RqCTへ格納する( 図7:Step2 )。
メモリチップM0は、リクエストReqBAm1およびReqRD16m1に含まれるID値1と自身のIDレジスタの値2を順に比較する( 図7:Step3)。比較結果は不一致のため、メモリチップM0はリクエストReqBAm1およびReqRD16m1を自身へのリクエストではないと判断し、リクエスト信号RqMux1を通じて、順にメモリチップM1へ転送する( 図7:Step7 )。
メモリチップM1は、メモリチップM0からのリクエストReqBAm1およびReqRD16m1を自身のリクエストキュー制御回路RqCTへ格納する( 図7:Step2 )。
メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqBAm1に含まれるID値1と自身のIDレジスタの値1を比較する( 図7:Step3)。双方は一致しているため、リクエストキュー制御回路RqCTはリクエストReqBA1をメモリ回路MemVLへ送信する。メモリ回路MemVLは、リクエストReqBAm1にバンクアクティブ命令BA、バンクアドレスBK0、ページアドレスRow0によって、指定された1ページ分(特に限定しないが1kバイト分)のメモリセルが活性化されセンスアンプへ転送される。
次に、メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqRD16m1に含まれるID値1と自身のIDレジスタの値1を比較する。双方は一致しているため、リクエストキュー制御回路RqCTは、リクエストReqRDm16をメモリ回路MemVLへ送信する。
また、メモリチップM1のリクエストキュー制御回路RqCTは、読み出しリクエストReqRD16m1をメモリ回路MemVLへ送信する際は、レイテンシ値出力レジスタLRGの設定に従って、リクエストReqRD16m1に含まれるID値1とレイテンシ値出力レジスタLRG内のレイテンシ値出力フラグ情報LRGFlag値1をレスポンスキュー制御回路RsCT内のレイテンシ計算回路LAへ送信する。
レイテンシ計算回路LAは受け取ったレイテンシ値出力フラグ情報LRGFlag値が1であることを確認し( 図7:Step4 )、リクエストReqRD16m1に対するデータがレスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ出力されるまでのレイテンシ値LaRd1を計算する( 図7:Step5)。次にレスポンスキュー制御回路RsCTは、ID値1と計算したレイテンシ値LaRd1を含んだレスポンスRsLa1をレスポンス信号RsMux0を通じて、メモリチップM0へ送信する( 図7:Step6)。
レスポンスRsLa1を受け取ったメモリチップM0のレスポンスキュー制御回路RsCTはレスポンスRsLa1に含まれるレイテンシ値LaRd1を元に、情報処理装置CPU_CHIPへ出力されるまでのレイテンシ値LaRd2を計算し、レスポンスRsLa1に含まれるID値1と計算したレイテンシ値LaRd2を含んだレスポンスRsLa2をレスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ送信する。
情報処理装置CPU_CHIPのメモリ制御回路CONは、レスポンスRsLa2を、レスポンスキューRsQへ受け取る。情報処理装置CPU_CHIPは、レスポンスキューRsQへ送信されたレスポンスRsLa2に含まれるID値1およびレイテンシ値LaRd2によって、メモリチップM1から、いつまでにデータが、送信されるかどうかをを前もって確認できる。
次にメモリチップM1のメモリ回路MemNV1からリクエストReqRD16m1に含まれる16バイト読み出し命令RD16、バンクアドレスBK0、カラムアドレスCol31によって、メモリ回路MemNV1のバンク0のセンスアンプに保持されているデータのなかで、カラムアドレスCol31を開始アドレスとした16 バイト分のデータが読み出され、IDレジスタ値1を含めて、レスポンスキュー制御回路RsCTへレスポンスRsRD16m1として転送される。
メモリチップM1のレスポンスキュー制御回路RsCTは、レスポンス信号RsMux0を通じて、レスポンスRsRD16m1をメモリチップM0へ出力する。メモリチップM0は、レスポンスRsRD16m1を受け取り情報処理装置CPU_CHIPへ出力する。
情報処理装置CPU_CHIPのメモリ制御回路CONはレスポンスRsRD16m1を、レスポンスキューRsQへ受け取る。情報処理装置CPU_CHIPは、レスポンスキューRsQへ送信されたレスポンスRsRD16m1に含まれるID値1によって、リクエストRqRD16 m1に対応するデータが正しくメモリチップM0から送信されたことを確認できる。
メモリチップM1でのレスポンスキュー制御回路RsCTでの、レイテンシ値LaRd1の計算方法について説明する。特に限定しないが、レイテンシ値LaRd1はTinitial + Sum(Tcycle)としてもよい。
リクエストReqNRD4m1がメモリ回路MemNV1へ送信されてから、所望のデータが読み出されレスポンスキュー制御回路RsCTへレスポンスRsRD16m1として入力されるまでの時間であり、特に限定しないが、80ns程度のため40クロックサイクル程度である。
Sum(Tcycle)はレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでにレスポンスデータを保持しているレスポンスキューに関して、そのレスポンスデータすべてを出力するために必要なデータ転送クロックサイクル数Tcycleの総和である。
メモリチップM1のレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでに1つのレスポンスキューにレスポンスデータが保持されており、そのレスポンスデータのデータ転送クロックサイクル数を16とすると、レスポンスRsRD16m1に対する出力データのレイテンシ値LaRd1は40+16=56サイクルとなる。
次に、メモリチップM1からレイテンシ値LaRd1を受け取った際の、メモリチップM0のレスポンスキュー制御回路RsCTでのレイテンシ値LaRd2の計算方法について説明する。特に限定しないが、レイテンシ値LaRd2は レイテンシ値LaRd1+ Sum(Tcycle)としてもよい。
メモリチップM0のレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでに1つのレスポンスキューにレスポンスデータが保持されており、そのレスポンスデータのデータ転送クロックサイクル数を8とすると、レイテンシ値LaRd2は56+8=62サイクルとなる。
ここでは、メモリチップM0およびM1が出力するレイテンシ値は、具体的なクロックサイクル数を例に説明したが、レイテンシ値はレイテンシのサイクル数に対応したレベル値であってもよい。
特に限定しないが、レスポンスキューRsQへ入力したデータは情報処理回路CPU0、CPU1、CPU2およびCPU3のいずれかでデータ処理が行われる。
次に、情報処理装置CPU_CHIPとメモリチップM2とのデータ転送について説明する。特に限定しないがメモリチップM2はNAND型のフラッシュメモリセルを利用したNAND型フラッシュメモリである。NAND型フラッシュメモリは書き換えを繰り返すことによって、信頼性が低下し、書き込み時に書いたデータが、読み出し時には異なるデータとなったり、書き換え時にデータが書き込まれなかったりすることが稀にあるため、512Byte分のデータと、この512Byte分のデータにエラーが発生した際に、そのエラーを訂正するための16Byte分のECCコードが1ページ分(512Byte+16Byte)のデータとして管理されている。
特に限定しないが、メモリチップM0、M1、M2のリクエストキュー制御回路RqCTにはリクエストキューは2つ存在し、リクエストがエントリされていない状態である。また、メモリチップM0、M1、M2のレスポンスキュー制御回路RsCTにはレスポンスキューが2つ存在し、メモリチップM0、M1およびM2のレスポンスキューにはレスポンスがすでに1つエントリされている場合のデータ転送について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値3、バンクアクティブ命令BA、バンクアドレスBK0、セクタアドレスSadd0を多重化したリクエストReqBAm2をクロック信号RqCK0に同期させ、メモリチップM0へ転送する。
続いて、リクエスト信号RqMux0を通じて、ID値3、ページデータ読み出し命令RDp1、バンクアドレスBK0、ページアドレスPadd0を多重化したリクエストReqRDp1m2をクロック信号RqCK0に同期させ、メモリチップM0へ転送する( 図7:Step1)。
メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqBAm2とReqRDp1m2を順に、自身のリクエストキュー制御回路RqCTへ格納する( 図7:Step2)。
メモリチップM0は、リクエストReqBAm2およびReqRDp1m2に含まれるID値3と自身のIDレジスタの値2を順に比較する( 図7:Step3)。比較結果は不一致のため、メモリチップM1はリクエストReqBAm2およびReqRDp1m2を自身へのリクエストではないと判断し、リクエスト信号RqMux1を通じて、順にメモリチップM1へ転送する( 図7:Step7)。
メモリチップM1は、メモリチップM0からのリクエストReqBAm2およびReqRDp1m2を自身のリクエストキュー制御回路RqCTへ格納する( 図7:Step2)。
メモリチップM1は、リクエストReqBAm2およびReqRDp1m2に含まれるID値3と自身のIDレジスタの値3を順に比較する( 図7:Step3)。比較結果は不一致のため、メモリチップM1はリクエストReqBAm2およびReqRDp1m2を自身へのリクエストではないと判断し、リクエスト信号RqMux1を通じて、順にメモリチップM2へ転送する( 図7:Step7)。
メモリチップM2のリクエストキュー制御回路RqCTはリクエストReqBAm2に含まれるID値3と自身のIDレジスタの値3を比較する( 図7:Step3)。双方は一致しているため、リクエストキュー制御回路RqCTはリクエストReqBmA2をメモリ回路MemNV2へ送信する。
メモリ回路MemNV2は、リクエストReqBAm2にバンクアクティブ命令BA、バンクアドレスBK0、セクタアドレスSadd0によって、指定された1セクタ分のデータをバッファBUF0へ転送する。特に限定しないが1セクタ分のデータは4ページ分(特に限定しないが2kバイト分)のデータからなる。特に限定しないが、1セクタ分のデータをバッファBUF0へ転送するために必要な時間は25usec程度である。
次に、メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqRDp1m2に含まれるID値3と自身のIDレジスタの値3を比較する。双方は一致しているため、メモリチップM1のリクエストキュー制御回路RqCTは、リクエストReqRDp1m2が自身へのリクエストであると判断する。
メモリ回路MemNV2から1セクタ分のデータがバッファBUF0へ転送された後、メモリチップM1のリクエストキュー制御回路RqCTは、リクエストReqRDp1m2をメモリ回路MemNV2へ送信する。
また、メモリチップM1のリクエストキュー制御回路RqCTは、読み出しリクエストReqRDp1m2をメモリ回路MemVLへ送信する際は、レイテンシ値出力レジスタLRGの設定に従って、リクエストReqRDp1m2に含まれるID値3とレイテンシ値出力レジスタLRG内のレイテンシ値出力フラグ情報LRGFlag値1をレスポンスキュー制御回路RsCT内のレイテンシ計算回路LAへ送信する。
レイテンシ計算回路LAは、受け取ったレイテンシ値出力フラグ情報LRGFlag値が1であることを確認し( 図7:Step4 )、リクエストReqRDp1m2に対するデータがレスポンス信号RsMux2を通じて、メモリチップM1へ出力されるまでのレイテンシ値LaRdm2を計算する( 図7:Step5 )。次にレスポンスキュー制御回路RsCTは、ID値3と計算したレイテンシ値LaRdm2を含んだレスポンスRsLam2をレスポンス信号RsMux2を通じて、メモリチップM1へ送信する( 図7:Step6 )。
レスポンスRsLam2を受け取ったメモリチップM1のレスポンスキュー制御回路RsCTはレスポンスRsLam2に含まれるレイテンシ値LaRdm2を元に、メモリチップM0へ出力されるまでのレイテンシ値LaRdm21を計算し、レスポンスRsLam2に含まれるID値3 と計算したレイテンシ値LaRdm21を含んだレスポンスRsLam21をレスポンス信号RsMux0を通じて、メモリチップM0へ送信する。
レスポンスRsLam21を受け取ったメモリチップM0のレスポンスキュー制御回路RsCTはレスポンスRsLam21に含まれるレイテンシ値LaRdm21を元に、情報処理装置CPU_CHIPへ出力されるまでのレイテンシ値LaRdm210を計算し、レスポンスRsLam21に含まれるID値3と計算したレイテンシ値LaRdm210を含んだレスポンスRsLam210をレスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ送信する。
情報処理装置CPU_CHIPのメモリ制御回路CONは、レスポンスRsLam210を、レスポンスキューRsQへ受け取る。情報処理装置CPU_CHIPは、レスポンスキューRsQへ送信されたレスポンスRsLa2に含まれるID値1およびレイテンシ値LaRdm210によって、メモリチップM2から、いつまでにデータが、送信されるかどうかをを前もって確認できる。
レスポンスキュー制御回路RsCTは、データレジスタDREG0へ転送されたデータの中からリクエスにReqRDp1m2に含まれる1ページ読み出し命令RDp1、バンクアドレスBK0およびページアドレスPadd0によって指定された1ページ(512Byte+16Byte)分のデータを、32Byte単位で、IDレジスタ値3を含めて、レスポンスResNDRDp1m2-0〜レスポンスResNDRDp1m2-7として順に読み出し、メモリチップM1へ転送する。最後に、ページアドレス1内の16Byte分のECCコードを読み出し、IDレジスタ値3を含めてレスポンスResNDRDp1m2ECCとして、レスポンス信号RsMux2を通じてM1へ転送する。データレジスタDREG0内のデータからレスポンスキューへ読み出すまでの時間は特に限定しないが、50ns程度である。
レスポンスResNDRDp1m2-0、ResNDRDp1m2-1、ResNDRDp1m2-2、ResNDRDp1m2-3、ResNDRDp1m2-4、ResNDRDp1m2-5、ResNDRDp1m2-6、レスポンスResNDRDp1m2-7及び、レスポンスResNDRDp1m2ECCは、順にメモリチップM1へ転送された後、レスポンス信号RsMux1通じてメモリチップM0へ転送され、さらに、レスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ転送される。
情報処理装置CPU_CHIPのメモリ制御回路CONは順に、レスポンスResNDRDp1m2-0、ResNDRDp1m2-1、ResNDRDp1m2-2、ResNDRDp1m2-3、ResNDRDp1m2-4、ResNDRDp1m2-5、ResNDRDp1m2-6、レスポンスResNDRDp1m2-7及び、レスポンスResNDRDp1m2ECCを、レスポンスキューRsQへ受け取る。情報処理装置CPU_CHIPは、レスポンスキューRsQが送信されたこれらレスポンスに含まれるID値2によって、これらレスポンスがメモリチップM2から送信されたことを確認できる。
情報処理装置CPU_CHIPは、メモリチップM2から送信されたデータに対し、情報処理回路CPU0、CPU1、CPU2、CPU3のいずれかにて、ECCコードを利用しエラー検出を行う。エラーがなければ、そのデータに対し情報処理回路CPU0、CPU1、CPU2、CPU3のいずれかがデータ処理を行う。エラーがあれば情報処理回路CPU0、CPU1、CPU2、CPU3のいずれかにてエラー訂正を行った後、エラー訂正が行われたデータに対し情報処理回路CPU0、CPU1、CPU2、CPU3のいずれかデータ処理を行う。
メモリチップM2でのレスポンスキュー制御回路RsCTでの、レイテンシ値LaRdm2の計算方法について説明する。特に限定しないが、レイテンシ値LaRdm2はTinitial + Sum(Tcycle)としてもよい。
リクエストReqRDp1m2がメモリ回路MemNV1へ送信されてから、所望のデータがデータレジスタDREG0から読み出され、レスポンスキュー制御回路RsCTへレスポンスResNDRDp1m2-0として入力されるまでの時間であり、特に限定しないが、50ns程度のため25クロックサイクル程度である。
Sum(Tcycle)はレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでにレスポンスデータを保持しているレスポンスキューに関して、そのレスポンスデータすべてを出力するために必要なデータ転送クロックサイクル数Tcycleの総和である。
メモリチップM2のレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでに1つのレスポンスキューにレスポンスデータが保持されており、そのレスポンスデータのデータ転送クロックサイクル数を16とすると、レスポンスResNDRDp1m2-0に対する出力データのレイテンシ値LaRdm2は25+16= 41サイクルとなる。
メモリチップM1でのレスポンスキュー制御回路RsCTでの、レイテンシ値LaRdm21の計算方法について説明する。特に限定しないが、レイテンシ値LaRdm21はLaRdm2 + Sum(Tcycle)としてもよい。
Sum(Tcycle)はレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでにレスポンスデータを保持しているレスポンスキューに関して、そのレスポンスデータすべてを出力するために必要なデータ転送クロックサイクル数Tcycleの総和である。
メモリチップM1のレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでに3つのレスポンスキューにレスポンスデータが保持されており、そのレスポンスデータのデータ転送クロックサイクル数を16×3とすると、レイテンシ値LaRdm21は41+48=89サイクルとなる。
次に、メモリチップM1からレイテンシ値LaRdm21を受け取った際の、メモリチップM0のレスポンスキュー制御回路RsCTでのレイテンシ値LaRdm210の計算方法について説明する。特に限定しないが、レイテンシ値LaRdm210は レイテンシ値LaRdm21+ Sum(Tcycle)としてもよい。
Sum(Tcycle)はレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでにレスポンスデータを保持しているレスポンスキューに関して、そのレスポンスデータすべてを出力するために必要なデータ転送クロックサイクル数Tcycleの総和である。
メモリチップM0のレスポンスキュー制御回路RsCTが装備しているレスポンスキューの内で、すでに3つのレスポンスキューにレスポンスデータが保持されており、そのレスポンスデータのデータ転送クロックサイクル数を16×3とすると、レイテンシ値LaRdm210は89+48=137サイクルとなる。
ここでは、メモリチップM0、M1およびM2が出力するレイテンシ値は、具体的なクロックサイクル数を例に説明したが、レイテンシ値はレイテンシのサイクル数に対応したレベル値であってもよい。
上記では、メモリチップM2でのデータの読み出しについて説明したが、メモリチップM0およびM1についても同様の動作を実行できることは言うまでもない。
特に限定しないが、レスポンスキューRsQへ入力したデータは情報処理回路CPU0、CPU1、CPU2およびCPU3のいずれかでデータ処理が行われる。
以上説明したように、情報処理装置CPU_CHIPからメモリモジュールMEMへの読み出しリクエストに対するレスポンスのレイテンシを、このレスポンスがメモリモジュールMEMから情報処理装置CPU_CHIPへ出力される前に、あらかじめメモリモジュールMEMから情報処理装置CPU_CHIPへ送信することで、情報処理装置CPU_CHIPは前もって、データの到着時刻を知ることができ、データ到着前にどの処理をどこまで行うかについて柔軟に対応でき、処理性能の向上が図れる。
<通常動作の説明:キューの予約>
情報処理装置CPU_CHIPが実行するアプリケーションプログラムによっては、そのアプリケーションプログラムの実行中に、読み出しデータの最大レイテンシの保証が必要な場合がある。この読み出しデータの最大レイテンシを保証するためのリクエストキューおよびレスポンスキューの予約方法について図1と図8を利用し説明する。
メモリモジュールMEM内のメモリM0、M1およびM2が装備しているリクエストキューおよびレスポンスキューの中で空き状態にあるキューに対する予約方法の一例について説明する。
特に限定しないが、メモリチップM1へのリクエストおよびレスポンスが優先的かつ円滑に処理されるために行うリクエストキューおよびレスポンスキューの予約方法について説明する。
特に限定しないが、メモリチップM0、M1、M2のそれぞれのIDレジスタ値が2、1及び3に設定されている。
先ず、情報処理装置CPU_CHIPは、自身のレスポンスキューRsQにあるレスポンスキューの中でメモリチップM1から開始されるレスポンスを専用に格納するための空き状態にあるレスポンスキューを、特に限定しないが、1つだけ予約する。もし空き状態のレスポンスキューが無ければ、空き状態のレスポンスキューができるまで待つ。
その後、情報処理装置CPU_CHIPは、キューを予約するためリクエスト信号RqMux0を通じて、ID値1、キュー予約命令QRv、予約するキューの数QRvN値1を多重化したリクエストReqNQRvをメモリチップM0へ転送する( 図8:Step1 )。
メモリチップM0は、リクエストReqNQRvを自身のリクエストキュー制御回路RqCTへ格納する( 図8:Step2 )。
その後、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqNQRvに含まれるID値1と自身のIDレジスタの値2を比較する( 図8:Step3)。双方は不一致のため、メモリチップM0のリクエストキュー制御回路RqCTは、リクエストReqNQRvに含まれるID値1、キュー予約命令QRv、およびQRvN値1よって、メモリチップM1へのリクエストを専用に格納するための空き状態にあるリクエストキューを1つだけ予約する。もし空き状態のリクエストキューが無ければ、空き状態のリクエストキューができるまで待ち、予約を行う( 図8:Step7)。
さらに、リクエストキュー制御回路RqCTは、リクエストReqNQRvのレスポンスキュー制御回路RsCへ転送する。
メモリチップM0のレスポンスキュー制御回路RsCTは、リクエストReqNQRvに含まれるID値1、キュー予約命令QRv、およびQRvN値1よって、メモリチップM0へ入力されるメモリチップM1からの読み出しデータを含んだレスポンスを専用に格納するための空き状態にあるレスポンスキューを1つだけ予約する。もし空き状態のレスポンスキューが無ければ、空き状態のレスポンスキューができるまで待ち、予約を行う( 図8:Step8)。
メモリチップM0は、空き状態のリクエストキューおよびレスポンスキューの予約を完了した後、リクエストReqNQRvに含まれるID値1よって、リクエストReqNQRvをリクエスト信号RqMux1を通じて、メモリチップM1へ転送する( 図8:Step9 )。
メモリチップM1は、リクエストReqNQRvを自身のリクエストキュー制御回路RqCTへ格納する( 図8:Step2 )。その後、メモリチップM1のリクエストキュー制御回路RqCTはリクエストReqNQRvに含まれるID値1と自身のIDレジスタの値1を比較する( 図8:Step3)。双方は一致するため、メモリチップM1のリクエストキュー制御回路RqCTは、リクエストReqNQRvに含まれるID値1、キュー予約命令QRv、およびQRvN値1よって、メモリチップM1へのリクエストを専門に格納するための空き状態にあるリクエストキューを1つだけ予約する。もし空き状態のリクエストキューが無ければ、空き状態のリクエストキューができるまで待ち、予約を行う( 図8:Step4 )。
さらに、リクエストキュー制御回路RqCTは、リクエストReqNQRvのレスポンスキュー制御回路RsCへ転送する。
メモリチップM1のレスポンスキュー制御回路RsCTは、リクエストReqNQRvに含まれるID値1、キュー予約命令QRv、およびQRvN値1よって、メモリチップM1からのレスポンスを専門に格納するための空き状態にあるレスポンスキューを1つだけ予約する。もし空き状態のレスポンスキューが無ければ、空き状態のレスポンスキューができるまで待ち、予約を行う( 図8:Step5 )。
メモリチップM1は、空き状態のリクエストキューおよびレスポンスキューの予約を完了した後、予約完了信号RvFlgを、レスポンス信号RsMux1を通じて、メモリチップM0へ転送する( 図8:Step6 )。
メモリチップM0は、受け取った予約完了信号RvFlgをレスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ転送する。
情報処理装置CPU_CHIPは、予約完了信号RvFlgを受け取り、リクエストReqNQRvによるキューの予約が完了したこと知ることができる。
キューの予約が完了した後、情報処理装置CPU_CHIPが、メモリチップM1へのデータ読み出しリクエストを行った場合の動作について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値1、16バイトデータ読み出し命令NRD16、アドレスAdd63を多重化したリクエストReqNRD16m1をメモリチップM0へ転送する。
メモリチップM0では、メモリチップM1へのリクエストを受け取るための空き状態のリクエストキューがすでに予約されているため、リクエストReqNRD16m1をこの予約されたリクエストキューへ格納する。次にメモリチップM0はリクエストReqNRD16m1に含まれるID値1と自身のIDレジスタの値2を比較する。結果は不一致のため、リクエストReqNRD16m1は、リクエスト信号RqMux1を通じて、メモリチップM1へ転送される。
メモリチップM1では、メモリチップM1へのリクエストを受け取るための空き状態にあるリクエストキューがすでに予約されているため、リクエストReqNRD16m1をこの予約されたリクエストキューへ格納する。次にメモリチップM1はリクエストReqNRD16m1に含まれるID値1と自身のIDレジスタの値1を比較し、結果が一致していることを確認する。さらに、リクエストReqNRD16m1に対応するデータを受け取るための空き状態にあるレスポンスキューがすでに予約されているため、リクエストReqNRD16m1は、直ちにメモリ回路MemNV1へ送信され、このリクエストReqNRD16m1に対応するデータが、メモリ回路MemNV1から読み出され、ID値1と一緒に、レスポンスResNRD16m1として予約されたレスポンスキューへ格納される。
メモリチップM1はレスポンス信号RsMux1から、レスポンスResNRD16m1をメモリチップM0ヘ出力する。
メモリチップM0では、メモリチップM1からのレスポンスを受け取るための空き状態のレスポンスキューがすでに予約されているためレスポンスResNRD16m1を直ちにこの予約されたリクエストキューへ格納する。その後直ちに、メモリチップM0はレスポンス信号RsMux0から、レスポンスResNRD16m1を情報処理装置CPU_CHIPヘ出力する。
情報処理装置CPU_CHIPでは、メモリチップM0からのレスポンスを受け取るための空き状態のレスポンスキューがすでに予約されているためレスポンスResNRD16m1を直ちにこの予約されたリクエストキューへ格納する。
メモリチップM1へのリクエストおよびレスポンスに関するキューの予約方法および予約後のデータ転送動作について説明したが、メモリチップM0およびM2についても同様の方法でキューの予約を行え、同様の動作でデータ転送を行える。
以上説明したように、空き状態あるリクエストキューおよびレスポンスキューを予約することによって、対象となるリクエストおよびレスポンスの優先的かつ円滑に処理でき、アプリケーション実行中に必要な場面で、読み出しデータの最大レイテンシを保証することができる。
さらに、空き状態あるリクエストキューおよびレスポンスキューを予約は任意のメモリチップに対して行え、また、その予約するリクエストキューおよびレスポンスキューの数も任意に変更することができ、様々なシステムに柔軟に対応できる。
<通常動作の説明:イン・オーダー動作:チップ内、アウトオブ・オーダー動作:チップ間>
情報処理装置CPU_CHIPがプログラム実行に必要なプログラムコードやデータをメモリチップM0、M1、M2へ割り当てる場合、プログラムの実行速度を向上させるために、その割り当て方法に適したメモリチップM0、M1およびM2のレスポンス順序設定レジスタRRGの値を設定し、動作させることができる。
メモリM0へはプログラムAとデータAが格納され、メモリM1にはプログラムBとデータBが格納され、メモリM2にはプログラムCとデータCが格納されている。プログラムAとプログラムBとプログラムCは全く独立に動作するプログラムであり、データAはプログラムAに関連するデータであり、データBはプログラムBに関連するデータであり、データCはプログラムCに関連するデータである。
このように、プログラムコードやデータをメモリチップM0、M1、M2へ割り当てた場合いの、メモリチップM0、M1およびM2のレスポンス順序設定レジスタRRGへの設定値を、図6(a)に示す。
以下では、情報処理装置CPU_CHIPが、メモリモジュールMEM内のメモリチップM1のバンク1へデータ読み出しリクエストと、メモリチップM0のバンク0へデータ書込みリクエストと、続いてメモリチップM0のバンク0へデータ読み出しリクエストを送信し、さらに、連続してメモリチップM0のバンク1へデータ読み出しリクエストを送信した場合のデータ転送について説明する。
特に限定しないが、メモリチップM0、M1、M2のそれぞれのIDレジスタ値が2、1及び3に設定されている。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値1、16バイトデータ読み出し命令RD16、バンクアドレスBK1、カラムアドレスCol31を多重化したリクエストReqRD16b1m1をメモリチップM0へ転送する。
次に、ID値2、32バイトデータ書き込み命令WT32、バンクアドレスBK0、カラムアドレスCol63、及び32バイト分の書き込みデータを多重化したリクエストReqWT32b0m0をメモリチップM0へ転送する。
続いて、ID値2、32バイトデータ読み出し命令RD32、バンクアドレスBK0、カラムアドレスCol32を多重化したリクエストReqRD32b0m0をメモリチップM0へ転送する。
さらに続いて、ID値2、16バイトデータ読み出し命令RD16、バンクアドレスBK1、カラムアドレスCol32を多重化したリクエストReqRD16b1m0をメモリチップM0へ転送する。
メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqRD16b1m1と、リクエストReqWT32b0m0と、リクエストReqRD32b0m0と、リクエストReqRD16b1m0を順に、自身のリクエストキュー制御回路RqCTへ格納する。また、リクエストキュー制御回路RqCTのリクエスト番号設定回路RNBは、これらのリクエストを格納する際に、リクエストの入力順にリクエストに対応したリクエスト番号ReqNを付加する。
特に限定しないが、リクエストの入力順に、リクエストReqRD16b1m1にはリクエスト番号ReqN値1が、リクエストReqWT32b0m0にはリクエスト番号ReqN値2が、リクエストReqRD32b0m0にはリクエスト番号ReqN値3が、リクエストReqRD16b1m0にはリクエスト番号ReqN値4が付加される。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRD16b1m1に含まれるID値1と自身のIDレジスタの値2を比較する。結果は不一致のため、リクエストReqRD16b1m1および、このリクエストに対応したリクエスト番号ReqN値1が、リクエスト信号RqMux1を通じて、メモリチップM1へ転送される。
次にメモリチップM0のリクエストキュー制御回路RqCTはリクエストReqWT32b0m0に含まれるID値2と自身のIDレジスタの値2を比較し、一致しているため、リクエストReqWT32b0m0を、自身のメモリ回路MemVLへ送信する。
メモリチップM0のメモリ回路MemVLでは、リクエストReqWT32b0m0に含まれる32バイト書き込み命令WT32、バンクアドレスBK0、カラムアドレスCo63によって、メモリ回路MemVLのメモリバンク0のセンスアンプを通じてメモリバンク0へ、カラムアドレス63を開始アドレスとした32バイト分のデータの書き込み動作を開始する。
次に、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRD32b0m0およびリクエストReqRD16b1m0に含まれる、それぞれのID値2と自身のIDレジスタの値2を比較し、一致しているため、リクエストReqRD32b0m0のリクエスト番号ReqN値3およびリクエストReqRD16b1m0のリクエスト番号ReqN値4はレスポンスキュー制御回路RsCTへ転送される。
メモリチップM0のレスポンスキュー制御回路RsCTは、リクエスト番号ReqN値3をレスポンス番号ResTN値3として、またリクエスト番号ReqN値4をレスポンス番号ResTN値4として、順に、レスポンス番号テーブルTBへエントリする。
これによって、レスポンス番号ResTN値3に対応したリクエスト番号ReqN値3に関するレスポンスが最初のレスポンスとなり、レスポンス番号ResTN値4に対応するリクエスト番号ReqN値4に関するレスポンスが2番目のレスポンスとなる。
リクエストReqWT32b0m0に続くリクエストReqRD32b0m0は、メモリチップM0のメモリ回路MemVLのメモリバンク0への読み出し命令RD32を含んでおり、リクエストReqWT32b0m0による書き込み動作が行われているメモリバンク0と同一メモリバンクへのデータ読み出しであるため、メモリバンク0へのデータ書き込み動作の完了を待つ必要がある。
リクエストReqRD32b1m0は、メモリチップM0のメモリ回路MemVLのメモリバンク1への読み出し命令RD32を含んでおり、リクエストReqWT32b0m0による書き込み動作が行われているメモリバンク0とは異なるメモリバンクへのデータ読み出しであるため、メモリバンク0へのデータ書き込み動作の完了を待つ必要がない。そこで、メモリチップM0のリクエストキュー制御回路RqCTは、リクエストReqRD32b1m0をメモリ回路MemVLへ送信する。
メモリチップM0のメモリ回路MemVLから、リクエストReqRD32b1m0に含まれる32バイト読み出し命令RD32、バンクアドレスBK1、カラムアドレスCol32によって、メモリ回路MemVLのバンク1のセンスアンプに保持されているデータのなかで、カラムアドレス32を開始アドレスとした32バイト分のデータが読み出される。
読み出された32バイト分のデータと、リクエスト番号ReqN値4に対応したレスポンス番号ResN値4と、IDレジスタ値2を含めたレスポンスRsRD32b1m0はレスポンスキュー制御回路RsCTへ転送される。
メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンス番号テーブルTBへ最初にエントリされたレスポンス番号ResTN値3とレスポンス番号ResN値4とを比較する。両者は不一致のため、レスポンス番号ResTN値3に対応するレスポンスを待つ。
メモリチップM0のメモリ回路MemVLのメモリバンク0へのデータ書き込み完了後、リクエストReqRD32b0m0はメモリ回路MemVLへ送信される。
メモリチップM0のメモリ回路MemVLから、リクエストReqRD32b0m0に含まれる32バイト読み出し命令RD32、バンクアドレスBK0、カラムアドレスCol32によって、メモリ回路MemVLのバンク0のセンスアンプに保持されているデータのなかで、カラムアドレス32を開始アドレスとした32バイト分のデータが読み出される。
この読み出された32バイト分のデータと、リクエスト番号ReqN値3に対応したレスポンス番号ResN値3と、IDレジスタ値2を含めたレスポンスRsRD32b0m0はレスポンスキュー制御回路RsCTへ転送される。
メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンス番号テーブルTBへ最も古くエントリされたレスポンス番号ResTN値3とレスポンス番号ResN値3とを比較する。
両者は一致しているため、メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンス信号RsMux0を通じて、IDレジスタ値2、32バイトデータを含むレスポンスRsRD32b0m0を情報処理装置CPU_CHIPへ送信する。この際、メモリチップM0のレスポンス番号テーブルTBへエントリされているレスポンス番号ResTN値3は無効となり、レスポンス番号ResTN値4が最も古いレスポンス番号となる。
リクエストReqRD32b0m0より以前にメモリチップM0へ入力したリクエストReqRD16b1m1はメモリチップM1へ送信されており、このリクエストReqRD16b1m1に対応するレスポンスはメモリチップM0へ入力していないため、リクエストReqRD32b0m0に対応するレスポンスRsRD32b0m0は、リクエストReqRD16b1m1に対応するレスポンスを待たずに、情報処理装置CPU_CHIPへ送信される。
続いて、メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンスRsRD32b1m0のレスポンス番号ResN値4と、現在、レスポンス番号テーブルTBへ最も古くエントリされたレスポンス番号ResTN値4とを比較する。
両者は一致しているため、メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンス信号RsMux0を通じて、IDレジスタ値2、32バイトデータを含むレスポンスRsRD32b1m0を情報処理装置CPU_CHIPへ送信する。
この際、メモリチップM0のレスポンス番号テーブルTBへエントリされているレスポンス番号ResTN値4は無効となる。
リクエストReqRD32b1m0より以前にメモリチップM0へ入力したリクエストReqRD16b1m1はメモリチップM1へ送信されており、このリクエストReqRD16b1m1に対応するレスポンスはメモリチップM0へ入力していないため、リクエストReqRD32b1m0に対応するレスポンスRsRD32b1m0は、リクエストReqRD16b1m1に対応するレスポンスを待たずに、情報処理装置CPU_CHIPへ送信される。
このように、メモリチップM0のレスポンス順序設定レジスタRRGの設定により、メモリチップM0は、自身へのリクエストに対応するリクエスト番号を生成し、その生成したリクエスト番号を利用し、入力したリクエスト順にレスポンスを送信する動作を行う。
さらに、メモリチップM0のレスポンス順序設定レジスタRRGの設定によりメモリチップM0は、自身のレスポンスと、メモリチップM1あるいはM2からメモリチップM0 へ入力したレスポンスの間では、リクエストの入力順序に関わらず、早く送信できるレスポンスは、遅いレスポンを待つことなく、情報処理装置CPU_CHIPへ送信できる。
次にメモリチップM1の動作について説明する。
メモリチップM1では、すでにメモリチップM0から送信されたリクエストReqRD16b1m1および、このリクエストに対応したリクエスト番号ReqN値1をリクエストキュー制御回路RqCTへ格納し、メモリチップM0にて行われるデータ書き込みおよび読み出しと平行して、データの読み出し動作が行われる。
メモリチップM1のリクエストキュー制御回路RqCTは、リクエストReqRD16b1m1に含まれるID値1と自身のIDレジスタ値1を比較する。
両者は一致しているためリクエストキュー制御回路RqCTは、読み出しリクエストReqRD16b1m1に対応したリクエスト番号ReqN値1をレスポンスキュー制御回路RsCTへ転送する。
レスポンスキュー制御回路RsCTは、このリクエスト番号ReqN値1をレスポンス番号ResTN値1として、レスポンス番号テーブルへ保存する。これによって、レスポンス番号ResTN値1に対応するリクエストReqRD16b1m1のレスポンスが、メモリチップM1より最初に送信されるレスポンスとなる。続いてリクエストReqRD16b1m1をメモリ回路MemNV1へ送信する。
メモリチップM1のメモリ回路MemNV1はリクエストReqRD16b1m1に含まれる16バイト読み出し命令RD16、バンクアドレスBK1、カラムアドレスCol32によって、メモリ回路MemNV1のバンク1のセンスアンプに保持されているデータのなかで、カラムアドレス32を開始アドレスとした16バイト分のデータを読み出す。
この読み出された16バイト分のデータと、リクエスト番号ReqN値1に対応したレスポンス番号ResN値1と、IDレジスタ値1を含めたレスポンスRsRD16b1m0はレスポンスキュー制御回路RsCTへ転送される。
メモリチップM1のレスポンスキュー制御回路RsCTは、レスポンス番号テーブルへ最初にエントリされたレスポンス番号ResTN値1とレスポンス番号ResN値1とを比較する。両者は一致しているため、メモリチップM1のレスポンスキュー制御回路RsCTは、レスポンス信号RsMux1を通じて、IDレジスタ値1、レスポンス番号ResN値1および16バイトデータを含むレスポンスRsRD16b1m1をメモリチップM0へ送信する。この際、レスポンス番号テーブルへエントリされているレスポンス番号ResTN値1は無効となる。
メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンスRsRD16b1m1を受け取り格納する。つぎに、レスポンス番号テーブルTB内の有効となっているレスポンス番号ResTNとレスポンス番号ResN値1を比較する。
レスポンス番号テーブルTB内の有効となっているレスポンス番号ResTNは存在しないため、メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンス信号RsMux0を通じて、IDレジスタ値1と16バイトデータを含むレスポンスRsRD16b1m1を情報処理装置CPU_CHIPへ送信する。
以上説明したように、メモリチップM0のレスポンス順序設定レジスタRRGの設定により、メモリチップM0は、入力したリクエスト順で、そのリクエストに対応したリクエスト番号を生成し、このリクエスト番号を利用し、入力したリクエスト順番どおりにレスポンスを情報処理装置CPU_CHIPへ送信できる。これによって、情報処理装置CPU_CHIPは、同一チップへのリクエストに対するレスポンスが送信されたかを知ることができ、所望の処理を実行することができる。
また、メモリチップM0のレスポンス順序設定レジスタRRGの設定により、メモリチップM0は、自身のレスポンスと、メモリチップM1あるいはM2からメモリチップM0 へ入力したレスポンスの間では、リクエストの入力順序に関わらず、早く送信できるレスポンスは、遅いレスポンスを待つことなく、情報処理装置CPU_CHIPへ送信でき高速化が可能となる。
また、扱うシステムに応じて情報処理装置CPU_CHIPが様々に要求するOS、ブートプログラムおよびアプリケーションプログラムなどのメモリチップへの配置方法に柔軟に対応し性能向上が図れる。
さらに、リクエストへIDを付加することで、確実に要求先へリクエストが転送され、また、レスポンスへIDを付加することで、リクエストの入力順序と、読み出しデータの順番が異なった場合でも、情報処理装置CPU_CHIPは転送元のメモリチップを知ることができるため、情報処理装置CPU_CHIPおよびメモリチップの直列接続によって、接続信号数を少なくしながらも、情報処理装置CPU_CHIPは所望の処理を実行することができる。
また、上記ではメモリチップM0およびM1に関するデータ転送動作を説明したが、メモリチップM0、M1およびM2に関するデータ転送についても同様に行えることは言うまでもない。
<通常動作の説明:リード/ ライト同時実行>
次に、情報処理装置CPU_CHIPがデータ読み出しリクエストに続いてデータ書込みリクエストをメモリモジュールMEMへ送信した場合のデータ転送について説明する。
情報処理装置CPU_CHIPがリクエスト信号RqMux0を通じて、ID値2、8バイトデータ読み出し命令RD8、バンクアドレスBK1、カラムアドレスCol15を多重化したリクエストReqRD8b1m0をメモリチップM0へ転送する。続いて、リクエスト信号RqMux0を通じて、ID値2、8バイトデータ書き込み命令WT8、バンクアドレスBK1、カラムアドレスCol31、及び8バイト分の書き込みデータを多重化したリクエストReqWT8b1m0をメモリチップM0へ転送する。
メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqRD8b1m0とリクエストReqWT8b1m0を順に、自身のリクエストキュー制御回路RqCTへ格納する。リクエストキュー制御回路RqCTはリクエストReqRD8b1m0に含まれるID値2と自身のIDレジスタの値2を比較し、一致しているため、リクエストReqRD8b1m0をメモリ回路MemVLへ送信する。
メモリ回路MemVLはリクエストReqRD8b1m0に含まれる8バイト読み出し命令RD8、バンクアドレスBK1、カラムアドレスCol31によって、メモリ回路MemVLのバンク1のセンスアンプに保持されているデータのなかで、カラムアドレス15を開始アドレスとした8バイト分のデータを読み出し、IDレジスタ値2を含めて、レスポンスキュー制御回路RsCTへレスポンスRsRD8b1m0として転送する。
レスポンスキュー制御回路RsCTは、レスポンス信号RsMux0を通じて、IDレジスタ値2および8バイトデータを含むレスポンスRsRD8b1m0を情報処理装置CPU_CHIPへ出力する。
リクエストReqRD8b1m0が処理されたことによって、リクエストキュー制御回路RqCTはリクエストReqWT8b1m0に含まれるID値2と自身のIDレジスタの値2を比較し、一致しているため、リクエストReqWT8b1m0をメモリ回路MemVLへ送信する。
メモリ回路MemVLはリクエストReqWT8b1m0に含まれる8バイト書き込み命令WT8、バンクアドレスBK1、カラムアドレスCol31によって、メモリ回路MemVLのバンク1のセンスアンプへカラムアドレス31を開始アドレスとした8バイト分のデータが書き込まれ、さらにメモリバンク1へ書き込まれる。
リクエストキュー制御回路RqCTとレスポンスキュー制御回路RsCTはそれぞれ独立に動作するため、、リクエストReqRD8b1m0に対応するレスポンスRsRD8b1m0が情報処理装置CPU_CHIPへ出力されている最中でもリクエストReqWT8b1m0の書込み動作を実行することができる。
以上説明したように、リクエストインターフェース回路ReIFとレスポンスインターフェース回路は独立に動作可能なため、データの読み出し動作と書込み動作を同時に実行でき、データ転送性能を向上させることができる。上記では、メモリチップM0でのデータの読み出し及び書込みについて説明したが、他のメモリチップM1及びM2においても同様の動作が実行できることは言うまでもない。さらに、それぞれののメモリチップにおいてリクエストインターフェース回路ReIFとレスポンスインターフェース回路は独立に動作可能なため、異なるメモリチップへのデータ読み出し及び書込みリクエストが生じた場合でも、それぞれのリクエストを独立に並列に処理でき、データ転送性能を向上できることは言うまでもない。
<通常動作の説明:リクエスト番号 >
情報処理装置CPU_CHIPが、メモリモジュールMEMへのリクエストに固有のリクエスト番号を付け、このリクエスト番号を含んだリクエストをメモリモジュールMEMへ送信した場合、メモリモジュールMEMは、情報処理装置CPU_CHIPが送信するリクエスト番号を利用し、リクエストの入力順序に関わらず、早く送信できるレスポンから送信し、高速化を図ることができる。以下に 動作を説明する。また、メモリチップM0、M1、M2のレスポンス順序設定レジスタRRGの設定値を図6(b)へ示す。
情報処理装置CPU_CHIPが、メモリモジュールMEM内のメモリチップM1のバンク1へデータ読み出しリクエストと、メモリチップM0のバンク0へデータ書込みリクエストと、続いてメモリチップM0のバンク0へデータ読み出しリクエストを送信し、さらに、連続してメモリチップM0のバンク1へデータ読み出しリクエストを送信した場合のデータ転送について説明する。
特に限定しないが、メモリチップM0、M1、M2のそれぞれのIDレジスタ値が2、1及び3に設定されている。
情報処理装置CPU_CHIPは、リクエスト番号生成レジスタRqNRの値を1に設定するとリクエスト番号生成回路RqNは、リクエスト信号RqMux0を通じて出力するリクエスト対応したリクエスト番号ReqNを生成する。次に情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値1、リクエスト番号ReqN値1、16バイトデータ読み出し命令RD16、バンクアドレスBK1、カラムアドレスCol31を多重化したリクエストReqRD16b1m1をメモリチップM0へ転送する。
次に、ID値2、リクエスト番号ReqN値2、32バイトデータ書き込み命令WT32、バンクアドレスBK0、カラムアドレスCol63、及び32バイト分の書き込みデータを多重化したリクエストReqWT32b0m0をメモリチップM0へ転送する。
続いて、ID値2、リクエスト番号ReqN値3、32バイトデータ読み出し命令RD32、バンクアドレスBK0、カラムアドレスCol32を多重化したリクエストReqRD32b0m0をメモリチップM0へ転送する。
さらに続いて、ID値2、リクエスト番号ReqN値4、16バイトデータ読み出し命令RD16、バンクアドレスBK1、カラムアドレスCol32を多重化したリクエストReqRD16b1m0をメモリチップM0へ転送する。
メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqRD16b1m1と、リクエストReqWT32b0m0と、リクエストReqRD32b0m0と、リクエストReqRD16b1m0を順に、自身のリクエストキュー制御回路RqCTへ格納する。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRD16b1m1に含まれるID値1と自身のIDレジスタの値2を比較する。結果は不一致のため、リクエストReqRD16b1m1はリクエスト信号RqMux1を通じて、メモリチップM1へ転送される。
次にメモリチップM0のリクエストキュー制御回路RqCTはリクエストReqWT32b0m0に含まれるID値2と自身のIDレジスタの値2を比較し、一致しているため、リクエストReqWT32b0m0を、自身のメモリ回路MemVLへ送信する。
メモリチップM0のメモリ回路MemVLでは、リクエストReqWT32b0m0に含まれる32バイト書き込み命令WT32、バンクアドレスBK0、カラムアドレスCo63によって、メモリ回路MemVLのメモリバンク0のセンスアンプを通じてメモリバンク0へ、カラムアドレス63を開始アドレスとした32バイト分のデータの書き込み動作を開始する。
リクエストReqWT32b0m0に続くリクエストReqRD32b0m0は、メモリチップM0のメモリ回路MemVLのメモリバンク0への読み出し命令RD32を含んでおり、リクエストReqWT32b0m0による書き込み動作が行われているメモリバンク0と同一メモリバンクへのデータ読み出しであるため、メモリバンク0へのデータ書き込み動作の完了を待つ必要がある。
リクエストReqRD32b1m0は、メモリチップM0のメモリ回路MemVLのメモリバンク1への読み出し命令RD32を含んでおり、リクエストReqWT32b0m0による書き込み動作が行われているメモリバンク0とは異なるメモリバンクへのデータ読み出しであるため、メモリバンク0へのデータ書き込み動作の完了を待つ必要がない。そこで、メモリチップM0のリクエストキュー制御回路RqCTは、リクエストReqRD32b1m0をメモリ回路MemVLへ送信する。
メモリチップM0のメモリ回路MemVLから、リクエストReqRD32b1m0に含まれる32バイト読み出し命令RD32、バンクアドレスBK1、カラムアドレスCol32によって、メモリ回路MemVLのバンク1のセンスアンプに保持されているデータのなかで、カラムアドレス32を開始アドレスとした32バイト分のデータが読み出される。
読み出された32バイト分のデータと、リクエスト番号ReqN値4と等しいレスポンス番号ResN値4と、IDレジスタ値2を含めたレスポンスRsRD32b1m0はレスポンスキュー制御回路RsCTへ転送され、情報処理装置CPU_CHIPへ送信される。
次に、メモリチップM0のメモリ回路MemVLのメモリバンク0へのデータ書き込み完了後、リクエストReqRD32b0m0はメモリ回路MemVLへ送信される。
メモリチップM0のメモリ回路MemVLから、リクエストReqRD32b0m0に含まれる32バイト読み出し命令RD32、バンクアドレスBK0、カラムアドレスCol32によって、メモリ回路MemVLのバンク0のセンスアンプに保持されているデータのなかで、カラムアドレス32を開始アドレスとした32バイト分のデータが読み出される。
この読み出された32バイト分のデータと、リクエスト番号ReqN値3と等しいレスポンス番号ResN値3と、IDレジスタ値2を含めたレスポンスRsRD32b0m0はレスポンスキュー制御回路RsCTへ転送され、情報処理装置CPU_CHIPへ送信される。
このように、リクエストReqRD32b0m0の後にメモリチップM0へ入力したリクエストReqRD32b1m0は、リクエストReqRD32b0m0より早く処理できるため、リクエストReqRD32b0m0レスポンスは、リクエストReqRD32b0m0の遅いレスポンを待つことなく、メモリチップM0へ送信できる。
また、メモリチップM0へ入力したリクエストReqRD16b1m1はメモリチップM1へ送信されており、このリクエストReqRD16b1m1に対応するレスポンスはメモリチップM0へ入力していないため、リクエストReqRD32b1m0のレスポンスRsRD32b1m0およびリクエストReqRD32b0m0のレスポンスRsRD32b0m0は、リクエストReqRD16b1m1に対応するレスポンスを待たずに、情報処理装置CPU_CHIPへ送信される。
次にメモリチップM1の動作について説明する。
メモリチップM1では、すでにメモリチップM0から送信されたリクエスト番号ReqN値1を含むリクエストReqRD16b1m1をリクエストキュー制御回路RqCTへ格納し、メモリチップM0にて行われるデータ書き込みおよび読み出しと平行して、データの読み出し動作が行われる。
メモリチップM1のリクエストキュー制御回路RqCTは、リクエストReqRD16b1m1に含まれるID値1と自身のIDレジスタ値1を比較する。
両者は一致しているため、リクエストReqRD16b1m1をメモリ回路MemNV1へ送信する。
メモリチップM1のメモリ回路MemNV1はリクエストReqRD16b1m1に含まれる16バイト読み出し命令RD16、バンクアドレスBK1、カラムアドレスCol32によって、メモリ回路MemNV1のバンク1のセンスアンプに保持されているデータのなかで、カラムアドレス32を開始アドレスとした16バイト分のデータを読み出す。
この読み出された16バイト分のデータと、リクエスト番号ReqN値1と等しいレスポンス番号ResN値1と、IDレジスタ値1を含めたレスポンスRsRD16b1m0はレスポンスキュー制御回路RsCTへ転送され、メモリチップM0へ転送される。
メモリチップM0のレスポンスキュー制御回路RsCTは、レスポンス番号ResN値1を含むレスポンスRsRD16b1m1を受け取り、レスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ送信する。
以上説明したように、メモリモジュールMEMは情報処理装置CPU_CHIPから送信されるリクエストに含まれるリクエスト番号を利用し、レスポンス番号を生成し、このレスポンス番号を含んだレスポンスを情報処理装置CPU_CHIPへ送信できることにより、メモリチップ毎やメモリチップ間で、リクエストの入力順序に関わらず、早く送信できるレスポンスは、遅いレスポンスを待つことなく、すぐに送信できるため高速化を図れる。さらに、リクエストの入力順とは異なる順番で、レスポンスが送信された場合でも、情報処理装置CPU_CHIPは、どのリクエストに対するレスポンスが送信されたかを知ることができ、情報処理装置CPU_CHIPは所望の処理を高速に実行することができる。
また、上記ではメモリチップM0およびM1に関するデータ転送動作を説明したが、メモリチップM0、M1およびM2に関するデータ転送についても同様に行えることは言うまでもない。
<クロック制御>
次に、メモリモジュールMEMに関するクロック制御について説明する。メモリモジュールMEMが特に限定しないが携帯機器に利用された場合、常にメモリモジュールMEM内のメモリチップM0、M1及びM2の全てが同時に動作するわけではない。そこで、携帯機器の低電力化を図るために、本メモリモジュールMEMはデータ転送に必要な場合に、必要な周波数でクロックを発生したり、データ転送が生じない場合はクロックを停止したりできる。
メモリチップM0から出力するレスポンスクロック信号RsCk0の周波数制御について説明する。先ず、メモリチップM0から出力するレスポンスクロック信号RsCk0のクロック周波数を、特に限定しないが2分の1にする場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM0のID値2とレスポンスクロック分周コマンド2を入力する。
メモリチップM0はリクエストキュー制御回路RqCTを介して、レスポンスクロック分周コマンド2をメモリチップM0のクロック分周回路Div2へ送信すると、レスポンスクロック信号RsCk0の周波数は2分の1となる。クロックの動作周波数を低くする際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に所望の周波数で動作させることが良い。
次に、メモリチップM0から出力するレスポンスクロック信号RsCk0を停止する場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM0のID値2とレスポンスクロック停止コマンドを入力する。メモリチップM0はリクエストキュー制御回路RqCTを介して、レスポンスクロック停止コマンドをメモリチップM0内のクロック分周回路Div2へ送信すると、レスポンスクロック信号RsCk0は停止する。クロックを停止する際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に停止させることが良い。
次に、停止しているレスポンスクロック信号RsCk0を再度動作させる場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM0のID値2とレスポンスクロック再開コマンドを入力する。メモリチップM0はクエストキュー制御回路RqCTを介して、レスポンスクロック再開コマンドをメモリチップM0内のクロック分周回路Div2へ送信すると、停止しているレスポンスクロック信号RsCk0は再度、動作を開始する。クロックを再動作させる際は、ノイズによる誤動作を防ぐために、徐々に周波数を上げ、最後に所望の周波数で動作させることが良い。
メモリチップM1から出力するレスポンスクロック信号RsCk1の周波数制御について説明する。先ず、メモリチップM1から出力するレスポンスクロック信号RsCk1のクロック周波数を、特に限定しないが4分の1にする場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM1のID値1とレスポンスクロック分周コマンド4を入力すると、メモリチップM0を通じて、メモリチップM1へID値1とレスポンスクロック分周コマンド4が送信される。メモリチップM1がクエストキュー制御回路RqCTを介して、レスポンスクロック分周コマンド4をメモリチップM1内のクロック分周回路Div2へ送信すると、レスポンスクロック信号RsCk1の周波数は4分の1となる。クロックの動作周波数を低くする際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に所望の周波数で動作させることが良い。
次に、メモリチップM1から出力するレスポンスクロック信号RsCk1を停止する場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM1のID値1とレスポンスクロック停止コマンドを入力すると、メモリチップM0を通じて、メモリチップM1へID値1とレスポンスクロック分周コマンド4が送信される。メモリチップM1がクエストキュー制御回路RqCTを介して、レスポンスクロック停止コマンドをメモリチップM1内のクロック分周回路Div2へ送信すると、レスポンスクロック信号RsCk1は停止する。クロックを停止する際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に停止させることが良い。
次に、停止しているレスポンスクロック信号RsCk1を再度動作させる場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM1のID値1とレスポンスクロック再開コマンドを入力すると。メモリチップM0を通じて、メモリチップM1へID値1とレスポンスクロック再開コマンドが送信される。メモリチップM1が、クエストキュー制御回路RqCTを介して、レスポンスクロック再開コマンドをメモリチップM1内のクロック分周回路Div2へ送信すると、停止しているレスポンスクロック信号RsCk1は再度動作を開始する。クロックを再動作させる際は、ノイズによる誤動作を防ぐために、徐々に周波数を上げ、最後に所望の周波数で動作させることが良い。
メモリチップM2から出力するレスポンスクロック信号RsCk2の周波数制御について説明する。先ず、メモリチップM2から出力するレスポンスクロック信号RsCk2のクロック周波数を、特に限定しないが8分の1にする場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM2のID値3とレスポンスクロック分周コマンド8を入力すると、メモリチップM0及びM1を通じて、メモリチップM2へID値3とレスポンスクロック分周コマンド8が送信される。メモリチップM2が自身のクエストキュー制御回路RqCTを介して、レスポンスクロック分周コマンド8をメモリチップM2内のクロック分周回路Div2へ送信すると、レスポンスクロック信号RsCk2の周波数は8分の1となる。クロックの動作周波数を低くする際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に所望の周波数で動作させることが良い。
次に、メモリチップM2から出力するレスポンスクロック信号RsCk2を停止する場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM2のID値3とレスポンスクロック停止コマンドを入力すると、メモリチップM0及びM1を通じて、メモリチップM2へID値3とレスポンスクロック停止コマンドが送信される。メモリチップM2が自身のリクエストキュー制御回路RqCTを介して、レスポンスクロック停止コマンドをメモリチップM2内のクロック分周回路Div2へ送信すると、レスポンスクロック信号RsCk2は停止する。クロックを停止する際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に停止させることが良い。
次に、停止しているレスポンスクロック信号RsCk2を再度動作させる場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM2のID値3とレスポンスクロック再開コマンドを入力すると。メモリチップM0及びM1を通じて、メモリチップM2へID値3とレスポンスクロック再開コマンドが送信される。メモリチップM2が、クエストキュー制御回路RqCTを介して、レスポンスクロック再開コマンドをメモリチップM2のクロック分周回路Div2へ送信すると、停止しているレスポンスクロック信号RsCk2は再度、動作を開始する。クロックを再動作させる際は、ノイズによる誤動作を防ぐために、徐々に周波数を上げ、最後に所望の周波数で動作させることが良い。
メモリチップM0から出力するリクエストクロック信号RsCk1の周波数制御について説明する。先ず、メモリチップM0から出力するリクエストクロック信号RqCk1のクロック周波数を、特に限定しないが2分の1にする場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM0のID値2とリクエストクロック分周コマンド2を入力する。メモリチップM0が、リクエストキュー制御回路RqCTを介して、リクエストクロック分周コマンド2をメモリチップM0のクロック分周回路Div1へ送信すると、このクロック分周回路Div1はリクエストクロック信号RqCk0のクロック周波数の2分の1の周波数を持つクロックを発生させ、リクエストクロック信号RqCk1から出力する。リクエストクロック信号RqCk1は、メモリチップM1へ入力し、メモリチップM1のクロックドライバDrv2およびクロック分周回路Div2を介してレスポンスクロック信号RsCk1として出力する。クロックの動作周波数を低くする際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に所望の周波数で動作させることが良い。
次に、メモリチップM0から出力するリクエストクロック信号RqCk1を停止する場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM0のID値2とリクエストクロック停止コマンドを入力する。メモリチップM0が、リクエストキュー制御回路RqCTを介して、リクエストクロック停止コマンドをメモリチップM0のクロック分周回路Div1へ送信すると、このクロック分周回路Div1はリクエストクロック信号RqCk1を停止する。リクエストクロック信号RqCk1は、メモリチップM1へ入力し、メモリチップM1のクロックドライバDrv2およびクロック分周回路Div2を介してレスポンスクロック信号RsCk1として出力するためレスポンスクロック信号RsCk1も停止する。クロックを停止する際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に停止させることが良い。
次に、停止しているリクエストクロック信号RsCk1を再度動作させる場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM0のID値2とリクエストクロック再開コマンドを入力する。メモリチップM0が、リクエストキュー制御回路RqCTを介して、リクエストクロック再開コマンドをメモリチップM0のクロック分周回路Div1へ送信すると、このクロック分周回路Div1は停止しているリクエストクロック信号RqCk1を再度、動作させる。リクエストクロック信号RqCk1は、メモリチップM1へ入力し、メモリチップM1のクロックドライバDrv2およびクロック分周回路Div2を介してレスポンスクロック信号RsCk1として出力するため、レスポンスクロック信号RsCk1も再度、動作する。クロックを再動作させる際は、ノイズによる誤動作を防ぐために、徐々に周波数を上げ、最後に所望の周波数で動作させることが良い。
メモリチップM1から出力するリクエストクロック信号RsCk2の周波数制御について説明する。先ず、メモリチップM1から出力するリクエストクロック信号RqCk2のクロック周波数を、特に限定しないが4分の1にする場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM1のID値1とリクエストクロック分周コマンド4を入力すると、メモリチップM0を通じてID値1とリクエストクロック分周コマンド4がメモリチップM1へ送信される。メモリチップM1が、リクエストキュー制御回路RqCTを介して、リクエストクロック分周コマンド4を自身のクロック分周回路Div1へ送信すると、このクロック分周回路Div1はリクエストクロック信号RqCk0のクロック周波数の4分の1の周波数を持つクロックを発生させ、リクエストクロック信号RqCk2から出力する。リクエストクロック信号RqCk2は、メモリチップM2へ入力し、メモリチップM2のクロックドライバDrv2およびクロック分周回路Div2を介してレスポンスクロック信号RsCk2として出力する。クロックの動作周波数を低くする際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に所望の周波数で動作させることが良い。
次に、メモリチップM1から出力するリクエストクロック信号RqCk2を停止する場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM1のID値1とリクエストクロック停止コマンドを入力するとメモリチップM0を通じてID値1とリクエストクロック停止コマンドがメモリチップM1へ送信される。メモリチップM1は、自身のリクエストキュー制御回路RqCTを介して、リクエストクロック停止コマンドを自身のクロック分周回路Div1へ送信すると、このクロック分周回路Div1はリクエストクロック信号RqCk2を停止する。リクエストクロック信号RqCk2は、メモリチップM2へ入力し、メモリチップM2のクロックドライバDrv2およびクロック分周回路Div2を介してレスポンスクロック信号RsCk2として出力するためレスポンスクロック信号RsCk2も停止する。
クロックを停止する際は、ノイズによる誤動作を防ぐために徐々に周波数を落とし、最後に停止させることが良い。
次に、停止しているリクエストクロック信号RsCk2を再度動作させる場合について説明する。情報処理装置CPU_CHIPが、リクエスト信号RqMux0よりメモリチップM1のID値1とリクエストクロック再開コマンドを入力すると、メモリチップM0を通じてID値1とリクエストクロック再開コマンドがメモリチップM1へ送信される。メモリチップM1が、自身のリクエストキュー制御回路RqCTを介して、リクエストクロック再開コマンドを自身のクロック分周回路Div1へ送信すると、このクロック分周回路Div1は停止しているリクエストクロック信号RqCk2を再度、動作させる。リクエストクロック信号RqCk2は、メモリチップM2へ入力し、メモリチップM2のクロックドライバDrv2およびクロック分周回路Div2を介してレスポンスクロック信号RsCk1として出力するため、レスポンスクロック信号RsCk2も再度、動作する。クロックを再動作させる際は、ノイズによる誤動作を防ぐために、徐々に周波数を上げ、最後に所望の周波数で動作させることが良い。
<メモリマップの説明>
図9は、情報処理装置CPU_CHIPが管理するメモリモジュールMEMに対するメモリマップの一例を示したものである。本実施の形態では、特に限定されないが、メモリチップM0の記憶領域は1Gbit、メモリチップM1の記録領域は1Git、メモリチップM2の記憶領域は4Gbit+128Mbit(128Mbitは代替領域)であるメモリモジュールを例に代表的なメモリマップを説明する。
特に限定しないが、メモリチップM0は揮発性メモリでダイナミックランダムアクセスメモリセルを利用したダイナミックランダムアクセスメモリであり、読み出し時間が15ns程度である。特に限定しないが、メモリチップM1は不揮発性メモリでNOR型フラッシュメモリセルを利用したNOR型フラッシュメモリであり、読み出し時間が80ns程度である。特に限定しないが、メモリチップM2は不揮発性メモリでNAND型フラッシュメモリセルを利用したNAND型フラッシュメモリであり、読み出し時間が25usec程度である。特に限定しないが、メモリチップM1は、ブートデバイスID格納領域BotID-AREA、最終端デバイスID格納領域EndID-AREA、初期プログラム領域InitPR-AREA、プログラム格納領域OSAP-AREAに分かれている。
ブートデバイスID格納領域BotID-AREAには、ブートデバイスのID情報が格納される。最終端デバイスID格納領域EndID-AREAには、直列接続されているメモリモジュールMEMに関する最終端メモリデバイスID情報が格納される。初期プログラム領域InitPR-AREAには、特に限定しないが、ブートプログラムが格納される。プログラム格納領域OSAP-AREAには、特に限定しないが、オペレイティングシステムやアプリケーションプログラムなどが格納される。特に限定しないが、メモリチップM0はコピー領域COPY-AREA、ワーク領域WORK-AREAに分かれている。ワーク領域WORK-AREAはプログラム実行時のワークメモリとして、コピー領域COPY-AREAはメモリチップM1及びM2からのプログラムやデータをコピーするためのメモリとして利用される。特に限定しないが、メモリチップM2は、データ領域DATA-AREA、代替領域REP-AREAに分かれている。データ領域DATA-AREAには、特に限定しないが、音楽データ、音声データ、動画データ、静止画データなどのデータが格納される。
また、FLASHは書き換えを繰り返すことによって、信頼性が低下し、書き込み時に書いたデータが、読み出し時には異なるデータとなったり、書き換え時にデータが書き込まれなかったりすることが稀にある。代替領域REP-AREAは、このように不良となったデータを新たな領域へ置き換えるために設けられている。代替領域REP-AREAの大きさは、特に限定しないがメモリチップM2が保証する信頼性が確保できるように決めると良い。
<電源投入直後の動作>
電源投入直後のメモリチップM1から情報処理装置CPU_CHIPへのデータ転送について説明する。電源投入後、情報処理装置CPU_CHIPは自身の持つブートデバイスIDレジスタBotIDを1へ設定する。メモリチップM1はブートデバイスID格納領域BotID-AREAからブートデバイスのID情報1を読み出し、自身のIDレジスタへ1を設定する。これにより、ブートデバイスがメモリチップM1に確定する。
次に、情報処理装置CPU_CHIPはブートデバイスであるメモリチップM1に格納されているブートプログラム及び最終端メモリデバイスID情報を読み出すため、メモリチップM1のID番号1と読み出し命令をメモリモジュールMEMへ送信する。メモリモジュールMEMは、ID番号1と読み出し命令に従って、メモリチップM1の初期プログラム領域InitPR-AREAからブートプログラムを読み出し、最終端デバイスID格納領域EndID-AREAから最終端メモリデバイスID情報を読み出し、情報処理装置CPU_CHIPへ送信する。このように、電源投入直後に、ブートデバイスのIDを初期設定することで、メモリチップの直列接続によって実現されるメモリモジュールMEM内のブートデバイスを特定することができ、情報処理装置CPU_CHIPとメモリモジュールMEM間の接続信号数を大幅に少なくした上で、情報処理装置CPU_CHIPは、すばやく確実にブートデバイスよりブートプログラムおよび最終端メモリデバイスIDを読み出し、情報処理装置CPU_CHIP及びメモリモジュールMEMを立ち上げることができる。
<データコピー動作の説明>
メモリチップM0のデータ読み出し時間は、メモリチップM2の読み出し時間と比較し、大幅に短い。そこで、前もって必要な画像データをメモリチップM2からメモリチップM0へ転送すれば、情報処理装置CPU_CHIPにて高速に画像処理を行うことができる。特に限定しないが、メモリチップM0、M1、M2のそれぞれのIDレジスタ値が2、1及び3に設定された場合の、メモリチップM2からのメモリチップM0のへのデータ転送について説明する。
情報処理装置CPU_CHIPはメモリチップM2のデータ領域DATA-AREAからデータを読み出すため、メモリチップM2のID番号3と1ページ(512Byteのデータ+16ByteのECCコード)データ読み出し命令をメモリモジュールMEMへ送信する。メモリモジュールMEMは、ID番号3と1ページデータ読み出し命令に従って、メモリチップM2のデータ領域DATA-AREAから1ページ分のデータを読み出し、ID番号3を付加し、情報処理装置CPU_CHIPへ送信する。
情報処理装置CPU_CHIPでは、メモリチップM2から送信された1ページ分のデータに対しエラー検出を行う。エラーがなければ、1ページ分のデータをメモリチップM0のコピー領域COPY-AREAへデータを転送するため、情報処理装置CPU_CHIPはメモリチップM0のID番号2と1ページデータ読み出し命令をメモリモジュールMEMへ送信する。エラーがあれば修正を行った後、1ページ分のデータをメモリチップM0のコピー領域COPY-AREAへデータを転送するため、情報処理装置CPU_CHIPはメモリチップM0のID番号2と1ページデータ読み出し命令をメモリモジュールMEMへ送信する。メモリモジュールMEMは、ID番号2と1ページデータ読み出し命令に従って、メモリチップM0のコピー領域COPY-AREAデータ領域へ1ページ分のデータを書き込む。
次に、情報処理装置CPU_CHIPからメモリチップM0へ高速に画像データが書き込まれ、必要に応じてメモリチップM2へこの画像データを保存する際の、メモリチップM0からのメモリチップM2へのデータ転送について説明する。情報処理装置CPU_CHIPはメモリチップM0のコピー領域COPY-AREAからデータを読み出すため、メモリチップM0のID番号2と1ページ(512Byte)データ読み出し命令をメモリモジュールMEMへ送信する。メモリモジュールMEMは、ID番号0と1ページデータ読み出し命令に従って、メモリチップM0のコピー領域COPY-AREAから1ページ分のデータを読み出し、ID番号2を付加し、情報処理装置CPU_CHIPへ送信する。情報処理装置CPU_CHIPは、メモリチップM0から送信された1ページ分のデータをメモリチップM2のデータ領域DATA-AREAへデータを転送するため、メモリチップM2のID番号2と1ページデータ書き込み命令をメモリモジュールMEMへ送信する。
メモリモジュールMEMが、メモリチップM0及びM1を通じてメモリチップM2へID番号2と1ページデータ書込み命を送信すると、メモリチップM2は自身のデータ領域DATA-AREAへ1ページ分のデータを書き込む。メモリチップM2はデータの書き込みが成功したかどうかをチェックし、成功すれば書き込み処理を終了する。書き込みが失敗した時には、メモリチップM2は、ID番号2と書込エラー情報を送信し、メモリチップM1及びメモリチップM0を介して、情報処理装置CPU_CHIPへ書込みエラーを通達する。情報処理装置CPU_CHIPは、ID番号2と書込エラー情報を受け取ると、メモリチップM2にあらかじめ用意されている代替領域REP-AREAの新たなアドレスに対して書き込みを行うために、メモリチップM2のID番号2と1ページデータ書き込み命令をメモリモジュールMEMへ送信する。メモリモジュールMEMがメモリチップM0及びM1を通じてID番号2と1ページデータ書込み命令をメモリチップM2へ送信すると、メモリチップM2は自身の代替領域REP-AREAへ1ページ分のデータを書き込む。また、情報処理装置CPU_CHIPは、代替え処理を行った際は、不良アドレスと、不良アドレスに対して、どのアドレスに代替え処理を行ったかというアドレス情報を保持し管理する。
以上説明したように、メモリチップM2の一部のデータをコピーできる領域をメモリチップ内に確保し、あらかじめメモリチップM2からメモリチップM0へデータを転送しておくことで、メモリチップM0と同等の速度でメモリチップM2のデータを読み出すことができ、情報処理装置CPU_CHIPでの高速処理が可能となる。また、メモリチップM2へデータを書く際は、いったんデータをメモリチップM0へ書き込み、必要に応じてメモリチップM2へ書き戻すことができるため、データの書き込みも高速化することができる。さらに、メモリチップM2からの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、高信頼性を保つことができる。
<メモリチップM0の説明>
図10は、メモリチップM0の構成図の一例である。
メモリチップM0は、リクエストインターフェース回路ReqIFと、レスポンスインターフェース回路ResIFと、初期化回路INIT、メモリ回路MemVLから構成されている。リクエストインターフェース回路ReqIFはリクエストクロック制御回路RqCkCおよび、リクエストキュー制御回路RqCTから構成される。リクエストクロック制御回路RqCkCはクロックドライバDrv1およびクロック分周回路Div1から構成される。
リクエストキュー制御回路RqCTはリクエストキュー回路RqQI、リクエストキュー回路RqQXI、リクエストキュー回路RqQXO、IDレジスタ回路IDR、ID比較回路CPQ、レイテンシ値出力設定レジスタ回路LRG、レスポンス順序設定レジスタ回路RRG、リクエスト番号設定回路RNBから構成される。
特に限定しないが、リクエストキュー回路RqQIは4つのリクエストキューから構成され、リクエストキュー回路RqQXIは4つのリクエストキューから構成され、リクエストキュー回路RqQXOは4つのリクエストキューから構成される。レスポンスインターフェース回路ResIFはレスポンスクロック制御回路RsCkCおよび、レスポンスキュー制御回路RsCTから構成される。レスポンスクロック制御回路RsCkCはクロックドライバDrv2およびクロック分周回路Div2から構成される。
レスポンスキュー制御回路RsCTは、レスポンスキュー回路RsQo、レスポンスキュー回路RsQp、ステータスレジスタ回路STReg、レスポンススケジュール回路SCH、レイテンシ計算回路LA、レスポンス番号テーブルTBから構成される。
特に限定しないが、レスポンスキュー回路RsQoは4つのレスポンスキューから構成され、スポンスキュー回路RsQpは4つのレスポンスキューから構成される。
メモリ回路MemVLは、特に限定しないが、揮発性メモリであり、ダイナミックランダムアクセスメモリセルを利用したダイナミックランダムアクセスメモリである。初期化回路INITは、メモリチップM0への電源供給開始時にメモリチップM0の初期化を行う。リクエストクロック制御回路RqCkCは、クロック信号RqCk0から入力したクロックを、内部クロックck1を通じて、リクエストキュー制御回路RqCT及びレスポンスクロック制御回路RsCkCへ伝える。また、リクエストクロック制御回路RqCkCは、リクエストクロック信号RqCk0から入力されたクロックをクロックドライバDrv1及びクロック分周回路Div1を介して、クロック信号RqCk1を通じて出力する。また、リクエストクロック制御回路RqCkCはリクエスト信号RqMux0を通じて入力した命令に従い、クロック信号ck2およびリクエストクロックRqCk1のクロック周波数を低下させたり、クロックを停止させたり、クロックを再動作させることができる。
レスポンスクロック制御回路RsCkCは、内部クロック信号ck1から入力したクロックを、内部クロック信号ck3を通じて、レスポンスキュー制御回路RsCTへ出力する。また、レスポンスクロック制御回路RsCkCは内部クロック信号ck1からから入力したクロックを、クロック分周回路Div2を介してクロック信号RsCk0から出力する。また、レスポンスクロック制御回路RsCkCは、クロック信号RsCK1から入力したクロックを、クロックドライバDiv2を介して、クロック信号ck4よりレスポンスキュー制御回路RsCTへ出力する。さらに、レスポンスクロック制御回路RsCkCはリクエスト信号RqMux0を通じて入力した命令に従い、レスポンスクロックRsCk0のクロック周波数を低下させたり、また、クロックを停止させたり、さらに、クロックを再動作させることができる。
レスポンス順序設定レジスタ回路RRGは、上記命令がレスポンス順序設定レジスタ設定命令の場合に、書き込みデータに含まれるリクエスト番号選択フラグ情報RSELFlag値と、レスポンス順序フラグRRGFlag情報と、ID値を格納する。
レイテンシ値出力設定レジスタ回路LRGは、上記命令がレイテンシ値出力設定レジスタ設定命令の場合に、書き込みデータに含まれるレイテンシ値出力フラグ情報LRGFlag値とID値を格納する。
リクエスト番号設定回路RNBは、リクエスト番号選択フラグ情報RSELFlag値が1の場合にリクエストキュー回路RqQIへ入力したリクエストに対応したリクエスト番号ReqNを生成し、リクエスト番号選択フラグ情報RSELFlag値が1の場合には、リクエスト信号RqMux0を通じて入力するリクエスト番号ReqNをリクエスト番号ReqNとする。
リクエストキュー回路RqQIは、リクエスト信号RqMux0を通じて、ID値、リクエスト番号ReqN、命令、アドレス及び書き込みデータなどが多重化されメモリチップM0へ入力したリクエストを格納し、リクエスト番号ReqNと同じ番号のレスポンス番号ResNを生成し、レスポンスキュー制御回路RsCTへ送信する。
IDレジスタ回路IDRは、メモリチップM0のID値を格納する。
ID比較回路CPQは、リクエストキュー回路RqQIに格納されているID値と、IDレジスタ回路IDRに格納されているID値を比較する。
リクエストキュー回路RqQXI及びリクエストキュー回路RqQXOは、リクエストキュー回路RqQIから転送されたリクエストを格納する。
レスポンスキュー回路RsQoは、メモリチップM0のメモリ回路MemVLから読み出されたデータ及びIDレジスタ回路IDRから読み出されたID値、レスポンス番号ResNを格納する。
レスポンスキュー回路RsQpは、レスポンス信号RsMux1を通じて、入力されるID値、レスポンス番号ResN、読み出しデータおよびエラー情報およびステータス情報を格納する。
レイテンシ計算回路LAは、レイテンシ値出力設定レジスタLRGのレイテンシ値出力フラグ情報LRGFlag値が1の場合には読み出しデータのレイテンシ値を計算し、レイテンシ値出力フラグ情報LRGFlag値が0の場合には、読み出しデータのレイテンシ値を計算しない。
レスポンス番号テーブルTBは、レスポンス順序設定レジスタの設定に従って読み出しデータの送信順番を決める。
ステータスレジスタ回路STRRegは、特に限定しないがレスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへレスポンスが格納されていることを示す未処理レスポンス情報などが格納される。
レスポンススケジュール回路SCHは、ンスキュー回路RsQoへ格納されているレスポンスと、レスポンスキュー回路RsQpへ格納されているレスポンスとのレスポンス優先順位を決め、優先順位の高いレスポンスを、レスポンス信号RsMux0から出力するための調停を行う。レスポンス優先順位は、レスポンスキュー回路RsQoから出力されたレスポンスの回数と、レスポンスキュー回路RsQpから出力されたレスポンスの回数によってレスポンススケジュール回路SCHが動的に変化させる。
次に、本メモリチップM0の動作を説明する。
まず、電源投入時の動作について説明する。
メモリチップM0へ電源が投入されると初期化回路INITはメモリチップM0の初期化を行う。先ず、IDレジスタ回路IDRの持つIDレジスタの値を0へ、ID有効ビットをLowへ初期設定する。
レイテンシ出力レジスタLRGが持つイテンシ値出力フラグ情報LRGFlag値およびID情報値は0へ初期設定される。
レスポンス順序設定レジスタRRGが持つリクエスト番号選択フラグRSELFlag値と、レスポンス順序フラグRRGFlag値と、ID情報値は0へ初期設定される。
次にレスポンススケジュール回路SCHが持つレスポンスキュー回路RsQoに入力するレスポンスの優先順位を1へ、レスポンスキュー回路RsQpに入力するメモリチップM1からのレスポンスの優先順位を2へ、メモリチップM2からのレスポンスの優先順位を3へ設定する。初期化回路INITによる初期設定が終了すると、メモリチップM0は、情報処理装置CPU_CHIPとメモリチップM1との間で通信できることを確認する通信確認動作を行う。メモリチップM0はリクエストイネーブル信号RqEn1がHighになったことを確認し、レスポンスイネーブル信号RsEn1及びリクエストイネーブル信号RqEn0をHighにする。
次に、情報処理装置CPU_CHIPは、リクエストイネーブル信号RqEn0がHighになったことを確認し、各メモリチップの信号接続が確認されたことを知り、レスポンスイネーブル信号RsEn0をHighにする。通信確認動作が終了すると、情報処理装置CPU_CHIPよりリクエスト信号RqMux0を通じて、ID番号2とID設定命令がメモリチップM0へ転送される。。メモリチップM0では、ID有効ビットがLowのため、まだID番号付けが行われていないと判断し、IDレジスタへID番号2を、ID有効ビットをHighに設定し、ID番号付けを完了する。次に、メモリチップM0はレスポンス信号RsMux0を通じて、メモリチップM0のID値2およびID番号付け完了情報を出力し、情報処理装置CPU_CHIPへ、メモリチップM0のID番号付けが完了したことを通達する。
次に、電源投入直後の動作が終了した後の動作について説明する。
先ず、メモリチップM0のレイテンシ値出力レジスタLREGへのデータ設定動作について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値2、レイテンシ値出力レジスタ設定命令LRGSet、レイテンシ値出力レジスタLRGへの設定値LRGData0を多重化したリクエストReqLRGSet0をクロック信号RqCK0に同期させ、メモリチップM0へ転送する。
特に、限定しないがレイテンシ出力レジスタLRGへの設定値LRGData0には、レイテンシ値出力フラグ情報LRGFlag値とID値が含まれる。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqLRGSet0を格納する。
次に、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqLRGSet0に含まれるID値2と自身のIDレジスタの値2を比較する。双方は一致しているため、メモリチップM0のレイテンシ値出力レジスタLRGへ設定値LRGData0が設定される。図4にメモリチップM0のレイテンシ値出力レジスタLRGへ設定された値の一例を示す。
メモリチップM0のレスポンス順序設定レジスタRRGへのデータ設定動作について説明する。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値2、レスポンス順序設定レジスタ設定命令RRGSet、レスポンス順序設定レジスタRRGへの設定値RRGData0を多重化したリクエストReqRRGSet0をクロック信号RqCK0に同期させ、メモリチップM0へ転送する。設定値RRGData0には、リクエスト番号選択フラグ情報RSELFlag値と、レスポンス順序フラグRRGFlag情報と、ID値が含まれる。
メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRRGSet0を格納する。
次に、メモリチップM0のリクエストキュー制御回路RqCTはリクエストReqRRGSet0に含まれるID値2と自身のIDレジスタの値2を比較する。双方は一致しているため、メモリチップM0のレスポンス順序設定レジスタRRGへ設定値RRGData0が設定される。図6にメモリチップM0のレスポンス順序設定レジスタRRGへ設定された値の一例を示す。
メモリチップM0のレイテンシ値出力レジスタLRGが図4へ示されている値に設定され、レスポンス順序設定レジスタRRGが図6へ示されている値に設定されている場合に、情報処理装置CPU_CHIPからリクエストがメモリチップM0へ生じた際の動作を説明する。
メモリチップM0のリクエストキュー回路RqQIは、特に限定しないが2つのリクエストキューRqQI-0及びRqQI-1から構成されている。また、メモリチップM0は、リクエストキューRqQI-0及びRqQI-1へリクエストがエントリされていないため、リクエストイネーブル信号RqEn0をHighにし、リクエストが受け付け可能であることを情報処理装置CPU_CHIPへ知らせる。メモリチップM0のレスポンスキュー回路RqQoは、特に限定しないが2つのレスポンスキューRqQo-0及びRqQo-1から構成されている。
メモリチップM0のレスポンスキュー回路RqQpは、特に限定しないが2つのレスポンスキューRqQp-0及びRqQp-1から構成されている。
情報処理装置CPU_CHIPは、レスポンスイネーブル信号RsEn0をHighにし、レスポンスが受け付け可能であることをメモリチップM0へ知らせる。情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値2、リクエスト番号ReqN値1、バンクアクティブ命令BA、バンクアドレスBK1、ロウアドレスRowを多重化したリクエストReqBAb0m0をクロック信号RqCk0に同期させ、メモリチップM0へ転送する(図11:Step1)。
次に、リクエスト信号RqMux0を通じて、ID値2、リクエスト番号ReqN値2、32バイトデータ読み出し命令RD32、バンクアドレスBK0、カラムアドレスCol255を多重化したリクエストReqRD32b0m0をクロック信号RqCK0に同期させ、メモリチップM0へ転送する(図11:Step1)。
リクエストイネーブル信号RqEn0がLowであれば(図11:Step2)、情報処理装置CPU_CHIPからのリクエストはメモリチップM0のリクエストキュー回路RqQIへ格納されない。リクエストイネーブル信号RqEn0がHighであれば(図11:Step2)、メモリチップM0へのリクエストReqBAb0m0とリクエストReqRD32b0m0は順に、メモリチップM0の、リクエストキュー回路RqQIのリクエストキューRqQI-0およびRqQI-1へ格納される(図11:Step3)。
これで、リクエストキュー回路RqQIの全リクエストキューはエントリされ、情報処理装置CPU_CHIPからの新たなリクエストを受け付け不可能なため、リクエストイネーブル信号RqEn0をLowにする。リクエストイネーブル信号RqEn0がLowになったことで、情報処理装置CPU_CHIPは、メモリチップM0がリクエストを受け付けられなくなったことを知ることができる。
その後、ID比較回路CPQは、リクエストキューRqQI-0へエントリされたリクエストReqBAb0m0に含まれるID値2と、IDレジスタ回路IDRに保持されているID値2を比較する(図11:Step4)。比較結果が一致したため、リクエストReqBAb0m0は、リクエストキュー回路RqQXIへ転送される(図11:Step5)。比較結果が不一致の場合は、ID値とリクエスト番号ReqN値を含んだリクエストは、リクエストキュー回路RqQXOへ転送され、メモリチップM1へ転送される(図11:Step12)。
次に、リクエストキュー回路RqQXIは格納しているリクエストが読み出し命令を含むかどうかチェックする(図11:Step6)。読み出し命令を含んでいる場合は、リクエストキュー回路RqQXIは、レスポンスキュー回路RsQoのレスポンスキューRqQp-0及びRqQp-1に空きがあるかをチェックする(図11:Step7)。リクエストReqBAb0m0は読み出し命令を含んでいないため、リクエストキュー回路RqQXIは格納しているリクエストReqBAb0m0をメモリ回路MemVLへ転送する(図11:Step10)。メモリ回路MemVLはリクエストReqBAb0m0に従って動作する(図11:Step11)。具体的には、メモリ回路MemVLはリクエストReqBAb0m0に含まれるバンクアクティブ命令BA、バンクアドレスBK0、ロウアドレスRow63によって、バンク0内のロウ63に接続されている1kByte分のメモリセルを活性化し、バンク0内のセンスアンプへ転送する(図11:Step11)。
リクエストReqBAb0m0が処理されたことによって、リクエストキューRqQI-0がひとつ分空いたため、メモリチップM0は、リクエストイネーブル信号RqEn0をHighにし、新たなリクエストを受け付け可能であることを情報処理装置CPU_CHIPへ知らせる。情報処理装置CPU_CHIPは、メモリチップM0のリクエストイネーブル信号RqEn0がHighになったことを確認し、新たなリクエストとしてリクエスト信号RqMux0を通じて、ID値2、リクエスト番号ReqN値3、32バイト書き込み命令WT、バンクアドレスBK0、カラムアドレスCol127、32バイト分の書き込みデータを多重化したリクエストReqWT23b0m0をクロック信号RqCK0に同期させ、メモリチップM0へ転送する(図11:Step1)。
リクエストイネーブル信号RqEn0をチェックし(図11:Step2)、リクエストイネーブル信号RqEn0がHighのため、メモリチップM0は、情報処理装置CPU_CHIPからのリクエストReqWT23b0m0を自身のリクエストキュー制御回路RqCT内のリクエストキューRqQI-0へ格納する(図11:Step3)。
メモリチップM0は、新たなリクエストReqWT23b0m0を、自身のリクエストキュー回路RqQI内のリクエストキューRqQI-0へ格納すること(図11: Step3)とは独立して並行に、すでにリクエストキューRqQI-1に格納されているリクエストReqRD32b0m0に対する処理を行うことができる(図11:Step4以降)。
次に、すでにリクエストキューRqQI-1に格納されているリクエストReqRD32b0m0についての動作を説明する。
ID比較回路CPQは、リクエストキューRqQI-1へエントリされたリクエストReqRD32b0m0に含まれるID値2と、IDレジスタ回路IDRに保持されているID値2を比較する(図11:Step4)。比較結果が一致したため、リクエストReq RD32b0m0は、リクエストキュー回路RqQXIへ転送される(図11:Step5)。比較結果が不一致の場合は、リクエストReqRD32b0m0は、リクエストキュー回路RqQXOへ転送され、メモリチップM1へ転送される(図11:Step12)。次に、リクエストキュー回路RqQXIは格納しているレスポンスが読み出し命令を含むかどうかチェックする(図11:Step6)。
リクエストReqRD32b0m0読み出し命令を含んでいるため、リクエストキュー回路RqQXIは、レスポンスキュー回路RsQoのレスポンスキューRqQp-0及びRqQp-1に空きがあるかをチェックする(図11:Step7)。レスポンスキュー回路RsQoのレスポンスキューRqQp-0及びRqQp-1に空きがなければ、空きができるまで、リクエストキュー回路RqQXIは、リクエストReq RD32b0m0の転送を中断する。レスポンスキュー回路RsQoのレスポンスキューRqQp-0及びRqQp-1に空きがあれば、リクエストキュー回路RqQXIは格納しているリクエストReq RD32b0m0をメモリ回路MemVLへ転送する(図11:Step8)。メモリ回路MemVLはリクエストReq RD32b0m0に従って動作する(図11:Step9)。具体的には、メモリ回路MemVLはリクエストReqRD32b0m0に含まれる、ID値2、リクエスト番号ReqN値2、32バイトデータ読み出し命令RD、バンクアドレスBK0、カラムアドレスCol255によって、バンク0のセンスアンプに保持されているデータのなかで、カラムアドレス255を開始アドレスとした32バイト分のデータが読み出だされ(図11:Step9)、IDレジスタ値2と、リクエスト番号ReqN値2と等しいレスポンス番号ResN値2を含めて、レスポンスキュー制御回路RsCT内のレスポンスキューRsQoのレスポンスキューRsQo-0へレスポンスResRD32b0m0としてエントリされる(図12:Step13)。
レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへレスポンスがエントリされると、そのレスポンスに対するレイテンシを計算する(図12:Step14)。次に、レスポンスイネーブル信号RsEn0をチェックし(図12:Step15)、スポンスイネーブル信号RsEn0がHighの際に、レスポンス番号ResNとレイテンシ値を情報処理装置CPU_CHIPへ送信する(図12:Step16)。
レスポンススケジュール回路SCHは、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンス数を、ステータスレジスタSTRegへ保存する(図12:Step17)。さらに、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンスに対するレスポンス優先順位を決定する(図12:Step18)。次に、レスポンスイネーブル信号RsEn0をチェックし(図12:Step19)、スポンスイネーブル信号RsEn0がHighの際に、レスポンス優先順位の最も高いレスポンスをレスポンス信号RsMux0を通じて、情報処理装置CPU_CHIPへ送信する(図12:Step20)。レスポンスイネーブル信号RsEn0がLowであれば、情報処理装置CPU_CHIPへ送信は行わない。
レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpの1つのレスポンスが情報処理装置CPU_CHIPへ完全に送信されると、レスポンススケジュール回路SCHは、スポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンス数をチェックし、最新のレスポンス数をステータスレジスタSTRegへ保存する(図12:Step21)。
ここでは、レスポンスイネーブル信号RsEn0がHighであり、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンスが、レスポンスResRD32b0m0のみのため、レスポンスResRD32b0m0に対するレイテンシ値Lat32b0m0を計算し、レスポンスResRD32b0m0に含まれるレスポンス番号ResN値2とレイテンシ値Lat32b0m0を情報処理装置CPU_CHIPへ送信する。
情報処理装置CPU_CHIPは、リクエストReqRD32b0m0のリクエスト番号ReqN値2に対応するレスポンス番号値2とレイテンシ値Lat32b0m0を受け取ることで、レスポンスResRD32b0m0が情報処理装置CPU_CHIPへ入力するまでのレイテンシ値を確認することができる。
次に、レスポンススケジュール回路SCHは、ステータスレジスタSTRegへレスポンス数1を保存し、さらにレスポンスeRsRD32b0m0のレスポンス優先順位を最高位に設定し、レスポンスRsRD32b0m0を情報処理装置CPU_CHIPへ送信する。
レスポンスRsRD32b0m0にはIDレジスタ値2、リクエスト番号ReqN値2と等しいレスポンス番号値2、32バイト分のデータが含まれる。
情報処理装置CPU_CHIPは、リクエストReqRD32b0m0のリクエスト番号ReqN値2に対応するレスポンス番号値2を受け取ることで、レスポンスResRD32b0m0がリクエストReqRD32b0m0のレスポンスであることを確認できる。
レスポンスResRD32b0m0が情報処理装置CPU_CHIPへ送信されると、レスポンススケジュール回路SCHは、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンスが存在しないため、ステータスレジスタSTRegへレスポンス数0を保存する。
リクエストReqRD32b0m0に対応するレスポンスResRD32b0m0がレスポンスキュー回路RsQoへエントリされると、レスポンスResRD32b0m0が情報処理装置CPU_CHIPへ出力されている最中でも、リクエストReqWT23b0m0に対する処理を行うことができる(図11:Step4以降)。
次に、すでにリクエストキューRqQI-0に格納されているリクエストReq WT23b0m0についての動作を説明する。ID比較回路CPQは、リクエストキューRqQI-0へエントリされたリクエストReq WT23b0m0に含まれるID値2と、IDレジスタ回路IDRに保持されているID値2を比較する(図11:Step4)。比較結果が一致したため、リクエストReq WT23b0m0は、リクエストキュー回路RqQXIへ転送される(図11:Step5)。比較結果が不一致の場合は、リクエストReqWT23b0m0は、リクエストキュー回路RqQXOへ転送され、メモリチップM1へ転送される(図11:Step12)。
次に、リクエストキュー回路RqQXIは格納しているレスポンスが読み出し命令を含むかどうかチェックする(図11:Step6)。読み出し命令を含んでいる場合は、リクエストキュー回路RqQXIは、レスポンスキュー回路RsQoのレスポンスキューRqQp-0及びRqQp-1に空きがあるかをチェックする(図11:Step7)。リクエストReqWT23b0m0は読み出し命令を含んでいないため、リクエストキュー回路RqQXIは格納しているリクエストReqWT23b0m0をメモリ回路MemVLへ転送する(図11:Step10)。メモリ回路MemVLはリクエストReqWT23b0m0に従って動作する(図11:Step11)。具体的には、メモリ回路MemVLはリクエストReqWT23b0m0に含まれるID値2、32バイト書き込み命令WT、バンクアドレスBK0、カラムアドレスCol127および32バイト分の書き込みデータによって、メモリバンク0のセンスアンプへ、カラムアドレス127を開始アドレスとした32バイト分のデータを書き込む。
図13はメモリチップM1からメモリチップM0へレスポンスが発生した際の、動作の一例を示すフローチャートである。
レスポンス信号RsMux1より、レスポンスクロック信号RqCK1に同期し、レスポンス番号ResN値15とレイテンシ値Latm1を含んだレスポンスResLatm1がメモリチップM0へ送信されると(図13:Step1)、レスポンスイネーブル信号ResEn1がLowであれば(図13:Step2)、メモリチップM0のレスポンスキュー回路RsQpへ格納されない。レスポンスイネーブル信号ResEn1がHighであれば(図13:Step2)、メモリチップM0のレスポンスキュー回路RsQpへ格納される(図13:Step3)。
レスポンスキュー回路RsQpへレスポンスResLatm1がエントリされると、そのレスポンスに対するレイテンシをレイテンシ値Latm1から計算し、レイテンシ値Latm1m0を求める(図13:Step4)。次に、レスポンスイネーブル信号RsEn0をチェックし(図13:Step5)、レスポンスイネーブル信号RsEn0がHighの際に、レスポンス番号ResN値15とレイテンシ値Latm1m0を含んだレスポンスResLatm1m0が情報処理装置CPU_CHIPへ送信する(図13:Step6)。
情報処理装置CPU_CHIPは、レスポンス番号ResN値15とレイテンシ値Latm1m0を受け取ることで、リクエスト番号ReqN値15を持つリクエストに対するレスポンス番号ResN値15を持つレスポンスが情報処理装置CPU_CHIPへ入力するまでのレイテンシ値を確認することができる。
メモリチップM0へレスポンス番号ResN値20と読み出しデータRDdataを含んだレスポンスResRDm1m0が送信される(図13:Step7)と、レスポンスイネーブル信号ResEn1がLowであれば(図13:Step8)、メモリチップM0のレスポンスキュー回路RsQpへ格納されない。レスポンスイネーブル信号ResEn1がHighであれば(図13:Step8)、メモリチップM0のレスポンスキュー回路RsQpへ格納される(図13:Step9)。
レスポンスキュー回路RsQpへレスポンスResRDm1m0がエントリされると、レスポンススケジュール回路SCHは、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンス数を、ステータスレジスタSTRegへ保存する(図13:Step10)。さらに、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンスに対するレスポンス優先順位を決定する(図13:Step11)。次に、レスポンスイネーブル信号RsEn0をチェックし(図13:Step12)、スポンスイネーブル信号RsEn0がHighの際に、レスポンス優先順位の最も高いレスポンスをレスポンス信号RsMux0より、情報処理装置CPU_CHIPへ送信する(図13:Step13)。レスポンスイネーブル信号RsEn0がLowであれば、情報処理装置CPU_CHIPへ送信は行わない。
情報処理装置CPU_CHIPは、レスポンス番号ResN値15を持つレスポンスResRDm1m0を受け取ることで、このレスポンスがリクエスト番号ReqN値15を持つリクエストに対するレスポンスであることを確認できる。
レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpの1つのレスポンスが情報処理装置CPU_CHIPへ完全に送信されると、レスポンススケジュール回路SCHは、スポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンス数をチェックし、最新のレスポンス数をステータスレジスタSTRegへ保存する(図13:Step14)。
レスポンススケジュール回路SCHの動作について説明する。
図14はレスポンススケジュール回路SCHの動作を示すフローチャートである。レスポンススケジュール回路SCHでは、先ず、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへレスポンスがエントリされているかをチェックする(Step1)。レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpのいずれにもレスポンスがエントリされていなければ、再度、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへのエントリをチェックする。レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpのいずれかにレスポンスがエントリされていれば、レスポンスの優先順位をチェックし、最高位のレスポンス優先順位を持つレスポンスの送信準備を行う(Step2)。
次に、レスポンスイネーブル信号RsEn0をチェックし(Step3)、Lowの際はレスポンスを出力せず、レスポンスイネーブル信号RsEn0がHighを待つレスポンスイネーブル信号RsEn0がHighを待つ。レスポンスイネーブル信号RsEn0がHighの際は、最高位のレスポンス優先順位を持つレスポンスを出力する(Step4)。その、レスポンスが出力された後は、レスポンスに関する出力優先順位を変化させる(Step5)。
メモリチップM0のレスポンススケジュール回路SCHで行うレスポンス優先順位の変更動作の一例について説明する。図15では、メモリチップM0が装備するレスポンススケジュール回路SCHが行う動的レスポンス優先順位の制御を示す。
先ず、メモリチップM0での、レスポンス優先順位の制御を説明する。電源投入直後の初期設定(Initial)にて、レスポンスキュー回路RsQoへエントリされるメモリチップM0のレスポンスの優先順位(PRsQo(M0))は1、レスポンスキュー回路RsQpエントリされるメモリチップM1のレスポンスの優先順位(PRsQp(M1))は2に、レスポンスキュー回路RsQpエントリされるメモリチップM2のレスポンスの優先順位(PRsQp(M2))は3に設定される。特に限定しないが、レスポンスの順位の小さい方がレスポンスの順位が高いとする。レスポンスキュー回路RsQoへエントリしたメモリチップM0のレスポンス(RsQo(M0))がNtime回分出力すると、レスポンスキュー回路RsQoへエントリされるメモリチップM0のレスポンスの優先順位(PRsQo(M0))は最も低い3となり、メモリチップM1のレスポンスの優先順位(PRsQp(M1))は最も高い1となり、レスポンスキュー回路RsQPエントリされるメモリチップM2のレスポンスの優先順位(PRsQp(M2))は2となる。
レスポンスキュー回路RsQpへエントリされるメモリチップM1のレスポンスPRsQp(M1))が、Mtime回分出力するとレスポンスキュー回路RsQpへエントリされるメモリチップM1のレスポンスの優先順位(PRsQp(M1))は最も低い3となり、レスポンスキュー回路RsQPエントリされるメモリチップM2のレスポンスの優先順位(PRsQp(M1))は最も高い1となり、レスポンスキュー回路RsQPoへエントリされるメモリチップM0のレスポンスの優先順位(PrsQo(M0))は2となる。
次に、レスポンスキュー回路RsQpへエントリされるメモリチップM2のレスポンスPRsQp(M2))が、Ltime回分出力するとレスポンスキュー回路RsQPへエントリされるメモリチップM2のレスポンスの優先順位(PRsQp(M2))は最も低い3となり、レスポンスキュー回路RsQPoへエントリされるメモリチップM0のレスポンスの優先順位(PrsQo(M0))は最も高い1となる。レスポンスキュー回路RsQPエントリされるメモリチップM2のレスポンスの優先順位(PRsQp(M1))は2となる。レスポンスキュー回路RsQoへエントリされるメモリチップM0からのレスポンスのレスポンス優先順位を変更するためのレスポンス出力回数Ntime、レスポンスキュー回路RsQpへエントリされるメモリチップM1からのレスポンスのレスポンス優先順位を変更するためのレスポンス出力回数Mtimeおよびレスポンスキュー回路RsQpへエントリされるメモリチップM2からのレスポンスのレスポンス優先順位を変更するためのレスポンス出力回数Ltimeは、電源投入直後の初期設定(Initial)にて、特に限定しないが、それぞれ、10回、2回、1回に設定される。
さらに、レスポンス出力回数Ntime、Mtime、Ltimeは、情報処理装置CPU_CHIPから設定可能であり、本発明が利用される携帯機器などのシステム構成にあわせて、高性能化が図れるように、それぞれを設定することができる。
<クロック制御>
図16(a)は、メモリチップM0から出力するレスポンスクロック信号RsCk0を停止する動作の一例である。情報処理装置CPU_CHIPは、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンス数ResNを確認するために、リクエスト信号RqMux0よりメモリチップM0のID値2とレスポンス数確認命令を多重化したリクエストReqRNoを入力する(Step2)。メモリチップM0のリクエストキュー回路RqQIはリクエストReqRNoを格納する。次に、ID比較回路CPQは、リクエストキュー回路RqQIへ格納されているリクエストReqRNoに含まれるID値2とIDレジスタ回路IDRに保持されているID値2を比較し、一致したため、リクエストReqBAb0m0は、リクエストキュー回路RqQXIへ転送される。
リクエストキュー回路RqQXIは、リクエストReqBAb0m0を、ステータスレジスタ回路STRegへする。ステータスレジスタ回路STRegは、ID値2含めて、レスポンス数ResNをレスポンスキュー回路RsQoへ送信し、レスポンスキュー回路RsQoは、レスポンス信号RsMux0を通じて、ID値2およびレスポンス数ResNを情報処理装置CPU_CHIPへ送信する(Step3)。つぎに、ID値2およびレスポンス数ResNを受け取った情報処理装置CPU_CHIPは、レスポンス数ResNが0であるかどうかチェックを行う(Step4)。レスポンス数ResNが0では無い場合、未だ、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンスが存在するので、再度、レスポンス数確認命令をメモリチップM0へ送信する(Step2)。
レスポンス数ResNが0の場合は、レスポンスキュー回路RsQoおよびレスポンスキュー回路RsQpへエントリされているレスポンスが存在しないため、リクエスト信号RqMux0より、レスポンスクロック信号RsCk0の停止命令を、メモリチップM0へ送信する(Step5)。リクエスト信号RqMux0よりリクエストとしてID値2、レスポンスクロック停止コマンドが多重化されたリクエストReqStop2がメモリチップM0へ入力する。メモリチップM0はリクエストReqStop2を自身のリクエストキュー制御回路RqCT内のリクエストキューへ格納する。その後、リクエストキュー制御回路RqCT内のID比較回路はリクエストReqStop2に含まれるID値2と自身のIDレジスタの値2を比較する。比較結果は一致しており、リクエストキュー制御回路RqCTはレスポンスクロック制御回路RsCkC内のクロック分周回路Div2へリクエストReqStop2を送信する(Step5)。
クロック分周回路Div2は、リクエストReqStop2に従い、レスポンスクロック信号RsCK0のクロック周波数を徐々に低下させ、レスポンスクロック信号RsCK0の停止準備が整った時点で、レスポンススケジュール回路SCHを通じて、レスポンス信号RsMux0より、ID値2およびレスポンスクロック停止通達情報を情報処理装置CPU_CHIPへ送信する(Step6)。その後、クロック分周回路Div2は、クロック信号ck3およびレスポンスクロック信号RsCK0を停止する(Step7)。
図16(b)は、メモリチップM0から出力するレスポンスクロック信号RsCk0のクロック周波数を低下させるための動作の一例である。図16(b)のStep1からStep4までの動作は、図16(a)と同等であるため、Step5より説明する。リクエスト信号RqMux0よりリクエストとしてID値2、レスポンスクロック分周コマンド、および分周比8が多重化されたリクエストReqDIV8がメモリチップM0へ送信される(Step5)。メモリチップM0は、自身のリクエストキュー制御回路RqCT内のID比較回路にて、リクエストReqDIV8に含まれるID値2と自身のIDレジスタの値2を比較する。比較結果は、一致のため、リクエストReqDIV8は、リクエストクロック制御回路RqCkC内のクロック分周回路Div2へ送信される(Step5)。
クロック分周回路Div2は、リクエストReqDIV8に従い、レスポンスクロック信号RsCK0のクロック周波数を徐々に低下させ、最終的に、リクエストクロック信号RqC2を8分の1分周したクロックを、クロックCK3およびレスポンスクロック信号RsCk2から出力する(Step6)。レスポンスクロック信号RsCK0のクロック周波数が、所望の周波数へ変更された後、クロック分周回路Div2はレスポンススケジュール回路SCHを通じて、レスポンス信号RsMux0より、ID値2およびレスポンスクロック分周完了情報を情報処理装置CPU_CHIPへ送信する(Step7)。
図16(c)は、周や停止されたレスポンスクロック信号RsCk0を再度リクエストクロック信号RqCk0と同等の周波数で動作させ場合の動作の一例である。メモリチップM0から出力するレスポンスクロック信号RsCk0のクロック周波数を低下させるための動作の一例である。リクエスト信号RqMux0よりリクエストとしてID値2、レスポンスクロック再開コマンドが多重化されたリクエストReqStart2がメモリチップM0入力する。
メモリチップM0はリクエストReqStart2を自身のリクエストキュー制御回路RqCT内のリクエストキューへ格納する(Step2)。その後、リクエストキュー制御回路RqCT内のID比較回路はリクエストReqStart2に含まれるID値2と自身のIDレジスタの値2を比較する。比較結果は一致するため、リクエストReqDIV4を自身へのリクエストであると判断する。リクエストキュー制御回路RqCTはレスポンスクロック制御回路RsCkC内のクロック分周回路Div2へリクエストReqStart2を送信する(Step2)。クロック分周回路Div3は、リクエストReqStart2に従い、徐々にクロック周波数を上げ、最終的に、リクエストクロック信号RqCk0と同等の周波数を持つのクロックを、クロックck3およびレスポンスクロック信号RsCK0より出力する(Step3)。
レスポンスクロック信号RsCK0のクロック周波数が、所望の周波数へ変更された後、クロック分周回路Div2はレスポンススケジュール回路SCHを通じて、レスポンス信号RsMux0より、ID値2およびレスポンスクロック再開完了情報を情報処理装置CPU_CHIPへ送信する(Step4)。上記はレスポンスクロック信号RsCk0についてのクロック制御方法について説明したが、リクエストクロック信号RqCk1についてのクロック制御も同様に行うことができることは言うまでもない。
<メモリ回路MemVL>
図17は、メモリチップM0が装備するメモリ回路MemVLの回路ブロック図の一例である。
メモリ回路MemVLは、コマンドデコーダCmdDec、制御回路Cont Logic、リフレッシュカウンタRefC、温度計Thmo、ライトデータバッファWDataLat、リードデータバッファRDataLat、データ制御回路DataCont、およびメモリバンクBANK0〜BANK7から構成されている。
また、各メモリバンクBANK0〜BANK7はロウアドレスバッファRadLat、カラムアドレスバッファCadLat、ロウデコーダRowDec、カラムデコーダColDec、センスアンプSenseAmp、メモリ回路MBank0〜MBank7から構成されている。
メモリ回路MemVLの読み出し動作を説明する。
リクエストキューRqQXIへバンクアドレス7、ロウアドレス5格納されており、バンクアクティブ命令BAがコマンド信号Commandから、バンクアドレス7およびロウアドレス5が、アドレス信号Addressよりメモリ回路MemVLへ送信される。コマンドデコーダCmdDecはバンクアクティブ命令BAを解読し、制御回路Cont LogicによってメモリバンクBANK7が選択され、メモリバンクBANK7のロウアドレスバッファRadLatへロウアドレス5が格納され、ロウデコーダRowDecへ入力される。その後メモリ回路MBank7内のロウアドレス5に接続されているメモリセルが活性化され、1kByte分のデータがセンスアンプSenseAmpへ転送される。
つぎに、リクエストキューRqQXIへ8バイトデータリード命令RD8、バンクアドレス7、カラムアドレス64が格納されており、8バイトデータリード命令RD8がコマンド信号Commandから、バンクアドレス7およびカラムアドレス63が、アドレス信号Addressよりメモリ回路MemVLへ送信される。
コマンドデコーダCmdDecは8バイトデータリード命令RD8を解読し、制御回路Cont LogicによってメモリバンクBANK7が選択され、メモリバンクBANK7カラムアドレスバッファCAddLatへカラムアドレス63を格納され、カラムデコーダColDecへ入力される。
その後、カラムアドレス64を開始アドレスとして、8バイト分のデータが、センスアンプSenseAmpから読み出され、データ制御回路DataContを介してリードデータバッファRDataLatへ転送され格納される。その後読み出された8バイト分のデータはレスポンスキュー回路RsQoへ転送される。
次に、メモリ回路MemVLの書込み動作を説明する。リクエストキューRqQXIへ8バイトデータライト命令WT8、バンクアドレス7、カラムアドレス128が格納されており、8バイトデータライト命令RD8がコマンド信号Commandから、バンクアドレス7およびカラムアドレス127が、アドレス信号Addressより、8バイトデータがライトデータ信号WDataよりメモリ回路MemVLへ送信される。
コマンドデコーダCmdDecは8バイトデータライト命令WT8を解読し、制御回路Cont LogicによってメモリバンクBANK7カラムアドレスバッファCAddLatへカラムアドレス128を格納され、カラムデコーダColDecへ入力され、8バイト分のライトデータはライトデータバッファWData Latへ格納される。
その後カラムアドレス128を開始アドレスとして、8バイト分のデータが、ライトデータバッファWData Latから、データ制御回路DataContを介して、メモリバンクBank7内のセンスアンプSenseAmpへ転送され、メモリ回路Mbank7へ書き込まれる。
各メモリバンクBANK0〜BANK7は独立に動作するため、異なるバンク間では、読み出し動作と書き込み動作を同時に実行でき、高速化を図ることができる。
つぎに、リフレッシュ動作について説明する。メモリ回路MemVLは揮発性メモリのため、データ保持のために定期的にリフレッシュ動作を行う必要がある。リクエストキューRqQXIへ格納されているリフレッシュ命令REFが、コマンド信号Commandより入力する。コマンドデコーダCmdDecは、リフレッシュ命令REFを解読し、制御回路Cont LogicがリフレッシュカウンタRefCへリフレッシュ動作を行うように指示する。リフレッシュカウンタRefCは制御回路Cont Logicの指示により、リフレッシュ動作を行う。
つぎに、セルフリフレッシュ動作について説明する。メモリ回路MemVLへのリクエストが長期間生じないときは、セルフリフレッシュ状態へ動作モードを切り替え、メモリ回路MemVL自らがリフレッシュ動作を行うことができる。
リクエストキューRqQXIへ格納されているセルフリフレッシュ・エントリ命令SREFが、コマンド信号Commandより入力する。コマンドデコーダCmdDecは、セルフリフレッシュ・エントリ命令SREFを解読し、制御回路Cont Logicは全回路をセルフリフレッシュ状態へ動作モードを切り替える。さらに、リフレッシュカウンタRefCへ、自動的に、定期的にセルフリフレッシュ動作を行うように指示する。リフレッシュカウンタRefCは制御回路Cont Logicの指示により、自動的に、定期的にセルフリフレッシュ動作を行う。
この際のセルフリフレッシュ動作では、温度によってセルフリフレッシュの頻度を変化させることができる。
一般的に、揮発性メモリでは、温度が高い場合はデータ保持時間が短くなり、低い場合は長くなるという性質がある。そこで、温度計で温度を検知し、温度が高い場合が、セルフリフレッシュの周期を短くし、温度が低い場合はセルフリフレシュの周期を長くし、セルフリフレッシュ動作を行う。これによって、無駄なセルフリフレシュ動作を削減でき低電力化が図れる。
セルフリフレッシュ状態を抜け出すには、セルフリフレッシュ・解除命令SREFXを、コマンド信号Commandより入力することで実現できる。セルフリフレッシュ状態を抜け出した後の、データ保持動作はリフレッシュ命令REFによって行われる。
<メモリチップM1の説明>
図18は、メモリチップM1の構成図の一例である。
メモリチップM1は、リクエストインターフェース回路ReqIFと、レスポンスインターフェース回路ResIFと、初期化回路INIT、メモリ回路MemNV1から構成されている。リクエストインターフェース回路ReqIFはリクエストクロック制御回路RqCkCおよび、リクエストキュー制御回路RqCTから構成される。リクエストクロック制御回路RqCkCはクロックドライバDrv1およびクロック分周回路Div1から構成される。
リクエストキュー制御回路RqCTはリクエストキュー回路RqQI、リクエストキュー回路RqQXI、リクエストキュー回路RqQXO、IDレジスタ回路IDR、ID比較回路CPQ、レイテンシ値出力設定レジスタ回路LRG、レスポンス順序設定レジスタ回路RRG、リクエスト番号設定回路RNBから構成される。
特に限定しないが、リクエストキュー回路RqQIは4つのリクエストキューから構成され、リクエストキュー回路RqQXIは4つのリクエストキューから構成され、リクエストキュー回路RqQXOは4つのリクエストキューから構成される。レスポンスインターフェース回路ResIFはレスポンスクロック制御回路RsCkCおよび、レスポンスキュー制御回路RsCTから構成される。レスポンスクロック制御回路RsCkCはクロックドライバDrv2およびクロック分周回路Div2から構成される。
レスポンスキュー制御回路RsCTは、レスポンスキュー回路RsQo、レスポンスキュー回路RsQp、ステータスレジスタ回路STReg、レスポンススケジュール回路SCH、レイテンシ計算回路LA、レスポンス番号テーブルTBから構成される。
特に限定しないが、レスポンスキュー回路RsQoは4つのレスポンスキューから構成され、スポンスキュー回路RsQpは4つのレスポンスキューから構成される。
レスポンスクロック制御回路RsCkCはクロックドライバDrv2およびクロック分周回路Div2から構成される。レスポンスキュー制御回路RsCTは、レスポンスキュー回路RsQo、レスポンスキュー回路RsQp、ステータスレジスタ回路STReg、レスポンススケジュール回路SCHから構成される。
メモリ回路MemNV1は、特に限定しないが、不揮発性メモリであり、NOR型フラッシュメモリセルを利用したNOR型フラッシュメモリである。メモリ回路MemNV1には、ブートデバイスID値BotIDおよび終端デバイスID値EndIが格納される。メモリ回路MemNV1および初期化回路INIT1以外の、メモリチップM1を構成する回路およびデータ読み出しやデータ書き込みなど動作は、図10のメモリチップM0と同等である。
本メモリチップM1の電源投入時の動作について説明する。メモリチップM1へ電源が投入されると初期化回路INIT1はメモリチップM1の初期化を行う。メモリチップM1は、ブートデバイス認識信号Bsigが接地gndされているので、自分自身がブートデバイスであることを認識し、自らのメモリ回路MemNV1が保持しているブートデバイスID値1をIDレジスタIDRへ設定し、ID有効ビットをHighにする。
次にレスポンススケジュール回路SCHが持つレスポンスキュー回路RsQoに入力するレスポンスの優先順位を1へ、レスポンスキュー回路RsQpに入力するメモリチップM2からのレスポンスの優先順位を2へ設定する。クロック分周回路Div1およびDiv2の分周比は1に設定される。初期化回路INIT1による初期設定が終了すると、メモリチップM1はメモリチップM1とメモリチップM2との間で通信できることを確認する通信確認動作を行う。メモリチップM1はリクエストイネーブル信号RqEn2がHighになったことを確認し、レスポンスイネーブル信号RsEn2及びリクエストイネーブル信号RqEn1をHighにする。
次に、メモリチップM0は、リクエストイネーブル信号RqEn1がHighになったことを確認し、レスポンスイネーブル信号RsEn1をHighにする。通信確認動作が終了すると、メモリ回路MemNV1よりブートデータが読み出され、メモリチップM0を介して、情報処理装置CPU_CHIPへ送信される。次に、メモリチップM1での、レスポンス優先順位の制御を説明する。
図19ではメモリチップM1が装備するレスポンススケジュール回路SCHが行う動的レスポンス優先順位の制御を示す。
図1に示すように、メモリチップM1へは、メモリチップM0のレスポンスは生じない接続構成になっている場合は、メモリチップM1のレスポンスおよびメモリチップM2のレスポンスについてのみレスポンスの優先順位が付けられる。電源投入直後の初期設定(Initial)にて、レスポンスキュー回路RsQoへエントリされるメモリ回路MemNV1からのレスポンスの優先順位(PRsQo(M1))は1、レスポンスキュー回路RsQpエントリされるメモリチップM2からのレスポンスの優先順位(PRsQp(M2))は2に設定される。特に限定しないが、レスポンスの順位の小さい方がレスポンスの順位が高いとする。
次に、レスポンスキュー回路RsQoへエントリしたメモリ回路MemNV1のレスポンス(RsQo(M1))がM1time回分出力すると、レスポンスキュー回路RsQoへエントリされるレスポンスの優先順位(PRsQo(M1))は最も低い2となり、メモリチップM2のレスポンスの優先順位(PRsQp(M2))は最も高い1となる。
次に、レスポンスキュー回路RsQpへエントリされるメモリチップM2からのレスポンスPRsQp(M2))が、L1time回分出力するとレスポンスキュー回路RsQpへエントリされるメモリチップM2からのレスポンスの優先順位(PRsQp(M2))は最も低い2となり、レスポンスキュー回路RsQoエントリされるレスポンスの優先順位(PrsQp(M1))は最も高い1となる。レスポンスキュー回路RsQoへエントリされるメモリ回路MemNV1からのレスポンスのレスポンス優先順位を変更するためのレスポンス出力回数M1time、レスポンスキュー回路RsQpへエントリされるメモリチップM2からのレスポンスのレスポンス優先順位を変更するためのレスポンス出力回数L1timeは、電源投入直後の初期設定(Initial)にて、特に限定しないが、それぞれ、10回、1回に設定される。さらに、レスポンス出力回数M1time、L1timeは、情報処理装置CPU_CHIPから設定可能であり、本発明が利用される携帯機器などのシステム構成にあわせて、高性能化が図れるように、それぞれを設定することができる。
また、メモリチップM1が装備するレスポンススケジュール回路SCHが行う動的レスポンス優先順位の制御は、図14で示した動作と同等である。また、リクエストクロック信号RqCk2およびレスポンスクロック信号RsCk1ののクロック制御方法は、図16で示したクロック制御方法と同様である。
<メモリ回路MemNV1>
図20は、メモリチップM0が装備するメモリ回路MemNV1の回路ブロック図の一例である。
メモリ回路MemNV1は、コマンドデコーダCmdDec、制御回路Cont Logic、ライトデータバッファWDataLat、リードデータバッファRDataLat、データ制御回路DataCont、およびメモリバンクNV1BANK0〜NV1BANK7から構成されている。
また、各メモリバンクNV1BANK0〜NV1BANK7はページアドレスバッファPadLat、カラムアドレスバッファCadLat、ページデコーダPageDec、カラムデコーダColDec、データバッファDataLat、メモリセル回路NV1BK0〜NV1BK7から構成されている。
メモリ回路MemNV1の読み出し動作を説明する。
リクエストキューRqQXIへバンクアドレス7、ロウアドレス5格納されており、バンクアクティブ命令BAがコマンド信号Commandから、バンクアドレス7およびページアドレス5が、アドレス信号Addressよりメモリ回路MemNV1へ送信される。コマンドデコーダCmdDecはバンクアクティブ命令BAを解読し、制御回路Cont LogicによってメモリバンクNV1BANK7が選択され、メモリバンクNV1BANK7のページアドレスバッファPadLatへページアドレス5が格納され、ページデコーダPageDecへ入力される。その後メモリセル回路NV1Bank7内のページアドレス5に接続されているメモリセルが活性化され、特に限定しないが1kByte分のデータがデータバッファDataLatへ転送される。
つぎに、リクエストキューRqQXIへ8バイトデータリード命令RD8、バンクアドレス7、カラムアドレス64が格納されており、8バイトデータリード命令RD8がコマンド信号Commandから、バンクアドレス7およびカラムアドレス63が、アドレス信号Addressよりメモリ回路MemNV1へ送信される。
コマンドデコーダCmdDecは8バイトデータリード命令RD8を解読し、制御回路Cont LogicによってメモリバンクNV1BANK7が選択され、メモリバンクNV1BANK7のカラムアドレスバッファCAddLatへカラムアドレス63を格納され、カラムデコーダColDecへ入力される。
その後、カラムアドレス64を開始アドレスとして、8バイト分のデータが、データバッファDataLatから読み出され、データ制御回路DataContを介してリードデータバッファRDataLatへ転送され格納される。その後読み出された8バイト分のデータはレスポンスキュー回路RsQoへ転送される。
次に、メモリ回路MemNV1の書込み動作を説明する。リクエストキューRqQXIへ8バイトデータライト命令WT8、バンクアドレス7、カラムアドレス128が格納されており、8バイトデータライト命令RD8がコマンド信号Commandから、バンクアドレス7およびカラムアドレス127が、アドレス信号Addressより、8バイトデータがライトデータ信号WDataよりメモリ回路MemNV1へ送信される。
コマンドデコーダCmdDecは8バイトデータライト命令WT8を解読し、制御回路Cont LogicによってメモリバンクNV1BANK7が選択され、メモリバンクNV1BANK7のカラムアドレスバッファCAddLatへカラムアドレス128が格納され、カラムデコーダColDecへ入力される。
また、御回路Cont Logicによって8バイト分のライトデータはライトデータバッファWData Latへ格納される。
その後カラムアドレス128を開始アドレスとして、8バイト分のデータが、ライトデータバッファWData Latから、データ制御回路DataContを介して、メモリバンクNV1BANK7内のデータバッファDataLatへ転送され、メモリセル回路NV1BK7へ書き込まれる。
各メモリバンクNV1BANK0〜NV1BANK7は独立に動作するため、異なるバンク間では、読み出し動作と書き込み動作を同時に実行でき、高速化を図ることができる。
<メモリチップM2の説明>
図21は、メモリチップM2の構成図の一例である。
メモリチップM2は、リクエストインターフェース回路ReqIFと、レスポンスインターフェース回路ResIFと、初期化回路INIT、メモリ回路MemNV1から構成されている。リクエストインターフェース回路ReqIFはリクエストクロック制御回路RqCkCおよび、リクエストキュー制御回路RqCTから構成される。リクエストクロック制御回路RqCkCはクロックドライバDrv1およびクロック分周回路Div1から構成される。
リクエストキュー制御回路RqCTはリクエストキュー回路RqQI、リクエストキュー回路RqQXI、リクエストキュー回路RqQXO、IDレジスタ回路IDR、ID比較回路CPQ、レイテンシ値出力設定レジスタ回路LRG、レスポンス順序設定レジスタ回路RRG、リクエスト番号設定回路RNBから構成される。
特に限定しないが、リクエストキュー回路RqQIは4つのリクエストキューから構成され、リクエストキュー回路RqQXIは4つのリクエストキューから構成され、リクエストキュー回路RqQXOは4つのリクエストキューから構成される。レスポンスインターフェース回路ResIFはレスポンスクロック制御回路RsCkCおよび、レスポンスキュー制御回路RsCTから構成される。レスポンスクロック制御回路RsCkCはクロックドライバDrv2およびクロック分周回路Div2から構成される。
レスポンスキュー制御回路RsCTは、レスポンスキュー回路RsQo、レスポンスキュー回路RsQp、ステータスレジスタ回路STReg、レスポンススケジュール回路SCH、レイテンシ計算回路LA、レスポンス番号テーブルTBから構成される。
特に限定しないが、レスポンスキュー回路RsQoは4つのレスポンスキューから構成され、スポンスキュー回路RsQpは4つのレスポンスキューから構成される。
レスポンスクロック制御回路RsCkCはクロックドライバDrv2およびクロック分周回路Div2から構成される。レスポンスキュー制御回路RsCTは、レスポンスキュー回路RsQo、レスポンスキュー回路RsQp、ステータスレジスタ回路STReg、レスポンススケジュール回路SCHから構成される。
メモリ回路MemNV2は、特に限定しないが、不揮発性メモリであり、NAND型フラッシュメモリセルを利用したNAND型フラッシュメモリである。メモリ回路MemNV2および初期化回路INIT2以外の、メモリチップM2を構成する回路およびデータ読み出しやデータ書き込みなど動作は図10のメモリチップM0と同等である。
本メモリチップM2の電源投入時の動作について説明する。メモリチップM2へ電源が投入されると初期化回路INIT2はメモリチップM2の初期化を行う。先ず、IDレジスタ回路IDRの持つIDレジスタの値を0へ、ID有効ビットをLowへ初期設定する。次にレスポンススケジュール回路SCHが持つレスポンスキュー回路RsQoへ入力するレスポンスの優先順位を1へ設定する。クロック分周回路Div1およびDiv2の分周比は1に設定される。初期化回路INIT2による初期設定が終了すると、メモリチップM2はメモリチップM1との間で通信できることを確認する通信確認動作を行う。メモリチップM2は、RqEn3、RsMux3、RqCk3を接地(gnd)していることによって、直列接続しているメモリチップの最も終端のメモリチップであることを認識し、リクエストイネーブル信号RqEn2をHighにする。
次に、メモリチップM1はリクエストイネーブル信号RqEn2がHighになったことを確認し、レスポンスイネーブル信号RsEn2及びリクエストイネーブル信号RqEn1をHighにする。次に、メモリチップM2での、レスポンス優先順位の制御を説明する。
図22ではメモリチップM2が装備するレスポンススケジュール回路SCHが行う動的レスポンス優先順位の制御を示す。図1に示すように、メモリチップM2が直列接続の最終チップである場合は、メモリチップM2へはメモリチップM0およびメモリチップM1のレスポンスは生じない。
そのため、メモリチップM2のレスポンスについてのみレスポンスの優先順位が付けられる。したがって、電源投入直後の初期設定(Initial)にて、レスポンスキュー回路RsQOへエントリされるメモリチップM2のレスポンスの優先順位(PRsQO(M2))は1に設定された後は、変化しない。レスポンスキュー回路RsQoへエントリされるメモリ回路NV2のレスポンスの優先順位(PRsQO(M2))を変更することが無いため、レスポンスキュー回路RsQoへエントリされるメモリチップM2からのレスポンスのレスポンス優先順位を変更するためのレスポンス出力回数は、電源投入直後の初期設定(Initial)にて、特に限定しないが、0回に設定され、変更する必要がない。また、レスポンスクロック信号RsCk2のクロック制御方法は、図16で示したクロック制御方法と同様である。
<メモリ回路MemNV2>
図23は、メモリチップM0が装備するメモリ回路MemNV2の回路ブロック図の一例である。
メモリ回路MemNV1は、コマンドデコーダCmdDec、制御回路Cont Logic、ライトデータバッファWDataLat、リードデータバッファRDataLat、データ制御回路DataCont、およびメモリバンクNV1BANK0〜NV1BANK7から構成されている。
また、各メモリバンクNV1BANK0〜NV1BANK7はページアドレスバッファPadLat、カラムアドレスバッファCadLat、ページデコーダPageDec、カラムデコーダColDec、データバッファDataLat、メモリセル回路NV1BK0〜NV1BK7から構成されている。
メモリ回路MemNV1の読み出し動作を説明する。
リクエストキューRqQXIへバンクアドレス7、ページアドレス5格納されており、バンクアクティブ命令BAがコマンド信号Commandから、バンクアドレス7およびページアドレス5が、アドレス信号Addressよりメモリ回路MemNV2へ送信される。コマンドデコーダCmdDecはバンクアクティブ命令BAを解読し、制御回路Cont LogicによってメモリバンクNV2BK7が選択され、メモリバンクNV1BANK7のページアドレスバッファPadLatへページアドレス5が格納され、ページデコーダPageDecへ入力される。その後メモリセル回路NV2BK7内のページアドレス5に接続されているメモリセルが活性化され、特に限定しないが2kByte分のデータがデータバッファDataLatへ転送される。
つぎに、リクエストキューRqQXIへ32バイトデータリード命令RD32、バンクアドレス7、カラムアドレス64が格納されており、32バイトデータリード命令RD32がコマンド信号Commandから、バンクアドレス7およびカラムアドレス64が、アドレス信号Addressよりメモリ回路MemNV2へ送信される。
コマンドデコーダCmdDecは32バイトデータリード命令RD32を解読し、制御回路Cont LogicによってメモリバンクNV1BANK7が選択され、メモリバンクNV1BANK7のカラムアドレスバッファCAddLatへカラムアドレス64を格納され、カラムデコーダColDecへ入力される。
その後、カラムアドレス64を開始アドレスとして、32バイト分のデータが、データバッファDataLatから読み出され、データ制御回路DataContを介してリードデータバッファRDataLatへ転送され格納される。その後読み出された32バイト分のデータはレスポンスキュー回路RsQoへ転送される。
次に、メモリ回路MemNV2の書込み動作を説明する。リクエストキューRqQXIへ8バイトデータライト命令WT32、バンクアドレス7、カラムアドレス128が格納されており、32バイトデータライト命令RD32がコマンド信号Commandから、バンクアドレス7およびカラムアドレス127が、アドレス信号Addressより、32バイトデータがライトデータ信号WDataよりメモリ回路MemNV2へ送信される。
コマンドデコーダCmdDecは32バイトデータライト命令WT32を解読し、制御回路Cont LogicによってメモリバンクNV2BANK7が選択され、メモリバンクNV2BANK7のカラムアドレスバッファCAddLatへカラムアドレス128が格納され、カラムデコーダColDecへ入力される。
また、御回路Cont Logicによって32バイト分のライトデータはライトデータバッファWData Latへ格納される。
その後カラムアドレス128を開始アドレスとして、32バイト分のデータが、ライトデータバッファWData Latから、データ制御回路DataContを介して、メモリバンクNV2BANK7内のデータバッファDataLatへ転送され、メモリセル回路NV2BK7へ書き込まれる。
各メモリバンクNV2BANK0〜NV2BANK7は独立に動作するため、異なるバンク間では、読み出し動作と書き込み動作を同時に実行でき、高速化を図ることができる。
図24は、情報処理装置CPU_CHIPからメモリモジュールMEMへ送信されたリクエストに含まれるID値がメモリチップM0、M1およびM2のIDレジスタ値のいずれにも一致せず、エラーが発生した場合の動作の一例を示すフローチャートである。情報処理装置CPU_CHIPからリクエストとID値がメモリモジュールMEMへ送信される(Step1)。リクエストイネーブル信号RqEn0がLowであれば(Step2)、情報処理装置CPU_CHIPからのリクエストはメモリチップM0のリクエストキュー回路RqQIへ格納されない。リクエストイネーブル信号RqEn0がHighであれば(Step2)、メモリチップM0の、リクエストキュー回路RqQIへ格納される(Step3)。
その後、ID比較回路CPQは、リクエストキュー回路RqQIへエントリされたリクエストに含まれるID値とIDレジスタ回路IDRに保持されているID値を比較する(Step4)。比較結果が一致すれば、リクエストキュー回路RqQIへエントリされたリクエストはリクエストキュー回路RqQXIへ転送される(Step5)。比較結果が不一致の場合は、メモリチップM0が最終端のメモリチップかどうかをチェックする(Step6)。モリチップM0が最終端のデバイスではないので、リクエストキュー回路RqQIへエントリされたリクエストはリクエストキュー回路RqQXOへ転送され、さらに、次のメモリチップM1へ転送される(Step9)。メモリチップM1では、Step1からStep9を繰り返す。メモリチップM2では、Step1からStep4を行う。Step4での比較結果が一致すれば、リクエストキュー回路RqQIへエントリされたリクエストはリクエストキュー回路RqQXIへ転送される(Step5)。比較結果が不一致の場合は、メモリチップM0が最終端のメモリチップかどうかをチェックする(Step6)。
メモリチップM2は最終端のメモリチップであるため、情報処理装置CPU_CHIPからメモリモジュールMEMへ送信されたリクエストに含まれるID値がメモリチップM0、M1およびM2のIDレジスタ値のいずれにも一致せず、IDエラーとなる(Step7)。IDエラーは、最終端のメモリチップM2からメモリチップM1およびM2と経由して情報処理装置CPU_CHIPへ送信される。
次に、メモリモジュールMEMへ入力するリクエストの動作波形について説明する。図25および図26は、情報処理装置CPU_CHIPが、メモリモジュールMEMへ送信するリクエストの動作波形およびメモリモジュールMEMから情報処理装置CPU_CHIPへのレスポンスの動作波形の一例である。
図25(a)は、メモリチップM0へのバンクアクティブ命令BAを含むバンクアクティブリクエストの一例である。特に限定しないが、バンクアクティブリクエストは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、メモリチップM0のID2、バンクアクティブ命令BA、アドレスAD20およびAD21が多重化されメモリチップM0へ入力される。アドレスAD20およびAD21には、バンクアドレスおよびロウアドレスが含まれる。本バンクアクティブリクエストによって、メモリチップM0内のメモリバンクの1つが活性化される。
図25(b)は、メモリチップM0への4バイトデータリード命令RD4を含むリードリクエストの一例である。特に限定しないが、リードリクエストは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、メモリチップM0のID2、リード命令RD4、アドレスAD22およびAD22が多重化されメモリチップM0へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本リードリクエストによって、メモリチップM0内の活性化されているメモリバンクからデータが読み出される。
図25(c)は、メモリチップM0からのレスポンスのレイテンシ値を送信するレイテンシレスポンスの一例である。特に限定しないがレイテンシレスポンスには、メモリチップM0のID値ID2、レイテンシ送信フラグLF、レイテンシ値Latが含まれる。
レイテンシレスポンスはレスポンスイネーブル信号RsEN0がHighの際に、レスポンスクロック信号RsCk0の立ち上がりおよび立ち下がりに同期して、情報処理装置CPU_CHIPへ入力される。
図25(d)は、メモリチップM0のID値およびメモリチップM0から読み出されたデータを含むリードレスポンスである。特に限定しないが、リードレスポンスは、レスポンスイネーブル信号RsEN0がHighの際に、レスポンスクロック信号RsCk0の立ち上がりおよび立ち下がりに同期して、メモリチップM0のID値ID2、4バイト分のデータD0、D1、D2およびD3が多重化され、情報処理装置CPU_CHIPへ入力される。
図26(a)は、メモリチップM0へのバンクアクティブ命令BAを含むバンクアクティブリクエストの別一例である。特に限定しないが、バンクアクティブリクエストは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、メモリチップM0のID値ID2、リクエスト番号RqN1、バンクアクティブ命令BA、アドレスAD20およびAD21が多重化されメモリチップM0へ入力される。アドレスAD20およびAD21には、バンクアドレスおよびロウアドレスが含まれる。本バンクアクティブリクエストによって、メモリチップM0内のメモリバンクの1つが活性化される。
図26(b)は、メモリチップM0への4バイトデータリード命令RD4を含むリードリクエストの別一例である。特に限定しないが、リードリクエストは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、メモリチップM0のID2、リクエスト番号RqN2、リード命令RD4、アドレスAD22およびAD22が多重化されメモリチップM0へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本リードリクエストによって、メモリチップM0内の活性化されているメモリバンクからデータが読み出される。
図26(c)は、メモリチップM0からのレスポンスのレイテンシ値を送信するレイテンシレスポンスの別の一例である。特に限定しないがレイテンシレスポンスには、リクエスト番号RqN2、レイテンシ送信フラグLF、レイテンシ値Latが含まれる。
レイテンシレスポンスはレスポンスイネーブル信号RsEN0がHighの際に、レスポンスクロック信号RsCk0の立ち上がりおよび立ち下がりに同期して、情報処理装置CPU_CHIPへ入力される。
図26(d)は、メモリチップM0から読み出されたデータを含むリードレスポンスの別の一例である。特に限定しないが、リードレスポンスは、レスポンスイネーブル信号RsEN0がHighの際に、レスポンスクロック信号RsCk0の立ち上がりおよび立ち下がりに同期して、リクエスト番号RqN2、4バイト分のデータD0、D1、D2およびD3が多重化され、情報処理装置CPU_CHIPへ入力される。
図27(a)は、メモリチップM0への1 バイトデータの書込み命令WT2を含むライトリクエストの一例である。特に限定しないが、ライトリクエストは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、メモリチップM0のID2、ライト命令WT1、アドレスAD24およびAD25が多重化されメモリチップM0へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本ライトリクエストによって、メモリチップM0へデータが書き込まれる。
図27(b)は、メモリチップM0への1 バイトデータの書込み命令WT2を含むライトリクエストの別の一例である。特に限定しないが、ライトリクエストは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、メモリチップM0のID値ID2、リクエスト番号RqN3、ライト命令WT1、アドレスAD24およびAD25が多重化されメモリチップM0へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本ライトリクエストによって、メモリチップM0へデータが書き込まれる。
図28(a)は、メモリチップM0へのリクエストキューおよびレスポンスキューを予約するためのキュー予約リクエストReqNQRvの一例である。
特に限定しないが、キュー予約リクエストReqNQRvは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、ID値ID2、キュー予約命令QRv、予約するキューの数QRvN値を多重化したリクエストReqNQRvがメモリチップM0へ転送される。このリクエストによって、メモリチップM0のリクエストキューおよびレスポンスキューがそれぞれQRvN値で指定された数分だけ予約される。
図28(b)は、メモリチップM0へのキューの予約が完了したことを知らせる予約完了レスポンスである。
特に限定しないが、予約完了レスポンスは、レスポンスイネーブル信号RsEN0がHighの際に、レスポンスクロック信号RsCk0の立ち上がりおよび立ち下がりに同期して、ID値ID2、予約完了信号RvFlgを多重化した予約完了レスポンスが情報処理装置CPU_CHIPへ入力される。情報処理装置CPU_CHIPは予約完了レスポンスを受け取ることで、キューの予約が完了したことを確認できる。
図28(c)は、メモリチップM0へのリクエストキューおよびレスポンスキューを予約するためのキュー予約リクエストReqNQRvの別の一例である。
特に限定しないが、キュー予約リクエストReqNQRvは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk0に同期して、ID値ID2、リクエスト番号RqN5、キュー予約命令QRv、予約するキューの数QRvN値を多重化したリクエストReqNQRvがメモリチップM0へ転送される。このリクエストによって、メモリチップM0のリクエストキューおよびレスポンスキューがそれぞれQRvN値で指定された数分だけ予約される。
図28(d)は、メモリチップM0へのキューの予約が完了したことを知らせる予約完了レスポンスである。
特に限定しないが、予約完了レスポンスは、レスポンスイネーブル信号RsEN0がHighの際に、レスポンスクロック信号RsCk0の立ち上がりおよび立ち下がりに同期して、レスポンス番号RsN5、予約完了信号RvFlgを多重化した予約完了レスポンスが情報処理装置CPU_CHIPへ入力される。情報処理装置CPU_CHIPは予約完了レスポンスを受け取ることで、キューの予約が完了したことを確認できる。
図29(a)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力するバンクアクティブ命令BAを含むバンクアクティブリクエストの一例である。特に限定しないが、バンクアクティブリクエストは、リクエストイネーブル信号RqEN1がHighの際に、リクエストクロック信号RqCk0に同期して、メモリチップM0のID値ID1、バンクアクティブ命令BA、アドレスAD20およびAD21が多重化されメモリチップM1へ入力される。アドレスAD20およびAD21には、バンクアドレスおよびページアドレスが含まれる。本バンクアクティブリクエストによって、メモリチップM1内のメモリバンクの1つが活性化される。
図29(b)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力する4バイトデータリード命令RD4を含むリードリクエストの一例である。特に限定しないが、リードリクエストは、リクエストイネーブル信号RqEN1がHighの際に、リクエストクロック信号RqCk1に同期して、メモリチップM0のID値ID1、リード命令RD4、アドレスAD22およびAD22が多重化されメモリチップM1へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本リードリクエストによって、メモリチップM1内の活性化されているメモリバンクからデータが読み出される。
図29(c)は、メモリチップM1からのレスポンスのレイテンシ値を送信するレイテンシレスポンスの一例である。特に限定しないがレイテンシレスポンスには、メモリチップM1のID値ID1、レイテンシ送信フラグLF、レイテンシ値Latが含まれる。
レイテンシレスポンスはレスポンスイネーブル信号RsEN1がHighの際に、レスポンスクロック信号RsCk1の立ち上がりおよび立ち下がりに同期して、メモリチップM0へ送信され、さらに、情報処理装置CPU_CHIPへ送信される。
図29(d)は、メモリチップM1のID値およびメモリチップM1から読み出されたデータを含むリードレスポンスである。特に限定しないが、リードレスポンスは、レスポンスイネーブル信号RsEN1がHighの際に、レスポンスクロック信号RsCk1の立ち上がりおよび立ち下がりに同期して、メモリチップM1のID値ID1、4バイト分のデータD0、D1、D2およびD3が多重化され、メモリチップM0へ送信され、さらに、情報処理装置CPU_CHIPへ送信される。
図30(a)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力するバンクアクティブ命令BAを含むバンクアクティブリクエストの別一例である。特に限定しないが、バンクアクティブリクエストは、リクエストイネーブル信号RqEN1がHighの際に、リクエストクロック信号RqCk1に同期して、メモリチップM1のID値ID1、リクエスト番号RqN1、バンクアクティブ命令BA、アドレスAD20およびAD21が多重化されメモリチップM1へ入力される。アドレスAD20およびAD21には、バンクアドレスおよびロウアドレスが含まれる。本バンクアクティブリクエストによって、メモリチップM1内のメモリバンクの1つが活性化される。
図30(b)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力する4バイトデータリード命令RD4を含むリードリクエストの別一例である。特に限定しないが、リードリクエストは、リクエストイネーブル信号RqEN1がHighの際に、リクエストクロック信号RqCk1に同期して、メモリチップM1のID値ID1、リクエスト番号RqN2、リード命令RD4、アドレスAD22およびAD22が多重化されメモリチップM1へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本リードリクエストによって、メモリチップM1内の活性化されているメモリバンクからデータが読み出される。
図30(c)は、メモリチップM1からのレスポンスのレイテンシ値を送信するレイテンシレスポンスの別の一例である。特に限定しないがレイテンシレスポンスには、リクエスト番号RqN2、レイテンシ送信フラグLF、レイテンシ値Latが含まれる。
レイテンシレスポンスはレスポンスイネーブル信号RsEN1がHighの際に、レスポンスクロック信号RsCk1の立ち上がりおよび立ち下がりに同期して、メモリチップM0へ送信され、さらに、情報処理装置CPU_CHIPへ送信される。
図30(d)は、メモリチップM1から読み出されたデータを含むリードレスポンスの別の一例である。特に限定しないが、リードレスポンスは、レスポンスイネーブル信号RsEN1がHighの際に、レスポンスクロック信号RsCk1の立ち上がりおよび立ち下がりに同期して、リクエスト番号RqN2、4バイト分のデータD0、D1、D2およびD3が多重化され、メモリチップM0へ送信され、さらに、情報処理装置CPU_CHIPへ送信される。
図31(a)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力する1 バイトデータの書込み命令WT2を含むライトリクエストの一例である。特に限定しないが、ライトリクエストは、リクエストイネーブル信号RqEN1がHighの際に、リクエストクロック信号RqCk1に同期して、メモリチップM1のID値ID1、ライト命令WT1、アドレスAD24およびAD25が多重化されメモリチップM1へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本ライトリクエストによって、メモリチップM1へデータが書き込まれる。
図31(b)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力する1 バイトデータの書込み命令WT2を含むライトリクエストの別の一例である。特に限定しないが、ライトリクエストは、リクエストイネーブル信号RqEN1がHighの際に、リクエストクロック信号RqCk1に同期して、メモリチップM1のID値ID1、リクエスト番号RqN3、ライト命令WT1、アドレスAD24およびAD25が多重化されメモリチップM1へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本ライトリクエストによって、メモリチップM1へデータが書き込まれる。
図32(a)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力するリクエストキューおよびレスポンスキューを予約するためのキュー予約リクエストReqNQRvの一例である。
特に限定しないが、キュー予約リクエストReqNQRvは、リクエストイネーブル信号RqEN1がHighの際に、リクエストクロック信号RqCk1に同期して、ID値ID1、キュー予約命令QRv、予約するキューの数QRvN値を多重化したリクエストReqNQRvがメモリチップM0へ転送される。このリクエストによって、メモリチップM1のリクエストキューおよびレスポンスキューがそれぞれQRvN値で指定された数分だけ予約される。
図32(b)は、メモリチップM1のキューの予約が完了したことを知らせる予約完了レスポンスである。特に限定しないが、予約完了レスポンスは、レスポンスイネーブル信号RsEN1がHighの際に、レスポンスクロック信号RsCk1の立ち上がりおよび立ち下がりに同期して、ID値ID1、予約完了信号RvFlgを多重化した予約完了レスポンスがメモリチップM0へ送信され、さらに、情報処理装置CPU_CHIPへ送信される。情報処理装置CPU_CHIPは予約完了レスポンスを受け取ることで、キューの予約が完了したことを確認できる。
図32(c)は、情報処理装置CPU_CHIPからメモリチップM0を介してメモリチップM1へ入力するリクエストキューおよびレスポンスキューを予約するためのキュー予約リクエストReqNQRvの別の一例である。
特に限定しないが、キュー予約リクエストReqNQRvは、リクエストイネーブル信号RqEN0がHighの際に、リクエストクロック信号RqCk1に同期して、ID値ID1、リクエスト番号RqN5、キュー予約命令QRv、予約するキューの数QRvN値を多重化したリクエストReqNQRvがメモリチップM1へ転送される。このリクエストによって、メモリチップM1のリクエストキューおよびレスポンスキューがそれぞれQRvN値で指定された数分だけ予約される。
図32(d)は、メモリチップM1へのキューの予約が完了したことを知らせる予約完了レスポンスである。
特に限定しないが、予約完了レスポンスは、レスポンスイネーブル信号RsEN1がHighの際に、レスポンスクロック信号RsCk1の立ち上がりおよび立ち下がりに同期して、レスポンス番号RsN5、予約完了信号RvFlgを多重化した予約完了レスポンスがモリチップM0へ送信され、さらに、情報処理装置CPU_CHIPへ送信される。情報処理装置CPU_CHIPは予約完了レスポンスを受け取ることで、キューの予約が完了したことを確認できる。
図33(a)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力するバンクアクティブ命令BAを含むバンクアクティブリクエストの一例である。特に限定しないが、バンクアクティブリクエストは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk2に同期して、メモリチップM2のID値ID3、バンクアクティブ命令BA、アドレスAD20およびAD21が多重化されメモリチップM1へ入力される。アドレスAD20およびAD21には、バンクアドレスおよびページアドレスが含まれる。本バンクアクティブリクエストによって、メモリチップM3内のメモリバンクの1つが活性化される。
図33(b)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力する4バイトデータリード命令RD4を含むリードリクエストの一例である。特に限定しないが、リードリクエストは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk2に同期して、メモリチップM2のID値ID3、リード命令RD4、アドレスAD22およびAD22が多重化されメモリチップM2へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本リードリクエストによって、メモリチップM3内の活性化されているメモリバンクからデータが読み出される。
図33(c)は、メモリチップM2からのレスポンスのレイテンシ値を送信するレイテンシレスポンスの一例である。特に限定しないがレイテンシレスポンスには、メモリチップM2のID値ID3、レイテンシ送信フラグLF、レイテンシ値Latが含まれる。
レイテンシレスポンスはレスポンスイネーブル信号RsEN2がHighの際に、レスポンスクロック信号RsCk2の立ち上がりおよび立ち下がりに同期して、メモリチップM1へ送信され、さらに、メモリチップM0を介して情報処理装置CPU_CHIPへ送信される。
図33(d)は、メモリチップM2のID値およびメモリチップM2から読み出されたデータを含むリードレスポンスである。特に限定しないが、リードレスポンスは、レスポンスイネーブル信号RsEN2がHighの際に、レスポンスクロック信号RsCk2の立ち上がりおよび立ち下がりに同期して、メモリチップM2のID値ID3、4バイト分のデータD0、D1、D2およびD3が多重化され、メモリチップM1へ送信され、さらに、メモリチップM0を介して情報処理装置CPU_CHIPへ送信される。
図34(a)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力するバンクアクティブ命令BAを含むバンクアクティブリクエストの別一例である。特に限定しないが、バンクアクティブリクエストは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk2に同期して、メモリチップM2のID値ID1、リクエスト番号RqN1、バンクアクティブ命令BA、アドレスAD20およびAD21が多重化されメモリチップM2へ入力される。アドレスAD20およびAD21には、バンクアドレスおよびロウアドレスが含まれる。本バンクアクティブリクエストによって、メモリチップM2内のメモリバンクの1つが活性化される。
図34(b)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力する4バイトデータリード命令RD4を含むリードリクエストの別一例である。特に限定しないが、リードリクエストは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk2に同期して、メモリチップM2のID値ID3、リクエスト番号RqN2、リード命令RD4、アドレスAD22およびAD22が多重化されメモリチップM2へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本リードリクエストによって、メモリチップM2内の活性化されているメモリバンクからデータが読み出される。
図34(c)は、メモリチップM2 からのレスポンスのレイテンシ値を送信するレイテンシレスポンスの別の一例である。特に限定しないがレイテンシレスポンスには、リクエスト番号RqN2、レイテンシ送信フラグLF、レイテンシ値Latが含まれる。
レイテンシレスポンスはレスポンスイネーブル信号RsEN1がHighの際に、レスポンスクロック信号RsCk2の立ち上がりおよび立ち下がりに同期して、メモリチップM1へ送信され、さらに、メモリチップM0を介して情報処理装置CPU_CHIPへ送信される。
図34(d)は、メモリチップM2から読み出されたデータを含むリードレスポンスの別の一例である。特に限定しないが、リードレスポンスは、レスポンスイネーブル信号RsEN2がHighの際に、レスポンスクロック信号RsCk2の立ち上がりおよび立ち下がりに同期して、リクエスト番号RqN2、4バイト分のデータD0、D1、D2およびD3が多重化され、メモリチップM1へ送信され、さらに、メモリチップM0を介して情報処理装置CPU_CHIPへ送信される。
図35(a)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力する1 バイトデータの書込み命令WT2を含むライトリクエストの一例である。特に限定しないが、ライトリクエストは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk2に同期して、メモリチップM1のID値ID3、ライト命令WT1、アドレスAD24およびAD25が多重化されメモリチップM1へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本ライトリクエストによって、メモリチップM2へデータが書き込まれる。
図35(b)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力する1 バイトデータの書込み命令WT2を含むライトリクエストの別の一例である。特に限定しないが、ライトリクエストは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk2に同期して、メモリチップM2のID値ID3、リクエスト番号RqN3、ライト命令WT1、アドレスAD24およびAD25が多重化されメモリチップM1へ入力される。アドレスAD22およびAD23には、バンクアドレスおよびカラムアドレスが含まれる。本ライトリクエストによって、メモリチップM2へデータが書き込まれる。
図36(a)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力するリクエストキューおよびレスポンスキューを予約するためのキュー予約リクエストReqNQRvの一例である。
特に限定しないが、キュー予約リクエストReqNQRvは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk2に同期して、ID値ID3、キュー予約命令QRv、予約するキューの数QRvN値を多重化したリクエストReqNQRvがメモリチップM0へ転送される。このリクエストによって、メモリチップM2のリクエストキューおよびレスポンスキューがそれぞれQRvN値で指定された数分だけ予約される。
図36(b)は、メモリチップM2のキューの予約が完了したことを知らせる予約完了レスポンスである。特に限定しないが、予約完了レスポンスは、レスポンスイネーブル信号RsEN2がHighの際に、レスポンスクロック信号RsCk1の立ち上がりおよび立ち下がりに同期して、ID値ID3、予約完了信号RvFlgを多重化した予約完了レスポンスがメモリチップM1へ送信され、さらに、メモリチップM0を介して情報処理装置CPU_CHIPへ送信される。情報処理装置CPU_CHIPは予約完了レスポンスを受け取ることで、キューの予約が完了したことを確認できる。
図36(c)は、情報処理装置CPU_CHIPからメモリチップM0およびメモリチップM1を介してメモリチップM2へ入力するリクエストキューおよびレスポンスキューを予約するためのキュー予約リクエストReqNQRvの別の一例である。
特に限定しないが、キュー予約リクエストReqNQRvは、リクエストイネーブル信号RqEN2がHighの際に、リクエストクロック信号RqCk1に同期して、ID値ID3、リクエスト番号RqN5、キュー予約命令QRv、予約するキューの数QRvN値を多重化したリクエストReqNQRvがメモリチップM2へ転送される。このリクエストによって、メモリチップM2のリクエストキューおよびレスポンスキューがそれぞれQRvN値で指定された数分だけ予約される。
図36(d)は、メモリチップM2へのキューの予約が完了したことを知らせる予約完了レスポンスである。
特に限定しないが、予約完了レスポンスは、レスポンスイネーブル信号RsEN2がHighの際に、レスポンスクロック信号RsCk2の立ち上がりおよび立ち下がりに同期して、レスポンス番号RsN5、予約完了信号RvFlgを多重化した予約完了レスポンスがモリチップM2へ送信され、さらに、メモリチップM0を介して情報処理装置CPU_CHIPへ送信される。情報処理装置CPU_CHIPは予約完了レスポンスを受け取ることで、キューの予約が完了したことを確認できる。
上記は、バンクアクティブ命令、リード命令、ライト命令、キュー予約命令などの情報を含むリクエストおよび、読み出しデータ、レイテンシ値などの情報を含むレスポンスの動作について説明したが、これら以外の情報を含むリクエストやレスポンスについても同様の動作を行うことは言うまでもない。
図37は情報処理装置CPU_CHIPからメモリチップM1へ読み出しリクエストが生じ、連続して、メモリチップM0へ読み出しリクエストが生じた場合のデータ転送波形を示す。
情報処理装置CPU_CHIPは、リクエスト信号RqMux0を通じて、ID値1、2バイトデータ読み出し命令NRD2およびアドレスAD0、AD1を多重化したリクエストReqNRD2をメモリチップM0へ転送する。
続いて、リクエスト信号RqMux0を通じて、ID値2、2バイトデータ読み出し命令RD2、アドレスAD0、AD1を多重化したリクエストReqRD2をメモリチップM0へ転送する。
メモリチップM0のリクエストキューRqQIへリクエストReqNRD2およびリクエストReqRD2が入力される。
リクエストReqNRD2はメモリチップM1へのリクエストのため、メモリチップM0のリクエストキューRqQXOへ転送される。また、リクエストReqNRD2はリクエスト信号RqMux1を通じてメモリチップM1へ転送される。
リクエストReqNRD2はメモリチップM1のリクエストキューRqQIへ入力され、次にリクエストキューRqQXIへ転送される。リクエストReqNRD2に対応するデータがメモリチップM1のメモリ回路MemNV1から読み出され、IDレジスタ値1も含めて、レスポンスRsNRD2としてレスポンスキューRsQoへ入力される。
レスポンスキューRsQoへ入力されたレスポンスRsNRD2は、レスポンス信号RqMux1を通じて転送され、メモリチップM0のレスポンスキューRsQpへ格納される。レスポンスキューRsQpへ格納されたレスポンスRsNRD2は、レスポンス信号ResMux0を通じて、ID値1と読み出しデータとして出力される。
リクエストReqRD2はメモリチップM0へのリクエストのため、メモリチップM0のリクエストキューRqQXIへ転送される。
リクエストReqRD2に対応するデータがメモリチップM0のメモリ回路MemVLから読み出され、IDレジスタ値2も含めて、レスポンスRsRD2としてレスポンスキューRsQoへ入力される。
レスポンスキューRsQoへ入力されたレスポンスRsRD2は、レスポンス信号RqMux0を通じて、ID値2と読み出しデータとして出力される。
リクエストReqRD2がメモリチップM0のリクエストキューRqQIへ入力され、このリクエストに対するレスポンスResRD2がレスポンス信号ResMux0から出力される時間は、約15nsである。
一方、リクエストReqNRD2がメモリチップM1のリクエストキューRqQIへ入力され、このリクエストに対するレスポンスResRD2がレスポンス信号ResMux0から出力される時間は、約70nsである。
そのため、リクエストReqRD2がリクエストReqNRD2の後に入力されたにもかかわらず、先に出力できる。
本実施の形態ではデータ読み出しを中心に説明したが、データの書込み動作においても同様の動作を行うことができるのは言うまでもない。
また、本実施の形態では、メモリチップM0とM1とのデータ転送動作を説明したが、M1とその他のメモリチップについても同様のデータ転送動作を行うことは言うまでもない。
<第1の実施の形態の効果>
以下、上述の実施の形態について、構成とその効果についてまとめる。
(1)電源投入直後に、直列接続の確認動作を行うことで、確実にメモリ同士が接続されていることが確認できる。さらに、ブートデバイスおよび、最端のメモリチップを明示し、自動的に各メモリへのID付けが行われることで、容易に、必要な分だけメモリチップを接続し、メモリ容量を拡張することができる。
(2)リクエストへIDを付加することで、情報処理装置CPU_CHIPから各メモリチップM0、M1およびM2へリクエストが確実に転送される。また、情報処理装置CPU_CHIPへのレスポンスへIDを付加することで、各メモリから正しく正しくデータ転送が行えたことを確認でき、情報処理装置CPU_CHIPおよびメモリチップM0、M1、M2の直列接続によって、接続信号数を減少させながらも、情報処理装置CPU_CHIPは所望の処理を実行することができる。
(3)データを送信する前に、そのデータのレイテンシ値を送信することで、情報処理装置CPU_CHIPはデータの到着時間を知り、データの到着前に前もって必要な処理を行うことができ性能向上が図れる。
(4)リクエストへリクエスト番号を付加し、またレスポンスへレスポンス番号を付加することで、データ転送性能の向上を図るためリクエストの入力順とは異なる順番で、レスポンスが送信された場合でも、情報処理装置CPU_CHIPは、どのリクエストに対するレスポンスがメモリチップより送信されたかを知ることができ、所望の処理を高速に実行することができる。
(5)リクエストインターフェース回路ReIFとレスポンスインターフェース回路は独立に動作可能なため、データの読み出し動作と書き込み動作を同時に実行でき、データ転送性能を向上させることができる。
(6)リクエストの入力順序に関わらず、早く読み出せるデータは、読み出しが遅いデータを待つことなく、すぐに読み出すことができるため、高速化が可能となる。
(7)各メモリチップM0、M1およびM2のクロックを必要に応じて、低速動作させたり、停止させたり、復帰させたりできるため、低電力化を図ることができる。
(8)メモリチップM2からの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、信頼性を保つことができる。
また、本実施の形態では、メモリモジュールMEMには1つの揮発性メモリ、1つのNOR型フラッシュメモリ、1つのNAND型フラッシュメモリがが含まれているを例について説明しているが、メモリモジュールMEMに複数個の揮発性メモリ及び複数個のNOR型フラッシュメモリ及びNAND型フラッシュメモリが含まれる場合であっても本発明を実現できるのは言うまでもない。
(第2の実施の形態)
図38は、本発明の第2の実施の形態である。情報処理装置CPU_CHIPとメモリモジュールMEM24から構成される情報処理システムを示した実施の形態である。
メモリモジュールMEM24はダイナミックランダムアクセスメモリDRAM0およびDRAM1、NOR型フラッシュメモリNORおよびNAND型フラッシュメモリNANDから構成される。
情報処理装置CPU_CHIPは、図1で示したものと同等である。ダイナミックランダムアクセスメモリDRAM0およびDRAM1は、図10で示したメモリと同等である。NOR型フラッシュメモリNORは、図18示したメモリと同等である。NAND型フラッシュメモリNANDは図21で示したメモリと同等である。
本発明では、容易に、ダイナミックランダムアクセスメモリを複数接続することができ、情報処理装置CPU_CHIPが必要とするワーク領域やコピー領域を用意に拡張でき、高速処理が可能となる。
本実施の形態では、ダイナミックランダムアクセスメモリの複数接続について説明したが、NOR型フラッシュメモリNORや、NAND型フラッシュメモリNANDは、必要に応じて複数個接続でき、容易にプログラム領域やデータ領域を拡張でき、携帯機器のシステム構成に合わせて柔軟に対応できる。
(第3の実施の形態)
図39は、本発明の第3の実施の形態である。情報処理装置CPU_CHIPとメモリモジュールMEM25から構成される情報処理システムを示した実施の形態である。情報処理装置CPU_CHIPは、図1で示したものと同等である。NOR型フラッシュメモリNORは、図18示したメモリと同等である。ダイナミックランダムアクセスメモリDRAMは、図10で示したメモリと同等である。NAND型フラッシュメモリNANDは図21で示したメモリと同等である。
メモリモジュールMEM25は、それを構成するメモリの接続の順番が、情報処理装置CPU_CHIPから近い順に、NOR型フラッシュメモリセルを利用したNOR型フラッシュメモリNOR、ダイナミックメモリセルを利用したダイナミックランダムアクセスメモリDRAM、NAND型フラッシュメモリセルを利用したNAND型フラッシュメモリNANDである。
携帯電話機では、電話やメールの待ち受け時は、OSや通信用プログラムなどが格納されるNOR型フラッシュメモリNORへの間欠的なアクセスが支配的となる。したがって、不揮発性メモリであるNOR型フラッシュメモリNORを、情報処理装置CPU_CHIPから最も近くに接続する本実施形態では、ダイナミックランダムアクセスメモリDRAMをセルフリフレッシュ状態にし、さらにダイナミックランダムアクセスメモリDRAM やNAND型フラッシュメモリNANDへのリクエストクロック(RqCk1およびRqCk0)や、レスポンスクロック(RsCk1やRsCk2)を停止し、NOR型フラッシュメモリNORのみを動作させることができ、電話やメールの待ち受け時の消費電力を低減することができる。
(第4の実施の形態)
図40は、情報処理装置CPU_CHIPとメモリモジュールMEM26から構成される情報処理システムを示したものである。メモリモジュールMEM26は、ダイナミックランダムアクセスメモリDRAM、NAND型フラッシュメモリNAND0およびNAND1から構成される。情報処理装置CPU_CHIPは、図1で示したものと同等である。ダイナミックランダムアクセスメモリDRAMは、図10で示したメモリと同等である。NAND型フラッシュメモリNAND0およびNAND1は図21で示したメモリと同等である。NAND型フラッシュメモリNAND0およびNAND1はNOR型ラッシュメモリより大容量かつ低コストを実現できるメモリである。NOR型フラッシュメモリの代わりにNAND型フラッシュメモリNAND0を利用することでNAND型フラッシュメモリNAND0へ、OSやアプリケーションプログラムを格納でき、大容量かつ低コストの情報処理システムが実現できる。さらに、NAND型フラッシュメモリNAND0へ格納しているOSやアプリケーションプログラムをあらかじめダイナミックランダムアクセスメモリDRAMへ転送することで、情報処理システムの高性能化が図れる。
(第5の実施の形態)
図41は、情報処理装置CPU_CHIPとメモリモジュールMEM27から構成される情報処理システムを示したものである。メモリモジュールMEM27は、ダイナミックランダムアクセスメモリDRAM、NOR型フラッシュメモリNOR、NAND型フラッシュメモリNANDおよびハードディスクHDDから構成される。情報処理装置CPU_CHIPは、図1で示したものと同等である。ダイナミックランダムアクセスメモリDRAMは、図10で示したメモリと同等である。NOR型フラッシュメモリNORは、図18示したメモリと同等である。NAND型フラッシュメモリNANDは図21で示したメモリと同等である。ハードディスクHDDは、NAND型フラッシュメモリNANDより大容量かつ低コストを実現できるメモリである。
データの読み出し単位や、アドレス管理方法や、エラー検出訂正方法に関していえば、もともとハードディスクHDDで実現していたデータの読み出し単位や、アドレス管理方法や、エラー検出訂正方法などをフラッシュメモリが引き継いでいるため、ハードディスクHDDを容易に追加接続し、大容量かつ低コストのメモリモジュールを実現できる。
(第6の実施の形態)
図42は、情報処理装置CPU_CHIPとメモリモジュールMEM28から構成される情報処理システムを示したものである。メモリモジュールMEM28は、第1の不揮発性メモリMRAM、第2の不揮発性メモリNOR、第3の不揮発性メモリNANDから構成される。情報処理装置CPU_CHIPは、図1で示したものと同等である。第1の不揮発性メモリMRAMは、図10で示したメモリ回路MemVLが、不揮発性のマグネティックメモリセルで構成されているマグネティックランダムアクセスメモリMRAMである。第2の不揮発性メモリNORは、図18で示したNOR型フラッシュメモリと同等である。第3の不揮発性メモリNANDは、図21で示したNAND型フラッシュメモリNANDと同等である。
揮発性のダイナミックランダムアクセスメモリDRAMの代わりに不揮発性のマグネティックランダムアクセスメモリMRAMを用いることで、メモリ回路内のデータ保持動作を定期的に行う必要がないため、低電力化が可能となる。また、第2の不揮発性メモリM280は、図12で示したメモリ回路NV1が不揮発性の相変化メモリセルから構成される相変化メモリであっても良い。
(第7の実施の形態)
図43は本発明における第7の実施の形態を示したものである。図43(A)は上面図であり、図43(B)は上面図に示したA−A’線に沿った部分の断面図である。
本実施の形態のマルチチップ・モジュールは、ボールグリッドアレイ(BGA)によって装置に実装する基盤(例えばガラスエポキシ基板でできたプリント回路ボード)PCB上に、CHIPM1、CHIPM2、CHIPM3が搭載されている。特に限定しないが、CHIPM1は第1の不揮発性メモリで、CHIPM2は第2の不揮発性メモリで、CHIPM3は第1の揮発性メモリである。
本マルチチップ・モジュールにより、図1で示すメモリモジュールMEMおよび、図39で示すメモリモジュールMEM25、図40で示すメモリモジュールMEM26、図42で示すメモリモジュールMEM28を1つの封止体に集積できる。
CHIPM1と基盤PCB上のボンディングパットはボンディングワイヤ(PATH2)で接続され、CHIPM2と基盤PCB上のボンディングパットはボンディングワイヤ(PATH1)で接続されている。CHIPM3と基盤PCB上のボンディングパットはボンディングワイヤ(PATH4)で接続されている。CHIPM1とCHIPM2はボンディングワイヤ(PATH3)で接続され、CHIPM2とCHIPM3はボンディングワイヤ(PATH5)で接続されている。
チップの搭載された基盤PCBの上面は樹脂モールドが行われて各チップと接続配線を保護する。なお、さらにその上から金属、セラミック、あるいは樹脂のカバー(COVER)を使用しても良い。
本実施の形態ではプリント回路ボードPCB上にベアチップを直接搭載するため、実装面積の小さなメモリモジュールを構成することができる。また、各チップを積層することができるため、チップと基盤PCB間の配線長を短くすることができ、実装面積を小さくすることができる。チップ間の配線及び各チップと基盤間の配線をボンディングワイヤ方式で統一することによって少ない工程数でメモリモジュールを製造することができる。
さらにチップ間をボンディングワイヤで直接配線することによって基盤上のボンディングパット数とボンディングワイヤの本数を削減して少ない工程数でメモリモジュールを製造することができる。樹脂のカバーを使用した場合には、より強靭なメモリモジュールを構成することができる。セラミックや金属のカバーを使用した場合には、強度のほか、放熱性やシールド効果に優れたメモリモジュールを構成することができる。
(第8の実施の形態)
図44は本発明における第8の実施の形態を示したものである。図44(A)は上面図であり、図44(B)は上面図に示したA−A’線に沿った部分の断面図である。
本実施の形態のマルチチップ・モジュールは、ボールグリッドアレイ(BGA)によって装置に実装する基盤(例えばガラスエポキシ基板でできたプリント回路ボード)PCB上に、CHIPM1、CHIPM2、CHIPM3が搭載されている。CHIPM1は第1の不揮発性メモリ、CHIP2Mは第2の不揮発性メモリである。CHIP3Mはランダムアクセスメモリである。本マルチチップ・モジュールにより、図1で示すメモリモジュールMEMおよび、図39で示すメモリモジュールMEM25、図40で示すメモリモジュールMEM26、図42で示すメモリモジュールMEM28を1つの封止体に集積できる。
CHIPM1と基盤PCB上のボンディングパットはボンディングワイヤ(PATH2)で接続され、CHIPM2と基盤PCB上のボンディングパットはボンディングワイヤ(PATH1)で接続されている。CHIPM1とCHIPM2はボンディングワイヤ(PATH3)で接続される。また、CHIP3Mの実装および配線にボールグリッドアレイが用いられている。
本実装方法では3チップを積層することができるので実装面積を小さく保つことができる。さらに、CHIPM3と基盤間とのボンディングは不要となりボンディング配線の本数を削減することができるため組み立て工数を削減できる上、より信頼性の高いマルチチップモジュールが実現できる。
(第9の実施の形態)
図45は本発明に係るマルチチップ・モジュールの第9の実施の形態を示したものである。図45(A)は上面図であり、図45(B)は上面図に示したA−A’線に沿った部分の断面図である。
本実施の形態のメモリモジュールは、ボールグリッドアレイ(BGA)によって装置に実装する基盤(例えばガラスエポキシ基板でできたプリント回路ボード)PCB上に、CHIPM1、CHIPM2、CHIPM3、CHIPM4が搭載されている。CHIPM1およびCHIPM2は不揮発性メモリ、CHIPM3はランダムアクセスメモリである。
CHIPM4は情報処理装置CPU_CHIPはである。本実装方法では、図1で示す情報処理システムおよび、図39で示す情報処理システム、図40で示す情報処理システムおよび図42で示す情報処理システムを1つの封止体に集積できる。
CHIPM1と基盤PCB上のボンディングパットはボンディングワイヤ(PATH2)で接続され、CHIPM2と基盤PCB上のボンディングパットはボンディングワイヤ(PATH4)で接続され、CHIPM3と基盤PCB上のボンディングパットはボンディングワイヤ(PATH1)で接続されている。
CHIPM1とCHIPM3はボンディングワイヤ(PATH3)で接続され、CHIPM2とCHIPM3はボンディングワイヤ(PATH5)で接続される。CHIPM4の実装および配線にボールグリッドアレイ(BGA)が用いられている。本実装方法ではプリント回路ボードPCB上にベアチップを直接搭載するため、実装面積の小さなメモリモジュールを構成することができる。また、各チップを近接して配置することができるため、チップ間配線長を短くすることができる。
チップ間をボンディングワイヤで直接配線することによって基盤上のボンディングパット数とボンディングワイヤの本数を削減して少ない工程数でメモリモジュールを製造することができる。さらに、CHIPM4と基盤間とのボンディングは不要となりボンディング配線の本数を削減することができるため組み立て工数を削減できる上、より信頼性の高いマルチチップモジュールが実現できる。
(第10の実施の形態)
図46は本発明に係るメモリシステムの第10の実施の形態を示したものである。図46(A)は上面図であり、図46(B)は上面図に示したA−A’線に沿った部分の断面図である。
本実施の形態のメモリモジュールは、ボールグリッドアレイ(BGA)によって装置に実装する基盤(例えばガラスエポキシ基板でできたプリント回路ボード)PCB上に、CHIPM1、CHIPM2、CHIPM3が搭載されている。CHIPM1およびCHIPM2は不揮発性メモリ、CHIPM3はランダムアクセスメモリである。
チップ間の配線及び各チップと基盤間の配線をボンディングワイヤ方式で統一することによって少ない工程数でメモリモジュールを製造することができる。本実装方法では、図1で示すメモリモジュールMEMおよび、図39で示すメモリモジュールMEM25、図40で示すメモリモジュールMEM26、図42で示すメモリモジュールMEM28を1つの封止体に集積できる。
CHIPM1と基盤PCB上のボンディングパットはボンディングワイヤ(PATH2)で接続され、CHIPM2と基盤PCB上のボンディングパットはボンディングワイヤ(PATH1)で接続され、CHIPM3と基盤PCB上のボンディングパットはボンディングワイヤ(PATH3)で接続されている。本実施の形態ではプリント回路ボードPCB上にベアチップを直接搭載するため、実装面積の小さなメモリモジュールを構成することができる。また、各チップを近接して配置することができるため、チップ間配線長を短くすることができる。
各チップと基盤間の配線をボンディングワイヤ方式で統一することによって少ない工程数でメモリモジュールを製造することができる。
(第11の実施の形態)
図47は本発明に係るメモリシステムの第11の実施の形態を示したものである。図47(A)は上面図であり、図47(B)は上面図に示したA−A’線に沿った部分の断面図である。
本実施の形態のメモリモジュールは、ボールグリッドアレイ(BGA)によって装置に実装する基盤(例えばガラスエポキシ基板でできたプリント回路ボード)PCB上に、CHIPM1、CHIPM2、CHIPM3、CHIPM4が搭載されている。CHIPM1およびCHIPM2は不揮発性メモリ、およびCHIPM3はランダムアクセスメモリである。CHIPM4は情報処理装置CPU_CHIPはである。
本実装方法では、 図1で示す情報処理システムおよび、図39で示す情報処理システム、図40で示す情報処理システムおよび図42で示す情報処理システムを1つの封止体に集積できる。
CHIPM1と基盤PCB上のボンディングパットはボンディングワイヤ(PATH2)で接続され、CHIPM2と基盤PCB上のボンディングパットはボンディングワイヤ(PATH1)で接続され、CHIPM3と基盤PCB上のボンディングパットはボンディングワイヤ(PATH3)で接続されている。CHIPM4の実装および配線にボールグリッドアレイ(BGA)が用いられている。
本実施の形態ではプリント回路ボードPCB上にベアチップを直接搭載するため、実装面積の小さなメモリモジュールを構成することができる。また、各チップを近接して配置することができるため、チップ間配線長を短くすることができる。CHIPM4と基盤間とのボンディングは不要となりボンディング配線の本数を削減することができるため組み立て工数を削減できる上、より信頼性の高いマルチチップモジュールが実現できる。
(第12の実施の形態)
図48に、本発明に係るメモリモジュールを利用した携帯電話の第12の実施の形態を示す。携帯電話は、アンテナANT、無線ブロックRF、音声コーデックブロックSP、スピーカーSK、マイクロホンMK、情報処理装置CPU、液晶表示部LCD、キーボードKEYおよび本発明のメモリモジュールMSMで構成される。情報処理装置CPU_MAINは複数の情報処理回路を持ち、その中の1つの情報処理回路CPU0はベースバンド処理回路BBとして、他の中の少なくとも1つの情報処理回路CPU1はアプリケーションプロセッサAPとして動作する。
通話時の動作を説明する。アンテナANTを通って受信された音声は無線ブロックRFで増幅され、情報処理装置CPU0へ入力される。情報処理装置CPU0では、音声のアナログ信号をデジタル信号に変換し、エラー訂正と復号処理おこない、音声コーデックブロックSPへ出力する。音声コーデックブロックがデジタル信号をアナログ信号に変換しスピーカーSKに出力すると、スピーカーから相手の声が聞こえる。
携帯電話から、インターネットのホームページにアクセスし、音楽データをダウンロードし、再生して聞き、最後にダウンロードした音楽データを保存するという一連の作業を行うときの動作を説明する。
メモリモジュールMEMには、OS、アプリケーションプログラム(メール、Webブラウザ、音楽再生プログラム、動作再生プログラム、ゲームプログラムなど)、音楽データ、静止画データ、動画データなどが格納されている。
キーボードより、Webブラウザの起動を指示すると、メモリモジュールMSM内のNOR型フラッシュメモリへ格納されているWebブラウザのプログラムは情報処理回路CPU1によって読み出され、実行され、液晶表示LCDにWebブラウザが表示される。所望のホームページにアクセスし、気に入った音楽データのダウンロードをキーボードKEYより指示すると、音楽データは、アンテナANTを通って受信され、無線ブロックRFで増幅され、情報処理装置CPU0へ入力される。情報処理装置CPU0では、アナログ信号である音楽データをデジタル信号に変換し、エラー訂正と復号処理おこなう。デジタル信号化された音楽データはメモリモジュールMSM内のダイナミックランダムアクセスメモリDRAMへ一旦、保持され、最終的に、メモリモジュールMEMのNAND型フラッシュメモリへと転送され格納される。
次に、キーボードKEYより、音楽再生プログラムの起動を指示するとメモリモジュールMSM内のNOR型フラッシュメモリへ格納されている音楽再生プログラムが、情報処理回路CPU1によって読み出され、実行され、液晶表示LCDに音楽再生プログラムが表示される。
キーボードKEYより、メモリモジュール内NAND型フラッシュメモリへダウンロードした音楽データを聞くための指示を行うと、情報処理回路CPU1は音楽再生プログラムを実行し、NAND型フラッシュメモリへ保持している音楽データを処理し、最終的にスピーカーSKから音楽が聞こてくる。本発明のメモリモジュールMSM内のNOR型フラッシュメモリには、Webブラウザと音楽再生プログラムや、電子メールプログラムなどの複数のプログラムが格納され、情報処理装置CPU_MAINは複数の情報処理回路CPU0からCPU3を持つため、同時に複数のプログラムを実行することができる。
電話や電子メールの待ちうけ時には、情報処理装置CPU_MAINは、メモリモジュールMSMへのクロックを必要最小限の周波数で動作させることができ消費電力を極端に小さくできる。
このように、本発明に係るメモリモジュールを用いることにより、大量のメール、音楽再生、アプリケ-ションプログラムや音楽データ、静止画像データ、動画データなどを格納でき、さらに複数のプログラムを同時に実行できる。
(第13の実施の形態)
図49に、本発明に係るメモリシステムを利用した携帯電話の第13の実施の形態を示す。携帯電話は、アンテナANT、無線ブロックRF、音声コーデックブロックSP、スピーカーSK、マイクロホンMK、液晶表示部LCD、キーボードKEYおよび、メモリモジュールMSMと情報処理装置CPU_MAINを1つの封止体に集積した本発明の情報処理システムSLPで構成される。
本発明の情報処理システムSLPを用いることによって、部品点数を削減できるため、低コスト化ができ、携帯電話の信頼性が向上する、携帯電話を構成する部品の実装面積を小さくでき、携帯電話の小型化ができる。
(第14の実施の形態)
図51は、本発明の第14の実施の形態である。情報処理装置CPU_CHIP0、CPU_CHIP1、CPU_CHIP2、CPU_CHIP3とメモリモジュールMEM30、MEM31、MEM32、MEM33から構成される情報処理システムを示した実施の形態である。
情報処理装置CPU_CHIP0、CPU_CHIP1、CPU_CHIP2、CPU_CHIP3は、図1で示した情報処理装置CPU_CHIPと同等である。メモリモジュールMEM30、MEM31、MEM32、MEM33は、図1で示したメモリモジュールMEMと同等である。
RqC0からRqC7はリクエストクロックであり、RsC0からRsC7はレスポンスクロックである。RqE0からRqE7はリクエストイネーブル信号であり、RsE0からRsEN7はレスポンスイネーブル信号である。RqM0からRqM7はリクエスト信号であり、RsM0からRsM1はレスポンス信号である。
本発明では、容易に情報処理装置を複数接続することができ、高速処理が可能となる。さらに、携帯機器のシステム構成や、必要とする性能に合わせて、柔軟に情報処理装置やメモリモジュールを接続することができる。
本実施の形態では、図1に示したメモリモジュールMEMの接続例を示しているが、図38から図42に示すメモリモジュールを接続しても良い。
<各実施の形態に示される発明の効果のまとめ>
以上説明したように本明細書に開示される発明によって得られる主な効果は以下の通りである。
第1に、電源投入直後に、直列接続の確認動作を行うことで、確実にメモリ同士が接続されていることが確認できる。さらに、ブートデバイスおよび、最端のメモリチップを明示し、自動的に各メモリへのID付けが行われることで、容易に、必要な分だけメモリチップを接続し、メモリ容量を拡張することができる。
第2に、リクエストへIDを付加することで、情報処理装置CPU_CHIPから各メモリチップM0、M1およびM2へリクエストが確実に転送される。また、情報処理装置CPU_CHIPへのレスポンスへIDを付加することで、各メモリから正しく正しくデータ転送が行えたことを確認でき、情報処理装置CPU_CHIPおよびメモリチップM0、M1、M2の直列接続によって、接続信号数を減少させながらも、情報処理装置CPU_CHIPは所望の処理を実行することができる。
第3に、データを送信する前に、そのデータのレイテンシ値を送信することで、情報処理装置CPU_CHIPはデータの到着時間を知り、データの到着前に前もって必要な処理を行うことができ性能向上が図れる。
第4に、リクエストへリクエスト番号を付加し、またレスポンスへレスポンス番号を付加することで、データ転送性能の向上を図るためリクエストの入力順とは異なる順番で、レスポンスを送信された場合でも、情報処理装置CPU_CHIPは、どのリクエストに対するレスポンスがメモリチップより送信されたかを知ることができ、所望の処理を高速に実行することができる。
第5に、リクエストインターフェース回路ReIFとレスポンスインターフェース回路は独立に動作可能なため、データの読み出し動作と書き込み動作を同時に実行でき、データ転送性能を向上させることができる。
第6に、リクエストの入力順序に関わらず、早く読み出せるデータは、読み出しが遅いデータを待つことなく、すぐに読み出すことができるため、高速化が可能となる。
第7に、各メモリチップM0、M1およびM2のクロックを必要に応じて、低速動作させたり、停止させたり、復帰させたりできるため、低電力化を図ることができる。
第8に、メモリチップM2からの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、信頼性を保つことができる。
第9に、情報処理装置への各メモリからのレスポンス順序は、読み出した回数に応じて動的に変化するため、データ転送性能を向上することができる。さらに、読み出し回数は、プログラムすることができ、利用するシステムに柔軟に対応することができる。
第10に、メモリチップから情報処理処理装置へエラーを送信することができるので、情報処理装置はエラーを検出して、すぐにエラーに対処することができ、信頼性の高い情報処理システムを構築できる。
第11に、各メモリチップM0、M1およびM2のクロックの動作周波数を必要に応じて、変更することができ低電力化を図ることができる。
第12に、複数の半導体チップを一つの封止体に実装することによって実装面積の小さなシステムメモリ・モジュールを提供できる。