(57)【特許請求の範囲】
【請求項１】
データ処理装置であって、
データ処理命令に応答して、整数データ処理演算および浮動小数点データ処理演算を実行する処理回路と、
前記整数データ処理演算を実行する際に前記処理回路によって使用可能な第１の組の整数レジスタと、
前記浮動小数点データ処理演算を実行する際に前記処理回路によって使用可能な第２の組の浮動小数点レジスタと、
を備え、
前記処理回路は、割り込み要求に応答して、前記整数レジスタのみの少なくともサブセットがスタックメモリにコピーされる整数状態保存機能と、前記整数レジスタおよび前記浮動小数点レジスタの両方の少なくともサブセットが前記スタックメモリにコピーされる浮動小数点状態保存機能とのうちの１つを実施し、前記整数状態保存機能および前記浮動小数点状態保存機能のうちの前記１つが、状態情報に基づいて、前記処理回路によって選択されると共に、
前記状態情報は、前記割り込み要求が受け取られる時に前記処理回路によって実行されている現在のデータ処理コンテキストが、１つ以上の浮動小数点処理演算を含む浮動小数点データ処理コンテキストであるか、または浮動小数点処理演算を一切含まない整数データ処理コンテキストであるかを示す、第１の状態情報を含み、
前記第１の状態情報は、前記処理回路に浮動小数点データ処理演算を実行させるデータ処理命令に応答して設定され、
前記処理回路は、前記割り込み要求に応答して、前記第１の状態情報が、現在のデータ処理コンテキストが整数データ処理コンテキストであることを示す場合には、前記整数状態保存機能を実施し、前記第１の状態情報が、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示す場合には、整数レジスタのサブセットだけが前記スタックメモリにコピーされる前記浮動小数点状態保存機能の第１の部分、および浮動小数点レジスタの前記サブセットに対してスペースが前記スタックメモリ上に割り当てられる前記浮動小数点状態保存機能の第２の部分を実行する、データ処理装置。
【請求項２】
前記処理回路は、前記割り込み要求に応答して、前記第１の状態情報が、前記現在のデータ処理コンテキストが整数データ処理コンテキストであることを示す場合には、前記整数状態保存機能を実施し、前記第１の状態情報が、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示す場合には、前記浮動小数点状態保存機能を実行する、請求項１に記載のデータ処理装置。
【請求項３】
前記整数状態保存機能が実施される時、前記処理回路は、前記浮動小数点レジスタが前記スタックメモリにコピーされていないことを示すように第２の状態情報を設定し、前記浮動小数点状態保存機能が実施される時、前記処理回路は、前記浮動小数点レジスタが前記スタックメモリにコピーされたことを示すように前記第２の状態情報を設定する、請求項２に記載のデータ処理装置。
【請求項４】
前記処理回路は、前記割り込み要求の結果として、前記処理回路によって実行されたターゲット処理コンテキストの終了に応答して、前記整数レジスタから前記スタックメモリ上に保存されたデータだけが前記スタックメモリから取得され、前記対応するレジスタにコピーされる整数状態復元機能と、前記整数および浮動小数点レジスタから前記スタックメモリ上に保存されたデータが前記スタックメモリから取得され、前記対応するレジスタへコピーされる浮動小数点状態復元機能とのうちの１つを実施し、
前記整数状態復元機能は、前記第２の状態情報が、前記浮動小数点レジスタが前記スタックメモリ内に格納されていないことを示す場合に、前記処理回路によって選択され、
前記浮動小数点状態復元機能は、前記第２の状態情報が、前記浮動小数点レジスタが前記スタックメモリ内に格納されていることを示す場合に、前記処理回路によって選択される、請求項３に記載のデータ処理装置。
【請求項５】
前記整数状態保存機能が実施される時、前記処理回路は、前記浮動小数点レジスタに対するスペースが前記スタックメモリに割り当てられていないことを示すように第２の状態情報を設定し、前記浮動小数点状態保存機能の前記第２の部分が実施される時、前記処理回路は、前記浮動小数点レジスタに対するスペースが前記スタックメモリに割り当てられていることを示すように前記第２の状態情報を設定する、請求項１に記載のデータ処理装置。
【請求項６】
前記処理回路は、前記スタックメモリ上のスペースの割り当てに続いて、前記処理回路に浮動小数点データ処理演算を実行させるデータ処理命令に応答して、浮動小数点レジスタの前記サブセットが前記スタックメモリの前記割り当てられた部分にコピーされる、前記浮動小数点状態保存機能の第３の部分を実行する、請求項５に記載のデータ処理装置。
【請求項７】
前記浮動小数点状態保存機能の前記第２の部分において割り当てられる前記スタックメモリの部分のメモリアドレスを格納するためのスタック割り当てアドレスレジスタを備え、前記処理回路は、前記浮動小数点状態保存機能の前記第３の部分において、前記スタック割り当てアドレスレジスタによって示される前記スタックメモリ内のアドレスに、前記浮動小数点レジスタをコピーする、請求項６に記載のデータ処理装置。
【請求項８】
第３の状態情報は、前記スタックメモリ内にスペースが割り当てられているが、前記浮動小数点レジスタの前記コピーはまだ発生していないことを示すように、前記浮動小数点状態保存機能の前記第２の部分において設定され、前記第３の状態情報は、前記浮動小数点レジスタが前記スタックメモリ内の前記割り当てられたスペース内にコピーされたことを示すように、前記浮動小数点状態保存機能の前記第３の部分の一部としてリセットされる、請求項６に記載のデータ処理装置。
【請求項９】
前記処理回路は、前記割り込み要求の結果として前記処理回路によって実行されるターゲットデータ処理コンテキストの終了に応答して、前記整数レジスタから前記スタックメモリ上に保存されたデータだけが前記スタックメモリから取得され、前記対応するレジスタにコピーされる整数状態復元機能と、前記整数および浮動小数点レジスタから前記スタックメモリ上に保存されたデータが前記スタックメモリから取得され、前記対応するレジスタへコピーされる浮動小数点状態復元機能とのうちの１つを実施し、
前記整数状態復元機能は、前記第２の状態情報が、前記浮動小数点レジスタが前記スタックメモリ内に格納されていないことを示す場合、または前記第２の状態情報が、前記浮動小数点レジスタのためのスペースが前記スタックメモリ内に割り当てられていることを示し、かつ前記第３の状態情報が、浮動小数点レジスタの前記サブセットの前記スタックメモリの前記割り当てられた部分へのコピーがまだ発生していないことを示す場合、前記処理回路によって選択され、
前記浮動小数点状態復元機能は、前記第２の状態情報が、前記浮動小数点レジスタのためのスペースが前記スタックメモリ内に割り当てられていることを示し、かつ前記第３の状態情報が、浮動小数点レジスタの前記サブセットが前記スタックメモリの前記割り当てられた部分にコピーされていることを示す場合、前記処理回路によって選択される、請求項８に記載のデータ処理装置。
【請求項１０】
前記整数状態復元機能が実施される時、前記第１の状態情報は、現在のデータ処理コンテキストが整数データ処理コンテキストであることを示すように設定され、前記浮動小数点状態復元機能が実施される時、前記第１の状態情報は、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示すように設定される、請求項９に記載のデータ処理装置。
【請求項１１】
請求項１から１０のいずれか１項に記載のデータ処理装置であって、
前記処理回路は、第４の状態情報に応答して、前記割り込み要求に応答して前記浮動小数点レジスタが前記スタックメモリにコピーされる浮動小数点状態保存機能と、前記割り込み要求に応答して前記浮動小数点レジスタのためのスペースが前記スタックメモリ内に割り当てられ、前記スタックメモリ上のスペースの前記割り当てに続いて、前記処理回路に浮動小数点データ処理演算を実行させるデータ処理命令に応答して、前記浮動小数点レジスタが前記割り当てられたスペースにコピーされる浮動小数点状態保存機能との間を選択する、データ処理装置。
【請求項１２】
請求項１に記載のデータ処理装置であって、
前記状態情報は、前記割り込み要求の結果として前記処理回路によって実行されるターゲットデータ処理コンテキストが、１つ以上の浮動小数点処理演算を含む浮動小数点データ処理コンテキストであるか、または浮動小数点処理演算を一切含まない整数データ処理コンテキストであるかを示す、第２の状態情報を含む、データ処理装置。
【請求項１３】
前記状態情報は、現在のデータ処理コンテキストが、割り込み要求によってトリガされていないスレッドデータ処理コンテキストであるか、または割り込み要求によってトリガされているハンドラデータ処理コンテキストであるかを示す、第３の状態情報を含む、請求項１２に記載のデータ処理装置。
【請求項１４】
前記処理回路は、前記ターゲットデータ処理コンテキストが浮動小数点データ処理コンテキストであること、かつ前記現在のデータ処理コンテキストが、浮動小数点データ処理コンテキスト、または割り込み要求によってトリガされた整数データ処理コンテキストのいずれかであることを示す状態情報に応答して、前記浮動小数点状態保存機能を選択する、請求項１２または１３に記載のデータ処理装置。
【請求項１５】
前記処理回路は、前記現在のデータ処理コンテキストが、整数データ処理コンテキストであること、かつ前記ターゲットデータ処理コンテキストが、整数データ処理コンテキストであることを示す状態情報に応答して、前記整数状態保存機能を選択する、請求項１２または１３に記載のデータ処理装置。
【請求項１６】
前記処理回路は、前記現在のデータ処理コンテキストが、浮動小数点データ処理コンテキストであること、かつ前記ターゲットデータ処理コンテキストが、浮動小数点データ処理コンテキストであることを示す状態情報に応答して、前記浮動小数点状態保存機能を選択する、請求項１２または１３に記載のデータ処理装置。
【請求項１７】
前記処理回路は、前記現在のデータ処理コンテキストが、割り込み要求によってトリガされていない整数スレッドコンテキストであること、かつ前記ターゲットデータ処理コンテキストが、浮動小数点データ処理コンテキストであることを示す状態情報に応答して、前記整数状態保存機能を選択する、請求項１２または１３に記載のデータ処理装置。
【請求項１８】
前記処理回路は、前記現在のデータ処理コンテキストが、割り込み要求によってトリガされている整数ハンドラコンテキストであること、かつ前記ターゲットデータ処理コンテキストが、浮動小数点データ処理コンテキストであることを示す状態情報に応答して、前記浮動小数点状態保存機能を選択する、請求項１２または１３に記載のデータ処理装置。
【請求項１９】
前記第１の組の整数レジスタは、スタックポインタを格納するためのレジスタを備え、前記スタックポインタは、現在のデータ処理コンテキストがスレッドである時にはプロセススタックの１番上をポイントし、現在のデータ処理コンテキストがハンドラである時にはメインスタックの一番上をポイントし、
前記第３の状態情報は、前記スタックポイントによって提供される、請求項１３に記載のデータ処理装置。
【請求項２０】
前記第１の組の整数レジスタは、前のデータ処理コンテキストに対するリターンアドレスを格納するためのリンクレジスタと、前記前のデータ処理コンテキストが整数データ処理コンテキストであるか、または浮動小数点データ処理コンテキストであるかの表示と、を備え、
前記処理回路は、前記割り込み要求に応答して、前記現在のデータ処理コンテキストのスタックポインタと、前記現在のデータ処理コンテキストが整数データ処理であるか、または浮動小数点データ処理コンテキストであるかの表示とを含むように前記リンクレジスタを設定する、請求項１９に記載のデータ処理装置。
【請求項２１】
前記処理回路は、前記ターゲットデータ処理コンテキストの終了に応答して、前記整数レジスタから前記スタックメモリ上に保存されたデータだけが前記スタックメモリから取得され、前記対応するレジスタにコピーされる整数状態復元機能と、前記整数および浮動小数点レジスタから前記スタックメモリ上に保存されたデータが前記スタックメモリから取得され、前記対応するレジスタへコピーされる浮動小数点状態復元機能とのうちの１つを実施し、
前記整数状態復元機能および前記浮動小数点状態復元機能のうちの１つは、前記リンクレジスタ内の前記スタックポインタが、前記メインスタックまたは前記プロセススタックをポイントするか、前記リンクレジスタが、前記前のデータ処理コンテキストが整数データ処理コンテキストまたは浮動小数点データ処理コンテキストであったことを示すかに基づいて、前記処理回路によって選択される、請求項２０に記載のデータ処理装置。
【請求項２２】
前記状態情報は、前記処理回路によって構成可能である、請求項１２から２１のいずれか１項に記載のデータ処理装置。
【請求項２３】
前記割り込みリクエストを生成するための割り込みコントローラをさらに備え、
前記割り込みコントローラは、１つ以上の可能な割り込み要求に関連する前記第２の状態情報を格納し、前記可能な割り込み要求のうちの選択される１つに関連する第２の状態情報を、前記選択される割り込み要求と共に前記処理回路に通信する、請求項１２から２２のいずれか１項に記載のデータ処理装置。
【請求項２４】
１つ以上の可能な割り込み要求に関連する前記第２の状態情報を格納するための状態情報ストアを備え、前記処理回路は、受け取られる割り込み要求に応答して、前記第２の状態情報を前記状態情報ストアから読み出すように構成される、請求項１２から２２のいずれか１項に記載のデータ処理装置。
【請求項２５】
前記第２の状態情報が、前記ターゲットデータ処理コンテキストが整数データ処理コンテキストであることを示す時に、前記割り込み要求によってトリガされるターゲット処理演算が、前記浮動小数点レジスタを使用しようとする場合、前記処理回路が、例外を生成する、請求項１２に記載のデータ処理装置。
【請求項２６】
前記浮動小数点状態保存機能は、最初に前記第１の組の整数レジスタを前記スタックメモリにコピーし、次いで前記第２の組の浮動小数点レジスタを前記スタックメモリの１番上にコピーすることによって行われる、請求項１から２５のいずれか１項に記載のデータ処理装置。
【請求項２７】
前記処理回路が、整数状態保存機能を要求する、受け取られたより高い優先度の割り込みに応答する一方で、前記浮動小数点状態保存機能は、前記第２の組の浮動小数点レジスタの前記スタックメモリへの前記コピーを禁止し、前記第１の組の整数レジスタが前記スタックメモリの１番上にあることを示すようにスタックポインタを設定するために行われる、請求項２６に記載のデータ処理装置。
【請求項２８】
前記浮動小数点状態保存機能は、最初に前記第２の組の浮動小数点レジスタを前記スタックメモリにコピーしてから、前記第１の組の整数レジスタを前記スタックメモリにコピーすることによって行われる、請求項２６に記載のデータ処理装置。
【請求項２９】
前記処理回路は、第４の状態情報に応答して、前記状態情報に関係なく割り込み要求に応答して、前記整数状態保存機能を実行する、請求項１から１０のいずれか１項に記載のデータ処理装置。
【請求項３０】
データ処理命令に応答して整数データ処理演算および浮動小数点データ処理演算を実行するデータ処理方法であって、前記整数データ処理演算は、第１の組の整数レジスタを使用し、前記浮動小数点データ処理演算は、第２の組の浮動小数点レジスタを使用し、前記方法は、
割り込み要求に応答して、前記整数レジスタのみの少なくともサブセットがスタックメモリにコピーされる整数状態保存機能と、前記整数レジスタおよび前記浮動小数点レジスタの両方の少なくともサブセットが前記スタックメモリにコピーされる浮動小数点状態保存機能とのうちの１つを実行するステップであって、前記整数状態保存機能および前記浮動小数点状態保存機能のうちの前記１つは、状態情報に基づいて選択される、ステップを含み、
前記状態情報は、前記割り込み要求が受け取られる時に実行されている現在のデータ処理コンテキストが、１つ以上の浮動小数点処理演算を含む浮動小数点データ処理コンテキストであるか、または浮動小数点処理演算を一切含まない整数データ処理コンテキストであるかを示す、第１の状態情報を含み、
前記第１の状態情報は、前記浮動小数点データ処理演算を実行させるデータ処理命令に応答して設定され、
前記割り込み要求に応答して、前記第１の状態情報が、現在のデータ処理コンテキストが整数データ処理コンテキストであることを示す場合には、前記整数状態保存機能を実施し、前記第１の状態情報が、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示す場合には、整数レジスタのサブセットだけが前記スタックメモリにコピーされる前記浮動小数点状態保存機能の第１の部分、および浮動小数点レジスタの前記サブセットに対してスペースが前記スタックメモリ上に割り当てられる前記浮動小数点状態保存機能の第２の部分を実行する、方法。
【請求項３１】
コンピュータに請求項３０に記載の方法を実行させるように動作可能なコンピュータプログラムを含む、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、整数および浮動小数点の両方のデータ処理演算を処理するためのデータ処理装置および方法に関する。より具体的には、本発明の実施形態は、コンテキストスイッチ時のプロセッサレジスタ内のデータ値の保存に関する。
【背景技術】
【０００２】
多数のアプリケーションに対して、データ処理装置は、別のプロセスをサービスするために、データ処理命令が実行されている現在のプロセスを中断できることが望ましい。中断されたプロセスは、完全に終了し、割り込みプロセスがサービスされた後に最初から再開することが可能であるが、中断されたプロセスを、それが中断された点から再開可能であることが望ましい。これを実現するために、新しいプロセスにスイッチする前に、既存のプロセスの現在のパラメータおよび現在の状態を格納するレジスタファイルの内容をスタックメモリにコピーすることが知られている。
【０００３】
プロセスは、コンテキスト、つまり、プロセスが正しく実行するために必要なシステム状態において稼動する。ＡＲＭアーキテクチャの場合、この状態には、プログラムカウンタ、スタックポインタ、およびリンクレジスタを含む、所定の整数プロセッサレジスタの値、ならびにこれらがプロセスによって要求される場合は浮動小数点レジスタの値が含まれる。したがって、プロセス間のスイッチは、レジスタ値を含む、コンテキスト内のスイッチを必要とし、割り込みプロセスからその前の中断されたプロセスへ戻るには、したがって、中断されたプロセスに対応するコンテキストの保存および復元を必要とする。
【０００４】
整数データ処理演算のためだけの専用レジスタによってハードウェアサポートを提供するデータ処理装置の場合、整数レジスタのうちの少なくともいくつかが、異なるプロセスをサービスするためのコンテキストスイッチの場合に保存される必要がある。専用の浮動小数点レジスタによって浮動小数点データ処理演算に対するハードウェアサポートを追加で提供するデータ処理装置の場合、コンテキストスイッチ時に、整数レジスタに加えて、浮動小数点レジスタのうちの少なくともいくつかを保存することが必要である。これは、浮動小数点演算のためにハードウェアサポートを使用しないデータ処理装置上で稼動することを意図するコードとの後方互換性を提供するには問題になる場合がある。この理由は、整数レジスタおよび浮動小数点レジスタの両方を保存するには、以前（ハードウェア浮動小数点サポートが提供されていなかったとき）にプライベートスタックが整数レジスタを保存するためのスペースしか必要としなかった場合、各プロセッサがそのプライベートスタック上に、バックアップされる整数および浮動小数点レジスタに対応するのに十分なスペースを有することを必要とするから、さらに、整数および浮動保存プロセスは、ハードウェアの浮動小数点サポートのないデータ処理装置の整数のみの状態保存プロセスに比較すると、割り込み待ち時間を顕著に増加させるからである。
【発明の概要】
【０００５】
本発明の一態様に従い、データ処理命令に応答して、整数データ処理演算および浮動小数点データ処理演算を実行する処理回路と、該整数データ処理演算を実行する際に該処理回路によって使用可能な第１の組の整数レジスタと、該浮動小数点データ処理演算を実行する際に該処理回路によって使用可能な第２の組の浮動小数点レジスタと、を備え、該処理回路が、割り込み要求に応答して、該整数レジスタのみの少なくともサブセットがスタックメモリにコピーされる整数状態保存機能と、該整数レジスタおよび該浮動小数点レジスタの両方の少なくともサブセットが該スタックメモリにコピーされる浮動小数点状態保存機能とのうちの１つを実施し、該整数状態保存機能および該浮動小数点状態保存機能のうちの該１つが、状態情報に基づいて、該処理回路によって選択される、データ処理装置が提供される。
【０００６】
このようにして、状態情報が、浮動小数点レジスタがバックアップされることが必要であることを示す場合のみ、より多くの時間およびスペースを要する浮動小数点状態保存機能（整数レジスタおよび浮動小数点レジスタの両方のうちの少なくともいくつかをバックアップする）が実施される。そうではなく、状態情報が、整数レジスタだけがバックアップされる必要があることを示す場合は、整数レジスタだけをバックアップするように、より少ない時間およびスペースを要する整数状態保存機能が実施される。このため、整数のみのコードに対する割り込み待ち時間およびプライベートスタックのサイズ要件を維持することによって、後方互換性が保たれる。これによって、レガシー（整数のみ）コードに関してスタックフレームサイズを増加し、増加した待ち時間に対処するようにレガシー中断ハンドラを調整する望ましくない要件が回避、または少なくとも軽減され得る。より一般的には、本発明の実施形態は、削減されるスタックサイズを通してメモリサイズ要件を削減し、浮動小数点レジスタを必ず保存するという基本的な解決法に比較して、メモリアクセスの回数を削減する。この結果、電力使用および割り込み待ち時間を削減することができる。
【０００７】
状態情報は、割り込み要求が受け取られた時に該処理回路によって実行されている現在のデータ処理コンテキストが、１つ以上の浮動小数点処理演算を含む浮動小数点データ処理コンテキストであるか、または浮動小数点処理演算を一切含まない整数データ処理コンテキストであるかを示す、第１の状態情報を含み得る。この第１の状態情報は、処理回路に浮動小数点データ処理演算を実行させるデータ処理命令に応答して設定され得る。処理回路は、割り込み要求に応答して、第１の状態情報が、現在のデータ処理コンテキストが整数データ処理コンテキストであることを示す場合には該整数状態保存機能を実施し、第１の状態情報が、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示す場合には該浮動小数点保存機能を実行することができる。この構成によって、中断される処理が浮動小数点レジスタを使用している時のみに浮動小数点状態保存が行われることが可能になる。
【０００８】
整数状態保存機能が実施される時、処理回路は、浮動小数点レジスタがスタックメモリにコピーされていないことを示すように第２の状態情報を設定し得ると共に、浮動小数点状態保存機能が実施される時、処理回路は、浮動小数点レジスタがスタックメモリにコピーされていることを示すように第２の状態情報を設定し得る。この場合、処理回路は、割り込み要求の結果として処理回路によって実行されたターゲット処理コンテキストの終了に応答して、整数レジスタからスタック上に保存されたデータだけがスタックから取得され、対応するレジスタにコピーされる整数状態復元機能と、整数および浮動小数点レジスタからスタック上に保存されたデータがスタックから取得され、対応するレジスタへコピーされる浮動小数点状態復元機能とのうちの１つを実行する。具体的には、第２の状態情報が、浮動小数点レジスタがスタックメモリ内に格納されていないことを示す場合には、処理回路によって整数状態復元機能が選択され、第２の状態情報が、浮動小数点レジスタがスタックメモリに格納されていることを示す場合には、処理回路によって浮動小数点状態復元機能が選択される。
【０００９】
代替として、処理回路は、割り込み要求に応答して、第１の状態情報が、現在のデータ処理コンテキストが整数データ処理コンテキストであることを示す場合には、整数状態保存機能を実施し、該第１の状態情報が、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示す場合には、整数レジスタのサブセットだけがスタックメモリにコピーされる浮動小数点状態保存機能の第１の部分、および浮動小数点レジスタのサブセットに対してスペースがスタックメモリ上に割り当てられる浮動小数点状態保存機能の第２の部分を実施し得る。この場合、整数状態保存機能が実施される時、処理回路は、浮動小数点レジスタに対するスペースがスタックメモリに割り当てられていないことを示すように第２の状態情報を設定し、浮動小数点状態保存機能の第２の部分が実施される時、処理回路は、浮動小数点レジスタに対するスペースがスタックメモリに割り当てられたことを示すように第２の状態情報を設定する。
【００１０】
処理回路は次いで、スタックメモリ上のスペースの割り当てに続いて、処理回路に浮動小数点データ処理演算を実行させるデータ処理命令に応答して、浮動小数点レジスタのサブセットがスタックメモリの割り当てられた部分にコピーされる、浮動小数点状態保存機能の第３の部分を実施し得る。
【００１１】
スタック割り当てアドレスレジスタを、該浮動小数点状態保存機能の第２の部分において割り当てられたスタックメモリの部分のメモリアドレスを格納するために提供することができ、ここで処理回路は、浮動小数点状態保存機能の第３の部分におけるスタック割り当てアドレスレジスタによって示されるスタックメモリ内のアドレスに浮動小数点レジスタをコピーする。
【００１２】
第３の状態情報は、スペースがスタックメモリ内に割り当てられているが、浮動小数点レジスタのコピーはまだ発生していないことを示すように、浮動小数点状態保存機能の第２の部分において設定され得る。ここで、第３の状態情報は、浮動小数点状態保存機能の第３の部分の一部として、浮動小数点レジスタがスタックメモリ内の割り当てられたスペースにコピーされていることを示すようにリセットされる。３つの部分の浮動小数点保存機能を利用することによって、浮動小数点レジスタは、これらのレジスタを変更する可能性がある、割り込み浮動小数点命令によってこれらのレジスタが上書きされる危険が存在する場合のみ、スタックメモリ内に格納される。
【００１３】
処理回路は、次いで、割り込み要求の結果として処理回路によって実行されたターゲットデータ処理コンテキストの終了に応答して、整数レジスタからスタック上に保存されたデータだけがスタックから取得され、対応するレジスタにコピーされる整数状態復元機能と、整数および浮動小数点レジスタからスタック上に保存されたデータがスタックから取得され、対応するレジスタへコピーされる浮動小数点状態復元機能とのうちの１つを実行することができる。具体的には、第２の状態情報が、浮動小数点レジスタがスタックメモリ内に格納されていないことを示す場合、または第２の状態情報が、浮動小数点レジスタのためのスペースがスタックメモリ内に割り当てられていることを示し、かつ第３の状態情報が、浮動小数点レジスタのサブセットのスタックメモリの割り当てられた部分へのコピーがまだ発生していないことを示す場合には、処理回路によって整数状態復元機能が選択され、第２の状態情報が、浮動小数点レジスタに対するスペースがスタックメモリ内に割り当てられていることを示し、かつ第３の状態情報が、浮動小数点レジスタのサブセットがスタックメモリの割り当てられた部分にコピーされていることを示す場合には、処理回路によって浮動小数点状態復元機能が選択される。このように、スタック上のスペースが浮動小数点レジスタに割り当てられているが、浮動小数点レジスタの内容が割り当てられたスペースに実際にコピーされていない場合、整数レジスタだけがスタックから復元される。
【００１４】
整数状態復元機能が実施される時、第１の状態情報は、現在のデータ処理コンテキストが整数データ処理コンテキストであることを示すように設定され、浮動小数点状態復元機能が実施される時、第１の状態情報は、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示すように設定される。
【００１５】
処理回路は、第４の状態情報に応答して、割り込み要求に応答して浮動小数点レジスタがスタックメモリにコピーされる浮動小数点状態保存機能と、割り込み要求に応答して浮動小数点レジスタのためにスタックメモリ内のスペースが割り当てられ、スタックメモリ上のスペースの割り当てに続いて、データ処理回路に浮動小数点データ処理演算を実行させるデータ処理命令に応答して、浮動小数点レジスタが割り当てられたスペースにコピーされる浮動小数点状態保存機能との間を選択する。このようにして、遅延浮動小数点保存が有効であるモードと、それが無効であるモードとの間を選択することが可能である。
【００１６】
別の実施形態において、状態情報は、割り込み要求が受け取られた時に処理回路によって実行されている現在のデータ処理コンテキストが、１つ以上の浮動小数点処理演算を含む浮動小数点データ処理コンテキストであるか、または浮動小数点処理演算を一切含まない整数データ処理コンテキストであるかを示す、第１の状態情報を含むことができる。状態情報はまた、該割り込み要求の結果として処理回路によって実行されることになるターゲットデータ処理コンテキストが、１つ以上の浮動小数点処理演算を含む浮動小数点データ処理コンテキストであるか、または浮動小数点処理演算を一切含まない整数データ処理コンテキストであるかを示す、第２の状態情報を含むことができる。このようにして、例外または中断（現在のプロセス）時点でのプロセッサ状態、およびスイッチ後のハンドラプロセスによって要求されるプロセッサ状態の関数である、浮動小数点状態保存プロセスをいつ行うかに関する判定を行うことが可能である。
【００１７】
状態情報はまた、現在のデータ処理コンテキストが、割り込み要求によってトリガされていないスレッドデータ処理コンテキストであるか、または割り込み要求によってトリガされているハンドラデータ処理コンテキストであるかを示す、第３の状態情報を含むことができる。これは、ハンドラからハンドラへの遷移とは異なるように、スレッドからハンドラへの遷移を処理することを可能にする。さらに説明するために、スレッドおよびハンドラの、２つの基本的な実行のモードを検討できる。スレッドモードはベースラインプロセス、すなわち、中断または例外によってトリガされないプロセスである。ハンドラモードは、スレッドモードプロセスまたは別のハンドラプロセスのどちらかを中断する、割り込みモードである。すなわち、例外または中断のスイッチ後は必ずハンドラであるが、スイッチ前はスレッドまたはハンドラのどちらかであり得る。通常、スレッドは、タスク／プロセスの実行に関係すると想定され、一方で、ハンドラは、例外および中断のための特権的実行を提供する。本発明の実施形態は、浮動小数点ハードウェアを使用する（浮動小数点ハンドラ）または使用しない（整数ハンドラ）のいずれかとして、各ハンドラを注釈する追加のマシン状態を提供する。同様に、現在のスレッドが浮動小数点ハードウェアを使用する（浮動スレッド）または使用しない（整数スレッド）ことを示す追加のマシン状態を提供できる。
【００１８】
一実施形態において、追加のマシン状態は、スイッチ後のプロセスが「浮動ハンドラ」であり、スイッチ前のプロセスが「整数スレッド」ではない場合（すなわち、スイッチ前が浮動スレッド、浮動ハンドラ、または整数ハンドラのいずれかである場合）に浮動小数点状態保存を限定するために使用される。この結果、割り込みハンドラが整数ハンドラである場合、割り込みプロセスは浮動小数点レジスタを上書きしないため、浮動小数点状態保存は発生しない。さらに、割り込みハンドラが浮動小数点ハンドラである場合であっても、中断される（スイッチ前の）プロセスが整数スレッドである場合、この場合には浮動小数点ハンドラによって上書きされる場合がある浮動小数点レジスタは、中断されるプロセスによって必要とされず、また中断されるプロセスはそれ自体、浮動小数点レジスタを必要とするかもしれない一切の他のプロセスを中断しない（ハンドラではなく、スレッドであるため）ので、浮動小数点保存は発生しない。
【００１９】
処理回路は、ターゲットデータ処理コンテキストが浮動小数点データ処理コンテキストであること、および現在のデータ処理コンテキストが、浮動小数点データ処理コンテキスト、または割り込み要求によってトリガされた整数データ処理コンテキストのいずれかであることを示す状態情報に応答して、浮動小数点状態保存機能を選択することができる。このようにして、浮動小数点状態保存を、アクティブである可能性のある浮動小数点状態のために提供することができる。すなわち、ターゲットデータ処理コンテキストが、浮動小数点レジスタへのアクセスを有することになる場合、浮動小数点レジスタに格納されているデータ値は、これらが中断されるプロセスに必要なデータを格納する可能性がある場合には保存される。
【００２０】
処理回路は、現在のデータ処理コンテキストが整数データ処理コンテキストであること、およびターゲットデータ処理コンテキストが整数データ処理コンテキストであることを示す状態情報に応答して、整数状態保存機能を選択することができる。このようにして、整数例外の場合には、状態保存機能の待ち時間は、レガシーコードと同じままになる。
【００２１】
処理回路は、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであること、およびターゲットデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示す状態情報に応答して、浮動小数点状態保存機能を選択することができる。このようにして、浮動小数点状態保存を、潜在的にアクティブである可能性のある浮動小数点状態のために提供することができる。
【００２２】
処理回路は、現在のデータ処理コンテキストが割り込み要求によってトリガされていない整数データ処理コンテキストであること、およびターゲットデータ処理コンテキストが浮動小数点データ処理コンテキストであることを示す状態情報に応答して、整数状態保存機能を選択することができる。このようにして、整数スレッドをバックアップする時、浮動フレームストレージを提供することは不要になる。整数ハンドラをバックアップする時、整数ハンドラ自体が、浮動小数点スレッドまたはハンドラを中断している可能性があり、その場合、浮動小数点レジスタの内容が将来（処理がその前のスレッドまたはハンドラに戻る時）必要になる場合があり、以前に保存されていなかった可能性があるため、浮動小数点レジスタの保存は必要ではないとは想定できないことが理解されるであろう。この理由のために、浮動小数点ハンドラによって中断されている整数ハンドラの場合、浮動小数点レジスタは保存されるであろうことが想定される。
【００２３】
代替として、スイッチ前のプロセスがスレッドであるか、またはハンドラであるかに依存して判定を行う代わりに、前の（中断された）プロセスが浮動小数点レジスタを利用したかを示す追加の状態情報が、レジスタ内に格納され、整数状態保存機能を実行するか、または浮動小数点状態保存機能を実行するかの決定時に参照されてもよい。
【００２４】
データ処理装置は、割り込み要求を生成するための割り込みコントローラを含むことができる。割り込みコントローラは、ターゲットプロセスをトリガするための１つ以上の可能な割り込み要求に関連してターゲットプロセスに関する状態情報を格納し、可能な割り込み要求のうちの選択された１つに関連する状態情報を、選択された割り込み要求と共に処理回路に通信するように配置され得る。
【００２５】
代替として、従来の割り込みコントローラを使用することができ、１つ以上の可能な割り込み要求に関連する状態情報を格納するための状態情報ストアは、例えば、プロセス自体内部またはメインメモリ内部等、個別に提供することができる。処理回路は、この場合、受け取った割り込み要求に応答して、状態情報ストアから状態情報を読み出すように構成することができ得る。
【００２６】
整数または浮動小数点状態保存機能が完了した後、システムの状態はターゲットデータ処理コンテキストのために設定される必要があるが、一方で、ターゲットデータ処理コンテキストが完了または終了した後、処理回路が現在のデータ処理コンテキストに戻ることが可能であるようにレジスタ情報を設定する。一例においては、ターゲットデータ処理コンテキストの開始前に第２の状態情報が格納される第１の構成レジスタ、ならびにターゲットデータ処理コンテキストの開始前に第１および第３の情報が格納される第２の構成レジスタを提供することができる。第１の構成レジスタは、システムの現在の浮動小数点状態（すなわち、現在実行しているコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるか）を示す専用構成レジスタであり得ると共に、第２の構成レジスタは、前のデータ処理コンテキストのスタックポインタを示すためのリンクレジスタ、および前のデータ処理コンテキストが整数データ処理コンテキストであるか、または浮動小数点データ処理コンテキストであるかの表示であってもよい。この場合、ターゲットデータ処理コンテキストが開始される時、処理回路は、現在のデータ処理コンテキストのスタックポインターを示し、現在のデータ処理コンテキストが整数データ処理コンテキストであるか、または浮動小数点データ処理コンテキストであるかを示すようにリンクレジスタを設定する。このようにして、処理回路は、ターゲットデータ処理コンテキストが完了した後、現在のデータ処理コンテキストへ戻ることを可能にするために必要な情報（スタックＩＤおよびスタックにバックアップされたデータの量）へのアクセスを有するようになる。リンクレジスタは、関数呼び出しにおいて従来使用され、割り込みをサービスするためのメカニズムであることが理解されるであろう。関数呼び出しの場合、分岐命令は、リンクレジスタの中にその次の命令のアドレスを書き込み、指定された場所に分岐する。分岐が完了した後に戻るために、プロセッサは、どこへ戻るかを正確に決定するために、リンクレジスタの中に格納していた値を使用する。同じことが例外に入る際に適用され、それによって、例外戻り値は、従来リンクレジスタの中に格納される。しかしながら、関数呼び出しまたは中断の戻り値を格納するために、リンクレジスタ以外のレジスタを使用することが可能であり、いくつかの場合には有用な場合がある。
【００２７】
第１の組の整数レジスタは、スタックポインタを格納するためのレジスタを備え、スタックポインタは、現在のデータ処理コンテキストがスレッドである時にはプロセススタックの１番上を指し、現在のデータ処理コンテキストがハンドラである時にはメインスタックの１番上を指す。この場合、スタックポインタは、現在のコンテキストがスレッドであるか、またはハンドラであるかを判定するために使用することができ、したがって、アクティブなスタックポインタは第３の状態情報として使用することができる。
【００２８】
この場合、第１の組の整数レジスタがリンクレジスタを備える時、処理回路は、割り込み要求に応答して、現在のデータ処理コンテキストのスタックポインタ、および現在のデータ処理コンテキストが整数データ処理コンテキストであるか、または浮動小数点データ処理コンテキストであるかの表示を示すようにリンクレジスタを設定することができる。処理回路は次いで、ターゲットデータ処理コンテキストの終了に応答して、リンクレジスタ内に格納された情報を使用して、整数状態復元機能および浮動小数点状態復元機能のうちの１つを実行する。
【００２９】
状態情報は、ハードウエアに組み込まれてもよく、または代替として、オペレーティングシステムまたは他のプログラムコードの制御下で処理回路によって構成可能であってもよい。
【００３０】
ある場合に浮動小数点レジスタの内容だけを保存する際に発生し得る問題は、プログラミングのエラーによって、整数コンテキストの中で演算することを意図したデータ処理演算が、浮動小数点レジスタを使用しようとするかもしれないことである。許可されると、これは、スタックに格納されていないレジスタを上書きし、それによって、中断されたプロセスの以降の実行でエラーを発生させることになる。これを回避するために、本発明の一実施形態は、ターゲット処理コンテキストが整数データ処理コンテキストであることを状態情報が示す時に、割り込み要求によってトリガされたターゲットデータ処理演算が浮動小数点レジスタを使用しようとする場合、処理回路は、浮動小数点レジスタが上書きされる前に例外を生成することを提供する。プロセッサは次いで、この例外を適切な様式で処理することができる。
【００３１】
レジスタの内容をスタックに転送するためのいくつかのオプションがある。例えば、浮動小数点状態保存機能は、最初に第１の組の整数レジスタをスタックにコピーし、次いで第２の組の浮動小数点レジスタをスタックの１番上にコピーすることによって行われ得る。理解されるように、レジスタ値をスタックにコピーするプロセスは、所定の時間がかかる。より高い優先度の割り込みがより迅速に処理され得るように、処理回路は、整数状態保存機能を要求する、受け取られたより高い優先度の中断に応答する一方で、浮動小数点状態保存機能は、第２の組の浮動小数点レジスタのスタックへのコピーを阻止し、スタックの１番上になる第１の組の整数レジスタを示すようにスタックポインタを設定するように行われている。これによって、２つの割り込みが共に近接して受け取られた時の状態保存プロセスの適時性を向上し、処理およびエネルギー要件を削減する。より具体的には、これは、整数ハンドラの取得を優先して浮動スタック実施を中止する能力の形で、より高い優先度の割り込みの遅延到着を提供することによって、整数ハンドラの待ち時間利点の実現を支援する。
【００３２】
代替として、浮動小数点状態保存機能は、最初に第２の組の浮動小数点レジスタをスタックにコピーし、次いで第１の組の整数レジスタをスタックにコピーすることによって、行われ得る。この場合、処理回路は、整数状態保存機能を要求する、受け取られた高い優先度の割り込みに応答する一方で、浮動小数点状態保存機能は、浮動小数点レジスタおよび整数レジスタの両方のスタックへの格納を完了し、浮動小数点状態保存プロセスが完了する前に割り込み浮動小数点プロセスが中断されたこと、およびスタックに格納された浮動小数点レジスタ値はもう必要とされないことを示す状態情報をさらに生成するように行われる。この結果、このさらなる状態情報は、先のプロセスに戻る時に、整数および浮動小数点の両方のレジスタに関わる比較的より大きい量のデータをコピーするのではなく、整数レジスタに関わる比較的より小さい量のデータだけをスタックから整数レジスタにコピーさせるために使用することができる。
【００３３】
ある条件の下、例えば、レガシーモードでは、浮動小数点状態保存機能を無効にすることが望ましい場合がある。この場合、処理回路は、オーバーライド信号に応答して、状態情報に関係なく割り込み要求に応答して整数状態保存機能を実行することができる。
【００３４】
本発明の別の態様に従い、データ処理命令に応答して整数データ処理演算および浮動小数点データ処理演算を実行するデータ処理方法が提供され、整数データ処理演算は、第１の組の整数レジスタを使用し、浮動小数点データ処理演算は、第２の組の浮動小数点レジスタを使用し、方法は、割り込み要求に応答して、該整数レジスタのみの少なくともサブセットがスタックメモリにコピーされる整数状態保存機能と、該整数レジスタおよび該浮動小数点レジスタの両方の少なくともサブセットが該スタックメモリにコピーされる浮動小数点状態保存機能とのうちの１つを実行するステップを含み、該整数状態保存機能および該浮動小数点状態保存機能のうちの該１つは、状態情報に基づいて選択される。
【００３５】
本発明の多様な他の態様および特徴が特許請求の範囲に定義され、それはコンピュータプログラム製品を含む。
【図面の簡単な説明】
【００３６】
【図１】割り込みコントローラからの割り込み要求に応答して整数レジスタおよび浮動小数点レジスタがスタックメモリに保存される、データ処理装置の模式図である。
【図２Ａ】例示的な組の整数レジスタの模式図である。
【図２Ｂ】例示的な組の浮動小数点レジスタの模式図である。
【図３Ａ】例示的な整数状態保存演算のためのスタック内のレジスタエントリの格納の模式図である。
【図３Ｂ】例示的な浮動小数点状態保存演算のためのスタック内のレジスタエントリの格納の模式図である。
【図３Ｃ】例示的な浮動小数点状態保存演算のためのスタック内のレジスタエントリの格納の模式図である。
【図４】整数または浮動小数点状態保存が、現在のデータ処理コンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかに基づいて実行される、第１の実施形態に従うデータ処理装置の模式図である。
【図５】第１の実施形態に従う状態保存機能の演算を示す模式的流れ図である。
【図６】第１の実施形態に従う状態復元機能の演算を示す模式的流れ図である。
【図７】浮動小数点の状態保存および遅延保存の両方が有効であるモードにおける、第１の実施形態の演算を模式的に示す状態図である。
【図８】浮動小数点の状態保存は有効であるが、遅延保存は無効であるモードにおける、第１の実施形態の演算を模式的に示す状態図である。
【図９】浮動小数点保存および遅延保存の両方が無効であるモードにおける、第１の実施形態の演算の模式図である。
【図１０】整数または浮動小数点状態保存が、（ａ）現在のデータ処理コンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるか、（ｂ）現在のデータ処理コンテキストがスレッドであるか、またはハンドラであるか、および（ｃ）割り込みデータ処理コンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかに基づいて実行され、状態情報が割り込みコントローラによって提供される、第２の実施形態に従う第１の例のデータ処理装置の模式図である。
【図１１】状態情報がプロセッサ内の参照テーブルの形で提供される、第２の実施形態の別の例の模式図である。
【図１２Ａ】例示的スレッド／ハンドラ進捗の模式図である。
【図１２Ｂ】例示的スレッド／ハンドラ進捗の模式図である。
【図１２Ｃ】例示的スレッド／ハンドラ進捗の模式図である。
【図１２Ｄ】例示的スレッド／ハンドラ進捗の模式図である。
【図１３】第２の実施形態に従う、割り込みに応答するコンテキストスイッチ方法を示す模式的流れ図である。
【図１４】第２の実施形態に従う、割り込みプロセスが完了した時に発生するコンテキストスイッチ方法を示す模式的流れ図である。
【発明を実施するための形態】
【００３７】
本発明の実施形態はここで、添付の図面を参照して、例示としてのみ説明される。
【００３８】
図１を参照すると、データプロセッサ１０と、メインメモリ２０と、割り込みコントローラ３０と、バス４０とを備える、データ処理装置１が示される。データプロセッサ１０は、処理回路１２と、レジスタファイル１４とを備える。レジスタファイル１４は、１組の整数レジスタ１４Ａと、１組の浮動小数点レジスタ１４Ｂとを含む。処理回路１２は、データ処理命令に応答して、レジスタファイル１４の整数レジスタ１４Ａおよび浮動小数点レジスタ１４Ｂに格納された値を利用して、データ処理演算を実行するように動作可能である。より具体的には、整数データ処理演算は、処理回路１２によって、整数レジスタ１４Ａを使用して実行され、一方で浮動小数点データ処理演算は、処理回路１２によって、整数レジスタ１４Ａおよび浮動小数点レジスタ１４Ｂの両方を使用して実行される。
【００３９】
整数レジスタ１４Ａは、処理回路１２によって使用および操作されるためのデータ値を格納するための汎用目的レジスタを含み得ると共に、（いくつかの場合においては、これらはまた汎用目的レジスタとして使用され得るが）専用目的を有するレジスタを含み得る。ＡＲＭベースのプロセッサアーキテクチャの場合、１６個の整数レジスタが提供される。これらは、プログラムカウンタ（レジスタ１５）と、リンクレジスタ（レジスタ１４）と、スタックポインタ（レジスタ１３）とを含む。プログラムカウンタは、処理回路１２によって実行されている現在の命令のメモリアドレスを格納する。リンクレジスタは、第１のプロセスから第２のプロセスへの分岐の場合、第２のプロセスへの分岐が完了した時に実行される、第１のプロセス内の次の命令のメモリアドレスを格納する。スタックポインタは、現在のプロセスに関連するスタックの１番上を示すアドレスを格納する。
【００４０】
メインメモリ２０は、多様な目的のためのデータ値を格納するように動作可能であり、バス４０を介して、データプロセッサ１０によってアクセス可能である。バス４０はそれ自体、データ値を運ぶためのデータバスと、メインメモリ内の格納場所を示すアドレス信号を運ぶためのアドレスバスと、メインメモリ４０へのデータの書き込みおよびメインメモリからのデータの読み出しを制御するための制御信号を行使するための制御バスとを含み得る。メインメモリ２０は、メインスタック（ＭＳＰ）２２Ａおよびプロセススタック（ＰＳＰ）２２Ｂのための格納領域を提供する、スタック格納領域２２を備える。スタックは、後入れ先出し（ＬＩＦＯ）データ構造であり、新しいデータ値は、スタックの１番上にそれらを「プッシュ」することによってスタックに追加され、その後、スタックの１番上からそれらを「ポップ」することによってアクセスされる。いずれの場合でも、スタックポインタ（本事例の場合にはレジスタ１３に格納される）は、スタックの１番上の新しい位置を反映するように更新される。ＡＲＭアーキテクチャにおいては、「スレッド」プロセス（すなわち、中断または例外によってトリガされていないプロセス）によって使用される、プロセススタックが提供され、「ハンドラ」プロセス（すなわち、中断または例外によってトリガされているプロセス）によって使用されるための「特権」モードを提供する、メインスタックが提供される。加えて、いくつかのハンドラプロセスの各々は、プライベートスタックポインタを利用することによって、プロセススタックの異なる部分をその独自のプライベートスタックとして処理することができる。
【００４１】
割り込みコントローラ３０は、割り込み３６を受け取り、受け取られた割り込みから、信号ライン３８を介してデータプロセッサ１０の処理回路１２に印加されることになる最高の優先度の割り込みを選択するための優先順位決定回路３２を含む。受け取られた割り込み３６は、周辺デバイスまたはデータ処理装置１の他のハードウェア構成要素から受け取られるハードウェア割り込みであり得るか、または、データ処理命令に応答して処理回路１２によって発行されるソフトウェア割り込みであり得る。
【００４２】
演算中、処理回路１２は、信号ライン３８を介して割り込みコントローラ３０から割り込みが受け取られるまで、現在のプロセスの一連のデータ処理命令を実行する。受け取られた割り込みは、新しいプロセスがサービスされる間、現在のプロセスが一時停止されなければならないことを示す。現在のプロセスを再開できるように、現在のプロセスに関する情報は、その後復元できるように格納されねばならない。この格納される情報は、レジスタファイル１４の整数レジスタ１４Ａおよび浮動小数点レジスタ１４Ｂのうちの１つまたは両方の内容の少なくとも一部を含む。具体的には、整数レジスタ１４Ａは、整数状態保存機能および浮動小数点状態保存機能の両方によって格納されるが、浮動小数点レジスタ１４Ｂは、浮動小数点状態保存機能のみによって格納される。したがって、浮動小数点状態保存機能は、割り込み時点のシステムの状態が浮動小数点レジスタの保存を必要とする時のみ、開始されることができる。
【００４３】
割り込みプロセスが終了する時、処理回路１２は、状態情報（スタックに保存されたレジスタ値を含む）を復元し、次いで、中断された時点から中断されたプロセスを継続するように動作可能である。
【００４４】
ここで図２Ａおよび２Ｂを参照すると、例示的な整数および浮動小数点プロセッサレジスタバンクが模式的に示される。本発明の実施形態は、他の組の整数および浮動小数点レジスタに等しく適用可能であることが理解されるであろう。図２Ａは、１組の１７個の整数レジスタである、ｒ０からｒ１５、およびｘｐｓｒを示す。レジスタｒ０からｒ１５は、（レジスタｒ１３はスタックポインタとして機能し、レジスタｒ１４はリンクレジスタとして機能し、レジスタｒ１５はプログラムカウンタとして機能するが）汎用目的レジスタである。レジスタｘｐｓｒは、システムの現在の状態を示すプログラムステータスレジスタである。整数または浮動小数点状態保存機能の一部としてバックアップされることになる整数レジスタは、レジスタｒ０からｒ３、ｒ１２、ｒ１４、ｒ１５およびｘｐｓｒである。残りのレジスタは、割り込みが受け取られる場合にバックアップされる必要はない。
【００４５】
図２Ｂは、１組の３４個の浮動小数点レジスタである、ｓ０からｓ３１、ｆｐｓｃｒ、およびｆｐｅｘｃを示す。レジスタｓ０からｓ３１は、汎用目的レジスタである。レジスタｆｐｓｃｒは、浮動小数点演算のためのステータスおよび制御ビットを含有する、浮動小数点ステータスおよび制御レジスタである。レジスタｆｐｅｘｃは、浮動小数点プロセスに関する例外ステータスを記録するための浮動小数点例外レジスタである。浮動小数点状態保存機能の一部としてバックアップされることになる浮動小数点レジスタは、ｓ０からｓ１５、ｆｐｓｃｒ、およびｆｐｅｘｃである。残りのレジスタは、割り込みが受け取られる場合にバックアップされる必要はない。
【００４６】
整数レジスタおよび浮動小数点レジスタの全体をバックアップしない２つの理由は、格納演算は、一定の時間がかかり、コンテキストスイッチの待ち時間を増加させること、さらにレジスタの全体をバックアップすると、スイッチされているプロセスに対して増加したスタックサイズが必要になることである。中断プロセスが完了された後で、プロセスが戻ることを許可するために必要な程度まで、システムの状態を格納するために、全てのレジスタをバックアップする必要はないことが認識される。具体的には、プロシージャ呼び出し基準は、新しいコンテキストを手動で保存し、それらを使用することを所望する場合はいくつかのレジスタを手動で復元することを必要とする場合がある。
【００４７】
ここで図３Ａ、３Ｂ、および３Ｃを参照すると、図２Ａおよび２Ｂに示される整数および浮動小数点レジスタからバックアップされたレジスタ内容を含む、スタックの例示的な部分が模式的に示される。具体的には、図３Ａは、レジスタｒ０からｒ３、ｒ１２、ｒ１４、ｒ１５およびｘｐｓｒの内容がスタックの１番上に格納されている、整数状態保存演算の後のスタックの上部を示す。前（割り込み要求ＩＲＱ前）の１番上のスタック位置が、図３Ａに示される。新しい１番上のスタック位置は、整数レジスタｒ０の値が格納されるメモリ内の位置に対応する。ＡＲＭアーキテクチャにおいて、スタックに項目が追加される時、スタックメモリは１番上（最高のアドレス位置）から下へ満たされるため、スタックの１番上のメモリアドレスは実際には、デクリメントされる。
【００４８】
図３Ｂに、浮動小数点状態保存演算の後のスタックの上部が示される。これは、図３Ａの位置に対応する位置に、整数レジスタｒ０からｒ３、ｒ１２、ｒ１４、ｒ１５、およびｘｐｓｒのバックアップされる値を含む。しかしながら、これらより上（スタックの１番上により近い）に、浮動小数点レジスタｓ０からｓ１５、ｆｐｓｃｒ、ｆｐｅｘｃのバックアップされた値が格納される。前（割り込み要求ＩＲＱ前）の１番上のスタック位置が、図３Ｂに示される。新しい１番上のスタック位置は、浮動小数点レジスタｓ０の値が格納されるアドレスに対応する。
【００４９】
図３Ｃには、図３Ｂと同様に、浮動小数点状態保存演算の後のスタックの上部が示される。しかしながら、図３Ｂとは異なり、浮動小数点レジスタが最初にバックアップされ、次いで整数レジスタが浮動小数点レジスタの上に格納される。このため、整数レジスタｒ０からｒ３、ｒ１２、ｒ１４、ｒ１５、およびｘｐｓｒは、浮動小数点レジスタｓ０からｓ１５、ｆｐｓｃｒ、およびｆｐｅｘｃよりもスタックの１番上により近接して格納される。前（割り込み要求ＩＲＱ前）の１番上のスタック位置が、図３Ｃに示される。新しい１番上のスタック位置は、整数レジスタｒ０の値が格納されるメモリ内の位置に対応する。
【００５０】
理解されるように、整数および浮動小数点レジスタからスタック上へのデータ値の格納は、一定の時間がかかる。この時間中、処理回路１２によって、別のより高い優先度の割り込みが受け取られる可能性があり、この場合、前の割り込み（整数および浮動小数点状態保存機能をトリガしたもの）がキャンセルされ、より高い優先度の割り込みがサービスされることになる。この場合、より高い優先度の割り込みが整数プロセスに関連する場合、浮動小数点レジスタは使用されず、したがって保存される必要がなくなる場合（いくつかの実施形態においては）がある。この状況が対処され得る方法は、整数レジスタおよび浮動小数点レジスタがスタックに格納される順序に依存する。図３Ｂに示される順序の場合、浮動小数点状態保存機能の一部としての浮動小数点レジスタのスタックへの格納は、終了することができ得ると共に、１番上のスタックポインタはｒ０に設定される。スタックポインタ、ならびに中断されたプロセスが整数プロセスであるか、または浮動小数点プロセスであるかの表示は、割り込みプロセスが開始する時にリンクレジスタにコピーされ、中断されたプロセスが再開される時にスタックへのアクセスを取得してレジスタ値を復元するために使用することができる。中断されるプロセスが整数プロセスであるか、または浮動小数点プロセスであるかの表示は、整数レジスタだけが復元される必要があるか、または整数および浮動小数点の両方のレジスタが復元される必要があるかを判定するために使用することができる。
【００５１】
図３Ｃに示される順序の場合、処理回路は、整数レジスタだけが復元される必要があると判定するため、浮動小数点および整数の両方のレジスタのスタックへの格納は完了されるが、保存された浮動小数点レジスタ値は、中断されたプロセスが再開する時に復元されず、したがって、状態復元機能の間、浮動小数点レジスタを格納しているスタックの部分は無視される。
【００５２】
一般的に、状態情報に基づいて行われる判定に依存して、処理回路１２は、整数レジスタ（のうちの少なくともいくつか）の内容だけをスタックに転送するか、または整数および浮動小数点レジスタの両方（のうちの少なくともいくつか）の内容をスタックに転送するか、のいずれかである。次いで、必要なレジスタがスタックにコピーされた後、次のプロセスは、先のプロセスに戻る時に必要となる状態情報またはデータを破壊することなく、必要に応じてレジスタを利用することができる。
【００５３】
（第１の実施形態）
ここで、割り込み要求時の整数または浮動小数点状態保存機能の選択が、現在のデータ処理コンテキスト（中断されているコンテキスト）が整数レジスタのみを使用する整数コンテキストであるか、または整数レジスタおよび浮動小数点レジスタの両方を使用する浮動小数点コンテキストであるかに基づいて行われる、第１の実施形態が説明される。具体的には、整数状態保存機能は、現在のコンテキストが整数コンテキストである場合に実施され、浮動小数点状態保存機能は、現在のコンテキストが浮動小数点コンテキストである場合に実施される。
【００５４】
図４を参照すると、データプロセッサ１１０が、割り込みコントローラから受け取られた割り込み要求１３８に応答して、現在のコンテキストを中断し、現在の（中断される）コンテキストに関する状態情報（レジスタ内容）を保存し、新しい（割り込み）コンテキストをサービスする処理回路１１２を有する、第１の実施形態に従う装置１００が模式的に示される。図４において、図１と同様に、レジスタファイル１１４は、１組の整数レジスタ１１４Ａと、１組の浮動小数点レジスタ１１４Ｂとを含む。整数レジスタ１１４Ａは、この場合、後述する状態復元プロセスにおいて利用される、スタックポインタ（ＳＰ）１１５とリンクレジスタ（ＬＲ）１１６とを含むように示される。図１と同様に、データ処理回路１００のメインメモリ１２０は、中断されたデータ処理コンテキストがスレッドであるか、またはハンドラであるかに基づいて、メインスタック領域１２２Ａまたはプロセススタック領域１２２Ｂのどちらかに、整数および／または浮動小数点プロセッサレジスタに関する内容を格納するように構成されるスタックメモリ１２２を含む。具体的には、中断されるプロセスがスレッドである場合、そのプロセスに関するレジスタは、状態保存機能によってメインスタック内にコピーされるが、中断されるプロセスがハンドラである場合、そのプロセスに関するレジスタは、状態保存機能によってプロセススタック内にコピーされる。
【００５５】
データプロセッサ１１０はまた、制御レジスタ１４１、浮動小数点コンテキスト制御レジスタ（ＦＰＣＣＲ）１４２、および浮動小数点コンテキストアドレスレジスタ（ＦＰＣＡＲ）１４３を含む、１組の構成レジスタ１４０を備える。これらの構成レジスタを以下に説明する。
【００５６】
【表１】
0005564562.tif 000002
【００５７】
制御レジスタ１４１は、現在実行中のコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかを示す第１のビット（ビット［２］）、メイン（ＭＳＰ）スタックおよびプロセス（ＰＳＰ）スタックのどちらが現在のコンテキストで使用されているかを示す第２のビット（ビット［１］）、およびスレッドモードの特権状態を示す第３のビット（ビット［０］）を有する３ビットレジスタである。第１の実施形態の目的のために、実施されることになる状態保存機能の選択は、現在のコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかに基づいて行われるため、ビット［２］は、制御レジスタ１４１の特定対象となる構成要素である。
【００５８】
【表２】
0005564562.tif 000003
【００５９】
浮動小数点コンテキスト制御レジスタ（ＦＰＣＣＲ）１４２は、典型的には、特権モードにおいて稼動しているソフトウェアだけにアクセス可能になるレジスタである。浮動小数点コンテキスト制御レジスタ１４２は、浮動小数点状態保存機能が使用可能であるかを示すために設定可能である、ビット［３１］（ＡＳＰＥＮ）を含む。整数状態保存機能は、常に使用可能であると想定される。より具体的には、ビット［３１］は、浮動小数点状態保存機能が使用可能になるように設定される場合、上記の制御レジスタ１４１のビット［２］が、浮動小数点命令の実行時に設定されることを可能にし、例外エントリおよび終了時に浮動小数点コンテキストに対する自動的ハードウェア状態保存および復元につながる。浮動小数点コンテキスト制御レジスタ１４２はまた、自動的レイジー（lazy）浮動小数点状態保存（後述）を有効および無効にする、ビット［３０］（ＬＳＰＥＮ）を含む。浮動小数点コンテキスト制御レジスタ１４２はまた、レイジー浮動小数点状態保存がアクティブであることを示す、具体的には、浮動小数点スタックフレームがスタック上に割り当てられているが、それへの保存状態（プロセッサレジスタの内容）は遅延されていることを示すビット［０］（ＬＳＰＡＣＴ）を含む。浮動小数点コンテキスト制御レジスタ１４２は、他の使用のために予約（reserve）されるか、または中断されたプロセスへの戻りを待機している、中断されたプロセスに関する優先度および特権情報を保存するための状態情報を提供する、いくつかの他のビット（ビット［２９：１］）を含む。
【００６０】
【表３】
0005564562.tif 000004
【００６１】
遅延浮動小数点状態保存を実現するために、浮動小数点コンテキストアドレスレジスタ（ＦＰＣＡＲ）１４３が提供され、これは浮動小数点コンテキスト制御レジスタ１４２と同様に、特権モードのみでアクセス可能である。浮動小数点コンテキストアドレスレジスタ１４３は、遅延浮動小数点状態保存機能の場合に、浮動小数点レジスタがその後でコピーされることになる、スタック内の位置を示すアドレスを（ビット［３１：３］内に）格納する。ビット［２：０］は予約（reserve）される。
【００６２】
演算中、制御レジスタ１４１のビット［２］は、処理回路１１２によって、浮動小数点命令が実行中であるかを記録するために使用される。制御レジスタ１４１のビット［２］は、現在実行されている命令が整数レジスタだけを使用しているか、または整数レジスタおよび浮動小数点レジスタの両方を使用しているかに基づいて設定される。例：
ＡＤＤ  ｒ０，ｒ０，＃１         （１）
ＣＭＰ  ｒ０，＃３               （２）
【００６３】
上記の例は、「ｒＸ」整数レジスタを使用する純粋な整数コードで、したがって、整数コンテキストである。具体的には、命令（１）は、整数レジスタｒ０の中の値を１だけインクリメントするように作用し、命令（２）は、整数レジスタｒ０の中に格納された値を数字３と比較するように作用する。どちらの場合も、これらの命令は、整数レジスタ上のみで演算する。
【００６４】
対照的に、
ＶＡＤＤ．Ｆ３２  ｓ０，ｓ０，ｓ１             （３）
ＶＣＭＰ．Ｆ３２  ｓ０，＃０             （４）
【００６５】
上記の命令は、浮動小数点命令および「ｓＸ」浮動小数点レジスタ（ならびに整数レジスタおよび命令）を利用し、したがって、浮動小数点コンテキストを形成する。具体的には、命令（３）は、浮動小数点ｓ０およびｓ１に格納された値を加算し、その結果を浮動小数点レジスタｓ０に格納する。命令（４）は、浮動小数点レジスタｓ０に格納された値を値０と比較する。ＶＡＤＤ．Ｆ３２の実行は（これが第１のＶＦＰ命令である場合）、制御信号１４１のビット［２］を設定させ、コンテキストが現在浮動小数点コンテキストであることを示す。
【００６６】
整数コンテキストの使用の簡単な例は、２つの整数値へのポインタを取得し、それらの値を乗算し、結果を返す関数であり得る。
【００６７】
Ｃコード：
ｉｎｔ  ｉｎｔｅｇｅｒ＿ｍｕｌ（ｉｎｔ  ＊ｉｎｔ＿ａｒｒａｙ）
｛
ｒｅｔｕｒｎ  ｉｎｔ＿ａｒｒａｙ［０］  ＊  ｉｎｔ＿ａｒｒａｙ［１］；
｝
【００６８】
アセンブリ言語による対応するコード：
ＬＤＲ  ｒ１，［ｒ０］     ；ｉｎｔ＿ａｒｒａｙ［０］をｒ１にロード（ｒ０はポインタを含有）
ＬＤＲ  ｒ２，［ｒ０，＃４］      ；ｉｎｔ＿ａｒｒａｙ［１］をｒ２にロード
ＭＵＬ  ｒ０，ｒ１，ｒ２   ；乗算してｒ０へ（戻り値）
ＢＸ  ｌｒ         ；関数から戻る
【００６９】
浮動小数点コンテキストの簡単な例は、２つの浮動小数点値へのポインタを取得し、それらの値を乗算し、結果を戻す同じ関数であり得る。
【００７０】
Ｃコード：
ｆｌｏａｔ  ｆｌｏａｔ＿ｍｕｌ（ｆｌｏａｔ  ＊ｆｌｏａｔ＿ａｒｒａｙ）
｛
ｒｅｔｕｒｎ  ｆｌｏａｔ＿ａｒｒａｙ［０］  ＊  ｆｌｏａｔ＿ａｒｒａｙ［１］；
｝
【００７１】
アセンブリ言語による対応するコード：
ＶＬＤＲ     ｓ１，［ｒ０］       ；ｆｌｏａｔ＿ａｒｒａｙ［０］をｓ１にロード（ｒ０はポインタを含有）
ＶＬＤＲ     ｓ２，［ｒ０，＃４］ ；ｆｌｏａｔ＿ａｒｒａｙ［１］をｓ２にロード
ＶＭＵＬ．Ｆ３２  ｓ０，ｓ１，ｓ２       ；乗算してｓ０へ（戻り値）
ＢＸ  ｌｒ         ；関数から戻る
【００７２】
ＶＬＤＲが現在のコンテキストの中で発生した第１のＶＦＰ命令であった場合、コンテキストがＶＦＰコンテキストになるようにさせ、この時点で、制御レジスタ１４１のビット［２］が設定されることになる。
【００７３】
現在のデータ処理コンテキストが、割り込みによって阻止され、制御レジスタ１４１のビット［２］が設定される場合、浮動小数点コンテキスト制御レジスタ１４２のビット［３１］は、処理回路１１２が浮動小数点フレーム（浮動小数点状態保存のため）を割り当てるか、または整数フレーム（整数状態保存のため）を割り当てるかを示す。浮動小数点コンテキスト制御レジスタ１４２のさらなるビット（ビット［３０］）は、割り当て時にスタックの浮動小数点フレームを更新するか、または後の時点まで浮動小数点フレームの更新を遅延するかを示す。遅延する場合、浮動小数点コンテキスト制御レジスタ１４２のさらなるビット（ビット［０］）が設定され、スタックメモリ内の空の浮動小数点フレームのアドレスが、浮動小数点コンテキストアドレスレジスタ（ＦＰＣＡＲ）１４３の中に記録される。
【００７４】
割り込みに入る時、制御レジスタ１４１のビット［２］は反転され、反転された値は、リンクレジスタ１１６内のビットを示すフレームサイズとして設定される。このビットは、スタックメモリ１２２に割り当てまたはコピーされるフレーム（整数フレームまたは浮動小数点フレーム）のサイズを示すために使用される。このビットがリンクレジスタ１１６内に設定された後、制御レジスタ１４１のビット［２］はゼロの値にクリアされる。制御レジスタ１４１のビット［２］がクリアされ、浮動小数点コンテキスト制御レジスタ１４２のビット［０］が１の値（浮動小数点フレームが割り当てられているが、まだ格納されていないことを示す）に設定されている間に浮動小数点命令が実行される場合、まだ浮動小数点レジスタ１１４Ｂ内部にある浮動小数点の内容は、浮動小数点コンテキストアドレスレジスタ１４３の中に指定されたアドレスに格納され、浮動小数点コンテキスト制御レジスタ１４２のビット［０］は、（浮動小数点レジスタが現在スタック内の割り当てられたスペースに格納されていることを示すように）ゼロにクリアされ、次いで制御レジスタ１４１のビット［２］（第１の状態情報）が設定される。
【００７５】
リンクレジスタ１１６内のビットを示すフレームサイズがクリア（ゼロ）で、浮動小数点フレームが割り当てられていることを示す時に割り込みプロセスから戻った後、浮動小数点コンテキスト制御レジスタ１４２のビット［０］が、浮動小数点フレームがスタックに割り当てられているが、更新されていないことを示すように１の値に設定される場合、この場合のビット［０］は、浮動小数点レジスタのスタック内に割り当てられたスペースへのコピーが決して発生していないことを示すので、スタック内の浮動小数点フレームは、単純に無視される。しかしながら、浮動小数点レジスタ１１４Ｂの内容がいったんスタック１２２内にコピーされた場合のように、浮動小数点コンテキスト制御レジスタ１４２のビット［０］がクリア（ゼロ）である場合、スタックされた浮動小数点フレームは、浮動小数点レジスタ１１４Ｂ内にロードされて戻される。制御信号のビット［２］は次いで、装置が整数コンテキストに戻っているか、または浮動小数点コンテキストに戻っているかに基づいて更新される。ビット［２］は、状態が復元されたか、されていないかに無関係に更新される。これは、基本的に、ハードウェアベースのレイジー（lazy）コンテキストスイッチングシステムを実現する。
【００７６】
中断からの戻りは、中断の時点で、プロセッサに、中断されたコンテキストのどのスタック（メインまたはプロセス）状態情報が格納されたか、どの程度の情報が格納されたか（整数フレームまたは浮動小数点フレーム）、および戻されているプロセスがスレッドであるか、またはハンドラであるかを示す戻り値を指定するように設定される、リンクレジスタ１１６を使用して実現される。これを達成するために、リンクレジスタ１１６の中に設定できる戻り値の例を以下に示す。
【００７７】
【表４】
0005564562.tif 000005
【００７８】
テーブル１から、例外戻り値の最後から２番目の１６進法の値は、ＥまたはＦのいずれかであることが確認でき、Ｅの値は、スイッチ後の（戻る）コンテキストが、浮動小数点コンテキストであることを示し、Ｆの値は、スイッチ後のコンテキストが整数コンテキストであることを示す（列４）。この値はしたがって、上記のビットを示すフレームサイズを提供する。また、例外戻り値の最後の１６進法値は、１、９、Ｄのいずれかであることも確認でき、１の値は、メイン（ＭＳＰ）スタックのハンドラモードへの戻りを示し、９の値は、メインスタックのスレッドモードへの戻りを示し、Ｄの値はプロセス（ＰＳＰ）スタックのスレッドモードへの戻りを示す（列２および３）。
【００７９】
図５は、第１の実施形態に従う状態保存プロセスを模式的に示す。具体的には、ステップＳ１で、現在のプロセスが進行している。ステップＳ２で、現在実行中のプロセスよりも高い優先度を有する、割り込みが受け取られたかが判定される。割り込みが全く受け取られていない、または現在実行しているプロセスよりも低い優先度を有する割り込みが受け取られた場合、プロセスは、ステップＳ１に戻る。ステップＳ２で、現在実行中のプロセスよりも高い優先度を有する割り込み要求が受け取られたと判定される時、ステップＳ３で、浮動小数点コンテキスト制御レジスタ１４２のビット［３１］に基づいて、浮動小数点状態保存が有効になっているかが判定される。ステップＳ３で、浮動小数点状態保存が有効になっていないと判定された場合、ステップＳ４で整数状態保存機能が行われる。上記のように、整数状態保存機能は、整数レジスタのうちの予め決定されたレジスタを、スタックにコピーさせる。整数レジスタがストックに格納された時、ステップＳ５で、スタックの１番上を示すスタックポインタは、新しい１番上のスタック位置を反映するように更新される。これは、保存されたレジスタ内容の整数フレームに等しい量だけ、スタックポインタを変更することを伴う。リンクレジスタ１１６は次いで、ステップＳ６で、整数フレームがスタックに格納されたことを示し、どのスタックにレジスタが格納されたか（ＭＳＰまたはＰＳＰ）を示すように、例外戻りアドレスで更新される。ターゲット（割り込み）プロセスは次いで、ステップＳ７で開始し、この中で整数レジスタ（および可能性として浮動小数点レジスタ）が上書きされ得る。
【００８０】
ステップＳ３で、浮動小数点状態保存が有効になっていると判定された場合、ステップＳ８で、制御レジスタ１４１のビット［２］によって示されるように、現在のプロセスが整数データ処理コンテキストで動作しているか、または浮動小数点データ処理コンテキストで動作しているかに基づいて、浮動小数点レジスタの格納が必要かどうかが判定される。現在のコンテキストが整数コンテキストであると判定された場合、プロセスは、ステップＳ４からＳ７に向かい、上記のように行われる。しかしながら、ステップＳ８で、現在のコンテキストが浮動小数点コンテキストであると判定された場合、浮動小数点状態保存機能が行われる。具体的には、ステップＳ９で、浮動小数点コンテキスト制御レジスタ１４２のビット［３０］に基づいて、浮動小数点レジスタの格納が直ちに（スタック割り当て時）行われるべきか、または遅延して行われるべきかが判定される。ステップＳ１０で、浮動小数点コンテキストの格納が遅延されないことが判定された場合、プロセスはステップＳ１０に進み、整数および浮動小数点の両方のレジスタがスタックメモリにコピーされる。スタックポインタは次いで、Ｓ１１で、保存されたレジスタ内容の浮動小数点フレームに等しい量だけ、スタックポインタを変更することによって、新しい１番上のスタック位置を反映するように更新される。リンクレジスタ１１６は次いで、ステップＳ１２で、浮動小数点フレームがスタックに格納されたことを示すビットを含めるように、例外戻りアドレスで更新される。ターゲット（割り込み）プロセスは次いでステップＳ１３で開始し、この中で整数レジスタ（および可能性として浮動小数点レジスタ）が上書きされ得る。
【００８１】
ステップＳ９で、浮動小数点レジスタのスタックへのコピーが遅延されることが判定された場合、ステップＳ１４で、整数レジスタだけがスタックにコピーされる。次いで、Ｓ１５で、スタックポインタは、保存されたレジスタ内容の浮動小数点フレームに等しい量だけ、スタックポインタをインクリメントすることによって、新しい１番上のスタック位置を反映することを示すように更新される。このようにして、整数レジスタだけがスタックにコピーされているが、スタック内には、浮動小数点レジスタのためのスペースが割り当てられている。さらに、ステップＳ１６で、浮動小数点レジスタがコピーされ得る、スタック内の割り当てられた領域の位置を示すアドレス値を格納するためのアドレスレジスタが設定され、浮動小数点レジスタのためのスペースがスタック上に割り当てられたが、浮動小数点レジスタの割り当てられたスペースへのコピーはまだ行われていないことを示すためのフラグが浮動小数点コンテキスト制御レジスタ１４２（ビット［０］）の中に設定される。リンクレジスタ１１６は次いで、ステップＳ１７で、浮動小数点フレームがスタックに格納されたことを示すためのビットを含めるように、例外戻りアドレスで更新される。このように、リンクレジスタ１１６を使用して、中断されたプロセスへ戻ると、浮動小数点レジスタがコピーされている場合、スタックから浮動小数点レジスタ内容を取得することになる。浮動小数点レジスタがコピーされていない場合、スタックの空の部分は、状態復元（以下に説明）の間無視されることができる。ターゲット（割り込み）プロセスは次いで、ステップＳ１８で開始する。
【００８２】
ステップＳ１９で、浮動小数点レジスタを上書きさせる浮動小数点命令が実行されるかを判定するために、プロセスは、ターゲットプロセスの開始に続いて、受け取られる命令を監視する。そのような命令が受け取られない場合、ステップＳ１９の監視プロセスは継続する。そのような命令が受け取られた場合、浮動小数点状態保存プロセスは、ステップＳ２０で、浮動小数点レジスタをアドレスレジスタによって示された割り当てられたスペースに格納し、浮動小数点コンテキスト制御レジスタ１４２（ビット［０］）のフラグを、浮動小数点レジスタのコピーが現在行われたことを示すように、ゼロの値にリセットすることによって、終了する。スタック上の割り当てられたスペースへの浮動小数点レジスタのコピーのトリガは、浮動小数点レジスタを使用する命令だけでなく、浮動小数点レジスタの内容を実際に変更する命令であることが好ましいことに注意されたい。
【００８３】
図６は、第１の実施形態に従う状態復元プロセスを模式的に示す。具体的には、示された方法は、ターゲット（割り込み）プロセスから、ターゲットプロセスによって中断されたスレッドまたはハンドラプロセスに戻るコンテキストスイッチを提供する。ステップＴ１で、中断によってトリガされたプロセスは、ステップＴ２で終了するまで進行する。Ｔ２でプロセスが終了した後、リンクレジスタ１１６は、ステップＴ３で、どのスタック（ＭＳＰまたはＰＳＰ）に中断されたプロセスの状態情報がコピーされたか、データの整数フレームまたはデータの浮動小数点フレームがそのスタック（ビットを示すフレームサイズ）に格納されたかを判定するために、読み出される。ステップＴ４で、ビットを示すフレームサイズに基づいて、および浮動小数点コンテキスト制御レジスタ１４２内のフラグに基づいて、（ａ）整数フレームが割り当てられ、コピーされたか、（ｂ）浮動小数点フレームが割り当てられ、コピーされたか（直ちに、または次の浮動小数点命令の後のいずれか）、または（ｃ）浮動小数点フレームは割り当てられたが更新されていないか（ステップＴ２で終了する割り込みプロセスの前に、浮動小数点命令が全く実行されなかったため）が判定される。ステップＴ４で、整数フレームだけが割り当てられ、スタックに格納されたと判定される場合、ステップＴ５で、整数レジスタのデータ値を取得するために適切な量のデータがスタックからポップされ、ステップＴ６で、取得された値が対応するレジスタに格納される。次いで、ステップＴ７で、スタックポインタは、新しい１番上のスタック位置を示すように更新され、これは、整数フレームに等しい量だけ、前の１番上のスタック位置とは異なる。次いで、ステップＴ８で前のプロセスが再開される。
【００８４】
ステップＴ４で、浮動小数点フレームがスタックに割り当てられ、格納されたと判定される場合、ステップＴ９で、より大量のデータ（浮動小数点フレームに対応する）がスタックからポップされ、ステップＴ１０で、整数および浮動小数点レジスタにコピーされる。次いで、ステップＴ７で、スタックポインタは、新しい１番上のスタック位置を示すように更新され、これは、浮動小数点フレームに等しい量だけ、前の１番上のスタック位置とは異なる。次いで、ステップＴ８で前のプロセスが再開される。
【００８５】
ステップＴ４で、浮動小数点フレームがスタックに割り当てられたが、実際には格納されなかったと判定される場合、ステップＴ９で、より少量のデータ（整数フレームに対応する）がスタックからポップされ、ステップＴ１０で、整数レジスタにコピーされる。次いで、ステップＴ７で、スタックポインタは、新しい１番上のスタック位置を示すように更新され、最終的に使用されない場合であっても、浮動小数点フレームによって要求されるスペースが割り当てられていたことになるため、これは、浮動小数点フレームに等しい分、前の１番上のスタック位置とは異なる。次いで、ステップＴ８で前のプロセスが再開される。
【００８６】
第１の実施形態はここで、データ処理装置を第１、第２、第３、および第４の状態に遷移するように多様なレジスタビットの設定を模式的に示す、状態図を参照してさらに説明される。
【００８７】
最初に図７を参照すると、ＦＰＣＣＲのＡＳＰＥＮおよびＬＳＰＥＮビットは、浮動小数点状態保存およびレイジーコンテキストスイッチの両方が使用可能であるように設定される。この場合、装置の第１、第２、および第３の状態は、ハードウェアベースの状態保存および復元機能によって実現され、第４の状態は、ソフトウェアの直接制御によってのみ実現され得る。ソフトウェアの直接制御によってのみアクセス可能である状態図の部分は、領域Ｚによって示される。
【００８８】
図７において、ステップＡ１で、データ処置装置はリセットまたはスイッチが入れられ、それによって、装置は、ステップＡ２で、第１の制御ビット（制御レジスタ１４１のビット［２］）がゼロに設定され、第２の制御ビット（ＦＰＣＣＲのビット［０］）がゼロに設定される、第１の状態に入る。第１の状態は、現在のデータ処理コンテキストが整数データ処理コンテキストである状態である。装置が第１の状態にある間にステップＡ３で割り込み要求（ＩＲＱ）が受け取られた場合、整数状態保存機能が起動し、第３の制御ビットは、第１の制御ビットの反転である値を有するようにリンクレジスタの中に設定される。装置が第１の状態にある間に第１の制御ビットがゼロの値を有すると、リンクレジスタ１１６に格納されることになる第３の制御ビットは、１の値に設定される。割り込み要求をサービスするために、整数レジスタ（のうちのいくつか）の内容が、スタックに格納され、スタックポインタは、スタックの新しい１番上、この場合、前の１番上のスタック位置から３２バイト（スタックにコピーされる８つの３２ビットレジスタに相当する）を反映するように更新される。ＡＲＭアーキテクチャのスタックの性質に起因して、スタックに項目が追加される時のスタックポインタの変更は、スタックポインタをデクリメントすることによって行われることに注意する。同様に、スタックから項目が削除される時、スタックポインタの変更は、スタックポインタをインクリメントすることによって行われる。
【００８９】
ステップＡ５で、装置が第１の状態にある間に割り込みプロセスからの戻り（例外リターン）が発生する場合、装置が第１の状態または第３の状態（１の値に設定されている第３の制御ビットによって示される）にあった場合の整数コンテキスト、または装置が第２の状態または第４の状態（ゼロの値に設定されている第３の制御ビットによって示される）にあった場合の浮動小数点コンテキストにおいて中断されたプロセスが動作していたかが判定される。中断されたプロセスが整数コンテキストで動作していた場合、ステップＡ７で、保存された整数レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から３２バイト（スタックからポップされている８つの３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、整数状態復元機能が実施される。この場合、整数状態復元機能が実施された後、装置は第１の状態のままである。中断されたプロセスが浮動小数点コンテキストで動作していた場合、ステップＡ６で、保存された整数および浮動小数点レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から１０４バイト（スタックからポップされている２６個の３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、浮動小数点状態復元機能が実施される。この場合、浮動小数点状態復元機能が実施された後、装置は、ステップＢ１で第２の状態に入ることになる。これは、浮動小数点状態復元機能の後に、浮動小数点データ処理コンテキストが継続するためである。
【００９０】
装置が第１の状態にある間に、ステップＡ４で浮動小数点命令が受け取られた場合、これは、浮動小数点データ処理コンテキストの開始を示すことになるため、装置は、ステップＢ１で第２の状態に入ることになる。装置が第２の状態に入る時、第１の制御ビットは１に設定されるが、第２の制御ビットはゼロのままである。
【００９１】
第２の状態において、ステップＢ２で浮動小数点命令が実行される場合、状態の変化は全く発生せず、装置は第２の状態のままである。これは、第２の状態は必ず浮動小数点データ処理コンテキストを表すためである。しかしながら、装置が第２の状態にある間にステップＢ３で割り込み要求（ＩＲＱ）が受け取られた場合、浮動小数点状態保存機能が起動し、第３の制御ビットは、第１の制御ビットの反転である値を有するようにリンクレジスタの中に設定される。装置が第２の状態にある間に第１の制御ビットが１の値を有すると、リンクレジスタの中に格納されることになる第３の制御ビットは、ゼロの値に設定される。割り込み要求をサービスするために、整数レジスタ（のうちのいくつか）の内容はスタックに格納されるが、図７は浮動小数点レジスタのコピーが遅延されるシステム状態を表すため、浮動小数点レジスタはこの時点ではスタックに格納されない。しかしながら、スタックポインタは、浮動小数点レジスタのためにスタック上にスペースを割り当てる位置、この場合、前の１番上のスタック位置から１０４バイト（スタックにコピーされる２６個の３２ビットレジスタに相当する）に、スタックの新しい１番上を反映するように更新される。リンクレジスタおよびスタックポインタが更新された後、ステップＣ１で装置は第３の状態に入ることになる。
【００９２】
ステップＢ５で、装置が第２の状態にある間に割り込みプロセスからの戻り（例外リターン）が発生する場合、装置が第１の状態または第３の状態（１の値に設定されている第３の制御ビットによって示される）にあった整数コンテキスト、あるいは装置が第２の状態または第４の状態（ゼロの値に設定されている第３の制御ビットによって示される）にあった浮動小数点コンテキストにおいて中断されたプロセスが動作していたかが判定される。中断されたプロセスが整数コンテキストで動作していた場合、ステップＢ６で、保存された整数レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から３２バイト（スタックからポップされている８つの３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、整数状態復元機能が実施される。この場合、整数状態復元機能が実施された後、装置は、ステップＡ２で第１の状態に入ることになる。これは、整数状態復元機能の後に、整数データ処理コンテキストが継続するためである。中断されたプロセスが浮動小数点コンテキストで動作していた場合、ステップＢ６で、保存された整数および浮動小数点レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から１０４バイト（スタックからポップされている２６個の３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、浮動小数点状態復元機能が実施される。この場合、浮動小数点状態復元機能が実施された後、装置は第２の状態のままである。
【００９３】
第３の状態は、第１の制御ビット（制御レジスタ１４１のビット［２］）が、現在のコンテキストは整数データ処理コンテキストであることを示すようにゼロに設定（第１の状態と同様）され、第２の制御ビット（ＦＰＣＣＲのビット［０］）が、浮動小数点レジスタのスペースは現在スタックメモリに割り当てられているが、浮動小数点レジスタはまだ割り当てられたスペースにコピーされていないことを示すように１の値に設定されている状態である。装置が第３の状態にある間に、ステップＣ３で浮動小数点命令が受け取られた場合、受け取られた浮動小数点命令の実行は、浮動小数点データ処理コンテキストの起動を示すため、装置は、ステップＣ４で、浮動小数点状態（浮動小数点レジスタ）をスタックメモリの割り当てられたスペースに格納し、次いで、ステップＢ１で第２の状態に入ることになる。装置が第２の状態に入る時、第１の制御ビットは１に設定され、第２の制御ビットはゼロにリセットされる。
【００９４】
装置が第３の状態にある間にステップＣ２で割り込み要求（ＩＲＱ）が受け取られた場合、整数状態保存機能が起動し、第３の制御ビットは、第１の制御ビットの反転である値を有するようにリンクレジスタの中に設定される。装置が第３の状態にある間に第１の制御ビットがゼロの値を有すると、リンクレジスタの中に格納されることになる第３の制御ビットは、１の値に設定される。割り込み要求をサービスするために、整数レジスタ（のうちのいくつか）の内容が、スタックに格納され、スタックポインタは、この場合、前の１番上のスタック位置から３２バイト（スタックにコピーされる８つの３２ビットレジスタに相当する）である、スタックの新しい１番上を反映するように更新される。
【００９５】
ステップＣ５で、装置が第３の状態にある間に割り込みプロセスからの戻り（例外リターン）が発生する場合、装置が第１の状態または第３の状態（１の値に設定されている第３の制御ビットによって示される）にあった整数コンテキスト、または装置が第２の状態または第４の状態（ゼロの値に設定されている第３の制御ビットによって示される）にあった浮動小数点コンテキストにおいて中断されたプロセスが動作していたかが判定される。中断されたプロセスが整数コンテキストで動作していた場合、ステップＣ７で、保存された整数レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から３２バイト（スタックからポップされている８つの３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、整数状態復元機能が実施される。この場合、整数状態復元機能が実施された後、装置は第３の状態のままである。中断されたプロセスが浮動小数点コンテキストで動作していた場合、ステップＣ６で、保存された整数および浮動小数点レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から１０４バイト（スタックからポップされている２６個の３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、浮動小数点状態復元機能が実施される。この場合、浮動小数点状態復元機能が実施された後、装置は、ステップＢ１で第２の状態に入ることになる。これは、浮動小数点状態復元機能の後に、浮動小数点データ処理コンテキストが継続するためである。
【００９６】
第４の状態は、ステップＤ１でソフトウェアによってのみアクセス可能で、第１の制御ビット（制御レジスタ１４１のビット［２］）が１の値に設定され、第２の制御ビット（ＦＰＣＣＲのビット［０］）は、ステップＤ２で、１の値に設定される状態である。第４の状態は、現在のデータ処理コンテキストが浮動小数点データ処理コンテキストであり、浮動小数点のためのスペースが現在スタックメモリに割り当てられているが、浮動小数点レジスタは割り当てられたスペースにまだコピーされていない状態（第２の制御ビットが１の値に設定されているという事実によって示されるように）である。
【００９７】
第４の状態において、ステップＤ４で、浮動小数点命令が受け取られた場合、装置は、ステップＤ５で、浮動小数点状態（浮動小数点レジスタ）をスタックメモリの割り当てられたスペースに格納し、次いで、ステップＢ１で第２の状態に入ることになる。装置が第２の状態に入る時、第１の制御ビットは１に設定されたままであるが、第２の制御ビットはゼロにリセットされる。
【００９８】
装置が第４の状態にある間にステップＤ３で割り込み要求が受け取られた場合、浮動小数点状態保存機能が起動し、第３の制御ビットは、第１の制御ビットの反転である値を有するようにリンクレジスタの中に設定される。装置が第４の状態にある間に第１の制御ビットが１の値を有すると、リンクレジスタの中に格納されることになる第３の制御ビットは、ゼロの値に設定される。割り込み要求をサービスするために、整数レジスタ（のうちのいくつか）の内容はスタックに格納されるが、図７は浮動小数点レジスタのコピーが遅延されるシステム状態を表すため、浮動小数点レジスタはこの時点ではスタックに格納されない。しかしながら、スタックポインタは、浮動小数点レジスタのためにスタック上にスペースを割り当てる位置、この場合、前の１番上のスタック位置から１０４バイト（スタックにコピーされる２６個の３２ビットレジスタに相当する）に、スタックの新しい１番上を反映するように更新される。リンクレジスタおよびスタックポインタが更新された後、ステップＣ１で装置は第３の状態に入ることになる。
【００９９】
ステップＤ６で、装置が第４の状態にある間に割り込みプロセスからの戻り（例外リターン）が発生する場合、装置が第１の状態または第３の状態（１の値に設定されている第３の制御ビットによって示される）にあった整数コンテキスト、あるいは装置が第２の状態または第４の状態（ゼロの値に設定されている第３の制御ビットによって示される）にあった浮動小数点コンテキストにおいて中断されたプロセスが動作していたかが判定される。中断されたプロセスが整数コンテキストで動作していた場合、ステップＤ７で、保存された整数レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から３２バイト（スタックからポップされている８つの３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、整数状態復元機能が実施される。この場合、整数状態復元機能が実施された後、装置は、ステップＡ２で第３の状態に入ることになる。中断されたプロセスが浮動小数点コンテキストで動作していた場合、ステップＤ８で、保存された整数および浮動小数点レジスタ内容をスタックからポップし、スタックの新しい１番上、この場合は前の１番上のスタックの位置から１０４バイト（スタックからポップされている２６個の３２ビットレジスタに相当する）を反映するようにスタックポインタを更新することによって、浮動小数点状態復元機能が実施される。この場合、浮動小数点状態復元機能が実施された後、装置は第２の状態に入る。
【０１００】
図８において、ＦＰＣＣＲ内のＡＳＰＥＮビットは、浮動小数点状態保存が使用可能であるように設定されるが、ＦＰＣＣＲ内のＬＳＰＥＮビットは、レイジーコンテキストスイッチが使用不可能であるように設定される。したがって、図７を参照して上記で説明した第３および第４の状態は、ソフトウェアの直接制御の下でのみ使用可能である。ソフトウェアの直接制御によってのみアクセス可能である状態図の部分は、領域Ｚ’によって示される。
【０１０１】
この場合、第１の状態の装置の動作は、図７を参照して上述した動作と同一である。しかしながら、第２の状態の装置の動作は、上述の動作に類似であるが、装置が第３の状態にある間に次の浮動小数点動作が受け取られるまで、浮動小数点のコピーが遅延されるのではなく、浮動小数点レジスタの内容が、ステップＢ３’（図７のステップＢ３に対応する）で直ちに（整数レジスタに加えて）スタックメモリ内にコピーされる点が異なる。加えて、図７のステップＢ３は第３の状態に遷移するが、図８のステップＢ３’は、第１の状態に遷移する。第３の状態は、第４の状態（ソフトウェアの直接制御を介してのみ使用可能である）を経由してのみ使用可能である。
【０１０２】
図９において、ＦＰＣＣＲのＡＳＰＥＮおよびＬＳＰＥＮビットは、浮動小数点状態保存もレイジーコンテキストスイッチも使用可能でないように設定される。したがって、図７を参照して上記で説明した第２、第３および第４の状態は、ソフトウェアの直接制御の下でのみ使用可能である。直接のソフトウェア制御によってのみアクセス可能である状態部の部分は、領域Ｚ”によって示される。
【０１０３】
この場合、装置は第１の状態に固定され、図７および８のステップＡ４に対応する、ステップＡ４’で受け取られる浮動小数点命令は、装置を異なる状態に変化させない。装置が第１の状態に固定されている時、リンクレジスタのビット４は１（制御ビットの反転、装置が第１の状態に固定されている場合は、ゼロで固定される）にしか設定できないため、（第２、第３、および第４の状態のうちの１つから、ソフトウェアの直接制御を介する以外）ステップＡ６には到達しない。
【０１０４】
（第２の実施形態）
２つの組のレジスタのうちのどれを格納するかの判定が、（ａ）現在のプロセスが、割り込みによってトリガされていないプロセスであるスレッドであるか、または割り込みによってトリガされているプロセスであるハンドラであるか、（ｂ）現在のプロセスが、浮動小数点レジスタを使用しない整数プロセスであるか、または浮動小数点レジスタを使用する浮動小数点プロセスであるか、および（ｃ）割り込みプロセスが、浮動小数点レジスタを使用しない整数プロセスであるか、または浮動小数点レジスタを使用する浮動小数点プロセスであるか、に基づいて行われる、第２の実施形態をここで説明する。
【０１０５】
図１０を参照すると、割り込みプロセスが整数プロセスであるか、または浮動小数点プロセスであるかの表示を提供する状態回路２３４が割り込みコントローラ２３０内に提供される、例示的なデータ処理２１０および割り込みコントローラ２３０が模式的に示される。データプロセッサ２１０および割り込みコントローラ２３０は、バス２４０を介して結合される。データプロセッサ２１０は、（図１に類似の様式で）処理回路２１２と、レジスタファイル２１４とを備える。レジスタファイル２１４は、整数レジスタ２１４Ａ（スタックポインタ２１５およびリンクレジスタ２１６を含む）と、浮動小数点レジスタ２１４Ｂとを備える。割り込みコントローラ２３０は、相対的優先度に基づいて、受け取る割り込み要求２３６−１から２３６−４の間を選択するマルチプレクサの形式の優先順位決定回路２３２を備える。この場合、割り込み要求２３６−１および２３６−２は、処理回路２１２によって生成されたソフトウェア割り込みであり、一方で、割り込み要求２３６−３および２３６−４は、ハードウェアデバイス（図示せず）によって生成されたハードウェア割り込みである。優先順位決定回路２３２は、処理回路２１２によってサービスされることになる割り込みプロセスを示すために信号ライン２３８を介して処理回路２１２に印加される中断信号を生成するように、割り込み要求２３６−１から２３６−４の間を選択する。
【０１０６】
優先順位決定回路２３２はまた、選択されている割り込み要求を状態回路２３４に示す、制御信号２３３も生成する。状態回路２３４は、受け取られた制御信号２３３に基づいて、状態インジケータ２３５−１から２３５−４の間を選択するマルチプレクサの形式である。状態インジケータ２３５−１から２３５−４の各々は、割り込み要求２３６−１から２３６−４のうちの１つに対応する。したがって、状態回路２３４は、処理回路２１２に印加され、受け取られた割り込みの状態を示す制御信号を生成し、具体的には、受け取られた割り込みが、浮動小数点レジスタ２１４Ｂへのアクセスを要求するプロセスに関係するかを示す。状態インジケータ２３５−１から２３５−４は、バス２４０を介して制御信号を印加することによって、ハードウェアまたはソフトウェア制御下で必要に応じて処理回路２１２によって設定することができる。
【０１０７】
このようにして、割り込みコントローラ２３０の状態回路２３４は、選択された割り込みに対応する状態情報を生成し、信号ライン２３８を介して印加される、選択された割り込みに関連して、信号ライン２３９を介してデータプロセッサの処理回路２１２に状態情報を表す信号を印加する。
【０１０８】
処理回路２１２は、信号ライン２３８上で受け取られた割り込みが、整数コンテキストに関係するか、または浮動小数点コンテキストに関係するかを判定するために、信号ライン２３９を介して取得された状態情報を利用することができる。
【０１０９】
データプロセッサ２１０はまた、現在のコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかを示すための第１のビット２４１Ａ、メインスタック（ＭＳＰ）およびプロセススタック（ＰＳＰ）のうちのどちらが現在使用中であるかを示すための第２のビット２４１Ｂ、およびスレッドモードの特権を示すための第３のビット２４１Ｃを有する制御レジスタ２４１を含む、構成レジスタ２４０も備える。具体的には、制御レジスタ２４１は、図４を参照して上で説明した制御レジスタ１４１に対応する。
【０１１０】
図１１を参照すると、可能性のある割り込みを対応する状態にマッピングする参照テーブルを提供する状態ストアがデータプロセッサ３１０内に提供される、別の例示的なデータプロセッサ３１０および割り込みコントローラ３３０が模式的に示される。データプロセッサ３１０および割り込みコントローラ３３０は、バス３４０を介して結合される。データプロセッサ３１０は、（図１０に類似の様式で）処理回路３１２と、整数レジスタ３１４Ａ（スタックポインタ３１５およびリンクレジスタ３１６を含む）と、浮動小数点レジスタ３１４Ｂとを備える、レジスタファイル３１４を備える。
【０１１１】
割り込みコントローラ３３０は、相対的優先度に基づいて、受信する割り込み要求３３６−１から３３６−４の間を選択するマルチプレクサの形式の優先順位決定回路３３２を備える。図１０と同様に、割り込み要求３３６−１および３３６−２は、処理回路３１２によって生成されたソフトウェア割り込みであり、一方で、割り込み要求３３６−３および３３６−４は、ハードウェアデバイス（図示せず）によって生成されたハードウェア割り込みである。優先順位決定回路３３２は、処理回路３１２によってサービスされることになる割り込みプロセスを示すために信号ライン３３８を介して処理回路３１２に印加される割り込み信号を生成するように、割り込み要求３３６−１から３３６−４の間を選択する。
【０１１２】
図１１において、データプロセッサ３１０内に提供される状態情報ストア３１６は、図１０の状態回路２３４に置き換わり、図１０の配置において提供される適合された割り込みコントローラではなく、従来の割り込みコントローラが使用されることを可能にする。状態情報ストア３１６は、１つ以上の可能性がある割り込み要求の各々に対して、その要求に対応するプロセスが浮動小数点レジスタ３１４Ｂを必要とするかを示す状態情報を格納する。処理回路３１２は、割り込みコントローラ３３０から受け取られた割り込み要求に応答して、状態情報ストアから状態情報を読み出すように構成される。このようにして、処理回路３１２は、整数レジスタ３１４Ａのみ、または整数レジスタ３１４および浮動小数点レジスタ３１４Ｂの両方のいずれかを適切にバックアップすることができる。状態情報ストアは、処理回路３１２によって、ソフトウェアまたはハードウェア制御下で必要に応じて更新できる。
【０１１３】
データプロセッサ３１０はまた、現在のコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかを示すための第１のビット３４１Ａ、メインスタック（ＭＳＰ）およびプロセススタック（ＰＳＰ）のうちのどちらが現在使用中であるかを示すための第２のビット３４１Ｂ、およびスレッドモードの特権を示すための第３のビット３４１Ｃを有する制御レジスタ３４１を含む、構成レジスタ３４０も備える。具体的には、制御レジスタ３４１は、図１０を参照して上で説明した制御レジスタ２４１に対応する。
【０１１４】
図１０の例および図１１の例の両方において、割り込みコントローラまたは状態情報ストアからの状態情報はそれぞれ、割り込み（ターゲット）データ処理コンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかの表示を提供する。
【０１１５】
現在のプロセスがハンドラである場合、現在のプロセスが整数プロセスであるか、または浮動小数点プロセスであるかを示す状態情報は、割り込みコントローラ（図１０）または状態情報ストア（図１１）のいずれかから取得され、現在のコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかを示すように、それぞれ制御レジスタ２４１または３４１のビット［２］を更新するために使用される。現在のプロセスがスレッドである時、制御レジスタ２４１または３４１のビット［２］は、ハードウェアまたはソフトウェアによって直接設定される。このようにして、整数状態保存機能が実施されることになるか、または浮動小数点状態保存機能が実施されることになるかを判定するために必要な状態は、ターゲットコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかを示す割り込みコントローラまたは状態情報ストアから、現在のコンテキストが整数コンテキストであるか、または浮動小数点コンテキストであるかを示す制御レジスタ２４１、３４１のビット［２］から、および現在のコンテキストがスレッドであるか、またはハンドラであるかを示す（上述のように）制御レジスタ２４１、３４１のビット［１］から、抽出することができる。
【０１１６】
現在および将来のプロセスのコンテキスト、ならびに現在のプロセスがスレッドであるか、またはハンドラであるかに依存する例示的な保存ポリシーが、テーブル２に示され、整数のみの状態保存が必要か、または整数および浮動小数点の保存が必要かを示す。
【０１１７】
【表５】
0005564562.tif 000006
【０１１８】
テーブル１に示される保存ポリシーは、上書きのリスクが存在する浮動小数点状態保存だけを実行する間に、浮動小数点レジスタファイルデータの損失を保護する。
【０１１９】
ここで図１２Ａから１２Ｄを参照して、第２の実施形態に従う例示的なプロセスおよび中断を説明する。
【０１２０】
図１２Ａにおいて、第１の例示的な一連のプロセスおよび割り込みが模式的に示される。期間６０２の間、整数スレッドプロセス（プロセス１Ａ）が、整数ハンドラプロセス（プロセス２Ａ）をトリガする割り込みによって時点６０４で中断されるまで発生している。上述のように、整数スレッドから整数ハンドラへのコンテキストスイッチでは、浮動小数点レジスタが使用されることはなく、また使用されていないために、整数レジスタだけがバックアップされる必要しかない。コンテキストスイッチは、時点６０４と、整数レジスタの状態保存演算が完了して新しい整数ハンドラプロセス（２Ａ）が開始できる時点６０６との間で発生する。
【０１２１】
整数ハンドラプロセス（２Ａ）は、浮動小数点ハンドラプロセス（プロセス３Ａ）をトリガする割り込みによって中断される時点６０８まで継続する。上述のように、整数ハンドラから浮動小数点ハンドラへのコンテキストスイッチでは、割り込み浮動小数点ハンドラプロセス（３Ａ）が浮動小数点レジスタを使用することになり、整数ハンドラプロセス（２Ａ）は、それ自体浮動小数点レジスタを使用した浮動小数点プロセスを中断している可能性があるため、整数レジスタおよび浮動小数点レジスタの両方をバックアップする必要がある。コンテキストスイッチは、時点６０８と、整数および浮動小数点レジスタの状態保存演算が完了して新しい浮動小数点ハンドラプロセス（３Ａ）が開始できる時点６１０との間で発生する。時点６０４と６０６との間の整数状態保存演算の期間は、簡潔にするために、時点６０８と６１０との間の浮動小数点状態保存演算の期間と同一に示されているが、後者のコンテキストスイッチの期間は、より多くのレジスタをスタックに格納する要件に起因してより長い場合があることが理解されるであろう。
【０１２２】
時点６１０で開始した浮動小数点プロセス（３Ａ）は次いで、浮動小数点プロセス（３Ａ）が終了し、中断されたプロセス（２Ａ）が再開できる時点６１２まで継続する。中断されたプロセス（２Ａ）に戻るために、バックアップされた整数レジスタおよび浮動小数点レジスタは、整数および浮動小数点状態保存プロセスにおいてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。この演算は、時点６１２と時点６１４との間で発生し、この後、整数ハンドラプロセス（２Ａ）を再開できる。整数ハンドラプロセス（２Ａ）は次いで、それが終了し、中断されたプロセス（１Ａ）が再開できる時点６１６まで継続する。中断されたプロセス（１Ａ）に戻るために、バックアップされた整数レジスタは、整数状態保存プロセスにおいてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。この復元演算は、時点６１６と時点６１８との間で発生し、この後、整数スレッドプロセス（１Ａ）を再開できる。
【０１２３】
上記の例において、整数スレッド（１Ａ）は、ユーザモードにおいて動作し、プロセススタック（上で説明）を使用するアプリケーションであり得る。整数ハンドラ（２Ａ）および浮動小数点ハンドラ（３Ａ）は、特権モードにおいて稼動し、メインスタック（上で説明）を使用するオペレーティングシステムのプロセスであり得る。プロセススタックを利用するユーザプロセスのために使用されるスタックポインタは、レジスタ１３に格納されるプロセススタックポインタ（ＰＳＰ）であるが、メインスタックを利用する特権プロセスのために使用されるスタックポインタは、レジスタ１３に格納されるメインスタックポインタ（ＭＳＰ）である。したがって、処理回路は、レジスタ１３に格納されたスタックポインタにより、ポイントされるアドレスを確認することによって、プロセスがスレッド（プロセススタックを利用するユーザモード）であるか、またはハンドラ（メインスタックを利用する特権モード）であるかを判定することができる。同じ技法は、以下の例の各々で使用することができる。
【０１２４】
図１２Ｂにおいて、第２の例示的な一連のプロセスおよび割り込みが模式的に示される。期間６２２の間、整数スレッドプロセス（プロセス１Ｂ）が、浮動小数点ハンドラプロセス（プロセス２Ｂ）をトリガする割り込みによって時点６２４で中断されるまで発生している。上述のように、整数スレッドから浮動小数点ハンドラへのコンテキストスイッチでは、浮動小数点レジスタがそれまで使用されておらず、故に保存される必要がないため、整数レジスタだけがバックアップされる必要がある。コンテキストスイッチは、時点６２４と、整数レジスタの状態保存演算が完了し、新しい浮動小数点ハンドラプロセス（２Ｂ）が開始できる時点６２６との間で発生する。
【０１２５】
浮動小数点ハンドラプロセス（２Ｂ）は、さらに浮動小数点ハンドラプロセス（プロセス３Ｂ）をトリガする割り込みによって中断される時点６２８まで継続する。上述のように、浮動小数点ハンドラから別の浮動小数点ハンドラへのコンテキストスイッチでは、現在の浮動小数点ハンドラプロセス（２Ｂ）および割り込み浮動小数点ハンドラプロセス（３Ｂ）の両方が浮動小数点レジスタを使用するため、整数レジスタおよび浮動小数点レジスタの両方がバックアップされる必要がある。コンテキストスイッチは、時点６２８と、整数および浮動小数点レジスタの状態保存演算が完了し、新しい浮動小数点ハンドラプロセス（３Ｂ）が開始できる時点６３０との間で発生する。
【０１２６】
時点６３０で開始した浮動小数点プロセス（３Ｂ）は次いで、浮動小数点プロセス（３Ｂ）が終了し、中断されたプロセス（２Ｂ）が再開できる時点６３２まで継続する。中断されたプロセス（２Ｂ）に戻るために、バックアップされた整数レジスタおよび浮動小数点レジスタは、整数および浮動小数点状態保存プロセスにおいてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。この演算は、時点６３２と時点６３４との間で発生し、この後、浮動小数点ハンドラプロセス（２Ｂ）を再開できる。浮動小数点ハンドラプロセス（２Ｂ）は次いで、それが終了し、中断されたプロセス（１Ｂ）が再開できる時点６３６まで継続する。中断されたプロセス（１Ｂ）に戻るために、バックアップされた整数レジスタおよび浮動小数点レジスタは、整数状態保存演算および浮動小数点状態保存演算においてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。この復元演算は、時点６３６と時点６３８との間で発生し、この後、整数スレッドプロセス（１Ｂ）を再開できる。
【０１２７】
図１２Ｃにおいて、第３の例示的な一連のプロセスおよび割り込みが模式的に示される。期間６４２の間、浮動小数点スレッドプロセス（プロセス１Ｃ）が、整数ハンドラプロセス（プロセス２Ｃ）をトリガする割り込みによって時点６４４で中断されるまで発生している。上述のように、浮動小数点スレッドから整数ハンドラへのコンテキストスイッチでは、浮動小数点レジスタは割り込み整数プロセスによって上書きされないため、整数レジスタだけがバックアップされる必要がある。コンテキストスイッチは、時点６４４と、整数レジスタの状態保存演算が完了し、新しい整数ハンドラプロセス（２Ｃ）が開始できる時点６４６との間で発生する。
【０１２８】
整数ハンドラプロセス（２Ｃ）は、さらなる整数ハンドラプロセス（プロセス３Ｃ）をトリガする割り込みによって中断される時点６４８まで継続する。上述のように、整数ハンドラから整数ハンドラへのコンテキストスイッチでは、割り込みハンドラプロセス（３Ｃ）が浮動小数点レジスタを使用しないため、整数レジスタだけがバックアップされる必要がある。コンテキストスイッチは、時点６４８と、整数レジスタの状態保存演算が完了し、新しい整数ハンドラプロセス（３Ｃ）が開始できる時点６５０との間で発生する。
【０１２９】
時点６５０で開始した整数ハンドラプロセス（３Ｃ）は次いで、整数プロセス（３Ｃ）が終了し、中断されたプロセス（２Ｃ）が再開できる時点６５２まで継続する。中断されたプロセス（２Ａ）に戻るために、バックアップされた整数レジスタは、整数状態保存プロセスにおいてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。この演算は、時点６５２と時点６５４との間で発生し、この後、整数ハンドラプロセス（２Ｃ）を再開できる。整数ハンドラプロセス（２Ｃ）は次いで、それが終了し、中断されたプロセス（１Ｃ）が再開できる時点６５６まで継続する。中断されたプロセス（１Ｃ）に戻るために、バックアップされた整数レジスタは、整数状態保存プロセスにおいてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。浮動小数点スレッドプロセス（１Ｃ）によって使用される浮動小数点レジスタは、割り込みプロセス（２Ｃおよび３Ｃ）によって使用されなかったため、依然として浮動小数点レジスタに保存されることになる。この復元演算は、時点６５６と時点６５８との間で発生し、この後、浮動小数点スレッドプロセス（１Ｃ）を再開できる。
【０１３０】
図１２Ｄにおいて、第４の例示的な一連のプロセスおよび割り込みが模式的に示される。期間６６２の間、浮動小数点スレッドプロセス（プロセス１Ｄ）が、浮動小数点ハンドラプロセス（プロセス２Ｄ）をトリガする割り込みによって時点６６４で中断されるまで発生している。上述のように、浮動小数点スレッドから浮動小数点ハンドラへのコンテキストスイッチでは、現在の浮動小数点ハンドラプロセス（１Ｄ）および割り込み浮動小数点ハンドラプロセス（２Ｄ）の両方が浮動小数点レジスタを使用するため、整数レジスタおよび浮動小数点レジスタの両方がバックアップされる必要がある。コンテキストスイッチは、時点６６４と、整数レジスタおよび浮動小数点レジスタの状態保存演算が完了し、新しい浮動小数点ハンドラプロセス（２Ｄ）が開始できる時点６６６との間で発生する。
【０１３１】
浮動小数点ハンドラプロセス（２Ｄ）は、整数ハンドラプロセス（プロセス３Ｄ）をトリガする割り込みによって中断される時点６６８まで継続する。上述のように、浮動小数点ハンドラから整数ハンドラへのコンテキストスイッチでは、割り込み整数ハンドラプロセス（３Ｄ）が浮動小数点レジスタを使用しないため、整数レジスタだけがバックアップされる必要がある。コンテキストスイッチは、時点６６８と、整数レジスタの状態保存演算が完了し、新しい整数ハンドラプロセス（３Ｄ）が開始できる時点６７０との間で発生する。
【０１３２】
時点６７０で開始した整数プロセス（３Ｄ）は次いで、整数プロセス（３Ｄ）が終了し、中断されたプロセス（２Ｄ）が再開できる時点６７２まで継続する。中断されたプロセス（２Ｄ）に戻るために、バックアップされた整数レジスタは、整数状態保存プロセスにおいてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。この演算は、時点６７２と時点６７４との間で発生し、この後、浮動小数点ハンドラプロセス（２Ｄ）を再開できる。浮動小数点ハンドラプロセス（２Ｄ）は次いで、それが終了し、中断されたプロセス（１Ｄ）が再開できる時点６７６まで継続する。中断されたプロセス（１Ｄ）に戻るために、バックアップされた整数レジスタおよび浮動小数点レジスタは、整数および浮動小数点状態保存プロセスにおいてスタックに格納された値を読み出し、これらの値を対応するレジスタに格納することによって、復元されなければならない。この復元演算は、時点６７６と時点６７８との間で発生し、この後、浮動小数点スレッドプロセス（１Ｄ）を再開できる。
【０１３３】
図１３は、現在のプロセスからターゲットプロセスへのコンテキストスイッチを提供する例示的な方法を示す模式的流れ図である。ステップＵ１で、現在のプロセスは、ステップＵ２で処理回路によって割り込みが受け取られるまで進行する。ステップＵ２で割り込みが受け取られると、ステップＵ３で、割り込みによって開始されているターゲットプロセスが整数プロセスであるか、または浮動小数点プロセスであるかが判定される。上述のように、この反映は、割り込みに関連する割り込みコントローラによって提供される、またはデータプロセッサ内に提供される状態情報ストアから取得される、状態情報に基づいて行なうことができる。次いで、ステップＵ４で、現在のプロセスが整数プロセスであるか、または浮動小数点プロセスであるかが判定される。上述のように、この情報は、割り込みコントローラからの状態情報（現在のプロセスがハンドラである場合）、あるいはハードウェアまたはソフトウェアによる直接設定（現在のプロセスがスレッドである場合）に基づいて、現在のプロセスが開始された時に制御レジスタのビット［２］に格納することができる。この表示は、処理回路によってその制御レジスタから抽出することができる。次いで、ステップＵ５で、現在のプロセスがスレッドプロセスであるか、またはハンドラプロセスであるかが判定される。この判定は、メインスタックが現在使用されているか（現在のプロセスがハンドラであることを示す）、またはプロセススタックが現在使用されているか（現在のプロセスがスレッドであることを示す）を示す、制御レジスタのビット［１］に基づいて行なうことができる。ステップＵ３からＵ５で集められる情報は、整数レジスタだけがスタックに格納されるべきか、または整数レジスタおよび浮動小数点レジスタの両方がスタックに格納されるべきかに関しての判定を行うために必要な情報である。
【０１３４】
ステップＵ６で、浮動小数点レジスタが格納されるべきかの判定が行われる。次いで、浮動小数点レジスタは格納されないと判定された場合、ステップＵ７で、整数レジスタだけがスタックに格納される。次いで、ステップＵ８で、スタックポインタは、スタックの新しい１番上を反映するように更新され、ステップＵ９で、リンクレジスタは、メインスタックおよびプロセススタックのうちのどれが保存されたプロセスレジスタを格納するために使用されたかの表示、および中断されたプロセスが浮動小数点コンテキストを使用するという表示を格納するように更新される。ステップＵ６で、浮動小数点レジスタが格納されると判定された場合、ステップＵ８で、整数レジスタおよび浮動小数点レジスタがスタックに格納される。次いで、ステップＵ８で、スタックポインタは、スタックの新しい１番上を反映するように更新され、ステップＵ９で、リンクレジスタは、中断されたプロセスが浮動小数点を使用するという表示を格納するように更新される。
【０１３５】
ステップＵ１１で、制御レジスタのビット［２］は、ターゲットプロセス（現在のプロセスになる）、割り込みプロセスが整数データ処理コンテキストを使用するか、または浮動小数点データ処理コンテキストを使用するかを示すように、ステップＵ３で取得された情報に基づいて、それを示すために設定され得る。最後に、ステップＵ１２で、ターゲットプロセスが開始される。ターゲットプロセスが開始される時、ステップＵ３で取得され、ステップＵ１１で制御レジスタのビット［２］に格納された状態情報が、ターゲットデータ処理コンテキストは整数データ処理コンテキストであることを示す時に、割り込み要求によってトリガされたターゲットプロセスが、浮動小数点レジスタを使用しようとする場合、処理回路によって例外が生成される。この例外は、浮動小数点レジスタを上書きできる前にターゲットプロセスを中止し、それによって、スタックに格納されていない浮動小数点レジスタデータの損失を防止する。例外は次いで、その時点で浮動小数点状態保存演算を行うことによって、またはターゲットプロセスを終了することによって、簡単に対応することが可能である。
【０１３６】
図１４は、ターゲット（割り込み）プロセスから、ターゲットプロセスによって中断されたスレッドまたはハンドラプロセスに戻るコンテキストスイッチを提供する例示的な方法を示す模式的流れ図である。ステップＶ１で、割り込みによってトリガされたプロセス（図１３を参照して説明されたようなプロセス）は、ステップＶ２で終了するまで進行する。ステップＶ２でプロセスが終了すると、ステップＶ３で、メインスタックおよびプロセススタックのうちのどちらにプロセッサレジスタがコピーされたかを判定し、中断されたプロセスが浮動小数点コンテキストを使用したかを判定する（どの程度のデータ（整数フレームまたは浮動小数点フレーム）がスタックからポップされるかの表示を形成する）ために、リンクレジスタが読み出される。ステップＶ４で、リンクレジスタに格納された値に基づいて、プロセスが中断された時に、浮動小数点レジスタがスタックに格納されたかが判定される。ステップＶ４で、浮動小数点レジスタがスタックに格納されたと判定された場合、ステップＶ５で、整数および浮動小数点レジスタのデータ値を取得するために適切な量のデータがスタックからポップされ、ステップＶ６で、取得された値が対応するレジスタに格納される。図２および３に示される例の場合、これは、２６個のレジスタに相当するデータの量が、スタックからポップされることを必要とする。一方、ステップＶ５で、浮動小数点レジスタがスタックに格納されなかったと判定される場合、ステップＶ７で、より少量のデータがスタックからポップされ、ステップＶ８で、整数レジスタにコピーされる。図２および３に示される例の場合、これは、８つのレジスタに相当するデータの量がスタックからポップされることを必要とする。ステップＶ９で、ステップＶ６またはステップＶ８のいずれかが完了した後、前のプロセスが再開される。
【０１３７】
本発明の多様なさらなる態様および特徴は、添付の請求項に定義される。本発明の範囲から逸脱することなく、本明細書に前述される実施形態に多様な変更を行うことができる。
【符号の説明】
【０１３８】
１    データ処理装置
１０    データプロセッサ
１２    処理回路
１４    レジスタファイル
１４Ａ    整数レジスタ
１４Ｂ    浮動小数点レジスタ
２０    メインメモリ
２２    スタック格納領域
２２Ａ    メインスタック（ＭＳＰ）
２２Ｂ    プロセススタック（ＰＳＰ）
３０    割り込みコントローラ
３２    優先順位決定回路
３６    割り込み
３８    信号ライン
４０    バス
１００    データ処理回路
１１０    データプロセッサ
１１２    処理回路
１１４    レジスタファイル
１１４Ａ    整数レジスタ
１１４Ｂ    浮動小数点レジスタ
１１５    スタックポインタ（ＳＰ）
１１６    リンクレジスタ（ＬＲ）
１２０    メインメモリ
１２２    スタックメモリ
１２２Ａ    メインスタック領域
１２２Ｂ    プロセススタック領域
１３８    割り込み要求
１４０    構成レジスタ
１４１    制御レジスタ
１４２    浮動小数点コンテキスト制御レジスタ（ＦＰＣＣＲ）
１４３    浮動小数点コンテキストアドレスレジスタ（ＦＰＣＡＲ）
２１０    データプロセッサ
２１２    処理回路
２１４    レジスタファイル
２１４Ａ    整数レジスタ
２１４Ｂ    浮動小数点レジスタ
２１５    スタックポインタ
２１６    リンクレジスタ
２３０    割り込みコントローラ
２３２    優先順位決定回路
２３３    制御信号
２３４    状態回路
２３５−１〜２３５−４    状態インジケータ
２３６−１〜２３６−４    割り込み要求
２３８    信号ライン
２３９    信号ライン
２４０    バス（構成レジスタ）
２４１    制御レジスタ
２４１Ａ    第１のビット
２４１Ｂ    第２のビット
２４１Ｃ    第３のビット
３１０    データプロセッサ
３１２    処理回路
３１４    レジスタファイル
３１４Ａ    整数レジスタ
３１４Ｂ    浮動小数点レジスタ
３１５    スタックポインタ
３１６    リンクレジスタ（状態情報ストア）
３３０    割り込みコントローラ
３３２    優先順位決定回路
３３６−１〜３３６−４    割り込み要求
３３８    信号ライン
３４０    バス（構成レジスタ）
３４１    制御レジスタ
３４１Ａ    第１のビット
３４１Ｂ    第２のビット
３４１Ｃ    第３のビット
【図１】
0005564562.tif 000007
【図２Ａ】
0005564562.tif 000008
【図２Ｂ】
0005564562.tif 000009
【図３Ａ】
0005564562.tif 000010
【図３Ｂ】
0005564562.tif 000011
【図３Ｃ】
0005564562.tif 000012
【図４】
0005564562.tif 000013
【図５】
0005564562.tif 000014
【図６】
0005564562.tif 000015
【図７】
0005564562.tif 000016
【図８】
0005564562.tif 000017
【図９】
0005564562.tif 000018
【図１０】
0005564562.tif 000019
【図１１】
0005564562.tif 000020
【図１２Ａ】
0005564562.tif 000021
【図１２Ｂ】
0005564562.tif 000022
【図１２Ｃ】
0005564562.tif 000023
【図１２Ｄ】
0005564562.tif 000024
【図１３】
0005564562.tif 000025
【図１４】
0005564562.tif 000026