(57)【要約】【課題】情報処理装置におけるアドレス空間の効率的な拡張を実現する。【解決手段】  メモリと接続されたプロセッサは、メモリアドレスのビット数を第１ビットに設定する第１ビットモードと、前記第１ビットよりも大きい第２ビットに設定する第２ビットモードと、のいずれかを示す値が設定される第１設定領域２４１ａと、前記第２ビットよりも大きい第３ビットに設定する第３ビットモードの有効又は無効を示す情報が設定される第２設定領域２４１ｂと、前記第１又は第２ビットのビット数のアドレスが設定されるアドレス領域２４１ｃと、を備える記憶部と、前記第２設定領域２４１ｂに設定される情報が前記第３ビットモードの有効を示す場合、前記第１設定領域２４１ａに設定される値と、前記アドレス領域２４１ｃに設定されるアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスするアクセス部と、をそなえる。【選択図】図８
2020024613.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリと接続されたプロセッサと、をそなえ、
前記プロセッサは、
前記メモリのアドレスのビット数を第１ビットに設定する第１ビットモードと、前記ビット数を前記第１ビットよりも大きい第２ビットに設定する第２ビットモードと、のいずれか一方を示す値が設定される第１設定領域と、
前記ビット数を前記第２ビットよりも大きい第３ビットに設定する第３ビットモードの有効又は無効を示す情報が設定される第２設定領域と、
前記第１ビット又は前記第２ビットのビット数のアドレスが設定されるアドレス領域と、
をそなえる第１記憶部と、
前記第２設定領域に設定される情報が前記第３ビットモードの有効を示す場合、前記第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスするアクセス部と、
をそなえる、情報処理装置。
【請求項２】
前記結合アドレスは、前記メモリの仮想記憶領域の仮想アドレスであり、
前記プロセッサは、
前記第３ビットモードで利用可能な仮想記憶領域と前記メモリの実記憶領域との対応関係を示す変換情報と、前記結合アドレスと、に基づき、前記仮想アドレスを前記メモリの実アドレスに変換するアドレス変換部をそなえ、
前記アクセス部は、前記アドレス変換部が変換した前記実アドレスにアクセスする、請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサは、
前記変換情報の探索に用いられるテーブルのエントリ数であって、前記第２ビットモードで利用可能な仮想記憶領域の容量に対応する前記エントリ数が設定される定義領域と、拡張用領域と、をそなえる第２記憶部をそなえ、
前記アドレス変換部は、前記第３ビットモードが有効の場合、前記定義領域に設定される前記エントリ数と、前記第２記憶部の拡張用領域に設定される値と、を結合した拡張エントリ数と、前記変換情報と、前記結合アドレスと、に基づき、前記仮想アドレスを前記実アドレスに変換する、請求項２に記載の情報処理装置。
【請求項４】
前記アクセス部は、前記第２設定領域に設定される情報が前記第３ビットモードの無効を示す場合、前記第１設定領域に設定される値が示す前記第１ビットモード又は前記第２ビットモードに対応するビット数のアドレスであって、前記アドレス領域に設定される前記アドレスに基づき、前記メモリにアクセスする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記プロセッサによる命令の実行対象のプログラムが動作するビットモードを判定する判定部と、
前記判定部が判定したビットモードが前記第３ビットモードの場合、前記第１記憶部に対して、前記第２設定領域に前記第３ビットモードの有効を示す情報を設定し、前記第１設定領域と前記アドレス領域とに前記結合アドレスを設定する設定部と、をそなえる、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記アクセス部は、前記プロセッサによる命令の実行対象のプログラムを切り替える際に、前記切り替えを指示する命令に、前記第３ビットモードの有効又は無効を示す情報を含める、請求項５に記載の情報処理装置。
【請求項７】
前記メモリと、入出力装置と、に接続された入出力プロセッサをそなえ、
前記入出力プロセッサは、
前記プロセッサから入出力指示を受信すると、前記入出力指示に含まれる制御情報であって、前記第３ビットモードの有効又は無効を示す情報が設定される第３設定領域と、拡張用領域と、前記第１ビット又は前記第２ビットのビット数のアドレスが設定される入出力アドレス領域と、をそなえる前記制御情報に基づいて、ビットモードを判定し、前記第３ビットモードと判定した場合、前記拡張用領域の値と、前記入出力アドレス領域に設定されたアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスする入出力アクセス部をそなえる、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
メモリと、前記メモリと接続されたプロセッサと、をそなえるコンピュータに、
前記プロセッサによる命令の実行対象のプログラムが動作するビットモードを判定し、
前記判定したビットモードが、前記メモリのアドレスのビット数を第１ビットに設定する第１ビットモード、前記ビット数を前記第１ビットよりも大きい第２ビットに設定する第２ビットモード、及び、前記ビット数を前記第２ビットよりも大きい第３ビットに設定する第３ビットモード、のうちの前記第３ビットモードの場合、前記第１ビットモードと前記第２ビットモードと、のいずれか一方を示す値が設定される第１設定領域と、前記第３ビットモードの有効又は無効を示す情報が設定される第２設定領域と、前記第１ビット又は前記第２ビットのビット数のアドレスが設定されるアドレス領域と、をそなえる記憶部に対して、前記第２設定領域に前記第３ビットモードの有効を示す情報を設定し、
前記第１設定領域と前記アドレス領域とに、結合アドレスを設定し、
前記第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した前記結合アドレスに基づき、前記メモリにアクセスする
処理を実行させる、情報処理プログラム。
【請求項９】
メモリと、前記メモリと接続されたプロセッサと、をそなえる情報処理装置における情報処理方法であって、
前記プロセッサが、
前記メモリのアドレスのビット数を第１ビットに設定する第１ビットモードと、前記ビット数を前記第１ビットよりも大きい第２ビットに設定する第２ビットモードと、のいずれか一方を示す値が設定される第１設定領域と、
前記ビット数を前記第２ビットよりも大きい第３ビットに設定する第３ビットモードの有効又は無効を示す情報が設定される第２設定領域と、
前記第１ビット又は前記第２ビットのビット数のアドレスが設定されるアドレス領域と、
をそなえる第１記憶部の前記第２設定領域に設定される情報が前記第３ビットモードの有効を示すか否かを判定し、
前記第２設定領域に設定される情報が前記第３ビットモードの有効を示す場合、前記第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスする、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理プログラム、及び情報処理方法に関する。
【背景技術】
【０００２】
仮想記憶領域に対する仮想記憶アドレッシングを行なう情報処理装置のＯＳ（Operating System）、例えばメインフレーム等のホストコンピュータのＯＳは、２４ビット及び３１ビットのように、複数のアドレッシングモードを利用することがある。
【０００３】
仮想記憶領域は、仮想アドレスにより表される、メモリ（主記憶装置）の仮想的なアドレス空間である。仮想アドレスは、ＤＡＴ（Dynamic Address Translation；動的アドレス変換機構）と呼ばれるアドレス変換により実アドレスに変換される。例えば、上述したＯＳが利用する仮想アドレスには、２４及び３１ビットのアドレス空間があり、最大領域サイズは、それぞれ１６ＭＢ及び２ＧＢになる。ＯＳのカーネルやプログラムは、独立した仮想記憶領域を確保できる。
【０００４】
このため、ＯＳは、カーネルやアプリケーション等のプログラムを実行する際に、仮想記憶アドレッシングにより、２４ビットモードでは最大１６ＭＢ、３１ビットモードでは最大２ＧＢの仮想記憶領域（アドレス空間）を利用することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１−１４７７４７号公報
【特許文献２】特開昭６３−１１３６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メインフレーム等で利用されるＯＳのアーキテクチャでは、仮想アドレスが例えば最大３１ビットであり、この場合、カーネルは最大２ＧＢのアドレス空間を確保するに留まる。しかし、一部のＯＳ（例えば海外ベンダのＯＳ）において、使用メモリ容量は増加傾向にあり、カーネルにより確保される２ＧＢのアドレス空間では不足する場合がある。
【０００７】
例えば、不足分のアドレス空間を新たなアドレス空間で補ったり、或いは、６４ビットアーキテクチャを採用したりすることも考えられる。
【０００８】
しかし、新たなアドレス空間を利用する場合、元のアドレス空間と新たなアドレス空間との間でアドレス空間の切り替えが発生することがあり、この場合、オーバヘッドが発生し、ＣＰＵ（Central Processing Unit）等のプロセッサの性能低下を招くことになる。
【０００９】
また、６４ビットアーキテクチャを採用する場合、ＯＳ及びＨＷ（Hardware）ともに、２４及び／又は（以下、「及び／又は」を「／」を用いて示す）３１ビットアーキテクチャに対して大幅な変更やリソースの増加が発生し、開発コストが増大することになる。また、既存の２４／３１ビットアーキテクチャで動作していた一部機能が６４ビットアーキテクチャにおいて動作しなくなる可能性もある。
【００１０】
１つの側面では、本発明は、情報処理装置におけるアドレス空間の効率的な拡張を実現することを目的の１つとする。
【課題を解決するための手段】
【００１１】
１つの側面では、情報処理装置は、メモリと、前記メモリと接続されたプロセッサと、をそなえてよい。前記プロセッサは、第１記憶部と、アクセス部と、をそなえてよい。前記第１記憶部は、第１設定領域と、第２設定領域と、アドレス領域と、をそなえてよい。前記第１設定領域は、前記メモリのアドレスのビット数を第１ビットに設定する第１ビットモードと、前記ビット数を前記第１ビットよりも大きい第２ビットに設定する第２ビットモードと、のいずれか一方を示す値が設定されてよい。前記第２設定領域は、前記ビット数を前記第２ビットよりも大きい第３ビットに設定する第３ビットモードの有効又は無効を示す情報が設定されてよい。前記アドレス領域は、前記第１ビット又は前記第２ビットのビット数のアドレスが設定されてよい。前記アクセス部は、前記第２設定領域に設定される情報が前記第３ビットモードの有効を示す場合、前記第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスしてよい。
【発明の効果】
【００１２】
１つの側面では、情報処理装置におけるアドレス空間の効率的な拡張を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】一実施形態に係るコンピュータシステムのハードウェア構成例を示すブロック図である。
【図２】一実施形態に係るＣＰＵの構成例を示すブロック図である。
【図３】一実施形態に係るメモリの構成例を示すブロック図である。
【図４】ＣＰＵの命令実行処理の動作例を示すフローチャートである。
【図５】アドレス空間の一例を示す図である。
【図６】命令アドレス及びオペランドアドレスの一例を示す図である。
【図７】ＰＳＷ（Program State Word）フォーマットの一例を示す図である。
【図８】２４／３１／３２ビットモードの設定例を示す図である。
【図９】アドレス空間を説明する図である。
【図１０】アドレス空間判定処理の動作例を示すフローチャートである。
【図１１】ＰＳＷフォーマットチェック処理の動作例を示すフローチャートである。
【図１２】命令アドレス空間判定処理の動作例を示すフローチャートである。
【図１３】オペランドアドレス空間判定処理の動作例を示すフローチャートである。
【図１４】２４／３１／３２ビット仮想アドレスフォーマットの一例を示す図である。
【図１５】３２ビットに対応したＳＴＤ（Segment Table Descriptor）フォーマットの一例を示す図である。
【図１６】ＳＴＬ（Segment Table Length）ビット幅の比較例を示す図である。
【図１７】ＳＴＤに使用するレジスタを説明する図である。
【図１８】ＳＴＥ（Segment Table Entry）／ＰＴＥ（Page Table Entry）の一例を示す図である。
【図１９】４０ビット実アドレスの一例を示す図である。
【図２０】３２ビットに対応した動的アドレス変換の一例を示す図である。
【図２１】アドレス変換テーブルの最大エントリ数の計算例を示す図である。
【図２２】サポート情報の設定例を示す図である。
【図２３】一実施形態に係るコンピュータシステムの機能構成例を示すブロック図である。
【図２４】ソフトウェアの設定例を示す図である。
【図２５】アドレス空間の切り替え例を示す図である。
【図２６】ＰＣ（PROGRAM CALL）命令の一例を示す図である。
【図２７】ＰＣ命令の動作の一例を示す図である。
【図２８】Entry-Tableエントリ（ＰＣ命令）の一例を示す図である。
【図２９】ＰＣ命令の動作パターンの例を示す図である。
【図３０】ＢＡＫＲ（BRANCH AND STACK）命令の一例を示す図である。
【図３１】ＢＡＫＲ命令の動作の一例を示す図である。
【図３２】ＢＡＫＲ命令の第１オペランドの一例を示す図である。
【図３３】ＢＡＫＲ命令の第２オペランドの一例を示す図である。
【図３４】ＰＴ（PROGRAM TRANSFER）命令の一例を示す図である。
【図３５】ＰＴ命令の動作の一例を示す図である。
【図３６】ＰＴ命令のオペランドフォーマットの一例を示す図である。
【図３７】ＰＲ（PROGRAM RETURN）命令の一例を示す図である。
【図３８】ＰＲ命令の動作の一例を示す図である。
【図３９】３２ビット対応のための一般命令の変更点の例を示す図である。
【図４０】３２ビット対応のための制御命令の変更点の例を示す図である。
【図４１】一実施形態に係るチャネルサブシステムの構成例を示すブロック図である。
【図４２】チャネルサブシステムの命令実行処理の動作例を示すフローチャートである。
【図４３】Ｉ／Ｏ（Input / Output）起動命令によるメモリ参照の一例を示す図である。
【図４４】ＯＲＢ（Operation Request Block）フォーマットの一例を示す図である。
【図４５】ＣＣＷ（Channel Command Words）フォーマットの一例を示す図である。
【図４６】データアドレス空間を説明する図である。
【図４７】アドレス空間判定処理の動作例を示すフローチャートである。
【図４８】ＯＲＢフォーマットチェック処理の動作例を示すフローチャートである。
【図４９】ＣＣＷアドレス空間判定処理の動作例を示すフローチャートである。
【図５０】データアドレス空間判定処理の動作例を示すフローチャートである。
【図５１】３２ビットに対応したＳＴＤ０／ＳＴＤ１（ＯＲＢ）フォーマットの一例を示す図である。
【図５２】３２ビットに対応したチャネル動的アドレス変換の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１５】
〔１〕一実施形態
上述のように、メインフレーム等で利用されるＯＳのアーキテクチャにおいては、カーネルにより確保される２ＧＢのアドレス空間では不足する場合がある。
【００１６】
一部のＯＳにおけるアドレス空間の不足分は、例えば、０．３ＧＢ（１５％程度）と予想される。この１５％程度の不足分を補完するために、新たなアドレス空間を作成する場合、アドレス空間の切り替えが頻発し、オーバヘッドが発生して、プロセッサの性能低下を招く可能性がある。
【００１７】
また、６４ビットアーキテクチャを採用する場合、ＰＳＷ（Program State Word）や各種レジスタのＨＷリソースは倍増する。また、２種類のレジスタに対応するために命令は倍増するため、ＨＷに対して、大規模な変更を行なうことになる。
【００１８】
さらに、制御レジスタや制御情報は、大幅にフォーマット変更され、既存フォーマットの使用は困難になるため、ＯＳ及びＨＷともに、大規模な変更を行なうことになる。なお、近年の技術者不足により、大規模な変更（開発）自体が困難な場合もある。
【００１９】
また、現在、メインフレーム等で利用される国内ＯＳやユーザアプリケーションにおいて、メモリ不足は発生していない。しかし、６４ビットアーキテクチャを採用する場合、これらの国内ＯＳやユーザアプリケーションにおいて、２４／３１ビットで動作していた一部機能が動作できなる可能性があり、６４ビットに対応させる必要性が生じるリスクがでてくる。
【００２０】
上記の点に鑑み、一実施形態では、１つの観点として、ＯＳやユーザアプリケーションが使用するメモリ領域、例えば仮想アドレス空間を、２ＧＢ以上に拡張する手法を説明する。なお、当該手法では、上述のように、１５％程度の不足容量を確保することを狙っており、大幅な容量増加を行なうことは意図していない。
【００２１】
また、他の観点として、新たなアドレス空間の追加には、アドレス空間切り替えによるオーバヘッドが発生する可能性があるため、一実施形態では、１つの仮想アドレス領域を拡張する手法を説明する。
【００２２】
さらに、他の観点として、６４ビットアーキテクチャを採用する場合のように、ＨＷリソースを大きく増加させることなく、例えば、既存の未使用リソース（ビット）を活用すること等により、仮想アドレス領域を拡張する手法を説明する。例えば、一実施形態では、ＰＳＷや各種レジスタのＨＷリソース追加、及び、新規命令の追加、等を行なわない。
【００２３】
また、他の観点として、メモリ拡張が不要な（例えば２４／３１ビットで動作する）ＯＳやユーザアプリケーションに対して、再コンパイルすることなく、従来機能（例えば２４／３１ビット）のまま、動作継続を可能にする手法を説明する。
【００２４】
〔１−１〕構成例
以下、図１を参照して、一実施形態に係るコンピュータシステム１のハードウェア構成例について説明する。コンピュータシステム１は、仮想記憶領域に対する仮想記憶アドレッシングを行なうホストコンピュータ（情報処理装置）の一例である。
【００２５】
図１に示すように、コンピュータシステム１は、例示的に、複数（図１の例では２つ）のＣＰＵ１１、メモリ１２、チャネルサブシステム１３、及びシステム記憶装置１７をそなえてよい。また、コンピュータシステム１は、例示的に、ＳＷ（Switch；スイッチ）１４、ＣＵ（Control Unit；制御ユニット）１５、及びＩ／Ｏ（Input / Output）装置１６を、それぞれ複数（図１の例では２つ）そなえてよい。
【００２６】
ＣＰＵ１１は、メモリ１２に接続され、種々の制御や演算を行なう演算処理装置又はプロセッサの一例である。ＣＰＵ１１は、コンピュータシステム１内の各ブロックとバスで相互に通信可能に接続されてよい。
【００２７】
ＣＰＵ１１として、例えば、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ等の集積回路（ＩＣ；Integrated Circuit）が用いられてもよい。ＭＰＵはMicro Processing Unitの略称であり、ＤＳＰはDigital Signal Processorの略称である。ＡＳＩＣはApplication Specific Integrated Circuitの略称であり、ＦＰＧＡはField-Programmable Gate Arrayの略称である。
【００２８】
メモリ１２は、種々のデータやプログラム等の情報を格納可能なハードウェアであり、主記憶装置の一例である。図１に示すように、メモリ１２は、複数のＣＰＵ１１の各々と接続され、ＣＰＵ１１の各々に対して、共用する記憶領域を提供してよい。メモリ１２としては、ＤＲＡＭ（Dynamic Random Access Memory）、例えばＤＩＭＭ等の不揮発性メモリが挙げられる。
【００２９】
ＣＰＵ１１は、メモリ１２等に展開されたカーネルやプログラム（図示省略）を実行することで、ＯＳやアプリケーション等の機能を実現する。
【００３０】
チャネルサブシステム１３は、メモリ１２と、Ｉ／Ｏ装置１６とに（直接的又は間接的に）接続され、メモリ１２と、Ｉ／Ｏ装置１６等の周辺機器との間におけるデータや制御信号等の種々の情報の通信を制御するプロセッサ又は入出力プロセッサの一例である。チャネルサブシステム１３として、例えば、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ等の集積回路（ＩＣ）が用いられてもよい。
【００３１】
ＣＰＵ１１、メモリ１２、及びチャネルサブシステム１３は、１以上のクラスタ１０として構成されてもよい。クラスタ１０において、複数のＣＰＵ１１は、互いに並列処理を実行してもよい。
【００３２】
ＳＷ１４は、チャネルサブシステム１３、換言すればクラスタ１０と、Ｉ／Ｏ装置１６等の周辺機器と、を相互に通信可能に接続する。ＣＵ１５は、Ｉ／Ｏ装置１６等の周辺装置の制御を行なう制御装置である。
【００３３】
Ｉ／Ｏ装置１６は、クラスタ１０に接続される周辺機器の一例であり、例えば、記憶装置、通信装置、監視装置、等の種々の装置であってよい。Ｉ／Ｏ装置１６は、ＣＵ１５、ＳＷ１４、及びチャネルサブシステム１３を介して、ＣＰＵ１１やメモリ１２との間で相互に通信可能であってよい。
【００３４】
なお、記憶装置としては、例えば、ＨＤＤ（Hard Disk Drive）等の磁気ディスク装置、ＳＳＤ（Solid State Drive）等の半導体ドライブ装置、不揮発性メモリ等の各種装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、ＳＣＭ（Storage Class Memory）、ＲＯＭ（Read Only Memory）等が挙げられる。
【００３５】
システム記憶装置１７は、クラスタ１０におけるＣＰＵ１１間の高速データ転送等を実現し、また、クラスタ１０においてＣＰＵ１１が効率的に並列処理を実現するための制御を行なってよい。
【００３６】
なお、上述したコンピュータシステム１のハードウェア構成は例示である。従って、コンピュータシステム１内でのハードウェアの増減（例えば任意のブロックの追加や削除）、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。例えば、コンピュータシステム１には、ネットワークＩＦ（Interface）等がそなえられてよく、図示しないネットワークからデータやプログラム等の種々の情報を送信又は受信可能であってよい。
【００３７】
次に、図２及び図３を参照して、一実施形態に係るＣＰＵ１１及びメモリ１２の構成例を説明する。図２に示すように、コンピュータシステム１において、各ＣＰＵ１１は、例示的に、処理部２１、判定部２２、変換部２３、及び複数の記憶部２４をそなえてよい。
【００３８】
処理部２１は、カーネルやプログラムにおける命令の読出や実行等を含む種々の処理を行なうことで、ＯＳやアプリケーションを実行する。一実施形態において、処理部２１は、仮想記憶領域に対するアドレッシングにおいて、従来利用可能であった２４ビットモード及び３１ビットモードに加えて、３２ビットモード（仮想記憶空間：４ＧＢ）を拡張的に利用可能とする。換言すれば、ＣＰＵ１１では、２４ビットモード又は３１ビットモードで動作するＯＳやアプリケーションに対応した上で、さらに、３２ビットモードで動作するＯＳやアプリケーションにも対応することができる。
【００３９】
判定部２２は、命令アドレスやオペランドアドレスのアドレス空間の判定を行なう。例えば、判定部２２は、２４ビット、３１ビット、及び３２ビットのアドレス空間の判定を行なってよい。
【００４０】
変換部２３は、判定部２２により判定されたアドレス空間に従って命令アドレスやオペランドアドレスの変換を行なう。処理部２１は、変換部２３により変換されたアドレスに基づき処理を行なってよい。
【００４１】
なお、例えば、処理部２１、判定部２２、変換部２３、及び複数の記憶部２４は、それぞれ、処理回路、判定回路、変換回路、及び複数のレジスタ、等のハードウェアによって実現されてよい。変換回路としての変換部２３は、例えば、ＤＡＴ（動的アドレス変換機構）を有する回路であってもよい。レジスタとしての複数の記憶部２４には、例えば、後述するＰＳＷ２４１、複数のＧＲ２４２、複数のＣＲ２４３、複数のＡＲ２４４等の種々のレジスタが含まれてよい。なお、ＧＲはGeneral Register（汎用レジスタ）の略称であり、ＣＲはControl Register（制御レジスタ）の略称であり、ＡＲはAccess Register（アクセスレジスタ）の略称である。
【００４２】
また、図３に示すように、コンピュータシステム１において、メモリ１２は、例示的に、セグメントテーブル２５、ページテーブル２６、アドレス空間（ＡＳ；Address Space）情報テーブル２７等の情報を記憶してよい。さらに、メモリ１２は、記憶領域としてスタック領域２８を有してよい。なお、以下の説明では、便宜上、各テーブル２５〜２７がテーブル形式の情報であるものとして説明するが、これらのテーブル２５〜２７は、配列やデータベース（Database；ＤＢ）等の形式で格納される情報であってよい。
【００４３】
ＣＰＵ１１及びメモリ１２の詳細については後述する。
【００４４】
〔１−２〕ＣＰＵの処理について
次に、ＣＰＵ１１の処理について説明する。
【００４５】
まず、図４を参照して、ＣＰＵ１１の命令実行処理の動作例を説明する。ＣＰＵ１１は、ＰＳＷ２４１（図２参照）が搭載されており、ＣＰＵ１１は、ＰＳＷ２４１の内容に従って１命令ずつ実行する。ＰＳＷ２４１は、ＣＰＵ１１の現在の状態や、次に実行する命令のメモリ１２上のアドレス、等を記憶する記憶部又は第１記憶部の一例である。図４では、ＣＰＵ１１による１命令の実行手順を示している。
【００４６】
ＣＰＵ１１の判定部２２は、ＰＳＷ２４１のフォーマットをチェックし（ステップＳ１）、命令アドレスのアドレス空間の判定を行なう。ＣＰＵ１１の処理部２１は、命令アドレスのアクセスを行なう（ステップＳ２）。ＣＰＵ１１の変換部２３は、アドレスの変換を行なう（ステップＳ３）。そして、処理部２１は、各種命令を処理する（ステップＳ４）。
【００４７】
また、判定部２２は、オペランドアドレスのアドレス空間の判定を行ない、処理部２１は、オペランドアドレスのアクセスを行なう（ステップＳ５）。変換部２３は、アドレスの変換を行なう（ステップＳ６）。処理部２１は、ＰＳＷ２４１を更新し（ステップＳ７）、１命令の実行処理が終了する。
【００４８】
（アドレス変換について）
ここで、ステップＳ３及びＳ６のアドレス変換について説明する。図５は、メモリ１２のアドレス空間の一例を示す図である。
【００４９】
メモリ１２には、アドレス空間として、仮想アドレス、実アドレス、及び絶対アドレスの３種類のアドレスが存在する。
【００５０】
仮想アドレスは、ＰＲＩＭＡＲＹ、ＳＥＣＯＮＤＡＲＹ、ＨＯＭＥ、ＡＲといった複数のモードを持つ。仮想アドレスは、変換部２３によるアドレス変換、例えばＤＡＴにより実アドレスに変換される（図５の「ＤＡＴ」参照）。図５に示すプログラム＃Ａ及び＃Ｂ、並びにカーネルが利用する仮想アドレス空間＃Ａ〜＃Ｃは、それぞれ、実アドレス空間＃Ａ〜＃Ｃに変換される。
【００５１】
実アドレスは、ユーザが変換を行なわずにメモリ１２にアクセスする際に使用される。実アドレスは、プレフィックス変換（Prefixing）と呼ばれるプレフィックス（Prefix）（０〜４０９６番地）領域と、プレフィックスレジスタの指すアドレス領域とのスワップによって、絶対アドレスに変換される（図５の「Prefixing」参照）。実アドレスには、２４、３１及び４０ビットのアドレス空間があり、最大領域サイズは、それぞれ１６ＭＢ、２ＧＢ及び１ＴＢになる。
【００５２】
絶対アドレスは、メモリ１２の記憶位置に割り当てられたアドレスであり、主にハードウェアがメモリ１２にアクセスする際に使用される。絶対アドレスの領域サイズは、システムに搭載されたＤＩＭＭの総容量に依存し、ユーザのアクセスが制限された（アクセス不可に設定された）ハードウェア制御領域（ＨＳＡ；Hardware System Area、図５参照）も含まれる。なお、実アドレスには、ＨＳＡは含まれない。
【００５３】
図４のステップＳ３及びＳ６は、変換部２３による、図５に示す仮想アドレスから実アドレスへの変換（ＤＡＴ）を示すが、ＣＰＵ１１によるメモリ１２へのアクセスの際には、プレフィックス変換がさらに行なわれてもよい。
【００５４】
（命令アドレス及びオペランドアドレスのアクセスについて）
次に、処理部２１及び判定部２２による命令アドレス及びオペランドアドレスのアクセスについて説明する。
【００５５】
図６に例示するように、ＣＰＵ１１は、ＰＳＷ２４１の命令アドレス先であるメモリ１２の記憶領域に格納された命令を読み出し、読み出した命令を実行する（図４のステップＳ１〜Ｓ４に相当）。ＣＰＵ１１には記憶部２４、例えばレジスタが搭載されており、命令によっては、レジスタを使ったオペランドアドレスが指定されることがある。この場合、ＣＰＵ１１は、オペランドアドレス先のデータを読み出したり、データを書き込んだりする場合がある（図４のステップＳ５に相当）。命令の実行が完了すると、ＣＰＵ１１はＰＳＷ２４１の命令アドレスを更新して（図４のステップＳ６〜Ｓ７に相当）、次の命令に移行する。
【００５６】
なお、命令アドレス、および、オペランドアドレスのアドレス空間は、ＰＳＷ２４１の設定情報に従う。
【００５７】
次に、図４に示す命令実行処理の実行手順に沿って、ＣＰＵ１１の処理の詳細を説明する。
【００５８】
〔１−２−１〕ＰＳＷフォーマットチェック
（ＰＳＷフォーマットの説明）
ＰＳＷ２４１は、例えば、６４ビットのデータ形式であり、１つのＣＰＵ１１に対して１つのＰＳＷ２４１が存在してよい。ＰＳＷ２４１には、アドレス空間や命令アドレス等のプログラム動作に用いられるＣＰＵ情報が格納されてよい。
【００５９】
ここで、一実施形態に係るＰＳＷ２４１には、３２ビット仮想アドレスモードの有効ビットであるＡＸビットが追加されてよい。ＣＰＵ１１は、ＡＸの値によって、３２ビット仮想アドレスを制御してよく、これにより、ＰＳＷ２４１の命令アドレス、及び、各命令のオペランドアドレスのアドレス空間に３２ビット仮想アドレスモードを追加することができる。
【００６０】
ＡＸビットは、例えば、ビット３０（ＡＸ）であってよい。なお、当該変更を加える前（定義前）のビット３０は、０値が設定される領域であるため、ビット３０（ＡＸ）の追加による従来機能への影響は生じない。
【００６１】
図７は、一実施形態に係るＰＳＷ２４１のフォーマットの一例を示す図である。以下、ＰＳＷ２４１の各ビット又はビット範囲について説明する。
【００６２】
＜ビット０、２〜４、２４〜２９、３１＞
これらのビットには、０値が設定される。これらのビットに０値以外が設定された場合、判定部２２は、ＰＳＷ２４１のフォーマットエラーとして例外を報告する。なお、例外の報告としては、エラーログ等の記録、管理者等への通知、等が挙げられる。例外の報告については、以下の説明においても同様である。
【００６３】
＜ビット５（Ｔ）＞
ビット５（Ｔ）は、命令アドレス、及び、オペランドアドレスのアドレス空間情報を示す。ビット５（Ｔ）が１値の場合、アドレス空間は仮想アドレスになり、ビット５（Ｔ）が０値の場合、アドレス空間は実アドレスになる。すなわち、ビット５（Ｔ）は、アドレス空間を実アドレス及び仮想アドレスのいずれか一方に決定する。
【００６４】
＜ビット１２＞
ビット１２には、１値が設定される。ビット１２に１値以外が設定された場合、判定部２２は、ＰＳＷ２４１のフォーマットエラーとして例外を報告する。
【００６５】
＜ビット１６〜１７（ＡＳ）＞
ビット１６〜１７（ＡＳ）は、アドレス空間が仮想アドレスの場合、ＰＲＩＭＡＲＹ、ＳＥＣＯＮＤＡＲＹ、ＡＲ、ＨＯＭＥ、のいずれか１つの空間モードを決定する。
【００６６】
＜ビット３０（ＡＸ）＞
３２ビット仮想アドレスモードの有効ビットを示す。ビット３０（ＡＸ）が１値の場合、命令アドレス、及び、オペランドアドレスは、３２ビットとして動作する。また、ビット３０（ＡＸ）が０値の場合、従来通り、判定部２２は、ビット３２（Ａ）の値に応じて、２４／３１ビットモードとして動作する。
【００６７】
ビット３０（ＡＸ）が１値に設定可能となるのは、ビット５（Ｔ）が１値（仮想アドレス有効）の場合に制限されてよい。このように、ビット３０（ＡＸ）は、１値の場合はアドレス空間を３２ビットに決定し、０値の場合はさらにビット３２（Ａ）を参照してアドレス空間を３１ビット／２４ビットに決定するといえる。なお、ビット５（Ｔ）が０値（仮想アドレス無効＝実アドレス）の場合に、ビット３０（ＡＸ）が１値に設定された場合、判定部２２は、ＰＳＷ２４１のフォーマットエラーとして例外を報告する。
【００６８】
ビット３０（ＡＸ）が設定される記憶領域２４１ｂ（図７参照）は、第３ビットモードの有効又は無効を示す情報が設定される第２設定領域の一例である。第３ビットモードは、メモリ１２のアドレスのビット数を第２ビット（例えば３１ビット）よりも大きい第３ビット（例えば３２ビット）に設定するビットモードである。
【００６９】
＜ビット３２（Ａ）＞
ビット３２（Ａ）は、ビット３０（ＡＸ）の値によって扱いが変化する。例えば、ビット３２（Ａ）は、ビット３０（ＡＸ）の値に応じて以下のように扱われてよい。
【００７０】
・ビット３０（ＡＸ）が１値の場合
ビット３２（Ａ）は、命令アドレスの最上位ビット（ビット０）として扱われる。すなわち、ビット３２〜ビット６３の３２ビットが命令アドレスとなる。
【００７１】
・ビット３０（ＡＸ）が０値の場合
ビット３２（Ａ）は、従来通り、２４／３１ビットモードの判定に用いられる。すなわち、この場合、ビット３２（Ａ）は、命令アドレス、及び、オペランドアドレスのアドレス空間情報を示す。ビット３２（Ａ）が１値の場合、アドレス空間は３１ビットアドレスになり、ビット３２（Ａ）が０値の場合、アドレス空間は２４ビットアドレスになる。
【００７２】
ビット３２（Ａ）が設定される記憶領域２４１ａ（図７参照）は、第１ビットモードと、第２ビットモードと、のいずれか一方を示す値が設定される第１設定領域の一例である。第１ビットモードは、メモリ１２のアドレスのビット数を第１ビット（例えば２４ビット）に設定するビットモードである。また、第２ビットモードは、ビット数を第１ビットよりも大きい第２ビット（例えば３１ビット）に設定するビットモードである。
【００７３】
＜ビット３３〜６３（命令アドレス）＞
ビット３３〜ビット６３は、ビット３２（Ａ）と合わせて、最大で３２ビットのアドレス指定が可能である。ビット３３（３２）〜ビット６３は、現在実行中のＣＰＵ命令が格納されたメモリ１２のアドレスを示す。
【００７４】
２４ビットモードの場合、ビット３３〜ビット６３のうち、ビット４０〜ビット６３の２４ビットが命令アドレスとして使用され、ビット３３〜ビット３９には０値が設定される。なお、ビット３３〜ビット３９に０値以外が設定された場合、判定部２２は、ＰＳＷ２４１のフォーマットエラーとして例外を報告する。
【００７５】
３１ビットモードの場合、ビット３３〜ビット６３の３１ビットが命令アドレスとして使用される。
【００７６】
３２ビットモードの場合、ビット３２（Ａ）を含むビット３２〜ビット６３の３２ビットが命令アドレスとして使用される。
【００７７】
ビット３３〜６３（命令アドレス）が設定される記憶領域２４１ｃ（図７参照）は、第１ビット又は第２ビットのビット数のアドレスが設定されるアドレス領域の一例である。また、拡張されたビット３２〜６３が示すアドレスは、第２設定領域に設定される情報が第３ビットモードの有効を示す場合、第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した結合アドレス（仮想アドレス）の一例である。
【００７８】
以上より、判定部２２は、図８（ａ）に示すように、ビット３０（ＡＸ）＝０、且つ、ビット３２（Ａ）＝０の場合、アドレス空間が２４ビットモードであると判定する。また、判定部２２は、図８（ｂ）に示すように、ビット３０（ＡＸ）＝０、且つ、ビット３２（Ａ）＝１の場合、アドレス空間が３１ビットモードであると判定する。なお、ビット５（Ｔ）に応じて、仮想アドレス又は実アドレスが決定され、仮想アドレスの場合、ビット１６〜ビット１７（ＡＳ）に応じて、空間モードが決定される。
【００７９】
また、判定部２２は、図８（ｃ）に示すように、ビット３０（ＡＸ）＝１、且つ、ビット５（Ｔ）＝１（仮想アドレス有効）の場合、アドレス空間が３２ビットモード（仮想アドレス）であると判定する。なお、ビット１６〜ビット１７（ＡＳ）に応じて、空間モードが決定される。
【００８０】
以上を総合すると、命令アドレス及びオペランドアドレスのアドレス空間は、図９に示すように、ＰＳＷ２４１の設定情報、例えば、ビット５（Ｔ）、ビット３０（ＡＸ）、及びビット（３２）により特定（決定）することができる。
【００８１】
また、処理部２１及び判定部２２は、３２ビットモードが有効の場合、ビット３２（Ａ）に設定される値と、ビット３３〜ビット６３に設定されるアドレスと、を結合した結合アドレスに基づき、メモリ１２にアクセスするアクセス部の一例である。
【００８２】
（アドレス空間の判定処理の動作例）
次に、判定部２２によるアドレス空間の判定処理の動作例を説明する。例えば、判定部２２は、図４のステップＳ１に示すＰＳＷフォーマットチェック、並びに、ステップＳ２及びＳ５に示す命令アドレス／オペランドアドレスのアクセス前、において、アドレス空間の判定を行なってよい。
【００８３】
図１０は、アドレス空間判定処理の動作例を示すフローチャートである。図１０に示すように、判定部２２は、０値に定義されているビットの確認を行ない（ステップＳ１１）、０値以外が設定されていた場合（ステップＳ１１でＮｏ）、ＰＳＷ２４１のフォーマットエラーとして例外を報告し（ステップＳ１２）、処理が終了する。なお、図１０に示すように、ステップＳ１１の０値チェックの対象ビットから、一実施形態においてＡＸビットが割り当てられたビット３０は除外される。
【００８４】
０値に定義されているビットが全て０値の場合（ステップＳ１１でＹｅｓ）、判定部２２は、ビット５（Ｔ）を確認し、仮想アドレスモード（Ｔ＝１）か否かを判定する（ステップＳ１３）。仮想アドレスモードの場合（ステップＳ１３でＹｅｓ）、判定部２２は、ビット３０（ＡＸ）を確認し、３２ビットモード（ＡＸ＝１）か否かを判定する（ステップＳ１４）。
【００８５】
３２ビットモードの場合（ステップＳ１４でＹｅｓ）、判定部２２は、３２ビット仮想アドレスモードであると判定し（ステップＳ１５）、処理が終了する。この場合、ビット３２（Ａ）は命令アドレスの一部として扱われる。
【００８６】
３２ビットモードではない（ＡＸ＝０）場合（ステップＳ１４でＮｏ）、判定部２２は、ビット３２（Ａ）を確認し、３１ビットモード（Ａ＝１）か否かを判定する（ステップＳ１６）。
【００８７】
３１ビットモードの場合（ステップＳ１６でＹｅｓ）、判定部２２は、３１ビット仮想アドレスモードであると判定し（ステップＳ１７）、処理が終了する。
【００８８】
３１ビットモードではない（Ａ＝０）場合（ステップＳ１６でＮｏ）、判定部２２は、２４ビット仮想アドレスモードであると判定し（ステップＳ１８）、処理が終了する。
【００８９】
一方、ステップＳ１３において、実アドレスモード（Ｔ＝０）の場合（ステップＳ１３でＮｏ）、判定部２２は、ビット３０（ＡＸ）を確認し、３２ビットモード（ＡＸ＝１）か否かを判定する（ステップＳ１９）。
【００９０】
３２ビットモードの場合（ステップＳ１９でＹｅｓ）、判定部２２は、ＰＳＷ２４１のフォーマットエラーとして例外を報告し（ステップＳ１２）、処理が終了する。実アドレスモードの場合、ビット３０（ＡＸ）は０値であるという制限（定義）に違反しているためである。
【００９１】
３２ビットモードではない（ＡＸ＝０）場合（ステップＳ１９でＮｏ）、判定部２２は、ビット３２（Ａ）を確認し、３１ビットモード（Ａ＝１）か否かを判定する（ステップＳ２０）。
【００９２】
３１ビットモードの場合（ステップＳ２０でＹｅｓ）、判定部２２は、３１ビット実アドレスモードであると判定し（ステップＳ２１）、処理が終了する。
【００９３】
３１ビットモードではない（Ａ＝０）場合（ステップＳ２０でＮｏ）、判定部２２は、２４ビット実アドレスモードであると判定し（ステップＳ２２）、処理が終了する。
【００９４】
（アドレス空間の判定処理のより詳細な又は代替の動作例）
次に、アドレス空間の判定処理のより詳細な、又は、代替となる動作例を説明する。図１１〜図１３は、ＰＳＷフォーマットチェック処理、命令アドレス空間判定処理、オペランドアドレス空間判定処理、の動作例をそれぞれ示すフローチャートである。
【００９５】
判定部２２によるＰＳＷフォーマットチェックは、３２ビット機能向けのＰＳＷ２４１のフォーマット変更（図７参照）に伴い、以下のように変更されてよい。
【００９６】
図１１に例示するように、判定部２２は、３２ビット仮想アドレス機能のサポート情報を確認した後（ステップＳ１０１）、確認結果に応じて、従来のＰＳＷフォーマットチェックと、３２ビット機能向けのＰＳＷフォーマットチェックと、に分岐してよい。
【００９７】
３２ビット仮想アドレス機能をサポートとする場合（ステップＳ１０１でＹｅｓ）、判定部２２は、３２ビット機能向けのＰＳＷフォーマットチェックとして、ステップＳ１０２〜Ｓ１０７を実行してよい。なお、ステップＳ１０２、Ｓ１０４、Ｓ１０５は、図１０のステップＳ１１、Ｓ１４、Ｓ１３と同様である。
【００９８】
ステップＳ１０３では、判定部２２は、ビット１２に１が設定されている否かの判定を行なう。ステップＳ１０２、Ｓ１０３、Ｓ１０５のいずれかでＮｏの場合、判定部２２は、ＰＳＷフォーマットの例外を報告し（ステップＳ１０７）、処理が終了する。ステップＳ１０４でＮｏの場合、処理がステップＳ１１０に移行する。また、ステップＳ１０１〜Ｓ１０５でいずれもＹｅｓの場合、判定部２２は、命令及び／又はオペランド空間の判定処理を行ない（ステップＳ１０６）、処理が終了する。
【００９９】
３２ビット仮想アドレス機能をサポートとしない場合（ステップＳ１０１でＮｏ）、判定部２２は、従来のＰＳＷフォーマットチェックとして、ステップＳ１０８〜Ｓ１１２を実行してよい。
【０１００】
判定部２２は、ビット３０（ＡＸ）を含む０値が定義されたビットの確認を行ない（ステップＳ１０８）、全て０値であれば（ステップＳ１０８でＹｅｓ）、ビット１２が１値であるか否かを判定する（ステップＳ１０９）。
【０１０１】
ビット１２が１値であれば（ステップＳ１０９でＹｅｓ）、判定部２２は、ビット３２（Ａ）が０値か否かを判定する（ステップＳ１１０）。Ａ＝１である場合（ステップＳ１１０でＮｏ）、処理がステップＳ１０６に移行する。
【０１０２】
Ａ＝０の場合（ステップＳ１１０でＹｅｓ）、判定部２２は、ビット３３〜ビット３９がいずれも０値か否かを判定する（ステップＳ１１１）。ビット３３〜ビット３９がいずれも０値の場合（ステップＳ１１１でＹｅｓ）、処理がステップＳ１０６に移行する。
【０１０３】
ステップＳ１０８、Ｓ１０９、Ｓ１１１のいずれかでＮｏの場合、判定部２２は、ＰＳＷフォーマットの例外を報告し（ステップＳ１１２）、処理が終了する。
【０１０４】
次に、ステップＳ１０６に示す、命令アドレスのアドレス空間判定処理（図１２）、及び、オペランドアドレスのアドレス空間判定処理（図１３）を説明する。
【０１０５】
＜命令アドレスのアドレス空間判定処理＞
仮想アドレス空間には、ＰＲＩＭＡＲＹ空間モードとＨＯＭＥ空間モードとが存在する。このため、命令アドレス空間には、２４ビット実アドレスモード、３１ビット実アドレスモード、２４ビットＰＲＩＭＡＲＹ空間モード、３１ビットＰＲＩＭＡＲＹ空間モード、２４ビットＨＯＭＥ空間モード、３１ビットＨＯＭＥ空間モードが存在する。
【０１０６】
さらに、一実施形態においては、３２ビット仮想アドレス機能のサポートによって、命令アドレス空間には、３２ビットＰＲＩＭＡＲＹ空間モード及び３２ビットＨＯＭＥ空間モードが追加される。
【０１０７】
図１２に例示するように、判定部２２は、ＰＳＷ２４１のビット５（Ｔ）が０値か否かを判定し（ステップＳ１２１）、Ｔ＝０（実アドレス）の場合（ステップＳ１２１でＹｅｓ）、ビット３２（Ａ）が１値か否かを判定する（ステップＳ１２２）。
【０１０８】
Ａ＝１の場合（ステップＳ１２２でＹｅｓ）、判定部２２は、３１ビット実アドレス（ビット３３〜ビット６３が命令アドレス）であると判定し（ステップＳ１２３）、処理が終了する。
【０１０９】
Ａ＝０の場合（ステップＳ１２２でＮｏ）、判定部２２は、２４ビット実アドレス（ビット４０〜ビット６３が命令アドレス）であると判定し（ステップＳ１２４）、処理が終了する。
【０１１０】
ステップＳ１２１において、Ｔ＝１（仮想アドレス）の場合（ステップＳ１２１でＮｏ）、判定部２２は、ビット３０（ＡＸ）が０値か否かを判定する（ステップＳ１２５）。ＡＸ≠０（ＡＸ＝１）の場合（ステップＳ１２５でＮｏ）、判定部２２は、ビット１６〜ビット１７（ＡＳ）が“１１”であるか否かを判定する（ステップＳ１２６）。
【０１１１】
ＡＳ＝１１の場合（ステップＳ１２６でＹｅｓ）、判定部２２は、３２ビットＨＯＭＥ空間モードのアドレス（ビット３２〜ビット６３が命令アドレス）であると判定し（ステップＳ１２７）、処理が終了する。
【０１１２】
ＡＳ＝１１ではない場合（ステップＳ１２６でＮｏ）、判定部２２は、３２ビットＰＲＩＭＡＲＹ空間モードのアドレス（ビット３２〜ビット６３が命令アドレス）であると判定し（ステップＳ１２８）、処理が終了する。
【０１１３】
ステップＳ１２５において、ＡＸ＝０の場合（ステップＳ１２５でＹｅｓ）、判定部２２は、ビット３２（Ａ）が０値か否かを判定する（ステップＳ１２９）。Ａ＝０の場合（ステップＳ１２９でＹｅｓ）、判定部２２は、ビット１６〜ビット１７（ＡＳ）が“１１”であるか否かを判定する（ステップＳ１３０）。
【０１１４】
ＡＳ＝１１の場合（ステップＳ１３０でＹｅｓ）、判定部２２は、２４ビットＨＯＭＥ空間モードのアドレス（ビット４０〜ビット６３が命令アドレス）であると判定し（ステップＳ１３１）、処理が終了する。
【０１１５】
ＡＳ＝１１ではない場合（ステップＳ１３０でＮｏ）、判定部２２は、２４ビットＰＲＩＭＡＲＹ空間モードのアドレス（ビット４０〜ビット６３が命令アドレス）であると判定し（ステップＳ１３２）、処理が終了する。
【０１１６】
ステップＳ１２９において、Ａ＝１の場合（ステップＳ１２９でＮｏ）、判定部２２は、ビット１６〜ビット１７（ＡＳ）が“１１”であるか否かを判定する（ステップＳ１３３）。
【０１１７】
ＡＳ＝１１の場合（ステップＳ１３３でＹｅｓ）、判定部２２は、３１ビットＨＯＭＥ空間モードのアドレス（ビット３３〜ビット６３が命令アドレス）であると判定し（ステップＳ１３４）、処理が終了する。
【０１１８】
ＡＳ＝１１ではない場合（ステップＳ１３３でＮｏ）、判定部２２は、３１ビットＰＲＩＭＡＲＹ空間モードのアドレス（ビット３３〜ビット６３が命令アドレス）であると判定し（ステップＳ１３５）、処理が終了する。
【０１１９】
以上のように、命令アドレス空間は、ＰＳＷ２４１の設定によって決定される。
【０１２０】
＜オペランドアドレスのアドレス空間判定処理＞
仮想アドレス空間には、ＰＲＩＭＡＲＹ空間モード、ＳＥＣＯＮＤＡＲＹ空間モード、ＡＲ空間モード、ＨＯＭＥ空間モードが存在する。このため、オペランドアドレス空間には、２４ビット／３１ビットと、実アドレス／ＰＲＩＭＡＲＹ／ＳＥＣＯＮＤＡＲＹ／ＡＲ／ＨＯＭＥと、を組み合わせた１０パターンの空間モードが存在する。
【０１２１】
さらに、一実施形態においては、３２ビット仮想アドレス機能のサポートによって、オペランドアドレス空間には、３２ビットと、ＰＲＩＭＡＲＹ／ＳＥＣＯＮＤＡＲＹ／ＡＲ／ＨＯＭＥと、を組み合わせた４パターンの空間モードが追加される。
【０１２２】
図１３に例示するように、判定部２２は、ＰＳＷ２４１のビット５（Ｔ）が０値か否かを判定し（ステップＳ１４１）、Ｔ＝０（実アドレス）の場合（ステップＳ１４１でＹｅｓ）、ビット３２（Ａ）が１値か否かを判定する（ステップＳ１４２）。
【０１２３】
Ａ＝１の場合（ステップＳ１４２でＹｅｓ）、判定部２２は、３１ビット実アドレスであると判定し（ステップＳ１４３）、処理が終了する。
【０１２４】
Ａ＝０の場合（ステップＳ１４２でＮｏ）、判定部２２は、２４ビット実アドレスであると判定し（ステップＳ１４４）、処理が終了する。
【０１２５】
ステップＳ１４１において、Ｔ＝１（仮想アドレス）の場合（ステップＳ１４１でＮｏ）、判定部２２は、ビット３０（ＡＸ）が０値か否かを判定する（ステップＳ１４５）。ＡＸ≠０（ＡＸ＝１）の場合（ステップＳ１４５でＮｏ）、判定部２２は、ビット１６〜ビット１７（ＡＳ）を確認する（ステップＳ１４６）。
【０１２６】
ＡＳ＝００の場合（ステップＳ１４６で“００”）、判定部２２は、３２ビットＰＲＩＭＡＲＹ空間モードのアドレスであると判定し（ステップＳ１４７）、処理が終了する。ＡＳ＝１０の場合（ステップＳ１４６で“１０”）、判定部２２は、３２ビットＳＥＣＯＮＤＡＲＹ空間モードのアドレスであると判定し（ステップＳ１４８）、処理が終了する。
【０１２７】
ＡＳ＝０１の場合（ステップＳ１４６で“０１”）、判定部２２は、３２ビットＡＲ空間モードのアドレスであると判定し（ステップＳ１４９）、処理が終了する。ＡＳ＝１１の場合（ステップＳ１４６で“１１”）、判定部２２は、３２ビットＨＯＭＥ空間モードのアドレスであると判定し（ステップＳ１５０）、処理が終了する。
【０１２８】
ステップＳ１４５において、ＡＸ＝０の場合（ステップＳ１４５でＹｅｓ）、判定部２２は、ビット３２（Ａ）が０値か否かを判定する（ステップＳ１５１）。Ａ＝０の場合（ステップＳ１５１でＹｅｓ）、判定部２２は、ビット１６〜ビット１７（ＡＳ）を確認する（ステップＳ１５２）。
【０１２９】
ＡＳ＝００の場合（ステップＳ１５２で“００”）、判定部２２は、２４ビットＰＲＩＭＡＲＹ空間モードのアドレスであると判定し（ステップＳ１５３）、処理が終了する。ＡＳ＝１０の場合（ステップＳ１５２で“１０”）、判定部２２は、２４ビットＳＥＣＯＮＤＡＲＹ空間モードのアドレスであると判定し（ステップＳ１５４）、処理が終了する。
【０１３０】
ＡＳ＝０１の場合（ステップＳ１５２で“０１”）、判定部２２は、２４ビットＡＲ空間モードのアドレスであると判定し（ステップＳ１５５）、処理が終了する。ＡＳ＝１１の場合（ステップＳ１５２で“１１”）、判定部２２は、２４ビットＨＯＭＥ空間モードのアドレスであると判定し（ステップＳ１５６）、処理が終了する。
【０１３１】
ステップＳ１５１において、Ａ＝１の場合（ステップＳ１５１でＮｏ）、判定部２２は、ビット１６〜ビット１７（ＡＳ）を確認する（ステップＳ１５７）。
【０１３２】
ＡＳ＝００の場合（ステップＳ１５７で“００”）、判定部２２は、３１ビットＰＲＩＭＡＲＹ空間モードのアドレスであると判定し（ステップＳ１５８）、処理が終了する。ＡＳ＝１０の場合（ステップＳ１５７で“１０”）、判定部２２は、３１ビットＳＥＣＯＮＤＡＲＹ空間モードのアドレスであると判定し（ステップＳ１５９）、処理が終了する。
【０１３３】
ＡＳ＝０１の場合（ステップＳ１５７で“０１”）、判定部２２は、３１ビットＡＲ空間モードのアドレスであると判定し（ステップＳ１６０）、処理が終了する。ＡＳ＝１１の場合（ステップＳ１５７で“１１”）、判定部２２は、３１ビットＨＯＭＥ空間モードのアドレスであると判定し（ステップＳ１６１）、処理が終了する。
【０１３４】
以上のように、４０ビット実アドレス専用命令（後述）等の特殊な命令を除いた、一般命令のオペランドアドレス空間は、ＰＳＷ２４１の設定値によって決定される。
【０１３５】
〔１−２−２〕動的アドレス変換（ＤＡＴ）
（ＤＡＴで使用されるテーブルフォーマットの説明）
動的アドレス変換（ＤＡＴ）は、仮想アドレスを実アドレスに変換する変換機構であり、例えば、変換部２３により実現される。変換部２３は、制御レジスタ、例えば、第２記憶部の一例であるＣＲ２４３（図２参照）に設定されたＳＴＤ（Segment Table Descriptor）を起点に、セグメントテーブル２５、ページテーブル２６を検索して、実アドレスを求める。なお、セグメントテーブル２５及びページテーブル２６は、第３ビットモード（例えば３２ビットモード）で利用可能な仮想記憶領域とメモリ１２の実記憶領域との対応関係を示す変換情報又はアドレス変換テーブルの一例である。
【０１３６】
図１４は、２４／３１／３２ビット仮想アドレスフォーマットの一例を示す図である。図１４に示すように、各仮想アドレスは、ＳＸ、ＰＸ、ＢＸのビット領域を有する。
【０１３７】
＜ＳＸ＞
ＳＸは、動的アドレス変換の際に、ＳＸと同じ番号のセグメントテーブル２５エントリ（ＳＴＥ；Segment Table Entry）を検索するために利用される。２４ビット仮想アドレスでは、ビット８〜ビット１１がＳＸとなり、２４ビット仮想アドレスでは、ビット１〜ビット１１がＳＸとなる。３２ビット仮想アドレスでは、仮想アドレスが３２ビットに拡張されることで、ＳＸがビット０〜ビット１１の１２ビットに拡張される。
【０１３８】
＜ＰＸ（ビット１２〜１９）＞
ＰＸは、動的アドレス変換の際に、ＰＸと同じ番号のページテーブル２６エントリ（ＰＴＥ；Page Table Entry）を検索するために利用される。
【０１３９】
＜ＢＸ（ビット２０〜３１）＞
ＢＸは、動的アドレス変換により求められる実アドレスの下位１２ビットに相当する。
【０１４０】
なお、仮想アドレスのビット数によらず、ＰＸ及びＢＸのビット幅に変化はない。
【０１４１】
図１５は、ＳＴＤフォーマットの一例を示す図である。ＳＴＤは、アドレス変換テーブルの探索に用いられるセグメントテーブル２５を管理・定義する情報であり、セグメントテーブル２５の先頭アドレスやテーブルの最大エントリ番号（エントリ数）等の情報を含んでよい。図１５に示すように、ＳＴＤは、ＳＴＯ（Segment Table Origin）、ＳＴＬ（Segment Table Length）のビット領域を有する。
【０１４２】
＜ＳＴＯ（ビット１〜１９）＞
ＳＴＯは、セグメントテーブル２５の先頭アドレスを求めるために利用される。例えば、１２ビットの０をＳＴＯの右側に結合したアドレスが、セグメントテーブル２５の先頭アドレスになる。
【０１４３】
＜ＳＴＬ（ビット２５〜３１）＞
ＳＴＬは、セグメントテーブル２５の最大エントリ番号を求めるために利用される。換言すれば、ＳＴＬが設定される記憶領域は、第２ビットモード（例えば３１ビットモード）で利用可能な仮想記憶領域の容量に対応するエントリ数が設定される定義領域の一例である。なお、３２ビット仮想アドレスをサポートしない場合、例えば、ＳＴＬを１６倍して１５を加えた値が、セグメントテーブル２５の最大エントリ番号になる。
【０１４４】
一方、３２ビット仮想アドレスのＳＸビット幅拡張に伴い、セグメントテーブル２５のエントリ数は増加することになる。ＳＸを１２ビットに拡張した場合、最大エントリ番号は、４０９５（０ｘＦＦＦ）になる。また、最大エントリ番号は、ＳＴＤのＳＴＬ値×１６＋１５により決まるため、ＳＴＬの最大値は２５５（０ｘＦＦ）であり、ＳＴＬのビット幅は８ビットになる（図１６参照）。すなわち、３２ビット仮想アドレスをサポートする際には、ＳＴＬのビット幅を１ビット拡張することになる。
【０１４５】
ＳＴＤのビット２４は定義済みであるため、ビット２４をＳＴＬのビット拡張に使用できない。そこで、一実施形態では、ビット２４の代わりに、ビット２０（Ｌ）を利用することで、ＳＴＬを８ビットに拡張する。ビット２０（Ｌ）が設定される記憶領域は、拡張用領域（Ｌ）の一例である。なお、従来機能（２４／３１ビット仮想アドレス）では、ビット２０は未定義のため、ビット２０を使用しても従来機能に影響はない。
【０１４６】
図１５に例示するように、ビット２０（Ｌ）に従来の７ビットのＳＴＬを結合し、さらに、４ビットの“１１１１”（１５）を右側に結合した値が、最大セグメントテーブルエントリ（ＳＴＥ）番号になる。
【０１４７】
なお、図１７に例示するように、動的アドレス変換で使用されるＳＴＤは、それぞれのアドレス空間に応じて、参照する制御レジスタ又はアクセスレジスタ、例えばＣＲ２４３又はＡＲ２４４が異なる。なお、各レジスタのＳＴＤフォーマットは全て同様でよい。なお、アクセスレジスタ（例えばＡＲ２４４）は、ＡＲ空間へのアクセスに使用されるレジスタである。
【０１４８】
参照するレジスタは、３２ビット仮想アドレスのサポート有無に関係なく変更はないが、ＳＴＤフォーマットは、３２ビット仮想アドレスをサポートする場合、上述のように、ビット２０（Ｌ）が追加される。
【０１４９】
図１８は、ＳＴＥ／ＰＴＥフォーマットの一例を示す図である。図１８に示すように、ＳＴＥは、ＰＴＯ（Page Table Origin）、ＳＴＬのビット領域を有し、ＰＴＥは、Ｌｏｗ、Ｈｉｇｈのビット領域を有する。
【０１５０】
＜ＰＴＯ（ビット１〜２５）＞
ＰＴＯは、ページテーブル２６の先頭アドレスを求めるために利用される。例えば、６ビットの０をＰＴＯの右側に結合したアドレスが、ページテーブル２６の先頭アドレスになる。
【０１５１】
＜ＰＴＬ（ビット２８〜３１）＞
ＰＴＬは、ページテーブル２６の最大エントリ番号を求めるために利用される。例えば、ＰＴＬを１６倍して１５を加えた値が、ページテーブル２６の最大エントリ番号になる。
【０１５２】
＜Ｈｉｇｈ（ビット２４〜３１）／Ｌｏｗ（ビット０〜１９）＞
動的アドレス変換で求められる実アドレスのビット０〜ビット７がＨｉｇｈに相当し、ビット８〜ビット２７がＬｏｗに相当する。なお、４０ビット実アドレスが無効の場合、Ｈｉｇｈには０値が格納される。
【０１５３】
図１９は、４０ビット実アドレスの一例を示す図である。４０ビット実アドレスは、専用命令のオペランドアドレス、又は、ＤＡＴのページテーブル２６エントリ（ＰＴＥ）において使用される。
【０１５４】
４０ビット実アドレス専用命令は、オペランドアドレスにページ先頭を指定する場合がある。なお、１ページは例えば４ＫＢである。また、ＤＡＴのＰＴＥはページ先頭を示す。この場合、４０ビット実アドレスは、図１９（ａ）に例示するフォーマットとなる。
【０１５５】
また、４０ビット実アドレス専用命令は、２つのレジスタを結合して４０ビット実アドレスを指定する場合がある。この場合、４０ビット実アドレスは、図１９（ｂ）に例示するフォーマットとなる。
【０１５６】
（アドレス変換処理の動作例）
次に、図２０を参照して、アドレス変換処理の動作例を説明する。変換部２３は、動的アドレス変換（ＤＡＴ）によって、仮想アドレスを実アドレスに変換する。
【０１５７】
図２０に例示するように、変換部２３は、３２ビット仮想アドレスをＳＸ、ＰＸ、ＢＸの３つに分割し、ＳＸの値に一致するＳＴＥ、ＰＸの値に一致するＰＴＥ、をそれぞれ検索して、ＢＸを用いて実アドレスを求める。
【０１５８】
ＳＴＥの検索において、変換部２３は、例えばＣＲ２４３に設定されたＳＴＤを参照し、ＳＴＤのＳＴＯに基づいて、セグメントテーブル２５の先頭アドレスを特定してよい。なお、セグメントテーブル２５の最大エントリ番号は、ＳＴＤのビット２０（Ｌ）とビット２５〜ビット３１（ＳＴＬ）とを結合した８ビット値に基づき決まる。
【０１５９】
また、ＰＴＥの検索において、変換部２３は、例えば、検索して特定したＳＴＥのＰＴＯに基づいて、ページテーブル２６の先頭アドレスを特定してよい。なお、ＰＸのビット幅は変更がなく、ページテーブル２６のエントリ数は、従来機能（２４／３１ビット仮想アドレスのサポート）から増加しない。
【０１６０】
さらに、実アドレスの特定では、変換部２３は、例えば、検索して特定したＰＴＥのＨｉｇｈ及びＬｏｗ、並びに、ＢＸを結合することで、３２ビット仮想アドレスを、４０ビット実アドレスに変換してよい。
【０１６１】
なお、上述のように、３２ビット仮想アドレス機能のサポートによって、仮想アドレスのビット幅は３２ビットに拡張されるが、これに伴い、ＳＸのビット幅は１２ビットに拡張される（図１４参照）。
【０１６２】
ＳＸ拡張に伴い、セグメントテーブル２５のエントリ数を２０４８から４０９６エントリに増加させることになるが、エントリ数はＳＴＤのＳＴＬによって制限されているため、従来機能の仕様では、エントリを２０４８以上に増やすことができない。
【０１６３】
そこで、一実施形態では、上述のように、ＳＴＤにＬビットを新たに設け、エントリ数の制限を緩和することで、セグメントテーブル２５のエントリ数を増加可能にする。すなわち、最大エントリ数の計算アルゴリズムにＳＴＤのＬビットを追加することで、エントリ数を４０９６エントリまで増加させる（最大エントリ番号を４０９５（０ｘＦＦＦ）に拡大する）ことができる。
【０１６４】
図２１に例示するように、セグメントテーブル２５の最大エントリ数は、３２ビット仮想アドレス機能をサポートする際にＳＴＤのビット２０（Ｌ）とビット２５〜ビット３１（ＳＴＬ）とを結合した８ビットに対して１６倍した値になる。
【０１６５】
なお、３２ビット仮想アドレス機能未サポートの場合、ＳＴＬのビット２５〜ビット３１（ＳＴＬ）を１６倍した値が最大エントリ数となる。
【０１６６】
一方、ページテーブル２６の最大エントリ数は、３２ビット仮想アドレス機能のサポート有無に関係なく、ＳＴＥのビット２８〜ビット３１（ＰＴＬ）を１６倍した値になる。
【０１６７】
なお、ＳＴＥ及びＰＴＥの両エントリとも、仮想アドレスのＳＸ又はＰＸが最大エントリ数以上の値になると、変換例外として動的アドレス変換が失敗する。
【０１６８】
このように、変換部２３は、アドレス変換テーブルと、結合アドレス（ビット３２〜ビット６３）と、に基づき、仮想アドレスをメモリ１２の実アドレスに変換するアドレス変換部の一例である。これにより、アクセス部としての処理部２１は、変換部２３が変換した実アドレスにアクセスすることができる。
【０１６９】
また、変換部２３は、３２ビットモードが有効の場合、ＳＴＬに設定されるエントリ数と、ＣＲ２４３の拡張用領域に設定される値と、を結合した拡張エントリ数と、アドレス変換テーブルと、結合アドレスと、に基づき、アドレス変換を行なうといえる。
【０１７０】
以上のように、３２ビット仮想アドレスを動的アドレス変換（ＤＡＴ）する際に、従来（２４／３１ビット）の動作と比較して、ＳＸのビット幅の増加に伴う、ＳＴＤのビットＬの追加、セグメントテーブル２５のエントリ数の増加、等が異なる。なお、特に言及しない点については、従来（２４／３１ビット）の動作と同様であってよい。
【０１７１】
以上のように、一実施形態に係るコンピュータシステム１では、ＰＳＷ２４１に対して、３２ビット仮想アドレスの機能の有効ビットを追加する。このようなＰＳＷフォーマットの変更により、有効ビットが１値の場合、ＣＰＵ１１は、仮想アドレスを３２ビットとして扱い、２４／３１ビットの判定用ビットをアドレスの一部として扱う。一方、有効ビットが０値の場合、ＣＰＵ１１は、従来通り、仮想アドレスを２４／３１ビットとして扱う。
【０１７２】
また、一実施形態に係るコンピュータシステム１では、アドレス空間判定に３２ビットモードを追加することにより、ＣＰＵ１１は、ＰＳＷ２４１の情報に従って、命令アドレス、及び、オペランドアドレスの仮想アドレスのビット幅を決定する。これにより、ビット幅を、従来の２４／３１ビット、及び、追加する３２ビットの３つのモードに対応させることができる。
【０１７３】
さらに、一実施形態に係るコンピュータシステム１では、ＳＴＤ内の１ビットを追加することで、アドレス変換で利用するＳＴＬを８ビットに拡張する。この拡張により、セグメントテーブル２５のエントリ数を増加させることができるようになり、仮想アドレスの３２ビット化が可能になる。
【０１７４】
〔１−３〕サポート情報について
アドレス空間のビット幅は、ＰＳＷ２４１の設定値によって決まるが、ＰＳＷ２４１の設定制御は、サポート情報に基づき行なわれてよい。
【０１７５】
図２２に例示するように、一実施形態に係る３２ビット仮想アドレス機能のサポート情報は、記憶部２４におけるＣＲ２４３（一例として、「ＣＲ０」）に格納されてよい。
【０１７６】
図２２に示すように、サポート情報は、例えば、ＣＲ２４３（ＣＲ０）における、ビット２７（ＶＡ３２）に設定されてよい。ＶＡ３２が０値の場合、３２ビット仮想アドレス機能は無効を示し、アドレス空間は、従来機能（２４／３１ビット）で動作する。一方、ＶＡ３２が１値の場合、３２ビット仮想アドレス機能は有効になり、アドレス空間は、従来機能＋新機能、すなわち、２４／３１／３２ビットで動作する。
【０１７７】
サポート情報に３２ビット仮想アドレス機能を追加することで、ＰＳＷフォーマットやアドレス変換テーブルの最大エントリ数の計算等における、ハードウェア（例えば判定部２２や変換部２３の回路ロジック）の動作切り替えが可能になる。
【０１７８】
また、ＯＳや各アプリケーションは、ＶＡ３２にサポート情報を設定することで、従来互換モードや３２ビットアドレス空間モードを使い分けることができる。
【０１７９】
〔１−４〕ソフトウェア（ＳＷ；Software）設定について
上述のように、ＯＳやアプリケーションは、ＣＲ０やＰＳＷ２４１の設定によって、アドレス空間を２４ビット／３１ビット／３２ビットに切り替えることができる。なお、システム全体を従来互換モードで動作させたい場合は、ＣＲ０のサポート情報を無効に設定すればよい。以下の説明では、ＣＰＵ１１の処理部２１が、メモリ１２に格納されたプログラムを実行することにより、後述する各種命令を実行するものとする。
【０１８０】
図２３は、処理部２１の機能構成例を示す図である。図２３に示すように、処理部２１は、例示的に、属性判定部２１１、設定部２１２、及び、命令実行部２１３をそなえてよい。
【０１８１】
属性判定部２１１は、ＣＰＵ命令実行権を与えるアプリケーション、例えば命令実行部２１３による実行対象となるアプリケーションの属性を判定する。属性とは、例えば、アプリケーションが動作（対応）するアドレスモード（ビットモード）であり、２４ビットモード、３１ビットモード、３２ビットモード等が挙げられる。
【０１８２】
なお、属性判定部２１１は、記憶部２４のＣＲ０のサポート情報が無効（ＣＲ０のＶＡ３２＝０）の場合には、アプリケーションの属性が３２ビットモードであっても、３１（又は２４）ビットモードとして判定してもよい。また、属性判定部２１１は、ＣＰＵ命令実行権を与えるＯＳの属性を判定してもよい。
【０１８３】
このように、属性判定部２１１は、ＣＰＵ１１による命令の実行対象のプログラムが動作するビットモードを判定する判定部の一例である。
【０１８４】
設定部２１２は、アプリケーション（又はＯＳ）にＣＰＵ命令実行権を与える場合、属性判定部２１１が判定した属性に応じて、記憶部２４のＰＳＷ２４１に対して以下の設定を行なってよい。
【０１８５】
・属性が３２ビットモードの場合、設定部２１２は、ＡＸビット＝１（有効）に設定する。
【０１８６】
・属性が３１ビットモードの場合、設定部２１２は、ＡＸビット＝０（無効）、且つ、Ａビット＝１（有効）に設定する。
【０１８７】
・属性が２４ビットモードの場合、設定部２１２は、ＡＸビット＝０（無効）、且つ、Ａビット＝０（無効）に設定する。
【０１８８】
また、設定部２１２は、ＰＳＷ２４１のアドレス領域に対して、命令アドレスやオペランドアドレスを設定してよい。このとき、属性が３２ビットモードの場合には、Ａビットに拡張アドレス（３２ビット仮想アドレス）の一部（拡張分）を設定し、Ａビットをアドレスの一部として利用してよい。
【０１８９】
このように、設定部２１２は、属性判定部２１１が判定したビットモードが３２ビットモードの場合、ＰＳＷ２４１に対して、ＡＸビットに有効を示す情報を設定し、Ａビットとアドレス領域とに結合アドレスを設定するといえる。
【０１９０】
属性判定部２１１及び設定部２１２により、命令実行部２１３の処理に先立って、３２ビットモードに係る上述した処理を行なうためのＰＳＷ２４１の設定を、プログラム（例えばＯＳやアプリケーション）ごとに、確実に行なうことができる。
【０１９１】
命令実行部２１３は、メモリ１２の一例であるメモリ部２９のアドレス空間を利用して、ＣＰＵ命令実行権を与えるアプリケーション（又はＯＳ）の命令を実行する。
【０１９２】
図２４は、ソフトウェアの設定例を示す図である。図２４に例示するように、ＣＲ０のサポート情報を無効とすることでシステム＃１は従来互換モードとして動作し、ＣＲ０のサポート情報を有効とすることでシステム＃２は３２ビット拡張モードとして動作する。なお、「システム」とは、例えば、１つのＣＰＵ１１、１つのクラスタ１０、或いは１つのＶＭ（Virtual Machine）等により動作するコンピュータを意味してよい。
【０１９３】
図２４の例において、システム＃１では、カーネル、アプリケーション＃Ａ及び＃Ｂは、２４ビット又は３１ビットモードで動作する。一方、システム＃２では、カーネルは３２ビットモードで動作し、アプリケーション＃Ａ及び＃Ｂは２４ビット又は３１ビットモードで動作する。
【０１９４】
命令実行部２１３は、図２４に例示するように、ＣＲ０及びＰＳＷ２４１の設定値に基づくアドレスモードにより、カーネル及びアプリケーションの命令を実行してよい。
【０１９５】
命令実行部２１３による命令の実行においては、図４に例示するように、判定部２２及び変換部２３による上述したアドレス空間判定処理やアドレス変換処理が、設定部２１２により設定された制御情報に基づき実行されてよい。
【０１９６】
なお、メモリ部２９には、ＣＰＵ１１（例えば処理部２１）の各種機能の全部若しくは一部を実現するプログラムが格納されてもよい。例えば、ＣＰＵ１１は、Ｉ／Ｏ装置１６、又は、図示しない記録媒体に格納されたプログラムを読み出し、メモリ部２９に展開して実行することにより、処理部２１としての機能を実現してよい。処理部２１としての機能には、上述した、属性判定部２１１、設定部２１２、及び命令実行部２１３の機能が含まれてよい。なお、コンピュータシステム１は、記録媒体からプログラムを読み出すために、アダプタ、カードリーダ、ドライブ装置、等の種々の装置をそなえてもよい。
【０１９７】
記録媒体としては、例示的に、磁気／光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気／光ディスクとしては、例示的に、フレキシブルディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク、ＨＶＤ（Holographic Versatile Disc）等が挙げられる。フラッシュメモリとしては、例示的に、ＵＳＢメモリやＳＤカード等の半導体メモリが挙げられる。なお、ＣＤとしては、例示的に、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等が挙げられる。また、ＤＶＤとしては、例示的に、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等が挙げられる。
【０１９８】
なお、処理部２１としての機能は、ソフトウェアに代えて、例えば、処理回路等のハードウェアにより実現されてもよい。
【０１９９】
ところで、図２４に示すように、ＯＳやアプリケーションによって、アドレス空間が異なるため、図２５に示すように、ＯＳやアプリケーション間のアドレス空間の切り替えが発生する。アドレス空間を切り替えるアドレス空間切り替え命令としては、例えば、ＰＣ（PROGRAM CALL）命令、ＢＡＫＲ（BRANCH AND STACK）命令、ＰＴ（PROGRAM TRANSFER）命令、ＰＲ（PROGRAM RETURN）命令等が挙げられる。
【０２００】
一実施形態では、アドレス空間切り替え命令に対して、３２ビット仮想アドレスに関する情報を追加することで、３２ビット仮想アドレスモードへの切り替えを可能にする。以下、各種命令の内容、及び、命令実行部２１３による各種命令実行の一例を説明する。
【０２０１】
＜ＰＣ（PROGRAM CALL）命令＞
図２６は、ＰＣ命令の一例を示す図であり、図２７は、ＰＣ命令の動作の一例を示す図である。ＰＣ命令は、図２７に示すように、現行のＣＰＵ環境（ＰＳＷ２４１、ＧＲ２４２、ＣＲ２４３等）の内容をメモリ１２のスタック領域２８（図３参照）に保存しつつ、第２オペランドに指定されたEntry-Tableエントリの内容を、新規のＣＰＵ環境に反映する。例えば、処理部２１は、ＡＳ情報テーブル２７の情報のうち、ＫＭビット、ＩＡビット、及びＡＸビットの情報をＰＳＷ２４１に、ＡＳビットの情報をＣＲ２４３に、それぞれ反映する。なお、ＫＭは、PSW-key Maskの略称であり、ＩＡは、Instruction Addressの略称であり、ＡＳは、Address Space Numberの略称である。
【０２０２】
一実施形態では、３２ビット仮想アドレス機能のサポートによって、Entry-Tableエントリのフォーマットを変更する。例えば、図２８に示すように、Entry-TableエントリのＷｏｒｄ３にビット１６（ＡＸ）を追加して、３２ビット仮想アドレスモードの指定を可能にする。なお、定義前のＡＸビットは０値であるため、従来機能に影響はない。
【０２０３】
図２９は、ＰＣ命令の動作パターンの一例を示す図である。ＰＣ命令は、Entry-Tableエントリの内容をＰＳＷ２４１に反映する。このため、３２ビット仮想アドレス機能のサポート（ＡＸビットの追加）によって、図２９（ａ）及び図２９（ｂ）に示すように、設定パターンがＡＸ＝１の場合とＡＸ＝０の場合との２パターンに増える。
【０２０４】
＜ＢＡＫＲ（BRANCH AND STACK）命令＞
図３０は、ＢＡＫＲ命令の一例を示す図であり、図３１は、ＢＡＫＲ命令の動作の一例を示す図である。ＢＡＫＲ命令は、図３１に示すように、現行のＣＰＵ環境及び汎用レジスタ（Ｒ１）の内容をメモリ１２のスタック領域２８（図３参照）に保存する。また、ＢＡＫＲ命令は、汎用レジスタ（Ｒ２）で指定したアドレスを、新規のＰＳＷ２４１の命令アドレスに反映する。汎用レジスタ（Ｒ１）にはReturn Addressが設定され、汎用レジスタ（Ｒ２）にはBranch Addressが設定される。なお、汎用レジスタ（Ｒ１、Ｒ２）として、それぞれ、ＧＲ２４２が利用されてもよい。
【０２０５】
例えば、処理部２１は、ＢＡＫＲ命令に対して、指定するオペランド（Ｒ１）にＡＸビットを設けて、Return Addressとともに、スタック領域２８内のＰＳＷに反映する。スタック領域２８におけるスタック情報は、ＰＲ命令実行時に、ＰＳＷ、ＧＲ、ＣＲ等の復旧情報として使用されるため、そのタイミングで３２ビット仮想アドレスモードに変更される。なお、Return Addressは偶数番地のため、定義前のオペランド（Ｒ１）のＡＸビットは０値が保証されており、従来機能に影響を与えない。
【０２０６】
一実施形態では、３２ビット仮想アドレス機能のサポートによって、汎用レジスタ（Ｒ１）のフォーマットを変更する。図３２及び図３３は、それぞれ、ＢＡＫＲ命令の第１オペランド及び第２オペランドの一例を示す図である。
【０２０７】
例えば、図３２に示すように、汎用レジスタ（Ｒ１）にビット３０（ＡＸ）を追加して、３２ビット仮想アドレスモードの指定を可能にする。
【０２０８】
また、図３３に例示するように、処理部２１は、汎用レジスタ（Ｒ２）の内容をＰＳＷ２４１の命令アドレスに反映する。反映の範囲は、図３３（ａ）〜図３３（ｃ）に示すように、ＰＳＷ２４１のビット３０（ＡＸ）の値とビット３２（Ａ）の値とにより変わる。
【０２０９】
・ＰＳＷ［ＡＸ］＝１の場合
３２ビット仮想アドレスモードが有効の場合、図３３（ａ）に示すように、汎用レジスタ（Ｒ２）のBranch Address（０ビット〜３１ビット）は、ＰＳＷ２４１のInstruction Address（３２ビット〜６３ビット）にセットされる。
【０２１０】
・ＰＳＷ［ＡＸ，Ａ］＝０，１の場合
３２ビット仮想アドレスモードが無効であり、３１ビットモードである場合、図３３（ｂ）に示すように、汎用レジスタ（Ｒ２）のBranch Address（１ビット〜３１ビット）は、ＰＳＷ２４１のInstruction Address（３３ビット〜６３ビット）にセットされる。
【０２１１】
・ＰＳＷ［ＡＸ，Ａ］＝０，０の場合
３２ビット仮想アドレスモードが無効であり、２４ビットモードである場合、図３３（ｃ）に示すように、汎用レジスタ（Ｒ２）のBranch Address（８ビット〜３１ビット）は、ＰＳＷ２４１のInstruction Address（４０ビット〜６３ビット）にセットされる。なお、ＰＳＷ２４１の３３ビット〜３９ビットは０値に設定される。
【０２１２】
＜ＰＴ（PROGRAM TRANSFER）命令＞
図３４は、ＰＴ命令の一例を示す図であり、図３５は、ＰＴ命令の動作の一例を示す図である。ＰＴ命令は、図３５に示すように、汎用レジスタ（Ｒ１及びＲ２）の内容を、新規のＣＰＵ環境（ＰＳＷ２４１やＣＲ２４３）に反映する。例えば、処理部２１は、汎用レジスタ（Ｒ１）に設定されるＫＭビット、ＡＳビットをＣＲ２４３に、汎用レジスタ（Ｒ２）に設定されるＩＡビットをＰＳＷ２４１に、それぞれ反映する。
【０２１３】
例えば、処理部２１は、ＰＴ命令に対して、指定するオペランド（Ｒ２）にＡＸビットを設けて、ＰＳＷ２４１に反映する。ＩＡは偶数番地のため、定義前のオペランド（Ｒ２）のＡＸビットは０値が保証されており、従来機能に影響を与えない。
【０２１４】
一実施形態では、３２ビット仮想アドレス機能のサポートによって、新たに汎用レジスタ（Ｒ２＋１）を追加してよい。図３６は、ＰＴ命令のオペランドフォーマットの一例を示す図である。図３６に示すように、汎用レジスタ（Ｒ２＋１）のビット０（ＡＸ）によって、３２ビット仮想アドレスモードの指定が可能にする。
【０２１５】
＜ＰＲ（PROGRAM RETURN）命令＞
図３７は、ＰＲ命令の一例を示す図であり、図３８は、ＰＲ命令の動作の一例を示す図である。ＰＲ命令は、スタック領域２８に保存されている情報を読み出し、ＣＰＵ環境（ＰＳＷ２４１、ＧＲ２４２、ＣＲ２４３等）に反映する。スタック領域２８には、ＰＳＷ２４１が保存されているため、３２ビット仮想アドレスモードの情報も反映される。
【０２１６】
このように、ＰＲ命令は、スタック領域２８のスタック情報からＰＳＷ２４１、ＧＲ２４２、ＣＲ２４３等を復旧する。
【０２１７】
上述のように、ＰＣ命令及びＢＡＫＲ命令等への対応により、スタック情報内にＡＸビット情報が格納できるようになったため、当該ＡＸビット情報を用いて、ＰＲ命令に３２ビット仮想アドレスモードの設定が可能となる。
【０２１８】
＜一般命令＞
一実施形態では、３２ビット仮想アドレス機能のサポートによって、図３９に例示するように、いくつかの一般命令の処理が変更される。
【０２１９】
＜制御命令＞
一実施形態では、３２ビット仮想アドレス機能のサポートによって、図４０に例示するように、いくつかの制御命令の処理が変更される。なお、制御命令には、上述したＰＣ命令、ＢＡＫＲ命令、ＰＴ命令、ＰＲ命令等が含まれる。
【０２２０】
以上のように、命令実行部２１３、換言すれば、アクセス部としての処理部２１は、ＣＰＵ１１による命令の実行対象のプログラムを切り替える際に、切り替えを指示する命令に、３２モードの有効又は無効を示す情報（ＡＸ）を含めるのである。これにより、アドレス空間の切り替えを効率的に、また、正確に実現することが可能となる。
【０２２１】
〔１−５〕チャネルサブシステム
次に、一実施形態に係るチャネルサブシステム１３について説明する。
【０２２２】
ＣＰＵ１１がＩ／Ｏ起動命令を実行すると、処理はチャネルサブシステム１３に移行する。Ｉ／Ｏ起動命令のオペランドアドレス先には、ＯＲＢ（Operation Request Block）があり、Ｉ／Ｏ装置１６に対する指示内容が格納されている。チャネルサブシステム１３は、制御情報の一例としてのＯＲＢの内容に従い、Ｉ／Ｏ装置１６に対して命令を実行する。チャネルサブシステム１３による命令の実行処理は、ＰＳＷ２４１に変えてＯＲＢが用いられる点、アドレスの種類、命令の実行対象等は異なるものの、これらの点以外については、基本的にＣＰＵ１１による命令の実行処理と同様であってよい。
【０２２３】
（構成例）
図４１に示すように、チャネルサブシステム１３は、例示的に、処理部３１、判定部３２、変換部３３、及び記憶部３４をそなえてよい。処理部３１、判定部３２、変換部３３、及び記憶部３４は、以下において言及する場合を除き、それぞれ、処理部２１、判定部２２、変換部２３、及び記憶部２４と同様であってよい。すなわち、チャネルサブシステム１３の構成及び動作については、上述したＣＰＵ１１の構成及び動作に関する説明に対して、以下において言及する内容を読み替えればよい。
【０２２４】
処理部３１は、ＣＰＵ１１からのＩ／Ｏ起動命令等の種々の命令を実行することで、Ｉ／Ｏ装置１６に対するＩ／Ｏ等を実行する。一実施形態において、処理部３１は、処理部２１と同様に、仮想記憶領域に対するアドレッシングにおいて、従来利用可能であった２４ビットモード及び３１ビットモードに加えて、３２ビットモードを拡張的に利用可能とする。換言すれば、チャネルサブシステム１３では、２４ビットモード又は３１ビットモードで動作するＯＳやアプリケーションに対応した上で、さらに、３２ビットモードで動作するＯＳやアプリケーションにも対応することができる。
【０２２５】
判定部３２は、ＣＣＷ（Channel Command Words）アドレスやデータアドレスのアドレス空間の判定を行なう。例えば、判定部３２は、２４ビット、３１ビット、及び３２ビットのアドレス空間の判定を行なってよい。
【０２２６】
変換部３３は、判定部３２により判定されたアドレス空間に従ってＣＣＷアドレスやデータアドレスの変換を行なう。処理部３１は、変換部３３により変換されたアドレスに基づき処理を行なってよい。
【０２２７】
なお、例えば、処理部３１、判定部３２、変換部３３、及び複数の記憶部３４は、それぞれ、処理回路、判定回路、変換回路、及び複数のレジスタ、等のハードウェアによって実現されてよい。変換回路としての変換部３３は、例えば、チャネルＤＡＴを有する回路であってもよい。レジスタとしての複数の記憶部３４には、例えば、ＯＲＢデータの記憶（保存）領域３４１、及び、ＣＣＷアドレスの記憶（保存）領域３４２が含まれてよい。
【０２２８】
（チャネルサブシステムの処理について）
次に、図４２を参照して、チャネルサブシステム１３の命令実行処理の動作例を説明する。チャネルサブシステム１３は、ＯＲＢの内容に従って１命令ずつ実行する。図４２は、チャネルサブシステム１３による１命令の実行手順を示す。
【０２２９】
チャネルサブシステム１３の判定部３２は、ＣＰＵ１１からのＩ／Ｏ起動命令（入出力指示）に含まれるＯＲＢのフォーマットをチェックし（ステップＳ３１）、ＣＣＷアドレスのアドレス空間の判定を行なう。チャネルサブシステム１３の処理部３１は、ＣＣＷアドレスのアクセスを行なう（ステップＳ３２）。チャネルサブシステム１３の変換部３３は、アドレスの変換（チャネルＤＡＴ）を行なう（ステップＳ３３）。そして、処理部３１は、各種命令コードの処理を行なう（ステップＳ３４）。
【０２３０】
また、判定部３２は、データアドレスのアドレス空間の判定を行ない、処理部３１は、データアドレスのアクセスを行なう（ステップＳ３５）。変換部３３は、アドレスの変換（チャネルＤＡＴ）を行なう（ステップＳ３６）。処理部３１は、次のＣＣＷに以降、又は、ＣＰＵ１１に対する完了割り込みを行ない（ステップＳ３７）、１命令の実行処理が終了する。
【０２３１】
（ＣＣＷアドレス及びデータアドレスのアクセスについて）
次に、処理部３１及び判定部３２によるＣＣＷアドレス及びデータアドレスのアクセスについて説明する。
【０２３２】
図４３に例示するように、ＣＰＵ１１は、ＰＳＷ２４１の命令アドレス先であるメモリ１２の記憶領域に格納されたＩ／Ｏ起動命令を読み出し、読み出したＩ／Ｏ起動命令を実行する。Ｉ／Ｏ起動命令の実行により、チャネルサブシステム１３の処理が実行される。
【０２３３】
Ｉ／Ｏ起動命令で指定されるＯＲＢには、ＣＣＷ先頭アドレスが存在し、ＣＣＷには、Ｉ／Ｏ装置１６への命令と送受信させるデータのアドレスとが格納されている。ＣＣＷは複数存在してよく、処理部３１は、複数のＣＣＷにより、Ｉ／Ｏ装置１６に対し、複数の命令を実行させることができる。例えば、処理部３１は、Ｉ／Ｏ装置１６への命令を、先頭のＣＣＷから順番に１つずつ実行していき、全てのＣＣＷの処理が完了すると、ＣＰＵ１１に対して完了割り込みを発行する。
【０２３４】
次に、図４２に示す命令実行処理の実行手順に沿って、チャネルサブシステム１３の処理の詳細を説明する。
【０２３５】
（ＯＲＢフォーマットの説明）
ＯＲＢには、アドレス空間情報、及び、ＣＣＷの先頭アドレスが格納されてよく、チャネルサブシステム１３は、ＯＲＢの情報に従ってＣＣＷにアクセスしてよい。
【０２３６】
ここで、一実施形態に係るＯＲＢには、３２ビット仮想アドレスモードの有効ビットであるＡＸビットが追加されてよい。チャネルサブシステム１３は、ＡＸの値によって、３２ビット仮想アドレスを制御してよく、これにより、ＯＲＢのＣＣＷアドレス、及び、各ＣＣＷのデータアドレスのアドレス空間に３２ビット仮想アドレスモードを追加することができる。
【０２３７】
ＡＸビットは、例えば、Ｗｏｒｄ１のビット３０（ＡＸ）であってよい。なお、当該変更を加える前（定義前）のＷｏｒｄ１のビット３０は、０値が設定される領域であるため、Ｗｏｒｄ１のビット３０（ＡＸ）の追加による従来機能への影響は生じない。
【０２３８】
図４４は、一実施形態に係るＯＲＢフォーマットの一例を示す図である。以下、ＯＲＢのＷｏｒｄごとの各ビット又はビット範囲について説明する。
【０２３９】
＜Ｗｏｒｄ１  ビット８（Ｆ）＞
Ｗｏｒｄ１  ビット８（Ｆ）は、ＣＣＷアドレス、及び、ＣＣＷのデータアドレスのアドレス空間情報を示す。Ｗｏｒｄ１  ビット８（Ｆ）が１値の場合、アドレス空間は３１ビットアドレスになり、０値の場合は２４ビットアドレスになる。すなわち、Ｗｏｒｄ１  ビット８（Ｆ）は、アドレス空間を２４ビットアドレス及び３１ビットアドレスのいずれか一方に決定する。
【０２４０】
＜Ｗｏｒｄ１  ビット２５〜２９＞
Ｗｏｒｄ１  ビット２５〜ビット２９には、０値が設定される。Ｗｏｒｄ１  ビット２５〜ビット２９に０値以外が設定された場合、判定部３２は、ＯＲＢフォーマットエラーとして例外を報告する。
【０２４１】
＜Ｗｏｒｄ１  ビット３０（ＡＸ）＞
Ｗｏｒｄ１  ビット３０（ＡＸ）は、３２ビット仮想アドレスモードの有効ビットを示す。Ｗｏｒｄ１  ビット３０（ＡＸ）が１値の場合、ＣＣＷアドレス、及び、ＣＣＷのデータアドレスは、３２ビットとして動作する。また、Ｗｏｒｄ１  ビット３０（ＡＸ）が０値の場合、従来通り、Ｗｏｒｄ１  ビット８（Ｆ）の値に応じて、２４／３１ビットモードとして動作する。
【０２４２】
Ｗｏｒｄ１  ビット３０（ＡＸ）が１値に設定可能となるのは、後述するＷｏｒｄ４  ビット２３（Ｖ）が１値（仮想アドレス有効）の場合に制限されてよい。なお、Ｗｏｒｄ４  ビット２３（Ｖ）が０値（仮想アドレス無効＝実アドレス）の場合に、Ｗｏｒｄ１  ビット３０（ＡＸ）が１値に設定された場合、判定部３２は、ＯＲＢフォーマットエラーとして例外を報告する。
【０２４３】
Ｗｏｒｄ１  ビット３０（ＡＸ）が設定されるフォーマット上の領域は、第３ビットモードの有効又は無効を示す情報が設定される第３設定領域の一例である。
【０２４４】
＜Ｗｏｒｄ２  ビット０〜３１（ＣＣＷアドレス）＞
Ｗｏｒｄ２  ビット０〜ビット３１又はビット１〜ビット３１は、ＣＣＷの先頭アドレスを示す。Ｗｏｒｄ１  ビット３０（ＡＸ）が０値の場合、最大３１ビット（Ｗｏｒｄ２  ビット１〜ビット３１）のアドレス指定が可能である。一方、Ｗｏｒｄ１  ビット３０（ＡＸ）が１値の場合、一実施形態では、ＣＣＷアドレスを１ビット拡張して、Ｗｏｒｄ２  ビット０〜ビット３１の３２がＣＣＷアドレスとして使用可能である。
【０２４５】
Ｗｏｒｄ２  ビット０が設定されるフォーマット上の領域は、拡張用領域の一例である。また、Ｗｏｒｄ２  ビット１〜ビット３１が設定されるフォーマット上の領域は、第１ビット又は第２ビットのビット数のアドレスが設定される入出力アドレス領域の一例である。
【０２４６】
＜Ｗｏｒｄ３（ＳＴＤ０）／Ｗｏｒｄ５（ＳＴＤ１）＞
Ｗｏｒｄ３（ＳＴＤ０）／Ｗｏｒｄ５（ＳＴＤ１）は、アドレス空間情報が仮想アドレスの場合に、仮想アドレスのアドレス変換（チャネルＤＡＴ）のＳＴＤに使用される。
【０２４７】
＜Ｗｏｒｄ４  ビット２３（Ｖ）＞
Ｗｏｒｄ４  ビット２３（Ｖ）は、ＣＣＷアドレス、及び、ＣＣＷのデータアドレスのアドレス空間情報を示す。Ｗｏｒｄ４  ビット２３（Ｖ）が１値の場合、アドレス空間は仮想アドレスとなり、Ｗｏｒｄ４  ビット２３（Ｖ）が０値の場合、アドレス空間は実アドレスになる。
【０２４８】
このように、チャネルサブシステム１３は、ＯＲＢ情報に従って、ＣＣＷアドレス、及び、データアドレスの仮想アドレスビット幅を決定してよい。ビット幅は、２４ビット／３１ビットと、３２ビットとの３つのモードに対応してよい。
【０２４９】
ＣＣＷは、例えば、６４ビットのデータ形式であり、Ｉ／Ｏ装置１６に対する命令情報が格納される。
【０２５０】
図４５は、一実施形態に係るＣＣＷフォーマットの一例を示す図である。以下、ＣＣＷの各ビット又はビット範囲について説明する。
【０２５１】
＜ビット０〜７（命令コード）＞
これらのビットには、Ｉ／Ｏ装置１６に対するＩ／Ｏ命令（読み出し（Read）や書き込み（Write））等が指定される。
【０２５２】
＜ビット１５（Ｄ）＞
ビット１５（Ｄ）は、アドレス空間情報が仮想アドレスの場合、チャネルＤＡＴでどちらのＳＴＤ（ＳＴＤ０／ＳＴＤ１）を使用するかを指定する。
【０２５３】
＜ビット１６〜３１（データ長）＞
これらのビットには、Ｉ／Ｏ命令で使用するデータの転送長（バイト）が指定される。
【０２５４】
＜ビット３２〜６３（データアドレス）＞
これらのビットには、Ｉ／Ｏ命令で使用するデータの先頭アドレスが指定される。ビット３２〜ビット６３は、最大で３２ビットのアドレス指定が可能である。３２ビット仮想アドレスの対応により、データアドレスが３２ビットに拡張されると、ＯＲＢのＡＸ＝１の場合、ＣＣＷのビット３２〜ビット６３の３２ビットがデータアドレスになる。
【０２５５】
このように、処理部３１及び判定部３２は、ＣＰＵ１１から入出力指示を受信すると、ＯＲＢに基づいて、ビットモードを判定し、３２ビットモードと判定した場合、結合アドレスに基づき、メモリ１２にアクセスする入出力アクセス部の一例である。なお、結合アドレスは、上述のように、Ｗｏｒｄ２  ビット０（拡張用領域）の値と、Ｗｏｒｄ２  ビット１〜ビット３１（入出力アドレス領域）に設定されたアドレスと、を結合した仮想アドレスであってよい。
【０２５６】
以上を総合すると、データアドレス空間は、図４６に例示するように、ＯＲＢの設定情報（例えば、Ｖ、ＡＸ、Ｆ）により特定（決定）することができ、チャネルＤＡＴで使用するＳＴＤは、ＣＣＷの設定情報（例えば、Ｄ）により特定（決定）することができる。
【０２５７】
（アドレス空間の判定処理の動作例）
次に、判定部３２によるアドレス空間の判定処理の動作例を説明する。例えば、判定部３２は、図４２のステップＳ３１に示すＯＲＢフォーマットチェック、並びに、ステップＳ３２及びＳ３５に示すＣＣＷアドレス／データアドレスのアクセス前、において、アドレス空間の判定を行なってよい。
【０２５８】
図４７は、アドレス空間判定処理の動作例を示すフローチャートである。図４７に示すように、判定部３２は、０値に定義されているビットの確認を行ない（ステップＳ４１）、０値以外が設定されていた場合（ステップＳ４１でＮｏ）、ＯＲＢフォーマットエラーとして例外を報告し（ステップＳ４２）、処理が終了する。なお、図４７に示すように、ステップＳ４１の０値チェックの対象ビットから、一実施形態においてＡＸビットが割り当てられたＷｏｒｄ１  ビット３０は除外される。
【０２５９】
０値に定義されているビットが全て０値の場合（ステップＳ４１でＹｅｓ）、判定部３２は、Ｗｏｒｄ４  ビット２３（Ｖ）を確認し、仮想アドレスモード（Ｖ＝１）か否かを判定する（ステップＳ４３）。仮想アドレスモードの場合（ステップＳ４３でＹｅｓ）、判定部３２は、Ｗｏｒｄ１  ビット３０（ＡＸ）を確認し、３２ビットモード（ＡＸ＝１）か否かを判定する（ステップＳ４４）。
【０２６０】
３２ビットモードの場合（ステップＳ４４でＹｅｓ）、判定部３２は、３２ビット仮想アドレスモードであると判定し（ステップＳ４５）、処理が終了する。この場合、Ｗｏｒｄ２  ビット０は、ＣＣＷアドレスの一部として扱われる。
【０２６１】
３２ビットモードではない（ＡＸ＝０）場合（ステップＳ４４でＮｏ）、判定部３２は、Ｗｏｒｄ１  ビット８（Ｆ）を確認し、３１ビットモード（Ｆ＝１）か否かを判定する（ステップＳ４６）。
【０２６２】
３１ビットモードの場合（ステップＳ４６でＹｅｓ）、判定部３２は、３１ビット仮想アドレスモードであると判定し（ステップＳ４７）、処理が終了する。
【０２６３】
３１ビットモードではない（Ａ＝０）場合（ステップＳ４６でＮｏ）、判定部３２は、２４ビット仮想アドレスモードであると判定し（ステップＳ４８）、処理が終了する。
【０２６４】
一方、ステップＳ４３において、実アドレスモード（Ｖ＝０）の場合（ステップＳ４３でＮｏ）、判定部３２は、Ｗｏｒｄ１  ビット３０（ＡＸ）を確認し、３２ビットモード（ＡＸ＝１）か否かを判定する（ステップＳ４９）。
【０２６５】
３２ビットモードの場合（ステップＳ４９でＹｅｓ）、判定部３２は、ＯＲＢフォーマットエラーとして例外を報告し（ステップＳ４２）、処理が終了する。実アドレスモードの場合、Ｗｏｒｄ１  ビット３０（ＡＸ）は０値であるという制限（定義）に違反しているためである。
【０２６６】
３２ビットモードではない（ＡＸ＝０）場合（ステップＳ４９でＮｏ）、判定部３２は、Ｗｏｒｄ１  ビット８（Ｆ）を確認し、３１ビットモード（Ｆ＝１）か否かを判定する（ステップＳ５０）。
【０２６７】
３１ビットモードの場合（ステップＳ５０でＹｅｓ）、判定部３２は、３１ビット実アドレスモードであると判定し（ステップＳ５１）、処理が終了する。
【０２６８】
３１ビットモードではない（Ｆ＝０）場合（ステップＳ５０でＮｏ）、判定部３２は、２４ビット実アドレスモードであると判定し（ステップＳ５２）、処理が終了する。
【０２６９】
（アドレス空間の判定処理のより詳細な又は代替の動作例）
次に、アドレス空間の判定処理のより詳細な、又は、代替となる動作例を説明する。図４８〜図５０は、ＯＲＢフォーマットチェック処理、ＣＣＷアドレス空間判定処理、データアドレス空間判定処理、の動作例をそれぞれ示すフローチャートである。
【０２７０】
判定部３２によるＣＣＷフォーマットチェックは、３２ビット機能向けのＯＲＢフォーマット変更（図４４参照）に伴い、以下のように変更されてよい。なお、ＯＲＢフォーマットチェックは、Ｉ／Ｏ起動命令の実行タイミングで（例えば実行後に）実施されてよい。
【０２７１】
図４８に例示するように、判定部３２は、３２ビット仮想アドレス機能のサポート情報を確認した後（ステップＳ４０１）、確認結果に応じて、従来のＯＲＢフォーマットチェックと、３２ビット機能向けのＯＲＢフォーマットチェックと、に分岐してよい。
【０２７２】
３２ビット仮想アドレス機能をサポートとする場合（ステップＳ４０１でＹｅｓ）、判定部３２は、３２ビット機能向けのＯＲＢフォーマットチェックとして、ステップＳ４０２〜Ｓ４０６を実行してよい。なお、ステップＳ４０２、Ｓ４０３、Ｓ４０４は、図４７のステップＳ４１、Ｓ４４、Ｓ４３と同様である。
【０２７３】
ステップＳ４０２、Ｓ４０４のいずれかでＮｏの場合、判定部３２は、ＯＲＢフォーマットの例外を報告し（ステップＳ４０６）、処理が終了する。ステップＳ４０３でＮｏの場合、処理がステップＳ４０８に移行する。また、ステップＳ４０１〜Ｓ４０４でいずれもＹｅｓの場合、判定部３２は、ＣＣＷ及び／又はデータアドレス空間の判定処理を行ない（ステップＳ４０５）、処理が終了する。
【０２７４】
３２ビット仮想アドレス機能をサポートとしない場合（ステップＳ４０１でＮｏ）、判定部３２は、従来のＯＲＢフォーマットチェックとして、ステップＳ４０７〜Ｓ４１１を実行してよい。
【０２７５】
判定部３２は、Ｗｏｒｄ１  ビット３０（ＡＸ）を含む０値が定義されたビットの確認を行ない（ステップＳ４０７）、全て０値であれば（ステップＳ４０７でＹｅｓ）、Ｗｏｒｄ１  ビット８（Ｆ）が０値であるか否かを判定する（ステップＳ４０８）。
【０２７６】
Ｆ＝０の場合（ステップＳ４０８でＮｏ）、判定部３２は、Ｗｏｒｄ２  ビット０〜ビット７がいずれも０値か否かを判定する（ステップＳ４０９）。Ｗｏｒｄ２  ビット０〜ビット７がいずれも０値の場合（ステップＳ４０９でＹｅｓ）、処理がステップＳ４０５に移行する。
【０２７７】
Ｆ＝１の場合（ステップＳ４０８でＹｅｓ）、判定部３２は、Ｗｏｒｄ２  ビット０が０値か否かを判定する（ステップＳ４１０）。Ｗｏｒｄ２  ビット０が０値の場合（ステップＳ４１０でＹｅｓ）、処理がステップＳ４０５に移行する。
【０２７８】
ステップＳ４０７、Ｓ４０９、Ｓ４１０のいずれかでＮｏの場合、判定部３２は、ＯＲＢフォーマットの例外を報告し（ステップＳ４１１）、処理が終了する。
【０２７９】
次に、ステップＳ４０５に示す、ＣＣＷアドレスのアドレス空間判定処理（図４９）、及び、データアドレスのアドレス空間判定処理（図５０）を説明する。
【０２８０】
＜ＣＣＷアドレスのアドレス空間判定処理＞
ＣＣＷアドレスのアドレス空間は、ＰＳＷ２４１の設定値に依存せず、ＯＲＢの設定情報によって決定される。
【０２８１】
図４９に例示するように、判定部３２は、ＯＲＢのＶ＝０か否かを判定し（ステップＳ４２１）、Ｖ＝０（実アドレス）の場合（ステップＳ４２１でＹｅｓ）、Ｆ＝１か否かを判定する（ステップＳ４２２）。
【０２８２】
Ｆ＝１の場合（ステップＳ４２２でＹｅｓ）、判定部３２は、ＣＣＷアドレスが３１ビット実アドレスであると判定し（ステップＳ４２３）、処理が終了する。
【０２８３】
Ｆ＝０の場合（ステップＳ４２２でＮｏ）、判定部３２は、ＣＣＷアドレスが２４ビット実アドレスであると判定し（ステップＳ４２４）、処理が終了する。
【０２８４】
ステップＳ４２１において、Ｖ＝１（仮想アドレス）の場合（ステップＳ４２１でＮｏ）、判定部３２は、ＡＸ＝１か否かを判定する（ステップＳ４２５）。ＡＸ＝１の場合（ステップＳ４２５でＹｅｓ）、判定部３２は、ＣＣＷアドレスが３２ビット仮想アドレス（ＯＲＢ  ＳＴＤ０）であると判定し（ステップＳ４２６）、処理が終了する。
【０２８５】
ＡＸ＝０の場合（ステップＳ４２５でＮｏ）、判定部３２は、Ｆ＝１か否かを判定する（ステップＳ４２７）。Ｆ＝１の場合（ステップＳ４２７でＹｅｓ）、判定部３２は、ＣＣＷアドレスが３１ビット仮想アドレス（ＯＲＢ  ＳＴＤ０）であると判定し（ステップＳ４２８）、処理が終了する。
【０２８６】
Ｆ＝０ではない場合（ステップＳ４２７でＮｏ）、判定部３２は、ＣＣＷアドレスが２４ビット仮想アドレス（ＯＲＢ  ＳＴＤ０）であると判定し（ステップＳ４２９）、処理が終了する。
【０２８７】
以上のように、ＣＣＷアドレス空間は、ＯＲＢの設定によって決定される。
【０２８８】
＜データアドレスのアドレス空間判定処理＞
ＣＣＷに存在するデータアドレスのアドレス空間は、ＰＳＷ２４１の設定値に依存せずに、ＯＲＢ及びＣＣＷの設定情報により決定される。
【０２８９】
図５０に例示するように、判定部３２は、ＯＲＢのＶ＝０か否かを判定し（ステップＳ４３１）、Ｖ＝０（実アドレス）の場合（ステップＳ４３１でＹｅｓ）、Ｆ＝１か否かを判定する（ステップＳ４３２）。
【０２９０】
Ｆ＝１の場合（ステップＳ４３２でＹｅｓ）、判定部３２は、データアドレスが３１ビット実アドレスであると判定し（ステップＳ４３３）、処理が終了する。
【０２９１】
Ｆ＝０の場合（ステップＳ４３２でＮｏ）、判定部３２は、データアドレスが２４ビット実アドレスであると判定し（ステップＳ４３４）、処理が終了する。
【０２９２】
ステップＳ４３１において、Ｖ＝１（仮想アドレス）の場合（ステップＳ４３１でＮｏ）、判定部３２は、ＡＸ＝１か否かを判定する（ステップＳ４３５）。ＡＸ＝１の場合（ステップＳ４３５でＹｅｓ）、判定部３２は、ＣＣＷのＤ＝０か否かを判定する（ステップＳ４３６）。
【０２９３】
Ｄ＝０の場合（ステップＳ４３６でＹｅｓ）、判定部３２は、データアドレスが３２ビット仮想アドレス（ＯＲＢ  ＳＴＤ０）であると判定し（ステップＳ４３７）、処理が終了する。
【０２９４】
Ｄ＝１の場合（ステップＳ４３６でＮｏ）、判定部３２は、データアドレスが３２ビット仮想アドレス（ＯＲＢ  ＳＴＤ１）であると判定し（ステップＳ４３８）、処理が終了する。
【０２９５】
ステップＳ４３５において、ＡＸ＝０の場合（ステップＳ４３５でＮｏ）、判定部３２は、ＯＲＢのＦ＝１か否かを判定する（ステップＳ４３９）。Ｆ＝１の場合（ステップＳ４３９でＹｅｓ）、判定部３２は、ＣＣＷのＤ＝０か否かを判定する（ステップＳ４４０）。
【０２９６】
Ｄ＝０の場合（ステップＳ４４０でＹｅｓ）、判定部３２は、データアドレスが３１ビット仮想アドレス（ＯＲＢ  ＳＴＤ０）であると判定し（ステップＳ４４１）、処理が終了する。
【０２９７】
Ｄ＝１の場合（ステップＳ４４０でＮｏ）、判定部３２は、データアドレスが３１ビット仮想アドレス（ＯＲＢ  ＳＴＤ１）であると判定し（ステップＳ４４２）、処理が終了する。
【０２９８】
ステップＳ４３９において、Ｆ＝０の場合（ステップＳ４３９でＮｏ）、判定部３２は、データアドレスが２４ビット仮想アドレス（ＯＲＢ  ＳＴＤ０）であると判定し（ステップＳ４４３）、処理が終了する。
【０２９９】
以上のように、データアドレス空間は、ＯＲＢ及びＣＣＷの設定値によって決定される。
【０３００】
（動的アドレス変換（チャネルＤＡＴ））
＜チャネルＤＡＴで使用されるテーブルフォーマットの説明＞
チャネルＤＡＴは、チャネルサブシステム１３による動的アドレス変換である。チャネルＤＡＴは、仮想アドレスを実アドレスに変換する変換機構であり、例えば、変換部３３により実現される。変換部３３は、チャネルＤＡＴにより、セグメントテーブル２５、ページテーブル２６を検索して、ＣＣＷアドレス、及び、データアドレスを仮想アドレスから実アドレスに変換する。
【０３０１】
なお、変換部３３は、チャネルＤＡＴにおいて、ＣＰＵ１１のＰＳＷ２４１やＣＲ２４３のＳＴＤ（制御レジスタ）を使用せずに、代わりに、ＯＲＢに設定されたＳＴＤ０又はＳＴＤ１を使用して、アドレス変換を行なってよい。なお、チャネルＤＡＴでは、参照するＳＴＤが異なる点以外は、ＣＰＵ１１によるＤＡＴと同様であってよい。
【０３０２】
図５１は、３２ビットに対応したＳＴＤ０／ＳＴＤ１（ＯＲＢ）フォーマットの一例を示す図である。図５１に示すように、一実施形態においては、ＯＲＢに含まれるＳＴＤ０／ＳＴＤ１のＳＴＬを、図１５に示すＳＴＤと同様に、ビット２０（Ｌ）を利用して８ビットに拡張する。なお、ＳＴＤ０とＳＴＤ１とは、同様のフォーマットであってよい。ビット２０（Ｌ）の定義前の値は０値であるため、ビット２０（Ｌ）の追加による従来機能への影響はない。
【０３０３】
ＳＴＬの拡張によって、ＣＣＷアドレス空間及びデータアドレス空間においても、セグメントテーブル２５のエントリ数の増加が許容され、仮想アドレスの３２ビット化が可能になる。
【０３０４】
（アドレス変換処理の動作例）
次に、図５２を参照して、アドレス変換処理の動作例を説明する。変換部３３は、動的アドレス変換（チャネルＤＡＴ）によって、仮想アドレスを実アドレスに変換する。
【０３０５】
図５２に例示するように、変換部３３は、３２ビット仮想アドレスをＳＸ、ＰＸ、ＢＸの３つに分割し、ＳＸの値に一致するＳＴＥ、ＰＸの値に一致するＰＴＥ、をそれぞれ検索して、ＢＸを用いて実アドレスを求める。
【０３０６】
ＳＴＥの検索において、変換部３３は、例えばＯＲＢに設定されたＳＴＤ０又はＳＴＤ１を参照し、ＳＴＤ０又はＳＴＤ１のＳＴＯに基づいて、セグメントテーブル２５の先頭アドレスを特定してよい。なお、セグメントテーブル２５の最大エントリ番号は、ＳＴＤのビット２０（Ｌ）とビット２５〜ビット３１（ＳＴＬ）とを結合した８ビット値に基づき決まる。
【０３０７】
また、ＰＴＥの検索において、変換部３３は、例えば、検索して特定したＳＴＥのＰＴＯに基づいて、ページテーブル２６の先頭アドレスを特定してよい。なお、ＰＸのビット幅は変更がなく、ページテーブル２６のエントリ数は、従来機能（２４／３１ビット仮想アドレスのサポート）から増加しない。
【０３０８】
さらに、実アドレスの特定では、変換部３３は、例えば、検索して特定したＰＴＥのＨｉｇｈ及びＬｏｗ、並びに、ＢＸを結合することで、３２ビット仮想アドレスを、４０ビット実アドレスに変換してよい。
【０３０９】
なお、上述のように、３２ビット仮想アドレス機能のサポートによって、仮想アドレスのビット幅は３２ビットに拡張されるが、これに伴い、ＳＸのビット幅は１２ビットに拡張される（図１４参照）。
【０３１０】
ＳＸ拡張に伴い、セグメントテーブル２５のエントリ数を２０４８から４０９６エントリに増加させることになるが、エントリ数はＳＴＤ０又はＳＴＤ１のＳＴＬによって制限されているため、従来機能の仕様では、エントリを２０４８以上に増やすことができない。
【０３１１】
そこで、一実施形態では、上述のように、ＳＴＤ０及びＳＴＤ１にＬビットを新たに設け、エントリ数の制限を緩和することで、セグメントテーブル２５のエントリ数を増加可能にする。すなわち、最大エントリ数の計算アルゴリズムにＳＴＤ０及びＳＴＤ１のＬビットを追加することで、エントリ数を４０９６エントリまで増加させる（最大エントリ番号を４０９５（０ｘＦＦＦ）に拡大する）ことができる。
【０３１２】
〔１−６〕まとめ
以上のように、一実施形態に係るコンピュータシステム１によれば、仮想記憶機構を有するホストコンピュータＯＳの仮想記憶アドレッシングにおいて、従来の２４ビット／３１ビットモードに、新たに３２ビットモードを追加することができる。このとき、２４ビット／３１ビットモード用のアプリケーションへの変更を抑止し、３２ビットモード用のアプリケーションが動作可能な仮想記憶空間を提供することができる。
【０３１３】
上述した一実施形態に係る手法について、１つの側面では、３２ビットモードにより拡張された仮想記憶空間をサポートするために、仮想アドレスのモード切り替えが可能なコンピュータシステム１は、以下の構成又は動作を行なうと捉えることができる。
【０３１４】
（１）ＯＳによるＣＰＵ命令実行権を制御するアプリケーション単位の属性として付与する仮想記憶アドレスモ−ドとして、３２ビットモードを追加する。
【０３１５】
（２）ＣＰＵ１１、チャネルサブシステム１３が、ＰＳＷ２４１、ＯＲＢを用いて制御するアドレス空間情報に、新たに３２ビット仮想アドレス制御モードビット（ＡＸビット）を設け、アドレスモードの判定において、ＣＰＵ１１は、以下の処理を行なう。
【０３１６】
（２−１）判定部２２は、ＡＸビットを確認する。
【０３１７】
（２−１−Ａ）ＡＸビット＝１の場合、判定部２２は、３２ビットモードと判断し、処理部２１は、命令／オペランドアドレスのビット０〜ビット３１をアドレッシングに用いる。このとき、処理部２１は、従来の２４／３１ビットアドレス制御モードビット（Ａビット）を、アドレスの最上位ビット０に切り替え、ビット０〜ビット３１をアドレッシングに用いる。
【０３１８】
（２−１−Ｂ）ＡＸビット＝０の場合、判定部２２は、２４／３１ビットモードと判断し、２４／３１ビットモードの従来機能の互換を維持する。
【０３１９】
（２−２）ＡＸビットの確認の結果、２４／３１ビットモードと判断した場合、判定部２２は、さらにＡビットを確認する。
【０３２０】
（２−２−Ａ）Ａビット＝１の場合、判定部２２は、３１ビットモードと判断し、処理部２１は、命令／オペランドアドレスのビット１〜ビット３１をアドレッシングに用いる。
【０３２１】
（２−２−Ｂ）Ａビット＝０の場合、判定部２２は、２４ビットモードと判断し、処理部２１は、命令／オペランドアドレスのビット８〜ビット３１をアドレッシングに用いる。
【０３２２】
（３）ＯＳがアプリケーションにＣＰＵ命令実行権を与える場合、ＯＳ（処理部２１）は、アプリケーションの属性を判断する。
【０３２３】
（３−１）３２ビットモードの場合、処理部２１は、ＡＸビット＝１（有効）に設定する。
【０３２４】
（３−２）３１ビットモードの場合、処理部２１は、ＡＸビット＝０（無効）、且つ、Ａビット＝１（有効）に設定する。
【０３２５】
（３−３）２４ビットモードの場合、処理部２１は、ＡＸビット＝０（無効）、且つ、Ａビット＝０（無効）に設定する。
【０３２６】
このように、３２ビット仮想アドレスモードに対応することで、コンピュータシステム１は、ＯＳやユーザアプリケーションのメモリ領域を４ＧＢまで拡張できる。これにより、例えば、３１ビットモード（メモリ領域：２ＧＢ）の場合において不足する可能性のある１５％程度の不足容量を確保することができる。
【０３２７】
また、アドレス空間を新たに追加することを抑止しつつ、メモリ領域を拡張できる。これにより、新たなアドレス空間を追加する場合に起こるアドレス空間切り替えによるオーバヘッドの発生を抑止できる。
【０３２８】
さらに、６４ビットアーキテクチャを採用する場合のように、リソースを大きく増加させることなく、例えば、既存の未使用リソース（ビット）を活用すること等により、仮想アドレス領域を拡張できる。
【０３２９】
例えば、６４ビットアーキテクチャでは、以下のようなリソースの変更が行なわれる。
【０３３０】
・ＰＳＷが６４ビットから１２８ビットに拡張され、各種レジスタが３２ビットから６４ビットに拡張されることで、アドレスのビット幅が２４／３１ビットから６４ビットに拡張される。これにより、アドレス空間の最大領域が従来の１６ＭＢ、２ＧＢから１６ＥＢ（１ＥＢ＝１０２４×１０２４ＴＢ）まで拡大される。
【０３３１】
・各種レジスタが、従来の４バイトから８バイトに拡張される。なお、レジスタを扱う命令は、４バイト専用命令と８バイト専用命令との２種類が存在する。
【０３３２】
・ＰＳＷは、従来の６４ビットと新規の１２８ビットとの２種類が存在する。ＣＰＵは、モード切り替え命令を実行することによって、２種類のＰＳＷを切り替えることができる。
【０３３３】
・制御レジスタやプレフィックス領域、ＤＡＴテーブル、スタック領域等の制御情報は、既存の領域に代わって新規領域に移行したり、フォーマットが大幅に変更したりする。
【０３３４】
このように、ＨＷ等のリソースの追加を回避することができる。例えば、新規レジスタの追加や、レジスタのビット数の増加、新規命令の追加等のリソースを増加させることを回避しつつ、ＨＷ（例えば回路）の論理変更や、命令或いはアドレスのフォーマットのビット変更等の修正によってメモリ領域を拡張できる。
【０３３５】
また、メモリ拡張不要な従来機能（２４／３１ビット）のプログラムを、再コンパイルすることなく、そのまま流用できる。すなわち、従来互換を維持することができるため、既存プログラムのリスクを抑えることができる。
【０３３６】
例えば、ＰＳＷ２４１や制御レジスタ、プレフィックス領域、ＤＡＴテーブル、スタック領域等の制御情報のフォーマットを極力変更しないようにすることができる。３２ビット仮想アドレス機能によって追加される情報は、現状で０値として定義されているビットや未使用領域を活用して表現されるため、定義済みビットや既存領域に対する変更を抑止することができる。
【０３３７】
〔２〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０３３８】
例えば、図２に示すＣＰＵ１１が有するブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。また、図２３に示す処理部２１が有するブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。さらに、図４１に示すチャネルサブシステム１３が有するブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【０３３９】
一実施形態では、ＰＳＷ２４１、ＳＴＤ、ＯＲＢ、ＣＣＷ、ＳＴＤ０／ＳＴＤ１、ＣＲ０、各種制御命令、及び、スタック領域２８等において、それぞれ、従来機能で未定義又は未使用の特定のビットを、３２ビットモード用に利用するものとした。しかし、一実施形態に係る手法は、上記の説明で用いた「特定のビット」に限定されるものではなく、３２ビットモード用のビットとして、従来機能で未定義又は未使用のいずれのビットが使用されてもよい。
【０３４０】
また、一実施形態では、２４ビット及び３１ビットモードの従来機能に加えて、３２ビットモードを追加する手法を例に挙げて説明したが、これに限定されるものではなく、第１、第２、及び第３ビットモードとして、これらのビット以外が用いられてもよい。
【０３４１】
〔３〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【０３４２】
（付記１）
メモリと、
前記メモリと接続されたプロセッサと、をそなえ、
前記プロセッサは、
前記メモリのアドレスのビット数を第１ビットに設定する第１ビットモードと、前記ビット数を前記第１ビットよりも大きい第２ビットに設定する第２ビットモードと、のいずれか一方を示す値が設定される第１設定領域と、
前記ビット数を前記第２ビットよりも大きい第３ビットに設定する第３ビットモードの有効又は無効を示す情報が設定される第２設定領域と、
前記第１ビット又は前記第２ビットのビット数のアドレスが設定されるアドレス領域と、
をそなえる第１記憶部と、
前記第２設定領域に設定される情報が前記第３ビットモードの有効を示す場合、前記第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスするアクセス部と、
をそなえる、情報処理装置。
【０３４３】
（付記２）
前記結合アドレスは、前記メモリの仮想記憶領域の仮想アドレスであり、
前記プロセッサは、
前記第３ビットモードで利用可能な仮想記憶領域と前記メモリの実記憶領域との対応関係を示す変換情報と、前記結合アドレスと、に基づき、前記仮想アドレスを前記メモリの実アドレスに変換するアドレス変換部をそなえ、
前記アクセス部は、前記アドレス変換部が変換した前記実アドレスにアクセスする、付記１に記載の情報処理装置。
【０３４４】
（付記３）
前記プロセッサは、
前記変換情報の探索に用いられるテーブルのエントリ数であって、前記第２ビットモードで利用可能な仮想記憶領域の容量に対応する前記エントリ数が設定される定義領域と、拡張用領域と、をそなえる第２記憶部をそなえ、
前記アドレス変換部は、前記第３ビットモードが有効の場合、前記定義領域に設定される前記エントリ数と、前記第２記憶部の拡張用領域に設定される値と、を結合した拡張エントリ数と、前記変換情報と、前記結合アドレスと、に基づき、前記仮想アドレスを前記実アドレスに変換する、付記２に記載の情報処理装置。
【０３４５】
（付記４）
前記アクセス部は、前記第２設定領域に設定される情報が前記第３ビットモードの無効を示す場合、前記第１設定領域に設定される値が示す前記第１ビットモード又は前記第２ビットモードに対応するビット数のアドレスであって、前記アドレス領域に設定される前記アドレスに基づき、前記メモリにアクセスする、付記１〜３のいずれか１項に記載の情報処理装置。
【０３４６】
（付記５）
前記プロセッサによる命令の実行対象のプログラムが動作するビットモードを判定する判定部と、
前記判定部が判定したビットモードが前記第３ビットモードの場合、前記第１記憶部に対して、前記第２設定領域に前記第３ビットモードの有効を示す情報を設定し、前記第１設定領域と前記アドレス領域とに前記結合アドレスを設定する設定部と、をそなえる、付記１〜４のいずれか１項に記載の情報処理装置。
【０３４７】
（付記６）
前記アクセス部は、前記プロセッサによる命令の実行対象のプログラムを切り替える際に、前記切り替えを指示する命令に、前記第３ビットモードの有効又は無効を示す情報を含める、付記５に記載の情報処理装置。
【０３４８】
（付記７）
前記メモリと、入出力装置と、に接続された入出力プロセッサをそなえ、
前記入出力プロセッサは、
前記プロセッサから入出力指示を受信すると、前記入出力指示に含まれる制御情報であって、前記第３ビットモードの有効又は無効を示す情報が設定される第３設定領域と、拡張用領域と、前記第１ビット又は前記第２ビットのビット数のアドレスが設定される入出力アドレス領域と、をそなえる前記制御情報に基づいて、ビットモードを判定し、前記第３ビットモードと判定した場合、前記拡張用領域の値と、前記入出力アドレス領域に設定されたアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスする入出力アクセス部をそなえる、付記１〜６のいずれか１項に記載の情報処理装置。
【０３４９】
（付記８）
メモリと、前記メモリと接続されたプロセッサと、をそなえるコンピュータに、
前記プロセッサによる命令の実行対象のプログラムが動作するビットモードを判定し、
前記判定したビットモードが、前記メモリのアドレスのビット数を第１ビットに設定する第１ビットモード、前記ビット数を前記第１ビットよりも大きい第２ビットに設定する第２ビットモード、及び、前記ビット数を前記第２ビットよりも大きい第３ビットに設定する第３ビットモード、のうちの前記第３ビットモードの場合、前記第１ビットモードと前記第２ビットモードと、のいずれか一方を示す値が設定される第１設定領域と、前記第３ビットモードの有効又は無効を示す情報が設定される第２設定領域と、前記第１ビット又は前記第２ビットのビット数のアドレスが設定されるアドレス領域と、をそなえる記憶部に対して、前記第２設定領域に前記第３ビットモードの有効を示す情報を設定し、
前記第１設定領域と前記アドレス領域とに、結合アドレスを設定し、
前記第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した前記結合アドレスに基づき、前記メモリにアクセスする
処理を実行させる、情報処理プログラム。
【０３５０】
（付記９）
前記プロセッサによる命令の実行対象のプログラムを切り替える際に、前記切り替えを指示する命令に、前記第３ビットモードの有効又は無効を示す情報を含める、
処理を前記コンピュータに実行させる、付記８に記載の情報処理プログラム。
【０３５１】
（付記１０）
メモリと、前記メモリと接続されたプロセッサと、をそなえる情報処理装置における情報処理方法であって、
前記プロセッサが、
前記メモリのアドレスのビット数を第１ビットに設定する第１ビットモードと、前記ビット数を前記第１ビットよりも大きい第２ビットに設定する第２ビットモードと、のいずれか一方を示す値が設定される第１設定領域と、
前記ビット数を前記第２ビットよりも大きい第３ビットに設定する第３ビットモードの有効又は無効を示す情報が設定される第２設定領域と、
前記第１ビット又は前記第２ビットのビット数のアドレスが設定されるアドレス領域と、
をそなえる第１記憶部の前記第２設定領域に設定される情報が前記第３ビットモードの有効を示すか否かを判定し、
前記第２設定領域に設定される情報が前記第３ビットモードの有効を示す場合、前記第１設定領域に設定される値と、前記アドレス領域に設定されるアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスする、情報処理方法。
【０３５２】
（付記１１）
前記結合アドレスは、前記メモリの仮想記憶領域の仮想アドレスであり、
前記プロセッサが、前記第３ビットモードで利用可能な仮想記憶領域と前記メモリの実記憶領域との対応関係を示す変換情報と、前記結合アドレスと、に基づき、前記仮想アドレスを前記メモリの実アドレスに変換し、
前記アクセスは、前記変換した前記実アドレスにアクセスする、付記１０に記載の情報処理方法。
【０３５３】
（付記１２）
前記変換は、前記第３ビットモードが有効の場合、前記変換情報の探索に用いられるテーブルのエントリ数であって、前記第２ビットモードで利用可能な仮想記憶領域の容量に対応する前記エントリ数が設定される定義領域と、拡張用領域と、をそなえる第２記憶部の前記定義領域に設定される前記エントリ数と、前記第２記憶部の拡張用領域に設定される値と、を結合した拡張エントリ数と、前記変換情報と、前記結合アドレスと、に基づき、前記仮想アドレスを前記実アドレスに変換する、付記１１に記載の情報処理方法。
【０３５４】
（付記１３）
前記アクセスは、前記第２設定領域に設定される情報が前記第３ビットモードの無効を示す場合、前記第１設定領域に設定される値が示す前記第１ビットモード又は前記第２ビットモードに対応するビット数のアドレスであって、前記アドレス領域に設定される前記アドレスに基づき、前記メモリにアクセスする、付記１０〜１２のいずれか１項に記載の情報処理方法。
【０３５５】
（付記１４）
前記プロセッサが、
前記プロセッサによる命令の実行対象のプログラムが動作するビットモードを判定し、
前記判定したビットモードが前記第３ビットモードの場合、前記第１記憶部に対して、前記第２設定領域に前記第３ビットモードの有効を示す情報を設定し、
前記第１設定領域と前記アドレス領域とに前記結合アドレスを設定する、付記１０〜１３のいずれか１項に記載の情報処理方法。
【０３５６】
（付記１５）
前記アクセスは、前記プロセッサによる命令の実行対象のプログラムを切り替える際に、前記切り替えを指示する命令に、前記第３ビットモードの有効又は無効を示す情報を含める、付記１４に記載の情報処理方法。
【０３５７】
（付記１６）
前記情報処理装置は、前記メモリと、入出力装置と、に接続された入出力プロセッサをそなえ、
前記入出力プロセッサが、
前記プロセッサから入出力指示を受信すると、前記入出力指示に含まれる制御情報であって、前記第３ビットモードの有効又は無効を示す情報が設定される第３設定領域と、拡張用領域と、前記第１ビット又は前記第２ビットのビット数のアドレスが設定される入出力アドレス領域と、をそなえる前記制御情報に基づいて、ビットモードを判定し、
前記第３ビットモードと判定した場合、前記拡張用領域の値と、前記入出力アドレス領域に設定されたアドレスと、を結合した結合アドレスに基づき、前記メモリにアクセスする、付記１０〜１５のいずれか１項に記載の情報処理方法。
【符号の説明】
【０３５８】
１    コンピュータシステム
１０    クラスタ
１１    ＣＰＵ
１２    メモリ
１３    チャネルサブシステム
１４    スイッチ
１５    制御ユニット
１６    Ｉ／Ｏ装置
１７    システム記憶装置
２１、３１    処理部
２１１    属性判定部
２１２    設定部
２１３    命令実行部
２２、３２    判定部
２３、３３    変換部
２４、３４    記憶部
２４１    ＰＳＷ
２４２    ＧＲ
２４３    ＣＲ
２４４    ＡＲ
２５    セグメントテーブル
２６    ページテーブル
２７    アドレス空間情報テーブル
２８    スタック領域
２９    メモリ部
３４１、３４２    記憶領域
【図１】
2020024613.tif 000003
【図２】
2020024613.tif 000004
【図３】
2020024613.tif 000005
【図４】
2020024613.tif 000006
【図５】
2020024613.tif 000007
【図６】
2020024613.tif 000008
【図７】
2020024613.tif 000009
【図８】
2020024613.tif 000010
【図９】
2020024613.tif 000011
【図１０】
2020024613.tif 000012
【図１１】
2020024613.tif 000013
【図１２】
2020024613.tif 000014
【図１３】
2020024613.tif 000015
【図１４】
2020024613.tif 000016
【図１５】
2020024613.tif 000017
【図１６】
2020024613.tif 000018
【図１７】
2020024613.tif 000019
【図１８】
2020024613.tif 000020
【図１９】
2020024613.tif 000021
【図２０】
2020024613.tif 000022
【図２１】
2020024613.tif 000023
【図２２】
2020024613.tif 000024
【図２３】
2020024613.tif 000025
【図２４】
2020024613.tif 000026
【図２５】
2020024613.tif 000027
【図２６】
2020024613.tif 000028
【図２７】
2020024613.tif 000029
【図２８】
2020024613.tif 000030
【図２９】
2020024613.tif 000031
【図３０】
2020024613.tif 000032
【図３１】
2020024613.tif 000033
【図３２】
2020024613.tif 000034
【図３３】
2020024613.tif 000035
【図３４】
2020024613.tif 000036
【図３５】
2020024613.tif 000037
【図３６】
2020024613.tif 000038
【図３７】
2020024613.tif 000039
【図３８】
2020024613.tif 000040
【図３９】
2020024613.tif 000041
【図４０】
2020024613.tif 000042
【図４１】
2020024613.tif 000043
【図４２】
2020024613.tif 000044
【図４３】
2020024613.tif 000045
【図４４】
2020024613.tif 000046
【図４５】
2020024613.tif 000047
【図４６】
2020024613.tif 000048
【図４７】
2020024613.tif 000049
【図４８】
2020024613.tif 000050
【図４９】
2020024613.tif 000051
【図５０】
2020024613.tif 000052
【図５１】
2020024613.tif 000053
【図５２】
2020024613.tif 000054