(57)【要約】本発明は、制御ユニットと、機能を有する少なくとも１つのプログラムを用いてフリープログラミングするためのメモリ、データをバッファするためのスタック、および少なくとも１つのレジスタを有するレジスタバンクを有するマイクロプロセサ回路を提示する。このマイクロプロセッサ回路は、複数のビットを格納する補助レジスタをさらに有し、そのビットの各々は、レジスタバンクのレジスタの１つに割り当てられ、レジスタバンクのそれぞれのレジスタが情報アイテムを含むか否かを示す。【選択図】  図１
2004523827.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの制御ユニット（１）と、機能を有する少なくとも１つのプログラムを用いてフリープログラミングするための少なくとも１つのメモリ（４）と、データをバッファするためのスタック（５）と、少なくとも１つのレジスタ（３）を有するレジスタバンク（２）とを有するマイクロプロセッサ回路であって、
補助レジスタ（６）は、多数のビットを格納し、該ビットの各々は、該レジスタバンク（２）の該レジスタ（３）の１つに割り当てられ、かつ該レジスタバンク（２）のそれぞれのレジスタ（３）が情報アイテムを含むか否かを示すことを特徴とする、マイクロプロセッサ回路。
【請求項２】
前記補助レジスタ（６）は、前記レジスタバンク（２）の前記レジスタ（３）の数に対応する数のさらなるレジスタ（７）を有し、該さらなるレジスタ（７）の各々は、単一のビットを格納するために提供されることを特徴とする、請求項１に記載のマイクロプロセッサ回路。
【請求項３】
前記補助レジスタ（６）は、正確に１つのさらなるレジスタを有し、該さらなるレジスタは、ビット列を格納するために提供され、該ビット列は、前記レジスタバンク（２）におけるレジスタ（３）の数に対応することを特徴とする、請求項１に記載のマイクロプロセッサ回路。
【請求項４】
前記補助レジスタ（６）は、前記レジスタバンク（２）のレジスタ（３）であることを特徴とする、請求項３に記載のマイクロプロセッサ。
【請求項５】
前記レジスタバンクに含まれる前記データを格納するために、プログラマによって管理され得ないさらなるスタック（９）が提供されることを特徴とする、請求項１〜４のいずれか１つに記載のマイクロプロセッサ回路。
【請求項６】
前記レジスタバンクは、第１のレジスタを有する第１の領域（１０）と、第２のレジスタを有する第２の領域（２０）とを有し、少なくとも該第１のレジスタに、前記補助レジスタ（６）内のビットが割り当てられることを特徴とする、請求項１〜５のいずれか１つに記載のマイクロプロセッサ回路。
【請求項７】
前記レジスタバンク（２）の前記第１の領域（１０）が、複数の部分領域（１１、１２）に分割可能であり、該複数の部分領域は、それぞれ、前記プログラムの前記機能のうちの１つにそれぞれに利用可能になる、請求項６に記載のマイクロプロセッサ回路。
【請求項８】
マイクロプロセッサ回路を動作させる方法であって、
該マイクロプロセッサ回路を初期設定すると、前記補助レジスタ（６）のすべてのビットが第１の値に設定されることと、
前記レジスタバンク（２）のレジスタ（３）にデータを書き込むと、該補助レジスタの前記割り当てられたビットが第２の値に設定されることと
を特徴とする、請求項１〜７のいずれか１つに記載のマイクロプロセッサ回路。
【請求項９】
前記レジスタバンク（２）の前記レジスタ（３）の１つからのデータの読み出しは、前記補助レジスタ（６）の前記割り当てられたビットが前記第２の値を有する場合にのみ可能であることを特徴とする、請求項８に記載の方法。
【請求項１０】
前記補助レジスタ（６）に割り当てられたビットが第１の値を有する、前記レジスタバンク（２）の前記レジスタ（３）の１つからデータを読み出すと、該データ「０」が戻されることを特徴とする、請求項８または９に記載の方法。
【請求項１１】
第１の機能を第２の機能に変更されると、前記レジスタバンク（２）の前記レジスタ（３）における該第１の機能に関連するデータ、および、前記補助レジスタ（６）の前記ビット列は、連続的に前記スタックまたは前記さらなるスタックに格納されることを特徴とする、請求項８〜１０のいずれか１つに記載の方法。
【請求項１２】
前記補助レジスタ（６）の前記データおよび前記ビット列を前記スタックまたは前記さらなるスタックに格納した後、該補助レジスタの該ビットは、第１の値に設定されることを特徴とする、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１の前提部によるポータブルデータキャリアのマイクロプロセッサ回路に関する。
【背景技術】
【０００２】
上述のタイプのマイクロプロセッサ回路は、好適には、集積回路が備えられた、いわゆるスマートカード、すなわち身分証明書、クレジットカード、チャージカード等において用いられる。しかしながら、マイクロプロセッサ回路は、さらに、対応するインターフェースを介して上述のカードと通信する、いわゆる支払いトランザクションモジュールにおいて用いられ得る。
【０００３】
このようなカードの重要な利点の１つは、カード所有者に多様な用途が可能になることである。集積回路に含まれるマイクロプロセッサ、および関連する格納手段は、カードそれ自体における幅広いデータ処理を可能にする。これに対して、磁気ストリップが提供されたカードは、例えば、データ処理のオペレーション全体が外部で実行されることを必要とする。
【０００４】
カードの製造業者は、マイクロプロセッサに、例えば、外部で入力されたコードと格納されたコードとを比較するための手順等の基本的機能を実行する常駐オペレーティングシステムを備え得る。マイクロプロセッサと関連するメモリは、オペレーティングシステムを格納するためだけでなく、複数の機能、および例えば、セキュリティの点検のために必要であり、かついずれにしても秘匿されなければならないパラメータからなる特定のアプリケーションを格納するためにも利用される。
【０００５】
カードの多様な用途は、関連するプログラムを有するオペレーティングシステムを出発点とした場合に、特定のインターフェースが規定され、メモリまたはメモリ領域が外部プログラムのために確保された場合に達成される。カード製造業者は、その後、ユーザ、すなわち、カードを発行する組織に、外部プログラムをプログラムするためのメモリまたはメモリ領域を提供する。この外部プログラムにおいて、この組織は、次に、オペレーティングシステムに依存せず、特定の組織のみに関する特定のオペレーションを規定し得る。
【０００６】
上述のタイプのマイクロプロセッサ回路には、現在実行されている機能、いわゆるコンテキストに利用可能である少なくとも１つのレジスタバンクが提供される。第１の機能からの第２の機能の機能を呼出す場合、第１の機能のデータによって占有されるレジスタは、バッファ記憶装置、スタックに格納されなければならない。呼出された第２の機能において、これらのレジスタは、その後、書き込むための第２の機能に利用可能である。第２の機能から第１の機能に戻ると、スタックにバッファされたデータが再びレジスタに書き込まれなければならない。
【０００７】
個々のレジスタについて、対応する書き込み／読み出しオペレーションにより、レジスタをスタック上に格納するか、またはスタックからレジスタを読み出すことは、比較的多数のインストラクションを必要とし、これは、プログラムコードの著しい拡大に至る。さらに、機能を変更するか、または機能を呼出す場合、レジスタ内の第１の機能と関連するデータが第２の機能によって依然として読み出され得るという問題がある。これは、例えば、クレジットカードにおいてセキュリティの問題であり得る。これによって、例えば、第２の機能が、すなわち、場合によっては、第１の機能にのみ知られるべきレジスタ内のなお機密のデータが読み出され得るからである。
【０００８】
従来技術から、スタックに格納されるべき、レジスタバンクの個々のレジスタを選択し得るために用いられるインストラクションが公知である。インストラクション「ＳＴ  ＲＥＧＭＡＳＫ［ｂｉｔ  ｍａｓｋ］［ＳＰ］」は、内容を有するレジスタバンクのレジスタのみを選択し、かつこれらのレジスタをスタックに格納するためにビットマスクを用いることができる。さらに、このインストラクションは、スタックの次の空いたアドレスを示す「スタックポインタ  ＳＰ」を含む。データによって占有されるのはどのレジスタかという情報は、コンパイラ、すなわち、ＣＰＵによって規定される。ビットマスクは、これらの情報アイテムから生成される。データがスタックから読み出されてレジスタに戻される場合、コンパイラは、本来占有されていたのはどのレジスタかを確認することができる。データは、ビットマスクのこの情報により、正しいレジスタに戻されて格納される。
【０００９】
書き込まれたレジスタをスタックに格納するために単一のインストラクションが用いられ得る。インストラクションＳＴ  ＲＥＧＭＡＳＫ［ｂｉｔ  ｍａｓｋ」［ＳＰ］が呼出されると、レジスタは、スタックに直接書き込まれる。しかしながら、インストラクション全体を実行するためには、複数のクロックサイクルが必要とされる。その後にのみ、第２の機能が呼出され得、これにレジスタバンクのレジスタが利用可能になる。さらに、スタックが、プログラマにアクセス可能であり、従って、他のすべてのプログラムまたは機能にもアクセス可能であるメモリの部分領域をなすことは不利である。従って、このデータを密かに探り出すことが可能である。
【００１０】
また、いわゆる「レジスタウィンドウ」の使用が公知である。ここで、１つの機能に１つのレジスタウィンドウが利用可能である。第２の機能が呼出された場合、「レジスタポインタ」の変更によりさらなるレジスタウィンドウが選択される。従って、このさらなるレジスタウィンドウは、書き込むための第２の機能に利用可能である。レジスタバンクは、複数のレジスタウィンドウを有し得る。書き込まれていない最後のレジスタウィンドウが機能によって呼出され、かつ書き込まれるとすぐに、１つ以上のレジスタウィンドウのレジスタがスタックに同時にバッファ格納され得る。従って、現在アクティブな機能のレジスタが同時に書き込まれること、および前にアクティブだった機能のレジスタ内容を格納することが可能である。従って、特に時間節約的な変形である。しかしながら、レジスタがデータを有するか否かにかかわらず、レジスタウィンドウのすべてのレジスタがスタックに書き込まれることが不利なことである。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従って、本発明は、簡単な措置を用いて、１つの機能のレジスタコンテンツが別の機能にアクセスされないことを可能にする回路および方法を規定するという目的に基づく。
【課題を解決するための手段】
【００１２】
本目的は、請求項１および８に規定される特徴に従う本発明によりそれぞれ達成される。
【００１３】
本発明によると、マイクロプロセッサ回路は、多数のビットを格納する補助レジスタを有する。ビットの各々は、レジスタバンクのレジスタの１つに割り当てられ、レジスタバンクのそれぞれのレジスタが情報アイテムを含むか否かを示す。
【００１４】
レジスタバンクのレジスタへのそれぞれのビットに割り当ては、書き込まれたレジスタと書き込まれないレジスタとを簡単な態様で区別することを可能にする。結果として、レジスタ内容がスタックに格納される場合、実際にデータを有するレジスタのみを格納することが可能である。
【００１５】
データを有するレジスタがコンパイラによって検出される必要がないことにより、レジスタは、迅速、エネルギー効率的、かつわずかなプログラムコードで、すなわち単一のインストラクションで格納され得る。
【００１６】
第１の実施形態において、補助レジスタは、レジスタバンクのレジスタの数に対応する、複数のさらなるレジスタを有する。これらのレジスタの各々は、１つのビットを格納するために提供される。従って、補助レジスタは、同様に、レジスタバンクをなす。
【００１７】
第２の実施形態によると、補助レジスタは、正確に１つのさらなるレジスタを有する。このさらなるレジスタは、レジスタバンクのレジスタの数に対応するビット列を格納するために提供される。補助レジスタは、好適には、レジスタバンクのレジスタである。従って、この第２の実施形態において、それ自体公知のマイクロプロセッサ回路を改変することは必要とされない。なぜなら、補助レジスタは、レジスタバンクのレジスタ内に格納されるからである。最下位または最上位のレジスタは、好適には、このために用いられる。
【００１８】
マイクロプロセッサ回路の好適な改良点において、プログラマによって管理され得ないさらなるスタックが、レジスタバンクに含まれるデータを格納するために提供される。このさらなるスタックは、いわゆる「コンテキスト安全領域」として公知である。この領域は、メモリの部分であり得るハードウェア内部スタックである。このさらなるスタックに格納されるデータは、メモリに格納されるソフトウェアにより問い合わせられるか、または書き込まれ得ない。このさらなるスタックの管理は、オペレーティングシステムにのみ依存する。従って、これらのデータの操作は、不可能である。
【００１９】
レジスタバンクは、好適には、第１のレジスタを有する第１の領域および第２のレジスタを有する第２の領域であり、少なくとも第１のレジスタには、補助レジスタ内のビットが割り当てられる。レジスタバンクの第１の領域（上部コンテクスト）および第２の領域（下部コンテクスト）への分割は、機能が呼出された場合に、第１の機能のパラメータが、多くの場合、第２の機能に転送されるという事実による。これらのパラメータは、第２の領域のレジスタに格納される（下部コンテキスト）。この第２の領域から、第２の呼出された機能は、その後、さらなる処理のためのパラメータをフェッチする。対照的に、レジスタバンクの第１の領域（上部コンテクスト）が、第２の呼出された機能によってのみ用いられ、かつ書き込まれる。第３の機能が第２の機能によって呼出された場合、レジスタバンクの第１の領域のレジスタのみをスタックに格納するだけで十分である。対照的に、第２の領域のレジスタにおける転送パラメータは、上書きされ、場合によっては、第３の機能によって読み出しさえされ得る。
【００２０】
当然、第２の領域のレジスタが補助レジスタに割り当てられ、従って、機能の呼出しおよび機能の変更の際に、レジスタバンクのすべてのレジスタ、すなわち、第１の領域のレジスタおよび第２の領域のレジスタのレジスタがスタックに格納されることもまた考えられ得る。
【００２１】
本発明をさらに改良すると、レジスタバンクの第１の領域は、機能の１つとしてそれぞれ利用可能である複数の部分領域に分割され得る。複数の部分領域への分割は、導入部で述べられたレジスタウィンドウに対応する。レジスタバンクの最初の領域が十分に多い数のレジスタを有する場合、この変形は、極めてエネルギー効率的、かつ迅速な手順を可能にする。これは、特に、ポータブルデータキャリア内のマイクロプロセッサ回路の場合、非常に有利である。
【００２２】
上述のマイクロプロセッサ回路を動作するための本発明による方法の場合、マイクロプロセッサ回路は、マイクロプロセッサ回路を初期設定する際に、補助レジスタのすべてのビットが第１の値に設定される。データがレジスタバンクのレジスタに書き込まれる場合、補助レジスタに割り当てられたビットが第２の値にセットされる。マイクロプロセッサ回路の初期設定は、活性化されると生じ、従って、補助レジスタのすべてのレジスタおよびすべてのビットが規定された公知の状態にあることが保証される。データが書き込まれた場合、それぞれのビットは、自動的に第２の値にセットされて、これにより、そのレジスタが値を有することが表示される。補助レジスタのビットの第１の値は、例えば、０であり、他方、補助レジスタのビットの第２の値は１であり得る。当然、逆に割り当ても可能である。
【００２３】
本発明による方法のさらなる実施形態において、レジスタバンクのレジスタの１つからのデータの読み出しは、補助レジスタに割り当てられたビットが第２の値を有する場合にのみ可能である。これは、レジスタに割り当てられたビットが第２の値、例えば１を有する場合にのみ、実際にレジスタに格納されたデータが読み出されることを意味する。対照的に、補助レジスタに割り当てられたビットが第１の値を有する場合、場合によってはレジスタに位置するデータは、マイクロプロセッサに戻されないが、その代わりに規定された値、例えば、０である。
【００２４】
これにより、レジスタを消去するために、レジスタ自身が消去される必要がなく、補助レジスタにおいて割り当てられたビットを第１の値にセットするだけで十分であることが明らかになる。これは、補助レジスタにおける実際のデータがもはや読み出され得ないことを十分に確実にする。従って、複数のレジスタは、簡単、迅速かつ電力節約的に消去され得る。
【００２５】
本発明による方法のさらなる発展において、第１の機能から第２の機能に変更される場合、レジスタバンクのレジスタにおける第１の機能に関連するデータおよび補助レジスタのビット列は、スタックまたはさらなるスタックに連続的に格納される。換言すると、これは、レジスタバンクのすべてのレジスタがスタックに格納されるのではなく、むしろ、補助レジスタに第２の値を有するビットを有するレジスタのみが格納されることを意味する。レジスタのデータに加えて、補助レジスタのビット列は、同様に、戻される場合、データを正しいレジスタに復元するために、スタックに格納される。
【００２６】
スタックまたはさらなるスタック内の補助レジスタのデータおよびビットシーケンスが格納された後、補助レジスタのビットが第１の値に設定された場合、さらに有利である。これは、上述のようにレジスタの削除に対応する。従って、レジスタ自体は実際に消去されないが、関連する補助レジスタのビットのみが消去される。
【００２７】
本発明およびその利点は、以下の図を参照してより詳細に説明される。
【００２８】
本発明によるマイクロプロセッサ回路の構造が図１に示される。このようなマイクロプロセッサの構造は公知であるので、原則的に、本明細書中では詳細に説明されない。従って、図示は、本発明にとって必要であるコンポーネントに制限される。
【００２９】
マイクロプロセッサ回路は、制御線３０を介してメモリ４と接続される制御ユニット１、レジスタバンク２、補助レジスタ６、および以下においてさらなるスタックと呼ばれるハードウェア内部スタック８を備える。メモリ４は、異なった領域に分割され得る。例として、このメモリは、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）およびＥＥＰＲＯＭを含み得る。これらの上述のメモリ領域の部分は、秘匿されなければならないセキュリティに関連するデータを部分的に含む。さらに、メモリ４は、迅速にアクセスされ得るバッファを表すスタック５を含む。スタックは、メモリ４内に保持されるすべてのプログラムによって利用され得る。これは、スタック５が、プログラムの各機能に公然とアクセス可能であることを意味する。
【００３０】
本実施例において、レジスタバンク２は、８つのレジスタ３を有し、正確に１つのデータが各レジスタ３に格納され得る。各レジスタ３は、補助レジスタ６のさらなるレジスタ７に割り当てられる。正確に１つのビットが、さらなるレジスタ７の各々に格納され、このビットは、データが割り当てられた３に格納されるか否かに関する情報アイテムを含む。
【００３１】
レジスタ３に格納されたデータが好適には機能の変更の場合に格納されるさらなるスタック８が、いわゆるハードウェア内部スタックである。これは、このスタックが、メモリ４に格納されたプログラムにアクセス可能でないことを意味する。従って、プログラムは、このメモリ領域にアクセスし得ない。むしろ、管理は、オペレーティングシステムが担う。図１において、さらなるスタック８は、メモリ４から離れてセットされることが示されるが、さらなるスタック８は、当然、メモリ４の一部でもよい。
【００３２】
図１におけるレジスタ２および補助レジスタ６の例示は、レジスタ３およびさらなるレジスタ７に割り当てを説明することができるためにのみ選択された。さらなる説明から明らかになるように、補助レジスタ６は、必ずしもレジスタバンク２と異なるレジスタである必要はない。
【００３３】
この、および以下の実施形態において、例示的に、さらなるレジスタ７における論理値「１」の場合、有効データは、レジスタバンク２に割り当てられたレジスタ３に書き込まれたことが想定される。
【００３４】
図２および図３は、レジスタバンク２および補助レジスタ６の割り当ての２つの可能な実施形態を示す。
【００３５】
図２において、レジスタバンク２および補助レジスタ６は、相互に分離したレジスタバンクである。それぞれのレジスタ３、７の数は同じである。実施形態に依存して、任意の数のビットがレジスタバンク２のレジスタ３に格納され得るが、補助レジスタ６のさらなるレジスタ７は、各場合について１つのビットを格納することができるにすぎない。
【００３６】
本例示の実施形態におけるように、レジスタに下から上に０〜７と連続的に番号が付けられた場合、レジスタ２、３および４が有効なデータを有することが図２から見出され得る。それぞれ対応するさらなるレジスタ７は、従って、論理値「１」を含む。逆に、データは、残りのレジスタには書き込まれないので、割り当てられたビットは論理値「０」である。
【００３７】
図３Ａおよび図３Ｂにおいて、ハードウェアを変更する必要がない。なぜなら、本発明による補助レジスタが、レジスタバンク２のレジスタ３に格納されるからである。この結果、合計８つのレジスタがあると仮定すると、現在実行される機能を書き込むために、７つのみが利用可能であるということである。図３Ａにおいて、補助レジスタ６’は、レジスタ７に格納される。図３Ｂにおいて、補助レジスタ６”は、レジスタ０に格納される。この場合、補助レジスタ６’、６”の最上位ビットは、例えば、最下位レジスタに対応する。この場合、レジスタ０である。
【００３８】
本例示的実施形態において、８ビットのワード長を有するデータは、レジスタバンク２のレジスタ３内に格納され得る。この場合、補助レジスタ６’、６”の最下位ビット０は、どのレジスタにも割り当てられない。あるいは、最上位ビット７もまた、どのレジスタにも割り当てられないのでビット０〜６は、レジスタバンク２’のそれぞれのレジスタ３に割り当てるために用いられる。同様に、補助レジスタ６’の最上位ビットは、レジスタバンクの最上位レジスタ３に割り当てられ、他方、最下位ビットは、レジスタ０に割り当てられ得る。図３Ｂは、補助レジスタ６”がレジスタ０に配置されるレジスタバンク２”を示す。上述の改変は、同様に用いられ得る。
【００３９】
データをレジスタバンクのレジスタに書き込みおよび読み出しする場合のオペレーションの方法は以下のとおりである。データがレジスタバンク２のレジスタ３に書き込まれると、すぐに補助レジスタ６、６’、６”の対応するビットが、すべての例示の実施形態に示されるように第２の値、論理値「１」に設定される。データをレジスタ３から読み出すために、最初に、補助レジスタの関連するビットが点検される。これが第１の値（論理値「０」）を含む場合、値０は、戻される（割り当てられたレジスタ３にデータが存在するか否かに関わらず）。問い合わせされたレジスタ３の関連するビットが第２の値（論理値「１」）を含む場合のみ、レジスタに存在するデータが読み出される。このことから、レジスタを初期設定または消去するために、補助レジスタのビットのみが第１の値に設定されなければならない（論理値「０」）。これは、レジスタ３に保持されるデータは読み出され得ないことを十分に確実にする。
【００４０】
上述のように、第２の機能を第１の機能から呼出すと、レジスタ３に保持されるデータがスタックにバッファされる必要がある。以下の図４〜図７は、このことが理解され得る方法の異なった実施形態を示す。
【００４１】
図４は、レジスタバンク２および割り当てられた、分離した補助レジスタ６の（図２から知られる）構成を示す。第２の機能が、例えば、インストラクションＣＡＬＬによって［ｆｕｎｃｔｉｏｎ２］呼出されると、割り当てられたビットが第２の値（論理値「１」）を有するレジスタバンクのレジスタ３は、好適には、さらなるスタック８に格納される。図４に示されるように、データを有しないレジスタが２つのデータを有するレジスタ３間に配置される場合、このレジスタは、スタック８に書き込まれる際に抜かされる。その結果、データを含むレジスタのみがスタック８に連続的に格納される。レジスタの内容に加えて、補助レジスタ６のビット列が、さらなるスタック８のワード行に格納される。この場合、補助レジスタ６のビット列は、好適には、最後の値として格納される。これにより、第２の機能から第１の機能に戻される場合、レジスタ内容は、スタック８から戻されてレジスタバンク２に書き込まれ得、それぞれの内容は、前に書き込まれたレジスタに正確に格納される。
【００４２】
図５は、補助レジスタ６’がレジスタバンク２のレジスタに配置されるという事実のみが図４と異なる。レジスタ７は、本例示的実施形態に用いられる。そうでない場合、手順は、図４を参照して説明される手順に対応する。
【００４３】
多くの場合、レジスタバンク２は、第１の領域１０および第２の領域２０に分割されるのが通例である。この場合、呼出し機能（第１の機能）および呼出される機能（第２の機能）の両方によって必要とされるデータは、第２の領域２０に書き込まれる。これらは、転送パラメータである。第１の領域１０は、ここにデータをバッファするために、呼出される機能によってのみ用いられる。
【００４４】
第１の領域１０のレジスタを、さらなるスタック８にバッファすることで十分である。この理由から、図６Ａに示されるように、第１の領域１０のみが補助レジスタ６に割り当てられる。
【００４５】
あるいは、図６Ｂに示されるように、補助レジスタ６が、レジスタバンク２の第１の領域１０および第２の領域２０の両方に割り当てられることが可能である。この場合、転送パラメータは、さらに、機能が呼出されると、スタックにバッファされる。
【００４６】
図７は、複数のレジスタウィンドウ１１、１２へのレジスタバンク２の分割を示す。図７は、２つのレジスタウィンドウ１１、１２のみを示すが、レジスタバンクは、任意の数のレジスタウィンドウを有し得る。レジスタバンクが第１の領域および第２の領域に分割される場合、レジスタウィンドウは、すべて、第１の領域１０に配置される。
【００４７】
現在実行されている機能に対して正確に１つのレジスタウィンドウが利用可能である。このレジスタウィンドウは、「スタックポインタＲＥＧ  ＳＰ」により選択される。レジスタウィンドウに割り当てられたレジスタは、その後、この機能により書き込まれる。補助レジスタ６、６’は、レジスタウィンドウのそれぞれの最上位レジスタに格納される。
【００４８】
レジスタウィンドウの使用は、特に、機能の変更が頻繁に実行される場合に有利である。この手順は、機能を変更するたびにスタックに書き込まれたレジスタを格納する必要がないことを意味する。
【００４９】
本実施例において、レジスタウィンドウ１１が、第１の機能によってすでに占有または書き込まれたと仮定する。第１の機能は、第２の機能を呼出し、その結果、スタックポインタが次のレジスタウィンドウ１２（ＲＥＧ  ＳＰ）を示す。この機能呼出しにより、前の例示の実施形態と異なり、レジスタリストがスタックに格納されず、単に、スタックポインタがシフトされる。従って、第２の機能は、レジスタウィンドウ１２（レジスタ１６〜２３）を利用し、補助レジスタは、レジスタ２３に格納される。第３の機能が呼出されると、これは、第３のレジスタウィンドウ（図示せず）を利用し得る。この間、最初に書き込まれたレジスタウィンドウは、スタックに同時に書き込まれる。これは、本例示的実施形態において、レジスタウィンドウ１１である。個々のレジスタは、図４および図５にそれぞれ記載される態様で格納される。
【００５０】
このタイプの手順は、極めて迅速で、エネルギー効率的かつ確実にレジスタバンクに格納されるレジスタコンテンツの確実な格納を可能にする。
【００５１】
この場合、図７に示される例示的実施形態は、同じ数のレジスタを有するレジスタウィンドウを有する。これは、必ずしも必要ではない。レジスタウィンドウの大きさは、それぞれの機能により必要とされるレジスタに適合され得る。しかしながら、この場合、レジスタウィンドウのレジスタの１つは、原則的に、補助レジスタのビット列を格納するために用いられる。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明によるマイクロプロセッサ回路の構造を図示する。
【図２】図２は、レジスタおよび割り当てられた補助レジスタの第１の例示的実施形態を示す。
【図３Ａ】図３Ａは、補助レジスタがレジスタの一部である、第２の例示的実施形態を示す。
【図３Ｂ】図３Ｂは、補助レジスタがレジスタの一部である、第２の例示的実施形態を示す。
【図４】図４は、スタック上のレジスタの格納の原理を示す第１の例示的実施形態を示す。
【図５】図５は、スタック上のレジスタの格納を示す第２の例示的実施形態を示す。
【図６Ａ】図６Ａは、レジスタおよび割り当てられたレジスタの補助レジスタを示し、レジスタは、第１の領域と第２の領域とにさらに分割される。
【図６Ｂ】図６Ｂは、レジスタおよび割り当てられたレジスタの補助レジスタを示し、レジスタは、第１の領域と第２の領域とにさらに分割される。
【図７】図７は、レジスタがレジスタウィンドウとして実現される、さらなる例示的実施形態を示す。
【符号の説明】
【００５３】
１              制御ユニット
２、２’、２”  レジスタバンク
３              レジスタ
４              メモリ
５              スタック
６、６’、６”  補助レジスタ
７              レジスタ
８              スタック
９              ワード行
１０            レジスタバンクの第１の領域
１１            第１のレジスタウィンドウ
１２            第２のレジスタウィンドウ
２０            レジスタバンクの第２の領域
３０            制御線
ＳＰ            スタックポインタ
ＲＥＧ  ＳＰ    レジスタスタックポインタ
【国際公開パンフレット】
2004523827.tif 000003
2004523827.tif 000004
2004523827.tif 000005
2004523827.tif 000006
2004523827.tif 000007
2004523827.tif 000008
2004523827.tif 000009
2004523827.tif 000010
2004523827.tif 000011
2004523827.tif 000012
2004523827.tif 000013
2004523827.tif 000014
2004523827.tif 000015
2004523827.tif 000016
2004523827.tif 000017
2004523827.tif 000018
2004523827.tif 000019
2004523827.tif 000020
2004523827.tif 000021
2004523827.tif 000022
2004523827.tif 000023
2004523827.tif 000024
2004523827.tif 000025
2004523827.tif 000026
2004523827.tif 000027
【国際公開パンフレット（コレクトバージョン）】
2004523827.tif 000028
2004523827.tif 000029
【手続補正書】
【提出日】平成15年7月18日(2003.7.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つの制御ユニット（１）と、機能を有する少なくとも１つのプログラムを用いてフリープログラミングするための少なくとも１つのメモリ（４）と、データをバッファするためのスタック（５）と、少なくとも１つのレジスタ（３）を有するレジスタバンク（２）とを有するマイクロプロセッサ回路であって、
補助レジスタ（６）は、多数のビットを格納し、該ビットの各々は、該レジスタバンク（２）の該レジスタ（３）の１つに割り当てられ、かつ該レジスタバンク（２）のそれぞれのレジスタ（３）が論理的に「０」とは異なる値を含むか否かを示すことを特徴とする、マイクロプロセッサ回路。
【請求項２】
前記補助レジスタ（６）は、前記レジスタバンク（２）の前記レジスタ（３）の数に対応する数のさらなるレジスタ（７）を有し、該さらなるレジスタ（７）の各々は、単一のビットを格納するために提供されることを特徴とする、請求項１に記載のマイクロプロセッサ回路。
【請求項３】
前記補助レジスタ（６）は、正確に１つのさらなるレジスタを有し、該さらなるレジスタは、ビット列を格納するために提供され、該ビット列は、前記レジスタバンク（２）におけるレジスタ（３）の数に対応することを特徴とする、請求項１に記載のマイクロプロセッサ回路。
【請求項４】
前記補助レジスタ（６）は、前記レジスタバンク（２）のレジスタ（３）であることを特徴とする、請求項３に記載のマイクロプロセッサ。
【請求項５】
前記レジスタバンクに含まれる前記データを格納するために、プログラマによって管理され得ないさらなるスタック（９）が提供されることを特徴とする、請求項１〜４のいずれか１つに記載のマイクロプロセッサ回路。
【請求項６】
前記レジスタバンクは、第１のレジスタを有する第１の領域（１０）と、第２のレジスタを有する第２の領域（２０）とを有し、少なくとも該第１のレジスタに、前記補助レジスタ（６）内のビットが割り当てられることを特徴とする、請求項１〜５のいずれか１つに記載のマイクロプロセッサ回路。
【請求項７】
前記レジスタバンク（２）の前記第１の領域（１０）が、複数の部分領域（１１、１２）に分割可能であり、該複数の部分領域は、それぞれ、前記プログラムの前記機能のうちの１つにそれぞれに利用可能になる、請求項６に記載のマイクロプロセッサ回路。
【請求項８】
マイクロプロセッサ回路を動作させる方法であって、
該マイクロプロセッサ回路を初期設定すると、前記補助レジスタ（６）のすべてのビットが第１の値に設定されることと、
前記レジスタバンク（２）のレジスタ（３）にデータを書き込むと、該補助レジスタの前記割り当てられたビットが論理的に「０」とは異なる値に設定されることと
を特徴とする、請求項１〜７のいずれか１つに記載のマイクロプロセッサ回路。
【請求項９】
前記レジスタバンク（２）の前記レジスタ（３）の１つからのデータの読み出しは、前記補助レジスタ（６）の前記割り当てられたビットが論理的に「０」とは異なる値を有する場合にのみ可能であることを特徴とする、請求項８に記載の方法。
【請求項１０】
前記補助レジスタ（６）に割り当てられたビットが論理的に「０」の値を有する、前記レジスタバンク（２）の前記レジスタ（３）の１つからデータを読み出すと、該データ「０」が戻されることを特徴とする、請求項８または９に記載の方法。
【請求項１１】
第１の機能を第２の機能に変更されると、前記レジスタバンク（２）の前記レジスタ（３）における該第１の機能に関連するデータ、および、前記補助レジスタ（６）の前記ビット列は、連続的に前記スタックまたは前記さらなるスタックに格納されることを特徴とする、請求項８〜１０のいずれか１つに記載の方法。
【請求項１２】
前記補助レジスタ（６）の前記データおよび前記ビット列を前記スタックまたは前記さらなるスタックに格納した後、該補助レジスタの該ビットは、論理的に「０」の値に設定されることを特徴とする、請求項１１に記載の方法。国際出願時の特許請求の範囲を補正した。それ以外については変更なし。
【国際調査報告】
2004523827.tif 000030
2004523827.tif 000031
2004523827.tif 000032
2004523827.tif 000033
2004523827.tif 000034
2004523827.tif 000035