JP5945779B2 - マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ - Google Patents

マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ Download PDF

Info

Publication number
JP5945779B2
JP5945779B2 JP2011550346A JP2011550346A JP5945779B2 JP 5945779 B2 JP5945779 B2 JP 5945779B2 JP 2011550346 A JP2011550346 A JP 2011550346A JP 2011550346 A JP2011550346 A JP 2011550346A JP 5945779 B2 JP5945779 B2 JP 5945779B2
Authority
JP
Japan
Prior art keywords
unit
order information
execution
thread
received
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
JP2011550346A
Other languages
English (en)
Other versions
JPWO2011158460A1 (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 Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management 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 Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Publication of JPWO2011158460A1 publication Critical patent/JPWO2011158460A1/ja
Application granted granted Critical
Publication of JP5945779B2 publication Critical patent/JP5945779B2/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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本発明は、ループ処理における繰り返し単位を複数のスレッドに分けて並列実行する技術に関する。
あるひとつのループ処理を、複数のスレッドで分担して並列に処理する(マルチスレッド化する)に際しては、並列して処理した場合と逐次的に処理した場合の両場合で最終的な変数の値が同じ値になっている必要がある。これを「終値保証」と呼ぶ。
このような終値保証を図る技術として、特許文献1,2の技術が知られている。
特許文献2においては、あるループ処理を並列化するに際して、並列プロセス毎に領域を設ける。それから、各並列プロセスで定義される変数に、最終の繰り返しかどうかを示すコードを付加した後で、対応する領域に格納するようにする。
そして、ループ処理に対するすべての並列プロセスの実行が完了すると、各領域に格納された変数に付加されたコードを手がかりとして、最終の繰り返しを担当するプロセスに対応する変数を特定する。続いて、特定した変数を取り出すことにより、変数の値を正しく参照できるとしている。
特許第3269639号公報 特開平5−181687号公報
しかしながら、特許文献2の手法を上述のループ処理のマルチスレッド化に適用しようとすると、スレッド毎に領域を設けて、各スレッドで扱う変数をこの領域に格納することとなる。
このため、スレッド数に比例して必要なメモリ領域が増大するという問題がある。例えば、スレッド数が16個であれば、対応して16個分のメモリ領域が必要となる。
本発明は、このような問題を解決するものであり、少量のメモリ領域で終値保証を実現可能なマルチスレッド並列実行装置を提供することを目的とする。
本発明に係るマルチスレッド並列実行装置は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とする。
本発明に係るマルチスレッド並列実行装置によれば、受信手段が値と順番情報との組を受信すると、格納手段へと受信した情報を上書きするかどうかを、受信された順番情報と格納された順番情報のそれぞれにより示される順番の先後に基づいて異ならせることができるので、適切に上書き制御して終値保証を実現できる。
また、格納手段へは値と順番情報とを上書きすることで、マルチスレッド数が増えたとしても、上記格納手段のメモリ領域を増やさないようにすることができる。
マルチスレッド並列実行装置101の機能ブロック図 データ更新管理部103における処理を示すフローチャート 上書き要否の判定表 サンプルプログラム1と、このサンプルプログラム1を逐次的に実行した場合の処理結果を示す図 図4のサンプルプログラム1を、スレッド1,2を利用して並列実行した場合の各イタレーションの処理結果を示す図 イタレーション番号1→3→2→4の順番で実行された場合の、情報の流れと暫定データ格納部104の上書きの有無を説明する図の前半 イタレーション番号1→3→2→4の順番で実行された場合の、情報の流れと暫定データ格納部104の上書きの有無を説明する図の後半 (a)ブレークポイントが設定されているサンプルプログラム2を示す図、(b)サンプルプログラム2を逐次的に実行した場合に、2番目のイタレーションにおいてブレークする様子を示すイメージ図、(c)サンプルプログラム2を、スレッド1,2を利用して並列実行したときのイメージ図 マルチスレッド並列実行装置901の機能ブロック図 データ更新管理部903における処理を示すフローチャート 上書き要否の判定表 マルチスレッド並列実行装置1201の機能ブロック図 マルチスレッドコンパイラ1302の構成図 処理スレッドプログラム生成部1304における処理を示すフローチャート 集積回路1501の機能ブロック図 放送ストリーム再生装置1601の機能ブロック図 放送ストリーム蓄積装置1701の機能ブロック図 蓄積ストリーム再生装置1801の機能ブロック図 蓄積ストリーム再符号化装置1901の機能ブロック図 変形例を示す図 データ更新管理部103における処理を示すフローチャート マルチスレッド並列実行装置2201の機能ブロック図
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1に示すように、マルチスレッド並列実行装置101は、マルチスレッド実行部102、データ更新管理部103、暫定データ格納部104、確定データ格納部105を備える。
マルチスレッド実行部102は、例えばCPUから構成され、プログラムを実行する。
このプログラムは、ループ処理の繰り返し単位(イタレーションという)に相当する命令群を含んでいる。
マルチスレッド実行部102は、このイタレーションを複数のスレッドに分けて並列実行する。
この並列実行中、マルチスレッド実行部102は、各スレッドにおけるイタレーションが終了する毎に、イタレーションの実行結果を示す値と、実行したイタレーションがループ処理中で何番目(この順番は、ループ処理を仮に逐次実行した時における実行の順番と一致する。)であるかを示すイタレーション番号i(th)の組を受信部111へと送信する。
また並列実行終了時には、マルチスレッド実行部102は、終了判定部113宛に終了を示す終了情報を送る。
データ更新管理部103は、マルチスレッド実行部102による並列実行に応じて、暫定データ格納部104および確定データ格納部105のデータ更新を管理する。
データ更新管理部103は、受信部111、格納制御部112、終了判定部113、確定部114を備える。
受信部111は、マルチスレッド実行部102から送信されてくる、イタレーションの実行結果を示す値と、実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号i(th)との組を含む情報を受信する。
格納制御部112は、暫定データ格納部104のデータが無い場合には、受信部111が受信した値とイタレーション番号i(th)の組を暫定データ格納部104に格納する。また、格納制御部112は、暫定データ格納部104に対応する情報が既に格納されている場合には、後述する条件に従って、上書き格納するかしないかの制御を行う。
終了判定部113は、マルチスレッド実行部102から上述の終了情報を受信すると、並列実行の終了を判定する。そして終了を判定すると、確定部114にその旨を通知する。
なお、並列実行終了の判定は、これに限らず一般的な手法を用いることができる。
確定部114は、終了判定部113から終了判定した旨の通知を受け取ると、暫定データ格納部104に格納されている値を取りだして、確定データ格納部105へと反映する(コピーする)。
暫定データ格納部104は、マルチスレッド実行部102による並列実行中に、上述した値とイタレーション番号iとを格納するためのものである。
なお、本明細書では、暫定データ格納部104に格納されているイタレーション番号は”i”と表記し、受信部111がマルチスレッド実行部102から受信したイタレーション番号を”i(th)”と区別して表記することとする。
確定データ格納部105は、上記ひとつのループ処理の実行結果としての値を格納するためのものである。
なお、両格納部104,105は例えばRAM(Random Access Memory)から構成される。
続いてマルチスレッド並列実行時におけるデータ更新管理部103の動作について図2を参照しながら説明する。
まず、格納制御部112は、暫定データ格納部104の内容クリアなどの初期設定を行う(S21)。
その後、終了判定部113により並列実行の終了が判定される(S22:Yes)までは、ステップS23〜S25の処理の繰り返しとなる。
受信部111が値とイタレーション番号i(th)とを受信すると(S23:Yes)、格納制御部112は、暫定データ格納部104の値とイタレーション番号iの組を、受信した値とイタレーション番号i(th)とにより上書きする必要があるかどうかを判定する(S24)。
この判定は、図3の表に沿ったものとなる。つまり、格納制御部112は、受信部111が受信したイタレーション番号i(th)と、暫定データ格納部104に格納されているイタレーション番号iとの大小関係に基づいて判定を行う。
すなわち、イタレーション番号iがイタレーション番号i(th)より大きければ(i>i(th))、格納制御部112は上書きが不要と判定する(S24:No)。
これに対して、イタレーション番号iがイタレーション番号i(th)以下であれば(i≦i(th))、格納制御部112は上書きが必要と判定する(S24:Yes)。なお、並列実行の開始直後の場合など、暫定データ格納部104にデータが格納されていないときにも上書きが必要と判定する。
そして、格納制御部112は受信した値とイタレーション番号i(th)の組を暫定データ格納部104に上書きする(S25)。
この上書きにより、格納制御部112では、イタレーションの順番が前順の値が消去され、イタレーションの順番がより後順の値が格納されることとなる。
終了判定部113により並列実行の終了が判定されると(S22:Yes)、確定部114は、暫定データ格納部104の値を取りだして確定データ格納部105に反映する。
なお、暫定データ格納部104のデータが無効の場合(マルチスレッド実行部から1つもデータが送信されなかった場合や、送信されたデータがすべてnullだった場合など)には、確定部114は値の取り出しを行わないとしてもよい。
以上のようなフローによれば、並列実行中に繰り返されるステップS23〜S25により、暫定データ格納部104に格納される値は、イタレーションの実行結果として出力される複数の値の中で、順番が最も後ろの順番である値となる。
したがって、並列実行の終了後には、逐次的に処理した場合と、同じ値を確定データ格納部105に反映させることができ、終値保証を図ることができる。
しかも、暫定データ格納部104に格納するデータは、値とイタレーション番号のひとつの組だけで足り、スレッド毎にメモリ領域を用意する場合と比べて少ないメモリ領域とすることができる。
続いて、並列実行の具体例を挙げてさらに詳しく説明する。
図4は、サンプルプログラム1を示す図である。このサンプルプログラム1のソースコードは、a=0,1,2,3と4回のイタレーションを行うことを示している。
このサンプルプログラム1を逐次的に実行した場合には、
(1)a=0のとき、b[a]=b[0]=2>−2よりc=0+1=1
(2)a=1のとき、b[a]=b[1]=1>−2よりc=1+1=2
(3)a=2のとき、b[a]=b[2]=−1>−2よりc=2+1=3
(4)a=3のとき、b[a]=b[3]=−2≦−2よりcは更新されず
となるので、c=3となり、値”3”が処理結果となる。
このサンプルプログラム1の4回のイタレーションを、スレッド1(a=0,1を担当)とスレッド2(a=2,3を担当)とに2回分ずつ割り当てるとする。
図5に示すように、1番目のイタレーション(a=0)を終えたスレッド”1”は、値1とイタレーション番号”1”の組を、データ更新管理部103の受信部111へと送信する。
同様に、スレッド1,2は、各回のイタレーションが終了する度に、その処理結果の値とイタレーション番号の組を、データ更新管理部103の受信部111へ送信することとなる。
さて、図5の4回のイタレーションが、イタレーション番号1→3→2→4の順番で終了した場合を考える。
この場合における各種データの変遷のイメージを図6,図7に示す。
図6(a)に示すように、1番目のイタレーション終了時には、マルチスレッド実行部は、データ更新管理部103へとイタレーションの実行結果である値"1"と、イタレーション番号"1"とを送る。
この値"1"とイタレーション番号"1"をデータ更新管理部103の受信部111が受信すると、データ更新管理部103の格納制御部112は、暫定データ格納部104にデータが格納されていないので、上書き必要と判定して上書きを行う(図2,S23:Yes,S24:Yes,S25)。
図6(b)に示すように、3番目のイタレーション終了時には、データ更新管理部103の格納制御部112は、暫定データ格納部104に格納されたイタレーション番号”1”は、受信部111が受信したイタレーション番号”3”以下であるので上書き必要と判定して上書きを行う(S23:Yes,S24:Yes,S25)。
図7(c)に示すように、2番目のイタレーション終了時には、データ更新管理部103の格納制御部112は、暫定データ格納部104に格納されたイタレーション番号”3”は、受信部111が受信したイタレーション番号”2”より大きいので上書き不要と判定する(S23:Yes,S24:No)。そして、格納制御部112は、受信部111が受信した値”2”とイタレーション番号”2”を破棄する。
図7(d)に示すように、4番目のイタレーション終了時には、データ更新管理部103の受信部111が受信した値は”null”と空であるので格納制御部112は上書き不要と判定する(S23:Yes,S24:No)。そして、格納制御部112は、受信部111が受信した値” null”とイタレーション番号”4”を破棄する。
図7(e)に示すように、すべてのイタレーションが終了して、マルチスレッド実行部102から並列実行の終了を示す終了情報が送信され、データ更新部103の終了判定部113がこの終了情報を受信すると(S22:Yes)、確定部114は、暫定データ格納部104に格納された値”3”を取得して、確定データ格納部105へ格納する(S26)。
このように確定データ格納部105に格納された値”3”は、逐次的に処理したときの処理結果の値”3”(図4参照)と一致しており終値保証が実現されていることがわかる。
(実施の形態2)
実施の形態2は、ループ処理における繰り返し単位に、処理を途中で打ち切るためのブレークポイントが設定されている場合にも終値保証を図ろうとするものである。
このようにブレークポイントが設定されている場合には、逐次的に実行するときと並列的に実行するときとで実行の態様が異なってくるので、終値保証を実現するためにはさらなる工夫が必要である。具体的に図8を用いて説明する。
図8(a)に示すサンプルプログラム2には、4回のイタレーションを含むループ処理が記述されている。
このプログラムを逐次的に実行することを考える。この実行において、2番目のイタレーションでブレークポイントに到達したとすると、3番目,4番目のイタレーションは実行しないこととなる(図8(b))。
ここで、このサンプルプログラム2の4回のイタレーションを、図8(c)に示すように、スレッド1とスレッド2とに2回分ずつ割り当てるとする。
上述したように、逐次的に実行した場合には、3番目,4番目のイタレーションは実行しないので、並列実行の場合にも、3番目,4番目のイタレーションの処理結果を一連の処理の最終的な値としては反映しないようにする必要がある。
そこで、本実施の形態2では、ブレークポイントに到達したかどうかを示すブレークフラグ(到達時にはON、未到達時にはOFFとなるフラグである)を利用することで、終値保証の実現を図る。
図9に示すように、マルチスレッド並列実行装置901は、マルチスレッド実行部902、データ更新管理部903、暫定データ格納部904を備える。
マルチスレッド実行部902は、各スレッドにおけるイタレーションが終了する毎に、イタレーションの実行結果を示す値、実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号i(th)、およびブレークポイントに到達したかどうかを示すブレークフラグの組を受信部911へと送信する。他の機能はマルチスレッド実行部102(図1)と同様である。
データ更新管理部903の格納制御部912は、受信部911が受信した、値とイタレーション番号i(th)とブレークフラグの三者の組に基づいて、上書き格納するかしないかの制御を行う。
暫定データ格納部904は、マルチスレッド実行部902による並列実行中に、値とイタレーション番号iとブレークフラグの三者の組を格納するためのものである。
図9のその他の機能ブロックは、図1を用いて説明した機能ブロックと同様なので説明を省略する。
続いて、マルチスレッド並列実行時におけるデータ更新管理部903の動作について図10を参照しながら説明する。
図10において、図2と同じ番号を付したステップS21〜S22,S26は、図2と同様のため説明を省略する。
特に、受信部911が値とイタレーション番号i(th)とブレークフラグの組を受信すると(S103:Yes)、格納制御部912は、暫定データ格納部904の値とイタレーション番号iとブレークフラグとを、受信した値とイタレーション番号i(th)とブレークフラグとにより上書きする必要があるかどうかを判定する(S104)。
この判定は、図11の表に沿ったものとなる。
図11の表に示すように、受信部911が受信したブレークフラグのON/OFF、暫定データ格納部904に格納されたブレークフラグのON/OFF、イタレーション番号の大小関係の3つの要素に基づいて、格納制御部912は上書きするか上書きしないかを判定する。
以下、図11の表中、L1〜L6の各行において、上書きの有無を異ならせている理由について簡単に説明する。
L1〜L2の行は、実施の形態1と同様に、よりイタレーション番号が後順の値を暫定データ格納部904に格納することをねらいとしている。
L3の行は、暫定データ格納部904にはブレークしたときの値が格納済みであるので上書きしないとしている。
L4の行は、受信部911が受信した値が、ブレークしたときの値であるので、上書きを行うとしている。
L5,L6の行は、複数のイタレーションの中で、2以上のイタレーションにおいてブレークポイントに到達した場合である。このとき、暫定データ格納部104には、ブレークポイントへ最初(逐次処理したと仮定した場合の順番において最初)に到達したイタレーションに対応する値を残す必要がある。
従ってL5の行では、受信部911が受信したイタレーション番号i(th)が、暫定データ格納部904に格納されたイタレーション番号iより前順であれば、上書きを行うとする。L6の行はL5の行の反対となっている。
格納制御部912は、図11の表に従って、上書きが必要と判定すると(S104:Yes)、受信した値とイタレーション番号i(th)とブレークフラグの組を暫定データ格納部904に上書きする(S105)。
その後、終了判定部113により並列実行の終了が判定される(S22:Yes)までは、ステップS103,S104,S105の処理の繰り返しとなる。
そして、終了判定部113により並列実行の終了が判定されると(S22:Yes)、確定部114は、暫定データ格納部904に格納された値を確定データ格納部105へ反映する(S26)。
このとき、暫定データ格納部904に格納されている値は、逐次処理したと仮定した場合の順番において、ブレークポイントへ最初に到達したイタレーションに対応する値が格納されているので、終値保証を実現することができる。
(実施の形態3)
実施の形態3は、実施の形態1のデータ更新管理部103を、マルチスレッド実行部内の管理スレッドとして構成するものである。
図12に示すように、マルチスレッド並列実行装置1201は、マルチスレッド実行部1202を備える。このマルチスレッド実行部1202は、ループ処理のイタレーションを分担して処理する処理スレッド1202a,1202bと、データ更新管理スレッド1203とを含む。
データ更新管理スレッド1203は、データ更新管理部103(図1)と同等の機能を備えている。
つまり、データ更新管理スレッド1203は次の(1)〜(4)の機能を備える。
(1)処理スレッド1202a,1202bからイタレーションの実行結果を示す値と、実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号i(th)との組を含む情報を受信する機能(図1:受信部111に対応する機能)。
(2)受信した情報を基に、暫定データ格納部104に上書き格納するかしないかの制御を行う機能(図1:格納制御部112に対応する機能)。
(3)処理スレッド1202a,1202bから並列実行の終了を示す終了情報を受信すると、並列実行の終了を判定する機能(図1:終了判定部113に対応する機能)。
(4)並列実行の終了を判定すると、暫定データ格納部104に格納されている値を取りだして、確定データ格納部105へと反映する機能(図1:確定部114に対応する機能)。
なお、データ更新管理スレッド1203に、実施の形態2で説明したデータ更新管理部903(図9)の機能を備えるように構成しても構わない。
(実施の形態4)
実施の形態4では、ソースプログラムから処理スレッドやデータ更新管理スレッド向けのプログラムを生成するマルチスレッドコンパイラについて説明する。
図13は、マルチスレッドコンパイラ1302の構成図である。
図13において、マルチスレッドコンパイラ1302は、ソースプログラム1301を入力とし、処理スレッドプログラム1310、データ更新管理スレッドプログラム1311を生成する。
前処理部1303は、ソースプログラム1301に対して、ループ最適化などの前処理を実行する。
処理スレッドプログラム生成部1304は、並列処理可能なループ処理およびループ内で複数の処理スレッドから代入される変数を導出し、データ更新管理スレッドによる管理対象となる管理対象変数リスト1305および並列化処理とデータ更新管理スレッドへの通知処理を付加した処理スレッドプログラムの中間コード1306を生成する。
データ更新管理スレッドプログラム生成部1307は、管理対象変数リスト1305の各変数に対して、図2に示すフローチャートの動作を行うための、データ更新管理スレッドプログラムの中間コード1308を生成する。
後処理部1309は、処理スレッドプログラムの中間コード1306およびデータ更新管理スレッドプログラムの中間コード1308に対して、コード変換などの後処理を実行する。
図14は、処理スレッドプログラム生成部1304のフローチャートである。
図14において、処理スレッドプログラム生成部はまず、未解析のループ処理があるかを判定する(S1401)。
未解析のループ処理がない場合(S1401:No)、処理を終了する。
未解析のループ処理がある場合(S1401:Yes)、このループのイタレーション間に依存があるかを判定する(S1402)。
ループのイタレーション間に依存がある場合(S1402:有り)、未解析のループ処理があるかの判定(S1401)に戻る。
ループのイタレーション間に依存がない場合(S1402:無し)、未解析のループ内代入変数があるかを判定する(S1403)。
未解析のループ内代入変数がない場合(S1403:No)、並列処理開始、終了処理の付加(S1408)へ進む。
未解析のループ内代入変数がある場合(S1403:Yes)、以下の処理を行う。
この変数がループ外で参照される場合(S1404:Yes)、データ更新管理スレッドに通知するためのスレッドデータ更新情報の通知処理を付加する(S1405)。
ここでいう「スレッドデータ更新情報」とは、各処理スレッドが扱うデータの更新に係る情報である。例えば、イタレーションの実行結果を示す値とイタレーション番号i(th)との組を含んでいる。
この変数がループ内で参照される場合(S1406:Yes)、前記変数を処理スレッド内専用に複製化する(S1407)。
続いて、並列処理開始処理および終了処理を付加し(S1408)、未解析のループ処理があるかの判定(S1401)に戻る。
係る構成によれば、データ更新管理スレッドが各処理スレッドからのスレッドデータ更新情報を受信し、データ更新情報を更新するか否かの判定を行い、終値保証に不要なデータは破棄し、必要な1つのデータのみを格納することにより、処理スレッドごとにデータ更新情報を格納する領域を必要としないため、少量のメモリ領域によってマルチスレッド並列実行時の終値保証が可能となる。
また、マルチスレッド実行手段の上でデータ更新管理スレッドを実行することにより、既存のマルチスレッド実行手段を用いて実現することが可能である。また、マルチスレッドコンパイラによって、1つのスレッドで動作するプログラムからマルチスレッド実行手段の上で動作可能であり、終値保証を実現したプログラムを自動的に生成することができる。
なお、マルチスレッドコンパイラ1302が生成する処理スレッドプログラム1310は、1つのプログラムであってもよいし、複数のプログラムで構成されてもよい。
なお、処理スレッドプログラム1310およびデータ更新管理スレッドプログラム1311は、ソースプログラムと同じ言語のプログラムでもよいし、マルチスレッド動作手段の上で動作するオブジェクトコードでもよい。
なお、本実施の形態4では、管理対象変数リスト1305、処理スレッドプログラムの中間コード1306、およびデータ更新管理スレッドプログラムの中間コード1308を生成しているが、ファイルなどに生成してもよいし、コンパイラ内部で情報を保持するだけでもよい。
また、本実施の形態4では前処理部1303をその他処理部と分けて示しているが、前処理部1303がない構成も考えられる。また、前処理部1303がその他の処理部に含まれる構成も取り得る。
なお、本実施の形態4では後処理部1309をその他処理部と分けて示しているが、後処理部1309がない構成も考えられる。また、後処理部1309がその他の処理部に含まれる構成も取り得る。
(実施の形態5)
実施の形態5は、実施の形態1などで説明したマルチスレッド並列実行装置を、集積回路(LSI)で構成するものである。この集積回路は、デジタルテレビやブルーレイディスクレコーダーなどの各種AV機器に搭載することができる。
図15に示すように、集積回路1501は、マルチスレッド実行部1202と、暫定データ格納部104を備える。
なお、集積回路は例えばLSIであり、個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用してもよい。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
(実施の形態6)
実施の形態1で説明したマルチスレッド並列実行装置は、様々な装置に組み込んで、復号や再符号化を実行させることが好適である。
図16に示す放送ストリーム再生装置1601は、放送ストリームを受信する受信部1602、受信された放送ストリームを復号する復号部1603、復号された放送ストリームを再生する再生部1604を備える。この復号部1603は、マルチスレッド並列実行装置101を含んで構成される。
図17に示す放送ストリーム蓄積装置1701は、放送ストリームを受信する受信部1602、受信された放送ストリームを再符号化する再符号化部1705、再符号化された放送ストリームを蓄積する蓄積部1706を備える。この再符号化部1705は、マルチスレッド並列実行装置101を含んで構成される。
図18に示す蓄積ストリーム再生装置1801は、ストリームを蓄積する蓄積部1706、蓄積されたストリームを復号する復号部1603、復号されたストリームを再生する再生部1604を備える。この復号部1603は、マルチスレッド並列実行装置101を含んで構成される。
図19に示す蓄積ストリーム再符号化装置1901は、ストリームを蓄積する蓄積部1706、蓄積されたストリームを再符号化する再符号化部1705を備える。この再符号化部1705は、マルチスレッド並列実行装置101を含んで構成される。
なお、本実施の形態6は、各実施の形態と適宜組み合わせることができる。例えば、実施の形態5で説明した集積回路1501を、放送ストリーム再生装置1601に組み込んでもよい。
(実施の形態7)
実施の形態1では、暫定データ格納部104が格納する情報は、イタレーションの実行結果を示す値とイタレーション番号iとの1組であったが、これらの組を複数格納するとしても構わない。
このように複数の組を格納することにより、複数種類のイタレーションを並列して実行する場合にも終値保証を図ることができる。
図22を用いて一例を説明する。マルチスレッド並列実行装置2201は、マルチスレッド実行部2202、データ更新管理部2203、暫定データ格納部2204を備える。
暫定データ格納部2204は、それぞれ(1)イタレーションの実行結果を示す値、(2)イタレーション番号i、(3)イタレーションの種類を識別するための識別ID、の三者からなる組をn個(nは2以上の整数である。)格納している。
マルチスレッド実行部2202は、複数種類のイタレーションを並列実行する機能を有し、各スレッドにおけるイタレーションが終了する毎に、イタレーションの実行結果を示す値、イタレーション番号i、および識別IDを受信部2211へと送信する。
また、マルチスレッド実行部2202は、複数種類のうちのいずれかの全イタレーションが終了すると、終了したイタレーションの種類を識別するための識別IDを含む終了情報を終了判定部2213に送信する。
格納制御部2212は、受信部2211が値とイタレーション番号iと識別IDの三者の組を受信すると、受信したイタレーション番号iと、暫定データ格納部2204中で受信した識別IDに対応するイタレーション番号iの大小関係に基づいて、その識別IDに対応する値およびイタレーション番号iを上書き格納するかしないかの制御を行う。
格納制御部2212が上書き格納する際には、暫定データ格納部2204が格納している情報の中から、識別IDに対応する値およびイタレーション番号iを上書きの対象とする。
終了判定部2213が、マルチスレッド実行部2202から上記終了情報を受信すると、確定部2214は、暫定データ格納部2204に格納された組の中から、この終了情報に含まれる識別IDに対応する値を取得して、確定データ格納部2205に格納する。
なお、どの種類のイタレーションによる処理結果かを区別するために、確定データ格納部2205において、値に識別IDを関連付けて格納するとしても構わない。
以上、本実施の形態7について説明したが、実施の形態2で説明したブレイクフラグを用いる変形例も考えられる。具体的な構成としては、マルチスレッド実行部2202は各スレッドにおけるイタレーションが終了する毎に、
(1)イタレーションの実行結果を示す値、
(2)実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号i(th)、
(3)イタレーションの種類を識別するための識別ID、
(4)ブレークポイントに到達したかどうかを示すブレークフラグ
の4種類の情報を、受信部2211へと送信する。そして、格納制御部2212は、受信したイタレーション番号iと暫定データ格納部2204中で受信した識別IDに対応するイタレーション番号iとの大小関係、および、受信したブレイクフラグのON/OFFと暫定データ格納部2204中で受信した識別IDに対応するブレイクフラグのON/OFFとに基づいて上書き格納の有無を判定を行う。この判定の方法は、図11を用いて説明したものと同様であるので説明は省略する。
(実施の形態8)
各実施の形態で説明したマルチスレッド実行部が発行する命令に以下の(1)〜(3)で説明するような内容を含めるとしても構わない。これらの命令はフレキシブルな並列実行に貢献することができる。基本的な構成は図1で説明したものと同様のため、以下の本実施の形態の説明では図1の機能ブロックを用いて行う。
(1)暫定データ格納部104の情報を無効化する命令
マルチスレッド実行部102から受信部111を介してこの命令を受けた格納制御部112は、暫定データ格納部104の情報を無効化する(あるいはクリアする。)。係る命令は、マルチスレッド並列実行の初期設定(図2,S21)などに利用することができる。
(2)スレッドデータ更新情報を管理ハードウェアに送信する命令
スレッドデータ更新情報(各処理スレッドが扱うデータの更新に係る情報である。)を管理ハードウェアに送信する命令である。
(3)暫定データ格納部104の情報を実際の変数に反映する命令
暫定データ格納部104の情報を、確定データ格納部105に格納し実際の変数に反映する命令である。係る命令は、例えば、値の反映処理(図2,S26)において利用することができる。
(実施の形態9)
本実施の形態9は、実施の形態7,8を混合したような実施の形態である。以下の説明では図22の機能ブロックを用いて行う。
実施の形態9では、実施の形態7同様、暫定データ格納部2204は、それぞれ(1)イタレーションの実行結果を示す値、(2)イタレーション番号i、(3)識別ID、の三者からなる組をn個(nは2以上の整数である。)格納している。
そして、マルチスレッド実行部2202のスレッドデータ更新情報には、このn個の組の中のいずれかを特定するための識別IDを含める。
また、マルチスレッド実行部2202において、以下のような命令を発行するとしてもよい。下記(1)〜(3)のいずれも命令の実行対象を識別するための1以上の識別IDを含む。
(1)暫定データ格納部2204の領域を確保または無効化する命令
暫定データ格納部2204内の識別ID用に対応する領域を確保または無効化する命令である。これらの命令は、マルチスレッド並列実行の初期設定(図2,S21)に利用することができる。
また、確保(無効化)ができなかった場合には、例外処理を起こしたり、各領域の占有状態を管理するステータスレジスタを更新することが考えられる。
(2)スレッドデータ更新情報を管理ハードウェアに送信する命令
指定した識別IDに対応するスレッドデータ更新情報を管理ハードウェアに送信する命令である。
(3)暫定データ格納部2204の情報を実際の変数に反映する命令
指定した識別IDに対応する暫定データ格納部2204の情報を、確定データ格納部2205に格納し実際の変数に反映する命令である。係る命令は、例えば、値の反映処理(図2,S26)において利用することができる。
(4)暫定データ格納部2204の領域を開放する命令
暫定データ格納部2204内の1以上の識別ID用に対応する領域を開放する命令である。係る命令は、例えば、値の反映処理(図2,S26)を経て用が無くなった領域を対象に利用することができる。
また、前記(3)および(4)に係る処理を1命令で実現するようにしても構わない。
<補足1>
以上、本実施の形態について説明したが、本発明は上記の内容に限定されず、本発明の目的とそれに関連又は付随する目的を達成するための各種形態においても実施可能であり、例えば、以下であっても構わない。
(1)実施の形態では、図5に示すように、値を更新しないイタレーションの場合に、マルチスレッド実行部102はデータが空であることを示す”null”を送信するとして説明したがこれに限られない。例えば、値を更新しないイタレーションに関しては、マルチスレッド実行部102は値やイタレーション番号を送信しないとしても構わない。
(2)実施の形態においては、図1のように暫定データ格納部104と確定データ格納部105とは、別の格納手段として示したが、同一のデータ格納手段であるとしてもよい。
(3)実施の形態では、図4のようにfor〜if文の命令を繰り返しの例に挙げて説明したがこれに限られない。例えばC言語においては、for文、while文、do while文などを用いることができる。
(4)実施の形態では、各イタレーションが終了する毎にマルチスレッド実行部102がその実行結果である値とイタレーション番号とを送信するとしたが、これに代えて、スレッドの終了を契機に送るようにしてもよい。
例えば、図20(a)に示すように、スレッド1の処理が終了すると、マルチスレッド実行部102は、スレッド1が担当したイタレーションの実行結果を示す値"2"と、スレッド番号"th1"を送る。
同様にスレッド2の処理が終了すると、マルチスレッド実行部102は、スレッド2が担当したイタレーションの実行結果を示す値"3"と、スレッド番号"th2"を送る。
そして、データ更新部管理部103の格納制御部112は、スレッド番号の大小関係に基づいて上書きの要否を判断する。
図20(b)の例では、暫定データ格納部に格納されているスレッド番号"th2"が受信したスレッド番号"th1"より後順なので上書きしないとしている。
(5)実施の形態では、図2に示すように初期設定(S21)について簡単な説明に留めたが、例えば次のようにしてデータ更新の有無に応じた挙動を行うようにしても構わない。
すなわち図21に示すように、初期設定として、格納制御部112はイタレーション番号を”−1”に設定する(S2101)。
そして、並列実行終了後(S22:Yes)、格納制御部112はイタレーション番号が”−1”のままであれば(S2102:No)、暫定データ格納部104の値が並列実行にも関わらず更新されなかったことを意味するので、データの反映(S26)をスキップする。
(6)実施の形態では、図7(e)に示すように、並列実行の終了時には暫定データ格納部104に格納された値を”3”、確定データ格納部105へと反映するとしているがこれに限られない。
要は、値”3”が並列実行の結果として確定できるようにすればよい。例えば、結果であることを示す情報を値”3”に付加しても構わない。
(7)各実施の形態では、マルチスレッド実行部における処理スレッド数は2個として説明したが、これに限らず、2個以上であれば任意の個数を取り得る。
例えば、処理スレッド数が4個や8個であってもよい。
(8)実施の形態1〜9や本補足の内容を組み合わせて実施しても構わない。
<補足2>
本実施の形態は、以下の態様を含むものである。
(1)本実施の形態に係るマルチスレッド並列実行装置は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とする。
(2)前記ひとつのループ処理における繰り返し単位には、処理を途中で打ち切るためのブレークポイントが設定されており、前記受信手段が受信する前記組は、前記値と前記順番情報とに加えて、前記ブレークポイントへ到達済みか未到達かを示すフラグを含み、前記格納手段は、前記値と前記順番情報と前記フラグとを含む組を格納するためのものであり、前記制御手段は、前記受信手段により受信された前記組に含まれる前記順番情報と前記フラグを、前記格納手段に格納された前記順番情報と前記フラグとに参照して、前記上書きの制御を行うこととしても構わない。
この構成によれば、ブレークポイントが設定されたループ処理においても終値保証を図ることができる。
(3)前記制御手段は、前記ひとつのループ処理を、逐次処理したと仮定した場合にブレークポイントへ最初に到達した繰り返し単位に対応する値が前記格納手段に格納されていれば、前記上書きを抑止するとしても構わない。
(4)前記制御手段は、前記受信手段による受信があった場合に、受信された前記順番情報が前記格納部に格納された順番情報より後順を示しているときには、受信された前記値と前記順番情報との組を前記格納部に上書きさせ、受信された前記順番情報が前記格納部に格納された順番情報より前順を示しているときには、受信された前記値と前記順番情報との組を前記格納部に上書きさせないとしても構わない。
(5)前記ひとつのループ処理における繰り返し単位は、イタレーションであって、前記順番情報は、イタレーションの順番を示すイタレーション番号であるとしても構わない。
(6)前記受信手段、前記制御手段および前記確定手段は、前記実行手段による実行対象となる管理スレッドにより構成されているとしても構わない。
(7)前記実行手段が並列実行する繰り返し単位は複数の種類があり、前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行うとしても構わない。
(8)前記実行手段は、前記格納手段が格納している情報を無効化する命令、前記組を管理用ハードウェアに送信する命令、または、前記格納手段に格納された値を、実際の変数に反映する命令、の少なくともいずれか1つの命令を発行するとしても構わない。
(9)(8)において、前記実行手段が並列実行する繰り返し単位は複数種類あり、前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行うものであって、前記実行手段が発行する命令は、実行対象となる識別子を含むとしても構わない。
(10)放送ストリーム再生装置は、放送ストリームを受信する受信手段と、受信された放送ストリームを復号する復号手段と、復号された放送ストリームを再生する再生手段とを備え、前記復号手段は(1)のマルチスレッド並列実行装置を含んで構成されるとしても構わない。
(11)放送ストリーム蓄積装置は、放送ストリームを受信する受信手段と、受信された放送ストリームを再符号化する再符号化手段と、再符号化された放送ストリームを蓄積する蓄積手段とを備え、前記再符号化手段は(1)のマルチスレッド並列実行装置を含んで構成されるとしても構わない。
(12)蓄積ストリーム再生装置は、ストリームを蓄積する蓄積手段と、蓄積されたストリームを復号する復号手段と、復号されたストリームを再生する再生手段とを備え、前記復号手段は(1)のマルチスレッド並列実行装置を含んで構成されるとしても構わない。
(13)蓄積ストリーム再符号化装置は、ストリームを蓄積する蓄積手段と、蓄積されたストリームを再符号化する再符号化手段とを備え、前記再符号化手段は(1)のマルチスレッド並列実行装置を含んで構成されるとしても構わない。
(14)集積回路は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とする。
(15)前記実行手段は、マルチスレッドプロセッサから構成されるとしても構わない。
(16)前記実行手段は、マルチコアプロセッサから構成されるとしても構わない。
(17)本実施の形態に係るマルチスレッド並列実行方法は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて実行手段に並列実行させる実行ステップと、
前記実行ステップにおいて前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信ステップと、前記値と前記順番情報との組を格納手段に格納するための格納ステップと、前記受信ステップが前記組を受信した場合に、受信された前記順番情報と前記格納手段に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納手段に上書きさせるか、上書きさせないかを制御する制御ステップと、前記実行ステップにおける並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定ステップと、を含むことを特徴とする。
(18)本実施の形態に係るマルチスレッドコンパイラは、1つの処理スレッド上で動作しループ処理を含むソースプログラムをコンパイルするマルチスレッドコンパイラであって、前記ループ処理における繰り返し単位が終了する毎に、実行の結果を示す値と当該繰り返し単位の順番を示す順番情報との組を送信する複数の処理スレッド用のプログラムと、各処理スレッドから前記組を受信すると、当該組に含まれる順番情報と格納手段にすでに格納された順番情報とを比較して、受信した組に含まれる値と順番情報とを前記格納手段に上書きするか、上書きしないかを制御するデータ更新管理スレッド用のプログラムとを生成することを特徴とする。
本発明に係るマルチスレッド並列実行装置は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行するようなマルチスレッド実行環境において有用である。
101,901,1201,2201 マルチスレッド並列実行装置
102,902,1202,2202 マルチスレッド実行部
103,903,2203 データ更新管理部
104,904,2204 暫定データ格納部
105,2205 確定データ格納部
111,911,2211 受信部
112,912,2212 格納制御部
113,2213 終了判定部
114,2214 確定部
1202a,1202b 処理スレッド
1203 データ更新管理スレッド
1302 マルチスレッドコンパイラ
1501 集積回路
1601 放送ストリーム再生装置
1602 受信部
1603 復号部
1604 再生部
1701 放送ストリーム蓄積装置
1705 再符号化部
1706 蓄積部
1801 蓄積ストリーム再生装置
1901 蓄積ストリーム再符号化装置

Claims (17)

  1. ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、
    前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、
    前記値と前記順番情報との組を格納するための格納手段と、
    前記受信手段が前記組を受信した場合に、
    受信された前記順番情報と前記格納手段に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納手段に上書きさせるか、上書きさせないかを制御する制御手段と、
    前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、
    を備え、
    前記制御手段は、
    前記受信手段による受信があった場合に、
    受信された前記順番情報が前記格納手段に格納された順番情報より後順を示しているときには、受信された前記値と前記順番情報との組を前記格納手段に上書きさせ、
    受信された前記順番情報が前記格納手段に格納された順番情報より前順を示しているときには、受信された前記値と前記順番情報との組を前記格納手段に上書きさせない
    ことを特徴とするマルチスレッド並列実行装置。
  2. 前記ひとつのループ処理における繰り返し単位には、処理を途中で打ち切るためのブレークポイントが設定されており、
    前記受信手段が受信する前記組は、前記値と前記順番情報とに加えて、前記ブレークポイントへ到達済みか未到達かを示すフラグを含み、
    前記格納手段は、前記値と前記順番情報と前記フラグとを含む組を格納するためのものであり、
    前記制御手段は、
    前記受信手段により受信された前記組に含まれる前記順番情報と前記フラグを、前記格納手段に格納された前記順番情報と前記フラグとに参照して、前記上書きの制御を行う
    ことを特徴とする請求項1に記載のマルチスレッド並列実行装置。
  3. 前記制御手段は、
    前記ひとつのループ処理を、逐次処理したと仮定した場合にブレークポイントへ最初に到達した繰り返し単位に対応する値が前記格納手段に格納されていれば、前記上書きを抑止する
    ことを特徴とする請求項2に記載のマルチスレッド並列実行装置。
  4. 前記ひとつのループ処理における繰り返し単位は、イタレーションであって、
    前記順番情報は、イタレーションの順番を示すイタレーション番号である
    ことを特徴とする請求項1に記載のマルチスレッド並列実行装置。
  5. 前記受信手段、前記制御手段および前記確定手段は、前記実行手段による実行対象となる管理スレッドにより構成されている
    ことを特徴とする請求項1に記載のマルチスレッド並列実行装置。
  6. 前記実行手段が並列実行する繰り返し単位は複数の種類があり、
    前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、
    前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、
    前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行う
    ことを特徴とする請求項1に記載のマルチスレッド並列実行装置。
  7. 前記実行手段は、
    前記格納手段が格納している情報を無効化する命令、
    前記組を管理用ハードウェアに送信する命令、
    または、前記格納手段に格納された値を、実際の変数に反映する命令、
    の少なくともいずれか1つの命令を発行することを特徴とする請求項1に記載のマルチスレッド並列実行装置。
  8. 前記実行手段が並列実行する繰り返し単位は複数種類あり、
    前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、
    前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、
    前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行うものであって、
    前記実行手段が発行する命令は、実行対象となる識別子を含む
    ことを特徴とする請求項7に記載のマルチスレッド並列実行装置。
  9. 放送ストリームを受信する受信手段と、
    受信された放送ストリームを復号する復号手段と、
    復号された放送ストリームを再生する再生手段とを備え、
    前記復号手段は、請求項1記載のマルチスレッド並列実行装置により構成される
    ことを特徴とする放送ストリーム再生装置。
  10. 放送ストリームを受信する受信手段と、
    受信された放送ストリームを再符号化する再符号化手段と、
    再符号化された放送ストリームを蓄積する蓄積手段とを備え、
    前記再符号化手段は、請求項1記載のマルチスレッド並列実行装置により構成される
    ことを特徴とする放送ストリーム蓄積装置。
  11. ストリームを蓄積する蓄積手段と、
    蓄積されたストリームを復号する復号手段と、
    復号されたストリームを再生する再生手段とを備え、
    前記復号手段は、請求項1記載のマルチスレッド並列実行装置により構成されることを特徴とする蓄積ストリーム再生装置。
  12. ストリームを蓄積する蓄積手段と、
    蓄積されたストリームを再符号化する再符号化手段とを備え、
    前記再符号化手段は、請求項1記載のマルチスレッド並列実行装置により構成されることを特徴とする蓄積ストリーム再符号化装置。
  13. ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、
    前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、
    前記値と前記順番情報との組を格納するための格納手段と、
    前記受信手段が前記組を受信した場合に、
    受信された前記順番情報と前記格納手段に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納手段に上書きさせるか、上書きさせないかを制御する制御手段と、
    前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、
    を備え、
    前記制御手段は、
    前記受信手段による受信があった場合に、
    受信された前記順番情報が前記格納手段に格納された順番情報より後順を示しているときには、受信された前記値と前記順番情報との組を前記格納手段に上書きさせ、
    受信された前記順番情報が前記格納手段に格納された順番情報より前順を示しているときには、受信された前記値と前記順番情報との組を前記格納手段に上書きさせない
    ることを特徴とする集積回路。
  14. 前記実行手段は、マルチスレッドプロセッサから構成される
    ことを特徴とする請求項13に記載の集積回路。
  15. 前記実行手段は、マルチコアプロセッサから構成される
    ことを特徴とする請求項13に記載の集積回路。
  16. ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて実行手段に並列実行させる実行ステップと、
    前記実行ステップにおいて前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信ステップと、
    前記値と前記順番情報との組を格納手段に格納するための格納ステップと、
    前記受信ステップが前記組を受信した場合に、
    受信された前記順番情報と前記格納手段に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納手段に上書きさせるか、上書きさせないかを制御する制御ステップと、
    前記実行ステップにおける並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定ステップと、
    を含み、
    前記制御ステップにおいて、
    前記受信ステップによる受信があった場合に、
    受信された前記順番情報が前記格納手段に格納された順番情報より後順を示しているときには、受信された前記値と前記順番情報との組を前記格納手段に上書きさせ、
    受信された前記順番情報が前記格納手段に格納された順番情報より前順を示しているときには、受信された前記値と前記順番情報との組を前記格納手段に上書きさせない
    ことを特徴とするマルチスレッド並列実行方法。
  17. 1つの処理スレッド上で動作しループ処理を含むソースプログラムをコンパイルするマルチスレッドコンパイラであって、
    前記ループ処理における繰り返し単位が終了する毎に、実行の結果を示す値と当該繰り返し単位の順番を示す順番情報との組を送信する複数の処理スレッド用のプログラムと、
    各処理スレッドから前記組を受信すると、当該組に含まれる順番情報と格納手段にすでに格納された順番情報とを比較して、受信した組に含まれる値と順番情報とを前記格納手段に上書きするか、上書きしないかを制御するデータ更新管理スレッド用のプログラムとを生成する
    前記データ更新管理スレッド用のプログラムは、
    各処理スレッドから前記組を受信した場合に、
    受信した組に含まれる前記順番情報が前記格納手段に格納された順番情報より後順を示しているときには、受信した組に含まれる前記値と前記順番情報とを前記格納手段に上書きさせ、
    受信した組に含まれる前記順番情報が前記格納手段に格納された順番情報より前順を示しているときには、受信した組に含まれる前記値と前記順番情報とを前記格納手段に上書きさせない
    ことを特徴とするマルチスレッドコンパイラ。
JP2011550346A 2010-06-14 2011-06-03 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ Expired - Fee Related JP5945779B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010135300 2010-06-14
JP2010135300 2010-06-14
PCT/JP2011/003161 WO2011158460A1 (ja) 2010-06-14 2011-06-03 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ

Publications (2)

Publication Number Publication Date
JPWO2011158460A1 JPWO2011158460A1 (ja) 2013-08-19
JP5945779B2 true JP5945779B2 (ja) 2016-07-05

Family

ID=45347876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011550346A Expired - Fee Related JP5945779B2 (ja) 2010-06-14 2011-06-03 マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ

Country Status (4)

Country Link
US (1) US8850171B2 (ja)
JP (1) JP5945779B2 (ja)
CN (1) CN102449605B (ja)
WO (1) WO2011158460A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591936A (zh) * 2011-12-27 2012-07-18 四川九洲电器集团有限责任公司 一种播放器数据处理方法
CN104750533B (zh) * 2013-12-31 2018-10-19 上海东软载波微电子有限公司 C程序编译方法及编译器
CN110532311B (zh) * 2019-08-14 2023-11-28 泰安协同软件有限公司 一种基于队列的分布式数据导出方法及系统
CN112528583B (zh) * 2020-12-18 2022-04-01 广东高云半导体科技股份有限公司 多线程综合方法及用于fpga开发的综合系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03194645A (ja) * 1989-12-25 1991-08-26 Hitachi Ltd 計算機システム及びそのデータ転送方法
JPH03218556A (ja) * 1989-11-07 1991-09-26 Nec Corp 手続内ループのマルチタスク化方式
JPH04286031A (ja) * 1991-03-15 1992-10-12 Fujitsu Ltd プログラムのループ並列実行処理方法
JPH05181687A (ja) * 1991-04-19 1993-07-23 Hitachi Ltd 並列化コンパイル方法
JPH07114514A (ja) * 1993-10-19 1995-05-02 Hitachi Ltd 計算機間のデータ引き継ぎ方法
JPH10187522A (ja) * 1996-12-24 1998-07-21 Nec Software Ltd 並列型プログラミングにおけるファイル共用制御方式
JPH10207737A (ja) * 1997-01-20 1998-08-07 Toshiba Corp エミュレータ及びエミュレーションシステム
JPH11194947A (ja) * 1998-01-06 1999-07-21 Hitachi Ltd ループ分割方法
JP2009064233A (ja) * 2007-09-06 2009-03-26 Nec Corp デバッグ装置、デバッグ方法、及びデバッグプログラム
JP2010109572A (ja) * 2008-10-29 2010-05-13 Toshiba Corp 画像処理装置、及び方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03269639A (ja) 1990-03-19 1991-12-02 Nec Corp バッチジョブ実行方式
US5437034A (en) 1991-04-19 1995-07-25 Hitachi, Ltd. Method of generating from source program object program by which final values of variables for parallel execution are guaranteed
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6463580B1 (en) * 1998-11-18 2002-10-08 Intel Corporation Parallel processing utilizing highly correlated data values
US7302676B2 (en) * 2000-08-07 2007-11-27 Siemens Aktiengesselschaft Method for debugging flowchart programs for industrial controllers
KR20030042319A (ko) * 2001-11-22 2003-05-28 한국전자통신연구원 병렬 프로그램 수행중 경합 탐지를 위한 병렬 루프 변형방법
US7171544B2 (en) * 2003-12-15 2007-01-30 International Business Machines Corporation Run-time parallelization of loops in computer programs by access patterns
CN100492296C (zh) * 2005-04-12 2009-05-27 松下电器产业株式会社 处理器
GB0509738D0 (en) * 2005-05-12 2005-06-22 Cambridge Consultants Processor and interface
US8104030B2 (en) * 2005-12-21 2012-01-24 International Business Machines Corporation Mechanism to restrict parallelization of loops
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP4625475B2 (ja) * 2007-01-19 2011-02-02 セイコーエプソン株式会社 ライン型液体噴射ヘッド、及び、これを備えた液体噴射装置
US8645933B2 (en) * 2008-08-01 2014-02-04 Leon Schwartz Method and apparatus for detection and optimization of presumably parallel program regions
CN101515231A (zh) * 2009-03-23 2009-08-26 浙江大学 基于数据流分析的单线程程序并行化的实现方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03218556A (ja) * 1989-11-07 1991-09-26 Nec Corp 手続内ループのマルチタスク化方式
JPH03194645A (ja) * 1989-12-25 1991-08-26 Hitachi Ltd 計算機システム及びそのデータ転送方法
JPH04286031A (ja) * 1991-03-15 1992-10-12 Fujitsu Ltd プログラムのループ並列実行処理方法
JPH05181687A (ja) * 1991-04-19 1993-07-23 Hitachi Ltd 並列化コンパイル方法
JPH07114514A (ja) * 1993-10-19 1995-05-02 Hitachi Ltd 計算機間のデータ引き継ぎ方法
JPH10187522A (ja) * 1996-12-24 1998-07-21 Nec Software Ltd 並列型プログラミングにおけるファイル共用制御方式
JPH10207737A (ja) * 1997-01-20 1998-08-07 Toshiba Corp エミュレータ及びエミュレーションシステム
JPH11194947A (ja) * 1998-01-06 1999-07-21 Hitachi Ltd ループ分割方法
JP2009064233A (ja) * 2007-09-06 2009-03-26 Nec Corp デバッグ装置、デバッグ方法、及びデバッグプログラム
JP2010109572A (ja) * 2008-10-29 2010-05-13 Toshiba Corp 画像処理装置、及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6015021082; 近藤 仁志: 'マルチCPUシステムの活用研究 DSPシステムにおけるタスク細分化の実際-オーバヘッドを解決するため' インターフェース 19巻 第2号, 19930201, 157-170, CQ出版株式会社 *

Also Published As

Publication number Publication date
WO2011158460A1 (ja) 2011-12-22
US8850171B2 (en) 2014-09-30
CN102449605A (zh) 2012-05-09
CN102449605B (zh) 2015-10-07
US20120239914A1 (en) 2012-09-20
JPWO2011158460A1 (ja) 2013-08-19

Similar Documents

Publication Publication Date Title
DE102010051477B4 (de) Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform
DE60306937T4 (de) Synchronisierung von pipelines in einem datenverarbeitungsgerät
CN103809964B (zh) 用线程组执行顺序代码的系统和方法和包含其的simt处理器
JP5945779B2 (ja) マルチスレッド並列実行装置、放送ストリーム再生装置、放送ストリーム蓄積装置、蓄積ストリーム再生装置、蓄積ストリーム再符号化装置、集積回路、マルチスレッド並列実行方法、マルチスレッドコンパイラ
TWI423161B (zh) 繪圖處理單元、元命令處理系統以及元命令執行方法
DE112010003750T5 (de) Hardware für parallele Befehlslistenerzeugung
US10861125B2 (en) Preparing and executing command streams in data processing systems
CN103154883B (zh) 对来自多个指令集的指令进行译码
CN104461933B (zh) 内存管理方法及其装置
DE102019129899A1 (de) Skalierbare leichtgewichts-protokolle für paketreihung in leitungsgeschwindigkeit
US20220036632A1 (en) Post-processing in a memory-system efficient manner
EP4050481A1 (en) Allocation of resources to tasks
DE102012220277A1 (de) Rechen-Aufgabe-Zustands-Einkapselung
CN109189577A (zh) 一种数据同步时防止内存溢出的方法和装置
US9804853B2 (en) Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction
CN109558226B (zh) 一种基于核间中断的dsp多核并行计算调度方法
DE102013201195A1 (de) Zuvor-geplante Wiederholungen von divergenten Operationen
CN107092464A (zh) 产生选择性压缩微程序码和选择性解压缩微程序码的方法
DE112016004482T5 (de) Aufruf- oder rücksprungabsicht anzeigende sprungbefehle
CN104615409B (zh) 跳越mov指令的处理器和由该处理器使用的方法
US8896610B2 (en) Error recovery operations for a hardware accelerator
CN104219581A (zh) 一种更新播放队列的方法及装置
US10877884B2 (en) Copying and forwarding for concurrent copying garbage collection
CN109783243A (zh) 一种基于正副本切换的多线程数据无锁读写方法
CN108241671B (zh) 业务处理方法和系统及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131114

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140606

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20141008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150602

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20151117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160201

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160208

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160509

R151 Written notification of patent or utility model registration

Ref document number: 5945779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees