(57)【要約】【課題】記憶装置へのロング・データの書き込み実行時の消費電流を抑制しつつ、高速に処理を実行することができるデータ処理装置を得ること。【解決手段】キャッシュ制御部３１が、ＣＰＵ１から３２ビットのロング・データの書き込み要求時のサイクルではＣＰＵ１から出力されるアドレスおよびロング・データを保持するとともに、書き込むべき３２ビットのロング・データのうち８ビットだけをＣＰＵ１から出力されるアドレスに対応するＭＲＡＭ３２の記憶領域に格納し、ＣＰＵ１がＭＲＡＭ３２へのデータの読み出し／書き込み要求を行なわないサイクル時に、保持しているアドレスに対応するＭＲＡＭ３２の記憶領域に、保持しているロング・データのうちＭＲＡＭ３２に格納していない残りのデータを８ビット単位で格納する。【選択図】        図１
2006338513.tif 000002
【特許請求の範囲】
【請求項１】
１アドレスにｎ（１＜ｎ，ｎは自然数）ビットのデータを格納する１〜複数の記憶部と、前記記憶部から命令を含むデータの読み出し／書き込みを要求するＣＰＵと、前記ＣＰＵの読み出し／書き込み要求に基づいて前記記憶部にアクセスして読み出し／書き込みを実行する制御部とを備えるデータ処理装置において、
前記制御部は、
前記ＣＰＵからｎビットのロング・データの書き込み要求時に出力されるアドレスを保持するアドレス処理部と、
前記ロング・データの書き込み要求時に出力されるロング・データを保持するデータ処理部と、
を備え、
前記ロング・データの書き込み要求時のサイクルでは、前記書き込むべきｎビットのロング・データのうちのｍ（１≦ｍ＜ｎ，ｍは自然数）ビットだけを、前記ロング・データの書き込み要求時にＣＰＵから出力されるアドレスに対応する記憶部の記憶領域に格納し、前記ＣＰＵが前記記憶部へのデータの読み出し／書き込み要求を行なわないサイクル時に、前記アドレス処理部が保持しているアドレスに対応する記憶部の記憶領域に、前記データ処理部が保持しているロング・データのうち前記記憶部に格納していない残りのデータをｍビット単位で格納すること、
を特徴とするデータ処理装置。
【請求項２】
前記制御部は、
前記ＣＰＵからの読み出し要求を受けた際に、前記ＣＰＵから出力されるアドレスと前記アドレス処理部が保持しているアドレスとが一致した場合には、前記データ処理部が保持しているロング・データをＣＰＵに出力すること、
を特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記制御部は、
前記ロング・データの書き込み要求を受けた場合には、ウエイト信号をアサートにし、前記データ処理部に保持したロング・データをすべて前記記憶部に格納した後に前記ウエイト信号をネゲートにし、
前記ＣＰＵは、
前記ウエイト信号がネゲートの時にロング・データの書き込みを要求すること、
を特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記制御部は、
前記ＣＰＵからｋ（１≦ｋ≦ｍ，ｋは自然数）ビットのデータの書き込み要求を受けた場合、前記ｋビットのデータを、前記ｋビットのデータ書き込み要求時にＣＰＵから出力されるアドレスに対応する記憶部の記憶領域のビットに対応付けて格納すること、
を特徴とする請求項１〜３の何れか一つに記載のデータ処理装置。
【請求項５】
前記制御部は、
前記ＣＰＵからｋビットの書き込み要求を受けた際に、前記ＣＰＵから出力されるアドレスと、前記アドレス処理部が保持しているアドレスとが一致した場合には、前記データ処理部が保持しているロング・データの中で前記ｋビットのデータに対応するビット分については、前記ロング・データを前記ｋビットのデータに書き換えること、
を特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記記憶部には、薄膜磁性体記憶装置を用いることを特徴とする請求項１〜５の何れか一つに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関するものであり、特に、記憶部へのロング・ワードの書き込み時の消費電流を低減するデータ処理装置に関するものである。
【背景技術】
【０００２】
不揮発性メモリには、ＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリ、ＳＲＡＭ（Static Random Access Memory）などメモリセル内の電子を用いてデータを記憶するものと、ＭＲＡＭ（Magnetic Random Access Memory）のように複数の薄膜磁性体を用いてデータを記憶するものとがある。
【０００３】
ＭＲＡＭは、ＤＲＡＭと比較してアドレスアクセスタイムやサイクルデータタイムが速く、ＳＲＡＭと同等の速度で動作可能である。また、ＭＲＡＭはフラッシュメモリと比較して消費電力が低く、かつ集積度が高い。そのため、ＭＲＡＭは大容量・低消費電力のメモリデバイスとして注目を集めており、従来からＭＲＡＭを用いた薄膜磁性体半導体記憶装置に関する種々の技術が考えられている。
【０００４】
たとえば、特許文献１には、消費電流を増加させることなく、また高速に複数のビットデータの書き込みを並列に実行可能な薄膜磁性体記憶装置に関する技術が開示されている。具体的には、書込制御部が、Ｍ本のビット線のそれぞれにおいてＮビットの書込データの組合せに応じた所定方向のデータ書込電流が流れるようにＭ本のビット線を第１および第２の電圧の間に直列に接続するようにしている。
【０００５】
【特許文献１】特開２００３−２６３８８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載の従来の薄膜磁性体記憶装置では、デジット線およびビット線によって発生する磁界に応じてデータを書き込むため、同時にデータの書き込みを行なうビット線には同時に電流を流さなければならない。そのため、書き込むビット数によって消費電流が異なる。一般的には、データ書き込みのビット数が多いほど消費電流が大きくなり、データ書き込みと比較するとデータ読み出し時の消費電流は小さくなる。
【０００７】
ここで、上記特許文献１に記載の薄膜磁性体記憶装置を３２ビットのマイコンの命令やデータを格納する記憶装置として用いたとする。一般的に、マイコンでは、サイクル毎に実行する命令やデータの読み出し、データの書き込みなどを実行するが、書き込みデータのビット数は異なる。特に、ロング・ワード（３２ビット）書き込み命令の発生頻度は、命令やデータの読み出し、レジスタ間演算命令、１ワード（１６ビット）書き込み命令、１バイト（８ビット）書き込み命令などの発生頻度と比較して少ない。
【０００８】
しかしながら、上記特許文献１に記載の従来の薄膜磁性体記憶装置では、デジット線およびビット線によって発生する磁界に応じてデータを書き込むため、同時にデータの書き込みを行なうビット線には同時に電流を流さなければならない。そのため、発生頻度の少ないロング・ワード書き込み命令実行時に必要な電源を薄膜磁性体記憶装置に供給する必要がある。
【０００９】
すなわち、ロング・ワード書き込み命令よりも発生頻度の多い１ワード、または１バイト書き込み命令や、命令またはデータの読み出し命令の実行時の薄膜磁性体記憶装置の消費電流はロング・ワード書き込み命令実行時の薄膜磁性体記憶装置の消費電流より小さいにもかかわらず、ロング・ワード書き込み命令実行時に必要な電源を薄膜磁性体記憶装置に供給する必要があり、過剰な電源供給能力を要求しなければならないという問題があった。
【００１０】
このような問題を回避するために、ロング・ワード書き込みを複数サイクルで実行することも考えられる。ロング・ワードを１ワード、または１バイト単位に分割して、複数サイクルかけて薄膜磁性体記憶装置に書き込むようにすれば、同時に書き込むビット数が少なくなり、供給する電源を小さくすることはできる。しかしながら、ロング・ワード書き込みの実行時間が長くなり、処理能力が低下してしまうという問題が生じる。
【００１１】
本発明は、上記に鑑みてなされたものであって、記憶装置へのロング・データの書き込み実行時の消費電流を抑制しつつ、高速に処理を実行することができるデータ処理装置を得ることを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、１アドレスにｎ（１＜ｎ，ｎは自然数）ビットのデータを格納する１〜複数の記憶部と、前記記憶部から命令を含むデータの読み出し／書き込みを要求するＣＰＵと、前記ＣＰＵの読み出し／書き込み要求に基づいて前記記憶部にアクセスして読み出し／書き込みを実行する制御部とを備えるデータ処理装置において、前記制御部は、前記ＣＰＵからｎビットのロング・データの書き込み要求時に出力されるアドレスを保持するアドレス処理部と、前記ロング・データの書き込み要求時に出力されるロング・データを保持するデータ処理部と、を備え、前記ロング・データの書き込み要求時のサイクルでは、前記書き込むべきｎビットのロング・データのうちのｍ（１≦ｍ＜ｎ，ｍは自然数）ビットだけを、前記ロング・データの書き込み要求時にＣＰＵから出力されるアドレスに対応する記憶部の記憶領域に格納し、前記ＣＰＵが前記記憶部へのデータの読み出し／書き込み要求を行なわないサイクル時に、前記アドレス処理部が保持しているアドレスに対応する記憶部の記憶領域に、前記データ処理部が保持しているロング・データのうち前記記憶部に格納していない残りのデータをｍビット単位で格納すること、を特徴とする。
【発明の効果】
【００１３】
この発明によれば、ＣＰＵからｎビットのロング・データの書き込み要求時のサイクルではＣＰＵから出力されるアドレスおよびロング・データを保持するとともに、書き込むべきｎビットのロング・データのうちｎビットだけをＣＰＵから出力されるアドレスに対応する記憶部の記憶領域に格納し、ＣＰＵが記憶部へのデータの読み出し／書き込み要求を行なわないサイクル時に、保持しているアドレスに対応する記憶部の記憶領域に、保持しているロング・データのうち記憶部に格納していない残りのデータをｍビット単位で格納するようにしているため、記憶部へのロング・データの書き込み実行時の消費電流を抑制しつつ、高速に処理を実行することができるデータ処理装置を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明にかかるデータ処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１５】
実施の形態．
図１〜図７（図７−１および図７−２を示す）を参照してこの発明の実施の形態を説明する。この実施の形態では、記憶部として薄膜磁性体記憶装置（以下、ＭＲＡＭとする）を用いた場合を例に挙げて説明するが、記憶部として用いる記憶装置は薄膜磁性体記憶装置に限るものではない。
【００１６】
図１は、この発明におけるデータ処理装置であるＭＲＡＭ内蔵マイコンの構成を示すブロック図である。図１において、ＭＲＡＭ内蔵マイコンは、ＣＰＵ１と、ＣＰＵ１が実行する命令や定数を格納するＭＲＡＭモジュール２と、変数データを格納するＭＲＡＭモジュール３とを備えている。
【００１７】
ＣＰＵ１は、ＭＲＡＭモジュール２，３それぞれ独自にアクセス（データの書き込み、および読み出し）可能であり、ＭＲＡＭモジュール２に格納されている命令に基づいて動作する。ＣＰＵ１は、ＭＲＡＭモジュール２，３の１アドレスに格納するｎ（１＜ｎ，ｎは自然数）ビットのデータ書き込みと、ｍ（１≦ｍ＜ｎ，ｍは自然数）ビットのデータ書き込みとによってＭＲＡＭモジュール２，３にデータを格納させる。以下、ｎ＝３２、ｍ＝８、すなわち、ＭＲＡＭモジュール２，３が１アドレスに格納するデータが３２ビットであり、ＣＰＵ１は、ＭＲＡＭモジュール２，３に対して３２ビットのデータ書き込みと、８ビット単位（０〜７ビット目、８〜１５ビット目、１６〜２３ビット目、２４〜３１ビット目）のデータ書き込みを行うものとして説明する。なお、最大消費電力削減の趣旨から、ＭＲＡＭモジュール２，３への同時書き込みは禁止することが好ましい。
【００１８】
また、図１においては、ＭＲＡＭモジュール２，３に対してＣＰＵ１が連続したアクセスを行わないように、ＣＰＵ１が実行する命令や定数の格納にＭＲＡＭモジュール２を用い、変数データの格納にＭＲＡＭモジュール３を用いる構成としたが、ＭＲＡＭ内蔵マイコン内のＭＲＡＭモジュールは少なくとも１つであればよく、ＭＲＡＭモジュールを複数備える場合でも、一般的なＭＲＡＭモジュールと本発明のＭＲＡＭモジュールとが混在していてもかまわない。ここでは、ＭＲＡＭモジュール２には一般的なＭＲＡＭモジュールを用い、ＭＲＡＭモジュール３に本発明のＭＲＡＭモジュールを用いるものとする。
【００１９】
ＣＰＵ１は、ｘ（１＜ｘ，ｘは自然数）ビットのアドレス信号ＡＤ０〜ＡＤｙ（ｙ＝ｘ−１）と書き込みデータＤ０〜Ｄ３とをＭＲＡＭモジュール２，３に出力する。アドレス信号ＡＤ（ＡＤ０〜ＡＤｙを示す）はＭＲＡＭモジュール２，３のアドレスを示す信号である。書き込みデータＤ０はＭＲＡＭモジュール２，３の３２ビットのうちの０〜７ビット目に格納させるデータであり、書き込みデータＤ１はＭＲＡＭモジュール２，３の３２ビットのうちの８〜１５ビット目に格納させるデータであり、書き込みデータＤ２はＭＲＡＭモジュール２，３の３２ビットのうちの１６〜２３ビット目に格納させるデータであり、書き込みデータＤ３はＭＲＡＭモジュール２，３の３２ビットのうちの２４〜３２ビット目に格納させるデータである。
【００２０】
また、ＣＰＵ１は、書き込みデータＤ０〜Ｄ３に対応するライトイネーブル信号ＷＥＩ０〜ＷＥＩ３と、アドレス信号ＡＤが示す記憶領域に格納されている読み出しデータＲＤ０〜ＲＤ３を出力させるか否かを制御するリードイネーブル信号ＯＥＩとをＭＲＡＭモジュール２に出力する。ＣＰＵ１は、書き込みデータＤ０〜Ｄ３に対するライトイネーブル信号ＷＥＤ０〜ＷＥＤ３と、アドレス信号ＡＤが示す記憶領域に格納されている読み出しデータＲＤ０〜ＲＤ３を出力させるか否かを制御するリードイネーブル信号ＯＥＤとをＭＲＡＭモジュール３に出力する。なお、読み出しデータＲＤ０はＭＲＡＭモジュール２，３の３２ビットのうち０〜７ビット目に格納されたデータであり、読み出しデータＲＤ１はＭＲＡＭモジュール２，３の３２ビットのうち８〜１５ビット目に格納されたデータであり、読み出しデータＲＤ２はＭＲＡＭモジュール２，３の３２ビットのうち１６〜２３ビット目に格納されたデータであり、読み出しデータＲＤ３はＭＲＡＭモジュール２，３の３２ビットのうち２４〜３１ビット目に格納されたデータである。
【００２１】
図２は、ＭＲＡＭモジュール３に関するＣＰＵ１の命令と制御信号（ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３およびリードイネーブル信号ＯＥＤ）との関係を示している。ＭＲＡＭモジュール３へのアクセスなしの命令「ＮＯＰ」においてＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３およびリードイネーブル信号ＯＥＤをネゲート（この場合は“０”）にする。
【００２２】
書き込みデータＤ０の８ビット書き込み命令「Ｄ０Ｗｒｉｔｅ」においてＣＰＵ１は、ライトイネーブル信号ＷＥＤ０をアサート（この場合は“１”）に、ライトイネーブル信号ＷＥＤ１〜ＷＥＤ３およびリードイネーブル信号ＯＥＤをネゲートにする。
【００２３】
書き込みデータＤ１の８ビット書き込み命令「Ｄ１Ｗｒｉｔｅ」においてＣＰＵ１は、ライトイネーブル信号ＷＥＤ１をアサート（この場合は“１”）に、ライトイネーブル信号ＷＥＤ０，ＷＥＤ２，ＷＥＤ３およびリードイネーブル信号ＯＥＤをネゲートにする。
【００２４】
書き込みデータＤ２の８ビット書き込み命令「Ｄ２Ｗｒｉｔｅ」においてＣＰＵ１は、ライトイネーブル信号ＷＥＤ２をアサート（この場合は“１”）に、ライトイネーブル信号ＷＥＤ０，ＷＥＤ１，ＷＥＤ３およびリードイネーブル信号ＯＥＤをネゲートにする。
【００２５】
書き込みデータＤ３の８ビット書き込み命令「Ｄ３Ｗｒｉｔｅ」においてＣＰＵ１は、ライトイネーブル信号ＷＥＤ３をアサート（この場合は“１”）に、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ２およびリードイネーブル信号ＯＥＤをネゲートにする。
【００２６】
書き込みデータＤ０〜Ｄ３の３２ビット書き込み命令「Ｄ０−３Ｗｒｉｔｅ」（ロング・データ書き込み命令）においてＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３をアサートにし、リードイネーブル信号ＯＥＤをネゲートにする。なお、後述するがＭＲＡＭモジュール３から出力されるウエイト信号ＷＡＩＴがアサート（この場合は“１”）の期間は３２ビット書き込み命令「Ｄ０−３Ｗｒｉｔｅ」の実行を禁止する。
【００２７】
３２ビット同時データ読み出し命令「Ｒｅａｄ」においてＣＰＵ１は、リードイネーブル信号ＯＥＤをアサート（この場合は“１”）に、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３をネゲートにする。なお、ＭＲＡＭモジュール２に関するＣＰＵ１のアクセス命令は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３およびリードイネーブル信号ＯＥＤの代わりに、ライトイネーブル信号ＷＥＩ０〜ＷＥＩ３およびリードイネーブル信号ＯＥＩを用いるだけであるので、ここではその説明を省略する。
【００２８】
図１に戻って、ＭＲＡＭモジュール３は、ＣＰＵ１からのライトイネーブル信号ＷＥＤ０〜ＷＥＤ３およびリードイネーブル信号ＯＥＤに基づいて、アドレス信号ＡＤが示すＭＲＡＭ３２の記憶領域に書き込みデータＤ０〜Ｄ３の書き込み（格納）、およびアドレス信号ＡＤが示すＭＲＡＭ３２の記憶領域に格納されているデータの読み出し制御を行うキャッシュ制御部３１（特許請求の範囲でいうところの制御部）と、薄膜磁性体による記憶媒体で構成され１アドレスに３２ビットのデータを格納するＭＲＡＭ３２とを備えている。
【００２９】
図３は、図１に示したキャッシュ制御部３１の構成の一例を示す回路図である。図３において、キャッシュ制御部３１は、論理回路部３１１と、アドレス処理部３１２と、データ処理部３１３と、２入力のアンド回路ＡＤ２１〜ＡＤ２７と、アドレス信号ＡＤのビット数ｘと等しいｘ入力のアンド回路ＡＤｘと、２入力のナンド回路ＮＤ２１〜ＮＤ２３と、３入力のオア回路ＯＲ３１と、４入力のオア回路ＯＲ４１と、３ビットのデータ保持回路（以下、レジスタ）５１と、４ビットのレジスタ６１とを備えている。
【００３０】
ＣＰＵ１から出力されるリードイネーブル信号ＯＥＤは、論理回路部３１１と、アンド回路ＡＤ２７とに入力される。ＣＰＵ１から出力されるライトイネーブル信号ＷＥＤ０〜ＷＥＤ３は、論理回路部３１１と、ナンド回路ＮＤ２１〜ＮＤ２４と、オア回路ＯＲ４１とに入力される。外部またはＣＰＵ１から出力されるリセット信号ＩＲＳＴは、レジスタ５１，６１のリセット端子に入力される。外部またはＣＰＵ１から出力されるクロック信号ＣＬＫは、アンド回路ＡＤ２６と、レジスタ５１，６１のクロック端子と、アドレス処理部３１２と、データ処理部３１３とに入力される。
【００３１】
レジスタ５１は、リセット信号ＩＲＳＴがアサート（この場合は“１”）でリセットされ、遅延状態制御信号ＶＢ１〜ＶＢ３を“０”にする。また、レジスタ５１は、リセット信号ＩＲＳＴがネゲート（この場合は“０”）であって、かつクロック信号ＣＬＫの立ち上がりで論理回路部３１１から出力される状態制御信号ＶＢＮ１〜ＶＢＮ３を保持し、保持した状態制御信号ＶＢＮ１〜ＶＢＮ３を遅延状態制御信号ＶＢ１〜ＶＢ３として論理回路部３１１と、オア回路ＯＲ３１とに出力する。
【００３２】
レジスタ６１は、リセット信号ＩＲＳＴが“１”でリセットされ、ＭＲＡＭ３２に出力するメモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３をネゲート（この場合は“０”）にする。また、レジスタ６１は、リセット信号ＩＲＳＴが“１”であって、かつクロック信号ＣＬＫの立ち上がりで論理回路部３１１から出力されるライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持し、保持したライトイネーブル信号ＷＥＮ０〜ＷＥＮ３をメモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３としてＭＲＡＭ３２に出力する。
【００３３】
論理回路部３１１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３、リードイネーブル信号ＯＥＤ、遅延状態制御信号ＶＢ０〜ＶＢ３、およびアドレス状態信号ＶＨＩＴに基づいて、状態制御信号ＶＢＮ１〜ＶＢＮ３、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ３、およびアドレス選択信号ＡＳＥＬを生成する。なお、図３においては、遅延状態制御信号ＶＢ０は接地されており、“０”固定となっている。論理回路部３１１は、状態制御信号ＶＢＮ１〜ＶＢＮ３をレジスタ５１のデータ入力端子に出力し、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ３をレジスタ６１のデータ入力端子に出力し、アドレス選択信号ＡＳＥＬをアドレス処理部３１２に出力する。
【００３４】
図４は、図３に示した論理回路部３１１の動作を示す真理値表を示す図である。図４において「＊」は、“０”または“１”を示しており、遅延状態制御信号ＶＢ０〜ＶＢ３をスルーにして状態制御信号ＶＢＮ０〜ＶＢＮ３とすることを示している。（図３においては、遅延状態制御信号ＶＢ０は“０“固定であるので状態制御信号ＶＢＮ０は出力しない）。また、図４において「−」はドントケア（“０”であっても“１”であってもよい）を示している。
【００３５】
論理回路部３１１は、ＣＰＵ１から入力されるライトイネーブル信号ＷＥＤ０〜ＷＥＤ３がすべて “１”であって（３２ビット書き込み命令実行時）、かつリードイネーブル信号ＯＥＤおよびアドレス状態信号ＶＨＩＴが“０”の場合には、ライトイネーブル信号ＷＥＮ１〜ＷＥＮ３をネゲート（この場合は“０”）にし、ライトイネーブル信号ＷＥＮ０をアサート（この場合は“１”）にするとともに、状態制御信号ＶＢＮ１〜ＶＢＮ３を “１”にし、状態制御信号ＶＢＮ０を “０”にする。また、アドレス選択信号ＡＳＥＬを“０”にする。
【００３６】
論理回路部３１１は、ＣＰＵ１から入力されるライトイネーブル信号ＷＥＤ０〜ＷＥＤ３の何れか一つが“１”であって、かつリードイネーブル信号ＯＥＤが“０”の場合（８ビット書き込み命令を実行時）には、アドレス状態信号ＶＨＩＴおよび遅延状態制御信号ＶＢ０〜ＶＢ３に依存することなくライトイネーブル信号ＷＥＤ０〜ＷＥＤ３をスルーにしてライトイネーブル信号ＷＥＮ０〜ＷＥＮ３に出力するとともに、アドレス選択信号ＡＳＥＬを“０”にする。また、論理回路部３１１は、アドレス状態信号ＶＨＩＴがアサート（この場合は“１”）であって、かつライトイネーブル信号ＷＥＤ０〜ＷＥＤ３の何れか一つが“１”の場合には、 “１”となっているライトイネーブル信号ＷＥＤ０〜ＷＥＤ３に対応する状態制御信号ＶＢＮ０〜ＶＢＮ３を“０”にし、“０”となっているライトイネーブル信号ＷＥＤ０〜ＷＥＤ３に対応する状態制御信号ＶＢＮ０〜ＶＢＮ３には遅延状態制御信号ＶＢ０〜ＶＢ３をスルーで出力する。
【００３７】
また、論理回路部３１１は、ＣＰＵ１から入力されるライトイネーブル信号ＷＥＤ０〜ＷＥＤ３およびリードイネーブル信号ＯＥＤが“０”（ＮＯＰ命令実行時）の場合、アドレス状態信号ＶＨＩＴおよび遅延状態制御信号ＶＢ０〜ＶＢ３に依存することなくアドレス選択信号ＡＳＥＬを“１”にする。論理回路部３１１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３およびリードイネーブル信号ＯＥＤが“０”の場合、遅延状態制御信号ＶＢ０〜ＶＢ３、すなわち１クロック前の状態制御信号ＶＢＮ０〜ＶＢＮ３に基づいて遅延状態制御信号ＶＢ０〜ＶＢ３、およびライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を生成する。
【００３８】
論理回路部３１１は、ＣＰＵ１から入力されるライトイネーブル信号ＷＥＤ０〜ＷＥＤ３が“０”、リードイネーブル信号ＯＥＤが“１”（３２ビット同時データ読み出し命令実行時）であって、かつアドレス状態信号ＶＨＩＴが“０”の場合には、遅延状態制御信号ＶＢ０〜ＶＢ３に依存することなくライトイネーブル信号ＷＥＮ０〜ＷＥＮ３およびアドレス選択信号ＡＳＥＬを“０”にし、遅延状態制御信号ＶＢ０〜ＶＢ３をスルーにして状態制御信号ＶＢＮ０〜ＶＢＮ３に出力する。
【００３９】
論理回路部３１１は、ＣＰＵ１から入力されるライトイネーブル信号ＷＥＤ０〜ＷＥＤ３が“０”、リードイネーブル信号ＯＥＤが“１”であって、かつアドレス状態信号ＶＨＩＴが“１”の場合には、アドレス選択信号ＡＳＥＬを“１”にするとともに、遅延状態制御信号ＶＢ０〜ＶＢ３に基づいて状態制御信号ＶＢＮ０〜ＶＢＮ３、およびライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を生成する。
【００４０】
図３に戻って、オア回路ＯＲ３１は、レジスタ５１から出力される遅延状態制御信号ＶＢ１〜ＶＢ３の少なくとも１つが“１”の場合にウエイト信号ＷＡＩＴをアサート（この場合は“１”）にし、遅延状態制御信号ＶＢ１〜ＶＢ３が全て“０”の場合にウエイト信号ＷＡＩＴをネゲート（この場合は“０”）にする。オア回路ＯＲ３１は、ウエイト信号ＷＡＩＴをＣＰＵ１と、アンド回路ＡＤ２１〜ＡＤ２６とに出力する。
【００４１】
アンド回路ＡＤ２６は、オア回路ＯＲ３１が出力するウエイト信号ＷＡＩＴの反転させた後に、クロック信号ＣＬＫとの論理演算を行なう。具体的には、オア回路ＯＲ３１が出力するウエイト信号ＷＡＩＴが“０”の場合にはクロック信号ＣＬＫをスルーにしてクロック信号ＣＬＫ２として出力し、ウエイト信号ＷＡＩＴが“１”の場合にはクロック信号ＣＬＫ２を“０”固定にする。アンド回路ＡＤ２６は、クロック信号ＣＬＫ２をアドレス処理部３１２に出力する。
【００４２】
アドレス処理部３１２は、３２ビット書き込み命令時にＣＰＵ１から出力されるアドレス信号ＡＤを保持し、サイクル毎にＣＰＵ１から出力されるアドレス信号ＡＤと３２ビット書き込み命令時に保持したアドレス信号ＡＤとをビット毎に比較した結果を示すアドレスビット比較信号ＨＩ（ＨＩ０〜ＨＩｙを示す）を生成する。また、アドレス処理部３１２は、論理回路部３１１が出力するアドレス選択信号ＡＳＥＬに基づいて、３２ビット書き込み命令時に保持したアドレス信号ＡＤまたはサイクル毎にＣＰＵ１から出力されるアドレス信号ＡＤをメモリアドレス信号ＭＡとしてＭＲＡＭ３２に出力する。
【００４３】
図５は、図３に示したアドレス処理部３１２の回路構成の一例を示す図である。図５において、アドレス処理部３１２は、アドレス信号ＡＤのビット数分（この場合はｘ個）のビット処理部３１２０−０〜３１２０−ｙを備えており、ビット処理部３１２０−０が０ビット目のアドレス信号ＡＤ０の処理を行ない、ビット処理部３１２０−１が１ビット目のアドレス信号ＡＤ１の処理を行ない、・・・、ビット処理部３１２０−ｙがｙビット目のアドレス信号ＡＤｙの処理を行なう。
【００４４】
ビット処理部３１２０−０は、レジスタ３１２１，３１２２と、セレクタ３１２３と、排他的論理和回路（以下、ＥＸＯＲ回路とする）３１２４と、反転回路３１３５とを備えている。
【００４５】
レジスタ３１２１は、クロック信号ＣＬＫの立ち上がりでＣＰＵ１が出力するアドレス信号ＡＤ０を保持し、保持したアドレス信号ＡＤ０をアドレス信号ＢＡ０としてセレクタ３１２３と、ＥＸＯＲ回路３１２４とに出力する。レジスタ５１２２は、クロック信号ＣＬＫ２の立ち上がりでアドレス信号ＡＤ０を保持し、保持したアドレス信号ＡＤ０をキャッシュアドレス信号ＣＡ０としてセレクタ３１２３と、ＥＸＯＲ回路３１２４とに出力する。
【００４６】
セレクタ３１２３は、論理回路部３１１が出力するアドレス選択信号ＡＳＥＬに基づいてアドレス信号ＢＡ０、またはキャッシュアドレス信号ＣＡ０をメモリアドレス信号ＭＡ０としてＭＲＡＭ３２に出力する。図５においては、アドレス選択信号ＡＳＥＬが“０”の場合にはアドレス信号ＢＡ０をメモリアドレス信号ＭＡ０として選択し、アドレス選択信号ＡＳＥＬが“１”の場合にはキャッシュアドレス信号ＣＡ０をメモリアドレス信号ＭＡ０として選択する。
【００４７】
ＥＸＯＲ回路３１２４は、アドレス信号ＢＡ０と、キャッシュアドレス信号ＣＡ０との排他的論理和を演算し、反転回路３１２５はＥＸＯＲ回路３１２４の出力を反転させてアドレスビット比較信号ＨＩ０としてアンド回路ＡＤｘに出力する。
【００４８】
なお、ビット処理部３１２０−１〜３１２０−ｙは、ビット処理部３１２０−０と同じ回路構成であり、アドレス信号ＡＤ０，ＢＡ０、キャッシュアドレス信号ＣＡ０、アドレスビット比較信号ＨＩ０、およびメモリアドレス信号ＭＡ０が、アドレス信号ＡＤ１〜ＡＤｙ，ＢＡ１〜ＢＡｙ、キャッシュアドレス信号ＣＡ１〜ＣＡｙ、アドレスビット比較信号ＨＩ１〜ＨＩｙ、およびメモリアドレス信号ＭＡ１〜ＭＡｙとなるだけであるので、ここではその説明を省略する。
【００４９】
図３に戻って、アンド回路ＡＤｘは、アドレス処理部３１２が出力するアドレスビット比較信号ＨＩに基づいて、アドレス比較信号ＨＩＴを生成してアンド回路ＡＤ２１に出力する。具体的には、アンド回路ＡＤｘは、アドレス処理部３１２のビット処理部３１２０−０〜３１２０−ｙがクロック信号ＣＬＫによって保持したアドレス信号ＡＤ（アドレス信号ＢＡ）とクロック信号ＣＬＫ２によって保持したアドレス信号ＡＤ（キャッシュアドレス信号ＣＡ）とが一致している場合にアドレス比較信号ＨＩＴをアサート（この場合は“１”）にし、アドレス信号ＢＡとキャッシュアドレス信号ＣＡとが不一致の場合にアドレス比較信号ＨＩＴをネゲート（この場合は“０”）にする。
【００５０】
アンド回路ＡＤ２１は、オア回路ＯＲ３１が出力するウエイト信号ＷＡＩＴが “１”の場合には、アンド回路ＡＤｘが出力するアドレス比較信号ＨＩＴをスルーにしてアドレス状態信号ＶＨＩＴとし、ウエイト信号ＷＡＩＴが “０”の場合には、アドレス状態信号ＶＨＩＴを“０”（不一致を意味する）にする。アンド回路ＡＤ２１は、アドレス状態信号ＶＨＩＴを論理回路部３１１とナンド回路ＮＤ２１〜ＮＤ２４と、アンド回路ＡＤ２７とに出力する。
【００５１】
ナンド回路ＮＤ２１は、アドレス状態信号ＶＨＩＴが“１”であって、かつＣＰＵ１が出力するライトイネーブル信号ＷＥＤ０が“１”の場合に出力を“０”にし、アドレス状態信号ＶＨＩＴまたはライトイネーブル信号ＷＥＤ０が“０”の場合に出力を“１”にする。
【００５２】
アンド回路ＡＤ２２は、ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２１の出力が“１”の場合に選択信号ＳＮ０を“１”にし、ウエイト信号ＷＡＩＴが“０”または／およびナンド回路ＮＤ２１の出力が“０”の場合に選択信号ＳＮ０を“０”にしてデータ処理部３１３に出力する。
【００５３】
ナンド回路ＮＤ２２は、アドレス状態信号ＶＨＩＴが“１”であって、かつＣＰＵ１が出力するライトイネーブル信号ＷＥＤ１が“１”の場合に出力を“０”にし、アドレス状態信号ＶＨＩＴまたはライトイネーブル信号ＷＥＤ１が“０”の場合に出力を“１”にする。
【００５４】
アンド回路ＡＤ２３は、ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２２の出力が“１”の場合に選択信号ＳＮ１を“１”にし、ウエイト信号ＷＡＩＴが“０”または／およびナンド回路ＮＤ２２の出力が“０”の場合に選択信号ＳＮ１を“０”にしてデータ処理部３１３に出力する。
【００５５】
ナンド回路ＮＤ２３は、アドレス状態信号ＶＨＩＴが“１”であって、かつＣＰＵ１が出力するライトイネーブル信号ＷＥＤ２が“１”の場合に出力を“０”にし、アドレス状態信号ＶＨＩＴまたはライトイネーブル信号ＷＥＤ２が“０”の場合に出力を“１”にする。
【００５６】
アンド回路ＡＤ２４は、ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２３の出力が“１”の場合に選択信号ＳＮ２を“１”にし、ウエイト信号ＷＡＩＴが“０”または／およびナンド回路ＮＤ２３の出力が“０”の場合に選択信号ＳＮ２を“０”にしてデータ処理部３１３に出力する。
【００５７】
ナンド回路ＮＤ２４は、アドレス状態信号ＶＨＩＴが“１”であって、かつＣＰＵ１が出力するライトイネーブル信号ＷＥＤ３が“１”の場合に出力を“０”にし、アドレス状態信号ＶＨＩＴまたはライトイネーブル信号ＷＥＤ３が“０”の場合に出力を“１”にする。
【００５８】
アンド回路ＡＤ２５は、ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２４の出力が“１”の場合に選択信号ＳＮ３を“１”にし、ウエイト信号ＷＡＩＴが“０”または／およびナンド回路ＮＤ２４の出力が“０”の場合に選択信号ＳＮ３を“０”にしてデータ処理部３１３に出力する。
【００５９】
オア回路ＯＲ４１は、ＣＰＵ１が出力するライトイネーブル信号ＷＥＤ０〜ＷＥＤ３の少なくとも１つが “１”の場合に選択信号ＳＷを“１”にし、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３が全て“０”の場合に選択信号ＳＷを“０”にする。オア回路ＯＲ４１は選択信号ＳＷをデータ処理部３１３に出力する。
【００６０】
アンド回路ＡＤ２７は、ＣＰＵ１が出力するリードイネーブル信号ＯＥＤおよびアドレス状態信号ＶＨＩＴが“１”の場合に選択信号ＳＲを“１”にし、リードイネーブル信号ＯＥＤおよび／またはアドレス状態信号ＶＨＩＴが“０”の場合に選択信号ＳＲを“０”にする。アンド回路ＡＤ２７は、選択信号ＳＲをデータ処理部３１３に出力する。
【００６１】
データ処理部３１３は、３２ビット書き込み命令実行時にＣＰＵ１から出力されるロング・データである３２ビットの書き込みデータＤ０〜Ｄ３を保持するとともに、サイクル毎にＣＰＵ１から出力される書き込みデータＤ０〜Ｄ３を保持し、選択信号ＳＷに基づいて保持した書き込みデータＤ０〜Ｄ３の一方をメモリ書き込みデータＭＷＤ０〜ＭＷＤ３としてＭＲＡＭ３２に出力する。
【００６２】
また、データ処理部３１３は、選択信号ＳＲに基づいてＭＲＡＭ３２が出力するメモリ読み出しデータＭＲＤ０〜ＭＲＤ３または３２ビット書き込み命令実行時に保持した書き込みデータＤ０〜Ｄ３を読み出しデータＲＤ０〜ＲＤ３としてＣＰＵ１に出力する。
【００６３】
図６は、図３に示したデータ処理部３１３の回路構成の一例を示す図である。図６において、データ処理部３１３は、８ビット単位で処理を行なう８ビット処理部３１３０−０〜３１３０−３を備えている。８ビット処理部３１３０−０は書き込みデータＤ０および読み出しデータＲＤ０に対する処理を行ない、８ビット処理部３１３０−１は書き込みデータＤ１および読み出しデータＲＤ１に対する処理を行ない、８ビット処理部３１３０−２は書き込みデータＤ２および読み出しデータＲＤ２に対する処理を行ない、８ビット処理部３１３０−３は書き込みデータＤ３および読み出しデータＲＤ３に対する処理を行なう。
【００６４】
８ビット処理部３１３０−０は、セレクタ３１３１〜３１３３と、８ビットのレジスタ３１３４，３１３５とを備えている。レジスタ３１３４は、クロック信号ＣＬＫの立ち上がりでセレクタ３１３１の出力を保持し、保持した信号をキャッシュデータＣＤとしてセレクタ３１３１，３１３２に出力する。
【００６５】
セレクタ３１３１は、選択信号ＳＮ０が“０”の場合にはＣＰＵ１が出力する書き込みデータＤ０を選択し、選択信号ＳＮ０が“１”の場合にはキャッシュデータＣＤ０を選択してレジスタ３１３４に出力する。
【００６６】
セレクタ３１３２は、選択信号ＳＷが“０”の場合にはＣＰＵ１が出力する書き込みデータＤ０を選択し、選択信号ＳＷが“１”の場合にはキャッシュデータＣＤ０を選択してレジスタ３１３５に出力する。
【００６７】
レジスタ３１３４は、クロック信号ＣＬＫの立ち上がりでセレクタ３１３２が出力する信号を保持して、保持した信号をメモリ書き込みデータＭＷＤ０としてＭＲＡＭ３２に出力する。
【００６８】
セレクタ３１３３は、選択信号ＳＲが“０”の場合にはＭＲＡＭ３２が出力するメモリ読み出しデータＭＲＤ０を選択し、選択信号ＳＲが“１”の場合にはキャッシュデータＣＤ０を選択してＣＰＵ１に読み出しデータＲＤ０として出力する。
【００６９】
８ビット処理部３１３０−１〜３１３０−３は、８ビット処理部３１３０−０と同じ回路構成であり、書き込みデータＤ０、メモリ読み出しデータＭＲＤ０、選択信号ＳＮ０、キャッシュデータＣＤ０、およびメモリ書き込みデータＭＷＤ０が、書き込みデータＤ１〜Ｄ３、メモリ読み出しデータＭＲＤ１〜ＭＲＤ３、選択信号ＳＮ１〜ＳＮ３、キャッシュデータＣＤ１〜ＣＤ３およびメモリ書き込みデータＭＷＤ１〜ＭＷＤ３となるだけであるので、ここではその説明を省略する。
【００７０】
図１に戻って、ＭＲＡＭ３２は、ＣＰＵ１が出力するリードイネーブル信号ＯＥＤが“１”の場合、キャッシュ制御部３１が出力するメモリアドレス信号ＭＡが示す記憶領域に格納されているデータをメモリ読み出しデータＭＲＤ０〜ＭＲＤ３としてキャッシュ制御部３１に出力する。また、ＭＲＡＭ３２は、キャッシュ制御部３１が出力するメモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３に基づいてメモリアドレス信号ＭＡが示す記憶領域にメモリ書き込みデータＭＷＤ０〜ＭＷＤ３を格納する。
【００７１】
なお、説明を簡単にするために、レジスタ５１，６１，３１２１，３１３４，３１３５は、クロック信号ＣＬＫの立ち上がりで動作するものとしたが、同一サイクルにおいて、アドレス信号ＡＤを保持するアドレス処理部３１２のビット処理部３１２０−０〜３１２０−ｙ内のレジスタ３１２１が保持したアドレス信号ＡＤと、比較結果であるアドレス状態信号ＶＨＩＴを用いて論理回路部３１１が生成する状態制御信号ＶＢＮ１〜ＶＢＮ３、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ３をレジスタ５１，６１が保持するようにタイミング調整されているものとする。
【００７２】
つぎに、図１〜図６と、図７（図７−１および図７−２を示す）のタイミングチャートを参照して、ＭＲＡＭ内蔵マイコンの動作を説明する。図７−１のサイクルＣ０の開始前に、リセット信号ＩＲＳＴをアサート（この場合は“１”）にした後にリセット信号ＩＲＳＴをネゲート（この場合は“０”）にする。これにより、レジスタ５１，６１がリセットされ、遅延状態制御信号ＶＢ１〜ＶＢ０およびメモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３がネゲート（この場合は“０”）になる。これにより、ウエイト信号ＷＡＩＴおよびアドレス状態信号ＶＨＩＴが“０”になる。
【００７３】
サイクルＣ０において、ＣＰＵ１は３２ビット同時読み出し命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３を“０”にし、リードイネーブル信号ＯＥＤを“１”にし、アドレス信号ＡＤを「ａ０」にする。
【００７４】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。ウエイト信号ＷＡＩＴが“０”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２としてクロック信号ＣＬＫを出力する。したがって、アドレス処理部３１２は、クロック信号ＣＬＫ２の立ち上がりでアドレス信号ＡＤをキャッシュアドレス信号ＣＡとして保持する。サイクルＣ０においては、クロック信号ＣＬＫの立ち上がりでアドレス「ａ０」を保持し、キャッシュアドレス信号ＣＡとしてアドレス「ａ０」を保持する。
【００７５】
ウエイト信号ＷＡＩＴが“０”であるので、アンド回路ＡＤ２１は、アドレス比較信号ＨＩＴに依存することなくアドレス状態信号ＶＨＩＴを“０”にする。
【００７６】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３、および遅延状態制御信号ＶＢ０〜ＶＢ３が“０”であって、かつリードイネーブル信号ＯＥＤが“１”であるので、図４のサイクルＣ０の状態となって、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ３、状態制御信号ＶＢＮ１〜ＶＢＮ３、およびアドレス選択信号ＡＳＥＬを“０”にする。
【００７７】
アドレス選択信号ＡＳＥＬが“０”であるので、アドレス処理部３１２は、クロック信号ＣＬＫの立ち上がりで保持したアドレス信号ＡＤをメモリアドレス信号ＭＡとして出力する。
【００７８】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりで、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持してメモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。すなわち、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３はすべて“０”となる。
【００７９】
ＭＲＡＭ３２は、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３が“０”であって、リードイネーブル信号ＯＥＤが“１”であるので、メモリアドレス信号ＭＡが示すアドレス「ａ０」に格納されているデータをメモリ読み出し信号ＭＲＤ０〜ＭＲＤ３として出力する。この場合は、メモリ読み出しデータＭＲＤ０〜ＭＲＤ３は「ｄ０」を示している。
【００８０】
アドレス状態信号ＶＨＩＴが“０”であるので、アンド回路ＡＤ２７は選択信号ＳＲを“０”にする。選択信号ＳＲが“０”であるので、選択信号ＳＮ０〜ＳＮ３，ＳＷに依存することなく、データ処理部３１３は、メモリ読み出しデータＭＲＤ０〜ＭＲＤ３を読み出しデータＲＤ０〜ＲＤ３として出力する。この場合は、読み出しデータＲＤ３〜ＲＤ０は「ｄ０」となる。
【００８１】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１〜ＶＢ３はすべて“０”となる。遅延状態制御信号ＶＢ１〜ＶＢ３は変化していないので、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“０”のまま変化させない。
【００８２】
サイクルＣ１において、ＣＰＵ１は書き込みデータＤ３の８ビットデータ書き込み命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ２、およびリードイネーブル信号ＯＥＤを“０”にし、ライトイネーブル信号ＷＥＤ３を“１”にし、アドレス信号ＡＤを「ａ１」にし、書き込みデータＤ３を「ｄ０」にする。
【００８３】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。ウエイト信号ＷＡＩＴが“０”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２としてクロック信号ＣＬＫを出力する。したがって、アドレス処理部３１２は、クロック信号ＣＬＫ２の立ち上がりでアドレス信号ＡＤをキャッシュアドレス信号ＣＡとして保持する。サイクルＣ１においては、クロック信号ＣＬＫの立ち上がりでアドレス「ａ１」を保持し、キャッシュアドレス信号ＣＡとしてアドレス「ａ１」を保持する。
【００８４】
ウエイト信号ＷＡＩＴが“０”であるので、アンド回路ＡＤ２１は、アドレス比較信号ＨＩＴに依存することなくアドレス状態信号ＶＨＩＴを“０”にする。
【００８５】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ２、リードイネーブル信号ＯＥＤ、および遅延状態制御信号ＶＢ０〜ＶＢ３が“０”であって、かつライトイネーブル信号ＷＥＤ３が“１”であるので、図４のサイクルＣ１の状態となって、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ２、状態制御信号ＶＢＮ１〜ＶＢＮ３、およびアドレス選択信号ＡＳＥＬを“０”にし、ライトイネーブル信号ＷＥＮ３を“１”にする。
【００８６】
ウエイト信号ＷＡＩＴが“０”であるので、アンド回路ＡＤ２２〜ＡＤ２５は選択信号ＳＮ０〜ＳＮ３を“０”にする。ライトイネーブル信号ＷＥＤ３が“１”であるので、オア回路ＯＲ４１は選択信号ＳＷを“１”にする。
【００８７】
選択信号ＳＷが“１”であるので、データ処理部３１３は、クロック信号ＣＬＫの立ち上がりでメモリ書き込みデータＭＷＤ３として書き込みデータＤ３を出力する。すなわちメモリ書き込みデータＭＷＤ３は「ｄ０」となる。
【００８８】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりで、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持してメモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。すなわち、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ２は “０”となり、メモリライトイネーブル信号ＭＷＥＮ３が“１”となる。
【００８９】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１〜ＶＢ３はすべて“０”となる。遅延状態制御信号ＶＢ１〜ＶＢ３は変化していないので、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“０”のまま変化させない。
【００９０】
ＭＲＡＭ３２は、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ２、およびリードイネーブル信号ＯＥＤが“０”であって、かつメモリライトイネーブル信号ＭＷＥＮ３が“１”であるので、メモリアドレス信号ＭＡが示すアドレス「ａ１」の記憶領域の２４〜３１ビット目に、メモリ書き込みデータＭＷＤ３が示す「ｄ１」を格納する。
【００９１】
サイクルＣ２において、ＣＰＵ１は３２ビット同時書き込み命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３を“１”にし、リードイネーブル信号ＯＥＤを“０”にし、アドレス信号ＡＤを「ａ２」にし、書き込みデータＤ０〜Ｄ３を「ｄ１」〜「ｄ４」にする。ＣＰＵ１は、サイクルＣ１のクロック信号ＣＬＫの立ち上がりから所定の時間が経過した後に、３２ビット同時書き込み命令を実行が実行可能であるか否か、すなわちウエイト信号ＷＡＩＴが“０”であるか“１”であるかを確認している。図７−１においては、所定の時間は時間ｔであり、時間ｔは、クロック信号ＣＬＫの立ち上がりによってレジスタ３１が遅延状態制御信号ＶＢ１〜ＶＢ３を出力してからウエイト信号ＷＡＩＴが十分に安定する時間とする。
【００９２】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。ウエイト信号ＷＡＩＴが“０”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２としてクロック信号ＣＬＫを出力する。したがって、アドレス処理部３１２は、クロック信号ＣＬＫ２の立ち上がりでアドレス信号ＡＤをキャッシュアドレス信号ＣＡとして保持する。サイクルＣ２においては、クロック信号ＣＬＫの立ち上がりでアドレス「ａ２」を保持し、キャッシュアドレス信号ＣＡとしてアドレス「ａ２」を保持する。
【００９３】
ウエイト信号ＷＡＩＴが“０”であるので、アンド回路ＡＤ２１は、アドレス比較信号ＨＩＴに依存することなくアドレス状態信号ＶＨＩＴを“０”にする。
【００９４】
論理回路部３１１は、リードイネーブル信号ＯＥＤ、および遅延状態制御信号ＶＢ０〜ＶＢ３が“０”であって、かつライトイネーブル信号ＷＥＤ０〜ＷＥＤ３が“１”であるので、図４の示したサイクルＣ２の状態となって、ライトイネーブル信号ＷＥＮ１〜ＷＥＮ３、およびアドレス選択信号ＡＳＥＬを“０”にし、ライトイネーブル信号ＷＥＮ０、および状態制御信号ＶＢＮ１〜ＶＢＮ３を“１”にする。
【００９５】
アドレス選択信号ＡＳＥＬが“０”であるので、アドレス処理部３１２は、クロック信号ＣＬＫの立ち上がりで保持したアドレス信号ＡＤをメモリアドレス信号ＭＡとして出力する。この場合は、メモリアドレス信号ＭＡは「ａ２」となる。
【００９６】
アドレス状態信号ＶＨＩＴが“０”であるので、アンド回路ＡＤ２２〜ＡＤ２５は選択信号ＳＮ０〜ＳＮ３を“０”にする。ライトイネーブル信号ＷＥＤ０が“１”であるので、オア回路ＯＲ４１は選択信号ＳＷを“１”にする。また、リードイネーブル信号ＯＥＤが“０”であるので、アンド回路ＡＤ２７は選択信号ＳＲを“０”にする。
【００９７】
選択信号ＳＷが“１”であるので、データ処理部３１３は、クロック信号ＣＬＫの立ち上がりでメモリ書き込みデータＭＷＤ０として書き込みデータＤ０を出力する。すなわちメモリ書き込みデータＭＷＤ０は「ｄ１」となる。
【００９８】
また、選択信号ＳＮ０〜ＳＮ３が“０”であるので、データ処理部３１３は、書き込みデータＤ０〜Ｄ３を保持してキャッシュデータＣＤ０〜ＣＤ３とする。すなわち、キャッシュデータＣＤ０〜ＣＤ３は、「ｄ１」〜「ｄ４」となる。
【００９９】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりでライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持して、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。この場合は、ライトイネーブル信号ＷＥＮ０が“１”であり、ライトイネーブル信号ＷＥＮ１〜ＷＥＮ３が“０”であるので、メモリライトイネーブル信号ＭＷＥＮ０は“１”となり、メモリライトイネーブル信号ＭＷＥＮ１〜ＭＷＥＮ３が“０”となる。
【０１００】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１〜ＶＢ３はすべて“１”となる。これにより、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“０”から“１”にする。
【０１０１】
ＭＲＡＭ３２は、メモリライトイネーブル信号ＭＷＥＮ１〜ＭＷＥＮ３、およびリードイネーブル信号ＯＥＤが“０”であって、かつメモリライトイネーブル信号ＭＷＥＮ０が“１”であるので、メモリアドレス信号ＭＡが示すアドレス「ａ２」の０〜７ビット目に、メモリ書き込みデータＭＷＤ０が示す「ｄ１」を格納する。
【０１０２】
サイクルＣ３において、ＣＰＵ１はＮＯＰ命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３、およびリードイネーブル信号ＯＥＤを“０”にしてＭＲＡＭモジュール３へのアクセスを行なわないが、アドレス信号ＡＤを「ａ３」にする。
【０１０３】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。この場合は、アドレス「ａ３」を保持する。ウエイト信号ＷＡＩＴが“１”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２を“０”にする。したがって、アドレス処理部３１２は、キャッシュアドレス信号ＣＡとしてサイクルＣ２において保持した「ａ２」をそのまま保持する。
【０１０４】
クロック信号ＣＬＫで保持したアドレス信号ＡＤは「ａ３」であり、キャッシュアドレス信号ＣＡは「ａ２」であるので、アドレス処理部３１２は、アドレスビット比較信号ＨＩの少なくとも１ビットを“０”にする。したがって、アンド回路ＡＤｘはアドレス比較信号ＨＩＴを“０”にする。これにより、アンド回路ＡＤ２１は、アドレス状態信号ＶＨＩＴを“０”にする。
【０１０５】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、リードイネーブル信号ＯＥＤ、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３、および遅延状態制御信号ＶＢ０が“０”であって、かつ遅延状態制御信号ＶＢ１〜ＶＢ３が“１”であるので、図４に示したサイクルＣ３の状態となって、アドレス状態信号ＶＨＩＴに依存することなく、ライトイネーブル信号ＷＥＮ０，ＷＥＮ２，ＷＥＮ３、および状態制御信号ＶＢＮ１を“０”にし、状態制御信号ＶＢＮ２，ＶＢＮ３、およびアドレス選択信号ＡＳＥＬを“１”にする。
【０１０６】
アドレス選択信号ＡＳＥＬが“１”であるので、アドレス処理部３１２は、キャッシュアドレス信号ＣＡをメモリアドレス信号ＭＡとして出力する。この場合は、メモリアドレス信号ＭＡは「ａ２」となる。
【０１０７】
ライトライトイネーブル信号ＷＥＤ０〜ＷＥＤ３が“０”あるのでナンド回路ＮＤ２１〜ＮＤ２４は出力を“１”にする。ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２１〜ＮＤ２４の出力が“１”であるので、アンド回路ＡＤ２２〜ＡＤ２５は、選択信号ＳＮ０〜ＳＮ３を“１”にする。ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３がすべて“０”であるので、オア回路ＯＲ４１は選択信号ＳＷを“０”にする。
【０１０８】
選択信号ＳＷが“０”であるので、データ処理部３１３は、クロック信号ＣＬＫの立ち上がりでメモリ書き込みデータＭＷＤ１としてキャッシュデータＣＤ１を出力する。すなわちメモリ書き込みデータＭＷＤ１は「ｄ２」となる。
【０１０９】
また、選択信号ＳＮ０〜ＳＮ３が“１”であるので、データ処理部３１３は、キャッシュデータＣＤ０〜ＣＤ３をクロック信号ＣＬＫの立ち上がりで保持してキャッシュデータＣＤ０〜ＣＤ３とする。すなわち、キャッシュデータＣＤ０〜ＣＤ３は、「ｄ１」〜「ｄ４」のまま変化しない。
【０１１０】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりでライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持して、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。この場合は、ライトイネーブル信号ＷＥＮ１が“１”であり、ライトイネーブル信号ＷＥＮ０，ＷＥＮ２，ＷＥＮ３が“０”であるので、メモリライトイネーブル信号ＭＷＥＮ１は“１”となり、メモリライトイネーブル信号ＭＷＥＮ０，ＭＷＥＤ２，ＭＷＥＮ３が“０”となる。
【０１１１】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１は“０”となり、遅延状態制御信号ＶＢ２，ＶＢ３は “１”となり、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“１”のまま変化させない。
【０１１２】
ＭＲＡＭ３２は、メモリライトイネーブル信号ＭＷＥＮ０，ＭＷＥＮ２，ＭＷＥＮ３、およびリードイネーブル信号ＯＥＤが“０”であって、かつメモリライトイネーブル信号ＭＷＥＮ１が“１”であるので、メモリアドレス信号ＭＡが示すアドレス「ａ２」の８〜１５ビット目に、メモリ書き込みデータＭＷＥＤ１が示す「ｄ２」を格納する。
【０１１３】
このように、ＣＰＵ１がＭＲＡＭ３２にアクセスしないサイクルを用いて、３２ビット書き込み命令時にＭＲＡＭ３２に格納していない残りのデータの中の８ビットをＭＲＡＭ３２に格納する。
【０１１４】
サイクルＣ４において、ＣＰＵ１は書き込みデータＤ０の８ビットデータ書き込み命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ１〜ＷＥＤ３、およびリードイネーブル信号ＯＥＤを“０”にし、ライトイネーブル信号ＷＥＤ０を“１”にし、アドレス信号ＡＤを「ａ４」にし、書き込みデータＤ０を「ｄ５」にする。
【０１１５】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。この場合は、アドレス「ａ４」を保持する。ウエイト信号ＷＡＩＴが“１”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２を“０”にする。したがって、アドレス処理部３１２は、キャッシュアドレス信号ＣＡとしてサイクルＣ２において保持した「ａ２」をそのまま保持する。
【０１１６】
クロック信号ＣＬＫで保持したアドレス信号ＡＤは「ａ４」であり、キャッシュアドレス信号ＣＡは「ａ２」であるので、アドレス処理部３１２は、アドレスビット比較信号ＨＩの少なくとも１ビットを“０”にする。したがって、アンド回路ＡＤｘはアドレス比較信号ＨＩＴを“０”にする。これにより、アンド回路ＡＤ２１は、アドレス状態信号ＶＨＩＴを“０”にする。
【０１１７】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、リードイネーブル信号ＯＥＤ、ライトイネーブル信号ＷＥＤ１〜ＷＥＤ３、および遅延状態制御信号ＶＢ０，ＶＢ１が“０”であって、かつライトイネーブル信号ＷＥＤ０、および遅延状態制御信号ＶＢ２，ＶＢ３が“１”であるので、図４のサイクルＣ４の状態となって、ライトイネーブル信号ＷＥＮ０、および状態制御信号ＶＢＮ２，ＶＢＮ３を“１”にし、ライトイネーブル信号ＷＥＮ１〜ＷＥＮ３、状態制御信号ＶＢＮ０，ＶＢＮ１、およびアドレス選択信号ＡＳＥＬを“０”にする。
【０１１８】
アドレス選択信号ＡＳＥＬが“０”であるので、アドレス処理部３１２は、クロック信号ＣＬＫの立ち上がりで保持したアドレス信号ＡＤをメモリアドレス信号ＭＡとして出力する。この場合は、メモリアドレス信号ＭＡは「ａ４」となる。
【０１１９】
アドレス状態信号ＶＨＩＴが“０”であるので、ナンド回路ＮＤ２１〜ＮＤ２４は出力を“１”にする。ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２１〜ＮＤ２４の出力が“１”であるので、アンド回路ＡＤ２２〜ＡＤ２５は選択信号ＳＮ０〜ＳＮ３を“１”にする。ライトイネーブル信号ＷＥＤ０が“１”であるのでオア回路ＯＲ４１は選択信号ＳＷを“１”にする。また、リードイネーブル信号ＯＥＤが“０”であるので、アンド回路ＡＤ２７は選択信号ＳＲを“０”にする。
【０１２０】
選択信号ＳＷが“１”であるので、データ処理部３１３は、クロック信号ＣＬＫの立ち上がりでメモリ書き込みデータＭＷＤ０として書き込みデータＤ０を出力する。すなわちメモリ書き込みデータＭＷＤ０は「ｄ５」となる。
【０１２１】
また、選択信号ＳＮ０〜ＳＮ３が“１”であるので、データ処理部３１３は、キャッシュデータＣＤ０〜ＣＤ３をクロック信号ＣＬＫの立ち上がりで保持してキャッシュデータＣＤ０〜ＣＤ３とする。すなわち、キャッシュデータＣＤ０〜ＣＤ３は、「ｄ１」〜「ｄ４」のまま変化しない。
【０１２２】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりでライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持して、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。この場合は、ライトイネーブル信号ＷＥＮ０が“１”であり、ライトイネーブル信号ＷＥＮ１〜ＷＥＮ３が“０”であるので、メモリライトイネーブル信号ＭＷＥＮ０は“１”となり、メモリライトイネーブル信号ＭＷＥＮ１〜ＭＷＥＮ３が“０”となる。
【０１２３】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１は“０”となり、遅延状態制御信号ＶＢ２，ＶＢ３は “１”となり、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“１”のまま変化させない。
【０１２４】
ＭＲＡＭ３２は、メモリライトイネーブル信号ＭＷＥＮ０が“１”であって、かつメモリライトイネーブル信号ＭＷＥＮ１〜ＭＷＥＮ３、およびリードイネーブル信号ＯＥＤが“０”であるので、メモリアドレス信号ＭＡが示すアドレス「ａ４」の０〜７ビット目に、メモリ書き込みデータＭＷＤ０が示す「ｄ５」を格納する。
【０１２５】
図７−２のサイクルＣ５において、ＣＰＵ１は３２ビット同時読み出し命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３を“０”にし、リードイネーブル信号ＯＥＤを“１”にし、アドレス信号ＡＤを「ａ５」にする。
【０１２６】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。この場合は、アドレス「ａ５」を保持する。ウエイト信号ＷＡＩＴが“１”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２を“０”にする。したがって、アドレス処理部３１２は、キャッシュアドレス信号ＣＡとしてサイクルＣ２において保持した「ａ２」をそのまま保持する。
【０１２７】
クロック信号ＣＬＫで保持したアドレス信号ＡＤは「ａ５」であり、キャッシュアドレス信号ＣＡは「ａ２」であるので、アドレス処理部３１２は、アドレスビット比較信号ＨＩの少なくとも１ビットを“０”にする。したがって、アンド回路ＡＤｘはアドレス比較信号ＨＩＴを“０”にする。これにより、アンド回路ＡＤ２１は、アドレス状態信号ＶＨＩＴを“０”にする。
【０１２８】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３、および遅延状態制御信号ＶＢ０，ＶＢ１が“０”であって、かつリードイネーブル信号ＯＥＤ，および遅延状態制御信号ＶＢ２，ＶＢ３が“１”であるので、図４のサイクルＣ５の状態となって、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ３、状態制御信号ＶＢＮ１、およびアドレス選択信号ＡＳＥＬを“０”にし、状態制御信号ＶＢＮ２，ＶＢＮ３を“１”にする。
【０１２９】
アドレス選択信号ＡＳＥＬが“０”であるので、アドレス処理部３１２は、クロック信号ＣＬＫの立ち上がりで保持したアドレス信号ＡＤをメモリアドレス信号ＭＡとして出力する。この場合は、メモリアドレス信号ＭＡは「ａ５」となる。
【０１３０】
アドレス状態信号ＶＨＩＴが“０”であるのでナンド回路ＮＤ２１〜ＮＤ２４は出力を“１”にする。ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２１〜ＮＤ２４の出力が“１”であるので、アンド回路ＡＤ２２〜ＡＤ２５は、選択信号ＳＮ０〜ＳＮ３を“１”にする。ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３がすべて“０”であるので、オア回路ＯＲ４１は選択信号ＳＷを“０”にする。また、ウエイト信号ＷＡＩＴおよびリードイネーブル信号ＯＥＤが“１”であるのでアンド回路ＡＤ２７は選択信号ＳＲを“１”にする。
【０１３１】
選択信号ＳＮ０〜ＳＮ３が“１”であるので、データ処理部３１３は、書き込みデータＤ０〜Ｄ３を保持してキャッシュデータＣＤ０〜ＣＤ３とする。すなわち、キャッシュデータＣＤ０〜ＣＤ３は、「ｄ１」〜「ｄ４」のまま変化しない。
【０１３２】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりでライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持してメモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。すなわち、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３はすべて“０”となる。
【０１３３】
ＭＲＡＭ３２は、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３が“０”であって、リードイネーブル信号ＯＥＤが“１”であるので、メモリアドレス信号ＭＡが示すアドレス「ａ５」に格納されているデータをメモリ読み出し信号ＭＲＤ０〜ＭＲＤ３として出力する。この場合は、メモリ読み出しデータＭＲＤ０〜ＭＲＤ３は「ｄ６」を示している。
【０１３４】
選択信号ＳＲが“１”であるので、データ処理部３１３は、選択信号ＳＮ０〜ＳＮ３，ＳＷに依存することなく、メモリ読み出しデータＭＲＤ０〜ＭＲＤ３を選択して、読み出しデータＲＤ０〜ＲＤ３として出力する。この場合は、読み出しデータＲＤ０〜ＲＤ３は「ｄ６」となる。
【０１３５】
ウエイト信号ＷＡＩＴおよびリードイネーブル信号ＯＥＤが“１”であるので、アンド回路ＡＤ２７は選択信号ＳＲを“１”にする。選択信号ＳＲが“１”であるので、選択信号ＳＮ０〜ＳＮ３，ＳＷに依存することなく、データ処理部３１３は、メモリ読み出しデータＭＲＤ０〜ＭＲＤ３を選択して、読み出しデータＲＤ０〜ＲＤ３としてＣＰＵ１に出力する。すなわち、読み出しデータＲＤ３〜ＲＤ０は、「ｄ６」となる。
【０１３６】
レジスタ５１はクロック信号ＣＬＫの立ち上がりで状態制御信号ＶＢＮ１〜ＶＢＮ３を保持し、遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、レジスタ５１は、遅延状態制御信号ＶＢ１を“０”にし、遅延状態制御信号ＶＢ２，ＶＢ３を“１”にする。遅延状態制御信号ＶＢ２，ＶＢ３が“１”であるので、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“１”のまま変化させない。
【０１３７】
サイクルＣ６において、ＣＰＵ１は書き込みデータＤ３の８ビットデータ書き込み命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ２、およびリードイネーブル信号ＯＥＤを“０”にし、ライトイネーブル信号ＷＥＤ３を“１”にし、アドレス信号ＡＤを「ａ２」にし、書き込みデータＤ３を「ｄ７」にする。
【０１３８】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。この場合は、アドレス「ａ２」を保持する。ウエイト信号ＷＡＩＴが“１”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２を“０”にする。したがって、アドレス処理部３１２は、キャッシュアドレス信号ＣＡとしてサイクルＣ２において保持した「ａ２」をそのまま保持する。
【０１３９】
クロック信号ＣＬＫで保持したアドレス信号ＡＤは「ａ２」であり、キャッシュアドレス信号ＣＡは「ａ２」であるので、アドレス処理部３１２は、アドレスビット比較信号ＨＩのすべてのビットを“１”にする。これにより、アンド回路ＡＤｘはアドレス比較信号ＨＩＴを“１”にする。ウエイト信号ＷＡＩＴが“１”であって、かつアドレス比較信号ＨＩＴが“１”であるので、アンド回路ＡＤ２１は、アドレス状態信号ＶＨＩＴを“１”にする。
【０１４０】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、ライトイネーブル信号ＷＥＤ３、および遅延状態制御信号ＶＢ２，ＶＢ３が“１”であって、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ２、リードイネーブル信号ＯＥＤ、および遅延状態制御信号ＶＢ０，ＶＢ１が“０”であるので、図４のサイクルＣ６の状態となって、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ２，状態制御信号ＶＢＮ１，ＶＢＮ３、およびアドレス選択信号ＡＳＥＬを“０”にし、ライトイネーブル信号ＷＥＮ３、および状態制御信号ＶＢＮ２を“１”にする。
【０１４１】
アドレス選択信号ＡＳＥＬが“０”であるので、アドレス処理部３１２は、クロック信号ＣＬＫの立ち上がりで保持したアドレス信号ＡＤをメモリアドレス信号ＭＡとして出力する。すなわち、メモリアドレス信号ＭＡは「ａ２」となる。
【０１４２】
ライトイネーブル信号ＷＥＤ０〜ＷＥＤ２が“０”であるので、ナンド回路ＮＤ２１〜ＮＤ２３は出力を“１”にする。また、ライトイネーブル信号ＷＥＮ３が“１”であって、かつアドレス状態信号ＶＨＩＴが“１”であるので、ナンド回路ＮＤ２４は出力を“０”にする。ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２１〜ＮＤ２３の出力が“１”であるので、アンド回路ＡＤ２２〜ＡＤ２４は選択信号ＳＮ０〜ＳＮ２を“１”にする。また、ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２４の出力が“０”であるので、アンド回路ＡＤ２５は選択信号ＳＮ３を“０”にする。
【０１４３】
ライトイネーブル信号ＷＥＤ３が“１”であるので、オア回路ＯＲ４１は選択信号ＳＷを“１”にする。また、リードイネーブル信号ＯＥＤが“０”であるので、アンド回路ＡＤ２７は選択信号ＳＲを“０”にする。
【０１４４】
選択信号ＳＷが“１”であるので、データ処理部３１３は、クロック信号ＣＬＫの立ち上がりでメモリ書き込みデータＭＷＤ３として書き込みデータＤ３を出力する。この場合は、メモリ書き込みデータＭＷＤ３は「ｄ７」となる。
【０１４５】
選択信号ＳＮ０〜ＳＮ２が“１”であるので、データ処理部３１３は、キャッシュデータＣＤ０〜ＣＤ２をクロック信号ＣＬＫの立ち上がりで保持してキャッシュデータＣＤ０〜ＣＤ２とする。すなわち、キャッシュデータＣＤ０〜ＣＤ２は、「ｄ１」〜「ｄ３」のまま変化しない。
【０１４６】
選択信号ＳＮ３が“０”であるので、データ処理部３１３は、書き込みデータＤ３をクロック信号ＣＬＫの立ち上がりで保持してキャッシュデータＣＤ３とする。この場合は、キャッシュデータＣＤ３は「ｄ７」となる。
【０１４７】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりでライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持して、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。この場合は、ライトイネーブル信号ＷＥＮ３が“１”であり、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ２が“０”であるので、メモリライトイネーブル信号ＭＷＥＮ３は“１”となり、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＤ２が“０”となる。
【０１４８】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１，ＶＢ３は“０”となり、遅延状態制御信号ＶＢ２は “１”となり、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“１”のまま変化させない。
【０１４９】
このように、３２ビット書き込み命令時のアドレスと、８ビット書き込み命令時のアドレスとが一致した場合には、８ビット書き込み命令時の書き込みデータをＭＲＡＭ３２に格納するとともに、データ処理部３１３が３２ビット書き込み命令時に保持したキャッシュデータを、８ビット書き込み命令時の書き込みデータに書き換える。
【０１５０】
サイクルＣ７において、ＣＰＵ１は書き込みデータＤ０の８ビットデータ書き込み命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ１〜ＷＥＤ３、およびリードイネーブル信号ＯＥＤを“０”にし、ライトイネーブル信号ＷＥＤ０を“１”にし、アドレス信号ＡＤを「ａ２」にし、書き込みデータＤ３を「ｄ８」にする。
【０１５１】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。この場合は、アドレス「ａ２」を保持する。ウエイト信号ＷＡＩＴが“１”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２を“０”にする。したがって、アドレス処理部３１２は、キャッシュアドレス信号ＣＡとしてサイクルＣ２において保持した「ａ２」をそのまま保持する。
【０１５２】
クロック信号ＣＬＫで保持したアドレス信号ＡＤは「ａ２」であり、キャッシュアドレス信号ＣＡは「ａ２」であるので、アドレス処理部３１２は、アドレスビット比較信号ＨＩのすべてのビットを“１”にする。これにより、アンド回路ＡＤｘはアドレス比較信号ＨＩＴを“１”にする。ウエイト信号ＷＡＩＴが“１”であって、かつアドレス比較信号ＨＩＴが“１”であるので、アンド回路ＡＤ２１は、アドレス状態信号ＶＨＩＴを“１”にする。
【０１５３】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、ライトイネーブル信号ＷＥＤ０、および遅延状態制御信号ＶＢ２が“１”であって、ライトイネーブル信号ＷＥＤ１〜ＷＥＤ３、リードイネーブル信号ＯＥＤ、および遅延状態制御信号ＶＢ０，ＶＢ１，ＶＢ３が“０”であるので、図４のサイクルＣ７の状態となって、ライトイネーブル信号ＷＥＮ０〜ＷＥＮ２，状態制御信号ＶＢＮ１，ＶＢＮ３、およびアドレス選択信号ＡＳＥＬを“０”にし、ライトイネーブル信号ＷＥＮ３、および状態制御信号ＶＢＮ２を“１”にする。
【０１５４】
アドレス選択信号ＡＳＥＬが“０”であるので、アドレス処理部３１２は、クロック信号ＣＬＫの立ち上がりで保持したアドレス信号ＡＤをメモリアドレス信号ＭＡとして出力する。すなわち、メモリアドレス信号ＭＡは「ａ２」となる。
【０１５５】
ライトイネーブル信号ＷＥＤ１〜ＷＥＤ３が“０”であるので、ナンド回路ＮＤ２２〜ＮＤ２４は出力を“１”にする。また、ライトイネーブル信号ＷＥＤ０が“１”であって、かつアドレス状態信号ＶＨＩＴが“１”であるので、ナンド回路ＮＤ２１は出力を“０”にする。ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２２〜ＮＤ２４の出力が“１”であるので、アンド回路ＡＤ２３〜ＡＤ２５は選択信号ＳＮ１〜ＳＮ３を“１”にする。また、ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２１の出力が“０”であるので、アンド回路ＡＤ２２は選択信号ＳＮ０を“０”にする。
【０１５６】
ライトイネーブル信号ＷＥＤ０が“１”であるので、オア回路ＯＲ４１は選択信号ＳＷを“１”にする。また、リードイネーブル信号ＯＥＤが“０”であるので、アンド回路ＡＤ２７は選択信号ＳＲを“０”にする。
【０１５７】
選択信号ＳＷが“１”であるので、データ処理部３１３は、クロック信号ＣＬＫの立ち上がりでメモリ書き込みデータＭＷＤ０として書き込みデータＤ０を出力する。この場合は、メモリ書き込みデータＭＷＤ３は「ｄ８」となる。
【０１５８】
選択信号ＳＮ０が“０”であるので、データ処理部３１３は、書き込みデータＤ０をクロック信号ＣＬＫの立ち上がりで保持してキャッシュデータＣＤ０とする。この場合は、キャッシュデータＣＤ０は「ｄ８」となる。
【０１５９】
選択信号ＳＮ１〜ＳＮ３が“１”であるので、データ処理部３１３は、キャッシュデータＣＤ１〜ＣＤ３をクロック信号ＣＬＫの立ち上がりで保持してキャッシュデータＣＤ１〜ＣＤ３とする。すなわち、キャッシュデータＣＤ１〜ＣＤ３は、「ｄ２」，「ｄ３」，「ｄ７」のまま変化しない。
【０１６０】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりでライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持して、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。この場合は、ライトイネーブル信号ＷＥＮ０が“１”であり、ライトイネーブル信号ＷＥＮ１〜ＷＥＮ３が“０”であるので、メモリライトイネーブル信号ＭＷＥＮ０は“１”となり、メモリライトイネーブル信号ＭＷＥＮ１〜ＭＷＥＤ３が“０”となる。
【０１６１】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１，ＶＢ３は“０”となり、遅延状態制御信号ＶＢ２は “１”となり、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“１”のまま変化させない。
【０１６２】
サイクルＣ８において、ＣＰＵ１は、３２ビット同時読み出し命令を実行する。すなわち、ＣＰＵ１は、ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３を“０”にし、リードイネーブル信号ＯＥＤを“１”にし、アドレス信号ＡＤを「ａ２」にする。
【０１６３】
クロック信号ＣＬＫの立ち上がりで、アドレス処理部３１２は、アドレス信号ＡＤを保持する。この場合は、アドレス「ａ２」を保持する。ウエイト信号ＷＡＩＴが“１”であるので、アンド回路ＡＤ２６はクロック信号ＣＬＫ２を“０”にする。したがって、アドレス処理部３１２は、キャッシュアドレス信号ＣＡとしてサイクルＣ２において保持した「ａ２」をそのまま保持する。
【０１６４】
クロック信号ＣＬＫで保持したアドレス信号ＡＤは「ａ２」であり、キャッシュアドレス信号ＣＡは「ａ２」であるので、アドレス処理部３１２は、アドレスビット比較信号ＨＩのすべてのビットを“１”にする。これにより、アンド回路ＡＤｘはアドレス比較信号ＨＩＴを“１”にする。ウエイト信号ＷＡＩＴが“１”であって、かつアドレス比較信号ＨＩＴが“１”であるので、アンド回路ＡＤ２１はアドレス状態信号ＶＨＩＴを“１”にする。
【０１６５】
論理回路部３１１は、アドレス状態信号ＶＨＩＴ、リードイネーブル信号ＯＥＤ、および遅延状態制御信号ＶＢ２が“１”であって、かつライトイネーブル信号ＷＥＤ０〜ＷＥＤ３、および遅延状態制御信号ＶＢ０，ＶＢ１，ＶＢ３が“０”であるので、図４のサイクルＣ８の状態となって、ライトイネーブル信号ＷＥＮ０，ＷＥＮ１，ＷＥＮ３、状態制御信号ＶＢＮ１〜ＶＢＮ３、およびを“０”にし、ライトイネーブル信号ＷＥＮ２およびアドレス選択信号ＡＳＥＬを“１”にする。
【０１６６】
アドレス選択信号ＡＳＥＬが“１”であるので、アドレス処理部３１２は、キャッシュアドレス信号ＣＡをメモリアドレス信号ＭＡとして出力する。この場合は、メモリアドレス信号ＭＡは「ａ２」となる。
【０１６７】
ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３が“０” であるのでナンド回路ＮＤ２１〜ＮＤ２４は出力を“１”にする。ウエイト信号ＷＡＩＴが“１”であって、かつナンド回路ＮＤ２１〜ＮＤ２４の出力が“１”であるので、アンド回路ＡＤ２２〜ＡＤ２５は、選択信号ＳＮ０〜ＳＮ３を“１”にする。ライトイネーブル信号ＷＥＤ０〜ＷＥＤ３がすべて“０”であるので、オア回路ＯＲ４１は選択信号ＳＷを“０”にする。また、リードイネーブル信号ＯＥＤおよびウエイト信号ＷＡＩＴが“１”であるのでアンド回路ＡＤ２７は選択信号ＳＲを“１”にする。
【０１６８】
選択信号ＳＮ０〜ＳＮ３が“１”であるので、データ処理部３１３は、キャッシュデータＣＤ０〜ＣＤ３を保持してキャッシュデータＣＤ０〜ＣＤ３とする。すなわち、キャッシュデータＣＤ０〜ＣＤ３は、「ｄ８」，「ｄ２」，「ｄ３」，「ｄ７」となる。
【０１６９】
選択信号ＳＲが“１”であるので、データ処理部３１３は、キャッシュデータＣＤ０〜ＣＤ３を読み出しデータＲＤ０〜ＲＤ３として出力する。この場合は、読み出しデータＲＤ３〜ＲＤ０は、「ｄ７」，「ｄ３」，「ｄ２」，「ｄ８」となる。
【０１７０】
また、選択信号ＳＷが“０”であるので、データ処理部３１３は、クロック信号ＣＬＫの立ち上がりでメモリ書き込みデータＭＷＤ２として書き込みデータＤ２を出力する。すなわちメモリ書き込みデータＭＷＤ２は「ｄ３」となる。
【０１７１】
レジスタ６１は、クロック信号ＣＬＫの立ち上がりでライトイネーブル信号ＷＥＮ０〜ＷＥＮ３を保持して、メモリライトイネーブル信号ＭＷＥＮ０〜ＭＷＥＮ３として出力する。この場合は、ライトイネーブル信号ＷＥＮ０，ＷＥＮ１，ＷＥＮ３が“０”であり、ライトイネーブル信号ＷＥＮ２が“１”であるので、メモリライトイネーブル信号ＭＷＥＮ２は“１”となり、メモリライトイネーブル信号ＭＷＥＮ０，ＭＷＥＮ１，ＭＷＥＮ３が“０”となる。
【０１７２】
レジスタ５１は、クロック信号ＣＬＫの立ち上がりで、状態制御信号ＶＢＮ１〜ＶＢＮ３を保持して遅延状態制御信号ＶＢ１〜ＶＢ３として出力する。すなわち、遅延状態制御信号ＶＢ１〜ＶＢ３はすべて“０”となる。これにより、オア回路ＯＲ３１はウエイト信号ＷＡＩＴを“１”から“０”にする。
【０１７３】
ＭＲＡＭ３２は、メモリライトイネーブル信号ＭＷＥＮ２が“１”であって、かつ，メモリライトイネーブル信号ＭＷＥＮ０，ＭＷＥＤ１，ＭＷＥＮ３であるので、リードイネーブル信号ＯＥＤが“１”であっても書き込み動作を行い、メモリアドレス信号ＭＡが示すアドレス「ａ２」の１６〜２３ビット目に、メモリ書き込みデータＭＷＤ２が示す「ｄ３」を格納する。
【０１７４】
このように、３２ビット書き込み命令時のアドレスと、３２ビット読み出し命令時のアドレスとが一致した場合には、ＭＲＡＭ３２からデータを読み出すのではなく、データ処理部３１３が保持しているキャッシュデータＣＤをＣＰＵ１に出力する。このとき、ＣＰＵ１はＭＲＡＭ３２へのアクセスを要求しているが、実際にはＭＲＡＭ３２へのアクセスは行なわれない。このサイクルを用いて、３２ビット書き込み命令時にＭＲＡＭ３２に格納していない残りのデータの中の８ビットをＭＲＡＭ３２に格納する。
【０１７５】
以上説明したように、この実施の形態においては、キャッシュメモリ制御部３１が、ＣＰＵ１から３２ビットのロング・データの書き込み要求（ＣＰＵ１が３２ビット書き込み命令を実行）時のサイクルではＣＰＵ１から出力されるアドレス信号ＡＤおよびロング・データである書き込みデータＤ０〜Ｄ３をキャッシュデータＣＤ０〜ＣＤ３として保持するとともに、書き込むべき３２ビットのロング・データのうち８ビット（書き込みデータＤ０）だけをＣＰＵ１から出力されるアドレス信号ＡＤに対応するＭＲＡＭ３２の記憶領域に格納し、ＣＰＵ１がＭＲＡＭ３２へのデータの読み出し／書き込み要求を行なわない（ＮＯＰ命令）サイクル時に、保持しているアドレス（キャッシュアドレスＣＡ）に対応するＭＲＡＭ３２の記憶領域に、保持しているロング・データのうちＭＲＡＭ３２に格納していない残りのデータ（キャッシュデータＣＤ１〜ＣＤ３）を８ビット単位で格納するようにしているため、ＭＲＡＭ３２へのロング・データの書き込み実行時の消費電流を抑制しつつ、高速に処理を実行することができる。
【０１７６】
また、この実施の形態においては、キャッシュ制御部３１は、ＣＰＵ１から３２ビット同時読み出し要求を受けた際に、ＣＰＵ１から出力されるアドレス信号ＡＤとキャッシュアドレスＣＡとが一致した場合には、ＭＲＡＭ３２にアクセスすることなく、キャッシュデータＣＤ０〜ＣＤ３をＣＰＵ１に出力するようにしているので、ＭＲＡＭ３２に３２ビット書き込み命令時のすべての書き込みデータＤ０〜Ｄ３が格納されていない場合でも、ＣＰＵ１は３２ビットの書き込みが終了しているものとして動作することが可能となり、１サイクルで３２ビット書き込み命令時の書き込みデータＤ０〜Ｄ３の書き込みを実行したように動作することができる。
【０１７７】
さらに、この実施の形態においては、キャッシュ制御部３１は、ＣＰＵ１から８ビットのデータ書き込み要求を受けた際に、ＣＰＵ１から出力されるアドレス信号ＡＤとキャッシュアドレスＣＡとが一致した場合には、ＭＲＡＭ３２にアクセスすることなく、キャッシュデータＣＤ０〜ＣＤ３の中で対応するデータをＣＰＵ１が出力する書き込みデータＤ０〜Ｄ３に書き換えるようにしているので、ＭＲＡＭ３２に３２ビット書き込み命令時の書き込みデータＤ０〜Ｄ３のすべてのデータが格納されていない場合でも、ＣＰＵ１は３２ビットの書き込みが終了しているものとして動作することが可能となり、１サイクルで３２ビット書き込み命令時の書き込みデータＤ０〜Ｄ３の書き込みを実行したように動作することができる。
【０１７８】
なお、この実施の形態では、ロング・データ（３２ビットの書き込みデータＤ０〜Ｄ３）を分割してＭＲＡＭ３２に書き込むビット数と、ＣＰＵ１がロング・データ書き込み以外のデータ書き込み時のビット数とを同一ビット数（８ビット）としたが、２つのビット数は同じである必要はない。ただし、消費電流を考慮した場合、ＣＰＵ１が書き込むデータのビット数は、ロング・データを分割して書き込むデータのビット数より少ないビット数とすることが好ましい。
【産業上の利用可能性】
【０１７９】
以上のように、本発明にかかるデータ処理装置は、装置の消費電流を小さくする必要がある場合に有用であり、特に、記憶装置としてＭＲＡＭを用いた場合に適している。
【図面の簡単な説明】
【０１８０】
【図１】この発明におけるデータ処理装置であるＭＲＡＭ内蔵マイコンの構成を示すブロック図である。
【図２】ＭＲＡＭモジュールに関するＣＰＵ１の命令と制御信号の関係を示す図である。
【図３】図１に示したキャッシュ制御部の構成の一例を示す回路図である。
【図４】図３に示した論理回路部の動作を示す真理値表を示す図である。
【図５】図３に示したアドレス処理部の構成の一例を示す回路図である。
【図６】図３に示したデータ処理部の構成の一例を示す回路図である。
【図７−１】この発明におけるデータ処理装置の動作を説明するためのタイミングチャートである。
【図７−２】この発明におけるデータ処理装置の動作を説明するためのタイミングチャートである。
【符号の説明】
【０１８１】
１  ＣＰＵ
２，３  ＭＲＡＭモジュール
３１  キャッシュ制御部
３２  ＭＲＡＭ
５１，６１，３１２１，３１２２，３１３４，３１３５  レジスタ
３１１  論理回路部
３１２  アドレス処理部
３１３  データ処理部
３１２０−１，３１２０−２，３１２０−ｙ  ビット処理部
３１２３，３１３１，３１３２，３１３３  セレクタ
３１２４  ＥＸＯＲ回路
３１２５  反転回路
【図１】
2006338513.tif 000003
【図２】
2006338513.tif 000004
【図３】
2006338513.tif 000005
【図４】
2006338513.tif 000006
【図５】
2006338513.tif 000007
【図６】
2006338513.tif 000008
【図７−１】
2006338513.tif 000009
【図７−２】
2006338513.tif 000010