JP2009110209A - 演算処理装置、プロセッサ、プログラム変換装置およびプログラム - Google Patents

演算処理装置、プロセッサ、プログラム変換装置およびプログラム Download PDF

Info

Publication number
JP2009110209A
JP2009110209A JP2007281018A JP2007281018A JP2009110209A JP 2009110209 A JP2009110209 A JP 2009110209A JP 2007281018 A JP2007281018 A JP 2007281018A JP 2007281018 A JP2007281018 A JP 2007281018A JP 2009110209 A JP2009110209 A JP 2009110209A
Authority
JP
Japan
Prior art keywords
instruction
program
instructions
issued
arithmetic processing
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.)
Withdrawn
Application number
JP2007281018A
Other languages
English (en)
Inventor
Masahide Kaketa
雅英 掛田
Shinji Ozaki
伸治 尾崎
Takao Yamamoto
崇夫 山本
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.)
Panasonic Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2007281018A priority Critical patent/JP2009110209A/ja
Priority to US12/259,589 priority patent/US20090113179A1/en
Priority to CNA2008101738120A priority patent/CN101425006A/zh
Publication of JP2009110209A publication Critical patent/JP2009110209A/ja
Withdrawn 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Abstract

【課題】ハードウェアアクセラレータと同期を取る場合に、命令の実行の実時間を最短サイクルで保障することを可能とすることができる演算処理装置を提供する。
【解決手段】本発明のプロセッサは、同時実行可能な命令からなる命令グループを構成する命令を同時に発行し実行するプロセッサであって、前記プロセッサは、特定命令を含むプログラムを実行し、前記特定命令は、前記特定命令を含む命令グループから前記特定命令に後続する命令を除外することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示する。
【選択図】図1

Description

本発明は、複数の命令を同一サイクルで実行できる演算処理装置において、演算処理装置に関し、特にマルチスレッド化されたプロセッサからハードウェアアクセラレータに対して効率的に同期を取る場合に適用して有効な技術に関する。
昨今では、スーパーパイプライン技術のみならず、スーパースカラやマルチプロセッサ、そして、マルチスレッドアーキテクチャなどプロセッサの並列化技術による処理性能の向上が多く見られる。一方で、ハードウェアアクセラレータや、プログラムからの要求に対して、一定時間内に処理を確実に終了しなければならないリアルタイム処理の要望が高くなってきている。
特開平9−54693号公報(図1) 特開2003−271399号公報(図1) 米国特許第5958044号明細書(図1) John L. Hennessy & David A. Patterson "Computer Architecture A Quantitative Approach Fourth Edition" 2006(P.172 Chapter Three Limits in Instruction-Level Parallelism)
しかしながら、ハードウェアアクセラレータへのアクセスを伴うリアルタイム処理において、前記並列化技術を適応したプロセッサは、リアルタイム処理性能を容易に保障できる機構を持っていない。そのため、リアルタイム処理性能を保障しようとした場合は、十分な性能を持ったプロセッサを必要とするか、本来発生する確率が少ないワーストケース(プロセッサ負荷やメモリアクセス競合、その他のパイプラインハザード)まで想定した実効性能の見積りを実行可能なプロセッサが必要になる。たとえば、リアルタイム処理の完了をロードストアアクセスのパイプラインストールで待つ方法は、ハードウェアアクセラレータへのアクセスに同期することができるため、最短時間で動作を保障することができるが、パイプライン制御にインターロック機構を必要とするため、高速化されたスーパーパイプライン機構をもつプロセッサのマイクロアーキテクチャではスピードパスに関する実装上の課題が発生する。また、ハードウェアアクセラレータへのアクセスを割込みや、Corse Grain Multithreading(CGMT)機構(特許文献2等を参照)で同期をとる方法は、現行処理の切り替えオーバーヘッドの粒度が大きいため、プロセッサで数サイクルから数十サイクルの粒度でタイミング(同期)を取る機構としては、リアルタイム処理のワーストケース保障の観点から課題がある。最後に、分岐命令、ロードストアアクセスのパイプラインリスタート実行、もしくは、NOP命令挿入によるタイミング調整方法は、最も細粒度でタイミング(同期)を取ることができる機構として適している。しかし、NOP命令数の増大や、動作周波数に応じたコード変更が必要であり、それだけでなく、スーパーパイプラインでSimultaneous Multithreading(SMT)機構を持つプロセッサにおいては、この分岐命令、リスタート実行、NOP命令の挿入といえども、ワーストケースを想定した場合は、その細粒度の調整が困難になるという課題がある。1つ目のNOP数の増大に関する課題は、特許文献3の機構を利用すれば、コードサイズの削減は可能であるが、2つ目の課題の動作周波数に対するコード変更は必要であり、この変更漏れは、ソフトウェアのバグとしては非常に検出困難な不具合として残ってしまう課題がある。3つ目の課題のスーパーパイプラインでSMT機構を持ったプロセッサは、できるだけ多くの命令を実行するという考え方のもとで動作しているため、できるだけ多く実行された場合を想定したNOP数の挿入が必要になる。つまり、SMT実行の場合、他スレッドの命令流が実行される場合もあり、毎サイクル自スレッドの命令流が実行されない場合もあるため、ワーストケースを見積もったNOP数では、実時間が空き過ぎるという調整可能な粒度の課題が新たに発生する。
以上のように、スーパーパイプラインでマルチスレッド化されたプロセッサがハードウェアアクセラレータにアクセスする場合に、細粒度の期間(サイクル単位)で命令実行の実時間を最短サイクルでリアルタイム保障可能な方法について考慮する必要がある。
本発明の目的は、マルチスレッドパイプラインの構成をもった演算処理装置において、ハードウェアアクセラレータと同期を取る場合に、マルチスレッド実行状態にかかわらず、命令の実行の実時間を最短サイクルで保障することを可能とすることができる演算処理装置を提供することにある。
上記問題を解決するために本発明の演算処理装置は、複数の命令を同一サイクルで実行できる演算処理装置において、複数の命令コードをフェッチする命令フェッチ手段と、前記命令フェッチ手段によりフェッチされた複数の命令コードを、同時発行可能な命令からなる1つ以上の命令グループに分割し、命令グループの命令コードを発行する命令発行手段と、前記命令発行手段より発行された1つ以上の命令コードを解読し、演算に必要な制御信号を生成する命令デコード手段と、前記命令デコード手段に生成された前記制御信号に従って演算を行う演算処理手段とを備え、前記命令発行手段は、特定命令の発行直後の所定サイクル期間だけ前記特定命令に後続する命令の発行を停止することを指示する前記特定命令を検出する検出手段と、前記特定命令の発行直後の所定サイクル期間だけ前記後続する命令の発行を停止させる命令発行停止手段とを有することを特徴とする。
ここで、前記命令発行手段は、前記特定命令が検出された場合、前記特定命令を含む命令グループの中から前記特定命令に後続する命令を除外するようにしてもよい。
ここで、前記命令フェッチ手段は、複数のスレッドからそれぞれ命令コードをフェッチし、前記命令発行手段は、スレッド毎にスレッド中の命令列を命令グループに分割するようにしてもよい。
なお、本発明において、SMT実行可能なプロセッサのプログラム実行時間の最短実行時間の調整を行うことを命令同期実行と説明する。
ここで、前記検出手段は、命令コード中の1ビットの命令ビットフィールドにより前記特定命令を検出するようにしてもよい。この構成によれば、1ビットの命令ビットフィールドで前記命令同期実行検出を行うため、全命令に対して、リアルタイム実行可能な手段を有している。
ここで、前記検出手段は、命令コード中の複数ビットの命令ビットフィールドをデコードすることにより前記特定命令を検出するようにしてもよい。この構成によれば、複数の命令ビットフィールドをデコードして前記命令同期実行検出を行うため、ある特定の命令に対してリアルタイム実行可能な手段を有している。
ここで、前記検出手段は、命令コード中の複数ビットの命令ビットフィールドをデコードすることによって第1および第2の命令を検出し、前記第1の命令から前記第2の命令の直前までの各命令を前記特定命令として検出するようにしてもよい。ここで、前記プロセッサは、さらに、前記後続命令の発行を停止中であることを示す状態信号を保持するプロセッサ状態レジスタを有するようにしてもよい。この構成によれば、複数の命令ビットフィールドをデコードして前記命令同期実行の有効検出と無効検出を行うため、リアルタイム実行可能な状態を管理する手段を有している。
ここで、前記保持手段は、割込み処理の発生により保持している状態信号をディスエーブルしてもよい。この構成によれば、複数の命令ビットフィールドをデコードして前記命令同期実行の有効検出と無効検出を行い、割込みを受理した場合も無効検出する手段を有しているため、リアルタイム実行可能な状態を管理し、割込み処理などによって十分時間が経過した場合にその状態を解除する手段を有している。
ここで、前記命令発行停止手段は、前記所定サイクル期間を示すサイクル数を記憶するサイクル数記憶手段を有し、記憶されたサイクル数だけ前記後続命令の発行を停止してもよい。この構成によれば、あらかじめ決められたサイクル数の停止手段を有しているため、リアルタイム実行可能な粒度を想定することができる。また、ソフトウェアにより設定されたサイクル数で停止する手段を有しているため、リアルタイム実行可能な粒度を変更することができる。
ここで、前記サイクル数記憶手段は、前記演算処理装置の動作周波数に対応するサイクル数を記憶してもよい。この構成によれば、あらかじめ決められたプロセッサの動作周波数の設定に応じたサイクル数の停止手段を有しているため、動作周波数に関わらずリアルタイム実行可能な粒度を想定することができる。
ここで、前記サイクル数記憶手段は、前記演算処理装置が動作可能な複数の動作周波数に対応する複数のサイクル数を記憶してもよい。この構成によれば、プロセッサの動作周波数の設定に応じて、ソフトウェアにより設定されたサイクル数で停止する手段を有しているため、動作周波数に関わらずリアルタイム実行可能な粒度を変更することができる。
ここで、前記命令発行手段は、前記特定命令の属するスレッドが他のスレッドよりも優先される動作モードか否かを検出する動作モード検出手段を有し、前記命令発行停止手段は、検出された動作モードに応じて、前記所定のサイクル期間だけ前記後続命令の発行を停止してもよい。この構成によれば、SMT実行における性能保障の設定に応じたサイクル数の停止手段を有しているため、性能保障モードに関わらずリアルタイム実行可能な粒度を想定することができる。
ここで、前記命令発行手段は、前記特定命令の属するスレッドが他のスレッドよりも優先される動作モードか否かを検出する動作モード検出手段と、動作モード毎に前記所定サイクル期間を示すサイクル数を記憶するサイクル数記憶手段とを有し、前記命令発行停止手段は、検出された動作モードに応じたサイクル数の期間だけ前記後続命令の発行を停止してもよい。この構成によれば、SMT実行における性能保障の設定に応じて、ソフトウェアにより設定されたサイクル数で停止する手段を有しているため、性能保障モードに関わらずリアルタイム実行可能な粒度を変更することができる。
ここで、前記命令同期実行検出手段は、前記第1の命令から前記第2の命令までの間に発行可能な命令数を記憶し、発行される毎にカウントダウンする命令数記憶手段を有してもよい。
ここで、前記演算処理装置は、さらに、前記保持手段に保持された状態信号の値を保持するプロセッサ状態レジスタを有し、前記命令発行停止手段は、前記保持手段が前記後続命令の発行を停止中であることを示す状態信号を保持している場合に、前記第1の命令から前記第2の命令までの間に発行可能な命令数を記憶し、発行される毎にカウントダウンする命令数記憶手段を有してもよい。この構成によれば、請求項13、14に記載の演算処理装置では、命令同期実行モード中に発行可能な命令数を設定できるようにすることで、不要な命令スロットを埋めるダミー命令を生成することなく命令発行数を制御することができる。
また、本発明のプログラム変換装置は、第1のプログラムを第2のプログラムに変換するプログラム変換装置であって、第1のプログラムから、特定命令の設定をプログラム変換装置に指示する指示文を抽出する抽出手段と、第1のプログラム中の、前記指示文に従って、外部装置に処理を要求する第1の命令と、当該外部装置から応答を読み出す第2の命令を検出する検出手段と、前記第1の命令から第2の命令までの間に、特定命令を設定することにより第2プログラムを生成する生成手段とを有し、前記特定命令は、前記特定命令を含む命令グループから前記特定命令に後続する命令を除外することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示することを特徴とする。この構成によれば、例えばC言語記述のプログラム中に指示文(プラグマ等)を挿入することで、命令同期実行モード中の自スレッドの先行処理可能なプログラムを挿入することができる。
また、本発明のプロセッサは、同時実行可能な命令からなる命令グループを構成する命令を同時に発行し実行するプロセッサであって、前記プロセッサは、特定命令を含むプログラムを実行し、前記特定命令は、前記特定命令を含む命令グループから前記特定命令に後続する命令を除外することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示する。
ここで、前記プロセッサは、複数のスレッドをフェッチし、スレッド毎にスレッド中の命令列を命令グループに分割するマルチスレッドプロセッサであってもよい。
本発明の効果は、マルチスレッドプロセッサ構成の演算処理装置において、各スレッドの命令実行状態に関わらず、自スレッドの命令実行時間の最短実行時間をマルチスレッド実行性能割り当てに応じた形で保障することができる。
以下、本発明の実施の形態を、図面を参照しながら説明する。
(実施の形態1)
本実施の形態の演算処理装置は、同時実行可能な命令からなる命令グループを構成する命令を同時に発行し実行するプロセッサであって、このプロセッサが実行するプログラムは、特定命令を含む。ここで、特定命令とは、前記特定命令を含む命令グループから前記特定命令に後続する命令を除外することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示する命令である。
以下では、プロセッサが、複数のスレッドをフェッチし、スレッド毎にスレッド中の命令列を命令グループに分割するマルチスレッドプロセッサである場合について、図1〜図12を用いて説明する。本実施の形態のマルチスレッドプロセッサの一例として、3スレッドを同時に実行可能であり、スレッド毎に最大3命令を発行可能で、同時発行可能な命令は2スレッドの命令グループ、同時発行可能な命令は最大4命令として説明を行う。
図1は、本実施の形態に係る演算処理装置の構成を示す機能ブロック図である。同図において、演算処理装置としてのプロセッサ100は、命令伝達部110、演算実行部130、命令メモリ140、データメモリ150、レジスタグループ160から構成され、命令伝達部110は、命令メモリ140にバス171で、演算実行部130にバス175で接続されている。演算実行部は、命令伝達部110にバス175で、データメモリ150にバス172で、レジスタグループ160にバス173で接続されている。
命令伝達部110は、プログラムとして書かれた命令、もしくは、ハードウェア制御によって割り込まれた処理に従って決定されるアドレスに記載されたコードを命令メモリ140から読み出しアクセスする命令フェッチ部111と、命令フェッチ部111から得られるスレッド毎に分割された命令コードに対して、演算実行部のパイプラインハザード検出と、スレッド間の演算リソース競合検出と、スレッド間の命令発行調停とを行った後、演算実行部130に1つ以上の命令コードを発行する命令発行部112から構成されている。
命令発行部112は、命令実行サイクルを同期させて実行する命令かどうかを検出する命令同期実行検出部121と、命令同期実行検出部の出力に応じて命令発行を停止するための信号のうちのひとつを生成することができる命令発行停止部122とを有している。なお、命令同期実行検出部121によって得られた検出情報は、スレッド内の命令発行グループ分割の条件(後に記載する、命令バッファの命令コード有効ビット)としても使用される。
演算実行部130は、同一サイクルで複数スレッドの命令を実行できる命令群を命令伝達部110から入力し、演算実行部の制御信号と演算に必要なデータを作成する命令デコード部131と、命令デコード部131によって作成された制御信号とデータからデータアクセスするデータアクセス部132と、命令デコード部と、データアクセス部から作成された制御信号とデータから演算を実行する演算処理部133から構成されている。さらに、データアクセス部132は、データメモリ150、および、プロセッサに必要な各種レジスタを含むレジスタグループ160に接続されている。なお、本実施の形態では、3スレッド動作可能なSMT構成をもったプロセッサとする。そのため、プロセッサの内部資源は、それぞれ3スレッド分持っているものとする。
図2は、命令コードのビット構成例を示す図である。本実施の形態では、32ビット固定の命令ビットマップを例に説明しており、ビット31のSが、1の時に命令同期実行を行う特定命令であることを示す。ここで特定命令は、前記特定命令を含む命令群の中から前記特定命令に後続する命令を排除することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示する命令をいう。同図のように、特定命令であるか否かはビット31によって定まるので、本実施形態では全ての命令が特定命令となり得る。なお、ビットのアサイン方法に関しては、この限りではない。
図3は、図1の命令同期実行検出部121の内部構成のうち1スレッドに対応する構成を示すブロック図である。3スレッドを同時実行するマルチスレッドプロセッサの場合、図1の命令同期実行検出部121は、同図の構成を3セット備えることになる。
命令発行部112は、スレッド毎に発行対象となる最大命令数分を格納する命令バッファ550があり、プログラムカウンタ順に、第1命令コード551、第2命令コード552、第3命令コード553、および、それらのバッファに有効な命令が格納されているかどうかを示す、第1有効ビット554、第2有効ビット555、第3有効ビット556が格納されている。
これらの情報を入力とし、命令同期実行検出部500は、第1命令コード551のビット31と第1有効ビット554を入力とするANDゲート511と、第2命令コード552のビット31と第2有効ビット555を入力とするANDゲート512と、第3命令コード553のビット31と第3有効ビット556を入力とするANDゲート513と、ANDゲート511とANDゲート512とANDゲート513を入力とするORゲート514から構成される。命令同期実行検出部500は、第1〜第3命令コード中の各1ビットの命令ビットフィールドにより、命令同期実行が必要な上記の特定命令を検出する。ORゲート514の出力として、命令同期実行が必要な命令が含まれていることを示す命令同期実行検出信号590が生成される。
さらに、命令同期実行検出信号より最終的に命令バッファに格納されている命令が発行可能かどうかを示すために、第1有効ビット554をそのまま出力とする第1命令コード有効ビット591と、第2有効ビット555とANDゲート511の出力の反転を入力とするANDゲート581の出力とする第2命令コード有効ビットと、第3有効ビット556とANDゲート581の出力とANDゲート512の出力の反転を入力とするANDゲート582の出力とする第3命令コード有効ビットが生成される。上記のANDゲート511〜513、581および582は、特定命令が検出された場合、特定命令を含む命令グループの中から特定命令に後続する命令を除外する。つまり、この場合の後続する命令に対応する有効ビットは、第2命令コード有効ビット592、第3命令コード有効ビット593として無効化される。
これにより、命令同期実行検出部の出力の命令同期実行検出信号590により、命令グループに同期実行を行う特定命令が含まれていることを示し、第1命令コード有効ビット591、第2命令コード有効ビット592、第3命令コード有効ビット593により、スレッド内の特定命令を含む命令グループの中から前記特定命令に後続する命令が除外される。
なお、図3の命令同期実行検出部は、スレッド内の制御信号のみを示している。本実施の形態では、3スレッド同時実行可能なプロセッサを想定しているため、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
図4は、図1に記載のレジスタグループ160の一例としてのレジスタグループ900の内部構成を示す図である。レジスタグループ900は、汎用レジスタ912〜915、プロセッサ状態を格納するプロセッサ状態レジスタ910、オペランドデータラッチ921〜924を備え、これ以外にも、演算結果のフラグを格納するフラグレジスタ、その他プロセッサに必要な制御レジスタを含む。なお、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
図5は、図1に記載の命令発行停止部122の内部構成のうち1スレッドに対応する命令発行停止部1000の構成を示すブロック図である。命令発行停止部1000は、命令同期実行検出部500より出力される命令同期実行検出信号590より得られる命令発行停止要求信号1010と命令発行部112および演算実行部130より得られるパイプラインハザードに関係するパイプラインハザード状態信号1030を入力とする。
命令発行停止部1000は、命令発行停止要求信号1010と、命令伝達部に使用されているクロック信号1021を入力とするフリップフロップ1020と、フリップフロップ1020の出力を入力とする命令発行停止期間を示す信号を生成するステートマシンである同期制御部1050と、パイプラインハザード状態信号1030を入力とする命令発行停止期間を示す信号を生成するステートマシンであるハザード検出部1031とを有し、同期制御部1050の出力とハザード検出部1031の出力とを入力とするORゲート1040から構成される。同期制御部1060は、上記の特定命令の発行直後の所定サイクル期間だけ特定命令に後続する命令の発行を停止することを指示する命令発行停止状態信号1050を出力する。所定サイクル期間は2サイクル、3サイクルなど予め固定的に定めておいてもよい。
これにより、ORゲート1040の出力の命令発行停止状態信号1050が命令発行停止部1000の出力信号として生成され、命令発行停止状態信号1050により、次サイクルに自スレッドの命令が発行できないことを示す信号を生成することができる。
なお、図5の命令発行停止部は、スレッド内の制御信号のみを示している。本実施の形態では、3スレッド同時実行可能なプロセッサを想定しているため、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
なお、本実施の形態1では、命令伝達部と演算実行部の内部構成を示したが、これらの処理の順番はパイプラインの構成により入れ替えることが可能であり、この限りではない。
以上のことから、命令同期実行を行うことを示す命令コードをプリデコードし、スレッド毎に、通常のプロセッサで必要になるパイプラインハザード状態信号1030とパイプラインハザードとは無関係に命令によって生成される命令発行停止要求信号1010との論理和によって命令発行制御を行う命令発行部211を有することにより、SMT実行可能なプロセッサで、他スレッドの実行状態に関わらず、自スレッドに該当するプログラムの実行時間の最短時間を細粒度で調整可能な演算処理装置を提供することができる。
以下に、本実施の形態で説明するプログラムとその動作例として、図6〜図9に示すプログラム例と、各スレッドの命令実行状態を示す図10、図11を参照しながら説明する。
図6に示すプログラムA−1は、本実施の形態を利用しない従来技術の課題と実施の形態1の効果を説明するためのスレッドAのプログラム例である。図7に示すプログラムA−2は、本実施の形態を利用した場合のスレッドAのプログラム例である。図8に示すプログラムB−1、および、図9に示すプログラムC−1は、スレッドA動作時に実行されるスレッドB、および、スレッドCのプログラム例である。
図6に示すプログラムA−1は、命令発行部112によって実行されたスレッドAの命令発行可能な命令グループを記載している。STEPの列には、各実行ステップを発行される順にSA1、SA2、・・・、SA15と記載している。各スレッドの同一サイクルに発行できる命令は、ロード・ストア命令は1命令のみ発行可能、算術論理演算、および、転送命令は3命令発行可能とする。SA1の命令は、Instruction1とInstrucion2とInstruction3の3命令可能なうち、setlo命令、および、sethi命令が発行可能である。setlo命令は、レジスタr0に即値32ビット(HWE_A)の下位16ビットを格納する命令である。sethi命令は、レジスタr0に即値32ビット(HWE_A)の上位16ビットを格納する命令である。後続のst命令は、SA1命令グループのハザード回避のため、SA2に発行可能となる。SA2の命令は、レジスタr1の内容を、r0をアドレスとするメモリ空間にストアする命令とnop命令である。SA3からSA9はnop命令である。SA10は、SA1と同様に、即値32ビット(HWE_ST)をレジスタr2に格納する命令とnop命令である。SA11は、r1をアドレスとするメモリ空間からロードし、レジスタr0に内容を格納するld命令である。SA12は、レジスタr1と即値100の和をレジスタr1に格納する命令である。SA13は、レジスタr1の内容を、r2をアドレスとするメモリ空間にストアする命令である。SA14およびSA15は、レジスタr0と即値1の和をレジスタr0に格納するadd命令である。このスレッドAのプログラムA−1は、あるハードウェアアクセラレータ(HWE_A)に書き込みを行い、8nSecたった後に、同アドレスをロードすると特殊な演算結果が得られるというハードウェアアクセラレータのモデルとする。このプログラムの動作しているプロセッサの動作周波数は、1GHzとしているため、8nSecの時間を空けるために、SA2からSA9まで、8つのnop命令と、SA10で3命令発行させることにより、計9つのNop命令で8つの命令発行サイクルを経て、つまり、計8nSecの時間を空けてハードウェアアクセラレータからのロード時間制約を満たしている。
図8に示すプログラムB−1は、命令発行部112によって実行されたスレッドBの命令発行可能な命令グループを記載している。STEPの列には、各実行ステップを発行される順にSB1、SB2、・・・、SB13と記載している。各スレッドの同一サイクルに発行できる命令は、ロード・ストア命令は1命令のみ発行可能、算術論理演算、および、転送命令は3命令発行可能とする。SB1の命令は、Instruction1とInstrucion2とInstruction3の3命令可能なうち、レジスタr5に即値1の和をレジスタr7に格納するadd命令、および、レジスタr2をアドレスとするメモリ空間からレジスタr3にロードするld命令である。SB2の命令は、レジスタr5がレジスタr7より大きい場合に、フラグレジスタC6に1を格納する比較命令と、レジスタr3の内容を、レジスタr0をアドレスとするメモリ空間にストアするst命令と、レジスタr2に即値120の和をレジスタr0に格納するadd命令である。SB3の命令は、レジスタr5の内容をレジスタr6にコピーするmov命令と、レジスタr5の内容を、レジスタr0をアドレスとするメモリ空間にストアするst命令と、フラグレジスタC6が1に設定されている場合に、L028ラベルに分岐するbr命令である。SB4の命令は、分岐先を格納するターゲットアドレスレジスタTARに分岐先アドレス(PC)を格納するsettar命令と、即値200をレジスタr0にコピーするmov命令である。SB5の命令は、レジスタr5とレジスタr0の和をレジスタr4に格納するadd命令である。SB6の命令は、レジスタ4の内容を2ビット左シフトし、レジスタr5との和をレジスタr4に格納するs2add命令である。SB7の命令は、レジスタr6に即値1の和をレジスタr6に格納するadd命令である。SB8の命令は、レジスタr6がレジスタr7より小さいか、もしくは、同じ場合に、フラグレジスタC6に1を格納する比較命令である。SB9の命令は、レジスタr5の内容を、レジスタr4をアドレスとするメモリ空間にストアし、アドレスr4に4を足すポストインクリメントst命令と、フラグレジスタC6が1に設定されている場合に、分岐先を格納するターゲットアドレスレジスタTARに格納されている分岐先アドレス(PC)にジャンプするjmpf命令である。SB10の命令は、即値200をレジスタr4にコピーする命令である。SB11からSB13の命令は、レジスタr4に即値1の和をレジスタr4に格納するadd命令である。
図9に示すプログラムC−1は、命令発行部112によって実行されたスレッドCの命令発行可能な命令グループを記載している。STEPの列には、各実行ステップを発行される順にSC1、SC2、・・・、SC14と記載している。各スレッドの同一サイクルに発行できる命令は、ロード・ストア命令は1命令のみ発行可能、算術論理演算、および、転送命令は3命令発行可能とする。SC1の命令は、Instruction1とInstrucion2とInstruction3の3命令可能なうち、setlo命令、および、sethi命令が発行可能である。setlo命令は、レジスタr0に即値32ビット(W_MEM)の下位16ビットを格納する命令である。sethi命令は、レジスタr0に即値32ビット(W_MEM)の上位16ビットを格納する命令である。SC2の命令は、レジスタr0をアドレスとするメモリ空間から8バイトロードし、レジスタr2、レジスタr3に格納し、レジスタr0に4を足すポストインクリメントldp命令と、レジスタr1に即値1000の和をレジスタr1に格納するadd命令である。SC3の命令は、レジスタr0をアドレスとするメモリ空間から8バイトロードし、レジスタr4、レジスタr5に格納し、レジスタr0に4を足すポストインクリメントldp命令と、レジスタr2とレジスタr3の和をレジスタr6に格納するadd命令と、レジスタr2とレジスタr3の差をレジスタr7に格納するsub命令である。SC4の命令は、レジスタr0をアドレスとするメモリ空間から8バイトロードし、レジスタr2、レジスタr3に格納し、レジスタr0に4を足すポストインクリメントldp命令と、レジスタr4とレジスタr5の和をレジスタr8に格納するadd命令と、レジスタr4とレジスタr5の差をレジスタr9に格納するsub命令である。SC5の命令は、レジスタr0をアドレスとするメモリ空間から8バイトロードし、レジスタr4、レジスタr5に格納し、レジスタr0に4を足すポストインクリメントldp命令と、レジスタr2とレジスタr3の和をレジスタr10に格納するadd命令と、レジスタr2とレジスタr3の差をレジスタr11に格納するsub命令である。SC6の命令は、レジスタr6とレジスタr7の内容を、レジスタr1をアドレスとするメモリ空間に8バイトストアし、レジスタr1に4を足すポストインクリメントstp命令と、レジスタr4とレジスタr5の和をレジスタr12に格納するadd命令と、レジスタr4とレジスタr5の差をレジスタr13に格納するsub命令である。SC7の命令は、レジスタr8とレジスタr9の内容を、レジスタr1をアドレスとするメモリ空間に8バイトストアし、レジスタr1に4を足すポストインクリメントstp命令である。SC8の命令は、レジスタr10とレジスタr11の内容を、レジスタr1をアドレスとするメモリ空間に8バイトストアし、レジスタr1に4を足すポストインクリメントstp命令である。SC9の命令は、レジスタr12とレジスタr13の内容を、レジスタr1をアドレスとするメモリ空間に8バイトストアし、レジスタr1に4を足すポストインクリメントstp命令である。SC10からSC14の命令は、レジスタr1と即値1の和をレジスタr1に格納する命令である。
以上で、本実施の形態の動作説明をするための各スレッドのプログラムの内容を説明した。ここで、図10を用いてSMT実行を可能とした、図1に記載のプロセッサを用いて動作説明を行う。なお、本説明の簡略化のため、命令発行部112は、以下のルールに従ったSMT実行をサポートする。各スレッドは、最大3命令発行可能とし、同時に実行可能なスレッドは優先度に従って2スレッドのみとする。さらに、各スレッドの命令を同時実行する場合は、スレッド毎の命令グループを変更しないことを前提とし、4命令発行可能な場合のみSMT実行可能とする。ただし、同一サイクルにおける、ロード命令の複数発行、ストア命令の複数発行は不可能とし、ストア命令とロード命令の同時発行は可能とする。さらに、今回説明を簡略化するために、分岐命令や各種演算、ロードユースのスループットは1サイクルとして説明する。
図10は、図6のプログラムA−1、図8のプログラムB−1、図9のプログラムC−1をSMT実行した場合の動作説明図である。STEPの列には、各実行ステップを発行される順にT1、T2、・・・、T20と記載している。実行可能なスレッドの優先度はPriorityの列の規則に従って命令発行調停されるとする。T1は、A>C>Bの優先度で命令発行制御され、SA1の2命令とSC1の2命令が発行される。T2は、C>B>Aの優先度で命令発行制御され、SC2の2命令とSA2の2命令が発行される。なぜなら、SB1はロード命令を含むためロード命令を同時発行できないため、スレッドBの命令グループは発行できず、スレッドAの命令グループが発行される。T3は、B>A>Cの優先度で命令発行制御され、SB1の2命令とSA3の1命令が発行される。T4は、A>C>Bの優先度で命令発行制御され、SA4の1命令とSC3の3命令が発行される。T5は、C>B>Aの優先度で命令発行制御され、SC4の3命令とSA5の1命令が発行される。T6は、B>A>Cの優先度で命令発行制御され、SB2の3命令とSA6の1命令が発行される。T7は、A>C>Bの優先度で命令発行制御され、SA7の1命令とSC5の3命令が発行される。T8は、C>B>Aの優先度で命令発行制御され、SC6の3命令とSA8の1命令が発行される。T9は、B>A>Cの優先度で命令発行制御され、SB3の3命令とSA9の1命令が発行される。T10は、A>C>Bの優先度で命令発行制御され、SA10の3命令とSC7の1命令が発行される。T11は、C>B>Aの優先度で命令発行制御され、SC8の1命令とSB4の2命令が発行される。T12は、B>A>Cの優先度で命令発行制御され、SB5の1命令とSA11の1命令が発行される。T13は、A>C>Bの優先度で命令発行制御され、SA12の1命令とSC9の1命令が発行される。T14は、C>B>Aの優先度で命令発行制御され、SC10の1命令とSB6の1命令が発行される。T15は、B>A>Cの優先度で命令発行制御され、SB7の1命令とSA13の1命令が発行される。T16は、A>C>Bの優先度で命令発行制御され、SA14の1命令とSC11の1命令が発行される。T17は、C>B>Aの優先度で命令発行制御され、SC12の1命令とSB8の1命令が発行される。T18は、B>A>Cの優先度で命令発行制御され、SB9の2命令とSA15の1命令が発行される。T19は、A>C>Bの優先度で命令発行制御され、SA16の1命令とSC13の1命令が発行される。T20は、C>B>Aの優先度で命令発行制御され、SC14の1命令とSB10の1命令が発行される。
以上で、本実施の形態を利用した従来例を示した。次に、図7のプログラムA−2を用いた、本実施の形態を利用した場合のSMT動作説明を行う。
図7に示すプログラムA−2は、命令発行部112によって実行されたスレッドAの命令発行可能な命令グループを記載している。STEPの列には、各実行ステップを発行される順にSA'1、SA'2、・・・、SA'15と記載している。各スレッドの同一サイクルに発行できる命令は、ロード・ストア命令は1命令のみ発行可能、算術論理演算、および、転送命令は3命令発行可能とする。SA'1の命令は、Instruction1とInstrucion2とInstruction3の3命令可能なうち、setlo命令、および、sethi命令が発行可能である。setlo命令は、レジスタr0に即値32ビット(HWE_A)の下位16ビットを格納する命令である。sethi命令は、レジスタr0に即値32ビット(HWE_A)の上位16ビットを格納する命令である。後続のst命令は、SA1命令グループのハザード回避のため、SA'2に発行可能となる。SA'2の命令は、レジスタr1の内容を、r0をアドレスとするメモリ空間にストアする命令を命令同期実行検出可能なsync_st命令である。これは、図2に記載の命令ビットマップで、ビット31のSビットが1になっている状態のst命令である。SA'3は、即値32ビット(HWE_ST)の下位16ビットをレジスタr2に格納するsetlo命令の命令同期実行可能なsync_setlo命令である。SA'4は、即値32ビット(HWE_ST)の上位16ビットをレジスタr2に格納するsethi命令の命令同期実行可能なsync_sethi命令である。SA'5は、レジスタr0をアドレスとするメモリ空間からロードし、レジスタr1に格納するld命令である。SA'6は、レジスタr1と即値100の和をレジスタr1に格納する命令である。SA'7は、レジスタr1の内容を、r2をアドレスとするメモリ空間にストアする命令である。SA'8からSA'14は、レジスタr0と即値1の和をレジスタr0に格納するadd命令である。このスレッドAのプログラムA−2(図7)は、あるハードウェアアクセラレータ(HWE_A)に書き込みを行い、8nSecたった後に、同アドレスをロードすると特殊な演算結果が得られるというハードウェアアクセラレータのモデルとする。このプログラムの動作しているプロセッサの動作周波数は、1GHzとしているため、8nSecの時間を空けるために、命令同期実行の命令が検出されてから2サイクルの命令発行停止期間を持つことを特徴とし、SA'2からSA'4まで、3つの命令同期実行により、計8nSecの時間を空けてハードウェアアクセラレータからのロード時間制約を満たしている。これは、図5に記載の命令発行停止部1000の同期制御部1060がフリップフロップ1020でラッチされた命令発行停止要求信号1010がステートマシンである同期制御部1060に入力され、パイプラインハザード状態1030に関わらず、2サイクルの期間命令発行停止状態信号1050を出力することを示している。
図11は、図7のプログラムA−2、図8のプログラムB−1、図9のプログラムC−1をSMT実行した場合の動作説明図である。STEPの列には、各実行ステップを発行される順にT1、T2、・・・、T20と記載している。実行可能なスレッドの優先度はPriorityの列の規則に従って命令発行調停されるとする。T1は、A>C>Bの優先度で命令発行制御され、SA'1の2命令とSC1の2命令が発行される。T2は、C>B>Aの優先度で命令発行制御され、SC2の2命令とSA'2の2命令が発行される。なぜなら、SB1はロード命令を含むためロード命令を同時発行できないため、スレッドBの命令グループは発行できず、スレッドAの命令グループが発行される。T3は、B>A>Cの優先度で命令発行制御され、SB1の2命令とSA'3の1命令が発行される。T4は、A>C>Bの優先度で命令発行制御されるが、命令同期実行制御により、SAの命令発行が2サイクル禁止されているため、SA'4の命令は発行されず、SC3の3命令が発行される。T5は、C>B>Aの優先度で命令発行制御されるが、T4と同様SA'4の命令は発行されないために、SC4の3命令のみが発行される。T6は、B>A>Cの優先度で命令発行制御され、SB2の3命令とSA'4の1命令が発行される。T7は、A>C>Bの優先度で命令発行制御されるが、命令同期実行制御により、SA'5の命令は発行されず、SC5の3命令のみが発行される。T8は、C>B>Aの優先度で命令発行制御されるが、T7と同様SA'5の命令は発行されないために、SC6の3命令のみが発行される。T9は、B>A>Cの優先度で命令発行制御され、SB3の3命令とSA'5の1命令が発行される。T10は、A>C>Bの優先度で命令発行制御されるが、命令同期実行制御により、SA'6の命令は発行されず、SC7の1命令とSB4の2命令が発行される。T11は、C>B>Aの優先度で命令発行制御され、SC8の1命令とSB5の1命令が発行される。T12は、B>A>Cの優先度で命令発行制御され、SB6の1命令とSA'6の1命令が発行される。T13は、A>C>Bの優先度で命令発行制御され、SA'7の1命令とSC9の1命令が発行される。T14は、C>B>Aの優先度で命令発行制御され、SC10の1命令とSB7の1命令が発行される。T15は、B>A>Cの優先度で命令発行制御され、SB8の1命令とSA'8の1命令が発行される。T16は、A>C>Bの優先度で命令発行制御され、SA'9の1命令とSC11の1命令が発行される。T17は、C>B>Aの優先度で命令発行制御され、SC12の1命令とSB9の2命令が発行される。T18は、B>A>Cの優先度で命令発行制御され、SB10の1命令とSA'10の1命令が発行される。T19は、A>C>Bの優先度で命令発行制御され、SA'11の1命令とSC13の1命令が発行される。T20は、C>B>Aの優先度で命令発行制御され、SC14の1命令とSB11の1命令が発行される。つまり、図10の動作説明と比較して、スレッドAのプログラム動作要件を満たす仕組みを持っていながら、かつ、他のスレッド(スレッドBの命令発行数が増加しているように)の実効性能を向上させることができる。
以上の説明より、本実施の形態に係る命令同期実行検出部121と命令発行停止部122を用いることにより、マルチスレッドプロセッサ構成の演算器において、各スレッドの命令実行状態に関わらず、自スレッドの命令実行時間の最短時間を確保し、さらに、それによって自スレッドの命令発行が抑制できるため、他スレッドに対して、マルチスレッド実行性能を向上させることができる。また、本実施の形態では、1ビットの命令ビットフィールドで命令同期実行検出を行うため、全命令に対して、リアルタイム実行可能な部を有している。
なお、図1のプロセッサの変形例を図12に示す。図12のプロセッサは、図1のプロセッサと比べて、命令発行停止部122の代わりに命令実行停止部241を備える点が異なっている。この点以外はほぼ同様の構成である。図12のように、命令発行を停止する代わりに命令実行を停止する構成としてもよい。
(実施の形態2)
しかし、命令同期実行検出を行うために、命令コードの1ビットを使用してこれらの機能を実現するということは、限られた命令ビットマップを有効に利用するという観点から問題が発生すると考えられる。そこで、実施の形態1と比較して、無駄な命令ビットマップを占有しない方法として、第2命令同期実行検出部を図13、図14、図15を用いて説明する。
図13は、実施の形態2における特定命令の命令コードを示す図である。本実施の形態では、命令コードは、原則として32ビット固定の命令ビットマップを例に説明しており、ビット31からビット24のOP(Operation Code)が、あるビットパターンの時に命令同期実行を行う特定命令であることを示す。この特定命令は、実施の形態1のような他の命令と兼用ではなく、専用の命令としてビットパターンが割り当てられている。なお、ビットマップの割り当て方法に関しては、この限りではない。
図14は、命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。命令発行部112は、スレッド毎に発行対象となる最大命令数分(本実施の形態では、スレッド毎に3命令発行可能、同時発行可能な命令は2スレッド命令グループ、同時発行可能な命令は4命令として説明を行う)を格納する命令バッファ650があり、プログラムカウンタ順に、第1命令コード651、第2命令コード652、第3命令コード653、および、それらのバッファに有効な命令が格納されているかどうかを示す、第1有効ビット654、第2有効ビット655、第3有効ビット656が格納されている。
これらの情報を入力とし、命令同期実行検出部600は、第1命令コード651のビット31からビット24の出力と参照テーブル631の比較器621の出力と第1有効ビット654を入力とするANDゲート611と、第2命令コード652のビット31からビット24の出力と参照テーブル631の比較器622の出力と第2有効ビット655を入力とするANDゲート612と、第3命令コード653のビット31からビット24の出力と参照テーブル631の比較器623の出力と第3有効ビット656を入力とするANDゲート613と、ANDゲート611とANDゲート612とANDゲート613を入力とするORゲート614から構成され、ORゲート614の出力命令同期実行が必要な命令が含まれていることを示す命令同期実行検出信号690が生成される。
参照テーブル631には、特定命令の命令コード(ビットパターン)を保持する。比較器621〜623は、それぞれ、命令コード中の複数ビットの命令ビットフィールドをプリデコードすることにより特定命令を検出している。
さらに、命令同期実行検出信号より最終的に命令バッファに格納されている命令が発行可能かどうかを示すために、第1有効ビット654をそのまま出力とする第1命令コード有効ビット691と、第2有効ビット655とANDゲート611の出力の反転を入力とするANDゲート681の出力とする第2命令コード有効ビット692と、第3有効ビット656とANDゲート681の出力とANDゲート612の出力の反転を入力とするANDゲート682の出力とする第3命令コード有効ビット693が生成される。これにより、命令同期実行検出部の出力の命令同期実行検出信号690により、命令グループに同期実行を行う命令が含まれていることを示し、第1命令コード有効ビット691、第2命令コード有効ビット692、第3命令コード有効ビット693により、スレッド内の命令発行可能なコードが識別できる。なお、図14の命令同期実行検出部600は、スレッド内の制御信号のみを示している。本実施の形態では、3スレッド同時実行可能なプロセッサを想定しているため、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
以上のことから、無駄な命令ビットマップを占有しない方法として、第2命令同期実行検出部を有することにより、実施の形態1に記載のSMT実行可能なプロセッサで、他スレッドの実行状態に関わらず、自スレッドに該当するプログラムの実行時間の最短時間を細粒度で調整可能な演算処理装置を命令ビットマップの占有なしに提供することができる。
以下に、本実施の形態で説明するプログラムとして、sync命令のみを命令ビットマップに追加した、図15に示すプログラムA−3を説明する。
図15に示すプログラムA−3は、命令発行部112によって実行されたスレッドAの命令発行可能な命令グループを記載している。STEPの列には、各実行ステップを発行される順にSA'1、SA'2、・・・、SA'15と記載している。各スレッドの同一サイクルに発行できる命令は、ロード・ストア命令は1命令のみ発行可能、算術論理演算、および、転送命令は3命令発行可能とする。SA'1の命令は、Instruction1とInstrucion2とInstruction3の3命令可能なうち、setlo命令、および、sethi命令が発行可能である。setlo命令は、レジスタr0に即値32ビット(HWE_A)の下位16ビットを格納する命令である。sethi命令は、レジスタr0に即値32ビット(HWE_A)の上位16ビットを格納する命令である。後続のst命令は、SA1命令グループのハザード回避のため、SA'2に発行可能となる。SA'2の命令は、レジスタr1の内容を、r0をアドレスとするメモリ空間にストアする命令と命令同期実行可能なsync命令である。SA'3は、即値32ビット(HWE_ST)の下位16ビットをレジスタr2に格納するsetlo命令とsync命令である。SA'4は、即値32ビット(HWE_ST)の上位16ビットをレジスタr2に格納するsethi命令と、sync命令である。SA'5は、レジスタr0をアドレスとするメモリ空間からロードし、レジスタr1に格納するld命令である。SA'6は、レジスタr1と即値100の和をレジスタr1に格納する命令である。SA'7は、レジスタr1の内容を、r2をアドレスとするメモリ空間にストアする命令である。SA'8からSA'14は、レジスタr0と即値1の和をレジスタr0に格納するadd命令である。このスレッドAのプログラムA−3(図15)は、あるハードウェアアクセラレータ(HWE_A)に書き込みを行い、8nSecたった後に、同アドレスをロードすると特殊な演算結果が得られるというハードウェアアクセラレータのモデルとする。このプログラムの動作しているプロセッサの動作周波数は、1GHzとしているため、8nSecの時間を空けるために、命令同期実行の命令が検出されてから2サイクルの命令発行停止期間を持つことを特徴とし、SA'2からSA'4まで、3つの命令同期実行により、計8nSecの時間を空けてハードウェアアクセラレータからのロード時間制約を満たしている。これは、図5に記載の命令発行停止部1000の同期制御部1060がフリップフロップ1020でラッチされた命令発行停止要求信号1010がステートマシンである同期制御部1060に入力され、パイプラインハザード状態1030に関わらず、2サイクルの期間命令発行停止状態信号1050を出力することを示している。
以上の説明より、本実施の形態に係る第2命令同期実行検出部600と命令発行停止部122を用いることにより、マルチスレッドプロセッサ構成の演算器において、各スレッドの命令実行状態に関わらず、自スレッドの命令実行時間の最短時間を確保し、さらに、それによって自スレッドの命令発行が抑制できるため、他スレッドに対して、マルチスレッド実行性能を向上させることができる。また、本実施の形態では、複数ビットの命令ビットフィールドをデコードすることで命令同期実行検出を行うため、ある特定の命令に対してのみ、リアルタイム実行可能な部を有している。
(実施の形態3)
しかし、命令同期実行検出を行うために、命令ビットフィールドをデコードして命令同期実行検出を行う専用のsync命令を追加するということは、命令仕様変更のみならず、ソフトウェア開発環境を変更する必要があり、影響が大きい。そこで、実施の形態2と比較して、新たな命令を生成することなく、ほぼ同等の機能のnop命令を拡張するという方法で実現可能な第2命令同期実行検出部を、図16に示すプログラムA−4を用いて説明する。
図16に示すプログラムA−4は、命令発行部112によって実行されたスレッドAの命令発行可能な命令グループを記載している。STEPの列には、各実行ステップを発行される順にSA'1、SA'2、・・・、SA'15と記載している。各スレッドの同一サイクルに発行できる命令は、ロード・ストア命令は1命令のみ発行可能、算術論理演算、および、転送命令は3命令発行可能とする。SA'1の命令は、Instruction1とInstrucion2とInstruction3の3命令可能なうち、setlo命令、および、sethi命令が発行可能である。setlo命令は、レジスタr0に即値32ビット(HWE_A)の下位16ビットを格納する命令である。sethi命令は、レジスタr0に即値32ビット(HWE_A)の上位16ビットを格納する命令である。後続のst命令は、SA1命令グループのハザード回避のため、SA'2に発行可能となる。SA'2の命令は、レジスタr1の内容を、r0をアドレスとするメモリ空間にストアする命令と命令同期検出可能なnop命令である。SA'3は、即値32ビット(HWE_ST)の下位16ビットをレジスタr2に格納するsetlo命令と、命令同期検出可能なnop命令である。SA'4は、即値32ビット(HWE_ST)の上位16ビットをレジスタr2に格納するsethi命令と、命令同期検出可能なnop命令である。SA'5は、レジスタr0をアドレスとするメモリ空間からロードし、レジスタr1に格納するld命令である。SA'6は、レジスタr1と即値100の和をレジスタr1に格納する命令である。SA'7は、レジスタr1の内容を、r2をアドレスとするメモリ空間にストアする命令である。SA'8からSA'14は、レジスタr0と即値1の和をレジスタr0に格納するadd命令である。このスレッドAのプログラムA−4(図16)は、あるハードウェアアクセラレータ(HWE_A)に書き込みを行い、8nSecたった後に、同アドレスをロードすると特殊な演算結果が得られるというハードウェアアクセラレータのモデルとする。このプログラムの動作しているプロセッサの動作周波数は、1GHzとしているため、8nSecの時間を空けるために、命令同期実行の命令が検出されてから2サイクルの命令発行停止期間を持つことを特徴とし、SA'2からSA'4まで、3つの命令同期実行により、計8nSecの時間を空けてハードウェアアクセラレータからのロード時間制約を満たしている。これは、図5に記載の命令発行停止部1000の同期制御部1060がフリップフロップ1020でラッチされた命令発行停止要求信号1010がステートマシンである同期制御部1060に入力され、パイプラインハザード状態1030に関わらず、2サイクルの期間命令発行停止状態信号1050を出力することを示している。これにより、命令仕様変更を行うことなく、プログラムA−3(図15)と同様の効果を得ることができる。
(実施の形態4)
しかしながら、sync命令をnop命令で代用したとしても、スレッドAに必要な命令発行数が各ステップで2命令必要になる。このため、他のスレッドで3命令発行可能な命令グループが命令発行できなくなる場合もある。この課題を解決すればさらなる性能改善が可能である。そこで、ハードウェアアクセラレータのような専用ハードウェアデバイスに対する、ロード・ストア命令を行う期間のみ、命令同期実行検出を行えばよいため、ハードウェアアクセラレータ専用のレジスタアクセス命令となる、wt命令、および、rd命令を用いることにより、性能向上を行うことができる第3命令同期実行検出有効部と第3命令同期検出無効部と、第3命令同期モード状態記憶部を図17、図4を用いて説明する。
図17は、実施の形態4における命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。命令発行部112は、スレッド毎に発行対象となる最大命令数分(本実施の形態では、スレッド毎に3命令発行可能、同時発行可能な命令は2スレッド命令グループ、同時発行可能な命令は4命令として説明を行う)を格納する命令バッファ750があり、プログラムカウンタ順に、第1命令コード751、第2命令コード752、第3命令コード753、および、それらのバッファに有効な命令が格納されているかどうかを示す、第1有効ビット754、第2有効ビット755、第3有効ビット756が格納されている。これらの情報を入力とし、命令同期実行検出部は、第1命令コード751のビット31からビット24の出力と参照テーブルセレクタ733の比較器721の出力と第1有効ビット754を入力とするANDゲート711と、第2命令コード752のビット31からビット24の出力と参照テーブルセレクタ733の比較器722の出力と第2有効ビット755を入力とするANDゲート712と、第3命令コード753のビット31からビット24の出力と参照テーブルセレク733の比較器723の出力と第3有効ビット756を入力とするANDゲート713と、ANDゲート711とANDゲート712とANDゲート713と、さらに、リセット付きフリップフロップ735の出力を入力とするORゲート714から構成され、ORゲート714の出力命令同期実行が必要な命令が含まれていることを示す命令同期実行検出信号790が生成される。またこの出力は、リセット付きフリップフロップ735の出力とEXORゲート734に入力され、フリップフロップ735のデータ入力に接続されている。これにより、命令同期実行検出部によって検出された命令同期実行検出有効状態を保持し、さらに、命令同期実行部によって検出された命令同期実行検出無効要求により、この有効状態をクリアすることができる。さらに、このフリップフロップの出力は、有効参照テーブル731と無効参照テーブル732のセレクタ733のセレクト信号としても使用される。さらに、命令同期実行検出信号より最終的に命令バッファに格納されている命令が発行可能かどうかを示すために、第1有効ビット754をそのまま出力とする第1命令コード有効ビット791と、第2有効ビット755とANDゲート711の出力の反転を入力とするANDゲート781の出力とする第2命令コード有効ビット792と、第3有効ビット756とANDゲート781の出力とANDゲート712の出力の反転を入力とするANDゲート782の出力とする第3命令コード有効ビット793が生成される。これにより、命令同期実行検出部の出力の命令同期実行検出信号790により、命令グループに同期実行を行う命令が含まれていることを示し、第1命令コード有効ビット791、第2命令コード有効ビット792、第3命令コード有効ビット793により、スレッド内の命令発行可能なコードが識別できる。なお、図17の命令同期実行検出部700は、スレッド内の制御信号のみを示している。本実施の形態では、3スレッド同時実行可能なプロセッサを想定しているため、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
図4は、プロセッサ状態レジスタに格納されている命令同期実行モード記憶部について説明する。レジスタグループ900はプロセッサ状態レジスタ910、汎用レジスタ912〜915、オペランドデータラッチ921〜924等を含む。プロセッサ状態レジスタ910は、SYNCビット950を保持する。このSYNCビット950は、図17に記載の第3命令同期実行検出信号790によりセットおよびリセットされる。また、SYNCビット950は、割込み処理が発生したときにもリセットされる。
これにより、同期モードであることをプロセッサ状態として記憶することにより、割込みによるスレッドの分岐があった場合にも、その状態を管理することができる。
以下に、本実施の形態に係る動作説明として、レジスタアクセス命令を用いた、図18に示すプログラムA−5を説明する。
図18に示すプログラムA−5は、命令発行部112によって実行されたスレッドAの命令発行可能な命令グループを記載している。STEPの列には、各実行ステップを発行される順にSA'1、SA'2、・・・、SA'15と記載している。各スレッドの同一サイクルに発行できる命令は、ロード・ストア命令は1命令のみ発行可能、算術論理演算、および、転送命令は3命令発行可能とする。SA'1の命令は、Instruction1とInstrucion2とInstruction3の3命令可能なうち、setlo命令、および、sethi命令が発行可能である。setlo命令は、レジスタr0に即値32ビット(HWE_A)の下位16ビットを格納する命令である。sethi命令は、レジスタr0に即値32ビット(HWE_A)の上位16ビットを格納する命令である。後続のwt命令は、SA1命令グループのハザード回避のため、SA'2に発行可能となる。SA'2の命令は、レジスタr1の内容を、r0をアドレスとするハードウェアアクセラレータのレジスタにストアするwt命令である。このwt命令が実行されることにより、命令同期検出可能な命令であり、かつ、スレッドAは、命令同期モードが設定される。SA'3は、即値32ビット(HWE_ST)の下位16ビットをレジスタr2に格納するsetlo命令である。これは、命令同期モードで実行されるため、単独で実行される。SA'4は、即値32ビット(HWE_ST)の上位16ビットをレジスタr2に格納するsethi命令である。これは、命令同期モードで実行されるため、単独で実行される。SA'5は、レジスタr0をアドレスとするハードウェアアクセラレータのレジスタからロードし、レジスタr1に格納するrd命令である。この命令によって命令同期モードが解除される。SA'6は、レジスタr1と即値100の和をレジスタr1に格納する命令である。SA'7は、レジスタr1の内容を、r2をアドレスとするメモリ空間にストアする命令である。SA'8からSA'14は、レジスタr0と即値1の和をレジスタr0に格納するadd命令である。このスレッドAのプログラムA−5(図18)は、あるハードウェアアクセラレータ(HWE_A)に書き込みを行い、8nSecたった後に、同アドレスをロードすると特殊な演算結果が得られるというハードウェアアクセラレータのモデルとする。このプログラムの動作しているプロセッサの動作周波数は、1GHzとしているため、8nSecの時間を空けるために、命令同期実行の命令が検出されてから2サイクルの命令発行停止期間を持つことを特徴とし、SA'2からSA'4まで、3つの命令同期実行により、計8nSecの時間を空けてハードウェアアクセラレータからのロード時間制約を満たしている。これは、図5に記載の命令発行停止部1000の同期制御部1060がフリップフロップ1020でラッチされた命令発行停止要求信号1010がステートマシンである同期制御部1060に入力され、パイプラインハザード状態1030に関わらず、2サイクルの期間命令発行停止状態信号1050を出力することを示している。以上のことから、命令同期実行モードであることを示す命令同期実行検出信号790が生成され、命令同期実行有効命令のライト命令と命令同期実行無効命令のリード命令により、実施の形態1から3に記載の動作で、かつ、自スレッドの命令発行数を1にすることができるため、他スレッドの命令発行に制約を受けなくなる。
(実施の形態5)
しかしながら、命令同期モードを記憶する部を持っているが、割込みを受け付けた場合は、割込み処理に必要な時間の方が長いため、この同期実行モードを解除する仕組みがある方が、不要な命令同期実行モードの期間を削減することができる。これにより、他スレッドへの性能改善だけでなく、自スレッドに対して、ハードウェアアクセラレータへのウェイト期間を割込み処理時間で隠蔽することができる。
本実施の形態では、実施の形態3の図17の改善回路に対応する図19を用いて説明する。
図19は、実施の形態5における命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。命令発行部112は、スレッド毎に発行対象となる最大命令数分(本実施の形態では、スレッド毎に3命令発行可能、同時発行可能な命令は2スレッド命令グループ、同時発行可能な命令は4命令として説明を行う)を格納する命令バッファ850があり、プログラムカウンタ順に、第1命令コード851、第2命令コード852、第3命令コード853、および、それらのバッファに有効な命令が格納されているかどうかを示す、第1有効ビット854、第2有効ビット855、第3有効ビット856が格納されている。これらの情報を入力とし、命令同期実行検出部は、第1命令コード851のビット31からビット24の出力と参照テーブルセレクタ833の比較器821の出力と第1有効ビット854を入力とするANDゲート811と、第2命令コード852のビット31からビット24の出力と参照テーブルセレクタ833の比較器822の出力と第2有効ビット855を入力とするANDゲート812と、第3命令コード853のビット31からビット24の出力と参照テーブルセレク833の比較器823の出力と第3有効ビット856を入力とするANDゲート813と、ANDゲート811とANDゲート812とANDゲート813と、さらに、リセット付きフリップフロップ835の出力を入力とするORゲート814から構成され、ORゲート814の出力命令同期実行が必要な命令が含まれていることを示す命令同期実行検出信号890が生成される。またこの出力は、リセット付きフリップフロップ835の出力とEXORゲート834に入力され、フリップフロップ835のデータ入力に接続されている。さらに、フリップフロップ835のリセット端子には、割込み受理信号の反転信号とリセット信号を入力とするANDゲート837から構成されている。これにより、命令同期実行検出部によって検出された命令同期実行検出有効状態を保持し、さらに、命令同期実行部によって検出された命令同期実行検出無効要求、もしくは、割込み受理時に、この有効状態をクリアすることができる。さらに、このフリップフロップの出力は、有効参照テーブル831と無効参照テーブル832のセレクタ833のセレクト信号としても使用される。さらに、命令同期実行検出信号より最終的に命令バッファに格納されている命令が発行可能かどうかを示すために、第1有効ビット854をそのまま出力とする第1命令コード有効ビット891と、第2有効ビット855とANDゲート811の出力の反転を入力とするANDゲート881の出力とする第2命令コード有効ビット892と、第3有効ビット856とANDゲート881の出力とANDゲート812の出力の反転を入力とするANDゲート882の出力とする第3命令コード有効ビット893が生成される。これにより、命令同期実行検出部の出力の命令同期実行検出信号890により、命令グループに同期実行を行う命令が含まれていることを示し、第1命令コード有効ビット891、第2命令コード有効ビット892、第3命令コード有効ビット893により、スレッド内の命令発行可能なコードが識別できる。なお、図19の命令同期実行検出部800は、スレッド内の制御信号のみを示している。本実施の形態では、3スレッド同時実行可能なプロセッサを想定しているため、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
(実施の形態6)
しかしながら、実施の形態1から5に記載の命令発行停止部は、発行停止するサイクル数が固定になっている。実際は、プロセッサはさまざまな動作周波数でLSI化されることがあるため、実時間の期間保障としては、プログラマブルな構成になっている必要がある。そこで、実施の形態1の図5の改善回路に対応する図20を用いて説明する。
図20は、実施の形態6における1スレッドに対応する命令発行停止部の構成を示すブロック図である。命令発行停止部122は、命令同期実行検出部121より出力される命令同期実行検出信号590より得られる命令発行停止要求信号1110と命令発行部212および演算実行部230より得られるパイプラインハザードに関係するパイプラインハザード状態信号1130を入力とする。命令発行停止部は、命令発行停止要求信号1110と、命令伝達部に使用されているクロック信号1121を入力とするフリップフロップ1120と、フリップフロップ1120の出力を入力とする命令発行停止期間を示す信号を生成するステートマシンである同期制御部1150と、パイプラインハザード状態信号1130を入力とする命令発行停止期間を示す信号を生成するステートマシンであるハザード検出部1131とを有し、同期制御部1150は、IOバス1182に接続された停止期間記憶部1181に接続されており、同期制御部1160のステートマシンは、停止期間記憶部1181に格納されているサイクル数だけ命令発行禁止状態信号をアサートする。命令発行停止部1100は、同期制御部1150とハザード検出部1131を入力とするORゲート1140から構成される。これにより、ORゲート1140の出力の命令発行停止状態信号1150が命令発行停止部1100の出力信号として生成され、命令発行停止状態信号1150により、次サイクルに自スレッドの命令が発行できないことを示す信号を生成することができる。なお、図20の命令発行停止部は、スレッド内の制御信号のみを示している。本実施の形態では、3スレッド同時実行可能なプロセッサを想定しているため、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
(実施の形態7)
しかしながら、リアルタイム保障のための実時間保障においては、プロセッサの動作周波数や、プロセッサとハードウェアアクセラレータの動作周波数比が動的に変更される場合がある。この場合も本発明においては、実時間(何nSec)という期間の保障をする必要がある。そこで、第2命令発行停止部に対して、プロセッサの動作周波数、もしくは、プロセッサとハードウェアアクセラレータの動作周波数比を取得する動作周波数検出部を有することを特徴とする演算処理装置について、図21を用いて説明する。
図21は、実施の形態7における1スレッドに対応する命令発行停止部の構成を示すブロック図である。命令発行停止部122は、命令同期実行検出部121より出力される命令同期実行検出信号590より得られる命令発行停止要求信号1210と命令発行部212および演算実行部230より得られるパイプラインハザードに関係するパイプラインハザード状態信号1230を入力とする。命令発行停止部は、命令発行停止要求信号1210と、命令伝達部に使用されているクロック信号1221を入力とするフリップフロップ1220と、フリップフロップ1220の出力を入力とする命令発行停止期間を示す信号を生成するステートマシンである同期制御部1250と、パイプラインハザード状態信号1230を入力とする命令発行停止期間を示す信号を生成するステートマシンであるハザード検出部1231とを有し、同期制御部1250は、IOバス1282に接続された停止期間記憶部1281に接続されており、同期制御部1260のステートマシンは、停止期間記憶部1281に格納されているサイクル数だけ命令発行禁止状態信号をアサートする。さらに、現在動作しているプロセッサの動作周波数、もしくは、プロセッサとハードウェアアクセラレータとの動作周波数比を取得することができる、動作周波数検出部1283を有しており、停止期間記憶部1281は、動作周波数検出部1283に格納されている情報をもとに、停止期間記憶部の設定値をルックアップし、同期制御部1280に出力する。命令発行停止部1200は、同期制御部1250とハザード検出部1231を入力とするORゲート1240から構成される。これにより、ORゲート1240の出力の命令発行停止状態信号1250が命令発行停止部1200の出力信号として生成され、命令発行停止状態信号1250により、次サイクルに自スレッドの命令が発行できないことを示す信号を生成することができる。なお、図21の命令発行停止部は、スレッド内の制御信号のみを示している。本実施の形態では、3スレッド同時実行可能なプロセッサを想定しているため、これらの資源はスレッド毎に必要になる。ただし、この構成はSMT実行可能なプロセッサの構成という観点から自明であるため以降の説明では省略することとする。
(実施の形態8)
しかしながら、SMT実行方法は、いくつかの動作モードが想定される。たとえば、3スレッドをSMT実行可能なプロセッサにおいても、図11に記載のように3スレッドをラウンドロビンで調停する3スレッド等価モードや、2スレッドを優先スレッドとし、残り1スレッドは出来高で実行するようなケースが発生する。その場合、命令調停されるタイミングは、自スレッドが優先スレッドなのか出来高スレッドなのかによって、変わってくる。そこで、本実施の形態では、自スレッドのスレッドが優先スレッドとして割当てられているか、出来高スレッドとして割当てられているかを検出し、命令同期実行期間を切替える、性能保証動作モード検出部を有している、演算処理装置について、図22を用いて説明する。
図22は、実施の形態8における1スレッドに対応する命令発行停止部の構成を示すブロック図である。同図の命令発行停止部は、図21と比べて、性能保証動作モード検出部が追加されている。
性能保証動作モード検出部1385は、他のスレッドよりも優先される動作モードか否かを検出する。例えば、自スレッドが優先スレッドであるか出来高スレッドであるかを検出する。
停止期間記憶部1382は、動作モード毎に停止期間を示すサイクル数を記憶する。記憶されるサイクル数については、動作モードが出来高スレッドである場合の停止期間は、優先スレッドである場合の停止期間よりも少ないサイクル数でよい。
前記命令発行停止部は、検出された動作モードに応じたサイクル数の期間だけ前記後続命令の発行を停止する。
これにより、自スレッドが優先スレッドの場合も出来高スレッドの場合も性能を保証することが可能になる。
(実施の形態9)
演算処理装置では、命令同期実行モード中に発行可能な命令数を設定できるようにすることで、不要な命令スロットを埋めるダミー命令を生成することなく命令発行数を制御することができる。
実施の形態1から実施の形態7の図3から図4の改善回路に対応する図23、図24を用いて説明する。
図23は、実施の形態9における命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。図23の命令同期実行検出部は、図3と比べて、命令同期実行命令発行数記憶部1485が追加されている。
命令同期実行命令発行数記憶部1485は、命令同期実行モードの間に発行可能な命令数を記憶し、発行される毎にカウントダウンする。これにより、命令同期実行モードの間にnop等のダミー命令以外の実効的な命令を発行することができるので、スレッドの処理効率を向上させることができる。
(実施の形態10)
しかしながら、これらの命令同期検出部を用いて実時間の最短時間を保証する場合もあるが、C記述のプログラム中で先行して処理を行うことが可能なプログラムもあるため、それらのコードをコンパイラが検出した場合には、命令同期を行う命令の代わりに、それらのコードを入れて同等の処理を行うことをサポートすることができる。そこで、コンパイラ処理の過程で、Cソースにプラグマを挿入することで、命令同期実行モード中の自スレッドの先行処理可能な命令を繰り上げてプログラムを挿入することができる。
図26は、実施の形態10におけるプログラム変換装置の構成を示すブロック図である。同図のプログラム変換装置は、コンパイラ1、アセンブラ18、リンカ19を備える。コンパイラ1は、構文解析部10、中間コード生成部11、最適化部12、コード生成部13を備える。同図のプログラム変換装置は、各機能ブロックの機能を発揮するソフトウェアをコンピュータ上で実行することにより実現される。
コンパイラ1は、高級言語で記述されたプログラムをアセンブリ言語プログラムに変換する。高級言語プログラムは、例えばC言語などである。
構文解析部10は、C言語などの高級言語プログラムP1の構文を解析する。
中間コード生成部11は、解析結果に基づいて高級言語プログラムP1を中間命令(以下単に命令と呼ぶ。)の記述に置き換えた中間コード命令列P2を生成する。
最適化部12は、同期実行のための特定命令を含む中間コード命令列P2に最適化処理を行なう。そのため、最適化部12は、プラグマ抽出部14、命令検出部15と、特定命令設定部16と、サイクル数命令数設定部17とを備える。
プラグマ抽出部14は、中間コード命令列P2のプログラムから、プログラム変換装置に対する特定命令に関する指示文(プラグマ)を抽出する。図27にプログラム例を示す。このプログラムD−1は、説明の便宜上、中間コードではなく、一部にアセンブリ言語で記述されたプログラムを含む高級言語プログラムを例示している。同図下から3行目の「#pragma」で始まる行が、特定命令に関する指示文(プラグマ)である。また、8行目のwt命令と10行目のrd命令の間には、1行目で定義されている2つのnop命令が挿入されている。命令同期実行モードなので、2つのnop命令は特定命令として2つの命令グループになる。
命令検出部15は、前記指示文に従って、中間コード命令列P2のプログラムから、外部装置に処理要求を書き込む第1の命令(wt命令)と当該外部装置から応答を読み出す第2の命令(rd命令)と、特定命令とを検出する。図27では、wt命令が第1の命令でかつ特定命令として検出され、rd命令が第2の命令として検出され、さらに、8行目に挿入される2つのnop命令も特定命令として検出される。
命令設定部16は、第2の命令(rd命令)以降の命令で、nop命令と同じサイクル数の置き換え可能な命令があれば、第1の命令から第2の命令までの間に、第2の命令以降の命令を繰り上げてnop命令と置き換えることにより第2プログラムを生成する。
サイクル数命令数設定部17は、図21、図22に示した停止期間記憶部に停止サイクル数を設定する命令や、図23、図24に示した命令同期実行命令発行数記憶部に命令数を設定する命令等を、中間コード命令列P2のプログラムに挿入する。
コード生成部13は、最適化部12によって上記命令が追加された中間コード命令列P2からアセンブリ言語の命令列(ニーモニック形式の命令列)を生成する。
アセンブラ18は、アセンブリ言語の命令列を機械語命令列に変換する。
リンカ19は、複数の機械語命令列をリンクし、実行ファイルを生成する。
図26は最適化されていないプログラム例A−6を示し、図19は最適化されたプログラム例A−5を示す。図26と図19とを比べると、図19のSA’3、SA’4に示すように、最適化によって2つのnop命令が、setlo命令とsethi命令に置き換えられている。これにより、図19のプログラムの処理効率を向上させることができる。
なお、第4の実施形態におけるプログラム変換装置は、コンパイラ内で中間コード命令列P2に対して上記の命令を挿入しているが、この代わりに、(A)高級言語プログラムP1に対して上記の命令に対応するプログラム文(関数など)を挿入する構成としてもよいし、(B)アセンブリ言語命令列に対して、上記の命令に対応するニーモニック命令を挿入するようにしてもよいし、または(C)機械語命令列に対して、上記の命令に対応する機械語命令を挿入するようにしてもよい。
なお、上記各実施の形態において、SMT実行可能なプロセッサについて説明したが、VLIWプロセッサに適用してもよい。
本発明の命令同期実行検出部、命令発行停止部、および、命令同期実行命令発行数制御部は、マルチスレッド化されたプロセッサシステムにおける命令実行サイクルの同期手法に利用して有効であり、基本的な制御構造を変更することなく、命令発行部の制御に論理和を取る形で細粒度の期間(サイクル単位)で命令実行サイクルを保障することができる。
実施の形態1に係る演算処理装置の構成を示す機能ブロック図である。 命令コードのビット構成例を示す図である。 図1の命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。 図1に記載のレジスタグループの内部構成を示す図である。 1スレッドに対応する命令発行停止部の構成を示すブロック図である。 対比説明用の従来技術におけるスレッドAのプログラム例(プログラムA−1)を示す図である。 本実施の形態におけるスレッドAのプログラム例(プログラムA−2)を示す図である。 スレッドAと共に実行されるプログラム例(プログラムB−1)を示す図である。 スレッドAと共に実行されるプログラム例(プログラムC−1)を示す図である。 プログラムA−1、B−1、C−1をSMT実行した場合の動作説明図である。 プログラムA−2、B−1、C−1をSMT実行した場合の動作説明図である。 プロセッサの変形例の構成を示すブロック図である。 実施の形態2における命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。 命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。 スレッドAのプログラム例(プログラムA−3)を示す図である。 実施の形態3におけるスレッドAのプログラム例(プログラムA−4)を示す図である。 実施の形態4における命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。 本実施の形態におけるスレッドAのプログラム例(プログラムA−5)を示す図である。 実施の形態5における命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。 実施の形態6における1スレッドに対応する命令発行停止部の構成を示すブロック図である。 実施の形態7における1スレッドに対応する命令発行停止部の構成を示すブロック図である。 実施の形態8における1スレッドに対応する命令発行停止部の構成を示すブロック図である。 実施の形態9における命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。 命令同期実行検出部の内部構成のうち1スレッドに対応する構成を示すブロック図である。 スレッドAのプログラム例(プログラムA−6)を示す図である。 実施の形態10におけるプログラム変換装置の構成を示すブロック図である。 スレッドAのソースプログラム例(プログラムD−1)を示す図である。
符号の説明
100 プロセッサ
112 命令発行部
121 命令同期実行検出部
122 命令発行停止部
731 有効参照テーブル
732 無効参照テーブル
910 プロセッサ状態レジスタ
1060 同期制御部
1181 停止期間記憶部
1283 動作周波数検出部
1385 性能保証動作モード検出部
1485 命令同期実行命令発行数記憶部

Claims (22)

  1. 複数の命令を同一サイクルで実行できる演算処理装置において、
    複数の命令コードをフェッチする命令フェッチ手段と、
    前記命令フェッチ手段によりフェッチされた複数の命令コードを、同時発行可能な命令からなる1つ以上の命令グループに分割し、命令グループの命令コードを発行する命令発行手段と、
    前記命令発行手段より発行された1つ以上の命令コードを解読し、演算に必要な制御信号を生成する命令デコード手段と、
    前記命令デコード手段に生成された前記制御信号に従って演算を行う演算処理手段とを備え、
    前記命令発行手段は、
    特定命令の発行直後の所定サイクル期間だけ前記特定命令に後続する命令の発行を停止することを指示する前記特定命令を検出する検出手段と、
    前記特定命令の発行直後の所定サイクル期間だけ前記後続する命令の発行を停止させる命令発行停止手段とを有する
    ことを特徴とする演算処理装置。
  2. 前記命令発行手段は、前記特定命令が検出された場合、前記特定命令を含む命令グループの中から前記特定命令に後続する命令を除外することを特徴とする請求項1に記載の演算処理装置。
  3. 前記命令フェッチ手段は、複数のスレッドからそれぞれ命令コードをフェッチし、
    前記命令発行手段は、スレッド毎にスレッド中の命令列を命令グループに分割する
    ことを特徴とする請求項2に記載の演算処理装置。
  4. 前記検出手段は、命令コード中の1ビットの命令ビットフィールドにより前記特定命令を検出することを特徴とする請求項2に記載の演算処理装置。
  5. 前記検出手段は、命令コード中の複数ビットの命令ビットフィールドをデコードすることにより前記特定命令を検出することを特徴とする請求項2に記載の演算処理装置。
  6. 前記検出手段は、命令コード中の複数ビットの命令ビットフィールドをデコードすることによって第1および第2の命令を検出し、前記第1の命令から前記第2の命令の直前までの各命令を前記特定命令として検出することを特徴とする請求項2に記載の演算処理装置。
  7. 前記第1の命令は外部装置に処理要求を書き込む命令であり、前記第2の命令は当該外部装置から応答を読み出す命令であることを特徴とする請求項6に記載の演算処理装置。
  8. 前記演算処理装置は、さらに、前記後続命令の発行を停止中であることを示す状態信号を保持するプロセッサ状態レジスタを有することを特徴とする請求項6に記載の演算処理装置。
  9. 前記演算処理装置は、さらに、前記特定命令の発行直後の所定サイクル期間であって前記後続命令の発行を停止中であることを示す状態信号を保持する保持手段を有し、
    前記検出手段は、前記第1の命令を検出したとき前記状態信号をイネーブルにし、前記第2の命令を検出したとき前記状態信号をディスエーブルにする
    ことを特徴とする請求項6に記載の演算処理装置。
  10. 前記保持手段は、割込み処理の発生により保持している状態信号をディスエーブルする
    ことを特徴とする請求項9に記載の演算処理装置。
  11. 前記特定命令は、前記演算処理装置に接続される外部装置に処理を要求する命令に後続する
    ことを特徴とする請求項1から請求項9のいずれか1項に記載の演算処理装置。
  12. 前記命令発行停止手段は、前記所定サイクル期間を示すサイクル数を記憶するサイクル数記憶手段を有し、記憶されたサイクル数だけ前記後続命令の発行を停止することを特徴とする請求項1から請求項9のいずれか1項に記載の演算処理装置。
  13. 前記サイクル数記憶手段は、前記演算処理装置の動作周波数に対応するサイクル数を記憶することを特徴とする請求項12に記載の演算処理装置。
  14. 前記サイクル数記憶手段は、前記演算処理装置が動作可能な複数の動作周波数に対応する複数のサイクル数を記憶することを特徴とする請求項12に記載の演算処理装置。
  15. 前記命令発行手段は、前記特定命令の属するスレッドが他のスレッドよりも優先される動作モードか否かを検出する動作モード検出手段を有し、
    前記命令発行停止手段は、検出された動作モードに応じて、前記所定のサイクル期間だけ前記後続命令の発行を停止することを特徴とする請求項1から請求項9のいずれか1項に記載の演算処理装置。
  16. 前記命令発行手段は、
    前記特定命令の属するスレッドが他のスレッドよりも優先される動作モードか否かを検出する動作モード検出手段と、動作モード毎に前記所定サイクル期間を示すサイクル数を記憶するサイクル数記憶手段とを有し、
    前記命令発行停止手段は、検出された動作モードに応じたサイクル数の期間だけ前記後続命令の発行を停止することを特徴とする請求項1から請求項9のいずれか1項に記載の演算処理装置。
  17. 前記命令発行手段は、前記第1の命令から前記第2の命令までの間に発行可能な命令数を記憶し、発行される毎にカウントダウンする命令数記憶手段を有することを特徴とする請求項6に記載の演算処理装置。
  18. 前記演算処理装置は、さらに、前記保持手段に保持された状態信号の値を保持するプロセッサ状態レジスタを有し、
    前記命令発行停止手段は、前記保持手段が前記後続命令の発行を停止中であることを示す状態信号を保持している場合に、前記第1の命令から前記第2の命令までの間に発行可能な命令数を記憶し、発行される毎にカウントダウンする命令数記憶手段を有することを特徴とする請求項10に記載の演算処理装置。
  19. 同時実行可能な命令からなる命令グループを構成する命令を同時に発行し実行するプロセッサであって、
    前記プロセッサは、特定命令を含むプログラムを実行し、
    前記特定命令は、前記特定命令を含む命令グループから前記特定命令に後続する命令を除外することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示することを特徴とするプロセッサ。
  20. 前記プロセッサは、複数のスレッドをフェッチし、スレッド毎にスレッド中の命令列を命令グループに分割するマルチスレッドプロセッサである
    ことを特徴とする請求項19に記載のプロセッサ。
  21. 第1のプログラムを第2のプログラムに変換するプログラム変換装置であって、
    第1のプログラムから、特定命令の設定をプログラム変換装置に指示する指示文を抽出する抽出手段と、
    第1のプログラム中の、前記指示文に従って、外部装置に処理を要求する第1の命令と、当該外部装置から応答を読み出す第2の命令を検出する検出手段と、
    前記第1の命令から第2の命令までの間に、特定命令を設定することにより第2プログラムを生成する生成手段とを有し、
    前記特定命令は、前記特定命令を含む命令グループから前記特定命令に後続する命令を除外することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示することを特徴とするプログラム変換装置。
  22. コンピュータを、第1のプログラムを第2のプログラムに変換するプログラム変換装置として機能させるコンピュータ読み取り可能なプログラムであって、
    前記プログラムは、
    第1のプログラムから、プログラム変換装置に対する特定命令に関する指示文を抽出する抽出ステップと、
    第1のプログラム中の、外部装置に処理要求を書き込む第1の命令と、当該外部装置から応答を読み出す第2の命令を検出する検出ステップと、
    前記第1の命令から第2の命令までの間に、前記第2の命令以降の命令を繰り上げて配置することにより第2プログラムを生成する生成ステップとをコンピュータに実行させ、
    前記特定命令は、前記特定命令を含む命令群の中から前記特定命令に後続する命令を排除することと、前記特定命令の発行直後の所定サイクル期間だけ後続する命令の発行を停止することとを指示することを特徴とするプログラム。
JP2007281018A 2007-10-29 2007-10-29 演算処理装置、プロセッサ、プログラム変換装置およびプログラム Withdrawn JP2009110209A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007281018A JP2009110209A (ja) 2007-10-29 2007-10-29 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US12/259,589 US20090113179A1 (en) 2007-10-29 2008-10-28 Operational processing apparatus, processor, program converting apparatus and program
CNA2008101738120A CN101425006A (zh) 2007-10-29 2008-10-29 运算处理装置、处理器、程序转换装置以及程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007281018A JP2009110209A (ja) 2007-10-29 2007-10-29 演算処理装置、プロセッサ、プログラム変換装置およびプログラム

Publications (1)

Publication Number Publication Date
JP2009110209A true JP2009110209A (ja) 2009-05-21

Family

ID=40584418

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007281018A Withdrawn JP2009110209A (ja) 2007-10-29 2007-10-29 演算処理装置、プロセッサ、プログラム変換装置およびプログラム

Country Status (3)

Country Link
US (1) US20090113179A1 (ja)
JP (1) JP2009110209A (ja)
CN (1) CN101425006A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011155097A1 (ja) * 2010-06-11 2011-12-15 パナソニック株式会社 命令発行制御装置及び方法
JP2015122063A (ja) * 2013-12-20 2015-07-02 三星電子株式会社Samsung Electronics Co.,Ltd. マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法
JP2015135538A (ja) * 2014-01-16 2015-07-27 三菱電機株式会社 プロセッサ
JP2018206375A (ja) * 2017-06-07 2018-12-27 エイアールエム リミテッド プログラマブル命令のバッファリング

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013080289A1 (ja) * 2011-11-28 2013-06-06 富士通株式会社 信号処理装置及び信号処理方法
CN104298552B (zh) * 2013-07-15 2018-06-19 华为技术有限公司 多线程处理器的线程取指调度方法、系统和多线程处理器
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10884746B2 (en) * 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63163912A (ja) * 1986-12-26 1988-07-07 Toshiba Corp マイクロコンピユ−タシステム
EP0374419A3 (en) * 1988-12-21 1991-04-10 International Business Machines Corporation Method and apparatus for efficient loop constructs in hardware and microcode
US5710912A (en) * 1993-05-06 1998-01-20 Hewlett-Packard Co. Method and apparatus for enabling a computer system to adjust for latency assumptions
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US5848288A (en) * 1995-09-20 1998-12-08 Intel Corporation Method and apparatus for accommodating different issue width implementations of VLIW architectures
US5958044A (en) * 1997-01-24 1999-09-28 Texas Instruments Incorporated Multicycle NOP
US6687838B2 (en) * 2000-12-07 2004-02-03 Intel Corporation Low-power processor hint, such as from a PAUSE instruction
JP4576071B2 (ja) * 2001-07-02 2010-11-04 パナソニックシステムネットワークス株式会社 ネットワーク画像処理装置および監視装置並びにその方法
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
WO2005062184A1 (ja) * 2003-12-24 2005-07-07 Matsushita Electric Industrial Co., Ltd. データ処理装置およびデータ処理方法
US7373536B2 (en) * 2004-08-04 2008-05-13 Kabushiki Kaisha Toshiba Fine granularity halt instruction
JP2006059068A (ja) * 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US8077867B2 (en) * 2007-01-15 2011-12-13 Panasonic Corporation Confidential information processing apparatus, confidential information processing device, and confidential information processing method

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011155097A1 (ja) * 2010-06-11 2011-12-15 パナソニック株式会社 命令発行制御装置及び方法
JP2011258147A (ja) * 2010-06-11 2011-12-22 Panasonic Corp 命令発行制御装置及び方法
US9436464B2 (en) 2010-06-11 2016-09-06 Socionect Inc. Instruction-issuance controlling device and instruction-issuance controlling method
JP2015122063A (ja) * 2013-12-20 2015-07-02 三星電子株式会社Samsung Electronics Co.,Ltd. マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法
JP2015135538A (ja) * 2014-01-16 2015-07-27 三菱電機株式会社 プロセッサ
JP2018206375A (ja) * 2017-06-07 2018-12-27 エイアールエム リミテッド プログラマブル命令のバッファリング
JP7211719B2 (ja) 2017-06-07 2023-01-24 アーム・リミテッド プログラマブル命令のバッファリング
US11579889B2 (en) 2017-06-07 2023-02-14 Arm Limited Programmable instruction buffering for accumulating a burst of instructions

Also Published As

Publication number Publication date
US20090113179A1 (en) 2009-04-30
CN101425006A (zh) 2009-05-06

Similar Documents

Publication Publication Date Title
JP2009110209A (ja) 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US10338927B2 (en) Method and apparatus for implementing a dynamic out-of-order processor pipeline
CN109074260B (zh) 乱序的基于块的处理器和指令调度器
CN108027767B (zh) 寄存器读取/写入排序
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
JP2810068B2 (ja) プロセッサシステム、コンピュータシステム及び命令処理方法
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
JP5047542B2 (ja) マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
JP5666473B2 (ja) マルチスレッド式データ処理システム
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
US11366669B2 (en) Apparatus for preventing rescheduling of a paused thread based on instruction classification
JP5316407B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2019200523A (ja) 演算処理装置及び演算処理装置の制御方法
US20150074378A1 (en) System and Method for an Asynchronous Processor with Heterogeneous Processors
US11314505B2 (en) Arithmetic processing device
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
JPH04308930A (ja) 電子計算機
LINGAM et al. Processor Architecture: A Study
JP2001350632A (ja) 命令配置方法、および、コンパイラを記憶した記憶媒体
JPH10187444A (ja) データ処理装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100908

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20111226