JP7506718B2 - ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム - Google Patents
ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム Download PDFInfo
- Publication number
- JP7506718B2 JP7506718B2 JP2022125913A JP2022125913A JP7506718B2 JP 7506718 B2 JP7506718 B2 JP 7506718B2 JP 2022125913 A JP2022125913 A JP 2022125913A JP 2022125913 A JP2022125913 A JP 2022125913A JP 7506718 B2 JP7506718 B2 JP 7506718B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- jump destination
- machine instruction
- machine
- jump
- 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
- 238000012545 processing Methods 0.000 title claims description 43
- 239000000872 buffer Substances 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 15
- 238000000034 method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 9
- 239000011800 void material Substances 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002699 waste material Substances 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- 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
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)
Description
また、RISCは、複数段階の処理要素を、パイプライン処理によって高速化している。パイプライン処理とは、前段の処理要素の出力が後段の処理要素の入力となるように、直列に連結したものである。そして、列の処理要素をクロックに応じてシフトさせていき、並行に処理する。また、処理要素間に、バッファを置いて、1クロック毎の同期をとる。
命令フェッチ部(IF (Instruction Fetch))
:プログラムカウンタにセットされたメモリアドレスから、機械語命令を
フェッチする
デコード部(ID (Instruction Decode/register read))
:命令フェッチ部から出力された機械語命令を、制御情報(命令エンコーディ
ング形式の制御ビット列)にデコードする
実行部(EX (EXecution/address calculation))
:デコード部から出力された制御情報を実行する
書き込み部(WB (Write Back))
:メモリの読み出し及び書き込み・レジスタへの書き込み
命令フェッチ部、デコード部、実行部、書き込み部はそれぞれ、クロック同期して内部情報をシフトさせながら実行される。各処理要素を並列に処理することによって、クロックを無駄にすることがない。
(段階1)割り込み発生の2サイクル前にパイプラインに投入された命令のロケーション指示部をセーブする。
(段階2)割り込み発生の1サイクル前に投入された命令のロケーション指示部をセーブする。
(段階3)割り込みルーチンを処理する。
(段階4)割り込みルーチンから復帰する前に、段階1でセーブされたロケーション指示部にある命令をパイプラインに投入する。
(段階5)割り込みルーチンから復帰する前に、段階2でセーブされたロケーション指示部にある命令をパイプラインに投入する。
ここで、命令フェッチ部によってフェッチされた機械語命令が、ジャンプ命令(JAL(Jump And Link)及びJALR(Jump And Link Register))であったとする。
次に、デコード部は、そのジャンプの機械語命令を、制御情報にデコードする。
そして、実行部は、その制御情報を実行する。このとき、実行部は、ジャンプの制御情報を実行することによって、プログラムカウンタを、ジャンプ先の先頭アドレスにセットする。
即ち、ジャンプ命令の制御情報が実行部で実行された後、ジャンプ先の先頭アドレスが、プログラムカウンタにセットされ、命令フェッチ部は次のクロックで改めて、そのプログラムカウンタに応じた機械語命令をフェッチしなければならない。
これは、パイプライン処理の中で、ジャンプ命令が実行される毎に、パイプライン・バブルを生じることとなり、プロセッサの処理能力を低下させる原因となっていた。
ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるプロセッサであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を連結したパイプライン処理を有すると共に、
ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成された、先頭アドレス及び先頭機械語命令を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の2番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の先頭機械語命令をデコード手段に入力するパイプライン制御手段と
を有することを特徴とする。
また、本開示のプロセッサにおける他の実施形態によれば、
ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるプロセッサであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を連結したパイプライン処理を有すると共に、
ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成された、先頭アドレス及び先頭機械語命令を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の2番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の先頭機械語命令をデコード手段に入力するパイプライン制御手段と
を有し、
ソースコードのジャンプ元コードに、ジャンプ先ラベル、及び、ジャンプ先の先頭機械語命令が記述されており、
テーブルには、ジャンプ先ラベル毎に、ジャンプ先の先頭アドレス及び先頭機械語命令が記述され、
テーブルは、ジャンプ先コードを参照することなく、ジャンプ元コードのみから作成される
ことを特徴とする。
パイプライン制御手段の処理の後、
デコード手段がジャンプ先の先頭機械語命令を制御情報にデコードし、命令フェッチ手段がジャンプ先の2番目機械語命令をフェッチする
ことも好ましい。
命令フェッチ手段、デコード手段及び実行手段は、クロックに同期して連続する複数の機械語命令を並列に実行するものであり、
第1のクロックによって命令フェッチ手段から出力された機械語命令を一時的に記憶した後、第2のクロックによって当該機械語命令をデコード手段へ入力する第1のバッファを更に有し、
パイプライン制御手段は、当該ジャンプ先の先頭機械語命令を第1のバッファにセットする
ことも好ましい。
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を連結したパイプライン処理を実行するプロセッサにおいて、
ジャンプ先毎に、先頭アドレス、2番目機械語命令、及び、先頭機械語命令の制御情報を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の3番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の2番目機械語命令をデコード手段に入力し、当該ジャンプ先の先頭機械語命令の制御情報を実行手段に入力するパイプライン制御手段と
を有することを特徴とする。
パイプライン制御手段の処理の後、
第1のクロックによって、実行手段がジャンプ先の先頭機械語命令の制御情報を実行すると共に、デコード手段がジャンプ先の2番目機械語命令を制御情報にデコードし、命令フェッチ手段がジャンプ先の3番目機械語命令をフェッチする
ことも好ましい。
命令フェッチ手段、デコード手段及び実行手段は、クロックに同期して連続する複数の機械語命令を並列に実行するものであり、
第1のクロックによって命令フェッチ手段から出力された機械語命令を一時的に記憶した後、第2のクロックによって当該機械語命令をデコード手段へ入力する第1のバッファと、
第1のクロックによってデコード手段から出力された制御情報を一時的に記憶した後、第2のクロックによって当該制御情報を実行手段へ入力する第2のバッファと
を更に有し、
パイプライン制御手段は、当該ジャンプ先の2番目機械語命令を第1のバッファにセットし、当該ジャンプ先の先頭機械語命令の制御情報を第2のバッファにセットする
ことも好ましい。
当該プロセッサは、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるものであり、
テーブルは、ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成される
ことも好ましい。
当該プロセッサは、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるものであり、
ソースコードのジャンプ元コードに、ジャンプ先ラベル、ジャンプ先の先頭機械語命令、及び、ジャンプ先の2番目機械語命令が記述されており、
テーブルには、ジャンプ先ラベル毎に、ジャンプ先の2番目機械語命令と、ジャンプ先の先頭機械語命令を変換した制御情報とが記述され、
テーブルは、ジャンプ先コードを参照することなく、ジャンプ元コードのみから作成される
ことも好ましい。
プロセッサを機能させるために、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されるプログラムであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を連結したパイプライン処理を有すると共に、
ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成された、先頭アドレス及び先頭機械語命令を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の2番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の先頭機械語命令をデコード手段に入力するパイプライン制御手段と
してプロセッサを機能させることを特徴とする。
プロセッサを機能させるために、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されるプログラムであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を連結したパイプライン処理を有すると共に、
ジャンプ先毎に、先頭アドレス、2番目機械語命令、及び、先頭機械語命令の制御情報を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の3番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の2番目機械語命令をデコード手段に入力し、当該ジャンプ先の先頭機械語命令の制御情報を実行手段に入力するパイプライン制御手段と
してプロセッサを機能させることを特徴とする。
また、本開示の特徴として更に、テーブル102と、パイプライン制御部103とを有する。
<第1の実施形態>:パイプライン制御部103は、命令フェッチ部11が参照するプログラムカウンタと、デコード部12に入力される機械語命令とを制御する。
<第2の実施形態>:パイプライン制御部103は、命令フェッチ部11が参照するプログラムカウンタと、デコード部12に入力される機械語命令と、実行部13に入力される制御情報(命令エンコーディング形式の制御ビット列)とを制御する。
図4は、第1の実施形態におけるパイプライン制御部の説明図である。
テーブル102は、一般に「ディスパッチテーブル」とも称され、ジャンプ先(又はサブルーチン)の命令を記述したものである。テーブル102は、プロセッサ1のコア部10内に、揮発性又は不揮発性のメモリとして記憶され、小容量且つ高速なアクセスを実現する。
<第1のソースコード>
void type0sub(){printf("000\n"); }
void type1sub(){printf("111\n"); }
void type2sub(){printf("222\n"); }
void (*func_table[])(void)={ type0sub, type1sub, type2sub };
void main()
{int tag;
:
(*func_table[tag])();
}
<ジャンプ元・機械語命令>
ld a1,[a0] ;a0(tag)が指すジャンプ先アドレスをa1にロード
fast_dispatch a1 ;ディスパッチテーブルを参照し、a1が指すアドレスへ
ジャンプ
(プログラムカウンタを、a1が指すアドレスにセット)
<ジャンプ先・機械語命令>
type0sub: ;ジャンプ先のラベル(ジャンプ先の先頭アドレスとなる)
ShiftRight a0,a0,3 ;ジャンプ先の先頭機械語命令
addi a0,a0,2 ;ジャンプ先の2番目機械語命令
<第2のソースコード>
switch(tag){
case 0: jump type0sub(); break;
case 1: jump type1sub(); break;
case 2: jump type2proc(); break;
}
<ジャンプ元・機械語命令>
ld a1,[a0] ;a0が指すジャンプ先アドレスをa1にロード
jmp a1 ;a1が指すアドレスへジャンプ
(プログラムカウンタを、a1が指すアドレスにセット)
<ジャンプ先・機械語命令>
type0sub: ;ジャンプ先のラベル(ジャンプ先の先頭アドレスとなる)
ShiftRight a0,a0,3 ;ジャンプ先の先頭機械語命令
addi a0,a0,2 ;ジャンプ先の2番目機械語命令
<ジャンプ先> <先頭アドレス> <先頭機械語命令>
type0 type0subアドレス ShiftRight a0,a0,3
type1 type1subアドレス subi a1,a1,22
type2 type2subアドレス ・・・・・
ジャンプ先コードの先頭機械語命令は、確定していることを前提とする。
パイプライン制御部103は、以下の2つの制御を処理する。
<制御11>実行部13によってジャンプの制御情報が実行された際に、テーブル102を用いて、当該ジャンプ先の2番目機械語命令を指すアドレスをプログラムカウンタにセットする。
<制御12>当該ジャンプ先の先頭機械語命令をデコード部12に入力する。
そして、パイプライン処理によって、命令フェッチ部11及びデコード部12はそれぞれ、クロック同期してシフトしながら実行される。
<処理11>デコード部12が、ジャンプ先の先頭機械語命令を制御情報にデコードする。
<処理12>命令フェッチ部11が、ジャンプ先の2番目機械語命令をフェッチする。
ここで、図4によれば、命令フェッチ部11とデコード部12との間に、第1のバッファが置かれている。第1のバッファは、第1のクロックによって命令フェッチ部11から出力された機械語命令を一時的に記憶した後、第2のクロックによって当該機械語命令をデコード部12へ入力する。前述した制御12では、パイプライン制御部103は、当該ジャンプ先の先頭機械語命令を第1のバッファにセットする。
本実施形態のプロセッサは、ハードウェア記述言語のソースコードによって記述されている。そのソースコードをコンパイルした後、複数のライブラリと「リンク」することによって、実行形式に変換される。勿論、ハードウェア記述言語で記述されることに限られず、布線論理によって実現することもできる。
図5によれば、ソースコードのジャンプ元コードに、<ジャンプ先ラベル>及び<ジャンプ先の先頭機械語命令>が記述されている。
<ソースコード>
switch(tag){
case 0: call_and_NextInst_is(type0sub, 'ShiftRight a0,a0,3'); break;
case 1: call type1sub(); break;
case 2: jump type2proc(); break;
}
テーブル102には、ジャンプ先ラベル毎に、<先頭アドレス>及び<ジャンプ先の先頭機械語命令>が記述される。
<ジャンプ先> <先頭アドレス> <先頭機械語命令>
type0 type0subアドレス ShiftRight a0,a0,3
図6は、第2の実施形態におけるパイプライン制御部の説明図である。
テーブル102には、ジャンプ(又はサブルーチン)先毎に、<先頭アドレス>、<2番目機械語命令>及び<先頭機械語命令の制御情報>が記述される。例えばジャンプ先のラベル毎に、以下のように記述される。
<ジャンプ先> <先頭アドレス> <2番目機械語命令>
<先頭機械語命令の制御情報>
type0 type0subアドレス addi a0,a0,3 00000000
type1 type1subアドレス ・・・・・ ・・・・・
type2 type2subアドレス ・・・・・ ・・・・・
ジャンプ先コードの先頭機械語命令及び2番目機械語命令は、確定していることを前提とする。
パイプライン制御部103は、以下の3つの制御を処理する。
<制御21>実行部13によってジャンプの制御情報が実行された際に、テーブル102を用いて、当該ジャンプ先の3番目機械語命令を指すアドレスをプログラムカウンタにセットする。
<制御22>当該ジャンプの2番目機械語命令をデコード部12に入力する。
<制御23>当該ジャンプ先の先頭機械語命令の制御情報を実行部13に入力する。
そして、パイプライン処理によって、命令フェッチ部11、デコード部12及び実行部13は共に、クロックに同期して連続する機械語命令を並列に実行される。
<処理21>実行部13がジャンプ先の先頭機械語命令の制御情報を実行する。
<処理22>デコード部12がジャンプ先の2番目機械語命令を制御情報にデコードする。
<処理23>命令フェッチ部11がジャンプ先の3番目機械語命令をフェッチする。
また、<2番目機械語命令>も、直ぐにデコード部12によって処理可能となり、命令フェッチのためのクロックを要しない。
即ち、命令フェッチ部11及びデコード部12について、パイプライン・バブルをできる限り生じないようにすることができる。
ここで、図6によれば、命令フェッチ部11とデコード部12との間に、第1のバッファと、デコード部12と実行部13との間に、第2のバッファとが置かれている。
第1のバッファは、第1のクロックによって命令フェッチ部11から出力された機械語命令を一時的に記憶した後、第2のクロックによって当該機械語命令をデコード部12へ入力する。
第2のバッファは、第1のクロックによってデコード部12から出力された制御情報を一時的に記憶した後、第2のクロックによって当該制御情報を実行部13へ出力する。
前述した制御22では、パイプライン制御部103は、当該ジャンプの2番目機械語命令を第1のバッファにセットする。
前述した制御23では、パイプライン制御部103は、当該ジャンプ先の先頭機械語命令の制御情報を第2のバッファにセットする。
図7によれば、ソースコードのジャンプ元コードに、<ジャンプ先ラベル>、<ジャンプ先の先頭機械語命令>及び<ジャンプ先の2番目機械語命令>が記述されている。
<ソースコード>
switch(tag){
case 0: call_and_AfterNextInst_is(type0sub, 'ShiftRight a0,a0,3',
'addi a0,a0,2'); break;
case 1: call type1sub(); break;
case 2: jump type2proc(); break;
}
テーブル102には、ジャンプ先ラベル毎に、<先頭アドレス>及び<ジャンプ先の2番目機械語命令>と、<ジャンプ先の先頭機械語命令の制御情報>とが記述される。
<ジャンプ先> <先頭アドレス> <2番目機械語命令>
<先頭機械語命令の制御情報>
type0 type0subアドレス addi a0,a0,3 00000000・・・
制御情報は、機械語命令から、デコード部12の処理アルゴリズムによって予め変換されたものである。
インタプリタ方式では、機械語命令を逐次処理するために、負荷が大きく、高速処理が困難となる。Java仮想マシン・インタープリタやLispは、データ・オブジェクトに付加されたタグ情報を参照して、機械語ルーチンをディスパッチすることがほとんどである。そのタグ・ディスパッチ部分の機械語命令を、例えばRISCプロセッサの制御情報として直接生成することができる。このような制御情報を、テーブル102に直接的に記述しておくことによって、ジャンプ(又はサブルーチン)の際に生じるパイプライン・バブルを生じることなく、高速化を図ることができる。
10 コア部
101 プログラムカウンタ
102 テーブル
103 パイプライン制御部
11 命令フェッチ部
12 デコード部
13 実行部
14 書き込み部
Claims (11)
- ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるプロセッサであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を有して、連結したパイプライン処理を実行すると共に、
ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成された、先頭アドレス及び先頭機械語命令を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の2番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の先頭機械語命令をデコード手段に入力するパイプライン制御手段と
を有することを特徴とするプロセッサ。 - ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるプロセッサであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を有して、連結したパイプライン処理を実行すると共に、
ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成された、先頭アドレス及び先頭機械語命令を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の2番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の先頭機械語命令をデコード手段に入力するパイプライン制御手段と
を有し、
ソースコードのジャンプ元コードに、ジャンプ先ラベル、及び、ジャンプ先の先頭機械語命令が記述されており、
テーブルには、ジャンプ先ラベル毎に、ジャンプ先の先頭アドレス及び先頭機械語命令が記述され、
テーブルは、ジャンプ先コードを参照することなく、ジャンプ元コードのみから作成される
ことを特徴とするプロセッサ。 - パイプライン制御手段による処理の後、
デコード手段がジャンプ先の先頭機械語命令を制御情報にデコードし、命令フェッチ手段がジャンプ先の2番目機械語命令をフェッチする
ことを特徴とする請求項1に記載のプロセッサ。 - 命令フェッチ手段、デコード手段及び実行手段は、クロックに同期して連続する複数の機械語命令を並列に実行するものであり、
当該プロセッサは、第1のクロックによって命令フェッチ手段から出力された機械語命令を一時的に記憶した後、第2のクロックによって当該機械語命令をデコード手段へ入力する第1のバッファを更に有し、
パイプライン制御手段は、当該ジャンプ先の先頭機械語命令を第1のバッファにセットする
ことを特徴とする請求項3に記載のプロセッサ。 - プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
を連結したパイプライン処理を実行するプロセッサであって、
ジャンプ先毎に、先頭アドレス、2番目機械語命令、及び、先頭機械語命令の制御情報を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の3番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の2番目機械語命令をデコード手段に入力し、当該ジャンプ先の先頭機械語命令の制御情報を実行手段に入力するパイプライン制御手段と
を有することを特徴とするプロセッサ。 - パイプライン制御手段による処理の後、
第1のクロックによって、実行手段がジャンプ先の先頭機械語命令の制御情報を実行すると共に、デコード手段がジャンプ先の2番目機械語命令を制御情報にデコードし、命令フェッチ手段がジャンプ先の3番目機械語命令をフェッチする
ことを特徴とする請求項5に記載のプロセッサ。 - 命令フェッチ手段、デコード手段及び実行手段は、クロックに同期して連続する複数の機械語命令を並列に実行するものであり、
当該プロセッサは、
第1のクロックによって命令フェッチ手段から出力された機械語命令を一時的に記憶した後、第2のクロックによって当該機械語命令をデコード手段へ入力する第1のバッファと、
第1のクロックによってデコード手段から出力された制御情報を一時的に記憶した後、第2のクロックによって当該制御情報を実行手段へ入力する第2のバッファと
を更に有し、
パイプライン制御手段は、当該ジャンプ先の2番目機械語命令を第1のバッファにセットし、当該ジャンプ先の先頭機械語命令の制御情報を第2のバッファにセットする
ことを特徴とする請求項6に記載のプロセッサ。 - 当該プロセッサは、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるものであり、
テーブルは、ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成される
ことを特徴とする請求項5に記載のプロセッサ。 - 当該プロセッサは、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されたプログラムを機能させるものであり、
ソースコードのジャンプ元コードに、ジャンプ先ラベル、ジャンプ先の先頭機械語命令、及び、ジャンプ先の2番目機械語命令が記述されており、
テーブルには、ジャンプ先ラベル毎に、ジャンプ先の2番目機械語命令と、ジャンプ先の先頭機械語命令を変換した制御情報とが記述され、
テーブルは、ジャンプ先コードを参照することなく、ジャンプ元コードのみから作成される
ことを特徴とする請求項5に記載のプロセッサ。 - プロセッサを機能させるために、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されるプログラムであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
して機能させ、連結したパイプライン処理を実行させると共に、
ジャンプ元コードの機械語命令とジャンプ先コードの機械語命令とをリンクする際に作成された、先頭アドレス及び先頭機械語命令を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の2番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の先頭機械語命令をデコード手段に入力するパイプライン制御手段と
してプロセッサを機能させることを特徴とするプログラム。 - プロセッサを機能させるために、ハードウェア記述言語のソースコードをコンパイルし且つリンクすることによって実行形式に変換されるプログラムであって、
プログラムカウンタにセットされたメモリアドレスから機械語命令をフェッチする命令フェッチ手段と、
命令フェッチ手段から出力された機械語命令を制御情報にデコードするデコード手段と、
デコード手段から出力された制御情報を実行する実行手段と
して機能させ、連結したパイプライン処理を実行させると共に、
ジャンプ先毎に、先頭アドレス、2番目機械語命令、及び、先頭機械語命令の制御情報を記述したテーブルと、
実行手段によってジャンプの制御情報が実行された際に、テーブルを用いて、当該ジャンプ先の3番目機械語命令を指すアドレスをプログラムカウンタにセットすると共に、当該ジャンプ先の2番目機械語命令をデコード手段に入力し、当該ジャンプ先の先頭機械語命令の制御情報を実行手段に入力するパイプライン制御手段と
してプロセッサを機能させることを特徴とするプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022125913A JP7506718B2 (ja) | 2022-08-05 | 2022-08-05 | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム |
PCT/JP2023/020054 WO2024029174A1 (ja) | 2022-08-05 | 2023-05-30 | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022125913A JP7506718B2 (ja) | 2022-08-05 | 2022-08-05 | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2024022371A JP2024022371A (ja) | 2024-02-16 |
JP7506718B2 true JP7506718B2 (ja) | 2024-06-26 |
Family
ID=89849128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022125913A Active JP7506718B2 (ja) | 2022-08-05 | 2022-08-05 | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7506718B2 (ja) |
WO (1) | WO2024029174A1 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000029696A (ja) * | 1998-07-08 | 2000-01-28 | Sony Corp | プロセッサおよびパイプライン処理制御方法 |
JP4986431B2 (ja) * | 2005-09-29 | 2012-07-25 | ルネサスエレクトロニクス株式会社 | プロセッサ |
-
2022
- 2022-08-05 JP JP2022125913A patent/JP7506718B2/ja active Active
-
2023
- 2023-05-30 WO PCT/JP2023/020054 patent/WO2024029174A1/ja unknown
Also Published As
Publication number | Publication date |
---|---|
JP2024022371A (ja) | 2024-02-16 |
WO2024029174A1 (ja) | 2024-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100208889B1 (ko) | 병렬처리장치 및 병렬처리방법 | |
US5303356A (en) | System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag | |
US6647489B1 (en) | Compare branch instruction pairing within a single integer pipeline | |
US5504932A (en) | System for executing scalar instructions in parallel based on control bits appended by compounding decoder | |
EP0476722A2 (en) | Data processing system | |
JP2001273138A (ja) | プログラム変換装置および方法 | |
US6012138A (en) | Dynamically variable length CPU pipeline for efficiently executing two instruction sets | |
KR100573334B1 (ko) | 실시간 동적 수정이 가능한 명령어 집합을 가지는 컴퓨터 | |
US10338926B2 (en) | Processor with conditional instructions | |
CN112182999B (zh) | 一种基于mips32指令系统的三级流水线cpu设计方法 | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
KR100374401B1 (ko) | 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치 | |
CN117193861A (zh) | 指令处理方法、装置、计算机设备和存储介质 | |
JP7506718B2 (ja) | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム | |
JPS62226231A (ja) | プロセツサ | |
US6115807A (en) | Static instruction decoder utilizing a circular queue to decode instructions and select instructions to be issued | |
EP1190305B1 (en) | Method and apparatus for jump delay slot control in a pipelined processor | |
EP1194835A2 (en) | Method and apparatus for loose register encoding within a pipelined processor | |
US5361338A (en) | Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand | |
US6049864A (en) | Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor | |
CN113779755A (zh) | 一种硅基多光谱集成电路芯片的设计方法和集成电路芯片 | |
EP0545927B1 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
JP3541356B2 (ja) | 階層型命令を実行する計算機 | |
EP0825529A2 (en) | System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction | |
EP0862111B1 (en) | Dynamic conversion between different instruction codes by recombination of instruction elements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231130 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231130 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20231130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240207 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240313 |
|
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: 20240611 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240614 |