JP6422381B2 - プロセッサ、プログラムコード変換装置及びソフトウェア - Google Patents
プロセッサ、プログラムコード変換装置及びソフトウェア Download PDFInfo
- Publication number
- JP6422381B2 JP6422381B2 JP2015054448A JP2015054448A JP6422381B2 JP 6422381 B2 JP6422381 B2 JP 6422381B2 JP 2015054448 A JP2015054448 A JP 2015054448A JP 2015054448 A JP2015054448 A JP 2015054448A JP 6422381 B2 JP6422381 B2 JP 6422381B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- forwarding
- register
- processor
- processing 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.)
- Active
Links
- 238000006243 chemical reaction Methods 0.000 title claims description 34
- 230000006870 function Effects 0.000 claims description 40
- 238000000034 method Methods 0.000 claims description 28
- 239000004065 semiconductor Substances 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 8
- 230000003111 delayed effect Effects 0.000 claims description 6
- 239000000758 substrate Substances 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 29
- 238000005457 optimization Methods 0.000 description 20
- 230000000694 effects Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 101000682954 Homo sapiens Ribosome biogenesis regulatory protein homolog Proteins 0.000 description 2
- 102100023902 Ribosome biogenesis regulatory protein homolog Human genes 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- MWRWFPQBGSZWNV-UHFFFAOYSA-N Dinitrosopentamethylenetetramine Chemical compound C1N2CN(N=O)CN1CN(N=O)C2 MWRWFPQBGSZWNV-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000005669 field effect Effects 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
本願において開示される代表的な実施の形態は、命令ごとにフォワーディングを禁止するか許可するかが指定可能とされるプロセッサである。フォワーディングが禁止された命令を実行するときにはレジスタファイル(REGF)を参照し、フォワーディングが許可された命令を実行するときには、前記レジスタファイルにデータを書き込むパイプラインの途中のステージを参照する(フォワーディングする)。
項1において、前記プロセッサによって実行可能な命令セットが、フォワーディングを禁止するか許可するかを指定するフィールド(f)を命令コードに有する命令を含む。
項2において、前記プロセッサは、前記命令セットに含まれる複数の命令の命令コードから成る命令語(ICODE)が並列に発行され、前記複数の命令が並列に実行され、前記命令語はフォワーディングを禁止するか許可するかを指定するフィールドを個々の命令コードに有する前記命令を1個以上含む。
項1において、前記プロセッサによって実行可能な命令セットが、フォワーディングを禁止するか前記パイプラインのどのステージからのフォワーディングを許可するかを指定するフィールド(fsrc)を命令コードに有する命令を含む。
項4において、前記プロセッサは、前記命令セットに含まれる複数の命令の命令コードから成る命令語(ICODE)が並列に発行され、前記複数の命令が並列に実行され、前記命令語はフォワーディングを禁止するか前記パイプラインのどのステージからのフォワーディングを許可するかを指定するフィールドを個々の命令コードに有する前記命令を1個以上含む。
本願において開示される代表的な実施の形態は、命令セットに含まれプログラムに従って順次発行される命令をパイプライン方式で実行するプロセッサであって、以下のように構成される。
項6において、前記プロセッサは、前記処理実行回路をN個(Nは任意の自然数)(EXEC1〜3)備え、前記命令セットに含まれる前記N個の命令を1語に含む命令語を対応する処理実行回路により並列に実行可能とされる。
項7において、前記プロセッサ制御回路は、前記複数のパイプラインレジスタに、前記N個の処理実行回路のそれぞれに対応する前記デスティネーションオペランドコードをパイプラインステージごとに保持する(DST−DE1〜3,DST−RR1〜3,DST−EX1〜3)。
項6において、前記一部又は全てのレジスタ参照命令に代えて又は加えて、一部又は全ての前記レジスタ参照命令は、フォワーディングを禁止するか前記パイプラインのどのステージからのフォワーディングを許可するかを表すフォワーディング元を指定可能なフィールド(fsrc)を命令コードに含む。
項9において、前記プロセッサは、前記処理実行回路をN個(Nは任意の自然数)(EXEC1〜3)備え、前記命令セットに含まれる前記N個の命令を1語に含む命令語を対応する処理実行回路により並列に実行可能とされる。
項10において、前記プロセッサ制御回路は、前記複数のパイプラインレジスタに、前記N個の処理実行回路のそれぞれに対応する前記デスティネーションオペランドコードをパイプラインステージごとに保持する(DST−DE1〜3,DST−RR1〜3,DST−EX1〜3)。
項6から項11のうちのいずれか1項において、前記プロセッサは単一の半導体基板上に形成される。
本願において開示される代表的な実施の形態は、命令セットに含まれる複数の命令によって構成され、プロセッサによって実行されるプログラムのプログラムコードを変換するプログラムコード変換装置であって、以下のように構成される。
前記探索で発見した前記レジスタ移動命令のデスティネーションオペランド(RDM)で指定されるレジスタを、ソースオペランドで指定する後続のレジスタ参照命令(X)について、前記レジスタ格納命令から前記遅延量(DA)以内の実行ステップで実行される場合には、フォワーディング無効フラグによりフォワーディングを禁止する指定を行ったレジスタ参照命令に置き換える(S7)。
項13において、前記プログラムコード変換装置は、前記探索で発見した前記レジスタ移動命令のデスティネーションオペランドで指定されるレジスタを、ソースオペランドで指定する後続のレジスタ参照命令(X)について、以下の処理を実行する。前記レジスタ格納命令から前記遅延量(DA)より遅れた実行ステップで実行される場合には、前記遅延量以内に実行される実行ステップに移動できるか否かを判断し、移動できる場合には移動した上で、フォワーディング無効フラグによりフォワーディングを許可する指定を行ったレジスタ参照命令に置き換える(S7)。
項14において、前記プログラムコード変換装置は、前記探索で発見した前記レジスタ移動命令のデスティネーションオペランドで指定されるレジスタを、ソースオペランドで指定する後続の全てのレジスタ参照命令について、前記レジスタ格納命令から前記遅延量より遅れた実行ステップで実行される場合には、前記遅延量以内に実行される実行ステップに移動できるか否かを判断する。その結果、移動できる場合には移動した上で、フォワーディング無効フラグによりフォワーディングを禁止する指定を行ったレジスタ参照命令に置き換える(S7)。さらに前記全てのレジスタ参照命令が、前記遅延量以内に実行される実行ステップに移動されたときには、前記探索で発見した前記レジスタ移動命令を前記プログラムから削除する(S8)。
項13から項15のうちのいずれか1項において、前記プロセッサは、前記処理実行回路をN個(Nは任意の自然数)(EXEC1〜3)備え、前記命令セットに含まれる前記N個の命令を1語に含む命令語を対応する処理実行回路により並列に実行可能である。
項13から項16のうちのいずれか1項において、前記プログラムコード変換装置は、高級言語で記述されたプログラムから、前記命令セットに含まれる複数の命令によって構成される前記プログラムコードを生成する。
本願において開示される一つの実施の形態は、コンピュータによって実行されることにより、項13から項17のうちのいずれか1項に記載されるプログラムコード変換装置として機能する、ソフトウェアである。
実施の形態について更に詳述する。
図1は、フォワーディングのオン/オフが命令ごとに指定可能なプロセッサの基本的な構成例を示すブロック図である。本実施形態1に係るプロセッサ1は、フェッチ回路IRと、レジスタファイルREGFと、フォワーディングセレクタFSELと、処理実行回路EXECと、フェッチされた命令に基づいて処理実行回路EXECを制御するプロセッサ制御回路CTRLとを備える。処理実行回路EXECは、例えば、算術演算回路ALU、乗算回路MUL、バレルシフタSFTなどの演算回路、または、ロード/ストア回路などのメモリアクセス回路、或いは、ブランチ制御回路等である。多種類の処理を実行可能な多機能の回路を処理実行回路EXECとして実装し、命令コードによって指定されるいずれかの処理が実行されるように構成しても良い。プロセッサ1は、図示が省略された、主にインストラクションメモリとして機能する不揮発性メモリ、主にデータメモリやワークメモリとして機能するRAM(Random Access Memory)、割り込み制御回路、ダイレクトメモリコントローラ、周辺モジュール、それらを互いに結合するバスなどを含んで構成されてもよい。これらの回路は、特に制限されないが例えば、公知のCMOS(Complementary Metal-Oxide-Semiconductor field effect transistor)LSIの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。プロセッサ1が単一の半導体チップに集積されることにより、実装面積、消費電力、コストなどが低減される。また、図示されるプロセッサの中核部分を複数組備えても良い。図1に示されるブロック図では、ブロック間の配線には多数の信号配線からなるバス配線が含まれるが、表記上はバス記述が省略されている。この点は本願明細書が参照する他の図面に記載されるブロック図についても同様である。
ここまでに説明した実施の形態をVLIWプロセッサに適用すると、より好適である。
VLIWプロセッサは、ソフトウェアパイプライン化に好適である。図5には紙面の制限から3スロットのVLIWプロセッサが例示され、以下に示す実施の形態では、理解を助けるために単純な例が示されるが、VLIWプロセッサに実装されるスロット数は任意であり、スロット数は多い程多数の命令ステップを含む繰り返しループをより効率的にソフトウェアパイプライン化することができる。
実施形態1では、命令ごとにフォワーディングを禁止するか許可するかが指定可能とされるプロセッサについて説明したが、許可する場合にフォワーディング元を指定しない単純な許可に加えて、フォワーディング元の指定を伴った許可をすることができるように構成しても良い。即ち、プロセッサによって実行される命令セットに、フォワーディングを禁止するか許可するかを指定するフィールド(f)を命令コードに有する命令に代えて、又はこれに加えて、フォワーディングを禁止するかパイプラインのどのステージからのフォワーディングを許可するかを指定するフィールド(fsrc)を命令コードに有する命令が含まれるように構成するとよい。これにより、単純にフォワーディングを禁止するか許可するかだけではなく、許可する場合にどのパイプラインステージをフォワーディング元とするかを指定することができ、自由度を高めることができる。以下に、詳しく説明する。
フォワーディングは、先に実行された命令の結果がその命令で指定されるデスティネーションレジスタに書き込まれるパイプラインステージよりも前に、そのデスティネーションレジスタを参照する命令が実行されるときに、機能する。ここで、先の命令をレジスタ格納命令、後の命令をレジスタ参照命令と呼ぶとする。実施形態1及び2では、レジスタ参照命令を、フォワーディングを禁止するか許可するかだけを指定可能な命令、又は、許可する場合にどのパイプラインステージをフォワーディング元とするかを指定することができる命令とすることにより、ソフトウェアパイプライン化による性能向上を図ることができることを示した。本実施形態3では、この技術をより積極的に利用するためのプログラムコード変換(最適化)装置について説明する。プログラムコード変換(最適化)装置は、コンパイラとアセンブラとリンカから成るプログラム開発装置の一部の機能として組み込まれる。
IR 命令レジスタ
CTRL プロセッサ制御部
IDE 命令デコーダ
OP−DE,OP−DE1〜3 演算器制御情報パイプラインレジスタ(DEステージ)
OP−RR,OP−RR1〜3 演算器制御情報パイプラインレジスタ(RRステージ)
FWD−DE,FWD−DE1〜3 フォワーディング無効情報格納レジスタ
SRC−DE,SRCS−DE1〜3,SRCT−DE1〜3 ソースオペランド情報格納レジスタ
DST−DE,DST−DE1〜3 デスティネーションオペランド情報格納レジスタ(DEステージ)
DST−RR,DST−RR1〜3 デスティネーションオペランド情報格納レジスタ(RRステージ)
DST−EX,DST−EX1〜3 デスティネーションオペランド情報格納レジスタ(EXステージ)
FWDCNT,FWDCNTS1〜S3,FWDCNTT1〜T3 フォワーディング制御信号生成部
FSEL,FSEL−S1〜S3,FSEL−T1〜T3 フォワーディングセレクタ
EXEC,EXEC1〜3 演算器(処理実行回路)
REGF レジスタファイル
P−RR,P−RR−S1〜S3,P−RR−T1〜T3 演算器入力側パイプラインレジスタ(RRステージ)
P−EX,P−EX1〜3 演算器出力側パイプラインレジスタ(EXステージ)
ICODE 命令コード
OPEX,OPEX1〜3 演算器(処理実行回路)制御信号
FSELS1〜3,FSELT1〜3 フォワーディングセレクタ選択制御信号
RRS1〜3,RRT1〜3 レジスタファイルからのリードレジスタ指定信号
RW1〜3 レジスタファイルへのライトバックレジスタ指定信号
Claims (15)
- 命令セットに含まれプログラムに従って順次発行される命令をパイプライン方式で実行するプロセッサであって、
前記プロセッサは、
複数のレジスタを含むレジスタファイルと、
前記命令のデコード結果を保持する複数のパイプラインレジスタと、を備え、
前記命令ごとにフォワーディングを禁止するか許可するかが指定可能とされるのに代えて又は加えてフォワーディングを禁止するか前記パイプラインのどのステージからのフォワーディングを許可するかを表すフォワーディング元を指定可能とされ、
フォワーディングが禁止された命令を実行するときには前記レジスタファイルを参照し、
前記フォワーディング元を指定された命令を実行するときには、前記複数のパイプラインレジスタの指定されたパイプラインステージに保持されるデスティネーションオペランドコードと、前記フォワーディング元を指定された命令のソースオペランドコードとを比較し、一致するパイプラインレジスタを参照する、
プロセッサ。 - 請求項1において、前記プロセッサによって実行可能な命令セットが、フォワーディングを禁止するか許可するかを指定するフィールドを命令コードに有する命令に代えて又は加えて、フォワーディングを禁止するか前記フォワーディング元を指定するフィールドを命令コードに有する命令を含む、プロセッサ。
- 請求項2において、前記命令セットに含まれる複数の命令の命令コードから成る命令語が並列に発行され、前記複数の命令が並列に実行され、前記命令語はフォワーディングを禁止するか許可するかを指定するフィールドを個々の命令コードに有する前記命令に代えて又は加えて、フォワーディングを禁止するか前記フォワーディング元を指定するフィールドを個々の命令コードに有する前記命令を1個以上含む、プロセッサ。
- 命令セットに含まれプログラムに従って順次発行される命令をパイプライン方式で実行するプロセッサであって、
前記命令をフェッチするフェッチ回路と、複数のレジスタを含むレジスタファイルと、フォワーディングセレクタと、処理実行回路と、前記フェッチされた命令に基づいて前記処理実行回路を制御するプロセッサ制御回路とを備え、
前記命令セットは、レジスタ格納命令とレジスタ参照命令とを含み、
前記レジスタ格納命令は、当該命令によって指定される処理を前記処理実行回路に実行させた結果を、前記レジスタファイルに含まれる前記複数のレジスタのうち当該命令のデスティネーションオペランドで指定されるレジスタに格納させる命令であり、
前記レジスタ参照命令は、前記レジスタファイルに含まれる前記複数のレジスタのうち当該命令のソースオペランドで指定されるレジスタに格納されるデータを参照して、当該命令によって指定される処理を前記処理実行回路に実行させる命令であり、
一部又は全ての前記レジスタ参照命令は、フォワーディングを禁止するか許可するかを指定可能なフィールドを命令コードに含み、
前記プロセッサ制御回路は、前記フェッチされた命令をデコードする命令デコーダと、前記命令デコーダによるデコード結果を保持する複数のパイプラインレジスタと、フォワーディング制御回路とを備え、
前記命令デコーダは、前記フェッチされた命令をデコードして、前記命令の実行コードと、前記命令が前記レジスタ格納命令であるときにデスティネーションレジスタを指定するデスティネーションオペランドコードと、前記命令が前記レジスタ参照命令であるときにソースレジスタを指定するソースオペランドコードと、前記命令がフォワーディングを禁止するか許可するかが指定可能なフィールドを命令コードに含むレジスタ参照命令であるときに当該フィールドのデコード結果とを出力し、
前記複数のパイプラインレジスタは、前記デスティネーションオペランドコードをパイプラインステージごとに保持し、
前記フォワーディング制御回路は、フォワーディングを禁止するか許可するかを指定可能なフィールドのデコード結果に基づいて、
フォワーディングが禁止されるときは、前記フォワーディングセレクタにより、前記ソースオペランドコードで指定されるレジスタの値を前記レジスタファイルから読み出して前記処理実行回路に供給させ、
フォワーディングが許可されるときは、前記複数のパイプラインレジスタにパイプラインステージごとに保持される前記デスティネーションオペランドコードと、前記ソースオペランドコードとを比較し、一致するパイプラインステージから前記処理実行回路へのフォワーディングを前記フォワーディングセレクタによって実行させる、プロセッサであって、
前記一部又は全てのレジスタ参照命令に代えて又は加えて、一部又は全ての前記レジスタ参照命令は、フォワーディングを禁止するか前記パイプラインのどのステージからのフォワーディングを許可するかを表すフォワーディング元を指定可能なフィールドを命令コードに含み、
前記命令デコーダは、前記フェッチされた命令がフォワーディングを禁止するか前記フォワーディング元を指定可能なフィールドを命令コードに含むレジスタ参照命令であるときに当該フィールドのデコード結果をさらに出力し、
前記フォワーディング制御回路は、当該デコード結果に基づいて、
フォワーディングが禁止されるときは、前記フォワーディングセレクタにより、前記ソースオペランドコードで指定されるレジスタの値を前記レジスタファイルから読み出して前記処理実行回路に供給させ、
前記フォワーディング元が指定されるときは、前記複数のパイプラインレジスタの指定されたパイプラインステージに保持される前記デスティネーションオペランドコードと、前記ソースオペランドコードとを比較し、一致するパイプラインレジスタから前記処理実行回路へのフォワーディングを前記フォワーディングセレクタによって実行させる、
プロセッサ。 - 請求項4において、前記プロセッサは、前記処理実行回路をN個(Nは任意の自然数)備え、前記命令セットに含まれる前記N個の命令を1語に含む命令語を対応する処理実行回路により並列に実行可能であり、
前記N個のうちのM個(MはN以下の任意の自然数)の処理実行回路には、それぞれの入力数に対応する数のフォワーディングセレクタがそれぞれ接続され、
前記命令デコーダは、前記フェッチされた前記命令語に含まれる前記N個の命令を並列にデコードして、前記N個の処理実行回路のそれぞれに対応するデコード結果を出力し、前記M個の処理実行回路に対応するデコード結果には、フォワーディングを禁止するか許可するかが指定されたフィールドのデコード結果が含まれ、
前記プロセッサ制御回路は、前記M個の処理実行回路に対応するM個のフォワーディング制御回路を備え、
前記M個のフォワーディング制御回路のそれぞれは、フォワーディングを禁止するか許可するかが指定されるフィールドのデコード結果に基づいて、対応する処理実行回路に対するフォワーディング制御を実行する、
プロセッサ。 - 請求項5において、
前記プロセッサ制御回路は、前記複数のパイプラインレジスタに、前記N個の処理実行回路のそれぞれに対応する前記デスティネーションオペランドコードをパイプラインステージごとに保持し、
前記プロセッサ制御回路は、前記M個の処理実行回路に対応するM個のフォワーディング制御回路を備え、
前記M個のフォワーディング制御回路のそれぞれは、フォワーディングを禁止するか許可するかが指定されるフィールドのデコード結果に基づいて、対応する処理実行回路に接続される1個又は複数のフォワーディングセレクタに対して、
フォワーディングが禁止されるときは、前記1個又は複数のフォワーディングセレクタにそれぞれ対応する前記ソースオペランドコードで指定されるレジスタの値を前記レジスタファイルから読み出して当該処理実行回路に供給させ、
フォワーディングが許可されるときは、前記複数のパイプラインレジスタにパイプラインステージごとに保持される前記N個の処理実行回路のそれぞれに対応する前記デスティネーションオペランドコードと、前記1個又は複数のフォワーディングセレクタに対応する前記ソースオペランドコードとをそれぞれ比較し、一致するパイプラインステージから前記処理実行回路へのフォワーディングを当該フォワーディングセレクタによって実行させる、
プロセッサ。 - 請求項4において、前記プロセッサは、前記処理実行回路をN個(Nは任意の自然数)備え、前記命令セットに含まれる前記N個の命令を1語に含む命令語を対応する処理実行回路により並列に実行可能であり、
前記N個のうちのM個(MはN以下の任意の自然数)の処理実行回路には、それぞれの入力数に対応する数のフォワーディングセレクタがそれぞれ接続され、
前記命令デコーダは、前記フェッチされた前記命令語に含まれる前記N個の命令を並列にデコードして、前記N個の処理実行回路のそれぞれに対応するデコード結果を出力し、前記M個の処理実行回路に対応するデコード結果には、フォワーディングを禁止するか許可するかが指定されたフィールドのデコード結果またはフォワーディングを禁止するか前記フォワーディング元を指定可能なフィールドのデコード結果のうちの一方または両方が含まれ、
前記プロセッサ制御回路は、前記M個の処理実行回路に対応するM個のフォワーディング制御回路を備え、
前記M個のフォワーディング制御回路のそれぞれは、前記デコード結果に基づいて、対応する処理実行回路に対するフォワーディング制御を実行する、
プロセッサ。 - 請求項7において、
前記プロセッサ制御回路は、前記複数のパイプラインレジスタに、前記N個の処理実行回路のそれぞれに対応する前記デスティネーションオペランドコードをパイプラインステージごとに保持し、
前記プロセッサ制御回路は、前記M個の処理実行回路に対応するM個のフォワーディング制御回路を備え、
前記M個のフォワーディング制御回路のそれぞれは、フォワーディングを禁止するか許可するか前記フォワーディング元が指定されるフィールドのデコード結果に基づいて、対応する処理実行回路に接続される1個又は複数のフォワーディングセレクタに対して、
フォワーディングが禁止されるときは、前記1個又は複数のフォワーディングセレクタにそれぞれ対応する前記ソースオペランドコードで指定されるレジスタの値を前記レジスタファイルから読み出して当該処理実行回路に供給させ、
フォワーディングが許可されるときは、前記複数のパイプラインレジスタにパイプラインステージごとに保持される前記N個の処理実行回路のそれぞれに対応する前記デスティネーションオペランドコードと、前記1個又は複数のフォワーディングセレクタに対応する前記ソースオペランドコードとをそれぞれ比較し、一致するパイプラインレジスタから前記処理実行回路へのフォワーディングを当該フォワーディングセレクタによって実行させ、
前記フォワーディング元が指定されるときは、前記N個の処理実行回路に対応してパイプラインステージごとに保持されるデスティネーションオペランドコードのうち、前記フォワーディング元が指定されるパイプラインステージのパイプラインレジスタに保持されるデスティネーションオペランドコードと、前記フォワーディングセレクタに対応する前記ソースオペランドコードとをそれぞれ比較し、一致するパイプラインレジスタから前記処理実行回路へのフォワーディングを当該フォワーディングセレクタによって実行させる、
プロセッサ。 - 請求項4において、単一の半導体基板上に形成される、プロセッサ。
- 命令セットに含まれる複数の命令によって構成され、プロセッサによって実行されるプログラムのプログラムコードを変換するプログラムコード変換装置であって、
前記プロセッサは、複数のレジスタで構成されるレジスタファイルと処理実行回路とを含み、前記レジスタファイルを参照するレジスタリードステップと前記レジスタファイルに値を書き込むライトバックステップを含むパイプラインで構成され、
前記命令セットは、レジスタ参照命令とレジスタ格納命令とレジスタ移動命令とを含み、
前記レジスタ参照命令は、前記レジスタファイルに含まれる複数のレジスタのうち、当該命令のソースオペランドで指定されるレジスタに格納される値を、前記レジスタリードステップで参照して、当該命令によって規定される処理を前記プロセッサに実行させるための命令であり、
前記レジスタ格納命令は、当該命令によって規定される処理を前記プロセッサに実行させた結果を、前記レジスタファイルに含まれる複数のレジスタのうち、当該命令のデスティネーションオペランドで指定されるレジスタに、前記レジスタリードステップから前記パイプラインの段数で規定される遅延量だけ遅延された前記ライトバックステップで格納するための命令であり、
前記レジスタ移動命令は、前記レジスタファイルに含まれる複数のレジスタのうち、当該命令のソースオペランドで指定されるレジスタに格納される値を前記レジスタリードステップで読み出して、当該命令のデスティネーションオペランドで指定されるレジスタに前記ライトバックステップで書き込むための命令であり、
全てまたは一部の前記レジスタ参照命令は、フォワーディングを禁止するか許可するかを指定するフォワーディング無効フラグをオペランドにさらに含み、前記フォワーディング無効フラグによりフォワーディングが禁止されたときには前記プロセッサにより前記レジスタリードステップに前記レジスタファイルを参照させ、前記フォワーディング無効フラグによりフォワーディングが許可されたときには、前記プロセッサが前記レジスタ格納命令又は前記レジスタ移動命令を実行することにより前記デスティネーションオペランドで指定されるレジスタにデータを書き込むパイプラインの途中のステージから、前記ソースオペランドで指定されるレジスタに格納される値を参照させ、
前記プログラムコード変換装置は、
前記命令セットに含まれる複数の命令によって構成される前記プログラムコードからレジスタ移動命令を探索し、
前記探索で発見したレジスタ移動命令のソースオペランドで指定されるレジスタをデスティネーションオペランドで指定するレジスタ格納命令を抽出し、
前記探索で発見した前記レジスタ移動命令のデスティネーションオペランドで指定されるレジスタを、ソースオペランドで指定する後続のレジスタ参照命令について、前記レジスタ格納命令から前記遅延量以内の実行ステップで実行される場合には、フォワーディング無効フラグによりフォワーディングを禁止する指定を行ったレジスタ参照命令に置き換える、
プログラムコード変換装置。 - 請求項10において、前記プログラムコード変換装置は、
前記探索で発見した前記レジスタ移動命令のデスティネーションオペランドで指定されるレジスタを、ソースオペランドで指定する後続のレジスタ参照命令について、前記レジスタ格納命令から前記遅延量より遅れた実行ステップで実行される場合には、前記遅延量以内に実行される実行ステップに移動できるか否かを判断し、移動できる場合には移動した上で、フォワーディング無効フラグによりフォワーディングを許可する指定を行ったレジスタ参照命令に置き換える、
プログラムコード変換装置。 - 請求項11において、前記プログラムコード変換装置は、
前記探索で発見した前記レジスタ移動命令のデスティネーションオペランドで指定されるレジスタを、ソースオペランドで指定する後続の全てのレジスタ参照命令について、前記レジスタ格納命令から前記遅延量より遅れた実行ステップで実行される場合には、前記遅延量以内に実行される実行ステップに移動できるか否かを判断し、移動できる場合には移動した上で、フォワーディング無効フラグによりフォワーディングを禁止する指定を行ったレジスタ参照命令に置き換え、
前記全てのレジスタ参照命令が、前記遅延量以内に実行される実行ステップに移動されたときには、前記探索で発見した前記レジスタ移動命令を前記プログラムから削除する、
プログラムコード変換装置。 - 請求項10において、前記プロセッサは、前記処理実行回路をN個(Nは任意の自然数)備え、前記命令セットに含まれる前記N個の命令を1語に含む命令語を対応する処理実行回路により並列に実行可能である、
プログラムコード変換装置。 - 請求項10において、前記プログラムコード変換装置は、高級言語で記述されたプログラムから、前記命令セットに含まれる複数の命令によって構成される前記プログラムコードを生成する、
プログラムコード変換装置。 - コンピュータによって実行されることにより、請求項10に記載されるプログラムコード変換装置として機能する、ソフトウェア。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015054448A JP6422381B2 (ja) | 2015-03-18 | 2015-03-18 | プロセッサ、プログラムコード変換装置及びソフトウェア |
US15/056,952 US20160274916A1 (en) | 2015-03-18 | 2016-02-29 | Processor, program code translator and software |
CN201610151495.7A CN105988775A (zh) | 2015-03-18 | 2016-03-16 | 处理器、程序代码转换装置以及软件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015054448A JP6422381B2 (ja) | 2015-03-18 | 2015-03-18 | プロセッサ、プログラムコード変換装置及びソフトウェア |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016173793A JP2016173793A (ja) | 2016-09-29 |
JP6422381B2 true JP6422381B2 (ja) | 2018-11-14 |
Family
ID=56924736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015054448A Active JP6422381B2 (ja) | 2015-03-18 | 2015-03-18 | プロセッサ、プログラムコード変換装置及びソフトウェア |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160274916A1 (ja) |
JP (1) | JP6422381B2 (ja) |
CN (1) | CN105988775A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729027B (zh) * | 2017-10-12 | 2021-11-23 | 惠州Tcl移动通信有限公司 | 一种基于文件安装虚拟处理的方法、移动终端及存储介质 |
CN112732337A (zh) * | 2020-12-30 | 2021-04-30 | 深圳市力为自动化有限公司 | 界面显示方法及绕线设备、计算机存储介质 |
CN114116229B (zh) * | 2021-12-01 | 2023-03-31 | 北京奕斯伟计算技术股份有限公司 | 调节指令流水线的方法及装置、存储器和存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW334546B (en) * | 1996-03-18 | 1998-06-21 | Hitachi Ltd | Data processor |
JP2933026B2 (ja) * | 1996-08-30 | 1999-08-09 | 日本電気株式会社 | 複数命令並列発行/実行管理装置 |
JP3737573B2 (ja) * | 1996-09-09 | 2006-01-18 | 株式会社東芝 | Vliwプロセッサ |
JP3449186B2 (ja) * | 1997-08-19 | 2003-09-22 | 富士通株式会社 | パイプラインバイパス機能を有するデータ処理装置 |
WO2000068784A1 (en) * | 1999-05-06 | 2000-11-16 | Koninklijke Philips Electronics N.V. | Data processing device, method for executing load or store instructions and method for compiling programs |
US7624256B2 (en) * | 2005-04-14 | 2009-11-24 | Qualcomm Incorporated | System and method wherein conditional instructions unconditionally provide output |
US7475232B2 (en) * | 2005-07-19 | 2009-01-06 | International Business Machines Corporation | Performance of an in-order processor by no longer requiring a uniform completion point across different execution pipelines |
CN101361039A (zh) * | 2006-01-20 | 2009-02-04 | 松下电器产业株式会社 | 处理器 |
US8135941B2 (en) * | 2008-09-19 | 2012-03-13 | International Business Machines Corporation | Vector morphing mechanism for multiple processor cores |
-
2015
- 2015-03-18 JP JP2015054448A patent/JP6422381B2/ja active Active
-
2016
- 2016-02-29 US US15/056,952 patent/US20160274916A1/en not_active Abandoned
- 2016-03-16 CN CN201610151495.7A patent/CN105988775A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2016173793A (ja) | 2016-09-29 |
US20160274916A1 (en) | 2016-09-22 |
CN105988775A (zh) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8161266B2 (en) | Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
US9639371B2 (en) | Solution to divergent branches in a SIMD core using hardware pointers | |
EP2569694B1 (en) | Conditional compare instruction | |
JP3564445B2 (ja) | プロセッサ、コンパイル装置及びコンパイル方法 | |
JP2002333978A (ja) | Vliw型プロセッサ | |
JP2010532063A (ja) | 条件命令を無条件命令および選択命令へと拡張する方法およびシステム | |
KR102256188B1 (ko) | 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법 | |
EP2951682B1 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
EP0978031A2 (en) | A method for structuring a multi-instruction computer program | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
JP6422381B2 (ja) | プロセッサ、プログラムコード変換装置及びソフトウェア | |
JP2001243070A (ja) | プロセッサ及び分岐予測方法並びにコンパイル方法 | |
JP4444305B2 (ja) | 半導体装置 | |
JP2009507292A (ja) | 分離したシリアルモジュールを備えるプロセッサアレイ | |
JP2002024008A (ja) | データ処理装置およびプログラム変換装置 | |
Wang et al. | Acceleration of control flows on reconfigurable architecture with a composite method | |
Jung et al. | Feasibility of high level compiler optimizations in online synthesis | |
US20200371793A1 (en) | Vector store using bit-reversed order | |
Gädke et al. | Accelerating speculative execution in high-level synthesis with cancel tokens | |
US20180267803A1 (en) | Computer Processor Employing Phases of Operations Contained in Wide Instructions | |
Cowley et al. | RISC-V Dataflow Extension | |
JP3727324B2 (ja) | プロセッサ及びコンパイル装置 | |
Döbrich et al. | Practical Resource Constraints for Online Synthesis. | |
Unrolling | Instruction Level Parallelism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20170330 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180815 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180821 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180919 |
|
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: 20181002 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181016 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6422381 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |