JP5739779B2 - Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素 - Google Patents

Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素 Download PDF

Info

Publication number
JP5739779B2
JP5739779B2 JP2011209455A JP2011209455A JP5739779B2 JP 5739779 B2 JP5739779 B2 JP 5739779B2 JP 2011209455 A JP2011209455 A JP 2011209455A JP 2011209455 A JP2011209455 A JP 2011209455A JP 5739779 B2 JP5739779 B2 JP 5739779B2
Authority
JP
Japan
Prior art keywords
address
log
processor
local
data
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
JP2011209455A
Other languages
English (en)
Other versions
JP2013073247A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2011209455A priority Critical patent/JP5739779B2/ja
Priority to US13/561,505 priority patent/US9158737B2/en
Publication of JP2013073247A publication Critical patent/JP2013073247A/ja
Application granted granted Critical
Publication of JP5739779B2 publication Critical patent/JP5739779B2/ja
Priority to US14/839,285 priority patent/US20150370755A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Image Processing (AREA)

Description

本発明は、SIMD(Single Instruction Multiple Data)プロセッサに関する。
1回の命令により複数のデータに対して同一の処理を同時に行うことができるSIMDプロセッサに関して、種々の技術が提案されている(特許文献1〜3、非特許文献1)。
図10は、非特許文献1に開示されたSIMDプロセッサを概略的に示す図である。該SIMDプロセッサ10は、コントロールプロセッサ20と、プロセッサアレイ30を備える。プロセッサアレイ30は、1次元結合の分散メモリ型プロセッサアレイであり、N(N:2以上の整数)個のプロセッサ要素を有し、これらのプロセッサ要素は、リング状に接続されており、コントロールプロセッサ20からの命令に従って、同一の処理を行う。なお、コントロールプロセッサ20がプロセッサアレイ30に命令を出す際に、マスクビットやマスクフラグ(以下、「マスクフラグ」に統一する)によって、処理をしないプロセッサ要素を指定することができる。すなわち、プロセッサアレイ30に含まれる複数プロセッサ要素は、同一の処理を行っているか、処理をしてないかのいずれかの状態にある。
以下において、コントロールプロセッサを「CP」、プロセッサアレイとプロセッサ要素を夫々「PEアレイ」と「PE」という。
PEアレイ30に含まれる各PE(PE1〜PEN)は、構成が同様であるため、ここで、PE1を代表にして説明する。図示のように、PE1は、ローカルメモリ44、メモリコントローラ(MEMCTL)46、演算部48を備える。
演算部48は、演算を実行するものであり、隣接するPEとデータの送受信ができる。MEMCTL46は、ローカルメモリアクセスと外部メモリアクセスの制御を行う。
ローカルメモリアクセスは、PEアレイ30内部に生じたメモリアクセスであり、具体的には、演算部48からの書込要求と読出要求がある。MEMCTL46は、演算部48の書込み要求に応じて演算部48からのデータをローカルメモリ44に書き込み、演算部48の読出し要求に応じてローカルメモリ44からデータを読み出して演算部48に供する機能を担う。
また、MEMCTL46は、PEアレイ30の外部(CP20を含む)からメモリアクセスがあった際に、ライトアクセスの場合にはライト要求されたデータをローカルメモリ44に書込み、リードアクセスの場合にはリード要求されたデータをローカルメモリ44メモリから読み出して出力する機能を備える。
このようなSIMDプロセッサ10は、複数のデータが2次元に配列されてなるデータ群(以下「2次元データ」という)の処理に特に有用である。2次元データは、例えば、1画面の画素のデータからなる画像データや、2次元の表の夫々のマスに入れるデータの集合などがある。以下において、2次元データの例としては画像データを用いるが、画像データを例にした全ての説明を他の2次元データにも適用できることを理解されたい。また、特に説明が無い限り、「画素」と「画素値」を同じ意味で用いる。
通常、画像の幅(行方向の画素数)がPE数Nより多いため、SIMDプロセッサ10は、図11に示すように、外部メモリに格納された画像データを幅がNであり、行数がM(M:1以上の整数)であるブロックに分割し、複数のブロックをPEアレイ30の各PEのローカルメモリ44に格納してからPEに処理を行わせるようになっている。
通常、PEアレイ30内の各ローカルメモリの容量の総和が外部メモリの容量より遥かに小さいため、同時にローカルメモリに格納し得るブロックの数が限定されている。ブロックのローカルメモリへの格納態様に関しては、「縦方向優先」と「横方向優先」の2種類が考えられる。図12と図13を参照して説明する。
図12は、「縦方向優先」の場合の例を示す。図12において、丸の中の数字はブロック番号を示す。また、ローカルメモリ44内に小さな長方形は、画素を示す。画素を示す小さな長方形にある「A(B,C)」(A、B、C:数字)における「A」は、ブロック番号を示し、「(B,C)」は、該画素が該ブロックに位置する列と行の番号を夫々示す。例えば、1(1,1)は、ブロック1における1列目、1行目の画素を示す。なお、該画素の(X,Y)座標は(0,0)である。また、Wは、画像の幅(X方向の画素数すなわち列数)を示し、Hは、画像の高さ(Y方向の画素数すなわち行数)を示す。これらについては、以降の各図面においても同様である。
図12に示す「縦方向優先」の格納態様は、同列の画素をできるだけ多く同時にPEアレイ30のローカルメモリに存在させる格納方式である。この場合、左のブロックほど優先的に格納され、同列の各ブロックに関しては、上のブロックほど優先的に格納される。
図12に示す例では、画像高さHは、ブロックの行数Mの5倍である。そのため、ブロックの行数は、5である。図示のように、まず、外部メモリにある画像データにおける最左端(1列目)のブロック1〜5は、ブロック1、2、3、4、5の順に格納され、次いで、左から2列目のブロック6〜10は、ブロック6、7、・・・の順に格納される。
なお、夫々のブロック内のデータに関しては、行順に、各行のN個の画素がN個のPEのローカルメモリ44の同一のアドレス(以下「ローカルアドレス」という)に夫々格納される。例えば、ブロック1に関して、まず、1行目の各画素(1(1、1)、1(2,1)、1(3,1)、・・・、1(N,1))は、PE1〜PENのローカルメモリ44の同一のローカルアドレスに夫々格納される。2行目の各画素は、1行目の同列の画素に続いて該画素と同一のPEのローカルメモリ44の次のローカルアドレスに夫々格納される。例えば、ブロック1の1列目、2行目の画素1(1,2)(図示せず)は、PE1のローカルメモリ44における1列目、1行目の画素1(1,1)のローカルアドレスの次のローカルアドレスに格納される。
例えば、ローカルメモリ44におけるベースアドレスBASEADDRESS(画素1(1,1)が格納されるアドレス)を0とすると、ブロック1の1行目の各画素のローカルアドレスは「0」となり、M行目の各画素のローカルアドレスは「M−1」となる、また、ブロック2の1行目の各画素のローカルアドレスは「M」となり、ブロック2のM行目の各画素のローカルアドレスは「2×M−1」となる。同様に、ブロック6の1行目のローカルアドレスは、「5×M」となり、ブロック6のM行目の各画素のローカルアドレスは「6×M−1」となる。
図13は、「横方向優先」の場合の例を示す。「横方向優先」の格納態様は、同行の画素をできるだけ多く同時にPEアレイ30のローカルメモリに存在させる格納方式であり、上のブロックほど優先的に格納され、同行の各ブロックに関しては、左のブロックほど優先的に格納される。
図13に示す例では、画像幅Wは、PE数Nの4倍である。そのため、ブロックの列数は、4である。図示のように、まず、外部メモリにある画像データにおける最上行(1行目)のブロック1〜4は、ブロック1、2、3、4の順に格納され、次いで、上から2行目のブロック5〜8は、ブロック5、6、・・・の順に格納される。
なお、夫々のブロック内のデータに関しては、図12に示す縦方向優先の場合と同様に、行順に、各行のN個の画素がN個のPEのローカルメモリ44の同一のローカルアドレスに夫々格納される。
画像の同行の全ての画素が同時にPEアレイ30のローカルメモリに存在したほうが処理手順を組み立て易いなどの場合において、図13に示す横方向優先の格納態様が用いられる。この場合、ローカルメモリの容量を鑑みて、ブロックにおける画素の行数Mを調整することによって、画像の同行の全ての画素を同時にPEアレイ30のローカルメモリに格納することができる。
特表2010−531502号公報 特開平07−219919号公報 国際公開第2006/049331号
京 昭倫著「128個の4ウェイVLIW型RISCコアを集積した車載向け動画認識LSI」電子情報通信学会研究会報告、集積回路研究会(ICD),2003年5月、Vol.103,No.89,pp.19−24
ここで、横方向優先方式で画素データがPEアレイ30のローカルメモリに格納されている場合に、CP20がPEアレイ30に処理を行わせる場合のローカルアドレスの指定について考える。画像データの例としては、図13に示すものを用いる。
例えば、図14に示すように、ブロック1の1行目の各画素(図中太線で示す)をPEアレイ30に処理させる場合に、CP20は、処理対象の画素のローカルアドレスとして、PEアレイ30に「0」を放送する。これにより、1度の命令により全てのPEがアクセス対象の画素を特定することができる。
同様に、例えば、図15に示すように、ブロック6のM行目の各画素をPEアレイ30に処理させる場合に、CP20は、処理対象の画素のローカルアドレスとして、PEアレイ30に「6×M−1」を放送する。これにより、1度の命令により全てのPEがアクセス対象の画素を取得することができる。
上述した2つの例では、処理対象のN個の画素は、同一のブロック内の1行の画素である。言い換えれば、これらの画素は、画像の左上端の画素の座標値を(0,0)とした場合に、X方向の座標値がNの整数倍である画素から始まるN個の画素である。
ところで、処理対象のN個の画素は、X方向の座標値がNの整数倍である画素(ブロックの1列目の画素)から始まるとは限らず、ブロックの2列目以降の画素から始まるN個の画素である可能性がある。この場合、これらのN個の画素は、ブロックを跨ぐことになる。
例えば、図16に示すように、座標値が(2,4)である画素、すなわちブロック5の1行目における3列目の画素(画素5(3,1))を起点とするN個の画素の場合、これらのN個の画素は、ブロック5の1行目の(N−2)個の画素(画素5(3,1)、5(4,1)、・・・、5(N,1))と、ブロック6の1行目の先頭の2つの画素(画素6(1,1)、6(2,1))となる。
この場合、ブロック5の(N−2)個の画素のローカルアドレスは、「4M」になるが、ブロック6の2つの画素のローカルアドレスは、「5M」になる。
そのため、CP20は、PE1〜PENに画素5(3,1)〜画素6(2,1)のN個の画素を夫々参照させるために、まず、図17に示すように、PE3〜PENに対して、ローカルアドレス「4M」を指定して、これらのPEのローカルメモリの「4M」に格納された画素を夫々該PE内の一時記憶装置42にロードさせる。
そして、CP20は、図18に示すように、PE1〜PE2に対して、ローカルアドレス「5M」を指定して、これらのPEのローカルメモリの「5M」に格納された画素を夫々該PE内の一時記憶装置42にロードさせる。
そして、CP20は、PE間リング結合を利用したデータ交換をPEアレイ30に指示する。図19に示すように、その結果、PE1〜PENは、画素5(3,1)〜画素6(2,1)のN個の画素を夫々取得する。
以上の説明から分かるように、画像データを幅がPE数Nであるブロックに分割して横方向優先方式でPEのローカルメモリに格納するSIMDプロセッサにおいて、所定の画素から始まるN個の画素をN個のPEに夫々参照させる際に、該所定の画素のX方向の座標値がNの整数倍ではない場合に、上記N個の画素のローカルアドレスが異なるため、処理が煩雑になり、効率が良くないという問題がある。
本発明の1つの態様は、SIMDプロセッサにおけるコントロールプロセッサである。該SIMDプロセッサは、リング状に接続され、順次番号が付与されたN個(N:2以上の整数)のプロセッサ要素と、該N個のプロセッサ要素を制御する前記コントロールプロセッサとを有し、横幅がNより大きいW(W:Nの整数倍)である2次元データを幅がNであり、行数がM(M:1以上の整数)であるブロックに分割し、上に位置するブロックほど優先的に転送され、同一のブロック内の同一行のN個のデータが前記N個のプロセッサ要素のローカルメモリの同一のローカルアドレスに夫々格納されるように前記2次元データを外部メモリから前記ローカルメモリに転送する。
前記コントロールプロセッサは、アドレス算出部を備え、前記ローカルメモリに格納された、前記2次元データにおける座標値が(X,Y)である先頭データから行方向に並ぶN個のデータのローカルアドレスを前記N個のプロセッサ要素に対して指定する際に、前記アドレス算出部が算出した、ローカルアドレスA1と、ローカルアドレスA2と、閾値番号Zとを前記N個のプロセッサ要素に放送する。
前記ローカルアドレスA1とローカルアドレスA2は、前記N個のデータのローカルアドレスのなり得るものであり、前記閾値番号Zは、該2つのローカルアドレスのうちのいずれか1つを選択するための基準となるプロセッサ要素の番号の閾値である。前記アドレス算出部は、X、Y、M、W、Nに基づいてローカルアドレスA1、A2、閾値番号Zを算出する。
本発明の別の態様は、上記SIMDプロセッサにおけるプロセッサ要素である。該プロセッサ要素は、前記SIMDプロセッサにおけるコントロールプロセッサから放送されたローカルアドレスA1と、ローカルアドレスA2と、閾値番号Zとを受信した際に、前記閾値番号Zと、自身の番号との大小関係を比較すると共に、比較結果に応じて前記ローカルアドレスA1とローカルアドレスA2のいずれかを選択するアドレス選択部を有する。
本発明の更なる別の態様は、SIMDプロセッサである。該SIMDプロセッサにおけるコントロールプロセッサとプロセッサ要素は、本発明の態様として説明した上記のコントロールプロセッサとプロセッサ要素である。
なお、上記態様のコントロールプロセッサ、プロセッサ要素、SIMDプロセッサを方法や装置、システムなどに置換えて表示したものや、これらの方法をコンピュータに実行せしめるプログラムなども、本発明の態様としては有効である。
本発明にかかる技術によれば、画像データを幅がPE数Nであるブロックに分割して横方向優先方式でPEのローカルメモリに格納するSIMDプロセッサの処理効率を向上させることができる。
本発明の第1の実施の形態にかかるSIMDプロセッサを示す図である。 図1に示すSIMDプロセッサにおけるコントロールプロセッサ(CP)を示す図である。 図1に示すSIMDプロセッサにおけるPEのメモリコントローラ(MEMCTL)を示す図である。 本発明の第2の実施の形態にかかるSIMDプロセッサにおけるアドレス算出部を示す図である。 本発明の第3の実施の形態にかかるSIMDプロセッサにおけるアドレス算出部を示す図である。 本発明の第4の実施の形態にかかるSIMDプロセッサにおけるアドレス算出部を示す図である。 本発明の第5の実施の形態にかかるSIMDプロセッサにおけるアドレス算出部を示す図である。 本発明の第6の実施の形態にかかるSIMDプロセッサにおけるアドレス算出部を示す図である。 本発明の第7の実施の形態にかかるSIMDプロセッサにおけるアドレス算出部を示す図である。 非特許文献1に開示されたSIMDプロセッサを概略的に示す図である。 図10に示すSIMDプロセッサにおいて画像データをローカルメモリへの格納態様を示す図である。 図11に示す格納態様のうちの縦方向優先方式を説明するための図である。 図11に示す格納態様のうちの横方向優先方式を説明するための図である。 図13に示す格納態様のときに、処理対象のN個の画素のローカルアドレスの例を示す図である(その1)。 図13に示す格納態様のときに、処理対象のN個の画素のローカルアドレスの例を示す図である(その2)。 図13に示す格納態様のときに、処理対象のN個の画素のローカルアドレスの例を示す図である(その3)。 図16に示す例の場合におけるSIMDプロセッサの処理手順を説明するための図である(その1)。 図16に示す例の場合におけるSIMDプロセッサの処理手順を説明するための図である(その2)。 図16に示す例の場合におけるSIMDプロセッサの処理手順を説明するための図である(その3)。
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェアとソフトウェア(プログラム)の組合せによっていろいろな形で実現できることは当業者には理解されるところであり、ハードウェアとソフトウェアのいずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
<第1の実施の形態>
図1は、本発明の第1の実施の形態にかかるSIMDプロセッサ100を示す。SIMDプロセッサ100は、PEアレイ110、制御ユニット130を備える。
PEアレイ110は、N個(N:2以上の整数)のプロセッサ要素(PE)を有する。これらのPEは、リング状に接続され、順次番号が付与されている。図1に示す例では、これらのPEに対して、1〜Nの番号が付与されている。以下、各PEに付与された番号をPE番号という。なお、各PEは、同一の構成を有するため、ここで、PE1を代表にして説明する。
PE1は、外部メモリとの間で交換されるデータを一時的に格納するバッファ112と、ローカルメモリ114、メモリコントローラ(MEMCTL)116、演算部118を備える。
MEMCTL116は、この種のPEに通常備えられるメモリコントローラの機能を有する。例えば、外部メモリとのデータ交換に際して、MEMCTL116は、制御ユニット130における後述するコントロールプロセッサ(CP)150からのリード命令に応じて、該当するデータをローカルメモリ114から読み出してバッファ112に格納し、また、CP150からのライト命令に応じて、バッファ112に格納されたデータを読み出して、ローカルメモリ114の該当する番地に書き込む。
本実施の形態において、MEMCTL116は、アドレス選択機能をさらに備える。これについては、後述する。
演算部118は、このPEに通常備えられる演算部と同様の機能を有し、ここで、詳細な説明を省略する。
制御ユニット130は、DMA(Direct Memory Access)コントローラ140と、CP150を備える。CP150は、PEアレイ110と、DMAコントローラ140の制御を行う。
DMAコントローラ140は、データ転送の指示(以下、単に転送指示という)をCP150から受けると、PEアレイ110の各PEと、外部メモリとの間で交換されるデータのDMA転送を行う。具体的には、外部メモリから各PEのローカルメモリ114への転送指示の場合には、DMAコントローラ140は、外部メモリから該当する各データを夫々のPEのバッファ112に転送し、ローカルメモリ114から外部メモリへの転送指示の場合には、夫々のバッファ112に格納されたデータを外部メモリに転送する。
本実施の形態にかかるSIMDプロセッサ100は、横方向優先方式で、外部メモリに格納された2次元データ(以下「画像データ」を例とする)をローカルメモリ114へ転送することができる。横方向優先方式は、前述したように、画像データを幅がN(PEの数)であり、行数がM(M:1以上の整数)であるブロックに分割し、上に位置するブロックほど優先的に転送され、同一のブロック内の同一行のN個のデータがN個のプロセッサ要素のローカルメモリの同一のローカルアドレスに夫々格納されるように該画像データを外部メモリからローカルメモリバッファ112に転送する方式である。
このような転送とローカルメモリへの格納は、CP150の指示に従って、CP150と各PEのMEMCTL116により行われる。
また、本実施の形態において、外部メモリからバッファ112に転送される画像データの横幅(1行の画素数)がNより大きいW(W:Nの整数倍)であるとする。
以下において、外部メモリに記憶された画像データ一部が、既にDMAコントローラ140と各PEのMEMCTL116により、バッファ112を介して横方向優先方式でPEアレイ110に転送され、夫々のローカルメモリ114に格納されているとして説明する。
図2は、CP150を示す図である。図示のように、CP150は、アドレス算出部160を有する。アドレス算出部160は、ローカルメモリ114上のアドレス(ローカルアドレス)であるローカルアドレスA1、ローカルアドレスA2、閾値番号Zを得るものである。CP150は、各PEのローカルメモリ114に夫々格納された、画像データにおける座標値が(X,Y)である先頭データから行方向に並ぶN個のデータのローカルアドレスをPEアレイ110に対して指定する際に、アドレス算出部160が得られた、ローカルアドレスA1と、ローカルアドレスA2と、閾値番号ZとをPEアレイ110の各PEに一斉放送する。
ローカルアドレスA1とローカルアドレスA2は、上記N個のデータのローカルアドレスのなり得るものであり、閾値番号Zは、該2つのローカルアドレスのうちのいずれか1つを選択するための基準となるプロセッサ要素の番号の閾値である。アドレス算出部160は、X、Y、M、W、Nに基づいてローカルアドレスA1、A2、閾値番号Zを算出する。
具体的には、例えば、上記画像データの左上端の画素の座標値を(0,0)とした場合に、アドレス算出部160は、した式(1)〜(3)に従ってローカルアドレスA1、ローカルアドレスA2、閾値番号Zを算出する。
A1=BASEADDRESS+floor(Y/M)×(M×W/N)+floor(X/N)×M+Y%M (1)
A2=BASEADDRESS+floor(Y/M)×(M×W/N)+floor(X/N)×M+Y%M+M (2)
Z=X%N (3)
但し,
X:先頭データのX方向座標値
Y:先頭データのY方向座標値
N:プロセッサ要素の数
W:2次元データの横幅
M:ブロックの行数
ここで、式(1)、式(2)、及び以降の説明の中で用いる関数や、演算記号をまとめて説明する。
floor()は、括弧内の値の整数部分を求める床関数である。
「/」は、左側の値と右側の値の割り算を示す。例えば、「Y/M」は、YとMの割り算を示す。また、「×」は、左側の値と右側の値の乗算を示す。
「%」は、左側の値を右側の値で割った余りを示す。例えば、「Y%M」は、YをMで割った余りを示す。
「>>」は、左側の値を右の値が示す桁の分だけ右に算術シフトするビット演算を示す。例えば、「A>>B」は、AをB桁右に算術シフトするビット演算を示す。
「<<」は、左側の値を右の値が示す桁の分だけ左に算術シフトするビット演算を示す。例えば、「A<<B」は、AをB桁左に算術シフトするビット演算を示す。
ここで、まず、各PEのアドレス選択機能を説明してから、ローカルアドレスA1、ローカルアドレスA2、閾値番号Zの意義を説明する。
図3は、MEMCTL116を示す。図示のように、MEMCTL116は、アドレス選択部120を有する。アドレス選択部120は、CP150が放送したローカルアドレスA1、ローカルアドレスA2から自身が設けられたPEで使うべきローカルアドレスAを選択するものであり、この選択は、CP150が放送した閾値番号Zに基づいて行われる。
図示のように、アドレス選択部120は、比較器122とデマルチプレクサ124を備える。比較器122は、PE番号(図中PEID)と閾値番号Zが入力され、PEIDと閾値番号Zとを比較して、比較結果をデマルチプレクサ124に出力する。
デマルチプレクサ124は、2入力1出力デマルチプレクサであり、比較器122からの比較結果に応じて、2つの入力(ローカルアドレスA1、ローカルアドレスA2)のいずれかを出力となるローカルアドレスAに選択する。

上記構成により、アドレス選択部120は、自身が設けられたPEの番号が閾値番号Zより大きいときにローカルアドレスA1をローカルアドレスAに選択し、上記PEの番号が閾値番号Z以下であるときにローカルアドレスA2をローカルアドレスAに選択する。
図14〜図16に示す具体例を用いて、SIMDプロセッサ100において、座標値が(X,Y)である先頭データから始まるN個の画素のローカルアドレスをPEアレイ110に対して指定する際の関連する機能ブロックの動作を説明する。なお、「W/N」が「4」であるとする。
図14〜図16は、ベースアドレスBASEADDRESSが0であるとして各ローカルアドレスを示しているため、ベースアドレスBASEADDRESSが0ではない場合には、図示の各ローカルアドレスは、図示の値にベースアドレスBASEADDRESSを加算した値になる。以下の説明において、「BASEADDRESS」を略して「BASE」とも表記する。
図14の例は、ブロック1の1行目のN個の画素のローカルアドレスをPEアレイ110に対して指定する場合である。この場合、式(1)〜式(3)におけるXとY(すなわち先頭データの座標値)は、共に「0」であるため、SIMDプロセッサ100のCP150におけるアドレス算出部160が算出したローカルアドレスA1、ローカルアドレスA2、閾値番号Zは、「BASE」、「BASE+M」、「0」である。
PEアレイ110の各PEのMEMCTL116におけるアドレス選択部120は、一斉放送されたA1、A2、Zを受信すると、自身が設けられたPEのPE番号とZとを比較をする。例えば、PE1のPE番号が「1」であり、閾値番号Zが「0」より大きいため、PE1のアドレス選択部120は、PE1が使うローカルアドレスAとしてローカルアドレスA1(ベースアドレスBASE)を選択する。
PE2〜PENの各アドレス選択部120も、同様に、ローカルアドレスAとしてローカルアドレスA1(ベースアドレスBASE)を選択する。
その結果、PE1〜PENのローカルメモリのベースアドレスBASEに格納されたデータ、すなわちブロック1の1行目のデータが特定される。
図15の例は、ブロック6のM行目のN個の画素のローカルアドレスをPEアレイ110に対して指定する場合である。この場合、式(1)〜式(3)におけるXとYは、夫々「N」と「2M−1」である。そのため、SIMDプロセッサ100のCP150におけるアドレス算出部160が算出したローカルアドレスA1、ローカルアドレスA2、閾値番号Zは、「ベースアドレスBASE+(6M−1)」、「「ベースアドレスBASE+(7M−1)」、「0」である。
PE1〜PENのいずれのPE番号も「0」である閾値番号Zより大きいため、PEアレイ110の各PEのMEMCTL116におけるアドレス選択部120は、一斉放送されたA1、A2、Zを受信すると、ローカルアドレスAとしてローカルアドレスA1を選択する。
その結果、PE1〜PENのローカルメモリの「ベースアドレスBASE+(6M−1)」に格納されたデータ、すなわちブロック6のM行目のデータが特定される。
すなわち、本実施の形態のSIMDプロセッサ100によれば、X方向の座標値がNの整数倍である先頭データから始まるN個のデータをPEアレイ110に対して指定ことを、ローカルアドレスA1、ローカルアドレスA2、閾値番号Zの一度の一斉放送で実現することができる。
図16を参照して、X方向の座標値がNの整数倍ではない先頭データから始まるN個のデータをPEアレイ110に対して指定する場合を説明する。
図16の例は、ブロック5の1行目における3列目の画素(画素5(3,1))を起点とするN個の画素(画素5(3,1)、5(4,1)、・・・、5(N,1)、6(1,1)、6(2,1))のローカルアドレスをPEアレイ110に対して指定する場合である。この場合、式(1)〜式(3)におけるXとYは、夫々「2」と「M」である。そのため、SIMDプロセッサ100のCP150におけるアドレス算出部160が算出したローカルアドレスA1、ローカルアドレスA2、閾値番号Zは、「ベースアドレスBASE+4M」、「「ベースアドレスBASE+5M」、「2」である。
PE1とPE2のPE番号が閾値番号Z(2)以下であるため、該2つのPEにおけるアドレス選択部120は、ローカルアドレスAとしてローカルアドレスA2を選択する。
一方、PE3〜PENのPE番号が閾値番号Zより大きいため、これらのPEにおけるアドレス選択部120は、ローカルアドレスAとしてローカルアドレスA1を選択する。
その結果、PE1〜PE2のローカルメモリの「ベースアドレスBASE+5M」に格納されたデータ、すなわちブロック6の1行目の1列目と2列目のデータと、PE3〜PENのローカルメモリの「ベースアドレスBASE+4M」に格納された、すなわちブロック5の1行目の3列目〜N列目のデータとが特定される。
すなわち、本実施の形態のSIMDプロセッサ100によれば、X方向の座標値がNの整数倍ではない先頭データから始まるN個のデータをPEアレイ110に対して指定ことも、ローカルアドレスA1、ローカルアドレスA2、閾値番号Zの一度の一斉放送で実現することができる。
このように、画像データをブロック分けして横方向優先方式でPEのローカルメモリに格納するSIMDプロセッサ100において、CP150は、各PEのアドレス選択部120が算出したローカルアドレスA1、ローカルアドレスA2、閾値番号Zを一斉放送し、各PEにおけるアドレス選択部120は、閾値番号Zと自身のPE番号とを比較した結果に応じてローカルアドレスA1とローカルアドレスA2のいずれかをローカルアドレスAとして選択する。これにより、先頭データのX方向の座標値がNの整数場合であるか否かに関わらず、1つの命令で、先頭データから始まるN個のデータをPEアレイ110に対して指定することができ、ひいては、SIMDプロセッサ100全体の処理効率を向上させることができる。
なお、SIMDプロセッサ100において、PEアレイ110内のPEに対して1〜NのPE番号を付与し、アドレス選択部120は、PE番号が閾値番号Zより大きいときにローカルアドレスA1を選択し、PE番号が閾値番号Z以下であるときにローカルアドレスA2を選択するようになっている。例えば、PEアレイ110のPEに対して0〜(N−1)のPE番号を付与している場合には、アドレス選択部120は、PE番号が閾値番号Z以上であるときにローカルアドレスA1を選択し、PE番号が閾値番号Zより小さいときにローカルアドレスA2を選択するようにすればよい。
<第2の実施の形態>
第1の実施の形態にかかるSIMDプロセッサ100におけるCP150は、式(1)〜式(3)の演算を行うことによりローカルアドレスA1、ローカルアドレスA2、通常の閾値番号Zを得ている。コントロールプロセッサは、通常、汎用的なプロセッサが持つものと類似した命令セットしか持たないため、式(1)と式(2)の演算を実行するためには、多くの処理サイクルを必要とし、結果的には、大きなオーバーヘッドが発生してしまう恐れがある。CP150におけるアドレス算出部160を工夫して、上記オーバーヘッドを抑制する技術に関して、第2の実施の形態を用いて説明する。
本発明の第2の実施の形態も、SIMDプロセッサである。このSIMDプロセッサは、下記の2点を除き、SIMDプロセッサ100と同一である。そのため、第2の実施の形態のSIMDプロセッサについて、SIMDプロセッサ100と異なる点のみを説明する。
(1)該SIMDプロセッサにおけるPE数Nと、ブロックの行数Mに対して、2のべき乗である制限が加えられている。
(2)CP150において、アドレス算出部160の代わりに、図4に示すアドレス算出部200が設けられている。
図4に示すように、アドレス算出部200は、演算回路201と、演算回路201以外の、太線枠で示す複数の記憶部を含むパラメータ記憶部とを備える。
パラメータ記憶部は、具体的には、「(W>>log2N)<<log2M」であるQを記憶した記憶部211と、ブロックの行数Mから1を減算して得たM1(=(M−1))を記憶した記憶部212と、logMを記憶した記憶部213と、logNを記憶した記憶部214と、Mを記憶した記憶部215と、「N−1」であるN1を記憶した記憶部216を含む。なお、MとNが共に2のべき乗であるため、logMとlogNは、整数である。
演算回路201は、上記各記憶部に格納されたパラメータを用いて、ローカルアドレスA1、ローカルアドレスA2、閾値番号Zを算出する。
図示のように、演算回路201は、算術シフト回路221、論理積回路222、乗算器223、加算器224、加算器225、加算器226、算術シフト回路231、算術シフト回路232、加算器233、加算器234、論理積回路240を備える。
算術シフト回路221は、Y(先頭データのY座標値)と、記憶部213からのlogMとが入力され、YをlogM桁右に算術シフトすると共に、結果を乗算器223に出力する。
乗算器223は、算術シフト回路221の出力と、記憶部211からのQとを乗算して、結果を加算器224に出力する。
論理積回路222は、Yと、記憶部212からのM1とが入力され、YとM1をビットに対してビット毎の論理積演算を行って、結果を加算器224に出力する。論理積回路222が行う演算は、「Y%M」と等価である。
加算器224は、乗算器223と論理積回路222の出力を加算して、加算器225に出力する。
算術シフト回路231は、X(先頭データのX座標値)と、記憶部214からのlogNとが入力され、XをlogN桁右に算術シフトすると共に、結果を算術シフト回路232に出力する。
算術シフト回路232は、記憶部213からのlogMと、算術シフト回路231の出力とが入力され、算術シフト回路231の出力をlogM桁左に算術シフトすると共に、結果を加算器225に出力する。
加算器225は、加算器224の出力と、算術シフト回路232の出力とを加算して加算器226と加算器233に出力する。
加算器226は、ベースアドレスBASEと、加算器225の出力とを加算して結果を出力する。加算器226の出力は、ローカルアドレスA1になる。
加算器233は、加算器225の出力と、記憶部215からのMとを加算して結果を加算器234に出力する。
加算器234は、ベースアドレスBASEと、加算器233の出力とを加算して結果を出力する。加算器234の出力は、ローカルアドレスA2になる。
論理積回路240は、Xと、記憶部216からのN1とが入力され、XとN1をビットに対してビット毎の論理積演算を行って結果を出力する。論理積回路240が行う演算は、「X%N」と等価である。すなわち、論理積回路240の出力は、閾値番号Zになる。
演算回路201が行う演算は、下記の式(4)〜式(6)で示すことができる。
A1=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(X>>log2N)<<log2M (4)
A2=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(X>>log2N)<<log2M+M (5)
Z=X&N1 (6)
これらの式が示す演算は、式(1)〜式(3)が示す演算と等価である。
このように、本発明の第2の実施の形態のSIMDプロセッサは、PE数Nが2のべき乗であると共に、ブロックの行数Mも2のべき乗に制限すると共に、アドレス算出部200により演算を行うことにより、ローカルアドレスA1、ローカルアドレスA2、閾値番号Zを算出するための乗算回数と除算回数を減らしている。その結果、回路の実現コストを低減すると共に、ローカルアドレスA1などを算出するためのオーバーヘッドを抑制することができる。
<第3の実施の形態>
本発明の第3の実施の形態は、第2の実施の形態にかかるSIMDプロセッサに対して、アドレス算出部200の代わりに、図5に示すアドレス算出部300が設けられたSIMDプロセッサである。
図5に示すように、アドレス算出部300は、演算回路301と、演算回路301以外のパラメータ記憶部を有する。
アドレス算出部300において、アドレス算出部200と比較すると、パラメータ記憶部には、Mを記憶部215が無い。また、演算回路301には、算術シフト回路231の出力に対して「1」を加算する加算器331と、加算器331の出力をlogM桁左に算術シフトする算術シフト回路332が設けられている。さらに、加算器233の代わりに、加算器224の出力と、算術シフト回路332の出力とを加算する加算器333が設けられている。
アドレス算出部300における演算回路301が行う演算は、式(4)、式(7)、式(6)で示すことができる。なお、式(4)と式(6)は、前に述べたが、分かりやすいように、再度示す。
A1=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(X>>log2N)<<log2M (4)
A2=BASEADDRESS+(Y>>log2M)×Q+Y&M1+((X>>log2N)+1)<<log2M (7)
Z=X&N1 (6)
すなわち、演算回路301は、ローカルアドレスA2の計算に、演算回路201が行った式(5)の演算の代わりに、式(7)の演算を実行する。なお、式(4)、式(7)、式(6)で示す演算も、式(1)〜式(3)が示す演算と等価である。
アドレス算出部300を備えた本実施の形態のSIMDプロセッサも、アドレス算出部200を備えた第2の実施の形態のSIMDプロセッサと同様の効果を得ることができる。
<第4の実施の形態>
本発明の第4の実施の形態は、第2の実施の形態にかかるSIMDプロセッサに対して、アドレス算出部200の代わりに、図6に示すアドレス算出部400が設けられたSIMDプロセッサである。
図6に示すように、アドレス算出部400は、演算回路401と、演算回路401以外のパラメータ記憶部を有する。
アドレス算出部400において、アドレス算出部200と比較すると、パラメータ記憶部には、logNを記憶する記憶部214の代わりに、BIDを記憶する記憶部414が設けられている。なお、BIDは、N個のデータのうちの先頭データが位置するブロックの番号である。また、演算回路401には、算術シフト回路231の代わりに、記憶部414からのブロック番号BIDと、論理積回路240により得られた閾値番号Zとを加算する加算器431が設けられている。また、算術シフト回路232の代わりに設けられた算術シフト回路432は、加算器431の出力をlogM桁左にシフトして、結果を加算器225に出力する。
アドレス算出部400における演算回路401が行う演算は、式(8)〜式(10)で示すことができる。
Z=X&N1 (8)
A1=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(BID+Z)<<log2M (9)
A2=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(BID+Z)<<log2M+M (10)
これらの式が示す演算も、式(1)〜式(3)が示す演算と等価である。
アドレス算出部400を備えた本実施の形態のSIMDプロセッサも、アドレス算出部200を備えた第2の実施の形態のSIMDプロセッサと同様の効果を得ることができる。
<第5の実施の形態>
本発明の第5の実施の形態は、第4の実施の形態にかかるSIMDプロセッサに対して、アドレス算出部400の代わりに、図7に示すアドレス算出部500が設けられたSIMDプロセッサである。
図7に示すように、アドレス算出部500は、演算回路501と、演算回路501以外のパラメータ記憶部を有する。
アドレス算出部500は、X、Y、ベースアドレスBASEが入力されるアドレス算出部400と異なり、閾値番号Z、Y、ベースアドレスBASEが入力される。
また、アドレス算出部400と比較すると、アドレス算出部500のパラメータ記憶部は、「N−1」であるN1を記憶する記憶部216が無い点を除き、アドレス算出部400のパラメータ記憶部と同様である。また、演算回路501は、XとN1から閾値番号Zを算出する論理積回路240が無い点を除き、アドレス算出部400の演算回路401と同様である。
すなわち、本実施の形態のSIMDプロセッサにおけるアドレス算出部500は、閾値番号Zが外部から入力されることにより、アドレス算出部400より小さい回路規模でアドレス算出部400と同様の演算ができる。
<第6の実施の形態>
本発明の第6の実施の形態は、図5に示すアドレス算出部300と、図6に示すアドレス算出部400とを組み合わせたアドレス算出回路600が設けられたSIMDプロセッサである。
図8に示すように、アドレス算出部600は、演算回路601と、演算回路601以外のパラメータ記憶部を有する。
アドレス算出部300のパラメータ記憶部と同様に、アドレス算出回路600のパラメータ記憶部には、Mを記憶する記憶部215が無い。
また、アドレス算出部400のパラメータ記憶部と同様に、アドレス算出回路600のパラメータ記憶部には、記憶部214の代わりに、ブロック番号BIDを記憶する記憶部414が設けられている。
また、演算回路601には、記憶部414からのブロック番号BIDと、論理積回路240により得られた閾値番号Zとを加算する加算器431が設けられている。算術シフト回路432は、加算器431の出力をlogM桁左にシフトして、結果を加算器225に出力する。また、加算器431の出力に対して「1」を加算する加算器331と、加算器331の出力をlogM桁左に算術シフトする算術シフト回路332が設けられている。さらに、加算器224の出力と、算術シフト回路332の出力とを加算して加算器234に出力する加算器333が設けられている。
演算回路601が行う演算は、式(8)、式(9)、式(11)により示すことができる。
Z=X&N1 (8)
A1=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(BID+Z)<<log2M (9)
A2=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(BID+Z+1)<<log2M (11)
これらの式が示す演算も、式(1)〜式(3)が示す演算と等価である。
<第7の実施の形態>
本発明の第7の実施の形態は、図7に示すアドレス算出部500と、図8に示すアドレス算出部600とを組み合わせたアドレス算出回路700が設けられたSIMDプロセッサである。
図9に示すように、アドレス算出部700は、演算回路701と、演算回路701以外のパラメータ記憶部を有する。該アドレス算出回路700は、アドレス算出部500と同様に、閾値番号Z、Y、ベースアドレスBASEが入力される。
また、アドレス算出部500のパラメータ記憶部と同様に、アドレス算出回路700のパラメータ記憶部には、N1を記憶する記憶部216と、logNを記憶する記憶部214が無く、ブロック番号BIDを記憶する記憶部414が設けられている。
さらに、アドレス算出部600のパラメータ記憶部と同様に、アドレス算出回路700のパラメータ記憶部には、Mを記憶する記憶部215が無い。
すなわち、アドレス算出回路700において、パラメータ記憶部は、Q、M1、logM、ブロック番号BIDのみを記憶している。
また、演算回路701に関しては、XとN1から閾値番号Zを算出する論理積回路240が無い点を除き、アドレス算出回路600の演算回路601と同様である。
すなわち、演算回路701は、上記式(9)と式(11)が示す演算を実行してローカルアドレスA1とローカルアドレスA2を得る。
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減、組合せを行ってもよい。これらの変更、増減、組合せが行われた変形例も本発明の範囲にあることは、当業者に理解されるところである。
例えば、上述した各実施の形態を説明する際に画像を例にしたが、本発明にかかる技術は、画像以外の2次元データを処理するSIMDプロセッサにも適用することができる。
10 SIMDプロセッサ 20 コントロールプロセッサ
30 PEアレイ 42 一時記憶装置
44 ローカルメモリ 46 MEMCTL
48 演算部 100 SIMDプロセッサ
110 PEアレイ 112 バッファ
114 ローカルメモリ 116 メモリコントローラ
120 アドレス選択部 122 比較器
124 デマルチプレクサ 118 演算部
130 制御ユニット 140 DMAコントローラ
150 CP 160 アドレス算出部
200 アドレス算出部 201 演算回路
211〜216 記憶部 221 算術シフト回路
222 論理積回路 223 乗算器
224〜226 加算器 231 算術シフト回路
232 算術シフト回路 233〜234 加算器
240 論理積回路 300 アドレス算出部
301 演算回路 331 加算器
332 算術シフト回路 333 加算器
400 アドレス算出部 401 演算回路
414 記憶部 431 加算器
432 算術シフト回路 500 アドレス算出部
501 演算回路 600 アドレス算出回路
601 演算回路 700 アドレス算出回路
701 演算回路 A ローカルアドレス
A1 ローカルアドレス A2 ローカルアドレス
Mブロックの行数 N PE数
BID ブロック番号 PEID PE番号
W 横幅 Z 閾値番号

Claims (9)

  1. リング状に接続され、順次番号が付与されたN個(N:2以上の整数)のプロセッサ要素と、前記N個のプロセッサ要素を制御するコントロールプロセッサとを有し、横幅がNより大きいW(W:Nの整数倍)である2次元データを幅がNであり、行数がM(M:1以上の整数)であるブロックに分割し、上に位置するブロックほど優先的に転送され、同一のブロック内の同一行のN個のデータが前記N個のプロセッサ要素のローカルメモリの同一のローカルアドレスに夫々格納されるように前記2次元データを外部メモリから前記ローカルメモリに転送するSIMD(Single Instructio Multiple Data)プロセッサであって、
    前記コントロールプロセッサは、
    前記ローカルメモリに格納された、前記2次元データにおける座標値が(X,Y)である先頭データから行方向に並ぶN個のデータのローカルアドレスのなり得るローカルアドレスA1と、ローカルアドレスA2と、該2つのローカルアドレスのうちのいずれか1つを選択するための基準となるプロセッサ要素の番号の閾値である閾値番号Zとを、X、Y、M、W、Nに基づいて算出するアドレス算出部を備え、
    前記N個のデータのローカルアドレスを前記N個のプロセッサ要素に対して指定する際に、前記アドレス算出部により得られた、前記ローカルアドレスA1と、前記ローカルアドレスA2と、前記閾値番号Zとを前記N個のプロセッサ要素に放送し、
    前記N個のプロセッサ要素は、
    前記閾値番号Zと、自身の番号との大小関係を比較すると共に、比較結果に応じて前記ローカルアドレスA1とローカルアドレスA2のいずれかを選択するアドレス選択部を有することを特徴とするSIMDプロセッサ。
  2. 前記アドレス算出部は、
    前記2次元データの左上端のデータの座標値を(0,0)とした場合に、式(1)〜式(3)に従って、前記ローカルアドレスA1、前記ローカルアドレスA2、前記閾値番号Zを夫々算出することを特徴とする請求項1に記載のSIMDプロセッサ。
    A1=BASEADDRESS+floor(Y/M)×(M×W/N)+floor(X/N)×M+Y%M (1)
    A2=BASEADDRESS+floor(Y/M)×(M×W/N)+floor(X/N)×M+Y%M+M (2)
    Z=X%N (3)
    但し,
    X:先頭データのX方向座標値
    Y:先頭データのY方向座標値
    N:プロセッサ要素の数
    W:2次元データの横幅
    M:ブロックの行数
  3. 前記プロセッサ要素の数Nと前記ブロックの行数Mは、2のべき乗であり、
    前記アドレス算出部は、
    前記Mと、「M−1」であるM1と、logMと、「(W>>log2N)<<log2M」であるQと、「N−1」であるN1と、logNとを記憶するパラメータ記憶部と、
    前記パラメータ記憶部に記憶された各パラメータを用いて、式(4)〜式(6)が示す演算を行って前記ローカルアドレスA1、前記ローカルアドレスA2、前記閾値番号Zを得る演算回路とを備えることを特徴とする請求項2に記載のSIMDプロセッサ。
    A1=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(X>>log2N)<<log2M (4)
    A2=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(X>>log2N)<<log2M+M (5)
    Z=X&N1 (6)
  4. 前記プロセッサ要素の数Nと前記ブロックの行数Mは、2のべき乗であり、
    前記アドレス算出部は、
    「M−1」であるM1と、log Mと、「(W>>log2N)<<log2M」であるQと、「N−1」であるN1と、log Nとを記憶するパラメータ記憶部と、
    前記パラメータ記憶部に記憶された各パラメータを用いて、式(4)、式(7)、式(6)が示す演算を行って前記ローカルアドレスA1、前記ローカルアドレスA2、前記閾値番号Zを得る演算回路とを備えることを特徴とする請求項2に記載のSIMDプロセッサ。
    A1=BASEADDRESS+(Y>>log 2 M)×Q+Y&M1+(X>>log 2 N)<<log 2 M (4)
    A2=BASEADDRESS+(Y>>log 2 M)×Q+Y&M1+((X>>log 2 N)+1)<<log 2 M (7)
    Z=X&N1 (6)
  5. リング状に接続され、順次番号が付与されたN個(N:2以上の整数)のプロセッサ要素を有し、横幅がNより大きいW(W:Nの整数倍)である2次元データを幅がNであり、行数がM(M:1以上の整数)であるブロックに分割し、上に位置するブロックほど優先的に転送され、同一のブロック内の同一行のN個のデータが前記N個のプロセッサ要素のローカルメモリの同一のローカルアドレスに夫々格納されるように前記2次元データを外部メモリから前記ローカルメモリに転送するSIMD(Single Instructio Multiple Data)プロセッサにおける前記N個のプロセッサ要素を制御するコントロールプロセッサであって、
    前記ローカルメモリに格納された、前記2次元データにおける座標値が(X,Y)である先頭データから行方向に並ぶN個のデータのローカルアドレスのなり得るローカルアドレスA1と、ローカルアドレスA2と、該2つのローカルアドレスのうちのいずれか1つを選択するための基準となるプロセッサ要素の番号の閾値である閾値番号Zとを、X、Y、M、W、Nに基づいて算出するアドレス算出部を備え、
    前記N個のデータのローカルアドレスを前記N個のプロセッサ要素に対して指定する際に、前記アドレス算出部により得られた、前記ローカルアドレスA1と、前記ローカルアドレスA2と、前記閾値番号Zとを前記N個のプロセッサ要素に放送することを特徴とするコントロールプロセッサ。
  6. 前記アドレス算出部は、
    前記2次元データの左上端のデータの座標値を(0,0)とした場合に、式(12)〜式(14)に従って、前記ローカルアドレスA1、前記ローカルアドレスA2、前記閾値番号Zを夫々算出することを特徴とする請求項に記載のコントロールプロセッサ。
    A1=BASEADDRESS+floor(Y/M)×(M×W/N)+floor(X/N)×M+Y%M (12)
    A2=BASEADDRESS+floor(Y/M)×(M×W/N)+floor(X/N)×M+Y%M+M (13)
    Z=X%N (14)
    但し,
    X:先頭データのX方向座標値
    Y:先頭データのY方向座標値
    N:プロセッサ要素の数
    W:2次元データの横幅
    M:ブロックの行数
  7. 前記プロセッサ要素の数Nと前記ブロックの行数Mは、2のべき乗であり、
    前記アドレス算出部は、
    前記Mと、「M−1」であるM1と、logMと、「(W>>log2N)<<log2M」であるQと、「N−1」であるN1と、logNとを記憶するパラメータ記憶部と、
    前記パラメータ記憶部に記憶された各パラメータを用いて、式(15)〜式(17)が示す演算を行って前記ローカルアドレスA1、前記ローカルアドレスA2、前記閾値番号Zを得る演算回路とを備えることを特徴とする請求項に記載のコントロールプロセッサ。
    A1=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(X>>log2N)<<log2M (15)
    A2=BASEADDRESS+(Y>>log2M)×Q+Y&M1+(X>>log2N)<<log2M+M (16)
    Z=X&N1 (17)
  8. 前記プロセッサ要素の数Nと前記ブロックの行数Mは、2のべき乗であり、
    前記アドレス算出部は、
    「M−1」であるM1と、log Mと、「(W>>log2N)<<log2M」であるQと、「N−1」であるN1と、log Nとを記憶するパラメータ記憶部と、
    前記パラメータ記憶部に記憶された各パラメータを用いて、式(15)、式(18)、式(17)が示す演算を行って前記ローカルアドレスA1、前記ローカルアドレスA2、前記閾値番号Zを得る演算回路とを備えることを特徴とする請求項6に記載のコントロールプロセッサ。
    A1=BASEADDRESS+(Y>>log 2 M)×Q+Y&M1+(X>>log 2 N)<<log 2 M (15)
    A2=BASEADDRESS+(Y>>log 2 M)×Q+Y&M1+((X>>log 2 N)+1)<<log 2 M (18)
    Z=X&N1 (17)
  9. リング状に接続され、順次番号が付与されたN個(N:2以上の整数)のプロセッサ要素と、前記N個のプロセッサ要素を制御するコントロールプロセッサとを有し、横幅がNより大きいW(W:Nの整数倍)である2次元データを幅がNであり、行数がM(M:1以上の整数)であるブロックに分割し、上に位置するブロックほど優先的に転送され、同一のブロック内の同一行のN個のデータが前記N個のプロセッサ要素のローカルメモリの同一のローカルアドレスに夫々格納されるように前記2次元データを外部メモリから前記ローカルメモリに転送するSIMD(Single Instructio Multiple Data)プロセッサにおける前記プロセッサ要素であって、
    各前記プロセッサ要素は、
    前記コントロールプロセッサから放送されたローカルアドレスA1と、ローカルアドレスA2と、閾値番号Zとを受信した際に、前記閾値番号Zと、自身の番号との大小関係を比較すると共に、比較結果に応じて前記ローカルアドレスA1とローカルアドレスA2のいずれかを選択するアドレス選択部を有することを特徴とするプロセッサ要素。
JP2011209455A 2011-09-26 2011-09-26 Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素 Active JP5739779B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011209455A JP5739779B2 (ja) 2011-09-26 2011-09-26 Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素
US13/561,505 US9158737B2 (en) 2011-09-26 2012-07-30 SIMD processor and control processor, and processing element with address calculating unit
US14/839,285 US20150370755A1 (en) 2011-09-26 2015-08-28 Simd processor and control processor, and processing element with address calculating unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011209455A JP5739779B2 (ja) 2011-09-26 2011-09-26 Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素

Publications (2)

Publication Number Publication Date
JP2013073247A JP2013073247A (ja) 2013-04-22
JP5739779B2 true JP5739779B2 (ja) 2015-06-24

Family

ID=47912564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011209455A Active JP5739779B2 (ja) 2011-09-26 2011-09-26 Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素

Country Status (2)

Country Link
US (2) US9158737B2 (ja)
JP (1) JP5739779B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102277439B1 (ko) 2014-10-21 2021-07-14 삼성전자주식회사 재구성 가능 프로세서 및 그 동작 방법
EP3018587B1 (en) * 2014-11-05 2018-08-29 Renesas Electronics Europe GmbH Memory access unit

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253308A (en) * 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
JP3096387B2 (ja) 1994-01-28 2000-10-10 三菱電機株式会社 数値演算処理装置
JP2000122919A (ja) * 1998-10-13 2000-04-28 Mitsubishi Electric Corp プロセッサ及びメモリ制御方法
US20070250688A1 (en) 2004-11-05 2007-10-25 Nec Corporation Simd Type Parallel Arithmetic Device, Processing Element and Control System of Simd Type Parallel Arithmetic Device
FR2885710B1 (fr) * 2005-05-11 2007-08-03 Stmicroelectronics Maroc Selection d'adresse pour bus i2c
FR2918190B1 (fr) 2007-06-26 2009-09-18 Thales Sa Dispositif d'adressage pour processeur parallele.
JP2011134085A (ja) * 2009-12-24 2011-07-07 Renesas Electronics Corp 画像処理装置

Also Published As

Publication number Publication date
JP2013073247A (ja) 2013-04-22
US20150370755A1 (en) 2015-12-24
US9158737B2 (en) 2015-10-13
US20130080739A1 (en) 2013-03-28

Similar Documents

Publication Publication Date Title
US10816989B2 (en) Methods and systems of distributing task areas for cleaning devices, and cleaning devices
JPWO2019234794A1 (ja) 演算方法
US20130236118A1 (en) Image processing apparatus and method of operating image processing apparatus
JP5548087B2 (ja) 演算装置および演算方法
JP2011141823A (ja) データ処理装置および並列演算装置
JP5739779B2 (ja) Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素
US20170147529A1 (en) Memory controller and simd processor
JP5917907B2 (ja) 画像処理装置
US20210004667A1 (en) Operation processing apparatus and operation processing method
JP6503902B2 (ja) 並列計算機システム、並列計算方法及びプログラム
US20120093410A1 (en) Image processing apparatus and method for operating image processing apparatus
EP3474224B1 (en) Graphics processing method and device
JP5865696B2 (ja) 画像処理装置
EP2453360A2 (en) Method and apparatus for translating memory access address
US9996500B2 (en) Apparatus and method of a concurrent data transfer of multiple regions of interest (ROI) in an SIMD processor system
JP2009071569A (ja) 動画像符号化における動き探索装置
JP2008102599A (ja) プロセッサ
JP4790545B2 (ja) 画像処理装置、画像処理方法
US8934736B2 (en) Image processing apparatus, image processing system, and method for having computer process image
JP2012155604A (ja) データ転送制御装置
JP6319420B2 (ja) 情報処理装置、デジタルカメラおよびプロセッサ
JP5605225B2 (ja) メモリ制御装置、メモリマッピング方法、及び、プログラム
JP6708127B2 (ja) 画像処理装置、画像処理方法、及び、プログラム
JP2011134085A (ja) 画像処理装置
JP2015198425A (ja) 画像処理装置、画像処理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140417

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150309

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150424

R150 Certificate of patent or registration of utility model

Ref document number: 5739779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350