JP5488609B2 - リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ - Google Patents

リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ Download PDF

Info

Publication number
JP5488609B2
JP5488609B2 JP2011540254A JP2011540254A JP5488609B2 JP 5488609 B2 JP5488609 B2 JP 5488609B2 JP 2011540254 A JP2011540254 A JP 2011540254A JP 2011540254 A JP2011540254 A JP 2011540254A JP 5488609 B2 JP5488609 B2 JP 5488609B2
Authority
JP
Japan
Prior art keywords
read
data
parameter data
processing
shift
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.)
Active
Application number
JP2011540254A
Other languages
English (en)
Other versions
JP2012522280A (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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011540254A priority Critical patent/JP5488609B2/ja
Priority claimed from PCT/JP2009/067282 external-priority patent/WO2010113340A1/en
Publication of JP2012522280A publication Critical patent/JP2012522280A/ja
Application granted granted Critical
Publication of JP5488609B2 publication Critical patent/JP5488609B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明はデータ処理装置、データ処理システム、及びデータ処理方法に関する。
単一命令多重データ(SIMD)処理で動作するプロセッサが提唱されている(特許文献1)。図15を参照して、そのようなSIMDの1つの例を説明する。図15はSIMDアーキテクチャを示している概念的なブロック図である。図15に示されているように、SIMDアーキテクチャ90は中央プロセッサ(CP)10、複数の処理要素(PE)11、リングバス12及び13、及び接続14を備える。図15は、それぞれPE00〜PE15で示されている16個のPE11を示している。
CP10はパラメータを格納するデータメモリ(DMEM)16を備え、PE11は処理のためにそれらのパラメータを使用する。各PE11はCP10から転送されたパラメータを格納する内部メモリ(IMEM)17を有する。CP10はパイプライン化されたリングバス12及び13によって各PE11に接続されている。CP10及び各PE11は接続14を介してリングバス12及び13に接続されている。データはCP10と各PE11との間でリングバス12を介して時計回り方向に、及びリングバス13を介して反時計回り方向に転送される。すなわち、データはCP10から各PE11へ、時計回りリングバス12及び反時計回りリングバス13を介して転送される。
処理が開始されると、各PE11はCP10のDMEM16から処理に必要なパラメータを取り出す。各PE11は次のような一般的な方法でCP10のDMEM16に格納されているパラメータを要求する。
(1)要求に応じた転送
(2)プレローディング
上述の(1)要求に応じた転送の場合、PE11がパラメータを必要とするたびに、CP10によってパラメータがDMEM16から読み出され、要求を出しているPE11に転送される。このシーケンスは、例えば、非特許文献1に開示されている。しかしながら、PE11によってデータが要求されるたびに要求パケットが交換されると、バスの通信量が大幅に増大する。16個のPEが同時に又は連続的にデータを要求すると、リングバスの通信量は大幅に増大してしまう。さらに、PEがデータを要求してからそれを受け取るまでに時間がかかり、PE11は処理を開始する前に必要なデータが取り出されるまで待たなければならない。それゆえ、高いパラレル処理効率を期待することはできない。
図16を参照して、データがプレローディングされる場合(上述の(2)の場合)を説明する。図16はPE11での並列使用のための、内部メモリ(IMEM)17内のパラメータの初期設定を示している。
各PE11によるパラメータの使用の前に、CP10によって全パラメータが一度、DMEM16から読み出される。そして、それらのパラメータは各PE11のIMEM17に格納するために、全てのPE11に一斉送信される。プログラム実行中、各PE11は要求されたパラメータを読み出すために、任意のタイミングでそれ自身のIMEM17にアクセスすることができる。しかしながら、各PEは自身のIMEM17に格納された全てのパラメータを有するため、各IMEM17は非常に大きなメモリ容量を必要とする。このような状況から、システムは非常に大きな空間を必要とする。さらに、プレローディングは多数のデータを転送及び書き込みするために相当な時間を要する。
また、SIMDアーキテクチャにおいて、IMEM17の使用を最適化するためにPE11をグループ化することができる。図17はこのシステム構造を示している。パラメータは複数のIMEM17に分配され、複数のIMEM17に格納される。この状態において、あるPEがそれ自身のIMEM17には格納されておらず、隣接するIMEM17に格納されているパラメータにアクセスしたい場合がある。上述のSIMDアーキテクチャに対して、特許文献2に開示されている仕組みを適用することができる。
ここで、コンパイル時に複数のPEがグループ化され、それら全てがアクセス可能な共通内部メモリを有する。その内部メモリに同時にアクセスしようとしているPEの全てに対してアクセスインジケータが設定される。アクセスインジケータを有するPEの1つが選択されるとともに、同一のアドレスにアクセスしようとしているPEが探し出される。そして、パラメータが内部メモリからロードされ、同一のアドレスにアクセスしようとしている全てのPEに転送される。さらに、これらのPEのアクセスインジケータがクリアされる。全てのPEからアクセスインジケータがクリアされるまで、この処理が繰り返される。この方法により、同一のアドレスに対する複数のアクセスが防止されるので、最適なアクセスが達成される。
特許文献3は、隣接する処理要素をグループ化することによって内部メモリアクセスを最適化し、それによりSIMDアーキテクチャの能力を最適化するための異なる手法を開示している。この手法においては、コンパイル時に2つの隣接する処理要素が処理要素の組にグループ化される。これらの組にされた処理要素において、異なるデータバスに接続されたメモリの両方の要素に対して同一のアドレスが割り当てられる。この構成は、例えば、1つのメモリをデータの取得のために使用し、他のメモリをデータの出力にために使用することを可能にする。
特許文献4及び特許文献5はさらに異なる手法を開示している。特許文献4及び5において、割り当ては中央プロセッサ自身によって行われる。特許文献5においては、リングバス上のデータのシフトを制御するためにリングバスコントローラが備えられている。データがリングバスに転送された後、中央プロセッサはリングバスコントローラにリングバス上のデータをシフトするように指示する。リングバスコントローラによる制御動作により、データはリングバス上を所定の量だけ移動する。所定のシフト動作が完了すると、リングバスコントローラは所望のシフト動作が完了したことを中央プロセッサに知らせる。そして、中央プロセッサは処理要素(PE)にそのデータを取り出すように指示する。処理要素(PE)は必要なデータを取り出す。
米国特許公報第3537074号 米国特許公報第7363472号 米国特許公報第6785800号 米国特許公報第5828894号 欧州特許公報第0147857A2号(日本公開特許公報第60−140456号)
Zvonko G. Vranesic、Michael Stumm、David M. Lewis、及びRon White「Hector: A Hierarchically Structured Shared-Memory Multiprocessor」 Computer、第24巻、第1号、72〜79頁、1991年1月、75頁、1〜6行目
データを転送する第1の方法(すなわち、要求に応じた転送)はアクセスが非常に遅いという問題がある。この問題の理由の1つは、要求のたびにDMEMからIMEMにデータが転送されなければならないということである。もう1つの理由は、1つのIMEMにデータが転送されている間、他の全てのPEはそのデータ要求が履行されるまで、それらの実行を中断して待たなければならないということである。
データを転送する第2の方法(すなわち、プレローディング)は高速であるが、パラメータデータが各PEのIMEM内に格納されなければならないので、内部メモリ内に大きなメモリ空間を必要とする。
特許文献2に開示された方法はデータをPEグループの内部メモリに格納することによって、この内部メモリの増大に対する問題を解決することを目的としている。特許文献2はまた、データにアクセスするための一般的な方法を示している。しかしながら、この一般的な方法のために、メモリアクセスの前にPE間でアドレスを交換及び比較しなければならず、PE間のアドレス転送及び比較のために余分な制御論理及び余分な処理時間を消費する。
特許文献3に開示された方法は内部メモリ内のデータ量を減少させることができないという短所を有する。特許文献4に開示された方法は自己グループ化を行うために余分な制御論理を必要とするという短所を有する。特許文献5に開示された方法はリングバスのシフト動作を制御するために余分な制御論理を必要とし、中央プロセッサがPEによるデータの出入力動作及びリングバスコントローラによるリングバスシフトを管理しなければならないという短所を有する。
上述の特許/非特許文献に開示された方法は時間又は領域の点で非効率的である。
本発明は上述の問題の観点からなされたものであり、その目的は読み出し専用のパラメータが複数の内部メモリに分散されて格納されている場合に、(1つ又は複数の)リングバスを介して該読み出し専用パラメータを効率的に転送及び取り込みすることが可能なデータ処理装置、データ処理システム、及びデータ処理方法を提供することである。
本発明によると、データが複数の内部メモリに分散されて格納されている場合に、該データを効率的に読みだすことが可能なデータ処理装置、データ処理システム、及びデータ処理方法を提供することができる。
本発明の上述及び他の目的、長所、及び特徴は付随する図面とともに以下の特定の実施形態の記載を参照することによって、より明白になるだろう。
本発明の実施形態にしたがったデータ処理装置900のアーキテクチャを示している概念的なブロック図である。 DMEM106に格納された読み出し専用パラメータとアドレスとの関係を示している。 各読み出し専用パラメータのグローバルアドレス600の1つの形式を示している。 AddrDMEMとAddrIMEMとの関係を示している。 PE101の構造を概略的に示しているブロック図である。 分割部122によって行われる分割処理の概念図を示している。 分割部122を示しているブロック図である。 分割部の必要なクロックサイクルでの、予想されるソフトウェアエミュレーションを示している。 cmpmv部123を示しているブロック図である。 比較/移動部の必要なクロックサイクルでの、予想されるソフトウェアエミュレーションを示している。 各PE101におけるデータ処理方法を示しているフローチャートである。 リングバスのシフト動作を制御するためにCP100で実行される処理動作を示している。 H.264ビデオデコーダのデコードループを示しているブロック図である。 マクロブロックを示している図である。 特許文献1のSIMDアーキテクチャを示している概念的なブロック図である。 内部メモリ(IMEM)内のパラメータの初期設定を示している。 IMEMの使用を最適化するためにPEをグループ化することができるシステム構造を示している。
(実施の形態1)
本発明の実施形態にしたがったデータ処理装置は単一命令多重データ処理(SIMD)を実行するプロセッサである。図1を参照して、本発明の実施形態にしたがったデータ処理装置を説明する。図1は本発明の実施形態にしたがったデータ処理装置900のアーキテクチャを示している概念的なブロック図である。図1に示されているように、このアーキテクチャは中央プロセッサ(CP)100、データメモリ(DMEM)106、処理要素(PE)101、内部メモリ(IMEM)107、リングバス102、リングバス103、接続104、及び、シフトレジスタ105を備える。
CP100は読み出し専用パラメータを格納するデータメモリDMEM106を有し、PE101は処理のためにそれらの読み出し専用パラメータを使用する。ここで、処理のために32個の読み出し専用パラメータが使用される具体例について説明する。すなわち、DMEM106には32個の読み出し専用パラメータが格納される。ここで、DMEM106に格納された32個の読み出し専用パラメータのアドレスがそれぞれ「00」〜「31」に設定されているとする。図2はDMEM106内の読み出し専用パラメータとそれらのDMEM106内のアドレスAddrDMEMとの関係を示している。
CP100は接続104を介して2つのリングバス102及び103に接続されている。CP100はDMEM106に格納された読み出し専用パラメータを読み出し、読み出された読み出し専用パラメータはリングバス102及び103を介して転送される。
図1は16個のPE101が備えられている例を示している。図1において、説明の簡略化のために16個のPE101にはそれぞれ添え字「00」〜「15」が付けられている。すなわち、16個のPE101はそれぞれPE00〜PE15として識別される。16個のPE101はSIMDモードで動作する。すなわち、CP100が単一の命令を送ると、PE101は並列処理を実行する。
全てのPE101は接続104を介して2つのリングバス102及び103に接続されている。リングバス102及び103にはシフトレジスタ105が備えられている。シフトレジスタ105はリングバス102及び103上で互いに接続されている。リングバス102及び103の各々のシフトレジスタ105の数はPE101の数に一致している。リングバス103はリングバス102とは逆の方向にデータを転送する。リングバス102は時計回り方向にデータを転送し、リングバス103は反時計回り方向にデータを転送する。それゆえ、リングバス102上のシフトレジスタ105のシフト方向はリングバス103上のシフトレジスタ105のシフト方向に対して逆方向である。
また、各PE101はそれ自身のIMEM107に接続されている。各IMEM107はローカルデータ格納部として機能する。単一のIMEM107に対して単一のPE101が接続されている。すなわち、IMEM107の数は16個であり、PE101の数に等しい。これらのIMEM107は分散的な並列処理のために必要な読み出し専用パラメータを格納する。ここで、各IMEM107が2つの読み出し専用パラメータを格納する具体例について説明する。すなわち、全部で32個(16×2)の読み出し専用パラメータが存在する例について説明する。
まず、リングバス102に備えられたシフトレジスタ105によって32個のパラメータが順次、転送される。最初のクロックサイクルで、DMEM106からアドレス「00」に格納されている読み出し専用パラメータ「01」が読み出され、リングバス102に備えられたシフトレジスタ105に保持される。なお、CP100はDMEM106から読み出したデータを最も近いシフトレジスタ105に転送する。すなわち、読み出し専用パラメータ「01」はCP100の下流側で最も近いシフトレジスタ105に格納される。次のクロックサイクルで、読み出し専用パラメータ「01」は次のシフトレジスタ105に転送されるとともに、CP100からアドレス「01」に格納されている読み出し専用パラメータ「02」が読み出され、シフトレジスタ105に保持される。
この処理を繰り返すことにより、16個の読み出し専用パラメータがシフトレジスタ105に保持される。すなわち、リングバス102に備えられた各シフトレジスタ105は読み出し専用パラメータを1つずつ保持する。そして、各IMEM107は対応するシフトレジスタ105に保持されている読み出し専用パラメータデータを格納する。すなわち、各IMEM107には読み出し専用パラメータが1つずつ保持される。例えば、読み出し専用パラメータ「01」はPE00のIMEM107に格納される。同様に、読み出し専用パラメータ「02」〜「16」はそれぞれ、PE01〜PE15のIMEM107に格納される。
この処理は2回繰り返され、それによって各IMEM107には2つの読み出し専用パラメータが格納される。読み出し専用パラメータ「17」〜「32」も上述した方法で転送される。結果として、例えば、読み出し専用パラメータ「01」及び「17」がPE00のIMEM107に順次、格納される。
次に、各読み出し専用パラメータのグローバルアドレスについて説明する。図3は各読み出し専用パラメータのグローバルアドレス600の1つの形式を示している。図3に示されているように、グローバルアドレスは2つの部分に分割される。上位ビット601は、IMEM107内の読み出し専用パラメータのアドレスを示すアドレスAddrIMEMを表す部分である。このアドレスAddrIMEMは以下の式によって計算することができる。
AddrIMEM=AddrDMEM/PE_PER_GROUP ・・・ (1)
読み出し専用パラメータはPEグループに分散されて格納されているので、IMEM107内のAddrIMEMはDMEM106のAddrDMEMをPE101の数で割ることによって計算される。AddrDMEMの上位ビットに注目することにより、AddrIMEMを計算することができる。例えば、AddrDMEMが「27」、PE_PER_GROUPが「16」、AddrIMEMが「1」であるとする。PE_PER_GROUPが「16」かつAddrDMEMが「00」〜「15」の範囲にある場合、AddrIMEMは0である。AddrDMEMが「16」〜「31」の範囲にある場合、AddrIMEMは1である。図4はAddrDMEMとAddrIMEMとの関係を示している。
このように、IMEM107内のアドレスAddrIMEMを計算するためにアドレスAddrDMEMをPE101の数PE_PER_GROUPで割る。上述の例はPE_PER_GROUP=16として説明したが、もちろん、PE_PER_GROUPは16以外の数値であってもよい。
下位ビット602は、読み出し専用パラメータを格納しているIMEMのリングバス102上の位置を示すPOSIMEMを表す部分である。すなわち、POSIMEMはアクセス対象の読み出し専用パラメータのグローバルアドレスの一部であり、該アクセス対象の読み出し専用パラメータが格納されているリングバス102内の位置を指定する。
POSIMEMはAddrDMEMとPE_PER_GROUP (この例においては=16)を用いたモジュロ演算を行うこと、すなわち、割り算の余りによって計算される。図4はAddrDMEMとPOSIMEMとの関係を示している。すなわち、読み出し専用パラメータのグローバルアドレスは各々、2つの部分601及び602から構成されている。
なお、部分601は第1オペランドとなり、部分602は第2オペランドとなる。部分601はアドレスの上位部分であり、ビット位置の左側に位置している。部分602はアドレスの下位部分であり、ビット位置の右側に位置している。
下位部分602と上位部分601の間の境界603はPEの数に応じて決まる。すなわち、アドレスを2つの部分に分割する境界603はPEグループに含まれるPEの数PE_PER_GROUPに応じて変化する。詳細には、分割位置はlog (PE_PER_GROUP)によって計算される。
例えば、PEの数が16(=2)である場合、グローバルアドレスが分割されるビット位置(分割位置)は下位側から4番目のビットに対応する。したがって、境界603は下位側から4番目のビットと5番目のビットの間に位置する。下位側の4つのビットはPOSIMEMを表し、それより上位側のビットはAddrIMEMを表す。例えば、AddrDMEMが16ビットで表されるとすると、上位側の12個のビットがAddrIMEMに対応する。
次に、図5を参照してPE101の構造を説明する。図5はPE101の構造を概略的に示しているブロック図である。図5に示されているように、PE101は多様な演算を実行する演算論理装置(ALU)121を備える。演算論理装置121は分割部122及び比較/移動部123を備えている。分割部122はAddrDMEMを2つの部分に分割するための分割処理を実行する。比較/移動(cmpmv)部123は読み出し専用パラメータを移動させるためにシフト距離「シフト」をリングバス102及び103上のシフトの回数と比較するための比較/移動処理を実行する。
以下に、PE101で実行される処理を詳細に説明する。まず、PE101で実行される複数の処理のうち、AddrDMEMを2つの部分に分割するための処理(以下、「分割処理」とも呼ぶ)を説明する。
図6は分割部122によって実行される分割処理の概念図を示している。この分割処理はAddrDMEM及びPE_PER_GROUPに基づいて行われる。CP100から各分割部122にAddrDMEM及びPE_PER_GROUPが入力される。そして、各分割部122はlog(PE_PER_GROUP)を用いてAddrDMEMを分割する。なお、log(PE_PER_GROUP)は自然数として与えられる。
ここで、AddrDMEMを2つの部分に分割することによって得られた2つの値はそれぞれDST0及びDST1であるとする。詳細には、AddrDMEMはPEの数に応じて決まる分割点で分割され、2つの出力DST0及びDST1を与える。ここで、DST0はAddrIMEMに対応し、DST1はPOSIMEMに対応する。
これらの値は以下の式(2)によって計算することができる。
(DST0,DST1)=split(AddrDMEM,log(PE_PER_GROUP)) ・・・ (2)
例えば、PE_PER_GROUPが2のn乗(nは自然数)である場合、log(PE_PER_GROUP) は自然数となる。この例において、DST0は(AddrDMEM/PE_PER_GROUP)に等しく、式(1)によって表されるAddrIMEMに対応する。
次に、図7を参照して分割部の構造を説明する。図7は各PE101における分割部122を示しているブロック図である。
各PE101は入力値(AddrDMEM)を2つの部分に分割する。以下では、AddrDMEMが16ビットで表されると仮定して説明を行う。図7において、CP100からSRC0及びSRC1が転送される。SRC0は16ビットのAddrDMEMに対応し、SRC1はPE_PER_GROUPを示すビットシフト量の値である。なお、SRC0は符号なしの値である。ここで、PEグループに含まれるPEの数は16(=2)であるので、ビットシフト量は4である。すなわち、PEの数を示すビットの数がビットシフト量に対応する。
ビット右シフタ401はSRC0のビットをビットシフト量だけ右側にシフトする。すなわち、SRC0は4ビット分、右側にシフトされる。結果として、AddrDMEMの上位側12ビットが対象となる。そして、SRC0のビットを右側にシフトして得られた値はDST0として出力される。DST0はAddrIMEMに対応する。DST0は上述の方法によってSRC0及びSCR1に基づいて計算される。すなわち、SRC0を、SRC1に対応するビットの数(桁数)だけ右側にシフトして得られた値はDST0に対応する(図8を参照)。例えば、SRC0が(2進記述で)「1101101101001101」である場合、上位12ビット「110110110100」はDST0を表す。したがって、DST0はAddrIMEMに対応する。
ここで、図7において、TMP0の16ビットの値は全て1である。詳細には、TMP0はAddrDMEMのビットの数に等しい数のビットによって表される最大値に固定される。TMP0は2進記述で「1111111111111111」として表される。
ビット左シフタ402はTMP0のビットをSCR1だけ左側にシフトする。詳細には、ビット左シフタ402はTMP0の下位4ビットを値0で置き換える。結果として、ビット左シフタ402の出力TMP1は「1111111111110000」と表される。すなわち、TMP0をSRC1に対応するビットの数(桁数)だけ左側にシフトして得られた値はTMP1に対応する(図8を参照)。
インバータ403はTMP1のビットの値を反転する。TMP1が反転処理され、TMP2として出力される(図8を参照)。結果として、インバータ403の出力TMP2は「0000000000001111」と表される。すなわち、下位4ビットの値は1であり、上位12ビットの値は0である。
そして、ANDブロック404はSRC0とTMP2との論理積を計算する。SRC0とTMP2との論理積はDST1として出力される(図8を参照)。この時点で、TMP2は下位4ビットの値が1であり、上位12ビットの値が0である。したがって、ANDブロック404はSRC0の下位4ビットを対象にする。すなわち、ANDブロック404の出力DST1はSRC0の下位4ビットの値に等しい。DST1はPOSIMEMに対応する。
このように、AddrDMEMは2つの部分に分割することができる。
また、これらの数値を使用してシフト距離「シフト」を得ることができる。各PE101はシフト距離「シフト」を計算する。シフト距離「シフト」はリングバス上のシフトの回数を規定する。シフト距離「シフト」は位置POSownとPOSIMEMとの間のシフト距離を表す整数である。
ここで、読み出し専用パラメータを要求しているPE101、すなわち、アクセス先のPE101がPE自身であり、それの位置がPOSownとして表されるとする。さらに、読み出し専用パラメータを保持しているIMEM107の位置、すなわち、アクセス元のIMEMの位置がPOSIMEMとして表されるとする。すなわち、読み出し専用パラメータを要求しているPE101の位置がPOSownとして表され、要求された読み出し専用パラメータを格納しているIMEM107の位置がPOSIMEMとして表されるとする。
なお、位置POSown及びPOSIMEMはリングバス102上に位置するので、これらの位置は、例えば、図1に示されているように「00」〜「15」等の自然数によって表される。例えば、図1に示されているように、PEに付けられた添え字が位置を表す。
POSownはPE自身の番号PEown及びPE_PER_GROUP用いたモジュロ演算を行うことによって計算される。ここで、一般的な場合、PE_PER_GROUP用いたモジュロ演算が必要となる。例えば、アーキテクチャ内の利用可能なPEの数NO_OF_PEがグループ内のPE101の数PE_PER_GROUPに等しくない場合、モジュロ演算が必要となる。これらの数が等しい場合、POSownを計算するためのモジュロ演算は省略することができる。すなわち、PEownはPOSownに等しい。
シフト距離「シフト」は、読み出し専用パラメータがリングバス102又は103上のPOSownに到達するまでのデータ転送の回数に対応する。したがって、シフト距離「シフト」はPOSownからPOSIMEMを引くことによって計算することができる。
シフト距離「シフト」は、データ(読み出し専用パラメータ)がPOSIMEM からPOSownに到達するまでのデータ転送の回数に対応する符号付きの整数である。例えば、POSown=4かつPOSIMEM=6の場合、シフト距離「シフト」は−2である。また、POSown=6かつPOSIMEM=3の場合、シフト距離「シフト」は+3である。
シフト距離「シフト」は複数のPE101で並列的に計算される。なお、AddrDMEM及びPE_PER_GROUPはCP100から各PE101に送られる。また、各PE101は事前にPOSownを保持している。
各シフト距離「シフト」は以下の式によって計算される。
「シフト」 =POSown−POSIMEM
=(PEown%(PE_PER_GROUP))−(AddrDMEM % (PE_PER_GROUP )) ・・・ (3)
ここで、「%」はモジュロ演算を意味している。
上述の式(3)で表されるように、シフト距離「シフト」はPOSownとPOSIMEMとの間の距離に基づいて計算される。シフト距離「シフト」の絶対値はデータを取得するために必要なシフトの回数を規定し、シフト距離「シフト」の符号はシフトの方向を規定する。
すなわち、シフト距離「シフト」の符号が正であるか負であるかに応じて、データ(読み出し専用パラメータ)がリングバス102及び103のどちらから取得されるかが決定される。例えば、シフト距離「シフト」の符号が正である場合、データはリングバス102から取得され、符号が負である場合、データはリングバス103から取得される。
次に、図9を参照してcmpmv部123の構造を説明する。図9は各PE101におけるcmpmv部123の構造を示しているブロック図である。cmpmv部123は入力値の比較処理、及び比較結果に応じた転送処理を実行する。
リングバス102及び103上のシフトの回数がSRC2として入力される。SRC2は符号なしの値、すなわち、正の値である。また、予め計算されたシフト距離「シフト」がSRC3として入力される。
なお、シフト距離「シフト」は符号付きの値である。すなわち、シフト距離「シフト」の最上位ビット(MSB)は符号を表す。例えば、シフト距離「シフト」の最上位ビットが1の場合、シフト距離「シフト」は負であり、最上位ビットが0の場合、シフト距離「シフト」は正である。すなわち、シフト距離「シフト」の最上位ビットは符号を表す符号ビットである。なお、シフト距離「シフト」は式(3)に基づいて各PE101により計算される。
加算/減算部501は符号なしSRC2と符号ありSRC3の加算/減算を行う。この処理のために、SRC3の符号ビットはインバータ502に入力される。インバータ502はSRC3の符号ビットを反転する。SRC3の符号ビットが反転され、モード信号「モード」として出力される(図10を参照)。反転されたビットは加算/減算部のモードを決定するモード信号「モード」となる。インバータ502は反転されたビットをモード信号「モード」として加算/減算部501に出力する。
上述したように、シフト距離「シフト」が負の場合、符号ビットの値は1である。この場合、インバータ502は反転ビットの値を0に設定する。反転されたビットの値が0の場合、加算/減算部501は加算モードに移行する。すなわち、加算/減算部501はSRC2とSRC3との和を計算する。
一方、シフト距離「シフト」が正の場合、符号ビットの値は0である。この場合、インバータ502は反転ビットの値を1に設定する。そして、インバータ502は反転されたビットを加算/減算部501に出力する。反転されたビットの値が1の場合、加算/減算部501は減算モードに移行し、SRC2とSRC3との差を計算する。すなわち、加算又は減算が実行され、TMP3が出力される(図10を参照)。
上述したように、インバータ502は、モードを切り替える加算/減算部501のために使用される。詳細には、インバータ502はシフト距離「シフト」の符号ビットを受信する。そして、加算/減算部501はシフト距離「シフト」の符号、すなわち、最上位ビットMSBにしたがって加算モードと減算モードとの間の切り換えを行う。すなわち、加算/減算部501はインバータ502の出力にしたがってモードを切り替えながら、加算モード及び減算モードを実行する。すなわち、加算/減算部501は排他的に加算又は減算を行う。したがって、加算/減算部501はSRC2とSRC3との和又は差をTMP3として出力する。
SRC2とSRC3との和又は差はTMP3として判定部503に入力される。判定部503はTMP3が0であるかどうかを判定する。SRC2とSRC3の絶対値が互いに等しい場合、TMP3は0になる。詳細には、TMP3の全てのビット値が0である場合、TMP3は0となる。そして、TMP3が0である場合、判定部503は、TMP3が0であることを示す信号DST2を出力する。例えば、TMP3=0のときDST2=1となり、TMP3が0以外の値であるときDST2=0となる。すなわち、TMP3が0であるかどうかが決定され、DST2が出力される(図10を参照)。このように、判定部503から、TMP3が0であるかどうかを示す信号DST2が出力される。
PE101はDST2=1への応答でリングバス102又は103から読み出し専用パラメータのデータを取得する。すなわち、読み出し専用パラメータを取得するタイミングが決定される。
次に、PE101がリングバス102及び103のどちらから読み出し専用パラメータを取得すべきかを決定するための処理を説明する。この処理のために、SRC4及びSRC5がマルチプレクサ504に入力される。また、マルチプレクサ504は入力ライン「CTRL」を介してSRC3の符号ビットを受け取る。
SRC4の値は時計回りリングバス102上の現在の値である。SRC5の値は反時計回りリングバス103上の現在の値である。マルチプレクサ504の入力ラインCTRLが0の場合、SRC4がマルチプレクサ504を通過する。一方、マルチプレクサ504の入力ラインCTRLが1の場合、SRC5がマルチプレクサ504を通過する。すなわち、マルチプレクサ504はSRC3の符号ビットにしたがって、PEownがそこから読み出し専用パラメータを取り出すべきリングバスを決定する(図10を参照)。
例えば、SRC3の符号が正である場合、SRC4の値がDST3として出力される。この場合、時計回りリングバス102が選択されたことになる。一方、SRC3の符号が負である場合、SRC5の値がDST3として出力される。この場合、反時計回りリングバス103が選択されたことになる。
そして、DST2が1である場合、PE101は選択されたリングバスから読み出し専用パラメータを取得する。
図11を参照して、分割部122及びcmpmv部123によって実行される処理動作を詳細に説明する。なお、以下の例は、全てのPE101が並列処理において単一かつ同一読み出し専用パラメータを使用するもとして説明する。そのようなケースは非ブロック化フィルタを使用する画像処理等で発生する。
図11は各PE101におけるデータ処理方法を示しているフローチャートである。すなわち、図11に示されているデータ処理は各PE101で実行される。
CP100から各PE101に対して、DMEM106に保持されている並列処理に必要な読み出し専用パラメータのアドレスが転送される。例えば、SIMDモードにて非ブロック化フィルタ処理が実行される場合、CP100から並列処理に必要な読み出し専用パラメータのAddrDMEM及びPE_PER_GROUPが転送される。
そして、各PE101の分割部122は読み出し専用パラメータのAddrIMEMを計算する(ステップS101)。すなわち、各PE101はAddrDMEM及びPE_PER_GROUPを使用して、上述の式(1)によりAddrIMEMを得る。
次に、必要な読み出し専用パラメータが保持されているIMEM107のリングバス102及び103上の位置が計算される(ステップS102)。すなわち、各PE101はPOSIMEMを計算する。上述したように、POSIMEMはAddrDMEM及びPE_PER_GROUPを使用したモジュロ演算を実行することによって計算される。
ここで、ステップS101及びS102は分割部122によって実行される。図7に示されているDST0を出力するステップを含む処理はステップS101に対応する。図7に示されているDST1を出力するステップを含む処理はステップS102に対応する。
次に、各PE101はシフト距離「シフト」を計算する(ステップS103)。
「シフト」=POSown−POSIMEM
=(PEown%(PE_PER_GROUP))−(AddrDMEM % (PE_PER_GROUP)) ・・・ (3)
次に、各PE101はアドレス(AddrIMEM)及び制御信号をIMEM107に転送する(ステップS104)。各PE101はAddrIMEMに対応する読み出し専用パラメータを取得するための命令を各IMEM107に送る。
そして、各IMEM107の出力がリングバス102及び103の両方に送られる(ステップS105)。詳細には、PE101がIMEM107からIMEM107内のAddrIMEMの位置に格納された読み出し専用パラメータを受け取り、その読み出し専用パラメータをリングバス102及び103に転送する。
次に、予め計算されたシフト距離「シフト」が0であるかどうかが判定される(ステップS106)。すなわち、各PE101は、それ自身のIMEM107に読み出し専用パラメータが格納されているかどうかを判定する。予め計算されたシフト距離「シフト」が0である場合(ステップS106でYES)、PE101はそれ自身のIMEM107の出力を受け取る(ステップS107)。
詳細には、PE101はPE101に対応するIMEM107に格納されている読み出し専用パラメータを取得する。もちろん、読み出し専用パラメータはシフトレジスタ105から取得されてもいいし、又はIMEM107から取得されてもよい。すなわち、シフト距離「シフト」が0に等しいPE101については、読み出し専用パラメータはシフトされる前に取得される。そして、シフト距離「シフト」が0に等しいPE101については、読み出し専用パラメータを取得するための処理は終了する(ステップS108)。
予め計算されたシフト距離「シフト」が0でない場合(ステップS106でNO)、読み出し専用パラメータはリングバス上でシフトされる。cmpmv部123はリングバス102及び103上のシフト回数をシフト距離「シフト」の絶対値と比較する(ステップS109)。リングバス102及び103上のシフト回数がシフト距離「シフト」の絶対値より小さい場合、(ステップS109でNO)、読み出し専用パラメータは再度、シフトされる。すなわち、読み出し専用パラメータは、リングバス102及び103上で行われたシフト回数が予め計算されたシフト距離「シフト」の絶対値に等しくなるまで繰り返しシフトされる。
そして、シフト距離「シフト」がリングバス上のシフト回数と等しくなったとき(ステップS109でYES)、シフト距離「シフト」が0より大きいかどうかを判定する。すなわち、シフト距離「シフト」の符号を判定する。
符号が負である場合(ステップS110でNO)、反時計回りリングバス103から読み出し専用パラメータのデータが取得される(ステップS111)。符号が正である場合(ステップS110でYES)、時計回りリングバス102から読み出し専用パラメータのデータが取得される(ステップS112)。
ここで、ステップS109〜S112はcmpmv部123によって実行される。図9に示されているDST2を出力するステップを含む処理はステップS109に対応する。図9に示されているDST3を出力するステップを含む処理はステップS110〜S112に対応する。
上述の方法により、読み出し専用パラメータがリングバス102及び103を介して転送される。そして、各PE101は処理のために必要な読み出し専用パラメータを取得する。取得された読み出し専用パラメータは各PE101に組み込まれているレジスタに格納される。そして、各PE101は読み出し専用パラメータを使用して処理(例えば、非ブロック化フィルタ処理)を実行する。当然のことながら、各PE101はSIMDモードで処理を実行する。
次に、図12を参照してCP100にて実行される処理動作を説明する。図12はリングバスのシフト動作を制御するためにCP100で実行される処理動作を示している。まず、全てのPE101が読み出し専用パラメータの取得を既に完了しているかどうかを判定する(ステップS201)。全てのPE101が読み出し専用パラメータを既に取得している場合(ステップS201でYES)、CP100において実行される処理は終了する。
少なくともいずれかのPE101が読み出し専用パラメータの取得を完了していない場合(ステップS201でNO)、CP100はリングバス102及び103上で読み出し専用パラメータを1回シフトする(ステップS202)。さらに、シフト回数をカウントしているシフトカウンタを1つ増大させる(ステップS203)。そして、ステップS201に戻り、全てのPE101が読み出し専用パラメータの取得を完了するまで同様な処理を繰り返す。
次に、本実施形態の効果について説明する。
(1)読み出し専用パラメータは特許文献2に開示されているように16個のPEを含むPEグループに分散されて格納されているが、特許文献2とは異なる様式で格納されており、これらの読み出し専用パラメータは(複数の)PEによって同一のグローバルアドレスで同時に読み出される。この構成はPE101間のアドレス情報の転送の必要性を無くす。すなわち、PE101間で読み出し専用パラメータの位置情報を転送する必要がない。各PE101は正確な位置情報を事前に通知されているので、各PE101はどのPE101が必要な読み出し専用パラメータを保持しているかを認識している。読み出し専用パラメータのAddrIMEMはPEによって計算され、読み出し専用パラメータを要求しているPE101と該読み出し専用パラメータを保持しているPE101との距離は事前に、PE101によって並列的に計算することができる。結果として、データ処理の効率は劇的に改善される。
(2)読み出し専用パラメータがIMEM107に分散されて格納されている場合であっても、アクセスのために必要な処理時間を短縮することができる。反対向きの転送方向を有する2つのリングバス102及び103がPE101に接続されており、それによって処理時間を約半分に短縮することができる。すなわち、シフト回数の最大値をPE101の数の半分に減らすことができる。したがって、図1に示されている例において、全てのPE101が必要な読み出し専用パラメータを取得するためにリングバスは最大でも8回シフトされればよい。
(3)上述した方法により、他のIMEM107に格納されているデータを使用して算術処理を行うことができる。すなわち、複数のPE101が処理を実行するために必要な読み出し専用パラメータを他のIMEM107に格納することができる。また、DMEM106の読み出し専用パラメータデータを複数のIMEM107に分散して格納することができる。結果として、IMEM107の容量を減少させることができる。
(4)分割部122の使用は1クロックサイクルでの分割処理を可能にする。図7に示されている分割部122の各機能部は1クロックサイクルで単一の動作として実行される。したがって、図8に示されているように、この新規の機能部は必要なクロックサイクルを4サイクルから1サイクルに短縮させることができる。分割部122の4つの機能が中間信号を遅れさせるバッファやレジスタを使用せずに、同一のクロックサイクルで処理されるという理由により、このクロックサイクルの短縮が実現される。
(5)図9に示されているcmpmv部123の各機能部も1クロックサイクルで単一の動作として実行される。したがって、図10に示されているように、この新規の機能部は必要なクロックサイクルを4サイクルから1サイクルに短縮させることができる。cmpmv部123の4つの機能が中間信号を遅れさせるバッファやレジスタを使用せずに、同一のクロックサイクルで処理されるという理由により、このクロックサイクルの短縮が実現される。
(実施の形態2)
上述した単一命令多重データ処理(SIMD)を実行するデータ処理装置は好ましくは、並列画像プロセッサに適用することができる。上述のアーキテクチャをH.264非ブロック化フィルタに対して利用したケースを以下に説明する。
図13はH.264ビデオデコーダのデコードループ208を示しているブロック図である。H.264非ブロック化フィルタ201はインター予測部203及びイントラ予測部205とともにデコードループ208内で動作する閉ループフィルタである。非ブロック化フィルタ(デブロッキングフィルタ)201はローパスフィルタ(LPF)として使用される。
デコードループ208はさらに、加算部207、選択部206、参照フレームメモリ204、及び実フレームメモリ202を備える。加算部207はエラー信号200と、H.264デコーダのデコードループで復号された画像の再構成画素値とを加算する。デコーダで画像を復号するために、イントラ予測及びインター予測の2つの技術が利用される。インター予測においては、画像を復号するために既に復号されているフレームの画素値が使用される。一方、イントラ予測では、現在処理されているマクロブロックを復号するために、実フレームの既に復号されている隣接するマクロブロックのデータが使用される。
ここで、イントラ予測とインター予測の選択はH.264ビデオエンコーダで実行される。エラー信号とともに、イントラ予測及びインター予測のどちらか一方を選択するための信号がH.264ストリーム内の副次的情報としてH.264デコーダに転送される。実フレームメモリ202は実フレームを格納するためのフレームメモリである。参照フレームメモリ204はインター予測で使用される参照フレームを格納するためのメモリである。高い圧縮比での符号化の場合、非ブロック化フィルタ(デブロッキングフィルタ)201で、ブロックに伴う損失の多い復号が緩和される。
ここで、図14を参照してH.264非ブロック化フィルタ201におけるマクロブロックについて説明する。図14はマクロブロックを示している図である。
非ブロック化フィルタ201に対しては、同一の画像内容を記述する2つの異なるマクロブロック300又はサブブロック301における2つの画素303は、2つの画素の独立した予測及び符号化の後、ブロック境界302の両側で異なる復号値の結果となる。非ブロック化フィルタ201はそのような復号値の間の差を、差の大きさの推定値に応じて緩和する。
この差は量子化によって生じているので、この差の大きさは量子化ノイズに関係している。それゆえ、2つのパラメータ「a」及び「C0」が導入される。パラメータ「a」及び「C0」は量子化ステップの大きさに比例し、かつノイズ分散の平方根に比例する。さらに、第3のパラメータ「β」が導入される。これら全てのパラメータはブロックエッジへの、フィルタの容認可能な影響を決定する。パラメータ「a」及び「C0」がブロックの大きさに関係するのに対し、パラメータ「β」はブロック境界302の近傍の信号の平坦性に関係し、したがって可視度に関係する。
非ブロック化フィルタの輝度成分について説明する。図14に示されているように、単一のマクロブロック300が16×16の画素303を含むとする。マクロブロックの単一のエッジ302に16回のフィルタ動作が実行される。なお、図14はH.264ビデオデコーダの非ブロック化フィルタ処理で使用されるマクロブロック構造を示している。
各マクロブロック300はさらに16個のサブブロック301に分割される。単一のサブブロック301は4×4の画素303を含む。各エッジ302は2つの隣接するサブブロック301の間に延びている。1つのエッジを処理するために、エッジの片側4個ずつ、計8個の画素が必要である。
これらの16回のフィルタ動作が図1に示されている16(NO_OF_PE)個のPE101にマッピングされた場合、16回のフィルタ動作は全て、単一のPEグループで並列的に処理される(PE_PER_GROUP = NO_OF_PE = 16個のPE)。画像データ自体に加え、非ブロック化フィルタ処理には読み出し専用パラメータ(a、β、C0)の表が必要である。また、画像データ及び読み出し専用パラメータの表に加え、各エッジに対して表のインデックスに等しいアドレスが必要である。
例えば、非ブロック化フィルタ処理のために必要な読み出し専用パラメータa、β、C0はDMEM106から転送され、PEグループの全てのIMEMに分散されて格納される。データがイントラ予測を使用して復号される場合、全てのPE101によって同一の読み出し専用パラメータが読み出されるだろう。詳細には、非ブロック化フィルタ処理において、複数のPE101は同一の値のパラメータを読み出すことによって並列処理を実行する。この場合、CP100は同一のパラメータセットを読み込むための命令を送信する。そして、全てのPE101は同一の値のパラメータを読み込む。16個のPE101は同一の値のパラメータを読み込むことによって並列処理を実行する。上の例では、全てのPE101が同一の値のパラメータを読み込むデータ処理方法について説明した。
本発明はそれの実施形態を参照しながら開示及び説明されてきたが、本発明はこれらの実施形態に限定されるものではない。当業者には、請求の範囲によって規定される本発明の意図及び範囲から外れることなく、これらの実施形態の形状や詳細に対して多様な変更を加えることができることが明白であるだろう。
多様な処理を実行する構成要素は機能部又はブロックとして記載されてきたが、それらの機能部又はブロックを手段に置き換えることも可能である。上述の説明では、例としてSIMD技術を利用する処理要素が説明されたが、本発明は他の処理要素に対して適用することもできる。例えば、非ブロック化フィルタ処理以外の並列処理を実行する処理要素が利用されてもよい。
図7に示されているように、SRC0は右方向にシフトされ、TMP0は左方向にシフトされているが、これらのシフト方向は反転されてもよい。例えば、アドレスAddrDMEM、アドレスAddrIMEM、及び位置POSIMEMの全体構造が反転された場合、シフト方向も反転される。ここで、用語「反転された」は最下位ビットが左側に配置され、最上位ビットが右側に配置されることを意味する。それゆえ、この場合、SRC0は左方向にシフトされ、TMP0は右方向にシフトされる。
実施形態1としてリングバス102及びリングバス103の両方を備えるアーキテクチャが示されたが、リングバス102だけを備えるアーキテクチャが採用されてもよい。この場合、「シフト」はリングバス102のシフト方向とともに計算されなければならない。そして、加算/減算の切り替えは不要であり、マルチプレクサ504の選択動作も不要である。このアーキテクチャにおいては、より多くのリングバス102のシフト動作が必要となるだろうが、分散的に格納された読み出し専用パラメータの使用効率は十分に改善されるだろう。
<文献の引用>
この出願は、2009年3月30日に出願された国際出願PCT/JP2009/057020を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は並列処理を実行するデータ処理装置、データ処理システム、及びデータ処理方法に適用することができる。
100…CP
101…PE
102…時計回り方向リングバス
103…反時計回り方向リングバス
104…接続
105…シフトレジスタ
106…DMEM
107…IMEM
121…ALU
122…分割部
123…cmpmv部
201…非ブロック化フィルタ
202…実フレームメモリ
203…インター予測部
204…参照フレームメモリ
205…イントラ予測部
206…切り替え部
207…加算部
208…デコード部
300…マクロブロック
301…サブブロック
302…エッジ
303…画素
401…ビット右シフタ
402…ビット左シフタ
403…インバータ
404…AND部
501…加算/減算部
502…符号ビットインバータ
503…判定部
504…マルチプレクサ
601…AddrIMEM
602…POSIMEM
603…境界

Claims (10)

  1. 複数の処理要素によって並列処理をするためのデータ処理装置であって、
    前記複数の処理要素の各々は、少なくとも1つのリングバスを介して1つの処理要素の内部メモリから他の処理要素に読み出し専用パラメータデータを並列的に転送するために、データメモリから前記読み出し専用パラメータデータを分散的に格納する前記内部メモリを有しており
    前記処理要素の各々は、
    前記データメモリ内の前記読み出し専用パラメータデータのグローバルアドレスを前記処理要素の数に対応するビット位置で第1部分と第2部分に分割するための分割手段と、
    前記内部メモリの前記第1部分に応じたアドレスに配置された前記読み出し専用パラメータデータを取り出し、前記読み出し専用パラメータデータを前記少なくとも1つのリングバスに送る手段と、
    前記少なくとも1つのリングバス上において前記読み出し専用パラメータデータをシフトさせる際のシフト動作の回数を求める比較手段であって、アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも1つのリングバス上の位置を指定するものであって、かつ、前記第2部分に対応する該アクセス対象の前記読み出し専用パラメータデータのグローバルアドレスの部分と、当該比較手段を備える処理要素自身の位置と、の間の差を、前記リングバスのシフト動作の回数と比較して、この比較結果に基づいて前記読み出し専用パラメータデータを前記少なくとも1つリングバスから当該比較手段を備える処理要素自身に取得させるための比較手段と、
    を備えることを特徴とするデータ処理装置。
  2. 請求項1に記載のデータ処理装置において、
    前記複数の処理要素の数をNOPEとしたときに、前記ビット位置がlog(NOPE)によって決定され、
    前記第1部分が前記データメモリの前記グローバルアドレスの上位部分であって、前記ビット位置の左側に位置しており、
    前記第2部分が前記データメモリの前記グローバルアドレスの下位部分であって、前記ビット位置の右側に位置している
    ことを特徴とするデータ処理装置。
  3. 請求項1または請求項2に記載のデータ処理装置において、
    前記分割手段が、
    前記データメモリの前記グローバルアドレスを前記処理要素の数に対応するビット数分だけ右方向にシフトすることによって右シフト値を計算するための論理右シフト手段と、
    ビット数が前記データメモリの前記グローバルアドレスのビット数に等しく、全てのビットが1である固定値を前記処理要素の数に対応するビット数分だけ左方向にシフトすることによって左シフト値を計算するための論理左シフト手段と、
    前記左シフト値を反転することによって反転値を計算するためのインバータ手段と、
    前記反転値と前記データメモリの前記グローバルアドレスとの論理積を計算するための論理積手段と、を備える
    ことを特徴とするデータ処理装置。
  4. 請求項1から請求項3のいずれかに記載のデータ処理装置において、
    前記少なくとも1つのリングバスが、互いにシフト方向が反対向きである2つのリングバスを備える
    ことを特徴とするデータ処理装置。
  5. 請求項4に記載のデータ処理装置において、
    前記比較手段は、
    前記シフト動作の回数と、当該比較手段を備える処理要素自身の位置と前記グローバルアドレスの部分との間の差と、の加算処理又は減算処理を実行するための加算/減算手段と、
    前記差の符号に応じて、前記加算/減算手段の処理を前記加算処理と前記減算処理との間で切り替えるための手段と、
    前記加算/減算手段の出力がゼロかどうかを判定するための判定手段と、
    前記差の前記符号に応じて前記2つのリングバスのうち、そこから前記読み出し専用パラメータデータを取り出す1つのリングバスを選択するための選択手段と、を備え、
    前記グローバルアドレスの部分とは、前記アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも1つのリングバス上の位置を指定する該アクセス対象の読み出し専用パラメータデータの前記グローバルアドレスの部分であり、
    前記シフト動作の回数が符号なしの値として与えられ、前記差が符号ありの値として与えられる
    ことを特徴とするデータ処理装置。
  6. 複数の処理要素によって並列処理をするためのデータ処理方法であって、
    前記複数の処理要素の各々は、少なくとも1つのリングバスを介して1つの処理要素の内部メモリから他の処理要素に読み出し専用パラメータデータを並列的に転送するために、データメモリから前記読み出し専用パラメータデータを分散的に格納する前記内部メモリを有し、
    前記データ処理方法は、
    前記処理要素の各々が、前記データメモリ内の前記読み出し専用パラメータデータのグローバルアドレスを前記処理要素の数に対応するビット位置で第1部分と第2部分に分割すること、
    少なくとも前記処理要素のいずれかが、前記内部メモリの前記第1部分に応じたアドレスに配置された前記読み出し専用パラメータデータを取り出し、前記読み出し専用パラメータデータを前記少なくとも1つのリングバスに送ること、
    前記読み出し専用パラメータデータを取得すべき処理要素が、前記読み出し専用パラメータデータを取得すべき処理要素自身の位置と、アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも1つのリングバス上の位置を指定し、前記第2部分に対応する該アクセス対象の読み出し専用パラメータデータのグローバルアドレスの部分と、の間の差を求めることと、
    前記読み出し専用パラメータデータを取得すべき処理要素が、前記読み出し専用パラメータデータの前記少なくとも1つのリングバス上のシフト動作の回数と、前記差を比較することと、
    前記読み出し専用パラメータデータを取得すべき処理要素が、前記比較することおける比較結果に応じて、前記読み出し専用パラメータデータを取得すべき処理要素自身に、前記少なくとも1つのリングバスから前記読み出し専用パラメータデータを取得させること、を含む
    ことを特徴とするデータ処理方法。
  7. 請求項6に記載のデータ処理方法において、
    前記分割することが、
    前記データメモリの前記グローバルアドレスを前記処理要素の数に対応するビット数分だけ右方向にシフトすることによって右シフト値を計算すること、
    ビット数が前記データメモリの前記グローバルアドレスのビット数に等しく、全てのビットが1である固定値を前記処理要素の数に対応するビット数分だけ左方向にシフトすることによって左シフト値を計算すること、
    前記左シフト値を反転することによって反転値を計算すること、
    前記反転値と前記データメモリの前記グローバルアドレスとの論理積を計算すること、を含む
    ことを特徴とするデータ処理方法。
  8. 請求項6または請求項7に記載のデータ処理方法において、
    前記少なくとも1つのリングバスが、互いにシフト方向が反対向きである2つのリングバスを備える
    ことを特徴とするデータ処理方法。
  9. 請求項8に記載のデータ処理方法において、
    前記比較することが、
    前記シフト動作の回数と、前記読み出し専用パラメータデータを取得すべき処理要素自身の位置と前記グローバルアドレスの部分との間の差と、の加算処理又は減算処理を実行すること、
    前記差の符号に応じて、前記加算処理又は算処理を実行することにおいて、
    前記加算処理と前記減算処理との間で切り替えること、
    前記加算処理又は減算処理を実行することによる結果がゼロかどうかを判定すること、
    前記差の前記符号に応じて前記2つのリングバスのうち、そこから前記読み出し専用パラメータデータを取り出す1つのリングバスを選択すること、を含み、
    前記グローバルアドレスの部分とは、前記アクセス対象の前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも1つのリングバス上の位置を指定する該アクセス対象の読み出し専用パラメータデータの前記グローバルアドレスの部分であり、
    前記シフト動作の回数が符号なしの値として与えられ、前記差が符号ありの値として与えられる
    ことを特徴とするデータ処理方法。
  10. ータメモリと、複数の処理要素と、複数の内部メモリと、少なくとも1つのリングバスと、中央プロセッサとを備えた並列処理をするためのデータ処理システムであって、
    複数の前記処理要素は、並列処理をするためのものであり、
    前記処理要素のそれぞれは、前記データメモリ内の読み出し専用パラメータデータのグローバルアドレス前記処理要素の数に対応するビット位置で第1部分と第2部分に分割するものであり、
    前記内部メモリのそれぞれは、前記処理要素の1つに対応して備えられるものであり、
    複数の前記内部メモリは、前記データメモリから前記読み出し専用パラメータデータを分散的に格納するものであり、
    前記少なくとも1つのリングバスは、複数の処理要素に接続されているものであり、
    前記処理要素のいずれかは、前記内部メモリ前記第1部分に応じたアドレスに配置された前記読み出し専用パラメータデータを取り出し、前記読み出し専用パラメータデータを記少なくとも1つのリングバスに送るものであり、
    前記中央プロセッサは、前記少なくとも1つのリングバス上の前記読み出し専用パラメータデータのシフト動作の回数をカウントするためのものであり、
    複数の前記処理要素のうち、前記読み出し専用パラメータデータを取得すべき処理要素は、前記読み出し専用パラメータデータを取得すべき処理要素自身の位置と、アクセス対象であり取得すべき前記読み出し専用パラメータデータが格納されている前記内部メモリに対応する処理要素の前記少なくとも1つのリングバス上の位置を指定しておりかつ前記第2部分に対応する、該アクセス対象の読み出し専用パラメータデータのグローバルアドレスの部分との差を求めるものであり、
    複数の前記処理要素のうち、前記読み出し専用パラメータデータを取得すべき処理要素は、前記シフト動作の回数と、前記差との比較を行い、比較結果に基づいて、前記少なくとも1つのリングバスから前記読み出し専用パラメータデータを取得するものである、データ処理システム。
JP2011540254A 2009-03-30 2009-09-25 リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ Active JP5488609B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011540254A JP5488609B2 (ja) 2009-03-30 2009-09-25 リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009057020 2009-03-30
JPPCT/JP2009/057020 2009-03-30
JP2011540254A JP5488609B2 (ja) 2009-03-30 2009-09-25 リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ
PCT/JP2009/067282 WO2010113340A1 (en) 2009-03-30 2009-09-25 Single instruction multiple data (simd) processor having a plurality of processing elements interconnected by a ring bus

Publications (2)

Publication Number Publication Date
JP2012522280A JP2012522280A (ja) 2012-09-20
JP5488609B2 true JP5488609B2 (ja) 2014-05-14

Family

ID=47016542

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011540254A Active JP5488609B2 (ja) 2009-03-30 2009-09-25 リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ

Country Status (1)

Country Link
JP (1) JP5488609B2 (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667287A (en) * 1982-10-28 1987-05-19 Tandem Computers Incorporated Multiprocessor multisystem communications network
JPH0642237B2 (ja) * 1983-12-28 1994-06-01 株式会社日立製作所 並列処理装置
JP2602241B2 (ja) * 1986-09-05 1997-04-23 株式会社日立製作所 並列計算機
JP3247018B2 (ja) * 1994-12-06 2002-01-15 富士通株式会社 アドレス生成装置
JP3808373B2 (ja) * 2002-01-24 2006-08-09 エヌイーシーコンピュータテクノ株式会社 分散共有メモリ装置及び分散処理方法
JP4620593B2 (ja) * 2003-10-24 2011-01-26 株式会社ターボデータラボラトリー 情報処理システムおよび情報処理方法
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
JP4934356B2 (ja) * 2006-06-20 2012-05-16 株式会社日立製作所 映像処理エンジンおよびそれを含む映像処理システム
US8190856B2 (en) * 2007-03-06 2012-05-29 Nec Corporation Data transfer network and control apparatus for a system with an array of processing elements each either self- or common controlled

Also Published As

Publication number Publication date
JP2012522280A (ja) 2012-09-20

Similar Documents

Publication Publication Date Title
TWI496080B (zh) 轉置指令之技術
JP6408524B2 (ja) 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法
US7689811B2 (en) Method and apparatus for constant generation in SIMD processing
JP2020533691A (ja) Simd命令を用いた効率的な直接畳み込み
US9183614B2 (en) Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets
KR102283947B1 (ko) 사차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어
KR20170033890A (ko) 비트 셔플 프로세서, 방법, 시스템, 및 명령어
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
JP3729540B2 (ja) 画像処理装置
JP2015529363A5 (ja)
US20100318766A1 (en) Processor and information processing system
Abel et al. Applications tuning for streaming SIMD extensions
US11790485B2 (en) Apparatus and method for efficient motion estimation
US20120030448A1 (en) Single instruction multiple date (simd) processor having a plurality of processing elements interconnected by a ring bus
JP5853217B2 (ja) プロセッサ
JP2004519768A (ja) コプロセッサを使用したデータ処理
Babionitakis et al. A real-time motion estimation FPGA architecture
JP5488609B2 (ja) リングバスによって相互接続された複数の処理要素を有する単一命令多重データ(simd)プロセッサ
JP2009282744A (ja) 演算器及び半導体集積回路装置
CN116266122A (zh) 寄存器堆虚拟化:应用和方法
CN116257208A (zh) 用于矩阵乘法阵列上的可分离卷积过滤器操作的方法和装置
Bariani et al. An Efficient Multi‐Core SIMD Implementation for H. 264/AVC Encoder
JP4901891B2 (ja) 画像処理プロセッサ
TWI610231B (zh) 用於向量水平邏輯指令的裝置及方法
JP2004234407A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140210

R150 Certificate of patent or registration of utility model

Ref document number: 5488609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150