JP4295804B2 - プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 - Google Patents
プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 Download PDFInfo
- Publication number
- JP4295804B2 JP4295804B2 JP2008076369A JP2008076369A JP4295804B2 JP 4295804 B2 JP4295804 B2 JP 4295804B2 JP 2008076369 A JP2008076369 A JP 2008076369A JP 2008076369 A JP2008076369 A JP 2008076369A JP 4295804 B2 JP4295804 B2 JP 4295804B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- unit
- register
- instructions
- execution
- 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 - Lifetime
Links
- 238000004364 calculation method Methods 0.000 description 47
- 238000012545 processing Methods 0.000 description 39
- 238000000034 method Methods 0.000 description 33
- 239000000872 buffer Substances 0.000 description 31
- 238000004458 analytical method Methods 0.000 description 29
- 230000008707 rearrangement Effects 0.000 description 27
- 238000007792 addition Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 16
- 238000012546 transfer Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 230000001343 mnemonic effect Effects 0.000 description 7
- 238000011144 upstream manufacturing Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- ADTDNFFHPRZSOT-PVFUSPOPSA-N ram-330 Chemical compound C([C@H]1N(CC2)C)C3=CC=C(OC)C(OC)=C3[C@]32[C@@]1(O)CC[C@@H](OC(=O)OCC)C3 ADTDNFFHPRZSOT-PVFUSPOPSA-N 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 239000004237 Ponceau 6R Substances 0.000 description 3
- 239000001679 citrus red 2 Substances 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000004177 patent blue V Substances 0.000 description 3
- 235000012736 patent blue V Nutrition 0.000 description 3
- 239000002151 riboflavin Substances 0.000 description 3
- 239000004229 Alkannin Substances 0.000 description 2
- 239000004114 Ammonium polyphosphate Substances 0.000 description 2
- 239000004231 Riboflavin-5-Sodium Phosphate Substances 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 239000004178 amaranth Substances 0.000 description 2
- 235000012735 amaranth Nutrition 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 239000004230 Fast Yellow AB Substances 0.000 description 1
- 239000004277 Ferrous carbonate Substances 0.000 description 1
- 239000004236 Ponceau SX Substances 0.000 description 1
- 239000004234 Yellow 2G Substances 0.000 description 1
- 239000004176 azorubin Substances 0.000 description 1
- 235000012733 azorubine Nutrition 0.000 description 1
- 239000004161 brilliant blue FCF Substances 0.000 description 1
- 235000012745 brilliant blue FCF Nutrition 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004179 indigotine Substances 0.000 description 1
- 235000012738 indigotine Nutrition 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 239000004175 ponceau 4R Substances 0.000 description 1
- 235000012731 ponceau 4R Nutrition 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 239000004172 quinoline yellow Substances 0.000 description 1
- 235000012752 quinoline yellow Nutrition 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000004149 tartrazine Substances 0.000 description 1
- 235000012756 tartrazine Nutrition 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Description
Instruction scheduling in the TOBEY compiler (R.J.Blainey, IBMJ.RES.DEVELOP. VOL.38 NO.5 SEPTEMBER 1994)
I 実施の形態1
本発明に係る1の実施の形態としてのプログラム実行システム400について説明する。プログラム実行システム400は、図1に示すように、コンパイル装置200及び応用装置300から構成される。
1 プロセッサ310
プロセッサ310は、コンパイル装置により静的な並列スケジューリングが施されたオブジェクトコードを実行することを前提としたプロセッサである。
1.1 命令のフォーマット
プロセッサ310が解読し実行する命令の構成について説明する。ここで、前記命令は、オブジェクトコード記憶部140に記憶されているオブジェクトコード(以下、単に、命令と呼ぶ)である。
プロセッサ310が解読し実行する各命令は、1個又は2個の命令構成要素(ここでは「ユニット」と呼ぶ。)により構成され、各ユニットは、21ビットからなる。つまり、1個のユニットから構成される21ビット命令と、2個のユニットから構成される42ビット命令との2種類の命令フォーマットが存在する。図2に示される命令15〜17は、21ビット命令であり、命令18〜19は、42ビット命令である。
フォーマット情報11は、1ビットからなり、命令が21ビット命令及び42ビット命令のいずれの命令であるかを示す。フォーマット情報11が“0”である場合には、命令は、1個のユニットからなる21ビット命令である。フォーマット情報11が“1”である場合には、命令は、そのユニットとそれに後続するユニットとを連結して構成される2個のユニットからなる42ビット命令である。
1.2 アーキテクチャの概要
次に、プロセッサ310のアーキテクチャの概要について説明する。
つまり、プロセッサ310のアーキテクチャでは、固定長のパケット単位で命令を供給しておき、静的に求められた並列実行の境界を示す情報を元に、各サイクルにおいて並列度に応じた適切な数のユニットを実行していく、ということになる。この手法をとることにより、従来の固定長命令のVLIW方式のプロセッサで発生していた無動作命令(nop命令)が全く無くなり、コードサイズを削減することができる。
stream Multiple Data stream )型の処理を行うSIMD命令を実行する。このSIMD命令によってデータ並列を実現し、信号処理性能の向上を図っている。基本命令が32ビット長のデータを扱うのに対して、SIMD命令では64ビット長のデータを扱う。ただし、SIMD命令専用のレジスタファイルは用意されておらず、64ビット幅の汎用レジスタを基本命令とSIMD命令とで共用する。基本命令実行時には、汎用レジスタの下位32ビットしか使用されない。
1.3 プロセッサ310のハードウェア構成
次に、プロセッサ310のハードウェア構成について図4を用いて説明する。ここで、図4は、プロセッサ310のハードウェア構成を示すブロック図である。
1.3.1 命令供給発行部20
命令供給発行部20は、命令フェッチ部21、命令バッファ22及び命令レジスタ23から構成され、図示していない外部メモリ(応用装置300においては、RAM330)から命令群を読み出し、解読部30へ供給する。
(1)命令フェッチ部21
命令フェッチ部21は、32ビットのIA(インストラクションアドレス)バス及び64ビットのID(インストラクションデータ)バスを通じて、前記外部メモリと接続されている。
(2)命令バッファ22
命令バッファ22は、63ビットのバッファを2個備えており、命令フェッチ部21からパケットの供給を受け、パケットの最上位の1ビットを除去した残りの63ビットを蓄積する。命令バッファ22は、63ビットのバッファを2個備えているので、最大6個のユニットを蓄積できる。命令バッファ22はキュー構造をとっており、命令バッファ22に蓄積されたユニットは、蓄積された順に命令レジスタ23の適切なレジスタに出力される。
(3)命令レジスタ23
命令レジスタ23は、図4に示すように、命令レジスタA231、命令レジスタB232、命令レジスタC233及び命令レジスタD234から構成される。命令レジスタA231〜D234は、それぞれ21ビットレジスタであり、命令バッファ22から送られてきたユニットをこれらの命令レジスタの順に保持する。
1.3.2 解読部30
解読部30は、図4に示すように、命令発行制御部31と命令デコーダ32とから構成され、命令レジスタ23に保持されている命令を解読し、その解読結果に応じて、解読結果及び制御信号を実行部40へ出力する。
(1)命令発行制御部31
命令発行制御部31は、命令レジスタ23を構成する2個のレジスタ(命令レジスタA231〜B232)に保持されている各ユニットについて、当該ユニット内の並列実行境界情報とフォーマット情報とを参照することにより、2個のユニットを2個の命令として扱うように制御し、又は2個のユニットを1個の命令として扱うように制御し、また、並列実行の境界を越えたユニットについては、そのユニットの発行を無効化するように制御する。
図7に示すように、命令レジスタA231のユニット(ユニット1)のフォーマット情報が“1”である場合には、ユニット1と命令レジスタB232のユニット(ユニット2)とを連結して42ビット命令とするので、命令発行制御部31は、ユニット2の命令としてのデコードを無効化するために、“1”がセットされた無動作命令フラグを制御信号線K12を介して第2命令デコーダ34へ出力する。このとき、第2命令デコーダ34は、ユニット2をデコードしない。ユニット2は、ユニット1が構成する命令の定数オペランドの一部として出力される。
次に、図9に示すように、命令レジスタA231のユニット1の並列実行境界情報が“1”であり、フォーマット情報が“0”である場合には、このサイクルではユニット1までしか発行されないので、命令発行制御部31は、ユニット2とユニット3との命令としてのデコードを無効化するために、“1”がセットされた無動作命令フラグをそれぞれ制御信号線K12、K13を介して第2命令デコーダ34と第3命令デコーダ35とへ出力する。このとき、第2命令デコーダ34と第3命令デコーダ35とは、ユニット2とユニット3とをデコードしない。ユニット1のみが命令として出力される。
(2)命令デコーダ32
命令デコーダ32は、図4に示すように、第1命令デコーダ33、第2命令デコーダ34及び第3命令デコーダ35から構成される。
1.3.3 実行部40
実行部40は、解読部30での解読結果に基づいて、最大3つの命令を並列実行する回路ユニットであり、実行制御部41、PC(プログラムカウンタ)部42、レジスタファイル43、第1演算部44、第2演算部45、第3演算部46、オペランドアクセス部47及びデータバス48、49からなる。また、データバス48は、L1バス、R1バス、L2バス、R2バス、L3バス、R3バスからなり、データバス49は、D1バス、D2バス、D3バスからからなる。
(1)実行制御部41
実行制御部41は、解読部30の第1命令デコーダ33、第2命令デコーダ34又は第3命令デコーダ35から制御信号を受け取り、受け取った制御信号に基づいて実行部40の各構成要素42〜49を制御する。実行制御部41は、制御回路や配線から構成され、前記制御回路は、タイミング制御、動作許可禁止制御、ステータス管理、割り込み制御等を行う。
(2)PC部42
PC部42は、次に解読実行すべき命令が置かれている外部メモリ上の位置を示すアドレスを保持している。PC部42は、保持している前記アドレスを命令供給発行部20の命令フェッチ部21へ出力する。
(3)第1演算部44、第2演算部45及び第3演算部46
第1演算部44、第2演算部45及び第3演算部46は、それぞれ2個のデータに対して算術論理演算を行うALU及び乗算器と、シフト演算を行うバレルシフタと、入力データの上位32ビットと下位32ビットとを入れ換えるスワッパを内部に有する。
(4)オペランドアクセス部47
オペランドアクセス部47は、レジスタファイル43と前記外部メモリとの間でオペランドの転送を行う回路である。
(5)レジスタファイル43
レジスタファイル43は、図11に示すように、32個の64ビットレジスタR0〜R31と、セレクタ4321、4322と、レジスタ書込制御部431とを含んでおり、セレクタ4321、4322は、それぞれ制御信号線K61、K62を介して、レジスタ書込制御部431と接続されている。図11は、レジスタファイル43及びその周辺の構成要素の構成を示すブロック図である。このブロック図は、レジスタファイル43中の1つのレジスタR0に着目した図になっている。
(6)データバス48及びデータバス49
上記PC部42、レジスタファイル43、第1演算部44、第2演算部45、第3演算部46及びオペランドアクセス部47は、図4に示すように、データバス48(L1バス、R1バス、L2バス、R2バス、L3バス、R3バス)及びデータバス49(D1バス、D2バス、D3バス)を介して接続されている。なお、L1バス及びR1バスはそれぞれ第1演算部44の2つの入力ポートに、L2バス及びR2バスはそれぞれ第2演算部45の2つの入力ポートに、L3バス及びR3バスはそれぞれ第3演算部46の2つの入力ポートに、D1バス、D2バス及びD3バスはそれぞれ第1演算部44、第2演算部45及び第3演算部46の出力ポートに接続されている。
1.4 プロセッサ310の動作
次に、命令群を解読実行する場合を具体的な一例として取り上げ、プロセッサ310の動作について説明する。
(1)命令群の一例
図12は、64ビットデータを扱う処理の一例を示すフローチャートである。
(2)命令群を実行する場合のプロセッサ310の動作
図12に示す処理を実行する場合において、各実行グループごとのプロセッサ310の動作を説明する。
(命令のフェッチ)
命令フェッチ部21は、パケット60を外部メモリからフェッチし、命令バッファ22は、パケット60を蓄積し、次に、命令フェッチ部21は、パケット61を外部メモリからフェッチし、命令バッファ22は、パケット61を蓄積する。命令バッファ22に蓄積されているパケット60内の命令P61が命令レジスタA231へ転送され、命令P62の上位及び下位がそれぞれ命令レジスタB232及び命令レジスタC233へ転送される。命令バッファ22に蓄積されているパケット61内の命令P63が命令レジスタD234へ転送される。
(実行グループG11の実行)
次に、命令発行制御部31が各ユニットの並列実行境界情報とフォーマット情報とを参照して発行を制御する。具体的には、2番目のユニットのフォーマット情報が“1”であるので、2番目のユニットと3番目のユニットを連結して1つの命令として扱う。また、1番目のユニットの並列実行境界情報が“0”であり、2番目のユニットの並列実行境界情報が“1”であるので、1番目から3番目のユニットまでの2個の命令を1サイクルで並列実行すべき命令として発行する。
(実行グループG12の実行)
命令バッファ22に蓄積されているパケット61内の命令P63が命令レジスタA231へ転送され、命令P64が命令レジスタB232へ転送され、命令P65が命令レジスタC233へ転送される。
(実行グループG13の実行)
命令バッファ22に蓄積されていた1個のユニット(命令P65)が命令レジスタA231に転送される。このユニットは、フォーマット情報が“0”であるので21ビット命令であり、並列実行境界情報が“1”であるため、命令発行制御部31は、1つの21ビット命令を発行する。これで、供給されたユニットはすべて発行されたことになる。
以上のようにして、プロセッサ310において図12に示す処理を行うプログラムは3つの実行グループG11〜G13により実行される。ここで、それぞれの実行グループは同時に実行できず、実行グループ毎に順次実行される。
1.5 従来のプロセッサとの比較
次に、図12に示す処理を、従来のプロセッサにより実行する場合について説明し、プロセッサ310の場合と比較する。
2 コンパイル装置200
コンパイル装置200は、プロセッサ310により実行されるコードを生成する。
2.1 用語と対象プロセッサ
ここでは、用いる用語、対象プロセッサ、コンパイル装置200の構成及び動作について説明する。
「オブジェクトコード」とは、再配置可能情報を含んだ対象プロセッサ向け機械語プログラムである。連結編集がされ、未確定アドレスが決定されることにより実行形式コードに変換される。
次に、コンパイル装置200が対象とするプロセッサについて、説明する。
(条件1)1個の実行グループ中の命令の総数は3を越えない。
(条件2)プロセッサの命令デコーダは1個の実行グループ中の3ユニット目までしか、命令としてデコードすることができない(図5参照)。
(条件3)1個の実行グループ中の命令が使用する対象プロセッサ内の資源の総和は、ALUユニット3個、メモリアクセスユニット1個及び分岐ユニット1個の和を越えない。
2.2 コンパイル装置200の構成
コンパイル装置200の構成について、図15を用いて説明する。ここで、図15は、コンパイル装置200の構成を示すブロック図である。
2.2.1 コンパイラ上流部100及びアセンブラコード生成部101
コンパイラ上流部100は、ソースコード記憶部130からファイル形式で保存されている高級言語ソースコードを読み込み、構文解析及び意味解析を行なって内部形式コードを生成する。また、必要に応じて、最終的に生成される実行形式コードのサイズやその実行時間が短くなるように内部形式コードを最適化する。
コンパイラ上流部100及びアセンブラコード生成部101での処理は本発明の主眼ではなく、また、従来のコンパイル装置で行なわれてきた処理と同等であり、公知であるので、詳細についての説明は省略する。
2.2.2 命令スケジューリング部102
命令スケジューリング部102は、アセンブラコード生成部101で生成されたアセンブラコードに対し命令間の依存関係の解析、命令スケジューリング(命令順の並べ替え)及び並列実行境界の付加を行ない、アセンブラコードを対象プロセッサ向けに並列化する。命令スケジューリング部102は、依存関係解析部110、命令再配置部111及び実行境界付加部112から構成される。なお、ここでは簡単のため命令スケジューリング部102は基本ブロック単位で動作することとする。
(1)依存関係解析部110
依存関係解析部110は、アセンブラコード生成部101により生成されたアセンブラコードを基にして、基本ブロックに含まれる命令毎に、基本ブロックに含まれる命令間の依存関係を解析し、各命令に対応するノード(節)と、各依存関係に対応するエッジ(矢印、directed edge)とから構成され命令間の依存関係を示す依存グラフを生成する。なお、依存グラフの生成方法は公知であり、例えば、論文 Instruction scheduling in the TOBEY compiler (R.J.Blainey, IBMJ.RES.DEVELOP. VOL.38 NO.5 SEPTEMBER 1994) に開示されているので、詳細についての説明は省略する。
・データ依存関係
ある資源にデータを格納する命令と、同じ資源からデータを参照する命令との間の依存関係。
・逆依存関係
ある資源からデータを参照する命令と、同じ資源にデータを格納する命令との間の依存関係。
・出力依存関係
ある資源にデータを格納する命令と、同じ資源にデータを格納する命令との間の依存関係。
依存グラフを説明するためのプログラムP80を図16に示す。プログラムP80は、アセンブラコードにより表現されており、命令P81〜P87を含む。
それに対して、コンパイル装置200の依存関係解析部110は、対象プロセッサの命令セットの特徴、すなわち64ビットレジスタの一部分の領域のみにデータを格納する命令、または前記一部分の領域からデータを参照する命令が存在することを踏まえて、レジスタの一部分の領域を1つの資源として扱う。
参照格納資源テーブルT100は、オペランドにレジスタRnとレジスタRmとを含む命令の種類と、前記命令のタイプとから構成される組を複数個含んでいる。ここで、n=0〜31、m=0〜31である。
参照格納資源テーブルT100において、○印は、対応するケースが前記組合せに含まれることを示し、×印は、対応するケースが前記組合せに含まれないことを示す。
(ケース1)
命令は、レジスタRnの上位32ビットからデータを参照する。
(ケース2)
命令は、レジスタRnの下位32ビットからデータを参照する。
(ケース3)
命令は、レジスタRmの上位32ビットからデータを参照する。
(ケース4)
命令は、レジスタRmの下位32ビットからデータを参照する。
(ケース5)
命令は、レジスタRnの上位32ビットにデータを格納する。
(ケース6)
命令は、レジスタRnの下位32ビットにデータを格納する。
(ケース7)
命令は、レジスタRmの上位32ビットにデータを格納する。
(ケース8)
命令は、レジスタRmの下位32ビットにデータを格納する。
(2)命令再配置部111
命令再配置部111は、依存関係解析部110により生成された依存グラフを用いて、基本ブロック内の命令を並べ替え、対象プロセッサ向けの並列化されたアセンブラコードを生成する。命令再配置部111は、命令集合化部120を含む。
命令再配置部111は、依存関係解析部110が生成した依存グラフの全てのノードについて、以下の処理(ステップS2〜S10)を繰り返す(ループ1:ステップS1〜S11)。
命令再配置部111は、配置候補集合から現時点で配置することが最良と思われる候補ノード(以下、単に「最良ノード」と呼ぶ。)を取り出す(ステップS4)。最良ノードの決定方法については後述する。
(3)実行境界付加部112
実行境界付加部112は、命令再配置部111のステップS9で配置が確定した命令群の末尾の命令に並列実行境界を付加し、並列実行境界が付加された命令群を出力する。
2.2.3 オブジェクトコード生成部103
オブジェクトコード生成部103は、命令スケジューリング部102により出力された命令群(アセンブラコード)をオブジェクトコードに変換し、オブジェクトコードをファイルとしてオブジェクトコード記憶部140へ書き込む。
2.3 コンパイル装置200の動作
次に、コンパイル装置200の特徴的な構成要素の動作について、具体的な命令群を用いて説明する。
・命令P91…レジスタR0の上位32ビットとレジスタR1の上位32ビットとを加算して、加算結果をレジスタR1の上位32ビットに格納し、レジスタR0の下位32ビットとレジスタR1の下位32ビットとを加算して、結果をレジスタR1の下位32ビットに格納するSIMD命令。
・命令P92…レジスタR2の上位32ビットとレジスタR1の上位32ビットとを加算して、加算結果をレジスタR1の上位32ビットに格納するSIMD命令。
・命令P93…レジスタR1の下位32ビットをレジスタR3の下位32ビットに転送する基本命令。
・命令P94…レジスタR1の下位32ビットに定数0x3を加算して、加算結果をレジスタR1の下位32ビットに格納する基本命令。
・命令P95…レジスタR3の下位32ビットをレジスタR4の下位32ビットをアドレスとして示されるメモリ上の位置に格納する基本命令。
・命令P96…定数0x1234をレジスタR5の下位32ビットに転送する基本命令。
・命令P97…レジスタR5の下位32ビットをレジスタR6の下位32ビットをアドレスとして示されるメモリ上の位置に格納する基本命令。
命令スケジューリング部102は、プログラムP90を入力として受け取る。次に、依存関係解析部110が起動され、依存関係解析部110は、プログラムP90を基にして、図21に示す依存グラフG120を生成する。
(実行グループ1の決定)
命令再配置部111は、この時点でプレデセッサの無いノードはノードN121及びN126であるので、ノードN121及びN126を候補ノードとする配置候補集合を生成する(ステップS2)。次に、ノードN121を最良ノードとして選ぶ(ステップS4)。続いて、ノードN121が配置可能か否かを判定し、ここではノードN121は配置可能と判定され(ステップS5)、ノードN121を仮配置する(ステップS6)。次に、命令再配置部111は、配置状態判定をし、ここでは更に配置が可能と判断され(ステップS7)、新たな配置候補は生じないので(ステップS8)、制御はループ2の先頭に戻る(ステップS9、S3)。まだ配置候補集合にノードがあるので、命令再配置部111は、ループ2を繰り返す(ステップS3〜S9)。
(実行グループ2の決定)
次に、命令再配置部111は、この時点でプレデセッサの無いノードはノードN122、N123、N127であるので、ノードN122、N123、N127を候補ノードとする配置候補集合を生成する(ステップS2)。次に、ノードN122を最良ノードとして選ぶ(ステップS4)。続いて、ノードN122が配置可能か否かを判定し、ここでは配置可能と判定し(ステップS5)、ノードN122を仮配置する(ステップS6)。次に、命令再配置部111は、配置状態判定をし、ここでは更に配置が可能と判定する(ステップS7)。次に、新たな配置候補は生じないので(ステップS8)、ループ2の先頭に戻る(ステップS9、S3)。命令再配置部111は、まだ配置候補集合にノードがあるのでループ2を繰り返す(ステップS3〜S9)。
(実行グループ3の決定)
この時点でプレデセッサの無いノードはノードN124、N125であるので命令再配置部111は、ノードN124、N125を候補ノードとする配置候補集合を生成する(ステップS2)。以降の処理内容は上記の実行サイクル1の場合と同様であるので省略する。こうして、これら2つのノードが3番目の実行グループの配置命令として配置される。
上記に説明するように、3個の実行グループG91、G92、G93が生成され、実行グループG91は、命令P91と命令P96とを含み、実行グループG92は、命令P92と命令P93と命令P97とを含み、実行グループG93は、命令P94と命令P95とを含む。
2.4 従来のコンパイル装置との比較
次に、図20に示すプログラムP90を、従来のコンパイル装置により処理した場合について、本発明に係るコンパイル装置200の場合と比較する。
プログラムP110は、7個の命令P111〜P117から構成されており、命令供給単位としては3個のパケット160、161、162から構成されている。パケット160は、3個の命令P111〜P113を含み、パケット161は、3個の命令P114〜P116を含み、パケット162は、1個の命令P117を含んでいる。命令P111〜P117は、それぞれ並列実行境界情報と、フォーマット情報と、命令コードとを含んでいる。
3個の実行グループG111、G112、G113、G114が生成され、実行グループG111は、命令P91と命令P96とを含み、実行グループG112は、命令P92と命令P97とを含み、実行グループG113は、命令P93と命令P94とを含み、実行グループG114は、命令P95を含む。
II 実施の形態2
上述の実施の形態1におけるプロセッサ310は、コンパイル装置200により実行形式コード生成時に静的に複数の命令間の依存関係が解析され、解析結果に基づいて命令コードが移動されて生成された命令ストリームを実行する。プロセッサ310は、いわゆるスタティックスケジューリングに基づくプロセッサである。
プロセッサ500が解読し実行する命令のフォーマットは、図2に示す命令フォーマットから、並列実行境界情報を取り除いたものである。命令の供給と発行とは、プロセッサ310と同様になされるが、命令内に並列実行境界情報が無いので、各サイクルにおいてどの命令まで発行可能であるかどうかの検出およびその制御はプロセッサ500が行なう。
1.1 プロセッサ500の構成
プロセッサ500のハードウェア構成については、その大部分はプロセッサ310のハードウェア構成と同一であるが、命令の発行制御の方法のみが異なる。以下において、プロセッサ310との相違点を中心として説明する。
プロセッサ310では、コンパイル装置により並列実行の可否が静的に解析され、その結果として命令のフォーマットは、並列実行境界情報を含むので、命令発行制御部31は、図6に示すように、命令レジスタA231及び命令レジスタB232にそれぞれ含まれる並列実行境界情報とフォーマット情報と(合わせて4ビットの情報)を読み出し、第2命令デコーダ34及び第3命令デコーダ35に対して無動作命令フラグを出力するという、非常に単純な構成になっている。本実施の形態のプロセッサ500では、並列実行の可否の解析を、後述する命令発行制御部171で行なう。
プロセッサ500は、プロセッサ310の命令レジスタ23、命令発行制御部31、命令デコーダ32に代えて、命令レジスタ170、命令発行制御部171、命令デコーダ175(図示していない)を備えている。
命令デコーダ175は、第1命令デコーダ172、第2命令デコーダ173及び第3命令デコーダ174を含んでいる。
具体的には、第2命令デコーダ173へ出力する無動作命令フラグが“1”にセットされていない場合には、第2命令デコーダ173の解読結果を参照し(ここで、解読された命令を第2命令と呼ぶ。)、1番目の命令と同様に資源の参照及び格納に関する情報を得る。
上記の第1命令及び第2命令の2命令の資源の格納および参照に関する情報から、これらの2命令の間にデータ依存の関係があるかどうかを判断し、データ依存の関係があった場合には、第2命令は第1命令と同時に実行することができないので、第2命令を解読する命令デコーダ以降の命令デコーダの無動作命令フラグを“1”にセットし、当該命令デコーダへ出力する。
1.2 プロセッサ500の動作
次に、プロセッサ500の動作について、具体的な例を示して説明する。例としては、図20に示すアセンブラコードによる表現されているプログラムP90を用いる。プログラムP90は、アセンブラ(アセンブル装置)により出力されたアセンブラコードである。
(第1サイクルの動作)
パケット180がメモリから供給され、パケット180内の3つのユニットが順に命令レジスタ170に転送される。具体的には、命令P121(“vaddw”命令を含む)が命令レジスタA1701に、命令P122(“mov”命令を含む)が命令レジスタB1702に、命令P123(“vaddhi”命令を含む)が命令レジスタC1703に転送される。
命令発行制御部171は、まず、各命令レジスタに格納されているフォーマット情報を参照して適切な命令デコーダの無動作命令フラグをセットするが、上記3個の命令レジスタに格納されているユニットのフォーマット情報は共に“0”であるので、フォーマット情報による制御は行なわない。
具体的には、命令発行制御部171は、命令P121に含まれる“vaddw”命令が、レジスタR0及びレジスタR1の上位32ビット及び下位32ビットを共に参照してレジスタR1の上位32ビット及び下位32ビットにデータを格納する命令であると判断し、命令P122に含まれる“mov”命令が、レジスタR5の下位32ビットにデータを格納する命令であると判断し、命令P123に含まれる“vaddhi”命令が、レジスタR2及びレジスタR1の上位32ビットを参照し、レジスタR1の上位32ビットにデータを格納する命令であると判断する。
具体的には、まず、命令発行制御部171は、命令P121に含まれる“vaddw”命令と命令P122に含まれる“mov”命令との間にはデータ依存関係が存在しないので、命令P121と命令P122とは同時実行可能と判断する。次に、命令P121に含まれる“vaddw”命令と命令P123に含まれる“vaddhi”命令との間にはレジスタR1の上位32ビットに関してデータ依存が存在すると判定するので、このサイクルで“vaddhi”命令の発行は不可能であると判断し、第3命令デコーダ174へ出力する無動作命令フラグを“1”にセットし、無動作命令フラグを第3命令デコーダ174へ出力する。
パケット181がメモリから供給され、命令バッファ22に蓄積されている“vaddhi”命令と、パケット181内の各ユニットが順に命令レジスタ170に転送される。具体的には、命令P123に含まれる“vaddhi”命令が命令レジスタA1701に、命令P124に含まれる“mov”命令以降のパケット181内の各ユニットが命令レジスタB1702からD1704へ順に格納されていく。
具体的には、第1サイクルの場合と同様に命令レジスタ内の全てのユニットのフォーマット情報が“0”であるので、命令発行制御部171はフォーマット情報による制御は行なわない。次に、命令発行制御部171は、各命令デコーダの解読結果を参照して各命令が格納または参照する資源に関する情報を得る。そして、第1サイクルの場合と同様に各命令間の依存関係を解析する。
パケット182がメモリから供給され、命令バッファ22に蓄積されている“add”命令(命令P126に含まれる)と、パケット182内のユニットである“st”命令(命令P127に含まれる)が順に命令レジスタ170(命令レジスタA1701及び命令レジスタB1702)に転送される。
ここで、プロセッサ500と従来のプロセッサとにおいて、プログラムP120を実行させた場合について比較する。
第2サイクルにおいて、従来のプロセッサは、命令レジスタAに格納されている命令P123に含まれる“vaddhi”命令と命令レジスタBに格納されている命令P123に含まれる“mov”命令との間の依存関係を判定する際に、命令コード内のレジスタ番号を参照して、レジスタ全体を1つの資源として扱い、各命令が格納または参照する資源に関する情報を得る。具体的には、“vaddhi”命令はレジスタR2とレジスタR1を参照してレジスタR1に格納する命令であると判断し、“mov”命令はレジスタR1を参照してレジスタR3に格納する命令であると判断する。このため、これら2つの命令間にはレジスタR1に関してデータ依存が存在すると判断し、これら2つの命令は、同時実行されない。つまり、このサイクルでは“vaddhi”命令のみが発行されることになる。
III その他の変形例
以上、本発明に係るプロセッサおよびコンパイル装置について、実施の形態に基づいて説明したが、本発明はこれらの実施の形態に限られないことは勿論である。次のように構成してもよい。
(1)上記実施の形態のコンパイル装置では、依存関係解析部110は、参照格納資源テーブルT100を参照して、命令と命令との間におけるレジスタの一部分の領域に関する依存関係を解析するとしているが、この構成に限らない。
(2)上記実施の形態のプロセッサおよびコンパイル装置では、レジスタを上位と下位の2つの部分に分割し、それぞれを1つの資源として扱っていたが、本発明はこの分割方法に限定されるものではない。レジスタを3つ以上の部分に分割してもよい。また、それぞれの資源を分割するビット幅を同一としなくてもよい。これを実現するためには、プロセッサでは、図11に示すレジスタファイル及びその周辺の構成を前記分割に合致するように変更すればよい。また、コンパイル装置の命令スケジューリング部及びスーパースカラプロセッサの命令発行制御部では、図18に示す参照格納資源テーブルT100を前記分割に合致するように変更すればよい。
(3)上記実施の形態のプロセッサでは、同一サイクルにおいて、複数の命令が1個のレジスタの同一の部分の領域にデータを書き込もうとする場合には、レジスタ書込制御部431は、プログラムにおける順番が後方の命令の実行結果の書き込みを優先するように制御しているが、本発明は、この優先順位付けの方法に限定されるものではない。例えば、命令で指定されたオペレーションの種類によって、どちらの命令の実行結果の書き込みを優先するかを選択する構成にしてもよい。具体的には、レジスタ書込制御部431は、命令の種類毎に優先度をあらかじめ記憶しており、前記複数の命令の優先度を読み出し、読み出した優先度の最も高い命令について、前記レジスタの同一の部分へのデータの格納を行うように決定する。
(4)上記実施の形態のプロセッサでは、3個の命令を同時実行するように構成していたが、本発明はこの同時実行命令数に限定されるものではない。例えば、2個の命令を同時発行する構成にしてもよい。さらに多くの命令を同時発行する構成にしてもよい。
(5)上記実施の形態のプロセッサでは、可変長の命令を実行するとしているが、本発明はこの命令フォーマットに限定されるものではない。固定長の命令フォーマットを採用してもよく、この場合においても、同様の効果を奏する。
(6)本発明は、本実施の形態に示し上記に説明する手順を含むコンパイル方法であるとしてもよい。また、前記コンパイル方法をコンピュータにより実現するコンパイルプログラムであるしてもよいし、前記コンパイルプログラムからなるデジタル信号であるとしてもよい。また、本発明は、前記コンパイルプログラムをコンピュータ読み取り可能な記録媒体、例えば、フロッピー(登録商標)ディスク、ハードディスク、CD―ROM、MO、DVDなどの記録媒体、に記録したものとしてもよいし、これらの記録媒体としてもよい。また、本発明は、前記コンパイルプログラムを、インターネットを代表とするネットワークを経由して伝送するものとしてもよい。
(7)本発明は、本実施の形態に示すコンパイル装置により生成された実行形式コードをコンピュータ読み取り可能な記録媒体、例えば、フロッピー(登録商標)ディスク、ハードディスク、CD―ROM、MO、DVD、半導体メモリなどに記録したものとしてもよいし、これらの記録媒体としてもよい。
(8)本発明は、上記に示す複数の実施の形態、これらの複数の変形例、又は複数の実施の形態及びこれらの複数の変形例の一部を組み合わるとしてもよい。
上記に説明するように、本発明は、複数の命令を1のサイクルにおいて実行するプロセッサであって、レジスタと命令読出手段と解読手段とアクセス手段とを含み、前記命令読出手段は、外部のプログラムから少なくとも第1命令と第2命令とを含む複数の命令を読み出し、前記第1命令は、1のレジスタの全部又は部分である第1領域へのアクセス指示を含み、前記第2命令は、前記レジスタの全部又は部分である第2領域へのアクセス指示を含み、ここで、前記第1領域が前記レジスタの全部の領域である場合には、前記第2領域は前記レジスタの部分の領域であり、前記第2領域が前記レジスタの全部の領域である場合には、前記第1領域は前記レジスタの部分の領域であり、また、前記2個のアクセス指示のうち少なくとも1個は、前記レジスタの全部又は部分の領域へのデータの格納の指示であり、前記解読手段は、1のサイクルにおいて、読み出された命令毎に命令を解読し、命令に含まれる少なくともレジスタとレジスタの領域とに関する解読情報を出力し、前記解読情報は、少なくとも前記レジスタと前記第1領域と前記第2領域とに関する情報を含み、前記アクセス手段は、1のサイクルにおいて、前記解読情報に含まれる前記レジスタの前記第1領域へのアクセスと、前記レジスタの前記第2領域へのアクセスとを実行する。
ここで、前記解読情報は、命令に含まれるオペコードを含み、前記プロセッサは、さらに、1のサイクルにおいて、前記解読情報に含まれるオペコードとレジスタとレジスタの領域とに関する情報とに基づいて、命令毎に演算又はメモリアクセスを行い、演算情報を生成する演算手段を含み、前記演算情報は、前記第1命令による第1演算情報と、前記第2命令による第2演算情報とを含み、レジスタへデータを格納する前記アクセス手段は、前記第1演算情報と、前記第2演算情報と、他の命令による演算情報とのうちの1の演算情報を選択し、選択した演算情報の前記第1領域に対応する情報を1のレジスタの前記第1領域へ書き込む第1選択部と、前記第1演算情報と、前記第2演算情報と、他の命令による演算情報とのうちの1の演算情報を選択し、選択した演算情報の前記第2領域に対応する情報を1のレジスタの前記第2領域へ書き込む第2選択部と、1のサイクルにおいて、前記解読情報に含まれる前記レジスタと前記第1領域とに関する情報に基づいて、前記第1選択部に対して、前記第1演算情報を選択し、前記第1演算情報を前記レジスタの前記第1領域へ書き込むように制御し、前記解読情報に含まれる前記レジスタと前記第2領域とに関する情報に基づいて、前記第2選択部に対して、前記第2演算情報を選択し、前記第2演算情報を前記レジスタの前記第2領域へ書き込むように制御するレジスタ書込制御部とを含むように構成してもよい。
ここで、前記アクセス手段は、あらかじめ命令の種類毎に優先度を記憶しており、前記優先度を用いて、第1命令及び第2命令のうち、いずれの命令により、前記レジスタの第3領域へのデータの格納を行うかを決定するように構成してもよい。
ここで、前記解読手段は、命令解読部と命令発行制御部とを含み、前記命令解読部は、1のサイクルにおいて、読み出される命令毎に、命令の解読又は解読の停止の指示により、命令を解読し命令に含まれる少なくともレジスタとレジスタの領域とに関する解読情報を出力し、又は命令の解読を停止し、ここで、前記解読される複数の命令には、少なくとも前記第1命令と前記第2命令とが含まれ、前記解読情報は、少なくとも前記レジスタと前記第1領域と前記第2領域とに関する情報を含み、前記命令発行制御部は、1のサイクルにおいて、読み出される命令毎に、命令を解読する指示を前記命令解読部へ出力することにより、前記命令解読部に対して各命令を解読するように制御し、前記命令解読部による各命令の解読後に、前記レジスタと前記第1領域と前記第2領域とに関する情報を含む解読情報を受け取り、前記第1領域と前記第2領域とが同一領域であるか否かを判断し、同一領域であると判断する場合に、前記第2命令の解読を停止する指示を前記命令解読部へ出力することにより、前記命令解読部に対して前記第2命令の解読を停止するように制御するように構成してもよい。
また、本発明は、高級言語により記述されたソースプログラムからオブジェクトコードを生成するコンパイル装置であって、高級言語により記述されたソースプログラムを記憶している記憶手段と、前記記憶手段からソースプログラムを読み出し、読み出したソースプログラムに翻訳処理を施して、レジスタに関する情報を含む1以上の実行形式命令から構成される実行形式プログラムを生成する実行形式コード生成手段と、前記実行形式プログラム中の1以上の実行形式命令を、各実行形式命令に含まれるレジスタの一部分の領域に関する情報に基づいて、並列実行できる複数の実行形式命令が隣接するように並べ換える命令スケジューリング手段と、並べ換えられた各実行形式命令を基にして、オブジェクトコードを生成するオブジェクトコード生成手段とを含む。
また、高級言語により記述されたソースプログラムを記憶している記憶手段を備えるコンパイル装置により用いられ、前記ソースプログラムからオブジェクトコードを生成するコンパイルプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、前記コンパイルプログラムは、前記記憶手段からソースプログラムを読み出し、読み出したソースプログラムに翻訳処理を施して、レジスタに関する情報を含む1以上の実行形式命令から構成される実行形式プログラムを生成する実行形式コード生成ステップと、前記実行形式プログラム中の1以上の実行形式命令を、各実行形式命令に含まれるレジスタの一部分の領域に関する情報に基づいて、並列実行できる複数の実行形式命令が隣接するように並べ換える命令スケジューリングステップと、並べ換えられた各実行形式命令を基にして、オブジェクトコードを生成するオブジェクトコード生成ステップとを含む。
21 命令フェッチ部
22 命令バッファ
23 命令レジスタ
30 解読部
31 命令発行制御部
32 命令デコーダ
33 第1命令デコーダ
34 第2命令デコーダ
35 第3命令デコーダ
40 実行部
41 実行制御部
42 PC部
43 レジスタファイル
44 第1演算部
45 第2演算部
46 第3演算部
47 オペランドアクセス部
48 データバス
49 データバス
100 コンパイラ上流部
101 アセンブラコード生成部
102 命令スケジューリング部
103 オブジェクトコード生成部
110 依存関係解析部
111 命令再配置部
112 実行境界付加部
120 命令集合化部
130 ソースコード記憶部
140 オブジェクトコード記憶部
170 命令レジスタ
171 命令発行制御部
172 命令デコーダ
173 第1命令デコーダ
174 第2命令デコーダ
175 第3命令デコーダ
200 コンパイル装置
210 コンパイル部
231 命令レジスタA
232 命令レジスタB
233 命令レジスタC
234 命令レジスタD
300 応用装置
310 プロセッサ
400 プログラム実行システム
500 プロセッサ
1701 命令レジスタA
1702 命令レジスタB
1703 命令レジスタC
1704 命令レジスタD
Claims (1)
- 複数の命令を1のサイクルにおいて並列に実行するプロセッサであって、
データを格納するための複数のレジスタと、
第1データの書き換え指示を含む第1命令と第2データの入れ替え指示を表す第2命令とを1のサイクルにおいて実行するための複数の演算器とを備え、
少なくとも1つの前記レジスタにおいて、前記第1データの書き換えと前記第2データの入れ替えとが前記第2データの一部について競合したときは、競合した部分については前記第2命令の作用は無効化されて前記第1命令の実行結果が反映され、競合していない部分については前記第2命令の実行結果が反映される
ことを特徴とするプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008076369A JP4295804B2 (ja) | 1998-11-27 | 2008-03-24 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33718698 | 1998-11-27 | ||
JP2008076369A JP4295804B2 (ja) | 1998-11-27 | 2008-03-24 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33397899A Division JP4125847B2 (ja) | 1998-11-27 | 1999-11-25 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008198223A JP2008198223A (ja) | 2008-08-28 |
JP4295804B2 true JP4295804B2 (ja) | 2009-07-15 |
Family
ID=18306268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008076369A Expired - Lifetime JP4295804B2 (ja) | 1998-11-27 | 2008-03-24 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (3) | US6490673B1 (ja) |
JP (1) | JP4295804B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010090250A1 (ja) | 2009-02-05 | 2010-08-12 | セントラル硝子株式会社 | プラスチックフィルム挿入合わせガラス |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0953898A3 (en) * | 1998-04-28 | 2003-03-26 | Matsushita Electric Industrial Co., Ltd. | A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor |
US6490673B1 (en) * | 1998-11-27 | 2002-12-03 | Matsushita Electric Industrial Co., Ltd | Processor, compiling apparatus, and compile program recorded on a recording medium |
US6378066B1 (en) * | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
JP2001005675A (ja) * | 1999-06-21 | 2001-01-12 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
US7168069B1 (en) * | 2000-07-12 | 2007-01-23 | Stmicroelectronics, Inc. | Dynamic generation of multimedia code for image processing |
JP3564445B2 (ja) * | 2001-09-20 | 2004-09-08 | 松下電器産業株式会社 | プロセッサ、コンパイル装置及びコンパイル方法 |
JP3656587B2 (ja) * | 2001-10-01 | 2005-06-08 | 日本電気株式会社 | 並列演算プロセッサ、その演算制御方法及びプログラム |
US7493611B2 (en) * | 2004-08-30 | 2009-02-17 | International Business Machines Corporation | Pinning internal slack nodes to improve instruction scheduling |
US7546588B2 (en) * | 2004-09-09 | 2009-06-09 | International Business Machines Corporation | Self-optimizable code with code path selection and efficient memory allocation |
US7627735B2 (en) * | 2005-10-21 | 2009-12-01 | Intel Corporation | Implementing vector memory operations |
WO2007085121A1 (en) * | 2006-01-26 | 2007-08-02 | Intel Corporation | Scheduling multithreaded programming instructions based on dependency graph |
EP2016489A4 (en) * | 2006-03-30 | 2009-05-06 | Atostek Oy | METHOD FOR GENERATING PARALLEL PROGRAMS |
US7870544B2 (en) * | 2006-04-05 | 2011-01-11 | International Business Machines Corporation | Insuring maximum code motion of accesses to DMA buffers |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US20070266229A1 (en) * | 2006-05-10 | 2007-11-15 | Erich Plondke | Encoding hardware end loop information onto an instruction |
CN101627365B (zh) | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
US8037466B2 (en) | 2006-12-29 | 2011-10-11 | Intel Corporation | Method and apparatus for merging critical sections |
US8045800B2 (en) | 2007-06-11 | 2011-10-25 | Microsoft Corporation | Active segmentation for groups of images |
JP2009129179A (ja) * | 2007-11-22 | 2009-06-11 | Toshiba Corp | プログラム並列化支援装置およびプログラム並列化支援方法 |
US7526638B1 (en) | 2008-03-16 | 2009-04-28 | International Business Machines Corporation | Hardware alteration of instructions in a microcode routine |
US8612944B2 (en) * | 2008-04-17 | 2013-12-17 | Qualcomm Incorporated | Code evaluation for in-order processing |
CN101324837B (zh) * | 2008-07-21 | 2010-06-23 | 北京大学 | 一种微处理器内部寄存器堆的设计和访问方法 |
KR101553652B1 (ko) * | 2009-02-18 | 2015-09-16 | 삼성전자 주식회사 | 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법 |
WO2012037491A2 (en) | 2010-09-17 | 2012-03-22 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
EP2689327B1 (en) | 2011-03-25 | 2021-07-28 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
CN103635875B (zh) | 2011-03-25 | 2018-02-16 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
TWI666551B (zh) | 2011-05-20 | 2019-07-21 | 美商英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
WO2012162189A1 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
US9823928B2 (en) | 2011-09-30 | 2017-11-21 | Qualcomm Incorporated | FIFO load instruction |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
CN104040491B (zh) | 2011-11-22 | 2018-06-12 | 英特尔公司 | 微处理器加速的代码优化器 |
JP5813484B2 (ja) * | 2011-11-30 | 2015-11-17 | ルネサスエレクトロニクス株式会社 | Vliwプロセッサと命令構造と命令実行方法 |
US9639371B2 (en) | 2013-01-29 | 2017-05-02 | Advanced Micro Devices, Inc. | Solution to divergent branches in a SIMD core using hardware pointers |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US9886279B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
KR101708591B1 (ko) | 2013-03-15 | 2017-02-20 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
KR20150040662A (ko) * | 2013-10-07 | 2015-04-15 | 삼성전자주식회사 | 모듈로 스케줄링 방법, 모듈로 스케줄링 장치, 모듈로 스케줄링에 따라서 동작하는 재구성 가능한 프로세서 및 재구성 가능한 프로세서의 동작 방법 |
JP5854063B2 (ja) * | 2014-02-03 | 2016-02-09 | 富士通株式会社 | 情報処理システム、情報処理方法、情報処理プログラム、及び情報処理装置 |
US11016776B2 (en) * | 2017-12-22 | 2021-05-25 | Alibaba Group Holding Limited | System and method for executing instructions |
US11379406B2 (en) | 2018-08-16 | 2022-07-05 | Tachyum Ltd. | Arithmetic logic unit layout for a processor |
JP7163697B2 (ja) * | 2018-09-28 | 2022-11-01 | 富士通株式会社 | 生成プログラム,情報処理装置及び生成方法 |
JP7225745B2 (ja) * | 2018-12-06 | 2023-02-21 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61239327A (ja) * | 1985-04-16 | 1986-10-24 | Nec Corp | オ−バフロ−検出方式 |
JPH07113886B2 (ja) * | 1987-05-11 | 1995-12-06 | 株式会社日立製作所 | 演算回路 |
EP0454985B1 (en) * | 1990-05-04 | 1996-12-18 | International Business Machines Corporation | Scalable compound instruction set machine architecture |
CA2037708C (en) * | 1990-05-04 | 1998-01-20 | Richard J. Eickemeyer | General purpose compound apparatus for instruction-level parallel processors |
US5448746A (en) * | 1990-05-04 | 1995-09-05 | International Business Machines Corporation | System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution |
JP2786574B2 (ja) * | 1992-05-06 | 1998-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
JPH07114473A (ja) * | 1993-10-19 | 1995-05-02 | Fujitsu Ltd | コンパイラの命令列最適化方法 |
US5590352A (en) * | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
JPH09265397A (ja) * | 1996-03-29 | 1997-10-07 | Hitachi Ltd | Vliw命令用プロセッサ |
JPH09274612A (ja) | 1996-04-05 | 1997-10-21 | Hitachi Ltd | ベクトル処理装置 |
TW374885B (en) * | 1997-06-06 | 1999-11-21 | Matsushita Electric Ind Co Ltd | The arithmetic unit |
US5951677A (en) * | 1998-05-29 | 1999-09-14 | Texas Instruments Incorporated | Efficient hardware implementation of euclidean array processing in reed-solomon decoding |
US6490673B1 (en) * | 1998-11-27 | 2002-12-03 | Matsushita Electric Industrial Co., Ltd | Processor, compiling apparatus, and compile program recorded on a recording medium |
-
1999
- 1999-11-22 US US09/447,083 patent/US6490673B1/en not_active Expired - Lifetime
-
2002
- 2002-11-27 US US10/306,330 patent/US6820223B2/en not_active Expired - Lifetime
-
2004
- 2004-05-17 US US10/846,518 patent/US20040215940A1/en not_active Abandoned
-
2008
- 2008-03-24 JP JP2008076369A patent/JP4295804B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010090250A1 (ja) | 2009-02-05 | 2010-08-12 | セントラル硝子株式会社 | プラスチックフィルム挿入合わせガラス |
Also Published As
Publication number | Publication date |
---|---|
US20040215940A1 (en) | 2004-10-28 |
JP2008198223A (ja) | 2008-08-28 |
US6820223B2 (en) | 2004-11-16 |
US6490673B1 (en) | 2002-12-03 |
US20030079114A1 (en) | 2003-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4295804B2 (ja) | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 | |
US7761692B2 (en) | Processor, compiler and compilation method | |
US5303356A (en) | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag | |
US5504932A (en) | System for executing scalar instructions in parallel based on control bits appended by compounding decoder | |
JP4841861B2 (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
EP1870803A1 (en) | Processor | |
JP2002333978A (ja) | Vliw型プロセッサ | |
US6324639B1 (en) | Instruction converting apparatus using parallel execution code | |
US6799266B1 (en) | Methods and apparatus for reducing the size of code with an exposed pipeline by encoding NOP operations as instruction operands | |
JP4125847B2 (ja) | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 | |
JP4457127B2 (ja) | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 | |
JP4709806B2 (ja) | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 | |
US7401328B2 (en) | Software-implemented grouping techniques for use in a superscalar data processing system | |
JP2004334773A (ja) | 情報処理装置 | |
JP3451921B2 (ja) | プロセッサ | |
JP3553845B2 (ja) | プロセッサ、コンパイラ、コイパイル方法及び記録媒体 | |
EP0545927B1 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
JP2007537528A (ja) | データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム | |
EP1113356B1 (en) | Method and apparatus for reducing the size of code in a processor with an exposed pipeline | |
KR102631214B1 (ko) | 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템 | |
KR20030017982A (ko) | 브이.엘.아이.더블유. 프로세서에서 부분적으로파이프라인으로 연결된 명령을 동기시키는 방법 | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
JP2838939B2 (ja) | 並列命令実行方式 | |
US6704855B1 (en) | Method and apparatus for reducing encoding needs and ports to shared resources in a processor | |
US20050108698A1 (en) | Assembler capable of reducing size of object code, and processor for executing the object code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090204 |
|
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: 20090317 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090410 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120417 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4295804 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130417 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130417 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140417 Year of fee payment: 5 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |