JP2007280419A - プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 - Google Patents
プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 Download PDFInfo
- Publication number
- JP2007280419A JP2007280419A JP2007164850A JP2007164850A JP2007280419A JP 2007280419 A JP2007280419 A JP 2007280419A JP 2007164850 A JP2007164850 A JP 2007164850A JP 2007164850 A JP2007164850 A JP 2007164850A JP 2007280419 A JP2007280419 A JP 2007280419A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- unit
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】レジスタR0〜R31は、それぞれ上位32ビットの領域と下位32ビットの領域に分かれている。レジスタ書込制御部431は、1のサイクルで発行された各命令における書き込むレジスタと書き込み位置(上位又は下位のいずれか)を示す情報をセレクタ4321、4322へ出力する。セレクタ4321、4322は、それぞれ、第1演算部44、第2演算部45又は第3演算部46から出力される各データのうちいずれか1のデータを選択し、選択したデータをいずれか1のレジスタの上位及び下位へそれぞれ書き込む。
【選択図】図11
Description
また、さらなる性能向上のために、個々の命令レベルで並列処理を行う方式が採用されている。ここで、命令レベルでの並列処理とは、1マシンサイクルにおいて複数の命令を同時に実行することであり、ダイナミックスケジューリングによるものとスタティックスケジューリングによるものとがある。ダイナミックスケジューリングによるものの代表例としてスーパースカラ方式がある。この方式では、プロセッサ上で複数の命令が実行されるときに、命令コードが解読され、その後、解読された命令コードにより、プロセッサの命令発行制御部(ハードウェア)が複数の命令間の依存関係を解析して並列実行可能か否かを判定し、プロセッサは、並列実行可能な適切な組み合わせの命令を並列実行する。
スタティックスケジューリングによるものの代表例としてVLIW(VeryLong Instruction Word)方式がある。この方式は、実行形式コード生成時にコンパイラ等により静的に複数の命令間の依存関係を解析し、解析結果に基づいて命令コードの移動を行って実行効率の良い命令ストリームを生成する。一般のVLIW方式では、同時実行可能な複数の命令を一つの固定長の命令供給単位(ここでは「パケット」と呼ぶ)に記述する。
上記の問題点を解決するために、本発明は、複数の命令を1のサイクルにおいて実行するプロセッサにおいて、並列処理を行う場合に、実行サイクル数を削減することができるプロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体を提供することを目的とする。
ここで、前記各命令は、並列実行の可否を示す並列実行情報を含み、前記解読手段は、前記命令に含まれている並列実行情報を基にして、1のサイクルにおいて実行する命令の集合を決定する命令発行制御部と、読み出された前記複数の命令のうち、前記集合に含まれる命令を解読し、他の命令の解読を停止する命令解読部とを含むように構成してもよい。
ここで、前記解読情報は、命令に含まれるオペコードを含み、前記プロセッサは、さらに、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命令に含まれるアクセスの対象となる前記第1領域と、前記第2命令に含まれるアクセスの対象となる前記第2領域とは、交わりがなく、それぞれ部分の領域であり、前記第1命令は、前記レジスタの第1領域へのデータの格納指示を含み、前記第2命令は、前記レジスタの前記第2領域へのデータの格納指示を含み、前記アクセス手段は、1のサイクルにおいて、レジスタの第1領域へのデータの格納と、前記レジスタの第2領域へのデータの格納とを実行するように構成してもよい。
ここで、前記第1命令に含まれるアクセスの対象となる前記第1領域と、前記第2命令に含まれるアクセスの対象となる前記第2領域とは、第3領域において重なりを有し、前記第1命令は、前記レジスタの第1領域へのデータの格納指示を含み、前記第2命令は、前記レジスタの前記第2領域へのデータの格納指示を含み、前記アクセス手段は、1のサイクルにおいて、レジスタの第1領域から第3領域を除く領域へのデータの格納と、レジスタの第3領域へのデータの格納と、前記レジスタの第2領域から第3領域を除く領域へのデータの格納とを実行するように構成してもよい。
ここで、前記アクセス手段は、前記プログラム内において、第1命令及び第2命令のうち、後方に記録されている命令により、前記レジスタの第3領域へのデータの格納を行うように決定するように構成してもよい。ここで、前記アクセス手段は、あらかじめ命令の種類毎に優先度を記憶しており、前記優先度を用いて、第1命令及び第2命令のうち、いずれの命令により、前記レジスタの第3領域へのデータの格納を行うかを決定するように構成してもよい。
I 実施の形態1本発明に係る1の実施の形態としてのプログラム実行システム400について説明する。プログラム実行システム400は、図1に示すように、コンパイル装置200及び応用装置300から構成される。
以下において、プロセッサ310及びコンパイル装置200について説明する。なお、応用装置300及びその構成要素(プロセッサ310を除く)は、本発明の主題ではないので、説明を省略する。
ここでは、プロセッサ310が解読実行する命令の構成について説明し、その後、プロセッサ310の構成及び動作について説明する。
1.1 命令のフォーマットプロセッサ310が解読し実行する命令の構成について説明する。ここで、前記命令は、オブジェクトコード記憶部140に記憶されているオブジェクトコード(以下、単に、命令と呼ぶ)である。
また、命令16及び命令18において、“imm5”及び“imm32”で示されるフィールドは、オペランド部であり、それぞれ5ビットと32ビットの演算用定数オペランドが指定される。命令17及び命令19において、“disp13”及び“disp31”で示されるフィールドは、オペランド部であり、それぞれ13ビットと31ビットの変位(ディスプレースメント)が指定される。
1.2 アーキテクチャの概要次に、プロセッサ310のアーキテクチャの概要について説明する。
プロセッサ310においては、1サイクルで並列実行の境界までのユニットにより示される命令が同時に実行される。ここで、同時に実行される1個以上の命令を「実行グループ」と呼ぶ。つまり、各サイクルにおいて並列実行境界情報が“1”である命令までの命令が並列実行されることになる。実行グループの一例を図3に示す。この図において、符号531、532、533及び534は、それぞれ実行グループを示している。実行グループ531は、ユニットA541及びユニットB542を含み、実行グループ532は、ユニットC543、ユニットD544、ユニットE545及びユニットF546を含み、実行グループ533は、ユニットG547を含み、実行グループ534は、ユニットH548及びユニットI549とを含む。
プロセッサ310へ供給されながら実行されずに残ったユニットは、命令バッファに蓄積され、次のサイクル以降で実行の対象となる。つまり、プロセッサ310のアーキテクチャでは、固定長のパケット単位で命令を供給しておき、静的に求められた並列実行の境界を示す情報を元に、各サイクルにおいて並列度に応じた適切な数のユニットを実行していく、ということになる。この手法をとることにより、従来の固定長命令のVLIW方式のプロセッサで発生していた無動作命令(nop命令)が全く無くなり、コードサイズを削減することができる。
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から送られてきたユニットをこれらの命令レジスタの順に保持する。
図5は、命令レジスタ23及びその周辺の構成要素の構成を示すブロック図である。この図において、符号K12、K13、K21、K22、K31、K32、K33、K41により示される破線は、制御信号線を表す。この図に示すように、命令レジスタA231及び命令レジスタB232は、それぞれ、制御信号線K21及びK22を介して、後述する命令発行制御部31と接続されている。
1.3.2 解読部30解読部30は、図4に示すように、命令発行制御部31と命令デコーダ32とから構成され、命令レジスタ23に保持されている命令を解読し、その解読結果に応じて、解読結果及び制御信号を実行部40へ出力する。
(1)命令発行制御部31命令発行制御部31は、命令レジスタ23を構成する2個のレジスタ(命令レジスタA231〜B232)に保持されている各ユニットについて、当該ユニット内の並列実行境界情報とフォーマット情報とを参照することにより、2個のユニットを2個の命令として扱うように制御し、又は2個のユニットを1個の命令として扱うように制御し、また、並列実行の境界を越えたユニットについては、そのユニットの発行を無効化するように制御する。
OR回路X1は、制御信号線K21を介して、命令レジスタA231に格納されているユニットに含まれる並列実行境界情報とフォーマット情報とを取得し、取得した並列実行境界情報とフォーマット情報とにOR演算を施して無動作命令フラグを生成する。ここで、無動作命令フラグは、1ビットからなり、“0”又は“1”の値をとる。OR回路X1は、生成した無動作命令フラグを第2命令デコーダ34へ出力する。
図5からわかるように、命令デコーダは3個あり、命令レジスタA231、B232及びC233は、それぞれ、命令デコーダ33、命令デコーダ34及び命令デコーダ35に対応しているので、命令としてデコードされる可能性のあるユニットは、命令レジスタA231、命令レジスタB232及び命令レジスタC233に格納されたユニットのみである。そこで、ユニット内の情報を参照して、これらのユニットの中で、42ビット命令の2ユニット目にあたるものや発行されずに残るものに関しては、命令発行制御部31は、そのユニットの命令としてのデコードを無効化する。42ビット命令の2ユニット目にあたるユニットは、直前のユニットが構成する命令の定数オペランドの一部として直接出力される。
また、図10に示すように、命令レジスタA231のユニット1の並列実行境界情報が“0”であり、命令レジスタB232のユニット2の並列実行境界情報が“1”であり、ユニット1とユニット2とのフォーマット情報が共に“0”である場合には、このサイクルではユニット1からユニット2までの命令しか発行されないので、命令発行制御部31は、ユニット3の命令としてのデコードを無効化するために、“1”がセットされた無動作命令フラグを制御信号線K13を介して第3命令デコーダ35へ出力する。このとき、第3命令デコーダ35は、ユニット3をデコードしない。
(2)命令デコーダ32命令デコーダ32は、図4に示すように、第1命令デコーダ33、第2命令デコーダ34及び第3命令デコーダ35から構成される。
第1命令デコーダ33は、図5に示すように、命令レジスタA231から21ビットのユニットを読み出し、読み出したユニットを解読して、前記ユニットが構成する命令の動作に関する制御信号を生成し、生成した制御信号を実行部40へ出力し、命令内に置かれた定数オペランドを実行部40のデータバス48に転送する。ここで、第1命令デコーダ33は、1サイクルに、1個の命令の解読と、制御信号の出力と、定数オペランドの転送とを行う。
命令レジスタA231と命令レジスタB232に格納される各ユニットが42ビット命令を構成する場合において、図2の命令フォーマットに示すように、42ビット命令を構成する2つのユニットのうち、2番目のユニットには定数オペランドの一部しか配置されない。つまり、この2番目のユニットにはオペコードが存在しないため、この2番目のユニットを第2命令デコーダ34に入力する必要がない。そこで、42ビット命令の定数オペランド50は、図5に示すように、第1命令デコーダ33が出力したユニット内の定数オペランド50aと、命令レジスタB232から無条件に直接転送された定数オペランド50bとが連結されて構成されるものということになる。
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部42PC部42は、次に解読実行すべき命令が置かれている外部メモリ上の位置を示すアドレスを保持している。PC部42は、保持している前記アドレスを命令供給発行部20の命令フェッチ部21へ出力する。
(3)第1演算部44、第2演算部45及び第3演算部46第1演算部44、第2演算部45及び第3演算部46は、それぞれ2個のデータに対して算術論理演算を行うALU及び乗算器と、シフト演算を行うバレルシフタと、入力データの上位32ビットと下位32ビットとを入れ換えるスワッパを内部に有する。
第1演算部44は、L1バス及びR1バスを介してレジスタR0〜R31に格納されている値を取得し、R1バスを介して第1命令デコーダ33及び命令レジスタB232から出力される定数オペランドを取得し、これらの取得した値を用いて、実行制御部41による制御の下で演算を実行し、その演算結果を上位32ビットと下位32ビットとに分け、演算結果の上位32ビットと下位32ビットデータをD1バスを介してそれぞれセレクタ4321とセレクタ4322とへ転送する。セレクタ4321とセレクタ4322とについては、後述する。
(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に着目した図になっている。
レジスタR0〜R31に格納された値は、第1命令デコーダ33、第2命令デコーダ34及び第3命令デコーダ35での解読結果に基づいて、データバス48を経由して第1演算部44、第2演算部45、第3演算部46及びオペランドアクセス部47に転送され、第1演算部44、第2演算部45、第3演算部46及びオペランドアクセス部47において演算又はオペランドアクセスが施され、これらの結果がデータバス49を経由してレジスタファイル43に送られ、レジスタR0〜R31に格納される。
(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)命令群の一例図12は、64ビットデータを扱う処理の一例を示すフローチャートである。
本図中、“upper”はレジスタの上位32ビットを表し、“lower”はレジスタの下位32ビットを表す。基本命令では“lower”のみを参照および更新し、SIMD命令のみが“upper”も含めて参照および更新することになる。本図に示されている命令群は、レジスタR2の上位とレジスタR3の上位とを加算して、加算結果をレジスタR3の上位に格納する演算と、レジスタR2の下位とレジスタR3の下位とを加算して、加算結果をレジスタR3の下位に格納する演算とを独立に行い(ステップS100)、レジスタR0の下位に定数“0x12345678”(0xは、以下に続く数文字列が16進数であることを表す)を転送し(ステップS101)、レジスタR0の上位と下位とを入れ換え(ステップS102)、レジスタR1に格納されている値をアドレスとして示される外部メモリ上の位置に格納されている値をレジスタR0の下位に格納し(ステップS103)、最後に、レジスタR3の上位とレジスタR0の上位とを加算して、加算結果をレジスタR0の上位に格納する演算と、レジスタR3の下位とレジスタR0の下位とを加算して、加算結果をレジスタR0の下位に格納する演算とを独立に行う(ステップS104)ことを示している。
(命令のフェッチ)命令フェッチ部21は、パケット60を外部メモリからフェッチし、命令バッファ22は、パケット60を蓄積し、次に、命令フェッチ部21は、パケット61を外部メモリからフェッチし、命令バッファ22は、パケット61を蓄積する。命令バッファ22に蓄積されているパケット60内の命令P61が命令レジスタA231へ転送され、命令P62の上位及び下位がそれぞれ命令レジスタB232及び命令レジスタC233へ転送される。命令バッファ22に蓄積されているパケット61内の命令P63が命令レジスタD234へ転送される。
(実行グループG12の実行)命令バッファ22に蓄積されているパケット61内の命令P63が命令レジスタA231へ転送され、命令P64が命令レジスタB232へ転送され、命令P65が命令レジスタC233へ転送される。
実行部40では、第1演算部44にてレジスタR0の格納値の上位32ビットと下位32ビットとを入れ換えた結果が生成され、またオペランドアクセス部47にて外部メモリ内においてレジスタR1で示されるアドレスにより示される位置から32ビットデータを読み込み、これらのデータが共にレジスタファイル43に転送される。
(実行グループG13の実行)命令バッファ22に蓄積されていた1個のユニット(命令P65)が命令レジスタA231に転送される。このユニットは、フォーマット情報が“0”であるので21ビット命令であり、並列実行境界情報が“1”であるため、命令発行制御部31は、1つの21ビット命令を発行する。これで、供給されたユニットはすべて発行されたことになる。
図14は、図12に示す処理を従来のプロセッサに行わせる場合において、前記処理を実行形式コードにより表現する場合のプログラムP70の内容とプログラムP70の実行の順序とを示す図である。このプログラムP70は、図13に示すプログラムP60と同様に、2個のパケット70、71から構成されている。パケット70には、命令P71〜72が含まれ、パケット71には、命令P73〜P75が含まれる。各命令の処理内容は、図13に示すコードと同様に、各フィールドにおいてニーモニックで表現されている。
2 コンパイル装置200コンパイル装置200は、プロセッサ310により実行されるコードを生成する。
2.1 用語と対象プロセッサここでは、用いる用語、対象プロセッサ、コンパイル装置200の構成及び動作について説明する。
次に、コンパイル装置200が対象とするプロセッサについて、説明する。コンパイル装置200が対象とするプロセッサは、上記で説明したプロセッサ310である。このプロセッサは、コンパイル装置200により付与された並列実行境界情報を参照することにより実行グループを生成し、プロセッサ自体では並列実行可能か否かの判定を行なわない。したがって、並列実行境界と並列実行境界との間、すなわち1個の実行グループ内において、同時実行可能な命令が正しく配置されていることは、コンパイル装置200が保証する。
(条件1)1個の実行グループ中の命令の総数は3を越えない。
(条件2)プロセッサの命令デコーダは1個の実行グループ中の3ユニット目までしか、命令としてデコードすることができない(図5参照)。
(条件3)1個の実行グループ中の命令が使用する対象プロセッサ内の資源の総和は、ALUユニット3個、メモリアクセスユニット1個及び分岐ユニット1個の和を越えない。
また、対象プロセッサは1個の実行グループ中の命令を必ずしも同時に実行するわけではない。命令の供給が追いつかないなどの理由で実行グループを2回以上に分けて実行することもある。このためコンパイル装置200は、1個の実行グループが2回以上に分割されて実行される場合であっても、プログラムの意味動作が正しくなるように、命令群中の命令順を設定する必要がある。
コンパイル装置200は、前述したように、ソースコード記憶部130、コンパイル部210及びオブジェクトコード記憶部140から構成され、ソースコード記憶部130に記憶されている高級言語で書かれたソースコードからオブジェクトコードを生成してオブジェクトコード記憶部140に書き込むプログラム処理装置である。コンパイル部210は、コンパイラ上流部100、アセンブラコード生成部101、命令スケジューリング部102、オブジェクトコード生成部103を含む。
2.2.1 コンパイラ上流部100及びアセンブラコード生成部101コンパイラ上流部100は、ソースコード記憶部130からファイル形式で保存されている高級言語ソースコードを読み込み、構文解析及び意味解析を行なって内部形式コードを生成する。また、必要に応じて、最終的に生成される実行形式コードのサイズやその実行時間が短くなるように内部形式コードを最適化する。
(1)依存関係解析部110依存関係解析部110は、アセンブラコード生成部101により生成されたアセンブラコードを基にして、基本ブロックに含まれる命令毎に、基本ブロックに含まれる命令間の依存関係を解析し、各命令に対応するノード(節)と、各依存関係に対応するエッジ(矢印、directed edge)とから構成され命令間の依存関係を示す依存グラフを生成する。なお、依存グラフの生成方法は公知であり、例えば、論文 Instruction scheduling in the TOBEY compiler (R.J.Blainey, IBMJ.RES.DEVELOP. VOL.38 NO.5 SEPTEMBER 1994) に開示されているので、詳細についての説明は省略する。
命令間の依存関係には以下の3種類がある。
・データ依存関係ある資源にデータを格納する命令と、同じ資源からデータを参照する命令との間の依存関係。
・逆依存関係ある資源からデータを参照する命令と、同じ資源にデータを格納する命令との間の依存関係。
・出力依存関係ある資源にデータを格納する命令と、同じ資源にデータを格納する命令との間の依存関係。
いずれの依存関係にある命令も、元の命令順を変更するとプログラムの意味が異なってしまう為、命令を並べ替えるときにおいても依存関係は守る必要がある。依存グラフを説明するためのプログラムP80を図16に示す。プログラムP80は、アセンブラコードにより表現されており、命令P81〜P87を含む。
命令のタイプとは、以下に示す8個のケースの組合せである。参照格納資源テーブルT100において、○印は、対応するケースが前記組合せに含まれることを示し、×印は、対応するケースが前記組合せに含まれないことを示す。例えば、参照格納資源テーブルT100において、命令の種類「mov Rn、Rm」に対応するタイプは、ケース2及びケース8に○印が付されており、他のケースには、×印が付されてるので、前記命令は、「レジスタRnの下位32ビットからデータを参照し、レジスタRmの下位32ビットにデータを格納する」タイプの命令であることを示している。
(ケース1)命令は、レジスタRnの上位32ビットからデータを参照する。
(ケース2)命令は、レジスタRnの下位32ビットからデータを参照する。
(ケース3)命令は、レジスタRmの上位32ビットからデータを参照する。
(ケース4)命令は、レジスタRmの下位32ビットからデータを参照する。
(ケース5)命令は、レジスタRnの上位32ビットにデータを格納する。
(ケース6)命令は、レジスタRnの下位32ビットにデータを格納する。
(ケース7)命令は、レジスタRmの上位32ビットにデータを格納する。
(ケース8)命令は、レジスタRmの下位32ビットにデータを格納する。
依存関係解析部110は、参照格納資源テーブルT100を参照することにより、命令がどのタイプであるかを知り、これにより、命令がどの資源からデータを参照しまた、どの資源にデータを格納するかの情報を得て、この情報を基にしてノード(節)間のエッジ(矢印)からなる依存関係を生成する。このように、レジスタの上位32ビットと下位32ビットとを独立に管理することにより、レジスタ名のみを参照する方法に比べて、より厳密な依存関係を求めることができる。これによって、依存グラフ中の不要なエッジ(矢印)を削減し、各命令間の並列実行の可能性をより高めることができる。
一方、依存関係解析部110は、これらの2つの命令間にはデータ依存関係は存在しないと判断し、これらの2つの命令を同時実行することが可能となる。なお、具体例については、コンパイル装置200の具体的動作と共に、後で述べる。
(2)命令再配置部111命令再配置部111は、依存関係解析部110により生成された依存グラフを用いて、基本ブロック内の命令を並べ替え、対象プロセッサ向けの並列化されたアセンブラコードを生成する。命令再配置部111は、命令集合化部120を含む。
まず、命令再配置部111は、現時点で配置候補となり得るノードを候補ノードとして依存グラフより抽出し、候補ノードから構成される配置候補集合を生成する。ここで配置候補となり得るノードとは、「プレデセッサが全て配置完了済み」であるノードである(ステップS2)。次に、命令再配置部111は、配置候補集合の全ての候補ノードについて、以下の処理(ステップS4〜S8)を繰り返す(ループ2:ステップS3〜S9)。
(3)実行境界付加部112実行境界付加部112は、命令再配置部111のステップS9で配置が確定した命令群の末尾の命令に並列実行境界を付加し、並列実行境界が付加された命令群を出力する。
2.3 コンパイル装置200の動作次に、コンパイル装置200の特徴的な構成要素の動作について、具体的な命令群を用いて説明する。
コンパイル装置200の動作を説明するために一例として用いるプログラムP90を図20に示す。プログラムP90は、ソースコードからコンパイラ上流部100及びアセンブラコード生成部101を経て生成されたアセンブラコードであり、命令P91〜P97を含む。命令P91〜P97の意味は以下の通りである。
・命令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の動作について説明する。命令スケジューリング部102は、プログラムP90を入力として受け取る。次に、依存関係解析部110が起動され、依存関係解析部110は、プログラムP90を基にして、図21に示す依存グラフG120を生成する。この際、前述のように、依存関係解析部110は、コンパイラ内部に保有している参照格納資源テーブルT100を参照することにより、64ビットレジスタの上位32ビットと下位32ビットとを独立の資源としてとらえて依存関係を検出する。
例えば、命令P92と命令P93との依存関係の解析においては、依存関係解析部110は、命令P92をレジスタR1の上位32ビットにデータを格納する命令として認識し、命令P93をレジスタR1の下位32ビットからデータを参照する命令として認識する。このように、命令P92と命令P93との間において、同一の資源に関する依存関係が存在しないので、依存関係解析部110は、これら2命令の間には依存関係は無いものとみなし、依存グラフG120において、この2命令間のエッジ(矢印)を生成しない。
ノードN121とノードN122とは、ノードN121からノードN122へ向かうエッジE121を介して接続されている。ノードN121とノードN123とは、ノードN121からノードN123へ向かうエッジE122を介して接続されている。ノードN122とノードN124とは、ノードN122からノードN124へ向かうエッジE124を介して接続されている。ノードN123とノードN124とは、ノードN123からノードN124へ向かうエッジE123を介して接続されている。ノードN123とノードN125とは、ノードN123からノードN125へ向かうエッジE125を介して接続されている。ノードN126とノードN127とは、ノードN126からノードN127へ向かうエッジE126を介して接続されている。
(実行グループ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番目の実行グループの配置命令として配置される。
従来のコンパイル装置も、依存関係を解析するブロックにて依存グラフを生成する。しかし、本発明の場合と異なり、アセンブラコードに記述されたレジスタ名を参照し、レジスタ全体を一つの資源として扱って、各命令においてデータが格納される資源又はデータが参照される資源に関する情報を求め、その情報を基にして命令間の依存関係を検出する。
ノードN131とノードN132とは、ノードN131からノードN132へ向かうエッジE131を介して接続されている。ノードN132とノードN133とは、ノードN132からノードN133へ向かうエッジE132を介して接続されている。ノードN132とノードN134とは、ノードN132からノードN134へ向かうエッジE133を介して接続されている。ノードN133とノードN134とは、ノードN133からノードN134へ向かうエッジE134を介して接続されている。ノードN133とノードN135とは、ノードN133からノードN135へ向かうエッジE135を介して接続されている。ノードN136とノードN137とは、ノードN136からノードN137へ向かうエッジE136を介して接続されている。
プログラムP110は、7個の命令P111〜P117から構成されており、命令供給単位としては3個のパケット160、161、162から構成されている。パケット160は、3個の命令P111〜P113を含み、パケット161は、3個の命令P114〜P116を含み、パケット162は、1個の命令P117を含んでいる。命令P111〜P117は、それぞれ並列実行境界情報と、フォーマット情報と、命令コードとを含んでいる。
以下においては、並列実行の可否をハードウェアで動的に決定するダイナミックスケジューリングに基づくプロセッサ500についての実施の形態について説明する。なお、プロセッサ500は、図示されていない。プロセッサ500は、最大3命令を並列実行するスーパースカラ方式のプロセッサである。
相違点は、図4に示す命令レジスタ23、命令デコーダ32および命令発行制御部31周辺の構成である。プロセッサ310では、コンパイル装置により並列実行の可否が静的に解析され、その結果として命令のフォーマットは、並列実行境界情報を含むので、命令発行制御部31は、図6に示すように、命令レジスタA231及び命令レジスタB232にそれぞれ含まれる並列実行境界情報とフォーマット情報と(合わせて4ビットの情報)を読み出し、第2命令デコーダ34及び第3命令デコーダ35に対して無動作命令フラグを出力するという、非常に単純な構成になっている。本実施の形態のプロセッサ500では、並列実行の可否の解析を、後述する命令発行制御部171で行なう。
命令レジスタ170は、命令レジスタA1701、命令レジスタB1702、命令レジスタC1703及び命令レジスタD1704を含んでいる。命令デコーダ175は、第1命令デコーダ172、第2命令デコーダ173及び第3命令デコーダ174を含んでいる。命令発行制御部171は、命令レジスタ170に含まれる各命令レジスタに格納されているユニットのフォーマット情報を読み出し、第1命令デコーダ172、第2命令デコーダ173及び第3命令デコーダ174から各解読結果を受け取る。次に、命令レジスタA1701、命令レジスタB1702、命令レジスタC1703及び命令レジスタD1704に格納されている各命令の並列実行の可否を判断し、その判断結果に基づいて、第2命令デコーダ173及び第3命令デコーダ174に対して、“1”にセットされた無動作命令フラグを出力する。つまり、その命令デコーダの解読結果を無効化する。その後、各命令デコーダから実行制御部41へ各命令の制御信号が送られる。
ここで、資源の参照及び格納に関する情報は、実施の形態1に示すコンパイル装置200の参照格納資源テーブルT100から得られる情報と同等である。上記の第1命令及び第2命令の2命令の資源の格納および参照に関する情報から、これらの2命令の間にデータ依存の関係があるかどうかを判断し、データ依存の関係があった場合には、第2命令は第1命令と同時に実行することができないので、第2命令を解読する命令デコーダ以降の命令デコーダの無動作命令フラグを“1”にセットし、当該命令デコーダへ出力する。
(第1サイクルの動作)パケット180がメモリから供給され、パケット180内の3つのユニットが順に命令レジスタ170に転送される。具体的には、命令P121(“vaddw”命令を含む)が命令レジスタA1701に、命令P122(“mov”命令を含む)が命令レジスタB1702に、命令P123(“vaddhi”命令を含む)が命令レジスタC1703に転送される。
(第2サイクルの動作)パケット181がメモリから供給され、命令バッファ22に蓄積されている“vaddhi”命令と、パケット181内の各ユニットが順に命令レジスタ170に転送される。具体的には、命令P123に含まれる“vaddhi”命令が命令レジスタA1701に、命令P124に含まれる“mov”命令以降のパケット181内の各ユニットが命令レジスタB1702からD1704へ順に格納されていく。
(第3サイクルの動作)パケット182がメモリから供給され、命令バッファ22に蓄積されている“add”命令(命令P126に含まれる)と、パケット182内のユニットである“st”命令(命令P127に含まれる)が順に命令レジスタ170(命令レジスタA1701及び命令レジスタB1702)に転送される。
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命令及び第2命令のうち、後方に記録されている命令により、前記レジスタの第3領域へのデータの格納を行うように決定するように構成してもよい。この構成によると、後方に記録されている有効な命令のみによりデータを格納することができる。
ここで、前記解読手段は、命令解読部と命令発行制御部とを含み、前記命令解読部は、1のサイクルにおいて、読み出される命令毎に、命令の解読又は解読の停止の指示により、命令を解読し命令に含まれる少なくともレジスタとレジスタの領域とに関する解読情報を出力し、又は命令の解読を停止し、ここで、前記解読される複数の命令には、少なくとも前記第1命令と前記第2命令とが含まれ、前記解読情報は、少なくとも前記レジスタと前記第1領域と前記第2領域とに関する情報を含み、前記命令発行制御部は、1のサイクルにおいて、読み出される命令毎に、命令を解読する指示を前記命令解読部へ出力することにより、前記命令解読部に対して各命令を解読するように制御し、前記命令解読部による各命令の解読後に、前記レジスタと前記第1領域と前記第2領域とに関する情報を含む解読情報を受け取り、前記第1領域と前記第2領域とが同一領域であるか否かを判断し、同一領域であると判断する場合に、前記第2命令の解読を停止する指示を前記命令解読部へ出力することにより、前記命令解読部に対して前記第2命令の解読を停止するように制御するように構成してもよい。
ここで、前記命令スケジューリング手段は、前記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 (6)
- 高級言語により記述されたソースプログラムからオブジェクトコードを生成するコンパイル装置であって、
高級言語により記述されたソースプログラムを記憶している記憶手段と、
前記記憶手段からソースプログラムを読み出し、読み出したソースプログラムに翻訳処理を施して、レジスタに関する情報を含む1以上の実行形式命令から構
成される実行形式プログラムを生成する実行形式コード生成手段と、
前記実行形式プログラム中の1以上の実行形式命令を、各実行形式命令に含まれるレジスタの一部分の領域に関する情報に基づいて、並列実行できる複数の実行形式命令が隣接するように並べ換える命令スケジューリング手段と、
並べ換えられた各実行形式命令を基にして、オブジェクトコードを生成するオブジェクトコード生成手段と
を含むことを特徴とするコンパイル装置。 - 前記命令スケジューリング手段は、
前記1以上の実行形式命令について、各実行形式命令が並べられている順序と、各実行形式命令に含まれるレジスタの一部分の領域に関する情報とに基づいて、各実行形式命令間の依存関係を示す依存関係情報を生成する依存関係解析部と、
生成された前記依存関係情報に基づいて、並列実行可能な命令の集合を決定し、また、前記実行形式命令を再配置する命令再配置部と、
前記決定された集合毎に、並列実行の可否を示す並列実行情報を付加する実行境界付加部とを含む
ことを特徴とする請求項1に記載のコンパイル装置。 - 前記依存関係解析部は、
実行形式命令の種類と、前記実行形式命令がデータを参照し、又はデータを格納するレジスタの一部分の領域との組を複数個含む参照格納資源表と、
各実行形式命令に含まれるレジスタの一部分の領域に関する情報を参照格納資源表から取得する資源取得部と、
各実行形式命令が並べられている順序と、前記取得したレジスタの一部分の領域に関する情報とに基づいて、各実行形式命令間の依存関係を示す依存関係情報を生成する依存関係生成部とを含む
ことを特徴とする請求項2に記載のコンパイル装置。 - 高級言語により記述されたソースプログラムを記憶している記憶手段を備えるコンパイル装置により用いられ、前記ソースプログラムからオブジェクトコードを生成するコンパイルプログラムを記録しているコンピュータ
読み取り可能な記録媒体であって、
前記コンパイルプログラムは、
前記記憶手段からソースプログラムを読み出し、読み出したソースプログラムに翻訳処理を施して、レジスタに関する情報を含む1以上の実行形式命令から構成される実行形式プログラムを生成する実行形式コード生成ステップと、
前記実行形式プログラム中の1以上の実行形式命令を、各実行形式命令に含まれるレジスタの一部分の領域に関する情報に基づいて、並列実行できる複数の実行形式命令が隣接するように並べ換える命令スケジューリングステップと、
並べ換えられた各実行形式命令を基にして、オブジェクトコードを生成するオブジェクトコード生成ステップとを含む
ことを特徴とする記録媒体。 - 前記命令スケジューリングステップは、
前記1以上の実行形式命令について、各実行形式命令が並べられている順序と、各実行形式命令に含まれるレジスタの一部分の領域に関する情報とに基づいて、各実行形式命令間の依存関係を示す依存関係情報を生成する依存関係解析サブステップと、
生成された前記依存関係情報に基づいて、並列実行可能な命令の集合を決定し、また、前記実行形式命令を再配置する命令再配置サブステップと、
前記決定された集合毎に、並列実行の可否を示す並列実行情報を付加する実行境界付加サブステップと
を含むことを特徴とする請求項4に記載の記録媒体。 - 前記コンパイル装置は、
実行形式命令の種類と、前記実行形式命令がデータを参照し、又はデータを格納するレジスタの一部分の領域との組を複数個含む参照格納資源表を有し、
前記依存関係解析サブステップは、
各実行形式命令に含まれるレジスタの一部分の領域に関する情報を参照格納資源表から取得する資源取得サブステップと、
各実行形式命令が並べられている順序と、前記取得したレジスタの一部分の領域に関する情報とに基づいて、各実行形式命令間の依存関係を示す依存関係情報
を生成する依存関係生成サブステップと
を含むことを特徴とする請求項5に記載の記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007164850A JP4457127B2 (ja) | 1998-11-27 | 2007-06-22 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33718698 | 1998-11-27 | ||
JP2007164850A JP4457127B2 (ja) | 1998-11-27 | 2007-06-22 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
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 |
---|---|
JP2007280419A true JP2007280419A (ja) | 2007-10-25 |
JP4457127B2 JP4457127B2 (ja) | 2010-04-28 |
Family
ID=38681724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007164850A Expired - Lifetime JP4457127B2 (ja) | 1998-11-27 | 2007-06-22 | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4457127B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014170530A (ja) * | 2013-02-28 | 2014-09-18 | Tata Consultancy Services Ltd | 静的解析中に発生した警告をグループ化するシステムおよび方法 |
-
2007
- 2007-06-22 JP JP2007164850A patent/JP4457127B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014170530A (ja) * | 2013-02-28 | 2014-09-18 | Tata Consultancy Services Ltd | 静的解析中に発生した警告をグループ化するシステムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4457127B2 (ja) | 2010-04-28 |
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 | |
JP3547139B2 (ja) | プロセッサ | |
JP4841861B2 (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
US20080141229A1 (en) | Processor, program conversion apparatus, program conversion method, and computer program | |
JP2002333978A (ja) | Vliw型プロセッサ | |
WO2006112045A1 (ja) | 演算処理装置 | |
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) | プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 | |
JP2004334773A (ja) | 情報処理装置 | |
KR101154077B1 (ko) | 시간 고정형 프로세서 및 그의 제어 방법 | |
EP0545927B1 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
JP3553845B2 (ja) | プロセッサ、コンパイラ、コイパイル方法及び記録媒体 | |
JP2007537528A (ja) | データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム | |
JPH11282674A (ja) | プロセッサ | |
EP1113356B1 (en) | Method and apparatus for reducing the size of code in a processor with an exposed pipeline | |
KR102631214B1 (ko) | 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템 | |
KR20030017982A (ko) | 브이.엘.아이.더블유. 프로세서에서 부분적으로파이프라인으로 연결된 명령을 동기시키는 방법 | |
US6704855B1 (en) | Method and apparatus for reducing encoding needs and ports to shared resources in a processor | |
JP2000163266A (ja) | 命令実行方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090728 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090917 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091104 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091215 |
|
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: 20100112 |
|
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: 20100208 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130212 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4457127 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: 20130212 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140212 Year of fee payment: 4 |
|
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 |