(57)【特許請求の範囲】
【請求項１】
複数ワード命令を含む命令セットを有するかあるいは複数の命令を並列に発行するデータ処理システムのための命令フェッチおよび発行装置（２００）であって、
それぞれ第１のレジスタワード、第２のレジスタワードおよび第３のレジスタワードを含む第１のレジスタ、第２のレジスタおよび第３のレジスタを有する命令レジスタ（２４０）であって、該命令レジスタはロード信号に応じて前記第１のレジスタ、第２のレジスタおよび第３のレジスタから命令ワードを転送するもの、
メモリから第１の命令ワードおよび第２の命令ワードを受けかつ前記命令レジスタから前記第２および第３のレジスタワードを受け、かつ受信したワードの内の選択された１つを第１の制御信号に基づき前記命令レジスタにおける第１のレジスタへと転送する第１のマルチプレクサ（２２０）、そして
前記メモリから前記第１および第２の命令ワードをかつ前記第３のレジスタワードを受信し、かつ該受信したワードの内の選択された１つを第２の制御信号に基づき前記第２のレジスタへと転送する第２のマルチプレクサ（２３０）、
を具備することを特徴とする命令フェッチおよび発行装置（２００）。
【請求項２】
さらに、前記第１の制御信号、前記第２の制御信号、および前記ロード信号を提供するコントローラ（２１０）を具備し、該コントローラは前記第１、第２および第３のレジスタワードの状態に基づきロード信号を提供しかつ前記第１、第２および第３のレジスタワードの次の状態に基づき前記第１および第２の制御信号を提供することを特徴とする、請求項１に記載の装置。
【請求項３】
前記コントローラは前記第１および第２のマルチプレクサによって受信されるべき次の第１および第２の命令ワードが位置するメモリ内のロケーションを計算するための手段を含むことを特徴とする請求項２に記載の装置。
【請求項４】
第１、第２および第３のワードを保持する命令レジスタを有するデータ処理システムのそれぞれのクロックサイクルに対して少なくとも１つの命令ワードをフェッチしかつ発行する方法であって、前記データ処理システムは単一ワード命令、ダブルワード命令、あるいは複数の単一ワード命令を並列に実行することができ、前記方法は、
２つの命令ワードを受信する段階、
前記受信した２つの命令ワードおよび前記命令レジスタに保持された３つのワードの内の第２および第３のワードの間から第１のワードを選択する段階、
前記受信した２つの命令ワードおよび前記命令レジスタに保持された３つのワードの内の第３のワードの間から第２のワードを選択する段階、
前記受信した２つの命令ワードの間から第３のワードを選択する段階、
前記選択されたワードを命令レジスタにロードする段階、そして
単一のクロックサイクルで、第１の命令の実行に必要とされる命令レジスタに保持された数のワードを発行する段階、
を具備することを特徴とする第１、第２および第３のワードを保持する命令レジスタを有するデータ処理システムのそれぞれのクロックサイクルに対して少なくとも１つの命令ワードをフェッチしかつ発行する方法。
【請求項５】
前記発行する段階は、同じ単一クロックサイクル内で、第２の命令を実行するために必要な数のワードを発行する段階を含むことを特徴とする、請求項４に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的にはデータ処理システムに関し、かつより特定的にはデータ処理システム内の命令フェッチおよび発行装置（ｉｎｓｔｒｕｃｔｉｏｎ  ｆｅｔｃｈ  ａｎｄ  ｉｓｓｕａｎｃｅ  ａｐｐａｒａｔｕｓ）に関する。
【０００２】
【従来の技術】
マイクロコントローラおよびマイクロプロセッサのようなデータ処理システムにおいては、命令は典型的には命令キャッシュまたはリードオンリメモリ（ＲＯＭ）から一度に１ワードずつフェッチされ、前記命令キャッシュまたはＲＯＭは典型的には、プロセッサによって実行可能な最小長さの命令に等しい、命令ワードに等しい幅を有する。単一の命令を実行するのに複数のワードが必要な場合は、プロセッサの実行においてストール（ｓｔａｌｌ）が導入されその間に第２のワードが命令レジスタへとフェッチされる。
【０００３】
例えば、図１は従来技術において使用された命令フェッチおよび発行システムを示す。フェッチおよび発行システム１００はＲＯＭのようなプログラムメモリから受信された単一ワードを保持する命令レジスタ１１０を含む。フェッチおよび発行装置１００は受信した命令をデコードしかつデータ処理システム内の実行ユニットに制御信号を出力する命令デコーダ１２０を含む。もし、ダブルワード（ｄｏｕｂｌｅ−ｗｏｒｄ）またはデュアルワード（ｄｕａｌ−ｗｏｒｄ）命令のような、複数ワード命令がプロセッサにより実行されるべきであれば、第１のワードがメモリから読み出されかつ命令レジスタ１１０にロードされる。処理は次に前記ダブルワード命令の第２のワードがメモリから読み出されかつ命令レジスタ１１０にロードされる間遅らせられる（ｓｔａｌｌｅｄ）。その後、命令デコーダ１２０は前記ダブルワード命令をデコードしかつ適切な出力制御信号を該ダブルワード命令を実行する実行ユニットに提供する。理解できるように、プロセッサの速度および効率はダブルワード命令を実行する際にストールが導入されるため低下する。
【０００４】
第２の効率の悪さは複数の命令の並列的な実行が試みられる場合に従来技術のフェッチおよび発行装置１００の構造によって生じる。理解されるように、並列に実行されるべき第２の命令がメモリから読み出される間に第１の命令は命令レジスタ１１０にロードされかつ余分のクロックサイクルの間保持されなければならない。その後、２つの命令は並列的にデコードされかつ実行することができる。しかしながら、前述のように、フェッチおよび発行装置１００のアーキテクチャは２つの命令を並列に実行するためにその動作において遅延を必要とする。
【０００５】
【発明が解決しようとする課題】
この固有の効率の悪さを改善するために、従来技術のデータ処理システムはアドレスされたワードと共に付加的なワードがメモリから読み出されかつ命令レジスタへロードできるようにする。しかしながら、システムが任意選択的に単一ワードまたはダブルワード命令を実行する場合、第２のワードのロードはしばしばむだになりかつその命令は他のクロックサイクルに際してメモリから再びロードされなければならず、それによって不必要にバストラフィックを増大する。さらに、そのようなシステムは単一のアクセスがダブルワード命令の両方のワードを読み出すようにすべてのダブルワード命令がメモリにおいて整列されることを要求する。これは実質的にそのような実行機構の厳格な要求を維持するためにメモリコントローラおよびシステムのハードウエアを複雑にする。
【０００６】
従って、理解できるように、単一およびダブルワード命令の両方をフェッチおよび発行することができ、かつさらにシステムの複雑さを実質的に増大することなく、あるいは余分の部品を加えることによりおよび／またはメモリスペースを使用する際にシステムコストを加えることなく、並列プロセッサにおいて同時に実行されるべき２つの単一ワードの命令を発行できるデータ処理システムにおけるフェッチおよび発行装置の必要性が存在する。
【０００７】
【課題を解決するための手段】
本発明の一態様では、複数ワード命令を含む命令セットを有するかあるいは複数の命令を並列に発行するデータ処理システムのための命令フェッチおよび発行装置（２００）が提供され、該装置は、それぞれ第１のレジスタワード、第２のレジスタワードおよび第３のレジスタワードを含む第１のレジスタ、第２のレジスタおよび第３のレジスタを有する命令レジスタ（２４０）であって、該命令レジスタはロード信号に応じて前記第１のレジスタ、第２のレジスタおよび第３のレジスタから命令ワードを転送するもの、メモリから第１の命令ワードおよび第２の命令ワードを受けかつ前記命令レジスタから前記第２および第３のレジスタワードを受け、かつ受信したワードの内の選択された１つを第１の制御信号に基づき前記命令レジスタにおける第１のレジスタへと転送する第１のマルチプレクサ（２２０）、そして前記メモリから前記第１および第２の命令ワードをかつ前記第３のレジスタワードを受信し、かつ該受信したワードの内の選択された１つを第２の制御信号に基づき前記第２のレジスタへと転送する第２のマルチプレクサ（２３０）、を具備することを特徴とする。
【０００８】
上記構成において、さらに、前記第１の制御信号、前記第２の制御信号、および前記ロード信号を提供するコントローラ（２１０）を具備し、該コントローラは前記第１、第２および第３のレジスタワードの状態に基づきロード信号を提供しかつ前記第１、第２および第３のレジスタワードの次の状態に基づき前記第１および第２の制御信号を提供すると好都合である。
【０００９】
また、前記コントローラは前記第１および第２のマルチプレクサによって受信されるべき次の第１および第２の命令ワードが位置するメモリ内のロケーションを計算するための手段を含むよう構成することもできる。
【００１０】
本発明の別の態様では、第１、第２および第３のワードを保持する命令レジスタを有するデータ処理システムのそれぞれのクロックサイクルに対して少なくとも１つの命令ワードをフェッチしかつ発行する方法が提供され、前記データ処理システムは単一ワード命令、ダブルワード命令、あるいは複数の単一ワード命令を並列に実行することができ、前記方法は、２つの命令ワードを受信する段階、前記受信した２つの命令ワードおよび前記命令レジスタに保持された３つのワードの内の第２および第３のワードの間から第１のワードを選択する段階、前記受信した２つの命令ワードおよび前記命令レジスタに保持された３つのワードの内の第３のワードの間から第２のワードを選択する段階、前記受信した２つの命令ワードの間から第３のワードを選択する段階、前記選択されたワードを命令レジスタにロードする段階、そして単一のクロックサイクルで、第１の命令の実行に必要とされる命令レジスタに保持された数のワードを発行する段階、を具備することを特徴とする。
【００１１】
この場合、前記発行する段階は、同じ単一クロックサイクル内で、第２の命令を実行するために必要な数のワードを発行する段階を含むと好都合である。
【００１２】
【発明の実施の形態】
次に図２を参照すると、装置２００はＲＯＭまたはランダムアクセスメモリのようなメモリ装置から第１の命令ワード（ＩＷ−ＭＳＷ）および第２の命令ワード（ＩＷ−ＬＳＷ）を受ける。ＩＷ−ＭＳＷおよびＩＷ−ＬＳＷは該メモリの２つの引き続くアドレスロケーションから読み出される。従って、ＩＷ−ＭＳＷはメモリから読み出される最上位ワード（ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｗｏｒｄ：ＭＳＷ）と考えられかつＩＷ−ＬＳＷは最下位ワード（ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｗｏｒｄ：ＬＳＷ）と考えられる。
【００１３】
この好ましい実施形態において使用されているように、各命令ワード（ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ）は１６ビット幅である。しかしながら、命令ワードの長さは好ましい実施形態の特定の用途に応じて８，１６，３２または６４ビット幅のような任意のビット幅とすることができる。従って、ＭＵＸ２２０，２３０によって受信されるデータバスの各々は１６ビット幅のバスとして示されている。
【００１４】
図２に見られるように、ＭＵＸ１  ２２０から受信される命令ワードはレジスタワードＷ１としてロードされ、かつＭＵＸ２  ２３０から受信される命令ワードはレジスタワードＷ２としてロードされる。ＩＷ−ＬＳＷはコントローラ２１０からのロード信号により適切にイネーブルされたときレジスタワードＷ３としてロードされる。コントローラ２１０はマルチプレクサの入力命令ワードの１つがそのマルチプレクサから出力されるように選択できる制御信号２０７，２０８によってＭＵＸ１  ２２０およびＭＵＸ２  ２３０を制御する。コントローラ２１０は命令レジスタ２４０から出力される命令を制御する制御信号２０９を発生する。コントローラ２１０は図３に示される状態図（ｓｔａｔｅ  ｄｉａｇｒａｍ）を実施するために必要なもののような複雑な論理機能を達成することができるマイクロプロセッサ、マイクロコントローラまたは他の論理回路とすることができる。コントローラ２１０はまたＩＷ−ＭＳＷおよびＩＷ−ＬＳＷをＭＵＸ１およびＭＵＸ２へと提供するためにメモリをアクセスするためのメモリコントローラとすることができる。
【００１５】
命令レジスタ２４０は３命令ワード幅でありかつ第１の命令ワード（Ｗ１）、第２の命令ワード（Ｗ２）、および第３の命令ワード（Ｗ３）（それぞれ、第１のレジスタワード、第２のレジスタワード、および第３のレジスタワードとも称される）を保持する。図２に見られるように、ＭＵＸ１  ２２０およびＭＵＸ２２３０の双方はメモリから命令ワード、ＩＷ−ＭＳＷおよびＩＷ−ＬＳＷの双方を受信する。さらに、ＭＵＸ１  ２２０は命令レジスタ２４０に保持された命令ワードＷ２および命令ワードＷ３を入力として受信する。同様に、ＭＵＸ２  ２３０は命令レジスタ２４０に保持された命令ワードＷ３を付加的な入力として受信する。
【００１６】
制御信号２０９に応じて、命令レジスタ２４０は単一クロックサイクルの間に命令デコーダ２５０へと命令ワードＷ１およびＷ２を発行して複数命令またはデュアルワード命令が発行できるようにする。従って、並列に実行されるべき複数の命令を発行する場合、命令デコーダ２５０は両方の命令を読み出すためにストールが要求されることなく両方の命令ワードＷ１およびＷ２を受信する。その後、命令デコーダ２５０は該命令をデコードしかつ該並列命令を実行するためにデータ処理システムの実行ユニット（図示せず）に対して制御信号を提供する。あるいは、命令ワードＷ１およびＷ２として命令レジスタ２４０に含まれているダブルワード命令を同時に受信することができかつ次に命令デコーダ２５０によってデコードして実行ユニットによってダブルワード命令が実行できるようにすることができる。
【００１７】
動作においては、フェッチおよび発行ユニット２００がリセットされたとき、コントローラ２１０はメモリに記憶された実行可能なプログラムの第１のアドレスを分析して該アドレスが奇数アドレスかまたは偶数アドレスであるかを判定する。もし該アドレスが偶数アドレスであれば、コントローラ２１０はそのアドレスにおける最下位および最上位ワードをそれぞれレジスタワードＷ２およびレジスタワードＷ１へとフェッチする。これに対し、もし開始プログラムアドレスが奇数アドレスであれば、コントローラ２１０はそのアドレスからの最下位ワードおよび最上位ワードをフェッチするが、最下位ワード（ＩＷ−ＬＳＷ）のみをレジスタワードＷ１へとロードする。その後、コントローラ２１０は図３に示される状態図に従った方法で動作し命令ストリームを通って適切にシーケンスを行う。
【００１８】
図３は、本発明の好ましい実施形態に係わるフェッチおよび発行ユニットの動作の論理状態図を示す。ユニット２００のリセットに応じて、コントローラ２１０は前記実行可能なプログラムの最初のアドレスが偶数アドレスである場合に前記ユニットを状態３１０におき、かつ前記実行可能なプログラムの最初のアドレスが奇数アドレスである場合に前記ユニットを状態３４０におく。状態３１０および３２０はフェッチおよび発行ユニットの定常状態（ｓｔｅａｄｙ−ｓｔａｔｅ）の動作の状態を記述し、プログラムの順次的な実行の状態を表している。状態３３０，３４０はフェッチおよび発行ユニットに対する非定常状態（ｎｏｎ−ｓｔｅａｄｙ−ｓｔａｔｅ）の動作の状態を表しておりこの場合飛越し（ジャンプ：ｊｕｍｐｓ）または分岐（ｂｒａｎｃｈｅｓ）のようなプログラムフローの変化はプログラムカウンタを新しい値にセットする。
【００１９】
状態３１０からの遷移３１２に対しては、ダブルワード命令が命令レジスタ２４０から発行されかつ最上位ワード（ＩＷ−ＭＳＷ）および最下位ワード（ＩＷ−ＬＳＷ）が次のプログラムアドレスから、それぞれ、命令ワードＷ１およびＷ２へとフェッチされる。遷移３１４に対しては、単一ワード命令が命令ワードＷ１から発行されかつ命令ワードＷ２はサブルーチンへのジャンプ命令（ＪＳＲ）を含まない。Ｗ２はＭＵＸ１  ２２０を介してＷ１へとロードされ、かつＷ２およびＷ３は、それぞれ、ＭＳＷおよびＬＳＷによってメモリの次のアドレスからロードされ、命令レジスタを奇数状態（ｏｄｄ  ｓｔａｔｅ）３２０に移行させる。また、プログラムカウンタ（ＰＣ）、図示せず、は２つの命令ワードだけ増分される。
【００２０】
遷移３１６に対しては、ジャンプ、分岐、サブルーチンへのジャンプ、サブルーチンからの戻り、または割込みからの戻りのようなプログラムフローにおける変化がありこれはユニット２００を偶数状態（ｅｖｅｎ  ｓｔａｔｅ）３１０から奇数へのジャンプ（ＪＭＰ＿ＯＤＤ）状態３３０に移行させる。遷移３１６はプログラムフローの変化が奇数アドレスに対するものである場合に発生する。奇数アドレスに位置する命令ワードはＷ１へとロードされ、Ｗ２およびＷ３の内容はコントローラ２１０によって考慮されずあるいは捨てられる。これは図面において該レジスタワードに含まれる“ｘ”で表されている。この遷移の間に、プログラムカウンタは１だけ増分される。
【００２１】
状態３１０からの遷移３１８に対しては、奇数アドレスにおけるサブルーチンへのジャンプを表し、Ｗ１におけるジャンプ命令ワードが命令デコーダに発行され、Ｗ２がＷ１へとロードされ、かつＷ２およびＷ３がメモリからダブル命令ワードによってロードされる。また、プログラムカウンタは１だけ増分される。
【００２２】
図３の状態図における他の定常状態は奇数状態３２０である。奇数状態３２０からの遷移３２２はダブルワード命令または２つのシングルワード命令を実行するために命令レジスタ２４０からダブルワードが発行され、Ｗ２がＪＳＲを含まない場合に発生する。その後、Ｗ３はＷ１およびＷ２へとロードされかつＷ３はメモリからロードされる。また、プログラムカウンタは２だけ増分されかつ遷移は状態３２０に戻り、それはＷ３もまたＬＳＷであるためである。遷移３２４に対し、シングルワードがＷ１から発行され、Ｗ１が次にＷ２によってロードされかつＷ２はＷ３によってロードされ、状態３１０への遷移を生じさせる。遷移３２６においては、奇数アドレスにおけるデスティネイションへのプログラムフローの変化が生じ、従ってＷ１が次にその奇数アドレスにおいてメモリからＬＳＷによってロードされかつプログラムカウンタは１だけ増分され、状態３４０へと遷移する。遷移３２８においては、ダブルワードまたは２つのシングルワードがＷ１およびＷ２から発行されかつＷ３はＪＳＲに等しい。従って、Ｗ３がＷ１へとロードされかつＷ２およびＷ３がメモリからロードされかつプログラムカウンタが１だけ増分されたとき、レジスタは状態３３０へと遷移する。
【００２３】
命令レジスタ２４０が非定常状態の状態３３０で構成されているとき、遷移３３２はサブルーチンへのジャンプが奇数アドレスに対して発生した場合に生じ、従ってＩＷ−ＬＳＷがメモリからその奇数アドレスにおいてＷ１へとロードされかつプログラムカウンタが１だけ増分されて状態３４０へと遷移する。遷移３３４の間に、偶数アドレスに対してサブルーチンへのジャンプが発生し、Ｗ１およびＷ２がメモリからダブルワードによってロードされかつプログラムカウンタは２だけ増分され、レジスタを状態３１０へと遷移させる。
【００２４】
第２の非定常状態３４０は遷移３４２を含み、この場合Ｗ１はダブルワード命令でありつＪＳＲに等しくない。シングルワードのみが命令レジスタにロードされているから、プロセッサは同時に実行されるべきダブルワード命令または並列命令の第２のワードを読み出すために１クロックサイクルストールまたは遅延しなければならない。該ストールの間に、Ｗ２およびＷ３はメモリからダブルワード（ＩＷ−ＭＳＷおよびＩＷ−ＬＳＷ）によってロードされ、レジスタを状態３２０へと遷移させる。遷移３４４において、シングルワードがＷ１から発行され、かつ次にＷ１およびＷ２がメモリからダブルワードによってロードされかつプログラムカウンタが２だけ増分され、状態３１０へと遷移する。
【００２５】
遷移３４６においては、Ｗ１はダブルワード命令でありかつＷ１はＪＳＲである。プロセッサは１クロックサイクルストールしなければならずこの間にＷ２およびＷ３はメモリからダブルワードによってロードされかつプログラムカウンタは１だけ増分され、状態３３０へと遷移する。遷移３４８においては、サブルーチンからの戻りまたは奇数アドレスへの分岐はＷ１から発行される。Ｗ１は次にアクセスされたメモリワードのＬＳＷによってロードされかつプログラムカウンタはストールサイクルの間に更新された後に１だけ増分され、状態は状態３４０に戻る。従って、命令がメモリにおいて不整列になっており（ｍｉｓａｌｉｇｎｅｄ）かつプログラムフローにおける変化のターゲット命令が長さにおいて２命令ワードでありかつ奇数境界に対するものである場合は、余分の命令フェッチサイクルが必要とされる。
【００２６】
【発明の効果】
理解されるように、本発明の好ましい実施形態のフェッチおよび発行ユニットはプロセッサが付加的なワードを読み出すためにストールすることを要求することなくクロックサイクルごとに２つまでの命令を効率的にフェッチしかつ発行する。従って、プログラムの順次的な実行（すなわち、定常動作）の間に、好ましい実施形態のシステムは命令ワードの長さにかかわりなくそれぞれのクロックサイクルに対して常に少なくとも１つの命令を発行することになる。
【００２７】
さらに、前記フェッチおよび発行ユニットはプロセッサをストールさせることなくデュアルワード命令または２つの命令を並列に発行することができる。従来技術のシステムはそのような性能は達成できなかった。好ましい実施形態の強化された性能はサイクルごとに実行できる命令の数を増大することによりかつ命令フェッチの遅延の影響を低減することにより達成される。従って、フェッチされる命令は他のクロックサイクルに際してメモリから再びロードされる必要はなく、それによって不必要にバストラフィックを増大することを避けることができる。さらに、単一のアクセスがダブルワード命令の両方のワードを読み出すようにメモリにおいてダブルワード命令を整列させる厳格なメモリ構成を維持するために複雑なメモリコントローラおよびシステムのハードウエアを必要とすることもない。
【００２８】
従って、本発明のフェッチおよび発行装置は単一命令およびダブルワード命令の双方をフェッチおよび発行することができ、かつさらに複雑な構成要素を余分に追加しおよび／またはメモリスペースを使用することによりシステムのコストおよび複雑さを実質的に増大することなく、並列プロセッサにおいて同時に実行されるべき２つのシングルワード命令を発行することが可能である。
【００２９】
本発明が好ましい実施形態に関して説明されたが、当業者には本発明は数多くの方法で変更することができかつ上で特に示しかつ説明したもの以外の数多くの実施形態を取り得ることが理解されるであろう。従って、添付の特許請求の範囲は本発明の真の範囲内にある本発明のすべての変更および修正をカバーするものと考える。
【図面の簡単な説明】
【図１】従来技術の命令フェッチおよび発行システムを示すブロック図である。
【図２】本発明の好ましい実施形態に係わるマイクロコントローラまたはマイクロプロセッサのようなデータ処理システムのためのフェッチおよび発行装置を示すブロック図である。
【図３】本発明の好ましい実施形態に係わるフェッチおよび発行ユニットの動作を示す論理状態図である。
【符号の説明】
１００  フェッチおよび発行システム
１１０  命令レジスタ
１２０  命令デコーダ
２００  フェッチおよび発行装置
２１０  コントローラ
２２０，２３０  マルチプレクサ
２４０  命令レジスタ
２５０  命令デコーダ
【図１】
0003790626.tif 000002
【図２】
0003790626.tif 000003
【図３】
0003790626.tif 000004