JP4801725B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP4801725B2
JP4801725B2 JP2008502600A JP2008502600A JP4801725B2 JP 4801725 B2 JP4801725 B2 JP 4801725B2 JP 2008502600 A JP2008502600 A JP 2008502600A JP 2008502600 A JP2008502600 A JP 2008502600A JP 4801725 B2 JP4801725 B2 JP 4801725B2
Authority
JP
Japan
Prior art keywords
command
unit
processing unit
input
priority
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.)
Expired - Fee Related
Application number
JP2008502600A
Other languages
English (en)
Other versions
JPWO2007099613A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007099613A1 publication Critical patent/JPWO2007099613A1/ja
Application granted granted Critical
Publication of JP4801725B2 publication Critical patent/JP4801725B2/ja
Expired - Fee Related 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

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)
  • Bus Control (AREA)

Description

本発明は、プロセッサにコマンドをより適切に処理させるための技術に関する。
近年、プロセッサでは、より効率的に資源を利用できるように、処理対象とするコマンドに優先順位を設け、優先順位に分けて待ち行列(コマンド・キュー)を生成することが行われている。例えば複数のプロセッサを接続したマルチ・プロセッサ・システムでは、他のプロセッサへデータを送出するためのコマンドには高い優先度を割り当てるのが普通である。
コマンド(コマンド・キュー)に優先順位を設けることにより、キューに存在するコマンドは優先順位に従って選択されるようになる。それにより、優先順位の高いコマンドの発行頻度が高くなると、優先順位の低いコマンドは選択され難くなる。プロセッサを動作させるクロックの周波数が外部バスのクロックの周波数と比較して大きな差がある、或いは外部バスの幅が小さいような場合、外部にリクエストとしてコマンドを出力するのにかなり多くのクロック数が必要である。このため、外部にリクエストとして出力するコマンドを選択する場合には、優先順位の高いコマンドの発行頻度がそれほど高くなくとも、優先順位の低いコマンドが選択されない状況が生じやすくなる。
図1は、優先順位の異なる2つのコマンド・キューにそれぞれ存在するコマンド数によって選択されるコマンドを示すタイムチャートである。その図1では、(A)に優先順位の高いコマンド・キュー(図中「high-priority-queue」と表記)、(B)にそれより優先順位の低いコマンド・キュー(図中「low-priority-queue」と表記)、をそれぞれ示している。また、4〜8の数値はコマンド数(cmd-num)、bus-enは外部バスにコマンドの出力を開始したタイミング、rlsはコマンドのリリース(キューからの削除)、setはコマンドのセット(キューへの登録)、をそれぞれ表している。バス(bus)に出力されるコマンド(データ)に表記した(A)はコマンドを選択したキューが優先順位の高いほうであることを表している。そのようにして、優先順位の異なる2つのコマンド・キューにのみ注目する形で、それらから選択されてバスに出力されるコマンドを示している。
図1に示すように、コマンド・キューへのコマンドの登録は、バスにコマンドを出力するのに要する時間より短時間で行うことが可能である。このため、コマンド・キューに多数のコマンドが滞留している状況が生じやすい。その状況が優先順位の高いコマンド・キューで生じると、優先順位の低いコマンド・キューからはかなり長い期間、コマンドが選択されなくなる。
優先順位の低いコマンドであっても、そのコマンドを長い期間、選択しないことによって処理の進行に支障が生じる可能性がある。性能が低下するだけでなく、ハングしてしまう可能性もある。このようなことから、優先順位が低いコマンドが長い期間、選択されない状況となるのを回避することが重要と考えられる。
現在のプロセッサの大部分には、コマンドの待ち時間をより短くして高速化するために、パイプラインが搭載されている。そのパイプラインには、準備ができたコマンドから順次、投入される。しかし、コマンドによっては、再投入(リトライ)となることがある。そのリトライは、先行するコマンドとの競合や、利用可能な資源の状況などによって行われることとなる。
例えばコマンドの実行に必要なデータが格納されたレジスタを他のコマンドの実行でアクセスしている、或いは実行のためにアクセスする必要があるような場合、そのレジスタへのアクセスは制限され、コマンドを実行完了させることができなくなる。このため、そのような場合には、コマンドはリトライとなる。アクセスを制限すべきレジスタを示す情報(例えばアドレス値)の保持用には専用のレジスタ(ロックレジスタ)が用いられる。
リトライとなったコマンドは、元のキューに戻され、再度、パイプラインに投入される。しかし、そのリトライされたコマンドが再び、同様の理由でリトライとなり、そのリトライを繰り返してしまう場合がある。
図2は、パイプラインによるコマンド処理の進行を示すタイムチャートである。横軸は時間、縦軸はステージをそれぞれ示している。縦軸と平行な直線の間隔は、動作用クロック1周期分の時間を表している。そのパイプラインのステージ数は8であり、階段状の太線は、時間の経過に伴うステージの遷移を表している。横軸と平行な太線は、コマンドの実行によって或るレジスタがロック(アクセス制限)される期間を表している。(A)はリトライされるコマンド、(B1)、(B2)はリトライされない他のコマンドを表している。
図2に示すように、コマンド(A)は、先行するコマンドによるレジスタのロックによりリトライとなり、その後の投入でも、先行するコマンド(B1)(B2)によるロックによってリトライとなっている。そのように、同じ資源(ここではレジスタ)を利用するコマンドが一定の周期で交互に投入されるような場合、同じコマンドのみがリトライを繰り返すような状況となる。その周期が一定でなくとも、同じコマンドのみがリトライを繰り返すような状況となる可能性がある。そのリトライは利用可能な資源の制約によって生じることから、コマンドの優先順位とは無関係である。つまり、例えばコマンド(A)がコマンド(B1)(B2)より高い優先順位のキューから選択したものであっても、コマンド(A)のみリトライを繰り返す状況となる場合がある。そのような状況は、コア部を複数、搭載したマルチ・コア・プロセッサで発生しやすい。
同じコマンドのリトライを繰り返すことは、そのコマンドを長い期間、実行しないことに相当する。このことから、優先順位に従ってコマンドを選択する場合と同様に、処理の進行に支障が生じ、性能の低下やハングが発生してしまうことになる。このことから、コマンドのリトライを繰り返す状況となるのを回避することが重要と考えられる。
本発明は、優先順位が低いコマンドが長い期間、選択されない状況となるのを回避するための技術を提供することを第1の目的とする。
また、本発明は、パイプラインへのコマンドのリトライ(再投入)を繰り返す状況となるのを回避するための技術を提供することを第2の目的とする。
本発明の第1の態様の演算処理装置は、投入されたコマンドを処理する処理部と、処理部が処理したコマンドを優先順位が割り当てられた複数のキューのいずれかに保持する保持部と、複数のキューのうち優先順位が最も高いキューを除いて、保持されたコマンドが選択されなかった非選択回数をキュー毎に計数する計数部と、乱数を発生する乱数部と、乱数部が生成した乱数が所定数に合致した場合、複数のキューに割り当てられた優先順位を、計数部が計数した非選択回数が所定値に達したキューの優先順位が最も高くなるように変更する変更部と、複数のキューに保持されたコマンドのいずれかを、優先順位に基づいて選択する選択部を有する。
本発明の第2の態様の演算処理装置は、上記第1の態様において、処理部はさらに、投入されたコマンドを処理できない場合にリトライを発生し、演算処理装置はさらに、コマンドを処理部に入力するとともに、優先度が割り当てられた複数の入力ポートと、処理部に投入されたコマンドにリトライが発生したかを入力ポート毎に監視する監視部と、コマンドを遅延させる遅延時間を入力ポート毎に指定する遅延部と、いずれかの入力ポートから処理部に投入されたコマンドにリトライが発生した旨を監視部が検出した場合、遅延部が指定する遅延時間に基づき、入力ポートからのコマンドを遅延させる調整部と、調整部が遅延させたコマンドを、優先度に基づいて処理部に投入する投入部を有する
本発明の第1の態様の演算処理装置の制御方法は、投入されたコマンドを処理する処理部と、処理部が処理したコマンドを優先順位が割り当てられた複数のキューのいずれかに保持する保持部とを有する演算処理装置に適用されるものであり、演算処理装置が有する計数部が、複数のキューのうち優先順位が最も高いキューを除いて、保持されたコマンドが選択されなかった非選択回数をキュー毎に計数し、演算処理装置が有する乱数部が、乱数を発生し、乱数部が生成した乱数が所定数に合致した場合、演算処理装置が有する変更部が、複数のキューに割り当てられた優先順位を、計数部が計数した非選択回数が所定値に達したキューの優先順位が最も高くなるように変更し、演算処理装置が有する選択部が、複数のキューに保持されたコマンドのいずれかを、優先順位に基づいて選択する。
本発明の第2の態様の演算処理装置の制御方法は、上記第1の態様において、処理部はさらに、投入されたコマンドを処理できない場合にリトライを発生し、演算処理装置の制御方法はさらに、演算処理装置が有する優先度が割り当てられた複数の入力ポートに、コマンドを入力し、演算処理装置が有する監視部が、処理部に投入されたコマンドにリトライが発生したかを入力ポート毎に監視し、演算処理装置が有する調整部が、いずれかの入力ポートから処理部に投入されたコマンドにリトライが発生した旨を監視部が検出した場合、指定されたコマンドを遅延させる遅延時間に基づき、入力ポートからのコマンドを遅延させ、演算処理装置が有する投入部が、調整部が遅延させたコマンドを、優先度に基づいて処理部に投入する
本発明では、複数のコマンド・キューに割り当てた優先順位を動的に変更し、その変更後の優先順位に従って、複数のコマンド・キューのなかからコマンドを選択させる。優先順位の動的な変更により、本来、優先順位が低いコマンド・キューからコマンドを選択できるようになる。その結果、優先順位がより高いコマンド・キューに存在するコマンドによってコマンドが長期間、選択されないコマンド・キューが発生するのを回避することができる。
本発明では、パイプライン処理部に投入されたコマンドの優先順位別に、そのコマンドの再投入を監視し、その監視結果を基に、パイプライン処理部にコマンドを投入するタイミングを一時的、且つ強制的に変更する。その変更により、再投入(リトライ)を繰り返していたコマンドはそれまでとは異なるタイミングで再投入されることになる。それにより、リトライとならないタイミングで再投入される可能性が高くなる。その結果、リトライを繰り返す状況となるのを回避することができることとなる。
優先順位の異なる2つのコマンド・キューにそれぞれ存在するコマンド数によって選択されるコマンドを示すタイムチャートである。 パイプラインによるコマンド処理の進行を示すタイムチャートである。 本実施の形態によるコマンド選択装置、及びコマンド投入装置を搭載したプロセッサの構成を説明する図である。 MO−BUSコントローラ24の回路構成を説明する図である。 調停回路21の回路構成を説明する図である。 優先順位の異なる2つのコマンド・キューから選択されるコマンドを示すタイムチャートである。 パイプライン部22に投入されるコマンド、及びその処理の進行を示すタイムチャートである。
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図3は、本実施の形態によるコマンド選択装置、及びコマンド投入装置を搭載したプロセッサの構成を説明する図である。
そのプロセッサは、マルチ・プロセッサ・システムに対応した、2つのコア部10a、10bを搭載したマルチ・コア・プロセッサである。図3に示すように、それらのコア部10a、10bの他には、それらとコマンドやデータをやり取りする2次キャッシュ(L2−CACHE)部20を備えている。
2次キャッシュ部20は、調停回路21、パイプライン部22、MI(Moving In)−BUSコントローラ(以降「MIコントローラ」)23、MO(Moving Out)−BUSコントローラ(以降「MOコントローラ」)24、及びロックレジスタ群25を備えている。
上記調停回路21は、優先順位の異なる複数のコマンド・キューからコマンドを選択してパイプライン部22に投入する。パイプライン部22は、調停回路21が投入したコマンドを実行する。その実行中、リトライが必要か否かのチェックを行い、その必要があるとチェックした場合、その旨を調停回路21に通知する。また、アクセスを制限すべきレジスタが発生した場合には、そのレジスタを示す情報をロックレジスタ群25の何れかのロックレジスタに格納する。ここではその情報としてアドレス値を想定する。
MIコントローラ23は、システムバスに出力されたコマンドやデータを取り込むためのものである。MOコントローラ24は、システムバスにコマンドやデータを出力するためのものである。本実施の形態によるコマンド選択装置はMOコントローラ24上で実現され、コマンド投入装置は上記調停回路21として実現されている。
図4は、MOコントローラ24の回路構成を説明する図である。
そのコントローラ24は、コマンド・キュー格納用の4つのバッファ401a〜dを備えている。それにより、パイプライン部22の実行結果として出力されるコマンドは、その優先度に応じて何れかのバッファ401に格納される。各バッファ401a〜dに格納されたコマンドは、FIFO(First-In First-Out )方式で取り出される。ここでは、各バッファ401a〜dに格納されたコマンド・キューの優先順位は、図中、上方に位置するほど高いと想定する。その想定により、バッファ401aに格納されたコマンド・キューが最も優先順位が高いことになる。
コマンド選択(PRIORITY-LOGIC)部402は、各バッファ401a〜dからコマンドを入力し、そのうちの一つを選択してパケット・ジェネレータ403に出力する。そのジェネレータ403は、入力したコマンドを所定のパケット・フォーマットに整形して出力する。
乱数発生部405は、疑似的に乱数を発生させ、その乱数値に応じた信号を出力するものである。ハングカウンタ406b〜dの3つのハングカウンタ406は、対応するコマンド・キューにコマンドが存在しながら選択されなかった回数を計数するためのものである。符号の最後の「a」〜「d」は、対応関係の把握をより容易とするために付したものである。それにより、バッファ401bのコマンド・キュー用のハングカウンタ406には符号として「406b」を付している。バッファ401aのコマンド・キュー用のハングカウンタが存在しないのは、そのキューの優先順位が最も高いためである。各カウンタ406b〜dは、予め定めた値に達した場合にHの信号を出力する。
バッファ401aから読み出されたコマンドはAND(&)ゲート421にそのまま入力される。各カウンタ406b〜dの信号は反転されて入力される。それにより、そのコマンドは、各カウンタ406b〜dが出力する信号がLであることを条件に選択される。
ANDゲート421は、コマンドを入力するビット数分、存在する。しかし、ここでは混乱を避けるために、特に断らない限り、そのことは無視することにする。
バッファ401bから読み出されたコマンドはANDゲート422にそのまま入力される。各カウンタ406c〜dの信号(例えばキャリービットの信号)は反転されて入力される。このことから、そのコマンドは、各カウンタ406c〜dが出力する信号がLであればANDゲート422から出力される。
バッファ401cから読み出されたコマンドはANDゲート423にそのまま入力される。カウンタ406dの信号は反転されて入力される。このことから、そのコマンドは、カウンタ406dの信号がLであればANDゲート422から出力される。
バッファ401dから読み出されたコマンドはANDゲート426にそのまま入力される。そのANDゲート426には、ANDゲート421、422、及び423の各出力信号が反転されて入力される。このため、そのコマンドは、ANDゲート421、422、及び423の各出力信号が共にLであればANDゲート426から出力される。
それらANDゲート421、422、及び423には、ハングカウンタ406dの信号が反転入力される。このため、そのカウンタ406dの信号がHとなった場合、バッファ401dから読み出されたコマンドが選択され、パケット・ジェネレータ403に出力される。その選択によってカウンタ406dはリセット(RST)される。
ANDゲート423の出力信号はANDゲート425に入力される。そのANDゲート425には、ANDゲート421、及び422の出力信号が反転入力される。このため、ANDゲート421、及び422の各出力信号が共にLであった場合、ANDゲート423の出力信号がそのままANDゲート425から出力される。
ANDゲート423に反転入力されるカウンタ406dの出力信号は、ANDゲート421、及び422にそれぞれ反転入力される。カウンタ406cの出力信号は、それらにそれぞれ反転入力される。これらのことから、カウンタ406dの出力信号がL、カウンタ406cの出力信号がHの条件下では、バッファ401cから読み出されたコマンドが選択、つまりANDゲート425から出力されてパケット・ジェネレータ403に入力されることとなる。
ANDゲート422の出力信号はANDゲート424に入力される。そのANDゲート424には、ANDゲート421の出力信号が反転入力される。このため、ANDゲート421の出力信号がLであった場合、ANDゲート422の出力信号がそのままANDゲート424から出力される。
ANDゲート422に反転入力されるカウンタ406dの出力信号は、ANDゲート421、及び423にそれぞれ反転入力される。反転入力されるカウンタ406cの出力信号は、ANDゲート421に反転入力される。これらのことから、カウンタ406c、dの出力信号が共にL、カウンタ406bの出力信号がHの条件下では、バッファ401bから読み出されたコマンドが選択、つまりANDゲート424から出力されてパケット・ジェネレータ403に入力されることとなる。
各カウンタ406b〜dのカウントアップは、対応するバッファ401から読み出したコマンドが選択されなかった場合に行う。つまりカウンタ406bでは、バッファ401bから読み出したコマンドが存在し、且つ、ANDゲート424からそれが出力されていない場合に行う。このことから、例えばバッファ401bから読み出したコマンドの各ビットの論理和、及びANDゲート424の各出力信号の論理和をそれぞれ計算し、それらの排他的論理和を計算して得られる信号をカウントアップ用としてカウンタ406bに出力しても良い。その排他的論理和の値は、コマンドが選択されなかった場合のみ1(H)となる。一方、リセット用の信号としては、ANDゲート424の各出力信号の論理和を計算して得られる信号を出力しても良い。その値は、コマンドが選択された場合のみ1(H)となる。そのような信号によってリセットすることにより、バッファ401bに格納されたコマンド・キューは一時的に1回のみ最も優先順位が高くなる。これらは他のカウンタ406c、dでも同様である。
このようにして、本実施の形態では、優先順位が最も高いコマンド・キューを除くコマンド・キュー毎に、続けて選択されなかった回数を計数し、その計数値が予め定めた値に達すると、対応するコマンド・キューの優先順位を最も高くする形で選択され易くさせる。このため、より高い優先順位のコマンド・キューが存在するコマンド・キューでコマンドが長い期間、処理されないという状況が発生するのを確実に回避することができる。その結果、そのような状況の発生による性能の低下やハングの発生も確実に回避できることとなる。
図6は、優先順位の異なる2つのコマンド・キューから選択されるコマンドを示すタイムチャートである。その図6では、図1との比較を容易とするために、その図1と同じ状況下で選択されるコマンドを示している。
その状況下では、図1に示すように、従来ではコマンド・キュー(A)のコマンドが続けて選択される。しかし、一時的にコマンド・キュー(B)の優先順位を高くしたことにより、図6に示すように、その状況下でコマンド・キュー(B)のコマンドが1回、選択されている。
上述したように本実施の形態では、バッファ401b〜dに格納されたコマンド・キューの何れかを一時的に1回のみ最も優先順位を高くさせる。これは、本来、より高い優先順位のコマンドの処理を行わないことによって別の悪影響が発生するのを回避するためである。その理由から、本来の優先順位の変更については、長期間に渡って行う、一定周期で行う、或いは予め定めた条件を満たすまで行う、といったようなことを採用しないのが望ましい。
上記カウンタ406b〜dによる優先順位の一時的な変更は、或るコマンド・キューのコマンドを選択しない状況が長期間、継続するのを確実に回避するために行っている。本実施の形態では、そのような状況が継続しないように、ランダムに優先順位の一時的な変更を行うようにしている。乱数発生部405は、そのためのものである。
乱数発生部405は、図4に示すように、2つのレジスタ411、412、乱数値を例えば線形合同法の漸化式により更新する2つの更新部413、414、パリティチェックを行う2つのチェック部415、416、2つのセレクタ417、418、及び演算回路419を備えた構成となっている。
レジスタ411、412は例えばデータ保持用に8ビット、パリティチェック用に1ビットを持つものである。それらは共に乱数値の保持に用いられる。その初期値として保持させる値は任意であるが、マルチ・プロセッサ・システムでは、システム側から一定周期で送信される論理CPU番号を初期値として保持させても良い。
レジスタ411に保持された乱数値は更新部413、及びチェック部415に出力される。セレクタ417は、更新部413、414からそれぞれ更新後の乱数値を入力し、チェック部415が出力する信号に応じて、それらのうちの一方を選択し出力する。チェック部415は、チェックによりパリティエラーを検出した場合、例えば信号をアクティブにして、更新部414から入力される乱数値を選択させる。出力した乱数値はレジスタ411に保持される。
一方、レジスタ412に保持された乱数値は更新部414、及びチェック部416に出力される。セレクタ418は、更新部413、414からそれぞれ更新後の乱数値を入力し、チェック部416が出力する信号に応じて、それらのうちの一方を選択し出力する。チェック部416は、チェックによりパリティエラーを検出した場合、例えば信号をアクティブにして、更新部413から入力される乱数値を選択させる。出力した乱数値はレジスタ412に保持される。そのようにして、パリティエラーの影響を回避できるようにしている。
演算回路419は、レジスタ411に保持された乱数値を入力し、その値に応じた信号を、各カウンタ406b〜dとそれぞれ接続された配線に出力するものである。各カウンタ406b〜dとそれぞれ接続された配線に出力する信号は、以下のような乱数値の場合にHとする。ここでは、8ビットで表現された乱数値をR(i)(i=7〜0。7は最上位ビットに相当)と表現する。
カウンタ406bと接続された配線に出力する信号は、R(7)=1&R(6)=1&R(5)=0のときにHとする。カウンタ406cと接続された配線に出力する信号は、R(7)=1&R(6)=1&R(5)=1&R(4)=0のときにHとする。カウンタ406dと接続された配線に出力する信号は、R(7)=1&R(6)=1&R(5)=1&R(4)=1のときにHとする。
上述したような条件で出力される信号は、全てLか、或いはそのうちの1つのみがHとなる。このため、優先順位を変更する場合は、各バッファ401b〜dに格納されたコマンド・キューのなかの一つのみ、コマンドを選択できる状態にさせることとなる。
図5は、上記調停回路21の回路構成を説明する図である。次に図5を参照して、その回路構成、及び動作について詳細に説明する。その調停回路21は、上述したように、優先順位の異なる複数のコマンド・キューからコマンドを選択してパイプライン部22に投入するものである。
パイプライン部22に投入すべきコマンドは、その優先順位で分けられ、ポートA〜Dの何れかから入力される。各ポートA〜D用に、図中501a〜dを付した4つの調整回路501を用意してあり、ポートAからのコマンドは調整回路501aに入力される。同様に、ポートBからのコマンドは調整回路501b、ポートCからのコマンドは調整回路501c、ポートDからのコマンドは調整回路501dにそれぞれ入力される。そのように符号の最後に「a」〜「d」を付けることにより、ポートと調整回路501の対応関係の把握をより容易とさせている。ここでもコマンドの優先順位は、図中、上方に位置するほど高いと想定する。その想定により、ポートAからのコマンドが最も優先順位が高いことになる。例えばポートAのコマンドは、システム(プラットホーム)側からの要求に対するコア部10a、或いは10bの応答によるものである。ポートBのコマンドは、システム側からの要求に係わるもの、ポートCのコマンドは、コア部10a、或いは10bの何れかからの新規要求に係わるもの、ポートDのコマンドは、コア部10a、或いは10bの何れかからの投機的フェッチに係わるもの、である。
各調整回路501は、入力したコマンドをそれぞれコマンド選択(PRIORITY-LOGIC)部502に出力する。そのコマンド選択部502は、複数の調整回路501からコマンドを入力した場合、予め定められた優先順位に従って一つを選択してパイプライン部22に投入する。
調整回路501aには、リトライ・カウンタ504aは、パイプライン部22に投入された、ポートAからのコマンドのリトライが発生した回数を計数するためのものである。待ち時間発生部503aは、調整回路501aからコマンド選択部502にコマンドを出力するタイミングを遅延させる待ち時間を指定するためのものである。
リトライ・カウンタ504aは、図4に示す各カウンタ406と同様に、予め定めた値に達した場合にHの信号(例えばキャリービットの信号)を出力するものである。調整回路501aは、その信号がHとなると、待ち時間発生部503aによって指定される時間だけ、コマンド選択部502にコマンドを出力するタイミングを遅らせる。それにより、そのコマンドがコマンド選択部502によって選択・投入されるタイミングも本来より遅くなることになる。
対応するリトライ・カウンタ504、及び待ち時間発生部503は、特には図示していないが、他のポートにも存在している。それにより他の調整回路501b〜dも同様な動作を行うようになっている。
図7は、パイプライン部22に投入されるコマンド、及びその処理の進行を示すタイムチャートである。その図7では、図7との比較を容易とするために、その図1と同じ状況下で投入されるコマンドを示している。
図7では、リトライとなったコマンド(A)を再度、投入するタイミングを、動作用クロックで2周期分、遅らせている。その遅延により、再投入したコマンド(A)は処理を完了することができている。それによって次に投入されたコマンド(B2)はリトライとなって、再投入されている。
このように、リトライとなって再投入可能となったコマンドの再投入タイミングを強制的に遅延させることにより、そのコマンドのリトライが長期間、繰り返されるのを確実に回避させることができる。その遅延により、状況によっては投入されるコマンドの順序が変化する可能性がある。その順序の変更によってもリトライが長期間、繰り返されるのを回避できるようになる。遅延させる時間(強制的に発生させる待ち時間)は動作用クロックの1周期分の時間〜その時間にパイプラインの長さ(段数)の2倍を掛けた時間までの間にするのが望ましい。
なお、本実施の形態では、ポート毎にコマンドの再投入タイミングを遅延させているが、これは他のポートへの影響をより低減させて、処理するコマンドが少なくなるのを抑えるためである。しかし、再投入タイミングを遅延させることにより、同じコマンドのリトライが長期間、繰り返されるのを回避できることから、ポート全体で待ち時間を発生させても良い。また、同じコマンドのリトライが長期間、繰り返すことのみを回避させる場合には、そのリトライが所定の期間、発生しないことを条件に、対応するリトライ・カウンタ504のリセットを行うようにしても良い。コマンド選択装置、或いはコマンド投入装置を搭載する対象はASICなどであっても良い。

Claims (4)

  1. 投入されたコマンドを処理する処理部と、
    前記処理部が処理したコマンドを優先順位が割り当てられた複数のキューのいずれかに保持する保持部と、
    前記複数のキューのうち優先順位が最も高いキューを除いて、保持されたコマンドが選択されなかった非選択回数をキュー毎に計数する計数部と、
    乱数を発生する乱数部と、
    前記乱数部が生成した乱数が所定数に合致した場合、前記複数のキューに割り当てられた優先順位を、前記計数部が計数した非選択回数が所定値に達したキューの優先順位が最も高くなるように変更する変更部と、
    前記複数のキューに保持されたコマンドのいずれかを、優先順位に基づいて選択する選択部を有することを特徴とする演算処理装置
  2. 前記処理部はさらに、
    投入されたコマンドを処理できない場合にリトライを発生し、
    前記演算処理装置はさらに、
    コマンドを前記処理部に入力するとともに、優先度が割り当てられた複数の入力ポートと、
    前記処理部に投入されたコマンドにリトライが発生したかを入力ポート毎に監視する監視部と、
    コマンドを遅延させる遅延時間を入力ポート毎に指定する遅延部と、
    いずれかの入力ポートから前記処理部に投入されたコマンドにリトライが発生した旨を前記監視部が検出した場合、前記遅延部が指定する遅延時間に基づき、前記入力ポートからのコマンドを遅延させる調整部と、
    前記調整部が遅延させたコマンドを、前記優先度に基づいて前記処理部に投入する投入部を有することを特徴とする請求項1記載の演算処理装置
  3. 投入されたコマンドを処理する処理部と、前記処理部が処理したコマンドを優先順位が割り当てられた複数のキューのいずれかに保持する保持部とを有する演算処理装置の制御方法において、
    前記演算処理装置が有する計数部が、前記複数のキューのうち優先順位が最も高いキューを除いて、保持されたコマンドが選択されなかった非選択回数をキュー毎に計数し、
    前記演算処理装置が有する乱数部が、乱数を発生し、
    前記乱数部が生成した乱数が所定数に合致した場合、前記演算処理装置が有する変更部が、前記複数のキューに割り当てられた優先順位を、前記計数部が計数した非選択回数が所定値に達したキューの優先順位が最も高くなるように変更し、
    前記演算処理装置が有する選択部が、前記複数のキューに保持されたコマンドのいずれかを、優先順位に基づいて選択することを特徴とする演算処理装置の制御方法
  4. 前記処理部はさらに、
    投入されたコマンドを処理できない場合にリトライを発生し、
    前記演算処理装置の制御方法はさらに、
    前記演算処理装置が有する優先度が割り当てられた複数の入力ポートに、コマンドを入力し、
    前記演算処理装置が有する監視部が、前記処理部に投入されたコマンドにリトライが発生したかを入力ポート毎に監視し、
    前記演算処理装置が有する調整部が、いずれかの入力ポートから前記処理部に投入されたコマンドにリトライが発生した旨を前記監視部が検出した場合、指定されたコマンドを遅延させる遅延時間に基づき、前記入力ポートからのコマンドを遅延させ、
    前記演算処理装置が有する投入部が、前記調整部が遅延させたコマンドを、前記優先度に基づいて前記処理部に投入することを特徴とする請求項3記載の演算処理装置の制御方法
JP2008502600A 2006-02-28 2006-02-28 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP4801725B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303788 WO2007099613A1 (ja) 2006-02-28 2006-02-28 コマンド選択方法、装置、コマンド投入方法、及び装置

Publications (2)

Publication Number Publication Date
JPWO2007099613A1 JPWO2007099613A1 (ja) 2009-07-16
JP4801725B2 true JP4801725B2 (ja) 2011-10-26

Family

ID=38458737

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008502600A Expired - Fee Related JP4801725B2 (ja) 2006-02-28 2006-02-28 演算処理装置及び演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US8161274B2 (ja)
JP (1) JP4801725B2 (ja)
WO (1) WO2007099613A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007334641A (ja) * 2006-06-15 2007-12-27 Sony Corp 情報処理装置および方法、並びにプログラム
JP5413098B2 (ja) * 2009-09-29 2014-02-12 日本電気株式会社 調停優位性の切り替え方法、調停装置、及びプロセッサ
WO2011053891A2 (en) * 2009-10-31 2011-05-05 Rutgers, The State University Of New Jersey Virtual flow pipelining processing architecture
US20110321052A1 (en) * 2010-06-23 2011-12-29 International Business Machines Corporation Mutli-priority command processing among microcontrollers
US9154556B1 (en) 2011-12-27 2015-10-06 Emc Corporation Managing access to a limited number of computerized sessions
EP2807567B1 (en) * 2012-01-27 2018-03-07 Marvell World Trade Ltd. Systems and methods for dynamic priority control
JP5955385B2 (ja) * 2012-06-12 2016-07-20 三菱電機株式会社 情報処理システム
JP6179369B2 (ja) * 2013-11-22 2017-08-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6201812B2 (ja) * 2014-02-27 2017-09-27 大日本印刷株式会社 情報処理装置、及び情報処理方法
US10642668B2 (en) * 2018-04-18 2020-05-05 Open Text GXS ULC Producer-side prioritization of message processing
CN108663971A (zh) * 2018-06-01 2018-10-16 北京汉能光伏投资有限公司 命令转发方法及装置、太阳能系统和中央控制器
US20200004584A1 (en) * 2018-06-28 2020-01-02 William Burroughs Hardware Queue Manager for Scheduling Requests in a Processor
US11055128B2 (en) 2018-07-30 2021-07-06 Open Text GXS ULC System and method for request isolation
KR20220082563A (ko) * 2020-12-10 2022-06-17 삼성전자주식회사 스토리지 장치 및 이의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02143361A (ja) * 1988-11-25 1990-06-01 Nec Corp 処理順序決定回路
JPH09198264A (ja) * 1995-12-06 1997-07-31 Internatl Business Mach Corp <Ibm> データ処理システム用の動的待ち行列優先順位づけのシステムおよび方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371893A (en) * 1991-12-27 1994-12-06 International Business Machines Corporation Look-ahead priority arbitration system and method
JPH06119282A (ja) * 1992-10-05 1994-04-28 Mitsubishi Electric Corp デバイス制御装置及びその優先処理方式
US5896539A (en) * 1997-04-14 1999-04-20 International Business Machines Corporation Method and system for controlling access to a shared resource in a data processing system utilizing dynamically-determined weighted pseudo-random priorities
JPH10334042A (ja) * 1997-05-30 1998-12-18 Nec Eng Ltd バス調停制御装置及びバス調停制御方法並びにバス調停制御プログラムを記録した記録媒体
US6157963A (en) * 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
US6304906B1 (en) * 1998-08-06 2001-10-16 Hewlett-Packard Company Method and systems for allowing data service system to provide class-based services to its users
US6658485B1 (en) * 1998-10-19 2003-12-02 International Business Machines Corporation Dynamic priority-based scheduling in a message queuing system
CN1318993C (zh) * 2001-10-16 2007-05-30 皇家飞利浦电子股份有限公司 计算机系统和操作计算机系统的方法
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02143361A (ja) * 1988-11-25 1990-06-01 Nec Corp 処理順序決定回路
JPH09198264A (ja) * 1995-12-06 1997-07-31 Internatl Business Mach Corp <Ibm> データ処理システム用の動的待ち行列優先順位づけのシステムおよび方法

Also Published As

Publication number Publication date
WO2007099613A1 (ja) 2007-09-07
JPWO2007099613A1 (ja) 2009-07-16
US8161274B2 (en) 2012-04-17
US20090064153A1 (en) 2009-03-05

Similar Documents

Publication Publication Date Title
JP4801725B2 (ja) 演算処理装置及び演算処理装置の制御方法
US6240458B1 (en) System and method for programmably controlling data transfer request rates between data sources and destinations in a data processing system
JP5270077B2 (ja) 調停回路、クロスバ、リクエスト選択方法、及び情報処理装置
JP5498505B2 (ja) データバースト間の競合の解決
JP5895840B2 (ja) マルチプロセッサシステム、実行制御方法、実行制御プログラム
JP2007241918A (ja) プロセッサ装置
US8086766B2 (en) Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
JP2004199698A (ja) 複数の割込発生源から生じる割込要求の優先順位決定用割込制御装置ならびに割込制御方法
JP4829038B2 (ja) マルチプロセッサシステム
US7007138B2 (en) Apparatus, method, and computer program for resource request arbitration
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP4814653B2 (ja) リオーダリング装置
JP4846482B2 (ja) バスアービトレーション装置
JP5650441B2 (ja) 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
JP2013206095A (ja) データ処理装置及びデータ処理装置の制御方法
JP4376787B2 (ja) イベント通知方法、デバイス及びプロセッサシステム
JP6142783B2 (ja) メモリコントローラ,情報処理装置及びメモリコントローラの制御方法
US8667233B2 (en) Competition testing device
JPWO2010122607A1 (ja) 記憶制御装置及びその制御方法
JP5794632B2 (ja) メモリコントローラ、メモリ診断方法及びプロセッサシステム
JP6161395B2 (ja) 演算装置
JP3956652B2 (ja) プロセッサシステム
US20230409323A1 (en) Signal processing apparatus and non-transitory computer-readable storage medium
JP3882791B2 (ja) 計算機システムのノード閉塞装置及びそのトランザクション制御方法
JP5505963B2 (ja) ベクトル処理装置及びベクトル演算処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110711

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110805

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees