JP5330507B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP5330507B2
JP5330507B2 JP2011514332A JP2011514332A JP5330507B2 JP 5330507 B2 JP5330507 B2 JP 5330507B2 JP 2011514332 A JP2011514332 A JP 2011514332A JP 2011514332 A JP2011514332 A JP 2011514332A JP 5330507 B2 JP5330507 B2 JP 5330507B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
stream
processor
unit
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
Application number
JP2011514332A
Other languages
English (en)
Other versions
JPWO2010134329A1 (ja
Inventor
広之 森下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2011514332A priority Critical patent/JP5330507B2/ja
Publication of JPWO2010134329A1 publication Critical patent/JPWO2010134329A1/ja
Application granted granted Critical
Publication of JP5330507B2 publication Critical patent/JP5330507B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数の命令流を並列に実行するプロセッサにおいて、一の命令流に対する性能保証と、他の命令流に対する高い応答性とを両立する技術に関する。
近年、デジタル化された映像データや、音声データなどの圧縮、伸張等を行うメディア処理の処理効率を向上するために、非特許文献1において、複数のプログラムを同時に実行することにより、演算効率を向上させたマルチスレッドプロセッサが開示されている。
また、マルチスレッドプロセッサを用いた技術として、特許文献1がある。特許文献1では、複数の命令流(スレッド)それぞれについて、処理の優先順位を設定し、優先順位の高い命令流を優先的に処理する技術が開示されている。この技術により、命令流単位に必要とされる処理性能を動的に実現し、かつ全体の処理効率を向上させることができる。
特開平10−124316号公報
"A Multithreaded Processor Architecture with Simultaneous Instruction Issuing", In Proc. of ISS'91:International Symposium on Supercomputing, Fukuoka, Japan, pp.87-96, November 1991
ところで、処理すべき命令流には、画像処理などのように所定の時間までに処理が終了していることが要求される、つまり性能保証が要求されるものや、ユーザーからの指示に対する処理を行うもの(所定の時間までに処理が終了する必要のないもの)がある。
これらの命令流に対して、特許文献1に開示された技術を用いて、並列に処理を行おうとすると、性能保証が要求される命令流について、所定の時間までに処理の終了を保証するためには、他の命令流(性能保証が要求されない命令流)と比べて高い優先順位を設定する必要がある。
そうすると、性能保証が要求される命令流が優先的に実行され、性能保証が要求されない命令流は実行されないので、例えば、ユーザーからの指示があっても性能保証が要求される命令流が終了するまでは、その指示に係る処理が行われない。そのため、ユーザーは、自身がした指示に対する応答が遅いと感じ、不快な思いをする。
また、逆に、ユーザーの指示に対する応答を早くしようとするためには、当該命令が属する命令流の優先順位を他の命令流(性能保証が要求される命令流)よりも高くすることが考えられるが、そうすると、性能保証が要求される命令流について所定の時間に処理が終了することが保証できない。
そこで、本発明は、上記の問題に鑑みて、一の命令流に対する性能保証と、他の命令流に対する高い応答性とを両立することのできるプロセッサ、情報処理システム及び方法を提供することを目的とする。
上記にて示す目的を達成するために、本発明は、L個(Lは2以上の整数)の演算器を有するプロセッサであって、M個(Mは2以上の整数)の命令流各々が区別して入力され、各命令流を構成するZ個(Zは2以上の整数であり、M×ZはL以上であることを満たす)の命令を格納するためのM×Z個の命令記憶領域を含む命令バッファと、前記命令バッファ内の前記M×Z個の命令記憶領域に順序を付けた情報である順序情報を保持する順序情報保持手段と、前記命令バッファの前記M×Z個の命令記憶領域に格納された命令を抽出するための抽出手段と、実行可能状態となっており前記M×Z個の命令記憶領域に格納されている命令全てのうちから、前記順序情報に従った順序で、L個の命令を前記抽出手段に抽出させて、抽出された命令毎に別の演算器に入力する制御手段とを備えることを特徴とする。
上記にて示す構成によると、プロセッサは、M×Z個の命令記憶領域に順序を付けた順序情報に基づいて、実行可能状態でありM×Z個の命令記憶領域に格納されている命令全てのうちからL個の命令を抽出するので、一の命令流の命令と、他の命令流の命令とを同時に抽出することができる。そのため、プロセッサは、例えば、一の命令流が性能保証が要求される命令流であり、他の命令流が性能保証が要求されない命令流であるとすると、他の命令流の命令は、一の命令流が終了するまで待つ必要はないので、一の命令流に対する性能保証と、他の命令流に対する高い応答性とを両立することができる。
プロセッサ10の構成を示す図である。 各命令バッファ103〜105、及び発行命令決定部106の構成を示す図である。 命令発行前と発行後における命令バッファの保持内容の変化を示す図である。 優先度情報テーブル300のデータ構造の一例を示す図である。 第1の実施の形態において、発行すべき命令を決定する処理の動作を示す流れ図である。 第1の実施の形態において、第1命令流及び第2命令流を用いた並列処理を行った場合での各命令の割り当て(発行)の動作イメージを示す図である。 プロセッサ10aの構成を示す図である。 各命令バッファ603〜605、及び発行命令決定部606の構成を示す図である。 (a)は更新前の優先度情報テーブル800のデータ構造の一例を示し、(b)は更新後の優先度情報テーブル800aのデータ構造の一例を示す図である。 第2の実施の形態において、発行すべき命令を決定する処理の動作を示す流れ図である。 第2の実施の形態において、優先度情報テーブル800を更新する処理の動作を示す流れ図である。 第2の実施の形態において、第1命令流及び第2命令流を用いた並列処理を行った場合での各命令の割り当て(発行)の動作イメージを示す図である。 プロセッサ10bの構成を示す図である。 各命令バッファ1103〜1105、及び発行命令決定部1106の構成を示す図である。 (a)は更新前の優先度情報テーブル1300のデータ構造の一例を示し、(b)は更新後の優先度情報テーブル1300aのデータ構造の一例を示す図である。 第3の実施の形態において、発行すべき命令を決定する処理の動作を示す流れ図である。 優先度情報テーブル1300を更新する第1更新処理の動作を示す流れ図である。 優先度情報テーブル1300を更新する第2更新処理の動作を示す流れ図である。 第3の実施の形態において、第1命令流及び第2命令流を用いた並列処理を行った場合での各命令の割り当て(発行)の動作イメージを示す図である。 映像処理システム1600の構成の一例を示す図である。
1.第1の実施の形態
以下本発明の実施の形態について、図面を参照しながら説明する。
1.1 構成
図1は、本発明の実施の形態1におけるプロセッサ10の構成を示すブロック図である。
プロセッサ10は、N(Nは2以上の整数)個の命令流(N個のスレッド)を同時に独立して実行するプロセッサであり、命令メモリ101と、命令群決定部102と、N個の命令バッファ(第1命令バッファ103、第2命令バッファ104、・・・、第N命令バッファ105)と、発行命令決定部106と、優先度決定部107と、N個のレジスタファイル(第1レジスタファイル108、第2レジスタファイル109、・・・、第Nレジスタファイル110)と、演算器群111と、ライトバックバス112を備えている。
ここで、各命令バッファとレジスタファイルは1対1に対応付けられ、N個の論理プロセッサを構成する。
また、本実施の形態では、プロセッサ10は、同時に4つの命令の実行が可能であるとする。
(1)命令メモリ101
命令メモリ101は、プロセッサ10において実行される命令を保持するメモリであり、N本の独立に実行される命令流(スレッド)を保持している。
(2)命令群決定部102
命令群決定部102は、命令メモリ101から、各命令流に属する命令を読み出し、デコードを行い、当該命令が割り当てられている命令バッファに書き込む。
(3)第1命令バッファ103から第N命令バッファ105
第i命令バッファ(iは1以上N以下の整数)は、i番目の命令流(以下、第i命令流という。)に属する命令を受け取り、保持するものである。
具体的には、第1命令バッファ103は、図2に示すように、第1命令保持部201と第1命令流スケジューラ202とを有している。
第1命令保持部201は、4つの命令を保持するための領域である第1〜第4の記憶領域201a〜201dを有している。各命令は、実行順序に基づいて、第1〜第4の記憶領域201a、201b、201c、201dへと順次格納される。例えば、図3に示すように、第1の記憶領域201aで保持されている命令a1が実行(発行)されると、第2〜第4の記憶領域201b、201c、201dそれぞれで保持されていた命令a2からa4は、1つずつシフトし、空いた第4の記憶領域201dに新たな命令a5が格納される。
第1命令流スケジューラ202は、第1命令保持部201が有する4つの第1〜第4の記憶領域201a〜201d毎に対応付けられたフラグを有している。ここで、フラグは、対応付けられた記憶領域で記憶されている命令が発行可能な状態であるか否かを示すものである。例えば、外部(例えば、命令群決定部102)が、各命令のフロー依存に基づいてマシンサイクルに発行可能な命令を検出し、発行可能な命令に対して、発行可能であることを示す値をフラグに設定する。
また、第2命令バッファ104についても、第2命令保持部203と第2命令流スケジューラ204とを有しており、第N命令バッファ105についても、第N命令保持部205と第N命令流スケジューラ206とを有している。これらの構成要素は、第1命令バッファ103における構成要素と同様のものであるので、ここでの説明は省略する。
(4)優先度決定部107
優先度決定部107は、発行命令決定部106において発行する命令を決定する際に用いる優先度情報テーブル300を保持している。
優先度情報テーブル300は、例えば、図4に示すように、優先度301、命令流302及び命令番号303とから構成され、N個の命令バッファそれぞれが有する合計4×N個分のテーブル要素を有している。
優先度301は、N個の命令バッファそれぞれが有する合計4×N個の記憶領域について、読み出す順序を示す値である。
命令流302は、命令流を識別する値である。ここでは、値i(iは1以上N以下の整数)は、第i命令流を示すものとする。
命令番号303は、命令流302で示される第i命令流の命令が保持されている第i命令保持部における記憶領域を識別する値である。ここでは、値n(nは1以上4以下の整数)は、第nの記憶領域を示すものとする。
例えば、第1優先度となる命令は、テーブル要素304に示され、ここでは、第1命令流の第1の記憶領域201aに格納された命令となる。
また、第2優先度となる命令は、テーブル要素305に示され、ここでは、第2命令流の第1の記憶領域203aに格納された命令となる。
第3優先度となる命令は、テーブル要素306に示され、ここでは、第2命令流の第2の記憶領域201bに格納された命令となる。
第4優先度となる命令は、テーブル要素307に示され、ここでは、第2命令流の第3の記憶領域201cに格納された命令となる。
第5優先度となる命令は、テーブル要素308に示され、ここでは、第1命令流の第2の記憶領域201bに格納された命令となる。
ここで、優先度情報テーブル300における各命令の優先度は、予め定められているものとする。また、その設定方法は、例えば、第1命令流が、一定の性能保証が求められる命令流であって、かつ、所定時間内(例えば、時間t内)で処理を完了すべきものである場合、第1命令流については、命令の発行のタイミング(マシンサイクル)毎に、時間tで処理が完了するための最小数の命令が発行できるように、優先度を割り付ける。ここで、第1命令流はマシンサイクル毎に1命令を発行することで、所定の時間内に処理が完了する場合を考える。本実施の形態では4つの命令を同時に実行するので、図4に示すように、第1命令流の命令が優先的に常に発行できるように、上位4つの優先度のうち最も高い優先度を1つ割り付けることで、マシンサイクル毎に必ず第1命令流の1命令が発行されることとなる。
(5)発行命令決定部106
発行命令決定部106は、第1命令バッファ103から第N命令バッファ105からマシンサイクル毎に発行する命令を決定するものである。
発行命令決定部106は、第1命令流スケジューラ202から第N命令流スケジューラ206と、優先度情報テーブル300とに基づいて、実行可能状態となっており各記憶領域に格納されている命令全てのうち、優先度情報テーブル300で示される順序に従って、4個の命令を選択し、選択した命令それぞれを個別の演算器へ出力する。
ここで、図2において、発行命令決定部106のハードウェア構成を示す。
発行命令決定部106は、第1命令決定部211から第4命令決定部214と、命令選択部215と、第1命令抽出部221から第4命令抽出部224とを有している。
(5−1)命令選択部215
命令選択部215は、第1命令流スケジューラ202から第N命令流スケジューラ206と、優先度情報テーブル300とに基づいて、実行可能状態となっており各記憶領域に格納されている命令全てのうち、優先度情報テーブル300で示される順序に従って、選択すべき4個の命令を特定する。具体的には、第1命令バッファ103から第N命令バッファ105それぞれから各命令バッファ内の発行可能な命令数を示す信号、つまり実行可能状態となっている命令数を示す信号241〜243を受け取り、優先度情報テーブル300で示される順序に従って、選択すべき4個の命令を特定する。
そして、命令選択部215は、第1命令決定部211から第4命令決定部214それぞれに対して、当該命令決定部で取得すべき命令を示す発行命令選択信号251〜254を出力する。発行命令選択信号には、抽出すべき命令を示す情報、例えば、抽出すべき命令が保持されている命令バッファ及びその記憶領域を示す情報が含まれている。
(5−2)第1命令抽出部221から第4命令抽出部224
第n命令抽出部(nは1以上4以下の整数)は、第1命令バッファ103から第N命令バッファ105それぞれの第nの記憶領域で保持されている命令を抽出するためのものである。
以下、具体例として、第1命令バッファ103からの命令抽出について説明する。
第1命令抽出部221は接続線231と、第2命令抽出部222は接続線232と、第3命令抽出部223は接続線233と、第4命令抽出部224は接続線234と、それぞれ接続されている。ここで、接続線231は第1の記憶領域201aと、接続線232は第2の記憶領域201bと、接続線233は第3の記憶領域201cと、接続線234は第4の記憶領域201dと、それぞれ接続されているものとする。
第1命令抽出部221は、第1の記憶領域で保持されている命令を、接続線231を介して読み出し、抽出の指示のあった命令決定部へ出力する。
第2命令抽出部222から第4命令抽出部224それぞれについても同様に、対応する記憶領域で保持されている命令を、当該命令が保持されている記憶領域と接続された接続線を介して読み出し、抽出の指示のあった命令決定部へ出力する。
(5−3)第1命令決定部211から第4命令決定部214
第1命令決定部211から第4命令決定部214それぞれは、演算器群111が有する演算器と1対1に対応付けられている。
以下、第1命令決定部211から第4命令決定部214それぞれの機能について説明する。
第n命令決定部(nは1以上4以下の整数)は、命令選択部215から受け取った発行命令選択信号に基づいて、どの命令バッファのどの記憶領域から命令を取得するかを特定し、該当する第m命令抽出部(mは1以上4以下の整数)に対して、抽出すべき命令を抽出するよう制御する。
そして、第n命令決定部は、第m命令抽出部が抽出した命令を取得すると、取得した命令を対応付けられた演算器へ出力する。
(6)第1レジスタファイル108から第Nレジスタファイル110
第iレジスタファイル(iは1以上N以下の整数)は、第i命令バッファに保持された命令流を実行することによって、読み出し及び書き込みの対象とされるデータを保持するレジスタ群である。
(7)演算器群111
演算器群111は、加算器や乗算器などからなる複数の演算器を含むものである。なお、ここでは、演算器群111は、4つの演算器(演算器111a〜111d)を有しているものとする。また、演算器111aは第1命令決定部211と、演算器111bは第2命令決定部212と、演算器111cは第3命令決定部213と、演算器111dは第4命令決定部214と、それぞれ対応付けられているものとする。
演算器が処理する命令には、当該命令が属する命令流を識別する情報が含まれており、当該情報に基づいて対応するレジスタファイルへ演算結果を出力する。
(8)ライトバックバス112
ライトバックバス112は、演算器群111からの出力を第1レジスタファイル108〜第Nレジスタファイル110に書き戻すためのバスである。
1.2 動作
ここでは、発行すべき命令を決定する動作について図5に示す流れ図を用いて説明する。
命令選択部215は、一のマシンサイクルにおいて発行する命令を決定する際に、変数の初期化(i=1;j=1;k=4)を行う(ステップS5)。ここで、変数iは、マシンサイクルにおいて発行する命令数をカウントするカウンタである。変数jは、図4の優先度情報テーブル300から情報を読み出すためのポインタを示す。変数kは、マシンサイクルにおいて発行可能な命令の最大数を示し、本実施例においては4である。
命令選択部215は、変数iの値が変数k以下であるか否か、つまり発行する命令数が最大値以下であるか否かを判断する(ステップS10)。
変数iの値が変数k以下であると判断する場合(ステップS10における「Yes」)、命令選択部215は、優先度情報テーブル300のj番目のエントリを読み出し、その読み出しに成功したか否かを判断する(ステップS15)。
j番目のエントリの読み出しに成功したと判断した場合(ステップS15における「Yes」)、命令選択部215は、取得したj番目のエントリが示す命令流の命令が発行可能であるか否を判断する(ステップS20)。
発行可能でないと判断する場合には(ステップS20における「No」)、変数jに値1が加算され(ステップS25)、処理はステップS15へ戻る。
発行可能であると判断する場合には(ステップS20における「Yes」)、命令選択部215は、第i命令決定部に対して発行命令選択信号を出力する。発行命令選択信号を受信した第i命令決定部は、発行すべき命令が保持されている記憶領域に応じた命令抽出部に当該命令を抽出させて、命令抽出部で抽出された命令を対応する演算器へ出力する(ステップS30)。
その後、変数iに値1が、変数jに値1が、それぞれ加算され(ステップS35)、処理はステップS10へ戻る。
また、変数iの値が変数k以下でないと判断する場合(ステップS10における「No」)、及び j番目のエントリの読み出しに失敗した、つまりポインタが示す位置にエントリが無いと判断した場合(ステップS15における「No」)、処理は終了する。
1.3 動作イメージ
図6は、第1の実施の形態において、第1命令流及び第2命令流を用いた並列処理を行った場合での各命令の割り当て(発行)の動作イメージである。
ここで、図6に示す動作イメージでは、縦軸に時間、横軸に命令の並列度を示している。
ブロック501は、第1命令流の命令実行の様子を示し、常に最優先で1命令の発行が行われていることを示している。
ブロック502は、第2命令流の命令実行の様子を示し、第1命令流で使用されない並列度を用いて3命令が実行されていることを示す。
例えば、第1命令流が一定の性能保証が求められる命令流であって、かつ、所定時間内(例えば、時間t内)において常に1命令が発行されることで、その性能を満たすことができる場合、本実施例により、性能保証の条件を満たしつつ、他の命令流の応答性を高く保つことができる。
2.第2の実施の形態
ここでは、第2の実施の形態に係るプロセッサ10aについて、第1の実施の形態に係るプロセッサ10と異なる点を中心に説明する。
図7は、第2の実施の形態におけるプロセッサ10aの構成を示すブロック図である。
プロセッサ10aは、N(Nは2以上の整数)個の命令流(N個のスレッド)を同時に独立して実行するプロセッサであり、命令メモリ601と、命令群決定部602と、N個の命令バッファ(第1命令バッファ603、第2命令バッファ604、…、第N命令バッファ605)と、発行命令決定部606と、優先度決定部607と、N個のレジスタファイル(第1レジスタファイル608、第2レジスタファイル609、…、第Nレジスタファイル610)と、演算器群611と、ライトバックバス612と、優先度更新部613とを備えている。
ここで、各命令バッファとレジスタファイルは1対1に対応付けられ、N個の論理プロセッサを構成する。
また、本実施の形態では、プロセッサ10aは、第1の実施の形態で示すプロセッサ10と同様に、同時に4つの命令の実行が可能であるとする。
(1)命令メモリ601
命令メモリ601は、第1の実施の形態で示す命令メモリ101と同様に、プロセッサ10aにおいて実行される命令を保持するメモリであり、N本の独立に実行される命令流(スレッド)を保持している。
(2)命令群決定部602
命令群決定部602は、第1の実施の形態で示す命令群決定部102と同様であるので、ここでの説明は省略する。
(3)第1命令バッファ603から第N命令バッファ605
第i命令バッファ(iは1以上N以下の整数)は、i番目の命令流(以下、第i命令流という。)に属する命令を受け取り、保持するものである。
具体的には、第1命令バッファ603は、図8に示すように、第1命令保持部701と第1命令流スケジューラ702とを有している。なお、第1命令保持部701及び第1命令流スケジューラ702のそれぞれは、第1の実施の形態で示す第1命令保持部201と第1命令流スケジューラ202のそれぞれと同様であるので、ここでの説明は省略する。
また、第2命令バッファ604についても、第2命令保持部703と第2命令流スケジューラ704とを有しており、第N命令バッファ605についても、第N命令保持部705と第N命令流スケジューラ706とを有している。これら構成要素についても、第1の実施の形態と同様であるので、ここでの説明は省略する。
(4)優先度決定部607
優先度決定部607は、発行命令決定部606において発行する命令を決定する際に用いる優先度情報テーブル800を保持している。
優先度情報テーブル800は、例えば、図9に示すように、優先度801、命令流802及び命令番号803とから構成され、N個の命令バッファそれぞれが有する合計4×N個分のテーブル要素を有している。優先度801、命令流802及び命令番号803のそれぞれは、優先度301、命令流302及び命令番号303と同様であるので、ここでの説明は省略する。
ここで、優先度情報テーブル800は、初期状態として、第1の実施の形態で示した設定方法により各命令の優先度(発行する優先順序)が設定されているものとする。
(5)優先度更新部613
優先度更新部613は、優先度決定部607で保持している優先度情報テーブル800を一定の条件下で更新するものである。
具体的には、優先度更新部613は、ソフトウェアからの指示によって、優先度決定部607で保持している優先度情報を記憶している優先度情報テーブル800を更新する。
通常、優先度決定部607で保持している優先度情報テーブル800の各エントリ(優先度情報)は、メモリアドレスまたは制御レジスタにマップされているので、優先度更新部613は、ソフトウェアからの指示としてマルチスレッドプロセッサからのメモリアクセス命令、または、制御レジスタアクセス命令を受け取ると、受け取った命令に基づいて優先度情報テーブル800を更新する。例えば、優先度更新部613は、マルチスレッドプロセッサのメモリアクセス命令または制御レジスタアクセス命令の書き込みアドレスと書き込みデータを受け取り、書き込みアドレスが優先度情報テーブル800のエントリのいずれかを示すものであれば、当該エントリに書き込みデータを書き込む。ここで、書き込みデータは、当該エントリに書き込むべき更新後の優先度情報である。また、ソフトウェアの指示は、例えば、所定の命令が発行された(プログラム上実行された)後に、実行されるよう予め書き込まれたプログラムにより実行される。
なお、ソフトウェアの指示により、1度に複数のエントリを更新してもよい。
ここで、優先度情報テーブル800を更新した場合の更新結果を、優先度情報テーブル800aとして図9(b)に示す。この例は、優先度更新部613は、ソフトウェアの指示により、更新前の優先度情報テーブル800における優先度5である優先度情報808の優先度を2として、更新したものである。その結果、更新前の優先度情報808は、更新後には、優先度2である優先度情報810へと更新され、更新前の優先度情報805から807それぞれは、優先度の順位が1つずつ下がったものとなり、更新後の優先度情報811から813それぞれに対応する。
なお、以下において、優先度情報テーブル1300を用いて各構成要素について説明する。
(6)発行命令決定部606
発行命令決定部606は、第1命令バッファ103から第N命令バッファ105からマシンサイクル毎に発行する命令を決定するものである。
発行命令決定部606は、第1命令流スケジューラ202から第N命令流スケジューラ206と、優先度情報テーブル800とに基づいて、実行可能状態となっており各記憶領域に格納されている命令全てのうち、優先度情報テーブル800で示される順序に従って、4個の命令を選択し、選択した命令それぞれを個別の演算器へ出力する。
ここで、図8において、発行命令決定部606のハードウェア構成を示す。
発行命令決定部606は、第1命令決定部711から第4命令決定部714と、命令選択部715と、第1命令抽出部721から第4命令抽出部724とを有している。
(6−1)命令選択部715
命令選択部715は、第1の実施の形態で示す命令選択部215と同様のものである。具体的には、第1命令バッファ603から第N命令バッファ605それぞれから各命令バッファ内の発行可能な命令数を示す信号、つまり実行可能状態となっている命令数を示す信号741〜743を受け取り、優先度情報テーブル800で示される順序に従って、選択すべき4個の命令を特定する。
そして、命令選択部715は、第1命令決定部711から第4命令決定部714それぞれに対して、当該命令決定部で取得すべき命令を示す発行命令選択信号751〜754を出力する。発行命令選択信号には、抽出すべき命令を示す情報、例えば、抽出すべき命令が保持されている命令バッファ及びその記憶領域を示す情報が含まれている。
(6−2)第1命令抽出部721から第4命令抽出部724
第1命令抽出部721から第4命令抽出部724のそれぞれは、第1の実施の形態で示す第1命令抽出部221から第4命令抽出部224のそれぞれと同様であるので、ここでの説明は省略する。
(6−3)第1命令決定部711から第4命令決定部714
第1命令決定部211から第4命令決定部214それぞれは、演算器群611が有する演算器と1対1に対応付けられており、その機能は、第1の実施の形態で示す第1命令決定部211から第4命令決定部214それぞれと同様であるので、ここでの説明は省略する。
(7)第1レジスタファイル608から第Nレジスタファイル610
第1レジスタファイル608から第Nレジスタファイル610のそれぞれは、第1の実施の形態で示す第1レジスタファイル108から第Nレジスタファイル110と同様であるので、ここでの説明は省略する。
(8)演算器群611
演算器群611は、加算器や乗算器などからなる複数の演算器を含むものである。なお、ここでは、演算器群611は、4つの演算器(演算器611a〜611d)を有しているものとする。また、演算器611aは第1命令決定部711と、演算器611bは第2命令決定部712と、演算器611cは第3命令決定部713と、演算器611dは第4命令決定部714と、それぞれ対応付けられているものとする。
演算器が処理する命令には、当該命令が属する命令流を識別する情報が含まれており、当該情報に基づいて対応するレジスタファイルへ演算結果を出力する。
(9)ライトバックバス612
ライトバックバス612は、演算器群611からの出力を第1レジスタファイル608〜第Nレジスタファイル610に書き戻すためのバスである。
2.2 動作
(1)発行命令の決定の動作
ここでは、発行すべき命令を決定する動作について図10に示す流れ図を用いて説明する。ここでは、説明の便宜上、利用する優先度情報テーブルは、優先度情報テーブル800とする。なお、更新された優先度情報テーブル800aを用いた場合でも、処理動作は同じである。
命令選択部715は、一のマシンサイクルにおいて発行する命令を決定する際に、変数の初期化(i=1;j=1;k=4)を行う(ステップS100)。ここで、変数iは、マシンサイクルにおいて発行する命令数をカウントするカウンタである。変数jは、優先度情報テーブル800から情報を読み出すためのポインタを示す。変数kは、マシンサイクルにおいて発行可能な命令の最大数を示し、本実施例においては4である。
命令選択部715は、変数iの値が変数k以下であるか否か、つまり発行する命令数が最大値以下であるか否かを判断する(ステップS105)。
変数iの値が変数k以下であると判断する場合(ステップS105における「Yes」)、命令選択部715は、優先度情報テーブル800のj番目のエントリを読み出し、その読み出しに成功したか否かを判断する(ステップS110)。
j番目のエントリの読み出しに成功したと判断した場合(ステップS110における「Yes」)、命令選択部715は、取得したj番目のエントリが示す命令流の命令が発行可能であるか否を判断する(ステップS115)。
発行可能でないと判断する場合には(ステップS115における「No」)、変数jに値1が加算され(ステップS120)、処理はステップS110へ戻る。
発行可能であると判断する場合には(ステップS115における「Yes」)、命令選択部715は、第i命令決定部に対して発行命令選択信号を出力する。発行命令選択信号を受信した第i命令決定部は、発行すべき命令が保持されている記憶領域に応じた命令抽出部に当該命令を抽出させて、命令抽出部で抽出された命令を対応する演算器へ出力する(ステップS125)。
その後、変数iに値1が、変数jに値1が、それぞれ加算され(ステップS130)、処理はステップS105へ戻る。
また、変数iの値が変数k以下でないと判断する場合(ステップS105における「No」)、及び j番目のエントリの読み出しに失敗した、つまりポインタが示す位置にエントリが無いと判断した場合(ステップS110における「No」)、処理は終了する。
(2)優先度情報テーブルの更新の動作
ここでは、優先度情報テーブルの更新について、図11に示す流れ図を用いて説明する。
優先度更新部613は、ソフトウェアから更新に係る指示(優先度情報テーブル800のエントリのいずれかを示すメモリアクセス命令または制御レジスタアクセス命令)を受け取ったか否かを判断する(ステップS200)。
受け取ったと判断する場合には(ステップS200における「Yes」)。優先度更新部613は、受け取った指示に基づいて、優先度情報テーブル800を更新する(ステップS205)。
優先度情報テーブル800の更新後、及び更新に係る指示を受け取っていないと判断する場合(ステップS200における「No」)、処理は、ステップS200へと戻り、更新に係る指示の受け付け待ち状態となる。
なお、更新に係る指示は、上述したように、所定の命令が発行された(プログラム上実行された)後に発行される。
2.3 動作イメージ
図12は、第2の実施の形態における第1の命令流及び第2の命令流を用いた並列処理を行った場合での各命令の割り当て(発行)の動作イメージである。
ここで、図12に示す動作イメージでは、縦軸に時間、横軸に命令の並列度を示している。
ブロック1001は、第1命令流の命令実行の様子を示し、t/2までは、図9(a)で示す優先度情報テーブル800の優先順位に従って、常に最優先で1命令の発行が行われている。
また、ブロック1002は、第2命令流の命令実行の様子を示し、t/2までは、第1命令流で使用されない並列度を用いて命令が実行されていることを示す。
t/2の時点で、ソフトウェアの指示により、図9(a)で示す優先度情報テーブル800が図9(b)で示す優先度情報テーブル800aに更新されると、第1命令流の命令では、図9(b)で示す優先度情報テーブル800aの優先順位に従って、常に最優先で2つの命令の発行が行われ、第2命令流では2つの命令の発行が行われることとなる。
これにより、例えば、第1命令流が一定の性能保証が求められる命令流であって、かつ、1命令の並列度を与えることで、その性能を満たすことができる場合、本実施例により、性能保証の条件を満たしつつ、他の命令流の応答性を高く保つことができる。
3.第3の実施の形態
ここでは、第3の実施の形態に係るプロセッサ10bについて、第1及び第2の実施の形態に係るプロセッサ10及び10aと異なる点を中心に説明する。
図13は、第3の実施の形態におけるプロセッサ10bの構成を示すブロック図である。
プロセッサ10bは、N(Nは2以上の整数)個の命令流(N個のスレッド)を同時に独立して実行するプロセッサであり、命令メモリ1101と、命令群決定部1102と、N個の命令バッファ(第1命令バッファ1103、第2命令バッファ1104、…、第N命令バッファ1105)と、発行命令決定部1106と、優先度決定部1107と、N個のレジスタファイル(第1レジスタファイル1108、第2レジスタファイル1109、…、第Nレジスタファイル1110)と、演算器群1111と、ライトバックバス1112と、優先度更新部1113と、性能監視部1114とを備えている。
ここで、各命令バッファとレジスタファイルは1対1に対応付けられ、N個の論理プロセッサを構成する。
また、本実施の形態では、プロセッサ10bは、第1及び第2の実施の形態で示すプロセッサ10、10aと同様に、同時に4つの命令の実行が可能であるとする。
(1)命令メモリ1101
命令メモリ1101は、第1の実施の形態で示す命令メモリ101と同様に、プロセッサ10bにおいて実行される命令を保持するメモリであり、N本の独立に実行される命令流(スレッド)を保持している。
(2)命令群決定部1102
命令群決定部1102は、第1の実施の形態で示す命令群決定部102と同様であるので、ここでの説明は省略する。
(3)第1命令バッファ1103から第N命令バッファ1105
第i命令バッファ(iは1以上N以下の整数)は、i番目の命令流(以下、第i命令流という。)に属する命令を受け取り、保持するものである。
具体的には、第1命令バッファ1103は、図14に示すように、第1命令保持部1201と第1命令流スケジューラ1202とを有している。なお、第1命令保持部1201及び第1命令流スケジューラ1202のそれぞれは、第1の実施の形態で示す第1命令保持部201と第1命令流スケジューラ202のそれぞれと同様であるので、ここでの説明は省略する。
また、第2命令バッファ1104についても、第2命令保持部1203と第2命令流スケジューラ1204とを有しており、第N命令バッファ1205についても、第N命令保持部1205と第N命令流スケジューラ1206とを有している。これら構成要素についても、第1の実施の形態と同様であるので、ここでの説明は省略する。
(4)優先度決定部1107
優先度決定部1107は、発行命令決定部1106において発行する命令を決定する際に用いる優先度情報テーブル1300を保持している。
優先度情報テーブル1300は、例えば、図15(a)に示すように、優先度1301、命令流1302及び命令番号1303とから構成され、N個の命令バッファそれぞれが有する合計4×N個分のテーブル要素を有している。優先度1301、命令流1302及び命令番号1303のそれぞれは、優先度301、命令流302及び命令番号303と同様であるので、ここでの説明は省略する。
ここで、優先度情報テーブル1300は、初期状態として、第1の実施の形態で示した設定方法により各命令の優先度(発行する優先順序)が設定されているものとする。
(5)性能監視部1114
性能監視部1114は、N個の命令流のそれぞれの実行命令数をダウンカウントすることができる命令流に対応したN個の実行命令数カウンタと、プロセッサ10bのマシンサイクルをダウンカウントすることができる1個のサイクルカウンタを備える。
N個の実行命令数カウンタは、対応する命令流の命令がプロセッサ10b上で実行されると、命令が実行された数だけダウンカウントされる。なお、動作開始時には、N個の実行命令数カウンタそれぞれには、初期値が設定されるものとする。
N個の実行命令数カウンタのいずれかのカウンタ値が0になると、性能監視部1114は優先度更新部1113にカウンタ値が0になったことを通知する。このとき、優先度更新部1113に通知される情報(以下、第1通知情報という)には、カウンタ値が0となった命令流を示す識別子(命令流ID)を含むものとする。
1個のサイクルカウンタは、プロセッサ10bのマシンサイクルが1経過するごとにダウンカウントされる。カウント値が0になると、性能監視部1114は、サイクルカウンタを、初期値を記憶している1個の初期値レジスタの値によって初期化する。また、性能監視部1114は、初期値を記憶しているN個の実行命令数カウンタを、初期値レジスタの値によって初期化する。
なお、各種カウンタの値を初期化するにあたって、初期値レジスタの値を用いるが、これらの初期値レジスタの値は、プロセッサ上でどの様なソフトウェアをいくつ実行させるか必要があるか等のシステム構成によって定まり、システム設計者によって定められ、システム制御ソフトウェアによって書き込まれる。
サイクルカウンタのカウンタ値が0になると、性能監視部1114は優先度更新部1113に通知する。以下、サイクルカウンタのカウンタ値が0になった旨の通知を第2通知情報という。また、性能監視部1114は、第2通知情報を優先度更新部1113へ通知すると、実行命令数カウンタを初期値に初期化する。
(6)優先度更新部1113
優先度更新部1113は、優先度決定部607で保持している優先度情報テーブル800を一定の条件下で更新するものである。
優先度更新部1113は、第1通知情報を受け付けると、優先度情報テーブルのエントリの優先度を更新する。例えば、優先度更新部1113は、N個の実行命令数カウンタのいずれかのカウンタ値が0になると、性能監視部1114からカウンタ値が0になった旨、及びその命令流IDを含む第1通知情報を受け取り、受け取った命令流IDに対応する命令流の優先度を最低となるように優先度情報テーブル1300を更新する。
また、優先度更新部1113は、第2通知情報を受け付けると、優先度情報テーブルのエントリの優先度を初期状態の内容へと更新する。例えば、優先度更新部1113は、サイクルカウンタのカウンタ値が0になると、性能監視部1114から第2通知情報を受け取り、全ての命令流の優先度情報が記憶されているテーブルのエントリの優先度を初期状態に戻す。
ここで、優先度情報テーブル1300を更新した場合の更新結果を、優先度情報テーブル1300aとして図15(b)に示す。ここでは、第1命令流と第2命令流の2つの命令流のみは実行されるものとする。この例は、優先度更新部1113が、性能監視部1114から、第1通知情報を受け取った場合のものであり、第1通知情報には、実行命令数カウンタの値が0となった命令流は第1命令流であるとする。
優先度情報テーブル1300は、優先度更新部1113により、第1命令流の優先度を最低となるよう、つまり、ここでは、第2命令流の各命令が優先的に発行されるように、更新される。
この更新により、優先度情報テーブル1300で示す第2命令流の各優先度情報1305から1307の優先順位が、更新後では1つずつ上がり更新後の優先度情報テーブル1300aで示すように、優先順位が1から3である各優先度情報1309から1311へと変更される。また、第1命令流の各優先度情報1304の優先順位は当該更新により1から4へと変更された優先度情報1312となる。
なお、以下において、優先度情報テーブル1300を用いて各構成要素について説明する。
(7)発行命令決定部1106
発行命令決定部1106は、第1命令バッファ1103から第N命令バッファ1105からマシンサイクル毎に発行する命令を決定するものである。
発行命令決定部1106は、第1命令流スケジューラ1202から第N命令流スケジューラ1206と、優先度情報テーブル1300とに基づいて、実行可能状態となっており各記憶領域に格納されている命令全てのうち、優先度情報テーブル1300で示される順序に従って、4個の命令を選択し、選択した命令それぞれを個別の演算器へ出力する。
ここで、図14において、発行命令決定部1106のハードウェア構成を示す。
発行命令決定部1106は、第1命令決定部1211から第4命令決定部1214と、命令選択部1215と、第1命令抽出部1221から第4命令抽出部1224とを有している。
(7−1)命令選択部1215
命令選択部1215は、第1の実施の形態で示す命令選択部215と同様のものである。具体的には、第1命令バッファ1103から第N命令バッファ1105それぞれから各命令バッファ内の発行可能な命令数を示す信号、つまり実行可能状態となっている命令数を示す信号1241〜1243を受け取り、優先度情報テーブル1300で示される順序に従って、選択すべき4個の命令を特定する。
そして、命令選択部1215は、第1命令決定部1211から第4命令決定部1214それぞれに対して、当該命令決定部で取得すべき命令を示す発行命令選択信号1251〜1254を出力する。発行命令選択信号には、抽出すべき命令を示す情報、例えば、抽出すべき命令が保持されている命令バッファ及びその記憶領域を示す情報が含まれている。
(7−2)第1命令抽出部1221から第4命令抽出部1224
第1命令抽出部1221から第4命令抽出部1224のそれぞれは、第1の実施の形態で示す第1命令抽出部221から第4命令抽出部224のそれぞれと同様であるので、ここでの説明は省略する。
(7−3)第1命令決定部1211から第4命令決定部1214
第1命令決定部1211から第4命令決定部1214それぞれは、演算器群1111が有する演算器と1対1に対応付けられており、その機能は、第1の実施の形態で示す第1命令決定部211から第4命令決定部214それぞれと同様であるので、ここでの説明は省略する。
(8)第1レジスタファイル1108から第Nレジスタファイル1110
第1レジスタファイル1108から第Nレジスタファイル1110のそれぞれは、第1の実施の形態で示す第1レジスタファイル108から第Nレジスタファイル110と同様であるので、ここでの説明は省略する。
(9)演算器群1111
演算器群1111は、加算器や乗算器などからなる複数の演算器を含むものである。なお、ここでは、演算器群1111は、4つの演算器(演算器1111a〜1111d)を有しているものとする。また、演算器1111aは第1命令決定部1211と、演算器1111bは第2命令決定部1212と、演算器1111cは第3命令決定部1213と、演算器1111dは第4命令決定部1214と、それぞれ対応付けられているものとする。
演算器が処理する命令には、当該命令が属する命令流を識別する情報が含まれており、当該情報に基づいて対応するレジスタファイルへ演算結果を出力する。
(10)ライトバックバス1112
ライトバックバス1112は、演算器群1111からの出力を第1レジスタファイル1108〜第Nレジスタファイル1110に書き戻すためのバスである。
3.2 動作
(1)発行命令の決定の動作
ここでは、発行すべき命令を決定する動作について図16に示す流れ図を用いて説明する。ここでは、説明の便宜上、利用する優先度情報テーブルは、優先度情報テーブル1300とする。なお、更新された優先度情報テーブル1300aを用いた場合でも、処理動作は同じである。
命令選択部1215は、一のマシンサイクルにおいて発行する命令を決定する際に、変数の初期化(i=1;j=1;k=4)を行う(ステップS300)。ここで、変数iは、マシンサイクルにおいて発行する命令数をカウントするカウンタである。変数jは、優先度情報テーブル1300から情報を読み出すためのポインタを示す。変数kは、マシンサイクルにおいて発行可能な命令の最大数を示し、本実施例においては4である。
命令選択部1215は、変数iの値が変数k以下であるか否か、つまり発行する命令数が最大値以下であるか否かを判断する(ステップS305)。
変数iの値が変数k以下であると判断する場合(ステップS305における「Yes」)、命令選択部1215は、優先度情報テーブル1300のj番目のエントリを読み出し、その読み出しに成功したか否かを判断する(ステップS310)。
j番目のエントリの読み出しに成功したと判断した場合(ステップS310における「Yes」)、命令選択部1215は、取得したj番目のエントリが示す命令流の命令が発行可能であるか否を判断する(ステップS315)。
発行可能でないと判断する場合には(ステップS315における「No」)、変数jに値1が加算され(ステップS320)、処理はステップS310へ戻る。
発行可能であると判断する場合には(ステップS315における「Yes」)、命令選択部1215は、第i命令決定部に対して発行命令選択信号を出力する。発行命令選択信号を受信した第i命令決定部は、発行すべき命令が保持されている記憶領域に応じた命令抽出部に当該命令を抽出させて、命令抽出部で抽出された命令を対応する演算器へ出力する(ステップS325)。
その後、変数iに値1が、変数jに値1が、それぞれ加算され(ステップS330)、処理はステップS305へ戻る。
また、変数iの値が変数k以下でないと判断する場合(ステップS305における「No」)、及び j番目のエントリの読み出しに失敗した、つまりポインタが示す位置にエントリが無いと判断した場合(ステップS310における「No」)、処理は終了する。
(2)優先度情報テーブルの更新の動作
ここでは、実行命令数カウンタを用いた更新処理(以下、第1更新処理)と、サイクルカウンタを用いた更新処理(第2更新処理)とについて説明する。
(2−1)第1更新処理
まず、第1更新処理について、図17に示す流れ図を用いて説明する。
性能監視部1114は、処理開始時において、N個の実行命令数カウンタ全てを初期化する(ステップS400)。
性能監視部1114は、命令の実行を検出すると(ステップS405)、実行された命令を含む命令流に対応する実行命令数カウンタの値を1減算する(ステップS410)。
減算された実行命令数カウンタの値が0であるか否かを判断する(ステップS415)。
0であると判断する場合(ステップS415における「Yes」)、性能監視部1114は、第1通知情報を生成し、優先度更新部1113へ通知する(ステップS420)。このとき、生成された第1通知情報には、実行命令数カウンタの値が0である命令流を識別する命令流IDが含まれる。
優先度更新部1113は、性能監視部1114から第1通知情報を受け取ると、受け取った第1通知情報に含まれる命令流IDで識別される命令流の優先度が最低となるように優先度情報テーブル1300を更新する(ステップS425)。
優先度情報テーブル1300の更新後、及び減算された実行命令数カウンタの値が0でないと判断する場合(ステップS415における「No」)、処理は、ステップS405へ戻る。
(2−2)第2更新処理
次に、第2更新処理について、図18に示す流れ図を用いて説明する。
性能監視部1114は、処理開始時において、サイクルカウンタを初期化する(ステップS500)。
性能監視部1114は、処理時間が1サイクル分経過したか否かを判断する(ステップS505)。
1サイクル経過したと判断する場合(ステップS505における「Yes」)、性能監視部1114は、サイクルカウンタの値を1減算する(ステップS510)。
減算された実行命令数カウンタの値が0であるか否かを判断する(ステップS515)。
0であると判断する場合(ステップS515における「Yes」)、性能監視部1114は、第2通知情報を生成し、優先度更新部1113へ通知する(ステップS520)。
性能監視部1114は、サイクルカウンタを初期化(ステップS525)、及びN個実行命令数カウンタ全てを初期化する(ステップS530)。
優先度更新部1113は、性能監視部1114から第2通知情報を受け取ると、優先度情報テーブルの内容を初期状態の内容となるよう更新する(ステップS535)。
優先度情報テーブルの更新後、1サイクル経過していないと判断する場合(ステップS505における「No」)及び減算されたサイクルカウンタの値が0でないと判断する場合(ステップS515における「No」)、処理は、ステップS505へ戻る。
3.3 動作イメージ
図19は、第3の実施の形態における第1の命令流及び第2の命令流を用いた並列処理を行った場合での各命令の割り当て(発行)の動作イメージである。
ここで、図19に示す動作イメージでは、縦軸に時間、横軸に命令の並列度を示している。
また、第1の命令流は、最低1命令ずつ発行されることで、時間t内で処理が完了するものとする。
図19において、ブロック1501は第1命令流の命令実行の様子を示し、t/4まで常に2つの命令の発行が行われ、その後3t/4までは、1つの命令の発行が行われていることを示している。
ブロック1502は、第2命令流の命令実行の様子を示し、t/4までは2つの命令が実行されていることを示す。図15(a)に示す優先度情報テーブル1300では、上位4番目までの優先順位によると、第2命令流の命令の実行が3つまでが優先的に実行が許可されるようになっているが、発行の準備が完了していない場合には、次の優先順位に実行の許可がなされる。そのため、図19に示すように、第2の命令流の命令が2つしか実行許可されない場合には、第1命令流の命令が2つ実行されることとなる。
その後、第2の命令流においては、時間t/4から3t/4までの間は、3つの命令流が実行される。
時間3t/4の時点で、第1命令流に対応する実行命令カウンタの値は0となる。なぜなら、時間0からt/4までの間は2つの命令が発行されているので、第1命令流に対応する実行命令カウンタは、合計2の値が減算されていることとなり、1つずつの命令を発行した場合よりも、t/4分だけ早く処理が終了する、つまり実行命令カウンタの値が0となるからである。
そうすると、時間3t/4の時点で、優先度情報テーブル1300は、例えば図15(b)に示す優先度情報テーブル1300aへと更新され、以降の処理においては、第2命令流の命令が常に4つずつ発行されることとなる。
そして、時間tに達すると、サイクルカウンタの値が0となり、各種カウンタの値は初期化され、且つ優先度情報テーブルの内容は初期状態の内容、つまり優先度情報テーブル1300へと更新される。
以上により、一定のサイクル内に一定の処理を完了した命令流は、それ以降プロセッサ上の実行リソースを消費しない状態とし、他命令流がより多く実行機会を得るようにすることが可能となる。
4.第4の実施の形態
ここでは、第1の実施の形態で示したプロセッサ10を適用した映像処理システム1600について説明する。
映像処理システム1600は、例えば、映像信号をデコード処理して、表示装置(テレビ等)へ出力する映像処理装置である。
ここでは、映像処理システム1600は、第1の実施の形態で示したプロセッサ10を有しており、外部から受信した映像信号をデコードする処理、及びユーザー入力装置(リモコン)1605からの指示に基づく処理とを行う。
なお、プロセッサ10の構成は、図1、2にて示しているので、ここでは詳細な構成は省略する。以下の説明においては、必要に応じて第1の実施の形態で説明した構成要素を用いて説明する。
プロセッサ10は、H.264等の規格を用いて圧縮された映像信号をデコードするためには、ビットストリームの解析、可変長符号化された信号のデコード処理、逆量子化、逆周波数変換、動き補償、デブロックフィルタ処理を行う。これらは、映像に乱れを生じさせないよう、一定の性能を必ず保証する必要がある。ただし、それ以上の性能を割り当てる必要は無い。
また、リモコン等のユーザーからの入力に対応する処理は、可能な限り迅速に処理を行う即応性が求められる。
そこで、第1の実施の形態で示す第1命令流を映像信号をデコードする処理(映像デコード処理)と、第2命令流をユーザー入力装置1605から指示された処理(ユーザー入力処理)とすることで、単一のマルチスレッドプロセッサ上で、性能保証と高い応答性を両立したリアルタイム映像処理システムを構築することができる。
なぜなら、優先度情報テーブル300の優先度に従って、常に映像デコード処理に係る1つの命令が発行され、使用されない並列度、つまり映像デコード処理では使用されていない残り3つの演算器には、ユーザー入力処理に係る命令を割り当てることができるので、映像デコード処理に対する性能保証の条件を満たしつつ、ユーザー入力処理に係る命令を即座に実行できるからである。
5.変形例
以上、各実施の形態に基づいて説明したが、本発明は上記の各実施の形態に限られない。例えば、以下のような変形例が考えられる。
(1)上記各実施の形態において、優先度情報テーブルは、優先度、命令流及び命令番号とから構成されるとしたが、これに限定されない。
優先度情報テーブルの命令番号は無くてもよい。この場合、命令流の項目に出現する命令流を識別する値の出現数の累積値を用いることで、対応する命令番号を特定することができる。
(2)上記各実施の形態において、単一マシンサイクルに演算器群に発行することができる命令は4命令としたが、これに限定されない。単一マシンサイクルに発行可能な命令数は2以上であればよく、4に限らない。
(3)上記第2の実施の形態において、優先度情報テーブルの更新はソフトウェアの指示によるものとしたが、これに限定されない。
ハードウェアの指示によるものであってもよい。
この場合、優先度更新部1113は、ハードウェアからの指示によって、優先度決定部1107で保持している優先度情報を記憶している優先度情報テーブル1300を更新する。
具体的には、優先度更新部1113は、優先度決定部1107で保持している優先度情報テーブル1300のエントリに対応した更新優先度情報を保持している。例えば、優先度更新部1113は、ハードウェアからの更新信号を受け取り、更新優先度情報に基づいて、対応する優先度情報テーブル1300のエントリを更新する。また、ハードウェアの指示は、例えば、所定の命令が発行された(プログラム上実行された)ことを検出すると、指示がされるよう予め設定されている。
なお、ハードウェアの指示により、1度に複数のエントリを更新してもよい。
(4)上記第4の実施の形態において、映像処理システム1600は、映像信号をデコードするものとしたが、これに限定されない。
映像処理システム1600は、映像信号をエンコードするものであってもよい。
この場合、例えば、第1命令バッファは、映像信号をエンコードする処理に係る命令を保持し、第2命令バッファは、ユーザー入力処理に係る命令を保持し、各命令バッファで保持されている命令を優先度情報テーブルで示す優先度に従って実行することで実現できる。
また、映像信号をデコードやエンコードする装置としては、DVDレコーダ、デジタルテレビ等がある。つまり、映像処理システム1600は、映像や音声のメディア処理を行う装置であってもよい。
(5)上記第4の実施の形態において、映像処理システム1600に第1の実施の形態で示すプロセッサ10を適用したが、これに限定されない。
映像処理システム1600には、第2の実施の形態で示すプロセッサ10a及び第3の実施の形態で示すプロセッサ10bの何れかを適用してもよい。
(6)上記第2、及び第3の実施の形態で示すプロセッサ10a及び10bは、FPGA(Field Programmable Gate Array)でとし、FPGAの機能により優先度情報テーブルを更新するとしてもよい。
(7)上記各実施の形態において、各命令バッファの命令保持部における記憶領域の個数は演算器の個数と同一としたが、これに限定されない。
各命令バッファの命令保持部における記憶領域の個数は、演算器の個数よりの少なくてもよい。または、記憶領域の個数は、演算器の個数より多くてもよい。
または、命令流の個数、つまりは命令バッファの個数(例えば、M個)について、各命令バッファの記憶領域がZ個存在する場合に、全記憶領域の個数(M×Z)は、演算器の個数以上であってもよい。この場合、例えば、発行命令決定部106は、全記憶領域の個数(M×Z)から、優先度の順位に従って演算器の個数分の命令を取得することとなる。
(8)上記第1の実施の形態において、第1命令流についてマシンサイクル毎に1命令を発行することで、所定の時間内に処理が完了する場合について説明したが、これに限定されない。
第1命令流についてマシンサイクル毎に1命令を発行する機会が保証されることで、所定の時間内に処理が完了するようにしてもよい。
また、第2の実施の形態においても同様に、第1命令流についてマシンサイクル毎に1命令を発行する機会が保証されることで、所定の時間内に処理が完了するようにしてもよい。
さらに、第3の実施の形態においても同様に、第1命令流についてマシンサイクル毎に1命令を発行する機会が保証されることで、所定の時間内に処理が完了するようにしてもよい。この場合、性能監視部1114が有するN個の実行命令数カウンタは、対応する命令流の命令がプロセッサ10b上で実行されると、命令が実行された数だけダウンカウントされる。また、命令の発行が行われなかった場合においても、対応する命令流の命令に対して最優先の優先度が割り当てられたサイクルはダウンカウントされる。なお、動作開始時には、第3の実施の形態と同様に、N個の実行命令数カウンタそれぞれには、初期値が設定されるものとする。
(9)上記各実施の形態、及び各変形例で説明した手法の手順を記述したプログラムをメモリに記憶しておき、CPU(Central Processing Unit)などがメモリからプログラムを読み出して、読み出したプログラムを実行することによって、上記の手法が実現されるようにしてもよい。
(10)上記各実施の形態、及び各変形例で説明した手法の手順を記述したプログラムを記録媒体に格納して、頒布するようにしてもよい。
(11)これらの実施の形態および変形例の組合せであってもよい。
6.補足
(1)本発明の一実施態様である、L個(Lは2以上の整数)の演算器を有するプロセッサは、M個(Mは2以上の整数)の命令流各々が区別して入力され、各命令流を構成するZ個(Zは2以上の整数であり、M×ZはL以上であることを満たす)の命令を格納するためのM×Z個の命令記憶領域を含む命令バッファと、前記命令バッファ内の前記M×Z個の命令記憶領域に順序を付けた情報である順序情報を保持する順序情報保持手段と、前記命令バッファの前記M×Z個の命令記憶領域に格納された命令を抽出するための抽出手段と、実行可能状態となっており前記M×Z個の命令記憶領域に格納されている命令全てのうちから、前記順序情報に従った順序で、L個の命令を前記抽出手段に抽出させて、抽出された命令毎に別の演算器に入力する制御手段とを備えることを特徴とする。
この構成によると、プロセッサは、M×Z個の命令記憶領域に順序を付けた順序情報に基づいて、実行可能状態でありM×Z個の命令記憶領域に格納されている命令全てのうちからL個の命令を抽出するので、一の命令流の命令と、他の命令流の命令とを同時に抽出することができる。そのため、プロセッサは、例えば、一の命令流が性能保証が要求される命令流であり、他の命令流が性能保証が要求されない命令流であるとすると、他の命令流の命令は、一の命令流が終了するまで待つ必要はないので、一の命令流に対する性能保証と、他の命令流に対する高い応答性とを両立することができる。
(2)ここで、前記命令バッファは、前記M×Z個の命令記憶領域それぞれについて、当該命令記憶領域に記憶されている命令が実行可能であるか否かを示すフラグを有しており、前記制御手段は、M×Z個のフラグそれぞれの内容から、実行可能状態である命令全てを特定するとしてもよい。
この構成によると、プロセッサは、M×Z個の命令記憶領域それぞれについて、当該記憶領域に記憶されている命令が実行可能状態であるかをフラグを用いて管理しているので、実行可能状態の命令全てを容易に特定することができる。
(3)ここで、前記M個の命令流のうち一の命令流は、所定時間内で処理の完了を保証すべき性能保証命令流であり、前記順序情報は、前記性能保証命令流の処理が前記所定時間内で終了することを保証するための最小個数の命令について、L以下の順序を付与した情報であるとしてもよい。
この構成によると、プロセッサは、所定時間内で処理の完了を保証すべき性能保証命令流については、所定時間内で処理の完了を保証するための最小個数の命令に対してはL以下の順序が付されるので、常に最小個数の命令は実行されることとなり、所定時間内で処理が完了しないという処理破綻を生じることがない。
(4)ここで、前記性能保証命令流は、画像のデコード処理を行うためのものであり、前記プロセッサは、画像のデコード処理を行う画像処理システムに備えられるとしてもよい。
この構成によると、プロセッサは、性能保証が必要とされる画像のデコード処理と、他の命令流に対する高い応答性とを両立することができる。
(5)ここで、前記性能保証命令流は、画像のエンコード処理を行うためのものであり、前記プロセッサは、画像のエンコード処理を行う画像処理システムに備えられるとしてもよい。
この構成によると、プロセッサは、性能保証が必要とされる画像のエンコード処理と、他の命令流に対する高い応答性とを両立することができる。
(6)ここで、前記プロセッサは、さらに、前記M個の命令流毎に、当該命令流において一の演算器へ出力された命令数を監視し、一の命令流において出力された命令数が所定値を超えると、当該命令流を構成するZ個の命令が格納されたZ個の命令記憶領域の順序を下げるように、前記順序情報を更新する順序情報更新手段を備えるとしてもよい。
この構成によると、プロセッサは、一の命令流について発行された命令数が所定数に達すると、当該一の命令流を構成するZ個の命令が格納されたZ個の命令記憶領域の順序を下げるので、他の命令流に優先的に命令の発行が割り当てられる。従って、例えば、一の命令流の命令が終了した場合には、当該一の命令流に優先的に命令の発行が割り当てることは不要となるので、他の命令流に命令の発行を割り当てることで他の命令流に対する処理効率を上げることができる。
(7)ここで、前記プロセッサは、さらに、前記M個の命令流毎に、当該命令流において一の演算器へ出力された命令を監視し、一の命令流において特定の命令が出力されると、当該命令流を構成するZ個の命令が格納されたZ個の命令記憶領域の順序を下げるように、前記順序情報を更新する順序情報更新手段を備えるとしてもよい。
この構成によると、プロセッサは、一の命令流について特定の命令が発行されると、その直後に、当該一の命令流を構成するZ個の命令が格納されたZ個の命令記憶領域の順序を下げるので、他の命令流に優先的に命令の発行が割り当てられる。従って、例えば、一の命令流について特定の命令が実行され、その後優先的に命令を実行する必要がない場合には、当該一の命令流に優先的に命令の発行が割り当てるよりも、他の命令流に命令の発行を割り当てることで他の命令流に対する処理効率を上げることができる。
本発明に係るプロセッサは、一の命令流に対する性能保証と、他の命令流に対する高い応答性とを必要とする装置に適用することができる。
10 プロセッサ
101 命令メモリ
102 命令群決定部
103〜105 第1命令バッファ〜第N命令バッファ
106 発行命令決定部
107 優先度決定部
108〜110 第1レジスタファイル〜第Nレジスタファイル
111 演算器群
112 ライトバックバス
201 第1命令保持部
201a〜201d 第1〜第4の記憶領域
202 第1命令流スケジューラ
203 第2命令保持部
204 第2命令流スケジューラ
205 第N命令保持部
206 第N命令流スケジューラ
211〜214 第1命令決定部〜第4命令決定部
215 命令選択部
221〜224 第1命令抽出部〜第4命令抽出部
751〜754 発行命令選択信号

Claims (8)

  1. L個(Lは2以上の整数)の演算器を有するプロセッサであって、
    M個(Mは2以上の整数)の命令流各々が区別して入力され、各命令流を構成するZ個(Zは2以上の整数であり、M×ZはL以上であることを満たす)の命令を格納するためのM×Z個の命令記憶領域を含む命令バッファと、
    前記命令バッファ内の前記M×Z個の命令記憶領域に順序を付けた情報であるM×Z個の順序情報を保持する順序情報保持手段と、
    前記命令バッファの前記M×Z個の命令記憶領域に格納された命令を抽出するための抽出手段と、
    実行可能状態となっており前記M×Z個の命令記憶領域に格納されている命令全てのうちから、前記順序情報に従った順序で、L個の命令を前記抽出手段に抽出させて、抽出された命令毎に別の演算器に入力する制御手段とを備える
    ことを特徴とするプロセッサ。
  2. 前記命令バッファは、
    前記M×Z個の命令記憶領域それぞれについて、当該命令記憶領域に記憶されている命令が実行可能であるか否かを示すフラグを有しており、
    前記制御手段は、
    M×Z個のフラグそれぞれの内容から、実行可能状態である命令全てを特定する
    ことを特徴とする請求項1に記載のプロセッサ。
  3. 前記M個の命令流のうち一の命令流は、所定時間内で処理の完了を保証すべき性能保証命令流であって、
    前記性能保証命令流においては、マシンサイクル毎に必ず1命令が発行される
    ことを特徴とする請求項1に記載のプロセッサ。
  4. 前記性能保証命令流は、画像のデコード処理を行うためのものであり、
    前記プロセッサは、
    画像のデコード処理を行う画像処理システムに備えられる
    ことを特徴とする請求項3に記載のプロセッサ。
  5. 前記性能保証命令流は、画像のエンコード処理を行うためのものであり、
    前記プロセッサは、
    画像のエンコード処理を行う画像処理システムに備えられる
    ことを特徴とする請求項3に記載のプロセッサ。
  6. 前記プロセッサは、さらに、
    前記M個の命令流毎に、当該命令流において一の演算器へ出力された命令数を監視し、一の命令流において出力された命令数が所定値を超えると、当該命令流を構成するZ個の命令が格納されたZ個の命令記憶領域の順序を下げるように、前記順序情報を更新する順序情報更新手段を備える
    ことを特徴とする請求項1に記載のプロセッサ。
  7. 前記プロセッサは、さらに、
    前記M個の命令流毎に、当該命令流において一の演算器へ出力された命令を監視し、一の命令流において特定の命令が出力されると、当該命令流を構成するZ個の命令が格納されたZ個の命令記憶領域の順序を下げるように、前記順序情報を更新する順序情報更新手段を備える
    ことを特徴とする請求項1に記載のプロセッサ。
  8. L個(Lは2以上の整数)の演算器を有するプロセッサで用いられる方法であって、
    前記プロセッサは、
    M個(Mは2以上の整数)の命令流各々が区別して入力され、各命令流を構成するZ個(Zは2以上の整数であり、M×ZはL以上であることを満たす)の命令を格納するためのM×Z個の命令記憶領域を含む命令バッファと、
    前記命令バッファ内の前記M×Z個の命令記憶領域に順序を付けた情報であるM×Z個の順序情報を保持する順序情報保持手段とを備え、
    前記方法は、
    前記命令バッファの前記M×Z個の命令記憶領域に格納された命令を抽出するための抽出ステップと、
    実行可能状態となっており前記M×Z個の命令記憶領域に格納されている命令全てのうちから、前記順序情報に従った順序で、L個の命令を前記抽出ステップに抽出させて、抽出された命令毎に別の演算器に入力する制御ステップとを含む
    ことを特徴とする方法。
JP2011514332A 2009-05-18 2010-05-18 プロセッサ Active JP5330507B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011514332A JP5330507B2 (ja) 2009-05-18 2010-05-18 プロセッサ

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009119508 2009-05-18
JP2009119508 2009-05-18
PCT/JP2010/003354 WO2010134329A1 (ja) 2009-05-18 2010-05-18 プロセッサ
JP2011514332A JP5330507B2 (ja) 2009-05-18 2010-05-18 プロセッサ

Publications (2)

Publication Number Publication Date
JPWO2010134329A1 JPWO2010134329A1 (ja) 2012-11-08
JP5330507B2 true JP5330507B2 (ja) 2013-10-30

Family

ID=43126022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011514332A Active JP5330507B2 (ja) 2009-05-18 2010-05-18 プロセッサ

Country Status (5)

Country Link
US (1) US8788793B2 (ja)
EP (1) EP2434392B1 (ja)
JP (1) JP5330507B2 (ja)
CN (1) CN102428441B (ja)
WO (1) WO2010134329A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5803972B2 (ja) 2013-04-18 2015-11-04 株式会社デンソー マルチコアプロセッサ

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
JP2001306324A (ja) * 2000-03-30 2001-11-02 Agere Systems Guardian Corp マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
JP2006127302A (ja) * 2004-10-29 2006-05-18 Internatl Business Mach Corp <Ibm> 情報処理装置、コンパイラ、及びコンパイラプログラム
JP2009515264A (ja) * 2005-11-01 2009-04-09 インテンショナル ソフトウェア コーポレーション 文書およびソースコードの制御のための方法およびシステム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2908598B2 (ja) 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
EP1291765B1 (en) 1996-08-27 2009-12-30 Panasonic Corporation Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
US6477562B2 (en) 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
JP3646137B2 (ja) 2003-03-25 2005-05-11 独立行政法人科学技術振興機構 命令発行方法及び装置、中央演算装置、命令発行プログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7418576B1 (en) * 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10124316A (ja) * 1996-08-27 1998-05-15 Matsushita Electric Ind Co Ltd 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
JP2001306324A (ja) * 2000-03-30 2001-11-02 Agere Systems Guardian Corp マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
JP2006127302A (ja) * 2004-10-29 2006-05-18 Internatl Business Mach Corp <Ibm> 情報処理装置、コンパイラ、及びコンパイラプログラム
JP2009515264A (ja) * 2005-11-01 2009-04-09 インテンショナル ソフトウェア コーポレーション 文書およびソースコードの制御のための方法およびシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013020729; R. Kalla et al.: '"Simultaneous Multi-threading Implementation in POWER5 - IBM's Next Generation POWER Microprocessor"' A Symposium on High Performance Chips 発表資料 , 20030819, pages: 1-15, IBM Corporation *

Also Published As

Publication number Publication date
EP2434392A4 (en) 2012-10-03
US8788793B2 (en) 2014-07-22
CN102428441B (zh) 2015-04-08
US20120060017A1 (en) 2012-03-08
CN102428441A (zh) 2012-04-25
EP2434392B1 (en) 2014-08-13
EP2434392A1 (en) 2012-03-28
WO2010134329A1 (ja) 2010-11-25
JPWO2010134329A1 (ja) 2012-11-08

Similar Documents

Publication Publication Date Title
US8195922B2 (en) System for dynamically allocating processing time to multiple threads
US7610473B2 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
US20230185607A1 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US8407454B2 (en) Processing long-latency instructions in a pipelined processor
JP5499029B2 (ja) 仮想処理装置のための割込み制御
US6662297B1 (en) Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
JP2008123045A (ja) プロセッサ
JPH04360234A (ja) 情報処理装置
TW201203110A (en) Mapping between registers used by multiple instruction sets
WO2011155097A1 (ja) 命令発行制御装置及び方法
CN103226463A (zh) 用于使用预解码数据调度指令的方法和装置
CN103207810A (zh) 计算任务状态封装
JP5330507B2 (ja) プロセッサ
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
CN111226196B (zh) 在乱序处理器中具有一个或多个摘要位的可扩展依赖矩阵
JP4631442B2 (ja) プロセッサ
US10176548B2 (en) Graphics context scheduling based on flip queue management
JP2001142700A (ja) パイプラインプロセッサにおける電力有効処理メカニズム
US9323521B2 (en) Decimal floating-point processor
JP2006004092A (ja) コンピュータシステム
JP6167193B1 (ja) プロセッサ
JPWO2009096161A1 (ja) プロセッサ性能解析装置、方法及びシミュレータ
JP2006172065A (ja) チェックポイント採取方法、システム及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130430

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130606

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: 20130702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130725

R150 Certificate of patent or registration of utility model

Ref document number: 5330507

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150