JP2024048282A - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP2024048282A
JP2024048282A JP2022154238A JP2022154238A JP2024048282A JP 2024048282 A JP2024048282 A JP 2024048282A JP 2022154238 A JP2022154238 A JP 2022154238A JP 2022154238 A JP2022154238 A JP 2022154238A JP 2024048282 A JP2024048282 A JP 2024048282A
Authority
JP
Japan
Prior art keywords
input
multiply
pixel data
bank
output
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.)
Pending
Application number
JP2022154238A
Other languages
English (en)
Inventor
和昭 寺島
Kazuaki Terajima
淳 中村
Atsushi Nakamura
ラゼス ギミレ
Ghimire Rajesh
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 JP2022154238A priority Critical patent/JP2024048282A/ja
Priority to US18/348,534 priority patent/US20240104034A1/en
Priority to CN202311164289.6A priority patent/CN117785119A/zh
Priority to DE102023126257.2A priority patent/DE102023126257A1/de
Publication of JP2024048282A publication Critical patent/JP2024048282A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bus Control (AREA)
  • Memory System (AREA)
  • Image Processing (AREA)

Abstract

【課題】ニューラルネットワークの処理時間を短縮可能な半導体装置を提供する。【解決手段】メモリMEM2は、並列アクセスが可能なn個のバンクBK[1]~BK[n]を有し、画素データDi/Doを記憶する。入力用DMAコントローラDMAC2iは、メモリMEM2が記憶している画素データDiを、n個の入力チャネルCHi[1]~CHi[n]を用いてn個の積和演算器MAC[1]~MAC[n]にそれぞれ転送する。シーケンスコントローラ21は、第1の入力チャネルに、入力バンクにおける第1の画素空間内の画素データを第1の積和演算器に転送させ、第2の入力チャネルに、同じ入力バンクにおける第2の画素空間内の画素データを第2の積和演算器に転送させるように、入力用DMAコントローラDMAC2iを制御する。【選択図】図2

Description

本発明は、半導体装置に関し、例えば、ニューラルネットワークの処理を実行する半導体装置に関する。
特許文献1には、複数のバンクを有するメモリを用いて、畳み込みニューラルネットワークを構成する複数の中間層についての演算を行う方法が示される。当該方法では、複数の中間層毎に、入力データおよび出力データに要求される転送量と転送速度に基づいて、入力データの格納元または出力データの格納先となるバンクの割り当てが適切に定められる。
特開2019-207458号公報
例えば、CNN(Convolutional Neural Network)等のニューラルネットワークの処理では、半導体装置に搭載される複数のDMA(Direct Memory Access)コントローラおよび複数の積和演算器等を用いて膨大な演算処理が実行される。具体的には、DMAコントローラは、例えば、メモリが記憶している、ある畳み込み層の画素データおよび重みパラメータを積和演算器に転送することで、積和演算器に積和演算を行わせる。また、DMAコントローラは、積和演算器による演算結果を、次の畳み込み層の画素データとして、メモリに転送する。半導体装置は、このような処理を繰り返し実行する。
このような半導体装置では、多様なニューラルネットワークの構成に柔軟に対応するため、シンプルなコマンドに基づいて動作する場合が多い。例えば、特許文献1に示されるように、入力データの格納元のメモリバンクと出力データの格納先のメモリバンクとを指定するコマンドが挙げられる。しかしながら、このようなコマンドに基づいて複数の積和演算器に積和演算を行わせる場合、必ずしも、複数の積和演算器を効率的に利用できないことがある。その結果、ニューラルネットワークの処理時間が想定よりも増大するおそれがあった。
後述する実施の形態は、このようなことに鑑みてなされたものであり、その他の課題と新規な特徴は、本明細書の記載および添付図面から明らかになるであろう。
一実施の形態の半導体装置は、nを2以上の整数として、メモリと、n個の積和演算器と、入力用DMAコントローラと、出力用DMAコントローラと、シーケンスコントローラと、を備える。メモリは、並列アクセスが可能なn個のバンクを有し、画素データを記憶する。n個の積和演算器のそれぞれは、複数の画素データと複数の重みパラメータとを積和演算する。入力用DMAコントローラは、メモリが記憶している画素データを、n個の入力チャネルを用いてn個の積和演算器にそれぞれ転送する。出力用DMAコントローラは、n個の積和演算器からの画素データを、n個の出力チャネルを用いてメモリにそれぞれ転送する。シーケンスコントローラは、第1の入力チャネルに、入力バンクにおける第1の画素空間内の画素データを第1の積和演算器に転送させ、第2の入力チャネルに、同じ入力バンクにおける第2の画素空間内の画素データを第2の積和演算器に転送させるように、入力用DMAコントローラを制御する。
一実施の形態の半導体装置を用いることで、ニューラルネットワークの処理時間を短縮することが可能になる。
図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。 図2は、図1におけるニューラルネットワークエンジンの詳細な構成例を示す図である。 図3は、図1および図2におけるニューラルネットワークエンジンの模式的な構成例および動作例を示す図である。 図4は、図1および図2におけるニューラルネットワークエンジンの、図3の場合とは異なる模式的な構成例および動作例を示す図である。 図5は、図4に示したニューラルネットワークエンジンと図9に示したニューラルネットワークエンジンとの動作を比較した一例を示すタイミングチャートである。 図6は、実施の形態2による半導体装置において、図1におけるニューラルネットワークエンジンの詳細な構成例を示す図である。 図7は、図6における動作設定テーブルの構成例を示す概略図である。 図8は、図6におけるシーケンスコントローラの動作例を示すフロー図である。 図9は、比較例となるニューラルネットワークエンジンの模式的な構成例および動作例を示す図である。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
以下、実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
(実施の形態1)
<半導体装置の概略>
図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。図1に示す半導体装置10は、例えば、一つの半導体チップで構成されるSoC(System on Chip)等である。当該半導体装置10は、代表的には、車両のECU(Electronic Control Unit)等に搭載され、ADAS(Advanced Driver Assistance System)の機能を提供する。当該半導体装置10は、システムバス15と、ニューラルネットワークエンジン16と、プロセッサ17と、メモリMEM1,MEM2と、メモリバス18と、を備える。
プロセッサ17は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)等である。システムバス15は、ニューラルネットワークエンジン16、メモリMEM1,MEM2およびプロセッサ17を互いに接続する。ニューラルネットワークエンジン16は、CNNを代表とするニューラルネットワークの処理を実行する。プロセッサ17は、例えば、メモリMEM1が記憶している所定のプログラムを実行することで、ニューラルネットワークエンジン16の制御を含めて、半導体装置10に所定の機能を担わせる。
メモリMEM1は、DRAM(Dynamic Random Access Memory)等であり、メモリMEM2は、キャッシュ用のSRAM(Static Random Access Memory)等である。メモリMEM1は、例えば複数の画素データからなる画像データDTと、コマンドCMD1およびパラメータPRと、を記憶している。パラメータPRには、複数の重みパラメータからなるカーネルKRと、バイアスパラメータBPとが含まれる。コマンドCMD1は、ニューラルネットワークエンジン16の動作を制御するためのものである。
メモリMEM2は、ニューラルネットワークエンジン16の高速キャッシュメモリとして用いられる。メモリMEM2は、nを2以上の整数として、並列アクセスが可能なn個のバンクBK[1]~BK[n]を有する。メモリMEM2は、ニューラルネットワークエンジン16への画素データDiおよびニューラルネットワークエンジン16からの画素データDoを記憶する。
例えば、メモリMEM1内の画像データDT、すなわち画素データは、予め、システムバス15を介してメモリMEM2内の所定のバンクBK[1]~BK[n]にコピーされたのち、ニューラルネットワークエンジン16で用いられる。メモリバス18は、ニューラルネットワークエンジン16とメモリMEM2とを接続する。メモリバス18は、例えば、クロスバースイッチ等によってn個のバンクBK[1]~BK[n]への並列アクセスを可能にするAXI(Advanced eXtensible Interface)バス等である。
ニューラルネットワークエンジン16は、複数のDMAコントローラDMAC1,DMAC2と、MACユニット20と、シーケンスコントローラ21とを備える。MACユニット20は、詳細は後述するが、n個の積和演算器を備える。DMAコントローラDMAC1は、メモリMEM1とMACユニット20との間の、システムバス15を介したデータ転送を制御する。詳細には、DMAコントローラDMAC1は、メモリMEM1が記憶しているカーネルKR、すなわち重みパラメータ等を、MACユニット20に転送する。また、DMAコントローラDMAC1は、メモリMEM1が記憶しているコマンドCMD1を、シーケンスコントローラ21に転送する。
DMAコントローラDMAC2は、メモリMEM2とMACユニット20との間の、メモリバス18を介したデータ転送を制御する。具体的には、DMAコントローラDMAC2は、メモリMEM2が記憶している画素データDiを、n個のチャネルCH[1]~CH[n]を用いてMACユニット20に転送する。これによって、MACユニット20は、DMAコントローラDMAC1からのカーネルKRと、DMAコントローラDMAC2からの画素データDiとの積和演算を実行する。さらに、詳細は省略するが、MACユニット20は、積和演算結果へのバイアスパラメータBPの加算や、当該加算結果に対する活性化関数の演算等を行ってもよい。
このような演算によって、MACユニット20は、特徴マップ内の各特徴データとなる画素データDoを生成する。DMAコントローラDMAC2は、当該MACユニット20からの画素データDoを、n個のチャネルCH[1]~CH[n]を用いてメモリMEM2に転送する。これに伴いMEM2に書き込まれた画素データDoは、次の畳み込み層でMACユニット20に入力される画素データDiとなる。
シーケンスコントローラ21は、DMAコントローラDMAC1からのコマンドCMD1、または、プロセッサ17からシステムバス15を介して入力されたコマンドCMD2に基づいて、ニューラルネットワークエンジン16の動作シーケンス等を制御する。その一つとして、シーケンスコントローラ21は、DMAコントローラDMAC2を制御する。
<ニューラルネットワークエンジンの詳細>
図2は、図1におけるニューラルネットワークエンジンの詳細な構成例を示す図である。図2において、MACユニット20は、n個の積和演算器MAC[1]~MAC[n]を備える。DMAコントローラDMAC1は、メモリMEM1から、コマンドCMD1およびカーネルKRを含む情報を読み出す。DMAコントローラDMAC1は、読み出したカーネルKRをn個の積和演算器MAC[1]~MAC[n]の少なくとも1個に転送し、読み出したコマンドCMD1を、レジスタREGに書き込む。この際に、DMAコントローラDMAC1には、転送元であるメモリMEM1のアドレス範囲と、転送先である積和演算器MAC[1]~MAC[n]、詳細には、各入力レジスタのアドレスとが設定される。
図1に示したDMAコントローラDMAC2は、詳細には、図2に示されるように、入力用DMAコントローラDMAC2iと、出力用DMAコントローラDMAC2oとを有する。入力用DMAコントローラDMAC2iは、n個の入力チャネルCHi[1]~CHi[n]を有し、出力用DMAコントローラDMAC2oは、n個の出力チャネルCHo[1]~CHo[n]を有する。
入力用DMAコントローラDMAC2iは、メモリMEM2が記憶している画素データDiを、n個の入力チャネルCHi[1]~CHi[n]を用いてn個の積和演算器MAC[1]~MAC[n]にそれぞれ転送する。すなわち、mを1~nのいずれかの整数とした場合、入力チャネルCHi[m]の転送先は、積和演算器MAC[m]、詳細には、その入力レジスタに定められる。積和演算器MAC[m]は、入力チャネルCHi[m]を用いて転送された複数の画素データDiと、DMAコントローラDMAC1を用いて転送されたカーネルKR、詳細にはカーネルKRを構成する複数の重みパラメータとを積和演算する。
出力用DMAコントローラDMAC2oは、n個の積和演算器MAC[1]~MAC[n]からの画素データDoを、n個の出力チャネルCHo[1]~CHo[n]を用いてメモリMEM2にそれぞれ転送する。すなわち、入力用DMAコントローラDMAC2iの場合と同様に、出力チャネルCHo[m]の転送元は、積和演算器MAC[m]、詳細には、その出力レジスタに定められる。
シーケンスコントローラ21は、レジスタREGに書き込まれたコマンドCMD1、または、プロセッサ17からのコマンドCMD2に基づいて、入力用DMAコントローラDMAC2iおよび出力用DMAコントローラDMAC2oを制御する。コマンドCMD1,CMD2では、例えば、入力される画素データDiの転送元となる入力バンク(IBKと呼ぶ)と、出力される画素データDoの転送先となる出力バンク(OBKと呼ぶ)とが指定される。
シーケンスコントローラ21は、当該コマンドCMD1,CMD2に基づいて、入力チャネルCHi[1]~CHi[n]の転送元、具体的には、入力バンクIBKおよび入力バンクIBK内のアドレス範囲を、設定信号ST-CHi[1]~ST-CHi[n]を用いてそれぞれ設定する。同様に、シーケンスコントローラ21は、当該コマンドCMD1,CMD2に基づいて、出力チャネルCHo[1]~CHo[n]の転送先、具体的には、出力バンクOBKおよび出力バンクOBK内のアドレス範囲を、設定信号ST-CHo[1]~ST-CHo[n]を用いてそれぞれ設定する。
<ニューラルネットワークエンジン(比較例)の構成および動作>
図9は、比較例となるニューラルネットワークエンジンの模式的な構成例および動作例を示す図である。比較例となるニューラルネットワークエンジンでは、図9に示されるように、画素データDiの入力バンクIBKとなるバンクBK[m]が定められると、入力チャネルCHi[m]、積和演算器MAC[m]および出力チャネルCHo[m]は、一義的に定められる。ただし、入力バンクIBKと出力バンクOBKとは、異なっている必要がある。このため、出力チャネルCHo[m]は、メモリバス18を介して出力バンクOBK、すなわち転送先のバンクを任意に選択可能となっている。
図9の例では、kを、mを除く1~nのいずれかの整数として、出力バンクOBKは、バンクBK[k]に定められる。また、特許文献1に記載されるように、画素データDoのデータ量が多い場合には、出力バンクOBKとして、2個のバンクBK[k],BK[q]を指定することも可能である。この場合、出力チャネルCHo[m]は、画素データDoをバンクBK[k]に書き込んだのち、余剰の画素データDoをバンクBK[q]に書き込む。
さらに、次の畳み込み層において、データ転送速度が要求される場合にも、出力バンクOBKとして、2個のバンクBK[k],BK[q]を指定することが可能である。この場合、出力チャネルCHo[m]は、例えば、画素データDoを2個のバンクBK[k],BK[q]に分散して書き込む。次の畳み込み層では、2個の積和演算器MAC[k],MAC[q]は、それぞれ、当該2個のバンクBK[k],BK[q]を入力バンクIBKとして、並列に積和演算処理を行う。
また、図9では、ある畳み込み層において、3×3のカーネルKRを用いた場合の具体的な処理内容の一例が示される。カーネルKRは、9個の重みパラメータW1~W9で構成される。入力バンクIBKであるバンクBK[m]は、この例では、6×6の画素データDi11~Di16,Di21~Di26,…,Di61~Di66を記憶している。ここでは、画素データDixyの“x”は、行番号を表し、“y”は列番号を表す。
入力チャネルCHi[m]は、例えば、バンクBK[m]における3×3の画素空間AR22、言い換えればアドレス空間に含まれる画素データDi11~Di13,Di21~Di23,Di31~Di33を読み出し、積和演算器MAC[m]に転送する。画素空間AR22は、画素データDi22を中心とする3×3の画素空間である。積和演算器MAC[m]は、当該画素空間AR22に含まれる9個の画素データDiと、カーネルKRを構成する9個の重みパラメータW1~W9とを積和演算する。出力チャネルCHo[m]は、積和演算結果である画素データDo22を、出力バンクOBKであるバンクBK[k]の所定の位置、すなわち所定のアドレスに書き込む。
続いて、入力チャネルCHi[m]は、バンクBK[m]における画素空間AR23に含まれる画素データDi12~Di14,Di22~Di24,Di32~Di34を読み出し、積和演算器MAC[m]に転送する。画素空間AR23は、画素空間AR23を列方向に1回スライドさせた空間であり、画素データDi23を中心とする3×3の画素空間である。積和演算器MAC[m]は、画素空間AR23に含まれる画素データDiと、カーネルKRとを積和演算する。出力チャネルCHo[m]は、積和演算結果である画素データDo23を、バンクBK[k]において、画素データDo22と列方向で隣接する位置、すなわち隣接するアドレスに書き込む。
以降、画素空間AR23を1回スライドさせた空間である画素空間AR24を対象に同様の処理が行われ、続いて、画素空間AR23を1回スライドさせた空間である画素空間AR25を対象に同様の処理が行われる。その結果、画素データDo22~Do25は、列方向に順に並んで配置される。
以上のような畳み込み演算処理を、入力バンクIBKであるバンクBK[m]における6×6の画素データDiに対して行うと、出力バンクOBKであるバンクBK[k]には、6×6の画素データDoが、図9に示されるような配置で書き込まれる。すなわち、出力バンクOBKにおける6×6の画素データDo11~Do16,Do21~Do26,…,Do61~Do66は、入力バンクにおける6×6の画素データDiと整合するように配置される。
なお、この例では、出力バンクOBKにおける6×6の画素データDoは、パディングを用いて生成される。例えば、画素データDo11を生成する際には、入力バンクIBKにおいて画素データDi11を中心とする3×3の画素空間が定められ、存在しない画素データDiは例えばゼロでパディングされる。また、次の畳み込み層では、例えば、バンクBK[k]の画素データDoを画素データDiとして、すなわち、バンクBK[k]を入力バンクIBKとして、図9の場合と同様の処理が行われる。
しかしながら、このような方式では、n個中の1個の入力チャネルCHi[m]、積和演算器MAC[m]および出力チャネルCHo[m]のみが動作するため、ニューラルネットワークエンジン16の利用効率が低下し得る。その結果、ニューラルネットワークの処理時間が増大するおそれがあった。
<ニューラルネットワークエンジン(実施の形態1)の構成および動作>
図3は、図1および図2におけるニューラルネットワークエンジンの模式的な構成例および動作例を示す図である。図3の例では、シーケンスコントローラ21は、入力チャネルCHi[m]に、入力バンクIBKであるバンクBK[m]における例えば画素空間AR23内の画素データDiを積和演算器MAC[m]に転送させる。さらに、これと並行して、シーケンスコントローラ21は、図9の場合と異なり、別の入力チャネルCHi[j]に、バンクBK[m]における次の画素空間AR24内の画素データDiを積和演算器MAC[j]に転送させる。なお、jは、mを除く1~nのいずれかの整数である。
積和演算器MAC[m]は、入力チャネルCHi[m]からの画素空間AR23内の画素データDi12~Di14,Di22~Di24,Di32~Di34と、カーネルKRを構成する重みパラメータW1~W9とを積和演算する。これと並行して、図9の場合と異なり、積和演算器MAC[j]は、入力チャネルCHi[j]からの画素空間AR24内の画素データDi13~Di15,Di23~Di25,Di33~Di35と、カーネルKRを構成する重みパラメータW1~W9とを積和演算する。
そして、シーケンスコントローラ21は、出力チャネルCHo[m]に、積和演算器MAC[m]からの、画素空間AR23を対象とした画素データDo23を、出力バンクOBKであるバンクBK[k]に転送させる。さらに、これと並行して、シーケンスコントローラ21は、図9の場合と異なり、出力チャネルCHo[j]に、積和演算器MAC[j]からの、画素空間AR24を対象とした画素データDo24を、別の出力バンクOBKであるバンクBK[q]に転送させる。
このように、シーケンスコントローラ21は、画素空間をスライドさせる毎に、画素空間内の画素データDiが、複数、ここでは2個の積和演算器MAC[m],MAC[j]に分散して転送されるように、入力用DMAコントローラDMAC2iを制御する。具体例として、シーケンスコントローラ21は、設定信号ST-CHi[m]を用いて、入力チャネルCHi[m]に、バンクBK[m]の図示しない画素空間AR11から図示しない画素空間AR65まで、1つ飛ばしのステップ幅で順次転送させるように設定する。同様に、シーケンスコントローラ21は、設定信号ST-CHi[j]を用いて、入力チャネルCHi[j]に、図示しない画素空間AR12から図示しない画素空間AR66まで、1つ飛ばしのステップ幅で順次転送させるように設定する。
これにより、複数、ここでは2個の入力チャネルCHi[m],CHi[j]、積和演算器MAC[m],MAC[j]および出力チャネルCHo[m],CHo[j]を並行して動作させることが可能になる。その結果、ニューラルネットワークエンジン16の利用効率を高めることができ、ニューラルネットワークの処理時間を短縮することが可能になる。
図4は、図1および図2におけるニューラルネットワークエンジンの、図3の場合とは異なる模式的な構成例および動作例を示す図である。図3において、次の畳み込み層では、例えば、画素データDo11~Do13,Do21~Do23,Do31~Do33からなる画素空間を用いて積和演算を行う必要がある。しかしながら、図3に示した方式では、当該画素データDo11~Do13,Do21~Do23,Do31~Do33は、出力バンクOBKである2個のバンクBK[k],BK[q]に分散して書き込まれている。このため、次の畳む込み層での処理に先立って、データの並び替え等が必要とされ得る。
そこで、図4では、シーケンスコントローラ21は、図3の場合と同様に、出力チャネルCHo[m]に、積和演算器MAC[m]からの、画素空間AR23を対象とした画素データDo23を、出力バンクOBKであるバンクBK[k]に転送させる。これと並行して、シーケンスコントローラ21は、図3の場合と異なり、出力チャネルCHo[j]に、積和演算器MAC[j]からの、画素空間AR24を対象とした画素データDo24を、バンクBK[q]ではなくバンクBK[k]に転送させる。
この際に、シーケンスコントローラ21は、出力チャネルCHo[m]からの画素データDo23と、出力チャネルCHo[j]からの画素データDo24とが、バンクBK[k]のアドレス空間上で隣接して配置されるように、出力用DMAコントローラDMAC2oを制御する。具体例として、バンクBK[k]の1番目のアドレスを#A[1]、最後のアドレスを#A[x]とする。
この場合、シーケンスコントローラ21は、設定信号ST-CHo[m]を用いて、出力チャネルCHo[m]に、#A[1]から#A[x-1]まで1つ飛ばしのステップ幅で順次転送させるように設定する。また、シーケンスコントローラ21は、設定信号ST-CHo[j]を用いて、出力チャネルCHo[j]に、#A[2]から#A[x]まで1つ飛ばしのステップ幅で順次転送させるように設定する。
これにより、図4に示されるように、出力バンクOBKであるバンクBK[k]において、入力バンクIBKであるバンクBK[m]の場合と同様の配置で、画素データDo11~Do16,…,Do61~Do66を書き込みことができる。これにより、データの並び替え等が不要となり、結果として、ニューラルネットワークの処理時間をより短縮することが可能になる。
図5は、図4に示したニューラルネットワークエンジンと図9に示したニューラルネットワークエンジンとの動作を比較した一例を示すタイミングチャートである。図5に示されるように、図9に示した方式では、1個の入力チャネルCHi[m]、積和演算器MAC[m]および出力チャネルCHo[m]を用いた一連の処理サイクルTc2が繰り返し実行される。一方、図4に示した方式では、2個の入力チャネルCHi[m],CHi[j]、積和演算器MAC[m],MAC[j]および出力チャネルCHo[m],CHo[j]を用いた一連の処理サイクルTc1が繰り返し実行される。
その結果、図4に示した方式を用いることで、図9に示した方式を用いる場合と比較して、ニューラルネットワークの処理時間を短縮することが可能になり、理想的には、半分程度に短縮することが可能になる。なお、ここでは、2個の積和演算器MAC[m],MAC[j]に分散する方式を示したが、同様にして、3個以上の積和演算器に分散することも可能である。
<実施の形態1の主要な効果>
以上、実施の形態1の方式では、1個の入力バンクIBKにおける各画素空間が、複数の積和演算器で分散して処理されるように入力用DMAコントローラDMAC2iを制御することで、ニューラルネットワークの処理時間を短縮することが可能になる。さらに、複数の積和演算器からの各画素データが1個の出力バンクOBK内で隣接して配置されるように出力用DMAコントローラDMAC2oを制御することで、ニューラルネットワークの処理時間をより短縮することが可能になる。
(実施の形態2)
<ニューラルネットワークエンジンの詳細>
図6は、実施の形態2による半導体装置において、図1におけるニューラルネットワークエンジンの詳細な構成例を示す図である。図6に示されるニューラルネットワークエンジン16は、図2に示した構成例とは、シーケンスコントローラ21aの構成および動作が若干異なっている。シーケンスコントローラ21aは、図2の場合と同様に、レジスタREGからのコマンドCMD1、またはプロセッサ17からのコマンドCMD2を入力する。
コマンドCMD1,CMD2には、単数または複数の入力バンクIBKの識別子と、単数または複数の出力バンクOBKの識別子とが含まれる。シーケンスコントローラ21aは、当該単数または複数の入力バンクIBKの識別子に基づいて単数または複数の入力チャネルを定める。そして、シーケンスコントローラ21aは、当該定めた単数または複数の入力チャネルを除く入力チャネルの中から分散用として用いる単数または複数の入力チャネルを定める。
具体例として、コマンドCMD1,CMD2によって、バンクBK[1]を入力バンクIBKとし、バンクBK[2]を出力バンクOBKとする動作と、バンクBK[3]を入力バンクIBKとし、バンクBK[4]を出力バンクOBKとする動作とが指示された場合を想定する。この場合、シーケンスコントローラ21aは、入力バンクIBKの識別子である2個のバンクBK[1],BK[3]の識別子に基づいて2個の入力チャネルCHi[1],CHi[3]を一義的に定める。そして、シーケンスコントローラ21aは、当該2個の入力チャネルCHi[1],CHi[3]を除く入力チャネルの中から分散用となる2個の入力チャネル、例えば、CHi[2],CHi[4]を定める。
また、シーケンスコントローラ21aは、図4に示したような動作モードである分散モードの有効/無効を定めるイネーブル信号MD-ENを入力する。ここで、例えば、バンクBK[m]を入力バンクIBKとし、バンクBK[k]を出力バンクOBKとするコマンドが入力された場合を想定する。シーケンスコントローラ21aは、分散モードが有効の場合には、図4に示したような動作を行わせ、分散モードが無効の場合には、図9に示したような動作を行わせる。また、シーケンスコントローラ21aは、分散モードが有効の場合には、予め記憶している動作設定テーブル23に基づいて、入力用DMAコントローラDMAC2iおよび出力用DMAコントローラDMAC2oの設定内容を定める。
図7は、図6における動作設定テーブルの構成例を示す概略図である。図7に示される動作設定テーブル23には、予め、入力コマンドと、当該入力コマンドに対応する動作設定内容とが登録される。シーケンスコントローラ21aは、例えば、バンクBK[m]を入力バンクIBKとし、バンクBK[k]を出力バンクOBKとするコマンドを入力した場合、動作設定テーブル23に基づいて、入力チャネルへの設定信号ST-CHi[m],ST-CHi[j]および出力チャネルへの設定信号ST-CHo[m],ST-CHo[j]を出力する。
図8は、図6におけるシーケンスコントローラの動作例を示すフロー図である。図8において、シーケンスコントローラ21aは、コマンドCMD1,CMD2を入力する(ステップS101)。具体例として、シーケンスコントローラ21aは、バンクBK[m]を入力バンクIBKとし、バンクBK[k]を出力バンクOBKとするコマンドを入力する。続いて、シーケンスコントローラ21aは、イネーブル信号MD-ENに基づいて、分散モードの有効/無効を判定する(ステップS102)。
ステップS102で分散モードが無効の場合(“No”の場合)、シーケンスコントローラ21aは、通常の動作を設定する(ステップS107)。すなわち、シーケンスコントローラ21aは、図9に示したように、入力チャネルCHi[m]に、入力バンクIBKであるバンクBK[m]における例えば画素空間AR23内の画素データDiと次の画素空間AR24内の画素データDiとを、同じ積和演算器MAC[m]に転送させる。また、シーケンスコントローラ21aは、出力チャネルCHo[m]に、積和演算器MAC[m]からの画素データDo23,Do24を出力バンクOBKであるバンクBK[k]に転送させる。
ステップS102で分散モードが有効の場合(“Yes”の場合)、シーケンスコントローラ21aは、入力したコマンドをキーに動作設定テーブル23を参照することで(ステップS103)、動作設定テーブル23へのコマンドの登録有無を判定する(ステップS104)。ステップS104でコマンドが動作設定テーブル23に登録無しの場合(“No”の場合)、シーケンスコントローラ21aは、通常の動作を設定する(ステップS107)。
ステップS104でコマンドが動作設定テーブル23に登録有りの場合(“Yes”の場合)、シーケンスコントローラ21aは、入力用DMAコントローラDMAC2i、ひいては出力用DMAコントローラDMAC2oにおける空きのチャネルを決定する(ステップS105)。すなわち、シーケンスコントローラ21aは、入力バンクIBK、例えばバンクBK[m]に基づいて一義的に定められる入力チャネルCHi[m]を除く入力チャネルを空きとみなし、空きの入力チャネルの中から分散用の入力チャネルCHi[j]を定める。なお、入力チャネルが定められると、積和演算器および出力チャネルも一義的に定められる。
そして、シーケンスコントローラ21aは、動作設定テーブル23に基づいて、各入力チャネルCHi[m],CHi[j]および各出力チャネルCHo[m],CHo[j]に設定信号を出力する(ステップS106)。なお、図7の例では、1個の入力バンクIBKと1個の出力バンクOBKとを指定するコマンドが登録されたが、例えば、1個の入力バンクIBKと2個の出力バンクOBKとを指定するコマンドと、対応する動作設定内容とを登録することで、当該コマンドに対して分散モードを適用することも可能である。
<実施の形態2の主要な効果>
以上、実施の形態2の方式を用いることでも、実施の形態1で述べた各種効果と同様の効果が得られる。また、プロセッサ17等に対して、分散モード用の特殊なコマンドを設けずとも、ニューラルネットワークエンジン16に分散モードでの動作を行わせることが可能になる。さらに、例えば、消費電力を低減したい場合には、分散モードを無効化し、処理時間を短縮したい場合には、分散モードを有効化するといった使い分けを行うことが可能になる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
10 半導体装置
15 システムバス
16 ニューラルネットワークエンジン
17 プロセッサ
18 メモリバス
20 MACユニット
21,21a シーケンスコントローラ
AR 画素空間
BK バンク
CHi 入力チャネル
CHo 出力チャネル
CMD コマンド
DMAC1,DMAC2 DMAコントローラ
Di,Do 画素データ
IBK 入力バンク
MAC 積和演算器
MD-EN イネーブル信号
MEM1,MEM2 メモリ
OBK 出力バンク
W 重みパラメータ

Claims (10)

  1. nを2以上の整数として、並列アクセスが可能なn個のバンクを有し、画素データを記憶するメモリと、
    それぞれが複数の画素データと複数の重みパラメータとを積和演算するn個の積和演算器と、
    前記メモリが記憶している画素データを、n個の入力チャネルを用いて前記n個の積和演算器にそれぞれ転送する入力用DMA(Direct Memory Access)コントローラと、
    前記n個の積和演算器からの画素データを、n個の出力チャネルを用いて前記メモリにそれぞれ転送する出力用DMAコントローラと、
    前記入力用DMAコントローラおよび前記出力用DMAコントローラを制御するシーケンスコントローラと、
    を備え、
    前記n個のバンクの中のいずれか1個を入力バンクとし、前記n個の入力チャネルの中のいずれか2個を第1の入力チャネルおよび第2の入力チャネルとし、前記第1の入力チャネルおよび前記第2の入力チャネルの転送先である積和演算器をそれぞれ第1の積和演算器および第2の積和演算器とした場合に、
    前記シーケンスコントローラは、前記第1の入力チャネルに、前記入力バンクにおける第1の画素空間内の画素データを前記第1の積和演算器に転送させ、前記第2の入力チャネルに、前記入力バンクにおける第2の画素空間内の画素データを前記第2の積和演算器に転送させるように、前記入力用DMAコントローラを制御する、
    半導体装置。
  2. 請求項1記載の半導体装置において、
    前記n個のバンクの中の他のいずれか1個を出力バンクとし、前記第1の積和演算器および前記第2の積和演算器を転送元とする出力チャネルをそれぞれ第1の出力チャネルおよび第2の出力チャネルとした場合に、
    前記シーケンスコントローラは、前記第1の出力チャネルに、前記第1の積和演算器からの画素データを前記出力バンクに転送させ、前記第2の出力チャネルに、前記第2の積和演算器からの画素データを前記出力バンクに転送させるように、前記出力用DMAコントローラを制御する、
    半導体装置。
  3. 請求項2記載の半導体装置において、
    前記第2の画素空間は、前記第1の画素空間を1回スライドさせた画素空間であり、
    前記シーケンスコントローラは、前記第1の出力チャネルからの画素データと、前記第2の出力チャネルからの画素データとが、前記出力バンクのアドレス空間上で隣接して配置されるように、前記出力用DMAコントローラを制御する、
    半導体装置。
  4. 請求項1記載の半導体装置において、
    前記シーケンスコントローラは、単数または複数の前記入力バンクの識別子を含んだコマンドを入力し、前記単数または複数の入力バンクの識別子に基づいて単数または複数の前記第1の入力チャネルを定め、前記単数または複数の第1の入力チャネルを除く入力チャネルの中から単数または複数の前記第2の入力チャネルを定める、
    半導体装置。
  5. 請求項1記載の半導体装置において、
    前記シーケンスコントローラは、
    前記入力バンクの識別子を含んだコマンドと、分散モードの有効/無効を定めるイネーブル信号とを入力し、
    前記分散モードが有効の場合、前記第1の入力チャネルに、前記入力バンクにおける前記第1の画素空間内の画素データを前記第1の積和演算器に転送させ、前記第2の入力チャネルに、前記入力バンクにおける前記第2の画素空間内の画素データを前記第2の積和演算器に転送させ、
    前記分散モードが無効の場合、前記第1の入力チャネルに、前記入力バンクにおける前記第1の画素空間内の画素データと前記第2の画素空間内の画素データとを、前記第1の積和演算器に転送させる、
    半導体装置。
  6. 一つの半導体チップで構成される半導体装置であって、
    ニューラルネットワークの処理を実行するニューラルネットワークエンジンと、
    重みパラメータを記憶する第1のメモリと、
    nを2以上の整数として、並列アクセスが可能なn個のバンクを有し、画素データを記憶する第2のメモリと、
    プロセッサと、
    前記ニューラルネットワークエンジン、前記第1のメモリおよび前記プロセッサを互いに接続するシステムバスと、
    前記ニューラルネットワークエンジンと前記第2のメモリとを接続するメモリバスと、
    を備え、
    前記ニューラルネットワークエンジンは、
    それぞれが複数の画素データと複数の重みパラメータとを積和演算するn個の積和演算器と、
    前記第1のメモリが記憶している重みパラメータを前記n個の積和演算器に転送する第1のDMA(Direct Memory Access)コントローラと、
    前記第2のメモリが記憶している画素データを、n個の入力チャネルを用いて前記n個の積和演算器にそれぞれ転送する第2の入力用DMAコントローラと、
    前記n個の積和演算器からの画素データを、n個の出力チャネルを用いて前記第2のメモリにそれぞれ転送する第2の出力用DMAコントローラと、
    前記第2の入力用DMAコントローラおよび前記第2の出力用DMAコントローラを制御するシーケンスコントローラと、
    を備え、
    前記n個のバンクの中のいずれか1個を入力バンクとし、前記n個の入力チャネルの中のいずれか2個を第1の入力チャネルおよび第2の入力チャネルとし、前記第1の入力チャネルおよび前記第2の入力チャネルの転送先である積和演算器をそれぞれ第1の積和演算器および第2の積和演算器とした場合に、
    前記シーケンスコントローラは、前記第1の入力チャネルに、前記入力バンクにおける第1の画素空間内の画素データを前記第1の積和演算器に転送させ、前記第2の入力チャネルに、前記入力バンクにおける第2の画素空間内の画素データを前記第2の積和演算器に転送させるように、前記入力用DMAコントローラを制御する、
    半導体装置。
  7. 請求項6記載の半導体装置において、
    前記n個のバンクの中の他のいずれか1個を出力バンクとし、前記第1の積和演算器および前記第2の積和演算器を転送元とする出力チャネルをそれぞれ第1の出力チャネルおよび第2の出力チャネルとした場合に、
    前記シーケンスコントローラは、前記第1の出力チャネルに、前記第1の積和演算器からの画素データを前記出力バンクに転送させ、前記第2の出力チャネルに、前記第2の積和演算器からの画素データを前記出力バンクに転送させるように、前記出力用DMAコントローラを制御する、
    半導体装置。
  8. 請求項7記載の半導体装置において、
    前記第2の画素空間は、前記第1の画素空間を1回スライドさせた画素空間であり、
    前記シーケンスコントローラは、前記第1の出力チャネルからの画素データと、前記第2の出力チャネルからの画素データとが、前記出力バンクのアドレス空間上で隣接して配置されるように、前記出力用DMAコントローラを制御する、
    半導体装置。
  9. 請求項6記載の半導体装置において、
    前記シーケンスコントローラは、単数または複数の前記入力バンクの識別子を含んだコマンドを入力し、前記単数または複数の入力バンクの識別子に基づいて単数または複数の前記第1の入力チャネルを定め、前記単数または複数の第1の入力チャネルを除く入力チャネルの中から単数または複数の前記第2の入力チャネルを定める、
    半導体装置。
  10. 請求項6記載の半導体装置において、
    前記シーケンスコントローラは、
    前記入力バンクの識別子を含んだコマンドと、分散モードの有効/無効を定めるイネーブル信号とを入力し、
    前記分散モードが有効の場合、前記第1の入力チャネルに、前記入力バンクにおける前記第1の画素空間内の画素データを前記第1の積和演算器に転送させ、前記第2の入力チャネルに、前記入力バンクにおける前記第2の画素空間内の画素データを前記第2の積和演算器に転送させ、
    前記分散モードが無効の場合、前記第1の入力チャネルに、前記入力バンクにおける前記第1の画素空間内の画素データと前記第2の画素空間内の画素データとを、前記第1の積和演算器に転送させる、
    半導体装置。
JP2022154238A 2022-09-27 2022-09-27 半導体装置 Pending JP2024048282A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2022154238A JP2024048282A (ja) 2022-09-27 2022-09-27 半導体装置
US18/348,534 US20240104034A1 (en) 2022-09-27 2023-07-07 Semiconductor device
CN202311164289.6A CN117785119A (zh) 2022-09-27 2023-09-11 半导体装置
DE102023126257.2A DE102023126257A1 (de) 2022-09-27 2023-09-27 Halbleitervorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022154238A JP2024048282A (ja) 2022-09-27 2022-09-27 半導体装置

Publications (1)

Publication Number Publication Date
JP2024048282A true JP2024048282A (ja) 2024-04-08

Family

ID=90140175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022154238A Pending JP2024048282A (ja) 2022-09-27 2022-09-27 半導体装置

Country Status (4)

Country Link
US (1) US20240104034A1 (ja)
JP (1) JP2024048282A (ja)
CN (1) CN117785119A (ja)
DE (1) DE102023126257A1 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019207458A (ja) 2018-05-28 2019-12-05 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス設定方法
JP2022154238A (ja) 2021-03-30 2022-10-13 京セラドキュメントソリューションズ株式会社 定着装置および画像形成装置

Also Published As

Publication number Publication date
US20240104034A1 (en) 2024-03-28
CN117785119A (zh) 2024-03-29
DE102023126257A1 (de) 2024-03-28

Similar Documents

Publication Publication Date Title
US11907827B2 (en) Schedule-aware tensor distribution module
US7707328B2 (en) Memory access control circuit
US11048509B2 (en) Providing multi-element multi-vector (MEMV) register file access in vector-processor-based devices
US20060101231A1 (en) Semiconductor signal processing device
WO2003007155A1 (fr) Dispositif a circuit integre
US10761851B2 (en) Memory apparatus and method for controlling the same
CN112732639B (zh) 一种粗粒度动态可重构处理器及其数据处理方法
CN110837483B (zh) 张量维度变换的方法以及装置
JP2022508028A (ja) 3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末
US11475287B2 (en) Managing control data
JP2024048282A (ja) 半導体装置
JP6294732B2 (ja) データ転送制御装置及びメモリ内蔵装置
CN110018847B (zh) 可配置寄存器及基于可配置寄存器的数据存取方法
CN116050492A (zh) 一种扩展单元
JP2008090455A (ja) マルチプロセッサ信号処理装置
US11816025B2 (en) Hardware acceleration
JP2008102599A (ja) プロセッサ
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
JPWO2019208566A1 (ja) プロセッサ装置
US20230376415A1 (en) Semiconductor device
US20210157495A1 (en) Device and method for controlling data-reading and -writing
CN116737107A (zh) 一种基于外积的矩阵乘法运算处理器、方法及介质
JP2024048930A (ja) 半導体装置
KR20240121783A (ko) 파인-그레인드 dram에서 규칙적 액세스 성능을 복구하기 위한 방법 및 장치
JPH0916469A (ja) 同期式dramからなるメモリに適したアドレス割り付けとアドレスロック機能を有するプロセッサシステム