"ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とするマルチスレッド並列実行装置。前記ひとつのループ処理における繰り返し単位には、処理を途中で打ち切るためのブレークポイントが設定されており、前記受信手段が受信する前記組は、前記値と前記順番情報とに加えて、前記ブレークポイントへ到達済みか未到達かを示すフラグを含み、前記格納手段は、前記値と前記順番情報と前記フラグとを含む組を格納するためのものであり、前記制御手段は、前記受信手段により受信された前記組に含まれる前記順番情報と前記フラグを、前記格納手段に格納された前記順番情報と前記フラグとに参照して、前記上書きの制御を行うことを特徴とする請求項1に記載のマルチスレッド並列実行装置。前記制御手段は、前記ひとつのループ処理を、逐次処理したと仮定した場合にブレークポイントへ最初に到達した繰り返し単位に対応する値が前記格納手段に格納されていれば、前記上書きを抑止することを特徴とする請求項2に記載のマルチスレッド並列実行装置。前記制御手段は、前記受信手段による受信があった場合に、受信された前記順番情報が前記格納部に格納された順番情報より後順を示しているときには、受信された前記値と前記順番情報との組を前記格納部に上書きさせ、受信された前記順番情報が前記格納部に格納された順番情報より前順を示しているときには、受信された前記値と前記順番情報との組を前記格納部に上書きさせないことを特徴とする請求項1に記載のマルチスレッド並列実行装置。前記ひとつのループ処理における繰り返し単位は、イタレーションであって、前記順番情報は、イタレーションの順番を示すイタレーション番号であることを特徴とする請求項4に記載のマルチスレッド並列実行装置。前記受信手段、前記制御手段および前記確定手段は、前記実行手段による実行対象となる管理スレッドにより構成されていることを特徴とする請求項1に記載のマルチスレッド並列実行装置。前記実行手段が並列実行する繰り返し単位は複数の種類があり、前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行うことを特徴とする請求項1に記載のマルチスレッド並列実行装置。前記実行手段は、前記格納手段が格納している情報を無効化する命令、前記組を管理用ハードウェアに送信する命令、または、前記格納手段に格納された値を、実際の変数に反映する命令、の少なくともいずれか1つの命令を発行することを特徴とする請求項1に記載のマルチスレッド並列実行装置。前記実行手段が並列実行する繰り返し単位は複数種類あり、前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行うものであって、前記実行手段が発行する命令は、実行対象となる識別子を含むことを特徴とする請求項8に記載のマルチスレッド並列実行装置。放送ストリームを受信する受信手段と、受信された放送ストリームを復号する復号手段と、復号された放送ストリームを再生する再生手段とを備え、前記復号手段は、請求項1記載のマルチスレッド並列実行装置により構成されることを特徴とする放送ストリーム再生装置。放送ストリームを受信する受信手段と、受信された放送ストリームを再符号化する再符号化手段と、再符号化された放送ストリームを蓄積する蓄積手段とを備え、前記再符号化手段は、請求項1記載のマルチスレッド並列実行装置により構成されることを特徴とする放送ストリーム蓄積装置。ストリームを蓄積する蓄積手段と、蓄積されたストリームを復号する復号手段と、復号されたストリームを再生する再生手段とを備え、前記復号手段は、請求項1記載のマルチスレッド並列実行装置により構成されることを特徴とする蓄積ストリーム再生装置。ストリームを蓄積する蓄積手段と、蓄積されたストリームを再符号化する再符号化手段とを備え、前記再符号化手段は、請求項1記載のマルチスレッド並列実行装置により構成されることを特徴とする蓄積ストリーム再符号化装置。ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とする集積回路。前記実行手段は、マルチスレッドプロセッサから構成されることを特徴とする請求項14に記載の集積回路。前記実行手段は、マルチコアプロセッサから構成されることを特徴とする請求項14に記載の集積回路。ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて実行手段に並列実行させる実行ステップと、前記実行ステップにおいて前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信ステップと、前記値と前記順番情報との組を格納手段に格納するための格納ステップと、前記受信ステップが前記組を受信した場合に、受信された前記順番情報と前記格納手段に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納手段に上書きさせるか、上書きさせないかを制御する制御ステップと、前記実行ステップにおける並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定ステップと、を含むことを特徴とするマルチスレッド並列実行方法。1つの処理スレッド上で動作しループ処理を含むソースプログラムをコンパイルするマルチスレッドコンパイラであって、前記ループ処理における繰り返し単位が終了する毎に、実行の結果を示す値と当該繰り返し単位の順番を示す順番情報との組を送信する複数の処理スレッド用のプログラムと、各処理スレッドから前記組を受信すると、当該組に含まれる順番情報と格納手段にすでに格納された順番情報とを比較して、受信した組に含まれる値と順番情報とを前記格納手段に上書きするか、上書きしないかを制御するデータ更新管理スレッド用のプログラムとを生成することを特徴とするマルチスレッドコンパイラ。しかしながら、特許文献2の手法を上述のループ処理のマルチスレッド化に適用しようとすると、スレッド毎に領域を設けて、各スレッドで扱う変数をこの領域に格納することとなる。このため、スレッド数に比例して必要なメモリ領域が増大するという問題がある。例えば、スレッド数が16個であれば、対応して16個分のメモリ領域が必要となる。本発明は、このような問題を解決するものであり、少量のメモリ領域で終値保証を実現可能なマルチスレッド並列実行装置を提供することを目的とする。本発明に係るマルチスレッド並列実行装置は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とする。本発明に係るマルチスレッド並列実行装置によれば、受信手段が値と順番情報との組を受信すると、格納手段へと受信した情報を上書きするかどうかを、受信された順番情報と格納された順番情報のそれぞれにより示される順番の先後に基づいて異ならせることができるので、適切に上書き制御して終値保証を実現できる。また、格納手段へは値と順番情報とを上書きすることで、マルチスレッド数が増えたとしても、上記格納手段のメモリ領域を増やさないようにすることができる。以下、本発明の実施の形態について、図面を参照しながら説明する。実施の形態1図1に示すように、マルチスレッド並列実行装置101は、マルチスレッド実行部102、データ更新管理部103、暫定データ格納部104、確定データ格納部105を備える。マルチスレッド実行部102は、例えばCPUから構成され、プログラムを実行する。このプログラムは、ループ処理の繰り返し単位に相当する命令群を含んでいる。マルチスレッド実行部102は、このイタレーションを複数のスレッドに分けて並列実行する。この並列実行中、マルチスレッド実行部102は、各スレッドにおけるイタレーションが終了する毎に、イタレーションの実行結果を示す値と、実行したイタレーションがループ処理中で何番目この順番は、ループ処理を仮に逐次実行した時における実行の順番と一致する。であるかを示すイタレーション番号ithの組を受信部111へと送信する。また並列実行終了時には、マルチスレッド実行部102は、終了判定部113宛に終了を示す終了情報を送る。データ更新管理部103は、マルチスレッド実行部102による並列実行に応じて、暫定データ格納部104および確定データ格納部105のデータ更新を管理する。データ更新管理部103は、受信部111、格納制御部112、終了判定部113、確定部114を備える。受信部111は、マルチスレッド実行部102から送信されてくる、イタレーションの実行結果を示す値と、実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号ithとの組を含む情報を受信する。格納制御部112は、暫定データ格納部104のデータが無い場合には、受信部111が受信した値とイタレーション番号ithの組を暫定データ格納部104に格納する。また、格納制御部112は、暫定データ格納部104に対応する情報が既に格納されている場合には、後述する条件に従って、上書き格納するかしないかの制御を行う。終了判定部113は、マルチスレッド実行部102から上述の終了情報を受信すると、並列実行の終了を判定する。そして終了を判定すると、確定部114にその旨を通知する。なお、並列実行終了の判定は、これに限らず一般的な手法を用いることができる。確定部114は、終了判定部113から終了判定した旨の通知を受け取ると、暫定データ格納部104に格納されている値を取りだして、確定データ格納部105へと反映するコピーする。暫定データ格納部104は、マルチスレッド実行部102による並列実行中に、上述した値とイタレーション番号iとを格納するためのものである。なお、本明細書では、暫定データ格納部104に格納されているイタレーション番号はiと表記し、受信部111がマルチスレッド実行部102から受信したイタレーション番号をithと区別して表記することとする。確定データ格納部105は、上記ひとつのループ処理の実行結果としての値を格納するためのものである。なお、両格納部104,105は例えばRAMRandomAccessMemoryから構成される。続いてマルチスレッド並列実行時におけるデータ更新管理部103の動作について図2を参照しながら説明する。まず、格納制御部112は、暫定データ格納部104の内容クリアなどの初期設定を行うS21。その後、終了判定部113により並列実行の終了が判定されるS22:Yesまでは、ステップS23~S25の処理の繰り返しとなる。受信部111が値とイタレーション番号ithとを受信するとS23:Yes、格納制御部112は、暫定データ格納部104の値とイタレーション番号iの組を、受信した値とイタレーション番号ithとにより上書きする必要があるかどうかを判定するS24。この判定は、図3の表に沿ったものとなる。つまり、格納制御部112は、受信部111が受信したイタレーション番号ithと、暫定データ格納部104に格納されているイタレーション番号iとの大小関係に基づいて判定を行う。すなわち、イタレーション番号iがイタレーション番号ithより大きければi>ith、格納制御部112は上書きが不要と判定するS24:No。これに対して、イタレーション番号iがイタレーション番号ith以下であればi≦ith、格納制御部112は上書きが必要と判定するS24:Yes。なお、並列実行の開始直後の場合など、暫定データ格納部104にデータが格納されていないときにも上書きが必要と判定する。そして、格納制御部112は受信した値とイタレーション番号ithの組を暫定データ格納部104に上書きするS25。この上書きにより、格納制御部112では、イタレーションの順番が前順の値が消去され、イタレーションの順番がより後順の値が格納されることとなる。終了判定部113により並列実行の終了が判定されるとS22:Yes、確定部114は、暫定データ格納部104の値を取りだして確定データ格納部105に反映する。なお、暫定データ格納部104のデータが無効の場合には、確定部114は値の取り出しを行わないとしてもよい。以上のようなフローによれば、並列実行中に繰り返されるステップS23~S25により、暫定データ格納部104に格納される値は、イタレーションの実行結果として出力される複数の値の中で、順番が最も後ろの順番である値となる。したがって、並列実行の終了後には、逐次的に処理した場合と、同じ値を確定データ格納部105に反映させることができ、終値保証を図ることができる。しかも、暫定データ格納部104に格納するデータは、値とイタレーション番号のひとつの組だけで足り、スレッド毎にメモリ領域を用意する場合と比べて少ないメモリ領域とすることができる。続いて、並列実行の具体例を挙げてさらに詳しく説明する。図4は、サンプルプログラム1を示す図である。このサンプルプログラム1のソースコードは、a=0,1,2,3と4回のイタレーションを行うことを示している。このサンプルプログラム1を逐次的に実行した場合には、1a=0のとき、b[a]=b[0]=2>-2よりc=01=12a=1のとき、b[a]=b[1]=1>-2よりc=11=23a=2のとき、b[a]=b[2]=-1>-2よりc=21=34a=3のとき、b[a]=b[3]=-2≦-2よりcは更新されずとなるので、c=3となり、値3が処理結果となる。このサンプルプログラム1の4回のイタレーションを、スレッド1a=0,1を担当とスレッド2a=2,3を担当とに2回分ずつ割り当てるとする。図5に示すように、1番目のイタレーションa0を終えたスレッド1は、値1とイタレーション番号1の組を、データ更新管理部103の受信部111へと送信する。同様に、スレッド1,2は、各回のイタレーションが終了する度に、その処理結果の値とイタレーション番号の組を、データ更新管理部103の受信部111へ送信することとなる。さて、図5の4回のイタレーションが、イタレーション番号1→3→2→4の順番で終了した場合を考える。この場合における各種データの変遷のイメージを図6,図7に示す。図6aに示すように、1番目のイタレーション終了時には、マルチスレッド実行部は、データ更新管理部103へとイタレーションの実行結果である値1と、イタレーション番号1とを送る。この値1とイタレーション番号1をデータ更新管理部103の受信部111が受信すると、データ更新管理部103の格納制御部112は、暫定データ格納部104にデータが格納されていないので、上書き必要と判定して上書きを行う図2,S23:Yes,S24:Yes,S25。図6bに示すように、3番目のイタレーション終了時には、データ更新管理部103の格納制御部112は、暫定データ格納部104に格納されたイタレーション番号1は、受信部111が受信したイタレーション番号3以下であるので上書き必要と判定して上書きを行うS23:Yes,S24:Yes,S25。図7cに示すように、2番目のイタレーション終了時には、データ更新管理部103の格納制御部112は、暫定データ格納部104に格納されたイタレーション番号3は、受信部111が受信したイタレーション番号2より大きいので上書き不要と判定するS23:Yes,S24:No。そして、格納制御部112は、受信部111が受信した値2とイタレーション番号2を破棄する。図7dに示すように、4番目のイタレーション終了時には、データ更新管理部103の受信部111が受信した値はnullと空であるので格納制御部112は上書き不要と判定するS23:Yes,S24:No。そして、格納制御部112は、受信部111が受信した値nullとイタレーション番号4を破棄する。図7eに示すように、すべてのイタレーションが終了して、マルチスレッド実行部102から並列実行の終了を示す終了情報が送信され、データ更新部103の終了判定部113がこの終了情報を受信するとS22:Yes、確定部114は、暫定データ格納部104に格納された値3を取得して、確定データ格納部105へ格納するS26。このように確定データ格納部105に格納された値3は、逐次的に処理したときの処理結果の値3図4参照と一致しており終値保証が実現されていることがわかる。実施の形態2実施の形態2は、ループ処理における繰り返し単位に、処理を途中で打ち切るためのブレークポイントが設定されている場合にも終値保証を図ろうとするものである。このようにブレークポイントが設定されている場合には、逐次的に実行するときと並列的に実行するときとで実行の態様が異なってくるので、終値保証を実現するためにはさらなる工夫が必要である。具体的に図8を用いて説明する。図8aに示すサンプルプログラム2には、4回のイタレーションを含むループ処理が記述されている。このプログラムを逐次的に実行することを考える。この実行において、2番目のイタレーションでブレークポイントに到達したとすると、3番目,4番目のイタレーションは実行しないこととなる図8b。ここで、このサンプルプログラム2の4回のイタレーションを、図8cに示すように、スレッド1とスレッド2とに2回分ずつ割り当てるとする。上述したように、逐次的に実行した場合には、3番目,4番目のイタレーションは実行しないので、並列実行の場合にも、3番目,4番目のイタレーションの処理結果を一連の処理の最終的な値としては反映しないようにする必要がある。そこで、本実施の形態2では、ブレークポイントに到達したかどうかを示すブレークフラグ到達時にはON、未到達時にはOFFとなるフラグであるを利用することで、終値保証の実現を図る。図9に示すように、マルチスレッド並列実行装置901は、マルチスレッド実行部902、データ更新管理部903、暫定データ格納部904を備える。マルチスレッド実行部902は、各スレッドにおけるイタレーションが終了する毎に、イタレーションの実行結果を示す値、実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号ith、およびブレークポイントに到達したかどうかを示すブレークフラグの組を受信部911へと送信する。他の機能はマルチスレッド実行部102図1と同様である。データ更新管理部903の格納制御部912は、受信部911が受信した、値とイタレーション番号ithとブレークフラグの三者の組に基づいて、上書き格納するかしないかの制御を行う。暫定データ格納部904は、マルチスレッド実行部902による並列実行中に、値とイタレーション番号iとブレークフラグの三者の組を格納するためのものである。図9のその他の機能ブロックは、図1を用いて説明した機能ブロックと同様なので説明を省略する。続いて、マルチスレッド並列実行時におけるデータ更新管理部903の動作について図10を参照しながら説明する。図10において、図2と同じ番号を付したステップS21~S22,S26は、図2と同様のため説明を省略する。特に、受信部911が値とイタレーション番号ithとブレークフラグの組を受信するとS103:Yes、格納制御部912は、暫定データ格納部904の値とイタレーション番号iとブレークフラグとを、受信した値とイタレーション番号ithとブレークフラグとにより上書きする必要があるかどうかを判定する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が受信したイタレーション番号ithが、暫定データ格納部904に格納されたイタレーション番号iより前順であれば、上書きを行うとする。L6の行はL5の行の反対となっている。格納制御部912は、図11の表に従って、上書きが必要と判定するとS104:Yes、受信した値とイタレーション番号ithとブレークフラグの組を暫定データ格納部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からイタレーションの実行結果を示す値と、実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号ithとの組を含む情報を受信する機能図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。ここでいうスレッドデータ更新情報とは、各処理スレッドが扱うデータの更新に係る情報である。例えば、イタレーションの実行結果を示す値とイタレーション番号ithとの組を含んでいる。この変数がループ内で参照される場合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製造後に、プログラムすることが可能なFPGAFieldProgrammableGateArrayや、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実行したイタレーションがループ処理中で何番目であるかを示すイタレーション番号ith、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文、dowhile文などを用いることができる。4実施の形態では、各イタレーションが終了する毎にマルチスレッド実行部102がその実行結果である値とイタレーション番号とを送信するとしたが、これに代えて、スレッドの終了を契機に送るようにしてもよい。例えば、図20aに示すように、スレッド1の処理が終了すると、マルチスレッド実行部102は、スレッド1が担当したイタレーションの実行結果を示す値2と、スレッド番号th1を送る。同様にスレッド2の処理が終了すると、マルチスレッド実行部102は、スレッド2が担当したイタレーションの実行結果を示す値3と、スレッド番号th2を送る。そして、データ更新部管理部103の格納制御部112は、スレッド番号の大小関係に基づいて上書きの要否を判断する。図20bの例では、暫定データ格納部に格納されているスレッド番号th2が受信したスレッド番号th1より後順なので上書きしないとしている。5実施の形態では、図2に示すように初期設定S21について簡単な説明に留めたが、例えば次のようにしてデータ更新の有無に応じた挙動を行うようにしても構わない。すなわち図21に示すように、初期設定として、格納制御部112はイタレーション番号を-1に設定するS2101。そして、並列実行終了後S22:Yes、格納制御部112はイタレーション番号が-1のままであればS2102:No、暫定データ格納部104の値が並列実行にも関わらず更新されなかったことを意味するので、データの反映S26をスキップする。6実施の形態では、図7eに示すように、並列実行の終了時には暫定データ格納部104に格納された値を3、確定データ格納部105へと反映するとしているがこれに限られない。要は、値3が並列実行の結果として確定できるようにすればよい。例えば、結果であることを示す情報を値3に付加しても構わない。7各実施の形態では、マルチスレッド実行部における処理スレッド数は2個として説明したが、これに限らず、2個以上であれば任意の個数を取り得る。例えば、処理スレッド数が4個や8個であってもよい。8実施の形態1~9や本補足の内容を組み合わせて実施しても構わない。<補足2>本実施の形態は、以下の態様を含むものである。1本実施の形態に係るマルチスレッド並列実行装置は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とする。2前記ひとつのループ処理における繰り返し単位には、処理を途中で打ち切るためのブレークポイントが設定されており、前記受信手段が受信する前記組は、前記値と前記順番情報とに加えて、前記ブレークポイントへ到達済みか未到達かを示すフラグを含み、前記格納手段は、前記値と前記順番情報と前記フラグとを含む組を格納するためのものであり、前記制御手段は、前記受信手段により受信された前記組に含まれる前記順番情報と前記フラグを、前記格納手段に格納された前記順番情報と前記フラグとに参照して、前記上書きの制御を行うこととしても構わない。この構成によれば、ブレークポイントが設定されたループ処理においても終値保証を図ることができる。3前記制御手段は、前記ひとつのループ処理を、逐次処理したと仮定した場合にブレークポイントへ最初に到達した繰り返し単位に対応する値が前記格納手段に格納されていれば、前記上書きを抑止するとしても構わない。4前記制御手段は、前記受信手段による受信があった場合に、受信された前記順番情報が前記格納部に格納された順番情報より後順を示しているときには、受信された前記値と前記順番情報との組を前記格納部に上書きさせ、受信された前記順番情報が前記格納部に格納された順番情報より前順を示しているときには、受信された前記値と前記順番情報との組を前記格納部に上書きさせないとしても構わない。5前記ひとつのループ処理における繰り返し単位は、イタレーションであって、前記順番情報は、イタレーションの順番を示すイタレーション番号であるとしても構わない。6前記受信手段、前記制御手段および前記確定手段は、前記実行手段による実行対象となる管理スレッドにより構成されているとしても構わない。7前記実行手段が並列実行する繰り返し単位は複数の種類があり、前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行うとしても構わない。8前記実行手段は、前記格納手段が格納している情報を無効化する命令、前記組を管理用ハードウェアに送信する命令、または、前記格納手段に格納された値を、実際の変数に反映する命令、の少なくともいずれか1つの命令を発行するとしても構わない。98において、前記実行手段が並列実行する繰り返し単位は複数種類あり、前記受信手段は、前記組に加えて前記繰り返し単位の種類を識別するための識別子を受信し、前記格納手段は、繰り返し単位の種類を識別するための識別子に関連付けて前記組を格納し、前記制御手段は、受信された識別子に関連付けられた組を対象に上書きの有無の制御を行うものであって、前記実行手段が発行する命令は、実行対象となる識別子を含むとしても構わない。10放送ストリーム再生装置は、放送ストリームを受信する受信手段と、受信された放送ストリームを復号する復号手段と、復号された放送ストリームを再生する再生手段とを備え、前記復号手段は1のマルチスレッド並列実行装置を含んで構成されるとしても構わない。11放送ストリーム蓄積装置は、放送ストリームを受信する受信手段と、受信された放送ストリームを再符号化する再符号化手段と、再符号化された放送ストリームを蓄積する蓄積手段とを備え、前記再符号化手段は1のマルチスレッド並列実行装置を含んで構成されるとしても構わない。12蓄積ストリーム再生装置は、ストリームを蓄積する蓄積手段と、蓄積されたストリームを復号する復号手段と、復号されたストリームを再生する再生手段とを備え、前記復号手段は1のマルチスレッド並列実行装置を含んで構成されるとしても構わない。13蓄積ストリーム再符号化装置は、ストリームを蓄積する蓄積手段と、蓄積されたストリームを再符号化する再符号化手段とを備え、前記再符号化手段は1のマルチスレッド並列実行装置を含んで構成されるとしても構わない。14集積回路は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて並列実行する実行手段と、前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信手段と、前記値と前記順番情報との組を格納するための格納手段と、前記受信手段が前記組を受信した場合に、受信された前記順番情報と前記格納部に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納部に上書きさせるか、上書きさせないかを制御する制御手段と、前記実行手段による並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定手段と、を備えることを特徴とする。15前記実行手段は、マルチスレッドプロセッサから構成されるとしても構わない。16前記実行手段は、マルチコアプロセッサから構成されるとしても構わない。17本実施の形態に係るマルチスレッド並列実行方法は、ひとつのループ処理における繰り返し単位を、複数のスレッドに分けて実行手段に並列実行させる実行ステップと、前記実行ステップにおいて前記実行手段が並列実行している間に、各スレッドにおける繰り返し単位の実行の結果を示す値と、当該繰り返し単位の順番を示す順番情報との組を前記実行手段から受信する受信ステップと、前記値と前記順番情報との組を格納手段に格納するための格納ステップと、前記受信ステップが前記組を受信した場合に、受信された前記順番情報と前記格納手段に格納された順番情報のそれぞれにより示される順番の先後に基づいて、受信された前記順番情報と対応する前記値との組を前記格納手段に上書きさせるか、上書きさせないかを制御する制御ステップと、前記実行ステップにおける並列実行が終了すると、前記格納手段に格納されている値を、前記ひとつのループ処理の実行結果として確定する確定ステップと、を含むことを特徴とする。18本実施の形態に係るマルチスレッドコンパイラは、1つの処理スレッド上で動作しループ処理を含むソースプログラムをコンパイルするマルチスレッドコンパイラであって、前記ループ処理における繰り返し単位が終了する毎に、実行の結果を示す値と当該繰り返し単位の順番を示す順番情報との組を送信する複数の処理スレッド用のプログラムと、各処理スレッドから前記組を受信すると、当該組に含まれる順番情報と格納手段にすでに格納された順番情報とを比較して、受信した組に含まれる値と順番情報とを前記格納手段に上書きするか、上書きしないかを制御するデータ更新管理スレッド用のプログラムとを生成することを特徴とする。"