(57)【要約】【課題】  メモリアクセスによる待ち時間を削減することで中央処理装置の処理を高速化するメモリ制御方法及び装置を提供する。【解決手段】  信号生成部１２は、アドレスバス６上のアドレスＡＤに基づいて、ＣＰＵ２が割込コントローラ３から割込ベクタ番号を読み出すステージを検出し、そのステージ中にデータバス７に出力される割込ベクタ番号に基づいてＣＰＵ２が次にアクセスするＲＯＭ４のアドレスを生成する。その生成したアドレスを先読アドレスＰＡとして、ＣＰＵ２がＲＯＭ４へのアクセスを開始する前に、セレクタ１０を介してＲＯＭ４に供給する。この時、出力バッファ１１はオフにする。その後、ＣＰＵ２がＲＯＭ４へのアクセスを開始すると、アドレスバス６上のアドレスがＲＯＭ４に供給されるようにセレクタ１０を切り替えると共に、出力バッファ１１をオンにする。【選択図】  図１
2005038203.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置に接続されたデータバス，アドレスバス，制御線を介して伝送されるデータ，アドレス，制御信号のうち少なくとも一つに基づいて、該中央処理装置による次のメモリアクセスの対象となるアドレスを特定し、その特定したアドレスである先読アドレスを、少なくとも前記中央処理装置がメモリアクセスを開始するまでの間、前記アドレスバスを介して供給されるアドレスの代わりにメモリに供給することを特徴とするメモリ制御方法。
【請求項２】
前記先読アドレスの供給開始後、前記中央処理装置によるメモリアクセスが開始されるまでの間、前記データバスから前記メモリを切り離すことを特徴とする請求項１記載のメモリ制御方法。
【請求項３】
前記アドレスバス上のアドレスが予め設定された比較値に一致した時に、前記データバスからデータを取り込み、その取り込んだ取込データに基づいて、前記先読アドレスを特定することを特徴とする請求項１又は２に記載のメモリ制御方法。
【請求項４】
前記中央処理装置によって取得されるべきデータが格納された前記メモリ上のアドレスを特定するのに必要な位置特定情報を前記取込データとし、前記中央処理装置が前記位置特定情報を取得する際にアクセスするアドレスを前記比較値とすることを特徴とする請求項３に記載のメモリ制御方法。
【請求項５】
前記中央処理装置からデータ取込指令を受けた時に、前記データバスからデータを取り込み、その取り込んだ取込データに基づいて、前記先読アドレスを特定することを特徴とする請求項１又は２に記載のメモリ制御方法。
【請求項６】
前記中央処理装置によって取得されるべきデータが格納された前記メモリ上のアドレスを特定するのに必要な位置特定情報を前記取込データとし、前記中央処理装置が前記位置特定情報を取得する際に該中央処理装置から出力される状態信号を、前記データ取込指令とすることを特徴とする請求項５に記載のメモリ制御方法。
【請求項７】
前記メモリには、割込処理ルーチンの先頭アドレスを配列してなる割込アドレステーブルが少なくとも格納され、
前記位置特定情報は、前記中央処理装置にて起動されるべき割込処理ルーチンの先頭アドレスが格納された前記割込アドレステーブル内での位置を示すオフセット情報であることを特徴とする請求項５又は６に記載のメモリ制御方法。
【請求項８】
中央処理装置に接続されたデータバス，アドレスバス，制御線を介して伝送されるデータ，アドレス，制御信号のうち少なくとも一つに基づいて、該中央処理装置による次のメモリアクセスの対象となるアドレスを生成するアドレス生成手段と、
該アドレス生成手段が生成するアドレスである先読アドレス、又は前記アドレスバスを介して供給されるアドレスのういち、いずれかを選択してメモリに供給する選択手段と、
前記アドレス生成手段にて前記先読アドレスが生成されると、少なくとも前記中央処理装置がメモリアクセスを開始するまでの間、前記先読アドレスがメモリに供給されるように前記選択手段を制御する選択制御手段と、
を備えることを特徴とするメモリ制御装置。
【請求項９】
前記選択手段が前記先読アドレスを選択後、前記中央処理装置によるメモリアクセスが開始されるまでの間、前記データバスからメモリを切り離すバス切離手段を備えることを特徴とする請求項８に記載のメモリ制御装置。
【請求項１０】
前記アドレス生成手段は、前記アドレスバス上のアドレスが予め設定された比較値に一致した時に前記データバスからデータを取り込み、その取り込んだ取込データに基づいて、前記先読アドレスを生成することを特徴とする請求項８又は９に記載のメモリ制御装置。
【請求項１１】
前記アドレス生成手段は、前記中央処理装置からデータ取込指令を受けた時に前記データバスからデータを取り込み、その取り込んだ取込データに基づいて、前記先読アドレスを生成することを特徴とする請求項８又は９に記載のメモリ制御方法。
【請求項１２】
前記中央処理装置は、一つの命令を複数のステージに分けて並列実行するパイプライン処理装置からなり、前記メモリには前記中央処理装置にて実行される命令が格納され、且つ前記メモリのアクセス時間が、１ステージの処理に要する動作周期より長いことを特徴とする請求項８乃至１１いずれか記載のメモリ制御装置。
【請求項１３】
前記中央処理装置に対するウェイト信号を生成するウェイト信号生成手段と、
前記中央処理装置による前記メモリへのアクセスの実行状態を示す状態信号に応じて、前記メモリへのアクセスが実行される場合に前記ウェイト信号生成手段を作動させ、前記メモリへのアクセスが実行されない場合に前記アドレス生成手段を作動させると共に、前記選択手段による前記先読アドレスの選択後に、前記メモリへのアクセスが実行される時には、前記ウェイト信号生成手段の動作を禁止する動作切替手段と、
を備えることを特徴とする請求項１２に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置によるメモリアクセスを高速化するメモリ制御方法及び装置に関する。
【背景技術】
【０００２】
従来より、メモリから命令を読み込んで実行するための処理機能を複数種類のステージに分け、並列して異なるステージの動作を行うことにより、複数の命令処理サイクルを部分的に重複したタイミングで実行するパイプライン処理方法を採用した中央処理装置（ＣＰＵ）が知られている（例えば、非特許文献１参照。）。
【０００３】
ここで、こうした従来のＣＰＵについて、一般的な５段パイプライン処理を実行するものを例に挙げて説明する。このＣＰＵでは、処理機能を、ＩＦ（命令読み出し：フェッチ）、ＤＥＣ（命令解読：デコード）、ＥＸＥ（命令実行）、ＭＡ（メモリアクセス）、ＷＢ（ライトバツク）の５つのステージに分割し、図５（ｂ）に示す如き並列関係にてパイプライン処理が実行されている。
【０００４】
即ち、ＩＦステージでは、予めプログラムが格納されているメモリ（主にＲＯＭ）から命令を読み出し、ＤＥＣステージでは、ＩＦステージで取り込んだ命令を解読（デコード）し、ＥＸＥステージでは、ＤＥＣステージで解読した内容に基づきレジスタ間演算を行う。また、ＭＡステージでは、ＤＥＣステージで解読した内容に基づき、ＥＸＥステージでの演算結果をアドレスとしてＲＯＭやＲＡＭ等のメモリにアクセス（読み出し或いは書き込み）を行い、ＷＢステージでは、ＤＥＣステージで解読した内容に基づき、レジスタにデータを書き込む。
【０００５】
そして、ｎ番目の命令処理サイクルのＩＦステージでメモリからｎ番目の命令を読み出し、該ｎ番目の命令処理サイクルのＤＥＣステージで上記ｎ番目の命令を解読しているときに、ｎ＋１番目の命令処理サイクルのＩＦステージでメモリからｎ＋１番目の命令を読み出し、更に、ｎ番目の命令処理サイクルのＥＸＥステージでｎ番目の命令に基づく演算を行っているときに、ｎ＋１番目の命令処理サイクルのＤＥＣステージでｎ＋１番目の命令を解読すると共に、ｎ＋２番目の命令処理サイクルのＩＦステージでメモリからｎ＋２番目の命令を読み出す、といった具合に、複数の命令処理サイクルの異なるステージ動作を並列に行うことで、命令処理の高速化を図っている。
【０００６】
また、全てのステージ動作は、当該ＣＰＵのシステムクロック（以下、ＣＰＵの動作クロックともいう）に同期して行われ、基本的に、システムクロックの１周期Ｔで、１つのステージが終了するようにされている。
【０００７】
なお、図５（ａ）は、こうしたパイプライン処理を行う従来のＣＰＵ１０２を用いて構成されたコンピュータシステム１０１の概略構成図であり、ＣＰＵ１０２は、アドレスバス１０６，データバス１０７を介してＲＯＭ１０４や図示しないＲＡＭ、その他の周辺機器に接続される。
【０００８】
ところで、ＣＰＵ１０２では、ＩＦステージの長さ（即ち、ＩＦステージの実行時間）は、プログラムが格納されたメモリ（ここではＲＯＭ１０４）の応答速度により決定される。即ち、メモリから命令を確実に読み出すためには、図５（ｂ）に示すように、ＩＦステージの実行時間Ｔを、アドレスバス上のアドレスを変化させてからデータバス上のデータが確定するまでの時間（メモリアクセスに要する時間）以上に設定しておかなければならない。
【０００９】
そして、パイプライン処理では、全てのステージを並列実行するため、各ステージの所要時間は全て等しくする必要があり、その長さは、最も処理時間を要するステージに支配される。従って、従来のＣＰＵ１０２では、ＣＰＵの処理速度（つまり、ＥＸＥステージの実行間隔）を、ＲＯＭ１０４の応答速度以上には高速化することができないという問題があった。つまり、ＣＰＵ１０２の処理速度がＲＯＭ１０４の応答速度より高速であっても、ＲＯＭ１０４を含めて構成されるシステムの処理速度は、ＲＯＭ１０４の応答速度よりも高速化することができなかったのである。
【００１０】
これに対して、図６（ａ）に示すコンピュータシステム１０１ａのように、ＣＰＵ１０２とＲＯＭ１０４の速度差を調整するためのウェイト制御回路１０５を設け、ＣＰＵ１０２の処理速度をＲＯＭ１０４の応答速度よりも高速化することで、処理の高速化を図ることが考えられる。
【００１１】
つまり、ウェイト制御回路１０５は、アドレスバス１０６や図示しない読み出しや書き込み等の制御信号をモニタし、ＲＯＭ１０４へのアクセスを検出すると、ウェイト信号Ｗを予め決められたクロック数分だけアクティブとする。そして、ＣＰＵ１０２はウェイト信号Ｗがアクティブである間だけ、ステージの更新を行わず、同じステージに留まるようパイプラインを制御するのである。
【００１２】
なお、ＩＦステージによるＲＯＭ１０４からの命令読み出しが途切れることなく行われるのであれば、全てのステージでウェイト信号Ｗが発生するため、上記手法による高速化は無意味であるが、実際には、分岐命令の実行時や割込要求に応じた割込処理ルーチンの起動時などでは、ＲＯＭ１０４からの命令読み出しが途切れる期間が存在するため、上記手法による高速化が意味を持つのである。
【００１３】
以下にその具体例を説明する。
図６（ｂ）は、ｎ番目の命令処理サイクルにおいて分岐処理が実行される場合の動作を示すタイミング図である。但し、ＣＰＵ１０２のステージ実行時間を（１／２）・Ｔ、ＲＯＭ１０４の応答時間をＴ、ウェイト信号Ｗがアクティブである時間を（１／２）・Ｔとする。
【００１４】
図６（ｂ）に示すように、ｎ番目の命令処理サイクルのＩＦステージでＲＯＭ１０４からｎ番目の命令を読み出す場合、ウェイト制御回路１０５によりＲＯＭ１０４へのアクセスが検出されるため、ウェイト信号Ｗが期間（１／２）・Ｔの間アクティブとなり、ＣＰＵ１０２はＴの期間にわたりＩＦステージを実行する。つまりＲＯＭ１０４の応答時間とＩＦステージの実行時間が同じとなるため、ＣＰＵ１０２はＲＯＭ１０４から命令を確実に読み出すことが可能となる。
【００１５】
次にＣＰＵ１０２は、ｎ番目の命令処理サイクルのＤＥＣステージにおいて、ＲＯＭ１０４から読み出した命令が分岐命令であることを知るため、分岐先の命令を処理する命令処理サイクル（ｎ＋３番目に位置する）のＩＦステージまでの間にある、一切の命令処理サイクルのＩＦステージ（ｎ＋１番目およびｎ＋２番目に位置する）の実行を停止するようにパイプライン制御を行う。但し、ｎ＋１番目の命令処理サイクルのＩＦステージは既に実行されているため、ｎ＋２番目の命令処理サイクルのＩＦステージの実行のみを停止するようにパイプラインの制御を行う。ここでｎ＋１番目の命令処理サイクルのＩＦステージでは、前記ｎ番目の命令処理サイクルのＩＦステージと同様にウェイト処理されるため、ＲＯＭ１０４からｎ＋１番目の命令が正確に読み出されるが、実行すべき命令ではないため破棄される。
【００１６】
続くｎ番目の命令処理サイクルのＥＸＥステージでは、分岐先のアドレスを求めるアドレス演算が実行される。この時、ｎ＋１番目の命令処理サイクルのＤＥＣステージおよびｎ＋２番目の命令処理サイクルのＩＦステージは実行されず、従って、ＲＯＭ１０３へのアクセスが存在しないため、ウェイト処理されること無く、通常のステージ実行時間（１／２）・Ｔ内で処理される。
【００１７】
続くｎ番目の命令処理サイクルのＭＡステージでは、命令の読み出しアドレスを示すプログラムカウンタの値が、前記ＥＸＥステージにて算出された分岐すべき先のアドレスの値に更新されるため、ｎ＋３番目の命令処理サイクルのＩＦステージにおいて、分岐先の命令がＲＯＭ１０４より読み出される。ここでｎ＋３番目の命令処理サイクルのＩＦステージでは、前記ｎ番目の命令処理サイクルのＩＦステージと同様にウェイト処理されるため、ＲＯＭ１０４からｎ＋３番目の命令が正確に読み出される。つまりｎ番目の命令の読み出しを開始してから、ｎ＋３番目の命令の読み出しが完了する時間が、全てのステージが同じ長さＴに設定された図５（ｂ）の場合と比べ、（１／２）・Ｔ時間だけ高速化されたこととなる。
【００１８】
また図７は、ｎ番目の命令処理サイクルのＤＥＣステージにて割込要求を受け付けた場合の動作を示すタイミング図である。但し、ＲＯＭ１０４には、割込要因毎にプログラミングされた割込処理ルーチンと、その割込処理ルーチンの先頭アドレスの集合体である割込アドレステーブルとが格納され、割込アドレステーブルの検索は図示しない割込コントローラから読み出される割込ベクタ番号により行われるものとする。また、割込ベクタ番号とは、割込アドレステーブルの先頭アドレスからのオフセット量であり、割込要因毎に予め割り振られているものである。つまり、割込アドレステーブルの先頭アドレス値に割込ベクタ番号を加えることにより、発生した割込要求に対応した割込処理ルーチンの先頭アドレスを、割込アドレステーブルより取得することができるようにされている。
【００１９】
図７に示すように、ｎ番目の命令処理サイクルのＤＥＣステージにて割込要求が受け付けられると、ｎ番目の命令処理サイクルのＩＦステージにて読み込んだ命令は破棄され、ｎ番目の命令処理サイクルのＤＥＣ以降のステージで割込処理ルーチンの起動に係る処理が行われる。
【００２０】
まずｎ番目の命令処理サイクルののＤＥＣステージでは、ｎ番目の命令処理サイクルのＩＦステージで読み込んだ命令に従って用意されているデータの変わりに、図示していない割込コントローラから割込ベクタ番号を読み出すために必要なアドレス情報が用意される。ここでｎ＋１番目の命令処理サイクルのＩＦステージは、本来であれば必要のないステージであるが、割込要求を受け付けた時点では既にステージ処理されているため、ＲＯＭ１０４からの命令読み出しを行うが、命令は実行せずに破棄される。このとき、ウェイト制御回路１０５によるウェイト信号ＷがアクティブとなりＴの期間にわたって処理される。以後、ｎ＋２ないしｎ＋６番目の命令処理サイクルのＩＦステージは、割込要求を受け付けた時点では未処理のステージであるため、ＲＯＭ１０４からの命令読み出しは一切行わないように制御される。
【００２１】
次にｎ番目の命令処理サイクルのＥＸＥステージでは、ｎ番目の命令処理サイクルのＤＥＣステージにて用意されたアドレス情報を元に、必要であれば演算を行い図示していない割込コントローラから割込ベクタ番号を読み出すためのアドレスを生成する。
【００２２】
次にｎ番目の命令処理サイクルのＭＡステージでは、ｎ番目の命令処理サイクルのＥＸＥステージで生成されたアドレスに従って、図示していない割込コントローラからデータバス７を介し割込ベクタ番号を読み込み、ｎ＋２番目の命令処理サイクルのＤＥＣステージへ引き渡す。同時にｎ＋２番目の命令処理サイクルのＤＥＣステージでは、割込アドレステーブルの先頭アドレス情報が用意される。
【００２３】
次にｎ＋２番目の命令処理サイクルのＥＸＥステージでは、ｎ番目の命令処理サイクルのＭＡステージより引き渡された割込ベクタ番号と、予め決められた割込アドレステーブルの先頭アドレス情報を元に、割込アドレステーブルを参照するためのアドレス演算が行われる。
【００２４】
次にｎ＋２番目の命令処理サイクルのＭＡステージでは、ｎ＋２番目の命令処理サイクルのＥＸＥステージで算出されたアドレスに従って、ＲＯＭ１０４からデータつまり発生した割込要求に対応した割込処理ルーチンの開始アドレスが読み出され、ｎ＋４番目の命令処理サイクルのＤＥＣステージへ引き渡す。当然の如く、ｎ＋２番目の命令処理サイクルのＭＡステージは、ＲＯＭ１０３からの読み出しであるため、ウェイト制御回路１０５によるウェイト信号ＷがアクティブとなりＴの期間にわたって処理される。
【００２５】
次にｎ＋４番目の命令処理サイクルのＥＸＥステージでは、ｎ＋２番目の命令処理サイクルのＭＡステージより引き渡されたデータつまり発生した割込要求に対応した割込処理ルーチンの開始アドレスをｎ＋４番目の命令処理サイクルのＭＡステージに引き渡す。
【００２６】
次にｎ＋４番目の命令処理サイクルのＭＡステージでは、ｎ＋４番目の命令処理サイクルのＥＸＥステージより引き渡されたデータつまり発生した割込要求に対応した割込処理ルーチンの開始アドレスをプログラムカウンタにセットすると共に、ｎ＋７番目の命令処理サイクルのＩＦステージを開始するため、割込処理ルーチンの先頭命令がＲＯＭ１０４より読み出され、以降のステージにて発生した割込要求に対応した割込処理ルーチンが実行される。当然の如く、ｎ＋７番目の命令処理サイクルのＩＦステージは、ＲＯＭ１０４からの読み出しであるため、ウェイト制御回路１０５によるウェイト信号ＷがアクティブとなりＴの期間にわたって処理される。つまり、全てのステージが期間Ｔで処理される場合と比較して、ｎ番目の命令の読み出しを開始してから、ｎ＋７番目の命令の読み出しが完了する時間が、２・Ｔ（＝（１／２）・Ｔ・４）時間だけ高速化されることとなる。
【非特許文献１】デイビッド・Ａ・パターソン（Ｄａｖｉｄ  Ａ．Ｐａｔｔｅｒｓｏｎ）、ション・Ｌ・ヘネシー（Ｊｏｈｎ  Ｌ．Ｈｅｎｎｅｓｓｙ）著、「コンピュータの構成と設計（ＣＯＭＰＵＴＥＲ  ＯＲＧＡＮＩＺＡＴＩＯＮ  ＆  ＤＥＳＩＧＮ）」第２版、日経ＢＰ社発行、１９９９年、４３０〜４３３ページ）
【発明の開示】
【発明が解決しようとする課題】
【００２７】
ところで、上述した効果は、ＣＰＵとＲＯＭの速度差が大きく、多数の周辺回路を内蔵し、これら周辺回路から頻繁に割込要求が発生したり、状況等に応じて処理を様々に変化させるプログラム（即ち分岐命令を多く含むプログラム）を実行する組み込み機器制御用のマイクロコンピュータにおいては絶大であるが、更なる高速化への要求は途絶えることがない。
【００２８】
そこで本発明は、上記要求に答えるべくなされたものであり、メモリアクセスによる待ち時間を削減することで中央処理装置の処理を高速化するメモリ制御方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００２９】
上記目的を達成するためになされた第一発明のメモリ制御方法では、まず、中央処理装置に接続されたデータバス，アドレスバス，制御線を介して伝送されるデータ，アドレス，制御信号のうち少なくとも一つに基づいて、その中央処理装置による次のメモリアクセスの対象となるアドレスを特定する。そして、特定したアドレスを先読アドレスとして、この先読アドレスを、少なくとも中央処理装置がメモリアクセスを開始するまでの間、アドレスバスを介して供給されるアドレスの代わりにメモリに供給する。
【００３０】
これにより、中央処理装置は、メモリアクセスを開始する前に先読アドレスが供給される分だけ、メモリのアクセス時間を短縮でき、処理を高速化することができる。但し、先読アドレスの供給は、中央処理装置が対象となるメモリへのアクセスを行っていない期間でのみ実行可能である。
【００３１】
また、先読アドレスをメモリに供給すると、中央処理装置がメモリアクセスを開始する前にメモリからデータバスにデータが読み出され、データバス上のデータを破壊してしまう可能性がある。このため、先読アドレスの供給開始後、中央処理装置によるメモリアクセスが開始されるまでの間、データバスからメモリを切り離すことが望ましい。
【００３２】
ところで、先読アドレスの特定方法としては、例えば、アドレスバス上のアドレスが予め設定された比較値に一致した時に、データバスからデータを取り込み、その取り込んだ取込データに基づいて、先読アドレスを特定してもよいし、中央処理装置からデータ取込指令を受けた時に、データバスからデータを取り込み、その取り込んだ取込データに基づいて、先読アドレスを特定してもよい。
【００３３】
これらの場合、中央処理装置によって取得されるべきデータが格納されたメモリ上のアドレスを特定するのに必要な位置特定情報を、取込データとすることが考えられる。そして、比較値との一致を取込データの取込タイミングとする前者では、中央処理装置が位置特定情報を取得する際にアクセスするアドレスを前記比較値とすればよく、また、データ取込指令を取込データの取込タイミングとする後者では、中央処理装置が位置特定情報を取得する際に該中央処理装置から出力される状態信号を、データ取込指令とすればよい。
【００３４】
そして、メモリに、割込処理ルーチンの先頭アドレスを配列してなる割込アドレステーブルが少なくとも格納されているときには、中央処理装置にて起動されるべき割込処理ルーチンの先頭アドレスが格納された割込アドレステーブル内での位置を示すオフセット情報を位置特定情報として、上述の方法を適用することができる。
【００３５】
この場合、割込アドレステーブルから起動すべき割込処理ルーチンの先頭アドレスを取得する際のアクセス時間が削減され、割込要求を受け付けてから、割込処理ルーチンが起動されるまでに要する時間を短縮することができる。
【００３６】
次に、第二発明のメモリ制御装置では、アドレス生成手段が、中央処理装置に接続されたデータバス，アドレスバス，制御線を介して伝送されるデータ，アドレス，制御信号のうち少なくとも一つに基づいて、中央処理装置による次のメモリアクセスの対象となるアドレスを生成し、選択手段が、アドレス生成手段が生成するアドレスである先読アドレス、又はアドレスバスを介して供給されるアドレスのういち、いずれかを選択してメモリに供給する。
【００３７】
そして、選択制御手段が、アドレス生成手段にて先読アドレスが生成されると、少なくとも中央処理装置がメモリアクセスを開始するまでの間、先読アドレスがメモリに供給されるように選択手段を制御する。
【００３８】
つまり、本発明のメモリ制御装置は、第一発明のメモリ制御方法を実現する装置であり、この方法を実施した場合と同様の効果を得ることができる。
そして、選択手段が前記先読アドレスを選択後、中央処理装置によるメモリアクセスが開始されるまでの間、バス切離手段がデータバスからメモリを切り離すように構成されていれば、先読アドレスによってメモリから読み出されたデータが、中央処理装置がメモリアクセスを開始する前に、データバスに出力されてしまうことを防止できる。
【００３９】
なお、アドレス生成手段は、アドレスバス上のアドレスが予め設定された比較値に一致した時に前記データバスからデータを取り込み、その取り込んだ取込データに基づいて、先読アドレスを生成してもよいし、中央処理装置からデータ取込指令を受けた時にデータバスからデータを取り込み、その取り込んだ取込データに基づいて、先読アドレスを生成してもよい。
【００４０】
ところで、このようなメモリ制御装置は、中央処理装置が一つの命令を複数のステージに分けて並列実行するパイプライン処理装置からなり、メモリには中央処理装置にて実行される命令が格納され、且つメモリのアクセス時間が、１ステージの処理に要する所要時間より長い場合に好適に用いることができる。
【００４１】
即ち、このような中央処理装置では、メモリへのアクセスを行う時には、ステージを延長して処理を行うことになるが、メモリ制御装置にて先読アドレスが生成されたときには、そのステージの延長期間が短縮または省略されるため、中央処理装置の処理効率を向上させることができる。
【００４２】
そして、メモリ制御装置には、中央処理装置に対するウェイト信号を生成するウェイト信号生成手段を設けてもよい。この場合、更に、中央処理装置によるメモリへのアクセスの実行状態を示す状態信号に応じて、メモリへのアクセスが実行される場合にウェイト信号生成手段を作動させ、メモリへのアクセスが実行されない場合にアドレス生成手段を作動させると共に、選択手段による先読アドレスの選択後に、メモリへのアクセスが実行される時には、ウェイト信号生成手段の動作を禁止する動作切替手段を設けてもよい。
【００４３】
つまり、本発明のメモリ制御装置があれば、ウェイト信号を生成するための装置を別途設ける必要がないため、中央処理装置を中心とし本発明のメモリ制御装置を含むコンピュータシステムの構成を簡略化できる。
【発明を実施するための最良の形態】
【００４４】
以下に本発明の実施形態を図面と共に説明する。
［第１実施形態］
図１は、本発明が適用された第１実施形態のコンピュータシステムの概略構成図である。
【００４５】
図１に示すように、第１実施形態のコンピュータシステム１は、５段パイプライン処理を実行する中央処理装置（ＣＰＵ）２と、図示しない周辺機器からの割込要求に応じてＣＰＵ４に対する割込信号ＩＰを出力すると共に、割込要求に対応した割込ベクタ番号を内部のレジスタに設定する割込コントローラ３と、ＣＰＵ２が実行する各種プログラム、割込処理ルーチン、割込処理ルーチンの先頭アドレスを配列してなる割込アドレステーブルが少なくとも格納されたＲＯＭ４と、ＣＰＵ２からのアクセス要求信号（例えばＲＯＭ４に対するチップセレクト信号）ＣＳに従って、ＣＰＵ２に対するウェイト信号Ｗの生成や、ＲＯＭ３に対するアクセスの制御を行うメモリ制御装置５とを備えている。そして、これらＣＰＵ２，割込コントローラ３，メモリ制御装置５は、アドレスバス６，データバス７を介して相互に接続され、また、ＲＯＭ４は、メモリ制御装置５を介してアドレスバス６，データバス７に接続されている。
【００４６】
このうち、ＣＰＵ２は、従来装置と同様に、実行すべき各命令を、いずれも動作クロックの１サイクルにて実行可能なＩＦステージ，ＤＥＣステージ，ＥＸＥステージ，ＭＡステージ，ＷＢステージの五つのステージからなる命令処理サイクルを、５段パイプライン処理によって並列実行するように構成されている。
【００４７】
そして、ＣＰＵ２は、メモリ制御装置５から供給されるウェイト信号Ｗがアクティブであれば、次のステージに移行することなく、実行中のステージを延長する。また、ＩＦステージや、ＭＡステージにて、ＲＯＭ４から命令やデータを読み込む場合に、アクセス要求信号ＣＳを生成するように構成されている。
【００４８】
また、割込コントローラ３から割込信号ＩＰが入力されると、割込コントローラ３の内部レジスタから割込ベクタ番号を読み出し、その割込ベクタ番号に基づいて、ＲＯＭ４の割込アドレステーブルから起動すべき割込処理ルーチンの先頭アドレスを取得する割込ルーチン起動処理を実行するように構成されている。
【００４９】
ここで割込ベクタ番号とは、割込アドレステーブルの先頭アドレスからのオフセット量を示すものであり、割込要因毎に予め割り振られている。つまり、割込アドレステーブルの先頭アドレス値に割込ベクタ番号を加えることにより、発生した割込要求に対応した割込処理ルーチンの先頭アドレスが格納されたアドレスを得ることができるようにされている。
【００５０】
次に、メモリ制御装置５は、アドレスバス６を介して供給されるアドレスＡＤ又は後述する先読アドレスＰＡのいずれかを、アドレス選択信号Ｘに従って選択しＲＯＭ４に供給する選択手段としてのセレクタ１０と、出力許可信号Ｅがアクティブである場合に、ＲＯＭ４から読み出されたデータをデータバス７に出力するバス切離手段としての出力バッファ１１と、ＣＰＵ２からのアクセス要求信号ＣＳ、アドレスバス６，データバス７を介して供給されるアドレスやデータに基づいて、ＣＰＵ２に対するウェイト信号Ｗ、セレクタ１０に対するアドレス選択信号Ｘ、出力バッファ１１に対する出力許可信号Ｅを生成する信号生成部１２とを備えている。
【００５１】
このうち信号生成部１２は、割込コントローラ３の内部レジスタから割込ベクタ番号を読み出す際にアクセスされるアドレスを比較値として、この比較値とアドレスバス６上のアドレスとを比較するアドレス監視部と、比較値とアドレスバス上６のアドレスとが一致した場合に、データバス７上のデータ、即ち割込ベクタ番号を取り込んで、その取り込んだ割込ベクタ番号を、予め設定された割込アドレステーブルの先頭アドレスに加算することで先読アドレスを生成するアドレス生成手段としての先読アドレス生成部と、図２に示す状態遷移図に従って動作することにより、ウェイト信号Ｗ，アドレス選択信号Ｘ，出力許可信号Ｅの出力タイミングを制御する選択制御手段としてのタイミング制御部とを備えている。
【００５２】
そして、図２に示すように、タイミング制御部の内部状態は、「待機Ｓ１」「ウェイト要求Ｓ２」「先読アドレス生成Ｓ３」「先読アドレス供給Ｓ４」の４つの状態からなり、ＣＰＵ２の動作クロックに同期して、以下のように状態遷移をする。
【００５３】
まず、信号生成部１２が起動すると「待機Ｓ１」状態となる。この時、アドレス選択信号Ｘは、セレクタ１０がアドレスバス６上のアドレスＡＤを選択（Ｘ←［バス選択］）するように設定され、また、出力許可信号Ｅはアクティブ（Ｅ←１）、ウェイト信号Ｗは非アクティブ（Ｗ←０）となる。
【００５４】
そして、「待機Ｓ１」状態では、ＣＰＵ２からのアクセス要求がある（ＣＳ＝１）場合には、ウェイト信号Ｗをアクティブ（Ｗ←１）にすると共に、出力許可信号Ｅが非アクティブ（Ｅ＝０）であればこれをアクティブ（Ｅ←１）、即ち、ＲＯＭ４から読み出されたデータがデータバス７に出力されるようにして、「ウェイト要求Ｓ２」状態に遷移する。
【００５５】
この「ウェイト要求Ｓ２」状態では、１クロック分の期間が経過すると、ウェイト信号Ｗを非アクティブ（Ｗ←０）にして、「待機Ｓ１」状態に遷移する。
また、「待機Ｓ１」状態では、ＣＰＵ２からのアクセス要求がない（ＣＳ＝０）場合には、出力許可信号Ｅがアクティブ（Ｅ＝１）であれば、これを非アクティブ（Ｅ←０）に切り替えると共に、上述のアドレス監視部での監視結果に応じて状態を遷移させる。即ち、アドレスバス６上のアドレスＡＤと比較値とが不一致であれば「待機Ｓ１」状態に留まり、一方、両者が一致していれば、「先読アドレス生成Ｓ３」状態に遷移する。
【００５６】
そして、「先読アドレス生成Ｓ３」状態では、上記先読アドレス生成部を動作させて先読アドレスを生成し、１クロック分の期間が経過すると、セレクタ１０が先読アドレスＰＡを選択するようにアドレス選択信号Ｘを設定（Ｘ←［先読選択］）して、「先読アドレス供給Ｓ４」状態に遷移する。これにより、ＲＯＭ４に対する先読アドレスの供給が開始される。
【００５７】
「先読アドレス供給Ｓ４」状態では、ＣＰＵ２からのアクセス要求がない（ＣＳ＝０）間は、「先読アドレス供給Ｓ４」状態に留まり、ＣＰＵ２からのアクセス要求があると（ＣＳ＝１）、アドレスバス６のアドレスＡＤを選択してＲＯＭ４に供給するようにアドレス選択信号Ｘを設定（Ｘ←［バス選択］）すると共に、ＲＯＭ４から読み出されたデータがデータバス７に出力されるように出力許可信号Ｅをアクティブ（Ｅ←１）にして、「待機Ｓ１」状態に遷移する。
【００５８】
このように構成されたメモリ制御装置５は、ＣＰＵ２からのアクセス要求がある（ＣＳ＝１）場合は、ＣＰＵ２に対して１クロックの間だけウェイト要求を行い（Ｗ←１）、ＲＯＭ４へのアクセス時間を確保すると共に、ＲＯＭ４をデータバス７に接続（Ｅ←１）して、ＣＰＵ２がＲＯＭ４から確実にデータを読み込むことができるようにしている。つまり、ＲＯＭ４から連続的に命令が読み出されている時には、メモリ制御装置５の内部状態は、図３の時刻ｔ１〜ｔ５に示すように、「ウェイト要求Ｓ２」状態と「待機Ｓ１」状態を交互に繰り返すことになる。
【００５９】
一方、ＣＰＵ２からのアクセス要求がない（ＣＳ＝０）場合は、「待機Ｓ１」状態に留まって（時刻ｔ５）、ＲＯＭ４をデータバス７から切り離す（Ｅ←０）と共にアドレスバス６を監視する。そして、アドレスバス６上のアドレスが比較値と一致した時、即ち、ＣＰＵ２が割込コントローラ３から割込ベクタ番号を読み出して割込処理ルーチンを起動しようとしている時には、「先読アドレス生成Ｓ３」状態に遷移し（時刻ｔ６）、データバス７に出力された割込ベクタ番号を取り込んで、先読アドレスを生成し、引き続き「先読アドレス供給Ｓ４」状態に遷移し（時刻ｔ７）、ＣＰＵ２が起動すべき割込処理ルーチンの先頭アドレスを取得するためのＲＯＭアクセスを開始する前に、先読アドレスをＲＯＭ４に供給（Ｘ←［先読選択］）する。その後、ＣＰＵ２からのアクセス要求があると（ＣＳ＝１）、「待機Ｓ１」状態に遷移し（時刻ｔ８）、ＲＯＭ４に供給するアドレスを先読アドレスＰＡからアドレスバス６上のアドレスＡＤに切り替える（Ｘ←［バス選択］）と共に、ＲＯＭ４をデータバス７に接続（Ｅ←１）して、ＣＰＵ２が、ウェイト処理を行うことなく１クロックにてデータを読み込むことができるようにしている。
【００６０】
次に、ＣＰＵ２が割込処理ルーチンを起動する際の動作を、図３に示すタイミング図に沿って説明する。但し、ＣＰＵ２のステージ実行時間（１クロック分の期間）をＴ、ＲＯＭ３の応答時間を２・Ｔとする。
【００６１】
図３に示すように、ｎ番目の命令処理サイクルのＤＥＣステージにて割込要求が受け付けられたとすると（時刻ｔ３）、ｎ番目の命令処理サイクルのＩＦステージにて読み込んだ命令は破棄され、ｎ番目の命令処理サイクルのＤＥＣ以降のステージで割込処理ルーチンの起動処理が行われる。
【００６２】
まずｎ番目の命令処理サイクルののＤＥＣステージでは、ｎ番目の命令処理サイクルのＩＦステージで読み込んだ命令に従って用意されているデータの変わりに、割込コントローラ３から割込ベクタ番号を読み出すために必要なアドレス情報が用意される。ここでｎ＋１番目の命令処理サイクルのＩＦステージは、本来であれば必要のないステージであるが、割込要求を受け付けた時点では既にステージ処理されているため、ＲＯＭ４からの命令の読み出しは行われ、その読み出した命令は実行することなく破棄される。この時、メモリ制御装置５に対するアクセス要求信号ＣＳもアクティブとされ、メモリ制御装置５からのウェイト信号Ｗもアクティブとなるため、このステージは２・Ｔの期間にわたって処理される。
【００６３】
但し、それ以降のｎ＋２ないしｎ＋６番目の命令処理サイクルのＩＦステージは、割込要求を受け付けた時点では未処理のステージであるため、ＲＯＭ４からの命令読み出しは一切行わないように制御される。
【００６４】
次にｎ番目の命令処理サイクルのＥＸＥステージでは（時刻ｔ５）、ｎ番目の命令処理サイクルのＤＥＣステージにて用意されたアドレス情報を元に、必要であれば演算を行って割込コントローラ３から割込ベクタ番号を読み出すためのアドレスを生成する。
【００６５】
次にｎ番目の命令処理サイクルのＭＡステージでは（時刻ｔ６）、ｎ番目の命令処理サイクルのＥＸＥステージで生成されたアドレスに従って、割込コントローラ３からデータバス７を介し割込ベクタ番号を読み込み、ｎ＋２番目の命令処理サイクルのＤＥＣステージへ引き渡す。同時にｎ＋２番目の命令処理サイクルのＤＥＣステージでは、割込アドレステーブルの先頭アドレス情報が用意される。
【００６６】
この時、メモリ制御装置５（「先読アドレス生成Ｓ３」状態に遷移）は、アドレスバス６およびＣＰＵ２が出力する制御信号（読出信号など）により、当該ステージが、割込コントローラ３より割込ベクタ番号を読み出すステージであることを検出し、前もって割込アドレステーブルを参照するための先読アドレスＰＡを生成する。
【００６７】
次にｎ＋２番目の命令処理サイクルのＥＸＥステージでは（時刻ｔ７）、ｎ番目の命令処理サイクルのＭＡステージより引き渡された割込ベクタ番号と、予め決められた割込アドレステーブルの先頭アドレス情報を元に、割込アドレステーブルを参照するためのアドレス演算が行われる。
【００６８】
この時、メモリ制御装置５（「先読アドレス供給Ｓ４」状態に遷移）は、先のステージ中に生成した先読アドレスＰＡがＲＯＭ４に供給されるようにアドレス選択信号Ｘを設定すると共に、出力許可信号Ｅを非アクティブにして出力バッファ１１をオフすることにより、ＲＯＭ４をデータバス７から切り離す。
【００６９】
次にｎ＋２番目の命令処理サイクルのＭＡステージでは（時刻ｔ８）、ｎ＋２番目の命令処理サイクルのＥＸＥステージで算出されたアドレスに従って、ＲＯＭ４からデータ、即ち、受け付けた割込要求に対応した割込処理ルーチンの先頭アドレスを読み込んで、ｎ＋４番目の命令処理サイクルのＤＥＣステージへ引き渡す。
【００７０】
この時、メモリ制御装置５（「待機Ｓ１」状態に遷移）は、アドレスバス６上のアドレスＡＤがＲＯＭ４に供給されるようにアドレス選択信号Ｘを設定すると共に、ＲＯＭ４から読み出されたデータが出力バッファ１１を介してデータバス７に出力されるように、出力許可信号Ｅを設定する。これにより、データバス７上には、ＣＰＵ２が受け付けた割込要求に対応する割込処理ルーチンの先頭アドレスが出力される。
【００７１】
なお、ｎ＋２番目の命令処理サイクルのＭＡステージは、ＲＯＭ４からの読み出しであるため、本来ならば、ウェイト処理が行われ、２クロック分の期間２・Ｔにわたって処理されるべきステージである。しかし、前述したように、ＲＯＭ４には、メモリ制御装置５によって前のステージ（時刻ｔ７）から、先読アドレスＰＡが供給されているため、ウェイト処理を行わなくとも、ＲＯＭ４のアクセス時間２・Ｔが確保されるのである。
【００７２】
次にｎ＋４番目の命令処理サイクルのＥＸＥステージでは（時刻ｔ９）、ｎ＋２番目の命令処理サイクルのＭＡステージより引き渡されたデータ、割込処理ルーチンの先頭アドレスをｎ＋４番目の命令処理サイクルのＭＡステージに引き渡す。
【００７３】
次にｎ＋４番目の命令処理サイクルのＭＡステージでは（時刻ｔ１０）、ｎ＋４番目の命令処理サイクルのＥＸＥステージより引き渡されたデータ、つまり割込処理プログラムの先頭アドレスをプログラムカウンタにセットすると共に、ｎ＋７番目の命令処理サイクルのＩＦステージを開始する。これにより、割込処理プログラムの先頭命令がＲＯＭ４より読み出され、以降のステージにて受け付けた割込要求に対応した割込処理ルーチンが実行される。当然の如く、ｎ＋７番目の命令処理サイクルのＩＦステージは、ＲＯＭ４からの読み出しであるため、メモリ制御装置５からのウェイト要求が発生し（Ｗ＝１）、２・Ｔの期間にわたって処理される。
【００７４】
以上詳述したように、本実施形態のコンピュータシステム１のメモリ制御装置５によれば、アドレスバス６上のアドレスＡＤや、ＣＰＵ２が出力する制御信号（例えば読出信号）から、割込ベクタ番号を読み出すステージを検出し、データバス７上に出力される割込ベクタ番号に基づいて、ＣＰＵ２が次にアクセスするＲＯＭ４のアドレスを生成し、これを先読アドレスとして、ＣＰＵ２がＲＯＭ４へのアクセスを開始する前に、ＲＯＭ４に供給するようにされている。
【００７５】
従って、ＣＰＵ２は、ＲＯＭ４から割込処理ルーチンの先頭アドレスを読み出す時には、そのためのＲＯＭ４へのアクセスを開始する前に先読アドレスが供給されていた期間分だけ、ＲＯＭ４に対するアクセス時間、ひいては割込処理ルーチンの起動処理に要する時間を短縮することができる。その結果、割込処理の応答性を向上させることができると共に、ＣＰＵ２での処理を高速化することができる。なお、この効果は、コンピュータシステム１が多くの周辺回路を内蔵し、これら周辺回路から頻繁に割込要求が発生するほど大きく、従って、当該コンピュータシステム１を、組込機器制御用のマイクロコンピュータ等に適用した場合に、非常に効果的である。
［第２実施形態］
次に、第２実施形態について説明する。
【００７６】
なお、本実施形態のコンピュータシステム１ａは、第１実施形態のコンピュータシステム１とは、構成の一部が異なるだけであるため、構成の相違する部分を中心に説明する。
図４に示すように、本実施形態のコンピュータシステム１ａにおいて、ＣＰＵ２ａは、メモリ制御装置５の信号生成部１２ａに対して、割込コントローラ３から割込ベクタ番号を読み出すステージの間アクティブとなるステージ識別信号ＲＶを出力するように構成されている。
【００７７】
そして、第１実施形態において、メモリ制御装置５を行使絵する信号生成部１２は、アドレスバス６上のアドレスが一致した時に、データバス７上のデータを取り込んで、先読アドレスを生成するようにされているが、本実施形態において、メモリ制御装置５ａを構成する信号生成部１２ａでは、ステージ識別信号ＲＶがアクティブである場合に、データバス７上のデータを取り込んで、先読アドレスを生成するように構成されている。
【００７８】
このように構成されたメモリ制御装置５ａは、第１実施形態のメモリ制御装置５と全く同様に、ウェイト信号Ｗ，アドレス選択信号Ｘ，出力許可信号Ｅを生成する。
従って、本実施形態のコンピュータシステム１ａによれば、第１実施形態１と全く同様の効果を得ることができる。しかも、メモリ制御装置５ａの信号生成部１２ａは、アドレス監視部が不要となるため、その分だけ装置構成を簡略化することができる。
【００７９】
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるもおではなく、様々な態様にて実施することが可能である。
例えば、上記実施形態では、ウェイト信号Ｗによりステージの長さを１クロック分だけ延長しているが、各ステージの処理の所要時間と比較してＲＯＭ４のアクセス時間がより長い場合には、ウェイト信号Ｗによりステージの長さを２クロック分以上延長するように構成してもよい。
【００８０】
また、上記実施形態では、メモリ制御装置５，５ａをＲＯＭに対して適用したが、ＲＡＭや、ＩＯ入力に対して適用してもよい。
更に、上記実施形態では、５段パイプライン処理を行うＣＰＵ２，２ａに対して適用したが、パイプライン処理の段数は４段以下、又は６段以上であってもよい。
【図面の簡単な説明】
【００８１】
【図１】第１実施形態のコンピュータシステムの概略構成図である。
【図２】メモリ制御装置を構成する信号生成部の動作を説明するための状態遷移図である。
【図３】割込処理ルーチンの起動時における各部、及びＣＰＵ内部の動作を示すタイミング図である。
【図４】第２実施形態のコンピュータシステムの概略構成図である。
【図５】従来装置の構成、及び動作を説明するための概略構成図及びタイミング図である。
【図６】ウェイト制御を行う従来装置の構成、及び分岐命令実行時の動作を説明するための概略構成図及びタイミング図である。
【図７】ウェイト制御を行う従来装置の割込処理ルーチン起動時の動作を説明するためのタイミング図である。
【符号の説明】
【００８２】
１，１ａ…コンピュータシステム、２，２ａ…ＣＰＵ、３…割込コントローラ、４…ＲＯＭ、５，５ａ…メモリ制御装置、６…アドレスバス、７…データバス、１０…セレクタ、１１…出力バッファ、１２，１２ａ…信号生成部。
【図１】
2005038203.tif 000003
【図２】
2005038203.tif 000004
【図３】
2005038203.tif 000005
【図４】
2005038203.tif 000006
【図５】
2005038203.tif 000007
【図６】
2005038203.tif 000008
【図７】
2005038203.tif 000009