KR20190134293A - 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 - Google Patents
머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 Download PDFInfo
- Publication number
- KR20190134293A KR20190134293A KR1020180059754A KR20180059754A KR20190134293A KR 20190134293 A KR20190134293 A KR 20190134293A KR 1020180059754 A KR1020180059754 A KR 1020180059754A KR 20180059754 A KR20180059754 A KR 20180059754A KR 20190134293 A KR20190134293 A KR 20190134293A
- Authority
- KR
- South Korea
- Prior art keywords
- machine learning
- data
- storage unit
- data storage
- logic
- Prior art date
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 291
- 238000013500 data storage Methods 0.000 claims abstract description 65
- 238000012545 processing Methods 0.000 claims abstract description 13
- 239000000872 buffer Substances 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 24
- 238000003491 array Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 14
- 230000014509 gene expression Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Logic Circuits (AREA)
- Stored Programmes (AREA)
Abstract
본 실시예는 범용의 메모리 모듈 인터페이스를 갖는 머신 러닝 장치를 개시한다. 본 실시예에 따른 머신 러닝 장치는 메모리 모듈 인터페이스를 통해 호스트 장치로부터 제공받은 로우 데이터와 커맨드 데이터, 상기 로우 데이터가 머신 러닝 된 머신 러닝 데이터 및 상기 머신 러닝 데이터에 대한 위치 데이터를 저장하는 데이터 저장부; 기 프로그래밍 된 머신 러닝 로직에 따라 상기 로우 데이터를 처리하여 상기 머신 러닝 데이터를 생성하는 머신 러닝 로직부; 및 상기 커맨드 데이터에 근거하여 상기 데이터 저장부에서 상기 로우 데이터를 리드하여 상기 머신 러닝 로직부에 제공하고, 상기 머신 러닝 로직부에서 생성된 상기 머신 러닝 데이터를 상기 위치 데이터와 함께 상기 데이터 저장부에 라이트하는 머신 러닝 컨트롤러를 포함할 수 있다.
Description
본 발명은 머신 러닝 장치에 관한 것으로, 보다 상세하게는 범용의 메모리 모듈 인터페이스를 갖는 머신 러닝 장치에 관한 것이다.
머신 러닝 시스템(machine learning system)은 외부에서 주어지는 데이터를 통해 학습하고, 학습결과를 토대로 입력에 따른 출력을 예측하는 시스템으로, 머신 러닝 시스템 개발이 활발히 이루어지고 있다.
이러한 머신 러닝 시스템은 머신 러닝을 위한 별도의 전용 보드 또는 USB 타입의 장치로 구성되거나 GPU(Graphic Process Unit)를 사용하는 그래픽 카드 형태로 구성되는 경우들이 대부분이다.
머신 러닝을 활용한 기술이 더욱더 일상생활에 파고들고 있는 상황에서 보다 다양한 형태의 머신 러닝 장치의 개발이 요구되고 있는 실정이다.
본 실시예는 기존의 컴퓨터 시스템에 쉽게 적용할 수 있는 범용의 메모리 모듈 인터페이스를 갖는 머신 러닝 장치를 제공하다.
본 발명의 일 실시 예에 따른 머신 러닝 장치는 메모리 모듈 인터페이스를 통해 호스트 장치로부터 제공받은 로우 데이터와 커맨드 데이터, 상기 로우 데이터가 머신 러닝 된 머신 러닝 데이터 및 상기 머신 러닝 데이터에 대한 위치 데이터를 저장하는 데이터 저장부; 기 프로그래밍 된 머신 러닝 로직에 따라 상기 로우 데이터를 처리하여 상기 머신 러닝 데이터를 생성하는 머신 러닝 로직부; 및 상기 커맨드 데이터에 근거하여 상기 데이터 저장부에서 상기 로우 데이터를 리드하여 상기 머신 러닝 로직부에 제공하고, 상기 머신 러닝 로직부에서 생성된 상기 머신 러닝 데이터를 상기 위치 데이터와 함께 상기 데이터 저장부에 라이트하는 머신 러닝 컨트롤러를 포함할 수 있다.
본 발명의 일 실시예에 따른 머신 러닝 시스템은 하나 이상의 프로세서들을 포함하는 호스트 장치; 및 상기 호스트 장치로부터의 라이트 커맨드에 따라 제공받은 로우 데이터를 기 프로그래밍 된 머신 러닝 로직에 따라 처리하여 머신 러닝 데이터를 생성하고, 상기 호스트 장치로부터의 리드 커맨드에 따라 상기 머신 러닝 데이터를 상기 호스트 장치에 제공하는 머신 러닝 장치를 포함하며, 상기 머신 러닝 장치는 컴퓨터 마더보드(motherboard)와 연결을 가능하게 하는 칩 핀들(chip pins)을 포함하는 메모리 모듈 형태를 가질 수 있다.
본 발명의 일 실시 예에 따른 데이터 저장 장치는 메모리에 저장된 데이터를 연산하여 연산된 값을 메모리에 저장하도록 요구하는 메모리 커맨드를 출력하는 호스트 및 상기 호스트로부터의 메모리 커맨드에 따라 메모리에 저장된 연산 대상 데이터를 리드하여 연산하고 연산 결과를 메모리의 목적지 어드레스에 저장하는 메모리 제어장치를 포함할 수 있다.
본 실시예에서는 머신 러닝 장치를 범용의 메모리 모듈 형태로 형성함으로써 통상의 컴퓨터에 머신 러닝 기능을 쉽게 적용할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 머신 러닝 시스템의 구성을 나타내는 구성도.
도 2는 도 1의 구성에서 호스트 장치와 머신 러닝 장치의 관계를 보다 상세하게 나타낸 도면.
도 3은 본 발명의 일 실시예에 따른 도 2의 머신 러닝 장치의 구성을 보다 상세하게 나타내는 구성도.
도 4는 메모리 소자에서 각 데이터가 저장되는 영역이 물리적으로 구분되어 있음을 나타내는 도면.
도 5는 도 3에서의 머신 러닝 로직부의 각 FPGA의 구성을 보다 상세하게 나타내는 도면.
도 6은 본 발명의 일 실시예에 따른 호스트 장치와 머신 러닝 장치의 동작을 설명하기 위한 타이밍도.
도 7은 본 발명의 다른 실시예에 따른 머신 러닝 장치의 구성을 나타내는 구성도.
도 8은 본 발명의 또 다른 실시예에 따른 머신 러닝 장치(300)의 구성을 나타내는 구성도.
도 2는 도 1의 구성에서 호스트 장치와 머신 러닝 장치의 관계를 보다 상세하게 나타낸 도면.
도 3은 본 발명의 일 실시예에 따른 도 2의 머신 러닝 장치의 구성을 보다 상세하게 나타내는 구성도.
도 4는 메모리 소자에서 각 데이터가 저장되는 영역이 물리적으로 구분되어 있음을 나타내는 도면.
도 5는 도 3에서의 머신 러닝 로직부의 각 FPGA의 구성을 보다 상세하게 나타내는 도면.
도 6은 본 발명의 일 실시예에 따른 호스트 장치와 머신 러닝 장치의 동작을 설명하기 위한 타이밍도.
도 7은 본 발명의 다른 실시예에 따른 머신 러닝 장치의 구성을 나타내는 구성도.
도 8은 본 발명의 또 다른 실시예에 따른 머신 러닝 장치(300)의 구성을 나타내는 구성도.
이하, 첨부된 도면들을 참조하여 본 발명의 다양한 실시 예들에 대해 상세하게 설명한다. 본 문서에서 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
본 문서에 개시되어 있는 본 발명의 다양한 실시 예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 다양한 실시 예들은 여러 가지 형태로 실시될 수 있으며 본 문서에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
다양한 실시 예에서 사용된 "제1" 또는 "제2" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 해당 구성요소들을 한정하지 않는다. 예를 들면, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 바꾸어 명명될 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다.
기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사용되는 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미를 가지는 것으로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 발명의 실시 예들을 배제하도록 해석될 수 없다.
도 1은 본 발명의 일 실시 예에 따른 머신 러닝 시스템의 구성을 나타내는 구성도이다.
도 1의 머신 러닝 시스템은 호스트 장치(100), 메모리 장치(200) 및 머신 러닝 장치(300)를 포함할 수 있다.
도 1을 참조하면, 호스트 장치(100)는 하나 이상의 프로세서들을 포함하는 중앙처리장치(CPU) 또는 그래픽 처리 장치(Graphic Processing Unit, GPU) 등과 같은 연산 장치를 포함할 수 있다. 호스트 장치(100)는 메모리 장치(200)와 통신하여 연산 동작에 필요한 데이터를 메모리 장치(200)로부터 제공받고 연산 결과를 메모리 장치(200)에 저장한다. 또한, 호스트 장치(100)는 머신 러닝 장치(300)에 머신 러닝 수행 명령 및 머신 러닝에 필요한 데이터를 제공하고, 머신 러닝 장치(300)로부터 머신 러닝 결과를 제공받는다. 이때, 호스트 장치(100)는 호스트 장치(100) 내에 구비된 메모리 컨트롤러(MC)를 통해 메모리 장치(200) 및 머신 러닝 장치(300)과 통신할 수 있다.
메모리 장치(200)는 호스트 장치(100)로부터 제공된 데이터 또는 호스트 장치(100)로 제공될 데이터를 저장하고, 호스트 장치(100)의 연산 동작을 보조하는 동작을 수행할 수 있다. 메모리 장치(200)는 휘발성 메모리를 포함하는 어떠한 저장 매체로든 구현될 수 있다. 이러한 메모리 장치(200)는 DIMM(Dual-Inline Memory Module) 표준에 따른 모듈 형태로 형성될 수 있다. 예를 들어, 메모리 장치(200)는 UDIMM(Unbuffered Dual In-Line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM), NVDIMM(Non Volatile DIMM) 등을 포함할 수 있다.
머신 러닝 장치(300)는 호스트 장치(100)로부터의 라이트 명령에 따라 제공받은 데이터를 기 프로그래밍 된 머신 러닝 로직에 따라 처리하여 머신 러닝 데이터를 생성하고, 호스트 장치(100)로부터의 리드 명령에 따라 머신 러닝 데이터를 호스트 장치(100)에 제공한다. 머신 러닝 장치(300)는 컴퓨터 마더보드(motherboard)(10)와 연결을 가능하게 하는 칩 핀들(chip pins)을 포함하는 회로 기판(circuit board) 상에 다중 DRAM 칩들을 포함하는 메모리 모듈 형태로 형성될 수 있다. 예컨대, 머신 러닝 장치(300)는 메모리 장치(200)와 같이 DIMM(Dual-Inline Memory Module) 표준에 따른 메모리 모듈 형태로 형성될 수 있다. 즉, 호스트 장치(100) 관점에서는 머신 러닝 장치(300)도 메모리 장치(200)와 같은 DIMM으로 취급된다.
도 1에서의 호스트 장치(100), 메모리 장치(200) 및 머신 러닝 장치(300)는 데이터 센터 내 서버(미도시)의 마더보드(10)에 장착된 형태로 형성될 수 있다.
도 2는 도 1의 구성에서 호스트 장치(100)와 머신 러닝 장치(300)의 관계를 보다 상세하게 나타낸 도면이다.
도 2를 참조하면, 호스트 장치(100)는 머신 러닝이 필요한 경우, 메모리 컨트롤러(MC)를 통해 머신 러닝을 위해 필요한 데이터(DATA_CMD, DATA_RAW)를 머신 러닝 장치(300)에 제공하고, 머신 러닝 된 데이터(머신 러닝 데이터)(DATA_ML)를 머신 러닝 장치(300)로부터 제공받는다. 이때, 호스트 장치(100)는 메모리 장치(200)에 데이터를 라이트 또는 리드할 때와 같은 방법으로, 메모리 컨트롤러(MC)를 이용한 DIMM 인터페이스를 통해 머신 러닝 장치(300)에 데이터를 라이트 또는 리드함으로써 머신 러닝 장치(300)와 통신한다. 즉, 호스트 장치(100)는 메모리 장치(200)에 데이터를 라이트할 때와 같은 방법으로 머신 러닝 장치(300)에 머신 러닝을 위한 데이터(DATA_CMD, DATA_RAW)를 제공하고, 메모리 장치(200)의 데이터를 리드할 때와 같은 방법으로 머신 러닝 장치(300)로부터 머신 러닝 데이터(DATA_ML)를 제공받는다.
예컨대, 호스트 장치(100)는 머신 러닝 장치(300)에게 머신 러닝을 수행시키고자 하는 경우, 클록 신호(CLK), 라이트 커맨드(CMD_W) 및 어드레스 정보(ADDR)를 이용하여 커맨드 데이터(DATA_CMD) 및 머신 러닝에 사용될 원시 데이터인 로우 데이터(DATA_RAW)를 머신 러닝 장치(300) 내의 메모리 소자들(예컨대, DRAM들)에 라이트한다. 이후, 호스트 장치(100)는 클록 신호(CLK), 리드 커맨드(CMD_R) 및 어드레스 정보(ADDR)를 이용하여 머신 러닝 장치(300) 내의 메모리 소자들에 저장된 데이터를 리드함으로써 머신 러닝 데이터(DATA_ML)를 제공받는다. 즉, 호스트 장치(100)는 머신 러닝 장치(300)를 DIMM과 같이 취급하여 데이터를 라이트 또는 리드한다. 머신 러닝된 데이터(DATA_ML)를 리드시, 호스트 장치(100)는 머신 러닝 장치(300)의 메모리 소자의 특정 위치를 주기적으로 모니터링하여 머신 러닝된 데이터(DATA_ML)가 저장되었는지 여부를 먼저 확인할 수 있다.
머신 러닝 장치(300)는 기 프로그래밍 된 머신 러닝 로직에 따라 호스트 장치(100)로부터 제공받은 데이터(DATA_RAW)를 처리하여 머신 러닝을 수행하고, 머신 러닝 된 머신 러닝 데이터(DATA_ML)를 호스트 장치(100)에 제공한다. 예컨대, 머신 러닝 장치(300)는 호스트 장치(100)가 메모리 소자에 라이트한 커맨드 데이터(DATA_CMD) 및 로우 데이터(DATA_RAW)를 이용하여 머신 러닝을 수행하고, 머신 러닝을 통해 얻어진 결과 데이터(DATA_ML)를 메모리 소자에 저장한다. 이러한 머신 러닝 장치(300)는 머신 러닝 로직이 프로그래밍 된 복수의 FPGA(Field Programmable Gate Array)들을 포함할 수 있다.
도 3은 본 발명의 일 실시예에 따른 도 2의 머신 러닝 장치(300)의 구성을 보다 상세하게 나타내는 구성도이다.
도 3을 참조하면, 머신 러닝 장치(300)는 데이터 저장부(310), 머신 러닝 로직부(320) 및 머신 러닝 컨트롤러(330)를 포함할 수 있다.
데이터 저장부(310)는 호스트 장치(100)로부터 제공받은 데이터(DATA_CMD, DATA_RAW), 머신 러닝 장치(300)에서 생성된 머신 러닝 데이터(DATA_ML) 및 머신 러닝 데이터(DATA_ML)에 대한 저장 위치를 알려주는 위치 데이터(DATA_LOC)를 저장한다. 데이터 저장부(310)는 호스트 장치(100)와는 종래의 DIMM과 같이 마더모드(10)의 신호 라인들을 통한 DIMM 인터페이스로 데이터를 송수신한다. 또한, 데이터 저장부(310)는 머신 러닝 컨트롤러(330)와는 머신 러닝 장치(300) 내의 신호 라인들을 통해 데이터를 송수신한다.
이러한 데이터 저장부(310)의 각 메모리 소자는 도 4에서와 같이, 호스트 장치(100)와의 데이터 송수신을 위한 데이터(DATA_CMD, DATA_LOC)가 저장되는 영역 및 실제 송수신 대상이 되는 데이터(DATA_RAW, DATA_ML)가 저장되는 영역을 포함하며, 각 영역은 미리 물리적으로 구분되게 정해질 수 있다.
따라서, 호스트 장치(100)는 지정된 위치에 커맨드 데이터(DATA_CMD)를 라이트하고 지정된 위치에 액세스하여 위치 데이터(DATA_LOC)를 리드할 수 있다. 특히, 호스트 장치(100)와의 통신을 위한 데이터(DATA_CMD, DATA_LOC)가 저장되는 위치(어드레스)가 미리 지정됨으로써, 호스트 장치(100)는 지정된 위치에 액세스하여 커맨드 데이터(DATA_CMD)를 라이트하고, 지정된 위치에 액세스하여 위치 데이터(DATA_LOC)를 리드할 수 있다. 이러한 데이터 저장부(310)의 메모리 소자들은 휘발성 메모리 소자들 예컨대 DRAM 들을 포함할 수 있다.
머신 러닝 로직부(320)는 머신 러닝 컨트롤러(330)로부터 로우 데이터(DATA_RAW)를 제공받으면, 기 프로그래밍된 머신 로직에 따라 로우 데이터(DATA_RAW)를 처리하여 머신 러닝을 수행하고, 머신 러닝 된 데이터(DATA_ML)를 머신 러닝 컨트롤러(330)에 제공한다. 머신 러닝 로직부(320)는 머신 러닝 로직이 프로그래밍 된 FPGA(Field Programmable Gate Array)들(FPGA 1 ∼ FPGA n)을 포함할 수 있다.
이때, FPGA들(FPGA 1 ∼ FPGA n)은 각각 독립적으로 머신 러닝 컨트롤러(330)로부터 로우 데이터(DATA_RAW)를 제공받아 머신 러닝을 수행한 후 머신 러닝 된 머신 러닝 데이터(DATA_ML)를 머신 러닝 컨트롤러(330)에 제공할 수 있다. 또는, FPGA들(FPGA 1 ∼ FPGA n)은 머신 러닝 로직을 순차적으로 수행할 수 있다. 예컨대, FPGA 1은 제공받은 로우 데이터를 이용하여 기 프로그래밍 된 로직에 따라 머신 러닝을 수행한 후 그 결과 데이터를 FPGA 2에 제공하고, FPGA 2는 FPGA 1에서 처리된 데이터를 이용하여 기 프로그래밍 된 로직에 따라 머신 러닝을 수행한 후 그 결과 데이터를 FPGA 3에 제공할 수 있다. 이러한 방법으로 FPGA n 까지 순차적으로 머신 러닝을 수행한 후 최종의 FPGA n이 머신 러닝 컨트롤러(330)에게 완료된 머신 러닝 데이터(DATA_ML)를 제공할 수 있다.
머신 러닝 컨트롤러(330)는 데이터 저장부(310)에 저장된 로우 데이터(DATA_RAW)를 머신 러닝 로직부(320)에 제공하고, 머신 러닝 로직부(320)에 의해 머신 러닝된 데이터(DATA_ML)를 데이터 저장부(310)에 저장한다. 예컨대, 머신 러닝 컨트롤러(330)는 데이터 저장부(310)의 특정 영역에 커맨드 데이터(DATA_CMD)가 저장되었는지 여부를 주기적으로 모니터링하고, 커맨드 데이터(DATA_CMD)에 근거하여 데이터 저장부(310)에서 로우 데이터(DATA_RAW)를 리드한 후 이를 머신 러닝 로직부(320)에 제공한다.
머신 러닝 컨트롤러(330)는 머신 러닝 로직부(320)에서 머신 러닝을 수행하는 동안에는 데이터 저장부(310)와의 연결을 차단할 수 있다. 머신 러닝이 완료되면, 머신 러닝 컨트롤러(330)는 머신 러닝된 데이터(DATA_ML)를 머신 러닝 로직부(320)로부터 제공받아 데이터 저장부(310)에 라이트한다. 다음에, 머신 러닝 컨트롤러(330)는 머신 러닝된 데이터(DATA_ML)의 저장 위치를 알려주는 위치 데이터(DATA_LOC)를 미리 설정된 위치에 라이트한다.
도 5는 도 3에서의 머신 러닝 로직부(320)의 각 FPGA의 구성을 보다 상세하게 나타내는 도면이다. 도 5에서는 설명의 편의를 위해 인접한 2개의 FPGA들(FPGA 1, FPGA 2)의 구성 및 이들과 머신 러닝 컨트롤러(330)의 관계만을 예시적으로 나타내고 있다.
도 5를 참조하면, 각 FPGA는 로직부(322), 입력 버퍼(324) 및 출력 버퍼(326)를 포함할 수 있다.
로직부(322)는 머신 러닝 로직이 프로그래밍되며, 프로그래밍된 로직에 따라 입력 버퍼(324)에 저장된 로우 데이터(DATA_RAW)를 처리하여 머신 러닝 데이터(DATA_ML)를 생성하고, 생성된 머신 러닝 데이터(DATA_ML)를 출력 버퍼(326)에 출력한다.
입력 버퍼(324)는 머신 러닝 컨트롤러(330)와 연결되며, 머신 러닝 컨트롤러(330)로부터 제공받은 로우 데이터(DATA_RAW)를 임시 저장한다.
출력 버퍼(324)는 머신 러닝 컨트롤러(330) 또는 다음 FPGA의 입력 버퍼와 연결되며, 로직부(322)에서 처리된 데이터(DATA_ML)를 임시 저장한다. 마지막 FPGA(FPGA n)의 출력 버퍼(324)는 머신 러닝 컨트롤러(330)와 연결된다.
도 6은 본 발명의 일 실시예에 따른 호스트 장치와 머신 러닝 장치의 동작을 설명하기 위한 타이밍도이다.
도 6을 참조하면, 머신 러닝 장치(300)의 머신 러닝 컨트롤러(330)는 데이터 저장부(310)에서 미리 지정된 특정 저장 위치를 주기적으로 액세스하여 해당 위치에 호스트 장치(100)로부터의 커맨드 데이터(DATA_CMD)가 저장되었는지 여부를 모니터링한다(단계 ①)
호스트 장치(100)는 머신 러닝이 필요한 경우, DIMM 인터페이스를 통해 머신 러닝 장치(300)의 데이터 저장부(310)에 액세스하여 로우 데이터(DATA_RAW)를 라이트하고, 머신 러닝 개시를 지시하는 커맨드 및 로우 데이터(DATA_RAW)가 저장된 위치를 알려주는 정보를 포함하는 커맨드 데이터(DATA_CMD)를 지정된 위치에 라이트한다(단계 ②).
호스트 장치(100)가 커맨드 데이터(DATA_CMD) 및 로우 데이터(DATA_RAW)를 라이트하면, 머신 러닝 컨트롤러(330)는 단계 ①에서와 같은 주기적인 모니터링을 통해 데이터 저장부(310)에 커맨드 데이터(DATA_CMD)가 저장되었음을 알 수 있게 된다.
커맨드 데이터(DATA_CMD)가 저장되었음을 확인한 머신 러닝 컨트롤러(330)는 커맨드 데이터(DATA_CMD)가 알려주는 저장 위치에 액세스하여 로우 데이터(DATA_RAW)를 리드(단계 ③)한 후, 리드한 로우 데이터(DATA_RAW)를 머신 러닝 로직부(320)의 입력 버퍼(324)에 전송한다(단계 ④).
머신 러닝 로직부(320)는 제공받은 로우 데이터(DATA_RAW)를 기 프로그래밍된 머신 러닝 로직에 따라 처리함으로써 머신 러닝 동작을 수행한다(단계 ⑤).
이때, 머신 러닝 로직부(320)의 FPGA들(FPGA 1 ∼ FPGA n)은 각각 독립적으로 머신 러닝 컨트롤러(330)로부터 제공받은 로우 데이터(DATA_RAW)를 처리한 후 그 머신 러닝 데이터(DATA_ML)를 머신 러닝 컨트롤러(330)에 제공할 수 있다.
머신 러닝 프로그램의 사이즈가 커 하나의 FPGA 만으로 처리가 불가능한 경우에는 FPGA들(FPGA 1 ∼ FPGA n)은 순차적으로 머신 러닝을 수행할 수 있다. 예컨대, FPGA 1은 제공받은 로우 데이터를 이용하여 기 프로그래밍 된 로직에 따라 머신 러닝을 수행한 후 그 결과 데이터를 FPGA 2에 제공한다. FPGA 2는 FPGA 1으로부터 제공받은 데이터(또는 FPGA 1으로부터 제공받은 데이터와 자신의 입력 버퍼의 데이터)를 이용하여 기 프로그래밍 된 로직에 따라 머신 러닝을 수행한 후 그 결과 데이터를 FPGA 3에 제공한다. 이러한 방법으로, FPGA n 까지 순차적으로 머신 러닝이 수행된다.
머신 러닝이 완료된 데이터(DATA_ML)는 머신 러닝 컨트롤러(330)에게 전송된다(단계 ⑥).
머신 러닝 컨트롤러(330)는 데이터 저장부(310)에 액세스하여 머신 러닝된 데이터(DATA_ML)를 라이트하고, 기 지정된 특정 위치에 머신 러닝된 데이터(DATA_ML)가 저장된 위치를 알려주는 위치 데이터(DATA_LOC)를 라이트한다(단계 ⑦).
호스트 장치(100)는 로우 데이터(DATA_RAW)를 라이트한 후 데이터 저장부(310)에서 미리 지정된 특정 저장 위치를 주기적으로 액세스하여 해당 위치에 위치 데이터(DATA_LOC)가 저장되어 있는지를 모니터링한다(단계 ⑧).
위치 데이터(DATA_LOC)가 저장되었음을 확인한 호스트 장치(100)는 위치 데이터(DATA_LOC)가 알려주는 저장 위치에 액세스하여 머신 러닝 데이터(DATA_ML)를 리드한다(단계 ⑨).
도 7은 본 발명의 다른 실시예에 따른 머신 러닝 장치(300)의 구성을 나타내는 구성도이다.
도 3의 머신 러닝 장치에서는 머신 러닝 로직부(320)의 FPGA들(FPGA 1 ∼ FPGA n)이 도 5에서와 같이, 그 내부에 버퍼들(324, 326)를 포함하며, 버퍼들(324, 326)을 통해 머신 러닝 컨트롤러(330)와 로우 데이터(DATA_RAW) 및 머신 러닝된 데이터(DATA_ML)를 송수신하였다.
반면에, 도 7의 머신 러닝 장치(300)에서 머신 러닝 로직부(340)는 FPGA들(FPGA 1' ∼ FPGA n') 외부에 별도로 형성된 메모리 소자들(340)을 포함할 수 있다. 즉, FPGA들(FPGA 1' ∼ FPGA n')과 머신 러닝 컨트롤러(350)는 메모리 소자들(340)을 통해 로우 데이터(DATA_RAW) 및 머신 러닝된 데이터(DATA_ML)를 송수신할 수 있다.
도 7을 참조하면, 머신 러닝 장치(300)는 데이터 저장부(310), 머신 러닝 로직부(340) 및 머신 러닝 컨트롤러(350)를 포함할 수 있다.
데이터 저장부(310)는 도 3에서의 데이터 저장부(310)와 그 구조 및 기능이 동일하다. 따라서, 이에 대한 설명은 생략한다.
머신 러닝 로직부(340)는 머신 러닝 컨트롤러(330)로부터 제공받은 로우 데이터(DATA_RAW)를 기 프로그래밍된 머신 로직에 따라 처리하여 머신 러닝 데이터(DATA_ML)를 생성하고, 생성된 머신 러닝 데이터(DATA_ML)를 머신 러닝 컨트롤러(330)에 제공한다. 머신 러닝 로직부(340)는 머신 러닝 로직이 프로그래밍 된 FPGA들(FPGA 1' ∼ FPGA n') 및 FPGA들(FPGA 1' ∼ FPGA n')과 일대일 대응되게 형성되는 복수의 메모리 소자들(342)을 포함할 수 있다.
FPGA들(FPGA 1' ∼ FPGA n')은 메모리 소자들(342)에 저장된 로우 데이터(DATA_RAW)를 리드하여 머신 러닝 로직에 따라 처리하고, 머신 러닝 된 데이터(DATA_ML)를 메모리 소자들(342)에 라이트한다. FPGA들(FPGA 1' ∼ FPGA n')의 머신 러닝 로직은 도 3의 FPGA들(FPGA 1 ∼ FPGA n)의 머신 러닝 로직과 동일하게 프로그래밍될 수 있다. 다만, FPGA들(FPGA 1' ∼ FPGA n')은 내부의 버퍼를 통해 데이터를 입출력하지 않고 외부의 메모리 소자들(342)에 데이터를 라이트하거나 메모리 소자(342)에 저장된 데이터를 리드하는 방식으로 데이터를 입출력한다는 점에서 도 3의 FPGA들(FPGA 1 ∼ FPGA n)과 차이가 있다.
FPGA들(FPGA 1' ∼ FPGA n')은 각각 독립적으로 로우 데이터(DATA_RAW)를 처리하여 머신 러닝 데이터(DATA_ML)를 생성하거나, 순차적으로 머신 러닝을 수행하여 최종 FPGA(FPGA n')가 머신 러닝 데이터(DATA_ML)를 생성할 수 있다. 메모리 소자들(342)은 도 5에서 각 FPGA(FPGA 1 ∼ FPGA n)에 내장된 입력 버퍼 및 출력 버퍼의 역할을 수행한다.
메모리 소자들(342)은 데이터 저장부(310)의 메모리 소자들과 같이, 각 데이터(DATA_CMD, DATA_LOC, DATA_RAW, DATA_ML)가 저장되는 영역이 미리 물리적으로 구분되어 정해질 수 있다.
머신 러닝 컨트롤러(350)는 데이터 저장부(310)에 저장된 로우 데이터(DATA_RAW)를 메모리 소자들(342)에 전달하고, 메모리 소자들(342)에 저장된 머신 러닝 데이터(DATA_ML)를 데이터 저장부(310)에 전달한다. 즉, 머신 러닝 컨트롤러(350)는 호스트 장치(100)가 데이터 저장부(310)에 라이트한 로우 데이터(DATA_RAW)를 리드하여 메모리 소자들(342)에 라이트하고, FPGA들(FPGA 1' ∼ FPGA n')이 메모리 소자들(342)에 라이트한 머신 러닝 데이터(DATA_ML)를 리드하여 데이터 저장부(310)에 라이트한다.
이때, 머신 러닝 컨트롤러(350)가 데이터 저장부(310)를 통해 호스트 장치(100)와 데이터(DATA_RAW, DATA_ML)를 송수신하는 방법은 도 3에서 머신 러닝 컨트롤러(330)가 데이터 저장부(310)를 통해 호스트 장치(100)와 데이터DATA_RAW, DATA_ML)를 송수신하는 방법과 동일할 수 있다. 또한, 머신 러닝 컨트롤러(350)가 메모리 소자들(342)을 통해 FPGA들(FPGA 1' ∼ FPGA n')과 데이터(DATA_RAW, DATA_ML)를 송수신하는 방법도 도 3에서 머신 러닝 컨트롤러(330)가 데이터 저장부(310)를 통해 호스트 장치(100)와 데이터DATA_RAW, DATA_ML)를 송수신하는 방법과 동일할 수 있다. 따라서, 본 실시예에서는 이에 대한 설명들은 생략한다.
도 8은 본 발명의 또 다른 실시예에 따른 머신 러닝 장치(300)의 구성을 나타내는 구성도이다.
본 실시예를 도 3의 실시예와 비교하여, 본 실시예에서는 도 3의 데이터 저장부(310)에 대응되는 메모리 소자들(362)이 머신 러닝 컨트롤러(360) 내에 내장되는 형태로 형성된다는 점에서 차이가 있다. 메모리 소자들(362)의 구조 및 기능은 도 3의 데이터 저장부(310)에 포함되는 메모리 소자들과 동일하다.
도 8은 도 3의 구조를 변형한 형태로만 설명하였으나, 도 7의 구조에서도 데이터 저장부(310)의 메모리 소자들은 머신 러닝 컨트롤러(350)에 내장되는 형태로 형성될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다.
따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 호스트 장치
200 : 메모리 장치
300 : 머신 러닝 장치
310 : 데이터 저장부, 제 1 데이터 저장부
320, 350 : 머신 러닝 로직부
322 : 로직부
324 : 입력 버퍼
326 : 출력 버퍼
330, 360, 370 : 머신 러닝 컨트롤러
340 : 제 2 데이터 저장부
200 : 메모리 장치
300 : 머신 러닝 장치
310 : 데이터 저장부, 제 1 데이터 저장부
320, 350 : 머신 러닝 로직부
322 : 로직부
324 : 입력 버퍼
326 : 출력 버퍼
330, 360, 370 : 머신 러닝 컨트롤러
340 : 제 2 데이터 저장부
Claims (24)
- 메모리 모듈 인터페이스를 통해 호스트 장치로부터 제공받은 로우 데이터와 커맨드 데이터, 상기 로우 데이터가 머신 러닝 된 머신 러닝 데이터 및 상기 머신 러닝 데이터에 대한 위치 데이터를 저장하는 데이터 저장부;
기 프로그래밍 된 머신 러닝 로직에 따라 상기 로우 데이터를 처리하여 상기 머신 러닝 데이터를 생성하는 머신 러닝 로직부; 및
상기 커맨드 데이터에 근거하여 상기 데이터 저장부에서 상기 로우 데이터를 리드하여 상기 머신 러닝 로직부에 제공하고, 상기 머신 러닝 로직부에서 생성된 상기 머신 러닝 데이터를 상기 위치 데이터와 함께 상기 데이터 저장부에 라이트하는 머신 러닝 컨트롤러를 포함하는 머신 러닝 장치. - 제 1항에 있어서, 상기 데이터 저장부는
DIMM(Dual-Inline Memory Module) 인터페이스를 통해 상기 호스트 장치와 데이터를 송수신하는 것을 특징으로 하는 머신 러닝 장치. - 제 1항에 있어서, 상기 데이터 저장부는
복수의 메모리 소자들을 포함하며, 각 메모리 소자는 상기 로우 데이터, 상기 커맨드 데이터, 상기 머신 러닝 데이터 및 상기 위치 데이터가 저장되는 영역이 미리 설정되는 것을 특징으로 하는 머신 러닝 장치. - 제 1항에 있어서, 상기 머신 러닝 로직부는
상기 머신 러닝 로직이 프로그래밍 된 복수의 FPGA(Field Programmable Gate Array)들을 포함하는 것을 특징으로 하는 머신 러닝 장치. - 제 4항에 있어서, 상기 복수의 FPGA들은
각각 독립적으로 상기 머신 러닝 컨트롤러로부터 상기 로우 데이터를 제공받아 머신 러닝을 수행하고 상기 머신 러닝 데이터를 상기 머신 러닝 컨트롤러에 제공하는 것을 특징으로 하는 머신 러닝 장치. - 제 4항에 있어서, 상기 복수의 FPGA들은
상기 머신 러닝 로직을 순차적으로 수행하여 최종 FPGA가 상기 머신 러닝 데이터를 상기 머신 러닝 컨트롤러에 제공하는 것을 특징으로 하는 머신 러닝 장치. - 제 4항에 있어서, 상기 복수의 FPGA들은 각각
상기 머신 러닝 컨트롤러로부터 제공받은 상기 로우 데이터를 저장하는 입력 버퍼;
머신 러닝 데이터를 저장하는 출력 버퍼; 및
상기 머신 러닝 로직이 프로그래밍되며, 프로그래밍 로직에 따라 상기 입력 버퍼에 저장된 상기 로우 데이터를 처리하여 상기 출력 버퍼에 출력하는 로직부를 포함하는 것을 특징으로 하는 머신 러닝 장치. - 제 7항에 있어서, 상기 머신 러닝 컨트롤러는
상기 데이터 저장부에서 리드한 상기 로우 데이터를 상기 입력 버퍼에 전송하고, 상기 출력 버퍼를 통해 제공받은 상기 머신 러닝 데이터를 상기 데이터 저장부에 라이트하는 것을 특징으로 하는 머신 러닝 장치. - 제 4항에 있어서, 상기 머신 러닝 로직부는
상기 복수의 FPGA와 일대일 대응되며, 상기 복수의 FPGA들과 상기 머신 러닝 컨트롤러 간에 송수신되는 상기 로우 데이터와 상기 머신 러닝 데이터를 임시 저장하는 복수의 메모리 소자들을 더 포함하는 것을 특징으로 하는 머신 러닝 장치. - 제 9항에 있어서, 상기 머신 러닝 컨트롤러는
상기 데이터 저장부에서 리드한 상기 로우 데이터를 상기 메모리 소자들에 라이트하고, 상기 메모리 소자들에서 상기 머신 러닝 데이터를 리드하여 상기 데이터 저장부에 라이트하는 것을 특징으로 하는 머신 러닝 장치. - 제 1항에 있어서, 상기 머신 러닝 컨트롤러는
상기 데이터 저장부의 기 설정된 영역에 상기 커맨드 데이터가 저장되었는지 주기적으로 모니터링하며, 상기 커맨드 데이터에 근거하여 상기 데이터 저장부에서 상기 로우 데이터를 리드한 후 리드한 상기 로우 데이터를 상기 머신 러닝 로직부에 제공하는 것을 특징으로 하는 머신 러닝 장치. - 제 11항에 있어서, 상기 머신 러닝 컨트롤러는
상기 머신 러닝 데이터를 상기 데이터 저장부에 저장한 후 상기 데이터 저장부의 기 설정된 영역에 상기 머신 러닝 데이터가 저장된 위치를 알려주는 상기 위치 데이터를 저장하는 것을 특징으로 하는 머신 러닝 장치. - 제 1항에 있어서, 상기 머신 러닝 컨트롤러는
상기 머신 러닝 데이터를 상기 데이터 저장부에 저장한 후 상기 데이터 저장부의 기 설정된 영역에 상기 머신 러닝 데이터가 저장된 위치를 알려주는 상기 위치 데이터를 저장하는 것을 특징으로 하는 머신 러닝 장치. - 제 1항에 있어서, 상기 데이터 저장부는
상기 머신 러닝 컨트롤러에 내장되는 것을 특징으로 하는 머신 러닝 장치. - 하나 이상의 프로세서들을 포함하는 호스트 장치; 및
상기 호스트 장치로부터의 라이트 커맨드에 따라 제공받은 로우 데이터를 기 프로그래밍 된 머신 러닝 로직에 따라 처리하여 머신 러닝 데이터를 생성하고, 상기 호스트 장치로부터의 리드 커맨드에 따라 상기 머신 러닝 데이터를 상기 호스트 장치에 제공하는 머신 러닝 장치를 포함하며,
상기 머신 러닝 장치는 컴퓨터 마더보드(motherboard)와 연결을 가능하게 하는 칩 핀들(chip pins)을 포함하는 메모리 모듈 형태를 갖는 머신 러닝 시스템. - 제 15항에 있어서, 상기 머신 러닝 장치는
DIMM(Dual-Inline Memory Module) 표준에 따른 메모리 모듈 형태를 갖는 것을 특징으로 하는 머신 러닝 시스템. - 제 15항에 있어서, 상기 머신 러닝 장치는
상기 로우 데이터 및 상기 머신 러닝 데이터를 저장하는 데이터 저장부;
기 프로그래밍 된 머신 러닝 로직에 따라 상기 로우 데이터를 처리하여 상기 머신 러닝 데이터를 생성하는 머신 러닝 로직부; 및
상기 데이터 저장부에서 상기 로우 데이터를 리드하여 상기 머신 러닝 로직부에 제공하고, 상기 머신 러닝 로직부에서 생성된 상기 머신 러닝 데이터를 상기 데이터 저장부에 라이트하는 머신 러닝 컨트롤러를 포함하는 것을 특징으로 하는 머신 러닝 시스템. - 제 17항에 있어서, 상기 호스트 장치는
라이트 커맨드 및 제 1 어드레스 정보를 이용하여 상기 로우 데이터와 함께 커맨드 데이터를 상기 데이터 저장부에 라이트하고, 리드 커맨드 및 제 2 어드레스 정보를 이용하여 상기 데이터 저장부에 저장된 머신 러닝 데이터를 리드하는 것을 특징으로 하는 머신 러닝 시스템. - 제 18항에 있어서, 상기 머신 러닝 컨트롤러는
상기 데이터 저장부의 기 설정된 영역에 상기 커맨드 데이터가 저장되었는지 주기적으로 모니터링하며, 상기 커맨드 데이터에 근거하여 상기 데이터 저장부에서 상기 로우 데이터를 리드한 후 리드한 상기 로우 데이터를 상기 머신 러닝 로직부에 제공하는 것을 특징으로 하는 머신 러닝 시스템. - 제 17항에 있어서, 상기 호스트 장치는
상기 데이터 저장부의 기 지정된 영역을 주기적으로 모니터링하여 상기 데이터 저장부에 상기 머신 러닝 데이터가 저장되었는지 여부를 확인하는 것을 특징으로 하는 머신 러닝 시스템. - 제 17항에 있어서, 상기 머신 러닝 로직부는
상기 머신 러닝 로직이 프로그래밍 된 복수의 FPGA(Field Programmable Gate Array)들을 포함하는 것을 특징으로 하는 머신 러닝 시스템. - 제 21항에 있어서, 상기 복수의 FPGA들은 각각
상기 머신 러닝 컨트롤러로부터 제공받은 상기 로우 데이터를 저장하는 입력 버퍼;
머신 러닝 데이터를 저장하는 출력 버퍼; 및
상기 머신 러닝 로직이 프로그래밍되며, 프로그래밍 로직에 따라 상기 입력 버퍼에 저장된 상기 로우 데이터를 처리하여 상기 출력 버퍼에 출력하는 로직부를 포함하는 것을 특징으로 하는 머신 러닝 시스템. - 제 21항에 있어서, 상기 머신 러닝 로직부는
상기 복수의 FPGA와 일대일 대응되며, 상기 복수의 FPGA들과 상기 머신 러닝 컨트롤러 간에 송수신되는 상기 로우 데이터와 상기 머신 러닝 데이터를 임시 저장하는 복수의 메모리 소자들을 더 포함하는 것을 특징으로 하는 머신 러닝 시스템. - 제 17항에 있어서, 상기 데이터 저장부는
상기 머신 러닝 컨트롤러에 내장되는 것을 특징으로 하는 머신 러닝 시스템.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180059754A KR102615443B1 (ko) | 2018-05-25 | 2018-05-25 | 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 |
US16/216,054 US11972328B2 (en) | 2018-05-25 | 2018-12-11 | Machine learning device and machine learning system using the same |
CN201811542512.5A CN110533188A (zh) | 2018-05-25 | 2018-12-17 | 机器学习设备和使用其的机器学习系统 |
JP2019005632A JP7292039B2 (ja) | 2018-05-25 | 2019-01-17 | マシンラーニング装置、及びそれを利用したマシンラーニングシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180059754A KR102615443B1 (ko) | 2018-05-25 | 2018-05-25 | 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190134293A true KR20190134293A (ko) | 2019-12-04 |
KR102615443B1 KR102615443B1 (ko) | 2023-12-20 |
Family
ID=68614695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180059754A KR102615443B1 (ko) | 2018-05-25 | 2018-05-25 | 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11972328B2 (ko) |
JP (1) | JP7292039B2 (ko) |
KR (1) | KR102615443B1 (ko) |
CN (1) | CN110533188A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220051089A1 (en) * | 2020-08-17 | 2022-02-17 | Google Llc | Neural Network Accelerator in DIMM Form Factor |
US11592984B2 (en) | 2020-09-11 | 2023-02-28 | Seagate Technology Llc | Onboard machine learning for storage device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06347563A (ja) * | 1993-06-07 | 1994-12-22 | Hitachi Ltd | 気象予測システムおよびニューロコンピュータ制御システム |
JP2016126801A (ja) * | 2014-12-31 | 2016-07-11 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 学習メカニズムを有する電子システム及びその動作方法並びに不揮発性コンピュータ読取可能ストレージ媒体 |
KR20170063334A (ko) * | 2015-11-30 | 2017-06-08 | 삼성전자주식회사 | 가속기 컨트롤러 및 그것의 가속기 로직 로딩 방법 |
JP2018028910A (ja) * | 2016-08-15 | 2018-02-22 | 三星電子株式会社Samsung Electronics Co.,Ltd. | Ddr sdramインタフェイスのためのdram支援エラー訂正メカニズム |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0736699A (ja) | 1993-07-15 | 1995-02-07 | Omron Corp | ファジィ・コンピュータ・システムおよびその動作方法、ファジィ推論回路および方法、ならびにディバイス・ドライバおよびその動作方法 |
JPH1115773A (ja) | 1997-06-24 | 1999-01-22 | Matsushita Electron Corp | 半導体集積回路、コンピュータシステム、データ処理装置及びデータ処理方法 |
US6028447A (en) | 1997-07-24 | 2000-02-22 | Lucent Technologies Inc. | FPGA having predictable open-drain drive mode |
JP2002207713A (ja) | 2001-01-11 | 2002-07-26 | Matsushita Electric Ind Co Ltd | Cpu間データ通信方法および装置 |
US10572824B2 (en) | 2003-05-23 | 2020-02-25 | Ip Reservoir, Llc | System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines |
US8015433B2 (en) | 2006-09-13 | 2011-09-06 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with nonvolatile memory for storage of failure-related data |
US20170169358A1 (en) * | 2015-12-09 | 2017-06-15 | Samsung Electronics Co., Ltd. | In-storage computing apparatus and method for decentralized machine learning |
KR20170100416A (ko) | 2016-02-25 | 2017-09-04 | 에스케이하이닉스 주식회사 | 집적 회로 시스템 |
JP6320439B2 (ja) * | 2016-03-10 | 2018-05-09 | 株式会社東芝 | メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法 |
EP3286638A4 (en) | 2016-03-31 | 2018-09-05 | Hewlett-Packard Enterprise Development LP | Logical operations |
US20180025268A1 (en) | 2016-07-21 | 2018-01-25 | Tessera Advanced Technologies, Inc. | Configurable machine learning assemblies for autonomous operation in personal devices |
US11694066B2 (en) * | 2017-10-17 | 2023-07-04 | Xilinx, Inc. | Machine learning runtime library for neural network acceleration |
US10394706B2 (en) * | 2017-11-02 | 2019-08-27 | Western Digital Technologies, Inc. | Non-volatile storage with adaptive command prediction |
US11373088B2 (en) * | 2017-12-30 | 2022-06-28 | Intel Corporation | Machine learning accelerator mechanism |
-
2018
- 2018-05-25 KR KR1020180059754A patent/KR102615443B1/ko active IP Right Grant
- 2018-12-11 US US16/216,054 patent/US11972328B2/en active Active
- 2018-12-17 CN CN201811542512.5A patent/CN110533188A/zh active Pending
-
2019
- 2019-01-17 JP JP2019005632A patent/JP7292039B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06347563A (ja) * | 1993-06-07 | 1994-12-22 | Hitachi Ltd | 気象予測システムおよびニューロコンピュータ制御システム |
JP2016126801A (ja) * | 2014-12-31 | 2016-07-11 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 学習メカニズムを有する電子システム及びその動作方法並びに不揮発性コンピュータ読取可能ストレージ媒体 |
KR20170063334A (ko) * | 2015-11-30 | 2017-06-08 | 삼성전자주식회사 | 가속기 컨트롤러 및 그것의 가속기 로직 로딩 방법 |
JP2018028910A (ja) * | 2016-08-15 | 2018-02-22 | 三星電子株式会社Samsung Electronics Co.,Ltd. | Ddr sdramインタフェイスのためのdram支援エラー訂正メカニズム |
KR20180019473A (ko) * | 2016-08-15 | 2018-02-26 | 삼성전자주식회사 | Ddr sdram 인터페이스를 위한 dram 지원 에러 정정 메커니즘 |
Non-Patent Citations (1)
Title |
---|
Tommy Tracy et al. "Towards Machine Learning on the Automata Processor". International Conference on High Performance Computing. June 2016.* * |
Also Published As
Publication number | Publication date |
---|---|
US20190362261A1 (en) | 2019-11-28 |
JP2019204485A (ja) | 2019-11-28 |
CN110533188A (zh) | 2019-12-03 |
JP7292039B2 (ja) | 2023-06-16 |
US11972328B2 (en) | 2024-04-30 |
KR102615443B1 (ko) | 2023-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10002668B2 (en) | Memory device, memory module, and memory system | |
US10248340B2 (en) | Semiconductor apparatus, memory module and operation method thereof | |
US10592445B2 (en) | Techniques to access or operate a dual in-line memory module via multiple data channels | |
US9792978B2 (en) | Semiconductor memory device and memory system including the same | |
US7886103B2 (en) | Input-output module, processing platform and method for extending a memory interface for input-output operations | |
US11226766B2 (en) | Buffer circuit with data bit inversion | |
US6463001B1 (en) | Circuit and method for merging refresh and access operations for a memory device | |
US9026870B2 (en) | Memory module and a memory test system for testing the same | |
CN102084428A (zh) | 多模式存储器装置和方法 | |
JP2016514320A (ja) | メモリシステム | |
US10908827B2 (en) | Semiconductor memory devices, and memory systems and electronic apparatuses having the same | |
EP4235439A1 (en) | Techniques to interpret command/address logic at a memory device as inverted or not | |
US10324870B2 (en) | Memory circuit with integrated processor | |
KR20220148259A (ko) | 온 메모리 패턴 매칭을 위한 장치들 및 방법들 | |
US9442658B2 (en) | Apparatuses and methods including selectively providing a single or separate chip select signals | |
KR102615443B1 (ko) | 머신 러닝 장치 및 이를 이용한 머신 러닝 시스템 | |
US20170147230A1 (en) | Memory device and memory system having heterogeneous memories | |
US9099166B2 (en) | Memory module and memory system comprising same | |
US20240168896A1 (en) | Memory controller, electric system including the same and method of controlling memory access | |
KR101861647B1 (ko) | 메모리 시스템 및 그 리프레시 제어 방법 | |
KR20130102816A (ko) | 데이터 액세스 메모리 및 그것의 데이터 손실 방지 방법 | |
CN108376555B (zh) | 存储器设备及其测试方法以及存储器模块及使用其的系统 | |
US20190096459A1 (en) | Memory devices for performing multiple write operations and operating methods thereof | |
KR20220120963A (ko) | 머신러닝 기반의 빅데이터 분석 및 성능 감시 시스템 | |
CN117789785A (zh) | 存储器件及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |