JP2012048399A - スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法 - Google Patents

スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法 Download PDF

Info

Publication number
JP2012048399A
JP2012048399A JP2010188745A JP2010188745A JP2012048399A JP 2012048399 A JP2012048399 A JP 2012048399A JP 2010188745 A JP2010188745 A JP 2010188745A JP 2010188745 A JP2010188745 A JP 2010188745A JP 2012048399 A JP2012048399 A JP 2012048399A
Authority
JP
Japan
Prior art keywords
thread
shared resource
threads
processor
specific instruction
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.)
Pending
Application number
JP2010188745A
Other languages
English (en)
Inventor
Naoki Ochi
直紀 越智
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
Original Assignee
Panasonic Corp
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 filed Critical Panasonic Corp
Priority to JP2010188745A priority Critical patent/JP2012048399A/ja
Priority to PCT/JP2011/004727 priority patent/WO2012026124A1/ja
Publication of JP2012048399A publication Critical patent/JP2012048399A/ja
Pending legal-status Critical Current

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

Abstract

【課題】マルチスレッドプロセッサにおいて各スレッドの命令の処理時間を保証可能にするスレッド調停システムを提供する。
【解決手段】プロセッサの共有リソースは、各スレッドに含まれる特定命令によって時分割に占有され、前記各スレッドは、前記各スレッドに順次排他的に割り当てられるタイムスロットにおいて前記特定命令の上流ステージが処理されることによって前記共有リソースを使用できる状態になり、その後、複数のタイムスロットにわたって前記特定命令の下流ステージの処理のために前記共有リソースを占有し、スレッド調停システムは、前記複数のスレッドのうち、第1スレッドが前記共有リソースの使用を終了したときに、前記第1スレッドと前記第1スレッドとは異なる第2スレッドとがそれぞれ前記共有リソースを使用できる状態にある場合、前記第1スレッドよりも先に前記第2スレッドに前記共有リソースを割り当てる。
【選択図】図1

Description

本発明は、スレッド調停システムに関し、特にマルチスレッドプロセッサに用いられるスレッド調停システムに関する。
従来、複数のスレッドを擬似並列的に処理できるマルチスレッドプロセッサが提案されている(例えば、特許文献1を参照)。スレッドとは、コンピュータシステムにおいて実行される1単位の処理、またはその処理をコンピュータシステムに実行させるためのコンピュータプログラムのことを言う。スレッドの大きさ(処理量または命令数)は、プログラムの設計者によって、任意に定められる。
図15は、そのようなプロセッサの構成および動作の一典型例を模式的に示す図である。このプロセッサは、ハードウェアリソース(以下では短く、リソースと言う)として、フェッチユニット、ディスパッチャ、デコーダ、演算器A、演算器Bを備えている。各命令は、複数のステージに分割して、各ステージに対応付けられたリソースによってパイプライン処理される。
図15には、3つのスレッドP、Q、Rの命令P1、Q1、R1、・・・の処理状況が示されている。このプロセッサでは、全ての命令の全てのステージが1単位時間で処理されるように構成され、各ステージでは、1単位時間ごとに異なるスレッドの命令が整然と処理されていく。
1単位時間は、例えば1クロックサイクルであってもよく、また所定の複数のクロックサイクルであってもよい。以下の説明では、1単位時間のことを一般的に1タイムスロットと言う。
このように構成されたプロセッサでは、プロセッサ内部のリソースを使用するためにスレッド間の競合が起こり得ないので、各スレッドからは実際の1/3の速度で動作するプロセッサを占有しているように見える。そして、各スレッドの各命令は常に確定した時間で処理が完了する。
このことは、複数のスレッドのそれぞれが実時間性を要求される処理を行う場合など、各スレッドの命令の処理に要する時間を保証する必要がある場合に極めて有用である。
特表2003−523561号公報
ところが、実際的には、実行ステージの処理に複数のタイムスロットを要する特定命令(例えば、除算命令)が定義され、プロセッサは、そのような特定命令の実行ステージを複数のタイムスロットにわたって処理するように構成されることがある。
説明のための例示として、特定命令(例えば除算命令)の上流ステージを1タイムスロットで処理し、特定命令の実行ステージを、共有リソース(例えば除算器)を用いて連続する3タイムスロットで処理するプロセッサを考える。共有リソースは、複数の特定命令によって時分割に占有される。
そのようなプロセッサでは、前述したプロセッサとは異なり、複数のスレッドの特定命令が、上流ステージの処理を終えて実行ステージの開始を待つ状況が生じ得る。そのような状況で、次にどのスレッドの特定命令の実行ステージを共有リソースで処理するのがよい方法なのかは必ずしも自明ではない。
単純な一例として、タイムスロットごとに特定命令の実行ステージを開始することが許可されるスレッドを定めておき、先行する特定命令の実行ステージが終わったときに待っている後続の特定命令のうち、そのタイムスロットで許可されるスレッドの特定命令の実行ステージを開始する方法を考えてみる。
図16は、そのような考え方に基づく特定命令の実行ステージの処理状況の一例を示す図である。
図16には、スレッドPの3つの特定命令P1、P2、P3、スレッドQの特定命令Q1、およびスレッドRの特定命令R1のそれぞれの実行ステージの処理状況が示される。特定命令の実行ステージは、上流ステージの処理が終了することで開始可能(太線)になる。実行ステージが開始可能になった特定命令は、そのスレッドの実行ステージの開始が許可されるタイムスロットが回ってきたときに共有リソースが空いている場合のみ実行中(実線の帯)になり、それまでは開始待ち(破線の帯)となる。
図16の例では、タイムスロット6の終了時点で3つの特定命令Q1、R1、P3が開始可能となり、演算器が空くタイムスロット7において、タイムスロット7で開始を許可されるスレッドPの特定命令P3の実行ステージが開始される。その結果、スレッドQの特定命令Q1およびスレッドRの特定命令R1は、いつ開始できるか不明のまま待たされ続けるという不都合が生じる。
つまり、一例として挙げたような、タイムスロットごとに特定命令の実行ステージを開始することが許可されるスレッドを定める方法では、各スレッドの命令の処理に要する時間を保証できないことが分かる。
しかしながら、各スレッドの命令の処理に要する時間を保証するための好適な方法は、従来知られていない。
本発明は、上記の事情に鑑みてなされたものであり、複数のスレッドを実行できるプロセッサにおいて好適に用いられ、各スレッドの命令の処理に要する時間を保証することができるスレッド調停システムを提供することを目的とするものである。
前記従来の課題を解決するために、本発明の1つの態様に係るスレッド調停システムは、各々がコンピュータプログラムに対応する複数のスレッドを、共有リソースを用いて実行するプロセッサにおいて、前記複数のスレッドに前記共有リソースを割り当てるための調停を行うスレッド調停システムであって、前記プロセッサにおいて、前記共有リソースは、前記各スレッドに含まれる特定命令によって時分割に占有され、前記各スレッドは、前記各スレッドに順次排他的に割り当てられるタイムスロットにおいて前記特定命令の上流ステージが処理されることによって前記共有リソースを使用できる状態になり、その後、複数のタイムスロットにわたって前記特定命令の下流ステージの処理のために前記共有リソースを占有し、前記スレッド調停システムは、前記複数のスレッドのうち、第1スレッドが前記共有リソースの使用を終了したときに、前記第1スレッドと前記第1スレッドとは異なる第2スレッドとがそれぞれ前記共有リソースを使用できる状態にある場合、前記第1スレッドよりも先に前記第2スレッドに前記共有リソースを割り当てる。
また、前記スレッド調停システムは、前記複数のスレッドのうち、第1スレッドが前記共有リソースの使用を終了したときに、2つ以上のスレッドがそれぞれ前記共有リソースを使用できる状態にある場合、前記2つ以上のスレッドのうち最も先に前記共有リソースを使用できる状態になっていたスレッドの特定命令を下流ステージへディスパッチしてもよい。
また、前記スレッド調停システムは、前記複数のスレッドのうち、第1スレッドが前記共有リソースを使用中に、前記第1スレッドとは異なる第2スレッドが前記共有リソースを使用できる状態になった場合、前記第1スレッドの後続する特定命令を、前記第2スレッドが前記共有リソースの使用を終了した後に、下流ステージへディスパッチしてもよい。
このような構成によれば、共有リソースを使用できる状態になっている複数のスレッドがある場合に、いずれか1つのスレッドが共有リソースを使い続けることがないので、共有リソースはすべてのスレッドに満遍なく割り当てられることになり、その結果、各スレッドの特定命令は、所定の保証時間内で処理を完了できる。
また、前記スレッド調停システムは、前記各スレッドに優先度を定め、前記複数のスレッドのうち、第1スレッドが前記共有リソースを使用中に、前記第1スレッドよりも優先度が高い第2スレッドが前記共有リソースを使用できる状態になった場合、前記第1スレッドによる前記共有リソースの使用を中止させ、前記第2スレッドの前記特定命令を下流ステージへディスパッチし、前記第2スレッドが前記共有リソースの使用を終了した後に、前記第1スレッドに前記共有リソースの使用を再開させてもよい。
このような構成によれば、最高位の優先度を持つスレッドについてのみ処理時間を保証することで、低位の優先度を持つスレッドの処理時間を保証しない代わりに、最高位の優先度を持つスレッドの特定命令に対してより短い処理時間を保証することができる。
また、本発明の1つの態様に係るプロセッサは、前述のスレッド調停システムを備えてもよい。
このような構成によれば、複数のスレッドの所要時間を保証できるプロセッサが得られる。
また、本発明の1つの態様に係る映像記録再生装置は、前述のプロセッサを備え、前記複数のスレッドのうち、第1スレッドにて映像記録処理を行い、第2スレッドにて映像再生処理を行ってもよい。
このような構成によれば、映像記録処理および映像再生処理の所要時間が正確に見積もられることから、それらの処理の所要時間の見積もりが定まらないことで生じる映像の欠落を回避する上で有効である。
本発明は、このようなスレッド調停システム、プロセッサ、および映像記録再生装置として実現できるだけでなく、スレッド調停方法として実現することもできる。
本発明に係るスレッド調停システムによれば、複数のスレッドのうち、第1スレッドが共有リソースの使用を終了したときに、前記第1スレッドと前記第1スレッドとは異なる第2スレッドとがそれぞれ前記共有リソースを使用できる状態にある場合、前記第1スレッドよりも先に前記第2スレッドに前記共有リソースを割り当てるので、前記共有リソースを使用できる状態になっている複数のスレッドがある場合に、いずれか1つのスレッドが共有リソースを使い続けることがない。
したがって、共有リソースはすべてのスレッドに満遍なく割り当てられることになり、その結果、各スレッドの処理に要する時間を保証できる。
本発明の実施の形態1に係るスレッド調停システムを備えるプロセッサの機能的な構成の一例を示すブロック図 本発明の実施の形態1に係るディスパッチャの具体的な構成の一例を示すブロック図 本発明の実施の形態1に係るディスパッチャの動作の一例を定義する状態遷移図 本発明の実施の形態1に係る特定命令の実行ステージの処理状況の一例を示す図 本発明の実施の形態2に係るスレッド調停システムを備えるプロセッサの機能的な構成の一例を示すブロック図 本発明の実施の形態2に係るディスパッチャの動作の一例を定義する状態遷移図 本発明の実施の形態2に係る特定命令の実行ステージの処理状況の一例を示す図 本発明の実施の形態3に係るスレッド調停システムを備えるプロセッサの機能的な構成の一例を示すブロック図 本発明の実施の形態3に係るディスパッチャの動作の一例を定義する状態遷移図 本発明の実施の形態3に係る特定命令の実行ステージの処理状況の一例を示す図 本発明の実施の形態4に係るプロセッサシステムの機能的な構成の一例を示すブロック図 本発明の実施の形態4に係るプロセッサシステムを用いた映像記録再生装置の外観の一例を示す図 比較例に係るプロセッサの機能的な構成の一例を示すブロック図 比較例に係るプロセッサの機能的な構成の一例を示すブロック図 従来のプロセッサの構成および動作の一典型例を模式的に示す図 特定命令の実行ステージの処理における課題を説明する図
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1に係るスレッド調停システムとしてのディスパッチャ30を備えるプロセッサ10の機能的な構成の一例を示すブロック図である。図1には、プロセッサ10とともに、プロセッサ10からアクセスされるメモリ60が示されている。
プロセッサ10は、複数のスレッドを擬似並列的に処理できるプロセッサであり、フェッチユニット20、ディスパッチャ30、デコーダ40、演算器A51、演算器B52、演算器X53、および信号線58を有している。
メモリ60は、スレッドP61、スレッドQ62、スレッドR63を保持している。ここで、スレッドP61、スレッドQ62、スレッドR63は、それぞれプロセッサ10で実行されるコンピュータプログラムである。
フェッチユニット20は、メモリ60から、スレッドP61、スレッドQ62、およびスレッドR63の命令をフェッチし、フェッチされた命令を順次ディスパッチャ30へ供給する。
ディスパッチャ30は、フェッチユニット20から供給された命令を、所定の順序でディスパッチすることにより、本発明のスレッド調停システムとして機能する。制御テーブル35には、スレッドの調停に関する情報が記録される。ディスパッチャ30からディスパッチされた命令は、デコーダ40に引き渡される。
デコーダ40は、ディスパッチャ30から引き渡された命令をデコードすることにより命令の種類を識別し、識別された命令の種類に応じて、演算器A51、演算器B52、演算器X53のいずれかに、命令の実行ステージの処理を行わせる。
演算器A51、演算器B52、および演算器X53は、命令の実行ステージ(例えば、算術演算、論理演算など)を処理する。
プロセッサ10の、フェッチユニット20、ディスパッチャ30、デコーダ40、演算器A51、および演算器B52は、背景技術において説明したように、それぞれが担当する命令のステージを1タイムスロットで処理するように構成され、これらのステージでは、タイムスロットごとに異なるスレッドの命令が整然と処理されていく。
そのため、演算器A51または演算器B52で実行ステージが処理される命令については、常に確定した時間で処理が完了する。この動作については、本願発明の範囲ではないため、説明を省略する。
他方、演算器X53は、特定命令の実行ステージを複数のタイムスロットにわたって処理する。一例を挙げるならば、特定命令は除算命令であり、演算器X53は除算命令の実行ステージを処理する除算器であってもよい。
本明細書では、実行ステージを複数のタイムスロットにわたって処理される命令のことを、一般に特定命令と呼ぶ。演算器X53は、本発明の共有リソースの一例であり、特定命令の実行ステージを処理するために、各スレッドによって時分割に占有される。
このように構成されたプロセッサ10では、複数のスレッドの特定命令が、上流ステージの処理を終えて、実行ステージの開始を待つ状況が生じ得る。
ディスパッチャ30は、この状況に対して、第1スレッドの先行する特定命令の実行ステージが終了したときに、第1スレッドの後続の特定命令と第1スレッドとは異なる第2スレッドの特定命令とがそれぞれ実行ステージの開始を待っている場合、第1スレッドの後続の特定命令よりも先に第2スレッドの特定命令をディスパッチする。
ディスパッチャ30のこの動作は、スレッド調停システムとして見れば、第1スレッドが共有リソースの使用を終了したときに、第1スレッドと第2スレッドとがそれぞれ共有リソースを使用できる状態にある場合、前記第1スレッドよりも先に前記第2スレッドに前記共有リソースを割り当てる動作に等しい。
ディスパッチャ30のより具体的な構成および動作について説明を続ける。
図2は、ディスパッチャ30の具体的な構成の一例を示すブロック図である。この例では、制御テーブル35は、特定命令を一時的に保持できるFIFO(First−In First−Out)35aで構成される。
演算器X53からディスパッチャ30に通知される演算器状態信号は、演算器X53が空いている(IDLE)か、使用中(BUSY)かを示す。
図3は、ディスパッチャ30の動作の一例を定義する状態遷移図である。図3のEMPTYはFIFO35aが空である状態を示し、EXISTはFIFO35aに1つ以上の特定命令が入っている状態を示す。曲線の矢印は状態遷移を示し、矢印に付した説明は、状態遷移が発生する条件と状態遷移の際にディスパッチャ30が行う動作(行う動作がある場合のみ)とをスラッシュで区切って示している。ディスパッチャ30は、図3に示される状態遷移図に従って、次のように動作する。
フェッチユニット20から特定命令が供給される前、FIFO35aが空である(S10)。このとき、フェッチユニット20から特定命令が供給されると、ディスパッチャ30は、その特定命令をFIFO35aに書き込む(S11)。フェッチユニット20からさらに特定命令が供給されると、ディスパッチャ30はその特定命令をFIFO35aに書き込む(S12)。演算器X53がBUSYであれば、FIFO35aに入っている特定命令は、ディスパッチされることなくFIFO35aに保持される(S13)。
ディスパッチャ30は、演算器X53がIDLEであれば直ちに、FIFO35aから先頭の特定命令を読み出してディスパッチする(S14、S15)。これにより、最も先に共有リソースである演算器X53を使用できる状態になっていた特定命令が下流ステージへディスパッチされる。ディスパッチャ30がFIFO35aから最後の特定命令を読み出してディスパッチすることで、FIFO35aが空になる(S15)。
ディスパッチャ30は、図3の状態遷移図に従って、あるスレッドが共有リソースの使用を終了したときに、2つ以上のスレッドがそれぞれ前記共有リソースを使用できる状態にある場合、前記2つ以上のスレッドのうち最も先に前記共有リソースを使用できる状態になっていたスレッドの特定命令をディスパッチする。
図4は、ディスパッチャ30が上述の動作を行う場合の、演算器X53における特定命令の実行ステージの処理状況の一例を示す図である。
図4には、スレッドPの3つの特定命令P1、P2、P3、スレッドQの3つの特定命令Q1、Q2、Q3、およびスレッドRの2つの特定命令R1、R2のそれぞれの実行ステージの処理状況が示される。特定命令の実行ステージは、上流ステージの処理が終了することでFIFO35aに書き込まれて開始可能(太線)になる。開始可能になった特定命令は、演算器X53が空いていればただちにディスパッチされて実行中(実線の帯)になり、演算器X53が使用中であれば開始待ち(破線の帯)となる。
また、図4には、それぞれの特定命令が開始可能になってから実行完了までに要する時間の上限である保証時間が矢印で示されている。この保証時間は、特定命令の処理時間を保証する必要があるスレッドの数に、特定命令の実行ステージを処理するためのタイムスロット数を乗じた数のタイムスロットで表される。
ここでは、3つのスレッドP、Q、Rの特定命令の処理時間を保証することができ、特定命令の実行ステージに3タイムスロットを要するとして、保証時間は9タイムスロットである。
この動作の特徴は、タイムスロット4に見られるように、スレッドPが共有リソースの使用を終了したときに、スレッドPと、スレッドPとは異なるスレッドQとが共有リソースを使用できる状態になっている場合、スレッドPよりも先にスレッドQに共有リソースが割り当てられることにある。
このような動作は、あるスレッド(スレッドP)が共有リソースの使用を終了したときに、ディスパッチャ30が、前記共有リソースを使用できる状態になっている2つ以上のスレッド(スレッドP、Q、R)のうち最も先に前記共有リソースを使用できる状態になっていたスレッド(スレッドQ)に共有リソースを割り当てることで実現されている。
これにより、共有リソースを使用できる状態になっている複数のスレッドがある場合に、いずれか1つのスレッドが共有リソースを使い続けることがないので、共有リソースはすべてのスレッドに満遍なく割り当てられることになり、その結果、各スレッドの特定命令の処理に要する時間を保証できる。
(実施の形態2)
図5は、本発明の実施の形態2に係るスレッド調停システムとしてのディスパッチャ31を備えるプロセッサ11の機能的な構成の一例を示すブロック図である。プロセッサ11は、実施の形態1のプロセッサ10と比べて、制御テーブル36の内容およびディスパッチャ31の動作が異なる。
以下、実施の形態1で説明した構成要素と同一の構成要素には同一の符号を付して適宜説明を省略し、実施の形態1との相違点について主に説明する。
ディスパッチャ31のスレッド調停システムとしての動作は、第1スレッドが共有リソースの使用を終了したときに、第1スレッドと第2スレッドとがそれぞれ共有リソースを使用できる状態にある場合、前記第1スレッドよりも先に前記第2スレッドに前記共有リソースを割り当てる点で、実施の形態1のディスパッチャ30と共通している。
ただし、ディスパッチャ31は、上述の動作を行うために、他のスレッドによって実行ステージの開始を待たされたスレッドが、自らの実行ステージが終了するまで、自らを待たせたスレッドの次の実行ステージの開始を規制(インヒビット)するという点で、実施の形態1のディスパッチャ30とは異なっている。
制御テーブル36は、個々のスレッドに対応して、命令状態欄36a、特定命令欄36b、インヒビタ欄36cを有している。制御テーブル36の各欄は、例えばレジスタを用いて構成される。
命令状態欄36aには、特定命令の実行ステージが演算器X53で実行中(EXEC)、開始待ち(READY)、または実行すべき特定命令がない(NONE)ことを示す情報が保持される。特定命令欄36bには、実行ステージの開始待ちまたは実行中の特定命令が保持される。インヒビタ欄36cには、そのインヒビタ欄36cに対応するスレッドによって実行ステージの開始が待たされた他のスレッドを識別する情報が保持される。インヒビタ欄36cに対応するスレッドの特定命令の実行ステージの開始は、インヒビタ欄36cに記録されたスレッドによって規制される。
演算器X53からディスパッチャ31に通知される演算器状態信号は、演算器X53が空いている(IDLE)か、使用中(BUSY)かを示す。
図6は、このように構成されたディスパッチャ31の動作の一例を定義する状態遷移図である。ディスパッチャ31は、図6の状態遷移図で定義される動作を、複数のスレッドのそれぞれを対象として並行して行う。図6のNONE、READY、EXECは、動作の対象とるスレッドの命令状態欄36aの内容を示す。
フェッチユニット20から特定命令が供給される前、命令状態欄36aがNONEである(S20)。このとき、フェッチユニット20から対象スレッドの特定命令が供給されると、ディスパッチャ31は、命令状態欄36aをREADYにし、その特定命令を特定命令欄36bに記録する(S21)。
ディスパッチャ31は、演算器X53がBUSYであれば、命令状態欄36aがEXECまたはREADYである他のスレッドのインヒビタ欄36cに対象スレッドを識別する情報を記録することで、他のスレッドの実行ステージの開始を規制する(S22)。
ディスパッチャ31は、演算器X53がIDLEであっても、対象スレッドのインヒビタ欄36cが空でない、つまり他のスレッドから開始を規制されていれば、特定命令欄36bに記録されている特定命令をディスパッチせずに待つ(S23)。
ディスパッチャ31は、演算器X53がIDLEであり、かつ対象スレッドのインヒビタ欄36cが空、つまり他のスレッドから開始を規制されていなければ、特定命令欄36bに記録されている特定命令をディスパッチし、命令状態欄36aをEXECにする(S24)。
その後、演算器X53がIDLEになると、ディスパッチャ31は、他のスレッドのインヒビタ欄36cから、対象スレッドを識別する情報を削除することで、他のスレッドに対する規制を解除する。そして、フェッチユニット20から対象スレッドの次の特定命令が供給されている場合は、ディスパッチャ31は、命令状態欄36aをREADYにし、その特定命令を特定命令欄36bに記録し(S25)、次の特定命令がなければ、ディスパッチャ31は、命令状態欄36aをNONEにする(S26)。
このような動作が、複数のスレッドのそれぞれを対象として並行して行われることで、他のスレッドによって実行ステージの開始を待たされたスレッドが、自らの実行ステージが終了するまで、自らを待たせたスレッドの次の実行ステージの開始を規制する全体的な動作が実現される。
ディスパッチャ31は、図6の状態遷移図に従って、第1スレッドが共有リソースを使用中に、前記第1スレッドとは異なる第2スレッドが前記共有リソースを使用できる状態になった場合、前記第1スレッドの後続する特定命令を、前記第2スレッドが前記共有リソースの使用を終了した後にディスパッチする。
図7は、ディスパッチャ31が上述の動作を行う場合の、演算器X53における特定命令の実行ステージの処理状況の一例を示す図である。
図7には、スレッドPの3つの特定命令P1、P2、P3、スレッドQの3つの特定命令Q1、Q2、Q3、およびスレッドRの2つの特定命令R1、R2のそれぞれの実行ステージの処理状況が示される。特定命令の実行ステージは、上流ステージの処理が終了することで特定命令欄36bに書き込まれて開始可能(太線)になる。開始可能になった特定命令は、演算器X53が空いていて、かつ他のスレッドから開始を規制されていなければディスパッチされて実行中(実線の帯)になり、演算器X53が使用中であれば開始待ち(破線の白帯)となり、他のスレッドから開始を規制されていれば開始規制中(破線の斜線帯)となる。開始規制中のスレッドに表示された括弧付きの符号は、そのスレッドの開始を規制しているスレッドを示している。
また、図7には、それぞれの特定命令が開始可能になってから実行完了までに要する時間の上限である保証時間が矢印で示されている。この保証時間は、図4で説明した保証時間と同じものである。
この動作の特徴は、タイムスロット4に見られるように、スレッドPが共有リソースの使用を終了したときに、スレッドPと、スレッドPとは異なるスレッドQとが共有リソースを使用できる状態になっている場合、スレッドPよりも先にスレッドQに共有リソースが割り当てられることにある。
このような動作は、第1スレッドが共有リソースを使用中に、前記第1スレッド(スレッドP)とは異なる第2スレッド(スレッドQ、R)が前記共有リソースを使用できる状態になった場合、ディスパッチャ31が、前記第1スレッド(スレッドP)の後続する特定命令を、前記第2スレッド(スレッドQ、R)が前記共有リソースの使用を終了した後にディスパッチすることで実現されている。
これにより、共有リソースを使用できる状態になっている複数のスレッドがある場合に、いずれか1つのスレッドが共有リソースを使い続けることがないので、共有リソースはすべてのスレッドに満遍なく割り当てられることになり、その結果、各スレッドの特定命令の処理に要する時間を保証できる。
(実施の形態3)
図8は、本発明の実施の形態3に係るスレッド調停システムとしてのディスパッチャ32を備えるプロセッサ12の機能的な構成の一例を示すブロック図である。プロセッサ12は、実施の形態1のプロセッサ10と比べて、制御テーブル37の内容およびディスパッチャ32の動作が異なる。
以下、実施の形態1で説明した構成要素と同一の構成要素には同一の符号を付して適宜説明を省略し、実施の形態1および実施の形態2との相違点について主に説明する。
ディスパッチャ32のスレッド調停システムとしての動作は、実施の形態1のディスパッチャ30および実施の形態2のディスパッチャ31と比べて、複数のスレッドのそれぞれに優先度を定め、優先度に基づいてスレッド調停を行う点が異なる。
ディスパッチャ32は、あるスレッドの特定命令の実行ステージの処理中に、優先度がより高いスレッドの特定命令の実行ステージが開始可能になった場合、処理中の実行ステージを止めて、優先度がより高いスレッドの特定命令の実行ステージを開始させる割り込み制御を行う。
ディスパッチャ32は、優先度が同一の複数のスレッド間では、実施の形態1のディスパッチャ30または実施の形態2のディスパッチャ31と同等のスレッド調停動作をするものとし、以下では、ディスパッチャ32によって行われる割り込み制御について詳細に説明する。
制御テーブル37は、個々のスレッドに対応して、命令状態欄37a、特定命令欄37b、優先度欄37cを有している。制御テーブル37の各欄は、例えばレジスタを用いて構成される。
命令状態欄37aには、特定命令の実行ステージが演算器X53で実行中(EXEC)、開始待ち(READY)、または実行すべき特定命令がない(NONE)ことを示す情報が保持される。特定命令欄37bには、実行ステージの開始待ちまたは実行中の特定命令が保持される。優先度欄37cには、そのスレッドの優先度を示す値が保持される。この値は小さいほど高い優先度を示す。優先度の最大数は限定されない。
演算器X53からディスパッチャ32に通知される演算器状態信号は、演算器X53が空いている(IDLE)か、使用中(BUSY)かを示す。
図9は、このように構成されたディスパッチャ32の動作の一例を定義する状態遷移図である。ディスパッチャ32は、図9の状態遷移図で定義される動作を、複数のスレッドのそれぞれを対象として並行して行う。図9のNONE、READY、EXECは、動作の対象とるスレッドの命令状態欄37aの内容を示す。
フェッチユニット20から特定命令が供給される前、命令状態欄37aがNONEである(S30)。このとき、フェッチユニット20から対象スレッドの特定命令が供給されると、ディスパッチャ32は、命令状態欄37aをREADYにし、その特定命令を特定命令欄37bに記録する(S31)。
演算器X53がBUSYであれば、ディスパッチャ32は、命令状態欄37aがACTIVEである他のスレッド(つまり演算器X53を現在使用しているスレッド)の優先度と対象スレッドの優先度とを、優先度欄37cの値に基づいて比較する。そして演算器X53を使用しているスレッドが、対象スレッドの優先度と等しい優先度を持つ等位スレッドであるか、より高い優先度を持つ上位スレッドである場合は、対象スレッドの特定命令をディスパッチせずに待つ(S32)。
ディスパッチャ32は、演算器X53がIDLEであれば、特定命令欄37bに記録されている特定命令をディスパッチして、命令状態欄37aをEXECにする(S33)。
演算器X53がBUSYであって、かつ対象スレッドよりも優先度が低い下位スレッドによって使用されている場合、ディスパッチャ32は、演算器X53で現在処理中の特定命令の実行ステージが終了するのを待つことなく、特定命令欄37bに記録されている特定命令をディスパッチし、命令状態欄37aをEXECにする(S34)。
演算器X53は、新たな特定命令がディスパッチされることによって、現在処理中の特定命令の実行ステージを中止して、当該新たな特定命令の実行ステージの処理を開始する。
命令状態欄37aがEXECのとき、優先度がより高い上位スレッドがREADYになった場合、その上位スレッドから割り込まれることで演算器X53における処理が中止されるため、ディスパッチャ32は、命令状態欄37aをREADYにする(S35)。
命令状態欄37aがEXECのとき、演算器X53がIDLEになった場合、つまり、演算器X53における処理が完了した場合は、フェッチユニット20から対象スレッドの次の特定命令が供給されていれば、ディスパッチャ32は、命令状態欄37aをREADYにし、その特定命令を特定命令欄37bに記録し(S36)、次の特定命令がなければ、ディスパッチャ32は、命令状態欄37aをNONEにする(S37)。
このような動作が、複数のスレッドのそれぞれを対象として並行して行われることで、あるスレッドの特定命令の実行ステージの処理中に、優先度がより高いスレッドの特定命令の実行ステージが開始可能になった場合、処理中の実行ステージを止めて、優先度がより高いスレッドの特定命令の実行ステージを開始させる割り込み制御が実現される。
図10は、ディスパッチャ32が上述の動作を行う場合の、演算器X53における特定命令の実行ステージの処理状況の一例を示す図である。
図10には、スレッドPの3つの特定命令P1、P2、P3、スレッドQの3つの特定命令Q1、Q2、Q3、およびスレッドRの2つの特定命令R1、R2のそれぞれの実行ステージの処理状況が示される。ここでは、スレッドP、Qの優先度が、スレッドRの優先度よりも高いとする。
特定命令の実行ステージは、上流ステージの処理が終了することで特定命令欄36bに書き込まれて開始可能(太線)になる。開始可能になった特定命令は、演算器X53が空いていれば直ちにディスパッチされて実行中になるか、または、演算器X53が低位のスレッドで使用中であれば割り込んでディスパッチされて実行中(実線の帯)になり、演算器X53が等位または上位のスレッドで使用中であれば開始待ち(破線の白帯)となる。割り込まれた低位のスレッドの実行ステージは中止され(破線の縦縞帯)、後に再びディスパッチされる。
再びディスパッチされた特定命令の実行ステージは、最初からやり直しされてもよい。また、特定命令の実行ステージが中止される時点での途中経過(共有リソースの状態)を退避用のリソース(例えば図示されていないレジスタ)に保持しておき、その特定命令が再びディスパッチされたときに、退避用のリソースに保持されている途中経過を共有リソースへ復帰して、続きを処理してもよい。退避用のリソースは、優先度の最大数から1少ない数だけ設ければよい。
また、図10には、それぞれの特定命令が開始可能になってから実行完了までに要する時間の上限である保証時間が矢印で示されている。この保証時間は、特定命令の処理時間を保証する必要があるスレッドの数に、特定命令の実行ステージを処理するためのタイムスロット数を乗じた数のタイムスロットで表される。
ここでは、最上位の優先度を持つ2つのスレッドP、Qの特定命令の処理時間を保証することができ、特定命令の実行ステージに3タイムスロットを要するとして、保証時間は6タイムスロットである。実施の形態1および実施の形態2の例と比べると、処理時間を保証するスレッドが減ることで、保証時間が短縮される。
この動作の特徴は、タイムスロット17およびタイムスロット22に見られるように、上位のスレッドが低位のスレッドに割り込んで共有リソースを獲得する割り込み制御にある。このような動作のため、低位のスレッドの特定命令の処理時間は保証されない代わりに、上位のスレッドの保証時間が短縮される。
(実施の形態4)
上記で説明したプロセッサ10、11、12は、それぞれ特有のスレッド調停システムとしてのディスパッチャ30、31、32を備え、複数のスレッドの特定命令の処理時間を保証できることから、複数のスレッドのそれぞれが実時間性を要求される処理を行う応用にとって極めて有用である。
本発明の実施の形態4では、そのような応用の一例としてのプロセッサシステムおよび映像記録再生装置について説明する。
図11は、本発明の実施の形態4に係る、プロセッサ10、11、または12を用いたプロセッサシステム100の機能的な構成の一例を示すブロック図である。
プロセッサシステム100は、映像音声ストリームに関する様々な信号処理を行うシステムLSIであり、前述したプロセッサ10、11、または12を備えている。プロセッサシステム100は、例えば、映像記録再生装置に用いられる。
図12は、プロセッサシステム100を用いた映像記録再生装置200の外観の一例を示す図である。映像記録再生装置200は、一つの典型例として、放送波から映像音声ストリームを取得し、当該映像音声ストリームで表される放送番組を記録しながら、当該放送番組を表示装置201に表示するといった処理を行う。
図11に示されるように、プロセッサシステム100は、プロセッサ10、ストリームI/Oブロック71、AVIO(Audio Visual Input Output)ブロック72、およびメモリIFブロック73を備える。
プロセッサシステム100は、放送番組を表示装置201に表示するため、例えば、ストリームI/Oブロック71で放送波から映像音声ストリームを取得し、プロセッサ10で映像音声ストリームを映像音声データに伸長し、AVIOブロック72で映像音声データから映像音声信号を生成して表示装置201に出力する。
また、プロセッサシステム100は、放送番組を前記の表示と並行して記録するため、例えば、プロセッサ10で前記映像音声データを記録用のフォーマットに圧縮し、圧縮された映像音声データを、メモリIFブロック73を介して、外部メモリ60に記録する。
このような処理において、放送番組の表示および記録の欠落(いわゆるコマ落ち)を防ぐために、プロセッサ10で行われる映像音声ストリームの伸長処理および映像音声データの圧縮処理のそれぞれの所要時間が、正確に見積もられる必要がある。
そこで、映像音声ストリームの伸長処理を含む映像再生処理および映像音声データの圧縮処理を含む映像記録処理のそれぞれをスレッドとしてプロセッサ10で実行することで、命令の処理時間を保証する。これにより、映像音声ストリームの伸長処理(広くは、映像表示処理)および映像音声データの圧縮処理(広くは、映像記録処理)のそれぞれの所要時間を正確に見積もることが可能となる。
(比較例との対比による効果の説明)
本発明の実施の形態とは異なる構成によって複数のスレッドの特定命令の処理時間を保証するプロセッサを比較例に用いて、本発明の実施の形態に係るスレッド調停システムの優位性について、さらに説明する。
図13は、比較例に係るプロセッサの機能的な構成の一例を示すブロック図である。このプロセッサは、処理できるスレッドと同数の演算器を持っている。このように構成されたプロセッサでは、複数のスレッドがそれぞれ演算器を占有できるので、スレッドの処理時間を保証することができる。しかしながら、スレッド数が変わると演算器の数を変える必要があり、かつプロセッサの面積や消費電力が増加するといった不利がある。
図14は、他の比較例に係るプロセッサの機能的な構成の一例を示すブロック図である。このプロセッサは、実行ステージが処理できるスレッドと同数のステージに分割されている。このように構成されたプロセッサでは、複数のスレッドがそれぞれ分割されたステージを占有して処理されるので、スレッドの処理時間を保証することができる。しかしながら、スレッド数が変わるとステージの数を変える必要があり、かつプロセッサの面積や消費電力が増加するといった不利がある。
これらのプロセッサによれば、スレッドの数と同数の演算器を設け、またステージを分割する必要がある点で構成の柔軟性に欠け、またプロセッサの面積や消費電力が増加することから、各スレッドの処理時間を保証するために十分に満足できる解決策を与えるものではない。
これらのプロセッサと比較して、本発明の実施の形態に係るスレッド調停システムを備えるプロセッサでは、演算器X53は1つでよく、また実行ステージが分割される数も固定でよい。その上で、各スレッドの特定命令の実行順序を制御することで各スレッドの処理時間を保証するので、比較例のプロセッサと比べてプロセッサの面積や消費電力の増加も抑制できるという利点がある。
本発明にかかるスレッド調停システムは、マルチスレッドプロセッサ、映像記録再生装置などにおいて、複数のスレッドそれぞれの処理時間を保証する必要がある応用に有用である。
10、11、12 プロセッサ
20 フェッチユニット
30、31、32 ディスパッチャ
35、36、37 制御テーブル
40 デコーダ
51 演算器A
52 演算器B
53 演算器X
58 信号線
59 信号線
60 メモリ
61 スレッドP
62 スレッドQ
63 スレッドR
71 ストリームI/Oブロック
72 AVIOブロック
73 メモリIFブロック
100 プロセッサシステム
200 映像記録再生装置
201 表示装置

Claims (7)

  1. 各々がコンピュータプログラムに対応する複数のスレッドを、共有リソースを用いて実行するプロセッサにおいて、前記複数のスレッドに前記共有リソースを割り当てるための調停を行うスレッド調停システムであって、
    前記プロセッサにおいて、
    前記共有リソースは、前記各スレッドに含まれる特定命令によって時分割に占有され、
    前記各スレッドは、前記各スレッドに順次排他的に割り当てられるタイムスロットにおいて前記特定命令の上流ステージが処理されることによって前記共有リソースを使用できる状態になり、その後、複数のタイムスロットにわたって前記特定命令の下流ステージの処理のために前記共有リソースを占有し、
    前記スレッド調停システムは、
    前記複数のスレッドのうち、第1スレッドが前記共有リソースの使用を終了したときに、前記第1スレッドと前記第1スレッドとは異なる第2スレッドとがそれぞれ前記共有リソースを使用できる状態にある場合、前記第1スレッドよりも先に前記第2スレッドに前記共有リソースを割り当てる
    スレッド調停システム。
  2. 前記スレッド調停システムは、
    前記複数のスレッドのうち、第1スレッドが前記共有リソースの使用を終了したときに、2つ以上のスレッドがそれぞれ前記共有リソースを使用できる状態にある場合、前記2つ以上のスレッドのうち最も先に前記共有リソースを使用できる状態になっていたスレッドの特定命令を下流ステージへディスパッチする
    請求項1に記載のスレッド調停システム。
  3. 前記スレッド調停システムは、
    前記複数のスレッドのうち、第1スレッドが前記共有リソースを使用中に、前記第1スレッドとは異なる第2スレッドが前記共有リソースを使用できる状態になった場合、前記第1スレッドの後続する特定命令を、前記第2スレッドが前記共有リソースの使用を終了した後に、下流ステージへディスパッチする
    請求項1に記載のスレッド調停システム。
  4. 前記スレッド調停システムは、
    前記各スレッドに優先度を定め、
    前記複数のスレッドのうち、第1スレッドが前記共有リソースを使用中に、前記第1スレッドよりも優先度が高い第2スレッドが前記共有リソースを使用できる状態になった場合、前記第1スレッドによる前記共有リソースの使用を中止させ、前記第2スレッドの前記特定命令を下流ステージへディスパッチし、
    前記第2スレッドが前記共有リソースの使用を終了した後に、前記第1スレッドに前記共有リソースの使用を再開させる
    請求項1に記載のスレッド調停システム。
  5. 請求項1から4のいずれか1項に記載のスレッド調停システムを備えるプロセッサ。
  6. 請求項5に記載のプロセッサを備え、前記複数のスレッドのうち、第1スレッドにて映像記録処理を行い、第2スレッドにて映像再生処理を行う映像記録再生装置。
  7. 各々がコンピュータプログラムに対応する複数のスレッドを、共有リソースを用いて実行するプロセッサにおいて、前記複数のスレッドに前記共有リソースを割り当てるための調停を行うスレッド調停方法であって、
    前記プロセッサにおいて、
    前記共有リソースは、前記各スレッドに含まれる特定命令によって時分割に占有され、
    前記各スレッドは、前記各スレッドに順次排他的に割り当てられるタイムスロットにおいて前記特定命令の上流ステージが処理されることによって前記共有リソースを使用できる状態になり、その後、複数のタイムスロットにわたって前記特定命令の下流ステージの処理のために前記共有リソースを占有し、
    前記スレッド調停方法は、
    前記複数のスレッドのうち、第1スレッドが前記共有リソースの使用を終了したときに、前記第1スレッドと前記第1スレッドとは異なる第2スレッドとがそれぞれ前記共有リソースを使用できる状態にある場合、前記第1スレッドよりも先に前記第2スレッドに前記共有リソースを割り当てる
    スレッド調停方法。
JP2010188745A 2010-08-25 2010-08-25 スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法 Pending JP2012048399A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010188745A JP2012048399A (ja) 2010-08-25 2010-08-25 スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法
PCT/JP2011/004727 WO2012026124A1 (ja) 2010-08-25 2011-08-25 スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010188745A JP2012048399A (ja) 2010-08-25 2010-08-25 スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法

Publications (1)

Publication Number Publication Date
JP2012048399A true JP2012048399A (ja) 2012-03-08

Family

ID=45723146

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010188745A Pending JP2012048399A (ja) 2010-08-25 2010-08-25 スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法

Country Status (2)

Country Link
JP (1) JP2012048399A (ja)
WO (1) WO2012026124A1 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7472390B2 (en) * 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
JP2006343872A (ja) * 2005-06-07 2006-12-21 Keio Gijuku マルチスレッド中央演算装置および同時マルチスレッディング制御方法

Also Published As

Publication number Publication date
WO2012026124A1 (ja) 2012-03-01

Similar Documents

Publication Publication Date Title
US10891158B2 (en) Task scheduling method and apparatus
JP5097251B2 (ja) 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法
KR100591727B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 정보처리시스템
JP6199477B2 (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
US7979680B2 (en) Multi-threaded parallel processor methods and apparatus
KR100623217B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 실시간 처리시스템
EP2593862B1 (en) Out-of-order command execution in a multimedia processor
KR100649107B1 (ko) 실시간 동작 수행방법 및 시스템
US8407454B2 (en) Processing long-latency instructions in a pipelined processor
JP2008123045A (ja) プロセッサ
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
US9588808B2 (en) Multi-core system performing packet processing with context switching
JP2010050970A (ja) 中央処理装置と画像処理装置との間で通信するための機器および方法
WO2009023461A1 (en) Multi-threaded processing with reduced context switching
US20120284720A1 (en) Hardware assisted scheduling in computer system
KR20130066900A (ko) 연성 실시간 운영체제의 실시간성 확보방법
US8225320B2 (en) Processing data using continuous processing task and binary routine
US20240036921A1 (en) Cascading of Graph Streaming Processors
WO2024041625A1 (zh) 多线程处理器的指令分发方法、装置和存储介质
JP2006146758A (ja) コンピュータシステム
CN116795503A (zh) 任务调度方法、任务调度装置、图形处理器及电子设备
EP3591518B1 (en) Processor and instruction scheduling method
WO2012026124A1 (ja) スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法
JP2760273B2 (ja) 演算装置及びその制御方法
CN111381887B (zh) 在mvp处理器中进行图像运动补偿的方法、装置及处理器