(57)【要約】【課題】バスシステムを効率的に使用できる半導体集積回路装置および半導体集積回路装置の動作方法を提供すること。【解決手段】ステータス情報が書き込まれるステータスレジスタおよび更新要求が書き込まれる更新制御レジスタを含むレジスタ部を有し、更新制御レジスタに更新要求が書き込まれた場合にステータスレジスタの更新を行うＣＰＵ１００、２００、およびＩ／Ｏ３００に対し、ステータスレジスタに記憶されるステータス情報を読み出しかつ更新制御レジスタに更新要求を書き込むための拡張ロード命令を実行できるように、ＣＰＵ１００、２００、バスシステムおよびＩ／Ｏ３００を構成した。【選択図】        図１
2010186259.tif 000002
【特許請求の範囲】
【請求項１】
ステータス情報が書き込まれるステータスレジスタおよび更新要求が書き込まれる更新制御レジスタを含むレジスタ部を有し、更新制御レジスタに更新要求が書き込まれた場合に前記ステータスレジスタの更新を行う被アクセスデバイスと、
前記ステータスレジスタからステータス情報を読み出しかつ前記更新制御レジスタに更新要求を書き込む機能を有する更新要求付きロード命令を含む命令が記憶された命令メモリを有し、前記更新要求付きロード命令を解読し、読み出し要求と更新要求付きロード命令であることを識別させる命令識別信号とを含む制御信号を出力するＣＰＵと、
前記ＣＰＵから出力される読み出し要求および命令識別信号を含む制御信号を被アクセスデバイスに転送するバスシステムと、
を備え、
被アクセスデバイスは、読み出し要求および命令識別信号を含む制御信号を受信した場合、読み出し要求に対応するステータスレジスタのステータス情報をステータスレジスタから読み出して前記バスシステムを介して読み出し要求元のＣＰＵに送信するとともに、前記ステータス情報が読み出されたステータスレジスタを更新する更新要求を対応する更新制御レジスタに書き込むことを特徴とする半導体集積回路装置。
【請求項２】
前記被アクセスデバイスは、外部機器が接続されるＩ／Ｏであって、前記レジスタ部は、Ｉ／Ｏに含まれるものであり、前記ステータスレジスタに前記外部機器のステータス情報を記憶する、ことを特徴とする請求項１に記載の半導体集積回路装置。
【請求項３】
受信したバス使用権要求に基づいてバス調停を行い、一つのバス使用権要求送信元に対してバス使用権を与えるバスシステムと、
前記バスシステムに対してバス使用権要求を送信し、前記バス使用権が与えられたとき、前記バスシステムを使用する複数のＣＰＵと、
を備え、
前記ＣＰＵは、ロード／ストア命令にバス使用権の占有／占有解除を要求するバス占有／占有解除要求が付加されたバス占有要求／占有解除要求付きロード／ストア命令を解読し、バス使用権保有時に、前記解読したバス占有要求／占有解除要求付きロード／ストア命令に基づいて読み出し／書き込み要求とともにバス占有／占有解除要求を送信し、
前記バスシステムは、前記送信された読み出し／書き込み要求を宛先に転送するとともに、前記送信されたバス占有／占有解除要求に基づき、前記送信元のＣＰＵ以外のＣＰＵからのバス使用権要求に対応するバス調停を停止／再開する、
ことを特徴とする半導体集積回路装置。
【請求項４】
ロード命令を命令メモリからフェッチし、前記フェッチしたロード命令をデコードするステップと、
前記デコードされたロード命令が有するフラグ領域を参照して前記ロード命令がレジスタの出力を読み出すための通常のロード命令であるか前記レジスタの出力をロードするとともに前記レジスタの内容を更新させる更新要求付きロード命令であるかを判定するステップと、
前記デコードされたロード命令が通常のロード命令であった場合、読み出し要求を含む第１制御信号をバスを介して被アクセスデバイスに送信し、前記デコードされたロード命令が更新要求付きロード命令であった場合、前記第１制御信号に更新要求付きロード命令であることを識別させる命令識別信号を加えた第２制御信号をバスを介して被アクセスデバイスに送信するステップと、
前記被アクセスデバイスが前記第１制御信号を受信したとき、自身が備える読み出し要求されたレジスタの内容を読み出して返信し、前記第２制御信号を受信したとき、前記読み出し要求されたレジスタの内容を読み出して返信するとともに前記レジスタの内容を更新するステップと、
を含むことを特徴とする半導体集積回路装置の動作方法。
【請求項５】
ロード／ストア命令を命令メモリからフェッチし、前記フェッチしたロード／ストア命令をデコードするステップと、
前記デコードされたロード／ストア命令が有するフラグ領域を参照して前記ロード／ストア命令がレジスタに対して読み出し／書き込みするための通常のロード／ストア命令であるか前記レジスタに対して読み出し／書き込みするとともにバス使用権の占有／占有解除を要求するバス占有／占有解除要求が付加されたバス占有要求／占有解除要求付きロード／ストア命令であるかを判定するステップと、
前記デコードされたロード／ストア命令が通常のロード／ストア命令であった場合、読み出し／書き込み要求を含む第１制御信号をバスシステムに送信し、前記デコードされたロード／ストア命令がバス占有要求／占有解除要求付きロード／ストア命令であった場合、前記第１制御信号にバス占有要求／占有解除要求付きロード／ストア命令であることを識別させる命令識別信号を加えた第２制御信号をバスシステムに送信するステップと、
前記バスシステムが、前記第１制御信号を受信したとき、読み出し／書き込み要求先に前記第１制御信号を転送し、前記第２制御信号を受信したとき、前記第２制御信号に含まれる識別情報に基づいて前記第２制御信号の送信元デバイス以外のデバイスからのバス使用権要求に対応するバス調停を停止／再開するステップと、
を含むことを特徴とする半導体集積回路装置の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体集積回路装置および半導体集積回路装置の動作方法に関する。
【背景技術】
【０００２】
近年、半導体集積回路装置（ＬＳＩ）が高集積化され、複数のＣＰＵ、Ｉ／Ｏ、メモリなど複数のデバイスが一つのＬＳＩに搭載される場合が多くなってきた。複数のＣＰＵ、Ｉ／Ｏ、メモリは、バスで相互に接続されており、ＣＰＵは、バス上の他のデバイスと相互に情報を授受して動作している。このようなＬＳＩにおいては、従来、ＣＰＵは、アドレス空間に対するロードとストアとを行うことによってバス上の他のデバイスにアクセスする。したがって、プログラマは、様々な種類のＩ／Ｏの制御やメモリの読み書きなどを行うために、複数のロード命令、ストア命令を組み合わせる必要があった。
【０００３】
一方、バスを制御するバスコントローラ（以降、バスおよびバスコントローラを合わせてバスシステムという）は、このようなロード命令、ストア命令が実行される毎に、命令実行元のＣＰＵにバス使用権を与えるバス調停を行う。夫々のバス調停にはいくらかのクロック数を要するため、多くのロード命令、ストア命令を使用する従来のＬＳＩにおいては、バス調停に費やされるオーバーヘッドが大きいという問題があった。また、ＣＰＵがバス上のデバイスの制御に多くのロード命令、ストア命令を使用するため、別のＣＰＵにバス使用権が移動する機会が増加し、一つのＣＰＵがバス上のデバイスを制御する、複数のロード命令、ストア命令からなる動作が中断されてしまうことがあるという問題があった。つまり、従来のＬＳＩのバス使用方法は、バスの使用効率がよくなかった。集積度が増し、バスに接続されるデバイスの数が増加傾向にある現在、以上のような従来のＬＳＩの非効率なバス使用方法はＬＳＩ全体の性能の向上を頭打ちにする原因となることが予想されるため、バスを効率的に使用できる技術が要望されている。
【０００４】
特許文献１によれば、マスタＣＰＵによりバスを占有する場合、スレーブＣＰＵにバスの使用を禁止する禁止制御信号を出力し、禁止制御信号に対してスレーブＣＰＵから出力されるバスの使用を許可する許可制御信号を検出した場合、マスタＣＰＵにバス占有権を与える半導体集積回路装置の技術が開示されているが、この従来技術では、バスの占有のために多くの信号のやり取りを要するため、前記する非効率なバス使用方法を改善するには至っていない。
【０００５】
【特許文献１】特開平９−１６５１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、バスシステムを効率的に使用できる半導体集積回路装置および半導体集積回路装置の動作方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願発明の一態様によれば、ステータス情報が書き込まれるステータスレジスタおよび更新要求が書き込まれる更新制御レジスタを含むレジスタ部を有し、更新制御レジスタに更新要求が書き込まれた場合に前記ステータスレジスタの更新を行う被アクセスデバイスと、前記ステータスレジスタからステータス情報を読み出しかつ前記更新制御レジスタに更新要求を書き込む機能を有する更新要求付きロード命令を含む命令が記憶された命令メモリを有し、前記更新要求付きロード命令を解読し、読み出し要求と更新要求付きロード命令であることを識別させる命令識別信号とを含む制御信号を出力するＣＰＵと、前記ＣＰＵから出力される読み出し要求および命令識別信号を含む制御信号を被アクセスデバイスに転送するバスシステムと、を備え、被アクセスデバイスは、読み出し要求および命令識別信号を含む制御信号を受信した場合、読み出し要求に対応するステータスレジスタのステータス情報をステータスレジスタから読み出して前記バスシステムを介して読み出し要求元のＣＰＵに送信するとともに、前記ステータス情報が読み出されたステータスレジスタを更新する更新要求を対応する更新制御レジスタに書き込むことを特徴とする半導体集積回路装置が提供される。
【０００８】
また、本願発明の一態様によれば、受信したバス使用権要求に基づいてバス調停を行い、一つのバス使用権要求送信元に対してバス使用権を与えるバスシステムと、前記バスシステムに対してバス使用権要求を送信し、前記バス使用権が与えられたとき、前記バスシステムを使用する複数のＣＰＵと、を備え、前記ＣＰＵは、ロード／ストア命令にバス使用権の占有／占有解除を要求するバス占有／占有解除要求が付加されたバス占有要求／占有解除要求付きロード／ストア命令を解読し、バス使用権保有時に、前記解読したバス占有要求／占有解除要求付きロード／ストア命令に基づいて読み出し／書き込み要求とともにバス占有／占有解除要求を送信し、前記バスシステムは、前記送信された読み出し／書き込み要求を宛先に転送するとともに、前記送信されたバス占有／占有解除要求に基づき、前記送信元のＣＰＵ以外のＣＰＵからのバス使用権要求に対応するバス調停を停止／再開する、ことを特徴とする半導体集積回路装置が提供される。
【０００９】
また、本願発明の一態様によれば、ロード命令を命令メモリからフェッチし、前記フェッチしたロード命令をデコードするステップと、前記デコードされたロード命令が有するフラグ領域を参照して前記ロード命令がレジスタの出力を読み出すための通常のロード命令であるか前記レジスタの出力をロードするとともに前記レジスタの内容を更新させる更新要求付きロード命令であるかを判定するステップと、前記デコードされたロード命令が通常のロード命令であった場合、読み出し要求を含む第１制御信号をバスを介して被アクセスデバイスに送信し、前記デコードされたロード命令が更新要求付きロード命令であった場合、前記第１制御信号に更新要求付きロード命令であることを識別させる命令識別信号を加えた第２制御信号をバスを介して被アクセスデバイスに送信するステップと、前記被アクセスデバイスが前記第１制御信号を受信したとき、自身が備える読み出し要求されたレジスタの内容を読み出して返信し、前記第２制御信号を受信したとき、前記読み出し要求されたレジスタの内容を読み出して返信するとともに前記レジスタの内容を更新するステップと、を含むことを特徴とする半導体集積回路装置の動作方法が提供される。
【００１０】
また、本願発明の一態様によれば、ロード／ストア命令を命令メモリからフェッチし、前記フェッチしたロード／ストア命令をデコードするステップと、前記デコードされたロード／ストア命令が有するフラグ領域を参照して前記ロード／ストア命令がレジスタに対して読み出し／書き込みするための通常のロード／ストア命令であるか前記レジスタに対して読み出し／書き込みするとともにバス使用権の占有／占有解除を要求するバス占有／占有解除要求が付加されたバス占有要求／占有解除要求付きロード／ストア命令であるかを判定するステップと、前記デコードされたロード／ストア命令が通常のロード／ストア命令であった場合、読み出し／書き込み要求を含む第１制御信号をバスシステムに送信し、前記デコードされたロード／ストア命令がバス占有要求／占有解除要求付きロード／ストア命令であった場合、前記第１制御信号にバス占有要求／占有解除要求付きロード／ストア命令であることを識別させる命令識別信号を加えた第２制御信号をバスシステムに送信するステップと、前記バスシステムが、前記第１制御信号を受信したとき、読み出し／書き込み要求先に前記第１制御信号を転送し、前記第２制御信号を受信したとき、前記第２制御信号に含まれる識別情報に基づいて前記第２制御信号の送信元デバイス以外のデバイスからのバス使用権要求に対応するバス調停を停止／再開するステップと、を含むことを特徴とする半導体集積回路装置の動作方法が提供される。
【発明の効果】
【００１１】
本発明によれば、バスシステムを効率的に使用できる半導体集積回路装置および半導体集積回路装置の動作方法を提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明にかかる半導体集積回路装置および半導体集積回路装置の動作方法の最良な実施の形態を詳細に説明する。
【００１３】
（第１の実施の形態）
本発明の第１の実施の形態にかかる半導体集積回路装置の構成および機能を説明する。図１は、第１の実施の形態にかかる半導体集積回路装置の構成を示すブロック図である。図示するように、第１の実施の形態にかかる半導体集積回路装置は、中央演算装置である第１のＣＰＵ１００および第２のＣＰＵ２００と、Ｉ／Ｏ３００と、第１のＣＰＵ１００および第２のＣＰＵ２００が作業領域として使用するメインメモリ４００と、以上の各部が接続されているメインバス５００と、メインバス５００を制御するバスコントローラ６００と、を備える。
【００１４】
先ず、Ｉ／Ｏ３００などのレジスタ構成について説明する。Ｉ／Ｏ３００には、図示しない外部機器が接続されており、外部機器のステータス情報を記憶更新するためのＩ／Ｏレジスタ部３１０を有する。Ｉ／Ｏレジスタ部３１０は、外部機器の各種ステータス情報を記憶するためのステータスレジスタ（出力レジスタ）３０２と、出力レジスタ３０２の更新タイミングを決定する更新要求が書き込まれる更新制御レジスタ３０１との複数の対を有し、Ｉ／Ｏ３００内のＩ／Ｏコントローラ３２０は、更新制御レジスタ３０１に更新要求が書き込まれた場合に対をなす出力スレジスタ３０２の更新を行う。
【００１５】
第１のＣＰＵ１００または第２のＣＰＵ２００は、ストア命令を実行して更新制御レジスタ３０１に更新要求を書き込んだり、ロード命令を実行して出力レジスタ３０２からステータス情報の読み取りを行ったりすることによって、外部機器のステータス情報を取得する。更新制御レジスタ３０１に更新要求が書き込まれた場合、この書き込み時点から所定のタイミングをもって該更新要求が書き込まれた更新制御レジスタ３０１に対応する出力レジスタ３０２のデータ更新が実行され、この実行後更新制御レジスタ３０１はクリアされる。Ｉ／Ｏレジスタ３１０は、アドレス空間にマッピングされている。
【００１６】
第１のＣＰＵ１００に含まれるＣＰＵコントロールレジスタ１６０は、Ｉ／Ｏ３００のＩ／Ｏレジスタ部３１０と同様、ステータスレジスタ（出力レジスタ）１６２と、更新制御レジスタ１６１との複数のペアから成るＣＰＵレジスタ部を備えている。第２のＣＰＵ２００に含まれるＣＰＵコントロールレジスタ２６０も、Ｉ／Ｏ３００のＩ／Ｏレジスタ部３１０と同様、ステータスレジスタ（出力レジスタ）２６２と、更新制御レジスタ２６１との複数のペアから成るＣＰＵレジスタ部を備えている。第１のＣＰＵ１００は、ストア命令を実行して第２のＣＰＵ２００のＣＰＵコントロールレジスタ２６０に含まれる更新制御レジスタ２６１に更新要求を書き込んだり、ロード命令を実行してＣＰＵコントロールレジスタ２６０に含まれる出力レジスタ２６２からステータス情報の読み取りを行ったりすることによって、第２のＣＰＵ２００に関するステータス情報を取得する。同様に、第２のＣＰＵ２００は、ストア命令を実行して第１のＣＰＵ１００のＣＰＵコントロールレジスタ１６０に含まれる更新制御レジスタ１６２に更新要求を書き込んだり、ロード命令を実行してＣＰＵコントロールレジスタ１６０に含まれる出力レジスタ１６１からステータス情報の読み取りを行ったりすることによって、第１のＣＰＵ１００に関するステータス情報を取得する。
【００１７】
本第１の実施の形態では、ロード命令、ストア命令のほかに、出力レジスタからステータス情報を読み出すとともに更新要求を更新制御レジスタに書き込む処理を１つの命令で実行可能な新規のロード命令である更新要求付きロード命令（以下、拡張ロード命令という）を使用できるようにしている。Ｉ／Ｏ３００、第２のＣＰＵ２００が、第１のＣＰＵ１００が実行するロード命令、ストア命令、拡張ロード命令の実行対象となる被アクセスデバイスとなる。同様に、Ｉ／Ｏ３００、第１のＣＰＵ１００が、第２のＣＰＵ２００が実行するロード命令、ストア命令、拡張ロード命令の実行対象となる被アクセスデバイスとなる。
【００１８】
第１のＣＰＵ１００は、命令ＲＡＭ１１０と、フェッチ／デコードユニット１２０と、演算ユニット１３０と、ロード／ストアユニット１４０と、バスインターフェースユニット１５０と、ＣＰＵコントロールレジスタ１６０と、ローカルメモリ１７０とを有する。
【００１９】
命令ＲＡＭ１１０は、拡張ロード命令、ロード命令、ストア命令を含む各種命令を保持している。
【００２０】
拡張ロード命令は、ロード命令の一部に更新要求付きロード命令であることを識別させる命令識別情報が付加された構成となっている。図２は、ＣＰＵ１００、２００が実行するロード／ストア命令、拡張ロード命令などの命令形式の一例を説明する図である。図示するように、命令は、３２ビットの固定長となっており、４ビット長のオペコード領域（ＯＰ）１１１、４ビット長の第１のレジスタ領域（Ｒｄ）１１２、４ビット長の第２のレジスタ領域（Ｒｓ）１１３、および命令のモードを指定するためのフラグ領域である４ビット長のモード領域１１４と、アドレス空間におけるアドレスを格納する１６ビット長のアドレス領域（Ａｄｄｒｅｓｓ）１１５と、を先頭から順番に有する構成となっている。この実施の形態では、４ビットのモード領域１１４における所定の１ビットを、拡張ロード命令であるかロード命令であるかを識別する命令識別ビット１１４ａとして使用している。
【００２１】
通常のロード命令の場合は、オペコード領域１１１にロード命令のオペコードが記述され、第１のレジスタ領域１１２に読み出したデータを格納する第１のＣＰＵ１００の内部レジスタが指定され、モード領域１１４は空白の状態（例えば、オールゼロで、命令識別ビット１１４ａも“０”）となっている。ストア命令の場合は、オペコード領域１１１にストア命令のオペコードが記述され、第２のレジスタ領域（Ｒｓ）１１３には書き込み要求する値を記憶している第１のＣＰＵ１００の内部レジスタが指定され、アドレス領域１１５には書き込み要求先のアドレスが記述されている。
【００２２】
一方、拡張ロード命令の場合は、オペコード領域１１１にロード命令と同じオペコードが記述され、第１のレジスタ領域１１２に読み出したデータを格納する第１のＣＰＵ１００の内部レジスタが指定され、モード領域１１４は例えば０００１で、命令識別ビット１１４ａが“１”となっており、アドレス領域１１５にアドレス空間における読み出し先のアドレスが記述される。以下、特にことわらないかぎり、第１の実施の形態の説明において、ロード命令、ロード／ストア命令と表記する場合、夫々拡張ロード命令も包含することとする。
【００２３】
図１に戻り、フェッチ／デコードユニット１２０は、命令ＲＡＭ１１０から命令をフェッチしてデコードし、デコードした命令がロード／ストア命令であった場合はロード／ストアユニット１４０へ、ロード／ロード命令以外であった場合は演算ユニット１３０へ、デコードした命令を振り分けて送信する。
【００２４】
ロード／ストアユニット１４０は、フェッチ／デコードユニット１２０から受信したロード／ストア命令に基づき、アクセス先のアドレスと、アクセス先に対する動作を指定する制御要求と、を送信する指令をバスインターフェースユニット１５０に発行する。制御要求とは、ロード命令の場合は、読み出し要求を含み、ストア命令の場合は、書き込み要求を含み、拡張ロード命令の場合は、読み出し要求の他に、更新要求付きロード命令であることを識別させる命令識別情報が追加されている。ロード／ストアユニット１４０は、ロード命令または拡張ロード命令を実行した場合、バスインターフェースユニット１５０を介して読み出しデータを受信し、該受信した読み出しデータを、実行した命令に指定される第１のＣＰＵ１００の内部レジスタ（図示せず）にセットする。
【００２５】
演算ユニット１３０は、フェッチ／デコードユニット１２０から受信したロード／ストア命令以外の命令を実行する。ロード／ストア命令以外の命令は第１のＣＰＵ１００の内部レジスタの値を用いた演算であって、演算ユニット１３０が該命令を実行する前後に必要となる内部レジスタとアドレス空間にマッピングされた番地との間の値の転送は、該命令とは別にロード／ストアユニット１４０がロード／ストア命令を実行することにより行われる。
【００２６】
ＣＰＵコントロールレジスタ１６０は、前述したように、ステータスレジスタ（出力レジスタ）１６２と、更新制御レジスタ１６１との複数のペアから成るＣＰＵレジスタ部を備えており、これらのレジスタも、アドレス空間にマッピングされている。これらのレジスタは、ＣＰＵ１００、２００間の同期や排他制御、情報伝達などの連携を行うために使用される。
【００２７】
ローカルメモリ１７０は、第１のＣＰＵ１００のキャッシュとして使用されるメモリである。
【００２８】
バスインターフェースユニット１５０は、ロード／ストアユニット１４０からの指令を受信すると、バスコントローラ６００に対してバス使用権を要求し、バス使用権を取得後、前記指令に基づいてメインバス５００にアドレスおよび制御要求を送信する。
【００２９】
第２のＣＰＵ２００は、第１のＣＰＵ１００と同様の構成を有している。第２のＣＰＵ２００が内部に備える各構成要素についての重複する説明は省略する。
【００３０】
メインメモリ４００は、アドレス空間にマッピングされた主記憶装置であり、第１のＣＰＵ１００および第２のＣＰＵ２００から受信する読み出し要求および書き込み要求に基づいてデータの読み出しおよびデータの書き込みを行う。
【００３１】
バスコントローラ６００は、メインバス５００とともにバスシステムを構成する。バスコントローラ６００は、バスインターフェースユニット１５０、２５０からのバス使用権の要求に対応してＣＰＵ１００、２００間のバス使用権の調停を行う。また、バスコントローラ６００は、バス使用権を有するＣＰＵ１００、２００がメインバス５００に送信したアドレスおよび制御要求を受信し、該受信したアドレスに基づいて宛先を解釈し、受信したアドレスおよび制御要求をＣＰＵ１００、２００、Ｉ／Ｏ３００、メインメモリ４００のうち何れか一つのデバイスに転送する。転送先のデバイスがＣＰＵ１００、２００、Ｉ／Ｏ３００のとき、転送されたアドレスおよび制御要求は、転送先のデバイスから宛先の番地を有するレジスタ部に伝達される。
【００３２】
続いて、以上のように構成される第１の実施の形態の半導体集積回路装置が拡張ロード命令を実行する動作を図３を使用して説明する。この場合は、第１のＣＰＵ１００がＩ／Ｏ３００に対して拡張ロード命令を実行する場合について説明する。
【００３３】
まず、フェッチ／デコードユニット１２０が、命令ＲＡＭ１１０から拡張ロード命令を取得してデコードし、オペコード領域１１１に記述されているロード命令のオペコードから、該命令はロード命令または拡張ロード命令であると解釈し、デコードした該拡張ロード命令をロード／ストアユニット１４０に送信する（ステップＳ１）。
【００３４】
ロード／ストアユニット１４０は、命令を受信した場合、オペコード領域１１１の命令のオペコードから該命令がロード命令であると解釈し、さらに、モード領域１１４における命令識別ビット１１４ａを参照して該命令が拡張ロード命令か否かを判定する（ステップＳ２）。該命令が拡張ロード命令であると判定した場合（ステップＳ２、Ｙｅｓ）、アドレス領域１１５に記述されるアドレスと、読み出し要求および更新要求付きロード命令であることを識別させる命令識別情報を含む制御要求を送信させる指令をバスインターフェースユニット１５０に発行する（ステップＳ３）。
【００３５】
バスインターフェースユニット１５０は、該指令を受信すると、バスコントローラ６００に対してバス使用権を獲得するための要求をバスコントローラ６００に対して送信し、バスコントローラ６００は、該要求に対応してバス調停を行い、バス調停結果に基づき第１のＣＰＵ１００に対してバス使用権を付与する（ステップＳ４）。バスインターフェースユニット１５０は、バス使用権を獲得したとき、前記するアドレス、読み出し要求、命令識別情報をメインバス５００に送信する（ステップＳ５）。
【００３６】
バスコントローラ６００は、送信されたアドレスから、アクセス先がＩ／Ｏ３００であると解釈し、Ｉ／Ｏ３００にアドレス、読み出し要求、命令識別情報を転送する（ステップＳ６）。
【００３７】
Ｉ／Ｏ３００のＩ／Ｏコントローラ３２０は、転送されてきたアドレス、読み出し要求、命令識別情報を受信し、受信したアドレスに該当する出力レジスタ３０２に記憶されているステータス情報を読み出してメインバス５００に送信する（ステップＳ７）。さらに、Ｉ／Ｏコントローラ３２０は、ステータス情報を読み出した出力レジスタを更新する更新要求を該出力レジスタ３０２と対を成す更新制御レジスタ３０１に書き込む（ステップＳ８）。これにより、Ｉ／Ｏコントローラ３２０は、更新要求が書き込まれた更新制御レジスタ３０１と対をなす出力スレジスタ３０１の更新を行う（ステップＳ９）。
【００３８】
メインバス５００に送信されたステータス情報は、バスインターフェースユニット１５０を介してロード／ストアユニット１４０に伝達され、ロード／ストアユニット１４０は、受信したステータス情報を拡張ロード命令の第１のレジスタ領域（Ｒｄ）１１２に指定される内部レジスタに格納する（ステップＳ１０）。
【００３９】
一方、ステップＳ２において、ロード／ストアユニット１４０が、受信した命令が拡張ロード命令ではないと判定した場合（ステップＳ２、Ｎｏ）、アドレス領域１１５に記述されるアドレスおよび読み出し要求を送信させる指令をバスインターフェースユニット１５０に発行する（ステップＳ１１）。
【００４０】
バスインターフェースユニット１５０は、該指令を受信すると、バスコントローラ６００に対してバス使用権を獲得するための要求をバスコントローラ６００に対して送信し、バスコントローラ６００は、該要求に対応してバス調停を行い、バス調停結果に基づき第１のＣＰＵ１００に対してバス使用権を付与する（ステップＳ１２）。バスインターフェースユニット１５０は、バス使用権を獲得したとき、前記するアドレスおよび読み出し要求をメインバス５００に送信する（ステップＳ１３）。
【００４１】
バスコントローラ６００は、送信されたアドレスから、アクセス先がＩ／Ｏ３００であると解釈し、Ｉ／Ｏ３００にアドレスおよび読み出し要求を転送する（ステップＳ１４）。
【００４２】
Ｉ／Ｏ３００のＩ／Ｏコントローラ３２０は、転送されてきたアドレスおよび読み出し要求を受信し、受信したアドレスに該当する出力レジスタ３０２に記憶されているステータス情報を読み出してメインバス５００に送信し（ステップＳ１５）、ステップＳ１０に移行する。
【００４３】
このように、従来は二つの命令（ロード命令とストア命令）を実行して実現していた、出力レジスタ３０２からステータス情報を読み出す動作と、更新制御レジスタ３０１に更新要求を書き込む動作を、一つの拡張ロード命令の実行で実現するので、バス調停の頻度が低減され、バス調停および要求転送にかかるオーバーヘッドを一つの命令の分だけ削減できる。つまり、バスシステムの使用効率が向上する。なお、以上の動作の説明においては、第１のＣＰＵ１００がＩ／Ｏ３００に対して拡張ロード命令を送信するとして説明したが、送信元は第２のＣＰＵ２００であっても、また、送信先がＩ／Ｏ３００ではなく自身以外のＣＰＵであっても、同様の動作により拡張ロード命令が実行されることはいうまでもない。
【００４４】
次に、第１のＣＰＵがＩ／Ｏ３００に対して拡張ロード命令を実行したときのタイミングチャートの具体例を、図４を用いて説明する。
【００４５】
図４において、第１のＣＰＵ１００が拡張ロード命令（ｌｗ＋ｎｅｗ）を実行すると、まず、第１のＣＰＵ１００とバスコントローラ６００との間で、バス使用権を要求するリクエスト信号（Ｓ２１）と、バス使用を許可するグラント信号（Ｓ２２）と、が授受される。グラント信号を受信した第１のＣＰＵ１００は、アドレスと、読み出し要求と、命令識別情報（ｎｅｗ）と、を送信する（Ｓ２３）。
【００４６】
続いて、バスコントローラ６００とＩ／Ｏ３００との間で、リクエスト信号（Ｓ２４）およびグラント信号（Ｓ２５）が授受され、互いの間に通信を確立する。通信が確立された後、バスコントローラ６００により、アドレスと、読み出し要求と、命令識別情報（ｎｅｗ）と、がＩ／Ｏ３００に転送される（Ｓ２６）。
【００４７】
続いて、アドレスと、読み出し要求と、命令識別情報（ｎｅｗ）とを受信すると、Ｉ／Ｏコントローラ３２０は、受信したアドレスと読み出し要求とに対応してステータス情報であるデータＡを読み出し要求された出力レジスタ３０２から読み出し、該読み出したデータＡと有効信号（ａｃｋ）とを送信する（Ｓ２７）。また、Ｉ／Ｏレジスタ３１０は、命令識別情報（ｎｅｗ）により、本命令が拡張ロード命令であると解釈し、データＡを読み出し要求された出力レジスタ３０２と対を成す更新制御レジスタ３０１に更新要求を書き込む。これにより、更新制御レジスタ３０１と対を成す出力レジスタ３０２は、更新され、この出力レジスタ３０１には新たなステータス情報としてデータＢが記憶される（Ｓ２８）。送信されたデータＡと有効信号（ａｃｋ）は、バスコントローラ６００から第１のＣＰＵ１００に伝達される（Ｓ２９）。また、更新制御レジスタ３０１は、クリアされる。
【００４８】
本具体例においては、ステータス情報の読み出しとステータス情報を更新する更新要求の書き込みを実行するのに６クロック要していることがわかる。次回に同様の拡張ロード命令が実行されると、今度はデータＢが読み出されることとなる。
【００４９】
図５は、ロード命令およびストア命令を用いた従来技術による出力レジスタ３０２の読み出しおよび更新動作を示すタイミングチャートである。図示するように、従来の一般的な半導体集積回路装置は、ロード命令を実行して６クロックを費やしてデータＡを読み出したあと、ストア命令を実行してステータス情報を更新する更新要求を書き込む動作を４クロックかけて行っていることがわかる。また、データＡを読み出すロード命令、およびデータＡを更新する更新要求を書き込むストア命令の夫々に対してバス調停が行われていることがわかる。
【００５０】
これに対し、第１の実施の形態の半導体集積回路装置によれば、ストア命令を実行する必要がないため、ストア命令分のバス調停を行う必要がなくなるとともに、バス調停および要求転送にかかるオーバーヘッド分が低減され、結果として４クロック分の時間短縮が達成されていることがわかる。
【００５１】
以上述べたように、第１の実施の形態によれば、出力レジスタに記憶されるステータス情報を読み出しかつ更新制御レジスタに更新要求を書き込むための拡張ロード命令を実行できるように、ＣＰＵ１００、２００、バスシステムおよびＩ／Ｏ３００を構成したので、バス調停の頻度が低減され、バス調停および要求転送にかかるオーバーヘッドを削減できるので、バスシステムを効率的に使用できるようになる。
【００５２】
ところで、以上の説明においては、拡張ロード命令の一例として、４ビット長のオペコード領域（ＯＰ）１１１、第１のレジスタ領域（Ｒｄ）１１２、第２のレジスタ領域（Ｒｓ）１１３、およびモード領域１１４と、１６ビット長のアドレス領域（Ａｄｄｒｅｓｓ）１１５と、を先頭から順番に有する構成を説明したが、各領域の種類やサイズはこれに限定するものではなく、ロード命令に更新要求付きロード命令であることを識別させる命令識別情報が付加できる構成であれば、どのような構成であってもかまわない。
【００５３】
また、第１のＣＰＵ１００および第２のＣＰＵ２００が備える構成要素は以上説明した構成に限定されるものではなく、他の構成を採用するようにしてもよい。また、第１のＣＰＵ１００および第２のＣＰＵ２００は、互いに異なる構成要素により構成されるものであってもかまわない。また、ＣＰＵの数は２つに限定せず、３つ以上あってもよい。
【００５４】
（第２の実施の形態）
次に、本発明の第２の実施の形態の半導体集積回路装置について説明する。第１の実施の形態によれば、拡張ロード命令を使用可能とすることにより、出力レジスタからの読み出しおよび更新を一命令で実行できるように構成した。これに対して、第２の実施の形態は、メインバス５００を占有／占有解除する機能が追加されたロード／ストア命令を実行可能とすることで、他のＣＰＵからのバス使用権の要求に対応するバス調停を停止したり停止を解除したりすることができるように構成される。
【００５５】
第２の実施の形態の半導体集積回路装置の構成に関し、第１の実施の形態とは機能が異なる部分についてのみ図１を使用して説明する。
【００５６】
第１のＣＰＵ１００、第２のＣＰＵ２００の命令ＲＡＭ１１０、２１０には、バス占有要求付きロード命令、バス占有解除要求付きロード命令、バス占有要求付きストア命令、バス占有解除要求付きストア命令を含む各命令が蓄積されている。バス占有要求付きロード命令は、出力レジスタからの読み出し後、バスを占有するための命令である。バス占有解除要求付きロード命令は、出力レジスタからの読み出し後、バス占有を解除するための命令である。バス占有要求付きストア命令は、更新制御レジスタに更新要求を書き込み後、バスを占有するための命令である。バス占有解除要求付きストア命令は、更新制御レジスタに更新要求を書き込み後、バス占有を解除するための命令である。
【００５７】
これらバス占有要求付きロード命令、バス占有解除要求付きロード命令、バス占有要求付きストア命令、バス占有解除要求付きストア命令は、通常のロード／ストア命令の一部に、バス占有要求あるいはバス占有解除要求を識別させる情報が付加された構成となっている。例えば、第１の実施の形態１の拡張ロード命令と同様、図２に示したモード領域１１４に、バス占有要求あるいはバス占有解除要求を識別させる情報が記述されるようにするとよい。
【００５８】
次に、第２の実施の形態の半導体集積回路装置の動作を図６を用いて説明する。
【００５９】
フェッチ／デコードユニット１２０は、これらバス占有要求付きあるいはバス占有解除要求付きロード／ストア命令を命令ＲＡＭ１１０からフェッチしてデコードし、デコードした命令をロード／ストアユニット１４０に送信する（ステップＳ３１）。
【００６０】
ロード／ストアユニット１４０は、受信した命令のフラグ領域を参照して、受信した命令がバス占有要求／占有解除要求付きロード／ストア命令であるか否かを判定する（ステップＳ３２）。バス占有要求／占有解除要求付きロード／ストア命令である場合（ステップＳ３２）、ロード／ストアユニット１４０は、読み出し要求および更新要求付きロード命令であることを識別させる命令識別情報を含む制御要求を送信させる指令をバスインターフェースユニット１５０に発行する（ステップＳ３３）。すなわち、ロード／ストアユニット１４０は、読み出し要求または書き込み要求と、読み出し／書き込み要求先のアドレスとのほかに、バス占有要求付き命令の場合はバス占有要求を、バス占有解除要求付き命令の場合はバス占有解除要求を、発行するように指令する。
【００６１】
バスインターフェースユニット１５０は、ロード／ストアユニット１４０からの指令を受信すると、バス使用権を要求・獲得し（ステップＳ３４）、アドレスおよび制御要求（読み出し要求または書き込み要求とバス占有要求またはバス占有解除要求）をメインバス５００に送信する（ステップＳ３５）。
【００６２】
バスコントローラ６００は、バス使用権を与えた第１のＣＰＵ１００からアドレスと、読み出し／書き込み要求と、バス占有要求／バス占有解除要求とが送信されてくると、送信されてきた読み出し／書き込み要求を、アドレスが指す番地を有するＩ／Ｏに転送する（ステップＳ３６）。さらに、バスコントローラ６００は、前記する第１のＣＰＵ１００から送信されてきたバス占有要求／バス占有解除要求に対応して、バス使用権のロック／ロック解除を行う（ステップＳ３７）。
【００６３】
すなわち、バスコントローラ６００は、バス占有要求が送信されてきたとき、該バス占有要求に基づき、第２のＣＰＵ２００からのバス使用権の要求に対応するバス調停を停止する。これにより、バス使用権が第１のＣＰＵ１００にロックされ、第１のＣＰＵ１００はバスシステムを占有する状態に移行する。また、第１のＣＰＵ１００にバス使用権がロックされているときにバス占有解除要求が送信されてきたとき、バスコントローラ６００は、該バス占有解除要求に基づき、第２のＣＰＵ２００からのバス使用権の要求に対する応答を再開する。すなわち、第１のＣＰＵ１００によるバスシステムの占有が解除された状態に移行する。
【００６４】
そして、Ｉ／Ｏコントローラ３２０は、対象レジスタ、すなわちアドレスが指す番地に対して、読み出し／書き込みアクセスを実行する（ステップＳ３８）。
【００６５】
一方、ステップＳ３２において、ロード／ストアユニット１４０がバス占有要求／占有解除要求付きロード／ストア命令ではないと判定した場合（ステップＳ３２、Ｎｏ）、通常のロード／ストア命令の実行動作に移行する。すなわち、ロード／ストアユニット１４０は、読み出し要求または書き込み要求と、読み出し／書き込み要求先のアドレスとを、発行するように指令する（ステップＳ３９）。
【００６６】
バスインターフェースユニット１５０は、ロード／ストアユニット１４０からの指令を受信すると、バス使用権を要求・獲得し（ステップＳ４０）、アドレスおよび制御要求（読み出し要求または書き込み要求）をメインバス５００に送信する（ステップＳ４１）。バスコントローラ６００は、バス使用権を与えた第１のＣＰＵ１００からアドレスと、読み出し／書き込み要求とを、アドレスが指す番地を有するＩ／Ｏに転送する（ステップＳ４２）。そして、ステップＳ３８に移行する。
【００６７】
次に、第２の実施の形態の動作の具体例を、タイミングチャートを用いて説明する。図５は、第１のＣＰＵ１００がＩ／Ｏレジスタ３１０に対するバス占有要求付きロード命令と、バス占有解除要求付きストア命令と、を実行したときのタイミングチャートの具体例を説明する図である。
【００６８】
図７において、第１のＣＰＵ１００がバス占有要求付きロード命令（ｌｗ＋ｌｏｃｋ）を実行すると、第１のＣＰＵ１００とバスコントローラ６００との間で、バス使用権を要求するリクエスト信号とバス使用権を付与するグラント信号とが授受される（Ｓ５１）。続いて、第１のＣＰＵ１００は、アドレスと、読み出し要求と、バス占有要求（ｌｏｃｋ）と、を送信する（Ｓ５２）。
【００６９】
続いて、バスコントローラ６００は、Ｉ／Ｏ３００との間で、リクエスト信号とグラント信号との授受を行い、通信を確立する（Ｓ５３）。そして、アドレス、読み出し要求、およびバス占有要求をＩ／Ｏ３００に転送する（Ｓ５４）。同時に、バスコントローラ６００は、第１のＣＰＵ１００にバス使用権をロックする（Ｓ５５）。ここで、バスコントローラ６００は、バス占有要求をＩ／Ｏ３００に転送しているが、Ｉ／Ｏ３００は該要求を解釈できない。該要求を図中では「ｎｏｒ」（ｎｏｒｍａｌの略）と記述している。なお、バスコントローラ６００がバス占有要求をＩ／Ｏ３００に転送しないようにしてもよい。
【００７０】
続いて、Ｉ／Ｏ３００からバスシステムを介して第１のＣＰＵ１００に対して読み出しデータおよび有効信号が伝達される（Ｓ５６、Ｓ５７）。
【００７１】
次に、第１のＣＰＵ１００がバス占有解除要求情報付きストア命令（ｓｗ＋ｕｎｌｏｃｋ）を実行すると、まず、第１のＣＰＵ１００はバス使用権を要求するリクエスト信号を送信する。バスコントローラ６００は、第１のＣＰＵ１００に対してバス使用権をロックしているので、グラント信号を返信する（Ｓ６１）。ここで、仮に第２のＣＰＵ２００がバス使用権を要求するリクエスト信号を送信していたとしても、バスコントローラ６００は、第１のＣＰＵ１００以外からのリクエスト信号に対応するバス調停の動作を行わないので、第２のＣＰＵ２００に対してグラント信号を返信しない。
【００７２】
続いて、第１のＣＰＵ１００は、アドレス、書き込み要求、書き込みデータ、およびバス占有解除要求（ｕｎｌｏｃｋ）を送信する（Ｓ６２）。
【００７３】
続いて、バスコントローラ６００は、宛先のＩ／Ｏ３００との間でリクエスト信号とグラント信号の授受を行い（Ｓ６３）、Ｉ／Ｏ３００に対してアドレス、書き込み要求、書き込みデータ、およびバス占有解除要求を転送する（Ｓ６４）。Ｉ／Ｏ３００は、バス占有解除要求を解釈できないので、該要求を「ｎｏｒ」と記述している。バスコントローラ６００は、アドレス、データ、および各要求をＩ／Ｏ３００に転送すると、バス使用権のロックを解除し、第２のＣＰＵ２００からのリクエスト信号に対しても応答できるようになる（Ｓ６５）。
【００７４】
このように、第２の実施の形態は、バス占有要求付きのロード命令により、読み出し動作を行うとともにバス使用権をロックし、バス占有解除要求付きのストア命令により、書き込み動作を行うとともにバス使用権のロックを解除している。なお、第２の実施の形態は、バス占有要求付きのストア命令によってもバス使用権をロックすることができ、バス占有解除要求付きのロード命令によってもバス使用権のロックを解除できることはいうまでもない。
【００７５】
ところで、通常、一つのＣＰＵが、バスシステムを使用する多数の命令からなる一つの単位の動作（以下、一単位の動作という）を実行する場合がある。その場合、該一単位の動作を終了する期限であるデッドラインが定められることが一般的である。図６の上から１段目に示す図は、第１のＣＰＵ１００が一単位の動作を行ったときの、バスシステムの占有状態を説明する図である。図示するように、一単位の動作が開始されてからバスシステムの使用が始まり、該動作が終了されて、バスシステムの使用が終了される。該動作は、デッドライン以内に終了されている。ここで、該動作を実行している最中に第２のＣＰＵ２００からバス使用権の要求が発行されると、バス調停の結果に基づき、第１のＣＰＵ１００による一単位の動作が中断される事態が起こる。図６の上から２段目に示す図は、第１のＣＰＵ１００が一単位の動作を行っている最中に、第２のＣＰＵ２００によって３回にわたって中断されたときのバスシステムの占有状態を説明する図である。図示するように、第１のＣＰＵ１００による一単位の動作は、３度にわたる第２のＣＰＵ２００による中断により、デッドライン以内に終了されていない。
【００７６】
これに対して、第１のＣＰＵ１００がバス占有／占有解除要求付きロード／ストア命令によりバス使用権をロック／ロック解除する動作を一単位の動作の最初と最後に行うようにすると、図６の上から３段目に示すように、第２のＣＰＵ２００による中断を受けなかった場合と同じ実行時間で一単位の動作を終えることができる。第２のＣＰＵ２００は、第１のＣＰＵ１００による一単位の動作が終了してから、バスシステムを使用する動作を開始することができるようになる。
【００７７】
また、バス占有要求付きロード命令とバス占有解除要求付きストア命令とをこの順番で組み合わせることにより、従来はテストアンドセット命令により実現していたクリティカルセクションにおける排他制御を実現することが可能になる。
【００７８】
このように、第２の実施の形態によれば、ロード／ストア命令にバス使用権の占有／占有解除を要求するバス占有／占有解除要求が付加されたバス占有要求／占有解除要求付きロード／ストア命令を実行できるようにＣＰＵ１００、２００、バスシステムおよびＩ／Ｏ３００を構成したので、一つの命令で読み出し／書き込みとともにバスシステムの占有／占有解除を実行することができ、かつＣＰＵからバスシステムの排他制御を行うことができるので、バスシステムを効率的に使用できるようになる。
【図面の簡単な説明】
【００７９】
【図１】第１の実施の形態にかかる半導体集積回路装置の構成図。
【図２】命令形式を説明する図。
【図３】第１の実施の形態にかかる半導体集積回路装置の動作を説明するフローチャート。
【図４】第１の実施の形態にかかる半導体集積回路装置のタイミングチャートの具体例を説明する図。
【図５】従来の一般的な半導体集積回路装置のタイミングチャートの具体例を説明する図。
【図６】第２の実施の形態にかかる半導体集積回路装置の動作を説明するフローチャート。
【図７】第２の実施の形態にかかる半導体集積回路装置のタイミングチャートの具体例を説明する図。
【図８】バスシステムの占有状態を説明する図。
【符号の説明】
【００８０】
１００  第１のＣＰＵ、１１０  命令ＲＡＭ、１１１  オペコード領域、１１２  第１のレジスタ領域、１１３  第２のレジスタ領域、１１４  モード領域、１１５  アドレス領域、１２０  フェッチ／デコードユニット、１３０  演算ユニット、１４０  ロード／ストアユニット、１５０  バスインターフェースユニット、１６０  ＣＰＵコントロールレジスタ、１６１  更新制御レジスタ、１６２  出力レジスタ、２００  第２のＣＰＵ、２１０  命令ＲＡＭ、２２０  フェッチ／デコードユニット、２３０  演算ユニット、２４０  ロード／ストアユニット、２５０  バスインターフェースユニット、２６０  ＣＰＵコントロールレジスタ、２６１  更新制御レジスタ、２６２  出力レジスタ、３００  Ｉ／Ｏ、３０１  更新制御レジスタ、３０２  出力レジスタ、３１０  Ｉ／Ｏレジスタ、４００  メインメモリ、５００  メインバス、６００  バスコントローラ。
【図１】
2010186259.tif 000003
【図２】
2010186259.tif 000004
【図３】
2010186259.tif 000005
【図４】
2010186259.tif 000006
【図５】
2010186259.tif 000007
【図６】
2010186259.tif 000008
【図７】
2010186259.tif 000009
【図８】
2010186259.tif 000010