JP2010140398A - データ処理装置及びデータ処理方法 - Google Patents
データ処理装置及びデータ処理方法 Download PDFInfo
- Publication number
- JP2010140398A JP2010140398A JP2008318064A JP2008318064A JP2010140398A JP 2010140398 A JP2010140398 A JP 2010140398A JP 2008318064 A JP2008318064 A JP 2008318064A JP 2008318064 A JP2008318064 A JP 2008318064A JP 2010140398 A JP2010140398 A JP 2010140398A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- loop
- queue
- stored
- queues
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title description 18
- 230000010365 information processing Effects 0.000 claims abstract description 7
- 238000003672 processing method Methods 0.000 claims description 4
- 230000000052 comparative effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 1
- 230000003252 repetitive 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
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)
Abstract
【課題】パイプラインの段数を増やした場合でも、高速かつ正確なループ処理を実行可能なデータ処理装置を提供すること。
【解決手段】本発明に係るデータ処理装置は、命令メモリと、前記命令メモリに格納された命令をフェッチするフェッチ回路と、を備え、ループ処理をパイプライン処理する情報処理装置であって、前記フェッチ回路が、当該フェッチ回路から出力する命令を格納する命令キューと、前記命令メモリから取り込んだ命令を格納する退避キューと、前記命令キューから出力された命令と前記退避キューから出力された命令とからいずれかを選択するセレクタと、前記セレクタに選択された命令を格納し、前記命令キューへ出力するループキューと、を備えるものである。
【選択図】図1
【解決手段】本発明に係るデータ処理装置は、命令メモリと、前記命令メモリに格納された命令をフェッチするフェッチ回路と、を備え、ループ処理をパイプライン処理する情報処理装置であって、前記フェッチ回路が、当該フェッチ回路から出力する命令を格納する命令キューと、前記命令メモリから取り込んだ命令を格納する退避キューと、前記命令キューから出力された命令と前記退避キューから出力された命令とからいずれかを選択するセレクタと、前記セレクタに選択された命令を格納し、前記命令キューへ出力するループキューと、を備えるものである。
【選択図】図1
Description
本発明は、情報処理装置及び情報処理方法に関し、特に、命令をパイプライン処理する情報処理装置及び情報処理方法に関する。
各種のプロセッサとして、命令をパイプライン処理によって実行するパイプライン方式のものが知られている。パイプラインは、命令のフェッチ、デコード、実行などの複数のフェーズ(ステージ)に分割されており、このパイプラインを複数オーバラップさせて、1つの命令の処理が終了する前に次の命令の処理を順次開始し、同時に複数の命令を処理することで高速化を図っている。パイプライン処理とは、各命令についてフェッチフェーズから実行フェーズまでパイプラインの一連のフェーズを処理することである。近年、パイプラインの段数(フェーズ数)を増やして高速クロックでの動作に対応する手法が多く用いられている。
他方、汎用マイクロプロセッサよりも積和演算などを高速に処理し、各種の用途に特化した機能を実現するプロセッサとしてDSP(Digital Signal Processor)が知られている。一般に、DSPでは、連続する繰り返し処理(ループ処理)を効率よく実行する必要がある。このようなDSPでは、入力されてフェッチされた命令がループ命令の場合、入力順に命令を処理するのではなく、ループの先頭の命令からループの終端の命令までの処理を繰り返すように制御する。このようなループ制御に関する技術が、例えば、特許文献1及び2に記載されている。
特許文献1には、上記ループ処理を高速化するために、ループ高速化回路が設けられたデータ処理装置が開示されている。このループ高速化回路は、繰り返し実行されるループ処理を構成する命令群を格納するためのループキューを備えている。すなわち、当該命令群を命令メモリからフェッチすることなく、ループ処理を繰り返すことができるため、ループ処理を高速化することができる。
なお、特許文献2に係る発明は本発明者によるものであり、ループ命令のパイプライン処理が完了するまで、ループ終端命令のパイプライン処理を保留するインターロック発生回路が開示されている。これにより、ループエンド判定を正確に実行することができる。
特開2005−284814号公報
特開2007−207145号公報
しかしながら、特許文献1に記載のループ処理高速化技術では、パイプラインの段数を増やした場合、正しい命令が実行されない恐れがあった。一方、これを回避するには、正しい命令を命令メモリからフェッチし直す必要があるため、高速化が犠牲となる。
本発明に係るデータ処理装置は、
命令メモリと、
前記命令メモリに格納された命令をフェッチするフェッチ回路と、を備え、ループ処理をパイプライン処理する情報処理装置であって、
前記フェッチ回路が、
当該フェッチ回路から出力する命令を格納する命令キューと、
前記命令メモリから取り込んだ命令を格納する退避キューと、
前記命令キューから出力された命令と前記退避キューから出力された命令とからいずれかを選択するセレクタと、
前記セレクタに選択された命令を格納し、前記命令キューへ出力するループキューと、を備えるものである。
命令メモリと、
前記命令メモリに格納された命令をフェッチするフェッチ回路と、を備え、ループ処理をパイプライン処理する情報処理装置であって、
前記フェッチ回路が、
当該フェッチ回路から出力する命令を格納する命令キューと、
前記命令メモリから取り込んだ命令を格納する退避キューと、
前記命令キューから出力された命令と前記退避キューから出力された命令とからいずれかを選択するセレクタと、
前記セレクタに選択された命令を格納し、前記命令キューへ出力するループキューと、を備えるものである。
本発明に係るデータ処理方法は、
命令メモリからフェッチした第1の命令を出力するための命令キューへ格納し、
前記命令メモリからフェッチした第2の命令を退避キューへ格納し、
前記命令キューへ格納された第1の命令と前記退避キューへ格納された第2の命令とのうちからいずれかを選択してループキューへ格納し、
前記選択により前記ループキューに格納された命令を前記命令キューへ出力するものである。
命令メモリからフェッチした第1の命令を出力するための命令キューへ格納し、
前記命令メモリからフェッチした第2の命令を退避キューへ格納し、
前記命令キューへ格納された第1の命令と前記退避キューへ格納された第2の命令とのうちからいずれかを選択してループキューへ格納し、
前記選択により前記ループキューに格納された命令を前記命令キューへ出力するものである。
このデータ処理装置及び方法によれば、ループキューに加え、退避キューを備えているため、パイプラインの段数を増やした場合でも、高速かつ正確なループ処理を実行することができる。
本発明によれば、パイプラインの段数を増やした場合でも、高速かつ正確なループ処理を実行可能なデータ処理装置を提供することができる。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
実施の形態1
図1を用いて、本実施形態に係るプロセッサの構成について説明する。例えば、このプロセッサは、命令をパイプライン処理するプロセッサであり、ループ命令の実行が可能なDSPである。図1に示されるように、プロセッサは、命令メモリ201、フェッチ回路100、デコーダ202、演算回路203、プログラム制御回路204、ロード・ストア回路205、データメモリ206を備えている。
図1を用いて、本実施形態に係るプロセッサの構成について説明する。例えば、このプロセッサは、命令をパイプライン処理するプロセッサであり、ループ命令の実行が可能なDSPである。図1に示されるように、プロセッサは、命令メモリ201、フェッチ回路100、デコーダ202、演算回路203、プログラム制御回路204、ロード・ストア回路205、データメモリ206を備えている。
命令メモリ201には、実行する命令があらかじめ格納されている。この命令は、ユーザが作成したプログラムをコンパイルした結果、得られるマシン語コードである。
フェッチ回路100は、4つのセレクタS1〜S4、2つの命令キューQH、QL、3つのループキューLQ1〜LQ3、1つの退避キューLQ_hold1を備えている。フェッチ回路100は、命令メモリ201から命令をフェッチする(読み出す)。詳細には後述するように、フェッチ回路100は、パイプラインのフェッチフェーズ(IFフェーズ)の処理を実行する。
セレクタS1は、命令メモリ201とセレクタS4とに接続され、いずれかから出力された命令を選択する。この選択は、プログラム制御回路204からの制御信号により行われる。また、セレクタS1から出力された命令は2つの命令キューQH、QLに交互に格納される。非ループ処理すなわち通常の命令の場合、原則としてセレクタ1は命令メモリ201からの命令を選択する。他方、ループ処理の場合、原則としてセレクタ1はループキューLQ1〜LQ3に格納されセレクタS4を介して出力されるループ内命令を選択する。これにより、高速でループ処理を実行することができる。
命令キューQH、QLには、フェッチ回路100から出力される命令が格納される。命令キューQH、QLに格納された命令は、セレクタS2を介して交互にデコーダ202へ出力される。
退避キューLQ_hold1には、命令メモリ201からフェッチされた命令が格納される。本実施の形態では、ループ外命令が格納される。しかしながら、特にループ外命令に限定されるわけではない。一般的に、IFフェーズの段数N、命令キューの数をQとすると、(N−1)−Q=(N−Q−1)個の退避キューLQ_holdを備えることが好ましい。本実施の形態では、IFフェーズの段数N=4、命令キューの数Q=2であるため、1つの退避キューLQ_hold1を備える。
セレクタS3は、命令キューQH、QLに1つずつ格納された命令と、退避キューLQ_hold1に格納された1つの命令との3つの命令からいずれか1つを選択する。この選択は、プログラム制御回路204からの制御信号により行われる。
ループキューLQ1〜LQ3は、ループ先頭命令から所定数の命令が格納されるレジスタである。ループキューLQ1〜LQ3へは、命令キューQH、QL又は退避キューLQ_hold1に格納された命令が格納される。ループキューへは、原則としてループ内命令が格納され、各ループ内命令のIF1〜IF3を省略することにより、ループ処理を高速で繰り返すことができる。一般的に、IFフェーズの段数Nに対し、(N−1)個のループキューLQを備えることが好ましい。本実施の形態では、IFフェーズが4段であるため、3つのループキューLQ1〜LQ3を備える。
デコーダ202は、フェッチ回路202がフェッチした命令について、命令の割り振り(ディスパッチ)、デコード、アドレスの計算などを行う。詳細には後述するように、デコーダ202は、パイプラインのデコードフェーズ(DQ、DE、ACフェーズ)の処理を実行する。
演算回路203とロード・ストア回路205は、デコーダ202のデコード結果に基づいて処理を実行する。詳細には後述するように、演算回路203とロード・ストア回路205は、パイプラインの実行フェーズ(EXフェーズ)の処理を実行する。演算回路203は、加算等の各種演算を行う。データメモリ206は、演算結果などを格納するメモリであり、ロード・ストア回路205は、このデータメモリ206にアクセスし、データの書き込み/読み出しを行う。
プログラム制御回路204は、デコードされた命令に応じ、フェッチ回路100内のセレクタS1及びS3を制御し、ループ処理と非ループ処理との切り替えを制御する。また、プログラム制御回路204は、特許文献2と同様にインターロック発生回路、ループカウンタ、ループエンド判定回路など(不図示)を備えている。すなわち、プログラム制御回路204は、インターロック制御、ループ処理のカウント、ループエンド判定なども行っている。
次に、本実施形態に係るプロセッサにおいて、各命令がパイプライン処理される例について説明する。図3は、プロセッサに図2(a)のパイプラインを適用して、図2(b)のプログラムを実行した場合のパイプライン処理を示している。
図2(a)のパイプラインは、高速動作に対応するために、IF1〜4、DQ、DE、AC(Address Calculation)、EX1〜4の11フェーズに分割されている。各フェーズの動作例を説明する。IF1〜IF4フェーズでは、4サイクルで1命令をフェッチする。DQフェーズでは、命令の割り振りを行う。DEフェーズでは、命令のデコードを行う。ACフェーズでは、データメモリにアクセスするためのアドレスを計算する。そして、EX1〜EX4では、4サイクルのいずれか、例えばEX4で命令を実行する。原則として、各フェーズが1クロックで処理される。
図2(b)は、ここで実行されるプログラムの例である。このプログラムには、「LOOP 2;(ループ命令)」の次に、「inst(instruction)1;(ループ先頭命令)」、「inst2;ループ終端命令)」からなるループ内命令が記述され、続いて「inst3;(ループ外1命令)」、「inst4;(ループ外2命令)」が記述されている。
ループ命令のオペランドは、ループ回数を示しており、この例ではループ内命令を2回繰り返すことを意味している。ループ命令に続いて、中カッコ{}で囲まれた命令が、繰り返し実行されるループ内命令である。ループ内命令のうち最初に記述された命令をループ先頭命令といい、ループ内命令のうち最後に記述された命令をループ終端命令という。すなわち、このプログラムは、ループ先頭命令とループ終端命令とを2回繰り返し実行した後、ループ外1命令以降を実行する。
図3に示すように、図3の最上段に示したループ命令(1)から連続する各命令は1クロック違いで図1の命令メモリ201から命令データとしてフェッチされる。図3の「命令データ」に示すように、各命令はIF4フェーズで命令データとして取り出され、所定の場所に格納される。
具体的には、時刻T3に、ループ命令(1)が命令データとして取り出され、命令キューQLへ格納される。
続いて、時刻T4に、ループ先頭命令(2)が命令データとして取り出され、命令キューQHへ格納される。
時刻T5に、ループ命令(1)のDEフェーズでループ命令(1)がデコードされると、命令キューQLが空くため、ループ終端命令(3)が時刻T5の終端に命令キューQLへ格納される。
続いて、時刻T4に、ループ先頭命令(2)が命令データとして取り出され、命令キューQHへ格納される。
時刻T5に、ループ命令(1)のDEフェーズでループ命令(1)がデコードされると、命令キューQLが空くため、ループ終端命令(3)が時刻T5の終端に命令キューQLへ格納される。
ここで、時刻T5にループ命令(1)がデコードされると、時刻T6でループ命令(1)のACフェーズからEX4フェーズまでの間、インターロックが発生する。従って、この間は、後続の命令のパイプライン処理が保留され、ループ先頭命令(2)のDEフェーズが処理されない。すなわち、DQフェーズが延ばされる。それに伴い、ループ外1命令(4)のIF4フェーズが延ばされる。
ループ命令(1)の実行が完了し、インターロックが終了すると、ループ先頭命令(2)のDQフェーズの終端すなわち時刻T6の終端で、ループエンド判定を行い、ループバックすなわちループ終端命令からループ先頭命令への分岐を開始する。同時に、命令キューQHに格納されているループ先頭命令(2)がループキューLQ1へコピーされ、IF4フェーズで命令キューへの格納を待っているループ外1命令(4)が退避キューLQ_hold1にコピーされる。
時刻T7では、命令キューQHに格納されているループ先頭命令(2)がデコードされ、一旦、命令キューQHが空くが、ループキューLQ1からループ先頭命令(2)が書き戻される。また、命令キューQLに格納されているループ終端命令(3)がループキューLQ2へコピーされる。
時刻T8では、命令キューQLに格納されているループ終端命令(3)がデコードされ、一旦、命令キューQLが空くが、ループキューLQ2からループ終端命令(3)が書き戻される。また、退避キューLQ_hold1に格納されているループ外1命令(4)がループキューLQ3へコピーされる。
時刻T9では、命令キューQHに格納されているループ先頭命令(2)がデコードされ、命令キューQHが空き、ループキューLQ3からループ外1命令(4)が格納される。
時刻T10では、命令キューQLに格納されているループ終端命令(3)がデコードされ、命令キューQLが空き、命令メモリから取り出されたループ外2命令(5)が格納される。
時刻T11では、命令キューQHに格納されているループ外1命令(4)がデコードされる。
時刻T12では、命令キューQLに格納されているループ外2命令(5)がデコードされる。
時刻T10では、命令キューQLに格納されているループ終端命令(3)がデコードされ、命令キューQLが空き、命令メモリから取り出されたループ外2命令(5)が格納される。
時刻T11では、命令キューQHに格納されているループ外1命令(4)がデコードされる。
時刻T12では、命令キューQLに格納されているループ外2命令(5)がデコードされる。
次に、図4を用いて、本実施の形態に係る比較例について説明する。図4は、比較例に係るプロセッサである。図1に示したプロセッサとの相違点は、退避キューLQ_hold1を備えていない点である。その他の構成は図1と同様であるため、説明を省略する。
次に、図5を用いて、比較例に係るプロセッサにおいて、各命令がパイプライン処理される例について説明する。図5は、比較例に係るプロセッサに図2(a)のパイプラインを適用して、図2(b)のプログラムを実行した場合のパイプライン処理を示している。
時刻T5までの処理は図3と同様であるため、説明を省略する。図3と同様に、時刻T6でループ命令(1)の実行が完了し、インターロックが終了すると、ループ先頭命令(2)のDQフェーズの終端すなわち時刻T6の終端で、ループエンド判定を行い、ループバックを開始する。同時に、命令キューQHに格納されているループ先頭命令(2)がループキューLQ1へコピーされ、IF4フェーズで命令キューへの格納を待っているループ外1命令(4)がQHへコピーされる。
時刻T7では、命令キューQHに格納されているループ先頭命令(2)がデコードされ、ループキューLQ1からループ先頭命令(2)が書き戻される。この書き戻しは、ループ先頭命令(2)をもう一度実行するために必要であるが、この際、命令キューQHに格納されていたループ外1命令(4)がループ先頭命令(2)に書き換えられてしまう。また、命令キューQLに格納されているループ終端命令(3)がループキューLQ2へコピーされる。
時刻T8では、命令キューQLに格納されているループ終端命令(3)がデコードされ、一旦、命令キューQLが空くが、ループキューLQ2からループ終端命令(3)が書き戻される。また、命令キューQHに格納されているループ先頭命令(2)がループキューLQ3へコピーされてしまう。
時刻T9では、命令キューQHに格納されているループ先頭命令(2)がデコードされ、命令キューQHが空き、ループキューLQ3からループ先頭命令(2)が書き戻されてしまう。
時刻T10では、命令キューQLに格納されているループ終端命令(3)がデコードされ、命令キューQLが空き、命令メモリから取り出されたループ外2命令(5)が格納される。
時刻T11では、目的とするループ外1命令(4)でなく、ループ先頭命令(2)がデコードされてしまう。
時刻T12では、ループ外2命令(5)がデコードされる。
時刻T10では、命令キューQLに格納されているループ終端命令(3)がデコードされ、命令キューQLが空き、命令メモリから取り出されたループ外2命令(5)が格納される。
時刻T11では、目的とするループ外1命令(4)でなく、ループ先頭命令(2)がデコードされてしまう。
時刻T12では、ループ外2命令(5)がデコードされる。
以上のように、比較例では、ループキューLQ3にループ外1命令(4)を格納することができないため、ループ処理を正しく実行することができない。一方、ループ処理を脱出した後、命令メモリ201からループ外1命令(4)を取り出せば、正しい処理は行えるものの、IF1フェーズからやり直すため、速度が低下してしまう。このような問題は、ループ処理を構成する命令の数が、ループキューの個数よりも小さければ、起こり得る。比較例の場合、ループ処理を構成する命令の数が2であり、ループキューの個数が3である。
これに対し、実施の形態1に係るプロセッサは、退避キューLQ_hold1を備えており、ループ外1命令(4)を格納しておくことができる。そして、所定のタイミングで退避キューLQ_hold1からループ外1命令(4)をループキューLQ3へコピーすることができる。そのため、高速かつ正確にループ処理を実行することができる。
実施の形態2
次に、図6を用いて、本発明の実施の形態2に係るプロセッサについて説明する。図1に示したプロセッサとの相違点は、退避キューLQ_holdの数と、ループキューLQの数である。その他の構成は図1と同様であるため、説明を省略する。
次に、図6を用いて、本発明の実施の形態2に係るプロセッサについて説明する。図1に示したプロセッサとの相違点は、退避キューLQ_holdの数と、ループキューLQの数である。その他の構成は図1と同様であるため、説明を省略する。
本実施の形態は、好ましい退避キューLQ_holdの数と、ループキューLQの数を一般化したものである。具体的には、命令フェッチに要するパイプライン段数すなわちIFフェーズの段数Nであり、ゼロオーバーヘッドでループバックを実現するために、(N−1)個のループキューLQ1、LQ2、LQ3、・・・、LQ(N−1)を備えている。また、当該プロセッサは、Q個の命令キューQ1、Q2、Q3、・・・、QQを備えるため、(N−Q−1)個の退避キューLQ_hold1、LQ_hold2、・・・、LQ_hold(N−Q−1)を備えている。
ただし、N≦Q+M+1の関係を満足する必要がある。ここで、Mはループ処理を構成する最小実行パケット数である。この式について説明する。
(1)上記の通り、(N−1)個のループキューが必要である。
(2)ここで、ループ先頭命令でループ終端判定がなされ、ループバックが開始されると仮定する。ループ終端判定の時点で、命令キューにはループ先頭命令からQ個の命令が保持されている。さらに、命令キューの手前には命令キューへの格納待ち状態のループ先頭命令から(Q+1)番目の命令が存在する。すなわち、ループキューへ格納可能なデータが(Q+1)個存在する。
(3)ループキューが(Q+1)個以上ある場合、(Q+1)以上のデータは、ループ処理を実行しながら命令キューに格納するデータから取得する必要がある。
(4)最小実行パケット数がMであるため、ループ終端判定後、ループバック前に、(M−1)パケット実行される。
(5)従って、{(N−1)−(Q+1)}個の命令データを(M−1)パケット以下で取得する必要がある。
すなわち、(N−1)−(Q+1)≦M−1
よって、N≦Q+M+1の関係を満足する必要がある。
(1)上記の通り、(N−1)個のループキューが必要である。
(2)ここで、ループ先頭命令でループ終端判定がなされ、ループバックが開始されると仮定する。ループ終端判定の時点で、命令キューにはループ先頭命令からQ個の命令が保持されている。さらに、命令キューの手前には命令キューへの格納待ち状態のループ先頭命令から(Q+1)番目の命令が存在する。すなわち、ループキューへ格納可能なデータが(Q+1)個存在する。
(3)ループキューが(Q+1)個以上ある場合、(Q+1)以上のデータは、ループ処理を実行しながら命令キューに格納するデータから取得する必要がある。
(4)最小実行パケット数がMであるため、ループ終端判定後、ループバック前に、(M−1)パケット実行される。
(5)従って、{(N−1)−(Q+1)}個の命令データを(M−1)パケット以下で取得する必要がある。
すなわち、(N−1)−(Q+1)≦M−1
よって、N≦Q+M+1の関係を満足する必要がある。
次に、本実施形態に係るプロセッサにおいて、各命令がパイプライン処理される具体例について説明する。図8は、プロセッサに図7(a)のパイプラインを適用して、図7(b)のプログラムを実行した場合のパイプライン処理を示している。
図7(a)のパイプラインは、高速動作に対応するために、IF1〜5、DQ、DE、AC(Address Calculation)、EX1〜4の12フェーズに分割されている。すなわちIFフェーズの段数N=5である。それ以外は図2(a)と同様である。また、実施の形態1と同様、命令キューの数Q=2である。図7(b)は、ここで実行されるプログラムの例である。図2(b)の最後にループ外3命令が追加されている。
図8の「命令データ」に示すように、各命令はIF5フェーズで命令データとして取り出され、所定の場所に格納される。
具体的には、時刻T3に、ループ命令(1)が命令データとして取り出され、命令キューQLへ格納される。
続いて、時刻T4に、ループ先頭命令(2)が命令キューQHへ格納される。
時刻T5に、ループ命令(1)のDEフェーズでループ命令(1)がデコードされると、命令キューQLが空くため、ループ終端命令(3)が時刻T5の終端に命令キューQLへ格納される。
具体的には、時刻T3に、ループ命令(1)が命令データとして取り出され、命令キューQLへ格納される。
続いて、時刻T4に、ループ先頭命令(2)が命令キューQHへ格納される。
時刻T5に、ループ命令(1)のDEフェーズでループ命令(1)がデコードされると、命令キューQLが空くため、ループ終端命令(3)が時刻T5の終端に命令キューQLへ格納される。
ここで、時刻T5にループ命令(1)がデコードされると、時刻T6でループ命令(1)のACフェーズからEX4フェーズまでの間、インターロックが発生する。従って、この間は、後続の命令のパイプライン処理が保留され、ループ先頭命令(2)のDEフェーズが処理されない。すなわち、DQフェーズが延びる。それに伴い、ループ外1命令(4)のIF5フェーズ及びループ外2命令(5)のIF4フェーズが延びる。
ループ命令(1)の実行が完了し、インターロックが終了すると、ループ先頭命令(2)のDQフェーズの終端すなわち時刻T6の終端で、ループエンド判定を行い、ループバックを開始する。同時に、命令キューQHに格納されているループ先頭命令(2)がループキューLQ1へコピーされ、IF5フェーズで命令キューへの格納を待っているループ外1命令(4)が退避キューLQ_hold1にコピーされる。
時刻T7では、命令キューQHに格納されているループ先頭命令(2)がデコードされ、一旦、命令キューQHが空くが、ループキューLQ1からループ先頭命令(2)が書き戻される。また、命令キューQLに格納されているループ終端命令(3)がループキューLQ2へコピーされる。さらに、命令メモリから取り出されたループ外2命令(5)が退避キューLQ_hold2に格納される。
時刻T8では、命令キューQLに格納されているループ終端命令(3)がデコードされ、一旦、命令キューQLが空くが、ループキューLQ2からループ終端命令(3)が書き戻される。また、退避キューLQ_hold1に格納されているループ外1命令(4)がループキューLQ3へコピーされる。
時刻T9では、命令キューQHに格納されているループ先頭命令(2)がデコードされ、命令キューQHが空き、ループキューLQ3からループ外1命令(4)が格納される。また、退避キューLQ_hold2に格納されているループ外2命令(5)がループキューLQ4へコピーされる。
時刻T10では、命令キューQLに格納されているループ終端命令(3)がデコードされ、命令キューQLが空き、ループキューLQ4からループ外2命令(5)が格納される。
時刻T11では、命令キューQHに格納されているループ外1命令(4)がデコードされ、命令キューQHが空き、命令メモリから取り出されたループ外3命令(6)が格納される。
時刻T12では、命令キューQLに格納されているループ外2命令(5)がデコードされる。
時刻T13では、命令キューQHに格納されているループ外3命令(6)がデコードされる。
時刻T10では、命令キューQLに格納されているループ終端命令(3)がデコードされ、命令キューQLが空き、ループキューLQ4からループ外2命令(5)が格納される。
時刻T11では、命令キューQHに格納されているループ外1命令(4)がデコードされ、命令キューQHが空き、命令メモリから取り出されたループ外3命令(6)が格納される。
時刻T12では、命令キューQLに格納されているループ外2命令(5)がデコードされる。
時刻T13では、命令キューQHに格納されているループ外3命令(6)がデコードされる。
以上説明したとおり、本実施の形態に係るプロセッサは、退避キューLQ_holdを備えており、ループ外命令を格納しておくことができる。そして、所定のタイミングで退避キューLQ_holdからループ外命令をループキューLQへコピーすることができる。そのため、高速かつ正確にループ処理を実行することができる。
100 フェッチ回路
201 命令メモリ
202 デコーダ
203 演算回路
204 プログラム制御回路
205 ロード・ストア回路
206 データメモリ
S1〜S4 セレクタ
QH、QL、Q1・・・QQ 命令キュー
LQ1、LQ2、LQ3・・・LQ(N−1) ループキュー
LQ_hold1、LQ_hold2・・・LQ_hold(N−Q−1) 退避キュー
201 命令メモリ
202 デコーダ
203 演算回路
204 プログラム制御回路
205 ロード・ストア回路
206 データメモリ
S1〜S4 セレクタ
QH、QL、Q1・・・QQ 命令キュー
LQ1、LQ2、LQ3・・・LQ(N−1) ループキュー
LQ_hold1、LQ_hold2・・・LQ_hold(N−Q−1) 退避キュー
Claims (7)
- 命令メモリと、
前記命令メモリに格納された命令をフェッチするフェッチ回路と、を備え、ループ処理をパイプライン処理する情報処理装置であって、
前記フェッチ回路が、
当該フェッチ回路から出力する命令を格納する命令キューと、
前記命令メモリから取り込んだ命令を格納する退避キューと、
前記命令キューから出力された命令と前記退避キューから出力された命令とからいずれかを選択するセレクタと、
前記セレクタに選択された命令を格納し、前記命令キューへ出力するループキューと、を備えるデータ処理装置。 - パイプライン処理の前記フェッチ回路におけるフェッチフェーズの数をNとすると、前記ループキューの個数が(N−1)個であることを特徴とする請求項1に記載のデータ処理装置。
- 前記命令キューの数をQとすると、前記退避キューの個数が(N−Q−1)個であることを特徴とする請求項2に記載のデータ処理装置。
- ループ処理を構成する最小実行パケット数をMとすると、N≦Q+M+1であることを特徴とする請求項3に記載のデータ処理装置。
- ループ処理を構成する最小実行パケット数が、前記ループキューの個数よりも小さいことを特徴とする請求項1〜4のいずれか一項に記載のデータ処理装置。
- ループ処理を構成する最小実行パケット数が2であることを特徴とする請求項5に記載のデータ処理装置。
- 命令メモリからフェッチした第1の命令を出力するための命令キューへ格納し、
前記命令メモリからフェッチした第2の命令を退避キューへ格納し、
前記命令キューへ格納された第1の命令と前記退避キューへ格納された第2の命令とのうちからいずれかを選択してループキューへ格納し、
前記選択により前記ループキューに格納された命令を前記命令キューへ出力するデータ処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008318064A JP2010140398A (ja) | 2008-12-15 | 2008-12-15 | データ処理装置及びデータ処理方法 |
US12/636,218 US20100153688A1 (en) | 2008-12-15 | 2009-12-11 | Apparatus and method for data process |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008318064A JP2010140398A (ja) | 2008-12-15 | 2008-12-15 | データ処理装置及びデータ処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010140398A true JP2010140398A (ja) | 2010-06-24 |
Family
ID=42241976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008318064A Withdrawn JP2010140398A (ja) | 2008-12-15 | 2008-12-15 | データ処理装置及びデータ処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100153688A1 (ja) |
JP (1) | JP2010140398A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955711A (zh) * | 2016-04-25 | 2016-09-21 | 浪潮电子信息产业股份有限公司 | 一种支持非阻塞缺失处理的缓冲方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100309566B1 (ko) * | 1992-04-29 | 2001-12-15 | 리패치 | 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 |
JP4610218B2 (ja) * | 2004-03-30 | 2011-01-12 | ルネサスエレクトロニクス株式会社 | 情報処理装置 |
US7475231B2 (en) * | 2005-11-14 | 2009-01-06 | Texas Instruments Incorporated | Loop detection and capture in the instruction queue |
JP2007207145A (ja) * | 2006-02-06 | 2007-08-16 | Nec Electronics Corp | ループ制御回路及びループ制御方法 |
-
2008
- 2008-12-15 JP JP2008318064A patent/JP2010140398A/ja not_active Withdrawn
-
2009
- 2009-12-11 US US12/636,218 patent/US20100153688A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20100153688A1 (en) | 2010-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8443170B2 (en) | Apparatus and method for performing SIMD multiply-accumulate operations | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
JP2011086298A (ja) | プログラム・フロー制御 | |
JP2006313422A (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
JP2019511056A (ja) | 複素数乗算命令 | |
JP2005182659A (ja) | Vliw型dsp,及びその動作方法 | |
JP7048612B2 (ja) | ベクトル生成命令 | |
JP3738253B2 (ja) | プログラム・ループを並列に処理する方法および装置 | |
JP2018005369A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP2010140398A (ja) | データ処理装置及びデータ処理方法 | |
JP2008299729A (ja) | プロセッサ | |
JP2004062909A (ja) | 複数の制御フローパスを有するソフトウェアパイプライン化ループのためのシステムおよび方法 | |
JP5013966B2 (ja) | 演算処理装置 | |
JP2924735B2 (ja) | パイプライン演算装置及びデコーダ装置 | |
JP2825315B2 (ja) | 情報処理装置 | |
JP2005134987A (ja) | パイプライン演算処理装置 | |
JP4151497B2 (ja) | パイプライン処理装置 | |
JP2002318689A (ja) | 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 | |
CN117453289A (zh) | 一种无流水线空泡的微处理器、集成电路以及电子设备 | |
JP2011128672A (ja) | スーパースカラプロセッサ及びその命令処理方法 | |
JP2012150589A (ja) | 演算装置 | |
JP2005182690A (ja) | プロセッサ及び命令指定アドレス生成方法 | |
JP2004302655A (ja) | パイプライン演算処理装置 | |
JPH11327929A (ja) | プログラム制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111202 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130419 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20130422 |