JP5829331B2 - Simdプロセッサシステムにおいて複数の対象領域(roi)を同時並列的にデータ転送するための装置 - Google Patents

Simdプロセッサシステムにおいて複数の対象領域(roi)を同時並列的にデータ転送するための装置 Download PDF

Info

Publication number
JP5829331B2
JP5829331B2 JP2014513832A JP2014513832A JP5829331B2 JP 5829331 B2 JP5829331 B2 JP 5829331B2 JP 2014513832 A JP2014513832 A JP 2014513832A JP 2014513832 A JP2014513832 A JP 2014513832A JP 5829331 B2 JP5829331 B2 JP 5829331B2
Authority
JP
Japan
Prior art keywords
roi
memory
data
data transfer
address
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
JP2014513832A
Other languages
English (en)
Other versions
JP2014526722A (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
Publication of JP2014526722A publication Critical patent/JP2014526722A/ja
Application granted granted Critical
Publication of JP5829331B2 publication Critical patent/JP5829331B2/ja
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/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/002Bus

Landscapes

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

Description

本発明は単一命令多重データ(SIMD:Single Instruction Multiple Data)プロセッサシステムにおける単一メモリとメモリアレイとの間のデータ転送に関する。
詳細には、本発明は、SIMDプロセッサシステムの各処理要素(PE:Processing Element)が該PEに割り当てられたROI領域に対するパラメータセットを他のPEとは従属関係無く特定し、複数の対象領域(ROI:Regions Of Interest)を同時並列的に転送するにあたって低実施コストで高速にデータ転送するための技術に関する。
単一命令多重データ(SIMD)処理システムはより効果的な高速並列処理を達成するための大きな可能性を有するので、SIMD方式で動作するプロセッサの開発が進んでいる。SIMDプロセッサシステムにおいて歩行者又は白線検出アルゴリズムを処理する場合、第1工程において、可能性のある候補領域が検出され、次の工程において、これらの候補領域が検証される。SIMDプロセッサシステムの処理能力を最適に利用するために、可能性のある候補領域の検出する第1工程だけでなく、ROI領域の検証のためにもPEアレイを利用することができる。したがって、各PEに対して異なった割り当てROI領域を有するPEアレイ上で同一のアルゴリズムが実行できるように、各PEの内部メモリに各ROI領域がロードされなければならない。
しかしながら、処理要素はSIMD方式で動作しているので、単一のPEに対してROI領域をロードしているとき、該単一のPEを除く全ての処理要素は待機していなければならず、それは中央プロセッサ(CP;Central Processor)での各ROI領域の逐次的処理等に比べた時のSIMD方式処理の予想される改善を減少させてしまう。
従来技術の非特許文献1には、SIMDプロセッサの1つの例が記載されている。図13はこのプロセッサのアーキテクチャを示している。このアーキテクチャは処理要素(PE)のアレイ104からなる。このアレイは内部メモリ102を有する複数のPE101からなり、それらは内部メモリを有するPEのグループ103にグループ分けされている。データはバス105を介して内部メモリアレイと外部メモリ(EMEM:external memory)108との間で転送される。ラインバッファ106は、2つのラインバッファの間でPEのグループか制御プロセッサ107のどちらかとバス105とが接続されるようにバス105上に配置される。
図14はラインバッファの動作を示す。そこにおいて、非特許文献1においてはSIMD方式における内部と外部のメモリの間のデータ転送のために自律DMA動作が使用される。内部メモリから外部メモリ108への転送の場合、例えば、各PEからの1バイトに等しい1つの要素を保持する、1行の要素201が最初に内部メモリから並列に読み出され、バス105のラインバッファ106の内部に格納される。そして、バス105のラインバッファ106の中身は、次の行202が内部メモリから読み出される前に、外部メモリ108へシフトアウトされる(シフト動作によって出力される)。
内部メモリと外部メモリ108との間のデータ転送の場合、常に要素の行全体が転送される。一部のみを転送する必要がある場合、EMEM108への書き込み動作に対してマスク動作が使用される。その場合、データは各PEに対して読み出し及び転送が可能であるが、いくつかのPEのデータ要素に対しては書き込み動作が無効にされなければならない。
このようなアーキテクチャにおいて複数のROI領域を処理するために、2つの可能性が存在する。第1の可能性は処理を純粋にCPで実施することである。この場合、PEアレイは利用されず、複数のROI領域は一つずつ順々に転送され、実行される。これには長い処理時間がかかり、DMAは非効果的であり、PEアレイの処理能力は利用されない。
第2の可能性は処理をPEアレイで実施することである。ここで、処理はSIMDの並行性を利用して並列に実施することができる。しかしながら、EMEMにおいて整列されてないデータは既存のライン転送動作によって並列にロードすることができず、このデータ転送は、他の処理要素をマスクしながらデータ要素単位で各処理要素に転送することによって逐次的に実行される。すなわち、割り当てられたROIデータが単一のPEの単一の内部メモリにだけ書き込まれ、他のPEがマスクされるように、該単一のPEを除く全てのPEがマスクされる。しかし、他のPEがアクセスされない状態で各PEが要素単位でアクセスされなければならず、全てのPEに対してデータを転送するために非常に長い時間がかかる。
ここで、本願の出願人によって出願された特許出願に記載されたもう1つの例を説明する。2011年7月21日に出願された日本特許出願第2011−159752号(特許文献1)はSIMDプロセッサを使用して、より効果的にデータを転送するための新規なアイデアを記載している。図15において、BK1−BK6が割り当てられた各PEに転送されるべきROIであり、 BK1−BK6が互いに異なった大きさである場合を想定する。この場合、DMAコントローラは各ROIパラメータの最大値を転送パラメータとして使用する。図15においては、BK2が最大長(Lmax)を有し、BK5が最大幅(Wmax)を有する。図16に示されているように、CPがDMAコントローラに各領域の開始アドレスを設定すると、DMAコントローラによりLmax×Wmaxの大きさの領域を並列処理によって、それぞれ各PEに転送することができる。
2011年7月21日に出願された日本特許出願第2011−159752号
Shorin Kyo,et.al.,「A 51.2GOPS Scalable Video Recognition Processor for Intelligent Cruise Control Based on a Linear Array of 128 4-Way VLIW Processing Elements」,2003 IEEE International Solid-State Circuits Conference,2003年2月
ROIデータ領域に定義された各PEに対する独立のデータ転送は非特許文献1に記載された方法によって機能するが、このデータ転送は、各PEに対するデータが他の全てのPEに対する書き込み動作をマスクしながら別々に転送されなければならないので、長い処理時間がかかる。この要素単位でのデータ転送のための時間的なオーバヘッドはSIMD方式を、例えば、歩行者又は白線検出アルゴリズムの検証作業等を含む多くの作業に対して実現不可能なものにしている。
非特許文献1に記載の技術を使用した場合、必要なROIデータであるBK1−BK6に加え、不必要で冗長なデータをも転送しなければならず、データ転送時間を必要以上に、大幅に長くするとともにデータ格納装置の内部に大きな領域が必要となる。
本発明の目的は、内部メモリアレイと単一メモリとの間で複数のROI領域を同時並行的に転送するにあたって低実施コストでかつ高速にデータ転送できるようにすることにあり、このとき、各PEが、転送される領域に対してパラメータセットを他のPEとは独立に特定することができるようにする。
本発明のもう1つの目的であるデータ転送に対する処理時間の短縮は、データ転送命令の開始時に各ROI領域のパラメータセットを割り当てられたPEから制御プロセッサに転送し、このパラメータセットを制御プロセッサに格納することによって達成される。そして、制御プロセッサ内部で、単一メモリへの複数の要求が各PE及び各ROI領域の各要素に対して自律的に生成される。
読み出し転送の場合、これらの要求は、各PEに対して各ROI領域の第1要素が最初に単一メモリから要求され、その後に各ROI領域の後続の要素が要求されるように生成される。単一メモリから各ROI領域からの第1要素が制御プロセッサで受信され、制御プロセッサからバスシステムを介して内部メモリアレイに転送された後、全ての要素は内部メモリアレイに並列に格納される。そして、各PEに対して各ROI領域の第2要素が単一メモリから要求される。各ROI領域の全ての要素がそれらの割り当てられたPEに転送されると、転送は終了する。
書き込み転送の場合、これらの要求は、各PEの内部の各ROI領域の第1要素が最初に内部メモリアレイから並列に読み出され、バスシステムのレジスタに転送されるように生成される。そして、データ要素は制御プロセッサにシフトされ、そこにおいて各要素に対して対応する単一メモリのアドレスが計算され、単一メモリに対してデータ転送が要求される。単一メモリに全ての第1要素が送られた後、各ROI領域からの第2要素が内部メモリアレイから読み出される。
本発明の実施形態1のSIMDプロセッサの構造を示している。 レジスタセット309をより詳細に示している。 要求アドレス計算機310をより詳細に示している。 ver_pos及びhor_posの意味を図示している。 転送ゲート部311を詳細に示している。 単一メモリ308から内部メモリアレイへのリード方向データ転送に対するフローチャートを示している。 単一メモリ308から内部メモリアレイへのリード方向データ転送に対するフローチャートを示している。 互いに異なる大きさを有し、内部メモリアレイに転送されることになっている多数のROI領域を図示している。 実施形態1のデータ転送動作を概略的に示している。 内部メモリアレイから単一メモリ308へのライト方向データ転送に対するフローチャートを示している。 内部メモリアレイから単一メモリ308へのライト方向データ転送に対するフローチャートを示している。 実施形態2のデータ転送動作を概略的に示している。 変形例のアドレス計算機1200を示している。 例としてのアーキテクチャを有するSIMDプロセッサ300が動作可能な、可能なシステム設計を示している。 SIMDプロセッサの典型的なアーキテクチャを示している。 非特許文献1においては自律DMA動作が使用される、ラインバッファの動作を示している。 従来技術においてBK1−BK6が割り当てられた各PEに転送されるべきROI領域である場合を示している。 従来技術の技術的問題を示している。
付随する図面を参照しながら、本発明の実施形態を説明する。
(実施形態1)
実施形態1として、単一メモリからメモリアレイへのROIデータの転送を説明する。この状況は、例えば、白線や顔領域に対する、いくつかの可能性のある候補が検出された後に検証が必要な場合に起こる。
図1は本発明の実施形態1のSIMDプロセッサの構造を示している。SIMDプロセッサは、各々がそれ自身の内部メモリ302を有するPE301のアレイ304を有する。以下、PEアレイ304の内部メモリを内部メモリアレイと呼ぶ。また、複数のPEがPEのグループ303にグループ分けされている。本実施形態においては、4つのPEが1つのグループにグループ化されている。
データはバスシステム305を介して内部メモリアレイと単一メモリ308との間で転送され、データ転送は制御プロセッサ(CP)307によって制御される。制御プロセッサ(CP)307はSIMDの並行性を利用するダイレクトメモリーアクセスコントローラとして機能する。ラインバッファ306は、2つのラインバッファの間でPEのグループ303か制御プロセッサ307のどちらかとバス305とが接続されるようにバスシステム305上に配置される。
制御プロセッサ307はレジスタセット309と、要求アドレス計算機310と、転送ゲート部311と、バスシフトコントローラ312とを有する。
図2はレジスタセット309をより詳細に示している。レジスタセット309は多数のレジスタR〜RN−1を有する。1つのPEに対して1つのレジスタがある。すなわち、レジスタRはPEのパラメータセットを保持し、レジスタRはPEのパラメータセットを保持し、レジスタRN−1はPEN−1のパラメータセットを保持する。各レジスタR〜RN−1はPE間で互いに異なる転送パラメータだけを保持する。
これらのパラメータは、
1.単一メモリにおけるROI開始アドレス:start_addsingle_memory
2.ROIの幅:roi_width
3.ROIの高さ:roi_height
である。
転送動作中にアクセスされるアドレスは要求アドレス計算機310で生成される。図3は要求アドレス計算機310をより詳細に示している。要求アドレス計算機310は転送カウンタ601と、アドレス部602と、分割部603と、モジュラ演算部604と、アドレス計算部605とを有する。転送カウンタ601はアドレス部602を使用して1ずつ増やされる転送の回数(trans_cnt)をカウントする。
分割部603は、trans_cntをroi_widthで除算する整数除算を実行し、それの商はアドレス計算部605に出力される。図4に示されているように、前記商はデータのROI内の縦位置ver_posを表している。
ver_pos=trans_cnt div roi_w
モジュラ演算部604は、trans_cntをroi_widthで除算するモジュラ演算を実行し、それの余りはアドレス計算部605に出力される。図4に示されているように、前記余りはデータのROI内の横位置hor_posを表している。
hor_pos=trans_cnt mod roi_w
ここで、ver_pos及びhor_posは転送されるデータのROI内の位置を決定する。
アドレス計算部605は単一メモリ内の要求アドレスreq_addsingle_memoryを計算する。前記ver_pos及びhor_posに加え、開始アドレスstart_add及び共通距離distもまたアドレス計算部605に与えられる。ここで、開始アドレスstart_addは単一メモリ308内のROIの開始アドレスであり、共通距離は単一メモリのメモリ領域の幅である。したがって、アドレス計算部605は以下の式を計算する。
req_addsingle_memory=start_addsingle_memory+(ver_pos×dist)+hor_pos
図4を参照すると、上記式の意味が明確に理解できる。
図5は転送ゲート部311を詳細に示している。転送ゲート部311は乗算部701と、比較器702と、スイッチ703とを有する。乗算部701はPExのroi_widthとPExのroi_heightとを乗算して、PExのROIの大きさroi_sizeを求める。前記roi_sizeは比較器702に出力される。
前記roi_sizeに加え、trans_cntが転送カウンタ601から比較器702に与えられる。比較器702はtrans_cntを前記roi_sizeと比較する。比較結果はスイッチ703に出力される。
このスイッチはON/OFFの2つの状態を有するスイッチであり、比較器による結果に応じて要求アドレスreq_addsingle_memoryを単一メモリ308に転送する。trans_cnt が roi_sizeより小さい場合、すなわち、trans_cnt <roi_sizeの場合、スイッチ703はreq_addsingle_memoryを単一メモリ308へ通過させる。一方、trans_cnt が roi_sizeに達した、又はroi_sizeを超えた場合、すなわち、trans_cnt≧roi_sizeの場合、スイッチ703はreq_addsingle_memoryを単一メモリ308へ通過させない。換言すると、データ転送の回数がROI領域の大きさに達する又は、ROIの大きさを超えるまでは、必要な要求アドレスが単一メモリ308に与えられる。しかしながら、不必要な要求アドレスは単一メモリ308に与えられない。
バスシフトコントローラ312はバスのシフトを制御する。バスシフトコントローラ312は転送された要素の数をカウントする内部カウンタを有する。本実施形態において、バスシフトコントローラ312はモジュラ4計算(Xモード4)を計算し、バスはモジュラ計算の結果に応じて1つシフトされる。本実施形態においては、4つのPEがグループ化されており、1つのラインバッファが4つの要素を保持することができる。例えば、1つの要素が4バイトの場合、バスライン305及びラインバッファLBは16バイトの容量を有する。したがって、バスシステムは4要素毎にシフトされなければならない。
(リード方向のデータ転送動作)
次に、フローチャートを参照しながら、データ転送動作を説明する。まず、図6A及び6Bを参照して、リード方向のデータ転送動作を説明する。
図6A及び6Bは単一メモリ308から内部メモリアレイへのリード方向のデータ転送に対するフローチャートを示している。図7に示されているように、事前の分析によっていくつかの領域が可能性のある候補として検出されているとする。図7において、ROI0,ROI1,....ROIx,...は可能性のある候補であり、より正確に分析されなければならない。したがって、これらの領域はそれぞれ、内部メモリに転送されなければならない。また、事前の分析においていくつかの領域が可能性のある候補として検出されている場合、各ROI領域に対するパラメータセットが特定され、各PEはそれら自身の割り当てられたROI領域に対するROIパラメータセットをそれぞれ保持する。各PEはそれら自身の内部メモリ302にROIパラメータセットを格納してもよい。
ST101において、まず、内部メモリアレイから全てのROI領域に対するROIパラメータセットが並列に読み出され、バスシステム305のラインバッファLBに格納される。そして、ST102において、パラメータセットは制御プロセッサ307にシフトされ、図2に示されているように、レジスタセット部309内に格納される。
全てのパラメータセットがレジスタセット部309内に格納された後(ST103:YES)、ROI転送カウンタ601は「0」に初期化される(trans_cnt=0) (ST104)。また、バスシフトコントローラ312の内部カウンタも「0」に初期化される(ST105)。
次に、PExに対して、転送されるデータの要求アドレスが要求アドレス計算機によって計算される(ST106)。「x」はPE又はROIのインデックス番号であり、「0」から開始される。また、「x」はループ毎にカウントアップされる。
要求アドレス計算については、図3及び図4を参照して既に上述したとおりである。ここでは、式についてだけ再記載する。
req_addsingle_memory=start_addsingle_memory+(ver_pos×dist)+hor_pos
ver_pos=trans_cnt div roi_width
hor_pos=trans_cnt mod roi_width
PExに対するreq_addsingle_memoryが計算された後、このPExに対して計算されたreq_addsingle_memoryは転送ゲート部311を介して単一メモリ308に転送される。しかしながら、上述したように、必要な要求アドレスが単一メモリ308に与えられるのに対し、不必要な要求アドレスは単一メモリ308に転送されない。したがって、要求アドレスを単一メモリに転送する前に(ST108)、trans_cntがroi_sizeより小さいかどうかを決定する(ST106)。
単一メモリ308がreq_addsingle_memoryを受信すると、単一メモリ308はreq_addsingle_memoryに対応するデータ要素を送り返す(ST109)。そして、CP307はデータ要素をラインバッファ306に出力する(ST110)。
上述したように、バスシステムは4データ毎にシフトされなければならない(ST111, ST112)。次に、ST113において、xがPEインデックスの最後の番号に達したかが決定される。すなわち、各PE(PE − PEN−1)からの1つの要素に対してアドレス計算(ST106)及び必要なデータ要素のラインバッファへの出力が実行されたかが決定される。「x」をカウントアップした(ST114)ときに「x」が最後の番号に達していない場合、処理はアドレス計算(ST106)に戻り、ST106〜ST113の処理を繰り返す。すなわち、次のPEに対するアドレス計算が行われ(ST106)、要求されたデータがラインバッファに出力される。
一方、ST113において「x」が最後の番号に達した場合、全てのPEに対するデータがラインバッファに出力されている。例えば、trans_cnt=0の場合、各ROIに対する開始アドレスに対応する全ての第1データがラインバッファに出力される。したがって、各PEはラインバッファから割り当てられたデータ要素を取得し、それらをPE自身の内部メモリに格納する(ST115)。この処理は図8を参照することによって理解されるだろう。全ての第1データがラインバッファに格納されると、各PEはラインバッファから割り当てられたデータ要素を取得する。
ST106〜ST115は、全てのROIの全ての要素が送信されるまで(ST116)、trans_cntをカウントアップしながら(ST117)繰り返される。図4への参照とともに上述したように、trans_cntを1つカウントアップしたときに、ROI内における要求アドレスの位置が1つシフトされることは容易に理解されるだろう。したがって、ST105〜ST117を繰り返すことにより、全てのROIの全ての要素を単一メモリからバスシステムに出力することができ、各PEは割り当てられたROIデータを逐次的に取得することができる。
さらに、転送ゲート部は各PEx(又はROIx)に対してtrans_cntがroi_sizeより小さいかどうかを決定するので、不必要なデータは単一メモリに送信されない。したがって、SIMDプロセッサシステムにおける複数のROIの並行データ転送を高速かつ効果的に実行することができる。
(実施形態2)
次に、本発明の実施形態2を説明する。この実施形態2として、ライト方向のデータ転送動作を説明する。実施形態1で説明されたシステム構成をこの実施形態2にも適用することができる。
図9A及び9Bは内部メモリアレイから単一メモリ308へのライト方向のデータ転送に対するフローチャートを示している。図10は実施形態2のデータ転送動作を概略的に示している。ST201〜ST204はST101〜ST104と同一である。ST205において、内部メモリから各ROI領域に対する第1データ要素が読み出され、バスシステムのラインバッファに格納される。この工程において、全てのPEは1つの要素データをラインバッファに出力する。内部バスシフトコントローラ312が「0」に初期化されると、上述したように、バスシステムは4データ毎にシフトされなければならない(ST207, ST208)。
ST209において、PExに対して、要求アドレス計算機によって書き込むべきデータの要求アドレスが計算される(ST209)。このアーキテクチャは実施形態1のST106と同一である。さらに、trans_cntがroi_sizeより小さいかどうかに応じて(ST210)、req_address及びPExから転送されたデータがライト要求とともに単一メモリに送信される(ST211)。それに続いて、単一メモリはPExから送信されたデータ要素を要求されたアドレスに格納する(ST212)。
「x」がカウントアップされると(ST214)、処理はバスシフトコントロール(ST207, ST208)及びアドレス計算(ST209)に戻り、ST207〜ST213の処理を繰り返す。
ST213において、各PE(PE − PEN−1)からの1つの要素に対してアドレス計算(ST209)及びデータ要素の要求されたアドレスへの格納が実行されたかが決定される。「x」が最後の番号に達すると、ST205〜ST215は、全てのROIの全ての要素が単一メモリに書き戻されるまで、trans_cntをカウントアップしながら(ST216)繰り返される。最終的に、全てのROIデータが単一メモリに書き戻される。
ROIの大きさがROI毎に異なるにも関わらず、アドレス計算(ST209)によって、CPは単一メモリ内に書き戻されるべきデータを特定することができる。さらに、転送ゲート部は各PEx(又はROIx)に対してtrans_cntがroi_sizeより小さいかどうかを決定するので、不必要なライト要求は単一メモリに送信されない。したがって、SIMDプロセッサシステムにおける複数の対象領域の並行データ転送を高速かつ効果的に実行することができる。
(変形実施形態1)
変形された実施形態として、要求アドレス計算機310の代替的なアーキテクチャを説明する。図11は変形例のアドレス計算機1200を示している。このアドレス計算機1200は比較器1202と、2つのスイッチ1203、1204と、レジスタセット201と、加算部1205とを有する。レジスタセット201は多数のレジスタ、及び各PExに対して備えられた2つのレジスタを有する。レジスタは転送されるデータの現在の横位置hor_pos及び現在の縦位置ver_posを一時的に保持することができる。初期状態において、PExのhor_pos及びver_posは「0」に設定される。
各PExに対して、比較器1202はレジスタセット1201からの現在の横位置hor_posをPExの「横幅−1」と比較する。比較器1202は比較結果をスイッチ1204及びスイッチ1203に出力する。PExのhor_pos及びver_posはスイッチ1204の2つの入力端子にそれぞれ入力され、スイッチ1204はPExのhor_pos及びver_posのどちらかを出力値として選択する。詳細には、現在のPExのhor_posがPExの「横幅−1」に等しくない場合、スイッチ1204は現在のPExのhor_posを出力値として選択する。
スイッチ1204からの出力値は加算部1205に入力され、スイッチ1204からの出力値は1つ増やされる。それに続いて、加算の結果はレジスタセット1201のレジスタに書き戻される。換言すると、各工程が進むとともに、PExのhor_posの値は1つ増やされる。これは、ROI内のデータの位置が横方向に1つシフトされることを意味する。
一方、現在のPExのhor_posがPExの「横幅−1」に等しい場合、比較器1202は結果をスイッチ1203に出力する。このスイッチ1203は横位置hor_posの値をリセットする機能を有する。詳細には、PExのhor_posの値は「0」にリセットされ、値「0」がレジスタセット1201のレジスタに書き戻される。さらに、比較結果はスイッチ1205にも出力される。
現在のPExのhor_posがPExの「横幅−1」に等しい場合、このスイッチは縦位置ver_posを出力値として選択し、その値は加算部1205において1つ増やされる。加算の結果はレジスタセット1201のレジスタに書き戻される。換言すると、ROI内のデータの位置がROIxの横方向の端に達すると、データ位置は次の行の先頭にシフトされる。
これによって、データ位置を順序正しくシフトすることができる。したがって、ver_pos及びhor_posから計算されるreq_addsingle_memoryを単一メモリのアドレス空間内で順序正しくシフトすることができる。
(変形実施形態2)
本発明は上述の実施形態に限定されない。図12は例としてのアーキテクチャを有するSIMDプロセッサ300が動作可能な、可能なシステム設計を示している。システム内の他の構成要素は中央処理装置(CPU)401と単一メモリ308であってもよく、それらは全て接続を介してバスシステム404に接続されている。
当業者には、請求の範囲によって規定される本発明の範囲や意図から外れずに、形式や詳細に対する多様な変更が可能であることが理解されるだろう。ROIの大きさは互いに異なってもよいし、互いに等しくてもよい。上述の実施形態においては、PEが4つ毎にグループ化されているので、バスのシフト動作はモジュラ4計算の結果によって制御されている。しかしながら、バスのシフトは1つのグループ内のPEの数に応じて適切に制御されるべきである。
本発明は画像処理のための方法及び装置に適用することができ、その画像データはカメラ、レーザープローブ、又はインターネットから取得することができる。
101 プロセッサ要素(PE)
102 メモリ要素
103 PEグループ
104 PEアレイ
105 バス
106 ラインバッファ
107 制御プロセッサ(CP)
108 外部メモリ
301 プロセッサ要素(PE)
302 メモリ要素
303 PEのグループ
304 PEアレイ
305 バスシステム
306 レジスタ
307 制御プロセッサ(CP)
308 単一メモリ
309 レジスタセット
310 要求アドレス計算機
311 転送ゲート
401 中央処理装置
402 SIMDプロセッサ
403 単一メモリ
404 バスシステム
601 転送カウンタtrans_cnt
602 加算部
603 整数分割部
604 モジュラ部
605 アドレス計算部
701 乗算部
702 比較器
703 スイッチ
1201 レジスタセット
1202 比較器
1203 スイッチ
1204 スイッチ
1205 加算部

Claims (8)

  1. 単一命令多重データ方式で制御される複数の処理要素を含む処理要素アレイと、
    前記処理要素の各々の内部に備えられるメモリ要素であって、前記処理要素の全ての前記メモリ要素へのデータアクセスが並列に実行されるメモリ要素と、
    単一命令多重データ方式で前記処理要素アレイを制御する制御プロセッサと、
    全ての前記処理要素を互いに接続し、かつ前記制御プロセッサに接続するバスシステムと、
    前記処理要素アレイの前記メモリ要素とデータを交換する単一メモリであって、リード転送に対するデータ送信装置として、かつライト転送に対するデータ受信装置として動作する単一メモリとを備えるデータ転送装置であって、
    前記制御プロセッサが、各々が各処理要素に対する対象領域(ROI領域)転送パラメータセットの一時的な格納装置である複数のレジスタを有するレジスタセット部であって、前記転送パラメータセットが少なくとも前記単一メモリ内のROI開始アドレスと、ROIの幅と、ROIの高さとを含む、レジスタセット部と、
    最初に1を加えることによって転送されるデータの各ROI内の位置を横方向及び縦方向にシフトし、次に前記縦及び横の位置に加えて、前記ROIの開始アドレスと前記単一メモリのメモリ領域の幅である共通の距離とを使用して、前記単一メモリ内の前記位置のアドレスを計算する要求アドレス計算機とを備える、データ転送装置。
  2. 前記縦位置がデータ転送カウント数を前記ROIの幅で除算する整数除算によって計算され、前記横位置が前記データ転送カウント数を前記ROIの幅で除算するモジュラ演算によって計算される、請求項1に記載のデータ転送装置。
  3. 前記単一メモリ内の前記位置の前記アドレスをreq_addsingle_memory、前記単一メモリ内の前記ROIの前記開始アドレスをstart_addsingle_memory、前記ROI内の前記データの前記縦位置をver_pos、前記ROI内の前記データの前記横位置をhor_pos、前記共通の距離をdistとしたとき、前記単一メモリ内の前記位置の前記アドレスが下記の式
    req_addsingle_memory=start_addsingle_memory+(ver_pos×dist)+hor_pos
    を使用して計算される、請求項1又は2に記載のデータ転送装置。
  4. 前記制御プロセッサが転送ゲート部をさらに備え、前記転送ゲート部が、前記データ転送カウント数がROIの大きさを超えていない場合のみ、メモリアクセス要求を前記単一メモリへ通過させる、請求項に記載のデータ転送装置。
  5. 前記処理要素アレイからの前記ROI領域の大きさが同じである、請求項1から4のいずれかに記載のデータ転送装置。
  6. 前記処理要素アレイからの前記ROI領域の大きさが異なる、請求項1から4のいずれかに記載のデータ転送装置。
  7. 前記バスシステムがパイプライン式のリングバスである、請求項1から6のいずれかに記載のデータ転送装置。
  8. 前記単一メモリが外部メモリである、請求項1から7のいずれかに記載のデータ転送装置。
JP2014513832A 2011-09-27 2011-09-27 Simdプロセッサシステムにおいて複数の対象領域(roi)を同時並列的にデータ転送するための装置 Active JP5829331B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/072715 WO2013046475A1 (en) 2011-09-27 2011-09-27 Apparatus and method of a concurrent data transfer of multiple regions of interest (roi) in an simd processor system

Publications (2)

Publication Number Publication Date
JP2014526722A JP2014526722A (ja) 2014-10-06
JP5829331B2 true JP5829331B2 (ja) 2015-12-09

Family

ID=44903323

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014513832A Active JP5829331B2 (ja) 2011-09-27 2011-09-27 Simdプロセッサシステムにおいて複数の対象領域(roi)を同時並列的にデータ転送するための装置

Country Status (4)

Country Link
US (1) US9996500B2 (ja)
JP (1) JP5829331B2 (ja)
TW (1) TWI549061B (ja)
WO (1) WO2013046475A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102235803B1 (ko) * 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
US11314674B2 (en) * 2020-02-14 2022-04-26 Google Llc Direct memory access architecture with multi-level multi-striding

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2657978A1 (fr) * 1990-02-02 1991-08-09 Philips Electronique Lab Procede de stockage en memoire pour le traitement d'images, et dispositif pour la mise en óoeuvre du procede.
JPH04333952A (ja) 1991-05-10 1992-11-20 Toshiba Corp Dmaコントロールlsi
JPH0944130A (ja) * 1995-07-28 1997-02-14 Sony Corp 映像装置
EP1107107A1 (en) * 1999-12-10 2001-06-13 Koninklijke Philips Electronics N.V. Parallel data processing and shuffling
US6941446B2 (en) * 2002-01-21 2005-09-06 Analog Devices, Inc. Single instruction multiple data array cell
CN1950843A (zh) * 2004-04-29 2007-04-18 皇家飞利浦电子股份有限公司 图像处理设备和方法
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US20100141668A1 (en) 2006-10-26 2010-06-10 Nxp, B.V. Address calculation unit
JP4801605B2 (ja) * 2007-02-28 2011-10-26 株式会社リコー Simd型マイクロプロセッサ
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
JP2011141823A (ja) 2010-01-08 2011-07-21 Renesas Electronics Corp データ処理装置および並列演算装置
JP5373653B2 (ja) 2010-01-29 2013-12-18 日本電信電話株式会社 光変調信号生成装置及び光変調信号生成方法
JP5739758B2 (ja) 2011-07-21 2015-06-24 ルネサスエレクトロニクス株式会社 メモリコントローラ及びsimdプロセッサ

Also Published As

Publication number Publication date
JP2014526722A (ja) 2014-10-06
US9996500B2 (en) 2018-06-12
TW201324361A (zh) 2013-06-16
WO2013046475A1 (en) 2013-04-04
TWI549061B (zh) 2016-09-11
US20140237214A1 (en) 2014-08-21

Similar Documents

Publication Publication Date Title
US6341318B1 (en) DMA data streaming
KR101572204B1 (ko) Dma 벡터 버퍼
US8601169B1 (en) Method and apparatus for a multi-engine descriptor controller for distributing data processing tasks across the engines
JPS62208158A (ja) マルチプロセツサシステム
JP5829331B2 (ja) Simdプロセッサシステムにおいて複数の対象領域(roi)を同時並列的にデータ転送するための装置
US20110173416A1 (en) Data processing device and parallel processing unit
US20060265534A1 (en) Data transfer device which executes DMA transfer, semiconductor integrated circuit device and data transfer method
US12111778B2 (en) Image processing accelerator
US10031784B2 (en) Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines
US8156259B2 (en) Memory data transfer method and system
US20210191729A1 (en) System and method for high throughput in multiple computations
WO1999063751A1 (en) Low-power parallel processor and imager integrated circuit
US20060259657A1 (en) Direct memory access (DMA) method and apparatus and DMA for video processing
US8412862B2 (en) Direct memory access transfer efficiency
JP6294732B2 (ja) データ転送制御装置及びメモリ内蔵装置
EP2199919B1 (en) Method for processing data using triple buffering
CN112506815B (zh) 数据传输方法和数据传输装置
JP2006139766A (ja) 情報処理装置
CN1910562A (zh) 经由流动id方法的dmac发布机制
WO2016051435A1 (en) Data transfer apparatus and microcomputer
JP2752902B2 (ja) ベクトル処理装置
JP2616116B2 (ja) データ処理装置
Seidner Improved low-cost FPGA image processor architecture with external line memory
JP2019139406A (ja) データ処理装置
JP3372873B2 (ja) 主記憶メモリのプリフェッチ機構を備えたマイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140320

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150513

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151021

R150 Certificate of patent or registration of utility model

Ref document number: 5829331

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150