(57)【特許請求の範囲】
【請求項１】
命令を実行する命令実行部と、命令を格納する命令メモリと、データを格納するデータメモリとを備え、前記命令メモリにアクセスするための命令バスと、前記データメモリにアクセスするためのデータバスをそれぞれ独立して有するマイクプロセッサにおいて、
命令アクセスの対象となるモジュールが接続された第１の共有バスと、
データアクセスの対象となるモジュールが接続された第２の共有バスと、
前記命令実行部のバス使用要求に応じて、前記命令バス、前記データバス、前記第１の共有バスおよび前記第２の共有バスのバス調停を行うバス制御ユニットと、
を備え、
前記バス制御ユニットは、
データおよびアドレスの入出力制御をおこなうバスインターフェース部を、前記命令バス、前記データバス、前記第１の共有バス、前記第２の共有バスの各バスに対して個別に備え、
前記命令実行部が命令アクセスを行うときは、前記命令実行部からの指示に基づいて前記命令バスおよび前記第１の共有バスのバス権を取得して前記命令バスと前記第１の共有バスを接続し、前記命令実行部がデータアクセスを行うときは、前記命令実行部からの指示に基づいて前記データバスおよび前記第２の共有バスのバス権を取得して前記データバスと前記第２の共有バスを接続し、
前記各バスに接続されたモジュールの動作を一時的に停止させるスタンバイ動作を要求するスタンバイ要求信号が入力されると、前記スタンバイ要求信号に応じて、前記バスインターフェースの各々に対して前記各バスのバス使用権を取得した後に、前記モジュールの各々に対して、前記モジュールに供給されているクロックの遮断要求を示す動作停止要求信号を出力することを特徴とするマイクロプロセッサ。
【請求項２】
前記バスインターフェース部の各々は、データを保持するデータバッファと、アドレスを保持するアドレスバッファとを備えたことを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記バスインターフェース部の各々は、前記アドレスをデコードして接続要求先であるバスを示すアドレス要求信号を出力するアドレスデコーダを備えたことを特徴とする請求項１または２に記載のマイクロプロセッサ。
【請求項４】
前記バス制御ユニットは、前記命令バス、前記データバス、前記第１の共有バス、前記第２の共有バスの各バスに接続されたモジュールから出力される制御信号に応じてバスの使用状態を示す状態信号を生成する状態遷移制御手段を、前記命令バス、前記データバス、前記第１の共有バス、前記第２の共有バスの各バスに対して個別に備え、
前記状態遷移制御手段の生成する状態信号に応じてバス接続をおこなうことを特徴とする請求項１〜３のいずれか一つに記載のマイクロプロセッサ。
【請求項５】
前記バス制御ユニットは、前記状態遷移制御手段の生成する状態信号がバスアクセス中の状態であることを示す場合に、バスアクセス中の状態にあるバスへの使用要求を発したモジュールに対して待機指示信号を出力する待機指示信号生成手段を、前記命令バス、前記データバス、前記第１の共有バス、前記第２の共有バスの各バスに対して個別に備えたことを特徴とする請求項４に記載のマイクロプロセッサ。
【請求項６】
前記バス制御ユニットは、接続されるバスの優先順位を設定するための優先順位信号を入力し、前記命令バス、前記データバス、前記第１の共有バス、前記第２の共有バスの各バスにおいて異なるバスに対する接続要求が複数発せられた場合に、前記優先順位信号によって設定された優先順位にしたがってバスを接続することを特徴とする請求項１〜５のいずれか一つに記載のマイクロプロセッサ。
【請求項７】
前記バス制御ユニットは、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送を制御するＤＭＡコントローラを接続して前記ＤＭＡ転送時の入出力制
御をおこなうＤＭＡインターフェース部を備えたことを特徴とする請求項１〜６のいずれか一つに記載のマイクロプロセッサ。
【請求項８】
前記ＤＭＡインターフェース部は、前記ＤＭＡ転送時に入出力されるデータを保持するデータバッファと、アドレスを保持するアドレスバッファとを備えたことを特徴とする請求項７に記載のマイクロプロセッサ。
【請求項９】
前記各バスに接続されるモジュールとして、前記バス制御ユニットに対して独立してバス使用要求を発するバスマスタが接続されることを特徴とする請求項１〜８のいずれか一つに記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のバスと複数のバスマスタを備えたマイクロプロセッサに関し、特にバスマスタからのアクセス要求に対してバスを効率的に制御するバス制御ユニットを備えたマイクロプロセッサに関する。近年の制御機器や携帯型電子機器に用いられるマイクロプロセッサにおいては、複雑な処理の実現と拡張性を高くするために、バス上に多数の装置（モジュール）を接続し、バスを介して各装置を制御する方式が一般的になっている。特に、高速な処理が必要とされるマイクロプロセッサでは、キャッシュメモリやＤＭＡ（Ｄｉｒｅｃｔ  ＭｅｍｏｒｙＡｃｃｅｓｓ）コントローラを搭載して、バスの使用効率を高めている。
【０００２】
【従来の技術】
図１１は、ハーバード・アーキテクチャを採用する従来のマイクロプロセッサの概略構成を示すブロック図である。ハーバード・アーキテクチャとは、レジスタレベルのアーキテクチャの１つであり、データアクセス用のバス（データバス）と命令アクセス用のバス（命令バス）とをそれぞれ独立して設けるとともに、データバスに接続されたメモリ（データメモリ）をデータ格納専用、命令バスに接続されたメモリ（命令メモリ）を命令格納専用とし、データメモリと命令メモリとをアドレス空間的に分離して使用するものである。マイクロプロセッサは、このハーバード・アーキテクチャを採用することで、命令の保護とアクセスの並列動作が可能となり、高速処理を実現している。
【０００３】
図１１において、従来のマイクロプロセッサ１００は、プログラムのコードにしたがって命令を実行する命令実行部（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０と、複数のバスの使用状態を監視してバス調停をおこなうバス制御ユニット１２０と、命令格納専用メモリである命令メモリ１３１と、データ格納専用メモリであるデータメモリ１３２と、起動命令セットおよび基本命令セットを格納するプログラムＲＯＭ１４１と、ユーザプログラムを格納するプログラムＲＡＭ１４２と、命令実行部１１０を介さずにバス接続したモジュールと種々のメモリ間で直接データのやりとり（ＤＭＡ転送）をおこなうＤＭＡコントローラ１４３と、外部装置を接続して機能拡張または外部との入出力を果たす外部バスＩ／Ｆ１５１、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を拡張メモリとして増設可能にするＳＤＲＡＭＩ／Ｆ１５２、内蔵周辺デバイスとのインターフェースとして機能するペリフェラルバスＩ／Ｆ１５３を備えている。
【０００４】
また、命令実行部１１０とバス制御ユニット１２０との間には命令バスＩＢおよびデータバスＤＢが設けられ、上記したプログラムＲＯＭ１４１、プログラムＲＡＭ１４２、ＤＭＡコントローラ１４３、外部バスＩ／Ｆ１５１、ＳＤＲＡＭＩ／Ｆ１５２およびペリフェラルバスＩ／Ｆ１５３は、バス制御ユニット１２０によって監視される共有バス（プリンストンバス）ＰＢに接続される。
【０００５】
ペリフェラルバスＩ／Ｆ１５３には、内蔵周辺デバイスとして、タイマ１６１、シリアル通信をサポートするＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ    Ａｓｙｎｃｈｒｏｎｏｕｓ    Ｒｅｃｅｉｖｅｒ    Ｔｒａｎｓｍｉｔｔｅｒ）１６２、アナログ／ディジタルコンバータ（ＡＤＣ）１６３等が接続される。
【０００６】
なお、上記した命令バスＩＢ、データバスＤＢおよびプリンストンバスＰＢは、データを転送するデータ用バスとアドレスを転送するアドレス用バスを含み、さらに、これらのバスに接続される各モジュール（命令実行部１１０を含む）には、バス制御ユニット１２０との通信に必要なバス使用要求信号、読み出し／書き込み信号、アドレスストローブ、データストローブ、各種のアクノリッジ信号等の制御信号を転送する制御バス（図示せず）が設けられる。
【０００７】
図１１に示すようなハーバード・アーキテクチャを採用するマイクロプロセッサ１００では、特に命令メモリ１３１およびデータメモリ１３２をキャッシュメモリとして使用することで、スループットの向上を図っている。以下に、マイクロプロセッサ１００の基本動作について説明する。
【０００８】
まず、マイクロプロセッサ１００が起動されると、命令実行部１１０において、プログラムＲＯＭ１４１に格納された起動命令ユニットがプリンストンバスＰＢおよび命令バスＩＢを介して読み込まれ、必要に応じてプログラムＲＡＭ１４２に格納されたユーザプログラムが実行される。
【０００９】
ここで、命令実行部１１０は、プログラムＲＯＭ１４１やプログラムＲＡＭ１４２へのアクセスに先だって、命令メモリ１３１に、該当する命令が格納されているかを調べる。命令メモリ１３１に、該当する命令が格納されている場合（キャッシュヒット）は、その命令を命令メモリ１３１から取り出して実行する（命令フェッチ）。
【００１０】
一方、命令メモリ１３１に、該当する命令が格納されていない場合は、本来のアクセス先であるプログラムＲＯＭ１４１やプログラムＲＡＭ１４２から命令を取り出して実行するとともに、取り出した命令を命令メモリ１３１に格納する。これにより、一度命令実行部１１０において実行された命令を再び実行する必要が生じた際に、該当する命令を命令メモリ１３１から取り出すことができる。
【００１１】
このようにキャッシュヒットを得ることができた場合の命令フェッチは、プログラムＲＯＭ１４１やプログラムＲＡＭ１４２にアクセスする場合と比較して、少ないクロックサイクルで実行されるので、システムの高速化が図れる。
【００１２】
また、データメモリ１３２についても命令メモリ１３１と同様に、一度ＳＤＲＡＭＩ／Ｆ１５２等から取り出したデータをデータメモリ１３２に格納しておき、ＳＤＲＡＭＩ／Ｆ１５２等へのデータアクセスの際に、データメモリ１３２におけるキャッシュヒットを得ることでシステムの高速化を実現する。
【００１３】
マイクロプロセッサ１００においては、命令実行部１１０だけでなく、ＤＭＡコントローラ１４３もまたバスマスタとなり得るため、命令実行部１１０は、以上に説明した命令フェッチやデータアクセスをおこなう際に、バス制御ユニット１２０から、命令バスＩＢ、データバスＤＢおよびプリンストンバスＰＢの使用許可を得る必要がある。
【００１４】
すなわち、命令実行部１１０は、プログラムＲＯＭ１４１やプログラムＲＡＭ１４２等にアクセスするために、上記した制御バスを介してバス制御ユニット１２０に対してプリンストンバスＰＢの使用要求を示すバス使用要求信号を送信する。
【００１５】
バス制御ユニット１２０は、プリンストンバスＰＢが、他のバスマスタによって使用中であるかどうかを調べ、たとえばＤＭＡコントローラ１４３がＳＤＲＡＭＩ／Ｆ１５２から外部バスＩ／Ｆ１５１へのＤＭＡ転送をおこなうのにプリンストンバスＰＢを使用している場合は、ＤＭＡコントローラ１４３に対してバス使用要求信号を送信する。ＤＭＡコントローラ１４３は、このバス使用要求信号を受信すると、実行中のバス・サイクル終了後、直ちに停止状態になり、バス制御ユニット１２０に対してバス放棄信号を送信する。
【００１６】
ＤＭＡコントローラ１４３がバス使用要求信号を受信してバス放棄信号を送信するまでの間、バス制御ユニット１２０は、命令実行部１１０に対してＷＡＩＴ信号を送信して命令実行部１１０を待機させる。バス制御ユニット１２０は、ＤＭＡコントローラ１４３からバス放棄信号を受信すると、命令実行部１１０に対してバス権の獲得を示すバス獲得信号を送信する。これによりバス権を獲得した命令実行部１１０は、プリンストンバスＰＢに接続された各装置へのアクセスが可能になる。
【００１７】
また、ＤＭＡコントローラ１４３のような命令実行部１１０以外のバスマスタがプリンストンバスＰＢを使用したい場合にも、上述したようにバス制御ユニット１２０に対してバス使用要求信号を送信し、バス権を獲得する必要がある。
【００１８】
このように、図１１に示すような従来のマイクロプロセッサ１００は、バス制御ユニット１２０を設けることで、各バスマスタによる他のバスマスタからのバス権の取得を可能にし、バス上のアクセスの衝突を回避したバス調停を実現している。
【００１９】
また、従来のマイクロプロセッサ１００では、電池駆動や熱対策のために低消費電力化が要求され、不用期間においてマイクロプロセッサの動作または一部のモジュールの動作を停止させることができる。たとえば、命令実行部１１０やその他のモジュールに供給されるクロック信号を停止させることで消費電力を低減させる技術が提案されている。
【００２０】
具体的には、クロック制御部（図示せず）によってクロック信号の供給が停止されるスタンバイモードと呼ばれる動作モードが設けられたり、スリープ（ＳＬＥＥＰ）命令と称されている命令を実行することにより、対象となるモジュールのみへのクロックの供給を遮断してそのモジュールの動作を停止させることができる。
【００２１】
【発明が解決しようとする課題】
しかしながら、マイクロプロセッサ１００においては、命令バスＩＢとデータバスＤＢとを個別に設けてバスの負荷分散を図っているが、命令実行部１１０が、プログラムＲＯＭ１４１やプログラムＲＡＭ１４２へアクセスするためには、プリンストンバスＰＢのバス権を獲得する必要があるため、必ずしも効率のよいバスアクセスがおこなわれていなかった。
【００２２】
たとえば、命令バスＩＢおよびプリンストンバスＰＢを介して、プログラムＲＯＭ１４１から命令メモリ１３１に命令コードの取り出しがおこなわれている際に、命令実行部１１０は、データバスＤＢを使用してデータの取り出しを可能とするが、この状態において、たとえば外部バスＩ／Ｆ１５１から入力されるデータを取り出したい場合には、プリンストンバスＰＢのバス権を獲得する必要があり、結果的に、プログラムＲＯＭ１４１から命令メモリ１３１への命令コードの取り出しを終了するまで待機しなければならない。
【００２３】
また、命令実行部１１０以外の代表的なバスマスタであるＤＭＡコントローラ１４３は、命令実行部１１０内部の演算処理に対するスループットの向上に有効であるが、命令実行部１１０等の他のバスマスタがプリンストンバスＰＢのバス権を獲得している場合には、上述したように、ＤＭＡコントローラ１４３は、命令実行部１１０がバス制御ユニット１２０に対してバス放棄信号を送信するまでの間、ＷＡＩＴ信号によって待機しなければならない。これにより、ＤＭＡコントローラ１４３のバス権の取得までに時間を多く要してしまうという問題があった。
【００２４】
また、従来のマイクロプロセッサにおいては、共有バスとなるプリンストンバスＰＢを複数設けて、各モジュールを異なるプリンストンバスＰＢ間に分散させた方式も提案されているが、ハーバード・アーキテクチャを考慮して設計されたものでなく、命令実行部１１０のバス使用効率を大幅に高めることはできなかった。
【００２５】
さらに、上述したように従来のマイクロプロセッサ１００においては、クロック制御部によるクロック信号の供給停止をおこなうスタンバイ動作により、低消費電力化を実現するが、クロック信号の供給を停止するためには、命令実行部１１０によってクロック制御部内の制御レジスタを操作してストア動作をおこなう必要があり、このクロック信号停止を試験動作する場合にも最低限のプログラムを用意する必要があった。
【００２６】
本発明は、上述問題点に鑑みてなされたものであって、バス使用効率を改善して命令実行部のスループットを向上させるとともに、より簡易にスタンバイ動作に移行できるマイクロプロセッサを提供することを目的とする。
【００２７】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するために、請求項１の発明において、命令実行部２０と、命令を格納する命令メモリ４１と、データを格納するデータメモリ４２とを備え、命令メモリ４１にアクセスするための命令バスＩＢと、データメモリ４２にアクセスするためのデータバスＤＢをそれぞれ独立して有するハーバード・アーキテクチャを採用したマイクロプロセッサは、命令アクセスの対象となるモジュール（プログラムＲＯＭ５１、プログラムＲＡＭ５２等）が接続される第１の共有バスである第１のプリンストンバスＰＢ１と、データアクセスの対象となるモジュール（外部バスＩ／Ｆ６１、ＳＤＲＡＭＩ／Ｆ６２、ペリフェラルバスＩ／Ｆ６３等）が接続される第２の共有バスである第２のプリンストンバスＰＢ２と、命令実行部２０のバス使用要求に応じて、命令バスＩＢ、データバスＤＢ、プリンストンバスＰＢ１およびプリンストンバスＰＢ２のバス調停をおこなうバス制御ユニット３０と、を備え、バス制御ユニット３０は、命令実行部２０が命令アクセスを行うときは、命令実行部２０からの指示に基づいて命令バスＩＢおよび第１のプリンストンバスＰＢのバス権を取得して前記命令バスＩＢと前記第１のプリンストンバスＰＢを接続し、命令実行部２０がデータアクセスを行うときは、命令実行部２０からの指示に基づいてデータバスＤＢおよび第２のプリンストンバスＰＢのバス権を取得してデータバスＤＢと第２のプリンストンバスＰＢを接続することを特徴とする。
【００２８】
この請求項１の発明によれば、命令実行部２０によって、命令アクセスの集中するプログラムＲＯＭ５１やプログラムＲＡＭ５２等のモジュールを第１のプリンストンバスＰＢ１に集約し、主にデータアクセスの集中する外部バスＩ／Ｆ６１、ＳＤＲＡＭＩ／Ｆ６２、ペリフェラルバスＩ／Ｆ６３等のモジュールを第２のプリンストンバスＰＢ２に集約しているので、バス制御ユニット３１を介して命令アクセスとデータアクセスとをそれぞれ個別の専用バスである命令バスとデータバスとでおこなうハーバード・アーキテクチャを採用した構成の利点を最大限に活用できる。
【００２９】
また、請求項２の発明において、請求項１に記載のマイクロプロセッサは、バス制御ユニット３１が、データおよびアドレスの入出力制御をおこなうためのバスインターフェース部として、命令バスＩＢに対して命令バスインターフェース８２を、データバスＤＢに対してデータバスインターフェース８３を、第１のプリンストンバスＰＢ１に対して第１のプリンストンバスインターフェース８４を、第２のプリンストンバスＰＢ２に対して第２のプリンストンバスインターフェース８５を、それぞれ個別に備え、これらバスインターフェース部の各々は、データを保持するデータバッファ８２ａ〜８５ａと、アドレスを保持するアドレスバッファ８２ｂ〜８５ｂとを備えたことを特徴とする。
【００３０】
また、請求項３の発明において、請求項１または２に記載のマイクロプロセッサは、データおよびアドレスの入出力制御をおこなうバスインターフェース部（命令バスインターフェース８２、データバスＤＢデータバスインターフェース８３、第１のプリンストンバスインターフェース８４、第２のプリンストンバスインターフェース８５）の各々が、入力されるアドレスをデコードして接続要求先であるバスを示すアドレス要求信号を出力するアドレスデコーダ８２ｃ〜８５ｃを備えたことを特徴とする。
【００３１】
また、請求項４の発明において、請求項１〜３に記載のマイクロプロセッサは、バス制御ユニット３１が、命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２の各バスに接続されたモジュールから出力される制御信号に応じてバスの使用状態を示す状態信号を生成する状態遷移制御手段（ステートマシン８２ｄ〜８５ｄ）を、各バスに対して個別に備え、ステートマシン８２ｄ〜８５ｄの生成する状態信号に応じてバス接続をおこなうことを特徴とする。
【００３２】
また、請求項５の発明において、請求項４に記載のマイクロプロセッサは、バス制御ユニット３１が、状態遷移制御手段（ステートマシン８２ｄ〜８５ｄ）の生成する状態信号がバスアクセス中の状態であることを示す場合に、バスアクセス中の状態にあるバスに対して使用要求を発したモジュールに対して待機指示信号（ＷＡＩＴ信号）を出力する待機指示信号生成手段（ＷＡＩＴ生成回路８２ｅ〜８５ｅ）を、各バスに対して個別に備えたことを特徴とする。
【００３３】
また、請求項６の発明において、請求項１〜５に記載のマイクロプロセッサは、バス制御ユニット３１が、接続をおこなうバスの優先順位を設定するための優先順位信号を入力し、前記各バスにおいて異なるバスに対する接続要求が複数発せられた場合に、この優先順位信号によって設定された優先順位にしたがってバスを接続することを特徴とする。
【００３４】
また、請求項７の発明において、請求項１〜６に記載のマイクロプロセッサは、バス制御ユニット３２が、ＤＭＡ転送を制御するＤＭＡコントローラ５３を接続してＤＭＡ転送時の入出力制御をおこなうＤＭＡインターフェース８６を備えたことを特徴とする。
【００３５】
この請求項７の発明によれば、バスマスタとなるＤＭＡコントローラ５３をバス制御ユニット３２に直接に接続して、バス調停回路８１の管理下に置かれるので、従来のＤＭＡコントローラの接続方式に比べてバスに与える負荷を低減できるとともに、ＤＭＡ転送のための迅速なバス権の取得が可能となる。
【００３６】
また、請求項８の発明において、請求項７に記載のマイクロプロセッサは、ＤＭＡインターフェース８６が、ＤＭＡ転送時に入出力されるデータを保持するデータバッファと、アドレスを保持するアドレスバッファとを備えたことを特徴とする。
【００３７】
また、請求項９の発明において、請求項１〜８に記載のマイクロプロセッサは、バス制御ユニット３３が、各バスに接続されたモジュールの動作を一時的に停止させるスタンバイ動作を要求するスタンバイ要求信号を入力し、このスタンバイ要求信号に応じて、命令バスインターフェース８２、データバスＤＢデータバスインターフェース８３、第１のプリンストンバスインターフェース８４、第２のプリンストンバスインターフェース８５の各々に対して各バスのバス使用権を取得した後に、バスに接続された各モジュールに対して、モジュールに供給されているクロックの遮断要求を示す動作停止要求信号を出力することを特徴とする。
【００３８】
この請求項９の発明によれば、バス制御ユニット３３に、たとえば試験モード時にアクティブとなるようなスタンバイ動作要求信号を入力し、命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２の各バスのバス権を取得した後に、各バスに接続されたモジュールに対してクロック信号の供給を停止させる動作停止要求信号を出力することができるので、容易にマイクロプロセッサをスタンバイ動作に移行させることができる。
【００３９】
また、請求項１０の発明において、請求項１〜９のいずれか１つに記載のマイクロプロセッサは、各バスに接続されるモジュールとして、バス制御ユニット３０〜３３に対して独立してバス使用要求を発するバスマスタが接続されることを特徴とする。
【００４０】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるマイクロプロセッサの好適な実施の形態を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。ここでは、まず、本発明にかかるマイクロプロセッサの原理的な説明をおこなう。
【００４１】
図１は、本発明にかかるマイクロプロセッサの原理説明図である。図１において、マイクロプロセッサ１０は、プログラムのコードにしたがって命令を実行する命令実行部（ＣＰＵ）２０と、複数のバスの使用状態を監視してバス調停をおこなうバス制御ユニット３０と、命令格納専用メモリである命令メモリ４１と、データ格納専用メモリであるデータメモリ４２と、起動命令セットおよび基本命令セットを格納するプログラムＲＯＭ５１と、ユーザプログラムを格納するプログラムＲＡＭ５２と、ＤＭＡ転送を制御するＤＭＡコントローラ５３と、外部装置を接続して機能拡張または外部との入出力を果たす外部バスＩ／Ｆ６１と、ＳＤＲＡＭを拡張メモリとして増設可能にするＳＤＲＡＭＩ／Ｆ６２と、内蔵周辺デバイスとのインターフェースとして機能するペリフェラルバスＩ／Ｆ６３とを備えている。
【００４２】
命令実行部２０とバス制御ユニット３０との間には命令バスＩＢおよびデータバスＤＢが設けられ、上記したハーバード・アーキテクチャを採用した構成である。また、プログラムＲＯＭ５１およびプログラムＲＡＭ５２は、バス制御ユニット３０によって管理される第１のプリンストンバスＰＢ１に接続され、外部バスＩ／Ｆ６１、ＳＤＲＡＭＩ／Ｆ６２およびペリフェラルバスＩ／Ｆ６３は、バス制御ユニット３０によって管理される第２のプリンストンバスＰＢ２に接続される。そして、ＤＭＡコントローラ５３は、バス制御ユニット３０に直接接続される。
【００４３】
ペリフェラルバスＩ／Ｆ６３には、内蔵周辺デバイスとして、タイマ７１、シリアル通信をサポートするＵＡＲＴ７２、アナログ／ディジタルコンバータ７３等が接続される。これらの内容は、図１１に示した従来のマイクロプロセッサと同様の内容であるのでその説明を省略する。
【００４４】
なお、上記した命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１および第２のプリンストンバスＰＢ２は、データを転送するデータ用バスとアドレスを転送するアドレス用バスを含み、さらに、これらのバスに接続される各モジュール（命令実行部２０を含む）には、バス制御ユニット３０との通信に必要なバス使用要求信号、読み出し／書き込み信号、アドレスストローブ、データストローブ、各種のアクノリッジ信号等の制御信号を転送する制御バス（図示せず）が接続される。
【００４５】
つぎに、このマイクロプロセッサ１０のバスアクセスを中心とした動作について説明する。まず、命令実行部２０が命令メモリ４１においてキャッシュヒットを得ることができず、プログラムＲＯＭ５１に対して命令フェッチをおこなう場合、命令実行部２０は、プログラムＲＯＭ５１の接続された第１のプリンストンバスＰＢ１のバス権を取得するために、バス制御ユニット３０に対してバス使用要求信号を送信する。
【００４６】
ここで、第１のプリンストンバスには、プログラムＲＯＭ５１の他にもプログラムＲＡＭ５２が接続されているが、いずれも命令コードの格納されたメモリであるため、命令フェッチ時にアクセスされるための命令アクセス専用バスとして機能する。
【００４７】
よって、命令メモリ４１にプログラムＲＯＭ５１からの命令が格納されている間に、命令実行部２０は、データバスＤＢを介して第２のプリンストンバスＰＢ２に接続されたモジュールへのデータアクセスが可能となる。これにより、マイクロプロセッサ１０は、ハーバード・アーキテクチャの利点を有効に活用することが可能となり、命令実行部２０のスループットを大きく向上させることができる。
【００４８】
また、命令実行部２０以外の代表的なバスマスタであるＤＭＡコントローラ５３がバスを介さずにバス制御ユニット３０に直接に接続されているため、命令実行部２０が使用しているバス以外のバスを介したＤＭＡ転送をおこなう場合に、迅速なバス権の取得が可能となり、バス制御ユニット３０においても効率的なバス制御が実現される。
【００４９】
さらに、バス制御ユニット３０には、動作停止要求信号を入力することでき、上述したスタンバイ動作が必要とされる場合に、この動作停止要求信号を受信することで、バス制御ユニット３０に接続された各バスに対して以下のように動作する。まず、バス制御ユニット３０は、命令バスＩＢのバス権を取得するために、バスマスタである命令実行部２０に対して命令バスＩＢのホールド要求を示すホールド要求信号を送信する。命令実行部２０は、実行中の命令フェッチのバスサイクル終了後に、命令バスＩＢのバス開放を示すアクノリッジ信号を返信する。
【００５０】
データバスＤＢにおいても同様に、バス制御ユニット３０は、命令実行部２０に対してデータバスＤＢのホールド要求を示すホールド要求信号を送信し、命令実行部２０からデータバスＤＢのバス開放を示すアクノリッジ信号を受信することにより、データバスＤＢのバス権を取得する。
【００５１】
バス制御ユニット３０は、命令バスＩＢおよびデータバスＤＢのバス権を取得すると、命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２のそれぞれに対して用意された動作停止指示フラグをアクティブにする。
【００５２】
命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２に接続された各モジュールは、バス制御ユニット３０に設けられた動作停止指示フラグがアクティブにされることにより、動作停止指示信号を受信し、各モジュールに供給されているクロック信号の入力を遮断して動作を停止させる。これにより、命令実行部２０のストア動作をおこなうことなくマイクロプロセッサのスタンバイ状態が得られ、試験動作の確認の際にスタンバイ動作に容易に移行することができる。
【００５３】
つぎに、以上に説明した原理に基づいて動作する本発明のマイクロプロセッサについて、理解を深めるためにより具体的な実施の形態について説明する。
【００５４】
（実施の形態１）
図２は、実施の形態１にかかるマイクロプロセッサの概略構成を示すブロック図である。なお、図１と共通する部分には同一符号を付して、その説明を省略する。図２において、バス制御ユニット３１は、図１のバス制御ユニット３０と同様に、命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２のバス制御をおこなうデバイスである。
【００５５】
なお、命令バスＩＢは、命令のフェッチ元のアドレスが転送されるアドレスバスＩＢＡと、命令コードを示すデータが転送されるデータバスＩＢＤからなる。同様に、データバスＤＢは、データの読み出し／書き込みをおこなうアクセス先となるアドレスが転送されるアドレスバスＤＢＡと、読み出し／書き込みの対象となるデータが転送されるデータバスＤＢＤからなる。第１のプリンストンバスＰＢ１も同様に、アドレスバスＰＢＡ１とデータバスＰＢＡ１からなり、第２のプリンストンバスＰＢ１についても、アドレスバスＰＢＡ２とデータバスＰＢＡ２からなる。
【００５６】
また、バス制御ユニット３１は、命令バスＩＢの接続インターフェースとなる命令バスインターフェース８２と、データバスＤＢの接続インターフェースとなるデータバスインターフェース８３と、第１のプリンストンバスＰＢ１の接続インターフェースとなる第１のプリンストンバスインターフェース８４と、第２のプリンストンバスＰＢ２の接続インターフェースとなる第２のプリンストンバスインターフェース８５と、これらのバスインターフェースと接続され、バス調停をおこなうバス調停回路８１とを備える。
【００５７】
つぎに、命令バスインターフェース８２の構成および動作について説明する。図３は、命令バスインターフェース８２の概略構成を示すブロック図である。図３において、命令バスインターフェース８２は、データバスＩＢＤ上のデータを一時的に格納するデータバッファ８２ａと、アドレスバスＩＢＡ上のアドレスを一時的に格納するアドレスバッファ８２ｂと、アドレスバッファ８２ｂに格納されたアドレスをデコードしてアクセス先となるバスおよびモジュールを特定するアドレスデコーダ８２ｃと、各モジュールからの制御信号（バス使用要求信号、読み出し／書き込み信号等）を入力して、バスの使用状態（ここでは命令バスＩＢのステート）を設定するステートマシン８２ｄと、ステートマシン８２ｄの示すバス状態に応じて、このバスを使用するモジュールに対してＷＡＩＴ信号を出力するＷＡＩＴ生成回路８２ｅとを備える。
【００５８】
ここで、ステートマシン８２ｄについて説明する。一般に、マイクロコンピュータでおこなうほど複雑でない制御をおこなう場合や、高速の制御処理を必要とされる場合等に、ゲートとラッチを組み合わせて各種の制御をおこなうための回路を構成することがおこなわれている。
【００５９】
たとえば、システム全体の処理は、マイクロコンピュータのＣＰＵがおこない、一部の制御をこのような回路でおこなうといった具合に、マイクロコンピュータと組み合わせて使用する場合もある。一方、制御方式においては、制御の進行に応じて順次状態が遷移し、たとえ同一の信号が入力されてもその時の状態に応じておこなう制御内容が変化する。このような制御の進行に応じて順次状態が遷移する方式を状態遷移方式と呼んでおり、上記したゲートとラッチを組み合わせた構成からなり、状態が遷移する制御用回路をステートマシンと呼んでいる。
【００６０】
ステートマシン８２ｄにおいては、上記した制御信号やデータバッファ８２ａおよびアドレスバッファ８２ｂにおける格納状態等によって、現在、バス（ここでは命令バスＩＢ）が、アクセス無し状態、読み出し状態、連続読み出し状態、書き込み状態等の種々のバスアクセス状態のいずれかの状態を示しているかの状態信号を生成する。そして、これらの状態と、アドレスデコーダ８２ｃから出力されるアドレス要求信号と、アクセス要求のあったモジュールからの制御信号とにより、バス選択をおこなうためのアドレス／データステート信号を出力する。
【００６１】
ＷＡＩＴ生成回路８２ｅは、ステートマシン８２ｄによって生成されるバス状態を取得して、バスが使用中である場合に、このバスに対するバス使用要求信号を発したモジュールに対して、待機指示を示すＷＡＩＴ信号を送信する回路である。
【００６２】
データバッファ８２ａに格納されたデータと、アドレスデコーダ８２ｃによって生成された物理アドレスと、ステートマシン８２ｄによって設定されたバス状態を示すバス状態信号は、バス調停回路８１に入力される。
【００６３】
なお、ステートマシン８２ｄにおいては、データおよびアドレスについてそれぞれ専用のステートマシンを設け、個別に状態を設定できるものとする。これにより、データバスＩＢＤとアドレスバスＩＢＡ間の使用状態に注目したバスサイクルにおいて、バス調停回路８１によって最適なバス調停をおこなうことができる。
【００６４】
たとえば、アクセス先となるモジュールにおいてアドレスバス上のアドレスをラッチした直後に、データバスの開放に先だってアドレスバスを開放し、他のモジュールによってこのアドレスバスを使用できるようにすることで、バス全体の使用効率を高めることができる。
【００６５】
他のバスインターフェースであるデータバスインターフェース８３、第１のプリンストンバスインターフェース８４、第２のプリンストンバスインターフェース８５もまた、上述した命令バスインターフェース８２と同様に、データバッファ、アドレスバッファ、アドレスデコーダ、ステートマシン、ＷＡＩＴ生成回路を備えた構成であり、ここではそれらの説明を省略する。
【００６６】
なお、データバスインターフェース８３の構成を、データバッファ８３ａ、アドレスバッファ８３ｂ、アドレスデコーダ８３ｃ、ステートマシン８３ｄ、ＷＡＩＴ生成回路８３ｅと表すこととする。同様に、第１のプリンストンバスインターフェース８４と第２のプリンストンバスインターフェース８５においても、それぞれデータバッファ８４ａ、アドレスバッファ８４ｂ、アドレスデコーダ８４ｃ、ステートマシン８４ｄ、ＷＡＩＴ生成回路８４ｅと、データバッファ８５ａ、アドレスバッファ８５ｂ、アドレスデコーダ８５ｃ、ステートマシン８５ｄ、ＷＡＩＴ生成回路８５ｅと表すこととする。
【００６７】
よって、バス制御ユニット３１は、命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２のそれぞれに対して個別のデータバッファ（８２ａ〜８５ａ）およびアドレスバッファ（８２ｂ〜８５ｂ）を備えてデータおよびアドレスを保持することができるため、たとえばアクセス先のモジュールがＢＵＳＹ状態である場合に、データおよびアドレスを再送する必要がなく、アクセス先のモジュールのＢＵＳＹ状態が解除されると、バス制御ユニット３１のデータバッファ（８２ａ〜８５ａ）およびアドレスバッファ（８２ｂ〜８５ｂ）から直ちにデータおよびアドレスを転送することができ、バスマスタおよびアクセス先のモジュールのスループット向上が図れる。
【００６８】
また、バス毎にアドレスデコーダ（８２ｃ〜８５ｃ）を備え、バスインターフェース部においてアドレス要求信号を独自に出力することができるため、バス制御ユニット３１において、アクセス先のバスを特定するデコード処理によりもたらされる負荷を分散することができるとともに、バスの利用効率を高めることができる。
【００６９】
さらに、バス毎にステートマシン（８２ｄ〜８５ｄ）を備えていることで、バス単位で独自にバスの使用状態を設定でき、後述するバス調停回路８１に対して個別にバス接続を要求できるので、バス調停回路８１に１つのステートマシンを設けてすべてのバス使用状態を管理する場合に比べて負荷が低減され、設計の簡略化も図れる。
【００７０】
そして、バス毎にＷＡＩＴ生成回路（８２ｅ〜８５ｅ）を備えていることで、バス単位で独自にＷＡＩＴ信号を生成でき、バスの使用要求を発するモジュールに対して個別に待機指示を発することができるので、バス調停回路８１に１つのＷＡＩＴ生成回路を設けてすべてのバスのそれぞれの使用状態に応じてＷＡＩＴ信号をする場合に比べて負荷が低減でき、設計の簡略化も図れる。
【００７１】
つぎに、命令実行部２０が命令バスＩＢおよび第１のプリンストンバスＰＢ１のバス権を取得して、プログラムＲＯＭ５１からの命令フェッチをおこなう場合を例に挙げて、バス調停回路８１の構成および動作を説明する。図４は、バス調停回路８１の概略構成を示すブロック図である。
【００７２】
図４において、バス調停回路８１は、バスインターフェース（ここでは、命令バスインターフェース８２）から入力されるアドレスステート信号に基づいて、アクセス対象となるバス（ここでは第１のプリンストンバスＰＢ１）を特定し、バスインターフェースから入力されるアドレスをアドレスバス（ここではアドレスバスＰＢＡ１）に送出するアドレス用バススイッチモジュール８１ａと、バスインターフェース（ここでは、命令バスインターフェース８２）から入力されるデータステート信号に基づいて、アクセス対象となるバス（ここでは第１のプリンストンバスＰＢ１）を特定し、バスインターフェースから入力されるアドレスをデータバス（ここではデータバスＰＢＤ１）に送出するデータ用バススイッチモジュール８１ｂと、を備える。
【００７３】
バス調停回路８１から出力されるアドレスおよびデータは、実際にはバスインターフェース（ここでは第１のプリンストンバスインターフェース８４）を介して、該当するアドレスバスおよびデータバスに転送される。
【００７４】
つぎに、以上に説明した上記図２〜４を参照しつつ、命令実行部２０がプログラムＲＯＭ５１からの命令フェッチにより命令コードを取得するまでのマイクロプロセッサ１１の動作の流れを説明する。なお、ここでは、命令メモリ４１におけるキャッシュヒットが得られなかったものとする。
【００７５】
まず、命令実行部２０は、制御バス（図示せず）を介して、バス制御ユニット３１に対して、命令バスＩＢおよび第１のプリンストンバスＰＢ１のバス使用要求信号をそれぞれ送信する。ここで、第１のプリンストンバスＰＢ１には、命令実行部２０による命令アクセスの対象となるモジュールのみを接続しているので、命令実行部２０以外のバスマスタが接続されていない環境においては、直ちに第１のプリンストンバスＰＢ１のバス権を取得できる。
【００７６】
命令実行部２０は、第１のプリンストンバスＰＢ１のバス権を取得すると、命令バスＩＢのアドレスバスＩＢＡに、命令実行部２０のプログラムカウンタにより示されるアドレスを送出する。命令バスインターフェース８２は、アドレスバッファ８２ｂにこのアドレスを保持するとともに、アドレスデコーダ８２ｃにこのアドレスを送信する。アドレスデコーダ８２ｃは、アドレスバッファ８２ｂを介して送信されたアドレスをデコードし、アドレス要求信号を出力する。
【００７７】
そして、ステートマシン８２ｄは、アドレスデコーダ８２ｃから出力されたアドレス要求信号とともに、制御信号として、命令実行部２０から読み出し信号を入力し、命令バスの状態がアクセス無し状態から読み出し状態に遷移したことを示すとともにアクセス先である第１のプリンストンバスＰＢ１のバス識別コードを示すアドレス／データステート信号を出力する。
【００７８】
この際、命令バスＩＢは、命令実行部２０によって占有されるため、ＷＡＩＴ生成回路８２ｅは、ステートマシン８２ｄにおいて設定された読み出し状態を取得することで、ＷＡＩＴ信号をアクティブにする。このアクティブ状態のＷＡＩＴ信号によって、他のモジュールに対して命令バスＩＢへのアクセスを待機させる。
【００７９】
命令バスインターフェース８２から出力されるデータ、アドレスおよびアドレス／データステート信号は、バス調停回路８１に入力される。バス調停回路８１においては、まず、アドレス用バススイッチモジュール８１ａにおいて、アドレスステート信号の入力により、第１のプリンストンバスＰＢ１のアドレス用バススイッチが選択され、入力されたアドレスを第１のプリンストンバスＰＢ１のアドレスバスＰＢＡ１に出力する。
【００８０】
同様に、データ用バススイッチモジュール８１ａにおいて、データステート信号の入力により、第１のプリンストンバスＰＢ１のデータ用バススイッチが選択され、命令バスのデータバスＩＢＤと第１のプリンストンバスＰＢ１のデータバスＰＢＤ１とを接続する。
【００８１】
ここで、実際には、バス調停回路８１から出力されたアドレスは、第１のプリンストンバスインターフェース８４を介して、第１のプリンストンバスＰＢ１のアドレスバスＰＢＡ１に出力される。命令バスのデータバスＩＢＤと第１のプリンストンバスＰＢ１のデータバスＰＢＤ１との接続もまた、同様に第１のプリンストンバスインターフェース８４を介しておこなわれる。
【００８２】
また、第１のプリンストンバスインターフェース８４のステートマシン８４ｄは、バス調停回路８１において第１のプリンストンバスＰＢ１の特定がおこなわれるとともに、制御信号として、命令実行部２０から読み出し信号を入力し、第１のプリンストンバスＰＢ１の状態がアクセス無し状態から読み出し状態に遷移したことを示す。
【００８３】
この際、第１のプリンストンバスＰＢ１は、命令実行部２０によって占有されるため、ＷＡＩＴ生成回路８４ｅは、ステートマシン８４ｄにおいて設定された読み出し状態を取得することで、ＷＡＩＴ信号をアクティブにする。このアクティブ状態のＷＡＩＴ信号によって、他のモジュールに対して第１のプリンストンバスＰＢ１へのアクセスを待機させる。
【００８４】
一方、プログラムＲＯＭ５１は、バス制御ユニット３１から制御バス（図示せず）を介して、アドレスバスＰＢＡ１上に有効なアドレスが送出されていることを示すアドレスストローブ信号を受信することにより、第１のプリンストンバスＰＢ１のアドレスバスＰＢＡ１に送出されているアドレスを取り込み、このアドレスの示すメモリ領域から該当する命令コードを取り出して、第１のプリンストンバスＰＢ１のデータバスＰＢＤ１に送出する。
【００８５】
つづいて、プログラムＲＯＭ５１は、バス制御ユニット３１に対し、制御バス（図示せず）を介して、データの送出を完了したことを示すデータアクノリッジ信号を送信する。
【００８６】
バス制御ユニット３１（詳しくはバス調停回路８１）は、このデータアクノリッジ信号を受信することにより、第１のプリンストンバスＰＢ１のデータバスＰＢＤ１に送出されたデータを、命令バスインターフェース８２のデータバッファ８２ａに送信する。
【００８７】
ここで、仮に、命令実行部２０が他の演算処理等によりＢＵＳＹ状態を示し、即座にデータを受け取ることができない場合であっても、対象となるデータは、データバッファ８２ａに保持されており、命令実行部２０は、ＢＵＳＹ状態が解除されると直ちに命令バスＩＢのデータバスＩＢＤを介して、対象となるデータを受け取ることができる。
【００８８】
その後は、バス制御ユニット３１に対して、命令バスＩＢおよび第１のプリンストンバスＰＢ１を開放するバス開放信号を送信するとともに、命令バスインターフェース８２と第１のプリンストンバスインターフェース８４におけるＷＡＩＴ信号を非アクティブ状態にし、ステートマシンの遷移状態をアクセス無し状態に戻す。
【００８９】
つぎに、以上に説明した命令実行部２０によるプログラムＲＯＭ５１へのアクセス処理の開始と同時に、命令実行部２０が第２のプリンストンバスＰＢ２に接続されたＳＤＲＡＭＩ／Ｆ６２へのデータの書き込み処理をおこなう場合のマイクロプロセッサ１１の動作の流れを説明する。なお、ここでは、データメモリ４２におけるキャッシュヒットが得られなかったものとする。
【００９０】
この場合、命令実行部２０は、制御バス（図示せず）を介して、バス制御ユニット３１に対して、データバスＤＢおよび第２のプリンストンバスＰＢ２のバス使用要求信号をそれぞれ送信する。ここで、第１のプリンストンバスＰＢ１には、命令実行部２０による命令アクセスの対象となるモジュールのみを接続しているので、命令実行部２０以外のバスマスタが接続されていない環境においては、直ちに第２のプリンストンバスＰＢ２のバス権を取得できる。
【００９１】
命令実行部２０は、第２のプリンストンバスＰＢ２のバス権を取得すると、データバスＩＢのアドレスバスＤＢＡに、命令実行部２０の命令レジスタにおいて示されるデータを格納するアドレスを送出する。データバスインターフェース８３は、命令バスインターフェース８２と同様に、アドレスバッファにこのアドレスを保持するとともに、アドレスデコーダ８３ｃにこのアドレスを送信する。アドレスデコーダ８３ｃは、アドレスバッファ８３ｂを介して送信されたアドレスをデコードし、アドレス要求信号を出力する。
【００９２】
また、命令実行部２０は、データバスＤＢのデータバスＤＢＤに、命令実行部２０の命令レジスタにおいて示されるデータを送出する。データバスインターフェース８３は、命令バスインターフェース８２と同様に、アドレスバッファにアドレスバスＤＢＡ上のアドレスを保持するとともに、アドレスデコーダ８３ｃにこのアドレスを送信する。アドレスデコーダ８３ｃは、アドレスバッファ８３ｂを介して送信されたアドレスをデコードし、アドレス要求信号を出力する。また、データバスＤＢＤ上のデータも同様に、データバッファ８３ａに保持される。
【００９３】
そして、ステートマシン８３ｄは、アドレスデコーダ８３ｃから出力されたアドレス要求信号とともに、制御信号として、命令実行部２０から書き込み信号を入力し、データバスＤＢの状態がアクセス無し状態から書き込み状態に遷移したことを示すとともにアクセス先である第２のプリンストンバスＰＢ２のバス識別コードを示すアドレス／データステート信号を出力する。
【００９４】
この際、データバスＤＢは、命令実行部２０によって占有されるため、ＷＡＩＴ生成回路８３ｅは、ステートマシン８３ｄにおいて設定された書き込み状態を取得することで、ＷＡＩＴ信号をアクティブにする。このアクティブ状態のＷＡＩＴ信号によって、他のモジュールに対してデータバスＤＢへのアクセスを待機させる。
【００９５】
データバスインターフェース８３から出力されるデータ、アドレスおよびアドレス／データステート信号は、バス調停回路８１に入力される。バス調停回路８１においては、まず、アドレス用バススイッチモジュール８１ａにおいて、アドレスステート信号の入力により、第２のプリンストンバスＰＢ２のアドレス用バススイッチが選択され、入力されたアドレスを第２のプリンストンバスＰＢ２のアドレスバスＰＢＡ２に出力する。
【００９６】
同様に、データ用バススイッチモジュール８１ａにおいて、データステート信号の入力により、第２のプリンストンバスＰＢ１のデータ用バススイッチが選択され、データバスのデータバスＤＢＤと第２のプリンストンバスＰＢ２のデータバスＰＢＤ１とを接続する。
【００９７】
ここで、実際には、バス調停回路８１から出力されたアドレスは、第２のプリンストンバスインターフェース８５を介して、第２のプリンストンバスＰＢ２のアドレスバスＰＢＡ２に出力される。データバスのデータバスＤＢＤと第２のプリンストンバスＰＢ２のデータバスＰＢＤ２との接続もまた、同様に第２のプリンストンバスインターフェース８５を介しておこなわれる。
【００９８】
また、第２のプリンストンバスインターフェース８５のステートマシン８５ｄは、バス調停回路８１において第２のプリンストンバスＰＢ２の特定がおこなわれるとともに、制御信号として、命令実行部２０から書き込み信号を入力し、第２のプリンストンバスＰＢ２の状態がアクセス無し状態から書き込み状態に遷移したことを示す。
【００９９】
この際、第２のプリンストンバスＰＢ２は、命令実行部２０によって占有されるため、ＷＡＩＴ生成回路８５ｅは、ステートマシン８５ｄにおいて設定された書き込み状態を取得することで、ＷＡＩＴ信号をアクティブにする。このアクティブ状態のＷＡＩＴ信号によって、他のモジュールに対して第２のプリンストンバスＰＢ２へのアクセスを待機させる。
【０１００】
一方、ＳＤＲＡＭＩ／Ｆ６２は、バス制御ユニット３１から制御バス（図示せず）を介して、アドレスバスＰＢＡ２上に有効なアドレスが送出されていることを示すアドレスストローブ信号を受信することにより、第２のプリンストンバスＰＢ２のアドレスバスＰＢＡ２に送出されているアドレスを取り込み、データバスＰＤＢ２上に送出されているデータを、このアドレスの示すメモリ領域に格納する。
【０１０１】
つづいて、ＳＤＲＡＭＩ／Ｆ６２は、バス制御ユニット３１に対し、制御バス（図示せず）を介して、データの格納を完了したことを示すデータアクノリッジ信号を送信し、命令実行部２０によるＳＤＲＡＭＩ／Ｆ６２へのアクセス処理を終了する。その後は、バス制御ユニット３１に対して、データバスＤＢおよび第２のプリンストンバスＰＢ２を開放するバス開放信号を送信するとともに、データバスインターフェース８３と第２のプリンストンバスインターフェース８５におけるＷＡＩＴ信号を非アクティブ状態にし、ステートマシンの遷移状態をアクセス無し状態に戻す。
【０１０２】
以上に説明したように、命令実行部２０は、命令アクセスとデータアクセスを並行におこなうことができ、ハーバード・アーキテクチャの利点を生かした効率の高いバス使用が実現できる。
【０１０３】
図５は、命令実行部２０による第１のプリンストンバスＰＢ１と第２のプリンストンバスＰＢ２の同時アクセスの状態を説明するタイミングチャートである。図５に示すように、命令実行部２０は、システムクロックＣＬＫの２サイクル（ｃ１、ｃ２）において、命令バスＩＢのバス使用要求を発すると同時に、データバスＤＢのバス使用要求を発することが可能となり、つづく２サイクル（ｃ２、ｃ３）においても並行に第１のプリンストンバスＰＢ１および第２のプリンストンバスＰＢ２のバス使用要求を発することができる。
【０１０４】
また、バス調停回路８１は、各バスインターフェースから同時にバス接続要求が発せられた場合におけるバス（命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２）の優先順位を設定することができる。
【０１０５】
たとえば、命令実行部２０から命令バスＩＢとデータバスＤＢへのバス接続要求が発せられた場合、データバスＤＢへの接続を優先的におこなうことができる。さらに、バス調停回路８１が、この優先順位を設定する優先順位信号を命令実行部２０から受け付けるように構成することで、必要に応じてバス接続の優先順位を変更できるようにしてもよい。
【０１０６】
よって、実施の形態１にかかるマイクロプロセッサ１１によれば、命令実行部２０によって、命令アクセスの集中するプログラムＲＯＭ５１やプログラムＲＡＭ５２等のモジュールを第１のプリンストンバスＰＢ１に集約し、主にデータアクセスの集中する外部バスＩ／Ｆ６１、ＳＤＲＡＭＩ／Ｆ６２、ペリフェラルバスＩ／Ｆ６３等のモジュールを第２のプリンストンバスＰＢ２に集約している。
【０１０７】
これにより、バス制御ユニット３１を介して命令アクセスとデータアクセスとをそれぞれ個別の専用バスである命令バスとデータバスとでおこなうハーバード・アーキテクチャを採用した構成の利点を最大限に活用でき、命令アクセスとデータアクセスを並行におこなえるとともに、バスを効率的に使用することが可能となり、命令実行部２０におけるスループットを大きく向上させることができる。
【０１０８】
なお、実施の形態１にかかるマイクロプロセッサ１１において、ステートマシン（８２ｄ〜８５ｄ）およびＷＡＩＴ生成回路（８２ｅ〜８５ｅ）を各バスインターフェース部（命令バスインターフェース８２、データバスインターフェース８３、第１のプリンストンバスインターフェース８４、第２のプリンストンバスインターフェース８５）にそれぞれ設けたが、これらステートマシン（８２ｄ〜８５ｄ）およびＷＡＩＴ生成回路（８２ｅ〜８５ｅ）を各バスインターフェースに対応させてバス調停回路８１の内部に設けるようにしてもよい。
【０１０９】
図６は、この場合における命令バスインターフェースの他の例となる命令バスインターフェース８２’の概略構成を示すブロック図である。また、図７は、この場合におけるバス調停回路の他の例となるバス調停回路８１’の概略構成を示すブロック図である。
【０１１０】
図６に示すように、命令バスインターフェース８２’は、データバッファ８２’ａ、アドレスバッファ８２’ｂおよびアドレスデコーダ８２’ｃを備えており、それぞれ図３に示したデータバッファ８２ａ、アドレスバッファ８２ｂおよびアドレスデコーダ８２ｃと同じ機能を果たすため、ここではその説明を省略する。また、この場合の他のバスインターフェース（データインターフェース、第１のプリンストンバス、第２のプリンストンバス）においても同じ構成となる。
【０１１１】
一方、図７において、バス調停回路８１’は、図４に示したアドレス用バススイッチモジュール８１ａおよびデータ用バススイッチモジュール８１ｂにそれぞれ相当するアドレス用バススイッチモジュール８１’ａおよびデータ用バススイッチモジュール８１’ｂに加えて、アドレス用のＷＡＩＴ生成回路８１’ｃ、アドレス用ステートマシン８１’ｄ、データ用ステートマシン８１’ｅ、データ用のＷＡＩＴ生成回路８１’ｆを備えている。
【０１１２】
アドレス用ステートマシン８１’ｄおよびデータ用ステートマシン８１’ｅは、図３に示したステートマシン８２ｄと同一の機能を果たし、アドレス用のＷＡＩＴ生成回路８１’ｃおよびデータ用のＷＡＩＴ生成回路８１’ｆは、図３に示したＷＡＩＴ生成回路８２ｅと同一の機能を果たすので、ここではその説明を省略する。
【０１１３】
（実施の形態２）
つぎに、実施の形態２にかかるマイクロプロセッサについて説明する。実施の形態１との相違点は、バス制御ユニット３１にバス調停回路８１に接続されるＤＭＡインターフェース８６を備え、ＤＭＡコントローラ５３をバス制御ユニットに直接に接続した点である。図８は、実施の形態２にかかるマイクロプロセッサの概略構成を示すブロック図である。なお、図１と共通する部分には同一符号を付して、その説明を省略する。
【０１１４】
図８において、マイクロプロセッサ１２は、バス制御ユニット３２にＤＭＡインターフェース８６を備えており、命令実行部２０以外の代表的なバスマスタであるＤＭＡコントローラ５３がバスを介さずにバス制御ユニット３１に直接に接続することができる。
【０１１５】
これにより、従来のマイクロプロセッサ１００のように、バスにＤＭＡコントローラが接続されるために同一のバスに接続された他のモジュールの動作に応じてＤＭＡコントローラ自体のバス権の取得に時間を要するような問題がなくなり、ＤＭＡ転送におけるアクセス元のモジュールとアクセス先のモジュールがそれぞれ接続されたバスのバス権の取得をバス調停回路８１に対して迅速に求めることができる。
【０１１６】
また、ＤＭＡインターフェース８６には、バス制御ユニット３２のバスインターフェース（命令バスインターフェース８２、データバスインターフェース８３、第１のプリンストンバスインターフェース８４、第２のプリンストンバスインターフェース８５）と同様に、データバッファおよびアドレスバッファを備えている。
【０１１７】
これにより、従来、ＤＭＡコントローラ内に設けられていたバッファをバス制御ユニット３２に集約することができ、ＤＭＡインターフェース８６の動作を、バス調停回路８１によって上記したバスインターフェースと同様に管理できるため、ＤＭＡコントローラ５３の構成を簡単にすることができるととともに、バス制御ユニット３２の設計を有効に活用できる。
【０１１８】
よって、実施の形態２にかかるマイクロプロセッサ１１によれば、バスマスタとなるＤＭＡコントローラ５３をバス制御ユニット３２に直接に接続して、バス調停回路８１の管理下に置かれるので、従来のＤＭＡコントローラの接続方式に比べてバスに与える負荷を低減できるとともに、ＤＭＡ転送のための迅速なバス権の取得が可能となり、バス制御ユニット３２においても効率的なバス制御が実現される。
【０１１９】
また、このバスの負荷低減の実現にともなって、ハーバード・アーキテクチャを採用した構成の利点である命令アクセスとデータアクセスの並行動作がさらに有効となり、ＤＭＡコントローラの導入によって命令実行部２０におけるスループットを大きく向上させることが可能となる。
【０１２０】
（実施の形態３）
つぎに、実施の形態３にかかるマイクロプロセッサについて説明する。実施の形態１または２との相違点は、バス制御ユニット３１に外部端子を設け、この外部端子にスタンバイ動作要求信号が入力されることで、バス調停回路８１が各バスインターフェースに対してバスホールド要求を発し、各バスのバス権を取得した状態において、各バスに接続されるモジュールに対して動作停止要求信号を送信できるバス制御ユニット３３が備えられている点である。
【０１２１】
図９は、実施の形態３にかかるマイクロプロセッサの概略構成を示すブロック図である。なお、図１と共通する部分には同一符号を付して、その説明を省略する。また、各バスに接続されるモジュールの記載を省略し、バス制御ユニット３３のみを示している。
【０１２２】
図９において、外部端子９０は、バス制御ユニット３３のバス調停回路８１に接続されており、たとえばマイクロプロセッサのスタンバイ動作を確認したい場合等に、スタンバイ動作要求信号が入力される端子である。バス調停回路８１は、外部端子９０よりスタンバイ動作要求信号を入力すると、各バスインターフェース（命令バスインターフェース８２、データバスインターフェース８３、第１のプリンストンバスインターフェース８４、第２のプリンストンバスインターフェース８５）に対して、バスホールド要求信号を送信する。
【０１２３】
具体的には、上記したバスインターフェースが、各バスのバス権を取得しているモジュールに対して、バス使用要求信号を送信し、このバス使用要求信号を受信したモジュールのバスサイクルの終了後に送信されるバス開放信号を受信することでバス権を取得する。
【０１２４】
バス制御ユニット３０は、命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２のバス権を取得すると、命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２のそれぞれに対して用意された動作停止指示フラグをアクティブにする。
【０１２５】
この動作停止指示フラグがアクティブにされることで、各モジュールに対して動作停止要求信号が送信され、各モジュールは、この動作停止指示信号を受信すると、各モジュールに供給されているクロック信号の入力を遮断して動作を停止させる。これにより、命令実行部２０のストア動作をおこなうことなくマイクロプロセッサのスタンバイ状態が得られ、試験動作の確認の際にスタンバイ動作に容易に移行することができる。
【０１２６】
また、外部端子９０に替えて、試験モードを示す信号の入力によりスタンバイ動作要求を示すフラグが書き込まれるスタンバイレジスタ９１を設けることもできる。図１０は、この場合における他の例のバス制御ユニットの概略構成を示すブロック図である。図１０に示すように、図９の外部端子９０がスタンバイレジスタ９１に置き換えられた点以外は、上述した動作と同様に動作する。
【０１２７】
よって、実施の形態３にかかるマイクロプロセッサによれば、バス制御ユニット３３に試験モード時にアクティブとなるスタンバイ動作要求信号を入力し、各バス（命令バスＩＢ、データバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２）のバス権を取得した後に、各モジュールのクロック信号の供給を停止させることができるので、試験動作の際に従来のように命令実行部２０のストア動作をおこなう必要がなく、容易にマイクロプロセッサをスタンバイ動作に移行させることができる。
【０１２８】
なお、図９および図１０に示すバス制御ユニット３３を、実施の形態２において説明したバス制御ユニット３２と同様に、ＤＭＡコントローラを直接に接続した構成にすることもできる。
【０１２９】
また、実施の形態１〜３において、命令バスＩＢ、メモリバスＤＢ、第１のプリンストンバスＰＢ１、第２のプリンストンバスＰＢ２の各バスに接続されるモジュールとして、バス制御ユニット３０〜３３に対して独立してバス使用要求を発するＤＭＡコントローラ以外のバスマスタを接続してもよい。
【０１３０】
さらに、実施の形態１〜３において、命令メモリ４１およびデータメモリ４２がキャッシュメモリとして機能すると説明したが、キャッシュメモリとしてでなく、プログラムＲＡＭ５２やＳＤＲＡＭＩ／Ｆ６２に接続されるＳＤＲＡＭのような通常のメモリとして使用してもよく、たとえば、命令メモリ４１をキャッシュメモリとして使用し、データメモリ４２を通常のメモリとして使用することもできる。
【０１３１】
【発明の効果】
以上、説明したとおり、本発明のマイクロプロセッサによれば、従来のマイクロプロセッサが、命令実行部が、命令バスを介してプログラムＲＯＭからの命令フェッチの完了を待ってから、同じプリンストンバスに接続された外部バスＩ／Ｆ等からのデータの取り出しをおこなう必要があったのに対して、命令実行部によって、命令アクセスの集中するプログラムＲＯＭやプログラムＲＡＭ等のモジュールを第１のプリンストンバスに集約し、主にデータアクセスの集中する外部バスＩ／Ｆ、ＳＤＲＡＭＩ／Ｆ、ペリフェラルバスＩ／Ｆ等のモジュールを第２のプリンストンバスに集約しているので、バス制御ユニットを介して命令アクセスとデータアクセスをそれぞれ第１のプリンストンバスと第２のプリンストンバスに対して並行におこなえるとともに、バスを効率的に使用することが可能となり、命令実行部におけるスループットを大きく向上させることができる。
【０１３２】
また、従来のマイクロプロセッサは、バスマスタとなるＤＭＡコントローラをバス上に接続しており、ＤＭＡコントローラがこのバスに対してバス権を取得するまでに時間を多く要してしまう傾向があった。
【０１３３】
これに対して本発明のマイクロプロセッサによれば、ＤＭＡコントローラをバス制御ユニット３２に直接に接続して、ＤＭＡコントローラ自体のバス権の取得を不用とするので、迅速なバス権の取得が可能となり、これによるバスの負荷低減の実現にともなって、ハーバード・アーキテクチャを採用した構成の利点である命令アクセスとデータアクセスの並行動作がさらに有効となり、ＤＭＡコントローラの導入によって命令実行部におけるスループットを大きく向上させることが可能となる。
【０１３４】
さらに、従来のマイクロプロセッサは、スタンバイ動作をおこなうために命令実行部によってクロック制御部内の制御レジスタを操作してストア動作をおこない、この結果クロック信号の停止を実行させており、このクロック信号停止を試験動作する場合にも最低限のプログラムを用意する必要があった。
【０１３５】
これに対して、本発明のマイクロプロセッサによれば、バス制御ユニットに試験モード時にアクティブとなるスタンバイ動作要求信号を入力し、命令バス、データバス、第１のプリンストンバス、第２のプリンストンバスの各バスのバス権を取得した後に、各モジュールのクロック信号の供給を停止させることができるので、試験動作の際に従来のように命令実行部２０のストア動作をおこなう必要がなく、容易にマイクロプロセッサをスタンバイ動作に移行させることができる。
【図面の簡単な説明】
【図１】本発明にかかるマイクロプロセッサの原理説明図である。
【図２】実施の形態１にかかるマイクロプロセッサの概略構成を示すブロック図である。
【図３】実施の形態１において命令バスインターフェースの概略構成を示すブロック図である。
【図４】実施の形態１においてバス調停回路の概略構成を示すブロック図である。
【図５】実施の形態１において、命令実行部による第１のプリンストンバスと第２のプリンストンバスの同時アクセスの状態を説明するタイミングチャートである。
【図６】実施の形態１において、命令バスインターフェースの他の例の概略構成を示すブロック図である。
【図７】実施の形態１において、バス調停回路の他の例の概略構成を示すブロック図である。
【図８】実施の形態２にかかるマイクロプロセッサの概略構成を示すブロック図である。
【図９】実施の形態３にかかるマイクロプロセッサの概略構成を示すブロック図である。
【図１０】実施の形態３において、バス制御ユニットの他の例の概略構成を示すブロック図である。
【図１１】ハーバード・アーキテクチャを採用する従来のマイクロプロセッサの概略構成を示すブロック図である。
【符号の説明】
１０，１１，１２  マイクロプロセッサ
２０  命令実行部
３０，３１，３２，３３  バス制御ユニット
４１  命令メモリ
４２  データメモリ
５１  プログラムＲＯＭ
５２  プログラムＲＡＭ
５３  ＤＭＡコントローラ
６１  外部バスインターフェース
６２  ＳＤＲＡＭＩ／Ｆ
６３  ペリフェラルバスＩ／Ｆ
８１  バス調停回路
８２  命令バスインターフェース
８３  データバスインターフェース
８４  第１のプリンストンバスインターフェース
８５  第２のプリンストンバスインターフェース
８６  ＤＭＡインターフェース
ＩＢ  命令バス
ＤＢ  データバス
ＰＢ１  第１のプリンストンバス
ＰＢ２  第２のプリンストンバス
【図１】
0003623379.tif 000002
【図２】
0003623379.tif 000003
【図３】
0003623379.tif 000004
【図４】
0003623379.tif 000005
【図５】
0003623379.tif 000006
【図６】
0003623379.tif 000007
【図７】
0003623379.tif 000008
【図８】
0003623379.tif 000009
【図９】
0003623379.tif 000010
【図１０】
0003623379.tif 000011
【図１１】
0003623379.tif 000012