Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7639832B2 - 情報処理装置、画像処理ユニット、方法及びプログラム - Google Patents
[go: Go Back, main page]

JP7639832B2 - 情報処理装置、画像処理ユニット、方法及びプログラム - Google Patents

情報処理装置、画像処理ユニット、方法及びプログラム Download PDF

Info

Publication number
JP7639832B2
JP7639832B2 JP2022575295A JP2022575295A JP7639832B2 JP 7639832 B2 JP7639832 B2 JP 7639832B2 JP 2022575295 A JP2022575295 A JP 2022575295A JP 2022575295 A JP2022575295 A JP 2022575295A JP 7639832 B2 JP7639832 B2 JP 7639832B2
Authority
JP
Japan
Prior art keywords
data
column
memories
memory
line
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
JP2022575295A
Other languages
English (en)
Other versions
JP2023528933A (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
Publication of JP2023528933A publication Critical patent/JP2023528933A/ja
Application granted granted Critical
Publication of JP7639832B2 publication Critical patent/JP7639832B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/0083Arrangements for transferring signals between different components of the apparatus, e.g. arrangements of signal lines or cables
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/21Intermediate information storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Image Input (AREA)

Description

本開示は、情報処理装置、画像処理ユニット、情報処理方法、および非一時的なコンピュータ可読媒体に関する。
ロボット、インテリジェント車両、監視、検査システムなどのようなリアルタイムビジョンシステムには、画像処理システム(IPシステム)が搭載されている。
画像処理システムのハードウェアアーキテクチャは非特許文献1(NPL1)で説明されている。非特許文献1で言及されているハードウェアアーキテクチャは、画像処理システムのエネルギー効率の良いハードウェアアーキテクチャであり、非特許文献1では特徴抽出操作の実行が提案されている。
"FIXYNN: EFFICIENT HARDWARE FOR MOBILE COMPUTER VISION VIA TRANSFER LEARNING" Paul N. Whatmough, Chuteng Zhou, Patrick Hansen, Shreyas Kolala Venkataramanaiah, Jae-sun Seo, Matthew Mattina, Proceedings of the 2nd SysML Conference, Palo Alto, CA, USA, 2019.
通常のIPシステムは、画像処理ロジック(IPL)の上流にあるラインバッファを備える。一般に、大きなサイズのラインバッファは、並列処理によるスループットの向上に役立つ。しかしながら、リアルタイムアプリケーションにおけるIPシステムのラインバッファのハードウェアアーキテクチャは、大きなシリコン領域を必要とし、望ましくない。
非特許文献1では、ハードウェアアーキテクチャは、ラインバッファのハードウェアアーキテクチャが大きな領域を占有するため、面積効率が良くないという問題があった。
本開示の目的は、回路領域を削減することができる情報処理装置、画像処理ユニット、情報処理方法および非一時的なコンピュータ可読媒体を提供することにある。
第1の例の態様では、情報処理装置は、入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、1つのメモリを選択することで、選択されたメモリから1列のデータの一部を取得するように構成された複数のマルチプレクサと、1列のデータの一部を格納す1つのメモリを選択するように構成されたコントローラを備える。
第2の例の態様では、画像処理ユニットは、入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、1つのメモリを選択することで、選択されたメモリから1列のデータの一部を取得するように構成された複数のマルチプレクサと、1列のデータの一部を格納す1つのメモリを選択するように構成されたコントローラを備える。
第3の例の態様では、情報処理方法は、入力画像データの1列のデータを複数のメモリ全体に格納し、1つのメモリを選択することで、選択されたメモリから1列のデータの一部を取得し、1列のデータの一部を格納す1つのメモリを選択することを備える。
第4の例の態様は、入力画像データの1列のデータを複数のメモリ全体に格納し、1つのメモリを選択することで、選択されたメモリから1列のデータの一部を取得し、1列のデータの一部を格納す1つのメモリを選択することをコンピュータに実行させるプログラムを格納する非一時的なコンピュータ可読媒体である。
本開示によれば、回路領域を削減することができる情報処理装置、画像処理ユニット、情報処理方法および非一時的なコンピュータ可読媒体を提供することができる。
図1は、画像処理システム100の構成を示す構成図である。 図2は、画像処理ユニット120の構成を示す構成図である。 図3は、画像ピクセルデータ111の構成を示す図である。 図4は、ラインバッファ130の構成を示す構成図である。 図5は、セレクタ132とシフトレジスタ133を示す構成図である。 図6は、セレクタ132とラインバッファコントローラ134を示す構成図である。 図7は、ラインバッファ230の構成を示す構成図である。 図8は、ラインバッファ130のSRAMメモリラインにおけるデータフローのフェーズに関するタイミング図である。 図9は、各フェーズにおけるSRAMメモリライン235の状態のリストである。 図10は、各フェーズでマルチプレクサ236によって選択されたSRAMメモリライン235のリストである。 図11は、ラインバッファ330の構成を示す構成図である。 図12は、セレクタ332とラインバッファコントローラ334の接続を示す構成図である。 図13は、本開示の実施の形態1の構成を示す構成図である。 図14は、本開示の実施の形態2の構成を示す構成図である。 図15は、ラインバッファ30の構成を示す構成図である。 図16は、セレクタ32とシフトレジスタ33を示す構成図である。 図17は、セレクタ32とラインバッファコントローラ34を示す構成図である。 図18は、参照ラインバッファとラインバッファ30のパラメータのリストである。 図19は、参照ラインバッファとラインバッファ30のサイズのリストである。 図20は、ラインバッファ40の構成を示す構成図である。 図21は、ラインバッファ40のSRAMメモリラインにおけるデータフローのフェーズに関するタイミング図である。 図22は、各フェーズでのSRAMメモリライン45の状態のリストである。 図23は、各フェーズでマルチプレクサ46によって選択されたSRAMメモリライン45のリストである。 図24は、実施形態にかかる情報処理装置の構成図である。
(IPシステムの概要)
本開示による実施形態を説明する前に、参照IPシステムの概要を、図1から図12を参照して説明する。
図1にIPシステム100の構成を示す。ソース画像110に対して画像処理タスクを実行するIPシステム100のブロック図である。IPシステム100は、ソース画像110を入力として取り込み、1つ以上の画像処理動作を行い、目的画像112を出力する。
画像処理システム(以下、IPシステム)100は、図1に示すように、1つ以上の画像処理ユニット120(IPU)を有する。IPU120は、画像ピクセルデータ111を入力として取り込み、処理する。その後、処理したデータを次のIPU120に出力する。画像ピクセルデータ111は、前のIPU120で処理されたものか、ソース画像110そのものである。
IPU120のブロック図を図2に示す。IPU120は、画像処理ロジック(IPL)121とラインバッファ130を有する。IPL121は、画像変更動作、画像特徴抽出動作などを含む、いくつかの種類の画像処理動作を行うことができる。画像変更動作には、画像ピクセルデータ111に対する色補間、画像鮮鋭化、色補正などの動作が含まれていてもよい。画像特徴抽出動作には、画像ピクセルデータ111に対する畳み込み、逆畳み込み(deconvolution)などの動作が含まれていてもよい。画像特徴抽出動作のシーケンスがソース画像110に対して実行される場合、IPシステム100は畳み込みニューラルネットワークモデルとも呼ばれる。
最初のIPU120の入力となる画像ピクセルデータ111がソース画像110であり、残りのIPU20の入力となる画像ピクセルデータ111が中間画像ピクセルデータである。特定のIPU120における高さH、幅Wの画像ピクセルデータ111において、IPL121はK*Kのピクセルデータを一度に処理し、ストライドSで画像ピクセルデータ111にわたってスライドするが、ここでカーネルサイズKとストライドサイズSは1以上であって、H及びW以下である。図3は、画像ピクセルデータ111の構成を示す。画像ピクセルデータ111はH個の列のピクセルで構成されており、各ピクセル列の幅はWである。図3では、Kは3に等しく、Hより小さい。
ラインバッファ130の主なタスクは、画像ピクセルデータ111をバッファすることである。IPL121によって画像ピクセルデータ111に対する画像処理動作が実行される間、一部またはすべてのピクセルデータがIPL121によって再利用される。ピクセルデータの再利用を容易にするため、ラインバッファ130は画像ピクセルデータ111をバッファする。
図4に示すように、ラインバッファ130は、バッファメモリ131、セレクタ132、シフトレジスタ133、ラインバッファコントローラ134を有する。ラインバッファ130のバッファメモリ131の機能は、画像ピクセルデータ111を格納することである。バッファメモリ131は、SRAM(Static Random-Access Memory)、シフトレジスタなどのメモリ要素で構成することができる。バッファメモリ131は、1番目からM番目までの複数のバッファメモリライン135を含む。各バッファメモリライン135はSRAMを含んでもよい。
一般的にラインバッファ130の構成では、1つのバッファメモリライン135が画像ピクセルデータ111の1列のピクセルを格納する。1列のピクセルは、書き込みクロックを使用してバッファメモリに書き込まれ、読み出しクロックを使用して読み取られる。
特定のIPU120では、ラインバッファ130内の各バッファメモリライン135のサイズは、ピクセルデータの観点からはWに等しい。バッファメモリライン135の数は、次のIPL121のKと次のIPUのIPLのSの合計に等しい。図4にはM(=K+S)個のバッファメモリライン135がある。ラインバッファ130のバッファメモリ131に格納されているピクセルデータの総数は、バッファメモリ131の合計サイズとも呼ばれ、WとK及びSの合計との積、すなわちW*(K+S)(=W*M)に等しい。
このような大容量バッファメモリの問題は、チップ上の大容量バッファメモリが必要とするシリコン領域が非常に大きいことである。一般に、バッファメモリ131の占有面積を削減するためには、デュアルポートSRAMメモリよりもシングルポートSRAMメモリの方が望ましい。
セレクタ132はマルチプレクサ136を複数有する。マルチプレクサ136の機能は、その時の対応する選択信号に基づいて、複数のバッファメモリライン135のピクセルから、1つのバッファメモリライン135だけのピクセルを選択することである。このため、(K+S)x1は、ラインバッファ130で使用されるマルチプレクサ136のサイズである。ラインバッファ130のマルチプレクサ136の数はKに等しい。図3に示すように、すべてのK個のマルチプレクサ136は、すべてのK+S(=M)個のバッファメモリライン135から入力を受けている。
すべてのK個のマルチプレクサ136は、K個のバッファメモリライン135のピクセルのみを出力する(すなわち、1個のマルチプレクサに1個のバッファメモリラインとなる)。したがって、すべてのマルチプレクサ136から出力されるピクセルの総数はK個のピクセルとなる。マルチプレクサ136の出力として与えられるK個のピクセルは、シフトレジスタ133で蓄積される。
図5に示すように、シフトレジスタ133は、出力ピクセルをK*Kのピクセルとして格納する。シフトレジスタ133からのK*KのピクセルがIPL121で読み出されることにより、画像処理動作がなされる。シフトレジスタ133のサイズは、ピクセルデータの観点ではK*Kに等しい。
図4に戻ると、ラインバッファコントローラ134は、すべてのバッファメモリライン135に対して、AL_1からAL_Mまでのアドレスライン信号を生成する。ラインバッファコントローラ134が生成するアドレスライン信号の総数は、バッファメモリライン135の数、すなわちKとSの和(=M)に等しい。さらに、各アドレスライン信号はアドレス0からW-1を示す。
さらに、ラインバッファコントローラ134は、図3に示すように、すべてのバッファメモリライン135に対して、RW_1からRW_Mまでの読み出し信号を生成する。各読み出し信号は、各バッファメモリライン135の読み出しまたは書き込み状態を決定する。ラインバッファコントローラ134が生成する読み出し信号の総数は、バッファメモリライン135の数、すなわちMに等しい。
また、ラインバッファコントローラ134は、ラインバッファ130内の全マルチプレクサ136のための選択信号(制御信号)Sを生成する。ラインバッファコントローラ134が生成する選択信号Sの総数は、マルチプレクサ136の数、すなわちKに等しい。さらに具体的には、図6に示すように、ラインバッファコントローラ134は、各マルチプレクサ136に選択信号S_1~S_Kを送信する。
前述のように、ラインバッファ130の入力からバッファメモリ131、セレクタ132、シフトレジスタ133を経てラインバッファ130の出力に至るまでの画像ピクセルデータ111のフローに要求される必要な信号は、ラインバッファコントローラ134によって生成される。
バッファメモリライン全体の読み出しまたは書き込みの合計時間を1フェーズと呼ぶ。1フェーズのサイクル数は、バッファメモリライン全体の読み出しまたは書き込みに必要なサイクル数に等しい。フェーズの総数はバッファメモリラインの数、すなわちK+S(=M)に等しい。
フェーズの発生はラウンドロビン方式で行われる。特定のフェーズでラインバッファコントローラ134が生成する信号の値は、その特定のフェーズが繰り返されたときに同じとなる。バッファメモリライン135が特定のサイクルで高レベルの読み出し信号を有する場合、バッファメモリライン135は読み出し状態にあると言われ、読み出し信号が低レベルの場合、バッファメモリライン135は書き込み状態にあると言われる。
最初に、画像ピクセルデータ111の最初の列がバッファメモリライン135のいずれか1つに書き込まれる。次に、画像ピクセルデータ111の連続する列が、バッファメモリライン135のいずれかに各フェーズで書き込まれる。画像ピクセルデータ111のK個の列がバッファメモリ131に書き込まれるとすぐに、セレクタ132はK個の各バッファメモリライン135からK個のピクセルを出力する。
バッファメモリ131に書き込まれた画像ピクセルデータ111の最初のピクセルからバッファメモリ131から読み出された最初のピクセルまでのサイクル数をバッファメモリ131のレイテンシと呼ぶ。レイテンシサイクル数が少ないほど、シフトレジスタ133がK*Kのピクセルを蓄積するのが早く、IPL121が画像処理動作を行うのが早くなる。前述のように、画像ピクセルデータを格納するために使用されるバッファメモリは、SRAMベースのバッファメモリ、シフトレジスタベースのバッファメモリなどにすることができる。
K=3、S=1(すなわち、M=4)のラインバッファの構成例のサンプルを図7に示す。ラインバッファ230の構成は、シングルポートSRAMメモリベースのバッファメモリ231、セレクタ232、ピクセルデータの観点でサイズ3x3のシフトレジスタ233、およびラインバッファコントローラ234を有する。
バッファメモリ231は、4個のSRAMメモリライン235A~235Dを含む。さらに、セレクタ232は、3個の4x1マルチプレクサ236A~236Cを含む。
最初の3つのフェーズでは、この例のラインバッファ230は、3個のSRAMメモリライン235A、235B、および235Cの画像ピクセルデータ211の3列をバッファする。3個のSRAMメモリラインに3列(つまり、各SRAMメモリラインに1列)書き込むために必要なサイクル数は3*Wサイクル、すなわち3フェーズである。
図8に示すように、第1フェーズでは、画像ピクセルデータ211の第1列全体がSRAM-1メモリライン235Aに書き込まれる。同様に、第2及び第3フェーズでは、図8に示すように、画像データの第2及び第3列がそれぞれSRAM-2 235BとSRAM-3 235Cのメモリラインに書き込まれる。
第3フェーズでは、画像ピクセルデータ211の第3列の1つのピクセルをSRAM-3メモリライン235Cに書き込んだ1つのサイクルの後、マルチプレクサ236が読み出すために必要な全ての3つのピクセル(画像ピクセルデータ211の3列のそれぞれから1つのピクセル)がSRAMメモリライン235で利用可能となる。しかしながら、シングルポートSRAMメモリベースのバッファメモリが使用され、SRAM-3メモリライン235Cは書き込み状態であるため、第3フェーズのマルチプレクサではSRAM-3メモリライン235Cからの読み出し動作を開始できない。
3*Wサイクル後の次のサイクル、すなわち第4フェーズから、3個のマルチプレクサが、ラインバッファ230内の3個のSRAMメモリライン、すなわちSRAM-1 235A、SRAM-2 235B、およびSRAM-3 235Cメモリラインから3つのピクセルを出力する。同じフェーズで、S=1であるため、ラインバッファ230はSRAM-4メモリライン235D内の画像ピクセルデータ211の次の列をバッファする。
すべてのフェーズで、対応するSRAMメモリライン全体が書き込まれるまで、任意の1つのSRAMメモリラインは書き込み状態のままになる。図9に、各フェーズのラインバッファ230のSRAMメモリライン235の状態を示す。図9において、「R」は読み出し状態、「W」は書き込み状態を意味する。第1フェーズでは、SRAM_1メモリライン235Aは書き込み状態であり、SRAMメモリライン235B~235Dは読み出し状態である。第2フェーズでは、SRAM_2メモリライン235Bは書き込み状態であり、SRAMメモリライン235A、235C、235Dは読み出し状態である。第3フェーズでは、SRAM_3メモリライン235Cは書き込み状態であり、SRAMメモリライン235A、235B、235Dは読み出し状態である。第4フェーズでは、SRAM_4メモリライン235Dは書き込み状態であり、SRAMメモリライン235A~235Cは読み出し状態である。
書き込み状態では、ラインバッファ230のラインバッファコントローラ234で読み出し信号が生成される。アドレスライン信号は、それぞれのSRAMメモリラインの最初のアドレスから最後のアドレスに送られる。フェーズの総数は4に等しい。マルチプレクサの数は、図7に示すように3に等しい。
図10は、マルチプレクサが連続フェーズで選択したSRAMメモリライン235を示している。図10において、「MUX1」はマルチプレクサ236A、「MUX2」はマルチプレクサ236B、「MUX3」はマルチプレクサ236Cを意味する。第1フェーズでは、マルチプレクサ236AがSRAM_2メモリライン235Bを選択し、マルチプレクサ236BがSRAM_3メモリライン235Cを選択し、マルチプレクサ236CがSRAM_4メモリライン235Dを選択する。第2フェーズでは、マルチプレクサ236AがSRAM_3メモリライン235Cを選択し、マルチプレクサ236BがSRAM_4メモリライン235Dを選択し、マルチプレクサ236CがSRAM_1メモリライン235Aを選択する。第3フェーズでは、マルチプレクサ236AがSRAM_4メモリライン235Dを選択し、マルチプレクサ236BがSRAM_1メモリライン235Aを選択し、マルチプレクサ236CがSRAM_2メモリライン235Bを選択する。第4フェーズでは、マルチプレクサ236AがSRAM_1メモリライン235Aを選択し、マルチプレクサ236BがSRAM_2メモリライン235Bを選択し、マルチプレクサ236CがSRAM_3メモリライン235Cを選択する。このようにして、各マルチプレクサはSRAMメモリラインの1つを順番に選択する。
シフトレジスタ233は、マルチプレクサから3つのピクセルデータを入力として取り込む。シフトレジスタ233は3x3のピクセルを蓄積し、IPL121によって読み出される。S=1のストライドで、IPL121はシフトレジスタ233から3x3のピクセルを連続的に読み出す。ストライドSは画像ピクセルデータのストライドであり、特に次のレイヤのストライドである。次のレイヤはシフトレジスタ233に接続されたものである。つまり、このレイヤは複数のマルチプレクサ236の出力に接続されている。ラインバッファ230の構成では、3*Wサイクルは、マルチプレクサのうちの1つが、SRAMラインメモリ235の1つからピクセルデータを出力するまでのレイテンシ時間である。
図11と12は、IPUで使用されているラインバッファの構成の別の変形例を示している。図11のラインバッファ330には、図4のラインバッファ130とは異なり、シフトレジスタが存在しない。IPL321は、図11と12に示すように、マルチプレクサを介してラインバッファ330のバッファメモリ331からK*Kのピクセルデータを直接読み取る。
バッファメモリ331は、複数のバッファメモリライン335A、335B、335Cを有する。ラインバッファ330の各バッファメモリラインの幅は、ピクセルデータの観点からW/Kに等しい。バッファメモリラインの数は、図11の「F」で示されており、S*KとK*Kの和、すなわち(K*K+S*K)に等しい。
ラインバッファ330のバッファメモリ331に格納されているピクセルデータの総数は、バッファメモリ331の合計サイズとも呼ばれ、WとK及びSの合計との積、すなわち、W*(K+S)に等しい。ラインバッファ230のバッファメモリのサイズは、ラインバッファ330のバッファメモリのサイズと同じである。
ラインバッファはIPシステムにおけるキーロジックの一つであり、ラインバッファ230または330は、IPシステムにおいて画像ピクセルデータをバッファするために使用される。
この構成の第1の問題は、IPUの中間画像データをバッファするために使用されるラインバッファの構成が、IPシステムで大きなシリコン領域を必要とすることである。つまり、この構成は面積効率が良くない。大きなシリコン領域を製造するためのコストは大きく、そのような領域は大きな電力予算を必要とする。第1の問題の理由は、バッファメモリが画像ピクセルデータの1列の全幅を格納することで、非常に大きな領域を必要とするためである。
具体的には、1つのレイヤにラインバッファが形成され、それがApplication Specific Integrated Circuit(ASIC)内の隣接する2つのレイヤを接続しており、次のレイヤのカーネルサイズがK、次のレイヤの入力フレームのmin(高さ、幅)がD、次のレイヤのストライドがS、前のレイヤのチャネルサイズがCに等しいとする。この場合、ピクセルに関しては、ラインバッファ内の1つのSRAMラインのサイズがD*C、ラインバッファ内のSRAMラインの合計サイズがD*C*(K+S)となる。そのため、ASIC内でこのようなサイズのラインバッファが占有する領域が大きく、このようなASICはコストがかかる。
この構成の第2の問題は、IPシステムのラインバッファのレイテンシが大きいことである。第2の問題の理由は、すべてのIPUで、十分な中間画像ピクセルデータがラインバッファにバッファされるまで、後続のIPLが処理の開始を待機するためである。
以下、添付図面を参照して、本開示の実施形態を詳細に説明する。これらの実施形態は、ロボット、インテリジェント車両、監視、検査システムなどのような、IPシステムを展開するシステムおよび装置に適用できる。
(実施の形態1)
まず、実施の形態1にかかる情報処理装置1を、図13を参照して説明する。
本開示の実施の形態1である図13を参照すると、情報処理装置1は、IPU10を含む。情報処理装置1は、例えば、コンピュータ又は機械である。IPU10は、例えばチップ回路又は集積回路であり、入力された画像データを処理する。IPU10は、複数のメモリ11A及び11B、複数のマルチプレクサ12A及び12B、コントローラ13を有する。入力画像データは、情報処理装置1の内部または外部に格納することができる。
メモリ11A及び11Bは、入力画像データの1列のデータを全体として格納するように構成される。つまり、各メモリには、入力画像の1列未満のデータが格納される。この実施形態では、「入力画像の1列のデータ」は、列の長さが入力画像データの幅Wまたは入力画像データの高さHのいずれかであってもよいことを意味する。
たとえば、メモリ11Aと11Bのサイズの合計が1であってもよい。メモリ11Aとメモリ11Bのサイズは同じでもよい。つまり、各メモリ11A、11Bは、入力画像の1列のデータの半分を格納してもよい。しかしながら、メモリ11Aとメモリ11Bのサイズは等しくなくてもよい。例えば、メモリ11Aは入力画像の1列のデータの2/3を格納し、メモリ11Bは入力画像の1列のデータの1/3を格納してもよい。
マルチプレクサ12Aおよび12Bは、1つのメモリを選択することで、選択されたメモリから1列のデータの一部を取得するように構成される。コントローラ13は、1列のデータの一部を格納す1つのメモリを選択するように構成されている。例えば、コントローラ13は、メモリ11Aおよび11Bに信号を送信して、それらを書き込み状態にする。
さらに具体的には、入力画像データの1列のデータを半分に、すなわち、2つの等しいデータ部分に分割し、コントローラ13の制御により、1つのデータ部分をメモリ11Aおよび11Bのそれぞれに格納させることができる。しかしながら、1列のデータの分割方法はこの例に限らない。たとえば、入力画像データの1列のデータが、1列のデータの2/3の部分と、1列のデータの1/3の別の部分に分割されてもよい。
次に、本実施形態の効果について説明する。前述のように、参照IPシステムでは、K+S個のバッファメモリラインがあり、バッファメモリの合計サイズがW*(K+S)に等しく、Kはカーネルサイズ、Sはストライドサイズ、Wは画像ピクセルデータの幅(すなわち、1つのバッファメモリのサイズ)である。しかしながら、実施の形態1では、1つのメモリのサイズは、幅Wまたは高さH未満である。Kについては、メモリの数を増やす必要があるが、Sについては、この限りではない。結論として、実施の形態1のメモリの合計サイズは、参照IPシステムのメモリの合計サイズよりも小さくすることができる。そのため、IPU10の回路領域の削減に役立つ。
例えば、入力画像データの1列のデータが2分割、すなわち、2つの等しいデータ部分に分割され、その1つのデータ部分がメモリ11Aおよび11Bのそれぞれに格納され、メモリ11Aおよび11Bのサイズが両方ともW/2である場合、メモリの合計サイズは(W/2)*(2K+S)に等しくなる。参照IPシステムのバッファメモリの合計サイズと比較すると、メモリの合計サイズをD1だけ減らすことができる。
(1)D1=W*(K+S)-(W/2)*(2K+S)=W*S/2
(1)の式では、WとSの値は常に正であるため、D1は常に正である。
実施の形態1では、入力画像データの1列のデータを格納する2個のメモリ11Aおよび11Bがある。しかしながら、上記のデータを格納するメモリが2個よりも多く(3個、4個・・・)あってもよい。例えば、IPU10には3個のメモリがあり、3個のメモリのサイズの合計が1列のデータであってもよい。3個のメモリのそれぞれに、入力画像の1列のデータの1/3が格納されてもよい。しかしながら、1個のメモリに入力画像の1列のデータの半分を格納し、他の2個のメモリのそれぞれに入力画像の1列のデータの1/4を格納してもよい。1列のデータの分割方法は、これらの例に限定されない。
また、上記の効果が継続する条件では、メモリ11Aと11Bのサイズの合計が、入力画像データの1列を超えてもよい。例えば、入力画像データの1列のデータが半分、つまり2つの等しいデータ部分に分割され、1つのデータ部分が各メモリ11Aおよび11Bに格納される場合、1個のメモリのサイズはW/2から(W/2)*W*(K+S)/((2K+S)*(W/2))までであってもよい。Nが1より大きい正の整数である、N個のメモリについても同じことが言える。
情報処理装置1は、本実施形態で説明した複数のIPU10を備えていてもよい。この構成により、情報処理装置1は複雑な画像処理を行うことができる。
実施の形態1では、同一のIPU10に複数のメモリ11Aおよび11B、複数のマルチプレクサ12Aおよび12B、コントローラ13が搭載されている。しかしながら、これらの構成要素は、情報処理装置1内のいくつかのユニット又はチップに搭載されていてもよい。
(実施の形態2)
本開示の実施の形態2を、添付図面を参照して以下で説明する。
図14を参照すると、情報処理装置2はIPU20を備え、IPシステムで構成されている。IPU20は、例えばチップ回路又は集積回路であり、画像ピクセルデータ21を処理する。IPU20は、画像ピクセルデータ21を入力として取り込み、それを処理した後、処理されたデータを出力する。画像ピクセルデータ21は、前のIPUで処理されたもの、またはソース画像そのものである。
図14には、IPU20のブロック図が示される。IPU20は、IPL22とラインバッファ30を有する。IPL22は、画像変更動作、画像特徴抽出動作などを含む、いくつかの種類の画像処理動作を実行してもよい。画像変更動作には、画像ピクセルデータ21に対する色補間、画像鮮鋭化、色補正などの動作が含まれていてもよい。画像特徴抽出動作は、画像ピクセルデータ21に対する畳み込み、逆畳み込みなどの動作が含まれていてもよい。
IPU20の高さH、幅Wの画像ピクセルデータ21において、IPL22はK*Kのピクセルデータを一度に処理し、ストライドSで画像ピクセルデータ21にわたってスライドするが、ここでカーネルサイズKとストライドサイズSは1以上であって、H及びW以下である。また、Sは次のレイヤのストライドである。次のレイヤはシフトレジスタ33に接続されたものである。つまり、このレイヤは複数のマルチプレクサ36の出力に接続されている。画像ピクセルデータ21は、図3に示す画像ピクセルデータ21と同じ構成を有する。画像ピクセルデータ21は、H個の列のピクセルで構成され、各列のピクセルの幅はWである。
ラインバッファ30の主なタスクは、画像ピクセルデータ21をバッファすることである。IPL22によって画像ピクセルデータ2に対する画像処理動作が実行される間、一部またはすべてのピクセルデータがIPL22によって再利用される。ピクセルデータの再利用を容易にするため、ラインバッファ30は画像ピクセルデータ21をバッファする。
図15と16において、ラインバッファ30は、バッファメモリ31、セレクタ32、シフトレジスタ33、ラインバッファコントローラ34を有する。さらに、バッファメモリ31は、複数のバッファメモリライン35を有する。各バッファメモリライン35のサイズは、各バッファメモリライン135のサイズをNで割ったものである。セレクタ32は、複数のバッファメモリライン35を有する。画像ピクセルは、書き込みクロックを使用してバッファメモリライン35に書き込まれ、読み出しクロックを使用して読み取られる。
バッファメモリ31は、画像ピクセルデータ21を格納する。ラインバッファ30のバッファメモリ31のサイズは、W、K、Sだけでなく、パーティションNの係数にも依存する。Nの値は正の整数で、常に1より大きい。ラインバッファ30のシングルバッファメモリライン35では、格納できるピクセルデータの数は、WとNの比(すなわちW/N)の上限値に等しい。そのため、画像ピクセルデータ21の一列がN個のバッファラインに格納される。簡単のために、この実施の形態2では、前のレイヤのチャネルサイズは1に等しいが、このチャネルサイズは任意のチャネルサイズにすることができる。
バッファメモリライン35からの出力として与えられるK個のピクセルは、シフトレジスタ33によって蓄積される。シフトレジスタ33からのK*KのピクセルがIPL22で読み出されることにより、画像処理動作がなされる。シフトレジスタ33のサイズは、ピクセルデータの観点ではK*Kに等しい。
ラインバッファコントローラ34は、図15に示すように、ラインバッファ30内のすべてのバッファメモリライン35に対して、アドレスライン信号と読み出し信号を生成する。ラインバッファコントローラ34が生成するAL_1からAL_Mまでのアドレスライン信号の総数は、バッファメモリライン35の数、すなわちM=N*K+Sと等しい。同様に、ラインバッファコントローラ34が生成するRW_1からRW_Mまでの読み出し信号の総数は、バッファメモリラインの数、すなわちM=N*K+Sと等しい。それぞれの読み出し信号は、各バッファメモリライン35の読み出し又は書き込み状態を決定する。
さらに、ラインバッファコントローラ34は、バッファメモリライン35ごとに選択信号(制御信号)を生成する。ラインバッファコントローラ34が生成する選択信号の総数は、マルチプレクサ36の数、すなわちKに等しい。また、各アドレスライン信号は、分割された一列の画像データを格納するためのアドレス0から(W/N)-1を示す。
マルチプレクサ36の機能は、対応する選択信号に基づいて、複数のバッファメモリライン35のピクセルから一度に1つだけのバッファメモリラインのピクセルを選択することである。各マルチプレクサのサイズは(N*K+S)x1である。マルチプレクサの数は参照例と変わらないものであり、すなわちKに等しい。
すべてのK個のマルチプレクサ36は、すべてのN*K+S個のバッファメモリラインからの入力を有する。K個のマルチプレクサ36は、K個のバッファメモリライン35からのピクセルのみを出力する(すなわち、1個のマルチプレクサ36に1個のバッファメモリライン35となる)。したがって、すべてのマルチプレクサ36から合計でKピクセルが出力される。
ラインバッファ30の入力からバッファメモリ31、セレクタ32、シフトレジスタ33を経由してラインバッファ30の出力までの画像ピクセルデータ21のフローに要求される必要な信号は、ラインバッファコントローラ34が生成する。バッファメモリライン35全体の読み出しまたは書き込みの合計時間を1フェーズと呼ぶ。ラインバッファ30のフェーズ数は、バッファメモリライン35の数、すなわちM=N*K+Sに等しい。1フェーズのサイクル数は、バッファメモリライン全体の読み出しまたは書き込みに必要なサイクル数、すなわち(W/N)に等しい。
フェーズの発生はラウンドロビン方式で行われる。特定のフェーズでラインバッファコントローラ34が生成する信号の値は、その特定のフェーズが繰り返されたときに同じとなる。
バッファメモリライン35の数は、前のIPUのIPL22のSと、次のIPL22のNとKの積と、の合計(すなわちN*K+S)に等しい。したがって、ラインバッファ30のバッファメモリ31に格納されているピクセルデータの総数は、バッファメモリ31の合計サイズとも呼ばれ、W/NとS+(N*K)の積に等しい(すなわち(W/N)*(N*K+S))。
ラインバッファ30のバッファメモリ31のサイズとラインバッファ130のバッファメモリ131のサイズをピクセルデータについて比較すると、バッファメモリのサイズをDSだけ減らすことができる。
(2)DS=W*(K+S)-(W/N)*(N*K+S)=W*S*(1-(1/N))
(2)の式では、WとSの値は常に正であり、パーティションNの係数は常に1より大きい正の整数である。したがってDSは常に正である。よって、N、S、K、Wのすべての値について、ラインバッファ30のバッファメモリ31のサイズは、ラインバッファ130のバッファメモリ131のサイズより常に小さい。
図18に、ラインバッファ30のバッファメモリ31のパラメータと参照ラインバッファ130のバッファメモリ131のパラメータの関係を示す。図18に示すように、バッファメモリ131のK、W、Sは、それぞれバッファメモリ31のN*K、W/N、Sに対応する。また、バッファメモリ131のサイズはW*(K+S)であり、これは、バッファメモリ31のサイズである(W/N)*(N*K+S)に対応する。
図19に、ラインバッファ30のバッファメモリ31のサイズと参照ラインバッファ130のバッファメモリ131のサイズとの比較を、いくつかのサンプル値とともに示す。図19には4つの例がある;(a)K=3、S=1、W=100、N=2,(b)K=3、S=1、W=100、N=4,(c)K=3、S=2、W=100、N=2,(d)K=5、S=1、W=100、N=2である。前述のように、バッファメモリ31のサイズは(W/N)*(S+N*K)で計算されるのに対し、バッファメモリ131のサイズはW*(K+S)で計算される。
(a)では、バッファメモリ31のサイズが350であるのに対し、バッファメモリ131のサイズは400である。前者のサイズは後者の87.50%に縮小されている。(b)では、バッファメモリ31のサイズが325であるのに対し、バッファメモリ131のサイズは400である。前者のサイズは後者の81.25%に縮小されている。(c)では、バッファメモリ31のサイズが400であるのに対し、バッファメモリ131のサイズは500である。前者のサイズは後者の80.00%に縮小されている。(d)では、バッファメモリ31のサイズが550であるのに対し、バッファメモリ131のサイズは600である。前者のサイズは後者の91.67%に縮小される。これらの例から、Nの値が大きいほど、ラインバッファ30のバッファメモリ31のサイズが小さくなるといえる。
K=3、S=1、N=2のラインバッファのサンプル例を図20に示す。ラインバッファ40の構成は、シングルポートSRAMメモリベースのバッファメモリ41、セレクタ42、ピクセルデータについてサイズ3x3のシフトレジスタ43、およびラインバッファコントローラ44を有する。バッファメモリ41はSRAMメモリライン45Aから45Gを有し、セレクタ42は3個の7x1マルチプレクサ46Aから46Cを有する。
ラインバッファ40は、6フェーズにおいて、6個のSRAMメモリラインで3列の画像ピクセルデータ21をバッファする。各フェーズはW/2サイクルである。6個のSRAMメモリラインに3列書き込む(つまり、2つのSRAMメモリラインに1列が書き込まれる)ために必要なサイクル数は、6*W/2サイクル、すなわち6フェーズである。
図21に、ラインバッファ40の各SRAMメモリライン45のデータフローのフェーズについてのタイミング図を示す。第1フェーズでは、画像ピクセルデータ21の第1列の左半分がSRAM-1メモリライン45Aに書き込まれる。第2フェーズでは、画像ピクセルデータ21の第1列の右半分がSRAM-2メモリライン45Bに書き込まれる。図21において、「1L(w)」は前者の状態、「1R(w)」は後者の状態を意味する。
第3フェーズでは、画像ピクセルデータ21の第2列の左半分がSRAM-3メモリライン45Cに書き込まれる。第4フェーズでは、画像ピクセルデータ21の第2列の右半分がSRAM-4メモリライン45Dに書き込まれる。図21において、「2L(w)」は前者の状態、「2R(w)」は後者の状態を意味する。
第5フェーズでは、画像ピクセルデータ21の第3列の左半分がSRAM-5メモリライン45Eに書き込まれる。図21における「3L(w)」はこの状態を意味する。第5フェーズでは、画像ピクセルデータ21の第3列の1つのピクセルを書き込む1サイクルの後、読み出すマルチプレクサに必要なすべての3つのピクセル(画像ピクセルデータ21の3列のそれぞれから1つずつ)がSRAMメモリラインで利用可能となる。しかしながら、シングルポートSRAMメモリベースのバッファメモリが使用され、SRAM-5メモリライン45Eは書き込み状態であるため、第5フェーズのマルチプレクサではSRAM-5メモリライン45Eからの読み出し動作を開始できない。第1フェーズから第5フェーズまでは、SRAMメモリラインの1つがアクティブモードで、他のラインは非アクティブモードである。
第6フェーズでは、画像ピクセルデータ21の第3列の右半分がSRAM-6メモリライン45Fに書き込まれる。図21における「3R(w)」はこの状態を意味する。さらに、第6フェーズの開始とともに、3個のSRAMメモリライン45A、45C、45Eが読み出し状態になり、その3個のメモリライン45が同時に3つのピクセルを出力する。図21において、「1L(r)」、「2L(r)」、「3L(r)」はこれらの状態を意味する。また、「1L(r)」、「2L(r)」、「3L(r)」は、分割された1列のデータにおいて、同じ左側である。このため、ラインバッファ40のSRAMメモリラインのレイテンシサイクルは5*W/2サイクルとなる。第6フェーズでは、SRAMメモリライン45A、45C、45E、44Fがアクティブモードで、その他は非アクティブモードである。第6フェーズでは、画像ピクセルデータの同一列(第3列)のピクセルデータの読み出しと書き込み動作を重複させることができる。
第7フェーズでは、画像ピクセルデータ21の第4列の左半分がSRAM-7メモリライン45Gに書き込まれる。図21における「4L(w)」はこの状態を意味する。さらに、第7フェーズの開始とともに、3個のSRAMメモリライン45B、45D、45Fが読み出し状態となり、その3個のメモリライン45が同時に3つのピクセルを出力する。図21において、「1R(r)」、「2R(r)」、「3R(r)」はこれらの状態を意味する。また、「1R(r)」「2R(r)」「3R(r)」は、分割された1列のデータにおいて、同じ右側である。第7フェーズでは、メモリライン45B、45D、45F、45Gはアクティブモードで、その他は非アクティブモードである。そのため、ラインバッファコントローラ34は、分割された1列のデータを1フェーズで取得し、1列のデータを2(N)フェーズで取得するように、マルチプレクサ36用の選択信号を生成する。
次の第1フェーズでは、画像ピクセルデータ21の第4列の右半分がSRAM-1メモリライン45Aに書き込まれる。図21における「4R(w)」はこの状態を意味する。さらに、第1フェーズの開始とともに、3個のSRAMメモリライン45C、45E、45Gが読み出し状態となり、その3個のメモリライン45は3つのピクセルを出力する。図21において、「2L(r)」、「3L(r)」、「4L(r)」はこれらの状態を意味する。第1フェーズでは、画像ピクセルデータの同一列(第4列)のピクセルデータの読み出しと書き込み動作を重複させることができる。
次の第2フェーズでは、SRAM-2メモリライン45Bが書き込み状態になる。図21における「5L(w)」はこの状態を意味する。さらに、第2フェーズの開始とともに、3個のSRAMメモリライン45A、45D、45Fが読み出し状態となり、その3個のメモリライン45が3つのピクセルを出力する。図21において、「2R(r)」、「3R(r)」、「4R(r)」はこれらの状態を意味する。
前述のように、バッファメモリ31のバッファメモリライン35を分割することで、ラインバッファコントローラ34に対して、画像ピクセルデータ21の同一列のピクセルデータの読み出しと書き込みの動作を重複させるための柔軟性が提供される。読み出しと書き込みの動作が重複するという利点により、ラインバッファ30で必要なバッファメモリ31の合計サイズは、ラインバッファ130で必要なバッファメモリ131の合計サイズよりも小さくなる。さらに、画像ピクセルデータ21の同一列のピクセルデータの重複する読み出しおよび書き込み動作の別の利点は、マルチプレクサがバッファメモリラインを読み取るために待機するのに必要なサイクル数が減少することである。
図22は、各フェーズにおけるラインバッファ40内のSRAMメモリライン45の状態を示している。図22において、「R」は読み出し状態、「W」は書き込み状態を意味する。第1フェーズでは、SRAM_1メモリライン45Aは書き込み状態であり、他のSRAMメモリラインは読み出し状態である。第2フェーズでは、SRAM_2メモリライン45Bは書き込み状態であり、他のSRAMメモリラインは読み出し状態である。第3フェーズでは、SRAM_3メモリライン45Cは書き込み状態であり、他のSRAMメモリラインは読み出し状態である。第4フェーズでは、SRAM_4メモリ45Dは書き込み状態であり、他のSRAMメモリラインは読み出し状態である。第5フェーズでは、SRAM_5メモリ45Eは書き込み状態であり、他のSRAMメモリラインは読み出し状態である。第6フェーズでは、SRAM_6メモリ45Fは書き込み状態であり、他のSRAMメモリラインは読み出し状態である。第7フェーズでは、SRAM_7メモリ45Gは書き込み状態であり、他のSRAMメモリラインは読み出し状態である。
書き込み状態では、ラインバッファコントローラ44によって読み出し信号が生成される。アドレスライン信号は、それぞれのSRAMメモリラインの最初のアドレスから最後のアドレスに送られる。マルチプレクサ46の数は3であり、各マルチプレクサのサイズは、図20に示されるように7x1である。
図23に、連続するフェーズでマルチプレクサ46が選択したSRAMメモリライン45を示す。図23において、「MUX1」はマルチプレクサ46A、「MUX2」はマルチプレクサ46B、「MUX3」はマルチプレクサ46Cを意味する。第1フェーズでは、マルチプレクサ46AがSRAM_3メモリライン45Cを選択し、マルチプレクサ46BがSRAM_5メモリライン45Eを選択し、マルチプレクサ46CがSRAM_7メモリライン45Gを選択する。第2フェーズでは、マルチプレクサ46AがSRAM_4メモリライン45Dを選択し、マルチプレクサ46BがSRAM_6メモリライン45Fを選択し、マルチプレクサ46CがSRAM_1メモリライン45Aを選択する。第3フェーズでは、マルチプレクサ46AがSRAM_5メモリライン45Eを選択し、マルチプレクサ46BがSRAM_7メモリライン45Gを選択し、マルチプレクサ46CがSRAM_2メモリライン45Bを選択する。第4フェーズでは、マルチプレクサ46AがSRAM_6メモリライン45Fを選択し、マルチプレクサ46BがSRAM_1メモリライン45Aを選択し、マルチプレクサ46CがSRAM_3メモリライン45Cを選択する。第5フェーズでは、マルチプレクサ46AがSRAM_7メモリライン45Gを選択し、マルチプレクサ46BがSRAM_2メモリライン45Bを選択し、マルチプレクサ46CがSRAM_4メモリライン45Dを選択する。第6フェーズでは、マルチプレクサ46AがSRAM_1メモリライン45Aを選択し、マルチプレクサ46BがSRAM_3メモリライン45Cを選択し、マルチプレクサ46CがSRAM_5メモリライン45Eを選択する。第7フェーズでは、マルチプレクサ46AがSRAM_2メモリライン45Bを選択し、マルチプレクサ46BがSRAM_4メモリライン45Dを選択し、マルチプレクサ46CがSRAM_6メモリライン45Fを選択する。
このように、フェーズが1つ増加すると、マルチプレクサ46は次のSRAMメモリライン45を選択する。さらに、1つのフェーズでは、マルチプレクサ46Bは、マルチプレクサ46Aによって選択されたSRAMメモリラインから2(=N)メモリライン離れたSRAMメモリラインを選択する。同様に、1つのフェーズでは、マルチプレクサ46Cは、マルチプレクサ46Bによって選択されたSRAMメモリラインから2(=N)メモリライン離れたSRAMメモリラインを選択する。
図23より、ラインバッファ40の各マルチプレクサ46が連続したフェーズで選択したSRAMメモリライン45は、図10に示すラインバッファ230の各マルチプレクサが連続したフェーズで選択したSRAMメモリラインとは異なることに注意する必要がある。図20に示すように、シフトレジスタ43はSRAMメモリライン45から3つの画像ピクセルデータ21を入力する。シフトレジスタ43は3x3のピクセルを蓄積し、そのピクセルはIPL22によってラインバッファ40から読み出される。S=1のストライドで、IPL22はシフトレジスタ43から3x3のピクセルを連続的に読み出し、画像処理動作を実行する。
参照例のラインバッファ230のレイテンシサイクルと比較して、ラインバッファ40のレイテンシサイクルはW/2サイクル少ない。レイテンシサイクルの改善は、ラインバッファ40で確認される。IPシステムに複数のIPU20を搭載することができるため、レイテンシサイクルについての総合性能の向上は、IPU20の数とW/2の積に等しい。
ラインバッファ30のバッファメモリ31のレイテンシサイクルとラインバッファ130のバッファメモリ131のレイテンシサイクルをピクセルデータについて比較すると、レイテンシサイクルをDLだけ減らすことができる。
(3)DL=W*K-(W*(K-1)+W/N)=W*(N-1)/N
(3)の式では、Wの値は常に正であり、パーティションNの係数は常に1より大きい正の整数である。したがって、DLは常に正である。よって、N、K、Wのすべての値について、ラインバッファ30のバッファメモリ31のレイテンシサイクルは、参照例のラインバッファ130のバッファメモリ131のレイテンシサイクルよりも常に小さいことが証明される。
レイテンシサイクルの改善は、ラインバッファ30で確認できる。IPシステムに複数のIPU20を搭載することができるため、レイテンシサイクルについての総合性能の向上は、IPU20の数とW*(N-1)/Nの積に等しい。
このため、本開示は、面積効率の良い構成だけでなく、レイテンシサイクルの観点からの性能の改善も提供する。
上記で説明したように、前のレイヤのチャンネルサイズは任意のチャンネルサイズにすることができる。さらに、幅Wを次のレイヤの入力フレームのmin(高さ、幅)に置き換えることもできる。ラインバッファが1つのレイヤで形成され、それがApplication Specific Integrated Circuit(ASIC)で隣接する2つのレイヤを接続しているとすると、次のレイヤのカーネルサイズはK、次のレイヤの入力フレームのmin(高さ、幅)はD、次のレイヤのストライドはS、前のレイヤのチャネルサイズはCと等しくなる。この場合、ピクセルについては、ラインバッファ内の1つのSRAMラインのサイズは(D/N)*C、ラインバッファ内のSRAMラインの合計サイズは(D/N)*C*(N*K+S)となる。この例の効果は、前に説明したものと類似している。さらに、Dは入力画像の高さまたは幅のいずれかに置き換えることができ、これは次のレイヤの入力フレームの高さまたは幅として定義できる。
さらに、上記の効果が継続する条件では、SRAMメモリライン45のサイズの合計がW/2を超えてもよい。例えば、図20では、1つのSRAMメモリライン45のサイズはW/2から(W/2)*W*(K+S)/((2K+S)*W/2)までであってもよい。
(実施の形態3)
上記のように、実施の形態2のラインバッファの構成は、マルチプレクサからの出力を蓄積するシフトレジスタ43を含んでいる。しかしながら、このシフトレジスタは必須の構成要素ではない。実施の形態3では、ラインバッファはバッファメモリ、マルチプレクサ、およびラインバッファコントローラを有するが、シフトレジスタは有さない。
ラインバッファは、N個の小さな部分に分割されたバッファメモリラインを有する。バッファメモリのバッファメモリラインの幅は、ピクセルデータについてはW/(K*N)に等しい。バッファメモリラインの数は、S*KとK*K*Nの合計、すなわち(K*K*N+S*K)に等しい。ラインバッファのバッファメモリに格納されているピクセルデータの総数は、バッファメモリの合計サイズとも呼ばれ、W/NとS+N*Kの積に等しい(すなわち(W/N)*(S+N*K))。実施の形態3のバッファメモリのサイズと実施の形態2のバッファメモリのサイズは、ピクセルデータについて同じである。
ピクセルデータについて、ラインバッファ330のバッファメモリ301のサイズと比較した実施の形態3のバッファメモリのサイズの減少は、式(2)に示される。前述のように、WとSの値は常に正であり、パーティションNの係数は常に1より大きい正の整数である。ラインバッファ330のバッファメモリ301のサイズと実施の形態3のバッファメモリのサイズとの差は常に正である。したがって、N、S、K、Wのすべての値について、実施の形態3のバッファメモリのサイズは、常にラインバッファ330のバッファメモリ301のサイズより小さいことが証明される。
一般に、ラインバッファ330のレイテンシサイクルと比較すると、本実施形態のレイテンシサイクルは、式(3)に示すようにW*(N-1)/Nサイクル少ない。実施の形態3では、レイテンシサイクルの改善が確認される。IPシステムに複数のIPU20を搭載することができるため、レイテンシサイクルについての総合性能の向上は、IPU20の数とW*(N-1)/Nの積に等しい。
次に、上記の複数の実施形態で説明した情報処理装置の構成例を、図24を参照して以下に説明する。
図24は、情報処理装置の構成例を示すブロック図である。情報処理装置91は、図24に示すように、プロセッサ92とメモリ93を備えている。
プロセッサ92は、上記の実施形態のシーケンス図やフローチャートを参照して説明した情報処理装置91により実行される処理を、メモリ9からソフトウェア (コンピュータプログラム)をロードして実行することにより実行する。プロセッサ92は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)またはCPU(Central Processing Unit)であってもよい。プロセッサ92は、複数のプロセッサを含んでもよい。
メモリ93は、揮発性メモリと不揮発性メモリの組み合わせによって構成される。メモリ93は、プロセッサ92から離れて配置されたストレージを含んでもよい。この場合、プロセッサ92は、I/Oインターフェイス(不図示)を介してメモリ93にアクセスしてもよい。
図24に示した例では、メモリ93は、ソフトウェアモジュール群を格納するために使用される。プロセッサ92は、メモリ93からソフトウェアモジュール群を読み込み、読み込んだソフトウェアモジュールを実行することで、上記の実施形態で説明した情報処理装置によって行われる処理を行うことができる。
図24を参照して以上で説明したように、上記の実施形態の情報処理装置に含まれる各プロセッサは、命令群を含む1または複数のプログラムを実行して、図面を参照して上述されたアルゴリズムをコンピュータに実行させる。
また、情報処理装置91は、ネットワークインタフェースを有してもよい。ネットワークインタフェースは、通信システムを構成する他のネットワークノード装置との通信に使用される。ネットワークインタフェースは、例えば、IEEE 802.3シリーズに準拠したネットワークインタフェースカード(NIC)を含んでもよい。情報処理装置91は、ネットワークインタフェースを用いて、入力特徴マップを受信してもよいし、出力特徴マップを送信してもよい。
上記の例では、任意の種類の非一時的なコンピュータ可読媒体を使用することで、プログラムが格納され、コンピュータに提供されることができる。非一時的なコンピュータ可読媒体には、任意の種類の有形記憶媒体が含まれる。非一時的なコンピュータ可読媒体の例には、磁気記憶媒体(フロッピーディスク、磁気テープ、ハードディスクドライブなど)、光磁気記憶媒体(例えば光磁気ディスク)、CD-ROM(compact disc read only memory)、CD-R(compact disc recordable)、CD-R/W(compact disc rewritable)、及び半導体メモリ(マスクROM、PROM(programmable ROM)、EPROM(erasable PROM)、フラッシュROM、RAM(random access memory)などといったもの)が含まれる。プログラムは、任意の種類の一時的なコンピュータ可読媒体を使用してコンピュータに提供されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号及び電磁波を含む。一時的なコンピュータ可読媒体は、有線通信回線(例えば電線、光ファイバー)または無線通信回線を介してコンピュータにプログラムを提供することができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、本発明はこれに限定されない。
(付記1)
入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、
1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得するように構成された複数のマルチプレクサと、
前記1列のデータの一部を格納す1つの前記メモリを選択するように構成されたコントローラと、
を備える情報処理装置。
(付記2)
前記1列のデータの一部は前記1列のデータがNで分割されたものであり、Nは1より大きい正の整数である、
付記1に記載の情報処理装置。
(付記3)
前記メモリの数は(N*K)+Sであり、Kは前記マルチプレクサの数、Sは前記複数のマルチプレクサの出力に接続されたレイヤのストライドである、
付記2に記載の情報処理装置。
(付記4)
前記メモリはシングルポートである、
付記1から3のいずれか1項に記載の情報処理装置。
(付記5)
前記マルチプレクサの出力を格納するように構成されたシフトレジスタをさらに備える、
付記1から4のいずれか1項に記載の情報処理装置。
(付記6)
前記1列のデータの一部の読み出し動作と前記1列のデータの別の一部の書き込み動作は、異なるメモリにおいて同じフェーズで行われる、
付記1から5のいずれか1項に記載の情報処理装置。
(付記7)
前記コントローラは、前記分割された1列のデータを1フェーズで取得し、前記1列のデータをNフェーズで取得するように、前記マルチプレクサへの制御信号を生成する、
付記2又は3に記載の情報処理装置。
(付記8)
入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、
1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得するように構成された複数のマルチプレクサと、
前記1列のデータの一部を格納す1つの前記メモリを選択するように構成されたコントローラと、
を備える画像処理ユニット。
(付記9)
前記1列のデータの一部は前記1列のデータがNで分割されたものであり、Nは1より大きい正の整数である、
付記8に記載の画像処理ユニット。
(付記10)
入力画像データの1列のデータを複数のメモリ全体に格納し、
1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得し、
前記1列のデータの一部を格納す1つの前記メモリを選択すること、
を備える画像処理方法。
(付記11)
入力画像データの1列のデータを複数のメモリ全体に格納し、
1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得し、
前記1列のデータの一部を格納す1つの前記メモリを選択すること、
をコンピュータに実行させるプログラムを格納する非一時的なコンピュータ可読媒体。
なお、本開示は、上記の実施形態に限定されるものではなく、本開示の趣旨及び範囲を逸脱することなしに適宜変更することができる。
1、2 情報処理装置
10、20 画像処理ユニット
11 メモリ
12 マルチプレクサ
13 コントローラ
21 画像ピクセルデータ
22 画像処理ロジック
30、40 ラインバッファ
31、41 バッファメモリ
32、42 セレクタ
33、43 シフトレジスタ
34、44 ラインバッファコントローラ
35 バッファメモリライン
45 SRAMメモリライン
36、46 マルチプレクサ

Claims (8)

  1. 入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、
    1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得するように構成された複数のマルチプレクサと、
    前記1列のデータの一部を格納する1つの前記メモリを選択するように構成されたコントローラと、を備え、
    前記1列のデータの一部は前記1列のデータがNで分割されたものであり、Nは1より大きい正の整数であって、
    前記メモリの数は(N*K)+Sであり、Kは前記マルチプレクサの数、Sは前記複数のマルチプレクサの出力に接続されたレイヤのストライドである、
    情報処理装置。
  2. 入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、
    1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得するように構成された複数のマルチプレクサと、
    前記1列のデータの一部を格納する1つの前記メモリを選択するように構成されたコントローラと、
    前記マルチプレクサの出力を格納するように構成されたシフトレジスタと、
    を備える情報処理装置。
  3. 入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、
    1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得するように構成された複数のマルチプレクサと、
    前記1列のデータの一部を格納する1つの前記メモリを選択するように構成されたコントローラと、を備え、
    前記1列のデータの一部の読み出し動作と前記1列のデータの別の一部の書き込み動作は、異なるメモリにおいて同じフェーズで行われる、
    情報処理装置。
  4. 前記メモリはシングルポートである、
    請求項1から3のいずれか1項に記載の情報処理装置。
  5. 入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、
    1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得するように構成された複数のマルチプレクサと、
    前記1列のデータの一部を格納する1つの前記メモリを選択するように構成されたコントローラと、を備え、
    前記1列のデータの一部は前記1列のデータがNで分割されたものであり、Nは1より大きい正の整数であって、
    前記コントローラは、前記分割された1列のデータを1フェーズで取得し、前記1列のデータをNフェーズで取得するように、前記マルチプレクサへの制御信号を生成する、
    情報処理装置。
  6. 入力画像データの1列のデータを全体として格納するように構成された複数のメモリと、
    1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得するように構成された複数のマルチプレクサと、
    前記1列のデータの一部を格納する1つの前記メモリを選択するように構成されたコントローラと、を備え、
    前記1列のデータの一部は前記1列のデータがNで分割されたものであり、Nは1より大きい正の整数であって、
    前記メモリの数は(N*K)+Sであり、Kは前記マルチプレクサの数、Sは前記複数のマルチプレクサの出力に接続されたレイヤのストライドである、
    画像処理ユニット。
  7. 入力画像データの1列のデータを複数のメモリ全体に格納し、
    1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得し、
    前記1列のデータの一部を格納する1つの前記メモリを選択すること、を備え、
    前記1列のデータの一部は前記1列のデータがNで分割されたものであり、Nは1より大きい正の整数であって、
    前記メモリの数は(N*K)+Sであり、Kは、1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得する複数のマルチプレクサの数、Sは前記複数のマルチプレクサの出力に接続されたレイヤのストライドである、
    画像処理方法。
  8. 入力画像データの1列のデータを複数のメモリ全体に格納すること
    1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得すること及び
    前記1列のデータの一部を格納する1つの前記メモリを選択すること、を備える方法であり、
    前記1列のデータの一部は前記1列のデータがNで分割されたものであり、Nは1より大きい正の整数であって、
    前記メモリの数は(N*K)+Sであり、Kは、1つの前記メモリを選択することで、前記選択されたメモリから前記1列のデータの一部を取得する複数のマルチプレクサの数、Sは前記複数のマルチプレクサの出力に接続されたレイヤのストライドである、
    方法をコンピュータに実行させるプログラム。
JP2022575295A 2020-06-15 2020-06-15 情報処理装置、画像処理ユニット、方法及びプログラム Active JP7639832B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/023459 WO2021255796A1 (en) 2020-06-15 2020-06-15 Information processing apparatus, image processing unit, method and computer readable medium

Publications (2)

Publication Number Publication Date
JP2023528933A JP2023528933A (ja) 2023-07-06
JP7639832B2 true JP7639832B2 (ja) 2025-03-05

Family

ID=79268657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022575295A Active JP7639832B2 (ja) 2020-06-15 2020-06-15 情報処理装置、画像処理ユニット、方法及びプログラム

Country Status (3)

Country Link
US (1) US12462330B2 (ja)
JP (1) JP7639832B2 (ja)
WO (1) WO2021255796A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7639832B2 (ja) * 2020-06-15 2025-03-05 日本電気株式会社 情報処理装置、画像処理ユニット、方法及びプログラム
JP7719617B2 (ja) * 2021-03-19 2025-08-06 キヤノン株式会社 画像処理装置、画像処理方法
EP4365738A1 (en) * 2022-11-04 2024-05-08 Aptiv Technologies AG Method to dimension a buffer memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140177324A1 (en) 2012-12-21 2014-06-26 Lsi Corporation Single-Port Read Multiple-Port Write Storage Device Using Single-Port Memory Cells

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4302775A (en) * 1978-12-15 1981-11-24 Compression Labs, Inc. Digital video compression system and methods utilizing scene adaptive coding with rate buffer feedback
KR100204334B1 (ko) * 1996-07-05 1999-06-15 윤종용 표시모드 변환기능을 갖는 비디오신호 변환장치 및 그 장치를 구비한 표시장치
JP2009169257A (ja) * 2008-01-18 2009-07-30 Kawasaki Microelectronics Inc メモリ制御回路および画像処理装置
US8848480B1 (en) * 2013-04-30 2014-09-30 Freescale Semiconductor, Inc. Synchronous multiple port memory with asynchronous ports
JP7639832B2 (ja) * 2020-06-15 2025-03-05 日本電気株式会社 情報処理装置、画像処理ユニット、方法及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140177324A1 (en) 2012-12-21 2014-06-26 Lsi Corporation Single-Port Read Multiple-Port Write Storage Device Using Single-Port Memory Cells

Also Published As

Publication number Publication date
US12462330B2 (en) 2025-11-04
US20230222621A1 (en) 2023-07-13
JP2023528933A (ja) 2023-07-06
WO2021255796A1 (en) 2021-12-23

Similar Documents

Publication Publication Date Title
JP7639832B2 (ja) 情報処理装置、画像処理ユニット、方法及びプログラム
US20250061536A1 (en) Task execution in a simd processing unit with parallel groups of processing lanes
TW201830295A (zh) 卷積神經網路的池化運算裝置及方法
WO2020073801A1 (zh) 一种3d图像处理中数据读写方法及系统、存储介质及终端
CN108073549B (zh) 卷积运算装置及方法
US11587203B2 (en) Method for optimizing hardware structure of convolutional neural networks
US12106029B2 (en) High-level synthesis device and high-level synthesis method
CN108073550A (zh) 缓冲装置及卷积运算装置与方法
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
CN110533177B (zh) 一种数据读写装置、方法、设备、介质及卷积加速器
EP4336410A1 (en) Method and system for feature extraction using reconfigurable convolutional cluster engine in image sensor pipeline
CN114611683B (zh) 卷积神经网络操作实现方法、装置、设备及存储介质
KR102667134B1 (ko) 싱글포트 메모리를 포함하는 신경망 하드웨어 가속기 및 그 동작 방법
TW202518379A (zh) 緩衝區利用
KR102540274B1 (ko) 인공지능 알고리즘의 효율적인 하드웨어 구현을 위한 수용 영역의 분할 연산 방법
Pham-Quoc et al. A scalable fpga-based floating-point gaussian filtering architecture
Pham-Quoc et al. An efficient runtime adaptable floating-point Gaussian filtering core
US20090304076A1 (en) Memory arrangement method and system for ac/dc prediction in video compression applications based on parallel processing
JPWO2016047472A1 (ja) 画像処理装置、画像処理方法、及び、プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240416

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20241008

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20241016

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250203

R150 Certificate of patent or registration of utility model

Ref document number: 7639832

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150