KR20240015513A - 메모리 시스템 및 그 동작 방법 - Google Patents

메모리 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR20240015513A
KR20240015513A KR1020220093510A KR20220093510A KR20240015513A KR 20240015513 A KR20240015513 A KR 20240015513A KR 1020220093510 A KR1020220093510 A KR 1020220093510A KR 20220093510 A KR20220093510 A KR 20220093510A KR 20240015513 A KR20240015513 A KR 20240015513A
Authority
KR
South Korea
Prior art keywords
latency
commands
memory
completion response
command
Prior art date
Application number
KR1020220093510A
Other languages
English (en)
Inventor
이선주
김기태
정인호
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020220093510A priority Critical patent/KR20240015513A/ko
Priority to US18/082,586 priority patent/US20240036731A1/en
Priority to CN202310171073.6A priority patent/CN117476059A/zh
Publication of KR20240015513A publication Critical patent/KR20240015513A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0653Monitoring storage devices or 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른 메모리 컨트롤러는 제1 구간 동안, 외부로부터 커맨드들을 수신한 때로부터 상기 외부에게 상기 커맨드들에 대한 완료 응답들을 전송할 때까지 걸리는 시간인 레이턴시들 중 미리 설정된 기준 레이턴시를 초과하는 오버 레이턴시의 횟수에 관한 정보를 생성하는 레이턴시 모니터링부 및 오버 레이턴시 횟수에 관한 정보를 기초로 제1 목표 레이턴시를 결정하고, 상기 제1 구간에 뒤따르는 제2 구간에서 상기 외부로부터 제공되는 커맨드들에 대한 완료 응답을 상기 제1 목표 레이턴시가 경과한 뒤에 제공하는 완료 응답 제어부를 포함한다.

Description

메모리 시스템 및 그 동작 방법{MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 메모리 시스템 및 그것의 동작방법에 관한 것이다.
저장 장치는 컴퓨터, 스마트폰, 스마트패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 저장 장치는 데이터를 저장하는 장치에 따라, 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치와 솔리드 스테이트 드라이브(SSD, Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 불휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
메모리 시스템은 크게 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러로 구성된다. 메모리 컨트롤러는 메모리 장치에 대한 데이터 라이트 요청이 들어오는 경우 해당 메모리 셀 영역에 데이터를 저장하도록 메모리 장치를 제어한다. 또한 메모리 컨트롤러는 메모리 장치에 대한 데이터 리드 요청이 들어오는 경우 해당 메모리 셀 영역에 포함된 데이터를 불러오도록 메모리 장치를 제어한다. 또한 메모리 컨트롤러는 호스트의 요청이 완료되었다는 완료 응답을 제공한다.
메모리 장치의 저장 공간은 한정적이므로, 메모리 장치가 효율적으로 사용될 수 있도록 마모도 관리(wear-leveling), 가비지 컬렉션(Garbage collection; GC)등과 같은 동작이 수행될 수 있다. 이 경우 호스트로부터 제공되는 복수의 커맨드들의 처리가 지연될 수 있다. 즉, 호스트가 예상하지 못한 커맨드의 처리 지연이 발생할 수 있다. 따라서 이러한 커맨드들의 처리 완료 응답을 균일하게 제공하면 호스트의 예측 가능성을 높일 수 있다.
본 발명의 실시 예는 서스테인 상태에서도 균일한 성능을 제공하는 메모리 시스템 및 그 동작 방법을 제공한다.
본 발명의 실시예에 따른 메모리 장치를 제어하는 메모리 컨트롤러는, 제1 구간 동안, 외부로부터 커맨드들을 수신한 때로부터 상기 외부에 상기 커맨드들에 대한 완료 응답들을 전송할 때까지 걸리는 시간인 레이턴시들 중 미리 설정된 기준 레이턴시를 초과하는 오버 레이턴시의 횟수에 관한 정보를 생성하는 레이턴시 모니터링부 및 상기 오버 레이턴시 횟수에 관한 정보를 기초로 목표 레이턴시를 결정하고, 상기 목표 레이턴시가 경과한 뒤에 상기 커맨드에 대한 완료 응답을 제공하는 완료 응답 제어부를 포함할 수 있다.
본 발명의 실시예에 따른 메모리 시스템은, 복수의 메모리 블록들을 포함하는 메모리 장치 및 제1 구간 동안 호스트로부터 상기 메모리 장치에 대한 제1 커맨드들을 수신한 시점부터 상기 제1 커맨드들에 대한 완료 응답을 제공한 때까지의 시간인 레이턴시들 중, 미리 설정된 기준 레이턴시를 초과하는 오버 레이턴시가 발생한 횟수를 기초로, 상기 제1 구간에 뒤따르는 제2 구간에서 상기 호스트로부터 제공되는 상기 메모리 장치에 대한 제2 커맨드들에 대한 완료 응답들을 지연시키는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 실시예에 따른 메모리 컨트롤러의 동작 방법은, 외부로부터 제1 커맨드들을 수신한 때로부터 상기 외부에 상기 제1 커맨드들에 대한 완료 응답들을 전송할 때까지 걸리는 시간인 레이턴시들 중 미리 설정된 기준 레이턴시를 초과하는 오버 레이턴시의 횟수를 카운트하는 단계, 상기 오버 레이턴시 횟수를 기초로 결정된 제1 목표 레이턴시에 기초하여 상기 제1 구간에 뒤따르는 상기 제2 구간 동안 상기 외부로부터 제공되는 제2 커맨드들에 대한 완료 응답을 지연시키는 단계를 포함할 수 있다.
본 기술에 따르면 서스테인 상태에서도 균일한 성능을 제공하는 메모리 시스템 및 그 동작 방법이 제공된다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1의 메모리 컨트롤러의 펌웨어를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 메모리 컨트롤러의 구조와 그 동작을 설명하기 위한 도면이다.
도 4는 오버 레이턴시 발생 횟수에 따라 결정되는 파라미터들을 설명하기 위한 도면이다.
도 5는 도 4의 파라미터들의 관계를 나타내기 위한 그래프이다.
도 6은 오버 레이턴시 발생 횟수에 따라 결정되는 목표 레이턴시를 설명하기 위한 도면이다.
도 7은 오버 레이턴시 발생 횟수와 목표 레이턴시의 비례 관계를 설명하기 위한 그래프이다.
도 8은 본 발명의 일 실시 예에 따른 기준 레이턴시를 넘는 오버 레이턴시를 카운트하는 과정을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따라 목표 레이턴시에 따라 커맨드에 대한 완료 응답을 지연시키는 과정을 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시 예에 따른 커맨드에 대한 완료 응답을 지연하는 과정을 설명하기 위한 순서도이다.
도 11은 본 발명의 일 실시 예에 따른 주기적으로 오버 레이턴시를 계산하고 커맨드 완료 응답을 지연하는 과정을 설명하기 위한 순서도이다.
도 12는 도 1의 메모리 컨트롤러의 다른 실시 예를 설명하기 위한 도면이다.
도 13은 본 발명의 일 실시 예에 따른 저장 장치가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 14는 본 발명의 일 실시 예에 따른 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 일 실시 예에 따른 메모리 시스템이 적용된 사용자 시스템을 보여주는 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 실시예에 따른 메모리 시스템(100)을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(100)은 메모리 장치(110), 메모리 컨트롤러(200)를 포함할 수 있다.
메모리 시스템(100)은 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 태블릿 PC 또는 차량용 인포테인먼트(in-vehicle infortainment) 시스템 등과 같이 호스트(400)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
메모리 시스템(100)은 호스트(400)와의 통신 방식인 호스트 인터페이스에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들면 메모리 시스템(100)은 SSD, MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal serial bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick)등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
메모리 시스템(100)은 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 메모리 시스템(100)은 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
메모리 장치(110)는 데이터를 저장할 수 있다. 메모리 장치(110)는 메모리 컨트롤러(200)의 제어에 응답하여 동작한다. 메모리 장치(110)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있다. 각 메모리 블록은 복수의 메모리 셀들을 포함할 수 있다. 하나의 메모리 블록은 복수의 페이지들을 포함할 수 있다. 실시 예에서, 페이지는 메모리 장치(110)에 데이터를 저장하거나, 메모리 장치(110)에 저장된 데이터를 리드하는 단위일 수 있다. 메모리 블록은 데이터를 지우는 단위일 수 있다. 실시 예에서, 메모리 장치(110)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR4(Low Power Double Data Rate4) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR), RDRAM(Rambus Dynamic Random Access Memory), 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND flash memory), 노아 플래시 메모리(NOR flash memory), 저항성 램(resistive random access memory: RRAM), 상변화 메모리(phase-change memory: PRAM), 자기저항 메모리(magnetoresistive random access memory: MRAM), 강유전체 메모리(ferroelectric random access memory: FRAM), 스핀주입 자화반전 메모리(spin transfer torque random access memory: STT-RAM) 등이 될 수 있다. 본 명세서에서는 설명의 편의를 위해, 메모리 장치(110)가 낸드 플래시 메모리인 경우를 가정하여 설명한다.
실시 예에서, 메모리 시스템(100)은 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트(floating gate; FG)로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 적용될 수 있다.
실시 예에서, 메모리 장치(110)에 포함된 각각의 메모리 셀들은 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC)로 구성될 수 있다. 또는 메모리 장치(110)에 포함된 각각의 메모리 셀들은 두 개의 데이터 비트를 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC)로 구성될 수 있다.
메모리 장치(110)는 메모리 컨트롤러(200)으로부터 커맨드 및 어드레스를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 즉, 메모리 장치(110)는 어드레스에 의해 선택된 영역에 대해 커맨드에 해당하는 동작을 수행할 수 있다. 예를 들면, 메모리 장치(110)는 라이트 동작(프로그램 동작), 리드 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 메모리 장치(110)는 어드레스에 의해 선택된 영역에 데이터를 프로그램 할 것이다. 리드 동작 시에, 메모리 장치(110)는 어드레스에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 메모리 장치(110)는 어드레스에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
메모리 컨트롤러(200)는 메모리 시스템(100)의 전반적인 동작을 제어할 수 있다.
메모리 시스템(100)에 전원이 인가되면, 메모리 컨트롤러(200)는 펌웨어(firmware, FW)를 실행할 수 있다. 메모리 장치(110)가 플래시 메모리 장치인 경우, 메모리 컨트롤러(200)는 호스트(400)와 메모리 장치(110)간의 통신을 제어하기 위한 플래시 변환 레이어(Flash Translation Layer, FTL)과 같은 펌웨어를 실행할 수 있다.
실시 예에서, 메모리 컨트롤러(200)는 호스트(400)로부터 데이터와 논리 블록 어드레스(Logical Block Address)를 입력 받고, 논리 어드레스(Logical Block Address, LBA)를 메모리 장치(110)에 포함된 데이터가 저장될 메모리 셀들의 어드레스를 나타내는 물리 블록 어드레스(Physical Block Address, PBA)로 변환할 수 있다. 또한 메모리 컨트롤러(200)는 논리 블록 어드레스(LBA)와 물리 블록 어드레스(PBA)간의 맵핑(mapping) 관계를 구성하는 논리-물리 어드레스 맵핑 테이블(logical-physical address mapping table)을 버퍼 메모리(미도시)에 저장할 수 있다.
메모리 컨트롤러(200)는 호스트(400)의 요청(request)에 따라 라이트 동작, 리드 동작 또는 소거 동작 등을 수행하도록 메모리 장치(110)를 제어할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(200)는 라이드 커맨드, 물리 블록 어드레스(PBA) 및 데이터를 메모리 장치(110)에 제공할 수 있다. 리드 동작 시, 메모리 컨트롤러(200)는 리드 커맨드 및 물리 블록 어드레스(PBA)를 메모리 장치(110)에 제공할 수 있다. 소거 동작 시, 메모리 컨트롤러(200)는 소거 커맨드 및 물리 블록 어드레스(PBA)를 메모리 장치(110)에 제공할 수 있다.
메모리 컨트롤러(200)는 성능 제어부(210) 및 동작 제어부(220)를 포함할 수 있다.
실시 예에서, 성능 제어부(210)는 호스트(400)가 요청한 커맨드에 대한 완료 응답을 제공할 수 있다. 호스트(400)가 요청한 커맨드는 리드 커맨드 또는 라이트 커맨드일 수 있다. 호스트(400)가 커맨드를 제공하면, 메모리 컨트롤러(200)는 커맨드를 처리하기 위해 메모리 장치(110)를 제어할 수 있다. 메모리 컨트롤러(200)에 의해 호스트(400)의 커맨드 처리가 완료되면, 메모리 컨트롤러 내의 성능 제어부(210)는 호스트(400)에게 커맨드 완료 응답을 제공할 수 있다. 이 때, 성능 제어부(210)는 호스트(400)에게 제공할 커맨드 완료 응답을 지연시킬 수 있다.
실시 예에서, 동작 제어부(220)는 메모리 장치(110)의 상태를 결정할 수 있다. 메모리 장치(110)의 상태는 메모리 장치(110)의 내부에 포함된 복수의 메모리 블록들 중 프리 블록의 개수에 따라 결정될 수 있다. 프리 블록은 복수의 메모리 블록들 중 데이터가 저장되지 않은 메모리 블록일 수 있다.
실시 예에서, 동작 제어부(220)는 메모리 장치(110)의 상태에 따라 레이턴시(Latency)를 모니터링할 수 있다. 레이턴시는 호스트(400)가 커맨드를 제공한 순간부터 성능 제어부(210)가 커맨드에 대한 완료 응답을 제공한 때까지 걸린 시간일 수 있다. 또한 동작 제어부(220)는 오버 레이턴시의 횟수를 카운트할 수 있다. 오버 레이턴시는 미리 설정된 기준 값보다 긴 레이턴시일 수 있다. 또한 동작 제어부(220)는 오버 레이턴시의 횟수를 기초로 커맨드 완료 응답을 지연시킬지 여부를 결정할 수 있다. 동작 제어부(220)는 커맨드 완료 응답의 지연 여부와 정도를 성능 제어부(210)에 제공할 수 있다.
실시 예에서, 메모리 시스템(100)은 버퍼 메모리(미도시)를 포함할 수 있다. 예를 들어, 버퍼 메모리는 호스트(400)로부터 수신된 데이터 또는 메모리 장치(110)로부터 수신된 데이터를 임시 저장하거나, 메모리 장치(110)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다. 버퍼 메모리(미도시)는 목표 레이턴시 정보 저장부(120)를 포함할 수 있다. 다양한 실시 예에서, 메모리 시스템(200)은 버퍼 메모리(미도시)를 포함하지 않을 수 있다. 이 경우, 메모리 시스템(200) 외부의 휘발성 메모리 장치들이 버퍼 메모리(미도시)의 역할을 수행할 수 있을 것이다.
호스트(400)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM), SM-BUS를 이용한 I2C 통신 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 메모리 시스템(100)과 통신할 수 있다.
도 2는 도 1의 메모리 컨트롤러의 펌웨어를 설명하기 위한 도면이다.
메모리 시스템에 전원이 인가되면, 메모리 컨트롤러(200)는 펌웨어(firmware, FW)를 실행할 수 있다. 메모리 장치(110)가 플래시 메모리 장치인 경우, 펌웨어(FW)는 호스트와의 통신을 제어하는 호스트 인터페이스 레이어(Host Interface Layer, HIL), 호스트와 메모리 장치(110)간 통신을 제어하는 플래시 변환 레이어(Flash Translation Layer, FTL) 및 메모리 장치(110)와의 통신을 제어하는 플래시 인터페이스 레이어(Flash Interface Layer, FIL)를 포함할 수 있다. 플래시 인터페이스 레이어(FIL)는 메모리 인터페이스일 수 있다.
실시 예에서, 성능 제어부(210)는 호스트 인터페이스 레이어(HIL)에 포함될 수 있다. 성능 제어부(210)는 호스트와 통신하며 호스트에게 제공할 커맨드 완료 응답을 지연시킬 수 있다.
실시 예에서, 동작 제어부(220)는 플래시 변환 레이어(FTL)에 포함될 수 있다. 호스트가 논리 블록 어드레스(LBA)와 커맨드를 제공하면, 플래시 변환 레이어(FTL)는 논리 블록 어드레스를 물리 블록 어드레스로 변환하고, 변환된 물리 블록 어드레스에 대한 동작을 수행하도록 메모리 장치(110)와의 통신을 제어한다. 또한, 플래시 인터페이스 레이어(FTL)는 메모리 장치(110)가 효율적으로 사용되도록 호스트 및 메모리 장치(110)사이의 인터페이스를 제공한다. 예를 들어, 플래시 인터페이스 레이어(FTL)는 호스트로부터 수신된 논리 어드레스를 메모리 장치(110)에서 사용하는 물리 어드레스로 변환할 수 있다. 또한 플래시 변환 레이어(FTL)는 호스트로부터의 요청 없이 자체적으로 라이트 커맨드, 어드레스 및 데이터를 생성하고 메모리 장치(110)에 전송할 수 있다. 예를 들면, 메모리 컨트롤러(200)는 웨어 레벨링(wear leveling)을 위한 프로그램 동작, 가비지 컬렉션(GC)을 위한 프로그램 동작과 같은 배경(background) 동작들을 수행하기 위한 커맨드, 어드레스 및 데이터를 메모리 장치(110)로 제공할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 메모리 컨트롤러의 구조와 그 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 컨트롤러(200)는 상태 제어부(230), 레이턴시 모니터링부(240) 및 완료 응답 제어부(250)를 포함할 수 있다.
실시 예에서, 상태 제어부(230)는 메모리 장치의 상태를 결정할 수 있다. 상태 제어부(230)는 메모리 장치 내부의 복수의 메모리 블록들 중, 프리 블록들의 개수에 따라 메모리 장치(110)의 상태를 결정할 수 있다. 프리 블록은 메모리 장치 내부의 복수의 메모리 블록들 중에서 데이터가 저장되지 않은 블록일 수 있다. 상태 제어부(230)는 프리 블록들의 개수가 기준 값 미만인 경우 메모리 장치의 상태를 서스테인(Sustain) 상태로 결정할 수 있다. 기준 값은 미리 설정된 값일 수 있다. 프리 블록의 개수가 기준 값 미만인 경우, 가비지 컬렉션(GC) 동작이 시작될 수 있다. 또한 서스테인(Sustain) 상태는 데이터를 저장하기 위해 가비지 컬렉션(GC) 동작이 수행되는 상태일 수 있다. 상태 제어부(230)는 메모리 장치의 상태가 결정되면 메모리 장치의 상태를 나타내는 상태 정보를 레이턴시 모니터링부(240)에 제공할 수 있다.
레이턴시 모니터링부(240)는 상태 제어부(230)로부터 상태 정보를 수신할 수 있다. 레이턴시 모니터링부(240)는 메모리 장치(110)가 서스테인(Sustain) 상태임을 나타내는 상태 정보를 수신할 수 있다. 메모리 장치가 서스테인(Sustain) 상태인 경우, 레이턴시 모니터링부(240)는 정해진 시간(제1 구간) 동안 레이턴시를 측정할 수 있다. 측정하는 시간은 미리 설정될 수 있다. 이 과정에서 레이턴시 모니터링부(240)는 미리 설정된 기준 값을 넘는 레이턴시인 오버 레이턴시(Over Latency)의 횟수를 카운트할 수 있다. 또한 레이턴시 모니터링부(240)는 오버 레이턴시(Over Latency)의 횟수에 관한 정보를 완료 응답 제어부(250)에 제공할 수 있다.
레이턴시 모니터링부(240)는 정해진 시간 동안 레이턴시를 측정하고, 오버 레이턴시 횟수에 관한 정보를 완료 응답 제어부(250)에 제공한 뒤, 정해진 시간(제2 구간)동안 위 동작을 반복할 수 있다. 제2 구간의 정해진 시간 간격은 제1 구간의 정해진 시간 간격과 동일할 수 있다. 마찬가지로, 레이턴시 모니터링부(240)는 제3 구간에서 위 동작을 반복할 수 있다. 제3 구간의 정해진 시간 간격은 제2 구간의 정해진 시간 간격과 동일할 수 있다. 위 동작은 제n 구간에서 반복될 수 있으며, 제n 구간의 정해진 시간 간격은 제n-1 구간의 정해진 시간 간격과 동일할 수 있다. n은 자연수일 수 있다.
레이턴시 모니터링부(240)는 메모리 장치의 상태가 서스테인(Sustain) 상태가 아닌 경우, 레이턴시를 측정하고 오버 레이턴시의 횟수를 카운트하는 동작을 수행하지 않을 수 있다.
완료 응답 제어부(250)는 레이턴시 모니터링부(240)로부터 오버 레이턴시의 횟수에 관한 정보를 수신할 수 있다. 완료 응답 제어부(250)는 오버 레이턴시의 횟수에 따라 호스트에게 제공할 커맨드 완료 응답을 지연할지 여부를 결정할 수 있다. 또한 완료 응답 제어부(250)는 호스트에게 제공할 커맨드 완료 응답의 지연 정도를 결정할 수 있다. 커맨드 완료 응답의 지연 정도는 오버 레이턴시 횟수에 비례할 수 있다.
완료 응답 제어부(250)는 목표 레이턴시 정보 저장부(120)로부터 목표 레이턴시에 관한 정보를 수신할 수 있다. 목표 레이턴시는 오버 레이턴시 횟수에 따라 결정되는 레이턴시일 수 있다. 또한 목표 레이턴시는 미리 저장된 값일 수 있다. 목표 레이턴시에 관한 자세한 내용은 도4 내지 도6에서 설명한다.
완료 응답 제어부(250)는 서스테인(Sustain) 상태에서, 기본적으로 성능 제한을 위해 커맨드 완료 응답을 지연할 수 있다. 이 과정에서 측정되는 레이턴시는 평균 레이턴시일 수 있다.
완료 응답 제어부(250)는 오버 레이턴시 횟수에 관한 정보와 목표 레이턴시 정보에 기초하여 목표 레이턴시를 결정할 수 있다. 목표 레이턴시가 결정되면, 목표 레이턴시를 유지하기 위해 필요한 성능 지연의 정도를 결정할 수 있다. 실시 예에서, 호스트로부터 커맨드를 수신한 때로부터 커맨드에 대한 완료 응답을 제공하기 전까지 걸린 시간인 완료 응답 대기 시간이 목표 레이턴시보다 짧으면, 완료 응답 제어부(250)는 목표 레이턴시와 완료 응답 대기 시간의 차이 만큼 완료 응답을 지연시킬 수 있다. 완료 응답 제어부(250)는 완료 응답 대기 시간이 목표 레이턴시보다 길면, 완료 응답 제어부(250)는 커맨드 완료 응답을 호스트에게 곧바로 제공할 수 있다.
목표 레이턴시 정보 저장부(120)는 메모리 컨트롤러(200) 외부에 도시 되었지만, 메모리 컨트롤러(200)의 내부에 위치할 수 있다. 목표 레이턴시 정보 저장부(120)는 오버 레이턴시 횟수 발생 횟수에 따라 결정되는 파라미터들을 저장할 수 있다. 또한 목표 레이턴시 정보 저장부(120)는 오버 레이턴시 발생 횟수에 따라 결정되는 목표 레이턴시를 미리 저장할 수 있다. 목표 레이턴시는 오버 레이턴시 발생 횟수에 따라 결정되는 파라미터들을 기초로 결정될 수 있다. 목표 레이턴시 정보 저장부(120)는 목표 레이턴시 정보를 완료 응답 제어부(250)에 제공할 수 있다. 완료 응답 제어부(250)는 목표 레이턴시 정보 및 오버 레이턴시 발생 횟수에 기초하여 목표 레이턴시를 결정할 수 있다.
도 4는 오버 레이턴시 발생 횟수에 따라 결정되는 파라미터들을 설명하기 위한 도면이다.
도 4를 참조하면, 목표 레이턴시를 결정하기 위한 파라미터들의 관계를 확인할 수 있다.
목표 레이턴시를 결정하기 위한 파라미터들은 제1 가중치인 K1과 제2 가중치인 K2일 수 있다. 제1 가중치는 평균 레이턴시에 곱해지는 파라미터일 수 있다. 또한 제2 가중치는 최대 레이턴시에 곱해지는 파라미터일 수 있다. 평균 레이턴시는 서스테인(Sustain) 상태에서 평균적으로 발생하는 레이턴시일 수 있다. 최대 레이턴시는 호스트가 요청하는 최소한의 성능에 대응되는 성능을 달성하기 위해 발생하는 레이턴시일 수 있다.
제1 가중치와 제2 가중치는 오버 레이턴시의 발생 횟수에 따라 결정될 수 있다. 오버 레이턴시의 발생 횟수에 대응되는 제1 가중치 값과 제2 가중치 값은 미리 설정된 값일 수 있다. 표를 참고하면, 오버 레이턴시의 횟수가 a1번 미만인 경우 제1 가중치 값은 1, 제2 가중치 값은 0일 수 있다. 오버 레이턴시의 발생이 a1번 미만으로 발생한 경우, 추가적인 성능 지연은 발생하지 않을 수 있다.
오버 레이턴시의 발생 횟수가 a1번 이상에서 a2번 미만인 경우, 평균 레이턴시에 곱해지는 제1 가중치는 x1일 수 있다. 또한 최대 레이턴시에 곱해지는 제2 가중치는 y1일 수 있다. 오버 레이턴시의 발생 횟수가 a2번 이상에서 a3번 미만인 경우, 평균 레이턴시에 곱해지는 제1 가중치는 x2일 수 있다. 또한 최대 레이턴시에 곱해지는 제2 가중치는 y2일 수 있다. 오버 레이턴시의 발생 횟수가 a3번 이상에서 a4번 미만인 경우, 평균 레이턴시에 곱해지는 제1 가중치는 x3일 수 있다. 또한 최대 레이턴시에 곱해지는 제2 가중치는 y3일 수 있다. 오버 레이턴시의 발생 횟수가 a4번 이상에서 a5번 미만인 경우, 평균 레이턴시에 곱해지는 제1 가중치는 x4일 수 있다. 또한 최대 레이턴시에 곱해지는 제2 가중치는 y4일 수 있다. 마찬가지로 오버 레이턴시의 발생 횟수가 a5번 이상인 경우, 평균 레이턴시에 곱해지는 제1 가중치는 0일 수 있다. 또한 최대 레이턴시에 곱해지는 제2 가중치는 1일 수 있다.
제1 가중치의 값은 오버 레이턴시 발생 횟수에 비례하여 감소할 수 있다. 반대로, 제2 가중치의 값은 오버 레이턴시 발생 횟수에 비례하여 증가할 수 있다. 따라서 제1 가중치 값인 x1, x2, x3 및 x4는 0에서 1사이의 값일 수 있고, x1 값이 x4의 값 보다 큰 값일 수 있다. 마찬가지로, 제2 가중치 값인 y1, y2, y3 및 y4는 0에서 1사이의 값일 수 있고, y4 값이 y1의 값보다 큰 값일 수 있다. 제1 가중치와 제2 가중치에 대한 정보는 목표 레이턴시 정보 저장부에 미리 저장되어 있을 수 있다.
설명의 편의를 위해 오버 레이턴시의 발생 횟수에 따라 크게 6개의 구간으로 나누어 설명했으나, 이는 변경될 수 있으며 오버 레이턴시의 발생 횟수에 따른 구간을 더 촘촘하게 또는 더 넓게 설정할 수 있음이 잘 이해될 것이다.
도 5는 도 4의 파라미터들의 관계를 나타내기 위한 그래프이다.
도 5를 참고하면, 도 4의 설명에 따른 제1 가중치와 제2 가중치 사이의 관계를 확인할 수 있다.
오버 레이턴시의 발생 횟수가 a1번 미만인 경우, 제1 가중치는 1의 값을 가질 수 있고, 제2 가중치는 0의 값을 가질 수 있다. 이 경우, 제1 가중치 값과 제2 가중치 값의 합은 1일 수 있다. 또한 오버 레이턴시의 발생 횟수가 a1번 이상 a2번 미만인 경우, 제1 가중치는 x1의 값을 가질 수 있고, 제2 가중치는 y1의 값을 가질 수 있다. 이 경우, 제1 가중치 값과 제2 가중치 값의 합은 1일 수 있다. 또한 오버 레이턴시의 발생 횟수가 a2번 이상 a3번 미만인 경우, 제1 가중치는 x2의 값을 가질 수 있고, 제2 가중치는 y2의 값을 가질 수 있다. 이 경우, 제1 가중치 값과 제2 가중치 값의 합은 1일 수 있다. 또한 오버 레이턴시의 발생 횟수가 a3번 이상 a4번 미만인 경우, 제1 가중치는 x3의 값을 가질 수 있고, 제2 가중치는 y3의 값을 가질 수 있다. 이 경우, 제1 가중치 값과 제2 가중치 값의 합은 1일 수 있다. 또한 오버 레이턴시의 발생 횟수가 a4번 이상 a5번 미만인 경우, 제1 가중치는 x4의 값을 가질 수 있고, 제2 가중치는 y4의 값을 가질 수 있다. 이 경우, 제1 가중치 값과 제2 가중치 값의 합은 1일 수 있다. 또한 오버 레이턴시의 발생 횟수가 a5번 이상인 경우, 제1 가중치는 0의 값을 가질 수 있고, 제2 가중치는 1의 값을 가질 수 있다. 이 경우, 제1 가중치 값과 제2 가중치 값의 합은 1일 수 있다.
위와 같이, 제1 가중치와 제2 가중치의 값은 모든 구간에서 1일 수 있다. 또한 도 4의 설명에서 설명한 바와 같이, 오버 레이턴시 횟수에 따라 나누어지는 구간이 더 촘촘하게 또는 더 넓게 설정될 수 있다.
도 6은 오버 레이턴시 발생 횟수에 따라 결정되는 목표 레이턴시를 설명하기 위한 도면이다.
도 6을 참고하면, 오버 레이턴시의 발생 횟수에 따라 결정되는 목표 레이턴시(Target Latency)의 수식 및 그 값이 나타난다. 오버 레이턴시는 평균 레이턴시에 제1 가중치를 곱한 값과 최대 레이턴시에 제2 가중치를 곱한 값의 합으로 나타날 수 있다. 평균 레이턴시는 서스테인(Sustain) 상태에서 발생하는 레이턴시의 평균 값일 수 있다. 최대 레이턴시는 호스트가 요구하는 최소한의 성능에 대응되는 성능 달성을 위해 발생하는 레이턴시일 수 있다.
실시 예에서, 오버 레이턴시의 발생 횟수가 0번에서 a1번 사이인 경우, 제1 가중치의 값은 1일 수 있다. 또한 제2 가중치의 값은 0일 수 있다. 따라서 제1 가중치 값인 1에 평균 레이턴시를 곱한 값과 제2 가중치 값인 0에 최대 레이턴시를 곱한 값을 더한 목표 레이턴시는 평균 레이턴시(latency_avg)일 수 있다.
실시 예에서, 오버 레이턴시의 발생 횟수가 a1번에서 a2번 사이인 경우, 제1 가중치의 값은 x1일 수 있다. 또한 제2 가중치의 값은 y1일 수 있다. 따라서 제1 가중치 값인 x1에 평균 레이턴시를 곱한 값과 제2 가중치 값인 y1에 최대 레이턴시를 곱한 값을 더한 목표 레이턴시는 x1*latency_avg + y1*latency_max일 수 있다.
실시 예에서, 오버 레이턴시의 발생 횟수가 a2번에서 a3번 사이인 경우, 제1 가중치의 값은 x2일 수 있다. 또한 제2 가중치의 값은 y2일 수 있다. 따라서 제1 가중치 값인 x2에 평균 레이턴시를 곱한 값과 제2 가중치 값인 y2에 최대 레이턴시를 곱한 값을 더한 목표 레이턴시는 x2*latency_avg + y2*latency_max일 수 있다.
실시 예에서, 오버 레이턴시의 발생 횟수가 a3번에서 a4번 사이인 경우, 제1 가중치의 값은 x3일 수 있다. 또한 제2 가중치의 값은 y3일 수 있다. 따라서 제1 가중치 값인 x3에 평균 레이턴시를 곱한 값과 제2 가중치 값인 y3에 최대 레이턴시를 곱한 값을 더한 목표 레이턴시는 x3*latency_avg + y3*latency_max일 수 있다.
실시 예에서, 오버 레이턴시의 발생 횟수가 a4번에서 a5번 사이인 경우, 제1 가중치의 값은 x4일 수 있다. 또한 제2 가중치의 값은 y4일 수 있다. 따라서 제1 가중치 값인 x4에 평균 레이턴시를 곱한 값과 제2 가중치 값인 y4에 최대 레이턴시를 곱한 값을 더한 목표 레이턴시는 x4*latency_avg + y4*latency_max 일 수 있다.
마찬가지로, 실시 예에서, 오버 레이턴시의 발생 횟수가 a5번 이상인 경우, 제1 가중치의 값은 0일 수 있다. 또한 제2 가중치의 값은 1일 수 있다. 따라서 제1 가중치 값인 0에 평균 레이턴시를 곱한 값과 제2 가중치 값인 1에 최대 레이턴시를 곱한 값을 더한 목표 레이턴시는 최대 레이턴시(latency_max)일 수 있다.
목표 레이턴시(Target Latency)의 값은 오버 레이턴시의 발생 횟수에 따라 미리 정해진 값일 수 있다. 목표 레이턴시(Target Latency)의 값은 도 6과 같이 테이블의 형태로 저장되어 있을 수 있다. 목표 레이턴시(Target Latency) 값의 테이블은 목표 레이턴시 저장부에 저장될 수 있다. 또한 설명의 편의를 위해 오버 레이턴시의 횟수에 따라 구간을 6구간으로 나누었지만, 구간의 개수는 설정에 따라 달라질 수 있으며, 대응되는 목표 레이턴시(Target Latency)의 값도 달라질 수 있다.
도 7은 오버 레이턴시 발생 횟수와 목표 레이턴시의 비례 관계를 설명하기 위한 그래프이다.
도 7을 참고하면, 목표 레이턴시의 값은 오버 레이턴시의 발생 횟수에 비례하여 증가할 수 있다. 서스테인(Sustain) 상황에 진입하면 가비지 컬렉션(GC) 동작이 수행될 수 있고, 호스트가 제공한 커맨드에 대한 처리가 지연될 수 있다. 따라서 서스테인(Sustain) 상황에 진입하면 목표 레이턴시를 설정하고, 목표 레이턴시에 따라 커맨드 완료 응답을 지연할 수 있다.
오버 레이턴시의 발생 횟수가 a1번 미만인 경우, 목표 레이턴시는 평균 레이턴시(latency_avg)일 수 있다. 즉, 서스테인(Sustain) 상황에서 발생하는 평균적인 성능 제한 외에 추가적인 성능 제한이 발생하지 않을 수 있다. 이 경우, 메모리 컨트롤러는 평균 레이턴시(latency_avg)에 맞추어 호스트에게 커맨드 완료 응답을 제공할 수 있다.
오버 레이턴시의 발생 횟수가 a1번 이상인 경우, 목표 레이턴시는 오버 레이턴시의 발생 횟수에 비례하여 증가할 수 있다. 오버 레이턴시가 a1번 이상 발생하는 경우, 목표 레이턴시의 값이 평균 레이턴시의 값 보다 증가하게 된다. 이 경우, 호스트가 제공한 커맨드에 대해 발생하는 레이턴시를 목표 레이턴시로 유지하기 위해 추가적인 성능 제한이 발생할 수 있다. 즉, 오버 레이턴시의 발생 횟수가 a1번 이상 발생하는 순간은 추가적인 성능 제한(Additional Throttling)이 발생하는 트리거 포인트 일 수 있다.
오버 레이턴시의 발생 횟수가 a5번 이상인 경우, 목표 레이턴시는 최대 레이턴시(latency_max) 값일 수 있다. 이 경우, 호스트가 제공한 커맨드에 대해 발생하는 레이턴시를 목표 레이턴시로 유지하기 위해 추가적인 성능 제한이 발생할 수 있다. 목표 레이턴시는 최대 레이턴시보다 클 수 없으므로, 최대한의 성능 제한이 발생할 수 있다. 즉, 메모리 컨트롤러는 최대 레이턴시(latency_max)에 맞추어 호스트에게 커맨드 완료 응답을 제공할 수 있다.
설명의 편의를 위해 목표 레이턴시와 오버 레이턴시 발생 횟수의 비례 관계를 나타내기 위하여 연속적인 값을 가지는 그래프로 설명하였지만, 목표 레이턴시는 도 6과 같이 오버 레이턴시 발생 횟수의 구간에 따라 결정되는 일정한 값일 수 있다. 또한, 도 7에서 설명한 바와 같이 오버 레이턴시 발생 횟수의 구간에 따라 목표 레이턴시가 정해지는 것이 아니라, 오버 레이턴시 발생 횟수에 비례하여 증가할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 기준 레이턴시를 넘는 오버 레이턴시를 카운트하는 과정을 설명하기 위한 도면이다.
도 8을 참고하면, 정해진 기준 시간(제1구간) 동안 제공되는 커맨드에 대한 레이턴시의 개념 및 오버 레이턴시의 횟수를 카운트하는 과정이 도시된다. 메모리 장치가 서스테인(Sustain) 상태인 경우, 레이턴시 모니터링부는 기준 시간동안 제공되는 커맨드들에 대한 레이턴시를 측정할 수 있다. 기준 시간은 미리 설정된 시간 간격일 수 있다. 이 과정에서 기준 레이턴시(tref)보다 큰 오버 레이턴시의 발생 횟수를 카운트할 수 있다.
실시 예에서, 호스트는 커맨드 1에 대한 처리 요청을 메모리 시스템에 제공할 수 있다. 즉, 호스트가 커맨드 1을 제공하면(CMD_1 IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 1에 대한 완료 응답(COMP_C1 OUT)을 호스트에 제공할 수 있다. 호스트가 커맨드 1을 제공한 순간부터 커맨드 1에 대한 완료 응답이 제공될 때까지 걸린 시간은 커맨드 1에 대한 레이턴시(tL1)일 수 있다. 이 과정에서, 레이턴시 모니터링부(240)는 커맨드 1에 대한 레이턴시(tL1)와 기준 레이턴시(tref)를 비교할 수 있다. 기준 레이턴시(tref)는 미리 설정된 값일 수 있다. 커맨드 1에 대한 레이턴시(tL1) 값이 기준 레이턴시(tref) 값 보다 크기 때문에 커맨드 1에 대한 레이턴시(tL1)는 오버 레이턴시로 카운트될 수 있다.
호스트는 커맨드 1이 처리되는 동안에 또는 커맨드 1에 대한 완료 응답(COMP_C1 OUT)을 수신한 이후에, 커맨드 2에 대한 처리 요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 2를 제공하면(CMD_2 IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 2에 대한 완료 응답(COMP_C2 OUT)을 호스트에 제공할 수 있다. 호스트가 커맨드 2를 제공한 순간부터 커맨드 2에 대한 완료 응답이 제공될 때까지 걸린 시간은 커맨드 2에 대한 레이턴시(tL2)일 수 있다. 이 과정에서 레이턴시 모니터링부(240)는 커맨드 2에 대한 레이턴시(tL2)와 기준 레이턴시(tref)를 비교할 수 있다. 커맨드 2에 대한 레이턴시와 비교되는 기준 레이턴시(tref) 값은 커맨드 1에 대한 레이턴시와 비교된 기준 레이턴시(tref) 값과 동일할 수 있다. 커맨드 2에 대한 레이턴시(tL2) 값이 기준 레이턴시(tref) 값 보다 크기 때문에 커맨드 2에 대한 레이턴시(tL2)는 오버 레이턴시로 카운트될 수 있다.
호스트는 커맨드 2가 처리되는 동안에 또는 커맨드 2에 대한 완료 응답(COMP_C2 OUT)을 수신한 이후에, 커맨드 3에 대한 처리요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 3을 제공하면(CMD_3 IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 3에 대한 완료 응답(COMP_C3 OUT)을 호스트에 제공할 수 있다. 호스트가 커맨드 3을 제공한 순간부터 커맨드 3에 대한 완료 응답이 제공될 때까지 걸린 시간은 커맨드 3에 대한 레이턴시(tL3)일 수 있다. 이 과정에서 레이턴시 모니터링부는 커맨드 3에 대한 레이턴시(tL3)와 기준 레이턴시(tref)를 비교할 수 있다. 커맨드 3에 대한 레이턴시와 비교되는 기준 레이턴시(tref) 값은 커맨드 1에 대한 레이턴시와 비교된 기준 레이턴시(tref) 값과 동일할 수 있다. 커맨드 3에 대한 레이턴시(tL3) 값이 기준 레이턴시(tref) 값 보다 크기 때문에 커맨드 3에 대한 레이턴시(tL3)는 오버 레이턴시로 카운트될 수 있다.
호스트는 커맨드 3이 처리되는 동안에 또는 커맨드 3에 대한 완료 응답(COMP_C3 OUT)을 수신한 이후에, 커맨드 4에 대한 처리요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 4를 제공하면(CMD_4 IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 4에 대한 완료 응답(COMP_C4 OUT)을 호스트에 제공할 수 있다. 호스트가 커맨드 4를 제공한 순간부터 커맨드 4에 대한 완료 응답이 제공될 때까지 걸린 시간은 커맨드 4에 대한 레이턴시(tL4)일 수 있다. 이 과정에서 레이턴시 모니터링부는 커맨드 4에 대한 레이턴시(tL4)와 기준 레이턴시(tref)를 비교할 수 있다. 커맨드 4에 대한 레이턴시와 비교되는 기준 레이턴시(tref) 값은 커맨드 1에 대한 레이턴시와 비교된 기준 레이턴시(tref) 값과 동일할 수 있다. 커맨드 4에 대한 레이턴시(tL4) 값이 기준 레이턴시(tref) 값 보다 작기 때문에 커맨드 4에 대한 레이턴시(tL4)는 오버 레이턴시로 카운트되지 않을 수 있다.
호스트는 커맨드 4가 처리되는 동안에 또는 커맨드 4에 대한 완료 응답(COMP_C4 OUT)을 수신한 이후에, 커맨드 5에 대한 처리요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 5를 제공하면(CMD_5 IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 5에 대한 완료 응답(COMP_C5 OUT)을 호스트에 제공할 수 있다. 호스트가 커맨드 5를 제공한 순간부터 커맨드 5에 대한 완료 응답이 제공될 때까지 걸린 시간은 커맨드 5에 대한 레이턴시(tL5)일 수 있다. 이 과정에서 레이턴시 모니터링부는 커맨드 5에 대한 레이턴시(tL5)와 기준 레이턴시(tref)를 비교할 수 있다. 커맨드 5에 대한 레이턴시와 비교되는 기준 레이턴시(tref) 값은 커맨드 1에 대한 레이턴시와 비교된 기준 레이턴시(tref) 값과 동일할 수 있다. 커맨드 5에 대한 레이턴시(tL5) 값이 기준 레이턴시(tref) 값 보다 크기 때문에 커맨드 5에 대한 레이턴시(tL5)는 오버 레이턴시로 카운트될 수 있다.
마찬가지로 호스트는 커맨드 5가 처리되는 동안에 또는 커맨드 5에 대한 완료 응답(COMP_C5 OUT)을 수신한 이후에, 커맨드 6에 대한 처리요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 6을 제공하면(CMD_6 IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 6에 대한 완료 응답(COMP_C6 OUT)을 호스트에 제공할 수 있다. 호스트가 커맨드 6을 제공한 순간부터 커맨드 6에 대한 완료 응답이 제공될 때까지 걸린 시간은 커맨드 6에 대한 레이턴시(tL6)일 수 있다. 이 과정에서 레이턴시 모니터링부는 커맨드 6에 대한 레이턴시(tL6)와 기준 레이턴시(tref)를 비교할 수 있다. 커맨드 6에 대한 레이턴시와 비교되는 기준 레이턴시(tref) 값은 커맨드 1에 대한 레이턴시와 비교된 기준 레이턴시(tref) 값과 동일할 수 있다. 커맨드 6에 대한 레이턴시(tL6) 값이 기준 레이턴시(tref) 값 보다 크기 때문에 커맨드 6에 대한 레이턴시(tL6)는 오버 레이턴시로 카운트될 수 있다.
레이턴시 모니터링부(240)는 기준 시간 동안(제1구간) 호스트로부터 제공된 6개의 커맨드들을 처리하는 과정에서 발생한 5번의 오버 레이턴시의 횟수에 관한 정보를 저장할 수 있다. 또한 레이턴시 모니터링부는 기준 시간 동안 발생한 오버 레이턴시 횟수에 관한 정보를 완료 응답 제어부에 제공할 수 있다. 호스트로부터 제공된 커맨드들은 리드 커맨드 또는 라이트 커맨드일 수 있다.
레이턴시 모니터링부는 기준 시간(제1구간) 동안 제공된 커맨드들에 대한 레이턴시들을 모니터링한 이후, 제1구간에 뒤따르는 기준 시간(제2구간)동안 제공되는 커맨드들에 대한 레이턴시를 모니터링할 수 있다. 레이턴시들을 모니터링 하는 과정은 메모리 장치가 서스테인(Sustain) 상태에서 벗어날 때까지 수행될 수 있다. 즉, 메모리 장치의 내부에서 가비지 컬렉션(GC) 동작이 수행되는 동안에는 레이턴시 모니터링부는 반복적으로 레이턴시 모니터링 동작을 수행할 수 있다. 이 때, 뒤따르는 구간에서의 시간 간격은 이전 구간에서의 시간 간격과 동일할 수 있다. 마찬가지로 레이턴시 모니터링부는 구간별로 카운트 한 오버 레이턴시의 횟수에 관한 정보를 완료 응답 제어부에 제공할 수 있다.
도 9는 본 발명의 일 실시 예에 따라 목표 레이턴시에 맞춰 커맨드에 대한 완료 응답을 지연시키는 과정을 설명하기 위한 도면이다.
도 9를 참고하면, 설정된 목표 레이턴시에 따라 추가적인 성능 제한을 수행하는 과정이 도시된다.
완료 응답 제어부(250)는 레이턴시 모니터링부로부터 수신한 제1 구간에서의 오버 레이턴시의 횟수에 관한 정보 및 목표 레이턴시 정보 저장부로부터 수신한 목표 레이턴시 정보에 기초하여 제2 구간에서 적용할 목표 레이턴시를 결정할 수 있다. 목표 레이턴시가 결정되면, 완료 응답 제어부는 목표 레이턴시에 맞게 커맨드 완료 응답 제공을 제어할 수 있다.
완료 응답 제어부는 평균 성능 제한(Default Throttling)과 추가 성능 제한(Additional Throttling)을 통해 커맨드에 대한 완료 응답의 제공을 지연시킬 수 있다. 완료 응답 제어부는 호스트로부터 제공된 커맨드에 대한 처리가 완료되는 경우, 완료 응답 대기 시간과 목표 레이턴시를 비교할 수 있다. 이후 완료 응답 제어부는 목표 레이턴시가 완료 응답 대기 시간보다 긴 경우, 목표 레이턴시와 완료 응답 대기 시간의 차이만큼 커맨드에 대한 완료 응답의 제공을 지연시킬 수 있다. 또한 완료 응답 제어부는 목표 레이턴시가 완료 응답 대기 시간보다 짧은 경우, 성능 제한 없이 곧바로 커맨드에 대한 완료 응답을 호스트에게 제공할 수 있다. 이 경우, 평균 성능 제한(Default Throttling)은 목표 레이턴시를 평균 레이턴시(latency_avg)로 유지하기 위해 발생하는 성능 제한일 수 있다.
실시 예에서, 제1구간 이후에 뒤따르는 기준 시간(제2구간) 동안, 호스트는 커맨드 1'에 대한 처리 요청을 메모리 시스템에 제공할 수 있다. 즉, 호스트가 커맨드 1'을 제공하면(CMD_1' IN), 메모리 시스템(100)은 해당 커맨드를 처리하고, 커맨드 1'에 대한 완료 응답(COMP_C1' OUT)을 호스트에 제공할 수 있다. 완료 응답 제어부는 커맨드 1'에 대한 레이턴시(tL1')가 목표 레이턴시와 동일하도록 커맨드 1'에 대한 완료 응답(COMP_C1' OUT)을 지연시킬 수 있다. 즉, 커맨드 1'에 대한 처리가 완료된 이후에 곧바로 커맨드 1'에 대한 완료 응답(COMP_C1' OUT)을 호스트에게 제공하는 것이 아니라, 성능 제한(Throttling)을 통해 커맨드 1'에 대한 완료 응답(COMP_C1' OUT)의 제공을 지연시킬 수 있다. 완료 응답 제어부는 커맨드 1'에 대한 처리가 완료된 경우에도, 평균 성능 제한(Average Throttling)을 통해 커맨드 1'에 대한 완료 응답의 제공을 지연시킬 수 있다. 평균 성능 제한이 발생한 이후에도, 목표 레이턴시에 도달하지 못하였으므로 완료 응답 제어부는 추가적인 성능 제한을 할 수 있다. 목표 레이턴시와 완료 응답 대기 시간의 차이만큼 커맨드 1'에 대한 완료 응답을 지연시킨 이후에 호스트에게 커맨드 1'에 대한 완료 응답(COMP_C1' OUT)을 제공할 수 있다. 이 경우 커맨드 1'에 대한 레이턴시(tL1')와 목표 레이턴시는 동일할 수 있다.
호스트는 커맨드 1'이 처리되는 동안에 또는 커맨드 1'에 대한 완료 응답(COMP_C1' OUT)을 수신한 이후에, 커맨드 2'에 대한 처리요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 2'를 제공하면(CMD_2' IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 2'에 대한 완료 응답(COMP_C2' OUT)을 호스트에 제공할 수 있다. 완료 응답 제어부는 커맨드 2'에 대한 레이턴시(tL2')가 목표 레이턴시와 동일하도록 커맨드 2'에 대한 완료 응답(COMP_C2' OUT)을 제어할 수 있다. 커맨드 2'에 대한 처리가 지연되어 커맨드 2'에 대한 완료 응답 대기 시간이 목표 레이턴시보다 긴 경우, 완료 응답 제어부는 성능 제한 없이 곧바로 커맨드 2'에 대한 완료 응답(COMP_C2' OUT)을 호스트에게 제공할 수 있다. 이 경우, 커맨드 2'에 대한 레이턴시(tL2')는 목표 레이턴시보다 큰 값일 수 있다.
호스트는 커맨드 2'이 처리되는 동안에 또는 커맨드 2'에 대한 완료 응답(COMP_C2' OUT)을 수신한 이후에, 커맨드 3'에 대한 처리요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 3'을 제공하면(CMD_3' IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 3'에 대한 완료 응답(COMP_C3' OUT)을 호스트에 제공할 수 있다. 완료 응답 제어부는 커맨드 3'에 대한 레이턴시(tL3')가 목표 레이턴시와 동일하도록 커맨드 3'에 대한 완료 응답(COMP_C3' OUT)을 지연시킬 수 있다. 즉, 커맨드 3'에 대한 처리가 완료된 이후에 곧바로 커맨드 3'에 대한 완료 응답(COMP_C3' OUT)을 호스트에게 제공하는 것이 아니라, 성능 제한(Throttling)을 통해 커맨드 3'에 대한 완료 응답(COMP_C3' OUT)의 제공을 지연시킬 수 있다. 완료 응답 제어부는 커맨드 3'에 대한 처리가 완료된 경우에도, 평균 성능 제한(Average Throttling)을 통해 커맨드 3'에 대한 완료 응답의 제공을 지연시킬 수 있다. 평균 성능 제한이 발생한 이후에도, 목표 레이턴시에 도달하지 못하였으므로 완료 응답 제어부는 추가적인 성능 제한을 할 수 있다. 목표 레이턴시와 완료 응답 대기 시간의 차이만큼 커맨드 3'에 대한 완료 응답을 지연시킨 이후에 호스트에게 커맨드 3'에 대한 완료 응답(COMP_C3' OUT)을 제공할 수 있다. 이 경우 커맨드 3'에 대한 레이턴시(tL3')와 목표 레이턴시는 동일할 수 있다.
호스트는 커맨드 3'이 처리되는 동안에 또는 커맨드 3'에 대한 완료 응답(COMP_C3' OUT)을 수신한 이후에, 커맨드 4'에 대한 처리 요청을 메모리 시스템에 제공할 수 있다. 즉 호스트가 커맨드 4'를 제공하면(CMD_4' IN), 메모리 시스템은 해당 커맨드를 처리하고, 커맨드 4'에 대한 완료 응답(COMP_C4' OUT)을 호스트에 제공할 수 있다. 다만, 기준 시간(제2구간) 동안 커맨드 4'에 대한 처리가 완료되지 않을 수 있다.
기준 시간(제2구간)동안 호스트로부터 제공되는 커맨드들을 처리하고 커맨드들에 대한 완료 응답을 호스트에게 제공하는 과정에서, 레이턴시 모니터링부는 커맨드 1' 내지 커맨드 3'의 레이턴시들(tL1'~tL3')을 모니터링할 수 있다. 이 과정에서 레이턴시 모니터링부는 커맨드 1'내지 커맨드 3'의 레이턴시들(tL1'~tL3')과 기준 레이턴시를 비교할 수 있다. 레이턴시 모니터링부는 기준 레이턴시(tref)와 커맨드 1'내지 커맨드3'의 레이턴시들(tL1'~tL3')을 비교하고, 기준 레이턴시(tref)보다 큰 오버 레이턴시의 발생 횟수를 카운트할 수 있다. 기준 레이턴시는 기준 시간(제1구간)에서 비교 대상이 된 기준 레이턴시(tref)와 동일할 수 있다. 커맨드 1' 내지 커맨드 3'의 레이턴시들(tL1'~tL3')은 모두 기준 레이턴시(tref)보다 크기 때문에, 기준 시간(제2구간)에서 오버 레이턴시의 발생 횟수는 3일 수 있다. 레이턴시 모니터링부는 기준 시간(제2구간)동안 발생한 오버 레이턴시의 발생 횟수에 관한 정보를 완료 응답 제어부에 제공할 수 있다.
목표 레이턴시가 커질수록 커맨드에 대한 완료 응답을 제공할 때까지 걸리는 시간이 증가할 수 있다. 완료 응답 제어부는 커맨드 처리가 빠르게 완료되더라도 평균 성능 제한 및 추가 성능 제한을 통해 커맨드 완료 응답을 제공하지 않을 수 있다. 결정된 목표 레이턴시가 기준 레이턴시(tref)보다 큰 값을 가지는 경우, 뒤따르는 구간에서 제공되는 커맨드들에 대한 레이턴시가 모두 오버 레이턴시로 카운트될 수 있다. 다만, 목표 레이턴시가 커짐에 따라 제공되는 커맨드들의 개수가 감소할 수 있다. 제공되는 커맨드들의 개수가 감소하면, 오버 레이턴시의 발생 횟수 또한 감소할 수 있다. 오버 레이턴시의 발생 횟수가 감소함에 따라 목표 레이턴시도 그에 비례하여 작아질 수 있다. 목표 레이턴시가 감소함에 따라 성능 제한의 정도 역시 줄어들 수 있다. 위 과정을 통해 호스트에게 일정한 레이턴시에 따라 커맨드에 대한 완료 응답을 제공함으로써 호스트의 신뢰성을 높일 수 있다.
도 10은 본 발명의 일 실시 예에 따른 커맨드에 대한 완료 응답을 지연하는 과정을 설명하기 위한 순서도이다.
도 10을 참조하면, S1001 단계에서, 메모리 컨트롤러는 메모리 장치의 현재 상태가 서스테인(Sustain) 상태인지 여부를 판단할 수 있다. 서스테인(Sustain) 상태는 메모리 장치 내에 포함된 복수의 메모리 블록들 중 프리 블록의 개수에 따라 결정될 수 있다. 프리 블록은 데이터가 저장되지 않은 블록일 수 있다. 프리 블록의 개수가 기준 값 미만인 경우, 메모리 장치가 효율적으로 사용될 수 있도록 가비지 컬렉션(GC) 동작이 수행될 수 있다. 이 경우, 메모리 컨트롤러는 서스테인(Sustain) 상태임을 나타내는 상태 정보를 제공할 수 있다.
S1003 단계에서, 서스테인(Sustain) 상태인 경우, 메모리 컨트롤러는 오버 레이턴시의 횟수를 카운트할 수 있다. 오버 레이턴시는 미리 결정된 기준 레이턴시(tref)보다 큰 레이턴시일 수 있다. 메모리 컨트롤러는 기준 시간(제n구간)에서 발생한 오버 레이턴시의 발생 횟수를 카운트하고 오버 레이턴시 발생 횟수에 관한 정보를 제공할 수 있다.
S1005 단계에서, 메모리 컨트롤러는 오버 레이턴시 발생 횟수에 관한 정보와 목표 레이턴시 정보를 기초로 목표 레이턴시를 결정할 수 있다.
S1007 단계에서, 메모리 컨트롤러는 목표 레이턴시와 완료 응답 대기 시간을 비교할 수 있다. 완료 응답 대기 시간은 호스트로부터 커맨드를 수신한 때로부터 커맨드에 대한 완료 응답을 제공하기 전까지 소요된 시간일 수 있다. 메모리 컨트롤러는 목표 레이턴시와 기준 시간(제n+1구간) 동안 제공되는 커맨드에 대한 완료 응답 대기시간을 비교하고, 커맨드에 대한 완료 응답을 지연시킬지 여부를 결정할 수 있다.
S1009 단계에서, 메모리 컨트롤러(200)는 목표 레이턴시와 완료 응답 대기 시간의 비교 결과에 따라 호스트에게 커맨드 완료 응답 제공을 지연할 수 있다. 목표 레이턴시가 커맨드에 대한 완료 응답 대기 시간보다 긴 경우, 목표 레이턴시와 완료 응답 대기 시간의 차이 만큼 커맨드 완료 응답의 제공을 지연할 수 있다. 위 과정을 통해 커맨드에 대한 레이턴시가 목표 레이턴시와 같아질 수 있다.
S1011 단계에서, 메모리 컨트롤러(200)는 목표 레이턴시와 완료 응답 대기 시간의 비교 결과에 따라 호스트에게 곧바로 커맨드 완료 응답을 제공할 수 있다. 목표 레이턴시보다 커맨드에 대한 완료 응답 대기 시간이 긴 경우, 메모리 컨트롤러는 호스트에게 즉시 커맨드에 대한 완료 응답을 제공할 수 있다. 이 경우, 커맨드에 대한 레이턴시는 목표 레이턴시보다 크거나 같을 수 있다.
서스테인(Sustain) 상태가 아닌 경우, 가비지 컬렉션(GC) 동작이 수행되지 않으므로, 성능 제한 없이 커맨드를 처리할 수 있다. 따라서 서스테인(Sustain) 상태가 아닌 경우, 위 과정이 수행되지 않을 수 있다.
도 11은 본 발명의 일 실시 예에 따라 주기적으로 오버 레이턴시를 계산하고 커맨드 완료 응답을 지연하는 과정을 설명하기 위한 순서도이다.
도 11을 참고하면, S1101 단계에서, 메모리 컨트롤러는 기준 시간(제n구간)동안 오버 레이턴시의 발생 횟수를 카운트하고 이에 따라 결정되는 목표 레이턴시를 계산할 수 있다. 기준 시간(제n구간)동안 발생한 오버 레이턴시의 횟수에 따라 결정된 목표 레이턴시를 기초로 기준 시간(제n+1구간) 동안 제공되는 커맨드들에 대한 완료 응답의 제공을 지연시킬 수 있다.
S1103 단계에서, 메모리 컨트롤러는 기준 시간(제n+1구간)동안 제공되는 커맨드들에 대한 완료 응답의 제공을 지연시킬 수 있다. 이 과정에서, 목표 레이턴시와 커맨드에 대한 완료 응답 대기 시간을 비교하고 비교된 결과에 따라 커맨드 완료 응답을 제공하는 과정이 포함될 수 있다.
S1105 단계에서, 메모리 컨트롤러는 기준 시간(제n+1구간)동안 제공되는 커맨드들에 대한 레이턴시들 중 기준 레이턴시(tref)보다 큰 오버 레이턴시의 발생 횟수를 카운트하고, 목표 레이턴시를 계산할 수 있다. S1103 단계와 S1105 단계는 동시에 진행될 수 있다.
S1107 단계에서, 메모리 컨트롤러는 메모리 장치가 서스테인(Sustain) 상태인지 판단할 수 있다. 서스테인(Sustain) 상태가 아니라면 추가적인 성능 제한이 필요하지 않으므로, 동작이 종료될 수 있다. 다만, 메모리 장치가 서스테인(Sustain) 상태라면, S1101 내지 S1107의 동작을 제n+1 구간과 제n+2구간에 대해 반복하여 수행할 수 있다(S1109). 이 과정에서, 제n+1구간 및 제n+2구간의 시간 간격은 제n구간 및 제n+1구간의 시간 간격과 동일할 수 있다.
도 12는 도 1의 메모리 컨트롤러(200)의 다른 실시 예를 설명하기 위한 도면이다.
메모리 컨트롤러(1200)는 호스트(Host) 및 메모리 장치에 연결될 수 있다. 호스트(Host)로부터의 요청에 응답하여, 메모리 컨트롤러(1200)는 메모리 장치를 액세스하도록 구성될 수 있다. 예를 들면, 메모리 컨트롤러(1200)는 메모리 장치의 라이트, 리드, 소거, 그리고 배경(background) 동작을 제어하도록 구성될 수 있다. 메모리 컨트롤러(1200)는 메모리 장치 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성될 수 있다. 메모리 컨트롤러(1200)는 메모리 장치를 제어하기 위한 펌웨어(firmware)를 구동할 수 있다.
도 12를 참조하면, 메모리 컨트롤러(1200)는 프로세서부(Processor; 1210), 메모리 버퍼부(Memory Buffer; 1220), 에러 정정부(ECC; 1230), 호스트 인터페이스(Host Interface; 1240), 버퍼 제어부(Buffer Control Circuit; 1250), 메모리 인터페이스(Memory Interface; 1260) 그리고 버스(Bus; 1270)를 포함할 수 있다.
버스(1270)는 메모리 컨트롤러(1200)의 구성 요소들 사이에 채널(channel)을 제공하도록 구성될 수 있다.
프로세서부(1210)는 메모리 컨트롤러(1200)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서부(1210)는 호스트 인터페이스(1240)를 통해 외부의 호스트와 통신하고, 메모리 인터페이스(1260)를 통해 메모리 장치와 통신할 수 있다. 또한 프로세서부(1210)는 버퍼 제어부(1250)를 통해 메모리 버퍼부(1220)와 통신할 수 있다. 프로세서부(1210)는 메모리 버퍼부(1220)를 동작 메모리, 캐시 메모리(cache memory) 또는 버퍼 메모리(buffer memory)로 사용하여 저장 장치의 동작을 제어할 수 있다.
프로세서부(1210)는 플래시 변환 계층(FTL)의 기능을 수행할 수 있다. 프로세서부(1210)는 플래시 변환 계층(FTL)을 통해 호스트가 제공한 논리 블록 어드레스(logical block address, LBA)를 물리 블록 어드레스(physical block address, PBA)로 변환할 수 있다
프로세서부(1210)는 호스트(Host)로부터 수신된 데이터를 랜더마이즈하도록 구성될 수 있다. 예를 들면, 프로세서부(1210)는 랜더마이징 시드(seed)를 이용하여 호스트(Host)로부터 수신된 데이터를 랜더마이즈할 것이다. 랜더마이즈된 데이터는 저장될 데이터로서 메모리 장치에 제공되어 메모리 셀 어레이에 라이트 될 수 있다.
프로세서부(1210)는 리드 동작 시 메모리 장치로부터 수신된 데이터를 디랜더마이즈하도록 구성될 수 있다. 예를 들면, 프로세서부(1210)는 디랜더마이징 시드를 이용하여 메모리 장치로부터 수신된 데이터를 디랜더마이즈할 것이다. 디랜더마이즈된 데이터는 호스트(Host)로 출력될 수 있다.
실시 예로서, 프로세서부(1210)는 소프트웨어(software) 또는 펌웨어(firmware)를 구동함으로써 랜더마이즈 및 디랜더마이즈를 수행할 수 있다.
메모리 버퍼부(1220)는 프로세서부(1210)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있다. 메모리 버퍼부(1220)는 프로세서부(1210)가 실행하는 코드들 및 커맨드들을 저장할 수 있다. 메모리 버퍼부(1220)는 프로세서부(1210)에 의해 처리되는 데이터를 저장할 수 있다. 메모리 버퍼부(1220)는 SRAM(Static RAM), 또는 DRAM(Dynamic RAM)을 포함할 수 있다.
에러 정정부(1230)는 에러 정정을 수행할 수 있다. 에러 정정부(1230)는 메모리 인터페이스(1260)를 통해 메모리 장치에 저장될 데이터에 기반하여 에러 정정 인코딩(ECC encoding)을 수행할 수 있다. 에러 정정 인코딩 된 데이터는 메모리 인터페이스(1260)를 통해 메모리 장치로 전달될 수 있다. 에러 정정부(1230)는 메모리 장치로부터 메모리 인터페이스(1260)를 통해 수신되는 데이터에 대해 에러 정정 디코딩(ECC decoding)을 수행할 수 있다. 예시적으로, 에러 정정부(1230)는 메모리 인터페이스(1260)의 구성 요소로서 메모리 인터페이스(1260)에 포함될 수 있다.
버퍼 제어부(1250)는 프로세서부(1210)의 제어에 따라, 메모리 버퍼부(1220)를 제어하도록 구성될 수 있다.
메모리 인터페이스(1260)는 프로세서부(1210)의 제어에 따라, 메모리 장치와 통신하도록 구성될 수 있다. 메모리 인터페이스(1260)는 채널을 통해 커맨드, 어드레스 및 데이터를 메모리 장치와 통신할 수 있다.
예시적으로, 메모리 컨트롤러(1200)는 메모리 버퍼부(1220) 및 버퍼 제어부(1250)를 포함하지 않을 수 있다.
예시적으로, 프로세서부(1210)는 코드들을 이용하여 메모리 컨트롤러(1200)의 동작을 제어할 수 있다. 프로세서부(1210)는 메모리 컨트롤러(1200)의 내부에 제공되는 불휘발성 메모리 장치(예를 들어, Read Only Memory)로부터 코드들을 로드할 수 있다. 다른 예로서, 프로세서부(1210)는 메모리 장치로부터 메모리 인터페이스(1260)를 통해 코드들을 로드(load)할 수 있다.
예시적으로, 메모리 컨트롤러(1200)의 버스(1270)는 제어 버스(control bus) 및 데이터 버스(data bus)로 구분될 수 있다. 데이터 버스는 메모리 컨트롤러(1200) 내에서 데이터를 전송하고, 제어 버스는 메모리 컨트롤러(1200) 내에서 커맨드, 어드레스와 같은 제어 정보를 전송하도록 구성될 수 있다. 데이터 버스와 제어 버스는 서로 분리되며, 상호간에 간섭하거나 영향을 주지 않을 수 있다. 데이터 버스는 호스트 인터페이스(1240), 버퍼 제어부(1250), 에러 정정부(1230) 및 메모리 인터페이스(1260)에 연결될 수 있다. 제어 버스는 호스트 인터페이스(1240), 프로세서부(1210), 버퍼 제어부(1250), 메모리 버퍼부(1220) 및 메모리 인터페이스(1260)에 연결될 수 있다.
도 13은 본 발명의 일 실시 예에 따른 저장 장치가 적용된 메모리 카드 시스템을 보여주는 도면이다.
도 13을 참조하면, 메모리 카드 시스템(2000)은 메모리 컨트롤러(2100), 메모리 장치(2200) 및 커넥터(2300)를 포함한다. 메모리 컨트롤러(2100)는 도 1을 참조하여 설명된 메모리 컨트롤러(200)와 동일하게 구현될 수 있다.
예시적으로, 메모리 컨트롤러(2100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 14는 본 발명의 일 실시 예에 따른 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 도면이다.
도 14를 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함한다. SSD(3200)는 신호 커넥터(3001)를 통해 호스트(3100)와 신호(SIG)를 주고받고, 전원 커넥터(3002)를 통해 전원(PWR)을 입력 받을 수 있다. SSD(3200)는 SSD 컨트롤러(3210), 복수의 플래시 메모리들(3221~322n), 보조 전원 장치(3230), 및 버퍼 메모리(3240)를 포함할 수 있다.
실시 예에서, SSD 컨트롤러(3210)는 도 1을 참조하여 설명된 메모리 컨트롤러(200)의 기능을 수행할 수 있다.
SSD 컨트롤러(3210)는 호스트(3100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(3221~322n)을 제어할 수 있다. 예시적으로, 신호(SIG)는 호스트(3100) 및 SSD(3200)의 인터페이스에 기반된 신호들일 수 있다.
보조 전원 장치(3230)는 전원 커넥터(3002)를 통해 호스트(3100)와 연결될 수 있다. 보조 전원 장치(3230)는 호스트(3100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(3230)는 호스트(3100)로부터의 전원 공급이 원활하지 않을 경우, SSD(3200)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(3230)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3230)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(3240)는 SSD(3200)의 버퍼 메모리로 동작할 수 있다. 예를 들어, 버퍼 메모리(3240)는 호스트(3100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(3221~322n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(3221~322n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(3240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
도 15는 본 발명의 일 실시 예에 따른 메모리 시스템이 적용된 사용자 시스템을 보여주는 도면이다.
도 15를 참조하면, 사용자 시스템(4000)은 애플리케이션 프로세서(4100), 메모리 모듈(4200), 네트워크 모듈(4300), 스토리지 모듈(4400), 및 사용자 인터페이스(4500)를 포함할 수 있다.
애플리케이션 프로세서(4100)는 사용자 시스템(4000)에 포함된 구성 요소들, 운영체제(OS; Operating System), 또는 사용자 프로그램 등을 구동할 수 있다. 예시적으로, 애플리케이션 프로세서(4100)는 사용자 시스템(4000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(4100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(4200)은 사용자 시스템(4000)의 주 메모리, 동작 메모리, 버퍼 메모리, 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(4200)은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다. 예시적으로 애플리케이션 프로세서(4100) 및 메모리 모듈(4200)은 POP(Package on Package)를 기반으로 패키지화되어 하나의 반도체 패키지로 제공될 수 있다.
네트워크 모듈(4300)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(4300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, Wi-Fi 등과 같은 무선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(4300)은 애플리케이션 프로세서(4100)에 포함될 수 있다.
스토리지 모듈(4400)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(4400)은 애플리케이션 프로세서(4100)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(4400)은 스토리지 모듈(4400)에 저장된 데이터를 애플리케이션 프로세서(4100)로 전송할 수 있다. 예시적으로, 스토리지 모듈(4400)은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 불휘발성 반도체 메모리 소자로 구현될 수 있다. 예시적으로, 스토리지 모듈(4400)은 사용자 시스템(4000)의 메모리 카드, 외장형 드라이브 등과 같은 탈착식 저장 매체(removable drive)로 제공될 수 있다.
예시적으로, 스토리지 모듈(4400)은 복수의 불휘발성 메모리 장치들을 포함할 수 있고, 복수의 불휘발성 메모리 장치들은 도 1을 참조하여 설명된 메모리 장치(110)와 동일하게 동작할 수 있다. 스토리지 모듈(4400)은 도 1을 참조하여 설명된 메모리 시스템(100)과 동일하게 동작할 수 있다.
사용자 인터페이스(4500)는 애플리케이션 프로세서(4100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(4500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(4500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모니터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
100: 메모리 시스템 110: 메모리 장치
120: 목표 레이턴시 정보 저장부 200: 메모리 컨트롤러
210: 성능 제어부 220: 동작 제어부
230: 상태 제어부 240: 레이턴시 모니터링부
250: 완료 응답 제어부 400: 호스트

Claims (20)

  1. 제1 구간 동안, 외부로부터 제1 커맨드들을 수신한 때로부터 상기 커맨드들에 대한 완료 응답들을 상기 외부에 전송할 때까지 걸리는 시간인 레이턴시들 중 미리 설정된 기준 레이턴시를 초과하는 오버 레이턴시의 발생 횟수에 관한 정보를 생성하는 레이턴시 모니터링부; 및
    상기 오버 레이턴시의 발생 횟수에 관한 정보를 기초로 제1 목표 레이턴시를 결정하고, 상기 제1 구간에 뒤따르는 제2 구간에서 상기 외부로부터 제공되는 제2 커맨드들에 대한 완료 응답을 상기 제1 목표 레이턴시가 경과한 뒤에 상기 외부에 제공하는 완료 응답 제어부;를 포함하는 메모리 컨트롤러.
  2. 제 1항에 있어서, 상기 메모리 컨트롤러는,
    상기 오버 레이턴시의 발생 횟수에 따른 목표 레이턴시 정보를 저장하고, 상기 목표 레이턴시 정보를 상기 완료 응답 제어부에 제공하는 목표 레이턴시 정보 저장부;를 더 포함하는 메모리 컨트롤러.
  3. 제 1항에 있어서, 상기 메모리 컨트롤러는,
    메모리 장치 내부의 프리 블록들의 개수가 기준 값 미만인 경우, 상기 메모리 장치의 상태가 서스테인 상태임을 나타내는 상태 정보를 상기 레이턴시 모니터링부에 제공하는 상태 제어부;를 더 포함하는 메모리 컨트롤러.
  4. 제 2항에 있어서, 상기 목표 레이턴시 정보는,
    상기 오버 레이턴시의 발생 횟수에 비례하여 증가하는 레이턴시 값을 포함하는 메모리 컨트롤러.
  5. 제 4항에 있어서, 상기 레이턴시 값은,
    메모리 장치 내부의 프리 블록들의 개수가 기준 값 미만인 상태인 서스테인 상태에서 평균 성능에 대응되는 성능 달성을 위해 발생하는 레이턴시인 평균 레이턴시와 상기 외부에서 요구하는 최소한의 성능 달성을 위해 발생하는 레이턴시인 최대 레이턴시 사이의 값인, 메모리 컨트롤러.
  6. 제 1항에 있어서,
    상기 제1 커맨드들 및 상기 제2 커맨드들은 리드 커맨드 또는 라이트 커맨드 중 어느 하나인 메모리 컨트롤러.
  7. 제 1항에 있어서, 상기 완료 응답 제어부는,
    상기 제2 커맨드들에 대응되는 동작이 상기 제1 목표 레이턴시가 경과한 뒤에 완료되면, 상기 외부에게 상기 제2 커맨드들에 대한 완료 응답을 지연시키지 않고 제공하는 메모리 컨트롤러.
  8. 제 1항에 있어서,
    상기 레이턴시 모니터링부는,
    상기 제2 구간 동안 상기 외부로부터 수신한 제2 커맨드들에 대한 오버 레이턴시의 발생 횟수에 관한 정보를 생성하고,
    상기 완료 응답 제어부는,
    상기 제2 구간 동안 발생한 오버 레이턴시 횟수에 관한 정보에 기초하여 제2 목표 레이턴시를 결정하고, 상기 제2 구간에 뒤따르는 제3 구간동안 상기 외부로부터 수신한 제3 커맨드들에 대한 완료 응답을 상기 제2 목표 레이턴시가 경과한 후에 상기 외부에 제공하는 메모리 컨트롤러.
  9. 복수의 메모리 블록들을 포함하는 메모리 장치; 및
    제1 구간 동안 호스트로부터 상기 메모리 장치에 대한 제1 커맨드들을 수신한 시점부터 상기 제1 커맨드들에 대한 완료 응답을 제공한 때까지의 시간인 레이턴시들 중, 미리 설정된 기준 레이턴시를 초과하는 오버 레이턴시가 발생한 횟수를 기초로, 상기 제1 구간에 뒤따르는 제2 구간에서 상기 호스트로부터 제공되는 제2 커맨드들에 대한 완료 응답들을 지연시키는 메모리 컨트롤러;를 포함하는 메모리 시스템.
  10. 제 9항에 있어서, 상기 메모리 컨트롤러는,
    오버 레이턴시 발생 횟수에 따른 목표 레이턴시 정보를 저장하는 목표 레이턴시 정보 저장부;
    상기 메모리 장치 내부에 포함된 메모리 블록들 중 프리 블록들의 개수가 기준 값 미만인 경우 상기 오버 레이턴시가 발생한 횟수에 관한 정보를 생성하는 동작 제어부; 및
    상기 오버 레이턴시가 발생한 횟수에 관한 정보 및 상기 목표 레이턴시 정보에 기초하여 제1 목표 레이턴시를 선택하고, 상기 제1 목표 레이턴시에 기초하여 상기 제2 커맨드들에 대한 완료 응답을 지연시키는 성능 제어부;를 포함하는 메모리 시스템.
  11. 제 10항에 있어서, 상기 목표 레이턴시 정보는,
    상기 오버 레이턴시 발생 횟수에 비례하여 증가하는 레이턴시 값을 포함하는 메모리 시스템.
  12. 제 11항에 있어서, 상기 레이턴시 값은,
    상기 메모리 장치 내부에 포함된 메모리 블록들 중 상기 프리 블록들의 개수가 기준 값 미만인 상태인 서스테인 상태에서 평균 성능에 대응되는 성능 달성을 위해 발생하는 레이턴시인 평균 레이턴시와 상기 호스트가 요구하는 최소한의 성능 달성을 위해 발생하는 레이턴시인 최대 레이턴시 사이의 값인, 메모리 시스템.
  13. 제 10항에 있어서, 상기 성능 제어부는,
    상기 제1 목표 레이턴시가 상기 호스트로부터 상기 제2 커맨드들을 수신한 때로부터 상기 제2 커맨드들에 대한 완료 응답을 제공할 때까지의 시간인 완료 응답 대기 시간보다 긴 경우, 상기 제2 커맨드들에 대한 완료 응답을 상기 제1 목표 레이턴시와 상기 완료 응답 대기 시간의 차이만큼 지연시키는 메모리 시스템.
  14. 제 12항에 있어서, 상기 성능 제어부는,
    상기 목표 레이턴시가 상기 호스트로부터 상기 제2 커맨드들을 수신한 때로부터 상기 제2 커맨드들에 대한 완료 응답을 제공할 때까지의 시간인 완료 응답 대기 시간보다 짧은 경우, 상기 제2 커맨드들에 대한 완료 응답을 상기 호스트에게 지연 없이 제공하는 메모리 시스템.
  15. 제 9항에 있어서,
    상기 제1 커맨드들 및 상기 제2 커맨드들은 리드 커맨드 또는 라이트 커맨드 중 어느 하나인 메모리 시스템.
  16. 외부로부터 제1 커맨드들을 수신한 때로부터 상기 외부에 상기 제1 커맨드들에 대한 완료 응답들을 전송할 때까지 걸리는 시간인 레이턴시들 중 미리 설정된 기준 레이턴시를 초과하는 오버 레이턴시의 횟수를 제1 구간 동안 카운트하는 단계; 및
    상기 오버 레이턴시의 횟수를 기초로 결정된 제1 목표 레이턴시에 상기 제1 구간에 뒤따르는 제2 구간 동안, 상기 외부로부터 제공되는 제2 커맨드들에 대한 완료 응답을 지연시키는 단계;를 포함하는 메모리 컨트롤러의 동작 방법.
  17. 제 16항에 있어서, 상기 완료 응답을 지연시키는 단계는,
    상기 제1 목표 레이턴시와 상기 외부로부터 상기 제2 커맨드들을 수신한 때로부터 상기 완료 응답을 상기 외부에 제공하기 전까지 걸린 시간인 완료 응답 대기 시간을 비교하고, 상기 제1 목표 레이턴시가 긴 경우 상기 제1 목표 레이턴시와 상기 완료 응답 대기 시간의 차이만큼 상기 외부에 제공할 상기 커맨드들에 대한 완료 응답을 지연시키는 단계;를 포함하는 메모리 컨트롤러의 동작 방법.
  18. 제 17항에 있어서, 상기 메모리 컨트롤러의 동작 방법은,
    상기 제2 구간 동안 상기 외부로부터 제공되는 제2 커맨드들에 대한 오버 레이턴시의 횟수를 카운트하는 단계; 및
    상기 제2 커맨드들에 대한 오버 레이턴시의 횟수를 기초로 제2 목표 레이턴시를 결정하고, 상기 제2 목표 레이턴시에 기초하여 상기 외부로부터 상기 제2 구간에 뒤따르는 제3 구간동안 제공되는 제3 커맨드들에 대한 완료 응답을 지연시키는 단계;를 더 포함하는 메모리 컨트롤러의 동작 방법.
  19. 제 16항에 있어서,
    상기 제1 커맨드들 및 상기 제2 커맨드들은 리드 커맨드 또는 라이트 커맨드 중 어느 하나인 메모리 컨트롤러의 동작 방법.
  20. 제 16항에 있어서, 상기 오버 레이턴시의 횟수를 상기 제1 구간동안 카운트하는 단계는,
    상기 메모리 컨트롤러가 제어하는 메모리 장치 내부의 프리 블록의 개수가 기준 값 미만인 경우 수행되는 메모리 컨트롤러의 동작 방법.
KR1020220093510A 2022-07-27 2022-07-27 메모리 시스템 및 그 동작 방법 KR20240015513A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220093510A KR20240015513A (ko) 2022-07-27 2022-07-27 메모리 시스템 및 그 동작 방법
US18/082,586 US20240036731A1 (en) 2022-07-27 2022-12-16 Memory system and method of operating the same
CN202310171073.6A CN117476059A (zh) 2022-07-27 2023-02-27 存储器系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220093510A KR20240015513A (ko) 2022-07-27 2022-07-27 메모리 시스템 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20240015513A true KR20240015513A (ko) 2024-02-05

Family

ID=89631771

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220093510A KR20240015513A (ko) 2022-07-27 2022-07-27 메모리 시스템 및 그 동작 방법

Country Status (3)

Country Link
US (1) US20240036731A1 (ko)
KR (1) KR20240015513A (ko)
CN (1) CN117476059A (ko)

Also Published As

Publication number Publication date
CN117476059A (zh) 2024-01-30
US20240036731A1 (en) 2024-02-01

Similar Documents

Publication Publication Date Title
US11861359B2 (en) Storage device and method of operating the same
US11449235B2 (en) Storage device for processing merged transactions and method of operating the same
US11204698B2 (en) Memory controller to set operating environment of memory device, method of operating the same and storage device including the same
US11243715B2 (en) Memory controller and operating method thereof
KR20210014365A (ko) 컨트롤러 및 그 동작 방법
US11520519B2 (en) Storage device and method of operating the same
US11934309B2 (en) Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
US11768625B2 (en) Storage device managing a multi-tier cache memory and operating method thereof
US11436148B2 (en) Memory controller and method of operating the same
US11775211B2 (en) Memory controller and method of operating the same
US11449277B2 (en) Memory controller and method of operating the same
KR20230037240A (ko) 호스트 장치, 메모리 컨트롤러 및 이를 포함하는 컴퓨팅 시스템
KR20240015513A (ko) 메모리 시스템 및 그 동작 방법
US20240176738A1 (en) Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
US20230103797A1 (en) Memory controller and method of operating the same
KR20230166612A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20240003648A (ko) 메모리 시스템 및 그에 포함된 메모리 컨트롤러의 동작 방법
KR20220165106A (ko) 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
KR20230103130A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20230063857A (ko) 스토리지 장치 및 전자 장치
KR20230168908A (ko) 컴퓨팅 시스템 및 그 동작 방법
KR20230050012A (ko) 스토리지 장치 및 그 동작 방법