KR20210156058A - 인-메모리 프로세싱을 수행하는 메모리 디바이스 - Google Patents

인-메모리 프로세싱을 수행하는 메모리 디바이스 Download PDF

Info

Publication number
KR20210156058A
KR20210156058A KR1020200073733A KR20200073733A KR20210156058A KR 20210156058 A KR20210156058 A KR 20210156058A KR 1020200073733 A KR1020200073733 A KR 1020200073733A KR 20200073733 A KR20200073733 A KR 20200073733A KR 20210156058 A KR20210156058 A KR 20210156058A
Authority
KR
South Korea
Prior art keywords
memory
bank
banks
operation unit
units
Prior art date
Application number
KR1020200073733A
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 KR1020200073733A priority Critical patent/KR20210156058A/ko
Priority to US17/098,959 priority patent/US11494121B2/en
Priority to CN202011442348.8A priority patent/CN113805790A/zh
Priority to EP21179685.9A priority patent/EP3933605A1/en
Publication of KR20210156058A publication Critical patent/KR20210156058A/ko
Priority to US17/954,532 priority patent/US20230013611A1/en

Links

Images

Classifications

    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/785Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) with decentralized control, e.g. smart memories
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0658Controller construction 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Abstract

인-메모리 프로세싱(in-memory processing)을 수행하는 메모리 디바이스는 파이프라이닝된(pipelined) 연산의 인-메모리 프로세싱을 수행하는 인-메모리 연산 유닛들과 n개의 메모리 뱅크들 단위로 각 인-메모리 연산 유닛에 할당되어 파이프라이닝된 연산이 처리되는 동안 각 인-메모리 연산 유닛으로부터 요청된 데이터의 액세스 동작을 수행하는 메모리 뱅크들을 포함한다.

Description

인-메모리 프로세싱을 수행하는 메모리 디바이스 {Memory device for performing in-memory processing}
인-메모리 연산 유닛을 이용하여 인-메모리 프로세싱을 수행하는 메모리 디바이스에 관한다.
그래픽스 알고리즘의 처리, 뉴럴 네트워크의 처리 등과 같은 애플리케이션들은 계산-집약적(compute-intensive) 연산들로서, 대용량 연산 및 메모리 능력을 갖는 컴퓨팅 시스템을 필요로 한다. 컴퓨팅 시스템의 연산들(computation operations) 중 일부를 메모리 디바이스의 내부 프로세싱(또는 인-메모리 프로세싱)으로 수행할 수 있는, 프로세서-인-메모리(Processor In Memory: 이하 "PIM"이라 함) 타입의 메모리 디바이스가 개발되고 있다. 이와 같이 메모리 디바이스의 내부 프로세싱을 통하여 컴퓨팅 시스템의 연산 부담이 감소될 수 있다. 다만, 메모리 디바이스 내에 내부 프로세싱을 위한 별도의 프로세싱 하드웨어들이 추가되는 경우에는, 이들의 인터페이싱 및 연산 처리를 효율적으로 수행하기 위한 방안들이 요구될 수 있다.
인-메모리 프로세싱을 수행하는 메모리 디바이스를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 인-메모리 프로세싱(in-memory processing)을 수행하는 메모리 디바이스는, 멀티 파이프라인 스테이지들로 파이프라이닝된(pipelined) 연산의 인-메모리 프로세싱을 수행하는 복수의 인-메모리 연산 유닛들; n개의 메모리 뱅크들 단위로 각 인-메모리 연산 유닛에 할당되고, 상기 파이프라이닝된 연산이 처리되는 동안 상기 각 인-메모리 연산 유닛으로부터 요청된 데이터의 액세스 동작을 수행하는 복수의 메모리 뱅크들(n은 자연수); 및 상기 인-메모리 연산 유닛들 및 상기 메모리 뱅크들과, 외부로부터 커맨드 신호를 수신하는 커맨드 패드들이 배치된, 메모리 다이(memory die)를 포함하고, 상기 메모리 다이 상에서 상기 인-메모리 연산 유닛들 각각에 할당된 상기 n개의 메모리 뱅크들은, 상기 커맨드 패드들과의 데이터 전송 거리가 상대적으로 가깝게 배치된 메모리 뱅크와 상대적으로 멀게 배치된 메모리 뱅크를 포함한다.
또한, 상기 인-메모리 연산 유닛들 각각은 상기 파이프라이닝된 연산에 대한 상기 인-메모리 프로세싱을 수행하기 위하여, 상기 할당된 n개의 메모리 뱅크들 중 상기 상대적으로 멀게 배치된 메모리 뱅크보다 상기 상대적으로 가깝게 배치된 메모리 뱅크를 먼저 액세스한다.
또한, 상기 메모리 다이는 제 1 인-메모리 연산 유닛에 할당된 n개의 메모리 뱅크들 중 상기 데이터 전송 거리에 기초하여 어느 하나를 순차적으로 선택하는 뱅크 셀렉터; 및 상기 뱅크 셀렉터에 의해 선택된 메모리 뱅크로부터 액세스된 데이터를 상기 제 1 인-메모리 연산 유닛으로 제공하는 멀티플렉서를 더 포함한다.
또한, 상기 복수의 메모리 뱅크들은 상기 메모리 다이 상에서 일 측에 배치된 제 1 세트의 메모리 뱅크들 및 타 측에 배치된 제 2 세트의 메모리 뱅크들을 포함하고, 상기 복수의 인-메모리 연산 유닛들은 상기 제 1 세트의 메모리 뱅크들과 상기 제 2 세트의 메모리 뱅크들 사이의 영역에서 상기 제 1 세트의 메모리 뱅크들에 인접하게 배치되어 상기 제 1 세트의 메모리 뱅크들에 연결된 제 1 세트의 인-메모리 연산 유닛들, 및 상기 영역에서 상기 제 2 세트의 메모리 뱅크들에 인접하게 배치되어 상기 제 2 세트의 메모리 뱅크들에 연결된 제 2 세트의 인-메모리 연산 유닛들을 포함한다.
또한, 상기 커맨드 패드들은 상기 영역 상에서, 상기 제 1 세트의 인-메모리 연산 유닛들 및 상기 제 2 세트의 인-메모리 연산 유닛들 사이에 배치되고, 상기 상대적으로 가깝게 배치된 메모리 뱅크와 상기 상대적으로 멀게 배치된 메모리 뱅크는 상기 영역 상에서의 상기 데이터 전송 거리에 따라 구분된다.
또한, 상기 제 1 세트의 메모리 뱅크들은 상기 커맨드 패드들과의 상기 데이터 전송 거리에 기초하여 상대적으로 가깝게 배치된 제 1 그룹 및 상대적으로 멀게 배치된 제 2 그룹을 포함하는 2개의 그룹들로 구분되고, 상기 인-메모리 연산 유닛들 각각에 할당된 상기 n개의 메모리 뱅크들은 상기 제 1 그룹으로부터 선택된 하나의 메모리 뱅크 및 상기 제 2 그룹으로부터 선택된 하나의 메모리 뱅크를 포함한다.
또한, 상기 제 1 세트의 메모리 뱅크들 중 n개의 메모리 뱅크들은 상기 제 1 세트의 인-메모리 연산 유닛들 중 제 1 인-메모리 연산 유닛에 할당되고, 상기 n개의 메모리 뱅크들은 상기 메모리 다이 상에서 상기 커맨드 패드들과의 상기 데이터 전송 거리가 상대적으로 가깝게 배치된 제 1 메모리 뱅크 및 상대적으로 멀게 배치된 제 2 메모리 뱅크를 포함하고, 상기 제 1 인-메모리 연산 유닛은 상기 제 2 메모리 뱅크로부터 액세스된 데이터보다 상기 제 1 메모리 뱅크로부터 액세스된 데이터에 대하여 상기 파이프라이닝된 연산을 먼저 처리한다.
또한, 상기 메모리 디바이스는 DDR4 DRAM(Double Data Rate 4 Dynamic Random-Access Memory) 모듈이고, 상기 복수의 메모리 뱅크들은 8개의 상기 제 1 세트의 메모리 뱅크들 및 8개의 상기 제 2 세트의 메모리 뱅크들을 포함하고, 상기 인-메모리 연산 유닛들은 8/n개의 상기 제 1 세트의 인-메모리 연산 유닛들 및 8/n개의 상기 제 2 세트의 인-메모리 연산 유닛들을 포함한다.
또한, 상기 제 1 세트의 메모리 뱅크들은 제 1 방향의 순서대로 제 1 내지 제 8 메모리 뱅크들을 포함하고, 상기 제 1 세트의 인-메모리 연산 유닛들은 상기 제 1 방향의 순서대로 제 1 내지 제 4 인-메모리 연산 유닛들을 포함하고, 상기 제 1 메모리 뱅크 및 상기 제 3 메모리 뱅크는 상기 제 1 인-메모리 연산 유닛에 할당되고, 상기 제 2 메모리 뱅크 및 상기 제 4 메모리 뱅크는 상기 제 2 인-메모리 연산 유닛에 할당되고, 상기 제 5 메모리 뱅크 및 상기 제 7 메모리 뱅크는 상기 제 3 인-메모리 연산 유닛에 할당되고, 상기 제 6 메모리 뱅크 및 상기 제 8 메모리 뱅크는 상기 제 4 인-메모리 연산 유닛에 할당된다.
또한, 상기 제 2 세트의 메모리 뱅크들과 상기 제 2 세트의 인-메모리 연산 유닛들 간의 연결은, 상기 제 1 세트의 메모리 뱅크들과 상기 제 1 세트의 인-메모리 연산 유닛들 간의 연결에 대칭한다.
또한, 상기 인-메모리 연산 유닛들 각각은 상기 파이프라이닝된 연산의 각 파이프라인 스테이지에서의 서브 연산 결과를 버퍼링하기 위한 적어도 하나의 파이프라인 레지스터를 포함한다.
또한, 상기 파이프라이닝된 연산은 뉴럴 네트워크의 MAC(multiply-accumulate) 연산을 포함한다.
다른 측면에 따르면, 인-메모리 프로세싱(in-memory processing)을 수행하는 메모리 디바이스는, 멀티 파이프라인 스테이지들로 파이프라이닝된(pipelined) 연산의 인-메모리 프로세싱을 수행하는 복수의 인-메모리 연산 유닛들; 및 n개의 메모리 뱅크들 단위로 각 인-메모리 연산 유닛에 할당되고, 상기 파이프라이닝된 연산이 처리되는 동안 상기 각 인-메모리 연산 유닛으로부터 요청된 데이터의 액세스 동작을 수행하는 복수의 메모리 뱅크들(n은 자연수)을 포함하고, 상기 인-메모리 연산 유닛들 각각에 할당된 상기 n개의 메모리 뱅크들은, 외부로부터 제공된 커맨드 신호의 데이터 전송을 위한 물리적 거리가 상대적으로 가까운 메모리 뱅크와 상대적으로 먼 메모리 뱅크를 포함한다.
또한, 상기 인-메모리 연산 유닛들 각각은 상기 파이프라이닝된 연산에 대한 상기 인-메모리 프로세싱을 수행하기 위하여, 상기 할당된 n개의 메모리 뱅크들 중 상기 먼 메모리 뱅크보다 상기 가까운 메모리 뱅크를 먼저 액세스한다.
또한, 제 1 인-메모리 연산 유닛에 할당된 n개의 메모리 뱅크들 중 상기 데이터 전송 거리에 기초하여 어느 하나를 순차적으로 선택하는 뱅크 셀렉터; 및 상기 뱅크 셀렉터에 의해 선택된 메모리 뱅크로부터 액세스된 데이터를 상기 제 1 인-메모리 연산 유닛으로 제공하는 멀티플렉서를 더 포함한다.
도 1은 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2a 및 도 2b는 일 실시예에 따른 메모리 뱅크와 인-메모리 연산 유닛 간의 할당 비율들을 설명하기 위한 도면들이다.
도 3은 일 실시예에 따른 메모리 다이 상에서 인-메모리 연산 유닛과 메모리 뱅크들 간의 하드웨어 연결을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 연산의 파이프라이닝을 설명하기 위한 도면이다.
도 5는 일 실시예에 따라 도 4의 파이프라이닝된 연산의 인-메모리 프로세싱을 위해 파이프라인 스테이지들이 각 메모리 뱅크에 할당되는 것을 설명하기 위한 도면이다.
도 6은 서로 다른 위치들에 배치된 메모리 뱅크들에 액세스(리드/라이트)할 때 발생할 수 있는 레이턴시 차이를 설명하기 위한 도면들이다.
도 7은 일 실시예에 따른 메모리 다이 상의 인-메모리 연산 유닛들의 배치를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 인-메모리 연산 유닛들에 매핑된 메모리 뱅크들에서 연산을 처리하는 방식을 설명하기 위한 도면이다.
도 9는 일 실시예에 따라 먼 메모리 뱅크에 먼저 액세스하는 경우와 가까운 메모리 뱅크에 먼저 액세스하는 경우를 비교하여 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 메모리 디바이스를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
실시예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
본 실시예들에서, 어떤 구성요소가 다른 구성요소와 "연결”되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 전기적으로 연결되어 있는 경우도 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 실시예들에서 사용되는 "제 1" 또는 "제 2" 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
아래에서는 첨부한 도면을 참고하여 실시예에 대하여 상세히 설명한다. 그러나 실시예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
도 1은 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(1)은 메모리 디바이스(10) 및 메모리 컨트롤러(20)를 포함할 수 있다. 메모리 디바이스(10)는 인-메모리 프로세싱을 수행하는 복수의 인-메모리 연산 유닛들(110) 및 다수의 메모리 셀들을 포함하는 복수의 메모리 뱅크들(120)을 포함할 수 있다.
메모리 디바이스(10)는 메모리 칩 또는 메모리 모듈로 구현될 수 있다. 메모리 컨트롤러(20)는 호스트의 일부로 구현되거나, 메모리 디바이스(10)와 메모리 컨트롤러(20)가 하나의 메모리 모듈 내에 배치될 수도 있다. 즉, 구현 형태는 다양할 수 있으며 어느 하나로 제한되지 않는다. 한편, 호스트는 도 1에서는 비록 도시되지 않았으나, 메모리 시스템(1)을 제어하여 컴퓨팅 동작을 수행하는 기능 블락(functional block)으로서, 중앙 처리 유닛(Central Processing Unit: CPU), 디지털 신호 프로세서(Digital Signal Processor: DSP), 그래픽 처리 유닛 (Graphics Processing Unit: GPU), 또는 어플리케이션 프로세서(Application Processor: AP)에 해당될 수 있다.
메모리 컨트롤러(20)는 각종 신호를 메모리 디바이스(10)에 제공함으로써, 메모리 디바이스(10)의 전반적인 동작을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(20)는 리드(read) 및 라이트(write) 등과 같은 메모리 디바이스(10)의 메모리 액세스 동작을 제어할 수 있다. 구체적으로, 메모리 컨트롤러(20)는 커맨드(CMD) 및 어드레스(ADDR)를 메모리 디바이스(10)에 제공함으로써, 메모리 디바이스(10)에 데이터(DATA)를 기입하거나, 또는 메모리 디바이스(10)로부터 데이터(DATA)를 리드할 수 있다. 또한, 메모리 컨트롤러(20)는 메모리 디바이스(10)에 클럭 신호(CLK)를 더 제공할 수 있다.
커맨드(CMD)는 데이터의 리드 또는 라이트를 위해 메모리 뱅크들(120)을 액티브 상태(active state)로 전환하기 위한 액티브 커맨드를 포함할 수 있다. 메모리 디바이스(10)는 액티브 커맨드에 응답하여, 메모리 뱅크들(120)에 포함된 로우(row), 즉, 워드 라인(word line)을 활성화시킬 수 있다. 또한, 커맨드(CMD)는 데이터의 리드 또는 라이트가 완료된 후 메모리 뱅크들(120)을 액티브 상태에서 스탠바이 상태(standby state)로 전환하기 위한 프리차지(precharge) 커맨드를 포함할 수 있다. 또한, 커맨드(CMD)는 메모리 뱅크들(120)에 대한 리프레쉬 동작을 제어하기 위한 리프레쉬 커맨드를 포함할 수 있다. 다만, 여기에서 설명된 커맨드(CMD)의 종류는 예시적일 뿐이며, 다른 종류의 커맨드(CMD)가 존재할 수 있다.
또한, 메모리 컨트롤러(20)는 각종 신호를 메모리 디바이스(10)에 제공함으로써, 인-메모리 연산 유닛들(110)의 인-메모리 프로세싱 동작들을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(20)는 커맨드(CMD), 어드레스(ADDR) 및/또는 클럭 신호(CLK)의 조합을 통해 인-메모리 연산 유닛들(110)의 인-메모리 프로세싱 동작들을 지시하는 신호를 메모리 디바이스(10)에 제공할 수 있다.
인-메모리 연산 유닛들(110)은 메모리 디바이스(10) 내에서 연산 처리를 수행하기 위한 프로세싱 소자들(Processing Elements, PEs)로 구현될 수 있다. 즉, 인-메모리 연산 유닛들(110)은 메모리 디바이스(10) 내에서 인-메모리 프로세싱(또는 내부 프로세싱(internal processing))을 수행할 수 있다.
구체적으로, 인-메모리 연산 유닛들(110)은 메모리 뱅크들(120)에 저장된 데이터(DATA) 및/또는 메모리 컨트롤러(20)로부터 수신한 데이터(DATA)에 대해 데이터 연산을 수행할 수 있고, 연산 결과의 데이터(DATA)를 메모리 뱅크들(120)에 저장하거나 메모리 컨트롤러(20)에 제공할 수 있다. 이에 따라, 인-메모리 연산 유닛들(110)은 Processor In Memory(PIM) 또는 Function In Memory(FIM)라고 지칭할 수도 있다.
인-메모리 연산 유닛들(110)은 ALU(Arithmetic Logic Unit) 또는 MAC(Multiply-Accumulate) 일 수 있다. 예를 들어, 인-메모리 연산 유닛들(110)은 데이터 반전(invert), 데이터 시프트(shift), 데이터 스왑(swap), 데이터 비교(compare), AND 및 XOR 등의 논리 연산들(logical operations), 덧셈 및 뺄셈 등의 수치 연산들(mathematical operations) 등과 데이터 연산을 수행할 수 있다.
메모리 디바이스(10) 내에 구비된 인-메모리 연산 유닛들(110)의 개수, 메모리 뱅크들(120)의 개수는 다양할 수 있다. 또한, 하나의 인-메모리 연산 유닛에는 n개의(n은 자연수) 메모리 뱅크들이 할당될 수 있다.
예를 들어, 메모리 디바이스(10)가 DDR4 DRAM(Double Data Rate 4 Dynamic Random Access Memory) 모듈에 해당하는 경우, 메모리 뱅크들(120)의 개수는 16이며 인-메모리 연산 유닛들(110)은 8개일 수 있고, 인-메모리 연산 유닛들(110)과 메모리 뱅크들(120)은 1:2의 비율(n=2)로 매핑될 수 있다. 이하 본 실시예들에서는 설명의 편의를 위하여, 하나의 인-메모리 연산 유닛에는 두 개(n=2)의 메모리 뱅크들이 할당되는 것을 가정하여 설명하도록 하나, 본 실시예들은 이에 제한되지 않는다.
메모리 뱅크들(120) 각각은 복수의 메모리 셀들을 포함할 수 있다. 구체적으로, 메모리 뱅크들(120)에서 메모리 셀들 각각은 복수의 워드 라인들 및 복수의 비트 라인들(bit lines)이 교차하는 지점에 위치할 수 있다. 메모리 뱅크들(120)은 인-메모리 프로세싱 데이터를 저장할 수 있다. 여기서, 인-메모리 프로세싱 데이터는 인-메모리 연산 유닛들(110)에 의해 연산 동작이 수행될 데이터 및/또는 인-메모리 연산 유닛들(110)에 의한 연산 동작의 수행 결과 생성된 데이터를 포함할 수 있다.
한편, 메모리 디바이스(10)는 다양한 종류의 메모리를 포함할 수 있으며, 일 예로서 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)를 포함할 수 있다. 그러나, 본 실시예들은 이에 제한되지 않으며, 메모리 디바이스(10)는 플래시(flash) 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등의 비휘발성 메모리를 포함할 수 있다.
도 2a 및 도 2b는 일 실시예에 따른 메모리 뱅크와 인-메모리 연산 유닛 간의 할당 비율들을 설명하기 위한 도면들이다.
메모리 디바이스(도 1의 10)는 인-메모리 연산 유닛들(도 1의 110) 및 메모리 뱅크들(도 1의 120)이 배치된 메모리 다이(memory die)(100)를 포함할 수 있고, 도 2a 및 도 2b에는 메모리 다이(100)에 구비된 소정 개수의 인-메모리 연산 유닛들(110) 중 일부 및 소정 개수의 메모리 뱅크들(120) 중 일부가 도시되어 있다.
도 2a에 도시된 바와 같이, 하나의 인-메모리 연산 유닛(연산 유닛 1(111))에는 2개의 메모리 뱅크들(메모리 뱅크 1(121) 및 메모리 뱅크 2(122))이 할당되고, 하나의 인-메모리 연산 유닛(연산 유닛 2, 112)에는 2개의 메모리 뱅크들(메모리 뱅크 3(123) 및 메모리 뱅크 4(124))이 할당될 수 있다.
도 2b에 도시된 바와 같이 하나의 인-메모리 연산 유닛(연산 유닛 1, 111)에는 4개의 메모리 뱅크들(메모리 뱅크 1(121), 메모리 뱅크 2(122), 메모리 뱅크 3(123) 및 메모리 뱅크 4(124))이 할당될 수도 있다.
즉, 메모리 디바이스(10)에 구비된 메모리 뱅크들(120)은 n개의 메모리 뱅크 단위로 하나의 인-메모리 연산 유닛을 공유할 수 있고, 각 인-메모리 연산 유닛은 대응하는 n개의 메모리 뱅크들에 액세스하여 데이터 연산을 수행할 수 있다. 여기서, 메모리 디바이스(10)가 DDR4 DRAM 모듈에 해당되는 경우, n은 2, 4 및 8 중 어느 하나일 수 있으나, 이에 제한되지 않는다. 앞서 설명된 바와 같이, 본 실시예들에서는 설명의 편의를 위하여, n=2인 것으로 가정하여 설명하도록 한다.
도 3은 일 실시예에 따른 메모리 다이 상에서 인-메모리 연산 유닛과 메모리 뱅크들 간의 하드웨어 연결을 설명하기 위한 도면이다.
도 3을 참고하면, 메모리 다이(100)에는 2개의 메모리 뱅크들(메모리 뱅크 1(121) 및 메모리 뱅크 2(122)) 단위로 하나의 인-메모리 연산 유닛(연산 유닛 1(111))에 할당된 구현 예에 대해 도시되어 있고, 이는 메모리 다이(100)에 구비된 전체 인-메모리 연산 유닛들(110) 및 메모리 뱅크들(120) 중 일부의 구현 예에 해당될 수 있고, 메모리 다이(100) 상에서 나머지 인-메모리 연산 유닛들(110) 및 메모리 뱅크들(120)은 도 3에 도시된 바와 유사하게 구현되고 동작될 수 있다.
메모리 다이(100) 상에서 각 인-메모리 연산 유닛(연산 유닛 1(111))과 메모리 뱅크들(메모리 뱅크 1(121) 및 메모리 뱅크 2(122)) 각각은 연결된다. 이때, 메모리 다이(100)는 연산 유닛 1(111)에 할당된 2개의 메모리 뱅크들(메모리 뱅크 1(121) 및 메모리 뱅크 2(122)) 중 어느 하나를 선택하는 뱅크 셀렉터(130)와, 뱅크 셀렉터(130)에 의해 선택된 메모리 뱅크로부터 액세스된 데이터를 연산 유닛 1(111)으로 제공하는 멀티플렉서(MUX)(140)를 구비할 수 있다. 메모리 다이(100) 상에서 구현된 하드웨어 구성요소들 간에는 데이터 버스(150)를 통해 연결될 수 있다.
연산 유닛 1(111)은 동작 주파수(CLK)로 동작하여, 파이프라이닝된(pipelined) 연산(310)의 인-메모리 프로세싱을 수행한다. 여기서, 연산(310)은 연산 유닛 1(111)의 제 1 동작 주파수에 대응하는 제 1 동작 주기 내 처리 가능한 서브 연산 단위의 멀티 파이프라인 스테이지들로 파이프라이닝된 것일 수 있다. 연산 유닛 1(111)은 파이프라이닝된 연산(310)의 각 파이프라인 스테이지에서의 서브 연산 결과를 버퍼링하기 위한 적어도 하나의 파이프라인 레지스터(1111)를 포함할 수 있다.
메모리 뱅크 1(121) 및 메모리 뱅크 2(122) 각각은 동작 주파수(CLK)로 동작하여, 파이프라이닝된 연산이 처리되는 동안 연산 유닛 1(111)으로부터 요청된 데이터의 액세스 동작을 수행한다.
동작 주파수(CLK)는 외부(메모리 컨트롤러(20) 또는 호스트 등)로부터 제공된 클럭 신호(Bank CLK)에 기초한 것으로서, 메모리 다이(100) 내의 연산 유닛 1(111), 메모리 뱅크들(메모리 뱅크 1(121) 및 메모리 뱅크 2(122)) 및 뱅크 셀렉터(130)는 동작 주파수(CLK)에 따라 동작된다.
도 4는 일 실시예에 따른 연산의 파이프라이닝을 설명하기 위한 도면이다.
파이프라이닝은 연산이 수행되는 과정을 여러 스테이지들로 나누어 각 스테이지를 병렬적으로(동시에) 처리함으로써 연산 처리 속도를 향상시키는 기술이다.
도 4를 참고하면, 주어진 연산은 여러 서브 연산들(예시적으로, 서브 연산 1 내지 서브 연산 7)을 포함하는 멀티 파이프라인 스테이지들(STAGE 1, STAGE 2 및 STAGE 3)로 파이프라이닝되고, 이에 따라 파이프라이닝된 연산(400)이 생성될 수 있다. 여기서, 주어진 연산은 예를 들어, 뉴럴 네트워크의 MAC(multiply-accumulate) 연산일 수 있으며, 각 서브 연산(서브 연산 1 내지 서브 연산 7)은 데이터 인출(fetch), 곱셈 연산, 덧셈 연산, 데이터 출력 등의 일련의 개별 연산들로부터 파이프라이닝된 것에 대응할 수 있다.
파이프라이닝된 연산(400)은 7개의 서브 연산들(서브 연산 1 내지 서브 연산 7)의 멀티 파이프라인 스테이지들을 포함한다. 구체적으로, 파이프라인 스테이지 1(STAGE 1)은 서브 연산 1 및 서브 연산 2를 포함하고, 파이프라인 스테이지 2(STAGE 2)는 서브 연산 3, 서브 연산 4 및 서브 연산 5-1을 포함하고, 파이프라인 스테이지 3(STAGE 3)은 서브 연산 5-2, 서브 연산 6 및 서브 연산 7을 포함한다. 여기서, 서브 연산 5-1 및 서브 연산 5-2는 서브 연산 5로부터 구분된 연산들이다. 이와 같이 하나의 서브 연산을 다시 여러 서브 연산들로 구분한 것은, 인-메모리 연산 유닛의 한 사이클(예를 들어, 동작 주기 k (ns)) 내에 처리할 수 있는 연산들로 구분한 것이다.
주어진 연산이 인-메모리 연산 유닛(도 3의 연산 유닛 1(111))의 동작 주파수(CLK)에 대응하는 동작 주기 k (ns) 단위로 파이프라이닝된 경우, 인-메모리 연산 유닛(도 3의 연산 유닛 1(111))은 총 3 사이클들에 걸쳐 파이프라이닝된 연산(400)(3개의 파이프라인 스테이지들(STAGEs 1-3)을 처리할 수 있고, 각 사이클(동작 주기: k (ns))마다 파이프라이닝을 수행할 수 있다. 각 메모리 뱅크(도 3의 121 또는 122)의 동작 주파수(CLK)는 인-메모리 연산 유닛(연산 유닛 1(111))의 동작 주파수(CLK)와 동일하므로, 인-메모리 연산 유닛(연산 유닛 1(111))은 메모리 뱅크(121 또는 122)의 동작 주기(k (ns)) 내에 하나의 메모리 뱅크(121 또는 122)에 액세스할 수 있다.
도 5는 일 실시예에 따라 도 4의 파이프라이닝된 연산의 인-메모리 프로세싱을 위해 파이프라인 스테이지들이 각 메모리 뱅크에 할당되는 것을 설명하기 위한 도면이다.
도 5를 참고하면, 인-메모리 연산 유닛(도 3의 연산 유닛 1(111))이 메모리 뱅크 1(도 3의 121)로부터 액세스된 연산 데이터(OP#_EVEN)를 처리하는 경우(501)와, 인-메모리 연산 유닛(연산 유닛 1(111))이 메모리 뱅크 2(도 3의 122)로부터 액세스된 연산 데이터(OP#_ODD)를 처리하는 경우(502)가 구분되어 도시되어 있다. 각각의 경우들(501, 502)에서, 메모리 뱅크들(121, 122) 각각은 인-메모리 연산 유닛(연산 유닛 1(111))에 의해 요청된 파이프라이닝된 연산(400)(3개의 파이프라인 스테이지들(STAGEs 1-3)을 처리하기 위해 각각 동작된다.
각 타임라인(사이클)에서의 파이프라인 스테이지 할당(500)에 대해 설명하도록 한다. 한편, 파이프라인 스테이지 할당(500)에서 각 사이클은 앞서 설명된 동작 주파수(CLK)에 대응하는 동작 주기(k (ns))를 의미한다.
N번째 사이클에서, 연산 유닛 1(111)은 메모리 뱅크 1(121)에 액세스하여 연산 1_EVEN(OP1_EVEN)의 데이터를 리드(read)하고 연산 1_EVEN(OP1_EVEN)의 파이프라인 스테이지 1(STAGE 1)을 처리한다.
(N+1)번째 사이클에서, 연산 유닛 1(111)은 메모리 뱅크 2(122)에 액세스하여 연산 1_ODD(OP1_ODD)의 데이터를 리드하고 연산 1_ODD(OP1_ODD)의 파이프라인 스테이지 1(STAGE 1)을 처리한다. 한편, (N+1)번째 사이클에서, 연산 유닛 1(111)은 파이프라이닝에 기초하여, 연산 1_EVEN(OP1_EVEN)의 파이프라인 스테이지 2(STAGE 2)를 처리할 수 있다.
(N+2)번째 사이클에서, 연산 유닛 1(111)은 메모리 뱅크 1(121)에 액세스하여, 연산 1_EVEN(OP1_EVEN)과는 다른 연산 2_EVEN(OP2_EVEN)의 데이터를 리드한다. 연산 유닛 1(111)은 연산 2_EVEN(OP1_EVEN)의 파이프라인 스테이지 1(STAGE 1)을 처리한다. 한편, (N+2)번째 사이클에서, 연산 유닛 1(111)은 파이프라이닝에 기초하여, 연산 1_EVEN(OP1_EVEN)의 파이프라인 스테이지 3(STAGE 3) 및 연산 1_ODD(OP1_ODD)의 파이프라인 스테이지 2(STAGE 2)를 처리할 수 있다.
즉, 각 사이클에서 연산 유닛 1(111)은 메모리 뱅크들(121, 122) 각각에 교대로 액세스하여 각 연산의 데이터를 리드할 수 있으며, 또한 각 사이클에서 연산 유닛 1(111)은 메모리 뱅크들(121, 122) 각각으로부터 리드된 파이프라이닝된 연산(400)의 데이터를 이용하여, 파이프라인 스테이지들(STAGEs 1-3) 각각을 병렬 처리할 수 있다.
도 6은 서로 다른 위치들에 배치된 메모리 뱅크들에 액세스(리드/라이트)할 때 발생할 수 있는 레이턴시 차이를 설명하기 위한 도면들이다.
도 6을 참고하면, 메모리 다이(100) 상에는 일 측에 배치된 제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)과 타 측에 배치된 제 2 세트의 메모리 뱅크들(BANK 9 내지 BANK 16)이 배치될 수 있다. 또한, 메모리 다이(100) 상의 제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)과 제 2 세트의 메모리 뱅크들(BANK 9 내지 BANK 16) 사이의 영역(600)에는, CMD/IO 패드들(command/IO pads)(610)을 포함하는 입출력 인터페이스가 구비될 수 있다. CMD/IO 패드들(610)은 커맨드 패드들(command pads)이라는 용어로도 지칭될 수 있다. 입출력 인터페이스에는 추가적으로, 외부로부터 CMD/IO 패드들(610)로 전송된 신호들을 디코딩하고 디코딩된 신호들을 메모리 뱅크들로 전달하는 글로벌 디코더도 구비될 수 있다.
예를 들어, 외부로부터 CMD/IO 패드들(610)로 커맨드 신호가 전송되고, 글로벌 디코더에 의해 디코딩된 커맨드 신호에 따라 두 개의 메모리 뱅크들(BANK 1 및 BANK 3)에 대한 데이터 액세스가 수행되는 경우에 대해 설명하도록 한다.
도 6을 참고하면, 메모리 다이(100) 상에서, CMD/IO 패드들(610)로부터 메모리 뱅크(BANK 3)까지의 데이터 전송 거리는 CMD/IO 패드들(610)로부터 메모리 뱅크(BANK 1)까지의 데이터 전송 거리보다 가깝다. 따라서, 데이터 액세스를 위한 메모리 뱅크들(BANK 1 및 BANK 3) 간의 물리적 거리들의 차이로 인하여, 메모리 뱅크들(BANK 1 및 BANK 3) 각각에 액세스하기 위한 커맨드/데이터 신호들의 레이턴시 차이(예를 들어, 약 Δ2.5 ns)가 발생될 수 있다.
즉, 도 6에서 설명된 레이턴시 차이는 메모리 다이(100) 상의 메모리 뱅크들(BANK 1 내지 BANK 16)의 위치들에 따른 데이터 전송을 위한 물리적 거리의 차이로 인해 발생되는 것으로 이해될 수 있다.
도 7은 일 실시예에 따른 메모리 다이 상의 인-메모리 연산 유닛들의 배치를 설명하기 위한 도면이다.
도 7을 참고하면, 도 6에서 설명된 바와 같이, 메모리 다이(100) 상에는 일 측에 배치된 제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)과 타 측에 배치된 제 2 세트의 메모리 뱅크들(BANK 9 내지 BANK 16)이 배치될 수 있다. 또한, 메모리 다이(100) 상의 제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)과 제 2 세트의 메모리 뱅크들(BANK 9 내지 BANK 16) 사이의 영역(700)에는, CMD/IO 패드들(710)을 포함하는 입출력 인터페이스가 배치될 수 있다.
영역(700)에는, 제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)에 인접하게 배치되어 제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)에 연결된 제 1 세트의 인-메모리 연산 유닛들(IMOU1 내지 IMOU4)(IMOU: in-memory operation unit), 및 제 2 세트의 메모리 뱅크들(BANK 9 내지 BANK 16)에 인접하게 배치되어 제 2 세트의 메모리 뱅크들(BANK 9 내지 BANK 16)에 연결된 제 2 세트의 인-메모리 연산 유닛들(IMOU5 내지 IMOU8)이 배치될 수 있다.
메모리 다이(100) 상에서, 메모리 뱅크들(BANK 1 내지 BANK 16)은 n개(예를 들어, n=2)의 메모리 뱅크들 단위로 각 인-메모리 연산 유닛(IMOU1 내지 IMOU8 각각)에 할당될 수 있다.
구체적으로, 제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)과 인-메모리 연산 유닛들(IMOU1 내지 IMOU4) 간의 매핑 관계에 대해 예를 들어 설명하도록 한다.
제 1 세트의 메모리 뱅크들(BANK 1 내지 BANK 8)은 CMD/IO 패드들(710)의 위치를 기준으로, CMD/IO 패드들(710)로부터 상대적으로 가까운(near) 메모리 뱅크들(BANK 3, BANK 4, BANK 5, BANK 6)과 CMD/IO 패드들(710)로부터 상대적으로 먼(far) 메모리 뱅크들(BANK 1, BANK 2, BANK 7, BANK 8)로 구분될 수 있다. 인-메모리 연산 유닛들(IMOU1 내지 IMOU4) 각각은 CMD/IO 패드들(710)로부터 상대적으로 가까운 메모리 뱅크들(BANK 3, BANK 4, BANK 5, BANK 6) 중 하나와 CMD/IO 패드들(710)로부터 상대적으로 먼 메모리 뱅크들(BANK 1, BANK 2, BANK 7, BANK 8) 중 하나에 매핑되어(할당되어) 연결될 수 있다.
예를 들어, 인-메모리 연산 유닛(IMOU 1)은 먼 메모리 뱅크(BANK 1)와 가까운 메모리 뱅크(BANK 3)에 매핑될 수 있고, 인-메모리 연산 유닛(IMOU 2)은 먼 메모리 뱅크(BANK 2)와 가까운 메모리 뱅크(BANK 4)에 매핑될 수 있다. 마찬가지로, 인-메모리 연산 유닛(IMOU 3)은 먼 메모리 뱅크(BANK 7)와 가까운 메모리 뱅크(BANK 5)에 매핑될 수 있고, 인-메모리 연산 유닛(IMOU 4)은 먼 메모리 뱅크(BANK 8)와 가까운 메모리 뱅크(BANK 6)에 매핑될 수 있다. 즉, 인-메모리 연산 유닛들(IMOU1 내지 IMOU4) 각각은 어느 먼 메모리 뱅크와 어느 가까운 메모리 뱅크의 사이에서 각각의 메모리 뱅크와의 거리가 동일한 위치에 배치될 수 있다.
한편, 제 2 세트의 메모리 뱅크들(BANK 9 내지 BANK 16) 및 제 2 세트의 인-메모리 연산 유닛들(IMOU5 내지 IMOU8)도 앞서 설명된 바와 유사한 방식으로 매핑될 수 있다.
이와 같은 인-메모리 연산 유닛들(IMOU1 내지 IMOU8)의 배치 방식 및 매핑 방식에 따르면, 어느 인-메모리 연산 유닛에 매핑된 2개의 메모리 뱅크들은 CMD/IO 패드들(710)로부터의 데이터 전송 거리(즉, 물리적 거리)가 상이하기 때문에, 도 6에서 설명된 바와 같이 레이턴시 차이가 존재한다.
도 8은 일 실시예에 따른 인-메모리 연산 유닛들에 매핑된 메모리 뱅크들에서 연산을 처리하는 방식을 설명하기 위한 도면이다.
도 8을 참고하면, 앞서 도 7에 설명된 인-메모리 연산 유닛(IMOU 1) 및 인-메모리 연산 유닛(IMOU 1)에 매핑된 메모리 뱅크들(BANK 1 및 BANK 3)에서 연산을 처리하는 방식을 예로 들어 설명하도록 한다.
인-메모리 연산 유닛(IMOU 1)에는 먼 메모리 뱅크(BANK 1)와 가까운 메모리 뱅크(BANK 3)가 매핑된다. 여기서, 먼 메모리 뱅크(BANK 1)와 가까운 메모리 뱅크(BANK 3)는 CMD/IO 패드들(710)로부터의 데이터 전송 거리(즉, 물리적 거리)가 상이하기 때문에, 데이터 액세스에 있어서 레이턴시의 차이가 존재할 수 있다.
외부로부터 CMD/IO 패드들(710)로 전송된 커맨드 신호에 따라 가까운 메모리 뱅크(BANK 3)에 대한 데이터 액세스가 수행되는 경우(810), 인-메모리 연산 유닛(IMOU 1)은 먼 메모리 뱅크(BANK 1)에 대한 데이터 액세스가 수행되는 경우(820)보다 빠른 속도로 인-메모리 프로세싱을 수행할 수 있다.
따라서, 인-메모리 연산 유닛(IMOU 1)은 매핑된 메모리 뱅크들(BANK 1 및 BANK 3) 중에서 CMD/IO 패드들(710)로부터 상대적으로 가까운 메모리 뱅크(BANK 3)에 먼저 액세스하여 파이프라이닝된 연산을 처리한다. 뒤이어, 인-메모리 연산 유닛(IMOU 1)은 상대적으로 먼 메모리 뱅크(BANK 1)에 액세스하여 파이프라이닝된 연산을 처리한다.
이와 같은 방식에 따르면, 도 5에서 설명된 연산 유닛 1(111)이 메모리 뱅크 1(121)로부터 액세스된 연산 데이터(OP#_EVEN)를 처리하는 것은, 도 8에서 인-메모리 연산 유닛(IMOU 1)이 가까운 메모리 뱅크(BANK 3)로부터 액세스된 데이터(①)를 처리하는 것에 대응할 수 있다. 유사하게, 도 5에서 설명된 연산 유닛 1(111)이 메모리 뱅크 2(122)로부터 액세스된 연산 데이터(OP#_ODD)를 처리하는 것은, 도 8에서 인-메모리 연산 유닛(IMOU 1)이 먼 메모리 뱅크(BANK 1)로부터 액세스된 데이터(②)를 처리하는 것에 대응할 수 있다.
한편, 도 7에 도시된 나머지 메모리 뱅크들과 인-메모리 연산 유닛들 간에도 도 8에서 설명된 바와 유사한 방식으로 파이프라이닝된 연산에 대한 인-메모리 프로세싱이 수행될 수 있다.
도 9는 일 실시예에 따라 먼 메모리 뱅크에 먼저 액세스하는 경우와 가까운 메모리 뱅크에 먼저 액세스하는 경우를 비교하여 설명하기 위한 도면이다.
도 9를 참고하면, 인-메모리 연산 유닛(예를 들어, 도 8의 IMOU1)이 먼 메모리 뱅크(예를 들어, 도 8의 BANK 1)에 먼저 액세스하는 경우(910), 1번째 MAC 연산부터 8번째 MAC 연산이 수행될때까지는 총 10 사이클이 소요될 수 있다. 하지만, 인-메모리 연산 유닛(IMOU1)이 가까운 메모리 뱅크(예를 들어, 도 8의 BANK 3)에 먼저 액세스하는 경우(920), 1번째 MAC 연산부터 8번째 MAC 연산이 수행될때까지는 총 9 사이클이 소요될 수 있다. 즉, 인-메모리 연산 유닛에 매핑된 메모리 뱅크들 중, CMD/IO 패드들로부터 상대적으로 가까운 메모리 뱅크에 인-메모리 연산 유닛이 먼저 액세스함으로써 보다 빠른 속도로 인-메모리 프로세싱을 수행할 수 있다는 점이 이해될 수 있다. 다시 말하면, 가까운 메모리 뱅크에 먼저 액세스하는 경우(920)에는, 데이터 의존성(data dependency)가 있는 후속 연산(즉, 1번째 ADD 연산)의 수행이 시작될 때까지의 NOP(no operation cycle)이 감소될 수 있으므로, 보다 빠른 속도로 인-메모리 프로세싱이 완료될 수 있다. 도 9의 시뮬레이션 결과에 따르면, 인-메모리 연산 유닛이 가까운 메모리 뱅크에 먼저 액세스함으로써, 약 10%의 연산 시간(약 1사이클 = 약 2.5 ns)이 감소될 수 있다는 점이 도시되어 있다.
도 10은 일 실시예에 따른 메모리 디바이스를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다. 모바일 기기나 데스크 탑 컴퓨터와 같은 컴퓨팅 시스템(1000)에 앞서 설명된 인-메모리 프로세싱을 수행하는 메모리 디바이스가 RAM(1020)으로 장착될 수 있다. RAM(1020)으로 장착되는 메모리 디바이스는 앞서 설명되었던 실시예들 중 어느 하나가 적용될 수 있다.
구체적으로, RAM(1020)으로 장착 가능한 인-메모리 프로세싱을 수행하는 메모리 디바이스는, 파이프라이닝된 연산의 인-메모리 프로세싱을 수행하는 복수의 인-메모리 연산 유닛들, 및 n개의 메모리 뱅크들 단위로 각 인-메모리 연산 유닛에 할당되고 파이프라이닝된 연산이 처리되는 동안 각 인-메모리 연산 유닛으로부터 요청된 데이터의 액세스 동작을 수행하는 복수의 메모리 뱅크들을 포함한다.
메모리 디바이스는 인-메모리 연산 유닛들 및 메모리 뱅크들이 배치된 메모리 다이를 포함하고, 복수의 메모리 뱅크들은 메모리 다이 상에서 일 측에 배치된 제 1 세트의 메모리 뱅크들 및 타 측에 배치된 제 2 세트의 메모리 뱅크들을 포함하고, 복수의 인-메모리 연산 유닛들은 제 1 세트의 메모리 뱅크들과 제 2 세트의 메모리 뱅크들 사이의 영역에서 제 1 세트의 메모리 뱅크들에 인접하게 배치되어 제 1 세트의 메모리 뱅크들에 연결된 제 1 세트의 인-메모리 연산 유닛들, 및 영역에서 제 2 세트의 메모리 뱅크들에 인접하게 배치되어 제 2 세트의 메모리 뱅크들에 연결된 제 2 세트의 인-메모리 연산 유닛들을 포함할 수 있다. 인-메모리 연산 유닛들 각각은 메모리 다이 상에서 상대적으로 멀게 배치된 메모리 뱅크보다 상대적으로 가깝게 배치된 메모리 뱅크로부터 액세스된 데이터에 대하여 파이프라이닝된 연산을 먼저 처리할 수 있다.
한편, 메모리 다이는 제 1 인-메모리 연산 유닛에 할당된 n개의 메모리 뱅크들 중 데이터 전송 거리에 기초하여 어느 하나를 순차적으로 선택하는 뱅크 셀렉터와 뱅크 셀렉터에 의해 선택된 메모리 뱅크로부터 액세스된 데이터를 제 1 인-메모리 연산 유닛으로 제공하는 멀티플렉서를 포함할 수 있다.
RAM(1020)으로 장착되는 메모리 디바이스가 DDR4 DRAM 모듈인 경우, 복수의 메모리 뱅크들은 8개의 제 1 세트 메모리 뱅크들 및 8개의 제 2 세트 메모리 뱅크들을 포함하고, 인-메모리 연산 유닛들은 8/n개의 제 1 세트 인-메모리 연산 유닛들 및 8/n개의 제 2 세트 인-메모리 연산 유닛들을 포함할 수 있다(n은 2, 4 및 8 중 어느 하나의 수). 이때, 제 1 세트 메모리 뱅크들은 제 1 방향(x축)의 순서대로 제 1 내지 제 8 메모리 뱅크들을 포함하고, 제 1 세트 인-메모리 연산 유닛들은 제 1 방향(x축)의 순서대로 제 1 내지 제 4 인-메모리 연산 유닛들을 포함할 수 있다. n=2인 경우, 제 1 메모리 뱅크 및 제 3 메모리 뱅크는 제 1 인-메모리 연산 유닛에 할당되고, 제 2 메모리 뱅크 및 제 4 메모리 뱅크는 제 2 인-메모리 연산 유닛에 할당되고, 제 5 메모리 뱅크 및 제 7 메모리 뱅크는 제 3 인-메모리 연산 유닛에 할당되고, 제 6 메모리 뱅크 및 상기 제 8 메모리 뱅크는 제 4 인-메모리 연산 유닛에 할당되는 것으로 연결될 수 있다. 한편, 제 2 세트 메모리 뱅크들과 제 2 세트 인-메모리 연산 유닛들 간의 연결은, 제 1 세트 메모리 뱅크들과 제 1 세트 인-메모리 연산 유닛들 간의 연결에 대칭할 수 있다.
컴퓨팅 시스템(1000)은 중앙 처리 장치(CPU)(1010), RAM(1020), 유저 인터페이스(1030)와 불휘발성 메모리(1040)를 포함하며, 이들 구성요소는 각각 버스(1050)에 전기적으로 연결되어 있다. 불휘발성 메모리(1040)는 SSD나 HDD와 같은 대용량 저장 장치가 사용될 수 있다.
컴퓨팅 시스템(1000)에 앞서 설명된 메모리 디바이스(또는, 메모리 시스템)가 적용됨에 따라, RAM(1020)에 구비되는 메모리 디바이스는 인-메모리 프로세싱이 가능할 수 있다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 실시예가 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 실시예에 포함된 것으로 해석되어야 할 것이다.

Claims (15)

  1. 인-메모리 프로세싱(in-memory processing)을 수행하는 메모리 디바이스에 있어서,
    멀티 파이프라인 스테이지들로 파이프라이닝된(pipelined) 연산의 인-메모리 프로세싱을 수행하는 복수의 인-메모리 연산 유닛들;
    n개의 메모리 뱅크들 단위로 각 인-메모리 연산 유닛에 할당되고, 상기 파이프라이닝된 연산이 처리되는 동안 상기 각 인-메모리 연산 유닛으로부터 요청된 데이터의 액세스 동작을 수행하는 복수의 메모리 뱅크들(n은 자연수); 및
    상기 인-메모리 연산 유닛들 및 상기 메모리 뱅크들과, 외부로부터 커맨드 신호를 수신하는 커맨드 패드들이 배치된, 메모리 다이(memory die)를 포함하고,
    상기 메모리 다이 상에서 상기 인-메모리 연산 유닛들 각각에 할당된 상기 n개의 메모리 뱅크들은, 상기 커맨드 패드들과의 데이터 전송 거리가 상대적으로 가깝게 배치된 메모리 뱅크와 상대적으로 멀게 배치된 메모리 뱅크를 포함하는,
    메모리 디바이스.
  2. 제 1 항에 있어서,
    상기 인-메모리 연산 유닛들 각각은
    상기 파이프라이닝된 연산에 대한 상기 인-메모리 프로세싱을 수행하기 위하여, 상기 할당된 n개의 메모리 뱅크들 중 상기 상대적으로 멀게 배치된 메모리 뱅크보다 상기 상대적으로 가깝게 배치된 메모리 뱅크를 먼저 액세스하는,
    메모리 디바이스.
  3. 제 1 항에 있어서,
    상기 메모리 다이는
    제 1 인-메모리 연산 유닛에 할당된 n개의 메모리 뱅크들 중 상기 데이터 전송 거리에 기초하여 어느 하나를 순차적으로 선택하는 뱅크 셀렉터; 및
    상기 뱅크 셀렉터에 의해 선택된 메모리 뱅크로부터 액세스된 데이터를 상기 제 1 인-메모리 연산 유닛으로 제공하는 멀티플렉서를 더 포함하는,
    메모리 디바이스.
  4. 제 1 항에 있어서,
    상기 복수의 메모리 뱅크들은
    상기 메모리 다이 상에서 일 측에 배치된 제 1 세트의 메모리 뱅크들 및 타 측에 배치된 제 2 세트의 메모리 뱅크들을 포함하고,
    상기 복수의 인-메모리 연산 유닛들은
    상기 제 1 세트의 메모리 뱅크들과 상기 제 2 세트의 메모리 뱅크들 사이의 영역에서 상기 제 1 세트의 메모리 뱅크들에 인접하게 배치되어 상기 제 1 세트의 메모리 뱅크들에 연결된 제 1 세트의 인-메모리 연산 유닛들, 및 상기 영역에서 상기 제 2 세트의 메모리 뱅크들에 인접하게 배치되어 상기 제 2 세트의 메모리 뱅크들에 연결된 제 2 세트의 인-메모리 연산 유닛들을 포함하는,
    메모리 디바이스.
  5. 제 4 항에 있어서,
    상기 커맨드 패드들은
    상기 영역 상에서, 상기 제 1 세트의 인-메모리 연산 유닛들 및 상기 제 2 세트의 인-메모리 연산 유닛들 사이에 배치되고,
    상기 상대적으로 가깝게 배치된 메모리 뱅크와 상기 상대적으로 멀게 배치된 메모리 뱅크는 상기 영역 상에서의 상기 데이터 전송 거리에 따라 구분되는,
    메모리 디바이스.
  6. 제 4 항에 있어서,
    상기 제 1 세트의 메모리 뱅크들은
    상기 커맨드 패드들과의 상기 데이터 전송 거리에 기초하여 상대적으로 가깝게 배치된 제 1 그룹 및 상대적으로 멀게 배치된 제 2 그룹을 포함하는 2개의 그룹들로 구분되고,
    상기 인-메모리 연산 유닛들 각각에 할당된 상기 n개의 메모리 뱅크들은
    상기 제 1 그룹으로부터 선택된 하나의 메모리 뱅크 및 상기 제 2 그룹으로부터 선택된 하나의 메모리 뱅크를 포함하는,
    메모리 디바이스.
  7. 제 4 항에 있어서,
    상기 제 1 세트의 메모리 뱅크들 중 n개의 메모리 뱅크들은
    상기 제 1 세트의 인-메모리 연산 유닛들 중 제 1 인-메모리 연산 유닛에 할당되고,
    상기 n개의 메모리 뱅크들은
    상기 메모리 다이 상에서 상기 커맨드 패드들과의 상기 데이터 전송 거리가 상대적으로 가깝게 배치된 제 1 메모리 뱅크 및 상대적으로 멀게 배치된 제 2 메모리 뱅크를 포함하고,
    상기 제 1 인-메모리 연산 유닛은
    상기 제 2 메모리 뱅크로부터 액세스된 데이터보다 상기 제 1 메모리 뱅크로부터 액세스된 데이터에 대하여 상기 파이프라이닝된 연산을 먼저 처리하는,
    메모리 디바이스.
  8. 제 4 항에 있어서,
    상기 메모리 디바이스는 DDR4 DRAM(Double Data Rate 4 Dynamic Random-Access Memory) 모듈이고,
    상기 복수의 메모리 뱅크들은 8개의 상기 제 1 세트의 메모리 뱅크들 및 8개의 상기 제 2 세트의 메모리 뱅크들을 포함하고,
    상기 인-메모리 연산 유닛들은 8/n개의 상기 제 1 세트의 인-메모리 연산 유닛들 및 8/n개의 상기 제 2 세트의 인-메모리 연산 유닛들을 포함하는,
    메모리 디바이스.
  9. 제 4 항에 있어서,
    상기 제 1 세트의 메모리 뱅크들은 제 1 방향의 순서대로 제 1 내지 제 8 메모리 뱅크들을 포함하고,
    상기 제 1 세트의 인-메모리 연산 유닛들은 상기 제 1 방향의 순서대로 제 1 내지 제 4 인-메모리 연산 유닛들을 포함하고,
    상기 제 1 메모리 뱅크 및 상기 제 3 메모리 뱅크는 상기 제 1 인-메모리 연산 유닛에 할당되고, 상기 제 2 메모리 뱅크 및 상기 제 4 메모리 뱅크는 상기 제 2 인-메모리 연산 유닛에 할당되고, 상기 제 5 메모리 뱅크 및 상기 제 7 메모리 뱅크는 상기 제 3 인-메모리 연산 유닛에 할당되고, 상기 제 6 메모리 뱅크 및 상기 제 8 메모리 뱅크는 상기 제 4 인-메모리 연산 유닛에 할당되는,
    메모리 디바이스.
  10. 제 4 항에 있어서,
    상기 제 2 세트의 메모리 뱅크들과 상기 제 2 세트의 인-메모리 연산 유닛들 간의 연결은, 상기 제 1 세트의 메모리 뱅크들과 상기 제 1 세트의 인-메모리 연산 유닛들 간의 연결에 대칭하는,
    메모리 디바이스.
  11. 제 1 항에 있어서,
    상기 인-메모리 연산 유닛들 각각은
    상기 파이프라이닝된 연산의 각 파이프라인 스테이지에서의 서브 연산 결과를 버퍼링하기 위한 적어도 하나의 파이프라인 레지스터를 포함하는,
    메모리 디바이스.
  12. 제 1 항에 있어서,
    상기 파이프라이닝된 연산은
    뉴럴 네트워크의 MAC(multiply-accumulate) 연산을 포함하는,
    메모리 디바이스.
  13. 인-메모리 프로세싱(in-memory processing)을 수행하는 메모리 디바이스에 있어서,
    멀티 파이프라인 스테이지들로 파이프라이닝된(pipelined) 연산의 인-메모리 프로세싱을 수행하는 복수의 인-메모리 연산 유닛들; 및
    n개의 메모리 뱅크들 단위로 각 인-메모리 연산 유닛에 할당되고, 상기 파이프라이닝된 연산이 처리되는 동안 상기 각 인-메모리 연산 유닛으로부터 요청된 데이터의 액세스 동작을 수행하는 복수의 메모리 뱅크들(n은 자연수)을 포함하고,
    상기 인-메모리 연산 유닛들 각각에 할당된 상기 n개의 메모리 뱅크들은, 외부로부터 제공된 커맨드 신호의 데이터 전송을 위한 물리적 거리가 상대적으로 가까운 메모리 뱅크와 상대적으로 먼 메모리 뱅크를 포함하는,
    메모리 디바이스.
  14. 제 13 항에 있어서,
    상기 인-메모리 연산 유닛들 각각은
    상기 파이프라이닝된 연산에 대한 상기 인-메모리 프로세싱을 수행하기 위하여, 상기 할당된 n개의 메모리 뱅크들 중 상기 먼 메모리 뱅크보다 상기 가까운 메모리 뱅크를 먼저 액세스하는,
    메모리 디바이스.
  15. 제 13 항에 있어서,
    제 1 인-메모리 연산 유닛에 할당된 n개의 메모리 뱅크들 중 상기 데이터 전송 거리에 기초하여 어느 하나를 순차적으로 선택하는 뱅크 셀렉터; 및
    상기 뱅크 셀렉터에 의해 선택된 메모리 뱅크로부터 액세스된 데이터를 상기 제 1 인-메모리 연산 유닛으로 제공하는 멀티플렉서를 더 포함하는,
    메모리 디바이스.
KR1020200073733A 2020-06-17 2020-06-17 인-메모리 프로세싱을 수행하는 메모리 디바이스 KR20210156058A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200073733A KR20210156058A (ko) 2020-06-17 2020-06-17 인-메모리 프로세싱을 수행하는 메모리 디바이스
US17/098,959 US11494121B2 (en) 2020-06-17 2020-11-16 Memory device for performing in-memory processing
CN202011442348.8A CN113805790A (zh) 2020-06-17 2020-12-08 执行存储器内处理的存储器装置
EP21179685.9A EP3933605A1 (en) 2020-06-17 2021-06-16 Memory device for performing in-memory processing
US17/954,532 US20230013611A1 (en) 2020-06-17 2022-09-28 Memory device for performing in-memory processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200073733A KR20210156058A (ko) 2020-06-17 2020-06-17 인-메모리 프로세싱을 수행하는 메모리 디바이스

Publications (1)

Publication Number Publication Date
KR20210156058A true KR20210156058A (ko) 2021-12-24

Family

ID=76483187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200073733A KR20210156058A (ko) 2020-06-17 2020-06-17 인-메모리 프로세싱을 수행하는 메모리 디바이스

Country Status (4)

Country Link
US (2) US11494121B2 (ko)
EP (1) EP3933605A1 (ko)
KR (1) KR20210156058A (ko)
CN (1) CN113805790A (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05342178A (ja) 1992-06-10 1993-12-24 Hitachi Ltd 調停回路およびそれを用いたデータ処理装置
JP2001236221A (ja) 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
JP2004326228A (ja) 2003-04-22 2004-11-18 Matsushita Electric Ind Co Ltd 並列演算処理装置
JP4989900B2 (ja) 2006-01-31 2012-08-01 ルネサスエレクトロニクス株式会社 並列演算処理装置
US8984256B2 (en) 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
US9477636B2 (en) * 2009-10-21 2016-10-25 Micron Technology, Inc. Memory having internal processors and data communication methods in memory
US8456917B1 (en) * 2011-11-29 2013-06-04 Elpida Memory, Inc. Logic circuit for a semiconductor memory device, and method of managing an operation in the semiconductor memory device
US9983830B2 (en) * 2013-09-24 2018-05-29 Rambus Inc. Memory component having internal read modify-write operation
US11501139B2 (en) 2017-05-03 2022-11-15 Intel Corporation Scaling half-precision floating point tensors for training deep neural networks
US10884957B2 (en) * 2018-10-15 2021-01-05 Intel Corporation Pipeline circuit architecture to provide in-memory computation functionality
CN115413367A (zh) * 2020-02-07 2022-11-29 日升存储公司 具有低有效延迟的高容量存储器电路

Also Published As

Publication number Publication date
CN113805790A (zh) 2021-12-17
US20230013611A1 (en) 2023-01-19
US11494121B2 (en) 2022-11-08
US20210397376A1 (en) 2021-12-23
EP3933605A1 (en) 2022-01-05

Similar Documents

Publication Publication Date Title
US11614878B2 (en) Apparatuses and methods for data movement
US11482260B2 (en) Apparatuses and methods for scatter and gather
US20210142845A1 (en) Apparatuses and methods for logic/memory devices
US11682449B2 (en) Apparatuses and methods for compute in data path
US11194579B2 (en) Memory device supporting skip calculation mode and method of operating the same
US20200293319A1 (en) Memory device for processing operation, data processing system including the same, and method of operating the memory device
KR20220045480A (ko) 인-메모리 프로세싱을 수행하는 메모리 디바이스
KR20200108773A (ko) 연산 처리를 수행하는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법
US10867662B2 (en) Apparatuses and methods for subarray addressing
KR20220127601A (ko) 인터페이스를 이용하여 내부 프로세싱을 수행하는 메모리 시스템, 메모리 장치 및 메모리 장치의 동작 방법
US20200293452A1 (en) Memory device and method including circular instruction memory queue
KR20210156058A (ko) 인-메모리 프로세싱을 수행하는 메모리 디바이스
신현승 McDRAM: Low Latency and Energy-Efficient Matrix Computation in DRAM
CN114546901A (zh) 存储装置及其操作方法

Legal Events

Date Code Title Description
A201 Request for examination