(57)【特許請求の範囲】
【請求項１】
第１のデータ処理システムにおいて拡張可能なレジスタを提供する方法であって、
前記第１のデータ処理システムに対する命令セットを識別する段階であって、前記第１のデータ処理システムは第２のデータ処理システムに関連する現存の命令セットの少なくとも一部を実行する前記段階、
前記第１のデータ処理システムにおいて、第１のレジスタ部および第２のレジスタ部を有するレジスタを提供する段階であって、前記第２のレジスタ部は前記第２のデータ処理システムには設けられていなかった前記段階、
前記第１のデータ処理システムにおいて、前記第２のデータ処理システムと適合するオブジェクトコードである第１の命令を受信する段階、
前記第１の命令の受信に応じて、前記第１のレジスタ部を変更しかつ前記第２のレジスタ部を変更しない段階、
前記第１のデータ処理システムにおいて、前記第２のデータ処理システムにおいて規定されていないオペコードを有する第２の命令を受信する段階、
前記第２の命令の受信に応じて、前記第２のレジスタ部を変更する段階、
前記第１のデータ処理システムにおいて、前記第２のデータ処理システムと適合するオブジェクトコードであり前記第１の命令とは異なる第３の命令を受信する段階、および
前記第３の命令の受信に応じて、前記第１および第２のレジスタ部の双方を使用して操作を行なう段階、
を具備することを特徴とする第１のデータ処理システムにおいて拡張可能なレジスタを提供する方法。
【請求項２】
データ処理システムであって、
拡張可能なインデクスレジスタであって、
第１のインデクスレジスタ命令によって変更される第１のレジスタ部、そして
第２のインデクスレジスタ命令によって変更されるが、第１のインデクスレジスタ命令によって変更されない第２のレジスタ部、
を具備する前記拡張可能なインデクスレジスタ、
前記拡張可能なインデクスレジスタに結合された第１のバス、
前記拡張可能なインデクスレジスタに結合された第２のバス、および
前記拡張可能なインデクスレジスタに結合されたアドレス発生回路であって、該アドレス発生回路の第１の入力は前記第１のバスに結合され、前記アドレス発生回路の出力は前記第３のバスに結合され、前記アドレス発生回路は前記データ処理システムがインデクス付きアドレシング動作を行なう場合に実効インデクス付きアドレスを発生するため前記第１のレジスタ部と前記第２のレジスタ部の組み合わせを使用するもの、
を具備することを特徴とするデータ処理システム。
【請求項３】
第１のデータ処理システムにおいて拡張可能なレジスタを提供する方法であって、前記第１のデータ処理システムは第２のデータ処理システムと実質的にオブジェクトコードが適合し、前記方法は、
第１のレジスタ部および第２のレジスタ部を有するインデクスレジスタを提供する段階であって、前記インデクスレジスタはインデクス動作の間に使用される前記段階、
前記インデクスレジスタを変更するために第１の命令を受信する段階、
前記第１の命令が前記第２のデータ処理システムとオブジェクトコードが適合していれば、前記第２のレジスタ部を変更することなく前記第１のレジスタ部に格納された第１のインデクス値を更新する段階、
前記第１の命令が前記第２のデータ処理システムとオブジェクトコードが適合しない場合は、前記第１および第２のレジスタ部の双方に格納された第２のインデクス値を更新する段階、
前記第２のデータ処理システムとオブジェクトコードが適合する第２の命令を受信する段階、および
前記第２の命令を実行する場合に前記第１および第２のレジスタ部の双方を利用する段階、
を具備することを特徴とする第１のデータ処理システムにおいて拡張可能なレジスタを提供する方法。
【請求項４】
拡張可能なレジスタを提供するデータ処理システムであって、
情報バス、
前記情報バスに結合された実行ユニットであって、
第１の入力を有し、第２の入力を有し、かつ出力を有する演算論理ユニット、
前記演算論理ユニットの前記第１の入力に結合された第１のバス、
前記演算論理ユニットの前記第２の入力に結合された第２のバス、
前記演算論理ユニットの前記出力に結合された第３のバス、
前記第１および第２のバスの内の少なくとも１つに結合されかつ前記第３のバスに結合された第１のレジスタ部を有し、かつ前記第１および第２のバスの内の少なくとも１つに結合されかつ前記第３のバスに結合された第２のレジスタ部を有するインデクスレジスタ、
前記第３のバスにおよび前記情報バスに結合されたアドレスバッファ論理であって、該アドレスバッファ論理は前記データ処理システムがインデクス付きアドレシング動作を行なう場合に実効アドレスを提供するために前記情報バスに対して前記第１のレジスタ部および前記第２のレジスタ部の組み合わせを提供するもの、
を備えた前記実行ユニット、および
前記実行ユニットに結合された制御回路であって、該制御回路は前記第１のレジスタ部のみを変更することにより前記インデクスレジスタを変更する第１の複数古い命令を受信し、前記制御回路は前記第１および第２のレジスタ部の双方を変更することにより前記インデクスレジスタを変更する第２の複数の新しい命令を受信し、そして前記制御回路は前記インデクス付きアドレシング動作を行なう第３の複数の古いおよび新しい命令の双方を受信するもの、
を具備することを特徴とする拡張可能なレジスタを提供するデータ処理システム。
【請求項５】
データプロセッサを動作させる方法であって、
演算論理ユニットを提供する段階、
インデクスレジスタを提供する段階であって、該インデクスレジスタは第１のレジスタ部を有しかつ第２のレジスタ部を有するもの、
前記インデクスレジスタを前記演算論理ユニットに結合するために少なくとも１つのバスを提供する段階、
第１のインデクシング命令、第２のインデクシング命令および第３のインデクシング命令を受信しかつ実行するための制御回路を提供する段階、
前記制御回路が前記第１のインデクシング命令を受信したことに応じて、前記インデクスレジスタを前記第１のレジスタ部のみを更新することにより変更する段階、
前記制御回路が前記第２のインデクシング命令を受信したことに応じて、前記インデクスレジスタを前記第１および第２のレジスタ部の双方を更新することにより更新する段階、および
前記制御回路が前記第３のインデクシング命令を受信したことに応じて、実効アドレスを提供するために前記第１のレジスタ部と前記第２のレジスタ部とを結合しかつ前記実効アドレスを使用してインデクス付きアドレシング動作を行なう段階、
を具備し、前記第１のインデクシング命令の受信に応じて、第１のインデクス値が前記第１のレジスタ部に格納されかつ前記第２のインデクシング命令の受信に応じて第２のインデクス値が前記第１および第２のレジスタ部に格納され、そして
前記第２のインデクス値は前記第１のインデクス値よりビット長さが大きいことを特徴とするデータプロセッサを動作させる方法。
【請求項６】
第２のデータプロセッサとオブジェクトコードが適合する、第１のデータプロセッサであって、
インデクスレジスタであって、
第１の命令によって変更される第１のレジスタ部、および
第２の命令によって変更されるが前記第１の命令によっては変更されない第２のレジスタ部、
を備えた前記インデクスレジスタ、そして
前記インデクスレジスタに結合されたアドレス発生回路であって、該アドレス発生回路は前記第１のデータプロセッサがインデクス付きアドレシング動作を必要とする第３の命令を実行している場合に実効アドレスを発生するため前記第１のレジスタ部および前記第２のレジスタ部の組み合わせを使用するもの、
を具備し、前記第１の命令は前記第１のデータプロセッサのオペコードマップに存在しかつ第１のオペコード値を有し、前記第１の命令は前記第２のデータプロセッサのオペコードマップ内に存在しかつ前記第１のオペコード値を有し、前記第２の命令は前記第１のデータプロセッサのオペコードマップ内に存在しかつ第２のオペコード値を有し、前記第２の命令は前記第２のデータプロセッサのオペコードマップにおいて規定されておらず、前記第３の命令は前記第１のデータプロセッサのオペコードマップ内に存在しかつ第３のオペコード値を有し、そして前記第３の命令は前記第２のデータプロセッサのオペコードマップ内に存在しかつ前記第３のオペコード値を有することを特徴とする前記第１のデータプロセッサ。
【請求項７】
第２のデータプロセッサとオブジェクトコードが適合する第１のデータプロセッサであって、
第１のバス、
第２のバス、
第３のバス、
前記第１および第２のバスの内の少なくとも１つに結合された第１のレジスタ部を有し、かつ前記第１および第２のバスの内の少なくとも１つに結合された第２のレジスタ部を有するインデクスレジスタ、
第１の命令、第２の命令および第３の命令を受ける制御回路であって、該制御回路は前記第１のデータプロセッサが前記第１の命令を実行している場合に前記第１のレジスタ部のみを変更することにより前記インデクスレジスタを変更し、前記制御回路は前記第１のデータプロセッサが前記第２の命令を実行している場合に前記第１および第２のレジスタ部の双方を変更することにより前記インデクスレジスタを変更し、そして前記制御回路は前記第１のデータプロセッサがインデクス付きアドレシングモードを使用して前記第３の命令を実行している場合にある実効アドレスを使用してインデクス付きアドレシング動作を行なうもの、および
前記第１および第２のバスの内の少なくとも１つに結合された入力を有し、かつ前記第３のバスに結合された出力を有するアドレス発生回路であって、該アドレス発生回路は前記第１のデータプロセッサが前記インデクス付きアドレシングモードを使用して前記第３の命令を実行している場合に前記実効アドレスを提供するために前記第１のレジスタ部と前記第２のレジスタ部の組み合わせを前記第３のバスに供給するもの、
を具備し、前記第１の命令は前記第１のデータプロセッサのオペコードマップにかつ前記第２のデータプロセッサのオペコードマップに存在し、前記第２の命令は前記第１のデータプロセッサのオペコードマップ内に存在するが前記第２のデータプロセッサのオペコードマップにおいては規定されておらず、かつ前記第３の命令は前記第１のデータプロセッサのオペコードマップ内に存在することを特徴とする前記第１のデータプロセッサ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は一般的にはデータ処理システムに関し、かつより特定的には拡張可能なレジスタを提供するデータ処理システムおよびその方法に関する。
【０００２】
【従来の技術】
中央処理ユニット（ＣＰＵ）は一般にマイクロコントローラ集積回路（ＭＣＵ）の主な「頭脳（ｂｒａｉｎ）」である。ＣＰＵは別として、ＭＣＵは通常、メモリ、タイマおよびバスインタフェースのような、１つまたはそれ以上のオンボード・ペリフェラルまたはセクションを含む。しかしながら、ＣＰＵは通常ＭＣＵを制御するために使用されるソフトウェア命令を受け入れかつ解釈する責務を有している。
【０００３】
１つの特定のＣＰＵは種々のＭＣＵに対して使用できる。もし同じＣＰＵが種々のＭＣＵに使用されれば、これらのＭＣＵは一般に「ファミリ」（アメリカ合衆国、テキサス州、オースチンのモトローラ・インコーポレイテッドから入手可能なＭＣ６８ＨＣ０５ファミリのマイクロコントローラのような）を形成するものと考えられる。種々のＭＣＵに対して同じＣＰＵを使用することには製造者の観点からおよび顧客の観点からの双方につき数多くの利点がある。１つのそのような利点は同じＣＰＵを使用するファミリにおけるＭＣＵの間でのソフトウェアの互換性である。
【０００４】
しかしながら、新しくかつより強力なバージョンのＣＰＵが望まれる場合に問題が生じる。新しいかつより強力なバージョンのＣＰＵを設計する場合に行なわなければならない重要な決定の１つは古いＣＰＵと「オブジェクトコードの互換性」を維持するか否かを決定することである。この明細書において使用されているように、用語「オブジェクトコードの互換性」は新しいＣＰＵの妥協を許さない特性である。すなわち、新しいＣＰＵは古いＣＰＵに対して書かれたアセンブリ言語のソフトウェアを動作させることができるか（そして同じ結果を生じるか）、あるいはそうでないかである。したがって、古いＣＰＵと新しいＣＰＵの間のいずれの差異も古いＣＰＵに対して書かれたアセンブリ言語のソフトウェアプログラムにとって完全に透明でなければならない。
【０００５】
そのオブジェクトコードが古いＣＰＵと互換性があるように新しいＣＰＵを設計することには非常に重要な利点がある。その利点は古いＣＰＵについて書かれたソフトウェアが直ちに新しいＣＰＵにとって使用できることである。したがって、古いＣＰＵを購入しかつ使用してきた顧客は簡単に新しいより強力なＣＰＵを使用することに切り替えできる。そして、顧客は古いＣＰＵによって彼らが使用しているソフトウェアはまた新しいＣＰＵによって動作することを保証される。したがって、より新しい強力なＣＰＵへとグレードアップするためにソフトウェアを修正しあるいは書き直す上でのコストが顧客にとって必要ではなくなる。古いＣＰＵとオブジェクトコードが互換性を持つ新しいかつより強力なＣＰＵを設計することにより顧客がソフトウェアの変更を行うことに関連するコストおよび危険をうける必要なしにより強力なＣＰＵへとグレードアップできるようになる。
【０００６】
新しいＣＰＵをより強力にする方法の１つはレジスタのビット数を増大することにより１つまたはそれ以上のレジスタを拡張することである。例えば、インデクスレジスタを８ビットから１６ビットに増大する。インデクスレジスタはインデクス付き（ｉｎｄｅｘｅｄ）アドレシングモードにおいて使用される。インデクス付きアドレシングモードは一般にメモリのデータのテーブルにアクセスするために使用される。インデクスレジスタを８ビットから１６ビットに増大することにより、インデクス付きアドレシングモードにおいてＣＰＵによってアクセスされかつ使用できるメモリスペースが大幅に増大する。実際に、幾つかの顧客は新しい製品の特徴を導入するためにインデクスレジスタが８ビットから１６ビットに拡張されることを絶対的に必要とする新しい製品を持っている。
【０００７】
一般に、インデクス付きアドレシングモードにおいては、インデクスレジスタに格納される値はメモリ内の順次的な位置に格納されたデータ値のテーブルの始めへのポインタとして使用される。一般に命令の一部として含まれる、オフセット値が次に前記データ値のテーブル内の１つの特定のロケーションをアクセスするために前記インデクスレジスタ内の値に加えられる。しかしながら、インデクスレジスタが使用できる種々の他の方法がある。インデクス付きアドレシングモードは当業者によく知られている。
【０００８】
新しいＣＰＵにおいて単にインデクスレジスタを８ビットでなく１６ビットにすることはオブジェクトコードの互換性を破壊するが、それは古いＣＰＵに対して書かれた幾つかのソフトウェアは新しいＣＰＵによって実行される場合に異なる結果を生じるからである。例えば、インデクスレジスタを増分したあるソフトウェアプログラムは該インデクスレジスタが値＄ＦＦを含んでいる場合に古いＣＰＵの８ビットのインデクスレジスタを値＄００にロールオーバさせ、一方同じソフトウェアプログラムは新しいＣＰＵにおける１６ビットのインデクスレジスタを値＄０１００に増大させることになる。したがって、新しいＣＰＵにおいて単にインデクスレジスタを８ビットでなく１６ビットにすることはオブジェクトコードの互換性を破壊する。
【０００９】
オブジェクトコードの互換性を維持しながらレジスタのサイズを増大しあるいは拡張することも可能であるが、それは過大な数の新しい命令およびそれらの新しい命令を実施するのに必要な関連する回路を必要とする。拡張可能なレジスタを使用するかあるいは拡張可能なレジスタに影響を与える各々の古い命令に対し新しい二重の命令を持つことにより、新しいＣＰＵがレジスタのサイズを拡張しかつそれでもオブジェクトコードの互換性を維持することが可能になる。第１の組の命令は古いＣＰＵの命令と同じであり（すなわち、それは前記拡張可能なレジスタの８ビットのみを使用しかつ該８ビットに影響を与える）かつしたがってオブジェクトコードの互換性を維持する。第２の組の命令は第１の組の命令と同じ機能を達成する二重のまたは重複した組のものであるが、第２の組は拡張可能なレジスタの全１６ビットを使用する。
【００１０】
【発明が解決しようとする課題】
インデクスレジスタの場合、該インデクスレジスタを使用するかあるいは該インデクスレジスタに影響を与えるかなりの数の命令がある。したがって、インデクスレジスタを使用するかあるいはインデクスレジスタに影響を与える各命令に対して二重の組の命令を加えることは回路に対し許し難いほどの大きな付加となる。したがって、目標はできるだけ少しの回路およびコストを加え、それでも古いＣＰＵとオブジェクトコードの互換性を有するより強力なＣＰＵを設計することである。
【００１１】
【課題を解決するための手段および作用】
前に述べた必要性は本発明によって満たされかつ他の利点も得られる。１つの形態においては、本発明は拡張可能なレジスタを提供するデータ処理システムおよびその方法である。
【００１２】
１つの実施例においては、本発明はデータ処理システムにおける拡張可能なレジスタを提供する方法である。該方法は第１のレジスタ部および第２のレジスタ部を有するレジスタを提供する段階を含む。該方法はまた従来技術のデータ処理システムとオブジェクトコードの互換性を有する第１の命令を受ける段階を含む。前記第１の命令を受けたことに応じて、前記第１のレジスタ部は変更されかつ第２のレジスタ部は変更されない。本方法は従来技術のデータ処理システムにおいて規定されないオペコード（ｏｐｃｏｄｅ）を有する第２の命令を受ける段階を含む。前記第２の命令を受けたことに応じて、第２のレジスタ部が変更される。本方法は従来技術のデータ処理システムとオブジェクトコードの互換性を有する第３の命令を受ける段階を含む。第３の命令を受けたことに応じて、前記第１および第２のレジスタ部の双方を使用して動作（ｏｐｅｒａｔｉｏｎ）が行なわれる。
【００１３】
本発明は添付の図面と共に以下の詳細な説明を参照することにより当業者に理解できるであろう。
【００１４】
【実施例】
オブジェクトコードの互換性を維持しながらレジスタの長さを拡張するよりコスト効率のよい方法が必要であった。インデクスレジスタを含む古い命令の各々に対し新しい１６ビットの命令を加えることはあまりにもコストがかかり過ぎた。よりコストの少ない解決方法が必要であった。
【００１５】
この明細書で使用されている用語として、「拡張可能なレジスタ（ｅｘｔｅｎｓｉｂｌｅ  ｒｅｇｉｓｔｅｒ）」は長さが拡張できるレジスタを意味する。用語「サイズ（ｓｉｚｅ）」は、レジスタに言及する場合は、用語「長さ（ｌｅｎｇｔｈ）」と同じ意味に使用される。
【００１６】
本発明は現存するインデクスレジスタに上位バイト（ｕｐｐｅｒ  ｂｙｔｅ）を加える。本発明は古いＣＰＵからの全ての命令を利用し、並びにインデクスレジスタの新しい上位バイトを修正できる少しの新しい命令のみを加える。古いＣＰＵからの全ての命令はまったく同じ１６進のオペコードを有し、かつ前記少しの新しい命令は古いＣＰＵにおいて規定されていなかったオペコードを有する。
【００１７】
本発明においては、古いＣＰＵからの幾つかの命令は（古いＣＰＵと全く同様に）インデクスレジスタの８ビットのみを使用し、一方古いＣＰＵからの他の命令は（古いＣＰＵとは異なり）インデクスレジスタの１６ビット全てを使用するよう修正されている。古い命令の幾つかはインデクスレジスタの１６ビット全てを使用するが、オブジェクトコードの互換性は依然として維持される。
【００１８】
インデクスレジスタの新しい上位バイトはリセットにおいて値＄００に初期化され、かつ前記少しの新しい命令のみがインデクスレジスタの新しい上位バイトを変更できる。インデクスレジスタを変更する古い命令のいずれも新しい上位バイトに対しては影響を与えない。しかしながら、古いものであれ新しいものであれ、全てのインデクス付きアドレシングモードの命令は新しい上位バイトを含みインデクスレジスタの全１６ビットを使用することに注目することが重要である。したがって古いＣＰＵにおけるインデクスレジスタの８ビットのみを使用する古いインデクス付きアドレシングモードの命令は今や新しいＣＰＵ１２においてインデクスレジスタの全１６ビットを使用することになる。
【００１９】
しかしながらオブジェクトコードの互換性は維持されるが、それはインデクスレジスタの新しい上位バイトはもし古い命令が使用されれば常に＄００を含むことになるからである。また、値＄ｘｙを含む８ビットのインデクスレジスタを使用する全てのインデクス付きアドレシング操作は値＄００ｘｙを含む１６ビットのインデクスレジスタ全体を使用する対応するインデクス付きアドレシング操作と同じ結果を生じる。
【００２０】
しかしながら、もしある顧客が新しい命令を使用して新しいアセンブリコードのソフトウェアを書きたいと希望する場合、その顧客はインデクス付きアドレシングモードにおいてＣＰＵによってアクセスできる増大したメモリスペースおよび１６ビットのインデクスレジスタ全体の利益を受けることができる。
【００２１】
したがって、本発明は新しいＣＰＵ１２が拡張可能なインデクスレジスタを備えて設計できるようにする。新しいＣＰＵ１２は８ビットのインデクスレジスタを有する古いＣＰＵとオブジェクトコードの互換性があり、しかも新しいＣＰＵ１２のインデクスレジスタは新しい命令が使用される場合に１６ビットに効果的に拡張できる。その結果、ユーザは古いＣＰＵに対して書かれかつ８ビットのインデクスレジスタの機能を有するアセンブリコードのソフトウェアを使用するか、あるいは新しいＣＰＵ１２のためにアセンブリコードのソフトウェアを書きかつ１６ビットのインデクスレジスタの機能を持つようにするかの間で選択を行なうことになる。
【００２２】
用語「肯定する（ａｓｓｅｒｔ）」および「否定する（ｎｅｇａｔｅ）」は、信号、ステータスビット、または同様の装置をそれぞれその論理的に真のまたは論理的に偽の状態にすることを言及する場合に使用される。もし論理的に真の状態が論理レベル“１”であれば、論理的に偽の状態は論理レベル“０”である。また、もし論理的に真の状態が論理レベル“０”であれば、論理的に偽の状態は論理レベル“１”である。
【００２３】
用語「バス」は、データ、アドレス、制御、またはステータスのような、１つまたはそれ以上の種々のタイプの情報を転送するために使用できる複数の信号を言及するために使用される。数字に先行する記号“＄”はその数字がその１６進または１６をベースとした形式で表わされていることを示す。
【００２４】
［図面の説明］
図１は、データ処理システム１０の１つの実施例を示す。データ処理システム回路１０は中央処理ユニット（ＣＰＵ）回路１２、システム統合セクション回路１４、シリアルセクション回路１６、ランダムアクセスメモリ（ＲＡＭ）回路１８、リードオンリメモリ（ＲＯＭ）回路２０、他のメモリ回路２２（例えば、電気的に消去可能なプログラム可能リードオンリメモリ、ＥＥＰＲＯＭ）、ポート論理回路２４、外部バスインタフェース回路２６、タイマセクション回路２８、およびダイレクトメモリアクセス（ＤＭＡ）回路３０を含む。
【００２５】
ＣＰＵ１２、システム統合回路１４、シリアル回路１６、ＲＡＭ１８、ＲＯＭ２０、他のメモリ回路２２、オート論理回路２４、外部バスインタフェース回路２６、タイマ回路２８、およびＤＭＡ３０は情報バス３２に双方向的に結合されている。ＣＰＵ１２およびシステム統合セクション１４はバス３４によって双方向的に結合されている。同様に、ＣＰＵ１２はバス３６を介してＤＭＡ３０に結合されている。
【００２６】
システム統合セクション（Ｓｙｓｔｅｍ  ｉｎｔｅｇｒａｔｉｏｎ  ｓｅｃｔｉｏｎ）１４は集積回路ピン３８によってデータ処理システム１０の外部の信号を受信しかつ外部に信号を送信することができる。シリアルセクション１６は集積回路ピン４０によってデータ処理システム１０の外部の信号を受信しかつ外部に信号を送信することができる。メモリのタイプに応じて、他のメモリ２２も任意選択的に集積回路ピン４２を介してデータ処理システム１０の外部の信号を受信しかつ外部に信号を送信することができる。ポート論理２４は集積回路ピン４４を介してデータ処理システム１０の外部の信号を受信しかつ外部に信号を送信することができる。外部バスインタフェース２６は集積回路ピン４６を介してデータ処理システム１０の外部の信号を受信しかつ外部に信号を送信することができる。また、タイマセクション２８は集積回路ピン４８を介してデータ処理システム１０の外部の信号を受信しかつ外部に信号を送信することができる。
【００２７】
図１に示されたデータ処理システム１０の実施例はマイクロコントローラのファミリ内の１つの特定のマイクロコントローラを示している。同じファミリ内のマイクロコントローラは一般に複数の異なるオンボード・ペリフェラルを持つから、図１はデータ処理システム１０の１つの実施例を提供するに過ぎない。例えば、データ処理システム１０の他の実施例ではＲＯＭ２０、外部バスインタフェース２６、またはＤＭＡ３０を持たないかもしれない。実際に、データ処理システム１０の他の実施例では図１に示されたものより少ない、多い、あるいは異なるペリフェラルを持つことができる。
【００２８】
図２は、ブロック図形式で、本発明の一実施例に係わる図１の中央処理ユニット（ＣＰＵ）１２を示す。図２に示されるように、ＣＰＵ１２は概念的に３つの主な部分に分割することができ、すなわち制御ユニット５４、実行ユニット５６、およびシーケンサ５８である。
【００２９】
制御ユニット５４は制御プログラム可能論理アレイ（制御ＰＬＡ）回路６０およびランダム制御論理回路６２を含む。制御ユニット５４においては、制御ＰＬＡ６０はランダム制御論理回路６２に接続され集合的に制御ＰＬＡ信号と名付けられた複数の信号を転送する。ランダム制御論理６２は実行ユニット５６に結合され複数のタイムド（Ｔｉｍｅｄ）制御信号を転送しかつ複数のステータス信号を受信する。制御ＰＬＡ６０はシーケンサ５８に結合されてシーケンサ入力信号と名付けられた信号を転送し、かつシーケンサ出力信号と名付けられた信号を受信する。シーケンサ５８は命令を受信するために情報バス３２に結合されている。実行ユニット５６は情報バス３２に双方向的に結合されている。シーケンサ５８の幾つかの実施例ではデコーダ５９を含むことができる。
【００３０】
図３は、図２の実行ユニット５６の一部の一つの実施例を示す。プログラムカウンタ（ハイ）／インクリメンタレジスタ回路２００はバス２０２から情報を受信しかつ情報をバス２０４に提供する。インデクスレジスタ（ハイ）回路２０５はバス２０２から情報を受信しかつ情報をバス２０４に提供する。プログラムカウンタ（ロー）レジスタ回路２０６は情報をバス２０２から受信しかつ情報をバス２０４に提供する。スタックポインタレジスタ回路２０８は情報をバス２０２から受信しかつ情報をバス２０４に提供する。アキュムレータレジスタ回路２１０はバス２０２から情報を受信しかつ情報をバス２０４に提供する。インデクスレジスタ（ロー）回路２１２は情報をバス２０２から受信しかつ情報をバス２０４に提供する。一時アドレスレジスタ（ハイ）回路２１４はバス２０２から情報を受信しかつ情報をバス２１６に提供する。一時アドレスレジスタ（ロー）回路２１８はバス２０２から情報を受信しかつ情報をバス２１６に提供する。データバスインタフェース回路２２０はバス２０２から情報を受信しかつ情報をバス２１６に提供する。定数発生論理回路２２２は情報をバス２０４に提供する。
【００３１】
演算論理ユニット（ＡＬＵ）２２４はバス２０４からかつバス２１６からデータを受信する。ＡＬＵ２２４は双方向的にフラグ回路２２６に結合されている。フラグ回路２２６は双方向的に条件符号レジスタ２２８に結合されている。条件符号レジスタ２２８はバス２０２から情報を受信しかつ情報をバス２１６に提供する。ＡＬＵ２２４の出力はシフタ回路２３０に結合されている。シフタ回路２３０は情報をバス２０２に提供する。
【００３２】
プログラムカウンタ（ハイ）／インクリメンタレジスタ２００、インデクスレジスタ（ハイ）２０５、および一時アドレスレジスタ（ハイ）２１４は各々情報をハイバス２３２に提供する。アドレスバス（ハイ）バッファ回路２３４はバス２３２から情報を受信しかつ情報をプログラムカウンタ（ハイ）／インクリメンタレジスタ２００に提供する。アドレスバス（ハイ）バッファ２３４はアドレスバス（ハイ）２３６に結合されている。アドレスバス（ハイ）２３６は情報バス３２に結合されている。
【００３３】
プログラムカウンタ（ロー）レジスタ２０６、一時アドレスレジスタ（ロー）２１８、スタックポインタレジスタ２０８は各々情報をローバス２３８に提供する。アドレスバス（ロー）バッファ回路２４０はローバス２３８から情報を受信する。アドレスバス（ロー）バッファ２４０はアドレスバス（ロー）２４２に結合されている。アドレスバス（ロー）２４２は情報バス３２に結合されている。
【００３４】
ローバス２３８は情報をデータバス２４４から受信する。データバスインタフェース２２０は情報をデータバス２４０から受信しかつ該データバス２４４に情報を提供する。データバス２４４は情報バス３２に結合されている。本発明の一つの実施例においては、アドレスバス（ハイ）２３６、アドレスバス（ロー）２４２、およびデータバス２４４は実際には情報バス３２の一部である。
【００３５】
図４は、ブロック図形式で、８ビットの従来技術のインデクスレジスタ３０２を示す。
【００３６】
図５は、ブロック図形式で、１６ビットのインデクスレジスタ３０４を示し、このインデクスレジスタ３０４はインデクスレジスタ（ハイ）回路２０５およびインデクスレジスタ（ロー）回路２１２の連結により形成されている。インデクスレジスタ（ハイ）回路２０５およびインデクスレジスタ（ロー）回路２１２は各々１６ビットのインデクスレジスタ３０４の８ビットのレジスタ部である。インデクスレジスタ（ハイ）回路２０５およびインデクスレジスタ（ロー）回路２１２の双方は図３の実行ユニット５６に含まれている。
【００３７】
図６は、テーブル形式で、古いおよび新しい命令のあるグループが新しいＣＰＵ１２のインデクスレジスタ部２０５および２１２に対して有する影響を示している。
【００３８】
図７は、テーブル形式で、新しいＣＰＵ１２においてインデクスレジスタ（ハイ）２０５を修正可能な新しい命令の説明を示している。
【００３９】
［好ましい実施例の動作］
本発明は古いＣＰＵとオブジェクトコードが互換性がありかつさらに可能な限り少しの回路およびコストを加えるのみである新しいより強力なＣＰＵが設計できるようにする。新しいＣＰＵ１２は拡張可能なレジスタを提供し、これは１つの実施例においては８ビットから１６ビットへと拡張できるインデクスレジスタである。新しいＣＰＵ１２における拡張可能なインデクスレジスタはオブジェクトコードの互換性を維持するために８ビットのレジスタのように機能するが、それはまた新しいＣＰＵ１２においてインデクス付きアドレシングモードの可能性を増大するために１６ビットのレジスタとして使用できる。
【００４０】
図６は、テーブル形式で、古いおよび新しい命令のあるグループが新しいＣＰＵ１２のインデクスレジスタ部２０５および２１２に対して持つ影響を示すものである。「古い」命令は古いＣＰＵのために規定されかつ古いＣＰＵが実行可能な命令である。したがって古い命令に対する命令セットにおける各命令は「古い」命令である。「新しい」命令は新しいＣＰＵ１２のために規定されかつ新しいＣＰＵ１２が実行することができるが、古いＣＰＵに対しては規定されなかった命令である。新しいＣＰＵに対する命令セットは全ての「古い」命令および新しいＣＰＵ１２の可能性を増大するために加えられた「新しい」命令を含む。
【００４１】
「古い命令」の見出しの下には、古い命令が新しいＣＰＵ１２のインデクスレジスタ部２０５および２１２に対して持つ影響に関する２つの記述がある。インデクスレジスタ（ハイ）２０５は古い命令によって修正できないが、インデクスレジスタ（ロー）２１２は古い命令によって修正できる。両方のインデクスレジスタ（ハイ）２０５およびインデクスレジスタ（ロー）２１２はインデクス付きアドレシングモードにおいて連結されたインデクスレジスタ３０４として使用される。
【００４２】
「新しい命令」の見出しの下には、新しい命令が新しいＣＰＵ１２におけるインデクスレジスタ部２０５および２１２に対して持つ影響に関する２つの記述がある。インデクスレジスタ（ハイ）２０５およびインデクスレジスタ（ロー）２１２の双方は新しい命令によって修正できる。また、両方のインデクスレジスタ（ハイ）２０５およびインデクスレジスタ（ロー）２１２はインデクス付きアドレシングモードにおいて連結されたインデクスレジスタ３０４として使用される。
【００４３】
新しいＣＰＵ１２は現存のインデクスレジスタに上位バイト、すねわちインデクスレジスタ（ハイ）２０５、を加え、しかも依然としてオブジェクトコードの互換性を維持している。古いＣＰＵは新しいＣＰＵ１２におけるインデクスレジスタ（ロー）回路２１２（図３を参照）に直接対応するインデクスレジスタ３０２（図４を参照）を有していた。しかしながら、古いＣＰＵとは異なり、新しいＣＰＵ１２は１６ビットのインデクスレジスタ３０４（図５を参照）を効果的に形成するためにインデクスレジスタ（ロー）回路２１２と連結できる付加的なインデクスレジスタ（ハイ）回路２０５（図３を参照）を有している。
【００４４】
新しいＣＰＵ１２は古いＣＰＵからの全ての命令を使用し、ならびにインデクスレジスタ３０４の新しい上位バイト（図７を参照）を修正できるほんの少しの新しい命令のみを追加している。古い命令の全ては古いＣＰＵにおけるものと全く同じ１６進のオペコードを有しており、新しい命令は古いＣＰＵにおいて規定されなかったオペコードを有していることに注意を有する。
【００４５】
本発明の１つの実施例においては、古いＣＰＵはアメリカ合衆国、テキサス州、オースチンのモトローラ・インコーポレイテッドから入手可能な、ＭＣ６８ＨＣ０５ファミリのマイクロコントローラのメンバである。古い命令の完全なリストはモトローラ・インコーポレイテッドによって発行されている種々のＭＣ６８ＨＣ０５ファミリのユーザマニュアルで得られる。一例として、インデクスレジスタ３０２（図４を参照）を修正可能であった古い命令のいくつかは次の通りである。すなわち、インデクスレジスタ３０２の内容から１を減算する“ＤＥＣＸ”命令、インデクスレジスタ３０２の内容に１を加算する“ＩＮＣＸ”命令、イミディエイト値または特定されたメモリロケーションの内容をインデクスレジスタ３０２にロードする“ＬＤＸ”命令、インデクスレジスタ３０２の全てのビットを１つの場所だけ左にシフトしかつビットゼロにゼロをシフトする“ＬＳＬＸ”命令。インデクスレジスタ３０２の内容をその２の補数値によって置換える“ＮＥＧＸ”命令、そしてインデクスレジスタにアキュムレータの内容をロードする“ＴＡＸ”命令である。
【００４６】
古いおよび新しい命令によってインデクスレジスタ部２０５および２１２に図６に示すようにして影響を与えることができるようにすることによって生成される結果を理解することが重要である。新しいＣＰＵ１２においては、古い命令のいくつかは（ちょうど古いＣＰＵと同様に）インデクスレジスタの８ビットのみを使用するが、他の古い命令は（古いＣＰＵとは異なり）インデクスレジスタの１６ビット全てを使用するよう修正されている。古い命令のいくつかはインデクスレジスタの入力ビット全てを使用するが、オブジェクトコードの互換性は依然として維持され、それについては次に説明する。
【００４７】
インデクスレジスタの新しい上位バイト、すなわちインデクスレジスタ（ハイ）２０５、はリセットの場合に値＄００に初期化され、かつ図７に示される少しの新しい命令のみがインデクスレジスタの新しい上位バイト（図５を参照）を変更することができる。インデクスレジスタを変更する古い命令のいずれも新しい上位バイトに対し影響を与えない。したがって、古いＣＰＵによって実行するように書かれたいずれのソフトウェアもインデクスレジスタの新しい上位バイトに対しなんらの影響も持たない。したがって、古いＣＰＵのために（かつ、したがって古い命令のみを使用して）書かれたソフトウェアが新しいＣＰＵ１２によって実行される場合、インデクスレジスタの新しい上位バイトは決して修正または変更されず、かつ常にリセット値＄００にとどまることになる。
【００４８】
しかしながら、古いものであれあるいは新しいものであれ、インデクスレジスタを変更しない全てのインデクス付きアドレシングモード命令は、新しい上位バイトを含み、インデクスレジスタ３０４の１６ビット全てを使用することに注目することが重要である。したがって、古いＣＰＵにおいて８ビットのインデクスレジスタのみを使用した古いインデクス付きアドレシングモード命令は今や新しいＣＰＵ１２におけるインデクスレジスタ３０４の１６ビット全てを使用する。
【００４９】
しかしながら、オブジェクトコードの互換性は維持され、それは古い命令のみが使用されればインデクスレジスタの新しい上位バイトは常に＄００を含むからである。８ビットの値＄ｘｙおよび１６ビットの値＄００ｘｙはインデクスレジスタを修正しないインデクス付きアドレシングモード命令において実行アドレスを計算するために使用された時同じ結果を生じる。インデクスレジスタを修正しなかったかつ値＄ｘｙを含む８ビットのインデクスレジスタのみを使用した古いＣＰＵにおける全てのインデクス付きアドレシング操作は値＄００ｘｙを含む１６ビットのインデクスレジスタ全体を使用する新しいＣＰＵ１２における対応するインデクス付きアドレシング操作に対して同じ結果を生成する。したがって、いくつかの古い命令が８ビットのレジスタではなく１６ビットのレジスタを使用してもオブジェクトコードの互換性が維持される。
【００５０】
しかしながら、もしある顧客が新しい命令を使用して新しいソフトウェアを書くことを希望すれば、その顧客は１６ビットのインデクスレジスタ全体およびインデクス付きアドレシングモードにおいてＣＰＵによってアクセスできるメモリのテーブルのサイズの対応する増大の利益を受けることができる。該顧客はインデクスレジスタ３０４の上位バイトにもともと格納されていた＄００の値を修正するために図７に示される新しい命令を使用することができる。
【００５１】
本発明の別の実施例では、前記上位バイトが＄００のリセット値を有することを必要とせず、その代わりもしソフトウェアがそれを要求すれば前記上位バイトに＄００の値をユーザが書くことを要求することができる。例えば、インデクスレジスタ３０４を決して使用しないソフトウェアはインデクスレジスタ３０４に＄００の値を書く必要がないことになる。
【００５２】
図７は、テーブル形式で、新しいＣＰＵ１２におけるインデクスレジスタ（ハイ）２０５を修正可能な新しい命令の説明を示す。本発明の別の実施例ではさらに多くの、さらに少ない、あるいは異なる新しい命令を使用できる。本発明はいずれの新しい命令のタイプまたは機能に付いてなんらの制約または制限をも与えない。しかしながら、ユーザがインデクスレジスタの新しい上位バイトに格納された値を修正するために使用できる少なくとも１つの命令を持つことが望ましい。
【００５３】
新しいＣＰＵ１２におけるインデクスレジスタの上位バイトを修正する２つのタイプの新しい命令があることに注意を有する。第１のタイプの新しい命令は前記上位バイトのみを修正可能でありかつ下位バイトにはなんらの影響も持たない（例えば、前記ＰＵＬＨ命令）。第２のタイプの新しい命令は上位バイトおよび下位バイトの双方を変更可能である（例えば、ＡＩＸ，ＣＢＥＱ，ＬＤＨＸ，ＭＯＶおよびＴＳＸ命令）。
【００５４】
本発明は新しいＣＰＵ１２が古い命令をどのように実行するかに関して２つの制約のみを与える。すなわち、（１）古いＣＰＵにおいてインデクスレジスタ３０２を修正した古い命令に対しては、インデクスレジスタ（ロー）２０５は同様に振舞いかつ最後にはインデクスレジスタ３０２と同じ値を格納しオブジェクトコードの互換性を保持し、かつ（２）全てのインデクス付きアドレシングモード命令は、新しいものも古いものも同様に、全てのインデクス付きアドレシングモード命令を二重化する必要性を除去するためにインデクスレジスタ３０４の１６ビット全てを使用する。
【００５５】
本発明の回路構成の動作を説明する。
図１を参照すると、データ処理システム１０はＭＣＵファミリ内の１つの可能なＭＣＵを示している。同じファミリ内のＭＣＵは一般に異なるオンボード・ペリフェラルを持つから、データ処理システム１０の他の実施例はＲＯＭ２０を持たなくても良く、外部バスインタフェース２６を持たなくとも良く、かつＤＭＡ３０を持たなくとも良い。実際に、データ処理システムの他の実施例は図１の示されたものよりも少ない、多い、または異なるペリフェラルを持つことができる。
【００５６】
図１に示される本発明の実施例の動作の間に、システム統合セクション１４はデータ処理システム１０のための種々の機能を行なうために使用される。一般に、システム統合セクション１４はイネーブルおよびディスエーブル動作の双方に対し、タイミング制御を提供するために、そしてデータ処理システム１０の例外処理要求を達成するために複数の制御情報を提供する。システム統合セクション１４はバス３４を介してＣＰＵ１２と、前記複数の集積回路ピン３８を介して外部ユーザと、そして情報バス３２を介してデータ処理システム１０の残りの複数の構成要素の各々と直接インタフェースすることができる。
【００５７】
データ処理システム１０においては、ＤＭＡ３０はデータ処理システム１０の内部のメモリと複数のペリフェラル装置（図示せず）との間の直接のデータ通信を可能にする。ＤＭＡ３０はユーザが高速のメモリアクセス方法を要求する場合にデータ処理システム１０に対して任意選択的に実施できる。ダイレクトメモリアクセス回路の使用および実施はデータ処理技術において良く知られておりここではこれ以上詳細に説明しない。
【００５８】
タイマセクション２８はフリーランの１６ビットカウンタに基づく複数のタイミング機能を実行する。複数の集積回路ピン４８を介してイネーブルされた時、タイマセクション２８は入力捕捉機能、出力比較機能、リアルタイム割込、または適切に動作するコンピュータのウォッチドッグ機能を行なうよう動作することができる。これらの機能の各々の実施および使用はデータ処理技術において良く知られておりかつここではこれ以上詳細に説明しない。タイマセクション２８の修正された形式のものはアメリカ合衆国、テキサス州、オースチンのモトローラ・インコーポレイテッドから商業的に入手可能なモトローラ社のＭＣ６８ＨＣ１１型マイクロコントローラによって実施されている。
【００５９】
外部バスインタフェース２６は外部ユーザまたは外部ペリフェラル装置とデータ処理システム１０の間でアドレスおよびデータ値の受信および送信を制御する。外部バスインタフェース２６は複数のアドレスおよびデータ値を情報バス３２を介してデータ処理システム１０の残りの部分に通信する。
【００６０】
ポート論理回路２４は前記複数の集積回路ピン４４の各々のものの動作および機能を制御する。ポート論理回路２４は第１の動作モードにおいて汎用目的の入力／出力ピンとして機能するように前記複数の集積回路ピン４４を構築することができる。第２の動作モードにおいては、ポート論理回路２４は前記複数の集積回路ピンの各々を多重化されたアドレスおよびデータ情報を通信するために使用できる。
【００６１】
ＲＡＭ１８，ＲＯＭ２０および他のメモリ２２はアセンブリコードのソフトウェア命令、データ値およびアドレス値のような情報を記憶するために使用でき、これらの情報は次にデータ処理システム１０によって使用できる。
【００６２】
シリアルセクション１６はデータ処理システム１０と外部ユーザまたは外部ペリフェラル装置との間でシリアルなデジタルデータを通信する。シリアルなデジタルデータおよび適切な制御信号は前記複数の集積回路ピン４０を介して通信される。
【００６３】
図２を参照すると、新しいＣＰＵ１２がさらに詳細に示されている。ＣＰＵ１２は基本的には３つの主な部分に分割されている。これらの３つの主な部分は制御ユニット５４、実行ユニット５６、およびシーケンサ５８を含む。シーケンサ５８は、制御ＰＬＡ６０と組合わせて、新しいＣＰＵ１２の現在の状態および情報バス３２によって受信された現在の命令の双方に基づき新しいＣＰＵ１２の次の状態を決定することにより状態マシン（ｓｔａｔｅ  ｍａｃｈｉｎｅ）として機能する。
【００６４】
本発明のいくつかの実施例ではデコーダ５９を含むことができる。デコーダ５９は（図示のごとく）シーケンサ５８の一部とすることができ、あるいはシーケンサ５８を制御ＰＬＡ６０の間に結合することができ、あるいは情報バス３２とシーケンサ５８との間に結合することもできる。デコーダ５９は情報バス３２を介して転送された命令のオペコードをデコードするために使用される。もしデコーダ５９がシーケンサ５８に含まれていれば、デコーダ５９の出力は「シーケンサ出力信号」を使用して制御ＰＬＡ６０に転送される。
【００６５】
新しいＣＰＵ１２の動作の間は、シーケンサ５８は情報バス３２から命令を受信する。シーケンサ５８は命令が制御ユニット５４に提供されるべき順序を決定する。命令は「シーケンサ出力信号」を介して制御ユニット５４の制御ＰＬＡ６０に与えられる。命令を受信すると、制御ＰＬＡ６０は複数の制御ＰＬＡ信号をランダム制御論理６２に提供する。制御ＰＬＡ信号の論理状態は制御ＰＬＡ６０によって受信されるシーケンサ出力信号の論理状態によって決定される。
【００６６】
制御ＰＬＡ６０はまた新しいＣＰＵ１２の現在の内部状態に関するおよび現在の命令を実行する上で行なわれるべきプログレスに関するフィードバック情報を提供するためにシーケンサ５８にシーケンス入力信号を提供する。ランダム制御論理６２は前記複数の制御ＰＬＡ信号の各々にタイミング制御情報を提供する。ランダム制御論理６２は複数のタイムド制御信号を実行ユニット５６に出力する。
【００６７】
制御ＰＬＡ６０は、任意のタイプのメモリまたは任意のタイプのプログラマブルロジックアレイを含む、任意のタイプのプログラマブルアレイとして実施できる。制御ＰＬＡ６０はランダム論理として実施することもできかつランダム制御論理６２と組合わせることができる。
【００６８】
プログラマブルロジックアレイ（ＰＬＡ）は一般にリードオンリメモリ（ＲＯＭ）よりも小さな半導体領域を有するが、ＰＬＡをカスタム化するよりはＲＯＭをカスタム化するほうがより簡単でありかつ高速である。同じ制御ＰＬＡ６０は新しいＣＰＵ１２の異なるバージョンに対して使用されるから、半導体領域を節約するために制御ＰＬＡ６０をＰＬＡとして実現するのが有利であろう。
【００６９】
前記タイムド制御信号は実行ユニット５６を制御するために使用される。実行ユニット５６は、前記タイムド制御信号の制御のもとに命令を実行するのに必要な各機能を達成する。情報バス３２は実行ユニット５６に位置するレジスタを読取りかつ該レジスタに書込むためのアドレスおよびデータパスとして使用される。実行ユニット５６は新しいＣＰＵ１２の現在の状態を示すために複数のステータス信号をランダム制御論理６２に提供する。ランダム制御論理６２は前記タイムド制御信号の論理状態を決定するのを助けるためにステータス信号の論理状態を使用する。
【００７０】
一般に、新しいＣＰＵ１２は命令を受信しかつデコードし、複数の制御信号を提供し、該複数の制御信号に応答して命令を実行し、かつ次に新しい命令が受信できかつ実行できるように前記命令の実行に関するフィードバック情報を提供する。
【００７１】
図３を参照すると、実行ユニット５６の一部がより詳細に示されている。前記タイムド制御信号がどのように実行ユニット５６を制御するかについての詳細は示されていない。しかしながら、前記タイムド制御信号は従来技術と同様の方法で実行ユニット５６を制御するために使用される。すなわち、タイムド制御信号は種々のバスにわたる、および種々のレジスタ、バッファ、および図３に示された他の回路へのおよびこれらの回路からの情報の流れを制御するために使用される。
【００７２】
インデクス付きアドレシングモードについて次に説明する。多くのＣＰＵはインデクス付きアドレシングモードで命令を実行する能力を持っている。インデクス付きアドレシングモードはＣＰＵによっていくらか変わり得るが、いくつかの一般的な原理はかなり標準的なものとなっている。インデクス付きアドレシングモードはしばしばメモリに記憶された情報のテーブルを好適にアクセスする方法として使用される。
【００７３】
一般に、インデクス付きアドレシングモードにおいては、インデクスレジスタに記憶された値はメモリの順次的なロケーションに格納されたデータ値のテーブルの始めに対するポインタとして使用される。一般に命令の一部として含まれる、オフセット値が次に前記データ値のテーブル内の１つの特定のロケーションをアクセスするためにインデクスレジスタ内の前記値に加算される。あるいは、前記オフセット値はデータ値のテーブルの始めに対するポインタとして使用でき、かつインデクスレジスタは該テーブルへの変位（ｄｉｓｐｌａｃｅｍｅｎｔ）を含むことができる。インデクスレジスタが使用される種々の他の方法がある。インデクス付きアドレシングモードは当業者によく知られている。
【００７４】
しばしば、前記インデクス付きアドレシングモード内で種々のタイプのインデクス付きアドレスが存在する。説明の都合上、これらの種々のタイプのインデクス付きアドレシング（ｉｎｄｅｘｅｄ  ａｄｄｒｅｓｓｉｎｇ）はインデクス付きアドレシングモード内で「サブモード（ｓｕｂ−ｍｏｄｅｓ）」と称される。一例として、ＭＣ６８ＨＣ０５型マイクロコントローラのインデクス付きアドレシングモード内の種々の「サブモード」に付き説明する。ＭＣ６８ＨＣ０５型マイクロコントローラはインデクス付きアドレシングモード内で３つの「サブモード」を有する。すなわち、（１）オフセットなし、（２）８ビットのオフセット、および（３）１６ビットのオフセット、である。ＭＣ６８ＨＣ０５型マイクロコントローラのインデクス付きアドレシングモード内のこれらの３つのサブモードに付き説明する。
【００７５】
前記第１の「オフセットなし（ｎｏ  ｏｆｆｓｅｔ）」サブモードにおいては、インデクスレジスタの値は直接命令に対する実効アドレスとして使用される。したがって、この第１のサブモードにおいては、各命令は１バイトの命令であり、この場合この１バイトは命令のオペコードである。
【００７６】
前記第２の「８ビットオフセット」サブモードにおいては、８ビットのオフセット値が命令の一部として含まれている。この８ビットのオフセット値は前記命令に対する実効アドレスを発生するためにインデクスレジスタにある値に加算される。したがって、前記第２のサブモードにおいては、各命令は２バイト命令であり、この場合第１のバイトは命令のオペコードであり、かつ第２のバイトは８ビットのオフセット値である。
【００７７】
前記第３の「１６ビットオフセット」サブモードにおいては、１６ビットのオフセット値が命令の一部として含まれている。この１６ビットのオフセット値は前記命令に対する実効アドレスを発生するためにインデクスレジスタにある値に加算される。したがって、第３のサブモードにおいては、各命令は３２バイトの命令であり、この場合最初のバイトは命令のオペコードであり、かつ第２および第３のバイトは一緒になって１６ビットのオフセット値となる。
【００７８】
１つの実施例においては、新しいＣＰＵ１２は前記ＭＣ６８ＨＣ０５型マイクロコントローラと同様にインデクス付きアドレシングモード内で同じ３つのサブモードを有しており、かつ新しいＣＰＵ１２によって実行される古い命令は前記ＭＣ６８ＨＣ０５型マイクロコントローラからの全ての命令を有する。本発明の別の実施例ではインデクス付きアドレシングモード内でより多くの、より少ない、または異なるサブモードを使用することができる。さらに、本発明の別の実施例では異なる様式でインデクス付きアドレシングモードを規定することができる。実際に、本発明は命令に対する実効アドレスの計算の一部としてレジスタの値を使用する任意のアドレシングモードに対して使用できる。
【００７９】
インデクス付きアドレシングモードを使用する命令の間における実行ユニット５６の動作を説明する（図３を参照）。実効アドレスを発生するために使用されるステップのみを詳細に説明する。プログラムカウンタ（ハイ）／インクリメンタレジスタ２００およびプログラムカウンタ（ロー）レジスタ２０６の増分のような、他のステップもインデクス付きアドレシングモードを使用する命令の間に実行される。しかしながら、これら他のステップは詳細には説明しない。
【００８０】
前記第１の「オフセットなし」サブモードにおいては、インデクスレジスタの値が直接命令のための実効アドレスとして使用される。該命令が古い命令であるかあるいは新しい命令であるかにかかわりなく、インデクスレジスタ３０４の両方のバイトまたは部分が使用され、すなわちインデクスレジスタ（ハイ）２０５およびインデクスレジスタ（ロー）２１２が使用される。
【００８１】
インデクスレジスタ（ロー）２１２は情報バス３２に対して直接のアクセスを持たないから、前記第１のステップはインデクスレジスタ（ロー）２１２に格納された値を一時アドレスレジスタ（ロー）２１８に転送することである。バス２０２は一時アドレスレジスタ（ロー）２１８への唯一の入力パスであるから、インデクスレジスタ（ロー）２１２に格納された値をＡＬＵ２２４を通って導くことが必要である。インデクスレジスタ（ロー）２１２に格納された値はバス２０４を渡ってＡＬＵ２２４の入力に転送される。バス２１６に含まれる各信号は論理レベル“１”にプリチャージされる。ＡＬＵ２２４はバス２１６からの全ての２進“１”を入力しかつ次にその論理レベルを全て２進“０”に反転する。したがって、ＡＬＵ２２４への１つの入力はインデクスレジスタ（ロー）２１２からの値であり、かつＡＬＵ２２４への他の入力はゼロである。ＡＬＵ２２４はしたがってゼロをインデクスレジスタ（ロー）２１２からの値に加算する。次にＡＬＵ２２４はその加算の結果をバス２０２を通って一時アドレスレジスタ（ロー）２１８に転送する。
【００８２】
次に一時アドレスレジスタ（ロー）２１８に格納された値はローバス２３８を介してアドレスバス（ロー）バッファ２４０に転送される。同時に、インデクスレジスタ（ハイ）２０５に格納された値はハイバス２３２を介してアドレスバス（ハイ）バッファ２３４に転送される。したがって、実効アドレスは１６ビットのアドレスであり、これはインデクスレジスタ（ハイ）２０５からの値とインデクスレジスタ（ロー）２１２からの値との連結により形成される。１６ビットの実効アドレスは情報バス３２を介して新しいＣＰＵ１２から転送される。
【００８３】
前記第２の「８ビットオフセット」サブモードにおいては、８ビットのオフセット値が命令の一部として含まれている。この８ビットのオフセット値は命令のための実効アドレスを発生するためにインデクスレジスタ３０４にある値に加算される。その命令が古い命令であるかあるいは新しい命令であるかにかかわりなく、インデクスレジスタ３０４の両方のバイトまたは部分が使用され、すなわちインデクスレジスタ（ハイ）２０５およびインデスクレジスタ（ロー）２１２の双方が使用される。
【００８４】
命令の一部として含まれていた、８ビットのオフセットは情報バス３２からデータバス２４４に転送され、次にデータバスインタフェース２２０に、次にバス２１６に、そして次にＡＬＵ２２４の入力に転送される。その間に、インデクスレジスタ（ロー）２１２に格納された値はバス２０４を介してＡＬＵ２２４の他の入力に転送される。ＡＬＵ２２４は８ビットのオフセットおよびインデクスレジスタ（ロー）２１２からの値を一緒に加算し、かつ次にその結果をバス２０２を介して一時アドレスレジスタ（ロー）２１８に転送する。内部キャリー信号（図示せず）がＡＬＵ２２４によって発生される。前記内部キャリー信号の論理状態は前記加算の結果キャリーアウトになったか否かによって決定される。内部キャリー信号の論理状態は新しいＣＰＵ１２によって内部的に記憶される。
【００８５】
次に、内部キャリー（２進０または２進１）がインデクスレジスタ（ハイ）２０５に記憶された値に加算される。インデクスレジスタ（ハイ）２０５に記憶された値はバス２０４を介してＡＬＵ２２４の入力に転送される。バス２１６に含まれる各信号は論理レベル１にプリチャージされる。ＡＬＵ２２４はバス２１６からの全ての２進１を入力しかつ次にその論理レベルを全て２進ゼロに反転する。したがって、ＡＬＵ２２４への１つの入力はインデクスレジスタ（ハイ）２０５からの値でありかつＡＬＵ２２４への他の入力はゼロである。ＡＬＵ２２４は次に前記内部キャリーをゼロにおよびインデクスレジスタ（ハイ）２０５からの値に加算する。ＡＬＵ２２４は次にその結果をバス２０２を介して一時アドレスレジスタ（ハイ）２１４に転送する。
【００８６】
次に一時アドレスレジスタ（ハイ）２１４の内容がハイバス２３２を介してアドレスバス（ハイ）バッファ２３４に転送される。同時に、一時アドレスレジスタ（ロー）２１８の内容がローバス２３８を介してアドレスバス（ロー）バッファ２４０に転送される。したがって、実効アドレスは１６ビットのアドレスであり、これは８ビットのオフセットをインデクスレジスタ（ハイ）２０５に格納された値とインデクスレジスタ（ロー）２１２に格納された値との連結したものに加えることによって形成される。この１６ビットの実効アドレスは情報バス３２を介して新しいＣＰＵ１２から転送される。
【００８７】
前記第３の「１６ビットのオフセット」サブモードにおいては、１６ビットのオフセット値が命令の一部として含まれている。この１６ビットのオフセット値はその命令に対する実効アドレスを発生するためにインデクスレジスタの値に加算される。その命令が古い命令であるかあるいは新しい命令であるかにかかわりなく、インデクスレジスタ３０４の両方のバイトまたは部分が使用され、すなわちインデクスレジスタ（ハイ）２０５およびインデクスレジスタ（ロー）２１２の双方が使用される。
【００８８】
命令の一部として含まれていた、１６ビットのオフセットの上位バイトは情報バス３２からデータバス２４４に、次にデータバスインタフェース２２０に、次にバス２１６に、そして次にＡＬＵ２２４に転送される。バス２１４に含まれる各信号は論理レベル１にプリチャージされる。ＡＬＵ２２４はバス２０４からの全ての２進１を入力しかつ次にその論理レベルを全て２進ゼロに反転する。したがって、ＡＬＵ２２４への１つの入力は１６ビットのオフセットの上位バイトであり、そしてＡＬＵ２２４への他の入力はゼロである。ＡＬＵ２２４は次に１６ビットのオフセットの上位バイトをゼロに加算し、かつその結果をバス２０２を介して一時アドレスレジスタ（ハイ）２１４に転送する。
【００８９】
次に、命令の一部として含まれていた、１６ビットオフセットの下位バイトは情報バス３２からデータバス２４４に、次にデータバスインタフェース２２０に、次にバス２１６に、そして次にＡＬＵ２２４の入力に転送される。その間に、インデクスレジスタ（ロー）２１２に格納された値はバス２０４によってＡＬＵ２２４の他の入力に転送される。ＡＬＵ２２４は前記１６ビットのオフセットの下位バイトおよびインデクスレジスタ（ロー）２１２からの値を一緒に加算し、かつ次のその結果をバス２０２を介して一時アドレスレジスタ（ロー）２１８に転送する。内部キャリー信号（図示せず）がＡＬＵ２２４によって発生される。内部キャリー信号の論理状態は前記加算によってキャリーアウトを生じたか否かによって決定される。内部キャリー信号の論理状態は新しいＣＰＵ１２によって内部的に記憶される。
【００９０】
次に、内部キャリー（２進０または２進１）および１６ビットのオフセットの上位バイトがインデクスレジスタ（ハイ）２０５に格納された値に加算される。インデクスレジスタ（ハイ）２０５に格納された値はバス２０４を介してＡＬＵ２２４の入力に転送される。同様に、一時アドレスレジスタ（ハイ）２１４に格納された、１６ビットのオフセットの上位バイトはバス２１６によってＡＬＵ２２４の他の入力に転送される。したがって、ＡＬＵ２２４への１つの入力はインデクスレジスタ（ハイ）２０５からの値であり、かつＡＬＵ２２４への他の入力は１６ビットのオフセットの上位バイトである。ＡＬＵ２２４は次に前記内部キャリー、インデクスレジスタ（ハイ）２０５からの値、および１６ビットのオフセットの上位バイトを一緒に加算する。ＡＬＵ２２４は次にその結果をバス２０２を介して一時アドレスレジスタ（ハイ）２１４に転送する。
【００９１】
次に、一時アドレスレジスタ（ハイ）２１４の内容がハイバス２３２を介してアドレスバス（ハイ）バッファ２３４に転送される。同時に、一時アドレスレジスタ（ロー）２１８の内容がローバス２３８を介してアドレスバス（ロー）バッファ２４０に転送される。したがって、実効アドレスは１６ビットのアドレスでありこれは１６ビットのオフセットをインデクスレジスタ（ハイ）２０５に記憶された値とインデクスレジスタ（ロー）２１２に記憶された値との連結に対して加算することによって形成される。１６ビットの実効アドレスは情報バス３２をを介して新しいＣＰＵ１２から転送される。
【００９２】
［概要およびいくつかの別の実施例］
要約すると、本発明は新しいＣＰＵ１２が拡張可能なインデクスレジスタ３０４を備えて設計できるようにする。新しいＣＰＵ１２は８ビットのインデクスレジスタを有する古いＣＰＵとオブジェクトコードの互換性があり、しかも新しいＣＰＵ１２のインデクスレジスタは新しい命令が使用される場合に効果的に１６ビットに拡張できる。その結果、ユーザは古いＣＰＵ対して書かれかつ８ビットのインデクスレジスタの機能を有するアセンブリコードのソフトウェアを使用するか、または新しいＣＰＵ１２に対しかつ１６ビットのインデクスレジスタの機能を有する新しいアセンブリコードのソフトウェアを書くかを選択することができるようになる。本発明が特定の実施例に関して図示されかつ説明されたが、当業者にはさらなる修正および改善を成すことができる。例えば、本発明の別の実施例においては、データ処理システム１０、新しいＣＰＵ１２、および実行ユニット５６に対する別のアーキテクチャを使用できる。図１、図２および図３に示されたアーキテクチャは使用できる可能なアーキテクチャに過ぎない。例えば、実行ユニット５６は任意の数のまたは任意のタイプのレジスタを持つことができる。同様に、本発明は任意のサイズのレジスタに拡張可能とするために使用できる。例えば、１６ビットのレジスタは別の新しいＣＰＵ１２においては３２ビットに拡張できる。また、実行ユニット５６は異なるバスサイズまたは異なるバスのルーティングを持つことができる。本発明はインデクスレジスタ以外のタイプのレジスタと共に使用することもできる。さらに、本発明は、単に中央処理ユニット（ＣＰＵ）におけるのみならず、任意のタイプのデジタルデータ処理装置においてレジスタを拡張可能にするために使用できる。
【００９３】
本発明とは独立に、データ処理システム１０の性能は独立的にオブジェクトコードの互換性に影響を与える種々の技術によって増大することもできる。例えば、本発明を使用することに加えて、いくつかのデータ処理システム１０はさらに新しいＣＰＵ１２内で１つまたはそれ以上の命令を実行するのに必要なサイクルの数を低減することによりさらに性能を高めることができる。もし新しいＣＰＵ１２が１つまたはそれ以上の命令を実行するのに必要なサイクル数を変えれば、古いＣＰＵに対するタイミングに敏感なアセンブリ言語のソフトウェアも修正する必要があるかもしれない。したがって、本発明は古いＣＰＵおよび新しいＣＰＵ１２の間でオブジェクトコードの互換性を維持するが、新しいＣＰＵ１２に対する他の性能の改善は本発明と無関係に、いくつかの実施例においてオブジェクトコードの互換性に影響を与えるようにすることができる。
【００９４】
したがって、この発明は説明された特定の形式に限定されるものではなくかつ添付の特許請求の範囲においてこの発明の精神および範囲から離れることのない全ての修正をカバーすることを意図していることが理解されるべきである。
【００９５】
【発明の効果】
以上のように、本発明によれば、最小限の回路およびコストを加えるのみで古いＣＰＵとのオブジェクトコードの互換性を保った状態でより強力なＣＰＵを設計することが可能になる。
【図面の簡単な説明】
【図１】本発明の１実施例に係わるデータ処理システム１０を示すブロック図である。
【図２】本発明の１実施例による図１のシステムの中央処理ユニット（ＣＰＵ）１２を示すブロック図である。
【図３】本発明の１実施例に係わるシステムの図２に示される実行ユニット５６の一部を示すブロック図である。
【図４】８ビットの従来技術のインデクスレジスタ３０２の構成を示すブロック図である。
【図５】インデクスレジスタ（ハイ）回路２０５およびインデクスレジスタ（ロー）回路２１２の連結により形成される１６ビットのインデクスレジスタ３０４の構成を示すブロック図である。
【図６】インデクスレジスタ部２０５および２１２に対して古いおよび新しい命令のグループが与える影響をテーブル形式で示す説明図である。
【図７】インデクスレジスタ（ハイ）２０５を修正可能な新しい命令の内容をテーブル形式で示す説明図である。
【符号の説明】
１０  データ処理システム
１２  中央処理ユニット
１４  システム統合セクション
１６  シリアルセクション
１８  ランダムアクセスメモリ（ＲＡＭ）
２０  リードオンリメモリ（ＲＯＭ）
２２  代替メモリ
２４  ポートロンリ回路
２６  外部バスインタェース
２８  タイマセクション
３０  ダイレクトメモリアクセス（ＤＭＡ）
３２  情報バス
５４  制御ユニット
５６  実行ユニット
５８  シーケンサ
５９  デコーダ
６０  制御プログラマブルロジックアレイ（制御ＰＬＡ）
６２  ランダム制御論理
２００  プログラムカウンタ（ハイ）／インクリメンタ
２０４，２１６  バス
２０５  インデクスレジスタ（ハイ）
２０６  プログラムカウンタ（ロー）
２０８  スタックポインタレジスタ
２１０  アキュムレータ
２１２  インデクスレジスタ（ロー）
２１４  一時アドレスレジスタ（ハイ）
２１８  一時アドレスレジスタ（ロー）
２２０  データバスインフェース
２２２  乗数発生論理
２２４  演算論理ユニット（ＡＬＵ）
２２６  フラグ
２２８  条件符号レジスタ
２３０  シフタ
２３２  ハイバス
２３４  アドレスバス（ハイ）バッファ
２３６  アドレスバス（ハイ）
２３８  ローバス
２４０  アドレスバス（ロー）バッファ
２４２  アドレスバス（ロー）
２４４  データバス
【図１】
0003616402.tif 000002
【図２】
0003616402.tif 000003
【図３】
0003616402.tif 000004
【図４】
0003616402.tif 000005
【図５】
0003616402.tif 000006
【図６】
0003616402.tif 000007
【図７】
0003616402.tif 000008