KR20240077792A - 프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치 - Google Patents

프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치 Download PDF

Info

Publication number
KR20240077792A
KR20240077792A KR1020220160064A KR20220160064A KR20240077792A KR 20240077792 A KR20240077792 A KR 20240077792A KR 1020220160064 A KR1020220160064 A KR 1020220160064A KR 20220160064 A KR20220160064 A KR 20220160064A KR 20240077792 A KR20240077792 A KR 20240077792A
Authority
KR
South Korea
Prior art keywords
suspension
read
information
commands
storage device
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020220160064A
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 KR1020220160064A priority Critical patent/KR20240077792A/ko
Priority to US18/336,355 priority patent/US12340122B2/en
Priority to CN202310851863.9A priority patent/CN118092782A/zh
Priority to EP23199246.2A priority patent/EP4375839A1/en
Publication of KR20240077792A publication Critical patent/KR20240077792A/ko
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

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

스토리지 장치의 구동 방법에서, 호스트 장치로부터 스토리지 장치의 동작에 대한 요구사항을 나타내는 제1 정보를 수신한다. 호스트 장치로부터 수신되는 기입 요청들 및 독출 요청들과 스토리지 장치의 동작에 기초하여 내부적으로 생성되는 제2 정보를 수신한다. 기입 요청들 및 독출 요청들에 대응하는 프로그램 커맨드들 및 독출 커맨드들을 비휘발성 메모리들로 전송한다. 제1 및 제2 정보들에 기초하여 생성되고 프로그램 커맨드들에 의해 수행되는 프로그램 동작을 일시적으로 정지하기 위한 서스펜션 커맨드들을 비휘발성 메모리들 중 적어도 하나로 전송한다. 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 제1 및 제2 정보들에 기초하여 조절된다. 기입 요청들 및 독출 요청들 중 적어도 하나가 변화하는 경우에, 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 변화한다.

Description

프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치{METHOD OF OPERATING STORAGE DEVICE USING PROGRAM SUSPENSION CONTROL AND STORAGE DEVICE PERFORMING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법, 및 상기 구동 방법을 수행하는 스토리지 장치에 관한 것이다.
최근에는 메모리 장치를 이용하는 SSD(solid state drive)와 같은 스토리지 장치가 널리 사용되고 있다. 상기와 같은 스토리지 장치는 기계적인 구동부가 없어 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 최근 들어 노트북과 같은 전자 시스템뿐만 아니라, 자동차, 항공기, 드론(drone) 등과 같은 다양한 종류의 시스템에 전자 회로가 적용됨에 따라, 스토리지 장치 역시 다양한 종류의 시스템에서 사용되고 있다.
스토리지 장치는 호스트 장치로부터 수신되는 복수의 요청들 및/또는 커맨드들에 기초하여 동작한다. 이 때, 스토리지 장치에 입출력되는 요청들 및/또는 커맨드들이 편중되는 경우에 성능 저하가 발생할 수 있으며, 따라서 호스트 장치로부터의 요청들 및/또는 커맨드들을 효율적으로 처리하기 위한 다양한 방식들이 연구되고 있다.
본 발명의 일 목적은 프로그램 서스펜션이 발생하는 횟수 및/또는 시점을 제어하여 호스트 장치로부터의 요청들을 효율적으로 처리할 수 있는 스토리지 장치의 구동 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 구동 방법을 수행하는 스토리지 장치를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 호스트 장치로부터 스토리지 장치의 동작에 대한 요구사항을 나타내는 제1 정보를 수신한다. 상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들과 상기 스토리지 장치의 동작에 기초하여 내부적으로 생성되는 제2 정보를 수신한다. 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대응하는 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들을 복수의 비휘발성 메모리들로 전송한다. 상기 제1 정보 및 상기 제2 정보에 기초하여 생성되고 상기 복수의 프로그램 커맨드들에 의해 수행되는 프로그램 동작을 일시적으로 정지하기 위한 서스펜션(suspension) 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송한다. 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 상기 제1 정보 및 상기 제2 정보에 기초하여 조절된다. 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들 중 적어도 하나가 변화하는 경우에, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 변화한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 스토리지 컨트롤러 및 상기 스토리지 컨트롤러에 의해 제어되는 복수의 비휘발성 메모리들을 포함한다. 상기 스토리지 컨트롤러는, 호스트 장치로부터 스토리지 장치의 동작에 대한 요구사항을 나타내는 제1 정보를 수신하고, 상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들과 상기 스토리지 장치의 동작에 기초하여 내부적으로 생성되는 제2 정보를 수신하고, 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대응하는 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들을 복수의 비휘발성 메모리들로 전송하고, 상기 제1 정보 및 상기 제2 정보에 기초하여 생성되고 상기 복수의 프로그램 커맨드들에 의해 수행되는 프로그램 동작을 일시적으로 정지하기 위한 서스펜션(suspension) 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송한다. 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 상기 제1 정보 및 상기 제2 정보에 기초하여 조절된다. 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들 중 적어도 하나가 변화하는 경우에, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 변화한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 컨트롤러 및 복수의 비휘발성 메모리들을 포함하고, 외부의 호스트 장치와 통신하는 스토리지 장치의 구동 방법에서, 상기 스토리지 컨트롤러가, 상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들을 상기 스토리지 장치가 실행하기 위해 요구되는 처리량(throughput) 조건 및 레이턴시(latency) 조건을 포함하는 제1 정보를 상기 호스트 장치로부터 수신한다. 상기 스토리지 컨트롤러가, 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 모니터링하여 획득되는 기입 대역폭 정보 및 독출 대역폭 정보를 포함하고 상기 스토리지 장치의 동작을 모니터링하여 획득되는 스케줄링 오버헤드 정보를 포함하는 제2 정보를 내부적으로 생성한다. 상기 스토리지 컨트롤러가, 상기 복수의 비휘발성 메모리들이 복수의 프로그램 동작들 및 복수의 독출 동작들을 수행하도록, 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대응하는 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들을 복수의 비휘발성 메모리들로 전송한다. 상기 스토리지 컨트롤러가, 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리가 제1 프로그램 동작들의 수행 도중에 제1 독출 동작들의 수행을 제한하는 독출 스로틀링(throttling) 동작을 선택적으로 적용하도록, 상기 제1 정보 및 상기 제2 정보에 기초하여 생성되고 상기 제1 프로그램 동작들을 일시적으로 정지하기 위한 제1 서스펜션(suspension) 커맨드들을 상기 제1 비휘발성 메모리로 전송한다. 상기 제1 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 상기 제1 정보 및 상기 제2 정보에 기초하여 조절된다. 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들 중 적어도 하나가 변화하는 경우에, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 변화한다. 상기 처리량 조건 및 상기 레이턴시 조건을 만족하도록 상기 제1 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절한다. 상기 제1 서스펜션 커맨드들을 상기 제1 비휘발성 메모리로 전송하는데 있어서, 상기 제1 정보 및 상기 제2 정보에 기초하여 제1 비휘발성 메모리에서 단위 시간당 발생 가능한 서스펜션 커맨드들의 제1 개수를 산출한다. 상기 제1 개수에 기초하여 상기 제1 비휘발성 메모리에서 현재 발생 가능한 서스펜션 커맨드들의 제2 개수를 산출한다. 상기 제1 정보 및 상기 제2 정보에 기초하여 상기 제1 비휘발성 메모리에서 상기 레이턴시 조건을 불만족하는 제1 독출 커맨드를 검출한다. 상기 제2 개수 및 상기 제1 독출 커맨드에 기초하여 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송한다.
상기와 같은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법 및 스토리지 장치에서는, 외부로부터 수신되는 제1 정보 및 내부에서 생성되는 상기 제2 정보에 기초하여, 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 적응적으로 및/또는 동적으로 조절할 수 있다. 예를 들어, 스토리지 장치의 처리량 조건을 보장하기 위해서는 독출 스로틀링을 통해 프로그램 서스펜션 동작의 발생을 최소화하여야 하지만, 프로그램 서스펜션 동작을 무조건적으로 제한하게 되면 독출 요청의 실행이 지연되어 레이턴시 조건을 만족하지 못하고 독출 레이턴시가 증가할 수 있다. 따라서, 독출 레이턴시가 저해되지 않고 성능 저하를 유발하지 않을 정도로 적절한 숫자의 프로그램 서스펜션 동작만이 발생하도록, 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 적응적으로 및/또는 동적으로 조절할 수 있다. 따라서, 스토리지 장치의 동작 성능 및 효율이 향상될 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 5는 도 3의 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 6은 도 5의 스토리지 컨트롤러에 포함되는 제1 서스펜션 관리자의 일 예를 나타내는 블록도이다.
도 7은 도 1의 서스펜션 커맨드들을 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계의 일 예를 나타내는 순서도이다.
도 8, 9a 및 9b는 도 7의 제1 개수를 산출하는 단계의 예들을 나타내는 순서도들이다.
도 10은 도 7의 제2 개수를 산출하는 단계를 설명하기 위한 도면이다.
도 11은 도 7의 제1 서스펜션 커맨드를 제1 비휘발성 메모리로 선택적으로 전송하는 단계의 일 예를 나타내는 순서도이다.
도 12a, 12b 및 12c는 도 11의 동작을 설명하기 위한 도면들이다.
도 13은 도 1의 서스펜션 커맨드들을 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계의 일 예를 나타내는 순서도이다.
도 14a 및 14b는 도 13의 동작을 설명하기 위한 도면들이다.
도 15는 도 1의 서스펜션 커맨드들을 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계의 일 예를 나타내는 순서도이다.
도 16a 및 16b는 도 15의 동작을 설명하기 위한 도면들이다.
도 17은 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 18은 본 발명의 실시예들에 따른 비휘발성 메모리들 및 이를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법은, 스토리지 컨트롤러 및 복수의 비휘발성 메모리들을 포함하는 스토리지 장치에 의해 수행된다. 상기 스토리지 장치는 외부의 호스트 장치로부터 수신되는 요청들에 기초하여 동작할 수 있다. 상기 스토리지 장치 및 이를 포함하는 스토리지 시스템에 대해서는 도 2 등을 참조하여 후술하도록 한다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 상기 스토리지 장치의 외부로부터, 즉 상기 호스트 장치로부터 제1 정보를 수신한다(단계 S100). 상기 제1 정보는 스토리지 장치의 동작에 대한 요구사항을 나타낸다.
예를 들어, 상기 제1 정보는 상기 스토리지 장치에 대한 성능 요구사항, QoS(Quality of Service) 요구사항 등을 포함할 수 있다. 예를 들어, 상기 제1 정보는 상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들을 상기 스토리지 장치가 실행하기 위해 요구되는 처리량(throughput) 조건 및 레이턴시(latency) 조건 중 적어도 하나를 포함할 수 있다. 상기 제1 정보의 내용에 따라 후술하는 단계 S400의 구체적인 구현이 달라지며, 이에 대해서는 후술하도록 한다.
상기 스토리지 장치의 내부에서 생성되고 상기 제1 정보와 다른 제2 정보를 수신한다(단계 S200). 상기 제2 정보는 상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들과 상기 스토리지 장치의 동작에 기초하여 내부적으로 생성된다.
예를 들어, 상기 제2 정보는 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 포함하고 상기 호스트 장치로부터 수신되는 복수의 입력 요청들과 관련된 정보, 상기 스토리지 장치 및/또는 상기 스토리지 시스템의 성능과 관련된 요인(factor) 등을 포함할 수 있다. 예를 들어, 상기 제2 정보는 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대한 기입 대역폭 정보, 독출 대역폭 정보 및 타임스탬프(timestamp) 정보 중 적어도 하나를 포함하며, 상기 스토리지 장치의 동작에 대한 스케줄링 오버헤드(scheduling overhead) 정보를 더 포함할 수 있다. 상기 제2 정보의 내용에 따라 후술하는 단계 S400의 구체적인 구현이 달라지며, 이에 대해서는 후술하도록 한다.
상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대응하는 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들을 상기 복수의 비휘발성 메모리들로 전송한다(단계 S300). 상기 복수의 프로그램 커맨드들이 전송되는 경우에 프로그램 동작이 수행되고, 상기 복수의 독출 커맨드들이 전송되는 경우에 독출 동작이 수행된다. 실시예에 따라서, 상기 복수의 기입/독출 요청들의 수신 순서에 따라 상기 복수의 프로그램/독출 커맨드들이 전송될 수도 있고, 성능/효율 향상을 위해 상기 복수의 기입/독출 요청들을 수신 순서와 무관하게 스케줄링하여 상기 복수의 프로그램/독출 커맨드들이 전송될 수도 있다.
예를 들어, 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들은 논리 어드레스와 함께 제공되고, 상기 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들은 물리 어드레스와 함께 제공될 수 있다. 논리 어드레스는 호스트 장치가 인식하고 있는 저장 공간(즉, 논리 저장 공간)에 대한 어드레스를 나타내고, 물리 어드레스는 스토리지 장치 내의 비휘발성 메모리에 포함되는 실제 저장 공간(즉, 물리 저장 공간)에 대한 어드레스를 나타낸다. 일반적으로, 호스트 장치는 스토리지 장치의 저장 공간이 처음부터 끝까지 일렬로 배열된 것으로 인식하여 데이터를 관리할 수 있으나, 실제로 스토리지 장치의 저장 공간은 호스트 장치가 인식하고 있는 것과는 다른 방식으로 배열되어 있으며, 호스트 장치가 인식하는 데이터의 배열과 스토리지 장치에 저장된 데이터의 배열이 서로 상이할 수 있다. 이에 따라, 스토리지 장치의 특정 저장 공간에 액세스하고자 하는 경우에, 호스트 장치로부터 수신되는 논리 어드레스가 물리 어드레스로 변환되며, 논리-물리 어드레스 변환을 위한 맵핑 테이블이 이용될 수 있다.
예를 들어, 상기 호스트 장치로부터 기입 요청, 논리 기입 어드레스 및 기입 데이터가 수신되는 경우에, 상기 기입 요청 및 상기 논리 기입 어드레스에 기초하여 프로그램 커맨드 및 물리 프로그램 어드레스가 생성되고, 상기 프로그램 커맨드 및 상기 물리 프로그램 어드레스에 기초하여 상기 기입 데이터가 특정 비휘발성 메모리에 프로그램될 수 있다. 상술한 일련의 동작을 상기 호스트 장치를 기준으로는 기입 동작, 상기 스토리지 장치를 기준으로는 프로그램 동작으로 지칭할 수 있고, 본 명세서에서 상술한 두 가지 용어는 실질적으로 동일 또는 유사한 동작을 설명하기 위해 혼용될 수 있다.
예를 들어, 상기 호스트 장치로부터 독출 요청 및 논리 독출 어드레스가 수신되는 경우에, 상기 독출 요청 및 상기 논리 독출 어드레스에 기초하여 독출 커맨드 및 물리 독출 어드레스가 생성되고, 상기 독출 커맨드 및 상기 물리 독출 어드레스에 기초하여 독출 데이터가 특정 비휘발성 메모리로부터 획득되어 상기 호스트 장치로 전송될 수 있다. 상술한 일련의 동작을 독출 동작으로 지칭할 수 있다.
예를 들어, 상기 호스트 장치로부터 수신되는 요청은 호스트 커맨드로 지칭할 수 있고, 상기 기입 요청 및 상기 독출 요청은 각각 기입 호스트 커맨드 및 독출 호스트 커맨드로 지칭할 수 있다. 예를 들어, 상기 비휘발성 메모리로 전송되는 커맨드는 상기 호스트 커맨드와 구별되도록 메모리 커맨드로 지칭할 수 있고, 상기 프로그램 커맨드 및 상기 독출 커맨드는 각각 프로그램 메모리 커맨드 및 독출 메모리 커맨드로 지칭할 수 있다. 실시예에 따라서, 상기 기입 요청 및 상기 독출 요청을 포괄하여 데이터 입출력 요청으로 지칭할 수도 있고, 상기 프로그램 커맨드 및 상기 독출 커맨드를 포괄하여 데이터 입출력 커맨드로 지칭할 수도 있다.
상기 복수의 프로그램 커맨드들에 의해 수행되는 프로그램 동작을 일시적으로 정지하기 위한 서스펜션(suspension) 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송한다(단계 S400). 상기 서스펜션 커맨드들은 상기 제1 정보 및 상기 제2 정보에 기초하여 생성되고, 상기 서스펜션 커맨드들이 전송되는 경우에 상기 프로그램 동작이 일시적으로 정지되며, 이를 프로그램 서스펜션 동작으로 지칭할 수 있다.
단계 S400이 수행됨에 따라, 상기 서스펜션 커맨드들의 전송 개수(즉, 생성 개수) 및 전송 타이밍(즉, 생성 타이밍)은 상기 제1 정보 및 상기 제2 정보에 기초하여 적응적으로 및/또는 동적으로 조절될 수 있다. 또한, 상기 호스트 장치로부터 수신되는 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들 중 적어도 하나가 변화하는 경우에, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 및/또는 동적으로 변화할 수 있다.
일 실시예에서, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍에 기초하여, 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 대한 제1 프로그램 동작의 수행 도중에 제1 독출 동작의 수행을 제한하는 독출 스로틀링(throttling) 동작을 선택적으로 적용할 수 있다.
예를 들어, 제1 기입 요청에 대응하는 제1 프로그램 커맨드에 기초하여 상기 제1 프로그램 동작이 수행되는 동안에, 제1 독출 요청에 대응하는 제1 독출 커맨드에 기초하여 상기 제1 독출 동작을 수행하고자 하는 경우에, 상기 제1 프로그램 동작을 일시적으로 정지하기 위한 제1 서스펜션 커맨드 및 상기 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 즉시 전송하는 대신에, 상기 제1 정보 및 상기 제2 정보에 기초하여 상기 제1 서스펜션 커맨드 및 상기 제1 독출 커맨드의 전송 타이밍을 조절할 수 있다.
단계 S400 및 프로그램 서스펜션 동작을 제어하는 예시적인 구성에 대해서는 도 7 내지 16을 참조하여 후술하도록 한다.
일 실시예에서, 단계 S100, S200, S300 및 S400은 상기 스토리지 컨트롤러에 의해 수행될 수 있다.
스토리지 장치가 동작함에 따라, 스토리지 장치에 기입 요청들 및 독출 요청들이 혼합되어 입력될 수 있다. 예를 들어, 순차 기입(sequential write) 및 랜덤 독출(random read)이 함께 요청될 수 있다. 이러한 상황에서도 스토리지 장치는 최대한의 자원을 활용하여 최대한의 성능을 발휘하도록 동작하여야 한다.
기존에는 새로운 독출 요청이 수신되는 경우에, 프로그램 동작의 수행 여부와 관계 없이 독출 요청에 대응하는 독출 커맨드가 비휘발성 메모리로 전달되었다. 이에 따라, 프로그램 동작의 수행 중에 독출 커맨드가 전달되는 경우에, 프로그램 동작의 수행을 일시적으로 정지하기 위한 프로그램 서스펜션 동작이 수행되었다. 이 때, 독출 요청들이 무분별하게 전달되는 경우에는 프로그램 서스펜션 동작이 빈번하게 유발되며, 빈번한 프로그램 서스펜션 동작의 발생은 스토리지 장치의 기입/독출 성능을 열화시킬 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서는, 상기 스토리지 장치의 외부로부터 수신되는 상기 제1 정보 및 상기 스토리지 장치의 내부에서 생성되는 상기 제2 정보에 기초하여, 상기 프로그램 동작을 일시적으로 정지하기 위한 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 적응적으로 및/또는 동적으로 조절할 수 있다. 예를 들어, 스토리지 장치의 처리량 조건을 보장하기 위해서는 독출 스로틀링을 통해 프로그램 서스펜션 동작의 발생을 최소화하여야 하지만, 프로그램 서스펜션 동작을 무조건적으로 제한하게 되면 독출 요청의 실행이 지연되어 레이턴시 조건을 만족하지 못하고 독출 레이턴시(또는 테일 레이턴시)가 증가할 수 있다. 따라서, 독출 레이턴시가 저해되지 않고 성능 저하를 유발하지 않을 정도로 적절한 숫자의 프로그램 서스펜션 동작만이 발생하도록, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 적응적으로 및/또는 동적으로 조절할 수 있다. 따라서, 스토리지 장치의 동작 성능 및 효율이 향상될 수 있다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 2를 참조하면, 스토리지 시스템(100)은 호스트 장치(200) 및 스토리지 장치(300)를 포함한다.
호스트 장치(200)는 스토리지 시스템(100)의 전반적인 동작을 제어한다. 호스트 장치(200)는 호스트 프로세서(210) 및 호스트 메모리(220)를 포함할 수 있다.
호스트 프로세서(210)는 호스트 장치(200)의 동작을 제어할 수 있다. 예를 들어, 호스트 프로세서(210)는 운영 체제(Operating System; OS)를 실행할 수 있다. 예를 들어, 상기 운영 체제는 파일 관리를 위한 파일 시스템(file system), 및 스토리지 장치(300)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버(device driver)를 포함할 수 있다. 호스트 메모리(220)는 호스트 프로세서(210)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다.
스토리지 장치(300)는 호스트 장치(200)에 의해 액세스된다. 스토리지 장치(300)는 스토리지 컨트롤러(310), 복수의 비휘발성 메모리들(320a, 320b, 320c) 및 버퍼 메모리(330)를 포함할 수 있다.
스토리지 컨트롤러(310)는 스토리지 장치(200)의 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트 장치(200)로부터 수신되는 요청들(예를 들어, 기입 요청들(W_REQ) 및 독출 요청들(R_REQ))에 기초하여 스토리지 장치(300)의 동작(예를 들어, 기입 동작 및 독출 동작)을 제어하고, 호스트 장치(200)와 스토리지 장치(300) 사이의 데이터의 교환(예를 들어, 기입 데이터의 수신/저장 및 독출 데이터의 전송)을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 복수의 비휘발성 메모리들(320a~320c)의 동작(예를 들어, 프로그램 동작 및 독출 동작)을 제어하기 위한 커맨드들(예를 들어, 프로그램 커맨드들(P_CMD), 독출 커맨드들(R_CMD) 및 서스펜션 커맨드들(S_CMD))을 생성하여 복수의 비휘발성 메모리들(320a~320c)에 전송하고, 복수의 비휘발성 메모리들(320a~320c)과의 데이터의 교환(예를 들어, 기입 데이터의 전송/프로그램 및 독출 데이터의 수신)을 제어할 수 있다.
복수의 비휘발성 메모리들(320a~320c)은 스토리지 컨트롤러(310)에 의해 제어되고, 메타 데이터들 및 그 밖의 사용자 데이터들과 같은 복수의 데이터들을 저장할 수 있다.
하나의 비휘발성 메모리는 하나의 반도체 다이(die)에 형성되며, 하나의 비휘발성 메모리 칩(chip)을 형성할 수 있다. 또한, 스토리지 장치(300)는 복수의 메모리 패키지들을 포함하고, 상기 복수의 메모리 패키지들은 각각 복수의 비휘발성 메모리들(320a~320c) 중 적어도 하나를 포함할 수 있다. 다시 말하면, 복수의 비휘발성 메모리들(320a~320c)은 각각 상기 복수의 메모리 패키지들 중 하나에 포함될 수 있다.
일 실시예에서, 복수의 비휘발성 메모리들(320a~320c) 각각은 NAND 플래시 메모리(Flash Memory)를 포함할 수 있다. 다른 실시예에서, 복수의 비휘발성 메모리들(320a~320c) 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 포함할 수 있다.
버퍼 메모리(330)는 스토리지 컨트롤러(310)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있고, 복수의 비휘발성 메모리들(320a~320c)에 저장되어 있거나 저장하고자 하는 데이터를 임시로 저장할 수 있다. 예를 들어, 버퍼 메모리(330)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등과 같은 휘발성 메모리를 포함할 수 있다.
스토리지 컨트롤러(310)는 도 1을 참조하여 상술한 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 수행하기 위해 서스펜션 관리자(312)를 포함할 수 있다. 서스펜션 관리자(312)는 스토리지 장치(300) 외부의 호스트 장치(200)로부터 제1 정보(E_INF)를 수신하고, 스토리지 장치(300) 내부에서 생성되는 제2 정보(I_INF)를 수신할 수 있다. 서스펜션 관리자(312)는 제1 정보(E_INF) 및 제2 정보(I_INF)에 기초하여 서스펜션 커맨드들(S_CMD)을 생성하며, 서스펜션 커맨드들(S_CMD)의 전송 개수 및 전송 타이밍을 적응적으로 및/또는 동적으로 조절할 수 있다. 서스펜션 관리자(312)의 예시적인 구성 및 동작에 대해서는 도 3, 5, 6 등을 참조하여 후술하도록 한다.
일 실시예에서, 스토리지 장치(300)는 SSD(Solid State Drive), UFS(Universal Flash Storage), MMC(Multi Media Card) 또는 eMMC(embedded MMC)일 수 있다. 다른 실시예에서, 스토리지 장치(300)는 SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(memory stick), 칩 카드(chip card), USB(Universal Serial Bus) 카드, 스마트 카드(smart card), CF(Compact Flash) 카드 또는 이와 유사한 형태로 구현될 수 있다.
일 실시예에서, 스토리지 장치(300)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCIe(Peripheral Component Interconnect express), NVMe(Non-Volatile Memory express), UFS, eMMC, CXL(Compute eXpress Link) 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트 장치(200)와 연결되고, 호스트 장치(200)에 의해 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
일 실시예에서, 스토리지 시스템(100)은 PC(Personal Computer), 서버 컴퓨터(server computer), 데이터 센터(data center), 워크스테이션(workstation) 등의 임의의 컴퓨팅 시스템일 수 있다. 다른 실시예에서, 스토리지 시스템(100)은 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone), 오토모티브(automotive) 등의 임의의 모바일 시스템일 수 있다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 3을 참조하면, 스토리지 컨트롤러(400)는 프로세서(410), 메모리(420), 서스펜션 관리자(430), 호스트 인터페이스(440), ECC(Error Correction Code) 엔진(450), 메모리 인터페이스(460) 및 AES(Advanced Encryption Standard) 엔진(470)을 포함할 수 있다.
프로세서(410)는 호스트 장치(200)로부터 호스트 인터페이스(440)를 통하여 수신된 요청에 응답하여 스토리지 컨트롤러(400)의 동작을 제어할 수 있다. 예를 들어, 프로세서(410)는 스토리지 장치(300)의 동작을 제어하며, 스토리지 장치(300)를 구동하기 위한 펌웨어(Firmware)를 채용하여 각각의 구성들을 제어할 수 있다.
메모리(420)는 프로세서(410)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있다. 예를 들어, 메모리(420)는 SRAM, DRAM 등과 같은 휘발성 메모리로 구현될 수 있다.
서스펜션 관리자(430)는 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 수행하기 위한 구성이며, 도 2의 서스펜션 관리자(312)와 실질적으로 동일할 수 있다. 서스펜션 관리자(430)는 모니터(432), 핸들러(434) 및 스케줄러(436)를 포함할 수 있다. 모니터(432)는 내부적으로 제2 정보(I_INF)를 생성하기 위한 모니터링 동작을 수행할 수 있다. 핸들러(434)는 서스펜션 커맨드들(S_CMD)의 전송 개수 및 전송 타이밍을 조절하는 프로그램 서스펜션 제어 동작을 수행할 수 있다. 스케줄러(436)는 핸들러(434)의 제어에 따라 서스펜션 커맨드들(S_CMD)을 생성할 수 있다.
에러 정정을 위한 ECC 엔진(450)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(440)는 호스트 장치(200)와 스토리지 장치(300) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(440)는 호스트 장치(200)의 버스 포맷(bus format)에 대응하여 스토리지 장치(300)와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 호스트 장치(200)의 버스 포맷은 SCSI 또는 SAS일 수 있다. 다른 실시예에서, 호스트 장치(200)의 버스 포맷은 USB, PCIe(peripheral component interconnect express), ATA, PATA, SATA, NVMe, CXL(compute express link) 등일 수 있다.
메모리 인터페이스(460)는 비휘발성 메모리(320a~320c)와 데이터를 교환할 수 있다. 메모리 인터페이스(460)는 데이터를 비휘발성 메모리(320a~320c)에 전송하고, 비휘발성 메모리(320a~320c)로부터 독출된 데이터를 수신할 수 있다. 예를 들어, 메모리 인터페이스(460)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
AES 엔진(470)은 스토리지 컨트롤러(400)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다. 상세하게 도시하지는 않았으나, AES 엔진(470)은 암호화 모듈 및 복호화 모듈을 포함할 수 있다. 실시예에 따라서, 상기 암호화 모듈 및 상기 복호화 모듈은 서로 별개의 모듈로 구현될 수도 있고 하나의 모듈로 구현될 수도 있다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 4를 참조하면, 비휘발성 메모리(500)는 메모리 셀 어레이(510), 어드레스 디코더(520), 페이지 버퍼 회로(530), 데이터 입출력 회로(540), 전압 생성기(550) 및 제어 회로(560)를 포함한다.
메모리 셀 어레이(510)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 어드레스 디코더(520)와 연결된다. 또한, 메모리 셀 어레이(510)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(530)와 연결된다. 메모리 셀 어레이(510)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(510)는 각각 메모리 셀들을 포함하는 복수의 메모리 블록들(BLK1, BLK2, ..., BLKz)로 구분될 수 있다. 또한, 메모리 블록들(BLK1~BLKz) 각각은 복수의 페이지들로 구분될 수 있다.
실시예에 따라서, 메모리 셀 어레이(510)는 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 형성될 수 있다. 수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
제어 회로(560)는 외부(예를 들어, 스토리지 컨트롤러(310))로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 비휘발성 메모리(500)의 소거 루프(예를 들어, 소거 동작과 소거 검증 동작), 프로그램 루프(예를 들어, 프로그램 동작과 프로그램 검증 동작) 및 독출 동작을 제어한다.
예를 들어, 제어 회로(560)는 커맨드(CMD)에 기초하여 전압 생성기(550)를 제어하기 위한 제어 신호들(CON) 및 페이지 버퍼 회로(530)를 제어하기 위한 제어 신호들(PBC)을 발생하고, 어드레스(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 발생할 수 있다. 제어 회로(560)는 로우 어드레스(R_ADDR)를 어드레스 디코더(520)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(540)에 제공할 수 있다.
어드레스 디코더(520)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(510)와 연결된다. 예를 들어, 소거/프로그램/독출 동작 시에, 어드레스 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 워드 라인들(WL) 중 적어도 하나, 복수의 스트링 선택 라인들(SSL) 중 적어도 하나 및 복수의 접지 선택 라인들(GSL) 중 적어도 하나를 선택 워드 라인, 선택 스트링 선택 라인 및 선택 접지 선택 라인으로 각각 결정할 수 있다.
전압 생성기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 비휘발성 메모리(500)의 동작에 필요한 전압들(VS)을 발생할 수 있다. 전압들(VS)은 어드레스 디코더(520)를 통해 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)에 인가될 수 있다. 또한, 전압 생성기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 소거 동작에 필요한 소거 전압(VERS)을 발생할 수 있다.
페이지 버퍼 회로(530)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(510)와 연결될 수 있다. 페이지 버퍼 회로(530)는 복수의 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼 회로(530)는 메모리 셀 어레이(510)에 프로그램 될 기입 데이터(DAT)를 저장하거나 혹은 메모리 셀 어레이(510)로부터 감지된 독출 데이터(DAT)를 저장할 수 있다. 즉, 페이지 버퍼 회로(530)는 비휘발성 메모리(500)의 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다.
데이터 입출력 회로(540)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(530)와 연결될 수 있다. 데이터 입출력 회로(540)는 컬럼 어드레스(C_ADDR)에 응답하여, 데이터(DAT)를 페이지 버퍼 회로(530)를 거쳐서 메모리 셀 어레이(510)에 제공하거나 메모리 셀 어레이(510)로부터 페이지 버퍼 회로(530)를 거쳐서 출력되는 데이터(DAT)를 외부에 제공할 수 있다.
도 5는 도 3의 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 5를 참조하면, 스토리지 컨트롤러(800)는 요청 버퍼(810) 및 복수의 서스펜션 관리자들(820)을 포함할 수 있다. 도시의 편의상, 프로그램 서스펜션 제어 동작과 관련이 적은 구성요소들을 생략하였다.
요청 버퍼(810)는 호스트 장치(200)로부터 복수의 기입 요청들(W_REQ) 및 복수의 독출 요청들(R_REQ)을 수신 및 저장(즉, 버퍼링 또는 큐잉)할 수 있다. 요청 버퍼(810)는 호스트 커맨드 버퍼, 요청 큐(queue), 호스트 커맨드 큐 등으로 지칭될 수 있다. 예를 들어, 요청 버퍼(810)는 링 버퍼(ring buffer)의 형태로 구현될 수 있다. 예를 들어, 요청 버퍼(810)는 서브미션(submission) 버퍼(또는 큐) 및 컴플리션(completion) 버퍼(또는 큐)를 포함할 수 있다.
요청 버퍼(810)는 복수의 기입 요청들(W_REQ), 복수의 독출 요청들(R_REQ) 및 이와 관련된 타임스탬프들(TS)을 출력할 수 있다. 예를 들어, 타임스탬프들(TS)은 복수의 기입 요청들(W_REQ) 및 복수의 독출 요청들(R_REQ)의 입력 시점, 실행 시점 등과 같은 시간 정보를 포함할 수 있다.
복수의 서스펜션 관리자들(820) 각각은 프로그램 서스펜션 제어 동작을 다이 별로(또는 칩 별로) 수행할 수 있다. 복수의 서스펜션 관리자들(820) 각각은 다이(또는 다이-레벨) 서스펜션 관리자로 지칭될 수 있다.
예를 들어, 복수의 서스펜션 관리자들(820)은 제1, 제2 및 제3 비휘발성 메모리들(321, 322, 323)에 대한 프로그램 서스펜션 제어 동작을 수행하는 제1, 제2 및 제3 서스펜션 관리자들(821, 822, 832)을 포함할 수 있다. 제1 서스펜션 관리자(821)는 제1 프로그램 커맨드들(P_CMD1), 제1 독출 커맨드들(R_CMD1) 및 제1 서스펜션 커맨드들(S_CMD1)을 제1 비휘발성 메모리(321)로 전송하고, 제2 서스펜션 관리자(822)는 제2 프로그램 커맨드들(P_CMD2), 제2 독출 커맨드들(R_CMD2) 및 제2 서스펜션 커맨드들(S_CMD2)을 제2 비휘발성 메모리(322)로 전송하며, 제3 서스펜션 관리자(823)는 제3 프로그램 커맨드들(P_CMD3), 제3 독출 커맨드들(R_CMD3) 및 제3 서스펜션 커맨드들(S_CMD3)을 제3 비휘발성 메모리(323)로 전송할 수 있다.
복수의 서스펜션 관리자들(820)은 외부의 호스트 장치(200)로부터 제1 정보(E_INF)를 수신하고, 복수의 기입 요청들(W_REQ), 복수의 독출 요청들(R_REQ) 및 타임스탬프들(TS)에 기초하여 제2 정보(I_INF)를 내부적으로 생성하며, 제1 정보(E_INF) 및 제2 정보(I_INF)에 기초하여 프로그램 서스펜션 제어 동작을 수행할 수 있다.
예를 들어, 제1 정보(E_INF)는 처리량 조건(TP_INF), 레이턴시 조건(LT_INF) 및 우선 순위 정보(PR_INF) 중 적어도 하나를 포함할 수 있다. 예를 들어, 처리량 조건(TP_INF)은 기입/독출 동작의 성능에 대한 정보(예를 들어, 대역폭(bandwidth), 점유 시간 등), 성능 변화(variation)의 범위에 대한 정보 등을 포함할 수 있다. 예를 들어, 레이턴시 조건(LT_INF)은 독출 레이턴시(예를 들어, 독출 요청의 입력/실행부터 독출 데이터의 출력까지 소요되는 시간)에 대한 정보 등을 포함할 수 있다. 예를 들어, 우선 순위 정보(PR_INF)는 처리량 조건(TP_INF) 및 레이턴시 조건(LT_INF)을 동시에 만족할 수 없는 상황에서 어떤 조건을 선택할지에 대한 정보를 포함할 수 있다. 실시예에 따라서, 우선 순위 정보(PR_INF)는 동작 초기에 미리 설정/결정되거나 동작 중에 실시간으로 변경될 수 있고, 외부에서(예를 들어, 외부로부터 수신되는 사용자 제어 신호에 기초하여) 설정 및/또는 변경될 수 있다.
도 6은 도 5의 스토리지 컨트롤러에 포함되는 제1 서스펜션 관리자의 일 예를 나타내는 블록도이다.
도 6을 참조하면, 제1 서스펜션 관리자(821)는 요청 모니터(831a), 시스템 모니터(831b), 서스펜션 핸들러(841a), 커맨드 스케줄러(851) 및 펜딩 큐(861)를 포함할 수 있다.
요청 모니터(831a) 및 시스템 모니터(831b)는 도 3의 모니터(432)에 대응하며, 모니터링 동작을 수행하여 제2 정보(I_INF)를 내부적으로 생성할 수 있다. 예를 들어, 제2 정보(I_INF)는 입력 요청 관련 정보 및 시스템 성능 요인 중 적어도 하나를 포함할 수 있다.
구체적으로, 요청 모니터(831a)는 제1 비휘발성 메모리(321)에 대한 제1 기입 요청들(W_REQ1), 제1 독출 요청들(R_REQ1) 및 이와 관련된 제1 타임스탬프들(TS1)을 모니터링하여 상기 입력 요청 관련 정보를 생성/획득할 수 있다. 예를 들어, 상기 입력 요청 관련 정보는 제1 기입 대역폭 정보(W_BW1), 제1 독출 대역폭 정보(R_BW1), 제1 기입 요청 입력 시점 정보(W_TS1) 및 제1 독출 요청 입력 시점 정보(R_TS1) 중 적어도 하나를 포함할 수 있다. 시스템 모니터(831b)는 스토리지 장치(300)의 동작을 모니터링하여 상기 시스템 성능 요인을 생성/획득할 수 있다. 예를 들어, 상기 시스템 성능 요인은 스케줄링 오버헤드 정보(SYS_PERF_FT)를 포함할 수 있다.
서스펜션 핸들러(841a)는 도 3의 핸들러(434)에 대응하며, 제1 정보(E_INF) 및 제2 정보(I_INF)를 기초로 프로그램 서스펜션 제어 동작을 수행하여 제1 서스펜션 트리거 신호(S_TRG1)를 생성할 수 있다. 서스펜션 핸들러(841a)는 서스펜션 카운트 산출기(841b) 및 서스펜션 컨트롤러(841c)를 포함할 수 있다.
서스펜션 카운트 산출기(841b)는 제1 비휘발성 메모리(321)에서 단위 시간당 발생 가능한 서스펜션 커맨드들의 개수 및 현재 발생 가능한 서스펜션 커맨드들의 개수를 산출하고, 이에 대한 제1 서스펜션 카운트 신호(S_CNT1)를 생성할 수 있다. 예를 들어, 현재 입력되는 기입/독출 대역폭, 비휘발성 메모리의 자원을 소모하는 기타 성능 요소, 처리량 요구사항을 입력 받아 가용 자원을 계산하며, 발생 가능한 프로그램 서스펜션 횟수를 계산할 수 있다. 예를 들어, 사용 가능한 자원(시간)은 전체 자원에서 현재 입력되는 /독출 대역폭을 처리하는데 쓰이는 자원, 스케줄링 오버헤드와 같이 자원을 소모하는 기타 성능 요소들을 제외하고 처리량 요구사항이 허용하는 성능 손실치를 고려하여 계산할 수 있다. 또한, 현재까지 발생한 프로그램 서스펜션 횟수와 누적 프로그램 서스펜션 발생 횟수를 기록하여, 현재 발생 가능한 프로그램 서스펜션 횟수를 계산할 수 있다.
서스펜션 컨트롤러(841c)는 제1 서스펜션 커맨드들(S_CMD1)의 전송 개수 및 전송 타이밍을 조절 또는 제한하고, 이를 위한 제1 서스펜션 트리거 신호(S_TRG1)를 생성할 수 있다. 예를 들어, 해당 비휘발성 메모리가 프로그램 중인 경우, 레이턴시 요구사항, 각 독출 요청의 입력 시간 및 발생 가능한 프로그램 서스펜션 횟수 정보를 참조하여, 프로그램 서스펜션 발생 시점을 조절할 수 있다. 예를 들어, 각 독출 명령의 입력 시간을 측정해 테일 레이턴시가 넘지 않는 시점에 프로그램 서스펜션을 발생시킬 수 있다. 예를 들어, 또는 테일 레이턴시를 고려하여 프로그램 서스펜션 발생 간격을 최대한 동일하게 유지할 수 있다.
커맨드 스케줄러(851)는 도 3의 스케줄러(436)에 대응하며, 제1 기입 요청들(W_REQ1), 제1 독출 요청들(R_REQ1) 및 제1 서스펜션 트리거 신호(S_TRG1)를 기초로 제1 프로그램 커맨드들(P_CMD1), 제1 독출 커맨드들(R_CMD1) 및 제1 서스펜션 커맨드들(S_CMD1)을 생성하여 제1 비휘발성 메모리(321)로 전송할 수 있다. 예를 들어, 독출 요청이 입력될 시, 해당 비휘발성 메모리에서 프로그램이 진행되고 있는지 참조하며, 프로그램이 진행되고 있지 않은 경우 해당 요청을 전송하고, 프로그램이 진행 중일 경우 현재 프로그램 서스펜션 발생이 가능한지 여부를 판단하며, 가능한 경우 해당 독출 요청을 펜딩되어 있는 모든 독출 요청들을 전송하고, 불가한 경우 해당 독출 요청을 펜딩 큐(861)에 저장할 수 있다. 즉, 독출 스로틀링 동작이 적용되어 제1 독출 커맨드들(R_CMD1) 중 일부가 전송되지 않은 경우에, 전송되지 않은 독출 커맨드는 펜딩 큐(861)에 임시 저장될 수 있다.
도 7은 도 1의 서스펜션 커맨드들을 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계의 일 예를 나타내는 순서도이다.
도 1 및 7을 참조하면, 단계 S400에서, 상기 제1 정보는 상기 스토리지 장치가 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 실행하기 위해 요구되는 처리량 조건을 포함할 수 있다. 이 경우, 상기 처리량 조건을 만족하도록 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절할 수 있다.
구체적으로, 상기 제1 정보 및 상기 제2 정보에 기초하여 제1 비휘발성 메모리에서 단위 시간당 발생 가능한 서스펜션 커맨드들의 제1 개수를 산출하고(단계 S411), 상기 제1 개수에 기초하여 상기 제1 비휘발성 메모리에서 현재 발생 가능한 서스펜션 커맨드들의 제2 개수를 산출하며(단계 S413), 상기 제2 개수에 기초하여 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송할 수 있다(단계 S415).
도 7은 자원 상황을 고려하여 상기 처리량 조건을 만족하도록 프로그램 서스펜션 발생 횟수를 제한하는 실시예를 나타낼 수 있다. 구체적으로, QoS 정보, 특히 성능 변화 범위 정보와 요구되는 기입/독출 대역폭을 호스트 장치로부터 입력 받고, 호스트 장치 및 내부에서 생성되는 기입/독출 요청량을 측정하고, 요구되는 처리량 조건을 만족하지 못하는 상황이 탐지되는 경우 처리량에 영향을 주는 요인들을 파악하여 손실 허용 가능한 처리량을 계산하며, 이를 통해 단위 시간당 발생 가능한 프로그램 서스펜션 횟수를 산출할 수 있다. 또한, 단위 시간당 발생 가능한 프로그램 서스펜션 횟수를 참조하여 현재 발생 가능한 서스펜션 횟수를 산출하고, 프로그램 진행 중일 경우 프로그램 서스펜션 가능 여부 등을 참조하여 새로운 독출 요청을 비휘발성 메모리에 전송할지 펜딩 큐에 저장할지를 결정할 수 있다. 본 발명에서는 처리량 요구사항에 따라 프로그램 서스펜션 최대 발생 횟수 제한하기 때문에 QoS 요구사항을 만족시킬 수 있고, 특히 Runtime 도중 변경되는 QoS 요구사항(Die Time Fairness, Bandwidth Limit, Variation Range 등)을 실시간으로 반영하여 프로그램 서스펜션 발생을 조절할 수 있다.
도 8, 9a 및 9b는 도 7의 제1 개수를 산출하는 단계의 예들을 나타내는 순서도들이다.
도 7 및 8을 참조하면, 단계 S411에서, 상기 복수의 기입 요청들의 실행 시에 발생 가능한 서스펜션 커맨드들의 제3 개수를 산출할 수 있다. 구체적으로, 기입 성능 요구사항을 수신하고(단계 S421), 허용 가능한 기입 성능 손실치를 산출하며(단계 S422), 기입 시 발생 가능한 서스펜션 개수(즉, 상기 제3 개수)를 산출할 수 있다(단계 S423).
이와 유사하게, 상기 복수의 독출 요청들의 실행 시에 발생 가능한 서스펜션 커맨드들의 제4 개수를 산출할 수 있다. 구체적으로, 독출 성능 요구사항을 수신하고(단계 S424), 허용 가능한 독출 성능 손실치를 산출하며(단계 S425), 독출 시 발생 가능한 서스펜션 개수(즉, 상기 제4 개수)를 산출할 수 있다(단계 S426).
이후에, 상기 제3 개수 및 상기 제4 개수에 기초하여 상기 제1 개수를 획득할 수 있다(단계 S427). 예를 들어, 상기 제3 개수 및 상기 제4 개수를 더하여 상기 제1 개수가 획득될 수 있다.
도 9a를 참조하면, 상기 제1 개수를 산출하는 구체적인 일 예를 나타내고 있다. 도 9a는 특정 비휘발성 메모리에 기입/독출 요청이 혼합되어 입력될 경우, 기입 요청 및 독출 요청이 미리 정해진 비율로 해당 비휘발성 메모리를 점유할 것이 요구되며, 각각의 요청이 비휘발성 메모리를 점유하는 시간이 각각 특정 오차 내에서 만족할 것이 요구될 수 있다.
도 9a의 예에서, NAND Utilization이 100% (NAND Bound)가 될 만큼의 충분한 기입/독출 요청이 입력되며, 기입/독출 요청이 약 1:1의 비율로 비휘발성 메모리를 점유하고, 각각 약 5%의 오차 범위를 가질 수 있다. 이 때, 한 번의 프로그램 시간이 약 2000us라고 가정하고(S421a: W_PERF1=2000us), 한 번의 기입 요청을 수행한다고 가정하면, 독출 요청도 비휘발성 메모리를 약 2000us 점유하여야 한다(S424a: R_PERF1=2000us). 각각 약 5%의 손실을 허용한다고 가정하면, 전체 약 4000us의 기입/독출 요청의 점유 시간에서 약 210us 정도의 서스펜션으로 인한 점유 시간 손실을 허용할 수 있다(S422a: W_LOSS_PERF1=105.3us 및 S425a: R_LOSS_PERF1=105.3us). 프로그램 서스펜션 시간을 약 50us로 가정하면, 기입/독출 시에 각각 약 2105us의 시간 내에서 약 2.105번의 프로그램 서스펜션을 허용할 수 있고(S423a: W_SUS_CNT1=2.105/2105us 및 S426a: R_SUS_CNT1=2.105/2105us), 최종적으로 두 개의 횟수를 더하면 약 4210us 시간 내에서 약 4.21번의 프로그램 서스펜션을 허용할 수 있다(S427a: MAX_SUS_CNT1=4.21/4210us).
도 9b를 참조하면, 상기 제1 개수를 산출하는 구체적인 다른 예를 나타내고 있다. 도 9b는 특정 비휘발성 메모리에 기입/독출 요청이 혼합되어 입력될 경우, 설정된 기입/독출 요청의 한계 대역폭에 근접하는 기입/독출 성능을 보장할 것이 요구되며, 또한 기입/독출 요청이 한계 대역폭을 기준으로 특정 오차 내에서 만족할 것이 요구될 수 있다.
도 9b의 예에서, 충분한 기입/독출 요청이 입력되며, 기입/독출 요청의 한계 대역폭이 각각 약 5000MBPs 및 16000MBPs이고, 각각 약 5%의 오차 범위를 가질 수 있다. 또한 각각 한계 대역폭 수치를 만족하면, NAND Utilization이 100% (NAND Bound)가 될 수 있다. 이 때, 기입/독출 요청의 한계 대역폭에 기초하여(S421b: W_PERF2=5000MBps 및 S424b: R_PERF2=16000MBps), 그리고 약 5%의 오차 범위에 기초하여, 기입/독출 요청에 대해 각각 약 250MBPs 및 800MBPs 만큼의 성능 손실을 허용할 수 있다(S422b: W_LOSS_PERF2=250MBps 및 S425b: R_LOSS_PERF2=800MBps). 기입/독출 시에 프로그램 서스펜션 대역폭을 각각 약 4.8KB 및 64KB로 가정하면, 기입/독출 시에 각각 약 1ms의 시간 내에서 약 52.08번 및 12.5번의 프로그램 서스펜션을 허용할 수 있고(S423b: W_SUS_CNT2=52.08/1ms 및 S426b: R_SUS_CNT2=12.5/1ms), 최종적으로 두 개의 횟수를 더하면 약 1ms의 시간 내에서 약 64.58번의 프로그램 서스펜션을 허용할 수 있다(S427b: MAX_SUS_CNT2=64.58/1ms).
다만 상술한 동작들은 예시적일 뿐이며, 본 발명의 실시예들이 이에 한정되지 않을 수 있다.
도 10은 도 7의 제2 개수를 산출하는 단계를 설명하기 위한 도면이다.
도 7 및 10을 참조하면, 제1, 제2 및 제3 비휘발성 메모리들(321~323) 각각에 대해 상기 제1 개수 및 상기 제2 개수가 산출될 수 있다. 예를 들어, 모든 비휘발성 메모리들(321~323)에 대해 상기 제1 개수가 동일하게 산출되더라도, 실제 동작 상황에 따라 상기 제2 개수는 다르게 산출될 수 있다. 도 10의 예에서, 제1, 제2 및 제3 비휘발성 메모리들(321~323)의 상기 제2 개수는 각각 7, 2 및 4일 수 있다(AV_SUS_CNT1: 7, AV_SUS_CNT2: 2, AV_SUS_CNT3: 4).
도 11은 도 7의 제1 서스펜션 커맨드를 제1 비휘발성 메모리로 선택적으로 전송하는 단계의 일 예를 나타내는 순서도이다. 도 12a, 12b 및 12c는 도 11의 동작을 설명하기 위한 도면들이다.
도 7 및 11을 참조하면, 단계 S415에서, 새로운 제1 독출 요청이 수신되면(단계 S431), 상기 제1 독출 요청에 대응하는 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 전송 가능한지 판단할 수 있다(단계 S432).
상기 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 전송 가능한 경우에(단계 S432: 예), 상기 제1 비휘발성 메모리에 대한 제1 프로그램 동작이 수행 중인지 판단하고(단계 S433), 상기 제1 프로그램 동작의 일시적인 정지가 가능한지 판단할 수 있다(단계 S434). 예를 들어, 상기 제2 개수에 기초하여 단계 S434가 수행될 수 있다. 상기 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 전송 불가능한 경우에(단계 S432: 아니오), 프로세스가 종료될 수 있다.
상기 제1 프로그램 동작이 미수행 중인 경우에(단계 S433: 아니오), 프로그램 서스펜션 동작 없이 상기 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 즉시 전송할 수 있다(단계 S437).
상기 제1 프로그램 동작이 수행 중이고(단계 S433: 예), 상기 제1 프로그램 동작의 일시적인 정지가 가능한 경우에(단계 S434: 예), 예를 들어 상기 제2 개수가 0이 아닌 경우에, 상기 제1 프로그램 동작을 일시적으로 정지하기 위한 상기 제1 서스펜션 커맨드 및 상기 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 전송할 수 있다(단계 S435). 예를 들어, 단계 S435의 전송 동작은 즉시 수행될 수도 있고, 독출 레이턴시를 고려하여 수행될 수도 있다. 예를 들어, 상기 제1 독출 커맨드 뿐만 아니라 펜딩 큐(861)에 저장된 모든 독출 커맨드들이 함께 전송될 수 있다.
상기 제1 프로그램 동작이 수행 중이고(단계 S433: 예), 상기 제1 프로그램 동작의 일시적인 정지가 불가능한 경우에(단계 S434: 아니오), 예를 들어 상기 제2 개수가 0인 경우에, 상기 제1 독출 커맨드를 펜딩시키고(단계 S436) 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 미전송할 수 있다.
도 12a를 참조하면, 단계 S437의 일 예를 나타낸다. 유휴(idle) 구간(IDL) 및 DMA(Direct Memory Access) 구간(DMA) 이후에, 독출 커맨드(R_CMD1a)가 전송되어 독출 동작(RD1a)이 수행되고, 이후에 프로그램 커맨드(P_CMD1a)가 전송되어 프로그램 동작(PGM1a)이 수행될 수 있다.
도 12b를 참조하면, 단계 S435의 일 예를 나타낸다. 프로그램 커맨드(P_CMD1b)가 전송되어 프로그램 동작(PGM1b)이 수행되는 도중에 독출 요청(R_REQ1b)이 생성되더라도, 서스펜션 커맨드(S_CMD1b) 및 독출 커맨드(R_CMD1b)가 즉시 전송되지 않고 프로그램 서스펜션 제어 동작에 의해 독출 요청(R_REQ1b)으로부터 일정 시간 경과한 이후에 전송되며, 프로그램 서스펜션 동작(SS) 및 독출 동작(RD1b)이 수행될 수 있다. 이후에 프로그램 커맨드(P_CMD2b)에 기초한 프로그램 동작(PGM1b)이 수행될 수 있다.
도 12c를 참조하면, 본 발명이 적용되지 않은 기존 방식을 나타낸다. 프로그램 커맨드들(P_CMD1c, P_CMD2c)에 기초한 프로그램 동작들(PGM1c, PGM1c', PGM1c", PGM2c)이 수행되는 도중에, 독출 커맨드들(R_CMD1c, R_CMD2c, R_CMD3c)이 무분별하게 전송되어 독출 동작들(RD1c, RD2c, RD3c)이 수행되며, 이에 따라 프로그램 서스펜션 동작(SS)이 빈번하게 유발될 수 있다.
도 13은 도 1의 서스펜션 커맨드들을 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계의 일 예를 나타내는 순서도이다. 도 14a 및 14b는 도 13의 동작을 설명하기 위한 도면들이다.
도 1 및 13을 참조하면, 단계 S400에서, 상기 제1 정보는 상기 스토리지 장치가 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 실행하기 위해 요구되는 레이턴시 조건을 포함할 수 있다. 이 경우, 상기 레이턴시 조건을 만족하도록 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절할 수 있다.
구체적으로, 상기 제1 정보 및 상기 제2 정보에 기초하여 제1 비휘발성 메모리에서 상기 레이턴시 조건을 불만족하는 제1 독출 커맨드를 검출하고(단계 S441), 상기 제1 독출 커맨드에 기초하여 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송할 수 있다(단계 S443). 한편, 도시하지는 않았으나, 프로그램 서스펜션 개수를 산출하는 동작이 추가 수해될 수 있다.
도 13은 각 독출 요청의 입력 시간 및 처리 소요 시간을 고려하여 상기 레이턴시 조건을 만족하도록 프로그램 서스펜션 발생 및 그 시점을 조절하는 실시예를 나타낼 수 있다. 구체적으로, QoS 정보, 특히 독출 레이턴시 조건을 호스트 장치로부터 입력 받고, 호스트 장치로부터 기입/독출 요청이 입력되는 시간을 측정하고, 각 기입/독출 요청의 입력 시간을 참조하여 독출 레이턴시 조건에 만족하지 못하는 상황을 탐지하며, 특정 비휘발성 메모리에서 프로그램 진행 중이며 Pending된 특정 독출 요청이 독출 레이턴시 조건을 만족하지 못할 경우 해당 독출 요청을 이슈할 수 있다. 본 발명에서는 독출 레이턴시 조건에 따라 독출 요청의 이슈를 조절하기 때문에 처리량과 레이턴시 측면에서 동시에 QoS를 만족시킬 수 있다.
도 14a를 참조하면, 서스펜션 커맨드들(S_CMD1d, S_CMD2d, S_CMD3d)사이의 간격을 최대한 동일하게 유지하면서 전송할 수 있다. 예를 들어, 프로그램 커맨드들(P_CMD1d, P_CMD2d, P_CMD3d, P_CMD4d), 독출 커맨드들(R_CMD1d, R_CMD2d, R_CMD3d) 및 서스펜션 커맨드들(S_CMD1d, S_CMD2d, S_CMD3d)에 기초한 프로그램 동작들(PGM1d, PGM2d, PGM3d, PGM4d), 독출 동작들(RD1d, RD2d, RD3d) 및 프로그램 서스펜션 동작(SS)이 도시된 것처럼 수행될 수 있다. 예를 들어, 서스펜션 커맨드들(S_CMD1d, S_CMD2d) 사이의 시간 간격(T_SUS)과 서스펜션 커맨드들(S_CMD2d, S_CMD3d) 사이의 시간 간격(T_SUS)이 동일할 수 있다.
도 14b를 참조하면, 각 독출 요청/커맨드에 대한 독출 레이턴시가 넘지 않는 시점에 서스펜션 커맨드(S_CMD4e)를 전송할 수 있다. 예를 들어, 프로그램 커맨드들(P_CMD1e, P_CMD2e, P_CMD3e, P_CMD4e), 독출 커맨드들(R_CMD1e, R_CMD2e, R_CMD3e) 및 서스펜션 커맨드들(S_CMD1e, S_CMD2e, S_CMD3e)에 기초한 프로그램 동작들(PGM1e, PGM2e, PGM3e, PGM4e), 독출 동작들(RD1e, RD2e, RD3e) 및 프로그램 서스펜션 동작(SS)은 도 14a를 참조하여 상술한 것과 유사하며, 다만 프로그램 동작(PGM4e)을 수행하면서 독출 레이턴시 문제가 발생할 수 있어 서스펜션 커맨드(S_CMD4e) 및 독출 커맨드(R_CMD4e)를 추가로 전송하여 프로그램 서스펜션 동작(SS) 및 독출 동작(RD4e)이 수행될 수 있다. 예를 들어, 독출 요청이 실행된 시점으로부터 미리 정해진 시간(즉, 독출 레이턴시) 이내에 대응하는 독출 커맨드(R_CMD4e)가 전송되도록 서스펜션 커맨드(S_CMD4e)를 전송하며, 이에 따라 서스펜션 커맨드들(S_CMD3e, S_CMD4e) 사이의 시간 간격(T_SUS')은 시간 간격(T_SUS)보다 짧을 수 있다.
한편, 도 7 및 13을 조합하여 본 발명의 실시예들이 구현될 수도 있다.
도 15는 도 1의 서스펜션 커맨드들을 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계의 일 예를 나타내는 순서도이다. 도 16a 및 16b는 도 15의 동작을 설명하기 위한 도면들이다.
도 1 및 15를 참조하면, 단계 S400에서, 상기 제1 정보는 처리량 조건 및 레이턴시 조건을 포함하고, 우선 순위 정보를 더 포함할 수 있다. 이 경우, 상기 처리량 조건 및 상기 레이턴시 조건 중 적어도 하나를 만족하도록 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절할 수 있다. 실시예에 따라서, 상기 우선 순위 정보는 수동적으로 미리 설정되어 있거나 외부에서(예를 들어, 외부로부터 수신되는 사용자 제어 신호에 기초하여) 적극적으로 설정 및/또는 변경될 수 있다.
구체적으로, 상기 제1 정보 및 상기 제2 정보에 기초하여 상기 처리량 조건 및 상기 레이턴시 조건 중 우선 순위가 높은 조건을 선택하고(단계 S451), 상기 처리량 조건 및 상기 레이턴시 조건 중 선택된 조건에 기초하여 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송할 수 있다(단계 S453).
도 16a를 참조하면, 상기 처리량 조건을 만족하는 범위(TRNG1)와 상기 레이턴시 조건을 만족하는 범위(LRNG1)가 공통적으로 포함하는 범위(BRNG)가 존재하는 경우에는, 상기 우선 순위 정보를 고려할 필요 없이 범위(BRNG) 내에서, 즉 개수들(T1, L1) 사이에서 서스펜션 커맨드들의 개수를 결정하고 프로그램 서스펜션 제어 동작을 수행할 수 있다. 개수(T1)는 상기 처리량 조건을 만족하는 최대 개수로서 허용 가능한 손실치 기준으로 결정되며, 개수(L1)는 상기 레이턴시 조건을 만족하는 최소 개수로서 레이턴시를 실시간 관찰하여 결정할 수 있다.
도 16b를 참조하면, 상기 처리량 조건을 만족하는 범위(TRNG1)와 상기 레이턴시 조건을 만족하는 범위(LRNG2)가 공통적으로 포함하는 범위가 존재하지 않는 경우에는, 도 15에 도시된 것처럼 상기 우선 순위 정보에 기초하여 개수들(T1, L2) 중 하나를 선택하여 프로그램 서스펜션 제어 동작을 수행할 수 있다.
도 17은 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다. 이하 도 2와 중복되는 설명은 생략한다.
도 17을 참조하면, 스토리지 시스템(100a)은 호스트 장치(200) 및 스토리지 장치(300a)를 포함한다.
스토리지 장치(300a)에 포함되는 스토리지 컨트롤러(310a)의 구성이 일부 변경되는 것을 제외하면, 도 17의 스토리지 시스템(100a)은 도 2의 스토리지 시스템(100)과 실질적으로 동일할 수 있다.
스토리지 컨트롤러(310a)는 복수의 서스펜션 관리자들(312a)을 포함할 수 있다. 복수의 서스펜션 관리자들(312a) 각각은 프로그램 서스펜션 제어 동작을 채널 별로 수행할 수 있다. 복수의 서스펜션 관리자들(312a) 각각은 채널(또는 채널-레벨) 서스펜션 관리자로 지칭될 수 있다.
구체적으로, 복수의 비휘발성 메모리들(320a~320c)은 제1 채널을 통해 스토리지 컨트롤러(310a)와(즉, 복수의 서스펜션 관리자들(312a) 중 제1 서스펜션 관리자와) 연결되는 제1 비휘발성 메모리들, 및 상기 제1 채널과 다른 제2 채널을 통해 스토리지 컨트롤러(310a)와(즉, 복수의 서스펜션 관리자들(312a) 중 제2 서스펜션 관리자와) 연결되는 제2 비휘발성 메모리들을 포함할 수 있다. 스토리지 컨트롤러(310a)는(즉, 상기 제1 및 제2 서스펜션 관리자들은) 상기 제1 비휘발성 메모리들 중 적어도 하나로 전송되는 제1 서스펜션 커맨드들의 전송 개수 및 전송 타이밍과 상기 제2 비휘발성 메모리들 중 적어도 하나로 전송되는 제2 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 독립적/개별적으로 조절할 수 있다. 비휘발성 메모리들(320a~320c) 및 채널들의 구성에 대해서는 도 18을 참조하여 후술하도록 한다.
도 18은 본 발명의 실시예들에 따른 비휘발성 메모리들 및 이를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 18을 참조하면, 메모리 시스템(600)은 메모리 장치(610) 및 메모리 컨트롤러(620)를 포함할 수 있다. 메모리 시스템(600)은 복수의 채널들(CH1, CH2, ..., CHm)을 지원할 수 있고, 메모리 장치(610)와 메모리 컨트롤러(620)는 복수의 채널들(CH1~CHm)을 통해 연결될 수 있다. 예를 들어, 메모리 시스템(600)은 도 17의 스토리지 장치(300a)에 대응할 수 있다.
메모리 장치(610)는 복수의 비휘발성 메모리들(NVM11, NVM12, ..., NVM1n, NVM21, NVM22, ..., NVM2n, NVMm1, NVMm2, ..., NVMmn)을 포함할 수 있다. 예를 들어, 비휘발성 메모리들(NVM11~NVMmn)은 도 17의 비휘발성 메모리들(320a~320c)에 대응할 수 있다. 비휘발성 메모리들(NVM11~NVMmn) 각각은 대응하는 웨이(way)(W11, W12, ..., W1n, W21, W22, ..., W2n, Wm1, Wm2, ..., Wmn)를 통해 복수의 채널들(CH1~CHm) 중 하나에 연결될 수 있다. 예를 들어, 비휘발성 메모리들(NVM11~NVMmn) 각각은 메모리 컨트롤러(620)로부터의 개별적인 명령에 따라 동작할 수 있는 임의의 메모리 단위로 구현될 수 있다. 예를 들어, 비휘발성 메모리들(NVM11~NVMmn) 각각은 다이(die) 또는 칩(chip)으로 구현될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
메모리 컨트롤러(620)는 복수의 채널들(CH1~CHm)을 통해 메모리 장치(610)와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 도 17의 스토리지 컨트롤러(310a)에 대응할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 채널들(CH1~CHm)을 통해 메모리 장치(610)로 커맨드들(CMDa, CMDb, ..., CMDm), 어드레스들(ADDRa, ADDRb, ..., ADDRm) 및 데이터(DATAa, DATAb, ..., DATAm)를 전송하거나, 메모리 장치(610)로부터 데이터(DATAa~DATAm)를 수신할 수 있다.
메모리 컨트롤러(620)는 각각의 채널을 통해 해당 채널에 연결된 비휘발성 메모리들 중 하나를 선택하고, 선택된 비휘발성 메모리와 신호들을 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 제1 채널(CH1)에 연결된 비휘발성 메모리들(NVM11~NVM1n) 중 비휘발성 메모리(NVM11)를 선택할 수 있다. 메모리 컨트롤러(620)는 선택된 비휘발성 메모리(NVM11)로/로부터 커맨드(CMDa), 어드레스(ADDRa) 및 데이터(DATAa)를 전송/수신할 수 있다.
메모리 컨트롤러(620)는 서로 다른 채널들을 통해 메모리 장치(610)와 신호들을 병렬적으로 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(620)는 제1 채널(CH1)을 통해 메모리 장치(610)로 커맨드(CMDa)를 전송하거나 데이터(DATAa)를 수신하는 동안 제2 채널(CH2)을 통해 메모리 장치(610)로 커맨드(CMDb)를 전송하거나 데이터(DATAb)를 수신할 수 있다.
메모리 컨트롤러(620)는 메모리 장치(610)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(620)는 채널들(CH1~CHm)로 신호를 전송하여 채널들(CH1~CHm)에 연결된 비휘발성 메모리들(NVM11~NVMmn) 각각을 제어할 수 있다.
비휘발성 메모리들(NVM11~NVMmn) 각각은 메모리 컨트롤러(620)의 제어에 따라 동작할 수 있다. 예를 들어, 비휘발성 메모리(NVM11)는 제1 채널(CH1)로 제공되는 커맨드(CMDa), 어드레스(ADDRa) 및 데이터(DATAa)에 따라 데이터(DATAa)를 프로그램할 수 있다.
도 18에서는 메모리 장치(610)가 m개의 채널을 통해 메모리 컨트롤러(620)와 통신하고, 메모리 장치(610)가 각각의 채널에 대응하여 n개의 비휘발성 메모리를 포함하는 것으로 도시하였으나, 채널들의 개수와 하나의 채널에 연결된 비휘발성 메모리의 개수는 다양하게 변경될 수 있다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치가 적용된 데이터 센터를 나타내는 블록도이다.
도 19를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)을 포함할 수 있다. 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(3100~3100n)의 개수 및 스토리지 서버들(3200~3200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 어플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다.
어플리케이션 서버들(3100~3100n) 및 스토리지 서버들(3200~3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fiber Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200~3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)과 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예에서, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 어플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 어플리케이션 서버(3100)에 대한 설명은 다른 어플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
어플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200~3200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200~3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
어플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 어플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버(3200~3200m)에 포함된 메모리(3220~3220m) 또는 스토리지 장치(3250~3250m)에 액세스할 수 있다. 이로써, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 어플리케이션 서버들(3100~3100n) 및/또는 스토리지 서버들(3200~3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200~3200m)의 스토리지 장치로(3250~3250m)부터 스토리지 서버들(3200~3200m)의 메모리들(3220~3220m)을 거쳐서, 또는 바로 어플리케이션 서버들(3100~3100n)의 메모리(3120~3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), CXL(Compute eXpress Link), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS, eUFS(embedded UFS), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)과 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다. 이와 유사하게, 어플리케이션 서버(3100)는 스위치(3130) 및 NIC(3140)을 더 포함할 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP, 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버(3200~3200m) 또는 어플리케이션 서버(3100~3100n)에서 프로세서는 스토리지 장치(3150~3150n, 3250~3250m) 또는 메모리(3120~3120n, 3220~3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150~3150m, 3250~3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252~3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252~3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 어플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다.
스토리지 장치(3250~3250m)는 본 발명의 실시예들에 따른 스토리지 장치이고, 본 발명의 실시예들에 따른 구동 방법에 따라 동작할 수 있다.
본 발명의 실시예들은 스토리지 장치 및 스토리지 시스템을 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 호스트 장치로부터 스토리지 장치의 동작에 대한 요구사항을 나타내는 제1 정보를 수신하는 단계;
    상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들과 상기 스토리지 장치의 동작에 기초하여 내부적으로 생성되는 제2 정보를 수신하는 단계;
    상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대응하는 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들을 복수의 비휘발성 메모리들로 전송하는 단계; 및
    상기 제1 정보 및 상기 제2 정보에 기초하여 생성되고 상기 복수의 프로그램 커맨드들에 의해 수행되는 프로그램 동작을 일시적으로 정지하기 위한 서스펜션(suspension) 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계를 포함하고,
    상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 상기 제1 정보 및 상기 제2 정보에 기초하여 조절되며,
    상기 복수의 기입 요청들 및 상기 복수의 독출 요청들 중 적어도 하나가 변화하는 경우에, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 변화하는 스토리지 장치의 구동 방법.
  2. 제 1 항에 있어서,
    상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍에 기초하여, 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 대한 제1 프로그램 동작의 수행 도중에 제1 독출 동작의 수행을 제한하는 독출 스로틀링(throttling) 동작을 선택적으로 적용하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  3. 제 2 항에 있어서,
    제1 기입 요청에 대응하는 제1 프로그램 커맨드에 기초하여 상기 제1 프로그램 동작이 수행되는 동안에, 제1 독출 요청에 대응하는 제1 독출 커맨드에 기초하여 상기 제1 독출 동작을 수행하고자 하는 경우에, 상기 제1 프로그램 동작을 일시적으로 정지하기 위한 제1 서스펜션 커맨드 및 상기 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 즉시 전송하는 대신에, 상기 제1 정보 및 상기 제2 정보에 기초하여 상기 제1 서스펜션 커맨드 및 상기 제1 독출 커맨드의 전송 타이밍을 조절하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  4. 제 1 항에 있어서, 상기 제1 정보는,
    상기 스토리지 장치가 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 실행하기 위해 요구되는 처리량(throughput) 조건을 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  5. 제 4 항에 있어서, 상기 서스펜션 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계는,
    상기 처리량 조건을 만족하도록 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  6. 제 5 항에 있어서, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절하는 단계는,
    상기 제1 정보 및 상기 제2 정보에 기초하여 제1 비휘발성 메모리에서 단위 시간당 발생 가능한 서스펜션 커맨드들의 제1 개수를 산출하는 단계;
    상기 제1 개수에 기초하여 상기 제1 비휘발성 메모리에서 현재 발생 가능한 서스펜션 커맨드들의 제2 개수를 산출하는 단계; 및
    상기 제2 개수에 기초하여 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  7. 제 6 항에 있어서, 상기 제1 개수를 산출하는 단계는,
    상기 복수의 기입 요청들의 실행 시에 발생 가능한 서스펜션 커맨드들의 제3 개수를 산출하는 단계;
    상기 복수의 독출 요청들의 실행 시에 발생 가능한 서스펜션 커맨드들의 제4 개수를 산출하는 단계;
    상기 제3 개수 및 상기 제4 개수에 기초하여 상기 제1 개수를 획득하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  8. 제 6 항에 있어서, 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송하는 단계는,
    상기 제1 비휘발성 메모리에 대한 제1 프로그램 동작이 수행 중이고 상기 제1 프로그램 동작의 일시적인 정지가 가능한 경우에, 상기 제1 프로그램 동작을 일시적으로 정지하기 위한 상기 제1 서스펜션 커맨드 및 제1 독출 요청에 대응하는 제1 독출 커맨드를 상기 제1 비휘발성 메모리로 전송하는 단계; 및
    상기 제1 비휘발성 메모리에 대한 제1 프로그램 동작이 수행 중이고 상기 제1 프로그램 동작의 일시적인 정지가 불가능한 경우에, 상기 제1 독출 커맨드를 펜딩(pending)시키고 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 미전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  9. 제 1 항에 있어서, 상기 제1 정보는,
    상기 스토리지 장치가 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 실행하기 위해 요구되는 레이턴시(latency) 조건을 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  10. 제 9 항에 있어서, 상기 서스펜션 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계는,
    상기 레이턴시 조건을 만족하도록 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  11. 제 10 항에 있어서, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절하는 단계는,
    상기 제1 정보 및 상기 제2 정보에 기초하여 제1 비휘발성 메모리에서 상기 레이턴시 조건을 불만족하는 제1 독출 커맨드를 검출하는 단계; 및
    상기 제1 독출 커맨드에 기초하여 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  12. 제 11 항에 있어서, 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송하는 단계는,
    상기 제1 서스펜션 커맨드, 상기 제1 서스펜션 커맨드 이전에 전송되는 제2 서스펜션 커맨드, 및 상기 제1 서스펜션 커맨드 이후에 전송될 제3 서스펜션 커맨드에 대해, 상기 제1 및 제2 서스펜션 커맨드들이 전송되는 시점들 사이의 제1 시간 간격과 상기 제1 및 제3 서스펜션 커맨드들이 전송되는 시점들 사이의 제2 시간 간격이 동일하도록 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  13. 제 11 항에 있어서, 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송하는 단계는,
    상기 제1 독출 커맨드에 대응하는 제1 독출 요청이 실행된 제1 시점으로부터 미리 정해진 제1 시간 이내에 상기 제1 독출 커맨드가 상기 제1 비휘발성 메모리로 전송되도록 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  14. 제 1 항에 있어서, 상기 제1 정보는,
    상기 스토리지 장치가 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 실행하기 위해 요구되는 처리량 조건 및 레이턴시 조건을 포함하고,
    상기 처리량 조건 및 상기 레이턴시 조건에 대한 우선 순위 정보를 더 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  15. 제 14 항에 있어서, 상기 서스펜션 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송하는 단계는,
    상기 처리량 조건 및 상기 레이턴시 조건 중 적어도 하나를 만족하도록 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  16. 제 15 항에 있어서, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절하는 단계는,
    상기 제1 정보 및 상기 제2 정보에 기초하여 상기 처리량 조건 및 상기 레이턴시 조건 중 우선 순위가 높은 조건을 선택하는 단계; 및
    상기 처리량 조건 및 상기 레이턴시 조건 중 선택된 조건에 기초하여 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  17. 제 1 항에 있어서, 상기 제2 정보는,
    상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 모니터링하여 획득되는 기입 대역폭 정보 및 독출 대역폭 정보를 포함하고,
    상기 스토리지 장치의 동작을 모니터링하여 획득되는 스케줄링 오버헤드 정보를 더 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  18. 스토리지 컨트롤러; 및
    상기 스토리지 컨트롤러에 의해 제어되는 복수의 비휘발성 메모리들을 포함하고,
    상기 스토리지 컨트롤러는,
    호스트 장치로부터 스토리지 장치의 동작에 대한 요구사항을 나타내는 제1 정보를 수신하고, 상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들과 상기 스토리지 장치의 동작에 기초하여 내부적으로 생성되는 제2 정보를 수신하고, 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대응하는 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들을 복수의 비휘발성 메모리들로 전송하고, 상기 제1 정보 및 상기 제2 정보에 기초하여 생성되고 상기 복수의 프로그램 커맨드들에 의해 수행되는 프로그램 동작을 일시적으로 정지하기 위한 서스펜션(suspension) 커맨드들을 상기 복수의 비휘발성 메모리들 중 적어도 하나로 전송하며,
    상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 상기 제1 정보 및 상기 제2 정보에 기초하여 조절되며,
    상기 복수의 기입 요청들 및 상기 복수의 독출 요청들 중 적어도 하나가 변화하는 경우에, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 변화하는 스토리지 장치.
  19. 제 18 항에 있어서, 상기 복수의 비휘발성 메모리들은,
    제1 채널을 통해 상기 스토리지 컨트롤러와 연결되는 제1 비휘발성 메모리들; 및
    상기 제1 채널과 다른 제2 채널을 통해 상기 스토리지 컨트롤러와 연결되는 제2 비휘발성 메모리들을 포함하고,
    상기 스토리지 컨트롤러는 상기 제1 비휘발성 메모리들 중 적어도 하나로 전송되는 제1 서스펜션 커맨드들의 전송 개수 및 전송 타이밍과 상기 제2 비휘발성 메모리들 중 적어도 하나로 전송되는 제2 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 독립적으로 조절하는 것을 특징으로 하는 스토리지 장치.
  20. 스토리지 컨트롤러 및 복수의 비휘발성 메모리들을 포함하고, 외부의 호스트 장치와 통신하는 스토리지 장치의 구동 방법으로서,
    상기 스토리지 컨트롤러가, 상기 호스트 장치로부터 수신되는 복수의 기입 요청들 및 복수의 독출 요청들을 상기 스토리지 장치가 실행하기 위해 요구되는 처리량(throughput) 조건 및 레이턴시(latency) 조건을 포함하는 제1 정보를 상기 호스트 장치로부터 수신하는 단계;
    상기 스토리지 컨트롤러가, 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들을 모니터링하여 획득되는 기입 대역폭 정보 및 독출 대역폭 정보를 포함하고 상기 스토리지 장치의 동작을 모니터링하여 획득되는 스케줄링 오버헤드 정보를 포함하는 제2 정보를 내부적으로 생성하는 단계;
    상기 스토리지 컨트롤러가, 상기 복수의 비휘발성 메모리들이 복수의 프로그램 동작들 및 복수의 독출 동작들을 수행하도록, 상기 복수의 기입 요청들 및 상기 복수의 독출 요청들에 대응하는 복수의 프로그램 커맨드들 및 복수의 독출 커맨드들을 복수의 비휘발성 메모리들로 전송하는 단계; 및
    상기 스토리지 컨트롤러가, 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리가 제1 프로그램 동작들의 수행 도중에 제1 독출 동작들의 수행을 제한하는 독출 스로틀링(throttling) 동작을 선택적으로 적용하도록, 상기 제1 정보 및 상기 제2 정보에 기초하여 생성되고 상기 제1 프로그램 동작들을 일시적으로 정지하기 위한 제1 서스펜션(suspension) 커맨드들을 상기 제1 비휘발성 메모리로 전송하는 단계를 포함하고,
    상기 제1 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 상기 제1 정보 및 상기 제2 정보에 기초하여 조절되며,
    상기 복수의 기입 요청들 및 상기 복수의 독출 요청들 중 적어도 하나가 변화하는 경우에, 상기 서스펜션 커맨드들의 전송 개수 및 전송 타이밍은 적응적으로 변화하고,
    상기 처리량 조건 및 상기 레이턴시 조건을 만족하도록 상기 제1 서스펜션 커맨드들의 전송 개수 및 전송 타이밍을 조절하며,
    상기 제1 서스펜션 커맨드들을 상기 제1 비휘발성 메모리로 전송하는 단계는,
    상기 제1 정보 및 상기 제2 정보에 기초하여 제1 비휘발성 메모리에서 단위 시간당 발생 가능한 서스펜션 커맨드들의 제1 개수를 산출하는 단계;
    상기 제1 개수에 기초하여 상기 제1 비휘발성 메모리에서 현재 발생 가능한 서스펜션 커맨드들의 제2 개수를 산출하는 단계;
    상기 제1 정보 및 상기 제2 정보에 기초하여 상기 제1 비휘발성 메모리에서 상기 레이턴시 조건을 불만족하는 제1 독출 커맨드를 검출하는 단계; 및
    상기 제2 개수 및 상기 제1 독출 커맨드에 기초하여 상기 제1 서스펜션 커맨드를 상기 제1 비휘발성 메모리로 선택적으로 전송하는 단계를 포함하는 스토리지 장치의 구동 방법.
KR1020220160064A 2022-11-25 2022-11-25 프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치 Pending KR20240077792A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220160064A KR20240077792A (ko) 2022-11-25 2022-11-25 프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
US18/336,355 US12340122B2 (en) 2022-11-25 2023-06-16 Method of operating storage device using program suspension control and storage device performing the same
CN202310851863.9A CN118092782A (zh) 2022-11-25 2023-07-12 使用编程中止控制操作存储设备的方法和对应的存储设备
EP23199246.2A EP4375839A1 (en) 2022-11-25 2023-09-22 Method of operating storage device using program suspension control and storage device performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220160064A KR20240077792A (ko) 2022-11-25 2022-11-25 프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20240077792A true KR20240077792A (ko) 2024-06-03

Family

ID=88146509

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220160064A Pending KR20240077792A (ko) 2022-11-25 2022-11-25 프로그램 서스펜션 제어를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치

Country Status (4)

Country Link
US (1) US12340122B2 (ko)
EP (1) EP4375839A1 (ko)
KR (1) KR20240077792A (ko)
CN (1) CN118092782A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240052174A (ko) * 2022-10-14 2024-04-23 에스케이하이닉스 주식회사 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법
KR20240146278A (ko) * 2023-03-29 2024-10-08 에스케이하이닉스 주식회사 호환성을 가지는 저전력 메모리 장치, 메모리 컨트롤러 및 그의 동작 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US10474389B2 (en) 2016-07-05 2019-11-12 Hewlett Packard Enterprise Development Lp Write tracking for memories
EP3825857B1 (en) * 2016-12-05 2023-05-03 Huawei Technologies Co., Ltd. Method, device, and system for controlling data read/write command in nvme over fabric architecture
JP2018156698A (ja) * 2017-03-15 2018-10-04 東芝メモリ株式会社 メモリシステム
US10423335B2 (en) 2017-06-30 2019-09-24 Seagate Technology Llc Enhancing quality of service of a storage device
KR102520540B1 (ko) 2018-10-23 2023-04-12 에스케이하이닉스 주식회사 메모리 장치 및 이의 동작 방법
KR102725221B1 (ko) 2018-11-16 2024-11-01 삼성전자주식회사 통신되는 데이터의 양을 동작의 중단 빈도에 따라 스로틀링하는 스토리지 장치
JP7195913B2 (ja) * 2018-12-19 2022-12-26 キオクシア株式会社 半導体記憶装置
KR102680273B1 (ko) 2019-02-12 2024-07-01 삼성전자주식회사 서스펜드 모드를 제어하는 방법 및 이를 포함하는 메모리 컨트롤러
US11150809B2 (en) 2019-10-01 2021-10-19 FADU Inc. Memory controller and storage device including the same
US11385831B2 (en) 2019-10-11 2022-07-12 FADU Inc. Memory controller and storage device including the same
KR102834407B1 (ko) 2020-06-16 2025-07-16 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
JP7443195B2 (ja) * 2020-08-21 2024-03-05 キオクシア株式会社 メモリシステムおよび制御方法
US11789748B2 (en) 2020-10-05 2023-10-17 SK Hynix Inc. Firmware parameters optimizing systems and methods

Also Published As

Publication number Publication date
CN118092782A (zh) 2024-05-28
US20240176543A1 (en) 2024-05-30
US12340122B2 (en) 2025-06-24
EP4375839A1 (en) 2024-05-29

Similar Documents

Publication Publication Date Title
US9747044B2 (en) Interleaving read and write requests to reduce latency and maximize throughput in a flash storage device
CN114371813B (zh) 写入流优先级的识别和分类
KR102317786B1 (ko) 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스
US11797221B2 (en) Method of operating storage device for improving QoS latency and storage device performing the same
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR102526608B1 (ko) 전자 장치 및 그것의 동작 방법
KR102751332B1 (ko) 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법
KR102472330B1 (ko) 컨텍스트 기반 프리페치를 수행하는 분산 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템
CN114546254B (zh) 写入数据的方法和非易失性存储器装置
EP4375839A1 (en) Method of operating storage device using program suspension control and storage device performing the same
KR20210072990A (ko) 가변 크기 맵핑 기반의 스토리지 장치의 데이터 관리 방법 및 이를 이용한 구동 방법
KR20190130831A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
EP4180969A1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
KR20240079650A (ko) 다이렉트 스토리지 기능을 지원하는 스토리지 장치 및 스토리지 시스템
US11513691B2 (en) Systems and methods for power and performance improvement through dynamic parallel data transfer between device and host
US20250217038A1 (en) Method of operating storage device using dynamic read scheme and storage device performing the same
US12436697B2 (en) Storage device and method of operating the same
US12118246B2 (en) Method of operating storage device for retention enhancement and storage device performing the same
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
KR20240120034A (ko) 호스트 요청의 바이패스를 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
US20240354018A1 (en) Storage system with bad blocks, and operating method thereof
KR102482115B1 (ko) 멀티-레벨 어드레스 변환을 이용한 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
US20250264996A1 (en) Storage device including nonvolatile memory device, operating method thereof, and operating method of nonvolatile memory device
KR20220094726A (ko) 메모리 컨트롤러, 비휘발성 메모리 장치 및 그 스토리지 장치
KR20260049968A (ko) 동적 전력 제어를 위한 스토리지 시스템의 구동 방법 및 이를 수행하는 스토리지 시스템

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

P11 Amendment of application requested

Free format text: ST27 STATUS EVENT CODE: A-2-2-P10-P11-NAP-X000 (AS PROVIDED BY THE NATIONAL OFFICE)

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

D12 Request for substantive examination rejected

Free format text: ST27 STATUS EVENT CODE: A-1-2-D10-D12-EXM-X000 (AS PROVIDED BY THE NATIONAL OFFICE)

D12-X000 Request for substantive examination rejected

St.27 status event code: A-1-2-D10-D12-exm-X000