JP7221242B2 - ニューラルネットワークデータ処理装置、方法および電子機器 - Google Patents

ニューラルネットワークデータ処理装置、方法および電子機器 Download PDF

Info

Publication number
JP7221242B2
JP7221242B2 JP2020097701A JP2020097701A JP7221242B2 JP 7221242 B2 JP7221242 B2 JP 7221242B2 JP 2020097701 A JP2020097701 A JP 2020097701A JP 2020097701 A JP2020097701 A JP 2020097701A JP 7221242 B2 JP7221242 B2 JP 7221242B2
Authority
JP
Japan
Prior art keywords
data
block
sub
data sub
module
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
JP2020097701A
Other languages
English (en)
Other versions
JP2021111315A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Kunlunxin Technology Beijing Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Kunlunxin Technology Beijing Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd, Kunlunxin Technology Beijing Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021111315A publication Critical patent/JP2021111315A/ja
Application granted granted Critical
Publication of JP7221242B2 publication Critical patent/JP7221242B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本願は、コンピュータ技術の人工知能チップ技術の分野に係り、特にニューラルネットワークデータ処理装置、方法および電子機器に関わる。
現在、ニューラルネットワークが広く利用されており、たとえば、深層畳み込みニューラルネットワークCDNN(Convolutional Deep Nueral Networks)は、音声認識、画像認識、自然言語処理などのインターネット用途に広く利用されている。しかしながら、ニューラルネットワーク計算は、ニューラルネットワークプロセッサNPU(Neural Processing Unit)内で行われることが多く、ニューラルネットワーク計算を実行した後、計算結果をオフチップメモリに戻す必要がある。オフチップメモリの帯域幅が制限されるため、多くの実際のサービスシナリオでは、オフチップとオンチップの間のデータ搬送時間が実際の計算時間を超え、ニューラルネットワークの性能が比較的悪い。
本願は、ニューラルネットワークデータ処理装置、方法および電子機器を提供し、ニューラルネットワークの性能が比較的悪いという問題を解決しようとする。
第1方面では、本願は、ニューラルネットワークデータ処理装置を提供する。当該装置は、ディレクトメモリアクセスDMA(Direct-Memory Access)タスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得するための指令解析モジュールと、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取るためのデータ読み取りモジュールと、前記第1データサブブロックをリアルタイムに圧縮するためのデータ処理モジュールと、
前記データ処理モジュールから出力された前記第1データサブブロックの前記圧縮後の圧縮データを受信した場合に、前記圧縮データを出力することが可能なデータ書き出しモジュールとを含む。
データサブブロックによる圧縮が行われるため、データ搬送効率を高め、さらにニューラルネットワークの性能を高めることができる。
選択可能に、前記データ処理モジュールは、さらに、前記第1データサブブロックに対しデータ処理を行うことに用いられる。
第1データサブブロックのデータ処理を行うため、上記装置のデータ処理性能を高めることができる。
選択可能に、前記データ処理モジュールは、前記第1データサブブロックをキャッシュするための元データキャッシュと、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るための圧縮アルゴリズムモジュールと、前記圧縮データの長さをキャッシュするための長さフィールドキャッシュと、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在すると判断すると、第1ストローブ信号を生成し、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在しないと判断するのであれば、第2ストローブ信号を生成し、前記長さキャッシュがヒットされなければ、第3ストローブ信号を生成するための圧縮制御ステートマシンと、前記第1ストローブ信号に基づいて前記圧縮アルゴリズムモジュールから前記圧縮データを読み取り、または、前記第2ストローブ信号に基づいて前記元データキャッシュから前記第1データサブブロックを読み取り、または、前記第3ストローブ信号に基づいて前記長さフィールドキャッシュから前記圧縮データの長さを読み取るためのマルチプレクサと前記マルチプレクサによって読み取られた前記圧縮データ、前記第1データサブブロック又は前記圧縮データの長さを前記データ書き出しモジュールに出力するためのデータシフトモジュールとを含み、前記データ書き出しモジュールは、前記データシフトモジュールから出力された前記圧縮データを受信した場合に、前記圧縮データを出力する。
当該実施形態において、マルチプレクサから適切なデータを出力するように上記圧縮制御ステートマシンによって制御することによって、データの長さを制御可能にし、余分なメモリ空間を確保することを回避して、メモリ空間の節約を図ることができるという効果を奏する。
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプを含み、前記データ読み取りモジュールは、前記第1データサブブロックの配置情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るためのデータスプライシングモジュールを含む。
前記読み取った第1データサブブロックのシフトおよびスプライシング処理をして前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
選択可能に、前記データ読み取りモジュールは、前記配置情報を読み取り、コマンド読み取り要求を前記データスプライシングモジュールに送信するためのデータ出力コマンドキャッシュと、前記データスプライシングモジュールから出力された前記連続で完全なデータストリームをキャッシュするためのデータキャッシュと、前記データキャッシュの中の前記連続で完全なデータストリームをパッキングし、パッキングした後のデータを前記データ処理モジュールに出力するためのデータ出力ステートマシンとをさらに含む。
上記データ出力ステートマシンによってデータを正しく整然と出力することができる。
選択可能に、前記データ読み取りモジュールは、前記第1データサブブロックのアドレス情報を読み取るための読み取りコマンドキャッシュと、前記読み取りコマンドキャッシュから指令を取得し、内部キャッシュの読み取りに必要なインタフェース信号を前記アドレス情報に基づいて生成するためのデータ読み取りステートマシンとをさらに含む。
上記データ読み取りステートマシンによってデータを正しく整然と読み取ることができる。
選択可能に、前記データ書き出しモジュールは、前記第1データサブブロックの前記圧縮後の圧縮データをキャッシュするためのデータ出力キャッシュと、前記第1データサブブロックの配置情報をキャッシュするための配置情報キャッシュと、前記第1データサブブロックの目的アドレスをキャッシュするための出力アドレスキャッシュと、前記配置情報と前記目的アドレスに基づいて前記第1データサブブロックのデータマスクを生成し、前記第1データサブブロックに対応するインタフェースタイミングを生成するためのインタフェースタイミング生成モジュールとを含む。
上記第1データサブブロックのデータマスクとインタフェースタイミングによって、上記第1データサブブロックを指定位置に正しく整然と出力することができる。
選択可能に、前記装置は、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するためのアドレス生成モジュールをさらに含む。
上記アドレスチャネル信号によって圧縮データのランダムアクセスをサポートし、さらにニューラルネットワークの性能を高めることができる。
第2方面では、本願は、電子機器を提供し、本願によるニューラルネットワークデータ処理装置を含むことを特徴とする。
第3方面では、本願は、ニューラルネットワークデータ処理方法を提供する。当該方法において、DMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得することと、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取ることと、前記第1データサブブロックをリアルタイムに圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することとを含む。
データサブブロックによる圧縮が行われるので、データ搬送効率を高め、さらにニューラルネットワークの性能を高めることができる。
選択可能に、前記の前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することは、前記第1データサブブロックおよび前記第1データサブブロックのデータの長さをキャッシュすることと、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るとともに、前記圧縮データの長さを記録することと、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断し、圧縮利得が存在するのであれば前記圧縮データを出力し、圧縮利得が存在しないのであれば、前記第1データサブブロックのデータを出力することとを含む。
前記圧縮データの長さが前記第1データサブブロックのデータの長さより小さい場合に前記圧縮データを出力するため、データの長さを制御可能にし、余分なメモリ空間を確保することを回避して、メモリ空間の節約を図ることができるという効果を奏する。
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報を含み、前記の前記配置情報に基づいて第1データサブブロックを読み取ることは、前記第1データサブブロックのアドレス情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得ることを含む。
前記読み取った第1データサブブロックのシフトおよびスプライシング処理をして前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
選択可能に、前記方法において、前記圧縮データの長さをキャッシュすることと、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力することとをさらに含む。
上記アドレスチャネル信号によって圧縮データのランダムアクセスをサポートし、さらにニューラルネットワークの性能を高めることができる。
本願の1つの実施例のニューラルネットワークデータ処理装置は、ディレクトメモリアクセスDMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得するための指令解析モジュールと、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取るためのデータ読み取りモジュールと、前記第1データサブブロックを圧縮するためのデータ処理モジュールと、前記第1データサブブロックの前記圧縮後の圧縮データを出力するためのデータ書き出しモジュールとを含む。したがって、ニューラルネットワークの性能が比較的悪いという問題を克服し、さらにニューラルネットワークの性能を高めるという技術効果を達成する。
上記の選択可能な形態によるほかの効果は、以下、具体的な実施例に関連して説明される。
図面は、本解決策をより良く理解するために使用され、本願を限定するものではない。
本願によるニューラルネットワークデータ処理装置の構造図である。 本願によるデータサブブロックの分割概略図である。 本願によるデータ処理モジュールの構造図である。 本願によるデータ読み取りモジュールの構造図である。 本願によるデータ書き出しモジュールの構造図である。 本願による別のニューラルネットワークデータ処理装置の構造図である。 本願によるニューラルネットワークデータ処理方法のフローチャートである。 本願による別のニューラルネットワークデータ処理方法のフローチャートである。
以下、理解に役立つための本願の実施例の様々な細部を含めて本願の例示的な実施例は
、図面に基づいて説明されるが、例示的なものに過ぎないとされるべきである。したがって、当業者は、本願の範囲および趣旨から逸脱することなく、ここに記載された実施例に様々な変更および修正を加えることができることを認識するであろう。また、説明の明確化および簡略化のため、以下の記載では、周知の機能および構成についての記載は、省略する。
図1を参照する。図1は、本願によるニューラルネットワークデータ処理装置の構造図である。図1に示すように、ニューラルネットワークデータ処理装置100は、指令解析モジュール101と、データ読み取りモジュール102と、データ処理モジュール103と、データ書き出しモジュール104とを含む。
指令解析モジュール101は、DMAタスクを複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得することに用いられる。ここで、サブタスクは、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する。
ここで、上記ニューラルネットワークデータ処理装置100は、ニューラルネットワーク計算用のチップ(または、プロセッサと呼ぶ)、たとえば、ニューラルネットワークプロセッサNPU(Neural Processing Unit)またはハードウェアアクセラレータである。
ここで、指令解析モジュール101は、処理対象の指令を受信し、指令を解析する役割を担う。受信されたDMAタスク(たとえば、データ搬送および処理タスク)を複数のサブタスクに分解する。
上記ニューラルネットワーク搬送データは、ニューラルネットワークの計算を実行して得られるデータ、たとえば、重み行列や特徴マップ(feature map)などのデータである。また、上記データサブブロックは、上記搬送データを分割して得られるデータサブブロックである。たとえば、図2に示すように、搬送データを、ベースブロック、アラインメントブロックおよびリマッピングレスブロックのデータサブブロックに分割することができる。ここで、ベースブロック毎のデータサイズは固定であり、この固定サイズは予め配置されていてもよく、具体的には、実際のニーズに応じて配置することができる。アラインメントブロックおよびリマッピングレスブロックは、搬送データブロックを複数のベースブロックに分割した後に残ったベースブロックを構成できないサブブロックであり、具体的には、図2に示すように、右に残ったサブブロックをアラインメントブロックと称し、下に残ったサブブロックをリマッピングレスブロックと称する。
また、上記の各サブタスクに対応するデータサブブロックの配置情報を取得することは、データサブブロックの配置情報を生成し、かつ配置情報は、データサブブロックの長さ、アドレス、およびデータサブブロックが圧縮されているか否かを示す圧縮情報などを含む。
上記のサブタスクがニューラルネットワーク搬送データのデータサブブロックに一対一に対応することは、各サブタスクがニューラルネットワーク搬送データのサブブロックに対応し、当該データが1つの行列である。その後、ほかのモジュールに対し、各サブブロックに対応する配置情報を生成し、当該配置情報は、タスク配置情報と称する。さらに、上記配置情報は、データのアドレス、長さ、圧縮の有無など、他のモジュールが1つのサブブロックを処理するために必要な各種情報を含む。
また、指令解析モジュール101が処理可能な指令には、DMA配置指令、DMA実行指令、DMA同期指令等が含まれる。ここで、DMA配置指令は、後続のDMA実行指令のパラメータを設定するために使用される。DMA実行指令は、1つのデータ搬送タスクの開始を宣言するために使用され、使用されるパラメータは、その前のDMA配置指令によって設定される。DMA同期指令は、システムの同期フラグであり、この指令前の全指令実行完了後に装置から処理完了信号が返送され、上位のソフトハードウェアシステムとの同期が完了する。
さらに、指令解析モジュール101が指令を受け取ると、まず指令タイプを判断する。DMA配置指令であれば、対応する内部レジスタに書き込み、指令解析モジュール101内部で記録する。DMA実行指令であれば、既存の内部レジスタ配置にしたがって、サブブロックのタスク配置情報の生成を開始する。DMA同期指令であれば、応答処理モジュールに対し中断フラグ信号を送信する。当該フラグは、その送信前の搬送データ量の総量を記録する。
また、ニューラルネットワークデータ処理装置100のキャッシュ機能が有効であると、指令解析モジュール101は、サブブロックの目的アドレスからキャッシュヒットか否かを判断し、キャッシュミスの場合にキャッシュフラッシュの配置情報を挿入する
さらに、指令解析モジュール101が指令を処理して生成するタスク配置情報は、ベースブロック配置情報、アラインメントブロック配置情報、リマッピングレスブロック配置情報、キャッシュブロック配置情報の4種類を含む。
さらに、指令解析モジュール101は、アドレス並べ替え機能が有効か否かを設定し、アドレス並べ替え機能が有効でない場合、データを全てリマッピングレスブロックとして処理する。ここで、リマッピングレスブロックとして処理する場合、これらのサブブロックは、圧縮しなくてもよい。
また、本願において、ニューラルネットワークは、CDNNを含んでいるが、これに限定されず、たとえば、他のディープニューラルネットワークであってもよい。
データ読み取りモジュール102は、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取ることに用いられる。
ここで、前記第1データサブブロックは、前記搬送データのうちのいずれかのデータサブブロックであってもよく、いずれかのベースブロックであることが好ましい。
上記の前記配置情報に基づいて第1データサブブロックを読み取ることは、内部キャッシュから指示されるデータサブブロックを配置情報に基づいて読み取る。
ここで、上記データ読み取りモジュール102は、指令解析モジュール101から配置情報を取得し、配置情報に基づいて第1データサブブロックを読み取る。ここで、読み取りは、上記装置の内部キャッシュから読み取る。たとえば、データ読み取りモジュール102は、指令解析モジュール101から配置情報を取得し、内部キャッシュからのデータ読み取り作業を完了する。さらに、読み取られたデータを整理し、特定の内部データ形式(たとえば、AXIプロトコル、データ-データ有効信号からなる簡易データプロトコル)を得てデータ処理モジュール103に伝達する。
データ処理モジュール103は、前記第1データサブブロックを圧縮することに用いられる。
データ処理モジュール103は、データ読み取りモジュール102から出力した第1データサブブロックを取得して圧縮する。
本願では、データサブブロックを圧縮することは、限定ではないが、ゼロ値圧縮、ランレングス符号化、ハフマン符号化、コロム符号化などを含む圧縮方式を用いて圧縮する。
データ書き出しモジュール104は、前記第1データサブブロックの前記圧縮後の圧縮データを出力することに用いられる。
データ書き出しモジュール104は、上記圧縮データをオフチップメモリに書き込み、さらに、データ処理モジュールによる処理データをキャッシュし、出力インタフェースの要求に応じて、対応するデータ出力インタフェースタイミングを生成する。
なお、本願で上記装置に関連する図面において、破線は、モジュール間の制御のための制御フローを示し、実線は、モジュール間のデータ伝送のためのデータラインを示す。
本実施例では、上記装置により、データサブブロックによる圧縮を実現することができ、データ搬送効率を向上させ、さらにニューラルネットワークの性能を向上させることができる。
選択可能に、前記データ処理モジュール103は、さらに、前記第1データサブブロックに対するデータ処理を行うことに用いられる。
たとえば、データのシフト、固定小数点化、最大値の検索などのデータ処理であり、具体的には、第1データサブブロックの元データ、圧縮データ、または圧縮長に対して、データのシフト、固定小数点化、最大値の検索などのデータ処理を行う。それによってデータ処理性能を向上させる。
選択可能に、図3に示すように、前記データ処理モジュール103は、前記第1データサブブロックをキャッシュするための元データキャッシュ1031と、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るための圧縮アルゴリズムモジュール1033と、前記圧縮データの長さをキャッシュするための長さフィールドキャッシュ1032と、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在すると判断すると、第1ストローブ信号を生成し、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在しないと判断するのであれば、第2ストローブ信号を生成し、前記長さキャッシュがヒットされなければ、第3ストローブ信号を生成するための圧縮制御ステートマシン1034と、前記第1ストローブ信号に基づいて前記圧縮アルゴリズムモジュールから前記圧縮データを読み取り、または、前記第2ストローブ信号に基づいて前記元データキャッシュから前記第1データサブブロックを読み取り、または、前記第3ストローブ信号に基づいて前記長さフィールドキャッシュから前記圧縮データの長さを読み取るためのマルチプレクサ1035とを含む。
ここで、上記の前記長さキャッシュがヒットされなければ、第3ストローブ信号を生成することは、上記圧縮データの長さフィールドがメモリの記憶アドレス空間にヒットせず、第3ストローブ信号を生成することによって、マルチプレクサ1035が上記長さフィールドキャッシュ1032にキャッシュされた前記圧縮データの長さを読み取って出力する。具体的には、長さフィールドは、長さブロックとして処理される。
さらに、図3に示すように、データ処理モジュール103は、前記マルチプレクサによって読み取られた前記圧縮データまたは前記第1データサブブロックを出力するためのデータシフトモジュール1036をさらに含む。
もちろん、ここでのデータシフトモジュール1036は、一例である。たとえば、データ処理モジュール103は、シフト、固定小数点化、最大値の検索などのデータ処理のためのモジュールのような、一部のデータの前処理動作に用いられるモジュールを含む。
上記データ処理モジュール103は、データ読み取りモジュール102から出力した各データサブブロックをリアルタイムに圧縮し、圧縮処理の粒度が1つのサブブロックである。
ここで、上記元データキャッシュ1031、長さフィールドキャッシュ1032、圧縮アルゴリズムモジュール1033、圧縮制御ステートマシン1034およびマルチプレクサ1035は、データ圧縮モジュールと呼ぶことができる。
ここで、元データキャッシュ1031は、データ読み取りモジュール102から送信されたデータを全て受信し、キャッシュ内部に格納し、マルチプレクサによる読み取りに供する。サブブロックがベースブロックであり、かつ圧縮長さ情報がデータ長さ情報より小さい場合、元データキャッシュ1031は、内部キャッシュの対応ベースブロックの元情報を無効に設定して、メモリ空間を解放する。また、サブブロックがアラインメントブロック、リマッピングレスブロックおよび圧縮後の長さがオリジナル長さ以上のベースブロックである場合には、マルチプレクサ1035により、そのモジュールからデータを取り出す。
長さフィールドキャッシュ1032は、長さフィールド書き出し回数を減らすために設計されたキャッシュであり、ダイレクトマッピングまたは他のマッピング方式を用いて、キャッシュのメモリ空間を長さフィールドの実際の記憶アドレスに対応させ、キャッシュがヒットされない場合または1つのタスクの実行が完了した後にのみ、キャッシュ内のデータをまとめて書き出す。長さフィールドキャッシュ1032は、圧縮アルゴリズムモジュール1033から、各ベースブロックの圧縮が実行された後に出力された長さ情報を受信し、ベースブロックの目的アドレスに基づいて、アドレスマッピング規則と組み合わせて、キャッシュ内の対応する長さフィールドの特定の記憶位置を取得し、その位置を更新済みのフラグにする。次に処理が必要なサブブロックがキャッシュブロックである場合、ルチプレクサ1035は、当該モジュールから更新済みのフラグにされたすべての長さフィールドデータを読み取るとともに、すべての更新済みのフラグをクリアする。
圧縮アルゴリズムモジュール1033は、圧縮アルゴリズムに基づいてベースブロックの圧縮を行うことに用いられる。ここで、圧縮アルゴリズムは、限定ではないが、ゼロ値圧縮、ランレングス符号化、ハフマン符号化、コロム符号化などの圧縮方式による圧縮を含む。サブブロックがベースブロックである場合、圧縮アルゴリズムモジュール1033は、データ読み取りモジュールから送信されたデータを受信し、内部に統合された圧縮アルゴリズムを用いてデータ圧縮を完了させ、圧縮されたデータの長さが元データ長以上である場合、元データ長をそのまま出力し、同時に、圧縮されたデータを無効にし、内部空間を解放する。圧縮後データ長が元データ長よりも小さい場合には、圧縮後データ長を出力し、圧縮後データ長を有効にして、マルチプレクサによるストローブを待って、圧縮後データを出力する。圧縮後データの出力が完了すると、記憶位置を無効にし、メモリ空間を解放する。
圧縮制御ステートマシン1034は、指令解析モジュール102から送信される配置情報を受信して処理し、配置情報に含まれるサブブロックタイプとデータ長情報とに基づいて、圧縮アルゴリズムモジュール1033からの圧縮長情報と組み合わせて、選択すべきデータパスを判断することができる。サブブロックがベースブロックであり、かつ圧縮長情報がデータ長情報よりも小さい場合には、第1ストローブ信号である圧縮アルゴリズムモジュールパスストローブ信号を生成する。サブブロックがベースブロックであり、かつ圧縮長情報がデータ長情報以上である場合には、第2ストローブ信号である元データキャッシュパスストローブ信号を生成する。さらに、サブブロックがアラインメントブロックまたはリマッピングレスブロックである場合には、第2ストローブ信号である元データキャッシュパスストローブ信号を生成する。サブブロックがキャッシュブロックである場合は、長さフィールドキャッシュパスストローブ信号を生成する。
マルチプレクサ1035は、圧縮制御ステートマシン1034が生成したパスストローブ信号に基づいて、対応するパスからデータを取得して出力し、すなわち、前記第1ストローブ信号に基づいて前記圧縮アルゴリズムモジュールから前記圧縮データを読み取り、または、前記第2ストローブ信号に基づいて、前記元データキャッシュから前記第1データサブブロックを読み取る。
データシフトモジュール1036は、データサブブロックの目的アドレスに基づいて、データ圧縮モジュールが出力するデータを、対応する出力インタフェースビット幅にデータが整合するようにシフトする。
当該実施形態では、上記圧縮モジュールにより、データ処理モジュール103から出力されるデータの長さを制御可能なものとし、かつDMAチャネルでの圧縮を実現して、キャッシュのオーバーヘッドを低減することができる。
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプなどを含む。図4に示すように、前記データ読み取りモジュール102は、前記第1データサブブロックの配置情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るためのデータスプライシングモジュール1021を含む。
ここで、上記第1データサブブロックのアドレス情報は、不連続アドレス情報であり、具体的には、たとえば、図2に示すように、本願における各データサブブロックのアドレスは、不連続アドレスである。すなわち、上記の前記第1データサブブロックを読み取ることは、飛ばしながら読み取ることであり、第1データサブブロックが図2に示されるベースブロックaであることを例とし、1回目にベースブロックaの1行目のデータを読み取り、2回目にベースブロックaの2行目のデータを読み取り、1行目のデータと2行目のデータとをスプライシングし、次の行のデータをその前のデータとをスプライシングして前記第1データサブブロックの連続で完全でデータストリームを得る。
前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
選択可能に、前記データ読み取りモジュール102は、前記配置情報を読み取り、コマンド読み取り要求を前記データスプライシングモジュールに送信するためのデータ出力コマンドキャッシュ1022と、前記データスプライシングモジュールから出力された前記連続で完全なデータストリームをキャッシュするためのデータキャッシュ1023と、前記データキャッシュの中の前記連続で完全なデータストリームをパッキングし、パッキングした後のデータを前記データ処理モジュールに出力するためのデータ出力ステートマシン1024とをさらに含む。
ここで、上記配置情報は、圧縮するか否かを示す圧縮情報をさらに含む。
上記データ出力コマンドキャッシュ1022は、指令解析モジュール101から前記長さと圧縮情報のうちの少なくとも一つを読み取り、たとえば、図4に示すように、指令解析モジュール101から生成されて少なくともデータサブブロックの長さと圧縮情報のうちの少なくとも一つを含むデータ配置情報を指令解析モジュール101から受信し、データ配置情報を一時的に記憶する。受信した配置情報は、それぞれ、コマンド読み取り要求の送信と、受信したデータの処理に用いられる。
一方、上記データキャッシュ1023は、データを一時的に記憶し、後続のデータ出力ステートマシンの処理が間に合わない場合に生じるデータ損失を回避することができる。さらに、データキャッシュ1023は、同時にデータ読み取りステートマシンにキャッシュデータ量を提供して、読み取りコマンドを送信するデータ量を制御し、過剰なデータを受け取ってデータキャッシュを溢れさせ、データを失うことを回避することもできる。
データ出力ステートマシン1024は、データ出力コマンドキャッシュから指令を取得し、配置情報に基づいて、データキャッシュ内のデータを所定のフォーマットにパッキングして、内部データインタフェースを介して後段のデータ処理モジュールに送信する。
選択可能に、前記データ読み取りモジュール102は、前記第1データサブブロックのアドレス情報を読み取るための読み取りコマンドキャッシュ1025と、前記読み取りコマンドキャッシュから指令を取得し、内部キャッシュの読み取りに必要なインタフェース信号を前記アドレス情報に基づいて生成するためのデータ読み取りステートマシン1026とをさらに含む。
ここで、上記読み取りコマンドキャッシュ1025は、指令解析モジュール101から第1データサブブロックのアドレス情報を受信し、たとえば、図4に示すように、指令解析モジュール101から生成されて少なくとも第1データサブブロックのアドレス情報を含むアドレス配置情報を読み取る。また、読み取りコマンドキャッシュ1025が受信した配置情報は、それぞれ読み取りコマンド要求の送信および受信データの処理に用いられる。
また、データ読み取りステートマシン1026は、読み取りコマンドキャッシュ1025から指令を取得し、配置情報に基づいて、内部キャッシュの読み取りに必要なインタフェース信号を生成する。なお、ここでのインタフェース信号は、内部でのデータ読み取りをトリガするための信号である。
上記読み取りコマンドキャッシュ1025およびデータ読み取りステートマシン1026により、データ読み取りモジュール102によるデータ読み取りの正確性を高めることができる。
選択可能に、図5に示すように、前記データ書き出しモジュール104は、前記第1データサブブロックの前記圧縮後の圧縮データをキャッシュするためのデータ出力キャッシュ1041と、前記第1データサブブロックの配置情報をキャッシュするための配置情報キャッシュ1042と、前記第1データサブブロックの目的アドレスをキャッシュするための出力アドレスキャッシュ1043と、前記配置情報と前記目的アドレスに基づいて前記第1データサブブロックのデータマスクを生成し、前記第1データサブブロックに対応するインタフェースタイミングを生成するためのインタフェースタイミング生成モジュール1044とを含む。
データ書き出しモジュールは、データ処理モジュールによって処理されたデータをキャッシュし、その後、出力インタフェースの要求に応じて、対応するデータ出力インタフェースタイミングを生成することを担う。図5に示すように、このモジュールは、データ出力キャッシュ、配置情報キャッシュ、インタフェースタイミング生成モジュール、および出力アドレスキャッシュを含む。
ここで、上記データ出力キャッシュ1041は、データ処理モジュール103で処理された出力すべきデータを受信して一時的に記憶し、具体的には、圧縮データまたはデータサブブロックの元データを含む。
配置情報キャッシュ1042は、インタフェースのデータマスク信号を生成するために主に使用される配置情報を指令解析モジュール101から受信する。
出力アドレスキャッシュ1043は、データサブブロックの目標アドレス、すなわち出力アドレスを書込みアドレスインタフェースから捕捉し、インタフェースタイミング生成モジュール1044の使用に供する。
インタフェースタイミング生成モジュール1044は、配置情報キャッシュ1042から配置情報を取得し、データ出力キャッシュ1041からデータを取得し、配置情報に基づいて、データに対応するデータマスクを生成し、次に、データ出力インタフェースのプロトコル規則に基づいて、対応するインタフェースタイミングを生成する。さらに、インタフェースタイミング生成モジュール1044は、一部のデータサブブロックに対し、書き込みデータのビット幅がメモリのビット幅より小さい部分書き込みを最適化する。たとえば、現在のデータサブブロックの先頭記憶アドレスが揃っているかを判断し、揃っていない場合、1つ前のデータサブブロックと現在のデータサブブロックの記憶アドレスが連続しているかを判断し、連続していれば、1つ前のデータサブブロックが圧縮されているかを判断し、圧縮されていれば、現在のデータサブブロックの先頭ビート(beat)の完全書き込みを行う。ここで、完全書き込みは、書き込みデータのビット幅がメモリのビット幅であり、現在のデータサブブロックの部分書き込みの回数を減らす、すなわち、データサブブロックに対し部分書き込みを最適化し、書き込み回数を減らして、さらにニューラルネットワークの処理性能を向上させる。さらに、部分書き込みの最適化が完了した場合、データマスクは、修正済みマスクが部分書き込みを完全書き込みに変換することを示すように修正される。
さらに、インタフェースタイミング生成モジュール1044は、出力アドレスキャッシュ1043からアドレス発生状況の情報を取得して、アドレスチャネルとデータチャネルに分離したバスプロトコルに対して、2つのチャネルのデータの先後順の制御を実現することができる。
当該実施形態では、データ書き出しモジュール104により、ニューラルネットワークの書き込み性能を最適化することができる。
選択可能に、図6に示すように、上記装置は、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するためのアドレス生成モジュール105をさらに含む。
ここで、上記第1データサブブロックの目的アドレスは、第1データサブブロックのオフチップメモリにおける記憶アドレス、または出力アドレスである。
上記の前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成することは、第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を得るために、圧縮データの長さに基づいて、アドレス分解論理により目的アドレスを分解する。たとえば、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより大きい場合には、第1データサブブロックの目的アドレスを分解し、たとえば128Bまたは64Bのアドレスチャネル信号に分解して、アドレスチャネル信号によりデータのランダムアクセスをサポートする。または、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより小さい場合には、第1データサブブロックの目的アドレスをアドレスチャネル信号として、アドレスチャネル信号によりデータのランダムアクセスをサポートする。
さらに、圧縮機能が有効であり、かつ処理対象のデータサブブロックがベースブロックである場合、アドレス生成モジュール105は、データ処理モジュール103から出力された圧縮長さ情報を追加的に受信し、受信した配置情報と組み合わせて、対応するバスプロトコルに必要なアドレスチャネル信号を生成する。
選択可能に、図6に示すように、上記装置は、オフチップメモリ、バス、またはオンチップネットワークから返されてきた応答信号を処理し、指令解析モジュール101から送られてきた中断フラグに合わせて処理済み中断を生成して指令解析モジュール101に送信するための応答処理モジュール106をさらに含む。
たとえば、指令解析モジュール101は、指令を受信してDMA同期指令であると判断すると、中断フラグ信号を応答処理モジュールに送信する。当該フラグは、当該フラグの送信前の搬送データ量の総量を記録する。
さらに、応答処理モジュール106は、指令解析モジュール101の配置情報出力インタフェースを捕捉し、指令カウンタを用いてカウントする。指令解析モジュール101から中断フラグを受信すると、応答処理モジュール106は、現在の指令カウンタの値を保存する。一方、応答処理モジュール106は、書き込み応答インタフェースの情報を受信し、応答カウンタを用いてカウントする。応答処理モジュール106は、中断フラグが立ったときに退避していた指令カウンタの値と、現在の応答カウンタの値とを比較していき、後者が前者以上の場合には、その中断フラグの直前の全ての指令が実行済みであることを示し、処理済み中断を発生させて指令解析モジュール101に送信するとともに、退避していた指令カウンタの値を無効にする。
さらに、図6に示すように、上記装置は、書き込み応答インタフェース、データ読み取りインタフェース、アドレス読み取りインタフェース、データ書き込みインタフェースおよびアドレス書き込みインタフェースをさらに備える。ここで、書き込み応答インタフェース、データ書き込みインタフェースおよびアドレス書き込みインタフェースは、オフチップメモリの書き込みインタフェースであり、または、オフチップメモリの書き込みインタフェースに接続されるバス、オンチップネットワークの書き込みインタフェースである。上記データ読み取りインタフェースおよびアドレス読み取りインタフェースは、オンチップキャッシュの読み取りインタフェースであり、または、オンチップキャッシュの読み取りインタフェースに接続されるバス、オンチップネットワークの読み取りインタフェースである。
本実施例では、上記装置により、データサブブロックによる圧縮を実現することができ、データ搬送効率を向上させ、さらにニューラルネットワークの性能を向上させることができる。
本願は、さらに、本願によるニューラルネットワークデータ処理装置を含む電子機器を提供する。この電子機器は、携帯電話、コンピュータ、サーバなどのニューラルネットワーク計算を行うことができる電子機器を含むが、これらに限定されない。
図7を参照する。図7は、本願によるニューラルネットワークデータ処理方法のフローチャートであり、図7に示すように、以下のステップを含む。
ステップS701において、DMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得する。
ここで、上記DMAタスクは、搬送データタスクであり、または、データ搬送および処理タスクである。
上記ニューラルネットワーク搬送データは、ニューラルネットワークの計算を実行して得られるデータ、たとえば、重み行列や特徴マップ(feature map)などのデータである。また、上記データサブブロックは、上記搬送データを分割して得られるデータサブブロックである。たとえば、図2に示すように、搬送データを、ベースブロック、アラインメントブロックおよびリマッピングレスブロックのデータサブブロックに分割することができる。ここで、ベースブロック毎のデータサイズは固定であり、この固定サイズは予め配置されていてもよく、具体的には、実際のニーズに応じて配置することができる。アラインメントブロックおよびリマッピングレスブロックは、搬送データブロックを複数のベースブロックに分割した後に残ったベースブロックを構成できないサブブロックであり、具体的には、図2に示すように、右に残ったサブブロックをアラインメントブロックと称し、下に残ったサブブロックをリマッピングレスブロックと称する。
また、上記の各サブタスクに対応するデータサブブロックの配置情報を取得することは、データサブブロックの配置情報を生成し、かつ配置情報は、データサブブロックの長さ、アドレス、およびデータサブブロックが圧縮されているか否かを示す圧縮情報などを含む。
上記のサブタスクがニューラルネットワーク搬送データのデータサブブロックに一対一に対応することは、上記DMAタスクが上記ニューラルネットワーク搬送データに対応する。DMAタスクがサブタスクに分解されると、対応的にニューラルネットワーク搬送データがデータサブブロックに分解される。たとえば、DMAタスクをデータ搬送タスクとする場合、サブタスクは、1つのデータサブブロックを搬送するタスクである。DMAタスクをデータ搬送および処理タスクとする場合、サブタスクは、1つのデータサブブロックを搬送して処理するタスクである。
また、本願において、ニューラルネットワークは、CDNNを含んでいるが、これに限定されず、たとえば、他のディープニューラルネットワークであってもよい。
ステップS702において、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取る。
ここで、上記第1データサブブロックは、前記搬送データのうちのいずれかのデータサブブロックであるが、いずれかのベースブロックであることが好ましい。
上記の第1データサブブロックを前記配置情報に基づいて読み取ることは、内部キャッシュから指示されるデータサブブロックを配置情報に基づいて読み取る。
なお、本願ではステップS702とステップS703は、第1データサブブロックとして記載されているが、上記第1データサブブロックは上記搬送データのいずれのデータサブブロックであってもよいため、本願は、いずれのデータサブブロックについてもステップS702とステップS703を実行することができる。
ステップS703において、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力する。
本願では、データサブブロックを圧縮することは、限定ではないが、ゼロ値圧縮、ランレングス符号化、ハフマン符号化、コロム符号化などを含む圧縮方式を用いて圧縮される。
また、上記第1データ部分ブロックの前記圧縮後の圧縮データを出力することは、圧縮データをオフチップメモリに書き込む。
なお、本願によるニューラルネットワークデータ処理方法は、NPUやハードウェアアクセラレータなどのニューラルネットワーク計算用のチップ(プロセッサともいう)に適用することができる。
本願では、上記ステップにより、データサブブロックによる圧縮が可能となり、データ搬送効率を向上させ、ニューラルネットワークの性能を向上させ、ニューラルネットワークプロセッサの等価帯域幅を向上させることができる。
図8を参照する。図8は、本願による別のニューラルネットワークデータ処理方法のフローチャートであり、図8に示されるように、以下のステップを含む。
ステップS801において、DMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得する。
ステップS802において、前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取る。
選択可能に、前記配置情報は、前記第1データサブブロックのアドレス情報を含み、前記の前記配置情報に基づいて第1データサブブロックを読み取ることは、前記第1データサブブロックのアドレス情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得ることを含む。
ここで、上記第1データサブブロックのアドレス情報は、不連続アドレス情報であり、具体的には、たとえば、図2に示すように、本願における各データサブブロックのアドレスは、不連続アドレスである。すなわち、上記の前記第1データサブを読み取ることは、飛ばしながら読み取ることであり、第1データサブブロックが図2に示されるベースブロックaであることを例とし、1回目にベースブロックaの1行目のデータを読み取り、2回目にベースブロックaの2行目のデータを読み取り、1行目のデータと2行目のデータとをスプライシングし、次の行のデータをその前のデータとをスプライシングして前記第1データサブブロックの連続で完全でデータストリームを得る。
前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るため、不連続データの圧縮をサポートし、圧縮処理のデータサブブロックのサイズを大きくし、さらに圧縮処理効率を高めることができる。
ステップS803において、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力する。
選択可能に、前記の前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することは、前記第1データサブブロックおよび前記第1データサブブロックのデータの長さをキャッシュすることと、前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るとともに、前記圧縮データの長さを記録することと、前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断し、圧縮利得が存在するのであれば前記圧縮データを出力し、圧縮利得が存在しないのであれば、前記第1データサブブロックのデータを出力することとを含む。
前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断することは、圧縮データの長さが第1データサブブロックの長さより小さくなるかを判断し、そうであれば第1データサブブロックに圧縮利得が存在すると判断し、逆の場合には圧縮利得が存在しないと決定する。または、圧縮データの長さに基づいて、圧縮データの伝送に必要なビート(beat)数を決定するとともに、第1データサブブロックの長さに基づいて、第1データブロックの伝送に必要なビート数を決定し、圧縮データの伝送に必要なビート数が第1データサブブロックの伝送に必要なビート数より小さくなるのであれば、第1データブロックに圧縮利得が存在すると決定し、逆の場合には圧縮利得が存在しないと決定する。
上記の前記第1データサブブロックおよび前記第1データサブブロックの長さをキャッシュすることは、第1データサブブロックの元データおよびオリジナル長さをキャッシュすると理解される。
上記の圧縮は、NPUのDMAで圧縮を行う。DMAで圧縮を行うため、NPUの空間オーバーヘッドを低減するために、NPUに別個に大きなキャッシュを設ける必要がない。
前記圧縮データの長さが前記第1データサブブロックのデータの長さよりも小さい場合に前記圧縮データを出力するので、データの長さを制御可能であり、メモリ空間の無駄な確保を回避してメモリ空間の節約を図ることができるという効果を奏する。
選択可能に、前記方法において、前記圧縮データの長さをキャッシュするステップS804と、前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するステップS805とをさらに含む。
ここで、上記第1データサブブロックの目的アドレスは、第1データサブブロックのオフチップメモリにおける記憶アドレス、または出力アドレスである。
上記の前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成することは、第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を得るために、圧縮データの長さに基づいて、アドレス分解論理により目的アドレスを分解する。たとえば、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより大きい場合には、第1データサブブロックの目的アドレスを分解し、たとえば128Bまたは64Bのアドレスチャネル信号に分解して、アドレスチャネル信号によりデータのランダムアクセスをサポートする。または、圧縮データの長さがバスプロトコルにサポートされる最大ランダムアクセスのアドレスより小さい場合には、第1データサブブロックの目的アドレスをアドレスチャネル信号として、アドレスチャネル信号によりデータのランダムアクセスをサポートする。
当該実施形態では、上記アドレスチャネル信号により、圧縮データのランダムアクセスをサポートすることができ、ニューラルネットワークの性能をさらに向上させることができる。
本実施例において、図1に示した実施例を基に多種類の選択可能な実施形態を追加し、いずれもニューラルネットワークの性能を向上させることができる。
上記に示された様々な形態のフローが、ステップの順序変更、追加、または削除のために使用されることが理解されるべきである。たとえば、本願に記載された各ステップは、並列に実行されても、順次的に実行されても、異なる順序で実行されてもよいが、本願に開示された技術的解決手段の所望の結果を実現できる限り、本明細書に限定されない。
上記の具体的な実施形態は、本願の保護範囲を制限するようには構成されない。当業者であれば、設計の要件やほかの要素に応じて、様々な修正、組み合わせ、サブ組み合わせ、置換を行うことが明らかである。本願の思想および原理に含まれるあらゆる変更、均等置換および改良等は、本願の範囲に含まれるものとする。

Claims (12)

  1. ディレクトメモリアクセスDMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得するための指令解析モジュールと、
    前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取るためのデータ読み取りモジュールと、
    前記第1データサブブロックをリアルタイムに圧縮するためのデータ処理モジュールと、
    前記データ処理モジュールから出力された前記第1データサブブロックの前記圧縮後の圧縮データを受信した場合に、前記圧縮データを出力することが可能なデータ書き出しモジュールとを含み、
    前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプを含み、前記サブブロックタイプは、ベースブロック、アラインメントブロックおよびリマッピングレスブロックを含む、ことを特徴とするニューラルネットワークデータ処理装置。
  2. 前記データ処理モジュールは、さらに、前記第1データサブブロックに対しデータ処理を行うことに用いられることを特徴とする請求項1に記載の装置。
  3. 記データ読み取りモジュールは、
    前記第1データサブブロックの配置情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得るためのデータスプライシングモジュールを含むことを特徴とする請求項1に記載の装置。
  4. 前記データ読み取りモジュールは、
    前記配置情報を読み取り、コマンド読み取り要求を前記データスプライシングモジュールに送信するためのデータ出力コマンドキャッシュと、
    前記データスプライシングモジュールから出力された前記連続で完全なデータストリームをキャッシュするためのデータキャッシュと、
    前記データキャッシュの中の前記連続で完全なデータストリームをパッキングし、パッキングした後のデータを前記データ処理モジュールに出力するためのデータ出力ステートマシンとをさらに含むことを特徴とする請求項に記載の装置。
  5. 前記データ読み取りモジュールは、
    前記第1データサブブロックのアドレス情報を読み取るための読み取りコマンドキャッシュと、
    前記読み取りコマンドキャッシュから指令を取得し、内部キャッシュの読み取りに必要なインタフェース信号を前記アドレス情報に基づいて生成するためのデータ読み取りステートマシンとをさらに含むことを特徴とする請求項に記載の装置。
  6. 前記データ書き出しモジュールは、
    前記第1データサブブロックの前記圧縮後の圧縮データをキャッシュするためのデータ出力キャッシュと、
    前記第1データサブブロックの配置情報をキャッシュするための配置情報キャッシュと、
    前記第1データサブブロックの目的アドレスをキャッシュするための出力アドレスキャッシュと、
    前記配置情報と前記目的アドレスに基づいて前記第1データサブブロックのデータマスクを生成し、前記第1データサブブロックに対応するインタフェースタイミングを生成するためのインタフェースタイミング生成モジュールとを含むことを特徴とする請求項1に記載の装置。
  7. 前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力するためのアドレス生成モジュールをさらに含むことを特徴とする請求項1に記載の装置。
  8. 請求項1~のいずれか一項に記載のニューラルネットワークデータ処理装置を含むことを特徴とする電子機器。
  9. ディレクトメモリアクセスDMAタスクを、ニューラルネットワーク搬送データのデータサブブロックに一対一に対応する複数のサブタスクに分解し、各サブタスクに対応するデータサブブロックの配置情報を取得することと、
    前記複数のサブタスクに対応するデータサブブロックのうちのデータサブブロックである第1データサブブロックを前記配置情報に基づいて読み取ることと、
    前記第1データサブブロックをリアルタイムに圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することとを含み、
    前記配置情報は、前記第1データサブブロックのアドレス情報、長さおよびサブブロックタイプを含み、前記サブブロックタイプは、ベースブロック、アラインメントブロックおよびリマッピングレスブロックを含む、ことを特徴とするニューラルネットワークデータ処理方法。
  10. 前記の前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを出力することは、
    前記第1データサブブロックおよび前記第1データサブブロックのデータの長さをキャッシュすることと、
    前記第1データサブブロックを圧縮し、前記第1データサブブロックの前記圧縮後の圧縮データを得るとともに、前記圧縮データの長さを記録することと、
    前記第1データサブブロックの長さと前記圧縮データの長さに基づいて、前記第1データサブブロックに圧縮利得が存在するかを判断し、圧縮利得が存在するのであれば前記圧縮データを出力し、圧縮利得が存在しないのであれば、前記第1データサブブロックのデータを出力することとを含むことを特徴とする請求項に記載の方法。
  11. 記の前記配置情報に基づいて第1データサブブロックを読み取ることは、
    前記第1データサブブロックのアドレス情報に基づいて前記第1データサブブロックを読み取り、前記読み取った第1データサブブロックのシフトおよびスプライシング処理を行って、前記第1データサブブロックの連続で完全なデータストリームを得ることを含むことを特徴とする請求項に記載の方法。
  12. 前記圧縮データの長さをキャッシュすることと、
    前記第1データサブブロックの目的アドレスと前記圧縮データの長さに基づいて、前記第1データサブブロックのバスプロトコルにサポートされるアドレスチャネル信号を生成し、前記アドレスチャネル信号を出力することとをさらに含むことを特徴とする請求項に記載の方法。
JP2020097701A 2019-12-31 2020-06-04 ニューラルネットワークデータ処理装置、方法および電子機器 Active JP7221242B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201911420592.1A CN111126589B (zh) 2019-12-31 2019-12-31 神经网络数据处理装置、方法和电子设备
CN201911420592.1 2019-12-31

Publications (2)

Publication Number Publication Date
JP2021111315A JP2021111315A (ja) 2021-08-02
JP7221242B2 true JP7221242B2 (ja) 2023-02-13

Family

ID=70506968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020097701A Active JP7221242B2 (ja) 2019-12-31 2020-06-04 ニューラルネットワークデータ処理装置、方法および電子機器

Country Status (5)

Country Link
US (1) US11269529B2 (ja)
EP (1) EP3846040A1 (ja)
JP (1) JP7221242B2 (ja)
KR (1) KR102499335B1 (ja)
CN (1) CN111126589B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111178490B (zh) * 2019-12-31 2021-08-24 北京百度网讯科技有限公司 数据输出方法、获取方法、装置和电子设备
US20220067509A1 (en) * 2020-09-02 2022-03-03 Alibaba Group Holding Limited System and method for learning from partial compressed representation
CN112332853B (zh) * 2020-11-02 2022-06-03 重庆邮电大学 一种基于电力系统的时序数据压缩与恢复方法
CN114442908B (zh) * 2020-11-05 2023-08-11 珠海一微半导体股份有限公司 一种用于数据处理的硬件加速系统及芯片
JP2022188911A (ja) * 2021-06-10 2022-12-22 キオクシア株式会社 圧縮装置、圧縮伸張装置及びメモリシステム
CN114089911B (zh) * 2021-09-07 2024-01-05 上海新氦类脑智能科技有限公司 基于数据复用的块切分拼接处理方法、装置、设备及介质
CN113835786B (zh) * 2021-09-30 2023-04-28 四川新网银行股份有限公司 一种数据对接系统、方法和计算机可读存储介质
CN114399034B (zh) * 2021-12-30 2023-05-02 北京奕斯伟计算技术股份有限公司 用于直接存储器访问装置的数据搬运方法
CN114780460B (zh) * 2022-04-20 2024-05-03 深圳鲲云信息科技有限公司 一种dma控制器和方法
US20230418491A1 (en) * 2022-06-22 2023-12-28 Micron Technology, Inc. Memory block utilization in memory systems

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180248562A1 (en) 2017-02-24 2018-08-30 Texas Instruments Incorporated Matrix compression accelerator system and method

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009510543A (ja) * 2005-06-30 2009-03-12 フリースケール セミコンダクター インコーポレイテッド Dmaタスクの実行を制御するためのデバイスおよび方法
US9996572B2 (en) * 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
JP4991816B2 (ja) * 2009-09-30 2012-08-01 シャープ株式会社 画像処理装置
US9183614B2 (en) * 2011-09-03 2015-11-10 Mireplica Technology, Llc Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets
US20160342545A1 (en) * 2014-02-12 2016-11-24 Hitachi, Ltd. Data memory device
US9818170B2 (en) 2014-12-10 2017-11-14 Qualcomm Incorporated Processing unaligned block transfer operations
CN105653484B (zh) * 2015-12-31 2018-08-17 厦门市美亚柏科信息股份有限公司 一种数据分块压缩多通道传输方法
US10796220B2 (en) * 2016-05-24 2020-10-06 Marvell Asia Pte, Ltd. Systems and methods for vectorized FFT for multi-dimensional convolution operations
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US10042576B2 (en) * 2016-08-17 2018-08-07 Advanced Micro Devices, Inc. Method and apparatus for compressing addresses
CN107633298B (zh) 2017-03-10 2021-02-05 南京风兴科技有限公司 一种基于模型压缩的递归神经网络加速器的硬件架构
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US11055604B2 (en) * 2017-09-12 2021-07-06 Intel Corporation Per kernel Kmeans compression for neural networks
US10924755B2 (en) * 2017-10-19 2021-02-16 Arizona Board Of Regents On Behalf Of Arizona State University Real time end-to-end learning system for a high frame rate video compressive sensing network
US11080611B2 (en) * 2017-12-22 2021-08-03 Intel Corporation Compression for deep learning in case of sparse values mapped to non-zero value
US10797863B2 (en) * 2017-12-28 2020-10-06 Intel Corporation Multi-domain cascade convolutional neural network
WO2019127507A1 (zh) * 2017-12-29 2019-07-04 深圳市大疆创新科技有限公司 数据处理方法、设备、dma控制器及计算机可读存储介质
CN110084364B (zh) 2018-01-25 2021-08-27 赛灵思电子科技(北京)有限公司 一种深度神经网络压缩方法和装置
US11902369B2 (en) * 2018-02-09 2024-02-13 Preferred Networks, Inc. Autoencoder, data processing system, data processing method and non-transitory computer readable medium
CN110197264B (zh) * 2018-02-27 2020-08-04 上海寒武纪信息科技有限公司 神经网络处理器板卡及相关产品
DE102018203709A1 (de) * 2018-03-12 2019-09-12 Robert Bosch Gmbh Verfahren und Vorrichtung zum speichereffizienten Betreiben eines neuronalen Netzes
US20190340490A1 (en) * 2018-05-04 2019-11-07 Apple Inc. Systems and methods for assigning tasks in a neural network processor
US10869036B2 (en) * 2018-09-18 2020-12-15 Google Llc Receptive-field-conforming convolutional models for video coding
US11494645B2 (en) * 2018-12-06 2022-11-08 Egis Technology Inc. Convolutional neural network processor and data processing method thereof
CN109948774B (zh) 2019-01-25 2022-12-13 中山大学 基于网络层捆绑运算的神经网络加速器及其实现方法
US11551094B2 (en) * 2019-05-15 2023-01-10 Volkswagen Aktiengesellschaft System and method for deep neural network compression
US11551054B2 (en) * 2019-08-27 2023-01-10 International Business Machines Corporation System-aware selective quantization for performance optimized distributed deep learning
US20210089873A1 (en) * 2019-09-24 2021-03-25 Alibaba Group Holding Limited Apparatus and system for execution of neural network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180248562A1 (en) 2017-02-24 2018-08-30 Texas Instruments Incorporated Matrix compression accelerator system and method

Also Published As

Publication number Publication date
JP2021111315A (ja) 2021-08-02
US20210200437A1 (en) 2021-07-01
US11269529B2 (en) 2022-03-08
KR20210086420A (ko) 2021-07-08
CN111126589B (zh) 2022-05-20
CN111126589A (zh) 2020-05-08
KR102499335B1 (ko) 2023-02-10
EP3846040A1 (en) 2021-07-07

Similar Documents

Publication Publication Date Title
JP7221242B2 (ja) ニューラルネットワークデータ処理装置、方法および電子機器
WO2021109699A1 (zh) 人工智能加速器、设备、芯片及数据处理方法
JP6768928B2 (ja) アドレスを圧縮するための方法及び装置
US6954806B2 (en) Data transfer apparatus and method
US9330002B2 (en) Multi-core interconnect in a network processor
US20090144527A1 (en) Stream processing apparatus, method for stream processing and data processing system
US20220114120A1 (en) Image processing accelerator
CN115686836A (zh) 一种安装有加速器的卸载卡
US8093485B2 (en) Method and system for prefetching sound data in a sound processing system
US20100257329A1 (en) Apparatus and method for loading and storing multi-dimensional arrays of data in a parallel processing unit
US20140164553A1 (en) Host ethernet adapter frame forwarding
US20110283068A1 (en) Memory access apparatus and method
CN110740138A (zh) 数据传输方法和装置
US9990307B1 (en) Split packet transmission DMA engine
US9299126B2 (en) Image processing apparatus and a method of storing encoded data blocks generated by such an image processing apparatus
CN108762666B (zh) 一种存储系统的访问方法、系统、介质及设备
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
CN114710421B (zh) 一种基于数据预取的网络连接状态维护装置和方法
EP4109278B1 (en) Technology for early abort of compression acceleration
CN112596684B (zh) 一种用于语音深度神经网络运算的数据存储方法
US11102150B2 (en) Communication apparatus and control method for communication apparatus
KR20210074681A (ko) 저복잡도 딥러닝 가속 하드웨어 데이터 가공장치
WO2024129514A1 (en) Fused data generation and associated communication
JPH0588983A (ja) チヤネル装置の動的アドレス変換方法
US20070002853A1 (en) Snoop bandwidth reduction

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210831

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20211018

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220120

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20220120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221014

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20221014

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20221024

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221025

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230201

R150 Certificate of patent or registration of utility model

Ref document number: 7221242

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150