処理中

しばらくお待ちください...

設定

設定

出願の表示

1. WO2012004990 - プロセッサ

Document

明 細 書

発明の名称 プロセッサ

技術分野

0001  

背景技術

0002   0003   0004   0005   0006   0007  

先行技術文献

特許文献

0008  

非特許文献

0009  

発明の概要

発明が解決しようとする課題

0010   0011  

課題を解決するための手段

0012  

発明の効果

0013  

図面の簡単な説明

0014  

発明を実施するための形態

0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173   0174   0175   0176   0177   0178   0179   0180   0181   0182   0183   0184   0185   0186   0187   0188   0189   0190   0191   0192   0193   0194   0195   0196   0197   0198   0199   0200   0201   0202   0203   0204   0205   0206   0207   0208   0209   0210   0211   0212   0213   0214   0215   0216   0217   0218   0219   0220   0221   0222   0223   0224   0225   0226   0227   0228   0229   0230   0231   0232   0233   0234   0235   0236   0237   0238   0239   0240   0241   0242   0243   0244   0245   0246   0247   0248  

産業上の利用可能性

0249  

符号の説明

0250  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13  

補正された請求の範囲(条約第19条)

1   2   3   4  *   5   6  *   7   8   9   10   11   12   13  

図面

1   2   3   4   5   6   7   8   9   10   11   12   13  

明 細 書

発明の名称 : プロセッサ

技術分野

[0001]
 本発明は、本発明は、複数のスレッドを同時に実行することができるプロセッサにおいて、複数のスレッド間で共有するデータの授受を効率化することによって、演算効率を向上させる技術に関する。

背景技術

[0002]
 デジタル化された映像データや、音声データなどの圧縮、伸張等を行うメディア処理は非常に演算量が大きい。このため、メディア処理を行なうための専用ハードウェアや高性能なDSP(Digital Signal Processor)などが普及している。
[0003]
 このようなメディア処理の中でも、MPEG(Moving Picture Experts Group)-2、MPEG-4、H.263、H.264等、非常に多数の規格が実用化されている。このため、デジタルAV(Audio-Visual)機器は、複数の規格のメディア処理に対応することが要求されている。さらに、各メディア処理アプリケーションの複雑度は上昇しており、画像サイズ、音声のチャネル数等も増加する傾向にあり、演算量は増大の一歩をたどっている。
[0004]
 そこで、複数のプログラムを同時に実行することにより演算効率を大幅に向上させた、高性能なマルチスレッドプロセッサ(例えば、非特許文献1参照。)を用いることにより、性能向上を図っている。
[0005]
 マルチスレッドプロセッサでは、複数のスレッド(プログラム)を同時に実行する際に、一のスレッドと他のスレッドに依存関係があり、例えば、一のスレッドによる所定の書き込み命令が実行された後に、他のスレッドにより、当該所定の書き込み命令により書き込まれた箇所のデータを読み出す読み出し命令が実行する状況がある。
[0006]
 この場合の処理の実現方法として、特許文献1にその技術が開示されている。
[0007]
 特許文献1では、両者の依存関係をメモリ領域のアドレスを管理することで実現している。具体的には、特許文献1の技術では、管理しているアドレスについて、一のスレッドによる書き込み命令が実行されると、他のスレッドが当該アドレスで示される領域へアクセスすることを可能、つまり読み出しを行うことを可能としている。

先行技術文献

特許文献

[0008]
特許文献1 : 特表2006-500639号公報

非特許文献

[0009]
非特許文献1 : 『ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第4版』、株式会社 翔泳社、p.185-192(ISBN978-4-7981-1440-8)

発明の概要

発明が解決しようとする課題

[0010]
 上記にて示す技術では、依存関係が、1つの書き込み命令に対するものであれば効果的であるが、例えば、1つのアドレスで示されるメモリ領域について、複数回書き込み命令を実行した後に、読み出し命令を行う場合には対応できていない。なぜなら、管理対象をアドレスとしているので、最初の書き込み命令が実行されると他のスレッドによる同一のアドレスで示されるメモリ領域への読み出し命令が実行されることになる。そのため、複数の書き込み命令の実行後の読み出し命令を実行するという依存関係が保たれない。
[0011]
 そこで、本発明は、複数の命令と1つの読み出し命令との依存関係を保つことのできるプロセッサ及び方法を提供することを目的とする。

課題を解決するための手段

[0012]
 上記目的を達成するために、本発明は、複数のスレッドを実行するプロセッサであって、他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定手段と、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御手段とを備えることを特徴とする。

発明の効果

[0013]
 上記に示す構成によると、プロセッサは、他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行することで、他のスレッドによる当該メモリ領域に存在するデータの読み出しを行う。つまり、プロセッサは、当該位置に存在する命令が実行されるまでに存在する命令が実行されていることを保証した上で、他のスレッドによる当該メモリ領域に存在するデータの読み出しを行うことができる。これにより、プロセッサは、例えば書き込み命令を複数回実行した後に読み出し命令を実行するという依存関係を保つことができる。

図面の簡単な説明

[0014]
[図1] マルチスレッドプロセッサ100の構成を示す図である。
[図2] (a)はアクセス管理テーブルT100のデータ構造の一例を示す図であり、(b)はReadアクセス管理テーブルT150のデータ構造の一例を示す図である。
[図3] 読み出し検出部116及び命令検出部117の構成を示す図である。
[図4] 命令検出部117で行われる動作を示す流れ図である。
[図5] Readアクセス管理テーブルT150の更新に係る動作を示す流れ図である。
[図6] Read命令が実行される際の動作を示す流れ図である。
[図7] マルチスレッドプロセッサ1100の構成を示す図である。
[図8] アドレス変換部1130の構成、及び変換テーブルT200のデータ構造の一例を示す図である。
[図9] マルチスレッドプロセッサ2100の構成を示す図である。
[図10] アドレス変換部2130の構成、及び変換テーブルT300のデータ構造の一例を示す図である。
[図11] マルチコアプロセッサシステム3000のハードウェア構成を示す図である。
[図12] マルチスレッドプロセッサ100を映像のデコード処理に適用する場合の概略を示す図である。
[図13] マクロブロック間におけるデコード処理に係る依存関係を示す図である。

発明を実施するための形態

[0015]
 1.第1の実施の形態
 以下、本発明に係る第1の実施の形態について、図面を参照しながら説明する。
[0016]
 1.1 構成
 図1は、第1の実施の形態におけるマルチスレッドプロセッサ100の構成を示すブロック図である。
[0017]
 マルチスレッドプロセッサ100は、N(Nは2以上の整数)個の命令流(N個のスレッド)を同時に独立して実行するプロセッサであり、命令メモリ101と、命令フェッチ制御部102と、命令群決定部103と、N個の命令バッファ(第1命令バッファ104、第2命令バッファ105、…、第N命令バッファ106)と、発行命令決定部107と、優先度決定部108と、N個のレジスタファイル(第1レジスタファイル109、第2レジスタファイル110、…、第Nレジスタファイル111)と、演算器群112と、ライトバックバス113と、更新制御部114、データメモリ115と、読み出し検出部116と、命令検出部117と、管理テーブル記憶部118を備えている。
[0018]
 ここで、各命令バッファとレジスタファイルは1対1に対応付けられ、N個の論理プロセッサを構成する。
[0019]
 (1)命令メモリ101
 命令メモリ101は、マルチスレッドプロセッサにおいて実行される命令を保持するメモリであり、N本の独立に実行される命令流(スレッド)を保持している。
[0020]
 (2)命令フェッチ制御部102
 命令フェッチ制御部102は、各スレッドのプログラムカウンタ(PC)を保持し、次に実行する命令を命令メモリから読み出す。ここで、各スレッドのプログラムカウンタは、互いに異なる値の範囲においてカウントされるものとする。
[0021]
 また、命令フェッチ制御部102は、読み出し検出部116から、命令のフェッチの継続の可否を示すReadアクセス信号を受信すると、受信した信号の値に応じて、命令のフェッチを継続、及び例外発生に相当する特殊処理ベクタへの分岐処理の起動を行う。具体的には、受信した信号の値が1である場合には、命令フェッチ制御部102は、それまでの命令実行シーケンスを停止し、例外発生に相当する特殊処理ベクタへの分岐処理を起動する。受信した信号の値が0である場合には、それまでの命令実行シーケンスを継続する。
[0022]
 (3)命令群決定部103
 命令群決定部103は、命令メモリ101から、各命令流に属する命令を読み出し、デコードを行い、当該命令が割り当てられている命令バッファに書き込む。
[0023]
 (4)第1命令バッファ104から第N命令バッファ106
 第i命令バッファ(iは1以上N以下の整数)は、i番目の命令流(以下、第i命令流という。)に属する命令を受け取り、保持するものである。
[0024]
 (5)発行命令決定部107
 発行命令決定部107は、N個の命令バッファからマシンサイクル毎に発行する命令を決定するものである。
[0025]
 (6)優先度決定部108
 優先度決定部108は、発行命令決定部107において発行する命令を決定する際に用いる優先度情報テーブル保持している。
[0026]
 このとき、発行命令決定部107は、優先度決定部108で保持されている優先度情報テーブルを用いて、マシンサイクル毎に発行する命令を決定することになる。
[0027]
 (7)第1レジスタファイル109から第Nレジスタファイル111
 第iレジスタファイル(iは1以上N以下の整数)は、第i命令バッファに保持された命令流を実行することによって、読み出し及び書き込みの対象とされるデータを保持するレジスタ群である。
[0028]
 また、演算器群112は、図1に示すように、メモリアクセス120をも有している。
[0029]
 ここで、メモリアクセス120は、データメモリとアクセスする命令を実行するための演算器である。
[0030]
 (9)ライトバックバス113
 ライトバックバス113は、演算器群112からの出力を第1レジスタファイル109~第Nレジスタファイル111に書き戻すためのバスである。
[0031]
 (10)データメモリ115
 データメモリ115は、データメモリとアクセスする命令によってアクセスされ、プログラムを実行する際のデータを保持している。
[0032]
 (11)管理テーブル記憶部118
 管理テーブル記憶部118は、図2(a)、(b)に示すように、アクセス管理テーブルT100及びReadアクセス管理テーブルT150を記憶している。
[0033]
 (11-1)アクセス管理テーブルT100
 アクセス管理テーブルT100は、図2(a)に示すように、entry_valid200、dep_id201及びvalid化PC202からなる組を複数個記憶するための領域を有している。
[0034]
 entry_valid200は、当該組(エントリ)が有効な情報であるか否かを示すものであり、例えば、entry_valid200に値“0”が設定されている場合には当該エントリが無効であることを、値“1”が設定されている場合には当該エントリが有効であることを示す。
[0035]
 dep_id201は、当該エントリとReadアクセス管理テーブルT150内のエントリとの対応付けを行うための情報である。
[0036]
 Readアクセス管理テーブルT150は、entry_valid210、dep_id211、Address212、valid213、th_id214、th_stride215からなる組を複数個記憶するための領域を有している。
[0037]
 entry_valid210は、当該組(エントリ)に有効な情報であるか否かを示すものであり、例えばentry_valid200と同様に、entry_valid210に値“0”が設定されている場合には当該エントリが無効であることを、値“1”が設定されている場合には当該エントリは有効であることを示す。
[0038]
 dep_id211は、当該エントリとアクセス管理テーブルT100内のエントリとの対応付けを行うための情報である。ここでは、dep_id211とdep_id201との値が同一のもの同士が対応しているものとする。
[0039]
 Address212は、当該エントリで管理されるメモリ領域の開始アドレスを示している。
[0040]
 valid213は、当該エントリで管理されるメモリ領域に対して、いずれかのスレッドによる書き込みが完了していることを示している。
[0041]
 th_id214は、当該エントリで管理されるメモリ領域に対する書き込みが完了したスレッドの番号を示すものである。
[0042]
 th_stride215は、当該エントリで管理されるメモリ領域に対する書き込みが完了したスレッドと読み出しを行うスレッドの距離を示す値である。
[0043]
 (12)更新制御部114
 更新制御部114は、アクセス管理テーブルT100及びReadアクセス管理テーブルT150を更新するものである。
[0044]
 (12-1)アクセス管理テーブルT100について
 更新制御部114は、ソフトウェアからソフトウェア更新指示を受け付けると、アクセス管理テーブルT100内のフィールドを更新する。いずれのフィールドも、ソフトウェアによる読み出し、書き込みが可能である。
[0045]
 例えば、更新制御部114は、N個のスレッドで動作するソフトウェアの処理開始前に、ソフトウェア更新指示を受け付けると、当該ソフトウェアについてアクセス管理テーブルT100で管理されるべき複数のエントリを記録する。
[0046]
 (12-2)Readアクセス管理テーブルT150について
 更新制御部114は、アクセス管理テーブルT100の更新時と同様にソフトウェアからソフトウェア更新指示を受け付けると、Readアクセス管理テーブルT150内のフィールドを更新する。いずれのフィールドも、ソフトウェアによる読み出し、書き込みが可能である。
[0047]
 例えば、更新制御部114は、N個のスレッドで動作するソフトウェアの処理開始前に、ソフトウェア更新指示を受け付けると、当該ソフトウェアについてReadアクセス管理テーブルT150で管理されるべき複数のエントリを記録する。
[0048]
 また、更新制御部114は、命令検出部117から命令検出情報を受け付けると、Readアクセス管理テーブルT150内のフィールドを更新する。ここで、命令検出情報は、アクセス管理テーブルT100の更新を契機となる命令を検出した旨の情報(以下、命令検出信号という。)と、更新対象となるエントリに含まれるdep_id(以下、命令dep_idという。)の値と、命令th_idとを含むものである。ここで、命令th_idは、ある命令が実行された際に演算器群112より出力される当該命令が属するプログラムのスレッド番号である。
[0049]
 例えば、更新制御部114は、命令検出部117から命令検出情報を受け取ると、受け取った命令検出情報に含まれる命令dep_idと一致するdep_idを含むエントリについて、当該エントリに含まれるvalidの値を1に変更し、さらに、当該エントリのth_idの値を受け取った命令検出情報に含まれる命令th_idの値へと変更する。
[0050]
 さらに、更新制御部114は、あるスレッドにおいて、validの値が「1」であるメモリ領域についての読み出し命令が実行されると、当該validの値を「1」から「0」へと更新する。
[0051]
 (13)命令検出部117
 命令検出部117は、命令の実行時に、その命令のプログラムカウンタの値に基づいて、管理テーブル記憶部118で保持されているアクセス管理テーブルT100で管理されているプログラムカウンタか否かを検出する処理部である。つまり、あるメモリ領域への書き込みが完了したか否かを検出するものである。
[0052]
 命令検出部117は、図3に示すように、テーブル読出制御部300、dep_id選択部301及びPC比較部302を有している。
[0053]
 テーブル読出制御部300は、ある命令が実行された際に演算器群112から命令実行信号を受け取ると、アクセス管理テーブルT100のエントリの読み出しの動作を開始する。
[0054]
 PC比較部302は、読み出されたアクセス管理テーブルT100のエントリに含まれるvalid化PCと、ある命令が実行された際に演算器群112から出力されたPCとが一致するか否かを判定し、その結果をdep_id選択部301へ出力する。
[0055]
 dep_id選択部301は、テーブル読出制御部300により読み出されたentry_validの値と、dep_idの値とを取得する。
[0056]
 また、dep_id選択部301は、PC比較部302による比較結果をも取得する。
[0057]
 さらには、dep_id選択部301は、ある命令が実行された際に演算器群112から命令実行信号、PC及び命令th_idをも受け取る。
[0058]
 dep_id選択部301は、PC比較部302の比較結果に基づいて、実行された命令のPCの値が検出すべき命令であった場合には、対応して受け取った命令th_id、取得したdep_id(以下、命令dep_idという。)及び命令検出信号を含む命令検出情報を更新制御部114へ出力する。
[0059]
 (14)読み出し検出部116
 読み出し検出部116は、データメモリとアクセスする命令の実行時に、そのアクセス対象アドレスに基づいて、管理テーブル記憶部118で保持されているReadアクセス管理テーブルT150で管理されているメモリ領域であるか否かを検出する。
[0060]
 読み出し検出部116は、図3に示すように、テーブル読出制御部400、valid選択部401、Readアドレス比較部402、th_id比較部403及び加算器404を有している。
[0061]
 テーブル読出制御部400は、メモリアクセス120においてデータメモリ115に読み出しアクセスを行うRead命令が実行された際にメモリアクセス120からRead実行信号を受け取ると、Readアクセス管理テーブルT150のエントリの読み出しの動作を開始する。
[0062]
 Readアドレス比較部402は、読み出されたReadアクセス管理テーブルT150のaddressの値と、メモリアクセス120から出力されたReadアドレスとを比較し、比較した結果をvalid選択部401へ出力する。ここで、Readアドレスとは、メモリアクセス120においてデータメモリ115に読み出しアクセスを行う命令が実行された際に、メモリアクセス120より出力される、読み出しアクセスを行う対象のデータメモリアドレスである。
[0063]
 加算器404は、読み出されたth_idの値とth_strideの値の和を算出し、算出結果をth_id比較部403へ出力する。
[0064]
 th_id比較部403は、メモリアクセス120から出力されたRead th_idの値と、加算器404から受け取った値(読み出されたth_idの値とth_strideの値の和)とを比較し、比較した結果をvalid選択部401へ出力する。ここで、Read th_idは、メモリアクセス120においてデータメモリ115に読み出しアクセスを行う命令が実行された際に、メモリアクセス120より出力される、読み出しアクセスを行う命令が属するスレッドのスレッド番号である。
[0065]
 valid選択部401は、Read実行信号をメモリアクセス120から受け取る。
[0066]
 また、valid選択部401は、テーブル読出制御部300により読み出されたentry_validの値、dep_idの値及びvalidの値を取得する。
[0067]
 さらに、valid選択部401は、Readアドレス比較部402による比較結果、及びth_id比較部403による比較結果のそれぞれを取得する。
[0068]
 valid選択部401は、Readアドレス比較部402による比較結果、及びth_id比較部403による比較結果から、Readアドレスが検出すべきものであった場合、それに対応して取得したvalidの値を、メモリアクセス120へ出力する。
[0069]
 1.2 動作
 ここでは、マルチスレッドプロセッサ100の動作について説明する。
[0070]
 (1)命令検出時の動作について
 まず、ある命令が実行された際に、命令検出部117で行われる動作について、図4に示す流れ図を用いて説明する。なお、当該処理は、命令検出部117が演算器群112からある命令に対する命令実行信号、PC及び命令th_idを受け取ったことで、開始されるものとする。
[0071]
 ある命令が実行されると、テーブル読出制御部300は、アクセス管理テーブルT100からエントリを読み出すための制御に用いるカウンタnを0に初期化する(ステップS5)。ここで、カウンタnは、テーブル読出制御部300に保持されている。
[0072]
 PC比較部302は、アクセス管理テーブルT100からn番目のエントリに含まれるvalid化PCの値を取得し(ステップS10)、取得したvalid化PCの値と、演算器群112から受け取ったPCの値とが等しいか否かを判断する(ステップS15)。
[0073]
 PC比較部302がvalid化PCの値と演算器群112から受け取ったPCの値とが等しいと判断する場合(ステップS15における「Yes」)、dep_id選択部301は、n番目のエントリに含まれるentry_validの値を取得する(ステップS20)。ここで、ステップS15における判断結果が真であるとは、アクセス管理テーブルT100において管理されているPCで示される命令までが実行された、つまりあるメモリ領域への書き込みが完了したことを検出したことを示す。
[0074]
 dep_id選択部301は、取得したentry_validの値が、「1」であるか否かを判断する(ステップS25)。
[0075]
 「1」であると判断する場合(ステップS25における「Yes」)、dep_id選択部301は、アクセス管理テーブルT100からn番目のエントリに含まれるdep_idの値を取得する(ステップS30)。
[0076]
 dep_id選択部301は、取得したdep_idの値(命令dep_id)と、実行された命令を含むスレッドに対応するth_id(命令th_id)と、命令検出信号とを更新制御部114へ出力する(ステップS35)。
[0077]
 dep_id選択部301が「1」ででないと判断する場合(ステップS25における「No」)、テーブル読出制御部300は、カウンタnの値をインクリメントする(ステップS40)。テーブル読出制御部300は、アクセス管理テーブルT100に登録されているエントリの終端番号をエントリ終端レジスタから取得する(ステップS45)。そして、テーブル読出制御部300は、カウンタnの値が、エントリの終端番号と一致するか否かを判断する(ステップS50)。等しいと判断する場合には処理を終了し(ステップS50における「Yes」)、等しくないと判断する場合には処理はステップS10へ戻る(ステップS50における「No」)。
[0078]
 (2)Readアクセス管理テーブルT150の更新の動作について
 ここでは、アクセス管理テーブルT100において管理されているPCで示される命令までが実行されると、行なわれるReadアクセス管理テーブルT150の更新の動作について、図5に示す流れ図を用いて説明する。
[0079]
 更新制御部114は、命令検出部117から命令dep_id、命令th_id及び命令検出信号を受け取ると、Readアクセス管理テーブルT150からエントリを読み出すための制御に用いるカウンタmを0に初期化する(ステップS100)。ここで、カウンタmは、更新制御部114に保持されている。
[0080]
 更新制御部114は、Readアクセス管理テーブルT150からm番目のエントリに含まれるdep_idの値を取得し(ステップS105)、取得したdep_idの値と、命令検出部117から受け取った命令dep_idの値とが等しいか否かを判断する(ステップS110)。
[0081]
 dep_idの値と命令dep_idの値とが等しいと判断する場合(ステップS110における「Yes」)、更新制御部114は、Readアクセス管理テーブルT150からm番目のエントリに含まれるvalidの値を「1」に変更し、且つth_idの値を命令検出部117から受け取った命令th_idの値に変更する(ステップS115)。
[0082]
 dep_idの値と命令dep_idの値とが等しくないと判断する場合(ステップS110における「No」)、更新制御部114は、カウンタmの値をインクリメントする(ステップS120)。更新制御部114は、Readアクセス管理テーブルT150に登録されているエントリの終端番号をエントリ終端レジスタから取得する(ステップS125)。そして、更新制御部114は、カウンタmの値が、エントリの終端番号と一致するか否かを判断する(ステップS130)。等しいと判断する場合には処理を終了し(ステップS130における「Yes」)、等しくないと判断する場合には処理はステップS105へ戻る(ステップS130における「No」)。
[0083]
 (3)Read命令検出時の動作について
 ここでは、Read命令が実行される際の動作について、図6に示す流れ図を用いて説明する。なお、当該処理は、読み出し検出部116がメモリアクセス120からRead命令に対するRead実行信号、Readアドレス及びRead th_idを受け取ったことで、開始されるものとする。
[0084]
 まず、テーブル読出制御部400は、Readアクセス管理テーブルT150からエントリを読み出すための制御に用いるカウンタpを0に初期化する(ステップS200)。ここで、カウンタpは、テーブル読出制御部400に保持されている。
[0085]
 Readアドレス比較部402は、Readアクセス管理テーブルT150のp番目のエントリに含まれるAddressの値を取得し(ステップS205)、取得したAddressの値が、メモリアクセス120から受け取ったReadアドレスの値と一致するか否かを判断する(ステップS210)。
[0086]
 Readアドレス比較部402が一致すると判断する場合(ステップS210における「Yes」)、valid選択部401は、Readアクセス管理テーブルT150のp番目のエントリに含まれるentry_validの値を取得する(ステップS215)。valid選択部401は、取得したentry_validの値が1であるか否かを判断する(ステップS220)。
[0087]
 valid選択部401がentry_validの値は1であると判断する場合(ステップS220における「Yes」)、加算器404は、Readアクセス管理テーブルT150のp番目のエントリに含まれるth_idの値とth_strideの値を取得し、その和を算出する(ステップS225)。
[0088]
 th_id比較部403は、算出された和(th_idの値とth_strideの値の和)が、メモリアクセス120から受け取ったRead th_idの値と一致するか否かを判断する(ステップS230)。
[0089]
 一致すると判断する場合(ステップS230における「Yes」)、valid選択部401は、Readアクセス管理テーブルT150のp番目のエントリに含まれるvalidの値を取得する(ステップS235)。ここで、比較結果が真(一致)であることは、th_strideの値で示された所望の先行スレッドによる書き込みが完了したメモリ領域であることを示している。
[0090]
 valid選択部401は、取得したvalidの値が1であるか否かを判断する(ステップS240)。
[0091]
 validの値が1であると判断する場合(ステップS240のおける「Yes」)、valid選択部401は、値が0であるReadアクセス信号を命令フェッチ制御部102へ出力する(ステップS245)。
[0092]
 Readアドレス比較部402が一致しないと判断する場合(ステップS210における「No」)、及びvalid選択部401がentry_validの値は1ないと判断する場合(ステップS220における「No」)、
 テーブル読出制御部400は、カウンタpの値をインクリメントする(ステップS250)。テーブル読出制御部400は、Readアクセス管理テーブルT150に登録されているエントリの終端番号をエントリ終端レジスタから取得する(ステップS255)。そして、テーブル読出制御部400は、カウンタpの値が、エントリの終端番号と一致するか否かを判断する(ステップS260)。等しいと判断する場合には処理を終了し(ステップS260における「Yes」)、等しくないと判断する場合には処理はステップS205へ戻る(ステップS260における「No」)。
[0093]
 validの値が1でないと判断する場合(ステップS240のおける「No」)、valid選択部401は、値が1であるReadアクセス信号を命令フェッチ制御部102へ出力する(ステップS265)。
[0094]
 ここで、命令フェッチ制御部102は、Readアクセス信号を受信すると、受信した信号の値が1である場合には、それまでの命令実行シーケンスを停止し、例外発生に相当する特殊処理ベクタへの分岐処理を起動する。なぜなら、アクセス管理テーブルT100で管理されているPCまでの命令が実行されていない、つまり所望の先行スレッドによるメモリ領域への書き込みが終了していないので、例外を発生させ書き込みの完了を待つシーケンスに入る必要があるからである。
[0095]
 1.3 まとめ
 以上により、本実施の形態で示すマルチスレッドプロセッサ100は、例えば書き込み命令を複数回実行した後に読み出し命令を実行するという依存関係を保つことができる。
[0096]
 また、ハードウェアレベルで命令実行の管理を行うことにより従来のようにセマフォによる処理と比較して同期用のコードが不要となり、通信のオーバヘッドが小さくなる。したがって、スレッド間の依存関係を管理するためのソフトウェア処理が、スレッド数が多くなった場合や依存関係が複雑になった場合にも、大きな性能劣化要因とならないプロセッサを実現することができる。
[0097]
 また、上記のアクセス管理テーブルT100及びReadアクセス管理テーブルT150についての生成のタイミングは、実行すべきプログラムを並列化ツールにより分割し、並列に処理が可能となるよう各スレッドに割り当てが行われた後である。なぜなら、各スレッドに割り当てることにより、各スレッド間での依存関係が明確になるからである。
[0098]
 2.第2の実施の形態
 以下、本発明に係る第2の実施の形態について、図面を参照しながら、第1の実施の形態と異なる点を中心に説明する。
[0099]
 2.1 構成
 図7は、第2の実施の形態におけるマルチスレッドプロセッサ1100の構成を示すブロック図である。
[0100]
 マルチスレッドプロセッサ1100は、N(Nは2以上の整数)個の命令流(N個のスレッド)を同時に独立して実行するプロセッサであり、命令メモリ1101と、命令フェッチ制御部1102と、命令群決定部1103と、N個の命令バッファ(第1命令バッファ1104、第2命令バッファ1105、…、第N命令バッファ1106)と、発行命令決定部1107と、優先度決定部1108と、N個のレジスタファイル(第1レジスタファイル1109、第2レジスタファイル1110、…、第Nレジスタファイル1111)と、演算器群1112と、ライトバックバス1113と、更新制御部1114、データメモリ1115と、読み出し検出部1116と、命令検出部1117と、管理テーブル記憶部1118と、アドレス変換部1130を備えている。
[0101]
 ここで、各命令バッファとレジスタファイルは1対1に対応付けられ、第1の実施の形態と同様に、N個の論理プロセッサを構成する。
[0102]
 (1)アドレス変換部1130
 アドレス変換部1130は、命令フェッチ制御部1102から入力されたフェッチアドレス(論理アドレス)を、変換テーブルT200を用いて別アドレス(物理アドレス)へ変換して、命令メモリ1101へ出力するものである。この動作は、仮想空間を扱うためにMMU(メモリマネージメントユニット)を備えるプロセッサ上で、仮想空間のページを管理するためのTLB(トランスレーションルックアサイドバッファ)の動作である(例えば、以下の非特許文献2を参照)。
[0103]
 非特許文献2:『Modern Processor Design』、McGraw-Hill Series in Electrical and Computer Engineering、p.142-145(ISBN0-07-057064)

 以下、本実施の形態におけるアドレス変換部1130の具体的な機能について説明する。
[0104]
 アドレス変換部1130は、図8に示すように、変換テーブルT200を有している。
[0105]
 変換テーブルT200は、PCチェックフラグ、フラグ類、論理アドレス及び物理アドレスからなる組(エントリ)を複数個記憶するための領域を有している。ここで、各エントリにおいて、4KB単位のページと呼ばれるメモリ領域が管理されている。
[0106]
 PCチェックフラグは、当該エントリに含まれるページ内に、命令検出部1117に通知してチェックすべきPCが含まれている可能性があることを示すフラグである。具体的には、PCチェックフラグの値が1である場合にはチェックすべきPCが含まれている可能性があることを示し、値が0である場合にはチェックすべきPCが含まれている可能性が無いことを示す。
[0107]
 フラグ類は、一般的なTLBに備えられているフラグ類であり、本特許では詳細な説明は省く。
[0108]
 論理アドレスは、一般的なTLBに備えられている論理アドレスフィールドであり、本特許では詳細な説明は省く。
[0109]
 物理アドレスは、一般的なTLBに備えられている物理アドレスフィールドであり、本特許では詳細な説明は省く。
[0110]
 アドレス変換部1130は、命令フェッチ制御部1102から論理アドレスを受け取ると、変換テーブルT200を用いて当該論理アドレスを物理アドレスへと変換する。
[0111]
 アドレス変換部1130は、受け取った論理アドレスに対応するPCチェックフラグの値が1である場合には、物理アドレスと、値が1であるPCチェック要求とを命令メモリ1101へ出力する。PCチェックフラグの値が0である場合には、アドレス変換部1130は、物理アドレスと、値が0であるPCチェック要求を命令メモリ1101へ出力する。ここで、PCチェック要求とは、命令検出部1117に通知して実行される命令のPCをチェックすべきか否かを示すものであり、PCチェック要求の値が1である場合にはチェックすべき旨を示し、値が0である場合にはチェック不要を示す。
[0112]
 (2)命令メモリ1101
 命令メモリ1101は、第1の実施の形態と同様に、マルチスレッドプロセッサにおいて実行される命令を保持するメモリであり、N本の独立に実行される命令流(スレッド)を保持している。
[0113]
 命令メモリ1101は、命令フェッチ制御部1102から値が1であるPCチェック要求を受け取ると、物理アドレスで指定された命令をフェッチする際に、フェッチされた命令に対してチェック対象の命令であることを示すフラグ情報を付加して、命令フェッチ制御部1102に出力する。
[0114]
 以降の命令デコード・スケジュール・実行の動作においては、当該フラグ状態が付加された状態のまま行われる。
[0115]
 (3)命令フェッチ制御部1102
 命令フェッチ制御部1102は、各スレッドのプログラムカウンタを保持し、次に実行する命令を命令メモリから読み出す。
[0116]
 具体的には、命令フェッチ制御部1102は、次に実行する命令の論理アドレスをアドレス変換部1130へ出力し、その後、命令メモリ1101から命令を受け取る。命令を受け取る際には、PCをチェックすべき命令である場合には、フラグ状態が付加されている。
[0117]
 (4)命令群決定部1103
 命令群決定部1103は、第1の実施の形態で示す命令群決定部103と同様であるので、ここでの説明は省略する。
[0118]
 (5)第1命令バッファ1104から第N命令バッファ1106
 第1命令バッファ1104から第N命令バッファ1106は、は、第1の実施の形態で示す各命令バッファと同様であるので、ここでの説明は省略する。なお、以下において、i番目の命令流を第i命令流という(iは1以上N以下の整数)。
[0119]
 (6)発行命令決定部1107
 発行命令決定部1107は、第1の実施の形態で示す発行命令決定部107と同様であるので、ここでの説明は省略する。
[0120]
 (7)優先度決定部1108
 優先度決定部1108は、第1の実施の形態で示す優先度決定部108と同様であるので、ここでの説明は省略する。
[0121]
 (8)第1レジスタファイル1109から第Nレジスタファイル1111
 第1レジスタファイル1109から第Nレジスタファイル1111は、第1の実施の形態で示す各レジスタファイルと同様であるので、ここでの説明は省略する。
[0122]
 演算器群1112は、第1の実施の形態と同様に、加算器や乗算器などの複数の演算器を含む処理部であり、メモリアクセス1120をも有している。ここで、メモリアクセス120は、データメモリとアクセスする命令を実行するための演算器である。
[0123]
 演算器群1112は、実行する命令にフラグ状態が付加されている場合には、PCのチェックをすべき旨の情報を通知する。
[0124]
 (10)ライトバックバス1113
 ライトバックバス1113は、第1の実施の形態で示すライトバックバス113と同様であるので、ここでの説明は省略する。
[0125]
 (11)データメモリ1115
 データメモリ1115は、第1の実施の形態で示すデータメモリ115と同様であるので、ここでの説明は省略する。
[0126]
 (12)管理テーブル記憶部1118
 管理テーブル記憶部1118は、第1の実施の形態と同様に、アクセス管理テーブル及びReadアクセス管理テーブルを記憶している。なお、以降の説明において必要であれば、図2(a)、(b)で示すアクセス管理テーブルT100及びReadアクセス管理テーブルT150を用いて説明する。
[0127]
 (13)更新制御部1114
 更新制御部1114は、第1の実施の形態の更新制御部114と同様に、アクセス管理テーブルT100及びReadアクセス管理テーブルT150を更新するものである。なお、更新についての詳細な機能は、第1の実施の形態と同様であるので、ここでの説明は省略する。
[0128]
 (14)命令検出部1117
 命令検出部1117は、第1の実施の形態で示す命令検出部117と同様の構成要素を有し、命令の実行時に、その命令のプログラムカウンタの値に基づいて、管理テーブル記憶部1118で保持されているアクセス管理テーブルT100で管理されているプログラムカウンタか否かを検出する処理を行う。
[0129]
 第1の実施の形態と異なる点は、上記の処理は、演算器群1112からPCをチェックすべき旨の情報が通知されたときに開始されることである。
[0130]
 以下、必要であれば、第1の実施の形態で示す構成要素を用いて説明する。
[0131]
 (15)読み出し検出部1116
 読み出し検出部1116は、第1の実施の形態で示す読み出し検出部116と同様の構成要素を有し、データメモリとアクセスする命令の実行時に、そのアクセス対象アドレスに基づいて、管理テーブル記憶部1118で保持されているReadアクセス管理テーブルT150で管理されているメモリ領域であるか否かを検出する。
[0132]
 なお、詳細な機能については、第1の実施の形態と同様であるので、ここでの説明は省略する。
[0133]
 2.2 動作
 ここでは、マルチスレッドプロセッサ1100の動作について、第1の実施の形態で示すマルチスレッドプロセッサ100の動作と異なる点を中心に説明する。
[0134]
 (1)命令検出時の動作について
 命令検出時の動作は、第1の実施の形態で示す動作(図4参照)と同様の動作の流れであるが、開始のタイミングが異なる。本実施の形態では、命令検出部1117は、演算器群1112からPCをチェックすべき旨の情報が通知されたときに、当該処理を開始する。
[0135]
 (2)Readアクセス管理テーブルT150の更新の動作について
 本実施の形態におけるReadアクセス管理テーブルT150の更新の動作は、第1の実施の形態で示す動作(図5参照)と同様であるので、ここでの説明は省略する。
[0136]
 (3)Read命令検出時の動作について
 本実施の形態におけるRead命令検出時の動作は、第1の実施の形態で示す動作(図6参照)と同様であるので、ここでの説明は省略する。
[0137]
 2.3 まとめ
 以上により、アドレス変換部1130を用いることで、演算器群1112で実行され、命令検出部1117でチェックする命令数を大幅に削減し、命令検出部1117の動作頻度を削減し、回路の消費電力を削減することができる。
[0138]
 また、第1の実施の形態と同様に、本実施の形態で示すマルチスレッドプロセッサ100は、例えば書き込み命令を複数回実行した後に読み出し命令を実行するという依存関係を保つことができる。
[0139]
 第1の実施の形態と同様に、第2の実施の形態においても、ハードウェアレベルで命令実行の管理を行っており、従来のようにセマフォによる処理と比較して同期用のコードが不要となり、通信のオーバヘッドが小さくなる。したがって、スレッド間の依存関係を管理するためのソフトウェア処理が、スレッド数が多くなった場合や依存関係が複雑になった場合にも、大きな性能劣化要因とならないプロセッサを実現することができる。
[0140]
 また、第1の実施の形態と同様に、アクセス管理テーブルT100及びReadアクセス管理テーブルT150についての生成のタイミングは、実行すべきプログラムを並列化ツールにより分割し、並列に処理が可能となるよう各スレッドに割り当てが行われた後である。さらに、変換テーブルT200についても、実行すべきプログラムを並列化ツールにより分割し、並列に処理が可能となるよう各スレッドに割り当てが行われた後に生成される。なぜなら、各スレッドに割り当てることにより、各スレッド間で使用されるページ等も明確にかるからである。
[0141]
 3.第3の実施の形態
 以下、本発明に係る第3の実施の形態について、図面を参照しながら、第1及び第2の実施の形態と異なる点を中心に説明する。
[0142]
 3.1 構成
 図9は、第3の実施の形態におけるマルチスレッドプロセッサ2100の構成を示すブロック図である。
[0143]
 マルチスレッドプロセッサ2100は、N(Nは2以上の整数)個の命令流(N個のスレッド)を同時に独立して実行するプロセッサであり、命令メモリ2101と、命令フェッチ制御部2102と、命令群決定部2103と、N個の命令バッファ(第1命令バッファ2104、第2命令バッファ2105、…、第N命令バッファ2106)と、発行命令決定部2107と、優先度決定部2108と、N個のレジスタファイル(第1レジスタファイル2109、第2レジスタファイル2110、…、第Nレジスタファイル2111)と、演算器群2112と、ライトバックバス2113と、更新制御部2114、データメモリ2115と、読み出し検出部2116と、命令検出部2117と、管理テーブル記憶部2118と、アドレス変換部2130を備えている。
[0144]
 ここで、各命令バッファとレジスタファイルは1対1に対応付けられ、第1及び第2の実施の形態と同様に、N個の論理プロセッサを構成する。
[0145]
 (1)命令メモリ2101
 命令メモリ2101は、第1の実施の形態と同様に、マルチスレッドプロセッサにおいて実行される命令を保持するメモリであり、N本の独立に実行される命令流(スレッド)を保持している。
[0146]
 (2)命令フェッチ制御部2102
 命令フェッチ制御部2102は、第1の実施の形態で示す命令フェッチ制御部102と同様であるので、ここでの説明は省略する。
[0147]
 (3)命令群決定部2103
 命令群決定部2103は、第1の実施の形態で示す命令群決定部103と同様であるので、ここでの説明は省略する。
[0148]
 (4)第1命令バッファ2104から第N命令バッファ2106
 第1命令バッファ2104から第N命令バッファ2106は、は、第1の実施の形態で示す各命令バッファと同様であるので、ここでの説明は省略する。なお、以下において、i番目の命令流を第i命令流という(iは1以上N以下の整数)。
[0149]
 (5)発行命令決定部2107
 発行命令決定部2107は、第1の実施の形態で示す発行命令決定部107と同様であるので、ここでの説明は省略する。
[0150]
 (6)優先度決定部2108
 優先度決定部2108は、第1の実施の形態で示す優先度決定部108と同様であるので、ここでの説明は省略する。
[0151]
 (7)第1レジスタファイル2109から第Nレジスタファイル2111
 第1レジスタファイル2109から第Nレジスタファイル2111は、第1の実施の形態で示す各レジスタファイルと同様であるので、ここでの説明は省略する。
[0152]
 (8)アドレス変換部2130
 アドレス変換部2130は、メモリアクセス2120から入力されたアクセスアドレス(論理アドレス)を、変換テーブルT300を用いて別アドレス(物理アドレス)へ変換して、データメモリ2115へ出力するものである。この動作は、仮想空間を扱うためにMMU(メモリマネージメントユニット)を備えるプロセッサ上で、仮想空間のページを管理するためのTLB(トランスレーションルックアサイドバッファ)の動作である(非特許文献1参照)。
[0153]
 以下、本実施の形態におけるアドレス変換部2130の具体的な機能について説明する。
[0154]
 アドレス変換部2130は、図10に示すように、変換テーブルT300を有している。
[0155]
 変換テーブルT300は、Readチェックフラグ、フラグ類、論理アドレス及び物理アドレスからなる組(エントリ)を複数個記憶するための領域を有している。ここで、各エントリにおいて、4KB単位のページと呼ばれるメモリ領域が管理されている。
[0156]
 Readチェックフラグは、当該エントリに含まれるページ内に、読み出し検出部2116に通知してチェックすべきReadアドレスが含まれている可能性があることを示すフラグである。具体的には、Readチェックフラグの値が1である場合にはチェックすべきReadアドレスが含まれている可能性があることを示し、値が0である場合にはチェックすべきReadアドレスが含まれている可能性が無いことを示す。
[0157]
 フラグ類は、一般的なTLBに備えられているフラグ類であり、本特許では詳細な説明は省く。
[0158]
 論理アドレスは、一般的なTLBに備えられている論理アドレスフィールドであり、本特許では詳細な説明は省く。
[0159]
 論理アドレスは、一般的なTLBに備えられている物理アドレスフィールドであり、本特許では詳細な説明は省く。
[0160]
 アドレス変換部2130は、メモリアクセス2120から論理アドレスを受け取ると、変換テーブルT300を用いて当該論理アドレスを物理アドレスへと変換する。
[0161]
 アドレス変換部2130は、受け取った論理アドレスに対応するReadチェックフラグの値が1である場合には、値が1であるReadチェック要求とをメモリアクセス2120へ出力する。Readチェックフラグの値が0である場合には、アドレス変換部2130は、値が0であるReadチェック要求をメモリアクセス2120へ出力する。ここで、Readチェック要求とは、読み出し検出部2116に通知して実行されるRead命令のReadアクセスをチェックすべきか否かを示すものであり、Readチェック要求の値が1である場合にはチェックすべき旨を示し、値が0である場合にはチェック不要を示す。
[0162]
 演算器群2112は、第1の実施の形態と同様に、加算器や乗算器などの複数の演算器を含む処理部であり、メモリアクセス2120をも有している。ここで、メモリアクセス220は、データメモリとアクセスする命令を実行するための演算器である。
[0163]
 メモリアクセス2120は、実行する命令に対するReadチェック要求をアドレス変換部2130から受け取ると、Readアドレスのチェックをすべき旨の情報を通知する。
[0164]
 (10)ライトバックバス2113
 ライトバックバス2113は、第1の実施の形態で示すライトバックバス113と同様であるので、ここでの説明は省略する。
[0165]
 (11)データメモリ2115
 データメモリ2115は、第1の実施の形態で示すデータメモリ115と同様であるので、ここでの説明は省略する。
[0166]
 (12)管理テーブル記憶部2118
 管理テーブル記憶部2118は、第1の実施の形態と同様に、アクセス管理テーブル及びReadアクセス管理テーブルを記憶している。なお、以降の説明において必要であれば、図2(a)、(b)で示すアクセス管理テーブルT100及びReadアクセス管理テーブルT150を用いて説明する。
[0167]
 (13)更新制御部2114
 更新制御部2114は、第1の実施の形態の更新制御部114と同様に、アクセス管理テーブルT100及びReadアクセス管理テーブルT150を更新するものである。なお、更新についての詳細な機能は、第1の実施の形態と同様であるので、ここでの説明は省略する。
[0168]
 (14)命令検出部2117
 命令検出部2117は、第1の実施の形態で示す命令検出部117と同様の構成要素を有し、命令の実行時に、その命令のプログラムカウンタの値に基づいて、管理テーブル記憶部2118で保持されているアクセス管理テーブルT100で管理されているプログラムカウンタか否かを検出する処理を行う。
[0169]
 なお、詳細な機能については、第1の実施の形態と同様であるので、ここでの説明は省略する。
[0170]
 (15)読み出し検出部2116
 読み出し検出部2116は、第1の実施の形態で示す読み出し検出部116と同様の構成要素を有し、データメモリとアクセスする命令の実行時に、そのアクセス対象アドレスに基づいて、管理テーブル記憶部1118で保持されているReadアクセス管理テーブルT150で管理されているメモリ領域であるか否かを検出する。
[0171]
 第1及び第2の実施の形態と異なる点は、上記の処理は、メモリアクセス2120からReadアドレスをチェックすべき旨の情報が通知されたときに開始されることである。
[0172]
 以下、必要であれば、第1の実施の形態で示す構成要素を用いて説明する。
[0173]
 3.2 動作
 ここでは、マルチスレッドプロセッサ2100の動作について、第1の実施の形態で示すマルチスレッドプロセッサ100、及び第2の実施の形態で示すマルチスレッドプロセッサ1100の動作と異なる点を中心に説明する。
[0174]
 (1)命令検出時の動作について
 命令検出時の動作は、第1の実施の形態で示す動作(図4参照)と同様であるので、ここでの説明は省略する。
[0175]
 (2)Readアクセス管理テーブルT150の更新の動作について
 本実施の形態におけるReadアクセス管理テーブルT150の更新の動作は、第1の実施の形態で示す動作(図5参照)と同様であるので、ここでの説明は省略する。
[0176]
 (3)Read命令検出時の動作について
 本実施の形態におけるRead命令検出時の動作は、第1の実施の形態で示す動作(図6参照)と同様の動作の流れであるが、開始のタイミングが異なる。本実施の形態では、読み出し検出部2116は、メモリアクセス2120からReadアドレスをチェックすべき旨の情報が通知されたときに、当該処理を開始する。
[0177]
 なお、詳細な動作の流れは、図4にて示す流れ図と同様であるので、ここでの説明は省略する。
[0178]
 3.3 まとめ
 以上により、アドレス変換部1130を用いることで、演算器群2112で実行され、読み出し検出部2116でチェックするRead命令数を大幅に削減し、読み出し検出部2116の動作頻度を削減し、回路の消費電力を削減することができる。
[0179]
 また、第1の実施の形態と同様に、本実施の形態で示すマルチスレッドプロセッサ100は、例えば書き込み命令を複数回実行した後に読み出し命令を実行するという依存関係を保つことができる。
[0180]
 第1の実施の形態と同様に、第3の実施の形態においても、ハードウェアレベルで命令実行の管理を行っており、従来のようにセマフォによる処理と比較して同期用のコードが不要となり、通信のオーバヘッドが小さくなる。したがって、スレッド間の依存関係を管理するためのソフトウェア処理が、スレッド数が多くなった場合や依存関係が複雑になった場合にも、大きな性能劣化要因とならないプロセッサを実現することができる。
[0181]
 なお、本実施の形態で示すマルチスレッドプロセッサ2100は、第1の実施の形態で示すマルチスレッドプロセッサ100の構成要素にアドレス変換部2130を加えた構成としたが、本実施の形態で示すマルチスレッドプロセッサ2100は、第2の実施の形態で示すマルチスレッドプロセッサ1100の構成要素にアドレス変換部2130を加えた構成としてもよい。
[0182]
 また、第1の実施の形態と同様に、アクセス管理テーブルT100及びReadアクセス管理テーブルT150についての生成のタイミングは、実行すべきプログラムを並列化ツールにより分割し、並列に処理が可能となるよう各スレッドに割り当てが行われた後である。さらに、変換テーブルT300についても、実行すべきプログラムを並列化ツールにより分割し、並列に処理が可能となるよう各スレッドに割り当てが行われた後に生成される。なぜなら、各スレッドに割り当てることにより、各スレッド間で使用されるページ等も明確にかるからである。
[0183]
 4.第4の実施の形態
 以下、本発明に係る第4の実施の形態について、図面を参照しながら、第1の実施の形態と異なる点を中心に説明する。
[0184]
 図11は、第4の実施の形態におけるマルチコアプロセッサシステム3000のハードウェア構成を示すブロック図である。
[0185]
 マルチコアプロセッサシステム3000は、図3に示すようにマルチスレッドプロセッサ100aと100bとから構成されている。
[0186]
 マルチスレッドプロセッサ100aと100bとは、ともに第1の実施の形態で示すマルチスレッドプロセッサ100と同様の構成を有している。
[0187]
 マルチスレッドプロセッサ100と異なる点は、マルチスレッドプロセッサ100aが有する更新制御部114aと、マルチスレッドプロセッサ100bが有する更新制御部114bとの機能が、第1の実施の形態における更新制御部114の機能と異なる点である。
[0188]
 以下、その点を中心に説明する。
[0189]
 マルチスレッドプロセッサ100aが有する管理テーブル記憶部118aと、マルチスレッドプロセッサ100bが有する管理テーブル記憶部118bとは、第1の実施の形態で示す管理テーブル記憶部118bと同様であるのでここでの説明は省略する。
[0190]
 更新制御部114aは、当該マルチスレッドプロセッサ100aで保持されている各テーブルを更新するとともに、マルチスレッドプロセッサ100bで保持されている各テーブルの更新をも行う。
[0191]
 また、更新制御部114bについても同様に、当該マルチスレッドプロセッサ100bで保持されている各テーブルを更新するとともに、マルチスレッドプロセッサ100aで保持されている各テーブルの更新をも行う。
[0192]
 なお、更新のタイミングについては、第1の実施の形態と同様であるので、ここでの詳細な説明については、省略する。
[0193]
 以上により、プロセッサ間の密結合を抑制し、半導体としての実装難易度を下げることができる。
[0194]
 なお、本実施の形態で示すマルチスレッドプロセッサ3100は、第1の実施の形態で示すマルチスレッドプロセッサ100の更新制御部114を変更した構成としたが、これに限定されない。本実施の形態で示すマルチスレッドプロセッサ3100は、第2の実施の形態で示すマルチスレッドプロセッサ1100の更新制御部1114を変更した構成としてもよいし、第3の実施の形態で示すマルチスレッドプロセッサ2100の更新制御部2114を変更した構成としてもよい。
[0195]
 5.第5の実施の形態
 ここでは、本発明に係る第5の実施の形態について、第1の実施の形態で示すマルチスレッドプロセッサ100をデジタルAV機器向けのシステムLSI映像のデコード及びエンコード処理に適用する場合の動作を説明する。
[0196]
 先ず、デコード処理に適用した場合について説明する。
[0197]
 マルチスレッドプロセッサ100は、図12に示すように、4つのマクロブロック(MBn、MBn+1、Bn+2、Bn+3)をデコードするものであり、マクロブロック単位(MBn、MBn+1、Bn+2、Bn+3)の処理を、スレッド0からスレッド3として、各マクロブロックのデコード処理を行う。ここで、マクロブロックMBn、MBn+1、Bn+2、Bn+3は、これらの配置が連続していることとする。
[0198]
 例えば、H.264等の規格を用いて圧縮された映像信号をデコードするためには、ビットストリームの解析・可変長符号化された信号の可変長復号処理(VLD)・逆量子化及び逆周波数変換(IQT)・動き補償(MC)・画像の再構成(Recon)・デブロックフィルタ処理(DBF)を行う必要がある。
[0199]
 また、例えば、マクロブロックMBnの可変長復号処理においては、次のマクロブロックMBn+1で参照すべきデータ(受け渡しデータ)をあるメモリ領域へ書き込む。図13で示すように、時間t1でその書き込みが完了すると、マルチスレッドプロセッサ100は、Readアクセス管理テーブルT150での当該メモリ領域に対応するAddressに応じたvalidの値を1へと更新する。こうすることで、次のマクロブロックMBn+1は、当該メモリ領域に書き込まれた受け渡しデータの読み出しを開始することができる。
[0200]
 また、時間t2、t3、t4、t5においても同様に、マクロブロックMBnでデコードに係る処理(IQT、MC、Recon、DBF)それぞれが完了すると、つまり受け渡しデータの書込みが完了すると、マルチスレッドプロセッサ100は、Readアクセス管理テーブルT150で対応するAddressに応じたvalidの値を1へと更新する。これにより、マクロブロックMBn+1では、デコードに係る処理(IQT、MC、Recon、DBF)を実行する際に、マクロブロックMBnにより書き込まれた受け渡しデータの読み出しを開始することができる。
[0201]
 なお、マクロブロックMBn+1とマクロブロックMBn+2との間、及びマクロブロックMBn+2とマクロブロックMBn+3との間それぞれにおけるデコード処理に係る依存関係についても上記と同様であるので、ここでの説明は省略する。
[0202]
 次に、エンコード処理に適用した場合を説明する。
[0203]
 マクロブロックのエンコード処理には、通常、符号化対象の画像データに対する予測誤差を算出する減算処理、予測誤差に対して周波数変換及び量子化を行う量子化処理、量子化DCT係数及び動きベクトルを可変長符号化する符号化処理、参照画像の生成に係る処理、動き補償に係る処理が含まれる。
[0204]
 マルチスレッドプロセッサの動作の概念は、上記のデコード処理に適用した場合と同様に、あるマクロブロック(例えば、MBn)についての減算処理が完了する、つまり次のマクロブロックMBn+1に引き渡すデータの書き込みが完了すると、マクロブロックMBn+1は、書き込まれた受け渡しデータの読み出しを開始する。
[0205]
 また、他の処理についての依存関係においても同様である。
[0206]
 このように、マクロブロック単位のエンコード処理及びエンコード処理をスレッド毎に実行する場合、各スレッド間の依存関係をプログラムカウンタで管理することにより、スレッド間の依存関係を管理するためのソフトウェア処理が、スレッド数が多くなった場合や依存関係が複雑になった場合にも、大きな性能劣化要因とならないデジタルAV機器向けのシステムLSI映を実現することができる。
[0207]
 6.変形例
 以上、各実施の形態に基づいて説明したが、本発明は上記の各実施の形態に限られない。例えば、以下のような変形例が考えられる。
[0208]
 (1)上記第1の実施の形態において、Readアドレスの値とReadアクセス管理テーブルT150のAddressの値との比較において、全アドレスビットを用いた比較を行っていたが、これに限定されない。
[0209]
 例えば、下位7ビットを比較対象から除外することで、128ビット精度での比較としてもよい。こうすることで、Readアクセス管理テーブルT150の記憶容量を削減することができる。
[0210]
 (2)上記各実施の形態において、アクセス管理テーブル及びReadアクセス管理テーブルを管理テーブル記憶部へ記憶するタイミングは、ユーザ操作によるものであってよい。
[0211]
 または、アクセス管理テーブル及びReadアクセス管理テーブルを管理テーブル記憶部とは異なる記憶領域に予め保持しておき、その保持しているアドレスを指定する専用の命令を実行することで、前記異なる記憶領域から管理テーブル記憶部へ、各テーブルをコピーしてもよい。
[0212]
 (3)上記各実施の形態において、あるメモリ領域への書き込みの完了の検出、つまりスレッドに含まれる特定の位置に存在する命令の検出をプログラムカウンタ(PC)で制御したが、これに限定されない。
[0213]
 例えば、検出対象となるスレッドに含まれる特定の位置に、専用命令を置いてもよい。または、実行前にその位置にOP例外が発生するようなコードをおいて対応する割り込み処理ルーチンで処理をしてもよい。
[0214]
 (4)上記各実施の形態において、読み出し命令についてもプロセッサエレメントのデコード処理する他に、実行前にOP例外が発生するよう読み出し命令をコード書き換えする等の方法でトラップして対応するルーチンで特別処理をしてもよい。
[0215]
 (5)上記各実施の形態において、アクセス管理テーブルのエントリとReadアクセス管理テーブルのエントリとは、1対1の関係にあったが、これに限定されない。
[0216]
 1対多の関係であってもよい。この場合、読み出し検出部は、図6に示すステップS230の判断について「No」と判断する場合、処理の移行先をステップS250へと変更することで実現できる。
[0217]
 (6)上記各実施の形態において、管理対象となるメモリ領域の領域長は、固定長であってもよいし、管理対象となるメモリ領域毎に異なる可変長であってもよい。
[0218]
 (7)上記各実施の形態において、データを読み出す際には、アドレスを参照したが、これに限定されない。
[0219]
 PC(プログラムカウンタ)指定により読み出しを行ってもよい。例えば、書き込み(Write)と読み出し(Read)の依存関係において、Write時にPCを特定できない場合に、Read側でPC(既に書き込みが終わっていることを保証する命令)を特定することで、WriteとReadの依存関係を保つことができる。
[0220]
 (8)上記各実施の形態において、書き込みが終わっていることを保証するものとしてPCを特定することとしたが、これに限定されない。

 特定の制御レジスタの内容やメモリの内容を参照して、書き込みが終わっているか否かを判断してもよい。 (9)上記第5の実施の形態において、配置が連続するマクロブロック単位に並列処理、つまりスレッドの割り当てを行ったが、これに限定されない。
[0221]
 並列処理は、マクロブロックライン単位であってもよいし、画像処理におけるIDCT等の処理単位であってもよい。または、GOP(Group Of Picture)単位であってもよい。
[0222]
 (10)上記の実施の形態で説明した手法の手順を記述したプログラムをメモリに記憶しておき、CPU(Central Processing Unit)などがメモリからプログラムを読み出して、読み出したプログラムを実行することによって、上記の手法が実現されるようにしてもよい。
[0223]
 また、当該手法の手順を記述したプログラムを記録媒体に格納して、頒布するようにしてもよい。
[0224]
 (11)上記実施の形態及び変形例を組み合わせるとしてもよい。
[0225]
 7.補足
 (1)本発明の一実施態様である、複数のスレッドを実行するプロセッサは、他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定手段と、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御手段とを備えることを特徴とする。
[0226]
 この構成によると、プロセッサは、他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行することで、他のスレッドによる当該メモリ領域に存在するデータの読み出しを行う。つまり、プロセッサは、当該位置に存在する命令が実行されるまでに存在する命令が実行されていることを保証した上で、他のスレッドによる当該メモリ領域に存在するデータの読み出しを行うことができる。これにより、プロセッサは、例えば書き込み命令を複数回実行した後に読み出し命令を実行するという依存関係を保つことができる。
[0227]
 (2)ここで、前記設定手段は、前記位置に存在する命令に応じたプログラムカウンタの値を予め保持する保持領域を有しており、外部から前記プログラムカウンタの値を取得すると、前記保持領域へ格納し、前記一のスレッドにて実行される命令に応じたプログラムカウンタの値と、保持している値とが一致する場合に、前記一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を前記利用情報に設定するとしてもよい。
[0228]
 この構成によると、プロセッサは、プログラムカウンタを用いることで、一のスレッドにおける前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を容易に特定することができる。
[0229]
 (3)ここで、前記保持領域には、さらに、前記利用情報と、前記メモリ領域を示すメモリアドレスとが対応付けられて保持されており、前記制御手段は、前記他のスレッドから前記読み出し命令による読み出し対象であるメモリ領域の読み出し対象アドレスを取得し、前記読み出し対象アドレスと前記メモリアドレスとが一致する場合に、対応する利用情報が示す内容に応じて前記読み出し命令を実行及び抑止するとしてもよい。
[0230]
 この構成によると、プロセッサは、利用情報とメモリアドレスとを対応付けて保持しているので、読み出し対象を示すメモリアドレスが示すメモリ領域の利用状況を容易に特定することができる。
[0231]
 (4)ここで、前記プロセッサは、さらに、データの読み出しを行う際に取得した仮想アドレスを物理アドレスに変換し、変換した前記物理アドレスが前記許可手段で予め保持している前記メモリアドレスとの間に関連がある場合には、前記メモリ領域の利用状況を確認すべき旨を通知するアドレス変換手段を備え、前記制御手段は、前記通知を受け取ると、前記メモリアドレスに対応する前記メモリ領域の利用状況を前記利用情報に基づいて判断するとしてもよい。
[0232]
 この構成によると、プロセッサは、アドレス変換手段を備えることで、制御手段が前記所定のメモリ領域の利用状況を判断する必要があるか否かを事前に特定することができる。
[0233]
 (5)ここで、前記メモリ領域は、前記他のスレッドとは別のスレッドにも利用される領域であり、前記制御手段は、さらに、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、前記別のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止するとしてもよい。
[0234]
 この構成によると、プロセッサは、複数の命令の実行後、複数のスレッドで共通に利用するメモリ領域に対する読み出し命令を実行する場合でも、依存関係を保持したままで実行することができる。
[0235]
 (6)ここで、前記プロセッサは、さらに、命令をフェッチする際に取得した仮想アドレスを物理アドレスに変換し、変換した前記物理アドレスが前記許可手段で予め保持している前記プログラムカウンタとの間に関連がある場合には、前記許可手段による前記判断を実行することを要求する要求情報を前記許可手段に通知するアドレス変換手段を備え、前記許可手段は、前記要求情報を前記アドレス変換手段から受け取ると、前記判断を行うとしてもよい。
[0236]
 この構成によると、プロセッサは、アドレス変換手段を備えることで、許可手段による判断を行う必要があるか否かを事前に特定することができる。
[0237]
 (7)ここで、前記設定手段は、さらに、前記メモリ領域への書き込みが完了したことを示す旨を利用情報に設定する際に、他のプロセッサで管理されている別の利用情報に対しても前記メモリ領域への書き込みが完了したことを示す内容を設定するとしてもよい。
[0238]
 この構成によると、プロセッサは、他のプロセッサとの間においても複数の書き込み命令の実行後に読み出し命令を実行するという依存関係を保ちながら処理を行うことができる。
[0239]
 (8)ここで、前記一のスレッド及び他のスレッドは、画像のデコード処理を行うためのものであり、前記プロセッサは、画像のデコード処理を行う画像処理システムに備えられるとしてもよい。
[0240]
 この構成によると、プロセッサは、複数の書き込み命令の実行後に読み出し命令を実行するという依存関係を保ちながらデコード処理を行うことができる。
[0241]
 (9)ここで、前記一のスレッド及び他のスレッドは、画像のエンコード処理を行うためのものであり、前記プロセッサは、画像のエンコード処理を行う画像処理システムに備えられるとしてもよい。
[0242]
 この構成によると、プロセッサは、複数の書き込み命令の実行後に読み出し命令を実行するという依存関係を保ちながらエンコード処理を行うことができる。
[0243]
 (10)また、本発明の一態様である、複数のスレッドを用いて画像を処理する画像処理装置は、他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定手段と、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御手段とを備えることを特徴とする。
[0244]
 この構成によると、画像処理装置は、他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行することで、他のスレッドによる当該メモリ領域に存在するデータの読み出しを行う。つまり、画像処理装置は、当該位置に存在する命令が実行されるまでに存在する命令が実行されていることを保証した上で、他のスレッドによる当該メモリ領域に存在するデータの読み出しを行うことができる。これにより、画像処理装置は、例えば書き込み命令を複数回実行した後に読み出し命令を実行するという依存関係を保つことができる。
[0245]
 (11)ここで、前記画像処理装置は、符号化された画像を復号するものであり、前記複数のスレッドには、符号化された一の画像において配置が連続するマクロブロックが互いに異なるよう割り当てられ、前記書き込みが完了したこと保証する位置に存在する命令とは、可変長復号処理、逆量子化・逆周波数変換に係る処理、動き補償に係る処理、画像の再構成処理及びデブロッキングフィルタ処理の何れかの処理が完了したことを示す命令であり、制御手段は、一のマクロブロックについて、前記書き込みが完了したと判断する場合には、当該一のマクロブロックの後続に位置する次のマクロブロックについて、書き込みが完了したと判断された処理と同一の処理を実行するよう当該処理を制御するとしてもよい。
[0246]
 この構成によると、画像処理装置は、配置が連続するマクロブロックについて、マクロブロック間の依存関係を保ったまま、デコード処理を行うことができる。
[0247]
 (12)ここで、前記画像処理装置は、画像を符号化するものであり、前記複数のスレッドには、一の画像において配置が連続するマクロブロックが互いに異なるよう割り当てられ、前記書き込みが完了したこと保証する位置に存在する命令とは、符号化対象の画像データに対する予測誤差を算出する減算処理、予測誤差に対して量子化と周波数変換を行う量子化処理、符号化処理、参照画像の生成処理、動き補償に係る処理の何れかであり、制御手段は、一のマクロブロックについて、前記書き込みが完了したと判断する場合には、当該一のマクロブロックの後続に位置する次のマクロブロックについて、書き込みが完了したと判断された処理と同一の処理を実行するよう当該処理を制御するとしてもよい。
[0248]
 この構成によると、画像処理装置は、配置が連続するマクロブロックについて、マクロブロック間の依存関係を保ったまま、エンコード処理を行うことができる。

産業上の利用可能性

[0249]
 本発明に係るマルチスレッドプロセッサは、柔軟で高性能な演算処理を実現する機能を有するため、DVDレコーダやデジタルTV等の映像や音声のメディア処理を行なうマルチスレッドプロセッサ等に適用できる。

符号の説明

[0250]
  100  マルチスレッドプロセッサ
  101  命令メモリ
  102  命令フェッチ制御部
  103  命令群決定部
  104  第1命令バッファ
  105  第2命令バッファ
  106  第N命令バッファ
  107  発行命令決定部
  108  優先度決定部
  109  第1レジスタファイル
  110  第2レジスタファイル
  111  第Nレジスタファイル
  112  演算器群
  113  ライトバックバス
  114  更新制御部
  115  データメモリ
  116  読み出し検出部
  117  命令検出部
  118  管理テーブル記憶部
  120  メモリアクセス
  300  テーブル読出制御部
  301  dep_id選択部
  302  PC比較部
  400  テーブル読出制御部
  401  dep_id選択部
  402  Readアドレス比較部
  403  比較部
  404  加算器

請求の範囲

[請求項1]
 複数のスレッドを実行するプロセッサであって、
 他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定手段と、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御手段とを備える
 ことを特徴とするプロセッサ。
[請求項2]
 前記設定手段は、
 前記位置に存在する命令に応じたプログラムカウンタの値を予め保持する保持領域を有しており、
 外部から前記プログラムカウンタの値を取得すると、前記保持領域へ格納し、
 前記一のスレッドにて実行される命令に応じたプログラムカウンタの値と、保持している値とが一致する場合に、前記一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を前記利用情報に設定する
 ことを特徴とする請求項1に記載のプロセッサ。
[請求項3]
 前記保持領域には、さらに、
 前記利用情報と、前記メモリ領域を示すメモリアドレスとが対応付けられて保持されており、
 前記制御手段は、前記他のスレッドから前記読み出し命令による読み出し対象であるメモリ領域の読み出し対象アドレスを取得し、前記読み出し対象アドレスと前記メモリアドレスとが一致する場合に、対応する利用情報が示す内容に応じて前記読み出し命令を実行及び抑止する
 ことを特徴とする請求項2に記載のプロセッサ。
[請求項4]
 前記プロセッサは、さらに、
 データの読み出しを行う際に取得した仮想アドレスを物理アドレスに変換し、変換した前記物理アドレスが前記許可手段で予め保持している前記メモリアドレスとの間に関連がある場合には、前記メモリ領域の利用状況を確認すべき旨を通知するアドレス変換手段を備え、
 前記制御手段は、前記通知を受け取ると、前記メモリアドレスに対応する前記メモリ領域の利用状況を前記利用情報に基づいて判断する
 ことを特徴とする請求項3に記載のプロセッサ。
[請求項5]
 前記メモリ領域は、前記他のスレッドとは別のスレッドにも利用される領域であり、
 前記制御手段は、さらに、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、前記別のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する
 ことを特徴とする請求項2に記載のプロセッサ。
[請求項6]
 前記プロセッサは、さらに、
 命令をフェッチする際に取得した仮想アドレスを物理アドレスに変換し、変換した前記物理アドレスが前記許可手段で予め保持している前記プログラムカウンタとの間に関連がある場合には、前記許可手段による前記判断を実行することを要求する要求情報を前記許可手段に通知するアドレス変換手段を備え、
 前記許可手段は、前記要求情報を前記アドレス変換手段から受け取ると、前記判断を行う
 ことを特徴とする請求項2に記載のプロセッサ。
[請求項7]
 前記設定手段は、さらに、
 前記メモリ領域への書き込みが完了したことを示す旨を利用情報に設定する際に、他のプロセッサで管理されている別の利用情報に対しても前記メモリ領域への書き込みが完了したことを示す内容を設定する
 ことを特徴とする請求項2に記載のプロセッサ。
[請求項8]
 前記一のスレッド及び他のスレッドは、画像のデコード処理を行うためのものであり、
 前記プロセッサは、
 画像のデコード処理を行う画像処理システムに備えられる
 ことを特徴とする請求項1に記載のプロセッサ。
[請求項9]
 前記一のスレッド及び他のスレッドは、画像のエンコード処理を行うためのものであり、
 前記プロセッサは、
 画像のエンコード処理を行う画像処理システムに備えられる
 ことを特徴とする請求項1に記載のプロセッサ。
[請求項10]
 複数のスレッドを実行するプロセッサで用いられる制御方法であって、
 他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定ステップと、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御ステップとを含む
 ことを特徴とする制御方法。
[請求項11]
 複数のスレッドを用いて画像を処理する画像処理装置であって、
 他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定手段と、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御手段とを備える
 ことを特徴とする画像処理装置。
[請求項12]
 前記画像処理装置は、符号化された画像を復号するものであり、
 前記複数のスレッドには、符号化された一の画像において配置が連続するマクロブロックが互いに異なるよう割り当てられ、
 前記書き込みが完了したこと保証する位置に存在する命令とは、可変長復号処理、逆量子化・逆周波数変換に係る処理、動き補償に係る処理、画像の再構成処理及びデブロッキングフィルタ処理の何れかの処理が完了したことを示す命令であり、
 制御手段は、一のマクロブロックについて、前記書き込みが完了したと判断する場合には、当該一のマクロブロックの後続に位置する次のマクロブロックについて、書き込みが完了したと判断された処理と同一の処理を実行するよう当該処理を制御する
 ことを特徴とする請求項11に記載の画像処理装置。
[請求項13]
 前記画像処理装置は、画像を符号化するものであり、
 前記複数のスレッドには、一の画像において配置が連続するマクロブロックが互いに異なるよう割り当てられ、
 前記書き込みが完了したこと保証する位置に存在する命令とは、符号化対象の画像データに対する予測誤差を算出する減算処理、予測誤差に対して量子化と周波数変換を行う量子化処理、符号化処理、参照画像の生成処理、動き補償に係る処理の何れかであり、
 制御手段は、一のマクロブロックについて、前記書き込みが完了したと判断する場合には、当該一のマクロブロックの後続に位置する次のマクロブロックについて、書き込みが完了したと判断された処理と同一の処理を実行するよう当該処理を制御する
 ことを特徴とする請求項11に記載の画像処理装置。

補正された請求の範囲(条約第19条)
[ 2011年11月25日 ( 25.11.2011 )  国際事務局受理 ]

[1]
 複数のスレッドを実行するプロセッサであって、
 他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定手段と、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御手段とを備える
 ことを特徴とするプロセッサ。
[2]
 前記設定手段は、
 前記位置に存在する命令に応じたプログラムカウンタの値を予め保持する保持領域を有しており、
 外部から前記プログラムカウンタの値を取得すると、前記保持領域へ格納し、
 前記一のスレッドにて実行される命令に応じたプログラムカウンタの値と、保持している値とが一致する場合に、前記一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を前記利用情報に設定する
 ことを特徴とする請求項1に記載のプロセッサ。
[3]
 前記保持領域には、さらに、
 前記利用情報と、前記メモリ領域を示すメモリアドレスとが対応付けられて保持されており、
 前記制御手段は、前記他のスレッドから前記読み出し命令による読み出し対象であるメモリ領域の読み出し対象アドレスを取得し、前記読み出し対象アドレスと前記メモリアドレスとが一致する場合に、対応する利用情報が示す内容に応じて前記読み出し命令を実行及び抑止する
 ことを特徴とする請求項2に記載のプロセッサ。
[4]
[補正後] 
 前記プロセッサは、さらに、
 データの読み出しを行う際に取得した仮想アドレスを物理アドレスに変換し、変換した前記物理アドレスが前記保持領域で予め保持している前記メモリアドレスとの間に関連がある場合には、前記メモリ領域の利用状況を確認すべき旨を通知するアドレス変換手段を備え、
 前記制御手段は、前記通知を受け取ると、前記メモリアドレスに対応する前記メモリ領域の利用状況を前記利用情報に基づいて判断する
 ことを特徴とする請求項3に記載のプロセッサ。
[5]
 前記メモリ領域は、前記他のスレッドとは別のスレッドにも利用される領域であり、
 前記制御手段は、さらに、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、前記別のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する
 ことを特徴とする請求項2に記載のプロセッサ。
[6]
[補正後] 
 前記プロセッサは、さらに、
 命令をフェッチする際に取得した仮想アドレスを物理アドレスに変換し、変換した前記物理アドレスが前記保持領域で予め保持している前記プログラムカウンタとの間に関連がある場合には、前記設定手段による前記設定を実行することを要求する要求情報を前記設定手段に通知するアドレス変換手段を備え、
 前記設定手段は、前記要求情報を前記アドレス変換手段から受け取ると、前記設定を行う
 ことを特徴とする請求項2に記載のプロセッサ。
[7]
 前記設定手段は、さらに、
 前記メモリ領域への書き込みが完了したことを示す旨を利用情報に設定する際に、他のプロセッサで管理されている別の利用情報に対しても前記メモリ領域への書き込みが完了したことを示す内容を設定する
 ことを特徴とする請求項2に記載のプロセッサ。
[8]
 前記一のスレッド及び他のスレッドは、画像のデコード処理を行うためのものであり、
 前記プロセッサは、
 画像のデコード処理を行う画像処理システムに備えられる
 ことを特徴とする請求項1に記載のプロセッサ。
[9]
 前記一のスレッド及び他のスレッドは、画像のエンコード処理を行うためのものであり、
 前記プロセッサは、
 画像のエンコード処理を行う画像処理システムに備えられる
 ことを特徴とする請求項1に記載のプロセッサ。
[10]
 複数のスレッドを実行するプロセッサで用いられる制御方法であって、
 他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定ステップと、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御ステップとを含む
 ことを特徴とする制御方法。
[11]
 複数のスレッドを用いて画像を処理する画像処理装置であって、
 他のスレッドと共通に利用するメモリ領域への書き込みを行う一のスレッドにおいて前記メモリ領域への書き込みが完了したこと保証する位置に存在する命令を実行すると、当該メモリ領域への書き込みが完了したか否かを示す利用情報に、当該一のスレッドによる当該メモリ領域への書き込みが完了したことを示す旨を設定する設定手段と、
 前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了したことを示している場合には、他のスレッドによる前記メモリ領域に存在するデータの読み出し命令を実行し、前記利用情報が前記一のスレッドによる前記メモリ領域への書き込みが完了していないことを示している場合には、当該読み出し命令の実行を抑止する制御手段とを備える
 ことを特徴とする画像処理装置。
[12]
 前記画像処理装置は、符号化された画像を復号するものであり、
 前記複数のスレッドには、符号化された一の画像において配置が連続するマクロブロックが互いに異なるよう割り当てられ、
 前記書き込みが完了したこと保証する位置に存在する命令とは、可変長復号処理、逆量子化・逆周波数変換に係る処理、動き補償に係る処理、画像の再構成処理及びデブロッキングフィルタ処理の何れかの処理が完了したことを示す命令であり、
 制御手段は、一のマクロブロックについて、前記書き込みが完了したと判断する場合には、当該一のマクロブロックの後続に位置する次のマクロブロックについて、書き込みが完了したと判断された処理と同一の処理を実行するよう当該処理を制御する
 ことを特徴とする請求項11に記載の画像処理装置。
[13]
 前記画像処理装置は、画像を符号化するものであり、
 前記複数のスレッドには、一の画像において配置が連続するマクロブロックが互いに異なるよう割り当てられ、
 前記書き込みが完了したこと保証する位置に存在する命令とは、符号化対象の画像データに対する予測誤差を算出する減算処理、予測誤差に対して量子化と周波数変換を行う量子化処理、符号化処理、参照画像の生成処理、動き補償に係る処理の何れかであり、
 制御手段は、一のマクロブロックについて、前記書き込みが完了したと判断する場合には、当該一のマクロブロックの後続に位置する次のマクロブロックについて、書き込みが完了したと判断された処理と同一の処理を実行するよう当該処理を制御する
 ことを特徴とする請求項11に記載の画像処理装置。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]