KR102580946B1 - 버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법 - Google Patents

버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR102580946B1
KR102580946B1 KR1020220081505A KR20220081505A KR102580946B1 KR 102580946 B1 KR102580946 B1 KR 102580946B1 KR 1020220081505 A KR1020220081505 A KR 1020220081505A KR 20220081505 A KR20220081505 A KR 20220081505A KR 102580946 B1 KR102580946 B1 KR 102580946B1
Authority
KR
South Korea
Prior art keywords
buffer
memory
allocation
circuit
buffer memory
Prior art date
Application number
KR1020220081505A
Other languages
English (en)
Other versions
KR20230067485A (ko
Inventor
이종인
김보경
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to CN202211393805.8A priority Critical patent/CN116107496A/zh
Priority to TW111142522A priority patent/TW202324114A/zh
Priority to US17/984,097 priority patent/US20230147882A1/en
Priority to EP22206508.8A priority patent/EP4177762B1/en
Publication of KR20230067485A publication Critical patent/KR20230067485A/ko
Application granted granted Critical
Publication of KR102580946B1 publication Critical patent/KR102580946B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

상기와 같은 목적을 달성하기 위하여, 본 개시의 예시적 실시예에 따른 메모리 시스템은, 메모리 장치를 제어하는 메모리 컨트롤러 및 상기 메모리 컨트롤러의 외부에 배치되는 서브 버퍼 메모리를 포함하고, 상기 메모리 컨트롤러는, 상기 메모리 장치에 대한 메모리 동작을 제어하는 프로세서, 상기 서브 버퍼 메모리와 상이하고, 상기 메모리 컨트롤러의 내부에 배치되는 메인 버퍼 메모리, 상기 서브 버퍼 메모리와 상기 메인 버퍼 메모리 사이의 할당 비율을 제어하기 위한 버퍼 할당 회로를 포함하고, 상기 프로세서는, 상기 버퍼 할당 회로의 동작 모드를 상기 할당 비율이 고정되는 동작 모드로 설정할 수 있다.

Description

버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법{MEMORY CONTROLLER FOR CONTROLLING ALLOCATION RATIO OF BUFFER MEMORY, MEMORY SYSTEM INCLUDING THE SAME AND OPERATING METHOD OF MEMORY CONTROLLER}
본 개시의 기술적 사상은 메모리 컨트롤러에 관한 것이며, 보다 구체적으로, 버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. SSD(Solid State Disk)의 NAND 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다.
호스트와 NAND 플래시 메모리 사이의 병렬 처리를 통해 대역폭을 향상시킴으로써 SSD의 성능 개선을 달성할 수 있었다. 이 때, 호스트와 NAND 플래시 메모리 사이의 성능 차이를 보완하기 위하여 버퍼 메모리가 사용되었다. 고속 성능을 위하여 버퍼 메모리는 정적 램(Static RAM)으로 채택되었다. 기술의 발전에 따라 칩 사이즈는 점점 감소되었으나, 스토리지 장치의 요구 성능을 높아짐에 따라 정적 램만으로 버퍼 메모리의 역할을 수행할 수 없는 상황이 발생하였으며, 이에 따라 동적 램(Dynamic RAM)이 추가적으로 도입되었다. 이에 따라, 버퍼 메모리로서 동적 램과 정적 램을 효율적으로 동시에 사용하기 위한 방안이 요구되고 있다.
본 발명의 기술적 사상이 해결하고자 하는 과제는, 이종(heterogeneity) 버퍼 메모리들 간에 할당 비율을 제어할 수 있는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법을 제공함에 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 예시적 실시예에 따른 메모리 시스템은, 메모리 장치를 제어하는 메모리 컨트롤러 및 상기 메모리 컨트롤러의 외부에 배치되는 서브 버퍼 메모리를 포함하고, 상기 메모리 컨트롤러는, 상기 메모리 장치에 대한 메모리 동작을 제어하는 프로세서, 상기 서브 버퍼 메모리와 상이하고, 상기 메모리 컨트롤러의 내부에 배치되는 메인 버퍼 메모리, 상기 서브 버퍼 메모리와 상기 메인 버퍼 메모리 사이의 할당 비율을 제어하기 위한 버퍼 할당 회로를 포함하고, 상기 프로세서는, 상기 버퍼 할당 회로의 동작 모드를 상기 할당 비율이 고정되는 동작 모드로 설정할 수 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 메모리 시스템은, 메모리 장치를 제어하는 메모리 컨트롤러 및 상기 메모리 컨트롤러의 외부에 배치되는 서브 버퍼 메모리를 포함하고, 상기 메모리 컨트롤러는, 상기 메모리 장치에 대한 메모리 동작을 제어하는 프로세서, 상기 서브 버퍼 메모리와 상이하고, 상기 메모리 컨트롤러의 내부에 배치되는 메인 버퍼 메모리, 상기 서브 버퍼 메모리와 상기 메인 버퍼 메모리 사이의 할당 비율을 제어하기 위한 버퍼 할당 회로를 포함하고, 상기 프로세서는, 상기 버퍼 할당 회로의 동작 모드를 상기 할당 비율이 가변적으로 설정되는 동작 모드로 설정할 수 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 메모리 컨트롤러의 동작 방법은, 호스트로부터 커맨드를 수신하는 단계, 버퍼 할당 회로의 동작 모드를 제1 동작 모드 및 제2 동작 모드 중 어느 하나로 식별하는 단계, 상기 버퍼 할당 회로가 상기 제1 동작 모드인 경우, 상기 메모리 컨트롤러의 내부에 배치되는 메인 버퍼 메모리와 상기 메모리 컨트롤러의 외부에 배치되는 서브 버퍼 메모리의 할당 비율을 미리 정의된 비율로 설정하는 단계 및 상기 버퍼 할당 회로가 상기 제2 동작 모드인 경우, 상기 수신된 커맨드의 유형에 기반하여, 상기 할당 비율을 가변적으로 설정하는 단계를 포함할 수 있다.
본 발명의 기술적 사상의 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작방법에 따르면, 커맨드 별로 할당 비율을 다르게 설정함으로써 버퍼 사이즈를 최적화하는 동시에 요구 성능을 만족할 수 있다.
도 1은 본 개시의 예시적인 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 메모리 장치를 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 메모리 블록을 나타내는 회로도이다.
도 4는 본 개시의 일 실시예에 따른 메모리 블록을 나타내는 사시도이다.
도 5는 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 6은 본 개시의 일 실시예에 따른 버퍼 할당 핸들링 회로의 동작을 나타내는 순서도이다.
도 7은 본 개시의 일 실시예에 따른 프로세서의 동작을 나타내는 순서도이다.
도 8은 본 개시의 일 실시예에 따른 버퍼 할당 확인 회로의 동작을 나타내는 순서도이다.
도 9는 본 개시의 일 실시예에 따른 메모리 시스템의 제1 동작 모드에 상응하는 신호 교환도이다.
도 10은 본 개시의 일 실시예에 따른 메모리 시스템의 제2 동작 모드에 상응하는 신호 교환도이다.
도 11은 본 개시의 실시예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 예시적 실시예들에 대하여 상세히 설명하기로 한다.
도 1은 본 개시의 예시적인 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 메모리 장치(100), 메모리 컨트롤러(200) 및 서브 버퍼 메모리(300)를 포함할 수 있다. 메모리 시스템(10)은 다양한 인터페이스를 통해 호스트와 통신할 수 있고, 일 예로서 메모리 시스템(10)은 USB(Universal Serial Bus), MMC(multimedia card), eMMC(embedded MMC), PCI(peripheral component interconnection), PCI-E(PCI-express), ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI(small computer small interface), ESDI(enhanced small disk interface), IDE(Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), NVMe(Nonvolatile Memory express), CXL(compute Express LinkTM) 등과 같은 다양한 인터페이스를 통해 호스트와 통신할 수 있다.
일부 실시예들에서, 메모리 시스템(10)은 전자 장치에 내장되거나 탈부착 가능한 메모리로 구현될 수 있고, 예를 들어, 메모리 시스템(10)은 임베디드 UFS(Universal Flash Storage) 메모리 장치, eMMC(embedded Multi-Media Card), SSD(Solid State Drive), UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick) 등 다양한 형태로 구현될 수 있다. 또한, 메모리 시스템(10)은 데이터를 불휘발성하게 저장하는 스토리지 장치로 지칭될 수도 있다.
다양한 실시예들에 따라, 메모리 장치(100)는 메모리 셀 어레이(110) 및 제어 로직 회로(120)을 포함할 수 있다. 메모리 셀 어레이(110)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래쉬 메모리 셀들일 수 있다. 이하에서는, 복수의 메모리 셀들이 낸드(NAND) 플래쉬 메모리 셀들인 경우를 예로 하여 본 개시의 실시예들을 상술하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 일부 실시예들에서, 복수의 메모리 셀들은 ReRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항성 메모리 셀들일 수 있다. 일 실시예에서, 메모리 셀 어레이(110)는 3차원 메모리 셀 어레이를 포함할 수 있다. 3차원 메모리 셀 어레이는 복수의 낸드 스트링들을 포함할 수 있으며, 각 낸드 스트링은 기판 위에 수직으로 적층된 워드라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예에서, 메모리 셀 어레이(110)는 2차원 메모리 셀 어레이를 포함할 수 있고, 2차원 메모리 셀 어레이는 행 및 열 방향을 따라 배치된 복수의 낸드 스트링들을 포함할 수도 있다.
제어 로직 회로(120)은 메모리 장치(100)의 전반적인 동작을 제어할 수 있다. 예를 들어, 제어 로직 회로(120)는 메모리 컨트롤러(200)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로, 메모리 셀 어레이(110)에 데이터를 프로그램하거나 메모리 셀 어레이(110)로부터 데이터를 독출하기 위한 각종 내부 제어 신호를 출력할 수 있다.
다양한 실시예들에 따라, 메모리 컨트롤러(200)는 프로세서(201), 버퍼 할당 회로(210) 및 메인 버퍼 메모리(220)를 포함할 수 있다.
메모리 컨트롤러(200)는 호스트(HOST)로부터의 기록/독출 요청에 응답하여 메모리 장치(100)의 메모리 셀 어레이(110)에 저장된 데이터를 독출하거나 또는 메모리 장치(100)의 메모리 셀 어레이(110)에 데이터를 기록하도록 메모리 장치(100)를 제어할 수 있다. 예를 들어, 메모리 컨트롤러(200)는 프로세서(201)를 포함할 수 있고, 프로세서(201)는 메모리 컨트롤러(200) 내부의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(201)는 메모리 장치(100)에 대한 메모리 동작을 제어할 수 있다. 구체적으로, 메모리 컨트롤러(200)는 메모리 장치(100)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(100)에 대한 기록, 독출 및 소거 동작을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(200)는 메모리 장치(100)에 데이터를 기록하기 위한 시퀀셜(sequential) 쓰기 커맨드 또는 랜덤(random) 쓰기 커맨드를 메모리 장치(100)에게 제공할 수 있다. 다른 예를 들어, 메모리 컨트롤러(200)는 메모리 장치(100)에 기록된 데이터를 독출하기 위한 시퀀셜 독출 커맨드 또는 랜덤 독출 커맨드를 메모리 장치(100)에게 제공할 수 있다.
본 개시의 실시예에 따라, 메모리 컨트롤러(200)는 버퍼 할당 회로(210) 및 메인 버퍼 메모리(220)를 더 포함할 수 있다. 메인 버퍼 메모리(220)는 메모리 컨트롤러(200) 내부에 실장되는 버퍼 메모리로서, 내부 버퍼 메모리로 지칭될 수도 있다. 일 실시예에 따라, 메인 버퍼 메모리(220)는 고속 동작을 위한 SRAM(static RAM)으로 구현될 수 있다. 메인 버퍼 메모리(220)는 메모리 컨트롤러(200)의 내부에 실장되므로, 메모리 컨트롤러(200) 칩의 게이트 카운트(gate count) 값을 증가시킬 수 있다. 서브 버퍼 메모리(300)는 메모리 컨트롤러(200)의 외부에 배치되는 버퍼 메모리로서, 외부 버퍼 메모리로 지칭될 수도 있다. 일 실시예에 따라, 서브 버퍼 메모리(300)는 DRAM(dynamic RAM)으로 구현될 수 있다.
버퍼 할당 회로(210)는 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300) 사이의 할당 비율을 조절할 수 있다. 일 실시예에 따라, 버퍼 할당 회로(210)는 메모리 컨트롤러(200)가 호스트(HOST)로부터 수신하는 커맨드의 종류에 기반하여 상기 할당 비율을 조절할 수 있다. 예를 들어, 메모리 컨트롤러(200)는 호스트(HOST)로부터 시퀀셜 쓰기 커맨드를 수신할 수 있다. 버퍼 할당 회로(210)는 상기 수신된 시퀀셜 쓰기 커맨드에 응답하여 미리 정의된 제1 비율에 기반하여 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)에 모두 버퍼 할당을 요청할 수 있다. 상기 미리 정의된 제1 비율은, 5:5일 수 있다. 다른 예를 들어, 메모리 컨트롤러(200)는 호스트(HOST)로부터 랜덤 쓰기 커맨드, 시퀀셜 독출 커맨드, 랜덤 독출 커맨드 중 어느 하나를 수신할 수 있다. 버퍼 할당 회로(210)는 상기 수신된 커맨드에 응답하여 미리 정의된 제2 비율에 기반하여 서브 버퍼 메모리(300)에게만 버퍼 할당을 요청할 수 있다. 즉, 상기 미리 정의된 제2 비율은 0:10 또는 1:9일 수 있다.
다른 실시예에 따라, 버퍼 할당 회로(210)는 메모리 컨트롤러(200)의 모니터링 결과 값에 기반하여 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300) 사이의 할당 비율을 조절할 수도 있다. 예를 들어, 버퍼 할당 회로(210)는 메모리 컨트롤러(200)의 커맨드 처리 속도를 트래킹(tracking)하는 모니터링 회로를 더 포함할 수 있다. 버퍼 할당 회로(210)는 상기 모니터링 회로로부터 모니터링 결과 값을 수신하고, 모니터링 결과 값이 임계 값보다 미만인 경우, 커맨드 처리 속도의 개선을 위해 메인 버퍼 메모리(220)의 할당 비율이 증가하도록 제어할 수 있다. 이에 대한 구체적인 설명은 후술하기로 한다.
도 2는 본 개시의 일 실시예에 따른 메모리 장치를 나타내는 블록도이다.
도 1및 도 2를 함께 참조하면, 메모리 장치(100)는 메모리 셀 어레이(110), 제어 로직 회로(120)에 추가적으로 페이지 버퍼 회로(130), 전압 생성기(140) 및 로우 디코더(150)를 포함할 수 있다. 도시되지는 않았으나, 메모리 장치(100)는 인터페이스 회로를 더 포함할 수 있고, 인터페이스 회로는 데이터 입출력 회로, 커맨드/어드레스 입출력 회로 등을 포함할 수 있다.
메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1 내지 BLKz)을 포함할 수 있고, z는 양의 정수이다. 복수의 메모리 블록들(BLK1 내지 BLKz) 각각은 복수의 페이지들을 포함할 수 있으며, 복수의 페이지들 각각은 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 메모리 블록은 소거 단위이고, 페이지는 기입 및 독출 단위일 수 있다. 각 메모리 셀은 하나 또는 그 이상의 비트들을 저장할 수 있으며, 구체적으로, 각 메모리 셀은 SLC(Single Level Cell), MLC(Multi-Level Cell), TLC(Triple Level Cell) 또는 QLC(Quadruple Level Cell)로 이용될 수 있다.
메모리 셀 어레이(110)는 복수의 워드 라인들(WL), 복수의 스트링 선택 라인들(SSL), 복수의 그라운드 선택 라인들(GSL) 및 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(110)는 복수의 워드 라인들(WL), 복수의 스트링 선택 라인들(SSL) 및 복수의 그라운드 선택 라인들(GSL)을 통해 로우 디코더(150)에 연결되고, 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(130)에 연결될 수 있다. 일부 실시예들에서, 메모리 셀 어레이(110)는 GIDL(gate induced drain leakage) 소거 제어 라인들에 더 연결될 수 있다.
일 실시예에서, 메모리 셀 어레이(110)는 3차원 메모리 셀 어레이를 포함할 수 있고, 3차원 메모리 셀 어레이는 복수의 셀 스트링들 또는 낸드 스트링들을 포함할 수 있다. 각 셀 스트링은 기판 위에 수직으로 적층된 워드 라인들에 각각 연결된 메모리 셀들을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 본 명세서에 인용 형식으로 결합된다.
제어 로직 회로(120)는 메모리 컨트롤러(200)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로, 메모리 셀 어레이(110)에 데이터를 기입하거나 메모리 셀 어레이(110)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 제어 로직 회로(120)는 메모리 장치(100) 내의 각종 동작을 전반적으로 제어할 수 있다. 구체적으로, 제어 로직 회로(120)는 전압 생성기(140)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(150)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼 회로(130)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 제어 로직 회로(120)는 전압 생성기(140), 로우 디코더(150) 및 페이지 버퍼 회로(130)에 다른 제어 신호들을 더 제공할 수 있다.
전압 생성기(140)는 전압 제어 신호(CTRL_vol)를 기반으로 프로그램, 독출, 및 소거 동작들을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성기(140)는 워드 라인 전압(VWL), 스트링 선택 라인 전압(VSSL) 및 그라운드 선택 라인 전압(VGSL)을 생성할 수 있고, 생성된 워드 라인 전압(VWL), 스트링 선택 라인 전압(VSSL) 및 그라운드 선택 라인 전압(VGSL)을 로우 디코더(150)에 제공할 수 있다. 예를 들어, 전압 생성기(140)는 워드 라인 전압(VWL)으로서 프로그램 전압, 패스 전압, 독출 전압, 프로그램 검증 전압, 소거 전압 등을 생성할 수 있다. 또한, 전압 생성기(140)는 비트 라인 전압 및 공통 소스 라인 전압 등을 더 생성할 수 있다.
로우 디코더(150)는 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 하나를 선택할 수 있고, 복수의 스트링 선택 라인들(SSL) 중 하나를 선택할 수 있다. 예를 들어, 프로그램 동작 시, 로우 디코더(150)는 프로그램 실행 구간에 선택 워드 라인으로 프로그램 전압을 인가하고, 프로그램 검증 구간에 선택 워드 라인으로 프로그램 검증 전압을 인가할 수 있다. 페이지 버퍼 회로(130)는 컬럼 어드레스(Y_ADDR)에 응답하여 복수의 비트 라인들(BL) 중 적어도 하나의 비트 라인을 선택할 수 있다. 페이지 버퍼 회로(130)는 동작 모드에 따라 기입 드라이버 또는 감지 증폭기(sense amplifier)로서 동작할 수 있다.
도 3은 본 개시의 일 실시예에 따른 메모리 블록(BLK)을 나타내는 회로도이다.
도 3을 참조하면, 메모리 블록(BLK)은 도 2의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 메모리 블록(BLK)은 비트 라인들(BL1 내지 BL3), 스트링 선택 라인들(SSL1 내지 SSL3), 워드 라인들(WL1 내지 WL8) 및 그라운드 선택 라인들(GSL1 내지 GSL3)에 연결될 수 있고, 수직 방향(VD)을 따라 각각 연장된 낸드 스트링들 또는 셀 스트링들(NS11 내지 NS33)을 포함할 수 있다. 여기서, 셀 스트링들의 개수, 워드 라인들의 개수, 비트 라인들의 개수, 그라운드 선택 라인의 개수, 스트링 선택 라인들의 개수는 실시예에 따라 다양하게 변경될 수 있다.
비트 라인들(BL1 내지 BL3)은 제1 방향 또는 제1 수평 방향(HD1)을 따라 연장될 있고, 워드 라인들(WL1 내지 WL8)은 제2 방향 또는 제2 수평 방향(HD2)을 따라 연장될 수 있다. 제1 비트 라인(BL1)과 공통 소스 라인(CSL) 사이에 셀 스트링들(NS11, NS21, NS31)이 위치하고, 제2 비트 라인(BL2)과 공통 소스 라인(CSL) 사이에 셀 스트링들(NS12, NS22, NS32)이 위치하고, 제3 비트 라인(BL3)과 공통 소스 라인(CSL) 사이에 셀 스트링들(NS13, NS23, NS33)이 위치할 수 있다.
예를 들어, 셀 스트링(NS11)은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MCs) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 스트링 선택 트랜지스터(SST)는 대응하는 스트링 선택 라인(SSL1)에 연결되며, 메모리 셀들(MCs)은 대응하는 워드 라인들(WL1 내지 WL8)에 각각 연결될 수 있다. 그라운드 선택 트랜지스터(GST)는 대응하는 그라운드 선택 라인(GSL1)에 연결될 수 있다.
일부 실시예들에서, 메모리 블록(BLK)은 비트 라인들(BL1 내지 BL3)과 스트링 선택 라인들(SSL1 내지 SSL3) 사이의 상부 GIDL 소거 제어 라인들을 더 포함할 수 있고, 각 셀 스트링은 적어도 하나의 상부 GIDL 소거 제어 라인에 연결되는 적어도 하나의 상부 GIDL 소거 제어 트랜지스터를 더 포함할 수 있다. 일부 실시예들에서, 메모리 블록(BLK)은 그라운드 선택 라인들(GSL1 내지 GSL3)과 공통 소스 라인(CSL) 사이의 하부 GIDL 소거 제어 라인들을 더 포함할 수 있고, 각 셀 스트링은 적어도 하나의 하부 GIDL 소거 제어 라인에 연결되는 적어도 하나의 하부 GIDL 소거 제어 트랜지스터를 더 포함할 수 있다.
도 4는 본 개시의 일 실시예에 따른 메모리 블록(BLKa)을 나타내는 사시도이다.
도 4를 참조하면, 메모리 블록(BLKa)은 도 2의 복수의 메모리 블록들(BLK1 내지 BLKz) 중 하나에 대응할 수 있다. 메모리 블록(BLKa)은 기판(SUB)에 대해 수직 방향(VD)으로 형성되어 있다.
기판(SUB)은 제1 도전형(예를 들어, p 타입)을 가지며, 기판(SUB) 상에 제2 수평 방향 또는 제2 방향(HD2)을 따라 신장된다. 일 실시예에서, 제2 도전형(예를 들어, n 타입)의 불순물들이 도핑된 공통 소스 라인(CLS)이 기판(SUB)에 제공될 수 있다. 일 실시예에서, 기판(SUB)은 폴리실리콘으로 구현될 수 있고, 기판(SUB) 상에 평판(plate)형의 공통 소스 라인(CSL)이 배치될 수도 있다. 기판(SUB) 상에, 제2 방향(HD2)을 따라 신장되는 복수의 절연막들(IL)이 수직 방향(VD)을 따라 순차적으로 제공되며, 복수의 절연막들(IL)은 수직 방향(VD)을 따라 특정 거리만큼 이격된다. 예를 들어, 복수의 절연막들(IL)은 실리콘 산화물과 같은 절연 물질을 포함할 수 있다.
기판(SUB) 상에, 제1 수평 방향 또는 제1 방향(HD1)을 따라 순차적으로 배치되며, 수직 방향(VD)을 따라 복수의 절연막들(IL)을 관통하는 복수의 필라들(pillars)(P)이 제공된다. 예를 들어, 복수의 필라들(P)은 복수의 절연막들(IL)을 관통하여 기판(SUB)과 컨택할 것이다. 구체적으로, 각 필라(P)의 표면층(surface layer)(S)은 제1 타입을 갖는 실리콘 물질을 포함할 수 있고, 채널 영역으로 기능할 수 있다. 이에 따라, 일부 실시예들에서, 필라(P)는 채널 구조물 또는 수직 채널 구조물이라고 지칭할 수 있다. 한편, 각 필라(P)의 내부층(I)은 실리콘 산화물과 같은 절연 물질 또는 에어 갭(air gap)을 포함할 수 있다.
절연막들(IL), 필라들(P) 및 기판(SUB)의 노출된 표면을 따라 전하 저장층(charge storage layer, CS)이 제공된다. 전하 저장층(CS)은 게이트 절연층(또는 '터널링 절연층'이라고 지칭함), 전하 트랩층 및 블로킹 절연층을 포함할 수 있다. 예를 들어, 전하 저장층(CS)은 ONO(oxide-nitride-oxide) 구조를 가질 수 있다. 또한, 전하 저장층(CS)의 노출된 표면 상에, 그라운드 선택 라인(GSL), 워드 라인들(WL1 내지 WL8) 및 스트링 선택 라인(SSL)과 같은 게이트 전극들(GE)이 제공된다. 그라운드 선택 라인(GSL), 워드 라인들(WL1 내지 WL8) 및 스트링 선택 라인(SSL)의 개수는 실시예에 따라 다양하게 변경될 수 있다.
복수의 필라들(P) 상에는 드레인 컨택들 또는 드레인들(DR)이 각각 제공된다. 예를 들어, 드레인들(DR)은 제2 도전형을 갖는 불순물들이 도핑된 실리콘 물질을 포함할 수 있다. 드레인들(DR) 상에, 제1 방향(HD1)으로 신장되고 제2 방향(HD2)을 따라 특정 거리만큼 이격되어 배치된 비트 라인들(BL1 내지 BL3)이 제공된다.
도 5는 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 5를 참조하면, 메모리 컨트롤러(200)는 프로세서(201), 호스트 인터페이스 회로(203), 버퍼 할당 회로(210), 메인 버퍼 메모리(220)를 포함할 수 있고, 호스트 인터페이스 회로(203)는 메모리 컨트롤러(200)의 외부에 배치되는 서브 버퍼 메모리(300)와 연결될 수 있다.
호스트 인터페이스 회로(203)는 호스트(HOST)와 메모리 시스템(10) 사이의 인터페이싱을 수행할 수 있다. 예를 들어, 호스트 인터페이스 회로(203)는 호스트(HOST)로부터 수신된 커맨드를 버퍼 할당 회로(210)에게 제공할 수 있다. 구체적으로, 호스트 인터페이스 회로(203)는 버퍼 할당 회로(210)의 커맨드 큐 관리 회로(213)에게 커맨드를 제공하여, 수신된 커맨드들이 순차적으로 처리되도록 관리할 수 있다. 다른 예를 들어, 호스트 인터페이스 회로(203)는 버퍼 메모리의 할당 및 해제(release)를 요청할 수 있다. 호스트 인터페이스 회로(203)는 버퍼 할당 회로(210)에게 버퍼 할당을 요청하여 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300)를 버퍼 메모리로 할당할 수 있다. 호스트 인터페이스 회로(203)는 버퍼 할당 회로(210)로부터 동작 완료 응답(operation done response)를 수신하고, 버퍼 할당 회로(210)에게 기 할당된 버퍼 메모리의 해제를 요청할 수도 있다.
다양한 실시예들에 따라, 버퍼 할당 회로(210)는 특수 기능 레지스터(special function register)(211), 커맨드 큐 관리 회로(command queue manage circuit)(213), 버퍼 할당 핸들링 회로(buffer allocation handling circuit)(215), 버퍼 할당 확인 회로(buffer allocation checker circuit)(217) 및 모니터링 회로(219)를 포함할 수 있다.
특수 기능 레지스터(211)는 버퍼 할당 회로(210)의 설정 값들을 저장할 수 있다. 예를 들어, 특수 기능 레지스터(211)는 복수의 비율들에 상응하는 값들을 저장할 수 있다. 프로세서(201)는 특수 기능 레지스터(211)에게 제어 신호를 제공함으로써 상기 복수의 비율들 중 어느 하나의 비율을 지시하는 값에 기반하여 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 조절할 수 있다. 보다 구체적으로, 특수 기능 레지스터(211)는 프로세서(201)로부터 상기 제어 신호를 수신하고, 상기 수신된 제어 신호가 지시하거나 상기 제어 신호에 상응하는 할당 비율을 식별할 수 있다. 특수 기능 레지스터(211)는 상기 식별된 할당 비율을 버퍼 할당 핸들링 회로(215)에 제공할 수 있다. 버퍼 할당 핸들링 회로(215)는 상기 할당 비율에 기반하여 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300)에 쓰기가 수행될 시작 지점을 나타내는 버퍼 포인터 값을 호스트 인터페이스 회로(203)에게 리턴(return)할 수 있다. 프로세서(201)가 특수 기능 레지스터(211)에게 제어 신호를 제공하는 경우, 버퍼 할당 확인 회로(217)는 비활성화의 상태일 수 있다.
특수 기능 레지스터(211)는 프로세서(201)에게 모니터링 결과를 리턴할 수 있다. 상기 모니터링 결과는, 메모리 시스템(10)의 처리 성능 즉, 퍼포먼스(performance)를 수치화한 값일 수 있다. 예를 들어, 상기 퍼포먼스는 단위 시간당 할당되는 버퍼 메모리의 크기일 수 있다. 프로세서(201)는 특수 기능 레지스터(211)에게 모니터링을 수행하는 시간 간격을 지시하는 제어 신호를 제공할 수 있다. 특수 기능 레지스터(211)는 상기 제어 신호에 기반하여 상기 시간 간격마다 모니터링 회로(219)로부터 모니터링 결과를 수신 및 저장할 수 있다. 특수 기능 레지스터(211)는 프로세서(201)의 퍼포먼스 체크 요청을 수신할 수 있고, 상기 요청에 응답하여 모니터링 결과를 프로세서(201)에게 제공할 수 있다. 일 실시예에 따라, 프로세서(201)는 상기 모니터링 결과에 기반하여 할당 비율을 변경하는 제어 신호를 특수 기능 레지스터(211)에게 리턴할 수도 있다.
커맨드 큐 관리 회로(213)는 호스트(HOST)로부터 수신된 커맨드들을 저장 및 관리할 수 있다. 예를 들어, 커맨드 큐 관리 회로(213)는 호스트 인터페이스 회로(203)로부터 수신된 복수의 커맨드들 중 미처리된 커맨드들을 순서에 따라 저장할 수 있다. 예를 들어, 커맨드 큐 관리 회로(213)는 FIFO(first in first out)에 따라 복수의 커맨드들이 수행될 수 있도록 커맨드 큐를 관리할 수 있다.
버퍼 할당 확인 회로(217)는 메모리 컨트롤러(200)의 동작 모드에 기반하여 활성화 또는 비활성화될 수 있다. 예를 들어, 메모리 컨트롤러(200)는 제1 동작 모드에서 동작할 수 있다. 상기 제1 동작 모드는, 모니터링 결과에 무관하게 미리 설정된 비율에 따라 버퍼 메모리를 할당하는 모드일 수 있다. 상기 제1 동작 모드는, 고정 모드, 부동 모드, 불변 모드를 포함하는 다양한 용어들로 지칭될 수 있다. 즉, 메모리 컨트롤러(200)의 동작 모드가 상기 제1 동작 모드인 경우, 프로세서(201)가 특수 기능 레지스터(211)를 통해 지정한 비율에 따라 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 버퍼 할당 비율이 결정될 수 있다. 또한, 상기 제1 동작 모드로 동작하는 동안, 모니터링 회로(219)로부터 출력되는 퍼포먼스 결과 값이 실시간으로 낮아지더라도 상기 미리 설정된 비율은 변경되지 않을 수 있다. 버퍼 할당 확인 회로(217)는, 메모리 컨트롤러(200)가 상기 제1 동작 모드로 동작하는 동안, 비활성화 상태일 수 있다. 예를 들어, 프로세서(201)는 메모리 컨트롤러(200)의 동작 모드를 상기 제1 동작 모드로 설정하고, 상기 제1 동작 모드에 응답하여 버퍼 할당 확인 회로(217)에게 인액티브(또는 디스에이블) 신호를 제공할 수 있다. 버퍼 할당 확인 회로(217)는 상기 신호에 응답하여 비활성화, 인액티브, 또는 아이들(idle) 상태에 진입할 수 있다.
다른 예를 들어, 메모리 컨트롤러(200)는 제2 동작 모드에서 동작할 수 있다. 상기 제2 동작 모드는, 모니터링 결과에 따라 버퍼 메모리를 할당하는 비율이 변경되는 모드일 수 있다. 상기 제2 동작 모드는, 유동 모드, 플렉서블(flexible) 모드, 어댑티브(adaptive) 모드를 포함하는 다양한 용어들로 지칭될 수 있다. 프로세서(201)는 메모리 컨트롤러(200)의 동작 모드를 상기 제2 동작 모드로 설정하고, 상기 제2 동작 모드에 응답하여 버퍼 할당 확인 회로(217)에게 액티브(또는 인에이블) 신호를 제공할 수 있다. 버퍼 할당 확인 회로(217)는 상기 신호에 응답하여 활성화, 액티브 상태에 진입할 수 있다. 버퍼 할당 확인 회로(217)는 활성 상태에 진입하고, 모니터링 회로(219)로부터 퍼포먼스 결과 값을 수신할 수 있다. 버퍼 할당 확인 회로(217)는 퍼포먼스 결과 값이 임계 값보다 미만인 경우, 메모리 시스템(10)의 성능을 향상시키기 위해 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 변경할 수 있다.
일 실시예에 따라, 프로세서(201)는 트리거 이벤트를 검출함에 응답하여, 동작 모드를 변경할 수 있다. 예를 들어, 프로세서(201)는 초기 동작 시에 항상 제1 동작 모드에서 동작하도록 구성될 수 있다. 프로세서(201)는 미리 정의된 시간 간격마다 퍼포먼스 결과 값을 요청할 수 있다. 프로세서(201)는 상기 퍼포먼스 결과 값이 트리거 이벤트를 위한 임계 값보다 미만인 것을 식별할 수 있다. 이 때, 프로세서(201)는 메모리 시스템(10)의 성능 향상을 위해 메모리 컨트롤러(200)의 동작 모드를 상기 제1 동작 모드로부터 상기 제2 동작 모드로 변경할 수 있다. 예를 들어, 프로세서(201)는 상기 트리거 이벤트를 위한 임계 값보다 퍼포먼스 결과 값이 낮은 경우, 인에이블 신호를 버퍼 할당 확인 회로(217)에게 제공할 수 있다.
도 6은 본 개시의 일 실시예에 따른 버퍼 할당 핸들링 회로의 동작을 나타내는 순서도이다.
도 6을 참조하면, 동작 610에서, 버퍼 할당 핸들링 회로(215)는 할당 요청을 수신할 수 있다. 호스트 인터페이스 회로(203)는 호스트(HOST)로부터 커맨드를 수신하는 것에 응답하여, 버퍼 할당 회로(210)의 커맨드 큐 관리 회로(213)에게 수신한 커맨드를 전달할 수 있다. 커맨드 큐 관리 회로(213)는 호스트 인터페이스 회로(203)가 수신한 커맨드를 전달받고, 상기 커맨드를 처리하기 위해 필요한 버퍼 사이즈를 계산하여 버퍼 할당 핸들링 회로(215)에 할당 요청을 전달할 수 있다. 예를 들어, 커맨드 큐 관리 회로(213)는 (M + N) 크기의 버퍼 메모리를 요청할 수 있다.
동작 620에서, 버퍼 할당 핸들링 회로(215)는 메모리 컨트롤러(200)의 동작 모드가 제1 동작 모드인지 식별할 수 있다. 예를 들어, 메모리 컨트롤러(200)는 버퍼 할당 회로(210) 중 버퍼 할당 확인 회로(217)를 비활성화하는 제1 동작 모드, 버퍼 할당 확인 회로(217)를 활성화하는 제2 동작 모드 중 어느 하나의 동작 모드로 동작할 수 있다. 버퍼 할당 핸들링 회로(215)는 특수 기능 레지스터(211)에게 동작 모드를 식별하기 위한 요청을 송신할 수도 있고, 버퍼 할당 확인 회로(217)에게 상태 요청을 송신하여 동작 모드를 식별할 수도 있다.
동작 630에서, 버퍼 할당 핸들링 회로(215)는 특수 기능 레지스터(211)로부터 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율 정보를 획득할 수 있다. 즉, 동작 620에서 식별된 동작 모드가 제1 동작 모드인 경우, 고정된 할당 비율을 획득해야 한다. 따라서, 버퍼 할당 핸들링 회로(215)는 특수 기능 레지스터(211)에게 할당 비율 정보를 요청하고, 프로세서(201)에 의해 설정된 비율을 나타내는 할당 비율 정보를 획득할 수 있다.
동작 640에서, 버퍼 할당 핸들링 회로(215)는 버퍼 할당 확인 회로(217)로부터 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율 정보를 획득할 수 있다. 즉, 동작 620에서 식별된 동작 모드가 제2 동작 모드인 경우, 할당 비율은 모니터링 회로(219)의 출력인 퍼포먼스 결과 값에 따라 가변적일 수 있다. 따라서, 버퍼 할당 핸들링 회로(215)는 버퍼 할당 확인 회로(217)에게 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 요청하여 할당 비율 정보를 획득할 수 있다.
동작 650에서, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)의 할당 순서인지 판단할 수 있다. 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)의 할당 순서가 아닌 경우, 서브 버퍼 메모리(300)에 버퍼 메모리를 할당할 순서일 수 있다.
동작 660에서 버퍼 할당 핸들링 회로(215)는 서브 버퍼 메모리(300)가 현재 전체 점유 상태인지 확인할 수 있다. 상기 전체 점유 상태는, 서브 버퍼 메모리(300)에 할당된 버퍼 용량을 모두 사용한 상태를 지칭할 수 있다. 또는, 상기 전체 점유 상태는, 서브 버퍼 메모리(300)에 할당된 버퍼 메모리의 크기만큼 쓰기를 기 수행한 상태를 지칭할 수 있다. 버퍼 할당 핸들링 회로(215)는 버퍼 할당 확인 회로(217)에게 서브 버퍼 메모리(300)의 점유 상태에 대한 정보를 요청할 수 있다. 버퍼 할당 확인 회로(217)는 서브 버퍼 메모리(300)에 버퍼 메모리를 할당할 때마다, 기 할당된 크기를 모니터링할 수 있다. 따라서, 버퍼 할당 확인 회로(217)는 서브 버퍼 메모리(300)에 기 할당된 크기와 서브 버퍼 메모리(300)의 버퍼 용량이 일치하는 경우, 전체 점유 상태라고 결정할 수 있다. 일 실시예에 따라, 버퍼 할당 확인 회로(217)는 버퍼 할당 핸들링 회로(215)로부터 점유 상태에 대한 정보를 요청함에 응답하여, 전체 점유 상태인지 아닌지 여부만을 응답할 수 있다. 예를 들어, 버퍼 할당 확인 회로(217)는 전체 점유 상태인 경우, "로직 하이"의 1 비트를 응답할 수 있고, 전체 점유 상태가 아닌 부분 점유 상태인 경우, "로직 로우"의 1 비트를 응답할 수도 있다. 일 실시예에 따라, 버퍼 할당 확인 회로(217)는 서브 버퍼 메모리(300)의 버퍼 용량 중 얼마나 기 할당되었는지 구체적인 값을 응답할 수도 있다. 이 경우, 버퍼 할당 확인 회로(217)가 버퍼 할당 핸들링 회로(215)에게 응답하는 신호는 복수의 비트들을 포함할 수 있다. 버퍼 할당 핸들링 회로(215)는 버퍼 할당 확인 회로(217)로부터 서브 버퍼 메모리(300)의 점유 상태에 대한 정보를 수신하고, 서브 버퍼 메모리(300)가 전체 점유 상태가 아닌 경우, 서브 버퍼 메모리(300)에 할당된 버퍼 용량 중 아직 쓰기를 수행할 수 있는 용량이 남아있기 때문에 서브 버퍼 메모리(300)에 버퍼 메모리를 할당할 수 있다. 예를 들어, 버퍼 할당 핸들링 회로(215)는 서브 버퍼 메모리(300) 중 쓰기 동작이 시작될 위치를 지시하는 버퍼 포인터를 생성할 수 있다. 호스트 인터페이스 회로(203)는 커맨드 큐 관리 회로(213)를 통해 상기 버퍼 포인터를 전달받고, 상기 버퍼 포인터가 지시하는 서브 버퍼 메모리(300)의 어드레스부터 쓰기 동작이 수행되도록 제어할 수 있다. 다양한 실시예들에 따라, 버퍼 할당 핸들링 회로(215)는, 버퍼 할당 확인 회로(217)에게 점유 상태에 대한 정보를 요청하기 이전에, 호스트 인터페이스 회로(203)로부터 서브 버퍼 메모리(300)가 전체 점유 상태임을 지시하는 정보를 수신할 수도 있다. 예를 들어, 서브 버퍼 메모리(300)는 버퍼 메모리가 모두 점유되는 것에 응답하여, 호스트 인터페이스 회로(203)에게 점유 플래그를 송신할 수도 있다. 상기 점유 플래그는, 버퍼 메모리(메인 버퍼 메모리(220), 또는 서브 버퍼 메모리(300))가 전체 점유 상태이며, 버퍼 해제가 수행되어야 함을 지시하기 위한 플래그 신호일 수 있다. 호스트 인터페이스 회로(203)는 상기 수신된 점유 플래그를 버퍼 할당 핸들링 회로(215)에게 제공하여, 서브 버퍼 메모리(300)가 전체 점유 상태임을 지시할 수도 있다.
동작 670에서, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)가 현재 전체 점유 상태인지 확인할 수 있다. 상기 전체 점유 상태는, 메인 버퍼 메모리(220)에 할당된 버퍼 용량을 모두 사용한 상태를 지칭할 수 있다. 또는, 상기 전체 점유 상태는, 메인 버퍼 메모리(220)에 할당된 버퍼 메모리의 크기만큼 쓰기를 기 수행한 상태를 지칭할 수 있다. 버퍼 할당 핸들링 회로(215)는 버퍼 할당 확인 회로(217)에게 메인 버퍼 메모리(220)의 점유 상태에 대한 정보를 요청할 수 있다. 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)에 버퍼 메모리를 할당할 때마다, 기 할당된 크기를 모니터링할 수 있다. 따라서, 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)에 기 할당된 크기와 메인 버퍼 메모리(220)의 버퍼 용량이 일치하는 경우, 전체 점유 상태라고 결정할 수 있다. 일 실시예에 따라, 버퍼 할당 확인 회로(217)는 버퍼 할당 핸들링 회로(215)로부터 점유 상태에 대한 정보를 요청함에 응답하여, 전체 점유 상태인지 아닌지 여부만을 응답할 수 있다. 예를 들어, 버퍼 할당 확인 회로(217)는 전체 점유 상태인 경우, "로직 하이"의 1 비트를 응답할 수 있고, 전체 점유 상태가 아닌 부분 점유 상태인 경우, "로직 로우"의 1 비트를 응답할 수도 있다. 다른 실시예에 따라, 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)의 버퍼 용량 중 얼마나 기 할당되었는지 구체적인 값을 응답할 수도 있다. 이 경우, 버퍼 할당 확인 회로(217)가 버퍼 할당 핸들링 회로(215)에게 응답하는 신호는 복수의 비트들을 포함할 수 있다. 메인 버퍼 메모리(220)가 전체 점유 상태가 아닌 경우, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)에 버퍼 메모리를 할당할 수 있다. 예를 들어, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220) 중 쓰기 동작이 시작될 위치를 지시하는 버퍼 포인터를 생성할 수 있다. 호스트 인터페이스 회로(203)는 커맨드 큐 관리 회로(213)를 통해 상기 버퍼 포인터를 전달받고, 상기 버퍼 포인터가 지시하는 메인 버퍼 메모리(220)의 어드레스부터 쓰기 동작이 수행되도록 제어할 수 있다. 다양한 실시예들에 따라, 버퍼 할당 핸들링 회로(215)는, 버퍼 할당 확인 회로(217)에게 점유 상태에 대한 정보를 요청하기 이전에, 호스트 인터페이스 회로(203)로부터 메인 버퍼 메모리(220)가 전체 점유 상태임을 지시하는 정보를 수신할 수도 있다. 예를 들어, 메인 버퍼 메모리(220)는 버퍼 메모리가 모두 점유되는 것에 응답하여, 호스트 인터페이스 회로(203)에게 점유 플래그를 송신할 수도 있다. 상기 점유 플래그는, 버퍼 메모리(메인 버퍼 메모리(220), 또는 서브 버퍼 메모리(300))가 전체 점유 상태이며, 버퍼 해제가 수행되어야 함을 지시하기 위한 플래그 신호일 수 있다. 호스트 인터페이스 회로(203)는 상기 수신된 점유 플래그를 버퍼 할당 핸들링 회로(215)에게 제공하여, 메인 버퍼 메모리(220)가 전체 점유 상태임을 지시할 수도 있다.
동작 680에서, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)가 해제될 때까지 커맨드를 지연할 수 있다. 예를 들어, 동작 670에서, 메인 버퍼 메모리(220)가 전체 점유 상태로 식별될 수 있다. 즉, 동작 670 시점에 메인 버퍼 메모리(220)가 전체 점유 상태이므로, 메인 버퍼 메모리(220)에 버퍼를 할당할 수 있는 여유 공간이 없다. 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)가 해제될 때까지 커맨드 큐 관리 회로(213)에 상주중인 커맨드를 지연시킬 수 있다. 일 실시예에 따라, 버퍼 할당 핸들링 회로(215)는 미리 정의된 시간만큼 커맨드를 지연시킬 수 있다. 상기 미리 정의된 시간은, 메인 버퍼 메모리(220)가 점유되지 않은 상태에서 전체 점유 상태로 천이된 이후 해제되는데 소요되는 평균 시간보다 긴 시간일 수 있다. 일 실시예에 따라, 프로세서(201)는 상기 미리 정의된 시간만큼 커맨드를 지연시키고, 메인 버퍼 메모리(220)에 할당함으로써 메모리 시스템(10)의 성능을 개선할 수 있다. 메인 버퍼 메모리(220)는 메모리 컨트롤러(200)의 칩 내부에 구현되고, 처리 속도도 서브 버퍼 메모리(300)보다 빠르다. 따라서, 단순히 메인 버퍼 메모리(220)가 전체 점유 상태에 있다는 것만으로, 메인 버퍼 메모리(220)에 할당할 버퍼를 서브 버퍼 메모리(300)에 할당하는 경우, 성능 하락이 발생할 수 있다. 왜냐하면, 메모리 컨트롤러(200) 칩 외부에 배치되는 서브 버퍼 메모리(300)에 버퍼를 할당함으로써 발생하는 물리적 신호 지연, 처리 속도가 낮은 서브 버퍼 메모리(300)에 의해 발생하는 처리 지연 등을 포함하는 성능 하락보다, 커맨드 큐에 상주하는 커맨드를 미리 정의된 시간만큼 지연시키더라도 메인 버퍼 메모리(220)에 버퍼를 할당하는 것이 더욱 성능을 향상시키기 때문이다.
동작 690에서, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)가 현재 전체 점유 상태인지 확인할 수 있다. 버퍼 할당 핸들링 회로(215)는 상기 미리 정의된 시간이 경과함에 응답하여 버퍼 할당 확인 회로(217)에게 메인 버퍼 메모리(220)의 점유 상태에 대한 정보를 다시 요청할 수 있다. 상기 미리 정의된 시간 동안 메인 버퍼 메모리(220)의 해제가 완료된 경우, 메인 버퍼 메모리(220)는 전체 점유 상태가 아닐 수 있다. 메인 버퍼 메모리(220)가 전체 점유 상태가 아닌 경우, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)에 버퍼 메모리를 할당할 수 있다. 예를 들어, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220) 중 쓰기 동작이 시작될 위치를 지시하는 버퍼 포인터를 생성할 수 있다. 호스트 인터페이스 회로(203)는 커맨드 큐 관리 회로(213)를 통해 상기 버퍼 포인터를 전달받고, 상기 버퍼 포인터가 지시하는 메인 버퍼 메모리(220)의 어드레스부터 쓰기 동작이 수행되도록 제어할 수 있다.
다른 실시예에 따라, 동작 690에서 상기 미리 정의된 시간이 경과한 이후에 여전히 메인 버퍼 메모리(220)가 전체 점유 상태일 수 있다. 이 경우, 버퍼 할당 핸들링 회로(215)는 메인 버퍼 메모리(220)에 쓰기 동작을 수행하는 것을 스킵하고, 서브 버퍼 메모리(300)에 쓰기 동작을 수행하기 위한 동작 660을 수행할 수 있다.
도 7은 본 개시의 일 실시예에 따른 프로세서의 동작을 나타내는 순서도이다.
도 7을 참조하면, 동작 710에서, 프로세서(201)는 동작 모드를 제1 동작 모드로 설정할 수 있다. 프로세서(201)는 버퍼 할당을 위한 프로세스의 초기 동작 시, 제1 동작 모드를 우선적으로 설정하도록 구성될 수 있다. 즉, 프로세서(201)는 버퍼 할당 확인 회로(217)에 디스에이블 신호를 전달하여 버퍼 할당 확인 회로(217)를 비활성화할 수 있다.
동작 720에서, 프로세서(201)는 특수 기능 레지스터(211)에 제어 신호를 전달할 수 있다. 일 실시예에 따라, 상기 제어 신호는, 특수 기능 레지스터(211)가 저장하는 복수의 할당 비율들 중 어느 하나의 비율을 선택하기 위한 신호일 수 있다. 예를 들어, 프로세서(201)는 상기 제어 신호를 특수 기능 레지스터(211)에 제공함으로써 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 1:9로 설정할 수 있다. 또는, 프로세서(201)는 특수 기능 레지스터(211)에 할당 비율을 직접적으로 지시하는 할당 비율 정보를 직접 전달할 수도 있다.
동작 730에서, 프로세서(201)는 미리 설정된 시간 간격마다 퍼포먼스 체크를 요청할 수 있다. 예를 들어, 프로세서(201)는 상기 미리 설정된 시간 간격마다 특수 기능 레지스터(211)에게 퍼포먼스 체크 요청을 전달할 수 있다. 특수 기능 레지스터(211)는 모니터링 회로(219)로부터 수신 및 저장하고 있는 퍼포먼스 결과 값을 프로세서(201)에게 제공할 수 있다. 다른 실시예에 따라, 프로세서(201)는 상기 미리 설정된 시간 간격마다 모니터링 회로(219)에게 직접 퍼포먼스 체크를 요청할 수도 있다.
동작 740에서, 프로세서(201)는 단위 시간 동안 모니터링 회로(219)로부터 수신되는 서브 버퍼 메모리(300)의 점유 플래그의 횟수가 임계 값을 초과하였는지 판단할 수 있다. 상기 점유 플래그는, 서브 버퍼 메모리(300)가 전체 점유 상태임을 나타내기 위한 플래그일 수 있다.
동작 750에서, 프로세서(201)는 동작 모드를 제1 동작 모드로부터 제2 동작 모드로 변경할 수 있다. 단위 시간 동안 수신된 점유 플래그의 횟수가 임계 값을 초과하는 경우, 현재 미리 설정된 값으로 고정된 할당 비율이 서브 버퍼 메모리(300)를 전체 점유 상태로 만들기 전에 커맨드들을 빠르게 처리하지 못하여 상기 점유 플래그가 자주 발생하는 것으로 이해할 수 있다. 따라서, 프로세서(201)는 고정된 할당 비율로 동작하는 제1 동작 모드를 제2 동작 모드로 변경할 수 있다.
동작 760에서, 프로세서(201)는 모니터링 결과 값에 따라 할당 비율을 가변적으로 설정할 수 있다. 메모리 컨트롤러(200)의 동작 모드가 제2 동작 모드로 변경됨에 응답하여, 버퍼 할당 확인 회로(217)는 활성화될 수 있다. 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 잔여(remaining) 버퍼 사이즈를 실시간으로 모니터링할 수 있다. 버퍼 할당 확인 회로(217)는 모니터링 결과 값 및 상기 잔여 버퍼 사이즈에 기반하여, 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 조정할 수 있다. 예를 들어, 제1 동작 모드에서 메인 버퍼 메모리(220) 대 서브 버퍼 메모리(300)의 할당 비율이 1:9인 경우, 제2 동작 모드에서 버퍼 할당 확인 회로(217)는 성능 개선을 위하여 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 1:1로 조정할 수 있다.
다양한 실시예들에 따라, 프로세서(201)는 제2 동작 모드로 동작하는 동안, 모니터링 결과 값이 타겟 퍼포먼스에 미치지 못하는 경우, 추가적으로 상기 할당 비율을 변경할 수 있다. 예를 들어, 타겟 퍼포먼스보다 모니터링 결과 값이 낮은 경우, 프로세서(201)는 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 9:1로 설정할 수 있다.
도 8은 본 개시의 일 실시예에 따른 버퍼 할당 확인 회로의 동작을 나타내는 순서도이다.
도 8을 참조하면, 동작 810에서, 버퍼 할당 확인 회로(217)는 커맨드의 유형에 기반하여 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 제1 비율을 결정할 수 있다. 예를 들어, 버퍼 할당 확인 회로(217)는 커맨드 큐에 상주중인 커맨드의 유형에 따라 상기 제1 비율을 가변적으로 설정할 수 있다. 예를 들어, 상기 커맨드의 유형이 시퀀셜 쓰기에 상응하는 경우, 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 1:1로 설정할 수 있다. 다른 예를 들어, 상기 커맨드의 유형이 랜덤 쓰기에 상응하는 경우, 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 1:9로 설정할 수 있다. 서브 버퍼 메모리(300)에 많이 할당하여 처리하더라도 최소 성능 요구를 만족할 수 있기 때문이다.
동작 820에서, 버퍼 할당 확인 회로(217)는 퍼포먼스 체크 요청을 수신하고, 모니터링 결과 값을 획득할 수 있다. 예를 들어, 프로세서(201)는 미리 정의된 시간 간격마다 버퍼 할당 확인 회로(217)에게 퍼포먼스 체크 요청을 전달할 수 있다. 버퍼 할당 확인 회로(217)는 상기 요청을 수신함에 응답하여, 모니터링 회로(219)로부터 퍼포먼스 결과 값을 수신할 수 있다.
동작 830에서, 버퍼 할당 확인 회로(217)는 퍼포먼스 결과 값이 임계 값보다 미만인지 판단할 수 있다. 상기 임계 값은 커맨드 큐에 상주중인 커맨드의 유형에 따라 상이할 수 있다. 버퍼 할당 확인 회로(217)는 퍼포먼스 결과 값이 임계 값보다 미만인 경우, 동작 840을 수행할 수 있다.
동작 840에서, 버퍼 할당 확인 회로(217)는 잔여 버퍼 사이즈를 식별할 수 있다. 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300)에 버퍼를 할당할 때마다 버퍼 할당을 기록하여 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300)의 잔여 메모리 크기를 모니터링할 수 있다.
동작 850에서, 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300)의 할당 비율을 제1 비율에서 제2 비율로 변경할 수 있다. 예를 들어, 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 제1 비율이 1:9이고, 서브 버퍼 메모리(300)의 잔여 버퍼 사이즈가 작은 경우, 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)의 비율을 가변적으로 증가시킬 수 있다. 예를 들어, 버퍼 할당 확인 회로(217)는 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율을 2:8 또는 3:7로 가변적으로 변경할 수 있다.
도 9는 본 개시의 일 실시예에 따른 메모리 시스템의 제1 동작 모드에 상응하는 신호 교환도이다.
도 9를 참조하면, 프로세서(201)는 버퍼 할당 회로(210)에게 버퍼 할당 확인 회로(217)의 비활성화를 지시하는 제어 신호를 제공할 수 있다. 즉, 버퍼 할당 회로(210)는 고정된 할당 비율에 따라 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)를 할당할 수 있다.
호스트 인터페이스 회로(203)는 버퍼 할당 회로(210)에게 버퍼 할당 요청을 제공할 수 있다. 호스트 인터페이스 회로(203)는 호스트(HOST)로부터 커맨드를 입력 받고, 커맨드를 수행하기 위한 버퍼 메모리를 할당해줄 것을 버퍼 할당 회로(210)에게 요청할 수 있다.
버퍼 할당 회로(210)는 동작 모드가 제1 동작 모드임을 식별할 수 있다. 구체적으로, 버퍼 할당 회로(210)는 버퍼 할당 회로(210)의 비활성화 상태를 식별함에 응답하여, 현재 동작 모드가 제1 동작 모드임을 식별할 수 있다. 또는, 버퍼 할당 회로(210)는 특수 기능 레지스터(211)에게 동작 모드를 리턴할 것을 요청하고, 리턴 값에 기반하여 현재 동작 모드를 식별할 수도 있다
버퍼 할당 회로(210)는 미리 정의된 할당 비율에 따라 버퍼 메모리를 할당할 수 있다. 버퍼 할당 회로(210)는 호스트 인터페이스 회로(203)로부터 수신된 버퍼 할당 요청에 응답하여, 특수 기능 레지스터(211)를 통해 할당 비율 정보를 획득할 수 있다. 특수 기능 레지스터(211)는 프로세서(201)로부터 상기 고정된 할당 비율에 대한 정보를 수신하여 저장할 수 있다.
버퍼 할당 회로(210)는 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300) 각각에 대한 버퍼 포인터를 생성하고, 호스트 인터페이스 회로(203)에게 응답할 수 있다. 예를 들어, 버퍼 할당 회로(210)는 메인 버퍼 메모리(220)의 영역 중 버퍼 영역으로 지정되어 쓰기가 시작되는 위치를 나타내는 제1 버퍼 포인터를 생성할 수 있다. 버퍼 할당 회로(210)는 서브 버퍼 메모리(300)의 영역 중 버퍼 영역으로 지정되어 쓰기가 시작되는 위치를 나타내는 제2 버퍼 포인터를 생성할 수 있다. 상기 제1 버퍼 포인터 및 상기 제2 버퍼 포인터는, 버퍼 할당 회로(210) 중 버퍼 할당 핸들링 회로(215)에 의해 생성될 수 있다. 버퍼 할당 회로(210)는 상기 제1 버퍼 포인터 및 상기 제2 버퍼 포인터를 호스트 인터페이스 회로(203)에게 제공할 수 있다.
호스트 인터페이스 회로(203)는 버퍼 할당 회로(210)로부터 수신한 버퍼 포인터에 기반하여, 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300)에 각각 쓰기 동작을 수행할 수 있다. 이 때, 메인 버퍼 메모리(220)에 대한 쓰기 동작과, 서브 버퍼 메모리(300)에 대한 쓰기 동작은 병렬적으로 수행될 수 있다. 예를 들어, 호스트(HOST)로부터 시퀀셜 쓰기 커맨드가 수신된 경우, 상기 시퀀셜 쓰기 커맨드의 데이터 중 적어도 일부는 메인 버퍼 메모리(220)에 프로그램되고, 상기 적어도 일부를 제외한 나머지 데이터는 서브 버퍼 메모리(300)에 프로그램될 수 있다.
프로세서(201)는 버퍼 할당 회로(210)에게 퍼포먼스 체크 요청을 전달할 수 있다. 상기 퍼포먼스 체크 요청은, 미리 정의된 시간 간격마다 프로세서(201)가 버퍼 할당 회로(210)에게 요청하도록 구성될 수 있다. 프로세서(201)는 제1 동작 모드에 따라 버퍼 할당 확인 회로(217)를 비활성화한 상태이기 때문에, 상기 미리 정의된 시간 간격마다 퍼포먼스 체크 요청을 버퍼 할당 회로(210)에게 송신할 수 있다.
버퍼 할당 회로(210)는 퍼포먼스 체크 요청에 응답하여, 모니터링 결과 값을 프로세서(201)에게 제공할 수 있다. 구체적으로, 버퍼 할당 회로(210) 중 모니터링 회로(219)는 단위 시간당 할당되는 버퍼 메모리의 크기를 모니터하여 저장할 수 있다. 예를 들어, 모니터링 회로(219)는 단위 시간당 할당되는 버퍼 메모리의 크기를 모니터하고, 모니터링 결과 값을 특수 기능 레지스터(211)에 저장할 수 있다. 버퍼 할당 회로(210)는 프로세서(201)로부터 퍼포먼스 체크 요청을 수신함에 응답하여, 특수 기능 레지스터(211)를 통해 상기 모니터링 결과 값을 응답할 수 있다.
프로세서(201)는 상기 모니터링 결과 값을 버퍼 할당 회로(210)로부터 수신하고, 모니터링 결과 값이 임계 값보다 미만인 경우, 변경된 할당 비율 정보를 버퍼 할당 회로(210)에게 제공할 수 있다. 예를 들어, 초기에 설정된 할당 비율이 1:9이고, 시퀀셜 쓰기 커맨드가 입력된 경우, 모니터링 결과 값이 열화되어 임계 값보다 낮을 수 있다. 따라서, 프로세서(201)는 성능 개선을 위하여 1:1의 할당 비율을 지시하는 변경된 할당 비율 정보를 버퍼 할당 회로(210)에게 제공할 수 있다.
호스트 인터페이스 회로(203)는 메인 버퍼 메모리(220)로부터 점유 플래그를 수신할 수 있다. 상기 점유 플래그는 메인 버퍼 메모리(220)가 전체 점유 상태에 있음을 나타내기 위한 플래그일 수 있다. 호스트 인터페이스 회로(203)는 메인 버퍼 메모리(220)를 해제(또는 릴리즈)하기 위하여 버퍼 할당 회로(210)에게 버퍼 해제 요청을 전달할 수 있다. 버퍼 할당 회로(210)는 메인 버퍼 메모리(220)의 버퍼 할당을 해제하고, 해제 완료 응답을 호스트 인터페이스 회로(203)에게 송신할 수 있다. 호스트 인터페이스 회로(203)는 해제 완료 응답에 기반하여 버퍼 할당 요청을 다시 전달할 수 있다. 버퍼 할당 회로(210)는 버퍼 포인터를 생성하여 호스트 인터페이스 회로(203)에게 제공할 수 있다. 이 때, 상기 버퍼 포인터는, 메인 버퍼 메모리(220)를 위한 상기 제1 버퍼 포인터에 상응할 수 있다. 호스트 인터페이스 회로(203)는 상기 응답된 버퍼 포인터에 기반하여 다시 데이터를 프로그램할 수 있다.
호스트 인터페이스 회로(203)는 서브 버퍼 메모리(300)로부터 점유 플래그를 수신할 수 있다. 상기 점유 플래그는 서브 버퍼 메모리(300)가 전체 점유 상태에 있음을 나타내기 위한 플래그일 수 있다. 호스트 인터페이스 회로(203)는 서브 버퍼 메모리(300)를 해제(또는 릴리즈)하기 위하여 버퍼 할당 회로(210)에게 버퍼 해제 요청을 전달할 수 있다. 버퍼 할당 회로(210)는 서브 버퍼 메모리(300)의 버퍼 할당을 해제하고, 해제 완료 응답을 호스트 인터페이스 회로(203)에게 송신할 수 있다. 호스트 인터페이스 회로(203)는 해제 완료 응답에 기반하여 버퍼 할당 요청을 다시 전달할 수 있다. 버퍼 할당 회로(210)는 버퍼 포인터를 생성하여 호스트 인터페이스 회로(203)에게 제공할 수 있다. 이 때, 상기 버퍼 포인터는, 서브 버퍼 메모리(300)를 위한 상기 제2 버퍼 포인터에 상응할 수 있다. 호스트 인터페이스 회로(203)는 상기 응답된 버퍼 포인터에 기반하여 다시 데이터를 프로그램할 수 있다.
도 10은 본 개시의 일 실시예에 따른 메모리 시스템의 제2 동작 모드에 상응하는 신호 교환도이다.
도 10을 참조하면, 프로세서(201)는 버퍼 할당 회로(210)에게 버퍼 할당 확인 회로(217)의 활성화를 지시하는 제어 신호를 제공할 수 있다. 즉, 버퍼 할당 회로(210)는 프로세서(201)의 개입 없이 가변적인 할당 비율에 따라 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)를 할당할 수 있다.
호스트 인터페이스 회로(203)는 버퍼 할당 회로(210)에게 버퍼 할당 요청을 제공할 수 있다. 호스트 인터페이스 회로(203)는 호스트(HOST)로부터 커맨드를 입력 받고, 커맨드를 수행하기 위한 버퍼 메모리를 할당해줄 것을 버퍼 할당 회로(210)에게 요청할 수 있다.
버퍼 할당 회로(210)는 동작 모드가 제2 동작 모드임을 식별할 수 있다. 구체적으로, 버퍼 할당 회로(210)는 버퍼 할당 회로(210)의 활성화 상태를 식별함에 응답하여, 현재 동작 모드가 제2 동작 모드임을 식별할 수 있다. 또는, 버퍼 할당 회로(210)는 특수 기능 레지스터(211)에게 동작 모드를 리턴할 것을 요청하고, 리턴 값에 기반하여 현재 동작 모드를 식별할 수도 있다
버퍼 할당 회로(210)는 로드된 커맨드의 유형에 기반한 할당 비율에 따라 버퍼 메모리를 할당할 수 있다. 버퍼 할당 회로(210)는 호스트 인터페이스 회로(203)로부터 수신된 버퍼 할당 요청에 응답하여, 커맨드 큐 관리 회로(213)에 상주중인 커맨드의 유형을 식별할 수 있다. 예를 들어, 커맨드 큐 관리 회로(213)에서 시퀀셜 쓰기 커맨드를 처리할 순서인 경우, 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율은 1:1일 수 있다. 다른 예를 들어, 커맨드 큐 관리 회로(213)에서 랜덤 쓰기, 시퀀셜 독출, 랜덤 독출 커맨드 중 하나를 처리할 순서인 경우, 메인 버퍼 메모리(220)와 서브 버퍼 메모리(300)의 할당 비율은 1:9일 수 있다.
버퍼 할당 회로(210)는 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300) 각각에 대한 버퍼 포인터를 생성하고, 호스트 인터페이스 회로(203)에게 응답할 수 있다. 예를 들어, 버퍼 할당 회로(210)는 메인 버퍼 메모리(220)의 영역 중 버퍼 영역으로 지정되어 쓰기가 시작되는 위치를 나타내는 제1 버퍼 포인터를 생성할 수 있다. 버퍼 할당 회로(210)는 서브 버퍼 메모리(300)의 영역 중 버퍼 영역으로 지정되어 쓰기가 시작되는 위치를 나타내는 제2 버퍼 포인터를 생성할 수 있다. 상기 제1 버퍼 포인터 및 상기 제2 버퍼 포인터는, 버퍼 할당 회로(210) 중 버퍼 할당 핸들링 회로(215)에 의해 생성될 수 있다. 버퍼 할당 회로(210)는 상기 제1 버퍼 포인터 및 상기 제2 버퍼 포인터를 호스트 인터페이스 회로(203)에게 제공할 수 있다.
호스트 인터페이스 회로(203)는 버퍼 할당 회로(210)로부터 수신한 버퍼 포인터에 기반하여, 메인 버퍼 메모리(220) 및 서브 버퍼 메모리(300)에 각각 쓰기 동작을 수행할 수 있다. 이 때, 메인 버퍼 메모리(220)에 대한 쓰기 동작과, 서브 버퍼 메모리(300)에 대한 쓰기 동작은 병렬적으로 수행될 수 있다. 예를 들어, 호스트(HOST)로부터 시퀀셜 쓰기 커맨드가 수신된 경우, 상기 시퀀셜 쓰기 커맨드의 데이터 중 적어도 일부는 메인 버퍼 메모리(220)에 프로그램되고, 상기 적어도 일부를 제외한 나머지 데이터는 서브 버퍼 메모리(300)에 프로그램될 수 있다.
버퍼 할당 회로(210)는 모니터링 회로(219)를 통해 퍼포먼스를 트래킹할 수 있다. 즉, 버퍼 할당 회로(210)는 모니터링 결과 값이 임계 값보다 미만인 경우, 할당 비율을 조정할 수 있다. 예를 들어, 랜덤 쓰기 커맨드를 수행하는 동안, 단위 시간당 할당되는 버퍼 메모리의 크기가 임계 값보다 미만인 경우, 상기 설정된 1:9의 할당 비율에서 메인 버퍼 메모리(220)의 비율을 증가시킬 수 있다.
호스트 인터페이스 회로(203)는 메인 버퍼 메모리(220)로부터 점유 플래그를 수신할 수 있다. 상기 점유 플래그는 메인 버퍼 메모리(220)가 전체 점유 상태에 있음을 나타내기 위한 플래그일 수 있다. 호스트 인터페이스 회로(203)는 메인 버퍼 메모리(220)를 해제(또는 릴리즈)하기 위하여 버퍼 할당 회로(210)에게 버퍼 해제 요청을 전달할 수 있다. 버퍼 할당 회로(210)는 메인 버퍼 메모리(220)의 버퍼 할당을 해제하고, 해제 완료 응답을 호스트 인터페이스 회로(203)에게 송신할 수 있다. 호스트 인터페이스 회로(203)는 해제 완료 응답에 기반하여 버퍼 할당 요청을 다시 전달할 수 있다. 버퍼 할당 회로(210)는 버퍼 포인터를 생성하여 호스트 인터페이스 회로(203)에게 제공할 수 있다. 이 때, 상기 버퍼 포인터는, 메인 버퍼 메모리(220)를 위한 상기 제1 버퍼 포인터에 상응할 수 있다. 호스트 인터페이스 회로(203)는 상기 응답된 버퍼 포인터에 기반하여 다시 데이터를 프로그램할 수 있다.
호스트 인터페이스 회로(203)는 서브 버퍼 메모리(300)로부터 점유 플래그를 수신할 수 있다. 상기 점유 플래그는 서브 버퍼 메모리(300)가 전체 점유 상태에 있음을 나타내기 위한 플래그일 수 있다. 호스트 인터페이스 회로(203)는 서브 버퍼 메모리(300)를 해제(또는 릴리즈)하기 위하여 버퍼 할당 회로(210)에게 버퍼 해제 요청을 전달할 수 있다. 버퍼 할당 회로(210)는 서브 버퍼 메모리(300)의 버퍼 할당을 해제하고, 해제 완료 응답을 호스트 인터페이스 회로(203)에게 송신할 수 있다. 호스트 인터페이스 회로(203)는 해제 완료 응답에 기반하여 버퍼 할당 요청을 다시 전달할 수 있다. 버퍼 할당 회로(210)는 버퍼 포인터를 생성하여 호스트 인터페이스 회로(203)에게 제공할 수 있다. 이 때, 상기 버퍼 포인터는, 서브 버퍼 메모리(300)를 위한 상기 제2 버퍼 포인터에 상응할 수 있다. 호스트 인터페이스 회로(203)는 상기 응답된 버퍼 포인터에 기반하여 다시 데이터를 프로그램할 수 있다.
도 11은 본 개시의 실시예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
도 11을 참조하면, SSD 시스템(1000)은 호스트(1110) 및 SSD(1200)를 포함할 수 있다. SSD(1200)는 신호 커넥터를 통해 호스트(1100)와 신호를 송수신하고, 전원 커넥터를 통해 전원을 입력 받을 수 있다. SSD(1200)는 SSD 컨트롤러(1210), 비휘발성 메모리 장치들(1221 내지 122n), 보조 전원 장치(1230) 및 버퍼 메모리(1240)를 포함할 수 있다. 버퍼 메모리(1240)는 도 1의 서브 버퍼 메모리(300)에 상응할 수 있다. 비휘발성 메모리 장치들(1221 내지 122n)은 NAND 플래시 메모리를 포함할 수 있다. 이 때, SSD(1200)는 도 1 내지 도 10을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다. 즉, SSD(1200)에 구비되는 SSD 컨트롤러(1210)는 전술한 실시예들에 따라 커맨드 큐에 상주중인 커맨드의 유형, 퍼포먼스 결과 값에 기반하여 서로 상이한 버퍼 메모리들(예: 메인 버퍼 메모리, 서브 버퍼 메모리) 간에 버퍼 할당 비율을 적응적으로 결정할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구 범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 메모리 장치를 제어하는 메모리 컨트롤러; 및
    상기 메모리 컨트롤러의 외부에 배치되는 서브 버퍼 메모리;를 포함하고,
    상기 메모리 컨트롤러는,
    상기 메모리 장치에 대한 메모리 동작을 제어하는 프로세서;
    상기 서브 버퍼 메모리와 상이하고, 상기 메모리 컨트롤러의 내부에 배치되는 메인 버퍼 메모리;
    상기 서브 버퍼 메모리와 상기 메인 버퍼 메모리 사이의 할당 비율을 제어하기 위한 버퍼 할당 회로를 포함하고,
    상기 프로세서는, 상기 버퍼 할당 회로의 동작 모드를 상기 할당 비율이 고정되는 동작 모드로 설정하고,
    상기 버퍼 할당 회로는, 호스트로부터 수신된 커맨드의 유형에 따라 상기 할당 비율을 가변적으로 설정하기 위한 버퍼 할당 확인 회로를 포함하고,
    상기 버퍼 할당 확인 회로는, 상기 동작 모드에서 동작되는 동안, 비활성화 상태인 는 것을 특징으로 하는, 메모리 시스템.
  2. 청구항 1에 있어서,
    상기 메인 버퍼 메모리는, SRAM(static RAM)에 상응하고,
    상기 서브 버퍼 메모리는, DRAM(dynamic RAM)에 상응하는 것을 특징으로 하는 메모리 시스템.
  3. 청구항 1에 있어서,
    상기 버퍼 할당 회로는,
    상기 프로세서로부터 상기 할당 비율을 지시하는 할당 비율 정보를 수신 및 저장하기 위한 특수 기능 레지스터;
    복수의 커맨드들을 관리하기 위한 커맨드 큐 관리 회로; 및
    상기 메인 버퍼 메모리와 상기 서브 버퍼 메모리의 버퍼 할당이 시작되는 위치를 나타내는 포인터를 생성하기 위한 버퍼 할당 핸들링 회로; 및
    커맨드의 유형에 따라 상기 할당 비율을 가변적으로 설정하기 위한 버퍼 할당 확인 회로;를 더 포함하는 것을 특징으로 하는 메모리 시스템.
  4. 삭제
  5. 청구항 1에 있어서,
    상기 프로세서는,
    미리 정의된 시간 간격마다, 상기 버퍼 할당 회로에게 퍼포먼스 체크 요청을 송신하고,
    상기 요청의 응답에 기반하여, 퍼포먼스 결과 값이 임계 값보다 미만인 경우, 상기 할당 비율 중 상기 메인 버퍼 메모리의 비율을 증가시키는 것을 특징으로 하는, 메모리 시스템.
  6. 청구항 3에 있어서,
    상기 버퍼 할당 핸들링 회로는,
    상기 메인 버퍼 메모리가 모두 점유되었음을 나타내는 플래그를 수신하고,
    상기 플래그에 응답하여, 커맨드 큐 관리 회로에게 미리 정의된 시간을 대기할 것을 지시하고,
    상기 미리 정의된 시간이 경과한 이후, 상기 플래그가 수신되지 않음에 응답하여, 상기 메인 버퍼 메모리에 버퍼를 할당하는 것을 특징으로 하는, 메모리 시스템.
  7. 청구항 1에 있어서,
    상기 메모리 컨트롤러는,
    호스트로부터 커맨드를 수신하고, 상기 버퍼 할당 회로에게 버퍼 할당을 요청하는 호스트 인터페이스 회로;를 더 포함하는 것을 특징으로 하는, 메모리 시스템.
  8. 메모리 장치를 제어하는 메모리 컨트롤러; 및
    상기 메모리 컨트롤러의 외부에 배치되는 서브 버퍼 메모리;를 포함하고,
    상기 메모리 컨트롤러는,
    상기 메모리 장치에 대한 메모리 동작을 제어하는 프로세서;
    상기 서브 버퍼 메모리와 상이하고, 상기 메모리 컨트롤러의 내부에 배치되는 메인 버퍼 메모리;
    상기 서브 버퍼 메모리와 상기 메인 버퍼 메모리 사이의 할당 비율을 제어하기 위한 버퍼 할당 회로를 포함하고,
    상기 프로세서는, 상기 버퍼 할당 회로의 동작 모드를 상기 할당 비율이 가변적으로 설정되는 동작 모드로 설정하고,
    상기 버퍼 할당 회로는,
    커맨드의 유형이, 순차(sequential) 쓰기 커맨드에 상응하는 경우, 상기 메인 버퍼 메모리와 상기 서브 버퍼 메모리의 할당 비율을 동일하게 설정하고, 상기 커맨드의 유형이, 상기 순차 쓰기 커맨드를 제외한 나머지 커맨드들에 상응하는 경우, 상기 서브 버퍼 메모리의 할당 비율을 크게 설정하는 것을 특징으로 하는, 메모리 시스템.
  9. 청구항 8에 있어서,
    상기 메인 버퍼 메모리는, SRAM(static RAM)에 상응하고,
    상기 서브 버퍼 메모리는, DRAM(dynamic RAM)에 상응하는 것을 특징으로 하는 메모리 시스템.
  10. 청구항 8에 있어서,
    상기 버퍼 할당 회로는,
    복수의 커맨드들을 관리하기 위한 커맨드 큐 관리 회로;
    상기 메인 버퍼 메모리와 상기 서브 버퍼 메모리의 버퍼 할당이 시작되는 위치를 나타내는 포인터를 생성하기 위한 버퍼 할당 핸들링 회로; 및
    커맨드의 유형에 따라 상기 할당 비율을 가변적으로 설정하기 위한 버퍼 할당 확인 회로;를 더 포함하는 것을 특징으로 하는 메모리 시스템.
  11. 청구항 10에 있어서,
    상기 버퍼 할당 확인 회로는,
    상기 동작 모드에서 동작하는 동안, 활성화 상태인 것을 특징으로 하는, 메모리 시스템.
  12. 청구항 10에 있어서,
    상기 버퍼 할당 확인 회로는,
    상기 메인 버퍼 메모리 및 상기 서브 버퍼 메모리의 잔여 버퍼 사이즈를 모니터링하고,
    미리 정의된 시간 간격마다, 모니터링 회로를 통해 단위 시간당 할당되는 버퍼 크기를 나타내는 퍼포먼스 결과 값을 수신하고,
    상기 퍼포먼스 결과 값이 임계 값보다 미만인 경우, 상기 할당 비율 중 상기 메인 버퍼 메모리의 비율을 증가시키는 것을 특징으로 하는, 메모리 시스템.
  13. 청구항 11에 있어서,
    상기 버퍼 할당 핸들링 회로는,
    상기 메인 버퍼 메모리가 모두 점유되었음을 나타내는 플래그를 수신하고,
    상기 플래그에 응답하여, 커맨드 큐 관리 회로에게 미리 정의된 시간을 대기할 것을 지시하고,
    상기 미리 정의된 시간이 경과한 이후, 상기 플래그가 수신되지 않음에 응답하여, 상기 메인 버퍼 메모리에 버퍼를 할당하는 것을 특징으로 하는, 메모리 시스템.
  14. 삭제
  15. 삭제
  16. 청구항 8에 있어서,
    상기 메모리 컨트롤러는,
    호스트로부터 커맨드를 수신하고, 상기 버퍼 할당 회로에게 버퍼 할당을 요청하는 호스트 인터페이스 회로;를 더 포함하는 것을 특징으로 하는, 메모리 시스템.
  17. 메모리 컨트롤러의 동작 방법에 있어서,
    호스트로부터 커맨드를 수신하는 단계;
    버퍼 할당 회로의 동작 모드를 제1 동작 모드 및 제2 동작 모드 중 어느 하나로 식별하는 단계;
    상기 버퍼 할당 회로가 상기 제1 동작 모드인 경우, 상기 메모리 컨트롤러의 내부에 배치되는 메인 버퍼 메모리와 상기 메모리 컨트롤러의 외부에 배치되는 서브 버퍼 메모리의 할당 비율을 미리 정의된 비율로 설정하는 단계; 및
    상기 버퍼 할당 회로가 상기 제2 동작 모드인 경우, 상기 수신된 커맨드의 유형에 기반하여, 상기 할당 비율을 가변적으로 설정하는 단계;를 포함하고,
    상기 할당 비율을 가변적으로 설정하는 단계는,
    상기 커맨드의 유형이, 순차(sequential) 쓰기 커맨드에 상응하는 경우, 상기 메인 버퍼 메모리와 상기 서브 버퍼 메모리의 할당 비율을 동일하게 설정하는 단계; 및
    상기 커맨드의 유형이, 상기 순차 쓰기 커맨드를 제외한 나머지 커맨드들에 상응하는 경우, 상기 서브 버퍼 메모리의 할당 비율을 크게 설정하는 단계를 더 포함하는, 메모리 컨트롤러의 동작 방법.
  18. 삭제
  19. 청구항 17에 있어서,
    상기 메인 버퍼 메모리가 모두 점유되었음을 지시하는 플래그를 수신하는 단계;
    상기 플래그 수신에 응답하여, 커맨드 처리를 미리 정의된 시간 동안 지연시키는 단계; 및
    상기 미리 정의된 시간이 경과한 이후, 상기 플래그가 수신되지 않음에 응답하여, 상기 메인 버퍼 메모리에 버퍼를 할당하는 단계;를 더 포함하는 메모리 컨트롤러의 동작 방법.
  20. 청구항 17에 있어서,
    미리 정의된 시간 간격마다, 단위 시간당 할당되는 버퍼 크기를 나타내는 퍼포먼스 결과 값을 모니터링하는 단계; 및
    상기 모니터링에 기반하여, 상기 퍼포먼스 결과 값이 임계 값보다 미만인 경우, 상기 할당 비율 중 상기 메인 버퍼 메모리의 비율을 증가시키는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
KR1020220081505A 2021-11-09 2022-07-01 버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법 KR102580946B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202211393805.8A CN116107496A (zh) 2021-11-09 2022-11-08 存储器系统和操作存储器控制器的方法
TW111142522A TW202324114A (zh) 2021-11-09 2022-11-08 記憶體系統和操作記憶體控制器的方法
US17/984,097 US20230147882A1 (en) 2021-11-09 2022-11-09 Memory controller for controlling allocation ratio of buffer memory, memory system including the same, and method of operating memory controller
EP22206508.8A EP4177762B1 (en) 2021-11-09 2022-11-09 Memory controller for controlling allocation ratio of buffer memory, memory system including the same, and method of operating memory controller

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210153376 2021-11-09
KR1020210153376 2021-11-09

Publications (2)

Publication Number Publication Date
KR20230067485A KR20230067485A (ko) 2023-05-16
KR102580946B1 true KR102580946B1 (ko) 2023-09-21

Family

ID=86546535

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220081505A KR102580946B1 (ko) 2021-11-09 2022-07-01 버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법

Country Status (1)

Country Link
KR (1) KR102580946B1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160148948A (ko) * 2015-06-17 2016-12-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180031289A (ko) * 2016-09-19 2018-03-28 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR102417977B1 (ko) * 2017-10-19 2022-07-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11188250B2 (en) * 2018-10-25 2021-11-30 Micron Technology, Inc. Two-stage hybrid memory buffer for multiple streams

Also Published As

Publication number Publication date
KR20230067485A (ko) 2023-05-16

Similar Documents

Publication Publication Date Title
KR101997572B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
KR101716713B1 (ko) 플래시 메모리 장치 및 그것의 프로그램 방법
US8964481B2 (en) Nonvolatile memory device and sub-block managing method thereof
KR102015906B1 (ko) 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 읽기 방법
KR102226367B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 불휘발성 메모리 시스템
KR102083506B1 (ko) 더미 워드 라인을 갖는 3차원 플래시 메모리 장치 및 그것을 포함하는 데이터 저장 장치
KR102225989B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
KR101891164B1 (ko) 프로그램 스케줄러를 포함하는 플래시 메모리 장치
US10283204B2 (en) Methods of operating nonvolatile memory devices including erasing a sub-block
KR20160110596A (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법
US9257192B2 (en) Memory system performing multi-step erase operation based on stored metadata
KR20140020445A (ko) 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR102345597B1 (ko) 더미 워드 라인을 갖는 3차원 플래시 메모리 장치
KR20170015708A (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
KR20150106778A (ko) 메모리 시스템 및 메모리 시스템의 제어 방법
KR102258117B1 (ko) 불휘발성 메모리 장치 및 그것의 소거 방법
KR20210057355A (ko) 메모리 장치, 메모리 컨트롤러, 메모리 시스템 및 그 동작 방법
KR102637478B1 (ko) 오픈 채널 솔리드 스테이트 드라이브, 이를 포함하는 비휘발성 메모리 시스템 및 오픈 채널 솔리드 스테이트 드라이브의 파워 로스 프로텍션 방법
KR102509909B1 (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 메모리 시스템
EP4177762B1 (en) Memory controller for controlling allocation ratio of buffer memory, memory system including the same, and method of operating memory controller
KR20230096554A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR20130123955A (ko) 3차원 불휘발성 메모리 및 랜덤 액세스 메모리를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR102580946B1 (ko) 버퍼 메모리의 할당 비율을 제어하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법
CN115237337A (zh) 控制器及其操作方法
KR20150059058A (ko) 호스트 ftl을 갖는 사용자 장치 및 그것의 오픈 블록의 페이지 오프셋 전송 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right