(57)【要約】      （修正有）【課題】マイクロコンピュータにおいて、新たな命令を追加するための簡単で、費用対効果の良い方法を提供する。【解決手段】拡張可能な中央処理装置（ＣＰＵ）である。新しいＣＰＵまたは従来技術によるＣＰＵのアーキテクチャの改良により、新しいＣＰＵまたは従来技術のＣＰＵを拡張可能にし、新しい命令を簡単で費用効果の高い方法で追加し、様々な顧客の必要性を満たすことができる。ＣＰＵに関する「拡張可能」という言葉は、既存のＣＰＵ回路構成に大きな変更を加えることなく、一定の指定された回路構成を追加するだけで、ＣＰＵに新しい命令を追加できることを意味する。ある実施例においては、追加の指定された回路構成には、ＣＰＵ制御拡張部回路構成５２またはの形態の制御回路構成が含まれる。ある実施例においては、追加の回路構成には実行ユニット拡張部回路構成の形態の非制御回路構成が含まれる。【選択図】      図２
2005050365.tif 000002
【特許請求の範囲】
【請求項１】
実行ユニット（５６，１５６）を有するデータ処理装置（１２，１２’）における方法であって：
前記実行ユニット（５６，１５６）において、第１組の入力および第２組の入力を設ける段階；
当該データ処理装置（１２，１２’）において、第１組の命令および第２組の命令をもたらす段階；
当該データ処理装置（１２，１２’）において、第１組の命令に含まれ第２組の命令には含まれない第１命令を受信する段階；
該第１命令の受信に応答して、第１組の入力にもたらされた制御信号を介して前記実行ユニット（５６，１５６）を制御する段階；
当該データ処理装置（１２，１２’）において、前記第１命令とは異なる拡張可能制御命令を受信する段階；
該拡張可能制御命令の受信に応答して、当該データ処理装置（１２，１２’）を第２組の命令を受信できるよう可能化する段階；
当該データ処理装置（１２，１２’）において、前記第２組の命令の一部であるが前記第１組の命令には含まれない第２命令を受信する段階；
該第２命令の受信に応答して、前記第２組の入力にもたらされた制御信号を介して前記実行ユニット（５６，１５６）を制御する段階；
前記第１命令とは異なる第２の拡張可能制御命令を受信する段階；
該第２の拡張可能制御命令の受信に応答して、当該データ処理装置（１２，１２’）を第１組の命令を受信できるよう可能化する段階；
前記第１組の命令内の任意の命令を受信する段階；ならびに
該任意の命令の受信に応答して、第１組の入力にもたらされた制御信号を介して、前記実行ユニット（５６，１５６）を制御する段階；
から構成されることを特徴とする方法。
【請求項２】
中央処理装置（１２，１２’）であって：
第１組の実行ユニット制御信号を発生する第１制御ユニット（５４，１５４）；
第２組の実行ユニット制御信号を発生する第２制御ユニット（６４，１６４）；
前記第１制御ユニット（５４，１５４）と前記第２制御ユニット（６４，１６４）とに結合された実行ユニット（５６，１５６）であって、特殊制御転送命令以外の命令が実行されているときには、第１組および第２組の実行ユニット制御信号のうちの一方のみによって制御され、前記特殊制御転送命令の一部の間では第１組および第２組の実行ユニット制御信号の両方により制御される、実行ユニット（５６，１５６）；ならびに
前記第１制御ユニット（５４，１５４）と前記第２制御ユニット（６４，１６４）とに結合された状態シーケンサ回路（５８，６８，１５８，１６８）であり、特殊制御転送命令の受信の結果として、第１組の実行ユニット制御信号から第２組の実行ユニット制御信号へと前記実行ユニット（５６，１５６）の制御の転送を開始する、状態シーケンサ回路；
によって構成されることを特徴とする中央処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に中央処理装置に関し、さらに詳しくは、拡張可能な中央処理装置に関する。
【背景技術】
【０００２】
中央処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔは、一般に、マイクロコンピュータ集積回路（ＭＣＵ：ｍｉｃｒｏｃｏｍｐｕｔｅｒ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）の主要な「頭脳」である。ＣＰＵの他にも、ＭＣＵにはメモリ，タイマおよびバス・インターフェースなどの１つ以上のオンボード周辺機器または部分が含まれているのが普通である。しかし、通常はＣＰＵがＭＣＵを制御するために用いられるソフトウェア命令を受信して解釈する責を負っている。
【０００３】
ある特定のＣＰＵを、様々なＭＣＵに用いることができる。同じＣＰＵが様々なＭＣＵに用いられる場合、これらのＭＣＵは一般に「ファミリ」（テキサス州オースティンのモトローラ社から販売されるＭＣ６８ＨＣ０５ファミリのマイクロコンピュータなど）を形成すると考えられる。種々のＭＣＵに同一のＣＰＵを用いることには、製造者の視点からも、顧客の視点からも多くの利点がある。このような利点の１つは、同一のＣＰＵを用いるファミリ内のＭＣＵ間にはソフトウェアの互換性があることである。
【０００４】
しかし、１つのファミリのＭＣＵが広範な用途に標準的に用いられるために問題が起きる。ＭＣＵの顧客には、たとえばデジタル信号処理命令またはファジー論理命令などのカスタム（特注）命令（用途別の命令とも呼ばれる）を希望する、あるいは必要とする場合がある。しかし、このようなカスタム命令を必要とせず、このカスタム命令がＣＰＵの一部として含まれるためにかかる余分な経費を払いたくない顧客もいる。そのため、用途別の命令と経費との間の条件の取捨選択がどのように行われようとも、ＣＰＵ設計者によりなされた条件の取捨選択に満足しないＭＣＵの顧客は多い。
【０００５】
第２の問題点は、１つのファミリのＭＣＵが一般には数年間市場にあるという事実により起こる。しかし、ＭＣＵ顧客の要望はもっと速いペースで変化する。たとえば、わずか５年前には、ファジー論理命令を必要とするＭＣＵの顧客は、いたとしても、ほとんどいなかった。現在では、かなりの数のＭＣＵの顧客にとって、ファジー論理命令が要件であることは珍しくない。その結果、ＭＣＵの寿命の間にきわめて一般的に必要とされる用途別の命令を組み込むＣＰＵを設計することは、現在では非常に難しい。実際のところ、かなりの数のＭＣＵ顧客によって将来必要とされる用途別命令にはまだ未知のものもある。
【０００６】
第３の問題点は、既存の低価格のＣＰＵでは満足に実行することのできない少数の重要なソフトウェア・ルーチンを持つＭＣＵ顧客がいるために起こる。そのため、これらのＭＣＵ顧客は、少数の重要なソフトウェア・ルーチンの必要性を満たすために、より強力でより高価なＣＰＵをもつＭＣＵを用いることを強いられている。しかし、より強力でより高価なＣＰＵは、顧客の電力消費および／または価格の制約を満たさないことがある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記の問題点は、たとえばＭＣ６８ＨＣ０５ファミリのマイクロコンピュータなどのローエンドＭＣＵなどのきわめて価格に敏感なＭＣＵの用途において重要である。現在のＭＣ６８ＨＣ０５ファミリのマイクロコンピュータにおいては、新たな命令を追加するための簡単で費用効果の良い方法はない。そのため、ＭＣＵ顧客の必要性と要件とが変化するのに応じて、ＣＰＵを注文設計するための簡単で費用効果の良い方法はない。
【課題を解決するための手段】
【０００８】
前述の必要性は、本発明により満足され、その他の利点も本発明により得られる。本発明は、ある形態では、拡張可能な中央処理装置である。
【０００９】
ある実施例においては、本発明は実行ユニットを有する中央処理装置である。この実行ユニットには、第１組の制御信号を受信する第１組の制御入力が含まれる。第１組の制御信号は、実行ユニットのすべてを制御することができる。実行ユニットにはまた、第２組の制御信号を受信することのできる第２組の制御入力も含まれる。第２組の制御信号は、実行ユニットのすべてを制御することができる。実行ユニットにはまた、中央処理装置内のすべてのステータス・レジスタも含まれる。中央処理装置は、実行ユニットに結合された第１制御ユニットも有する。第１制御ユニットは、第１組の制御信号を設ける。
【００１０】
本発明は、以下の詳細な説明と添付の図面とによって、当業者に理解されるだろう。
【発明を実施するための最良の形態】
【００１１】
新たな命令を中央処理装置（ＣＰＵ）に追加するための簡単で費用効果の良い方法が必要とされた。新しい、あるいは従来の技術によるＣＰＵのアーキテクチャを改良することにより、新しいＣＰＵまたは従来技術のＣＰＵを拡張可能にして、比較的簡単で費用効果の良い方法で新しい命令を追加することができる。ＣＰＵに関して「拡張可能（ｅｘｔｅｎｓｉｂｌｅ）」という言葉は、一定の指定された回路構成を追加することにより、既存のＣＰＵの回路構成を大幅に変更することなく新しい命令をＣＰＵに追加することができることを意味するために用いられる。
【００１２】
本発明を用いると、より低価格の顧客の要望を満たす基本的な１組の命令セットを備えた拡張可能なＣＰＵを設計することができる。拡張可能ＣＰＵに新しい命令を追加することが簡単に低価格で行えるので、用途別の命令を希望する、あるいは必要とする顧客は１つ以上の用途別命令を追加して、なおかつ妥当な価格を維持することができる。さらに、将来新しいアルゴリズムが開発されたり、普及した場合に、新たな命令を拡張可能ＣＰＵに追加して、簡単で費用効果の良い方法で新しいアルゴリズムを組み込むことができる。
【００１３】
本発明を用いると、従来技術のＣＰＵシステム・レベルのアーキテクチャ、たとえば図示された実施例のＭＣ６８ＨＣ０５ＣＰＵアーキテクチャを改良して、拡張可能なものにして、新しい命令を追加するために大きな回路変更を必要としないようにすることができる。あるいは、新たな命令を実行するために所定の回路構成の追加が必要となることもある。ＭＣ６８ＨＣ０８と名付けられた、結果として得られた拡張可能なＣＰＵは、既存のＭＣ６８ＨＣ０５ファミリのＭＣＵとのオブジェクト・コードの互換性がある。
【００１４】
従来技術のＣＰＵは、以下の改良を行うことにより拡張可能にすることができる：すなわち（１）２台以上の制御ユニットが、実行ユニット内へと制御信号を駆動できるようにする；（２）プログラマ・モデル内のレジスタのすべてを実行ユニットに入れる（条件コード・レジスタを含む）；（３）状態シーケンサ（ｓｔａｔｅ  ｓｅｑｕｅｎｃｅｒ）回路構成を改良する；および（４）いくつかの制御信号を追加する。ＣＰＵが拡張可能になると、拡張可能ＣＰＵ回路構成に大きな変更を加えずに別の命令を追加することができる。
【００１５】
第２制御ユニット６４と第２状態シーケンサ６８とを追加するだけで、新しい命令を追加することができる。第２制御ユニット６４の大部分は元の制御ユニット５４の複製であり、第２状態シーケンサ６８のある部分は元の状態シーケンサ５８の複製とすることができる点に注目されたい。また、元の制御ユニット５４も第２制御ユニット６４も、実行ユニット５６内のすべてのリソースに完全にアクセスできる点にも注目されたい。
【００１６】
実行ユニット１５６の既存のリソースを利用する新しい命令を追加するだけでなく、新しいリソースを実行ユニットそのものに追加することもできる。実行ユニットの内部バスは、実行ユニットの物理端に配線されている。このため実行ユニット拡張部１５３を追加して、１つ以上の実行ユニットの内部バスに直接結合して、レジスタ，別の演算論理ユニット（ＡＬＵ：ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ），特殊機能回路構成または他の任意の回路構成を追加することにより実行ユニットの機能性を拡大することができる。
【００１７】
その結果、本発明により従来技術のＣＰＵを拡張可能にして、拡張可能なＣＰＵに回路構成を容易に追加して、現在および将来にわたり様々な顧客の必要性を満たすことができる。その結果、個々の顧客の融通性を図るための経費が大幅に削減された。
【００１８】
［図面の説明］
「アサートする（ａｓｓｅｒｔ）」と「ネゲートする（ｎｅｇａｔｅ）」という言葉は、信号，ステータス・ビットまたは同様の装置を、それぞれ、論理的に真の状態にすることおよび論理的に偽の状態にすることを指すときに用いられる。論理的に真の状態が論理レベル１であるとすると、論理的に偽の状態は論理レベル０である。論理的に真の状態が論理レベル０であるとすると、論理的に偽の状態は論理レベル１である。
【００１９】
「バス」という言葉は、データ，アドレス，制御またはステータスなど１つ以上の種々の情報を送信するために用いられる複数の信号を指すために用いられる。
【００２０】
図１は、データ処理システム１０のある実施例を示す。データ処理システム回路構成１０は、拡張可能な中央処理装置（ＣＰＵ）回路構成１２，回路構成のシステム統合部１４，回路構成のシリアル部１６，ランダム・アクセス・メモリ（ＲＡＭ）回路構成１８，読み込み専用メモリ（ＲＯＭ）回路構成２０，その他のメモリ回路構成２２（たとえば電気的消去書き込み可能な読み込み専用メモリＥＥＰＲＯＭ），ポート論理回路構成２４，外部バス・インターフェース回路構成２６，回路構成のタイマ部２８および直接メモリ・アクセス（ＤＭＡ）回路構成３０を有し、これらはそれぞれバス回路構成３２に双方向的に結合されている。拡張可能なＣＰＵ１２とシステム統合部１４とは、バス回路構成３４により互いに双方向的に結合されている。拡張可能なＣＰＵ１２は、バス回路構成３６によりＤＭＡ３０に結合されている。
【００２１】
システム統合部１４は、集積回路ピン３８を介してデータ処理システム１０の外部と信号の受信および送信ができる。シリアル部１６は、集積回路ピン４０を介して、データ処理システム１０の外部と信号の受信および送信ができる。メモリの種類により、他のメモリ２２は集積回路ピン４２を介して、データ処理システム１０の外部と信号の受信および送信を任意にすることができる。ポート論理２４は、集積回路ピン４４を介してデータ処理システム１０の外部と信号の受信および送信ができる。外部バス・インターフェース２６は、集積回路ピン４６を介してデータ処理システム１０の外部と信号の受信および送信ができる。また、タイマ部２８は、集積回路ピン４８を介して、データ処理システム１０の外部と信号の受信および送信ができる。
【００２２】
図２は、本発明のある実施例による図１の拡張可能な中央処理装置（ＣＰＵ）１２をブロック図に示したものである。拡張可能ＣＰＵ１２は、２つの主要な部分、すなわちＣＰＵコア回路構成５０とＣＰＵ制御拡張部回路構成５２とに分割される。
【００２３】
ＣＰＵコア５０は、制御ユニット回路構成５４，実行ユニット（ＥＵ）回路構成５６および第１状態シーケンサ回路構成５８を有する。制御ユニット５４は、制御ＰＬＡ信号（Ｃｏｎｔｒｏｌ  ＰＬＡ  Ｓｉｇｎａｌｓ）をランダム制御論理回路構成６２に転送する制御プログラミング可能論理アレイ（制御ＰＬＡ）回路構成６０を有する。ランダム制御論理６２は、タイミング制御信号（Ｔｉｍｅｄ  Ｃｏｎｔｒｏｌ  Ｓｉｇｎａｌｓ）を実行ユニット５６に転送する。ランダム制御論理６２は、実行ユニット５６からステータス信号（Ｓｔａｔｕｓ  Ｓｉｇｎａｌｓ）を受信する。制御ＰＬＡ６０は、第１状態シーケンサ５８との間で信号を受信および転送する。ランダム制御論理６２は、動作不能（ディスエーブル）回路構成６３を含む。
【００２４】
ＣＰＵ制御拡張部５２は、制御ユニット回路構成６４と第２状態シーケンサ回路構成６８とを有する。制御ユニット６４は、制御ＲＯＭ信号（Ｃｏｎｔｒｏｌ  ＲＯＭ  Ｓｉｇｎａｌｓ）をランダム制御論理回路構成７２に転送する制御読み込み専用メモリ（制御ＲＯＭ）回路構成７０を有する。ランダム制御論理７２は、タイミング制御信号を実行ユニット５６に送信する。ランダム制御論理７２は、実行ユニット５６からステータス信号を受信する。ランダム制御論理７２は、動作不能回路構成７３を含む。
【００２５】
制御ＲＯＭ７０は、第２状態シーケンサ６８との間で信号を転送および受信する。制御ＲＯＭ７０は、第１状態シーケンサ５８にも信号を転送する。第２状態シーケンサ６８は、１個以上の信号をランダム制御論理６２に転送する。また第２状態シーケンサ６８は、ランダム制御論理７２にも信号を転送する。第２状態シーケンサ６８は制御ＰＬＡ６０から信号を受信する。
【００２６】
実行ユニット５６は、バス３２に対して双方向的に結合される。第１状態シーケンサ５８と第２状態シーケンサ６８とは、バス３２から命令を受信するように結合されている。
【００２７】
図３は、本発明のある実施例による図１の拡張可能な中央処理装置（ＣＰＵ）１２’をブロック図に示したものである。拡張可能ＣＰＵ１２’は、３つの主要部分、すなわちＣＰＵコア回路構成１５０と、ＣＰＵ制御拡張部回路構成１５２と、実行ユニット拡張部回路構成１５３とに分かれている。
【００２８】
ＣＰＵコア１５０は、制御ユニット回路構成１５４，実行ユニット（ＥＵ）回路構成１５６および第１状態シーケンサ回路構成１５８を有する。制御ユニット１５４は、制御ＰＬＡ信号をランダム制御論理回路構成１６２に転送する制御プログラミング可能論理アレイ（制御ＰＬＡ）回路構成１６０を有する。ランダム制御論理１６２は、タイミング制御信号を実行ユニット１５６に転送する。ランダム制御論理１６２は、実行ユニット１５６からステータス信号を受信する。制御ＰＬＡ１６０は、第１状態シーケンサ１５８との間で信号の送受信を行う。ランダム制御論理１６２には、動作不能回路構成１６３が含まれる。
【００２９】
ＣＰＵ制御拡張部１５２は、制御ユニット回路構成１６４と第２状態シーケンサ回路構成１６８とを有する。制御ユニット１６４は、ランダム制御論理回路構成１７２に制御ＲＯＭ信号を転送する制御読み込み専用メモリ（制御ＲＯＭ）回路構成１７０を有する。さらに、制御ユニット１６４は、制御ＲＯＭ拡張信号（Ｃｏｎｔｒｏｌ  ＲＯＭ  Ｅｘｔｅｎｓｉｏｎ  Ｓｉｇｎａｌｓ）をランダム制御論理拡張部回路構成１７５に送信する制御読み込み専用メモリ（制御ＲＯＭ）回路構成１７１を有する。ランダム制御論理１７２は、実行ユニット１５６にタイミング制御信号を転送する。さらにランダム制御論理拡張部１７５は、タイミング制御信号を実行ユニット拡張部１５３に転送する。ランダム制御論理１７２は、実行ユニット１５６からステータス信号を受信する。さらにランダム制御論理拡張部１７５は、実行ユニット拡張部１５３からステータス信号を受信する。ランダム制御論理１７２には、動作不能回路構成１７３が含まれる。
【００３０】
制御ＲＯＭ１７０は、第２状態シーケンサ１６８との間で信号を送受信する。制御ＲＯＭ１７０は、第１状態シーケンサ１５８にも信号を転送する。第２状態シーケンサ１６８は、１つ以上の信号をランダム制御論理１６２に転送して、第２状態シーケンサ１６８は、ランダム制御論理１７２にも信号を転送する。第２状態シーケンサ１６８は、制御ＰＬＡ１６０から信号を受信する。
【００３１】
実行ユニット１５６は、バス３２と双方向的に結合されている。第１状態シーケンサ１５８と第２状態シーケンサ１６８とは、バス３２からの命令を受け取るように結合されている。さらに実行ユニット拡張部１５３は、１つ以上の実行ユニット（ＥＵ）内部バスにより実行ユニット１５６に結合されている。
【００３２】
図４は、本発明のある実施例による図２の第１状態シーケンサ５８をブロック図に示したものである。選択マルチプレクサ（ＭＵＸ）回路構成８０は、制御ＰＬＡ６０からの命令終了信号（Ｅｎｄ  Ｏｆ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｉｇｎａｌ）と制御ＲＯＭ７０からの命令終了信号を受信する。選択マルチプレクサ（ＭＵＸ）回路構成８２は、制御ＰＬＡ６０からの先取り信号（Ｌｏｏｋａｈｅａｄ  Ｓｉｇｎａｌ）と制御ＲＯＭ７０からの先取り信号を受信する。状態論理回路構成８４は、次状態信号（Ｎｅｘｔ  Ｓｔａｔｅ  Ｓｉｇｎａｌｓ）を制御ＰＬＡ６０から受信する。
【００３３】
ＭＵＸ８０およびＭＵＸ８２は、それぞれ制御ＰＬＡ６０から制御転送信号（Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｆｅｒ  Ｓｉｇｎａｌ）を受信する。ＭＵＸ８０の出力は、命令レジスタ回路構成８６の制御入力に結合され、状態論理８４に結合されている。ＭＵＸ８２の出力は、オプコード（ｏｐｃｏｄｅ）先取りレジスタ回路構成８８の制御入力に結合されている。オプコード先取りレジスタ８８は、バス３２に結合されて、命令を受け取る。命令レジスタ８６は、オプコード先取りレジスタ８８に結合されて、命令を受け取る。
【００３４】
デコーダ回路構成８９は、命令レジスタ８６に結合されて、命令を受け取る。デコーダ８９は、状態論理８４に結合されて、状態情報を受け取る。デコーダ８９は、制御信号を発生し、この信号は制御ＰＬＡ６０に行く。また、第１状態シーケンサ５８は、タイミング信号（図示せず）を必要とする。
【００３５】
図５は、本発明のある実施例による図３の第１状態シーケンサ１５８をブロック図に示したものである。選択マルチプレクサ（ＭＵＸ）回路構成９０は、制御ＰＬＡ１６０からの命令終了信号と制御ＲＯＭ１７０からの命令終了信号を受信する。選択マルチプレクサ（ＭＵＸ）回路構成９２は、制御ＰＬＡ１６０からの先取り信号と制御ＲＯＭ１７０からの先取り信号とを受信する。状態論理回路構成９４は、次状態信号を制御ＰＬＡ１６０から受信する。
【００３６】
ＭＵＸ９０およびＭＵＸ９２は、それぞれ制御ＰＬＡ１６０から制御転送信号を受信する。ＭＵＸ９０の出力は、命令レジスタ回路構成９６の制御入力に結合され、状態論理９４に結合されている。ＭＵＸ９２の出力は、オプコード先取りレジスタ回路構成９８の制御入力に結合されている。オプコード先取りレジスタ９８は、バス３２に結合されて、命令を受け取る。命令レジスタ９６は、オプコード先取りレジスタ９８に結合されて、命令を受け取る。
【００３７】
デコーダ回路構成９９は、命令レジスタ９６に結合されて、命令を受け取る。デコーダ９９は、状態論理９４に結合されて、状態情報を受け取る。デコーダ９９は、制御信号を発生し、この信号は制御ＰＬＡ１６０に行く。また、第１状態シーケンサ１５８は、タイミング信号（図示せず）を必要とする。
【００３８】
図６は、本発明のある実施例による図２の第２状態シーケンサ６８をブロック図に示したものである。制御ユニット選択論理回路構成１０１は、制御ＰＬＡ６０からの制御転送信号制御と、制御ＲＯＭ７０からの命令終了信号とを受信する。制御ユニット選択論理１０１は、ランダム制御論理６２に動作不能（Ｄｉｓａｂｌｅ信号を送り、ランダム制御論理７２に動作可能（Ｅｎａｂｌｅ）信号を送り、制御ＲＯＭ７０に動作可能信号を送る。オプションで、制御ユニット選択論理１０１は、制御ＰＬＡ６０に動作不能信号を送ることもできる。
【００３９】
状態論理回路構成１０４には、カウンタ回路構成１０７が含まれる。状態論理１０４は、制御ＲＯＭ７０から次状態信号を受信する。命令レジスタ回路構成１０６は、制御ＲＯＭ７０から先取り信号を受信する。命令レジスタ１０６は、バス３２に結合されて、命令を受け取る。カウンタ１０７はバス３２に結合されており、カウンタ１０７にはバス３２を介して書き込むことができる。デコーダ回路構成１０９は、命令レジスタ１０６に結合されて命令を受け取る。デコーダ１０９は、状態論理１０４に結合されて、状態情報を受け取る。デコーダ１０９は、制御信号を発生して、この信号は制御ＲＯＭ７０に行く。また、第２状態シーケンサ６８は、タイミング信号（図示せず）を必要とする。制御ユニット選択論理１０１は、命令レジスタ１０６に結合されている。
【００４０】
図７は、本発明のある実施例による図３の第２状態シーケンサ１６８をブロック図に示したものである。制御ユニット選択論理回路構成１１１は、制御ＰＬＡ１６０からの制御転送信号制御と、制御ＲＯＭ１７０からの命令終了信号とを受信する。制御ユニット選択論理１１１は、ランダム制御論理１６２に動作不能信号を送り、ランダム制御論理１７２に動作可能信号を送り、制御ＲＯＭ１７０に動作可能信号を送る。オプションで、制御ユニット選択論理１１１は、制御ＰＬＡ１６０に動作不能信号を送ることもできる。
【００４１】
状態論理回路構成１１４には、カウンタ回路構成１１７が含まれる。状態論理１１４は、制御ＲＯＭ１７０から次状態信号を受信する。命令レジスタ回路構成１１６は、制御ＲＯＭ１７０から先取り信号を受信する。命令レジスタ１１６は、バス３２に結合されて、命令を受け取る。カウンタ１１７はバス３２に結合されており、カウンタ１１７にはバス３２を介して書き込むことができる。デコーダ回路構成１１９は、命令レジスタ１１６に結合されて命令を受け取る。デコーダ１１９は、状態論理１１４に結合されて、状態情報を受け取る。デコーダ１１９は、制御信号を発生して、この信号は制御ＲＯＭ１７０に行く。また、第２状態シーケンサ１６８は、タイミング信号（図示せず）を必要とする。制御ユニット選択論理１１１は、命令レジスタ１１６に結合されている。
【００４２】
図８は、図２の実行ユニット５６の一部のある実施例を示す。同様に、図８は、図３の実行ユニット１５６の一部のある実施例を示す。
【００４３】
プログラム・カウンタ（高）／インクリメンタ・レジスタ（ｉｎｃｒｅｍｅｎｔｅｒ  ｒｅｇｉｓｔｅｒ）回路２００は、バス２０２から情報を受け取り、バス２０４に情報を与える。プログラム・カウンタ（低）レジスタ回路２０６は、バス２０２から情報を受け取り、バス２０４に情報を与える。スタック・ポインタ・レジスタ（ｓｔａｃｋｐｏｉｎｔｅｒ  ｒｅｇｉｓｔｅｒ）回路２０８は、バス２０２から情報を受け取り、バス２０４に情報を与える。累算器（ａｃｃｕｍｕｌａｔｏｒ）レジスタ回路２１０は、バス２０２から情報を受け取り、バス２０４に情報を与える。インデックス・レジスタ２１２はバス２０２から情報を受け取り、バス２０４に情報を与える。
【００４４】
一時アドレス・レジスタ（高）回路２１４は、バス２０２から情報を受け取り、バス２１６に情報を与える。一時アドレス・レジスタ（低）回路２１８は、バス２０２から情報を受け取り、バス２１６に情報を与える。データ・バス・インターフェース回路構成２２０は、バス２０２から情報を受け取り、バス２１６に情報を与える。定数発生論理回路２２２は、バス２０４に情報を与える。
【００４５】
演算論理ユニット（ＡＬＵ）２２４は、バス２０４とバス２１６とからデータを受け取る。ＡＬＵ２２４は、フラッグ回路構成２２６に双方向的に結合されている。フラッグ回路構成２２６は、条件コード・レジスタ２２８に双方向的に結合されている。条件コード・レジスタ２２８は、バス２０２から情報を受け取り、バス２１６に情報を与える。ＡＬＵ２２４の出力は、シフタ（ｓｈｉｆｔｅｒ）回路構成２３０に結合されている。シフタ２３０は、バス２０２に情報を与える。
【００４６】
プログラム・カウンタ（高）／インクリメンタ・レジスタ２００と一時アドレス・レジスタ（高）２１４は、それぞれ高バス２３２に情報を与える。アドレス・バス（高）バッファ回路構成２３４は、高バス２３２から情報を受け取り、プログラム・カウンタ（高）／インクリメンタ・レジスタ２００に情報を与える。アドレス・バス（高）バッファ２３４は、アドレス・バス（高）２３６に結合されている。アドレス・バス（高）２３６は、バス３２に結合されている。
【００４７】
プログラム・カウンタ（低）レジスタ２０６と、一時アドレス・レジスタ（低）２１８と、スタック・ポインタ・レジスタ２０８とは、それぞれ低バス２３８に情報を与える。アドレス・バス（低）バッファ回路構成２４０は、低バス２３８から情報を受け取る。アドレス・バス（低）バッファ２４０は、アドレス・バス（低）２４２に結合されている。アドレス・バス（低）２４２は、バス３２に結合されている。
【００４８】
低バス２３８は、データ・バス２４４から情報を受け取る。データ・バス・インターフェース２２０は、データ・バス２４４から情報を受け取り、それに情報を与える。データ・バス２４４は、バス３２に結合されている。
【００４９】
［好適な実施例の動作］
本発明により、ＣＰＵに拡張性を持たせることができ、回路構成を追加することが容易になったり、既存の回路構成をほとんど変更せずに新しい命令またはアルゴリズムを組み込むことができる。
【００５０】
図１では、データ処理システム１０がＭＣＵファミリ内の１つの可能なＭＣＵを示す。同じファミリ内のＭＣＵは、異なるオンボード周辺機器を有するのが普通なので、データ処理システム１０の他の実施例ではＲＯＭ２０を持たないもの、外部バス・インターフェース２６を持たないもの、ＤＭＡ３０を持たないものもある。実際には、データ処理システム１０の他の実施例では、図１に示された周辺機器よりも少ない場合も、多い場合も、また異なるものを持つ場合もある。過去においては、特定のファミリ内のＭＣＵは、ほとんどいつも、全く同じＣＰＵを用いていた。本発明により、特定のファミリ内のＭＣＵは、同一のＣＰＵコア５０の拡張部であることによりすべて関連性をもつ異なる拡張可能ＣＰＵ１２を用いることができる。図２は、拡張可能ＣＰＵ１２の１つの可能な実施例を示す。図３は、拡張可能ＣＰＵ１２の第２の可能な実施例、すなわち拡張可能ＣＰＵ１２’を示す。
【００５１】
図２では、図２に示される拡張可能ＣＰＵ１２に基づくＭＣＵのファミリがすべて同じＣＰＵコア５０を有する。ＣＰＵコア５０のある実施例に基づくこのようなファミリのＭＣＵは、ＭＣ６８ＨＣ０８ファミリと呼ばれる。ＣＰＵコア５０は、従来技術のＣＰＵアーキテクチャ、すなわちＭＣ６８ＨＣ０５ＣＰＵアーキテクチャを改良したものである。本発明の他の実施例では、異なるＣＰＵアーキテクチャを用いることもできる。改良されているために、ＣＰＵ５０は従来技術のものとは異なり、拡張可能になっている。
【００５２】
ＣＰＵ制御拡張部５２は、ＣＰＵコア５０に追加して新しい命令またはアルゴリズムを組み込むことのできる追加の回路構成のある実施例を示す。ＣＰＵ制御拡張部５２は、従来技術のＭＣ６８ＨＣ０５ＣＰＵには存在しなかった。従来技術のＭＣ６８ＨＣ０５ＣＰＵを拡張可能にするために行われた特定の改良を以下に説明する。
【００５３】
実行ユニット５６から始めると、１つの例外を除き、実行ユニット５６は個々の論理ゲート・レベルにおいては従来技術のものと同じである。その１つの例外とは、条件コード・レジスタ２２８（図８参照）である。従来技術のＭＣ６８ＨＣ０５ＣＰＵでは、条件コード・レジスタは、実行ユニットの最新の状態に関するステータス情報を含んでいるので、制御ユニットのランダム制御論理部分に物理的に位置していた。制御ユニットは、次の状態の間に実行ユニットを制御するためにどのタイミング制御信号をアサートするかを決定するために、このステータス情報を必要としていた。たとえば、制御ユニットは、ある分岐命令に関して実行ユニットをどのように制御するかを決定するために条件コード・レジスタのゼロ・ビットの論理状態を知る必要があった。
【００５４】
しかし、ＣＰＵ１２を拡張可能なものとするためには、制御ユニット６４は実行ユニット５６のすべてのステータス情報に対するアクセス権を持たなければならない。条件コード・レジスタ２２８を実行ユニット５６内に移動することによって、実行ユニット５６にはプログラマ・モデルのすべてのレジスタ、すなわち実行ユニット５６に関するすべてのステータス・レジスタとステータス情報が含まれる。これにより第２制御ユニット６４は、実行ユニット５６から直接的に実行ユニット５６のすべてのステータス情報に直接アクセス権を有する。拡張可能ＣＰＵ１２においては、制御ユニット５４も制御ユニット６４も、実行ユニット５６から同一の組のステータス信号に対するアクセス権を有する；また、ステータス信号には、実行ユニット５６の条件コード・レジスタ２２８からのステータス情報が含まれる。
【００５５】
レイアウト・レベルでは、実行ユニット５６回路構成は、半導体集積回路上に物理的に配列して、タイミング制御信号の完全な組と、ステータス信号の完全な組とが制御ユニット５４と制御ユニット６４の両方から得られるようにしなければならない。すなわち、すべてのタイミング制御信号とすべてのステータス信号とを、制御ユニット５４および制御ユニット６４の両方に結合できるように物理的に配線しなければならない。
【００５６】
本発明の図示された実施例においては、ＣＰＵ制御拡張部５２が組み込まれているか否かに関わらず、タイミング制御信号を運ぶ導体はそれぞれ、一端で制御ユニット５４に結合され、それぞれが実行ユニット５６を通じて配線され、それぞれが他端で実行ユニット５６の外部に配線されている。従来の技術においては、ただ１つの制御ユニット、すなわち制御ユニット５４だけを、タイミング制御信号とステータス信号に結合すればよかった；また、そのためにタイミング制御信号を運ぶ導体は、一端で実行ユニット５６に外部配線されていればよかった。
【００５７】
制御ユニット５４を形成するために従来技術の制御ユニットに対して行われた特定の改良を以下に説明する。前述のように、条件コード・レジスタ２２８がランダム制御論理６２から取り除かれた。さらに動作不能回路構成６３がランダム制御論理６２に追加されて、タイミング制御信号を動作不能にした。タイミング制御信号が動作不能になると、実行ユニット５６には転送されず、そのため実行ユニット５６には何の効果も持たない。
【００５８】
動作不能回路構成６３は、第２状態シーケンサ６８により発生される信号によって制御される。本発明のある実施例においては、動作不能回路構成６３には、各タイミング制御信号毎に１つの伝送ゲート（図示せず）が含まれる。ＣＰＵコア５０がＣＰＵ制御拡張部５２なしに用いられると、伝送ゲート（図示せず）が常に動作可能になるので、タイミング制御信号は常に実行ユニット５６に転送される。ＣＰＵコア５０がＣＰＵ制御拡張部５２と共に用いられると、伝送ゲート（図示せず）は、第２状態シーケンサ６８からの動作不能信号がアサートされているかネゲートされているかによって、動作可能になるか動作不能になるかのいずれかである（図６参照）。
【００５９】
本発明のある実施例においては、動作不能回路構成６３には、第２状態シーケンサ６８からの動作不能信号の被アサート状態をラッチするラッチ（図示せず）が含まれることに留意されたい。そのため、タイミング信号（図示せず）がアサートされると、ラッチは伝送ゲートを動作可能にして、それによりいくつかのタイミング制御信号は、実行ユニット５６内のスタック・ポインタ・レジスタ２０８およびプログラム・カウンタ（高）／インクリメンタ２００（図８参照）に転送される。このため、ラッチ（図示せず）が用いられて、いくつかのタイミング制御信号の間、実行ユニット５６に対する動作不能信号の効果を遅延させる。このような差異を除けば、ランダム制御論理６２は、従来技術のランダム制御論理と同一のものでよい。
【００６０】
制御ＰＬＡ６０は、従来技術のものと同じであるが、以下の追加点を持つ：すなわち（１）第１状態シーケンサ５８からの新しい入力状態（特殊制御送信命令に関して）；（２）いくつかの出力制御ＰＬＡ信号；および（３）制御ＰＬＡ６０内のいくつかの論理ＡＮＤ項および／または論理ＯＲ項。追加の信号および回路構成は、２つの制御ユニット５４，６４間の実行ユニット５６の制御の転送に関わる。２つの制御ユニット５４，６４間の実行ユニット５６の制御の転送については、以下に詳細に説明する。
【００６１】
第１状態シーケンサ５８を形成するために、従来技術の状態シーケンサに加えられた特定の改良を図４で説明する。従来の技術と同様に、第１状態シーケンサ５８は制御ＰＬＡ６０と共に、ＣＰＵコア５０の現在の状態と、バス３２を介して受け取った現在の命令の両方に基づき、ＣＰＵコア５０の次の状態を判定することによって状態装置として機能する。第１状態シーケンサ５８は、従来の技術と同じ状態移行（ｓｔａｔｅ  ｔｒａｎｓｉｔｉｏｎｓ）を処理することができる。さらに、第１状態シーケンサ５８は、２つの制御ユニット５４，６４間の実行ユニット５６の制御の移行に関わる状態移行も処理することができる。
【００６２】
さらに図４を参照すると、従来の技術ではＭＵＸ８０およびＭＵＸ８２はなかった。従来技術においては、ＭＵＸ８０の出力を用いて、命令レジスタ８６がいつロードされるかを知らせる代わりに、制御ＰＬＡ６０からの出力信号が用いられていた。同様に、ＭＵＸ８２の出力を用いて、オプコード先取りレジスタ８８がいつロードされるかを知らせる代わりに、制御ＰＬＡ６０からの出力信号が用いられていた。状態論理８４は、新しい命令、すなわち従来技術ではなかった特殊制御転送命令を処理することができる。この新しい命令は、２つの制御ユニット５４，６４間の実行ユニット５６の制御の転送に関わる。従来の技術とは異なり、デコーダ８９と制御ＰＬＡ６０も、これと同じ新しい特殊制御転送命令を処理することができる。
【００６３】
結論を述べると、従来技術のＭＣ６８ＨＣ０５ＣＰＵを拡張可能にするために行われた回路の改良は、既存の回路構成に対してわずかな量の追加の回路構成しか必要としない。しかし、このような回路変更から得られる利点は、きわめて重要である。このような回路変更の結果として、種々の顧客の要望に合わせて注文設計（カスタマイズ）された異なるＣＰＵ制御拡張部回路５２を追加することにより同一のＣＰＵコア５０の機能性を拡張することができる。
【００６４】
拡張可能ＣＰＵ１２の動作を説明する（図２参照）。第１に、拡張可能ＣＰＵ１２には、ＣＰＵ制御拡張部５２のないＣＰＵコア５０だけが含まれる。たとえば、ＣＰＵコア５０だけを、図１に図示されるデータ処理システム１０の拡張可能ＣＰＵ１２として用いることができる。しかし、ＣＰＵコア５０をＣＰＵ制御拡張部５２の種々の注文設計された実施例と共に用いることもできる。ＣＰＵ制御拡張部５２を内蔵することは、拡張可能ＣＰＵ１２を拡張するための１つの方法である。
【００６５】
図２に示されるブロック図は、ＣＰＵ制御拡張部５２の１つの可能な実施例に過ぎない。ＣＰＵ制御拡張部５２が実行ユニット５６を適切に制御するためのタイミング制御信号を発生して、実行ユニット５６の制御をタイミング制御信号の２つの信号源の間でやり取りできるようにする回路構成をＣＰＵ制御拡張部５２が持っている限り、ＣＰＵ制御拡張部５２をどのように設計しても構わない。
【００６６】
ＣＰＵコア５０の図示された実施例は、回路構成の２つの基本部分で構成される。制御ユニット５４と第１状態シーケンサ５８を含む第１部分は、バス３２を介して命令を受け取り、実行ユニット５６を制御するために用いられるタイミング制御信号を発生する。制御回路構成のこの第１部分は、様々な方法で実現することができる。第２部分である実行ユニット５６は、タイミング制御信号を受信し、これらのタイミング制御信号を用いて、実際に命令を実行する。実行ユニット５６も同様に種々の方法で実現することができる。
【００６７】
図２に示されたＣＰＵ制御拡張部５２の実施例は、ＣＰＵ制御拡張部５２を構築するための簡単な方法である。いくつかの回路変更を加えることにより、ＣＰＵ制御拡張部５２を制御ユニット５４と第１状態シーケンサ５８の鏡像として実現することができる。ランダム制御論理７２の回路構成は、ランダム制御論理６２の回路構成の完全な複製として実現することができる。ランダム制御論理７２に対する入力制御信号、すなわち制御ＲＯＭ信号は、制御ＲＯＭ７０から来て、ＲＯＭ７０に記憶されている注文設計のＲＯＭパターンにより判定される。顧客毎に、実行ユニット５６に新しい命令を実行させる別のＲＯＭパターンを用いることができる。
【００６８】
図２および図４では、第１状態シーケンサ５８が制御ＰＬＡ６０と共に、ＣＰＵコア５０のための状態装置として主に機能する。この能力で、第１状態シーケンサ５８は、バス３２から命令を受け取る。第１状態シーケンサ５８は、次に（デコーダ８９を用いて）実行される現在の命令（命令レジスタ８６からのもの）と、ＣＰＵコア５０の現在の内部状態（状態論理８４からのもの）の両方を解読する。第１状態シーケンサ５８は次に、デコーダ８９から信号を出力し、この信号は制御ＰＬＡ６０に入力される。
【００６９】
ＣＰＵ制御ユニット６４内のＲＯＭ７０は、制御ユニット５４内の制御ＰＬＡ６０と同様の機能を果たす。制御ＰＬＡ６０は、ランダム制御論理６２のための入力信号を発生して、第１状態シーケンサ５８と第２状態シーケンサ６８のための制御転送情報を発生する。ＲＯＭ７０は、ランダム制御論理７２のための入力信号を発生し、第１状態シーケンサ５８と第２状態シーケンサ６８のための制御転送情報を発生する。
【００７０】
制御ＰＬＡ６０とＲＯＭ７０とは、任意の種類のメモリまたは任意の種類のプログラミング可能な論理アレイを含む、任意の種類のプログラミング可能なアレイとして実現することができる点に留意されたい。制御ＰＬＡ６０とＲＯＭ７０とは、ランダム論理として実現することもでき、それぞれの制御ユニット５４，６４内の残りのランダム制御論理回路構成と組み合わせることもできる。
【００７１】
プログラミング可能な論理アレイ（ＰＬＡ）は、読み込み専用メモリ（ＲＯＭ）よりも小さな半導体面積しか必要としないのが普通である；しかし、ＰＬＡを注文設計するよりもＲＯＭを注文設計するほうが簡単で迅速である。異なるバージョンの拡張可能ＣＰＵ１２に関して同じ制御ＰＬＡ６０が用いられるので、制御ＰＬＡ６０をＰＬＡとして組み込んで半導体面積を節約するほうが有利である。しかし、制御ＲＯＭ７０は異なるバージョンの拡張可能ＣＰＵ１２に関しては異なるプログラミングを必要とするので、制御ＲＯＭ７０をＲＯＭとして組み込むほうが簡単で迅速である。
【００７２】
タイミング制御信号は実行ユニット５６に対して、必要な制御情報のすべてを与える。バス３２は、実行ユニット５６内にあるレジスタを読み書きするためのアドレスおよびデータ経路として用いられる。拡張可能ＣＰＵ１２は、２つの別々の制御ユニット、すなわち制御ユニット５４と制御ユニット６４とを有する。２つの制御ユニット５４，６４のそれぞれは、実行ユニット５６を制御するために用いられる同一のタイミング制御信号を完全に発生することができる。同様に、２つの制御ユニット５４，６４のそれぞれは、実行ユニット５６内のすべてのリソースに対して完全なアクセス権を有する。
【００７３】
その結果、制御ユニット５４だけでも、実行ユニット５６のすべてを全面的に制御することができ、同様に制御ユニット６４だけでも実行ユニット５６のすべてを全面的に制御することができる。実際には、拡張可能ＣＰＵ１２のある実施例では、制御ユニット５４と制御ユニット６４はそれぞれ、同じタイミング制御信号導体の対向端に結合されており、この導体は実行ユニット５６を通じて、制御ユニット５４，６４のそれぞれに配線されている。
【００７４】
本発明の図示された実施例においては、特殊制御転送命令が用いられて、実行ユニット５６の制御を制御ユニット５４から制御ユニット６４に転送している。図示された実施例では、制御ユニット６４が実行ユニット５６の制御を受け取ると、ＣＰＵ制御拡張部５２が１つ命令を実行し、その後で実行ユニット５６の制御を自動的に制御ユニット５４に返す。この方法では、拡張可能ＣＰＵ１２のユーザがＣＰＵ制御拡張部５２を用いてカスタム命令を実行しようとするたびに、ユーザは自分のソフトウェア・プログラム内のカスタム命令の前に、特殊制御転送命令を入れなければならない。
【００７５】
この実施例では、ＣＰＵ制御拡張部５２は、制御が制御ユニット５４に自動的に返される前に１つのカスタム命令を実行することしかできないが、この１つの命令には任意の数の実行ユニット・サイクルを入れることができる。これによって、顧客は、通常の命令の完全なサブルーチンを単独のカスタム命令として定義することができる。また、顧客は制御ＲＯＭ７０に適切な対応の制御情報を記憶させることによって、可変数の実行ユニット・サイクルを有する複数のカスタム命令を定義することもできる。
【００７６】
実行ユニット・サイクルは、実行ユニット５６内で次の３つの段階を実行するために要する時間の量によって定義されることに留意されたい（図８参照）：すなわち（１）１つ以上の値をＡＬＵ２２４に転送する；（２）ＡＬＵ２２４を用いて算術演算または論理演算を実行する；および（３）結果値をＡＬＵ２２４からレジスタに転送する。本発明のある実施例では、２つの実行ユニット・サイクルをバス３２のバス・サイクル毎に実行することができる。
【００７７】
各カスタム命令内のビット・フィールドを用いて、どのカスタム命令を実行するかを指定することができる。本発明のある実施例では、特殊制御転送命令には２バイトが含まれる：すなわち第１バイトは、特殊制御転送命令のためだけに用いられるオプコードであり（それぞれのカスタム命令に関して同じ）、第２バイトは制御ＲＯＭ７０内の開始アドレスである（各カスタム命令により異なる）。本発明のある実施例では、特殊制御転送命令は、実行ユニット５６に対して「動作なし（ＮＯＰ：ｎｏ  ｏｐｅｒａｔｉｏｎ）」命令と同じ効果を有する。同様に、制御ユニット６４により制御される各カスタム命令の最後の２個の実行ユニット・サイクルは、実行ユニット５６に対してＮＯＰ命令と同じ効果を持つ。ＮＯＰ命令と、特殊制御転送命令と、各カスタム命令の最後の部分はそれぞれ２個の実行ユニット・サイクルで構成される。第１実行ユニット・サイクルの間に、プログラム・カウンタ・レジスタ２００，２０６の繰り上がりが開始される。第２実行ユニット・サイクルの間に、プログラム・カウンタ・レジスタ２００，２０６の繰り上がりが終了する。プログラム・カウンタ・レジスタ２００，２０６を除くと、実行ユニット５６は、タイミング制御信号が駆動されていても特殊制御転送命令の実行中には影響を受けない。
【００７８】
特殊制御転送命令を用いて実行ユニット５６の制御を送るために用いることのできる数多くの実行例があるが、図２，図４および図６に示された実行例について説明する。第２状態シーケンサ６８の制御ユニット選択論理１０１（図６参照）は、適切な制御ユニット５４，６４を動作可能および動作不能にする責を負う。図示された実施例においては、特殊制御転送命令を用いて制御ユニット５４から制御ユニット６４に対する制御の転送を開始し、１つのカスタム命令が実行された後に、制御ＲＯＭ７０からの命令終了信号を用いて制御ユニット６４から制御ユニット５４に対する制御の返却を開始する。
【００７９】
図示された実施例においては、制御ユニット選択論理１０１は別々の制御信号を設けて、ランダム制御論理６２，ランダム制御論理７２，制御ＲＯＭ７０および制御ＰＬＡ６０を動作可能にするか、あるいは動作不能にする。制御ＰＬＡ６０を動作不能にする動作不能信号はオプションであり、図示された拡張可能ＣＰＵ１２には組み込まれていない。図示された実施例においては、２つの別々の信号が制御ユニット選択論理１０１により、制御ユニット５４，６４のそれぞれに関して発生される。ランダム制御論理６２は制御ＰＬＡ６０より前に動作不能にしなければならず、ランダム制御論理７２は制御ＲＯＭ７０より前に動作不能にしなければならず、２つの信号がそれぞれの制御ユニットのために用いられた。同様に、制御ＰＬＡ６０はランダム制御論理６２より前に動作可能にしなければならず、制御ＲＯＭ７０はランダム制御論理７２より前に動作可能にしなければならない。
【００８０】
制御ＰＬＡ６０は、制御転送信号を発生し、この信号は第１状態シーケンサ５８と第２状態シーケンサ６８の両方に与えられる。制御転送信号は、特殊制御転送命令が受け取られた後でアサートされる。制御転送信号は、第１状態シーケンサ５８と第２状態シーケンサ６８に対して、実行ユニット５６の制御が制御ユニット５４から制御ユニット６４に渡されたことを知らせる。
【００８１】
特殊制御転送命令がまだ受け取られていない場合は、制御転送信号はネゲートされる。制御転送信号がネゲートされると、制御ユニット５４は動作可能になり、制御ユニット６４が動作不能になる。また、制御転送信号がネゲートされると、制御ユニット選択論理１０１のすべての出力はネゲートされる。ランダム制御論理６２に対する動作不能信号をネゲートすることにより、ランダム制御論理６２から実行ユニット５６に与えられるタイミング制御信号が動作可能になる。制御ＰＬＡ６０に対するオプションの動作不能信号をネゲートすることにより、制御ＰＬＡ６０は第１状態シーケンサ５８によりストローブ（ｓｔｒｏｂｅ）される。ランダム制御論理７２に対する動作可能信号をネゲートすることにより、タイミング制御信号が動作不能になり、この信号はランダム制御論理７２から実行ユニット５６に与えられなくなる。制御ＲＯＭ７０に対する動作可能信号をネゲートすることにより、制御ＲＯＭ７０は第２状態シーケンサ６８によりストローブされなくなる。
【００８２】
特殊制御転送命令がまだ受け取られない場合は、制御ＲＯＭ７０が動作不能になる。制御ＲＯＭ７０が動作不能になると、その出力の論理状態を変更することができない。しかし、動作不能になっても制御ＲＯＭ７０は、所定の初期パターンの論理状態かまたは制御ＲＯＭ７０が動作不能になる前に出力信号が持っていた最後のパターンの論理状態のいずれかによってその出力信号を駆動し続ける。本発明のある実施例においては、制御ＲＯＭ７０が動作不能になる前に出力信号が持っていた最後のパターンの論理状態は、所定の初期パターンの論理状態と常に同じである。
【００８３】
図２および図４に図示された第１状態シーケンサ５８の動作を以下に詳細に説明する。制御ＰＬＡ６０からの制御転送信号は、制御ユニット５４が第１状態シーケンサ５８を制御しているのか、制御ユニット６４が第１状態シーケンサ５８を制御しているのかを判定するために用いられる。制御転送信号は、ＭＵＸ８０が制御ＰＬＡ６０からの命令終了信号を出力するのか、ＭＵＸ８０が制御ＲＯＭ７０からの命令終了信号を出力するのかを判定するために用いられる。同様に、同じ制御転送信号を用いて、ＭＵＸ８２が制御ＰＬＡ６０からの先取り信号を出力するのか、ＭＵＸ８２が制御ＲＯＭ７０からの先取り信号を出力するのかを判定する。制御転送信号は、状態論理８４に入力される命令終了信号がＰＬＡ６０から来るのか、制御ＲＯＭ７０から来るのかも判定する点に留意されたい。
【００８４】
実際には、制御転送信号は、第１状態シーケンサ５８を通じて命令の流れを制御しているのが制御ユニット５４であるのか、制御ユニット６４であるのかを判定する。ＭＵＸ８２の出力をアサートすると、バス３２からの命令はオプコード先取りレジスタ８８にロードされる。ＭＵＸ８０の出力をアサートすると、オプコード先取りレジスタ８８からの命令が命令レジスタ８６にロードされる。
【００８５】
状態論理８４は、制御ＰＬＡ６０から次状態信号を受信する。デコーダ８９は、制御ＰＬＡ６０と共に、これらの次状態信号と命令レジスタ８６に記憶されている現在の命令から、次の状態がどのようになるかを判定する。ＣＰＵコア５０がオプションのＣＰＵ制御拡張部５２なしに用いられた場合は、制御転送信号はアサートされることはない。しかし、ＣＰＵコア５０がオプションのＣＰＵ制御拡張部５２と共に用いられると、制御ＰＬＡ６０が制御転送信号をアサートして、デコーダ８９の出力は制御転送信号により機能する。
【００８６】
第１状態シーケンサ５８はまた、制御ＰＬＡ６０の入力がいつ有効であるか、また制御ＰＬＡ６０の出力がいつ有効であるかに関するタイミング情報（図示せず）を制御ＰＬＡ６０に送る。制御ＰＬＡ６０の出力が有効であるときは、第１状態シーケンサ５８は、制御ＰＬＡ信号を動作可能にして、この信号はランダム制御論理６２に送信される。ランダム制御論理６２は、次にタイミング情報と、ステータス信号を介して実行ユニット５６から送り返されたステータス情報とにより制御ＰＬＡ信号を認可する。次にランダム制御論理６２は、タイミング制御信号を出力するが、これらは実行ユニット５６を全面的に制御するために必要とされる完全な１組の信号である。
【００８７】
第１状態シーケンサ５８は、ＣＰＵ制御拡張部５２がなくてもそれだけで機能するＣＰＵコア５０内に用いることもできるので、制御転送を扱う回路構成の大部分は第２状態シーケンサ６８および制御ユニット６４内に配置することが望ましい。制御転送を扱う制御信号の入力および出力経路は、ＣＰＵコア５０に入れて、実際の制御転送回路構成の大部分はＣＰＵ制御拡張部５２に配置するほうが効率的である。この方法の利点は、スタンド・アロンＣＰＵコア５０内で必要とされる機能のために半導体面積がＣＰＵコア５０内で拡大されないことである。これによりＣＰＵコア５０そのもののコストは、最小限に抑えられる。
【００８８】
図２および図６に示される第２状態シーケンサ６９の動作を以下に詳細に説明する。第２状態シーケンサ６８は、主にＣＰＵ制御拡張部５２の状態装置として機能する。この能力で、第２状態シーケンサ６８はバス３２から命令を受け取る。第２状態シーケンサ６８は、次に（デコーダ１０９を用いて）、実行すべき現在の命令（命令レジスタ１０６からのもの）と、ＣＰＵ制御拡張部５２の現在の内部状態（状態論理１０４からのもの）の両方を解読する。第２状態シーケンサ６８は次に、デコーダ１０９から信号を出力し、この信号は制御ＲＯＭ７０に入力される。
【００８９】
制御ＲＯＭ７０からの先取り信号をアサートすることにより、タイミング信号（図示せず）と共に、バス３２からの命令が命令レジスタ１０６にロードされる。状態論理１０４は、制御ＲＯＭ７０から次状態信号を受信する。デコーダ１０９は、制御ＲＯＭ７０と共に、これらの次状態信号と命令レジスタ１０６に記憶されている現在の命令から、次の状態がどのようになるかを判定する。制御ユニット６４が動作不能になっても、デコーダ１０９は、制御ＲＯＭ７０に信号を出力し続ける。制御ＲＯＭ７０が動作不能である限り、制御ＲＯＭ７０は、デコーダ１０９から受け取った入力により機能することはない。
【００９０】
状態論理１０４にはカウンタ１０７が含まれる。カウンタ１０７は、バス３２から書き込むことができ、読むこともできる場合がある。カウンタ１０７は、第２状態シーケンサ６８および制御ユニット６４により実行される命令内にループを作成することができる。一例として、顧客が、特定のレジスタ値を「Ｎ」回シフトするなどの同一の実行ユニット・サイクルを「Ｎ」回実行するという新しい命令を追加したいとする。値「Ｎ」をカウンタ１０７にロードして、特定のレジスタがシフトされる各実行ユニット・サイクル毎にカウンタ１０７を減らすことにより、状態論理１０４は、同じ状態がいつ「Ｎ」回循環されたかを追跡することができる。次に状態論理１０４は、デコーダ１０９に信号を送り、ループが終了したことを知らせる。このように、ＣＰＵ制御拡張部５２により実行される単独の命令で、通常は複数の命令を必要とする段階を１つの命令内に実際に組み込むことができる。
【００９１】
第２状態シーケンサ６８はまた、制御ＲＯＭ７０に対する入力がいつ有効であるのか、制御ＲＯＭ７０からの出力がいつ有効であるのかに関するタイミング情報（図示せず）を制御ＲＯＭ７０に送る。制御ＲＯＭ７０の出力が有効であるときは、第２状態シーケンサ６８は制御ＲＯＭ信号を動作可能にするので、これらの信号はランダム制御論理７２に送信される。次にランダム制御論理７２は、タイミング情報と、ステータス信号を介して実行ユニット５６から送り返されたステータス情報によって制御ＲＯＭ信号を認可する。次にランダム制御論理７２は、タイミング制御信号を出力するが、これらは実行ユニット５６を全面的に制御するために必要とされる完全な１組の信号である。
【００９２】
第１状態シーケンサ５８と第２状態シーケンサ６８の動作が説明されたので、次に制御ユニット５４，６４間の制御の転送を詳細に説明する。制御ユニット５４から制御ユニット６４に制御を転送するためには、拡張可能ＣＰＵ１２は特殊制御転送命令を受け取らねばならない。
【００９３】
バス３２から命令レジスタ８６により特殊制御転送命令が受け取られると、制御ユニット５４から制御ユニット６４に対する制御の転送が始まる。デコーダ８９は、特殊制御転送命令を解読して、特殊制御転送命令に特有の対応する信号を出力する。依然として動作可能状態にある制御ＰＬＡ６０は、制御転送信号をアサートし、制御ＰＬＡ信号をランダム制御論理６２に送ることにより特殊制御転送命令に応答する。実行されている命令が特殊制御転送命令であるために、ランダム制御論理６２はタイミング制御信号を第１の所定のパターンの論理状態で駆動し、次に第２の所定のパターンの論理状態で駆動する。
【００９４】
ある実施例においては、この第１の所定のパターンの論理状態は、ＮＯＰ命令の第１実行ユニット・サイクル中にタイミング制御信号により駆動されるものと同じである。第１の所定のパターンの論理状態でタイミング制御信号を駆動することにより、実行ユニット５６内のプログラム・カウンタ・レジスタ２００，２０６が繰り上がる。第２の所定のパターンの論理状態でタイミング制御信号を駆動しても、実行ユニット５６には何の効果もない。タイミング制御信号が第２の所定のパターンの論理状態で駆動されている第２実行ユニット・サイクル中に、制御は実際に制御ユニット５４から制御ユニット６４に転送される。
【００９５】
そのために本発明のある実施例においては、制御ユニット５４，６４の両方が第２の所定のパターンの論理状態によりそれぞれのタイミング制御信号を同時に駆動して、制御は実際に制御ユニット５４から制御ユニット６４に転送される。制御が転送されると、制御ユニット６４は次に１つのカスタム命令を実行する。各カスタム命令の最後の２つの実行ユニット・サイクルは、特殊制御転送命令の２つの実行ユニット・サイクルと同じであり、これらはいずれもＮＯＰ命令の２つの実行ユニット・サイクルと同じである。
【００９６】
制御ＰＬＡ６０により制御転送信号をアサートすることは、制御ユニット５４から制御ユニット６４に対して制御の転送を開始するために用いられる。制御転送信号をアサートした結果、制御ユニット５４は動作不能になり、制御ユニット６４が動作可能になる。制御転送信号がアサートされると、制御ユニット選択論理１０１の出力のすべてがアサートされる。制御ユニット選択論理１０１から命令レジスタ１０６に対する信号をアサートすることにより、命令レジスタ１０６は特殊制御転送命令の第２バイトをバス３２からロードする。
【００９７】
ランダム制御論理６２に対する動作不能信号をアサートすることにより、タイミング制御信号が動作不能になり、この信号はランダム制御論理６２から実行ユニット５６に送られない。制御ＰＬＡ６０に対するオプションの動作不能信号をアサートすることにより、制御ＰＬＡ６０は第１状態シーケンサ５８によりストローブされなくなる。ランダム制御論理７２に対する動作可能信号をアサートすることにより、ランダム制御論理７２から実行ユニット５６に与えられるタイミング制御信号が動作可能になる。制御ＲＯＭ７０に対する動作可能信号をアサートすることにより、制御ＲＯＭ７０は第２状態シーケンサ６８によりストローブされる。
【００９８】
制御ユニット選択論理１０１からの出力信号がアサートされる順序が重要であることに留意すること。まず制御ＲＯＭ７０を動作可能にしなければならない。オプションで制御ＰＬＡ６０を動作不能にしてもよい。次にランダム制御論理７２を動作可能にする。最後にランダム制御論理６２を動作不能にする。
【００９９】
第２状態シーケンサ６８は、バス３２から特殊制御転送命令の第２バイトを受け取る。本発明のある実施例においては、特殊制御転送命令の第２バイトはカスタム命令の制御ＲＯＭ７０の開始アドレスである。次にデコーダ１０９は、カスタム命令の開始アドレスを制御ＲＯＭ７０に転送する。制御ＲＯＭ７０は、この開始アドレスを用いて、特定のＲＯＭ位置にアクセスする。次に、この特定のＲＯＭ位置に記憶されている情報が制御ＲＯＭ信号としてランダム制御論理７２に出力される。
【０１００】
これらの制御ＲＯＭ信号は、ランダム制御論理７２に対して、ランダム制御論理６２により駆動されているのと同じ第２の所定のパターンの論理状態でタイミング制御信号を駆動しなければならないことを知らせる。そのため特殊制御転送命令の第２実行ユニット・サイクルの間の短い時間に、ランダム制御論理６２とランダム制御論理７２の両方が同じ第２の所定のパターンの論理状態でそれぞれのタイミング制御信号を駆動する。この短い重複期間の目的は、実行ユニット５６を制御するタイミング制御信号が変動（ｆｌｏａｔ）しないようにする、あるいは未知のまたは意図しない論理状態にならないようにするためである。これによりタイミング制御信号は常に、制御ユニット５４，６４のいずれか一方または両方により駆動される。
【０１０１】
ランダム制御論理７２が第２の所定のパターンの論理状態でタイミング制御信号を駆動すると、第２状態シーケンサ６８はランダム制御論理６２に対する動作不能信号をアサートし、それによりランダム制御論理６２からのタイミング制御信号の出力が動作不能になる。この時点で、第２状態シーケンサ６８と制御ユニット６４とは、完全に実行ユニット５６を制御している。第１状態シーケンサ５８と制御ユニット５４とは、このとき実行ユニット５６の制御を持たない。しかし、本発明のある実施例においては、第１状態シーケンサ５８と制御ユニット５４とは同じ状態にあり続ける；すなわちランダム制御論理６２が動作不能になっていない場合は、第２の所定のパターンの論理状態でタイミング制御信号を駆動し続ける。
【０１０２】
制御転送信号を制御ＰＬＡ６０によりアサートすることにより、第１状態シーケンサ５８を機能させることもできる。制御転送信号のアサートは、ＭＵＸ８０の出力とＭＵＸ８２の出力を変更するために用いられる。制御転送信号をアサートした結果、ＭＵＸ８０は制御ＰＬＡ６０からの命令終了信号の出力から、制御ＲＯＭ７０からの命令終了信号の出力へと切り替わる。同様に、制御転送信号をアサートした結果として、ＭＵＸ８２は制御ＰＬＡ６０からの先取り信号の出力から、制御ＲＯＭ７０からの先取り信号の出力へと切り替わる。
【０１０３】
制御転送信号のアサートの結果として、状態論理８４は制御ＰＬＡ６０からではなく制御ＲＯＭ７０から命令終了信号を受信する。制御ＲＯＭ７０からの命令終了信号を用いることにより、状態論理８４は、カスタム命令がいつ終るかを判定することができ、それによって制御ユニット５４から制御ユニット６４に制御がいつ戻るかを判定することができる。
【０１０４】
第２状態シーケンサ６８と制御ユニット６４とは、次の命令であるカスタム命令をバス３２から受け取る。本発明のある実施例においては、カスタム命令は、実際には、カスタム命令の開始アドレスである制御ＲＯＭ７０内の位置を指し示す特殊制御転送命令の第２バイトである。
【０１０５】
第２状態シーケンサ６８と制御ユニット６４は、このカスタム命令の実行中はずっと実行ユニット５６を制御している。カスタム命令の終了時に、ランダム制御論理７２は同じ第２の所定のパターンの論理状態でタイミング制御信号をもう一度駆動しなければならない。第２状態シーケンサ６８は次に、動作不能信号をネゲートすることにより、ランダム制御論理６２からのタイミング制御信号の出力を再度動作可能にする。そのためもう一度、短い時間の間、ランダム制御論理６２とランダム制御論理７２の両方が同じ第２の所定のパターンの論理状態によりそれぞれのタイミング制御信号を駆動する。
【０１０６】
カスタム命令の終了時に、制御ＲＯＭ７０は、命令終了信号をアサートする。制御ＲＯＭ７０による命令終了信号のアサートは、制御ユニット６４から制御ユニット５４に対する制御の返送を開始するために用いられる。命令終了信号をアサートした結果として、制御ユニット６４が動作不能になり、制御ユニット５４が動作可能になる。
【０１０７】
命令終了信号がアサートされると、制御ユニット選択論理１０１の出力のすべてがネゲートされる。ランダム制御論理６２に対する動作不能信号をネゲートすることにより、ランダム制御論理６２から実行ユニット５６に与えられるタイミング制御信号を動作可能にする。制御ＰＬＡ６０に対するオプションの動作不能信号をネゲートすることにより、制御ＰＬＡ６０は第１状態シーケンサ５８によりストローブされる。ランダム制御論理７２に対する動作可能信号をネゲートすることにより、タイミング制御信号が動作不能になり、そのためこの信号はランダム制御論理７２から実行ユニット５６に与えられない。制御ＲＯＭ７０に対する動作可能信号をネゲートすることにより、制御ＲＯＭ７０は第２状態シーケンサ６８によってストローブされない。
【０１０８】
制御ユニット選択論理１０１からの出力信号がネゲートされる順序が重要であることに留意されたい。まず制御ＰＬＡ６０が動作不能になった場合は、再度動作可能にしなければならない。次に、ランダム制御論理６２を再度動作可能にする。次にランダム制御論理７２を動作不能にする。最後に制御ＲＯＭ７０を動作不能にする。
【０１０９】
特殊制御転送命令を用いて実行ユニット５６の制御を移す第２の実行例（図示せず）を以下に説明する。この第２の実行例では、制御転送信号は必要ない。代わりにデコーダ１０９が、特殊制御転送命令がいつ受け取られたのか、また実行ユニット５６の制御が制御ユニット５４から制御ユニット６４にいつ転送されるのかを判定する。デコーダ１０９は、次に制御ユニット選択論理１０１に対して、制御転送信号の代わりの信号を与え、この信号が制御転送を開始することを知らせる。デコーダ１０９からのこの信号は、制御ユニット選択論理１０１に対して、制御転送信号に関して説明された効果と同じ効果を有する。
【０１１０】
本発明の他の実施例では、２つ以上の制御ユニット間で実行ユニット５６の制御を転送するために他の方法を用いるものもあることに留意されたい。特殊制御転送命令を用いる方法は、制御を転送するための一方法に過ぎない。また、ただ１つのカスタム命令の実行が終ると実行ユニット５６の制御を制御ユニット５４に自動的に返す代わりに、任意の数のカスタム命令を実行してから制御を制御ユニット５４に返すことができるようにする方法を用いることもできる。
【０１１１】
本発明の図示された実施例においては、ＣＰＵコア５０がＣＰＵ制御拡張部５２なしで用いられている場合は、特殊制御転送命令は用いてはならない。すなわち、制御ユニット６４が組み込まれていない場合は、制御ユニット５４は実行ユニット５６の制御を保持しなければならない。このため、ＣＰＵコア５０がＣＰＵ制御拡張部５２なしに用いられると、特殊制御転送命令は不当なオプコードとして扱われる。ランダム論理６２内の不当なオプコード回路構成（図示せず）が不当なオプコードを検出すると、データ処理システム１０はリセットされる点に留意されたい。
【０１１２】
しかし、ＣＰＵコア５０をＣＰＵ制御拡張部５２と共に用いるためには、制御ユニット５４にわずかな改良が必要になる。すなわち、制御ユニット５４を改良して、特殊制御転送命令が不当なオプコードとして扱われずに、実際に特殊制御転送命令として実行されるようにすることである。本発明のある実施例においては、この改良は単に、制御ＰＬＡ信号の１つが、不当なオプコードが受信されたことを検出するランダム制御論理６２の部分に入力されないようにする段階によって構成される。ある実行例においては、この改良は１つの導体に開路を作成するだけの簡単なものでよい。その結果、ＣＰＵ５０がＣＰＵ制御拡張部５２と共に用いられたときに、特殊制御転送命令は不当なオプコードとして扱われない。本発明の他の実施例では、制御ユニット５４と制御ユニット６４との間で実行ユニット５６の制御を転送するための異なる方法を用いることもある。実際に、制御を円滑に転送するほとんどすべての方法を用いることができる。たとえば、命令そのものの中にあるビット・フィールドを用いて、特定の命令の実行中に実行ユニットを制御するのが制御ユニット５４であるか６４であるかを指示することもできる。
【０１１３】
あるいは、プログラミング可能な制御レジスタに、どの制御ユニットが現在実行ユニット５６を制御しているのかを判定するビット・フィールドを入れることもできる。あるいは、拡張可能ＣＰＵ１２の外部から受信された信号を用いて、後続の命令の実行中に実行ユニットを制御するのが制御ユニット５４であるか６４であるかを指示することもできる。この外部信号は、データ処理システム１０の別の部分で発生させても、集積回路ピンを介してデータ処理システム１０の外部から受信してもよい。
【０１１４】
図３を参照すると、多少の差異はあるが、図３に示された拡張可能ＣＰＵ１２’は、図２に示され上記に解説された拡張可能ＣＰＵ１２と同じである。拡張可能ＣＰＵ１２’には、回路構成のいくつかの新しいブロック、すなわち実行ユニット拡張部１５３と、ランダム制御論理拡張部１７５と、制御ＲＯＭ拡張部１７１とが含まれる。
【０１１５】
さらに、実行ユニット１５６の１つ以上の内部バス（すなわちＥＵ内部バス）が、実行ユニット１５６の少なくとも１つの物理的端部に配線されている。このため実行ユニット拡張部１５３は、１つ以上のＥＵ内部バスに追加され、直接結合されて、合成された実行ユニット１５３，１５６の機能性を高めている。実行ユニット拡張部１５３には、所望の回路構成、たとえば１つ以上のレジスタ，１つ以上の演算論理ユニット（ＡＬＵ）および任意の種類の特殊機能回路構成が含まれることもある。
【０１１６】
ランダム制御論理拡張部１７５は、実行ユニット拡張部１５３に含まれる回路構成を制御するためにランダム制御論理１７２に付加される拡張部または追加拡張部を表す。ランダム制御論理１７２は、実行ユニット１５６を全面的に制御するタイミング制御信号を発生する機能がある。しかし、ランダム制御論理１７２には、実行ユニット拡張部１５３を全面的に制御するタイミング制御信号を発生する機能はない。そのため、実行ユニット拡張部１５３を全面的に制御するためのタイミング制御信号を発生するために、ランダム制御論理拡張部１７５が必要になる。
【０１１７】
同様に、制御ＲＯＭ拡張部１７１は、実行ユニット拡張部１５３に含まれる回路構成を制御するために、制御ＲＯＭ１７０に付加される拡張部または追加部を表す。制御ＲＯＭ１７０は、実行ユニット１５６を全面的に制御するために必要とされる制御ＲＯＭ信号を発生する機能がある。しかし、制御ＲＯＭ１７０には、実行ユニット拡張部１５３を全面的に制御するために必要とされる制御ＲＯＭ信号を発生する機能はない。そのため、実行ユニット拡張部１５３を全面的に制御するために必要とされる制御ＲＯＭ拡張信号を発生するために、制御ＲＯＭ拡張部１７１が必要になる。
【０１１８】
図５に示される第１状態シーケンサ１５８は、図４に示される第１状態シーケンサ５８と同じ方法で実現できる点に留意されたい。また、図７に示される第２状態シーケンサ１６８は、図６に示される第２状態シーケンサ６８と同じ方法で実現できる点にも留意されたい。
【０１１９】
図８では、条件コード・レジスタ２２８が、実行ユニット５６内にあるという事実を除けば、実行ユニット５６は従来技術の実行ユニットが機能するのと同じように内部で機能する。しかし、実行ユニット５６のレイアウトは、制御ユニット５４，６４の両方が、実行ユニット５６を制御するタイミング制御信号を設けることができ、さらに制御ユニット５４，６４の両方がステータス信号を受信できるようにするものでなければならない。タイミング制御信号が実行ユニット５６を制御する方法の詳細については説明しない。しかし、タイミング制御信号は、従来技術と同じ方法で実行ユニット５６を制御するために用いられる。
【０１２０】
［概要と代替の実施例］
まとめると、本発明により、新しいＣＰＵまたは従来技術のＣＰＵを拡張可能なものとして、拡張可能ＣＰＵ１２または１２’に回路構成を容易に追加して、現在においても将来においても、さまざまな顧客の必要性を満足させることができる。その結果、個々の顧客の融通性を図るためのコストが大幅に削減された。ＣＰＵに関して「拡張可能」という言葉は、既存のＣＰＵ回路構成に大きな変更を加えることなく、特定の指定された回路構成を単に追加するだけでＣＰＵに新たな命令を追加することができることを意味するために用いられる。第２制御ユニット６４と第２状態シーケンサ６８とを追加するだけで、新しい命令を追加することができる。第２制御ユニット６４の大部分は、元の制御ユニット５４の複製でよいこと、また第２状態シーケンサ６８は元の状態シーケンサ５８の複製でもよい場合があることに注目されたい。本発明の実施例には、１つ以上のデコーダ８９，９９，１０９，１１９を必要としないものもある。
【０１２１】
実行ユニット１５６の既存のリソースを利用する新しい命令を追加するだけでなく、新しいリソースを実行ユニット１５６の拡張部として追加することもできる。実行ユニット１５６の内部バスは、実行ユニット１５６の物理的端部に配線される。このため実行ユニット拡張部１５３は、実行ユニット１５６の１つ以上の内部バスに追加し、直接的に結合することができる。実行ユニット拡張部１５３は、レジスタ，他の演算論理ユニット（ＡＬＵ），特殊機能回路構成または任意の所望の回路構成を追加することにより実行ユニット１５６の機能性を増大する。
【０１２２】
本発明は、特定の実施例に関して図示および説明されているが、当業者は更なる改良および改善を思い付くだろう。たとえば、本発明の代替の実施例においては、ＣＰＵコア５０とＣＰＵ制御拡張部５２に関して代替のアーキテクチャを用いることができる。図２および図３に示されたアーキテクチャは、使用することのできる２つの可能なアーキテクチャに過ぎない。また、本発明は２つの制御ユニット５４，６４だけに限定されない。第１状態シーケンサ５８と第２状態シーケンサ６８の制御転送回路構成にわずかな改良を加えることで、本発明の他の実施例では３つ以上の制御ユニットを用いることができる。
【０１２３】
本発明の代替の実施例においては、制御ユニット５４も制御ユニット６４もタイミング制御信号を駆動していない「非駆動」期間があることに留意されたい。タイミング制御信号が、「非駆動」時間の間（たとえば実行ユニット内部バスが予備充電されている間）に、実行ユニット５６の内部状態を恒久的に変化させることができない場合は、「非駆動」時間によって拡張可能ＣＰＵ１２の動作が中断されることはない。
【０１２４】
そのため、本発明は図示された特定の形態に制限されないこと、また添付の請求項は本発明の精神と範囲から逸脱しないすべての修正を含むものであることを理解されたい。
【図面の簡単な説明】
【０１２５】
【図１】本発明のある実施例によるデータ処理システム１０をブロック図に示したものである。
【図２】本発明のある実施例による図１の拡張可能な中央処理装置１２をブロック図に示したものである。
【図３】本発明のある実施例による図１の代替の拡張可能な中央処理装置１２’をブロック図に示したものである。
【図４】本発明のある実施例による図２の第１状態シーケンサ５８をブロック図に示したものである。
【図５】本発明のある実施例による図３の第１状態シーケンサ１５８をブロック図に示したものである。
【図６】本発明のある実施例による図２の第２状態シーケンサ６８をブロック図に示したものである。
【図７】本発明のある実施例による図３の第２状態シーケンサ１６８をブロック図に示したものである。
【図８】本発明のある実施例による図２の実行ユニット５６の一部と、図３の実行ユニット１５６の同じ部分をブロック図に示したものである。
【符号の説明】
【０１２６】
１０      データ処理システム
１２      拡張可能中央処理装置（ＣＰＵ）
１４      システム統合部
１６      シリアル部
１８      ランダム・アクセス・メモリ（ＲＡＭ）
２０      読み込み専用メモリ（ＲＯＭ）（オプション）
２２      その他のメモリ（オプション）
２４      ポート論理
２６      外部バス・インターフェース（オプション）
２８      タイマ部
３０      直接メモリ・アクセス（ＤＭＡ）（オプション）
３２      バス
【図１】
2005050365.tif 000003
【図２】
2005050365.tif 000004
【図３】
2005050365.tif 000005
【図４】
2005050365.tif 000006
【図５】
2005050365.tif 000007
【図６】
2005050365.tif 000008
【図７】
2005050365.tif 000009
【図８】
2005050365.tif 000010