KR20190097930A - 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 - Google Patents
채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR20190097930A KR20190097930A KR1020180017953A KR20180017953A KR20190097930A KR 20190097930 A KR20190097930 A KR 20190097930A KR 1020180017953 A KR1020180017953 A KR 1020180017953A KR 20180017953 A KR20180017953 A KR 20180017953A KR 20190097930 A KR20190097930 A KR 20190097930A
- Authority
- KR
- South Korea
- Prior art keywords
- channel
- memory
- storage space
- channels
- controller
- Prior art date
Links
- 238000012544 monitoring process Methods 0.000 claims abstract description 41
- 238000005192 partition Methods 0.000 claims description 32
- 238000000034 method Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 21
- 239000000872 buffer Substances 0.000 description 17
- 238000013528 artificial neural network Methods 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000007423 decrease Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- CZMRCDWAGMRECN-UGDNZRGBSA-N Sucrose Chemical compound O[C@H]1[C@H](O)[C@@H](CO)O[C@@]1(CO)O[C@@H]1[C@H](O)[C@@H](O)[C@H](O)[C@@H](CO)O1 CZMRCDWAGMRECN-UGDNZRGBSA-N 0.000 description 1
- 229930006000 Sucrose Natural products 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 235000013681 dietary sucrose Nutrition 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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/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/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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/601—Reconfiguration of cache memory
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System (AREA)
- Static Random-Access Memory (AREA)
Abstract
채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템이 개시된다. 본 개시의 기술적 사상의 일측면에 따른 메모리 장치는, 제1 셀 어레이를 포함하고 제1 경로를 통해 메모리 컨트롤러와 통신하는 제1 채널과, 제2 셀 어레이를 포함하고 제2 경로를 통해 상기 메모리 컨트롤러와 통신하는 제2 채널 및 상기 제1 및 제2 채널들의 메모리 사용량을 모니터링하고, 상기 제1 셀 어레이의 메모리 사용량이 임계값을 초과한 경우에 상기 제2 셀 어레이의 일부의 저장 공간을 상기 제1 채널에 추가로 할당하는 할당 제어 회로를 구비하고, 상기 제1 채널에 할당된 상기 제2 셀 어레이의 저장 공간에 대한 억세스는 상기 제1 경로를 통해 수행되는 것을 특징으로 한다.
Description
본 개시의 기술적 사상은 메모리 장치에 관한 것으로서, 상세하게는 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템에 관한 것이다.
고성능 전자 시스템에 널리 사용되고 있는 반도체 메모리 장치(semiconductor memory device)는 그 용량 및 속도가 증가하고 있다. 메모리 장치의 일 예로서 DRAM(Dynamic Random Access Memory)은 휘발성 메모리(volatile-memory)로서, 커패시터에 저장되어 있는 전하(charge)에 의해 데이터를 판정하는 메모리이다.
메모리 장치는 다양한 용도로 이용될 수 있으며, 일 예로서 다양한 종류의 연산 처리에 이용되는 방대한 데이터를 저장하기 위해 이용될 수 있다. 이 때, 메모리 장치는 다수의 채널들을 포함하고 각각의 채널에 저장 공간이 할당될 수 있는데, 메모리 장치의 저장 공간이 효율적으로 이용될 필요가 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 다수의 채널들의 메모리 용량을 조절함으로써 메모리 공간을 효율적으로 사용할 수 있는 메모리 장치 및 이를 포함하는 메모리 시스템을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 장치는, 제1 셀 어레이를 포함하고 제1 경로를 통해 메모리 컨트롤러와 통신하는 제1 채널과, 제2 셀 어레이를 포함하고 제2 경로를 통해 상기 메모리 컨트롤러와 통신하는 제2 채널 및 상기 제1 및 제2 채널들의 메모리 사용량을 모니터링하고, 상기 제1 셀 어레이의 메모리 사용량이 임계값을 초과한 경우에 상기 제2 셀 어레이의 일부의 저장 공간을 상기 제1 채널에 추가로 할당하는 할당 제어 회로를 구비하고, 상기 제1 채널에 할당된 상기 제2 셀 어레이의 저장 공간에 대한 억세스는 상기 제1 경로를 통해 수행되는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 일측면에 따른 메모리 시스템은, 메모리 동작을 제어하는 메모리 컨트롤러 및 각각 독립적인 인터페이스를 통해 상기 메모리 컨트롤러와 데이터 통신을 수행하는 제1 내지 제N 채널들(단, N은 2 이상의 정수)을 포함하고, 상기 채널들 각각은 셀 어레이를 포함하는 메모리 장치를 구비하며, 상기 메모리 장치는, 상기 다수 개의 채널들의 메모리 사용량을 모니터링한 결과를 상기 메모리 컨트롤러로 제공하고, 상기 메모리 컨트롤러의 제어에 기반하여 다수 개의 채널들 각각에 저장 공간을 할당하며, 상기 제1 채널의 메모리 사용량에 따라 적어도 하나의 다른 채널의 저장 공간을 상기 제1 채널에 추가로 할당하는 할당 제어 회로를 포함하는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 일측면에 따른 고 대역폭 메모리(high bandwidth memory, HBM) 장치는, 다수의 채널들을 구성하고, 각각의 채널은 셀 어레이를 포함하는 하나 이상의 코어 다이들 및 상기 다수의 채널들과 외부의 컨트롤러 사이의 인터페이스를 제공하며, 상기 다수의 채널들에 대응하는 다수의 경로들을 통해 상기 컨트롤러와 통신하는 버퍼 다이를 구비하고, 상기 버퍼 다이는, 카운팅 동작에 기반하여 상기 다수의 채널들 중 제1 채널의 메모리 사용량을 모니터링하는 억세스 모니터 및 상기 컨트롤러로부터의 어드레스를 상기 코어 다이들의 억세스를 위한 내부 어드레스로 변환하는 어드레스 변환 테이블을 포함하고, 상기 제1 채널의 메모리 사용량이 임계값을 초과한 경우에 적어도 하나의 다른 채널의 저장 공간이 상기 제1 채널에 추가로 할당되도록 상기 어드레스 변환 테이블을 관리하는 파티션 컨트롤러를 포함하는 것을 특징으로 한다.
본 발명의 기술적 사상의 메모리 장치 및 이를 포함하는 메모리 시스템에 따르면, 다수의 채널들의 메모리 사용량을 모니터링하고, 이를 기반으로 채널들의 메모리 용량을 동적으로 조절할 수 있으므로, 메모리 장치의 저장 공간을 효율적으로 이용할 수 있는 효과가 있다.
도 1은 본 발명의 예시적인 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 도 1의 할당 제어 회로의 일 구현 예를 나타내는 블록도이다.
도 3은 채널에 대한 저장 공간의 할당 예를 나타내는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 5 내지 도 7은 억세스 모니터의 일 구현 예 및 동작 예를 나타내는 블록도이다.
도 8 및 도 9는 파티션 컨트롤러의 일 구현 예 및 동작 예를 나타내는 블록도이다.
도 10 및 도 11은 본 발명의 예시적인 실시예들에 따른 메모리 장치가 HBM에 적용되는 예를 나타내는 도면이다.
도 12는 본 발명의 실시예가 적용된 메모리 모듈을 포함하는 메모리 시스템을 나타내는 도면이다.
도 13a,b,c은 본 발명의 변형 가능한 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 14는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 15는 본 발명의 변형 가능한 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 16은 본 발명의 변형 가능한 실시예에 따른 메모리 장치를 나타내는 블록도이다.
도 2는 도 1의 할당 제어 회로의 일 구현 예를 나타내는 블록도이다.
도 3은 채널에 대한 저장 공간의 할당 예를 나타내는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 5 내지 도 7은 억세스 모니터의 일 구현 예 및 동작 예를 나타내는 블록도이다.
도 8 및 도 9는 파티션 컨트롤러의 일 구현 예 및 동작 예를 나타내는 블록도이다.
도 10 및 도 11은 본 발명의 예시적인 실시예들에 따른 메모리 장치가 HBM에 적용되는 예를 나타내는 도면이다.
도 12는 본 발명의 실시예가 적용된 메모리 모듈을 포함하는 메모리 시스템을 나타내는 도면이다.
도 13a,b,c은 본 발명의 변형 가능한 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 14는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 15는 본 발명의 변형 가능한 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 16은 본 발명의 변형 가능한 실시예에 따른 메모리 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 발명의 예시적인 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함할 수 있다. 메모리 장치(200)는 다수 개의 채널들(예컨대, N 개의 채널들(CH1 ~ CHN))을 포함할 수 있으며, 다수 개의 채널들(CH1 ~ CHN) 각각은 저장 공간을 갖는 셀 어레이(Cell)를 포함할 수 있다. 또한, 메모리 컨트롤러(100)와 메모리 장치(200) 사이에서 다수 개의 채널들(CH1 ~ CHN)에 대해 독립적인 인터페이스를 통해 통신이 수행될 수 있다. 즉, 각각의 채널은 서로 독립된 인터페이스를 포함함에 따라, 각각의 채널은 개별적인 메모리 장치와 동일하게 동작될 수 있다. 메모리 컨트롤러(100)는 통해 각종 신호를 메모리 장치(200)로 제공하여 기록 및 독출 등의 메모리 동작을 제어할 수 있다. 예컨대, 메모리 컨트롤러(100)는 커맨드 및 어드레스를 메모리 장치(200)로 제공하여 채널들(CH1 ~ CHN)의 셀 어레이(Cell)의 데이터를 억세스할 수 있다.
메모리 시스템(10)은 데이터 처리 시스템 또는 이에 포함되는 구성일 수 있다. 데이터 처리 시스템은 PC(personal computer), 데이터 서버, 클라우드 시스템, 인공 지능 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치 등 다양한 종류의 시스템일 수 있다. 또는 데이터 처리 시스템은 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), 디지털 비디오 카메라, 오디오 장치, PMP(portable multimediaplayer), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등의 다양한 종류의 휴대용 전자 기기일 수 있다.
메모리 컨트롤러(100)는 호스트(HOST)로부터의 요청에 따라 메모리 장치(200)를 억세스할 수 있다. 메모리 컨트롤러(100)는 다양한 프로토콜을 사용하여 호스트(HOST)와 통신할 수 있으며, 예컨대 메모리 컨트롤러(100)는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA) 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 호스트(HOST)와 통신할 수 있다.
메모리 장치(200)는 다수 개의 채널들(CH1 ~ CHN)에 대한 저장 공간을 할당하고, 다수 개의 채널들(CH1 ~ CHN) 각각의 메모리 용량을 조절할 수 있는 할당 제어 회로(220)를 포함할 수 있다. 일 예로서, 다수 개의 채널들(CH1 ~ CHN)의 셀 어레이의 저장 공간은 서로 동일한 크기를 갖거나 유사한 크기를 가질 수 있다. 일 예로서, 할당 제어 회로(220)는 다수 개의 채널들(CH1 ~ CHN)에 할당된 저장 공간의 어드레스 범위를 설정함으로써 각각의 채널의 메모리 용량을 조절할 수 있다.
한편, 메모리 장치(200)는 DDR SDRAM (Double Data Rate Synchronous Dynamic Ramdom Access Memory), LPDDR (Low Power Double Data Rate) SDRAM, GDDR (Graphics Double Data Rate) SDRAM, RDRAM (Rambus Dynamic Ramdom Access Memory) 등과 같은 동적 랜덤 억세스 메모리(Dynamic Ramdom Access Memory, DRAM)일 수 있다. 그러나, 본 발명의 실시예들은 이에 국한될 필요가 없으며, 일 예로서 메모리 장치(200)는 플래시(flash) 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등의 불휘발성 메모리로 구현되어도 무방하다.
메모리 컨트롤러(100)와 메모리 장치(200)가 채널 별로 서로 독립적인 인터페이스를 통해 데이터 통신을 수행함에 따라, 메모리 컨트롤러(100)와 메모리 장치(200) 사이에서 N 개의 통신 경로들(PATH 1 ~ PATH N)이 형성될 수 있다. 또한, 메모리 컨트롤러(100)는 호스트(HOST)로부터의 요청에 따라 다수 개의 채널들(CH1 ~ CHN) 중 어느 하나의 채널을 할당하고, 할당된 채널에 데이터를 저장할 수 있다. 일 예로서, 호스트(HOST)에서 어플리케이션(Application)이 실행되어 데이터 억세스 요청이 제공됨에 따라, 다수 개의 채널들(CH1 ~ CHN) 중 하나의 채널이 할당되고, 상기 어플리케이션 실행 과정에서 상기 할당된 채널에 데이터가 독출되거나 저장될 수 있다. 또한, 나머지 채널들은 다른 작업을 위해 채널 인터리빙을 통해 데이터가 억세스될 수 있다.
만약, 어플리케이션 실행에 의해 대용량의 데이터가 저장되는 특성을 갖는 경우, 상기 할당된 채널(예컨대, 제1 채널)의 저장 공간이 부족한 경우가 발생될 수 있다. 이 때, 제1 채널에 저장된 일부의 데이터가 삭제되는 문제가 발생될 수 있다. 또는, 상기 어플리케이션 실행을 위한 저장 공간을 확보하기 위해 두 개 이상의 채널들이 할당된다면, 나머지 채널들의 대역폭(bandwidth)이 감소됨으로써 메모리 시스템(10)의 성능 저하로 이어질 수 있다.
본 발명의 예시적인 실시예에 따르면, 메모리 장치(200)는 채널의 메모리 사용량에 따라 동적으로 채널의 메모리 용량을 조절함으로써, 현재 할당된 채널의 메모리 용량을 증가시킴과 함께, 다른 채널들의 대역폭이 감소되는 것을 방지한다. 일 예로서, 할당 제어 회로(220)는 상기 다수의 채널들(CH1 ~ CHN)의 메모리 사용량을 모니터링하고, 모니터링 결과에 기반하여 채널 별로 메모리 용량을 조절한다. 만약, 모니터링 결과에 따라 제1 채널(CH1)의 메모리 사용량이 큰 경우에는, 상대적으로 메모리 사용량이 작은 다른 하나 이상의 채널의 저장 공간을 제1 채널(CH1)에 추가로 할당할 수 있다. 상기와 같은 동작은, 메모리 장치(200)에 포함되는 전체 저장 공간에 대해 다수의 채널들(CH1 ~ CHN)의 파티션(partition)을 조절하는 것으로 설명될 수 있을 것이다.
일 예로서, 제2 채널(CH2)의 일부의 저장 공간을 제1 채널(CH1)에 추가로 할당한다는 것은, 제2 채널(CH2)에 포함된 셀 어레이의 일부의 저장 공간이 메모리 컨트롤러(100)에 의해 제1 채널(CH1)에 포함되는 저장 공간으로 인식되는 것을 나타낼 수 있다. 또한, 제2 채널(CH2)에 포함된 셀 어레이의 일부의 저장 공간의 데이터는, 제1 채널(CH1)에 대응하는 경로(PATH 1)를 통해 메모리 컨트롤러(100)에 의해 억세스될 수 있다.
할당 제어 회로(220)는 다수의 채널들(CH1 ~ CHN)의 억세스 상태를 판단함으로써 메모리 사용량을 모니터링할 수 있으며, 이에 따른 모니터링 정보(Info_Mor)를 메모리 컨트롤러(100)로 제공할 수 있다. 메모리 컨트롤러(100)는 메모리 장치(200)의 채널들(CH1 ~ CHN)을 관리하기 위한 채널 관리 모듈(110)을 포함할 수 있으며, 채널 관리 모듈(110)은 모니터링 정보(Info_Mor)에 기반하여 채널 별로 메모리 용량을 조절할 지 여부를 판단할 수 있다. 채널 관리 모듈(110)은 판단 결과에 따라 메모리 사용량이 상대적으로 큰 채널에 저장 공간을 추가로 할당하기 위한 할당 정보(Info_Assign)를 생성하여 할당 제어 회로(220)로 제공할 수 있다. 일 예로, 채널 관리 모듈(110)은 제1 채널(CH1)에 저장 공간을 추가로 할당할 다른 채널의 위치를 판단할 수 있으며, 또한 추가로 할당될 저장 공간의 크기를 판단할 수 있다.
할당 제어 회로(220)는 상기 할당 정보(Info_Assign)에 응답하여 저장 공간의 할당을 제어함으로써 채널들(CH1 ~ CHN)의 메모리 용량을 조절할 수 있으며, 메모리 장치(200)는 조절된 메모리 용량에 따라 채널 별로 데이터를 억세스할 수 있다. 만약에, 제2 채널(CH2)의 셀 어레이의 일부의 저장 공간(예컨대, 제1 저장 공간)이 제1 채널(CH1)에 추가로 할당된 경우, 메모리 컨트롤러(100)는 상기 제2 채널(CH2)의 제1 저장 공간을 제1 채널(CH1)로 인식할 수 있으며, 제1 채널(CH1)에 대응하는 경로(PATH 1)를 통해 억세스를 요청할 수 있다. 또한, 이에 응답하여 메모리 장치(200)는 내부 제어 동작을 통해 상기 제2 채널(CH2)의 제1 저장 공간의 데이터를 억세스하고, 상기 제1 채널(CH1)에 대응하는 경로(PATH 1)를 통해 메모리 컨트롤러(100)로 응답을 제공할 수 있다.
상기와 같은 본 발명의 예시적인 실시예에 따르면, 채널 별 메모리 사용량에 따라 채널의 저장 공간의 크기를 동적으로 조절할 수 있으므로, 다른 채널들의 대역폭을 감소함이 없이 대용량의 데이터를 안정적으로 저장할 수 있다.
도 2는 도 1의 할당 제어 회로(220)의 일 구현 예를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 할당 제어 회로(220)는 억세스 모니터(221) 및 저장 공간 할당 회로(222)를 포함할 수 있다. 전술한 바와 같이, 저장 공간 할당 회로(222)는 전체 저장 공간에 대해 다수의 채널들(CH1 ~ CHN)의 파티션을 조절하는 점에서 파티션 컨트롤러로 지칭될 수도 있을 것이다. 이하의 실시예들에서는 저장 공간 할당 회로(222)와 파티션 컨트롤러의 용어가 혼용될 수 있을 것이다.
억세스 모니터(221)는 메모리 장치(200)의 다수의 채널들(CH1 ~ CHN) 각각의 메모리 사용량을 모니터링할 수 있다. 일 예로서, 억세스 모니터(221)는 메모리 컨트롤러(100)로부터 제공되는 어드레스(ADD)를 판단하고, 이에 기반하여 다수의 채널들(CH1 ~ CHN)의 메모리 사용량을 판단할 수 있다. 예컨대, 억세스 모니터(221)는 다수의 채널들(CH1 ~ CHN) 중 상대적으로 메모리 사용량이 큰 채널을 나타내는 모니터링 정보(Info_Mor)를 메모리 컨트롤러(100)로 제공할 수 있다.
메모리 컨트롤러(100)는 모니터링 정보(Info_Mor)를 통해 채널의 메모리 사용량을 판단할 수 있으며, 채널에 저장 공간을 할당하기 위한 정보를 포함하는 할당 정보(Info_Assign)를 생성하여 저장 공간 할당 회로(222)로 제공할 수 있다. 일 예로, 제2 채널(CH2)의 일부의 저장 공간을 제1 채널(CH1)에 추가로 할당하는 경우, 메모리 컨트롤러(100)는 제2 채널(CH2)의 일부의 저장 공간을 나타내는 어드레스 정보를 저장 공간 할당 회로(222)로 제공할 수 있다.
저장 공간 할당 회로(222)는 그 내부의 어드레스 정보를 설정함에 의해 채널 별로 저장 공간을 할당할 수 있으며, 일 예로서 그 내부에 저장된 정보에 기반하여 메모리 컨트롤러(100)로부터 제공된 어드레스(ADD)를 내부 어드레스(ADD_I)로 변환할 수 있다. 메모리 컨트롤러(100)는 상기 제2 채널(CH2)의 일부의 저장 공간을 제1 채널(CH1)의 저장 공간으로 인식할 수 있으며, 메모리 컨트롤러(100)로부터 제1 채널(CH1)에 대응하는 제1 경로(PATH 1)를 통해 데이터 억세스 요청이 제공되면, 저장 공간 할당 회로(222)는 이에 응답하여 상기 제2 채널(CH2)의 일부의 저장 공간을 나타내는 내부 어드레스(ADD_I)를 생성하고, 억세스 결과를 제1 경로(PATH 1)를 통해 메모리 컨트롤러(100)로 제공할 수 있다.
한편, 도 1 및 도 2에 도시된 각종 구성 요소들은 다양한 형태로 구현될 수 있다. 일 예로서, 채널 관리 모듈(110), 억세스 모니터(221) 및 저장 공간 할당 회로(222) 각각은 하드웨어 장치로 구현되거나, 또는 프로세서에 의해 실행됨에 따라 기능이 구현되는 코드들을 포함하는 소프트웨어 형태로 구현될 수 있다. 또는, 채널 관리 모듈(110), 억세스 모니터(221) 및 저장 공간 할당 회로(222) 각각은 하드웨어와 소프트웨어의 조합에 의해 구현될 수도 있을 것이다.
또한, 도 1 및 도 2에 도시된 실시예에서는 할당 제어 회로(220)가 메모리 장치(200)에 구현되는 예가 도시되었으나 본 발명의 실시예는 이에 국한될 필요가 없다. 예컨대, 할당 제어 회로(220)의 적어도 일부의 기능은 메모리 컨트롤러(100) 내에 구비될 수 있으며, 일 예로서 억세스 모니터(221) 및 저장 공간 할당 회로(222) 중 적어도 하나가 메모리 컨트롤러(100)에 구비되는 형태로 메모리 시스템(10)이 구현될 수도 있을 것이다. 또는, 메모리 장치(200)가 채널의 메모리 사용량을 모니터링한 결과에 따라 특정 채널에 추가로 저장 공간을 할당할 지를 판단하고, 각 채널 별 메모리 용량에 관련된 정보를 메모리 컨트롤러(100)로 제공하는 형태로 메모리 시스템(10)이 구현될 수도 있을 것이다.
도 3은 채널에 대한 저장 공간의 할당 예를 나타내는 블록도이다.
도 3을 참조하면, 메모리 시스템(300)은 호스트(310)와 다수의 채널들을 포함하는 메모리 장치(320)를 포함할 수 있다. 도 3에서는 메모리 장치(320)가 8 개의 채널들(CHA ~ CHH)을 포함하는 예가 도시된다. 또한, 도 3에 도시된 억세스 모니터(321)와 파티션 컨트롤러(또는, 저장 공간 할당 회로(322))는 메모리 장치(320)에 포함되는 것으로 정의될 수 있을 것이다.
호스트(310)는 호스트 프로세서(311) 및 메모리 컨트롤러(312)를 포함할 수 있다. 메모리 컨트롤러(312)는 전술한 실시예에 도시된 메모리 컨트롤러일 수 있다. 이에 따라, 메모리 컨트롤러(312)는 채널 관리 모듈(미도시)을 포함할 수 있다.
일 실시예에 따라, 도 3에 도시된 메모리 시스템은 모바일 장치 등 데이터 처리 시스템에 해당할 수 있다. 예컨대, 호스트(310)는 어플리케이션 프로세서(Application Processor)를 포함할 수 있으며, 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 어플리케이션 프로세서는 소정의 표준 버스 규격을 갖는 프로토콜이 적용된 시스템 버스를 포함하고, 또한 시스템 버스에 연결된 다수의 IP(Intellectual Property) 블록들을 포함할 수 있다. 또한, 어플리케이션 프로세서가 모뎀 통신 기능을 수행하는 모뎀 프로세서를 포함할 때, 상기 어플리케이션 프로세서는 ModAP으로 지칭될 수도 있다.
도 3을 참조하면, 메모리 장치(320)의 8 개의 채널들(CHA ~ CHH) 중 제A 채널(CHA)이 할당되어 사용되는 상황이 가정된다. 제A 채널(CHA)이 할당되어 사용되는 도중에 다른 채널들(CHB ~ CHH)은 인터리빙되어 사용될 수 있다. 일 사용 예로서, 특정 어플리케이션을 실행할 때 상기 할당된 제A 채널(CHA)에 데이터가 저장될 수 있으며, 상기 특정 어플리케이션의 연산 처리 과정에서의 중간 결과나 또는 다른 종류의 어플리케이션의 실행에 따른 데이터를 저장하기 위해 다른 채널들(CHB ~ CHH)이 인터리빙되어 사용될 수 있다.
만약, 상기 할당된 제A 채널(CHA)의 저장 공간이 부족한 경우에 다른 채널을 추가로 할당하게 되면 나머지 채널들의 대역폭이 감소하게 되어 성능 저하가 발생될 수 있다. 본 발명의 예시적인 실시예에 따르면, 상기 어플리케이션 실행에 다른 채널을 추가로 할당할 필요 없이, 나머지 채널들의 대역폭을 유지하면서 현재 할당된 채널의 저장 공간을 추가로 할당함으로써 메모리 용량을 증가시킬 수 있다. 예컨대, 전술한 예에서와 같이, 억세스 모니터(321)와 파티션 컨트롤러(322)의 동작에 기반하여 제A 채널(CHA)에 제B 채널(CHB)의 저장 공간을 추가로 할당할 수 있다.
일 동작 예로서, 억세스 모니터(321)는 채널들(CHA ~ CHH)의 메모리 사용량을 모니터링할 수 있다. 일 실시예에 따라, 억세스 모니터(321)는 채널들(CHA ~ CHH)의 억세스 횟수를 모니터링함으로써 채널들(CHA ~ CHH)의 메모리 사용량을 모니터링할 수 있다. 또한, 변형 가능한 실시예로서, 억세스 모니터(321)는 각 채널에서 현재 사용된 저장 공간의 범위(range)를 더 확인할 수 있다. 즉, 데이터의 억세스 횟수가 많은 경우에도, 기존에 사용된 저장 공간에 데이터가 중복되어 저장되는 경우도 발생될 수 있으므로, 억세스 횟수와 사용된 저장 공간의 범위를 판단함에 의해 제A 채널(CHA)에 저장 공간을 추가로 할당할 지 여부가 판단될 수 있다.
억세스 모니터(321)의 모니터링 결과는 메모리 컨트롤러(312)로 제공되고, 메모리 컨트롤러(312)는 이에 기반하여 제A 채널(CHA)에 저장 공간을 추가로 할당할 지를 판단할 수 있다. 또한, 메모리 컨트롤러(312)는 채널들(CHA ~ CHH)의 메모리 용량을 조절하기 위한 할당 정보(Info_Assign)를 생성하여 메모리 장치(320)로 제공할 수 있다. 할당 정보(Info_Assign)는 각 채널 별 저장 공간을 나타내는 어드레스 범위를 포함할 수 있으며, 파티션 컨트롤러(322)는 할당 정보(Info_Assign)를 수신하고 이에 대한 어드레스 관리를 통해 각 채널에 저장 공간을 할당할 수 있다.
도 4는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 4를 참조하면, 메모리 장치는 다수의 채널들을 포함하고, 다수의 채널들은 메모리 컨트롤러와 독립적인 인터페이스(또는, 독립적인 경로)를 통해 데이터를 송수신할 수 있다. 일 예로서, 다수의 채널들을 서로 동일 또는 유사한 크기를 갖는 셀 어레이를 포함할 수 있으며, 실행되는 어플리케이션에 따라 채널 별로 그 메모리의 사용량이 서로 다를 수 있다.
메모리 장치는 다수의 채널들에 대한 메모리 사용량을 모니터링할 수 있다(S11). 일 예로서, 메모리 장치는 다수의 채널들의 억세스 상태를 판단함으로써 메모리 사용량을 모니터링할 수 있으며, 각각의 채널의 절대적인 메모리 사용량을 판단하거나, 또는 다수의 채널들 사이의 상대적인 메모리 사용량을 판단할 수 있다. 일 예로서, 메모리 장치는 상대적으로 메모리 사용량이 큰 채널과 상대적으로 메모리 사용량이 작은 채널을 판단할 수 있다.
모니터링 결과는 메모리 컨트롤러로 전송될 수 있다(S12). 메모리 컨트롤러는 모니터링 결과에 기반하여 제1 채널에 저장 공간을 추가로 할당할 지를 판단할 수 있다. 예컨대, 제1 채널의 메모리 사용량이 소정의 임계값을 초과한 경우에는 제1 채널의 메모리 용량을 증가시킬 필요가 있다고 판단할 수 있다. 일 예로서, 메모리 컨트롤러는 제1 채널에 추가로 할당할 저장 공간을 갖는 채널(예컨대, 제2 채널)을 판단할 수 있으며, 또한 제1 채널에 추가로 할당할 저장 공간의 사이즈를 판단할 수 있다.
메모리 장치는 메모리 컨트롤러로부터 제1 채널에 추가로 할당될 저장 공간에 대한 정보를 갖는 할당 정보를 수신할 수 있다(S13). 일 예로서, 메모리 컨트롤러는 제1 채널에 그 저장 공간을 추가로 할당할 제2 채널의 정보와 함께, 제2 채널의 일부의 저장 공간의 위치를 나타내는 어드레스 정보를 메모리 장치로 제공할 수 있다. 변형 가능한 예로서, 메모리 컨트롤러는 제2 채널의 정보와 함께 추가로 할당될 저장 공간의 사이즈에 관련된 정보를 제공할 수 있으며, 메모리 장치는 저장 공간의 사이즈 정보에 따라 제2 채널의 임의의 위치의 저장 공간을 선택할 수도 있을 것이다.
메모리 장치는 수신된 할당 정보에 따라 어드레스를 관리함으로써 상기 제2 채널의 일부의 저장 공간을 제1 채널에 추가로 할당할 수 있으며(S14), 일 예로서 상기 저장 공간의 할당은 외부의 어드레스와 내부 어드레스 사이의 변환 정보를 갖는 어드레스 변환 테이블을 관리함에 의해 수행될 수 있다. 이후, 제1 채널에 할당된 상기 제2 채널의 일부의 저장 공간의 억세스가 요청되면, 메모리 장치는 제2 체널의 상기 일부의 저장 공간에서 데이터를 억세스하고, 이를 제1 채널에 대응하는 경로를 통해 메모리 컨트롤러로 제공할 수 있다.
도 5 내지 도 7은 억세스 모니터의 일 구현 예 및 동작 예를 나타내는 블록도이다.
도 5를 참조하면, 억세스 모니터(400)는 카운팅 회로(410) 및 모니터링 회로(420)를 포함할 수 있다. 카운팅 회로(410)는 다수의 카운터들을 포함할 수 있으며, 일 예로서 다수의 채널들(CHA ~ CHH)에 대응하여 다수의 카운터들(411_A ~ 411_H)을 포함할 수 있다. 또한, 다수의 카운터들(411_A ~ 411_H) 각각은 하나 이상의 카운터를 포함할 수 있다. 또한, 모니터링 회로(420)는 카운터들(411_A ~ 411_H)의 정보에 기반하여 모니터링 동작을 수행할 수 있으며, 또한 카운터들(411_A ~ 411_H)에 대한 제어 동작을 수행할 수 있다. 또한, 모니터링 회로(420)는 카운터들(411_A ~ 411_H)의 정보에 기반하여 전술한 모니터링 정보(Info_Mor)를 생성할 수 있다.
도 5에 도시된 억세스 모니터(400)의 일 동작 예를 도 6 및 도 7을 참조하여 설명하면 다음과 같다.
일 구현 예로서, 카운팅 회로(410)는 두 개의 카운터 레이어로 구성될 수 있다. 예컨대, 카운팅 회로(410)는 각각의 채널에 대해 억세스 횟수를 카운팅하기 위한 제1 카운터 블록을 포함하고, 제1 카운터 블록은 각각의 채널에 대응하는 카운터(예컨대, 제1 카운터)를 포함할 수 있다. 또한, 카운팅 회로(410)는 채널들(CHA ~ CHH)의 억세스 비율을 카운팅하기 위한 제2 카운터 블록을 포함하고, 제2 카운터 블록은 각각의 채널에 대응하는 카운터(예컨대, 제2 카운터)를 포함할 수 있다. 제1 카운터는 각각의 채널에 대해 억세스가 수행될 때마다 카운팅 동작을 수행할 수 있으며, 제2 카운터는 제1 카운터가 소정의 횟수를 카운팅할 때마다 카운팅 동작을 수행할 수 있다.
일 실시예에 따라, 어느 하나의 채널의 제2 카운터가 카운팅 값을 증가시킬 때, 나머지 채널들의 제2 카운터는 카운팅 값을 감소시킬 수 있다. 일 예로서, 제A 채널(CHA)의 제2 카운터가 1 만큼 카운팅 값을 증가시킬 때, 나머지 채널들의 제2 카운터는 1 만큼 카운팅 값을 감소시킬 수 있다. 일 실시예에 따라, 나머지 채널들의 제2 카운터는 제A 채널(CHA)의 제2 카운터의 카운팅 값이 증가함을 나타내는 정보에 응답하여 카운팅 값을 감소시키거나, 또는 모니터링 회로(420)의 제어에 의해 카운팅 값을 감소시킬 수 있다.
변형 가능한 예로서, 상기 채널들(CHA ~ CHH)에 대해 상기 제2 카운터 대신에 레지스터가 배치될 수 있으며, 각각의 채널에 대응하는 레지스터에 저장되는 값은 제1 카운터의 카운팅 결과에 따라 증가하거나 감소할 수 있다. 일 예로서, 레지스터의 값은 모니터링 회로(420)의 제어에 의해 증가되거나 또는 감소될 수 있다. 모니터링 회로(420)는 제2 카운터 또는 레지스터에 저장된 정보에 기반하여 전술한 모니터링 정보(Info_Mor)를 생성할 수 있다. 이 때, 상기 제2 카운터나 상기 레지스터는 억세스 비율(Ratio) 저장 회로로 지칭될 수 있다.
도 7은 다수의 채널들(CHA ~ CHH)의 제2 카운터의 값의 변화의 일 예를 나타낸다. 일 예로서, 다수의 채널들의 제2 카운터의 값은 초기값 5 로서 설정되고, 어느 하나의 채널의 억세스 횟수가 증가함에 따라 상기 채널의 제2 카운터의 값이 1 만큼 증가하게 되면, 나머지 채널들의 제2 카운터의 값은 1 만큼 감소될 수 있다.
먼저, 제A 채널(CHA)에 대응하는 제1 카운터의 값이 증가함에 따라, 제A 채널(CHA)에 대응하는 제2 카운터의 값이 1 만큼 증가하는 반면에, 나머지 채널들에 대응하는 제2 카운터의 값은 1 만큼 감소될 수 있다. 이후, 제D 채널(CHD)에 대응하는 제1 카운터의 값이 증가함에 따라, 제D 채널(CHD)에 대응하는 제2 카운터의 값이 1 만큼 증가하는 반면에, 나머지 채널들에 대응하는 제2 카운터의 값은 1 만큼 감소될 수 있다. 도 7에 도시된 바와 같은 억세스 동작이 발생됨에 따라, 특정 시점에서 제A 채널(CHA)에 대응하는 제2 카운터의 값은 7 을 갖는 반면에, 나머지 채널들에 대응하는 제2 카운터의 값은 상대적으로 작은 값(예컨대, 1 또는 3)을 갖게 된다.
메모리 컨트롤러는 상기와 같은 모니터링 결과에 따라 일부 채널에 저장 공간을 추가로 할당할 필요성이 있는 지를 판단한다. 예컨대, 제2 카운터의 값이 소정의 기준값(예컨대, 도 7에서는 7) 이상일 때 해당 채널에 저장 공간을 추가로 할당하는 것으로 설정될 수 있으며, 메모리 컨트롤러는 다른 적어도 하나의 채널의 저장 공간의 일부를 제A 채널(CHA)에 할당하기 위한 할당 정보를 메모리 장치로 제공할 수 있다.
일 예로서, 메모리 컨트롤러는 나머지 채널들 중 상대적으로 억세스 횟수가 작은 하나 이상의 채널을 임의로 선택할 수 있다. 또는, 변형 가능한 실시예로서, 메모리 컨트롤러는 메모리 장치의 채널 구조에 따라 특정한 채널을 선택하고, 선택된 채널의 일부 공간을 제A 채널(CHA)에 할당할 수도 있다. 또한, 메모리 컨트롤러는 선택된 채널에서 기 설정되는 크기의 저장 공간을 제A 채널(CHA)에 할당할 수 있다. 또는, 메모리 컨트롤러는 선택된 채널의 메모리 사용량에 기반하여 제A 채널(CHA)에 할당되는 저장 공간의 크기를 조절하도록 메모리 시스템이 구현될 수도 있을 것이다.
상기와 같은 과정에 따라 저장 공간이 제A 채널(CHA)에 추가로 할당되고 난 후 다수의 채널들(CHA ~ CHH)의 제2 카운터의 값은 초기값으로 업데이트될 수 있다.
도 8 및 도 9는 파티션 컨트롤러의 일 구현 예 및 동작 예를 나타내는 블록도이다.
도 8을 참조하면, 메모리 시스템(500)은 메모리 컨트롤러(510)와 메모리 장치를 포함하고, 메모리 장치는 파티션 컨트롤러(520)를 포함할 수 있다. 또한, 파티션 컨트롤러(520)는 테이블 관리 모듈(521) 및 어드레스 변환 테이블(522)을 포함할 수 있다. 메모리 컨트롤러(510)는 전술한 실시예에 따라 억세스 모니터로부터 다수의 채널들의 메모리 사용량을 모니터링한 결과를 수신할 수 있으며, 이에 기반하여 저장 공간의 추가 할당을 위한 할당 정보(Info_Assign)를 파티션 컨트롤러(520)로 제공할 수 있다.
테이블 관리 모듈(521)은 할당 정보(Info_Assign)를 수신하고, 이에 기반하여 어드레스 변환 테이블(522)을 제어할 수 있다. 예컨대, 테이블 관리 모듈(521)은 메모리 컨트롤러(510)로부터 제공되는 어드레스(ADD)를 실제 데이터가 억세스될 다수의 채널들의 저장 공간을 지시하는 내부 어드레스(ADD_I)로 변환하기 위한 변환 정보를 어드레스 변환 테이블(522)에 설정할 수 있다.
일 예로서, 제A 채널(CHA) 및 제B 채널(CHB) 각각의 셀 어레이의 어드레스 범위가 1 내지 100의 값을 가지고, 제B 채널(CHB)의 셀 어레이의 1 내지 50 에 의해 지시되는 저장 공간이 제A 채널(CHA)에 추가로 할당된 경우에는, 메모리 컨트롤러(510)로부터의 어드레스(ADD)가 제A 채널(CHA)의 어드레스 101 내지 150(예컨대, 제1 범위)에 해당할 때, 메모리 컨트롤러(510)로부터의 어드레스(ADD)는 어드레스 변환 테이블(522)에 의해 제B 채널(CHB)의 셀 어레이의 어드레스 1 내지 50 에 해당하는 내부 어드레스(ADD_I)로 변환될 수 있다. 반면에, 메모리 컨트롤러(510)로부터의 어드레스(ADD)가 제A 채널(CHA)의 어드레스 1 내지 100(예컨대, 제2 범위)에 해당할 때, 상기 어드레스(ADD)는 제A 채널(CHA)의 셀 어레이를 지시하는 내부 어드레스(ADD_I)로 변환될 수 있다. 또한, 상기 어드레스(ADD)가 제B 채널(CHB)의 어드레스 1 내지 50 에 해당할 때, 상기 어드레스(ADD)는 제B 채널(CHB)의 셀 어레이의 어드레스 51 내지 100 에 해당하는 내부 어드레스(ADD_I)로 변환될 수 있다.
도 9는 제B 채널(CHB)의 일부의 저장 공간이 제A 채널(CHA)에 추가로 할당된 경우에서의 데이터 억세스 동작의 일 예를 나타내는 블록도이다.
도 8 및 도 9를 참조하면, 메모리 시스템(500)은 다수 개의 채널들, 파티션 컨트롤러(520) 및 다수 개의 선택기들을 포함할 수 있다. 일 예로서, 도 9에는 제A 채널(CHA) 및 제B 채널(CHB)이 예시되며, 또한 상기 제A 및 제B 채널들(CHA, CHB)에 대응하여 제1 및 제2 선택기들(531, 532)이 예시된다. 제A 채널(CHA)과 제B 채널(CHB)은 외부와의 인터페이스를 위한 출력 노드를 공유하는 구조를 가지며, 일 예로서 제A 채널(CHA)의 데이터는 제A 채널(CHA) 또는 제B 채널(CHB)에 대응하는 경로를 통해 출력될 수 있으며, 제B 채널(CHB)의 데이터 또한 제A 채널(CHA) 또는 제B 채널(CHB)에 대응하는 경로를 통해 출력될 수 있다. 한편, 제1 선택기(531)는 제A 채널(CHA)에 포함되는 구성이고, 제2 선택기(532)는 제B 채널(CHB)에 포함되는 구성으로 정의될 수도 것이다.
파티션 컨트롤러(520)는 전술한 실시예들에 따라 메모리 컨트롤러(미도시)로부터 어드레스를 수신하고 이에 대한 변환 동작을 수행할 수 있다. 일 예로서, 제B 채널(CHB)의 어드레스 1 내지 50에 대응하는 저장 공간이 제A 채널(CHA)에 추가로 할당된 경우, 메모리 컨트롤러는 제A 채널(CHA)의 어드레스 범위를 1 내지 150으로 판단할 수 있으며, 제B 채널(CHB)의 어드레스 범위를 1 내지 50으로 판단할 수 있다. 또한, 메모리 컨트롤러로부터의 제A 채널(CHA)의 101 내지 150 의 값을 갖는 어드레스는, 메모리 장치 내에서 제B 채널(CHB)에 위치한 저장 공간을 지시하기 위한 내부 어드레스로 변환될 수 있다.
제1 및 제2 선택기들(531, 532) 각각은 독립적인 경로를 통해 메모리 컨트롤러로 데이터를 제공할 수 있다. 일 예로서, 제1 선택기(531)는 메모리 장치의 제A 채널(CHA)에 대응하는 경로로 데이터를 전송할 수 있으며, 제2 선택기(532)는 메모리 장치의 제B 채널(CHB)에 대응하는 경로로 데이터를 전송할 수 있다. 제1 및 제2 선택기들(531, 532) 각각은 파티션 컨트롤러(520)로부터 제공되는 선택 제어 신호(Ctrl_M)에 응답하여 제어될 수 있다. 예컨대, 제B 채널(CHB)의 어드레스 범위 51 내지 100에 해당하는 저장 공간의 억세스 요청은 제B 채널(CHB)에 대응하는 경로를 통해 수신될 수 있으며, 억세스된 데이터는 제2 선택기(532)를 통해 출력될 수 있다. 반면에, 제B 채널(CHB)의 어드레스 범위 1 내지 50에 해당하는 저장 공간의 억세스 요청은 제A 채널(CHA)에 대응하는 경로를 통해 수신될 수 있으며, 억세스된 데이터는 제1 선택기(531)를 통해 출력될 수 있다.
한편, 도 9에 도시된 동작 예를 참조하면, 메모리 컨트롤러가 제A 채널(CHA)의 어드레스 150 의 위치에 대한 데이터 억세스를 요청하는 경우, 메모리 장치의 파티션 컨트롤러(520)는 수신된 어드레스를 제B 채널(CHB)의 어드레스 50으로 변환하고, 변환된 제B 채널(CHB)의 어드레스 50 의 위치의 메모리의 데이터가 억세스될 수 있다. 또한, 메모리 컨트롤러에서 요청한 제A 채널(CHA)의 어드레스 150의 데이터는 제A 채널(CHA)과 제B 채널(CHB)의 출력 노드 공유 구조를 통해 제B 채널(CHB)로부터 제1 선택기(531)의 출력으로 제공될 수 있다.
상기와 같은 실시예에 따라, 추가로 할당할 저장 공간을 제공하는 채널들은 다양한 방식에 따라 선택될 수 있다. 예컨대, 제A 채널(CHA)과 출력 노드가 공유되는 하나의 다른 채널(예컨대, 제B 채널(CHB))이 존재할 때, 제B 채널(CHB)의 저장 공간이 고정되게 선택되어 제A 채널(CHA)에 추가로 할당될 수 있다. 또는, 제A 채널(CHA)과 출력 노드가 공유되는 다수의 채널들이 존재하고, 상기 다수의 채널들 중 선택된 하나 이상의 채널의 저장 공간이 제A 채널(CHA)에 추가로 할당될 수 있다. 일 예로서, 상기 다수의 채널들 중 가장 메모리 사용량이 적은 채널의 저장 공간이 제A 채널(CHA)에 추가로 할당될 수 있을 것이다.
도 10 및 도 11은 본 발명의 예시적인 실시예들에 따른 메모리 장치가 HBM에 적용되는 예를 나타내는 도면이다.
도 10을 참조하면, 전술한 메모리 장치 또는 메모리 시스템은 고 대역폭 메모리(high bandwidth memory, HBM(610))를 포함할 수 있으며, 도 10에 도시된 메모리 시스템은 다수의 HBM(610)들을 포함하는 HBM 모듈로 정의될 수 있다. HBM 모듈(600)은 패키지 기판(640), 인터포저(Interposer, 630), 인터포저(630) 상에 장착된 다수의 HBM들(610) 및 하나 이상의 컨트롤러(620)를 포함할 수 있다. 일 예로서, 전술한 실시예들에 따른 메모리 컨트롤러가 도 10에 도시된 컨트롤러(620)에 해당할 수 있다. 또는, 메모리 컨트롤 기능을 포함하는 다양한 종류의 컨트롤러가 도 10에 도시된 컨트롤러(620)에 해당할 수 있으며, 일 예로 GPU(Graphics processing unit) 등 하드웨어 가속기가 컨트롤러(620)에 해당할 수 있다. 이 때, GPU(Graphics processing unit) 등 하드웨어 가속기는 전술한 메모리 컨트롤러의 기능을 포함할 수 있다. 이외에도, FPGA(Field-programmable gate array), MPPA(Massively parallel processor array), ASIC(Application-Specific Integrated Circuit), NPU(Neural processing unit), TPU(Tensor Processing Unit) 및 MPSoC(Multi-Processor System-on-Chip) 등의 다양한 종류의 하드웨어 가속기가 도 10에 도시된 컨트롤러(620)에 적용될 수도 있을 것이다.
다수의 HBM(610)들 및 컨트롤러(620)는 인터포저(630)에 형성된 배선들을 통해 서로 신호를 송수신할 수 있으며, 인터포저(630)는 실리콘(TSV) 형태, PCB 형태의 오가닉(Organic) 또는 Non-TSV 방식인 EMIB(embedded multi-dieinterconnect bridge) 등의 배선을 포함할 수 있다. 변형 가능한 예로서, HBM 모듈(600)은 컨트롤러(620)를 포함함이 없이 다수의 HBM(610)들만을 포함할 수도 있을 것이다.
도 10에 도시된 다수의 HBM(610)들 각각은 전술한 실시예들에 따른 메모리 동작을 수행할 수 있다. 일 예로서, 각각의 HBM(610)은 다수의 채널들을 포함할 수 있으며, 다수의 채널들은 독립한 인터페이스를 통해 컨트롤러(620)와 통신할 수 있다. 또한, 각각의 HBM(610)은 다수의 채널들의 메모리 사용량을 모니터링하는 장치를 포함할 수 있으며, 또한 다수의 채널들 각각에 저장 공간을 할당하는 파티션 컨트롤러를 포함할 수 있다. 컨트롤러(620)와 HBM(610) 사이의 통신에 있어서, HBM(610)은 컨트롤러(620)로부터의 어드레스를 판단함에 의해 채널들의 메모리 사용량을 모니터링할 수 있으며, 또한 HBM(610) 내의 파티션 컨트롤러는 컨트롤러(620)로부터의 제어에 기반하여 어드레스 변환 테이블을 관리할 수 있다.
일 실시예에 따라, HBM(610)들 각각은 메모리 동작의 제어를 위한 주변 회로를 포함하는 버퍼 다이(또는, 로직 다이)와, 메모리 셀 어레이를 포함하고 상기 버퍼 다이에 적층되는 하나 이상의 코어 다이들을 포함할 수 있으며, 각각의 HBM(610)에서 억세스 모니터 및 파티션 컨트롤러는 버퍼 다이에 배치될 수 있다. 그러나, 본 발명의 실시예는 이에 국한될 필요 없이, 상기 억세스 모니터 및 파티션 컨트롤러는 HBM 모듈(600) 내에서 다양하게 위치할 수 있을 것이다.
도 11은 도 10의 HBM의 일 구현 예를 나타낸다. 도 10 및 도 11을 참조하면, HBM(610)는 서로 독립된 인터페이스를 갖는 다수의 채널들을 포함함으로써 증가된 대역폭(Bandwidth)을 가질 수 있다. 일 예로서, HBM(610)는 다수 개의 다이들을 포함할 수 있으며, 일 예로서 버퍼 다이(또는, 로직 다이(612))와 이에 적층된 하나 이상의 코어 다이들(611)을 포함할 수 있다. 도 11의 예에서는, 제1 내지 제4 코어 다이들이 HBM(610)에 구비되는 예가 도시되었으나, 상기 코어 다이들(611)의 개수는 다양하게 변경될 수 있다.
또한, 코어 다이들(611) 각각은 하나 이상의 채널을 포함할 수 있으며, 도 11의 예에서는 코어 다이들(611) 각각이 두 개의 채널을 포함함에 따라 HBM(610)이 8 개의 채널들(CHA ~ CHH)을 갖는 예가 도시된다. 예컨대, 제1 코어 다이가 제A 채널 및 제C 채널(CHA, CHC)을 포함하고, 제2 코어 다이가 제B 채널 및 제D 채널(CHB, CHD)을 포함하며, 제3 코어 다이가 제E 채널 및 제G 채널(CHE, CHG)을 포함하며, 제4 코어 다이가 제F 채널 및 제H 채널(CHF, CHH)을 포함할 수 있다.
버퍼 다이(612)는 컨트롤러(또는, 하드웨어 가속기(620))와 통신하고, 컨트롤러(620)로부터 커맨드, 어드레스 및 데이터를 수신할 수 있으며, 수신된 커맨드, 어드레스 및 데이터를 코어 다이들(611)로 제공할 수 있다. 버퍼 다이(612)는 그 외면에 형성된 범프 등의 도전 수단(미도시)을 통해 컨트롤러(620)와 통신할 수 있다. 버퍼 다이(612)는 커맨드, 어드레스 및 데이터를 버퍼링하며, 이에 따라 컨트롤러(620)는 버퍼 다이(612)의 로드(load)만을 구동함으로써 코어 다이들(611)과 인터페이스할 수 있다.
또한, HBM(610)는 다이들을 관통하는 다수 개의 스루 실리콘 비아(TSV)들을 포함할 수 있다. TSV 들은 채널들(CHA ~ CHH)에 대응하여 배치될 수 있으며, 각각의 채널이 128 비트의 대역폭(Bandwidth)을 갖는 경우, TSV 들은 1024 비트의 데이터 입출력을 위한 구성들을 포함할 수 있다.
일 실시예에 따라, 억세스 모니터(AM, 612_1) 및 파티션 컨트롤러(PC, 612_2)는 버퍼 다이(612) 내에 배치될 수 있다. 전술한 바와 같이, 억세스 모니터(612_1)는 채널들(CHA ~ CHH)의 메모리 사용량을 모니터링할 수 있으며, 또한 파티션 컨트롤러(612_2)는 채널에 저장 공간을 할당하기 위해 어드레스 변환 테이블을 관리할 수 있다.
버퍼 다이(612)는 TSV 영역(TSV), 물리 영역(PHY) 및 다이렉트 억세스 영역(DA)을 포함할 수 있다. TSV 영역(TSV)은 코어 다이들(613)과의 통신을 위한 TSV가 형성되는 영역이다. 또한, 물리 영역(PHY)은 컨트롤러(620)와의 통신을 위해 다수의 입출력 회로를 포함할 수 있으며, 다이렉트 억세스 영역(DA)은 HBM(610)에 대한 테스트 모드에서 HBM(610)의 외면에 배치되는 도전 수단을 통해 외부의 테스터와 직접 통신할 수 있다. 테스터로부터 제공되는 각종 신호들은 다이렉트 억세스 영역(DA) 및 TSV 영역(TSV)을 통해 코어 다이들(611)로 제공될 수 있다.
HBM 모듈(600)은 다양한 용도의 데이터 처리에 이용될 수 있으며, 일 실시예에 따라 상기 HBM 모듈(600)은 뉴럴 네트워크 연산에 이용될 수 있다. 일 예로서, HBM 모듈(600)은 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Multi-layerPerceptron(MLP), Deep Belief Networks, Restricted Boltzman Machines 등 다양한 종류의 모델들에 따른 뉴럴 네트워크 연산을 수행할 수 있다.
HBM 모듈(600)에 구비되는 GPU 등의 하드웨어 가속기는 데이터 및 가중치(weight)를 이용한 뉴럴 네트워크 연산을 수행할 수 있으며, HBM(610)은 GPU 등의 하드웨어 가속기의 제어에 기반하여 데이터 및 가중치(weight)를 저장할 수 있다. 어느 하나의 HBM(610)을 예로 들면, HBM(610)은 다수 개의 채널들을 포함하고, HBM(610)의 어느 하나의 채널(예컨대, 할당된 채널)은 뉴럴 네트워크 연산에 따른 학습 데이터를 저장할 수 있다. 또한, 뉴럴 네트워크 연산 과정에서 중간 연산 결과 등 다른 용도를 위해 HBM(610)의 적어도 하나의 다른 채널이 이용될 수 있으며, 이 때 HBM(610)의 적어도 하나의 다른 채널은 채널 인터리빙을 통해 데이터가 억세스될 수 있다.
뉴럴 네트워크 연산은 많은 저장 공간과 높은 대역폭을 요구할 수 있다. 이 때, 상기 뉴럴 네트워크 연산에 어느 하나의 채널(예컨대, 제A 채널(CHA))이 할당된 경우, 할당된 제A 채널(CHA)의 메모리 사용량이 주기적 또는 실시간으로 모니터링될 수 있다. 모니터링 결과에 따라 제A 채널(CHA)에 저장 공간이 추가로 할당될 필요가 있는 경우, 전술한 실시예들에 따라 HBM(610)의 다른 채널들 중 적어도 하나의 채널의 저장 공간이 제A 채널(CHA)에 추가로 할당될 수 있다.
상기와 같은 본 발명의 실시예에 따르면, 뉴럴 네트워크 연산에 할당된 제A 채널(CHA)의 메모리 용량이 동적으로 조절될 수 있으며, 이에 따라 학습 데이터가 손실됨에 의한 뉴럴 네트워크 성능이 저하되는 것을 감소 또는 방지할 수 있다. 또한, 뉴럴 네트워크 연산에 이용되는 다른 채널들의 대역폭이 감소되지 않으므로, 연산 성능이 저하되는 것을 감소 또는 방지할 수 있다.
도 12는 본 발명의 실시예가 적용된 메모리 모듈을 포함하는 메모리 시스템을 나타내는 도면이다.
도 12를 참조하면, 메모리 시스템(700)은 메모리 컨트롤러(710) 및 하나 이상의 메모리 모듈(720)을 포함할 수 있다. 메모리 모듈(720)은 메모리 장치로서 하나 이상의 메모리 칩(721)과 버퍼 칩(722)이 장착되는 모듈 보드를 포함한다. 또한, 메모리 모듈(720)은 SIMM(single in-line memory module) 또는 DIMM(dual inline memory module) 등 다양한 형태로 구현될 수 있다.
메모리 시스템(700)에서 전술한 채널은 다양하게 정의될 수 있다. 일 실시예에 따라, 하나의 메모리 모듈(720)은 전술한 하나의 채널을 구성할 수 있으며, 또는 하나의 메모리 모듈(720)에 장착된 각각의 메모리 칩(721)이 하나의 채널을 구성할 수도 있다. 또는, 각각의 메모리 칩(721)이 다수 개의 셀 영역들을 포함하고, 각각의 셀 영역이 하나의 채널을 구성할 수도 있다. 도 12에 도시된 실시예에서는 하나의 메모리 모듈에 포함되는 다수의 메모리 칩(721)들 각각이 하나의 채널을 구성하는 것으로 가정된다.
하나의 메모리 모듈(720)을 참조하면, 메모리 모듈(720)은 다수 개의 채널들을 포함할 수 있고, 버퍼 칩(722)은 메모리 모듈(720)의 메모리 칩(721)들의 데이터 억세스를 관리할 수 있다. 일 예로서, 버퍼 칩(722)은 메모리 컨트롤러(710)와 통신할 수 있으며, 메모리 컨트롤러(710)로부터 커맨드(CMD) 및 어드레스(ADD)를 수신하고, 또한 메모리 컨트롤러(710)와 데이터(DATA)를 송수신할 수 있다.
버퍼 칩(722)은 전술한 실시예에 따른 억세스 모니터(722_1) 및 파티션 컨트롤러(722_2)를 포함할 수 있다. 억세스 모니터(722_1)는 메모리 모듈(720)에 구비되는 메모리 칩(721)들의 메모리 사용량을 모니터링할 수 있으며, 모니터링 결과는 메모리 컨트롤러(710)로 제공될 수 있다. 또한, 파티션 컨트롤러(722_2)는 메모리 컨트롤러(710)의 제어에 기반하여 저장 공간을 채널에 할당하는 동작을 수행할 수 있으며, 일 예로서 전술한 실시예들에 따라 하나 이상의 채널의 일부의 저장 공간을 다른 채널에 추가로 할당할 수 있다.
일 예로서, 제1 채널에 해당하는 제1 DRAM 칩(DRAM 1)이 할당되어 데이터 억세스가 수행되는 도중, 제1 DRAM 칩(DRAM 1)의 메모리 사용량이 소정의 임계값을 초과함에 따라, 전술한 실시예들에 따른 추가 할당 동작을 통해 제N 채널에 해당하는 제N DRAM 칩(DRAM N)의 일부의 저장 공간이 제1 채널에 추가로 할당될 수 있다. 메모리 모듈(720)은 다수 개(예컨대, N 개)의 채널들에 대응하여 N 개의 경로들을 통해 메모리 컨트롤러(710)와 통신할 수 있으며, 제N DRAM 칩(DRAM N)의 상기 일부의 저장 공간에서 억세스된 데이터(DATA)는 제1 채널에 대응하는 제1 경로를 통해 메모리 컨트롤러(710)로 제공될 수 있다.
도 13a,b,c은 본 발명의 변형 가능한 실시예에 따른 메모리 시스템을 나타내는 블록도이다. 도 13a,b,c에서는 전술한 본원발명의 기능들이 수행되는 다양한 위치가 도시된다.
도 13a를 참조하면, 메모리 시스템(800A)은 메모리 컨트롤러(810A)와 메모리 장치(820A)를 포함하고, 메모리 컨트롤러(810A)는 채널 관리 모듈(811A)을 포함하며, 메모리 장치(820A)는 다수의 채널들(821A)을 포함할 수 있다. 또한, 전술한 실시예에서의 억세스 모니터(811A_1)는 메모리 컨트롤러(810A) 내에 위치하고, 파티션 컨트롤러(822A)는 메모리 장치(820A) 내에 포함될 수 있다.
메모리 컨트롤러(810A)는 메모리 장치(820A)로 제공되는 어드레스에 기반하여 다수의 채널들(821A)의 메모리 사용량을 모니터링할 수 있다. 또한, 모니터링 결과에 따라 채널에 저장 공간을 할당할 할당 정보를 메모리 장치(820A)로 제공할 수 있다. 또한, 메모리 장치(820A)는 할당 정보에 기반하여 설정된 어드레스 변환 테이블에 따른 데이터 억세스 동작을 수행할 수 있다.
한편, 도 13b를 참조하면, 메모리 시스템(800B)은 메모리 컨트롤러(810B)와 메모리 장치(820B)를 포함하고, 메모리 컨트롤러(810B)는 채널 관리 모듈(811B)을 포함하며, 메모리 장치(820B)는 다수의 채널들(821B)을 포함할 수 있다. 또한, 전술한 실시예에서의 억세스 모니터(811B_1) 및 파티션 컨트롤러(811B_2)는 메모리 컨트롤러(810B) 내에 포함될 수 있다.
억세스 모니터(811B_1)는 메모리 장치(820B)로 제공될 어드레스에 기반하여 다수의 채널들(821B)의 메모리 사용량을 모니터링할 수 있으며, 또한 파티션 컨트롤러(811B_2)는 내부의 어드레스 변환 테이블을 관리함으로써 메모리 장치(820B)의 채널들(821A)에 대해 저장 공간을 할당할 수 있다. 일 실시예에 따라, 메모리 장치(820B)로부터 출력되는 데이터가 전송될 경로를 선택하기 위한 선택 제어 신호가 메모리 컨트롤러(810B)에서 생성되어 메모리 장치(820B)로 제공되거나, 또는 메모리 컨트롤러(810B)로부터의 정보에 기반하여 메모리 장치(820B) 내에서 생성될 수도 있을 것이다.
한편, 도 13c를 참조하면, 메모리 시스템(800C)은 메모리 컨트롤러(810C)와 메모리 장치(820C)를 포함하고, 메모리 장치(820C)는 다수의 채널들(821C) 및 채널 관리 모듈(822C)을 포함할 수 있다. 또한, 전술한 실시예에서의 억세스 모니터(822C_1) 및 파티션 컨트롤러(822C_2)는 메모리 장치(820C) 내에 포함될 수 있다.
메모리 장치(820C)는 전술한 실시예들에 따라 스스로 채널에 저장 공간을 추가로 할당할 것을 판단할 수 있으며, 이에 따라 채널의 저장 공간을 관리할 수 있다. 이 때, 메모리 장치(820C)는 다수의 채널들(821C)에 대한 저장 공간 할당 정보(또는, 메모리 용량 정보)를 갖는 채널 정보를 메모리 컨트롤러(810C)로 제공할 수 있을 것이다.
도 14는 본 발명의 예시적인 실시예에 따른 메모리 장치의 동작방법을 나타내는 플로우차트이다.
도 14를 참조하면, 메모리 장치는 전술한 실시예들에 따라 채널들의 메모리 용량을 조절할 수 있으며, 일 예로서 제2 채널의 일부의 저장 공간을 제1 채널에 추가로 할당할 수 있다. 이에 따라, 제1 채널의 메모리 용량은 제2 채널에 비해 클 수 있다.
메모리 장치는 제1 채널에 대응하는 제1 경로를 통해 메모리 컨트롤러로부터 데이터 억세스 요청을 수신할 수 있다(S21). 또한, 메모리 장치는 메모리 컨트롤러로부터 제공된 어드레스(예컨대, 외부 어드레스)를 어드레스 변환 테이블을 통해 내부 어드레스로 변환할 수 있다(S22). 내부 어드레스는 물리적으로 제2 채널에 위치한 셀 어레이의 저장 공간을 지시할 수 있으며, 이에 따라 메모리 장치는 제2 채널의 저장 공간의 데이터를 억세스할 수 있다(S23).
메모리 장치는 제1 채널에 대응하는 제1 경로를 통해 억세스 결과를 메모리 컨트롤러로 출력할 수 있다(S24). 전술한 실시예에 따라, 제1 채널과 제2 채널은 그 출력을 공유하는 구조를 가질 수 있으며, 이에 따라 제2 채널의 셀 어레이로부터 억세스된 데이터가 제1 채널에 대응하는 제1 경로를 통해 출력될 수 있다.
도 15는 본 발명의 변형 가능한 실시예에 따른 메모리 시스템을 나타내는 블록도이다. 도 15에서는 억세스된 어드레스 범위를 더 참조하여 저장 공간을 추가로 할당하는 예가 도시된다.
도 15를 참조하면, 메모리 장치는 억세스 모니터(900)를 포함하고, 억세스 모니터(900)는 카운팅 회로(910), 모니터링 회로(920) 및 어드레스 범위 저장 회로(930)를 포함할 수 있다. 카운팅 회로(910) 및 모니터링 회로(920)의 동작 예는 전술한 실시예에서와 동일 또는 유사하므로, 이에 대한 구체적인 설명은 생략된다.
어드레스 범위 저장 회로(930)는 채널 별 셀 어레이의 억세스된 어드레스 범위에 관련된 정보를 저장할 수 있다. 일 예로서, 제1 채널의 셀 어레이를 가정하면, 제1 채널의 셀 어레이에서 억세스된 가장 작은 어드레스(Lowest ADD)의 정보가 제1 레지스터(933)에 저장되고, 가장 큰 어드레스(Highest ADD)의 정보가 제2 레지스터(934)에 저장될 수 있다. 또한, 제1 비교기(931)는 메모리 컨트롤러로부터 수신되는 어드레스(ADD)를 가장 작은 어드레스(Lowest ADD)와 비교하고, 더 작은 어드레스가 수신될 때 이를 제1 레지스터(933)에 업데이트할 수 있다. 이와 유사하게, 제2 비교기(932)는 메모리 컨트롤러로부터 수신되는 어드레스(ADD)를 가장 큰 어드레스(Highest ADD)와 비교하고, 더 큰 어드레스가 수신될 때 이를 제2 레지스터(934)에 업데이트할 수 있다.
모니터링 회로(920)는 범위 판단기(921)를 포함할 수 있으며, 모니터링 정보(Info_Mor)는 억세스 횟수를 모니터링한 결과 및 어드레스 범위를 모니터링한 결과를 포함할 수 있다. 예컨대, 카운팅 회로(910)의 카운팅 결과에 따라 제1 채널의 억세스 횟수가 임계값을 초과한 경우에도, 제1 채널의 셀 어레이의 억세스된 어드레스 범위가 소정의 기준값을 초과하지 않는 경우에는 제1 채널에 저장 공간이 추가로 할당되지 않을 수 있다.
도 16은 본 발명의 변형 가능한 실시예에 따른 메모리 장치를 나타내는 블록도이다.
메모리 장치(100)는 파티션 컨트롤러(1010), 다수 개의 채널들(CHA ~ CHH) 및 채널 공유부(1020)를 포함할 수 있다. 채널 공유부(1020)는 다수 개의 채널들(CHA ~ CHH)의 출력 노드들을 공유하기 위한 회로를 포함할 수 있으며, 일 예로서 다수 개의 채널들(CHA ~ CHH)의 데이터들을 이에 대응하는 다수 개의 경로들로 출력하기 위한 멀티플렉서(미도시)를 포함할 수 있다. 또한, 저장 공간의 추가 할당은 전술한 다양한 실시예들에 따라 수행될 수 있으며, 일 예로서 제A 채널(CHA)에는 나머지 채널들(CHB ~ CHH)의 저장 공간이 추가로 할당될 수 있다. 도 16의 예에서, 제C 채널(CHC)의 어드레스 30의 저장 공간은 제A 채널(CHA)에 추가로 할당된 것으로 가정된다.
메모리 컨트롤러로부터 제A 채널(CHA)의 어드레스 130에 대한 억세스 요청이 수신되면, 메모리 장치 내의 어드레스 변환 동작을 통해 제C 채널(CHC)의 어드레스 30의 위치의 데이터가 억세스될 수 있다. 제C 채널(CHC)로부터의 데이터는 채널 공유부(1020)로 제공되고, 채널 공유부(1020)는 제C 채널(CHC)로부터의 데이터를 제A 채널(CHA)에 대응하는 경로를 통해 출력할 수 있다. 일 예로서, 채널 공유부(1020)는 파티션 컨트롤러(1010)로부터의 선택 제어 신호(Ctrl_M)에 응답하여 데이터의 출력을 제어할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (10)
- 제1 셀 어레이를 포함하고 제1 경로를 통해 메모리 컨트롤러와 통신하는 제1 채널;
제2 셀 어레이를 포함하고 제2 경로를 통해 상기 메모리 컨트롤러와 통신하는 제2 채널; 및
상기 제1 및 제2 채널들의 메모리 사용량을 모니터링하고, 상기 제1 셀 어레이의 메모리 사용량이 임계값을 초과한 경우에 상기 제2 셀 어레이의 일부의 저장 공간을 상기 제1 채널에 추가로 할당하는 할당 제어 회로를 구비하고,
상기 제1 채널에 할당된 상기 제2 셀 어레이의 저장 공간에 대한 억세스는 상기 제1 경로를 통해 수행되는 것을 특징으로 하는 메모리 장치. - 제1항에 있어서,
상기 제1 경로를 통해 데이터를 출력하는 제1 선택기와 상기 제2 경로를 통해 데이터를 출력하는 제2 선택기를 더 구비하고,
상기 제1 선택기는, 상기 제1 채널에 할당된 상기 제2 셀 어레이의 저장 공간으로부터 독출된 데이터를 상기 제1 경로로 출력하는 것을 특징으로 하는 메모리 장치. - 제2항에 있어서,
상기 제2 선택기는, 상기 제1 채널에 할당되지 않은 제2 셀 어레이의 저장 공간으로부터 독출된 데이터를 상기 제2 경로로 출력하는 것을 특징으로 하는 메모리 장치. - 제1항에 있어서, 상기 할당 제어 회로는,
상기 제1 채널 및 상기 제2 채널 각각의 메모리 사용량을 모니터링한 결과를 상기 메모리 컨트롤러로 제공하는 억세스 모니터를 포함하는 것을 특징으로 하는 메모리 장치. - 제4항에 있어서, 상기 억세스 모니터는,
상기 제1 채널 및 상기 제2 채널이 억세스될 때마다 카운팅 값을 증가시키는 카운터들을 포함하는 카운터 블록; 및
상기 카운팅 값에 기반하여, 상기 제1 및 제2 채널들의 상대적인 억세스 빈도에 관련된 정보를 저장하고, 상기 저장된 정보를 상기 제1 및 제2 채널들의 메모리 사용량을 모니터링한 결과로써 제공하는 억세스 비율(Ratio) 저장 회로를 포함하는 것을 특징으로 하는 메모리 장치. - 제4항에 있어서, 상기 할당 제어 회로는,
상기 메모리 컨트롤러로부터 상기 제1 채널에 추가로 할당될 저장 공간을 나타내는 할당 정보를 수신하고, 상기 수신된 할당 정보에 따라 상기 메모리 장치의 내부 어드레스를 관리함으로써 상기 제2 셀 어레이의 일부의 저장 공간을 상기 제1 채널에 할당하는 파티션 컨트롤러를 더 포함하는 것을 특징으로 하는 메모리 장치. - 메모리 시스템에 있어서,
메모리 동작을 제어하는 메모리 컨트롤러; 및
각각 독립적인 인터페이스를 통해 상기 메모리 컨트롤러와 데이터 통신을 수행하는 제1 내지 제N 채널들(단, N은 2 이상의 정수)을 포함하고, 상기 채널들 각각은 셀 어레이를 포함하는 메모리 장치를 구비하며,
상기 메모리 장치는, 상기 다수 개의 채널들의 메모리 사용량을 모니터링한 결과를 상기 메모리 컨트롤러로 제공하고, 상기 메모리 컨트롤러의 제어에 기반하여 다수 개의 채널들 각각에 저장 공간을 할당하며, 상기 제1 채널의 메모리 사용량에 따라 적어도 하나의 다른 채널의 저장 공간을 상기 제1 채널에 추가로 할당하는 할당 제어 회로를 포함하는 것을 특징으로 하는 메모리 시스템. - 제7항에 있어서,
상기 할당 제어 회로는, 상기 메모리 컨트롤러로부터 상기 제1 채널에 대응하는 경로를 통해 수신된 어드레스를 상기 제1 채널의 셀 어레이의 저장 공간을 지시하거나 다른 채널의 셀 어레이의 저장 공간을 지시하는 내부 어드레스로 변환시키는 것을 특징으로 하는 메모리 시스템. - 제8항에 있어서, 상기 할당 제어 회로는,
상기 다수 개의 채널들 각각의 메모리 사용량을 모니터링한 결과를 상기 메모리 컨트롤러로 제공하는 억세스 모니터; 및
상기 메모리 컨트롤러로부터 상기 제1 채널에 추가로 할당될 저장 공간을 나타내는 할당 정보를 수신하고, 상기 할당 정보에 따라 상기 메모리 컨트롤러로부터의 어드레스와 상기 메모리 장치의 내부 어드레스 사이의 변환 정보를 관리하는 파티션 컨트롤러를 포함하는 것을 특징으로 하는 메모리 시스템. - 제7항에 있어서,
상기 메모리 시스템은 고 대역폭 메모리(high bandwidth memory, HBM) 모듈을 포함하고,
상기 메모리 컨트롤러는 상기 HBM 모듈의 인터포저 상에 배치되는 그래픽 프로세싱 유닛(GPU)이며,
상기 메모리 장치는 상기 HBM 모듈의 인터포저 상에 배치되는 HBM 인 것을 특징으로 하는 메모리 시스템.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180017953A KR20190097930A (ko) | 2018-02-13 | 2018-02-13 | 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
US16/115,089 US11010316B2 (en) | 2018-02-13 | 2018-08-28 | Memory device for adjusting memory capacity per channel and memory system including the same |
CN201910107835.XA CN110162486B (zh) | 2018-02-13 | 2019-02-02 | 存储器装置、包括其的存储器系统和高带宽存储器装置 |
US17/229,198 US11836097B2 (en) | 2018-02-13 | 2021-04-13 | Memory device for adjusting memory capacity per channel and memory system including the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180017953A KR20190097930A (ko) | 2018-02-13 | 2018-02-13 | 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190097930A true KR20190097930A (ko) | 2019-08-21 |
Family
ID=67541678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180017953A KR20190097930A (ko) | 2018-02-13 | 2018-02-13 | 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11010316B2 (ko) |
KR (1) | KR20190097930A (ko) |
CN (1) | CN110162486B (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190097930A (ko) | 2018-02-13 | 2019-08-21 | 삼성전자주식회사 | 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
KR20210034784A (ko) * | 2019-09-23 | 2021-03-31 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 장치 및 그 제조 방법 |
US11087801B1 (en) * | 2020-02-06 | 2021-08-10 | Micron Technology, Inc. | Configuring a host interface of a memory device based on mode of operation |
WO2021159028A1 (en) | 2020-02-07 | 2021-08-12 | Sunrise Memory Corporation | High capacity memory circuit with low effective latency |
US11580038B2 (en) * | 2020-02-07 | 2023-02-14 | Sunrise Memory Corporation | Quasi-volatile system-level memory |
US11243896B2 (en) | 2020-03-25 | 2022-02-08 | Micron Technology, Inc. | Multiple pin configurations of memory devices |
TWI761992B (zh) * | 2020-10-16 | 2022-04-21 | 創鑫智慧股份有限公司 | 資料計算裝置及其操作方法 |
CN112435709B (zh) * | 2020-12-03 | 2021-09-14 | 中科驭数(北京)科技有限公司 | 高带宽存储器测试系统、测试方法及测试设备 |
CN112256440B (zh) * | 2020-12-23 | 2021-03-09 | 上海齐感电子信息科技有限公司 | 神经网络推理的内存管理方法及装置 |
TWI753732B (zh) * | 2020-12-31 | 2022-01-21 | 新唐科技股份有限公司 | 計數電路及操作系統 |
US12056374B2 (en) * | 2021-02-03 | 2024-08-06 | Alibaba Group Holding Limited | Dynamic memory coherency biasing techniques |
CN113934375B (zh) * | 2021-10-14 | 2024-04-19 | 西安紫光国芯半导体有限公司 | 固态硬盘ssd控制器、三维集成装置以及数据处理方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4403282A (en) * | 1978-01-23 | 1983-09-06 | Data General Corporation | Data processing system using a high speed data channel for providing direct memory access for block data transfers |
US4503501A (en) | 1981-11-27 | 1985-03-05 | Storage Technology Corporation | Adaptive domain partitioning of cache memory space |
WO1996041274A1 (en) | 1995-06-07 | 1996-12-19 | Advanced Micro Devices, Inc. | Dynamically reconfigurable data bus |
US6625685B1 (en) * | 2000-09-20 | 2003-09-23 | Broadcom Corporation | Memory controller with programmable configuration |
US20070089030A1 (en) | 2005-09-30 | 2007-04-19 | Beracoechea Alejandro L L | Configurable bandwidth allocation for data channels accessing a memory interface |
US7872657B1 (en) | 2006-06-16 | 2011-01-18 | Nvidia Corporation | Memory addressing scheme using partition strides |
US8438320B2 (en) * | 2007-06-25 | 2013-05-07 | Sonics, Inc. | Various methods and apparatus for address tiling and channel interleaving throughout the integrated system |
US8850154B2 (en) | 2007-09-11 | 2014-09-30 | 2236008 Ontario Inc. | Processing system having memory partitioning |
US8166254B2 (en) | 2008-06-06 | 2012-04-24 | International Business Machines Corporation | Hypervisor page fault processing in a shared memory partition data processing system |
US8359421B2 (en) | 2009-08-06 | 2013-01-22 | Qualcomm Incorporated | Partitioning a crossbar interconnect in a multi-channel memory system |
US20120066471A1 (en) | 2010-09-14 | 2012-03-15 | Advanced Micro Devices, Inc. | Allocation of memory buffers based on preferred memory performance |
US9195621B2 (en) * | 2013-03-15 | 2015-11-24 | Freescale Semiconductor, Inc. | System and method for assigning memory access transfers between communication channels |
US9606916B2 (en) * | 2013-09-13 | 2017-03-28 | Samsung Electronics Co., Ltd. | Semiconductor devices including application processor connected to high-bandwidth memory and low-bandwidth memory, and channel interleaving method thereof |
US10235242B2 (en) * | 2015-09-28 | 2019-03-19 | Rambus Inc. | Fault tolerant memory systems and components with interconnected and redundant data interfaces |
US10025732B2 (en) * | 2016-10-01 | 2018-07-17 | Intel Corporation | Preserving deterministic early valid across a clock domain crossing |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US10395722B2 (en) * | 2017-09-29 | 2019-08-27 | Intel Corporation | Reading from a mode register having different read and write timing |
KR20190097930A (ko) | 2018-02-13 | 2019-08-21 | 삼성전자주식회사 | 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
-
2018
- 2018-02-13 KR KR1020180017953A patent/KR20190097930A/ko unknown
- 2018-08-28 US US16/115,089 patent/US11010316B2/en active Active
-
2019
- 2019-02-02 CN CN201910107835.XA patent/CN110162486B/zh active Active
-
2021
- 2021-04-13 US US17/229,198 patent/US11836097B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11010316B2 (en) | 2021-05-18 |
CN110162486A (zh) | 2019-08-23 |
CN110162486B (zh) | 2024-08-16 |
US20210232513A1 (en) | 2021-07-29 |
US20190251043A1 (en) | 2019-08-15 |
US11836097B2 (en) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836097B2 (en) | Memory device for adjusting memory capacity per channel and memory system including the same | |
KR102424962B1 (ko) | 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈 | |
CN110008149B (zh) | 融合式存储器件及其操作方法 | |
US10566075B2 (en) | Electronic device performing training on memory device by rank unit and training method thereof | |
US10346342B1 (en) | Uniform memory access architecture | |
KR20200108774A (ko) | 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법 | |
KR20180007374A (ko) | 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법 | |
US11232029B2 (en) | Stacked memory device and operating method thereof | |
US10908846B2 (en) | Memory system and operation method thereof | |
KR20190097528A (ko) | 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작 | |
US11461024B2 (en) | Computing system and operating method thereof | |
US20200348871A1 (en) | Memory system, operating method thereof and computing system for classifying data according to read and write counts and storing the classified data in a plurality of types of memory devices | |
CN114579498A (zh) | 跨多个存储器管芯封装的电力管理 | |
US12039200B2 (en) | Load balancing between storage devices | |
JP2016218635A (ja) | 情報処理装置、メモリ制御装置、および情報処理装置の制御方法 | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
US11221931B2 (en) | Memory system and data processing system | |
CN114661654A (zh) | 访问处理装置和方法、处理设备、电子设备和存储介质 | |
US20210117114A1 (en) | Memory system for flexibly allocating memory for multiple processors and operating method thereof | |
US20240146805A1 (en) | Scalable memory pool | |
KR102714157B1 (ko) | 메모리 시스템, 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법 | |
US20240311302A1 (en) | Processor, system, and method for dynamic cache allocation | |
KR20240097424A (ko) | 메모리 장치 및 이의 스케줄링 방법 | |
CN117931056A (zh) | 可扩展的存储器池 | |
KR20240059347A (ko) | 메모리 공간 할당 방법, 장치 및 시스템 |