JP5671474B2 - 演算データ構造 - Google Patents

演算データ構造 Download PDF

Info

Publication number
JP5671474B2
JP5671474B2 JP2011539978A JP2011539978A JP5671474B2 JP 5671474 B2 JP5671474 B2 JP 5671474B2 JP 2011539978 A JP2011539978 A JP 2011539978A JP 2011539978 A JP2011539978 A JP 2011539978A JP 5671474 B2 JP5671474 B2 JP 5671474B2
Authority
JP
Japan
Prior art keywords
operand
code
data structure
operands
address
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.)
Active
Application number
JP2011539978A
Other languages
English (en)
Other versions
JP2012512449A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012512449A publication Critical patent/JP2012512449A/ja
Application granted granted Critical
Publication of JP5671474B2 publication Critical patent/JP5671474B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、一般に、データ処理に関する。
現在のところ、多くの傾向が、サーバ・クラス及びメインフレームのコンピュータ・システムの開発に影響を及ぼしている。特に、集積回路内のトランジスタの密度は、現在の公式化では、集積回路上の単位面積当たりのトランジスタ数はおよそ18カ月ごとに倍増すると仮定するムーアの法則に従って増加し続けている。さらに、プロセッサの周波数は、およそ2年ごとに倍増し続けている。さらに、システムの規模(すなわち、システム内の中央処理ユニット(CPU)の数)は、数十、数百、場合によっては数千のプロセッサにさえも増え続けている。これらの傾向の結果として、サーバ・クラス及びメインフレームのコンピュータ・システムのピーク性能が急速に高まり、最近開発された大規模高性能
計算(HPC)システムは、数百TFLOPS(毎秒1兆回の浮動小数点演算)のピーク性能を誇っている。
残念なことに、高性能計算システムにおける持続性能(sustained performance)は、ピーク性能のペースでは向上しておらず、実際には、持続性能対ピーク性能の比率は現在も低く(例えば、1:10)が、全体的に下降している。かかる未利用の計算能力が利用可能であることについて、今や大きな関心が、より高い持続的性能の達成に向けられている。
本発明は、データ処理システムの1つ又は複数のプロセッサ内でのアドレス生成が加速された場合に、より高い性能(及び、より高い持続対ピーク性能)を達成できることが分かる。
一実施形態において、プロセッサが、命令を実行するための少なくとも1つの実行ユニットと、少なくとも1つの実行ユニットによる実行用の命令をフェッチするための命令順序付けユニットと、プロセッサにより実行される1又は複数の繰り返し演算(iterated operation)を特定する演算データ構造と、命令順序付けユニットからの開始信号に応答して、演算データ構造にアクセスし、演算データ構造により特定された1又は複数の繰り返し演算を実行するための計算エンジンとを含む。
ここで本発明の実施形態が、添付図面を参照して単なる一例として説明される。
【0006】
【図1】本発明の実施形態による、データ処理システムの高レベル・ブロック図である。
【図2】図1からの処理ユニットの高レベル・ブロック図である
【図3】図2からのプロセッサ・コアのより詳細なブロック図である。
【図4】図3の浮動小数点ユニット(FPU)による浮動小数点命令の実行に伴うステップを示す例示的なプロセスの高レベル・ブロック図である
【図5】図3のブロック計算エンジン(BCE)の例示的な実施形態のより詳細なブロック図である
【図6】図5のオペランド・データ構造の例示的な実施形態を示す。
【図7】図5の演算データ構造の例示的な実施形態を示す。
【図8】コード・ブロック処理をサポートする関連したオペランド・データ構造及び演算データ構造と共に、ソース・コードのような処理前コードからの、オブジェクト・コードのような処理後コードの生成を示すプロセス・フロー図である。
【図9】本発明の実施形態による、ブロック駆動型計算の例示的な方法の高レベル論理フローチャートである。
【発明を実施するための形態】
ここで図を、特に図1を参照すると、本発明による、マルチプロセッサ・データ処理システムの例示的な実施形態の高レベル・ブロック図が示される。示されるように、データ処理システム100は、データ及び命令を処理するための複数の処理ノード102a、102bを含む。処理ノード102a、102bは、アドレス、データ及び制御情報を伝えるように、システム相互接続部110に結合されている。システム相互接続部110は、例えば、バス型相互接続部、スイッチ型相互接続部、又はハイブリッド相互接続部として実装することができる。
示される実施形態において、各処理ノード102は、各々が好ましくはそれぞれの集積回路として実現される4つの処理ユニット104a−104dを含むマルチチップ・モジュール(MCM)として実現される。各処理ノード102内の処理ユニット104a−104dは、ローカル相互接続部114により通信するように結合され、システム相互接続部110のように、1つ又は複数のバス及び/又はスイッチを実装することができる。
各ローカル相互接続部114に結合されたデバイスは、処理ユニット104だけではなく、1つ又は複数のシステム・メモリ108a−108dも含む。一般的に、データ処理システム100の任意の処理ノード102内の任意の処理ユニット104において、プロッセサ・コア200(図2)により、システム・メモリ108内にあるデータ及び命令にアクセスし、これらを修正することができる。本発明の代替的実施形態においては、1つ又は複数のシステム・メモリ108は、ローカル相互接続部114でなく、システム相互接続部110に結合させることができる。
当業者であれば、データ処理システム100は、例えば、周辺機器、相互接続ブリッジ、不揮発性ストレージ、ネットワーク又は付属装置に接続するためのポート等のような、示されていない多くの付加的なコンポーネントを含むことができることを理解するであろう。こうした付加的なコンポーネントは、本発明の理解に必要ではないので、図1には示されず、本明細書ではこれ以上説明されない。しかしながら、本発明がもたらす改善点は、様々なアーキテクチャのデータ処理システムに適用可能であり、決して、図1に示される一般化されたデータ処理システム・アーキテクチャに限定されるものではない。
ここで図2を参照すると、本発明による例示的な処理ユニット104のより詳細なブロック図が示される。示される実施形態において、各々の処理ユニット104は、命令及びデータを独立して処理するための、複数の(例えば、2つの)プロセッサ・コア200a、200bを含む。各々のプロセッサ・コア200の動作は、最下位レベルに共有システム・メモリ108a−108dを有し、上位レベルに1つ又は複数のレベルのキャッシュ・メモリを有するマルチレベルの揮発性メモリ階層によりサポートされる。示される実施形態において、各々の処理ユニット104は、プロセッサ・コア200a−200bから受け取った要求及びローカル相互接続部114上でスヌープされた(snooped)動作に応答して、処理ノード102内のシステム・メモリ108a−108dのそれぞれへの読み書きアクセスを制御する統合メモリ・コントローラ(integrated memory controller、IMC)206を含む。
例証となる実施形態において、処理ユニット104のキャッシュ・メモリ階層は、各プロセッサ・コア200内のストア・スルー(store-through)・レベル1(L1)キャッシュと、処理ユニット104の全てのプロセッサ・コア200a、200bにより共有されるレベル2(L2)キャッシュ230とを含む。L2キャッシュ230は、L2アレイ及びディレクトリ234、並びに、マスター232及びスヌーパ236を含むキャッシュ・コントローラを含む。マスター232は、関連したプロセッサ・コア200a−200bから受け取ったメモリ・アクセス(及び他の)要求に応答して、ローカル相互接続部114及びシステム相互接続部110におけるトランザクションを開始し、L2アレイ及びディレクトリ234にアクセスする。スヌーパ236は、ローカル相互接続部114における動作をスヌープし、適切な応答を与え、動作により要求されるL2アレイ及びディレクトリ234へのあらゆるアクセスを実行する。
示されるキャッシュ階層は、2つのキャッシュ・レベルしか含まないが、当業者であれば、代替的な実施形態は、上位レベルのキャッシュのコンテンツを完全に含む、部分的に含む、又は含まない、付加的なレベル(L3、L4等)のオンチップ・キャッシュ又はオフチップ・キャッシュ、インライン・キャッシュ又はルックアサイド・キャッシュを含むことができることを理解するであろう。さらに、様々なレベルのキャッシュ階層のいずれかを、特定のプロセッサ・コア200に対して非公開にしてもよく、又は複数のプロセッサ・コア200により共有してもよい。
さらに図2を参照すると、各々の処理ユニット104は、データ処理システム100内のキャッシュ・コヒーレンスを維持する分散型スヌープ・ベースのコヒーレンス信号伝達機構の一部を実装する、応答論理210のインスタンスをさらに含む。さらに、各々の処理ユニット104は、ローカル相互接続部114とシステム相互接続110との間で通信を選択的に転送するための転送論理212のインスタンスを含む。最後に、各々の処理ユニット104は、I/O装置216等の1つ又は複数のI/O装置の取り付けをサポートする統合I/O(入力/出力)コントローラ214を含む。I/Oコントローラ214は、I/O装置216による要求に応答して、ローカル相互接続部114及び/又はシステム相互接続部110を動作させることができる。
ここで図3を参照すると、図2からのプロセッサ・コア200の1つのより詳細なブロック図が示される。図示されるように、プロセッサ・コア200は、プロセッサ・コア200によってアクセスされる可能性の高い命令及びオペランド・データを一時的にバッファリングする、分岐したレベル1(L1)命令キャッシュ302及びデータ・キャッシュ304を含む。さらに、プロセッサ・コア200は、命令メモリ管理ユニット(instruction memory management unit、IMMU)308が実行する実効アドレス−実アドレス変換(effective-to real address translation、ERAT)によって得られる実アドレスを用いて、L1 I−キャッシュ302から命令をフェッチする命令順序付けユニット(instruction sequencing unit、ISU)306を有する。当業者により理解されるように、ISU306は、実行の1つ又は複数のアクティブ・スレッド内のフェッチ命令(すなわち、非投機的フェッチ命令)、又は最終的に実行されることもされないこともある投機的フェッチ命令を要求することができる。いずれにせよ、要求された命令セットがL1 I−キャッシュ302内に存在しない場合には、ISU306は、I−キャッシュ再ロード・バス310を介して、L2キャッシュ230(及び/又は、下位レベルのメモリ)から関連した命令セットを要求する。
ISU306によりフェッチされた命令は、最初にISU306内にバッファリングされ、前処理を行なって、例えば、分岐予測を行なうこと又はマイクロコードを用いて命令を変換することができる。ISU306は、特定の命令により必要とされるリソースを割り当て、次に、命令を、命令のタイプに基づいて、場合によってはアウト・オブ・プログラム・オーダー方式で、実行ユニット320−328のような実行ユニットにディスパッチする。従って、条件・レジスタ・修正命令(condition-register-modifying instruction)及び分岐命令は、それぞれ条件レジスタ・ユニット(condition register unit、CRU)320及び分岐実行ユニット(branchexecution unit、BEU)322にディスパッチされ、固定小数点命令及びロード/ストア命令は、それぞれ固定小数点ユニット(fixed-point unit、FXU)324及びロード・ストア・ユニット(loadstore unit、LSU)326にディスパッチされ、浮動小数点命令は、浮動小数点ユニット(floating-pointunit、FPU)328にディスパッチされる。勿論、ベクトル実行ユニットのような1つ又は複数の他のタイプの実行ユニット、及び、1つ又は複数のタイプのレジスタ・ファイル(例えば、ベクトル・レジスタ・ファイル)を実装することもできる。可能なキューイング及びバッファリングの後、ディスパッチされた命令が、実行ユニット320−328によって適時(opportunistically)又はインオーダー方式で実行される。
実行ユニット320−328の1つの中での実行中に、命令は、入力オペランドがある場合はそれを、実行ユニットに結合されたレジスタ・ファイル330−334内の1つ又は複数の設計レジスタ及び/又はリネーム・レジスタから受け取ることができる。同様に、命令実行のデータ結果(例えば、宛先オペランド)がある場合にはそれが、実行ユニット320−328によりレジスタ・ファイルに書き込まれる。例えば、FXU324は、入力オペランドを汎用レジスタ・ファイル(general-purpose register file、GPRF)332から受け取り、宛先オペランドをそこに格納し、FPU328は、入力オペランドを浮動小数点レジスタ・ファイル(floating-point register file、FPRF)334から受け取り、宛先オペランドをそこに格納する。LSU326は、入力オペランドをGPRF332から受け取り、ターゲット実効アドレスを計算し、データをL1 D−キャッシュ304とGPRF332及びFPRF334の両方の間で転送させ、その後、データ・メモリ管理ユニット(data memory management unit、DMMU)340による実効アドレス−実アドレス変換が行なわれる。同様に、条件・レジスタ・修正命令及び条件・レジスタ・依存命令を実行するときは、CRU320及びBEU322は、例えば、それぞれの条件レジスタ、リンク・レジスタ、カウント・レジスタ、及びリネーム・レジスタを含むことができる制御レジスタ・ファイル(control register file、CRF)330にアクセスする。BEU322は、経路アドレスを得るための条件分岐を解決するために条件レジスタ、リンク・レジスタ、及びカウント・レジスタの値にアクセスし、BEU322は、このアドレスを、それが指示する経路に沿って命令フェッチを開始するために、命令順序付けユニットに供給する。実行ユニットは、命令の実行を終了した後、ISU306に通知し、このISU306は、命令の完了をスケジュールする。
プロセッサ・コア200はまた、随意的に、しかし好ましくは、要求に先立ってデータを投機的にプリフェッチするデータ・プリフェッチ・ユニット(data prefetch unit、DPFU)328を含む。つまり、最近見られたたメモリ・アクセス・パターンに基づいて、DPFU328は、投機的データ・フェッチ・アドレスをL2キャッシュ230又は下位レベルのメモリに提供し、プロセッサ・コア200によりアクセスされる可能性が高いデータを取り出してL1 D−キャッシュ304に入れる。このように、平均データ・アクセス待ち時間が改善される。
プロセッサ・コア200の動作の前述の説明から分かるように、実行ユニット320−328による命令の実行は、一般に、共通パターンに従う。このパターンの例として、図4に示される高レベル論理フローチャートにおいて要約される、浮動小数点命令の実行に伴うステップを考える。
図4に示されるプロセスは、ブロック400において、命令ストリームの実行における任意の時点で始まり、ブロック402に進む。ブロック402は、FXU324が、1つ又は複数の固定小数点命令を実行し、ブロック406において後で実行される浮動小数点命令の1つ又は複数のソース・オペランドの実効アドレスを決定することを示す。実行に続いて、FXU324は、ソース・オペランドの実効アドレスをGPRF332内の1つ又は複数のGPRに格納する。次に、ブロック404において、LSU326は、浮動小数点ロード命令を実行する。浮動小数点ロード命令を実行する際、LSU326は、GPRF332から浮動小数点ソース・オペランドの実効アドレス読み取り、メモリ階層内の浮動小数点ソース・オペランドにアクセスし、浮動小数点ソース・オペランドをFPRD334内の1つ又は複数のFPRに格納する。ブロック406において、FPU328は、浮動小数点命令を実行する。浮動小数点命令を実行する際、FPU328は、FPRF334内の1つ又は複数の浮動小数点ソース・オペランドにアクセスし、1つ又は複数の浮動小数点宛先オペランドを計算し、浮動小数点宛先オペランドをFPRF334内の1つ又は複数のFPRFに格納する。最後に、ブロック408において、LDU326は、浮動小数点ストア命令を実行し、浮動小数点命令の実行結果をメモリ階層に配置する。浮動小数点ストア命令を実行する際、LSU326は、GPRF332から1つ又は複数のソース・オペランドを読み取り(その計算は、1つ又は複数の付加的な固定小数点命令のFXU324による実行を必要とすることがある)、ターゲット実効アドレスを計算し、浮動小数点宛先オペランドを、ターゲット実効アドレスと関連したメモリ階層内の位置に格納する。ブロック408に続いて、示されるプロセスは、ブロック410で終了する。
理解されるように、例えば、科学的作業負荷を処理するときなどのプログラム実行中、図4に示されるプロセスが、何度も繰り返されることが多い。多くの科学的プログラムは、実効アドレス空間内に規定分布を有する入力オペランドにおいて同じ浮動小数点計算を繰り返し行ない、結果として得られる宛先オペランドを、規定分布を有する実効アドレス空間に格納するので、本発明は、とりわけ、入力オペランド及び宛先オペランドの実効アドレスの生成を加速することによって、性能を向上させることができることが理解される。従って、図3に示されるものを含む少なくとも幾つかの実施形態においては、プロセッサ・コア200は、命令のブロックについての入力オペランド及び宛先オペランドの実効アドレス空間の計算を加速するブロック計算エンジン(BCE)350をさらに含む。示される実施形態において、BCE350は、BCE350による処理を開始するISU306、及び、BCE350によって生成されたメモリ・アクセスの実効アドレスをメモリ階層にアクセスするのに用いられる対応する実アドレスに変換するDMMU340に結合される。
ここで図5を参照すると、図3のブロック計算エンジン(BCE)350のより詳細なブロック図が示される。図示されるように、BCE350は、メモリ階層から読み取られるソース・オペランドの実効アドレス(EA)を指定する読み取り要求を生成し、出力するアドレス生成加速器(address generation accelerator、AGA)500を含む。AGA500はまた、メモリ階層に書き込まれる宛先オペランドの実効アドレスEAを指定する書き込み要求を生成し、出力する。下記にさらに詳述されるように、AGA500は、AGA500にアクセス可能な1つ又は複数のオペランド・データ構造502を参照することによって、読み取り要求及び書き込み要求を生成する。図3のBCE350とDMMU340の結合により示されるように、アドレス生成加速器500は、メモリ・アクセス要求のEAをDMMU340に提供し、DMMU340が、EAをメモリ階層にアクセスするために用いられる実アドレスに変換する。
少なくとも幾つかの実施形態においては、AGA500により生成されたEAを用いて、AGAが生成したEAと関連した1つ又は複数の入力オペランドを入力として取得し、AGAが生成したEAと関連した1つ又は複数の宛先オペランドを出力として生成する、実行ユニット320−328(及び、存在する場合にはベクトル実行ユニット)による命令の実行をサポートする。他の実施形態においては、AGA500は、演算データ構造512により示される演算を、AGAが生成したEAと関連した入力オペランドに適用して、AGAが生成したEAと関連した1つ又は複数の宛先オペランドを獲得する、計算エンジン510をさらに含む。
AGA500及び計算エンジン510は、例えば、プログラマブル論理アレイ(PLA)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又は1つ又は複数の算術論理ユニット(ALU)を用いて実装することができる。
図5は、オペランド・データ構造502及び演算データ構造512を、BCE350内の専用ストレージ内にあるものとして示しているが、他の実施形態においては、オペランド・データ構造502及び演算データ構造512は、代替的に、L1 D−キャッシュ304内又はプロセッサ・コア200の他のデータ格納場所内にあってもよい。
ここで図6−図7を参照すると、オペランド・データ構造502及び演算データ構造512の例示的な実施形態のブロック図が示される。最初に図6を参照すると、オペランド・データ構造502の示される実施形態は、各々がそれぞれのコード・ブロックについてのオペランドEAを計算するためにAGA500により用いられる情報を提供する、1つ又は複数のオペランド・テーブル600a、600b、・・・600nを含む。つまり、AGA500は、ISU306によるコマンドに応答して、オペランド・テーブル600aにアクセスして第1のコード・ブロックについてのEAを計算し、オペランド・テーブル600bにアクセスして第2のコード・ブロックについてのEAを計算し、オペランド・テーブル600nにアクセスして後続の第3のコード・ブロックについてのEAを計算する。
図6にさらに示されるように、示される例示的な実施形態において、各々のオペランド・テーブル600は、少なくとも3つのエントリ、すなわち、ソース・オペランドA(SA)エントリ602a、ソース・オペランドB(SB)エントリ602b、及び宛先オペランドC(DC)エントリ602cを含む。勿論、必要に応じて、付加的なソース・オペランド及び宛先オペランドをサポートする付加的なエントリを実装することもできる。示される実施形態において、各々のエントリ602は、所与のタイプの次のオペランドのEAを計算するために用いられるアルゴリズムを示すアルゴリズム・フィールド604と、EAと関連した入力オペランド又は宛先オペランドのサイズを示すオペランド・サイズ・フィールド606と、エントリについて計算されるEAの数を示す距離フィールド608と、例えば、オペランドがキャッシングされることが好ましいかどうか、そして、キャッシングすることが好ましい場合には、キャッシュ階層内のどのキャッシュ・レベルにキャッシングされるか、といったキャッシング・ポリシーを示すキャッシュ・ヒント・フィールド610とを含む、多数のフィールドを含む。各エントリ602は、随意的に、他のオペランドのEAを計算するベース実効アドレスを示す付加的なフィールドを含むことができる。下記にさらに述べられるように、ベース実効アドレス情報は、代替的に、ブロック計算開始信号のパラメータとして通信することができる。
ここで図7を参照すると、同様に、演算データ構造512をテーブルとして実装することもできる。この実施形態においては、1つの演算データ構造512が実装され、この1つの演算データ構造512は、1つ又は複数の宛先オペランドを取得するために、1つ又は複数のソース・オペランドにおいて実行される演算を示す複数のエントリ620a−620nを含む。複数のエントリ620a−620nの各々は、特定のコード・ブロックに一意に対応することが好ましく(必須ではないが)、計算エンジン510が、1つ又は複数の宛先オペランドを取得するために、各エントリ620により示される演算を、AGA500によりメモリ階層から取り出された各々の入力オペランド・セットに適用することを意味する。
図6−図7は、テーブルを用いるオペランド・データ構造502及び演算データ構造512の例示的な実施形態を示すが、他の実施形態においては、アレイ、リンク・リスト等のような1つ又は複数の他のタイプのデータ構造を、代替的に又は付加的に用い得ることも理解すべきである。
ここで図8を参照すると、1つ又は複数のオペランド・データ構造502及び1つ又は複数の演算データ構造512を生成するための例示的なプロセスを示すデータ・フロー図が示される。示されるプロセスにおいて、揮発性又は不揮発性の有形データ・ストレージ内にあり、図1のデータ処理システム(又は、いずれかの他の適切なデータ処理システム)のようなデータ処理システム上で実行することができる、コンパイラ702のようなプログラム・コードが、ソース・コード700又は中間コードのような処理前コードを受け取り、該処理前コードをコンパイルして、オブジェクト・コード704(又は何らかの中間コード)のような処理後コード704を得る。コンパイル・プロセスにおいては、コンパイラ702も、1つ又は複数のオペランド・データ構造502及び1つ又は複数の演算データ構造512を生成する。
一般に、ソース・コード700は、例えば高水準言語又はスクリプトで書かれた命令、ステートメント、又はコマンドを含む。示される例においては、ソース・コード700は、BCE350による処理の候補ではないコード・セクション710a、710bを含む。例えば、コード・セクション710aは、変数x及びyの相対値に応じた条件分岐を含む。さらに、ソース・コード700は、BCE350による処理の候補である、コード・ブロック712等の1つ又は複数のコード・ブロックを含む。示される例においては、コード・ブロック712は、ループ変数xの値によって選択されるアレイb、c及びd内の浮動小数点値に浮動小数点の乗加算演算を行ない、次に、各計算の結果を、ループ変数xの値によって再び選択されるアレイa内にある位置に配置する、ホワイル・ループ(while loop)を含む。
ソース・コード700の受領に応答して、コンパイラ702は、加速の候補ではないコード・セクションを特定し、対応するオブジェクト・コード714(例えば、アセンブリ言語コード又はマシン・コード)を生成する。例えば、本例では、コンパイラ702は、コード・セクション710aにより示される条件分岐に対応するアセンブリ命令を生成する。さらに、コンパイラ702は、加速の候補である、コード・ブロック712のような1つ又は複数のコード・ブロックを特定し、そうしたコード・ブロックの各々について、オペランド・データ構造502及び演算データ構造512のような、対応するエントリを含むデータ構造を生成する。
しかしながら、コンパイラ702は、コード・ブロック712の機能に明示的に命令するアセンブリ・コード(又は、他の下位レベル・コード)を生成しない。代わりに、コンパイラ702は、ブロック計算コマンド(block computation command、BCC)716をオブジェクト・コード704に挿入し、ブロック計算コマンド(BCC)716は、BCE350を含むプロセッサ・コア200によって処理されると、オペランド・データ構造502及び演算データ構造512におけるエントリに対するBCE350の動作を呼び出して、コード・ブロック712により指定された機能を達成する。BCCは、プロセッサ・コア200の実行ユニットにおいて直接実行するように意図されていないので、BCCは、実行ユニット320−328により実行される命令に対して用いられる命令セット・アーキテクチャに属する必要も又はこれに従う必要もない。
示される例において、コンパイラ702は、ソース・オペランドb[x]、c[x]、及びd[x]に対する3つのソース・オペランド・エントリ602と、宛先オペランドa[x]に対する宛先オペランド・エントリ602とを含むオペランド・テーブル600を生成する。次に、コンパイラ702は、アルゴリズムx=x+yを、これらのエントリ602の各々のアルゴリズム・フィールド604に置き、オペランド・サイズ8h(8バイトの単精度浮動小数点値のサイズを表す)を、各エントリ602のオペランド・サイズ・フィールド606に置く。各エントリ602の距離フィールド608において、コンパイラ702は、コード・ブロック704内のホワイル・ループが実行される回数を表す、10進値10に対応する値を置く。最後に、コンパイラ702は、ソース・オペランド及び宛先オペランドと関連したキャッシュ・ヒントがある場合はそれをキャッシュ・ヒント・フィールド610に置く。コンパイラ702は、例えば、ソース・オペランド及び宛先オペランドの将来の使用を参照することによって、キャッシュ・ヒントを決定する。例えば、宛先オペランドが計算されるものの、二度と参照されない場合には、コンパイラ702は、キャッシュ・ヒント・フィールド610において、宛先オペランドをキャッシングすべきではないことを示す。代替的に、計算直後に宛先オペランドを再び参照する(例えば、後の宛先オペランドの計算の入力オペランドとして)場合には、コンパイラ702は、キャッシュ・ヒント・フィールド610において、宛先オペランドを例えばL1 D−キャッシュ304内にキャッシングすべきであることを示す。
ここで図9を参照すると、本発明による、ブロック駆動型計算の例示的なプロセスの高レベル論理フローチャートが示される。図示されるプロセスは、例えば、図3のプロセッサ・コア200によって実行することができ、幾つかの実施においては、1つ又は複数のハードウエア・スレッド内のプロセッサ・コア200によって、プロセスの複数のインスタンスを同時に実行することができる。論理フローチャートとして、示されるステップの少なくとも幾つかを同時に又は示される順序とは異なる順序で行なうことができる。
示されるように、プロセスは、ブロック800で始まり、次に、処理のためにISU306がオブジェクト・コード704内の次のコード・セットをフェッチすることを示すブロック802に進む。次に、図9に示されるプロセスは分岐し、ブロック804及びブロック810に進む。
まずブロック804を参照すると、ISU306は、フェッチされたコード・セット内の命令の実行を行なう際に実行ユニット320−328により用いられるリソース(例えば、リネーム及び設計レジスタ、バッファ等)を割り当て、フェッチされたコード・セット内の命令を実行ユニット320−328にディスパッチする。ディスパッチされた命令の受信に応答して、実行ユニット320−328の1つ又は複数は、割り当てられたリソースを用いてディスパッチされた命令を実行する(ブロック806)。命令を実行した後、ISU306は命令を終了し、命令実行中に用いられたリソースを解放又は再割り当てする。その後、プロセスはブロック802に戻る。
ここでブロック810を参照すると、ISU306は、フェッチされたコード・セットが少なくとも1つのブロック計算コマンド(BCC)を含むかどうかを判断する。含まない場合、プロセスは、既に説明したブロック802に戻る。しかしながら、フェッチされたコード・セットが少なくとも1つのBCCを含むとISU306が判断した場合、ブロック812に示されるように、ISU306は、各BCCに対応するブロック計算開始要求をBCE350に伝送する。少なくとも幾つかの実施形態において、ブロック計算開始信号は、オペランド・データ構造502内の適切なオペランド・テーブル600と、演算データ構造512内の適切なエントリ620へのポインタを含む又は参照する。オペランド・テーブル600内に存在しない場合、ブロック計算開始要求はまた、各々のソース・オペランド又は宛先オペランドについてのベース実効アドレス(例えば、SA、SB、DC)へのポインタを含む又は参照することも好ましい。
各々のブロック計算開始信号の受信に応答して、AGA500は、BCCに対応するオペランド・テーブル600にアクセスする。アルゴリズム・フィールド604により示されるアルゴリズムを用いて、AGA500は、ソース・オペランドについての1つ又は複数のEAのシーケンスを生成し、EAを読み取り要求内のDMMU340に発行する(ブロック814)。DMMU340は、EAを実アドレスに変換し、次に、読み取り要求をメモリ階層に転送する。メモリ階層は、計算エンジン510に、実アドレスと関連したソース・オペランドを与えることによって、読み取り要求に応答する。データ依存性が存在しない限り、演算データ構造512により示される演算の1回又は複数回の繰り返しのソース・オペランドは、どのような順序でもメモリ階層から取り出すことができる。
さらに、ブロック816において、計算エンジン510は、演算データ構造512の指定されたエントリにより示される演算を用いて、ブロック814に示されるステップを介して得られたソース・オペランドから、1つ又は複数の宛先オペランドを計算する。ソース・オペランドはデータ依存性がみられる場合に利用可能になるので、計算エンジン510は、演算を任意の順序で何度も繰り返し実行することができる。計算エンジン510は、キャッシュ・ヒント・フィールド610内に示されるキャッシュ・ポリシーに従って、演算のソース・オペランド及び/又は宛先オペランドをキャッシュ階層内にキャッシングすることが好ましい。従って、異なるキャッシュ・ポリシーは、オペランド・データの再使用に関するコンパイラにより提供された情報に基づいて、同じ演算又は異なる演算の異なるオペランドに適用することができる。
ブロック816に示される演算の前、最中及び/又は後、AGA500は、BCCに対応するオペランド・テーブル600に再びアクセスする。宛先オペランドについてのアルゴリズム・フィールドにより示されるアルゴリズムを用いて、AGA500は、宛先オペランドについての1つ又は複数のEAのシーケンスを生成する(ブロック818)。宛先オペランドが計算エンジン510によって生成され、関連したEAがAGA500によって生成されると、BCE350は、DMMU340を介して、宛先オペランド及び関連したEAを指定する書き込み要求をメモリ階層に発行し、DMMU340は、EAを実アドレスに変換し、サービスのために書き込み要求をメモリ階層に転送する。ブロック820に続いて、プロセスは、既述のブロック802に戻る。
1つ又は複数の実施形態を具体的に示し、説明したが、当業者であれば、本発明の範囲から逸脱することなく、形態及び詳細に関する様々な変更を行なうことができることを理解するであろう。例えば、本発明の態様は、少なくとも幾つかの機能に命令するプログラム・コードを実行するコンピュータ・システムに関して説明されたが、本発明の1つ又は複数の実施形態は、代替的に、データ処理システムと併せて用いるためのプログラムとして実装できることを理解すべきである。例えば、コンパイラ702は、プログラムとして実現することができる。さらに、オペランド・データ構造及びオブジェクト・コード704のような処理後コード、並びに随意的に演算データ構造を、合わせてプログラムとして実現することができる。こうしたプログラムは、本発明の機能に命令するプログラム・コードをコード化するコンピュータ可読媒体を含む。コンピュータ可読媒体は、例えば、有形ストレージ媒体(例えば、CD−ROM、DVD、ディスケット、又はハードディスク、システム・メモリ、フラッシュ・メモリ等)、或いはデジタル・ネットワーク及びアナログ・ネットワーク等の通信媒体として実装することができる。
本特許出願は、以下の同時係属中の出願に関連しており、これらの全体を引用により本明細書に組み込む。
(1)米国特許出願第12/336,315号(整理番号第AUS920070385US1号)
(2)米国特許出願第12/336,342号(整理番号第AUS920080285US1号)
(3)米国特許出願第12/336,350号(整理番号第AUS920080286US1号)、及び
(4)米国特許出願第12/336,301号(整理番号第AUS920080287US1号)
100:データ処理システム
102、102a、102b:処理ノード
104、104a−104d:処理ユニット
108、108a−108d:システム・メモリ
110:システム相互接続部
114:ローカル相互接続部
200、200a、200b:プロッセサ・コア
206:メモリ・コントローラ(IMC)
210:応答論理
212:転送論理
214:統合I/O(入力/出力)コントローラ
216:I/O装置
230:L2キャッシュ
232:マスター
234:L2アレイ及びディレクトリ
236:スヌーパ
302:L1命令キャッシュ
304:データ・キャッシュ
306:命令順序付けユニット(ISU)
308:命令メモリ管理ユニット(IMMU)
320:条件レジスタ・ユニット(CRU)
322:分岐実行ユニット(BEU)
324:固定小数点ユニット(FXU)
326:ロード・ストア・ユニット(LSU)
328:浮動小数点ユニット(FPU)
329:データ・プリフェッチ・ユニット(DPFU)
330:制御レジスタ・ファイル(CRF)
332:汎用レジスタ・ファイル(GPRF)
334:浮動小数点レジスタ・ファイル(FPRF)
340:データ・メモリ管理ユニット(DMMU)
500:アドレス生成加速器(AGA)
502:オペランド・データ構造
510:計算エンジン
512:演算データ構造
600a、600b、・・・600n:オペランド・テーブル
602a:ソース・オペランドA(SA)エントリ
602b:ソース・オペランドB(SB)エントリ
602c:宛先オペランドC(DC)エントリ
604:アルゴリズム・フィールド
606:オペランド・サイズ・フィールド
608:距離フィールド
610:キャッシュ・ヒント・フィールド
620a、・・・、620n:エントリ
700:ソース・コード
702:コンパイラ
704:オブジェクト・コード
710a、710b:コード・セクション
712:コード・ブロック
714:オブジェクト・コード
716:ブロック計算コマンド(BCC)

Claims (12)

  1. データ処理システムにおいてコードをコンパイルする方法であって、
    処理前コードを受信することに応答して、コンパイラが、アドレス生成の加速の候補ではない前記処理前コード内のコード・セクションを特定し、アドレス生成の加速の候補である前記処理前コード内のコード・ブロックであって、少なくとも第1オペランド及び第2オペランドを有する繰り返し演算を指定するコード・ブロックを特定する、ことと、
    前記コード・セクションを特定することに応答して、前記コンパイラが、前記特定されたコード・セクションに対応する1つ又は複数の下位レベルの命令を含む処理後コードを生成することと、
    前記コード・ブロックを特定することに応答して、前記コンパイラが、前記処理後コードとは別個の演算データ構造及びオペランド・データ構造を生成し、出力することであって、前記演算データ構造は前記繰り返し演算を特定し、前記オペランド・データ構造は複数の第1オペランドのアドレス間の第1のアドレス関係と、複数の第2オペランドのアドレス間の第2のアドレス関係とを定める、ことと、
    前記コンパイラが、前記演算データ構造及び前記オペランド・データ構造の処理を呼び出して、前記繰り返し演算を実行するブロック計算コマンドを前記処理後コード内に置くことと、
    前記コンパイラが、前記処理後コードを出力することと、
    を含む方法。
  2. 前記第1のアドレス関係は、前記複数の第1オペランドの実効アドレス間のアドレス関係を示し、
    前記第2のアドレス関係は、前記複数の第2オペランドの実効アドレス間のアドレス関係を示す、請求項に記載の方法。
  3. 前記第1オペランドはソース・オペランドであり、前記第2オペランドは宛先オペランドである、請求項1に記載の方法。
  4. 前記コンパイラが、前記第1及び第2オペランドのキャッシングに関する情報を前記演算データ構造内に置くことをさらに含む、請求項1に記載の方法。
  5. 前記コンパイラが、前記複数の第1オペランドにアクセスするために生成される第1の数のアドレスと、前記複数の第2オペランドにアクセスするために生成される第2の数のアドレスとをオペランド・データ構造内に示すことをさらに含む、請求項1に記載の方法。
  6. オペランド・データ構造を生成することは、オペランド・テーブルを生成することを含む、請求項1に記載の方法。
  7. データ処理システムにより処理されるときに、請求項1乃至6のいずれか1項に従った方法を前記データ処理システムに実行させるためのコンパイラ・プログラム・コードを含む、コード・コンパイラ。
  8. 命令を実行するための少なくとも1つの実行ユニットと、
    請求項7に記載のコード・コンパイラによって生成された処理後コードに含まれる、前記少なくとも1つの実行ユニットによる実行用の命令及びブロック計算コマンドをフェッチし、前記ブロック計算コマンドに応じてブロック計算開始信号を出力する命令順序付けユニットと、
    プロセッサにより実行され、それぞれ第1オペランド及び第2オペランドを有する1つ又は複数の繰り返し演算を特定する、前記実行用の命令とは別個の演算データ構造と、
    前記繰り返し演算の複数回の繰り返しのための複数の第1オペランドのアドレス間の第1の関係と、前記繰り返し演算の複数回の繰り返しのための複数の第2オペランドのアドレス間の第2の関係とを指定する、前記実行用の命令とは別個のオペランド・データ構造と、
    前記オペランド・データ構造により指定される前記第1の関係を参照することにより前記複数の第1オペランドのアドレスを、及び、前記オペランド・データ構造により指定される前記第2の関係を参照することにより前記複数の第2オペランドのアドレスを計算し、出力するアドレス生成加速器と、
    前記命令順序付けユニットからの前記ブロック計算開始信号に応答して、前記演算データ構造にアクセスし、前記演算データ構造によって特定された前記1つ又は複数の繰り返し演算を前記アドレス生成加速器からのアドレスを用いて実行する計算エンジンと、
    を含むプロセッサ。
  9. 前記繰り返し演算の前記繰り返しごとに、前記計算エンジンは、メモリ階層から取り出された前記複数の第1オペランドの1つ及び前記複数の第2オペランドの1つから宛先オペランドを計算するように動作可能である、請求項8に記載のプロセッサ。
  10. 前記アドレスは実効アドレスである、請求項8に記載のプロセッサ。
  11. 前記第1オペランドはソース・オペランドであり、前記第2オペランドは宛先オペランドである、請求項8に記載のプロセッサ。
  12. 前記オペランド・データ構造は、前記第1の関係を用いて生成される第1の数のアドレス及び前記第2の関係を用いて生成される第2の数のアドレスの表示を含む、請求項8に記載のプロセッサ。
JP2011539978A 2008-12-16 2009-10-20 演算データ構造 Active JP5671474B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/336,332 US8327345B2 (en) 2008-12-16 2008-12-16 Computation table for block computation
US12/336,332 2008-12-16
PCT/EP2009/063717 WO2010069637A1 (en) 2008-12-16 2009-10-20 Operation data structure

Publications (2)

Publication Number Publication Date
JP2012512449A JP2012512449A (ja) 2012-05-31
JP5671474B2 true JP5671474B2 (ja) 2015-02-18

Family

ID=41475229

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011539978A Active JP5671474B2 (ja) 2008-12-16 2009-10-20 演算データ構造

Country Status (5)

Country Link
US (1) US8327345B2 (ja)
EP (1) EP2368181B1 (ja)
JP (1) JP5671474B2 (ja)
CN (1) CN102257478B (ja)
WO (1) WO2010069637A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8327345B2 (en) 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
JP2010160708A (ja) * 2009-01-09 2010-07-22 Sony Corp 演算器、プロセッサ、コンパイル処理装置およびコンパイル処理方法
US9384001B2 (en) * 2012-08-15 2016-07-05 Nvidia Corporation Custom chaining stubs for instruction code translation
US9652233B2 (en) * 2013-08-20 2017-05-16 Apple Inc. Hint values for use with an operand cache
US10839478B2 (en) * 2019-04-08 2020-11-17 Intel Corporation Accumulator pooling mechanism
CN112463159B (zh) * 2020-11-25 2023-05-09 安徽寒武纪信息科技有限公司 编译方法、装置、电子设备和存储介质

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01213721A (ja) * 1988-02-22 1989-08-28 Hitachi Ltd コンパイラ方式
EP0405318A3 (en) * 1989-06-20 1991-11-27 Nec Corporation Microprocessor having cash bypass signal terminal
US5299320A (en) * 1990-09-03 1994-03-29 Matsushita Electric Industrial Co., Ltd. Program control type vector processor for executing a vector pipeline operation for a series of vector data which is in accordance with a vector pipeline
JP3047998B2 (ja) * 1991-02-13 2000-06-05 株式会社日立製作所 並列計算機におけるプロセッサ割り当て方法、及び装置
US6292879B1 (en) * 1995-10-25 2001-09-18 Anthony S. Fong Method and apparatus to specify access control list and cache enabling and cache coherency requirement enabling on individual operands of an instruction of a computer
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6742110B2 (en) * 1998-10-06 2004-05-25 Texas Instruments Incorporated Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6367071B1 (en) * 1999-03-02 2002-04-02 Lucent Technologies Inc. Compiler optimization techniques for exploiting a zero overhead loop mechanism
US6519768B1 (en) * 1999-03-04 2003-02-11 International Computers Limited Instruction translation method
US6510494B1 (en) * 1999-06-30 2003-01-21 International Business Machines Corporation Time based mechanism for cached speculative data deallocation
KR100331565B1 (ko) * 1999-12-17 2002-04-06 윤종용 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치
JP3477137B2 (ja) * 2000-03-03 2003-12-10 松下電器産業株式会社 最適化装置及び最適化プログラムを記録したコンピュータ読み取り可能な記録媒体
EP1160662A1 (en) * 2000-03-10 2001-12-05 Texas Instruments France Processor with pointer tracking to eliminate redundant memory fetches
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US7111156B1 (en) * 2000-04-21 2006-09-19 Ati Technologies, Inc. Method and apparatus for multi-thread accumulation buffering in a computation engine
US6807622B1 (en) * 2000-08-09 2004-10-19 Advanced Micro Devices, Inc. Processor which overrides default operand size for implicit stack pointer references and near branches
US6477221B1 (en) * 2001-02-16 2002-11-05 University Of Rochester System and method for fast parallel cone-beam reconstruction using one or more microprocessors
US20020124157A1 (en) * 2001-03-01 2002-09-05 International Business Machines Corporation Method and apparatus for fast operand access stage in a CPU design using a cache-like structure
US6851010B1 (en) * 2001-06-29 2005-02-01 Koninklijke Philips Electronics N.V. Cache management instructions
US7249357B2 (en) * 2001-08-20 2007-07-24 Silicon Graphics, Inc. Transparent distribution and execution of data in a multiprocessor environment
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US6931517B1 (en) * 2001-10-23 2005-08-16 Ip-First, Llc Pop-compare micro instruction for repeat string operations
JP4163927B2 (ja) * 2001-10-31 2008-10-08 松下電器産業株式会社 Javaコンパイラ、及び、当該Javaコンパイラが使用するコンパイル情報の生成装置
US7251721B1 (en) * 2001-11-05 2007-07-31 Verisilicon Holdings (Cayman Islands) Co. Ltd. Conditional link pointer register sets marking the beginning and end of a conditional instruction block where each set corresponds to a single stage of a pipeline that moves link pointers through each corresponding register of said register sets as instructions move through the pipeline
US7020765B2 (en) * 2002-09-27 2006-03-28 Lsi Logic Corporation Marking queue for simultaneous execution of instructions in code block specified by conditional execution instruction
US20040064684A1 (en) * 2002-09-30 2004-04-01 Kalluri Seshagiri P. System and method for selectively updating pointers used in conditionally executed load/store with update instructions
US20040139299A1 (en) * 2003-01-14 2004-07-15 International Business Machines Corporation Operand forwarding in a superscalar processor
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US20040176941A1 (en) * 2003-03-04 2004-09-09 Shan-Chyun Ku Method of simulating computation instructions for an instruction set simulator
JP2004280766A (ja) * 2003-03-15 2004-10-07 Aplix Corp 中間コード実行システム
US7089408B2 (en) * 2003-05-12 2006-08-08 International Business Machines Corporation Re-fetch of long operand buffered remainder after cache line invalidation in out-of-order multiprocessor system without instruction re-execution
US7676506B2 (en) * 2003-06-20 2010-03-09 Innopath Software, Inc. Differential file compression of software image versions
US7496921B2 (en) * 2003-08-29 2009-02-24 Intel Corporation Processing block with integrated light weight multi-threading support
US20050076179A1 (en) * 2003-10-02 2005-04-07 International Business Machines Corporation Cache optimized logical partitioning a symmetric multi-processor data processing system
US7290092B2 (en) * 2003-12-10 2007-10-30 International Business Machines Corporation Runtime register allocator
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
JP2006004042A (ja) * 2004-06-16 2006-01-05 Renesas Technology Corp データ処理装置
US20060048104A1 (en) * 2004-08-30 2006-03-02 Plummer Christopher J Mechanism for flowing local variables across a plurality of code blocks
US7380099B2 (en) * 2004-09-30 2008-05-27 Intel Corporation Apparatus and method for an address generation circuit
US7350055B2 (en) * 2004-10-20 2008-03-25 Arm Limited Tightly coupled accelerator
US7343482B2 (en) * 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
US7716455B2 (en) * 2004-12-03 2010-05-11 Stmicroelectronics, Inc. Processor with automatic scheduling of operations
US7552318B2 (en) * 2004-12-17 2009-06-23 International Business Machines Corporation Branch lookahead prefetch for microprocessors
US20060161612A1 (en) * 2005-01-14 2006-07-20 International Business Machines Corporation Method and structure for a generalized cache-register file interface with data restructuring methods for multiple cache levels and hardware pre-fetching
US7757222B2 (en) * 2005-09-30 2010-07-13 Intel Corporation Generating efficient parallel code using partitioning, coalescing, and degenerative loop and guard removal
US7840954B2 (en) * 2005-11-29 2010-11-23 International Business Machines Corporation Compilation for a SIMD RISC processor
US7774765B2 (en) * 2006-02-01 2010-08-10 Ati Technologies Inc. Method and apparatus for moving area operator definition instruction statements within control flow structures
CA2642022A1 (en) * 2006-02-03 2007-08-16 Russell H. Fish, Iii Thread optimized multiprocessor architecture
US20080065834A1 (en) * 2006-09-13 2008-03-13 International Business Machines Corporation Method to Prevent Operand Data with No Locality from Polluting the Data Cache
US8191056B2 (en) * 2006-10-13 2012-05-29 International Business Machines Corporation Sparse vectorization without hardware gather/scatter
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8327345B2 (en) 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation

Also Published As

Publication number Publication date
US20100153938A1 (en) 2010-06-17
EP2368181B1 (en) 2016-11-23
JP2012512449A (ja) 2012-05-31
EP2368181A1 (en) 2011-09-28
US8327345B2 (en) 2012-12-04
CN102257478A (zh) 2011-11-23
WO2010069637A1 (en) 2010-06-24
CN102257478B (zh) 2015-04-08

Similar Documents

Publication Publication Date Title
JP5671474B2 (ja) 演算データ構造
US8458439B2 (en) Block driven computation using a caching policy specified in an operand data structure
Eichenberger et al. Using advanced compiler technology to exploit the performance of the Cell Broadband Engine™ architecture
Zilles et al. Execution-based prediction using speculative slices
CN108376097B (zh) 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
Carrillo et al. The effect of reconfigurable units in superscalar processors
US20140351563A1 (en) Advanced processor architecture
US8285971B2 (en) Block driven computation with an address generation accelerator
EP2353085B1 (en) Operand data structure
Domingos et al. Unlimited vector extension with data streaming support
Wang et al. Decoupled affine computation for SIMT GPUs
US8281106B2 (en) Specifying an addressing relationship in an operand data structure
JP2003526155A (ja) 配列境界をチェックする能力を有する処理アーキテクチャ
Saporito et al. Design of the IBM z15 microprocessor
CN114691597A (zh) 自适应远程原子操作
EP0924603A2 (en) Compiler controlled dynamic scheduling of program instructions
Lipasti et al. Exploiting value locality to exceed the dataflow limit
Hindborg et al. Hardware realization of an FPGA processor—Operating system call offload and experiences
Lenell et al. A performance comparison of several superscalar processor models with a VLIW processor
Yang et al. Fei teng 64 stream processing system: architecture, compiler, and programming
John et al. A comparative evaluation of software techniques to hide memory latency
Pentecost et al. Accelerating dynamically typed languages with a virtual function cache
Kim et al. Adaptive balanced computing (ABC) microprocessor using reconfigurable functional caches (RFCs)
Bacon et al. Braids and fibers: Language constructs with architectural support for adaptive responses to memory latencies
Hall et al. Parallelizing compilers for multiprocessors face many hurdles. However, SUIF’s robust analysis and memory optimization techniques enabled speedups on three fourths of the NAS and SPECfp95 benchmark programs.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140422

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140822

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141028

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141111

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: 20141202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141219

R150 Certificate of patent or registration of utility model

Ref document number: 5671474

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150