KR20200138411A - 네트워크 온칩 데이터 처리 방법 및 장치 - Google Patents
네트워크 온칩 데이터 처리 방법 및 장치 Download PDFInfo
- Publication number
- KR20200138411A KR20200138411A KR1020207034126A KR20207034126A KR20200138411A KR 20200138411 A KR20200138411 A KR 20200138411A KR 1020207034126 A KR1020207034126 A KR 1020207034126A KR 20207034126 A KR20207034126 A KR 20207034126A KR 20200138411 A KR20200138411 A KR 20200138411A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- calculation
- network
- chip
- processing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Multi Processors (AREA)
Abstract
본 출원은 네트워크 온칩 처리 시스템에 적용되는 네트워크 온칩 데이터 처리 방법에 관한 것이며, 상기 네트워크 온칩 처리 시스템은 기계 학습 계산을 수행하고, 저장 장치 및 계산 장치를 포함한다. 상기 방법은, 상기 네트워크 온칩 처리 시스템의 제1 계산 장치를 통해 상기 네트워크 온칩 처리 시스템의 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 단계; 상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계; 및 상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템의 제2 계산 장치로 송신하는 단계를 포함한다. 상기 방법은 연산 오버헤드를 줄이고, 데이터의 판독/기록 효율을 향상시킬 수 있다.
Description
관련 출원
본 출원은 2018년 10월 18일에 출원한 출원번호가 201811216718.9이며 발명의 명칭이 "네트워크 온칩 처리 시스템 및 네트워크 온칩 데이터 처리 방법"이고, 출원번호가 201811215820.7이며 발명의 명칭이 "네트워크 온칩 처리 시스템 및 네트워크 온칩 데이터 처리 방법"이고, 출원번호가 201811215978.4이며 발명의 명칭이 "네트워크 온칩 처리 시스템 및 네트워크 온칩 데이터 처리 방법"이고, 출원번호가 201811216857.1이며 발명의 명칭이 "네트워크 온칩 데이터 처리 방법, 저장 매체, 컴퓨터 설비 및 장치"이고, 2018년 11월 21일에 출원한 출원번호가 201811392232.0이며 발명의 명칭이 "데이터 처리 방법, 장치 및 관련 제품"이고, 출원번호가 201811392262.1이며 발명의 명칭이 "데이터 처리 방법, 장치 및 관련 제품"이고, 출원번호가 201811392279.7이며 발명의 명칭이 "데이터 처리 장치, 방법 및 관련 제품"이고, 출원번호가 201811393352.2이며 발명의 명칭이 "데이터 처리 장치, 방법 및 관련 제품"이고, 출원번호가 201811390409.3이며 발명의 명칭이 "데이터 처리 장치, 방법 및 관련 제품"이고, 출원번호가 201811390428.6이며 발명의 명칭이 "데이터 처리 장치 및 관련 제품"이고, 출원번호가 201811392270.6이며 발명의 명칭이 "데이터 처리 장치 및 관련 제품"의 중국 특허출원의 우선권을 주장하고 있으며 그 전체 내용을 참고로 인용하고 있다.
본 출원은 정보 처리 기술분야에 관한 것으로, 구체적으로 네트워크 온칩 데이터 처리 방법 및 장치에 관한 것이다.
반도체 공정 기술이 발전함에 따라 단일 칩 상에 수억 개의 트랜지스터를 집적시키는 것이 이미 현실화되었다. 네트워크 온칩(Network on Chip, NoC)은 단일 칩 상에 대량의 계산 자원을 집적시켜 온칩 통신을 구현할 수 있다.
신경망에서는 대량의 계산을 진행해야 하므로 일부 계산에 대해 정방향 연산, 역방향 연산, 가중치 업데이트 등 처리를 병행 수행해야 한다. 트랜지스터의 수가 많은 칩 구조에서 칩 설계는 메모리 액세스 오버헤드가 크고 대역폭의 막힘이 많고 데이터의 판독/기록 효율이 낮은 등 문제에 직면하게 될 것이다.
본 출원은 적어도 관련 기술에 존재하는 문제점을 어느 정도 해결하기 위해 상호 작용 방법, 장치 및 지능 단말을 제공한다.
제1 측면에 따르면, 본 출원은 네트워크 온칩 처리 시스템을 제공한다. 상기 시스템은 동일한 칩 위에 설치된 저장 장치 및 복수의 계산 장치를 포함하고, 적어도 하나 이상의 계산 장치는 상기 저장 장치에 연결되며 적어도 두개 이상의 계산 장치는 서로 연결되어 있다.
일 실시예에서, 상기 복수의 계산 장치 중 임의의 두 계산 장치는 직접적으로 연결되어 있다.
일 실시예에서, 상기 복수의 계산 장치는 제1 계산 장치 및 복수의 제2 계산 장치를 포함하고, 상기 제1 계산 장치는 상기 저장 장치에 연결되고, 상기 복수의 제2 계산 장치 중 적어도 하나 이상의 제2 계산 장치는 상기 제1 계산 장치에 연결된다.
일 실시예에서, 상기 복수의 제2 계산 장치 중 적어도 두개 이상의 제2 계산 장치는 서로 연결되되, 상기 제1 계산 장치를 통해 상기 저장 장치에 연결된다.
일 실시예에서, 상기 복수의 제2 계산 장치 중 임의의 두 제2 계산 장치는 상기 제1 계산 장치에 직접적으로 연결된다.
일 실시예에서, 상기 복수의 계산 장치 중 각각의 계산 장치는 모두 상기 저장 장치에 연결되고, 적어도 두개 이상의 계산 장치는 서로 연결된다.
제2 측면에 따르면, 본 출원의 실시예는 상기 네트워크 온칩 처리 시스템 내의 하나 또는 복수의 상기 계산 장치를 포함하는 신경망 연산 장치를 제공한다. 상기 신경망 연산 장치는 다른 처리 장치로부터 피연산 입력 데이터 및 제어 정보를 획득하고 지정된 기계 학습 연산을 수행하여 I/O 인터페이스를 통해 수행 결과를 다른 처리 장치로 전달한다.
상기 신경망 연산 장치가 복수의 상기 계산 장치를 포함할 때, 복수의 상기 계산 장치들은 특정한 구조를 통해 연결되어 데이터를 전송할 수 있다.
여기서, 복수의 상기 계산 장치는 PCI 버스를 통해 인터커넥트되어 데이터를 전송하므로 더욱 큰 규모의 기계 학습 연산을 지원하며, 복수의 상기 계산 장치는 하나의 제어 시스템을 공유하거나 혹은 각자의 제어 시스템을 구비하고, 복수의 상기 계산 장치는 메모리를 공유하거나 혹은 각자의 메모리를 구비하며, 복수의 상기 계산 장치의 인터커넥트 방식은 임의의 인터커넥트 토폴로지이다.
제3 측면에 따르면, 본 출원의 실시예는 제2 측면에 따른 기계 학습 처리 장치, 범용 인터케넥트 인터페이스 및 다른 처리 장치를 포함하는 통합 처리 장치를 제공한다. 상기 신경망 연산 장치와 상기 다른 처리 장치는 상호 작용하여 공동으로 사용자가 지정한 컴퓨팅 동작을 수행한다. 상기 통합 처리 장치는 상기 신경망 연산 장치 및 상기 다른 처리 장치에 각각 연결되어 상기 신경망 연산 장치 및 상기 다른 처리 장치의 데이터를 저장하는 저장 장치를 더 포함할 수 있다.
제4 측면에 따르면, 본 출원의 실시예는 상기 네트워크 온칩 처리 시스템의 계산 장치, 상기 제2 측면에 따른 신경망 연산 장치 또는 상기 제3 측면에 따른 통합 처리 장치를 포함하는 신경망 칩을 제공한다.
제5 측면에 따르면, 본 출원의 실시예는 상기 제4 측면에 따른 신경망 칩을 포함하는 신경망 칩 패키지 구조를 제공한다.
제6 측면에 따르면, 본 출원의 실시예는 제5 측면에 따른 신경망 칩 패키지 구조를 포함하는 보드 카드를 제공한다.
제7 측면에 따르면, 본 출원의 실시예는 상기 제4 측면에 따른 신경망 칩 또는 상기 제6 측면에 따른 보드 카드를 포함하는 전자장치를 제공한다.
제8 측면에 따르면, 본 출원의 실시예는 기계 학습 계산을 수행하는 네트워크 온칩 데이터 처리 방법을 더 제공한다.
상기 방법은,
제1 계산 장치를 통해 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 단계;
상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계; 및
상기 제1 연산 결과를 제2 계산 장치로 송신하는 단계를 포함한다.
일 실시예에서, 상기 방법은 상기 제2 계산 장치를 통해 상기 저장 장치에 액세스하여 제2 연산 데이터를 획득하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은 상기 제2 계산 장치를 통해 상기 제2 연산 데이터와 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는 단계를 더 포함한다.
네트워크 온칩 처리 시스템은, 동일한 칩 위에 설치된 저장 장치 및 복수의 계산 장치 그룹을 포함하고, 계산 장치 그룹마다 복수의 계산 장치를 포함하고, 상기 복수의 계산 장치 그룹 중 적어도 하나 이상의 계산 장치 그룹은 상기 저장 장치에 연결되며, 적어도 두개 이상의 계산 장치 그룹은 서로 연결되어 있다.
일 실시예에서, 상기 복수의 계산 장치 그룹 중 임의의 두 계산 장치 그룹은 직접적으로 연결되어 있다.
일 실시예에서, 각각의 상기 계산 장치 그룹은 다른 상기 계산 장치 그룹의 적어도 하나 이상의 계산 장치에 연결된 적어도 하나 이상의 계산 장치를 포함한다.
일 실시예에서, 상기 복수의 계산 장치 그룹은 상기 복수의 계산 장치 그룹 내의 임의의 한 계산 장치를 통해 서로 연결된다.
일 실시예에서, 각각의 상기 계산 장치 그룹 중 적어도 하나 이상의 계산 장치는 상기 저장 장치에 연결되고 적어도 두개 이상의 계산 장치는 서로 연결된다.
일 실시예에서, 각각의 상기 계산 장치 그룹 중 임의의 두 계산 장치는 직접적으로 연결된다.
일 실시예에서, 각각의 상기 계산 장치 그룹은 제1 계산 장치 및 복수의 제2 계산 장치를 포함하고, 상기 제1 계산 장치는 상기 저장 장치에 연결되고, 상기 복수의 제2 계산 장치 중 적어도 하나 이상의 제2 계산 장치는 상기 제1 계산 장치에 연결된다.
일 실시예에서, 각각의 상기 계산 장치 그룹에서 복수의 제2 계산 장치 중 적어도 두개 이상의 제2 계산 장치는 서로 연결되고, 상기 제1 계산 장치를 통해 상기 저장 장치에 연결된다.
일 실시예에서, 각각의 상기 계산 장치 그룹에서 복수의 제2 계산 장치 중 임의의 두 제2 계산 장치는 상기 제1 계산 장치에 직접적으로 연결된다.
일 실시예에서, 각각의 상기 계산 장치 그룹에서 복수의 계산 장치 중 각각의 계산 장치는 모두 상기 저장 장치에 연결되고, 적어도 두개 이상의 계산 장치는 서로 연결되어 있다.
일 실시예에서, 상기 복수의 계산 장치 그룹은 메인 계산 장치 그룹 및 복수의 서브 계산 장치 그룹을 포함하고, 상기 메인 계산 장치 그룹은 상기 저장 장치에 연결되고, 상기 복수의 서브 계산 장치 그룹 중 적어도 하나 이상의 서브 계산 장치 그룹은 상기 메인 계산 장치 그룹에 연결된다.
일 실시예에서, 상기 복수의 서브 계산 장치 그룹 중 적어도 두개 이상의 서브 계산 장치 그룹은, 서로 연결되고 상기 메인 계산 장치 그룹을 통해 상기 저장 장치에 연결된다.
일 실시예에서, 상기 복수의 서브 계산 장치 그룹 중 임의의 두 서브 계산 장치 그룹은 상기 메인 계산 장치 그룹에 직접적으로 연결된다.
일 실시예에서, 상기 복수의 계산 장치 그룹 중 각각의 계산 장치 그룹마다 모두 상기 저장 장치에 연결되고, 적어도 두개 이상의 계산 장치 그룹은 서로 연결된다.
본 출원의 실시예는 네트워크 온칩 데이터 처리 방법을 더 제공한다. 상기 방법은,
복수의 제1 계산 장치를 포함하는 제1 계산 장치 그룹을 통해 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 단계;
상기 제1 계산 장치 그룹이 상기 복수의 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계; 및
상기 제1 연산 결과를 제2 계산 장치 그룹으로 송신하는 단계를 포함한다.
일 실시예에서, 상기 방법은 복수의 제2 계산 장치를 포함하는 상기 제2 계산 장치 그룹을 통해 상기 저장 장치에 액세스하여 제2 연산 데이터를 획득하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은 상기 제2 계산 장치 그룹을 통해 상기 제2 연산 데이터와 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는 단계를 더 포함한다.
일 실시예에서, 상기 방법은 상기 제2 계산 장치 그룹을 통해 상기 제2 연산 데이터와 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는 단계를 더 포함하고, 상기 단계는,
상기 복수의 제2 계산 장치 사이에서 상기 제2 연산 데이터와 상기 제1 연산 결과를 연산하고 포워딩하여 상기 제2 연산 결과를 얻는 단계를 포함한다.
네트워크 온칩 처리 시스템은, 동일한 칩 위에 설치되고 서로 연결된 복수의 네트워크 온칩 처리 모듈을 포함하고, 각각의 네트워크 온칩 처리 모듈은 적어도 하나 이상의 저장 장치 및 복수의 계산 장치를 포함하고, 각각의 네트워크 온칩 처리 모듈에서 적어도 하나 이상의 계산 장치는 상기 네트워크 온칩 처리 모듈 내부의 적어도 하나 이상의 저장 장치에 연결되고, 상기 복수의 계산 장치 중 적어도 두개 이상의 계산 장치는 서로 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈 중 복수의 계산 장치는 제1 계산 장치 및 복수의 제2 계산 장치를 포함하고, 상기 제1 계산 장치는 상기 네트워크 온칩 처리 모듈 내부의 적어도 하나 이상의 저장 장치에 연결되고 상기 복수의 제2 계산 장치 중 적어도 하나 이상의 제2 계산 장치는 상기 제1 계산 장치에 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈 중 적어도 두개 이상의 제2 계산 장치는, 서로 연결되고 상기 제1 계산 장치를 통해 상기 네트워크 온칩 처리 모듈 내부의 적어도 하나 이상의 저장 장치에 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈 중 임의의 두 제2 계산 장치는 상기 제1 계산 장치에 직접적으로 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈 중 각 계산 장치는 모두 상기 네트워크 온칩 처리 모듈 내부의 적어도 하나 이상의 저장 장치에 연결되고, 적어도 두개 이상의 계산 장치는 서로 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈의 임의의 두 계산 장치는 직접적으로 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈은 복수의 저장 장치를 포함하고, 상기 네트워크 온칩 처리 모듈에서 적어도 하나 이상의 계산 장치는 상기 네트워크 온칩 처리 모듈 내부의 상기 복수의 저장 장치에 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈 중 각 계산 장치는 모두 상기 네트워크 온칩 처리 모듈 내부의 상기 복수의 저장 장치에 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈은 적어도 하나 이상의 계산 장치를 포함하여 다른 네트워크 온칩 처리 모듈의 적어도 하나 이상의 계산 장치에 연결된다.
일 실시예에서, 상기 복수의 네트워크 온칩 처리 모듈은 각각의 네트워크 온칩 처리 모듈의 임의의 한 계산 장치를 통해 서로 연결된다.
일 실시예에서, 각각의 네트워크 온칩 처리 모듈에서 각 계산 장치는 모두 저장 장치에 연결되고 각각의 상기 계산 장치와 상기 저장 장치 사이의 거리는 제1 통신 거리이다.
일 실시예에서, 임의의 두 네트워크 온칩 처리 모듈은 직접적으로 연결된다.
본 출원의 실시예는 네트워크 온칩 데이터 처리 방법을 더 제공한다. 상기 방법은,
제1 네트워크 온칩 처리 모듈을 통해 제1 연산 데이터를 획득하는 단계, -여기서, 상기 제1 네트워크 온칩 처리 모듈은 제1 저장 장치 및 복수의 제1 계산 장치를 포함하고 상기 제1 연산 데이터는 상기 제1 저장 장치에 저장됨-;
상기 제1 네트워크 온칩 처리 모듈 내의 복수의 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계; 및
상기 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신하는 단계를 포함한다.
일 실시예에서, 상기 방법은, 상기 제2 네트워크 온칩 처리 모듈을 통해 제2 연산 데이터를 획득하는 단계를 더 포함하고, 여기서, 상기 제2 네트워크 온칩 처리 모듈은 제2 저장 장치 및 복수의 제2 계산 장치를 포함하고, 상기 제2 연산 데이터는 상기 제2 저장 장치에 저장된다.
일 실시예에서, 상기 방법은 상기 제2 네트워크 온칩 처리 모듈 내의 복수의 제2 계산 장치를 통해 상기 제2 연산 데이터 및 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는 단계를 더 포함한다.
일 실시예에서, 상기 방법은,
상기 복수의 제2 계산 장치 사이에서 상기 제2 연산 데이터 및 상기 제1 연산 결과에 대해 연산하여 상기 제2 연산 결과를 얻는 단계; 및
상기 제2 연산 결과를 상기 제2 저장 장치에 저장하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은,
상기 제1 네트워크 온칩 처리 모듈 내의 제1 메인 계산 장치를 통해 상기 제1 저장 장치에 액세스하여 상기 제1 연산 데이터를 획득하는 단계;
상기 제1 네트워크 온칩 처리 모듈 내의 제1 메인 계산 장치와 복수의 제1 서브 계산 장치 사이에서 상기 제1 연산 데이터를 포워딩하는 단계; 및
상기 제1 네트워크 온칩 처리 모듈 내의 제1 메인 계산 장치와 복수의 제1 서브 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 상기 제1 연산 결과를 얻는 단계를 더 포함하고,
여기서, 상기 제1 계산 장치는 제1 메인 계산 장치 및 복수의 제1 서브 계산 장치를 포함한다.
저장 장치 및 계산 장치를 포함하고 기계 학습 계산을 수행하는 네트워크 온칩 처리 시스템에 적용되는 네트워크 온칩 데이터 처리 방법으로서,
상기 방법은,
상기 네트워크 온칩 처리 시스템 내의 제1 계산 장치를 통해 상기 네트워크 온칩 처리 시스템 내의 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 단계;
상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계; 및
상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치로 송신하는 단계를 포함한다.
일 실시예에서, 상기 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고
상기 네트워크 온칩 처리 시스템의 제1 계산 장치를 통해 상기 네트워크 온칩 처리 시스템의 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 단계는,
상기 제1 계산 장치의 컨트롤러 유닛이 상기 저장 장치로부터 상기 제1 연산 데이터 및 계산 명령을 획득하는 단계를 포함한다.
일 실시예에서, 상기 연산 유닛은 하나의 마스트(master) 처리회로 및 복수의 슬레이브(slave) 처리회로를 포함한다.
상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계는,
상기 제1 계산 장치 내의 컨트롤러 유닛을 통해 상기 계산 명령을 분석하여 복수의 연산 명령을 얻으며, 상기 제1 계산 장치 내의 컨트롤러 유닛이 상기 복수의 연산 명령 및 상기 제1 연산 데이터를 상기 제1 계산 장치의 마스트 처리회로로 송신하는 단계;
상기 제1 계산 장치 내의 마스트 처리회로를 통해 상기 제1 연산 데이터에 대해 프리오더 처리를 수행하고, 상기 제1 계산 장치 중 복수의 슬레이브 처리회로와 데이터 및 연산 명령을 전송하는 단계;
상기 제1 계산 장치 중 복수의 슬레이브 처리회로가 상기 제1 계산 장치 내의 마스트 처리회로에서 전송된 연산 데이터 및 연산 명령에 의해 중간 연산을 수행하여 복수의 중간 결과를 얻고 상기 복수의 중간 결과를 상기 제1 계산 장치의 마스트 처리회로로 전송하는 단계; 및
상기 제1 계산 장치의 마스트 처리회로가 상기 복수의 중간 결과에 대해 후속 처리를 수행하여 상기 계산 명령의 제1 연산 결과를 얻는 단계를 포함한다.
일 실시예에서, 상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치로 송신하는 단계는,
상기 제1 계산 장치의 컨트롤러 유닛이 상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치로 송신하는 단계를 포함한다.
일 실시예에서, 상기 기계 학습 계산은 인공 신경망 연산을 포함하고, 상기 제1 연산 데이터는 입력 뉴런 데이터 및 가중치를 포함하고, 상기 제1 연산 결과는 출력 뉴런 데이터이다.
일 실시예에서, 상기 계산 장치는 저장 유닛 및 직접 메모리 액세스 유닛을 더 포함하고, 상기 저장 유닛은 레지스터, 캐시 중 임의의 조합을 포함하며,
상기 캐시는 상기 제1 연산 데이터를 저장하고,
상기 레지스터는 상기 제1 연산 데이터 중의 스칼라를 저장한다.
일 실시예에서, 상기 컨트롤러 유닛은 명령 저장 유닛, 명령 처리 유닛 및 저장 큐 유닛을 포함하고,
상기 명령 저장 유닛은 상기 인공 신경망과 관련있는 계산 명령을 저장하며,
상기 명령 처리 유닛은 상기 계산 명령을 분석하여 복수의 연산 명령을 얻으며,
상기 저장 큐 유닛은 명령 큐를 포함하고, 상기 명령 큐는 상기 명령 큐의 선후 순서에 따라 수행하고자 하는 복수의 연산 명령 및/또는 계산 명령을 포함한다.
일 실시예에서, 상기 마스트 처리회로는 의존 관계 처리 유닛을 포함하고,
상기 의존 관계 처리 유닛은 제1 연산 명령과 상기 제1 연산 명령 이전의 제0 연산 명령 사이에 연관 관계가 있는지 여부를 확정하며, 상기 제1 연산 명령과 상기 제0 연산 명령 사이에 연관 관계가 있으면 상기 제1 연산 명령을 상기 명령 저장 유닛 내에 캐싱하고, 상기 제0 연산 명령을 수행한 후 상기 명령 저장 유닛으로부터 상기 제1 연산 명령을 추출하여 상기 연산 유닛으로 전송하며;
상기 제1 연산 명령과 제1 연산 명령 이전의 제0 연산 명령 사이에 연관 관계가 있는지 여부를 확정하는 단계는,
상기 제1 연산 명령에 의해 상기 제1 연산 명령에 필요한 데이터의 제1 저장 주소 구간을 추출하고, 상기 제0 연산 명령에 의해 상기 제0 연산 명령에 필요한 데이터의 제0 저장 주소 구간을 추출하되, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하면, 상기 제1 연산 명령과 상기 제0 연산 명령 사이에 연관 관계가 있다고 판단하고, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하지 않으면, 상기 제1 연산 명령과 상기 제0 연산 명령 사이에 연관 관계가 없다고 확정하는 단계를 포함한다.
일 실시예에서, 상기 연산 유닛은 트리 모듈을 포함하고, 상기 트리 모듈은 하나의 루트 포트 및 복수의 브랜치 포트를 포함하고, 상기 트리 모듈의 루트 포트는 상기 마스트 처리회로에 연결되고, 상기 트리 모듈의 복수의 브랜치 포트는 복수의 슬레이브 처리회로 중 하나의 슬레이브 처리회로에 각각 연결되며,
상기 트리 모듈은 상기 마스트 처리회로와 상기 복수의 슬레이브 처리회로 사이의 데이터 블록, 가중치 및 연산 명령을 포워딩한다.
일 실시예에서, 상기 연산 유닛은 하나 또는 복수의 분기 처리회로를 포함하고, 각각의 분기 처리회로는 적어도 하나 이상의 슬레이브 처리회로에 연결되며,
상기 마스트 처리회로는 상기 입력 뉴런을 브로드캐스트 데이터로, 가중치를 배부 데이터로 확정하고, 배부 데이터를 복수의 데이터 블록으로 배분하고, 상기 복수의 데이터 블록 중 적어도 하나 이상의 데이터 블록, 브로드캐스트 데이터 및 복수의 연산 명령 중 적어도 하나 이상의 연산 명령을 상기 분기 처리회로로 송신하고,
상기 분기 처리회로는 상기 마스트 처리회로와 상기 복수의 슬레이브 처리회로 사이의 데이터 블록, 브로드캐스트 데이터 및 연산 명령을 포워딩하고,
상기 복수의 슬레이브 처리회로는 상기 연산 명령에 의해 수신된 데이터 블록 및 브로드캐스트 데이터에 대해 연산하여 중간 결과를 얻고 상기 중간 결과를 상기 분기 처리회로에 전송하며,
상기 마스트 처리회로는 분기 처리회로에서 송신된 중간 결과에 대해 후속 처리하여 상기 계산 명령의 제1 연산 결과를 얻고, 상기 계산 명령의 제1 연산 결과를 상기 컨트롤러 유닛으로 송신한다.
일 실시예에서, 상기 복수의 슬레이브 처리회로는 어레이 분포를 이루고, 각각의 슬레이브 처리회로는 인접되어 있는 다른 슬레이브 처리회로에 연결되며, 상기 마스트 처리회로는 상기 복수의 슬레이브 처리회로 중의 K개 슬레이브 처리회로에 연결되고, 상기 K개 기초 회로는 제1 행의 n개 슬레이브 처리회로, 제m 행의 n개 슬레이브 처리회로 및 제1 열의 m개 슬레이브 처리회로며,
상기 K개 슬레이브 처리회로는 상기 마스트 처리회로 및 복수의 슬레이브 처리회로 사이에서 데이터 및 명령을 포워딩하며,
상기 마스트 처리회로는 상기 입력 뉴런을 브로드캐스트 데이터로, 가중치를 배부 데이터로 확정하고, 배부 데이터를 복수의 데이터 블록으로 배분하며 상기 복수의 데이터 블록 중 적어도 하나 이상의 데이터 블록 및 복수의 연산 명령 중 적어도 하나 이상의 연산 명령을 상기 K개 슬레이브 처리회로로 송신하며,
상기 K개 슬레이브 처리회로는 상기 마스트 처리회로와 상기 복수의 슬레이브 처리회로 사이에서 데이터를 포워딩하며,
상기 복수의 슬레이브 처리회로는 상기 연산 명령에 따라 수신된 데이터 블록에 대해 연산하여 중간 결과를 얻고, 연산 결과를 상기 K개 슬레이브 처리회로로 전송하며,
상기 마스트 처리회로는 상기 K개 슬레이브 처리회로가 송신한 중간 결과에 대해 후속 처리하여 상기 계산 명령의 제1 연산 결과를 얻고, 상기 계산 명령의 제1 연산 결과를 상기 컨트롤러 유닛으로 송신한다.
일 실시예에서, 상기 마스트 처리회로는, 복수의 처리회로에서 송신된 중간 결과를 조합하고 정렬하여 상기 계산 명령의 제1 연산 결과를 얻거나, 혹은
복수의 처리회로에서 송신된 중간 결과에 대해 조합하고 정렬할 뿐만 아니라 활성화 처리를 거쳐 상기 계산 명령의 제1 연산 결과를 얻는다.
일 실시예에서, 상기 마스트 처리회로는 변환 처리회로, 활성화 처리회로, 덧셈 처리회로 중 하나 또는 임의의 조합을 포함하고,
상기 변환 처리회로는 상기 제1 연산 데이터에 대해 프리오더 처리를 진행하되, 구체적으로 마스트 처리회로가 수신한 데이터 또는 중간 결과에 대해 제1 데이터구조와 제2 데이터구조 사이의 호환을 진행하거나, 혹은 마스트 처리회로가 수신한 데이터 또는 중간 결과에 대해 제1 데이터 유형과 제2 데이터 유형 사이의 호환을 수행하며,
상기 활성화 처리회로는 상기 후속 처리를 수행하되, 구체적으로 마스트 처리회로 내의 데이터의 활성화 연산을 수행하고,
상기 덧셈 처리회로는 상기 후속 처리를 수행하되, 구체적으로 덧셈 연산 또는 누적 연산을 수행한다.
일 실시예에서, 상기 슬레이브 처리회로는 곱셈 처리회로를 포함하고
상기 곱셈 처리회로는 수신된 데이터 블록에 대해 곱셈 연산을 수행하여 곱셈 결과를 얻는다.
일 실시예에서, 상기 슬레이브 처리회로는 누적 처리회로를 포함하며, 상기 누적 처리회로는 상기 곱셈 결과에 대해 누적 연산을 수행하여 상기 중간 결과를 얻는다.
일 실시예에서, 상기 트리 모듈은 n 진수 트리 구조이며, 상기 n은 2보다 크거나 같은 정수이다.
일 실시예에서, 상기 방법은, 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치를 통해 상기 네트워크 온칩 처리 시스템 내의 저장 장치에 액세스하여 제2 연산 데이터를 획득하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치를 통해 상기 제2 연산 데이터와 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는 단계를 더 포함한다.
본 출원의 실시예는 기계 학습 계산을 수행하는 네트워크 온칩 데이터 처리 장치를 제공한다. 상기 장치는,
상기 네트워크 온칩 처리 시스템 내의 제1 계산 장치를 통해 상기 네트워크 온칩 처리 시스템 내의 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 제1 연산 데이터 획득 모듈;
상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 연산 모듈; 및
상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치에 송신하는 제1 연산 결과 송신 모듈을 포함한다.
본 출원은 데이터 처리 방법을 제공한다. 상기 방법은,
내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 단계, -여기서, 상기 데이터 동작 신호는 동작 도메인 및 동작 코드를 포함하고, 상기 동작 코드는 제1 유형 플래그 비트를 포함하며, 상기 동작 도메인은 제2 유형 플래그 비트를 포함하고, 상기 제1 유형 플래그 비트는 상기 데이터 동작 신호가 I/O 명령인지 여부를 나타내며, 상기 제2 유형 플래그 비트는 상기 데이터 동작 신호가 상기 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령인지 여부를 나타냄; 및
상기 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는 단계를 포함한다.
일 실시예에서, 상기 동작 도메인은 데이터 수신 플래그 비트를 더 포함하고, 상기 데이터 수신 플래그 비트는 상기 입력 데이터를 수신하는 장치 또는 처리회로를 나타낸다.
일 실시예에서, 상기 데이터 수신 플래그 비트의 개수는 상기 메모리와 상호 작용가능한 장치의 개수 또는 처리회로의 개수를 나타낼 수 있다.
상기 동작 도메인은 동작 예정 데이터의 정보를 더 포함하고, 상기 동작 예정 데이터의 정보는 상기 동작 예정 데이터가 상기 메모리 내의 소스 주소, 동작 예정 데이터 길이, 및 데이터 동작시킨 후의 데이터 리턴 주소를 포함하고, 상기 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는 단계는,
상기 소스 주소로부터 상기 메모리 판독을 시작하여 상기 데이터 길이를 만족하는 입력 데이터를 획득하는 단계;
상기 데이터 수신 플래그 비트에 의해 입력 데이터를 수신하는 장치 또는 처리회로를 확정하는 단계; 및
상기 데이터 리턴 주소에 의해 상기 입력 데이터를 상기 장치 또는 처리회로 내의 상기 데이터 리턴 주소와 대응하는 저장 공간으로 리턴하는 단계를 포함한다.
일 실시예에서, 상기 동작 도메인은 점프 서브 동작 도메인을 더 포함하고, 상기 점프 서브 동작 도메인은 점프 폭 및 매번 점프한 뒤 동작하는 점프 데이터 길이를 포함하며, 상기 소스 주소로부터 상기 메모리를 판독하기 시작하여 상기 데이터 길이를 만족하는 입력 데이터를 획득하는 단계는,
상기 소스 주소로부터 상기 메모리를 판독하되, 현재 점프한 후의 점프 데이터 길이에 의해 제1 점프 데이터를 획득하는 단계;
상기 점프 데이터의 마지막 주소를 획득하고 상기 점프 폭에 따라 상기 마지막 주소로부터 목표 점프 주소로 점프하는 단계;
매번 점프한 후 얻은 점프 데이터의 길이가 상기 데이터 길이를 만족할 때까지 상기 목표 점프 주소로부터 점프한 후의 점프 데이터 길이에 의해 제2 점프 데이터를 획득하는 단계를 포함한다.
일 실시예에서, 상기 점프 서브 동작 도메인은 stride 동작 도메인 및/또는 segment 동작 도메인을 포함하고, 상기 stride 동작 도메인은 상기 데이터 동작 신호의 매번 점프 폭을 나타내며, 상기 segment 동작 도메인은 사전에 설정된 상기 데이터 동작 신호의 매번 분할 크기를 나타낸다.
일 실시예에서, 상기 동작 도메인은 판독된 데이터에 대해 수행하는 처리작업을 나타낸다.
일 실시예에서, 상기 방법은,
상기 제1 유형 플래그 비트의 값이 I/O이면, 상기 데이터 동작 신호를 I/O 명령으로 확정하는 단계; 및
상기 제2 유형 플래그 비트의 값이 1이면, 상기 데이터 동작 신호를 상기 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령으로 확정하는 단계를 더 포함한다.
일 실시예에서, 상기 내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 단계는,
상기 데이터 동작 신호를 분석하여 상기 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 얻는 단계;
상기 데이터 동작 신호의 수행 순서를 나타내는 명령 큐에 따라 상기 분석된 데이터 동작 신호를 수행하는 단계를 더 포함한다.
일 실시예에서, 상기 명령 큐에 의해 상기 분석된 데이터 동작 신호를 수행하기 전에, 상기 방법은,
인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하여 판단 결과를 얻는 단계, -상기 의존 관계는 제s번째 데이터 동작 신호와 상기 제s번째 데이터 동작 신호 이전의 제s-1번째 데이터 동작 신호가 연관 관계가 있는지 여부를 나타냄-; 및
상기 판단 결과가 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호 사이에 의존 관계가 있는 것이면, 상기 제s번째 데이터 동작 신호를 캐싱하고, 상기 제s-1번째 데이터 동작 신호를 수행한 후 상기 제s번째 데이터 동작 신호를 추출하는 단계를 더 포함한다.
일 실시예에서, 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하는 상기 단계는,
상기 제s번째 데이터 동작 신호에 의해 상기 제s번째 데이터 동작 신호에 필요한 데이터를 추출하는 제1 저장 주소 구간; 및 상기 제s-1번째 데이터 동작 신호에 의해 상기 제s-1번째 데이터 동작 신호에 필요한 데이터를 추출하는 제0 저장 주소 구간을 각각 획득하는 단계;
상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하면, 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 의존 관계가 있다고 확정하는 단계; 및
상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하지 않으면, 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 의존 관계가 없다고 확정하는 단계를 포함한다.
본 출원의 실시예는 프로세서 및 메모리를 포함하는 데이터 처리 장치를 제공한다. 상기 메모리에 컴퓨터 프로그램이 저장되어 있고, 상기 프로세서는 상기 컴퓨터 프로그램을 실행할 때,
내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 단계, -여기서, 상기 데이터 동작 신호는 동작 도메인 및 동작 코드를 포함하고, 상기 동작 코드는 제1 유형 플래그 비트를 포함하며, 상기 동작 도메인은 제2 유형 플래그 비트를 포함하고, 상기 제1 유형 플래그 비트는 상기 데이터 동작 신호가 I/O 명령인지 여부를 나타내며, 상기 제2 유형 플래그 비트는 상기 데이터 동작 신호가 상기 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령인지 여부를 나타냄; 및
상기 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는 단계;를 구현한다.
본 출원은 데이터 처리 방법을 제공한다. 상기 방법은,
내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 단계, -상기 데이터 동작 신호는 상기 유형 플래그 비트를 포함하는 데이터 동작 코드를 포함하고, 상기 유형 플래그 비트는 상기 동작 신호의 브로드캐스트 또는 멀티캐스트 명령을 나타냄-; 및
상기 데이터 동작 신호에 의해 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는 단계를 포함한다.
본 출원의 실시예는 프로세서 및 메모리를 포함하는 데이터 처리 장치를 제공한다. 상기 메모리에 컴퓨터 프로그램이 저장되어 있고, 상기 프로세서는 상기 컴퓨터 프로그램을 실행할 때,
내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 단계, -상기 데이터 동작 신호는 상기 유형 플래그 비트를 포함하는 데이터 동작 코드를 포함하고, 상기 유형 플래그 비트는 상기 동작 신호의 브로드캐스트 또는 멀티캐스트 명령을 나타냄-; 및
상기 데이터 동작 신호에 의해 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는 단계를 구현한다.
일 실시예에서, 상기 데이터 동작 신호는 동작 도메인을 더 포함하고, 상기 동작 도메인은 데이터 수신 플래그 비트를 포함하고, 상기 데이터 수신 플래그 비트는 상기 입력 데이터를 수신하는 장치 또는 처리회로를 나타낸다.
일 실시예에서, 상기 데이터 수신 플래그 비트의 개수는 상기 메모리와 상호 작용가능한 장치의 개수 또는 처리회로의 개수를 나타낼 수 있다.
일 실시예에서, 상기 방법은,
상기 유형 플래그 비트의 값이 CAST이면, 상기 데이터 동작 신호를 브로드캐스트 또는 멀티캐스트 명령으로 확정하는 단계를 더 포함한다.
일 실시예에서, 상기 내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 단계는,
상기 데이터 동작 신호를 분석하여 상기 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 얻는 단계;
상기 데이터 동작 신호의 수행 순서를 나타내는 명령 큐에 따라 상기 분석된 데이터 동작 신호를 수행하는 단계를 더 포함한다.
기계 학습 데이터를 처리하는 데이터 처리 장치에 있어서, 상기 데이터 처리 장치는 기계 학습 장치, 전송 회로 및 공유 메모리를 포함하고, 상기 기계 학습 장치는 상기 전송 회로에 연결되고, 상기 전송 회로는 상기 공유 메모리에 연결되며,
상기 전송 회로는 상기 기계 학습 장치에서 발송된 데이터 동작 신호에 의해 상기 공유 메모리로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고 상기 입력 데이터를 상기 기계 학습 장치로 리턴하며, 상기 데이터 동작 신호는 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 포함한다.
일 실시예에서, 상기 기계 학습 장치는 상기 입력 데이터에 의해 기계 학습 연산을 수행하여 출력 데이터를 얻는다.
일 실시예에서, 상기 기계 학습 장치는 추가로 상기 전송 회로를 통해 상기 출력 데이터를 상기 공유 메모리로 전송하여 데이터를 저장한다.
일 실시예에서, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고,
상기 데이터 동작 신호는 데이터 수신 플래그 비트를 포함하고, 상기 데이터 수신 플래그 비트는 상기 입력 데이터를 수신한 목표 기계 학습 유닛을 나타낸다.
일 실시예에서, 상기 데이터 동작 신호의 유형 플래그 비트의 값은 CAST를 포함하고, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다.
일 실시예에서, 상기 데이터 동작 신호의 유형 플래그 비트는 제1 유형 플래그 비트 및 제2 유형 플래그 비트를 포함한다.
여기서, 상기 제1 유형 플래그 비트의 값은 I/O를 포함하고, 상기 데이터 동작 신호가 I/O 명령인지 여부를 나타낸다.
상기 제2 유형 플래그 비트는 상기 데이터 동작 신호가 상기 I/O 명령의 브로드캐스트 또는 멀티캐스트 명령인지 여부를 나타낸다.
일 실시예에서, 상기 동작 예정 데이터의 정보는 상기 동작 예정 데이터가 상기 공유 메모리 내의 소스 주소, 동작 예정 데이터 길이 및 데이터 동작시킨 후의 데이터 리턴 주소 중 적어도 하나를 포함한다.
일 실시예에서, 상기 데이터 동작 신호는 점프 정보를 더 포함하고, 상기 점프 정보는 점프 폭 및 매번 점프한 후 동작하는 데이터 길이를 포함한다.
일 실시예에서, 상기 점프 정보는 stride점프 정보 및/또는 segment점프 정보를 포함하고,
상기 stride점프 정보는 상기 데이터 동작 신호의 매번 점프 폭을 나타내며,
상기 segment 동작 도메인은 사전에 설정된 상기 데이터 동작 신호의 매번 분할 크기를 나타낸다.
일 실시예에서, 상기 데이터 동작 신호는, 판독된 데이터에 대해 수행하는 처리작업을 나타내는 기능 플래그 비트를 더 포함한다.
본 출원의 실시예는 상기 데이터 처리 장치에 적용되는 데이터 처리 방법을 더 제공한다. 상기 방법은,
상기 데이터 처리 장치의 전송 회로가 상기 데이터 처리 장치의 기계 학습 장치에서 송신된 데이터 동작 신호를 수신하는 단계, -상기 데이터 동작 신호는 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 포함함-;
상기 전송 회로가 상기 데이터 동작 신호의 유형 플래그 비트에 의해 공유 메모리 내의 데이터에 대해 수행하는 동작을 확정하고, 상기 동작 예정 데이터의 정보에 따라 상기 동작 예정 데이터에 대해 상기 동작을 수행하여 상기 기계 학습 장치에 필요한 입력 데이터를 얻고, 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 단계; 및
상기 기계 학습 장치가 상기 입력 데이터에 의해 기계 학습 연산을 수행하여 출력 데이터를 얻고, 상기 출력 데이터를 새로운 입력 데이터로 하되, 상기 전송 회로를 통해 공유 메모리에 전송하여 저장하는 단계를 포함한다.
일 실시예에서, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 상기 데이터 동작 신호는 데이터 수신 플래그 비트를 포함하며, 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 단계는,
상기 전송 회로가 상기 데이터 수신 플래그 비트의 값에 의해 상기 입력 데이터를 수신하는 목표 기계 학습 유닛을 확정하고, 상기 입력 데이터를 상기 목표 기계 학습 유닛으로 발송한다.
일 실시예에서, 상기 동작 예정 데이터의 정보는 상기 동작 예정 데이터가 상기 메모리 내의 소스 주소, 동작 예정 데이터 길이, 및 데이터 동작시킨 후의 데이터 리턴 주소를 포함하고, 상기 동작 예정 데이터의 정보에 의해 상기 동작 예정 데이터에 대해 상기 동작을 수행하여 상기 기계 학습 장치에 필요한 입력 데이터를 얻고 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 단계는,
상기 전송 회로가 상기 소스 주소로부터 상기 공유 메모리를 판독하기 시작하여 상기 데이터 길이를 만족하는 상기 입력 데이터를 획득하는 단계;
상기 전송 회로가 상기 데이터 리턴 주소 및 상기 데이터 수신 플래그 비트에 의해 상기 입력 데이터를 상기 목표 기계 학습 유닛으로 리턴하는 단계를 포함한다.
본 출원은 데이터 처리 장치를 제공한다. 상기 데이터 처리 장치는, 기계 학습 장치, 전송 회로 및 공유 메모리를 포함하고, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 상기 기계 학습 유닛이 수행한 유니캐스트 판독 동작과 브로드캐스트 동작은 하나의 데이터 수신 인터페이스를 공유하며, 상기 기계 학습 유닛은 송신 인터페이스 및 공유 데이터 수신 인터페이스를 통해 상기 전송 회로에 연결되며, 상기 전송 회로는 상기 공유 메모리에 연결되고,
상기 전송 회로는 상기 기계 학습 장치가 상기 송신 인터페이스를 통해 발송한 데이터 동작 신호에 의해 상기 공유 메모리로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고, 상기 공유 데이터 수신 인터페이스를 통해 상기 입력 데이터를 상기 기계 학습 장치로 리턴한다.
일 실시예에서, 상기 기계 학습 장치는 상기 입력 데이터에 의해 기계 학습 연산을 수행하여 출력 데이터를 얻는다.
일 실시예에서, 상기 기계 학습 장치는 추가로 상기 전송 회로를 통해 상기 출력 데이터를 상기 공유 메모리로 전송하여 저장한다.
일 실시예에서, 상기 송신 인터페이스는 유니캐스트 판독 신호 송신 인터페이스 및 브로드캐스트 신호 송신 인터페이스를 포함하고, 상기 기계 학습 유닛은 상기 유니캐스트 판독 신호 송신 인터페이스와 상기 공유 데이터 수신 인터페이스가 상기 전송 회로에 각각 연결되는 것에 의해 유니캐스트 판독 동작을 구현하고 상기 브로드캐스트 신호 송신 인터페이스와 상기 공유 데이터 수신 인터페이스가 상기 전송 회로에 각각 연결되는 것에 의해 브로드캐스트 동작을 구현한다.
일 실시예에서, 상기 전송 회로는 제2 전송 인터페이스, 상기 제2 전송 인터페이스에 연결된 판독/기록 처리회로, 및 상기 판독/기록 처리회로에 연결된 중재 회로를 포함하고,
상기 판독/기록 처리회로는 상기 적어도 하나 이상의 기계 학습 유닛이 상기 송신 인터페이스 및 상기 제2 전송 인터페이스를 통해 송신한 데이터 동작 신호를 수신하고, 상기 데이터 동작 신호를 상기 중재 회로에 전송하고 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 상기 제2 전송 인터페이스 및 상기 공유 데이터 수신 인터페이스를 통해 상기 데이터 동작 신호에 대응하는 기계 학습 유닛으로 리턴하며,
상기 중재 회로는, 사전에 설정된 중재 규칙에 따라 상기 판독/기록 처리회로로부터 수신된 데이터 동작 신호를 중재하고 중재 성공한 데이터 동작 신호에 의해 상기 공유 메모리 내의 데이터를 동작시킨다.
일 실시예에서, 상기 판독/기록 처리회로는 유니캐스트 판독 처리회로, 브로드캐스트 처리회로를 포함하고, 상기 유니캐스트 판독 처리회로는 유니캐스트 판독 신호를 처리하며, 상기 브로드캐스트 처리회로는 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리한다.
일 실시예에서, 상기 제2 전송 인터페이스는 상기 유니캐스트 판독 처리회로에 연결된 적어도 한 그룹 이상의 유니캐스트 판독 신호 수신 인터페이스 및 유니캐스트 판독 데이터 송신 인터페이스, 상기 브로드캐스트 처리회로에 연결된 적어도 한 그룹 이상의 브로드캐스트 신호 수신 인터페이스 및 브로드캐스트 데이터 송신 인터페이스를 포함하고, 상기 유니캐스트 판독 신호 수신 인터페이스는 상기 기계 학습 유닛의 유니캐스트 판독 신호 송신 인터페이스에 연결되고, 상기 브로드캐스트 신호 수신 인터페이스는 상기 기계 학습 유닛의 브로드캐스트 신호 송신 인터페이스에 연결되며, 상기 전송 회로의 상기 유니캐스트 판독 데이터 송신 인터페이스와 상기 브로드캐스트 데이터 송신 인터페이스는 상기 기계 학습 유닛의 공유 데이터 수신 인터페이스에 각각 연결된다.
일 실시예에서, 상기 판독/기록 처리회로는 브로드캐스트 처리회로 및 복수의 유니캐스트 판독 처리회로를 포함하고, 상기 복수의 유니캐스트 판독 처리회로와 상기 복수의 기계 학습 유닛은 일대일로 연결되며, 상기 브로드캐스트 처리회로와 상기 복수의 기계 학습 유닛은 일대다로 연결된다.
일 실시예에서, 상기 제2 전송 인터페이스는 상기 브로드캐스트 처리회로에 연결된 한 그룹의 브로드캐스트 인터페이스를 포함하고, 상기 브로드캐스트 인터페이스는 브로드캐스트 신호 수신 인터페이스 및 브로드캐스트 데이터 송신 인터페이스를 포함하고, 상기 복수의 기계 학습 유닛은 상기 한 그룹의 브로드캐스트 인터페이스를 통해 상기 브로드캐스트 처리회로에 연결된다.
일 실시예에서, 상기 제2 전송 인터페이스는, 상기 복수의 유니캐스트 판독 처리회로와 일대일로 연결된 복수 그룹의 유니캐스트 판독 신호 수신 인터페이스와 공유 데이터 송신 인터페이스, 상기 브로드캐스트 처리회로에 연결된 브로드캐스트 신호 수신 인터페이스를 포함하고, 상기 공유 데이터 송신 인터페이스는 또한 상기 브로드캐스트 처리회로에 연결되며, 상기 유니캐스트 판독 신호 수신 인터페이스는 상기 기계 학습 유닛의 유니캐스트 판독 신호 송신 인터페이스에 연결되며 상기 브로드캐스트 신호 수신 인터페이스는 상기 기계 학습 유닛의 브로드캐스트 신호 송신 인터페이스에 연결되고, 상기 공유 데이터 송신 인터페이스는 상기 기계 학습 유닛의 공유 데이터 수신 인터페이스에 연결된다.
본 출원의 실시예는 데이터 처리 장치에 적용되는 데이터 처리 방법을 더 제공한다. 상기 데이터 처리 장치는 기계 학습 장치, 전송 회로 및 공유 메모리를 포함하고, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 상기 기계 학습 유닛이 수행하는 유니캐스트 판독 동작과 브로드캐스트 동작은 하나의 데이터 수신 인터페이스를 공유하고, 상기 기계 학습 유닛은 송신 인터페이스와 공유 데이터 수신 인터페이스를 통해 상기 전송 회로에 연결되며, 상기 전송 회로는 상기 공유 메모리에 연결되고, 상기 데이터 처리 방법은,
상기 기계 학습 장치가 상기 송신 인터페이스를 통해 데이터 동작 신호를 상기 전송 회로로 송신하는 단계; 및
상기 전송 회로가 상기 데이터 동작 신호에 따라 상기 공유 메모리로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고 상기 공유 데이터 수신 인터페이스를 통해 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 단계를 포함한다.
일 실시예에서, 상기 데이터 동작 신호는 브로드캐스트 신호 및/또는 멀티캐스트 신호이며, 상기 공유 데이터 수신 인터페이스를 통해 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 단계는,
상기 전송 회로가 상기 공유 데이터 수신 인터페이스를 통해 상기 입력 데이터를 상기 브로드캐스트 신호 및/또는 멀티캐스트 신호에 대응하는 복수의 기계 학습 유닛으로 송신하는 단계를 포함한다.
본 출원은 데이터 처리 장치를 제공한다. 상기 데이터 처리 장치는 기계 학습 장치, 전송 회로 및 공유 메모리를 포함하고, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 상기 기계 학습 유닛은 적어도 하나 이상의 송신 인터페이스 및 적어도 하나 이상의 수신 인터페이스를 포함하고, 상기 기계 학습 유닛이 수행한 유니캐스트 판독 동작, 유니캐스트 기록 동작 및 브로드캐스트 동작 중의 적어도 2가지 데이터 동작은 상기 기계 학습 유닛의 하나의 송신 인터페이스를 공유하고, 상기 기계 학습 유닛은 상기 전송 회로에 연결되며, 상기 전송 회로는 상기 공유 메모리에 연결되고,
상기 전송 회로는, 상기 기계 학습 장치가 상기 기계 학습 유닛의 상기 적어도 하나 이상의 송신 인터페이스를 통해 발송한 데이터 동작 신호에 따라 상기 공유 메모리로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고, 상기 수신 인터페이스를 통해 상기 입력 데이터를 상기 기계 학습 장치로 리턴한다.
일 실시예에서, 상기 판독/기록 처리회로는 복수의 처리회로 그룹으로 나뉘고, 하나의 기계 학습 유닛은 하나의 처리회로 그룹에 대응되며, 상기 처리회로 그룹은 하나의 유니캐스트 판독 처리회로, 하나의 유니캐스트 기록 처리회로 및 하나의 브로드캐스트 처리회로를 포함한다.
일 실시예에서, 상기 처리회로 그룹에서 유니캐스트 판독 처리회로와 브로드캐스트 처리회로가 리턴한 데이터는 상기 기계 학습 유닛 상의 하나의 공유 데이터 수신 인터페이스를 공유한다.
일 실시예에서, 상기 적어도 하나 이상의 송신 인터페이스는 유니캐스트 기록 동작과 브로드캐스트 동작이 공유하는 공유 신호 송신 인터페이스 및 유니캐스트 판독 신호 송신 인터페이스를 포함한다.
일 실시예에서, 상기 제2 전송 인터페이스는 복수의 인터페이스 그룹을 포함하고, 상기 하나의 처리회로 그룹은 하나의 인터페이스 그룹과 대응하며, 상기 하나의 인터페이스 그룹은, 상기 유니캐스트 판독 처리회로에 연결된 유니캐스트 판독 신호 수신 인터페이스와 유니캐스트 판독 데이터 송신 인터페이스; 상기 유니캐스트 기록 처리회로에 연결된 유니캐스트 판독 신호 수신 인터페이스; 상기 브로드캐스트 처리회로에 연결된 브로드캐스트 신호 수신 인터페이스 및 로드캐스트 데이터 송신 인터페이스를 포함한다.
일 실시예에서, 상기 하나의 처리회로 그룹에서 유니캐스트 기록 처리회로와 브로드캐스트 처리회로는 상기 대응하는 인터페이스 그룹 내의 하나의 공유 신호 수신 인터페이스를 공유하고, 상기 처리회로 그룹과 대응하는 공유 신호 수신 인터페이스는 상기 처리회로 그룹과 대응하는 기계 학습 유닛의 공유 신호 송신 인터페이스에 연결되며, 상기 처리회로 그룹 내의 유니캐스트 판독 신호 수신 인터페이스는 상기 처리회로 그룹과 대응하는 기계 학습 유닛의 유니캐스트 판독 신호 송신 인터페이스에 연결된다.
일 실시예에서, 상기 하나의 처리회로 그룹 내의 유니캐스트 판독 처리회로와 브로드캐스트 처리회로는 상기 대응하는 인터페이스 그룹 내의 하나의 공유 데이터 송신 인터페이스를 공유하고, 상기 처리회로 그룹과 대응하는 공유 데이터 송신 인터페이스는 상기 처리회로 그룹에 대응되는 기계 학습 유닛의 공유 데이터 수신 인터페이스에 연결된다.
일 실시예에서, 상기 처리회로 그룹과 대응하는 공유 신호 수신 인터페이스는 상기 처리회로 그룹 내의 유니캐스트 기록 처리회로 및 브로드캐스트 처리회로에 각각 연결되어 상기 기계 학습 유닛의 공유 신호 송신 인터페이스에서 송신된 데이터 동작 신호를 수신하고, 상기 데이터 동작 신호를 두 갈래의 동일한 데이터 동작 신호로 나누고, 상기 유니캐스트 기록 처리회로와 상기 브로드캐스트 처리회로로 각각 송신한다.
본 출원의 실시예는 데이터 처리 장치에 적용되는 데이터 처리 방법을 더 제공한다. 상기 데이터 처리 장치는 기계 학습 장치, 전송 회로 및 공유 메모리를 포함하고, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포하함고, 상기 기계 학습 유닛은 적어도 하나 이상의 송신 인터페이스 및 적어도 하나 이상의 수신 인터페이스를 포함하고, 상기 기계 학습 유닛이 수행한 유니캐스트 판독 동작, 유니캐스트 기록 동작 및 브로드캐스트 동작 중의 적어도 2가지 데이터 동작은 상기 기계 학습 유닛 상의 하나의 송신 인터페이스를 공유하고, 상기 기계 학습 유닛은 상기 전송 회로에 연결되며, 상기 전송 회로는 상기 공유 메모리에 연결되고, 상기 방법은,
상기 기계 학습 장치가 상기 적어도 하나 이상의 송신 인터페이스를 통해 데이터 동작 신호를 상기 전송 회로로 송신하는 단계;
상기 전송 회로가 상기 데이터 동작 신호에 따라 상기 공유 메모리로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고, 상기 수신 인터페이스를 통해 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 단계를 포함한다.
일 실시예에서, 상기 데이터 동작 신호는 브로드캐스트 신호 및/또는 멀티캐스트 신호이며, 상기 수신 인터페이스를 통해 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 단계는,
상기 전송 회로가 상기 공유 데이터 수신 인터페이스를 통해 상기 입력 데이터를 상기 브로드캐스트 신호 및/또는 멀티캐스트 신호에 대응하는 복수의 기계 학습 유닛으로 송신하는 단계를 포함한다.
본 출원은 데이터 처리 장치를 제공한다. 상기 데이터 처리 장치는 기계 학습 장치, 전송 회로 및 공유 메모리를 포함하고, 상기 기계 학습 장치는 제1 전송 인터페이스를 통해 상기 전송 회로에 연결되고, 상기 전송 회로는 상기 공유 메모리에 연결되며,
상기 전송 회로는 상기 기계 학습 장치에서 발송된 데이터 동작 신호에 따라 상기 공유 메모리로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고, 상기 입력 데이터를 상기 기계 학습 장치로 리턴하고, 상기 데이터 동작 신호는 공유 메모리 내의 데이터에 대한 동작 방식을 나타낸다.
일 실시예에서, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 상기 기계 학습 유닛은 적어도 하나 이상의 연산 유닛, 및 상기 연산 유닛에 연결된 컨트롤러 유닛을 포함하고, 상기 연산 유닛은 하나의 마스트 처리회로와 복수의 슬레이브 처리회로를 포함하고, 상기 연산 유닛은 상기 제1 전송 인터페이스를 통해 상기 전송 회로에 연결된다.
상기 컨트롤러 유닛은, 상기 제1 전송 인터페이스의 송신 인터페이스를 통해 상기 데이터 동작 신호와 상기 출력 데이터를 상기 전송 회로에 송신하고, 상기 제1 전송 인터페이스의 수신 인터페이스를 통해 상기 전송 회로가 상기 공유 메모리로부터 획득한 상기 입력 데이터를 수신하고, 상기 입력 데이터를 기 마스트 처리회로 및/또는 상기 슬레이브 처리회로로 송신한다.
상기 마스트 처리회로는 상기 입력 데이터를 상기 복수의 슬레이브 처리회로로 배분하며, 상기 복수의 슬레이브 처리회로는 상기 마스트 처리회로가 전송한 데이터에 의해 중간 연산을 수행하여 복수의 중간 결과를 얻으며 상기 복수의 중간 결과를 상기 마스트 처리회로에 전송한다.
상기 마스트 처리회로는 추가로 상기 복수의 중간 결과에 대해 후속 처리하여 계산 결과를 얻는다.
일 실시예에서, 상기 마스트 처리회로와 상기 슬레이브 처리회로의 구조는 H형, 시스톨릭 어레이형(systolic array type), 및 트리형 구조 중 1종 이상을 포함한다.
일 실시예에서, 상기 전송 회로는 제2 전송 인터페이스, 상기 제2 전송 인터페이스에 연결된 적어도 하나 이상의 판독/기록 처리회로, 및 상기 판독/기록 처리회로에 연결된 중재 회로를 포함하고, 상기 적어도 하나 이상의 기계 학습 유닛이 상기 제1 전송 인터페이스를 통해 상기 제2 전송 인터페이스와의 연결은 상기 적어도 하나 이상의 기계 학습 유닛과 상기 전송 회로의 연결을 구현한다.
상기 판독/기록 처리회로는, 상기 적어도 하나 이상의 기계 학습 유닛이 상기 제1 전송 인터페이스 및 상기 제2 전송 인터페이스를 통해 송신한 상기 데이터 동작 신호를 수신하고, 상기 데이터 동작 신호를 상기 중재 회로에 전송하고 상기 공유 메모리로부터 판독한 데이터를 상기 제2 전송 인터페이스를 통해 적어도 하나 이상의 기계 학습 유닛으로 송신한다.
상기 중재 회로는 사전에 설정된 중재 규칙에 따라 상기 적어도 하나 이상의 판독/기록 처리회로로부터 수신된 데이터 동작 신호를 중재하고 상기 중재 성공한 데이터 동작 신호에 따라 상기 공유 메모리 내의 데이터를 동작시킨다.
일 실시예에서, 상기 판독/기록 처리회로는 유니캐스트 판독 처리회로, 유니캐스트 기록 처리회로, 브로드캐스트 처리회로 중 하나 이상을 포함한다. 상기 데이터 동작 신호는 유니캐스트 판독 요청, 유니캐스트 기록 요청, 유니캐스트 판독 명령, 유니캐스트 기록 명령, 멀티캐스트 명령, 브로드캐스트 명령 중 하나 이상을 포함한다.
여기서, 유니캐스트 유형의 처리회로는 유니캐스트 유형의 신호를 처리하고, 브로드캐스트 유형의 처리회로는 멀티캐스트 또는 브로드캐스트 유형의 신호를 처리한다.
일 실시예에서, 상기 데이터 동작 신호가 명령 유형의 신호이면, 상기 판독/기록 처리회로는 구체적으로 명령 유형의 신호를 분석하여 요청 유형의 신호를 생성하고, 상기 요청 유형의 신호를 상기 중재 회로로 전송한다.
일 실시예에서, 상기 데이터 동작 신호가 멀티캐스트 명령이면, 상기 멀티캐스트 명령은 복수의 수신 데이터의 목표 기계 학습 유닛의 식별자를 포함한다.
상기 판독/기록 처리회로는 구체적으로 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 상기 복수의 목표 기계 학습 유닛으로 송신한다.
일 실시예에서, 상기 데이터 동작 신호가 브로드캐스트 명령이면, 상기 판독/기록 처리회로는 구체적으로 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 모든 기계 학습 유닛으로 송신한다.
일 실시예에서, 상기 입력 데이터는 입력 뉴런 데이터 및/또는 가중치를 포함하고, 상기 출력 데이터는 출력 뉴런 데이터를 포함한다.
일 실시예에서, 상기 데이터 처리 장치는 적어도 하나 이상의 클러스터로 나뉘고, 각각의 클러스터는 복수의 기계 학습 유닛, 하나의 전송 회로 및 적어도 하나 이상의 공유 메모리를 포함한다.
상기 전송 회로는 소속된 클러스터 내의 중재 회로 및 상기 클러스터 내의 공유 메모리에 연결된 제1 유형 직접 액세스 제어기DMA, 및/또는 소속된 클러스터 내의 중재 회로 및 다른 클러스터 내의 공유 메모리에 연결된 제2 유형DMA를 더 포함한다.
상기 제1 DMA는 상기 클러스터 내의 중재 회로와 상기 클러스터 내의 공유 메모리 사이의 데이터 상호 작용을 제어한다.
상기 제2 DMA는 상기 클러스터 내의 중재 회로와 다른 클러스터 내의 공유 메모리 사이의 데이터 상호 작용, 그리고 상기 클러스터 내의 중재 회로와 오프칩 메모리 사이의 데이터 상호 작용을 제어한다.
일 실시예에서, 상기 전송 회로는 상기 제1 유형 DMA에 연결된 제1 선택 전송 회로, 상기 제2 유형 DMA에 연결된 제2 선택 전송 회로를 더 포함한다.
상기 제1 선택 전송 회로는 소속된 클러스터 내의 공유 메모리에 선택적으로 연결된다.
상기 제2 선택 전송 회로는 소속된 클러스터 및 다른 클러스터 내의 공유 메모리 및 상기 오프칩 메모리에 선택적으로 연결된다.
일 실시예에서, 상기 전송 회로는 상기 중재 회로 및 상기 공유 메모리에 연결된 캐싱 회로를 더 포함하고, 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 임시 저장하고 상기 중재 회로가 상기 공유 메모리에 기록하는 데이터를 임시 저장한다.
일 실시예에서, 상기 전송 회로와 상기 공유 메모리 사이의 전송 대역폭은 상기 전송 회로와 상기 기계 학습 유닛 사이의 전송 대역폭보다 크다.
본 출원은 데이터 처리 장치를 제공한다. 상기 데이터 처리 장치는 기계 학습 데이터에 대한 처리를 수행하고, 기계 학습 장치, 전송 회로 및 공유 메모리를 포함하고, 상기 전송 회로는 복수의 판독/기록 처리회로와 하나의 중재 회로를 포함하고, 상기 기계 학습 장치는 복수의 기계 학습 유닛을 포함하되, 각각의 기계 학습 유닛은 적어도 하나 이상의 연산 유닛을 포함하며, 상기 복수의 기계 학습 유닛은 제1 전송 인터페이스를 통해 상기 전송 회로에 연결되고, 상기 전송 회로는 상기 공유 메모리에 연결되고,
상기 중재 회로는 상기 복수의 기계 학습 유닛에서 송신된 데이터 동작 신호를 중재하고 중재 성공한 데이터 동작 신호에 따라 상기 공유 메모리로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고,
상기 판독/기록 처리회로는 상기 중재 성공한 데이터 동작 신호에 포함된 주소 정보 또는 상기 데이터 동작 신호의 유형에 따라 상기 복수의 기계 학습 유닛으로부터 목표 기계 학습 유닛 또는 목표 연산 유닛을 확정하고 상기 입력 데이터를 상기 목표 기계 학습 유닛 또는 목표 연산 유닛으로 리턴한다.
일 실시예에서, 상기 중재 회로는 구체적으로 복수의 판독/기록 회로가 송신한 데이터 동작 신호의 우선순위를 정하고 우선순위가 가장 높은 데이터 동작 신호를 중재 성공한 데이터 동작 신호로 삼는다.
일 실시예에서, 상기 중재 회로는, 구체적으로 복수의 판독/기록 처리회로가 송신한 데이터 동작 신호의 우선순위가 동일할 때, 상기 복수의 데이터 동작 신호의 유형 및 사전에 설정한 수행 조건에 따라 중재 성공한 데이터 동작 신호를 확정한다.
일 실시예에서, 상기 데이터 동작 신호가 유니캐스트 유형의 신호이면, 상기 수행 조건은, 상기 유니캐스트 유형의 신호를 송신하는 기계 학습 유닛의 채널이 아이들(idle) 상태; 또는 상기 유니캐스트 유형의 신호를 송신하는 기계 학습 유닛 중 연산 유닛의 채널이 아이들(idle) 상태인 것을 포함한다.
일 실시예에서, 상기 데이터 동작 신호가 멀티캐스트 유형의 신호이면, 상기 수행 조건은, 상기 멀티캐스트 유형의 신호를 송신하는 기계 학습 유닛의 채널이 아이들(idle) 상태이고 상기 멀티캐스트 유형의 신호가 지정한 목표 기계 학습 유닛의 채널이 아이들(idle) 상태; 또는 상기 멀티캐스트 유형의 신호를 송신한 기계 학습 유닛 중 연산 유닛의 채널이 아이들(idle) 상태이고 상기 멀티캐스트 유형의 신호가 지정한 목표 연산 유닛의 채널이 아이들(idle) 상태인 것을 포함한다.
일 실시예에서, 상기 데이터 동작 신호가 브로드캐스트 유형의 신호이면, 상기 수행 조건은 상기 브로드캐스트 유형의 신호를 송신한 기계 학습 유닛의 채널이 아이들(idle) 상태이고 다른 나머지 기계 학습 유닛의 채널이 아이들(idle) 상태; 또는 상기 브로드캐스트 유형의 신호를 송신하는 기계 학습 유닛 중 연산 유닛의 채널이 아이들(idle) 상태이며 다른 나머지 기계 학습 유닛 중 연산 유닛의 채널이 아이들(idle) 상태인 것을 포함한다.
일 실시예에서, 상기 전송 회로는 제2 전송 인터페이스를 더 포함하고, 상기 제2 전송 인터페이스의 각 인터페이스는 상기 제1 전송 인터페이스의 각 인터페이스와 일일히 대응하여 연결되고, 하나의 기계 학습 유닛은 하나의 판독/기록 처리회로와 대응하여 연결된다.
일 실시예에서, 상기 하나의 기계 학습 유닛 내의 복수의 연산 유닛은 상기 제1 전송 인터페이스 내의 하나의 송신 인터페이스를 공유하고 각각의 연산 유닛은 하나의 데이터 수신 인터페이스에 대응된다.
일 실시예에서, 상기 하나의 기계 학습 유닛 내의 복수의 연산 유닛은 상기 제1 전송 인터페이스 내의 하나의 송신 인터페이스 및 하나의 데이터 수신 인터페이스에 각각 대응된다.
일 실시예에서, 상기 전송 회로는 제2 전송 인터페이스를 더 포함하고, 상기 복수의 기계 학습 유닛은 상기 제2 전송 인터페이스 내의 하나의 신호 수신 인터페이스 및 하나의 데이터 리턴 인터페이스를 공유한다.
일 실시예에서, 상기 판독/기록 처리회로는 각각의 기계 학습 유닛이 송신한 데이터 동작 신호 신호를 저장하는 신호 큐를 포함한다.
상기 판독/기록 처리회로는 추가로 상기 데이터 동작 신호를 수신할 때 상기 요청 큐에 잔여 공간이 존재하는지 여부를 판단하도록 구성되되, "예"이면 상기 데이터 동작 신호를 상기 요청 큐에 캐싱하고, "아니요"이면, 상기 데이터 동작 신호를 차단한다.
일 실시예에서, 판독/기록 처리회로가 브로드캐스트 처리회로이면, 상기 신호 큐는 명령 큐 및 요청 큐를 포함한다.
상기 명령 큐는 상기 브로드캐스트 처리회로가 수신한 명령 유형의 신호를 캐싱한다.
상기 요청 큐는 상기 명령 유형의 신호를 분석한 후 얻은 요청 유형의 신호를 캐싱한다.
일 실시예에서, 상기 기계 학습 유닛은 상기 연산 유닛에 연결된 컨트롤러 유닛을 더 포함하고, 상기 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함하고, 상기 연산 유닛은 상기 제1 전송 인터페이스를 통해 상기 전송 회로에 연결된다.
상기 컨트롤러 유닛은 상기 제1 전송 인터페이스 내의 송신 인터페이스를 통해 상기 전송 회로로 상기 데이터 동작 신호 및 상기 출력 데이터를 송신하고, 상기 제1 전송 인터페이스 내의 수신 인터페이스를 통해 상기 전송 회로가 상기 공유 메모리로부터 획득한 상기 입력 뉴런 데이터 및 상기 가중치를 획득하고, 상기 입력 뉴런 데이터와 상기 가중치를 상기 마스트 처리회로 및/또는 상기 슬레이브 처리회로로 송신한다.
상기 마스트 처리회로는 상기 입력 데이터를 상기 복수의 슬레이브 처리회로로 배분하고 상기 복수의 슬레이브 처리회로는 상기 마스트 처리회로가 전송한 뉴런 데이터 및 가중치에 의해 중간 연산을 수행하여 복수의 중간 결과를 얻고 복수의 중간 결과를 상기 마스트 처리회로로 전송한다.
상기 마스트 처리회로는 또한 상기 복수의 중간 결과에 대해 후속 처리하여 계산 결과를 얻는다.
일 실시예에서, 상기 입력 데이터는 입력 데이터를 포함하고, 상기 출력 데이터는 출력 데이터를 포함한다.
전술한 일반적인 설명과 후술하는 세부 설명은 다만 예시적이며 설명을 위한 것일 뿐 본 출원을 한정하지 않음을 이해해야 한다.
첨부 도면은 명세서에 포함되어 명세서의 일부를 구성하고 본 출원의 실시예들을 도시하며, 본 출원의 원리를 설명하도록 명세서와 함께 사용된다.
도 1은 일 실시예의 네트워크 온칩 처리 시스템(1100)의 구성도이다.
도 2는 일 실시예의 네트워크 온칩 처리 시스템(1200)의 구성도이다.
도 3은 일 실시예의 네트워크 온칩 처리 시스템(1300)의 구성도이다.
도 4는 일 실시예의 네트워크 온칩 처리 시스템(1400)의 구성도이다.
도 5a는 일 실시예의 네트워크 온칩 처리 시스템(1500)의 구성도이다.
도 5b는 일 실시예의 네트워크 온칩 처리 시스템(15000)의 구성도이다.
도 6은 일 실시예의 네트워크 온칩 처리 시스템(1600)의 구성도이다.
도 7은 일 실시예의 네트워크 온칩 처리 시스템(1700)의 구성도이다.
도 8은 일 실시예의 네트워크 온칩 처리 시스템(1800)의 구성도이다.
도 9는 일 실시예의 네트워크 온칩 처리 시스템(1900)의 구성도이다.
도 10a는 일 실시예의 네트워크 온칩 처리 시스템(1910)의 구성도이다.
도 10b는 일 실시예의 네트워크 온칩 처리 시스템(19100)의 구성도이다.
도 11은 일 실시예의 네트워크 온칩 처리 시스템(1920)의 구성도이다.
도 12는 일 실시예의 네트워크 온칩 처리 시스템(1930)의 구성도이다.
도 13은 일 실시예의 계산 장치의 구성도이다.
도 14는 다른 일 실시예의 계산 장치의 구성도이다.
도 15는 일 실시예의 마스트 처리회로의 구성도이다.
도 16은 다른 일 실시예의 계산 장치의 구성도이다.
도 17은 다른 일 실시예의 계산 장치의 구성도이다.
도 18은 일 실시예의 트리 모듈의 구성도이다.
도 19는 다른 일 실시예의 계산 장치의 구성도이다.
도 20은 다른 일 실시예의 계산 장치의 구성도이다.
도 21은 다른 일 실시예의 계산 장치의 구성도이다.
도 22는 일 실시예의 통합 처리 장치의 구성도이다.
도 23은 다른 일 실시예의 통합 처리 장치의 구성도이다.
도 24는 일 실시예의 보드 카드의 구성도이다.
도 25는 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 26은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 27은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 28은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 29는 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 30은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 31은 일 실시예에 따른 데이터 처리 방법의 적용환경의 개략도이다.
도 32는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 33은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 34는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 35는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 36은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 37은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 38은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 39는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 40은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 41은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 42는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 43은 일 실시예의 데이터 처리 장치의 구성도이다.
도 44는 일 실시예의 기계 학습 유닛의 구성도이다.
도 45는 일 실시예의 데이터 처리 장치의 구성도이다.
도 46은 일 실시예의 데이터 처리 장치의 구성도이다.
도 47은 일 실시예의 데이터 처리 장치의 구성도이다.
도 48은 일 실시예의 데이터 처리 장치의 구성도이다.
도 49는 일 실시예의 기계 학습 유닛의 구성도이다.
도 50은 일 실시예의 데이터 처리 장치의 구성도이다.
도 51은 일 실시예의 데이터 처리 장치의 구성도이다.
도 52는 일 실시예의 데이터 처리 장치의 구성도이다.
도 53은 일 실시예의 데이터 처리 장치의 구성도이다.
도 54는 일 실시예의 데이터 처리 장치의 구성도이다.
도 55는 일 실시예의 데이터 처리 장치의 구성도이다.
도 56은 일 실시예의 데이터 처리 장치의 구성도이다.
도 56A는 일 실시예의 기계 학습 장치의 구성도이다.
도 57은 일 실시예의 전송 회로의 구성도이다.
도 57A는 일 실시예의 한 전송 회로의 구성도이다.
도 57B는 일 실시예의 한 전송 회로의 구성도이다.
도 58은 일 실시예의 한 클러스터 내의 전송 회로의 구성도이다.
도 59는 일 실시예의 다른 한 클러스터 내의 전송 회로의 구성도이다.
도 60은 일 실시예의 다른 한 전송 회로의 구성도이다.
도 61은 일 실시예의 데이터 처리 장치의 구성도이다.
도 62는 일 실시예의 기계 학습 유닛의 구성도이다.
도 63는 일 실시예의 데이터 처리 장치의 구성도이다.
도 64는 일 실시예의 데이터 처리 장치의 구성도이다.
도 65는 일 실시예의 데이터 처리 장치의 구성도이다.
도 66은 일 실시예의 데이터 처리 장치의 구성도이다.
도 1은 일 실시예의 네트워크 온칩 처리 시스템(1100)의 구성도이다.
도 2는 일 실시예의 네트워크 온칩 처리 시스템(1200)의 구성도이다.
도 3은 일 실시예의 네트워크 온칩 처리 시스템(1300)의 구성도이다.
도 4는 일 실시예의 네트워크 온칩 처리 시스템(1400)의 구성도이다.
도 5a는 일 실시예의 네트워크 온칩 처리 시스템(1500)의 구성도이다.
도 5b는 일 실시예의 네트워크 온칩 처리 시스템(15000)의 구성도이다.
도 6은 일 실시예의 네트워크 온칩 처리 시스템(1600)의 구성도이다.
도 7은 일 실시예의 네트워크 온칩 처리 시스템(1700)의 구성도이다.
도 8은 일 실시예의 네트워크 온칩 처리 시스템(1800)의 구성도이다.
도 9는 일 실시예의 네트워크 온칩 처리 시스템(1900)의 구성도이다.
도 10a는 일 실시예의 네트워크 온칩 처리 시스템(1910)의 구성도이다.
도 10b는 일 실시예의 네트워크 온칩 처리 시스템(19100)의 구성도이다.
도 11은 일 실시예의 네트워크 온칩 처리 시스템(1920)의 구성도이다.
도 12는 일 실시예의 네트워크 온칩 처리 시스템(1930)의 구성도이다.
도 13은 일 실시예의 계산 장치의 구성도이다.
도 14는 다른 일 실시예의 계산 장치의 구성도이다.
도 15는 일 실시예의 마스트 처리회로의 구성도이다.
도 16은 다른 일 실시예의 계산 장치의 구성도이다.
도 17은 다른 일 실시예의 계산 장치의 구성도이다.
도 18은 일 실시예의 트리 모듈의 구성도이다.
도 19는 다른 일 실시예의 계산 장치의 구성도이다.
도 20은 다른 일 실시예의 계산 장치의 구성도이다.
도 21은 다른 일 실시예의 계산 장치의 구성도이다.
도 22는 일 실시예의 통합 처리 장치의 구성도이다.
도 23은 다른 일 실시예의 통합 처리 장치의 구성도이다.
도 24는 일 실시예의 보드 카드의 구성도이다.
도 25는 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 26은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 27은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 28은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 29는 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 30은 다른 일 실시예의 네트워크 온칩 데이터 처리 방법의 흐름도이다.
도 31은 일 실시예에 따른 데이터 처리 방법의 적용환경의 개략도이다.
도 32는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 33은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 34는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 35는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 36은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 37은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 38은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 39는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 40은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 41은 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 42는 일 실시예에 따른 데이터 처리 방법의 흐름도이다.
도 43은 일 실시예의 데이터 처리 장치의 구성도이다.
도 44는 일 실시예의 기계 학습 유닛의 구성도이다.
도 45는 일 실시예의 데이터 처리 장치의 구성도이다.
도 46은 일 실시예의 데이터 처리 장치의 구성도이다.
도 47은 일 실시예의 데이터 처리 장치의 구성도이다.
도 48은 일 실시예의 데이터 처리 장치의 구성도이다.
도 49는 일 실시예의 기계 학습 유닛의 구성도이다.
도 50은 일 실시예의 데이터 처리 장치의 구성도이다.
도 51은 일 실시예의 데이터 처리 장치의 구성도이다.
도 52는 일 실시예의 데이터 처리 장치의 구성도이다.
도 53은 일 실시예의 데이터 처리 장치의 구성도이다.
도 54는 일 실시예의 데이터 처리 장치의 구성도이다.
도 55는 일 실시예의 데이터 처리 장치의 구성도이다.
도 56은 일 실시예의 데이터 처리 장치의 구성도이다.
도 56A는 일 실시예의 기계 학습 장치의 구성도이다.
도 57은 일 실시예의 전송 회로의 구성도이다.
도 57A는 일 실시예의 한 전송 회로의 구성도이다.
도 57B는 일 실시예의 한 전송 회로의 구성도이다.
도 58은 일 실시예의 한 클러스터 내의 전송 회로의 구성도이다.
도 59는 일 실시예의 다른 한 클러스터 내의 전송 회로의 구성도이다.
도 60은 일 실시예의 다른 한 전송 회로의 구성도이다.
도 61은 일 실시예의 데이터 처리 장치의 구성도이다.
도 62는 일 실시예의 기계 학습 유닛의 구성도이다.
도 63는 일 실시예의 데이터 처리 장치의 구성도이다.
도 64는 일 실시예의 데이터 처리 장치의 구성도이다.
도 65는 일 실시예의 데이터 처리 장치의 구성도이다.
도 66은 일 실시예의 데이터 처리 장치의 구성도이다.
여기서, 예시적인 실시예에 대해 상세히 설명하고 그 예를 도면에 나타낸다. 이하 도면에 관한 설명에서 특별한 설명이 없는 한 다른 도면 내의 동일한 도면부호는 동일하거나 유사한 요소를 나타낸다. 아래 예시적인 실시예에서 설명하는 실시예는 본 출원과 같은 모든 실시예를 대표하지 않는다. 반대로, 그 실시예들은 단지 첨부된 특허청구범위에 설명된 본 출원의 양태와 일치하는 장치 및 방법의 예에 불과하다.
일 실시예에서, 본 출원에 따른 네트워크 온칩 처리 시스템은 저장 장치 및 복수의 계산 장치를 포함하고, 상기 저장 장치 및 복수의 상기 계산 장치는 동일한 칩 위에 설치되고, 적어도 하나 이상의 계산 장치는 상기 저장 장치에 연결되며, 적어도 두개 이상의 계산 장치는 서로 연결된다.
여기서, 네트워크 온칩(Network on Chip, NoC)은 단일 칩 위에 대량의 계산 자원을 집적시키고 이러한 자원을 연결하는 온칩 통신 네트워크를 가리킨다. 대안적으로, 칩 위의 각각의 계산 장치는 각각의 인터페이스를 통해 상기 네트워크 온칩에 액세스하고 공유 네트워크 자원과 통신하고자 하는 목표 모듈을 사용하여 통신할 수 있다. 구체적으로, 상기 저장 장치와 복수의 상기 계산 장치가 동일한 칩 위에 설치된다는 것은, 저장 장치와 복수의 계산 장치를 하나의 칩 위에 집적시키는 것을 의미한다. 계산 장치 내의 프로세서 코어와 오프칩 저장 장치는 NoC를 통해 연결되고, NoC는 또한 프로세서의 복수 코어 사이의 통신을 지원한다.
본 출원의 실시예에 따른 네트워크 온칩 처리 시스템은 모두 NoC에 기반하여 온칩 통신을 구현한다. 한편, 본 출원의 실시예에 따른 네트워크 온칩 처리 시스템은 온칩 저장뿐만 아니라 오프칩 저장도 가능하다. 다시 말해서, 신경망 프로세서의 처리 과정에서 연산 데이터는 온칩 저장 장치에 저장될 수도 있고, 오프칩 저장 장치에 저장될 수도 있다. 네트워크 온칩 처리 시스템의 온칩 저장 용량이 제한적이므로 연산 데이터 및 연산 과정에 생성된 중간 결과를 오프칩 저장 장치에 임시 저장하였다가 필요시 오프칩 저장 장치로부터 NoC로 판독할 수 있다. 본 출원의 실시예에서, 네트워크 온칩 처리 시스템 내의 저장 장치는 모두 온칩 저장 장치를 의미하며, 네트워크 온칩 처리 시스템 내의 계산 장치는 신경망 프로세서를 포함한다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 더 제공한다. 상기 시스템은 저장 장치 및 복수의 계산 장치를 포함하고, 상기 복수의 계산 장치는 제1 계산 장치와 복수의 제2 계산 장치를 포함하며, 상기 저장 장치와 복수의 상기 계산 장치는 동일한 칩 위에 설치된다. 여기서, 상기 제1 계산 장치는 상기 저장 장치에 연결되며, 상기 복수의 제2 계산 장치 중 적어도 하나 이상의 제2 계산 장치는 상기 제1 계산 장치에 연결된다.
일 실시예에 신경망 칩이 제공된다. 상기 칩은 저장 장치, 복수의 계산 장치, 제1 인터커넥트 장치 및 제2 인터커넥트 장치를 포함하고, 적어도 하나 이상의 계산 장치와 상기 저장 장치는 상기 제1 인터커넥트 장치를 통해 연결되고 상기 복수의 계산 장치는 상기 제2 인터커넥트 장치를 통해 연결된다. 더 나아가, 계산 장치는 제1 인터커넥트 장치를 통해 저장 장치에 대한 판독/기록 동작을 구현하고, 복수의 계산 장치 사이는 제2 인터커넥트 장치를 통해 데이터를 전송할 수도 있다.
이하 네트워크 온칩 처리 시스템 및 신경망 칩에 대해 각각 설명한다.
도 1에 도시된 바와 같이, 도 1은 일 실시예에 따른 네트워크 온칩 처리 시스템(1100)이다. 네트워크 온칩 처리 시스템(1100)은 저장 장치(1101), 제1 계산 장치(1102), 제2 계산 장치(1103) 및 제2 계산 장치(1104)를 포함하고, 저장 장치(1101), 제1 계산 장치(1102), 제2 계산 장치(1103) 및 제2 계산 장치(1104)는 네트워크 온칩 처리 시스템(1100)의 동일한 칩 위에 설치된다. 여기서 제1 계산 장치(1102)는 저장 장치(1101)에 연결되고, 제2 계산 장치(1103)는 제1 계산 장치(1102)에 연결되는 동시에, 제2 계산 장치(1103)도 제2 계산 장치(1104)에 연결된다. 오직 제1 계산 장치(1102)만이 저장 장치(1101)에 액세스할 수 있다. 다시 말해서, 제1 계산 장치(1102)만이 저장 장치(1101)로부터 데이터를 판독/기록할 수 있다. 제1 계산 장치(1102), 제2 계산 장치(1103)와 제2 계산 장치(1104) 들은 상호간에 데이터를 전송할 수 있다.
구체적으로, 제2 계산 장치(1104)가 데이터를 판독하고자 할 때, 제1 계산 장치(1102)가 저장 장치(1101)에 액세스하여 저장 장치(1101)로부터 제2 계산 장치(1104)에 필요한 데이터를 판독하고, 상기 데이터를 제2 계산 장치(1103)로 송신한 후 제2 계산 장치(1103)가 다시 상기 데이터를 제2 계산 장치(1104)로 송신한다. 대안적으로, 제1 계산 장치(1102) 이외의 제2 계산 장치(1103)와 제2 계산 장치(1104)도 저장 장치(1101)에 연결할 수 있으며, 제1 계산 장치(1102), 제2 계산 장치(1103) 및 제2 계산 장치(1104) 중 적어도 하나 이상의 계산 장치가 저장 장치(1101)에 연결되기만 하면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 제2 계산 장치(1103)는 제2 계산 장치(1104)에 서로 연결될 수도 있고, 제1 계산 장치(1102)에 서로 연결될 수도 있다. 제1 계산 장치(1102), 제2 계산 장치(1103) 및 제2 계산 장치(1104) 중 적어도 두개 이상의 계산 장치가 서로 연결되기만 하면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
도 2에 도시된 바와 같이, 도 2는 일 실시예에 따른 네트워크 온칩 처리 시스템(1200)이다. 네트워크 온칩 처리 시스템(1200)은 저장 장치(1201), 제1 계산 장치(1202), 제2 계산 장치(1203) 및 제2 계산 장치(1204)를 포함하고, 저장 장치(1201), 제1 계산 장치(1202), 제2 계산 장치(1203) 및 제2 계산 장치(1204)는 네트워크 온칩 처리 시스템(1200)의 동일한 칩 위에 설치된다. 여기서, 제1 계산 장치(1202)는 저장 장치(1201)에 연결되고, 제2 계산 장치(1203)와 제2 계산 장치(1204)는 제1 계산 장치(1202)에 직접적으로 연결된다. 즉, 제2 계산 장치(1204)가 제2 계산 장치(1203)에 연결될 뿐만 아니라 제1 계산 장치(1201)에도 연결되므로 제2 계산 장치(1203)를 통해 제1 계산 장치(1201)에 연결되도록 구성할 필요없다. 오직 제1 계산 장치(1202)만이 저장 장치(1201)에 액세스할 수 있다. 다시 말해서 제1 계산 장치(1202)만이 저장 장치(1201)로부터 데이터를 판독/기록할 수 있다. 제1 계산 장치(1202), 제2 계산 장치(1203)와 제2 계산 장치(1204)들은 상호간에 데이터를 전송할 수 있다.
구체적으로, 제2 계산 장치(1204)가 데이터를 판독하고자 할 때, 제1 계산 장치(1202)가 저장 장치(1201)에 액세스하여 저장 장치(1201)로부터 제2 계산 장치(1204)에 필요한 데이터를 판독한 후, 상기 데이터를 제2 계산 장치(1204)로 바로 송신하므로 제2 계산 장치(1203)를 거쳐 데이터를 포워딩할 필요없다. 대안적으로, 제1 계산 장치(1202), 제2 계산 장치(1203) 및 제2 계산 장치(1204)는 모두 저장 장치(1201)에 연결할 수 있으며 제1 계산 장치(1202), 제2 계산 장치(1203) 및 제2 계산 장치(1204) 중 적어도 하나 이상의 계산 장치가 저장 장치(1201)에 연결되기만 하면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 제2 계산 장치(1203)는 제2 계산 장치(1204)에 연결될 수 있고, 제1 계산 장치(1202)에 연결될 수도 있다. 제1 계산 장치(1202), 제2 계산 장치(1203) 및 제2 계산 장치(1204) 중 적어도 두개 이상의 계산 장치가 서로 연결되기만 하면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 계산 장치가 상호간에 연결되도록 구성됨으로써 복수의 계산 장치가 상호간에 데이터를 전송할 수 있어 복수의 계산 장치 모두가 저장 장치로부터 데이터를 판독할 경우 연결하는 대역폭의 오버헤드가 과도하게 발생하는 것을 막을 수 있을 뿐만 아니라 데이터의 판독/기록 효율을 향상시킨다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 제공한다. 상기 시스템은 저장 장치 및 복수의 계산 장치를 포함하고, 상기 저장 장치와 복수의 상기 계산 장치는 동일한 칩 위에 설치된다. 여기서, 상기 복수의 계산 장치 내의 각각의 계산 장치마다 상기 저장 장치에 연결되고, 적어도 두개 이상의 계산 장치는 서로 연결되어 있다.
도 3에 도시된 바와 같이, 도 3은 일 실시예에 따른 네트워크 온칩 처리 시스템(1300)이다. 네트워크 온칩 처리 시스템(1300)은 저장 장치(1301), 계산 장치(1302), 계산 장치(1303) 및 계산 장치(1304)를 포함하고, 저장 장치(1301), 계산 장치(1302), 계산 장치(1303) 및 계산 장치(1304)는 네트워크 온칩 처리 시스템(1300)의 동일한 칩 위에 설치되고, 계산 장치(1302), 계산 장치(1303) 및 계산 장치(1304)는 모두 저장 장치(1301)에 연결되며, 계산 장치(1302)와 계산 장치(1303)는 서로 연결되고, 동시에 계산 장치(1303)와 계산 장치(1304)는 서로 연결되어 있다. 계산 장치(1202), 계산 장치(1203) 및 계산 장치(1304)는 모두 저장 장치(1201)에 액세스할 수 있으며, 계산 장치(1302)와 계산 장치(1303)는 상호간에 데이터를 전송할 수 있고 계산 장치(1303)와 계산 장치(1304)도 상호간에 데이터를 전송할 수 있다.
구체적으로, 계산 장치(1304)가 데이터를 판독하고자 할 때, 계산 장치(1304)가 저장 장치(1301)에 직접 액세스할 수도 있고, 계산 장치(1303)가 저장 장치(1301)에 액세스하여 저장 장치(1301)로부터 계산 장치(1304)에 필요한 데이터를 판독한 후 상기 데이터를 계산 장치(1304)로 송신할 수도 있다. 또한 계산 장치(1302)가 저장 장치(1301)에 액세스하여 저장 장치(1301)로부터 계산 장치(1304)에 필요한 데이터를 판독한 후 상기 데이터를 계산 장치(1303)로 송신하고 계산 장치(1303)가 다시 계산 장치(1304)에 전송할 수도 있다. 대안적으로, 계산 장치(1302), 계산 장치(1303) 및 계산 장치(1304) 중 적어도 하나 이상의 계산 장치만이 저장 장치(1301)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 계산 장치(1302), 계산 장치(1303) 및 계산 장치(1304) 중 적어도 두개 이상의 계산 장치가 서로 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 계산 장치들이 서로 연결되도록 구성함으로써 임의의 한 계산 장치에 필요한 모든 데이터가 복수의 계산 장치 사이에서 전송 가능하므로 상기 시스템은 저장 장치 인터페이스를 동시에 판독하는 계산 장치를 줄이고 대역폭 막힘을 감소시킬 수 있다.
도 4에 도시된 바와 같이, 도 4는 일 실시예에 따른 네트워크 온칩 처리 시스템(1400)이다. 네트워크 온칩 처리 시스템(1400)은 저장 장치(1401), 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404)를 포함하고, 저장 장치(1401), 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404)는 네트워크 온칩 처리 시스템(1400)의 동일한 칩 위에 설치된다. 여기서, 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404)는 모두 저장 장치(1401)에 연결되고, 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404)들은 서로 연결되어 있다. 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404)는 모두 저장 장치(1401)에 액세스가능하며, 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404)들은 상호간에 데이터를 전송할 수 있다.
구체적으로, 계산 장치(1404)가 데이터를 판독하고자 할 때, 저장 장치(1401)에 직접 액세스할 수도 있고 계산 장치(1403)가 저장 장치(1401)를 액세스하여 저장 장치(1401)로부터 계산 장치(1404)에 필요한 데이터를 판독한 후 상기 데이터를 계산 장치(1404)로 송신할 수도 있다. 또한 계산 장치(1402)가 저장 장치(1401)에 액세스하여 저장 장치(1401)로부터 계산 장치(1404)에 필요한 데이터를 판독한 후 상기 데이터를 바로 계산 장치(1404)로 송신할 수 있으므로 계산 장치(1403)를 거치지 않고 데이터를 포워딩할 수 있다. 대안적으로, 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404) 중 적어도 하나 이상의 계산 장치가 저장 장치(1401)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 계산 장치(1402), 계산 장치(1403) 및 계산 장치(1404) 중 적어도 두개 이상의 계산 장치가 서로 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 계산 장치가 저장 장치를 거치지 않고 직접적으로 연결되도록 구성됨으로써 두 계산 장치는 상호간에 데이터를 직접 전송할 수 있어 데이터의 판독/기록 효율을 향상시킬 수 있다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 더 제공한다. 상기 시스템은 저장 장치 및 복수의 계산 장치 그룹을 포함하고, 상기 저장 장치 및 복수의 상기 계산 장치 그룹은 동일한 칩 위에 설치되고, 각각의 계산 장치 그룹마다 복수의 계산 장치를 포함한다. 여기서, 상기 복수의 계산 장치 그룹에서 적어도 하나 이상의 계산 장치 그룹은 상기 저장 장치에 연결되고, 적어도 두개 이상의 계산 장치 그룹 사이는 서로 연결되어 있다.
일 실시예에서, 본 출원은 신경망 칩을 더 제공한다. 상기 칩은 저장 장치, 복수의 계산 장치 그룹, 제1 인터커넥트 장치 및 제2 인터커넥트 장치를 포함하고, 상기 복수의 계산 장치 그룹 중 적어도 하나 이상의 계산 장치 그룹은 상기 제1 인터커넥트 장치를 통해 상기 저장 장치에 연결되며, 상기 복수의 계산 장치 그룹 사이는 상기 제2 인터커넥트 장치를 통해 연결된다. 더 나아가, 계산 장치 그룹은 제1 인터커넥트 장치를 통해 저장 장치에 대한 판독/기록 동작을 구현하고, 복수의 계산 장치 그룹 사이는 제2 인터커넥트 장치를 통해 데이터를 전송할 수 있다. 여기서, 복수의 계산 장치는 복수의 그룹으로 나눌 수 있으며 각 그룹의 계산 장치의 개수는 특별히 제한되지 않는다. 일 예로서, 하나의 그룹에 4개 계산 장치를 포함한다.
도 5a에 도시된 바와 같이, 일 실시예는 네트워크 온칩 처리 시스템(1500)을 제공한다. 네트워크 온칩 처리 시스템(1500)은 저장 장치(1501) 및 6개 계산 장치(계산 장치(1502) 내지 계산 장치(1507))를 포함하고, 저장 장치(1501) 및 6개 계산 장치(계산 장치(1502) 내지 계산 장치(1507))는 네트워크 온칩 처리 시스템(1500)의 동일한 칩 위에 설치된다. 예를 들어 설명하면, 6개 계산 장치는 3개 그룹으로 나눌 수 있으며, 각 그룹마다 계산 장치를 두개 포함한다. 예를 들어 계산 장치(1502) 및 계산 장치(1503)가 제1 계산 장치 그룹(cluster1)에 속하며, 계산 장치(1504) 및 계산 장치(1505)가 제2 계산 장치 그룹(cluster2)에 속하고, 계산 장치(1506) 및 계산 장치(1507)가 제3 계산 장치 그룹(cluster3)에 속한다. cluster1은 메인 계산 장치 그룹이고, cluster2 및 cluster3는 서브 계산 장치 그룹이다. 여기서, cluster1만 저장 장치(1501)에 연결되고, cluster1, cluster2 및 cluster3은 상호간에 서로 연결된다. cluster1 내의 계산 장치(1502)가 저장 장치(1501)에 연결되고, cluster1 내의 계산 장치(1503)와 cluster2 내의 계산 장치(1504)는 서로 연결되고, cluster2 내의 계산 장치(1505)와 cluster3 내의 계산 장치(1507)는 서로 연결된다.
구체적으로, cluster3이 데이터를 판독하고자 할 때, cluster1가 저장 장치(1501)에 액세스하여 저장 장치(1501)로부터 cluster3에 필요한 데이터를 판독한 후 상기 데이터를 cluster2로 송신하고 다시 cluster2에서 cluster3로 송신한다. 여기서, 복수의 계산 장치는 복수의 그룹으로 나눌 수 있으며 각 그룹의 계산 장치의 개수는 특별히 제한되지 않는다. 하나의 그룹에 4개 계산 장치를 포함하는 것이 바람직하다.
대안적으로, 복수의 계산 장치 중 모든 계산 장치가 저장 장치(1501)에 연결될 필요가 없으며, 두 계산 장치 그룹 중 단지 하나 이상의 계산 장치 그룹만 저장 장치(1501)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1은 cluster2에 연결될 수도, cluster3에 연결될 수도 있는 바, 3개 계산 장치 그룹 중 적어도 두개 이상의 계산 장치 그룹이 서로 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 계산 장치 그룹마다 적어도 하나 이상의 계산 장치가 다른 상기 계산 장치 그룹 내의 적어도 하나 이상의 계산 장치에 연결된다. 다시 말하면, cluster1의 계산 장치마다 제2 장치 그룹에 연결될 수 있으며 cluster1의 적어도 하나 이상의 계산 장치가 cluster2의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 복수의 계산 장치 그룹은 상기 복수의 계산 장치 그룹 내의 임의의 한 계산 장치를 통해 서로 연결된다. 다시 말하면, cluster1의 임의의 한 계산 장치가 cluster2의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
도 5b에 도시된 바와 같이, 도 5b는 일 실시예에 따른 네트워크 온칩 처리 시스템(15000)이다. 네트워크 온칩 처리 시스템(15000)은 저장 장치(15010) 및 6개 계산 장치(계산 장치(15020) 내지 계산 장치(15070))를 포함하고, 저장 장치(15010) 및 6개 계산 장치(계산 장치(15020) 내지 계산 장치(15070))는 네트워크 온칩 처리 시스템(15000)의 동일한 칩 위에 설치되며, 6개 계산 장치는 또한 3 그룹으로 나뉜다. 계산 장치(15020)와 계산 장치(15030)가 제1 계산 장치 그룹(cluster1)에 속하며, 계산 장치(15040)와 계산 장치(15050)가 제2 계산 장치 그룹(cluster2)에 속하며, 계산 장치(15060)와 계산 장치(15070)가 제3 계산 장치 그룹(cluster3)에 속한다. cluster1은 메인 계산 장치 그룹이고, cluster2와 cluster3은 서브 계산 장치 그룹이다. 여기서, cluster1만 저장 장치(15010)에 연결되고, cluster1, cluster2 및 cluster3은 상호간에 서로 연결된다. cluster1의 계산 장치(15020)는 저장 장치(15010)에 연결되고, cluster1의 계산 장치(15030)는 cluster2의 계산 장치(15040)에 연결되며, cluster2의 계산 장치(15050)는 cluster3의 계산 장치(15070)에 연결되고, cluster3의 계산 장치(15060)는 cluster1의 계산 장치(15020)에 연결된다.
구체적으로, cluster3이 데이터를 판독하고자 할 때, cluster1이 저장 장치(1501)를 액세스하여 저장 장치(1501)로부터 cluster3에 필요한 데이터를 판독한 후 상기 데이터를 cluster3로 바로 송신할 수 있다. 여기서, 복수의 계산 장치는 복수의 그룹으로 나눌 수 있으며 각 그룹의 계산 장치의 개수는 특별히 제한되지 않는다. 하나의 그룹에 4개의 계산 장치를 포함하는 것이 바람직하다.
대안적으로, 복수의 계산 장치 중 모든 계산 장치가 저장 장치(15010)에 연결될 필요가 없으며, 두 계산 장치 그룹에서 적어도 하나 이상의 계산 장치 그룹이 저장 장치(15010)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1은 cluster2에 연결될 수도, cluster3에 연결될 수도 있는 바, 3개 계산 장치 그룹 중 적어도 두개 이상의 계산 장치 그룹이 서로 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 각각의 상기 계산 장치 그룹 내의 적어도 하나 이상의 계산 장치가 다른 상기 계산 장치 그룹의 적어도 하나 이상의 계산 장치에 연결된다. 다시 말하면, cluster1의 계산 장치마다 제2 장치 그룹에 연결할 수 있으며 cluster1의 적어도 하나 이상의 계산 장치가 cluster2의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 복수의 계산 장치 그룹들은 상기 복수의 계산 장치 그룹 내의 임의의 한 계산 장치를 통해 서로 연결된다. 즉, cluster1의 임의의 한 계산 장치가 cluster2의 임의의 계산 장치에 연결된다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 계산 장치 그룹들이 상호간에 연결되도록 구성함으로써 복수의 계산 장치 그룹 사이에 그룹간 통신이 가능한다. 상기 시스템은 그룹간 데이터 전송을 통해 저장 장치 인터페이스를 동시에 판독하는 계산 장치의 개수를 줄이고, 메모리 엑세스에 따른 에너지 오버헤드를 감소시킬 수 있다. 동시에, 동일한 칩 위에 설치된 복수의 계산 장치 그룹 사이는 다양한 연결 방식으로 그룹간 통신을 구현하므로 복수의 계산 장치 사이에 여러 갈래의 통신 채널을 구축함으로써 현재의 네트워크 정체 상황에 따라 가장 바람직한 채널을 선택하여 데이터를 전송할 수 있어 에너지 소모를 줄이고 데이터의 처리 효율을 향상시키는 효과에 도달하였다.
일 실시예에서, 네트워크 온칩 처리 시스템이 제공된다. 상기 시스템은 저장 장치 및 복수의 계산 장치 그룹을 포함하고, 상기 저장 장치 및 복수의 상기 계산 장치 그룹은 동일한 칩 위에 설치되며, 각각의 계산 장치 그룹마다 복수의 계산 장치를 포함하고, 상기 복수의 계산 장치 그룹 중 적어도 하나 이상의 계산 장치 그룹은 상기 저장 장치에 연결되고, 상기 복수의 계산 장치 그룹은 상호간에 서로 연결된다.
도 6에 도시된 바와 같이, 도 6은 일 실시예에 따른 네트워크 온칩 처리 시스템(1600)이다. 네트워크 온칩 처리 시스템(1600)은 저장 장치(1601) 및 6개 계산 장치(계산 장치(1602) 내지 계산 장치(1607))를 포함하고, 저장 장치(1601) 및 6개 계산 장치(계산 장치(1602) 내지 계산 장치(1607))는 네트워크 온칩 처리 시스템(1600)의 동일한 칩 위에 설치된다. 예를 들어, 6개 계산 장치를 세 그룹으로 나눌 수 있으며, 계산 장치(1602) 및 계산 장치(1603)는 제1 계산 장치 그룹(cluster1)에 속하고, 계산 장치(1604) 및 계산 장치(1605)는 제2 계산 장치 그룹(cluster2)에 속하며, 계산 장치(1606) 및 계산 장치(1607)는 제3 계산 장치 그룹(cluster3)에 속한다. 여기서 cluster1, cluster2 및 cluster3은 모두 저장 장치(1601)에 연결되고, cluster1과 cluster2는 서로 연결되고, cluster2와 cluster3은 서로 연결된다. 계산 장치(1602) 내지 계산 장치(1607)는 모두 저장 장치(1601)에 연결되고, cluster1의 계산 장치(1603)와 cluster2의 계산 장치(1604)는 서로 연결되고, cluster2의 계산 장치(1604)와 cluster3의 계산 장치(1607)는 서로 연결된다.
구체적으로, cluster3이 데이터를 판독하고자 할 때, cluster2가 저장 장치(1601)에 액세스하여 저장 장치(1601)로부터 cluster3에 필요한 데이터를 판독한 후 cluster3로 송신할 수 있다. 또한 cluster1이 저장 장치(1601)에 액세스하여 저장 장치(1601)로부터 cluster3에 필요한 데이터를 판독한 후 상기 데이터를 cluster2로 송신하고 다시 cluster2에서 cluster3로 송신할 수 있다. 여기서, 복수의 계산 장치는 복수의 그룹으로 나눌 수 있으며, 각 그룹의 계산 장치의 개수는 특별히 제한되지 않는다, 예를 들어, 하나의 그룹에 4개의 계산 장치를 포함한다.
대안적으로, 복수의 계산 장치 중 모든 계산 장치가 저장 장치(1601)에 연결될 필요없으며, 두 계산 장치 그룹 중 적어도 하나 이상의 계산 장치 그룹만 저장 장치(1601)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1의 각 계산 장치는 모두 제2 유닛 그룹 및/또는 cluster3에 연결될 수 있으며 cluster1의 적어도 하나 이상의 계산 장치가 cluster2 및/또는 cluster3의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1의 임의의 한 계산 장치는 cluster2 및/또는 cluster3의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 계산 장치 그룹들이 상호간에 연결되도록 구성함으로써 임의의 한 계산 장치 그룹에 필요한 데이터가 모두 복수의 계산 장치 그룹 사이에서 전송 가능하므로 상기 시스템은 저장 장치 인터페이스를 동시에 판독하는 계산 장치를 줄이고 대역폭의 막힘을 감소시킬 수 있다.
일 실시예에서, 네트워크 온칩 처리 시스템이 제공된다. 상기 시스템은 저장 장치 및 복수의 계산 장치 그룹을 포함하고, 상기 저장 장치 및 복수의 상기 계산 장치 그룹은 동일한 칩 위에 설치되며, 각각의 계산 장치 그룹마다 복수의 계산 장치를 포함하고, 상기 복수의 계산 장치 그룹에서 적어도 하나 이상의 계산 장치 그룹은 상기 저장 장치에 연결되고, 상기 복수의 계산 장치 그룹 중 임의의 두 계산 장치 그룹은 직접적으로 연결된다.
도 7에 도시된 바와 같이, 도 7은 일 실시예에 따른 네트워크 온칩 처리 시스템(1700)이다. 네트워크 온칩 처리 시스템(1700)은 저장 장치(1701) 및 6개 계산 장치(계산 장치(1702) 내지 계산 장치(1707))를 포함하고, 저장 장치(1701) 및 6개 계산 장치(계산 장치(1702) 내지 계산 장치(1707))는 네트워크 온칩 처리 시스템(1700)의 동일한 칩 위에 설치되고, 6개 계산 장치는 세 그룹으로 나뉘고, 계산 장치(1702) 및 계산 장치(1703)는 제1 계산 장치 그룹(cluster1)에 속하고, 계산 장치(1704) 및 계산 장치(1705)는 제2 계산 장치 그룹(cluster2)에 속하며, 계산 장치(1706) 및 계산 장치(1707)는 제3 계산 장치 그룹(cluster3)에 속한다. 여기서, cluster1, cluster2 및 cluster3은 모두 저장 장치(1701)에 연결되고, cluster1, cluster2 및 cluster3의 3개 계산 장치 그룹은 상호간에 서로 연결된다. 계산 장치(1702) 내지 계산 장치(1707)는 모두 저장 장치(1701)에 연결되고, cluster1의 계산 장치(1703)와 cluster2의 계산 장치(1704)는 서로 연결되며, cluster2의 계산 장치(1704)와 cluster3의 계산 장치(1707)는 서로 연결되며, cluster1의 계산 장치(1702)와 cluster3의 계산 장치(1706)는 서로 연결된다.
구체적으로, cluster3이 데이터를 판독하고자 할 때, cluster2가 저장 장치(1701)에 액세스하여 저장 장치(1701)로부터 cluster3에 필요한 데이터를 판독한 후 cluster2에서 cluster3으로 송신할 수 있다. 또한 cluster1이 저장 장치(1701)에 액세스하여 저장 장치(1701)로부터 cluster3에 필요한 데이터를 판독한 후 상기 데이터를 cluster1에서 cluster3으로 직접 송신할 수 있다. 복수의 계산 장치는 복수의 그룹으로 나눌 수 있으며 각 그룹의 계산 장치의 개수는 특별히 제한되지 않는다. 하나의 그룹에 4개 계산 장치를 포함하는 것이 바람직하다.
복수의 계산 장치에서 모든 계산 장치가 저장 장치(1701)에 연결될 필요없으며, 두 계산 장치 그룹에서 적어도 하나 이상의 계산 장치 그룹이 저장 장치(1701)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1의 각각의 계산 장치마다 제2 유닛 그룹 및/또는 cluster3에 연결될 수 있고 cluster1의 적어도 하나 이상의 계산 장치가 cluster2 및/또는 cluster3의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1의 임의의 한 계산 장치는 cluster2 및/또는 cluster3의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 계산 장치 그룹이 상호간에 직접적으로 연결되도록 구성되므로 데이터의 판독/기록 효율을 향상시킬 수 있다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 제공한다. 상기 시스템은 저장 장치 및 복수의 계산 장치 그룹을 포함하고, 상기 저장 장치 및 복수의 상기 계산 장치 그룹은 동일한 칩 위에 설치되며, 각각의 계산 장치 그룹마다 복수의 계산 장치를 포함하고, 상기 복수의 계산 장치 그룹 중 적어도 하나 이상의 계산 장치 그룹은 상기 저장 장치에 연결되고, 적어도 두개 이상의 계산 장치 그룹은 상호간에 연결되며, 각각의 상기 계산 장치 그룹의 복수의 계산 장치는 상호간에 연결된다.
도 8에 도시된 바와 같이, 도 8은 일 실시예에 따른 네트워크 온칩 처리 시스템(1800)이다. 네트워크 온칩 처리 시스템(1800)은 저장 장치(1801) 및 6개 계산 장치(계산 장치(1802) 내지 계산 장치(1807))를 포함하고, 저장 장치(1801) 및 6개 계산 장치(계산 장치(1802) 내지 계산 장치(1807))는 네트워크 온칩 처리 시스템(1800)의 동일한 칩 위에 설치되며, 6개 계산 장치는 두 그룹으로 나뉘고, 계산 장치(1802), 계산 장치(1803) 및 계산 장치(1804)는 제1 계산 장치 그룹(cluster1)에 속하고, 계산 장치(1805), 계산 장치(1806) 및 계산 장치(1807)는 제2 계산 장치 그룹(cluster2)에 속한다. cluster1 및 cluster2는 모두 저장 장치(1801)에 연결되고, cluster1 및 cluster2는 서로 연결되고, cluster1 내의 3개 계산 장치는 상호간에 연결되며 cluster2 내의 3개 계산 장치는 상호간에 연결된다. 계산 장치(1802) 내지 계산 장치(1807)는 모두 저장 장치(1801)에 연결되며, cluster1의 계산 장치(1802)와 cluster2의 계산 장치(1805)는 서로 연결되고, 계산 장치(1803)는 계산 장치(1802) 및 계산 장치(1804)에 연결되고, 계산 장치(1806)는 계산 장치(1805) 및 계산 장치(1807)에 연결된다. 여기서, 각 계산 장치 그룹의 복수의 계산 장치 사이의 연결 방식은 네트워크 온칩 처리 시스템(1100) 내지 네트워크 온칩 처리 시스템(1400)의 연결 방식을 참고할 수 있다. 여기서 중복 설명하지 않는다.
구체적으로, cluster2가 데이터를 판독하고자 할 때, 저장 장치(1801)에 직접 액세스할 수 있다. 또한 cluster1가 저장 장치(1801)에 액세스하여 저장 장치(1801)로부터 cluster2에 필요한 데이터를 판독한 후 상기 데이터를 cluster2로 송신할 수 있다. 이와 동시에, 제2 계산 장치도 그룹 내에서 데이터를 전송할 수 있다. cluster2가 데이터를 판독하고자 할 때, cluster2의 계산 장치(1805), 계산 장치(1806) 및 계산 장치(1807)가 동시에 저장 장치(1801)에 액세스할 수 있다. 여기서 계산 장치(1805), 계산 장치(1806) 및 계산 장치(1807)는 cluster2에 필요한 일부 데이터를 각각 판독하는데, 이러한 데이터는 cluster2 내에서 전송가능하다. 복수의 계산 장치는 복수의 그룹으로 나눌 수 있으며 각 그룹의 계산 장치의 개수는 특별히 제한되지 않는다. 하나의 그룹에 4개 계산 장치를 포함하는 것이 바람직하다.
대안적으로, 복수의 계산 장치 중 모든 계산 장치가 저장 장치(1801)에 연결될 필요없으며, 두개 계산 장치 그룹 중 적어도 하나 이상의 계산 장치 그룹이 저장 장치(1801)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1의 각각의 계산 장치가 모두 제2 유닛 그룹에 연결될 수 있으며, cluster1의 적어도 하나 이상의 계산 장치가 cluster2의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, cluster1의 임의의 한 계산 장치가 cluster2의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 계산 장치 그룹이 상호간에 연결되도록 구성하는 동시에 각각의 계산 장치 그룹의 복수의 계산 장치가 상호간에 연결되도록 구성함으로써 복수의 계산 장치 사이에 그룹 내 통신뿐만 아니라 그룹간 통신이 가능하게 된다. 그러므로 상기 시스템은 메모리 액세스에 따른 에너지 오버헤드를 줄이고 데이터의 판독 효율을 향상시킬 수 있다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 더 제공한다. 상기 시스템은 서로 연결된 복수의 네트워크 온칩 처리 모듈을 포함하고, 상기 복수의 네트워크 온칩 처리 모듈은 동일한 칩 위에 설치되며, 각각의 네트워크 온칩 처리 모듈은 적어도 하나 이상의 저장 장치 및 복수의 계산 장치를 포함하되, 각각의 네트워크 온칩 처리 모듈에서 적어도 하나 이상의 계산 장치가 상기 네트워크 처리 모듈 내부의 적어도 하나 이상의 저장 장치에 연결되고, 상기 복수의 계산 장치 중 적어도 두개 이상의 계산 장치는 상호간에 연결되어 있다.
일 실시예에서, 신경망 칩이 제공된다. 상기 칩은 서로 연결된 복수의 네트워크 온칩 처리 모듈을 포함하고, 각각의 네트워크 온칩 처리 모듈은 적어도 하나 이상의 저장 장치, 복수의 계산 장치, 제1 인터커넥트 장치 및 제2 인터커넥트 장치를 포함하고, 각각의 네트워크 온칩 처리 모듈에서 적어도 하나 이상의 계산 장치와 상기 네트워크 온칩 처리 모듈 내부의 적어도 하나 이상의 저장 장치가 상기 제1 인터커넥트 장치를 통해 연결되며, 상기 복수의 계산 장치가 상기 제2 인터커넥트 장치를 통해 상호간에 연결된다. 더 나아가, 계산 장치는 제1 인터커넥트 장치를 통해 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치에 대한 판독/기록 동작을 구현하고, 복수의 계산 장치는 또한 제2 인터커넥트 장치를 통해 데이터를 전송할 수 있다.
도 9에 도시된 바와 같이, 도 9는 일 실시예에 따른 네트워크 온칩 처리 시스템(1900)이다. 네트워크 온칩 처리 시스템(1900)은 서로 연결된 4개 네트워크 온칩 처리 모듈을 포함하고, 상기 4개 네트워크 온칩 처리 모듈은 네트워크 온칩 처리 시스템(1900)의 동일한 칩 위에 설치되고, 각각의 네트워크 온칩 처리 모듈은 하나의 저장 장치(1901) 및 4개 계산 장치(계산 장치(1902) 내지 계산 장치(1905))를 포함한다. 여기서, 각각의 네트워크 온칩 처리 모듈에서 계산 장치(1902)는 해당 네트워크 온칩 처리 모듈 내부의 저장 장치(1901)에 연결되며, 각각의 네트워크 온칩 처리 모듈 내부의 4개 계산 장치는 상호간에 연결되어 있다.
구체적으로, 각각의 네트워크 온칩 처리 모듈이 처리해야 하는 데이터는 모두 상기 네트워크 온칩 처리 모듈 내부의 저장 장치에 저장되어 있다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치는 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치에만 액세스할 수 있고 단지 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치로부터 데이터를 판독/기록할 수 있다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 저장 장치의 개수는 하나에 제한되지 않으며, 2개, 3개 또는 복수 개일 수 있다. 여기서 이에 대해 특별히 한정하지 않으나 4개가 바람직하다. 대안적으로, 각각의 네트워크 온칩 처리 모듈에서 상기 복수의 계산 장치는 서로 연결되어 계산 장치 네트워크를 구성하고, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치 사이의 연결 방식은 네트워크 온칩 처리 시스템(1100) 내지 네트워크 온칩 처리 시스템(1400)의 연결 방식을 참고할 수 있다. 이에 대해 중복 설명하지 않는다. 대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치가 모두 저장 장치(1901)에 연결될 필요없으며, 각각의 네트워크 온칩 처리 모듈 중 적어도 하나 이상의 계산 장치가 저장 장치(1901)에 연결되기만 하면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치마다 다른 네트워크 온칩 처리 모듈에 연결될 수 있으며, 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치가 다른 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치에 연결되기만 하면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 복수의 네트워크 온칩 처리 모듈은 각각의 네트워크 온칩 처리 모듈 중 임의의 한 계산 장치를 통해 서로 연결된다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 중 임의의 한 계산 장치가 다른 한 네트워크 온칩 처리 모듈의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 네트워크 온칩 처리 모듈이 상호간에 연결되도록 구성하는 동시에, 각각의 네트워크 온칩 처리 모듈의 복수의 계산 장치가 상호간에 연결되도록 구성함으로써 복수의 계산 장치 간에 모듈 내 통신뿐만 아니라 모듈간 통신이 가능하게 되어 메모리 엑세스에 따른 에너지 오버헤드를 줄이고 데이터의 판독 효율을 향상시킬 수 있다. 동시에, 동일한 칩 위에 설치된 복수의 네트워크 온칩 처리 모듈 사이는 다양한 연결 방식으로 모듈간 통신을 구현하므로 복수의 계산 장치 사이에 여러 갈래의 통신 채널을 구축하여 현재의 네트워크 정체 상황에 따라 가장 바람직한 채널을 선택하여 데이터를 전송함으로써 에너지를 절약하고 데이터의 처리 효율을 향상시키는 효과를 달성한다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 제공한다. 상기 시스템은 서로 연결된 복수의 네트워크 온칩 처리 모듈을 포함하고, 상기 복수의 네트워크 온칩 처리 모듈은 동일한 칩 위에 설치되며, 각각의 네트워크 온칩 처리 모듈은 복수의 저장 장치를 포함하고, 상기 네트워크 온칩 처리 모듈에서 적어도 하나 이상의 계산 장치는 상기 네트워크 온칩 처리 모듈 내부의 상기 복수의 저장 장치에 연결되고, 상기 복수의 계산 장치 중 적어도 두개 이상의 계산 장치는 상호간에 연결되어 있다.
도 10a에 도시된 바와 같이, 도 10a은 일 실시예에 따른 네트워크 온칩 처리 시스템(1910)이다. 네트워크 온칩 처리 시스템(1910)은 서로 연결된 4개 네트워크 온칩 처리 모듈을 포함하고, 상기 4개 네트워크 온칩 처리 모듈은 네트워크 온칩 처리 시스템(1910)의 동일한 칩 위에 설치되며, 각각의 네트워크 온칩 처리 모듈은, 저장 장치(1911), 저장 장치(1916), 및 4개 계산 장치(계산 장치(1912) 내지 계산 장치(1915))를 포함하되, 각각의 네트워크 온칩 처리 모듈에서 계산 장치(1912)는 그 네트워크 온칩 처리 모듈 내부의 저장 장치(1911) 및 저장 장치(1916)에 연결되고, 각각의 네트워크 온칩 처리 모듈 내부의 4개 계산 장치 들은 서로 연결되어 있다.
구체적으로, 각각의 네트워크 온칩 처리 모듈이 처리해야 하는 데이터는 모두 상기 네트워크 온칩 처리 모듈 내부의 저장 장치에 저장되어 있다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치는 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치에만 액세스할 수 있으므로 오직 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치로부터 데이터를 판독/기록할 수 있다. 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치는 상기 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 연결된다. 다시 말해서, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치가 상기 네트워크 온칩 처리 모듈 내의 모든 저장 장치를 액세스할 수 있다. 여기서, 각각의 네트워크 온칩 처리 모듈 내의 저장 장치의 개수는 2개에 제한되지 않으며, 3개, 4개 또는 복수 개일 수 있다. 여기서 이에 대해 특별히 한정하지 않으나 4개가 바람직하다. 그러므로 차지하는 공간을 절약하는 동시에 데이터를 효율적으로 처리할 수 있다.
구체적으로, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치는 인접되어 있는 저장 장치에 우선적으로 액세스한다. 여기서, 인접되어 있는 저장 장치는 계산 장치와 연결된 복수의 저장 장치 중 통신 거리가 가장 짧은 저장 장치를 가리킨다. 다시 말하면, 통신 거리가 가장 짧은 저장 장치는 다른 저장 장치보다 액세스 우선순위가 높다.
대안적으로, 각각의 네트워크 온칩 처리 모듈에서 상기 복수의 계산 장치는 상호간에 연결되어 계산 장치 네트워크를 구성하고, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치 사이의 연결 방식은 네트워크 온칩 처리 시스템(1100) 내지 네트워크 온칩 처리 시스템(1400)의 연결 방식을 참고할 수 있다. 여기서 중복 설명하지 않는다. 대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치에서 모든 계산 장치가 저장 장치(1911)에 연결될 필요없으며, 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치가 저장 장치(1911)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치마다 모두 다른 한 네트워크 온칩 처리 모듈에 연결될 수 있으며, 각각의 네트워크 온칩 처리 모듈의 적어도 하나 이상의 계산 장치가 다른 한 네트워크 온칩 처리 모듈의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 복수의 네트워크 온칩 처리 모듈 사이는 각각의 네트워크 온칩 처리 모듈 중 임의의 한 계산 장치를 통해 서로 연결된다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 중 임의의 한 계산 장치는 다른 한 네트워크 온칩 처리 모듈의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 각각의 계산 장치가 소속된 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 액세스하여 데이터를 전송하도록 여러 갈래의 통신 채널을 제공할 수 있음으로써 데이터의 판독/기록 효율을 향상시킬 수 있다. 그리고, 상기 시스템의 각각의 계산 장치가 인접되어 있는 저장 장치를 우선적으로 액세스하므로 메모리 액세스에 따른 오버헤드를 감소시키는 동시에 일정한 유연성을 보장할 수 있다.
일 실시예에서, 도 10b에 도시된 네트워크 온칩 처리 시스템(19100)은, 각각의 네트워크 온칩 처리 모듈이 처리해야 하는 데이터를 모두 상기 네트워크 온칩 처리 모듈 내부의 저장 장치에 저장한다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치는 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치에만 액세스할 수 있어 오직 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치로부터 데이터를 판독/기록할 수 있다. 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치는 상기 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 연결되도록 구성되어 있다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치가 해당 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 액세스할 수 있다. 여기서, 각각의 네트워크 온칩 처리 모듈 내의 저장 장치의 개수는 2개에 제한되지 않으며, 3개, 4개 또는 복수 개일 수 있다. 여기서 이에 대해 특별히 한정하지 않으나 4개가 바람직하다.
구체적으로, 각각의 네트워크 온칩 처리 모듈에서, 각각의 계산 장치는 제1 통신 거리에 있는 저장 장치에 연결된다. 여기서 제1 통신 거리는 가장 짧은 통신 거리를 가리킨다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치는 인접되어 있는 저장 장치에만 액세스할 수 있다. 즉 각각의 네트워크 온칩 처리 모듈 내의 계산 장치는 그와 통신 거리가 가장 짧은 저장 장치에만 액세스할 수 있다. 예를 들어, 계산 장치(19120)는 인접되어 있는 저장 장치(19110)에만 액세스할 수 있으며, 저장 장치(19160)에 액세스할 수 없다. 계산 장치(19130)는 인접되어 있는 저장 장치(19160)에만 액세스할 수 있으며 저장 장치(19110)에 액세스할 수 없다. 계산 장치(19120)가 판독하고자 하는 데이터가 저장 장치(19160)에 저장되어 있는 경우, 우선 계산 장치(19130)를 통해 저장 장치(19160)로부터 상기 데이터를 판독한 후 상기 데이터를 계산 장치(19120)에 전송한다.
대안적으로, 각각의 네트워크 온칩 처리 모듈에서 상기 복수의 계산 장치는 서로 연결되어 계산 장치 네트워크를 구성하고, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치 사이의 연결 방식은 네트워크 온칩 처리 시스템(1100) 내지 네트워크 온칩 처리 시스템(1400)의 연결 방식을 참고할 수 있다. 여기서 중복 설명하지 않는다. 대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치는 모두 저장 장치(19110)에 연결될 필요없으며, 각각의 네트워크 온칩 처리 모듈 중 적어도 하나 이상의 계산 장치가 저장 장치(19110)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 각 계산 장치는 다른 한 네트워크 온칩 처리 모듈에 연결되도록 구성할 수 있으며, 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치가 다른 한 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 복수의 네트워크 온칩 처리 모듈은 각각의 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치를 통해 서로 연결된다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치는 다른 한 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 각각의 계산 장치가 소속된 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 액세스하여 데이터를 전송하도록 여러 갈래의 통신 채널을 제공할 수 있음으로써 데이터의 판독/기록 효율을 향상시킬 수 있다. 상기 시스템은 각 계산 장치가 인접되어 있는 저장 장치에만 액세스할 수 있어 메모리 액세스에 따른 오버헤드를 최대로 줄일 수 있다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 제공한다. 상기 시스템은, 직접 연결된 임의의 두 네트워크 온칩 처리 모듈을 포함하고, 임의의 두 네트워크 처리 모듈이 동일한 칩 위에 설치되고, 각각의 네트워크 온칩 처리 모듈은 적어도 하나 이상의 저장 장치 및 복수의 계산 장치를 포함하고, 각각의 네트워크 온칩 처리 모듈에서 적어도 하나 이상의 계산 장치가 상기 네트워크 처리 모듈 내부의 적어도 하나 이상의 저장 장치에 연결되며, 상기 복수의 계산 장치 중 적어도 두개 이상의 계산 장치가 서로 연결된다.
도 11에 도시된 바와 같이, 도 11은 일 실시예에 따른 네트워크 온칩 처리 시스템(1920)이다. 네트워크 온칩 처리 시스템(1920)은 서로 연결된 4개 네트워크 온칩 처리 모듈을 포함하고, 상기 4개 네트워크 온칩 처리 모듈은 네트워크 온칩 처리 시스템(1920)의 동일한 칩 위에 설치되고, 상기 4개 네트워크 온칩 처리 모듈 중 임의의 두 네트워크 온칩 처리 모듈은 상호간에 직접적으로 연결되며, 각각의 네트워크 온칩 처리 모듈은 하나의 저장 장치(1921) 및 4개 계산 장치(계산 장치(1922) 내지 계산 장치(1925))를 포함한다. 여기서, 각각의 네트워크 온칩 처리 모듈에서 계산 장치(1922)는 그 네트워크 온칩 처리 모듈 내부의 저장 장치(1921)에 연결되며, 각각의 네트워크 온칩 처리 모듈 내부의 4개 계산 장치는 서로 연결되어 있다.
구체적으로, 각각의 네트워크 온칩 처리 모듈이 처리해야 하는 데이터는 모두 상기 네트워크 온칩 처리 모듈 내부의 저장 장치에 저장되어 있다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치는 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치에만 액세스할 수 있고 오직 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치로부터 데이터를 판독/기록할 수 있다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 저장 장치의 개수는 하나에 제한되지 않으며, 2개, 3개 또는 복수 개일 수 있다. 여기서 이에 대해 특별히 한정하지 않으나 4개가 바람직하다. 대안적으로, 각각의 네트워크 온칩 처리 모듈에서 상기 복수의 계산 장치는 서로 연결되어 계산 장치 네트워크를 구성하고, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치 사이의 연결 방식은 네트워크 온칩 처리 시스템(1100) 내지 네트워크 온칩 처리 시스템(1400)의 연결 방식을 참고할 수 있다. 여기서 중복 설명하지 않는다. 대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치는 모두 저장 장치(1921)에 연결될 필요없으며, 각각의 네트워크 온칩 처리 모듈 중 적어도 하나 이상의 계산 장치가 저장 장치(1921)에 연결되기만 하면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 각각의 계산 장치는 다른 한 네트워크 온칩 처리 모듈에 연결되도록 구성할 수 있으며, 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치가 다른 한 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 복수의 네트워크 온칩 처리 모듈은 각각의 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치를 통해 서로 연결된다. 즉, 각각의 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치는 다른 한 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서, 동일한 칩 위에 설치된 복수의 네트워크 온칩 처리 모듈들이 상호간에 연결되도록 구성하는 동시에, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치들이 상호간에 연결되도록 구성함으로써 복수의 계산 장치 사이에 모듈 내 통신이 가능한 동시에 임의의 두 네트워크 온칩 처리 모듈 사이에 모듈간 직접적인 통신이 가능하게 되어 상기 시스템은 저장 장치 인터페이스를 동시에 판독하는 계산 장치를 줄이고 대역폭의 막힘을 감소시킬 수 있으며 모듈 간의 데이터 전송에 의해 데이터의 판독/기록 효율을 향상시킬 수 있다.
일 실시예에서, 본 출원은 네트워크 온칩 처리 시스템을 제공한다. 상기 시스템은, 직접적으로 연결된 임의의 두 네트워크 온칩 처리 모듈을 포함하고, 임의의 두 네트워크 처리 모듈이 동일한 칩 위에 설치되고, 각각의 네트워크 온칩 처리 모듈은 복수의 저장 장치를 포함하고, 상기 네트워크 온칩 처리 모듈에서 적어도 하나 이상의 계산 장치가 상기 네트워크 처리 모듈 내부의 상기 복수의 저장 장치에 연결되며, 상기 복수의 계산 장치 중 적어도 두개 이상의 계산 장치가 서로 연결되어 있다.
도 12에 도시된 바와 같이, 도 12는 일 실시예에 따른 네트워크 온칩 처리 시스템(1930)이다. 네트워크 온칩 처리 시스템(1930)은 서로 연결된 4개 네트워크 온칩 처리 모듈을 포함하고, 상기 4개 네트워크 온칩 처리 모듈은 네트워크 온칩 처리 시스템(1920)의 동일한 칩 위에 설치되며, 상기 4개 네트워크 온칩 처리 모듈 내의 임의의 두 네트워크 온칩 처리 모듈은 상호간에 직접적으로 연결되고, 각각의 네트워크 온칩 처리 모듈은 저장 장치(1931), 저장 장치(1936) 및 4개 계산 장치(계산 장치(1932) 내지 계산 장치(1935))를 포함한다. 각각의 네트워크 온칩 처리 모듈에서 계산 장치(1932)는 해당 네트워크 온칩 처리 모듈 내부의 저장 장치(1931) 및 저장 장치(1936)에 연결되고, 각각의 네트워크 온칩 처리 모듈 내부의 4개 계산 장치는 상호간에 연결되어 있다.
구체적으로, 각각의 네트워크 온칩 처리 모듈이 처리해야 하는 데이터는 모두 상기 네트워크 온칩 처리 모듈 내부의 저장 장치에 저장되어 있다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치는 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치에만 액세스할 수 있어 오직 소속된 네트워크 온칩 처리 모듈 내부의 저장 장치로부터 데이터를 판독/기록할 수 있다. 각각의 네트워크 온칩 처리 모듈 내의 계산 장치는 인접되어 있는 저장 장치를 우선적으로 액세스한다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 저장 장치의 개수는 두개에 제한되지 않으며, 3개, 4개 또는 복수 개일 수 있다. 여기서 이에 대해 특별히 한정하지 않으나 4개가 바람직하다. 구체적으로, 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치는 상기 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 연결되도록 구성된다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치는 상기 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 액세스할 수 있다.
대안적으로, 각각의 네트워크 온칩 처리 모듈에서 상기 복수의 계산 장치는 상호간에 연결되어 계산 장치 네트워크를 구성하고, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치 사이의 연결 방식은 네트워크 온칩 처리 시스템(1100) 내지 네트워크 온칩 처리 시스템(1400)의 연결 방식을 참고할 수 있다. 여기서 중복 설명하지 않는다. 대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 복수의 계산 장치에서 모든 계산 장치가 저장 장치(1931)에 연결될 필요없으며, 각각의 네트워크 온칩 처리 모듈 중 적어도 하나 이상의 계산 장치가 저장 장치(1931)에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다.
대안적으로, 각각의 네트워크 온칩 처리 모듈 내의 계산 장치마다 다른 한 네트워크 온칩 처리 모듈에 연결될 수 있으며, 각각의 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치가 다른 한 네트워크 온칩 처리 모듈 내의 적어도 하나 이상의 계산 장치에 연결되면 된다. 여기서 이에 대해 특별히 한정하지 않는다. 대안적으로, 상기 복수의 네트워크 온칩 처리 모듈들은 각각의 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치를 통해 서로 연결된다. 다시 말하면, 각각의 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치는 다른 네트워크 온칩 처리 모듈 내의 임의의 한 계산 장치에 연결될 수 있다. 여기서 이에 대해 특별히 한정하지 않는다.
상기 네트워크 온칩 처리 시스템에서 각각의 계산 장치는 소속된 네트워크 온칩 처리 모듈 내의 모든 저장 장치에 액세스할 수 있는 동시에 임의의 두 네트워크 온칩 처리 모듈은 모듈간의 직접적인 통신이 가능하게 된다. 그러므로 상기 시스템은 데이터를 전송하도록 여러 갈래의 통신 채널을 제공할 수 있음으로써 데이터의 판독/기록 효율을 향상시킬 수 있다. 상기 시스템 중 각각의 계산 장치는 인접되어 있는 저장 장치를 우선적으로 액세스하므로 메모리 엑스에 따른 오버헤드를 절약할 수 있는 동시에 일정한 유연성을 보장할 수 있다.
일 실시예에서, 도 13에 도시된 바와 같이, 도 13에 도시된 네트워크 온칩 처리 시스템의 계산 장치는 기계 학습 계산을 수행하도록 구성되고, 상기 계산 장치는 컨트롤러 유닛(11) 및 연산 유닛(12)을 포함하고, 컨트롤러 유닛(11)과 연산 유닛(12)이 연결되어 있고, 상기 연산 유닛(11)은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다.
컨트롤러 유닛(11)은 입력 데이터 및 계산 명령을 획득하는데 사용된다. 하나의 선택 가능한 방안에서, 입력 데이터 및 계산 명령의 획득은 데이터 입출력 유닛을 통해 구체적으로 구현할 수 있으며 상기 데이터 입출력 유닛은 구체적으로 하나 또는 복수의 데이터 I/O 인터페이스 또는 I/O 핀일 수 있다.
상기 계산 명령은 정방향 연산 명령 또는 역방향 훈련 명령; 또는 컨볼루션 연산 명령과 같은 다른 신경망 연산 명령 등을 포함하나 이에 한정되지 않는다. 본 출원의 구체적인 실시형태는 상기 계산 명령의 구체적인 표현형식을 제한하지 않는다.
구체적으로, 컨트롤러 유닛(11)은 추가로 상기 계산 명령을 분석하여 복수의 연산 명령을 얻도록 구성되며, 상기 복수의 연산 명령 및 상기 입력 데이터를 상기 마스트 처리회로로 송신한다.
상기 연산 유닛(12)은 하나의 마스트 처리회로(101) 및 복수의 슬레이브 처리회로(102)를 포함한다. 여기서, 마스트 처리회로(101)는 상기 입력 데이터에 대한 프리오더 처리를 수행하고, 상기 복수의 슬레이브 처리회로와 데이터 및 연산 명령을 전송하며;
상기 복수의 슬레이브 처리회로는 상기 마스트 처리회로에서 전송된 데이터 및 연산 명령에 따라 중간 연산을 병행 수행하여 복수의 중간 결과를 얻은 후 복수의 중간 결과를 상기 마스트 처리회로로 전송하며;
마스트 처리회로(101)는 상기 복수의 중간 결과에 대해 후속 처리를 진행하여 상기 계산 명령의 계산 결과를 얻는다.
본 출원에 제공된 기술적 방안은 연산 유닛을 one-master-multiple-slave 구조로 설치하고 정방향 연산하는 계산 명령에 따라 데이터를 분할한다. 이에 의해 복수의 슬레이브 처리회로를 통해 계산 량이 큰 부분에 대해 병행 연산을 수행함으로써, 연산 속도를 향상시키고 연산 시간을 절약하여 전력 소모를 낮출 수 있다.
대안적으로, 상기 계산 장치는 해당 저장 유닛(10) 및 직접 메모리 액세스 유닛(50)을 더 포함하고, 저장 유닛(10)은 레지스터, 캐시 중 하나 또는 임의의 조합을 포함할 수 있다. 구체적으로, 상기 캐시는 상기 계산 명령을 저장하고, 상기 레지스터는 상기 입력 데이터 및 스칼라를 저장하고 상기 캐시는 고속 임시 저장 캐시이다. 직접 메모리 액세스 유닛(50)은 저장 유닛(10)으로부터 데이터를 판독하거나 저장한다.
대안적으로, 상기 컨트롤러 유닛은 명령 저장 유닛(110), 명령 처리 유닛(111) 및 저장 큐 유닛(113)을 포함한다.
명령 저장 유닛(110)은 상기 인공 신경망과 관련있는 계산 명령을 저장하고,
상기 명령 처리 유닛(111)은 상기 계산 명령을 분석하여 복수의 연산 명령을 얻으며,
저장 큐 유닛(113)은 명령 큐를 저장하고, 상기 명령 큐는 상기 큐의 전후 순서에 따라 수행하고자 하는 복수의 연산 명령 및/또는 계산 명령을 포함한다.
예를 들어 설명하면, 하나의 선택 가능한 기술적 방안에서, 마스트 연산 처리회로는 하나의 컨트롤러 유닛을 더 포함할 수 있다. 상기 컨트롤러 유닛은 마스터 명령 처리 유닛을 포함할 수 있으며 구체적으로 명령을 마이크로 명령으로 디코딩하는데 사용된다. 다른 하나의 선택 가능한 기술적 방안에서, 슬레이브 연산 처리회로는 다른 하나의 컨트롤러 유닛을 더 포함할 수 있으며, 상기 다른 하나의 컨트롤러 유닛은 슬레이브 명령 처리 유닛을 포함하고, 구체적으로 마이크로 명령을 수신하고 처리하는데 사용된다. 상기 마이크로 명령은 명령의 다음 레벨 명령일 수 있다. 상기 마이크로 명령은 명령을 분할 또는 디코딩하여 얻을 수 있으며 각 부재, 각 유닛 또는 각 처리회로의 제어 신호로 추가 디코딩될 수 있다.
하나의 선택 가능한 방안에서, 상기 계산 명령의 구조는 표 1에 표시된 바와 같다.
표 1
위 표에서 생략 부호는 복수의 레지스터 또는 즉치값을 포함할 수 있음을 의미한다.
다른 하나의 선택 가능한 방안에서, 상기 계산 명령은 하나 또는 복수의 동작 도메인 및 하나의 동작 코드를 포함할 수 있다. 상기 계산 명령은 신경망 연산 명령을 포함할 수 있다. 신경망 연산 명령을 예로 들면, 표 2에 표시된 바와 같이, 레지스터 번호0, 레지스터 번호1, 레지스터 번호2, 레지스터 번호3, 레지스터 번호4는 동작 도메인일 수 있다. 여기서, 각각의 레지스터 번호0, 레지스터 번호1, 레지스터 번호2, 레지스터 번호3, 레지스터 번호4는 하나 또는 복수의 레지스터의 번호일 수 있다.
표 2
상기 레지스터는 오프칩 메모리일 수 있으며, 물론 실제 응용에서 온칩 메모리일 수도 있는데 데이터를 저장하는데 사용되며, 상기 데이터는 구체적으로 n 차원 데이터일 수 있으며, n은 1보다 크거나 같은 정수이다. 예를 들어, n=1일 때, 1차원 데이터이며, 즉 벡터이고; n=2일 때, 2차원 데이터이며, 즉 행렬이고; n=3 또는 3 이상일 때, 다차원 텐서(multidimensional tensor)이다.
대안적으로, 상기 컨트롤러 유닛은,
복수의 연산 명령이 있을 때, 제1 연산 명령과 상기 제1 연산 명령 이전의 제0 연산 명령이 연관 관계가 있는지 여부를 확정하며, 상기 제1 연산 명령과 상기 제0 연산 명령이 연관 관계가 있으면 상기 제1 연산 명령을 상기 명령 저장 유닛 내에 캐싱하고, 상기 제0 연산 명령을 수행한 후 상기 명령 저장 유닛으로부터 상기 제1 연산 명령을 추출하여 상기 연산 유닛으로 전송하는 의존 관계 처리 유닛(112)을 포함하고,
상기 제1 연산 명령과 제1 연산 명령 이전의 제0 연산 명령이 연관 관계가 있는지 여부를 확정하는 단계는,
상기 제1 연산 명령에 의해 상기 제1 연산 명령에 필요한 데이터(예를 들어 행렬)의 제1 저장 주소 구간을 추출하고, 상기 제0 연산 명령에 의해 상기 제0 연산 명령에 필요한 행렬의 제0 저장 주소 구간을 추출하되, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하면, 상기 제1 연산 명령과 상기 제0 연산 명령이 연관 관계가 있다고 판단하고, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하지 않으면, 상기 제1 연산 명령과 상기 제0 연산 명령이 연관 관계가 없다고 확정하는 단계를 포함한다.
다른 일 실시예에서, 도 14에 도시된 바와 같이, 연산 유닛(12)은 하나의 마스트 처리회로(101) 및 복수의 슬레이브 처리회로(102)를 포함할 수 있다. 일 실시예에서, 도 14에 도시된 바와 같이, 복수의 슬레이브 처리회로는 어레이 분포를 이루고, 각각의 슬레이브 처리회로는 인접되어 있는 다른 슬레이브 처리회로에 연결되고, 마스트 처리회로는 상기 복수의 슬레이브 처리회로 중 K개 슬레이브 처리회로에 연결되고, 상기 K개 슬레이브 처리회로는 제1 행의 n개 슬레이브 처리회로, 제m 행의 n개 슬레이브 처리회로 및 제1 열의 m개 슬레이브 처리회로이다. 유의할 것은, 도 14에 도시된 바와 같이, K개 슬레이브 처리회로는 단지 제1행의 n개 슬레이브 처리회로, 제m 행의 n개 슬레이브 처리회로 및 제1 열의 m개 슬레이브 처리회로를 포함한다. 즉 상기 K개 슬레이브 처리회로는 복수의 슬레이브 처리회로 중 마스트 처리회로에 직접적으로 연결된 슬레이브 처리회로이다.
K개 슬레이브 처리회로는 상기 마스트 처리회로와 복수의 슬레이브 처리회로 사이에서 데이터 및 명령을 포워딩한다.
대안적으로, 도 15에 도시된 바와 같이, 상기 마스트 처리회로는 변환 처리회로(110), 활성화 처리회로(111), 덧셈 처리회로(112) 중 하나 또는 임의의 조합을 포함하고,
변환 처리회로(110)는 마스트 처리회로가 수신한 데이터 블록 또는 중간 결과에 대해 제1 데이터구조와 제2 데이터구조 사이의 호환(예를 들어, 연속 데이터와 이산 데이터의 변환)을 진행하거나, 혹은 마스트 처리회로가 수신한 데이터 블록 또는 중간 결과에 대해 제1 데이터 유형과 제2 데이터 유형 사이의 호환(예를 들어, 고정-소수점 유형과 부동-소수점 유형의 변환)을 수행하며,
활성화 처리회로(111)는 마스트 처리회로 내의 데이터의 활성화 연산을 수행하며,
덧셈 처리회로(112)는 덧셈 연산 또는 누적 연산을 수행한다.
상기 마스트 처리회로는 상기 입력 뉴런을 브로드캐스트 데이터로, 가중치를 배부 데이터로 확정하고, 배부 데이터를 복수의 데이터 블록으로 배분하고, 상기 복수의 데이터 블록 중 적어도 하나 이상의 데이터 블록 및 복수의 연산 명령 중의 적어도 하나 이상의 연산 명령을 상기 슬레이브 처리회로로 송신하고,
상기 복수의 슬레이브 처리회로는 상기 연산 명령에 의해 이미 수신된 데이터 블록에 대해 연산하여 중간 결과를 얻으며, 연산 결과를 상기 마스트 처리회로에 전송하고,
상기 마스트 처리회로는 복수의 슬레이브 처리회로가 송신한 중간 결과를 처리하여 상기 계산 명령의 결과를 얻으며, 상기 계산 명령의 결과를 상기 컨트롤러 유닛으로 송신한다.
상기 슬레이브 처리회로는 곱셈 처리회로를 포함하고,
상기 곱셈 처리회로는 수신된 데이터 블록에 대해 곱셈 연산하여 곱셈 결과를 얻으며,
대안적으로, 슬레이브 처리회로는 포워딩 처리회로를 더 포함하고, 상기 포워딩 처리회로는 수신된 데이터 블록 또는 곱셈 결과를 포워딩한다.
대안적으로, 슬레이브 처리회로는 누적 처리회로를 더 포함하며, 상기 누적 처리회로는 상기 곱셈 결과에 대해 누적 연산하여 상기 중간 결과를 얻는다.
다른 일 실시예에서, 상기 연산 명령은 행렬에 행렬을 곱한 명령, 누적 명령, 활성화 명령 등 계산 명령이다.
이하, 신경망 연산 명령을 통해 도 1에 도시된 계산 장치의 구체적인 계산 방법을 설명한다. 신경망 연산 명령에 있어서, 실제 수행해야 하는 공식은:
하나의 선택 가능한 방안에서, 도 16에 도시된 바와 같이, 상기 연산 유닛은 트리 모듈(40)을 포함하고, 상기 트리 모듈은 하나의 루트 포트(401) 및 복수의 브랜치 포트(404)를 포함하고, 상기 트리 모듈의 루트 포트는 상기 마스트 처리회로에 연결되며, 상기 트리 모듈의 복수의 브랜치 포트는 복수의 슬레이브 처리회로 중 하나의 슬레이브 처리회로에 각각 연결되며,
상기 트리 모듈은 송수신 기능이 있으며, 예를 들어 도 16에 도시된 상기 트리 모듈은 송신 기능을 하고, 도 17에 도시된 상기 트리 모듈은 수신 기능을 한다.
상기 트리 모듈은 상기 마스트 처리회로와 상기 복수의 슬레이브 처리회로 사이에서 데이터 블록, 가중치 및 연산 명령을 포워딩한다.
대안적으로, 상기 트리 모듈은 계산 장치의 선택적 결과로서 적어도 1층의 노드를 포함하며, 상기 노드는 송신 기능이 있는 선형 구조이며, 상기 노드 자체는 계산 기능이 없을 수 있다. 트리 모듈이 0층의 노드를 가지면, 상기 트리 모듈은 필요없게 된다.
대안적으로, 상기 트리 모듈은 n-진수 트리 구조일 수 있는데, 예를 들어, 도 18에 도시된 2-진수 트리 구조이다. 하지만 3-진수 트리 구조도 가능하다. 상기 n은 2보다 크거나 같은 정수이다. 본 출원의 구체적인 실시예는 상기 n의 구체적인 값을 제한하지 않는다. 상기 층수도 2일 수 있으며, 슬레이브 처리회로는 밑에서 제2 층 노드 이외의 다른 층의 노드에 연결될 수 있다. 예를 들어 도 18에 도시된 밑에서 제1 층의 노드에 연결될 수 있다.
대안적으로, 상기 연산 유닛은 별도의 캐시를 가질 수 있는 바, 도 19에 도시된 바와 같이, 뉴런 캐시 유닛을 포함할 수 있다. 상기 뉴런 캐시 유닛(63)은 상기 슬레이브 처리회로의 입력 뉴런 벡터 데이터 및 출력 뉴런 값 데이터를 캐싱한다.
도 20에 도시된 바와 같이, 상기 연산 유닛은 상기 슬레이브 처리회로가 계산 과정에 필요한 가중치를 캐싱하는 가중치 캐시 유닛(64)을 포함한다.
하나의 선택 가능한 실시예에서, 도 21에 도시된 바와 같이, 연산 유닛(12)은 분기 처리회로(103)를 포함할 수 있으며 그 구체적인 연결구조는 도 21에 도시된 바와 같다.
여기서, 마스트 처리회로(101)는 분기 처리회로(103)(하나 또는 복수)에 연결되고, 분기 처리회로(103)는 하나 또는 복수의 슬레이브 처리회로(102)에 연결되며;
분기 처리회로(103)는 마스트 처리회로(101)와 슬레이브 처리회로(102) 사이에서 데이터 또는 명령을 포워딩한다.
본 출원은, 본 출원에 언급된 하나 또는 복수의 계산 장치를 포함하고 다른 처리 장치로부터 피연산 데이터 및 제어 정보를 획득하여 지정된 기계 학습 연산을 수행하고, I/O 인터페이스를 통해 수행 결과를 주변 장치에 전달하는 신경망 연산 장치를 추가 개시하였다. 주변 장치는 예를 들어 카메라, 표시장치, 마우스, 키보드, 네트워크 카드, wifi 인터페이스 및 서버이다. 적어도 하나 이상의 계산 장치를 포함할 때, 계산 장치는 특정 구조를 통해 연결되어 데이터를 전송한다. 예들 들어, PCIE 버스를 통해 인터커넥트되어 데이터를 전송하므로 더욱 큰 규모의 기계 학습 연산이 가능하다. 이때, 하나의 제어 시스템을 공유하거나 각자 독립적인 제어 시스템을 가질 수 있으며, 메모리를 공유하거나 가속기마다 자체 메모리를 가질 수 있다. 한편, 그 인터커넥트 방식은 임의의 인터커넥트 토폴로지일 수 있다.
상기 신경망 연산 장치는 높은 호환성을 가지므로 PCIE 인터페이스를 통해 다양한 유형의 서버와 연결할 수 있다.
본 출원은, 상기 신경망 연산 장치, 범용 인터케넥트 인터페이스 및 다른 처리 장치를 포함하는 통합 처리 장치를 추가 개시하였다. 신경망 연산 장치는 다른 처리 장치와 상호 작용하여 공동으로 사용자가 지정한 동작을 수행한다. 도 22는 통합 처리 장치의 개략도이다.
다른 처리 장치는 중앙 프로세서 CPU, 그래픽 프로세서 GPU, 신경망 프로세서 등 범용/전용 프로세서 중 1종 또는 1종 이상의 프로세서를 포함한다. 다른 처리 장치에 포함된 프로세서의 수는 제한되지 않는다. 다른 처리 장치는 신경망 연산 장치와 외부 데이터 및 제어 간의 인터페이스로서, 데이터 운반을 포함하고 본 신경망 연산 장치에 대한 개시, 정지 등 기본 제어를 수행한다. 다른 처리 장치는 또한 신경망 연산 장치와 협업하여 연산 임무를 공동으로 완성할 수 있다.
범용 인터케넥트 인터페이스는 상기 신경망 연산 장치와 다른 처리 장치 사이에서 데이터 및 제어 명령을 전송한다. 상기 신경망 연산 장치는 다른 처리 장치로부터 필요한 입력 데이터를 획득하여 신경망 연산 장치의 저장 장치에 기록하고, 다른 처리 장치로부터 제어 명령을 획득하여 신경망 연산 장치의 제어 캐시에 기록할 수 있으며, 신경망 연산 장치의 저장 모듈 내의 데이터를 판독하여 다른 처리 장치에 전송할 수도 있다.
대안적으로, 도 23에 도시된 바와 같이, 상기 구조는 상기 신경망 연산 장치 및 상기 다른 처리 장치에 각각 연결된 저장 장치를 더 포함할 수 있다. 저장 장치는 상기 신경망 연산 장치와 상기 다른 처리 장치의 데이터를 저장하고, 특히 연산이 필요한 데이터에서 해당 신경망 연산 장치 또는 다른 처리 장치의 내부 저장소에 모두 저장할 수 없는 데이터에 사용된다.
상기 통합 처리 장치는 모바일폰, 로봇, 드롬, 비디오 감시 장치 등 장치의 SOC온칩 시스템으로 사용될 수 있으며, 제어 부분의 핵심 면적을 효과적으로 줄이고 처리 속도를 높이고 전반적인 전력 소모를 줄일 수 있다. 이러한 상황에서, 상기 통합 처리 장치의 범용 인터케넥트 인터페이스는 장치의 일부 부재에 연결된다. 일부 부재는 예를 들어 카메라, 표시장치, 마우스, 키보드, 네트워크 카드, wifi 인터페이스와 같다.
일부 실시예에서, 본 출원은 상기 신경망 연산 장치 또는 통합 처리 장치를 포함한 칩을 더 제공한다.
일부 실시예에서, 본 출원은 상기 칩을 포함한 칩 패키지 구조를 더 제공한다.
일부 실시예에서, 본 출원은 상기 칩 패키지 구조를 포함한 보드 카드를 더 제공한다. 도 24를 참조하면, 도 24는 보드 카드를 제공한다. 상기 보드 카드는 상기 칩(389) 외에 다른 보조 부재를 더 포함할 수 있고, 상기 보조 부재는 메모리 장치(390), 인터페이스 장치(391) 및 컨트롤러 장치(392)를 포함하지만, 이에 한정되는 것은 아니다.
상기 메모리 장치(390)는 버스를 통해 상기 칩 패키지 구조 내의 칩에 연결되어 데이터를 저장한다. 상기 메모리 장치는 복수 그룹의 메모리 셀(393)을 포함할 수 있다. 각 그룹의 상기 메모리 셀은 버스를 통해 상기 칩에 연결된다. 각 그룹의 상기 메모리 셀이 DDR SDRAM(Double Data Rate SDRAM, 더블 데이터 레이트 동기식 동적 랜덤 메모리)일 수 있음을 이해할 수 있다.
DDR는 클럭 주파수를 높이지 않아도 SDRAM의 속도를 배로 높일 수 있다. DDR은 클록 펄스의 상승 및 하강 에지에서 데이터를 판독할 수 있도록 한다. DDR의 속도는 표준 SDRAM의 두배이다. 일 실시예에서, 상기 메모리 장치는 4 그룹의 상기 메모리 셀을 포함할 수 있다. 각 그룹의 상기 메모리 셀은 복수의 DDR4 입자(칩)을 포함할 수 있다. 일 실시예에서, 상기 칩 내부에 4개의 72 비트 DDR4 컨트롤러를 포함할 수 있고, 상기 72 비트 DDR4 컨트롤러 중 64 비트는 데이터 전송에 사용되며, 8 비트는 ECC 검증에 사용된다. 각 그룹의 상기 메모리 셀에 DDR4-3200입자를 사용할 경우, 데이터 전송의 이론적 대역폭은 25600MB/s에 도달할 수 있음을 이해할 수 있다.
일 실시예에서, 각 그룹의 상기 메모리 셀은 병렬로 설치된 복수의 DDR SDRAM를 포함한다. DDR은 하나의 클록 사이클 내에서 데이터를 2회 전송할 수 있다. 상기 칩 내에 DDR를 제어하는 컨트롤러를 설치하여 각각의 상기 메모리 셀의 데이터 전송 및 데이터 저장을 제어한다.
상기 인터페이스 장치는 상기 칩 패키지 구조 내의 칩에 전기적으로 연결된다. 상기 인터페이스 장치는 상기 칩과 외부 장치(예를 들면, 서버 또는 컴퓨터) 간의 데이터 전송을 구현한다. 예를 들면, 일 실시예에서 상기 인터페이스 장치는 표준 PCIE 인터페이스일 수 있다. 예를 들어, 피처리 데이터는 서버로부터 표준 PCIE 인터페이스를 통해 상기 칩으로 전달되는데, 이를 통해 데이터 전이를 구현한다. 대안적으로, PCIE 3.0 X 16 인터페이스를 통해 전송할 때, 이론적인 대역폭은 16000MB/s에 도달할 수 있다. 다른 일 실시예에서, 상기 인터페이스 장치는 다른 인터페이스일 수 있다. 본 출원의 인터페이스 유닛은 상기 기타 인터페이스의 구체적인 표현형식에 제한되지 않으며 접속 기능을 구현할 수 있으면 된다. 한편, 상기 칩의 계산 결과 또한 상기 인터페이스 장치를 통해 외부 장치(예를 들어, 서버)에 전송된다.
상기 제어 장치는 상기 칩에 전기적으로 연결된다. 상기 제어 장치는 상기 칩의 상태를 모니터링한다. 구체적으로, 상기 칩과 상기 제어 장치는 SPI인터페이스를 통해 전기적으로 연결될 수 있다. 상기 제어 장치는 마이크로 컨트롤러 유닛(Micro Controller Unit, MCU)을 포함할 수 있다. 만약 상기 칩이 복수의 처리 칩, 복수의 처리 코어 또는 복수의 처리회로를 포함하면, 복수의 로드를 구동할 수 있다. 따라서, 상기 칩은 많은 로드 및 적은 로드와 같은 서로 다른 작동 상태에 있을 수 있다. 상기 제어 장치에 의해 상기 칩 내의 복수의 처리 칩, 복수의 처리 코어 또는 복수의 처리회로의 작동 상태를 제어할 수 있다.
일부 실시예에서, 본 출원은 상기 보드 카드를 포함하는 전자장치를 제공한다.
전자장치는 데이터 처리 장치, 로봇, 컴퓨터, 프린터, 스캐너, 태블릿, 스마트 단말기, 휴대폰, 운전 기록 장치, 네비게이터, 센서, 카메라, 서버, 클라우드 서버, 사진기, 비디오 카메라, 프로젝터, 손목시계, 헤드폰, 휴대용 저장장치, 착용형 장치, 교통 수단, 가전 제품 및/또는 의료 장비를 포함한다.
상기 교통 수단은 비행기, 선박 및/또는 차량을 포함하고, 상기 가전 제품은 텔레비전, 에어컨, 전자 렌지, 냉장고, 전기 밥솥, 가습기, 세탁기, 전등, 가스 렌지, 레인지 후드를 포함하며, 상기 의료 장비는 핵 자기 공명 설비, B- 초음파 설비 및/또는 심전도 설비를 포함한다.
일 실시예에서, 도 25에 도시된 바와 같이, 네트워크 온칩 데이터 처리 방법이 제공된다. 상기 방법은 다음 단계를 포함한다.
단계202: 제1 계산 장치를 통해 저장 장치에 액세스하여 제1 연산 데이터를 획득한다.
여기서, 제1 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, 제1 계산 장치 내의 컨트롤러 유닛은 저장 장치로부터 제1 연산 데이터 및 계산 명령을 획득한다.
단계204: 상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는다.
여기서, 저장 장치로부터 판독된 제1 연산 데이터에 대해, 상응한 계산 명령에 따라 제1 계산 장치에서 연산하여 제1 연산 결과를 얻는다.
단계206: 상기 제1 연산 결과를 제2 계산 장치로 송신한다.
여기서, 제1 계산 장치는 제2 계산 장치와 설정된 통신 채널을 통해 제1 계산 장치 내의 컨트롤러 유닛에 의해 제1 연산 결과를 제2 계산 장치로 송신한다. 대안적으로, 제1 연산 결과를 제2 계산 장치로 송신할 수 있을 뿐만 아니라 저장 장치로 송신할 수도 있다.
더 나아가, 본 실시예에 따른 네트워크 온칩 데이터 처리 방법은 도 1-5에 도시된 임의의 한 네트워크 온칩 처리 시스템에 적용될 수 있다.
상기 네트워크 온칩 데이터 처리 방법은 제1 계산 장치 내의 제1 연산 결과를 제2 계산 장치로 송신하여 복수의 계산 장치 사이의 데이터 전송을 구현할 수 있으며, 동시에, 연산 데이터에 대한 재활용을 통해 계산 장치가 저장 장치에 여러 번 액세스하여 생기는 대역폭 오버헤드를 막을 수 있다. 상기 방법은 연산 데이터 및 중간 연산 결과를 합리적으로 이용할 수 있어 데이터 처리 효율을 향상시킬 수 있다.
일 실시예에서, 도 26에 도시된 바와 같이, 네트워크 온칩 데이터 처리 방법이 제공된다. 상기 방법은 다음 단계를 포함한다.
단계302: 제1 계산 장치를 통해 저장 장치에 액세스하여 제1 연산 데이터를 획득한다.
여기서, 제1 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, 제1 계산 장치 내의 컨트롤러 유닛은 저장 장치로부터 제1 연산 데이터 및 계산 명령을 획득한다.
단계304: 상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는다.
여기서, 저장 장치로부터 판독된 제1 연산 데이터에 대해, 상응한 계산 명령에 따라 제1 계산 장치에서 연산하여 제1 연산 결과를 얻는다.
단계306: 상기 제1 연산 결과를 제2 계산 장치로 송신한다.
여기서, 제1 계산 장치는 제2 계산 장치와 설정된 통신 채널을 통해 제1 계산 장치 내의 컨트롤러 유닛에 의해 제1 연산 결과를 제2 계산 장치로 송신한다.
단계308: 상기 제2 계산 장치를 통해 상기 저장 장치를 액세스하여 제2 연산 데이터를 획득한다.
여기서, 제2 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, 제2 계산 장치 내의 컨트롤러 유닛은 저장 장치로부터 제2 연산 데이터 및 계산 명령을 획득한다.
단계310: 상기 제2 계산 장치를 통해 상기 제2 연산 데이터 및 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는다.
여기서 저장 장치로부터 판독된 제2 연산 데이터 및 제1 계산 장치로부터 수신된 제1 연산 결과에 대해, 상응한 계산 명령에 따라 제1 계산 장치에서 연산하여 제2 연산 결과를 얻는다.
더 나아가, 본 실시예에 따른 네트워크 온칩 데이터 처리 방법은 도 1-5에 도시된 임의의 한 네트워크 온칩 처리 시스템에 적용될 수 있다.
상기 네트워크 온칩 데이터 처리 방법은, 제1 계산 장치 내의 제1 연산 결과를 제2 계산 장치로 송신한 후 제2 계산 장치가 상기 제1 연산 결과를 이용하여 재차 연산하는 것에 의해 연산 데이터의 재활용을 구현할 수 있다. 상기 방법은 연산 데이터 및 중간 연산 결과를 합리적으로 이용할 수 있어 데이터 처리 효율을 향상시킬 수 있다.
일 실시예에서, 도 26에 도시된 네트워크 온칩 데이터 처리 방법을 도 9에 도시된 네트워크 온칩 처리 시스템(1900)에 적용한다. 여기서, 계산 장치(1902) 내지 계산 장치(1905)는 모두 소속된 네트워크 온칩 처리 모듈 내의 저장 장치(1901)에 연결되고, 계산 장치(1902) 내지 계산 장치(1905) 중 임의의 두 계산 장치는 상호간 직접적으로 연결되어 있다.
먼저, 시간을 나누어 3개의 시간 구간을 얻는다.
이어서, 제1 시간 구간에서 계산 장치(1902) 내지 계산 장치(1905)가 그 소속된 네트워크 온칩 처리 모듈 내의 저장 장치(1901)를 동시에 액세스한다.
구체적으로, 계산 장치(1902)가 저장 장치(1901)로부터 제1 연산 데이터 및 ; 계산 장치(1903)가 저장 장치(1901)로부터 제1 연산 데이터 및 를 판독하고, 계산 장치(1904)가 저장 장치(1901)로부터 제1 연산 데이터 및 를 판독하며, 계산 장치(1905)가 저장 장치(1901)로부터 제1 연산 데이터 및 를 판독한다.
더 나아가, 계산 장치(1902)에서 판독된 제1 연산 데이터및에 대해 연산하여 제1 연산 결과를 얻고, 계산 장치(1903)에서 판독된 제1 연산 데이터 및 에 대해 연산하여 제1 연산 결과를 얻으며, 계산 장치(1904)에서 판독된 제1 연산 데이터 및 에 대해 연산하여, 제1 연산 결과를 얻으며, 계산 장치(1905)에서 판독된 제1 연산 데이터 및 에 대해 연산하여 제1 연산 결과를 얻는다.
이어서, 제2 시간 구간에서, 계산 장치(1902)가 각각 계산 장치(1903)로부터 제1 연산 데이터를 판독하고, 계산 장치(1904)로부터 제1 연산 데이터를 판독하여 연산을 통해 제2 연산 결과를 얻고, 계산 장치(1903)가 각각 계산 장치(1902)로부터 제1 연산 데이터를 판독하고, 계산 장치(1905)로부터 제1 연산 데이터를 판독하여 연산을 통해 제2 연산 결과를 얻으며, 계산 장치(1904)가 각각 계산 장치(1905)로부터 제1 연산 데이터를 판독하고, 계산 장치(1902)로부터 제1 연산 데이터를 판독하여 연산을 통해 제2 연산 결과를 얻으며, 계산 장치(1905)가 각각 계산 장치(1904)로부터 제1 연산 데이터를 판독하고 계산 장치(1903)로부터 제1 연산 데이터를 판독하여 연산을 통해 제2 연산 결과를 얻는다.
이어서, 제3 시간 구간에서, 계산 장치(1902)가 제1 연산 결과 및 제2 연산 결과에 대해 연산하여 제3 연산 결과 = + 를 얻은 후, 제3 연산 결과 를 저장 장치(1901)에 송신하며; 계산 장치(1903)가 제1 연산 결과 및 제2 연산 결과에 대해 연산하여 제3 연산 결과 = + 를 얻은 후, 제3 연산 결과를 저장 장치(1901)에 송신하고; 계산 장치(1904)가 제1 연산 결과 및 제2 연산 결과에 대해 연산하여 제3 연산 결과 = +를 얻은 후 제3 연산 결과를 저장 장치(1901)로 송신하고; 계산 장치(1905)가 제1 연산 결과및 제2 연산 결과에 대해 연산하여 제3 연산 결과 = +를 얻은 후, 제3 연산 결과를 저장 장치(1901)에 송신한다.
일 실시예에서, 도 27에 도시된 바와 같이, 네트워크 온칩 데이터 처리 방법이 제공된다. 상기 방법은 다음 단계를 포함한다.
단계402: 제1 계산 장치 그룹을 통해 저장 장치에 액세스하여 제1 연산 데이터를 획득한다. 여기서, 제1 계산 장치 그룹은 복수의 제1 계산 장치를 포함한다.
여기서, 제1 계산 장치 그룹(cluster1) 내의 각 제1 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, cluster1 내의 컨트롤러 유닛은 저장 장치로부터 제1 연산 데이터 및 계산 명령을 획득한다.
대안적으로, cluster1 내의 복수의 제1 계산 장치는 저장 장치를 동시에 액세스하고, 각각의 제1 계산 장치는 저장 장치로부터 cluster1에 필요한 일부 데이터를 판독한다. 이러한 데이터는 cluster1 내에서 전송한다. 대안적으로, cluster1 내의 하나 또는 복수의 제1 계산 장치가 저장 장치에 액세스할 수 있도록 지정하며 나머지 제1 계산 장치는 그룹 내 통신만 할 수 있도록 한다.
단계404: 상기 제1 계산 장치 그룹을 통해 상기 복수의 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는다.
여기서, 복수의 제1 연산 데이터는 상응한 계산 명령에 따라 복수의 제1 계산 장치 사이에서 연산하고 포워딩하여 제1 연산 결과를 얻는다.
단계406: 상기 제1 연산 결과를 제2 계산 장치 그룹으로 송신한다.
여기서, cluster1은 제2 계산 장치 그룹(cluster2)과 구축된 통신 채널을 통해 cluster1 내의 컨트롤러 유닛에 의해 제1 연산 결과를 cluster2로 송신한다.
대안적으로, 제1 연산 결과를 cluster2로 송신할 수 있을 뿐만 아니라 제1 연산 결과를 저장 장치로 송신할 수도 있다. 대안적으로, cluster2와 통신 채널이 구축된 cluster1의 임의의 한 제1 계산 장치를 통해 제1 연산 결과를 cluster2로 송신한다. 대안적으로, cluster1은 제1 연산 결과를 cluster1과 통신 채널이 구축된 cluster2의 임의의 한 제2 계산 장치에 송신할 수 있다.
더 나아가, 본 실시예에 따른 네트워크 온칩 데이터 처리 방법은 도 6-8에 도시된 임의의 한 네트워크 온칩 처리 시스템에 적용될 수 있다.
상기 네트워크 온칩 데이터 처리 방법은 복수의 계산 장치 그룹 사이에 그룹 내 통신뿐만 아니라 그룹간의 데이터 전송을 구현할 수 있으므로 연산 데이터 및 중간 연산 결과를 합리적으로 이용할 수 있어 데이터의 처리 효율을 향상시켰다.
일 실시예에서, 도 28에 도시된 바와 같이, 네트워크 온칩 데이터 처리 방법이 제공된다. 상기 방법은 다음 단계를 포함한다.
단계502: 제1 계산 장치 그룹을 통해 저장 장치에 액세스하여 제1 연산 데이터를 획득한다. 여기서, 제1 계산 장치 그룹은 복수의 제1 계산 장치를 포함한다.
여기서, 제1 계산 장치 그룹(cluster1) 내의 각 제1 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, cluster1 내의 컨트롤러 유닛은 저장 장치로부터 제1 연산 데이터 및 계산 명령을 획득한다.
대안적으로, cluster1 내의 복수의 제1 계산 장치는 저장 장치를 동시에 액세스하고, 각각의 제1 계산 장치는 저장 장치로부터 cluster1에 필요한 일부 데이터를 판독한다. 이러한 데이터는 cluster1 내에서 전송한다. 대안적으로, cluster1 내의 하나 또는 복수의 제1 계산 장치를 지정하여 저장 장치에 액세스할 수 있도록 하며 나머지 제1 계산 장치는 그룹 내 통신만 할 수 있도록 한다.
단계504: 상기 제1 계산 장치 그룹을 통해 상기 복수의 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는다.
여기서, 복수의 제1 연산 데이터는 상응한 계산 명령에 따라 복수의 제1 계산 장치 사이에서 연산하고 포워딩하여 제1 연산 결과를 얻는다.
단계506: 상기 제1 연산 결과를 제2 계산 장치 그룹으로 송신한다.
*여기서, cluster1은 제2 계산 장치 그룹(cluster2)과 구축된 통신 채널을 통해 cluster1 내의 컨트롤러 유닛에 의해 제1 연산 결과를 cluster2로 송신한다.
대안적으로, cluster2와 통신 채널이 구축된 cluster1내의 임의의 한 제1 계산 장치를 통해 제1 연산 결과를 cluster2로 송신한다. 대안적으로, cluster1은 제1 연산 결과를 cluster1과 통신 채널이 구축된 cluster2 내의 임의의 한 제2 계산 장치로 송신할 수 있다.
단계508: 상기 제2 계산 장치 그룹을 통해 상기 저장 장치에 액세스하여 제2 연산 데이터를 획득한다. 여기서, 상기 제2 계산 장치 그룹은 복수의 제2 계산 장치를 포함한다.
여기서, cluster2 내의 각 제1 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, cluster2 내의 컨트롤러 유닛은 저장 장치로부터 제2 연산 데이터 및 계산 명령을 획득한다.
대안적으로, cluster2 내의 복수의 제2 계산 장치는 저장 장치를 동시에 액세스하고, 각각의 제2 계산 장치는 저장 장치로부터 cluster2에 필요한 일부 데이터를 판독한다. 이러한 데이터는 cluster2 내에서 전송한다. 대안적으로, cluster2 내의 하나 또는 복수의 제2 계산 장치를 지정하여 저장 장치에 액세스할 수 있도록 하고 나머지 제2 계산 장치는 그룹 내 통신만 할 수 있도록 한다.
단계510: 상기 제2 계산 장치 그룹을 통해 상기 제2 연산 데이터 및 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는다.
여기서, 저장 장치로부터 판독된 제2 연산 데이터 및 제1 계산 장치 그룹으로부터 수신된 제1 연산 결과에 대해, 상응한 계산 명령에 따라 복수의 제2 계산 장치 사이에서 연산하고 포워딩하여 제2 연산 결과를 얻는다.
더 나아가, 본 실시예에 따른 네트워크 온칩 데이터 처리 방법은 도 6-8에 도시된 임의의 한 네트워크 온칩 처리 시스템에 적용될 수 있다.
상기 네트워크 온칩 데이터 처리 방법은 제1 계산 장치 그룹 내의 제1 연산 결과를 제2 계산 장치 그룹으로 송신한 후 제2 계산 장치 그룹이 상기 제1 연산 결과를 이용하여 재차 연산하하므로 연산 데이터의 재활용을 구현할 수 있다. 상기 방법은 연산 데이터 및 중간 연산 결과를 합리적으로 이용할 수 있어 데이터의 처리 효율을 향상시켰다.
일 실시예에서, 도 29에 도시된 바와 같이, 네트워크 온칩 데이터 처리 방법이 제공된다. 상기 방법은 다음 단계를 포함한다.
단계602: 제1 네트워크 온칩 처리 모듈을 통해 제1 연산 데이터를 획득한다. 여기서, 상기 제1 네트워크 온칩 처리 모듈은 제1 저장 장치 및 복수의 제1 계산 장치를 포함하고, 상기 제1 저장 장치에 제1 연산 데이터를 저장한다.
여기서, 제1 네트워크 온칩 처리 모듈 내의 제1 계산 장치마다 연산 유닛 및 컨트롤러 유닛을 포함하고 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, 제1 네트워크 온칩 처리 모듈 내의 컨트롤러 유닛은 제1 저장 장치로부터 제1 연산 데이터 및 계산 명령을 획득한다.
대안적으로, 제1 네트워크 온칩 처리 모듈 내의 복수의 제1 계산 장치는 제1 저장 장치에 동시에 액세스하고, 각각의 제1 계산 장치는 제1 저장 장치로부터 상기 제1 네트워크 온칩 처리 모듈에 필요한 일부 데이터를 판독한다. 이러한 데이터는 제1 네트워크 온칩 처리 모듈 내에서 전송한다.
대안적으로, 제1 네트워크 온칩 처리 모듈 내의 하나 또는 복수의 제1 계산 장치를 지정하여 제1 저장 장치에 액세스할 수 있도록 하고 나머지 제1 계산 장치는 그룹 내 통신만 할 수 있도록 한다. 구체적으로, 제1 네트워크 온칩 처리 모듈이 처리해야 하는 연산 데이터는 모두 제1 저장 장치에 저장되어 있다.
단계604: 상기 제1 네트워크 온칩 처리 모듈 내의 복수의 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는다.
여기서, 복수의 제1 연산 데이터는 상응한 계산 명령에 따라 복수의 제1 계산 장치 사이에서 연산하고 포워딩하여 제1 연산 결과를 얻는다.
단계606: 상기 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신한다.
여기서, 제1 네트워크 온칩 처리 모듈은 제2 네트워크 온칩 처리 모듈과 구축된 통신 채널을 통해 제1 네트워크 온칩 처리 모듈 내의 컨트롤러 유닛에 의해 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신한다.
대안적으로, 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신할 수 있을 뿐만 아니라 제1 연산 결과를 제1 저장 장치로 송신할 수 있다. 대안적으로, 제2 네트워크 온칩 처리 모듈과 통신 채널이 구축된 제1 네트워크 온칩 처리 모듈 중 임의의 한 제1 계산 장치를 통해 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신한다. 대안적으로, 제1 네트워크 온칩 처리 모듈은 제1 연산 결과를 제1 네트워크 온칩 처리 모듈과 통신 채널이 구축된 제2 네트워크 온칩 처리 모듈 중 임의의 한 제2 계산 장치로 송신한다.
더 나아가, 본 실시예에 따른 네트워크 온칩 데이터 처리 방법은 도 9-12에 도시된 임의의 한 네트워크 온칩 처리 시스템에 적용될 수 있다.
상기 네트워크 온칩 데이터 처리 방법은 복수의 계산 장치 그룹 사이에서 그룹 내 통신뿐만 아니라 그룹간 데이터 전송을 구현할 수 있으므로 연산 데이터 및 중간 연산 결과를 합리적으로 이용할 수 있어 데이터의 처리 효율을 향상시켰다.
일 실시예에서, 도 30에 도시된 바와 같이, 네트워크 온칩 데이터 처리 방법이 제공된다. 상기 방법은 다음 단계를 포함한다.
단계702: 제1 네트워크 온칩 처리 모듈을 통해 제1 연산 데이터를 획득한다. 여기서, 상기 제1 네트워크 온칩 처리 모듈은 제1 저장 장치 및 복수의 제1 계산 장치를 포함하고, 상기 제1 연산 데이터는 상기 제1 저장 장치에 저장된다.
여기서, 제1 네트워크 온칩 처리 모듈 내의 각 제1 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, 제1 네트워크 온칩 처리 모듈 내의 컨트롤러 유닛은 제1 저장 장치로부터 제1 연산 데이터 및 계산 명령을 획득한다.
대안적으로, 제1 네트워크 온칩 처리 모듈 내의 복수의 제1 계산 장치는 제1 저장 장치에 동시에 액세스하고, 각각의 제1 계산 장치는 제1 저장 장치로부터 상기 제1 네트워크 온칩 처리 모듈에 필요한 일부 데이터를 판독한다. 이러한 데이터는 제1 네트워크 온칩 처리 모듈 내에서 전송한다.
대안적으로, 제1 네트워크 온칩 처리 모듈 내의 하나 또는 복수의 제1 계산 장치를 지정하여 제1 저장 장치에 액세스할 수 있도록 하고 나머지 제1 계산 장치는 그룹 내 통신만 할 수 있도록 한다. 구체적으로, 제1 네트워크 온칩 처리 모듈이 처리해야 하는 연산 데이터는 모두 제1 저장 장치에 저장된다.
단계704: 상기 제1 네트워크 온칩 처리 모듈 내의 복수의 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는다.
여기서, 복수의 제1 연산 데이터는 상응한 계산 명령에 따라 복수의 제1 계산 장치 사이에서 연산하고 포워딩하여 제1 연산 결과를 얻는다.
단계706: 상기 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신한다.
여기서, 제1 네트워크 온칩 처리 모듈은 제2 네트워크 온칩 처리 모듈과 구축된 통신 채널을 통해 제1 네트워크 온칩 처리 모듈 내의 컨트롤러 유닛에 의해 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신한다.
대안적으로, 제2 네트워크 온칩 처리 모듈과 통신 채널이 구축된 제1 네트워크 온칩 처리 모듈 중 임의의 한 제1 계산 장치를 통해 제1 연산 결과를 제2 네트워크 온칩 처리 모듈로 송신한다. 대안적으로, 제1 네트워크 온칩 처리 모듈은 제1 연산 결과를 제1 네트워크 온칩 처리 모듈과 통신 채널이 구축된 제2 네트워크 온칩 처리 모듈 중 임의의 한 제2 계산 장치로 송신한다.
단계708: 상기 제2 네트워크 온칩 처리 모듈을 통해 제2 연산 데이터를 획득한다. 여기서, 상기 제2 네트워크 온칩 처리 모듈은 제2 저장 장치 및 복수의 제2 계산 장치를 포함하고, 상기 제2 저장 장치에 상기 제2 연산 데이터를 저장한다.
여기서, 제2 네트워크 온칩 처리 모듈 내의 각 제2 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 구체적으로, 제2 네트워크 온칩 처리 모듈 내의 컨트롤러 유닛은 제2 저장 장치로부터 제2 연산 데이터 및 계산 명령을 획득한다.
대안적으로, 제2 네트워크 온칩 처리 모듈 내의 복수의 제2 계산 장치는 제2 저장 장치에 동시에 액세스하고, 각각의 제2 계산 장치는 제2 저장 장치로부터 상기 제2 네트워크 온칩 처리 모듈에 필요한 일부 데이터를 획득한다. 이러한 데이터는 제2 네트워크 온칩 처리 모듈 내에서 전송한다.
대안적으로, 제2 네트워크 온칩 처리 모듈 내의 하나 또는 복수의 제2 계산 장치를 지정하여 제2 저장 장치에 액세스할 수 있도록 하고 나머지 제2 계산 장치는 그룹 내 통신만 할 수 있도록 한다. 구체적으로, 제2 네트워크 온칩 처리 모듈이 처리해야 하는 연산 데이터는 모두 제2 저장 장치에 저장되어 있다.
단계710:상기 제2 네트워크 온칩 처리 모듈 내의 복수의 제2 계산 장치를 통해 상기 제2 연산 데이터 및 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는다.
여기서, 단계710는 구체적으로 다음 단계를 포함한다.
단계7102: 상기 복수의 제2 계산 장치 사이에서 상기 제2 연산 데이터 및 상기 제1 연산 결과를 연산하여 상기 제2 연산 결과를 얻는다.
구체적으로, 각 제2 계산 장치는 상응한 계산 명령에 따라 제2 연산 데이터 및 제1 연산 결과에 대해 연산하여 복수의 중간 결과를 얻는다. 이어서 상응한 계산 명령에 따라 복수의 중간 결과에 대해 연산하여 제2 연산 결과를 얻는다.
단계7104: 상기 제2 연산 결과를 상기 제2 저장 장치에 저장한다.
더 나아가, 본 실시예에 따른 네트워크 온칩 데이터 처리 방법은 도 9-12에 도시된 임의의 한 네트워크 온칩 처리 시스템에 적용될 수 있다.
상기 네트워크 온칩 데이터 처리 방법은 제1 네트워크 온칩 처리 시스템 내의 제1 연산 결과를 제2 네트워크 온칩 처리 시스템으로 송신한 후, 제2 네트워크 온칩 처리 시스템이 상기 제1 연산 결과를 이용하여 재차 연산하하므로 연산 데이터의 재활용을 구현할 수 있다. 상기 방법은 연산 데이터 및 중간 연산 결과를 합리적으로 이용할 수 있어 데이터의 처리 효율을 향상시켰다.
본 출원의 실시예에 따른 네트워크 온칩 처리 방법은 기계 학습 계산에 사용되며, 구체적으로 인공 신경망 연산에 사용될 수 있다. 여기서, 네트워크 온칩 처리 시스템 내의 연산 데이터는 구체적으로 입력 뉴런 데이터 및 가중치를 포함할 수 있으며, 네트워크 온칩 처리 시스템 내의 연산 결과는 구체적으로 인공 신경망 연산의 결과, 즉 출력 뉴런 데이터일 수 있다.
신경망 내의 연산은 신경망 내의 1층 연산일 수 있으며, 다층 신경망에 있어서, 그 구현 과정은 다음과 같다. 정방향 연산에서 이전 층 인공 신경망의 수행이 끝난 후 다음 층의 연산 명령은 연산 유닛으로부터 산출된 출력 뉴런을 다음 층 입력 뉴런으로 하여 연산(또는 상기 출력 뉴런에 대해 일부 동작한 후 다시 다음 층의 입력 뉴런으로 삼음)을 진행하는 동시에, 가중치를 또한 다음 층 가중치로 교체한다. 역방향 연산에서 이전 층 인공 신경망의 역방향 연산이 수행된 후, 다음 층 연산 명령은 연산 유닛으로부터 산출된 입력 뉴런 기울기를 다음 층의 출력 뉴런 기울기로 하여 연산(또는 상기 입력 뉴런 기울기에 대해 일부 동작한 후 다시 다음 층의 출력 뉴런 기울로 삼음)을 진행하는 동시에 가중치를 다음 층의 가중치로 교체한다.
상기 기계 학습 계산은 서포트 벡터 머신 연산, k-인접(k-nn)연산, k-평균(k-means)연산, 주성분 분석 연산 등을 더 포함할 수 있다. 설명의 편의를 위해, 이하 인공 신경망 연산을 예로 들어 기계 학습 계산의 구체적인 방안에 대해 설명한다.
인공 신경망 연산에 대해, 상기 인공 신경망 연산이 다층 연산을 갖는다면, 다층 연산의 입력 뉴런 및 출력 뉴런은 전체 신경망의 입력층의 뉴런 및 출력층의 뉴런을 의미하는 것이 아니라, 신경망 중 임의의 인접된 2개 층에 있어서 신경망 정방향 연산의 다음 층에서의 뉴런이 바로 입력 뉴런이고, 신경망 정방향 연산의 이전 층에서의 뉴런이 바로 출력 뉴런이다. 컨볼루션 신경망을 예로 들어 하나의 컨볼루션 신경망을 층으로 설정하고, . 제층 및 제층에 대해, 제층을 입력층으로 부르되, 그 중의 뉴런은 상기 입력 뉴런이고, 제층을 출력층으로 부르되, 그 중의 뉴런은 상기 출력 뉴런이다. 꼭대기 층을 제외한 각층을 모두 입력층으로 하고 그 다음 층이 대응하는 출력층일 수 있다.
하나의 선택 가능한 실시예에서, 신경망 연산 중 완전 연결 연산을 예로 들면, 과정은 y=f(wx+b)일 수 있으며, 여기서 x는 입력 뉴런 행렬이고, w는 가중치 행렬이고, b는 오프셋 스칼라이며, f는 활성화 함수이다. 구체적으로, sigmoid함수, tanh, relu, softmax함수 중 임의의 한 함수일 수 있다. 여기서 2-진 트리 구조이고, 8개의 슬레이브 처리회로를 가진다고 가정할 경우 그 구현 방법은 다음과 같다.
컨트롤러 유닛이 저장 유닛으로부터 입력 뉴런 행렬x, 가중치 행렬w 및 완전 연결 연산 명령을 획득한 후 입력 뉴런 행렬x, 가중치 행렬w 및 완전 연결 연산 명령을 마스트 처리회로로 전송하며,
마스트 처리회로가, 상기 입력 뉴런 행렬x을 브로드캐스트 데이터로, 가중치 행렬w을 배부 데이터로 확정하고 가중치 행렬w를 8개 자행렬로 분할한 다음 트리 모듈을 통해 8개 자행렬을 8개 슬레이브 처리회로로 배분하고, 입력 뉴런 행렬x를 8개 슬레이브 처리회로로 브로드캐스팅하고,
슬레이브 처리회로가 8개 서브 행렬과 입력 뉴런 행렬x의 곱셈 연산 및 누적 연산을 병행 수행하여 8개 중간 결과를 얻은 후, 8개 중간 결과를 마스트 처리회로로 송신하며,
마스트 처리회로가 8개 중간 결과를 정렬하여 wx의 연산 결과를 얻으며, 상기 연산 결과에 대해 오프셋b의 연산을 수행한 후 활성화 동작을 진행하여 최종 결과y를 얻으며, 최종 결과y를 컨트롤러 유닛으로 송신하여 컨트롤러 유닛에 의해 상기 최종 결과y를 저장 유닛으로 출력하거나 저장한다.
도 1에 도시된 계산 장치가 신경망 정방향 연산 명령을 수행하는 방법은 구체적으로 다음과 같다.
컨트롤러 유닛이 명령 저장 유닛으로부터 신경망 정방향 연산 명령, 신경망 연산 명령에 대응하는 동작 도메인 및 적어도 하나 이상의 동작 코드를 추출하고, 컨트롤러 유닛이 상기 동작 도메인을 데이터 액세스 유닛으로 전송하고 상기 적어도 하나 이상의 동작 코드를 연산 유닛으로 송신한다.
컨트롤러 유닛은 저장 유닛으로부터 상기 동작 도메인에 대응하는 가중치w 및 오프셋b(b가 0인 경우, 오프셋b를 추출할 필요없음)을 추출하고, 가중치w 및 오프셋b을 연산 유닛의 마스트 처리회로로 전송하고, 컨트롤러 유닛은 저장 유닛으로부터 입력 데이터Xi을 추출하고 상기 입력 데이터Xi를 마스트 처리회로로 송신한다.
마스트 처리회로는 상기 적어도 하나 이상의 동작 코드에 의해 곱셈 연산으로 확정되며 입력 데이터Xi를 브로드캐스트 데이터로, 가중치를 배부 데이터로 확정하고, 가중치w를 n개 데이터 블록으로 분할하고,
컨트롤러 유닛의 명령 처리 유닛은 상기 적어도 하나 이상의 동작 코드에 의해 곱셈 명령, 오프셋 명령 및 누적 명령을 확정하되, 곱셈 명령, 오프셋 명령 및 누적 명령을 마스트 처리회로로 송신하고, 마스트 처리회로가 상기 곱셈 명령, 입력 데이터Xi를 브로드캐스트 방식으로 복수의 슬레이브 처리회로로 송신하고, 상기 n개 데이터 블록을 상기 복수의 슬레이브 처리회로(예를 들어, n개 슬레이브 처리회로를 가지며, 각각의 슬레이브 처리회로가 하나의 데이터 블록을 송신함)로 배분하며, 복수의 슬레이브 처리회로는 상기 곱셈 명령에 의해 상기 입력 데이터Xi와 수신된 데이터 블록에 대해 곱셈 연산을 진행하여 중간 결과를 얻은 후, 상기 중간 결과를 마스트 처리회로로 송신하고, 상기 마스트 처리회로는 상기 누적 명령에 따라 복수의 슬레이브 처리회로에서 송신된 중간 결과에 대해 누적 연산하여 누적 결과를 얻으며, 상기 오프셋 명령에 따라 상기 누적 결과에 대해 오프셋b을 더하여 최종 결과를 얻은 후 상기 최종 결과를 상기 컨트롤러 유닛으로 전송한다.
한편, 덧셈 연산과 곱셈 연산의 순서는 바뀔 수 있다.
본 출원에 제공되는 기술적 방안은 하나의 명령, 즉 신경망 연산 명령에 의해 신경망의 곱셈 연산과 오프셋 연산을 구현하고, 신경망에서 계산한 중간 결과를 저장하거나 추출할 필요없으므로, 중간 데이터의 저장 및 추출 작업을 생략할 수 있어 대응하는 동작 단계를 생략하고 신경망의 계산 효과를 개선하는 이점이 있다.
정보 기술이 끊임없이 발전하고 날로 향상됨에 따라 사람들이 데이터 액세스 및 데이터 처리에 대한 요구가 점점 높아져 일부 데이터를 처리하고 액세스하는 프로세서에 대한 요구도 점점 엄격해지고 있다. 범용 프로세서를 예로 들면, 복수의 범용 프로세서 코어(예를 들어, CPU 코어)로 구성된 멀티 코어 프로세서는 강력한 병행 계산 능력으로 주된 추세가 되었다.
그러나, 현재 인공 신경망이 끊임없이 발전함에 따라 점점 많은 구성의 기계 학습 칩이 점차 생기고 있다. 이런 기계 학습 칩은 운행시 명령에 따라 데이터를 액세스하거나 공유 저장 중인 데이터를 처리해야 한다. 데이터를 액세스하거나 공유 저장 중인 데이터가 많을 경우, 기계 학습 칩의 명령이 점차 복잡해져 명령에 의해 공유 저장 중인 데이터를 판독하는 속도에 영향을 미치므로 뉴런 데이터의 처리 효율을 저하시킨다.
따라서, 데이터 액세스시 기계 학습 칩이 액세스하는 속도를 향상하는 것은 현재 당업자가 시급히 해결해야 하는 기술문제이다.
상기 문제를 해결하기 위하여 본 출원은 아래 기술적 방안을 제공한다.
본 출원에 따른 데이터 처리 방법은 도 31에 도시된 하드웨어 회로에 적용될 수 있다. 상기 회로는 기계 학습 장치(11), 전송 회로(12) 및 공유 메모리(13)를 포함하며, 기계 학습 장치(11)와 상기 전송 회로(12), 전송 회로(12)와 공유 메모리(13)는 모두 인터페이스를 통해 연결되고, 상기 기계 학습 장치(11), 전송 회로(12)와 공유 메모리(13), 및 상기 인터페이스는 모두 하드웨어 회로 방식으로 구현될 수 있다. 예를 들어, 기계 학습 장치는 복수의 기계 학습 유닛(Machine Learning Unit, MLU으로 약칭함)으로 구성된 연산 기능을 갖춘 장치일 수 있으며, 전송 회로는 브로드캐스트 버스(broadcast bus)일 수 있으며, 공유 메모리는 비-휘발성 및/또는 휘발성 메모리일 수 있으며, 램덤 액세스 메모리(RAM), 캐시 메모리(cache memory) 등을 포함하나 이에 한정되지 않는다. 본 실시예는 상기 하드웨어 형식에 대해 구체적으로 한정하지 않는다. 여기서, 전송 회로(12)는 기계 학습 장치(11)가 보낸 데이터 동작 신호에 따라 공유 메모리(13)로부터 기계 학습 장치(11)에 필요한 입력 데이터를 획득하여 입력 데이터를 기계 학습 장치(11)로 리턴하는데 사용된다. 기계 학습 장치(11)는 입력 데이터에 따라 기계 학습 연산을 수행하여 출력 데이터를 획득하고 출력 데이터를 새로운 입력 데이터로 삼아 전송 회로(12)를 통해 공유 메모리(13)에 전송한 후 저장한다.
일 실시예에서, 도 32는 데이터 처리 방법을 제공한다. 본 실시예는 전송 회로가 데이터 동작 신호의 제1 유형 플래그 비트 및 제2 유형 플래그 비트에 따라 데이터 동작 신호의 유형을 확정한 후 확정된 유형에 대응하는 동작에 따라 메모리로부터 필요한 데이터를 얻은 후 액세스 속도를 향상시키는 구체적인 과정에 관한 것이다. 도 2에 도시된 바와 같이, 상기 방법은 다음 단계를 포함한다.
S2101: 내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신한다. 상기 데이터 동작 신호는 동작 도메인 및 동작 코드를 포함하고, 상기 동작 코드는 제1 유형 플래그 비트를 포함하고, 상기 동작 도메인은 제2 유형 플래그 비트를 포함하며, 상기 제1 유형 플래그 비트는 상기 데이터 동작 신호가 I/O 명령인지 여부를 나타내며, 상기 제2 유형 플래그 비트는 상기 데이터 동작 신호가 상기 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령인지 여부를 나타낸다.
본 실시예에서, 전송 회로는 상기 내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신한다. 상기 데이터 동작 신호는 데이터 동작 신호의 제1 유형 플래그 비트 및 제2 유형 플래그 비트를 가진다. 여기서, 상기 내부 또는 외부 장치는 인터페이스를 통해 전송 회로에 연결된 기계 학습 장치일 수 있으며, 상기 기계 학습 장치는 임의의 하드웨어 형식일 수 있는 바, 예를 들어 복수의 MLU으로 이루어진 연산 기능을 갖는 장치이다. 여기서, 전송 회로는 상기 데이터 동작 신호가 갖는 데이터 동작 신호의 제1 유형 플래그 비트에 따라 상기 데이터 동작 신호의 값이 I/O 명령인지 여부를 확정하고, 제2 유형 플래그 비트는 상기 데이터 동작 신호가 I/O 명령 내의 구체적인 유형인지 여부를 확정할 수 있다. 예를 들어, 상기 데이터 동작 신호의 제1 유형 플래그 비트의 값이 I/O 명령이고 제2 유형 플래그 비트의 값이 1이면, 상기 데이터 동작 신호가 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령이다.
S2102: 상기 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는다.
상기 단계S2101에서 전송 회로가 상기 내부 또는 외부 장치로부터 송신된 데이터 동작 신호를 수신함에 따라, 전송 회로는 상기 데이터 동작 신호의 유형 플래그 비트에 의해 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터, 예를 들어 뉴런 데이터 및 가중치를 얻는다. 여기서, 뉴런 데이터 및 가중치는 내부 또는 외부 장치에 필요한 데이터이다. 예를 들어 상기 내부 또는 외부 장치가 기계 학습 장치일 때, 상기 뉴런 데이터 및 가중치는 기계 학습 장치가 기계 학습 연산시 입력해야 하는 데이터이다. 이상 데이터는 메모리 내에 미리 저장된 데이터일 수 있으며, 기계 학습 장치가 기계 학습 연산을 진행한 후 출력하는 데이터일 수도 있다. 본 실시예는 이에 대해 한정하지 않는다.
본 실시예에 따른 데이터 처리 방법에 있어서, 전송 회로는 내부 또는 외부 장치로부터 송신되고 제1 유형 플래그 비트 및 제2 유형 플래그 비트를 갖는 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는다. 본 실시예에서, 데이터 동작 신호가 제1 유형 플래그 비트 및 제2 유형 플래그 비트를 가지므로, 전송 회로는 상기 데이터 동작 신호를 수신한 후 그 중의 데이터 동작 신호의 제1 유형 플래그 비트 및 제2 유형 플래그 비트에 따라 상기 데이터 동작 신호의 구체적인 유형을 판단하고 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행한다. 이에 따라, 데이터 동작 신호의 유형 플래그 비트에 따라 우선 분류하여 대응하는 동작에 신속하게 매핑하므로 데이터 액세스하는 로직을 간소화하고 데이터의 액세스 효율을 높이므로 기계 학습 칩이 데이터를 액세스하는 액세스 속도를 크게 향상시켰다.
아래 몇 개 실시예를 통해 상기 동작 코드 및 동작 도메인, 그리고 이들과 데이터 동작 신호의 유형 플래그 비트, 동작 예정 데이터의 정보 및 데이터 수신 플래그 비트 사이의 관계를 각각 설명한다.
일 실시예에서, 상기 동작 도메인은 데이터 수신 플래그 비트를 더 포함하고, 상기 데이터 수신 플래그 비트는 상기 입력 데이터를 수신하는 장치 또는 처리회로를 나타낸다. 대안적으로, 상기 데이터 수신 플래그 비트의 개수는 상기 메모리와 상호 작용가능한 장치의 개수 또는 처리회로의 개수를 나타낸다. 대안적으로, 상기 제1 유형 플래그 비트의 값이 I/O이면, 상기 데이터 동작 신호를 I/O 명령으로 확정하고, 상기 제2 유형 플래그 비트의 값이 1이면, 상기 데이터 동작 신호를 상기 I/O 명령 내의 브로드캐스트 또는 멀티캐스트 명령으로 확정한다.
본 실시예에서, 데이터 동작 신호의 동작 코드는 상기 데이터 동작 신호의 동작 유형을 가리키고, 상기 데이터 동작 신호의 제1 유형 플래그 비트를 포함하고, 상기 동작 도메인은 상기 데이터 동작 신호가 수행과정에 필요한 데이터 정보를 저장하며, 제2 유형 플래그 비트를 포함한다. 예시적으로, 동작 코드 내의 데이터 동작 신호의 제1 유형 플래그 비트의 값이 I/O이면, 상기 데이터 동작 신호가 I/O 명령임을 나타내고, 동작 도메인 내의 제2 유형 플래그 비트의 값이 1이면, 상기 데이터 동작 신호가 I/O 명령 중 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다. 유의할 것은, 본 실시예에 설명된 제2 유형 플래그 비트가 1일 때, 상기 데이터 동작 신호를 I/O 명령 중 브로드캐스트 또는 멀티캐스트 명령으로 확정한다. 이는 다만 일 실시형태에 불과하며 사용자의 실제 수요에 따라 제2 유형 플래그 비트가 0 또는 기타 식별자일 때, 상기 데이터 동작 신호를 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령으로 확정할 수도 있다. 본 실시예는 이에 대해 한정하지 않는다. 여기서, 상기 데이터 수신 플래그 비트는 내부 또는 외부 장치 중 입력 데이터(예를 들어, 입력 뉴런 데이터 및 가중치)를 수신할 수 있는 장치 또는 처리회로를 나타낸다. 여기서, 상기 장치는 기계 학습 장치 또는 MLU일 수 있으며, 처리회로는 연산 유닛 또는 연산 유닛의 마스트 처리회로 또는 슬레이브 처리회로일 수 있으며, 본 실시예는 이에 대해 한정하지 않는다. 여기서, 데이터 수신 플래그 비트의 개수는 상기 메모리와 상호 작용가능한 장치의 개수 또는 처리회로의 개수를 나타낸다. 예시적으로, 상기 동작 도메인 내의 데이터 수신 플래그 비트에 3개 MLU(기계 학습 유닛)의 플래그 비트가 1이면, 상기 3개 MLU가 데이터를 수신할 수 있음을 나타내고, 하나의 MLU 플래그 비트가 0이면, 상기 하나의 MLU는 데이터를 수신할 수 없음을 나타낸다. 유의할 것은, 데이터 수신할 수 있는 MLU를 1로 표기하는 것은 단지 일 예시에 속할 뿐, 사용자는 실제 수요에 따라 데이터 수신 가능한 MLU를 0 또는 다른 식별자로 표기할 수 있다. 본 실시예는 이에 대해 한정하지 않는다.
본 실시예에서, 전송 회로는 데이터 신호의 제1 유형 플래그 비트 및 제2 유형 플래그 비트에 따라, 상기 데이터 동작 신호의 구체적인 유형을 확정한 후 대응하는 동작에 매핑하고 데이터 수신 플래그 비트에 따라 동작 수행한 후의 데이터를 송신하는 목표 장치를 확정함으로써 데이터 액세스 로직을 간소화하고 데이터의 액세스 효율을 높이므로 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
다른 일 실시예에서, 상기 동작 도메인은 동작 예정 데이터의 정보를 더 포함하고, 상기 동작 예정 데이터의 정보는 상기 동작 예정 데이터가 상기 메모리 내의 소스 주소, 동작 예정 데이터 길이 및 데이터를 동작시킨 후의 데이터 리턴 주소를 포함한다. 도 33에 도시된 바와 같이, 데이터 처리 방법이 제공되며, 본 실시예는, 데이터 동작 신호가 가진 데이터 정보에 따라 전송 회로가 메모리로부터 데이터를 판독하고 다시 상기 데이터 동작 정보에 따라 판독된 데이터를 장치 또는 처리회로로 리턴하는 구체적인 과정에 관한 것이다. 상기 S2102는 다음 단계를 포함한다.
S2201: 상기 소스 주소로부터 상기 메모리를 판독하기 시작하여 상기 데이터 길이를 만족하는 입력 데이터를 획득한다.
본 실시예에서, 데이터 동작 신호의 동작 예정 데이터의 정보에 동작 예정 데이터가 메모리 내의 소스 주소, 동작 예정 데이터 길이, 및 데이터를 동작시킨 후의 데이터 리턴 주소를 포함하므로 전송 회로는 상기 메모리 내의 소스 주소로부터 데이터를 판독하기 시작하고, 사전에 설정된 규칙에 따라 동작 예정의 데이터 길이를 만족하는 만큼 판독한다. 여기서 상기 동작 예정 데이터 길이는 사용자가 실제 상황에 따라 자체로 설정한 것이며, 본 실시예는 이에 대해 한정하지 않는다. 여기서, 전송 회로가 상기 데이터 길이를 만족하는 입력 데이터 및 데이터를 획득하는 것은, 사전에 설정된 규칙에 따라 메모리로부터 상기 데이터 길이를 만족하는 데이터를 판독하는 것이다. 여기서, 상기 사전에 설정된 규칙 또한 사용자가 실제 상황에 따라 정한 규칙이다. 본 실시예는 이에 대해 한정하지 않으나, 예를 들어, 소스 주소로부터 하나씩 판독하여 판독된 데이터 길이가 해당 데이터 길이를 만족할 때까지 판독한다.
S2202: 상기 데이터 수신 플래그 비트에 따라 입력 데이터를 수신하는 장치 또는 처리회로를 확정한다.
상기 S2201단계에 의해 전송 회로는 데이터 길이를 만족하는 입력 데이터를 획득하고, 전송 회로는 데이터 신호 내의 데이터 수신 플래그 비트에 따라 데이터를 리턴하는 장치 또는 처리회로를 수신한다. 예를 들어, 상기 장치가 기계 학습 장치인 경우, 전송 회로는 데이터 수신 플래그 비트에 따라 데이터가 상기 기계 학습 장치 내의 하나 또는 복수의 목표 기계 학습 유닛으로 리턴하는 것을 확정한다.
S2203: 상기 데이터 리턴 주소에 따라, 상기 입력 데이터를 상기 장치 또는 처리회로 내의 상기 데이터 리턴 주소에 대응하는 저장 공간으로 리턴한다.
본 단계에서, 위 단계에서 확정된 데이터가 리턴하는 장치 또는 처리회로에 의해, 전송 회로가 데이터 동작 신호의 동작 예정 데이터의 정보 중 데이터 리턴 주소에 따라 상기 입력 데이터를 장치 또는 처리회로 중 상기 데이터 리턴 주소에 대응하는 저장 공간으로 리턴한다. 여기서, 상기 동작 예정 데이터의 정보 내의 데이터 리턴 주소는 기계 학습 장치의 복수의 목표 기계 학습 유닛 내의 주소일 수 있다.
예시적으로, 표 3에 표시된 바와 같이, 상기 실시예에 기초하여 본 실시예는 아래와 같은 예를 들수 있다. 동작 코드 내의 제1 유형 데이터 플래그 비트의 값이 I/O인 경우 상기 데이터 동작 신호가 I/O 명령임을 나타내고, 동작 도메인 내의 제2 유형 데이터 플래그 비트의 값이 1인 경우 상기 데이터 동작 신호가 I/O 명령 내의 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다. 따라서 상기 제2 유형 데이터 플래그 비트의 값이 0인 경우, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령이 아님을 나타낸다. 동작 도메인 내의 동작 예정의 데이터 정보는 소스 주소0x110011, 목표 주소0x000100 및 데이터 길이0x0100를 포함한다. 상기 데이터 길이는 사용자가 스스로 설정한 길이이며, 사용자는 상기 설정 길이를 하나의 값으로 설정할 수 있고 상기 설정 길이를 복수의 값으로 설정할 수도 있다. 본 실시예는 이에 대해 한정하지 않는다. 동작 도메인 내의 데이터 수신 플래그 비트에 3개 MLU 플래그가 1인 경우, 상기 3개 MLU가 데이터를 수신할 수 있음을 나타내고, 하나의 MLU 플래그가 0인 경우, 상기 하나의 MLU가 데이터를 수신할 수 없음을 나타낸다. 구체적으로, 전송 회로는 상기 데이터 동작 신호에 따라 공유 메모리 내의 주소0x110011로부터 0x0100 길이만큼의 데이터를 판독한 후 기계 학습 장치의 MLU3, MLU1 및 MLU0의 주소 0x000100에 각각 기록한다.
표 3
본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 데이터 동작 신호에 따라 소스 주소로부터 메모리 판독을 시작하여 데이터 길이를 만족하는 입력 데이터를 획득하고, 데이터 수신 플래그 비트에 따라 입력 데이터를 수신하는 장치 또는 처리회로를 확정한 다음, 데이터 리턴 주소에 따라 입력 데이터를 장치 또는 처리회로 내의 데이터 리턴 주소에 대응하는 저장 공간으로 리턴한다. 본 실시예에서, 전송 회로가 상기 데이터 길이를 만족하는 입력 뉴런 데이터와 가중치를 획득할 때 상기 데이터 동작 신호 중 데이터 동작 정보가 가리키는 판독 규칙에 따라 데이터를 판독하므로 전송 회로의 데이터 판독 로직을 간소화하고 데이터의 액세스 효율을 높이므로, 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
대안적으로, 상기 도 33에 도시된 실시예에서, 상기 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 각각의 기계 학습 유닛은 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함한다. 여기서, 상기 기계 학습 장치에 포함된 적어도 하나 이상의 기계 학습 유닛(즉, MLU)이 수행한 데이터 신호 동작은 하나의 데이터 수신 인터페이스를 공유할 수 있으며 상기 기계 학습 유닛은 송신 인터페이스 또는 공유 데이터 수신 인터페이스를 통해 전송 회로에 연결될 수 있다. 유의할 것은, 상기 송신 인터페이스 및 공유 데이터 수신 인터페이스는 모두 하드웨어 회로 방식으로 구현될 수 있다. 본 실시예는 상기 송신 인터페이스와 공유 데이터 수신 인터페이스의 유형에 대해 한정하지 않는다. 여기서, 각각의 기계 학습 유닛은 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함하고, 마스트 처리회로는 입력 데이터(뉴런 데이터 및 가중치)를 복수의 슬레이브 처리회로로 배분하는데 사용되며; 복수의 슬레이브 처리회로는 마스트 처리회로로부터 전송된 입력 데이터에 의해 중간 연산을 병행 수행하여 복수의 중간 결과를 얻은 후 상기 복수의 중간 결과를 마스트 처리회로로 전송하는데 사용된다. 이렇게 되면, 장치는, 기계 학습 유닛마다 각자 그 안에 있는 뉴런을 처리하도록 배분할 수 있고, 상응한 출력 데이터를 대응하여 출력함으로써 한층 또 한층의 신경망 병행 계산을 진행하여 신경망 계산의 병행 처리를 구현할 수 있고 처리 효율을 향상시킬 수 있다.
상기 실시예에 기초하여 상기 동작 도메인은 점프 서브 동작 도메인을 더 포함하고, 상기 점프 서브 동작 도메인은 점프 폭 및 매번 점프한 후 동작하는 점프 데이터 길이를 포함한다. 도 34에 도시된 바와 같이, 데이터 처리 방법이 제공되며, 본 실시예는 전송 회로가 동작 도메인 내의 점프 서브 동작 도메인에 따라 메모리 내의 데이터를 판독하는 구체적인 과정에 관한 것이다. 상기 S2201은 다음 단계를 포함한다.
S2301: 상기 소스 주소로부터 상기 메모리를 판독하기 시작하여 금번 점프한 후의 점프 데이터 길이에 따라 제1 점프 데이터를 획득한다.
본 실시예에서, 데이터 동작 신호의 동작 도메인은 점프 서브 동작 도메인을 포함하고, 상기 점프 서브 동작 도메인은 상기 데이터 동작 신호에 따라 동작 예정 데이터 정보를 판독할 때 상기 서브 동작 도메인의 규칙에 따라 판독하도록 상기 전송 회로를 지시하는데 사용된다. 대안적으로, 상기 점프 서브 동작 도메인은 stride동작 도메인 및/또는 segment동작 도메인을 포함하고, 상기 stride동작 도메인은 상기 데이터 동작 신호가 매번 점프한 폭을 나타내며, 상기 segment동작 도메인은 사전에 설정된 상기 데이터 동작 신호가 매번 분할한 크기를 나타낸다. 유의할 것은, 상기 stride동작 도메인 및 segment동작 도메인이 본 출원의 실시예에서의 길이와 명칭은 단지 일 예시일 뿐 본 출원의 실시예는 이에 한정되지 않는다. 여기서, 상기 점프 서브 동작 도메인은 점프 폭 및 매번 점프한 후 동작하는 점프 데이터 길이를 포함하며 상기 점프 데이터 길이는 사전에 설정된 데이터 길이일 수 있다. 구체적으로, 전송 회로는 동작 예정 데이터 정보 내의 소스 주소로부터 메모리를 판독하기 시작하여 금번 점프한 후 판독된 점프 데이터 길이의 데이터를 제1 점프 데이터로 확정하고, 상기 제1 점프 데이터는 전송 회로가 데이터를 판독할 때 사전에 설정된 길이 데이터만큼 점프한 후 획득한 데이터를 나타내며, 상기 사전에 설정된 길이는 사용자가 실제 상황에 따라 스스로 설정한 것이다. 본 실시예는 이에 대해 한정하지 않는다.
S2302: 상기 점프 데이터의 마지막 주소를 획득하고 상기 점프 폭에 따라 상기 마지막 주소에서 목표 점프 주소로 점프한다.
상기 S2301단계에서 판독된 제1 점프 데이터에 의해, 전송 회로는 상기 제1 점프 데이터의 마지막 주소를 획득하고, 점프 서브 동작 도메인 내의 점프 폭(예를 들어, stride 폭)에 따라 상기 제1 점프 데이터의 마지막 주소로부터 상기 점프 폭의 길이만큼 목표 점프 주소로 점프한다. 상기 제1 점프 데이터의 마지막 주소와 목표 점프 주소 사이의 길이가 점프 서브 동작 도메인 내의 점프 폭이라는 것을 이해해야 한다.
S2303: 매번 점프한 후 얻은 점프 데이터의 길이가 상기 데이터 길이를 만족할 때까지 상기 목표 점프 주소로부터, 점프한 후의 점프 데이터 길이에 따라 제2 점프 데이터를 획득한다.
본 단계에서, 전송 회로는 데이터를 판독할 때 상기 S2302단계에 확정된 목표 점프 주소로부터 사전에 설정된 길이의 데이터를 점프한 후 상기 사전에 설정된 길이만큼 점프한 데이터를 제2 점프 데이터로 확정한다. 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족하면, 상기 기계 학습 장치에 필요한 데이터가 판독 완료됨을 나타내며, 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족하지 않으면, 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족할 때까지, 즉 상기 기계 학습 장치에 필요한 데이터 판독이 완료될 때 까지, 상기 제2 점프 데이터의 마지막 주소로부터 상기 S2301 내지 S2303단계의 점프 순서에 따라 점프하여 해당 데이터를 판독한다.
예시적으로, 표 4에 표시된 바와 같이, 본 실시예에서 전송 회로가 데이터를 판독하는 과정은 다음과 같다. 동작 도메인에 점프 서브 동작 도메인 stride동작 도메인을 더 포함하면, 전송 회로가 데이터 정보의 소스 주소0x110011로부터 공유 메모리 내의 데이터를 판독하되, 사전에 설정된 길이의 데이터(상기 사전에 설정된 길이는 아래 표의 데이터 정보 내의 데이터 길이0x0100보다 작다)를 우선 판독하고 그런 다음 stride길이(0x0008)의 주소를 점프하여 사전에 설정된 길이의 데이터를 다시 판독한다. 이러한 순서에 따라 상기 데이터를 계속하여 판독하되, 판독된 상기 데이터의 총 길이가 표 4의 데이터 정보의 데이터 길이 0x0100가 되면 상기 데이터 판독이 완료됨을 나타낸다. 동작 도메인에 점프 서브 동작 도메인의 segment동작 도메인을 더 포함하면, 전송 회로는 데이터 정보의 소스 주소0x110011로부터 공유 메모리 내의 데이터를 판독하기 시작하되, 우선 segment길이(0x0010)의 데이터를 판독한 다음 stride길이(0x0008)의 주소를 점프하고 다시 segment길이(0x0010)의 데이터를 판독한다. 이러한 순서에 따라 상기 데이터를 계속 판독하되, 판독된 상기 데이터의 총길이가 표 3의 데이터 정보의 데이터 길이0x0100가 되면 상기 데이터 판독이 완료됨을 나타낸다. 유의할 것은, 상기 점프 서브 동작 도메인에서 segment동작 도메인만 있고 stride동작 도메인이 없는 경우, 전송 회로는, 데이터를 판독할 때 소스 주소0x110011로부터 segment길이(0x0010)의 데이터를 판독하되, 판독된 상기 데이터의 총 길이가 아래 표 4의 데이터 정보의 데이터 길이0x0100가 되면, 상기 데이터 판독이 완료됨을 나타낸다.
표 4
본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 소스 주소로부터 공유 메모리를 판독하기 시작하여 금번 점프한 후의 점프 데이터 길이에 따라 제1 점프 데이터를 획득하고, 상기 제1 점프 데이터의 마지막 주소로부터 점프 폭에 따라 목표 점프 주소로 점프한 다음, 매번 점프한 후 얻은 점프 데이터의 길이가 데이터 길이를 만족할 때까지 목표 점프 주소로부터 점프한 후의 점프 데이터 길이에 따라 제2 점프 데이터를 획득한다. 이에 따라, 동작 도메인에 점프 서브 동작 도메인이 포함될 때, 전송 회로가 서브 동작 도메인의 점프 규칙에 따라 데이터를 판독하므로 전송 회로의 데이터 판독 로직을 간소화하고, 데이터의 액세스 효율을 높여 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시킨다.
전송 회로가 수신된 데이터 동작 신호에 따라 동작할 때, 수신하기 시작한 데이터 동작 신호가 하나의 코딩된 명령(coded instruction)이며, 우선 상기 데이터 동작 신호에 대해 디코딩하고 분석해야 하므로, 본 출원의 실시예는 데이터 처리 방법을 제공한다. 도 35에 도시된 바와 같이, 상기 데이터 처리 장치 내의 전송 회로가 상기 데이터 처리 장치 내의 기계 학습 장치에서 송신된 데이터 동작 신호를 수신하는 단계는 다음 단계를 포함한다.
S2401: 상기 데이터 동작 신호를 분석하여 상기 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 얻는다.
유의할 것은, 일반적으로 데이터 처리 과정에서 데이터 동작 신호의 수는 비교적 많으며, 전송 회로가 그 중 하나의 데이터 동작 신호를 처리할 때, 다른 신호는 저장되어 있어야 한다. 구체적으로, 전송 회로가 상기 데이터 동작 신호를 분석하는 데, 구체적으로 상기 데이터 동작 신호에 포함된 데이터 정보 및 상기 데이터 동작 신호의 유형 플래그 비트를 분석한다. 여기서, 상기 데이터 동작 정보는 동작 예정 데이터 길이, 목표 주소 및 최초 주소 등 정보를 포함할 수 있다. 본 실시예는 이에 대해 한정하지 않는다.
S2402: 명령 큐에 따라 상기 분석된 데이터 동작 신호를 수행하며 상기 명령 큐는 상기 데이터 동작 신호의 수행 순위를 나타낸다.
상기 데이터 동작 신호는 수행시 순서에 따라 순차적으로 진행되어야 하고 상기 S401단계에서 전송 회로가 상기 데이터 동작 신호를 분석하여 얻은 데이터 동작 정보 및 유형 플래그 비트에 기초하여, 전송 회로는, 명령 큐에 따라 상기 분석된 데이터 동작 신호를 수행한다.
본 실시예에 따른 데이터 처리 방법은 전송 회로를 통해 상기 데이터 동작 신호를 분석하여 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 얻은 다음 전송 회로가 명령 큐에 의해 분석한 데이터 동작 신호를 수행한다. 이에 따라, 데이터 동작 신호를 수행하기 전에, 먼저 데이터 동작 신호를 분석하고, 그런 다음 순차적으로 수행하므로 전송 회로가 데이터 동작 신호에 따라 동작하는 속도를 크게 향상시킨다.
전송 회로가 큐 내의 순서에 따라 데이터 동작 신호를 수행할 때, 수행 대상이 서로 관련있는 데이터 동작 신호인 점을 고려하여 본 출원의 실시예는 다른 일 실시예를 제공한다. 도 36에 도시된 바와 같이, 상기 전송 회로가 명령 큐에 따라 상기 분석된 데이터 동작 신호를 수행하기 전에, 상기 방법은 다음 단계를 더 포함한다.
S2501: 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하여 판단 결과를 얻는다. 상기 의존 관계는 제s번째 데이터 동작 신호와 상기 제s번째 데이터 동작 신호 이전의 제s-1번째 데이터 동작 신호 사이에 연관 관계가 존재하는지 여부를 나타낸다.
여기서, 전송 회로는 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단해야 하며, 판단 결과에 따라 처리하는 두 인접되어 있는 데이터 동작 신호 사이에 관련성이 있어야 함을 결정한다. 여기서, 제s번째 데이터 동작 신호는 데이터 동작 신호 중 임의의 하나의 신호를 나타낼 뿐 어느 특정한 신호를 표시하지 않는다. 제s-1번째 데이터 동작 신호는 제s번째 데이터 동작 신호 바로 이전의 신호를 나타낸다.
대안적으로, 상기 전송 회로가, 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하는 일 구현방식은 다음과 같다. 즉, 상기 제s번째 데이터 동작 신호에 의해 상기 제s번째 데이터 동작 신호에 필요한 데이터를 추출하는 제1 저장 주소 구간, 및 상기 제s-1번째 데이터 동작 신호에 의해 상기 제s-1번째 데이터 동작 신호에 필요한 데이터를 추출하는 제0 저장 주소 구간을 각각 획득하고, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 있으면, 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 의존 관계가 있음을 확정하고. 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 없으면, 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 의존 관계가 없다고 확정한다. 여기서, 전송 회로는 제s번째 데이터 동작 신호의 제1 주소 저장 구간과 제s-1번째 데이터 동작 신호의 제0 저장 주소 구간 사이의 관계에 따라 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하며, 그 판단 방식은 다음과 같다. 즉, 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 없으면, 상기 제s번째 데이터 동작 신호와 제s-1번째 데이터 동작 신호가 의존 관계가 없고, 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 있으면, 제s번째 데이터 동작 신호와 제s-1번째 데이터 동작 신호가 의존 관계가 있음을 나타낸다.
S2502: 상기 판단 결과가 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호 사이에 의존 관계가 있으면, 상기 제s번째 데이터 동작 신호를 캐싱하고, 상기 제s-1번째 데이터 동작 신호를 수행한 후, 상기 제s번째 데이터 동작 신호를 추출한다.
상기 단계에서 전송 회로가 판단한 두 인접되어 있는 데이터 동작 신호의 의존 관계에 의해, 순서에 따라 데이터 동작 신호를 수행하고, 판단 결과가 제s번째 데이터 동작 신호와 제s-1번째 데이터 동작 신호 사이에 의존 관계가 있으면, 전송 회로는 우선 상기 제s번째 데이터 동작 신호를 캐싱하고, 제s-1번째 데이터 동작 신호에 대한 수행이 완료된 후, 상기 제s번째 데이터 동작 신호를 다시 추출한다.
본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 우선 두 인접되어 있는 데이터 동작 신호 사이의 관련성을 판단하여 데이터 동작 신호의 일관성을 보장한다. 이와 같이, 앞단의 질서있는 준비작업에 의해 후속 상기 데이터 동작 신호에 따라 상응한 동작을 수행하는 순서가 보장됨으로써 데이터의 액세스 효율을 높여 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시킨다.
게다가, 전송 회로가 데이터 동작 신호에 따라 판독한 데이터가 기계 학습 장치에 맞는 격식이 아니므로 전송 회로가 판독된 데이터에 대해 일정한 처리를 진행한 후 기계 학습 장치로 다시 전송해야 하는 점을 고려할 때, 대안적으로, 상기 동작 도메인은, 판독된 데이터에 대해 진행하는 처리작업을 나타내는 기능 플래그 비트를 더 포함한다. 여기서, 데이터 동작 신호의 동작 도메인은 기능 플래그 비트를 포함하고, 상기 기능 플래그 비트는 전송 회로가 상기 기능 플래그 비트의 판독된 데이터에 대해 대응하는 처리를 진행하는 것을 나타낸다. 상기 동작 도메인에 포함된 기능 플래그 비트의 개수는 하나 또는 복수일 수 있다. 본 실시예는 이에 대해 한정하지 않는다. 예시적으로, 상기 기능 플래그 비트가 압축 해제 플래그 비트이며, 상기 플래그가 1이면, 데이터를 판독한 후, 전송 회로는 상기 데이터에 대해 압축 해제한 다음 기계 학습 장치 내에 지정된 MLU에 재전송한다. 혹은 상기 기능 플래그 비트가 암호화 플래그 비트이고 상기 암호화된 플래그 비트가 1이면, 데이터를 판독한 후, 전송 회로는 상기 데이터에 대해 압축 해제한 다음 기계 학습 장치 내에 지정된 MLU로 재전송한다. 본 실시예에서, 전송 회로가 우선 데이터 동작 신호의 동작 도메인 내의 기능 플래그 비트에 따라 판독된 데이터에 대해 대응하는 처리를 진행하고 상기 데이터를 기계 학습 장치로 송신하여 기계 학습 장치가 상기 데이터를 수신한 후 바로 식별하고 연산하도록 하므로 데이터의 처리 효율을 높여 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
일 실시예에서, 본 출원의 실시예는 데이터 처리 장치를 추가 제공한다. 상기 데이터 처리 장치는 프로세서 및 메모리를 포함하고, 상기 메모리에 컴퓨터 프로그램이 저장되어 있고, 상기 프로세서는 상기 컴퓨터 프로그램을 실행시,
내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 단계; 및
상기 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 원하는 입력 데이터를 얻는 단계;를 진행한다. 여기서 상기 데이터 동작 신호는 상기 데이터 동작 신호 브로드캐스트 또는 멀티캐스트 명령을 나타내는 유형 플래그 비트를 포함한다.
본 실시예에 따른 데이터 처리 장치의 구현 원리 및 기술효과는 상기 데이터 처리 방법의 실시예와 유사하므로 여기서 중복 설명하지 않는다.
일 실시예에서, 도 37은 데이터 처리 방법을 제공한다. 본 실시예는 전송 회로가 데이터 동작 신호의 유형 플래그 비트에 따라 데이터 동작 신호의 유형을 확정하고 확정된 유형에 대응하는 동작에 따라 메모리로부터 필요한 데이터를 획득함으로써 액세스 속도를 향상시키는 구체적인 과정에 관한 것이다. 도 37에 도시된 바와 같이, 상기 방법은 다음 단계를 포함한다.
S3101: 내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신한다. 여기서 상기 데이터 동작 신호는 동작 코드를 포함하고, 상기 동작 코드는 상기 데이터 동작 신호 브로드캐스트 또는 멀티캐스트 명령을 나타내는 상기 유형 플래그 비트를 포함한다.
본 실시예에서, 전송 회로는 내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하고, 상기 데이터 동작 신호의 동작 코드는 상기 데이터 동작 신호의 동작 유형을 가리키는데 사용되되, 상기 데이터 동작 신호의 유형 플래그 비트를 포함한다. 여기서, 상기 내부 또는 외부 장치는 인터페이스를 통해 전송 회로에 연결된 기계 학습 장치일 수 있으며, 상기 기계 학습 장치는 예를 들어 복수의 MLU으로 이루어진 연산 기능을 가진 장치와 같은 임의의 하드웨어 형식일 수 있다. 여기서, 전송 회로는 상기 데이터 동작 신호에 포함된 데이터 동작 신호의 유형 플래그 비트에 따라 상기 데이터 동작 신호의 유형을 확정할 수 있다. 예를 들어, 상기 데이터 동작 신호의 유형 플래그 비트의 값이 1이면, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령이다.
S3102: 상기 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는다.
상기 단계S3101에서 전송 회로가 내부 또는 외부 장치에서 송신된 데이터 동작 신호를 수신하는 것에 의해, 전송 회로는 상기 데이터 동작 신호의 유형 플래그 비트에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터, 예를 들어 뉴런 데이터 및 가중치를 얻는다. 여기서, 상기 뉴런 데이터 및 가중치는 내부 또는 외부 장치에 필요한 데이터이다. 예를 들어 상기 내부 또는 외부 장치가 기계 학습 장치일 때, 상기 뉴런 데이터 및 가중치는 기계 학습 장치가 기계 학습 연산시 입력해야 하는 데이터이다. 상기 데이터는 메모리에 미리 저장된 데이터일 수 있으며, 기계 학습 장치가 기계 학습 연산한 후 출력한 데이터일 수도 있다. 본 실시예는 이에 대해 한정하지 않는다.
본 실시예에 따른 데이터 처리 방법에 있어서, 전송 회로는 내부 또는 외부 장치로부터 송신되고 데이터 동작 신호의 유형 플래그 비트를 갖는 데이터 동작 신호에 따라 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행하여 필요한 입력 데이터를 얻는다. 본 실시예에서, 데이터 동작 신호에 데이터 동작 신호의 유형 플래그 비트가 있으므로, 전송 회로는 상기 데이터 동작 신호를 수신한 후 그 중의 데이터 동작 신호의 유형 플래그 비트에 따라 상기 데이터 동작 신호의 구체적인 유형을 판단한 후 메모리 내의 동작 예정 데이터에 대해 대응하는 동작을 수행한다. 이에 따라, 데이터 동작 신호의 유형 플래그 비트에 따라 우선 분류하여, 대응하는 동작에 신속하게 매핑시키므로 데이터의 액세스 로직을 간소화하고 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
아래 몇 개 실시예를 통해 상기 동작 코드 및 동작 도메인, 그리고 이들과 데이터 동작 신호의 유형 플래그 비트, 동작 예정 데이터의 정보 및 데이터 수신 플래그 비트 사이의 관계를 각각 설명한다.
일 실시예에서, 상기 데이터 동작 신호는 동작 도메인을 더 포함하고, 상기 동작 도메인은 상기 입력 데이터를 수신한 장치 또는 처리회로를 나타내는 데이터 수신 플래그 비트를 포함한다. 대안적으로, 상기 데이터 수신 플래그 비트의 개수는 상기 메모리와 상호 작용가능한 장치의 개수 또는 처리회로의 개수를 나타낸다. 대안적으로, 상기 유형 플래그 비트의 값이 CAST이면, 상기 데이터 동작 신호를 브로드캐스트 또는 멀티캐스트 명령으로 확정한다.
본 실시예에서, 데이터 동작 신호의 동작 코드는 상기 데이터 동작 신호의 동작 유형을 가리키는데 사용되고 상기 데이터 동작 신호의 유형 플래그 비트를 포함한다. 예시적으로, 동작 코드 중 데이터 동작 신호의 유형 플래그 비트가 CAST이면, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다. 상기 동작 도메인은 상기 데이터 동작 신호가 수행 과정에 필요한 데이터 정보를 저장하고, 데이터 수신 플래그 비트를 포함할 수 있다. 상기 데이터 수신 플래그 비트는 내부 또는 외부 장치 중 입력 데이터를 수신할 수 있는 장치 또는 처리회로를 나타낸다. 여기서, 상기 장치는 기계 학습 장치 또는 MLU일 수 있으며, 처리회로는 연산 유닛 또는 연산 유닛의 마스트 처리회로 또는 슬레이브 처리회로일 수 있으며, 본 실시예는 이에 대해 한정하지 않는다. 여기서, 데이터 수신 플래그 비트의 개수는 상기 메모리와 상호 작용가능한 장치의 개수 또는 처리회로의 개수를 나타낸다. 예시적으로, 상기 동작 도메인 내의 데이터 수신 플래그 비트에 3개 MLU(기계 학습 유닛)의 플래그 비트가 1이면, 상기 3개 MLU가 데이터를 수신할 수 있음을 나타내고, 하나의 MLU 플래그 비트가 0이면, 상기 하나의 MLU가 데이터를 수신할 수 없음을 나타낸다. 유의할 것은, 데이터 수신할 수 있는 MLU를 1로 표기하는 방식은 단지 일 예시일 뿐, 사용자는 실제 수요에 따라 데이터를 수신할 수 있는 MLU를 0 또는 다른 식별자로 표기할 수 있다. 본 실시예는 이에 대해 한정하지 않는다.
본 실시예에서, 전송 회로는, 데이터 신호의 유형 플래그 비트에 따라, 상기 데이터 동작 신호의 구체적인 유형을 확정한 후 대응하는 동작에 매핑하고, 데이터 수신 플래그 비트에 따라 동작 수행한 후의 데이터를 송신하는 목표 장치를 확정함으로써 데이터의 액세스 로직을 간소화하고 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
예시적으로, 표 5에 표시된 바와 같이, 상기 실시예에 기초하여 본 실시예는 다음 예를 들수 있다. 즉, 동작 코드 중 데이터 동작 신호의 유형 플래그 비트가 CAST이면, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령임을 나타내고, 동작 도메인 중 동작 예정 데이터 정보에 소스 주소 0x110011, 목표 주소 0x000100 및 데이터 길이 0x0100가 포함된다. 여기서, 상기 데이터 길이는 사용자가 스스로 설정한 길이이며, 사용자는 상기 설정한 길이를 하나의 값으로 설정할 수 있으며 복수의 값으로도 설정할 수 있다. 본 실시예는 상기 설정 길이의 구체적인 값 및 개수에 대해 한정하지 않는다. 동작 도메인 내의 데이터 수신 플래그 비트에 3개 MLU의 플래그가 1인 경우 상기 3개의 MLU가 데이터를 수신할 수 있음을 나타내고, 하나의 MLU 플래그가 0인 경우 상기 하나의 MLU가 데이터를 수신할 수 없음을 나타낸다. 구체적으로, 전송 회로는 상기 데이터 동작 신호에 따라 공유 메모리 내의 주소 0x110011로부터 0x0100 길의 데이터를 판독한 후 기계 학습 장치 내의 MLU3, MLU1 및 MLU0의 주소 0x000100에 각각 기록한다.
표 5
본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 데이터 동작 신호에 따라 소스 주소로부터 메모리 판독을 시작하여 데이터 길이를 만족하는 입력 데이터를 획득하고, 데이터 수신 플래그 비트에 따라 입력 데이터를 수신하는 장치 또는 처리회로를 확정한 다음, 데이터 리턴 주소에 따라 입력 데이터를 장치 또는 처리회로 내의 데이터 리턴 주소에 대응하는 저장 공간으로 리턴한다. 본 실시예에서, 전송 회로가 상기 데이터 길이를 만족하는 입력 데이터를 획득할 때 상기 데이터 동작 신호 중 데이터 동작 정보가 가리키는 판독 규칙에 따라 데이터를 판독하므로 전송 회로의 데이터 판독 로직을 간소화하고 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
일 실시예에서, 도 31에 도시된 바와 같이, 본 출원의 실시예에 따른 데이터 처리 장치는 도 31에 도시된 일부분 또는 전체일 수 있으며, 소프트웨어, 하드웨어 또는 이들을 결합하는 방식으로 구현될 수 있다. 상기 데이터 처리 장치(10)는 기계 학습 데이터를 처리하는데 사용되며, 상기 데이터 처리 장치(10)는 기계 학습 장치(11), 전송 회로(12) 및 공유 메모리(13)를 포함하고, 상기 기계 학습 장치(11)는 상기 전송 회로(12)에 연결되고, 상기 전송 회로(12)는 상기 공유 메모리(13)에 연결되며, 상기 전송 회로(12)는 상기 기계 학습 장치(11)에서 발송한 데이터 동작 신호에 따라 상기 공유 메모리(13)로부터 상기 기계 학습 장치(11)에 필요한 입력 데이터를 획득하고 상기 입력 데이터를 상기 기계 학습 장치(11)로 리턴한다. 상기 데이터 동작 신호는 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 가진다. 대안적으로, 상기 기계 학습 장치(11)는 상기 입력 데이터에 따라 기계 학습 연산을 수행하여 출력 뉴런 데이터를 얻는데 사용된다. 대안적으로, 상기 기계 학습 장치(11)는 또한 상기 출력 뉴런 데이터를 새로운 입력 뉴런 데이터로 삼아 상기 전송 회로(12)를 통해 상기 공유 메모리(13)에 전송하여 저장하는데 사용된다.
유의할 것은, 상기 기계 학습 장치, 전송 회로 및 공유 메모리는 모두 하드웨어 회로 방식으로 구현될 수 있다. 예시적으로, 기계 학습 장치는 복수의 기계 학습 유닛(Machine Learning Unit, MLU으로 약칭함)으로 구성된 연산 기능을 갖는 장치이며, 전송 회로는 브로드캐스트 버스(broadcast bus)일 수 있으며, 공유 메모리는 비-휘발성 및/또는 휘발성 메모리일 수 있으며, 램덤 액세스 메모리(RAM), 캐시 메모리(cache memory) 등을 포함하나 이에 한정되지 않는다. 여기서, 상기 기계 학습 장치, 전송 회로 및 공유 메모리 사이는 인터페이스를 통해 데이터를 전송한다. 예를 들어, 기계 학습 장치가 상기 인터페이스를 통해 데이터 동작 신호를 송신할 수 있고, 상기 인터페이스를 통해 데이터를 송신하거나 수신할 수도 있다. 이에 따라, 상기 인터페이스는 송신 인터페이스뿐만 아니라 수신 인터페이스일 수도 있다. 즉, 상기 인터페이스가 송신 인터페이스일 때, 기계 학습 장치는 전송 회로로 데이터 동작 신호 또는 데이터를 전송할 수 있고, 상기 인터페이스가 수신 인터페이스일 때, 기계 학습 장치는 전송 회로에서 송신된 데이터 동작 신호 또는 데이터를 수신할 수 있다. 여기서 상기 인터페이스는 다양한 인터페이스일 수 있으며, 상기 다양한 인터페이스는 모두 하드웨어 회로를 통해 구현될 수 있다. 본 실시예는 상기 다양한 인터페이스의 구체적인 하드웨어 형식에 대해 한정하지 않는다. 상기 인터페이스는 기계 학습 장치, 전송 회로 및 공유 메모리 사이에 데이터 신호 상호작용을 구현할 수 있는 것이면 된다. 여기서, 입력 데이터는 기계 학습 장치가 기계 학습 연산할 때 입력해야 하는 데이터, 예를 들어 입력 뉴런 데이터 및 가중치이다. 상기 데이터는 공유 메모리에 미리 저장된 데이터일 수 있으며, 기계 학습 장치가 기계 학습 연산을 진행한 후 출력한 데이터일 수도 있다. 대안적으로, 기계 학습 장치는 복수의 데이터 I/O 인터페이스 또는 I/O 핀을 통해 바로 공유 메모리에 연결하여 상기 데이터를 획득할 수 있다. 대안적으로 기계 학습 장치는 또한 복수의 데이터 I/O 인터페이스 또는 I/O 핀을 통해 전송 회로에 연결한 후 다시 전송 회로를 통해 공유 메모리에 연결하여 상기 데이터를 획득할 수도 있다.
여기서, 데이터 동작 신호는 전송 회로가 공유 메모리 내의 데이터에 대한 판독 동작을 나타낼 수 있으며 공유 메모리 내의 데이터에 대한 기록 동작을 나타낼 수도 있다. 기계 학습 장치가 보낸 데이터 동작 신호가 판독 동작인 경우, 전송 회로는 공유 메모리에서 상응한 주소에 대응하는 입력 데이터를 찾아 판독한 후, 해당 데이터를 데이터 동작 신호를 보낸 기계 학습 장치로 리턴하고, 기계 학습 장치가 보낸 데이터 동작 신호가 기록 동작인 경우, 전송 회로는 기계 학습 장치에서 출력한 기록 데이터를 공유 메모리에 기록할 수 있다. 여기서, 데이터 동작 신호는 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 포함하며, 상기 데이터 동작 신호의 유형 플래그 비트는 상기 데이터 동작 신호의 유형을 나타낸다. 예를 들어, 상기 데이터 동작 신호의 유형 플래그 비트가 CAST이면, 상기 데이터 동작 신호의 유형이 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다. 상기 동작 예정 데이터의 정보는, 전송 회로가 상기 데이터 동작 신호에 따라 대응하는 동작을 진행할 때 필요한 데이터를 나타내며, 본 실시예는 상기 데이터 동작 신호의 유형 플래그 비트의 구체적인 형식 및 동작 예정 정보 중 구체적인 데이터 정보에 대해 한정하지 않으며 실제 상황에 의해 정할 수 있다.
유의할 것은, 본 출원에 따른 데이터 처리 장치는 기계 학습 연산에 적용되며, 기계 학습 연산은 신경망 연산, k-means연산, 서포트 벡터 머신 연산 등을 포함한다. 신경망 연산을 예로 들어 설명하면, 기계 학습 장치가 수행하는 신경망 내의 연산은 신경망 내의 일층 연산일 수 있으며, 다층 신경망의 구현 과정은 다음과 같다. 정방향 연산에서 이전 층 인공 신경망의 수행이 끝난 후 다음 층의 연산 명령은 연산 유닛에서 계산해 낸 출력 뉴런 데이터를 다음 층 입력 뉴런 데이터로 삼아 연산(또는 상기 출력 뉴런데이터에 대해 일부 동작하여 다시 다음 층의 입력 뉴런 데이터로 삼음)하는 동시에, 가중치를 또한 다음 층 가중치로 교체하며, 역방향 연산에서 이전 층 인공 신경망의 역방향 연산이 끝난 후, 다음 층의 연산 명령은 연산 유닛에서 계산해 낸 입력 뉴런 기울기(마찬가지로 입력된 뉴런 데이터로 삼을 수 있음)를 다음 층의 출력 뉴런 기울기로 하여 연산(마찬가지로 출력된 뉴런 데이터로 삼을 수 있음)(또는 상기 입력 뉴런 기울기에 대해 일부 동작한 후 다시 다음 층의 출력 뉴런 기울로 삼음)하는 동시에 가중치를 다음 층의 가중치로 교체한다. 대안적으로, 본 출원의 실시예에 따른 신경망은 인공 신경망뿐만 아니라 펄스 신경망일 수 있으며, 본 실시예는 이에 대해 한정하지 않는다. 본 실시예에 따른 기계 학습 장치는 입력 데이터에 따라 기계 학습 연산을 수행하는데, 예를 들어, 기계 학습 연산에서 다층의 신경망에 대해 기계 학습 장치는 각층의 신경망이 출력한 뉴런 데이터를 계산할 수 있으며, 각층의 신경망 입력단에 대응하는 복수의 입력 데이터에 대해 곱셈 연산, 합산 연산, 및 함수 연산 등 일련의 기계 학습 연산에 포함된 연산 집합을 진행할 수 있다. 기계 학습 장치가 기계 학습 연산을 통해 현재 층의 출력 뉴런 데이터를 얻은 후 상기 출력 뉴런 데이터를 다음 층의 신경망의 입력 뉴런 데이터로 삼아 기계 학습 연산을 다시 진행한다. 그 전에 기계 학습 장치가 상기 데이터를 수시로 판독하여 기계 학습 연산을 진행하도록 현재 층의 출력 뉴런 데이터를 우선 전송 회로를 통해 공유 메모리에 기록하여 저장할 수 있다.
구체적으로, 실제 응용에서 전송 회로는 기계 학습 장치가 보낸 데이터 동작 신호에 따라 공유 메모리로부터 기계 학습 장치에 필요한 입력 데이터를 획득한 후 수신 인터페이스를 통해 입력 데이터를 기계 학습 장치로 리턴한다. 그런 다음, 기계 학습 장치는 입력 데이터에 의해 기계 학습 연산을 수행하여 출력 데이터를 얻고, 상기 출력 데이터를 새로운 입력 데이터로 하여 전송 회로를 통해 공유 메모리에 전송하여 저장한다. 본 실시예에서, 데이터 동작 신호에 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터 정보가 있으므로, 전송 회로는 상기 데이터 동작 신호를 수신한 후 그 중의 데이터 동작 신호의 유형 플래그 비트에 따라 상기 데이터 동작 신호의 유형을 판단한 후 상기 데이터 동작 신호에 포함된 동작 예정 데이터 정보와 결합하여 동작을 수행한다. 이에 따라, 데이터 동작 신호의 유형 플래그 비트에 따라 우선 분류하여, 대응하는 동작에 신속하게 매핑시키므로 데이터를 액세스하는 로직을 간소화하고 데이터의 액세스 효율을 높이므로 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
일 실시예에서, 도 38에 도시된 바와 같이, 본 출원의 실시예에 따른 데이터 처리 장치에 있어서, 상기 기계 학습 장치(11)는 적어도 하나 이상의 기계 학습 유닛(14)을 포함하고, 상기 데이터 동작 신호는 상기 입력 데이터를 수신하는 목표 기계 학습 유닛을 나타내는 데이터 수신 플래그 비트를 더 포함한다.
여기서, 상기 기계 학습 장치에 포함된 적어도 하나 이상의 기계 학습 유닛(즉, MLU)이 수행한 데이터 신호 동작은 하나의 데이터 수신 인터페이스를 공유할 수 있으며 상기 기계 학습 유닛은 송신 인터페이스 또는 공유 데이터 수신 인터페이스를 통해 전송 회로에 연결될 수 있다. 유의할 것은, 상기 송신 인터페이스 및 공유 데이터 수신 인터페이스는 모두 하드웨어 회로 방식으로 구현될 수 있다. 본 실시예는 상기 송신 인터페이스와 공유 데이터 수신 인터페이스의 유형에 대해 한정하지 않는다. 여기서, 데이터 동작 신호는 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 나타내는 데이터 수신 플래그 비트를 포함한다. 상기 데이터 수신 플래그 비트의 표기방식은 예를 들어 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 1로 표기하고, 입력 데이터를 수신할 수 없는 목표 기계 학습 유닛을 0으로 표기한다. 여기서 수신하는 목표 기계 학습 유닛을 1로 표기하는 것은 단지 하나의 방식일 뿐 실제 응용에서 데이터를 수신할 수 있는 목표 기계 학습 유닛을 0으로 표기하고, 데이터를 수신할 수 없는 목표 기계 학습 유닛을 1로 표기할 수도 있다. 본 실시예에서 상기 데이터 수신 플래그 비트의 구체적인 표기 형식에 대해 한정하지 않는다.
본 실시예에서, 데이터 동작 신호에 포함된 데이터 수신 플래그 비트의 표기 상황에 따라 기계 학습 장치에서 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 확정할 수 있다. 이에 따라, 기계 학습 장치의 각각의 기계 학습 유닛이 데이터를 수신할 때 데이터 동작 신호 내의 데이터 수신 플래그 비트에 의해 결정되므로 데이터의 메모리 액세스 과정에서의 액세스 로직을 간소화하고 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
아래 몇 개 실시예를 통해 본 실시예에 따른 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보, 데이터 수신 플래그 비트 사이의 관계를 각각 소개한다.
일 실시예에서, 상기 데이터 동작 신호의 유형 플래그 비트의 값에 CAST가 포함된 경우, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다. 대안적으로, 상기 동작 예정 데이터의 정보는 상기 동작 예정 데이터가 상기 공유 메모리 중의 소스 주소, 동작 예정 데이터 길이, 및 데이터 동작시킨 후의 데이터 리턴 주소를 포함한다.
본 실시예에서, 데이터 동작 신호의 유형 플래그 비트는 상기 데이터 동작 신호의 동작 유형을 가리킨다. 예시적으로, 표 6에 표시된 바와 같이, 데이터 동작 신호의 유형 플래그 비트가 CAST이면, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령임을 나타내고, 동작 예정 데이터 정보에 소스 주소 0x110011, 목표 주소 0x000100 및 데이터 길이 0x0100를 포함한다. 상기 데이터 길이는 사용자가 스스로 설정한 길이이며, 사용자는 상기 설정 길이를 하나의 값으로 설정할 수 있으며 복수의 값으로도 설정할 수 있다. 본 실시예는 상기 설정 길이의 구체적인 값 및 개수에 대해 한정하지 않는다. 데이터 수신 플래그 비트 중 3개 MLU 플래그가 1인 경우 상기 3개 MLU가 데이터를 수신할 수 있음을 나타내고, 하나의 MLU 플래그가 0인 경우, 상기 하나의 MLU가 데이터를 수신할 수 없음을 나타낸다. 구체적으로, 전송 회로는 상기 데이터 동작 신호에 따라 공유 메모리 내의 주소 0x110011로부터 0x0100 길이만큼의 데이터를 판독한 후 기계 학습 장치 내의 MLU3, MLU1 및 MLU0의 주소 0x000100에 각각 기록한다.
표 6
다른 일 실시예에서, 상기 데이터 동작 신호의 유형 플래그 비트는 제1 유형 플래그 비트 및 제2 유형 플래그 비트를 포함할 수 있다. 대안적으로, 상기 제1 유형 플래그 비트의 값에 I/O를 포함한 경우, 상기 데이터 동작 신호가 I/O 명령임을 나타내고, 상기 제2 유형 플래그 비트는 상기 데이터 동작 신호가 상기 I/O 명령 내의 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다.
본 실시예에서, 상기 데이터 동작 신호는 두 개의 데이터 유형 데이터 플래그 비트를 포함한다. 여기서, 제1 유형 데이터 플래그 비트는 상기 데이터 동작 신호의 유형을 나타내고, 상기 제2 유형 데이터 플래그 비트는 상기 데이터 동작 신호의 동작 정보 내에 포함되어 상기 데이터 동작 신호의 구체적인 서브 유형을 나타낸다. 여기서, 데이터 수신 플래그 비트는 본 실시예와 동일하게 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 나타낸다. 예시적으로, 표 7에 표시된 바와 같이, 제1 유형 데이터 플래그 비트의 값이 I/O인 경우, 상기 데이터 동작 신호가 I/O 명령임을 나타내고, 제2 유형 데이터 플래그 비트의 값이 1인 경우, 상기 데이터 동작 신호가 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령임을 나타낸다. 따라서 상기 제2 유형 데이터 플래그 비트의 값이 0인 경우 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령이 아님을 나타낸다. 동작 예정 데이터 정보는 소스 주소0x110011, 목표 주소0x000100 및 데이터 길이0x0100를 포함한다. 상기 데이터 길이는 사용자가 스스로 설정한 길이이며, 사용자는 상기 설정 길이를 하나의 값으로 설정할 수 있고 상기 설정 길이를 복수의 값으로 설정할 수도 있다. 본 실시예는 이에 대해 한정하지 않는다. 데이터 수신 플래그 비트에 3개 MLU 플래그가 1인 경우 상기 3개 MLU가 데이터를 수신할 수 있음을 나타내고, 하나의 MLU 플래그가 0인 경우 상기 하나의 MLU가 데이터를 수신할 수 없음을 나타낸다. 구체적으로, 전송 회로는 상기 데이터 동작 신호에 따라 공유 메모리 내의 주소0x110011로부터 0x0100 길이만큼의 데이터를 판독한 후 기계 학습 장치 내의 MLU3, MLU1 및 MLU0의 주소 0x000100에 각각 기록한다.
표 7
다른 일 실시예에서, 상기 표 1 또는 표 2의 기초상에 상기 데이터 동작 신호는 점프 정보를 더 포함할 수 있다. 상기 점프 정보는 점프 폭 및 매번 점프한 후 동작하는 데이터 길이를 포함한다. 대안적으로, 상기 점프 정보는 stride점프 정보 및/또는 segment점프 정보를 포함한다.
본 실시예에서, 데이터 동작 신호에 포함된 점프 정보는, 상기 데이터 동작 신호에 따라 동작 예정 데이터 정보를 판독할 때 상기 점프 정보의 규칙에 따라 판독하도록 상기 전송 회로를 지시한다. 구체적인 판독방법은 다음과 같다. 전송 회로가 동작 예정 데이터 정보 내의 소스 주소로부터 공유 메모리 내의 데이터를 판독하기 시작하여 금번 점프한 후, 우선 판독된 점프 데이터 길이의 데이터를 제1 점프 데이터로 확정한 다음 전송 회로가 상기 제1 점프 데이터의 마지막 주소를 획득하고 점프 정보 내의 점프 폭에 따라 상기 제1 점프 데이터의 마지막 주소로부터 목표 점프 주소로 상기 점프 폭 길이의 데이터를 점프한다. 여기서 제1 점프 데이터의 마지막 주소와 목표 점프 주소 사이의 길이가 바로 점프 정보 내의 점프 폭이라는 것을 이해해야 한다. 이어서, 전송 회로는 다시 목표 점프 주소로부터 사전에 설정된 길이의 데이터를 점프하여 상기 사전에 설정된 길이만큼 점프한 데이터를 제2 점프 데이터로 확정하고, 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족하면, 상기 기계 학습 장치에 필요한 데이터의 판독이 완료됨을 나타내고, 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족하지 않으면, 상기 제2 점프 데이터의 마지막 주소로부터 상기 점프 순서에 따라 점프하기 시작하여 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족할 때까지, 즉 상기 기계 학습 장치에 필요한 데이터의 판독이 완료될 때까지 상기 데이터를 판독한다.
일반적으로, 본 출원의 실시예에 따른 데이터 처리 장치는 데이터 동작 신호에 대해 판독/기록 작업 진행하기 전에 데이터 동작 신호를 분석해야 한다. 대안적으로, 상기 전송 회로는 상기 데이터 동작 신호를 저장하는 명령 저장 유닛; 상기 데이터 동작 신호를 분석하여 상기 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 얻도록 구성된 명령 처리 유닛; 명령 큐를 저장하는 저장 큐 유닛을 포함한다. 여기서, 상기 명령 큐는 상기 명령 큐의 선후 순서에 따라 수행하고자 하는 복수의 상기 데이터 동작 신호를 포함한다. 여기서, 일반적인 데이터 처리 과정에서 데이터 동작 신호의 수가 비교적 많고, 그 중 하나의 데이터 동작 신호를 처리할 때, 다른 데이터 동작 신호는 상기 명령 저장 유닛에 저장되어 있어야 한다. 명령 처리 유닛은 상기 데이터 동작 신호를 분석하는 과정에 상기 데이터 동작 신호에 포함된 데이터 정보를 분석한다. 한편, 데이터 동작 신호의 값 획득, 디코딩 및 발송 과정이 일련의 절차 작업이고 모든 데이터 동작 신호가 순서에 따라 위 과정을 순차적으로 수행해야 하므로 저장 큐 유닛을 통해 명령 큐를 저장한다.
게다가, 명령 처리 유닛이 하나의 데이터 동작 신호를 처리한 후에야 큐 내의 다음 데이터 동작 신호를 처리할 수 있으므로, 상기 현재 처리가 완료된 데이터 동작 신호와 다음 데이터 동작 신호 사이에 관련이 있어야 한다. 대안적으로, 상기 전송 회로는 제s번째 데이터 동작 신호와 상기 제s번째 데이터 동작 신호 이전의 제s-1번째 데이터 동작 신호 사이에 연관 관계가 존재하는지 여부를 확정하는 의존 관계 처리 유닛을 더 포함한다. 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호 사이에 연관 관계가 존재하면, 상기 제s번째 데이터 동작 신호를 상기 명령 저장 유닛 내에 캐싱하고, 상기 제s-1번째 데이터 동작 신호를 수행한 후 상기 명령 저장 유닛으로부터 상기 제s번째 데이터 동작 신호를 추출하여 상기 명령 처리 유닛으로 전송한다. 여기서, 상기 제s번째 데이터 동작 신호와 제s번째 데이터 동작 신호 이전의 제s-1번째 데이터 동작 신호가 연관 관계가 존재하는지 여부를 확정하는 단계는 다음 과정을 포함한다. 즉, 상기 제s번째 데이터 동작 신호에 의해 상기 제s번째 데이터 동작 신호에 필요한 데이터의 제1 저장 주소 구간을 추출하고, 상기 제s-1번째 데이터 동작 신호에 의해 상기 제s-1번째 데이터 동작 신호에 필요한 데이터의 제0 저장 주소 구간을 추출한다. 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하면, 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 연관 관계가 있음을 확정하고, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하지 않으면, 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 연관 관계가 없음을 확정한다.
본 실시예에서, 데이터 조작 장치가 데이터 처리 신호에 따라 동작하기 전에 상기 미사용 데이터 처리 신호를 순차적으로 저장하고, 사용시 순차적으로 분석하고 디코딩한다. 분석하고 디코딩하는 과정에 두 개의 인접되어 있는 데이터 동작 신호 사이의 관련성을 판단하여 데이터 동작 신호의 일관성을 보장한다. 이에 따라, 앞단의 질서있는 준비작업에 의해 후속 상기 데이터 동작 신호에 따라 상응한 동작을 수행하는 순서가 보장됨으로써 데이터의 액세스 효율을 향상시키므로 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시켰다.
본 출원의 실시예는 데이터 처리 방법을 더 제공한다. 상기 방법은 도 31에 도시된 하드웨어 회로에 적용될 수 있다. 상기 회로는 기계 학습 장치(11), 전송 회로(12) 및 공유 메모리(13)를 포함하고, 기계 학습 장치(11)와 상기 전송 회로(12), 전송 회로(12)와 공유 메모리(13)는 모두 인터페이스를 통해 연결되며, 상기 인터페이스는 하드웨어 회로 방식으로 구현될 수 있다. 본 실시예는 상기 각종 인터페이스의 구체적인 하드웨어 형식에 대해 한정하지 않는다. 여기서, 전송 회로(12)는 기계 학습 장치(11)가 보낸 데이터 동작 신호에 따라 공유 메모리(13)로부터 기계 학습 장치(11)에 필요한 입력 데이터를 획득하고 입력 데이터를 기계 학습 장치(11)로 리턴하는데 사용된다. 기계 학습 장치(11)는 입력 데이터에 따라 기계 학습 연산을 수행하여 출력 뉴런 데이터를 획득하고 출력 뉴런 데이터를 새로운 입력 뉴런 데이터로 삼아 전송 회로(12)를 통해 공유 메모리(13)에 전송한 후 저장한다.
본 출원의 목적, 기술적 방안 및 장점이 더욱 명확해지도록 이하 첨부된 도면 및 실시예를 결합하여 본 출원을 더욱 상세하게 설명한다. 여기서 기술되는 구체적인 실시예는 본 출원을 설명하는 것일 뿐, 본 출원을 한정하는 것은 아니다. 본 출원의 실시예에 따른 데이터 처리 방법은, 데이터를 액세스하거나 공유 저장 중인 데이터가 많을 경우, 기계 학습 칩이 데이터 액세스시의 액세스 속도를 향상시키는 기술적 과제를 해결하고자 한다. 아래 실시예와 첨부 도면을 결합하여 본 출원의 기술적 방안 및 본 출원의 기술적 방안을 통해 상기 기술 과제를 어떻게 해결할 것인가에 대해 상세하게 설명한다. 아래 실시예들은 결합할 수 있으며 동일 또는 유사한 개념 혹은 과정은 일부 실시예에서 중복 설명하지 않는다. 유의할 것은, 본 출원에 따른 데이터 처리 방법에서 그 수행 주체가 전송 회로이며, 상기 수행 주체는 데이터 처리 장치가 될 수도 있다. 상기 장치는 소프트웨어, 하드웨어 또는 이들의 결합방식으로 데이터 분석 단말의 일부분 또는 전체를 구현할 수 있다.
일 실시예에서, 도 38은 데이터 처리 방법을 도시하고 있다. 본 실시예는 전송 회로가 데이터 동작 신호의 유형 플래그 비트에 따라 데이터 동작 신호의 유형을 확정함으로써 대응하는 동작에 매핑한 후 상기 동작에 따라 공유 메모리로부터 기계 학습 장치에 필요한 데이터를 획득하여 액세스 속도를 향상시키는 구체적인 과정에 관한 것이다. 도 38에 도시된 바와 같이, 상기 방법은 다음 과정을 포함한다.
S4101: 상기 데이터 처리 장치 내의 전송 회로가 상기 데이터 처리 장치 내의 기계 학습 장치가 송신한 데이터 동작 신호를 수신한다. 여기서 상기 데이터 동작 신호는 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 포함한다.
여기서, 기계 학습 장치는 복수의 MLU로 구성된 연산 기능을 갖는 장치일 수 있으며, 전송 회로는 브로드캐스트 버스일 수 있으며, 공유 메모리는 비-휘발성 및/또는 휘발성 메모리일 수 있으며, 램덤 액세스 메모리(RAM), 고속 캐시 메모리 등을 포함하나 이에 한정되지 않는다. 본 실시예에서, 데이터 처리 장치 내의 전송 회로는 상기 데이터 처리 장치 내의 기계 학습 장치가 송신한 데이터 동작 신호를 수신한다. 여기서 상기 데이터 동작 신호는 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 포함한다. 여기서, 전송 회로와 기계 학습 장치 간의 데이터 동작 신호의 전송은 인터페이스를 통해 이루어질 수 있다. 전송 회로는 상기 데이터 동작 신호에 포함된 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터 정보에 따라 상기 데이터 동작 신호의 유형 및 동작시 필요한 데이터 정보를 확정할 수 있다.
S4102: 상기 전송 회로는 상기 데이터 동작 신호의 유형 플래그 비트에 따라 공유 메모리 내의 데이터에 대해 수행하는 동작을 확정하고, 상기 동작 예정 데이터의 정보에 의해 상기 동작 예정 데이터에 대해 상기 동작을 수행하여 상기 기계 학습 장치에 필요한 입력 데이터를 얻으며, 상기 입력 데이터를 상기 기계 학습 장치로 리턴한다.
상기 단계S4101에서 전송 회로가 수신한 기계 학습 장치에서 송신된 데이터 동작 신호에 의해, 전송 회로는 상기 데이터 동작 신호의 유형 플래그 비트에 의해 공유 메모리 내의 데이터에 대해 수행할 동작을 확정하며, 상기 데이터 동작 신호 중 동작 예정 데이터의 정보에 의해 상기 공유 메모리 내의 어떤 데이터에 대해 상기 동작(이러한 데이터가 바로 동작 예정 데이터이다)을 수행할지 확정한다. 그런 다음 기계 학습 장치에 필요한 입력 데이터를 얻고 상기 입력 데이터를 기계 학습 장치로 리턴한다. 여기서, 입력 데이터는 기계 학습 장치가 기계 학습 연산시 필요한 입력 데이터이다. 상기 데이터는 공유 메모리에 미리 저장된 데이터일 수 있으며, 기계 학습 장치가 기계 학습 연산을 수행한 후 출력한 데이터일 수도 있다.
S4103: 상기 기계 학습 장치가 상기 입력 데이터에 의해 기계 학습 연산을 수행하여 출력 데이터를 얻으며, 상기 출력 데이터를 새로운 입력 데이터로 삼고, 상기 전송 회로를 통해 상기 공유 메모리로 전송하여 저장한다.
본 단계에서, 기계 학습 장치는 상기 S4102단계의 전송 회로가 송신한 입력 데이터에 따라 기계 학습 연산을 수행하여 출력 데이터를 얻는다. 그런 다음, 상기 출력 데이터를 새로운 입력 데이터로 삼고 전송 회로를 통해 공유 메모리로 전송하여 저장한다. 여기서, 기계 학습 장치가 수행한 연산이 신경망 연산인 것을 예로 들어 설명한다. 상기 신경망 연산은 신경망 내의 일층 연산일 수 있으며, 다층 신경망에 대한 구현 과정은 다음과 같다. 정방향 연산에서 이전 층 인공 신경망의 수행이 끝난 후 다음 층의 연산 명령은 연산 유닛에서 계산해 낸 출력 뉴런 데이터를 다음 층 입력 뉴런 데이터로 하여 연산(혹은 상기 출력 뉴런 데이터에 대해 일부 동작을 수행하여 다시 다음 층의 입력 뉴런 데이터로 사용함)하는 동시에, 가중치를 또한 다음 층 가중치로 교체하며, 역방향 연산에서 이전 층 인공 신경망의 역방향 연산이 끝난 후, 다음 층의 연산 명령은 연산 유닛에서 계산해 낸 입력 뉴런 기울기(마찬가지로 입력된 뉴런 데이터로 삼을 수 있음)를 다음 층의 출력 뉴런 기울기로 하여 연산(마찬가지로 출력된 뉴런 데이터로 삼을 수 있음)(또는 상기 입력 뉴런 기울기에 대해 일부 동작을 수행한 후 다시 다음 층의 출력 뉴런 기울로 삼음)하는 동시에 가중치를 다음 층의 가중치로 교체한다. 대안적으로, 본 출원의 실시예에 따른 신경망은 인공 신경망뿐만 아니라 펄스 신경망일 수 있으며, 본 실시예는 이에 대해 한정하지 않는다. 본 실시예에 따른 기계 학습 장치는 입력 데이터에 따라 기계 학습 연산을 수행할 수 있다. 예를 들어, 기계 학습 연산의 다층 신경망에 대해, 기계 학습 장치는 각층의 신경망이 출력한 뉴런 데이터를 계산할 수 있으며, 각층 신경망 입력단에 대응하는 복수의 입력 데이터에 대해 곱셈 연산, 합산 연산, 및 함수 연산 등 일련의 기계 학습 연산에 포함된 연산 집합을 진행할 수 있다. 기계 학습 장치가 기계 학습 연산을 통해 현재 층의 출력 뉴런 데이터를 얻은 후 상기 출력 뉴런 데이터를 다음 층의 신경망의 입력 뉴런 데이터로 삼아 기계 학습 연산을 다시 진행할 수 있다. 그 전에 기계 학습 장치가 상기 데이터를 수시로 판독하여 기계 학습 연산하도록 현재 층의 출력 뉴런 데이터를 우선 전송 회로를 통해 공유 메모리에 기록하여 저장할 수 있다.
본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 기계 학습 장치가 송신 인터페이스를 통해 발송한 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 포함하는 데이터 동작 신호에 따라, 공유 메모리로부터 기계 학습 장치에 필요한 입력 데이터를 획득하고, 수신 인터페이스를 통해 입력 데이터를 기계 학습 장치로 리턴한다. 그런 다음 기계 학습 장치는 입력 데이터에 따라 기계 학습 연산을 수행하여 출력 데이터를 얻으며, 상기 출력 데이터를 다시 새로운 입력 데이터로 하여 전송 회로를 통해 공유 메모리로 전송하여 저장한다. 본 실시예에서, 데이터 동작 신호에 유형 플래그 비트 및 동작 예정 데이터 정보가 포함되므로 전송 회로는 상기 데이터 동작 신호를 수신한 후 그 중의 데이터 동작 신호의 유형 플래그 비트에 따라 상기 데이터 동작 신호의 유형을 판단한 후 상기 데이터 동작 신호에 포함된 동작 예정 데이터 정보를 결합하여 대응하는 동작을 수행한다. 이에 따라, 데이터 동작 신호의 유형 플래그 비트에 따라 우선 분류하여, 대응하는 동작에 신속하게 매핑시키므로 데이터를 액세스하는 로직을 간소화하고 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스시 액세스 속도를 크게 향상시켰다.
일 실시예에서, 상기 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 상기 데이터 동작 신호는 데이터 수신 플래그 비트를 더 포함하고, 상기 입력 데이터를 상기 기계 학습 장치로 리턴하는 과정은, 상기 전송 회로가 상기 데이터 수신 플래그 비트의 값에 의해 상기 입력 데이터를 수신하는 목표 기계 학습 유닛을 확정하고 상기 입력 데이터를 상기 목표 기계 학습 유닛으로 송신하는 것을 포함한다.
본 실시예에서, 상기 기계 학습 장치에 포함된 적어도 하나 이상의 기계 학습 유닛(즉 MLU)이 수행하는 데이터 신호 동작은 하나의 데이터 수신 인터페이스를 공유할 수 있다. 상기 MLU는 송신 인터페이스 또는 공유 데이터 수신 인터페이스를 통해 전송 회로와 신호 또는 데이터 전송을 한다. 유의할 것은, 상기 송신 인터페이스 및 공유 데이터 수신 인터페이스는 모두 하드웨어 회로의 방식으로 구현될 수 있으며, 본 실시예에서는 상기 송신 인터페이스 및 공유 데이터 수신 인터페이스의 유형에 대해 한정하지 않는다. 여기서, 데이터 동작 신호는 데이터 수신 플래그 비트를 포함하고, 상기 데이터 수신 플래그 비트는 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 나타낸다. 상기 데이터 수신 플래그 비트의 표기방식은 예를 들어 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 1로 표기한다. 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 1로 표기하는 것은 일 방식일 뿐, 실제 응용에서 데이터를 수신할 수 있는 목표 기계 학습 유닛을 0으로 표기할 수도 있음을 이해할 수 있다. 본 실시예에서는 상기 데이터 수신 플래그 비트의 구체적인 표기 형식에 대해 한정하지 않는다. 구체적으로, 전송 회로는 데이터 동작 신호 중의 데이터 수신 플래그 비트의 값에 따라 입력 데이터를 수신하는 목표 MLU을 확정하고, 입력 데이터를 목표 MLU로 송신한다. 본 실시예에서, 데이터 동작 신호에 포함된 데이터 수신 플래그 비트의 표기 상황에 따라, 전송 회로는 기계 학습 장치에서 입력 데이터를 수신할 수 있는 목표 기계 학습 유닛을 확정할 수 있다. 이에 따라, 기계 학습 장치의 각각의 기계 학습 유닛이 데이터를 수신할 때, 데이터 동작 신호 중의 데이터 수신 플래그 비트에 의해 확정하므로, 데이터의 메모리 엑세스 과정에서의 메모리 엑세스 로직을 간소화하고, 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시킨다.
대안적으로, 상기 데이터 동작 신호의 유형 플래그 비트의 값이 CAST일 때, 전송 회로는 상기 데이터 동작 신호를 브로드캐스트 또는 멀티캐스트 명령으로 확정한다. 하나의 선택적인 방식에서, 데이터 동작 신호의 상기 데이터 동작 신호의 유형 플래그 비트는, 상기 데이터 동작 신호의 동작 유형을 가리키고, 데이터 동작 신호의 유형 플래그 비트가 CAST인 경우, 상기 데이터 동작 신호가 브로드캐스트 또는 멀티캐스트 명령임을 표시한다. 여기서 CAST로 브로드캐스트 또는 멀티캐스트 명령을 표시하는 것은, 단지 일 실시예에 속하며, 사용자는 실제 상황에 따라 상기 데이터 유형 플래그 비트에 대해 다시 정의할 수 있다는 것을 이해해야 한다. 본 실시예는 이에 대하여 한정하지 않는다.
대안적으로, 상기 데이터 동작 신호의 유형 플래그 비트는 제1 유형 플래그 비트 및 제2 유형 플래그 비트를 포함할 수 있으며, 상기 제1 유형 플래그 비트는 상기 데이터 동작 신호가 I/O 명령인지를 나타내고, 상기 제2 유형 플래그 비트는 상기 데이터 동작 신호가 상기 I/O 명령 중의 브로드캐스트 또는 멀티캐스트 명령인지를 나타낸다. 따라서, 상기 제1 유형 플래그 비트의 값이 I/O이면, 상기 전송 회로는 상기 데이터 동작 신호를 I/O 명령으로 확정하고, 상기 제2 유형 플래그 비트의 값이 1이면, 상기 전송 회로는 상기 데이터 동작 신호를 상기 I/O 명령 내의 브로드캐스트 또는 멀티캐스트 명령으로 확정한다.
상기 선택 가능한 방식에서, 상기 데이터 동작 신호는 두 개의 데이터 유형의 데이터 플래그 비트를 포함하고, 여기서, 제1 유형 데이터 플래그 비트는 상기 데이터 동작 신호의 유형을 표시하고, 상기 제2 유형 데이터 플래그 비트는 상기 데이터 동작 신호의 동작 정보에 설정되어 상기 데이터 동작 신호의 구제적인 서브 유형을 표시한다. 구체적으로, 상기 데이터 동작 신호 중의 제1 유형 플래그 비트의 값이 I/O인 경우, 전송 회로는 상기 데이터 동작 신호를 입력/출력 명령으로 확정하고, 상기 데이터 동작 신호 중의 제2 유형 플래그 비트의 값이 1인 경우, 전송 회로는 상기 데이터 동작 신호를 입력/출력 명 중의 브로드캐스트 또는 멀티캐스트 명령으로 확정한다.
일 실시예에서, 도 39는 데이터 처리 방법을 제공한다. 본 실시예는 전송 회로가 데이터 동작 신호에 포함된 데이터 정보에 의해 공유 메모리로부터 데이터를 판독하고, 상기 데이터 동작 정보에 따라 판독된 데이터를 목표 기계 학습 유닛으로 리턴하는 구체적인 과정에 관한 것이다. 도 39에 도시된 바와 같이, 상기 동작 예정 데이터의 정보가 상기 동작 예정 데이터가 상기 공유 메모리 내의 소스 주소, 동작 예정 데이터 길이, 및 데이터 동작한 후의 데이터 리턴 주소를 포함하면, 상기 S4103은 다음 단계를 포함한다.
S4201: 상기 전송 회로가 상기 소스 주소로부터 상기 공유 메모리를 판독하여 상기 데이터 길이를 만족하는 상기 입력 데이터를 획득한다.
본 실시예에서, 데이터 동작 신호의 동작 예정 데이터의 정보에 동작 예정 데이터가 메모리 내의 소스 주소, 동작 예정 데이터 길이, 및 데이터를 동작시킨 후의 데이터 리턴 주소를 포함하므로 전송 회로는 상기 공유 메모리 내의 소스 주소로부터 데이터를 판독하고, 사전에 설정된 규칙에 따라 동작 대기를 만족하는 데이터 길이를 판독한다. 여기서 상기 동작 예정 데이터 길이는 사용자가 실제 상황에 따라 스스로 설정한 것이다. 본 실시예는 이에 대해 한정하지 않는다. 전송 회로가 상기 데이터 길이를 만족하는 입력 뉴런 데이터 및 데이터를 획득하는 과정은, 사전에 설정된 규칙에 따라 공유 메모리로부터 상기 데이터 길이를 만족하는 데이터를 판독한 것이며, 상기 사전에 설정된 규칙은 또한 사용자가 실제 상황에 따라 정한 규칙이며, 본 실시예는 이에 대해 한정하지 않는다. 예를 들어, 소스 주소로부터 하나씩 판독하되 판독된 데이터의 길이가 상기 데이터의 길이를 만족할 때가지 판독하는 방식일 수 있다.
S4202: 상기 전송 회로는 상기 데이터 리턴 주소 및 상기 데이터 수신 플래그 비트에 따라 상기 입력 데이터를 상기 목표 기계 학습 유닛으로 리턴한다.
상기 S4201 단계에서 전송 회로가 데이터 길이를 만족하는 입력 데이터를 획득하고 상기 데이터를 동작 예정 데이터의 정보 중의 데이터 리턴 주소로 리턴한다. 여기서, 상기 동작 예정 데이터의 정보 중의 데이터 리턴 주소는 기계 학습 장치의 복수의 목표 기계 학습 유닛 내의 주소일 수 있다. 여기서, 전송 회로는 데이터 동작 신호에 포함된 데이터 수신 플래그 비트에 따라 데이터가 학습 장치 중의 목표 기계 학습 유닛으로 리턴하는 것을 확정한다.
본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 소스 주소로부터 공유 메모리를 판독하여 상기 데이터 길이를 만족하는 입력 데이터를 획득하고, 데이터 리턴 주소 및 데이터 수신 플래그 비트에 따라 입력 데이터를 목표 기계 학습 유닛으로 리턴한다. 전송 회로가 상기 데이터 길이를 만족하는 입력 데이터를 획득할 때, 상기 데이터 동작 신호 중의 데이터 동작 정보가 가리키는 판독규칙에 따라 데이터를 판독하므로, 전송 회로의 데이터 판독 로직을 간소화하고, 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스 시의 액세스 속도를 크게 향상시켰다.
일 실시예에서, 도 40은 데이터 처리 방법을 제공한다. 상기 임의의 한 실시예에 따르면, 상기 실시예 중의 동작 정보는 점프 정보를 포함할 수 있고, 상기 점프 정보는 점프 폭 및 매번 점프 후 동작하는 점프 데이터 길이를 포함한다. 상기 실시예는 전송 회로가 동작 정보 중의 점프 정보에 의해 공유 메모리 내의 데이터를 판독하는 구체적인 과정에 관한 것이다. 도 40에 도시된 바와 같이, 상기 S4201은 다음 단계를 포함한다.
S4301: 상기 전송 회로는 상기 소스 주소로부터 상기 공유 메모리를 판독하며, 금번 점프한 후의 점프 데이터 길이에 의해 제1 점프 데이터를 획득한다.
본 실시예에서, 데이터 동작 신호의 동작 정보는 점프 정보를 포함하고, 상기 점프 정보는 상기 데이터 동작 신호에 따라 동작 예정 데이터 정보를 판독할 때, 상기 점프 정보의 규칙에 따라 판독하도록 상기 전송 회로를 지시한다. 여기서, 상기 점프 정보는 점프 폭 및 매번 점프한 후 동작하는 점프 데이터 길이를 포함하며 상기 점프 데이터 길이는 사전에 설정된 데이터 길이일 수 있다. 대안적으로, 상기 점프 정보는 stride점프정보 및/또는 segment점프정보를 포함하고, 상기 stride점프정보는 상기 데이터 동작 신호의 매번 점프 폭을 나타내며, 상기 segment점프정보는 사전에 설정된 상기 데이터 동작 신호의 매번 분할 크기를 나타낸다.
구체적으로, 전송 회로는 동작 예정 데이터 정보 중의 소스 주소로부터 공유 메모리를 판독하고, 금번 점프한 후, 판독된 점프 데이터 길이의 데이터를 제1 점프 데이터로 확정하며, 상기 제1 점프 데이터는 전송 회로가 데이터 판독시 사전에 설정된 길이 데이터를 점프한 후 획득한 데이터를 표시한다. 여기서, 상기 사전에 설정된 길이는 사용자가 실제 상황에 따라 스스로 설정한 것이며, 본 실시예는 이에 대하여 한정하지 않는다.
S4302: 상기 전송 회로는 상기 제1 점프 데이터의 마지막 주소를 획득하고, 상기 점프 폭에 따라 상기 마지막 주소로부터 목표 점프 주소로 점프한다.
상기 S4301 단계에서 판독된 제1 점프 데이터에 의해, 전송 회로는 상기 제1 점프 데이터의 마지막 주소를 획득하고, 점프 정보 중의 점프 폭(예를 들어, stride 폭)에 따라 상기 제1 점프 데이터의 마지막 주소로부터 목표 점프 주소로 상기 점프 폭의 길이를 점프한다. 상기 제1 점프 데이터의 마지막 주소와 목표 점프 주소 사이의 길이가 점프 정보 중의 점프 폭이라는 것을 이해해야 한다.
S4303: 상기 전송 회로는 상기 목표 점프 주소부터, 점프 후의 점프 데이터 길이에 따라 제2 점프 데이터를 획득하되, 매번 점프한 후 얻는 점프 데이터의 길이가 상기 데이터 길이를 만족할 때까지 한다.
본 단계에서, 전송 회로가 데이터를 판독할 때 상기 S4302단계에 확정된 목표 점프 주소로부터 시작하여 사전에 설정된 길이의 데이터를 점프한 후 상기 사전에 설정된 길이만큼 점프한 데이터를 제2 점프 데이터로 확정한다. 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족하면, 상기 기계 학습 장치에 필요한 데이터의 판독이 완료됨을 나타내며, 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족하지 않으면, 상기 제2 점프 데이터의 마지막 주소로부터 상기 S4301 내지 S4303단계 내의 점프 순서에 따라 점프하여 상기 데이터를 판독하되, 상기 제2 점프 데이터의 주소와 상기 점프 시작의 소스 주소 사이의 길이가 기계 학습 장치에 필요한 데이터의 데이터 길이를 만족할 때까지, 즉 상기 기계 학습 장치에 필요한 데이터의 판독이 완료될 때 까지 판독한다.
본 실시예에 따른 데이터 처리 방법의 구현 원리와 기술적 효과가 상기 데이터 처리 장치의 실시예와 유사하므로 여기서 중복 설명하지 않는다. 본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 소스 주소로부터 공유 메모리를 판독하기 시작하여 금번 점프한 후의 점프 데이터 길이에 따라 제1 점프 데이터를 획득하고, 상기 제1 점프 데이터의 마지막 주소로부터 점프 폭에 따라 목표 점프 주소에 점프한 후 목표 점프 주소로부터 점프한 후의 점프 데이터 길이에 따라 제2 점프 데이터를 획득하되, 매번 점프한 후 얻은 점프 데이터의 길이가 데이터 길이를 만족할 때까지 획득한다. 이에 따라, 동작 정보에 점프 정보를 할 때, 전송 회로가 점프 정보의 점프 규칙에 따라 데이터를 판독하므로 전송 회로의 데이터 판독 로직을 간소화하고, 데이터의 액세스 효율을 높여, 기계 학습 칩이 데이터 액세스시의 액세스 속도에 향상시킨다.
전송 회로가 수신 데이터 동작 신호에 따라 동작할 때, 수신 시작한 데이터 동작 신호는 하나의 코딩된 명령(coded instruction)이며 우선 상기 데이터 동작 신호에 대해 디코딩하고 분석해야 한다. 그러므로 도 41에 도시된 바와 같이, 본 출원의 실시예에 따른 데이터 처리 방법에서 상기 데이터 처리 장치 내의 전송 회로가 상기 데이터 처리 장치 내의 기계 학습 장치에서 송신된 데이터 동작 신호를 수신하는 단계는 다음 단계를 포함한다.
S4401: 상기 전송 회로가 상기 데이터 동작 신호를 분석하여 상기 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 얻는다.
유의할 것은, 일반적인 데이터 처리과정에서 데이터 동작 신호의 수가 많고, 전송 회로가 그 중 하나의 데이터 동작 신호를 처리할 때, 다른 신호들은 저장해두어야 한다. 구체적으로, 전송 회로는 상기 데이터 동작 신호를 분석하고, 상기 데이터 동작 신호에 포함된 데이터 정보 및 상기 데이터 동작 신호의 유형 플래그 비트를 분석한다. 여기서, 상기 데이터 동작 정보는 동작 예정 데이터 길이, 목표 주소 및 소스 주소 등의 정보를 포함하며, 본 실시예는 이에 대해 한정하지 않는다.
S4402: 상기 전송 회로가 명령 큐(queue)에 의해 상기 분석한 데이터 동작 신호를 수행한다. 여기서 상기 명령 큐는 상기 데이터 동작 신호의 수행 순위를 나타낸다.
상기 데이터 동작 신호는 수행시 순서에 따라 순차적으로 진행되어야 하고 상기 S4401단계에서 전송 회로가 상기 데이터 동작 신호를 분석하여 얻은 데이터 동작 정보 및 유형 플래그 비트를 기반으로 전송 회로는 명령 큐에 따라 상기 분석된 데이터 동작 신호를 수행한다는 것을 이해해야 한다.
본 실시예에 따른 데이터 처리 방법은 전송 회로를 통해 상기 데이터 동작 신호에 대해 분석하여 데이터 동작 신호의 유형 플래그 비트 및 동작 예정 데이터의 정보를 얻은 다음, 전송 회로가 명령 큐에 따라 이미 분석된 데이터 동작 신호를 수행한다. 이에 따라, 데이터 동작 신호를 수행하기 전에 데이터 동작 신호를 우선 분석한 후 순서에 따라 수행하므로 전송 회로가 데이터 동작 신호에 따라 동작을 수행하는 속도를 크게 향상시킨다.
전송 회로가 큐 내의 순서에 따라 데이터 동작 신호를 수행할 때, 서로 연관이 있는 데이터 동작 신호를 수행해야 하는 것을 고려하면, 본 출원의 실시예는 다른 일 실시예를 제공한다. 도 42에 도시된 바와 같이, 상기 전송 회로가 명령 큐에 따라 상기 분석된 데이터 동작 신호를 수행하기 이전에, 상기 방법은 다음과 같은 단계를 더 포함한다.
S4501: 상기 전송 회로는 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하여 판단결과를 얻는다. 상기 의존 관계는 제s 번째 데이터 동작 신호와 상기 제s 번째 데이터 동작 신호의 의전의 제s-1번째 데이터 동작 신호가 연관 관계가 존재하는지를 나타낸다.
여기서, 전송 회로는 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단해야 하며, 판단 결과에 따라 처리하는 두 인접되어 있는 데이터 동작 신호 사이에 관련성이 있어야 함을 결정한다. 여기서, 제s번째 데이터 동작 신호는 데이터 동작 신호 중 임의의 하나의 신호를 나타낼 뿐 어느 특정한 신호를 표시하지 않는다. 제s-1번째 데이터 동작 신호는 제s번째 데이터 동작 신호 바로 이전의 신호를 나타낸다.
대안적으로, 상기 전송 회로가 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하는 일 구현방식은 다음과 같다. 상기 전송 회로가 상기 제s번째 데이터 동작 신호에 의해 상기 제s번째 데이터 동작 신호에 필요한 데이터를 추출하는 제s번째 데이터 동작 신호, 및 상기 제s-1번째 데이터 동작 신호에 의해 상기 제s-1번째 데이터 동작 신호에 필요한 데이터를 추출하는 제0 저장 주소 구간을 각각 획득하고, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 있으면, 상기 전송 회로는 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 의존 관계가 있음을 확정하고, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 없으면, 상기 전송 회로는 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 의존 관계가 없다고 확정한다. 여기서, 전송 회로는 제s번째 데이터 동작 신호의 제s번째 데이터 동작 신호와 제s-1번째 데이터 동작 신호의 제0 저장 주소 구간 사이의 관계에 따라 인접되어 있는 상기 분석된 데이터 동작 신호의 의존 관계를 판단하며, 그 판단 방식은 다음과 같다. 즉, 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 없으면, 상기 제s번째 데이터 동작 신호와 제s-1번째 데이터 동작 신호가 의존 관계가 없고, 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 있으면, 제s번째 데이터 동작 신호와 제s-1번째 데이터 동작 신호가 의존 관계가 있음을 나타낸다.
S4502: 상기 판단 결과가 상기 제s번째 데이터 동작 신호와 상기 제s-1번째 데이터 동작 신호가 의존 관계가 존재하는 것이면, 상기 제s번째 데이터 동작 신호를 캐싱하고, 상기 제s-1번째 데이터 동작 신호를 수행한 후, 상기 제s번째 데이터 동작 신호를 추출한다.
상기 단계에서 전송 회로가 판단한 두 인접되어 있는 데이터 동작 신호의 의존 관계에 기반으로 순서에 따라 데이터 동작 신호를 수행하되, 판단 결과가 제s번째 데이터 동작 신호와 제s-1번째 데이터 동작 신호 사이에 의존 관계가 있으면, 전송 회로는 우선 상기 제s번째 데이터 동작 신호를 캐싱하고, 제s-1번째 데이터 동작 신호에 대한 수행이 완료된 후, 상기 제s번째 데이터 동작 신호를 다시 추출한다.
본 실시예에 따른 데이터 처리 방법에서, 전송 회로는 우선 두 인접되어 있는 데이터 동작 신호 사이의 관련성을 판단하여 데이터 동작 신호의 일관성을 보장한다. 이와 같이, 앞단의 질서있는 준비작업에 의해 후속 상기 데이터 동작 신호에 따라 상응한 동작을 수행하는 순서가 보장됨으로써 데이터의 액세스 효율을 높여 기계 학습 칩이 데이터 액세스시의 액세스 속도를 크게 향상시킨다.
정보 기술이 끊임없이 발전하고 날로 향상됨에 따라 사람들이 데이터 액세스 및 데이터 처리에 대한 요구가 점점 높아져 일부 데이터를 처리하고 액세스하는 프로세서에 대한 요구도 점점 엄격해지고 있다. 범용 프로세서를 예로 들면, 복수의 범용 프로세서 코어(예를 들어, CPU 코어)로 구성된 멀티 코어 프로세서는 강력한 병행 계산 능력으로 주된 추세가 되었다.
그러나, 현재 기계 학습 알고리즘이 끊임없이 발전됨에 따라 점점 많은 구성의 기계 학습 칩이 생기고 있다. 이런 기계 학습 칩은 유니캐스트 판독, 브로드캐스트 등 여러 가지 방식을 통해 공유 저장 중인 데이터를 자주 액세스하거나 처리해야 하므로 이에 상응한 복수의 전송 인터페이스를 설치해야 한다. 이는 기계 학습 칩의 면적을 크게 하였다.
따라서, 기계 학습 칩의 면적을 줄이기 위해 기계 학습 칩의 전송 인터페이스를 간소화하는 것이 현재 당업자들이 시급히 해결해야 하는 기술적 과제이다
상기 문제를 해결하기 위하여 본 출원은 아래 기술적 방안을 제공한다.
본 출원의 실시예에 따른 데이터 처리 장치는 소프트웨어, 하드웨어 또는 이들을 결합하는 방식을 통해 구현할 수 있다. 상기 데이터 처리 장치는 도 43에서 도시된 일부분 또는 전체일 수 있다. 상기 데이터 처리 장치는 기계 학습 장치(11), 전송 회로(12) 및 공유 메모리(13)을 포함할 수 있으며, 상기 기계 학습 장치(11)은 적어도 하나 이상의 기계 학습 유닛(15)를 포함할 수 있으며, 상기 기계 학습 유닛(15)이 수행한 유니캐스트 판독 동작 및 브로드캐스트 동작은 하나의 데이터 수신 인터페이스(142)를 공유하며, 상기 기계 학습 유닛은 송신 인터페이스(141) 및 공유 데이터 수신 인터페이스(142)를 통해 상기 전송 회로(12)에 연결되고, 상기 전송 회로(12)는 상기 공유 메모리(13)에 연결된다. 상기 전송 회로(12)는 상기 기계 학습 장치(11)가 상기 송신 인터페이스(141)을 통해 보낸 데이터 동작 신호에 따라 상기 공유 메모리(13)로부터 상기 기계 학습 장치에 필요한 입력 데이터를 획득하고, 상기 공유 데이터 수신 인터페이스(142)를 통해 상기 입력 데이터를 상기 기계 학습 장치(11)로 리턴한다. 유의할 것은, 상기 기계 학습 유닛(15)은 제1 전송 인터페이스14(미도시)를 포함할 수 있으며, 제1 전송 인터페이스는 송신 인터페이스(141) 및 공유 데이터 수신 인터페이스(142)를 포함할 수 있다.
대안적으로, 상기 기계 학습 장치(11)는 입력 데이터에 의해 기계 학습 연산을 수행하여 출력 데이터를 얻을 수 있다. 대안적으로, 상기 기계 학습 장치(11)는 전송 회로(12)를 통해 출력 데이터를 공유 메모리(13)에 전송하여 저장하는데 사용될 수도 있다. 구체적으로, 기계 학습 장치(11)가 일 신경망 연산을 수행하는데 사용될 경우, 기계 학습 장치(11)는 입력 뉴런 데이터 및 가중치에 의해 인공 신경망의 연산을 수행하여 출력 뉴런 데이터를 얻고, 출력 뉴런 데이터를 새로운 입력 뉴런 데이터로 삼아 전송 회로(12)를 통해 공유 메모리(13)로 전송하여 저장한다.
유의할 것은, 상기 기계 학습 유닛, 전송 회로, 공유 메모리 및 각 종 인터페이스는 모두 하드웨어 회로의 방식을 통해 구현될 수 있다. 예시적으로, 전송 회로는 브로드캐스트 버스(broadcast bus)일 수 있다. 공유 메모리는 비-휘발성 및/또는 휘발성 메모리일 수 있으며, 램덤 액세스 메모리(RAM), 고속 캐시 메모리 등을 포함하나 이에 한정되지 않는다. 각 종 인터페이스는 하나 또는 복수의 데이터 I/O(in/out, 리드인 리드아웃)인터페이스 또는 I/O 핀과 대응할 수 있다.
본 출원에 따른 데이터 처리 장치는 기계 학습 연산에 적용될 수 있으며, 기계 학습 연산은 신경망 연산, k-means연산, 서포트 벡터 머신 연산 등을 포함한다. 대안적으로, 상기 기계 학습 장치가 신경망 계산을 수행할 경우, 상기 입력 데이터는 입력 뉴런 데이터 및/또는 가중치를 포함할 수 있으며, 상기 입력 뉴런 데이터 및 가중치는 기계 학습 장치가 인공 신경망 연산을 수행할 때 입력해야 하는 데이터이다. 이에 따라, 상기 출력 데이터는 출력 뉴런 데이터를 포함할 수 있으며, 상기 출력 뉴런 데이터는 기계 학습 장치가 인공 신경망 연산을 수행할 때 출력하는 중간 결과 또는 최종 결과이다. 가중치 및 뉴런 데이터는 재활용이 가능하므로, 계산 과정에서 입력 데이터는 입력 뉴런 데이터 및 가중치를 반드시 포함해야 하는 것은 아니며, 입력 뉴런 데이터만 포함하든지 가중치만 포함할 수 있다는 것을 이해해야 한다.
신경망 연산을 예를 들면(별도의 설명이 없으면, 본 실시예에서는 모두 신경망 연산을 예를 들어 설명한다), 본 출원에 따른 데이터 처리 장치는 신경망의 일층 연산을 수행할 수 있으며, 신경망의 다층 연산을 수행할 수도 있다. 다층 신경망에 대한 구현 과정은 다음과 같다. 정방향 연산에서 이전 층 인공 신경망의 수행이 끝난 후 다음 층의 연산 명령은 연산 유닛에서 계산해 낸 출력 뉴런 데이터를 다음 층 입력 뉴런 데이터로 삼아 연산(또는 상기 출력 뉴런데이터에 대해 일부 동작하여 다시 다음 층의 입력 뉴런 데이터로 삼음)하는 동시에, 가중치를 또한 다음 층 가중치로 교체하며, 역방향 연산에서 이전 층 인공 신경망의 역방향 연산이 끝난 후, 다음 층의 연산 명령은 연산 유닛에서 계산해 낸 입력 뉴런 기울기(마찬가지로 입력된 뉴런 데이터로 삼을 수 있음)를 다음 층의 출력 뉴런 기울기로 하여 연산(마찬가지로 출력된 뉴런 데이터로 삼을 수 있음)(또는 상기 입력 뉴런 기울기에 대해 일부 동작한 후 다시 다음 층의 출력 뉴런 기울로 삼음)하는 동시에 가중치를 다음 층의 가중치로 교체한다.
도 1을 참조하면, 하나의 선택 가능한 기술적 방안에서, 상기 기계 학습 장치(11)는 복수의 기계 학습 유닛(15)을 포함할 수 있다. 다층 신경망의 연산에 대해, 정방향 연산 중의 한층의 신경망 계산을 예를 들어 설명한다. 일 실시 형태에서, 상기 기계 학습 장치는 복수의 기계 학습 유닛(MLU, Machine Learning Unit)을 통해 신경망 중 해당 층의 모든 뉴런의 출력 뉴런 데이터를 병행 계산할 수 있다. 예시적으로, 상기 기계 학습 장치가 4개의 기계 학습 유닛을 포함하고 해당 층의 신경망이 100개의 뉴런을 가지면, 각각의 기계 학습 유닛이 그 중 25개의 뉴런을 처리하도록 배분할 수 있고, 해당 연산 명령을 설정하여 구현할 수 있다. 상기 과정에서, 각각의 기계 학습 유닛은 모두 전송 회로를 통해 공유 메모리로부터 분배된 해당 층의 25개 뉴런에 각각 대응하는 입력 뉴런 데이터 및 가중치를 획득함으로써 분배된 해당 층의 25개 뉴런의 출력 뉴런 데이터를 계산하고, 전송 회로를 통해 분배된 해당 층의 25개 뉴런의 출력 뉴런 데이터를 공유 메모리에 전송하여 저장할 수 있다. 상기 각각의 기계 학습 유닛이 분배된 해당 층의 복수의 뉴런 데이터를 처리할 때, 병행 계산을 통해 처리할 수 있음을 이해할 수 있다. 이러한 한층 또 한층의 신경망의 병행 계산을 진행하므로 신경망 계산의 병행 처리를 구현할 수 있어 처리 효율을 향상시킬 수 있다.
다른 선택 가능한 방안에서, 상기 기계 학습 장치는 복수의 기계 학습 유닛을 이용하여 일정한 선후 순서로 신경망 각층의 모든 뉴런의 출력 뉴런 데이터를 각각 계산할 수 있다. 상기 과정에서, 직전 기계 학습 유닛은 전송 회로를 통해 해당 층의 모든 뉴런의 출력 뉴런 데이터를 공유 메모리로 전송하여 저장할 수 있으므로 다음 기계 학습 유닛은 해당 층의 모든 뉴런의 출력 뉴런 데이터를 추출하여 다음 층의 입력 뉴런 데이터로 사용하여 계산할 수 있다. 상기 적용은 각층의 신경망 계산량이 크지 않는 상황, 예를 들어 각층의 뉴런 수가 적은 신경망 계산에 적용된다는 것을 이해할 수 있다.
도 44를 참조하면, 도 43의 기계 학습 유닛0을 예를 들어 기계 학습 유닛에 대해 상세하게 설명한다. 하나의 방안에서, 기계 학습 유닛(15)은 송신 인터페이스(141), 공유 데이터 수신 인터페이스(142), 적어도 하나 이상의 연산 유닛(151), 및 상기 연산 유닛(151)에 연결된 컨트롤러 유닛(152)을 포함할 수 있으며, 상기 연산 유닛(151)은 하나의 마스트 처리회로(151a) 및 복수의 슬레이브 처리회로(151b)를 포함하고, 상기 연산 유닛(151)은 상기 송신 인터페이스(141) 및 공유 데이터 수신 인터페이스(142)를 통해 상기 전송 회로(12)에 연결되고,
상기 컨트롤러 유닛(152)은, 상기 송신 인터페이스(141)를 통해 상기 전송 회로(12)로 상기 데이터 동작 신호 및 상기 출력 뉴런 데이터를 송신하고, 상기 공유 데이터 수신 인터페이스(142)를 통해 상기 전송 회로(12)가 상기 공유 메모리(13)로부터 획득한 상기 입력 뉴런 데이터 및 상기 가중치를 수신한 후 상기 입력 뉴런 데이터 및 상기 가중치를 상기 마스트 처리회로(151a) 및/또는 상기 슬레이브 처리회로(151b)로 송신하는데 사용되며,
상기 마스트 처리회로(151a)는, 상기 입력 뉴런 데이터 및/또는 가중치를 상기 복수의 슬레이브 처리회로(151b)에 각각 송신하고 상기 복수의 슬레이브 처리회로(151b)는, 상기 뉴런 데이터 및 가중치에 의해 중간 연산을 병행 수행하여 복수의 중간 결과를 얻은 후 복수의 중간 결과를 상기 마스트 처리회로(151a)로 전송한다. 상기 마스트 처리회로(151a)는 또한 상기 복수의 중간 결과에 대해 후속 처리하여 계산 결과를 얻는데 사용된다. 여기서, 상기 후속 처리는 활성화 연산을 포함할 수 있다. 구체적으로, 상기 컨트롤러 유닛(152)은 계산 명령을 획득하고, 상기 계산 명령을 분석하여 복수의 연산 명령을 얻은 후 상기 복수의 연산 명령을 상기 마스트 처리회로로 송신할 수 있다. 본 실시예에서, 기계 학습 유닛에 복수의 연산 유닛이 포함될 경우, 각 연산 유닛은 상기 송신 인터페이스 및 상기 공유 데이터 수신 인터페이스를 공용할 수 있다는 것을 이해할 수 있다
예를 들어 설명하면, 하나의 선택 가능한 기술방안에서, 마스트 처리회로는 하나의 컨트롤러 유닛을 더 포함할 수 있으며, 상기 컨트롤러 유닛은 마스터 명령 처리 유닛을 포함할 수 있으며, 구체적으로 연산 명령을 마이크로 명령으로 디코딩하는데 사용된다. 다른 선택 가능한 기술방안에서, 슬레이브 처리회로는 다른 하나의 컨트롤러 유닛을 더 포함할 수 있으며, 상기 다른 하나의 컨트롤러 유닛은 슬레이브 명령 처리 유닛을 포함하고, 구체적으로 마이크로 명령을 수신하고 처리하는데 사용된다. 상기 마이크로 명령은 명령의 다음 레벨 명령일 수 있다. 상기 마이크로 명령은 명령을 분할 또는 디코딩하여 얻을 수 있으며 각 부재, 각 유닛 또는 각 처리회로의 제어 신호로 추가 디코딩될 수 있다. 예를 들어, 곱셈 마이크로 명령은 컨볼루션 명령의 다음 레벨 명령이다.
예시적으로, 상기 기계 학습 유닛의 구조를 예를 들어 상기 기계 학습 유닛의 신경망 연산 절차에 대해 상세하게 설명한다. 아래 단계S5101-S5106을 참조하기 바란다.
S5101: 컨트롤러 유닛의 명령 저장 유닛의 첫 주소에 하나의 IO명령을 미리 저장하고,
S5102: 컨트롤러 유닛은 명령 저장 유닛의 첫 주소로부터 상기 IO 명령을 판독한 다음 상기 IO명령으로부터 디코딩된 제어신호에 따라 오프 칩 인터페이스를 통해 오프 칩 메모리로부터 상기 기계 학습 유닛에 대응하는 신경망 연산 명령을 획득하거나, 혹은 전송 회로를 통해 공유 메모리로부터 상기 기계 학습 유닛에 대응하는 신경망 계산 명령을 획득한 후 상기 획득한 계산 명령을 명령 저장 유닛에 저장한다.
S5103: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 IO명령을 읽어 들인 후 상기 IO명령으로부터 디코딩된 데이터 동작 신호에 따라 전송 회로를 통해 공유 메모리로부터 연산 유닛에 필요한 모든 데이터 블록을 판독하며, 상기 데이터 블록은 배분하고자 하는 해당 층 뉴런의 입력 뉴런 데이터 및 가중치를 포함하고, 빠른 활성화 함수 연산에 사용되는 보간 테이블, 연산 장치의 파라미터를 설정하는 상수 테이블, 오프셋 데이터 등을 더 포함할 수 있고 상기 데이터 동작 신호는 상기 데이터 블록이 공유 메모리에서의 소스 주소를 포함한다.
S5104: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 CONFIG(설정)명령을 읽어 들인 후, 상기 CONFIG명령으로부터 디코딩된 제어신호에 의해 해당 층의 신경망 계산에 필요한 각종 상수를 설정한다. 예를 들어, 연산 유닛은 활성화 함수에 필요한 상수에 따라 그 인너 레지스터(inner register)의 값을 설정한다.
S5105: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 COMPUTE(계산)명령을 읽어들이고, 상기 COMPUTE 명령으로부터 디코딩된 제어신호(즉, 연산 명령)에 따라, 연산 유닛은 분배된 해당 층 뉴런의 입력 뉴런 데이터, 가중치 및 연산 명령을 마스트 처리회로로 전송하고, 마스트 처리회로는 분배된 해당 층 뉴런의 입력 뉴런 데이터를 브로드캐스트 데이터로, 가중치를 배부 데이터로 확정하고, 하나의 배부 데이터를 복수의 데이터 블록으로 배분하고, 복수의 데이터 블록 중 적어도 하나 이상의 데이터 블록, 브로드캐스트 데이터 및 복수의 연산 명령 중 적어도 하나 이상의 연산 명령을 슬레이브 처리회로로 송신하고, 슬레이브 처리회로로부터 곱셈 처리회로, 누적 처리회로 등을 통해 중간 결과를 얻고, 마스트 처리회로로부터 중간 결과 및 활성화 처리회로 등에 따라 분배된 해당 층의 뉴런이 출력한 뉴런 데이터를 얻을 수 있다.
S5106: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 IO명령을 읽어들이고, 상기 IO명령으로부터 디코딩된 데이터 동작 신호에 따라, 전송 회로를 통해 상기 출력한 뉴런 데이터를 공유 메모리로 전송하고 저장하여 다음 층 부분 뉴런의 입력 뉴런 데이터를 얻고, 상기 데이터 동작 신호는 상기 출력의 뉴런 데이터가 공유 메모리 내의 목표 주소를 포함한다.
아래 S5105를 예시적으로 설명한다. 신경망 연산 중의 완전 연결 연산을 예로 들면, 어느 층의 신경망 네트워크의 과정은 y=f(wx+b)일 수 있으며, 여기서 x는 입력 뉴런 행렬이고, w는 가중치 행렬이고, b는 오프셋 스칼라이며, f는 활성화 함수이다. 구체적으로, sigmoid함수, tanh, relu, softmax함수 중 임의의 한 함수일 수 있다. 여기서, 마스트 처리회로와 슬레이브 처리회로 사이가 2진 트리 관계(트리 관계)이며, 연산 유닛이 하나의 마스트 처리회로와 8개의 슬레이브 처리회로를 가진다고 가정할 경우, 상기 S5105의 구현 방법은 다음과 같다. 컨트롤러 유닛이 공유 메모리로부터 입력 뉴런 행렬x, 가중치 행렬w 및 완전 연결 연산 명령을 획득하고, 입력 뉴런 행렬x, 가중치 행렬w 및 완전 연결 연산 명령을 마스트 처리회로로 전송하고, 마스트 처리회로는 상기 입력 뉴런 행렬x를 브로드캐스트 데이터로, 가중치 행렬w를 배부 데이터로 확정하고 가중치 행렬w를 8개의 자행렬로 분할한 다음 트리 모듈을 통해 8개의 자행렬을 8개의 슬레이브 처리회로로 배분하고, 입력 뉴런 행렬x를 8개의 슬레이브 처리회로로 브로드캐스팅하고 슬레이브 처리회로는 8개의 자행렬과 입력 뉴런 행렬x의 곱셈 연산 및 누적 연산을 병행 수행하여 8개의 중간 결과를 얻은 후, 8개의 중간 결과를 마스트 처리회로로 송신하며, 마스트 처리회로는 8개의 중간 결과를 정렬하여 wx의 연산 결과를 얻으며 상기 연산 결과에 대해 오프셋b의 연산을 수행한 후 활성화 연산을 진행하여 최종 결과y를 얻는다.
상기 각각의 기계 학습 유닛이 어느 한층의 배분된 각 뉴런에 대해 병행 계산을 수행할 수 있으므로, 공유 메모리에 각층의 모든 뉴런의 출력 뉴런 데이터, 및 다음 층의 모든 뉴런에 필요한 입력 뉴런 데이터를 저장할 수 있고, 가중치는 재활용하거나, 혹은 공유 메모리로부터 새로운 한층의 신경망의 가중치를 획득할 수 있음을 이해할 수 있다.
유의할 것은, 각각의 기계 학습 유닛은 하나의 연산 유닛을 포함할 수 있고, 복수의 연산 유닛을 포함할 수도 있다. 각각의 연산 유닛의 구조는 동일하거나 서로 다를 수 있다. 여기서, 각각의 연산 유닛의 구조는 마스트 처리회로와 각 슬레이브 처리회로 사이의 관계에서 체현되며, 트리형, H형, 시스톨릭 어레이형(systolic array type)의 관계를 포함하나 이에 한정되지 않는다. 본 출원에 따른 기술적 방안은 연산 유닛을 one-master-multiple-slave 구조로 구성하고 정방향 연산하는 계산 명령에 의해 데이터를 분할할 수 있다. 이에 따라, 복수의 슬레이브 처리회로를 통해 계산량이 큰 부분에 대해서도 병행 연산을 수행할 수 있으므로 연산 속도를 향상시키고 연산 시간을 절약하여 전력 소모를 낮출 수 있다.
다음은 상기 도 43에 도시된 본 실시예에 따른 데이터 처리 장치로 돌아가서 설명한다. 여기서 유니캐스트 판독 동작은 유니캐스트 방식에서의 판독 동작이고, 대응하는 데이터 동작 신호는 유니캐스트 판독 명령, 유니캐스트 판독 요청일 수 있고, 브로드캐스트 동작에 대응하는 데이터 동작 신호는 브로드캐스트 명령, 멀티캐스트 명령, 브로드캐스트 요청, 멀티캐스트 요청일 수 있다. 예시적으로, 유니캐스트 판독 명령은 유니캐스트 방식에서의 판독 명령이고, 어느 기계 학습 유닛에서 송신된, 공유 메모리의 소스 주소의 입력 뉴런 데이터 및 가중치에 대한 판독 명령일 수 있으며, 상기 입력 뉴런 데이터 및 가중치를 상기 기계 학습 유닛으로 리턴해야 한다. 상기 입력 뉴런 데이터 및 가중치는 상기 기계 학습 유닛이 계산 명령에 따라 어느 한층에 분배된 뉴런 계산을 진행하는 과정에서 상기 분배된 뉴런에 필요한 입력 뉴런 데이터 및 가중치일 수 있다. 이와 유사하게, 유니캐스트 판독 요청은 유니캐스트 방식에서의 판독 요청이며; 브로드캐스트 명령은 어느 기계 학습 유닛에서 송신된, 공유 메모리의 소스 주소의 입력 뉴런 데이터 및 가중치에 대한 판독명령이고, 상기 입력 뉴런 데이터 및 가중치를 상기 기계 학습 장치 중의 모든 기계 학습 유닛으로 리턴해야 한다. 상기 입력 뉴런 데이터는 어는 한층의 모든 뉴런에 필요한 입력 뉴런 데이터, 즉, 이전 층의 모든 출력 뉴런 데이터일 수 있고, 상기 가중치는 컨볼루션 커널(convolution kernel)와 같은 재활용 가능한 가중치이고, 멀티캐스트 명령과 브로드캐스트 명령의 차이점은 멀티캐스트 명령의 데이터 리턴 대상이 상기 기계 학습 장치 중의 모든 기계 학습 유닛이 아니라 상기 멀티캐스트 명령 중의 마커 필드(marker field)에 대응되는 복수의 기계 학습 유닛이라는 것이다. 한편, 일반적으로 명령과 요청의 차이점은 명령 수행에 따른 오버헤드가 상대적으로 크지만, 명령에 많은 정보가 포함되어 있고, 요청 수행에 따른 오버헤드가 상대적으로 작지만, 요청에 포함된 정보가 적다는 것이다.
일반적으로, 기계 학습 유닛이 유니캐스트 판독 동작 및 브로드캐스트 동작에 의해 리턴된 데이터를 수신할 때 적어도 대응하는 두개의 데이터 인터페이스가 필요하며, 이들은 각각 전송 회로에서 유니캐스트 판독 데이터 동작 신호에 대해 리턴하는 유니캐스트 판독 데이터를 수신하며, 전송 회로에서 브로드캐스트 및/또는 멀티캐스트 데이터 동작 신호에 대해 리턴된 브로드캐스트 및/또는 멀티캐스트 데이터를 수신한다. 본 실시예에서, 도 1에 도시된 바와 같이, 기계 학습 유닛0의 수신 인터페이스는 하나뿐이고, 이는 공유 데이터 수신 인터페이스이다. 예를 들어 인터페이스c0는 전송 회로에서 유니캐스트 판독 데이터 동작 신호에 대해 리턴하는 유니캐스트 판독 데이터를 수신하고, 전송 회로가 브로드캐스트 및/또는 멀터캐스트 데이터 동작 신호에 대해 리턴하는 브로드캐스트 및/또는 멀티캐스트 데이터를 수신할 수 있다.
전송 회로가 공유 메모리로부터 필요한 입력 뉴런 데이터 및 가중치를 추출한 후 캐시가 존재하면, 캐시에 임시 저장하고 그런 다음 전송 회로가 상기 데이터를 요청한 출처, 즉 상기 데이터와 관련있는 데이터 동작 신호에 대응하는 데이터 리턴 대상(기계 학습 유닛)을 판단하고 상기 데이터를 공유 데이터 수신 인터페이스로 송신할 수 있음을 이해할 수 있다. 유니캐스트 판독 동작일 때, 상기 공유 데이터 수신 인터페이스는 상기 데이터의 리턴 대상에 대응하는 하나의 기계 학습 유닛의 공유 데이터 수신 인터페이스이고, 브로드캐스트 동작일 때, 상기 공유 데이터 수신 인터페이스는 상기 데이터의 리턴 대상에 대응하는 복수의 기계 학습 유닛의 복수의 공유 데이터 수신 인터페이스이다.
따라서, 본 실시예에 따른 데이터 처리 장치에서, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 판독 동작 및 브로드캐스트 동작을 수행할 경우 상기 기계 학습 유닛 내의 하나의 데이터 수신 인터페이스를 공유하므로, 기계 학습 유닛에서 데이터를 리턴하는 인터페이스의 개수를 효율적으로 줄이고, 하드웨어의 소스를 절약하고, 하드웨어의 면적과 전력 소모를 낮출 수 있다.
이하 상기 기계 학습 유닛 내의 송신 인터페이스에 대해 상세하게 설명한다. 도 45를 참조하면, 상기 도 43의 기초상에 상기 송신 인터페이스(141)는 유니캐스트 판독 신호 송신 인터페이스(1411) 및 브로드캐스트 신호 송신 인터페이스(1412)를 포함할 수 있으며, 상기 기계 학습 유닛(15)은 상기 유니캐스트 판독 신호 송신 인터페이스(1411) 및 상기 공유 데이터 수신 인터페이스(142)를 통해 상기 전송 회로(12)에 각각 연결되어 유니캐스트 판독 동작을 구현하고 상기 브로드캐스트 신호 송신 인터페이스(1412) 및 상기 공유 데이터 수신 인터페이스(142)를 통해 상기 전송 회로(12)에 각각 연결되어 브로드캐스트 동작을 구현한다. MLU0인 경우, 유니캐스트 판독 신호 송신 인터페이스는 인터페이스a0에 대응되고, 브로드캐스트 신호 송신 인터페이스는 인터페이스b0에 대응되고, 공유 데이터 수신 인터페이스는 인터페이스c0에 대응된다. 여기서 인터페이스a0는 전송 회로에 유니캐스트 판독 데이터 동작 신호를 송신하고, 인터페이스b0는 전송 회로에 브로드캐스트 및/또는 멀티캐스트 데이터 동작 신호를 송신하고, 인터페이스c0는 전송 회로에서 유니캐스트 판독 데이터 동작 신호에 대해 리턴하는 유니캐스트 판독 데이터를 수신하고, 전송 회로가 브로드캐스트 및/또는 멀티캐스트 데이터 동작 신호에 대해 리턴하는 브로드캐스트 및/또는 멀티캐스트 데이터를 수신할 수 있다. 따라서, 본 실시예는 유니캐스트 판독 신호 송신 인터페이스 및 브로드캐스트 신호 송신 인터페이스를 통해 서로 다른 유형의 데이터 동작 신호의 송신을 각각 구현하므로 처리 로직을 간소화하였다.
일 실시 형태에서, 상기 유니캐스트 판독 동작 및 브로드캐스트 동작에 상응하여, 도 45를 참조하면, 상기 데이터 처리 장치 내의 전송 회로(12)는 제2 전송 인터페이스(120), 상기 제2 전송 인터페이스(120)에 연결되는 판독/기록 처리회로(121), 및 상기 판독/기록 처리회로(121)에 연결되는 중재 회로(122)를 포함할 수 있다. 상기 판독/기록 처리회로(121)는, 상기 적어도 하나 이상의 기계 학습 유닛(15)이 상기 송신 인터페이스(141) 및 상기 제2 전송 인터페이스(120)를 통해 송신한 데이터 동작 신호를 수신하여 상기 데이터 동작 신호를 상기 중재 회로(122)로 전송하고, 상기 중재 회로(122)가 상기 공유 메모리(13)로부터 획득한 데이터를 상기 제2 전송 인터페이스(120) 및 상기 공유 데이터 수신 인터페이스(142)를 통해 상기 데이터 동작 신호에 대응하는 기계 학습 유닛으로 리턴하는데 사용된다. 상기 중재 회로(122)는, 사전에 설정된 중재 규칙에 따라 상기 판독/기록 처리회로(121)로부터 수신된 데이터 동작 신호를 중재하고, 중재 성공한 데이터 동작 신호에 따라 상기 공유 메모리(13) 내의 데이터를 동작시키는데 사용된다.
구체적으로, 상기 판독/기록 처리회로(121)는 유니캐스트 판독 신호를 처리할 수 있으며, 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리할 수도 있다. 일 실시 형태에서, 상기 판독/기록 처리회로(121)는 유니캐스트 판독 처리회로를 포함할 수 있으며, 상기 유니캐스트 판독 처리회로는 유니캐스트 판독 신호를 처리할 수 있고, 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리할 수도 있다. 여기서, 상기 유니캐스트 판독 처리회로가 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리할 경우, 적어도 하나 이상의 기계 학습 유닛이 상기 브로드캐스트 신호 송신 인터페이스 및 상기 제2 전송 인터페이스를 통해 송신한 브로드캐스트 및/또는 멀티캐스트 신호를 수신하여 상기 브로드캐스트 및/또는 멀티캐스트 신호를 상기 중재 회로로 전송하고, 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 상기 제2 전송 인터페이스 및 공유 데이터 수신 인터페이스를 통해 사전에 설정된 순서에 따라 상기 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 복수의 기계 학습 유닛으로 송신한다. 상기 사전에 설정된 순서는 상기 복수의 기계 학습 유닛으로 데이터를 리턴하는 순서이고, 이는 각 기계 학습 유닛의 우선순위에 따라 정열할 수 있고, 복수의 기계 학습 유닛의 번호 순서 또는 다른 순서에 따라 정열할 수도 있다.
대안적으로, 상기 판독/기록 처리회로(121)는 유니캐스트 판독 처리회로, 브로드캐스트 처리회로를 포함할 수 있으며, 상기 유니캐스트 판독 처리회로는 유니캐스트 판독 신호를 처리하고, 상기 브로드캐스트 처리회로는 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리한다.
여기서, 유니캐스트 판독 처리회로는, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 판독 신호 송신 인터페이스 및 제2 전송 인터페이스를 통해 송신한 유니캐스트 판독 신호를 수신할 수 있으며, 상기 유니캐스트 판독 신호를 상기 중재 회로에 전송하고, 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 상기 제2 전송 인터페이스 및 공유 데이터 수신 인터페이스를 통해 상기 유니캐스트 판독 신호에 대응하는 기계 학습 유닛으로 송신하는데 사용된다. 상기 브로드캐스트 판독 처리회로는, 적어도 하나 이상의 기계 학습 유닛이 상기 브로드캐스트 신호 송신 인터페이스 및 상기 제2 전송 인터페이스를 통해 송신한 브로드캐스트 및/또는 멀티캐스트 신호를 수신할 수 있고, 상기 브로드캐스트 및/또는 멀티캐스트 신호를 상기 중재 회로로 전송하고, 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 상기 제2 전송 인터페이스 및 공유 데이터 수신 인터페이스를 통해 상기 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 복수의 기계 학습 유닛으로 송신하는데 사용된다.
여기서, 사전에 설정된 중재 규칙은 중재 회로가 일정한 규칙에 따라 복수의 데이터 동작 신호의 우선수위를 확정하도록 하여 중재 회로가 각각의 데이터 동작 신호의 우선순위에 따라 동작이 필요한 대상을 확정하도록 한다. 즉, 우선순위가 높은 데이터 동작 신호를 선택하여 중재 성공한 데이터 동작 신호로 삼는다. 예를 들어, 전송 속도가 빠른 데이터 동작 신호의 우선순위를 높은 우선순위로 설정하고, 전송 속도가 늦은 데이터 동작 신호의 우선순위를 낮은 우선순위로 설정할 수 있다. 예시적으로, 상기 사전에 설정된 중재 규칙은 라운드 로빈 스케줄링(Round-Robin Scheduling) 중재 규칙, Maximum Carrier-to-Interference Rate 스케줄링 규칙, 비율 공정(Proportional Fair) 규칙 등일 수 있다. 한편, 중재 회로는 기계 학습 유닛과 판독/기록 처리회로 사이의 데이터 경로(인터페이스에서 인터페이스까지)가 아이들(idle) 상태인지 여부를 보조 중재 규칙으로 삼을 수도 있다. 즉, 중재 성공한 데이터 동작 신호에 대응하는 데이터 경로가 아이들(idle) 상태인 경우이다.
구체적으로, 유니캐스트 판독 처리회로는 제2 전송 인터페이스를 통해 복수의 기계 학습 유닛에 연결되어 복수의 기계 학습 유닛의 유니캐스트 판독 동작을 처리하고 복수의 유니캐스트 판독 명령을 유니캐스트 판독 처리회로 내의 유니캐스트 판독 명령 캐시 큐 내에 캐싱할 수 있으며 유니캐스트 판독 명령을 분석하여 상응한 유니캐스트 판독 명령을 얻어 유니캐스트 판독 처리회로 내의 유니캐스트 판독 요청 캐시 큐 내에 저장하여 중재 회로를 통해 중재할 수 있다. 반면에 유니캐스트 판독 요청은 분석을 수행하지 않고 유니캐스트 판독 요청 캐시 큐 내에 캐싱될 수 있다. 이와 유사하게, 브로드캐스트 처리회로는 또한 제2 전송 인터페이스를 통해 복수의 기계 학습 유닛에 연결될 수 있으며, 브로드캐스트 및/또는 멀티캐스트 명령 캐시 큐 및 브로드캐스트 및/또는 멀티캐스트 요청 캐시 큐를 포함할 수 있는데, 여기서 중복 설명하지 않는다. 하나의 선택 가능한 방안에서, 판독/기록 처리회로는 하나의 유니캐스트 판독 처리회로 및 하나의 브로드캐스트 처리회로를 포함할 수 있다.
따라서, 본 실시예는 유니캐스트 판독 처리회로를 통해 유니캐스트 판독 동작을 처리할 수 있고, 브로드캐스트 처리회로를 통해 브로드캐스트 동작을 처리할 수 있는 바, 서로 다른 처리회로를 통해 서로 다른 유형의 데이터 동작을 각각 처리할 수 있어 처리 로직을 간소화하였다.
하나의 선택 가능한 방안에서, 도 45를 참조하면, 상기 도 43의 데이터 처리 장치의 기초상에, 제2 전송 인터페이스는 서로 다른 유형의 데이터 동작을 처리하는 인터페이스로 세분화할 수 있다. 구체적으로, 상기 제2 전송 인터페이스(120)는, 상기 유니캐스트 판독 처리회로에 연결된 적어도 한 그룹 이상의 유니캐스트 판독 신호 수신 인터페이스 및 유니캐스트 판독 데이터 송신 인터페이스, 상기 브로드캐스트 처리회로에 연결된 적어도 한 그룹 이상의 브로드캐스트 신호 수신 인터페이스 및 브로드캐스트 데이터 송신 인터페이스를 포함할 수 있고, 상기 유니캐스트 판독 신호 수신 인터페이스는 상기 기계 학습 유닛의 유니캐스트 판독 신호 송신 인터페이스에 연결되고, 상기 브로드캐스트 신호 수신 인터페이스는 상기 기계 학습 유닛의 브로드캐스트 신호 송신 인터페이스에 연결되며, 상기 전송 회로 중의 상기 유니캐스트 판독 데이터 송신 인터페이스와 상기 브로드캐스트 데이터 송신 인터페이스는 상기 기계 학습 유닛의 공유 데이터 수신 인터페이스에 연결된다. 본 실시예는 제2 전송 인터페이스 내의 각 인터페이스를 통해 서로 다른 유형의 데이터 동작에 대해 처리할 수 있어 처리 로직을 간소화하였다.
일 실시 형태에서, 도 45를 참조하면, 판독/기록 처리회로는 복수의 처리회로 그룹으로 나누어질 수 있고, 하나의 기계 학습 유닛은 하나의 처리회로 그룹에 대응되며, 상기 처리회로 그룹은 적어도 하나의 유니캐스트 판독 처리회로 및 하나의 브로드캐스트 처리회로를 포함한다. 예시적으로, MLU0은 유니캐스트 판독 처리회로0 및 브로드캐스트 처리회로0에 대응되고, MLUn은 유니캐스트 판독 처리회로n 및 브로드캐스트 처리회로n에 대응된다. 마찬가지로, 제2 전송 인터페이스0는 하나의 처리회로 그룹 및 하나의 기계 학습 유닛에 각각 연결된 한 그룹의 인터페이스를 구비하고, 기계 학습 유닛과 유니캐스트 판독 처리회로의 일대일 연결, 그리고 기계 학습 유닛과 브로드캐스트 처리회로의 일대일 연결을 구현하도록 구성된다.
예를 들어, MLU0 및 유니캐스트 판독 처리회로0에 있어서, 제2 전송 인터페이스 내의 인터페이스d0는, 유니캐스트 판독 신호 수신 인터페이스로서, MLU0의 유니캐스트 판독 신호 송신 인터페이스a0 및 유니캐스트 판독 처리회로0에 각각 연결되어 MLU0에서 송신된 유니캐스트 판독 신호를 수신한 후 유니캐스트 판독 처리회로0로 전송하여 처리하는데 사용될 수 있다. 제2 전송 인터페이스 내의 인터페이스e0는, 유니캐스트 판독 데이터 송신 인터페이스로서, MLU0의 공유 데이터 수신 인터페이스c0 및 유니캐스트 판독 처리회로0에 각각 연결되어 유니캐스트 판독 처리회로0에서 송신된 상기 유니캐스트 판독 신호에 대응하는 입력 뉴런 데이터 및 가중치를 수신하고 MLU0 내의 인터페이스c0에 전송하는데 사용될 수 있다. MLU0 및 브로드캐스트 처리회로0에 있어서, 제2 전송 인터페이스 내의 인터페이스f0는 브로드캐스트 신호 수신 인터페이스로서, MLU0의 브로드캐스트 신호 송신 인터페이스b0 및 브로드캐스트 처리회로0에 각각 연결되어 MLU0에서 송신된 브로드캐스트 및/또는 멀티캐스트 신호를 수신한 후 브로드캐스트 처리회로0로 전송하여 처리하는데 사용될 수 있다. 제2 전송 인터페이스 내의 인터페이스g0은 브로드캐스트 데이터 송신 인터페이스로서, 복수의 MLU의 공유 데이터 수신 인터페이스ci 및 브로드캐스트 처리회로0에 각각 연결되어 브로드캐스트 처리회로0으로분터 송신된 상기 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 입력 뉴런 데이터 및 가중치를 수신한 후 복수의 MLU 내의 공유 데이터 수신 인터페이스ci로 전송하는데 사용될 수 있다.
따라서, 본 실시예는 기계 학습 유닛과 유니캐스트 판독 처리회로의 일대일 연결; 및 기계 학습 유닛과 브로드캐스트 처리회로의 일대일 연결을 통해 맞춤성 일대일의 데이터 동작 처리를 구현할 수 있어 데이터 동작의 액세스 로직의 복잡성을 낮추고 충돌을 감소시켜 처리 효율을 향상시킬 수 있다.
도 46를 참조하면, 하나의 선택 가능한 방안에서, 상기 도 3에 도시된 상기 데이터 처리 장치의 기초상에, 전송 회로 내의 인터페이스의 개수를 줄일 수 있다. 구체적으로, 상기 판독/기록 처리회로(121)는 브로드캐스트 처리회로 및 복수의 유니캐스트 판독 처리회로를 포함할 수 있으며, 상기 복수의 유니캐스트 판독 처리회로와 상기 복수의 기계 학습 유닛은 일대일로 연결되고, 상기 브로드캐스트 처리회로와 상기 복수의 기계 학습 유닛은 일대다로 연결된다. 예시적으로, MLU0은 유니캐스트 판독 처리회로0 및 상기 브로드캐스트 처리회로에 대응되고, MLUn은 유니캐스트 판독 처리회로n과 상기 브로드캐스트 처리회로에 대응된다. 마찬가지로, 제2 전송 인터페이스에는 하나의 유니캐스트 판독 처리회로 및 하나의 기계 학습 유닛에 각각 연결된 한 그룹의 인터페이스가 존재하므로 기계 학습 유닛과 유니캐스트 판독 처리회로의 일대일 연결을 구현한다. 그리고 제2 전송 인터페이스에는 하나의 브로드캐스트 처리회로 및 복수의 기계 학습 유닛에 각각 연결된 한 그룹의 인터페이스가 더 존재하므로 기계 학습 유닛과 브로드캐스트 처리회로의 다대일 연결을 구현한다. 구체적으로, 제2 전송 인터페이스는 브로드캐스트 처리회로에 연결된 한 그룹의 브로드캐스트 인터페이스를 포함할 수 있으며, 상기 브로드캐스트 인터페이스는 브로드캐스트 신호 수신 인터페이스 및 브로드캐스트 데이터 송신 인터페이스를 포함할 수 있으며, 상기 복수의 기계 학습 유닛은 상기 한 그룹의 브로드캐스트 인터페이스를 통해 상기 브로드캐스트 처리회로에 연결된다.
예를 들어, 복수의 MLU 및 상기 브로드캐스트 처리회로에 있어서, 제2 전송 인터페이스 내의 인터페이스dn+1는, 브로드캐스트 신호 수신 인터페이스로서, 복수의 MLU에서 송신된 브로드캐스트 및/또는 멀티캐스트 신호를 수신한 후 상기 브로드캐스트 처리회로로 전송하여 처리하는데 사용될 수 있다. 제2 전송 인터페이스 내의 인터페이스en+1은, 브로드캐스트 데이터 송신 인터페이스로서, 상기 브로드캐스트 처리회로에서 송신된 상기 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 입력 뉴런 데이터 및 가중치를 수신한 후 복수의 MLU 내의 공유 데이터 수신 인터페이스에 전송하는데 사용될 수 있다.
이로부터 알 수 있듯이, 복수의 기계 학습 유닛은 하나의 브로드캐스트 처리회로를 공유하는 동시에 한 그룹의 브로드캐스트 신호 수신 인터페이스 및 브로드캐스트 데이터 송신 인터페이스를 공유할 수 있다. 따라서, 본 실시예에 따른 데이터 처리 장치는 기계 학습 유닛 중 리턴하는 데이터 인터페이스 및 전송 회로 내의 인터페이스의 개수를 줄일 수 있음으로써 하드웨어 자원을 추가 절약하여 하드웨어의 면적 및 전력 소모를 감소시킨다.
도 47를 참조하면, 하나의 선택 가능한 방안에서, 상기 도 46의 기초상에 전송 회로 내의 인터페이스의 개수를 추가 감소하였다. 상기 제2 전송 인터페이스(120)는 상기 복수의 유니캐스트 판독 처리회로와 일대일 연결된 복수 그룹의 유니캐스트 판독 신호 수신 인터페이스 및 공유 데이터 송신 인터페이스, 상기 브로드캐스트 처리회로에 연결된 브로드캐스트 신호 수신 인터페이스를 포함할 수 있으며, 상기 공유 데이터 송신 인터페이스는 또한 상기 브로드캐스트 처리회로에 연결되고, 상기 유니캐스트 판독 신호 수신 인터페이스는 상기 기계 학습 유닛의 유니캐스트 판독 신호 송신 인터페이스에 연결되며, 상기 브로드캐스트 신호 수신 인터페이스는 상기 기계 학습 유닛의 브로드캐스트 신호 송신 인터페이스에 연결되고, 상기 공유 데이터 송신 인터페이스는 상기 기계 학습 유닛의 공유 데이터 수신 인터페이스에 연결된다.
예시적으로, 유니캐스트 판독 처리회로0에 있어서, 제2 전송 인터페이스는 상기 유니캐스트 판독 처리회로0와 일대일로 연결된 한 그룹의 유니캐스트 판독 신호 수신 인터페이스d0 및 공유 데이터 송신 인터페이스e0를 포함하고, 유니캐스트 판독 신호 수신 인터페이스d0는 MLU0 내의 유니캐스트 판독 신호 송신 인터페이스a0에 연결되고, 공유 데이터 송신 인터페이스e0는 MLU0 내의 공유 데이터 수신 인터페이스c0에 연결된다. 유니캐스트 판독 처리회로n에 있어서, 제2 전송 인터페이스는, 상기 유니캐스트 판독 처리회로n와 일대일로 연결된 한 그룹의 유니캐스트 판독 신호 수신 인터페이스dn 및 공유 데이터 송신 인터페이스en를 포함하고, 유니캐스트 판독 신호 수신 인터페이스dn는 MLUn 내의 유니캐스트 판독 신호 송신 인터페이스an에 연결되고, 공유 데이터 송신 인터페이스en는 MLUn 내의 공유 데이터 수신 인터페이스cn에 연결되며, 제2 전송 인터페이스는, 브로드캐스트 처리회로에 연결된 브로드캐스트 신호 수신 인터페이스dn+1를 더 포함하고, 브로드캐스트 신호 수신 인터페이스dn+1는, 각각의 MLU의 브로드캐스트 신호 송신 인터페이스(MLUi는 인터페이스bi에 연결됨)에 각각 연결된다. 한편, 가장 유의해야 할 부분은, 전송 회로 중 각 공유 데이터 송신 인터페이스ei가 모두 브로드캐스트 처리회로에 연결되어 브로드캐스트 처리회로에서 송신된 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 입력 뉴런 데이터 및 가중치를 수신하여 복수의 MLU 내의 공유 데이터 수신 인터페이스ci에 전송할 수 있다. 이로부터 알 수 있듯이, 전송 회로에서 각각의 유니캐스트 판독 처리회로i는 브로드캐스트 처리회로와 함께 공유 데이터 송신 인터페이스ei를 각각 공유하였고, MLUi 내의 공유 데이터 수신 인터페이스ci 및 전송 회로 내의 공유 데이터 송신 인터페이스ei로 구성된 데이터 경로는 MLUi과 전송 회로 사이에서 유니캐스트 판독 데이터, 브로드캐스트 및/또는 멀티캐스트 데이터를 전송할 수 있다.
이로부터 알 수 있듯이, 복수의 유니캐스트 판독 처리회로 각각이 브로드캐스트 처리회로와 함께 데이터 송신 인터페이스를 공유하므로 본 실시예에 따른 데이터 처리 장치는 전송 회로의 인터페이스의 수를 줄이므로 하드웨어 자원을 추가 절약하여 하드웨어의 면적 및 전력 소모를 감소시킨다.
정보 기술이 끊임없이 발전하고 날로 향상됨에 따라 사람들이 데이터 액세스 및 데이터 처리에 대한 요구가 점점 높아져 일부 데이터를 처리하고 액세스하는 프로세서에 대한 요구도 점점 엄격해지고 있다. 범용 프로세서를 예로 들면, 복수의 범용 프로세서 코어(예를 들어, CPU 코어)로 구성된 멀티 코어 프로세서는 강력한 병행 계산 능력으로 주된 추세가 되었다.
그러나 현재 기계 학습 알고리즘이 끊임없이 발전함에 따라 점점 많은 구성의 기계 학습 칩이 생기고 있다. 이런 기계 학습 칩은 유니캐스트 판독, 브로드캐스트 등 여러 가지 방식을 통해 공유 저장 중인 데이터를 자주 액세스하거나 처리해야 하므로 이에 상응한 복수의 전송 인터페이스를 설치해야 한다. 이는 기계 학습 칩의 면적을 크게 하였다.
따라서, 기계 학습 칩의 면적을 줄이기 위해 기계 학습 칩의 전송 인터페이스를 간소화시키는 것이 현재 당업자들이 시급히 해결해야 할 기술적 과제이다
상기 문제를 해결하기 위하여 본 출원은 아래 기술적 방안을 제공한다.
도 49를 참조하여, 도 48 내의 기계 학습 유닛0을 예로 들어 기계 학습 유닛을 상세하게 설명한다. 일 방안에서, 기계 학습 유닛(15)은 적어도 하나 이상의 송신 인터페이스(141), 적어도 하나 이상의 수신 인터페이스(142), 적어도 하나 이상의 연산 유닛(151), 및 상기 연산 유닛(151)에 연결된 컨트롤러 유닛(152)을 포함할 수 있으며, 상기 연산 유닛(151)은 하나의 마스트 처리회로(151a) 및 복수의 슬레이브 처리회로(151b)를 포함하고, 상기 연산 유닛(151)은 상기 적어도 하나 이상의 송신 인터페이스(141) 및 적어도 하나 이상의 수신 인터페이스(142)를 통해 상기 전송 회로(12)에 연결되고,
상기 컨트롤러 유닛(152)은, 상기 적어도 하나 이상의 송신 인터페이스(141)을 통해 상기 전송 회로(12)로 상기 데이터 동작 신호 및 상기 출력 뉴런 데이터를 송신하고, 상기 적어도 하나 이상의 수신 인터페이스(142)를 통해 상기 전송 회로(12)가 상기 공유 메모리(13)로부터 획득한 상기 입력 뉴런 데이터 및 상기 가중치를 수신한 후 상기 입력 뉴런 데이터 및 상기 가중치를 상기 마스트 처리회로(151a) 및/또는 상기 슬레이브 처리회로(151b)로 송신하며,
상기 마스트 처리회로(151a)는, 상기 입력 뉴런 데이터 및/또는 가중치를 상기 복수의 슬레이브 처리회로(151b)로 각각 송신하고 상기 복수의 슬레이브 처리회로(151b)는, 상기 뉴런 데이터 및 가중치에 의해 중간 연산을 병행 수행하여 복수의 중간 결과를 얻은 후 복수의 중간 결과를 상기 마스트 처리회로(151a)로 전송하며, 상기 마스트 처리회로(151a)는 또한 상기 복수의 중간 결과에 대해 후속 처리를 행하여 계산 결과를 얻는데 사용된다. 여기서, 상기 후속 처리는 활성화 연산을 포함할 수 있다. 구체적으로, 상기 컨트롤러 유닛(152)은 계산 명령을 획득하고, 상기 계산 명령을 분석하여 복수의 연산 명령을 얻은 후 상기 복수의 연산 명령을 상기 마스트 처리회로로 송신할 수 있다.
본 실시예에서, 기계 학습 유닛에 복수의 연산 유닛이 포함된 경우, 각각의 연산 유닛은 상기 적어도 하나 이상의 송신 인터페이스 및 상기 적어도 하나 이상의 수신 인터페이스를 공용할 수 있다는 것을 이해할 수 있다.
예를 들어 설명하면, 하나의 선택 가능한 기술방안에서, 마스트 처리회로는 하나의 컨트롤러 유닛을 포함할 수 있으며, 상기 컨트롤러 유닛은 마스터 명령 처리 유닛을 포함할 수 있으며, 구체적으로 연산 명령을 마이크로 명령으로 디코딩하는데 사용된다. 다른 선택 가능한 기술방안에서, 슬레이브 처리회로는 다른 하나의 컨트롤러 유닛을 포함할 수 있으며, 상기 다른 하나의 컨트롤러 유닛은 슬레이브 명령 처리 유닛을 포함하고, 구체적으로 마이크로 명령을 수신하고 처리하는데 사용된다. 상기 마이크로 명령은 명령의 다음 레벨 명령일 수 있다. 상기 마이크로 명령은 명령을 분할 또는 디코딩하여 얻을 수 있으며 추가로 각 부재, 각 유닛 또는 각 처리회로의 제어 신호로 디코딩될 수 있다. 예를 들어, 곱셈 마이크로 명령은 컨볼루션 명령의 다음 레벨 명령이다.
예시적으로, 상기 기계 학습 유닛의 구조를 예를 들어 상기 기계 학습 유닛의 신경망 연산 절차에 대해 상세하게 설명한다. 아래 단계S6101-S6106를 참조하기 바란다.
S6101: 컨트롤러 유닛의 명령 저장 유닛의 첫 주소에 하나의 IO명령을 미리 저장하고,
S6102: 컨트롤러 유닛은 명령 저장 유닛의 첫 주소로부터 상기 IO 명령을 판독한 다음 상기 IO명령으로부터 디코딩된 제어신호에 따라 오프 칩 인터페이스를 통해 오프 칩 메모리로부터 상기 기계 학습 유닛에 대응하는 신경망 연산 명령을 획득하거나, 혹은 전송 회로를 통해 공유 메모리로부터 상기 기계 학습 유닛에 대응하는 신경망 계산 명령을 획득한 후 상기 획득한 계산 명령을 명령 저장 유닛에 저장한다.
S6103: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 IO명령을 읽어들인 후 상기 IO명령으로부터 디코딩된 데이터 동작 신호에 따라 전송 회로를 통해 공유 메모리로부터 연산 유닛에 필요한 모든 데이터 블록을 판독하며, 상기 데이터 블록은 배분하고자 하는 해당 층 뉴런의 입력 뉴런 데이터 및 가중치를 포함하고, 빠른 활성화 함수 연산에 사용되는 보간 테이블, 연산 장치의 파라미터를 설정하는 상수 테이블, 오프셋 데이터 등을 더 포함할 수 있고, 상기 데이터 동작 신호는 상기 데이터 블록이 공유 메모리에서의 소스 주소를 포함한다.
S6104: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 CONFIG(설정)명령을 읽어들인 후, 상기 CONFIG명령으로부터 디코딩된 제어신호에 의해 해당 층의 신경망 계산에 필요한 각종 상수를 설정한다. 예를 들어, 연산 유닛은 활성화 함수에 필요한 상수에 따라 그 인너 레지스터(inner register)의 값을 설정한다.
S6105: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 COMPUTE(계산)명령을 읽어들이고, 상기 COMPUTE 명령으로부터 디코딩된 제어신호(즉, 연산 명령)에 따라, 연산 유닛은 분배된 해당 층 뉴런의 입력 뉴런 데이터, 가중치 및 연산 명령을 마스트 처리회로로 전송하고, 마스트 처리회로는 분배된 해당 층 뉴런의 입력 뉴런 데이터를 브로드캐스트 데이터로, 가중치를 배부 데이터로 확정하고, 하나의 배부 데이터를 복수의 데이터 블록으로 배분하고, 복수의 데이터 블록 중 적어도 하나 이상의 데이터 블록, 브로드캐스트 데이터 및 복수의 연산 명령 중 적어도 하나 이상의 연산 명령을 슬레이브 처리회로로 송신하고, 슬레이브 처리회로로부터 곱셈 처리회로, 누적 처리회로 등을 통해 중간 결과를 얻고, 마스트 처리회로로부터 중간 결과 및 활성화 처리회로 등에 따라 분배된 해당 층의 뉴런이 출력한 뉴런 데이터를 얻을 수 있다.
S6106: 컨트롤러 유닛은 명령 저장 유닛으로부터 다음 IO명령을 읽어들이고, 상기 IO명령으로부터 디코딩된 데이터 동작 신호에 따라, 전송 회로를 통해 상기 출력한 뉴런 데이터를 공유 메모리로 전송하고 저장하여 다음 층 부분 뉴런의 입력 뉴런 데이터를 얻고, 상기 데이터 동작 신호는 상기 출력의 뉴런 데이터가 공유 메모리에서의 목표 주소를 포함한다.
아래 S6105에 대해 예시적으로 설명한다. 신경망 연산 중의 완전 연결 연산을 예로 들면, 어느 층의 신경망 네트워크의 과정은 y=f(wx+b)일 수 있으며, 여기서 x는 입력 뉴런 행렬이고, w는 가중치 행렬이고, b는 오프셋 스칼라이며, f는 활성화 함수이다. 구체적으로, sigmoid함수, tanh, relu, softmax함수 중 임의의 한 함수일 수 있다. 여기서, 마스트 처리회로와 슬레이브 처리회로 사이가 2진 트리 관계(트리 관계)이며, 연산 유닛이 하나의 마스트 처리회로와 8개의 슬레이브 처리회로를 가진다고 가정할 경우, 상기 S5105의 구현 방법은 다음과 같다. 컨트롤러 유닛이 공유 메모리로부터 입력 뉴런 행렬x, 가중치 행렬w 및 완전 연결 연산 명령을 획득하고, 입력 뉴런 행렬x, 가중치 행렬w 및 완전 연결 연산 명령을 마스트 처리회로로 전송하고, 마스트 처리회로는 상기 입력 뉴런 행렬x를 브로드캐스트 데이터로, 가중치 행렬w를 배부 데이터로 확정하고 가중치 행렬w를 8개의 자행렬로 분할한 다음 트리 모듈을 통해 8개의 자행렬을 8개의 슬레이브 처리회로로 배분하고, 입력 뉴런 행렬x를 8개의 슬레이브 처리회로로 브로드캐스팅하고 슬레이브 처리회로는 8개의 자행렬과 입력 뉴런 행렬x의 곱셈 연산 및 누적 연산을 병행 수행하여 8개의 중간 결과를 얻은 후, 8개의 중간 결과를 마스트 처리회로로 송신하며, 마스트 처리회로는 8개의 중간 결과를 정렬하여 wx의 연산 결과를 얻으며 상기 연산 결과에 대해 오프셋b의 연산을 수행한 후 활성화 연산을 진행하여 최종 결과y를 얻는다.
상기 각각의 기계 학습 유닛이 어느 한층의 배분된 각 뉴런에 대해 병행 계산을 수행할 수 있으므로, 공유 메모리에 각층의 모든 뉴런의 출력 뉴런 데이터, 및 다음 층의 모든 뉴런에 필요한 입력 뉴런 데이터를 저장할 수 있고, 가중치는 재활용하거나, 혹은 공유 메모리로부터 새로운 한층의 신경망의 가중치를 획득할 수 있음을 이해할 수 있다.
유의할 것은, 각각의 기계 학습 유닛은 하나의 연산 유닛을 포함할 수 있고, 복수의 연산 유닛을 포함할 수도 있다. 각각의 연산 유닛의 구조는 동일하거나 서로 다를 수 있다. 여기서, 각각의 연산 유닛의 구조는 마스트 처리회로와 각 슬레이브 처리회로 사이의 관계에서 체현되며, 트리형, H형, 시스톨릭 어레이형(systolic array type)의 관계를 포함하나 이에 한정되지 않는다. 본 출원에 따른 기술적 방안은 연산 유닛을 one-master-multiple-slave 구조로 구성하고 정방향 연산하는 계산 명령에 의해 데이터를 분할할 수 있다. 이에 따라, 복수의 슬레이브 처리회로를 통해 계산량이 큰 부분에 대해서도 병행 연산을 수행할 수 있으므로 연산 속도를 향상시키고 연산 시간을 절약하여 전력 소모를 낮출 수 있다.
다음은 상기 도 43에 도시된 본 실시예에 따른 데이터 처리 장치로 돌아가서 설명한다. 여기서, 유니캐스트 판독 동작에 대응하는 데이터 동작 신호는 유니캐스트 판독 명령 및 유니캐스트 판독 요청일 수 있으며, 유니캐스트 기록 동작에 대응하는 데이터 동작 신호는 유니캐스트 기록 명령 및 유니캐스트 기록 요청일 수 있으며, 브로드캐스트 동작에 대응하는 데이터 동작 신호는 브로드캐스트 명령, 멀티캐스트 명령, 브로드캐스트 요청, 멀티캐스트 요청일 수 있다. 예시적으로, 유니캐스트 판독 명령은 어느 기계 학습 유닛으로부터 송신되는, 공유 메모리의 소스 주소의 입력 뉴런 데이터 및 가중치를 판독하는 명령이다. 상기 입력 뉴런 데이터 및 가중치를 상기 기계 학습 유닛으로 리턴할 수 있다. 상기 입력 뉴런 데이터 및 가중치는, 상기 기계 학습 유닛이 계산 명령에 따라 어느 한층에 분배된 뉴런 계산을 진행하는 과정에서 상기 분배된 뉴런에 필요한 입력 뉴런 데이터 및 가중치이며, 유니캐스트 기록 명령은, 어느 기계 학습 유닛으로부터 송신되는, 신경망 계산을 통해 얻은 출력 뉴런 데이터를 공유 메모리의 목표 주소에 기록하는 기록 명령이다. 이전 층 신경망에서 출력 뉴런 데이터는 다음 층 신경망에 필요한 입력 뉴런 데이터로 삼을 수 있으므로 공유 메모리에 기록하여 각 기계 학습 유닛이 공유 메모리로부터 필요한 입력 뉴런 데이터를 획득하도록 한다. 브로드캐스트 명령은 어느 기계 학습 유닛에서 송신된, 공유 메모리의 소스 주소의 입력 뉴런 데이터 및 가중치에 대한 판독 명령이며, 상기 입력 뉴런 데이터 및 가중치를 상기 기계 학습 장치의 모든 기계 학습 유닛으로 리턴해야 한다. 상기 입력 뉴런 데이터는 어느 한층의 모든 뉴런에 필요한 입력 뉴런 데이터, 즉 이전 층의 모든 출력 뉴런 데이터일 수 있다. 상기 가중치는 예를 들어 컨볼루션 커넬과 같은 재활용 가능한 가중치이며, 멀티캐스트 명령의 데이터 리턴 대상은 상기 기계 학습 장치 중의 모든 기계 학습 유닛이 아니라 상기 멀티캐스트 명령 중의 마커 필드(marker field)에 대응하는 복수의 기계 학습 유닛이다. 한편, 일반적으로 명령과 요청의 차이점은 명령 수행에 따른 오버헤드가 상대적으로 크지만, 명령에 많은 정보가 포함되어 있고, 요청 수행에 따른 오버헤드가 상대적으로 작지만, 요청에 포함된 정보가 적다는 것이다.
일반적으로, 기계 학습 유닛이 유니캐스트 판독 신호, 유니캐스트 기록 신호 및 브로드캐스트 및/또는 멀티캐스트 신호를 송신할 때 적어도 대응하는 3개의 데이터 신호 송신 인터페이스가 필요하다. 이들은 전송 회로로 유니캐스트 판독 신호를 송신하고, 전송 회로로 유니캐스트 기록 신호를 송신하고 전송 회로로 브로드캐스트 및/또는 멀티캐스트 신호를 송신하는데 각각 사용된다. 본 실시예에서, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 판독 동작, 유니캐스트 기록 동작, 브로드캐스트 동작 중 적어도 2종의 데이터 동작을 수행할 때 상기 기계 학습 유닛의 하나의 송신 인터페이스를 공유한다. 도 48를 참조하면, 상기 기계 학습 유닛0의 적어도 하나 이상의 송신 인터페이스(141)는 인터페이스a0 및 인터페이스b0의 두 데이터 동작 신호 송신 인터페이스를 포함할 수 있다. 일 실시 형태에서, 인터페이스a0는 유니캐스트 판독 신호 송신 인터페이스일 수 있으며, 인터페이스b0는 유니캐스트 기록 신호와 브로드캐스트 및/또는 멀티캐스트 신호가 공유하는 신호 송신 인터페이스일 수 있다. 일 실시 형태에서, 인터페이스a0는 유니캐스트 기록 신호 송신 인터페이스이고, 인터페이스b0는 유니캐스트 판독 신호와 브로드캐스트 및/또는 멀티캐스트 신호가 공유하는 신호 송신 인터페이스일 수 있다. 일 실시 형태에서, 인터페이스a0는 브로드캐스트 및/또는 멀티캐스트 신호 송신 인터페이스이고, 인터페이스b0는 유니캐스트 판독 신호와 유니캐스트 기록 신호가 공유한 신호 송신 인터페이스일 수 있다. 한편, 하나의 선택 가능한 방안에서, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 판독 동작, 유니캐스트 기록 동작, 브로드캐스트 동작을 수행할 때 상기 기계 학습 유닛 중의 하나의 송신 인터페이스를 공유할 수 있다. 즉 상기 송신 인터페이스는 유니캐스트 판독 신호, 유니캐스트 기록 신호, 브로드캐스트 및/또는 멀티캐스트 신호를 송신할 수 있다.
따라서, 본 실시예에 따른 데이터 처리 장치에서, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 판독 동작, 유니캐스트 기록 동작, 브로드캐스트 동작 중의 적어도 2개 데이터 동작을 수행할 때 상기 기계 학습 유닛 중의 하나의 송신 인터페이스를 공유할 수 있으므로 기계 학습 유닛 중 데이터 동작 신호 송신 인터페이스의 개수를 효율적으로 줄이고, 하드웨어의 소스를 절약하여 하드웨어의 면적과 전력 소모를 감소시킬 수 있다.
하나의 선택 가능한 방안에서, 상기 유니캐스트 판독 동작, 유니캐스트 기록 동작 및 브로드캐스트 동작에 상응하여, 도 3을 참조하면, 상기 도 48의 기초상에 상기 데이터 처리 장치 중의 전송 회로(12)는, 제2 전송 인터페이스(120), 상기 제2 전송 인터페이스(120)에 연결되어 있는 판독/기록 처리회로(121), 및 상기 판독/기록 처리회로(121)에 연결되어 있는 중재 회로(122)를 포함할 수 있다. 상기 판독/기록 처리회로(121)는, 상기 적어도 하나 이상의 기계 학습 유닛(15)이 상기 적어도 하나 이상의 송신 인터페이스(141) 및 상기 제2 전송 인터페이스(120)를 통해 송신한 데이터 동작 신호를 수신하여 상기 데이터 동작 신호를 상기 중재 회로(122)로 전송하고, 상기 중재 회로(122)가 상기 공유 메모리(13)로부터 획득한 데이터를 상기 제2 전송 인터페이스(120) 및 상기 적어도 하나 이상의 수신 인터페이스(142)를 통해 상기 데이터 동작 신호에 대응하는 기계 학습 유닛으로 리턴하는데 사용된다. 상기 중재 회로(122)는, 사전에 설정된 중재 규칙에 따라 상기 판독/기록 처리회로(121)로부터 수신된 데이터 동작 신호를 중재하고, 중재 성공한 데이터 동작 신호에 의해 상기 공유 메모리(13) 내의 데이터를 동작시키는데 사용된다.
구체적으로, 상기 판독/기록 처리회로(121)는 유니캐스트 판독 신호를 처리할 수 있으며, 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리할 수도 있다. 일 실시 형태에서, 상기 판독/기록 처리회로(121)는, 유니캐스트 판독 처리회로 및 유니캐스트 기록 처리회로를 포함할 수 있으며, 상기 유니캐스트 판독 처리회로는 유니캐스트 판독 신호를 처리할 수 있고, 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리할 수도 있다. 여기서, 기계 학습 유닛이 수행하는 유니캐스트 기록 동작과 브로드캐스트 동작에서 상기 기계 학습 유닛의 하나의 송신 인터페이스를 공유하는 것을 예로 들면, 상기 적어도 하나 이상의 송신 인터페이스는 유니캐스트 판독 신호 송신 인터페이스 및 공유 신호 송신 인터페이스를 포함한다. 상기 유니캐스트 판독 처리회로가 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리할 때 적어도 하나 이상의 기계 학습 유닛이 상기 공유 신호 송신 인터페이스 및 상기 제2 전송 인터페이스를 통해 송신한 브로드캐스트 및/또는 멀티캐스트 신호를 수신하여 상기 브로드캐스트 및/또는 멀티캐스트 신호를 상기 중재 회로로 전송할 수 있으며, 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 상기 제2 전송 인터페이스 및 상기 적어도 하나 이상의 수신 인터페이스를 통해 사전에 설정한 순서에 따라 상기 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 복수의 기계 학습 유닛으로 송신한다. 상기 사전에 설정된 순서는 상기 복수의 기계 학습 유닛으로 데이터를 리턴하는 순서이고, 이는 각각의 기계 학습 유닛의 우선순위에 따라 정열할 수 있고, 복수의 기계 학습 유닛의 번호 순서 혹은 다른 순서에 따라 정열할 수도 있다.
대안적으로, 상기 판독/기록 처리회로(121)는 유니캐스트 판독 처리회로, 유니캐스트 기록 처리회로 및 브로드캐스트 처리회로를 포함할 수 있으며, 상기 유니캐스트 판독 처리회로는 유니캐스트 판독 신호를 처리하고, 상기 유니캐스트 기록 처리회로는 유니캐스트 기록 신호를 처리하며, 상기 브로드캐스트 처리회로는 브로드캐스트 신호 및/또는 멀티캐스트 신호를 처리한다.
동일하게 기계 학습 유닛이 수행하는 유니캐스트 기록 동작과 브로드캐스트 동작에서 상기 기계 학습 유닛 중 하나의 송신 인터페이스를 공유하는 것을 예로 들어 설명한다. 여기서, 유니캐스트 판독 처리회로는, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 판독 신호 송신 인터페이스 및 제2 전송 인터페이스를 통해 송신한 유니캐스트 판독 신호를 수신하여 상기 유니캐스트 판독 신호를 상기 중재 회로에 전송하고, 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를, 상기 제2 전송 인터페이스 및 상기 적어도 하나 이상의 수신 인터페이스를 통해 상기 유니캐스트 판독 신호에 대응하는 기계 학습 유닛으로 송신하는데 사용될 수 있다. 유니캐스트 기록 처리회로는, 적어도 하나 이상의 기계 학습 유닛이 공유 신호 송신 인터페이스 및 제2 전송 인터페이스를 통해 송신한 유니캐스트 기록 신호를 수신하고 상기 유니캐스트 기록 신호를 상기 중재 회로로 전송하며, 상기 유니캐스트 기록 신호에 대응하는 유니캐스트 기록 데이터를 상기 공유 메모리에 기록하는데 사용될 수 있다. 그리고, 상기 브로드캐스트 기록 처리회로는 적어도 하나 이상의 기계 학습 유닛이 상기 공유 신호 송신 인터페이스 및 상기 제2 전송 인터페이스를 통해 송신한 브로드캐스트 및/또는 멀티캐스트 신호를 수신하고 상기 브로드캐스트 및/또는 멀티캐스트 신호를 상기 중재 회로로 전송하고 상기 중재 회로가 상기 공유 메모리로부터 획득한 데이터를 상기 제2 전송 인터페이스 및 상기 적어도 하나 이상의 수신 인트페이스를 통해 상기 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 복수의 기계 학습 유닛으로 송신하는데 사용될 수 있다. 유의할 것은, 일반적으로 유니캐스트 기록 신호는 유니캐스트 기록 데이터를 포함할 수 있으며, 유니캐스트 기록 신호를 송신한 후 동일한 데이터 경로를 사용하여 유니캐스트 기록 데이터를 전송할 수도 있다.
여기서, 사전에 설정된 중재 규칙은 중재 회로가 일정한 규칙에 따라 복수의 데이터 동작 신호의 우선수위를 확정하도록 하여 중재 회로가 각각의 데이터 동작 신호의 우선순위에 따라 동작이 필요한 대상을 확정하도록 한다. 즉, 우선순위가 높은 데이터 동작 신호를 선택하여 중재 성공한 데이터 동작 신호로 삼는다. 예를 들어, 전송 속도가 빠른 데이터 동작 신호의 우선순위를 높은 우선순위로 설정하고, 전송 속도가 늦은 데이터 동작 신호의 우선순위를 낮은 우선순위로 설정할 수 있다. 예시적으로, 상기 사전에 설정된 중재 규칙은 라운드 로빈 스케줄링(Round-Robin Scheduling) 중재 규칙, Maximum Carrier-to-Interference Rate 스케줄링 규칙, 비율 공정(Proportional Fair) 규칙 등일 수 있다. 한편, 중재 회로는 기계 학습 유닛과 판독/기록 처리회로 사이의 데이터 경로(인터페이스에서 인터페이스까지)가 아이들(idle) 여부를 보조 중재 규칙으로 사용할 수도 있다. 즉, 중재 성공한 데이터 동작 신호에 대응하는 데이터 경로는 아이들(idle) 상태이다.
기계 학습 유닛에 연결되어 복수의 기계 학습 유닛의 유니캐스트 판독 동작을 처리하고 복수의 유니캐스트 판독 명령을 유니캐스트 판독 처리회로 내의 유니캐스트 판독 명령 캐시 큐 내에 캐싱할 수 있으며 유니캐스트 판독 명령을 분석하여 상응한 유니캐스트 판독 명령을 얻어 유니캐스트 판독 처리회로 내의 유니캐스트 판독 요청 캐시 큐 내에 저장하여 중재 회로를 통해 중재할 수 있다. 반면에 유니캐스트 판독 요청은 분석 동작을 수행하지 않고 유니캐스트 판독 요청 캐시 큐 내에 캐싱될 수 있다. 이와 유사하게, 브로드캐스트 처리회로는 또한 제2 전송 인터페이스를 통해 복수의 기계 학습 유닛에 연결될 수 있으며, 브로드캐스트 및/또는 멀티캐스트 명령 캐시 큐 및 브로드캐스트 및/또는 멀티캐스트 요청 캐시 큐를 포함할 수 있다. 마찬가지로 유니캐스트 기록 처리회로는 또한 제2 전송 인터페이스를 통해 복수의 기계 학습 유닛에 연결될 수 있으며, 유니캐스트 기록 명령 캐시 큐 및 유니캐스트 기록 요청 캐시 큐를 포함할 수 있는 바, 여기서 중복 설명하지 않는다. 하나의 선택 가능한 방안에서, 판독/기록 처리회로는 하나의 유니캐스트 판독 처리회로, 하나의 유니캐스트 기록 처리회로 및 하나의 브로드캐스트 처리회로를 포함할 수 있다.
따라서, 본 실시예는 유니캐스트 판독 처리회로를 통해 유니캐스트 판독 동작을 처리할 수 있고, 유니캐스트 기록 처리회로를 통해 유니캐스트 기록 동작을 처리할 수 있고, 브로드캐스트 처리회로를 통해 브로드캐스트 동작을 처리할 수 있는 바, 서로 다른 처리회로를 통해 서로 다른 유형의 데이터 동작을 각각 처리할 수 있어 처리 로직을 간소화시켰다.
대안적으로, 도 50를 참조하면, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 기록 동작, 브로드캐스트 동작을 수행할 때 상기 기계 학습 유닛 내의 하나의 송신 인터페이스를 공유한다. 즉 상기 적어도 하나 이상의 송신 인터페이스(141)가 유니캐스트 기록 동작 및 브로드캐스트 동작이 공유하는 공유 신호 송신 인터페이스 및 유니캐스트 판독 신호 송신 인터페이스를 포함할 수 있다. 예시적으로, MLU0인 경우, 인터페이스a0는 유니캐스트 판독 신호 송신 인터페이스이고, 인터페이스b0는 공유 신호 송신 인터페이스이므 유니캐스트 기록 신호, 브로드캐스트 및/또는 멀티캐스트 신호를 송신할 수 있으며, 인터페이스c0는 유니캐스트 판독 데이터 수신 인터페이스이고, 인터페이스d0는 브로드캐스트 및/또는 멀티캐스트 데이터 수신 인터페이스이다. 설명의 편의를 위하여, 이하 실시예에서는 모두 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 기록 동작, 브로드캐스트 동작을 수행할 때 상기 기계 학습 유닛 내의 하나의 송신 인터페이스를 공유하는 경우를 예로 들어 설명한다. 물론, 이하 실시예는 다른 신호 송신 인터페이스를 공유하는 방안에 적용할 수도 있다.
하나의 선택 가능한 방안에서, 도 50를 참조하면, 상기 판독/기록 처리회로는 복수의 처리회로 그룹으로 나누어질 수 있고, 하나의 기계 학습 유닛은 하나의 처리회로 그룹에 대응하며, 상기 처리회로 그룹은 하나의 유니캐스트 판독 처리회로, 하나의 유니캐스트 기록 처리회로 및 하나의 브로드캐스트 처리회로를 포함한다. 예시적으로, MLU0은 유니캐스트 판독 처리회로0, 유니캐스트 기록 처리회로0 및 브로드캐스트 처리회로0에 대응하고, MLUn은 유니캐스트 판독 처리회로n, 유니캐스트 기록 처리회로n 및 브로드캐스트 처리회로n에 대응한다. 마찬가지로, 제2 전송 인터페이스에 하나의 처리회로 그룹 및 하나의 기계 학습 유닛에 각각 연결된 한 그룹의 인터페이스가 존재하고, 기계 학습 유닛과 유니캐스트 판독 처리회로의 일대일 연결, 기계 학습 유닛과 유니캐스트 기록 처리회로의 일대일 연결, 및 기계 학습 유닛과 브로드캐스트 처리회로의 일대일 연결을 구현한다.
구체적으로, 도 50를 참조하면, 상기 제2 전송 인터페이스(120)는 복수의 인터페이스 그룹을 포함하고, 상기 하나의 처리회로 그룹은 하나의 인터페이스 그룹에 대응하고, 상기 하나의 인터페이스 그룹은, 상기 유니캐스트 판독 처리회로에 연결된 유니캐스트 판독 신호 수신 인터페이스 및 유니캐스트 판독 데이터 송신 인터페이스, 상기 유니캐스트 기록 처리회로에 연결된 유니캐스트 판독 신호 수신 인터페이스, 상기 브로드캐스트 처리회로에 연결된 브로드캐스트 신호 수신 인터페이스 및 브로드캐스트 데이터 송신 인터페이스를 포함한다.
예를 들어, MLU0에 있어서, 그 상응한 처리회로 그룹에 대응하는 인터페이스 그룹은 인터페이스e0, 인터페이스f0, 인터페이스g0, 인터페이스h0, 인터페이스i0를 포함한다. 예를 들어, MLU0 및 유니캐스트 판독 처리회로0에 있어서, 제2 전송 인터페이스 내의 인터페이스e0는 유니캐스트 판독 신호 수신 인터페이스로서, MLU0의 유니캐스트 판독 신호 송신 인터페이스a0 및 유니캐스트 판독 처리회로0에 각각 연결되어 MLU0에서 송신된 유니캐스트 판독 신호를 수신한 후 유니캐스트 판독 처리회로0에 전송하여 처리하는데 사용될 수 있다. 제2 전송 인터페이스 내의 인터페이스f0는 유니캐스트 판독 데이터 송신 인터페이스로서, MLU0의 유니캐스트 판독 데이터 수신 인터페이스c0 및 유니캐스트 판독 처리회로0에 각각 연결되어 유니캐스트 판독 처리회로0에서 송신된 상기 유니캐스트 판독 신호에 대응하는 입력 뉴런 데이터 및 가중치를 수신한 후 MLU0 내의 인터페이스c0에 전송하는데 사용될 수 있다. MLU0 및 유니캐스트 기록 처리회로0에 있어서, 제2 전송 인터페이스 내의 인터페이스g0는 유니캐스트 기록 신호 인터페이스로서, MLU0의 공유 신호 송신 인터페이스b0 및 유니캐스트 기록 처리회로0에 각각 연결되어 MLU0에서 송신된 유니캐스트 기록 신호를 수신하여 유니캐스트 기록 처리회로0로 전송하여 처리하는데 사용될 수 있다. MLU0 및 브로드캐스트 처리회로0에 있어서, 제2 전송 인터페이스 내의 인터페이스h0는 브로드캐스트 신호 수신 인터페이스로서, MLU0의 공유 신호 송신 인터페이스b0 및 브로드캐스트 처리회로0에 각각 연결되어 MLU0에서 송신된 브로드캐스트 및/또는 멀티캐스트 신호를 수신한 후 브로드캐스트 처리회로0로 전송하여 처리하는데 사용될 수 있다. 제2 전송 인터페이스 내의 인터페이스i0은 브로드캐스트 데이터 송신 인터페이스로서, 복수의 MLU의 브로드캐스트 데이터 수신 인터페이스di 및 브로드캐스트 처리회로0에 연결되어 브로드캐스트 처리회로0에서 송신된 상기 브로드캐스트 및/또는 멀티캐스트 신호에 대응하는 입력 뉴런 데이터 및 가중치를 수신한 후 복수의 MLU 내의 브로드캐스트 데이터 수신 인터페이스di로 전송하는데 사용될 수 있다.
따라서, 본 실시예는 기계 학습 유닛과 유니캐스트 판독 처리회로의 일대일 연결; 기계 학습 유닛과 유니캐스트 기록 처리회로의 일대일 연결; 및 기계 학습 유닛과 브로드캐스트 처리회로의 일대일 연결을 통해 맞춤성 일대일의 데이터 동작 처리를 구현할 수 있어 데이터 동작의 액세스 로직의 복잡성을 낮추고 충돌을 감소시켜 처리 효율을 향상시킬 수 있다.
하나의 선택 가능한 방안에서, 도 51를 참조하면, 상기 도 50을 바탕으로 전송 회로 내의 인터페이스의 개수를 줄인다. 상기 하나의 처리회로 그룹 내의 유니캐스트 기록 처리회로와 브로드캐스트 처리회로는 상기 대응하는 인터페이스 그룹 내의 하나의 공유 신호 수신 인터페이스를 공유하고, 상기 처리회로 그룹에 대응하는 공유 신호 수신 인터페이스는 상기 처리회로 그룹에 대응하는 기계 학습 유닛의 공유 신호 송신 인터페이스에 연결되고, 상기 처리회로 그룹 내의 유니캐스트 판독 신호 수신 인터페이스는 상기 처리회로 그룹에 대응하는 기계 학습 유닛의 유니캐스트 판독 신호 송신 인터페이스에 연결된다. 도 4를 참조하면, MLU0의 상응한 처리회로 그룹에 있어서, 그 유니캐스트 기록 처리회로와 브로드캐스트 처리회로는 하나의 공유 신호 수신 인터페이스g0를 공유하고, 공유 신호 수신 인터페이스g0는 MLU0 내의 공유 신호 송신 인터페이스b0에 연결되어 공유 신호 송신 인터페이스b0에서 송신된 유니캐스트 기록 신호, 브로드캐스트 및/또는 멀티캐스트 신호를 수신하고, 유니캐스트 기록 신호, 브로드캐스트 및/또는 멀티캐스트 신호를 유니캐스트 기록 처리회로0 및 브로드캐스트 처리회로0로 송신하여 처리한다. 이로부터 알 수 있듯이, 전송 회로에서, 유니캐스트 기록 처리회로i와 브로드캐스트 처리회로i는 공유 신호 수신 인터페이스gi를 공유하며, MLUi 내의 공유 신호 송신 인터페이스bi와 전송 회로 내의 공유 신호 수신 인터페이스ei로 이루어진 데이터 경로는 MLUi와 전송 회로 사이에서 유니캐스트 기록 신호, 브로드캐스트 및/또는 멀티캐스트 신호를 전송할 수 있다.
이로부터 알 수 있듯이, 하나의 처리회로 그룹 내의 유니캐스트 기록 처리회로와 브로드캐스트 처리회로는 신호 수신 인터페이스를 공유하므로 본 실시예에 따른 데이터 처리 장치는 기계 학습 유닛 중 데이터 동작 신호 송신 인터페이스 및 전송 회로 내의 인터페이스의 개수를 줄여 하드웨어 자원을 추가 절약하므로 하드웨어의 면적 및 전력 소모를 감소시켰다.
일 실시 형태에서, 상기 처리회로 그룹에 대응하는 공유 신호 수신 인터페이스는 상기 처리회로 그룹 내의 유니캐스트 기록 처리회로와 브로드캐스트 처리회로에 각각 연결되어 상기 기계 학습 유닛의 공유 신호 송신 인터페이스에서 송신된 데이터 동작 신호를 수신하고, 상기 데이터 동작 신호를 두 갈래 동일한 데이터 동작 신호로 나누어 상기 유니캐스트 기록 처리회로 및 상기 브로드캐스트 처리회로로 각각 보낸다. 도 51를 참조하면, 공유 신호 수신 인터페이스g0를 예로 들면, 이는 수신된 데이터 동작 신호(유니캐스트 판독 신호, 브로드캐스트 및/또는 멀티캐스트 신호)를 두 갈래 동일한 데이터 동작 신호로 나누어 유니캐스트 기록 처리회로0 및 브로드캐스트 처리회로0로 송신하여 처리한다. 예시적으로, 상기 공유 신호 수신 인터페이스는 하드웨어 회로를 통해 유니캐스트 기록 처리회로0 및 브로드캐스트 처리회로0에 각각 연결되어 한 갈래의 데이터 동작 신호를 두 갈래 동일한 데이터 동작 신호로 나눌 수 있다. 상기 데이터 동작 신호가 하이 레벨 및 로우 레벨 신호(high or low level signal)일 수 있다.
각각의 처리회로는 데이터 동작 신호를 분석하여 데이터 동작 신호의 유형을 판단할 수 있다. 예를 들어 유니캐스트 기록 신호인 경우, 유니캐스트 기록 처리회로가 처리를 수행하고, 브로드캐스트 처리회로는 처리를 수행하지 않고, 예를 들어 브로드캐스트 및/또는 멀티캐스트 신호인 경우, 브로드캐스트 처리회로가 처리를 수행하고, 유니캐스트 기록 처리회로는 처리를 수행하지 않는다. 구체적으로, 각 처리회로는 데이터 동작 신호의 동작 코드를 통해 동작 신호의 유형을 판단하는 데, 예를 들어 "write"는 데이터 동작 신호가 유니캐스트 기록 신호임을 의미하고, "cast"는 데이터 동작 신호가 브로드캐스트 및/또는 멀티캐스트 신호임을 의미하고 마커 필드(marker field)에 표기된 기계 학습 유닛(데이터 리턴 대상)의 개수를 통해 동작 신호 유형을 판단할 수도 있다. 예를 들어, 0개의 리턴 대상은 데이터 동작 신호가 유니캐스트 기록 신호임을 의미하고, 1개의 리턴 대상은 데이터 동작 신호가 유니캐스트 판독 신호임을 의미하고, 복수의 (n+1보다 작음) 리턴 대상은 데이터 동작 신호가 멀티캐스트 신호임을 나타내며, n+1개의 리턴 대상은 데이터 동작 신호가 브로드캐스트 신호임을 나타낸다.
하나의 선택 가능한 방안에서, 도 52를 참조하면, 상기 도 51의 기초상에 기계 학습 유닛 내의 인터페이스의 개수를 추가 줄였다. 기계 학습 유닛이 유니캐스트 판독 동작 및 브로드캐스트 동작을 수행할 때 상기 기계 학습 유닛 상의 하나의 데이터 수신 인터페이스를 공유한다. 즉, 상기 처리회로 그룹 내의 유니캐스트 판독 처리회로와 브로드캐스트 처리회로가 리턴한 데이터는 상기 기계 학습 유닛 내의 하나의 공유 데이터 수신 인터페이스를 공유한다. 도 51과 비교할 때, MLU0을 예로 들면, 적어도 하나 이상의 수신 인터페이스(142)는 하나의 인터페이스c0를 포함하며 이전의 인터페이스c0와 인터페이스d0를 포함하지 않는다. 도 52의 인터페이스c0는 처리회로의 인터페이스f0에 연결되어 유니캐스트 판독 처리회로0가 리턴한 유니캐스트 판독 데이터를 수신할 수 있으며, 처리회로의 복수의 인터페이스ii에 연결되어 복수의 브로드캐스트 처리회로i가 리턴한 브로드캐스트 및/또는 멀티캐스트 데이터를 수신할 수도 있다.
따라서, 본 실시예에 따른 데이터 처리 장치에서, 적어도 하나 이상의 기계 학습 유닛이 유니캐스트 판독 동작 및 브로드캐스트 동작을 수행할 때 상기 기계 학습 유닛 내의 하나의 데이터 수신 인터페이스를 공유하므로, 기계 학습 유닛 중 리턴하는 데이터의 인터페이스의 개수를 추가 줄이므로 하드웨어 자원을 절약하여 하드웨어의 면적과 전력 소모를 감소시켰다.
더 나아가, 도 53를 참조하면, 상기 도 52의 기초상에 전송 회로의 인터페이스의 개수를 추가 줄였다. 상기 하나의 처리회로 그룹 내의 유니캐스트 판독 처리회로와 브로드캐스트 처리회로는 상기 대응하는 인터페이스 그룹 내의 하나의 공유 데이터 송신 인터페이스를 공유하고, 상기 처리회로 그룹에 대응하는 공유 데이터 송신 인터페이스는 상기 처리회로 그룹에 대응하는 기계 학습 유닛의 공유 데이터 수신 인터페이스에 연결된다. 도 52와 비교할 때, MLU0에 상응하는 처리회로 그룹에 있어서, 그 유니캐스트 판독 처리회로와 브로드캐스트 처리회로는 하나의 공유 데이터 송신 인터페이스i0를 공유하고, 도 53 내의 인터페이스i0는 처리회로 중 유니캐스트 판독 처리회로0에 연결되어 유니캐스트 판독 처리회로0가 리턴한 유니캐스트 판독 데이터를 수신할 수 있고, 처리회로 내의 복수의 브로드캐스트 처리회로i에 연결되어 복수의 브로드캐스트 처리회로i가 리턴한 브로드캐스트 및/또는 멀티캐스트 데이터를 수신할 수도 있다.
따라서, 본 실시예에 따른 데이터 처리 장치에서, 하나의 처리회로 그룹 내의 유니캐스트 판독 처리회로와 브로드캐스트 처리회로는 상기 대응하는 인터페이스 그룹 내의 하나의 공유 데이터 송신 인터페이스를 공유하므로 기계 학습 유닛 중 리턴하는 데이터 인터페이스의 개수를 추가 줄일 뿐만 아니라 하드웨어 자원을 절약하여 하드웨어의 면적과 전력 소모를 감소시켰다.
하나의 선택 가능한 방안에서, 도 54를 참조하면, 상기 도 53의 기초상에, 기계 학습 유닛에 적어도 하나 이상의 비공유 데이터 리턴 인터페이스의 연산 유닛이 존재하므로 상기 기계 학습 유닛의 적어도 하나 이상의 송신 인터페이스는, 적어도 하나 이상의 독립적인 데이터 수신 인터페이스를 더 포함할 수 있다. 상기 독립적인 데이터 수신 인터페이스는 상기 기계 학습 유닛 내의 하나의 연산 유닛에 연결되며, 상기 제2 전송 인터페이스는 상기 독립적인 데이터 수신 인터페이스에 연결된 독립적인 데이터 송신 인터페이스를 더 포함하고, 상기 연산 유닛은 상기 독립적인 데이터 수신 인터페이스와 상기 독립적인 데이터 송신 인터페이스를 통해 상기 기계 학습 유닛에 대응하는 처리회로 그룹과의 연결을 구현한다. 예시적으로, 도 54를 참조하면, MLU0인 경우, 복수의 연산 유닛을 포함하고, 그 중의 적어도 하나 이상의 연산 유닛은 인터페이스j0에 연결되고, 다른 연산 유닛은 인터페이스c0에 각각 연결된다. 즉, 인터페이스c0가 상기 다른 연산 유닛이 공유한 공유 데이터 수신 인터페이스이며, 인터페이스j0는 독립적인 데이터 수신 인터페이스이다. 따라서, 제2 전송 인터페이스(120)는 인터페이스j0에 연결된 독립적인 데이터 송신 인터페이스h0를 더 포함한다. 도 54에서, 독립적인 데이터 송신 인터페이스h0는 유니캐스트 판독 처리회로0와 복수의 브로드캐스트 처리회로i에 연결되어 유니캐스트 판독 데이터, 브로드캐스트 및/또는 멀티캐스트 데이터를 수신할 수 있으며 독립적인 데이터 수신 인터페이스j0를 통해 상기 비공유 데이터 리턴 인터페이스의 연산 유닛으로 송신한다.
하나의 선택 가능한 방안에서, 도 55를 참조하면, 상기 도 53의 기초상에, 각각의 기계 학습 유닛은 상기 처리회로 내의 하나의 브로드캐스트 처리회로를 공유할 수 있다. 상기 공유하는 브로드캐스트 처리회로는 각각의 공유 신호 수신 인터페이스gi 및 각 공유 데이터 송신 인터페이스ii에 연결될 수 있다. 따라서, 본 실시예에 따른 데이터 처리 장치에서, 각각의 기계 학습 유닛은 상기 처리회로 내의 하나의 브로드캐스트 처리회로를 공유할 수 있으므로 브로드캐스트 처리회로의 개수를 줄이고 전송 회로를 간소화시키고, 하드웨어의 면적 및 전력 소모를 감소시켰다.
정보 기술이 끊임없이 발전하고 날로 향상됨에 따라 사람들이 데이터 액세스 및 데이터 처리에 대한 요구가 점점 높아져 일부 데이터를 처리하고 액세스하는 프로세서에 대한 요구도 점점 엄격해지고 있다. 범용 프로세서를 예로 들면, 복수의 범용 프로세서 코어(예를 들어, CPU 코어)로 구성된 멀티 코어 프로세서는 강력한 병행 계산 능력으로 주된 추세가 되었다.
그러나 현재 기계 학습 알고리즘이 끊임없이 발전함에 따라 점점 많은 구성의 기계 학습 칩이 생기고 있으나 이러한 기계 학습 칩은 공유 저장 중인 데이터를 액세스하거나 처리할 때 동일한 문제가 존재한다, 즉 데이터 액세스 로직이 극히 복잡하여 기계 학습시 데이터 처리 효율을 저하시킨다.
따라서, 기계 학습 칩의 데이터 액세스 로직을 간소화하는 것이 현재 기술자가 시급히 해결해야 할 기술적 과제이다.
상기 문제를 해결하기 위하여 본 출원은 이하 기술적 방안을 제공한다.
먼저, 본 출원에서 사용된 데이터 처리 장치를 소개한다. 도 56을 참조하면 하드웨어 또는 소프트웨어와의 결합방식을 통해 구현 가능한 데이터 처리 장치를 제공한다. 상기 데이터 처리 장치는 기계 학습 데이터를 처리하는데 사용된다. 도 56에 도시된 바와 같이, 상기 데이터 처리 장치는 기계 학습 장치(11), 전송 회로(12) 및 공유 메모리(13)를 포함하고, 기계 학습 장치(11)는 제1 전송 인터페이스(14)를 통해 전송 회로(12)에 연결되고, 전송 회로(12)는 공유 메모리(13)에 연결된다.
상기 전송 회로(12)는 기계 학습 장치로부터 보내진 데이터 동작 신호에 따라 공유 메모리(13)로부터 기계 학습 장치(11)에 필요한 입력 데이터를 획득한 후 입력 데이터를 기계 학습 장치(11)로 리턴한다. 여기서 데이터 동작 신호는 공유 메모리(13) 내의 데이터에 대한 동작 방식을 나타낸다.
대안적으로, 기계 학습 장치(11)는 입력 데이터에 따라 기계 학습 연산을 수행하여 출력 데이터를 얻는다. 대안적으로, 기계 학습 장치(11)는 전송 회로(12)를 통해 출력 데이터를 공유 메모리(13)에 전송하여 저장한다. 구체적으로, 기계 학습 장치(11)가 일 신경망 연산을 수행하게 되면, 기계 학습 장치(11)는 입력 뉴런 데이터 및 가중치에 따라 인공 신경망 연산을 수행하여 출력 뉴런 데이터를 얻으며, 또한 출력 뉴런 데이터를 새로운 입력 뉴런 데이터로 사용하고 전송 회로(12)를 통해 공유 메모리(13)에 전송하여 저장한다. 유의할 것은, 상기 기계 학습 장치(11), 전송 회로(12), 공유 메모리(13) 및 제1 전송 인터페이스(14)는 모두 하드웨어 회로에 의한 방식으로 구현될 수 있다. 예시적으로, 전송 회로(12)는 브로드캐스트 버스(broadcast bus)일 수 있으며, 공유 메모리(13)는 비-휘발성 및/또는 휘발성 메모리일 수 있으며, 램덤 액세스 메모리(RAM), 캐시 메모리 등을 포함하나 이에 한정되지 않는다. 제1 전송 인터페이스(14)는 하나 또는 복수의 데이터I/O(in/out, 리드인-리드아웃) 인터페이스 또는 I/O 핀에 대응할 수 있다.
대안적으로, 기계 학습 장치(11)는 하나의 제1 전송 인터페이스(14)를 포함할 수 있으며, 복수의 제1 전송 인터페이스를 포함할 수도 있다. 제1 전송 인터페이스(14)는 송신 인터페이스일 수 있고, 수신 인터페이스일 수도 있다. 제1 전송 인터페이스(14)가 송신 인터페이스인 경우, 기계 학습 장치(11)는 송신 인터페이스에 연결된 전송 회로(12)로 데이터 동작 신호 또는 데이터를 송신할 수 있다. 제1 전송 인터페이스(14)가 수신 인터페이스인 경우, 기계 학습 장치(11)는 전송 회로(12)가 리턴한 데이터를 수신할 수 있다.
여기서, 데이터 동작 신호는 공유 메모리(13) 내의 데이터에 대한 동작 방식을 나타낸다. 하나의 선택 가능한 방안에서, 구체적으로, 데이터 동작 신호는 공유 메모리(13) 내의 데이터에 대한 판독 동작을 나타낼 수 있으며, 공유 메모리(13) 내의 데이터에 대한 기록 동작을 나타낼 수도 있다. 따라서, 기계 학습 장치(11)에서 송신된 데이터 동작 신호가 판독 동작인 경우, 전송 회로(12)는 공유 메모리(13)로부터 상응한 주소에 대응되는 데이터를 찾아 판독한 후 해당 데이터를 적어도 하나 이상의 기계 학습 장치(11)로 리턴한다. 기계 학습 장치(11)에서 송신된 데이터 동작 신호가 기록 동작인 경우, 전송 회로(12)는 기계 학습 장치(11)의 출력 쓰기 데이터를 공유 메모리(13)에 기록한다.
상기 입력 데이터는 기계 학습 연산 시 기계 학습 장치(11)에 입력해야 하는 데이터이다. 이상 데이터는 공유 메모리(13)에 미리 저장된 초기 데이터일 수 있으며, 기계 학습 장치(11)가 기계 학습 연산을 수행할 때 출력되는 중간 결과 또는 최종 결과일 수 있으며, 공유 메모리(13)에 기록하는 데이터일 수도 있다.
대안적으로, 상기 입력 데이터는 입력 뉴런 데이터 및/또는 가중치를 포함할 수 있으며, 상기 입력 뉴런 데이터 및 가중치는 인공 신경망 연산을 수행할 때 기계 학습 장치에 입력 필요한 데이터를 포함할 수 있다. 따라서, 상기 출력 데이터는 출력 뉴런 데이터를 포함할 수 있으며, 상기 출력 뉴런 데이터는 인공 신경망 연산을 수행할 때 기계 학습 장치의 중간 결과 또는 최종 결과이다.
유의할 것은, 본 출원에 사용되는 데이터 처리 장치는 아래 구조 형식 중의 적어도 1종 이상일 수 있다. 즉, 기계 학습 장치(11)는 복수의 제1 전송 인터페이스(14)를 통해 하나의 전송 회로(12)에 연결된 후 상기 하나의 전송 회로(12)를 통해 하나의 공유 메모리(13)에 연결되어 상기 데이터를 획득할 수 있다. 대안적으로, 기계 학습 장치(11)는 또한 복수의 제1 전송 인터페이스(14)를 통해 복수의 전송 회로(12)에 연결된 후 이들 전송 회로(12)를 통해 하나의 공유 메모리(13)에 연결되어 상기 데이터를 획득할 수 있다. 대안적으로, 기계 학습 장치(11)는 또한 복수의 제1 전송 인터페이스(14)를 통해 하나의 전송 회로(12)에 연결된 후 상기 하나의 전송 회로(12)를 통해 복수의 공유 메모리(13)에 연결되어 상기 데이터를 획득할 수도 있다.
대안적으로, 기계 학습 장치(11)가 인공 신경망 연산을 수행할 때, 다층의 신경망 연산에 대해 정방향 연산이든지 역방향 연산이든지 막론하고 기계 학습 장치(11)는 각층의 신경망이 출력한 뉴런 데이터를 계산할 수 있다. 구체적으로 각층의 신경망 입력단에 대응하는 복수의 입력 뉴런 데이터와 가중치에 대해 곱셈 연산, 합산 연산, 컨볼루션 연산 및 활성화 연산 등 일련의 인공 신경망 연산에 필요한 연산 집합을 진행하여 연산 결과를 얻을 수 있다. 기계 학습 장치(11)는 인공 신경망 연산을 통해 현재 층의 출력 뉴런 데이터를 얻은 후, 상기 출력 뉴런 데이터를 다음 층 신경망의 입력 뉴런 데이터로 사용하여 인공 신경망 연산을 재차 진행한다. 이를 수행하기 이전에, 먼저 전송 회로(12)를 통해 현재 층의 출력 뉴런 데이터를 공유 메모리(13)에 기록하여 저장할 수 있으며, 이를 통해 기계 학습 장치(11)는 상기 데이터를 실시간 판독할 수 있으므로 다음 층의 인공 신경망 연산을 편리하게 진행할 수 있다.
상기 실시예에 따른 기계 학습 연산을 수행하는 데이터 처리 장치는, 기계 학습 장치, 기계 학습 장치의 제1 전송 인터페이스를 통해 연결된 전송 회로 및 전송 회로에 연결된 공유 메모리를 포함한다. 여기서, 전송 회로는 기계 학습 장치에서 송신된 데이터 동작 신호에 의해 공유 메모리로부터 기계 학습 장치에 필요한 입력 데이터를 획득한 후, 입력 데이터를 기계 학습 장치로 리턴한다. 상기 데이터의 조작 과정에서, 기계 학습 연산을 수행할 때 많은 데이터가 공용되는 상황을 고려하여 본 출원에 사용된 데이터 처리 장치는 이에 상응한 전송 회로를 설치하여 기계 학습 장치가 공유 메모리로부터 데이터를 판독하고 기록하도록 구현한다. 종래 CPU는 메모리의 데이터를 직접 액세스하는 과정에서 다음과 같은 문제점이 존재한다. 즉, CPU는 병행 연산을 진행할 때 병행 데이터 액세스 로직이 복잡하여 막힘과 데드 록(deadlock)이 쉽게 발생한다. 종래의 CPU에 비해 본 출원에 사용되는 데이터 처리 장치는, 기계 학습 장치가 공유 메모리의 데이터를 액세스하는 로직을 간소화시키고 데이터의 액세스 효율을 향상시켜 기계 학습 장치의 기계 학습 연산 속도를 더욱 향상시켰다.
도 56A는 본 출원의 실시예에 따른 기계 학습 장치의 구성도이다. 상기 실시예를 기초하여, 도 56A를 참조하면, 상기 기계 학습 장치(11)는 적어도 하나 이상의 연산 유닛(151), 및 연산 유닛(151)에 연결된 컨트롤러 유닛(152)을 포함하는 적어도 하나 이상의 기계 학습 유닛(15)를 포함한다. 연산 유닛(151)은 하나의 마스트 처리회로(151a) 및 복수의 슬레이브 처리회로(151b)을 포함하고, 연산 유닛(151)은 제1 전송 인터페이스(14)을 통해 전송 회로(12)에 연결된다.
여기서, 상기 컨트롤러 유닛(152)은, 제1 전송 인터페이스(14) 내의 송신 인터페이스를 통해 데이터 동작 신호 및 출력 데이터를 전송 회로(12)로 송신하고, 제1 전송 인터페이스(14) 내의 수신 인터페이스를 통해 전송 회로(12)가 공유 메모리(13)로부터 획득한 입력 데이터를 수신하고, 또한 입력 데이터를 마스트 처리회로(151a) 및/또는 슬레이브 처리회로(151b)로 송신한다. 마스트 처리회로(151a)는 입력 데이터를 복수의 슬레이브 처리회로(151b)로 분배한다. 복수의 슬레이브 처리회로(151b)는 마스트 처리회로(151a)로부터 전송된 데이터에 따라 중간 연산을 병행 수행하여 복수의 중간 결과를 얻으며, 복수의 중간 결과를 마스트 처리회로(151a)로 전송한다. 마스트 처리회로(151a)는 또한 복수의 중간 결과에 대해 후속 처리를 진행하여 계산 결과를 얻는다.
대안적으로, 상기 기계 학습 장치(11)는 하나의 기계 학습 유닛(15)을 포함할 수 있으며, 이러한 기계 학습 장치(11)는 인공 신경망 연산을 수행할 때 적용될 수 있다. 관련된 신경망 구조에 포함된 뉴런 개수가 적을 경우, 하나의 기계 학습 유닛(15)을 이용하여 전체 신경망의 연산을 한번에 수행할 수 있다. 구체적인 연산 과정은 다음과 같다. 기계 학습 유닛(15)이 신경망의 각층 뉴런에 대응하는 입력 뉴런 데이터 및 가중치에 따라 인공 신경망 연산을 수행하여 각층 뉴런에 대응하는 출력 뉴런 데이터를 얻고, 전체 신경망의 연산이 완료되어 최종 연산 결과를 얻을 때까지 출력 뉴런 데이터를 새로운 입력 뉴런 데이터로 삼아 다시 다음 층 신경망 연산을 수행할 수 있다. 이런 과정에서, 기계 학습 장치(11)는 전송 회로(12)를 통해 기계 학습 유닛(15)이 각층에 대해 연산하여 얻은 출력 뉴런 데이터 또는 최종 연산 결과를 공유 메모리(13)로 전송하여 저장할 수 있다.
대안적으로, 상기 기계 학습 장치(11)는 복수의 기계 학습 유닛(15)을 포함할 수 있으며, 이러한 기계 학습 장치(11)는 인공 신경망 연산을 수행할 때 관련있는 신경망 구조에 포함된 뉴런 개수가 많은 경우에 적용될 수 있다. 예를 들어, 다층 신경망의 연산에 대해, 정방향 연산 중 어느 한층 신경망 연산을 예로 들어 설명한다. 해당 층의 뉴런 개수가 많을 때, 선택 가능한 계산 방식에 따라 상기 기계 학습 장치(11)는 그 중의 복수의 기계 학습 유닛(15)을 이용하여 한층 신망의 부분 뉴런의 출력 뉴런 데이터를 각각 병행 계산할 수 있다. 예를 들어, 하나의 기계 학습 장치(11)에 4개 기계 학습 유닛(15)이 있고 1층 신경망에 100개 뉴런이 있으면, 기계 학습 장치(11)는 기계 학습 유닛(15)마다 그 중의 25개 뉴런을 각각 처리하도록 배분하고 상응한 출력 뉴런 데이터를 대응 출력하도록 구성할 수 있다. 이와 같이 한층 또 한층의 신경망에 대해 병행 계산을 수행한다. 이러한 계산 방법은 신경망 계산의 병행처리가 가능하므로 처리 효율을 향상시킬 수 있다.
대안적으로, 상기 기계 학습 유닛(15)에서 컨트롤러 유닛(152)은 하나의 명령 저장 유닛(152a) 및 하나의 명령 처리 유닛(152b)을 포함할 수 있다. 대안적으로, 컨트롤러 유닛(152)도 복수의 명령 저장 유닛(152a) 및 복수의 명령 처리 유닛(152b)을 포함할 수 있다.
여기서, 명령 저장 유닛(152a)은, 기계 학습 유닛(15)이 기계 학습 연산을 수행할 때 관련있는 모든 연산 명령과, 데이터 판독/기록 동작을 진행해야 할 경우 대응하는 데이터 판독/기록 동작 명령을 저장하는데 사용된다. 여기서, 명령 처리 유닛(152b)은 명령 저장 유닛(152a) 내의 모든 명령을 처리하는데 사용되며 구체적으로 다음 동작을 포함할 수 있다. 즉, 명령 저장 유닛(152a) 내의 연산 명령을 연산 유닛(151)으로 보내어 연산 유닛(151)이 연산 명령에 따라 상응한 연산 동작을 수행하도록 하며, 명령 저장 유닛(152a) 내의 데이터 판독/기록 동작 명령을 분석하여 데이터 동작 신호를 얻은 후 상기 데이터 동작 신호를 제1 전송 인터페이스(14)에 전송하여 제1 전송 인터페이스(14)가 상기 데이터 동작 신호를 통해 공유 메모리(13)로부터 데이터를 판독하고 기록하도록 할 수도 있다.
대안적으로, 상기 기계 학습 유닛(15)에서 연산 유닛(151)은 하나의 마스트 처리회로(151a) 및 하나의 슬레이브 처리회로(151b)를 포함할 수 있다. 대안적으로, 연산 유닛(151)도 하나의 마스트 처리회로(151a) 및 복수의 슬레이브 처리회로(151b)를 포함할 수 있다. 이러한 구조 설계는 큰 데이터 량을 처리하는 경우에 사용하기 적합하다. 특히 기계 학습 연산 과정에 대량의 병행 연산을 진행해야 할 경우에 사용하기 적합하다. 그러므로 본 출원에 따른 이러한 연산 구조는 연산 속도를 높이고 연산 시간을 절약하여 전력 소모를 낮출 수 있다.
유의할 것은, 상기 구조 내의 각 슬레이브 처리회로(151b)는 마스트 처리회로(151a)에서 송신된 입력 데이터에 따라 병행 연산을 직접 수행할 수 있다. 대안적으로, 각각의 슬레이브 처리회로(151b)는 또한 컨트롤러 유닛(152)에서 송신된 입력 데이터에 따라 병행 연산을 직접 수행할 수도 있다.
상기 각각의 연산 유닛(151)에 하나의 마스트 처리회로(151a) 및 복수의 슬레이브 처리회로(151b)가 있는 경우, 연산 유닛(151) 내의 마스트 처리회로(151a)와 복수의 슬레이브 처리회로(151b)의 구조는 동일할 수도 있고 다를 수도 있다. 구체적으로 H형, 시스톨릭 어레이형(systolic array type) 및 트리형 구조 중 하나를 포함할 수 있는 마스트 처리회로(151a) 및 복수의 슬레이브 처리회로(151b)의 구조를 포함할 수 있다.
상기 실시예에 따른 기계 학습 장치는 적어도 하나 이상의 기계 학습 유닛을 포함하고, 각각의 기계 학습 유닛은 적어도 하나 이상의 연산 유닛, 및 연산 유닛에 연결된 컨트롤러 유닛을 포함한다. 동시에, 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함하며, 제1 전송 인터페이스를 통해 전송 회로에 연결된다. 상기 기계 학습 장치 내의 컨트롤러 유닛은 제1 전송 인터페이스 내의 송신 인터페이스를 통해 전송 회로로 데이터 동작 신호 및 출력 데이터를 송신하고, 제1 전송 인터페이스 내의 수신 인터페이스를 통해 전송 회로가 공유 메모리로부터 획득한 입력 데이터를 수신한 후 입력 데이터를 마스트 처리회로 및/또는 슬레이브 처리회로로 전송할 수 있다. 상기 기계 학습 장치에 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함하므로 마스트 처리회로는 획득한 데이터를 복수의 슬레이브 처리회로로 동시에 배분하여 복수의 슬레이브 처리회로가 병행 연산을 수행하도록 하고 중간 연산 결과를 다시 마스트 처리회로로 리턴하여 마스트 처리회로가 중간 결과를 연산하도록 함으로써 기계 학습 연산을 구현할 수 있다. 기계 학습 연산에 사용되는 프로세서 중 하나의 처리회로만 데이터에 대해 연산하는 하는 전통적인 방식에 비해, 본 출원에 따른 기계 학습 장치는 데이터 동작 및 데이터 연산하는 속도가 빠른 편이다.
도 57은 본 출원의 실시예에 따른 전송 회로의 구성도이다. 도 57를 참조하면, 상기 전송 회로(12)는 제2 전송 인터페이스(120), 제2 전송 인터페이스(120)에 연결된 적어도 하나 이상의 판독/기록 처리회로(121), 그리고 판독/기록 처리회로(121)에 연결된 중재 회로(122)를 포함하고, 적어도 하나 이상의 기계 학습 유닛(15)은 제1 전송 인터페이스(14)를 통해 제2 전송 인터페이스(120)에 연결되어 적어도 하나 이상의 기계 학습 유닛(15)과 전송 회로(12) 사이의 연결을 구현한다.
상기 판독/기록 처리회로(121)는 적어도 하나 이상의 기계 학습 유닛(15)이 제1 전송 인터페이스(14) 및 제2 전송 인터페이스(120)를 통해 송신한 데이터 동작 신호를 수신한 후 데이터 동작 신호를 상기 중재 회로(122)로 전송하고, 공유 메모리(13)로부터 판독된 데이터를 제2 전송 인터페이스(120)를 통해 적어도 하나 이상의 기계 학습 유닛(15)으로 송신하는데 사용된다. 상기 중재 회로(122)는 사전에 설정된 중재 규칙에 따라 적어도 하나 이상의 판독/기록 처리회로(121)로부터 수신된 데이터 동작 신호를 중재하고 중재 성공한 데이터 동작 신호에 따라 공유 메모리(13) 내의 데이터를 동작시키는데 사용된다.
대안적으로, 전송 회로(12)는 복수의 제2 전송 인터페이스(120)를 포함할 수 있으며, 제2 전송 인터페이스(120)는 송신 인터페이스일 수 있으며, 수신 인터페이스일 수도 있다. 제2 전송 인터페이스(120)가 송신 인터페이스인 경우, 전송 회로(12)는 상기 송신 인터페이스에 연결된 기계 학습 유닛(15)으로 데이터를 송신하며, 제2 전송 인터페이스(120)가 수신 인터페이스인 경우, 전송 회로(12)는 기계 학습 유닛(15)이 상기 수신 인터페이스로 송신한 데이터 동작 신호 및/또는 데이터를 수신할 수 있다. 대안적으로, 제2 전송 인터페이스(120)의 송신 인터페이스는 제1 전송 인터페이스(14) 내의 수신 인터페이스에 연결되고, 제2 전송 인터페이스(120)의 수신 인터페이스는 제1 전송 인터페이스(14) 내의 송신 인터페이스에 연결된다.
대안적으로, 도 57A를 참조하면, 상기 전송 회로(12)는 복수의 판독/기록 처리회로(121)를 포함할 수 있으며, 상기 복수의 판독/기록 처리회로(121)의 입력단은 복수의 제2 전송 인터페이스(120)와 일일히 대응하여 연결될 수 있다. 대안적으로, 도 2B를 참조하면, 상기 전송 회로(12)는 하나의 판독/기록 처리회로(121)만 포함할 수도 있으며, 상기 하나의 판독/기록 처리회로(121)의 입력단은 복수의 제2 전송 인터페이스(120)와 일대다(一對多)로 연결될 수 있다. 즉, 하나의 판독/기록 처리회로(121)는 복수의 제2 전송 인터페이스(120)에 연결된다.
대안적으로, 상기 복수의 판독/기록 처리회로(121)가 복수의 제2 전송 인터페이스(120)와 일대일로 대응하여 연결될 때, 각각의 판독/기록 처리회로(121)는 그와 연결된 하나의 제2 전송 인터페이스(120)를 통해 데이터를 하나의 기계 학습 유닛(15)으로 송신하거나, 그와 연결된 하나의 제2 전송 인터페이스(120)를 통해 데이터를 복수의 기계 학습 유닛(15)으로 송신할 수 있다. 상기 하나의 판독/기록 처리회로(121)가 복수의 제2 전송 인터페이스(120)와 일대다로 연결될 때, 상기 판독/기록 처리회로(121)는 그와 연결된 복수의 제2 전송 인터페이스(120)를 통해 데이터를 복수의 기계 학습 유닛(15)으로 송신하거나, 그 중의 하나의 제2 전송 인터페이스(120)를 통해 데이터를 하나의 기계 학습 유닛(15)으로 송신할 수 있다.
대안적으로, 상기 전송 회로(12)의 구조에 하나의 중재 회로(122)가 포함되며, 상기 하나의 중재 회로(122)의 입력단은 복수의 판독/기록 처리회로(121)에 연결될 수 있다. 상기 중재 회로(122)의 출력단은 공유 메모리(13)에 연결될 수 있으며 다른 메모리 장치 또는 제어 장치에 연결될 수도 있다.
상기 실시예로부터 알수 있듯이, 본 출원에 사용된 전송 회로(12)는 복수의 판독/기록 처리회로(121)를 포함할 수 있다. 이러한 복수의 판독/기록 처리회로(121)의 유형은 동일할 수도 있고 다를 수도 있다. 이하 실시예에서는 판독/기록 처리회로(121)의 유형, 및 판독/기록 처리회로(121)가 수신한 데이터 신호의 유형에 따라 데이터의 전송방식에 대해 전개하여 설명한다.
구체적으로, 판독/기록 처리회로(121)는 유니캐스트 판독 처리회로, 유니캐스트 기록 처리회로, 브로드캐스트 처리회로와 같은 처리회로 중의 하나 이상을 포함할 수 있다. 데이터 동작 신호는 유니캐스트 판독 요청, 유니캐스트 기록 요청, 유니캐스트 판독 명령, 유니캐스트 기록 명령, 멀티캐스트 명령, 브로드캐스트 명령 중 하나 이상을 포함한다.
여기서, 유니캐스트 유형의 처리회로는 유니캐스트 유형의 신호를 처리한다. 예를 들어, 상기 실시예의 유니캐스트 판독 처리회로는 대응하는 유니캐스트 판독 요청 또는 유니캐스트 판독 명령을 처리할 수 있고, 유니캐스트 기록 처리회로는 대응하는 유니캐스트 기록 요청 또는 유니캐스트 기록 명령을 처리할 수 있다. 따라서 멀티캐스트 및 브로드캐스트 유형의 처리회로는 멀티캐스트 또는 브로드캐스트 유형의 신호를 처리한다. 예를 들어, 상기 실시예의 브로드캐스트 처리회로는 대응하는 멀티캐스트 명령 또는 브로드캐스트 명령을 처리할 수 있다.
유의할 것은, 데이터 동작 신호는 본 실시예의 유니캐스트 판독 명령, 유니캐스트 기록 명령, 멀티캐스트 명령, 브로드캐스트 명령과 같은 명령형 신호인 경우, 판독/기록 처리회로(121)는 구체적으로 명령형 신호를 분석하여 요청형 신호를 생성하고, 요청형 신호를 중재 회로(122)로 전송한다. 데이터 동작 신호가 본 실시예의 유니캐스트 판독 요청, 유니캐스트 기록 요청과 같은 요청형 신호인 경우, 판독/기록 처리회로(121)는 상기 요청형 신호에 대해 임시 저장 작업을 수행하여 상기 요청형 신호를 중재 회로(122)로 송신한다.
대안적으로, 데이터 동작 신호가 멀티캐스트 명령일 때, 상기 멀티캐스트 명령에 데이터를 수신할 복수의 목표 기계 학습 유닛의 식별자가 포함되면, 전송 회로(12) 내의 판독/기록 처리회로(121)가 하나의 멀티캐스트 명령을 수신할 경우, 판독/기록 처리회로(121)는 상기 멀티캐스트 명령에 있는 식별자에 따라 복수의 목표 기계 학습 유닛을 식별하여 최종적으로 식별된 복수의 목표 기계 학습 유닛으로 리턴이 필요한 데이터를 송신할 수 있다.
대안적으로, 데이터 동작 신호가 브로드캐스트 명령인 경우, 상기 브로드캐스트 명령에는 데이터를 수신하는 목표 기계 학습 유닛의 식별자를 1개도 포함하지 않을 수 있다. 그러나 판독/기록 처리회로(121)가 하나의 브로드캐스트 명령을 수신할 경우, 판독/기록 처리회로(121)는 중재 회로(122)가 공유 메모리(13)로부터 획득한 데이터를 기계 학습 장치(11)에 포함된 모든 기계 학습 유닛(15)으로 송신할 수 있다.
대안적으로, 사전에 설정된 중재 규칙은 중재 회로(122)가 일정한 규칙에 따라 복수의 데이터 동작 신호의 우선순위를 확정할 수 있도록 함으로써 중재 회로(122)는 각각의 데이터 동작 신호의 우선순위에 따라 중재 성공한 데이터 동작 신호를 확정할 수 있다. 예를 들어, 1#판독/기록 처리회로(121)가 송신한 데이터 동작 신호의 전송 속도가 2#판독/기록 처리회로(121)가 송신한 데이터 동작 신호의 전송 속도보다 빠르면, 중재 회로(122)는 전송 속도가 큰 데이터 동작 신호의 우선순위를 높은 우선순위로 설정할 수 있으며, 전송 속도가 늦은 데이터 동작 신호의 우선순위를 낮은 우선순위로 설정할 수 있다. 그런 다음, 중재 회로(122)는 상기 우선순위에 따라 높은 우선순위의 데이터 동작 신호를 선택하여 다음 동작을 수행하되, 상기 데이터 동작 신호에 따라 공유 메모리(13)로부터 데이터를 획득한다.
상기 실시예에서, 전송 회로는 제2 전송 인터페이스, 제2 전송 인터페이스에 연결된 적어도 하나 이상의 판독/기록 처리회로, 그리고 판독/기록 처리회로에 연결된 중재 회로를 포함하며, 공유 메모리로부터 판독된 데이터를 제2 전송 인터페이스를 통해 적어도 하나 이상의 기계 학습 유닛으로 전송한다. 여기서, 판독/기록 처리회로는 적어도 하나 이상의 기계 학습 유닛이 제1 전송 인터페이스 및 제2 전송 인터페이스를 통해 송신한 데이터 동작 신호를 수신하고 데이터 동작 신호를 중재 회로로 전송한다. 그러므로 중재 회로가 사전에 설정된 중재 규칙에 따라 적어도 하나 이상의 판독/기록 처리회로로부터 수신된 데이터 동작 신호를 중재하고, 중재 성공한 데이터 동작 신호에 의해 공유 메모리 내의 데이터를 동작시킨다. 상기 전송 회로에서, 복수의 판독/기록 처리회로는 복수의 제2 전송 인터페이스를 통해 기계 학습 장치에 연결되어 중재 회로에 의해 중재를 진행함으로써 데이터를 효과적으로 전송할 수 있어 기계 학습 장치가 복수의 데이터 동작 신호를 동시에 송신할 때 생기는 데이터 충돌 및 막힘 현상을 방지할 수 있다. 한편, 본 실시예의 전송 회로는 여러 유형의 명령 또는 요청을 처리할 수 있어 데이터 처리 장치의 적용범위를 크게 확대하였다.
일 실시예에서, 본 실시예의 데이터 처리 장치는 적어도 하나 이상의 클러스터로 나눌 수 있으며 각 클러스터는 복수의 기계 학습 유닛(15), 하나의 전송 회로(12) 및 적어도 하나 이상의 공유 메모리(13)를 포함한다. 복수의 클러스터가 존재하는 경우에, 도 58을 참조하면, 전송 회로(12)는, 소속된 클러스터 내의 중재 회로(122)와 클러스터 내의 공유 메모리(13)에 연결된 제1 유형의 직접 메모리 액세스 제어기DMA123, 및/또는 소속된 클러스터 내의 중재 회로(122) 및 다른 클러스터 내의 공유 메모리(13)에 연결된 제2 유형 DMA124을 더 포함할 수 있다.
상기 제1 유형의 DMA123은 클러스터 내의 중재 회로(122) 및 클러스터 내의 공유 메모리(13) 사이에서 데이터 상호 작용을 제어한다. 제2 유형의 DMA124는 클러스터 내의 중재 회로(122) 및 다른 클러스터 내의 공유 메모리(13) 사이에서 데이터 상호 작용을 제어하고, 클러스터 내의 중재 회로(122) 및 오프칩 메모리 사이에서 데이터 상호 작용을 제어한다.
대안적으로, 제1 유형의 DMA123와 제2 유형의 DMA124는 주로 중재 회로(122)가 적어도 하나 이상의 공유 메모리(13)에 연결되도록 제어하고, 연결된 적어도 하나 이상의 공유 메모리(13)로부터 데이터를 신속하게 판독하거나 기록하는 역할을 한다.
전송 회로에 제1 유형의 DMA123 또는 제2 유형의 DMA124가 존재할 때, 도 59를 참조하면, 본 출원에 사용된 전송 회로(12)는 제1 유형의 DMA123에 연결된 제1 선택 전송 회로(125), 제2 유형의 DMA에 연결된 제2 선택 전송 회로(126)를 더 포함할 수 있다. 여기서, 제1 선택 전송 회로(125)는 소속된 클러스터 내의 공유 메모리(13)에 선택적으로 연결된다. 제2 선택 전송 회로(126)는 소속된 클러스터 및 다른 클러스터 내의 공유 메모리(13) 및 오프칩 메모리에 선택적으로 연결된다.
대안적으로, 제1 선택 전송 회로(125)와 제2 선택 전송 회로(126)는 크로스바 스위치(crossbar switch), 디버터 스위치(diverter switch)등 타입의 회로일 수 있으며, 온/오프 전류 또는 온/오프 신호를 설정하여 각 회로 사이의 연결 여부를 제어하는 회로일 수 있다. 본 실시예는 이에 대해 제한하지 않는다.
대안적으로, 도 60을 참조하면, 전송 회로(12)가 공유 메모리(13)에 데이터를 기록하거나 공유 메모리(13)가 판독된 데이터를 전송 회로(12)로 리턴할 때, 전송 회로(12)는 우선 기록하고자 하는 데이터 또는 리턴하고자 하는 데이터를 임시 저장하여 처리를 대기한다. 따라서, 이러한 수요에 의해 본 출원에 사용된 전송 회로(12)는 중재 회로(122) 및 공유 메모리(13)에 연결된 캐싱 회로(127)를 더 포함한다. 상기 캐싱 회로(127)는 중재 회로(122)가 공유 메모리(13)로부터 획득한 데이터를 임시 저장하고 중재 회로(122)가 공유 메모리(13)에 기록한 데이터를 임시 저장하도록 구성된다.
대안적으로, 캐싱 회로(127)는 데이터 교환용 버퍼를 제공하며, 캐싱 회로는 램덤 액세스 메모리(random access memory, RAM)일 수 있으며, 이는 종래기술에 속하므로 여기서 중복 설명하지 않는다.
본 출원에 사용된 데이터 처리 장치에 있어서, 각 회로 사이의 데이터 전송 대역폭은 다를 수 있다. 대안적으로, 전송 회로(12)와 공유 메모리(13) 사이의 전송 대역폭은 전송 회로(12)와 기계 학습 유닛(15) 사이의 전송 대역폭 보다 크다.
예를 들어 설명하면, 하나의 기계 학습 장치(11)에 N(N은 1보다 크거나 같은 정수)개의 기계 학습 유닛(15), 하나의 전송 회로(12), 및 하나의 공유 메모리(13)를 포함하고, 전송 회로(12)에서 각 기계 학습 유닛(15)까지의 대역폭이 M이라고 가정할 경우, 전송 회로(12) 내의 브로드캐스트 처리회로에서 공유 메모리(13)까지의 대역폭은 M*N으로 설정할 수 있다. 상기 설계의 장점은 극단적인 상황에서도 충돌을 피할 수 있다는 것이다. 예를 들어, 복수의 기계 학습 유닛(15)이 전송 회로(12)로 브로드캐스트 명령을 동시에 전송하면, 전송 회로(12) 내의 중재 회로(122)가 공유 메모리(13)로 상기 명령을 순서대로 송신할 때, 대역폭이 충분하므로 충돌이 발생하지 않는다. 한편, 전송 회로(12) 내의 중재 회로(122)는 사전에 설정된 중재 규칙에 따라 우선순위가 높은 하나의 브로드캐스트 명령을 선택하여 처리한 후, 공유 메모리(13)로부터 데이터의 리턴을 대기하면서 다른 하나의 브로드캐스트 명령을 계속 처리할 수 있다. 이러한 설계는 데이터 처리 시간을 가속화시키고, 데이터 전송하는 대역폭을 효율적으로 이용할 수 있다. 유의할 것은, 실제 회로 설계에서, 전송 회로(12)와 공유 메모리(13) 사이의 대역폭은 전송 회로(12)와 각 기계 학습 유닛(15) 사이의 대역폭의 2배, 4배, 6배 등일 수 있으며, 전송 회로(12)와 각 기계 학습 유닛(15) 사이의 대역폭보다 큰 조건을 만족하면 된다. 본 실시예는 이에 대해 제한하지 않는다.
현재 인공 신경망이 끊임없이 발전함에 따라 점점 많은 멀티 아키텍처(Multi-architecture)의 기계 학습 칩이 점차 출시되고 있다. 이러한 기계 학습 칩은 공유 메모리 내의 데이터를 액세스하거나 처리할 때, 대량의 데이터를 필요로 하고, 데이터의 처리 속도에 대한 요구도 높다. 따라서 데이터를 액세스하거나 동작하는 과정에 종종 하드웨어의 개수를 증가하는 방식을 통해 데이터 전송의 대역폭을 넓혀 데이터의 처리 속도를 향상시키므로 높은 데이터의 처리속도를 요구하는 기계 학습 칩의 특성을 만족하고 있다.
그러나, 상기 방법을 사용하여 기계 학습 칩이 데이터를 액세스하거나 동작할 경우, 하드웨어의 오버헤드가 크고 하드웨어의 리던던시(redundancy)를 초래할 수 있다.
상기 문제를 해결하기 위하여 본 출원은 이하 기술방안을 제공한다.
본 출원의 실시예에 따른 데이터 처리 장치는 소프트웨어, 하드웨어 또는 이들을 결합하는 방식을 통해 구현할 수 있다. 상기 데이터 처리 장치는 도 43에 도시된 일부 또는 전체가 될 수 있다. 상기 데이터 처리 장치는 기계 학습 데이터를 처리하고, 기계 학습 장치(11), 전송 회로(12) 및 공유 메모리(13)를 포함하고, 전송 회로(12)는 복수의 판독/기록 처리회로(121)와 하나의 중재 회로(122)를 포함하고, 중재 회로(122)는 복수의 기계 학습 유닛(15)에서 송신된 데이터 동작 신호에 대해 중재한 후 중재 성공한 데이터 동작 신호에 의해 공유 메모리(13)로부터 기계 학습 장치(11)에 필요한 입력 데이터를 획득한다. 판독/기록 처리회로(121)는 중재 성공한 데이터 동작 신호에 포함된 주소 정보 또는 데이터 동작 신호의 유형에 따라 복수의 기계 학습 유닛 중의 목표 기계 학습 유닛 또는 목표 연산 유닛을 확정하고 입력 데이터를 목표 기계 학습 유닛 또는 목표 연산 유닛으로 리턴한다. 기계 학습 장치(11)는 복수의 기계 학습 유닛(15)을 포함하고, 각각의 기계 학습 유닛(15)은 적어도 하나 이상의 연산 유닛(151)을 포함하며, 복수의 기계 학습 유닛은 제1 전송 인터페이스(14)를 통해 전송 회로(12)에 연결되며, 전송 회로(12)는 공유 메모리(13)에 연결된다.
대안적으로, 상기 기계 학습 장치(11)는 입력 데이터에 의해 기계 학습 연산을 수행하여 출력 데이터를 얻을 수 있다. 대안적으로, 상기 기계 학습 장치(11)는 전송 회로(12)를 통해 출력 데이터를 공유 메모리(13)에 전송하여 저장할 수도 있다. 구체적으로, 기계 학습 장치(11)가 일 신경망 연산을 수행할 경우, 기계 학습 장치(11)는 입력 뉴런 데이터 및 가중치에 의해 인공 신경망의 연산을 수행하여 출력 뉴런 데이터를 얻고, 출력 뉴런 데이터를 새로운 입력 뉴런 데이터로 삼아 전송 회로(12)를 통해 공유 메모리(13)에 전송하여 저장한다.
유의할 것은, 상기 기계 학습 유닛, 전송 회로, 공유 메모리 및 각 유형의 인터페이스는 모두 하드웨어 회로에 의한 방식으로 구현될 수 있다. 예시적으로, 전송 회로는 브로드캐스트 버스(broadcast bus)일 수 있다. 공유 메모리는 비-휘발성 및/또는 휘발성 메모리일 수 있으며, 램덤 액세스 메모리(RAM), 고속 캐시 메모리 등을 포함하나 이에 한정되지 않는다. 각종 인터페이스는 하나 또는 복수의 데이터 I/O(in/out, 리드인 리드아웃)인터페이스 또는 I/O 핀과 대응할 수 있다.
도 61을 참조하면, 하나의 선택 가능한 방안에서, 상기 기계 학습 장치(11)는 복수의 기계 학습 유닛(15)을 포함할 수 있다. 다층 신경망의 연산에 있어서, 정방향 연산 중의 한층 신경망의 계산을 예를 들어 설명한다. 일 실시 형태에서, 상기 기계 학습 장치는 복수의 기계 학습 유닛(MLU, Machine Learning Unit)을 통해 신경망 중 해당 층의 모든 뉴런의 출력 뉴런 데이터를 병행 계산할 수 있다. 예시적으로, 상기 기계 학습 장치가 4개의 기계 학습 유닛을 포함하고 해당 층의 신경망이 100개의 뉴런을 가지면, 각각의 기계 학습 유닛이 그 중 25개의 뉴런을 처리하도록 배분할 수 있고, 대응하는 연산 명령을 설정하여 구현할 수 있다. 상기 과정에서, 각각의 기계 학습 유닛은 모두 전송 회로를 통해 공유 메모리로부터 분배된 해당 층의 25개 뉴런에 각각 대응하는 입력 뉴런 데이터 및 가중치를 획득함으로써 분배된 해당 층의 25개 뉴런의 출력 뉴런 데이터를 계산하고, 전송 회로를 통해 분배된 해당 층의 25개 뉴런의 출력 뉴런 데이터를 공유 메모리에 전송하여 저장할 수 있다. 상기 각각의 기계 학습 유닛이 분배된 해당 층의 복수의 뉴런 데이터를 처리할 때, 병행 계산을 통해 처리할 수 있음을 이해할 수 있다. 이와 같이 한층 또 한층의 신경망 병행 계산을 진행하므로 신경망 계산의 병행 처리를 구현할 수 있어 처리 효율을 향상시킬 수 있다.
복수의 기계 학습 유닛(15)이 동시에 제1 전송 인터페이스(14)를 통해 전송 회로(12)로 데이터 동작 신호를 전송할 때, 제1 전송 인터페이스(14)를 통해 판독/기록 처리회로(121)로 데이터 동작 신호를 전송할 수 있다. 판독/기록 처리회로(121)는 하나의 판독/기록 처리회로일 수 있으며, 복수의 판독/기록 처리회로일 수도 있다. 판독/기록 처리회로(121)가 복수의 판독/기록 처리회로인 경우, 하나의 기계 학습 유닛(15)이 하나의 판독/기록 처리회로에 대응할 수 있고 하나의 기계 학습 유닛(15)이 복수의 판독/기록 처리회로에 대응할 수도 있다. 판독/기록 처리회로(121)가 데이터 동작 신호를 중재 회로(122)로 송신하면 중재 회로(122)가 복수의 데이터 동작 신호를 중재하여 중재 성공한 데이터 동작 신호에 따라 공유 메모리(13)로부터 데이터 동작 신호에 대응하는 기계 학습 유닛이 필요한 입력 뉴런 데이터 및 가중치를 획득한다. 판독/기록 처리회로(121)는 데이터 동작 신호에 포함된 주소 정보 또는 데이터 동작 신호의 유형에 따라 목표 기계 학습 유닛 또는 목표 연산 유닛을 확정하고, 입력 뉴런 데이터와 가중치를 목표 기계 학습 유닛 또는 목표 연산 유닛으로 리턴한다.
예시적으로, 기계 학습 장치는 기계 학습 유닛0, 기계 학습 유닛1, 기계 학습 유닛2 및 기계 학습 유닛3의 4개 기계 학습 유닛을 포함하며, 이들은 판독/기록 처리회로0, 판독/기록 처리회로1, 판독/기록 처리회로2 및 판독/기록 처리회로3의 4개 판독/기록 처리회로에 각각 대응된다. 여기서, 기계 학습 유닛0, 기계 학습 유닛1, 기계 학습 유닛2 및 기계 학습 유닛3은 제1 전송 인터페이스(14)를 통해 판독/기록 처리회로0, 판독/기록 처리회로1, 판독/기록 처리회로2 및 판독/기록 처리회로3로 데이터 동작 신호를 송신한다. 구체적으로 판독/기록 처리회로0로 데이터 동작 신호0를, 판독/기록 처리회로1로 데이터 동작 신호1를, 판독/기록 처리회로2로 데이터 동작 신호2를, 판독/기록 처리회로3로 데이터 동작 신호3를 송신할 수 있다. 판독/기록 처리회로0, 판독/기록 처리회로1, 판독/기록 처리회로2 및 판독/기록 처리회로3는 각각 데이터 동작 신호0, 데이터 동작 신호1, 데이터 동작 신호2 및 데이터 동작 신호3를 중재 회로(122)에 보내어 중재를 진행하도록 하며, 중재 회로(122)는 복수의 데이터 동작 신호를 중재하여 데이터 동작 신호2를 중재 성공한 데이터 동작 신호로 확정하고, 데이터 동작 신호2에 따라 공유 메모리(13)로부터 입력 뉴런 데이터 및 가중치를 획득한다. 판독/기록 처리회로2는 데이터 동작 신호2에 포함된 주소 정보, 예를 들어 기계 학습 유닛1 및 기계 학습 유닛2의 주소를 포함하는 주소 정보에 의해 기계 학습 유닛1과 기계 학습 유닛2를 목표 기계 학습 유닛으로 확정한 후, 데이터 동작 신호2에 따라 입력 뉴런 데이터 및 가중치를 기계 학습 유닛1 및 기계 학습 유닛2으로 리턴한다.
다른 하나의 선택 가능한 방안에서, 상기 기계 학습 장치는 복수의 기계 학습 유닛을 이용하여 일정한 선후 순서에 따라 신경망 중 각층의 모든 뉴런의 출력 뉴런 데이터를 각각 계산할 수 있다. 상기 과정에서, 직전의 기계 학습 유닛은 전송 회로를 통해 해당 층의 모든 뉴런의 출력 뉴런 데이터를 공유 메모리로 전송하여 저장할 수 있으므로 다음 기계 학습 유닛은 해당 층의 모든 뉴런의 출력 뉴런 데이터를 추출하여 다음 층의 입력 뉴런 데이터로 사용하여 계산할 수 있다. 상기 적용은 각층 신경망의 계산량이 크지 않는 경우, 예를 들어 각층의 뉴런 개수가 적은 신경망의 계산에 적용된다는 것을 이해할 수 있다.
도 62를 참조하여 기계 학습 유닛(15)에 대해 상세하게 설명한다. 일 방안에서, 기계 학습 유닛(15)은 적어도 하나 이상의 연산 유닛(151), 및 연산 유닛(151)에 연결된 컨트롤러 유닛(152)을 포함한다. 연산 유닛(151)은 하나의 마스트 처리회로(151a) 및 복수의 슬레이브 처리회로(151b)를 포함하며, 연산 유닛(151)은 제1 전송 인터페이스(14)를 통해 전송 회로(12)에 연결된다.
컨트롤러 유닛(152)은, 제1 전송 인터페이스(14)를 통해 전송 회로(12)로 데이터 동작 신호 및 출력 뉴런 데이터를 송신하며, 제1 전송 인터페이스(14)를 통해 전송 회로(12)가 공유 메모리(13)로부터 획득한 입력 뉴런 데이터 및 가중치를 수신한 후 입력 뉴런 데이터 및 가중치를 마스트 처리회로(151a) 및/또는 슬레이브 처리회로(151b)로 송신한다.
마스트 처리회로(151a)는, 입력 뉴런 데이터 및 가중치를 복수의 슬레이브 처리회로(151b)로 배분한다. 복수의 슬레이브 처리회로(151b)는 뉴런 데이터 및 가중치에 따라 중간 연산을 병행 수행하여 복수의 중간 결과를 얻은 후, 복수의 중간 결과를 마스트 처리회로(151a)로 전송한다. 마스트 처리회로(151a)는, 또한 복수의 중간 결과를 활성화 연산을 포함하는 후속 처리를 수행하여 계산 결과를 얻는다. 구체적으로, 상기 컨트롤러 유닛(152)은 계산 명령을 더 획득하고 상기 계산 명령을 분석하여 복수의 연산 명령을 얻은 후 상기 복수의 연산 명령을 마스트 처리회로로 송신한다.
본 실시예에서, 기계 학습 유닛이 복수의 연산 유닛을 포함하고, 각각의 연산 유닛이 상기 제1 전송 인터페이스를 통해 데이터를 송신하거나 수신할 수 있음을 이해할 수 있다.
예를 들어 설명하면, 하나의 선택 가능한 기술방안에서, 마스트 처리회로는 하나의 컨트롤러 유닛을 더 포함할 수 있으며, 상기 컨트롤러 유닛은 마스터 명령 처리 유닛을 포함할 수 있으며, 구체적으로 연산 명령을 마이크로 명령으로 디코딩한다. 다른 선택 가능한 기술방안에서, 슬레이브 처리회로는 다른 하나의 컨트롤러 유닛을 포함할 수 있으며, 상기 다른 하나의 컨트롤러 유닛은 슬레이브 명령 처리 유닛을 포함하고, 구체적으로 마이크로 명령을 수신하고 처리한다. 상기 마이크로 명령은 명령의 다음 레벨 명령일 수 있다. 상기 마이크로 명령은 명령을 분할 또는 디코딩하여 얻을 수 있으며, 추가로 각 부재, 각 유닛 또는 각 처리회로의 제어 신호로 디코딩될 수 있다. 예를 들어, 곱셈 마이크로 명령은 컨볼루션 명령의 다음 레벨 명령이다.
본 실시예에 따른 기계 학습 데이터를 처리하는 데이터 처리 장치는 기계 학습 장치, 전송 회로 및 공유 메모리를 포함한다. 전송 회로는 복수의 판독/기록 처리회로, 및 하나의 중재 회로를 포함한다. 기계 학습 장치는 복수의 기계 학습 유닛을 포함하되, 각각의 기계 학습 유닛은 적어도 하나 이상의 연산 유닛을 포함하고, 복수의 기계 학습 유닛은 제1 전송 인터페이스를 통해 전송 회로에 연결되고, 전송 회로는 공유 메모리에 연결된다. 본 실시예에서, 데이터 처리 장치는 중재 회로를 통해 복수의 기계 학습 유닛이 송신한 데이터 동작 신호를 중재하고, 중재 결과에 의해 공유 메모리로부터 기계 학습 장치에 필요한 입력 뉴런 데이터 및 가중치를 획득한다. 따라서 데이터 처리 장치가 데이터 동작할 때 복수의 기계 학습 유닛이 하나의 전송 회로를 통해 공유 메모리에 데이터 동작을 하도록 하고, 중재 회로를 통해 복수의 데이터 동작 신호를 중재하여 하드웨어의 오버헤드를 줄이는 동시에 복수의 데이터 동작 신호의 막힘(blocking)을 방지한다.
일 실시예에서, 도 61을 계속하여 참조하면, 판독/기록 처리회로는 유니캐스트 판독 처리회로 및 브로드캐스트 처리회로 중 임의의 하나를 포함 하고, 데이터 동작 신호는 유니캐스트 판독 요청, 유니캐스트 판독 명령, 멀티캐스트 명령, 브로드캐스트 명령 중 1종 이상을 포함한다. 여기서, 유니캐스트 유형의 처리회로는 유니캐스트 유형의 신호를 처리하고, 브로드캐스트 유형의 처리회로는 멀티캐스트 또는 브로드캐스트 유형의 신호를 처리한다.
예시적으로, 유니캐스트 판독 명령은 어느 기계 학습 유닛으로부터 송신되는, 공유 메모리의 소스 주소의 입력 뉴런 데이터와 가중치를 판독하는 명령이다. 유니캐스트 판독 명령을 통해 상기 기계 학습 유닛으로 입력 뉴런 데이터 및 가중치를 리턴할 수 있고, 상기 입력 뉴런 데이터 및 가중치는 상기 기계 학습 유닛이 계산 명령에 따라 어느 한층에 분배된 뉴런 계산을 진행하는 과정에서 상기 분배된 뉴런에 필요한 입력 뉴런 데이터 및 가중치일 수 있다. 브로드캐스트 명령은 어느 기계 학습 유닛으로부터 송신되는 공유 메모리로부터 소스 주소에 해당되는 입력 뉴런 데이터 및 가중치를 판독하는 명령이다. 브로드캐스트 명령을 통해 상기 기계 학습 장치 내의 모든 기계 학습 유닛으로 상기 입력 뉴런 데이터 및 가중치를 리턴할 수 있고, 상기 입력 뉴런 데이터는 어는 한층의 모든 뉴런에 필요한 입력 뉴런 데이터, 즉, 이전 층의 모든 출력 뉴런 데이터일 수 있고, 상기 가중치는 컨볼루션 커널(convolution kernel)와 같은 재활용 가능한 가중치이다. 멀티캐스트 명령과 브로드캐스트 명령의 차이점은 멀티캐스트 명령의 데이터의 리턴 대상이 상기 기계 학습 장치 중의 모든 기계 학습 유닛이 아니라 상기 멀티캐스트 명령 중의 마커 필드(marker field)에 대응하는 복수의 기계 학습 유닛이라는 것이다. 한편, 일반적으로 명령과 요청의 차이점은 명령 수행에 따른 오버헤드가 상대적으로 크지만, 명령에 많은 정보가 포함되어 있고, 요청 수행에 따른 오버헤드가 상대적으로 작지만, 요청에 포함된 정보가 적다는 것이다.
본 실시예에서, 데이터 처리 장치는 중재 회로를 통해 복수의 기계 학습 유닛에서 송신된 데이터 동작 신호를 중재하되, 중재 결과에 의해 공유 메모리로부터 기계 학습 장치에 필요한 입력 뉴런 데이터 및 가중치를 획득한다. 따라서 데이터 처리 장치가 데이터 동작할 때 복수의 기계 학습 유닛이 하나의 전송 회로를 통해 공유 메모리에 대해 데이터 조작하도록 하므로 하드웨어 오버헤드를 줄이고 리던던시(redundancy)를 방지한다. 아래 실시예를 통해 중재 모듈이 복수의 판독/기록 처리회로에서 송신된 데이터 동작 신호의 우선순위를 확정하는 구체적인 과정을 상세히 설명한다.
일 실시예에서, 상기 중재 회로(122)는 구체적으로 복수의 판독/기록 처리회로(121)에서 송신된 데이터 동작 신호의 우선순위를 확정하고, 우선순위가 가장 높은 데이터 동작 신호를 중재 성공한 데이터 동작 신호로 사용한다.
여기서, 중재 회로(122)는 사전에 설정된 규칙에 따라 복수의 데이터 동작 신호의 우선순위를 확정함으로써 중재 회로(122)가 각각의 데이터 동작 신호의 우선순위에 의해 동작이 필요한 대상, 즉 중재 성공한 데이터 동작 신호를 확정하도록 한다. 각각의 데이터 동작 신호의 송신 시간을 중재 기준으로 할 수 있으며, 데이터 동작 신호에 포함된 전송 속도 정보를 중재 기준으로 사용할 수도 있다. 예를 들어, 판독/기록 처리회로1가 데이터 동작 신호를 송신하는 시점은 T시각이고, 판독/기록 처리회로2가 데이터 동작 신호를 송신하는 시점은 T+1 시각인 경우, 데이터 동작 신호의 송신 시간을 중재 기준으로 하면 판독/기록 처리회로1에서 송신된 데이터 동작 신호가 우선순위가 높은 데이터 동작 신호, 즉 중재 성공한 데이터 동작 신호라는 것을 알 수 있다. 중재 회로(122)는 중재한 결과에 따라 중재 성공한 판독/기록 처리회로1에서 송신된 데이터 동작 신호에 의해 공유 메모리(13)로부터 데이터를 획득한다.
본 실시예에 따른 데이터 처리 장치는 중재 회로를 통해 복수의 판독/기록 처리회로에서 송신된 데이터 동작 신호의 우선순위를 확정하고, 우선순위가 가장 높은 데이터 동작 신호를 중재 성공한 데이터 동작 신호로 사용한다. 복수의 데이터 동작 신호를 동시에 수신한 경우, 중재 회로를 통해 수행 가능한 하나의 데이터 동작 신호를 확정하므로 복수의 데이터 동작 신호를 동시에 수행하는데 생기는 데이터 막힘 현상을 방지한다. 더 나아가서, 복수의 기계 학습 유닛이 하나의 전송 회로를 통해 공유 메모리에 대해 데이터 동작을 진행할 수 있어 하드웨어의 오버헤드를 줄이고 하드웨어의 리던던시(redundancy)를 방지한다.
일 실시예에서, 중재 회로(122)는, 구체적으로 복수의 판독/기록 처리회로(121)에서 송신된 데이터 동작 신호의 우선순위가 같을 경우, 복수의 데이터 동작 신호의 유형 및 사전에 설정된 수행 조건에 따라 중재 성공한 데이터 동작 신호를 확정한다.
여기서, 상기 실시예에 기초하여, 복수의 판독/기록 처리회로(121)에서 송신된 데이터 동작 신호의 우선순위가 같을 경우, 중재 회로(122)는 복수의 데이터 동작 신호의 유형 및 사전에 설정된 수행 조건에 따라 중재 성공한 데이터 동작 신호를 확정할 수 있다.
여기서, 사전에 설정된 수행 조건은 데이터 동작 신호에 대응하는 데이터 전송 채널의 아이들(idle) 여부를 측정하여 중재 결과를 확정하는 것일 수 있다. 데이터 전송 채널이 아이들(idle) 상태인 경우, 상기 데이터 전송 채널에 대응하는 데이터 동작 신호를 중재 성공한 데이터 동작 신호로 중재한다. 또한 데이터 동작 신호에 포함된 송신 시간 정보에 의해 중재 결과를 확정할 수도 있다. 예시적으로, 중재 회로(122)가 데이터 동작 신호0, 데이터 동작 신호1, 데이터 동작 신호2 및 데이터 동작 신호3의 4개 데이터 동작 신호를 수신하되, 여기서 데이터 동작 신호1와 데이터 동작 신호2의 우선순위가 동일하고, 데이터 동작 신호1가 유니캐스트 판독 명령이고, 데이터 동작 신호2가 브로드캐스트 명령이며, 데이터 동작 신호1에 포함된 주소 정보에 따라 기계 학습 유닛1을 목표 기계 학습 유닛으로 확정하고, 데이터 동작 신호2의 유형에 따라 기계 학습 유닛0, 기계 학습 유닛1, 기계 학습 유닛2 및 기계 학습 유닛3을 목표 기계 학습 유닛으로 확정하며, 기계 학습 유닛0, 기계 학습 유닛1 및 기계 학습 유닛2의 데이터 채널이 아이들(idle) 상태이고, 기계 학습 유닛3의 데이터 채널이 비지(busy) 상태인 경우, 중재 회로(122)는, 데이터 동작 신호1가 유니캐스트 판독 명령이고 데이터 동작 신호2가 브로드캐스트 명령이며 기계 학습 유닛3의 데이터 채널이 비지 상태에 따라 데이터 동작 신호1를 중재 성공한 데이터 동작 신호로 확정한다.
대안적으로, 데이터 동작 신호가 유니캐스트 유형의 신호인 경우, 상기 수행 조건은, 유니캐스트 유형의 신호를 송신하는 기계 학습 유닛의 채널이 아이들(idle) 상태인 것, 혹은 유니캐스트 유형의 신호를 송신한 기계 학습 유닛 내의 연산 유닛의 채널이 아이들(idle) 상태인 것을 포함한다.
대안적으로, 데이터 동작 신호가 멀티캐스트 유형의 신호인 경우, 상기 수행 조건은, 멀티캐스트 유형의 신호를 송신한 기계 학습 유닛의 채널이 아이들(idle) 상태이고 멀티캐스트 유형의 신호가 지정한 목표 기계 학습 유닛의 채널이 아이들(idle) 상태인 것, 혹은 멀티캐스트 유형의 신호를 송신한 기계 학습 유닛 내의 연산 유닛의 채널이 아이들(idle) 상태이고 멀티캐스트 유형의 신호가 지정한 목표 연산 유닛의 채널이 아이들(idle) 상태인 것을 포함한다.
대안적으로, 데이터 동작 신호가 브로드캐스트 유형의 신호인 경우, 상기 수행 조건은, 브로드캐스트 유형의 신호를 송신한 기계 학습 유닛의 채널이 아이들(idle) 상태이고 다른 나머지 기계 학습 유닛의 채널이 아이들(idle) 상태인 것, 혹은 브로드캐스트 유형의 신호를 송신한 기계 학습 유닛 내의 연산 유닛의 채널이 아이들(idle) 상태이고 다른 나머지 기계 학습 유닛 내의 연산 유닛의 채널이 아이들(idle) 상태인 것을 포함한다.
본 실시예에 따른 데이터 처리 장치에 있어서, 복수의 판독/기록 처리회로에서 송신된 데이터 동작 신호의 우선순위가 동일한 경우, 중재 회로는 복수의 데이터 동작 신호의 유형 및 사전에 설정된 수행 조건에 의해 중재 성공한 데이터 동작 신호를 확정할 수 있다. 본 실시예에서, 데이터 동작 신호의 우선순위가 동일한 경우, 데이터 동작 신호의 유형 및 사전에 설정된 수행 조건에 의해 중재 성공한 데이터 동작 신호를 확정한다. 더 나아가서, 복수의 데이터 동작 신호를 동시에 수행하여 생기는 데이터 막힘 현상을 방지하고, 복수의 기계 학습 유닛이 하나의 전송 회로를 통해 공유 메모리에 대해 데이터 동작을 할 수 있도록 하므로 하드웨어의 오버헤드를 줄이고 하드웨어의 리던던시(redundancy)를 방지하였다.
일 실시예에서, 도 63을 참조하면, 전송 회로(12)는 제2 전송 인터페이스(120)를 더 포함하고, 제2 전송 인터페이스(120) 내의 각 인터페이스와 제1 전송 인터페이스(14) 내의 각 인터페이스는 일일히 대응하여 연결되며, 하나의 기계 학습 유닛(15)과 하나의 판독/기록 처리회로(121)는 대응하여 연결된다.
여기서, 제1 전송 인터페이스(14)는 제2 전송 인터페이스(120)를 통해 데이터 동작 신호를 대응하는 판독/기록 처리회로(121)로 송신한다. 전송 회로(12)는 제2 전송 인터페이스(120)를 통해 리턴되는 기계 학습 장치에 필요한 입력 뉴런 데이터 및 가중치를 제1 전송 인터페이스(14)로 리턴한 후 다시 제1 전송 인터페이스(14)를 통해 목표 기계 학습 유닛 또는 목표 연산 유닛으로 리턴할 수 있다. 제1 전송 인터페이스(14)는 하나의 인터페이스를 포함할 수 있으며 복수의 인터페이스를 포함할 수도 있다. 제2 전송 인터페이스(120)는 하나의 인터페이스를 포함할 수 있고, 복수의 인터페이스를 포함할 수도 있다. 예시적으로, 제1 전송 인터페이스(14)에 하나의 송신 인터페이스(141) 및 하나의 데이터 수신 인터페이스(142)를 포함할 경우, 제2 전송 인터페이스(120)는 하나의 송신 인터페이스(141) 및 하나의 리턴 인터페이스(142)에 대응하는 제2 수신 인터페이스(1201)및 제2 리턴 인터페이스(1202)를 포함한다.
대안적으로, 도 64를 참조하면, 하나의 기계 학습 유닛(15) 내의 복수의 연산 유닛(151)은 제1 전송 인터페이스(14) 내의 하나의 송신 인터페이스(141)를 공유하되, 각각의 연산 유닛은 하나의 데이터 수신 인터페이스(142)와 대응한다.
여기서, 하나의 기계 학습 유닛(15)이 복수의 연산 유닛(151)을 포함할 경우, 복수의 연산 유닛(151)은 제1 전송 인터페이스(14)의 하나의 송신 인터페이스(141)를 공유할 수 있다. 하나의 기계 학습 유닛(15) 내의 복수의 연산 유닛(151)은 공유하는 하나의 송신 인터페이스(141)를 통해 데이터 동작 신호를 전송 회로(12)로 송신하고, 전송 회로(12)는 목표 연산 유닛(151)에 대응하는 데이터 수신 인터페이스(142)를 통해 획득한 입력 뉴런 데이터 및 가중치를 목표 연산 유닛으로 리턴한다.
따라서, 본 실시예에 따른 데이터 처리 장치에서, 하나의 기계 학습 유닛 내의 복수의 연산 유닛은 상기 제1 전송 인터페이스 내의 하나의 송신 인터페이스를 공유하되, 각각의 연산 유닛은 하나의 데이터 수신 인터페이스와 대응한다. 따라서 기계 학습 유닛 내의 데이터 동작 신호 송신 인터페이스의 개수를 효율적으로 줄이고, 하드웨어의 자원을 절약하고, 하드웨어의 면적과 전력 소모를 낮출 수 있다.
일 실시예에서, 도 65을 참조하면, 하나의 기계 학습 유닛(15) 내의 복수의 연산 유닛(151)은 각각 상기 제1 전송 인터페이스 내의 하나의 송신 인터페이스(141) 및 하나의 데이터 수신 인터페이스(142)와 대응한다.
여기서, 도 65에 도시된 바와 같이, 하나의 연산 유닛(151)은 하나의 송신 인터페이스(141) 및 하나의 데이터 수신 인터페이스(142)와 각각 대응한다. 연산 유닛(151)은 그와 대응하는 송신 인터페이스(141)를 통해 데이터 동작 신호를 전송 회로(12)로 송신하고, 전송 회로(12)는 대응하는 데이터 수신 인터페이스(142)를 통해 획득한 입력 뉴런 데이터 및 가중치를 대응하는 목표 연산 유닛(151)으로 리턴한다. 예시적으로, 연산 유닛1은 송신 인터페이스1 및 데이터 수신 인터페이스1와 대응하고, 연산 유닛2은 송신 인터페이스2 및 데이터 수신 인터페이스2와 대응한다. 연산 유닛1은 송신 인터페이스1를 통해 데이터 동작 신호를 전송 회로(12)로 송신하고, 전송 회로(12)는 데이터 동작 신호에 의해 연산 유닛1 및 연산 유닛2을 목표 연산 유닛으로 확정한다. 이렇게 되면, 전송 회로는 데이터 수신 인터페이스1 및 데이터 수신 인터페이스2를 통해 획득한 입력 뉴런 데이터 및 가중치를 연산 유닛1 및 연산 유닛2으로 리턴한다.
따라서, 본 실시예에 따른 데이터 처리 장치에서, 하나의 기계 학습 유닛 내의 복수의 연산 유닛은 각각 상기 제1 전송 인터페이스 내의 하나의 송신 인터페이스 및 하나의 데이터 수신 인터페이스와 대응한다. 복수의 연산 유닛은 제1 전송 인터페이스 내의 송신 인터페이스 및 데이터 수신 인터페이스와 일일히 대응되므로 데이터 전송 과정에서 제어 로직을 효과적으로 간소화시킬 수 있다.
일 실시예에서, 도 66을 참조하면, 복수의 기계 학습 유닛(15)은 제2 전송 인터페이스(120) 내의 하나의 신호 수신 인터페이스(81201)및 하나의 데이터 리턴 인터페이스(81202)를 공유한다.
여기서, 복수의 기계 학습 유닛(15)은 제2 전송 인터페이스(120) 내의 하나의 신호 수신 인터페이스(81201) 및 하나의 데이터 리턴 인터페이스(81202)를 공유할 수 있다. 예시적으로, 판독/기록 처리회로(121)가 브로드캐스트 판독 처리회로인 경우, 복수의 기계 학습 유닛에서 송신된 데이터 동작 신호가 하나의 신호 수신 인터페이스(81201)를 통해 브로드캐스트 판독 처리회로로 송신되고, 브로드캐스트 판독 처리회로는 데이터 동작 신호에 따라 입력 뉴런 데이터 및 가중치를 획득하고, 데이터 동작 신호 내의 주소 정보에 의해 데이터 리턴 인터페이스(81202)를 통해 입력 뉴런 데이터 및 가중치를 목표 기계 학습 유닛으로 리턴한다.
본 실시예에 따른 데이터 처리 장치에서, 복수의 기계 학습 유닛은 제2 전송 인터페이스 내의 하나의 신호 수신 인터페이스 및 하나의 데이터 리턴 인터페이스를 공유한다. 본 실시예에서, 데이터 처리 장치는 제2 전송 인터페이스 내의 하나의 신호 수신 인터페이스 및 하나의 데이터 리턴 인터페이스를 공유하므로 하드웨어의 오버헤드를 추가 줄여 하드웨어의 리던던시(redundancy)를 방지하였다.
일 실시예에서, 도 66을 계속하여 참조하면, 판독/기록 처리회로(121)는 신호 큐를 더 포함한다. 신호 큐는 각각의 기계 학습 유닛(15)에서 송신된 데이터 동작 신호를 저장한다. 판독/기록 처리회로(121)는 데이터 동작 신호를 수신한 경우, 신호 큐에 잔여 공간이 있는지 여부를 판단하되, "예"인 경우, 데이터 동작 신호를 신호 큐로 캐싱하고, "아니요"인 경우, 데이터 동작 신호를 차단한다.
여기서, 신호 큐는 각각의 기계 학습 유닛(15)에서 송신된 데이터 동작 신호를 저장할 수 있으며, 판독/기록 처리회로(121)의 외부에 설치될 수 있고, 판독/기록 처리회로(121) 내에 설치될 수도 있다. 판독/기록 처리회로(121)는 데이터 동작 신호를 수신한 경우, 신호 큐에 메모리 조회 명령을 발송하여 신호 큐의 저장 공간을 확보할 수 있다. 신호 큐의 저장 공간의 크기가 데이터 동작 신호를 저장할 수 있을 경우, 데이터 동작 신호를 신호 큐 내로 캐싱하고, 신호 큐의 저장 공간의 크기가 데이터 동작 신호를 저장할 수 없을 경우, 데이터 동작 신호를 차단한다.
본 실시예에 따른 데이터 처리 장치에서, 판독/기록 처리회로는 신호 큐를 더 포함한다. 신호 큐는 각각의 기계 학습 유닛에서 송신된 데이터 동작 신호를 저장한다. 판독/기록 처리회로는 데이터 동작 신호를 수신한 경우, 신호 큐에 잔여 공간이 있는지 여부를 판단하되, "예"인 경우, 데이터 동작 신호를 신호 큐에 캐싱하고, "아니요"인 경우 데이터 동작 신호를 차단한다. 본 실시예에서, 판독/기록 처리회로는 복수의 데이터 동작 신호를 수신한 경우, 데이터 동작 신호를 신호 큐에 캐싱하거나 혹은 데이터 동작 신호를 차단하여 데이터 동작 신호를 하나씩 중재 회로로 송신하여 처리되도록 하므로 데이터 동작 신호의 막힘 현상을 방지할 수 있다. 더 나아가서, 복수의 기계 학습 유닛이 하나의 전송 회로를 통해 공유 메모리에 대해 데이터 동작을 하도록 하므로 하드웨어의 오버헤드를 줄이고 하드웨어의 리던던시(redundancy)를 방지하였다.
대안적으로, 판독/기록 처리회로(121)가 브로드캐스트 처리회로인 경우, 신호 큐는 명령 큐 및 요청 큐를 포함한다. 명령 큐는 브로드캐스트 처리회로가 수신된 명령형 신호를 캐싱하고 요청 큐는 명령형 신호를 분석하여 얻은 요청형 신호를 캐싱한다.
여기서, 판독/기록 처리회로(121)가 브로드캐스트 처리회로인 경우, 신호 큐는 명령 큐 및 요청 큐를 포함할 수 있다. 이는 각각의 기계 학습 유닛(15)에서 송신된 명령형 신호를 명령 큐에 저장하고, 브로드캐스트 처리회로를 통해 명령형 신호를 분석하여 요청형 신호를 획득한 후, 획득한 요청형 신호를 요청 큐에 저장한다. 여기서, 명령 큐는 브로드캐스트 처리회로가 수신한 명령형 신호를 캐싱한다. 요청 큐는 명령형 신호를 분석하여 얻은 요청형 신호를 캐싱한다.
본 실시예에 따른 데이터 처리 장치에서, 판독/기록 처리회로가 브로드캐스트 처리회로인 경우, 신호 큐는 명령 큐 및 요청 큐를 포함하고, 명령 큐는 브로드캐스트 처리회로가 수신한 명령형 신호를 캐싱한다. 요청 큐는 명령형 신호를 분석하여 얻은 요청형 신호를 캐싱한다. 본 실시예에서, 명령형 신호 및 요청형 신호를 명령 큐 및 요청 큐에 각각 저장하므로 명령형 신호와 요청형 신호를 하나씩 중재 회로에 보내어 처리되도록 한다. 따라서 데이터 동작 신호의 막힘 현상을 추가 방지하여, 복수의 기계 학습 유닛이 하나의 전송 회로를 통해 공유 메모리에 대해 데이터 동작을 수행하도록 하여 하드웨어의 오버헤드를 줄이고 하드웨어의 리던던시(redundancy)를 방지하였다.
상기 각 실시예에서 동일 또는 유사한 부분은 서로 참조할 수 있으며, 일부 실시예에서 상세하게 설명되지 않은 내용은 다른 실시예의 동일 또는 유사한 내용을 참조할 수 있다.
유의할 것은, 본 출원을 설명함에 있어, "제1", "제2"등과 같은 용어들은 단지 목적을 설명하기 위해 사용된 것일 뿐이고, 상대적 중요도를 나태내거나 암시하는 것으로 이해되어서는 안된다. 이 외에, 본 출원을 설명함에 있어, 별도의 설명이 없는 한, "복수의"의 의미는 2개 또는 2개 이상을 의미한다.
흐름도 또는 여기에 기타 방식으로 설명한 과정 또는 방법은, 하나 또는 복수의 특정 로직 기능 또는 과정의 단계를 구현하기 위한 이행 가능한 지령의 코드의 모듈, 세그먼트 또는 부분을 포함하는 것으로 이해해야 한다. 아울러, 본 출원의 바람직한 실시 형태의 범위는 별도의 구현을 포함하되, 제시 또는 토론 순서를 따르지 않을 수 있으며, 관련있는 기능에 의해 거의 동시의 방식 또는 반대되는 순서로 기능을 수행하는 것을 포함한다. 이는 본 출원의 실시예가 속하는 기술분야의 통상의 지식을 가진 자들에 의하여 이해될 것이다.
본 출원의 각 부분은 하드웨어, 소프트웨어, 펌웨어 또는 그들의 조합으로 구현될 수 있다는 것으로 이해될 것이다. 상술한 실시 형태에서, 복수의 단계 또는 방법은 메모리에 저장되고 또한 적합한 명령 수행 시스템으로 수행되는 소프트웨어 또는 펌웨어로 구현할 수 있다. 예를 들어, 하드웨어로 구현하게 된 경우, 다른 한 실시 형태와 동일하게, 본 분야에서의 데이터 신호의 로직 기능을 구현하기 위한 로직 게이트 회로를 구비한 이산 로직 회로, 적합한 조합 로직 게이트 회로를 구비한 전용 집적 회로, 프로그램 가능 게이트 어레이(PGA), 필드 프로그램 가능 게이트 어레이(FPGA) 등 공지된 기술 중의 어느 하나 또는 그들의 조합으로 구현할 수 있다.
본 출원이 속하는 기술분야의 통상의 지식을 가진 자들은 상술한 실시예의 방법이 지니는 전부 또는 일부 단계의 구현은 프로그램으로 관련 하드웨어를 명령하여 완성할 수 있고, 상기 프로그램은 컴퓨터 판독가능 저장매체에 저장될 수 있으며, 상기 프로그램이 실행될 때 방법 실시예의 단계 중의 하나 또는 그 조합이 포함됨을 이해할 것이다.
이 외에, 본 출원의 각 실시예 중의 각 기능 유닛은 하나의 처리 모듈에 집적될 수 있고, 각 유닛이 단독적 물리 존재로 될 수도 있으며, 둘 또는 적어도 두개 이상의 유닛이 한 모듈에 집적될 수도 있다. 상술한 집적된 모듈은 하드웨어의 형식을 이용하여 구현될 수 있고, 소프트웨어 기능 모듈의 형식을 이용하여 구현될 수도 있다. 상기 집적된 모듈은 소프트웨어 기능 모듈의 형식으로 구현되고, 또한 독립된 제품으로 판매 또는 사용될 경우 컴퓨터 판독가능 저장매체에 저장될 수도 있다.
상술한 저장 매체는 읽기 전용 저장 장치, 디스크 또는 CD등 일 수 있다.
본 명세서의 설명에서, 참조 용어 "일 실시예", "일부 실시예", "예시", "구체적 예시" 또는 "일부 예시" 등의 설명은 당해 실시예 또는 예시를 결합하여 설명하는 구체적인 특징, 구조, 재료 또는 특징이 본 출원의 적어도 하나의 실시예 또는 예시에 포함된다는 것을 의미한다. 본 명세서에서 상술한 용어에 대한 함축적인 표현이 반드시 동일한 실시예 또는 예시를 가리키는 것은 아니다. 그리고, 설명된 구체적 특징, 구조, 재료 또는 특징은 임의의 하나 또는 복수의 실시예 또는 예시에서 적합한 방식으로 결합될 수 있다.
비록 이미 본 출원의 실시예를 제시하고 설명하였으나, 상기 실시예는 예시적인 것이며, 본 출원을 제한하는 것으로 이해되어서는 안된다. 본 출원이 속하는 기술 분야의 통상의 지식을 가진자는 본 출원의 범위 내에서 상기 실시예를 변화, 수정, 대체 및 변형할 수 있는 것으로 이해할 것이다.
Claims (13)
- 저장 장치 및 계산 장치를 포함하고 기계 학습 계산을 수행하는 네트워크 온칩 처리 시스템에 적용되는 네트워크 온칩 데이터 처리 방법으로서,
상기 네트워크 온칩 처리 시스템 내의 제1 계산 장치를 통해 상기 네트워크 온칩 처리 시스템 내의 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 단계;
상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계; 및
상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치로 송신하는 단계를 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 1에 있어서,
상기 계산 장치는 연산 유닛 및 컨트롤러 유닛을 포함하고
상기 네트워크 온칩 처리 시스템의 제1 계산 장치를 통해 상기 네트워크 온칩 처리 시스템의 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 단계는,
상기 제1 계산 장치 내의 컨트롤러 유닛이 상기 저장 장치로부터 상기 제1 연산 데이터 및 계산 명령을 획득하는 단계를 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 2에 있어서,
상기 연산 유닛은 하나의 마스트 처리회로 및 복수의 슬레이브 처리회로를 포함하고
상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 단계는,
상기 제1 계산 장치 내의 컨트롤러 유닛을 통해 상기 계산 명령을 분석하여 복수의 연산 명령을 얻으며, 상기 제1 계산 장치 내의 컨트롤러 유닛이 상기 복수의 연산 명령 및 상기 제1 연산 데이터를 상기 제1 계산 장치의 마스트 처리회로로 송신하는 단계;
상기 제1 계산 장치 내의 마스트 처리회로를 통해 상기 제1 연산 데이터에 대해 프리오더 처리를 수행하고, 상기 제1 계산 장치 중 복수의 슬레이브 처리회로와 데이터 및 연산 명령을 전송하는 단계;
상기 제1 계산 장치 중 복수의 슬레이브 처리회로가 상기 제1 계산 장치 내의 마스트 처리회로로부터 전송된 연산 데이터 및 연산 명령에 의해 중간 연산을 수행하여 복수의 중간 결과를 얻고 상기 복수의 중간 결과를 상기 제1 계산 장치의 마스트 처리회로로 전송하는 단계; 및
상기 제1 계산 장치의 마스트 처리회로가 상기 복수의 중간 결과에 대해 후속 처리를 수행하여 상기 계산 명령의 제1 연산 결과를 얻는 단계를 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 3에 있어서,
상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템의 제2 계산 장치로 송신하는 단계는,
상기 제1 계산 장치의 컨트롤러 유닛이 상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템의 제2 계산 장치로 송신하는 단계를 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 3에 있어서,
상기 기계 학습 계산은 인공 신경망 연산을 포함하고, 상기 제1 연산 데이터는 입력 뉴런 데이터 및 가중치를 포함하고, 상기 제1 연산 결과는 출력 뉴런 데이터인 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 5에 있어서,
상기 계산 장치는 저장 유닛 및 직접 메모리 액세스(DMA) 유닛을 더 포함하고, 상기 저장 유닛은 레지스터, 캐시 중 임의의 조합을 포함하며,
상기 캐시는 상기 제1 연산 데이터를 저장하고,
상기 레지스터는 상기 제1 연산 데이터 중의 스칼라를 저장하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 5에 있어서,
상기 컨트롤러 유닛은,
상기 인공 신경망과 관련있는 계산 명령을 저장하는 명령 저장 유닛;
상기 계산 명령을 분석하여 복수의 연산 명령을 얻는 명령 처리 유닛;
선후 순서에 따라 수행하고자 하는 복수의 연산 명령 및/또는 계산 명령을 포함하는 명령 큐를 저장하는 저장 큐 유닛을 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 7에 있어서,
상기 마스트 처리회로는 의존 관계 처리 유닛을 포함하고,
상기 의존 관계 처리 유닛은 제1 연산 명령과 상기 제1 연산 명령 이전의 제0 연산 명령 사이에 연관 관계가 있는지 여부를 확정하며, 상기 제1 연산 명령과 상기 제0 연산 명령이 연관 관계가 있으면 상기 제1 연산 명령을 상기 명령 저장 유닛 내에 캐싱하고, 상기 제0 연산 명령을 수행한 후 상기 명령 저장 유닛으로부터 상기 제1 연산 명령을 추출하여 상기 연산 유닛으로 전송하며,
상기 제1 연산 명령과 제1 연산 명령 이전의 제0 연산 명령 사이에 연관 관계가 존재하는지 여부를 확정하는 단계는,
상기 제1 연산 명령에 의해 상기 제1 연산 명령에 필요한 데이터의 제1 저장 주소 구간을 추출하고, 상기 제0 연산 명령에 의해 상기 제0 연산 명령에 필요한 데이터의 제0 저장 주소 구간을 추출하되, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하면, 상기 제1 연산 명령과 상기 제0 연산 명령이 연관 관계가 있다고 판단하고, 상기 제1 저장 주소 구간과 상기 제0 저장 주소 구간에 중첩된 영역이 존재하지 않으면, 상기 제1 연산 명령과 상기 제0 연산 명령이 연관 관계가 없다고 확정하는 단계를 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 2에 있어서,
상기 연산 유닛은 트리 모듈을 포함하고, 상기 트리 모듈은 하나의 루트 포트(root port) 및 복수의 브랜치 포트(branch port)를 포함하고, 상기 트리 모듈의 루트 포트는 상기 마스트 처리회로에 연결되고, 상기 트리 모듈의 복수의 브랜치 포트는 복수의 슬레이브 처리회로 중의 하나의 슬레이브 처리회로에 각각 연결되며,
상기 트리 모듈은 상기 마스트 처리회로와 상기 복수의 슬레이브 처리회로 사이의 데이터 블록, 가중치 및 연산 명령을 포워딩하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 1에 있어서,
상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치를 통해 상기 네트워크 온칩 처리 시스템 내의 저장 장치에 액세스하여 제2 연산 데이터를 획득하는 단계를 더 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 청구항 10에 있어서,
상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치를 통해 상기 제2 연산 데이터와 상기 제1 연산 결과에 대해 연산하여 제2 연산 결과를 얻는 단계를 더 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 방법. - 컴퓨터 프로그램이 저장된 컴퓨터 판독가능 저장매체에 있어서,
상기 컴퓨터 프로그램이 프로세서에 의해 실행될 때 청구항 1 내지 청구항 11 중 어느 한 항에 따른 상기 방법의 단계를 구현하는 것을 특징으로 하는 컴퓨터 판독가능 저장매체. - 기계 학습 계산을 수행하는 네트워크 온칩 데이터 처리 장치에 있어서,
상기 네트워크 온칩 처리 시스템 내의 제1 계산 장치를 통해 상기 네트워크 온칩 처리 시스템 내의 저장 장치에 액세스하여 제1 연산 데이터를 획득하는 제1 연산 데이터 획득 모듈;
상기 제1 계산 장치를 통해 상기 제1 연산 데이터에 대해 연산하여 제1 연산 결과를 얻는 연산 모듈; 및
상기 제1 연산 결과를 상기 네트워크 온칩 처리 시스템 내의 제2 계산 장치로 송신하는 제1 연산 결과 송신 모듈을 포함하는 것을 특징으로 하는 네트워크 온칩 데이터 처리 장치.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811216857.1 | 2018-10-18 | ||
CN201811216857.1A CN111079908B (zh) | 2018-10-18 | 2018-10-18 | 片上网络数据处理方法、存储介质、计算机设备和装置 |
KR1020207033053A KR20200139829A (ko) | 2018-10-18 | 2019-10-18 | 네트워크 온칩 데이터 처리 방법 및 장치 |
PCT/CN2019/111977 WO2020078470A1 (zh) | 2018-10-18 | 2019-10-18 | 片上网络数据处理方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207033053A Division KR20200139829A (ko) | 2018-10-18 | 2019-10-18 | 네트워크 온칩 데이터 처리 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200138411A true KR20200138411A (ko) | 2020-12-09 |
KR102539571B1 KR102539571B1 (ko) | 2023-06-01 |
Family
ID=70308031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207034126A KR102539571B1 (ko) | 2018-10-18 | 2019-10-18 | 네트워크 온칩 데이터 처리 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102539571B1 (ko) |
CN (1) | CN111079908B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12111732B1 (en) | 2023-08-11 | 2024-10-08 | Rebellions Inc. | Method and system for recovering data associated with artificial intelligence calculation |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416855B (zh) * | 2020-11-20 | 2021-06-15 | 北京京航计算通讯研究所 | 一种基于树状片上网络的数据采集处理片上系统 |
CN112686379B (zh) * | 2020-12-30 | 2024-03-19 | 上海寒武纪信息科技有限公司 | 集成电路装置、电子设备、板卡和计算方法 |
CN112712456A (zh) * | 2021-02-23 | 2021-04-27 | 中天恒星(上海)科技有限公司 | Gpu处理电路结构 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101306354B1 (ko) * | 2006-09-06 | 2013-09-09 | 실리콘 하이브 비.브이. | 복수의 명령어 모드를 구비한 데이터 처리회로 |
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
WO2018126073A1 (en) * | 2016-12-30 | 2018-07-05 | Lau Horace H | Deep learning hardware |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201001621D0 (en) * | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US10255228B2 (en) * | 2011-12-06 | 2019-04-09 | Nvidia Corporation | System and method for performing shaped memory access operations |
CN102591759B (zh) * | 2011-12-29 | 2014-08-13 | 中国科学技术大学苏州研究院 | 片上众核处理器时钟精确并行仿真系统 |
CN102868644A (zh) * | 2012-09-03 | 2013-01-09 | 盛科网络(苏州)有限公司 | 交换机数据传输模式动态切换的方法及系统 |
CN105183662B (zh) * | 2015-07-30 | 2017-12-29 | 复旦大学 | 一种无cache一致性协议的分布式共享片上存储架构 |
US20170083338A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Prefetching associated with predicated load instructions |
US20170185403A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Hardware content-associative data structure for acceleration of set operations |
CN106991477B (zh) * | 2016-01-20 | 2020-08-14 | 中科寒武纪科技股份有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN110188870B (zh) * | 2016-04-27 | 2021-10-12 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN107329936A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 |
CN107578095B (zh) * | 2017-09-01 | 2018-08-10 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
CN108470009B (zh) * | 2018-03-19 | 2020-05-29 | 上海兆芯集成电路有限公司 | 处理电路及其神经网络运算方法 |
-
2018
- 2018-10-18 CN CN201811216857.1A patent/CN111079908B/zh active Active
-
2019
- 2019-10-18 KR KR1020207034126A patent/KR102539571B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101306354B1 (ko) * | 2006-09-06 | 2013-09-09 | 실리콘 하이브 비.브이. | 복수의 명령어 모드를 구비한 데이터 처리회로 |
WO2018126073A1 (en) * | 2016-12-30 | 2018-07-05 | Lau Horace H | Deep learning hardware |
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12111732B1 (en) | 2023-08-11 | 2024-10-08 | Rebellions Inc. | Method and system for recovering data associated with artificial intelligence calculation |
Also Published As
Publication number | Publication date |
---|---|
CN111079908B (zh) | 2024-02-13 |
CN111079908A (zh) | 2020-04-28 |
KR102539571B1 (ko) | 2023-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7074832B2 (ja) | ネットワークオンチップによるデータ処理方法及び装置 | |
KR102539571B1 (ko) | 네트워크 온칩 데이터 처리 방법 및 장치 | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
KR102539572B1 (ko) | 네트워크 온칩 데이터 처리 방법 및 장치 | |
CN110968532B (zh) | 数据传输方法及相关产品 | |
KR102539573B1 (ko) | 네트워크 온칩 데이터 처리 방법 및 장치 | |
CN111209244B (zh) | 数据处理装置及相关产品 | |
KR102539574B1 (ko) | 네트워크 온칩 데이터 처리 방법 및 장치 | |
CN111381882A (zh) | 数据处理装置及相关产品 | |
CN111209230B (zh) | 数据处理装置、方法及相关产品 | |
CN111078624B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111078625B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111209245B (zh) | 数据处理装置、方法及相关产品 | |
WO2020063940A1 (zh) | 计算装置及相关产品 | |
CN111210011B (zh) | 数据处理装置及相关产品 | |
CN112396186B (zh) | 执行方法、装置及相关产品 | |
WO2023115529A1 (zh) | 芯片内的数据处理方法及芯片 | |
CN115437994A (zh) | 一种多级流水多路数据运算与存取控制系统 | |
CN112394999A (zh) | 运算方法、装置及相关产品 | |
CN117311812A (zh) | 用于重排序缓冲的方法及其相关产品 | |
CN115545180A (zh) | 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品 | |
CN117908959A (zh) | 用于执行原子操作的方法及其相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |