JP3981238B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP3981238B2
JP3981238B2 JP2000348475A JP2000348475A JP3981238B2 JP 3981238 B2 JP3981238 B2 JP 3981238B2 JP 2000348475 A JP2000348475 A JP 2000348475A JP 2000348475 A JP2000348475 A JP 2000348475A JP 3981238 B2 JP3981238 B2 JP 3981238B2
Authority
JP
Japan
Prior art keywords
processor
processing
instruction
executed
transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000348475A
Other languages
English (en)
Other versions
JP2001249808A (ja
Inventor
寿茂 安藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000348475A priority Critical patent/JP3981238B2/ja
Priority to DE10063915A priority patent/DE10063915B4/de
Priority to US09/746,068 priority patent/US7711925B2/en
Publication of JP2001249808A publication Critical patent/JP2001249808A/ja
Application granted granted Critical
Publication of JP3981238B2 publication Critical patent/JP3981238B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は一般に情報処理装置に関し、詳しくは汎用処理及びトランザクション処理を行なう情報処理装置に関する。
【0002】
【従来の技術】
現在の汎用高性能プロセッサは、マルチメディア処理等を含む幅広い用途に対して高い性能を発揮することが要求されるため、様々な処理に適した種々の命令を高速に実行出来るように設計されている。例えば、浮動小数点演算部を設けて、浮動少数点演算が必要な処理を高速に実行できるように構成されている。また汎用高性能プロセッサは、通常、一連の命令からなる1つのプログラムを高速に実行することに重点をおいて設計されている。例えば、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行する機能等が設けられている。
【0003】
しかしながら、近年計算機に対する需要が特に延びているのは、トランザクション処理のシステムやウェブサーバシステム等の分野である。トランザクション処理やウェブサーバ処理で実行対象となる処理では、論理演算・整数演算が中心であり、浮動小数点演算等の複雑な処理は殆ど必要とされない。またトランザクション処理やウェブサーバ処理においては、1つのプログラムの処理を高速に実行することよりも、小規模の処理を大量かつ並列に実行する機能が重要になる。
現在の汎用高性能プロセッサは、上述のようにオールラウンドな高性能を重視して設計されているため、単純なトランザクション処理やウェブサーバ処理を実行させるためには余分な機能が多すぎる。またトランザクション処理やウェブサーバ処理では、単純な処理の大量並列実行が必要であるのに、1つのプログラムの処理を高速に実行することを重視した汎用高性能プロセッサでは、そのような要求に充分に応えることが出来ない。従って、トランザクション処理やウェブサーバ処理等を高速に実行できる情報処理装置が望まれている。
【0004】
図1に高性能汎用プロセッサの一例のブロック構成図を示す。
【0005】
高性能汎用プロセッサ1は、命令キャッシュ&命令フェッチ2、分岐予測部3、プログラムカウンタ4、チェックポイント部5、固定小数点レジスタ6、浮動小数点レジスタ7、固定小数点リオーダバッファ8、浮動小数点リオーダバッファ9、固定小数点リザベーション部10、浮動小数点リザベーション部11、ロード/ストアリザベーション部12、固定小数点演算部13、浮動小数点演算部14、ロード/ストア部15、データキャッシュ16から構成される。
【0006】
命令キャッシュ&命令フェッチ2は、命令を保持すると共に、実行する命令をフェッチする。フェッチした命令がデコードされ、デコード結果に従って、高性能汎用プロセッサ1の各部が制御される。分岐予測部3は、デコードされた命令の中から条件付分岐命令を検出して、分岐条件が確定する前に分岐方向を予測する。プログラムカウンタ4は、順次実行される命令のアドレスを指し示す。チェックポイント部5は、分岐予測に従って分岐命令を実行したときに、レジスタ値等を含むプロセッサステータスを格納する。分岐予測がはずれたときには、チェックポイント部5に格納された情報を読み出して、レジスタ値等を含むプロセッサステータスを分岐前の状態に戻すことで、分岐ミスから回復する。
【0007】
固定小数点レジスタ6は、固定小数点算術論理演算に対するオペランドを格納し、命令実行に必要なオペランドを固定小数点リザベーション部10に供給すると共に、ロード/ストア命令に対するオペランドを格納し、命令実行に必要なオペランドをロード/ストアリザベーション部12に供給する。固定小数点リオーダバッファ8は、固定小数点演算部13によって計算された計算結果を格納すると共に、ロード/ストア部15によって実行されたロード命令の結果を格納する。固定小数点リオーダバッファ8は、要求される最新のオペランドが固定小数点レジスタ6ではなく固定小数点リオーダバッファ8にあることを検出すると、そのオペランドを固定小数点リザベーション部10或いはロード/ストアリザベーション部12に直接に供給する。また固定小数点リオーダバッファ8は、命令実行結果を固定小数点レジスタ6に供給することで、オペランドの処理順序が変更された場合であっても、所定のレジスタへオペランドを格納して命令実行を終了する。
【0008】
浮動小数点レジスタ7は、浮動小数点算術演算に対するオペランドを格納し、命令実行に必要なオペランドを浮動小数点リザベーション部11に供給すると共に、ロード/ストア命令に対するオペランドを格納し、命令実行に必要なオペランドをロード/ストアリザベーション部12に供給する。浮動小数点リオーダバッファ9は、浮動小数点演算部14によって計算された計算結果を格納すると共に、ロード/ストア部15によって実行されたロード命令の結果を格納する。浮動小数点リオーダバッファ9は、要求される最新のオペランドが浮動小数点レジスタ7ではなく浮動小数点リオーダバッファ9にあることを検出すると、そのオペランドを浮動小数点リザベーション部11或いはロード/ストアリザベーション部12に直接に供給する。また浮動小数点リオーダバッファ9は、命令実行結果を浮動小数点レジスタ7に供給することで、オペランドの処理順序が変更された場合であっても、所定のレジスタへオペランドを格納して命令実行を終了する。
【0009】
固定小数点リザベーション部10は、実行する固定小数点命令を保持し、必要なオペランドが固定小数点レジスタ6或いは固定小数点リオーダバッファ8から供給されるのを待つ。必要な全てのオペランドが得られると、その命令は実行可能状態となる。固定小数点リザベーション部10は、実行可能状態の命令を選択して、固定小数点演算部13に供給する。固定小数点演算部13に同時に供給可能な命令の最大数は、固定小数点演算部13に設けられる固定小数点演算ユニットの数に等しい。
【0010】
浮動小数点リザベーション部11は、実行する浮動小数点命令を保持し、必要なオペランドが浮動小数点レジスタ7或いは浮動小数点リオーダバッファ9から供給されるのを待つ。必要な全てのオペランドが得られると、その命令は実行可能状態となる。浮動小数点リザベーション部11は、実行可能状態の命令を選択して、浮動小数点演算部14に供給する。浮動小数点演算部14に同時に供給可能な命令の最大数は、浮動小数点演算部14に設けられる浮動小数点演算ユニットの数に等しい。
【0011】
ロード/ストアリザベーション部12は、実行するロード/ストア命令を保持し、必要なオペランドが固定小数点レジスタ6、浮動小数点レジスタ7、固定小数点リオーダバッファ8、或いは浮動小数点リオーダバッファ9から供給されるのを待つ。必要な全てのオペランドが得られると、その命令は実行可能状態となる。ロード/ストアリザベーション部12は、実行可能状態の命令を選択して、ロード/ストア部15に供給する。ロード/ストア部15に同時に供給可能な命令の最大数は、ロード/ストア部15に設けられるロード/ストア実行ユニットの数に等しい。
【0012】
固定小数点演算部13は、固定小数点リザベーション部10から供給された命令を実行し、命令実行結果を固定小数点リオーダバッファ8に送る。浮動小数点演算部14は、浮動小数点リザベーション部11から供給された命令を実行し、命令実行結果を浮動小数点リオーダバッファ9に送る。またロード/ストア部15は、ロード/ストアリザベーション部12から供給されたロード/ストア命令を実行して、その結果を固定小数点リオーダバッファ8或いは浮動小数点リオーダバッファ9に供給する。
【0013】
ストア命令を実行すると、ロード/ストア部15はデータをデータキャッシュ16に書き込み、ロード命令を実行すると、ロード/ストア部15はデータをデータキャッシュ16から読み出す。
【0014】
高性能汎用プロセッサ1は、固定小数点演算部13及び浮動小数点演算部14を有し、論理/整数演算及び浮動小数点演算の両方に対応可能とされている。また、分岐予測部3、固定小数点リオーダバッファ8、浮動小数点リオーダバッファ9、固定小数点リザベーション部10、浮動小数点リザベーション部11、及びロード/ストアリザベーション部12が設けられており、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行することが可能となっている。
【0015】
このように汎用高性能プロセッサ1では、オールラウンドな高性能を重視して種々の命令を高速に実行出来るように設計されていると共に、一連の命令からなる1つのプログラムを高速に実行することに重点をおいて設計されている。
【0016】
なお上記の高性能汎用プロセッサ1では、固定小数点演算部13、浮動小数点演算部14、及びロード/ストア部15が各々複数ユニットずつ設けられており、ある程度の並列処理が可能である。しかし並列に処理できる最大命令数は、一般に6〜8命令程度であり、大量の処理を並列に実行するように設計されているのではない。
【0017】
図2はマルチスプレッドトランザクション処理システムのブロック構成図を示す。
【0018】
マルチスプレッド方式のトランザクション処理システム17は、n個のトランザクション処理プロセッサコア18−1〜18−n、メモリ19、入出力インタフェース20、及びシステムバス21から構成される。
【0019】
トランザクション処理プロセッサコア18−1〜18−nの各々は、マルチスレッド処理のためにプログラムカウンタを複数個備え、トランザクション処理を効率よく実行できる構成とされている。メモリ19は、システムバス21を介してn個のトランザクション処理プロセッサコア18−1〜18−nと接続されており、n個のトランザクション処理プロセッサコア18−1〜18−nによって共有される。
【0020】
入出力インタフェー20は、外部とシステムバス21とのインタフェースを提供する。
【0021】
図3はトランザクション処理プロセッサコアの一例のブロック構成図を示す。同図中、図1と同一の構成部分には同一の参照番号を付し、その説明は省略する。
【0022】
トランザクション処理プロセッサコア18−1〜18−nには、トランザクション処理で殆ど使用されない浮動小数点演算器は設けられていない。また1つのプログラムを高速に実行するよりは複数のプログラムを並列に大量に実行することに重点がおかれているので、分岐予測、リオーダ、及びリザベーション等を実行するための機能は設けられておらず、マルチスレッド化のためにプログラムカウンタ23及びレジスタ24が複数個設けられている。例えば、ATMのトランザクション処理であれば、あるプログラムカウンタによりユーザAの引き落とし処理を実行し、別のプログラムカウンタによりユーザBの引き落とし処理を実行するというように、複数の処理を並行して実行することが可能になる。
【0023】
このような構成とすることにより、ある処理に対応する所定の命令列でメモリの待ち時間が発生したとき、他の処理に対応する命令列を処理できるので、命令の実行効率を向上することができる。このようにして、図3に示すトランザクション処理プロセッサは、トランザクション処理を効率よく処理することが出来る。
【0024】
図2に示すマルチスプレッドトランザクション処理システム15は、図3に示すようなトランザクション処理プロセッサをn個備えることにより、小規模な処理を大量に並列実行することを可能とし、更に効率よくトランザクション処理を実行出来る構成となっている。なお図3に示すトランザクション処理プロセッサは回路規模が比較的小さいので、数多くのプロセッサを同一のチップ上に搭載することが可能である。
【0025】
【発明が解決しようとする課題】
図1に示す高性能汎用プロセッサ1は、オールラウンドな高性能を重視して設計されているため、単純なトランザクション処理やウェブサーバ処理を実行させるためには余分な機能が多すぎる。またトランザクション処理やウェブサーバ処理では、単純な処理の大量並列実行が必要であるのに、1つのプログラムの処理を高速に実行することを重視した汎用高性能プロセッサでは、そのような要求に充分に応えることが出来ない。仮に複数のプロセッサを用意しようとしても、高性能汎用プロセッサは回路規模が大きいために、1チップに搭載できるプロセッサ数に限界があり、充分に並列度を上げることが出来ない。
【0026】
また図2に示すマルチスプレッドトランザクション処理システム15だけでウェブサーバシステム等を構成することは、トランザクション処理の効率化は達成できても、科学技術演算等の浮動小数点演算を必要とする複雑な処理に高速に対応できなくなると共に、単一のプログラムを高速に実行する種々の機能を持たないので、単一で大規模な処理或いは複雑な処理が要求されたときには、効率が著しく低下することになる。
【0027】
本願発明は上記の点に鑑みてなされたもので、多様な命令を効率よく処理できる情報処理装置を提供することを目的とする。
【0028】
【課題を解決するための手段】
本発明によれば、種々の処理のうちで特定の処理をそれ以外の処理よりも頻繁に実行する情報処理装置は、種々の処理に対応する命令セットを実行可能な第1のプロセッサと、該命令セットの一部或いは全てを実行可能であり特定の処理に対応する該命令セットの一部を第1のプロセッサより効率的に実行可能な第2のプロセッサを含み、特定の処理を第2のプロセッサが実行し特定の処理以外の処理を第1のプロセッサが実行し、該第1のプロセッサは汎用プロセッサであり、該第2のプロセッサは該特定の処理であるトランザクション処理を効率的に実行可能なように構成されたトランザクション処理プロセッサであることを特徴とする。
【0029】
上記発明では、種々の処理を実行可能な第1のプロセッサと、種々の処理のうち特定の処理を第1のプロセッサよりも効率的に実行可能な第2のプロセッサとを設けて、特定の処理を第2のプロセッサに実行させ特定の処理以外の処理を第1のプロセッサに実行させることで、全体として効率的な処理を実現することが出来る。
【0030】
本発明のある側面によれば、トランザクション処理プロセッサは、マルチスレッド方式及び複数のプロセッサを用いたマルチプロセッサ方式のうちの少なくとも1つの方式により処理を並列に実行することで、特定の処理を汎用プロセッサよりも効率的に実行可能なように構成されている。
【0031】
上記発明では、オールラウンドな高性能を重視して設計されると共に、1つのプログラムの処理を高速に実行することを重視して設計された汎用高性能プロセッサと、小規模な処理を大量に並列実行することを重視して設計されるマルチスプレッド或いはマルチプロセストランザクション処理プロセッサとを設け、トランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理プロセッサが効率的に実行できない処理は汎用高性能プロセッサに割り当てることで、多様な命令を効率よく処理できる情報処理装置を提供することが出来る。
【0032】
また本発明のある側面によれば、上記発明において、全ての処理は最初に第2のプロセッサに割り当てられ、特定の処理に対応する命令セットの一部以外の命令を実行必要な場合に、割り込みにより第2のプロセッサから第1のプロセッサに処理を移すことを特徴とする。
【0033】
上記発明では、トランザクション処理プロセッサで、例えば浮動小数点演算を実行する命令が発生した場合、汎用プロセッサに割り込みをかけて、汎用プロセッサで浮動小数点演算処理以降の処理を実行する。トランザクション処理プロセッサから汎用プロセッサにプロセス処理を引き渡す契機となる命令としては、浮動小数点演算命令以外にも、トランザクション処理では効率が悪いが汎用プロセッサでは効率的に実行可能な命令であればよい。
【0034】
【発明の実施の形態】
以下に本発明の実施例を、添付の図面を用いて詳細に説明する。
【0035】
図4は本発明の第1の実施例によるシステム構成図を示す。
【0036】
本実施例の情報処理装置31は、汎用プロセッサ32−1、32−2、トランザクション処理プロセッサ33−1、33−2、メインメモリ34、入出力インタフェース35、システムコントローラ36、及びシステムバス37を含む。
【0037】
汎用プロセッサ32−1及び32−2は、図1に示す汎用プロセッサ1と同様な構成である。即ち、整数演算及び論理演算並びに浮動小数点演算が実行可能とされていると共に、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行すること等が可能となっている。なお汎用プロセッサ32−1及び32−2の数は2つに限られるものではなく、任意の数設けられてよい。
【0038】
トランザクション処理プロセッサ33−1及び33−2は、整数演算及び論理演算以外の複雑な演算機能や制御機能は含んでいなくてよく、マルチスレッド化及び/又はマルチプロセッサ化されており、トランザクション処理が効率的に実行可能な構成とされる。なおトランザクション処理プロセッサ33−1及び33−2の数は2つに限られるものではなく、任意の数設けられてよい。
【0039】
メインメモリ34は、RAM(Random Access Memory)から構成され、データを記憶する。メインメモリ34は、システムバス37を介して汎用プロセッサ32−1、32−2及びトランザクション処理プロセッサ33−1、33−2に接続される。メインメモリ34に記憶されたデータは、汎用プロセッサ32−1、32−2及びトランザクション処理プロセッサ33−1、33−2で共有される。
【0040】
入出力インタフェース35は、システムバス37と外部周辺装置とのインタフェースを提供する。システムコントローラ36は、汎用プロセッサ32−1、32−2、トランザクション処理プロセッサ33−1、33−2からのアクセス要求に応じて、メインメモリ34及びシステムバス37を制御する。
【0041】
図5は、トランザクション処理プロセッサ33−1の構成を示す構成図である。
【0042】
図5のトランザクション処理プロセッサ33−1は、トランザクション処理演算部41及び2次キャッシュメモリ42を含む。
【0043】
トランザクション処理演算部41は1つの半導体チップから構成され、2次キャッシュメモリ42が外付けされる。 2次キャッシュメモリ42は、RAMから構成され、データ及び命令を一時的に記憶する。
【0044】
トランザクション処理演算部41は、m個のプロセッサコア43−1乃至43−m、2次キャッシュタグ44、インタフェース45、及び内部バス46を含む。
【0045】
プロセッサコア43−1乃至43−mは、図3に示すトランザクション処理プロセッサコアと同様な構成を有するものでよい。即ち、プロセッサコア43−1乃至43−mの各々はマルチスレッド化されて、トランザクション処理を効率よく処理できるように構成される。また浮動小数点演算等の複雑な演算機能は設けられていなくてよく、更に分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行する等の機能も不在でよい。
【0046】
なおプロセッサコア43−1乃至43−mが複数個提供されることで、トランザクション処理の並列実行は可能となるので、各プロセッサコアがマルチスレッド化されていることは必須要件ではない。また極端な場合には、プロセッサコア43−1が1つだけ設けられている場合であっても、このプロセッサコアがトランザクション処理に特化されていればよい。
【0047】
プロセッサコア43−1乃至43−mは、内部バス46を介して、2次キャッシュタグ44及びインタフェース45に接続されている。2次キャッシュタグ44は、2次キャッシュメモリ42の使用状況を管理する。インタフェース45は、2次キャッシュメモリ42と内部バス46とのインタフェースを提供する。
【0048】
以下に、本実施例のトランザクション処理プロセッサ33−1及び33−2が実行する処理について説明する。
【0049】
図6は本発明の第1の実施例によるトランザクション処理プロセッサの処理フローチャートを示す。
【0050】
トランザクション処理プロセッサ33−1は、ステップS1−1乃至S1−5を実行する。
【0051】
ステップS1−1は、命令を発行する処理である。ステップS1−1で命令が発行されると、次にステップS1−2が実行される。
【0052】
ステップS1−2は、命令が固定小数点演算か否かを判定する処理である。発行された命令が固定小数点演算の場合には、ステップS1−3が実行される。
【0053】
ステップS1−3は、命令を実行する処理である。ステップS1−3で命令が実行されると、次にステップS1−4が実行される。
【0054】
ステップS1−4は、次の命令の有無を判定する処理である。ステップS1−4で、次に命令があると判定されると、ステップS1−1に戻って次の命令が発行される。また、ステップS1−4で次の命令がないと判定されると、処理を終了する。
【0055】
また、ステップS1−2で命令が浮動小数点演算であると判定された場合には、次にステップS1−5が実行される。
【0056】
ステップS1−5は、割り込み処理である。ステップS1−5の割り込み処理については後述する。ステップS1−5で、割り込み処理が終了すると処理を終了する。
【0057】
以下に、ステップS1−5の割り込み処理について詳細に説明する。
【0058】
図7は本発明の第1の実施例によるトランザクション処理プロセッサの割り込み処理の処理フローチャートを示す。
【0059】
トランザクション処理プロセッサ33−1は、ステップS1−5の割り込み処理としてステップS2−1〜S2−6を実行する。
【0060】
ステップS2−1は、発生された割り込み処理を解析する。ステップS2−1で割り込み処理を解析すると、次にステップS2−2を実行する。
【0061】
ステップS2−2は、ステップS2−1での解析結果が通常の割り込み処理か否かを判定する処理である。ステップS2−2で、通常の割り込み処理であると判定すると、次に、ステップS2−3が実行される。ステップS2−3は、通常の割り込み処理を実行する処理である。
【0062】
また、ステップS2−2で、浮動小数点演算を実行するための割り込み処理であると判定された場合には、ステップS2−4が実行される。
【0063】
ステップS2−4は、実行の引継ぎに必要なトランザクション処理プロセッサの内部状態をメモリに格納し、命令アドレスと状態を格納したメモリアドレスとを内部レジスタに格納する処理である。ステップS2−4で、内部レジスタに命令と状態メモリのアドレスが格納されると、次にステップS2−5が実行される。
【0064】
ステップS2ー5は、汎用プロセッサ32−1又は32−2に割り込みをかける処理である。この割り込みは、割り込みと共に上記内部レジスタの内容を含む割り込みベクトルを、トランザクション処理プロセッサから汎用プロセッサ32−1又は32−2に供給することで行われる。
【0065】
以上により、トランザクション処理プロセッサ33−1、33−2で浮動小数点演算を実行する命令が発生した場合に、汎用プロセッサ32−1又は32−2に割り込みがかけられる。
【0066】
次に、汎用プロセッサ32−1の処理について説明する。
【0067】
図8は本発明の第1の実施例による汎用プロセッサの処理フローチャートを示す。
【0068】
汎用プロセッサ32−1は、以下のステップS3−1乃至S3−6に示す処理を実行する。
【0069】
ステップS3−1は、他のプロセッサからの割り込み要求の受信の有無を判定する。ステップS3−1で、他のプロセッサからの割り込み要求がなければ、ステップS3−2が実行され、処理を終了する。ステップS3−2は、通常の処理を実行する処理である。
【0070】
また、ステップS3−1で、他のプロセッサから割り込み要求があれば、次にステップS3−3が実行される。
【0071】
ステップS3−3は、割り込み要求が命令の実行依頼か否かを判定する処理である。ステップS3−3で、割り込み要求が命令の実行依頼でなければ、次にステップS3−4が実行され、処理が終了する。ステップS3−4は、通常の割り込み処理を実行する処理である。
【0072】
また、ステップS3−3で、割り込み要求が命令の実行依頼であると判定されると、次にステップS3−5が実行される。
【0073】
ステップS3−5は、割り込み要求と共にトランザクション処理プロセッサ33−1から供給された割り込みベクトルを受け取り、割り込みベクトルに含まれる状態メモリアドレスを用いて汎用プロセッサの内部に状態を複製し、更にこの割り込みベクトルから命令アドレスを取り出す処理である。次にステップS3−6が実行される。ステップS3−6は、上記命令アドレスの命令、即ち実行依頼があった命令から実行を開始する処理である。
【0074】
以上により汎用プロセッサ32−1、32−2で浮動小数点演算とそれ以降の処理が実行される。
【0075】
以上のように本実施例によれば、トランザクション処理プロセッサ32−1、32−2で、浮動小数点演算を実行する命令が発生した場合、汎用プロセッサ31−1に割り込みをかけて、汎用プロセッサ31−1、31−2で浮動小数点演算処理を実行する。ここで浮動小数点演算は、トランザクション処理プロセッサから汎用プロセッサにプロセス処理を引き渡す契機としての一例であり、このような契機としては浮動小数点演算以外にも、トランザクション処理では効率が悪いが汎用プロセッサでは効率的に実行可能な命令であればよく、本発明はそのような命令実行を契機とする形態一般を含むものである。
【0076】
本発明においては、上記のような構成とすることで、トランザクション処理を主たる処理として実行しながらも汎用処理に対応したシステムにおいて、トランザクション処理を効率的に実行することが可能となる。なおOS(オペレーティングシステム)は、逐次実行比率が高いので、汎用プロセッサ31−1又は31−2のいずれかで実行するようにする。但しこれは効率の問題であって、必ずしも汎用プロセッサ31−1又は31−2でOSを実行する必要はなく、トランザクション処理プロセッサ32−1又は32−2でOSを実行するようにしてもよく、そのような構成を排除するものではない。
【0077】
なお上記実施例の構成においては、汎用プロセッサ31−1及び31−2とトランザクション処理プロセッサ32−1及び32−2との間でメモリ34を共有することにより、プロセスの移行を効率よく行なうことができる。
【0078】
次に、命令列をプロセッサに割り当てるプロセス割当方法について説明する。
【0079】
図9は、本発明の第1の実施例によるプロセス割当処理の動作説明図である。
【0080】
プロセスキュー71に蓄えられるプロセス(或いはスレッド)の割り当ては、OSにより管理される。このOSのプロセス割り当ての機能は、ディスパッチャ72によって実現される。
【0081】
プロセスキュー71は、実行すべきプロセスを格納する。ディスパッチャ72は、プロセスキュー71が示すプロセスと、汎用プロセッサ31−1及び31−2と、トランザクション処理プロセッサ32−1及び32−2とを監視し、プロセスを何れかのプロセッサに割り当てる。本システムは、トランザクション処理が主たる処理である環境で稼動しているので、好ましくは、全てのプロセスは最初に汎用プロセッサではなく、トランザクション処理プロセッサに割り当てられる。
【0082】
或いは、各プロセスを最初に汎用プロセッサではなくトランザクション処理プロセッサに択一的に割り当てるのではなく、例えばトランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理でないことが最初から判明している処理は最初から汎用プロセッサに割り当てるようにしてもよい。
【0083】
システムコールトラップ73は、汎用プロセッサ31−1、31−2、トランザクション処理プロセッサ32−1、32−2からシステムコール(OS割り込み)がかかると、割り込み内容に応じてプロセスの割当を制御する。
【0084】
図10は本発明の第1の実施例によるプロセス割当制御部の処理フローチャートを示す。
【0085】
システムコールトラップ73は、ステップS4−1〜S4−5を実行する。
【0086】
ステップS4−1は、汎用プロセッサ31−1、31−2、トランザクション処理プロセッサ32−1、32−2からの割り込みを検出する。ステップS4−1でプロセッサからの割り込みが通知されると、ステップS4−2が実行される。
【0087】
ステップS4−2は、割り込みを通知してきたプロセスの命令列を、それまでこのプロセスを実行していたのと同一のプロセッサで、割り込みのかかった命令から継続して処理可能か否かを判定する処理である。ステップS4−2で、命令が継続して実行可能であると判断されると、次にステップS4−3が実行される。ステップS4−3は、プロセスに元のプロセッサを識別する情報を付与する処理である。
【0088】
ステップS4−3で元のプロセッサを識別する情報が付与されると、ステップS4−4が実行される。ステップS4−4は、情報が付与されたプロセスをプロセスキュー71に格納する処理である。この場合のように、割り込み後に元のプロセッサでプロセスの実行が継続されるのは、例えばI/O処理に関して割り込みが発生した場合等である。但し、それまでこのプロセスを実行していたプロセッサが、既に別のプロセスに使用されている場合には、他のプロセッサに割り当てを行なう。
【0089】
また、ステップS4−3で、プロセスが継続して実行できないと判断された場合には、次にステップS4−5が実行される。
【0090】
ステップS4−5は、プロセスを実行するプロセッサを汎用プロセッサ或いはトランザクション処理プロセッサに制限する情報を付与する処理を行なう。次に、ステップS4−4が実行される。
【0091】
以上により、ディスパッチャ72がプロセスを割り当てるとき、使用プロセッサに制限が課されている場合には、指定されたプロセッサに当該プロセスを割り当てる。例えば浮動小数点演算を含むプロセスが当初はトランザクション処理プロセッサに割り当てられると、処理過程で割り込みが発生し、汎用プロセッサを指定する情報と共にプロセスがプロセスキュー71に格納される。これを受けて、ディスパッチャ72は、このプロセスを汎用プロセッサ31−1又は31−2に割り当てる。
【0092】
なお前述のように、トランザクション処理プロセッサ32−1或いは32−2に全てのプロセスを最初に割り当てることにより、効率的に処理全体を実行することが出来る。これは本システムの処理の主流がトランザクション処理であるためである。或いは、各プロセスを最初に汎用プロセッサではなくトランザクション処理プロセッサに択一的に割り当てるのではなく、例えばトランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理でないことが最初から判明している処理は最初から汎用プロセッサに割り当てるようにしてもよい。
【0093】
またプロセスの割り付けは、プロセッサの性能に応じて最適化することが望ましい。プロセッサの性能評価には、プロセッサに内蔵の通常の性能測定機能を用いればよい。
【0094】
本実施例において、命令セットは、汎用プロセッサ31−1、31−2及びトランザクション処理プロセッサ32−1、32−2で同一であってよい。
【0095】
なお上記実施例では、図4に示すように汎用プロセッサ31−1、31−1及びトランザクション処理プロセッサ32−1、32−2でシステムバス37を共用し、メインメモリ34を共有するシステムについて説明したが、クラスタ方式のマルチプロセッサシステムに本発明を適用することも可能である。
【0096】
図11は本発明の第2の実施例によるシステム構成図を示す。
【0097】
本実施例の情報処理装置51は、汎用プロセッサ部52、トランザクション処理プロセッサ部53、入出力インタフェース54から構成される。
【0098】
汎用プロセッサ部52は、整数演算及び論理演算並びに浮動小数点演算が実行可能とされていると共に、分岐方向が確定する前に分岐命令を実行するために分岐予測をしたり、オペランド待ちのためのリザベーションを行ったり、オペランドの処理順序変更のためにリオーダ処理を実行すること等が可能となっている。トランザクション処理プロセッサ部53は、整数演算及び論理演算以外の複雑な演算機能や制御機能は含んでいなくてよく、複数のプロセッサ及び/又は複数のプログラムカウンタを備えるなどして、トランザクション処理を効率的に実行可能な構成とされている。入出力インタフェース54は、汎用プロセッサ部52と外部とのインタフェースを提供する。
【0099】
汎用プロセッサ部52は、2つの汎用プロセッサ55−1、55−2、メモリ56、システムバス57、システムコントローラ58、クラスタインタフェース59から構成される。汎用プロセッサ55−1、55−2は、例えば、図1に示すような構成とされている。
【0100】
メモリ56はRAMから構成され、汎用プロセッサ55−1及び55−2とシステムバス57を介して接続される。汎用プロセッサ55−1と汎用プロセッサ55−2とで、メモリ56のメモリ空間が共有される。
【0101】
システムコントローラ58は、汎用プロセッサ55−1及び55−2からの要求に応じて、システムバス57及びメモリ56を制御する。クラスタインタフェース59は、トランザクション処理プロセッサ部53とのインタフェースを提供する。
【0102】
また、トランザクション処理プロセッサ53は、2つのトランザクション処理プロセッサ60−1、60−2、メモリ61、システムバス62、システムコントローラ63、及びクラスタインタフェース64を含む。
【0103】
トランザクション処理プロセッサ60−1及び60−2は、図3に示すトランザクション処理プロセッサ18−xと同様な構成でよい。
【0104】
メモリ61は、システムバス62を介してトランザクション処理プロセッサ60−1及び60−2と接続される。トランザクション処理プロセッサ60−1及び60−2は、メモリ61のメモリ空間を共有する。
【0105】
システムコントローラ63は、トランザクション処理プロセッサ60−1及び60−2からの要求に応じて、システムバス62及びメモリ61を制御する。クラスタインタフェース64は、汎用プロセッサ部52のクラスタインタフェース59と接続されており、汎用プロセッサ部52とのインタフェースを提供する。
【0106】
本実施例では、汎用プロセッサ部52及びトランザクション処理プロセッサ部53は、夫々にメモリ56及びメモリ61を備えており、独立したメモリ空間を有する。汎用プロセッサ部52とトランザクション処理プロセッサ部53との間では、クラスタインタフェース59及び64を介して通信が行なわれる。トランザクション処理プロセッサ部53で、例えば浮動小数点演算が必要な命令が発行された場合には、この命令は、クラスタインタフェース64及び59を介して汎用プロセッサ部52に供給され、汎用プロセッサ部52により実行される。
【0107】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【0108】
【発明の効果】
本発明によれば、オールラウンドな高性能を重視して設計されると共に、1つのプログラムの処理を高速に実行することを重視して設計された汎用高性能プロセッサと、小規模な処理を大量に並列実行することを重視して設計されるマルチスプレッド及び/或いはマルチプロセストランザクション処理プロセッサとを設け、トランザクション処理はトランザクション処理プロセッサに割り当てて、トランザクション処理プロセッサが効率的に実行できない処理は汎用高性能プロセッサに割り当てることで、多様な命令を効率よく処理できる情報処理装置を提供することが出来る。
【図面の簡単な説明】
【図1】高性能汎用プロセッサの一例のブロック構成図である。
【図2】マルチスプレッドトランザクション処理システムのブロック構成図である。
【図3】トランザクション処理プロセッサの一例のブロック構成図である。
【図4】本発明の一実施例のシステム構成図である。
【図5】本発明の一実施例のトランザクション処理プロセッサのブロック構成図である。
【図6】本発明の一実施例のトランザクション処理プロセッサの処理フローチャートである。
【図7】本発明の一実施例のトランザクション処理プロセッサの割り込み処理の処理フローチャートである。
【図8】本発明の一実施例の汎用プロセッサの処理フローチャートである。
【図9】本発明の一実施例の命令割り当て処理の動作説明図である。
【図10】本発明の一実施例の命令割当制御部の処理フローチャートである。
【図11】本発明の他の実施例のシステム構成図である。
【符号の説明】
31 情報処理システム
32−1、32−2 汎用プロセッサ
33−1、33−2 トランザクション処理プロセッサ
34 メインメモリ
35 入出力インタフェース
36 システムコントローラ
37 システムバス
41 トランザクション処理演算部
42 2次キャッシュメモリ
43−1〜43−m プロセッサコア
44 2次キャッシュタグ
45 インタフェース

Claims (6)

  1. 種々の処理のうちで特定の処理をそれ以外の処理よりも頻繁に実行する情報処理装置であって、
    該種々の処理に対応する命令セットを実行可能な第1のプロセッサと、
    該命令セットの一部或いは全てを実行可能であり該特定の処理に対応する該命令セットの一部を該第1のプロセッサより効率的に実行可能な第2のプロセッサ
    を含み、該特定の処理を該第2のプロセッサが実行し該特定の処理以外の処理を該第1のプロセッサが実行し、該第1のプロセッサは汎用プロセッサであり、該第2のプロセッサは該特定の処理であるトランザクション処理を効率的に実行可能なように構成されたトランザクション処理プロセッサであることを特徴とする情報処理装置。
  2. 全ての処理は最初に該第2のプロセッサに割り当てられ、該特定の処理に対応する該命令セットの一部以外の命令を実行必要な場合に、割り込みにより該第2のプロセッサから第1のプロセッサに処理を移すことを特徴とする請求項1記載の情報処理装置。
  3. 全ての処理は最初に該第2のプロセッサに割り当てられ、該第2のプロセッサで実行不可能或いは効率的な実行が出来ない命令が出現した場合に、割り込みにより該第2のプロセッサから第1のプロセッサに処理を移すことを特徴とする請求項1記載の情報処理装置。
  4. 該実行不可能或いは効率的な実行が出来ない命令は、浮動小数点演算命令であることを特徴とする請求項3記載の情報処理装置。
  5. 該第2のプロセッサは、マルチスレッド方式及び複数のプロセッサを用いたマルチプロセッサ方式のうちの少なくとも1つの方式により処理を並列に実行することで、該特定の処理に対応する該命令セットの一部を該第1のプロセッサより効率的に実行可能であることを特徴とする請求項1記載の情報処理装置。
  6. 該第1のプロセッサ及び該第2のプロセッサがメモリ空間を共有することを特徴とする請求項1記載の情報処理装置。
JP2000348475A 1999-12-27 2000-11-15 情報処理装置 Expired - Fee Related JP3981238B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2000348475A JP3981238B2 (ja) 1999-12-27 2000-11-15 情報処理装置
DE10063915A DE10063915B4 (de) 1999-12-27 2000-12-20 Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt
US09/746,068 US7711925B2 (en) 1999-12-27 2000-12-26 Information-processing device with transaction processor for executing subset of instruction set where if transaction processor cannot efficiently execute the instruction it is sent to general-purpose processor via interrupt

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP37161799 1999-12-27
JP11-371617 1999-12-27
JP2000348475A JP3981238B2 (ja) 1999-12-27 2000-11-15 情報処理装置

Publications (2)

Publication Number Publication Date
JP2001249808A JP2001249808A (ja) 2001-09-14
JP3981238B2 true JP3981238B2 (ja) 2007-09-26

Family

ID=26582335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000348475A Expired - Fee Related JP3981238B2 (ja) 1999-12-27 2000-11-15 情報処理装置

Country Status (3)

Country Link
US (1) US7711925B2 (ja)
JP (1) JP3981238B2 (ja)
DE (1) DE10063915B4 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
US7711932B2 (en) * 2003-12-02 2010-05-04 Intel Corporation Scalable rename map table recovery
JP2005242569A (ja) * 2004-02-25 2005-09-08 Fujitsu Ltd データ処理装置設計方法、データ処理装置設計装置及びプログラム
JP2006260377A (ja) * 2005-03-18 2006-09-28 Seiko Epson Corp 並列処理装置および情報処理方法
JP2007219937A (ja) * 2006-02-17 2007-08-30 Toyota Infotechnology Center Co Ltd タスク管理システム、タスク管理方法およびタスク管理プログラム
JP2010500692A (ja) * 2006-08-13 2010-01-07 メンター・グラフィクス・コーポレーション 階層的プロセッサ構成によるマルチプロセッサアーキテクチャ
JP5243711B2 (ja) * 2006-11-10 2013-07-24 セイコーエプソン株式会社 プロセッサ
JP2008242948A (ja) * 2007-03-28 2008-10-09 Toshiba Corp 情報処理装置および同装置の動作制御方法
US8886917B1 (en) * 2007-04-25 2014-11-11 Hewlett-Packard Development Company, L.P. Switching to core executing OS like codes upon system call reading greater than predetermined amount of data
JP4965638B2 (ja) 2009-12-25 2012-07-04 インターナショナル・ビジネス・マシーンズ・コーポレーション タスクの切り換えを制御するシステムおよび方法
US20190294443A1 (en) * 2018-03-20 2019-09-26 Qualcomm Incorporated Providing early pipeline optimization of conditional instructions in processor-based systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3631405A (en) * 1969-11-12 1971-12-28 Honeywell Inc Sharing of microprograms between processors
US4073005A (en) * 1974-01-21 1978-02-07 Control Data Corporation Multi-processor computer system
US4395758A (en) * 1979-12-10 1983-07-26 Digital Equipment Corporation Accelerator processor for a data processing system
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JPH0373008A (ja) 1989-08-11 1991-03-28 Atsugi Unisia Corp スライド型駆動装置
US5329626A (en) * 1990-10-23 1994-07-12 Digital Equipment Corporation System for distributed computation processing includes dynamic assignment of predicates to define interdependencies
JPH05334265A (ja) 1992-05-29 1993-12-17 Toshiba Corp 情報処理装置および情報処理方法
US6085307A (en) * 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof

Also Published As

Publication number Publication date
US7711925B2 (en) 2010-05-04
JP2001249808A (ja) 2001-09-14
DE10063915A1 (de) 2001-07-12
US20010005880A1 (en) 2001-06-28
DE10063915B4 (de) 2008-02-21

Similar Documents

Publication Publication Date Title
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
EP1658563B1 (en) Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US6202130B1 (en) Data processing system for processing vector data and method therefor
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
JP3569014B2 (ja) マルチコンテキストをサポートするプロセッサおよび処理方法
JP4987882B2 (ja) スレッドに最適化されたマルチプロセッサアーキテクチャ
KR101759266B1 (ko) 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법
Kavi et al. Scheduled dataflow: Execution paradigm, architecture, and performance evaluation
US20080046689A1 (en) Method and apparatus for cooperative multithreading
JPH06208552A (ja) スモール・グレイン機構
KR100940956B1 (ko) 다중 스레드 초장 명령어 프로세서 및 명령 처리 방법
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
KR19980018070A (ko) 비대칭 싱글-칩 이중 멀티프로세서의 정합 및 동기화
KR20010095069A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품
RU2312388C2 (ru) Способ организации многопроцессорной эвм
JP3981238B2 (ja) 情報処理装置
KR20010095073A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품
WO2005022384A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
Loikkanen et al. A fine-grain multithreading superscalar architecture
Cogswell et al. Macs: A predictable architecture for real time systems
Kawano et al. Fine-grain multi-thread processor architecture for massively parallel processing
US20080184194A1 (en) Method and System for Enhancing Computer Processing Performance
Chaudhry et al. A case for the multithreaded processor architecture
Lin et al. Strategies for Implementing a Multithreaded Shared Pipeline Processor
Arul et al. Cache performance of scheduled dataflow architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070123

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070322

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070626

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070629

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100706

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100706

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110706

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110706

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120706

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120706

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130706

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees