KR20200108774A - 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 - Google Patents

순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 Download PDF

Info

Publication number
KR20200108774A
KR20200108774A KR1020200013303A KR20200013303A KR20200108774A KR 20200108774 A KR20200108774 A KR 20200108774A KR 1020200013303 A KR1020200013303 A KR 1020200013303A KR 20200013303 A KR20200013303 A KR 20200013303A KR 20200108774 A KR20200108774 A KR 20200108774A
Authority
KR
South Korea
Prior art keywords
memory
command
instruction
host
memory device
Prior art date
Application number
KR1020200013303A
Other languages
English (en)
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 DE102020106357.1A priority Critical patent/DE102020106357A1/de
Priority to US16/814,236 priority patent/US20200293452A1/en
Priority to CN202010165017.8A priority patent/CN111694513A/zh
Priority to SG10202002232UA priority patent/SG10202002232UA/en
Publication of KR20200108774A publication Critical patent/KR20200108774A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Abstract

순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법이 개시된다. 본 개시의 기술적 사상의 일측면에 따른 메모리 장치는, 하나 이상의 뱅크들을 포함하고, 각각의 뱅크는 메모리 셀들을 포함하는 메모리 뱅크와, 호스트로부터 제공된 데이터 및 상기 메모리 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM 회로 및 상기 호스트로부터 제공된 명령어들을 저장하는 제1 내지 제m 명령어 큐들을 포함하는 명령어 메모리를 구비하고, 상기 호스트로부터의 연산 요청에 응답하여 상기 제1 내지 제m 명령어 큐들에 저장된 명령어들이 실행되고, 상기 명령어 메모리는 순환 큐 방식에 기반하여 명령어들을 저장함에 따라, 실행이 완료된 명령어 큐에 상기 호스트로부터 제공되는 새로운 명령어가 업데이트되는 것을 특징으로 한다.

Description

순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법{Memory Device including instruction memory based on circular queue and Operation Method thereof}
본 개시의 기술적 사상은 메모리 장치에 관한 것으로서, 상세하게는 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법에 관한 것이다.
고성능 전자 시스템에 널리 사용되고 있는 반도체 메모리 장치(semiconductor memory device)는 그 용량 및 속도가 증가하고 있다. 메모리 장치는 데이터 등 각종 정보를 저장하는 용도로 이용될 수 있으며, 일 예로서 뉴럴 네트워크(neural network) 연산 등 다양한 종류의 연산 처리에 이용되는 데이터를 저장하거나 연산 처리 결과를 저장하는 용도로 이용될 수 있다. 또한, 방대한 양의 연산을 효율적으로 수행하기 위해 적어도 일부의 연산 동작이 메모리 장치 내의 PIM (Processor in Memory) 회로들에서 수행되는 방안이 제안되고 있다.
뉴럴 네트워크 기능을 위해 다수의 연산들이 수행될 수 있으며, 다수의 연산들의 수행을 위한 명령어들이 메모리 장치에 저장될 수 있다. 그러나, 방대한 양의 명령어들이 메모리 장치에 저장되는 경우 면적 효율이 낮아질 수 있으며, 또한 저장 공간의 확보를 위한 비용이 증가할 수 있는 문제가 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 방대한 양의 연산을 수행하는 메모리 장치에서 명령어의 저장 공간의 효율성을 향상할 수 있는 메모리 장치 및 그 동작방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 장치는, 하나 이상의 뱅크들을 포함하고, 각각의 뱅크는 메모리 셀들을 포함하는 메모리 뱅크와, 호스트로부터 제공된 데이터 및 상기 메모리 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM 회로 및 상기 호스트로부터 제공된 명령어들을 저장하는 제1 내지 제m 명령어 큐들을 포함하는 명령어 메모리를 구비하고, 상기 호스트로부터의 연산 요청에 응답하여 상기 제1 내지 제m 명령어 큐들에 저장된 명령어들이 실행되고, 상기 명령어 메모리는 순환 큐 방식에 기반하여 명령어들을 저장함에 따라, 실행이 완료된 명령어 큐에 상기 호스트로부터 제공되는 새로운 명령어가 업데이트되는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 다른 측면에 따른 메모리 장치는, 하나 이상의 뱅크들을 포함하고, 각각의 뱅크는 메모리 셀들을 포함하는 메모리 뱅크와, 호스트로부터 제공된 데이터 및 상기 메모리 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM 회로와, 상기 호스트로부터 제공된 명령어들을 저장하는 제1 내지 제m 명령어 큐들을 포함하는 명령어 메모리와, 상기 명령어 메모리에 저장되는 상기 명령어들 각각에 대응하는 인덱스를 생성하는 인덱스 관리자 및 상기 호스트로부터 상기 명령어들의 실행 순서를 나타내는 인덱스 순서 정보를 저장하는 인덱스 순서 저장 회로를 구비하고, 상기 호스트로부터 연산 요청이 제공됨에 따라, 상기 인덱스 순서 정보에 따른 순서로서 상기 명령어 메모리에 저장된 명령어들이 실행되는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 다른 측면에 따른 메모리 장치의 동작방법은, 뉴럴 네트워크 기능을 위한 다수의 명령어들 중 일부의 명령어를 명령어 메모리의 다수의 명령어 큐들에 로딩하는 단계와, 상기 로딩된 명령어들을 순차적으로 실행함으로써 PIM 회로에서 연산 처리를 수행하는 단계와, 상기 뉴럴 네트워크 기능을 위한 다수의 명령어들 중 다른 일부의 명령어들을 기 실행된 명령어들을 저장하는 명령어 큐들에 오버라이트하는 단계 및 상기 오버라이트된 명령어들을 순차적으로 실행함으로써 상기 PIM 회로에서 연산 처리를 수행하는 단계를 구비하는 것을 특징으로 한다.
본 발명의 기술적 사상의 메모리 장치 및 그 동작방법에 따르면, 순환 방식의 명령어 큐를 이용함으로써, 방대한 양의 연산을 위한 명령어들을 저장하기 위한 메모리의 사이즈를 감소할 수 있으며, 그 구현 비용을 감소할 수 있는 효과가 있다.
한편, 본 발명의 기술적 사상의 메모리 장치 및 그 동작방법에 따르면, 억세스 속도가 빠른 플립플롭이나 래치 등의 저장 회로를 명령어 큐로 이용할 수 있으므로, 연산 처리시에 명령어의 억세스 속도를 향상하고, 이를 통해 연산 처리 속도를 향상할 수 있는 효과가 있다.
도 1은 본 발명의 예시적인 실시예에 따른 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
도 2는 도 1의 명령어 메모리의 일 구현 예를 나타내는 블록도이다.
도 3은 도 1의 메모리 장치의 구체적인 구현 예를 나타내는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 5는 본 발명의 예시적인 실시예에 따른 메모리 시스템의 동작 예를 나타내는 개념도이다.
도 6 및 도 7은 본 발명의 예시적인 실시예에 따른 다양한 명령어 업데이트 동작을 나타내는 개념도이다.
도 8은 본 발명의 예시적인 실시예들에 따른 명령어 업데이트 동작에 관련된 각종 신호들의 일 예를 나타내는 도면이다.
도 9는 본 발명의 다른 예시적인 실시예에 따른 메모리 장치의 구현 예를 나타내는 블록도이다.
도 10은 본 발명의 예시적인 실시예에 따라 인덱스 순서에 기반하여 명령어들이 실행되는 예를 나타내는 도면이다.
도 11은 본 발명의 예시적인 실시예들에 따른 명령어의 저장 예 및 인덱스 할당 예를 나타내는 도면이다.
도 12는 본 발명의 예시적인 실시예에 따른 메모리 장치의 일 구현 예를 나타내는 블록도이다.
도 13은 본 발명의 예시적인 실시예의 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
도 14는 본 발명의 예시적인 실시예의 메모리 장치가 HBM(high bandwidth memory)을 포함하는 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 발명의 예시적인 실시예에 따른 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함할 수 있다. 메모리 컨트롤러(100)는 메모리 인터페이스(110)를 포함할 수 있으며, 메모리 인터페이스(110)를 통해 각종 신호를 메모리 장치(200)로 제공하여 기록 및 독출 등의 메모리 동작을 제어할 수 있다. 예컨대, 메모리 컨트롤러(100)는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치(200)로 제공하여 메모리 장치(200)의 데이터(DATA)를 억세스할 수 있다.
메모리 컨트롤러(100)는 호스트(HOST)로부터의 요청에 따라 메모리 장치(200)를 억세스할 수 있으며, 메모리 인터페이스(110)는 메모리 장치(200)와 인터페이스를 제공할 수 있다. 메모리 컨트롤러(100)는 다양한 프로토콜을 사용하여 호스트와 통신할 수 있다. 예시적인 실시예들에 따라, 메모리 컨트롤러(100)는 호스트(HOST)에 상응하거나, 또는 메모리 컨트롤러(100)는 호스트(HOST) 내부에 구비되는 구성에 해당할 수도 있을 것이다. 호스트(HOST)와 메모리 장치(200)는 데이터 처리 시스템을 구성할 수 있으며, 이에 따라 메모리 시스템(10)은 데이터 처리 시스템에 상응하거나, 또는 데이터 처리 시스템에 포함되는 구성으로 정의될 수 있을 것이다.
메모리 장치(200)는 메모리 뱅크(210), 명령어 메모리(220), 연산 로직(230) 및 제어 로직(240)을 포함할 수 있고, 메모리 뱅크(210)는 다수 개의 뱅크들(예컨대, 제1 내지 제N 뱅크들(BANK 1 ~ BANK N))을 포함할 수 있으며, 제1 내지 제N 뱅크들(BANK 1 ~ BANK N) 각각은 다수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다. 또한, 연산 로직(230)은 하나 이상의 PIM (Processor in Memory) 회로들을 포함할 수 있으며, 도 1에서는 메모리 뱅크(210)의 N 개의 뱅크들에 대응하여 연산 로직(230)이 N 개의 PIM 회로들(예컨대, 제1 내지 제N PIM 회로들(231_1 ~ 231_N))을 포함하는 예가 도시되었으나, 연산 로직(230)은 다양한 개수의 PIM 회로들을 포함할 수도 있을 것이다. 일 예로서, 하나의 뱅크에 대응하여 다수의 PIM 회로들이 배치되는 경우에는 PIM 회로들의 개수는 뱅크들의 개수보다 많을 수 있고, 반면에 하나의 PIM 회로가 두 개 이상의 뱅크들에 공유되는 경우에는 PIM 회로들의 개수는 뱅크들의 개수보다 적을 수 있다. 또한, 각각의 PIM 회로는 호스트로부터의 데이터와, 메모리 뱅크(210)에서 독출된 정보 중 적어도 하나를 이용한 연산 처리를 수행할 수 있다.
메모리 컨트롤러(100)로부터의 어드레스(ADD)에 의해 데이터 억세스가 수행될 뱅크가 선택될 수 있으며, 또한 뱅크 내의 메모리 셀들이 선택될 수 있다. 또한, 제어 로직(240)은 커맨드/어드레스 디코더(241)를 포함할 수 있으며, 커맨드/어드레스 디코더(241)는 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 대한 디코딩 동작을 수행할 수 있다. 제어 로직(240)은 디코딩 결과에 따라 메모리 동작 또는 연산 동작이 수행되도록 메모리 장치(200)에 대한 내부 제어 동작을 수행할 수 있으며, 일 예로서 내부 제어 동작을 수행하기 위한 내부 커맨드(미도시)를 출력할 수 있다.
한편, 메모리 장치(200)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus Dynamic Random Access Memory) 등과 같은 동적 랜덤 억세스 메모리(Dynamic Random Access Memory, DRAM)일 수 있다. 그러나, 본 발명의 실시예들은 이에 국한될 필요가 없으며, 일 예로서 메모리 장치(200A)는 플래시 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등의 불휘발성 메모리로 구현되어도 무방하다.
또한, 메모리 장치(200)는 하나의 반도체 칩에 해당하거나, 또는 독립적인 인터페이스를 갖는 다수의 채널들을 포함하는 메모리 장치에서 하나의 채널에 상응하는 구성일 수도 있다. 또는, 메모리 장치(200)는 메모리 모듈에 상응하는 구성일 수 있으며, 또는 메모리 모듈이 다수의 메모리 칩들을 포함하고 도 1의 메모리 장치(200)는 모듈 보드 상에 장착되는 하나의 메모리 칩에 해당할 수도 있다.
이하에서는, 본 발명의 예시적인 실시예들에 따라, 명령어 메모리(220)에 명령어들이 저장되는 동작과, 연산 로직(230)이 연산 처리를 수행하는 일 예가 설명된다. 다양한 종류의 연산 처리 동작이 메모리 장치(200) 내에서 수행될 수 있으며, 일 예로서 인공 지능과 관련하여 뉴럴 네트워크 기능을 위한 다수의 연산들 중 적어도 일부가 메모리 장치(200) 내에서 수행될 수 있다. 예컨대, 호스트(HOST)는 다수의 연산들 중 적어도 일부가 메모리 장치(200)에 의해 수행될 수 있도록, 메모리 컨트롤러(100)를 통해 메모리 장치(200)를 제어할 수 있을 것이다. 또한, 이하의 실시예에서는 메모리 컨트롤러(100)가 메모리 장치(200)를 제어하는 것으로 설명될 것이나, 본 발명의 실시예들은 이에 국한될 필요가 없다. 예컨대, 메모리 컨트롤러(100)는 호스트(HOST) 내에 구비되는 구성에 해당하고, 호스트(HOST)가 메모리 장치(200)를 제어하는 것으로 설명되어도 무방할 것이다.
명령어 메모리(220)는 순환 큐(Circular Queue) 방식에 기반하여 다수의 명령어들을 저장할 수 있고, 명령어 메모리(220)는 다수의 명령어 큐들(미도시)을 포함할 수 있다. 명령어 큐는 정보를 저장하는 하나 이상의 저장 회로들을 포함할 수 있고, 예시적인 실시예에 따라 하나의 명령어 큐는 하나의 명령어를 저장하는 단위로 정의될 수 있다.
메모리 컨트롤러(100)는 연산 처리를 수행하기 위하여 명령어들(Inst)을 메모리 장치(200)로 전송할 수 있다. 일 예로서, 메모리 컨트롤러(100)는 다수의 연산 처리들이 일련하게 수행될 수 있도록 다수의 명령어들(Inst)을 메모리 장치(200)로 전송할 수 있다. 일 예로서, 실제 연산 처리가 수행되기 전에 다수의 명령어들(Inst)을 명령어 메모리(220)에 로딩하기 위한 모드(예컨대, 명령어 로딩 모드)가 수행될 수 있으며, 명령어 로딩 모드 동안 다수의 명령어들(Inst)이 명령어 메모리(220)의 명령어 큐에 로딩될 수 있다. 한편, 도 1에서는 명령어들(Inst)과 데이터(DATA)가 별개의 전송 버스를 통해 전송되는 것으로 도시되었으나, 본 발명의 실시예는 다양하게 구현될 수 있으며, 일 예로서 명령어들(Inst)은 데이터(DATA)와 동일한 전송 버스를 통해 전송될 수 있을 것이다.
뉴럴 네트워크 기능을 위해 메모리 장치(200)에서 수행되는 전체 연산들에 대응하는 명령어들(이하, 전체 명령어들로 지칭함)이 명령어 메모리(220)에 로딩되어 실행(execution)될 필요가 있으며, 명령어 메모리(220)는 상기 전체 명령어들을 저장하기 위한 사이즈보다 작은 사이즈의 저장 공간을 포함할 수 있다. 일 예로서, 명령어 메모리(220)의 명령어 큐들에는 상기한 전체 명령어들 중 일부의 명령어들이 저장되고, 저장된 명령어들은 순차적으로 실행될 수 있으며, 이에 따라 일부의 명령어 큐들은 이미 실행이 완료되어 더 이상 이용되지 않는 명령어들을 저장할 수 있다. 본 발명의 예시적인 실시예에 따라, 상기 전체 명령어들 중 나머지 일부의 명령어들이 상기한 실행이 완료된 명령어들을 저장하는 명령어 큐들에 순차적으로 업데이트될 수 있다.
한편, 제1 내지 제N PIM 회로들(231_1 ~ 231_N) 각각은 프로세싱 소자(PE)를 포함할 수 있으며, 프로세싱 소자(PE)는 대응하는 뱅크로부터 독출된 정보와, 메모리 컨트롤러(100)로부터 제공된 데이터(DATA) 중 적어도 하나를 이용한 연산 처리를 수행할 수 있다. 도 1에서는 각각의 PIM 회로에 대해 하나의 프로세싱 소자(PE)가 도시되었으나, 각각의 PIM 회로는 다수의 프로세싱 소자(PE)들을 포함할 수도 있다. 프로세싱 소자(PE)는 다양한 종류의 연산기를 포함할 수 있으며, 일 예로서 SIMD(single instruction multi data), ALU(arithmetical and logical unit) 등의 연산기를 포함할 수 있다. 또한, 제1 내지 제N PIM 회로들(231_1 ~ 231_N) 각각은 연산 처리에 관련된 다른 다양한 구성들을 포함할 수 있으며, 일 예로서 연산 처리에 이용되는 데이터를 일시 저장하거나, 또는 연산 처리 결과를 일시적으로 저장하는 레지스터(미도시) 등의 저장 회로를 더 포함할 수도 있을 것이다.
메모리 장치(200)는 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 응답하여 메모리 동작 또는 연산 처리 동작을 선택적으로 수행할 수 있다. 일 예로서, 연산 처리를 요청하기 위한 별도의 커맨드(CMD)가 정의될 수 있고, 이 경우 연산 요청을 위해 정의된 커맨드(CMD)가 수신되는 경우에 명령어가 실행되어 연산 처리가 수행될 수 있다. 또는, 일 실시예에서, 연산 처리 동작은 데이터 기록/독출 등 기 정의되는 노멀한 커맨드(CMD)에 응답하여 수행될 수도 있다. 일 동작 예로서, 메모리 컨트롤러(100)로부터의 어드레스(ADD)의 값은 메모리 뱅크(210)의 실제 메모리 셀 어레이의 영역을 지시하기 위한 범위에 속하거나, 또는 그 이외의 범위에 속할 수 있으며, 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)의 디코딩 결과에 기반하여 명령어가 실행되어 연산 처리가 수행될 수도 있을 것이다. 이하의 실시예들에서는, 명령어의 실행 및 새로운 명령어의 업데이트 동작이 노멀한 커맨드(CMD)에 응답하여 수행되는 것으로 가정한다.
예시적인 실시예에 따라, 메모리 컨트롤러(100)는 명령어 저장(또는, 로딩)을 위한 커맨드/어드레스(CMD/ADD)를 제공할 수 있으며, 명령어의 로딩 및 업데이트 동작과 관련하여 명령어 메모리(220)의 위치를 지시하기 위한 큐 어드레스(ADD_Q)를 상기한 어드레스(ADD)로서 메모리 장치(200)로 제공할 수 있다. 또한, 순환 큐 방식에 기반하여 명령어를 명령어 큐에 업데이트함에 있어서, 메모리 컨트롤러(100)로부터의 큐 어드레스(ADD_Q)는 이미 실행(execution)이 완료된 명령어가 저장된 명령어 큐를 지시할 수 있다. 상기와 같은 명령어 업데이트 동작은 연산 처리와 함께 런타임(runtime) 방식으로 수행될 수 있으며, 이에 따라 연산 요청을 위한 커맨드/어드레스(CMD/ADD)의 수신에 응답하여 연산 처리 및 명령어 업데이트 동작이 수행될 수 있다. 또는, 다양한 실시예들에 따라, 상기 명령어 업데이트 동작은 연산 처리와는 별개의 커맨드에 의해 서로 다른 타이밍에서 수행될 수도 있을 것이다.
상기와 같은 본 발명의 실시예에 따르면, 방대한 양의 연산 처리를 수행하기 위한 명령어들을 저장하는 저장 공간을 감소시킬 수 있으므로, 면적의 측면에서 효율성을 향상할 수 있을 뿐 아니라, 명령어 저장에 이용되는 메모리의 구현 비용을 감소시킬 수 있다. 또한, 명령어 메모리(220)의 용량이 감소될 수 있으므로, 억세스 속도가 빠른 고성능의 메모리가 이용될 수 있으며, 일 예로서 SRAM(Static Random Access Memory) 보다 더 빠른 억세스 속도를 갖는 플립플롭, 래치 등의 저장 회로가 명령어 메모리(220)에 이용될 수 있다.
한편, 도 1에서는 각각의 뱅크와 명령어 메모리(220) 및 연산 로직(230)이 서로 별개의 구성인 것으로 도시되었으나, 본 발명의 실시예는 이에 국한될 필요가 없다. 일 예로서, 뱅크는 메모리 셀 어레이와 함께 다른 다양한 구성 요소들을 포함하는 것으로 정의될 수 있으며, 일 예로서 명령어 큐가 뱅크에 포함되는 것으로 정의되어도 무방하며, 또한 PIM 회로에 구비되는 구성요소들 중 적어도 일부가 상기 뱅크에 포함되는 것으로 정의되어도 무방할 것이다.
메모리 시스템(10) 또는 이를 포함하는 데이터 처리 시스템은 PC(personal computer), 데이터 서버, 클라우드 시스템, 인공 지능 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 또한, 데이터 처리 시스템이 휴대용 전자 기기인 경우, 데이터 처리 시스템은 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
도 2는 도 1의 명령어 메모리의 일 구현 예를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 명령어 메모리(220)는 순환 큐 방식에 기반하여 다수의 명령어들을 저장하는 명령어 큐들(일 예로, 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1))을 포함할 수 있다. 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1) 각각은 저장 회로를 포함할 수 있으며, 도 2에서는 래치 또는 플립플롭이 이용되는 예가 도시되었으나, 본 발명의 실시예는 이에 국한될 필요 없이 다른 다양한 종류의 저장 회로가 적용될 수도 있다.
일 동작 예로서, 뉴럴 네트워크 기능을 위한 다수의 명령어들 중 일부가 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1)에 저장될 수 있으며, 일 예로서 명령어 로딩 모드에서 제1 내지 제n 명령어들(Inst 0 ~ Inst n-1)이 명령어 메모리(220)에 로딩될 수 있다. 이후, 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 응답하여 명령어 메모리(220)에 저장된 제1 내지 제n 명령어들(Inst 0 ~ Inst n-1)이 순차적으로 실행될 수 있다. 또한, 실행이 완료된 명령어가 저장된 명령어 큐에는 상기한 다수의 명령어들 중 나머지 일부의 명령어들이 업데이트되어 저장될 수 있다.
명령어의 업데이트 동작은 다양한 타이밍에서 수행될 수 있으며, 연산 처리가 수행되는 경우에 새로운 명령어를 명령어 큐에 업데이트하는 동작이 함께 수행될 수 있다. 일 예로서, 제1 내지 제n 명령어들(Inst 0 ~ Inst n-1)을 순차적으로 실행하는 과정에서 특정 타이밍에서 명령어 업데이트 동작이 시작될 수 있으며, 하나의 명령어가 실행됨과 함께 하나의 새로운 명령어가 명령어 큐에 업데이트될 수 있다. 예컨대, 제1 명령어(Inst 0)가 실행되고 난 후, 다음의 제2 명령어(Inst 1)가 실행되는 경우에 명령어의 업데이트 동작이 시작될 수 있으며, 이미 실행이 완료된 제1 명령어 큐(IQ 0)에 제(n+1) 명령어가 업데이트될 수 있다. 또한, 제3 내지 제n 명령어들(Inst 2 ~ Inst n-1)이 순차적으로 실행됨에 따라, 제2 내지 제n-1 명령어 큐(IQ 1 ~ IQ n-2)에 새로운 명령어들이 순차적으로 업데이트될 수 있다. 상기와 같은 순환 큐 방식에 따라 뉴럴 네트워크 기능에 포함된 전체의 명령어들이 명령어 메모리(220)에 로딩되어 실행될 수 있다.
예시적인 실시예에 따라, 명령어의 업데이트 동작은 다수의 명령어들이 실행되고 난 후 시작될 수 있다. 일 동작 예로서, k 번째(k 는 n 미만의 정수) 명령어 큐에 저장된 명령어가 실행되고 난 후, 다음의 명령어가 실행될 때 제1 명령어 큐(IQ 0)로부터 명령어 업데이트 동작이 시작될 수 있다. 또는, 명령어의 업데이트 동작은 명령어 메모리(220)의 마지막 명령어 큐(예컨대, 제n 명령어 큐(IQ n-1))의 명령어가 실행될 때 수행될 수도 있다. 예컨대, 제n 명령어 큐(IQ n-1)의 명령어가 실행될 때 제1 명령어 큐(IQ 0)로부터 명령어 업데이트 동작이 시작될 수 있다.
한편, 다양한 실시예들에 따라, 명령어 업데이트 동작은 명령어의 실행과 별개의 타이밍에서 수행될 수도 있다. 일 동작 예로서, 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1) 중 일부의 명령어 큐들의 명령어들이 실행되고 나면, 메모리 컨트롤러(100)로부터의 제어에 기반하여 상기 실행이 완료된 명령어 큐들 중 적어도 일부에 대해 새로운 명령어들을 업데이트하는 동작이 수행될 수 있다. 이후, 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1) 중 다른 일부의 명령어 큐들의 명령어들이 실행되고, 이후 상기 실행이 완료된 명령어 큐들 중 적어도 일부에 대한 업데이트 동작이 다시 수행될 수 있다. 상기와 같은 과정을 통해 명령어들을 실행하는 동작과 새로운 명령어들을 업데이트하는 동작이 교번하게 수행될 수 있고, 이에 따라 명령어 메모리보다 큰 사이즈에 해당하는 다수의 명령어들이 명령어 메모리에 저장되어 실행될 수 있다.
한편, 상기한 실시예에서 연산 처리와 명령어 업데이트 동작이 함께 수행된다는 의미는 상기 동작들이 동시에 수행되는 것을 나타낼 필요는 없다. 일 동작 예로서, 메모리 장치(200)는 메모리 컨트롤러(100)로부터의 커맨드/어드레스(CMD/ADD)에 응답하여 상기한 연산 처리와 명령어 업데이트 동작을 순차적으로 또는 병렬하게 수행할 수 있다. 또는, 연산 처리를 수행할 때마다 명령어 업데이트 동작을 위해 커맨드(CMD) 및 어드레스(ADD) 중 적어도 하나가 메모리 장치(200)로 더 제공될 수 있으며, 명령어 업데이트 동작이 별개의 커맨드/어드레스(CMD/ADD)에 응답하여 수행될 수도 있을 것이다.
도 3은 도 1의 메모리 장치의 구체적인 구현 예를 나타내는 블록도이다.
도 1 내지 도 3을 참조하면, 메모리 장치(200)는 도 1에 도시된 구성요소들 이외에도 연산 처리에 관련된 다양한 구성요소들을 더 포함할 수 있다. 메모리 장치(200)는 프로세싱 제어기(232) 및 프로그램 카운터(233)를 더 포함할 수 있으며, 프로세싱 제어기(232)는 메모리 장치(200) 내의 연산 처리에 관련된 전반적인 동작을 제어할 수 있다. 일 예로서, 프로세싱 제어기(232)는 명령어 메모리(220)에 저장된 명령어들을 독출하고 디코딩하는 동작을 수행할 수 있으며, 독출된 명령어에 대응하는 연산 처리가 수행될 수 있도록 제1 내지 제N PIM 회로들(231_1 ~ 231_N)을 제어할 수 있다.
프로그램 카운터(233)는 프로그램 카운팅 동작을 수행하여 명령어 메모리(220)에서 독출될 명령어를 지시할 수 있다. 예컨대, 메모리 컨트롤러(100)로부터 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)를 수신함에 응답하여, 프로그램 카운터(233)의 현재 카운팅 값에 대응하는 위치의 명령어가 독출되고, 카운팅 동작에 기반하여 카운팅 값을 증가시킬 수 있다. 또는, 다양한 실시예들에 따라, 연산 처리를 지시하는 커맨드/어드레스(CMD/ADD)에 응답하여 프로그램 카운터(223)의 현재 카운팅 값을 증가시키고, 증가된 카운팅 값에 대응하는 위치로부터 명령어가 독출될 수도 있을 것이다.
한편, 도 3에 도시된 프로세싱 제어기(232) 및 프로그램 카운터(233)는 다양한 형태로 구현될 수 있고, 일 예로서 프로세싱 제어기(232) 및 프로그램 카운터(233)는 연산 로직(230)에 구비되는 구성일 수 있다. 또한, 도 3에서는 명령어 메모리(220), 프로세싱 제어기(232) 및 프로그램 카운터(233)가 제1 내지 제N PIM 회로들(231_1 ~ 231_N)에 공통하게 배치되는 것으로 도시되었으나, 상기 구성요소들은 각각의 PIM 회로에 대해 개별적으로 배치되도록 메모리 장치(200)가 구현될 수도 있을 것이다.
명령어 로딩 동작 및 업데이트 동작은 제어 로직(240)의 제어에 기반하여 수행될 수 있다. 일 예로서, 제어 로직(240)은 메모리 컨트롤러(100)로부터 다양한 버스들을 통해 각종 정보들을 수신할 수 있고, 일 예로서 데이터 버스(DQ BUS)를 통해 명령어들을 수신할 수 있고, 또한 커맨드/어드레스 버스(CA BUS)를 통해 커맨드/어드레스를 수신할 수 있다. 제어 로직(240)은 명령어 로딩 모드에서 데이터 버스(DQ BUS)를 통해 수신된 명령어들을 명령어 메모리(220)에 저장하는 동작을 제어할 수 있고, 또한 본 발명의 예시적인 실시예들에 따라 명령어 메모리(220)에 순환 큐 방식에 기반하여 명령어를 오버라이트(overwrite)함으로써 명령어 업데이트 동작을 수행할 수 있다.
일 동작 예로서, 연산 처리와 함께 명령어 업데이트 동작이 수행되는 경우, 연산 처리는 프로그램 카운터(233)에 의해 지시되는 명령어를 기초로 프로세싱 제어기(232)의 제어에 기반하여 수행될 수 있다. 또한, 제어 로직(240)은 명령어와 함께 업데이트가 수행될 명령어 큐의 위치를 나타내는 어드레스(예컨대, 큐 어드레스(ADD_Q))를 메모리 컨트롤러(100)로부터 수신하고, 수신된 어드레스에 기반하여 순환 큐 방식에 따라 명령어 메모리(220)에 명령어들을 업데이트할 수 있다.
도 4는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 4를 참조하면, 메모리 장치는 연산 처리를 위한 명령어들을 저장하는 명령어 메모리를 포함할 수 있고, 명령어 메모리는 순환 큐 방식의 다수의 명령어 큐들을 포함할 수 있다. 또한, 뉴럴 네트워크 기능을 위한 다수의 명령어들이 메모리 장치에서 실행되어 연산 처리가 수행될 수 있으며, 하나의 명령어 큐에 하나의 명령어가 저장되는 것으로 가정하면, 명령어 메모리의 명령어 큐들의 개수가 상기한 뉴럴 네트워크 기능을 위한 전체 명령어들의 개수보다 적음에 따라, 상기 다수의 명령어들 중 일부의 명령어들이 명령어 큐에 로딩될 수 있다(S11).
이후, 메모리 장치는 메모리 컨트롤러로부터의 제어에 기반하여 연산 처리를 수행할 수 있고, 일 예로서 프로그램 카운팅 동작에 기반하여 명령어 메모리에 로딩된 명령어들을 순차적으로 실행할 수 있다(S12). 명령어 메모리에 로딩된 명령어가 실행되고 난 후에는, 이미 실행된 명령어는 더 이상 이용되지 않을 수 있다.
메모리 장치는, 연산 처리와 함께 또는 연산 처리와 별도의 타이밍에서 명령어 업데이트 동작을 수행할 수 있으며, 일 예로서 메모리 컨트롤러로부터의 제어에 기반하여 새로운 명령어들(예컨대, 상기한 전체 명령어들 중 다른 일부의 명령어들)을 기 실행된 명령어 큐에 오버라이트할 수 있다(S13). 뉴럴 네트워크 기능에 관련된 전체 명령어들의 개수와, 명령어 메모리에 구비되는 명령어 큐들의 개수에 기반하여, 어느 하나의 명령어 큐에 1 회 이상의 업데이트 동작이 수행될 수 있다.
상기와 같이 명령어가 업데이트됨에 따라, 초기 로딩되었던 명령어들이 모두 실행되고 나면, 오버라이트된(또는, 업데이트된) 명령어가 실행될 수 있고(S14), 이를 통해 뉴럴 네트워크 기능에 관련된 전체 명령어들이 실행될 수 있을 것이다.
도 5는 본 발명의 예시적인 실시예에 따른 메모리 시스템의 동작 예를 나타내는 개념도이다. 도 5에서는 메모리 장치가 호스트(HOST)와 통신하는 예가 도시되며, 호스트(HOST)는 메모리 장치와의 통신을 수행하는 메모리 컨트롤러(또는, 메모리 컨트롤 모듈)를 구비할 수 있다.
메모리 장치는 연산 처리와 관련하여 다수의 모드들에서 동작할 수 있고, 도 5를 참조하면, 명령어 로딩 모드에서 호스트(HOST)는 연산 처리에 필요한 다수의 명령어들을 메모리 장치로 전송할 수 있으며, 전송된 명령어는 메모리 장치 내의 명령어 큐들에 저장될 수 있다. 일 예로서, 전술한 실시예들에 따라, 뉴럴 네트워크 기능에 관련된 다수의 명령어들 중 일부의 명령어들만이 명령어 큐들에 저장될 수 있다.
한편, 메모리 장치는 실행 모드에서 동작할 수 있고, 호스트는 연산 요청(예컨대, 연산 처리를 지시하는 커맨드/어드레스)을 메모리 장치로 전송할 수 있으며, 메모리 장치는 연산 요청에 응답하여 프로그램 카운팅 동작에 기반하여 명령어 로딩 모드에서 로딩된 명령어들을 순차적으로 실행할 수 있다. 일 예로서, 가산, 감산, 곱셈 연산 등 다양한 종류들의 연산 처리가 메모리 장치에서 수행될 수 있으며, 상기 명령어들에 대한 디코딩 처리를 통해 명령어에 대응하는 종류의 연산 처리가 수행될 수 있다. 또한, 예시적인 실시예에서, 연산 결과가 메모리 장치로부터 호스트로 제공될 수 있다.
이후, 메모리 장치는 실행 및 업데이트 모드에서 동작할 수 있고, 호스트는 연산 요청과 함께 업데이트될 새로운 명령어를 메모리 장치로 전송할 수 있으며, 메모리 장치는 연산 요청에 대응하여 명령어를 실행함으로써 연산 처리를 수행할 수 있다. 또한, 메모리 장치는 호스트로부터의 새로운 명령어를 이전에 실행이 완료된 명령어 큐에 업데이트할 수 있으며, 일 예로서 하나의 명령어가 실행될 때마다 하나의 새로운 명령어가 업데이트될 수 있다.
상기와 같은 순환 큐 방식에 따라 뉴럴 네트워크 기능에 포함된 전체 명령어들이 명령어 메모리에 저장 및 업데이트될 수 있고, 이에 따라 모든 명령어들이 명령어 메모리에 저장되고 난 이후에는 메모리 장치는 상기한 실행 모드에서 동작할 수 있다. 실행 모드에서, 호스트는 연산 요청을 메모리 장치로 전송할 수 있고, 메모리 장치는 명령어 큐들에 저장된 명령어들을 순차적으로 실행할 수 있으며, 연산 결과를 호스트로 전송할 수 있다.
한편, 도 5에는 도시되지 않았으나 연산 처리를 수행하는 경우에 호스트는 데이터를 메모리 장치로 제공할 수 있고, 메모리 장치는 호스트로부터의 데이터와 메모리 뱅크 내에 저장된 정보 중 적어도 하나를 이용한 연산 처리를 수행할 수 있다.
도 6 및 도 7은 본 발명의 예시적인 실시예에 따른 다양한 명령어 업데이트 동작을 나타내는 개념도이다.
도 6을 참조하면, 명령어 메모리는 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1)을 포함할 수 있고, 명령어 로딩 모드에 따라 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1)에는 제1 내지 제n 명령어들(Inst 0 ~ Inst n-1)이 저장될 수 있다. 이후, 연산 처리가 수행됨에 따라, 제1 내지 제n 명령어들(Inst 0 ~ Inst n-1)이 순차적으로 실행될 수 있다.
예시적인 실시예들에 따라, 실행 모드에서 명령어들이 순차적으로 실행될 수 있고, 소정의 타이밍에서 새로운 명령어들에 대한 업데이트 동작이 수행될 수 있다. 도 6에는 그 일 예로서, 제k 명령어(Inst k-1)가 실행되는 경우에 제1 명령어 큐(IQ 0)로부터 명령어 업데이트 동작이 시작될 수 있고, 제1 명령어 큐(IQ 0)에 제n+1 명령어(Inst n)가 업데이트되는 예가 도시된다. 이후, 제k+1 명령어(Inst k)가 실행됨과 함께 제2 명령어 큐(IQ 1)에 제n+2 명령어(Inst n+1)가 업데이트될 수 있고, 추가의 새로운 명령어들이 순차적으로 업데이트될 수 있다.
한편, 도 6에 도시된 명령어 메모리에는 도 7에 도시된 바에 따라 다양한 방식에 기반하여 명령어 업데이트 동작이 수행될 수 있다.
도 7의 (a)를 참조하면, 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1)에 대한 로딩 동작이 완료된 후, 명령어가 실행될 때마다 업데이트 동작이 수행되는 예를 나타낸다. 일 예로서, 제1 명령어 큐(IQ 0)에 저장된 명령어가 실행되고 난 후, 제2 명령어 큐(IQ 1)에 저장된 명령어가 실행됨과 함께 제1 명령어 큐(IQ 0)의 업데이트 동작이 수행되고, 제3 명령어 큐(IQ 2)에 저장된 명령어가 실행됨과 함께 제2 명령어 큐(IQ 1)의 업데이트 동작이 수행될 수 있다. 또한 상기와 같은 방식에 따라 뉴럴 네트워크 기능에 관련된 모든 명령어들이 업데이트될 때까지 새로운 명령어가 오버라이트될 수 있다.
한편, 도 7의 (b)를 참조하면, 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1)에 대한 로딩 동작이 완료된 후, 일정 개수의 명령어들이 실행되고 난 후에 명령어 업데이트 동작이 시작될 수 있다. 일 예로서, 제1 내지 제4 명령어 큐들(IQ 0 ~ IQ 3)에 저장된 명령어들이 실행되고 난 후, 제5 명령어 큐(IQ 4)에 저장된 명령어가 실행됨과 함께 제1 명령어 큐(IQ 0)로부터 업데이트 동작이 시작될 수 있다. 이후, 연산 처리가 순차적으로 수행될 때마다 명령어 업데이트 동작이 함께 순차적으로 수행될 수 있고, 모든 명령어들이 업데이트될 때까지 새로운 명령어가 오버라이트될 수 있다.
한편, 도 7의 (c)는 연산 처리 동작과 명령어 업데이트 동작이 별개의 타이밍에서 수행되는 예를 나타낸다.
일 동작 예로서, 제1 내지 제n 명령어 큐들(IQ 0 ~ IQ n-1)에 대한 로딩 동작이 완료된 후, 일정 개수의 명령어들이 실행되고 난 후에 명령어 업데이트 동작이 시작될 수 있다. 도 7의 (c)에서는 제1 내지 제8 명령어 큐들(IQ 0 ~ IQ 7)에 저장된 명령어들이 실행되고 난 후에 명령어 업데이트 동작이 시작되며, 일정 개수(예컨대, 4 개)의 명령어들이 연산 처리와는 별개의 타이밍에서 업데이트되는 예가 도시된다. 이후, 소정의 개수(예컨대, 4 개)의 명령어들이 실행되고 업데이트되는 동작이 전체 명령어들이 로딩될 때까지 반복될 수 있다. 그러나, 본 발명의 실시예는 이에 국한될 필요가 없이, 다양한 타이밍에서 명령어 업데이트 동작이 시작될 수 있고, 또한 다양한 개수의 명령어들 단위로 명령어들의 실행 및 업데이트 동작이 수행될 수도 있을 것이다.
도 8은 본 발명의 예시적인 실시예들에 따른 명령어 업데이트 동작에 관련된 각종 신호들의 일 예를 나타내는 도면이다. 도 8에 도시된 어드레스(ADD)는 전술한 실시예에서 언급된 큐 어드레스에 해당할 수 있고, 설명의 편의상 명령어 메모리에 저장된 명령어들이 숫자로 표현되었으나, 명령어 메모리에 저장된 숫자 1은 제1 명령어(Inst 0)에 해당할 수 있고, 숫자 8은 제8 명령어(Inst 7)에 해당할 수 있다. 또한, 도 8에 도시된 표시로서 명령어 메모리에 실선으로 표시된 명령어는 실행되는 명령어를 나타내고, 점선으로 표시된 명령어는 새로이 업데이트되는 명령어를 나타낸다.
도 8을 참조하면, 메모리 장치는 호스트로부터 커맨드/어드레스(CMD/ADD)를 수신하고, 이에 대한 디코딩 동작을 수행함으로써 내부 커맨드(Int. CMD)를 생성할 수 있다. 생성된 내부 커맨드(Int. CMD)에 따라 메모리 장치의 내부 동작들이 제어될 수 있으며, 일 예로 연산 처리 동작(PE) 및 업데이트 동작(U)이 수행될 수 있다. 또한, 도 8에서는 연산 처리에 관련된 커맨드(CMD)로서 노멀 기록 동작(W)을 위한 커맨드가 이용되는 것으로 가정되며, 8 개의 명령어 큐들(IQ 0 ~ IQ 7)의 동작이 예시된다.
커맨드/어드레스(CMD/ADD)의 디코딩 결과에 따라 연산 처리만이 수행될 수 있으며, 도 8에는 도시되지 않았으나 커맨드(CMD) 및 어드레스(ADD)의 조합에 기반하여 연산 요청이 정의되는 경우에는 연산 처리를 지시하는 어드레스(ADD)가 메모리 장치로 수신될 수도 있을 것이다. 일 예로서, 연산 처리를 지시하기 위한 소정의 범위의 어드레스(ADD)가 정의되고, 상기 정의된 범위의 어드레스(ADD)가 연산 처리를 지시하기 위해 수신될 수도 있을 것이다.
한편, 제4 명령어 큐(IQ 3)에 저장된 명령어를 실행함과 함께 명령어 업데이트 동작이 수행될 수 있고, 메모리 장치는 내부 커맨드(Int. CMD)에 기반하여 제4 명령어 큐(IQ 3)에 저장된 명령어를 기초로 연산 처리를 수행함과 함께, 명령어 업데이트 동작을 수행할 수 있다. 일 예로서, 호스트로부터 명령어가 업데이트될 제1 명령어 큐(IQ 0)를 지시하는 어드레스가 수신될 수 있고, 이에 따라 상기 제1 명령어 큐에는 제9 명령어가 업데이트될 수 있다.
한편, 예시적인 실시예들에 따라 일부의 연산 처리 과정에서는 명령어 업데이트 동작이 수행되지 않을 수도 있으며, 도 8에서는 제5 명령어 큐(IQ 4)에 저장된 명령어가 실행되는 경우에 명령어 업데이트 동작이 수행되지 않는 예가 도시된다. 이후, 연산 처리와 명령어 업데이트를 수행하는 커맨드/어드레스(CMD/ADD)가 수신됨에 따라 제2 내지 제6 명령어 큐들(IQ 1 ~ IQ 5)에 대한 명령어 업데이트 동작이 순차적으로 수행될 수 있다.
도 9는 본 발명의 다른 예시적인 실시예에 따른 메모리 장치의 구현 예를 나타내는 블록도이다. 도 9에서는 명령어 로딩 및 실행과 관련하여 명령어에 대응하는 인덱스가 생성되고, 인덱스에 기반하여 명령어들이 실행되는 예가 도시된다.
도 9를 참조하면, 메모리 장치(300)는 제어 로직(310), 프로세싱 제어기(320), 명령어 메모리(330), 프로그램 카운터(340), PIM 회로(350) 및 인덱스 순서 저장 회로(360)를 포함할 수 있다. 설명의 편의상 도 9에는 도시되지 않았으나, 메모리 장치(300)는 다수의 뱅크들을 더 포함할 수 있으며, 또한 도 9에는 하나의 PIM 회로(350) 만이 도시되었으나 상기한 다수의 뱅크들에 대응하여 다수의 PIM 회로들이 메모리 장치(300)에 구비될 수 있을 것이다.
명령어 메모리(330)는 전술한 실시예들에 따라 순환 큐 방식에 기반하여 명령어들을 저장하는 다수의 명령어 큐들을 포함할 수 있다. 또한, 명령어 메모리(330)는 다수의 로우들 및 다수의 칼럼들을 포함할 수 있고, 명령어의 저장 위치는 로우 어드레스(RA) 및 칼럼 어드레스(CA)를 포함하는 큐 어드레스에 의해 지시될 수 있다. 일 예로서, 명령어 메모리(330)의 각각의 명령어 큐가 하나의 명령어를 저장하는 것으로 가정하면, 명령어 메모리(330)의 하나의 로우는 다수 개의 명령어 큐들을 포함할 수 있다.
메모리 장치(300)는 커맨드/어드레스 버스(CA BUS)를 통해 호스트로부터 커맨드 및 어드레스를 수신할 수 있고, 명령어 로딩 동작이나 업데이트 동작과 관련하여 큐 어드레스를 수신할 수 있다. 또한, 메모리 장치(300)는 호스트로부터 명령어들(Inst)을 수신할 수 있고, 일 예로서 메모리 장치(300)는 데이터 버스(DQ BUS)를 통해 명령어들(Inst)을 수신할 수 있다. 또한, 명령어 실행 및 업데이트 모드에서, 프로세싱 제어기(320)의 제어에 기반하여 명령어 메모리(330)로부터 명령어가 독출되어 실행될 수 있으며, 또한 제어 로직(310)의 제어에 기반하여 호스트로부터의 명령어들(Inst)이 명령어 메모리(330)에 업데이트될 수 있다.
한편, 제어 로직(310)은 인덱스 관리자(311)를 포함할 수 있으며, 인덱스 관리자(311)는 명령어들(Inst)에 대응하는 인덱스(Index)를 생성할 수 있다. 예시적인 실시예들에 따라, 각각의 명령어가 저장되는 명령어 메모리(330)의 명령어 큐의 엔트리마다 인덱스(Index)가 할당될 수 있고, 실행되는 명령어를 지시하는 동작은 상기 인덱스(Index)을 기반으로 수행될 수 있다. 일 예로서, 인덱스 관리자(311)는 로우 어드레스(RA) 및 칼럼 어드레스(CA)에 포함되는 비트들 중 적어도 일부를 이용하여 각각의 명령어에 대응하는 인덱스(Index)를 산출할 수 있고, 명령어 메모리(330)에 명령어를 저장함에 있어서 대응하는 인덱스(Index)를 함께 저장할 수 있다. 또는, 도 9에 도시된 실시예에 따라 인덱스 메모리(331)가 메모리 장치(300)에 더 구비되고, 인덱스(Index)는 인덱스 메모리(331)에 저장될 수도 있다.
한편, 인덱스 순서 저장 회로(360)는 호스트로부터 제공된 인덱스 순서(Index order) 정보를 저장할 수 있다. 일 예로서, 다수의 명령어들이 명령어 메모리(330)에 로딩되고, 상기 로딩 동작이 완료된 후 명령어 메모리(330)에 로딩된 명령어들의 실행 순서를 설정하기 위해 호스트로부터 인덱스 순서(Index order) 정보가 메모리 장치(300)로 제공될 수 있다.
이후, 메모리 장치(300)는 연산 처리를 수행함에 있어서 인덱스 순서 저장 회로(360)에 저장된 인덱스 순서에 따라 명령어들을 독출하고 실행할 수 있다. 일 예로서, 연산 처리가 수행될 때마다 인덱스 순서 저장 회로(360)에 저장된 인덱스(Index)가 독출되고, 제어 로직(310)은 상기 독출된 인덱스(Index)를 프로세싱 제어기(320)로 제공할 수 있다. 인덱스 순서(Index order) 정보에는 일련하게 처리될 다수의 명령어들에 대응하는 인덱스(Index)들이 포함될 수 있다.
예시적인 실시예에 따라 인덱스(Index)는 다양한 값들로 설정될 수 있다. 일 예로서, 명령어 메모리(330)에 포함되는 m 개의 명령어 큐들에 저장되는 m 개의 명령어들에 대응하여 하나 이상의 비트들을 갖는 인덱스(Index)들이 생성되고, 명령어들에 대응하여 서로 다른 비트 값을 갖는 인덱스(Index)들이 명령어 메모리(331)에 저장될 수 있다. 프로세싱 제어기(320)는 인덱스 순서 저장 회로(360)로부터 독출된 인덱스(Index)와 명령어 메모리(330)에 저장된 인덱스(Index)들을 비교하고, 수신된 인덱스(Index)에 대응하는 명령어를 독출하여 연산 처리 동작을 제어할 수 있다.
상기한 실시예에 따르면, 동일한 종류의 연산을 지시하기 위한 다수의 명령어들이 중복하여 명령어 메모리(330)에 저장될 필요가 없으며, 이에 따라 명령어 메모리(330)의 사이즈를 더욱 감소시킬 수 있다. 또한, 명령어 메모리(330)에 저장된 순서대로 명령어가 실행될 필요가 없이, 인덱스 순서 저장 회로(360)에 저장된 정보를 기초로 임의의 위치에 저장된 명령어가 실행될 수 있다.
한편, 전술한 실시예에 따른 연산 처리 동작에 있어서, 프로그램 카운터(340)의 카운팅 동작에 기반하는 명령어 메모리(330)의 억세스 동작은 선택적으로 수행될 수 있다. 일 예로서, 뉴럴 네트워크의 다수의 연산들 중 일부는 상기한 프로그램 카운터(340)의 카운팅 동작에 기반하여 수행될 수 있고, 다른 일부의 연산은 인덱스 순서 저장 회로(360)에 저장된 정보를 기초로 수행될 수도 있을 것이다. 또는, 다양한 실시예들에 따라, 인덱스 순서 저장 회로(360)에 저장된 정보를 기초로 명령어들이 실행되는 경우에는, 프로그램 카운터(340)가 비활성화될 수 있으며, 또는 프로그램 카운터(340)가 메모리 장치(300)에 구비되지 않을 수도 있다.
한편, 도 9에 도시된 실시예에서 전술한 실시예들에 따른 명령어 업데이트 동작이 적용될 수 있다. 일 동작 예로서, 명령어 메모리(330)에 저장된 명령어들 각각은 인덱스 순서 정보에 따라 1 회 또는 그 이상 실행될 수 있으며, 정해진 횟수만큼 실행이 완료되고 난 후에는 상기 실행이 완료된 명령어가 저장된 명령어 큐에는 새로운 명령어가 업데이트될 수 있다. 일 예로, 명령어 메모리(330)에 포함되는 명령어 큐들의 명령어들은 순차적으로 실행될 수 있으며, 일부의 명령어들은 상기한 인덱스 순서 정보에 따라 다수 회 실행될 수 있다. 이 경우, 전술한 실시예들에 따라 명령어의 업데이트 동작은 다수의 명령어 큐들에 대해 순차적으로 수행될 수 있다.
도 10은 본 발명의 예시적인 실시예에 따라 인덱스 순서에 기반하여 명령어들이 실행되는 예를 나타내는 도면이다. 도 10에서는 설명의 편의상 제1 내지 제4 명령어 큐들에 저장된 제1 내지 제4 명령어들(Inst 0 ~ Inst 3)이 예시되며, 제1 내지 제4 명령어들(Inst 0 ~ Inst 3)에 대응하여 제1 내지 제4 인덱스(0 ~ 3)가 할당되는 예가 도시된다.
도 9 및 도 10을 참조하면, 명령어 메모리에 제1 내지 제4 명령어들(Inst 0 ~ Inst 3)이 로딩될 수 있고, 제1 내지 제4 명령어들(Inst 0 ~ Inst 3)에 대응하는 제1 내지 제4 인덱스(0 ~ 3)가 명령어 메모리에 함께 저장될 수 있다. 또한, 제1 내지 제4 명령어들(Inst 0 ~ Inst 3)은 서로 다른 기능들을 수행할 수 있고, 일 예로서 제1 내지 제4 명령어들(Inst 0 ~ Inst 3)에 의해 수행되는 제1 내지 제4 기능들(Func 0 ~ Func 3)은 서로 다른 종류의 연산들에 해당할 수 있다.
메모리 컨트롤러(또는, 호스트)는 명령어 실행에 관련된 인덱스 순서 정보를 메모리 장치로 제공할 수 있고, 상기한 인덱스 순서 정보는 메모리 장치 내의 인덱스 순서 저장 회로에 저장될 수 있다. 인덱스 순서 정보는 연산 처리를 위해 실행될 명령어들의 순서를 나타낼 수 있으며, 동일한 인덱스가 중복되어 저장됨에 따라 동일한 명령어(예컨대, 어느 하나의 명령어 큐에 저장된 명령어)가 다수 회 반복하게 실행될 수 있다. 도 11에는 그 일 예로서, 인덱스 순서가 "0,1,1,1,1,2,3"으로 설정되는 예가 도시된다.
메모리 장치는 메모리 컨트롤러로부터의 커맨드/어드레스에 응답하여 다수의 연산 처리들을 순차적으로 수행할 수 있고, 연산 처리가 수행될 때마다 인덱스 순서 저장 회로에 저장된 인덱스를 참조할 수 있다. 일 예로, 제1 인덱스(0)에 따라 제1 명령어 큐에 저장된 제1 명령어(Inst 0)가 실행되고, 이후 제2 인덱스(1)에 따라 제2 명령어 큐에 저장된 제2 명령어(Inst 1)가 4 회 반복하여 실행될 수 있다. 이후, 제3 인덱스(2) 및 제4 인덱스(3)에 따라, 제3 명령어 큐에 저장된 제3 명령어(Inst 2)와 제4 명령어 큐에 저장된 제4 명령어(Inst 3)가 순차적으로 실행될 수 있다.
상기와 같은 실시예에 따라, 동일한 종류의 연산을 실행하기 위한 동일한 명령어가 다수의 명령어 큐들에 중복하여 저장될 필요가 없이, 메모리 장치에 기 저장된 인덱스가 지시하는 명령어 큐에 저장된 명령어가 독출되어 실행될 수 있으며, 이를 통해 반복되는 연산을 작은 메모리 용량을 통해 수행할 수 있다.
도 11은 본 발명의 예시적인 실시예들에 따른 명령어의 저장 예 및 인덱스 할당 예를 나타내는 도면이다.
도 11을 참조하면, 명령어 메모리는 다수의 명령어 큐들을 포함하고, 다수의 명령어 큐들은 로우 어드레스(RA) 및 칼럼 어드레스(CA)에 의해 지시될 수 있다. 일 예로서, 하나의 로우에는 다수 개의 명령어 큐들이 포함될 수 있고, 도 11에서는 하나의 로우에 4 개의 명령어들이 저장됨에 따라, m 개의 로우들을 포함하는 명령어 메모리에 4m 개의 명령어들(Inst 0 ~ Inst 4m-1)이 저장되는 예가 도시된다.
전술한 실시예에 따라, 명령어 메모리의 로우 어드레스(RA) 및 칼럼 어드레스(CA)에 포함되는 비트들 중 적어도 일부에 기반하여 명령어가 저장되는 위치가 판단될 수 있고, 이에 따라 로우 어드레스(RA) 및 칼럼 어드레스(CA)의 적어도 일부의 비트들에 기반하여 각각의 명령어에 대응하는 인덱스가 산출될 수 있다. 일 예로서, 제1 명령어(Inst 0)의 저장 위치를 나타내는 큐 어드레스에 기반하여 제1 값(0)을 갖는 인덱스가 산출되고, 제2 명령어(Inst 1)의 저장 위치를 나타내는 큐 어드레스에 기반하여 제2 값(1)을 갖는 인덱스가 산출되며, 나머지 다른 명령어들에 대해서도 각각에 대응하는 인덱스가 산출될 수 있다.
한편, 상기한 도 9 내지 도 11에는 도시되지 않았으나, 호스트는 메모리 장치로 제공될 큐 어드레스에 기반하여 메모리 장치와 동일한 방식에 따라 명령어들에 대응하는 인덱스를 관리할 수 있다. 또한, 호스트는 뉴럴 네트워크 기능과 관련하여 일련하게 수행되는 다수의 연산들의 종류를 판단할 수 있고, 상기한 다수의 연산들의 순서에 대응하여 명령어들이 실행될 수 있도록 인덱스 순서 정보를 생성하여 메모리 장치로 제공할 수 있다.
도 12는 본 발명의 예시적인 실시예에 따른 메모리 장치의 일 구현 예를 나타내는 블록도이다. 도 12에서는 연산 처리에 관련된 각종 구성 요소들이 각각의 뱅크에 대응하여 배치되는 예가 도시된다.
도 12를 참조하면, 메모리 장치(400)는 제1 내지 제N 뱅크들(410_1 ~ 410_N)과, 이에 대응하여 배치되는 제1 내지 제N PIM 회로들(430_1 ~ 430_N)을 포함할 수 있다. 전술한 실시예에서 설명된 바와 같이, 제1 내지 제N PIM 회로들(430_1 ~ 430_N) 각각은 대응하는 뱅크로부터 독출된 정보와, 호스트로부터 제공된 데이터 중 적어도 하나를 이용한 연산 처리를 수행할 수 있다.
전술한 실시예들에 따라, 메모리 장치(400)는 연산 처리에 관련된 명령어들을 저장하는 명령어 메모리를 포함할 수 있으며, 상기 명령어 메모리는 제1 내지 제N 뱅크들(410_1 ~ 410_N) 각각에 대응하여 배치될 수 있다. 일 예로서, 제1 내지 제N 명령어 메모리들(421_1 ~ 421_N)이 메모리 장치(400)에 구비될 수 있으며, 제1 내지 제N 명령어 메모리들(421_1 ~ 421_N) 각각은 순환 큐 방식에 따라 명령어들을 저장하는 다수의 명령어 큐들을 포함할 수 있다. 또한, 전술한 실시예에서의 인덱스가 적용되는 경우, 제1 내지 제N 명령어 메모리들(421_1 ~ 421_N)에 저장되는 명령어들에 대응하는 인덱스가 더 저장될 수 있으며, 도 13에는 제1 내지 제N 뱅크들(410_1 ~ 410_N)에 대응하여 배치되는 제1 내지 제N 인덱스 메모리들(422_1 ~ 422_N)이 도시된다. 본 실시예에서는 인덱스 메모리와 명령어 메모리가 별개로 도시되었으나, 인덱스는 각각의 대응하는 명령어 큐에 저장되는 것으로 설명될 수도 있을 것이다.
또한, 전술한 실시예에 따라 호스트로부터의 인덱스 순서 정보를 저장하는 저장 회로(미도시)가 메모리 장치(400)에 더 구비될 수 있으며, 인덱스 순서 정보를 저장하는 저장 회로 또한 각각의 뱅크에 대응하여 배치될 수 있을 것이다. 예시적인 실시예에 따라, 제1 내지 제N 뱅크들(410_1 ~ 410_N)에 대응하여 인덱스 순서가 동일하게 설정되거나, 또는 서로 상이하게 설정될 수도 있을 것이며, 이에 따라 서로 다른 뱅크들에 대응하여 배치되는 명령어 메모리들에서, 서로 다른 위치의 명령어 큐에 저장된 명령어가 실행될 수 있을 것이다.
한편, 제1 내지 제N PIM 회로들(430_1 ~ 430_N) 각각은 연산 처리를 수행하는 하나 이상의 프로세싱 소자(PE)들을 포함할 수 있으며, 제1 내지 제N 명령어 메모리들(421_1 ~ 421_N)로부터 독출된 명령어들은 각각 대응하는 PIM 회로로 제공될 수 있다. 제1 내지 제N PIM 회로들(430_1 ~ 430_N) 각각은 명령어에 대한 디코딩 처리를 수행하는 명령어 디코더를 포함할 수 있으며, 명령어 디코딩 결과에 따른 종류의 연산 처리가 수행될 수 있다.
도 12에 도시된 실시예에 따르면, 명령어 메모리가 각각의 뱅크(또는, 각각의 PIM 회로)에 대응하여 배치됨에 따라, 명령어의 PIM 회로로의 전송 경로를 단순화하고, 이를 통해 명령어 독출 속도를 향상할 수 있다. 또한 제1 내지 제N PIM 회로들(430_1 ~ 430_N)로 서로 다른 명령어들이 제공될 수 있으므로, 서로 다른 종류의 연산들이 병렬하게 처리될 수 있다. 또한, 본 발명의 실시예들에 따라 순환 큐 방식의 명령어 메모리를 제공함으로써 각각의 PIM 회로에 대응하는 명령어 메모리의 사이즈를 감소시킬 수 있고, 이에 따라 다수의 뱅크들에 대응하여 다수의 명령어 메모리가 배치되는 경우에도 그 사이즈가 증가되는 것을 최소화할 수 있다.
도 13은 본 발명의 예시적인 실시예의 메모리 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다. 도 13에 도시된 바와 같이, 데이터 처리 시스템(500)은 어플리케이션 프로세서(Application Processor, 510)와 메모리 장치(520)를 포함할 수 있으며, 어플리케이션 프로세서(510)는 메모리 장치(520)와 통신하는 메모리 컨트롤 모듈(511)을 포함할 수 있다.
한편, 어플리케이션 프로세서(510)는 도 1에서의 호스트의 기능을 수행할 수 있으며, 전술한 실시예들에 따라 명령어 로딩 모드에서 다수의 명령어들(Inst)을 메모리 장치(520)로 제공할 수 있고, 또한 명령어의 실행 과정에서 명령어 업데이트 동작이 수행되도록 메모리 장치(520)를 제어할 수 있다. 또한, 전술한 실시예들에 따라 인덱스를 기반으로 명령어가 실행되는 경우에, 어플리케이션 프로세서(510)는 인덱스 순서 정보(미도시)를 생성하고 이를 메모리 장치(520)로 제공할 수 있다.
한편, 어플리케이션 프로세서(510)는 시스템 버스(미도시)를 포함하는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 시스템 버스의 표준 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 이외에도, 소닉사(SONICs Inc.)의 uNetwork 이나 IBM의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 적용되어도 무방하다.
메모리 컨트롤 모듈(511)은 전술한 실시예에서의 메모리 컨트롤러의 기능을 수행할 수 있으며, 커맨드/어드레스(CMD/ADD)를 메모리 장치(520)로 전송함으로써 메모리 동작을 제어하거나 또는 메모리 장치(520) 내에서의 연산 처리 동작을 제어할 수 있다. 전술한 실시예들에 따라, 메모리 장치(520)는 메모리 뱅크(521), 명령어 메모리(522), 연산 로직(523) 및 제어 로직(524) 포함할 수 있으며, 연산 로직(523)은 하나 이상의 PIM 회로들(PIM_1 ~ PIM_N)을 포함하고, 제어 로직(524)은 커맨드/어드레스 디코더(524_1)를 포함할 수 있다. 또한, 명령어 메모리(522)는 순환 큐 기반의 명령어 큐들을 포함할 수 있으며, 전술한 실시예들에 따라 기 저장된 명령어가 실행되고 난 이후에는 어플리케이션 프로세서(510)의 제어에 기반하여 명령어 큐에 새로운 명령어가 오버라이트되는 업데이트 동작이 수행될 수 있다.
도 14는 본 발명의 예시적인 실시예의 메모리 장치가 HBM(high bandwidth memory)을 포함하는 예를 나타내는 블록도이다.
HBM(600)는 서로 독립된 인터페이스를 갖는 다수의 채널들을 포함함으로써 증가된 대역폭(Bandwidth)을 가질 수 있다. 도 14를 참조하면, HBM(600)는 다수 개의 다이들을 포함할 수 있으며, 일 예로서 버퍼 다이(또는, 로직 다이(610))와 이에 적층된 하나 이상의 코어 다이들(620)을 포함할 수 있다. 도 14의 예에서는, 제1 내지 제4 코어 다이들이 HBM(600)에 구비되는 예가 도시되었으나, 상기 코어 다이들(620)의 개수는 다양하게 변경될 수 있다.
또한, 코어 다이들(620) 각각은 하나 이상의 채널을 포함할 수 있으며, 도 14의 예에서는 코어 다이들(620) 각각이 두 개의 채널을 포함함에 따라 HBM(600)가 8 개의 채널들(CH1 ~ CH8)을 갖는 예가 도시된다. 예컨대, 제1 코어 다이가 제1 채널 및 제3 채널(CH1, CH3)을 포함하고, 제2 코어 다이가 제2 채널 및 제4 채널(CH2, CH4)을 포함하며, 제3 코어 다이가 제5 채널 및 제7 채널(CH5, CH7)을 포함하며, 제4 코어 다이가 제6 채널 및 제8 채널(CH6, CH8)을 포함할 수 있다.
버퍼 다이(610)는 호스트(또는, 메모리 컨트롤러)와 통신하는 인터페이스 회로(611)를 포함할 수 있으며, 인터페이스 회로(611)를 통해 호스트로부터 커맨드/어드레스 및 데이터를 수신할 수 있다. 호스트는 채널에 대응하여 배치되는 버스들을 통해 커맨드/어드레스 및 데이터를 전송할 수 있으며, 채널 별로 버스가 구분되도록 형성되거나, 일부의 버스는 적어도 두 개의 채널들에 공유될 수도 있을 것이다. 인터페이스 회로(611)는 호스트가 메모리 동작 또는 연산 처리를 요청하는 채널로 커맨드/어드레스 및 데이터를 전달할 수 있다.
HBM(600)의 각각의 채널은 전술한 실시예들에 따른 PIM 회로(621)와 명령어 메모리(622)를 포함할 수 있고, 명령어 메모리(622)는 순환 큐 기반으로 명령어들을 저장하는 다수의 명령어 큐들을 포함할 수 있다. 한편, 도 14에는 도시되지 않았으나, 인덱스가 적용되는 경우에는 HBM(600)의 각각의 채널은 각각의 명령어에 대응하는 인덱스를 명령어 메모리(622)에 더 저장할 수 있고, 또한 호스트로부터의 인덱스 순서 정보(미도시)를 각각의 채널 내부에 저장할 수 있다.
한편, 버퍼 다이(610)는 TSV 영역(612), 물리(PHY) 영역(613) 및 다이렉트 억세스 영역(DA, 614)을 더 포함할 수 있다. 도 14에 도시되지는 않았으나, 데이터의 이동 경로의 제어 등 HBM(600)의 전반적인 동작을 제어하는 프로세서가 버퍼 다이(610)에 더 포함될 수도 있을 것이다.
TSV 영역(612)은 코어 다이들(620)과의 통신을 위한 TSV가 형성되는 영역이다. 또한, 물리(PHY) 영역(613)은 외부의 호스트와의 통신을 위해 다수의 입출력 회로를 포함할 수 있으며, 일 예로서 물리(PHY) 영역(613)은 호스트와의 통신을 위한 하나 이상의 포트들을 포함할 수 있다. 한편, 다이렉트 억세스 영역(614)은 HBM(600)에 대한 테스트 모드에서 HBM(600)의 외면에 배치되는 도전 수단을 통해 외부의 테스터와 직접 통신하기 위해 배치될 수 있다.
도 15는 본 발명의 실시예에 따른 데이터 처리 시스템을 포함하는 서버 시스템을 나타내는 블록도이다.
도 15를 참조하면, 서버 시스템(700)은 관리자(710) 및 복수의 서버들(720_1 ~ 720_K)을 포함할 수 있다. 복수의 서버들(720_1 ~ 720_K) 각각은 전술한 실시예들에서 설명된 데이터 처리 시스템에 해당할 수 있다. 복수의 서버들(720_1 ~ 720_K)은 소정의 프로토콜(예컨대, PCI, PCIe 등)을 지원하는 버스를 통해 서로 연결되고, 일 예로서 복수의 서버들(720_1 ~ 720_K)은 관리자(710)의 제어에 기반하여 P2P 연결 구조를 통해 서로 통신할 수 있다.
어느 하나의 서버(예컨대, 제1 서버(720_1))를 참조하면, 제1 서버(720_1)는 전술한 실시예들에 따른 호스트 및 하나 이상의 메모리 장치(MEM)들을 포함하고, 서버의 기능에 따른 다양한 종류의 연산 처리를 수행하고 그 처리 결과를 저장할 수 있다. 일 실시예에 따라, 메모리 장치(MEM)들 각각은 도 1 내지 도 14에 도시된 실시예들의 메모리 장치를 포함할 수 있고, 이에 따라 메모리 장치(MEM)들 각각은 순환 큐 기반의 명령어 메모리를 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 메모리 장치에 있어서,
    하나 이상의 뱅크들을 포함하고, 각각의 뱅크는 메모리 셀들을 포함하는 메모리 뱅크;
    호스트로부터 제공된 데이터 및 상기 메모리 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM (Processor in Memory) 회로; 및
    상기 호스트로부터 제공된 명령어들을 저장하는 제1 내지 제m 명령어 큐들을 포함하는 명령어 메모리를 구비하고(단, m은 2 이상의 정수),
    상기 호스트로부터의 연산 요청에 응답하여 상기 제1 내지 제m 명령어 큐들에 저장된 명령어들이 실행되고, 상기 명령어 메모리는 순환 큐(circular queue) 방식에 기반하여 명령어들을 저장함에 따라, 실행이 완료된 명령어 큐에 상기 호스트로부터 제공되는 새로운 명령어가 업데이트되는 것을 특징으로 하는 메모리 장치.
  2. 제1항에 있어서,
    어느 하나의 뉴럴 네트워크 기능에 관련하여 다수의 명령어들 중 일부의 명령어들이 상기 제1 내지 제m 명령어 큐들에 저장되고,
    상기 다수의 명령어들 중 나머지 일부의 명령어들이 상기 제1 내지 제m 명령어 큐들 중 실행이 완료된 명령어 큐들에 순차적으로 업데이트되는 것을 특징으로 하는 메모리 장치.
  3. 제1항에 있어서,
    상기 호스트로부터 수신된 커맨드/어드레스를 디코딩하고, 디코딩 결과에 기반하여 상기 메모리 뱅크에 대한 메모리 동작을 제어하거나 상기 PIM 회로가 상기 연산 처리를 수행하도록 제어 동작을 수행하는 제어 로직을 더 구비하는 것을 특징으로 하는 메모리 장치.
  4. 제1항에 있어서,
    상기 메모리 뱅크는 제1 내지 제N 뱅크들을 포함하고, 상기 PIM 회로는 상기 제1 내지 제N 뱅크들에 대응하여 배치되는 제1 내지 제N PIM 회로들을 포함하며(단, N은 2 이상의 정수),
    상기 명령어 메모리는 상기 제1 내지 제N PIM 회로들 각각에 대응하여 배치되고, 상기 명령어 메모리로부터 독출된 명령어는 대응하는 PIM 회로로 제공되는 것을 특징으로 하는 메모리 장치.
  5. 제1항에 있어서,
    상기 메모리 장치는 로딩 모드, 실행 모드, 실행 및 업데이트 모드에서 동작하고,
    상기 로딩 모드에서, 상기 제1 내지 제m 명령어 큐들에 제1 내지 제m 명령어들이 저장되고,
    상기 실행 모드에서, 상기 호스트로부터의 연산 요청에 응답하여 상기 제1 내지 제m 명령어들 중 적어도 일부가 순차적으로 실행되며,
    상기 실행 및 업데이트 모드에서, 상기 호스트로부터의 연산 요청에 응답하여 상기 명령어 메모리에 저장된 명령어를 실행함과 함께, 이전에 실행이 완료된 명령어 큐에 새로운 명령어가 업데이트되는 것을 특징으로 하는 메모리 장치.
  6. 제1항에 있어서,
    상기 명령어 메모리에 저장되는 명령어들 각각에 대응하는 인덱스를 저장하는 인덱스 메모리; 및
    상기 호스트로부터 상기 명령어들의 실행 순서를 나타내는 인덱스 순서 정보를 저장하는 인덱스 순서 저장 회로를 더 구비하고,
    상기 호스트로부터 연산 요청이 제공됨에 따라, 상기 인덱스 순서 정보에 따른 순서로서 상기 명령어 메모리에 저장된 명령어들이 실행되는 것을 특징으로 하는 메모리 장치.
  7. 제6항에 있어서,
    상기 인덱스 순서 정보에는 동일한 명령어를 지시하는 인덱스가 다수 개 포함됨에 따라, 어느 하나의 명령어 큐에 저장된 명령어가 다수 회 실행되는 것을 특징으로 하는 메모리 장치.
  8. 메모리 장치에 있어서,
    하나 이상의 뱅크들을 포함하고, 각각의 뱅크는 메모리 셀들을 포함하는 메모리 뱅크;
    호스트로부터 제공된 데이터 및 상기 메모리 뱅크로부터 독출된 데이터 중 적어도 하나를 이용하여 연산 처리를 수행하는 PIM (Processor in Memory) 회로;
    상기 호스트로부터 제공된 명령어들을 저장하는 제1 내지 제m 명령어 큐들을 포함하는 명령어 메모리(단, m은 2 이상의 정수);
    상기 명령어 메모리에 저장되는 상기 명령어들 각각에 대응하는 인덱스를 생성하는 인덱스 관리자; 및
    상기 호스트로부터 상기 명령어들의 실행 순서를 나타내는 인덱스 순서 정보를 저장하는 인덱스 순서 저장 회로를 구비하고,
    상기 호스트로부터 연산 요청이 제공됨에 따라, 상기 인덱스 순서 정보에 따른 순서로서 상기 명령어 메모리에 저장된 명령어들이 실행되는 것을 특징으로 하는 메모리 장치.
  9. 제8항에 있어서,
    상기 인덱스 순서 정보에는 동일한 명령어를 지시하는 인덱스가 다수 개 포함됨에 따라, 어느 하나의 명령어 큐에 저장된 명령어가 다수 회 실행되는 것을 특징으로 하는 메모리 장치.
  10. 제8항에 있어서,
    상기 인덱스 관리자는, 상기 명령어 메모리의 저장 위치를 나타내는 로우 어드레스 및 칼럼 어드레스를 수신하고, 상기 로우 어드레스 및 칼럼 어드레스의 다수의 비트들 중 적어도 일부를 이용하여 상기 인덱스를 생성하는 것을 특징으로 하는 메모리 장치.
KR1020200013303A 2019-03-11 2020-02-04 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 KR20200108774A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE102020106357.1A DE102020106357A1 (de) 2019-03-11 2020-03-09 Speichereinrichtung und verfahren mit anweisungsringspeicherwarteschlange
US16/814,236 US20200293452A1 (en) 2019-03-11 2020-03-10 Memory device and method including circular instruction memory queue
CN202010165017.8A CN111694513A (zh) 2019-03-11 2020-03-11 包括循环指令存储器队列的存储器器件和方法
SG10202002232UA SG10202002232UA (en) 2019-03-11 2020-03-11 Memory device and method including circular instruction memory queue

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962816509P 2019-03-11 2019-03-11
US62/816,509 2019-03-11

Publications (1)

Publication Number Publication Date
KR20200108774A true KR20200108774A (ko) 2020-09-21

Family

ID=72707900

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020190151617A KR20200108768A (ko) 2019-03-11 2019-11-22 연산 처리를 수행하는 메모리 장치 및 메모리 장치의 동작방법
KR1020190161673A KR20200108772A (ko) 2019-03-11 2019-12-06 메모리 장치의 미리 정해진 프로토콜 인터페이스를 이용하여 내부 프로세싱 동작을 수행하는 방법
KR1020190161674A KR20200108773A (ko) 2019-03-11 2019-12-06 연산 처리를 수행하는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법
KR1020200013303A KR20200108774A (ko) 2019-03-11 2020-02-04 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020190151617A KR20200108768A (ko) 2019-03-11 2019-11-22 연산 처리를 수행하는 메모리 장치 및 메모리 장치의 동작방법
KR1020190161673A KR20200108772A (ko) 2019-03-11 2019-12-06 메모리 장치의 미리 정해진 프로토콜 인터페이스를 이용하여 내부 프로세싱 동작을 수행하는 방법
KR1020190161674A KR20200108773A (ko) 2019-03-11 2019-12-06 연산 처리를 수행하는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법

Country Status (3)

Country Link
KR (4) KR20200108768A (ko)
SG (3) SG10202002231WA (ko)
TW (2) TW202111540A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11893278B2 (en) 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US11908541B2 (en) 2020-01-07 2024-02-20 SK Hynix Inc. Processing-in-memory (PIM) systems
US11537323B2 (en) 2020-01-07 2022-12-27 SK Hynix Inc. Processing-in-memory (PIM) device
US11281583B1 (en) 2020-09-24 2022-03-22 Hughes Network Systems, Llc Unified memory management for a multiple processor system
US20230207038A1 (en) * 2021-12-29 2023-06-29 Advanced Micro Devices, Inc. Dram specific interface calibration via programmable training sequences

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11893278B2 (en) 2021-02-08 2024-02-06 Samsung Electronics Co., Ltd. Memory controller and memory control method for generating commands based on a memory request

Also Published As

Publication number Publication date
TW202111540A (zh) 2021-03-16
TW202044043A (zh) 2020-12-01
KR20200108772A (ko) 2020-09-21
SG10202002231WA (en) 2020-10-29
KR20200108773A (ko) 2020-09-21
SG10202002232UA (en) 2020-10-29
SG10202002213RA (en) 2020-10-29
KR20200108768A (ko) 2020-09-21

Similar Documents

Publication Publication Date Title
KR20200108774A (ko) 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법
US11693783B2 (en) Apparatuses and methods for cache operations
KR102424962B1 (ko) 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈
US11094371B2 (en) Memory device for processing operation and method of operating the same
US11074961B2 (en) Method of performing internal processing operation of memory device
US11416178B2 (en) Memory device performing parallel calculation processing, operating method thereof, and operating method of memory controller controlling the memory device
CN110582745B (zh) 存储器装置及可促进张量存储器存取的方法
US20230236836A1 (en) Memory device for processing operation, data processing system including the same, and method of operating the memory device
US11604594B2 (en) Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
US20100161935A1 (en) Rapid memory buffer write storage system and method
US8397005B2 (en) Masked register write method and apparatus
KR20220045480A (ko) 인-메모리 프로세싱을 수행하는 메모리 디바이스
US20200293452A1 (en) Memory device and method including circular instruction memory queue
CN111158757B (zh) 并行存取装置和方法以及芯片
CN112908384A (zh) 可选择性操作的存储器装置
US20160358642A1 (en) Mobile device and operation method thereof
CN113490915A (zh) 扩展存储器操作
US11561711B2 (en) Memory device performing configurable mode setting and method of operating the same
US11698870B2 (en) Memory module data buffer
US11494121B2 (en) Memory device for performing in-memory processing
US10180847B2 (en) Circuitry for configuring entities