KR20230109533A - 인메모리 연산을 위한 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법 - Google Patents

인메모리 연산을 위한 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법 Download PDF

Info

Publication number
KR20230109533A
KR20230109533A KR1020220066650A KR20220066650A KR20230109533A KR 20230109533 A KR20230109533 A KR 20230109533A KR 1020220066650 A KR1020220066650 A KR 1020220066650A KR 20220066650 A KR20220066650 A KR 20220066650A KR 20230109533 A KR20230109533 A KR 20230109533A
Authority
KR
South Korea
Prior art keywords
pim
memory
address
control logic
column address
Prior art date
Application number
KR1020220066650A
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 US18/070,741 priority Critical patent/US20230223065A1/en
Priority to CN202310012218.8A priority patent/CN116434796A/zh
Publication of KR20230109533A publication Critical patent/KR20230109533A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Dram (AREA)

Abstract

본 발명의 실시 예에 따른 메모리 장치는 복수의 메모리 뱅크들, 복수의 메모리 뱅크들 각각은 복수의 워드 라인들에 연결된 복수의 메모리 셀들을 포함하는 메모리 셀 어레이, 메모리 셀 어레이와 복수의 워드 라인들을 통해 연결되는 로우 디코더, 메모리 셀 어레이와 복수의 비트 라인들을 통해 연결되는 감지 증폭기 및 쓰기 드라이버, 및 감지 증폭기 및 쓰기 드라이버와 연결되는 컬럼 디코더를 포함하고, 복수의 컬럼 어드레스 비트들 및 복수의 읽기 커맨드들을 수신하는 제어 로직을 포함하고, 제어 로직은 PIM 어드레스 생성기를 포함하고, 제1 동작 모드에서, 복수의 컬럼 어드레스 비트들을 메모리 뱅크로 전송하고, 그리고 제2 동작 모드에서, PIM 어드레스 생성기가 복수의 읽기 커맨드들 중 제1 읽기 커맨드를 수신하는 경우 복수의 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제1 PIM 어드레스를, 메모리 뱅크로 전송한다.

Description

인메모리 연산을 위한 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법{MEMORY DEVIVE, MEMORY MODULE, AND OPERATING METHOD OF MEMORY DEVICE FOR PROCESSING IN MEMORY}
본 발명은 반도체 장치에 관한 것으로, 좀 더 상세하게는 인메모리 연산을 수행하는 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법에 관한 것이다.
랜덤 액세스 메모리가 중앙 처리 장치의 연산들 중 일부 연산들을 직접 수행하는 것은 PIM(Processing In Memory)이라 불린다. 랜덤 액세스 메모리가 일부 연산들을 직접 수행함으로써, 중앙 처리 장치와 랜덤 액세스 메모리 사이의 통신이 감소하고, 병목이 해소될 수 있다.
랜덤 액세스 메모리가 일부 연산들을 수행하도록 하기 위해 중앙 처리 장치는 커맨드 및 어드레스를 랜덤 액세스 메모리에 전송할 수 있다. 하지만, 중앙 처리 장치가 순서에 맞게 전송한 커맨드 및 어드레스를 메모리 컨트롤러가 재정렬할 수 있다. 메모리 컨트롤러는 재정렬한 커맨드 및 어드레스를 랜덤 액세스 메모리에 전송할 수 있다. 이러한 경우 랜덤 액세스 메모리는 중앙 처리 장치가 지정한 순서대로 연산들을 수행할 수 없다.
본 발명의 목적은 메모리 컨트롤러에 의해 PIM 연산 명령들의 순서들이 재정렬되어도 본래의 순서에 따라 PIM 연산들을 수행하는 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법을 제공하는 데 있다.
본 기재의 실시 예에 따른 메모리 장치는 복수의 메모리 뱅크들, 복수의 메모리 뱅크들 각각은 복수의 워드 라인들에 연결된 복수의 메모리 셀들을 포함하는 메모리 셀 어레이, 메모리 셀 어레이와 복수의 워드 라인들을 통해 연결되는 로우 디코더, 메모리 셀 어레이와 복수의 비트 라인들을 통해 연결되는 감지 증폭기 및 쓰기 드라이버, 및 감지 증폭기 및 쓰기 드라이버와 연결되는 컬럼 디코더를 포함하고, 복수의 컬럼 어드레스 비트들 및 복수의 읽기 커맨드들을 수신하는 제어 로직을 포함하고, 제어 로직은 PIM 어드레스 생성기를 포함하고, 제1 동작 모드에서, 복수의 컬럼 어드레스 비트들을 메모리 뱅크로 전송하고, 그리고 제2 동작 모드에서, PIM 어드레스 생성기가 복수의 읽기 커맨드들 중 제1 읽기 커맨드를 수신하는 경우 복수의 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제1 PIM 어드레스를, 메모리 뱅크로 전송한다.
본 기재의 실시 예에 따른 복수의 메모리 뱅크들을 포함하고, 복수의 메모리 뱅크들 각각은 복수의 메모리 셀들을 포함하는 메모리 장치의 동작 방법은 제어 로직이 메모리 컨트롤러로부터 복수의 컬럼 어드레스 비트들 및 복수의 읽기 커맨드들을 수신하는 단계, 제어 로직은 제1 동작 모드에서, 복수의 컬럼 어드레스 비트들을 메모리 뱅크로 전송하는 단계, 그리고 제어 로직은 제2 동작 모드에서, PIM 어드레스 생성기가 복수의 읽기 커맨드들 중 제1 읽기 커맨드를 수신하는 경우, 복수의 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제1 PIM 어드레스를, 메모리 뱅크로 전송하는 단계를 포함한다.
본 기재의 실시 예에 따른 메모리 모듈은 복수의 메모리 장치들을 포함하고, 복수의 메모리 장치들은 외부의 호스트로부터 메모리 컨트롤러를 통해 커맨드 및 어드레스를 수신하고, 복수의 메모리 장치들의 각각은: 복수의 메모리 뱅크들, 복수의 메모리 뱅크들 각각은 복수의 워드 라인들에 연결된 복수의 메모리 셀들을 포함하는 메모리 셀 어레이, 메모리 셀 어레이와 복수의 워드 라인들을 통해 연결되는 로우 디코더, 메모리 셀 어레이와 복수의 비트 라인들을 통해 연결되는 감지 증폭기 및 쓰기 드라이버, 및 감지 증폭기 및 쓰기 드라이버와 연결되는 컬럼 디코더를 포함하고, 복수의 컬럼 어드레스 비트들 및 복수의 읽기 커맨드들을 수신하는 제어 로직을 포함하고, 제어 로직은, PIM 어드레스 생성기를 포함하고, 제1 동작 모드에서, 복수의 컬럼 어드레스 비트들을 메모리 뱅크로 전송하고, 그리고 제2 동작 모드에서, PIM 어드레스 생성기가 복수의 읽기 커맨드들 중 제1 읽기 커맨드를 수신하는 경우 복수의 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제1 PIM 어드레스를, 메모리 뱅크로 전송한다.
본 발명의 실시 예에 따른 PIM 연산을 위한 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법은 메모리 셀들에 액세스하기 위한 어드레스를 메모리 장치 내에서 자동으로 생성할 수 있다. 이에 따라, 메모리 컨트롤러가 제공하는 커맨드 및 어드레스에 대해 메모리 장치는 원하는 연산들을 순서대로 정확히 실행할 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 장치를 보여주는 도면이다.
도 2는 메모리 장치에서 PIM 기능을 수행하는 제어 로직의 세부적인 구성을 도시한 도면이다.
도 3은 제어 로직이 실행하는 커맨드를 결정하는 단계의 흐름도이다.
도 4는 제1 동작 모드에서 메모리 컨트롤러 및 메모리 모듈의 외부 동작의 흐름을 보여주는 도면이다.
도 5a는 제2 동작 모드에서 메모리 컨트롤러 및 메모리 모듈의 제1 외부 동작의 흐름을 보여주는 도면이다.
도 5b는 제2 동작 모드에서 메모리 컨트롤러 및 메모리 모듈의 제2 외부 동작의 흐름을 보여주는 도면이다.
도 6은 제2 동작 모드에서 메모리 장치의 내부 동작 흐름을 보여주는 도면이다.
도 7a는 제2 동작 모드에서 PIM 명령 셋에 포함된 버스트 길이가 2인 경우 PIM 연산의 제1 실시 예에 관한 도면이다.
도 7b는 제2 동작 모드에서 PIM 명령 셋에 포함된 버스트 길이가 4인 경우 PIM 연산의 제2 실시 예에 관한 도면이다.
도 8은 본 발명의 실시 예에 따른 메모리 장치의 동작 방법의 흐름도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 전자 장치(1000)를 보여주는 도면이다. 도 1을 참조하면, PIM(Processing In Memory) 연산을 위한 전자 장치(1000)는 호스트(1100), 메모리 컨트롤러(1200), 및 메모리 모듈(1300)을 포함할 수 있다.
메모리 모듈(1300)은 복수의 메모리 장치들을 포함할 수 있다. 다만, 본 명세서에서는 메모리 모듈(1300)에 포함된 복수의 메모리 장치들 중 하나의 메모리 장치(100)에 대하여만 설명한다. 나머지 메모리 장치들은 이하 설명되는 하나의 메모리 장치(100)와 구성 및 기능이 동일할 수 있다.
메모리 장치(100)는 동적 랜덤 액세스 메모리(DRAM)일 수 있지만, 이에 한정되지 않는다. 메모리 장치(100)는 정적 랜덤 액세스 메모리(SRAM), 자기 랜덤 액세스 메모리(MRAM), 상 변화 랜덤 액세스 메모리(PRAM), 강유전체 랜덤 액세스 메모리(FRAM), 저항성 랜덤 액세스 메모리(RRAM) 등과 같은 다양한 랜덤 액세스 메모리들 중 하나일 수 있다.
호스트(1100)는 메모리 컨트롤러(1200)를 통해 커맨드 및 어드레스(CMD, BA, RA, CA)를 메모리 장치(100)에 전송할 수 있다. 예시적으로, 메모리 컨트롤러(1200)는 호스트(1100)의 외부에 제공되는 것으로 도시되지만, 메모리 컨트롤러(1200)는 호스트(1100)의 내부에 포함될 수 있다.
호스트(1100)가 메모리 장치(100)에 데이터를 기입하는 쓰기 동작을 수행할 때, 호스트(1100)는 메모리 컨트롤러(1200)를 통해 메모리 장치(100)에 커맨드 및 어드레스(CMD, BA, RA, CA)와 함께 데이터 신호(DQ)를 전송할 수 있다. 메모리 장치(100)는 커맨드 및 어드레스(CMD, BA, RA, CA)에 기반하여 대응하는 메모리 셀들에 데이터를 쓸 수 있다.
호스트(1100가 메모리 장치(100)로부터 데이터를 읽는 읽기 동작을 수행할 때, 호스트(1100)는 메모리 컨트롤러(1200)를 통해 메모리 장치(100)에 커맨드 및 어드레스(CMD, BA, RA, CA)를 전송할 수 있다. 메모리 장치(100)는 커맨드 및 어드레스(CMD, BA, RA, CA)에 기반하여 대응하는 메모리 셀들로부터 데이터를 읽고, 그리고 읽혀진 데이터를 데이터 신호(DQ)로써 메모리 컨트롤러(1200)를 통해 호스트(1100)로 전송할 수 있다.
메모리 장치(100)는 메모리 셀 어레이(111), 로우 디코더(112), 감지 증폭기 및 쓰기 드라이버(113), 및 컬럼 디코더(114)를 각각 포함하는 복수의 메모리 뱅크들(110), PIM 블록(121)을 포함하는 제어 로직(120), 게이팅 회로(130), 및 버퍼 블록(140)을 포함할 수 있다.
복수의 메모리 뱅크들(110) 각각은 복수의 워드 라인들(WLs)에 연결된 복수의 메모리 셀들을 포함할 수 있다. 복수의 워드 라인들(WLs) 각각은 복수의 메모리 셀들에 연결될 수 있다.
메모리 셀 어레이(111)는 로우 및 컬럼 방향으로 배치된 복수의 메모리 셀들(미도시)을 포함할 수 있다. 복수의 메모리 셀들 각각은 복수의 워드 라인들(WLs) 중 하나의 워드 라인 및 복수의 비트 라인들(BLs) 중 하나의 비트 라인에 연결될 수 있다.
로우 디코더(112)는 제어 로직(120)의 제어에 응답하여 동작할 수 있다. 로우 디코더(112)는 복수의 워드 라인들(WLs) 중에서 액세스의 대상으로 선택된 하나 이상의 워드 라인들을 활성화할 수 있다. 로우 디코더(112)는 메모리 컨트롤러(1200)로부터 수신한 로우 어드레스(RA)에 기반하여 복수의 워드 라인들(WLs) 중 하나 이상의 워드 라인들을 액세스의 대상으로 선택할 수 있다.
감지 증폭기 및 쓰기 드라이버(113)는 제어 로직(120)의 제어에 응답하여 동작할 수 있다. 감지 증폭기 및 쓰기 드라이버(113)는 복수의 비트 라인들(BLs) 각각을 통해 복수의 메모리 셀들에 연결될 수 있다.
컬럼 디코더(114)는 제어 로직(120)의 제어에 응답하여 동작할 수 있다. 컬럼 디코더(114)는 감지 증폭기 및 쓰기 드라이버(113)에 연결될 수 있다. 컬럼 디코더(114)는 복수의 비트 라인들(BLs) 중에서 선택된 하나 이상의 비트 라인들에 연결된 감지 증폭기 및 쓰기 드라이버(113)를 게이팅 회로(130)와 전기적으로 연결할 수 있다. 컬럼 디코더(114)는 메모리 컨트롤러(1200)로부터 수신한 컬럼 어드레스(CA)에 기반하여 복수의 비트 라인들(BLs) 중에서 하나 이상의 비트 라인들을 선택할 수 있다.
제어 로직(120)은 PIM 블록(121)을 포함할 수 있다. PIM 블록(121)은 PIM 명령 셋이 존재하지 않는 경우 비활성화될 수 있다. 이 경우, 제어 로직(120)은 메모리 장치(100)가 제1 동작 모드로 동작하도록 제어할 수 있다.
제어 로직(120)은 PIM 블록(121)에 PIM 명령 셋이 존재하는 경우 메모리 장치(100)가 PIM 연산을 수행하기 위한 제2 동작 모드로 동작하도록 제어할 수 있다. 제1 동작 모드 및 제2 동작 모드에 대한 자세한 설명은 후술한다.
제어 로직(120)은 메모리 장치(100)의 구성 요소들의 동작들을 제어할 수 있다. 제어 로직(120)은 메모리 컨트롤러(1200)로부터 커맨드 및 어드레스(CMD, BA, RA, CA)를 수신할 수 있다. 제어 로직(120)은 제1 동작 모드에서 뱅크 어드레스(BA), 로우 어드레스(RA), 및 컬럼 어드레스(CA)가 가리키는 메모리 셀들에 대해 커맨드(CMD)가 요청한 동작을 수행하도록 메모리 장치(100)의 구성 요소들을 제어할 수 있다.
제어 로직(120)은 제2 동작 모드에서 메모리 컨트롤러(1200)로부터 수신한 컬럼 어드레스(CA)의 어드레스 비트들 중 적어도 일부와 무관한 새로운 컬럼 어드레스(이하에서, PIM 어드레스(CA')로 명명한다)를 생성할 수 있다. 제어 로직(120)은 제2 동작 모드에서 뱅크 어드레스(BA), 로우 어드레스(RA), 및 PIM 어드레스(CA')가 가리키는 메모리 셀들에 대해 커맨드(CMD)가 요청한 동작을 수행하도록 메모리 장치(100)의 구성 요소들을 제어할 수 있다.
게이팅 회로(130)는 제어 로직(120)의 제어에 응답하여 동작할 수 있다. 게이팅 회로(130)는 복수의 메모리 뱅크들(110) 중 뱅크 어드레스(BA)가 가리키는 메모리 뱅크를 버퍼 블록(140)과 연결되도록 할 수 있다.
게이팅 회로(130)는 메모리 장치(100)가 제1 동작 모드 중 메모리 셀들에 데이터 쓰기 동작을 수행하는 경우 메모리 컨트롤러(1200)로부터 버퍼 블록(140)이 수신한 데이터 신호(DQ)를 수신할 수 있다.
게이팅 회로(130)는 메모리 장치(100)가 제1 동작 모드 중 메모리 셀들의 데이터 읽기 동작을 수행하는 경우 커맨드 및 어드레스(CMD, BA, RA, CA)를 통해 액세스 되는 메모리 뱅크의 메모리 셀들에 저장된 데이터(DQ[CA])를 버퍼 블록(140)으로 전송할 수 있다.
게이팅 회로(130)는 메모리 장치(100)가 제2 동작 모드인 경우 커맨드 및 어드레스(CMD, BA, RA, CA')를 통해 액세스 되는 메모리 뱅크의 메모리 셀들에 저장된 데이터(DQ[CA'])를 제어 로직(120)으로 전송할 수 있다.
버퍼 블록(140)은 제어 로직(120)의 제어에 응답하여 동작할 수 있다. 제어 로직(120)은 제1 동작 모드에서 제어 신호(Control Signal)에 기반하여 버퍼 블록(140)이 메모리 컨트롤러(1200)와 데이터 신호(DQ)를 교환하도록 버퍼 블록(140)을 제어할 수 있다.
제어 로직(120)은 메모리 장치(100)가 제1 동작 모드 중 메모리 셀들의 데이터 읽기 동작을 수행하도록 제어하는 경우, 버퍼 블록(140)이 읽기 데이터를 메모리 컨트롤러(1200)로 출력하도록 버퍼 블록(140)을 제어할 수 있다.
도 2는 메모리 장치(200)에서 PIM 기능을 수행하는 제어 로직(220)의 세부적인 구성을 도시한 도면이다. 예시적으로, 도 2의 메모리 장치(200)에 포함된 복수의 메모리 뱅크들(210), 게이팅 회로(230), 및 버퍼 블록(240)은 각각 도 1의 메모리 장치(100)에 포함된 복수의 메모리 뱅크들(110), 게이팅 회로(130), 및 버퍼 블록(140)에 대응한다. 따라서 유사한 구성 요소들 및 이와 관련된 유사한 동작들에 대해서는 중복되는 설명은 생략한다.
제어 로직(220)은 PIM 컨트롤러(221), PIM 커맨드 레지스터(222), PIM 어드레스 생성기(223), PIM 레지스터 파일(224), 및 PIM 연산기(225)를 포함할 수 있다.
도 1 및 도 2를 참조하면, PIM 컨트롤러(221)는 표준에 의해 정해진 다양한 세팅 명령들 중 적어도 하나를 통해 메모리 컨트롤러(1200)로부터 PIM 명령 셋(PIM Instruction Set, 이하에서 PIMIS로 명명한다)을 수신할 수 있다.
PIM 컨트롤러(221)는 PIM 명령 셋(PIMIS)을 수신하여 PIM 커맨드 레지스터(222)에 저장할 수 있다. 제어 로직(120 및 220)은 PIM 명령 셋(PIMIS)이 PIM 커맨드 레지스터(222)에 존재하는지 여부에 따라 메모리 장치(100 및 200)가 제1 동작 모드 또는 제2 동작 모드로 동작하도록 결정할 수 있다.
PIM 컨트롤러(221)는 PIM 명령 셋(PIMIS)이 PIM 커맨드 레지스터(222)에 존재하지 않는 경우 비활성화될 수 있고(제어 로직(120 및 220)은 메모리 장치(100 및 200)가 제1 동작 모드로 동작하도록 결정할 수 있다), PIM 컨트롤러(221)는 PIM 명령 셋(PIMIS)이 PIM 커맨드 레지스터(222)에 존재하는 경우 활성화될 수 있다(제어 로직(120 및 220)은 메모리 장치(100 및 200)가 PIM 연산을 수행하기 위한 제2 동작 모드로 동작하도록 결정할 수 있다).
PIM 컨트롤러(221)는 메모리 컨트롤러(1200)로부터 커맨드 및 컬럼 어드레스(CMD, CA)를 수신할 수 있다. 커맨드(CMD)는 읽기 커맨드(RD), 쓰기 커맨드(WR), 활성화 커맨드(ACT), 및 프리차지 커맨드(PRE) 중 적어도 하나일 수 있다. 이하에서, PIM 컨트롤러(221)는 읽기 커맨드(RD)에 응답하여 동작할 수 있다.
PIM 컨트롤러(221)는 제1 동작 모드에서 비활성화될 수 있다. 메모리 장치(100 및 200)는 제1 동작 모드에서 제어 로직(120 및 220)이 수신한 읽기 커맨드(RD) 및 컬럼 어드레스(CA)에 기반하여 선택된 메모리 뱅크의 메모리 셀들의 데이터(DQ[CA])를 읽을 수 있다.
메모리 장치(100 및 200)는 제2 동작 모드에서 제어 로직(120 및 220)이 수신한 읽기 커맨드(RD) 및 컬럼 어드레스(CA)에 기반하여 선택된 메모리 뱅크의 메모리 셀들의 데이터(DQ[CA'])를 읽을 수 있다. 컬럼 어드레스(CA)와 데이터(DQ[CA'])가 저장된 선택된 메모리 뱅크의 메모리 셀들의 관계에 대한 자세한 설명은 후술한다.
data1은 PIM 연산 전의 데이터일 수 있고, 그리고 data2는 PIM 연산 후의 데이터일 수 있다. 또는, data1은 PIM 연산 후의 데이터일 수 있고, 그리고 data2는 PIM 연산 전의 데이터일 수 있다. 이하에서, data1은 PIM 연산 전의 데이터이고, 그리고 data2는 PIM 연산 후의 데이터인 것으로 설명한다.
PIM 컨트롤러(221)는 제2 동작 모드에서 PIM 연산을 수행할 수 있다. 제어 로직(120 및 220)은 제2 동작 모드에서 선택된 메모리 뱅크의 메모리 셀들의 데이터(DQ[CA']) 및 PIM 레지스터 파일(224)의 복수의 레지스터들의 데이터( data1)에 기반하여 PIM 연산기(225)가 PIM 연산을 수행하도록 할 수 있다. PIM 연산기(225)가 PIM 연산을 수행하는 구성에 대한 자세한 설명은 후술한다.
PIM 커맨드 레지스터(222)는 PIM 컨트롤러(221)가 수신한 PIM 명령 셋(PIMIS)을 저장할 수 있다. PIM 명령 셋(PIMIS)은 연산자, PIM 레지스터 파일(224)의 레지스터들, 및 버스트 길이(BURST LENGTH, 이하에서, BL)에 대한 정보를 포함할 수 있다. PIM 명령 셋(PIMIS)에 포함된 정보에 대한 자세한 설명은 후술한다.
PIM 어드레스 생성기(223)는 제어 로직(120 및 220)의 제어에 응답하여 동작할 수 있다. PIM 어드레스 생성기(223)는 제1 동작 모드에서 비활성화될 수 있다.
제어 로직(120 및 220)은 제2 동작 모드에서 PIM 커맨드를 실행할 수 있다. PIM 커맨드는 메모리 컨트롤러(1200)로부터 수신한 복수의 읽기 커맨드들(RD)을 포함할 수 있다. 하지만, PIM 커맨드는 복수의 읽기 커맨드들(RD)이 지시하는 동작 외에도 PIM 연산을 수행하고, PIM 연산의 결과(data2)를 PIM 레지스터 파일(224)의 복수의 레지스터들에 저장하도록 지시하는 커맨드를 포함할 수 있다.
이하에서, 제2 동작 모드에서 PIM 컨트롤러(221)는 제어 로직(120 및 220)으로부터 PIM 커맨드에 포함된 복수의 읽기 커맨드들(RD)을 수신할 수 있다. PIM 컨트롤러(221)는 제2 동작 모드에서 PIM 어드레스 생성기(223)로 복수의 읽기 커맨드들(RD) 및 컬럼 어드레스들(CA)을 전달할 수 있다.
PIM 어드레스 생성기(223)는 복수의 읽기 커맨드들(RD) 중 하나의 읽기 커맨드 및 복수의 컬럼 어드레스들(CA) 중 하나의 컬럼 어드레스를 수신할 때마다 하나의 PIM 어드레스를 생성할 수 있다.
예를 들어, PIM 어드레스 생성기(223)는 하나의 컬럼 어드레스의 컬럼 어드레스 비트들 중 적어도 일부와 무관하게 생성한 하나의 PIM 어드레스를 복수의 메모리 뱅크들(210)에 전송할 수 있다.
이렇게, PIM 어드레스 생성기(223)는 복수의 PIM 어드레스들(CA')을 생성하여 복수의 메모리 뱅크들(210)에 전송할 수 있다. PIM 어드레스 생성기(223)가 복수의 PIM 어드레스들(CA')을 생성하는 구성에 대한 자세한 설명은 후술한다.
PIM 레지스터 파일(224)은 복수의 레지스터들을 포함할 수 있다. 복수의 레지스터들은 복수의 데이터들(data1, data2)을 저장하도록 구성될 수 있다.
PIM 연산기(225)는 제어 로직(120 및 220)에 제어에 응답하여 동작할 수 있다. 제어 로직(120 및 220)은 제2 동작 모드에서, 복수의 PIM 어드레스들(CA')에 각각 해당하는 복수의 레지스터들의 데이터(data1) 및 복수의 PIM 어드레스들(CA')에 각각 해당하는 선택된 메모리 뱅크의 메모리 셀들의 데이터(DQ[CA'])를 PIM 연산기(225)에 전송할 수 있다.
PIM 연산기(225)는 제2 동작 모드에서, 복수의 PIM 어드레스들(CA')에 각각 해당하는 복수의 레지스터들의 데이터(data1) 및 복수의 PIM 어드레스들(CA')에 각각 해당하는 선택된 메모리 뱅크의 메모리 셀들의 데이터(DQ[CA'])에 기반하여 PIM 연산을 수행할 수 있다.
일 예시로써, PIM 연산은 MAC(Multiplication and Accumulation) 연산일 수 있다. PIM 연산을 수행하는 구성에 대한 자세한 설명은 후술한다.
도 3은 제어 로직(120 및 220)이 실행하는 커맨드를 결정하는 단계의 흐름도이다.
도 1 내지 도 3을 참조하면, S110 단계에서, PIM 컨트롤러(221)는 메모리 컨트롤러(1200)로부터 PIM 명령 셋(PIMIS)을 수신할 수 있다. S110 단계에서 PIM 컨트롤러(221)가 PIM 명령 셋(PIMIS)을 수신하지 않는 경우 제1 동작 모드에 해당하는 S150 단계 및 S160 단계가 진행될 수 있다.
S150 단계에서, 제어 로직(120 및 220)은 메모리 컨트롤러(1200)로부터 커맨드 및 어드레스(CMD, BA, RA, CA)를 수신할 수 있다.
S160 단계에서, 제어 로직(120 및 220)은 데이터 읽기 및/또는 데이터 쓰기 커맨드를 실행할 수 있다.
S110 단계에서, PIM 컨트롤러(221)가 PIM 명령 셋(PIMIS)을 수신하는 경우, PIM 연산을 수행하기 위한 제2 동작 모드에 해당하는 S120 단계 내지 S140 단계가 진행될 수 있다.
S120 단계에서, PIM 커맨드 레지스터(222)는 PIM 컨트롤러(221)가 수신한 PIM 명령 셋(PIMIS)을 저장할 수 있다.
S130 단계에서, 제어 로직(120 및 220)은, 메모리 컨트롤러(1200)로부터 복수의 읽기 커맨드들(RD) 및 컬럼 어드레스들(CA)을 수신할 수 있다. 또한, PIM 컨트롤러(221)도 마찬가지로, 메모리 컨트롤러(1200)로부터 복수의 읽기 커맨드들(RD) 및 컬럼 어드레스들(CA)을 수신할 수 있다.
S140 단계에서, 제어 로직(120 및 220)은 PIM 커맨드를 실행할 수 있다. PIM 커맨드는 메모리 뱅크의 메모리 셀들의 데이터(DQ[CA']) 및 PIM 레지스터 파일(224)의 복수의 레지스터들의 데이터(data1)를 읽고, PIM 연산을 하기 위한 커맨드일 수 있다. 또한, PIM 커맨드는 PIM 연산의 결과(data2)를 PIM 레지스터 파일(224)의 복수의 레지스터들에 쓰기 위한 커맨드일 수 있다.
도 4는 제1 동작 모드에서 메모리 컨트롤러(1200) 및 메모리 모듈(1300)의 외부 동작의 흐름을 보여주는 도면이다. 도 1 및 도 4를 참조하면, 메모리 컨트롤러(1200)는 메모리 모듈(1300)에 복수의 읽기 커맨드들(RD) 및 컬럼 어드레스들(CA)를 전송할 수 있다. S250a 및 S250b는 각각 도 3의 S150 단계에 대응할 수 있다. S260a 및 S260b는 각각 도 3의 S160 단계에 대응할 수 있다.
S250a에서, 메모리 모듈(1300)은 메모리 컨트롤러(1200)로부터 제1 읽기 커맨드(RD1) 및 제2 컬럼 어드레스(CA2)를 수신할 수 있다. S260a에서, 메모리 모듈(1300)은 제2 컬럼 어드레스(CA2)에 해당하는 메모리 셀들의 데이터를 읽을 수 있다.
S250b에서, 메모리 모듈(1300)은 메모리 컨트롤러(1200)로부터 제2 읽기 커맨드(RD2) 및 제1 컬럼 어드레스(CA1)를 수신할 수 있다. S260b에서, 메모리 모듈(1300)은 제1 컬럼 어드레스(CA1)에 해당하는 메모리 셀들의 데이터를 읽을 수 있다.
도 5a는 제2 동작 모드에서 메모리 컨트롤러(1200) 및 메모리 모듈(1300)의 제1 외부 동작의 흐름을 보여주는 도면이다. 제1 외부 동작은 메모리 모듈(1300)이 PIM 어드레스에 해당하는 메모리 셀들의 데이터를 읽고, PIM 연산을 수행하고, PIM 연산 결과를 저장하는 것을 의미할 수 있다.
S230a 및 S230b는 각각 도 3의 S130 단계에 대응할 수 있다. S241a, S241b, S242a, S242b, S243a, 및 S243b는 각각 도 3의 S140 단계의 일부일 수 있다.
도 1, 도 2, 및 도 5a를 참조하면, 메모리 컨트롤러(1200)는 메모리 모듈(1300)에 두 개의 읽기 커맨드들(RD1 및 RD2) 및 두 개의 컬럼 어드레스들(CA1 및 CA2)을 전송할 수 있다.
PIM 명령 셋(PIMIS)에 포함된 버스트 길이(BL)는 메모리 모듈(1300)이 생성하는 PIM 어드레스들의 개수를 결정할 수 있다. 예를 들어, 도 5a에서는 버스트 길이(BL)가 2이고, 메모리 모듈(1300)은 두 개의 PIM 어드레스들(CA1' 및 CA2')을 생성할 수 있다.
메모리 모듈(1300)은 메모리 컨트롤러가 전송한 재정렬된 두 개의 컬럼 어드레스들(CA2 다음으로 CA1)과 무관하게 정렬된 두 개의 PIM 어드레스들(CA1' 다음으로 CA2')을 생성할 수 있다. 버스트 길이(BL)와 PIM 어드레스들의 개수의 관계에 대한 자세한 설명은 후술한다.
S230a에서, 메모리 모듈(1300)은 메모리 컨트롤러(1200)로부터 제1 읽기 커맨드(RD1) 및 제2 컬럼 어드레스(CA2)를 수신할 수 있다. S241a에서, 메모리 모듈(1300)은 제1 PIM 어드레스(CA1')에 해당하는 메모리 셀들의 데이터(data)를 읽을 수 있다.
S242a에서, 메모리 모듈(1300)은 제1 PIM 어드레스(CA1')에 해당하는 메모리 셀들의 데이터(data)에 기반하여 데이터 연산을 수행할 수 있다.
S243a에서, 메모리 모듈(1300)은 데이터 연산의 결과(calculated data)를 PIM 레지스터 파일(224)에 저장할 수 있다. 이 경우, 메모리 모듈(1300)이 실행하는 PIM 커맨드는 데이터 연산의 결과(calculated data)를 PIM 레지스터 파일(224)에 쓰기 위한 커맨드일 수 있다.
S230b에서, 메모리 모듈(1300)은 메모리 컨트롤러(1200)로부터 제2 읽기 커맨드(RD2) 및 제1 컬럼 어드레스(CA1)를 수신할 수 있다. S241b에서, 메모리 모듈(1300)은 제2 PIM 어드레스(CA2')에 해당하는 메모리 셀들의 데이터(data)를 읽을 수 있다.
S242b에서, 메모리 모듈(1300)은 제2 PIM 어드레스(CA2')에 해당하는 메모리 셀들의 데이터(data)에 기반하여 데이터 연산을 수행할 수 있다.
S243b에서, 메모리 모듈(1300)은 데이터 연산의 결과(calculated data)를 PIM 레지스터 파일(224)에 저장할 수 있다.
도 5b는 제2 동작 모드에서 메모리 컨트롤러(1200) 및 메모리 모듈(1300)의 제2 외부 동작의 흐름을 보여주는 도면이다.
제2 외부 동작은 메모리 모듈(1300)이 PIM 어드레스에 해당하는 메모리 셀들의 데이터를 읽고, PIM 연산을 수행하고, PIM 연산 결과를 저장 및 출력하는 것일 수 있다.
S330a, S330b, S341a, S341b, S342a, 및 S342b는 각각 도 5a의 S230a, S230b, S241a, S241b, S242a, 및 S242b에 대응할 수 있다. 따라서, 유사한 구성에 대한 중복되는 설명은 생략한다.
도 1, 도 2, 및 도 5b를 참조하면, 메모리 모듈(1300)은 제1 읽기 커맨드(RD1) 및 제2 컬럼 어드레스(CA2)를 수신하는 경우, 데이터 연산을 수행하고, S343a에서, 데이터 연산의 결과(calculated data)를 PIM 레지스터 파일(224)에 저장함과 동시에 메모리 컨트롤러(1200)로 출력할 수 있다.
메모리 모듈(1300)은 제2 읽기 커맨드(RD2) 및 제1 컬럼 어드레스(CA1)를 수신하는 경우, 데이터 연산을 수행하고, S343b에서, 데이터 연산의 결과(calculated data)를 PIM 레지스터 파일(224)에 저장함과 동시에 메모리 컨트롤러(1200)로 출력할 수 있다.
도 6은 제2 동작 모드에서 메모리 장치(100 및 200)의 내부 동작 흐름을 보여주는 도면이다. 뱅크 어드레스(BA) 및 로우 어드레스(RA)의 구성에 대한 중복되는 설명은 생략한다.
도 1, 도 2, 및 도 6을 참조하면, PIM 어드레스 생성기(223)는 네 개의 읽기 커맨드들(RD1~RD4) 및 네 개의 컬럼 어드레스들(CA1~CA4)을 PIM 컨트롤러(221)로부터 수신할 수 있다.
이 때, PIM 컨트롤러(221)는 메모리 컨트롤러(1200)에 의해 재정렬된 순서대로 네 개의 컬럼 어드레스들(CA1~CA4)을 수신하여 PIM 어드레스 생성기(223)에 전송할 수 있다.
S431a에서, PIM 컨트롤러(221)는 제4 컬럼 어드레스(CA4)를 첫 번째로 수신하여 PIM 어드레스 생성기(223)에 전송할 수 있다. S431b에서, PIM 컨트롤러(221)는 제3 컬럼 어드레스(CA3)를 두 번째로 수신하여 PIM 어드레스 생성기(223)에 전송할 수 있다.
S431c에서, PIM 컨트롤러(221)는 제2 컬럼 어드레스(CA2)를 세 번째로 수신하여 PIM 어드레스 생성기(223)에 전송할 수 있다. S431d에서, PIM 컨트롤러(221)는 제1 컬럼 어드레스(CA1)를 네 번째로 수신하여 PIM 어드레스 생성기(223)에 전송할 수 있다.
제2 동작 모드에서 제어 로직(120 및 220)이 실행하는 PIM 커맨드는 복수의 읽기 커맨드들(RD)을 포함할 수 있다. PIM 커맨드는 PIM 레지스터 파일(224)의 복수의 레지스터들에 저장된 데이터(data1)에 대한 읽기 커맨드(미도시)를 포함할 수 있다. PIM 커맨드는 PIM 연산 결과(data2)를 PIM 레지스터 파일의 복수의 레지스터들에 쓰기 위한 커맨드(미도시)를 포함할 수 있다.
S432a에서, PIM 어드레스 생성기(223)는 PIM 컨트롤러(221)로부터 제1 읽기 커맨드(RD1) 및 제4 컬럼 어드레스(CA4)를 수신하는 경우 제4 컬럼 어드레스(CA4)의 어드레스 비트들 중 적어도 일부와 무관하게 생성한 제1 PIM 어드레스(CA1')를 복수의 메모리 뱅크들(210)에 전송할 수 있다.
S432b에서, PIM 어드레스 생성기(223)는 PIM 컨트롤러(221)로부터 제2 읽기 커맨드(RD2) 및 제3 컬럼 어드레스(CA3)를 수신하는 경우 제3 컬럼 어드레스(CA3)의 어드레스 비트들 중 적어도 일부와 무관하게 생성한 제2 PIM 어드레스(CA2')를 복수의 메모리 뱅크들(210)에 전송할 수 있다.
S432c에서, PIM 어드레스 생성기(223)는 PIM 컨트롤러(221)로부터 제3 읽기 커맨드(RD3) 및 제2 컬럼 어드레스(CA2)를 수신하는 경우 제2 컬럼 어드레스(CA2)의 어드레스 비트들 중 적어도 일부와 무관하게 생성한 제3 PIM 어드레스(CA3')를 복수의 메모리 뱅크들(210)에 전송할 수 있다.
S432d에서, PIM 어드레스 생성기(223)는 PIM 컨트롤러(221)로부터 제4 읽기 커맨드(RD4) 및 제1 컬럼 어드레스(CA1)를 수신하는 경우 제1 컬럼 어드레스(CA1)의 어드레스 비트들 중 적어도 일부와 무관하게 생성한 제4 PIM 어드레스(CA4')를 복수의 메모리 뱅크들(210)에 전송할 수 있다.
PIM 레지스터 파일(224)은 복수의 데이터들(data1 및 data2)을 저장하도록 구성된 복수의 레지스터들을 포함할 수 있다. 도 6에서는 복수의 레지스터들 중 PIM 연산 전의 데이터(data1) 포함하는 네 개의 레지스터들(GRFA[0], GRFA[1], GRFA[2], 및 GRFA[3])과 PIM 연산 후의 데이터(data2)를 포함하는 네 개의 레지스터들(GRFB[0], GRFB[1], GRFB[2], 및 GRFB[3])을 설명한다.
S441a에서, 제어 로직(120 및 220)은 제1 PIM 어드레스(CA1')에 해당하는 메모리 셀들의 데이터(data of CA1)를 PIM 연산기에 전송하도록 할 수 있다. S441a'에서, 제어 로직(120 및 220)은 제1 PIM 어드레스(CA1')에 해당하는 PIM 레지스터 파일(224)의 제1 레지스터 데이터(data of GRFA[0])를 PIM 연산기(225)에 전송하도록 할 수 있다.
S442a에서, PIM 연산기(225)는 제1 PIM 어드레스(CA1')에 해당하는 메모리 셀들의 데이터(data of CA1') 및 제1 PIM 어드레스(CA1')에 해당하는 PIM 레지스터 파일(224)의 제1 레지스터의 데이터(data of GRFA[0])에 기반하여 데이터 연산(Calculate data of CA1' and data of GRFA[0])을 수행할 수 있다.
S441b에서, 제어 로직(120 및 220)은 제2 PIM 어드레스(CA2')에 해당하는 메모리 셀들의 데이터(data of CA2')를 PIM 연산기에 전송하도록 할 수 있다. S441b'에서, 제어 로직(120 및 220)은 제2 PIM 어드레스(CA2')에 해당하는 PIM 레지스터 파일(224)의 제2 레지스터 데이터(data of GRFA[1])를 PIM 연산기(225)에 전송하도록 할 수 있다.
S442b에서, PIM 연산기(225)는 제2 PIM 어드레스(CA2')에 해당하는 메모리 뱅크의 메모리 셀들의 데이터(data of CA2') 및 제2 PIM 어드레스(CA2')에 해당하는 PIM 레지스터 파일(224)의 제2 레지스터의 데이터(data of GRFA[1])에 기반하여 데이터 연산(Calculate data of CA2' and data of GRFA[1])을 수행할 수 있다.
S441c에서, 제어 로직(120 및 220)은 제3 PIM 어드레스(CA3')에 해당하는 메모리 셀들의 데이터(data of CA3')를 PIM 연산기(225)에 전송하도록 할 수 있다. S441c'에서, 제어 로직(120 및 220)은 제3 PIM 어드레스(CA3')에 해당하는 PIM 레지스터 파일(224)의 제3 레지스터 데이터(data of GRFA[2])를 PIM 연산기(225)에 전송하도록 할 수 있다.
S442c에서, PIM 연산기(225)는 제3 PIM 어드레스(CA3')에 해당하는 메모리 뱅크의 메모리 셀들의 데이터(data of CA3') 및 제3 PIM 어드레스(CA3')에 해당하는 PIM 레지스터 파일(224)의 제3 레지스터의 데이터(data of GRFA[2])에 기반하여 데이터 연산(Calculate data of CA3' and data of GRFA[2])을 수행할 수 있다.
S441d에서, 제어 로직(120 및 220)은 제4 PIM 어드레스(CA4')에 해당하는 메모리 셀들의 데이터(data of CA4')를 PIM 연산기(225)에 전송하도록 할 수 있다. S441d'에서, 제어 로직(120 및 220)은 제4 PIM 어드레스(CA4')에 해당하는 PIM 레지스터 파일(224)의 제4 레지스터 데이터(data of GRFA[3])를 PIM 연산기(225)에 전송하도록 할 수 있다.
S442d에서, PIM 연산기(225)는 제4 PIM 어드레스(CA4')에 해당하는 메모리 뱅크의 메모리 셀들의 데이터(data of CA4') 및 제4 PIM 어드레스(CA4')에 해당하는 PIM 레지스터 파일(224)의 제4 레지스터의 데이터(data of GRFA[3])에 기반하여 데이터 연산(Calculate data of CA4' and data of GRFA[3])을 수행할 수 있다.
S443a에서, 제어 로직(120 및 220)은 데이터 연산의 제1 결과(data of GRFB[0])를 PIM 레지스터 파일(224)에 쓰도록 PIM 레지스터 파일(224)을 제어할 수 있다. 또는, 도시되지 않았지만, 제어 로직(120 및 220)은 데이터 연산의 제1 결과(data of GRFB[0])를 저장함과 동시에 버퍼 블록(140 및 240)을 통해 메모리 컨트롤러(1200)에 출력하도록 PIM 레지스터 파일(224)을 제어할 수 있다.
S443b에서, 제어 로직(120 및 220)은 데이터 연산의 제2 결과(data of GRFB[1])를 PIM 레지스터 파일(224)에 쓰도록 PIM 레지스터 파일(224)을 제어할 수 있다. 또는, 도시되지 않았지만, 제어 로직(120 및 220)은 데이터 연산의 제2 결과(data of GRFB[1])를 저장함과 동시에 버퍼 블록(140 및 240)에 출력하도록 PIM 레지스터 파일(224)을 제어할 수 있다.
S443c에서, 제어 로직(120 및 220)은 데이터 연산의 제3 결과(data of GRFB[2])를 PIM 레지스터 파일(224)에 쓰도록 PIM 레지스터 파일(224)을 제어할 수 있다. 또는, 도시되지 않았지만, 제어 로직(120 및 220)은 데이터 연산의 제3 결과(data of GRFB[2])를 저장함과 동시에 버퍼 블록(140 및 240)에 출력하도록 PIM 레지스터 파일(224)을 제어할 수 있다.
S443d에서, 제어 로직(120 및 220)은 데이터 연산의 제4 결과(data of GRFB[3])를 PIM 레지스터 파일(224)에 쓰도록 PIM 레지스터 파일(224)을 제어할 수 있다. 또는, 도시되지 않았지만, 제어 로직(120 및 220)은 데이터 연산의 제4 결과(data of GRFB[3])를 저장함과 동시에 버퍼 블록(140 및 240)에 출력하도록 PIM 레지스터 파일(224)을 제어할 수 있다.
도 7a는 제2 동작 모드에서 PIM 명령 셋(PIMIS)에 포함된 버스트 길이(BL)가 2인 경우 PIM 연산의 제1 실시 예에 관한 도면이다. PIM 명령 셋(PIMIS)은 연산자, PIM 레지스터 파일(224)의 레지스터들, 및 버스트 길이(BL)에 대한 정보를 포함할 수 있다.
S531a, S531b, S532a, 및 S532b는 도 6의 S431a, S431b, S432a, 및 S432b와 각각 유사하므로 중복되는 설명은 생략한다.
PIM 명령 셋(PIMIS)에 포함된 연산자는 더하기, 빼기, 곱하기, 및 나누기 중 적어도 하나일 수 있다. PIM 명령 셋(PIMIS)은 MAC(Multiplication and Accumulation) 연산을 포함할 수 있다. 이하, 본 명세서에서는 연산자가 더하기인 것으로 가정하여 설명한다.
PIM 명령 셋(PIMIS)에 포함된 버스트 길이(BL)는 복수의 PIM 어드레스들을 생성하기 위한 일부 컬럼 어드레스 비트들의 수를 결정할 수 있다. 예를 들어, 버스트 길이(BL)가 2k일 때, 일부 컬럼 어드레스 비트들은 k개일 수 있다. 이 경우, PIM 어드레스 생성기(223)는 2k개의 PIM 어드레스들을 생성할 수 있다.
일부 컬럼 어드레스 비트들 각각의 값은 PIM 컨트롤러(221)가 메모리 컨트롤러(1200)로부터 수신한 컬럼 어드레스 비트들과 무관하게 결정될 수 있다.
일부 컬럼 어드레스 비트들은 PIM 어드레스 생성기(223)가 PIM 컨트롤러(221)로부터 수신한 컬럼 어드레스의 컬럼 어드레스 비트들 중 일부일 수 있다. 메모리 컨트롤러(1200)가 전송한 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들은 고정된 값일 수 있다.
도 7a에서, PIM 어드레스 생성기(223)는 PIM 컨트롤러(221)로부터 두 개의 읽기 커맨드들(RD1 및 RD2) 및 두 개의 컬럼 어드레스들(CA1 및 CA2)을 수신할 수 있다.
도 7a에서, 하나의 컬럼 어드레스(CA1 또는 CA2)는 복수의 컬럼 어드레스 비트들(AB4, AB3, AB2, 및 AB1)을 포함할 수 있다. 하나의 컬럼 어드레스(CA1 또는 CA2)는 복수의 컬럼 어드레스 비트들에 의해 어드레스 값을 가질 수 있다.
예를 들어, PIM 명령 셋(PIMIS)에 포함된 버스트 길이(BL)가 2인 경우 PIM 어드레스를 생성하기 위한 일부 컬럼 어드레스 비트(AB1)는 0 또는 1의 값을 갖는 1비트일 수 있다. 이 경우, PIM 어드레스 생성기(223)는 두 개의 PIM 어드레스들(CA1' 및 CA2')을 생성할 수 있다.
PIM 어드레스 생성기(223)가 생성한 제1 PIM 어드레스(CA1')는 일부 컬럼 어드레스 비트(AB1)가 0의 값을 가질 수 있다. 나머지 컬럼 어드레스 비트들(AB4, AB3, 및 AB2)은 고정된 값일 수 있다. 따라서, 제1 PIM 어드레스(CA1')는 나머지 컬럼 어드레스 비트들(AB4, AB3, 및 AB2)과 무관하게 가장 낮은 어드레스일 수 있다
PIM 어드레스 생성기(223)가 생성한 제2 PIM 어드레스(CA2')는 일부 컬럼 어드레스 비트(AB1)가 1의 값을 가질 수 있다. 나머지 컬럼 어드레스 비트들(AB4, AB3, 및 AB2)은 고정된 값일 수 있다. 따라서, 제2 PIM 어드레스(CA2')는 나머지 컬럼 어드레스 비트들(AB4, AB3, 및 AB2)과 무관하게 제1 PIM 어드레스(CA1') 다음으로 낮은(예를 들어, 가장 높은) 어드레스일 수 있다.
S542a는 제1 읽기 커맨드(RD1)를 포함하는 PIM 커맨드에 의해 데이터 연산(PIM 연산)이 수행되는 계산식에 관한 것이다.
GRFB[0]는 데이터 연산의 제1 결과가 저장되는 제1 레지스터를 의미할 수 있다. BANK[CA1']은 제1 읽기 커맨드(RD1) 및 제1 PIM 어드레스(CA1')에 기반하여 읽은 데이터가 저장된 메모리 뱅크의 메모리 셀들을 의미할 수 있다. GRFA[0]는 제1 PIM 어드레스(CA1')에 기반하여 읽은 연산 전의 데이터가 저장된 PIM 레지스터 파일(224)의 제1 레지스터를 의미할 수 있다.
S542a는 메모리 셀들(BANK[CA1'])의 데이터 및 제1 레지스터(GRFA[0])의 데이터를 더한 값을 데이터 연산의 제1 결과로 PIM 레지스터 파일(224)의 제1 레지스터(GRFB[0])에 저장하는 것을 의미할 수 있다.
S542b는 제2 읽기 커맨드(RD2)를 포함하는 PIM 커맨드에 의해 데이터 연산(PIM 연산)이 수행되는 계산식에 관한 것이다.
GRFB[1]는 데이터 연산의 제2 결과가 저장되는 제2 레지스터를 의미할 수 있다. BANK[CA2']은 제2 읽기 커맨드(RD2) 및 제2 PIM 어드레스(CA2')에 기반하여 읽은 데이터가 저장된 메모리 뱅크의 메모리 셀들을 의미할 수 있다. GRFA[1]는 제2 PIM 어드레스(CA2')에 기반하여 읽은 연산 전의 데이터가 저장된 PIM 레지스터 파일(224)의 제2 레지스터를 의미할 수 있다.
S542b는 메모리 셀들(BANK[CA2'])의 데이터 및 제2 레지스터(GRFA[1])의 데이터를 더한 값을 데이터 연산의 제2 결과로 PIM 레지스터 파일(224)의 제2 레지스터(GRFB[1])에 저장하는 것을 의미할 수 있다.
도 7b는 제2 동작 모드에서 PIM 명령 셋(PIMIS)에 포함된 버스트 길이(BL)가 4인 경우 PIM 연산의 제2 실시 예에 관한 도면이다. S631a, S631b, S631c, S631d, S632a, S632b, S632c, 및 S632d는 각각 도 6의 S431a, S431b, S431c, S431d, S432a, S432b, S432c, 및 S432d와 각각 동일하므로 중복되는 설명은 생략한다.
도 7b에서, PIM 어드레스 생성기(223)는 PIM 컨트롤러(221)로부터 네 개의 읽기 커맨드들(RD1~RD4) 및 네 개의 컬럼 어드레스들(CA1~CA4)를 수신할 수 있다.
도 7b에서, 하나의 컬럼 어드레스(CA1~CA4 중 하나)는 복수의 컬럼 어드레스 비트들(AB5, AB4, AB3, AB2, 및 AB1)을 포함할 수 있다. 하나의 컬럼 어드레스(CA1~CA4 중 하나)는 복수의 컬럼 어드레스 비트들에 의해 어드레스 값을 가질 수 있다.
예를 들어, PIM 명령 셋(PIMIS)에 포함된 버스트 길이(BL)가 4인 경우 PIM 어드레스를 생성하기 위한 일부 컬럼 어드레스 비트들(AB2 및 AB1)은 00, 01, 10, 11 중 하나의 값을 갖는 2비트일 수 있다. 이 경우, PIM 어드레스 생성기(223)는 네 개의 PIM 어드레스들(CA1'~CA4')을 생성할 수 있다.
PIM 어드레스 생성기(223)가 생성한 제1 PIM 어드레스(CA1')는 일부 컬럼 어드레스 비트들(AB2 및 AB1)이 00의 값을 가질 수 있다. 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)은 고정된 값일 수 있다. 따라서, 제1 PIM 어드레스(CA1')는 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)과 무관하게 가장 낮은 어드레스일 수 있다.
PIM 어드레스 생성기(223)가 생성한 제2 PIM 어드레스(CA2')는 일부 컬럼 어드레스 비트들(AB2 및 AB1)이 01의 값을 가질 수 있다. 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)은 고정된 값일 수 있다. 따라서, 제2 PIM 어드레스(CA2')는 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)과 무관하게 제1 PIM 어드레스(CA1') 다음으로 낮은(예를 들어, 세 번째로 높은) 어드레스일 수 있다.
PIM 어드레스 생성기(223)가 생성한 제3 PIM 어드레스(CA3')는 일부 컬럼 어드레스 비트들(AB2 및 AB1)이 10의 값을 가질 수 있다. 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)은 고정된 값일 수 있다. 따라서, 제3 PIM 어드레스(CA3')는 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)과 무관하게 제2 PIM 어드레스(CA2') 다음으로 낮은(예를 들어, 두 번째로 높은) 어드레스일 수 있다.
PIM 어드레스 생성기(223)가 생성한 제4 PIM 어드레스(CA4')는 일부 컬럼 어드레스 비트들(AB2 및 AB1)이 11의 값을 가질 수 있다. 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)은 고정된 값일 수 있다. 따라서, 제4 PIM 어드레스(CA4')는 나머지 컬럼 어드레스 비트들(AB5, AB4, 및 AB3)과 무관하게 제3 PIM 어드레스(CA3') 다음으로 낮은(예를 들어, 가장 높은) 어드레스일 수 있다.
S642a는 제1 읽기 커맨드(RD1)를 포함하는 PIM 커맨드에 의해 데이터 연산(PIM 연산)이 수행되는 계산식에 관한 것이다.
GRFB[0]는 데이터 연산의 제1 결과가 저장되는 제1 레지스터를 의미할 수 있다. BANK[CA1']은 제1 읽기 커맨드(RD1) 및 제1 PIM 어드레스(CA1')에 기반하여 읽은 데이터가 저장된 메모리 뱅크의 메모리 셀들을 의미할 수 있다. GRFA[0]는 제1 PIM 어드레스(CA1')에 기반하여 읽은 연산 전의 데이터가 저장된 PIM 레지스터 파일(224)의 제1 레지스터를 의미할 수 있다.
S642a는 메모리 셀들(BANK[CA1'])의 데이터 및 제1 레지스터(GRFA[0])의 데이터를 더한 값을 데이터 연산의 제1 결과로 PIM 레지스터 파일(224)의 제1 레지스터(GRFB[0])에 저장하는 것을 의미할 수 있다.
S642b는 제2 읽기 커맨드(RD2)를 포함하는 PIM 커맨드에 의해 데이터 연산(PIM 연산)이 수행되는 계산식에 관한 것이다.
GRFB[1]는 데이터 연산의 제2 결과가 저장되는 제2 레지스터를 의미할 수 있다. BANK[CA2']은 제2 읽기 커맨드(RD2) 및 제2 PIM 어드레스(CA2')에 기반하여 읽은 데이터가 저장된 메모리 뱅크의 메모리 셀들을 의미할 수 있다. GRFA[1]는 제2 PIM 어드레스(CA2')에 기반하여 읽은 연산 전의 데이터가 저장된 PIM 레지스터 파일(224)의 제2 레지스터를 의미할 수 있다.
S642b는 메모리 셀들(BANK[CA2'])의 데이터 및 제2 레지스터(GRFA[1])의 데이터를 더한 값을 데이터 연산의 제2 결과로 PIM 레지스터 파일(224)의 제2 레지스터(GRFB[1])에 저장하는 것을 의미할 수 있다.
S642c는 제3 읽기 커맨드(RD3)를 포함하는 PIM 커맨드에 의해 데이터 연산(PIM 연산)이 수행되는 계산식에 관한 것이다.
GRFB[2]는 데이터 연산의 제3 결과가 저장되는 제3 레지스터를 의미할 수 있다. BANK[CA3']은 제3 읽기 커맨드(RD3) 및 제3 PIM 어드레스(CA3')에 기반하여 읽은 데이터가 저장된 메모리 뱅크의 메모리 셀들을 의미할 수 있다. GRFA[2]는 제3 PIM 어드레스(CA3')에 기반하여 읽은 연산 전의 데이터가 저장된 PIM 레지스터 파일(224)의 제3 레지스터를 의미할 수 있다.
S642c는 메모리 셀들(BANK[CA3'])의 데이터 및 제3 레지스터(GRFA[2])의 데이터를 더한 값을 데이터 연산의 제3 결과로 PIM 레지스터 파일(224)의 제3 레지스터(GRFB[2])에 저장하는 것을 의미할 수 있다.
S642d는 제4 읽기 커맨드(RD4)를 포함하는 PIM 커맨드에 의해 데이터 연산(PIM 연산)이 수행되는 계산식에 관한 것이다.
GRFB[3]는 데이터 연산의 제4 결과가 저장되는 제4 레지스터를 의미할 수 있다. BANK[CA4']은 제4 읽기 커맨드(RD4) 및 제4 PIM 어드레스(CA4')에 기반하여 읽은 데이터가 저장된 메모리 뱅크의 메모리 셀들을 의미할 수 있다. GRFA[3]는 제4 PIM 어드레스(CA4')에 기반하여 읽은 연산 전의 데이터가 저장된 PIM 레지스터 파일(224)의 제4 레지스터를 의미할 수 있다.
S642d는 메모리 셀들(BANK[CA4'])의 데이터 및 제4 레지스터(GRFA[3])의 데이터를 더한 값을 데이터 연산의 제4 결과로 PIM 레지스터 파일(224)의 제4 레지스터(GRFB[3])에 저장하는 것을 의미할 수 있다.
S642a 내지 S642d의 데이터 연산은 PIM 어드레스 생성기(223)가 PIM 컨트롤러(221)로부터 하나의 읽기 커맨드 및 하나의 컬럼 어드레스를 수신할 때마다 독립적으로 수행될 수 있다.
도 7a 및 도 7b에서는 복수의 컬럼 어드레스 비트들이 4비트 또는 5비트를 갖는 것으로 도시되어 있지만, 이에 제한되지 않고 컬럼 어드레스 비트들은 5비트 또는 6비트 이상의 비트들을 포함할 수 있다.
도 7a 및 도 7b에서는 PIM 어드레스 생성기(223)가 PIM 컨트롤러(221)로부터 읽기 커맨드 및 컬럼 어드레스를 각각 2개 또는 4개로 수신하는 구성이 도시되지만, 이에 제한되지 않고 PIM 어드레스 생성기(223)는 더 많은 읽기 커맨드들 및 컬럼 어드레스들을 PIM 컨트롤러(221)로부터 수신할 수 있다.
도 7a 및 도 7b에서는 버스트 길이(BL)가 2 또는 4인 구성이 도시되지만, 이에 제한되지 않고 버스트 길이(BL)는 4를 초과하는 값을 가질 수 있다. 이 경우, PIM 어드레스 생성기(223)가 PIM 컨트롤러(221)로부터 수신하는 복수의 컬럼 어드레스들 중 PIM 어드레스를 생성하기 위한 일부 컬럼 어드레스 비트들의 수가 변경될 수 있다.
도 8은 본 발명의 실시 예에 따른 메모리 장치(100 및 200)의 동작 방법의 흐름도이다. 도 1, 도 2, 및 도 8을 참조하면, S11 단계에서, 제어 로직(120 및 220)은 메모리 컨트롤러(1200)로부터 커맨드 및 어드레스(CMD, BA, RA, CA)를 수신할 수 있다.
S12 단계에서, 제어 로직(120 및 220)은 PIM 커맨드 레지스터(222)에 PIM 명령 셋(PIMIS)이 존재하는지 판단할 수 있다. PIM 명령 셋(PIMIS)은 앞서 언급한 바와 같이, 제어 로직(120 및 220)이 메모리 컨트롤러(1200)로부터 커맨드 및 어드레스(CMD, BA, RA, CA)를 수신하기 전에 사전에 메모리 컨트롤러(1200)로부터 수신한 것일 수 있다.
PIM 명령 셋(PIMIS)이 PIM 커맨드 레지스터(222)에 존재하지 않는다면, 제어 로직(120 및 220)은 메모리 장치(100 및 200)가 제1 동작 모드로 진입하도록 결정할 수 있다. 이 경우 S13 단계 및 S14 단계가 진행될 수 있다.
S13 단계에서, 로우 디코더(112) 및 컬럼 디코더(114)는 커맨드 및 어드레스(CMD, BA, RA, CA)를 디코딩할 수 있다. 그 다음, S14 단계에서, 감지 증폭기 및 쓰기 드라이버(113)는 메모리 뱅크의 메모리 셀들의 데이터를 읽거나, 메모리 뱅크의 메모리 셀들에 데이터를 쓸 수 있다.
PIM 명령 셋(PIMIS)이 PIM 커맨드 레지스터(222)에 존재한다면, 제어 로직(120 및 220)은 메모리 장치(100 및 200)가 제2 동작 모드로 진입하도록 결정할 수 있다. 메모리 장치(100 및 200)가 제2 동작 모드로 진입할 때, PIM 연산기(225)가 PIM 연산을 수행할 수 있다. 이 경우, S15 단계 내지 S20 단계가 진행될 수 있다.
S15 단계 및 S16 단계에서, PIM 명령 셋(PIMIS)에 포함된 버스트 길이(BL)의 값에 대응하여 PIM 어드레스들의 개수가 결정될 수 있다. 따라서, 버스트 길이(BL)의 값이 생성된 PIM 어드레스들의 개수보다 크다면 PIM 어드레스 생성기(223)는 PIM 컨트롤러(221)로부터 하나의 읽기 커맨드 및 하나의 컬럼 어드레스를 수신할 때마다 하나의 PIM 어드레스를 생성할 수 있다.
S17 단계에서, 컬럼 디코더(114)는 생성된 PIM 어드레스 및 읽기 커맨드를 디코딩할 수 있다. 컬럼 디코더(114)는 제어 로직(120 및 220)이 전송한 PIM 어드레스(CA')에 의해 복수의 비트 라인들(BLs) 중에서 하나 이상의 비트 라인들을 선택할 수 있다.
S18 단계에서, 메모리 장치(100 및 200)는 PIM 어드레스(CA')에 해당하는 메모리 뱅크의 메모리 셀들의 데이터를 읽을 수 있다. 메모리 장치(100 및 200)는 생성된 PIM 어드레스(CA')에 해당하는 PIM 레지스터 파일(224)의 레지스터의 데이터를 읽을 수 있다.
S19 단계에서, PIM 연산기(225)는 메모리 셀들의 데이터 및 레지스터의 데이터에 기반하여 PIM 연산을 수행할 수 있다. PIM 연산기(225)는 PIM 어드레스 생성기(223)가 하나의 PIM 어드레스를 생성할 때마다 메모리 셀들의 데이터 및 레지스터의 데이터에 기반하여 PIM 연산을 수행할 수 있다.
S20 단계에서, 제어 로직(120 및 220)은 PIM 연산의 결과를 PIM 레지스터 파일(224)의 레지스터에 저장하도록 할 수 있다. 이 경우, PIM 레지스터 파일(224)은 하나의 PIM 연산의 결과가 생성될 때마다 PIM 연산의 결과를 하나의 레지스터에 저장할 수 있다.
또는, 제어 로직(120 및 220)은 PIM 레지스터 파일(224)이 PIM 연산의 결과를 레지스터에 저장함과 동시에 PIM 연산의 결과를 메모리 컨트롤러(1200)로 출력하도록 PIM 레지스터 파일(224)을 제어할 수 있다. 이 경우, PIM 레지스터 파일(224)은 PIM 연산의 결과를 저장함과 동시에 PIM 연산의 결과를 버퍼 블록(140 및 240)을 통해 메모리 컨트롤러(1200)에 출력할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
1000: 전자 장치
1100: 호스트
1200: 메모리 컨트롤러
1300: 메모리 모듈
100, 200: 메모리 장치
110, 210: 복수의 메모리 뱅크들
111: 메모리 셀 어레이
112: 로우 디코더
113: 감지 증폭기 및 쓰기 드라이버
114: 컬럼 디코더
120, 220: 제어 로직
121: PIM(Processing In Memory) 블록
130, 230: 게이팅 회로
140, 240: 버퍼 블록
221: PIM 컨트롤러
222: PIM 커맨드 레지스터
223: PIM 어드레스 생성기
224: PIM 레지스터 파일
225: PIM 연산기

Claims (20)

  1. 복수의 메모리 뱅크들;
    상기 복수의 메모리 뱅크들 각각은 복수의 워드 라인들에 연결된 복수의 메모리 셀들을 포함하는 메모리 셀 어레이, 상기 메모리 셀 어레이와 상기 복수의 워드 라인들을 통해 연결되는 로우 디코더, 상기 메모리 셀 어레이와 복수의 비트 라인들을 통해 연결되는 감지 증폭기 및 쓰기 드라이버, 및 상기 감지 증폭기 및 쓰기 드라이버와 연결되는 컬럼 디코더를 포함하고,
    복수의 컬럼 어드레스 비트들 및 복수의 읽기 커맨드들을 수신하는 제어 로직을 포함하고,
    상기 제어 로직은:
    PIM 어드레스 생성기를 포함하고,
    제1 동작 모드에서, 상기 복수의 컬럼 어드레스 비트들을 메모리 뱅크로 전송하고, 그리고
    제2 동작 모드에서, 상기 PIM 어드레스 생성기가 상기 복수의 읽기 커맨드들 중 제1 읽기 커맨드를 수신하는 경우 상기 복수의 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제1 PIM 어드레스를, 상기 메모리 뱅크로 전송하는 메모리 장치.
  2. 제1 항에 있어서,
    상기 제어 로직은:
    복수의 데이터들을 저장하도록 구성되는 복수의 레지스터들을 포함하는 PIM 레지스터 파일; 그리고
    상기 PIM 레지스터 파일의 상기 복수의 레지스터들 중 상기 제1 PIM 어드레스에 해당하는 레지스터의 데이터 및 상기 제1 PIM 어드레스에 해당하는 메모리 셀들의 데이터에 기반하여 PIM 연산을 수행하는 PIM 연산기를 더 포함하는 메모리 장치.
  3. 제2 항에 있어서,
    상기 제어 로직은,
    연산자, 상기 PIM 레지스터 파일의 상기 복수의 레지스터들, 및 버스트 길이를 포함하는 PIM 명령 셋을 저장하도록 구성되는 PIM 커맨드 레지스터를 더 포함하는 메모리 장치.
  4. 제3 항에 있어서,
    상기 제어 로직은,
    상기 PIM 커맨드 레지스터가 상기 PIM 명령 셋을 저장하고 있는지 판단하고, 및 상기 PIM 커맨드 레지스터에 상기 PIM 명령 셋이 존재하는 경우, 상기 PIM 명령 셋에 응답하여 상기 제2 동작 모드로 진입함을 결정하는 메모리 장치.
  5. 제4 항에 있어서,
    상기 제어 로직은 상기 PIM 커맨드 레지스터에 상기 PIM 명령 셋이 존재하지 않는다고 판단한 것에 응답하여 상기 제1 동작 모드로 진입함을 결정하는 메모리 장치.
  6. 제3 항에 있어서,
    상기 제2 동작 모드에서, 상기 PIM 어드레스 생성기가 생성한 복수의 PIM어드레스들 각각은 상기 PIM 명령 셋에 포함된 상기 버스트 길이에 기반하는 메모리 장치.
  7. 제3 항에 있어서,
    상기 제2 동작 모드에서, 상기 PIM 어드레스 생성기가 생성한 복수의 PIM 어드레스들의 개수는 상기 PIM 명령 셋에 포함된 상기 버스트 길이에 기반하여 결정되는 메모리 장치.
  8. 제1 항에 있어서,
    상기 제어 로직은, 상기 제2 동작 모드에서, 상기 PIM 어드레스 생성기가 상기 복수의 읽기 커맨드들 중 제2 읽기 커맨드를 수신하는 경우 상기 복수의 컬럼 어드레스 비트들 중 상기 일부 컬럼 어드레스 비트들을 제외한 상기 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제2 PIM 어드레스를, 상기 메모리 뱅크로 전송하는 메모리 장치.
  9. 제8 항에 있어서,
    상기 제1 PIM 어드레스는 상기 나머지 컬럼 어드레스 비트들에 기반하여 생성되는 복수의 PIM 어드레스들 중 가장 낮은 어드레스이고, 그리고
    상기 제2 PIM 어드레스는 상기 제1 PIM 어드레스보다 높은 어드레스인 메모리 장치.
  10. 복수의 메모리 뱅크들을 포함하고, 상기 복수의 메모리 뱅크들 각각은 복수의 메모리 셀들을 포함하는 PIM 연산을 위한 메모리 장치의 동작 방법에 있어서:
    제어 로직이 메모리 컨트롤러로부터 복수의 컬럼 어드레스 비트들 및 복수의 읽기 커맨드들을 수신하는 단계;
    상기 제어 로직은 제1 동작 모드에서, 상기 복수의 컬럼 어드레스 비트들을 메모리 뱅크로 전송하는 단계; 그리고
    상기 제어 로직은 제2 동작 모드에서, PIM 어드레스 생성기가 상기 복수의 읽기 커맨드들 중 제1 읽기 커맨드를 수신하는 경우 상기 복수의 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제1 PIM 어드레스를, 상기 메모리 뱅크로 전송하는 단계를 포함하는 방법.
  11. 제10 항에 있어서,
    PIM 연산기가 상기 제1 PIM 어드레스에 해당하는 PIM 레지스터 파일의 레지스터의 데이터 및 상기 제1 PIM 어드레스에 해당하는 메모리 셀들의 데이터에 기반하여 상기 PIM 연산을 수행하는 단계를 더 포함하는 방법.
  12. 제11 항에 있어서,
    상기 제어 로직이 상기 메모리 컨트롤러로부터 상기 복수의 컬럼 어드레스 비트들 및 상기 복수의 읽기 커맨드들을 수신하는 단계 이전에,
    상기 제어 로직에 포함된 PIM 커맨드 레지스터가 상기 메모리 컨트롤러로부터 연산자, 상기 PIM 레지스터 파일의 복수의 레지스터들, 및 버스트 길이를 포함하는 PIM 명령 셋을 수신하여 저장하는 단계를 더 포함하는 방법.
  13. 제12 항에 있어서,
    상기 PIM 커맨드 레지스터에 상기 PIM 명령 셋이 저장되어 있는 경우, 상기 제어 로직은 상기 PIM 명령 셋에 응답하여 상기 제2 동작 모드로 진입함을 결정하는 단계를 더 포함하는 방법.
  14. 제13 항에 있어서,
    상기 제어 로직은 상기 PIM 커맨드 레지스터에 상기 PIM 명령 셋이 존재하지 않는다고 판단한 것에 응답하여 상기 제1 동작 모드로 진입함을 결정하는 단계를 더 포함하는 방법.
  15. 제12 항에 있어서,
    상기 제2 동작 모드에서, 상기 제어 로직은 상기 PIM 명령 셋에 포함된 상기 버스트 길이에 기반하여 상기 PIM 어드레스 생성기가 복수의 PIM 어드레스들을 생성하도록 하는 방법.
  16. 제12 항에 있어서,
    상기 제2 동작 모드에서, 상기 제어 로직은 상기 PIM 명령 셋에 포함된 상기 버스트 길이에 기반하여 상기 PIM 어드레스 생성기가 생성하는 복수의 PIM 어드레스들의 개수를 결정하는 방법.
  17. 제10 항에 있어서,
    상기 제어 로직은 상기 제2 동작 모드에서, 상기 PIM 어드레스 생성기가 상기 복수의 읽기 커맨드들 중 제2 읽기 커맨드를 수신하는 경우 상기 복수의 컬럼 어드레스 비트들 중 상기 일부 컬럼 어드레스 비트들을 제외한 상기 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제2 PIM 어드레스를, 상기 메모리 뱅크로 전송하는 단계를 더 포함하는 방법.
  18. 제17 항에 있어서,
    상기 제1 PIM 어드레스는 상기 나머지 컬럼 어드레스 비트들에 기반하여 생성되는 복수의 PIM 어드레스들 중 가장 낮은 어드레스이고, 그리고
    상기 제2 PIM 어드레스는 상기 제1 PIM 어드레스보다 높은 어드레스인 방법.
  19. 복수의 메모리 장치들을 포함하고,
    상기 복수의 메모리 장치들은 외부의 호스트로부터 메모리 컨트롤러를 통해 커맨드 및 어드레스를 수신하고,
    상기 복수의 메모리 장치들의 각각은:
    복수의 메모리 뱅크들;
    상기 복수의 메모리 뱅크들 각각은 복수의 워드 라인들에 연결된 복수의 메모리 셀들을 포함하는 메모리 셀 어레이, 상기 메모리 셀 어레이와 상기 복수의 워드 라인들을 통해 연결되는 로우 디코더, 상기 메모리 셀 어레이와 복수의 비트 라인들을 통해 연결되는 감지 증폭기 및 쓰기 드라이버, 및 상기 감지 증폭기 및 쓰기 드라이버와 연결되는 컬럼 디코더를 포함하고,
    복수의 컬럼 어드레스 비트들 및 복수의 읽기 커맨드들을 수신하는 제어 로직을 포함하고,
    상기 제어 로직은:
    PIM 어드레스 생성기를 포함하고,
    제1 동작 모드에서, 상기 복수의 컬럼 어드레스 비트들을 메모리 뱅크로 전송하고, 그리고
    제2 동작 모드에서, 상기 PIM 어드레스 생성기가 상기 복수의 읽기 커맨드들 중 제1 읽기 커맨드를 수신하는 경우 상기 복수의 컬럼 어드레스 비트들 중 일부 컬럼 어드레스 비트들을 제외한 나머지 컬럼 어드레스 비트들에 기반하여 생성한 제1 PIM 어드레스를, 상기 메모리 뱅크로 전송하는 메모리 모듈.
  20. 제19 항에 있어서,
    상기 제어 로직은,
    연산자, PIM 레지스터 파일의 복수의 레지스터들, 및 버스트 길이를 포함하는 PIM 명령 셋을 저장하도록 구성되는 PIM 커맨드 레지스터를 더 포함하되,
    상기 제어 로직은 상기 PIM 커맨드 레지스터에 상기 PIM 명령 셋이 저장되어 있는지에 따라 메모리 장치가 상기 제1 동작 모드 또는 상기 제2 동작 모드 중 하나의 동작 모드로 진입하도록 결정하는 메모리 모듈.
KR1020220066650A 2022-01-13 2022-05-31 인메모리 연산을 위한 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법 KR20230109533A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US18/070,741 US20230223065A1 (en) 2022-01-13 2022-11-29 Memory device, memory module, and operating method of memory device for processing in memory
CN202310012218.8A CN116434796A (zh) 2022-01-13 2023-01-05 存储器装置、存储器模块和存储器装置的操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220004964 2022-01-13
KR1020220004964 2022-01-13

Publications (1)

Publication Number Publication Date
KR20230109533A true KR20230109533A (ko) 2023-07-20

Family

ID=87426506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220066650A KR20230109533A (ko) 2022-01-13 2022-05-31 인메모리 연산을 위한 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법

Country Status (1)

Country Link
KR (1) KR20230109533A (ko)

Similar Documents

Publication Publication Date Title
US20130329491A1 (en) Hybrid Memory Module
US8060705B2 (en) Method and apparatus for using a variable page length in a memory
CN110910928A (zh) 存储器模块
TWI700585B (zh) 半導體裝置及包含該半導體裝置的記憶體系統
US7782703B2 (en) Semiconductor memory having a bank with sub-banks
KR102420897B1 (ko) 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
CN107239367B (zh) 非易失性双列直插式存储器模块及其操作方法
KR20220031793A (ko) 메모리 장치, 그것을 포함하는 메모리 시스템, 그것을 제어하는 제어기 및 그것의 동작 방법
US11450396B2 (en) Semiconductor memory devices and methods of operating semiconductor memory devices
US11869628B2 (en) Apparatuses and methods to perform low latency access of a memory
KR20160075070A (ko) 반도체 메모리 장치
US10846220B2 (en) Memory system and operation method thereof
KR20170026746A (ko) 메모리 모듈의 동작 방법, 및 메모리 모듈을 제어하는 프로세서의 동작 방법, 및 사용자 시스템
US10818328B2 (en) Nonvolatile memory device, operation method of the nonvolatile memory device, and operation method of memory controller controlling the nonvolatile memory device
US11556440B2 (en) Memory module, memory system including the same and operation method thereof
US20120159044A1 (en) Non-volatile memory system with block protection function and block status control method
US9489147B2 (en) Semiconductor device, memory device, and system including the same
KR20230109533A (ko) 인메모리 연산을 위한 메모리 장치, 메모리 모듈, 및 메모리 장치의 동작 방법
US20140181456A1 (en) Memory, memory controller, memory system including the memory and the memory controller, and operating method of the memory system
JP2019045910A (ja) 半導体記憶装置
US20230223065A1 (en) Memory device, memory module, and operating method of memory device for processing in memory
KR102475547B1 (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
US20240160524A1 (en) Apparatuses and methods for single-pass access of ecc information, metadata information or combinations thereof
KR102106234B1 (ko) 휘발성 메모리 장치 및 휘발성 메모리 장치에서의 효율적인 벌크 데이터 이동과 백업 동작을 위한 방법
KR20220091794A (ko) 반도체 장치 및 이를 포함하는 전자 장치