KR102247369B1 - 데이터 처리 장치, 인공 지능 칩 및 전자 장치 - Google Patents

데이터 처리 장치, 인공 지능 칩 및 전자 장치 Download PDF

Info

Publication number
KR102247369B1
KR102247369B1 KR1020190082973A KR20190082973A KR102247369B1 KR 102247369 B1 KR102247369 B1 KR 102247369B1 KR 1020190082973 A KR1020190082973 A KR 1020190082973A KR 20190082973 A KR20190082973 A KR 20190082973A KR 102247369 B1 KR102247369 B1 KR 102247369B1
Authority
KR
South Korea
Prior art keywords
data
processing
command
output
address
Prior art date
Application number
KR1020190082973A
Other languages
English (en)
Other versions
KR20200018235A (ko
Inventor
펭 우
지안 구양
창해 구
웨이 퀴
닝위 수
Original Assignee
베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
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 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. filed Critical 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디.
Publication of KR20200018235A publication Critical patent/KR20200018235A/ko
Application granted granted Critical
Publication of KR102247369B1 publication Critical patent/KR102247369B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/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
    • 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
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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)

Abstract

본 출원의 실시예는 데이터 처리 장치, 인공 지능 칩 및 전자 장치를 개시한다. 데이터 처리 장치의 일 구체적인 실시예는, 처리하고자 하는 데이터를 저장하는 입력 메모리와, 외부 처리 지령을 판독하고 해석하여 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 획득하고, 데이터 판독 주소에 따라 처리하고자 하는 데이터를 판독하고, 조작 명령에 따라 처리하고자 하는 데이터에 대해 처리를 진행하여 처리된 출력 데이터 및 데이터 기입 주소를 획득하고, 데이터 기입 요청을 발송하는 데이터 수송 부재와, 적어도 하나의 데이터 수송 부재의 데이터 기입 요청이 수신됨에 대응하여, 수신된 출력 데이터 및 데이터 기입 주소로부터 그중 하나의 데이터 수송 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 게이팅하여 출력하고, 기입 인에이블 신호를 발송하는 다중 경로 중재 부재와, 기입 인에이블 신호가 수신됨에 대응하여, 다중 경로 중재 부재로부터 수신된 출력 데이터를 대응되는 데이터 기입 주소에 기입하는 출력 메모리를 포함한다. 해당 실시예는 데이터 처리 효율을 향상시킨다.

Description

데이터 처리 장치, 인공 지능 칩 및 전자 장치{DATA PROCESSING DEVICE, INTELLIGENT CHIP AND ELECTRONIC APPARATUS}
본 출원의 실시예는 컴퓨터 기술 분야에 관한 것으로, 구체적으로는 데이터 처리 장치, 인공 지능 칩 및 전자 장치에 관한 것이다.
인공 지능 기술이 점점 많은 분야에 적용됨에 따라, 인공 지능 기술로 처리하는 문제들은 점점 복잡해지고 있으며, 관련된 텐서 데이터에 대한 컴퓨팅 사이즈가 점점 커지고 있다. 현재의 인공 지능 기술에 있어서, 중앙 처리 유닛(Central Processing Unit, CPU), 그래픽 처리 유닛(Graphic Processing Unit, GPU), 디지털 신호 처리(Digital Signal Processing, DSP) 칩과 같은 범용의 프로세서 또는 주문형 집적 회로(Application Specific Integrated Circuit, ASIC), 필드 프로그래밍 게이트 어레이(Field-Programming Gate Array, FPGA)과 같은 전용의 하드웨어 장치 등을 이용하여 심층 학습 중의 다차원 텐서의 데이터 수송 및 데이터 전환 조작을 실행한다.
범용의 프로세서 기반의 데이터 처리에 있어서, 데이터 액세스 및 저장 경로가 상대적으로 복잡하고, 외부 메모리의 액세스 및 저장에 관련되며, 액세스 대역폭에 한정이 존재한다. ASIC, FPGA 등의 전용의 하드웨어 장치 기반의 데이터 처리 방법에 있어서, 통상적으로 단지 특정된 차원의 데이터 수송 및 데이터 전환 조작이 주문형으로 구현되므로, 융통성을 향상시킬 필요가 존재한다.
본 출원의 실시예는 데이터 처리 장치, 인공 지능 칩 및 전자 장치를 제공한다.
제1 양태에 있어서, 본 출원의 실시예는 데이터 처리 장치를 제공한다. 상기 장치는, 처리하고자 하는 데이터를 저장하는 적어도 하나의 입력 메모리와, 외부 처리 지령을 판독하고 처리 지령을 해석하여 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 획득하고, 데이터 판독 주소에 따라 입력 메모리에서 처리하고자 하는 데이터를 판독하고, 조작 명령에 따라 처리하고자 하는 데이터에 대해 처리를 진행하여 다중 경로 처리된 출력 데이터 및 대응되는 데이터 기입 주소를 획득하고, 데이터 기입 요청을 발송하는 적어도 하나의 데이터 수송 부재와, 적어도 하나의 데이터 수송 부재의 데이터 기입 요청이 수신됨에 대응하여, 데이터 수송 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 수신된 출력 데이터 및 데이터 기입 주소로부터 그중 하나의 데이터 수송 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 게이팅하여 출력을 진행하며, 기입 인에이블 신호를 발송하는 적어도 하나의 다중 경로 중재 부재와, 다중 경로 중재 부재에서 발송한 기입 인에이블 신호가 수신됨에 대응하여, 다중 경로 중재 부재에서 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 수신된 출력 데이터를 대응되는 데이터 기입 주소에 기입하는 적어도 하나의 출력 메모리를 포함한다.
일부의 실시예에 있어서, 데이터 수송 부재는, 판독된 처리 지령을 해석하고, 해석 조작을 실행하는 프런트 엔드 디코딩 부재와 - 상기 해석 조작은 상기 처리 지령에서 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 추출하고, 상기 입력 메모리에 데이터 판독 요청을 발송하며, 상기 데이터 판독 요청이 수신됨에 대응하여 상기 입력 메모리가 발송한 처리하고자 하는 데이터를 데이터 대기열에 캐시하고, 추출된 상기 조작 명령을 명령 대기열에 캐시하는 조작을 포함함 -, 각기 명령 대기열의 조작 명령에 따라 데이터 대기열 중의 처리하고자 하는 데이터에 대해 처리를 진행하고, 일 경로의 출력 데이터를 획득하는 적어도 하나의 처리 부재를 포함한다.
일부의 실시예에 있어서, 프런트 엔드 디코딩 부재에 의해 실행되는 해석 조작은, 조작 명령이 데이터 수송 명령 또는 데이터 전환 명령인지를 확정하고, 조작 명령이 데이터 수송 명령이면, 프런트 엔드 디코딩 부재로 입력 메모리에서 발송된 처리하고자 하는 데이터를 각 처리 부재에 브로드캐스팅하고;조작 명령이 데이터 전환 명령이면, 프런트 엔드 디코딩 부재로 입력 메모리에서 발송된 처리하고자 하는 데이터를 대응되는 적어도 하나의 처리 부재에 발송하는 것을 더 포함하되, 각 처리 부재에는 대응되는 데이터 판독 주소 오프셋이 사전에 설정된다.
일부의 실시예에 있어서, 프런트 엔드 디코딩 부재는 처리 지령을 해석한 이후, 판독된 처리 지령이 단일 단계 실행 지령 또는 일괄 처리 지령인지를 판단하고, 처리 지령이 단일 단계 실행 지령이면, 해석 조작을 실행하고, 처리 지령이 일괄 처리 지령이면, 해석 조작을 기정의 횟수로 중복하여 실행하며, 해석 조작을 매번 실행한 이후 기정의 주소 오프셋 단계 크기에 따라 데이터 판독 주소 및 데이터 기입 주소를 조정한다.
일부의 실시예에 있어서, 처리 부재는, 데이터 대기열에서 처리하고자 하는 데이터를 판독하는 데이터 레지스터와, 명령 대기열에서 조작 명령을 판독하는 명령 레지스터와, 명령 레지스터의 명령에 따라 상태 제어를 진행하는 상태 머신과, 상태 머신의 제어에 따라 데이터 레지스터에서 처리하고자 하는 데이터를 선택하여 출력을 진행하는 다중 경로 선택 장치를 포함한다.
일부의 실시예에 있어서, 상태 머신은, 명령 레지스터에서 처리 지령으로부터 해석하여 획득된 데이터 기입 주소를 수신하고, 수신된 데이터 기입 주소 및 처리 부재에 사전에 설정된 주소 입력 오프셋에 따라 출력 데이터의 데이터 기입 주소를 산출하고, 다중 경로 중재 부재에 데이터 기입 요청 및 출력 데이터의 데이터 기입 주소를 발송하도록 더 구성된다.
일부의 실시예에 있어서, 다중 경로 중재 부재는 적어도 하나의 중재 유닛을 포함하고, 각 중재 유닛은 중재 장치 및 선택 장치를 포함하며, 중재 장치는 각 데이터 수송 부재 중의 하나의 처리 부재의 출력 데이터에 대해 중재를 진행하고, 중재 결과에 따라 선택 장치를 제어하여 그중 하나의 처리 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 선택하여 출력을 진행하며, 출력 메모리에 기입 인에이블 신호를 발송한다.
일부의 실시예에 있어서, 출력 메모리는 다중 경로 중재 부재에서 출력되는 기입 인에이블 신호, 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 기입 인에이블 신호의 제어 하에 출력 데이터를 대응되는 데이터 기입 주소에 기입한다.
일부의 실시예에 있어서, 입력 메모리 및 출력 메모리은 온 칩 메모리이다.
제2 양태에 있어서, 본 출원의 실시예는 제1 양태에서 제공하는 데이터 처리 장치를 포함하는 인공 지능 칩을 제공한다.
제3 양태에 있어서, 본 출원의 실시예는 중앙 처리 유닛 및 제2 양태에서 제공하는 인공 지능 칩을 포함하는 전자 장치를 제공한다.
본 출원의 상술한 실시예의 데이터 처리 장치, 인공 지능 칩 및 전자 장치는, 처리하고자 하는 데이터를 저장하는 적어도 하나의 입력 메모리와, 외부 처리 지령을 판독하고 처리 지령을 해석하여 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 획득하고, 데이터 판독 주소에 따라 입력 메모리에서 처리하고자 하는 데이터를 판독하고, 조작 명령에 따라 처리하고자 하는 데이터에 대해 처리를 진행하여 다중 경로 처리된 출력 데이터 및 대응되는 데이터 기입 주소를 획득하고, 데이터 기입 요청을 발송하는 적어도 하나의 데이터 수송 부재와, 적어도 하나의 데이터 수송 부재의 데이터 기입 요청이 수신됨에 대응하여, 데이터 수송 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 수신된 출력 데이터 및 데이터 기입 주소로부터 그중 하나의 데이터 수송 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 게이팅하여 출력을 진행하며, 기입 인에이블 신호를 발송하는 적어도 하나의 다중 경로 중재 부재와, 다중 경로 중재 부재에서 발송한 기입 인에이블 신호가 수신됨에 대응하여, 다중 경로 중재 부재에서 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 수신된 출력 데이터를 대응되는 데이터 기입 주소에 기입하는 적어도 하나의 출력 메모리를 포함한다. 상술한 데이터 처리 장치, 인공 지능 칩 및 전자 장치는 소프트웨어 지령 기반의 구동을 실현하여, 상대적으로 높은 융통성을 구비하고, 하드웨어를 수정하지 않고서 상이한 유형 및 규모의 텐서 데이터 수송 및 전환 조작을 융통성 있게 지원하는 것을 허용하며, 아울러, 데이터 처리량이 매칭되는 입력 메모리 및 출력 메모리의 대역폭에 의존하므로, 대역폭을 효과적으로 확장시키고 액세스 및 저장의 지연을 저감시킬 수 있다.
본 출원의 기타 특징, 과제 및 이점들은 아래의 첨부된 도면들을 참조하여 진행한 비 한정적인 실시예들에 대한 상세한 설명으로부터 명확해 질 것이다.
도1은 본 출원의 실시예에 따른 데이터 처리 장치의 일 개략적 구성도이다.
도2는 본 출원의 실시예에 따른 데이터 처리 장치 중의 데이터 수송 부재의 일 개략적 구성도이다.
도3은 데이터 수송 부재 중의 프런트 엔드 디코딩 부재로 실행하는 조작의 일 개략적 흐름도이다.
도4는 데이터 수송 부재 중의 처리 부재의 개략적 구성도이다.
도5는 데이터 수송 부재 중의 처리 부재로 실행하는 데이터 처리 조작의 개략적 흐름도이다.
도6은 본 출원의 실시예에 따른 데이터 처리 장치 중의 다중 경로 중재 부재의 일 개략적 구성도이다.
도7은 본 출원의 실시예를 구현하기 위한 전자 장치에 적합한 컴퓨터 시스템의 개략적 구성도이다.
이하, 첨부된 도면 및 실시예들을 결부하여 본 출원에 대한 보다 상세한 설명을 진행하기로 한다. 여기에 설명되는 구체적인 실시예들은 단지 관련된 발명을 해석하기 위한 것일 뿐, 해당 발명을 한정하기 위한 것이 아님을 이해할 수 있을 것이다. 또한, 설명의 편의를 위해 첨부된 도면에는 단지 관련 발명에 관한 부분만이 도시됨을 설명하고자 한다.
본 출원의 실시예 및 실시예 중의 특징들은 모순되지 않는 한 서로 조합될 수 있음을 설명하고자 한다. 이하, 첨부된 도면을 참조하고 실시예들을 결부하여 본 출원에 대한 상세한 설명을 진행하기로 한다.
도1은 본 출원의 실시예에 따른 데이터 처리 장치의 일 구성(100)을 나타낸다.
도1에 도시된 바와 같이, 본 출원의 실시예의 데이터 처리 장치는 적어도 하나의 입력 메모리(11), 적어도 하나의 데이터 수송 부재(12), 적어도 하나의 다중 경로 중재 부재(13) 및 적어도 하나의 출력 메모리(14)를 포함할 수 있다. 입력 메모리(11)는 데이터 수송 부재(12)와 연결되고, 데이터 수송 부재(12)는 다중 경로 중재 부재(13)와 연결되며, 다중 경로 중재 부재(13)는 출력 메모리(14)와 연결된다.
입력 메모리(11)는 처리하고자 하는 데이터를 저장하고, 여기서 처리하고자 하는 데이터는 심층 학습 컴퓨팅 중의 텐서 데이터일 수 있으며, 예컨대 심층 학습 네트워크에 입력된 이미지를 표시하는 2차원 그레이 값 행렬일 수 있다. 처리하고자 하는 데이터는 데이터 처리 장치 외부의 처리 유닛(예컨대, CPU) 또는 기타의 맞춤형 장치로 입력 메모리에 기입된 것일 수 있다. 입력 메모리(11)는 이중 포트 정적 랜덤 액세스 메모리(Static Random Access memory, SRAM)일 수 있으며, 그의 비트 폭은 예컨대 512 비트(bit)일 수 있다. 입력 메모리 중의 데이터의 비트 폭은 32 bit일 수 있으며, 이러할 경우, 각 입력 메모리의 하나의 행은 16개의 데이터를 저장할 수 있다.
대안으로, 본 출원의 실시예의 데이터 처리 장치(100)는 적어도 2개의 입력 메모리, 적어도 2개의 데이터 수송 부재, 적어도 2개의 다중 경로 중재 부재 및 적어도 2개의 출력 메모리를 포함할 수 있다. 여기서, 입력 메모리, 데이터 수송 부재, 다중 경로 중재 부재, 출력 메모리는 일일이 대응될 수 있다. 또한, 일부의 구현에 있어서, 데이터 처리 장치 중의 입력 메모리, 데이터 수송 부재, 다중 경로 중재 부재 및 출력 메모리의 수량은 업무상의 요구(예컨대, 액세스 및 저장 속도, 대역폭 요구)에 따라 확장되거나 구성될 수 있다. 데이터 처리 장치가 다수의 입력 메모리를 포함할 경우, 다수의 입력 메모리는 통합적으로 주소 지정될 수 있으며, 즉, 다수의 입력 메모리 사이는 연속적으로 주소 지정될 수 있다. 예를 들어, 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)에서 발송된 데이터 판독 요청을 수신할 수 있으며, 해당 데이터 판독 요청은 지정된 주소의 데이터를 판독하는 요청일 수 있고, 입력 메모리(11)는 데이터 수송 부재(12)에 대응되는 주소의 데이터를 출력할 수 있다.
데이터 수송 부재(12)는 외부의 처리 지령을 판독하고, 처리 지령을 해석하여 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 획득하고, 데이터 판독 주소에 따라, 입력 메모리에서 처리하고자 하는 데이터를 판독하고, 조작 명령에 따라, 처리하고자 하는 데이터에 대해 처리를 진행하여 다중 경로 처리된 출력 데이터 및 대응되는 데이터 기입 주소를 획득하고, 그에 연결된 다중 경로 중재 부재에 데이터 기입 요청을 발송할 수 있다.
여기서, 데이터 수송 부재(12)는 지령 입구(즉, 지령 수신 포트)를 구비할 수 있으며, 지령 입구를 통해 외부의 처리 지령을 판독하며, 해당 처리 지령은 처리하고자 하는 데이터에 대한 처리 조작을 지시하기 위한 것일 수 있다. 데이터 수송 부재(12)로 처리 지령에서 해석하여 획득한 데이터 판독 주소는, 입력 메모리(11)에서의 처리하고자 하는 데이터의 주소일 수 있으며, 또는 대안으로, 해당 데이터 판독 주소는 입력 메모리(11)에서의 처리하고자 하는 데이터의 시작 주소이다. 데이터 기입 주소는, 처리된 데이터를 출력 메모리(14)에 기입하는 주소일 수 있으며, 또는 대안으로, 해당 데이터 기입 주소는, 처리된 출력 데이터를 출력 메모리(14)에 기입하는 시작 주소일 수 있다. 조작 명령은 처리하고자 하는 데이터에 대해 실행하는 조작(예컨대, 전환 조작 또는 수송 조작)을 지시할 수 있다. 여기서, 전환 조작은 텐서 데이터 중의 임의의 한 차원의 데이터를 텐서 데이터의 다른 한 차원으로 전환시키는 것일 수 있으며, 수송 조작은 텐서 데이터에 대한 전송 조작일 수 있다. 대안으로, 데이터 수송 부재(12)는 처리 지령을 해석한 이후, 데이터 기입 방식을 또한 획득할 수 있으며, 데이터 기입 방식은 출력 데이터를 출력 메모리(14)에 기입하는 방식(예컨대, 직렬 기입)을 지시하도록 이용된다.
데이터 수송 부재(12)는 해석하여 획득한 데이터 판독 주소에 따라 입력 메모리에 데이터 판독 요청을 발송하고, 즉, 데이터 판독 주소를 포함하는 데이터 판독 요청을 발송한다. 입력 메모리(11)는 해당 데이터 판독 요청을 수신한 이후, 데이터 판독 주소에 저장된 데이터를 처리하고자 하는 데이터로서 데이터 수송 부재(12)에 전송할 수 있으며, 이로써, 외부 처리 지령에 따라 처리하고자 하는 데이터를 획득할 수 있다.
데이터 수송 부재(12)는 상술한 조작 명령에 따라, 처리하고자 하는 데이터에 대해 처리를 진행하여 출력 데이터를 획득할 수 있으며, 외부 처리 지령에서 해석된 데이터 기입 주소에 따라, 각 출력 데이터에 대응되는 데이터 기입 주소를 산출할 수 있다. 예컨대, 외부 처리 지령에서 해석된 데이터 기입 주소를 초기 기입 주소로서, 출력 데이터의 출력 타이밍에 따라 초기 기입 주소를 순차적으로 뒤로 이동시켜 대응되는 출력 데이터의 데이터 기입 주소를 획득할 수 있다. 출력 데이터 및 대응되는 데이터 기입 주소를 다중 경로 중재 부재(13)에 발송할 수 있다. 본 실시예에 있어서, 데이터 처리 장치(100) 중의 다수의 데이터 수송 부재(12)는 출력 데이터 및 대응되는 데이터 기입 주소를 동일한 다중 경로 중재 부재(13)에 발송할 수 있으며, 각 데이터 수송 부재(12)는 출력 데이터 및 대응되는 데이터 기입 주소를 적어도 2개의 다중 경로 중재 부재(13)에 발송할 수도 있다. 대안으로, 각 데이터 수송 부재(12)는 출력 데이터 및 대응되는 데이터 기입 주소를 각 다중 경로 중재 부재(13)에 각각 발송한다. 데이터 수송 부재(12)는 다중 경로 중재 부재(13)에 데이터 기입 요청을 발송할 수도 있다.
다중 경로 중재 부재(13)는 적어도 하나의 데이터 수송 부재(12)의 데이터 기입 요청을 수신하고, 수신된 데이터 기입 요청에 대응하여, 적어도 하나의 데이터 수송 부재(12)의 출력 데이터 및 대응되는 데이터 기입 주소를 수신할 수 있다. 다중 경로 중재 부재(13)는 수신된 출력 데이터에 대해 중재를 진행하고, 수신된 적어도 하나의 데이터 수송 부재(12)의 출력 데이터 및 대응되는 데이터 기입 주소에서 그중 하나의 데이터 수송 부재(12)의 출력 데이터 및 대응되는 데이터 기입 주소를 게이팅하여 출력을 진행할 수 있으며, 출력 메모리(14)에 기입 인에이블 신호를 발송하여 출력 메모리(14)로 하여금 저장 기능을 작동시킬 수도 있다.
대안으로, 다중 경로 중재 부재(13)는 데이터 수송 부재에 일일이 대응되는 다수의 입력 포트를 구비할 수 있으며, 각 입력 포트는 하나의 데이터 수송 부재(12)의 출력 데이터 및 데이터 기입 주소를 수신한다. 다중 경로 중재 부재(13)는 기정의 중재 전략에 따라 다수의 입력 포트에서 그중 하나의 입력 포트를 게이팅하고, 게이팅된 입력 포트로 수신한 데이터 수송 부재의 출력 데이터 및 데이터 기입 주소를 출력할 수 있다. 게이팅되지 않은 입력 포트로 수신한 출력 데이터 및 데이터 기입 주소는 기타의 다중 경로 중재 부재를 통해 출력하거나, 중복되게 요청된 후 다중 경로 중재 부재로 출력할 수 있다.
출력 메모리(14)는 다중 경로 중재 부재(13)에서 발송한 기입 인에이블 신호가 수신됨에 대응하여, 다중 경로 중재 부재(13)에서 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 수신된 출력 데이터를 대응되는 데이터 기입 주소에 기입할 수 있다. 출력 메모리(14)는 이중 포트 SRAM일 수 있으며, 그의 비트 폭은 예컨대 32 비트(bit)일 수 있다. 각 출력 메모리(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)는 데이터 수송 부재에 기입 응답 신호를 반송할 수 있다.
본 출원의 상기 실시예의 데이터 처리 장치는, 적어도 하나의 입력 메모리, 적어도 하나의 데이터 수송 부재, 적어도 하나의 다중 경로 중재 부재 및 적어도 하나의 출력 메모리를 포함한다. 여기서, 입력 메모리, 데이터 수송 부재, 다중 경로 중재 부재 및 출력 메모리의 수량은 업무상의 요구에 따라 확장되거나 구성될 수 있다. 예컨대, 심층 학습 기반의 신경망 트레이닝 과정에 있어서, 대 데이터량의 텐서 데이터 수송 또는 전환을 진행하여야 할 경우, 텐서 데이터의 비트 폭에 따라 필요한 입력 메모리, 출력 메모리의 수량을 산출하여, 상응한 데이터의 데이터 수송 부재, 다중 경로 중재 부재를 설정할 수 있으며, 하드웨어 장치를 수정하지 않고서 상이한 유형 및 규모의 텐서 데이터의 수송 및 전환 조작을 융통성 있게 지원할 수 있다.
상술한 데이터 처리 장치의 데이터 액세스 및 저장 경로는 간단하고, 그의 처리량은 입력 메모리 및 출력 메모리의 대역폭에 의존하며, 높은 대역폭의 메모리를 이용하여 대역폭을 확장시켜 액세스 및 저장 지연을 저감시킬 수 있다. 또한, 상술한 데이터 처리 장치는 지령 입구를 통해 외부 처리 지령을 수신하고, 처리 지령을 해석하여 데이터 주소 및 조작 명령을 획득하며, 소프트웨어 지령 기반의 구동을 실현하여, 상대적으로 높은 융통성을 구비한다.
대안으로, 또한 데이터 액세스 및 저장 속도를 향상시키고, 지연을 저감시키기 위하여, 상술한 입력 메모리 및 출력 메모리는 온 칩 메모리를 이용할 수 있다.
이어서 도2를 참조하면, 도2는 본 출원의 실시예에 따른 데이터 처리 장치 중의 데이터 수송 부재의 일 개략적 구성도이다. 도2에 도시된 바와 같이, 데이터 수송 부재(12)는 프런트 엔드 디코딩 부재(121) 및 적어도 하나의 처리 부재(122)를 포함할 수 있다. 프런트 엔드 디코딩 부재(121)는 처리 지령에 대한 해석 조작을 실행할 수 있다. 해석 조작은, 처리 지령에서 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 추출한 이후, 입력 메모리에 데이터 판독 요청을 발송하고, 입력 메모리가 데이터 판독 요청을 수신함에 대응하여 발송한 처리하고자 하는 데이터를 데이터 대기열에 캐시하고, 추출된 조작 명령을 명령 대기열에 캐시하는 것을 포함할 수 있다. 각 처리 부재(122)는 명령 대기열 중의 명령에 따라 데이터 대기열 중의 처리하고자 하는 데이터에 대해 처리를 진행하고, 일 경로의 출력 데이터를 획득할 수 있다.
대안으로, 처리 지령을 해석한 이후, 데이터를 기입하는 기입 방식을 추출할 수도 있으며, 해당 기입 방식은 출력 메모리의 일 행을 병렬 기입하는 것일 수 있으며, 또는 출력 메모리의 일 열을 기입하는 것일 수 있다.
본 실시예에 있어서, 데이터 수송 부재 중의 명령 대기열 중의 조작 명령 및 데이터 대기열 중의 대응되는 처리하고자 하는 데이터는 각 처리 부재(122)에 분배되어 처리될 수 있다. 각 처리 부재(122)는 대응되는 데이터 판독 주소 오프셋 및 데이터 기입 주소 오프셋을 사전에 설정할 수 있다. 여기서, 데이터 판독 주소 오프셋은 판독된 제1/제1 세트의 처리하고자 하는 데이터의 주소에 대한 해당 처리 부재로 판독한 처리하고자 하는 데이터의 오프셋을 나타낼 수 있고, 데이터 기입 주소 오프셋은 기입된 제1/제1 세트의 처리하고자 하는 데이터의 주소에 대한 해당 처리 부재로 기입한 출력 데이터의 오프셋을 나타낼 수 있다. 구체적으로, 각 처리 부재(122)는 독립적인 코드를 구비할 수 있고, 해당 코드는 처리 부재에 대응되는 처리하고자 하는 데이터의 데이터 판독 주소 오프셋 또는 출력 데이터의 데이터 기입 주소 오프셋을 표식하도록 이용될 수 있다. 예컨대, 각 처리 부재(122)는 단지 입력 메모리의 일 열의 데이터를 처리할 수 있고, 코드가 x1인 처리 부재는 입력 메모리 중의 제1 열의 데이터를 대응되게 처리할 수 있고, 코드가 x2인 처리 부재는 입력 메모리 중의 제2 열의 데이터를 대응되게 처리할 수 있는 등이다. 이로써, 처리하고자 하는 데이터의 데이터 판독 주소에 따라, 대응되는 코드를 구비하는 처리 부재(122)에 처리하고자 하는 데이터를 분배하여 처리를 진행할 수 있다. 구체적인 처리 조작은 예컨대 데이터 전환 조작 또는 데이터 수송 조작일 수 있다. 명령 대기열 중의 조작 명령은 데이터 대기열 중의 처리하고자 하는 데이터에 일일이 대응되는 것일 수 있다. 처리 부재(122)는 그의 코드에 따라 데이터 대기열에서 처리하고자 하는 데이터를 판독하고, 명령 대기열에서 대응되는 조작 명령을 획득하며, 해당 조작 명령을 실행하여 출력 데이터를 획득할 수 있다.
대안으로, 상술한 해석 조작은, 조작 명령이 데이터 수송 명령 또는 데이터 전환 명령인지를 확정하는 것을 더 포함할 수 있다.
여기서, 데이터 수송 명령은 입력 메모리의 데이터를 출력 메모리에 수송하는 명령일 수 있다. 처리 지령으로부터 해석하여 획득한 데이터 기입 주소는, 출력 메모리에 기입된 제1 데이터의 주소일 수 있다. 이러할 경우, 데이터 수송 과정에, 기정의 주소 오프셋 단계 크기에 따라 처리하고자 하는 데이터의 주소 오프셋, 예컨대, 제1 데이터에 대한 주소 "xxxxx"의 오프셋 2를 산출하여, 처리하고자 하는 데이터에 대응되는 출력 데이터의 데이터 기입 주소가 "xxxxx"를 2개의 단위로 오프셋한 후의 주소임을 확정할 수 있다. 여기서, 데이터 수송 과정에 데이터에 대해 변환을 진행하지 않고, 단지 처리하고자 하는 데이터를 출력 메모리에 수송한다. 입력 메모리에서 발송한 처리하고자 하는 데이터는 여러 행의 데이터일 수 있으며, 조작 명령이 데이터 수송 명령이면, 프런트 엔드 디코딩 부재는 입력 메모리에서 발송한 처리하고자 하는 데이터를 각 처리 부재(122)에 브로드캐스팅할 수 있으며, 각 처리 부재(122)는 처리하고자 하는 데이터 중 각자에 대응되는 일 열의 데이터를 수신하여 수송을 진행한다.
데이터 전환 명령은 처리하고자 하는 데이터에 대해 전환 조작을 진행하는 명령일 수 있다. 처리 지령을 해석하여 획득한 데이터 기입 주소는, 메모리에 기입된 제1 데이터 또는 제1 열의 데이터의 주소일 수 있다. 데이터 전환 과정에, 기정의 주소 오프셋 단계 크기에 따라 각 열의 처리하고자 하는 데이터의 오프셋을 산출하고, 이어서 상술한 데이터 기입 주소에 따라 각 열의 처리하고자 하는 데이터의 저장 순서를 산출할 수 있다. 예컨대, 주소 오프셋 단계 크기가 2이고, 해석하여 획득한 데이터 기입 주소가 “yyyyy"일 경우, 제1 열의 처리하고자 하는 데이터를 전환한 후의 저장 주소는 “yyyyy"를 2개 단위 오프셋한 후의 시작 주소이다. 여기서, 전환 조작은 처리하고자 하는 데이터 중의 각 열을 출력 데이터 중의 각 행으로 전환하는 조작일 수 있다. 입력 메모리에서 발송한 처리하고자 하는 데이터는 여러 열의 데이터일 수 있으며, 조작 명령이 데이터 전환 명령이면, 프런트 엔드 디코딩 부재는 입력 메모리에서 발송한 처리하고자 하는 데이터를 대응되는 적어도 하나의 처리 부재에 발송할 수 있다. 입력 메모리에서 발송된 처리하고자 하는 데이터는 여러 열의 데이터일 수 있으며, 각 처리 부재는 그의 코드에 따라 대응되는 일 열의 데이터를 확정할 수 있으며, 이러할 경우, 데이터 전환 명령을 수신한 이후, 여러 열의 데이터 중의 각 열을 해당 열의 데이터에 대응되는 처리 부재에 발송하여 전환 및 대응되는 기입 주소의 컴퓨팅을 진행할 수 있다.
본 실시예의 일부 선택 가능한 구현에 있어서, 해석 조작을 실행하기 전에, 상술한 프런트 엔드 디코딩 부재는 판독된 처리 지령이 단일 단계 지령 또는 일괄 처리 지령인지를 판단할 수도 있다. 도3을 참조하면, 도3은 데이터 수송 부재 중의 프런트 엔드 디코딩 부재의 실행 조작의 하나의 개략적 흐름도를 나타낸다.
도3에 도시된 바와 같이, 프런트 엔드 디코딩 실행 조작의 흐름(300)에 있어서, 먼저 단계(301)에서 처리 지령을 해석하고, 이어서 단계(302)에서, 처리 지령이 단일 단계 실행 지령 또는 일괄 처리 지령인지를 판단할 수 있다. 단일 단계 실행 지령은, 입력 메모리 중의 일 세트의 처리하고자 하는 데이터에 대해 처리를 진행하는 지령일 수 있고, 일괄 처리 지령은, 입력 메모리 중의 다수의 세트의 처리하고자 하는 데이터에 대해 처리를 진행하는 지령일 수 있다.
단계(302)의 판단 결과가 단일 단계 실행 지령이면, 단일 단계 지령 모드로 진입하여, 단계(303) 내지 단계(306)에 도시된 바와 같은 해석 조작을 실행한다. 구체적으로, 단계(303)에서, 처리 지령에서 조작 명령, 데이터 판독 주소 및 데이터 기입 주소를 추출하고, 조작 명령을 명령 대기열에 추가하며, 입력 메모리에 데이터 판독 요청을 발송한다. 입력 메모리는 데이터 판독 요청을 수신한 이후, 처리하고자 하는 데이터를 데이터 수송 부재에 발송할 수 있다. 이어서, 단계(304)에서, 조작 명령이 데이터 수송 명령 또는 데이터 전환 명령인지를 판단할 수 있으며, 데이터 수송 명령이면, 처리하고자 하는 데이터를 각 처리 부재에 브로드캐스팅하는 단계(305)를 실행하고, 데이터 전환 명령이면, 처리하고자 하는 데이터를 대응되는 처리 부재에 유니캐스팅하는 단계(306)를 실행한다. 이어서, 단계(301)로 돌아가, 수신된 다음 처리 지령을 해석할 수 있다.
단계(302)의 판단 결과가 처리 지령이 일괄 처리 지령이면, 기정 횟수로 단계(303), 단계(304) 및 단계(305) 또는 단계(306)에 도시된 해석 조작을 중복하여 실행할 수 있다. 매번 해석 조작을 실행 완료한 이후, 기정의 주소 오프셋 단계 크기에 따라 데이터 판독 주소 및 데이터 기입 주소를 조정할 수 있다. 즉, 한 세트의 처리하고자 하는 데이터에 대해 해석을 완료한 이후, 기정의 판독 주소 오프셋 단계 크기(예컨대, 1)에 따라 다음 세트의 처리하고자 하는 데이터의 데이터 판독 주소를 산출하고, 이어서, 다음 세트의 처리하고자 하는 데이터를 판독하여 해석을 진행하고, 기정의 기입 주소 오프셋 단계 크기(예컨대, 2)에 따라 기입하는 한 세트의 처리하고자 하는 데이터에 대응되는 출력 데이터의 데이터 기입 주소를 산출할 수 있다. 이로써, 다수의 해석 조작을 중복하여 실행할 수 있으며, 매번 해석 조작이 완료된 이후, 단계(307)에서 일괄 처리의 완료 여부를 판단할 수 있으며, 완료되지 않았을 경우, 단계(308)에서 데이터 판독 주소 및 데이터 기입 주소를 조정한 이후, 돌아가 해석 조작을 실행한다. 일괄 처리가 완료되면, 돌아가 지령 입구에서 수신된 다음 처리 지령을 해석한다.
도3을 통해 알 수 있는바, 프런트 엔드 디코딩 부재는 융통성 있게 외부 처리 지령을 해석하고, 외부 처리 지령에 따라 처리하고자 하는 데이터, 데이터 판독 주소 및 데이터 기입 주소를 획득하고, 처리하고자 하는 데이터를 대응되는 처리 부재에 브로드캐스팅하여 처리를 진행함으로써, 해당 프런트 엔드 디코딩 부재를 포함하는 데이터 수송 부재로 소프트웨어 지령 기반의 융통성 있는 구동을 구현한다.
이어서 도4를 참조하면, 도4는 본 출원의 실시예의 일 선택 가능한 구현의 데이터 수송 부재 중의 처리 부재의 개략적 구성도를 나타낸다.
도4에 도시된 바와 같이, 처리 부재(122)는 데이터 레지스터(1221), 명령 레지스터(1222),상태 머신(1223) 및 다중 경로 선택 장치(1224)를 포함할 수 있다. 데이터 레지스터(1221)는 데이터 대기열에서 처리하고자 하는 데이터를 판독하고, 명령 레지스터(1222)는 명령 대기열에서 조작 명령을 판독하고, 상태 머신(1223)은 명령 레지스터의 명령에 따라 상태 제어를 진행할 수 있으며, 다중 경로 선택 장치(1224)는 상태 머신(1223)의 제어에 따라 데이터 레지스터(1221)에서 처리하고자 하는 데이터를 선택하여 출력을 진행한다.
데이터 레지스터(1221)는 데이터 대기열 중의 처리하고자 하는 데이터를 다중 경로 선택 장치(1224)에 순차적으로 전송할 수 있고, 다중 경로 선택 장치(1224)는 이러한 처리하고자 하는 데이터를 캐시할 수 있다. 명령 레지스터(1222)는 명령 대기열 중의 명령을 상태 머신에 순차적으로 전송할 수 있다. 상태 머신(1223)은 명령 레지스터에서 전송되는 조작 명령을 해석하고, 현재 수신된 명령에 따라 다중 경로 선택 장치(1224)에 대해 제어를 진행할 수 있다. 구체적으로, 상태 머신은 현재 조작 명령에 따라 다중 경로 선택 장치(1224)에 캐시된 그중 한 세트 또는 다수의 세트의 처리하고자 하는 데이터를 게이팅하여 출력을 진행할 수 있다. 예를 들어, 현재 수신된 조작 명령이 데이터A에 대해 전환을 진행하는 명령일 경우, 상태 머신(1223)은 다중 경로 선택 장치(1224)에 제어 신호를 출력하여, 다중 경로 선택 장치(1224)로 대응되는 데이터A를 게이팅하여 출력을 진행할 수 있다. 상태 머신(1223)은 현재 수신된 조작 명령에 대응되는 데이터의 데이터 기입 주소를 산출할 수도 있으며, 구체적으로, 명령 레지스터에서 처리 지령으로부터 해석하여 획득된 데이터 기입 주소를 수신하고, 수신된 데이터 기입 주소 및 처리 부재에 사전에 설정된 주소 입력 오프셋에 따라, 출력 데이터의 데이터 기입 주소를 산출할 수 있으며, 즉, 처리 부재의 코드에 따라 데이터 기입 주소 오프셋을 확정하고, 상태 머신에 수신된 데이터 기입 주소에 대해 데이터 기입 주소에 따라 오프셋한 후에 현재 명령에 대응되는 데이터 기입 주소를 획득한다. 또는, 프런트 엔드 디코딩 부재는 처리 부재의 코드에 대응되는 데이터 기입 주소 오프셋에 따라, 현재 명령에 대응되는 출력 데이터의 데이터 기입 주소를 산출할 수 있으며, 상태 머신(1223)은 프런트 엔드 디코딩 부재로 컴퓨팅한 현재 명령에 대응되는 출력 데이터의 데이터 기입 주소를 명령 레지스터에서 수신할 수 있다. 상태 머신(1223)은 다중 경로 중재 부재에 데이터 기입 요청을 발송하고, 출력 데이터의 기입 주소를 다중 경로 중재 부재에 발송할 수도 있다.
도5를 참조하면, 도5는 데이터 수송 부재 중의 처리 부재로 실행하는 데이터 처리 조작의 일 개략적 흐름도를 나타낸다.
도5에 도시된 바와 같이, 처리 부재로 실행하는 처리 조작의 흐름(500)은 아래와 같은 단계들을 포함한다. 단계(501)에서, 명령 레지스터 중의 명령을 해석한다. 구체적으로, 상태 머신(1223)은 명령 레지스터에서 조작 명령을 추출하고, 이어서, 단계(502)에서 조작 명령이 데이터 수송 명령 또는 데이터 전환 명령인지를 판단할 수 있다. 단계(502)의 판단 결과가 데이터 수송 명령이면, 처리 부재의 코드에 따라, 대응되게 오프셋된 데이터 출력을 선택하고, 출력 메모리에 대해 기입 요청을 발송하는 단계(503)를 실행하고, 단계(502)의 판단 결과가 데이터 전환 명령이면, 데이터 전환 명령에 따라 순차적으로 데이터를 출력하고, 출력 메모리에 기입 요청을 발송하는 단계(504)를 실행한다. 이어서, 데이터 전환 명령이 지향하는 데이터의 기입 완료 여부를 판단하는 단계(505)를 실행한다. 단계(505)의 판단 결과가 데이터 전환 명령이 지향하는 데이터를 이미 기입 완료한 것이면, 단계(501)로 돌아가 명령 레지스터 중의 다음 명령을 해석할 수 있다. 단계(505)의 판단 결과가 데이터 전환 명령이 지향하는 데이터를 기입 완료하지 못한 것이면, 단계(504)로 돌아가, 데이터 전환 명령에 따라 순차적으로 데이터를 출력하고, 출력 메모리에 기입 요청을 발송한다.
처리 부재는 대응되는 데이터 기입 주소 오프셋을 사전에 설정할 수 있다. 구체적으로, 처리 부재는 독립적인 코드를 구비할 수 있고, 각 처리 부재는 코드에 따라 그가 처리하는 데이터의 주소가 지령 입구에서 판독된 외부 처리 지령이 지시하는 입력 데이터 주소에 대한 오프셋을 확정할 수 있다. 상술한 단계(503)에서, 처리 부재는 코드에 따라 대응되게 오프셋된 데이터를 선택하여 출력할 수 있으며, 예컨대, 처리 부재 코드는 C1이고, 이에 대응되는 오프셋은 4이면, 처리 부재는 입력 데이터 주소에 대한 오프셋이 4인 주소에 저장된 데이터를 선택하여 출력을 진행할 수 있으며, 이때, 처리 부재에서 출력하는 데이터는 입력 데이터 주소에 대한 오프셋이 4인 주소에 저장된 데이터이다. 처리 부재는 출력 메모리에 대해 기입 요청을 발송할 수 있다.
데이터 전환 명령이 지향하는 처리하고자 하는 데이터는 입력 메모리 중의 일 행의 데이터이고, 각 처리 부재는 그의 코드에 따라 입력 메모리의 일 열의 데이터를 대응되게 처리하며, 이러할 경우, 상술한 단계(504)에서, 처리 부재는 처리하고자 하는 데이터 중 그의 코드에 대응되는 열의 데이터를 순차적으로 출력할 수 있으며, 단계(505)에서, 처리하고자 하는 일 행의 데이터에 대한 전환 완료 여부를 판단할 수 있으며, 완료되지 못했을 경우, 단계(504)로 돌아가, 데이터 수송 부재 내의 다수의 처리 부재 중의 다음 처리 부재로 이어서 다음 행의 데이터에 대해 출력을 진행한다. 이때, 처리 부재의 출력 데이터는 입력 메모리 중의 데이터 전환하여 획득한 데이터이다. 처리 부재는 데이터를 출력할 경우, 다중 경로 중재 부재에 기입 요청을 발송할 수 있다.
도6을 참조하면, 도6은 본 출원의 실시예에 따른 일 선택 가능한 구현 중의 데이터 처리 장치 중의 다중 경로 중재 부재의 일 개략적 구성도를 나타낸다.
도6에 도시된 바와 같이, 다중 경로 중재 부재(13)는 적어도 하나의 중재 유닛(130)을 포함할 수 있다. 여기서, 중재 유닛(130)의 수량은 선택 가능하게 데이터 수송 장치 중의 처리 부재의 수량과 동일하다. 각 중재 유닛(130)은 중재 장치(131) 및 선택 장치(132)를 포함할 수 있다. 중재 장치(131)는 각 데이터 수송 부재 중의 하나의 처리 부재의 출력 데이터에 대해 중재를 진행하고, 중재 결과에 따라 선택 장치(132)를 제어하여 그중 하나의 처리 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 선택하여 출력을 진행하며, 출력 메모리에 기입 인에이블 신호를 발송할 수 있다.
본 실시예에 있어서, 데이터 처리 장치가 N(N은 양의 정수임)개의 데이터 수송 부재를 포함한다고 가정하면, 각 중재 유닛(130)은 N개의 데이터 수송 부재 중 각 데이터 수송 부재의 하나의 처리 부재와 연결되며, 즉, 각 중재 유닛은 N개의 처리 부재의 출력 데이터(도6에 도시된 “기입 데이터”) 및 대응되는 데이터 기입 주소(도6에 도시된 “기입 주소”)를 수신한다. 각 데이터 수송 부재 중의 다수의 처리 부재는 대응되는 다수의 중재 유닛에 출력 데이터 및 데이터 기입 주소를 전송한다. 구체적으로, 중재 장치는 연결된 N개의 처리 부재에서 발송된 기입 요청에 따라 중재를 진행하고, 중재 결과에 따라 선택 장치를 제어하여 입력된 N개의 처리 부재의 출력 데이터에서 하나의 처리 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 선택하여 출력 메모리에 전송할 수 있다.
여기서, 출력 데이터의 데이터 기입 주소는 처리 부재로 그의 코드에 대응되는 데이터 기입 주소 오프셋 및 외부 처리 지령으로부터 해석하여 획득한 초기 데이터 기입 주소에 따라 산출하여 획득한 것이다. 예시적으로, 데이터 기입 주소의 오프셋 단계 크기를 2로, 제1 데이터 수송 부재 중의 제1 처리 부재의 코드를 D1로, 처리 지령으로부터 해석하여 획득한 데이터 기입 주소를 Add1로 사전에 설정할 수 있으며, 이러할 경우, 대응되는 데이터 기입 주소 오프셋은 2이고, 해당 처리 부재의 출력 데이터의 데이터 기입 주소는 Add1+2로 획득한 주소이다.
본 실시예에 있어서, 선택 장치는 각 데이터 수송 부재의 처리 부재에서 하나의 데이터 수송 부재의 처리 부재를 선택하고, 선택된 처리 부재의 출력 데이터 및 데이터 기입 주소를 출력 메모리에 전송하고, 출력 메모리에 기입 인에이블 신호를 발송할 수 있다. 출력 메모리는 다중 경로 중재 부재에서 출력하는 기입 인에이블 신호, 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 기입 인에이블 신호의 제어 하에 인에이블되어, 출력 데이터를 대응되는 데이터 기입 주소에 기입한다.
대안으로, 출력 메모리는 다중 경로 중재 부재에 기입 응답 신호를 반송할 수도 있고, 다중 경로 중재 부재는 기입 응답 신호를 데이터 수송 부재의 상태 머신에 피드백할 수 있다. 상태 머신은 기입 응답 신호에 따라 대응되는 명령 레지스터 중의 명령의 상태를 "이미 완료"로 전환할 수 있으며, "이미 완료" 상태의 명령을 명령 레지스터에서 삭제할 수도 있다. 명령 레지스터 중 상태가 "이미 완료"가 아닌 명령에 대해, 상태 머신은 기정의 명령의 캐시 주기에 따라 명령 레지스터에서 주기적으로 명령을 판독하고, 다중 경로 선택 장치를 제어하여 대응되는 처리하고자 하는 데이터를 게이팅하여 처리를 진행할 수 있다.
다중 경로 중재 유닛을 이용하여 중재 출력을 진행함으로써, 데이터 전환 및 수송 과정에서 출력 데이터가 질서 있게 메모리에 저장되는 것을 확보함과 동시에 데이터 기입의 속도를 확보하여 데이터 처리 장치의 처리 효율을 향상시킬 수 있다.
본 출원의 실시예는 인공 지능 칩을 더 제공한다. 해당 인공 지능 칩은 상술한 실시예에 설명된 데이터 처리 장치를 포함할 수 있다. 데이터 처리 장치는 적어도 하나의 입력 메모리,적어도 하나의 데이터 수송 부재,적어도 하나의 다중 경로 중재 부재 및 적어도 하나의 출력 메모리를 포함한다. 데이터 처리 장치 중의 각 부재의 구성 및 작업 원리는 도1 내지 도5에 도시된 각 실시예 및 선택 가능한 구현의 설명을 참조할 수 있으며, 이에 대한 중복된 설명은 생략하기로 한다.
본 실시예 중의 인공 지능 칩은 심층 학습 트레이닝 및 예비 트레이닝을 상대로, 고 밀도의 컴퓨팅과 액세스 및 저장 요구를 만족할 수 있다. CPU, GPU 등 범용의 프로세서 및 전용의 하드웨어 장치의 데이터 처리 방법으로 심층 학습 정경에서 액세스 및 저장하는 속도 및 융통성에 대한 문제를 해결함으로써, 데이터 처리 효율을 향상시킬 수 있다.
아래에 도7을 참조하면, 도7은 본 출원의 실시예의 전자 장치를 구현하기에 적합한 컴퓨터 시스템(700)의 개략적 구성도를 나타낸다. 도7에 도시된 전자 장치는 단지 일 예시일 뿐, 본 출원의 실시예의 기능 및 이용 범위를 한정하기 위한 것이 아니다.
도7에 도시된 바와 같이, 컴퓨터 시스템(700)은 중앙 처리 유닛(701; CPU)을 포함하되, 이는 판독 전용 메모리 장치(702; ROM)에 저장된 프로그램 또는 저장부(705)로부터 랜덤 액세스 메모리 장치(703; RAM)에 로딩된 프로그램에 의해 각종의 적당한 동작과 처리를 실행할 수 있다. RAM(703)에는 시스템(700)을 작동하기에 필요한 각종 프로그램 및 데이터가 더 저장되어 있다. CPU(701)는 인공 지능 칩(704)에 지령 및 데이터를 발송하여 데이터의 처리 및 분석을 진행할 수도 있다. 예컨대, 심층 학습 태스크에 있어서, CPU는 RAM(703)에 로딩된 처리하고자 하는 데이터 및 통신부를 통해 수신된 외부 처리 지령을 인공 지능 칩(704)에 전송하여 데이터 처리를 실행할 수 있다. CPU(701), ROM(702), RAM(703) 및 인공 지능 칩(704)은 버스(706)를 통해 서로 연결된다. 입력/출력(I/O) 포트(707)도 버스(706)에 연결된다.
특히는, 본 출원에 개시된 실시예에 의하면, 흐름도를 참조하여 설명한 상기 과정들은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있다. 예를 들어, 본출원에 개시된 실시예는 컴퓨터 프로그램 제품을 포함하고, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능한 매체에 적재된 컴퓨터 프로그램을 포함한다. 해당 컴퓨터 프로그램은 흐름도에 도시된 방법을 실행하기 위한 컴퓨터 코드를 포함한다. 이러한 실시예에 있어서, 해당 컴퓨터 프로그램은 선택 가능하게 통신부(708)를 경유하여 네트워크로부터 다운로드되어 설치될 수 있고 인공 지능 칩에 로딩될 수도 있다. 해당 컴퓨터 프로그램이 인공 지능 칩(704)에 의해 실행될 경우, 본 출원의 데이터 처리 장치 중의 입력 메모리, 데이터 수송 부재, 처리 부재 및 출력 메모리의 상술한 기능이 실행된다.
첨부된 도면 중의 흐름도 및 블록도는 본 출원의 각 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 구현 가능한 체계구조, 기능 및 조작을 도시하였음을 이해할 수 있을 것이다. 이러한 방면에서, 흐름도 또는 블록도 중의 각 블록은 하나의 모듈, 프로그램 세그먼트 또는 코드의 일부분을 대표할 수 있고, 해당 모듈, 프로그램 세그먼트 또는 코드의 일부분은 규정된 로직 기능을 구현하기 위한 하나 또는 다수의 실행 가능한 명령을 포함한다. 일부 대체 구현에 있어서, 블록에 표기된 기능들은 첨부된 도면에 표기된 순서와 다른 순서로 발생할 수도 있음을 유의하여야 한다. 예를 들어, 순차적으로 표시된 두 개의 블록은 실제로 거의 동시에 실행될 수 있고, 경우에 따라 반대된 순서에 따라 실행될 수도 있으며, 이는 관련된 기능에 따라 결정된다. 블록도 및/또는 흐름도 중의 각 블록 및 블록도 및/또는 흐름도 중의 블록들의 조합은 규정된 기능 또는 조작을 실행하는 하드웨어 기반의 전용 시스템으로 구현되거나, 전용 하드웨어와 컴퓨터 명령의 조합으로 구현될 수 있음을 유의하여야 한다.
이상의 설명은 단지 본 출원의 비교적 바람직한 실시예 및 운용한 기술적 원리에 대한 설명이다. 본 출원에 관련된 발명의 범위가 상기 기술적 특징들의 특정 조합으로 이루어진 기술적 방안들에 한정되는 것이 아니라 본 발명의 주지를 벗어나지 않고서 상기 기술적 특징들 또는 그들의 균등한 특징들의 임의의 조합으로 이루어진 기타 기술적 방안들도 포함되어야 함을 해당 기술분야의 당업자는 이해하여야 한다. 예를 들어, 상기 특징들과 본 출원에 개시되어 있으나 이에 한정되지 않는 유사한 기능을 구비한 기술적 특징을 서로 대체하여 이루어진 기술적 방안도 포함된다.

Claims (11)

  1. 처리하고자 하는 데이터를 저장하는 적어도 하나의 입력 메모리와,
    외부 처리 지령을 판독하고, 상기 처리 지령을 해석하여 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 획득하며, 상기 데이터 판독 주소에 따라 상기 입력 메모리에서 처리하고자 하는 데이터를 판독하고, 상기 조작 명령에 따라 상기 처리하고자 하는 데이터에 대해 처리를 진행하여, 다중 경로 처리된 출력 데이터 및 대응되는 데이터 기입 주소를 획득하고, 데이터 기입 요청을 발송하는 적어도 하나의 데이터 수송 부재와,
    적어도 하나의 데이터 수송 부재의 데이터 기입 요청이 수신됨에 대응하여, 상기 데이터 수송 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 수신된 출력 데이터 및 데이터 기입 주소로부터 그중 하나의 데이터 수송 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 게이팅하여 출력을 진행하며, 기입 인에이블 신호를 발송하는 적어도 하나의 다중 경로 중재 부재와,
    상기 다중 경로 중재 부재에서 발송된 기입 인에이블 신호가 수신됨에 대응하여, 상기 다중 경로 중재 부재에서 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 수신된 상기 출력 데이터를 대응되는 데이터 기입 주소에 기입하는 적어도 하나의 출력 메모리를 포함하되,
    상기 조작 명령은 데이터 수송 명령 및 데이터 전환 명령 중 적어도 하나를 포함하는
    데이터 처리 장치.
  2. 제1항에 있어서,
    상기 데이터 수송 부재는,
    판독된 처리 지령을 해석하고, 해석 조작을 실행하는 프런트 엔드 디코딩 부재 - 상기 해석 조작은 상기 처리 지령에서 데이터 판독 주소, 데이터 기입 주소 및 조작 명령을 추출하고, 상기 입력 메모리에 데이터 판독 요청을 발송하며, 상기 데이터 판독 요청이 수신됨에 대응하여 상기 입력 메모리가 발송한 처리하고자 하는 데이터를 데이터 대기열에 캐시하고, 추출된 상기 조작 명령을 명령 대기열에 캐시하는 조작을 포함함 - 와,
    각기 상기 명령 대기열의 조작 명령에 따라 상기 데이터 대기열 중의 처리하고자 하는 데이터에 대해 처리를 진행하여 일 경로의 출력 데이터를 획득하는 적어도 하나의 처리 부재를 포함하는 것을 특징으로 하는
    데이터 처리 장치.
  3. 제2항에 있어서,
    상기 프런트 엔드 디코딩 부재에 의해 실행되는 해석 조작은,
    상기 조작 명령이 상기 데이터 수송 명령 또는 상기 데이터 전환 명령인지를 확정하고, 상기 조작 명령이 데이터 수송 명령이면, 상기 프런트 엔드 디코딩 부재로 상기 입력 메모리에서 발송된 처리하고자 하는 데이터를 각 처리 부재에 브로드캐스팅하고, 상기 조작 명령이 데이터 전환 명령이면, 상기 프런트 엔드 디코딩 부재로 상기 입력 메모리에서 발송된 처리하고자 하는 데이터를 대응되는 적어도 하나의 처리 부재에 발송하는 것을 더 포함하되,
    각 처리 부재에는 대응되는 데이터 판독 주소 오프셋이 사전에 설정되는 것을 특징으로 하는
    데이터 처리 장치.
  4. 제3항에 있어서,
    상기 프런트 엔드 디코딩 부재는,
    상기 처리 지령을 해석한 이후, 판독된 상기 처리 지령이 단일 단계 실행 지령 또는 일괄 처리 지령인지를 판단하고,
    상기 처리 지령이 단일 단계 실행 지령이면, 상기 해석 조작을 실행하고,
    상기 처리 지령이 일괄 처리 지령이면, 상기 해석 조작을 기정의 횟수로 중복하여 실행하며, 해석 조작을 매번 실행한 이후 기정의 주소 오프셋 단계 크기에 따라 데이터 판독 주소 및 데이터 기입 주소를 조정하는 것을 특징으로 하는
    데이터 처리 장치.
  5. 제2항에 있어서,
    상기 처리 부재는,
    상기 데이터 대기열에서 처리하고자 하는 데이터를 판독하는 데이터 레지스터와,
    상기 명령 대기열에서 조작 명령을 판독하는 명령 레지스터와,
    상기 명령 레지스터의 명령에 따라 상태 제어를 진행하는 상태 머신과,
    상기 상태 머신의 제어에 따라 상기 데이터 레지스터에서 처리하고자 하는 데이터를 선택하여 출력을 진행하는 다중 경로 선택 장치를 포함하는 것을 특징으로 하는
    데이터 처리 장치.
  6. 제5항에 있어서,
    상기 상태 머신은,
    상기 명령 레지스터에서 상기 처리 지령으로부터 해석하여 획득한 데이터 기입 주소를 수신하고, 수신된 데이터 기입 주소 및 상기 처리 부재에 사전에 설정된 주소 입력 오프셋에 따라 출력 데이터의 데이터 기입 주소를 산출하고, 상기 다중 경로 중재 부재에 데이터 기입 요청 및 상기 출력 데이터의 데이터 기입 주소를 발송하도록 더 구성되는 것을 특징으로 하는
    데이터 처리 장치.
  7. 제5항에 있어서,
    상기 다중 경로 중재 부재는 적어도 하나의 중재 유닛을 포함하되,
    각 중재 유닛은 중재 장치 및 선택 장치를 포함하고,
    상기 중재 장치는 각 데이터 수송 부재 중의 하나의 처리 부재의 출력 데이터에 대해 중재를 진행하고, 중재 결과에 따라 상기 선택 장치를 제어하여 그중 하나의 처리 부재의 출력 데이터 및 대응되는 데이터 기입 주소를 선택하여 출력을 진행하며, 상기 출력 메모리에 기입 인에이블 신호를 발송하는 것을 특징으로 하는
    데이터 처리 장치.
  8. 제7항에 있어서,
    상기 출력 메모리는 상기 다중 경로 중재 부재에서 출력되는 기입 인에이블 신호, 출력 데이터 및 대응되는 데이터 기입 주소를 수신하고, 상기 기입 인에이블 신호의 제어 하에 상기 출력 데이터를 대응되는 데이터 기입 주소에 기입하는 것을 특징으로 하는
    데이터 처리 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 입력 메모리 및 상기 출력 메모리는 온 칩 메모리인 것을 특징으로 하는
    데이터 처리 장치.
  10. 제1항 내지 제8항 중 어느 한 항의 데이터 처리 장치를 포함하는 인공 지능 칩.
  11. 중앙 처리 유닛과,
    제10항의 인공 지능 칩을 포함하는 전자 장치.
KR1020190082973A 2018-08-10 2019-07-10 데이터 처리 장치, 인공 지능 칩 및 전자 장치 KR102247369B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20200018235A KR20200018235A (ko) 2020-02-19
KR102247369B1 true KR102247369B1 (ko) 2021-04-30

Family

ID=69405954

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190082973A KR102247369B1 (ko) 2018-08-10 2019-07-10 데이터 처리 장치, 인공 지능 칩 및 전자 장치

Country Status (4)

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

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7073581B2 (ja) 2019-04-04 2022-05-23 中科寒武紀科技股▲分▼有限公司 データ処理装置及び関連製品
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 腾讯科技(深圳)有限公司 基于存储器的数据交互方法、处理器、设备以及介质
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
WO2004079583A1 (ja) * 2003-03-05 2004-09-16 Fujitsu Limited データ転送制御装置および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
US10180803B2 (en) * 2015-07-28 2019-01-15 Futurewei Technologies, Inc. Intelligent memory architecture for increased efficiency
US9921754B2 (en) * 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
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
CN110825312A (zh) 2020-02-21
JP2020027612A (ja) 2020-02-20
US20200050557A1 (en) 2020-02-13
JP6833916B2 (ja) 2021-02-24
US11023391B2 (en) 2021-06-01
CN110825312B (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
KR102247369B1 (ko) 데이터 처리 장치, 인공 지능 칩 및 전자 장치
US11482278B2 (en) Method of performing internal processing operation of memory device
US10153042B2 (en) In-memory computational device with bit line processors
CN110326046B (zh) 用于在数据路径中计算的设备及方法
US20150067273A1 (en) Computation hardware with high-bandwidth memory interface
CN107766079B (zh) 处理器以及用于在处理器上执行指令的方法
US8145822B2 (en) Computer system for electronic data processing
KR20160118836A (ko) 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
US11410717B2 (en) Apparatuses and methods for in-memory operations
US10761851B2 (en) Memory apparatus and method for controlling the same
US11640444B2 (en) Device and method for accelerating matrix multiply operations
CN109891397A (zh) 用于固态装置中的操作系统高速缓冲存储器的设备及方法
JP7382678B2 (ja) コンピューティングメモリシステム
CN106933510B (zh) 一种存储控制器
US20080091924A1 (en) Vector processor and system for vector processing
US11783872B2 (en) Apparatuses and methods for performing operations using sense amplifiers and intermediary circuitry
US20200293452A1 (en) Memory device and method including circular instruction memory queue
US20170213581A1 (en) Processing unit, in-memory data processing apparatus and method
US11837315B2 (en) Transferring data between DRAM and SRAM
US9965193B2 (en) Apparatus, system, and method of sequencing, shadowing, and queuing operations in a non-volatile storage memory
US8374040B2 (en) Write bandwidth in a memory characterized by a variable write time
CN108268280B (zh) 半导体装置的处理器及其操作方法
JP4723334B2 (ja) Dma転送システム
KR950011289B1 (ko) 행렬 방향데이타 처리가 가능한 다중포트 동적램(Multiport D Ram)
CN116705114A (zh) 存储器的数据写入方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant