KR102382186B1 - 딥 러닝을 위한 고성능 컴퓨팅 시스템 - Google Patents

딥 러닝을 위한 고성능 컴퓨팅 시스템 Download PDF

Info

Publication number
KR102382186B1
KR102382186B1 KR1020180120634A KR20180120634A KR102382186B1 KR 102382186 B1 KR102382186 B1 KR 102382186B1 KR 1020180120634 A KR1020180120634 A KR 1020180120634A KR 20180120634 A KR20180120634 A KR 20180120634A KR 102382186 B1 KR102382186 B1 KR 102382186B1
Authority
KR
South Korea
Prior art keywords
accelerator
memory
data
accelerators
memory module
Prior art date
Application number
KR1020180120634A
Other languages
English (en)
Other versions
KR20200040560A (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 KR1020180120634A priority Critical patent/KR102382186B1/ko
Priority to US16/595,992 priority patent/US20200117990A1/en
Publication of KR20200040560A publication Critical patent/KR20200040560A/ko
Application granted granted Critical
Publication of KR102382186B1 publication Critical patent/KR102382186B1/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
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks

Abstract

본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템은 호스트 프로세서, 통신 인터페이스를 기반으로 호스트 프로세서와 통신을 수행하도록 구성된 복수의 가속기들 및 인터커넥션 네트워크를 통해 복수의 가속기들과 연결된 복수의 메모리 노드들을 포함하고, 복수의 가속기들 중 제1 가속기와 복수의 메모리 노드들 중 제1 메모리 노드 사이에 제1 데이터 링크가 형성되고, 제1 가속기와 복수의 메모리 노드들 중 제2 메모리 노드 사이에 제2 데이터 링크가 형성된다.

Description

딥 러닝을 위한 고성능 컴퓨팅 시스템{HIGH PERFORMANCE COMPUTING SYSTEM FOR DEEP LEARNING}
본 발명은 컴퓨팅 시스템에 관한 것으로써, 좀 더 상세하게는 딥 러닝을 가속하기 위한 고성능 컴퓨팅 시스템에 관한 것이다.
컴퓨팅 시스템은 데이터에 대한 다양한 연산을 수행하기 위한 프로세서를 포함한다. 예를 들어, 컴퓨팅 시스템은 호스트(host) 프로세서를 포함할 수 있다. 처리될 데이터가 적은 경우, 호스트 프로세서 하나만으로 데이터가 처리될 수 있다. 그러나, 처리될 데이터가 증가됨에 따라 호스트 프로세서 하나만으로 데이터를 처리하는데 한계가 있을 수 있다. 이에 따라, 컴퓨팅 시스템은 데이터를 분산 처리하기 위해 호스트 프로세서 이외의 프로세서를 포함할 수 있다.
딥 러닝(deep learning) 기반의 데이터 처리가 증가됨에 따라 컴퓨팅 시스템은 딥 러닝을 위한 전용 프로세서를 포함할 수 있다. 딥 러닝을 위한 전용 프로세서는 가속기(accelerator)로 지칭될 수 있다. 가속기가 딥 러닝을 기반으로 데이터를 처리하기 위해, 호스트 메모리가 이용될 수 있다. 예를 들어, 가속기로부터 처리된 데이터는 호스트 메모리에 저장될 수 있다. 또는, 가속기는 호스트 메모리에 저장된 데이터에 기초하여 데이터를 처리할 수 있다. 이 경우, 호스트 프로세서와 가속기 사이에 데이터 통신이 수행될 수 있다.
그러나, 호스트 프로세서와 가속기 사이에 데이터 통신에 있어서, 통신 경로의 대역폭에 제약이 있을 수 있다. 특히, 가속기의 수가 증가되는 경우, 하나의 가속기가 이용할 수 있는 대역폭은 더 감소될 수 있다. 이에 따라, 호스트 프로세서와 가속기 사이에 데이터 통신 속도가 느려질 수 있고, 가속기의 데이터 처리 속도가 느려질 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 가속기가 데이터를 처리하는데 있어서, 호스트 메모리를 이용하지 않고 빠르게 데이터를 처리할 수 있는 컴퓨팅 시스템을 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템은 호스트 프로세서, 통신 인터페이스를 기반으로 상기 호스트 프로세서와 통신을 수행하도록 구성된 복수의 가속기들 및 인터커넥션 네트워크(interconnection network)를 통해 상기 복수의 가속기들과 연결된 복수의 메모리 노드(node)들을 포함하고, 상기 복수의 가속기들 중 제1 가속기와 상기 복수의 메모리 노드들 중 제1 메모리 노드 사이에 제1 데이터 링크(link)가 형성되고, 상기 제1 가속기와 상기 복수의 메모리 노드들 중 제2 메모리 노드 사이에 제2 데이터 링크가 형성된다.
하나의 실시 예에 있어서, 상기 복수의 가속기들 중 제2 가속기와 상기 제1 메모리 노드 사이에 제3 데이터 링크가 형성되고, 상기 제2 가속기와 상기 복수의 메모리 노드들 중 제3 메모리 노드 사이에 제4 데이터 링크가 형성될 수 있다.
하나의 실시 예에 있어서, 상기 제1 가속기 및 상기 제2 가속기는 상기 제1 메모리 노드를 통해 데이터를 직접 전달할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 노드는 상기 제1 데이터 링크를 통해 상기 제1 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제1 가속기로 전달하도록 구성된 제1 메모리 모듈 및 상기 제3 데이터 링크를 통해 상기 제2 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제2 가속기로 전달하도록 구성된 제2 메모리 모듈을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 모듈은 상기 제1 가속기가 상기 제1 메모리 모듈에 직접 접근하도록 작동하는 제1 DMA(direct memory access) 엔진을 포함하고, 상기 제2 메모리 모듈은 상기 제2 가속기가 상기 제2 메모리 모듈에 직접 접근하도록 작동하는 제2 DMA 엔진을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 노드는 특정 프로토콜(protocol)에 따라 상기 제1 메모리 모듈 및 상기 제2 메모리 모듈에 저장된 데이터를 전송하도록 구성된 프로토콜 엔진을 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 노드는 상기 제1 메모리 모듈 및 상기 제2 메모리 모듈에 저장된 데이터를 부호화하도록 구성된 부호화기를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 노드는 상기 제1 메모리 모듈 및 상기 제2 메모리 모듈에 저장된 데이터를 압축하도록 구성된 압축기를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 인터커넥션 네트워크는 링형 네트워크(ring network)를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 가속기는 상기 제1 메모리 노드 및 상기 제2 메모리 노드를 이용하여 딥 러닝(deep learning)을 수행할 수 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템은 복수의 입력 데이터에 대한 학습 명령을 생성하도록 구성된 호스트 프로세서, 상기 학습 명령에 응답하여 뉴럴 네트워크 변수들을 기반으로 상기 복수의 입력 데이터 중 제1 입력 데이터에 대한 연산을 수행하고, 제1 연산 결과 및 제2 연산 결과를 생성하도록 구성된 제1 가속기, 제1 데이터 링크를 통해 상기 제1 가속기로부터 전달된 상기 제1 연산 결과를 저장하도록 구성된 제1 메모리 노드 및 제2 데이터 링크를 통해 상기 제1 가속기로부터 전달된 상기 제2 연산 결과를 저장하도록 구성된 제2 메모리 노드를 포함한다.
하나의 실시 예에 있어서, 상기 학습 명령에 응답하여 뉴럴 네트워크 변수들을 기반으로 상기 복수의 입력 데이터 중 제2 입력 데이터에 대한 연산을 수행하고, 제3 연산 결과 및 제4 연산 결과를 생성하도록 구성된 제2 가속기 및 제3 데이터 링크를 통해 상기 제2 가속기로부터 전달된 상기 제4 연산 결과를 저장하도록 구성된 제3 메모리 노드를 더 포함하고, 상기 제1 메모리 노드는 제4 데이터 링크를 통해 상기 제2 가속기로부터 전달된 상기 제3 연산 결과를 저장할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 노드는 상기 제1 데이터 링크를 통해 상기 제1 연산 결과를 저장하도록 구성된 제1 메모리 모듈 및 상기 제4 데이터 링크를 통해 상기 제3 연산 결과를 저장하도록 구성된 제2 메모리 모듈을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 모듈은 상기 제1 가속기가 상기 제1 메모리 모듈에 직접 접근하도록 작동하는 제1 DMA 엔진을 포함하고, 상기 제2 메모리 모듈은 상기 제2 가속기가 상기 제2 메모리 모듈에 직접 접근하도록 작동하는 제2 DMA 엔진을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 노드는 특정 프로토콜에 따라 상기 제1 메모리 모듈에 저장된 상기 제1 연산 결과를 상기 제1 가속기로 전달하고, 상기 제2 메모리 모듈에 저장된 상기 제3 연산 결과를 상기 제2 가속기로 전달하도록 구성된 프로토콜 엔진을 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 가속기는 상기 제1 메모리 노드에 저장된 제1 연산 결과 및 상기 제2 메모리 노드에 저장된 상기 제2 연산 결과를 이용하여 상기 뉴럴 네트워크 변수들을 업데이트할 수 있다.
본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템은 호스트 프로세서, 통신 인터페이스를 기반으로 상기 호스트 프로세서와 통신을 수행하도록 구성된 복수의 가속기들 및 인터커넥션 네트워크를 통해 상기 복수의 가속기들과 연결된 복수의 메모리 노드들을 포함하고, 상기 복수의 메모리 노드들 중 제1 메모리 노드와 상기 복수의 가속기들 중 제1 가속기 사이에 제1 데이터 링크가 형성되고, 상기 제1 메모리 노드와 상기 복수의 가속기들 중 제2 가속기 사이에 제2 데이터 링크가 형성된다.
하나의 실시 예에 있어서, 상기 제1 가속기 및 상기 제2 가속기는 상기 제1 메모리 노드를 통해 서로 데이터를 직접 전달할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 노드는 상기 제1 데이터 링크를 통해 상기 제1 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제1 가속기로 전달하도록 구성된 제1 메모리 모듈 및 상기 제2 데이터 링크를 통해 상기 제2 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제2 가속기로 전달하도록 구성된 제2 메모리 모듈을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제1 메모리 모듈은 상기 제1 가속기가 상기 제1 메모리 모듈에 직접 접근하도록 작동하는 제1 DMA 엔진을 포함하고, 상기 제2 메모리 모듈은 상기 제2 가속기가 상기 제2 메모리 모듈에 직접 접근하도록 작동하는 제2 DMA 엔진을 포함할 수 있다.
본 발명의 실시 예에 따르면, 호스트 리소스(resource)의 사용을 최소화하면서 데이터를 빠르게 처리할 수 있는 고성능의 컴퓨팅 시스템을 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면, 딥 러닝을 빠르게 수행하고, 저 전력으로 동작하는 컴퓨팅 시스템을 제공할 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템의 예시적인 구성을 보여주는 블록도이다.
도 2는 도 1의 가속기들과 메모리 노드들의 예시적인 연결 상태를 보여주는 도면이다.
도 3은 도 1의 메모리 노드의 예시적인 구성을 보여주는 블록도이다.
도 4는 도 1의 인터커넥션 네트워크의 하나의 예시를 보여주는 도면이다.
도 5는 도 4의 인터커넥션 네트워크에 따른 컴퓨팅 시스템의 적용 예시를 보여주는 도면이다.
도 6a 및 도 6b는 본 발명의 실시 예에 따른 딥 러닝 동작의 예시를 보여주는 도면이다.
도 7은 6a 및 도 6b의 딥 러닝을 위한 도 1의 컴퓨팅 시스템의 동작을 보여주는 도면이다.
도 8은 도 1의 컴퓨팅 시스템이 딥 러닝을 수행하는 예시적인 동작을 보여주는 순서도이다.
도 9는 본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템의 확장 예시를 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 강도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템의 예시적인 구성을 보여주는 블록도이다. 예를 들어, 컴퓨팅 시스템(1000)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블(wearable) 장치, 비디오 게임기(video game console), 서버, 전기 자동차, 가전기기, 의료기기 등과 같은 전자 장치들에서 구현될 수 있다.
도 1을 참조하면, 컴퓨팅 시스템(1000)은 호스트 메모리(100), 호스트 프로세서(200), 복수의 가속기들(300-1~300-n)(n은 0보다 큰 정수) 및 복수의 메모리 노드(node)들(400-1~400-n)(n은 0보다 큰 정수)을 포함할 수 있다. 컴퓨팅 시스템(1000)의 구성 요소들은 하나의 전자 장치에 포함되거나 다른 전자 장치들 상에 분산될 수 있다. 컴퓨팅 시스템(1000)의 구성 요소들은 하나의 칩 또는 패키지(예를 들어, 단일 SoC(System-on-chip)) 상에서 구현되거나 구성요소들 각각이 별도의 칩 또는 패키지 상에서 구현될 수 있다.
컴퓨팅 시스템(1000)은 호스트 장치 및 주변(peripheral) 장치로 구분될 수 있다. 호스트 장치는 컴퓨팅 시스템(1000)의 전체적인 동작을 제어할 수 있다. 예를 들어, 호스트 장치는 주변 장치의 동작을 제어할 수 있다. 주변 장치는 호스트 장치의 제어에 따라 특정 기능을 수행할 수 있다. 예를 들어, 호스트 메모리(100) 및 호스트 프로세서(200)는 호스트 장치에 포함되고, 가속기들(300-1~300-n) 및 메모리 노드들(400-1~400-n)은 주변 장치에 포함될 수 있다.
호스트 메모리(100)는 호스트 장치의 동작과 관련된 데이터를 저장할 수 있다. 예를 들어, 호스트 메모리(100)는 호스트 프로세서(200)에 의해 처리될 데이터를 저장하거나 호스트 프로세서(200)에 의해 처리된 데이터를 저장할 수 있다.
호스트 메모리(100)는 메인(main) 메모리로서 동작할 수 있다. 예를 들어, 호스트 메모리(100)는 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 등과 같은 휘발성 메모리를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 호스트 메모리(100)는 플래시(flash) 메모리, 자기 랜덤 액세스 메모리(MRAM), 상 변화 랜덤 액세스 메모리(PRAM), 강유전체 랜덤 액세스 메모리(FRAM), 저항성 랜덤 액세스 메모리(RRAM)와 같은 불휘발성 메모리를 포함할 수 있다.
호스트 프로세서(200)는 컴퓨팅 시스템(1000)의 전체적인 동작을 제어할 수 있다. 예를 들어, 호스트 프로세서(200)는 가속기들(300-1~300-n)의 동작을 제어할 수 있다. 호스트 프로세서(200)는 호스트 메모리(100) 저장된 데이터를 처리하고 처리된 데이터를 호스트 메모리(100)에 저장할 수 있다. 예를 들어, 호스트 프로세서(200)는 CPU(Central Processing Unit), AP(Application Processor) 등의 메인 프로세서일 수 있다.
가속기들(300-1~300-n)은 데이터에 대한 다양한 연산을 수행함으로써 데이터를 처리할 수 있다. 가속기들(300-1~300-n)은 데이터 처리를 통해 특정 기능을 수행할 수 있다. 예를 들어, 가속기들(300-1~300-n)은 뉴럴 네트워크(neural network)를 기반으로 데이터를 처리함으로써 딥 러닝(deep learning)을 수행할 수 있다. 이 경우, 가속기들(300-1~300-n) 각각은 GPU(Graphic Processing Unit) 또는 딥 러닝 가속기일 수 있다.
가속기들(300-1~300-n)은 호스트 프로세서(200)의 명령에 따라 동작할 수 있다. 호스트 프로세서(200)로부터 데이터 처리 명령이 전달되는 경우, 가속기들(300-1~300-n)은 데이터를 처리할 수 있다. 가속기들(300-1~300-n)은 처리 결과를 호스트 프로세서(200)로 전달할 수 있다.
가속기들(300-1~300-n)은 특정 통신 인터페이스(interface)를 기반으로 처리 결과를 호스트 프로세서(200)로 전달할 수 있다. 또는, 가속기들(300-1~300-n)은 특정 통신 인터페이스를 기반으로 호스트 프로세서(200)로부터 명령 또는 데이터를 수신할 수 있다. 예를 들어, 특정 통신 인터페이스는 PCIe(Peripheral Component Interconnect Express)일 수 있다. 가속기들(300-1~300-n) 각각은 특정 통신 인터페이스를 기반으로 하는 소켓(socket) 또는 포트(port)를 통해 호스트 장치에 연결될 수 있다. 이에 따라, 가속기들(300-1~300-n) 및 호스트 프로세서(200)는 서로 데이터를 전달할 수 있다.
가속기들(300-1~300-n)은 인터커넥션 네트워크(interconnection network)(ICNT)를 통해 메모리 노드들(400-1~400-n)에 연결될 수 있다. 인터커넥션 네트워크(ICNT)는 가속기들(300-1~300-n)과 메모리 노드들(400-1~400-n) 사이에 데이터 전송 경로를 제공할 수 있다. 데이터 전송 경로는 데이터 링크(link)로서 지칭될 수 있다. 가속기들(300-1~300-n)과 메모리 노드들(400-1~400-n) 사이에 형성된 데이터 링크들이 다르면 인터커넥션 네트워크(ICNT)의 구성도 다를 수 있다. 즉, 인터커넥션 네트워크(ICNT)에 따라 가속기들(300-1~300-n)과 메모리 노드들(400-1~400-n)의 연결 상태가 달라질 수 있다.
예를 들어, 인터커넥션 네트워크(ICNT)는 컴퓨팅 시스템(1000)의 구축 단계에서 고정된 네트워크 토폴로지(topology)를 가지도록 구성될 수 있다. 또는, 인터커넥션 네트워크(ICNT)는 스위칭을 통해 데이터 링크들이 다르게 형성될 수 있는 가변 네트워크 토폴로지를 가지도록 구성될 수 있다.
예를 들어, 인터커넥션 네트워크(ICNT)에 따라 제1 가속기(300-1)는 제1 메모리 노드(400-1) 및 제2 메모리 노드(400-2)에 연결될 수 있다. 이 경우, 제1 가속기(300-1)는 데이터 처리에 있어서, 제1 메모리 노드(400-1) 및 제2 메모리 노드(400-2)를 이용할 수 있다. 제1 가속기(300-1)는 데이터를 처리하면서 생성되는 연산 결과를 제1 메모리 노드(400-1) 또는 제2 메모리 노드(400-2)에 저장할 수 있다. 제1 가속기(300-1)는 제1 메모리 노드(400-1) 또는 제2 메모리 노드(400-2)에 저장된 연산 결과에 기초하여 데이터를 처리할 수 있다.
메모리 노드들(400-1~400-n)은 데이터를 저장하는 복수의 메모리 장치들을 포함할 수 있다. 메모리 노드들(400-1~400-n)은 인터커넥션 네트워크(ICNT)를 통해 가속기들(300-1~300-n)에 연결될 수 있다. 서로 연결된 메모리 노드들(400-1~400-n) 및 가속기들(300-1~300-n)은 특정 프로토콜(protocol)을 기반으로 데이터를 전달할 수 있다.
예시적으로, 가속기들(300-1~300-n)은 인터커넥션 네트워크(ICNT)를 통해 연결된 메모리 노드들(400-1~400-n)에 직접 접근할 수 있다. 가속기들(300-1~300-n)은 메모리 노드들(400-1~400-n)에 데이터를 직접 쓰거나 메모리 노드들(400-1~400-n)에 저장된 데이터를 직접 읽을 수 있다. 이에 따라, 가속기들(300-1~300-n)은 호스트 프로세서(200)를 통하지 않고 메모리 노드들(400-1~400-n)에 접근할 수 있다. 즉, 가속기들(300-1~300-n)과 메모리 노드들(400-1~400-n) 사이에 데이터 전달에 있어서, 호스트 리소스(resource)가 이용되지 않을 수 있다.
예를 들어, 가속기들(300-1~300-n)이 방대한 데이터를 처리하는 경우, 가속기들(300-1~300-n)은 내부 메모리뿐만 아니라 외부 메모리를 이용할 수 있다. 이 경우, 가속기들(300-1~300-n)은 호스트 메모리(100) 대신에 메모리 노드들(400-1~400-n)을 이용할 수 있다.
메모리 노드들(400-1~400-n)이 존재하지 않는다고 가정하면, 가속기들(300-1~300-n)은 호스트 메모리(100)를 이용하여 데이터를 처리할 수 있다. 예를 들어, 가속기들(300-1~300-n)은 호스트 메모리(100)에 데이터 처리 과정에서 발생되는 연산 결과들을 저장할 수 있다. 가속기들(300-1~300-n)은 호스트 메모리(100)에 저장된 연산 결과들을 이용하여 데이터를 처리할 수 있다. 이 경우, 가속기들(300-1~300-n)은 버스(bus)를 통해 호스트 프로세서(200)로 데이터를 전달하거나 호스트 프로세서(200)로부터 데이터를 수신할 수 있다. 가속기들(300-1~300-n) 각각이 병렬적으로 호스트 프로세서(200)로 데이터를 전달하거나 호스트 프로세서(200)로부터 데이터를 수신하는 경우, 버스의 대역폭(bandwidth)의 제약으로 인해 데이터 전송에 있어서 시간 지연(latency)이 발생될 수 있다. 즉, 가속기들(300-1~300-n)이 호스트 리소스를 이용하여 데이터를 처리하는 경우, 대역폭의 제약으로 인해 데이터 처리 속도가 느려질 수 있다. 또한, 호스트 리소스의 사용량이 증가되어 호스트 프로세서(200)의 처리 속도가 느려질 수 있다.
반면에, 도 1에 도시된 바와 같이, 인터커넥션 네트워크(ICNT)를 통해 메모리 노드들(400-1~400-n)이 가속기들(300-1~300-n)에 연결되는 경우, 가속기들(300-1~300-n)은 호스트 메모리(100)를 이용하지 않고 데이터를 처리할 수 있다. 예를 들어, 가속기들(300-1~300-n)은 메모리 노드들(400-1~400-n)을 이용하여 데이터를 처리할 수 있다. 가속기들(300-1~300-n)은 데이터 처리 과정에서 발생되는 연산 결과들을 메모리 노드들(400-1~400-n)에 저장할 수 있다. 가속기들(300-1~300-n)은 메모리 노드들(400-1~400-n)에 저장된 연산 결과들을 이용하여 데이터를 처리할 수 있다. 이 경우, 가속기들(300-1~300-n) 각각은 서로 다른 데이터 링크를 통해 메모리 노드들(400-1~400-n)에 접근할 수 있다. 데이터 링크는 고정된 대역폭을 가질 수 있으므로, 가속기들(300-1~300-n) 각각이 메모리 노드들(400-1~400-n)에 병렬적으로 접근하더라도, 시간 지연이 발생되지 않을 수 있다. 따라서, 가속기들(300-1~300-n)의 데이터 처리 속도가 향상될 수 있다.
상술한 바와 같이, 본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템(1000)은 가속기들(300-1~300-n) 및 메모리 노드들(400-1~400-n)을 포함할 수 있다. 가속기들(300-1~300-n)은 호스트 리소스를 사용하지 않고, 메모리 노드들(400-1~400-n)을 이용하여 데이터를 처리할 수 있다. 또한, 가속기들(300-1~300-n) 및 메모리 노드들(400-1~400-n)은 높은 대역폭으로 데이터를 서로 전달할 수 있다. 이에 따라, 가속기들(300-1~300-n)의 데이터 처리 속도가 향상될 수 있다. 즉, 가속기들(300-1~300-n)의 데이터 처리 속도가 향상될 수 있도록 컴퓨팅 시스템(1000)이 구성될 수 있다.
도 1에는 컴퓨팅 시스템(1000)이 동일한 n 개의 가속기들(300-1~300-n) 및 메모리 노드들(400-1~400-n)을 포함하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않으며, 컴퓨팅 시스템(1000)은 다른 개수의 가속기들 및 메모리 노드들을 포함할 수 있다.
도 2는 도 1의 가속기들과 메모리 노드들의 예시적인 연결 상태를 보여주는 도면이다. 도 2를 참조하면, 제1 가속기(300-1)는 제1 데이터 링크(LK1)를 통해 제1 메모리 노드(400-1)에 연결되고, 제2 데이터 링크(LK2)를 통해 제2 메모리 노드(400-2)에 연결된다. 제2 가속기(300-2)는 제3 데이터 링크(LK3)를 통해 제1 메모리(400-1)에 연결되고, 제4 데이터 링크(LK4)를 통해 제3 메모리 노드(400-3)에 연결된다.
제1 내지 제4 데이터 링크들(LK1~LK4) 각각은 양방향으로 데이터를 전달할 수 있다. 예를 들어, 제1 가속기(300-1)는 제1 데이터 링크(LK1)를 통해 제1 메모리 노드(400-1)로 데이터를 전달하면서 제1 데이터 링크(LK1)를 통해 제1 메모리 노드(400-1)로부터 데이터를 수신할 수 있다.
제1 가속기(300-1)는 병렬적으로 제1 메모리 노드(400-1) 및 제2 메모리 노드(400-2)에 접근할 수 있다. 이에 따라, 제1 가속기(300-1)는 제1 데이터 링크(LK1)의 대역폭과 제2 데이터 링크(LK2)의 대역폭을 합한 대역폭으로 데이터를 전달하거나 수신할 수 있다. 예를 들어, 제1 데이터 링크(LK1)의 대역폭과 제2 데이터 링크(LK2)의 대역폭이 각각 75GB/sec 인 경우, 제1 가속기(300-1)는 150GB/sec 로 데이터를 전달하거나 수신할 수 있다.
마찬가지로, 제2 가속기(300-1)는 병렬적으로 제1 메모리 노드(400-1) 및 제3 메모리 노드(400-3)에 접근할 수 있다. 이에 따라, 제2 가속기(300-2)는 제3 데이터 링크(LK3)의 대역폭과 제4 데이터 링크(LK4)의 대역폭을 합한 대역폭으로 데이터를 전달하거나 수신할 수 있다.
제1 가속기(300-1)는 데이터 처리에 있어서, 제1 메모리 노드(400-1) 및 제2 메모리 노드(400-2)를 이용할 수 있다. 제1 가속기(300-1)는 데이터 처리 과정에서 생성되는 연산 결과들을 제1 메모리 노드(400-1) 및/또는 제2 메모리 노드(400-2)에 저장할 수 있다. 제1 가속기(300-1)는 제1 메모리 노드(400-1) 및/또는 제2 메모리 노드(400-2)에 저장된 연산 결과들을 이용하여 데이터를 처리할 수 있다.
제2 가속기(300-2)는 데이터 처리에 있어서, 제1 메모리 노드(400-1) 및 제3 메모리 노드(400-3)를 이용할 수 있다. 제2 가속기(300-2)는 데이터 처리 과정에서 생성되는 연산 결과들을 제1 메모리 노드(400-1) 및/또는 제3 메모리 노드(400-3)에 저장할 수 있다. 제2 가속기(300-2)는 제1 메모리 노드(400-1) 및/또는 제3 메모리 노드(400-3)에 저장된 연산 결과들을 이용하여 데이터를 처리할 수 있다.
도 2에 도시된 바와 같이, 제1 메모리 노드(400-1)는 제1 가속기(300-1) 및 제2 가속기(300-2)에 연결될 수 있다. 제1 가속기(300-1)는 제1 데이터 링크(LK1)를 통해 제1 메모리 노드(400-1)에 데이터를 저장하고, 제1 메모리 노드(400-1)에 저장된 데이터는 제2 데이터 링크(LK2)를 통해 제2 가속기(300-2)로 전달될 수 있다. 이에 따라, 제1 가속기(300-1)는 제1 메모리 노드(400-1)를 통해 제2 가속기(300-2)로 데이터를 전달할 수 있다. 마찬가지로, 제2 가속기(300-2)는 제1 메모리 노드(400-1)를 통해 제1 가속기(300-1)로 데이터를 전달할 수 있다. 즉, 제1 가속기(300-1) 및 제2 가속기(300-2)는 연산 결과를 서로 전달할 수 있다.
도 2에는 본 발명의 실시 예에 따른 가속기가 두 개의 메모리 노드들에 연결되는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 본 발명의 실시 예에 따른 가속기는 세 개 이상의 메모리 노드들에 연결될 수 있다. 또는, 본 발명의 실시 예에 따른 가속기는 하나의 메모리 노드에 연결될 수 있다.
본 발명의 다른 실시 예에 따르면, 복수의 가속기들 중 일부 가속기들은 적어도 하나의 메모리 노드에 연결되고, 일부 가속기들은 다른 가속기들에 연결될 수 있다. 이 경우, 메모리 노드에 직접 연결되지 않은 가속기는 다른 가속기를 통해 메모리 노드에 접근할 수 있다. 또한, 가속기가 다른 가속기에 직접 연결된 경우, 가속기들은 메모리 노드를 이용하지 않고 서로 직접 데이터를 전달할 수 있다.상술한 바와 같이, 본 발명의 실시 예에 따른 가속기는 메모리 노드들에 연결될 수 있다. 가속기는 메모리 노드들 각각과 별도의 데이터 링크를 통해 연결될 수 있다. 데이터 링크들 각각은 일정 대역폭 이상으로 데이터를 전달할 수 있다. 가속기는 데이터 링크들을 통해 메모리 노드들로 데이터를 병렬적으로 전달할 수 있다. 따라서, 가속기는 높은 대역폭으로 데이터를 전송할 수 있다. 마찬가지로, 가속기는 높은 대역폭으로 데이터를 수신할 수 있다. 따라서, 본 발명의 실시 예에 따른 가속기의 데이터 처리 속도가 향상될 수 있다.
도 2에는 가속기와 메모리 노드 사이에 데이터 링크가 하나만 존재하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 데이터 링크의 대역폭이 원하는 대역폭이 아닌 경우, 가속기와 메모리 노드 사이에 여러 개의 데이터 링크가 형성될 수 있다. 즉, 데이터 링크의 대역폭에 따라 가속기와 메모리 노드 사이에 데이터 링크의 개수가 달라질 수 있다.
도 3은 도 1의 메모리 노드의 예시적인 구성을 보여주는 블록도이다. 설명의 편의를 위해, 제1 메모리 노드(400-1)를 기준으로 본 발명의 실시 예에 따른 메모리 노드가 설명될 것이다. 즉, 본 발명의 실시 예에 따른 메모리 노드들 각각은 제1 메모리 노드(400-1)와 동일하게 구성될 수 있다.
도 3을 참조하면, 제1 메모리 노드(400-1)는 제1 메모리 모듈(410), 제2 메모리 모듈(420), 프로토콜 엔진(430), 데이터베이스 가속기(440), 부호화기(450) 및 압축기(460)를 포함할 수 있다.
제1 메모리 모듈(410)은 제1 데이터 링크(LK1)를 통해 제1 가속기(300-1)로부터 전달된 데이터를 저장하거나 저장된 데이터를 제1 가속기(300-1)로 전달할 수 있다.
제1 메모리 모듈(410)은 제1 DMA(Direct Memory Access) 엔진(411), 제1 메모리 컨트롤러(412) 및 제1 메모리 장치(413)를 포함할 수 있다. 제1 DMA 엔진(411)은 제1 가속기(300-1)가 제1 메모리 모듈(410)에 직접 접근하도록 작동할 수 있다. 예를 들어, 제1 DMA 엔진(411)은 제1 데이터 링크(LK1)를 통해 전달되는 쓰기 명령 및 데이터를 제1 메모리 컨트롤러(412)로 전달할 수 있다. 제1 메모리 컨트롤러(412)는 쓰기 명령에 응답하여 전달된 데이터를 제1 메모리 장치(413)에 저장할 수 있다. 제1 DMA 엔진(411)은 제1 데이터 링크(LK1)를 통해 전달되는 읽기 명령을 제1 메모리 컨트롤러(412)로 전달할 수 있다. 제1 메모리 컨트롤러(412)는 읽기 명령에 응답하여 제1 메모리 장치(413)에 저장된 데이터를 출력할 수 있다. 출력된 데이터는 제1 데이터 링크(LK1)를 통해 제1 가속기(300-1)로 전달될 수 있다.
제2 메모리 모듈(420)은 제3 데이터 링크(LK3)를 통해 제2 가속기(300-2)로부터 전달된 데이터를 저장하거나 저장된 데이터를 제2 가속기(300-2)로 전달할 수 있다.
제2 메모리 모듈(420)은 제2 DMA 엔진(421), 제2 메모리 컨트롤러(422) 및 제2 메모리 장치(423)를 포함할 수 있다. 제2 DMA 엔진(421)은 제2 가속기(300-2)가 제2 메모리 모듈(420)에 직접 접근하도록 작동할 수 있다. 예를 들어, 제2 DMA 엔진(421)은 제3 데이터 링크(LK3)를 통해 전달되는 쓰기 명령 및 데이터를 제2 메모리 컨트롤러(422)로 전달할 수 있다. 제2 메모리 컨트롤러(422)는 쓰기 명령에 응답하여 전달된 데이터를 제2 메모리 장치(423)에 저장할 수 있다. 제2 DMA 엔진(421)은 제3 데이터 링크(LK3)를 통해 전달되는 읽기 명령을 제2 메모리 컨트롤러(422)로 전달할 수 있다. 제2 메모리 컨트롤러(422)는 읽기 명령에 응답하여 제2 메모리 장치(423)에 저장된 데이터를 출력할 수 있다. 출력된 데이터는 제3 데이터 링크(LK3)를 통해 제2 가속기(300-2)로 전달될 수 있다.
제1 메모리 장치(413) 및 제2 메모리 장치(423) 각각은 복수의 메모리 칩들 또는 복수의 메모리 다이(die)들을 포함할 수 있다. 제1 메모리 장치(413) 및 제2 메모리 장치(423) 각각은 동적 랜덤 액세스 메모리(DRAM) 장치, 정적 랜덤 액세스 메모리(SRAM) 장치 등과 같은 휘발성 메모리 장치 및/또는 플래시(flash) 메모리 장치, 자기 랜덤 액세스 메모리(MRAM) 장치, 상 변화 랜덤 액세스 메모리(PRAM) 장치, 강유전체 랜덤 액세스 메모리(FRAM) 장치, 저항성 랜덤 액세스 메모리 장치(RRAM)와 같은 불휘발성 메모리 장치를 포함할 수 있다.
도 3에는 제1 메모리 장치(413)에 저장된 데이터가 제1 데이터 링크(LK1)를 통해 제1 가속기(300-1)로 전달되는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 제1 메모리 장치(413)에 저장된 데이터는 제3 데이터 링크(LK3)를 통해 제2 가속기(300-2)로 전달될 수 있다. 마찬가지로, 제2 메모리 장치(423)에 저장된 데이터는 제1 데이터 링크(LK1)를 통해 제1 가속기(300-1)로 전달될 수 있다. 이 경우, 제1 메모리 노드(400-1)는 데이터 전송 경로를 조절할 수 있는 별도의 회로를 더 포함할 수 있다. 제1 메모리 장치(413)에 저장된 데이터가 제3 데이터 링크(LK3)를 통해 제2 가속기(300-2)로 전달되는 경우, 제2 가속기(300-2)는 호스트 리소스를 사용하지 않고 제1 가속기(300-1)로부터 데이터를 수신할 수 있다. 즉, 제1 가속기(300-1)와 제2 가속기(300-2)는 제1 메모리 노드(400-1)를 통해 직접 통신할 수 있다.
프로토콜 엔진(430)은 특정 프로토콜에 따라 제1 메모리 노드(400-1)에 저장된 데이터를 전송하거나 특정 프로토콜에 따라 전달된 데이터를 수신할 수 있다. 특정 프로토콜은 가속기와 메모리 노드 사이에 데이터 전송에 있어서, 미리 결정된 통신 규칙일 수 있다. 특정 프로토콜에 따라 데이터가 전송되는 경우, 데이터 링크들(LK1, LK3)은 최대 대역폭으로 데이터를 전달할 수 있다.
데이터베이스 가속기(440)는 데이터가 제1 메모리 노드(400-1)에 효율적으로 저장될 수 있도록 데이터를 처리하거나 관리할 수 있다. 예를 들어, 데이터베이스 가속기(440)는 제1 메모리 노드(400-1)에 전달되는 데이터를 전처리할 수 있다. 제1 메모리 장치(413) 또는 제2 메모리 장치(423)는 전처리된 데이터를 저장할 수 있다.
부호화기(450)는 제1 메모리 노드(400-1)에 저장된 데이터를 부호화할 수 있다. 이에 따라, 부호화된 데이터가 제1 메모리 노드(400-1)로부터 가속기들(300-1, 300-2)로 전달될 수 있다.
압축기(460)는 제1 메모리 노드(400-1)에 저장된 데이터를 압축할 수 있다. 이에 따라, 압축된 데이터가 제1 메모리 노드(400-1)로부터 가속기들(300-1, 300-2)로 전달될 수 있다.
도 3에는 제1 메모리 노드(400-1)가 두 개의 메모리 모듈들(410, 420)을 포함하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 제1 메모리 노드(400-1)에 연결될 수 있는 가속기의 개수가 m 개인 경우, 제1 메모리 노드(400-1)는 m 개의 메모리 모듈들을 포함할 수 있다.
도 3에는 데이터 링크들(LK1, LK3)의 개수가 메모리 모듈들(410, 420)의 개수에 대응하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 제1 메모리 노드(400-1)와 제1 가속기(300-1) 사이에 6 개의 데이터 링크들이 형성될 수 있다. 이 경우, 제1 메모리 모듈(410)은 3 개의 데이터 링크들을 통해 제1 가속기(300-1)에 연결되고, 제2 메모리 모듈(420)은 3 개의 데이터 링크들을 통해 제2 가속기(300-2)에 연결될 수 있다.
상술한 바와 같이, 본 발명의 하나의 실시 예에 따른 메모리 노드는 복수의 메모리 모듈들을 포함할 수 있다. 메모리 노드에 연결된 가속기는 메모리 모듈들 각각의 DMA 엔진을 통해 메모리 모듈에 직접 접근할 수 있다. 따라서, 가속기는 호스트 리소스를 사용하지 않고 메모리 노드를 이용할 수 있다.
또한, 메모리 노드에 저장된 데이터는 데이터 링크들을 통해 복수의 가속기들로 전달될 수 있다. 따라서, 복수의 가속기들은 메모리 노드를 통해 데이터 통신을 수행할 수 있다.
본 발명의 하나의 실시 예에 따른 메모리 노드에 포함된 구성 요소들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 멤즈(Micro Electro Mechanical System; MEMS), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
도 4는 도 1의 인터커넥션 네트워크의 하나의 예시를 보여주는 도면이다. 도 4를 참조하면, 컴퓨팅 시스템(1000)은 제1 내지 제8 가속기들(300-1~300-8) 및 제1 내지 제8 메모리 노드들(400-1~400-8)을 포함할 수 있다. 가속기들(300-1~300-8) 각각은 두 개의 메모리 노드들에 연결되고, 메모리 노드들(400-1~400-8) 각각은 두 개의 가속기들에 연결될 수 있다. 예를 들어, 제1 가속기(300-1)는 제1 메모리 노드(400-1) 및 제8 메모리 노드(400-8)에 연결될 수 있다. 제1 메모리 노드(400-1)는 제1 가속기(300-1) 및 제2 가속기(300-2)에 연결될 수 있다. 도 4에 도시된 바와 같이, 가속기들(300-1~300-8)과 메모리 노드들(400-1~400-8)이 하나의 고리 모양(즉, 원형 체인 방식)으로 연결되는 경우, 인터커넥션 네트워크는 링형 네트워크(ring network)일 수 있다.
하나의 데이터 링크를 통해 원하는 대역폭을 확보할 수 없는 경우, 도 4에 도시된 바와 같이, 하나의 가속기와 하나의 메모리 노드 사이에 3 개의 데이터 링크가 형성될 수 있다. 예를 들어, 제1 가속기(300-1)와 제1 메모리 노드(400-1) 사이에 3 개의 데이터 링크가 형성될 수 있다. 이 경우, 제1 가속기(300-1)와 제1 메모리 노드(400-1)는 3 개의 데이터 링크를 통해 병렬적으로 데이터를 전달할 수 있다.
예를 들어, 하나의 데이터 링크의 대역폭이 25 GB/sec 인 경우, 하나의 가속기 및 하나의 메모리 노드는 75 GB/sec 의 대역폭으로 데이터를 전달할 수 있다. 하나의 가속기는 두 개의 메모리 노드들에 연결되므로, 하나의 가속기는 150 GB/sec 의 대역폭으로 메모리 노드들로 데이터를 전달하거나 메모리 노드들로부터 데이터를 수신할 수 있다. 따라서, 도 4에 도시된 바와 같이, 8 개의 가속기들(300-1~300-8)이 포함된 컴퓨팅 시스템(1000)은 1200 GB/sec 의 대역폭을 가질 수 있다.
도 4에는 8 개의 가속기들(300-1~300-8)과 8 개의 메모리 노드들(400-1~400-8)이 링형 네트워크를 통해 연결되는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)은 링형 네트워크를 통해 연결된 다양한 개수의 가속기들과 메모리 노드들을 포함할 수 있다.
도 5는 도 4의 인터커넥션 네트워크에 따른 컴퓨팅 시스템의 적용 예시를 보여주는 도면이다. 구체적으로, 도 5는 컴퓨팅 시스템(1000)이 서버에 구현된 예시를 보여준다. 도 5를 참조하면, 컴퓨팅 시스템(1000)은 백플레인(backplane)(500), 제1 서버 섀시(chassis)(600-1) 및 제2 서버 섀시(600-2)를 포함할 수 있다. 제1 내지 제8 가속기들(300-1~300-8) 및 제1 내지 제8 메모리 노드들(400-1~400-8)은 제1 서버 섀시(600-1) 및 제2 서버 섀시(600-2)에 분산되어 배치될 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 제1 가속기(300-1), 제2 가속기(300-2), 제7 가속기(300-7) 및 제 8 가속기(300-8)와 제1 메모리 노드(400-1), 제2 메모리 노드(400-2), 제7 메모리 노드(400-7) 및 제8 메모리 노드(400-8)는 제1 서버 섀시(600-1)에 배치될 수 있다.
백플레인(500)은 제1 서버 섀시(600-1)에 배치된 장치들과 제2 서버 섀시(600-2)에 배치된 장치들 사이에 데이터를 전달할 수 있다. 즉, 백플레인(500)은 제1 서버 섀시(600-1)의 장치들과 제2 서버 섀시(600-2)의 장치들을 연결할 수 있다. 예를 들어, 백플레인(500)은 제2 메모리 노드(400-2)와 제3 가속기(300-3)를 연결하고, 제6 메모리 노드(400-6)와 제7 가속기(300-7)를 연결할 수 있다. 이 경우, 도 5의 가속기들(300-1~300-8)과 메모리 노드들(400-1~400-8)은, 도 4에서 설명된 인터커넥션 네트워크와 같이, 링형 네트워크를 통해 연결될 수 있다.
도 5에 도시된 바와 같이, 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)은 서버에 구현되는 경우, 도 4의 컴퓨팅 시스템(1000)과 같이, 링형 네트워크를 가질 수 있다. 이에 따라, 도 5의 컴퓨팅 시스템(1000)은 도 4의 컴퓨팅 시스템(1000)과 동일한 대역폭을 가질 수 있다.
도 5에는 두 개의 서버 섀시들(600-1, 600-2)에 가속기들(300-1~300-8) 및 메모리 노드들(400-1~400-8)이 배치되는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 제1 서버 섀시(600-1)에 가속기들(300-1~300-8) 및 메모리 노드들(400-1~400-8)이 모두 배치될 수 있다. 하나의 서버 섀시에 배치될 수 있는 가속기들의 개수 및 메모리 노드들의 개수는 서버 섀시의 크기 또는 규격에 따라 달라질 수 있다. 또한, 가속기들의 개수 및 메모리 노드들의 개수에 따라 서버 섀시의 개수가 달라질 수 있다.
본 발명의 하나의 실시 예에 따르면, 컴퓨팅 시스템(1000)을 기반으로 입력 데이터에 대한 딥 러닝(deep learning)이 수행될 수 있다. 딥 러닝은 뉴럴 네트워크를 기반으로 입력 데이터를 분류하는데 사용되는 기계학습 방법일 수 있다. 예를 들어, 컴퓨팅 시스템(1000)은 딥 러닝을 통해 이미지 데이터의 객체를 식별하거나 객체를 분류할 수 있다.
딥 러닝은 입력 데이터에 대한 학습(training) 동작 및 추론(inference) 동작으로 구분될 수 있다. 컴퓨팅 시스템(1000)은 입력 데이터에 대한 학습을 통해 뉴럴 네트워크의 변수들을 업데이트할 수 있다. 예를 들어, 뉴럴 네트워크의 변수들은 가중치(weight) 및 바이어스(bias) 등을 포함할 수 있다. 컴퓨팅 시스템(1000)은 학습을 통해 결정된 뉴럴 네트워크의 변수들에 기초하여 입력 데이터에 대한 추론을 수행할 수 있다. 컴퓨팅 시스템(1000)은 추론을 통해 입력 데이터를 식별하거나 분류할 수 있다.
학습 과정에서, 컴퓨팅 시스템(1000)은 다양한 입력 데이터를 기반으로 뉴럴 네트워크의 변수들을 업데이트할 수 있다. 컴퓨팅 시스템(1000)은 가속기들(300-1~300-n)을 통해 학습을 수행할 수 있다. 다양한 입력 데이터는 가속기들(300-1~300-n)에 분산되어 처리될 수 있다. 가속기들(300-1~300-n)은 메모리 노드들(400-1~400-n)을 이용하여 입력 데이터를 처리할 수 있다. 메모리 노드들(400-1~400-n)이 이용되는 경우, 가속기들(300-1~300-n)은 호스트 리소스를 사용하지 않고 학습 동작을 수행할 수 있다. 따라서, 학습 동작에 있어서, 호스트 리소스의 사용량 증가에 따른 시간 지연이 발생되지 않을 수 있다.
이하에서는, 도 6a 내지 도 8을 참조하여 컴퓨팅 시스템(1000)의 딥 러닝 동작을 구체적으로 설명할 것이다. 설명의 편의를 위해, 도 2와 같이, 제1 및 제2 가속기들(300-1, 300-2)과 제1 내지 제3 메모리 노드들(400-1~400-3)을 이용하여 딥 러닝이 수행되는 것으로 가정한다. 그러나, 본 발명은 이에 한정되지 않으며, 컴퓨팅 시스템(1000)은 다양한 개수의 가속기들 및 메모리 노드들을 통해 딥 러닝을 수행할 수 있다.
도 6a 및 도 6b는 본 발명의 실시 예에 따른 딥 러닝 동작의 예시를 보여주는 도면이다. 도 7은 6a 및 도 6b의 딥 러닝을 위한 도 1의 컴퓨팅 시스템의 동작을 보여주는 도면이다. 구체적으로, 도 6a는 제1 가속기(300-1)에 의해 수행되는 딥 러닝 학습 동작의 예시를 보여주고, 도 6b는 제2 가속기(300-2)에 의해 수행되는 딥 러닝 학습 동작의 예시를 보여준다.
도 6a 및 도 7을 참조하면, 제1 가속기(300-1)는 호스트 프로세서(200)로부터 제1 학습 명령(LCMD1)을 수신할 수 있다. 제1 가속기(300-1)는 제1 학습 명령(LCMD1)에 응답하여 뉴럴 네트워크를 기반으로 제1 입력 데이터(IN1)에 대한 학습을 수행할 수 있다. 예를 들어, 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(CNN; Convolution Neural Network)를 기반으로 구성될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 뉴럴 네트워크는 순환 뉴럴 네트워크(RNN; Recurrent Neural Network), 스파이킹 뉴럴 네트워크(SNN; Spiking Neural Network) 등 다양한 방식의 뉴럴 네트워크를 기반으로 구성될 수 있다.
뉴럴 네트워크는 제1 내지 제3 레이어(layer)들(L1~L3)을 포함할 수 있다. 제1 내지 제3 레이어들(L1~L3)은 제1 내지 제3 뉴럴 네트워크 변수들(NP1~NP3)에 각각 대응할 수 있다. 제1 가속기(300-1)는 제1 내지 제3 뉴럴 네트워크 변수들(NP1~NP3)을 기반으로 제1 입력 데이터(IN1)에 대한 학습을 수행할 수 있다. 제1 내지 제3 뉴럴 네트워크 변수들(NP1~NP3)은 제1 가속기(300-1)의 내부 메모리(310)에 미리 저장될 수 있다.
먼저, 제1 가속기(300-1)는 제1 입력 데이터(IN1)에 대하여 순전파(forward propagation) 연산을 수행할 수 있다. 예를 들어, 제1 입력 데이터(IN1)는 호스트 프로세서(200)로부터 전달되거나 메모리 노드들(400-1~400-3)로부터 전달될 수 있다. 제1 가속기(300-1)는 제1 입력 데이터(IN1) 및 제1 뉴럴 네트워크 변수들(NP1)을 기반으로 연산을 수행하여 제1 연산 결과(RD1)를 생성할 수 있다. 제1 가속기(300-1)는 제1 연산 결과(RD1)를 제1 메모리 노드(400-1)의 제1 메모리 장치(413)에 저장할 수 있다.
제1 가속기(300-1)는 제1 연산 결과(RD1) 및 제2 뉴럴 네트워크 변수들(NP2)을 기반으로 연산을 수행하여 제2 연산 결과(RD2)를 생성할 수 있다. 제1 가속기(300-1)는 제2 연산 결과(RD2)를 제2 메모리 노드(400-2)의 메모리 장치(433)에 저장할 수 있다.
제1 가속기(300-1)는 제2 연산 결과(RD2) 및 제3 뉴럴 네트워크 변수들(NP3)을 기반으로 연산을 수행하여 제1 예측 데이터(OUT1)를 생성할 수 있다. 제1 가속기(300-1)는 산출된 제1 예측 데이터(OUT1)와 원하는 결과 값을 비교하여 오차를 산출할 수 있다.
제1 가속기(300-1)는 오차가 감소되도록 역전파(backward propagation) 연산을 수행할 수 있다. 제1 가속기(300-1)는 제2 메모리 노드(400-2)에 저장된 제2 연산 결과(RD2)를 기반으로 제3 뉴럴 네트워크 변수들(NP3)을 업데이트할 수 있다. 이에 따라, 내부 메모리(310)에 저장된 제3 뉴럴 네트워크 변수들(NP3)은 새로운 제3 뉴럴 네트워크 변수들(NP3')로 업데이트될 수 있다. 제1 가속기(300-1)는 제1 메모리 노드(400-1)에 저장된 제1 연산 결과(RD1)를 기반으로 제2 뉴럴 네트워크 변수들(NP2)을 업데이트할 수 있다. 이에 따라, 내부 메모리(310)에 저장된 제2 뉴럴 네트워크 변수들(NP2)은 새로운 제2 뉴럴 네트워크 변수들(NP2')로 업데이트될 수 있다. 제1 가속기(300-1)는 제1 입력 데이터(IN1)를 기반으로 제1 뉴럴 네트워크 변수들(NP1)을 업데이트할 수 있다. 이에 따라, 내부 메모리(310)에 저장된 제1 뉴럴 네트워크 변수들(NP1)은 새로운 제1 뉴럴 네트워크 변수들(NP1')로 업데이트될 수 있다.
도 6b 및 도 7을 참조하면, 제2 가속기(300-2)는 호스트 프로세서(200)로부터 제2 학습 명령(LCMD2)을 수신할 수 있다. 제2 가속기(300-2)는 제2 학습 명령(LCMD2)에 응답하여 뉴럴 네트워크를 기반으로 제2 입력 데이터(IN2)에 대한 학습을 수행할 수 있다.
뉴럴 네트워크는 제4 내지 제6 레이어들(L4~L6)을 포함할 수 있다. 제4 내지 제6 레이어들(L4~L6)은 도 6a의 제1 내지 제3 레이어들(L1~L3)에 각각 대응할 수 있다. 즉, 제4 내지 제6 레이어들(L4~L6)을 통해 수행되는 연산의 종류는 제1 내지 제3 레이어들(L1~L3)을 통해 수행되는 연산의 종류와 동일할 수 있다. 제4 내지 제6 레이어들(L4~L6)은 제4 내지 제6 뉴럴 네트워크 변수들(NP4~NP6)에 각각 대응할 수 있다. 제2 가속기(300-2)는 제4 내지 제6 뉴럴 네트워크 변수들(NP4~NP6)을 기반으로 제2 입력 데이터(IN2)에 대한 학습을 수행할 수 있다. 제4 내지 제6 뉴럴 네트워크 변수들(NP4~NP6)은 제2 가속기(300-2)의 내부 메모리(320)에 미리 저장될 수 있다.
먼저, 제2 가속기(300-2)는 제2 입력 데이터(IN2)에 대하여 순전파 연산을 수행할 수 있다. 예를 들어, 제2 입력 데이터(IN2)는 호스트 프로세서(200)로부터 전달되거나 메모리 노드들(400-1~400-3)로부터 전달될 수 있다. 제2 가속기(300-2)는 제2 입력 데이터(IN2) 및 제4 뉴럴 네트워크 변수들(NP4)을 기반으로 연산을 수행하여 제3 연산 결과(RD3)를 생성할 수 있다. 제2 가속기(300-2)는 제3 연산 결과(RD3)를 제1 메모리 노드(400-1)의 제2 메모리 장치(423)에 저장할 수 있다.
제2 가속기(300-2)는 제3 연산 결과(RD3) 및 제5 뉴럴 네트워크 변수들(NP5)을 기반으로 연산을 수행하여 제4 연산 결과(RD4)를 생성할 수 있다. 제2 가속기(300-2)는 제4 연산 결과(RD4)를 제3 메모리 노드(400-3)의 메모리 장치(443)에 저장할 수 있다.
제2 가속기(300-2)는 제4 연산 결과(RD4) 및 제6 뉴럴 네트워크 변수들(NP6)을 기반으로 연산을 수행하여 제2 예측 데이터(OUT2)를 생성할 수 있다. 제2 가속기(300-2)는 산출된 제2 예측 데이터(OUT2)와 원하는 결과 값을 비교하여 오차를 산출할 수 있다.
제2 가속기(300-2)는 오차가 감소되도록 역전파 연산을 수행할 수 있다. 제2 가속기(300-2)는 제3 메모리 노드(400-3)에 저장된 제4 연산 결과(RD4)를 기반으로 제6 뉴럴 네트워크 변수들(NP6)을 업데이트할 수 있다. 이에 따라, 내부 메모리(320)에 저장된 제6 뉴럴 네트워크 변수들(NP6)은 새로운 제6 뉴럴 네트워크 변수들(NP6')로 업데이트될 수 있다. 제2 가속기(300-2)는 제1 메모리 노드(400-1)에 저장된 제3 연산 결과(RD3)를 기반으로 제5 뉴럴 네트워크 변수들(NP5)을 업데이트할 수 있다. 이에 따라, 내부 메모리(320)에 저장된 제5 뉴럴 네트워크 변수들(NP5)은 새로운 제5 뉴럴 네트워크 변수들(NP5')로 업데이트될 수 있다. 제2 가속기(300-2)는 제2 입력 데이터(IN2)를 기반으로 제4 뉴럴 네트워크 변수들(NP4)을 업데이트할 수 있다. 이에 따라, 내부 메모리(320)에 저장된 제4 뉴럴 네트워크 변수들(NP4)은 새로운 제4 뉴럴 네트워크 변수들(NP4')로 업데이트될 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)은 가속기들(300-1, 300-2) 및 메모리 노드들(400-1~400-3)을 기반으로 입력 데이터(IN1, IN2)에 대한 학습을 수행할 수 있다. 이 경우, 가속기들(300-1, 300-2)은 입력 데이터(IN1, IN2)에 대한 학습을 병렬적으로 수행할 수 있다. 또한, 가속기들(300-1, 300-2)은 호스트 리소스(예를 들어, 호스트 메모리)를 사용하지 않고 학습을 수행할 수 있다. 이에 따라, 컴퓨팅 시스템(1000)은 입력 데이터(IN1, IN2)에 대한 학습을 빠르게 수행할 수 있다.
도 6a 및 도 6b에서 설명된 뉴럴 네트워크는 세 개의 레이어를 포함하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않으며, 뉴럴 네트워크는 다양한 개수의 레이어들을 포함할 수 있다.
도 6a 내지 도 7에서는 하나의 가속기에서 산출된 연산 결과가 다른 가속기에서 이용되지 않는 것으로 설명되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 도 6a 내지 도 7에 도시된 바와 다르게, 제1 가속기(300-1)는 제2 가속기(300-2)에서 산출된 제3 연산 결과(RD3)에 기초하여 연산을 수행할 수 있다. 이 경우, 제3 연산 결과(RD3)는 제1 메모리 노드(400-1)로부터 전달될 수 있다.
도 6a 내지 도 7에서는 가속기가 하나의 레이어를 통해 산출된 연산 결과를 하나의 메모리 노드에 저장하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 제1 가속기(300-1)는 제1 레이어(L1)를 통해 산출된 제1 연산 결과(RD1)를 제1 메모리 노드(400-1) 및 제2 메모리 노드(400-2)에 분산하여 저장할 수 이다.
도 8은 도 1의 컴퓨팅 시스템이 딥 러닝을 수행하는 예시적인 동작을 보여주는 순서도이다. 도 1 및 도 8을 참조하면, S101 단계에서, 호스트 프로세서(200)가 가속기로 입력 데이터에 대한 학습 명령을 전달할 수 있다. 호스트 프로세서(200)는 가속기들(300-1~300-n) 중 적어도 하나에 학습 명령을 전달할 수 있다.
S102 단계에서, 가속기가 뉴럴 네트워크 변수들을 기반으로 입력 데이터에 대한 연산을 수행할 수 있다. 예를 들어, 뉴럴 네트워크 변수들은 가중치 및 바이어스 등을 포함할 수 있다. 뉴럴 네트워크가 컨볼루션 뉴럴 네트워크(CNN)인 경우, 가중치는 컨볼루션 필터(convolution filter)일 수 있다.
S103 단계에서, 가속기가 연산 결과를 적어도 하나의 메모리 노드에 저장할 수 있다. 가속기는 호스트 리소스를 사용하지 않고 메모리 노드에 직접 접근하여 연산 결과를 저장할 수 있다. 다른 가속기에서 연산 결과가 이용되는 경우, 메모리 노드에 저장된 연산 결과는 다른 가속기로 전달될 수 있다. 이로부터, 가속기들 사이에 군집 통신(collective communication)이 수행될 수 있다.
S104 단계에서, 가속기가 메모리 노드에 저장된 연산 결과를 이용하여 뉴럴 네트워크 변수들을 업데이트할 수 있다. 메모리 노드에 저장된 연산 결과를 이용하기 위해, 가속기는 메모리 노드에 직접 접근하여 저장된 연산 결과를 인출할 수 있다. 연산 결과를 이용하여 뉴럴 네트워크 변수들을 업데이트 하는 경우, 가속기들 사이에 군집 통신이 수행될 수 있다. 즉, 가속기는 다른 가속기에 의해 저장된 연산 결과를 이용하여 뉴럴 네트워크 변수들을 업데이트할 수 있다.
상술한 바와 같이, S101 내지 S104 단계들을 통해, 학습 동작이 수행될 수 있다. 이후, 컴퓨팅 시스템(1000)은 업데이트된 뉴럴 네트워크 변수들을 기반으로 입력 데이터에 대한 추론을 수행할 수 있다.
도 9는 본 발명의 하나의 실시 예에 따른 컴퓨팅 시스템의 확장 예시를 보여주는 블록도이다. 도 9를 참조하면, 제1 컴퓨팅 시스템(2000) 및 제2 컴퓨팅 시스템(3000)은 네트워크 인터페이스(NTI)를 통해 연결될 수 있다. 예를 들어, 네트워크 인터페이스(NTI)는 메시지 전달 인터페이스(MPI; Message Passing Interface)를 기반으로 구현될 수 있다.
제1 컴퓨팅 시스템(2000)은 호스트 메모리(2100), 호스트 프로세서(2200), 복수의 가속기들(2300-1~2300-n) 및 복수의 메모리 노드들(2400-1~2400-n)을 포함할 수 있다. 가속기들(2300-1~2300-n) 및 메모리 노드들(2400-1~2400-n)은 제1 인터커넥션 네트워크(ICNT1)를 통해 연결될 수 있다.
호스트 메모리(2100), 호스트 프로세서(2200), 가속기들(2300-1~2300-n) 및 메모리 노드들(2400-1~2400-n)의 동작은 도 1의 호스트 메모리(100), 호스트 프로세서(200), 가속기들(300-1~300-n) 및 메모리 노드들(400-1~400-n)의 동작과 동일하거나 유사할 수 있다.
제2 컴퓨팅 시스템(3000)은 호스트 메모리(3100), 호스트 프로세서(3200), 복수의 가속기들(3300-1~3300-n) 및 복수의 메모리 노드들(3400-1~3400-n)을 포함할 수 있다. 가속기들(3300-1~3300-n) 및 메모리 노드들(3400-1~3400-n)은 제2 인터커넥션 네트워크(ICNT2)를 통해 연결될 수 있다.
호스트 메모리(3100), 호스트 프로세서(3200), 가속기들(3300-1~3300-n) 및 메모리 노드들(3400-1~3400-n)의 동작은 도 1의 호스트 메모리(100), 호스트 프로세서(200), 가속기들(300-1~300-n) 및 메모리 노드들(400-1~400-n)의 동작과 동일하거나 유사할 수 있다.
제1 컴퓨팅 시스템(2000)의 가속기들(2300-1~2300-n)은 네트워크 인터페이스(NTI)를 통해 제2 컴퓨팅 시스템(3000)의 가속기들(3300-1~3300-n)과 직접 통신할 수 있다. 예를 들어, 제1 컴퓨팅 시스템(2000)의 제1 가속기(2300-1)는 네트워크 인터페이스(NTI)를 통해 제2 컴퓨팅 시스템(3000)의 제1 가속기(3300-1)로 직접 데이터를 전달할 수 있다.
가속기들(2300-1~2300-n)과 가속기들(3300-1~3300-n)이 직접 데이터를 전달하는 경우, 제1 컴퓨팅 시스템(2000)의 메모리 노드들(2400-1~2400-n) 또는 제2 컴퓨팅 시스템(3000)의 메모리 노드들(3400-1~3400-n)이 이용될 수 있다. 예를 들어, 제1 가속기(2300-1)와 제1 가속기(3300-1)가 직접 데이터를 전달하는 경우, 제1 가속기(2300-1)에 연결된 제1 메모리 노드(2400-1) 또는 제1 가속기(3300-1)에 연결된 제1 메모리 노드(3400-1)가 이용될 수 있다.
상술한 바와 같이, 제1 컴퓨팅 시스템(2000)의 가속기 및 제2 컴퓨팅 시스템(3000)의 가속기는, 호스트 프로세서들(2200, 3200)을 통하지 않고 데이터를 전달할 수 있다. 즉, 제1 컴퓨팅 시스템(2000) 및 제2 컴퓨팅 시스템(3000)은 네트워크 인터페이스(NTI)를 통해 통신을 수행함으로써 데이터를 처리할 수 있다. 이와 같이, 복수의 컴퓨팅 시스템들(2000, 3000)을 이용하여 데이터를 처리하는 경우, 하나의 컴퓨팅 시스템을 이용하여 데이터를 처리하는 경우에 비해 데이터를 더 빠르게 처리할 수 있다. 즉, 데이터가 방대한 경우, 복수의 컴퓨팅 시스템들(2000, 3000)을 이용하여 데이터를 분산 처리하고 병렬 처리할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 호스트 메모리
200: 호스트 프로세서
300-1~300-n: 제1 내지 제n 가속기들
400-1~400-n: 제1 내지 제n 메모리 노드들
410: 제1 메모리 모듈
420: 제2 메모리 모듈
430: 프로토콜 엔진
440: 데이터베이스 가속기
450: 부호화기
460: 압축기
1000: 컴퓨팅 시스템

Claims (20)

  1. 호스트 프로세서;
    통신 인터페이스를 기반으로 상기 호스트 프로세서와 통신을 수행하도록 구성된 복수의 가속기들; 및
    인터커넥션 네트워크(interconnection network)를 통해 상기 복수의 가속기들과 연결된 복수의 메모리 노드(node)들을 포함하고,
    상기 복수의 가속기들 중 제1 가속기와 상기 복수의 메모리 노드들 중 제1 메모리 노드 사이에 제1 데이터 링크(link)가 형성되고, 상기 제1 가속기와 상기 복수의 메모리 노드들 중 제2 메모리 노드 사이에 제2 데이터 링크가 형성되고, 상기 복수의 가속기들 중 제2 가속기와 상기 제1 메모리 노드 사이에 제3 데이터 링크가 형성되고, 상기 제2 가속기와 상기 복수의 메모리 노드들 중 제3 메모리 노드 사이에 제4 데이터 링크가 형성되는 컴퓨팅 시스템.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제1 가속기 및 상기 제2 가속기는 상기 제1 메모리 노드를 통해 서로 데이터를 직접 전달하는 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 제1 메모리 노드는,
    상기 제1 데이터 링크를 통해 상기 제1 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제1 가속기로 전달하도록 구성된 제1 메모리 모듈; 및
    상기 제3 데이터 링크를 통해 상기 제2 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제2 가속기로 전달하도록 구성된 제2 메모리 모듈을 포함하는 컴퓨팅 시스템.
  5. 제 4 항에 있어서,
    상기 제1 메모리 모듈은 상기 제1 가속기가 상기 제1 메모리 모듈에 직접 접근하도록 작동하는 제1 DMA(direct memory access) 엔진을 포함하고,
    상기 제2 메모리 모듈은 상기 제2 가속기가 상기 제2 메모리 모듈에 직접 접근하도록 작동하는 제2 DMA 엔진을 포함하는 컴퓨팅 시스템.
  6. 제 4 항에 있어서,
    상기 제1 메모리 노드는 특정 프로토콜(protocol)에 따라 상기 제1 메모리 모듈 및 상기 제2 메모리 모듈에 저장된 데이터를 전송하도록 구성된 프로토콜 엔진을 더 포함하는 컴퓨팅 시스템.
  7. 제 4 항에 있어서,
    상기 제1 메모리 노드는 상기 제1 메모리 모듈 및 상기 제2 메모리 모듈에 저장된 데이터를 부호화하도록 구성된 부호화기를 더 포함하는 컴퓨팅 시스템.
  8. 제 4 항에 있어서,
    상기 제1 메모리 노드는 상기 제1 메모리 모듈 및 상기 제2 메모리 모듈에 저장된 데이터를 압축하도록 구성된 압축기를 더 포함하는 컴퓨팅 시스템.
  9. 제 1 항에 있어서,
    상기 인터커넥션 네트워크는 링형 네트워크(ring network)를 포함하는 컴퓨팅 시스템.
  10. 제 1 항에 있어서,
    상기 제1 가속기는 상기 제1 메모리 노드 및 상기 제2 메모리 노드를 이용하여 딥 러닝(deep learning)을 수행하는 컴퓨팅 시스템.
  11. 복수의 입력 데이터에 대한 학습 명령을 생성하도록 구성된 호스트 프로세서;
    상기 학습 명령에 응답하여 뉴럴 네트워크 변수들을 기반으로 상기 복수의 입력 데이터 중 제1 입력 데이터에 대한 연산을 수행하고, 제1 연산 결과 및 제2 연산 결과를 생성하도록 구성된 제1 가속기;
    상기 학습 명령에 응답하여 뉴럴 네트워크 변수들을 기반으로 상기 복수의 입력 데이터 중 제2 입력 데이터에 대한 연산을 수행하고, 제3 연산 결과 및 제4 연산 결과를 생성하도록 구성된 제2 가속기;
    제1 데이터 링크를 통해 상기 제1 가속기로부터 전달된 상기 제1 연산 결과를 저장하고, 제4 데이터 링크를 통해 상기 제2 가속기로부터 전달된 상기 제3 연산 결과를 저장하도록 구성된 제1 메모리 노드;
    제2 데이터 링크를 통해 상기 제1 가속기로부터 전달된 상기 제2 연산 결과를 저장하도록 구성된 제2 메모리 노드; 및
    제3 데이터 링크를 통해 상기 제2 가속기로부터 전달된 상기 제4 연산 결과를 저장하도록 구성된 제3 메모리 노드를 포함하는 컴퓨팅 시스템.
  12. 삭제
  13. 제 11 항에 있어서,
    상기 제1 메모리 노드는,
    상기 제1 데이터 링크를 통해 상기 제1 연산 결과를 저장하도록 구성된 제1 메모리 모듈; 및
    상기 제4 데이터 링크를 통해 상기 제3 연산 결과를 저장하도록 구성된 제2 메모리 모듈을 포함하는 컴퓨팅 시스템.
  14. 제 13 항에 있어서,
    상기 제1 메모리 모듈은 상기 제1 가속기가 상기 제1 메모리 모듈에 직접 접근하도록 작동하는 제1 DMA(direct memory access) 엔진을 포함하고,
    상기 제2 메모리 모듈은 상기 제2 가속기가 상기 제2 메모리 모듈에 직접 접근하도록 작동하는 제2 DMA 엔진을 포함하는 컴퓨팅 시스템.
  15. 제 13 항에 있어서,
    상기 제1 메모리 노드는 특정 프로토콜(protocol)에 따라 상기 제1 메모리 모듈에 저장된 상기 제1 연산 결과를 상기 제1 가속기로 전달하고, 상기 제2 메모리 모듈에 저장된 상기 제3 연산 결과를 상기 제2 가속기로 전달하도록 구성된 프로토콜 엔진을 더 포함하는 컴퓨팅 시스템.
  16. 제 11 항에 있어서,
    상기 제1 가속기는 상기 제1 메모리 노드에 저장된 제1 연산 결과 및 상기 제2 메모리 노드에 저장된 상기 제2 연산 결과를 이용하여 상기 뉴럴 네트워크 변수들을 업데이트하는 컴퓨팅 시스템.
  17. 호스트 프로세서;
    통신 인터페이스를 기반으로 상기 호스트 프로세서와 통신을 수행하도록 구성된 복수의 가속기들; 및
    인터커넥션 네트워크(interconnection network)를 통해 상기 복수의 가속기들과 연결된 복수의 메모리 노드(node)들을 포함하고,
    상기 복수의 메모리 노드들 중 제1 메모리 노드와 상기 복수의 가속기들 중 제1 가속기 사이에 제1 데이터 링크(link)가 형성되고, 상기 제1 메모리 노드와 상기 복수의 가속기들 중 제2 가속기 사이에 제2 데이터 링크가 형성되고, 그리고
    상기 제1 가속기 및 상기 제2 가속기는 상기 제1 메모리 노드를 통해 서로 데이터를 직접 전달하는 컴퓨팅 시스템.
  18. 삭제
  19. 제 17 항에 있어서,
    상기 제1 메모리 노드는,
    상기 제1 데이터 링크를 통해 상기 제1 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제1 가속기로 전달하도록 구성된 제1 메모리 모듈; 및
    상기 제2 데이터 링크를 통해 상기 제2 가속기로부터 전달된 데이터를 저장하거나 저장된 데이터를 상기 제2 가속기로 전달하도록 구성된 제2 메모리 모듈을 포함하는 컴퓨팅 시스템.
  20. 제 19 항에 있어서,
    상기 제1 메모리 모듈은 상기 제1 가속기가 상기 제1 메모리 모듈에 직접 접근하도록 작동하는 제1 DMA(direct memory access) 엔진을 포함하고,
    상기 제2 메모리 모듈은 상기 제2 가속기가 상기 제2 메모리 모듈에 직접 접근하도록 작동하는 제2 DMA 엔진을 포함하는 컴퓨팅 시스템.
KR1020180120634A 2018-10-10 2018-10-10 딥 러닝을 위한 고성능 컴퓨팅 시스템 KR102382186B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180120634A KR102382186B1 (ko) 2018-10-10 2018-10-10 딥 러닝을 위한 고성능 컴퓨팅 시스템
US16/595,992 US20200117990A1 (en) 2018-10-10 2019-10-08 High performance computing system for deep learning

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180120634A KR102382186B1 (ko) 2018-10-10 2018-10-10 딥 러닝을 위한 고성능 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20200040560A KR20200040560A (ko) 2020-04-20
KR102382186B1 true KR102382186B1 (ko) 2022-04-05

Family

ID=70161361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180120634A KR102382186B1 (ko) 2018-10-10 2018-10-10 딥 러닝을 위한 고성능 컴퓨팅 시스템

Country Status (2)

Country Link
US (1) US20200117990A1 (ko)
KR (1) KR102382186B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
US11657323B2 (en) * 2020-03-10 2023-05-23 International Business Machines Corporation Machine learning model accuracy fairness
US11875247B1 (en) * 2020-06-18 2024-01-16 Amazon Technologies, Inc. Input batching with serial dynamic memory access
US11922051B2 (en) 2020-11-02 2024-03-05 Deepx Co., Ltd. Memory controller, processor and system for artificial neural network
US20230132931A1 (en) * 2021-11-01 2023-05-04 Advanced Micro Devices, Inc. Hardware management of direct memory access commands

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676070B2 (en) * 2004-05-14 2010-03-09 Siemens Medical Solutions Usa, Inc. Device for on-line data acquisition in three-dimensional positron emission tomography
US7484016B2 (en) * 2004-06-30 2009-01-27 Intel Corporation Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
KR20070082835A (ko) * 2006-02-17 2007-08-22 삼성전자주식회사 직접 메모리 액세스 제어장치 및 방법
US8255593B2 (en) * 2009-09-29 2012-08-28 Oracle America, Inc. Direct memory access with striding across memory
US8244930B1 (en) * 2010-05-05 2012-08-14 Hewlett-Packard Development Company, L.P. Mechanisms for synchronizing data transfers between non-uniform memory architecture computers
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US11087234B2 (en) * 2016-01-29 2021-08-10 Verizon Media Inc. Method and system for distributed deep machine learning
US10649914B1 (en) * 2016-07-01 2020-05-12 The Board Of Trustees Of The University Of Illinois Scratchpad-based operating system for multi-core embedded systems
KR20180075913A (ko) * 2016-12-27 2018-07-05 삼성전자주식회사 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치
CN108628807B (zh) * 2017-03-20 2022-11-25 北京百度网讯科技有限公司 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质
US11609623B2 (en) * 2017-09-01 2023-03-21 Qualcomm Incorporated Ultra-low power neuromorphic artificial intelligence computing accelerator
US10303630B2 (en) * 2017-10-08 2019-05-28 Huawei Technologies Co., Ltd. Configurable hardware accelerators
US10728091B2 (en) * 2018-04-04 2020-07-28 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment
US11315013B2 (en) * 2018-04-23 2022-04-26 EMC IP Holding Company LLC Implementing parameter server in networking infrastructure for high-performance computing
KR20190136431A (ko) * 2018-05-30 2019-12-10 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법

Also Published As

Publication number Publication date
KR20200040560A (ko) 2020-04-20
US20200117990A1 (en) 2020-04-16

Similar Documents

Publication Publication Date Title
KR102382186B1 (ko) 딥 러닝을 위한 고성능 컴퓨팅 시스템
US11120331B2 (en) Device and method for executing neural network operation
TWI803663B (zh) 一種運算裝置和運算方法
CN107710238A (zh) 具有堆栈存储器的硬件加速器上的深度神经网络处理
JP2021530813A (ja) 専用低レイテンシリンクを使用した複数のハードウェアアクセラレータのための統合されたアドレス空間
JP2021166032A (ja) ネットワークオンチップによるデータ処理方法及び装置
CN111199275B (zh) 用于神经网络的片上系统
CN101841471A (zh) 具有连接成多维矩阵的节点的系统及其控制方法以及设备
CN113849293A (zh) 数据处理方法、装置、系统及计算机可读存储介质
US20220263769A1 (en) Combined write enable mask and credit return field
WO2024001024A1 (zh) 在区块链系统中执行交易的方法、区块链系统和节点
US11023825B2 (en) Platform as a service cloud server and machine learning data processing method thereof
US20230069339A1 (en) Storage device, electronic device including storage device, and operating method of electronic device
JP2021507386A (ja) ニューラルネットワーク処理のための共用メモリの集中型−分散型混合構成
CN110413561B (zh) 数据加速处理系统
US20220308935A1 (en) Interconnect-based resource allocation for reconfigurable processors
CN114721993A (zh) 众核处理装置、数据处理方法及设备、介质
CN116583823A (zh) 使用长向量仲裁的异步管线合并
CN113424198B (zh) 基于柔性电缆连接的分布式ai训练拓扑
US11656920B2 (en) Information processing apparatus and computer-readable storage medium storing parallel computing program
US20110270942A1 (en) Combining multiple hardware networks to achieve low-latency high-bandwidth point-to-point communication
KR20230116887A (ko) 네트워크 통신 링크의 요청 패킷들에 대한 태그들
CN114661654A (zh) 访问处理装置和方法、处理设备、电子设备和存储介质
CN116529721A (zh) 按需可编程原子内核加载
CN111832714A (zh) 运算方法及装置

Legal Events

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