JP6833916B2 - データ処理装置、人工知能チップ及び電子機器 - Google Patents

データ処理装置、人工知能チップ及び電子機器 Download PDF

Info

Publication number
JP6833916B2
JP6833916B2 JP2019125660A JP2019125660A JP6833916B2 JP 6833916 B2 JP6833916 B2 JP 6833916B2 JP 2019125660 A JP2019125660 A JP 2019125660A JP 2019125660 A JP2019125660 A JP 2019125660A JP 6833916 B2 JP6833916 B2 JP 6833916B2
Authority
JP
Japan
Prior art keywords
data
unit
output
command
processing
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
JP2019125660A
Other languages
English (en)
Other versions
JP2020027612A (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
Original Assignee
Beijing Baidu Netcom Science and Technology 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 filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2020027612A publication Critical patent/JP2020027612A/ja
Application granted granted Critical
Publication of JP6833916B2 publication Critical patent/JP6833916B2/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/0658Controller construction 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
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • 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
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30098Register arrangements
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Bus Control (AREA)
  • Advance Control (AREA)
  • Information Transfer Systems (AREA)

Description

本発明の実施例は、コンピュータ技術分野に関し、具体的には、データ処理装置、人工知能チップ及び電子機器に関する。
人工知能技術がますます多くの分野で適用されることに伴って、人工知能技術によって処理される問題がますます複雑になり、それに係るテンソルデータの計算のボリュームもますます大きくなっている。現在の人工知能技術では、深層学習における多次元テンソルのデータ転送及びデータ転置操作は、CPU(Central Processing Unit,中央処理装置)、GPU(Graphic Processing Unit,画像処理装置)、DSP(Digital Signal Processing,デジタル信号処理)チップなどの汎用プロセッサ、又はASIC(Application Specific Integrated Circuit,特定用途向け集積回路)、FPGA(Field−Programming Gate Array,フィールドプログラマブルストローブアレイ)などの専用ハードウェアデバイスを用いて行われる。
汎用プロセッサによるデータ処理では、データアクセス経路が複雑であり、外部メモリへのアクセスや格納に関わり、アクセス帯域幅が制限されている。ASIC、FPGAなどの専用ハードウェアデバイスに基づくデータ処理方法は、通常、特定次元のデータ転送及びデータ転置操作をカスタマイズで実現しただけであり、柔軟性の向上が期待されている。
本発明の実施例は、データ処理装置、人工知能チップ及び電子機器を提供している。
第1態様において、本発明の実施例は、処理対象データを格納する少なくとも1つの入力メモリと、外部処理命令を読み取り、処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、データ読み取りアドレスに応じて入力メモリから処理対象データを読み取り、操作コマンドに従って処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを発する少なくとも1つのデータ転送部と、少なくとも1つのデータ転送部からのデータ書き込みリクエストの受信に応答して、データ転送部の出力データ及び対応するデータ書き込みアドレスを受信し、受信された出力データ及びデータ書き込みアドレスから、1つのデータ転送部の出力データ及び対応するデータ書き込みアドレスをストローブして出力するとともに、書き込みイネーブル信号を送信する少なくとも1つの多重調停部と、多重調停部からの書き込みイネーブル信号の受信に応答して、多重調停部から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された出力データを、対応するデータ書き込みアドレスに書き込む少なくとも1つの出力メモリとを備えるデータ処理装置を提供している。
いくつかの実施例において、データ転送部は、読み取られた処理命令を解析するとともに解析操作を実行するフロントエンド復号化部であって、前記解析操作は、処理命令からデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを抽出して、入力メモリにデータ読み取りリクエストを発し、入力メモリによってデータ読み取りリクエストの受信に応答して送信された処理対象データを、データキューにバッファリングし、抽出された操作コマンドをコマンドキューにバッファリングすることを含むフロントエンド復号化部と、コマンドキューの操作コマンドに応じてデータキューにおける処理対象データを処理して、出力データを得る少なくとも1つの処理部とを備える。
いくつかの実施例において、フロントエンド復号化部によって実行される解析操作はさらに、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定し、操作コマンドがデータ転送コマンドである場合に、フロントエンド復号化部は入力メモリから送信された処理対象データを各処理部にブロードキャストし、操作コマンドがデータ転置コマンドである場合に、フロントエンド復号化部は入力メモリから送信された処理対象データを、対応する少なくとも1つの処理部に送信することを備え、ここでは、各処理部には対応するデータ読み取りアドレスのオフセットが予め設定されている。
いくつかの実施例において、フロントエンド復号化部は、処理命令を解析した後に、読み取られた処理命令がシングルステップ実行命令であるかそれともバッチ処理命令であるかを判定し、処理命令がシングルステップ実行命令である場合に、解析操作を実行し、処理命令がバッチ処理命令である場合に、解析操作を予め設定された回数繰り返し実行し、毎回の解析操作が実行された度に、データ読み取りアドレス及びデータ書き込みアドレスを、予め設定されたアドレスのオフセットストライドに基づいて調整する。
いくつかの実施例において、処理部は、データキューから処理対象データを読み取るデータレジスタと、コマンドキューから操作コマンドを読み取るコマンドレジスタと、コマンドレジスタのコマンドに従ってステータス制御を行うステートマシンと、ステートマシンの制御に従って、データレジスタから処理対象データを選択して出力するマルチプレクサと、を備える。
いくつかの実施例において、ステートマシンはさらに、処理命令から解析されたデータ書き込みアドレスを命令レジスタから受信し、受信されたデータ書き込みアドレスと、処理部によって予め設定された書き込みアドレスのオフセットとに基づいて、出力データのデータ書き込みアドレスを計算するとともに、データ書き込みリクエストと、出力データのデータ書き込みアドレスとを多重調停部に送信する。
いくつかの実施例において、アービタと、セレクタとを備える調停ユニットを少なくとも1つ備え、アービタは、各データ転送部における処理部の出力データを調停し、調停結果に応じて、1つの処理部の出力データと、対応するデータ書き込みアドレスとを選択して出力するようにセレクタを制御し、出力メモリに書き込みイネーブル信号を送信する。
いくつかの実施例において、出力メモリは、多重調停部から出力された書き込みイネーブル信号と、出力データと、対応するデータ書き込みアドレスとを受信し、書き込みイネーブル信号の制御下で、出力データを対応するデータ書き込みアドレスに書き込む。
いくつの実施例において、入力メモリ及び出力メモリがオンチップメモリである。
第2態様において、本発明の実施例は、第1態様に係るデータ処理装置を備える人工知能チップを提供している。
第3態様において、本発明の実施例は、中央処理装置と、第2態様に係る人工知能チップとを備える電子機器を提供している。
本発明の上記の実施例に係るデータ処理装置、人工知能チップ及び電子機器は、処理対象データを格納する少なくとも1つの入力メモリと、外部処理命令を読み取り、処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、データ読み取りアドレスに応じて入力メモリから処理対象データを読み取り、操作コマンドに従って処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを発する少なくとも1つのデータ転送部と、少なくとも1つのデータ転送部からのデータ書き込みリクエストの受信に応答して、データ転送部の出力データ及び対応するデータ書き込みアドレスを受信し、受信された出力データ及びデータ書き込みアドレスから、1つのデータ転送部の出力データ及び対応するデータ書き込みアドレスをストローブして出力するとともに、書き込みイネーブル信号を送信する少なくとも1つの多重調停部と、多重調停部からの書き込みイネーブル信号の受信に応答して、多重調停部から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された出力データを、対応するデータ書き込みアドレスに書き込む少なくとも1つの出力メモリとを備える。上述したデータ処理装置、人工知能チップ及び電子機器は、ソフトウェア命令による駆動を実現し、高度な柔軟性を備えており、ハードウェアを変更せずに、多様な種類及び容量のテンソルのデータ転送及び転置操作を柔軟にサポートでき、同時に、データスループットが対応する入力メモリ及び出力メモリの帯域幅に依存するため、帯域幅を有効に拡大し、アクセス遅延を低減することができる。
本発明の他の特徴、目的及び利点は、以下の図面を参照してなされる非限定的な実施例に係る詳細な説明を読むことにより、より明らかになるであろう。
本発明の実施例に係るデータ処理装置を示す構造概略図である。 本発明の実施例に係るデータ処理装置におけるデータ転送部を示す構造概略図である。 データ転送部におけるフロントエンド復号化部による操作実行を示すフローチャートである。 データ転送部における処理部を示す構造概略図である。 データ転送部における処理部により実行されるデータ処理操作を示すフローチャートである。 本発明の実施例に係るデータ処理装置における多重調停部を示す構造概略図である。 本発明の実施例を実施するための電子機器に適用されるコンピュータシステムを示す構造概略図である。
以下、添付図面及び実施例を参照しながら、本発明をより詳細に説明する。ここで説明する具体的な実施例は、関連する発明を説明するためのものに過ぎず、当該発明を限定するものではないことを理解されたい。また、説明の便宜上、図面には発明に関連する部分のみが示されていることに留意されたい。
なお、本発明の実施例及び実施例における特徴は、矛盾を生じない限り、相互に組み合わせることができる。以下、添付図面及び実施例を参照しながら、本発明を詳細に説明する。
図1には、本発明の実施例に係るデータ処理装置の構造100が示されている。
図1に示すように、本発明の実施例に係るデータ処理装置は、少なくとも1つの入力メモリ11と、少なくとも1つのデータ転送部12と、少なくとも1つの多重調停部13と、少なくとも1つの出力メモリ14とを備える。入力メモリ11がデータ転送部12に接続され、データ転送部12が多重調停部13に接続され、多重調停部13が出力メモリ14に接続される。
入力メモリ11は、処理対象データを格納し、ここで、処理対象データは、深層学習ネットワークに入力される画像を特徴付ける2次元濃淡値行列のような深層学習計算におけるテンソルデータであってもよい。処理対象データは、データ処理装置の外部のCPUなどの処理装置又は他のカスタマイズ装置によって入力メモリに書き込まれたものであってもよい。入力メモリ11は、例えば512ビットのビット幅を有するデュアルポートのSRAM(Static Random Access memory,スタティックランダムアクセスメモリ)であってもよい。入力メモリにおけるデータのビット幅が32ビットであれば、各入力メモリの1行当たりに16個のデータを格納できる。
任意選択的に、本発明の実施例に係るデータ処理装置100は、少なくとも2つの入力メモリと、少なくとも2つのデータ転送部と、少なくとも2つの多重調停部と、少なくとも2つの出力メモリとを備えてもよい。ここで、入力メモリ、データ転送部、多重調停部、出力メモリは1対1に対応してもよい。いくつかの実施形態では、データ処理装置における入力メモリ、データ転送部、多重調停部及び出力メモリの数は、アクセス速度、帯域幅要求などのサービスの需要に応じて拡張又は構成され得る。データ処理装置が複数の入力メモリを備える場合に、複数の入力メモリをまとめてアドレス指定する、即ち、複数の入力メモリの間でアドレスを連続的に指定することができる。例えば、2次元配列D[][]について、第1の入力メモリの1行目にはD[0][0],D[0][1],D[0][2],…,D[0][15]を格納することができ、第2の入力メモリの1行目にはD[0][16],D[0][17],D[0][18],…,D[0][31]を格納することができる。
入力メモリ11は、入力メモリに接続されるデータ転送部12からの、指定されたアドレスのデータを読み取るリクエストであってもよいデータ読み取りリクエストを受信することができ、対応するアドレスのデータをデータ転送部12に出力することができる。
データ転送部12は、外部処理命令を読み取り、処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、データ読み取りアドレスに応じて入力メモリから処理対象データを読み取り、操作コマンドに従って処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを、データ転送部に接続される多重調停部に発することができる。
ここで、データ転送部12は命令入力ポート、即ち命令受信ポートを有してもよく、命令入力ポートにより外部の、処理対象データの処理操作を示すための処理命令を読み取ることができる。データ転送部12が処理命令から解析されたデータ読み取りアドレスは、入力メモリ11における処理対象データのアドレスであってもよいし、又は任意選択的に、入力メモリ11における処理対象データの先頭アドレスであってもよい。データ書き込みアドレスは、処理後のデータを出力メモリ14に書き込むアドレスであってもよいし、又は任意選択的に、処理後の出力データを出力メモリ14に書き込む先頭アドレスであってもよい。操作コマンドは、処理対象データに対して実行する操作、例えば、転置操作又は転送操作を指示するために使用され得る。ここで、転置操作は、テンソルデータのある次元のデータをテンソルデータの他の次元に転置することであってもよいし、転送操作は、テンソルデータへの転送操作であってもよい。任意選択的に、データ転送部12は、処理命令を解析した後、出力データを出力メモリ14に書き込む方式、例えばシリアル書き込みを指示するためのデータ書き込み方式を取得してもよい。
データ転送部12は、解析されたデータ読み取りアドレスに基づいて、入力メモリにデータ読み取りリクエスト、即ちデータ読み取りアドレスを含むデータ読み取りリクエストを発することができる。入力メモリ11は、該データ読み取りリクエストを受信した後に、データ読み取りアドレスに格納されたデータを処理対象データとしてデータ転送部12に転送でき、このようにして、データ転送部12は、外部処理命令に従って処理対象データを取得することができる。
データ転送部12は、処理対象データを上記の操作コマンドに従って処理して出力データを得るとともに、外部処理命令から解析されたデータ書き込みアドレスに基づいて各出力データに対応するデータ書き込みアドレスを算出することができる。例えば、外部処理命令から解析されたデータ書き込みアドレスを初期書き込みアドレスとして、出力データの出力タイミングに合わせて、初期書き込みアドレスを順次後方に遷移させて対応する出力データのデータ書き込みアドレスを得ることができる。出力データと対応するデータ書き込みアドレスとを多重調停部13に送信することができる。本実施例では、データ処理装置100における複数のデータ転送部12が、出力データ及び対応するデータ書き込みアドレスを同一の多重調停部13に送信でき、各データ転送部12が、出力データ及び対応するデータ書き込みアドレスを少なくとも2つの多重調停部13に送信してもよい。任意選択的に、各データ転送部12は、出力データ及び対応するデータ書き込みアドレスを各多重調停部13にそれぞれ送信する。データ転送部12はさらに、多重調停部13にデータ書き込みリクエストを発することもできる。
多重調停部13は、少なくとも1つのデータ転送部12のデータ書き込みリクエストを受信するとともに、受信されたデータ書き込みリクエストに応答して、少なくとも1つのデータ転送部1の出力データ及び対応するデータ書き込みアドレスを受信することができる。多重調停部13は、受信した出力データを調停し、受信した少なくとも1つのデータ転送部1の出力データ及び対応するデータ書き込みアドレスから、1つのデータ転送部1の出力データ及び対応するデータ書き込みアドレスをストローブして出力し、さらに、出力メモリ14にメモリ機能をオンにするように、書き込みイネーブル信号を出力メモリ14に送信することもできる。
任意選択的に、多重調停部13は、データ転送部に1対1に対応する入力ポートを複数有し、各入力ポートがデータ転送部12の出力データ及びデータ書き込みアドレスを受信することができる。多重調停部13は、予め設定された調停ポリシーに従って、複数の入力ポートから1つの入力ポートをストローブし、ストローブされた入力ポートから受信されたデータ転送部の出力データ及びデータ書き込みアドレスを出力することができる。ストローブされた入力ポートから受信されていない出力データ及びデータ書き込みアドレスは、他の多重調停部を介して出力されてもよいし、又はリクエストを繰り返した後に多重調停部から出力されてもよい。
出力メモリ14は、多重調停部13からの書き込みイネーブル信号の受信に応答して、多重調停部13から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された出力データを、対応するデータ書き込みアドレスに書き込むことができる。出力メモリ14は、例えば32ビットのビット幅を有するデュアルポートのSRAMであってもよい。各出力メモリ14は、データビット幅方向にリニアアドレスを指定することができ、2次元配列D[][]を例として、第1の出力メモリにはD[0][0],D[1][0],D[2][0],…を格納することができ、第2の出力メモリにはD[0][1],D[1][1],D[2][1],…などを格納することができる。
出力メモリ14が出力データを対応するデータ書き込みアドレスに書き込んだ後に、多重調停部13は書き込み応答信号をデータ転送部に返信することができる。
本発明の上述した実施例に係るデータ処理装置は、少なくとも1つの入力メモリと、少なくとも1つのデータ転送部と、少なくとも1つの多重調停部と、少なくとも1つの出力メモリとを備える。入力メモリ、データ転送部、多重調停部及び出力メモリの数は、サービスの需要に応じて拡張又は構成され得る。例えば、深層学習に基づくニューラルネットワークのトレーニングプロセスにおいて、大容量データのテンソルデータの転送又は転置を行う必要がある場合に、テンソルデータのビット幅に応じて必要な入力メモリ、出力メモリの数を計算し、さらに、対応するデータのデータ転送部、多重調停部を配置することにより、ハードウェアデバイスを変更せずに、多様な種類及び容量のテンソルデータの転送及び転置操作を柔軟にサポートすることができる。
上記のデータ処理装置は、データアクセス経路が簡単であり、そのスループットが入力メモリ及び出力メモリの帯域幅に依存し、高帯域幅のメモリを用いて帯域幅を拡大して、アクセス遅延を低減させることができる。また、上記のデータ処理装置は、命令入力ポートを介して外部処理命令を受信し、処理命令を解析することでデータアドレス及び操作コマンドを取得し、ソフトウェア命令に基づく駆動が実現され、柔軟性が高い。
任意選択的に、データアクセスの高速化、遅延低減化をさらに図るために、上記の入力メモリ及び出力メモリがオンチップメモリを用いてもよい。
続いて、本発明の実施例に係るデータ処理装置におけるデータ転送部の構造概略図を示す図2を参照する。図2に示すように、データ転送部12は、フロントエンド復号化部121と、少なくとも1つの処理部122とを備える。フロントエンド復号化部121は、処理命令への解析操作を実行することができる。解析操作は、処理命令からデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを抽出した後、入力メモリにデータ読み取りリクエストを発し、データ読み取りリクエストの受信に応答して入力メモリから送信された処理対象データを、データキューにバッファリングするとともに、抽出した操作コマンドをコマンドキューにバッファリングすることを備える。各処理部122はコマンドキューにおけるコマンドに従ってデータキューにおける処理対象データを処理して、出力データを得る。
任意選択的に、処理命令を解析した後に、出力メモリに並列に書き込む1行であってもよいし、又は出力メモリに書き込む1列であってもよい書き込みデータの書き込み方式をさらに抽出することができる。
本実施例では、データ転送部のコマンドキューにおける操作コマンド及びデータキューにおける、対応する処理対象データが、各処理部122に分配されて処理することができる。各処理部122は、対応するデータ読み取りアドレスのオフセット及びデータ書き込みアドレスのオフセットを予め設定しておくことができる。ここで、データ読み取りアドレスのオフセットは、読み取られた処理対象データの第1個/第1組のアドレスに対する該処理部が読み取った処理対象データのオフセットを特徴付け、データ書き込みアドレスのオフセットは、書き込まれた処理対象データの第1個/第1組のアドレスに対する該処理部が書き込んだ出力データのオフセットを特徴付けることができる。具体的には、各処理部122は、処理部に対応する処理対象データのデータ読み取りアドレスのオフセット又は出力データのデータ書き込みアドレスのオフセットを識別するための、独立したコードを有してもよい。例えば、各処理部122は、入力メモリの1列のデータのみを処理してもよく、x1として符号化された処理部は、入力メモリの第1列のデータを対応して処理し、x2として符号化された処理部は、入力メモリの第2列のデータを対応して処理してもよい…。これにより、処理対象データのデータ読み取りアドレスに基づいて、対応するコードを有する処理部122に処理対象データを分配して処理することができる。具体的な処理操作は、例えば、データ転置操作又はデータ転送操作であり得る。コマンドキューにおける操作コマンドは、データキューにおける処理対象データと1対1に対応している。処理部122は、そのコードに基づいてデータキューから処理対象データを読み取るとともに、コマンドキューから対応する操作コマンドを取得し、該操作コマンドを実行して出力データを得ることができる。
任意選択的に、上記の解析操作は、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定することをさらに備える。
ここで、データ転送コマンドは、入力メモリのデータを出力メモリに転送するコマンドであってもよい。処理命令から解析されたデータ書き込みアドレスは、出力メモリに書き込む第1のデータのアドレスであってもよい。データ転送中に、処理対象データのアドレスのオフセットを、予め設定されたアドレスのオフセットストライドに基づいて算出し、例えば、第1のデータのアドレス「xxxxx」に対して2単位オフセットすることにより、処理対象データに対応する出力データのデータ書き込みアドレスが、「xxxxx」を2単位オフセットしたアドレスであると判定することができる。ここで、データ転送中にデータを変換せずに、処理対象データを出力メモリに転送する処理のみが行われる。入力メモリから送信される処理対象データは複数行のデータであってもよく、操作コマンドがデータ転送コマンドである場合に、フロントエンド復号化部は入力メモリから送信される処理対象データを各処理部122にブロードキャストすることができ、各処理部122が処理対象データのそれぞれに対応する1列のデータを受信して転送する。
データ転置コマンドは、処理対象データを転置操作するコマンドであってもよい。処理命令を解析して得られたデータ書き込みアドレスは、メモリに書き込まれた第1のデータ又は第1列のデータのアドレスであってもよい。データ転置中に、予め設定されたアドレスのオフセットストライドに基づいて、各列の処理対象データのオフセットを算出した後、上記のデータ書き込みアドレスに基づいて各列の処理対象データの格納アドレスを算出することができる。例えば、アドレスのオフセットストライドが2であり、解析して得られたデータ書き込みアドレスが「yyyyy」である場合に、第1列の処理対象データの転置後の格納アドレスは、「yyyyy」から2単位分オフセットしたアドレスとなる。ここで、転置操作は、処理対象データの各列を出力データの各行に転置する操作であってもよい。入力メモリから送信される処理対象データが複数列のデータであってもよく、操作コマンドがデータ転置コマンドである場合に、フロントエンド復号化部は入力メモリから送信される処理対象データを対応する少なくとも1つの処理部に送信することができる。入力メモリから送信される処理対象データが複数列のデータであってもよく、各処理部がそのコードに基づいて対応する列のデータを特定することができ、データ転置コマンドを受信した後に、複数列のデータのうちの各列を該列のデータに対応する処理部に送信して転置するとともに、対応する書き込みアドレスの計算を行うことができる。
本実施例のいくつかの任意選択実施形態において、解析操作を実行する前に、上記のフロントエンド復号化部は、読み取られた処理命令がシングルステップ命令であるかそれともバッチ処理命令であるかをさらに判定することができる。データ転送部におけるフロントエンド復号化部による操作実行のフローチャートを示す図3を参照されたい。
図3に示すように、フロントエンド復号化部による操作実行のフロー300では、まずステップ301で、処理命令を解析し、次にステップ301で、処理命令がシングルステップ実行命令であるかそれともバッチ処理命令であるかを判定することができる。シングルステップ実行命令は、入力メモリにおける1組の処理対象データを処理する命令であってもよく、バッチ処理命令は、入力メモリにおける複数組の処理対象データを処理する命令であってもよい。
ステップ301の判定結果がシングルステップ実行命令である場合に、シングルステップ命令モードに入り、ステップ301〜ステップ306に示される解析操作を実行する。具体的には、ステップ301で、処理命令から操作コマンドと、データ読み取りアドレスと、データ書き込みアドレスとを抽出し、操作コマンドをコマンドキューに加え、データ読み取りリクエストを入力メモリに発する。入力メモリは、データ読み取りリクエストを受信した後に、処理対象データをデータ転送部に送信することができる。次に、ステップ304で、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定することができ、データ転送コマンドである場合に、ステップ305を実行して、処理対象データを各処理部にブロードキャストし、データ転置コマンドである場合に、ステップ306を実行し、処理対象データを対応する処理部にユニキャストする。その後、ステップ301に戻り、受信された次の処理命令を解析することができる。
ステップ302の判定結果は、処理命令がバッチ処理命令である場合には、ステップ303、ステップ304及びステップ305又はステップ306に示される解析操作を、予め設定された回数繰り返し実行することができる。毎回の解析操作が実行された度に、データ読み取りアドレス及びデータ書き込みアドレスを予め設定されたアドレスのオフセットストライドに基づいて調整することができる。即ち、1組の処理対象データへの解析が終了した後に、予め設定されたデータ読み取りアドレスのオフセットストライド(例えば、1)に基づいて、次の組の処理対象データのデータ読み取りアドレスを算出した後に、次の組の処理対象データを読み取って解析するとともに、予め設定されたデータ書き込みアドレスのオフセットストライド(例えば、2)に基づいて、1組の処理対象データを書き込むことに対応する出力データのデータ書き込みアドレスを算出することができる。このように、解析操作を複数回繰り返し実行でき、毎回の解析操作が終了した後に、ステップ307でバッチ処理が終了したか否かを判定し、終了していない場合に、ステップ308でデータ読み取りアドレス及びデータ書き込みアドレスを調整した後に、解析操作の実行に戻ることができる。バッチ処理が終了した場合に、命令入力ポートで受信された次の処理命令への解析に戻る。
図3から分かるように、フロントエンド復号化部は外部処理命令を柔軟に解析でき、外部処理命令に基づいて処理対象データ、データ読み取りアドレス及びデータ書き込みアドレスを取得し、処理対象データを対応する処理部にブロードキャストして処理することにより、該フロントエンド復号化部を含むデータ転送部は、ソフトウェア命令に基づく柔軟な駆動を実現することができる。
続いて、本発明の実施例の任意選択実施態様において、データ転送部における処理部の構造概略図を示す図4を参照する。
図4に示すように、処理部122は、データレジスタ1221、コマンドレジスタ1222、ステートマシン1223及びマルチプレクサ1224を備えることができる。データレジスタ1221はデータキューから処理対象データを読み取り、コマンドレジスタ1222はコマンドキューから操作コマンドを読み取り、ステートマシン1223はコマンドレジスタのコマンドに基づいてステータス制御を行い、マルチプレクサ1224はステートマシン1223の制御に従って、データレジスタ1221から処理対象データを選択して出力する。
データレジスタ1221はデータキューにおける処理対象データをマルチプレクサ1224に順次転送し、マルチプレクサ1224はこれらの処理対象データをバッファリングすることができる。コマンドレジスタ1222は、コマンドキューにおけるコマンドをステートマシンに順次転送することができる。ステートマシン1223は、コマンドレジスタから送信された操作コマンドを解析するとともに、現在受信されたコマンドに従ってマルチプレクサ1224を制御することができる。具体的には、ステートマシンは、現在の操作コマンドに従って、マルチプレクサ1224にバッファリングされた処理対象データの1組又は複数組をストローブして出力することができる。例えば、ステートマシン1223により現在受信された操作コマンドがデータAを転置するコマンドである場合に、マルチプレクサ1224が対応するデータAをストローブして出力するように、マルチプレクサ1224に制御信号を出力することができる。ステートマシン1223はさらに、現在受信された操作コマンドに対応するデータのデータ書き込みアドレスを計算することができ、具体的には、処理命令から解析されたデータ書き込みアドレスをコマンドレジスタから受信し、受信されたデータ書き込みアドレス及び処理部によって予め設定されたデータ書き込みアドレスのオフセットに基づいて、出力データのデータ書き込みアドレスを計算することができ、即ち、処理部のコードに基づいてデータ書き込みアドレスのオフセットを決定し、ステートマシンにより受信されたデータ書き込みアドレスをデータ書き込みアドレスに基づいてオフセットした後、現在のコマンドに対応するデータ書き込みアドレスを得る。又は、フロントエンド復号化部は、処理部のコードに対応するデータ書き込みアドレスのオフセットに基づいて、現在のコマンドに対応する出力データのデータ書き込みアドレスを算出し、ステートマシン1223は、フロントエンド復号化部により算出された現在のコマンドに対応する出力データのデータ書き込みアドレスを、コマンドレジスタから受信することができる。ステートマシン1223はさらに、多重調停部にデータ書き込みリクエストを発するとともに、出力データのデータ書き込みアドレスを多重調停部に送信することができる。
データ転送部における処理部により実行されるデータ処理操作のフローチャートを示す図5を参照されたい。
図5に示すように、処理部により実行される処理操作のフロー500は、ステップ501で、コマンドレジスタにおけるコマンドを解析することを備える。具体的には、ステートマシン1223はコマンドレジスタから操作コマンドを抽出した後に、ステップ502で、操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定することができる。ステップ502の判定結果がデータ転送コマンドである場合に、ステップ503を実行し、処理部のコードに基づいてオフセットに対応するデータを選択して出力し、出力メモリに書き込みリクエストを発し、ステップ502の判定結果がデータ転置コマンドである場合に、ステップ504を実行し、データ転置コマンドに従って、データを順次出力し、出力メモリに書き込みリクエストを発する。その後、データ転置コマンドに係るデータの書き込みが終了したか否かを判定するステップ505を実行する。ステップ505の判定結果がデータ転置コマンドに係るデータの書き込みが終了したことである場合に、ステップ501に戻り、コマンドレジスタにおける次のコマンドを解析することができる。ステップ505の判定結果がデータ転置コマンドに係るデータの書き込みが終了していないことである場合に、ステップ504に戻り、データ転置コマンドに従ってデータを順次出力するとともに、出力メモリに書き込みリクエストを発することができる。
処理部は、対応するデータ書き込みアドレスのオフセットを予め設定しておくことができ、具体的には、処理部は、独立したコードを有することができ、各処理部は、命令入力ポートから読み取られた外部処理命令に指示される入力データアドレスに対する、処理されたデータのアドレスのオフセットを、コードに基づいて判定することができる。上記のステップ503で、処理部は、コードに基づいてオフセットに対応するデータを選択して出力することができ、例えば、処理部のコードがC1であり、対応するオフセットが4である場合に、処理部は、入力データのアドレスに対するオフセットが4であるアドレスに格納されたデータを選択して出力することができ、この場合に処理部が出力したデータは、入力データのアドレスに対するオフセットが4であるアドレスに格納されたデータである。処理部はさらに、出力メモリに書き込みリクエストを発することができる。
データ転置コマンドに係る処理対象データは、入力メモリの1行のデータであり、各処理部が入力メモリの1列のデータをそのコードに基づいて対応処理し、上記のステップ504で、処理部は、処理対象データにおけるそのコードに対応する列のデータを順次出力し、ステップ505で、処理対象となる1行のデータへの転置が終了したか否かを判定し、終了していない場合に、ステップ504に戻って、データ転送部内の複数の処理部のうちの次の処理部が、続いて次の列のデータを出力する。この場合に、処理部の出力データは、入力メモリにおけるデータを転置して得られたデータである。処理部がデータを出力する際に、多重調停部に書き込みリクエストを発することができる。
本発明の実施例に係るいくつかの任意選択実施形態において、データ処理装置における多重調停部の構造概略図を示す図6を参照されたい。
図6に示すように、多重調停部13は少なくとも1つの調停ユニット130を備える。ここで、調停ユニット130の数は、所望によりデータ転送装置における処理部の数と同じであってもよい。各調停ユニット130がアービタ131と、セレクタ132とを備える。アービタ131は各データ転送部における処理部の出力データを調停し、調停結果に基づいて、1つの処理部の出力データと、対応するデータ書き込みアドレスとを選択して出力するようにセレクタ132を制御するとともに、出力メモリに書き込みイネーブル信号を送信する。
本実施例では、データ処理装置がN個(Nは正の整数である)のデータ転送部を備えるものとし、各調停ユニット130がN個のデータ転送部のそれぞれの処理部に接続され、即ち、各調停ユニットは、N個の処理部の出力データ(図6に示される「書き込みデータ」)と、対応するデータ書き込みアドレス(図6に示される「書き込みアドレス」)とを受信する。各データ転送部における複数の処理部は、対応する複数の調停ユニットに出力データ及びデータ書き込みアドレスを転送する。具体的には、アービタは、接続されたN個の処理部からの書き込みリクエストに応じて調停し、調停結果に基づいて、入力されたN個の処理部の出力データのうちから1つの処理部の出力データ及び対応するデータ書き込みアドレスを選択して出力メモリに転送するようにセレクタを制御する。
ここで、出力データのデータ書き込みアドレスは、処理部がそのコードに対応するデータ書き込みアドレスのオフセットと、外部処理命令から解析された初期のデータ書き込みアドレスとに基づいて算出され得るものである。例として、データ書き込みアドレスのオフセットストライドを2、第1のデータ転送部における第1の処理部のコードをD1、処理命令から解析されたデータ書き込みアドレスをAdd1として予め設定した場合に、対応するデータ書き込みアドレスのオフセットを2とすると、該処理部の出力データのデータ書き込みアドレスが、Add1+2となる。
本実施例では、セレクタは各データ転送部の処理部から1つのデータ転送部の処理部を選択し、選択した処理部の出力データとデータ書き込みアドレスを出力メモリに転送するとともに、出力メモリに書き込みイネーブル信号を送信する。出力メモリは、多重調停部から出力された書き込みイネーブル信号と、出力データと、対応するデータ書き込みアドレスとを受信し、書き込みイネーブル信号の制御下でイネーブルして、出力データを対応するデータ書き込みアドレスに書き込む。
任意選択的に、出力メモリはさらに、書き込み応答信号を多重調停部に返信し、多重調停部は書き込み応答信号をデータ転送部のステートマシンにフィードバックすることができる。ステートマシンは、書き込み応答信号に応じて、対応するコマンドレジスタにおけるコマンドのステータスを「終了した」にすることができ、さらに「終了した」ステータスのコマンドをコマンドレジスタから削除することができる。コマンドレジスタのステータスが「終了した」ではないコマンドについては、ステートマシンは、コマンドレジスタからコマンドを、予め設定されたコマンドバッファサイクルで繰り返し読み取るとともに、対応する処理対象データをストローブして処理するようにマルチプレクサを制御することができる。
多重調停部で調停出力することにより、データ転置や転送中に出力データがメモリに順番に書き込まれることを確保しつつ、データ書き込みの速度を確保して、データ処理装置の処理効率を向上させることができる。
本発明の実施例は、人工知能チップをさらに提供している。該人工知能チップは、上記の実施例に記載されたデータ処理装置を含むことができる。データ処理装置は、少なくとも1つの入力メモリと、少なくとも1つのデータ転送部と、少なくとも1つの多重調停部と、少なくとも1つの出力メモリとを備える。データ処理装置における各部の構造及び動作原理は、図1〜図5に示された各実施例及び任意選択実施様態の説明を参照することができ、ここではその説明を省略する。
本実施例における人工知能チップは、深層学習訓練及び予測に対して、高密度コンピューティング及びアクセスニーズを満たすことができる。CPU、GPUなどの汎用プロセッサ及び専用ハードウェアデバイスによるデータ処理方法の、深層学習シーンにおけるアクセス速度や柔軟性の問題を解決し、データ処理効率を向上させることができる。
以下、本発明の実施例を実施するための電子機器に適用されるコンピュータシステム700の構造概略図を示す図7を参照する。図7に示された電子機器はあくまでも一例に過ぎず、本発明の実施例の機能及び使用範囲にいかなるの限定を加えるものではない。
図7に示すように、コンピュータシステム700は、読み出し専用メモリ(ROM)702に格納されているプログラム又は記憶部705からランダムアクセスメモリ(RAM)703にロードされたプログラムによって様々で、適当な動作及び処理を実行することができる中央処理装置(CPU)701を備える。RAM703には、システム700の操作に必要な様々なプログラム及びデータがさらに格納されている。CPU701は、データの処理解析を行うために人工知能チップ704に命令及びデータを送信することができる。例えば、深層学習タスクにおいて、CPUはRAM703にロードされた処理対象データと、通信部を介して受信された外部処理命令とを、人工知能チップ704に転送してデータ処理を実行することができる。CPU701、ROM702、RAM703及び人工知能チップ704は、バス706を介して互いに接続されている。入力/出力(I/O)インターフェース707もバス706に接続されている。
特に、本発明に開示される実施例によれば、上記のフローチャートを参照しながら記載されたプロセスは、コンピュータソフトウェアプログラムとして実現されてもよい。例えば、本発明に開示される実施例は、コンピュータ可読媒体に担持されるコンピュータプログラムを備えるコンピュータプログラム製品を含んでもよい。該コンピュータプログラムは、フローチャートで示される方法を実行するためのプログラムコードを含んでいる。このような実施例では、該コンピュータプログラムは、任意選択的に通信部708を介してネットワークからダウンロードされてインストールされてもよいし、人工知能チップにロードされてもよい。該コンピュータプログラムが人工知能チップ704によって実行される場合に、本発明のデータ処理装置における入力メモリ、データ転送部、処理部及び出力メモリの上記の機能が実行される。
図面におけるフローチャート及びブロック図は、本発明の各実施例に係るシステム、方法及びコンピュータプログラム製品により実現可能なシステムアーキテクチャ、機能及び操作を示すことを理解されたい。ここで、フローチャート又はブロック図における各ブロックは、モジュール、プログラムセグメント若しくはコードの一部を表してもよく、該モジュール、プログラムセグメント、又はコードの一部は、規定されたロジック機能を達成するための1つ以上の実行可能な命令を含む。なお、いくつかの代替実施態様において、ブロック内に示された機能は、図面に示された順番とは異なるもので実行されてもよい。例えば、連続して示された2つのブロックは、実際には関連する機能に応じて、ほぼ並行に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図及び/又はフローチャートにおける各ブロック、並びに、ブロック図及び/又はフローチャートにおけるブロックの組み合わせは、規定された機能若しくは操作を実行する、ハードウェアに基づく専用システムで実現されてもよいか、又は専用ハードウェアとコンピュータ命令との組み合わせで実行されてもよい。
以上の記載は、あくまでも本発明の好ましい実施例、及び使用される技術的原理に関する説明に過ぎない。本発明に係る発明の範囲が、上記の技術的特徴の特定の組み合わせからなる技術案に限定されるものではなく、上記の本発明の趣旨を逸脱しない範囲で、上記の技術的特徴又はそれらの同等の特徴を任意に組み合わせてなる他の技術案も含むべきであることを、当業者に理解されたい。例えば、上記の特徴と、本発明に開示された類似の機能を持っている技術的特徴(これらに限定されていない)とを互いに置き換えてなる技術案が挙げられる。

Claims (11)

  1. 処理対象データを格納する少なくとも1つの入力メモリと、
    外部処理命令を読み取り、前記外部処理命令を解析することでデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを取得し、前記データ読み取りアドレスに応じて前記入力メモリから処理対象データを読み取り、前記操作コマンドに従って前記処理対象データを処理して、多重処理後の出力データ及び対応するデータ書き込みアドレスを取得し、データ書き込みリクエストを発する少なくとも1つのデータ転送部と、
    少なくとも1つのデータ転送部からのデータ書き込みリクエストの受信に応答して、前記データ転送部の出力データ及び対応するデータ書き込みアドレスを受信し、受信された出力データ及びデータ書き込みアドレスから、1つのデータ転送部の出力データ及び対応するデータ書き込みアドレスをストローブして出力するとともに、書き込みイネーブル信号を送信する少なくとも1つの多重調停部と、
    前記多重調停部からの書き込みイネーブル信号の受信に応答して、前記多重調停部から出力データ及び対応するデータ書き込みアドレスを受信するとともに、受信された前記出力データを、対応するデータ書き込みアドレスに書き込む少なくとも1つの出力メモリと、を備えるデータ処理装置。
  2. 前記データ転送部は、
    読み取られた前記外部処理命令を解析するとともに解析操作を実行するフロントエンド復号化部であって、前記解析操作は、前記外部処理命令からデータ読み取りアドレス、データ書き込みアドレス及び操作コマンドを抽出して、前記入力メモリにデータ読み取りリクエストを発し、前記入力メモリによって前記データ読み取りリクエストの受信に応答して送信された処理対象データを、データキューにバッファリングし、抽出された前記操作コマンドをコマンドキューにバッファリングすることを含むフロントエンド復号化部と、
    前記コマンドキューの操作コマンドに応じて前記データキューにおける処理対象データを処理して、出力データを得る少なくとも1つの処理部とを備える請求項1に記載の装置。
  3. 前記フロントエンド復号化部によって実行される解析操作は、
    前記操作コマンドがデータ転送コマンドであるかそれともデータ転置コマンドであるかを判定し、前記操作コマンドがデータ転送コマンドである場合に、前記フロントエンド復号化部は前記入力メモリから送信された処理対象データを各処理部にブロードキャストし、前記操作コマンドがデータ転置コマンドである場合に、前記フロントエンド復号化部は前記入力メモリから送信された処理対象データを、対応する少なくとも1つの処理部に送信することをさらに含み、
    ここでは、各処理部には対応するデータ読み取りアドレスのオフセットが予め設定されている請求項2に記載の装置。
  4. 前記フロントエンド復号化部は、前記外部処理命令を解析した後に、読み取られた前記外部処理命令がシングルステップ実行命令であるかそれともバッチ処理命令であるかを判定し、
    前記外部処理命令がシングルステップ実行命令である場合に、前記解析操作を実行し、
    前記外部処理命令がバッチ処理命令である場合に、前記解析操作を予め設定された回数繰り返し実行し、毎回の解析操作が実行された度に、データ読み取りアドレス及びデータ書き込みアドレスを、予め設定されたアドレスのオフセットストライドに基づいて調整する請求項3に記載の装置。
  5. 前記処理部は、
    前記データキューから処理対象データを読み取るデータレジスタと、
    前記コマンドキューから操作コマンドを読み取るコマンドレジスタと、
    前記コマンドレジスタのコマンドに従ってステータス制御を行うステートマシンと、
    前記ステートマシンの制御に従って、前記データレジスタから処理対象データを選択して出力するマルチプレクサと、を備える請求項2に記載の装置。
  6. 前記ステートマシンはさらに、前記外部処理命令から解析されたデータ書き込みアドレスを前記コマンドレジスタから受信し、受信されたデータ書き込みアドレスと、前記処理部によって予め設定された書き込みアドレスのオフセットとに基づいて、出力データのデータ書き込みアドレスを計算するとともに、データ書き込みリクエストと、前記出力データのデータ書き込みアドレスとを前記多重調停部に送信する請求項5に記載の装置。
  7. 前記多重調停部は、アービタとセレクタとを備える調停ユニットを少なくとも1つ備え、前記アービタは、各データ転送部における処理部の出力データを調停し、調停結果に応じて、1つの処理部の出力データと、対応するデータ書き込みアドレスとを選択して出力するように前記セレクタを制御し、前記出力メモリに書き込みイネーブル信号を送信する請求項5に記載の装置。
  8. 前記出力メモリは、前記多重調停部から出力された書き込みイネーブル信号と、出力データと、対応するデータ書き込みアドレスとを受信し、前記書き込みイネーブル信号の制御下で、前記出力データを対応するデータ書き込みアドレスに書き込む請求項7に記載の装置。
  9. 前記入力メモリ及び前記出力メモリがオンチップメモリである請求項1〜8のいずれか一項に記載の装置。
  10. 請求項1〜9のいずれか一項に記載のデータ処理装置を備える人工知能チップ。
  11. 中央処理装置と、請求項10に記載の人工知能チップとを備える電子機器。
JP2019125660A 2018-08-10 2019-07-05 データ処理装置、人工知能チップ及び電子機器 Active JP6833916B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810909301.4 2018-08-10
CN201810909301.4A CN110825312B (zh) 2018-08-10 2018-08-10 数据处理装置、人工智能芯片及电子设备

Publications (2)

Publication Number Publication Date
JP2020027612A JP2020027612A (ja) 2020-02-20
JP6833916B2 true JP6833916B2 (ja) 2021-02-24

Family

ID=69405954

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019125660A Active JP6833916B2 (ja) 2018-08-10 2019-07-05 データ処理装置、人工知能チップ及び電子機器

Country Status (4)

Country Link
US (1) US11023391B2 (ja)
JP (1) JP6833916B2 (ja)
KR (1) KR102247369B1 (ja)
CN (1) CN110825312B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102611169B1 (ko) * 2019-04-04 2023-12-06 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 처리 장치 및 관련 제품
CN111782580B (zh) * 2020-06-30 2024-03-01 北京百度网讯科技有限公司 复杂计算装置、方法、人工智能芯片和电子设备
US20220171645A1 (en) * 2020-11-30 2022-06-02 Red Hat, Inc. Efficient out of order request completion
CN113138802B (zh) * 2021-04-29 2024-03-05 上海阵量智能科技有限公司 命令分发装置、方法、芯片、计算机设备及存储介质
CN115902595B (zh) * 2023-02-20 2023-07-14 之江实验室 一种芯片测试系统以及芯片测试方法
CN116775542B (zh) * 2023-08-22 2023-11-03 成都芯脉微电子有限责任公司 一种ai芯片、系统及数据处理方法
CN116804915B (zh) * 2023-08-28 2023-12-15 腾讯科技(深圳)有限公司 基于存储器的数据交互方法、处理器、设备以及介质
CN116860185A (zh) * 2023-09-05 2023-10-10 深圳比特微电子科技有限公司 Sram阵列的数据访问装置、系统、方法、设备、芯片和介质
CN117435252B (zh) * 2023-12-19 2024-03-15 苏州元脑智能科技有限公司 一种互斥锁的硬件实现装置、系统及应用方法

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4278837A (en) * 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4752068A (en) * 1985-11-07 1988-06-21 Namco Ltd. Video game machine for business use
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US4967398A (en) * 1989-08-09 1990-10-30 Ford Motor Company Read/write random access memory with data prefetch
JPH0390942A (ja) * 1989-09-01 1991-04-16 Oki Electric Ind Co Ltd 主記憶装置の制御方式
US5282274A (en) * 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5200564A (en) * 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
US5802560A (en) * 1995-08-30 1998-09-01 Ramton International Corporation Multibus cached memory system
US5954812A (en) * 1996-10-29 1999-09-21 Texas Instruments Incorporated Apparatus for caching system management memory in a computer having a system management mode employing address translation
US5884055A (en) * 1996-11-27 1999-03-16 Emc Corporation Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource
US6052738A (en) * 1997-06-30 2000-04-18 Sun Microsystems, Inc. Method and apparatus in a packet routing switch for controlling access at different data rates to a shared memory
US6421751B1 (en) * 1998-11-23 2002-07-16 Advanced Micro Devices, Inc. Detecting a no-tags-free condition in a computer system having multiple outstanding transactions
EP1026595B1 (en) * 1999-01-11 2008-07-23 STMicroelectronics Limited Memory interface device and method for accessing memories
JP2001022581A (ja) * 1999-07-06 2001-01-26 Canon Inc データ処理装置及びコンピュータ読み取り可能な記憶媒体
JP2003150403A (ja) * 2001-11-06 2003-05-23 Arc Internatl (Uk) Ltd データプロセッサの観測方法及び装置
JP4164371B2 (ja) * 2003-01-16 2008-10-15 キヤノン株式会社 データ処理装置、データ処理方法、プログラム及び記憶媒体
US20030221089A1 (en) * 2002-05-23 2003-11-27 Sun Microsystems, Inc. Microprocessor data manipulation matrix module
JPWO2004079583A1 (ja) * 2003-03-05 2006-06-08 富士通株式会社 データ転送制御装置およびdmaデータ転送制御方法
CN1232918C (zh) * 2003-04-11 2005-12-21 大唐移动通信设备有限公司 一种基于共享存储器的多处理器间数据交互方法及装置
US20050033875A1 (en) * 2003-06-30 2005-02-10 Cheung Frank Nam Go System and method for selectively affecting data flow to or from a memory device
JP2006202271A (ja) * 2004-12-22 2006-08-03 Nec Electronics Corp ストリームプロセッサ及び情報処理装置
JP4416694B2 (ja) * 2005-05-12 2010-02-17 株式会社ソニー・コンピュータエンタテインメント データ転送調停装置およびデータ転送調停方法
CN100514316C (zh) * 2007-07-11 2009-07-15 南京大学 基于片上多处理器系统的动态自适应总线仲裁器
JP5531427B2 (ja) * 2009-03-16 2014-06-25 株式会社リコー スイッチ、情報処理装置、アービトレーション方法及び画像形成システム
JP5418193B2 (ja) * 2009-12-14 2014-02-19 富士ゼロックス株式会社 調停装置、画像処理装置、及び画像形成システム
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
JP2011192305A (ja) * 2011-06-01 2011-09-29 Renesas Electronics Corp 半導体信号処理装置
US9158672B1 (en) * 2011-10-17 2015-10-13 Rambus Inc. Dynamic deterministic address translation for shuffled memory spaces
US9703707B2 (en) * 2012-12-04 2017-07-11 Ecole polytechnique fédérale de Lausanne (EPFL) Network-on-chip using request and reply trees for low-latency processor-memory communication
US9224452B2 (en) * 2013-01-17 2015-12-29 Qualcomm Incorporated Heterogeneous memory systems, and related methods and computer-readable media for supporting heterogeneous memory access requests in processor-based systems
US9792989B2 (en) * 2013-02-07 2017-10-17 Toshiba Memory Corporation Memory system including nonvolatile memory
EP3001306A1 (en) * 2014-09-25 2016-03-30 Intel Corporation Bit group interleave processors, methods, systems, and instructions
US9921754B2 (en) * 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US10180803B2 (en) * 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
CN105681404A (zh) * 2016-01-04 2016-06-15 北京百度网讯科技有限公司 用于分布式缓存系统的元数据节点管理方法和装置
US10074416B2 (en) * 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
JP2018022339A (ja) * 2016-08-03 2018-02-08 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10929296B2 (en) * 2017-10-12 2021-02-23 Texas Instruments Incorporated Zero latency prefetching in caches

Also Published As

Publication number Publication date
KR20200018235A (ko) 2020-02-19
KR102247369B1 (ko) 2021-04-30
CN110825312B (zh) 2023-06-23
JP2020027612A (ja) 2020-02-20
US20200050557A1 (en) 2020-02-13
CN110825312A (zh) 2020-02-21
US11023391B2 (en) 2021-06-01

Similar Documents

Publication Publication Date Title
JP6833916B2 (ja) データ処理装置、人工知能チップ及び電子機器
EP2770477B1 (en) Dynamically reconfigurable pipelined pre-processor
CN107689948B (zh) 应用于神经网络硬件加速系统的高效数据访存管理装置
CA2170458C (en) Multi-cluster computer system
CN116414350A (zh) 低时延矩阵乘法部件
CN111897579A (zh) 图像数据处理方法、装置、计算机设备和存储介质
US20060161720A1 (en) Image data transmission method and system with DMAC
CN108388527B (zh) 直接存储器存取引擎及其方法
US7668186B1 (en) Token ecosystem for buffer management
CN111656339B (zh) 存储器装置及其控制方法
US6128244A (en) Method and apparatus for accessing one of a plurality of memory units within an electronic memory device
US20210141571A1 (en) Enhanced input of machine-learning accelerator activations
CN113806258A (zh) 一种动态自适应的虚拟通道映射方法、装置及存储介质
CN107851017A (zh) 用于在存储器与存储在寄存器组中的一个或多个数据元素向量之间传输多个数据结构的设备和方法
CN117453594A (zh) 数据传输装置及方法
CN1543618A (zh) 使用综合用于有效数据加载和下载的基于分组的协议的逻辑的硬件辅助的设计验证系统
US8724483B2 (en) Loopback configuration for bi-directional interfaces
US20230400997A1 (en) Memory apparatus embedded with computing function and operation method thereof
CN103559905A (zh) 具有主存储单元和需要预设操作的辅存储单元的半导体设备
US20140347931A1 (en) Writing into an eeprom on an i2c bus
RU2643622C1 (ru) Вычислительный модуль
TW202230227A (zh) 基於輸入特徵圖生成輸出特徵圖的方法、神經處理單元裝置及其操作方法
US9202568B2 (en) Mechanism for writing into an EEPROM on an I2C bus
CN109598348B (zh) 一种图像样本获取、模型训练方法及系统
JP4723334B2 (ja) Dma転送システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190705

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200714

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210119

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210203

R150 Certificate of patent or registration of utility model

Ref document number: 6833916

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313114

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250