KR102474053B1 - 뉴럴네트워크 프로세서 - Google Patents

뉴럴네트워크 프로세서 Download PDF

Info

Publication number
KR102474053B1
KR102474053B1 KR1020200075628A KR20200075628A KR102474053B1 KR 102474053 B1 KR102474053 B1 KR 102474053B1 KR 1020200075628 A KR1020200075628 A KR 1020200075628A KR 20200075628 A KR20200075628 A KR 20200075628A KR 102474053 B1 KR102474053 B1 KR 102474053B1
Authority
KR
South Korea
Prior art keywords
data
router
fetch
input
memory
Prior art date
Application number
KR1020200075628A
Other languages
English (en)
Other versions
KR20210157615A (ko
Inventor
김한준
최영근
홍병철
Original Assignee
주식회사 퓨리오사에이아이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 퓨리오사에이아이 filed Critical 주식회사 퓨리오사에이아이
Priority to KR1020200075628A priority Critical patent/KR102474053B1/ko
Priority to US18/003,031 priority patent/US20230244620A1/en
Priority to PCT/KR2020/013849 priority patent/WO2021261666A1/ko
Publication of KR20210157615A publication Critical patent/KR20210157615A/ko
Application granted granted Critical
Publication of KR102474053B1 publication Critical patent/KR102474053B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/40Bus coupling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 명세서는 낮은 비용으로 높은 처리율을 가진 연산 처리 장치를 개시한다. 본 명세서에 따른 연산 처리 장치는 뉴럴 네트워크의 프로세싱을 수행하기 위한 연산에 필요한 데이터를 메모리에서 읽어와 연산 유닛에 제공하는 페치 유닛을 포함하는 연산 처리 장치로서, 상기 페치 유닛은, 입력된 데이터의 노드 ID에 따라 상기 입력된 데이터를 처리하는 방식이 기재된 데이터 처리 맵핑 테이블을 가진 복수 개의 라우터; 및 상기 복수 개의 라우터가 가진 각각의 데이터 처리 맵핑 테이블을 제어하는 페치 네트워크 컨트롤러;를 포함할 수 있다.

Description

뉴럴네트워크 프로세서{NEURAL NETWORK PROCESSOR}
본 발명은 뉴럴 네트워크 프로세서에 관한 것으로써, 보다 상세하게는 뉴럴 네트워크 연산을 위한 프로세서에 관한 것이다.
인공 신경망(Artificial Neural Network, ANN)은 인간의 뇌를 구성하고 있는 뉴런들을 수학적으로 모델링한 인공 뉴런들을 서로 연결하여 인공 지능을 구현한 것이다. 인공 뉴런에 대한 하나의 수학적 모델은 아래 수식 (1)과 같다. 구체적으로, 인공 뉴런은 input signal xi 를 입력 받아 xi에 각각 대응되는 가중치 wi를 곱하여 총합을 구한다. 다음, 해당 인공 뉴런은 활성화 함수(activation function)를 이용하여 활성화(activation) 값을 구하고, 이 활성화 값을 연결된 다음 인공 뉴런으로 전달한다.
y = f(w1 * x1 + w2 * x2 + .... wn * xn) = f(Σ wi * xi), where i = 1......n, n = # input signal - 수식 (1)
ANN의 한 형태인 심층 인공 신경망(Deep neural network, DNN)은 인공 뉴런(노드)들이 계층화된 네트워크 구조(layered network architecture)를 갖는다. DNN은 입력층(Input layer), 출력층(Output layer) 및 입력층과 출력층 사이의 다수의 은닉층(Hidden layer)으로 구성된다. 입력층은 입력값이 입력되는 다수의 노드들로 구성되며, 입력층의 노드들은 입력층과 연결되어 있는 다음 은닉층의 노드들로 상기한 수학적 모델을 통해 계산된 출력값들을 전달한다. 은닉층의 노드들은 상기한 수학적 모델을 통해 입력값을 전송 받고, 출력값을 계산하며, 출력값을 출력층의 노드들로 전달한다.
DNN에서 수행되는 기계 학습의 한 형태인 딥러닝(Deep learning)의 연산 과정은 주어진 DNN에서 학습 데이터를 바탕으로 계속해서 학습하여 해당 DNN의 연산 능력을 향상시키는 훈련(training) 과정과, 훈련 과정을 통해 학습된 DNN을 사용하여 새로운 입력 데이터에 대해 추론(inference)하는 과정으로 분류할 수 있다.
딥러닝의 추론 과정은 입력 데이터를 입력층의 노드가 입력 받고, 이후 레이어의 순서에 따라 은닉층과 출력층에서 순차적으로 연산을 수행하는 전방향 전파(forward propagation) 방식으로 이루어진다. 최종적으로, 출력층 노드들은 은닉층들의 출력값을 바탕으로 추론 과정의 결론을 도출한다.
반면, 딥러닝의 훈련 과정은 추론 과정에 대한 결론과 실제 정답과의 차이를 줄이기 위해 노드들의 가중치(weight)를 조절하여 학습을 수행한다. 일반적으로 가중치는 기울기 하강(gradient descent) 방식을 통해 수정된다. 기울기 하강 방식을 구현하기 위해, 노드들 각각의 가중치를 대상으로 추론 과정의 결론과 실제 정답간 차이의 미분값을 구해야 한다. 이 과정에서 DNN의 앞단 노드의 가중치의 미분값은 DNN의 뒷단 노드의 가중치에 대한 미분값의 체인룰(chain rule)에 의해 계산된다. 체인룰의 계산은 추론 과정 방향의 역방향으로 이루어지기 때문에 딥러닝의 학습 과정은 역방향 전파(back propagation) 방식을 갖는다.
다시 말해, DNN은 계층 구조를 가지며, 각각의 계층에 존재하는 노드들은 이전 계층에 존재하는 다수의 노드들로부터 결과값을 입력 받고, 상기한 노드의 수학적 모델에 기반한 연산을 수행하여 새로운 결과값을 출력하며, 새로운 결과값을 다음 계층의 노드들로 전달한다.
한편, DNN의 연산 구조는 각 계층에 존재하는 노드들이 수행하는 수많은 연산들을 다수의 연산 유닛에 분산하여 처리하는 분산 처리 구조를 지닐 수 있다. 각 계층에 존재하는 노드들이 수행하는 연산을 다수의 연산 유닛에 분산하여 처리하게 되며, 각 연산 유닛들은 연산에 필요한 데이터를 메모리에서 불러와 연산을 수행하고, 연산 결과를 다시 메모리에 저장시킨다.
대한민국 공개특허공보 제10-2019-0116024호, 2019.10.14
본 명세서는 낮은 비용으로 높은 처리율을 가진 연산 처리 장치를 제공하는 것을 목적으로 한다.
본 명세서는 상기 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위한 본 명세서에 따른 연산 처리 장치는 뉴럴 네트워크의 프로세싱을 수행하기 위한 연산에 필요한 데이터를 메모리에서 읽어와 연산 유닛에 제공하는 페치 유닛을 포함하는 연산 처리 장치로서, 상기 페치 유닛은, 입력된 데이터의 노드 ID에 따라 상기 입력된 데이터를 처리하는 방식이 기재된 데이터 처리 맵핑 테이블을 가진 복수 개의 라우터; 및 상기 복수 개의 라우터가 가진 각각의 데이터 처리 맵핑 테이블을 연산 형태에 따른 소프트웨어적 토폴로지를 형성하도록 재구성하는 페치 네트워크 컨트롤러;를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 복수 개의 라우터는 하드웨어적 1차원 망형 토폴로지(1-D mesh topology)를 형성할 수 있다.
이 경우, 각각의 라우터는, 상기 메모리로부터 데이터가 입력되는 메인 입력 포트, 인접한 제1 라우터에게 데이터를 전달하는 제1 전달 출력 포트, 인접한 제1 라우터로부터 전달된 데이터가 입력되는 제1 전달 입력 포트, 인접한 제2 라우터에게 데이터를 전달하는 제2 전달 출력 포트, 인접한 제2 라우터로부터 전달된 데이터가 입력되는 제2 전달 입력 포트 및 상기 연산 유닛에 데이터를 제공하기 위한 메인 출력 포트를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 데이터 처리 맵핑 테이블은 입력된 데이터의 차단, 반사 및 출력 여부에 대한 정보를 저장할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 페치 네트워크 컨트롤러는 재구성하고자 하는 토폴로지에 따라 상기 차단, 반사 및 출력 여부의 실행 여부를 설정할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 페치 네트워크 컨트롤러는 재구성된 토폴로지 내 같은 그룹에 속하는 라우터의 데이터 처리 맵핑 테이블 내 차단 및 출력을 동일하게 설정할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 메모리는 상기 복수 개의 라우터와 동일한 개수의 데이터 메모리 슬라이스를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 페치 유닛은, 상기 각 데이터 메모리 슬라이스에 저장된 데이터가 페치되는 네트워크 인터페이스; 상기 네트워크 인터페이스에 페치된 데이터를 전달하는 페치 네트워크; 및 상기 페치 네트워크에서 전달된 데이터를 연산 유닛에 제공하는 피드 모듈;을 포함할 수 있다. 이 경우, 상기 복수 개의 라우터 및 페치 네트워크 컨트롤러는, 상기 페치 네트워크에 포함될 수 있다.
본 명세서의 일 실시예에 따르면, 상기 네트워크 인터페이스는, 페치된 데이터를 저장하는 페치 버퍼; 및 상기 페치된 데이터에 각각의 데이터 메모리 슬라이스에 대응하는 노드 ID를 부여하는 인터페이스 컨트롤러;를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터를 각각의 라우터에 입력하는 타이밍을 제어할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터의 최초 대기 시간을 산출하고, 산출된 최초 대기 시간 이후에 상기 페치된 데이터를 각각의 라우터에 입력할 수 있다.
이 때, 상기 인터페이스 컨트롤러는, 노드 ID와 상기 페치 네트워크 컨트롤러가 상기 데이터 처리 맵핑 테이블을 통해 구성한 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 최초 대기 시간을 산출할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 상기 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 중간 대기 시간은 산출할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 미리 설정된 크기의 데이터를 각각의 라우터에 입력하며, 상기 중간 대기 시간이 종료된 이후 상기 미리 설정된 크기의 데이터를 다시 각각의 라우터에 입력할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 산출된 중간 대기 시간을 앞선 데이터의 대기 시간에 추가하여 중간 대기 시간이 종료 여부를 판단할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 명세서에 따르면, 종래 뉴럴 네트워크 프로세서에 비해 향상된 연산 처리 능력을 달성할 수 있다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 연산 처리 장치의 구성들을 개략적으로 도시한 블록도이다.
도 2는 본 명세서에 따른 연산 처리 장치의 각 구성들을 보다 자세히 도시한 블록도이다.
도 3은 본 명세서의 일 실시예에 따른 페치 유닛의 구성을 보다 구체적으로 도시한 블럭도이다.
도 4는 본 명세서에 따른 라우터의 구성을 설명하기 위한 참고도이다.
도 5는 제1 실시예에 따른 소프트웨어적 토폴로지다.
도 6은 제1 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 7는 제2 실시예에 따른 소프트웨어적 토폴로지다.
도 8은 제2 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 9는 제3 실시예에 따른 소프트웨어적 토폴로지다.
도 10은 제3 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 11는 제4 실시예에 따른 소프트웨어적 토폴로지다.
도 12은 제4 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 13은 본 명세서의 일 실시예에 따른 데이터 입력 타이밍의 예시이도이다.
본 명세서에 개시된 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 명세서가 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 명세서의 개시가 완전하도록 하고, 본 명세서가 속하는 기술 분야의 통상의 기술자(이하 '당업자')에게 본 명세서의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 명세서의 권리 범위는 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 명세서의 권리 범위를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 명세서가 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
딥러닝의 훈련 과정에 사용되는 데이터는 수백 킬로바이트(Kbyte)에서 수백 메가바이트(Mbyte)의 크기를 가진 텐서(Tensor)의 형태를 가질 수 있다. 이러한 데이터는 온칩 메모리(On-Chip Memory)를 구성하는 다수의 메모리 뱅크(Memory Bank)에 저장될 수 있다.
다수의 메모리 뱅크와 다수의 연산 유닛은 데이터를 전송을 위한 네트워크로 연결되어 있다. 네트워크-온-칩(Network-on-Chip)의 경우 네트워크가 해당 칩 내부에 구성될 수 있으며, 라우터를 포함할 수 있다. 라우터는 다수의 노드로부터 전달받은 데이터 패킷(Data Packet)을 다수의 노드로 전달할 수 있는 라우터(Router)를 포함한다. 라우터는 여러 방향에서 입력된 데이터 패킷들 즉, 트래픽(Traffic)들이 i) 목적지 방향으로 전달되도록 하고, ii) 경합(Contention)이 발생한 경우, 중재(Arbitration)을 수행하고, iii) 패킷이 손실되지 않도록 흐름제어(Flow Control)을 수행하는 동작 중 적어도 하나를 할 수 있다. 이러한 라우터의 성능과 비용은 토폴로지(Topology), 밴드위스(Bandwidth), 흐름제어(flow Control), 버퍼(buffer) 등에 의해 결정되며, 당연히 낮은 비용(cost, area 및 energy)로 높은 처리율(Throughput)을 가지는 라우터를 추구한다.
한편, 딥러닝에서 트래픽 패턴(Traffic Pattern)의 대다수는 동일한 텐서의 데이터가 다수의 출력 텐서 데이터를 생성하기 위해 여러 번 재사용된다. 따라서, 라우터는 메모리 접근 횟수를 줄이기 위해 입력 텐서 데이터를 메모리에서 읽어서 다수의 연산 유닛에 브로드캐스팅(Broadcasting) 또는 멀티캐스팅(Multicasting) 할 수 있다. 멀티캐스팅의 일반적인 방법은 각 데이터(d.g., 데이터 패킷)마다 목적지(destination)를 모두 기록하여 전달하는 방법이다. 이 방법은 노드가 증가함에 따라 패킷 헤더(Packet Header)의 크기가 노드의 개수에 비례하여 증가하는 문제가 있다(예: 패킷 헤더에 목적지를 표시하는 bitmap을 포함할시 64 노드에 대해 64bit 이상 필요). 일반적으로 버퍼를 사용한 흐름제어(Buffered flow control)는 버퍼의 크기(buffer area)에 따라 대기열이 차단되는 문제(head of line blocking)가 발생한다. 이를 해결하기 위한 방법 중 하나로 소스 스로틀링(source throttling) 방법이 사용될 수 있으나, 이 방법은 정체(congestion)가 발생한 이후에 이를 감지(detect)하여 회피한다. 따라서, 딥러닝의 라우팅 패턴 특성을 고려하여 낮은 비용으로 높은 처리율을 가지는 네트워크가 필요하다.
도 1은 본 발명의 일 실시예에 따른 연산 처리 장치의 구성들을 개략적으로 도시한 블록도이다.
도 1에 도시된 바와 같이, 연산 처리 장치(10)는 메모리(Memory, 100), 페치 유닛(Fetch Unit, 200), 연산 유닛(Operation Unit, 300) 및 커밋 유닛(Commit Unit, 400)을 포함할 수 있다. 다만, 도 1에 도시된 바와 같이 연산 처리 장치(10)가 메모리(100), 페치 유닛(200), 연산 유닛(300) 및 커밋 유닛(400)을 모두 포함해야 하는 것은 아니다. 예를 들어, 메모리(100), 커밋 유닛(400)은 연산 처리 장치(10)의 외부에 배치될 수도 있다.
메모리(100)는 본 명세서 상에서 설명되는 데이터 중 적어도 어느 하나 이상의 데이터를 저장할 수 있다. 예를 들어, 메모리(100)는 입력 데이터, 텐서(Tensor), 출력 데이터, 필터, 연산 유닛의 연산 결과 데이터, 페치 유닛에 사용되는 모든 데이터 등을 저장할 수 있다. 메모리(100)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)과 같은 데이터 메모리 형태로 형성될 수 있으나, 반드시 그러한 것은 아니다.
페치 유닛(200)은 메모리(100)에 저장된 입력 데이터에서 연산에 필요한 데이터를 읽어와 연산 유닛(300)에 제공할 수 있다. 입력 데이터가 텐서인 경우, 페치 유닛(200)은 메모리(100)에 저장되어 있는 텐서를 읽어와 연산의 형태에 맞춰 연산 유닛(300)에 피드(feed)할 수 있다. 연산의 형태란 예를 들어, 매트릭스 곱하기 연산 혹은 컨볼루션(Convolution), 그룹 컨볼루션(Grouped Convolution)  등이 포함될 수 있다. 이 경우, 페치 유닛(200)은 연산 유닛(300)에 하나 이상 구비된 연산기의 단위 데이터 처리량보다 같거나 많은 데이터를 갖는 데이터군을 메모리(100)로부터 순차적으로 읽어와서 연산 유닛(300)에 피드할 수 있다.
연산 유닛(300)은 페치 유닛(200)으로부터 전송 받은 입력 데이터의 연산을 처리하여 출력 데이터를 생성할 수 있다. 연산 유닛(300)은 수행할 연산의 형태에 맞춰(대응되도록) 구성될 수 있다. 일 예로, 연산 유닛(300)은 페치 유닛(200)으로부터 피드되는 데이터를 스트리밍(streaming) 방식으로 처리할 수 있으며, 이에 한정되지 않는다. 연산 유닛(300)은 하나 이상의 연산기를 포함할 수 있다.
커밋 유닛(400)은 연산 유닛(300)으로부터 출력(e.g., 스트리밍 방식로 출력)되는 연산 결과 데이터를 메모리(100)에 저장시킬 수 있다. 커밋 유닛(400)은 연산 유닛(300)로부터 수신한 연산 결과 데이터를 메모리(100)에 저장하는 동작을 수행함에 있어, 해당 연산 결과 데이터에 대하여 다음에 수행될 연산의 형태에 기반하여 메모리(100)에 저장할 수 있다. 예를 들어, 커밋 유닛(400)은 연산 결과 데이터를 미리 설정된 형태로 변형하거나 또는 앞으로 연산에 적합한 형태로 변형하여 메모리(100)에 저장시킬 수 있다.
도 2는 본 명세서에 따른 연산 처리 장치의 각 구성들을 보다 자세히 도시한 블록도이다.
도 2를 참조하여, 앞서 설명한 메모리(100), 페치 유닛(200), 연산 유닛(300) 및 커밋 유닛(400)에 대하여 더욱 상세하게 설명하도록 한다.
메모리(100)는 메모리 주소공간에 기초하여 구성될 수 있다. 일 예로, 메모리 주소공간은 연속적 또는 순차적일 수 있다. 또한, 메모리 주소공간은 일차원 일 수 있으나, 이에 한정되지 않으며 2차원 이상의 배열을 가질 수도 있다. 메모리(100)의 내부 구조는 독립적으로 접근 가능한 슬라이스 구조로 구성(configure)될 수 있다. 예를 들어, 메모리(100)는 복수 개의 데이터 메모리 슬라이스(101)를 포함할 수 있다. 이 때, 데이터 메모리 슬라이스(101)의 개수는 연산 유닛(300)에 포함된 닷 프로덕트 엔진(310)의 개수에 따라 결정될 수 있다. 일 예로, 슬라이스(101)의 개수는 연산 유닛(300)에 포함된 닷 프로덕트 엔진(310)의 개수와 동일할 수 있다. 일 예로, 입력 데이터가 텐서인 경우, 해당 텐서는 채널 방향과 높이 방향으로 분할된 후, 데이터 메모리 슬라이스(101)에 저장될 수 있다.
페치 유닛(200)은 메모리(100)에서 데이터를 읽어오고, 해당 데이터를 연산 유닛(300)의 닷 프로덕트 엔진(310)으로 피드할 수 있다. 예를 들어, 상기 페치 유닛(200)은 페치 시퀀서(210), 네트워크 인터페이스(220), 페치 네트워크(230), 연산 시퀀서 모듈(250) 중 적어도 하나를 포함할 수 있다. 페치 시퀀서(210)는 메모리(100)로부터 네트워크 인터페이스(220)로의 데이터 페치(Fetch) 동작을 제어할 수 있다. 네트워크 인터페이스(220)는 메모리(100)에 저장된 데이터의 페치를 위한 것으로써, 메모리(100)와 페치 네트워크(230) 상호 간의 인터페이스를 제공할 수 있다. 페치 네트워크(230)는 페치된 데이터를 피드 모듈(240)로 전달할 수 있다. 연산 시퀀서 모듈(250)은 피드 모듈(240) 및 피드 모듈(240)에 입력된 데이터를 제어함으로써 연산 유닛(300)이 특정 연산을 수행하도록 제어할 수 있다.
페치 유닛(200)의 페치 네트워크(230)는 연산 내용과 데이터의 형태에 따라 다양한 구조를 가질 수 있다. 페치 네트워크(230)는 소프트웨어에 의해 연산 유닛(300)에서 필요로 하는 형태의 토폴로지로 구성 또는 재구성될 수 있다. 또한, 페치 네트워크(230)는 입력 데이터의 형태(Shape)와 연산의 형태에 따라 토폴로지를 결정할 수 있다. 패치 네트워크(230)는, 연산 유닛(300)에서 수행되는 연산에 따라 Direct, Vertical Multicast, Channel Multicast, Vertical Nearest Neighbor 등의 다양한 방식의 커뮤니케이션 형태를 지원할 수 있으며, 이에 한정되지 않는다.
예를 들어, 2차원 컨벌루션의 경우, 모든 입력 채널의 값들이 각각의 출력 액티베이션을 계산하는 닷 프로덕트 엔진(310)에 모두 입력되어야 한고 가정한다. 따라서, 페치 유닛(200)은 채널 방향으로 순서대로 읽은 입력 액티베이션 값들을 멀티캐스트(Multicast) 방식으로 닷 프로덕트 엔진(310)에 피드할 수 있다. 또한, 페치 유닛(200)은 각각의 데이터 메모리 슬라이스(101)에서 연산 유닛(300)에 입력되어야 할 데이터를 순차적으로 읽기 위해 페치 시퀀서(210)를 사용할 수 있다. 페치 시퀀서(210)에 의해 데이터 메모리 슬라이스(101)에서 읽힌 각각의 데이터는 페치 유닛(200)의 페치 네트워크(230)를 통해 연산 유닛(300)으로 전달될 수 있다.
이와 같이, 페치 유닛(200)은 메모리(100)에서 텐서 슬라이스들을 병렬적으로 읽어서 연산 유닛(300)이 연산할 수 있는 형태로 연산 유닛(300)에 피드할 수 있다. 여기서, 페치 네트워크(230)는 메모리(100)에서 읽은 데이터를 필요로 하는 연산 유닛(300)에 전달하도록 페치 네트워크(230)를 구성하고 관리하는 페치 네트워크 컨트롤러(도 2 도시하지 않음)를 더 포함할 수 있다.
연산 유닛(300)은 병렬적으로 프로세싱 가능한 복수의 닷 프로덕트 엔진(Dot product engine, 310)을 포함할 수 있다. 일 예로, 상기 연산 유닛(300)은 256개의 닷 프로덕트 엔진(310)을 포함할 수 있으며, 이에 한정되지 않는다. 상기 각 닷 프로덕트 엔진(310)은 하나 이상의 연산기(예: 32개의 MAC)를 포함할 수 있다. 각각의 닷 프로덕트 엔진(310)은 연산기의 구성에 따라 다양한 연산을 수행할 수 있다. 연산 유닛(300)의 닷 프로덕트 엔진(310)도 채널과 높이 방향으로 분할되어 출력 액티베이션(Output activation)을 생성하도록 연산을 수행할 수 있다.
연산 유닛(300)은 닷 프로덕트 엔진(310) 외에도 레지스터 파일(도시하지 않음)를 더 포함할 수 있다.
레지스터 파일은 닷 프로덕트 엔진(310)이 연산 수행할 때 상대적으로 자주 사용 또는 재사용되는 연산자 중 하나를 일시적으로 저장하는 저장 공간이다. 예를 들어, 레지스터 파일은 SRAM 또는 DRAM 형태로 구성될 수 있으며, 이에 한정되지 않는다.
예를 들어, 뉴럴 네트워크에서의 연산을 수행할 때, 액티베이션(activation)의 크기가 큰 일반적인 컨벌루션 레이어의 경우 웨이트(weight)는 레지스터 파일에 저장되고 액티베이션은 메모리에 저장될 수 있다. 또한, 액티베이션 크기에 비해 웨이트 크기가 더 큰 형태의 완전 연결 레이어(Fully Connected layer)의 경우, 웨이트는 메모리에 저장되고 액티베이션은 레지스터 파일에 저장될 수 있다.
일 예로, 연산 유닛(300)이 MAC 연산을 하는 경우, 닷 프로덕트 엔진(310)은 MAC을 연산하기 위한 오퍼랜드(Operand, 연산자)로서 페치 유닛(200)으로부터 입력받은 입력 데이터와, 닷 프로덕트 엔진(310)에 위치한 레지스터 파일로부터 입력받은 레지스터 값, 그리고 어큐뮬레이터(Accumulator)로부터 입력받은 축적 값(Accumulation Value)을 사용할 수 있다. 그리고, 연산 결과는 다시 어큐물레이터에 저장되거나, 출력 데이터로 메모리(100)에 저장되기 위해 커밋 유닛(400)으로 전달될 수 있다.
한편, 앞서 설명한 바와 같이, 커밋 유닛(400)은 연산 유닛(300)에 의해 계산된 출력 액티베이션을 다음 연산에서 필요로 하는 형태로 변형하여 메모리(100)에 저장할 수 있다.
예를 들어, 뉴럴 네트워크에 있어서, 특정 계층 레이어에서의 연산에 따른 출력 액티베이션이 다음 레이어에서의 연산에 사용될 수 있도록, 커밋 유닛(400)은 출력 액티베이션을 메모리에 저장시킬 수 있다. 또한, 다음 레이어의 연산에서 필요로 하는 데이터 형태에 따라, 커밋 유닛(400)은 트랜스포즈(Transpose)(예: 텐서 매니퓰레이션(Tensor manipulation))을 수행하며, 결과물들을 커밋 네트워크(도시하지 않음)를 통해 메모리(100)로 전달하여 저장시킬 수 있다.
이처럼, 커밋 유닛(400)은 연산 유닛(300)에 의해 연산이 수행된 후, 출력된 데이터를 원하는 형태로 메모리(100)에 저장한다. 출력 데이터를 원하는 형태로 저장하기 위해, 커밋 유닛(400)은 데이터 트랜스포즈 모듈(도시하지 않음)과 커밋 네트워크 모듈(도시하지 않음)를 사용하여 데이터 트랜스포즈(Tensor Transpose)를 수행할 수 있다.
도 3은 본 명세서의 일 실시예에 따른 페치 유닛의 구성을 보다 구체적으로 도시한 블럭도이다.
도 3을 참조하면, 본 명세서의 일 실시예에 따른 페치 유닛(200)에 포함된 네트워크 인터페이스(220), 페치 네트워크(230) 및 피드 모듈(240)을 확인할 수 있다.
네트워크 인터페이스(220)를 통해 상기 각 데이터 메모리 슬라이스(101)에 저장된 데이터가 페치될 수 있다. 상기 네트워크 인터페이스(220)는 페치된 데이터를 저장하는 페치 버퍼(222) 및 상기 페치된 데이터에 각각의 데이터 메모리 슬라이스에 대응하는 노드 ID를 부여하는 인터페이스 컨트롤러(221)를 포함할 수 있다.
상기 페치 네트워크(230)는 상기 페치 버퍼에 페치된 데이터를 전달하기 위해 복수 개의 라우터(232) 및 페치 네트워크 컨트롤러(231)를 포함할 수 있다.
상기 복수 개의 라우터(232)는 각각은 데이터 처리 맵핑 테이블을 가질 수 있다. 데이터 처리 맵핑 테이블은 입력된 데이터의 노드 ID에 따라 상기 입력된 데이터의 라우팅/플로우 컨트롤 방식(e.g., 차단, 반사 또는 출력 등)을 나타낼 수 있다. 상기 페치 네트워크 컨트롤러(231)는 데이터 처리 맵핑 테이블을 재구성할 수 있다. 데이터 처리 맵핑 테이블은 해당 데이터에 대해서 앞으로 수행될 연산 타입에 적응적으로 재구성될 수 있다. 이 예로, 페치 네트워크 컨트롤러(231)은 상기 복수 개의 라우터(232)가 가진 각각의 데이터 처리 맵핑 테이블을 연산 형태에 따른 토폴로지를 형성하도록 재구성할 수 있다. 상기 데이터 처리 맵핑 테이블에 대해서는 이후에 보다 자세히 설명하겠다.
상기 피드 모듈(240)은 상기 페치 네트워크(230)에서 수신한 데이터를 연산 유닛(300)에 제공할 수 있다. 이를 위해, 상기 피드 모듈(240)은 복수 개의 라우터(232)에서 출력된 데이터를 저장하는 피드 버퍼(242)를 포함할 수 있다.
한편, 상기 메모리(100)는 하나 또는 둘 이상의 데이터 메모리 슬라이스(101)들을 포함할 수 있다. 라우터(232)의 개수는 데이터 메모리 슬라이스(101)의 개수와 관련(related to)될 수 있다. 예를 들어, 데이터 메모리 슬라이스(101)의 개수에 기초하여 라우터(232)의 개수가 결정되거나, 또는 반대로 라우터(232)의 개수에 기초하여 데이터 메모리 슬라이스(101)의 개수가 결정될 수 있다. 일 예로, 라우터(232)의 개수와 동일한 개수의 데이터 메모리 슬라이스(101)의 개수는 동일할 수 있다. 이 경우 라우터(232)와 데이터 메모리 슬라이스(101)는 1:1로 대응할 수 있다. 본 명세서에서는 이해의 편의 및 도면의 간소화를 위해 8개의 라우터(232-1 ~ 232-8)가 존재하는 것으로 가정하겠다. 그리고 상기 데이터 메모리 슬라이스(101)에 저장된 데이터는 상기 네트워크 인터페이스(220)에 포함된 페치 버퍼(222)에 페치될 수 있으므로, 도 3에서는 8개의 버퍼(222-1 ~ 222-8)가 서로 분리된 것으로 도시하였다. 따라서, 각각의 페치 버퍼(222)는 각각의 데이터 메모리 슬라이스(101)에 대응하며, 각 페치 버퍼(222)에는 각 대응하는 데이터 메모리 슬라이스(101)에 저장된 데이터가 페치될 수 있다. 그러나 도 3의 예시는 이해의 편의를 위해 서로 분리된 것으로 도시한 것이며, 반드시 물리적으로 분리된 것으로 제한하는 것은 아니다.
또한, 본 명세서에서는 데이터 페치 등을 설명함에 있어서, 하나의 데이터 패킷(data packet)이 4개의 플릿(Flit)으로 구성된 예시로 설명하겠다. 따라서, 상기 인터페이스 컨트롤러(220)는 하나의 데이터 패킷을 구성하는 각각의 플릿마다 각 데이터 메모리 슬라이스(101)에 대응하는 노드 ID를 부여할 수 있다. 도 3에 도시된 예시를 참조하면, 1번 페치 버퍼(222-1)에 페치된 4개의 플릿들은 노드 ID가 '#1'로 부여 받았다. 마찬가지로, 2번 페치 버퍼(222-2)에 페치된 4개의 플릿들은 노드 ID가 '#2'로 부여 받았으며, 나머지 페치 버퍼(222-3 ~ 222-8)에 각각 페치된 플릿들 역시 노드 ID를 '#3 ~ #8'로 부여 받았다.
본 명세서의 일 실시예에 따르면, 상기 복수 개의 라우터(232)는 하드웨어적 1차원 망형 토폴로지(1-D mesh topology)를 형성할 수 있다. 각각의 라우터(232)는 상기 페치 버퍼(222)에 페치된 데이터를 입력 받아 피드 버퍼(242)에게 출력할 수 있고, 또는 인접한 다른 라우터(232)에게 전달할 수 있다. 이하 설명의 편의를 위해, 복수의 라우터 중 가장 왼쪽에 위치한 라우터부터 '1번 라우터(232-1), 2번 라우터(232-2), ......, 8번 라우터(232-8)'라고 명명하겠다.
도 4는 본 명세서에 따른 라우터의 구성을 설명하기 위한 참고도이다.
도 4를 참조하면, 3개의 라우터를 확인할 수 있다. 이 3개의 라우터 중에서 가운데 위치한 라우터(232-Ref)를 기준으로 본 명세서에 따른 라우터의 구성을 설명하도록 하겠다. 그리고 기준 라우터(232-Ref)와 인접한 두 개의 라우터 중 왼쪽에 위치한 라우터를 '제1 라우터(232-F)', 오른쪽에 위치한 라우터를 '제2 라우터(232-S)'라고 명명하겠다. 상기 '제1' 및 '제2'는 기준 라우터(232-Ref)와 인접한 두 개의 라우터를 구별하기 위한 명칭일 뿐 라우터 사이의 우선 순위를 의미하지 않는다.
본 명세서에 따른 라우터(232)는 메인 입력 포트(①), 제1 전달 출력 포트(②), 제1 전달 입력 포트(③), 제2 전달 출력 포트(④), 제2 전달 입력 포트(⑤) 및 메인 출력 포트(⑥)를 포함할 수 있다. 상기 메인 입력 포트(①)는 상기 메모리(101) 즉, 페치 버퍼(222)로부터 데이터가 입력되는 포트이다. 상기 제1 전달 출력 포트(②)는 인접한 제1 라우터(232-F)에게 데이터를 전달하는 포트이다. 상기 제1 전달 입력 포트(③)는 인접한 제1 라우터(232-F)로부터 전달된 데이터가 입력되는 포트이다. 상기 제2 전달 출력 포트(④)는 인접한 제2 라우터(232-S)에게 데이터를 전달하는 포트이다. 상기 제2 전달 입력 포트(⑤)는 인접한 제2 라우터(232-S)로부터 전달된 데이터가 입력되는 포트이다. 상기 메인 출력 포트(⑥)는 상기 연산 유닛(300) 즉, 피드 버퍼(242)에 데이터를 제공하기 위한 포트이다.
따라서, 기준 라우터(232-Ref)의 제1 전달 출력 포트(②)를 통해 출력된 데이터는 제1 라우터(232-F)의 제2 전달 입력 포트(⑤)로 입력된다. 제1 라우터(232-F)의 제2 전달 출력 포트(④)를 통해 출력된 데이터는 기준 라우터(232-Ref)의 제1 전달 입력 포트(③)로 입력된다. 기준 라우터(232-Ref)의 제2 전달 출력 포트(④)를 통해 출력된 데이터는 제2 라우터(232-S)의 제1 전달 입력 포트(③)로 입력된다. 제2 라우터(232-S)의 제1 전달 출력 포트(②)를 통해 출력된 데이터는 기준 라우터(232-Ref)의 제2 전달 입력 포트(⑤)로 입력된다.
한편, 다시 도 3을 참조하면, 1번 라우터(232-1)는 제1 전달 출력 포트(②) 및 제1 전달 입력 포트(③)가 도시되어 있지 않다. 1번 라우터(232-1)는 물리적 또는 소프트웨어적으로 가장 왼쪽에 위치할 수 있기 때문에 제1 전달 출력 포트(②) 및 제1 전달 입력 포트(③)가 물리적으로 존재하지 않을 수 있다. 또는 1번 라우터(232-1)는 물리적으로 제1 전달 출력 포트(②) 및 제1 전달 입력 포트(③)가 존재할 수 있지만, 소프트웨어적으로 사용하지 않을 수 있다. 8번 라우터(232-8) 역시 제2 전달 출력 포트(④) 및 제2 전달 입력 포트(⑤)가 도시되어 있지 않은데, 1번 라우터(232-1)와 같은 이유이다.
한편, 본 명세서에서 라우터(232)가 데이터를 반시계 방향으로 전달하는 것으로 가정하겠다. 따라서, 각각의 라우터(232)는 메인 입력 포트(①) 및 제2 전달 입력 포트(⑤)를 통해 입력된 데이터를 전달할 경우, 제1 전달 출력 포트(②)를 통해서만 전달하는 것으로 가정하겠다. 그리고 각각의 라우터(232)는 제1 전달 입력 포트(③)를 통해 입력된 데이터를 전달할 경우, 제2 전달 출력 포트(④)를 통해서만 전달하는 것으로 가정하겠다. 상기와 같이 데이터의 전달 과정에서 입출력 포트가 설정된 경우, 데이터의 중복 출력을 방지할 수 있다. 또한, 상기 반시계 방향의 전달은 본 명세서에 따른 연산 처리 장치를 제한하는 것은 아니며, 시계 방향으로 바뀐 경우, 입출력 포트의 관계 역시 바뀔 수 있음을 이해해야 한다.
본 명세서에 따른 라우터(232)는 메인 입력 포트(①)를 통해 입력된 데이터의 노드 ID를 읽고, 데이터 처리 맵핑 테이블에 따라 해당 노드 ID를 가진 데이터를 처리할 수 있다. 본 명세서의 일 실시예에 따르면, 상기 데이터 처리 맵핑 테이블은 입력된 데이터의 차단, 반사 및 출력 여부에 대한 정보를 저장할 수 있다. 다시 말해서, 본 명세서에 따른 라우터(232)는 노드 ID에 따라 데이터를 다른 라우터에게 전달하지 않고 차단할 것인지, 반사할 것인지 또는 출력할 것인지를 데이터 처리 맵핑 테이블에 따라 처리할 수 있다. 상기 데이터 처리 맵핑 테이블과 관련하여, 본 명세서에 따른 라우터(232)는 인접한 하나의 라우터로부터 입력된 데이터를 인접한 다른 라우터에게 출력하는 것(데이터 전달)을 기본 동작으로 설정되어 있을 수 있으나 반드시 이에 한정된 것은 아니다. 따라서, 상기 데이터 처리 맵핑 테이블은 다른 라우터에서 입력된 데이터를 처리하는 방법에 대한 정보라고 할 수 있다.
데이터 처리 맵핑 테이블에서 '차단'이란, 제2 전달 입력 포트(⑤) 또는 제1 전달 입력 포트(③)를 통해 입력된 데이터를 제1 전달 출력 포트(②) 또는 제2 전달 출력 포트(④)를 통해 전달하지 않는 것을 의미한다. 데이터 처리 맵핑 테이블에서 '반사'란, 제2 전달 입력 포트(⑤)를 통해 입력된 데이터를 제2 전달 출력 포트(④)를 통해서 출력하는 것을 의미한다. 또는 데이터 처리 맵핑 테이블에서 '반사'란, 제1 전달 출력 포트(②)를 통해 출력되어야 할 데이터를 제1 전달 입력 포트(③)를 통해 입력된 데이터처럼 처리하는 것을 의미한다. 데이터 처리 맵핑 테이블에서 '출력'이란, 제1 전달 입력 포트(③)를 통해 입력된 데이터를 메인 출력 포트(⑥)를 통해 출력하는 것을 의미한다.
따라서, 상기 데이터 처리 맵핑 테이블에 어떠한 내용을 기재하는가에 따라 복수의 라우터(232)가 구성하는 소프트웨어적 토폴로지가 다양해 질 수 있다. 상기 페치 네트워크 컨트롤러(231)는 재구성하고자 하는 토폴로지에 따라 상기 차단, 반사 및 출력 여부의 실행 여부를 설정할 수 있는바, 상기 페치 네트워크 컨트롤러(231)에 의해 소프트웨어적 토폴로지가 결정될 수 있다. 상기 데이터 처리 맵핑 테이블에 대해서는 도 5 내지 도 12의 다양한 실시예를 통해서 보다 자세히 설명하겠다.
도 5는 제1 실시예에 따른 소프트웨어적 토폴로지다.
도 5를 참조하면, 제 1실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 하나의 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 페치 버퍼(222-1)에 저장된 데이터는 1번 피드 버퍼(242-1)에게만 전달되고, 2번 페치 버퍼(222-2)에 저장된 데이터는 2번 피드 버퍼(242-2)에게만 전달되는 실시예이다.
도 6은 제1 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 6을 참조하면, 데이터 처리 맵핑 테이블은 노드 ID에 따라 데이터를 처리하는 방식(예: 차단, 반사, 출력)으로 나누어진 것을 확인할 수 있다. 그리고 데이터 처리 맵핑 테이블의 항목에는 실행 여부가 기재되어 있을 수 있다. '1'이 기재된 경우 해당 항목을 실행하는 것을 의미하며, '0'이 기재된 경우 해당 항목을 실행하지 않는 것을 의미한다.
상기 데이터 처리 맵핑 테이블에 따라 도 5의 1번 라우터(232-1)를 살펴보면, ID #1 데이터에 대해서는 차단하지 않고, 반사하며, 출력을 실행한다. 본 명세서에서 라우터(232)가 데이터를 반시계 방향으로 전달하는 것으로 가정하기 때문에, 1번 라우터(232-1)의 메인 입력 포트(①)로 입력된 ID #1 데이터는 제1 전달 출력 포트(②)를 통해서 전달될 것이다. 이때, 1번 라우터(232-1)의 데이터 처리 맵핑 테이블에서 ID #1 데이터를 반사하는 것으로 설정하였기 때문에, 제1 전달 출력 포트(②)를 통해 출력되어야 할 ID #1 데이터가 제1 전달 입력 포트(③)를 통해 입력된 데이터처럼 처리된다. 그리고 1번 라우터(232-1)의 데이터 처리 맵핑 테이블에서 ID #1 데이터를 출력하는 것으로 설정하였기 때문에, ID #1 데이터는 메인 출력 포트(⑥)를 통해 출력된다. 그리고 나머지 ID #2 ~ #8 데이터에 대해서는 차단하며, 반사하지 않으며, 출력도 하지 않는다. 따라서, 도 5의 1번 페치 버퍼(222-1)에 페치된 데이터는 1번 피드 버퍼(242-1)에게만 출력될 수 있다. 도 5의 2번 라우터(232-2) 내지 8번 라우터(232-8) 역시 동일한 원리에 의해 동작하므로, 불필요한 반복 설명은 생략하도록 하겠다.
도 7는 제2 실시예에 따른 소프트웨어적 토폴로지다.
도 7을 참조하면, 제 2실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 2개의 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 페치 버퍼(222-1)에 저장된 데이터는 1번 피드 버퍼(242-1)와 2번 피드 버퍼(242-2)에게 전달되고, 2번 페치 버퍼(222-2)에 저장된 데이터는 1번 피드 버퍼(242-1)와 2번 피드 버퍼(242-2)에게 전달되는 실시예이다.
도 8은 제2 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
상기 데이터 처리 맵핑 테이블에 따라 도 7의 1번 라우터(232-1)를 살펴보면, ID #1 데이터에 대해서는 차단하지 않고, 반사하며, 출력을 실행한다. 앞서 제1 실시예에서 1번 라우터(232-1)가 ID #1 데이터를 1번 피드 버퍼(242-1)에 어떻게 출력하는지 설명하였으므로 반복 설명은 생략하겠다. 그리고 ID #1 데이터는 제1 전달 입력 포트(③)를 통해 입력된 데이터처럼 처리되기 때문에, ID #1 데이터는 제2 전달 출력 포트(④)를 통해서 2번 라우터(232-2)에게 전달될 수 있다. 도 7의 2번 라우터(232-2)를 살펴보면, ID #1 데이터에 대해서는 차단하지 않고, 반사하지 않으며, 출력을 실행한다. 따라서, 2번 라우터(232-2)는 1번 라우터(232-1)에서 ID #1 데이터가 입력되면 2번 피드 버퍼(242-2)에 출력할 수 있다. 따라서, 도 7의 1번 페치 버퍼(222-1)에 페치된 데이터는 1번 피드 버퍼(242-1) 및 2번 피드 버퍼(242-2)에게 출력될 수 있다.
2번 라우터(232-2)를 살펴보면, ID #2 데이터에 대해서는 차단하지 않고, 반사하지 않으며, 출력을 실행한다. 본 명세서에서 라우터(232)가 데이터를 반시계 방향으로 전달하는 것으로 가정하기 때문에, 2번 라우터(232-2)의 메인 입력 포트(①)로 입력된 ID #2 데이터는 제1 전달 출력 포트(②)를 통해서 1번 라우터(232-1)에게 전달될 수 있다. 그리고 도 7의 1번 라우터(232-1)를 살펴보면, ID #2 데이터에 대해서는 차단하지 않고, 반사하며, 출력을 실행한다. 1번 라우터(232-1)에 입력된 ID #2 데이터는, ID #1 데이터와 동일하게, 1번 라우터(232-1)에 의해 1번 피드 버퍼(242-1)에 출력될 수 있다. 그리고 ID #2 데이터는 다시 피드 버퍼(242-2)에게 전달될 수 있다. 2번 라우터(232-2)는 제1 전달 입력 포트(③)를 통해 1번 라우터(232-1)로부터 다시 입력된 ID #2 데이터를 메인 출력 포트(⑥)를 통해 출력할 수 있다. 따라서, 도 7의 2번 페치 버퍼(222-2)에 페치된 데이터는 1번 피드 버퍼(242-1) 및 2번 피드 버퍼(242-2)에게 출력될 수 있다.
한편, 도 7에서 ID #1 데이터는 2번 라우터(232-2)의 제1 전달 입력 포트(③)를 통해 입력되므로, 2번 라우터(232-2)의 제2 전달 출력 포트(④)를 통해 출력된다. 따라서, ID #1 데이터가 다시 1번 라우터(232-1)에게 입력되지 않는다. 부가적으로, 3번 라우터(232-3)는 자신의 제1 전달 입력 포트(③)를 통해 입력된 ID #1 데이터를 차단한다. 또한, 라우터(232-3)는 자신의 제1 전달 입력 포트(③)를 통해 입력된 ID #2 데이터 역시 차단한다.
도 7의 1번 라우터(232-1)와 2번 라우터(232-2)는 나머지 ID #3 ~ #8 데이터에 대해서는 차단하며, 반사하지 않으며, 출력도 하지 않는다.
도 7의 3번 라우터(232-3)와 4번 라우터(232-4), 5번 라우터(232-5)와 6번 라우터(232-6), 7번 라우터(232-7)와 8번 라우터(232-8) 역시 동일한 원리에 의해 동작하므로, 불필요한 반복 설명은 생략하도록 하겠다.
도 9는 제3 실시예에 따른 소프트웨어적 토폴로지다.
도 9를 참조하면, 제 3실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 4개의 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 내지 4번 페치 버퍼(222-1 ~ 222-4)에 저장된 데이터가 각각 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)에게 전달되는 실시예이다.
도 10은 제3 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
앞서 제1 실시예 및 제2 실시예를 통해 ID #1 데이터 및 ID #2 데이터의 처리에 대해서 설명하였으므로, 도 10에서는 도 9의 3번 페치 버퍼(222-3)에 페치된 ID #3 데이터의 처리에 대해서 대표로 살펴보겠다. 우선, 3번 페치 버퍼(222-3)에 페치된 ID #3 데이터는 3번 라우터(232-3)의 메인 입력 포트(①)를 통해 입력되고, 3번 라우터(232-3)의 제1 전달 출력 포트(②)로 출력된다.
2번 라우터(232-2)는 제2 전달 입력 포트(⑤)를 통해 ID #3 데이터를 전달받고, ID #3 데이터를 2번 라우터(232-2)의 제1 전달 출력 포트(②)로 출력한다.
1번 라우터(232-1)는 제2 전달 입력 포트(⑤)를 통해 ID #3 데이터를 전달받는다. 1번 라우터(232-1)의 데이터 처리 맵핑 테이블에 따르면, 1번 라우터(232-1)는 ID #3 데이터에 대해서 반사 및 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 1번 피드 버퍼(242-1)에 출력되고 그리고 1번 라우터(232-1)의 제2 전달 출력 포트(④)로 출력된다.
2번 라우터(232-2)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 2번 라우터(232-2)의 데이터 처리 맵핑 테이블에 따르면, 2번 라우터(232-2)는 ID #3 데이터에 대해서 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 2번 피드 버퍼(242-2)에 출력되고 그리고 2번 라우터(232-2)의 제2 전달 출력 포트(④)로 출력된다.
3번 라우터(232-3)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 3번 라우터(232-3)의 데이터 처리 맵핑 테이블에 따르면, 3번 라우터(232-3)는 ID #3 데이터에 대해서 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 3번 피드 버퍼(242-3)에 출력되고 그리고 3번 라우터(232-3)의 제2 전달 출력 포트(④)로 출력된다.
4번 라우터(232-4)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 4번 라우터(232-4)의 데이터 처리 맵핑 테이블에 따르면, 4번 라우터(232-4)는 ID #3 데이터에 대해서 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 4번 피드 버퍼(242-4)에 출력되고 그리고 4번 라우터(232-4)의 제2 전달 출력 포트(④)로 출력된다.
5번 라우터(232-5)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 5번 라우터(232-5)의 데이터 처리 맵핑 테이블에 따르면, 5번 라우터(232-5)는 ID #3 데이터에 대해서 차단을 실행하므로, ID #3 데이터는 더 이상 출력 또는 전달되지 않는다.
따라서, 도 9의 3번 페치 버퍼(222-3)에 페치된 ID #3 데이터는 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)에 전달될 수 있다. 또한, ID #1 데이터, ID #2 데이터 및 ID #4 데이터 역시 동일하게 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)에 전달될 수 있다. 한편, ID #5 데이터 내지 ID #8 데이터는 동일한 원리에 의해 5번 피드 버퍼 내지 8번 피드 버퍼(242-5 ~ 242-8)에 전달될 수 있다.
도 11는 제4 실시예에 따른 소프트웨어적 토폴로지다.
도 11을 참조하면, 제 4실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 모든 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 내지 8번 페치 버퍼(222-1 ~ 222-8)에 저장된 데이터가 각각 1번 피드 버퍼 내지 8번 피드 버퍼(242-1 ~ 242-8)에게 전달되는 실시예이다.
도 12은 제4 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
앞서, 제1 실시예 내지 제3 실시예를 통해 각 라우터(232)가 데이터 처리 맵핑 테이블에 따라 입력된 데이터를 어떻게 처리하는지 충분히 설명하였으므로, 반복적인 설명은 생략하도록 하겠다. 또한, 도 5 내지 도 12를 통해 확인할 수 있듯이, 상기 페치 네트워크 컨트롤러(231)는 재구성된 소프트웨어적 토폴로지 내 같은 그룹에 속하는 라우터(232)의 데이터 처리 맵핑 테이블 내 차단 및 출력을 동일하게 설정할 수 있다.
한편, 지금까지는 라우터(232)가 하나의 데이터를 어떻게 처리하는지에 대해서 설명하였다. 그러나 다수의 페치 버퍼(222)에 페치된 다수의 데이터가 함께 처리되어야 한다. 종래 기술은 라우터에 충분히 큰 버퍼(buffer)를 구비하고, 충돌이 발생할 때 문제를 해결하는 방식이지만, 본 명세서에 따른 연산 처리 장치(10)는 보다 효과적으로 다수의 데이터를 처리하는 방법을 제시할 수 있다. 이를 위해서, 상기 인터페이스 컨트롤러(231)는 노드 ID에 따라 상기 페치된 데이터를 각각의 라우터(232)에 입력하는 타이밍을 제어할 수 있다.
도 13은 본 명세서의 일 실시예에 따른 데이터 입력 타이밍의 예시도이다.
도 13을 참조하면, 복수 개의 라우터(232)의 소프트웨어적 토폴로지가 도 9에 도시된 제3 실시예와 동일한 것을 확인할 수 있다. 따라서, 1번 페치 버퍼 내지 4번 페치 버퍼(222-1 ~ 222-4)에 페치된 데이터가 1번 라우터 내지 4번 라우터(232-1 ~ 232-4)에 입력될 때 충돌을 일으키지 않고, 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)로 출력되어야 한다. 한편, 본 명세서에서는 제3 실시예를 통해 데이터 입력 타이밍을 설명하겠지만, 본 명세서에 따른 연산 처리 장치(10)가 상기 예시에 제한되는 것은 아니다.
본 명세서에서는 하나의 데이터 패킷(data packet)이 4개의 플릿(Flit)으로 구성된 예시로 설명하므로, 플릿 단위로 데이터 입력 타이밍을 구별하여 설명하겠다. 따라서, 도 13에 도시된 예시에서, 플릿에 기재된 번호는 입력 순서를 의미한다.
본 명세서에 따른 상기 인터페이스 컨트롤러(221)는 노드 ID에 따라 상기 페치된 데이터의 최초 대기 시간을 산출하고, 산출된 최초 대기 시간 이후에 상기 페치된 데이터를 각각의 라우터(232)에 입력시킬 수 있다.
도 13을 참조하면, 1번 페치 버퍼(222-1)는 1번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 1번 페치 버퍼(222-1)에 페치된 데이터를 1번 라우터(232-1)에 입력시킬 수 있다. 그리고 2번 페치 버퍼(222-2)는 4번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 플릿이 3번 입력되는 시간만큼 대기한 후에, 4번 플릿이 1번 페치 버퍼(222-1)에서 1번 라우터(232-1)에 입력될 때 동시에 2번 페치 버퍼(222-1)에 페치된 데이터를 2번 라우터(232-2)에 입력시킬 수 있다. 마찬가지로, 3번 페치 버퍼(222-3)는 7번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 플릿이 6번 입력되는 시간만큼 대기한 후에, 7번 플릿이 2번 페치 버퍼(222-2)에서 2번 라우터(232-2)에 입력될 때 동시에 3번 페치 버퍼(222-3)에 페치된 데이터를 3번 라우터(232-3)에 입력시킬 수 있다. 동일하게, 4번 페치 버퍼(222-4)는 10번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 플릿이 9번 입력되는 시간만큼 대기한 후에, 10번 플릿이 3번 페치 버퍼(222-3)에서 3번 라우터(232-3)에 입력될 때 동시에 4번 페치 버퍼(222-4)에 페치된 데이터를 4번 라우터(232-4)에 입력시킬 수 있다.
상기 인터페이스 컨트롤러(221)는 노드 ID와 상기 페치 네트워크 컨트롤러(231)가 상기 데이터 처리 맵핑 테이블을 통해 구성한 라우터(232)의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 최초 대기 시간을 산출할 수 있다. 일 예로, 상기 인터페이스 컨트롤러(221)는 아래 수식 1을 통해 각 페치 버퍼(222)에 해당하는 최초 대기 시간을 산출할 수 있다.
[수학식 1]
warm_up_period = base + (router_id % #_nodes) * stride
상기 수학식 1에서 'warm_up_period'는 최초 대기 시간, 'base'는 시스템 또는 물리적으로 대기해야 하는 기본 시간, 'router_id'는 라우터의 번호, '#_nodes'는 소프트웨어적 토폴로지를 구성하는 라우터의 개수, 'stride'는 라우터의 개수을 고려한 변수이다. 도 13에 도시된 예시는 4개의 라우터가 소프트웨어적 토폴로지를 구성하므로, 'router_id'는 0부터 3이고, '#_nodes'는 4이고, 'stride'는 3이다. 참고로, '%' 기호는 나눔셈의 나머지를 구하는 연산 기호이다.
기본 시간('base')를 '1'으로 가정할 때, 1번 페치 버퍼(222-1)의 최초 대기 시간은 '1'(=1 + (0 % 4) * 3)이다. 2번 페치 버퍼(222-2)의 최초 대기 시간은 '4'(=1 + (1 % 4) * 3)이다. 3번 페치 버퍼(222-3)의 최초 대기 시간은 '7'(=1 + (2 % 4) * 3)이다. 그리고 4번 페치 버퍼(222-4)의 최초 대기 시간은 '10'(=1 + (3 % 4) * 3)이다.
상기 내용에 따라 1번 페치 버퍼부터 4번 페치 버퍼(222-1 ~ 222-4)까지 첫 번째 데이터 패킷을 라우터(232)에 출력한 이후, 다시 1번 페치 버퍼(222-1)부터 두 번째 데이터 패킷을 라우터(232)에 출력해야 한다. 이를 위해서, 상기 인터페이스 컨트롤러(2221)는 상기 라우터(232)의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 중간 대기 시간을 산출할 수 있다. 일 예로, 상기 인터페이스 컨트롤러(221)는 아래 수식 2을 통해 각 페치 버퍼(221)의 중간 대기 시간을 산출할 수 있다.
[수학식 2]
injection_period = (#flits * #_nodes) + (#_nodes * hop delay)
상기 수학식 2에서 'injection_period'는 중간 대기 시간, '#flits'은 하나의 패킷에 포함된 플릿의 개수, '#_nodes'는 소프트웨어적 토폴로지를 구성하는 라우터의 개수, 'hop delay'는 라우터와 라우터 사이의 전달 과정에서 발생하는 지연 시간과 관련된 수치이다. 홉 지연 시간('hop delay')을 '0'으로 가정할 때, 1번 페치 버퍼1 내지 4번 페치 버퍼(222-1 ~ 222-4)의 중간 대기 시간은 '16'(=(4 * 4) + (4 * 0))이다.
상기 인터페이스 컨트롤러(221)는, 미리 설정된 크기의 데이터(즉, 데이터 패킷)를 각각의 라우터(232)에 입력하며, 상기 중간 대기 시간이 종료된 이후 상기 미리 설정된 크기의 데이터(즉, 데이터 패킷)를 다시 각각의 라우터에 입력할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러(221)는 산출된 중간 대기 시간을 앞선 데이터의 대기 시간에 추가하여 중간 대기 시간이 종료 여부를 판단할 수 있다. 도 13에 도시된 예시에 따르면, 상기 중간 대기 시간과 관련된 수치 '16'은 각 페치 버퍼(222)의 앞선 대기 시간 즉, 최초 대기 시간에 추가될 수 있다. 따라서, 1번 페치 버퍼(222-1)의 두 번째 패킷의 첫 플릿의 대기 시간은 '17'(=1 + 16)이다. 2번 페치 버퍼(222-2)의 두 번째 패킷의 첫 플릿의 대기 시간은 '20'(=4 + 16)이다. 3번 페치 버퍼(222-3)의 두 번째 패킷의 첫 플릿의 대기 시간은 '23'(=7 + 16)이다. 그리고 4번 페치 버퍼(222-4)의 두 번째 패킷의 첫 플릿의 대기 시간은 '26'(=10 + 16)이다. 상기 내용을 파이썬(Python)으로 작성하면 아래와 같다.
Figure 112020063835708-pat00001
본 명세서의 일 측면에 따르면, 데이터의 흐름 제어 로직이 간단해져서 라우터의 버퍼를 제거 또는 최소화 할 수 있다. 이를 통해 칩에서 라우터가 차지하는 영역을 줄일 수 있으며, 동시에 전력 소모량을 감소시킬 수 있다. 본 명세서의 다른 측면에 따르면, 멀티캐스팅을 위한 패킷의 정보를 최소화 시킬 수 있다. 본 명세서의 또 다른 측면에 따르면, 노드 수가 증가여도 비용 증가가 최소화될 수 있으며, 최대 밴드위스를 달성할 수 있다.
이상, 첨부된 도면을 참조로 하여 본 명세서의 실시예를 설명하였지만, 본 명세서가 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.
10 : 연산 처리 장치
100 : 메모리 101 : 데이터 메모리 슬라이스
200 : 페치 유닛 210 : 페치 시퀀서
220 : 네트워크 인터페이스 221 : 인터페이스 컨트롤러
222 : 페치 버퍼 230 : 페치 네트워크
231 : 페치 네트워크 컨트롤러 232 : 라우터
240 : 피드 모듈 242 : 피드 버퍼
250 : 연산 시퀀서 모듈 300 : 연산 유닛
310 : 닷 프로덕트 엔진 400 : 커밋 유닛
410 : 커밋 시퀀서

Claims (15)

  1. 뉴럴 네트워크의 프로세싱을 수행하기 위한 연산에 필요한 데이터를 메모리에서 읽어와 연산 유닛에 제공하는 페치 유닛을 포함하는 연산 처리 장치에 있어서,
    상기 페치 유닛은,
    입력된 데이터의 노드 ID에 따라 상기 입력된 데이터를 처리하는 방식이 기재된 데이터 처리 맵핑 테이블을 가진 복수 개의 라우터; 및
    상기 복수 개의 라우터가 가진 각각의 데이터 처리 맵핑 테이블을 연산 형태에 따른 소프트웨어적 토폴로지를 형성하도록 재구성하는 페치 네트워크 컨트롤러;를 포함하되,
    상기 복수 개의 라우터는 하드웨어적 1차원 망형 토폴로지(1-D mesh topology)를 형성한 것이며,
    각각의 라우터는,
    상기 메모리로부터 데이터가 입력되는 메인 입력 포트, 인접한 제1 라우터에게 데이터를 전달하는 제1 전달 출력 포트, 인접한 제1 라우터로부터 전달된 데이터가 입력되는 제1 전달 입력 포트, 인접한 제2 라우터에게 데이터를 전달하는 제2 전달 출력 포트, 인접한 제2 라우터로부터 전달된 데이터가 입력되는 제2 전달 입력 포트 및 상기 연산 유닛에 데이터를 제공하기 위한 메인 출력 포트를 포함하는 것을 특징으로 하는 연산 처리 장치.
  2. 삭제
  3. 삭제
  4. 청구항 1에 있어서,
    상기 데이터 처리 맵핑 테이블은 입력된 데이터의 차단, 반사 및 출력 여부에 대한 정보를 저장한 것을 특징으로 하는 연산 처리 장치.
  5. 청구항 4에 있어서,
    상기 페치 네트워크 컨트롤러는 재구성하고자 하는 토폴로지에 따라 상기 차단, 반사 및 출력 여부의 실행 여부를 설정하는 것을 특징으로 하는 연산 처리 장치.
  6. 청구항 5에 있어서,
    상기 페치 네트워크 컨트롤러는 재구성된 토폴로지 내 같은 그룹에 속하는 라우터의 데이터 처리 맵핑 테이블 내 차단 및 출력을 동일하게 설정하는 것을 특징으로 하는 연산 처리 장치.
  7. 청구항 1에 있어서,
    상기 메모리는 상기 복수 개의 라우터와 동일한 개수의 데이터 메모리 슬라이스를 포함하는 하는 연산 처리 장치.
  8. 청구항 7에 있어서,
    상기 페치 유닛은,
    상기 각 데이터 메모리 슬라이스에 저장된 데이터가 페치되는 네트워크 인터페이스;
    상기 네트워크 인터페이스에 페치된 데이터를 전달하는 페치 네트워크; 및
    상기 페치 네트워크에서 전달된 데이터를 연산 유닛에 제공하는 피드 모듈;을 포함하고,
    상기 복수 개의 라우터 및 페치 네트워크 컨트롤러는, 상기 페치 네트워크에 포함되는 것을 특징으로 하는 연산 처리 장치.
  9. 청구항 8에 있어서,
    상기 네트워크 인터페이스는,
    페치된 데이터를 저장하는 페치 버퍼; 및
    상기 페치된 데이터에 각각의 데이터 메모리 슬라이스에 대응하는 노드 ID를 부여하는 인터페이스 컨트롤러;를 포함하는 것을 특징으로 하는 연산 처리 장치.
  10. 청구항 9에 있어서,
    상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터를 각각의 라우터에 입력하는 타이밍을 제어하는 것을 특징으로 하는 연산 처리 장치.
  11. 청구항 10에 있어서,
    상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터의 최초 대기 시간을 산출하고, 산출된 최초 대기 시간 이후에 상기 페치된 데이터를 각각의 라우터에 입력하는 것을 특징으로 하는 연산 처리 장치.
  12. 청구항 11에 있어서,
    상기 인터페이스 컨트롤러는, 노드 ID와 상기 페치 네트워크 컨트롤러가 상기 데이터 처리 맵핑 테이블을 통해 구성한 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 최초 대기 시간을 산출하는 것을 특징으로 하는 연산 처리 장치.
  13. 청구항 12에 있어서,
    상기 인터페이스 컨트롤러는, 상기 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 중간 대기 시간을 산출하는 것을 특징으로 하는 연산 처리 장치.
  14. 청구항 13에 있어서,
    상기 인터페이스 컨트롤러는, 미리 설정된 크기의 데이터를 각각의 라우터에 입력하며, 상기 중간 대기 시간이 종료된 이후 상기 미리 설정된 크기의 데이터를 다시 각각의 라우터에 입력하는 것을 특징으로 하는 연산 처리 장치.
  15. 청구항 14에 있어서,
    상기 인터페이스 컨트롤러는, 산출된 중간 대기 시간을 앞선 데이터의 대기 시간에 추가하여 중간 대기 시간이 종료 여부를 판단하는 것을 특징으로 하는 연산 처리 장치.
KR1020200075628A 2020-06-22 2020-06-22 뉴럴네트워크 프로세서 KR102474053B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200075628A KR102474053B1 (ko) 2020-06-22 2020-06-22 뉴럴네트워크 프로세서
US18/003,031 US20230244620A1 (en) 2020-06-22 2020-10-12 Neural network processor
PCT/KR2020/013849 WO2021261666A1 (ko) 2020-06-22 2020-10-12 뉴럴네트워크 프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200075628A KR102474053B1 (ko) 2020-06-22 2020-06-22 뉴럴네트워크 프로세서

Publications (2)

Publication Number Publication Date
KR20210157615A KR20210157615A (ko) 2021-12-29
KR102474053B1 true KR102474053B1 (ko) 2022-12-06

Family

ID=79176621

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200075628A KR102474053B1 (ko) 2020-06-22 2020-06-22 뉴럴네트워크 프로세서

Country Status (3)

Country Link
US (1) US20230244620A1 (ko)
KR (1) KR102474053B1 (ko)
WO (1) WO2021261666A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101310769B1 (ko) * 2011-11-30 2013-09-25 (주) 엔에프랩 스마트 라우터 및 그 제어방법, 및 이를 이용한 스마트 네트워크 서비스 제공 시스템 및 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274745A (en) * 1989-07-28 1993-12-28 Kabushiki Kaisha Toshiba Method of processing information in artificial neural networks
US7958333B2 (en) * 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
TW201727415A (zh) * 2016-01-27 2017-08-01 鴻海精密工業股份有限公司 結合人工標記和二維條碼進行電腦視覺定位的系統和方法
WO2017201627A1 (en) * 2016-05-26 2017-11-30 The Governing Council Of The University Of Toronto Accelerator for deep neural networks
US20180253636A1 (en) * 2017-03-06 2018-09-06 Samsung Electronics Co., Ltd. Neural network apparatus, neural network processor, and method of operating neural network processor
KR101934195B1 (ko) * 2017-06-07 2018-12-31 한국과학기술원 멀티 프로세서 시스템 내의 상호연결을 위한 중재 방법 및 이를 수행하는 장치들
GB2566733B (en) * 2017-09-25 2020-02-26 Advanced Risc Mach Ltd Performimg convolution operations in graphics texture mapping units
KR102162749B1 (ko) 2018-04-03 2020-10-07 주식회사 퓨리오사에이아이 뉴럴 네트워크 프로세서
FR3087560A1 (fr) * 2018-10-23 2020-04-24 Commissariat A L'energie Atomique Et Aux Energies Alternatives Retro-propagation d'erreurs sous forme impulsionnelle dans un reseau de neurones impulsionnels
US20200311627A1 (en) * 2019-03-25 2020-10-01 Microsoft Technology Licensing, Llc Tracking data flows in an organization
US11880760B2 (en) * 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101310769B1 (ko) * 2011-11-30 2013-09-25 (주) 엔에프랩 스마트 라우터 및 그 제어방법, 및 이를 이용한 스마트 네트워크 서비스 제공 시스템 및 방법

Also Published As

Publication number Publication date
KR20210157615A (ko) 2021-12-29
WO2021261666A1 (ko) 2021-12-30
US20230244620A1 (en) 2023-08-03

Similar Documents

Publication Publication Date Title
Liu et al. Neu-NoC: A high-efficient interconnection network for accelerated neuromorphic systems
CN107689948B (zh) 应用于神经网络硬件加速系统的高效数据访存管理装置
CN105930902B (zh) 一种神经网络的处理方法、系统
Vainbrand et al. Scalable network-on-chip architecture for configurable neural networks
Firuzan et al. Reconfigurable network-on-chip for 3D neural network accelerators
US8031614B2 (en) Method and apparatus for routing data in an inter-nodal communications lattice of a massively parallel computer system by dynamic global mapping of contended links
KR102474054B1 (ko) 뉴럴네트워크 프로세서
JP2021507386A (ja) ニューラルネットワーク処理のための共用メモリの集中型−分散型混合構成
Joardar et al. REGENT: A heterogeneous ReRAM/GPU-based architecture enabled by NoC for training CNNs
CN110032538A (zh) 一种数据读取系统和方法
Haghi et al. A reconfigurable compute-in-the-network fpga assistant for high-level collective support with distributed matrix multiply case study
CN116861966B (zh) Transformer模型加速器及其构建和数据处理方法、装置
KR102474053B1 (ko) 뉴럴네트워크 프로세서
Sun et al. Multi-node acceleration for large-scale GCNs
JPH10293755A (ja) ネットワーク内のノード間でメッセージを転送する方法
Lakhotia et al. Accelerating Allreduce with in-network reduction on Intel PIUMA
Ascia et al. Networks-on-chip based deep neural networks accelerators for iot edge devices
CN112580774B (zh) 一种面向可重构神经网络处理器的神经网络布局方法
Joseph et al. NEWROMAP: mapping CNNs to NoC-interconnected self-contained data-flow accelerators for edge-AI
CN114584507B (zh) 基于类脑处理器的数据处理方法、路由器及网络系统
Yang et al. Architecture and performance models for scalable IP lookup engines on FPGA
CN116882467B (zh) 面向边缘端的多模式可配置的神经网络加速器电路结构
CN210721552U (zh) 卷积电路
Laghari et al. Scheduling Techniques of Processor Scheduling in Cellular Automaton
Franzon et al. Hardware Acceleration of Sparse Cognitive Algorithms

Legal Events

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