(57)【特許請求の範囲】
【請求項１】
少なくとも１つの特別命令コード識別子を含む１セットの命令コード識別子が割り当てられている中央処理装置（３０）であって、記憶装置（２０）の第１メモリサイズを有する第１メモリ領域（３７０，３８０）をアドレス指定するために備えられている中央処理装置（３０）を、記憶装置（２０）に関してアドレス指定のために制御する制御方法であって、
記憶装置（２０）から中央処理装置（３０）へのデータ通信を、中央処理装置（３０）と接続されている支援手段（４０）によって監視するステップ（６１５）を含み、
記憶装置（２０）から中央処理装置（３０）へのデータ通信が、特別命令コード識別子（３１０）を含む場合は、
記憶装置（２０）の第２メモリ領域（２０）に定義されている新しいアドレスを、支援手段（４０）によって生成するステップ（６３０）と、
中央処理装置（３０）の命令セットからのジャンプ命令が割り当てられているあらかじめ定義された命令コード識別子を、支援手段（４０）によって、中央処理装置（３０）へ提供するステップ（６４５）と、
宛先アドレスと共に新しいアドレスを生成するコード記述子（３４０）を、支援手段（４０）によって管理するステップ（６６０）とを含み、
上記第２メモリ領域（２０）は、第１メモリサイズよりも大きい第２メモリサイズを有しており、
上記あらかじめ定義された命令コード識別子は、第１メモリ領域（３７０，３８０）に関する宛先アドレスを含んでいることを特徴とする制御方法。
【請求項２】
少なくとも１つの特別命令コード識別子を含む１セットの命令コード識別子（２８０，３１０）を有する中央処理装置（３０）であって、記憶装置（２０）の第１メモリサイズを有する第１メモリ領域（３７０，３８０）をアドレス指定するために備えられている中央処理装置（３０）と、
記憶装置（２０）から中央処理装置（３０）へのデータ通信を監視するために、中央処理装置（３０）と接続されている支援手段（４０）とを備える制御装置であって、
上記支援手段（４０）は、
記憶装置（２０）から中央処理ユニット（３０）へのデータ通信が、特別命令コード識別子（３１０）を含む場合に、
記憶装置（２０）の第２メモリ領域（２０）に定義されている新しいアドレスを生成するため、
中央処理装置（３０）の命令セットからのジャンプ命令が割り当てられているあらかじめ定義された命令コード識別子を、中央処理装置（３０）へ提供するため、および、
宛先アドレスと共に新しいアドレスを生成するコード記述子（３４０）を管理するために備えられており、
上記第２メモリ領域（２０）は、第１メモリサイズよりも大きい第２メモリサイズを有しており、
上記あらかじめ定義された命令コード識別子は、第１メモリ領域（３７０，３８０）に関する宛先アドレスを含んでいることを特徴とする制御装置。
【請求項３】
上記一連の命令コード識別子（２８０，３１０）は、複数の命令コード識別子を備え、上記複数の命令コード識別子には、命令が割り当てられており、上記命令は、中央処理装置（３０）の命令セット（２９０）を決定し、上記特別命令コード識別子（３１０）には、中央処理装置（３０）の命令セット（２９０）からの命令は割り当てられていないことを特徴とする請求項２に記載の制御装置。
【請求項４】
コード記述子を蓄積するための外部レジスタをさらに備える制御装置であって、上記外部レジスタは、中央処理装置（３０）の外側に配置されており、上記コード記述子は、第２メモリ領域（２０）内の第１メモリ領域（３７０）の位置を定義するために備えられており、
上記支援手段（４０）は、
記憶装置から中央処理装置へのデータ通信が、特別命令コード識別子を含む場合に、
コード記述子（３４０）の値を、新しいアドレスが第１メモリ領域に含まれているように設定するため、および、
第１メモリ領域（３７０）に関する宛先アドレスを、第１メモリ領域（３７０）に関する宛先アドレレスが、第２メモリ領域に関する新しいアドレスに対応するように設定するために備えられていることを特徴とする請求項２または３に記載の制御装置。
【請求項５】
中央処理装置（３０）に備えられており、第１メモリ領域（３７０）に関するコードアドレスを蓄積しているプログラムカウンタ（２４０）と、
中央処理装置（３０）から記憶装置（２０）へのデータ通信を監視するために、中央処理装置（３０）と接続されている装置（５０）とをさらに備える制御装置であって、
上記装置（５０）は、
中央処理装置（３０）から記憶装置（２０）へのデータ通信が、第１メモリ領域に関するコードアドレスを含んでいる場合に、
第２メモリ領域（２０）に関する新しいアドレスを得ることを目的として、コードアドレスを、コード記述子（３４０）の内容に基づいて操作するため、および、
記憶装置（２０）にアクセスすることを目的として、コードアドレスを、形を変更して記憶装置（２０）へ転送するために備えられていることを特徴とする請求項４に記載の制御装置。
【請求項６】
中央処理装置（３０）は、次に処理する命令コード識別子を要求するために供給されるあらかじめ定義された命令コード識別子に応じて、
宛先アドレスを、中央処理装置（３０）のプログラムカウンタ（２４０）に蓄積するため、および、
宛先アドレスを、中央処理装置（３０）から記憶装置（２０）へのデータ通信の範囲内で出力するために備えられていることを特徴とする請求項２から５のいずれか１項に記載の制御装置。
【請求項７】
上記中央処理装置（３０）は、スタックメモリ（２７０）と、スタックメモリポインタ（２３０）とをさらに備え、上記スタックメモリポインタ（２３０）は、スタックメモリ（２７０）の位置を示すものであって、上記位置は、現在、中央処理装置（３０）によって、スタックメモリ（２７０）からデータを取り出し、または、スタックメモリ（２７０）へデータを追加できる位置のことであり、
上記支援手段（４０）は、さらに少なくとも１つの他のあらかじめ定義された命令コード識別子を、中央処理装置（３０）へ供給するように適合されており、中央処理装置（３０）の命令セットからの命令は、スタックメモリポインタにおけるスタックメモリに値を充填するため、この少なくとも１つの他の命令コード識別子に割り当てられており、上記値は、第２メモリ領域に関する現在のアドレスに依存しており、上記現在のアドレスに、特別命令コード識別子に続く命令コード識別子が割り当てられていることを特徴とする請求項２から６のいずれか１項に記載の制御装置。
【請求項８】
上記宛先アドレスは、新しいアドレスのより下位の部分であり、上記記述子は、新しいアドレスのより上位の部分であることを特徴とする請求項２から７のいずれか１項に記載の制御装置。
【請求項９】
少なくとも１つの特別命令コード識別子を含む１セットの命令コード識別子が割り当てられている中央処理装置（３０）であって、記憶装置（２０）の第１メモリサイズを有する第１メモリ領域（３７０，３８０）をアドレス指定するために備えられている中央処理装置（３０）を、記憶装置（２０）に関するアドレス指定のために制御する制御方法であって、
記憶装置（２０）から中央処理装置（３０）へのデータ通信と、中央処理装置（３０）から記憶装置（２０）へのデータ通信とを、中央処理装置（３０）と接続されている支援手段（４０）によって監視（４２０）するステップを含み、
記憶装置（２０）から中央処理装置（３０）へのデータ通信が、特別命令コード識別子を含む場合は、
記憶装置（２０）の第２メモリ領域（２０）に定義されている新しいアドレスを、支援手段（４０）によって生成するステップ（４４０）と、
中央処理装置（３０）の命令セットからのジャンプ命令が割り当てられているあらかじめ定義された命令コード識別子を、支援手段（４０）によって、中央処理装置（３０）へ供給するステップ（４４５）と、
第２メモリ領域に関する操作されたアドレスを得ることを目的として、第１メモリ領域（３８０）に関連して定義されているアドレスを、中央処理装置（３０）から記憶装置（２０）へのデータ通信の範囲内で、新しいアドレスに基づいて、支援手段（４０）によって操作するステップ（４５５）とを含み、
上記第２メモリ領域（２０）は、第１メモリサイズよりも大きい第２メモリサイズを有していることを特徴とする制御方法。
【請求項１０】
少なくとも１つの特別命令コード識別子を含む１セットの命令コード識別子（２８０，３１０）を有する中央処理装置（３０）であって、記憶装置（２０）の第１メモリサイズを有する第１メモリ領域（３７０，３８０）をアドレス指定するために備えられている中央処理装置（３０）と、
記憶装置（２０）から中央処理装置（３０）へのデータ通信と、中央処理装置（３０）から記憶装置（２０）へのデータ通信とを監視するために、中央処理装置（３０）と接続されている支援手段（４０）とを備える制御装置であって、
上記支援手段は、
記憶装置（２０）から中央処理装置（３０）へのデータ通信が、特別命令コード識別子を含む場合に、
記憶装置（２０）の第２メモリ領域（３８０）に定義されている新しいアドレスを生成するため、
中央処理装置（３０）の命令セットからの命令が割り当てられているあらかじめ定義された命令コード識別子を、中央処理装置（３０）へ提供するため、および、
第２メモリ領域に関する操作されたアドレスを得ることを目的として、第１メモリ領域（３８０）に関連して定義されているアドレスを、中央処理装置（３０）から記憶装置（２０）へのデータ通信の範囲内で、新しいアドレスに基づいて操作するために備えられており、
上記第２メモリ領域（３８０）は、第１メモリサイズよりも大きい第２メモリサイズを有していることを特徴とする制御装置。
【請求項１１】
上記一連の命令コード識別子（２８０，３１０）は、複数の命令コード識別子を備え、上記複数の命令コード識別子には、命令が割り当てられており、上記命令は、中央処理装置（３０）の命令セット（２９０）を決定し、上記特別命令コード識別子（３１０）には、中央処理装置（３０）の命令セット（２９０）からの命令は割り当てられていないことを特徴とする請求項１０に記載の制御装置。
【請求項１２】
上記あらかじめ定義された命令コード識別子は、中央処理装置（３０）の命令セット（２９０）の書き込み命令または読み出し命令に割り当てられていることを特徴とする請求項１０または１１に記載の制御装置。
【請求項１３】
上記命令は、第１メモリ領域（３８０）に関するアクセスアドレスに関連付けられており、上記アクセスアドレスは、新しいアドレスに対応しており、
上記支援手段（４０）は、第１メモリ領域（３８０）に関連して規定されているアドレスを、中央処理装置（３０）から記憶装置（２０）へのデータ通信の範囲内で操作する場合に、
上記アドレスを、新しいアドレスの残りの部分に補足するために備えられていることを特徴とする請求項１０から１２のいずれか１項に記載の制御装置。
【請求項１４】
上記命令は、第１メモリ領域（３８０）に関するアクセスアドレスに関連付けられており、
上記支援手段（４０）は、第１メモリ領域（３８０）に関連して規定されているアドレスを、中央処理装置から記憶装置（２０）へのデータ通信の範囲内で操作する場合に、
上記アドレスを、新しいアドレスに置き換えるために備えられていることを特徴とする請求項１０から１３のいずれか１項に記載の制御装置。
【請求項１５】
上記命令は、さらに相対値に関連付けられており、
上記支援手段（４０）は、操作されたアドレスに相対値を加算するために備えられている、請求項１３または１４に記載の制御装置。
【請求項１６】
第２メモリ領域（２０）内の第１メモリ領域（３８０）の位置を示すために備えられているアドレス（３３０）を蓄積するために、中央処理装置（３０）の外側に備えられている外部レジスタと、
中央処理装置から記憶装置（２０）へのデータ通信を監視するために、中央処理装置（３０）と接続されている装置（５０）とをさらに備える制御装置であって、
上記装置（５０）は、
中央処理装置（３０）から記憶装置（２０）へのデータ通信が、第１メモリ領域（３８０）に関して定義されているアドレスを含んでいる場合に、
第２メモリ領域（２０）に関する対応するアドレスを得ることを目的として、上記アドレスを、外部レジスタ（３３０）の内容に基づいて操作するため、および、
記憶装置（２０）にアクセスすることを目的として、上記アドレスを、形を変更して記憶装置（２０）へ転送するために備えられており、
上記支援手段（４０）は、
記憶装置（２０）から中央処理装置（３０）へのデータ通信が、特別命令コード識別子を含んでいる場合に、
外部レジスタ（３３０）の内容を、第１メモリ領域（３８０）が操作されたアドレスを含むように適合するために備えられており、
記憶装置（２０）から中央処理装置（３０）へのデータ通信が、複数の命令コード識別子の命令コード識別子を含み、この命令コード識別子に、中央処理装置（３０）の命令セット（２９０）についての読み出し命令または書き込み命令が割り当てられている場合、
上記命令コード識別子を、中央処理装置へ転送するため、および、
第１メモリ領域に関連して定義されているアドレスを、中央処理装置（３０）から記憶装置（２０）へのデータ通信に、変更せずに残しておくために備えられていることを特徴とする請求項１０から１５のいずれか１項に記載の制御装置。
【請求項１７】
上記特別命令コード識別子は、一般的なポインタの取り扱いのための命令に対応しており、上記一般的なポインタは、アドレス表示とアドレス指定方法表示とを含み、上記アドレス表示は、新しいアドレスに対応し、アドレス指定方法表示は、アドレス表示が第２メモリ領域に関連付けられていることを表示することを特徴とする請求項１０に記載の制御装置。
【請求項１８】
上記支援手段（４０）は、記憶装置（２０）から中央処理装置（３０）へのデータ通信が、特別命令コード識別子を含んでおり、上記特別命令コード識別子が、アドレス表示とアドレス指定方法表示とを含む一般的なポインタを取り扱うための命令に対応する場合に、
アドレス指定方法をチェックするために備えられており、
アドレス指定方法表示が、アドレス表示が第２メモリ領域に関連付けられていることを表示する場合、新しいアドレスの生成、あらかじめ定義された命令コード識別子の供給、および、アドレスの操作を実行するため、および、
アドレス指定方法表示が、アドレス表示が第１メモリ領域に関連付けられていることを表示する場合、アドレス表示に関連付けられている命令セット（２９０）からの命令が割り当てられている命令コード識別子を、中央処理装置へ供給するために備えられていることを特徴とする請求項１７に記載の制御装置。
【請求項１９】
上記中央処理装置（３０）は、少なくとも１つの内部レジスタ（２６０）を備え、支援手段（４０）は、少なくとも１つの内部レジスタの内容を決定するために、中央処理装置（３０）と接続されており、
新しいアドレスを生成する場合に、
少なくとも１つの内部レジスタの内容を決定するため、および、
少なくとも１つの内部レジスタの内容から、新しいアドレスを生成するために備えられていることを特徴とする請求項２から８および請求項１０から１８のいずれか１項に記載の制御装置。
【請求項２０】
少なくとも１つの外部データポインタレジスタ（３２５）を備える制御装置であって、
外部データポインタレジスタ（３２５）は、中央処理装置の外側に配置されており、
支援手段（４０）は、
新しいアドレスを生成する場合に、
少なくとも１つの外部データポインタレジスタ（３２５）の内容を決定するため、および、
少なくとも１つの外部データポインタレジスタ（３２５）の内容から、新しいアドレスを生成するために備えられていることを特徴とする請求項２から８および請求項１０から１８のいずれか１項に記載の制御装置。
【請求項２１】
上記支援手段（４０）は、
新しいアドレスを生成する場合に、
新しいアドレスを、少なくとも部分的に、命令コード識別子のアドレス部から生成するために備えられていることを特徴とする請求項２から８および請求項１０から２０のいずれか１項に記載の制御装置。
【請求項２２】
上記支援手段（４０）は、新しいアドレスを、少なくとも部分的に、命令コード識別子のアドレス部から生成する場合に、
中央処理装置（３０）に上記の、または、他の特別命令コード識別子を供給するために備えられており、
中央処理装置（３０）が、第１メモリ領域に関連付けられているコードアドレスが蓄積されているプログラムカウンタを備えており、
中央処理装置（３０）は、
次に処理する命令コード識別子を、コードアドレスを用いて要求するため、および、
中央処理装置（３０）に供給された特別命令コード識別子に応じて、プログラムカウンタ（２４０）を増やし、それ以外の場合は、中央処理装置（３０）に供給された特別命令コード識別子を無視するために備えられていることを特徴とする請求項２１に記載の制御装置。
【請求項２３】
上記支援手段（４０）は、記憶装置（２０）から中央処理装置（３０）へのデータ通信に、特別命令コード識別子（３１０）が含まれている場合、受信される割り込み信号を遮断するために備えられていることを特徴とする請求項２から８および請求項１０から２２のいずれか１項に記載の制御装置。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本発明は、例えばＡＳＩＣ（application specific integrated circuit；特定用途向け集積回路）やＳＯＣ（system on chip；１チップシステム）などに使用されている、例えばマイクロ制御装置やマイクロプロセッサなどの制御装置に関するものである。本発明は、特に、ＣＰＵ（central processing unit；中央処理装置）アーキテクチャを基礎とし、要求された記憶容量（Speichergroesse）のアドレス指定（Adressierung）を支援していない制御装置に関するものである。
【０００２】
マイクロプロセッサおよびマイクロ制御装置の開発により、性能がかなり向上したにもかかわらず、特定の技術分野、例えばチップカード分野、または、ＳＯＣ設計などの適用分野では、ＣＰＵを集積回路に集積する場合、新しいアーキテクチャよりも古いＣＰＵアーキテクチャが好まれている。その理由は、高性能の新しいＣＰＵアーキテクチャは、大抵の場合、それぞれ提供される適用分野にとってサイズが大きすぎて、その結果、タスク（Aufgaben）を実行することに関していえば、必要な電力が多すぎるし、チップに占める面積も大きすぎるからである。新しいより強力なＣＰＵアーキテクチャよりも古いＣＰＵアーキテクチャが好まれるほかの理由は、例えば８０５１、または、８０５２ベースのマイクロ制御装置アーキテクチャのような古いＣＰＵアーキテクチャのためのソフトウェア開発環境の方が優勢であり、大抵の場合、顧客にもより好まれているからである。また、古いＣＰＵアーキテクチャのためのソフトウェア開発者の方がより多くいるからである。
【０００３】
顧客により好まれている、古い制御装置アーキテクチャ用のソフトウェア開発環境の問題は、チップカード分野において特に重要なものである。なぜなら、この分野では、チップカード上で処理できる機械プログラム、および、実行可能な機械コードの生成は、チップ製造者の責任（Aufgabengebiet）ではなく、安全性の理由から、主要顧客、例えば銀行およびそのソフトウェア開発会社、および、各基本ソフトウェア開発会社の責任であるからである。さらに、必要な数が多いので、チップカード利用者にとっては、経費をできるだけ安く抑えるために、各要件に応じたチップカード制御装置を使用することが非常に重要である。従って、チップカード製造者は、ローエンドチップカード分野の要件を満たし、公知のソフトウェア開発環境を望む顧客の要望を満たすために、古いマイクロ制御装置アーキテクチャを基礎とするチップカードを提供できなければならない。
【０００４】
しかしながら、チップカードの製造において古い制御装置アーキテクチャを使用する場合の問題は、そのアドレス指定方法（Adressierungsmoeglichkeiten）が十分ではないことである。従って、チップカード分野では、８０５１ベースのＣＰＵの性能は、基本的に、チップカードの管理タスク（Verwaltungsaufgaben）には十分であるが、高い安全性が求められるので、チップカード上で、暗号コプロセッサによって、暗号アルゴリズムを処理する必要がある。なお、この暗号アルゴリズムは、非常に大きなサイズのオペランド（Operanden）に関する演算（Rechenoperationen）を含むものである。公知のＲＳＡ（Rivest, SharmirおよびAdleman）アルゴリズムでは、例えば１０２４ビットのオペランド長（Operandenlaengen）が一般的である。このように処理するオペランド長が長く、暗号アルゴリズム自体も複雑なので、チップカードでは、できるだけ大きな記憶装置にアクセスする（Zugriff）必要である。さて、古い制御装置アーキテクチャを基礎とするＣＰＵを用いる場合に問題となるのは、そのＣＰＵがメモリのアドレス指定を小容量しかできない点である。例えば８０５１ベースのＣＰＵは、６４ｋバイトのアドレス指定しかできない。
【０００５】
古いアーキテクチャの制御装置を使用しても、大容量記憶装置（grossen Speicher）をアドレスする（adressierbar）ために利用できる解決策（Loesungsansatz）は、外部に蓄積された記述子（Deskriptoren）、または、ＣＰＵによってアドレスされるメモリ窓（Speicherfensters）の位置（Lage）を決定するベースアドレス（Basisadressen）を使用することである。その結果、ＣＰＵによってアドレス可能な（adressierbar）メモリ領域（Speicherbereich）を、メモリ窓を用いることで、より大きなメモリの全域に広げることができる。図４は、８ビット制御装置のブロック図を示す。この８ビット制御装置を、概して８００で示す。また、この８ビット制御装置は、８０５１ベースのＣＰＵ８０５と、ＭＭＵ（memory management unit；メモリ管理装置）と、制御装置８００に接続されている記憶装置８１５とを含んでいる。この記憶装置８１５は、例えば読み出し専用メモリ（Nur-Lese-Speicher （ROM））、ランダムアクセスメモリ（Direktzugriffsspeicher （RAM））、ＥＥＰＲＯＭまたはフラッシュメモリなどの不揮発性メモリ（ＮＶＭ；non-volatile memory）などのように様々なタイプのメモリを含んでいてもよい。また、分かりやすいように１ブロックだけを記載した。ＣＰＵ８０５は、８ビットアドレスバス８２０と、双方向８ビットデータバス８２５とを介して、ＭＭＵ８１０に接続されている。ＭＭＵ８１０は、同じく、１２ビットアドレスバス８４０と、双方向８ビットデータバス８４５とを介して、記憶装置８１５に接続されている。チップカードの場合、制御装置８００は、例えばさらに他の素子とも接続されている。他の素子とは、暗号アルゴリズムを処理する暗号コプロセッサ、割り込みモジュール（Interruptmodul）、端末と通信するための接触型または非接触型インターフェース、乱数発生器、および、他の素子である。これらは、図４には簡易化のため記載していない。
【０００６】
図４の制御装置８００の問題は、ＣＰＵ８０５が、８ビットアーキテクチャを基礎としていることであり、命令セット（Befehlssatzes）８５５の領域（im Rahmen）では、チップカードの場合、記憶装置８１５の容量（Groesse）はより大きくなくてはならないにもかかわらず、６４ｋバイトしかアドレス指定できない点である。図４の例では、例えば、１メガバイトである。ＣＰＵ８０５が、６４ｋバイトしかアドレスできない理由は、命令セット８５５および、特に、読み出し／書き込み命令（例えば、ＭＯＶ命令）によるデータアクセス時、および、アドレスを生成するためのコードアクセス時に、２バイト（１６ビット）しか使用しないからである。２バイト（１６ビット）だと、２16＝６４ｋ通り（216＝64k Zustaenden）しかコード化できない。
【０００７】
読み出し命令を実行するとき、ＣＰＵ８０５は、８ビットアドレスバス８２０と８ビットデータバス８２５を介して１６ビットのアドレスを出力する。ＣＰＵ８０５は、データバス８２５からの応答（Antwort）として、指定したアドレスにある記憶装置８１５のメモリの内容を待っている。１ＭＢの記憶装置８１５をアドレス指定できるように、ＣＰＵ８０５の外側にあるＭＭＵ８１０に、ベースアドレスを示すデータ記述子８６０が蓄積されている。このベースアドレスを、ＣＰＵ８０５からの１６ビットアドレスに加える。その後、その結果を、１２ビットアドレスバス８４０と、８ビットデータバス８４５とを介して出力する。これは、記憶装置８１５をアドレス指定するためである。このようにして、記述子８６０が、記憶装置８１５にある６４ｋのデータメモリ窓８６５を定義する。このデータメモリ窓８６５の開始アドレス（Startadresse）は、記述子８６０が示すベースアドレスに対応している。記述子８６０とＭＭＵ８１０とを備えることにより、ＣＰＵ８０５が記憶装置８１５にメモリアクセスするときは、必ず、メモリ窓８６５にアクセスするようになる。この場合、ＣＰＵ８０５が出力するアドレスは、メモリ窓８６５内で読み出されるバイトの相対番地（オフセット）を表している。ＣＰＵ８０５が、書き込みまたは読み出し命令を実行するとき、ＭＭＵ８１０は、ＣＰＵ８０５からの１６ビットアドレスを、２０ビットの物理アドレスに変換し、それに対応してアクセス先を変更する。
【０００８】
この記述子８６０の概念は、ＭＭＵ８１０と関連して任意の記憶容量に拡張できるが、不利なのは、メモリ窓８６５の外側にある記憶装置８１５のアドレスにメモリアクセスする場合、まずＭＭＵ８１０を再構成しておく（umkonfiguriert）必要があるという点、すなわち、記述子８６０をその都度設定しなおす（neu eingestellt）必要があるという点である。従って、ＭＭＵ８１０のこの再構成は、特に複雑である。なぜなら、再構成するには、記述子８６０をソフトウェアにより設定する必要があるからであり、常にＣＰＵ８０５の管理下にある（sichtbaren）（つまり、アドレス指定可能な）メモリ領域（Speicher）に、管理コード８７０を蓄積する必要があるからである。なお、この管理コード８７０は、記述子８６０を設定するためのＭＭＵ設定コードを含んでおり、もともとたいてい非常に小さい直接アドレス指定可能なメモリ領域を減少させてしまう。さらに、記述子８６０を設定するには、さらにクロックサイクル（zusaetzliche Taktzyklen）が必要である。これは、制御装置の処理速度が遅くなる原因となる。上記の記憶容量について考えると、メモリ窓８６５の外側にある、記憶装置８１５のメモリ領域にデータアクセスするのにかかる時間は、プログラムのコンパイルが必要なために、該メモリ窓８６５内にメモリアクセスするのにかかる４クロックサイクルと比較して、例えば１４０クロックサイクルである。
【０００９】
ＭＭＵ再構成は、コードアクセスにおいてはより重大な問題となる。コードアクセスの場合も、同じように、コード記述子８７５は、コードメモリ窓８８０を定義する。そこでは、副プログラム（Unterprogrammen）実行、つまり、メモリ窓８８０の外側のメモリ領域にある命令を呼び出す場合、現在設定されているメモリ窓８８０へ必ず戻らなければならない。つまり、通常の連続した命令において機械コードを処理するとき、すなわち、ジャンプ命令がない場合、または、データアクセスのように復帰を意図しないジャンプ命令のときに、現在設定されているメモリ窓８８０を離れる場合は、コード記述子８７５だけを再設定しなければならない。また一方で、復帰のためのジャンプ命令の場合は、復帰ジャンプをするときに、必ずコード記述子８７５をもとの値に設定しなければならない。これを確実にするために、管理コード８７０は、さらに、その元のコードを含んでいなければならない。この元のコードは、復帰のためのジャンプ命令のたびに、現在設定されているコードメモリ窓８８０の外側にある宛先（Zieles）に関連付けて、呼び出される。これは、復帰ジャンプのときに、ジャンプ前の記述子の設定の復元を確実にするためである。
【００１０】
ソフトウェアによる実現は、記憶装置８１５の各バンク、つまり、各々の可能なメモリ窓の位置に以下のものを提供することにより可能である。すなわち、元のコード、および、設定・再設定コード（Einstellungs-und Rueckstellungscode）である。これらのコードは１つの表に整理されおり、常に管理可能な記憶装置８１５のメモリ領域に蓄積されている。現在設定されているメモリ窓８６５の境界を越えて、復帰のためのジャンプ命令を実行するためには、例えばデータポインタ（ＤＰＴＲ）のような内部レジスタ８８５に、宛先バンク、つまり、宛先バンク内の相対番地、そこにはジャンプ先の命令があるのであるが、それと関連づけられた宛先コードの１６ビットアドレスをロードし、次に復帰を意図しないジャンプ命令を有した元のコードを常に管理可能なメモリ領域に呼び出して、プログラムコードから常に管理可能なメモリ領域にある機能の場所へ戻るためのジャンプ命令が実行されなければならない。元のコードを実行することにより、現在設定されている窓８８０、または、現在のバンクを復旧するために、ＭＭＵ再設定コードのアドレスがスタック（Stack）またはスタックメモリ（Stapelspeicher）８９０へシフトする。次に、予め内部レジスタ８８５に書き込まれたアドレスがスタック８９０へシフトする。そして、最後に、新しい宛先ＭＭＵバンクのためのＭＭＵ設定コードが、復帰を意図しないジャンプ命令によって呼び出される。ＭＭＵ再構成が実行されたのち、設定コード（Einstellungscodes）の最後で、新しく設定されたメモリ窓にある所望の機能、または所望の副プログラムへのジャンプが実行される。機能が処理された後、元のＭＭＵ構成を復元するため、または、もともと設定されているメモリ窓８８０を回復するためのＭＭＵ再設定コードが元のＭＭＵ設定を回復するための復帰命令によって呼び出される。従って、再設定コードの終わりにある復帰ジャンプ命令は、新しく設定されたメモリ窓８８５内で、プログラムコード内の対応の後続位置（Folgestelle）へジャンプする。ＭＭＵ設定コードまたは再設定コードに含まれるＣＰＵ命令を用いて、ＭＭＵ８１０を再設定できるように、特別な命令が備えられていてもよいか、あるいは、ＭＭＵ８１０が、アドレスバス８２０およびデータバス８２５を介してＣＰＵ８０５から来る専用の８ビットアドレス（reservierte 8 Bit-Adressen）に応答する。ＣＰＵ８０５は、上記特別な命令を使用して、ＭＭＵ８１０および記述子８６０，８７５をアドレス指定できる。
【００１１】
ＣＰＵ８０５が常にアドレス指定できる、または、管理できるメモリ領域を、記憶装置８１５内に実現するため、ＣＰＵ８０５が出力する全ての１６ビットアドレスを、ＭＭＵ８１０によって、メモリ窓８６５に対応付けるのではなく、記憶装置８１５のある固定メモリ領域（festen Speicherbereich）に対応付けている。その結果、効果的にアドレス可能なメモリ窓８６５のサイズが、管理コード８７０によって小さくなる。
【００１２】
本発明の目的は、記憶装置をアドレス指定するための中央処理装置の制御方法、および、制御装置を提供することであり、その結果、そのアーキテクチャにより、ＣＰＵによってアドレス指定され得る最大限の記憶領域まで広げてアドレス指定することが複雑ではなくなる。
【００１３】
本目的は、請求項１または９に記載の方法、および、請求項２または１０に記載の制御装置によって達成される。
【００１４】
本発明は、ＣＰＵの自由なＣＰＵ命令コード（CPU-Operationscodes）、または、ＣＰＵ命令コード識別子（CPU-Operationscodeidentifikatoren）を、ＣＰＵの上流に接続されている支援手段（Unterstuetzungseinrichtung）を制御するため使用できるという認識に基づいている。なお、自由なＣＰＵ命令コードとは、すなわち、ＣＰＵの命令セットの命令がまだ割り当てられていない、以下で自由命令コードと呼ばれる命令コードのことである。また、上記ＣＰＵ命令コード識別子は、既に１つの命令が割り当てられているが、他の理由で使用できるか、あるいは、特定のオペランドに関しては自由である。上記支援手段は、特別な命令コード識別子として一般的に示されるこの命令コード識別子に応じて（ansprechend）、第２メモリサイズを有する第２メモリ領域に関して新しい、例えば物理アドレスを生成できる。この第２メモリサイズは、ＣＰＵがアドレス指定できる、例えば論理的なメモリサイズよりも大きい。その結果、特別な命令コード識別子を用いて、実行可能な機械コードの手順で、支援手段をアドレス指定することができる。この支援手段は、処理するべき命令コード識別子をＣＰＵへ供給する時の、記憶装置からＣＰＵへのデータ通信（Datenverkehr）を監視し（ueberwacht）、特定の特別な命令コード識別子が生じる場合に、新しく生成されたアドレスに関する処置を行なうことができる。このようにして、一方では、ＣＰＵの複雑な再設計（Redesign）、および、他方では、実行可能な機械コードと、処理速度との両方において現在のメモリ窓をソフトウェアによる複雑な再設定が回避される。
【００１５】
プログラムジャンプに関する本発明の特徴では、支援手段が、ＣＰＵへ命令コード識別子を供給できる。この命令コード識別子は、ＣＰＵの命令セットからのジャンプ命令に割り当てられている。ジャンプ命令命令コード識別子は、第１、例えば論理メモリ領域に関する適切な宛先アドレスを含んでいる。これはプログラムカウンタを、適切に設定するためである。支援手段は、同時に、ＭＭＵの記述子を管理する。この記述子は、メモリ領域内の第１メモリ領域の位置を表している。あるいは、この記述子は、宛先アドレスが、コード記述子と共に、新しいアドレスを生成するように設定されている。ＣＰＵへ供給されたジャンプ命令は、第１メモリ領域に関連して宛先アドレスに関連付けられている。支援手段は、ジャンプ命令が関連付けられている宛先アドレスおよびコード記述子を、以下のように設定する。すなわち、新しいアドレスが、第１、例えば論理メモリ領域に存在し、これに伴って、ＣＰＵに供給されるジャンプ命令が参照する宛先アドレスが、記述子と関連して新しい、例えば物理アドレスに対応するように、宛先アドレスおよびコード記述子を設定する。このようにして、支援手段は、特別な命令コード識別子のみに応じて、次に処理するべき命令コード識別子を記憶装置に要求するために、一方では、記述子、および他方では、ＣＰＵの次のコードアクセスのためのプログラムカウンタが、適切に設定されていることを確実にする。このため、説明の冒頭（Beschreibungseinleitung）に記載したソフトウェアによる解決策の場合には、管理コードが必要であった。
【００１６】
データアクセス命令における発明の他の特徴では、支援手段が、ＣＰＵにあらかじめ定義されたＣＰＵ命令コードを供給できる。これは、ＣＰＵを、適切に「起動（stimulieren）」、または、適切な状態にし、ＣＰＵが記憶装置へ出力したアドレスを、新しく生成されたアドレスに基づいて操作するためである。その結果、記憶装置から判断すると、結果的にＣＰＵが第２メモリ領域をアドレス指定できるかのような印象（Eindruck）が生じる。プログラム実行中に、設定されたメモリ窓、または、第１メモリ領域の外側のメモリ領域の特定アドレスにある内容、つまり、第２メモリ領域に関する内容が読み出される場合、このために供給された自由命令コードは、例えば処理可能な機械コードに挿入してもよい。上記コードを、ＣＰＵが、次に処理されるべき命令として記憶装置に要求する場合、例えば命令コード自体の一部から、または、ＣＰＵ内のレジスタ情報から、または、ＣＰＵ外部のレジスタ情報、例えば支援手段内から新しいアドレスを決定するために、支援手段が応答する。このアドレスのメモリが読み出される。さらに、ＣＰＵに、１つまたは複数のＣＰＵ命令コードが供給される。これは、ＣＰＵが、続いて供給されるメモリ内容を、ＣＰＵ内の指定された宛先レジスタ（Zielregister）に書き込むためである。さらに、次に実行されるべき記憶装置内の命令コードを表示するためのプログラムカウンタが適切に設定される。その結果、新しいアドレスによって記憶装置にアクセスでき、新しいアドレスのメモリ内容が読み出し可能となり、このメモリ内容はＣＰＵへ出力可能となる。従って、データアクセスのときも、第１メモリ領域または事前に設定されたメモリ窓をシフト（退避）するための管理コードは不要である。
【００１７】
ＣＰＵの外側に新アドレスを生成する支援手段を制御するために、自由命令コードまたは特別命令コード識別子を使用することによって、ＣＰＵの仕組みに本質的な変化を加えなくても、ＣＰＵ命令コード識別子を有するＣＰＵが直接アドレス指定できるメモリ領域を越えるメモリ全体を、直接アドレス指定できることが好ましい。支援手段が、ＣＰＵの上流に接続されていることによって、すなわち、メモリからＣＰＵへのデータ通信を監視できるようにＣＰＵと接続されていることによって、例えばＣＰＵの命令セットからの命令を割り当てられていない自由命令コード識別子を、この命令コード識別子がＣＰＵに達する前に、支援手段によって遮断することができる。支援手段によって生成される、自由命令コードが参照する新しいアドレスに基づいて、支援手段は、ＣＰＵを、適切に起動または制御でき、場合によっては、ＣＰＵのアドレス信号を、外側へ、つまり、記憶装置に対して、適切に操作できる。記述子またはベースアドレスの準備されたソフトウェアによる再設定は不要である。その結果、一方では、管理コードが省かれ、他方では、コードジャンプ（Codesprung）または現在設定されているメモリ窓からのデータアクセスにかかるクロックサイクル数が減少する。さらに、管理コードを省くことによって、常にＣＰＵがアドレス指定可能な、または、管理可能なメモリ領域においてメモリスペース（Speicherplatz）を専有することがなくなる。
【００１８】
本発明の他の長所は、ＣＰＵ命令コード識別子のみを基礎とする機械コードに対して、下位互換性（Abwaertskompatibilitaet）を保証できる点である。なぜなら、支援手段は、ＣＰＵ命令コード識別子にとって、見えなくても（durchlaessig）、または、気付かれなくても（unmerklich）よいからである。さらに、支援手段は、現在設定されているメモリ窓の外側に存在するアドレスに関してデータアクセス時およびジャンプ命令の際にコード記述子またはデータ記述子を再設定するために備えられていてもよい。その結果、一つの自由または特別命令コード識別子のみによって、メモリ窓を再設定できる。ＣＰＵの外側の自由または特別命令コード識別子をハードウエアで処理することによって、さらに、例えば記述子の再設定時の割り込みを回避できる。その結果、ソフトウェアによる再設定と比べて、その受ける影響は軽減される。
【００１９】
本発明の好ましい実施例を、以下に、添付の図を参照しながら詳しく説明する。
【００２０】
図１は、本発明の実施例の制御装置のブロック図である。図２ａおよび図２ｂは、自由命令コードが、間接アドレス指定方式による読み出し命令に対応する場合に、図１の制御装置が実施するステップを示すフローチャートである。図３は、自由命令コードが、復帰を意図する直接アドレス指定方式によるジャンプ命令に対応する場合に、図１の制御装置が実施するステップを示すフローチャートである。図４は、ＣＰＵのアドレス指定の可能性を拡張するために従来の可能な解決策を使用している制御装置のブロック図である。
【００２１】
以下の本発明の実施例の詳しい説明では、本発明は、チップカードの制御装置に関するものである。ただし、本発明を、他の適用分野（例えば、ＡＳＩＣ、ＳＯＣ、または、ＴＰＭ（trusted plattform module；セキュリティプラットフォームモジュール）など）の制御装置に使用してもよいし、または、個々のマイクロ制御素子として実施してもよい。
【００２２】
さらに、以下の実施例は、自由な、専用ではない自由命令コードにのみ基づいている。この自由命令コードには、ＣＰＵの命令セットの命令は割り当てられていない。しかし、支援手段を制御するための他の実施形態では、命令コード識別子の形をとって専用の命令コードを使用することも同じく可能である。この命令コード識別子は、様々な理由から、支援手段に適したものである。この場合、命令コード識別子の式（Ausdruck）は、後ろの方に命令コードと任意のオペランド（例えば、アドレス部）との組み合わせを含んでいるほうがよい。その一例は、特定の命令がコンパイラ（Compiler）によって支持、および、使用されておらず、従って、コンパイラの命令コードを、他の方法で使用できる場合、または、特定のオペランドに関連する命令コードが自由である、つまり、規定されていない場合である。
【００２３】
さらに、以下の説明は、サイズ１ＭＢの記憶装置に関するものである。この記憶装置は、２０ビットでアドレス指定される。ただし、他のメモリサイズ（例えば１４ＭＢ、および、アドレス指定用の他のビット数（例えば２４）など）も可能である。
【００２４】
図１は、本発明の実施例では概して１０で示すマイクロ制御装置と、記憶装置２０とを示す。制御装置１０は、ＣＰＵ３０と、支援手段４０と、ＭＭＵすなわちメモリ管理ユニット５０とを備えている。ＣＰＵ３０は、８０５１制御装置キテクチャを基礎としており、双方向８ビットデータバス７０と、８ビットアドレスバス８６と、割り込みバスＩｎｔ９０とを介して、支援手段４０に接続されている。支援手段４０は、双方向８ビットデータバス１００と、８ビットアドレスバス１２０と、割り込み線Ｉｎｔ１３０とを介して、ＭＭＵ５０に接続されている。支援手段４０とＭＭＵ５０との双方は、８ビットデータバス１４０，１５０と、１２ビットアドレスバス１８０，１９０とを介して、記憶装置２０に接続されている。
【００２５】
ＣＰＵ３０は、加算器などの図示していない他の素子の他に、デコーダ２１０、内部ＲＡＭ  ＩＲＡＭ２２０、内部レジスタを備え、これらに、スタックポインタ（Stackzeiger）すなわちスタックメモリポインタ２３０、プログラムカウンタ２４０、データポインタレジスタＤＰＴＲ２４５、および、アキュムレータ２５０が含まれる。他の内部レジスタ２６０は、ＩＲＡＭ２２０に備えられている。さらに、ＩＲＡＭ２２０には、スタックメモリすなわちスタック２７０がさらに備えられている。デコーダ２１０は、８ビットデータバス７０を介してＣＰＵ３０に供給される命令コードまたは命令コード識別子２８０をデコードする。この場合、各ＣＰＵ命令コードまたは命令コード識別子２８０には、ＣＰＵ３０の命令セット２９０からの命令が割り当てられている。
【００２６】
支援手段４０は、同じく、８ビットデータバス１４０を介して記憶装置２０から支援手段４０に供給された命令コードまたは命令コード識別子をデコードするために、デコーダ３００を備えている。支援手段４０は、特定の命令コード３１０に応答する。この命令コード３１０は、ＣＰＵ命令コード２８０に属しておらず、または、ＣＰＵ命令コード２８０のための専用命令コードではない。従って、この命令コード３１０には、ＣＰＵ３０の命令セット２９０からの命令は割り当てられていない。この命令コードを、以下では、自由命令コード３１０と呼ぶ。デコーダ３００の他に、支援手段４０は、さらに、加算器３２０を備えている。これは、以下で説明するように、支援手段４０で生成される２０ビットアドレス、および、外部の３バイトのサイズのデータポインタレジスタＸＤＰＴＲ３２５を、相対値（例えば、４または１６ビット）分だけ補正するためである。
【００２７】
ＭＭＵ５０は、データ記述子３３０と、コード記述子３４０と、任意で割り込み記述子（Interruptdeskriptors）３５０を蓄積するための外部レジスタを備えている。
【００２８】
上記素子の他に、ＣＰＵ３０、支援手段４０およびＭＭＵ５０は、それぞれ、制御装置（図示せず）を備えており、この制御装置が、以下に説明するタスクの制御を行なう。
【００２９】
さらに、チップカード制御装置１０は、他の素子（分かり易くするため、図１には図示せず）と接続されていてもよい。他の素子の例としては、例えば暗号化アルゴリズムを実行するための１つ以上の暗号コプロセッサ、ＵＡＲＴモジュール（universal asynchronous receiver-transmitter = 万能非同期受信送信機）などの送受信インターフェース、内部クロックを生成するための発振器、割り込み信号をハードウエアによって生成するための割り込みモジュール、および、乱数発生器があげられ、これらは、アドレスデータバス(Adress-Daten-Bus)を介して、制御装置１０と、例えば特に支援手段４０とに接続されている。
【００３０】
本発明の場合、ＣＰＵ３０が含む命令コード識別子のセットは、ＣＰＵ命令コード識別子２８０と自由命令コード識別子３１０とを含むものである。各命令コード識別子は、一般的に、命令コードを含んでいる。この命令コードは、命令の種類（Befehlsart）、すなわち、ＣＰＵ３０または支援手段４０どちらかの処理手順を示している。また、各命令コード識別子は、場合によっては、他の情報を含んでいる。他の情報とは、例えば、命令コードに割り当てられている命令が参照するアドレスを示すためのアドレス部、および／または、命令が参照するオペランド（例えば、アドレス部に示されたアドレスに関する相対値、または、加算命令のための加数）を示すためのオペランド部のことである。従って、命令コードの合計数、すなわち、命令コード識別子の合計数は、命令コードのための可能なコード化方法の数によって制限されている。
【００３１】
アドレスバス８６およびデータバス７０の数を制限することにより、命令セット２９０は、ＣＰＵ３０が、メモリサイズが制限されている（すなわち、バイト毎のアクセスの場合、６４ｋバイトの）メモリ領域にアクセスするのを許可するのみである。コードアクセスの場合でさえ、アドレス指定は、６４ｋバイトに制限されている。なお、コードアクセスの場合に、ＣＰＵ３０は、次に処理する命令コード識別子を、プログラムカウンタ２４０に蓄積されている１６ビットコードアドレスを用いて要求する。
【００３２】
本実施例では、記憶装置２０のサイズが、例えば１メガバイトであるほうがよい。しかし、この場合、他のメモリサイズも可能である。記憶装置２０は、この場合、例えばＲＡＭ、ＲＯＭ、ＮＶＭ（例えば、ＥＥＰＲＯＭまたはフラッシュメモリ）などのいろんなタイプのメモリを含んでいてもよい。命令セット２９０を用いるデータアクセス時に、または、コード要求時に、ＣＰＵ３０による全物理的記憶装置２０のアドレス指定を許可するために、ＭＭＵ５０にデータ記述子３３０とコード記述子３４０とが備えられている。これらは、ベースアドレスまたは記憶装置２０内にあるコード窓領域３７０およびデータ窓領域３８０の位置を決定する。これら領域は、それぞれ６４ｋバイトであり、論理メモリ領域を決定する。この論理的なメモリ領域を、命令セット２９０を用いたデータアクセス、または、プログラムカウンタ２４０を用いたＣＰＵ３０のコードアクセスが参照する。
【００３３】
記述子３３０，３４０を用いるメモリアクセスの原則を、まず、命令セット２９０からの読み出し命令の例を用いて説明する。この命令セット２９０は、アキュムレータ２５０にアドレスのメモリ内容を書き込むために備えられているものである。また、このアドレスは、データポインタレジスタＤＰＴＲなどの内部レジスタ２６０の２バイトで決定される。すなわち、一般的には、例として、命令「ＭＯＶＸ  Ａ，＠ＤＰＴＲ」と表示（Notation）される。ただし、次に説明する実施例は、以下のものと同じように、現在要求されている命令が、ジャンプ命令にすぐ続き、ＣＰＵ３０が、現在の命令を要求するために、プログラムカウンタにおいて要求されるアドレスを出力するという手順（Szenarien）も参照している。現在要求される命令がジャンプ命令に直接すぐ続かない他の手順では、後続アドレス（Nachfolgeadresse）を、記憶装置２０において、自動加算器（Autoinkrementers）の形で管理できる。この自動加算器は、自動的に２０ビットコードアドレスを増加し、このアドレスにおいて、ＣＰＵ３０は、要求信号または起動信号を、記憶装置２０へ出力するのみである。
【００３４】
ＣＰＵ３０は、プログラムカウンタ２４０に蓄積されている１６ビットアドレスを、アドレスバス８６、および、データバス７０を介して出力することにより、命令を要求する。支援手段４０は、このアドレス信号を変更せずに、アドレスバス１２０およびデータバス１００へ通す。ＭＭＵ５０は、１６ビットコードアドレスを示すアドレス信号を、コード記述子３４０に基づいて操作する。コード記述子３４０は、例えば、１６ビットコードアドレスの前の上位４ビットを含んでいる。その結果、１６個のメモリ窓の場所（Speicherfensterpositionen）が可能となる。これらの場所を、以下では、バンクとも呼ぶ。あるいは、しかし、コード記述子３４０は、１６ビットコードアドレスの前の上位４ビットの他に、他のビットを含んでいる。これにより、１６個以上の可能なメモリ窓の場所が可能となる。ＭＭＵ５０は、生じた２０ビットコードアドレスを、記憶装置２０へ出力する。これは、機械コード、すなわち、この場合は、「ＭＯＶＸ  Ａ，＠ＤＰＴＲ」を要求するためである。記憶装置２０は、コードメモリ窓３７０から、ＣＰＵ命令コード識別子２８０を、データバス１５０，１００および６０７０を介して、ＣＰＵ３０へ出力する。この場合、ＭＭＵ５０または支援手段４０は、ＣＰＵ命令コード識別子を通す。デコーダ２１０は、命令ＭＯＶＸ  Ａ，＠ＤＰＴＲの命令コード識別子２８０をデコードし、データバスおよびアドレスバス７０，８６を通過するデコードされた命令に応じて、データポインタの内容を出力する。これは、データメモリ窓３８０にある対応のメモリ内容にアクセスするためである。支援手段４０を通過することにより、データポインタの１６ビットアドレスは、ＭＭＵ５０に達する。このＭＭＵ５０は、データ記述子３３０によって、上記１６ビットアドレスから対応する２０ビットアドレスを生成し、このアドレスを、アドレスバスおよびデータバス１９０，１５０を介して、記憶装置２０へ出力する。記憶装置２０は、対応するメモリ内容を、データバス１５０，１００および７０を介してＣＰＵ３０へ返送する。ＣＰＵ３０では、命令ＭＯＶＸ  Ａ，＠ＤＰＴＲの命令コードによって決定されるように、ＣＰＵ３０によって上記メモリ内容が、アキュムレータ２５０にロードされる。
【００３５】
ジャンプ命令、または、コードメモリ窓３７０またはデータメモリ窓３８０の境界を越えたデータアクセス以前の記述子３３０，３４０のソフトウェアによる（softwaretechnische）複雑な再構成、または、再設定（Neueinstellung）を回避するため、既述のように、支援手段４０は、記憶装置２０からＣＰＵ３０へのデータ通信を監視できるように、ＣＰＵ３０と接続されている。これは、記憶装置２０のコードメモリ窓３７０が自由命令コード３１０を要求する場合、ＣＰＵ３０よりも前に、自由命令コード３１０へ応答できるためである。以下に説明するように、支援手段４０を配置することにより、十分に大きなアドレス（すなわち、２０ビットアドレス）の生成を、支援手段４０において実現できるということが保証される。一方、ＣＰＵ３０は、支援手段４０によって適切に「起動」される。さらに、支援手段４０は、ＣＰＵ３０から記憶装置２０へのデータ通信を監視できるように、ＣＰＵ３０と接続されている。これは、記憶装置２０に関するアドレス指定を行なうためにＭＭＵ５０が出力するアドレス信号を、操作するためである。
【００３６】
図２を参照しながら、以下に、図１の制御装置が行なうステップの順序を説明する。この順序は、ＣＰＵが要求する、ジャンプ命令のすぐ後に続いて実行される命令コード識別子が、ＣＰＵの内部宛先レジスタと、ＣＰＵ３０の内部レジスタにおける間接アドレス指定方式によって示される２０ビットソースアドレス（20-Bit-Quelladresse）とを参照する読み出しまたは書き込み命令に対応する自由命令コード識別子である場合に、図１の制御装置が行なうものである。
【００３７】
ステップ４００では、まず、アドレス生成に関する新しい読み出し命令で参照するためのレジスタをロードするように、実行中のプログラムによってＣＰＵ３０を制御する必要がある。これは、新しい読み出し命令が関連している２０ビットアドレスを共に生成するためである。図２に記載の実施例では、これらは、ＣＰＵの内部レジスタＲ１，Ｒ２およびＲ３である。これら内部レジスタを満たすために、以下の一連のＣＰＵ命令コード識別子（CPU Operationscodeidentifikator-Folge）が、例えば、記憶装置２０にある自由命令コード識別子の前に存在していてもよい：「ＭＯＶＸ  Ａ，＠Ｄｐｔｒ」、「ＭＯＶ  Ｒ２，Ａ」、「ＭＯＶ  Ｒ３，＃０ｘ１３Ｈ」。Ｒｉ（ただし、ｉ＝１．．．３）は、内部レジスタＲｉ、Ａは、アキュムレータ２５０、Ｄｐｔｒは、データポインタ２４５、および＃０ｘ１３Ｈは、１６進数で表された直接アドレスを示している。
【００３８】
ステップ４０５では、ＣＰＵ３０が、アドレスバスおよびデータバス８６，７０を介してプログラムカウンタ２４０に蓄積されている１６ビットコードアドレスを出力することにより、すぐ後に続いて実行する命令、この場合はすぐ後にジャンプする命令、を要求する。ステップ４１０では、プログラムカウンタ２４０の１６ビットコードアドレスを、支援手段４０が変更せずに送信した（passiert）後、ＭＭＵ５０は、コード記述子３４０を使用して、２０ビットコードアドレスに対応付け（abgebildet）、または、この２０ビットコードアドレスを操作し、記憶装置２０へ送信する。プログラムカウンタに蓄積されている１６ビットコードアドレスは、例えば、２０ビットコードアドレスの下位部分に対応している。一方、コード記述子３４０は、２０ビットアドレスの上位４ビットの部分、あるいは上位ｎビットの部分に対応している。この場合、例えば、１２ビットなどである。１６ビットコードアドレスを対応付け（Abbildung）または操作は、ＭＭＵ５０によって、１６ビットコードアドレスを補足することにより実行される。あるいは、コード記述子３４０は、２０ビットベースアドレスまたはバンクの初期アドレス対応することができる。そのため、記述子３４０を、１６ビットコードアドレスに加算することにより対応付けを実行できる。
【００３９】
ステップ４１５では、コード記述子３４０および１６ビットプログラムカウンタ２４０が生成した２０ビットコードアドレスにある要求した命令の命令コード識別子が、記憶装置２０から呼び出され（geholt）、アドレスバスおよびデータバス１５０，１９０および１２０を介して、干渉されないまま（ungehindert）ＭＭＵ５０から支援手段４０へ送られる。
【００４０】
ステップ４２０では、支援手段４０のデコーダ３００によって、記憶装置２０から受信した命令コード識別子が、命令コードが示すような自由命令コードかどうかをチェックする。ステップ４２０で、記憶装置から呼び出された命令コードが自由命令コードではないという結果が出れば、ステップ４２５で、支援手段４０は、上記命令コードを、干渉せずに通過させ、アドレスバスおよびデータバス７０，８６を介して、ＣＰＵ３０へ転送する。次に、ＣＰＵ３０は、ＣＰＵ命令コード識別子を、従来の方法でデコードし、実行する。しかし、記憶装置２０からの命令コードが、自由命令コードであれば、ステップ４３０で、命令コードをデコードする。これは、どの自由命令コード３１０が、命令コードであるかを決定するためである。
【００４１】
すでに説明したように、図２の場合、命令コードは、自由命令コードであり、この自由命令コードは、間接アドレス指定方式による読み出し命令に対応している。ステップ４３５では、支援手段４０が、ＣＰＵ３０の内部レジスタＲ１〜Ｒ３の内容を決定する。決定は、様々な方法で行える。実施例では、支援手段４０が、制御５４２を介してＣＰＵ３０と接続されている。この制御５４２により、支援手段４０は、レジスタＲ１〜Ｒ３の内容を問合せできる。例えばこれはトレースメカニズム（Trace-Mechanismus）の助けを借りて実行されうる。そのため、支援手段４０は、制御５４２を介して、ＣＰＵ３０の内部バスと接続されている。この内部バスに、ＩＲＡＭ２２０が接続されており、この内部バスを介して、ＩＲＡＭ２２にあるレジスタＲ１〜Ｒ３がロードされる。他の実施例では、支援手段４０は、レジスタＲ１〜Ｒ３の内容を決定するために、ＣＰＵ命令コード識別子を使用する。支援手段４０は、このＣＰＵ命令コード識別子を、ＣＰＵへ供給する。これは、レジスタＲ１〜Ｒ３の内容をデータバス７０へ出力するように、ＣＰＵを起動するためである。このとき、プログラムカウンタ２４０を適切に制御するために適切な予備措置（Vorkehrungen）を行なう。
【００４２】
ステップ４４０では、支援手段４０が、決定された内容から２０ビットアドレスを生成する。このアドレスに、自由命令コード識別子または読み出し命令が関連付けられている。
【００４３】
ステップ４４５では、あらかじめ定義されたＣＰＵ読み出し命令コード識別子を、自由命令コード識別子または自由命令コードに応じて、支援手段４０によってＣＰＵ３０へ供給する。上記コードにおいては、自由命令コードが、例えば、レジスタ内容から決定された２０ビットアドレスにあるメモリ内容を、アキュムレータレジスタ（Akkumulatorregister）２５０へロードする読み出し命令に対応しているので、支援手段４０は、ＣＰＵに、ＣＰＵ命令コードを供給する。このＣＰＵ命令コードは、命令「ＭＯＶＸ  Ａ，＠Ｒ１」、すなわち、使用されるレジスタによって示されるアドレスにあるメモリ内容を、レジスタＡにロードするために備えられており、記憶装置２０に関する読み出し命令に対応する。あらかじめ定義された命令コード識別子は、この場合、命令コードを含んでいるだけである。
【００４４】
ステップ４５０では、ＣＰＵ３０が、支援手段４０から供給されるＣＰＵ命令コード識別子を受信し、これをデコードする。命令ＭＯＶＸのために供給される命令コード識別子の実行の際に、ＣＰＵ３０は、ＣＰＵ命令コード識別子に含まれる１６ビットアドレスによってアドレスバスおよびデータバス７０，８６を制御する。このＣＰＵ命令コード識別子は、直接アドレス指定方式によって得られるか、あるいは、間接アドレス指定方式によって内部レジスタから決定される。そしてＣＰＵ３０は、結果がデータバス７０を介して提供されるのを待つ。これは、結果を、宛先レジスタ、すなわち、アキュムレータ２５０へ書き込むためである。
【００４５】
ステップ４５５では、支援手段４０が、レジスタＲ２からＲ３から決定された２０ビットアドレスに基づいて、ＣＰＵ３０のアドレス信号を操作し、記憶装置２０の内容にアクセスするため、これを記憶装置２０へ転送する。アドレス信号またはＣＰＵ３０の１６ビットアドレスの操作は、それぞれ、例えば、上記アドレス信号またはＣＰＵ３０の１６ビットアドレスを２０ビットアドレス自体にそのまま置き換えること、欠落部（例えば２０ビットアドレスのうちの上位４ビット）をＣＰＵ３０の１６ビットに加算または補足すること（このことは、ステップ４３０で行われていないこともある）、さらに、自由命令コード識別子の使用されていないビットを、相対値（Versatzwert）として結果に加算することを含んでいてもよい。
【００４６】
ステップ４６５では、さらに、アクセスされる２０ビットアドレスのメモリ内容を、データバスおよびアドレスバス７０，８６，１４０，１８０、および、支援手段４０を介して、ＣＰＵ３０へ供給する。ステップ４７０では、ステップ４５０において供給された、あらかじめ定義されたＣＰＵ読み出し命令コード識別子により適切に起動されている、またはあらかじめ定義された状態に置かれているＣＰＵ３０は、供給されるメモリ内容を、宛先レジスタ、すなわち、アキュムレータ２５０へ、ＣＰＵ読み出し命令コードによって定義されているようにロードする。最後に、ＣＰＵ３０は、ステップ４７５において、プログラムカウンタ２４０を、供給された、あらかじめ定義されたＣＰＵ読み出し命令コード識別子に対応するように適合させる。ただし、このステップをより早い段階で行ってもよい。
【００４７】
従って、ステップ４７５の後、プログラムカウンタ２４０は、コードメモリ窓３７０内で、次に処理する命令、または、通常の一連の命令に基づく命令コード識別子、および、アキュムレータ２５０内にあり、自由命令コード識別子が関連付けられている２０ビットアドレスのメモリ内容を示している。現在設定されているデータメモリ窓３８０の位置に関係なく、ＭＭＵ５０またはデータ記述子３３０をソフトウェアによって再構成する必要はない。図１に記載の制御装置を実現する場合、図１のメモリアクセスは、図２によれば、命令セット２９０の読み出し命令を用いて、現在設定されているメモリ窓３８０内にメモリアクセスする場合と比べてもあと２クロックサイクル必要なだけである。
【００４８】
この実施例で自由命令コード識別子を実行した場合のアドレス指定は、ＣＰＵ独自のレジスタを用いて間接アドレス指定方式により行われる。しかし、既存のＣＰＵレイアウト（CPU-Layout）に基づいて制御装置１０を設計する場合、ＣＰＵレイアウトをほとんど変更（Eingriff）する必要がない。その結果、このような制御装置の具体化（Implementierung）は、複雑ではない。
【００４９】
図２では、さらに、２０ビットアドレスを生成するために、ＸＤＰＴＲレジスタ３２５などの外部配置レジスタを使用してもよい。この場合、自由命令コードは、アドレス指定のためにＸＤＰＴＲレジスタを使用できるという指示（Angabe）を含んでいる。この自由命令コードは、ステップ４００では、他の自由命令コード識別子によって、ＣＰＵの内部レジスタからの値（例えば、レジスタＲ１，Ｒ２，Ｒ３の内容）をもってロードされる。後者の場合には、上記自由命令コード識別子は、ステップ４００のレジスタＲ１〜Ｒ３をロードするための命令に簡単に加えられる。このような、外部レジスタＸＰＤＴＲ３２５を用いた自由命令コードを使用すれば、レジスタＲ１〜Ｒ３の内容を決定するために、ＣＰＵ３０のレイアウトを変更する必要はない。この利点は、一時的に（zwischenzeitlich）ＣＰＵレジスタＲ０〜Ｒ７を他の目的で使用できる点である。
【００５０】
外部レジスタＸＤＰＴＲ３２５のロード、読み出し、または他の使用のための命令の例を、以下に表示する。この際、一般的な表示を使用する。
【００５１】
【表１】
0003710465.tif 000002
【００５２】
ただし、Ｘｍｏｖは、レジスタロード命令（Register-Lade-Befehl）、Ｘａｄｄは、加算命令（Addier Befehl）、Ｘｐｕｓｈは、スタックプッシュ命令（Stack-Befuellung-Befehl）、Ｘｐｏｐは、スタックポップ命令（Stack Entnahme-Befehl）、Ｘｉｎｃは、増加命令（Inkrementier-Befehl）を示している。ＤＰＴＲ、Ｒｉ（ただし、ｉ＝１．．．７）、ｄａｄｒおよびＸは、ＣＰＵ３０の内部レジスタに属している。ｃｏｎｓｔｌ６は、１６ビットオペランドを示している。「＆」の印は、左右２つの式の連結を示す。右側の括弧に、各命令コード識別子のために必要なバイトを記載する。
【００５３】
自由命令コード識別子を基礎とする可能な読み出し命令は、全ての可能な宛先レジスタまたはＣＰＵ３０におけるその他のアドレス指定可能なメモリに関連付けられていてもよい。さらに、自由命令コード識別子を基礎とし、間接アドレス指定方式を有する可能な読み出し命令は、すべてのレジスタ、または、ＣＰＵ３０内のすべてのメモリ領域（Speicherplatz）を使用でき、読み出し命令が参照する、２０ビットアドレスを生成するためのこれらの組み合わせを使用できる。さらに、直接および間接アドレス指定方式の組み合わせ、すなわち、ＣＰＵ３０の１つまたは複数の内部レジスタと、自由命令コード識別子のアドレス部内の１つまたは複数のバイト（または、ビット）との内容の組み合わせも可能である。
【００５４】
さらに、上記の記載を、２０ビットアドレスに関する書き込み命令に対応する自由命令コード識別子に簡単に適用できる。この場合、アクセスされるメモリ内容の伝送方向のみが、ＣＰＵ３０から記憶装置２０へ変更されている。
【００５５】
以下の一般的な表示を用いた表２に、自由命令コード識別子３１０に応じて、支援手段４０によって処理できる、可能な読み出し命令ＸＭＯＶの例を、図２の実施例に従って、記載する。ＸＭＯＶは、特別なレジスタによって示されるメモリ内容を例えばアキュムレータレジスタに書き込む命令コードを示すほうがよい。以下に一般的なポインタを参考にしてより詳しく説明する。この場合、以下では、Ｒｉ（ただし、ｉ＝０．．．４）は、内部レジスタＲｉ、ＸＤＰＴＲは、外部データポインタ３２５、Ａは、アキュムレータ２５０である。また、「ｏｆｆ８」は、８ビットの相対値を示している。「＆」は、式の左右の連接を示している。
【００５６】
【表２】
0003710465.tif 000003
【００５７】
さらに、支援手段４０は、一般的なポインタの取り扱いのために備えられている自由命令コードを支援し、または、上記自由命令コードに応答するということが提供されていてもよい。一般的なポインタは、アドレスと、アドレス指定方法の指示とを含んでいる。アドレス指定方法指示（Adressierungsartangabe）は、基本的に、一般的なポインタのアドレスを有する、どの命令を使用して、メモリにアクセスするのがよいかを示している。８０５１アーキテクチャは、４つのアドレス指定方式を含んでいる。これらアドレス指定方式に、新しい自由命令コード識別子を用いてアクセス方法を付け加える。４つの８０５１アドレス指定方法は、
アクセス（読み出しまたは書き込み）をＣＰＵ３０のＩＲＡＭ２２０に対して行い（ＭＯＶ）、ＩＲＡＭ２２０は２５６バイトサイズであり、従って、たった１バイトによってアドレス指定できる、Ｉデータアクセスと、
外部メモリ（ＸＲＡＭ）の現在設定されているデータメモリ窓３８０へのアクセスを行い（ＭＯＶＸ）、アドレス指定のために２バイトが示される、Ｘデータアクセスと、
同じく、外部メモリ（ＸＲＡＭ）の現在設定されているデータメモリ窓３８０へのアクセスを行い、アドレス指定のために、１６ビットアドレスを生成するように、レジスタＡｄｒＸｈと所定のレジスタＲ１とを組み合わせる、Ｐデータアクセスと、
現在設定されているコードメモリ窓３７０にアクセスし（ＭＯＶＣ）、同じく、２バイトをアドレス指定のために示すコードアクセスとを含んでいる。ＣＰＵ３０が、データバスおよびアドレスバス７０，８６を介して各１６ビットアドレスを出力する場合、コードアクセスは、別のバス（図示せず）に様々なバス状態を表示することにより、外側へのＸデータアクセスと区別できる。
【００５８】
以下の一実施例では、一般的なポインタの情報、すなわち、アドレス表示およびアドレス指定方法表示を、２０ビットアドレスの表示に関する図２の実施例のように、内部レジスタＲ１〜Ｒ３に蓄積する前に、一連の機械コード（Maschinencodesequenz）内に蓄積する。その後、一般的なポインタを取り扱うための命令に対応する、後続の自由命令コード識別子を、支援手段４０を起動するために備える。さらに、支援手段４０は、アドレス指定方法表示に応じて、あらかじめ定義されたＣＰＵ命令コード識別子をＣＰＵ３０へ供給する。あらかじめ定義されたＣＰＵ命令コード識別子は、一般的なポインタのアドレス表示に応じて設定されているアドレス領域を備えている。しかし、一般的なポインタの取り扱いのための命令が参照している一般的なポインタは、一般的なポインタ自体の取り扱いのための命令の、自由命令コード識別子の部分に含まれていてもよい。図２の説明で分かるように、間接的なアドレス指定のために内部レジスタを使用できるだけではなく、さらに、外部ＸＤＰＴＲレジスタ３２５などの外部レジスタを使用できる。このとき、以下の説明を、簡単にこの場合に適用できる。
【００５９】
以下の表３では、読み出し過程の例として、各々のアクセス方法が第１列に、実際に目的とする命令を一般的に表示したものを第２列に、レジスタＲ３の内容が第３列に、レジスタＲ２の内容が第４列に、一般的なポインタを取り扱うために行なう自由命令コード識別子へのコードアクセスの、各時点の、レジスタＲ１の内容が第５列に、支援手段４０からＣＰＵ３０へ供給されるＣＰＵ命令コード識別子、または、一般的な表示の対応する命令が第６列に表示されている。この場合、＠印は、メモリ内容を意味しており、このメモリ内容について、以下の数式では、アドレスとして、Ａが、アキュムレータ２５０、ＡｄｒＸｈが、ＣＰＵ３０の内部レジスタ、ＭＯＶＸが、記憶装置２０に対する読み出し／書き込み命令、ＭＯＶが、ＣＰＵ３０の内部メモリＩＲＡＭ２２０に対する読み出し／書き込み命令、ＭＯＶＣが、記憶装置２０に対するコードアクセスを示している。
【００６０】
【表３】
0003710465.tif 000004
【００６１】
支援手段４０が、命令コード識別子を、一般的なポインタの取り扱いのために受信する場合、支援手段４０は、続いて、レジスタＲ３の内容をデコードする。このレジスタＲ３には、アドレス指定方法表示が蓄積されている。これは、アドレス指定方法表示に応じて、具体的には、アドレス指定方法が、２０ビットデータアクセスではない場合は、中央処理装置３０へＣＰＵ命令コード識別子を供給するためである。このＣＰＵ命令コード識別子は、アドレス指定方法に割り当てられているメモリに対する読み出し／書き込み命令に対応している。また、アドレス指定方法表示が、２０ビットデータアクセスに対応する場合は、あらかじめ定義されたＣＰＵ命令コード識別子を中央処理装置３０へ供給するためである。なお、このあらかじめ定義されたＣＰＵ命令コード識別子は、記憶装置２０に対する読み出し／書き込み命令に対応している。また、さらに、場合によっては、中央処理装置３０のアドレス信号を適切に操作するために、あらかじめ定義された処理を行なうためである。
【００６２】
Ｉデータアクセスの場合、支援手段４０は、一般的なポインタ（以下では一般的な表示に関連してＸＭＯＶ命令コードと呼ぶ）を取り扱うための自由命令コード識別子の代わりに、「ＭＯＶ  Ａ，＠Ｒ１」のための命令コード識別子を、ＣＰＵ３０に供給する。
【００６３】
Ｘデータアクセスの場合、ＸＭＯＶ命令コードの代わりに、「ＭＯＶＸ  Ａ，＠Ｒ１」のためのＣＰＵ命令コードを、ＣＰＵ３０へ供給する。この場合、支援手段４０は、ＣＰＵ３０がＣＰＵ命令コードに応じて出力した１６ビットアドレスを、上位バイトに関するアドレスを伝送する時に、内部レジスタＲ２の内容に基づいて操作し、操作したアドレスをＭＭＵ５０へ転送する。
【００６４】
コードアクセスの場合、ＸＭＯＶ命令コードの代わりに、「ＭＯＶＣ  Ａ，＠Ａ＋ＤＰＴＲ」ためのＣＰＵ命令コードを、ＣＰＵ３０へ供給する。この場合、支援手段４０は、供給されるＣＰＵ命令コードに応じてＣＰＵ３０が出力する１６ビットアドレスを、アドレス伝送する時に、内部レジスタＲ２、Ｒ１の内容に基づいて操作し、形を変更してＭＭＵ５０へ出力する。
【００６５】
Ｐデータアクセスの場合、ＸＭＯＶ命令コードの代わりに、「ＭＯＶＸ  Ａ，＠Ｒ１」のためのＣＰＵ命令コードを、ＣＰＵ３０へ供給する。
【００６６】
２０ビットデータアクセスの場合、ＸＭＯＶ命令コードの代わりに、「ＭＯＭＸ  Ａ，＠Ｒ１」のためのＣＰＵ命令コードを、ＣＰＵ３０へ供給する。この場合、支援手段４０は、既に説明したように、アドレスを伝送する時に、ＣＰＵ３０が出力したアドレスを、内部レジスタＲ２，Ｒ３の内容に基づいて操作し、形状を変更して記憶装置２０へ出力する。
【００６７】
一般的なポインタを取り扱うために自由命令コードを備えると、一般的なポインタを、ハードウエアによって取り扱える点が有利である。一方、従来の方法では、このためにソフトウェアでデコードする必要があった。一般的なポインタを取り扱うために、特別自由命令コードを備えて、図１の制御装置を特別に実現すれば、約２０クロックサイクル分の時間を短縮できる。
【００６８】
表３に示すように、２０ビットデータアクセスである表示をコード化するために、複数のコード化、すなわち、１ｈ−Ｅｈが可能である。上記実施例の、１ＭＢのメモリの代わりに、１４ＭＢのメモリをアドレス指定できるように、４つのビットの、１４の組み合わせを、他の２０ビットと共に使用してもよい。このことを、２４ビットを、アドレス指定に使用し、１２ビットバス１８０，１９０の代わりに１６ビットバスを使用して行なう。
【００６９】
これまで、図１の制御装置のためのステップの順序を、自由命令コードを参照し説明してきた。これら自由命令コードは、読み出し／書き込み命令に関連付けられている。以下に、制御装置１０の操作方法（Funktionsweise）を、自由命令コードに関連して説明する。これら自由命令コードは、復帰を意図する、または、復帰を意図しないジャンプ命令などのジャンプ命令に対応する。
【００７０】
図３は、実施例について、図１の制御装置の場合に行われるステップの順序を示す。ＣＰＵが、次の命令コード識別子を、処理のために要求する。この命令コード識別子は、自由命令コード識別子である。また、この自由命令コード識別子は、直接アドレス指定方式および復帰を意図するジャンプ命令に関連付けられている。既述の実施例で行なうように、次の命令コード識別子の要求により、プログラムカウンタにコードアドレスが表示される。言い換えれば、先行するジャンプ命令の直前に処理する。別の場合には、要求は、ＣＰＵ３０からの要求信号の出力によって、および、記憶装置２０よって与えられる２０ビットコードアドレスを使用によって、実行する。
【００７１】
ステップ６００では、ＣＰＵ３０が、アドレスバスおよびデータバス８６，７０を介してプログラムカウンタ２４０に蓄積されている１６ビットコードアドレスを出力することにより、ジャンプ命令のすぐ後に続いて次に実行する命令を要求する。ステップ６０５では、プログラムカウンタ２４０の１６ビットコードアドレスを、支援手段４０が変更せずに送信した後、ＭＭＵ５０を介して、コード記述子３４０を使用しながら、２０ビットコードアドレスに生成、または、操作し、この２０ビットアドレスを、ＭＭＵ５０は、記憶装置２０へ転送する。プログラムカウンタに蓄積されている１６ビットコードアドレスは、例えば２０ビットコードアドレスの下位部に対応している。一方、コード記述子３４０は、２０ビットアドレスの上位４ビット部分に対応している。または、上位ｎビット部分に対応している。この場合、例えば、ｎを１２とする。ＭＭＵ５０によって、１６ビットコードアドレスの対応付けまたは操作は、この１６ビットコードアドレスに補足することによって行なわれる。あるいは、コード記述子３４０は、バンクの２０ビットベースアドレスまたは初期アドレスに対応している。その結果、記述子３４０を、１６ビットコードアドレスに加算することによって対応付けが実行される。
【００７２】
ステップ６１０では、コード記述子３４０と、１６ビットプログラムカウンタ２４０とによって生成された２０ビットコードアドレスにある、要求された命令の命令コード識別子を、記憶装置２０から呼び出し、ＭＭＵ５０によって変更せずに、アドレスバスおよびデータバス１５０，１９０，１２０を介して支援手段４０へ送る。
【００７３】
ステップ６１５では、支援手段４０のデコーダ３００により、記憶装置２０から受信した命令コード識別子が、命令コードによって示されるような自由命令コード識別子であるかどうかをチェックする。ステップ６１５で、メモリから呼び出された命令コード識別子が、自由命令コード識別子ではないという結果が出れば、ステップ６２０で、この命令コード識別子は、変更されないまま支援手段４０を通過し、アドレスバスおよびデータバス７０，８６を介して、ＣＰＵ３０へ転送される。その後、ＣＰＵ命令コードは、ＣＰＵ３０によって、従来の方法でデコードされ、実行される。しかし、記憶装置２０からの命令コード識別子が、自由命令コード識別子であれば、ステップ６２５で、命令コードをデコードする。これは、どの自由命令コード識別子３１０が、命令コード識別子であるかを決定するためである。
【００７４】
図３の実施例では、既に説明したとおり、要求される命令コード識別子が、自由命令コード識別子であると考えられる。この自由命令コード識別子は、直接アドレス指定と、復帰を意図するジャンプ命令を参照する。ステップ６３０では、支援手段４０が、自由命令コード識別子に備えられているアドレス部から、２０ビットアドレスを生成する。この２０ビットアドレスに、新しいジャンプ命令が関連付けられている。また、この２０ビットアドレスは、自由命令コード識別子に対応するジャンプ命令の宛先アドレスである。このステップは、例えば、さらに、自由命令コード識別子の他の部分から直接的に、または、ＣＰＵ３０に対する内部または外部レジスタから間接的に、相対値を特定すること、および、加算器３２０によってアドレス部に表示される２０ビットアドレスに相対値を加算することを含んでいてもよい。自由命令コード識別子は、例えば、命令コードのために１バイトを備えており、さらに３つのバイトを備えている。これらのうち２０ビットが、２０ビットアドレスを示し、残りの４ビットは、相対値を示している。
【００７５】
ステップ６３５では、支援手段４０によって、ＣＰＵ３０に、自由命令コードが供給される。自由命令コードは、ＣＰＵ命令コードに属していないが、命令セット２９０を決定する。ステップ６３５は、直接２０ビットアドレス指定を有するジャンプ命令に対応している自由命令コード識別子が、４バイトを必要とし、その一方で、ＣＰＵ３０に供給され、続いて実行される、ＣＡＬＬ命令のＣＰＵ命令コード識別子は、たった３バイトであるという事実を考慮して、ＣＰＵにあるプログラムカウンタ２４０を増加させるために備えられている。しかし、復帰を意図しないジャンプ命令を行なうほうが好ましい場合には、ステップ６３５も省いてもよい。なぜなら、この場合、プログラムカウンタの状態は、復帰アドレスとして必要ないからである。後続のステップについて以下に説明するような他の方法で、ＣＰＵ３０のスタック２７０に書き込みが行なわれる場合にもステップ６３５を省ける。
【００７６】
さらに、ステップ６４５では、支援手段４０によってＣＰＵ３０に、一連のあらかじめ定義されたＣＰＵ命令コード識別子が供給される。ＣＰＵ命令コード識別子は、ＣＰＵ３０の命令セット２９０から少なくとも１つのジャンプ命令を含んでいる。このジャンプ命令は、１６ビットアドレスを参照する。１６ビットアドレスは、最終的に、コード記述子３４０と共に、２０ビットジャンプアドレスを生成するものである。これは、例えば、ステップ６００〜６１０に基づいて後続の命令要求を、適切に設定できるためである。上記一連の動作は、自由命令コードおよび内部レジスタから決定される２０ビットアドレスによっている。
【００７７】
ステップ６５０では、ＣＰＵ３０が、あらかじめ定義された、一連のＣＰＵ命令コード識別子をデコードし、対応する命令を実行する。ステップ６５５にまとめられているように、一連のＣＰＵ命令コード識別子は、ＣＰＵ３０が、一連のＣＰＵ命令コード識別子を実行する際に、プログラムカウンタＰＣを、内部レジスタから決定された２０ビットアドレスの下部、すなわち、下位１６ビットを設定し、スタック２７０を、自由命令コード識別子に続く命令コード識別子を示す２０ビットアドレスによって充填し、スタックポインタ２３０を、３バイトだけ増やすように備えられている。ステップ６３５では、支援手段４０が、ＣＰＵ３０へ、例えば復帰を意図するジャンプ命令を供給する。このジャンプ命令は、１６ビット宛先アドレス参照する。この１６ビット宛先アドレスは、アドレス部から決定され、６４ｋバイトバンクに関連する２０ビットアドレスの相対値に対応している。この６４ｋバイトバンクは、プログラムカウンタ２４０を１６ビット宛先アドレスに設定するために、２０ビットアドレスを含んでいる。さらに、この６４ｋバイトバンクは、ステップ６４５では、自由命令コード識別子に続く命令コード識別子の２０ビットアドレスをスタック２７０へ入力するために、２０ビットアドレスの欠落ビットに対応するスタックプッシュ命令（一般的には、ＰＵＳＨ命令と表示される。）を含んでいる。あるいは、支援手段４０は、ＣＰＵ３０へ、ステップ６３５では、例えば復帰を意図しないジャンプ命令を供給し、さらに、ステップ６４５では、自由命令コード識別子に続く命令コード識別子の２０ビットアドレスをスタック２７０へ入力するために、２０ビットアドレスの一部にそれぞれ対応する３つのスタックプッシュ命令（一般的には、ＰＵＳＨ命令と表示される。）を供給する。
【００７８】
ステップ６６０では、支援手段４０が、アドレス部から決定された２０ビットアドレスに基づいて、コード記述子３４０の実現化または適合を行なう。従って、その結果、コード記述子３４０は、２０ビットアドレスが、コードメモリ窓３７０に含まれており、プログラムカウンタ２４０が、コードメモリ窓３７０内で、指定された位置を示すように設定されている。このように、支援手段４０は、コード記述子３４０を管理する。
【００７９】
自由データアクセスに応じて、本発明によるコードジャンプの利点は、ＣＰＵがメモリサイズを最大限アドレスできるように必要であるコード記述子の管理を、ソフトウェアによるコード記述子の再設定によって行なう必要はなく、この再設定を、自由命令コード識別子によって行える点である。この自由命令コード識別子は、２０ビットジャンプ命令に対応し、この自由命令コード識別子は、ＣＰＵ３０へ情報を供給するため、支援手段４０に応答する。この情報は、２０ビットアドレスに関連付けられていると同時に、コード記述子を更新または適合するものである。特に、コード記述子を新しく、または、再設定するためのソフトウェアの技術的な経費（Aufwand）が非常に高くつく（aufwendig）ような、復帰を意図するジャンプの場合、ジャンプ自由命令コード識別子が非常に有利である。さらに、命令セット２９０からのジャンプ命令を依然として使用できる。なぜなら、支援手段４０は、命令セット２９０を決定するＣＰＵ命令コードを透過させ、これに対して応答しないからである。従って、命令セット２９０からのジャンプ命令は、現在設定されている、または、固定されているメモリ窓３７０に対して実行される。
【００８０】
図２に関して説明したとおり、データアクセスの場合のように、コードジャンプの場合も、ジャンプ命令が関連付けられている２０ビットアドレスを生成するための様々な可能性がある。特に、図２の実施例に対応して間接アドレス指定方式を使用する自由命令コードが考えられる。
【００８１】
これまで、コードジャンプまたはデータアクセスに関連付けられている自由命令コードが生じる際の操作方法を参考にして、図１の制御装置の操作方法を説明してきた。以下では、特別な実施例について説明する。これらの実施例は、上記の簡単な説明（Darstellung）の様々な可能な変更および改善に関連するものである。
【００８２】
支援手段４０によって実行され、自由命令コードが割り当てられている命令を、支援手段４０への割り込みが、ＣＰＵ３０の割り込み線９０、または、ＭＭＵ５０の割り込み線１３０にある割り込み信号によって実行できないような最小単位の命令（atomare Befehle）として実現できる。この場合、支援手段は、受信する割り込み信号（Unterbrechungssignale）を遮断する。これに加えて、一連の割り込み不可能なコード（Codesequenzen）を、最小単位の命令として実現するために、他の自由命令コード３１０を使用できる。
【００８３】
これまで、コードおよびデータメモリ窓３７０または３８０のサイズが、６４ｋバイトであり、１つのコード記述子および１つのデータ記述子３３０または３４０が、ＭＭＵ５０において管理されることを説明してきたが、コードメモリ窓３７０および／またはデータメモリ窓３８０が、合計で６４ｋバイトになるように複数のセグメント（Segmente）に分割されていてもよい。可能なセグメントのサイズは、例えば１６ｋバイトまたは３２ｋバイトである。メモリ窓３７０，３８０のセグメントサイズがそれぞれ３２ｋバイトずつの場合、２つのデータ記述子および２つのコード記述子が、ＭＭＵ５０において管理される。例えば、ＲＯＭまたはＸＲＡＭメモリ領域に関連付けて、メモリセグメントを１つずつ使用し、また、ＥＥＰＲＯＭメモリ領域に関連付けて、残りのメモリセグメントを１つずつ使用することもできる。２０ビットジャンプの場合、２つの記述子またはただ１つの記述子が、自動的に適合される。３２ｋプログラムカウンタオーバーフロー（Programmzaehlerueberlauf）、つまり、プログラムカウンタが、３２ｋを上回る場合、ＭＭＵ５０は、自動的に、増加または減少する。オーバーフローまたはアンダーフロー（Unterlauf）を、相対番地ジャンプのために、正しく取り扱う必要がある。セグメント外へ出る相対番地ジャンプの場合、例えばＣＰＵのプログラムカウンタを適合し、ＭＭＵ記述子を再設定する。セグメントのプログラムカウンタを終了する場合も、いわゆる自動加算器（Autoinkrementer）の処理は、例えば、相対番地ジャンプの場合と全く同じである。
【００８４】
さらに、例えばレジスタＲ１〜Ｒ３などの内部レジスタの、複数のバンクを備えることができ、支援手段がレジスタＲ１〜Ｒ３の内容にアクセスまたは問合せ（Abfrage）するときに、これまで説明してきたように、ちょうど設定されているバンクを使用できる。さらに、一般的に、ＣＰＵの他の内部レジスタも、上記のレジスタＲ０〜Ｒ７、ｄａｄｒおよびＤＰＴＲとして、間接アドレス指定のために使用できる。
【００８５】
上記の説明を参考にすると、さらに、図１の制御装置の構造を様々に変更（Modifikationen）できることが分かる。それゆえ、ＭＭＵ５０と支援手段４０とを相互に分断する必要はない。記述子とスタックの拡張（Stackerweiterung）は、例えば、支援手段４０によってまたは支援手段４０を用いて管理できる。ＣＰＵ３０の命令セット２９０からのメモリアクセス命令、または、ジャンプ命令を用いるプログラムの支援を省き、コードジャンプおよびデータアクセスのために自由命令コードを用いるプログラムのみを支援する場合、データ記述子を完全に省くこともできる。２０ビットデータアクセスまたはジャンプ命令のみを用いるプログラムの利点は、このようなプログラムのために、連続でアドレス指定できる1メガバイトの記憶装置を管理、または、アドレス指定できる点である。さらに、ＣＰＵを他の構造にしてもよい。その結果、例えば、アキュムレータレジスタ２５０、スタックポインタ２３０、およびプログラムカウンタ２４０が、ＩＲＡＭ２２０において管理されていてもよい。とりわけ、ＩＲＡＭは、任意の他のメモリ型（Speicherart）、または、これらの組み合わせを含んでいてもよい（例えばＮＶＭ）。
【００８６】
図２および図３に示す順序を参照すると、これらの順序は、ステップの順番に関連して変更できることが分かる。
【００８７】
３バイトがスタックにあり、ＭＭＵが自動的に再構成されている、復帰を意図する上記２０ビットコードジャンプ命令（ＦＣＡＬＬ）に加えて、または、この命令の代わりに、既述の２０ビットＦＣＡＬＬ命令と同じように、しかし、復帰ジャンプデータをスタックに蓄積せずに実行される、復帰を意図しない２０ビットコードジャンプ命令（ＦＪＭＰ）が備えられていてもよい。例えば、復帰ジャンプオプション（Ruecksprungoption）を有する、または、復帰を意図する全ての２０ビットジャンプ命令では、３バイトが、スタックに書き込まれる。この場合、ＣＰＵ復帰ジャンプ命令（ＲＥＴ）は、スタックから３つのバイトが取り出されるように備えられている。スタックから取り出されたバイトを基礎として、コード記述子を、最後のＣＡＬＬ命令の前に置くことができる。各割り込みレベル（Interruptpegel）のために、適切なコンテキスト（Kontext）を蓄積できる。これは、命令セット２９０への復帰ジャンプすなわち復帰ジャンプ命令の生じる場合に、古いコンテキストを再保存しなくてもよいためである。
【００８８】
従って、制御装置の上記実施例は、複数の問題を解決する。問題とはすなわち、処理速度に関しては十分であるが、アドレス指定容量に関しては不十分なアーキテクチャを使用する場合がもとである。これまでに説明してきた制御装置は、拡張されたアドレス空間に存在するデータに直接アクセスできる。特別な実現では、アクセス時間が、現在設定されているメモリ窓にあるデータにアクセスする場合よりも、２クロックサイクル分長いだけである。さらに、混合アドレス指定、つまり、直接アドレス指定方式と間接アドレス指定方式との双方を使用する場合は、例えばデータポインタと、４ビットの自由命令コードの空白部とを使用しながら、支援手段にある２４ビット加算器を用いて、データポインタを変更せずに、隣り合う複数のバイト（２4＝１６バイト）のデータに直接アクセスする。このことは、８ビットを、自由命令コードのアドレス部と、データポインタとにより生成されるアドレスに関する相対番地として使用して行なう。ＭＭＵによるコード分割（Codesegmentierung）は、設定されていないメモリ窓にあるコードを実行するために、プログラマー（Programmierer）がＭＭＵを正確に再構成する必要がなくなることで、簡単になる。再構成および復元は、自由命令コードを基礎とする２０ビットコードジャンプ命令または２０ビットデータアクセス命令を使用して、自動的に行なう。その結果、プログラムマーは、１ＭＢの物理アドレス空間全体を、連続でアドレス指定可能なアドレス空間とみなすと共に、この場合、ＣＰＵの命令セットのみを基礎するプログラムのための下位互換性は、維持されたままである。一般的なポインタのために、ソフトウェアによる複雑なデコードの代わりにハードウエア的なデコード（Hardwaretechnische Decodierung）を使用する。このデコードは、かなり速い処理を可能にする。２０ビットデータアクセスの場合のように、一般的なポインタの取り扱いの際にも、データポインタを変更せずに連続するデータに効率的にアクセスするために、自由命令コード識別子の使用されていない部分の相対値を使用できる。さらに、内部スタック領域を、外部領域に拡張でき、一連の割り込みできないコードを、最小単位の命令として実現できる。既存のＣＰＵレイアウトをほんの少し変更するだけでこの新規性と改善とが達成される。このことは、自由命令コード識別子を、一連の命令コード識別子に置換え、ＣＰＵ外部制御信号を、状態遷移機械（Zustandsmaschine）として実行されてもよい支援手段またはシェル（Schale）を用いて、命令は外部からは指定された命令のように見えるように補正することにより行なわれる。
【００８９】
特に、チップカード分野における本発明の利点は、性能余剰（Leistungsfaehigkeitsueberschuss）および顧客側のコードの余分な経費（Codezusatzaufwand）削減と同時に、効果的なコンパイラ支援（Compilerunterstuetzung）が得られるという点である。
【００９０】
ＭＭＵと支援手段については、これらを１つの装置として実現してもよい。
【００９１】
さらに、本発明は、上記の８０５１アーキテクチャ以外の他の制御装置キテクチャに使用でき、従って、メモリ窓と記憶装置とに関するメモリサイズ表示、および、バイト毎の読み出し、および、アドレスバスおよびデータバスの数は、単なる例として示したものである。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施例の制御装置のブロック図である。
【図２ａ】自由命令コードが、間接アドレス指定方式による読み出し命令に対応する場合に、図１の制御装置が実行するステップを示すフローチャートである。
【図２ｂ】自由命令コードが、間接アドレス指定方式による読み出し命令に対応する場合に、図１の制御装置が実行するステップを示すフローチャートである。
【図３】自由命令コードが、復帰を意図する直接アドレス指定によるジャンプ命令に対応する場合に、図１の制御装置が実行するステップを示すフローチャートである。
【図４】ＣＰＵのアドレス指定可能性を拡張するために従来の可能な解決策を使用している制御装置のブロック図である。
【符号の説明】
【００９３】
１０    制御装置
２０    記憶装置
３０    中央処理装置（ＣＰＵ）
４０    支援手段
５０    メモリ管理装置（ＭＭＵ）
６０    データバス
８０    アドレスバス
９０    割り込みバス
１００    データバス
１２０    アドレスバス
１３０    割り込みバス
１４０    データバス
１５０    データバス
１８０    アドレスバス
１９０    アドレスバス
２１０    デコーダ
２２０    ＩＲＡＭ
２３０    スタックポインタ
２４０    プログラムカウンタ
２４５    データポインタレジスタ
２５０    アキュムレータ
２６０    内部レジスタ
２７０    スタック
２８０    ＣＰＵ−演算コード
２９０    命令セット
３００    デコーダ
３１０    自由演算コード
３２０    加算器
３２５    外部データポインタレジスタ
３３０    データ記述子
３４０    コード記述子
３５０    割り込み記述子
３７０    コードメモリ窓
３８０    データメモリ窓
５４２    制御
８００    制御装置
８０５    中央処理装置（ＣＰＵ）
８１０    メモリ管理ユニット（ＭＭＵ）
８１５    記憶装置
８２０    アドレスバス
８２５    データバス
８４０    アドレスバス
８４５    データバス
８５５    命令セット
８６０    データ記述子
８６５    コードメモリ窓
８７０    管理コード
８７５    コード記述子
８８０    データメモリ窓
８８５    内部レジスタ
８９０    スタック
【図１】
0003710465.tif 000005
【図２ａ】
0003710465.tif 000006
【図２ｂ】
0003710465.tif 000007
【図３】
0003710465.tif 000008
【図４】
0003710465.tif 000009