(57)【特許請求の範囲】
【請求項１】
種々の処理のうちで特定の処理をそれ以外の処理よりも頻繁に実行する情報処理装置であって、
該種々の処理に対応する命令セットを実行可能な第１のプロセッサと、
該命令セットの一部或いは全てを実行可能であり該特定の処理に対応する該命令セットの一部を該第１のプロセッサより効率的に実行可能な第２のプロセッサ
を含み、該特定の処理を該第２のプロセッサが実行し該特定の処理以外の処理を該第１のプロセッサが実行し、該第１のプロセッサは汎用プロセッサであり、該第２のプロセッサは該特定の処理であるトランザクション処理を効率的に実行可能なように構成されたトランザクション処理プロセッサであることを特徴とする情報処理装置。
【請求項２】
全ての処理は最初に該第２のプロセッサに割り当てられ、該特定の処理に対応する該命令セットの一部以外の命令を実行必要な場合に、割り込みにより該第２のプロセッサから第１のプロセッサに処理を移すことを特徴とする請求項１記載の情報処理装置。
【請求項３】
全ての処理は最初に該第２のプロセッサに割り当てられ、該第２のプロセッサで実行不可能或いは効率的な実行が出来ない命令が出現した場合に、割り込みにより該第２のプロセッサから第１のプロセッサに処理を移すことを特徴とする請求項１記載の情報処理装置。
【請求項４】
該実行不可能或いは効率的な実行が出来ない命令は、浮動小数点演算命令であることを特徴とする請求項３記載の情報処理装置。
【請求項５】
該第２のプロセッサは、マルチスレッド方式及び複数のプロセッサを用いたマルチプロセッサ方式のうちの少なくとも１つの方式により処理を並列に実行することで、該特定の処理に対応する該命令セットの一部を該第１のプロセッサより効率的に実行可能であることを特徴とする請求項１記載の情報処理装置。
【請求項６】
該第１のプロセッサ及び該第２のプロセッサがメモリ空間を共有することを特徴とする請求項１記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般に情報処理装置に関し、詳しくは汎用処理及びトランザクション処理を行なう情報処理装置に関する。
【０００２】
【従来の技術】
現在の汎用高性能プロセッサは、マルチメディア処理等を含む幅広い用途に対して高い性能を発揮することが要求されるため、様々な処理に適した種々の命令を高速に実行出来るように設計されている。例えば、浮動小数点演算部を設けて、浮動少数点演算が必要な処理を高速に実行できるように構成されている。また汎用高性能プロセッサは、通常、一連の命令からなる１つのプログラムを高速に実行することに重点をおいて設計されている。例えば、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行する機能等が設けられている。
【０００３】
しかしながら、近年計算機に対する需要が特に延びているのは、トランザクション処理のシステムやウェブサーバシステム等の分野である。トランザクション処理やウェブサーバ処理で実行対象となる処理では、論理演算・整数演算が中心であり、浮動小数点演算等の複雑な処理は殆ど必要とされない。またトランザクション処理やウェブサーバ処理においては、１つのプログラムの処理を高速に実行することよりも、小規模の処理を大量かつ並列に実行する機能が重要になる。
現在の汎用高性能プロセッサは、上述のようにオールラウンドな高性能を重視して設計されているため、単純なトランザクション処理やウェブサーバ処理を実行させるためには余分な機能が多すぎる。またトランザクション処理やウェブサーバ処理では、単純な処理の大量並列実行が必要であるのに、１つのプログラムの処理を高速に実行することを重視した汎用高性能プロセッサでは、そのような要求に充分に応えることが出来ない。従って、トランザクション処理やウェブサーバ処理等を高速に実行できる情報処理装置が望まれている。
【０００４】
図１に高性能汎用プロセッサの一例のブロック構成図を示す。
【０００５】
高性能汎用プロセッサ１は、命令キャッシュ＆命令フェッチ２、分岐予測部３、プログラムカウンタ４、チェックポイント部５、固定小数点レジスタ６、浮動小数点レジスタ７、固定小数点リオーダバッファ８、浮動小数点リオーダバッファ９、固定小数点リザベーション部１０、浮動小数点リザベーション部１１、ロード／ストアリザベーション部１２、固定小数点演算部１３、浮動小数点演算部１４、ロード／ストア部１５、データキャッシュ１６から構成される。
【０００６】
命令キャッシュ＆命令フェッチ２は、命令を保持すると共に、実行する命令をフェッチする。フェッチした命令がデコードされ、デコード結果に従って、高性能汎用プロセッサ１の各部が制御される。分岐予測部３は、デコードされた命令の中から条件付分岐命令を検出して、分岐条件が確定する前に分岐方向を予測する。プログラムカウンタ４は、順次実行される命令のアドレスを指し示す。チェックポイント部５は、分岐予測に従って分岐命令を実行したときに、レジスタ値等を含むプロセッサステータスを格納する。分岐予測がはずれたときには、チェックポイント部５に格納された情報を読み出して、レジスタ値等を含むプロセッサステータスを分岐前の状態に戻すことで、分岐ミスから回復する。
【０００７】
固定小数点レジスタ６は、固定小数点算術論理演算に対するオペランドを格納し、命令実行に必要なオペランドを固定小数点リザベーション部１０に供給すると共に、ロード／ストア命令に対するオペランドを格納し、命令実行に必要なオペランドをロード／ストアリザベーション部１２に供給する。固定小数点リオーダバッファ８は、固定小数点演算部１３によって計算された計算結果を格納すると共に、ロード／ストア部１５によって実行されたロード命令の結果を格納する。固定小数点リオーダバッファ８は、要求される最新のオペランドが固定小数点レジスタ６ではなく固定小数点リオーダバッファ８にあることを検出すると、そのオペランドを固定小数点リザベーション部１０或いはロード／ストアリザベーション部１２に直接に供給する。また固定小数点リオーダバッファ８は、命令実行結果を固定小数点レジスタ６に供給することで、オペランドの処理順序が変更された場合であっても、所定のレジスタへオペランドを格納して命令実行を終了する。
【０００８】
浮動小数点レジスタ７は、浮動小数点算術演算に対するオペランドを格納し、命令実行に必要なオペランドを浮動小数点リザベーション部１１に供給すると共に、ロード／ストア命令に対するオペランドを格納し、命令実行に必要なオペランドをロード／ストアリザベーション部１２に供給する。浮動小数点リオーダバッファ９は、浮動小数点演算部１４によって計算された計算結果を格納すると共に、ロード／ストア部１５によって実行されたロード命令の結果を格納する。浮動小数点リオーダバッファ９は、要求される最新のオペランドが浮動小数点レジスタ７ではなく浮動小数点リオーダバッファ９にあることを検出すると、そのオペランドを浮動小数点リザベーション部１１或いはロード／ストアリザベーション部１２に直接に供給する。また浮動小数点リオーダバッファ９は、命令実行結果を浮動小数点レジスタ７に供給することで、オペランドの処理順序が変更された場合であっても、所定のレジスタへオペランドを格納して命令実行を終了する。
【０００９】
固定小数点リザベーション部１０は、実行する固定小数点命令を保持し、必要なオペランドが固定小数点レジスタ６或いは固定小数点リオーダバッファ８から供給されるのを待つ。必要な全てのオペランドが得られると、その命令は実行可能状態となる。固定小数点リザベーション部１０は、実行可能状態の命令を選択して、固定小数点演算部１３に供給する。固定小数点演算部１３に同時に供給可能な命令の最大数は、固定小数点演算部１３に設けられる固定小数点演算ユニットの数に等しい。
【００１０】
浮動小数点リザベーション部１１は、実行する浮動小数点命令を保持し、必要なオペランドが浮動小数点レジスタ７或いは浮動小数点リオーダバッファ９から供給されるのを待つ。必要な全てのオペランドが得られると、その命令は実行可能状態となる。浮動小数点リザベーション部１１は、実行可能状態の命令を選択して、浮動小数点演算部１４に供給する。浮動小数点演算部１４に同時に供給可能な命令の最大数は、浮動小数点演算部１４に設けられる浮動小数点演算ユニットの数に等しい。
【００１１】
ロード／ストアリザベーション部１２は、実行するロード／ストア命令を保持し、必要なオペランドが固定小数点レジスタ６、浮動小数点レジスタ７、固定小数点リオーダバッファ８、或いは浮動小数点リオーダバッファ９から供給されるのを待つ。必要な全てのオペランドが得られると、その命令は実行可能状態となる。ロード／ストアリザベーション部１２は、実行可能状態の命令を選択して、ロード／ストア部１５に供給する。ロード／ストア部１５に同時に供給可能な命令の最大数は、ロード／ストア部１５に設けられるロード／ストア実行ユニットの数に等しい。
【００１２】
固定小数点演算部１３は、固定小数点リザベーション部１０から供給された命令を実行し、命令実行結果を固定小数点リオーダバッファ８に送る。浮動小数点演算部１４は、浮動小数点リザベーション部１１から供給された命令を実行し、命令実行結果を浮動小数点リオーダバッファ９に送る。またロード／ストア部１５は、ロード／ストアリザベーション部１２から供給されたロード／ストア命令を実行して、その結果を固定小数点リオーダバッファ８或いは浮動小数点リオーダバッファ９に供給する。
【００１３】
ストア命令を実行すると、ロード／ストア部１５はデータをデータキャッシュ１６に書き込み、ロード命令を実行すると、ロード／ストア部１５はデータをデータキャッシュ１６から読み出す。
【００１４】
高性能汎用プロセッサ１は、固定小数点演算部１３及び浮動小数点演算部１４を有し、論理／整数演算及び浮動小数点演算の両方に対応可能とされている。また、分岐予測部３、固定小数点リオーダバッファ８、浮動小数点リオーダバッファ９、固定小数点リザベーション部１０、浮動小数点リザベーション部１１、及びロード／ストアリザベーション部１２が設けられており、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行することが可能となっている。
【００１５】
このように汎用高性能プロセッサ１では、オールラウンドな高性能を重視して種々の命令を高速に実行出来るように設計されていると共に、一連の命令からなる１つのプログラムを高速に実行することに重点をおいて設計されている。
【００１６】
なお上記の高性能汎用プロセッサ１では、固定小数点演算部１３、浮動小数点演算部１４、及びロード／ストア部１５が各々複数ユニットずつ設けられており、ある程度の並列処理が可能である。しかし並列に処理できる最大命令数は、一般に６〜８命令程度であり、大量の処理を並列に実行するように設計されているのではない。
【００１７】
図２はマルチスプレッドトランザクション処理システムのブロック構成図を示す。
【００１８】
マルチスプレッド方式のトランザクション処理システム１７は、ｎ個のトランザクション処理プロセッサコア１８−１〜１８−ｎ、メモリ１９、入出力インタフェース２０、及びシステムバス２１から構成される。
【００１９】
トランザクション処理プロセッサコア１８−１〜１８−ｎの各々は、マルチスレッド処理のためにプログラムカウンタを複数個備え、トランザクション処理を効率よく実行できる構成とされている。メモリ１９は、システムバス２１を介してｎ個のトランザクション処理プロセッサコア１８−１〜１８−ｎと接続されており、ｎ個のトランザクション処理プロセッサコア１８−１〜１８−ｎによって共有される。
【００２０】
入出力インタフェー２０は、外部とシステムバス２１とのインタフェースを提供する。
【００２１】
図３はトランザクション処理プロセッサコアの一例のブロック構成図を示す。同図中、図１と同一の構成部分には同一の参照番号を付し、その説明は省略する。
【００２２】
トランザクション処理プロセッサコア１８−１〜１８−ｎには、トランザクション処理で殆ど使用されない浮動小数点演算器は設けられていない。また１つのプログラムを高速に実行するよりは複数のプログラムを並列に大量に実行することに重点がおかれているので、分岐予測、リオーダ、及びリザベーション等を実行するための機能は設けられておらず、マルチスレッド化のためにプログラムカウンタ２３及びレジスタ２４が複数個設けられている。例えば、ＡＴＭのトランザクション処理であれば、あるプログラムカウンタによりユーザＡの引き落とし処理を実行し、別のプログラムカウンタによりユーザＢの引き落とし処理を実行するというように、複数の処理を並行して実行することが可能になる。
【００２３】
このような構成とすることにより、ある処理に対応する所定の命令列でメモリの待ち時間が発生したとき、他の処理に対応する命令列を処理できるので、命令の実行効率を向上することができる。このようにして、図３に示すトランザクション処理プロセッサは、トランザクション処理を効率よく処理することが出来る。
【００２４】
図２に示すマルチスプレッドトランザクション処理システム１５は、図３に示すようなトランザクション処理プロセッサをｎ個備えることにより、小規模な処理を大量に並列実行することを可能とし、更に効率よくトランザクション処理を実行出来る構成となっている。なお図３に示すトランザクション処理プロセッサは回路規模が比較的小さいので、数多くのプロセッサを同一のチップ上に搭載することが可能である。
【００２５】
【発明が解決しようとする課題】
図１に示す高性能汎用プロセッサ１は、オールラウンドな高性能を重視して設計されているため、単純なトランザクション処理やウェブサーバ処理を実行させるためには余分な機能が多すぎる。またトランザクション処理やウェブサーバ処理では、単純な処理の大量並列実行が必要であるのに、１つのプログラムの処理を高速に実行することを重視した汎用高性能プロセッサでは、そのような要求に充分に応えることが出来ない。仮に複数のプロセッサを用意しようとしても、高性能汎用プロセッサは回路規模が大きいために、１チップに搭載できるプロセッサ数に限界があり、充分に並列度を上げることが出来ない。
【００２６】
また図２に示すマルチスプレッドトランザクション処理システム１５だけでウェブサーバシステム等を構成することは、トランザクション処理の効率化は達成できても、科学技術演算等の浮動小数点演算を必要とする複雑な処理に高速に対応できなくなると共に、単一のプログラムを高速に実行する種々の機能を持たないので、単一で大規模な処理或いは複雑な処理が要求されたときには、効率が著しく低下することになる。
【００２７】
本願発明は上記の点に鑑みてなされたもので、多様な命令を効率よく処理できる情報処理装置を提供することを目的とする。
【００２８】
【課題を解決するための手段】
本発明によれば、種々の処理のうちで特定の処理をそれ以外の処理よりも頻繁に実行する情報処理装置は、種々の処理に対応する命令セットを実行可能な第１のプロセッサと、該命令セットの一部或いは全てを実行可能であり特定の処理に対応する該命令セットの一部を第１のプロセッサより効率的に実行可能な第２のプロセッサを含み、特定の処理を第２のプロセッサが実行し特定の処理以外の処理を第１のプロセッサが実行し、該第１のプロセッサは汎用プロセッサであり、該第２のプロセッサは該特定の処理であるトランザクション処理を効率的に実行可能なように構成されたトランザクション処理プロセッサであることを特徴とする。
【００２９】
上記発明では、種々の処理を実行可能な第１のプロセッサと、種々の処理のうち特定の処理を第１のプロセッサよりも効率的に実行可能な第２のプロセッサとを設けて、特定の処理を第２のプロセッサに実行させ特定の処理以外の処理を第１のプロセッサに実行させることで、全体として効率的な処理を実現することが出来る。
【００３０】
本発明のある側面によれば、トランザクション処理プロセッサは、マルチスレッド方式及び複数のプロセッサを用いたマルチプロセッサ方式のうちの少なくとも１つの方式により処理を並列に実行することで、特定の処理を汎用プロセッサよりも効率的に実行可能なように構成されている。
【００３１】
上記発明では、オールラウンドな高性能を重視して設計されると共に、１つのプログラムの処理を高速に実行することを重視して設計された汎用高性能プロセッサと、小規模な処理を大量に並列実行することを重視して設計されるマルチスプレッド或いはマルチプロセストランザクション処理プロセッサとを設け、トランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理プロセッサが効率的に実行できない処理は汎用高性能プロセッサに割り当てることで、多様な命令を効率よく処理できる情報処理装置を提供することが出来る。
【００３２】
また本発明のある側面によれば、上記発明において、全ての処理は最初に第２のプロセッサに割り当てられ、特定の処理に対応する命令セットの一部以外の命令を実行必要な場合に、割り込みにより第２のプロセッサから第１のプロセッサに処理を移すことを特徴とする。
【００３３】
上記発明では、トランザクション処理プロセッサで、例えば浮動小数点演算を実行する命令が発生した場合、汎用プロセッサに割り込みをかけて、汎用プロセッサで浮動小数点演算処理以降の処理を実行する。トランザクション処理プロセッサから汎用プロセッサにプロセス処理を引き渡す契機となる命令としては、浮動小数点演算命令以外にも、トランザクション処理では効率が悪いが汎用プロセッサでは効率的に実行可能な命令であればよい。
【００３４】
【発明の実施の形態】
以下に本発明の実施例を、添付の図面を用いて詳細に説明する。
【００３５】
図４は本発明の第１の実施例によるシステム構成図を示す。
【００３６】
本実施例の情報処理装置３１は、汎用プロセッサ３２−１、３２−２、トランザクション処理プロセッサ３３−１、３３−２、メインメモリ３４、入出力インタフェース３５、システムコントローラ３６、及びシステムバス３７を含む。
【００３７】
汎用プロセッサ３２−１及び３２−２は、図１に示す汎用プロセッサ１と同様な構成である。即ち、整数演算及び論理演算並びに浮動小数点演算が実行可能とされていると共に、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行すること等が可能となっている。なお汎用プロセッサ３２−１及び３２−２の数は２つに限られるものではなく、任意の数設けられてよい。
【００３８】
トランザクション処理プロセッサ３３−１及び３３−２は、整数演算及び論理演算以外の複雑な演算機能や制御機能は含んでいなくてよく、マルチスレッド化及び／又はマルチプロセッサ化されており、トランザクション処理が効率的に実行可能な構成とされる。なおトランザクション処理プロセッサ３３−１及び３３−２の数は２つに限られるものではなく、任意の数設けられてよい。
【００３９】
メインメモリ３４は、ＲＡＭ（Random Access Memory）から構成され、データを記憶する。メインメモリ３４は、システムバス３７を介して汎用プロセッサ３２−１、３２−２及びトランザクション処理プロセッサ３３−１、３３−２に接続される。メインメモリ３４に記憶されたデータは、汎用プロセッサ３２−１、３２−２及びトランザクション処理プロセッサ３３−１、３３−２で共有される。
【００４０】
入出力インタフェース３５は、システムバス３７と外部周辺装置とのインタフェースを提供する。システムコントローラ３６は、汎用プロセッサ３２−１、３２−２、トランザクション処理プロセッサ３３−１、３３−２からのアクセス要求に応じて、メインメモリ３４及びシステムバス３７を制御する。
【００４１】
図５は、トランザクション処理プロセッサ３３−１の構成を示す構成図である。
【００４２】
図５のトランザクション処理プロセッサ３３−１は、トランザクション処理演算部４１及び２次キャッシュメモリ４２を含む。
【００４３】
トランザクション処理演算部４１は１つの半導体チップから構成され、２次キャッシュメモリ４２が外付けされる。 2次キャッシュメモリ４２は、ＲＡＭから構成され、データ及び命令を一時的に記憶する。
【００４４】
トランザクション処理演算部４１は、ｍ個のプロセッサコア４３−１乃至４３−ｍ、２次キャッシュタグ４４、インタフェース４５、及び内部バス４６を含む。
【００４５】
プロセッサコア４３−１乃至４３−ｍは、図３に示すトランザクション処理プロセッサコアと同様な構成を有するものでよい。即ち、プロセッサコア４３−１乃至４３−ｍの各々はマルチスレッド化されて、トランザクション処理を効率よく処理できるように構成される。また浮動小数点演算等の複雑な演算機能は設けられていなくてよく、更に分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行する等の機能も不在でよい。
【００４６】
なおプロセッサコア４３−１乃至４３−ｍが複数個提供されることで、トランザクション処理の並列実行は可能となるので、各プロセッサコアがマルチスレッド化されていることは必須要件ではない。また極端な場合には、プロセッサコア４３−１が１つだけ設けられている場合であっても、このプロセッサコアがトランザクション処理に特化されていればよい。
【００４７】
プロセッサコア４３−１乃至４３−ｍは、内部バス４６を介して、２次キャッシュタグ４４及びインタフェース４５に接続されている。２次キャッシュタグ４４は、２次キャッシュメモリ４２の使用状況を管理する。インタフェース４５は、２次キャッシュメモリ４２と内部バス４６とのインタフェースを提供する。
【００４８】
以下に、本実施例のトランザクション処理プロセッサ３３−１及び３３−２が実行する処理について説明する。
【００４９】
図６は本発明の第１の実施例によるトランザクション処理プロセッサの処理フローチャートを示す。
【００５０】
トランザクション処理プロセッサ３３−１は、ステップＳ１−１乃至Ｓ１−５を実行する。
【００５１】
ステップＳ１−１は、命令を発行する処理である。ステップＳ１−１で命令が発行されると、次にステップＳ１−２が実行される。
【００５２】
ステップＳ１−２は、命令が固定小数点演算か否かを判定する処理である。発行された命令が固定小数点演算の場合には、ステップＳ１−３が実行される。
【００５３】
ステップＳ１−３は、命令を実行する処理である。ステップＳ１−３で命令が実行されると、次にステップＳ１−４が実行される。
【００５４】
ステップＳ１−４は、次の命令の有無を判定する処理である。ステップＳ１−４で、次に命令があると判定されると、ステップＳ１−１に戻って次の命令が発行される。また、ステップＳ１−４で次の命令がないと判定されると、処理を終了する。
【００５５】
また、ステップＳ１−２で命令が浮動小数点演算であると判定された場合には、次にステップＳ１−５が実行される。
【００５６】
ステップＳ１−５は、割り込み処理である。ステップＳ１−５の割り込み処理については後述する。ステップＳ１−５で、割り込み処理が終了すると処理を終了する。
【００５７】
以下に、ステップＳ１−５の割り込み処理について詳細に説明する。
【００５８】
図７は本発明の第１の実施例によるトランザクション処理プロセッサの割り込み処理の処理フローチャートを示す。
【００５９】
トランザクション処理プロセッサ３３−１は、ステップＳ１−５の割り込み処理としてステップＳ２−１〜Ｓ２−６を実行する。
【００６０】
ステップＳ２−１は、発生された割り込み処理を解析する。ステップＳ２−１で割り込み処理を解析すると、次にステップＳ２−２を実行する。
【００６１】
ステップＳ２−２は、ステップＳ２−１での解析結果が通常の割り込み処理か否かを判定する処理である。ステップＳ２−２で、通常の割り込み処理であると判定すると、次に、ステップＳ２−３が実行される。ステップＳ２−３は、通常の割り込み処理を実行する処理である。
【００６２】
また、ステップＳ２−２で、浮動小数点演算を実行するための割り込み処理であると判定された場合には、ステップＳ２−４が実行される。
【００６３】
ステップＳ２−４は、実行の引継ぎに必要なトランザクション処理プロセッサの内部状態をメモリに格納し、命令アドレスと状態を格納したメモリアドレスとを内部レジスタに格納する処理である。ステップＳ２−４で、内部レジスタに命令と状態メモリのアドレスが格納されると、次にステップＳ２−５が実行される。
【００６４】
ステップＳ２ー５は、汎用プロセッサ３２−１又は３２−２に割り込みをかける処理である。この割り込みは、割り込みと共に上記内部レジスタの内容を含む割り込みベクトルを、トランザクション処理プロセッサから汎用プロセッサ３２−１又は３２−２に供給することで行われる。
【００６５】
以上により、トランザクション処理プロセッサ３３−１、３３−２で浮動小数点演算を実行する命令が発生した場合に、汎用プロセッサ３２−１又は３２−２に割り込みがかけられる。
【００６６】
次に、汎用プロセッサ３２−１の処理について説明する。
【００６７】
図８は本発明の第１の実施例による汎用プロセッサの処理フローチャートを示す。
【００６８】
汎用プロセッサ３２−１は、以下のステップＳ３−１乃至Ｓ３−６に示す処理を実行する。
【００６９】
ステップＳ３−１は、他のプロセッサからの割り込み要求の受信の有無を判定する。ステップＳ３−１で、他のプロセッサからの割り込み要求がなければ、ステップＳ３−２が実行され、処理を終了する。ステップＳ３−２は、通常の処理を実行する処理である。
【００７０】
また、ステップＳ３−１で、他のプロセッサから割り込み要求があれば、次にステップＳ３−３が実行される。
【００７１】
ステップＳ３−３は、割り込み要求が命令の実行依頼か否かを判定する処理である。ステップＳ３−３で、割り込み要求が命令の実行依頼でなければ、次にステップＳ３−４が実行され、処理が終了する。ステップＳ３−４は、通常の割り込み処理を実行する処理である。
【００７２】
また、ステップＳ３−３で、割り込み要求が命令の実行依頼であると判定されると、次にステップＳ３−５が実行される。
【００７３】
ステップＳ３−５は、割り込み要求と共にトランザクション処理プロセッサ３３−１から供給された割り込みベクトルを受け取り、割り込みベクトルに含まれる状態メモリアドレスを用いて汎用プロセッサの内部に状態を複製し、更にこの割り込みベクトルから命令アドレスを取り出す処理である。次にステップＳ３−６が実行される。ステップＳ３−６は、上記命令アドレスの命令、即ち実行依頼があった命令から実行を開始する処理である。
【００７４】
以上により汎用プロセッサ３２−１、３２−２で浮動小数点演算とそれ以降の処理が実行される。
【００７５】
以上のように本実施例によれば、トランザクション処理プロセッサ３２−１、３２−２で、浮動小数点演算を実行する命令が発生した場合、汎用プロセッサ３１−１に割り込みをかけて、汎用プロセッサ３１−１、３１−２で浮動小数点演算処理を実行する。ここで浮動小数点演算は、トランザクション処理プロセッサから汎用プロセッサにプロセス処理を引き渡す契機としての一例であり、このような契機としては浮動小数点演算以外にも、トランザクション処理では効率が悪いが汎用プロセッサでは効率的に実行可能な命令であればよく、本発明はそのような命令実行を契機とする形態一般を含むものである。
【００７６】
本発明においては、上記のような構成とすることで、トランザクション処理を主たる処理として実行しながらも汎用処理に対応したシステムにおいて、トランザクション処理を効率的に実行することが可能となる。なおＯＳ（オペレーティングシステム）は、逐次実行比率が高いので、汎用プロセッサ３１−１又は３１−２のいずれかで実行するようにする。但しこれは効率の問題であって、必ずしも汎用プロセッサ３１−１又は３１−２でＯＳを実行する必要はなく、トランザクション処理プロセッサ３２−１又は３２−２でＯＳを実行するようにしてもよく、そのような構成を排除するものではない。
【００７７】
なお上記実施例の構成においては、汎用プロセッサ３１−１及び３１−２とトランザクション処理プロセッサ３２−１及び３２−２との間でメモリ３４を共有することにより、プロセスの移行を効率よく行なうことができる。
【００７８】
次に、命令列をプロセッサに割り当てるプロセス割当方法について説明する。
【００７９】
図９は、本発明の第１の実施例によるプロセス割当処理の動作説明図である。
【００８０】
プロセスキュー７１に蓄えられるプロセス（或いはスレッド）の割り当ては、ＯＳにより管理される。このＯＳのプロセス割り当ての機能は、ディスパッチャ７２によって実現される。
【００８１】
プロセスキュー７１は、実行すべきプロセスを格納する。ディスパッチャ７２は、プロセスキュー７１が示すプロセスと、汎用プロセッサ３１−１及び３１−２と、トランザクション処理プロセッサ３２−１及び３２−２とを監視し、プロセスを何れかのプロセッサに割り当てる。本システムは、トランザクション処理が主たる処理である環境で稼動しているので、好ましくは、全てのプロセスは最初に汎用プロセッサではなく、トランザクション処理プロセッサに割り当てられる。
【００８２】
或いは、各プロセスを最初に汎用プロセッサではなくトランザクション処理プロセッサに択一的に割り当てるのではなく、例えばトランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理でないことが最初から判明している処理は最初から汎用プロセッサに割り当てるようにしてもよい。
【００８３】
システムコールトラップ７３は、汎用プロセッサ３１−１、３１−２、トランザクション処理プロセッサ３２−１、３２−２からシステムコール（ＯＳ割り込み）がかかると、割り込み内容に応じてプロセスの割当を制御する。
【００８４】
図１０は本発明の第１の実施例によるプロセス割当制御部の処理フローチャートを示す。
【００８５】
システムコールトラップ７３は、ステップＳ４−１〜Ｓ４−５を実行する。
【００８６】
ステップＳ４−１は、汎用プロセッサ３１−１、３１−２、トランザクション処理プロセッサ３２−１、３２−２からの割り込みを検出する。ステップＳ４−１でプロセッサからの割り込みが通知されると、ステップＳ４−２が実行される。
【００８７】
ステップＳ４−２は、割り込みを通知してきたプロセスの命令列を、それまでこのプロセスを実行していたのと同一のプロセッサで、割り込みのかかった命令から継続して処理可能か否かを判定する処理である。ステップＳ４−２で、命令が継続して実行可能であると判断されると、次にステップＳ４−３が実行される。ステップＳ４−３は、プロセスに元のプロセッサを識別する情報を付与する処理である。
【００８８】
ステップＳ４−３で元のプロセッサを識別する情報が付与されると、ステップＳ４−４が実行される。ステップＳ４−４は、情報が付与されたプロセスをプロセスキュー７１に格納する処理である。この場合のように、割り込み後に元のプロセッサでプロセスの実行が継続されるのは、例えばＩ／Ｏ処理に関して割り込みが発生した場合等である。但し、それまでこのプロセスを実行していたプロセッサが、既に別のプロセスに使用されている場合には、他のプロセッサに割り当てを行なう。
【００８９】
また、ステップＳ４−３で、プロセスが継続して実行できないと判断された場合には、次にステップＳ４−５が実行される。
【００９０】
ステップＳ４−５は、プロセスを実行するプロセッサを汎用プロセッサ或いはトランザクション処理プロセッサに制限する情報を付与する処理を行なう。次に、ステップＳ４−４が実行される。
【００９１】
以上により、ディスパッチャ７２がプロセスを割り当てるとき、使用プロセッサに制限が課されている場合には、指定されたプロセッサに当該プロセスを割り当てる。例えば浮動小数点演算を含むプロセスが当初はトランザクション処理プロセッサに割り当てられると、処理過程で割り込みが発生し、汎用プロセッサを指定する情報と共にプロセスがプロセスキュー７１に格納される。これを受けて、ディスパッチャ７２は、このプロセスを汎用プロセッサ３１−１又は３１−２に割り当てる。
【００９２】
なお前述のように、トランザクション処理プロセッサ３２−１或いは３２−２に全てのプロセスを最初に割り当てることにより、効率的に処理全体を実行することが出来る。これは本システムの処理の主流がトランザクション処理であるためである。或いは、各プロセスを最初に汎用プロセッサではなくトランザクション処理プロセッサに択一的に割り当てるのではなく、例えばトランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理でないことが最初から判明している処理は最初から汎用プロセッサに割り当てるようにしてもよい。
【００９３】
またプロセスの割り付けは、プロセッサの性能に応じて最適化することが望ましい。プロセッサの性能評価には、プロセッサに内蔵の通常の性能測定機能を用いればよい。
【００９４】
本実施例において、命令セットは、汎用プロセッサ３１−１、３１−２及びトランザクション処理プロセッサ３２−１、３２−２で同一であってよい。
【００９５】
なお上記実施例では、図４に示すように汎用プロセッサ３１−１、３１−１及びトランザクション処理プロセッサ３２−１、３２−２でシステムバス３７を共用し、メインメモリ３４を共有するシステムについて説明したが、クラスタ方式のマルチプロセッサシステムに本発明を適用することも可能である。
【００９６】
図１１は本発明の第２の実施例によるシステム構成図を示す。
【００９７】
本実施例の情報処理装置５１は、汎用プロセッサ部５２、トランザクション処理プロセッサ部５３、入出力インタフェース５４から構成される。
【００９８】
汎用プロセッサ部５２は、整数演算及び論理演算並びに浮動小数点演算が実行可能とされていると共に、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行すること等が可能となっている。トランザクション処理プロセッサ部５３は、整数演算及び論理演算以外の複雑な演算機能や制御機能は含んでいなくてよく、複数のプロセッサ及び／又は複数のプログラムカウンタを備えるなどして、トランザクション処理を効率的に実行可能な構成とされている。入出力インタフェース５４は、汎用プロセッサ部５２と外部とのインタフェースを提供する。
【００９９】
汎用プロセッサ部５２は、２つの汎用プロセッサ５５−１、５５−２、メモリ５６、システムバス５７、システムコントローラ５８、クラスタインタフェース５９から構成される。汎用プロセッサ５５−１、５５−２は、例えば、図１に示すような構成とされている。
【０１００】
メモリ５６はＲＡＭから構成され、汎用プロセッサ５５−１及び５５−２とシステムバス５７を介して接続される。汎用プロセッサ５５−１と汎用プロセッサ５５−２とで、メモリ５６のメモリ空間が共有される。
【０１０１】
システムコントローラ５８は、汎用プロセッサ５５−１及び５５−２からの要求に応じて、システムバス５７及びメモリ５６を制御する。クラスタインタフェース５９は、トランザクション処理プロセッサ部５３とのインタフェースを提供する。
【０１０２】
また、トランザクション処理プロセッサ５３は、２つのトランザクション処理プロセッサ６０−１、６０−２、メモリ６１、システムバス６２、システムコントローラ６３、及びクラスタインタフェース６４を含む。
【０１０３】
トランザクション処理プロセッサ６０−１及び６０−２は、図３に示すトランザクション処理プロセッサ１８−ｘと同様な構成でよい。
【０１０４】
メモリ６１は、システムバス６２を介してトランザクション処理プロセッサ６０−１及び６０−２と接続される。トランザクション処理プロセッサ６０−１及び６０−２は、メモリ６１のメモリ空間を共有する。
【０１０５】
システムコントローラ６３は、トランザクション処理プロセッサ６０−１及び６０−２からの要求に応じて、システムバス６２及びメモリ６１を制御する。クラスタインタフェース６４は、汎用プロセッサ部５２のクラスタインタフェース５９と接続されており、汎用プロセッサ部５２とのインタフェースを提供する。
【０１０６】
本実施例では、汎用プロセッサ部５２及びトランザクション処理プロセッサ部５３は、夫々にメモリ５６及びメモリ６１を備えており、独立したメモリ空間を有する。汎用プロセッサ部５２とトランザクション処理プロセッサ部５３との間では、クラスタインタフェース５９及び６４を介して通信が行なわれる。トランザクション処理プロセッサ部５３で、例えば浮動小数点演算が必要な命令が発行された場合には、この命令は、クラスタインタフェース６４及び５９を介して汎用プロセッサ部５２に供給され、汎用プロセッサ部５２により実行される。
【０１０７】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【０１０８】
【発明の効果】
本発明によれば、オールラウンドな高性能を重視して設計されると共に、１つのプログラムの処理を高速に実行することを重視して設計された汎用高性能プロセッサと、小規模な処理を大量に並列実行することを重視して設計されるマルチスプレッド及び／或いはマルチプロセストランザクション処理プロセッサとを設け、トランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理プロセッサが効率的に実行できない処理は汎用高性能プロセッサに割り当てることで、多様な命令を効率よく処理できる情報処理装置を提供することが出来る。
【図面の簡単な説明】
【図１】高性能汎用プロセッサの一例のブロック構成図である。
【図２】マルチスプレッドトランザクション処理システムのブロック構成図である。
【図３】トランザクション処理プロセッサの一例のブロック構成図である。
【図４】本発明の一実施例のシステム構成図である。
【図５】本発明の一実施例のトランザクション処理プロセッサのブロック構成図である。
【図６】本発明の一実施例のトランザクション処理プロセッサの処理フローチャートである。
【図７】本発明の一実施例のトランザクション処理プロセッサの割り込み処理の処理フローチャートである。
【図８】本発明の一実施例の汎用プロセッサの処理フローチャートである。
【図９】本発明の一実施例の命令割り当て処理の動作説明図である。
【図１０】本発明の一実施例の命令割当制御部の処理フローチャートである。
【図１１】本発明の他の実施例のシステム構成図である。
【符号の説明】
３１  情報処理システム
３２−１、３２−２  汎用プロセッサ
３３−１、３３−２  トランザクション処理プロセッサ
３４  メインメモリ
３５  入出力インタフェース
３６  システムコントローラ
３７  システムバス
４１  トランザクション処理演算部
４２  ２次キャッシュメモリ
４３−１〜４３−ｍ  プロセッサコア
４４  ２次キャッシュタグ
４５  インタフェース
【図１】
0003981238.tif 000002
【図２】
0003981238.tif 000003
【図３】
0003981238.tif 000004
【図４】
0003981238.tif 000005
【図５】
0003981238.tif 000006
【図６】
0003981238.tif 000007
【図７】
0003981238.tif 000008
【図８】
0003981238.tif 000009
【図９】
0003981238.tif 000010
【図１０】
0003981238.tif 000011
【図１１】
0003981238.tif 000012