KR20210092460A - 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치 - Google Patents
복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치 Download PDFInfo
- Publication number
- KR20210092460A KR20210092460A KR1020200005882A KR20200005882A KR20210092460A KR 20210092460 A KR20210092460 A KR 20210092460A KR 1020200005882 A KR1020200005882 A KR 1020200005882A KR 20200005882 A KR20200005882 A KR 20200005882A KR 20210092460 A KR20210092460 A KR 20210092460A
- Authority
- KR
- South Korea
- Prior art keywords
- address
- memory
- physical
- bank
- bits
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Dram (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
본 발명의 실시 예에 따른 메모리 컨트롤러는 채널을 공유하는 제 1 및 제 2 메모리 다이들을 포함하는 메모리 장치에 관한 메모리 요청을 저장하도록 구성되는 메모리 요청 큐; 메모리 요청의 물리 어드레스의 비트에 기초하여 제 1 및 제 2 메모리 다이들에 대한 제 1 및 제 2 어드레스 맵핑 테이블들 중 하나를 선택하고, 그리고 선택된 어드레스 맵핑 테이블에 기초하여 물리 어드레스를 메모리 어드레스로 변환하도록 구성되는 어드레스 변환기; 및 메모리 어드레스를 채널을 통해 메모리 장치로 전송하는 물리 계층을 포함한다.
Description
본 발명은 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치에 관한 것이다.
메모리 장치의 집적도를 높이기 위해, 다수의 반도체 다이들이 적층될 수 있다. 3차원 구조를 갖는 메모리 장치는 상대적으로 더 많은 데이터를 고속으로 처리할 수 있다. 3차원 구조를 형성하기 위해, 관통 실리콘 전극(Trough Silicon Via; TSV)이 다수의 반도체 다이들을 적층하는데 사용될 수 있다. 최근 데이터 처리 속도가 증가함에도 불구하고 프로세서와 메모리가 분리됨에 따라, 프로세서와 메모리 사이에서 전송되는 데이터의 레이턴시(latency)가 문제되고 있다. 이를 해결하기 위해, 프로세서와 메모리를 통합(integrate)하는 PIM(Processing In Memory)이 주목받고 있다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치를 제공할 수 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 채널을 공유하는 제 1 및 제 2 메모리 다이들을 포함하는 메모리 장치에 관한 메모리 요청을 저장하도록 구성되는 메모리 요청 큐; 메모리 요청의 물리 어드레스의 비트에 기초하여 제 1 및 제 2 메모리 다이들에 대한 제 1 및 제 2 어드레스 맵핑 테이블들 중 하나를 선택하고, 그리고 선택된 어드레스 맵핑 테이블에 기초하여 물리 어드레스를 메모리 어드레스로 변환하도록 구성되는 어드레스 변환기; 및 메모리 어드레스를 채널을 통해 메모리 장치로 전송하는 물리 계층을 포함한다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 물리 어드레스를 메모리 어드레스로 변환하기 위한 복수의 어드레스 맵핑 테이블들을 동시에 지원할 수 있다. 메모리 컨트롤러는 PIM 다이의 PE를 실행하는지 여부에 따라 복수의 어드레스 맵핑 테이블들을 동적으로 선택할 수 있고 PE의 실행에 알맞게 데이터를 최적으로 배치할 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 장치를 예시적으로 도시한다. 도 2는 본 발명의 다른 실시 예에 따른 전자 장치를 예시적으로 도시한다. 도 3은 도 1 및 도 2의 시스템 온 칩의 메모리 컨트롤러의 블록도를 예시적으로 도시한다. 도 4는 도 3의 어드레스 변환기의 블록도를 예시적으로 도시한다. 도 5는 도 1 및 도 2의 시스템 온 칩의 블록도를 예시적으로 도시한다. 도 6은 도 1 및 도 2의 메모리 장치를 좀 더 구체적으로 도시한다. 도 7은 도 1 및 도 2의 메모리 장치를 좀 더 구체적으로 도시한다. 도 8은 도 5의 메모리 컨트롤러에 의해 물리 어드레스가 메모리 어드레스로 변환되는 예시를 도시한다. 도 9는 도 6의 뱅크 그룹의 블록도를 예시적으로 도시한다. 도 10은 도 6의 PIM 다이의 블록도를 예시적으로 도시한다. 도 11 및 도 12는 어드레스 맵핑 테이블들에 따라 PIM 다이 내 데이터가 배치되는 예시들을 도시한다. 도 13은 도 12의 데이터 배치에 따라 PE들에 의해 실행되는 연산의 예시를 도시한다. 도 14는 도 5의 프로세서가 메모리 컨트롤러를 접근하고 메모리 컨트롤러가 메모리 장치를 접근하는 예시를 도시한다. 도 15는 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 도시한다.
도 1은 본 발명의 실시 예에 따른 전자 장치를 예시적으로 도시한다. 전자 장치(100a)는 시스템 온 칩(SoC; 1000), 메모리 장치(2000), 및 인터포저(3000)를 포함할 수 있다. 전자 장치(100a)는 컴퓨팅 시스템 또는 전자 시스템으로도 지칭될 수 있다.
시스템 온 칩(1000)은 메모리 장치(2000)를 이용하여 전자 장치(100a)가 지원하는 어플리케이션들을 실행할 수 있다. 시스템 온 칩(1000)은 호스트, 어플리케이션 프로세서(AP) 등으로도 지칭될 수 있다. 시스템 온 칩(1000)은 메모리 장치(2000)를 제어하고 메모리 장치(2000)와 데이터 입출력을 수행하는 메모리 컨트롤러(1100)를 포함할 수 있다. 예를 들어, 메모리 컨트롤러(1100)는 DMA(Direct Memory Access) 방식으로 메모리 장치(2000)로 접근할 수 있다. 메모리 컨트롤러(1100)는 인터포저(3000)를 통해 메모리 장치(2000)의 물리 계층(PHY; 2930)과 전기적으로 연결되는 PHY(1130)를 포함할 수 있다.
메모리 장치(2000)는 PIM(Processing In Memory/Processor In Memory) 다이들(2100~2800) 및 버퍼 다이(2900)를 포함할 수 있다. PIM 다이들(2100~2800) 각각은 메모리 다이, 코어 다이, FIM(Function In Memory) 다이, 슬레이브 다이 등으로도 지칭될 수 있고 버퍼 다이(2900)는 인터페이스 다이, 로직 다이, 마스터 다이 등으로도 지칭될 수 있다. 다이는 칩으로도 지칭될 수 있다. PIM 다이(2100)는 버퍼 다이(2900) 상에 그리고 PIM 다이(2200)는 PIM 다이(2100) 상에 적층될 수 있다. 메모리 장치(2000)는 다수의 다이들(2100~2900)이 적층되는 3차원 메모리 구조를 가질 수 있다. 다이들(2100~2900)을 적층시키기 위해, 메모리 장치(2000)는 다이들(2100~2900)을 관통하는 관통 전극들(TSV)과 관통 전극들(TSV)을 전기적으로 연결하는 마이크로 범프들(BP)을 포함할 수 있다. 관통 전극들(TSV)과 마이크로 범프들(BP)은 메모리 장치(2000) 내 다이들(2100~2900) 간의 전기적 그리고 물리적 경로들을 제공할 수 있다. 여기서, 관통 전극들(TSV)의 개수와 마이크로 범프들(BP)의 개수는 도 1에서 도시된 것으로 한정되지 않는다.
메모리 장치(2000)는 PIM 또는 FIM에 관한 것으로, 데이터를 읽고 쓰는 것에 더해 데이터에 대한 프로세싱 연산을 더 실행할 수 있다. 메모리 장치(2000)는 동일한 다이(die)에 통합된(integrated) RAM(Random Access Memory)과 PE(Processing Element)를 포함하는 계산적(computational) 메모리 장치에 해당할 수 있다. 메모리 장치(2000)의 PIM 다이들(2100~2800) 각각은 데이터를 읽고 쓰는데 사용되고 다수의 메모리 셀들을 포함하는 메모리 셀 어레이(MCA) 그리고 데이터에 대한 프로세싱 연산을 실행하는 PE(Processing Element)를 포함할 수 있다. 예를 들어, PE는 프로세서 또는 프로세싱 회로로도 지칭될 수 있다.
스택 식별자(SID0)는 PIM 다이들(2100~2400)로 할당될 수 있고 스택 식별자(SID1)는 PIM 다이들(2500~2800)로 할당될 수 있다. 스택 식별자(SID0/SID1)는 버퍼 다이(2900) 상에 적층된 다수의 PIM 다이들(2100~2800)을 식별 혹은 구별하는데 사용될 수 있다. 예를 들어, 메모리 컨트롤러(1100)는 스택 식별자(SID0/SID1)를 이용하여 PIM 다이들(2100~2400) 혹은 PIM 다이들(2500~2800)을 접근할 수 있다. 여기서, PIM 다이들(2100~2800)의 개수 및 스택 식별자(SID0/SID1) 당 PIM 다이들(2100~2400/2500~2800)의 개수는 각각 도 1에서 도시된 것으로 한정되지 않는다.
버퍼 다이(2900)는 메모리 컨트롤러(1100)와 PIM 다이들(2100~2800)에 대한 인터페이스 회로로서 동작할 수 있다. 버퍼 다이(2900)는 메모리 컨트롤러(1100)로부터 전송되는 명령, 데이터, 신호들 등을 인터포저(3000)를 통해 수신하고 그리고 수신된 명령, 데이터, 신호들 등을 관통 전극들(TSV)과 마이크로 범프들(BP)을 통해 PIM 다이들(2100~2800)로 전송할 수 있다. 버퍼 다이(2900)는 PIM 다이들(2100~2800)로부터 출력되는 데이터를 관통 전극들(TSV)과 마이크로 범프들(BP)을 통해 수신하고 그리고 수신된 데이터를 인터포저(3000)를 통해 메모리 컨트롤러(1100)로 전송할 수 있다. 버퍼 다이(2900)는 상술한 신호들을 수신하고 증폭시키는 PHY(2930), 버퍼링 회로들, 혹은 인터페이스 회로들을 포함할 수 있다.
실시 예에 있어서, 메모리 장치(2000)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory)과 같은 범용 DRAM 장치, LPDDR(low power double data rate) SDRAM과 같은 모바일용 DRAM 장치, GDDR(Graphics Double Data Rate) SGRAM(Synchronous Graphics Random Access Memory)과 같은 그래픽용 DRAM 장치, 또는 고용량과 고대역폭을 제공하는 Wide I/O, HBM(High Bandwidth Memory), HBM2, HBM3, HMC(Hybrid Memory Cube) 등과 같은 DRAM 장치일 수 있다.
인터포저(3000)는 시스템 온 칩(1000)과 메모리 장치(2000)를 연결할 수 있다. 인터포저(3000)는 시스템 온 칩(1000)의 PHY(1130)와 메모리 장치(2000)의 PHY(2930)와 사이를 연결하고 전기적 연결을 위한 도전성 물질들을 이용하여 형성되는 물리적 경로들을 제공할 수 있다. 인터포저(3000) 대신에 기판 혹은 PCB(Printed Circuit Board)가 사용될 수도 있다.
도 2는 본 발명의 다른 실시 예에 따른 전자 장치를 예시적으로 도시한다. 전자 장치(100b)는 시스템 온 칩(1000)과 메모리 장치(2000)를 포함할 수 있다. 전자 장치(100a)에서 시스템 온 칩(1000)과 메모리 장치(2000)는 인터포저(3000)를 통해 서로 연결되었으나, 전자 장치(100b)에서 메모리 장치(2000)는 시스템 온 칩(1000) 상에 적층될 수 있다. 시스템 온 칩(1000)은 메모리 장치(2000)로의 전기적 연결들을 구현하는데 사용되는 관통 전극들(TSV)을 더 포함할 수 있고 PHY들(1130, 2930)은 마이크로 범프들(BP)을 통해 서로 전기적으로 연결될 수 있다.
도 3은 도 1 및 도 2의 시스템 온 칩의 메모리 컨트롤러의 블록도를 예시적으로 도시한다. 메모리 컨트롤러(1100)는 메모리 요청 큐(1110), 어드레스 변환기(1120), 및 PHY(1130)를 포함할 수 있다. 예를 들어, 상술한 구성 요소들(1110~1130)은 하드웨어 방식으로 구현될 수 있다.
메모리 요청 큐(1110)는 시스템 온 칩(1000) 내부에서 발생되는 메모리 요청을 수신하고 저장할 수 있다. 메모리 장치(2000)에 관한 메모리 요청은 메모리 장치(2000)의 동작(예를 들어, 읽기, 쓰기, 리프레쉬, 프로세싱 등)을 요청할 수 있고 그리고 메모리 장치(2000)에 대한 물리 어드레스를 포함할 수 있다. 물리 어드레스는 메모리 장치(2000)를 접근하는데 사용될 수 있으며 가상 어드레스와 달리 메모리 장치(2000)의 용량에 따라 한정적일 수 있다. 시스템 온 칩(1000)에서 메모리 요청이 발생하는 속도는 메모리 장치(2000)에 의해 메모리 요청이 처리되는 속도보다 빠를 수 있다. 메모리 요청 큐(1110)는 다수의 메모리 요청들을 저장할 수 있다.
어드레스 변환기(1120)는 메모리 요청 큐(1110)에 저장된 메모리 요청의 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다. 메모리 어드레스(MA)도 메모리 장치(2000)를 접근하는데 사용될 수 있고 메모리 장치(2000)의 특정 영역(예를 들어, 특정 다이, 특정 다이 내 레지스터 혹은 메모리 셀들, 등)을 나타낼 수 있다. 어드레스 변환기(1120)는 복수의 어드레스 맵핑 테이블들(AMT1, AMT2)에 기초하여 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다.
예를 들어, 어드레스 변환기(1120)는 메모리 어드레스(MA)의 스택 식별자(SID)에 대응하는 물리 어드레스(PA)의 비트의 논리 값(0 또는 1)에 기초하여 복수의 어드레스 맵핑 테이블들(AMT1, AMT2) 중 하나를 선택하고 그리고 선택된 어드레스 맵핑 테이블에 기초하여 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다. 도 3에서 어드레스 맵핑 테이블들(AMT1, AMT2)이 2개인 것으로 도시되었고, 이에 따라 복수의 어드레스 맵핑 테이블들(AMT1, AMT2)을 선택하는데 사용되는 비트 수는 하나인 것으로 설명되었다. 그러나, 어드레스 맵핑 테이블들(AMT1, AMT2)의 개수는 둘 이상일 수 있고 이에 따라 복수의 어드레스 맵핑 테이블들(AMT1, AMT2)을 선택하는데 사용되는 비트 수도 하나 이상일 수 있다. 다른 예를 들어, 물리 어드레스(PA)의 최상위 비트(MSB)가 복수의 어드레스 맵핑 테이블들(AMT1, AMT2)을 선택하는데 사용될 수도 있다.
어드레스 변환기(1120)가 메모리 어드레스(MA)의 스택 식별자(SID)에 대응하는 물리 어드레스(PA)의 비트의 제 1 논리 값(혹은 제 2 논리 값)을 확인하고 어드레스 맵핑 테이블(AMT1)을 선택하는 것으로 가정한다. 어드레스 변환기(1120)는 어드레스 맵핑 테이블(AMT1)에 기초하여 물리 어드레스(PA)의 비트들을 필드들(F1~F6)로 나누거나 구분할 수 있다. 필드(F1)의 비트는 필드(F6)의 비트들 보다 상위 비트에 해당할 수 있다. 예를 들어, 필드(F1)의 비트는 물리 어드레스(PA)의 MSB일 수 있다. 어드레스 맵핑 테이블(AMT1)은 필드(F1)의 비트를 스택 식별자(SID)로, 필드(F2)의 비트들을 로우 어드레스(Row)로, 필드(F3)의 비트들을 컬럼 어드레스(Column)로, 필드들(F4, F5)의 비트들을 뱅크 어드레스(BA0~BA3)로, 그리고 필드들(F1~F5)보다 하위인 필드(F6)의 비트들을 캐시 라인(CL)으로 맵핑할 수 있다. 어드레스 변환기(1120)는 어드레스 맵핑 테이블(AMT1)에 기초하여 필드(F1)의 비트를 스택 식별자(SID)로, 필드(F2)의 비트들을 로우 어드레스(Row)로, 필드(F3)의 비트들을 컬럼 어드레스(Column)로, 필드들(F4, F5)의 비트들을 뱅크 어드레스(BA0~BA3)로 변환할 수 있다. 메모리 어드레스(MA)는 스택 식별자(SID), 뱅크 어드레스(BA0~BA3), 로우 어드레스(Row), 및 컬럼 어드레스(Column)를 포함할 수 있다. 스택 식별자(SID)는 도 1 및 도 2에서 전술한 PIM 다이들(2100~2800)을 식별할 수 있다. 뱅크 어드레스(BA0~BA3)는 PIM 다이들(2100~2800) 각각의 메모리 셀 어레이(MCA)를 구성하는 뱅크들을 식별할 수 있다. 로우 어드레스(Row)와 컬럼 어드레스(Column)는 뱅크 내 메모리 셀들을 식별할 수 있다. 캐시 라인(CL)은 시스템 온 칩(1000) 내 캐시의 단위에 해당할 수 있고 메모리 장치(2000)에 관한 데이터(예를 들어, 메모리 장치(2000)로부터 독출된 읽기 데이터 또는 메모리 장치(2000)로 기입될 쓰기 데이터)를 포함할 수 있다. 필드들(F1~F5)의 비트들은 메모리 어드레스(MA)를 구성할 수 있다. 어드레스 맵핑 테이블(AMT1)은 물리 어드레스(PA)의 상위 비트들을 메모리 어드레스(MA)의 스택 식별자(SID), 로우 어드레스(Row), 및 컬럼 어드레스(Column)로 맵핑할 수 있고 그리고 물리 어드레스(PA)의 하위 비트들을 메모리 어드레스(MA)의 뱅크 어드레스(BA0~BA3)로 맵핑할 수 있다. 어드레스 맵핑 테이블(AMT1)이 선택되면, 메모리 어드레스(MA)의 뱅크 어드레스(BA0~BA3)로 변환되는 물리 어드레스(PA)의 비트들은 메모리 어드레스(MA)의 로우 어드레스(Row) 및 컬럼 어드레스(Column)로 변환되는 물리 어드레스(PA)의 비트들의 하위 비트들에 해당할 수 있다. 필드들(F1~F6) 각각에 포함된 비트들의 개수는 하나 이상일 수 있다.
어드레스 변환기(1120)가 메모리 어드레스(MA)의 스택 식별자(SID)에 대응하는 물리 어드레스(PA)의 비트의 제 2 논리 값(혹은 제 1 논리 값)을 확인하고 어드레스 맵핑 테이블(AMT2)을 선택하는 것으로 가정한다. 어드레스 변환기(1120)는 어드레스 맵핑 테이블(AMT2)에 기초하여 물리 어드레스(PA)의 비트들을 필드들(F1~F7)로 나누거나 구분할 수 있다. 어드레스 맵핑 테이블(AMT2)은 필드(F1)의 비트를 스택 식별자(SID)로, 필드(F3)의 비트들을 로우 어드레스(Row)로, 필드(F5)의 비트들을 컬럼 어드레스(Column)로, 필드들(F2, F4, F6)의 비트들을 뱅크 어드레스(BA0~BA3)로, 그리고 필드들(F1~F6)보다 하위인 필드(F7)의 비트들을 캐시 라인(CL)으로 맵핑할 수 있다. 어드레스 변환기(1120)는 어드레스 맵핑 테이블(AMT2)에 기초하여 필드(F1)의 비트를 스택 식별자(SID)로, 필드(F3)의 비트들을 로우 어드레스(Row)로, 필드(F5)의 비트들을 컬럼 어드레스(Column)로, 필드들(F2, F4, F6)의 비트들을 뱅크 어드레스(BA0~BA3)로 변환할 수 있다. 필드들(F1~F6)의 비트들은 메모리 어드레스(MA)를 구성할 수 있다. 어드레스 맵핑 테이블(AMT1)이 아닌 어드레스 맵핑 테이블(AMT2)이 선택되면, 메모리 어드레스(MA)의 뱅크 어드레스(BA0~BA3)로 변환되는 물리 어드레스(PA)의 비트들 중 적어도 하나(도 3에서는 BA1이지만 이에 한정되지 않음)는 메모리 어드레스(MA)의 컬럼 어드레스(Column)로 변환되는 물리 어드레스(PA)의 비트들의 상위 비트에 해당할 수 있다. 또한, 메모리 어드레스(MA)의 뱅크 어드레스(BA0~BA3)로 변환되는 물리 어드레스(PA)의 비트들 중 적어도 하나(도 3에서는 BA0이지만 이에 한정되지 않음)는 메모리 어드레스(MA)의 로우 어드레스(Row)로 변환되는 물리 어드레스(PA)의 비트들의 상위 비트에 해당할 수 있다. 예를 들어, 메모리 어드레스(MA)의 뱅크 어드레스(BA0~BA3)로 변환되는 물리 어드레스(PA)의 비트들 사이에 메모리 어드레스(MA)의 로우 어드레스(Row) 또는 컬럼 어드레스(Column)로 변환되는 물리 어드레스(PA)의 비트들이 위치할 수 있다. 어드레스 맵핑 테이블(AMT1)에 의해 스택 식별자(SID)로 변환되는 필드(F1)의 비트의 물리 어드레스(PA) 상의 위치와 어드레스 맵핑 테이블(AMT2)에 의해 스택 식별자(SID)로 변환되는 필드(F1)의 비트의 물리 어드레스(PA) 상의 위치는 서로 동일할 수 있다. 어드레스 맵핑 테이블(AMT1)에 따라 캐시 라인(CL)에 해당하는 필드(F6)의 비트들의 물리 어드레스(PA) 상의 위치와 어드레스 맵핑 테이블(AMT2)에 따라 캐시 라인(CL)에 해당하는 필드(F7)의 비트들의 물리 어드레스(PA) 상의 위치는 서로 동일할 수 있다.
어드레스 맵핑 테이블(AMT1)에 의한 맵핑과 어드레스 맵핑 테이블(AMT2)에 의한 맵핑은 서로 상이하고 독립적일 수 있다. 예를 들어, 어드레스 맵핑 테이블(AMT1)에 의해 메모리 어드레스(MA)의 뱅크 어드레스(BA0~BA3)로 변환되는 물리 어드레스(PA)의 비트들의 위치들은, 어드레스 맵핑 테이블(AMT2)에 의해 메모리 어드레스(MA)의 뱅크 어드레스(BA0~BA3)로 변환되는 물리 어드레스(PA)의 비트들의 위치들과 상이할 수 있다. 예를 들어, 물리 어드레스(PA) 상에서 뱅크 어드레스(BA0~BA3)에 대응하는 비트들의 위치들은 어드레스 맵핑 테이블들(AMT1, AMT2)에 따라 변경될 수 있다.
어드레스 변환기(1120)는 서로 상이한 어드레스 맵핑 테이블들(AMT1, AMT2)을 동시에 지원할 수 있다. 어드레스 맵핑 테이블(AMT1)이 선택된 경우 메모리 장치(2000)에 데이터가 배치(arrange)되는 방식과 어드레스 맵핑 테이블(AMT2)이 선택된 경우 메모리 장치(2000)에 데이터가 배치되는 방식은 서로 상이할 수 있다. 예를 들어, 메모리 컨트롤러(1100)는 복수의 PIM 다이들(2100~2800) 중 PE의 실행 없이 읽기 동작 또는 쓰기 동작을 실행시키고자 하는 PIM 다이(예를 들어, 도 1 및 도 2의 SID0를 갖는 PIM 다이들(2100~2400))에 관하여 어드레스 맵핑 테이블(AMT1)을 선택할 수 있다. 반면에, 메모리 컨트롤러(1100)는 복수의 PIM 다이들(2100~2800) 중 PE를 실행시키고자 하는 PIM 다이(예를 들어, 도 1 및 도 2의 SID1을 갖는 PIM 다이들(2100~2400))에 관하여 어드레스 맵핑 테이블(AMT2)을 선택할 수 있다. 상술한 선택에 의해, 읽기 동작 또는 쓰기 동작만을 실행하는 PIM 다이에서 데이터가 배치되는 방식은 PE를 실행시키는 PIM 다이에서 데이터가 배치되는 방식과 상이하게 된다. 따라서, 본 발명의 실시 예에 따른 메모리 컨트롤러(1100)는 PIM 다이 내 PE를 실행시킬지 여부에 따라 어드레스 맵핑 테이블들(AMT1, AMT2) 중 하나를 동적으로 선택함으로써, PE를 실행시키지 않는 PIM 다이에서는 읽기 동작 또는 쓰기 동작에 알맞게 데이터를 배치할 수 있고 PE를 실행시키는 PIM 다이에서는 PE 실행에 알맞게 데이터를 배치할 수 있다.
PHY(1130)는 어드레스 변환기(1120)의 메모리 어드레스(MA)에 기초하여 메모리 장치(2000)를 접근할 수 있다. PHY(1130)는 메모리 인터페이스 회로로도 지칭될 수 있다. 예를 들어, PHY(1130)는 메모리 요청 큐(1110)의 메모리 요청과 어드레스 변환기(1120)의 메모리 어드레스(MA)에 기초하여 명령 및 어드레스 신호들(CA)을 생성 및 출력할 수 있다. PHY(1130)는 메모리 요청에 기반한 메모리 명령과 메모리 어드레스(MA)를 메모리 장치(2000)로 전송할 수 있다. PHY(1130)는 메모리 요청 큐(1110)의 메모리 요청과 어드레스 변환기(1120)의 메모리 어드레스(MA)에 따라 명령 및 어드레스 신호들(CA)의 논리 값들을 다양하게 변경할 수 있다. PHY(1130)는 메모리 요청 큐(1110)의 메모리 요청에 기초하여 데이터 입출력 신호들(DQ)을 생성 및 출력하거나 또는 메모리 장치(2000)로부터 전송되는 데이터 입출력 신호들(DQ)을 수신할 수 있다. 데이터 입출력 신호들(DQ)은 메모리 장치(2000)로 기입될 쓰기 데이터 또는 메모리 장치(2000)로부터 독출된 읽기 데이터를 포함할 수 있다.
명령 및 어드레스 신호들(CA)과 데이터 입출력 신호들(DQ)은 채널들(CH1~CH4) 각각에 대하여 제공될 수 있다. 예를 들어, 메모리 컨트롤러(1100)는 채널(CH1)을 통해 PIM 다이들(2100, 2500)을, 채널(CH2)을 통해 PIM 다이들(2200, 2600)을, 채널(CH3)을 통해 PIM 다이들(2300, 2700)을, 그리고 채널(CH4)을 통해 PIM 다이들(2400, 2800)을 접근할 수 있다. PIM 다이들(2100, 2500)은 채널(CH1)을 공유할 수 있고, PIM 다이들(2200, 2600)은 채널(CH2)을 공유할 수 있고, PIM 다이들(2300, 2700)은 채널(CH3)을 공유할 수 있고, 그리고 PIM 다이들(2400, 2800)은 채널(CH4)을 공유할 수 있다.
메모리 컨트롤러(1100)는 메모리 어드레스(MA)의 스택 식별자(SID)를 이용하여 하나의 채널에 할당된 복수의 PIM 다이들 중 어느 하나를 선택할 수 있다. 메모리 컨트롤러(1100)는 메모리 어드레스(MA)에 기초하여 하나의 채널에 할당된 복수의 PIM 다이들 중 하나를 접근할 수 있다. 예를 들어, 스택 식별자(SID)가 제 1 논리 값을 가지면(즉, SID0), 채널들(CH1~CH4)을 통해 전송되는 명령 및 어드레스 신호들(CA)과 데이터 입출력 신호들(DQ)은 PIM 다이들(2100~2400)에 관한 것일 수 있다. 예를 들어, 스택 식별자(SID)가 제 2 논리 값을 가지면(즉, SID1, 채널들(CH1~CH4)을 통해 전송되는 명령 및 어드레스 신호들(CA)과 데이터 입출력 신호들(DQ)은 PIM 다이들(2500~2800)에 관한 것일 수 있다. 예를 들어, 채널 당 할당된 PIM 다이들의 개수, 채널들의 개수, 하나의 PIM 다이에 할당된 채널의 개수 등은 도 3의 예시들로 한정되지 않는다. 예를 들어, 물리 어드레스(PA)의 일부 비트(예를 들어, 필드(F1)보다 상위의 비트들)는 메모리 어드레스(MA)가 채널들(CH1~CH4) 중 어느 채널에 관한 것인지를 나타낼 수 있고 채널들(CH1~CH4)을 구별하는데 사용될 수 있다.
도 4는 도 3의 어드레스 변환기의 블록도를 예시적으로 도시한다. 어드레스 변환기(1120)는 어드레스 범위 레지스터(1121), 맵핑 선택 회로(1122), 및 어드레스 변환 회로들(1123~1124)을 포함할 수 있다. 예를 들어, 상술한 구성 요소들(1121~1124)은 하드웨어 방식으로 구현될 수 있다.
어드레스 범위 레지스터(1121)는 물리 어드레스(PA[N:0]; N은 자연수이고 N+1은 비트 수에 대응) 중 비트(PA[N:N-M+1]; M은 자연수)를 저장할 수 있다. 도 3의 경우와 같이, 어드레스 변환기(1120)가 두 개의 어드레스 맵핑 테이블들(AMT1, AMT2)을 포함하는 경우 M은 1일 수 있고 어드레스 범위 레지스터(1121)는 비트(PA[N])를 저장할 수 있다. 어드레스 변환기(1120)는 둘 이상의 어드레스 맵핑 테이블들을 포함할 수도 있고 어드레스 범위 레지스터(1121)는 하나 이상의 비트들을 저장할 수 있다. 전술한대로, 어드레스 범위 레지스터(1121)에 저장되는 비트(PA[N:N-M+1])는 메모리 어드레스(MA)의 스택 식별자(SID)일 수 있다.
맵핑 선택 회로(1122)는 어드레스 범위 레지스터(1121)에 저장된 비트(PA[N:N-M+1])의 값에 따라 어드레스 변환 회로들(1123, 1124) 중 하나를 선택할 수 있다. 예를 들어, 맵핑 선택 회로(1122)는 어드레스 범위 레지스터(1121)에 저장된 비트(PA[N:N-M+1])의 값에 따라 어드레스 변환 회로들(1123, 1124)을 인에이블하기 위한 인에이블 신호들(EN_1~EN_2M) 중 하나를 활성화할 수 있고 나머지를 비활성화할 수 있다.
어드레스 변환 회로(1123)는 인에이블 신호(EN_1)에 의해 활성화되고 어드레스 맵핑 테이블(AMT1; 도 3의 어드레스 맵핑 테이블(AMT1)과 동일)에 기초하여 물리 어드레스(PA[N:0])를 메모리 어드레스(MA[L:0]; L은 자연수이고 N보다 작을 수 있음)로 변환할 수 있다. 어드레스 변환 회로(1124)는 인에이블 신호(EN_2M)에 의해 활성화되고 어드레스 맵핑 테이블(AMT2M; M이 1인 경우, 도 3의 어드레스 맵핑 테이블(AMT2)과 동일)에 기초하여 물리 어드레스(PA[N:0])를 메모리 어드레스(MA[L:0])로 변환할 수 있다. 어드레스 변환기(1120)는 서로 상이한 맵핑들을 수행하는 2M개의 어드레스 맵핑 테이블들을 포함할 수도 있고 그리고 각각의 2M개의 어드레스 맵핑 테이블들에 기초하여 물리 어드레스(PA[N:0])를 메모리 어드레스(MA[L:0])로 변환하는 2M개의 어드레스 변환 회로들(1123~1124)을 포함할 수도 있다.
도 5는 도 1 및 도 2의 시스템 온 칩의 블록도를 예시적으로 도시한다. 시스템 온 칩(1000)은 메모리 컨트롤러(1100), 프로세서(1200), 온-칩 메모리(1300), 및 시스템 버스(1400)를 포함할 수 있다.
메모리 컨트롤러(1100)는 메모리 요청 큐(1110), 어드레스 변환기(1120), PHY(1130), 제어 레지스터(1141), 뱅크 상태 레지스터(1142), 시스템 버스 인터페이스 회로(1150), 메모리 명령 큐(1160), 명령 스케줄러(1170), 명령 시퀀서(1180), 읽기 버퍼(1191), 및 쓰기 버퍼(1192)를 포함할 수 있다. 메모리 요청 큐(1110), 서로 상이한 어드레스 맵핑 테이블들(AMT1, AMT2)을 모두 지원하는 어드레스 변환기(1120), 및 PHY(1130)에 대한 중복적인 설명은 생략될 것이다.
제어 레지스터(1141)는 메모리 컨트롤러(1100) 내 구성 요소들(1110, 1120, 1130, 1142, 1150, 1160, 1170, 1180, 1191, 1192)의 제어 정보들을 저장 및 제공할 수 있다. 제어 레지스터(1141)에 저장된 제어 정보는 프로세서(1200) 혹은 유저의 요청에 의해 변경될 수 있다. 구성 요소들(1110, 1120, 1130, 1142, 1150, 1160, 1170, 1180, 1191, 1192)은 각각 제어 레지스터(1141)에 저장된 제어 정보들에 기초하여 동작할 수 있다.
뱅크 상태 레지스터(1142)는 메모리 장치(2000) 내 다수의 뱅크들(도 7 및 도 8 참조)의 상태 정보들을 저장할 수 있다. 예를 들어, 상태 정보는 뱅크가 활성화되었는지 여부 또는 뱅크가 프리차지 되었는지 여부 등을 나타낼 수 있다.
시스템 버스 인터페이스 회로(1150)는 시스템 버스(1400)의 통신 규약에 기초하여 프로세서(1200) 내 다수의 코어들(1210~1240)로부터 시스템 버스(1400)를 통해 전송되는 메모리 요청들을 수신할 수 있다. 시스템 버스 인터페이스 회로(1150)는 수신된 메모리 요청들을 메모리 요청 큐(1110)로 제공하거나, 전송하거나, 또는 기입할 수 있다.
메모리 명령 큐(1160)는 메모리 요청 큐(1110)에 저장된 메모리 요청들에 대한 메모리 명령들 그리고 어드레스 변환기(1120)에 의해 변환된 메모리 어드레스들을 저장할 수 있다. 명령 스케줄러(1170)는 뱅크 상태 레지스터(1142)에 저장된 뱅크들의 상태 정보들에 기초하여 메모리 명령 큐(1160)에 저장된 메모리 명령들과 메모리 어드레스들이 처리되는 순서를 조정할 수 있다. 명령 스케줄러(1170)는 메모리 명령 큐(1160)에 저장된 메모리 명령들과 메모리 어드레스들에 대한 스케줄링(scheduling)을 수행할 수 있다. 명령 시퀀서(1180)는 명령 스케줄러(1170)에 의해 스케줄링된 순서에 기초하여 메모리 명령 큐(1160)에 저장된 메모리 명령들과 메모리 어드레스들을 PHY(1130)로 출력하거나 제공할 수 있다.
PHY(1130)는 클럭 생성기(1131), 명령 및 어드레스 생성기(1132), 수신기(1133), 및 송신기(1134)를 포함할 수 있다. 클럭 생성기(1131)는 메모리 장치(2000)로 출력되는 클럭 신호(CK)를 생성할 수 있다. 예를 들어, 메모리 장치(2000)는 클럭 신호(CK)에 기초하여 동작하는 동기식 메모리 장치일 수 있다. 명령 및 어드레스 생성기(1132)는 명령 시퀀서(1180)로부터 메모리 명령과 메모리 어드레스를 수신하고 메모리 장치(2000)로 메모리 명령과 메모리 어드레스를 포함하는 명령 및 어드레스 신호들(CA)을 전송할 수 있다. 수신기(1133)는 메모리 장치(2000)로부터 전송되는 읽기 데이터를 갖는 데이터 입출력 신호들(DQ)을 수신할 수 있다. 수신기(1133)는 수신된 읽기 데이터를 읽기 버퍼(1191)로 제공할 수 있다. 송신기(1134)는 쓰기 버퍼(1192)로부터 쓰기 데이터를 수신할 수 있다. 송신기(1134)는 쓰기 데이터를 갖는 데이터 입출력 신호들(DQ)을 메모리 장치(2000)로 출력할 수 있다. 도 5의 채널(CH)은 도 3의 채널들(CH1~CH4) 중 어느 하나에 해당할 수 있다. PHY(1130)는 채널들(CH1~CH4) 각각의 클럭 신호(CK) 그리고 명령 및 어드레스 신호들(CA)을 생성 및 출력할 수 있고 그리고 채널들(CH1~CH4) 각각의 데이터 입출력 신호들(DQ)을 메모리 장치(2000)와 교환할 수 있다.
읽기 버퍼(1191)는 수신기(1133)로부터 제공되는 읽기 데이터를 저장할 수 있다. 예를 들어, 읽기 버퍼(1191)는 캐시 라인(CL)만큼의 읽기 데이터를 시스템 버스 인터페이스 회로(1150)로 제공할 수 있고 시스템 버스 인터페이스 회로(1150)는 읽기 데이터를 시스템 버스(1400)를 통해 프로세서(1200) 또는 온-칩 메모리(1300)로 전송할 수 있다. 쓰기 버퍼(1192)는 시스템 버스 인터페이스 회로(1150)로부터 제공되고 메모리 장치(2000)로 전송될 쓰기 데이터를 수신 및 저장할 수 있다. 쓰기 버퍼(1192)는 메모리 장치(2000)의 데이터 입출력 단위만큼의 쓰기 데이터를 송신기(1134)로 제공할 수 있다.
프로세서(1200)는 온-칩 메모리(1300)에 로드된 다양한 소프트웨어(응용 프로그램, 운영 체제, 파일 시스템, 장치 드라이버 등)을 실행할 수 있다. 프로세서(1200)는 동종 멀티-코어 또는 이종 멀티-코어를 포함할 수 있고 다수의 코어들(1210~1240)을 포함할 수 있다. 예를 들어, 코어들(1210~1240) 각각은 CPU(Central Processing Unit), ISP(Image Signal Processing Unit), DSP(Digital Signal Processing Unit), GPU(Graphics Processing Unit), VPU(Vision Processing Unit), TPU(Tensor Processing Unit), 및 NPU(Neural Processing Unit) 중 어느 하나일 수 있다. 코어들(1210~1240) 각각은 메모리 장치(2000)에 대한 메모리 요청을 생성할 수 있다. 코어들(1210~1240) 각각에서 생성되는 메모리 요청은 전술한 물리 어드레스(PA)를 포함할 수 있다. 온-칩 메모리(1300)에는 전자 장치(100a/100b)를 구동하기 위한 응용 프로그램, 운영 체제, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 예를 들어, 온-칩 메모리(1300)는 메모리 장치(2000)보다 빠른 데이터 입출력 속도를 갖는 SRAM(Static RAM) 장치 혹은 코어들(1210~1240)에 의해 공유되는 캐시 메모리일 수 있으나 이에 한정되지 않는다. 시스템 버스(1400)는 메모리 컨트롤러(1100), 프로세서(1200), 및 온-칩 메모리(1300) 간의 통신 경로를 제공할 수 있다. 예를 들어, 시스템 버스(1400)는 AMBA(Advanced Microcontroller Bus Architecture)에 기반한 AHB(Advanced High-performance Bus), ASB(Advanced System Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface) 등일 수 있다.
도 6은 도 1 및 도 2의 메모리 장치를 좀 더 구체적으로 도시한다. 메모리 컨트롤러(1100)는 채널들(CH1~CHK; K는 2 이상의 자연수)을 통해 메모리 장치(2000)를 접근할 수 있다. 예를 들어, PIM 다이들(2100, 2500)은 채널(CH1)로 할당될 수 있고, PIM 다이들(2400, 2800)은 채널(CHK)로 할당될 수 있고, 그리고 나머지 다이들(2200~2700)도 유사한 방식으로 채널들로 각각 할당될 수 있다. 동일한 채널(CH1)로 할당된 PIM 다이들(2100, 2500)은 스택 식별자(SID0/SID1)에 의해 식별될 수 있다. 메모리 장치(2000)는 채널들(CH1~CHK)에 각각 대응하고 채널들(CH1~CHK)을 통해 전송되는 신호들이 전송되는 경로들(Path_1~Path_K)을 포함할 수 있다. 경로들(Path_1~Path_K)은 버퍼 다이(2900)와 PIM 다이들(2100~2800) 간의 전기적 연결 경로들을 제공할 수 있고 그리고 도 1 및 도 2에서 전술한 관통 전극들(TSV)과 마이크로 범프들(BP)을 포함할 수 있다.
PIM 다이(2500)는 뱅크 그룹들(BG0~BG3), 데이터 버스들(DB0, DB1), 뱅크 컨트롤러들(BCTRL0, BCTRL1), PE 컨트롤러들(PECTRL0, PECTRL1), 명령 및 어드레스 디코더(CADEC), 및 데이터 입출력 회로(DATAIO)를 포함할 수 있다. PIM 다이(2500)만 상세하게 설명 및 도시되었으나 나머지 PIM 다이들(2100~2400, 2600~2800) 각각은 PIM 다이(2500)와 실질적으로 동일하게 구현되고 동작할 수 있다.
뱅크 그룹들(BG0~BG3)은 뱅크 어드레스(BA0~BA3) 중 뱅크 어드레스(BA2, BA3)에 의해 식별될 수 있다. 예를 들어, BA2=0, BA3=0이면, 뱅크 그룹(BG0)이 선택될 수 있다. 뱅크 그룹(BG0)은 뱅크들(BK0~BK3)을 포함할 수 있다. 하나의 뱅크 그룹 내 뱅크들은 어드레스(BA0~BA3) 중 뱅크 어드레스(BA0, BA1)에 의해 식별될 수 있다. 예를 들어, BA0=0, BA1=0, BA2=0, BA3=0이면, 뱅크(BK0)가 선택될 수 있다. 도 1 및 도 2의 메모리 셀 어레이(MCA)는 뱅크들(BK0~BK15)로 나뉠 수 있다. 뱅크 어드레스(BA0~BA3) 중 LSB에 해당하는 뱅크 어드레스(BA0)가 0인 경우에 선택될 수 있는 뱅크들(BK0, BK2, BK4, BK6, BK8, BK10, BK12, BK14) 각각은 위(Top; 혹은 짝수) 뱅크로 지칭될 수 있다. 뱅크 어드레스(BA0~BA3) 중 LSB에 해당하는 뱅크 어드레스(BA0)가 1인 경우에 선택될 수 있는 뱅크들(BK1, BK3, BK5, BK7, BK9, BK11, BK13, BK15) 각각은 아래(Bottom; 혹은 홀수) 뱅크로 지칭될 수 있다. 예를 들어, 뱅크들(BK0~BK15) 각각은 동일한 개수의 메모리 셀들을 포함할 수 있고 그리고 뱅크 그룹들(BG0~BG3) 각각은 동일한 개수의 뱅크들을 포함할 수 있다. 예를 들어, 뱅크 그룹들(BG0~BG3)은 서로 동일하게 구현될 수 있고 뱅크들(BK0~BK15)도 서로 동일하게 구현될 수 있다.
뱅크 그룹(BG0)은 PE0 및 PE1을 포함할 수 있다. 예를 들어, PE0는 뱅크들(BK0, BK1)의 데이터에 대한 연산을 실행할 수 있고 PE1은 뱅크들(BK2, BK3)의 데이터에 대한 연산을 실행할 수 있다. 뱅크 그룹(BG1)은 뱅크들(BK4, BK5)의 데이터에 대한 연산을 실행하는 PE2와 뱅크들(BK6, BK7)의 데이터에 대한 연산을 실행하는 PE3를 포함할 수 있다. 뱅크 그룹들(BG0, BG1)과 유사하게 뱅크 그룹들(BG2, BG3)도 PE4~PE7를 포함할 수 있다. 예를 들어, PE0~PE7은 도 1 및 도 2의 PIM 다이들(2100~2800) 각각의 PE에 대응하거나 도 1 및 도 2의 PIM 다이들(2100~2800) 각각의 PE를 구성할 수 있다.
하나의 PIM 다이(2500) 내 포함되는 뱅크 그룹들의 개수와 뱅크 그룹 당 뱅크들의 개수는 도 6의 예시로 한정되지 않는다. 하나의 채널(CH1)이 PIM 다이(2500)로 할당되고 그리고 하나의 채널(CH1)에 뱅크 그룹들(BG0~BG3)과 뱅크들(BK0~BK15)이 할당된 것으로 도시되었으나 이에 한정되지 않는다. PIM 다이(2500)로 다른 채널(들)이 더 할당될 수 있고 PIM 다이(2500)는 다른 채널(들)에 할당된 뱅크 그룹들과 뱅크들을 더 포함할 수 있다. 예를 들어, PIM 다이(2500)는 4개의 채널들(CH1~CH4)로 할당된 뱅크 그룹들(BG0~BG15)과 뱅크들(BK0~BK63)을 포함할 수 있으며, 도 6에서 예시된 채널(CH1)과 유사하게 각 채널에 대해 뱅크 그룹들과 뱅크들이 PIM 다이(2500) 내에서 구성될 수 있다. 하나의 뱅크 그룹은 2개의 PE들을 포함하고 하나의 PE가 2개의 뱅크들로 할당된 것으로 설명되었으나, 하나의 뱅크 그룹은 뱅크들의 개수만큼의 PE들을 포함할 수도 있고 하나의 PE가 하나의 뱅크에 할당될 수도 있다. 어느 경우든, 상술한 수치들로 본 발명의 범위가 한정되지 않는다.
데이터 버스(DB0)는 뱅크 그룹들(BG0, BG1)에 관한 데이터 입출력 경로들을 포함할 수 있다. 예를 들어, 뱅크들(BK0~BK3) 또는 뱅크들(BK4~BK7)에 기입될 데이터, 뱅크들(BK0~BK3) 또는 뱅크들(BK4~BK7)로부터 독출된 데이터, PE0와 PE1 또는 PE2와 PE3에 의해 처리될 데이터, PE0와 PE1 또는 PE2와 PE3에 의해 처리된 데이터 등이 데이터 버스(DB0)를 통해 전송될 수 있다. 데이터 버스(DB1)는 뱅크 그룹들(BG2, BG3)에 관한 데이터 입출력 경로들을 포함할 수 있다. 할당된 뱅크 그룹들을 제외하면, 데이터 버스들(DB0, DB1)은 서로 동일하게 구현될 수 있고 서로 통합될 수도 있다.
뱅크 컨트롤러(BCTRL0)는 명령 및 어드레스 디코더(CADEC)의 제어에 기초하여 뱅크 그룹들(BG0, BG1)의 뱅크들(BK0~BK7)을 제어할 수 있다. 뱅크 컨트롤러(BCTRL2)는 명령 및 어드레스 디코더(CADEC)의 제어에 기초하여 뱅크 그룹들(BG2, BG3)의 뱅크들(BK8~BK15)을 제어할 수 있다. 예를 들어, 뱅크 컨트롤러들(BCTRL0, BCTRL1)은 뱅크들(BK0~BK15)을 활성화하거나 프리차지할 수 있다. 할당된 뱅크 그룹들을 제외하면, 뱅크 컨트롤러들(BCTRL0, BCTRL1)은 서로 동일하게 구현될 수 있고 서로 통합될 수도 있다.
PE 컨트롤러(PECTRL0)는 명령 및 어드레스 디코더(CADEC)의 제어에 기초하여 뱅크 그룹들(BG0, BG1)의 PE0~PE3를 제어할 수 있다. PE 컨트롤러(PECTRL1)는 명령 및 어드레스 디코더(CADEC)의 제어에 기초하여 뱅크 그룹들(BG2, BG3)의 PE4~PE7을 제어할 수 있다. 예를 들어, PE 컨트롤러들(PECTRL0, PECTRL1)은 PE0~PE7에 의해 처리될 데이터 또는 PE0~PE7에 의해 처리된 데이터를 선택하거나, PE0~PE7가 연산들을 실행을 개시하거나 종료하는 시점들을 제어할 수 있다. 할당된 PE들을 제외하면, PE 컨트롤러들(PECTRL0, PECTRL1)은 서로 동일하게 구현될 수 있고 서로 통합될 수도 있다.
명령 및 어드레스 디코더(CADEC)는 채널(CH1)과 경로(Path_1)를 통해 전송되는 클럭 신호(CK; 도 5 참조)에 기초하여 채널(CH1)과 경로(Path_1)를 통해 전송되는 명령 및 어드레스 신호들(CA; 도 5 참조)을 수신할 수 있다. 명령 및 어드레스 디코더(CADEC)는 명령 및 어드레스 신호들(CA)을 디코딩할 수 있다. 명령 및 어드레스 디코더(CADEC)는 디코딩 결과에 기초하여 PIM 다이(2500)의 구성 요소들을 제어할 수 있다.
데이터 입출력 회로(DATAIO)는 명령 및 어드레스 디코더(CADEC)의 제어에 기초하여 채널(CH1)과 경로(Path_1)를 통해 전송되는 데이터 입출력 신호들(DQ; 도 5 참조)을 수신할 수 있고 그리고 데이터 입출력 신호들(DQ)에 포함된 쓰기 데이터를 뱅크 그룹들(BG0~BG3)의 뱅크들(BK0~BK15)로 제공할 수 있다. 데이터 입출력 회로(DATAIO)는 뱅크 그룹들(BG0~BG3)의 뱅크들(BK0~BK15)과 PE0~PE15로부터 출력되는 읽기 데이터를 수신할 수 있고 그리고 읽기 데이터를 포함하는 데이터 입출력 신호들(DQ)을 출력할 수 있다. 읽기 데이터를 포함하는 데이터 입출력 신호들(DQ)은 경로(Path_1)와 채널(CH1)을 통해 메모리 컨트롤러(1100)로 전송될 수 있다.
도 7은 도 1 및 도 2의 메모리 장치를 좀 더 구체적으로 도시한다. 도 6의 메모리 장치(2000)와 도 7의 메모리 장치(2000) 간의 차이점이 주로 설명될 것이다. 메모리 장치(2000)는 메모리 다이들(2100~2400)과 PIM 다이들(2500~2800)을 포함할 수 있다. PIM 다이들(2500~2800) 각각은 도 6의 PIM 다이(2500)와 동일할 수 있다. 메모리 다이들(2100~2400) 각각은 도 6의 PIM 다이(2500)와 상이하게 구현될 수 있다. 메모리 다이(2300)는 뱅크 그룹들(BG0~BG3), 뱅크들(BK0~BK15), 데이터 버스들(DB0, DB1), 뱅크 컨트롤러들(BCTRL0, BCTRL1), 명령 및 어드레스 디코더(CADEC), 및 데이터 입출력 회로(DATAIO)를 포함할 수 있고 상술한 구성 요소들은 도 6에서 설명되었다. 메모리 다이(2300)는 PE0~PE7, PE 컨트롤러들(PECTRL0, PECTRL1)을 포함하지 않을 수 있고 PIM 다이로 지칭되지 않을 수 있다. 나머지 메모리 다이들(2100, 2200, 2400) 각각은 메모리 다이(2300)와 실질적으로 동일하게 구현되고 동작할 수 있다.
도 8은 도 5의 메모리 컨트롤러에 의해 물리 어드레스가 메모리 어드레스로 변환되는 예시를 도시한다. 메모리 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT1)에 기초하여 물리 어드레스(PA) 중 스택 식별자(SID0)인 비트를 갖는 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다. 메모리 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT1)과 상이한 어드레스 맵핑 테이블(AMT2)에 기초하여 물리 어드레스(PA) 중 스택 식별자(SID1)인 비트를 갖는 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다. 예를 들어, 스택 식별자(SID0)인 비트를 갖는 물리 어드레스(PA)의 범위는 0x000000~0x000FFF일 수 있고 그리고 스택 식별자(SID1)인 비트를 갖는 물리 어드레스(PA)의 범위는 0x100000~0x100FFF일 수 있으나, 상술한 수치들로 한정되지 않는다.
어드레스 맵핑 테이블(AMT1)에 의하면, 0x000040인 물리 어드레스(PA) 중 뱅크 어드레스(BA0~BA3)에 해당하는 비트들은 모두 0000(2)일 수 있다. 메모리 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT1)에 기초하여 0x000040인 물리 어드레스(PA)를 뱅크 그룹(BG0)의 뱅크(BK0)로 맵핑할 수 있다. 예를 들어, 0x000040인 물리 어드레스(PA)와 0x000080인 물리 어드레스(PA) 간의 차이는 캐시 라인(CL)의 크기(예를 들어, 64바이트)에 해당할 수 있다. 어드레스 맵핑 테이블(AMT1)에 의하면, 0x000080인 물리 어드레스(PA) 중 뱅크 어드레스(BA0~BA3)에 해당하는 비트들은 0100(2)일 수 있다. 메모리 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT1)에 기초하여 0x000080인 물리 어드레스(PA)를 뱅크 그룹(BG1)의 뱅크(BK4)로 맵핑할 수 있다. 유사한 방식으로, 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT1)에 기초하여 스택 식별자(SID0)인 비트를 갖는 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다. 0x000040부터 0x000400까지 순차적으로 증가하는 물리 어드레스(PA)는 위 뱅크(T_BK)에 해당하는 뱅크들(BK0, BK4, BK8, BK12), 아래 뱅크(B_BK)에 해당하는 뱅크들(BK1, BK5, BK9, BK13), 위 뱅크(T_BK)에 해당하는 뱅크들(BK2, BK6, BK10, BK14), 그리고 아래 뱅크(B_BK)에 해당하는 뱅크들(BK3, BK7, BK11, BK15)로 맵핑될 수 있다.
어드레스 맵핑 테이블(AMT2)에 의하면, 0x100040인 물리 어드레스(PA) 중 뱅크 어드레스(BA0~BA3)에 해당하는 비트들은 모두 0000(2)일 수 있다. 메모리 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT2)에 기초하여 0x100040인 물리 어드레스(PA)를 뱅크 그룹(BG0)의 뱅크(BK0)로 맵핑할 수 있다. 어드레스 맵핑 테이블(AMT2)에 의하면, 0x100080인 물리 어드레스(PA) 중 뱅크 어드레스(BA0~BA3)에 해당하는 비트들은 0100(2)일 수 있다. 메모리 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT2)에 기초하여 0x100080인 물리 어드레스(PA)를 뱅크 그룹(BG1)의 뱅크(BK4)로 맵핑할 수 있다. 유사한 방식으로, 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT2)에 기초하여 스택 식별자(SID1)인 비트를 갖는 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다. 0x100040부터 0x100400까지 순차적으로 증가하는 물리 어드레스(PA)는 위 뱅크(T_BK)에 해당하는 뱅크들(BK0, BK4, BK8, BK12, BK2, BK6, BK10, BK14) 그리고 아래 뱅크(B_BK)에 해당하는 뱅크들(BK1, BK5, BK9, BK13, BK3, BK7, BK11, BK15)로 맵핑될 수 있다. 0x100040부터 0x100400까지 순차적으로 증가하는 물리 어드레스(PA)와 0x000040부터 0x000400까지 순차적으로 증가하는 물리 어드레스(PA)는 스택 식별자(SID0/SID1)를 제외하면 서로 동일하게 변경된다. 그럼에도 불구하고, 어드레스 맵핑 테이블들(AMT1, AMT2)이 상이하므로, 0x100040부터 0x100400까지 순차적으로 증가하는 물리 어드레스(PA)에 대응하는 뱅크들의 맵핑 순서는 0x000040부터 0x000400까지 순차적으로 증가하는 물리 어드레스(PA)에 대응하는 뱅크들의 맵핑 순서와 상이하다.
도 9는 도 6의 뱅크 그룹의 블록도를 예시적으로 도시한다. 도 9에서는 뱅크 그룹(BG0)만이 상세하게 도시되었으나, 전술한대로, 다른 뱅크 그룹들(BG1~BG3)도 뱅크 그룹(BG0)과 실질적으로 동일하게 구현될 수 있다.
뱅크 그룹(BG0)은 로우 디코더(RD0) 및 컬럼 디코더(CD0)를 포함할 수 있다. 로우 디코더(RD0)는 메모리 어드레스(MA)의 로우 어드레스(Row)를 디코딩하고 뱅크(BK0)의 워드 라인(WL0)을 선택하고 활성화할 수 있다. 예를 들어, 워드 라인(WL0)이 활성화되면(비활성화되면) 뱅크(BK0)는 활성화 상태(프리차지 상태)일 수 있다. 전술한대로, 뱅크(BK0)의 상태 정보는 뱅크 상태 레지스터(1142)에 저장될 수 있다. 컬럼 디코더(CD0)는 메모리 어드레스(MA)의 컬럼 어드레스(Column)를 디코딩하고 뱅크(BK0)의 컬럼 선택 라인(CSL0)을 선택하고 활성화할 수 있다. 뱅크(BK0)는 워드 라인(WL0)과 컬럼 선택 라인(CSL0)을 통해 접근되는 메모리 셀들(MC0)을 포함할 수 있다. 뱅크(BK0)는 다른 워드 라인들과 다른 컬럼 선택 라인들을 통해 접근되는 메모리 셀들을 더 포함할 수 있다.
뱅크 그룹(BG0)은 입출력 감지 증폭기(IOSA0), 쓰기 드라이버(WDRV0), 뱅크 로컬 입출력 게이팅 회로(BLIOGT0), 뱅크 글로벌 입출력 게이팅 회로(BGIOGT0), 및 데이터 버스 입출력 게이팅 회로(DBIOGT0)를 포함할 수 있다. 입출력 감지 증폭기(IOSA0)는 메모리 셀들(MC0)로부터 셀 입출력 라인들(CIO0)을 통해 출력되는 읽기 데이터를 감지 및 증폭할 수 있고 그리고 읽기 데이터를 뱅크 로컬 입출력 라인들(BLIO0)로 출력할 수 있다. 쓰기 드라이버(WDRV0)는 뱅크 로컬 입출력 라인들(BLIO0)을 통해 전송되는 쓰기 데이터를 수신하고 쓰기 데이터를 셀 입출력 라인들(CIO0)을 통해 메모리 셀들(MC0)로 기입할 수 있다. 뱅크 로컬 입출력 게이팅 회로(BLIOGT0)는 쓰기 드라이버(WDRV0)를 뱅크 로컬 입출력 라인들(BLIO0)로 전기적으로 연결하거나 차단할 수 있다. 뱅크 로컬 입출력 게이팅 회로(BLIOGT0)는 입출력 감지 증폭기(IOSA0)를 뱅크 로컬 입출력 라인들(BLIO0)로 전기적으로 연결하거나 차단할 수도 있다. 뱅크 글로벌 입출력 게이팅 회로(BGIOGT0)는 뱅크 로컬 입출력 라인들(BLIO0)을 뱅크 글로벌 입출력 라인들(BGIO0)로 전기적으로 연결하거나 차단할 수 있다. 뱅크 글로벌 입출력 라인들(BGIO0)은 뱅크 그룹(BG0) 내 뱅크들(BK0~BK3)에 의해 공유될 수 있다. 데이터 버스 입출력 게이팅 회로(DBIOGT0)는 뱅크 글로벌 입출력 라인들(BGIO0)를 데이터 버스(DB0)로 전기적으로 연결하거나 차단할 수 있다. 데이터 버스(DB0)는 뱅크 그룹들(BG0, BG1)에 의해 공유될 수 있다. 예를 들어, 뱅크 로컬 입출력 게이팅 회로(BLIOGT0), 뱅크 글로벌 입출력 게이팅 회로(BGIOGT0), 및 데이터 버스 입출력 게이팅 회로(DBIOGT0) 각각은 입출력 멀티플렉서 또는 스위치로서 동작할 수 있다. 상술한 구성 요소들(RD0, CD0, IOSA0, WDRV0, BLIOGT0, BGIOGT0)은 뱅크(BK0)의 데이터 입출력을 위한 것이다. 유사하게, 뱅크 그룹(BG0)은, 뱅크들(BK1~BK3)의 데이터 입출력들을 위해, 로우 디코더들(RD1~RD3), 컬럼 디코더들(CD1~CD3), 입출력 감지 증폭기들(IOSA1~IOSA3), 쓰기 드라이버들(WDRV1~WDRV3), 뱅크 로컬 입출력 게이팅 회로들(BLIOGT1~BLIOGT3), 및 뱅크 글로벌 입출력 게이팅 회로들(BGIOGT1~ BGIOGT3)을 포함할 수 있다.
PE0는 입력 멀티플렉서(IMUX), PE 어레이(PEA), 레지스터(REG), 및 출력 멀티플렉서(OMUX)를 포함할 수 있다. 입력 멀티플렉서(IMUX)는 뱅크 로컬 입출력 라인들(BLIO0)을 통해 뱅크(BK0)의 데이터(쓰기 데이터 혹은 읽기 데이터), 뱅크 로컬 입출력 라인들(BLIO1)을 통해 뱅크(BK1)의 데이터(쓰기 데이터 혹은 읽기 데이터), 뱅크 글로벌 입출력 라인들(BGIO0)을 통해 뱅크 그룹(BG0)의 데이터, 및 레지스터 출력 라인들(RO0)의 데이터를 수신할 수 있다. 입력 멀티플렉서(IMUX)는 입력 제어 신호(ICTRL0)에 기초하여 상술한 데이터 중 적어도 하나를 PE 어레이(PEA)로 제공할 수 있다. 예를 들어, 상술한 데이터는 피연산자들(OPA~OPD)로서 PE 어레이(PEA)로 제공될 수 있다. PE 어레이(PEA)는 프로세싱 제어 신호(PCTRL0)에 기초하여 상술한 데이터 중 적어도 하나에 대한 연산을 실행할 수 있다. 예를 들어, PE 어레이(PEA)에 의해 실행되는 연산은 덧셈, 뺄셈, 곱셈, 나눗셈, 쉬프트, AND, NAND, OR, NOR, XNOR, XOR 등의 다양한 산술 혹은 로직 연산(들)일 수 있다. 레지스터(REG)는 레지스터 제어 신호(RCTRL0)에 기초하여 레지스터 입력 라인들(RI0)을 통해 PE 어레이(PEA)의 연산 결과를 수신하고 저장할 수 있다. 레지스터(REG)는 레지스터 제어 신호(RCTRL0)에 기초하여 저장된 연산 결과를 데이터로서 레지스터 출력 라인들(RO0)로 출력할 수 있다. 출력 멀티플렉서(OMUX)는 출력 제어 신호(OCTRL0)에 기초하여 레지스터(REG)에 저장된 데이터를 뱅크 로컬 입출력 라인들(BLIO0), 뱅크 로컬 입출력 라인들(BLIO1), 레지스터 출력 라인들(ROUT1), 및 뱅크 글로벌 입출력 라인들(BGIO0) 중 적어도 하나로 출력할 수 있다. PE1은 뱅크들(BK2, BK3)의 뱅크 로컬 입출력 라인들(BLIO2, BLIO3)로 연결되고 제어 신호들(ICTRL1, PCTRL1, RCTRL1, OCTRL1)을 수신하는 점을 제외하면, PE0와 실질적으로 동일하게 구현되고 동작할 수 있다.
도 10은 도 6의 PIM 다이의 블록도를 예시적으로 도시한다. 명령 및 어드레스 디코더(CADEC)는 명령 및 어드레스 신호들(CA)을 디코딩하고 디코딩 결과에 기초하여 뱅크 컨트롤러들(BCTRL0, BCTRL1), PE 컨트롤러들(PECTRL0, PECTRL1), 및 데이터 입출력 회로(DATAIO)를 제어할 수 있다. 뱅크 컨트롤러(BCTRL0)는 뱅크 그룹들(BG0, BG1)의 메모리 셀들에 대한 읽기 및 쓰기를 제어할 수 있다. 뱅크 컨트롤러(BCTRL1)는 뱅크 그룹들(BG2, BG3)의 메모리 셀들에 대한 읽기 및 쓰기를 제어할 수 있다. PE 컨트롤러들(PECTRL0, PECTRL1) 각각은 제어 정보를 저장하는 제어 레지스터를 포함할 수 있다. PE 컨트롤러(PECTRL0)는 명령 및 어드레스 디코더(CADEC)의 제어와 제어 레지스터의 제어 정보에 기초하여 뱅크 그룹(BG0)의 PE0, PE1으로 제공되는 제어 신호들(ICTRL0, ICTRL1, PCTRL0, PCTRL1, RCTRL0, RCTRL1, OCTRL0, OCTRL1) 생성할 수 있다. PE 컨트롤러(PECTRL0)는 명령 및 어드레스 디코더(CADEC)의 제어와 제어 레지스터의 제어 정보에 기초하여 뱅크 그룹(BG1)의 PE2, PE3로 제공되는 제어 신호들을 생성할 수 있다. PE 컨트롤러(PECTRL1)는 명령 및 어드레스 디코더(CADEC)의 제어와 제어 레지스터의 제어 정보에 기초하여 뱅크 그룹들(BG2, BG3)의 PE4~PE7로 제공되는 제어 신호들을 생성할 수 있다. 데이터 입출력 회로(DATAIO)는 데이터 입출력 신호들(DQ)의 데이터를 데이터 버스들(DB0, DB1)로 출력하거나 데이터 버스들(DB0, DB1)의 데이터를 포함하는 데이터 입출력 신호들(DQ)을 출력할 수 있다.
도 11 및 도 12는 도 3의 어드레스 맵핑 테이블들에 따라 PIM 다이 내 데이터가 배치되는 예시들을 도시한다. 도 11 및 도 12에서, 메모리 요청은 메모리 장치(2000)에 대한 쓰기 명령이고, 메모리 요청들이 메모리 요청 큐(1110)로 입력되고, 메모리 요청들의 물리 어드레스(PA)가 최소값(예를 들어, 도 8의 0x000000)부터 최대값(예를 들어, 0xFFFFFF)까지 순차적으로 증가하고, 그리고 뱅크들(BK0~BK15) 각각은 4개의 워드 라인들(WL[0:3])과 4개의 컬럼 선택 라인들(CSL[0:3])을 통해 접근되는 메모리 셀들(MC)을 포함하는 것으로 가정한다. 여기서, 상술한 예시들로 본 발명의 범위가 한정되지 않는다.
스택 식별자(SID0)를 갖는 물리 어드레스(PA)는 어드레스 맵핑 테이블(AMT1)에 의해 메모리 어드레스(MA)로 변환될 수 있다. 어드레스 변환기(1120)는 어드레스 맵핑 테이블(AMT1)을 선택하고 그리고 PHY(1130)는 메모리 어드레스(MA)에 기초하여 채널(CH1)을 통해 PIM 다이(2100)를 접근하고 PIM 다이(2100)의 뱅크들(BK0~BK15) 중 적어도 하나를 활성화할 수 있다. 어드레스 맵핑 테이블(AMT1)에 의하면, 로우 어드레스(Row) 및 컬럼 어드레스(Column)에 해당하는 물리 어드레스(PA)의 비트들은 뱅크 어드레스(BA0~BA3)에 해당하는 물리 어드레스(PA)의 비트들보다 상위 비트들에 해당한다. 도 11을 참조하면, 워드 라인들(WL[0])과 컬럼 선택 라인들(CSL[0])에 의해 선택되는 뱅크들(BK0, BK4, BK8, BK12, BK1, BK5, BK9, BK13, BK2, BK6, BK10, BK14, BK3, BK7, BK11, BK15)의 메모리 셀들(MC)의 순서로 데이터가 배치(혹은 기입)될 수 있다. 그 다음, 워드 라인들(WL[0])과 컬럼 선택 라인들(CSL[1])에 의해 선택되는 뱅크들(BK0, BK4, BK8, BK12, BK1, BK5, BK9, BK13, BK2, BK6, BK10, BK14, BK3, BK7, BK11, BK15)의 메모리 셀들(MC)의 순서로 데이터가 배치될 수 있다. 상술한 과정이 반복되면서, 뱅크들(BK0~BK15) 내 모든 메모리 셀들(MC)에 데이터가 배치될 수 있다.
스택 식별자(SID1)를 갖는 물리 어드레스(PA)는 어드레스 맵핑 테이블(AMT2)에 의해 메모리 어드레스(MA)로 변환될 수 있다. 어드레스 변환기(1120)는 어드레스 맵핑 테이블(AMT2)을 선택하고 그리고 PHY(1130)는 메모리 어드레스(MA)에 기초하여 채널(CH1)을 통해 PIM 다이(2500)를 접근하고 PIM 다이(2500)의 뱅크들(BK0~BK15) 중 적어도 하나 그리고 PIM 다이(2500)의 PE0~PE7 중 적어도 하나를 활성화할 수 있다. 어드레스 맵핑 테이블(AMT2)에 의하면, 뱅크 어드레스(BA0~BA3)에 해당하는 물리 어드레스(PA)의 비트들 중 적어도 하나(도 3의 BA0 또는 BA1 참조)는 컬럼 어드레스(Column)에 해당하는 물리 어드레스(PA)의 비트들보다 상위 비트들에 해당한다. 도 12를 참조하면, 워드 라인(WL[0])과 컬럼 선택 라인(CSL[0])에 의해 선택되는 뱅크(BK0)의 메모리 셀들(MC)에 데이터가 기입되거나 배치될 수 있다. 그 다음, 워드 라인(WL[0])과 컬럼 선택 라인(CSL[1])에 의해 선택되는 뱅크(BK0)의 메모리 셀들(MC)에 데이터가 기입되거나 배치될 수 있다. 상술한 과정이 반복되면서 하나의 워드 라인(WL[0])에 의해 선택되는 뱅크(BK0)의 메모리 셀들(MC)에 데이터가 배치될 수 있다. 워드 라인(WL[0])과 컬럼 선택 라인들(CSL[0:3])에 의해 선택되는 뱅크(BK0)의 메모리 셀들(MC)의 순서로 데이터가 배치되는 것과 유사하게, 워드 라인(WL[0])과 컬럼 선택 라인들(CSL[0:3])에 의해 선택되는 뱅크들(BK4, BK8, BK12, BK2, BK6, BK10, BK14, BK1, BK3, BK5, BK7, BK9, BK11, BK13, BK15)의 메모리 셀들(MC)의 순서로 데이터가 배치될 수 있다. 워드 라인(WL[0])에 의해 선택되는 모든 뱅크들(BK0~BK15)의 메모리 셀들(MC)에 데이터가 배치된 이후에, 유사한 방식으로 워드 라인들(WL[1:3])에 의해 선택되는 모든 뱅크들(BK0~BK15)의 메모리 셀들(MC)에 데이터가 배치될 수 있다. 도 11의 어드레스 맵핑 테이블(AMT1)에 따른 데이터 배치와 달리 도 12의 어드레스 맵핑 테이블(AMT2)에 따른 데이터 배치에 의하면, 하나의 워드 라인(WL[0])에 의해 선택되는 메모리 셀들(MC)에 데이터 배치가 완료된 이후에, 다른 워드 라인들(WL[1:3])에 의해 선택되는 메모리 셀들(MC)에 데이터 배치가 개시될 수 있다.
도 13은 도 12의 데이터 배치에 따라 PE들에 의해 실행되는 연산의 예시를 도시한다. 예를 들어, 벡터 A는 위 뱅크(T_BK)에 해당하는 뱅크들(BK0, BK4, BK8, BK12, BK2, BK6, BK10, BK14)에 배치될 수 있고 백터 B는 아래 뱅크(B_BK)에 해당하는 뱅크들(BK1, BK5, BK9, BK13, BK3, BK7, BK11, BK15)에 배치될 수 있다. PE0~PE7은 위 뱅크(T_BK)에 해당하는 뱅크들(BK0, BK4, BK8, BK12, BK2, BK6, BK10, BK14)에 배치된 벡터 A와 아래 뱅크(B_BK)에 해당하는 뱅크들(BK1, BK5, BK9, BK13, BK3, BK7, BK11, BK15)에 배치된 벡터 B에 대한 덧셈 연산을 실행하여 벡터 C를 생성할 수 있다. 덧셈 연산 대신에 전술한 다른 연산들이 실행될 수도 있다. 벡터 C는 PE0~PE7의 레지스터들(REG)에 저장될 수 있다. 도 13을 참조하면, PE0~PE7 각각은 두 개의 뱅크들에 의해 공유되므로, PE0~PE7이 연산들을 실행하는 측면에서, 어드레스 맵핑 테이블(AMT2)에 따라 하나의 워드 라인에 의해 선택되는 모든 메모리 셀들(MC)에 데이터를 배치하는 방식이 어드레스 맵핑 테이블(AMT1)에 따라 메모리 셀들(MC)에 데이터를 배치하는 방식보다 유리할 수 있다. 예를 들어, 메모리 컨트롤러(1100)는 어드레스 맵핑 테이블(AMT1)을 PIM 다이(2100)로 그리고 어드레스 맵핑 테이블(AMT2)을 PIM 다이(2500)로 분리하여 적용할 수 있다. 따라서, 메모리 컨트롤러(1100)는 프로세서(1200)가 PIM 다이(2500)의 PE0~PE7을 이용한 PIM 연산을 실행하는 경우, 어드레스 맵핑 테이블(AMT2)을 PIM 다이들(2100, 2500)로 공통적으로 적용하지 않고 대신에 어드레스 맵핑 테이블(AMT1)을 PIM 다이(2100)로 그리고 어드레스 맵핑 테이블(AMT2)을 PIM 다이(2500)로 분리하여 적용함으로써, PE0~PE7이 활성화되지 않는 PIM 다이(2100)를 이용하여 실행되는 프로세서(1200)의 노멀(normal) 동작의 성능 저하를 방지할 수 있다. 노멀 동작은 PE0~PE7의 실행 없이 읽기 명령 또는 쓰기 명령에 따른 PIM 다이(2100)의 데이터 입출력 동작들을 포함할 수 있다. 또한, 메모리 컨트롤러(1100)가 서로 상이한 어드레스 맵핑 테이블들(AMT1, AMT2)을 지원하므로, PIM 다이(2500)의 PE0~PE7을 이용한 PIM 연산을 실행하는 경우에 프로세서(1200)에 의해 실행되는 프로그램이 데이터를 재배치해야 하는 오버헤드(Overhead)가 경감될 수 있고 노멀 동작에서는 뱅크 레벨의 병렬화가 활용될 수 있다.
도 14는 도 5의 프로세서가 메모리 컨트롤러를 접근하고 메모리 컨트롤러가 메모리 장치를 접근하는 예시를 도시한다. 예를 들어, 프로세서(1200)는 메모리 맵 입출력(Memory Mapped I/O; MMIO) 방식으로 메모리 컨트롤러(1100)를 접근할 수 있다. 시스템 어드레스 공간(영역)은 메모리 컨트롤러(1100)로 할당된 공간을 포함할 수 있다. 도시되진 않았으나, 시스템 어드레스 공간은 시스템 온 칩(1000) 내 다른 구성 요소들(예를 들어, 온-칩 메모리(1300), IP(Intellectual Property) 블록들, 컨트롤러들 등)로 각각 할당된 공간들을 더 포함할 수 있다. 프로세서(1200)는 동일한 시스템 어드레스 공간을 이용하여 메모리 컨트롤러(1100)와 시스템 온 칩(1000) 내 다른 구성요소들을 접근하고 제어할 수 있다. 프로세서(1200)는 시스템 어드레스 공간 중 메모리 컨트롤러(1100)로 할당된 공간을 접근하고 쓰기 명령어를 이용하여 메모리 컨트롤러(1100)에 할당된 공간에 값을 쓸 수 있다. 메모리 컨트롤러(1100)는 이 값에 응답할 수 있고 그리고 예를 들어 프로세서(1200)의 메모리 요청을 수신할 수 있다. 메모리 컨트롤러(1100)는 시스템 어드레스 공간 중 메모리 컨트롤러(1100)로 할당된 공간 외의 공간에 쓰여진 값은 무시할 수 있다.
시스템 어드레스 공간 중 메모리 컨트롤러(1100)로 할당된 공간은 물리 어드레스 공간이거나, 물리 어드레스 공간에 대응하거나, 또는 물리 어드레스 공간으로 맵핑될 수 있다. 물리 어드레스 공간은 메모리 요청의 물리 어드레스(PA)의 범위에 해당할 수 있다. 물리 어드레스 공간은 제어 레지스터(1141)로 할당된 공간과 메모리 장치(2000)로 할당된 공간을 포함할 수 있다. 시스템 어드레스 공간 중 메모리 컨트롤러(1100)로 할당된 공간은 물리 어드레스 공간 중 제어 레지스터(1141)로 할당된 공간에 대응하는 공간을 포함할 수 있으며, 프로세서(1200)는 이 공간을 접근함으로써 제어 레지스터(1141)의 값(정보)을 변경할 수 있다. 유사하게, 시스템 어드레스 공간 중 메모리 컨트롤러(1100)로 할당된 공간은 물리 어드레스 공간 중 메모리 장치(2000)로 할당된 공간에 대응하는 공간을 포함할 수 있으며, 프로세서(1200)는 이 공간을 접근함으로써 메모리 장치(2000)로 접근할 수 있다.
메모리 컨트롤러(1100)도 MMIO 방식으로 메모리 장치(2000)를 접근할 수 있다. 물리 어드레스 공간은 메모리 장치(2000)로 할당된 공간을 포함할 수 있다. 메모리 컨트롤러(1100)는 물리 어드레스 공간 중 메모리 장치(2000)로 할당된 공간을 접근하고 물리 어드레스 공간 중 메모리 장치(2000)로 할당된 공간의 물리 어드레스(PA)를 메모리 어드레스(MA)로 변환할 수 있다.
물리 어드레스 공간 중 메모리 장치(2000)로 할당된 공간은 메모리 어드레스 공간이거나, 메모리 어드레스 공간에 대응하거나, 또는 메모리 어드레스 공간으로 맵핑될 수 있다. 메모리 어드레스 공간은 메모리 어드레스(MA)의 범위에 해당할 수 있다. 메모리 어드레스 공간은 PE 컨트롤러들(PECTRL0, PECTRL1)의 제어 레지스터들로 할당된 공간과 메모리 셀들로 할당된 공간을 포함할 수 있다. 물리 어드레스 공간 중 메모리 장치(2000)로 할당된 공간은 메모리 어드레스 공간 중 PE 컨트롤러들(PECTRL0, PECTRL1)의 제어 레지스터들로 할당된 공간에 대응하는 공간을 포함할 수 있으며, 메모리 컨트롤러(1100)는 이 공간을 접근함으로써 PE 컨트롤러들(PECTRL0, PECTRL1)의 제어 레지스터들의 값(정보)를 변경할 수 있다. 유사하게, 물리 어드레스 공간 중 메모리 장치(2000)로 할당된 공간은 메모리 어드레스 공간 중 메모리 셀들로 할당된 공간에 대응하는 공간을 포함할 수 있으며, 메모리 컨트롤러(1100)는 이 공간을 접근함으로써 메모리 셀들로 접근할 수 있다. 메모리 장치(2000)의 PIM 다이들(2100~2800) 각각의 뱅크들(BK0~BK15) 각각의 메모리 셀들 그리고 메모리 장치(2000)의 PIM 다이들(2100~2800) 각각의 PE 컨트롤러들(PECTRL0, PECTRL1)의 제어 레지스터들은, 메모리 장치(2000)의 PIM 다이들(2100~2800) 각각에 관한 메모리 어드레스에 모두 맵핑될 수 있다.
도 15는 본 발명의 또 다른 실시 예에 따른 전자 장치를 예시적으로 도시한다. 전자 장치(100c)는 시스템 온 칩(1000), 메모리 장치들(2000_1~2000_4), 인터포저(3000), 및 패키지 기판(4000)을 포함할 수 있다. 메모리 장치들(2000_1~2000_4) 각각은 전술한 메모리 장치(2000)에 해당할 수 있고 메모리 장치들(2000_1~2000_4)의 개수는 도 15에 도시된 것으로 한정되지 않는다. 인터포저(3000)는 시스템 온 칩(1000)이 메모리 장치들(2000_1~2000_4)을 접근하기 위한 다수의 채널들의 경로들을 포함할 수 있다. 예를 들어, 인터포저(3000)는 패키지 기판 상(4000)에 적층될 수 있다. 다른 예를 들어, 인터포저(3000)없이 패키지 기판 상(4000)에 시스템 온 칩(1000)과 메모리 장치들(2000_1~2000_4)이 적층될 수 있다.
Claims (20)
- 채널을 공유하는 제 1 및 제 2 메모리 다이들을 포함하는 메모리 장치에 관한 메모리 요청을 저장하도록 구성되는 메모리 요청 큐;
상기 메모리 요청의 물리 어드레스의 비트에 기초하여 상기 제 1 및 제 2 메모리 다이들에 대한 제 1 및 제 2 어드레스 맵핑 테이블들 중 하나를 선택하고, 그리고 상기 선택된 어드레스 맵핑 테이블에 기초하여 상기 물리 어드레스를 메모리 어드레스로 변환하도록 구성되는 어드레스 변환기; 및
상기 메모리 어드레스를 상기 채널을 통해 상기 메모리 장치로 전송하는 물리 계층을 포함하는 메모리 컨트롤러. - 제 1 항에 있어서,
상기 메모리 요청의 상기 물리 어드레스의 상기 비트는 상기 제 1 및 제 2 메모리 다이들을 식별하는 스택 식별자에 대응하는 메모리 컨트롤러. - 제 2 항에 있어서,
상기 메모리 요청의 상기 물리 어드레스의 상기 비트는 최상위 비트인 메모리 컨트롤러. - 제 1 항에 있어서,
상기 제 1 및 제 2 메모리 다이들 각각은 상기 메모리 어드레스의 뱅크 어드레스에 의해 식별되는 뱅크들을 포함하고, 그리고
상기 제 1 어드레스 맵핑 테이블에 의해 상기 메모리 어드레스의 상기 뱅크 어드레스로 변환되는 상기 물리 어드레스의 비트들의 위치들은, 상기 제 2 어드레스 맵핑 테이블에 의해 상기 메모리 어드레스의 상기 뱅크 어드레스로 변환되는 상기 물리 어드레스의 비트들의 위치들과 다른 메모리 컨트롤러. - 제 4 항에 있어서,
상기 메모리 어드레스는 상기 뱅크 어드레스, 그리고 상기 뱅크들 각각의 메모리 셀들을 식별하는 로우 어드레스와 컬럼 어드레스를 포함하고, 그리고
상기 제 2 어드레스 맵핑 테이블에 의해 상기 메모리 어드레스의 상기 뱅크 어드레스로 변환되는 상기 물리 어드레스의 상기 비트들 중 적어도 하나는, 상기 제 2 어드레스 맵핑 테이블에 의해 상기 메모리 어드레스의 상기 컬럼 어드레스로 변환되는 상기 물리 어드레스의 비트들의 상위 비트에 해당하는 메모리 컨트롤러. - 제 1 항에 있어서,
상기 어드레스 변환기는 상기 제 1 어드레스 맵핑 테이블을 선택하고, 그리고
상기 물리 계층은 상기 메모리 어드레스에 기초하여 상기 채널을 통해 상기 제 1 메모리 다이를 접근하고 그리고 상기 제 1 메모리 다이의 뱅크들 중 적어도 하나를 활성화하는 메모리 컨트롤러. - 제 1 항에 있어서,
상기 어드레스 변환기는 상기 제 2 어드레스 맵핑 테이블을 선택하고, 그리고
상기 물리 계층은 상기 메모리 어드레스에 기초하여 상기 채널을 통해 상기 제 2 메모리 다이를 접근하고 그리고 상기 제 2 메모리 다이의 뱅크들 중 적어도 하나 그리고 상기 제 2 메모리 다이의 PE(Processing Element)들 중 적어도 하나를 활성화하는 메모리 컨트롤러. - 제 1 항에 있어서,
상기 어드레스 변환기는:
상기 메모리 요청의 상기 물리 어드레스의 상기 비트를 저장하도록 구성되는 어드레스 범위 레지스터;
상기 제 1 어드레스 맵핑 테이블에 기초하여 상기 물리 어드레스를 상기 메모리 어드레스로 변환하도록 구성되는 제 1 어드레스 변환 회로;
상기 제 2 어드레스 맵핑 테이블에 기초하여 상기 물리 어드레스를 상기 메모리 어드레스로 변환하도록 구성되는 제 2 어드레스 변환 회로; 및
상기 어드레스 범위 레지스터에 저장된 상기 비트의 값에 따라 상기 제 1 및 제 2 어드레스 변환 회로들 중 하나를 선택하도록 구성되는 맵핑 선택 회로를 포함하는 메모리 컨트롤러. - 제 1 항에 있어서,
상기 메모리 요청에 대한 메모리 명령 및 상기 메모리 어드레스를 저장하도록 구성되는 메모리 명령 큐;
상기 제 1 및 제 2 메모리 다이들 각각의 뱅크들의 상태 정보들을 저장하도록 구성되는 뱅크 상태 레지스터;
상기 뱅크들의 상기 상태 정보들에 기초하여 상기 메모리 명령 큐에 저장된 상기 메모리 명령 및 상기 메모리 어드레스가 처리되는 순서를 조정하도록 구성되는 명령 스케줄러;
상기 순서에 기초하여 상기 메모리 명령 및 상기 메모리 어드레스를 상기 물리 계층으로 출력하도록 구성되는 명령 시퀀서;
시스템 버스를 통해 상기 메모리 요청을 수신하고 상기 메모리 요청을 상기 메모리 요청 큐로 제공하도록 구성되는 시스템 버스 인터페이스 회로;
상기 메모리 장치로부터 전송되는 읽기 데이터를 저장하도록 구성되는 읽기 버퍼; 및
상기 메모리 장치로 전송될 쓰기 데이터를 저장하도록 구성되는 쓰기 버퍼를 더 포함하는 메모리 컨트롤러. - 메모리 요청을 생성하도록 구성되는 프로세서; 및
메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는:
상기 메모리 요청의 물리 어드레스의 비트에 기초하여 채널을 공유하는 메모리 장치의 제 1 및 제 2 메모리 다이들에 대한 제 1 및 제 2 어드레스 맵핑 테이블들 중 하나를 선택하고;
상기 선택된 어드레스 맵핑 테이블에 기초하여 상기 물리 어드레스를 상기 메모리 장치의 메모리 어드레스로 변환하고; 그리고
상기 메모리 어드레스에 기초하여 상기 채널을 통해 상기 제 1 및 제 2 메모리 다이들 중 하나를 접근하도록 구성되는 시스템 온 칩. - 제 10 항에 있어서,
상기 제 1 및 제 2 메모리 다이들 각각은 메모리 셀들을 각각 포함하는 뱅크들을 포함하고, 그리고
상기 메모리 어드레스는 상기 제 1 및 제 2 메모리 다이들을 식별하는 스택 식별자, 상기 뱅크들을 식별하는 뱅크 어드레스, 그리고 상기 뱅크들 각각의 상기 메모리 셀들을 식별하는 로우 어드레스와 컬럼 어드레스를 포함하는 시스템 온 칩. - 제 11 항에 있어서,
상기 메모리 컨트롤러는:
상기 비트인 상기 물리 어드레스의 제 1 비트를 상기 스택 식별자로 변환하고,
상기 물리 어드레스의 제 2 비트들을 상기 뱅크 어드레스로 변환하고,
상기 물리 어드레스의 제 3 비트들을 상기 로우 어드레스로 변환하고, 그리고
상기 물리 어드레스의 제 4 비트들을 상기 컬럼 어드레스로 변환하도록 더 구성되는 시스템 온 칩. - 제 12 항에 있어서,
상기 제 1 비트는 상기 물리 어드레스의 최상위 비트인 시스템 온 칩. - 제 12 항에 있어서,
상기 물리 어드레스 상에서 상기 제 2 비트들의 위치들은 상기 제 1 및 제 2 어드레스 맵핑 테이블들에 따라 변경되는 시스템 온 칩. - 제 12 항에 있어서,
상기 메모리 컨트롤러가 상기 제 1 어드레스 맵핑 테이블을 선택하면, 상기 제 2 비트들은 상기 제 4 비트들의 하위 비트들에 해당하고, 그리고
상기 메모리 컨트롤러가 상기 제 2 어드레스 맵핑 테이블을 선택하면, 상기 제 2 비트들 중 적어도 하나는 상기 제 4 비트들의 상위 비트에 해당하는 시스템 온 칩. - 제 12 항에 있어서,
상기 제 1 내지 제 4 비트들에 대한 상기 물리 어드레스의 하위 비트들은 캐시 라인에 해당하는 시스템 온 칩. - 제 10 항에 있어서,
상기 메모리 컨트롤러는 어드레스 변환기를 포함하고, 그리고
상기 어드레스 변환기는:
상기 메모리 요청의 상기 물리 어드레스의 상기 비트를 저장하도록 구성되는 어드레스 범위 레지스터;
상기 제 1 어드레스 맵핑 테이블에 기초하여 상기 물리 어드레스를 상기 메모리 어드레스로 변환하도록 구성되는 제 1 어드레스 변환 회로;
상기 제 2 어드레스 맵핑 테이블에 기초하여 상기 물리 어드레스를 상기 메모리 어드레스로 변환하도록 구성되는 제 2 어드레스 변환 회로; 및
상기 어드레스 범위 레지스터에 저장된 상기 비트의 값에 따라 상기 제 1 및 제 2 어드레스 변환 회로들 중 하나를 선택하도록 구성되는 맵핑 선택 회로를 포함하는 시스템 온 칩. - 채널을 공유하는 제 1 및 제 2 메모리 다이들을 포함하는 메모리 장치; 및
시스템 온 칩을 포함하되, 상기 시스템 온 칩은:
메모리 요청을 생성하도록 구성되는 프로세서; 및
상기 메모리 요청의 물리 어드레스의 비트에 기초하여 상기 제 1 및 제 2 메모리 다이들에 대한 제 1 및 제 2 어드레스 맵핑 테이블들 중 하나를 선택하고, 상기 선택된 어드레스 맵핑 테이블에 기초하여 상기 물리 어드레스를 상기 메모리 장치의 메모리 어드레스로 변환하고, 그리고 상기 메모리 어드레스에 기초하여 상기 채널을 통해 상기 제 1 및 제 2 메모리 다이들 중 하나를 접근하도록 구성되는 메모리 컨트롤러를 포함하는 전자 장치. - 제 18 항에 있어서,
상기 제 1 메모리 다이는 상기 제 2 메모리 다이와 동일하게 구현되고, 그리고
상기 제 1 및 제 2 메모리 다이들 각각은 복수의 뱅크들과 복수의 PE(Processing Element)들을 포함하는 전자 장치. - 제 18 항에 있어서,
상기 제 1 메모리 다이는 상기 제 2 메모리 다이와 상이하게 구현되고, 그리고
상기 제 2 메모리 다이는 복수의 뱅크들과 복수의 PE들을 포함하고 그리고 상기 제 1 메모리 다이는 복수의 뱅크들을 포함하는 전자 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200005882A KR20210092460A (ko) | 2020-01-16 | 2020-01-16 | 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치 |
US16/995,935 US11474950B2 (en) | 2020-01-16 | 2020-08-18 | Memory controller including plurality of address mapping tables, system on chip, and electronic device |
CN202011121207.6A CN113138956A (zh) | 2020-01-16 | 2020-10-19 | 包括地址映射表的存储器控制器、片上系统和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200005882A KR20210092460A (ko) | 2020-01-16 | 2020-01-16 | 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210092460A true KR20210092460A (ko) | 2021-07-26 |
Family
ID=76809725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200005882A KR20210092460A (ko) | 2020-01-16 | 2020-01-16 | 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11474950B2 (ko) |
KR (1) | KR20210092460A (ko) |
CN (1) | CN113138956A (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210093521A (ko) * | 2020-01-20 | 2021-07-28 | 삼성전자주식회사 | 고대역폭 메모리 및 이를 포함하는 시스템 |
US11960438B2 (en) * | 2020-09-08 | 2024-04-16 | Rambus Inc. | Methods and circuits for streaming data to processing elements in stacked processor-plus-memory architecture |
US12020771B2 (en) | 2021-08-13 | 2024-06-25 | Micron Technology, Inc. | Die location detection for grouped memory dies |
CN114546495B (zh) * | 2021-09-03 | 2022-12-20 | 北京睿芯众核科技有限公司 | 适用于risc-v架构处理器的地址属性检查的方法及系统 |
US11972147B2 (en) * | 2022-04-19 | 2024-04-30 | Micron Technology, Inc. | Memory die stack chip id-based command structure |
CN116737617B (zh) * | 2023-08-11 | 2023-12-29 | 上海芯高峰微电子有限公司 | 一种访问控制器 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6505269B1 (en) | 2000-05-16 | 2003-01-07 | Cisco Technology, Inc. | Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system |
JP2005209058A (ja) | 2004-01-26 | 2005-08-04 | Megawin Technology Co Ltd | フラッシュメモリの読み書きの制御方法 |
US8135936B2 (en) | 2009-12-23 | 2012-03-13 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
JP4992114B2 (ja) | 2008-02-19 | 2012-08-08 | エヌイーシーコンピュータテクノ株式会社 | 主記憶装置及び主記憶装置のアドレス制御方法 |
JP2010211618A (ja) | 2009-03-11 | 2010-09-24 | Toshiba Corp | 半導体記憶装置 |
US9934143B2 (en) * | 2013-09-26 | 2018-04-03 | Intel Corporation | Mapping a physical address differently to different memory devices in a group |
US10409500B2 (en) | 2017-09-08 | 2019-09-10 | Intel Corporation | Multiple indirection granularities for mass storage devices |
US10338837B1 (en) | 2018-04-05 | 2019-07-02 | Qualcomm Incorporated | Dynamic mapping of applications on NVRAM/DRAM hybrid memory |
US11164847B2 (en) * | 2019-12-03 | 2021-11-02 | Intel Corporation | Methods and apparatus for managing thermal behavior in multichip packages |
US11175984B1 (en) * | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
-
2020
- 2020-01-16 KR KR1020200005882A patent/KR20210092460A/ko unknown
- 2020-08-18 US US16/995,935 patent/US11474950B2/en active Active
- 2020-10-19 CN CN202011121207.6A patent/CN113138956A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210224195A1 (en) | 2021-07-22 |
CN113138956A (zh) | 2021-07-20 |
US11474950B2 (en) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20210092460A (ko) | 복수의 어드레스 맵핑 테이블들을 저장하는 메모리 컨트롤러, 시스템 온 칩, 및 전자 장치 | |
US11276459B2 (en) | Memory die including local processor and global processor, memory device, and electronic device | |
US10768824B2 (en) | Stacked memory device and a memory chip including the same | |
KR102453542B1 (ko) | 스킵 연산 모드를 지원하는 메모리 장치 및 그 동작 방법 | |
US12087388B2 (en) | Method of performing internal processing operations with pre-defined protocol interface of memory device | |
US20180004659A1 (en) | Cribbing cache implementing highly compressible data indication | |
US20080046666A1 (en) | Systems and methods for program directed memory access patterns | |
US20210157751A1 (en) | Memory device including processing circuit, and electronic device including system on chip and memory device | |
JP5599969B2 (ja) | マルチポートメモリ、および該マルチポートメモリを備えるコンピュータシステム | |
KR20220127601A (ko) | 인터페이스를 이용하여 내부 프로세싱을 수행하는 메모리 시스템, 메모리 장치 및 메모리 장치의 동작 방법 | |
US10020036B2 (en) | Address bit remapping scheme to reduce access granularity of DRAM accesses | |
US9183057B2 (en) | Systems and methods for accessing memory | |
JP2011165298A (ja) | 半導体記憶装置及びこれを備えた情報処理システム | |
US11281397B2 (en) | Stacked memory device performing function-in-memory (FIM) operation and method of operating the same | |
CN116737617B (zh) | 一种访问控制器 | |
CN107369473B (zh) | 存储系统及其操作方法 | |
WO2021139733A1 (zh) | 一种对内存进行分配的方法、设备及计算机可读存储介质 | |
KR20230043619A (ko) | 내부 프로세싱 동작에 대한 타이밍 파라미터들 및 전력 소모를 줄이는 메모리 장치 및 이를 구현하는 방법 | |
US12100468B2 (en) | Standalone mode | |
JPH10260952A (ja) | 半導体集積回路装置およびそのデータ処理方法 | |
KR20230106480A (ko) | 메모리 장치 | |
CN118525335A (zh) | 用于恢复细粒度dram中的常规访问性能的方法和装置 | |
KR20230115012A (ko) | 메모리 장치 |