KR102192325B1 - 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치 - Google Patents

인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치 Download PDF

Info

Publication number
KR102192325B1
KR102192325B1 KR1020190065709A KR20190065709A KR102192325B1 KR 102192325 B1 KR102192325 B1 KR 102192325B1 KR 1020190065709 A KR1020190065709 A KR 1020190065709A KR 20190065709 A KR20190065709 A KR 20190065709A KR 102192325 B1 KR102192325 B1 KR 102192325B1
Authority
KR
South Korea
Prior art keywords
neural network
artificial neural
data
memory
operation request
Prior art date
Application number
KR1020190065709A
Other languages
English (en)
Other versions
KR20200139343A (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 KR1020190065709A priority Critical patent/KR102192325B1/ko
Priority to KR1020200025961A priority patent/KR102351087B1/ko
Priority to CN202080007589.1A priority patent/CN113316794B/zh
Priority to PCT/KR2020/007305 priority patent/WO2020246836A1/ko
Publication of KR20200139343A publication Critical patent/KR20200139343A/ko
Application granted granted Critical
Priority to US17/135,655 priority patent/US11763147B2/en
Publication of KR102192325B1 publication Critical patent/KR102192325B1/ko
Priority to US18/230,912 priority patent/US20230385635A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/08Learning methods

Landscapes

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

Abstract

인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템이 개시된다. 상기 컴퓨팅 시스템은 프로세서로부터 수신되는 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고, 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보를 상기 데이터-주소 순서 정보로서 생성하고, 제1 인공신경망 데이터 오퍼레이션 요청의 제1 주소 정보, 및 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 제2 주소 정보를 생성한다.

Description

인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치 {DATA MANAGEMENT DEVICE SUPPORTING HIGH SPEED ARTIFICIAL NEURAL NETWORK OPERATION WITH CACHING DATA BASED ON DATA LOCALITY OF ARTIFICIAL NEURAL NETWORKS}
본 발명은 인공신경망 오퍼레이션을 지원하기 위한 데이터 관리 장치로서, 특히 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법 및 그 방법이 적용되는 장치에 관한 것이다.
인공 신경망(Artificial Neural Network, ANN)을 이용하는 인공 지능에 대한 관심이 높아지고 있다. 인공 신경망은 데이터에 대한 학습을 통하여 데이터셋에 내재된 파라미터들의 관련성을 도출할 수 있다.
최근에는 이미지 인식, 자율 주행 자동차 등의 인공 지능 분야에서 합성곱 신경망(Convolutional Neural Network: CNN)이 널리 이용되고 있다.
합성곱 신경망은 입력 레이어, 출력 레이어, 및 그 사이의 하나 또는 둘 이상의 내부 레이어를 포함한다.
출력 레이어는 하나 또는 둘 이상의 뉴런을 포함하며 입력 레이어 및 내부 레이어는 각각 다수의 뉴런을 포함한다.
인접한 레이어에 포함된 뉴런들은 시냅스를 통해 다양하게 연결되며 각각의 시냅스에는 가중치가 주어진다.
입력 레이어에 포함된 뉴런들은 예를 들어 인식 대상이 되는 이미지와 같이 입력 신호에 따라 그 값이 정해진다.
내부 레이어와 출력 레이어에 포함된 뉴런들의 값은 그 이전 레이어에 포함된 뉴런과 시냅스에 따라 값이 연산된다.
이와 같이 연결된 합성곱 신경망은 트레이닝 동작을 통해 시냅스의 가중치가 결정된다.
훈련이 완료된 합성곱 신경망을 이용하여 이미지 인식을 수행하는 추론 동작을 예로 들면 입력 이미지는 입력 레이어의 다수의 뉴런들의 값을 결정하고 이후 다수의 연산을 통해 내부 레이어를 거쳐 출력 레이어의 뉴런에 인식 결과가 출력된다.
합성곱 신경망을 트레이닝 하는 동작과 이를 이용한 추론 동작 모두에서 많은 연산을 수행해야 한다.
또한 연산 도중에 생성되는 임시 데이터를 저장하거나 저장된 임시 데이터를 읽기 위하여 많은 메모리 액세스 동작을 수행한다.
종래에는 신경망 연산을 수행하는 프로세서와 메모리 장치 사이의 데이터 입출력 동작에 걸리는 시간으로 인하여 전체 연산 성능이 저하되는 문제가 있다.
이러한 종래기술의 문제점을 개선하기 위한 노력의 일환으로, 메모리 내부에 신경망 프로세서를 구비하는 in-memory processing 기술이 제안되었다. 예를 들어 KR 10-2019-0018888 "신경망 처리 회로를 구비하는 메모리 장치 및 이를 포함하는 메모리 시스템" 등이 이에 해당한다.
또한 인공신경망 오퍼레이션을 지원하는 프로세서인 뉴럴 네트워크 프로세서(NNP, Neural Network Processor)로서 미국등록특허 US 9,805,304 "Prefetching Weights for Use in a Neural Network Processor"는 신경망 계층에 대한 시스톨릭 어레이의 제1 차원을 따라(along the first dimension of the systolic array) 인공신경망 오퍼레이션 도중의 네트워크의 가중치를 prefetch하여 인공신경망 오퍼레이션을 최적화할 수 있다.
상기 선행기술 중 KR 10-2019-0018888은 메모리 내부에 확정된 신경망 처리 회로를 구비함으로써 데이터를 주고받는 데에 소요되는 시간을 단축하려는 동기에서 도출되었다. 또한 선행기술 중 US 9,805,304는 정해진 인공신경망의 구조 정보에 기반하여 다음 데이터 오퍼레이션을 진행하는 sequencer를 내부에 포함하는, 특정 인공신경망에 dedicated된 신경망 프로세서(NNP)이다.
그러나 최근 인공신경망 기술은 다양한 네트워크의 종류를 다중 결합하거나, 동적으로 변형 가능한 네트워크를 통하여 성능을 향상시키려는 시도가 이루어지고 있으므로, 신경망 처리 오퍼레이션을 메모리 측에서 처리하는 시도 또는 특정 인공신경망에 dedicated된 신경망 프로세서(NNP) 내의 정해진 인공신경망에 기반한 가중치 sequencer의 최적화만으로는 다양한 인공신경망 기법을 적용하는 데에 있어서 그 적용 범위가 제한될 수 있다.
공개특허공보 KR 10-2019-0018888 "신경망 처리 회로를 구비하는 메모리 장치 및 이를 포함하는 메모리 시스템" (2019.02.26) 미국공개특허공보 US 2019/0057302 "MEMORY DEVICE INCLUDING NEURAL NETWORK PROCESSOR AND MEMORY SYSTEM INCLUDING THE MEMORY DEVICE" (2019. 02. 21) 미국등록특허공보 US 9,805,304 "Prefetching Weights for Use in a Neural Network Processor" (2017.10.31)
보통의 컴퓨팅 시스템에서 연산을 수행하는 프로세서의 성능은 우수한 반면 연산의 대상이 되는 데이터를 공급하는 메모리의 성능은 프로세서의 성능에 비하면 부족한 불균형 문제가 있다. 이로 인하여 시스템 전체의 연산 성능이 저하되며, 특히 빅 데이터를 연산하는 인공지능/인공신경망 연산에서는 불균형이 더욱 심각한 문제이다. 따라서 인공신경망 연산에서 가장 큰 개선이 필요한 사항 중 하나로 인식되고 있다.
인공신경망 연산은 데이터 인텐시브 프로세싱의 특성을 가지고 있으므로 데이터를 저장하고 있는 메모리 장치의 Bandwidth와 Latency에 따라 전체 연산 성능이 크게 영향받는다. 프로세서의 연산 능력이 우수하다 하더라도 연산에 필요한 입력 데이터를 메모리로부터 적절한 때에 가져올 수 없으면 프로세서는 실제 연산을 하지 못하고 idle 상태로 기다려야 하기 때문이다.
메모리의 종류에 따라서는 프로세서가 연산에 필요한 데이터를 메모리로부터 읽기 위해 메모리 주소 값을 전달하면, 여러 클럭 사이클의 Latency 이후에 실제로 요구된 데이터가 메모리로부터 출력된다. DRAM의 경우에는 Row 주소에 따라 word line 및 bit line을 활성화하는 데 여러 클럭, Column line을 활성화하는 데 여러 클럭, 데이터를 메모리 외부로 전송하는 path를 통과하는 데 여러 클럭이 소요되며 NAND Flash의 경우에는 한번에 활성화되는 단위가 커서 그 중에서 필요한 주소의 데이터를 탐색하는 데까지 여러 클럭이 추가로 소요될 수도 있다.
프로세서가 연산에 필요한 데이터가 없어 프로세서 외부의 메모리로 데이터를 읽기 액세스하고 이를 실제로 읽어오는 데 여러 클럭이 소요되면 그 시간 동안 필요한 데이터가 없으므로 연산이 중단되고 이는 전체적인 연산 성능의 저하를 야기한다.
본 발명의 목적은 상기의 종래기술의 문제점을 개선하고자 하는 것으로, 인공신경망 처리 연산은 적어도 하나 이상의 프로세서에서 실행되도록 하며, 이로 인하여 인공신경망 선택/변형 시 제약을 최소화하고 적용 범위를 넓힐 수 있는 데이터 관리 장치를 제공하는 것이다. 또한 각종 메모리 디바이스(DRAM, SRAM, Flash Memory, NVRAM)를 이용하는 인공신경망 연산 시스템에서, 인공신경망 오퍼레이션에 대하여 메모리에서 데이터 읽기의 Latency를 최소화하여 주어진 메모리에서의 Bandwidth를 극대화하는 것을 목적으로 한다.
본 발명의 목적은 적어도 하나 이상의 프로세서 및 메모리 장치 사이의 임의의 위치에서도 인공신경망 오퍼레이션을 고속으로 지원할 수 있는 데이터 관리 장치를 제공하는 것이다.
본 발명의 목적은 이유에 관계없이 프로세서가 인공신경망 오퍼레이션이 완결되지 않은 상태에서 중단하였을 때, 다음 인공신경망 오퍼레이션이 재개될 때의 데이터 액세스에 관련된 Latency를 최소화하는 것이다.
본 발명의 목적은 인공신경망 오퍼레이션의 종류 및 특성에 기반하여 다음 인공신경망 오퍼레이션을 위해 필요한 데이터의 메모리 주소를 미리 예측하고 다음 인공신경망 오퍼레이션을 위해 필요한 데이터 요청을 미리 대응하는 데이터 관리 장치를 제공하는 것이다.
종래에는 단일 프로세서와 단일 메모리 장치 간의 데이터 전송에 의해서만 컴퓨팅 또는 데이터 오퍼레이션을 수행하는 경우가 대부분이었지만, 최근의 기술 발전으로 인하여 공유 프로세서(shared processor), 또는 공유 메모리(shared memory) 기반의 컴퓨팅 및 데이터 오퍼레이션이 이용되고 있다. 이때 각 프로세서 또는 메모리에서 가진 로컬 캐쉬(local cache) 간의 캐쉬 일관성(cache coherence)이 중요한 문제로 대두되고 있다. 인공신경망 연산과 같은 데이터 인텐시브 프로세싱에서는 이러한 캐쉬 일관성은 더욱 중요한 문제이다.
본 발명의 목적은 특정한 인공신경망에 국한하지 않고 다양한 인공신경망의 종류 또는 특성에 대응하여 적어도 하나 이상의 프로세서와 적어도 하나 이상의 메모리 간의 인공신경망 데이터 오퍼레이션에 있어서 캐쉬 일관성을 제공하는 것이다. 또한 이러한 인공신경망 데이터 오퍼레이션을 위한 구성이 인공신경망 데이터 오퍼레이션을 제외한 일반적인 데이터 오퍼레이션의 성능을 저하시키지 않도록 구성되는 데이터 관리 장치, 방법, 및 그 방법이 적용되는 컴퓨팅 시스템을 제안하는 것이다.
본 발명의 목적은 다양한 인공신경망의 종류를 다중 결합하거나, 동적으로 변형 가능한 네트워크를 통하여 성능을 향상시키려는 시도에도 대응할 수 있도록 구현된 장치를 이용하여 인공신경망 오퍼레이션이 재개될 때의 데이터 액세스에 관련된 Latency를 최소화하는 것이다.
본 발명은 상기의 종래기술의 문제점을 해결하기 위한 수단으로 도출된 것으로서, 본 발명의 일 실시예에 따른 데이터 관리 장치는 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 프로세서 인터페이스 회로; 상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 메모리 인터페이스 회로; 및 상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 내부 컨트롤러를 포함한다.
상기 내부 컨트롤러는 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보/채널 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고, 상기 내부 컨트롤러는 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보인 데이터-주소 순서 정보를 생성하고 내부 메모리에 상기 데이터-주소 순서 정보를 저장한다.
상기 내부 컨트롤러는 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성한다.
상기 식별 정보는 상기 인공신경망 데이터 오퍼레이션 요청이 학습을 위한 입력 데이터에 관한 요청인지, 인공신경망의 각 시냅스에 할당된 가중치에 관한 요청인지, 상기 인공신경망의 한 계층에서 다음 계층의 출력 노드로 출력되는 연산 결과인 액티베이션 파라미터에 관한 요청인지, 및 현재 수신된 데이터 요청이 인공신경망 데이터 오퍼레이션 요청에 해당하는 지 여부에 관한 정보를 포함할 수 있다.
상기 내부 컨트롤러는 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측할 수 있다.
상기 내부 컨트롤러는 이전의 인공신경망 데이터 오퍼레이션 요청이 없는 상태에서 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 주소 정보를 포함하는 제1 메모리 데이터 오퍼레이션 요청을 생성하고 상기 제1 메모리 데이터 오퍼레이션 요청을 상기 메모리 인터페이스 회로에 전달할 수 있다.
상기 내부 컨트롤러는 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후 상기 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청을 상기 제1 인공신경망 데이터 오퍼레이션에 기반하여 생성하고, 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 메모리 인터페이스 회로에 전달할 수 있다.
상기 내부 컨트롤러 또는 상기 메모리 인터페이스 회로 중 적어도 하나는 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리에 전달하여, 상기 적어도 하나 이상의 메모리가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행하도록 상기 적어도 하나 이상의 메모리를 제어하고, 상기 제2 메모리 데이터 오퍼레이션 요청이 읽기 동작인 경우 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 데이터를 상기 적어도 하나 이상의 메모리로부터 수신할 수 있다.
상기 내부 컨트롤러 또는 상기 메모리 인터페이스 회로 중 적어도 하나는 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리에 전달하여, 상기 적어도 하나 이상의 메모리가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행할 수 있는 준비 상태를 유지하도록 상기 적어도 하나 이상의 메모리를 제어할 수 있다.
상기 내부 컨트롤러는 상기 적어도 하나 이상의 프로세서로부터 상기 제1 인공신경망 데이터 오퍼레이션 요청에 뒤따르는 제3 인공신경망 데이터 오퍼레이션 요청을 실제로 수신한 경우, 상기 제3 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제3 주소 정보가 상기 내부 컨트롤러에서 미리 생성된 상기 다음 주소 정보와 일치하는 지 체크할 수 있다.
이때 상기 제3 주소 정보가 상기 내부 컨트롤러에서 미리 생성된 상기 다음 주소 정보와 일치하지 않는 경우, 상기 메모리 인터페이스 회로는 상기 제3 주소 정보를 포함하는 제3 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리로 전송할 수 있고, 상기 내부 컨트롤러는 상기 제1 인공신경망 데이터 오퍼레이션 요청의 상기 제1 주소 정보 다음에는 상기 제3 인공신경망 데이터 오퍼레이션 요청의 상기 제3 주소 정보가 뒤따르도록 상기 데이터-주소 순서 정보를 갱신하여 상기 내부 메모리에 저장할 수 있다.
상기 내부 컨트롤러는 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보를 이용하는 경우에, 상기 인공신경망 오퍼레이션에 관련된 인공신경망의 구조-특성 정보, 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청인지 쓰기 요청인지, 및 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여, 상기 다음 주소 정보를 생성하기 위하여 이용하는 적응 순서 정보를 결정할 수 있고, 상기 적응 순서 정보, 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하고, 상기 다음 주소 정보를 생성할 수 있다. 예를 들어 제1/제2 인공신경망 데이터 오퍼레이션 요청이 액티베이션 파라미터가 생성되어 저장되는 오퍼레이션과 연관될 때에는 Raster Scan 순서에 기반하여 다음 주소 정보가 생성될 수 있다. 또는 제1/제2 인공신경망 데이터 오퍼레이션 요청이 다음 계층의 노드들과 연결되는 시냅스의 Weight를 읽는 오퍼레이션과 연관될 때에는 Weight Kernel의 형상에 따라 읽어갈 수 있다. 이처럼 인공신경망 데이터 오퍼레이션 요청의 종류, 연관되는 인공신경망 오퍼레이션에 따라 적응 순서 정보에 기반한 다음 주소 정보가 생성될 수 있다.
상기 내부 컨트롤러는 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보 및 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청인지 쓰기 요청인지에 기반하여, 상기 제1 인공신경망 데이터 오퍼레이션 요청이 주소를 포함하지 않는 경우에도 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보를 이용하여 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리에 저장될 현재의 주소 정보를 상기 제1 주소 정보로서 생성할 수 있다.
본 발명의 데이터 관리 장치는 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청일 때, 상기 다음 주소 정보에 기반하여 상기 적어도 하나 이상의 메모리로부터 상기 제2 인공신경망 데이터 오퍼레이션 요청일 것으로 예측되는 데이터에 대한 미리 읽기 연산이 실행된 후, 상기 미리 읽기 연산의 결과인 미리 읽기 데이터를 저장하는 읽기 데이터 버퍼 메모리를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템은 적어도 하나 이상의 프로세서, 및 적어도 하나 이상의 메모리를 포함하고, 상기 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템으로서, 상기 적어도 하나 이상의 프로세서에서 실행되는 상기 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 프로세서 측 인터페이스; 상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 메모리 측 인터페이스; 및 데이터-주소 순서 정보를 저장하는 데이터 오더 메모리를 포함한다.
상기 컴퓨팅 시스템은 상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하고, 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고, 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보를 상기 데이터-주소 순서 정보로서 생성하고, 상기 프로세서 측 인터페이스가 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 데이터 오더 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성할 수 있다.
상기 메모리 측 인터페이스는 상기 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리 또는 상기 컴퓨팅 시스템 외부의 적어도 하나 이상의 외부 메모리로 전송하고, 상기 적어도 하나 이상의 메모리 또는 상기 적어도 하나 이상의 외부 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신할 수 있다.
본 발명의 일 실시예에 따른 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법은 적어도 하나 이상의 프로세서, 및 적어도 하나 이상의 메모리를 포함하고, 상기 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템에서 실행되는 방법으로서, 상기 적어도 하나 이상의 프로세서에서 실행되는 상기 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 단계; 상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 단계; 및 상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 단계를 포함한다.
이때 상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 단계는 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하는 단계; 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보를 상기 데이터-주소 순서 정보로서 생성하는 단계; 상기 데이터-주소 순서 정보를 상기 컴퓨팅 시스템 내부의 데이터 오더 메모리에 저장하는 단계; 및 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 상기 데이터 오더 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성하는 단계를 포함할 수 있다.
본 발명에 따르면 기존의 프로세서, 및 기존의 메모리를 활용하는 경우에도 중단되었던 인공신경망 오퍼레이션을 재개할 때 프로세서가 메모리로부터 데이터를 읽어들일 때 발생하는 Latency를 제거하거나 최소화할 수 있다.
본 발명에 따르면 프로세서가 인공신경망 오퍼레이션을 위한 데이터를 얻기 위한 지연 시간, 연산 휴지 기간이 최소화되고, 기존 메모리가 가지는 Bandwidth를 최대로 활용할 수 있다.
본 발명에 따르면 인공신경망 연산 컴퓨팅 시스템의 전체적인 연산 성능을 최적화/극대화할 수 있다.
본 발명에 따르면 적어도 하나 이상의 프로세서, 및 적어도 하나 이상의 메모리 장치 사이의 임의의 위치에서도 인공신경망 오퍼레이션을 고속으로 지원할 수 있는 데이터 관리 장치 및 방법이 제공된다. 또한 이러한 데이터 관리 방법이 실행되는 컴퓨팅 시스템을 제공할 수 있다.
본 발명에 따르면 특정한 인공신경망에 국한하지 않고 다양한 인공신경망의 종류 또는 특성에 대응하여 적어도 하나 이상의 프로세서와 적어도 하나 이상의 메모리 간의 인공신경망 데이터 오퍼레이션에 있어서 캐쉬 일관성을 제공할 수 있다. 또한 이러한 인공신경망 데이터 오퍼레이션을 위한 구성이 인공신경망 데이터 오퍼레이션을 제외한 일반적인 데이터 오퍼레이션의 성능을 저하시키지 않도록 구성되는 데이터 관리 장치, 방법, 및 그 방법이 적용되는 컴퓨팅 시스템을 제공할 수 있다.
본 발명에 따르면 다양한 네트워크의 종류를 다중 결합하거나, 동적으로 변형 가능한 네트워크를 통하여 성능을 향상시키려는 시도에도 대응할 수 있도록 구현된 장치를 이용하여 인공신경망 오퍼레이션이 재개될 때의 데이터 액세스에 관련된 Latency를 최소화할 수 있다.
도 1은 일반적인 인공신경망의 일 예의 구조 및 동작을 도시하는 도면이다.
도 2는 본 발명의 일 실시예에 따른 데이터 관리 장치로서, 고속의 인공신경망 오퍼레이션을 지원하기 위한 데이터 관리 장치를 도시하는 도면이다.
도 3은 본 발명의 다른 일 실시예에 따른 데이터 관리 장치로서, 고속의 인공신경망 오퍼레이션을 지원하기 위한 데이터 관리 장치를 도시하는 도면이다.
도 4는 본 발명의 또 다른 일 실시예에 따른 컴퓨팅 시스템에서 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법이 실행되는 경우를 도시하는 도면이다.
도 5는 본 발명의 일 실시예에 따른 데이터 관리 장치를 경유하여 실행되는 프로세서-메모리 간 데이터 오퍼레이션의 일 예를 도시하는 도면이다.
도 6은 본 발명의 일 실시예에 따른 데이터 관리 장치를 경유하여 실행되는 프로세서-메모리 간 데이터 오퍼레이션의 다른 일 예를 도시하는 도면이다.
도 7은 본 발명의 일 실시예에 따른 데이터 관리 방법의 일부 과정을 도시하는 동작 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 데이터 관리 방법의 일부 과정을 도시하는 동작 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 데이터 관리 방법의 일부 과정을 도시하는 동작 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 데이터-주소 순서 정보를 표현하는 도면이다.
도 11은 본 발명의 다른 일 실시예에 따른 데이터-주소 순서 정보를 표현하는 도면이다.
도 12는 본 발명의 또 다른 일 실시예에 따른 데이터-주소 순서 정보를 표현하는 도면이다.
도 13은 본 발명의 복수의 실시예들에 따른 채널 정보/식별 정보를 표현하는 방법을 도시하는 도면이다.
도 14는 본 발명의 일 실시예에 따른 채널 정보/식별 정보와 데이터-주소 순서 정보가 연관된 경우를 도시하는 도면이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 일반적인 인공신경망의 일 예의 구조 및 동작을 도시하는 도면이다. 도 1의 인공신경망의 구성의 일부 또는 전부는 본 발명의 구체적인 구현을 위하여 필요에 따라 본 발명의 일부로서 포함될 수 있다.
또한 도 1의 인공신경망에 관련된 데이터 오퍼레이션 과정에서 프로세서가 메모리에 액세스하는 방식은 본 발명의 구체적인 구현을 위하여 본 발명의 일부로서 포함될 수 있다.
도 1을 참조하면, 숨은 계층(hidden layers)을 포함하는 컨벌루션 신경망(CNN, Convolution Neural Network)의 일 예가 도시된다. 복수의 입력값들(10)은 복수개의 입력 노드들(11)에 전달된다. 입력 노드들(11) 각각의 값들에 각각의 가중치(14)가 곱해져 다음 계층의 노드들로 전달된다. 예를 들어 입력 노드들(11)로부터 출력되는 값들의 가중치 합(weighted sum)은 정규화되어 숨은 계층의 숨은 노드들(12)로 전달될 수 있다. 다수의 숨은 계층을 통과하여 계산된 값들은 마지막 숨은 계층의 숨은 노드들(16)으로 전달된다. 마지막 숨은 계층의 노드들(16)의 값들은 가중치(14)가 곱해져 출력 노드들(13)로 전달되고, 출력 노드들(13)은 최종적으로 출력값들(15)을 인공신경망의 최종 결과로서 제공한다.
최근 급속히 발전한 딥러닝/CNN 기반 인공 신경망 기술은 영상 내의 패턴 분석, 영상 간의 비교, 음성/텍스트 내의 패턴 분석 등 다양한 분야에서 기존의 룰-베이스드(rule-based) 패턴 인식 기술보다 우수한 성능을 이끌어내고 있다. 인간의 눈과 귀로는 구분하기 어려운 패턴을 인식하고 검출하는 인공신경망 기술은 보안, 의료 영상, 비파괴 검사 등 다양한 분야로 확대될 가능성이 기대되고 있다.
인공신경망이 입력값들(10)에 기반하여 학습할 때 도 1에 도시되지 않은 목적 함수(object function)에 의하여 각 계층들의 노드들(11, 12, 13, 16)에 대응하는 데이터와 각 노드들 간의 관련성을 의미하는 가중치(14)가 변경된다. 이때 각 계층들의 노드들(11, 12, 13, 16)에 대응하는 데이터와 가중치(14)는 학습 과정이 수행되는 동안 프로세서에 의하여 메모리로부터 읽히고, 연산에 의하여 변경된 데이터는 메모리에 덮어쓰기/오버라이트된다(overwritten).
인공신경망의 학습 과정에서 필요한 데이터는 학습용 입력 데이터, 가중치 데이터(연관 파라미터), 및 액티베이션 파라미터(피쳐맵)로 구분된다. 학습용 입력 데이터는 영상, 음성, 진동 데이터 등일 수 있으며, 예를 들어 영상의 경우 픽셀(pixel)의 값이 도 1의 입력값들(10)로서 인공신경망에 입력된다. 입력값들(10)은 인공신경망의 학습 과정에서 메모리에 한번 저장된 후, 수십 회에서 수백 회 반복적으로 읽어 들여 학습 과정에 이용된다. 입력값들(10)은 처음 메모리에 저장된 순서대로 수십 회에서 수백 회 읽히게 된다.
가중치 데이터는 인공신경망의 각 시냅스에 할당된 가중치 값들의 조합이다. 도 1의 가중치(14)와 같이, 각 노드들 간의 연관성을 나타내는 연관 파라미터이다. 인공신경망의 학습 과정에서는 하나의 계층에서 다음 계층으로 진행하기 위해서 가중치 데이터가 메모리로부터 읽혀져야 하고, 경우에 따라서는 가중치 데이터가 수정되며, 수정된 가중치 데이터는 메모리에 오버라이트되어야 한다. 인공신경망의 학습 과정은 일련의 학습 데이터와 인공신경망 모델에 포함된 전체 가중치 데이터를 읽어들여 필요한 연산을 수행하고, 그 결과로 수정된 가중치 값을 생성하는 과정을 반복적으로 수행한다. 학습 과정은 모든 학습 데이터에 대해 실행되고, 그 중 하나의 학습 데이터셋에 대해서는 수십 회에서 수백 회에 이르는 반복적인 동작을 통하여 가중치가 수정된다. 일련의 학습 데이터에 대한 학습 과정에서 가중치 값을 덮어쓰기하는 순서는 최초에 가중치 값의 쓰기 연산 시 저장된 순서이고, 가중치 값을 읽어들이는 순서는 최초에 가중치 값의 쓰기 연산 시의 순서 또는 이전의 학습 절차에서 수행되어 수정된 가중치 값을 덮어쓰기한 순서에 기반한다.
액티베이션 파라미터는 인공신경망의 한 계층에서 다음 계층의 노드들로 출력하는 계산 결과 데이터이다. 해당 층의 다음 층을 계산하기 위하여 해당 층의 피쳐맵 데이터를 읽어들여 다음 층의 값을 계산한다. 이 액티베이션 파라미터/피쳐맵을 생성하는 순서대로 메모리에 저장하고, 다음 층 연산을 위하여 읽어들인다면 읽어들이는 순서는 적어도 메모리에 저장되는 순서에 기반하여 결정될 것이다. 액티베이션 파라미터/피쳐맵은 한 계층에서 생성되며 다음 계층으로 입력되면 역할이 종료되는 경우가 대부분이다. 도 1에서는 노드들(11)의 값에 가중치(14)가 곱해져 노드들(12)로 전달되면, 일반적으로는 노드들(11)의 값은 이후의 과정에서 거의 사용되지 않으므로 역할이 종료된 것으로 볼 수 있다. 다만 어플리케이션 및 목적에 따라서는 각 계층의 노드들의 값의 변화를 모니터링하는 경우가 있으므로(인공신경망 내부의 동작을 탐색하기 위한 경우) 이런 경우에는 각 계층의 노드들의 값도 메모리에 저장되기도 한다.
인공신경망의 학습이 종료된 경우에, 새로운 입력값들(10)이 주어지면, 인공신경망은 고정된 가중치(14)를 적용하여 학습의 결과로서 새로운 입력값들(10)에 대한 추론(inference)을 수행하고, 출력값들(15)을 제공한다.
인공신경망의 추론 과정에서는 새로운 입력값들(10)이 메모리로부터 읽히고, 가중치(14)도 메모리로부터 순차적으로 읽힌다. 학습 과정과 달리 추론 과정에서는 가중치(14)가 변경되지 않으므로 가중치(14)의 오버라이트 과정은 필요하지 않다. 각 노드들의 액티베이션 파라미터들은 일반적으로 해당 계층의 연산 이후 역할을 종료하며, 이후에는 거의 사용되지 않는다.
각 노드들의 피쳐맵 데이터는 일반적으로 해당 계층의 연산 이후 역할을 종료하지만, 최근에는 인공신경망 내부의 동작을 해석하고자 하는 시도가 있어, 어플리케이션 및 목적에 따라서는 각 노드들의 피쳐맵 데이터가 메모리에 저장되어야 하는 경우가 있다. 이런 경우에는 프로세서의 요청에 의하여 각 노드들의 피쳐맵 데이터가 메모리에 저장될 수도 있다.
인공신경망의 추론 과정에서는 가중치 값은 고정되므로 덮어쓰기/오버라이트 연산이 필요하지 않고, 최초에 메모리에 저장된 데이터가 그대로 읽힌다. 이때 읽기 연산의 순서는 쓰기 연산의 순서에 기반하여 결정되거나 쓰기 연산의 순서가 일부 변경되어 적용될 것이고, 읽기 연산의 순서는 다음 추론 과정에서도 동일하게 적용된다.
액티베이션 파라미터/피쳐맵은 추론 과정에서는 매 계층마다 데이터가 생성되어 메모리에 저장되고, 다음 층에서 입력으로 사용되면 추론 과정에서의 역할은 종료된다. 액티베이션 파라미터/피쳐맵은 추론 과정에서 최초에 데이터가 메모리에 저장된 순서대로 읽히는 경우가 대부분일 것이다.
도 1에는 컨벌루션 신경망이 주로 도시되었으나, 본 발명은 컨벌루션 신경망에 국한되지 않으며, 컨벌루션 신경망 이외에도 임의의 인공신경망(ANN)을 이용하는 경우에 적용 가능하다.
도 2는 본 발명의 일 실시예에 따른 데이터 관리 장치(210)로서, 고속의 인공신경망 오퍼레이션을 지원하기 위한 데이터 관리 장치(210)를 도시하는 도면이다.
도 2에 도시된 적어도 하나 이상의 프로세서(260)는 단독으로 또는 다른 프로세서와 협력하여 인공신경망 오퍼레이션을 실행하고, 인공신경망 오퍼레이션에 관련된 데이터를 적어도 하나 이상의 메모리(270)로부터 읽어들이거나 적어도 하나 이상의 메모리(270)에 저장한다. 이때 인공신경망 오퍼레이션에 관련된 데이터로서 적어도 하나 이상의 메모리(270)에 대한 읽기 또는 쓰기 요청을 인공신경망 데이터 오퍼레이션 요청이라 칭하기로 한다. 인공신경망 데이터 오퍼레이션 요청은 인공신경망 오퍼레이션과 관련되어 프로세서(260)가 메모리(270)로부터 요구하는 데이터를 의미할 수도 있고, 프로세서(260)로부터 메모리(270)에 저장하도록 요구되는 데이터를 의미할 수도 있다. 인공신경망 데이터 오퍼레이션 요청은 읽기 요청인지 쓰기 요청인지에 따라 데이터 필드 또는 어드레스 필드 중 적어도 하나 이상에 대한 정보를 포함한다.
적어도 하나 이상의 프로세서(260)는 인공신경망 연산이 가능한 어떤 종류의 프로세서로도 구현될 수 있다. 예를 들어, 일반적인 CPU, 그래픽 프로세싱에 초점을 맞춘 GPU, 인공신경망 연산에 초점을 맞춘 NNP(Neural Network Processor) 뿐만 아니라 인공신경망 연산을 위하여 커스터마이즈되는 프로세서의 종류 모두를 포함할 수 있다.
본 발명의 데이터 관리 장치(210)는 내부 컨트롤러(220), 프로세서 측 인터페이스 회로(240), 메모리 측 인터페이스 회로(250)를 포함한다.
프로세서 측 인터페이스 회로(240)는 적어도 하나 이상의 프로세서(260)로부터 인공신경망 데이터 오퍼레이션 요청을 수신한다. 메모리 측 인터페이스 회로(250)는 상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 적어도 하나 이상의 메모리(270)로 전송하고, 상기 적어도 하나 이상의 메모리(270)로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신한다.
내부 컨트롤러(220)는 상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성한다.
내부 컨트롤러(220)는 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보/채널 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하는 Access Data Type Detect 서브 모듈을 포함할 수 있다. 이때 인공신경망 데이터 오퍼레이션 요청의 종류는 식별 정보/채널 정보에 기반하여 구별될 수 있다. 인공신경망 데이터 오퍼레이션 요청의 종류는 메모리에 요구하는 데이터 오퍼레이션의 객체로 지정된 데이터의 종류를 의미하며, 인공신경망에서는 입력 데이터, 가중치 데이터, 또는 액티베이션 파라미터(피쳐맵, 특징맵) 중 어느 하나에 대응할 수 있다. 또한 오퍼레이션 요청이 읽기인지, 쓰기인지에 따라서도 향후의 예측과 대응이 달라질 수 있다.
내부 컨트롤러(220)는 상기 식별 정보/채널 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보인 데이터-주소 순서 정보를 생성하고 내부 메모리인 데이터 오더 메모리(230)에 상기 데이터-주소 순서 정보를 저장한다.
데이터 오더 메모리(230)는 데이터 관리 장치(210)의 내부에 위치하는 메모리이고, 데이터 관리 장치(210)의 외부에 위치하는 적어도 하나 이상의 메모리(270)와는 구별된다. 데이터 오더 메모리(230)는 내부 컨트롤러(220)의 외부에 위치하는 것으로 도 2에 도시되었으나, 다른 실시예에 따라서는 데이터 오더 메모리(230)가 내부 컨트롤러(220)의 내부에 위치할 수도 있다.
내부 컨트롤러(220)의 Next Read/Write Address Generator 서브 모듈은 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리(270) 내에 저장되는 제1 주소 정보, 및 상기 내부 메모리인 데이터 오더 메모리(230)에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리(270) 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성할 수 있다. 내부 컨트롤러(220)는 N번째 인공신경망 데이터 오퍼레이션 요청을 수신한 상태에서, 상기 N번째 인공신경망 데이터 오퍼레이션 요청의 데이터가 적어도 하나 이상의 메모리(270) 내에 저장되는 N번째 주소 정보, 및 상기 내부 메모리인 데이터 오더 메모리(230)에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 N번째 인공신경망 데이터 오퍼레이션 요청을 뒤따른 (N+1)번째 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리(270) 내에 저장되는 (N+1)번째 주소 정보를 예측하고 생성할 수 있다.
내부 컨트롤러(220)가 현재 수신된 제1 인공신경망 데이터 오퍼레이션 요청에 기반하여 다음에 수행될 제2 인공신경망 데이터 오퍼레이션 요청을 예측하고 다음 주소 정보를 생성할 때, 내부 컨트롤러(220)는 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보/채널 정보를 참조할 수 있다.
상기 식별 정보/채널 정보는 상기 인공신경망 데이터 오퍼레이션 요청이 학습을 위한 입력 데이터에 관한 요청인지, 인공신경망의 각 시냅스에 할당된 가중치에 관한 요청인지, 상기 인공신경망의 한 계층에서 다음 계층의 출력 노드로 출력되는 연산 결과인 액티베이션 파라미터에 관한 요청인지, 및 현재 수신된 데이터 요청이 인공신경망 데이터 오퍼레이션 요청에 해당하는 지 여부에 관한 정보를 포함할 수 있다.
식별 정보/채널 정보는 식별 코드/채널 코드에 의하여 표현될 수 있다. 식별 코드에 의하여 구분되는 인공신경망 데이터의 도메인은 학습용 입력 데이터, 가중치 데이터(연관 파라미터), 및 액티베이션 파라미터(피쳐맵)로 구분될 수 있다.
또한 식별 코드는 현재 프로세서(260)로부터 수신된 데이터 오퍼레이션 요청이 인공신경망 오퍼레이션과 관련 없는 경우를 별도의 상태값으로 지정하여 데이터 오퍼레이션 요청이 인공신경망 데이터 오퍼레이션인지 여부를 표현할 수 있다.
내부 컨트롤러(220)는 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측할 수 있다. 즉, 제1 인공신경망 데이터 오퍼레이션 요청의 타입에 따라서 내부 컨트롤러는 다음에 수행될 제2 인공신경망 데이터 오퍼레이션 요청을 예측할 수 있다. 이때 제2 인공신경망 데이터 오퍼레이션 요청에 대한 예측은 읽기인지 쓰기인지에 대한 예측을 포함하고, 데이터가 저장될 예정이거나 이미 저장된 메모리 상의 주소에 대한 예측을 포함할 수 있다.
내부 메모리인 데이터 오더 메모리(230)에 저장된 데이터-주소 순서 정보는 적어도 하나 이상의 프로세서(260)로부터 인공신경망 오퍼레이션에 필요한 데이터의 쓰기 요청을 프로세서 측 인터페이스 회로(240)가 수신한 후 메모리 측 인터페이스 회로(250)를 경유하여 적어도 하나 이상의 메모리(270)에 전달하고, 쓰기 요청의 데이터가 순차적으로 적어도 하나 이상의 메모리(270)에 저장될 때 최초로 생성될(초기화될) 수 있다. 쓰기 요청의 데이터의 순서(order), 쓰기 요청의 데이터가 그 순서에 따라 적어도 하나 이상의 메모리(270) 내에 저장되는 주소 정보가 데이터-주소 순서 정보로서 생성된다. 가장 간단한 예시로는 쓰기 요청의 데이터와 그에 대응하는 적어도 하나 이상의 메모리(270) 내의 주소가 순차적으로 기재된 테이블을 들 수 있다. 쓰기 요청의 데이터는 바이트, 워드, 섹터, 페이지, 블록 등의 단위로 구분되고 각 구분된 단위마다 대응하는 적어도 하나 이상의 메모리(270) 내의 주소가 순차적으로 테이블에 저장될 수 있을 것이다. 내부 메모리인 데이터 오더 메모리(230)는 상기 테이블을 저장할 수 있다.
이처럼 쓰기 요청의 각각의 데이터에 대한 주소 정보를 테이블에 저장하면 테이블의 크기가 너무 커질 것이므로, 필요에 따라 테이블을 압축할 수 있다. 즉 연속적인 쓰기 요청의 데이터는 시작 주소와 끝 주소만으로 표현되고, 그 사이의 데이터는 시작 주소와 끝 주소 사이에서 순차적으로 저장된 것으로 간주될 수 있다.
데이터 오더 메모리(230)에 저장되는 데이터-주소 순서 정보는 적어도 하나 이상의 메모리(270)가 플래시 메모리와 같은 비휘발성 메모리인 경우, 물리-논리 주소 매핑 테이블 또는 플래시 변환 계층(FTL, Flash Translation Layer)의 정보의 적어도 일부를 포함할 수도 있다. 적어도 하나 이상의 메모리(270)의 구성(configuration)이 변경되는 경우 적어도 하나 이상의 메모리(270)는 변경된 구성에 대한 정보를 데이터 관리 장치(210)에 전달하고, 데이터 관리 장치(210)의 내부 컨트롤러(220)는 적어도 하나 이상의 메모리(270)는 변경된 구성에 대한 정보에 기반하여 데이터-주소 순서 정보를 업데이트하고, 업데이트된 데이터-주소 순서 정보를 데이터 오더 메모리(230)에 저장할 수 있다.
적어도 하나 이상의 프로세서(260)가 인식하는 인공신경망의 구성(configuration)이 변경되는 경우에도 데이터 관리 장치(210)의 내부 컨트롤러(220)는 인공신경망의 변경된 구성에 기반하여 인공신경망 오퍼레이션에 필요한 데이터-주소 순서 정보를 업데이트할 수 있다. 예를 들어 동적으로 변경되는 인공신경망 기법이 적용되는 경우 적어도 하나 이상의 프로세서(260)가 100개의 숨은 계층을 가진 인공신경망을 가정하고 인공신경망 오퍼레이션을 시작하였으나, 70개의 숨은 계층만으로 인공신경망 오퍼레이션을 실행하도록 방침이 변경될 수 있다. 이때, 적어도 하나 이상의 프로세서(260)가 동적으로 변경된 인공신경망의 구성을 데이터 관리 장치(210)에 전달할 수도 있을 것이다. 그러나 일반적으로는 적어도 하나 이상의 프로세서(260)가 동적으로 변경된 인공신경망의 구성을 알리지 않고 인공신경망 데이터 오퍼레이션 요청을 데이터 관리 장치(210)로 전송할 수 있다. 이때에는 데이터 관리 장치(210)는 적어도 하나 이상의 프로세서(260)로부터 수신되는 인공신경망 데이터 오퍼레이션 요청이 순차적으로 접근하는 적어도 하나 이상의 메모리(270) 내의 주소 정보를 모니터하여 인공신경망의 구성이 변경된 것을 파악할 수도 있다. 데이터 관리 장치(210)의 내부 컨트롤러(220)는 적어도 하나 이상의 프로세서(260)가 동적 변경된 인공신경망 구성을 알리는 경우 또는 알리지 않는 경우에도 인공신경망의 구성의 변경을 검출하고 데이터 오더 메모리(230)에 저장된 데이터-주소 순서 정보를 업데이트할 수 있다.
데이터-주소 순서 정보는 인공신경망 오퍼레이션과 관련된 데이터 쓰기 요청을 처리하는 과정에서 최초로 생성되고(초기화되고), 적어도 하나 이상의 메모리(270) 내에 저장된 데이터를 적어도 하나 이상의 프로세서(260)가 읽기 요청하는 과정에서, 데이터 관리 장치(210) 내의 내부 컨트롤러(220)가 다음 인공신경망 데이터 오퍼레이션 요청의 데이터 및 그 주소를 예측하는 데에 이용될 수 있다.
예를 들어, 인공신경망의 학습에 필요한 입력 데이터로서 영상 데이터를 들 수 있다. 영상 데이터는 각 픽셀(pixel)의 색상 별 밝기값으로 표현될 수 있는데, 각 픽셀의 정보는 쓰기 요청 시에 순차적으로 적어도 하나 이상의 메모리(270) 내에 저장되고, 읽기 요청 시에도 쓰기 요청의 순서와 동일한 순서대로 적어도 하나 이상의 메모리(270)로부터 호출될 가능성이 높을 것이다. 또한 각 계층의 피쳐맵 또는 액티베이션 파라미터 또한 쓰기 요청 시에 순차적으로 적어도 하나 이상의 메모리(270) 내에 저장되고, 읽기 요청 시에도 쓰기 요청의 순서와 동일한 순서대로 적어도 하나 이상의 메모리(270)로부터 호출될 가능성이 높을 것이다.
한편 도 1의 인공신경망에 도시된 가중치(14) 데이터의 경우에도 쓰기 요청 시에 생성된 데이터-주소 순서 정보가 읽기 요청 시에 이용될 수 있다. 다만 가중치(14) 데이터는 쓰기 요청 시와 읽기 요청 시의 순서가 동일하지 않을 수도 있는데, 쓰기 요청 시에는 가중치(14) 데이터가 앞선 계층의 노드의 순서대로 저장되고, 읽기 요청 시에는 다음 계층의 노드의 순서대로 가중치(14) 데이터가 호출될 가능성도 있으므로, 데이터 관리 장치(210) 내의 내부 컨트롤러(220)는 인공신경망 데이터 오퍼레이션 요청의 종류 및 특성을 식별하여 다음 데이터 오퍼레이션 요청을 예측할 수 있다. 이때에도 내부 컨트롤러(220)는 데이터 오더 메모리(230)에 미리 저장된 데이터-주소 순서 정보에 기반하여 다음 데이터 오퍼레이션 요청을 예측할 수 있다. 내부 컨트롤러(220)는 인공신경망 데이터 오퍼레이션 요청에 포함된 식별 코드/채널 코드를 이용하여 해당 인공신경망 데이터 오퍼레이션 요청이 읽기인지/쓰기인지, 학습 과정인지/추론 과정인지 등을 구별하고, 구별된 인공신경망 데이터 오퍼레이션 요청의 특성 및 종류에 따라 데이터-주소 순서 정보에 기반하여 다음 데이터 오퍼레이션 요청을 예측할 수 있다.
한편 가중치(14) 데이터와 같이 읽기 요청과 쓰기 요청 시에 호출되는 순서가 상이할 수 있는 데이터를 위해서, 적어도 하나 이상의 메모리(270) 내에 저장할 때부터 순서에 영향을 주는 요인이 고려되어 적어도 하나 이상의 메모리(270) 내의 주소가 할당될 수도 있다. 예를 들어, 해당 가중치가 연관되는 앞선 계층의 노드의 순서와 다음 계층의 노드의 순서를 조합하여 적어도 하나 이상의 메모리(270) 내의 주소의 적어도 일부가 생성될 수도 있다. 이 경우 내부 컨트롤러(220)는 읽기 요청 시와 쓰기 요청 시의 순서를 각각 가정하여 별도의 데이터-주소 순서 정보를 생성하여 관리할 수도 있다.
내부 컨트롤러(220)는 이전의 인공신경망 데이터 오퍼레이션 요청이 없는 상태에서 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 상기 제1 주소 정보를 포함하는 제1 메모리 데이터 오퍼레이션 요청을 생성하고 상기 제1 메모리 데이터 오퍼레이션 요청을 메모리 측 인터페이스 회로(250)에 전달할 수 있다. 즉, 이전에 저장된 데이터가 없는 경우에 인공신경망 오퍼레이션과 관련된 쓰기 요청이 개시되면, 데이터 관리 장치(210)는 각각의 쓰기 요청(데이터 및 주소를 포함)을 적어도 하나 이상의 메모리(270)에 전달할 수 있다. 이때 쓰기 요청의 데이터와 주소 간의 매핑 정보는 데이터-주소 순서 정보로서 최초로 생성되고(초기화되고), 최초로 생성된(초기화된) 데이터-주소 순서 정보는 데이터 오더 메모리(230)에 저장된다.
내부 컨트롤러(220)는 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후 상기 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청을 상기 제1 인공신경망 데이터 오퍼레이션에 기반하여 생성하고, 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 메모리 인터페이스 회로에 전달할 수 있다. 즉, 쓰기 요청에 의하여 데이터-주소 순서 정보가 최초로 생성된(초기화된) 상태에서, 저장된 데이터에 대한 인공신경망 오퍼레이션과 관련된 읽기 요청 또는 다시 쓰기 요청이 수신되면, 내부 컨트롤러(220)는 데이터-주소 순서 정보에 기반하여 현재 수신된 제1 인공신경망 데이터 오퍼레이션 요청에 기반하여, 다음의 제2 인공신경망 데이터 오퍼레이션 요청이 수신되기 전이라도 제2 인공신경망 데이터 오퍼레이션 요청을 예측할 수 있다. 이러한 예측은 앞서 설명한 바와 같이 인공신경망 데이터 오퍼레이션이 일반적으로 데이터 인텐시브 오퍼레이션이며 일정한 규칙을 가지고 다음 데이터에 접근하는 특성을 이용하여 구현될 수 있다.
적어도 하나 이상의 프로세서(260)로부터 인공신경망 오퍼레이션에 기반한 순차적인 인공신경망 데이터 오퍼레이션 요청을 수신하던 상태에서 다양한 이유로 다음 인공신경망 데이터 오퍼레이션 요청이 지연되거나 수신되지 않은 경우, 내부 컨트롤러(220)는 지금까지 수신된 인공신경망 데이터 오퍼레이션 요청에 기반하여 다음 인공신경망 데이터 오퍼레이션 요청을 예측하고, 이에 필요한 동작을 적어도 하나 이상의 메모리(270)에 전달할 수 있다. 이때 적어도 하나 이상의 메모리(270)에 전달되는 것은 내부 컨트롤러(220)가 예측한 다음 인공신경망 데이터 오퍼레이션 요청이며, 데이터와 주소는 내부 컨트롤러(220)에 의하여 선택되어 적어도 하나 이상의 메모리(270)에 전달될 수 있다. 적어도 하나 이상의 메모리(270)는 내부 컨트롤러(220)가 예측한 다음 인공신경망 데이터 오퍼레이션 요청에 기반하여 메모리 동작을 수행할 준비 상태를 유지하거나, 메모리 동작을 수행하여 데이터를 출력할 수 있다. 만일 인공신경망 오퍼레이션 요청과 관련되어 순차적인 읽기 요청이 진행 도중 다음 읽기 요청이 수신되지 않은 경우, 내부 컨트롤러(220)에 의하여 예측된 다음 읽기 요청이 적어도 하나 이상의 메모리(270)에 전달되고, 적어도 하나 이상의 메모리(270)는 다음 읽기 요청에 기반한 메모리 동작을 수행하여 다음 읽기 요청이 프로세서(260)로부터 데이터 관리 장치(210)에 도달하기 전이라도 다음 읽기 요청의 데이터를 읽어 데이터 관리 장치(270)에 미리 제공할 수 있다. 이후, 프로세서(260)가 동작을 재개하거나 읽기 요청이 지연되는 장애 요인이 제거되어 프로세서(260)로부터 다음 읽기 요청이 데이터 관리 장치(270)에 수신되면 데이터 관리 장치(210)는 레이턴시(Latency) 또는 페널티 없이 메모리(270)로부터 미리 제공된 다음 읽기 요청의 데이터를 신속하게 프로세서(260)로 전달할 수 있다.
즉, 통상의 지연 시간보다 긴 시간 동안 프로세서(260)로부터의 읽기 요청이 중단되면, 메모리(270)는 다른 메모리 동작에 진입할 가능성이 높으므로 나중에 프로세서(260)로부터 다음 읽기 요청이 전달되었을 때, 종래 기술에서는 메모리(270)는 중단되었다 재개된 다음 읽기 요청을 수행하기 위하여 준비 동작을 처음부터 다시 수행해야 한다. 이 과정에서 발생하는 레이턴시 또는 페널티는 인공신경망 데이터 오퍼레이션의 속도를 저하시키는 요인이 될 수 있다. 본 발명의 데이터 관리 장치(210)는 프로세서(260)로부터 읽기 요청이 중단된 후 재개될 때에 미리 준비된 다음 읽기 요청의 데이터를 신속하게 프로세서(260)로 제공할 수 있으므로, 프로세서(260)가 인지하는 레이턴시 또는 페널티를 0으로 만들거나 최소화할 수 있다. 데이터 관리 장치(210)는 미리 제공된 다음 읽기 요청의 데이터를 프로세서(260)로 전달하는 동안, 메모리(270)가 다음 읽기 요청에 뒤따르는 순차적인 읽기 요청에 대응할 수 있도록 메모리(270)에게 순차적인 읽기 요청을 전달할 수 있으므로, 메모리(270)는 레이턴시 또는 페널티 없이 이후의 메모리 동작을 수행할 수 있다. 제1 인공신경망 데이터 오퍼레이션 요청(A)이 수신된 상태에서 내부 컨트롤러(220)는 제1 인공신경망 데이터 오퍼레이션(A)이 차질없이 수행되도록 메모리(270)에게 전달할 뿐 아니라 제1 인공신경망 데이터 오퍼레이션(A)에 뒤따르는 제2 인공신경망 데이터 오퍼레이션 요청(B')을 예측하고, 예측된 제2 인공신경망 데이터 오퍼레이션 요청(B')을 메모리(270)에 전달하여 제2 인공신경망 데이터 오퍼레이션 요청(B')의 결과 데이터를 메모리(270)로부터 미리 수신할 수 있다.
향후 프로세서(260)로부터 제1 인공신경망 데이터 오퍼레이션 요청(A)에 실제로 뒤따르는 제3 인공신경망 데이터 오퍼레이션 요청(B)을 수신한 경우, 제3 인공신경망 데이터 오퍼레이션 요청(B)과 예측된 제2 인공신경망 데이터 오퍼레이션 요청(B')이 동일한 경우에 데이터 관리 장치(210)는 메모리(270)로부터 미리 수신된 제2 인공신경망 데이터 오퍼레이션 요청(B')의 결과 데이터를 프로세서(260)로 전달함으로써 레이턴시 또는 페널티를 최소화할 수 있다. 내부 컨트롤러(220)는 실제로 수신된 제3 인공신경망 데이터 오퍼레이션 요청(B)에 기반하여 다음에 뒤따를 제4 인공신경망 데이터 오퍼레이션 요청(C')을 예측하고, 제4 인공신경망 데이터 오퍼레이션 요청(C')을 메모리(270)에 전달하여 메모리(270)로부터 제4 인공신경망 데이터 오퍼레이션 요청(C')의 결과 데이터를 미리 수신할 수 있다.
만일 제1 인공신경망 데이터 오퍼레이션 요청(A) 이후 인공신경망 오퍼레이션 요청과 관련된 데이터 요청이 중단되거나 지연되고, 통상의 시간보다 긴 시간이 경과한 후에 제3 인공신경망 데이터 오퍼레이션 요청(B)이 재개된 경우에도, 본 발명의 데이터 관리 장치(210)는 미리 준비된 제2 인공신경망 데이터 오퍼레이션 요청(B')의 결과 데이터를 프로세서(260)로 전달함으로써 레이턴시 또는 페널티를 최소화할 수 있다. 또한 내부 컨트롤러(220)는 실제로 수신된 제3 인공신경망 데이터 오퍼레이션 요청(B)에 기반하여 다음에 뒤따를 제4 인공신경망 데이터 오퍼레이션 요청(C')을 예측하고, 제4 인공신경망 데이터 오퍼레이션 요청(C')을 메모리(270)에 전달하여 메모리(270)로부터 제4 인공신경망 데이터 오퍼레이션 요청(C')의 결과 데이터를 미리 수신함으로써 메모리(270)가 신속하게 다음 데이터 오퍼레이션을 수행할 수 있는 상태로 제어할 수 있다. 이로써 재개된 데이터 오퍼레이션은 레이턴시 또는 페널티 없이 신속하게 진행될 수 있다.
내부 컨트롤러(220)의 Check Legitimate Access 서브 모듈은 적어도 하나 이상의 프로세서(260)로부터 제1 인공신경망 데이터 오퍼레이션 요청(A)에 뒤따르는 제3 인공신경망 데이터 오퍼레이션 요청(B)을 실제로 수신한 경우, 제3 인공신경망 데이터 오퍼레이션 요청(B)의 데이터가 적어도 하나 이상의 메모리(270) 내에 저장되는 제3 주소 정보가 내부 컨트롤러(220)에서 다음 주소 정보로서 미리 생성된/예측된 제2 인공신경망 데이터 오퍼레이션 요청(B')의 주소 정보와 일치하는 지 체크할 수 있다.
이때 제3 주소 정보가 내부 컨트롤러(220)에서 다음 주소 정보로서 미리 생성된/예측된 제2 인공신경망 데이터 오퍼레이션 요청(B')의 주소 정보와 일치하지 않는 경우, 메모리 측 인터페이스 회로(250)는 제3 주소 정보를 포함하는 제3 메모리 데이터 오퍼레이션 요청(B)을 적어도 하나 이상의 메모리(270)로 전송할 수 있고, 내부 컨트롤러(220)는 제1 인공신경망 데이터 오퍼레이션 요청(A)의 제1 주소 정보 다음에는 제3 인공신경망 데이터 오퍼레이션 요청(B)의 제3 주소 정보가 뒤따르도록 데이터-주소 순서 정보를 업데이트하여 내부 메모리인 데이터 오더 메모리(230)에 저장할 수 있다.
이처럼 프로세서(260)가 예상치 않은 순서대로 읽기 액세스한 경우, 데이터 관리 장치(210)는 제3 인공신경망 데이터 오퍼레이션 요청(B)의 데이터를 미리 준비하지 못했기 때문에 메모리(270)의 동작이 임의의 단일 읽기 액세스로 취급되어 물리적으로 Latency 페널티를 피할 수 없다. 즉, 예측이 틀린 경우에는 한번은 Latency 페널티가 발생한다. 데이터 오더 메모리(230)에 업데이트된 데이터-주소 순서 정보가 저장된 이후에는, 동일한 패턴으로 프로세서(260)가 읽기 액세스하는 경우에 제1 인공신경망 데이터 오퍼레이션 요청(A)에 뒤따르는 다음 데이터 오퍼레이션은 제3 인공신경망 데이터 오퍼레이션 요청(B)으로 정확히 예측하여 페널티를 최소화할 수 있다.
내부 컨트롤러(220)의 다음 주소 예측이 틀리는 경우로는, 실제로 연산에 오류가 있는 경우도 있을 수 있으나, 프로세서(260)가 네트워크 구조 상 다른 노드로 점프하는 경우 등이 해당된다. 예를 들어 프로세서(260)가 인공신경망의 레이어의 일부 또는 노드의 일부를 삭제/생략하는 경우가 있을 수 있다. 이처럼 인공신경망이 적응적으로 변형되는 경우에는 처음 1회에는 물리적인 레이턴시 페널티를 피할 수 없으나, 이 과정을 데이터 오더 메모리(230)에 업데이트된 데이터-주소 순서 정보로서 저장함으로써 향후에는 변경된 구성에 따라 레이턴시 페널티 없이 다음 데이터를 미리 준비할 수 있다.
또한 인공신경망 오퍼레이션의 쓰기 요청에 따라 데이터-주소 순서 정보가 초기화된 상태에서, 쓰기 요청 때와 다른 순서로 읽기 요청이 이루어질 때에도 최초에는 내부 컨트롤러(220)의 다음 주소 예측이 틀릴 수도 있다. 그러나 내부 컨트롤러(220)가 쓰기 요청 때의 데이터-주소 순서 정보와 읽기 요청 때의 데이터-주소 순서 정보를 구분하여 생성하고, 이를 데이터 오더 메모리(230)에 저장함으로써 향후에는 레이턴시 페널티 없이 다음 데이터를 미리 준비할 수 있다.
제3 주소 정보가 내부 컨트롤러(220)에서 다음 주소 정보로서 미리 생성된/예측된 제2 인공신경망 데이터 오퍼레이션 요청(B')의 주소 정보와 일치하지 않는 경우, 내부 컨트롤러(220)는 제3 인공신경망 데이터 오퍼레이션 요청(B) 및 제1 인공신경망 데이터 오퍼레이션 요청(A)의 채널 코드/식별 코드가 미리 저장된 데이터-주소 순서 정보와 관련된 채널 코드/식별 코드와 동일한 지를 비교한다. 이때 제2 인공신경망 데이터 오퍼레이션 요청(B')이 기반한 이전 채널 코드/식별 코드와 현재 제3 인공신경망 데이터 오퍼레이션 요청(B) 및 제1 인공신경망 데이터 오퍼레이션 요청(A)의 채널 코드/식별 코드가 동일하면, 데이터-주소 순서 정보의 연산 자체에 오류가 있거나, 프로세서(260)가 인공신경망을 동적 변경하는 경우로 볼 수 있고, 기존의 데이터-주소 순서 정보를 업데이트한다. 만일 제2 인공신경망 데이터 오퍼레이션 요청(B')이 기반한 이전 채널 코드/식별 코드와 현재 제3 인공신경망 데이터 오퍼레이션 요청(B) 및 제1 인공신경망 데이터 오퍼레이션 요청(A)의 채널 코드/식별 코드가 동일하지 않으면, 인공신경망 오퍼레이션의 종류에 따라 데이터-주소 순서 정보가 달리 적용되는 경우로도 해석할 수 있으므로 새로운 데이터-주소 순서 정보를 생성하고, 현재 제3 인공신경망 데이터 오퍼레이션 요청(B) 및 제1 인공신경망 데이터 오퍼레이션 요청(A)의 채널 코드/식별 코드를 새로운 데이터-주소 순서 정보와 관련된 정보로서 데이터 오더 메모리(230)에 저장할 수 있다.
예를 들어 쓰기 요청일 때에는 제1 종류의 순서로 데이터를 쓰지만, 읽기 요청일 때에는 제2 종류의 순서로 데이터를 읽을 수도 있고, 학습 과정에서는 쓰기 요청과 읽기 요청의 순서가 동일하지만 추론(inference) 과정에서는 쓰기 요청과 읽기 요청의 순서가 달라질 수 있으며, 그 반대일 경우(추론 과정에서는 동일, 학습 과정에서는 상이)도 있을 수 있다. 또한 데이터 도메인에 따라서, 입력 데이터는 읽기/쓰기 시의 순서가 동일하지만 가중치 데이터나 액티베이션 파라미터는 상황에 따라서 데이터에 액세스하는 순서가 달라질 수도 있으므로, 데이터-주소 순서 정보는 채널 코드/식별 코드와 연계하여 구분되어 생성되고, 데이터 오더 메모리(230)에 저장될 수 있다. 채널 코드/식별 코드를 포함하는 환경/상태 정보에 기반하여 적응적으로 조정되는 데이터-주소 순서 정보를 편의상 적응 순서 정보라 표현하기로 한다.
내부 컨트롤러(220)는 내부 메모리인 데이터 오더 메모리(230)에 저장된 데이터-주소 순서 정보를 이용하는 경우에, 인공신경망 오퍼레이션에 관련된 인공신경망의 구조-특성 정보, 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청인지 쓰기 요청인지, 및 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여, 다음 주소 정보를 생성하기 위하여 이용하는 적응 순서 정보를 결정할 수 있다.
적응 순서 정보, 내부 메모리인 데이터 오더 메모리(230)에 저장된 데이터-주소 순서 정보에 기반하여 제2 인공신경망 데이터 오퍼레이션 요청을 예측하고, 다음 주소 정보를 생성할 수 있다. 예를 들어 제1/제2 인공신경망 데이터 오퍼레이션 요청이 액티베이션 파라미터가 생성되어 저장되는 오퍼레이션과 연관될 때에는 Raster Scan 순서에 기반하여 다음 주소 정보가 생성될 수 있다. 또는 제1/제2 인공신경망 데이터 오퍼레이션 요청이 다음 계층의 노드들과 연결되는 시냅스의 Weight를 읽는 오퍼레이션과 연관될 때에는 Weight Kernel의 형상에 따라 읽어갈 수 있다. 이처럼 인공신경망 데이터 오퍼레이션 요청의 종류, 연관되는 인공신경망 오퍼레이션에 따라 적응 순서 정보에 기반한 다음 주소 정보가 생성될 수 있다. 또는 액티베이션 파라미터가 생성되어 저장될 때에는 Raster Scan 순서에 기반하여 저장되고, 다음 층에서 액티베이션 파라미터를 읽어들일 때에는 Weight Kernel의 형상에 기반한 순서대로 읽어들일 수도 있다. 본 발명은 읽기 순서와 쓰기 순서가 다른 경우에도 액세스 주소를 수정하는 약간의 수식을 추가하여 읽기 순서를 예측하는 것이 가능하다. 따라서 이러한 경우에도 여전히 메모리 Bandwidth 극대화 및 Latency 최소화 또는 제거가 가능하다.
내부 컨트롤러(220)는 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보 및 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청인지 쓰기 요청인지에 기반하여, 상기 제1 인공신경망 데이터 오퍼레이션 요청이 주소를 포함하지 않는 경우에도 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보를 이용하여 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리에 저장될 현재의 주소 정보를 상기 제1 주소 정보로서 생성할 수 있다. 동일한 채널 코드/식별 코드를 가지는 데이터 오퍼레이션인 경우에, 미리 저장된 데이터-주소 순서 정보가 그대로 적용될 수 있다. 인공신경망의 학습 과정에서 가중치 값은 최초에 데이터가 메모리(270)에 저장된 이후, 학습 과정 내의 계속되는 연산 과정에서 같은 주소에 덮어쓰기(overwritten)될 수 있다. 이 경우 프로세서(260)는 덮어쓰기 시에는 메모리(270) 주소 값을 지정하지 않아도 데이터 관리 장치(210)가 주소 값을 알고 있기 때문에 데이터 오퍼레이션이 진행될 수 있다. 마찬가지로 피쳐맵/액티베이션 파라미터도 학습 과정이나 추론 과정에서 데이터가 메모리(270)에 저장된 이후, 학습/추론 과정 내의 계속되는 연산 과정에서 같은 주소에 덮어쓰기(overwritten)될 수 있으므로 본 발명의 데이터 관리 장치(210)가 이용되는 경우에, 프로세서(260)는 동일한 종류의 오퍼레이션에서는 데이터 오퍼레이션에 주소를 지정하지 않고 데이터 관리 장치(260)로 데이터 오퍼레이션을 전달할 수 있다. 이때 연속되는 동일 종류의 데이터 오퍼레이션의 종료를 명확히 알리기 위하여, 동일 종류의 마지막 데이터 오퍼레이션에 대하여 종료를 나타내는 정보가 프로세서(260)에 의하여 데이터 오퍼레이션 요청에 포함될 수 있다. 동일 종류의 데이터 오퍼레이션에 대하여 주소 정보가 생략된 채로 전송되다가 주소 정보가 포함되면 이 데이터 오퍼레이션이 마지막 데이터 오퍼레이션 요청이거나 마지막 데이터 오퍼레이션 요청이 가까워졌음을 알리는 역할로도 이용될 수 있다. 또는 데이터 관리 장치(220)가 스스로 동일 종류의 데이터 오퍼레이션의 종료를 판단할 수 있도록 인공신경망의 구조에 대한 정보가 데이터 관리 장치(220)에 공유될 수도 있다.
도 2의 내부 컨트롤러(220)에 포함되는 서브 모듈들(Access Data Type Detect, Next Read/Write Address Generator, Check Legitimate Access)은 예시적으로 도시된 것이며, 본 발명의 사상을 본 실시예에 의하여 한정하지 않는다. 도 2의 내부 컨트롤러(220)에 포함되는 서브 모듈들(Access Data Type Detect, Next Read/Write Address Generator, Check Legitimate Access)은 주요한 기능을 도시하기 위한 목적으로 도시된 것이며, 하드웨어로 내부 컨트롤러(220) 내부에 구현되거나 소프트웨어에 의하여 내부 컨트롤러(220)가 해당하는 기능을 실행할 수 있도록 구현될 수 있다.
도 3은 본 발명의 다른 일 실시예에 따른 데이터 관리 장치(310)로서, 고속의 인공신경망 오퍼레이션을 지원하기 위한 데이터 관리 장치(310)를 도시하는 도면이다.
도 3을 참조하면, 적어도 하나 이상의 프로세서(360)가 프로세서 측 인터페이스 회로(340)를 경유하여 데이터 오퍼레이션 요청을 데이터 관리 장치(310)에 전달하고, 데이터 관리 장치(310)가 메모리 측 인터페이스 회로(350)를 경유하여 적어도 하나 이상의 메모리(370)에 메모리 데이터 오퍼레이션을 전달하는 점은 도 2와 동일하며, 데이터 관리 장치(310)가 내부 컨트롤러(320) 및 데이터 오더 메모리(330)를 포함하는 점도 도 2와 동일하므로, 중복되는 설명은 생략한다.
본 발명의 데이터 관리 장치(310)는 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청일 때, 상기 다음 주소 정보에 기반하여 상기 적어도 하나 이상의 메모리(370)로부터 상기 제2 인공신경망 데이터 오퍼레이션 요청일 것으로 예측되는 데이터에 대한 미리 읽기 연산이 실행된 후, 상기 미리 읽기 연산의 결과인 미리 읽기 데이터를 저장하는 읽기 데이터 버퍼 메모리(380)를 더 포함할 수 있다.
내부 컨트롤러(320) 또는 메모리 측 인터페이스 회로(340) 중 적어도 하나는 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리(370)에 전달하여, 상기 적어도 하나 이상의 메모리(370)가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행하도록 상기 적어도 하나 이상의 메모리(370)를 제어하고, 상기 제2 메모리 데이터 오퍼레이션 요청이 읽기 동작인 경우 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 데이터를 상기 적어도 하나 이상의 메모리(370)로부터 수신할 수 있다.
제1 인공신경망 데이터 오퍼레이션 요청(A) 이후 다음 인공신경망 데이터 오퍼레이션 요청이 수신되지 않거나 지연되는 경우에, 내부 컨트롤러(320)는 제1 인공신경망 데이터 오퍼레이션 요청(A)에 기반하여 제2 인공신경망 데이터 오퍼레이션 요청(B')을 예측할 수 있고, 데이터 관리 장치(310)는 제2 인공신경망 데이터 오퍼레이션 요청(B')을 메모리(370)에 전송하여, 제2 인공신경망 데이터 오퍼레이션 요청(B')의 읽기 데이터를 메모리(370)로부터 수신할 수 있다. 메모리(370)로부터 수신된 제2 인공신경망 데이터 오퍼레이션 요청(B')의 읽기 데이터는 읽기 데이터 버퍼 메모리(380)에 저장되고, 향후 프로세서(360)로부터 실제의 다음 데이터 오퍼레이션 요청인 제3 인공신경망 데이터 오퍼레이션 요청(B)이 수신되고 제3 인공신경망 데이터 오퍼레이션 요청(B)과 제2 인공신경망 데이터 오퍼레이션 요청(B')이 동일하면, 미리 읽기 동작에 의하여 데이터 버퍼 메모리(380)에 저장된 제2 인공신경망 데이터 오퍼레이션 요청(B')의 읽기 데이터를 제3 인공신경망 데이터 오퍼레이션 요청(B)에 대한 응답으로 프로세서(360)에 제공할 수 있다.
내부 컨트롤러(320) 또는 메모리 측 인터페이스 회로(340) 중 적어도 하나는 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리(370)에 전달하여, 상기 적어도 하나 이상의 메모리(370)가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행할 수 있는 준비 상태를 유지하도록 상기 적어도 하나 이상의 메모리(370)를 제어할 수 있다. 예를 들어 최초의 연속적인 쓰기 동작 중 메모리(370) 내의 영역이 분산 할당되어 연속적인 쓰기 데이터가 메모리(370) 내의 여러 영역에 분산 저장되고, 분산 저장된 데이터에 대한 동일한 종류의 덮어쓰기 요청이 연속적으로 수신되는 경우를 가정한다. 이때에는 연속적인 쓰기 동작 중에 메모리(370)의 공간을 분산하여 쓰기 데이터가 저장되어야 하므로 프로세서(360)의 쓰기 요청과 실제 메모리(370)의 저장 동작 간의 시간 차이가 발생할 수도 있다. 이때 데이터 관리 장치(310)는 쓰기 데이터 버퍼 메모리(390)를 더 포함할 수 있다. 쓰기 데이터 버퍼 메모리(390)는 프로세서(360)로부터 전달되는 연속적인 쓰기 요청 및 쓰기 데이터를 저장하고, 메모리(370)에 쓰기 데이터를 전달함으로써 프로세서(360)가 인지하는 레이턴시 페널티를 최소화하거나 0으로 줄일 수 있다. 또한 현재 수신된 제1 인공신경망 데이터 오퍼레이션 요청(A)에 기반하여 다음에 수반될 제2 인공신경망 데이터 오퍼레이션 요청(B')을 예측하고, 제2 인공신경망 데이터 오퍼레이션 요청(B')을 메모리(370)에 전달하여 메모리(370)가 제2 인공신경망 데이터 오퍼레이션 요청(B')을 처리할 수 있도록 준비하도록 메모리(370)를 제어할 수 있다. 이때 메모리(370)가 아직 제2 인공신경망 데이터 오퍼레이션 요청(B')을 처리할 준비가 되지 않은 상태에서 프로세서(360)로부터 제2 인공신경망 데이터 오퍼레이션 요청(B')과 동일한 제3 인공신경망 데이터 오퍼레이션 요청(B)이 수신되면, 쓰기 데이터 버퍼 메모리(390)가 제3 인공신경망 데이터 오퍼레이션 요청(B)을 임시로 저장하고 메모리(370)가 제3 인공신경망 데이터 오퍼레이션 요청(B)을 처리할 준비가 완료되면 제3 인공신경망 데이터 오퍼레이션 요청(B)을 메모리(370)에 전송할 수도 있다.
내부 컨트롤러(320)는 쓰기 데이터 버퍼 메모리(390)에 저장된 쓰기 데이터가 메모리(370)에 저장되면 쓰기 데이터 버퍼 메모리(390)에서 해당 쓰기 데이터를 소거할 수 있다. 내부 컨트롤러(320)는 쓰기 데이터 버퍼 메모리(390)에서 빈 공간이 발생한 만큼 프로세서(360)로부터 수신된 다음 쓰기 연산 및 쓰기 데이터를 쓰기 데이터 버퍼 메모리(390)에 저장할 수도 있고, 쓰기 데이터 버퍼 메모리(390)를 경유하지 않고 프로세서(360)로부터 수신된 다음 쓰기 연산 및 쓰기 데이터를 메모리(370)로 직접 전달할 수도 있다.
내부 컨트롤러(320)는 쓰기 데이터 버퍼 메모리(390)의 빈 공간의 비율을 모니터링하여 빈 공간의 비율이 임계치 이상이 되면 인터럽트를 통하여 프로세서(360)에 쓰기 데이터 버퍼 메모리(390)의 빈 공간의 비율이 임계치 이상이 되었음을 알리거나, 프로세서(360)가 쓰기 데이터 버퍼 메모리(390)의 빈 공간의 비율을 체크할 수 있도록 조정할 수 있다.
도 4는 본 발명의 또 다른 일 실시예에 따른 컴퓨팅 시스템(400)에서 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법이 실행되는 경우를 도시하는 도면이다.
도 4에 도시되는 본 발명의 일 실시예에 따른 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템(400)은 적어도 하나 이상의 프로세서, 및 적어도 하나 이상의 메모리를 포함하고, 상기 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템으로서, 상기 적어도 하나 이상의 프로세서에서 실행되는 상기 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 프로세서 측 인터페이스; 상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 메모리 측 인터페이스; 및 데이터-주소 순서 정보를 저장하는 데이터 오더 메모리를 포함한다.
도 4에 도시된 프로세서는 인공신경망 오퍼레이션을 단독으로 또는 협력하여 실행할 수 있는 프로세서이다. 또한 도 4에 도시되지는 않았으나, 컴퓨팅 시스템(400) 외부의 프로세서가 인공신경망 오퍼레이션을 수행하는 데에 이용될 수도 있다.
도 4에 도시된 메모리는 컴퓨팅 시스템(400) 내부의 메모리와 외부의 메모리 중 적어도 하나 이상을 포함할 수 있다. 내부의 메모리 또는 외부의 메모리는 다양한 종래의 메모리 디바이스를 포함할 수 있다. 예를 들어 SRAM, DRAM, E^2PROM, Flash Memory, 또는 NVRAM(비휘발성 RAM)이 컴퓨팅 시스템(400) 내부의 메모리 또는 외부의 메모리로서 포함될 수 있다.
도 4의 컴퓨팅 시스템(400)은 외부 메모리와 연결되는 외부 메모리 인터페이스를 포함할 수 있다. 외부 메모리 인터페이스는 상기 메모리 데이터 오퍼레이션 요청을 상기 컴퓨팅 시스템(400) 외부의 적어도 하나 이상의 외부 메모리로 전송하고, 상기 적어도 하나 이상의 외부 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신할 수 있다.
도 2 또는 도 3의 데이터 관리 장치(210, 310)에 도시된 구성과 기능은 컴퓨팅 시스템(400) 내부에 독립된 데이터 관리 장치(411)의 형태로 구현될 수도 있고, 컴퓨팅 시스템(400) 내부의 다양한 요소에 분산되어 배치될 수도 있다. 메모리의 셀로부터 인공신경망 프로세서 사이에 존재하는 데이터의 이동 경로 상이라면 어디든지 도 2 또는 도 3의 데이터 관리 장치(210, 310)에 도시된 구성과 기능은 컴퓨팅 시스템(400) 내부에 분산되어 배치 가능하다.
하나의 실시예로서, 도 4의 컴퓨팅 시스템(400)은 시스템 버스에 연결되는 독립된 데이터 관리 장치(411)를 포함할 수 있다. 이때 독립된 데이터 관리 장치(411)는 도 2 또는 도 3의 데이터 관리 장치(210, 310)와 동일한 기능을 수행할 수 있다. 본 발명의 변형된 실시예로서, 독립된 데이터 관리 장치(411)는 도 2 또는 도 3의 데이터 관리 장치(210, 310)에 도시된 구성과 기능 중 일부를 포함하고, 나머지 구성과 기능은 시스템 버스 아키텍쳐에 임베디드된 데이터 관리 장치(412), 인공신경망 프로세서 측의 인터페이스로서 구성된 데이터 관리 장치(413), 내부 메모리의 메모리 인터페이스와 시스템 버스 사이의 Wrapper Block 내에 임베디드된 데이터 관리 장치(414), 내부 메모리의 메모리 인터페이스에 임베디드된 데이터 관리 장치(도시되지 않음), 내부 메모리 내에 임베디드된 데이터 관리 장치(415), 외부 메모리에 대응하는 메모리 인터페이스에 임베디드된 데이터 관리 장치(도시되지 않음), 외부 메모리의 메모리 인터페이스와 시스템 버스 사이의 Wrapper Block 내에 임베디드된 데이터 관리 장치(416), 및/또는 외부 메모리 내에 임베디드된 데이터 관리 장치(417)에 분산되어 포함될 수 있다.
본 발명의 다른 실시예로서, 도 4의 컴퓨팅 시스템(400)은 독립된 데이터 관리 장치(411)를 제외하고 나머지 위치에 배치되는 데이터 관리 장치(413, 414, 415, 416, 417)에 의하여 도 2 또는 도 3의 데이터 관리 장치(210, 310)에 도시된 구성과 기능을 구현할 수 있다. 도 2 또는 도 3의 데이터 관리 장치(210, 310)에 도시된 구성과 기능은 시스템 버스 아키텍쳐에 임베디드된 데이터 관리 장치(412), 인공신경망 프로세서 측의 인터페이스로서 구성된 데이터 관리 장치(413), 내부 메모리의 메모리 인터페이스와 시스템 버스 사이의 Wrapper Block 내에 임베디드된 데이터 관리 장치(414), 내부 메모리의 메모리 인터페이스에 임베디드된 데이터 관리 장치(도시되지 않음), 내부 메모리 내에 임베디드된 데이터 관리 장치(415), 외부 메모리에 대응하는 메모리 인터페이스에 임베디드된 데이터 관리 장치(도시되지 않음), 외부 메모리의 메모리 인터페이스와 시스템 버스 사이의 Wrapper Block 내에 임베디드된 데이터 관리 장치(416), 및/또는 외부 메모리 내에 임베디드된 데이터 관리 장치(417)에 분산되어 포함될 수 있다.
도 4의 컴퓨팅 시스템(400)은 독립된 데이터 관리 장치(411), 시스템 버스 아키텍쳐에 임베디드된 데이터 관리 장치(412), 인공신경망 프로세서 측의 인터페이스로서 구성된 데이터 관리 장치(413), 내부 메모리의 메모리 인터페이스와 시스템 버스 사이의 Wrapper Block 내에 임베디드된 데이터 관리 장치(414), 내부 메모리의 메모리 인터페이스에 임베디드된 데이터 관리 장치(도시되지 않음), 내부 메모리 내에 임베디드된 데이터 관리 장치(415), 외부 메모리에 대응하는 메모리 인터페이스에 임베디드된 데이터 관리 장치(도시되지 않음), 외부 메모리의 메모리 인터페이스와 시스템 버스 사이의 Wrapper Block 내에 임베디드된 데이터 관리 장치(416), 및/또는 외부 메모리 내에 임베디드된 데이터 관리 장치(417)에 분산되어 포함된 구성요소에 의하여 도 2 또는 도 3의 데이터 관리 장치(210, 310)의 기능과 동일한 기능을 수행할 수 있다. 단 컴퓨팅 시스템(400)은 내부에 메모리와 프로세서를 포함하므로, 프로세서, 데이터 관리 장치(411~417), 및 메모리 간의 데이터 오퍼레이션이 컴퓨팅 시스템(400) 내에서 시스템 버스를 경유하여 수행될 수 있다는 점이 도 2 또는 도 3의 데이터 관리 장치(210, 310)와 다르다.
컴퓨팅 시스템(400)은 상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하고, 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고, 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보를 상기 데이터-주소 순서 정보로서 생성하고, 상기 프로세서 측 인터페이스가 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 데이터 오더 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성할 수 있다.
컴퓨팅 시스템(400) 내에 분산되어 배치되는 데이터 관리 장치(411 내지 417) 중 적어도 하나는 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리에 전달하여, 상기 적어도 하나 이상의 메모리가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행하도록 상기 적어도 하나 이상의 메모리를 제어하고, 상기 제2 메모리 데이터 오퍼레이션 요청이 읽기 동작인 경우 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 데이터를 상기 적어도 하나 이상의 메모리로부터 수신할 수 있다. 또한 본 발명의 다른 일 실시예에 따른 데이터 관리 장치(도시되지 않음)는 인터페이스, 메모리, 버스 아키텍쳐, 인공신경망 프로세서 내의 버퍼 또는 캐쉬 메모리 블록에 분산되어 배치될 수 있다.
컴퓨팅 시스템(400) 내에 분산되어 배치되는 데이터 관리 장치(411 내지 417) 중 적어도 하나는 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리에 전달하여, 상기 적어도 하나 이상의 메모리가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행할 수 있는 준비 상태를 유지하도록 상기 적어도 하나 이상의 메모리를 제어할 수 있다.
컴퓨팅 시스템(400) 내에 분산되어 배치되는 데이터 관리 장치(411 내지 417) 중 적어도 하나는 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하는 모듈을 포함할 수 있다.
컴퓨팅 시스템(400) 내에 분산되어 배치되는 데이터 관리 장치(411 내지 417) 중 적어도 하나는 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후 상기 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청을 상기 제1 인공신경망 데이터 오퍼레이션에 기반하여 생성하고, 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 메모리 측 인터페이스를 경유하여 상기 적어도 하나 이상의 메모리에 전달하는 모듈을 포함할 수 있다.
컴퓨팅 시스템(400) 내에 분산되어 배치되는 데이터 관리 장치(411 내지 417) 중 적어도 하나는 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청일 때, 상기 다음 주소 정보에 기반하여 상기 적어도 하나 이상의 메모리로부터 상기 제2 인공신경망 데이터 오퍼레이션 요청일 것으로 예측되는 데이터에 대한 미리 읽기 연산이 실행된 후, 상기 미리 읽기 연산의 결과인 미리 읽기 데이터를 저장하는 읽기 데이터 버퍼 메모리(Read Data Buffer Memory, 도시되지 않음)를 더 포함할 수 있다.
연속적인 동일한 종류의 데이터 오퍼레이션 요청(예를 들어, 동일한 도메인의 데이터 덮어쓰기 시)에서 컴퓨팅 시스템(400) 내부 또는 외부의 프로세서로부터 전달되는 데이터 오퍼레이션 요청에 주소 정보가 생략될 수 있음은 앞에서 설명한 바와 같다. 이 경우, 컴퓨팅 시스템(400) 내에 분산되어 배치되는 데이터 관리 장치(411 내지 417) 중 적어도 하나는 연속적인 동일한 종류의 데이터 오퍼레이션 요청에 대한 주소 정보를 생성하여 메모리에 전달할 수 있다. 또한 프로세서 내부의 버퍼 메모리 관련 블록, 시스템 버스, 메모리 인터페이스, 메모리 내부 등의 한 곳 이상에서도 연속적인 동일한 종류의 데이터 오퍼레이션 요청에 대한 주소 정보를 생성할 수 있다. 주소 정보를 생성하는 서브 모듈은 하드웨어 블록 또는 소프트웨어가 임베디드된 블록의 형태로 구현될 수 있다.
도 5는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(500) 내에서 데이터 관리 장치(510)를 경유하여 실행되는 프로세서-메모리 간 데이터 오퍼레이션의 일 예를 도시하는 도면이다.
데이터 관리 장치(510)는 설명의 편의상 하나의 독립된 장치로 도시되었으나, 도 4에서 설명한 것처럼 컴퓨팅 시스템(500) 내부의 프로세서(560), 메모리(570), 시스템 버스 아키텍쳐(도시되지 않음) 등 프로세서(560)와 메모리(570) 간 데이터가 송수신되는 경로 상의 여러 위치에 분산되어 배치될 수 있다.
데이터 관리 장치(510)는 제1 인공신경망 데이터 오퍼레이션 요청(520)을 수신한 후, 제1 주소 정보를 포함하는 제1 메모리 데이터 오퍼레이션 요청(530)을 생성하고 제1 메모리 데이터 오퍼레이션 요청(530)을 메모리(570)에 전달한다. 제1 메모리 데이터 오퍼레이션 요청(530)에 응답하여 메모리(570)는 제1 메모리 데이터(540)를 데이터 관리 장치(510)에 전달하고, 데이터 관리 장치(510)는 제1 인공신경망 데이터 오퍼레이션 요청(520)에 응답하여 제1 메모리 데이터(540)에 기반한 제1 인공신경망 데이터(550)를 프로세서(560)에 제공한다.
도 6은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(600) 내에서 데이터 관리 장치(610)를 경유하여 실행되는 프로세서-메모리 간 데이터 오퍼레이션의 다른 일 예를 도시하는 도면이다.
데이터 관리 장치(610)는 설명의 편의상 하나의 독립된 장치로 도시되었으나, 도 4 및 도 5에서 설명한 것처럼 컴퓨팅 시스템(600) 내부의 프로세서(660), 메모리(670), 시스템 버스 아키텍쳐(도시되지 않음) 등 프로세서(660)와 메모리(670) 간 데이터가 송수신되는 경로 상의 여러 위치에 분산되어 배치될 수 있다.
일반적으로 종래의 CPU 구성에서 prefetch 또는 caching은 시간적 지역성(temporal locality) 또는 공간적 지역성(spatial locality)에 기반하여 실행된다. 하나의 데이터가 요청되었을 때 그 데이터를 포함하는 데이터 블록을 함께 caching하거나(spatial locality), 액세스한 지 긴 시간이 경과한 데이터는 cache에서 축출(evict)하는(temporal locality) 것이 이러한 종래의 caching이다.
본 발명에서는 인공신경망(ANN)에 존재하는 인공신경망 데이터 지역성(ANN data locality)에 기반하여, 프로세서(660)로부터 현재 수신된 데이터 요청에 기반하여 다음 데이터 요청을 예측하는 데이터 관리 장치(610) 및 컴퓨팅 시스템(600)이 도시된다.
인공신경망의 연산에서도 종래의 CPU처럼 데이터의 지역성이 존재하며, 그 특성은 CPU의 데이터 지역성과 다르다. 구체화된 예를 들자면, 인공신경망은 학습의 경우, 학습에 사용하는 입력 데이터를 메모리로부터 순서대로 읽어서 연산하여 내부 가중치 값들을 변경한다. 한번 모든 학습데이터를 사용해서 학습을 마치면 1 Epoch 학습을 마쳤다고 말하며, 보통의 인공신경망 학습은 수 ~ 수백의 Epoch에 걸쳐 반복된다. 그러므로, 학습 시에 입력 데이터는 메모리로부터 같은 순서로 수~수백회 반복하여 읽는다는 데이터 지역성이 존재한다.
가중치의 경우는, 학습 시 메모리에 저장되어 있는 가중치를 순서대로 읽어서 추론 과정의 연산을 한 후에 후처리를 통해 가중치 값을 업데이트하여 순서대로 메모리에 쓰게 된다. 반복되는 학습을 하면서, 가중치 데이터를 같은 순서로 메모리로부터 다시 읽어 들이고, 역시 후처리 후에 변경된 가중치 값을 같은 순서로 메모리에 쓰게 되는 데이터의 지역성이 존재한다. 반면에, 추론 시에는 매 회의 추론 시마다 메모리로부터 동일한 순서로 가중치 값들을 읽어 와서 주어진 인공신경망 알고리즘의 연산을 수행한다. 즉, 추론시에도 매회 추론 동작 마다 가중치 값을 메모리로부터 동일한 순서로 읽어낸다는 데이터 지역성이 존재한다.
특징맵(피쳐맵) 또는 활성화맵(액티베이션 파라미터 맵)은 다층 구조의 인공신경망에서 한 계층에서 나온 출력 데이터이며, 이는 메모리에 일시 저장되고 다음 계층의 연산 시에 입력 특징맵으로 사용된다. 다음 계층의 연산 시에 메모리로부터 입력 특징맵을 읽어 오는 순서는 이전 계층에서 출력된 특징맵 또는 활성화맵 데이터를 처음 메모리에 저장한 순서이다.
특정 인공신경망의 구조, 인공신경망을 처리하는 프로세서의 연산 방식 등에 따라서 데이터를 액세스하는 순서가 상기 기술한 순서와 다를 수도 있다. 하지만, 상기 기술한 데이터의 순서 정보를 기반으로 도식적으로 유추할 수 있고, 그 변경된 액세스 패턴은 해당 인공신경망 구조 및 프로세서 연산 방식 하에서는 일정하다. 그러므로, 이러한 경우에도 명백한 데이터 지역성이 존재한다.
본 발명은 인공신경망 연산에서 명백한 데이터 지역성이 존재함을 제시하고, 이를 이용하여 메모리 대비 월등한 성능을 가지는 프로세서가 인공신경망의 연산을 위해 필요한 데이터를 메모리에 요청할 때 메모리 액세스로 인해 야기되는 지연시간을 최소화 또는 제거할 수 있는 데이터 관리 장치를 제시한다. 제안하는 데이터 관리 장치는 상기 설명된 인공신경망 데이터 지역성에 기반하여 프로세서가 미래 연산에 필요한 데이터를 예측하여 프로세서에 근접한 저장 장치(예를 들어, cache)로 미리 가져와서 프로세서가 해당 데이터를 요구할 때 최소한의 지연 시간을 가지고 데이터를 공급한다. 더불어, 학습 시 업데이트된 가중치 값의 메모리 덮어쓰기와 추론 시 하나의 계층에서 연산되어 출력된 특징맵 데이터를 메모리에 쓰기 연산하는 경우에는 상기 설명된 인공신경망 데이터 지역성에 기반하여 쓰기 주소를 제안된 메모리 관리 장치가 자동 생성하여 프로세서의 동작을 간소화 및 단축할 수 있다.
데이터 관리 장치(510)는 제1 인공신경망 데이터 오퍼레이션 요청(621)을 수신한 후, 제1 주소 정보를 포함하는 제1 메모리 데이터 오퍼레이션 요청(631)을 생성하고 제1 메모리 데이터 오퍼레이션 요청(631)을 메모리(670)에 전달한다. 제1 메모리 데이터 오퍼레이션 요청(631)에 응답하여 메모리(670)는 제1 메모리 데이터(641)를 데이터 관리 장치(610)에 전달하고, 데이터 관리 장치(610)는 제1 인공신경망 데이터 오퍼레이션 요청(621)에 응답하여 제1 메모리 데이터(641)에 기반한 제1 인공신경망 데이터(651)를 프로세서(660)에 제공한다.
데이터 관리 장치(610)는 제1 인공신경망 데이터 오퍼레이션 요청(621)을 수신한 후 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청(632)을 상기 제1 인공신경망 데이터 오퍼레이션(621)에 기반하여 생성하고, 상기 제2 메모리 데이터 오퍼레이션 요청(632)을 상기 메모리(670)에 전달할 수 있다.
제1 인공신경망 데이터 오퍼레이션 요청(621)에 뒤따르는 제2 인공신경망 데이터 오퍼레이션 요청(622)이 프로세서(660)로부터 전달되지 않거나, 지연되는 경우에 데이터 관리 장치(610)는 이미 수신된 제1 인공신경망 데이터 오퍼레이션(621)에 기반하여 인공신경망의 특성, 인공신경망 오퍼레이션의 특성, 인공신경망 데이터 오퍼레이션의 특성을 고려하여 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청(632)을 예측할 수 있다.
예측된 제2 메모리 데이터 오퍼레이션 요청(632)은 예측된 다음 주소 정보와 함께 메모리(670)에 전달되고, 메모리(670)는 예측된 제2 메모리 데이터 오퍼레이션 요청(632)에 응답하여 제2 메모리 데이터(642)를 데이터 관리 장치(610)에 전달하고, 데이터 관리 장치(610)는 제2 메모리 데이터(642)를 내부의 읽기 데이터 버퍼 메모리에 임시 저장할 수 있다.
이후 프로세서(660)로부터 소정의 시간이 경과하거나 장애 요인이 해소되어 제1 인공신경망 데이터 오퍼레이션 요청(621)에 실제로 뒤따르는 제3 인공신경망 데이터 오퍼레이션 요청(622)이 전송된 경우, 데이터 관리 장치(610)는 실제로 수신된 제3 인공신경망 데이터 오퍼레이션 요청(622)과 예측된 제2 메모리 데이터 오퍼레이션 요청(632)이 대응하는 지 여부를 검증한다. 실제로 수신된 제3 인공신경망 데이터 오퍼레이션 요청(622)과 예측된 제2 메모리 데이터 오퍼레이션 요청(632)이 오류 없이 대응하는 것이 확인되면, 데이터 관리 장치(610)는 제3 인공신경망 데이터 오퍼레이션 요청(622)에 응답하여 제2 메모리 데이터(642)를 제3 인공신경망 데이터(652)로서 프로세서(660)에 제공한다.
일반적인 메모리는 임의의 단일 메모리 읽기에 여러 클럭 사이클 이상의 Latency를 가지게 된다. 이로 인해 프로세서는 필요한 데이터가 제공될 때까지 IDLE 상태가 되어 실제 연산을 할 수 없다. 이는 본 발명의 메모리(660) 및 프로세서(670)에 대해서도 동일하게 적용되는 한계이다.
인공신경망에서 사용되는 각 데이터 군이 메모리(670)에 쓰여진 후, 학습 및 추론을 위해 프로세서(660)가 해당 데이터 군의 데이터를 읽는 순서는 일반적으로 해당 데이터 군의 데이터 군들이 메모리(670)에 최초에 쓰여지는 순서대로 따르거나, 메모리(670)에 최초로 쓰여지는 순서에 기반하여 결정되거나, 이전에 메모리(670)에 쓰여지는 순서에 기반하여 결정된다.
시스템(600) 또는 프로세서(660)가 인공신경망을 위한 특정 데이터 군(예: 학습용 입력 데이터, 가중치, 액티베이션 파라미터)에 포함되어 있는 어떤 한 데이터를 액세스 하면 그 후에는 데이터 관리 장치(610)는 해당 데이터 군의 어떤 데이터를 프로세서(660) 또는 시스템(600)이 액세스 요구할 것인지 예측할 수 있다.
프로세서(660)가 연속적인 인공신경망 데이터 오퍼레이션을 중단한 후 일정 시간 경과 후에 인공신경망 데이터 오퍼레이션을 재개하는 경우에, 재개되는 데이터 오퍼레이션 요청의 첫번째 데이터는 종래 기술에 따르면 임의의 단일 메모리 읽기 동작으로 처리되어 물리적인 Latency를 피할 수 없다. 이때 본 발명의 데이터 관리 장치(610) 내에 포함되는 읽기 데이터 버퍼 메모리(Latency 없이 바로 데이터를 내줄 수 있는 고속 저장 장치)가 임의의 단일 메모리 읽기 동작이 일으키는 Latency 기간 만큼의 주기 동안 계속 데이터를 내줄 수 있는 만큼의 양의 데이터를 미리 읽기 연산에 의하여 미리 저장하고 있으면, 임의의 메모리 읽기 동작에 대한 Latency 없이 바로 프로세서(660)에 데이터를 제공함으로써 프로세서(660)는 지연 시간 없이 연산을 바로 수행 할 수 있어 전체적인 연산 성능을 증가시킬 수 있다.
데이터 관리 장치(610)가 이미 수신된 제1 인공신경망 데이터 오퍼레이션 요청(621)에 기반하여 다음에 일어날 제2 메모리 데이터 오퍼레이션 요청(632)을 예측하는 과정은 제1 인공신경망 데이터 오퍼레이션 요청(621)이 포함하는 인공신경망 오퍼레이션에 대한 정보(채널 코드/식별 코드), 및 이전에 연속적인 쓰기 연산 시에 진행된 메모리(670) 상의 순차적인 주소 매핑 과정을 고려하여 결정되며, 또한 인공신경망 오퍼레이션이 가지는 메모리 데이터 액세스 패턴에 대한 정보를 이용하여 수행된다.
프로세서(660)가 인공신경망의 학습 또는 추론 연산을 시작할 때, 각 데이터 군의 데이터를 읽기를 시작하게 되고, 인공신경망의 각 계층의 노드 값들이 출력되면서 연산을 마무리하기까지 전 연산 과정 사이에, 데이터 읽기를 간헐적으로 중단/재개를 빈번하게 반복할 수 있다. 읽기 중단 후 읽기를 재개하면 재개되는 처음 액세스는 임의의 단일 액세스가 되어 종래 기술에서는 큰 Latency를 피할 수 없음은 앞에서 언급한 바와 같다.
프로세서(660)가 데이터 읽기를 지속하다 어떤 이유에서든지 다음 필요 데이터의 읽기 동작이 잠시 중단된 경우에, 본 발명의 데이터 관리 장치(610) 및 컴퓨팅 시스템(600)은 다음 필요 데이터로 예측되는 데이터를 미리 메모리(670)로부터 읽어들이고, 내부의 읽기 데이터 버퍼 메모리(도시되지 않음)에 저장한다. 이때 읽기 데이터 버퍼 메모리에 미리 저장된 데이터들은 프로세서(660)의 읽기 동작 중단 이후 재개 시 야기되는 Latency 기간 동안 메모리(670)를 대신해서 프로세서(660)에 데이터를 공급할 수 있다. 동시에 컴퓨팅 시스템(600) 또는 데이터 관리 장치(610)는 메모리(670)로 액세스하여 읽기 데이터 버퍼 메모리에 있는 데이터의 다음에 뒤따를 것으로 예측되는 데이터를 미리 읽어서 프로세서(660)로 공급된 데이터가 소거된 자리를 채워 놓는다. 프로세서(660) 입장에서는 데이터의 물리적 지연 시간(propagation delay)를 제외하면 메모리(670)가 읽기 동작 시 Latency 0으로 동작하는 것으로 인식된다.
읽기 데이터 버퍼의 Depth는 메모리(670)에 주소를 준 시점으로부터 실제 데이터가 메모리(670)로부터 출력되는 데에 소요되는 number of clock cycles로 할 수도 있다. 실시예에 따라서는 인공신경망 모델, 연산 프로세서(660), 메모리(670)의 타입 등에 따라 최적의 Depth는 달라질 수 있다. 버퍼 Depth가 크면 연산 성능을 올리는 데에는 이득이 되지만, Latency 0나 고속 동작의 버퍼 메모리는 단일 메모리 셀 기준 대용량 DDR/SRAM/FLASH 메모리 보다 더 많은 하드웨어 비용, 높은 전력 소모를 요하게 된다. 따라서 Pre-Fetch 버퍼의 Depth를 증가시키는 Trade-off가 있을 수 있다. 프로세서(660)의 연산 성능, 데이터 타이밍, 메모리(670)의 Latency, 동작 특성, 및 연산 대상인 인공신경망 모델의 특성 등에 따라서 성능 최대치를 낼 수 있는 읽기 데이터 버퍼 메모리의 Depth는 달라질 수 있다.
컴퓨팅 시스템(600) 또는 프로세서(660)가 연속적인 데이터 읽기를 중단했다가 그전 읽었던 데이터의 다음 데이터 읽기를 재개하면, 데이터 관리 장치(610) 또는 컴퓨팅 시스템(600)은 버퍼에 저장된 데이터를 제공함으로써 컴퓨팅 시스템(600) 또는 프로세서(660)는 메모리(670)가 Latency 0으로 동작하는 것과 같이 인식하는 효과가 있다. 한편 그 동안 데이터 관리 장치(610) 또는 컴퓨팅 시스템(600)은 버퍼에 저장된 마지막 데이터의 다음 데이터를 읽기 위해 메모리(670)에 액세스하여 메모리(670) 고유의 Latency 후에 데이터를 받아 버퍼에 저장하거나 또는 프로세서(660)에 즉시 전달할 수 있다.
한편 프로세서(660)와 메모리(670) 간의 인공신경망 데이터 오퍼레이션이 중단되는 동작의 이유로는 다음과 같은 것들을 들 수 있다.
1) 프로세서(660)와 메모리(670) 간에 아무런 동작도 이루어지지 않는 경우,
2) 프로세서(660) - 메모리(670) 간에 인공신경망에 관련된 데이터가 아닌 다른 데이터에 대한 오퍼레이션이 이루어지는 경우,
3) 프로세서(660) - 해당 메모리(670) 간의 오퍼레이션은 아무런 동작도 이루어지지 않지만, 프로세서(660)가 다른 메모리와 데이터 오퍼레이션을 수행하는 경우, 예를 들어 해당 메모리(660)에는 가중치 데이터가 저장되고 다른 메모리에는 액티베이션 파라미터 또는 피쳐맵 데이터가 저장되는 경우에 프로세서(660)는 해당 메모리(670)와 다른 메모리 간을 교번하여 데이터 액세스를 수행할 수도 있다. 또 다른 예로는, 프로세서(660)가 다른 메모리와 인공신경망에 관련된 데이터가 아닌 다른 데이터에 대한 오퍼레이션을 수행하는 동안 해당 메모리(670)에 액세스하지 않을 수도 있다.
4) 프로세서(660)가 인공신경망 처리 연산을 하는 데에 필요한 모든 데이터를 가지고 있고, 필요한 연산을 수행하느라 한동안 데이터를 필요로 하지 않는 경우 등이 연속적인 메모리 액세스를 중단할 수 있는 원인으로 고려될 수 있다.
한편 본 발명의 컴퓨팅 시스템(600) 또는 데이터 관리 장치(610)는 내부에 포함되는 데이터 오더 메모리(도시되지 않음)에 데이터가 저장된 순서, 및 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청(621)에 관련된 제1 인공신경망 오퍼레이션이 완결된 상태인지 여부를 판정하고, 상기 제1 인공신경망 오퍼레이션이 완결되지 않은 상태이면 본 발명의 동작을 수행하고, 제1 인공신경망 오퍼레이션이 완결된 상태이면, 경우에 따라서 본 발명의 동작을 생략할 수도 있다.
본 발명의 일 실시예에 따른 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법은 적어도 하나 이상의 프로세서(660), 및 적어도 하나 이상의 메모리(670)를 포함하고, 상기 적어도 하나 이상의 프로세서(670)에서 실행되는 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템(600)에서 실행되는 방법으로서, 상기 적어도 하나 이상의 프로세서(660)에서 실행되는 상기 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 단계; 상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리(670)로 전송하고, 상기 적어도 하나 이상의 메모리(670)로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 단계; 및 상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 단계를 포함한다.
도 7은 본 발명의 일 실시예에 따른 데이터 관리 방법의 일부 과정을 도시하는 동작 흐름도이다.
본 발명의 데이터 관리 방법의 일부인 인공신경망 데이터 오퍼레이션 요청에 기반하여 메모리 데이터 오퍼레이션 요청을 생성하는 단계는, 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하는 단계(S710); 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보를 상기 데이터-주소 순서 정보로서 생성하는 단계(S720)); 상기 데이터-주소 순서 정보를 상기 컴퓨팅 시스템 내부의 데이터 오더 메모리에 저장하는 단계(S730)를 포함할 수 있다.
도 8은 본 발명의 일 실시예에 따른 데이터 관리 방법의 일부 과정을 도시하는 동작 흐름도이다.
본 발명의 데이터 관리 방법의 일부인 인공신경망 데이터 오퍼레이션 요청에 기반하여 메모리 데이터 오퍼레이션 요청을 생성하는 단계는, 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때(S810), 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 상기 데이터 오더 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성하는 단계(S820)를 포함할 수 있다.
도 9는 본 발명의 일 실시예에 따른 데이터 관리 방법의 일부 과정을 도시하는 동작 흐름도이다.
본 발명의 데이터 관리 방법의 일부인 인공신경망 데이터 오퍼레이션 요청에 기반하여 메모리 데이터 오퍼레이션 요청을 생성하는 단계는, 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후(S910), 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하는 단계(S920); 및 상기 제1 주소 정보, 및 상기 데이터-주소 순서 정보에 기반하여 상기 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 예측하는 단계(S930)를 포함할 수 있다.
도 10은 본 발명의 일 실시예에 따른 데이터-주소 순서 정보를 표현하는 도면이다.
도 10은 인공신경망 연산을 위하여 완전히 Dedicated 된 메모리를 사용하는 경우의 데이터-주소 순서 정보의 일 실시예가 도시된다.
도 10을 참조하면, 주어진 메모리가 인공신경망 오퍼레이션만을 위하여 사용되는 실시예이므로, 주어진 메모리의 주소 공간은 입력 데이터, 가중치(Weight), 피쳐맵(Feature Map) 각각을 위하여 메모리 영역이 명확히 할당/분할된다. 따라서 데이터 오더 메모리는 각 데이터 군을 위한 메모리 영역의 시작 주소, 끝 주소를 저장하고, 현재까지 진행된 연속 읽기의 주소에 기반하여 다음 읽기를 위한 메모리 주소를 저장함으로써 시스템/프로세서로부터 요구되는 인공신경망을 위한 데이터 오퍼레이션의 다음 오퍼레이션을 예측하고 대응할 수 있다.
도 10의 시스템 어드레스 맵은 개념적으로 입력 데이터, 가중치, 피쳐맵이 메모리 내에서 구분된 영역에 할당되어 있음을 나타낸다.
이때 데이터 오더 메모리에 저장된 입력 데이터의 끝 주소인 Ox1000000은 실제 입력 데이터의 마지막 주소에 1이 가산된 값으로 표기될 수 있다. 마찬가지로 가중치 데이터의 마지막 주소 또한 1이 가산된 값인 Ox2000000으로 데이터 오더 메모리에 저장될 수 있다.
도 11은 본 발명의 다른 일 실시예에 따른 데이터-주소 순서 정보를 표현하는 도면이다.
도 11은 메모리의 주소 공간 내에서 인공신경망 오퍼레이션을 위한 리니어한 큰 메모리 영역을 각 용도 별로 할당받은 실시예를 도시한다.
시스템은 하나의 메모리를 인공신경망 외에도 다중의 시스템 Task를 위하여 사용할 수 있다. 이때 도 11은 인공신경망 오퍼레이션을 위한 각각의 데이터 도메인이 용도 별로 명확히 할당되는 경우를 도시한다.
시스템 어드레스 맵은 메모리의 전체 주소 공간 내에 명확히 구분되는 입력 데이터 영역, 가중치 영역, 피쳐맵 영역을 도시한다. 이에 대응하여 데이터 오더 메모리는 각 데이터 도메인을 위한 시작 주소, 끝 주소를 저장하고, 현재까지 진행된 연속 읽기의 주소에 기반하여 다음 읽기를 위한 메모리 주소를 저장하는 것으로 충분히 역할을 수행할 수 있다.
도 12는 본 발명의 또 다른 일 실시예에 따른 데이터-주소 순서 정보를 표현하는 도면이다.
도 12는 각 데이터 도메인을 위하여 파편화된(fragmented) 메모리 영역들이 할당된 실시예를 도시한다.
운영 체제(OS, Operating System)를 가지는 시스템은 메모리를 사용하는 다양한 이종의 Task를 필요로 하고 이들 Task 각각은 메모리를 사용하면서 미할당된 메모리의 영역은 파편화된다(fragmented). 메모리 영역을 동적으로 할당받고 사용 후에는 릴리즈하는 동안 메모리 파편/조각들이 형성된다. 이러한 상황에서 인공신경망 오퍼레이션을 위한 큰 사이즈의 단일 메모리 영역을 할당받는 것은 매우 어려운 일이다. 이때에는 파편화된 메모리 영역들을 할당받아 인공신경망 프로세싱을 할 필요가 있다. 데이터 오더 메모리는 이러한 파편화된 메모리 영역들 간의 연결관계를 저장한다. 즉, 데이터-주소 순서 정보는 파편화된 메모리 영역들이 하나의 데이터 도메인을 위하여 어떻게 연결되는지에 대한 정보를 포함한다.
시스템 어드레스 맵은 하나의 메모리 주소 공간 내에서 파편화된 메모리 영역이 하나의 데이터 도메인을 위하여 사용되는 경우를 표현한다. 시스템 어드레스 맵에서 백색으로 표현된 영역이 입력 데이터에 할당된 메모리 영역이다. 도 12의 시스템 어드레스 맵은 입력 데이터를 예시적으로 설명하고 있으나, 가중치 데이터인 경우 또는 피쳐맵 데이터인 경우에도 본 발명이 구현되는 방식은 유사하다.
데이터-주소 순서 정보는 먼저 파편화된 각각의 메모리 영역들의 시작 주소와 끝 주소를 저장하는 데에서 시작된다. 이때 현재까지 연속적으로 진행된 읽기 연산의 주소에 기반하여 다음의 읽기 연산의 주소를 예측할 수 있다. 현재 읽기 연산의 주소가 파편화된 메모리 영역들 중 어느 하나의 마지막 주소에 도달하면, 다음 연산을 위하여 다음 파편화된 메모리 영역들에 대한 액세스를 미리 준비한다.
본 발명의 다른 실시예들에 따른 데이터 오더 메모리에 시작 주소와 끝 주소가 저장되는 방식을 다음과 같이 설명한다.
첫번째 방식은 프로세서가 초기에 스스로 인공신경망 네트워크 정보를 알고, 프로세서가 할당받은 메모리 영역에 대한 정보를 알고 있을 때, 프로세서가 데이터 오더 메모리를 SFR(Special Function Register)처럼 액세스하여 시작 주소와 끝 주소를 직접 기록할 수 있다.
두번째 방식은 프로세서가 각 채널(데이터 도메인, 인공신경망의 데이터의 종류를 의미)에 처음 데이터를 저장할 때 데이터 오더 메모리는 프로세서의 해당 데이터 군의 데이터를 최초로 저장할 때를 첫번째 시작 주소로 기록할 수 있다. 프로세서가 해당 데이터 군의 데이터를 저장할 때 지속적으로 모니터링하여 쓰기 주소가 단순한 워드 증가일 때에는(예를 들어, 32비트 시스템에서 4씩 주소가 증가하는 경우) 특별한 조치를 취하지 않지만 단순한 워드 증가가 아닌 경우 단순 증가가 종료된 주소 값을 하나의 메모리 영역의 끝 주소로 기록하고, 다음 엔트리의 시작 주소에 단순 증가가 아닌 점프된 주소 값을 기록한다. 이후에 다시 단순한 워드 증가인지 여부에 대한 모니터링이 계속되고, 마지막 데이터를 쓰기 연산할 때 해당 주소를 마지막으로 기록한 시작 주소 엔트리의 끝 주소에 기록하고, 데이터 오더 메모리에 저장된 데이터-주소 순서 정보가 완성된다.
도 13은 본 발명의 복수의 실시예들에 따른 채널 정보/식별 정보를 표현하는 방법을 도시하는 도면이다.
인공신경망 오퍼레이션에서는 쓰기와 읽기 액세스 각각에 대해서 모두 정확하게 데이터 도메인/데이터 군을 표현해야 한다. 도 13에서는 프로세서와 데이터 관리 장치가 데이터 군에 대한 정보를 공유하는 과정을 다음의 3가지 실시예를 이용하여 표현한다.
(1) Data Group Flag: 특정의 인터페이스 I/O 신호를 사용하여 매 액세스 마다 액세스 데이터 군을 표현할 수 있다.
(2) Address: Address 영역에서 채널을 분류하는 실시예가 있을 수 있다.
(3) Register Access: 프로세서가 SFR(Special Function Register)에 채널에 대한 정보를 기록하는 실시예가 있을 수 있다.
(1) Data Group Flag 실시예에서는 예를 들어 2비트의 신호를 프로세서와의 I/F에 추가할 수 있다. 이때 특수한 신호가 00이면 ANN 데이터 이외의 데이터 액세스를 나타내는 코드이고, 01이면 해당 데이터 군이 Input Data에 속함을 나타내는 코드이고, 10이면 Weight Data임을 나타내는 코드이고, 11이면 Feature Map Data임을 나타내는 코드일 수 있다.
(2) Address 실시예에서는 프로세서 측에서 주소를 보낼 때에 액세스할 메모리 영역을 달리하여 액세스하는 실시예가 가능하다. 이 실시예는 도 14를 통하여 상세히 설명한다.
도 14는 본 발명의 일 실시예에 따른 채널 정보/식별 정보와 데이터-주소 순서 정보가 연관된 경우를 도시하는 도면이다.
도 14를 참조하면, 시스템 어드레스 맵 상에서 데이터 군 별로 메모리 영역이 할당되는 과정이 도시된다. MEMORY_SIZE는 각 데이터 군의 메모리 영역의 크기이다.
프로세서는 메모리가 가지는 메모리 영역을 여러 배수로 시스템 어드레스 맵에 할당하고, 각 영역은 특정 데이터 군을 표현한다. 예를 들어, Channel 1은 non-ANN data일 수 있다. Channel 2는 입력 학습 데이터, Channel 3은 Weight data, Channel 4는 Feature Map data일 수 있다.
도 14에 도시된 실시예에서는 데이터 관리 장치는 어드레스의 MSB(Most Significant Bit)를 확인함으로써 이 액세스가 어떤 Channel에 대한 액세스인지 판별할 수 있다.
본 발명의 실시예에 따라서는 메모리 영역 내의 주소로서 MSB를 제외한 동일한 n번 주소에는 하나의 데이터 군만 저장할 수 있도록 구현할 수도 있다. 이 경우는 서로 다른 데이터 군 간의 혼동을 방지하기 위한 방법이다.
예를 들어, Base Address(Offset) + Memory_Size + n 번지에 어떤 데이터가 저장된 경우에 Base Address(Offset) + Channel x Memory_Size + n 번지에는 다른 데이터를 저장하지 않도록 조정하는 방식이다.
다시 도 13을 참조하여 (3) Register Access 실시예를 설명한다.
데이터 관리 장치 내에 현재 액세스하는 데이터 군을 표현할 수 있는 레지스터를 형성하고, 이를 시스템 메모리 맵에 하나의 주소 값으로 할당한다. 프로세서는 하나의 데이터 군의 데이터 액세스를 하기에 앞서서 먼저 이 레지스터에 데이터 군 표현 값을 써 넣는다. 이러한 방식으로 프로세서와 데이터 관리 장치 사이에 데이터 군 또는 채널 정보를 공유할 수 있다.
도 13의 실시예에서는 4개의 채널이 존재하는 것으로 설명하였는데, 이는 하나의 실시예일 뿐 발명의 사상은 이에 국한되지 않는다. 4개의 채널의 경우, 채널 코드가 00인 경우 Channel 1, 01인 경우 Channel 2, 10인 경우 Channel 3, 11인 경우 Channel 4로 표현할 수 있지만 이 역시 하나의 실시예에 불과하며, 발명의 사상을 한정하지 않는다.
앞서 설명하였지만, 인공신경망 오퍼레이션에 가장 큰 영향을 주는 것은 입력 데이터, 가중치 데이터, 또는 피쳐맵 데이터 중 어느 데이터 군에 속하는 지이다. 한편 가중치 데이터 또는 피쳐맵 데이터는 읽기 연산인지 쓰기 연산인지, 또는 학습 과정인지 추론 과정인지에 따라서도 데이터 오퍼레이션의 순서가 변경될 수 있으므로 본 발명의 실시예에 따라서는 적응적으로 조정되는 순서를 나타내기 위하여 채널 코드를 2비트보다 더욱 세분화할 수도 있다.
본 발명의 일 실시예에 따른 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 본 발명의 실시예와 도면에 소개된 길이, 높이, 크기, 폭 등은 이해를 돕기 위해 과장된 것일 수 있다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
400, 500, 600: 컴퓨팅 시스템
210, 310, 411: 독립된 데이터 관리 장치
412, 413, 414, 415, 416, 417: 분산 배치된 데이터 관리 장치
220, 320: 내부 컨트롤러
230, 330: 데이터 오더 메모리

Claims (23)

  1. 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 프로세서 인터페이스 회로;
    상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 메모리 인터페이스 회로; 및
    상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 내부 컨트롤러; 를 포함하고,
    상기 내부 컨트롤러는 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고,
    상기 내부 컨트롤러는 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 실제로 저장되는 주소 정보를 모니터링하고, 상기 모니터링의 결과를 데이터-주소 순서 정보로서 생성하고 내부 메모리에 상기 데이터-주소 순서 정보를 저장하고,
    상기 내부 컨트롤러는 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성하고,
    상기 내부 컨트롤러는 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후 상기 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청을 상기 제1 인공신경망 데이터 오퍼레이션에 기반하여 생성하고, 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 메모리 인터페이스 회로에 전달하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  2. 제1항에 있어서,
    상기 식별 정보는 상기 인공신경망 데이터 오퍼레이션 요청이 학습을 위한 입력 데이터에 관한 요청인지, 인공신경망의 각 시냅스에 할당된 가중치에 관한 요청인지, 상기 인공신경망의 한 계층에서 다음 계층의 출력 노드로 출력되는 연산 결과인 액티베이션 파라미터에 관한 요청인지, 및 현재 수신된 데이터 요청이 인공신경망 데이터 오퍼레이션 요청에 해당하는 지 여부에 관한 정보를 포함하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  3. 제1항에 있어서,
    상기 내부 컨트롤러는
    상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  4. 제1항에 있어서,
    상기 내부 컨트롤러는
    이전의 인공신경망 데이터 오퍼레이션 요청이 없는 상태에서 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 주소 정보를 포함하는 제1 메모리 데이터 오퍼레이션 요청을 생성하고 상기 제1 메모리 데이터 오퍼레이션 요청을 상기 메모리 인터페이스 회로에 전달하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 내부 컨트롤러 또는 상기 메모리 인터페이스 회로 중 적어도 하나는
    상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리에 전달하여, 상기 적어도 하나 이상의 메모리가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행하도록 상기 적어도 하나 이상의 메모리를 제어하고, 상기 제2 메모리 데이터 오퍼레이션 요청이 읽기 동작인 경우 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 데이터를 상기 적어도 하나 이상의 메모리로부터 수신하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  7. 제1항에 있어서,
    상기 내부 컨트롤러 또는 상기 메모리 인터페이스 회로 중 적어도 하나는
    상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리에 전달하여, 상기 적어도 하나 이상의 메모리가 상기 제2 메모리 데이터 오퍼레이션 요청에 대응하는 메모리 동작을 실행할 수 있는 준비 상태를 유지하도록 상기 적어도 하나 이상의 메모리를 제어하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  8. 제1항에 있어서,
    상기 내부 컨트롤러는 상기 적어도 하나 이상의 프로세서로부터 상기 제1 인공신경망 데이터 오퍼레이션 요청에 뒤따르는 제3 인공신경망 데이터 오퍼레이션 요청을 실제로 수신한 경우, 상기 제3 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제3 주소 정보가 상기 내부 컨트롤러에서 미리 생성된 상기 다음 주소 정보와 일치하는 지 체크하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  9. 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 프로세서 인터페이스 회로;
    상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 메모리 인터페이스 회로; 및
    상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 내부 컨트롤러; 를 포함하고,
    상기 내부 컨트롤러는 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고,
    상기 내부 컨트롤러는 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보인 데이터-주소 순서 정보를 생성하고 내부 메모리에 상기 데이터-주소 순서 정보를 저장하고,
    상기 내부 컨트롤러는 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성하고,
    상기 내부 컨트롤러는
    상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하고,
    상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보를 이용하는 경우에, 상기 인공신경망 오퍼레이션에 관련된 인공신경망의 구조-특성 정보, 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청인지 쓰기 요청인지, 및 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여, 상기 다음 주소 정보를 생성하기 위하여 이용하는 적응 순서 정보를 결정하고,
    상기 적응 순서 정보, 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하고, 상기 다음 주소 정보를 생성하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  10. 제1항에 있어서,
    상기 내부 컨트롤러는
    상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보 및 상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청인지 쓰기 요청인지에 기반하여, 상기 제1 인공신경망 데이터 오퍼레이션 요청이 주소를 포함하지 않는 경우에도 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보를 이용하여 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리에 저장될 현재의 주소 정보를 상기 제1 주소 정보로서 생성하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  11. 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 프로세서 인터페이스 회로;
    상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 메모리 인터페이스 회로; 및
    상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 내부 컨트롤러; 를 포함하고,
    상기 내부 컨트롤러는 상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고,
    상기 내부 컨트롤러는 상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 저장되는 주소 정보인 데이터-주소 순서 정보를 생성하고 내부 메모리에 상기 데이터-주소 순서 정보를 저장하고,
    상기 내부 컨트롤러는 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 상기 내부 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성하고,
    상기 내부 컨트롤러는 상기 적어도 하나 이상의 프로세서로부터 상기 제1 인공신경망 데이터 오퍼레이션 요청에 뒤따르는 제3 인공신경망 데이터 오퍼레이션 요청을 실제로 수신한 경우, 상기 제3 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제3 주소 정보가 상기 내부 컨트롤러에서 미리 생성된 상기 다음 주소 정보와 일치하는 지 체크하고,.
    상기 제3 주소 정보가 상기 내부 컨트롤러에서 미리 생성된 상기 다음 주소 정보와 일치하지 않는 경우,
    상기 메모리 인터페이스 회로는
    상기 제3 주소 정보를 포함하는 제3 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리로 전송하고,
    상기 내부 컨트롤러는
    상기 제1 인공신경망 데이터 오퍼레이션 요청의 상기 제1 주소 정보 다음에는 상기 제3 인공신경망 데이터 오퍼레이션 요청의 상기 제3 주소 정보가 뒤따르도록 상기 데이터-주소 순서 정보를 갱신하여 상기 내부 메모리에 저장하는
    인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  12. 제1항에 있어서,
    상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청일 때, 상기 다음 주소 정보에 기반하여 상기 적어도 하나 이상의 메모리로부터 상기 제2 인공신경망 데이터 오퍼레이션 요청일 것으로 예측되는 데이터에 대한 미리 읽기 연산이 실행된 후, 상기 미리 읽기 연산의 결과인 미리 읽기 데이터를 저장하는 읽기 데이터 버퍼 메모리;
    를 더 포함하는 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치.
  13. 적어도 하나 이상의 프로세서, 및 적어도 하나 이상의 메모리를 포함하고, 상기 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템으로서,
    상기 적어도 하나 이상의 프로세서에서 실행되는 상기 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 프로세서 측 인터페이스;
    상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 메모리 측 인터페이스; 및
    데이터-주소 순서 정보를 저장하는 데이터 오더 메모리;
    를 포함하고,
    상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하고,
    상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하고,
    상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 실제로 저장되는 주소 정보를 모니터링하고, 상기 모니터링의 결과를 상기 데이터-주소 순서 정보로서 생성하고,
    상기 프로세서 측 인터페이스가 제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 데이터 오더 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성하고,
    상기 프로세서 측 인터페이스가 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후 상기 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청을 상기 제1 인공신경망 데이터 오퍼레이션에 기반하여 생성하고, 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 메모리 측 인터페이스를 경유하여 상기 적어도 하나 이상의 메모리에 전달하는
    인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템.
  14. 제13항에 있어서,
    상기 프로세서 측 인터페이스가 상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하는
    인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템.
  15. 삭제
  16. 제13항에 있어서,
    상기 제1 인공신경망 데이터 오퍼레이션 요청이 읽기 요청일 때, 상기 다음 주소 정보에 기반하여 상기 적어도 하나 이상의 메모리로부터 상기 제2 인공신경망 데이터 오퍼레이션 요청일 것으로 예측되는 데이터에 대한 미리 읽기 연산이 실행된 후, 상기 미리 읽기 연산의 결과인 미리 읽기 데이터를 저장하는 읽기 데이터 버퍼 메모리;
    를 더 포함하는 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템.
  17. 제13항에 있어서,
    상기 메모리 측 인터페이스는
    상기 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리 또는 상기 컴퓨팅 시스템 외부의 적어도 하나 이상의 외부 메모리로 전송하고, 상기 적어도 하나 이상의 메모리 또는 상기 적어도 하나 이상의 외부 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는
    인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템.
  18. 적어도 하나 이상의 프로세서, 및 적어도 하나 이상의 메모리를 포함하고, 상기 적어도 하나 이상의 프로세서에서 실행되는 인공신경망 오퍼레이션을 지원하는 컴퓨팅 시스템에서 실행되는 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법으로서,
    상기 적어도 하나 이상의 프로세서에서 실행되는 상기 인공신경망 오퍼레이션에 관련된 인공신경망 데이터 오퍼레이션 요청을 수신하는 단계;
    상기 인공신경망 데이터 오퍼레이션 요청에 기반한 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리로 전송하고, 상기 적어도 하나 이상의 메모리로부터 상기 메모리 데이터 오퍼레이션 요청에 응답하는 메모리 데이터를 수신하는 단계; 및
    상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 단계;
    를 포함하고,
    상기 인공신경망 데이터 오퍼레이션 요청에 기반하여 상기 메모리 데이터 오퍼레이션 요청을 생성하는 단계는
    상기 인공신경망 데이터 오퍼레이션 요청에 포함되는 식별 정보에 기반하여 상기 인공신경망 데이터 오퍼레이션 요청의 종류, 및 도메인을 식별하는 단계;
    상기 식별 정보와 관련되는 상기 인공신경망 데이터 오퍼레이션 요청의 데이터의 순서(order), 및 상기 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 순서에 따라 상기 적어도 하나 이상의 메모리 내에 실제로 저장되는 주소 정보를 모니터링하고, 상기 모니터링의 결과를 데이터-주소 순서 정보로서 생성하는 단계;
    상기 데이터-주소 순서 정보를 상기 컴퓨팅 시스템 내부의 데이터 오더 메모리에 저장하는 단계;
    제1 인공신경망 데이터 오퍼레이션 요청을 수신하였을 때, 상기 제1 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제1 주소 정보, 및 상기 데이터 오더 메모리에 저장된 상기 데이터-주소 순서 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 다음 주소 정보로서 생성하는 단계; 및
    상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후 상기 다음 주소 정보를 포함하는 제2 메모리 데이터 오퍼레이션 요청을 상기 제1 인공신경망 데이터 오퍼레이션에 기반하여 생성하고, 상기 제2 메모리 데이터 오퍼레이션 요청을 상기 적어도 하나 이상의 메모리에 전달하는 단계;
    를 포함하는 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법.
  19. 제18항에 있어서,
    상기 제2 주소 정보를 상기 다음 주소 정보로서 생성하는 단계는
    상기 제1 인공신경망 데이터 오퍼레이션 요청을 수신한 후, 상기 제1 인공신경망 데이터 오퍼레이션 요청에 포함되는 제1 식별 정보에 기반하여 상기 제1 인공신경망 데이터 오퍼레이션 요청을 뒤따를 것으로 예상되는 상기 제2 인공신경망 데이터 오퍼레이션 요청을 예측하는 단계; 및
    상기 제1 주소 정보, 및 상기 데이터-주소 순서 정보에 기반하여 상기 제2 인공신경망 데이터 오퍼레이션 요청의 데이터가 상기 적어도 하나 이상의 메모리 내에 저장되는 제2 주소 정보를 예측하는 단계;
    를 포함하는 인공신경망 오퍼레이션을 지원하는 데이터 관리 방법.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
KR1020190065709A 2019-06-04 2019-06-04 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치 KR102192325B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020190065709A KR102192325B1 (ko) 2019-06-04 2019-06-04 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
KR1020200025961A KR102351087B1 (ko) 2019-06-04 2020-03-02 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
CN202080007589.1A CN113316794B (zh) 2019-06-04 2020-06-04 基于人工神经网络的数据位置用数据缓存支持高速人工神经网络操作的数据管理设备
PCT/KR2020/007305 WO2020246836A1 (ko) 2019-06-04 2020-06-04 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
US17/135,655 US11763147B2 (en) 2019-06-04 2020-12-28 Data management device for supporting high speed artificial neural network operation by using data caching based on data locality of artificial neural network
US18/230,912 US20230385635A1 (en) 2019-06-04 2023-08-07 Data management device for supporting high speed artificial neural network operation by using data caching based on data locality of artificial neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190065709A KR102192325B1 (ko) 2019-06-04 2019-06-04 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020200025961A Division KR102351087B1 (ko) 2019-06-04 2020-03-02 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치

Publications (2)

Publication Number Publication Date
KR20200139343A KR20200139343A (ko) 2020-12-14
KR102192325B1 true KR102192325B1 (ko) 2020-12-28

Family

ID=73779846

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190065709A KR102192325B1 (ko) 2019-06-04 2019-06-04 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치

Country Status (1)

Country Link
KR (1) KR102192325B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102578762B1 (ko) * 2021-03-04 2023-09-13 삼성전자주식회사 뉴럴 프로세서
KR102573644B1 (ko) * 2021-08-24 2023-09-01 주식회사 에너자이 실행 엔진 최적화 방법, 실행 엔진 최적화 장치, 및 실행 엔진 최적화 시스템
US11886973B2 (en) 2022-05-30 2024-01-30 Deepx Co., Ltd. Neural processing unit including variable internal memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190057300A1 (en) * 2018-10-15 2019-02-21 Amrita MATHURIYA Weight prefetch for in-memory neural network execution

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9959498B1 (en) * 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
KR102534917B1 (ko) 2017-08-16 2023-05-19 에스케이하이닉스 주식회사 신경망 처리 회로를 구비하는 메모리 장치 및 이를 포함하는 메모리 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190057300A1 (en) * 2018-10-15 2019-02-21 Amrita MATHURIYA Weight prefetch for in-memory neural network execution

Also Published As

Publication number Publication date
KR20200139343A (ko) 2020-12-14

Similar Documents

Publication Publication Date Title
KR102351087B1 (ko) 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
US11726931B2 (en) Artificial intelligence-enabled management of storage media access
KR102192325B1 (ko) 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
EP1769364B1 (en) Information processing apparatus and information processing method
CN111699477A (zh) 在存储器系统中经由数据串流隔离的加速数据存取
US20130046926A1 (en) Edram refresh in a high performance cache architecture
CN111684435A (zh) 实施于存储器系统中的通过消息传递接口的存储器存取通信
US11972137B2 (en) System and memory for artificial neural network (ANN) optimization using ANN data locality
US20220138586A1 (en) Memory system of an artificial neural network based on a data locality of an artificial neural network
JP4888839B2 (ja) キャッシュメモリを備えるベクトル計算機システム、及びその動作方法
US20240231681A1 (en) Memory controller, processor and system for artificial neural network
US10360158B2 (en) Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies
KR100900489B1 (ko) 디스크 어레이 매스 프리페칭 방법
CN114761972A (zh) 基于人工神经网络数据局部性的人工神经网络存储器系统
KR20220008376A (ko) 특정 패턴을 가지는 인공신경망의 데이터 오퍼레이션의 순서를 모니터링하도록 구성된 컨트롤러 및 이를 포함하는 시스템
KR102706330B1 (ko) 인공신경망을 위한 메모리 제어부, 프로세서 및 시스템
KR20220059410A (ko) 인공신경망을 위한 시스템 및 메모리
KR20220059409A (ko) 인공신경망을 위한 메모리 장치
US20220137866A1 (en) Memory device for an artificial neural network
US20160055087A1 (en) System and method for managing cache replacements
KR20210065605A (ko) 선인출 정보를 이용한 메모리 제어 방법 및 장치
KR20240137223A (ko) 딥러닝 추론 방법 및 시스템
KR20230011787A (ko) 마이그레이션 정책 스위칭 방법 및 장치
KR100859395B1 (ko) 정보 처리 장치 및 정보 처리 방법

Legal Events

Date Code Title Description
GRNT Written decision to grant