KR20230164477A - 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법 - Google Patents

스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법 Download PDF

Info

Publication number
KR20230164477A
KR20230164477A KR1020220064263A KR20220064263A KR20230164477A KR 20230164477 A KR20230164477 A KR 20230164477A KR 1020220064263 A KR1020220064263 A KR 1020220064263A KR 20220064263 A KR20220064263 A KR 20220064263A KR 20230164477 A KR20230164477 A KR 20230164477A
Authority
KR
South Korea
Prior art keywords
functions
resource information
command
function
memory
Prior art date
Application number
KR1020220064263A
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 KR1020220064263A priority Critical patent/KR20230164477A/ko
Priority to US17/978,522 priority patent/US20230384936A1/en
Priority to CN202310038811.XA priority patent/CN117133340A/zh
Publication of KR20230164477A publication Critical patent/KR20230164477A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)

Abstract

본 기술은 스토리지 장치에 관한 것으로, 본 기술에 따른 스토리지 장치는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 외부 호스트에 의해 논리적으로 구분된 복수의 스토리지 장치들로 식별되는 복수의 펑션들, 상기 복수의 펑션들에 각각 대응되는 고유값 및 리소스 정보를 저장하는 리소스 매니저, 및 상기 외부 호스트로부터 상기 복수의 펑션들에 각각 대응되는 커맨드들을 수신하면, 상기 리소스 정보를 기초로 상기 복수의 펑션들 중 가장 낮은 리소스 정보를 갖는 제1 펑션에 대응되는 커맨드를 우선 처리하고, 상기 제1 펑션의 고유값을 상기 제1 펑션의 리소스 정보에 누적함으로써 상기 리소스 정보를 갱신하는 커맨드 처리부를 포함할 수 있다.

Description

스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법{STORAGE DEVICE, ELECTRONIC DEVICE INCLUDING STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법에 관한 것이다.
스토리지 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분될 수 있다.
휘발성 메모리 장치는 전원이 공급되는 동안에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치일 수 있다. 휘발성 메모리 장치에는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 포함될 수 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는 커맨드 레이턴시를 감소시키는 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 메모리 컨트롤러는, 외부 호스트에 의해 논리적으로 구분된 복수의 스토리지 장치들로 식별되는 복수의 펑션들, 상기 복수의 펑션들에 각각 대응되는 고유값 및 리소스 정보를 저장하는 리소스 매니저, 및 상기 외부 호스트로부터 상기 복수의 펑션들에 각각 대응되는 커맨드들을 수신하면, 상기 리소스 정보를 기초로 상기 복수의 펑션들 중 가장 낮은 리소스 정보를 갖는 제1 펑션에 대응되는 커맨드를 우선 처리하고, 상기 제1 펑션의 고유값을 상기 제1 펑션의 리소스 정보에 누적함으로써 상기 리소스 정보를 갱신하는 커맨드 처리부(command processor)를 포함할 수 있다.
본 발명의 실시 예에 따라 외부 호스트에 의해 논리적으로 구분된 복수의 스토리지 장치들로 식별되는 복수의 펑션들을 포함하는 메모리 컨트롤러의 동작 방법은, 상기 외부 호스트로부터 복수의 펑션들에 각각 대응되는 커맨드들을 수신하는 동작, 상기 복수의 펑션들에 각각 대응되는 리소스 정보를 기초로 상기 복수의 펑션들 중 가장 낮은 리소스 정보를 갖는 제1 펑션에 대응되는 커맨드를 우선 처리하는 동작, 및 상기 제1 펑션의 고유값을 상기 제1 펑션의 리소스 정보에 누적함으로써 상기 리소스 정보를 갱신하는 동작을 포함할 수 있다.
본 발명의 실시 예에 따른 복수의 메모리 블록들을 포함하는 메모리 장치는, 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 외부 호스트에 의해 논리적으로 구분된 복수의 스토리지 장치들로 식별되는 복수의 펑션들, 상기 복수의 펑션들에 각각 대응되는 고유값 및 리소스 정보를 저장하는 리소스 매니저, 및 상기 외부 호스트로부터 상기 복수의 펑션들에 각각 대응되는 커맨드들을 수신하면, 상기 리소스 정보를 기초로 상기 복수의 펑션들 중 가장 낮은 리소스 정보를 갖는 제1 펑션에 대응되는 커맨드를 우선 처리하고, 상기 제1 펑션의 고유값을 상기 제1 펑션의 리소스 정보에 누적함으로써 상기 리소스 정보를 갱신하는 커맨드 처리부를 포함할 수 있다.
본 기술에 따르면 커맨드 레이턴시를 감소시키는 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법을 제공한다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 설명하기 위한 도면이다.
도 2는 도 1의 메모리 컨트롤러를 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 메모리 장치를 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 펑션 컨트롤러와 메모리 장치 간의 연결 관계를 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 6은 도 5에 따른 메모리 컨트롤러의 동작의 일 실시 예를 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작 흐름도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치(100)를 설명하기 위한 도면이다.
도 1을 참조하면, 스토리지 장치(100)는 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있다. 스토리지 장치(100)는 휴대폰, 스마트폰, MP3 플레이어, 랩탑(Laptop) 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 태블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같이 외부 호스트(101)의 제어에 따라 데이터를 저장하는 장치일 수 있다. 또한, 스토리지 장치(100)는 서버, 데이터 센터 등과 같이 한 곳에 고용량의 데이터를 저장하는 외부 호스트(101)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
스토리지 장치(100)는 외부 호스트(101)와의 통신 방식인 호스트 인터페이스에 따라서 다양한 종류의 스토리지 장치들 중 어느 하나로 제조될 수 있다. 예를 들어, 스토리지 장치(100)는 SSD(solid-state drive), MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multi-media card), SD, mini-SD, micro-SD 형태의 시큐어 디지털 카드(secure digital card), 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) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
메모리 장치(120)는 데이터를 저장할 수 있다. 메모리 장치(120)는 메모리 컨트롤러(110)의 제어에 응답하여 동작한다. 메모리 장치(120)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(미도시)를 포함할 수 있다.
메모리 셀들은 각각 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 두 개의 데이터 비트들을 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC)로 구성될 수 있다.
메모리 셀 어레이(미도시)는 복수의 메모리 블록들을 포함할 수 있다. 각 메모리 블록은 복수의 메모리 셀들을 포함할 수 있다. 각 메모리 블록은 복수의 페이지들을 포함할 수 있다. 실시 예에서, 페이지는 메모리 장치(120)에 데이터를 저장하거나, 메모리 장치(120)에 저장된 데이터를 리드하는 단위일 수 있다. 메모리 블록은 데이터를 지우는 단위일 수 있다.
실시 예에서, 메모리 장치(120)는 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) 등이 될 수 있다. 본 명세서에서는 설명의 편의를 위해, 메모리 장치(120)가 낸드 플래시 메모리인 경우를 가정하여 설명한다.
메모리 장치(120)는 메모리 컨트롤러(110)로부터 커맨드 및 어드레스를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 메모리 장치(120)는 어드레스에 의해 선택된 영역에 대해 커맨드가 지시하는 동작을 수행할 수 있다. 예를 들면, 메모리 장치(120)는 쓰기 동작 (프로그램 동작), 리드 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 메모리 장치(120)는 어드레스에 의해 선택된 영역에 데이터를 프로그램 할 것이다. 리드 동작 시에, 메모리 장치(120)는 어드레스에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 메모리 장치(120)는 어드레스에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
메모리 컨트롤러(110)는 스토리지 장치(100)의 전반적인 동작을 제어할 수 있다.
스토리지 장치(100)에 전원이 인가되면, 메모리 컨트롤러(110)는 펌웨어(firmware, FW)를 실행할 수 있다. 메모리 장치(120)가 플래시 메모리 장치인 경우, 메모리 컨트롤러(110)는 외부 호스트(101)와 메모리 장치(120) 간의 통신을 제어하기 위한 플래시 변환 레이어(Flash Translation Layer, FTL)와 같은 펌웨어를 실행할 수 있다.
일 실시 예에서, 메모리 컨트롤러(110)는 외부 호스트(101)로부터 데이터와 논리 블록 어드레스(Logical Block Address, LBA)를 입력 받고, 논리 블록 어드레스를 메모리 장치(120)에 포함된 데이터가 저장될 메모리 셀들의 주소를 나타내는 물리 블록 어드레스(Physical Block Address, PBA)로 변환할 수 있다.
메모리 컨트롤러(110)는 외부 호스트(101)의 요청(request)에 따라 프로그램 동작, 리드 동작 또는 소거 동작 등을 수행하도록 메모리 장치(120)를 제어할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(110)는 프로그램 커맨드, 물리 블록 어드레스 및 데이터를 메모리 장치(120)에 제공할 수 있다. 리드 동작 시, 메모리 컨트롤러(110)는 리드 커맨드 및 물리 블록 어드레스를 메모리 장치(120)에 제공할 수 있다. 소거 동작 시, 메모리 컨트롤러(110)는 소거 커맨드 및 물리 블록 어드레스를 메모리 장치(120)에 제공할 수 있다.
일 실시 예에서, 메모리 컨트롤러(110)는 외부 호스트(101)로부터의 요청과 무관하게 자체적으로 커맨드, 어드레스 및 데이터를 생성하고, 메모리 장치(120)에 전송할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 웨어 레벨링(wear leveling), 리드 리클레임(read reclaim), 가비지 컬렉션(garbage collection)등을 수행하는데 수반되는 프로그램 동작, 리드 동작 및 소거 동작들을 수행하기 위한 커맨드, 어드레스 및 데이터를 메모리 장치(120)로 제공할 수 있다.
일 실시 예에서, 메모리 컨트롤러(110)가 적어도 둘 이상의 메모리 장치(120)들을 제어할 수 있다. 이 경우, 메모리 컨트롤러(110)는 동작 성능의 향상을 위해 메모리 장치(120)들을 인터리빙 방식에 따라 제어할 수 있다. 인터리빙 방식은 적어도 둘 이상의 메모리 장치(120)들에 대한 동작이 중첩되도록 제어하는 방식일 수 있다.
외부 호스트(101)는 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) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 스토리지 장치(100)와 통신할 수 있다.
본 명세서에서, 설명의 편의상 스토리지 장치(100)와 외부 호스트(101)는 UFS 통신 인터페이스에 따라 데이터 통신을 수행하는 것으로 설명하나 본 발명의 실시 예들은 UFS 통신 인터페이스에 따라 데이터 통신을 수행하는 것에 한정되지 않는다. 구체적으로, 스토리지 장치(100)와 외부 호스트(101)는 프로토콜 정보 유닛(Protocol Information Unit, 이하에서 PIU)으로 정의되는 커맨드를 이용하여 데이터 통신을 수행할 수 있다. PIU는 미리 정해진 규약에 따라 생성된 일종의 데이터 패킷일 수 있다.
PIU는 외부 호스트(101) 또는 스토리지 장치(100)가 어떤 동작의 수행을 요청하거나, 지시하거나 응답하는 커맨드일 수 있다. 실시 예에서, 용도와 목적에 따라 다양한 PIU가 정의될 수 있다. 예를 들어, PIU는 쿼리 요청 PIU(Query Request PIU), 커맨드 PIU(Command PIU), 응답 PIU(Response PIU), 데이터 아웃 PIU(Data Out PIU), 데이터 인 PIU(Data In PIU) 및 전달 준비 PIU(Ready To Transfer PIU) 중 어느 하나일 수 있다.
실시 예에서, 쿼리 요청 PIU(Query Request PIU)는 스토리지 장치(100)의 여러가지 파라미터를 제공하는 디바이스 디스크립터(Device Descriptor)를 포함할 수 있다. 디바이스 디스크립터(Device Descriptor)는 스토리지 장치(100)가 어드밴스드 RPMB모드를 지원하는 스토리지 장치(100)인지를 나타내는 정보를 포함할 수 있다.
가장 작은 단위의 PIU의 크기는 32바이트일 수 있고, PIU의 최대 크기는 65600바이트일 수 있다. PIU의 포맷은 그 종류에 따라 서로 다른 크기를 가질 수 있다.
메모리 컨트롤러(110)는 커맨드 처리부(111) 및 펑션 컨트롤러(112)를 포함할 수 있다. 커맨드 처리부(111)는 외부 호스트(101)와 통신을 수행함으로써 외부 호스트(101)와 펑션 컨트롤러(112)를 연결할 수 있다. 펑션 컨트롤러(112)는 외부 호스트(101)로부터 수신한 커맨드에 기반하여 메모리 장치(120)에 포함되는 적어도 하나의 메모리 블록을 제어할 수 있다. 커맨드 처리부(111) 및 펑션 컨트롤러(112)의 구성 및 동작은 도 2 및 도 5에서 후술한다.
도 2는 도 1의 메모리 컨트롤러(110)를 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 컨트롤러(110)는 커맨드 처리부(111) 및 펑션 컨트롤러(112)를 포함할 수 있다. 커맨드 처리부(111) 및 펑션 컨트롤러(112)는 전기적으로 연결될 수 있다.
커맨드 처리부(111)는 리소스 매니저(111-1), 커맨트 큐(Queue)(111-2) 및 스케쥴러(111-3)를 포함할 수 있다. 커맨드 처리부(111)가 포함하는 하드웨어 구성은 도 2에 도시된 형태로 한정되지 않는다. 일 예에서, 리소스 매니저(111-1) 및 스케쥴러(111-3)는 리소스 정보를 관리하고 커맨드의 수행 순서를 관리하는 하나의 모듈로 형성될 수 있다. 다른 예에서, 스케쥴러(111-3)는 커맨드 큐 매니저를 의미할 수 있다.
일 예에서, 리소스 정보는 펑션의 고유값에 대한 누적값을 의미할 수 있다. 예를 들어, 제1 펑션의 리소스 정보는 제1 펑션에 대응되는 커맨드가 처리될 때마다 제1 펑션의 고유값만큼 누적된 값일 수 있다.
펑션 컨트롤러(112)는 제1 펑션(112-1), 제2 펑션(112-2), 제3 펑션(112-3) 내지 제n 펑션(112-n)을 포함하는 복수의 펑션들을 포함할 수 있다. 본 개시에서 “펑션”은 “물리 펑션”, “물리적 함수”, “물리 기능”, "기능” 또는 “PF”일 수 있다. 펑션 컨트롤러(112)가 포함하는 복수의 펑션들은 외부 호스트(101)에 의하여 논리적으로 구분되는 복수의 스토리지 장치로 식별될 수 있다. 즉, 복수의 펑션들은 외부 호스트(101)를 기준으로 각각 다른 스토리지 장치일 수 있다.
리소스 매니저(111-1)는 복수의 펑션들(112-1 내지 112-n)에 각각 대응되는 고유값(eigenvalue) 및 리소스 정보(resource information)를 저장할 수 있다. 일 예에서, 복수의 펑션들(112-1 내지 112-n)은 서로 다른 고유값을 가질 수 있다. 예를 들어, 제1 펑션(112-1)의 고유값은 50, 제2 펑션(112-2)의 고유값은 100, 제3 펑션(112-3)의 고유값은 120일 수 있다.
일 예에서, 복수의 펑션들(112-1 내지 112-n)의 고유값은 복수의 펑션들(112-1 내지 112-n) 각각이 처리하는 데이터의 평균 값 및 복수의 펑션들(112-1 내지 112-n) 각각의 가중치에 기반하여 결정될 수 있다. 복수의 펑션들(112-1 내지 112-n) 각각의 가중치는 외부 호스트(예: 도 1에 도시된 외부 호스트(101))로부터 수신되는 커맨드의 종류에 기반하여 결정될 수 있다. 일 예에서, 복수의 펑션들(112-1 내지 112-n)이 외부 호스트로부터 수신하는 커맨드는 프로그램 커맨드, 리드 커맨드 또는 이레이즈 커맨드를 포함할 수 있다.
일 예에서, 메모리 컨트롤러(110)는 복수의 펑션들(112-1 내지 112-n) 각각의 고유값을 조절함으로써 복수의 펑션들(112-1 내지 112-n)의 점유 비율을 조절할 수 있다.
일 예에서, 복수의 펑션들(112-1 내지 112-n)의 리소스 정보는 스토리지 장치(예: 도 1에 도시된 스토리지 장치(100))가 부팅(booting)되는 경우에 초기화될 수 있다. 예를 들어, 제1 펑션(112-1)의 리소스 정보는 250이고 제2 펑션(112-2)의 리소스 정보는 300인 경우, 스토리지 장치가 부팅되면 제1 펑션(112-1) 및 제2 펑션(112-2)의 리소스 정보는 0으로 초기화될 수 있다.
커맨드 큐(111-2)는 커맨드 처리부(111)가 외부 호스트(예: 도 1에 도시된 외부 호스트(101))로부터 커맨드를 수신하는 경우, 커맨드 처리부(111)가 상기 커맨드를 수신한 순서에 따라 순차적으로 상기 커맨드를 저장할 수 있다. 예를 들어, 커맨드 처리부(111)가 외부 호스트로부터 순차적으로 프로그램 커맨드, 리드 커맨드, 리드 커맨드를 수신한 경우, 커맨드 큐(111-2)는 프로그램 커맨드, 리드 커맨드, 리드 커맨드를 순차적으로 저장할 수 있다.
외부 호스트(101)는 복수의 호스트들을 포함할 수 있다. 일 예에서, 복수의 호스트들로부터 수신된 복수의 커맨드들은 커맨드 처리부(111)가 수신한 순서에 따라 커맨드 큐(111-2)에 저장될 수 있다. 예를 들어, 커맨드 처리부(111)가 제1 호스트로부터 제1 커맨드를 수신한 후 제2 호스트로부터 제2 커맨드를 수신한 경우, 커맨드 큐(111-2)는 제1 커맨드 및 제2 커맨드를 순차적으로 저장할 수 있다.
스케쥴러(111-3)는 커맨드 큐(111-2)에 저장된 복수의 커맨드들의 수행 여부를 결정할 수 있다. 일 예에서, 스케쥴러(111-3)는 리소스 매니저(111-1)가 저장하는 복수의 펑션들(112-1 내지 112-n)의 고유값 및 리소스 정보에 기반하여, 커맨드 큐(111-2)에 저장된 커맨드를 어떤 펑션이 수행할지 여부를 결정할 수 있다. 예를 들어, 스케쥴러(111-3)는 복수의 펑션들(112-1 내지 112-n)의 고유값 및 리소스 정보에 기반하여, 커맨드 큐(111-2)에 첫 번째로 저장된 커맨드인 프로그램 커맨드를 제1 펑션(111-1)이 수행하도록 결정할 수 있다. 스케쥴러(111-3)가 커맨드를 수행할 펑션을 결정하는 구체적인 동작은 도 5에서 후술한다.
도 3은 본 발명의 실시 예에 따른 메모리 장치(300)를 설명하기 위한 도면이다. 도 3에 도시된 메모리 장치(300)는 설명의 편의를 위하여 다른 참조 부호로 표현하였을 뿐, 도 1에 도시된 메모리 장치(120)와 동일한 구성으로 이해할 수 있다.
도 3을 참조하면, 메모리 장치(300)는 메모리 셀 어레이(310), 전압 생성부(320), 어드레스 디코더(330), 입출력 회로(340) 및 제어 로직(350)을 포함할 수 있다.
메모리 셀 어레이(310)는 복수의 메모리 블록들(BLK1~BLKi)을 포함한다. 복수의 메모리 블록들(BLK1~BLKi)은 행 라인들(RL)을 통해 어드레스 디코더(330)에 연결된다. 복수의 메모리 블록들(BLK1~BLKi)은 열 라인들(CL)을 통해 입출력 회로(340)에 연결될 수 있다. 실시 예에서, 행 라인들(RL)은 워드라인들, 소스 선택 라인들, 드레인 선택 라인들을 포함할 수 있다. 실시 예에서, 열 라인들(CL)은 비트라인들을 포함할 수 있다.
복수의 메모리 블록들(BLK1~BLKi) 각각은 복수의 메모리 셀들을 포함한다. 실시 예에서, 복수의 메모리 셀들은 비휘발성 메모리 셀들일 수 있다. 복수의 메모리 셀들 중 동일 워드라인에 연결된 메모리 셀들은 하나의 물리 페이지로 정의될 수 있다. 즉 메모리 셀 어레이(310)는 복수의 물리 페이지들을 포함할 수 있다. 메모리 장치(300)의 메모리 셀들은 각각 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 두 개의 데이터 비트들을 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC)로 구성될 수 있다.
실시 예에서, 전압 생성부(320), 어드레스 디코더(330) 및 입출력 회로(340)는 주변 회로(peripheral circuit)로 통칭될 수 있다. 주변 회로는 제어 로직(350)의 제어에 따라 메모리 셀 어레이(310)를 구동할 수 있다. 주변 회로는 프로그램 동작, 리드 동작 및 소거 동작을 수행하도록 메모리 셀 어레이(310)를 구동할 수 있다.
전압 생성부(320)는 메모리 장치(300)에 공급되는 외부 전원 전압을 이용하여 복수의 동작 전압들을 발생하도록 구성된다. 전압 생성부(320)는 제어 로직(350)의 제어에 응답하여 동작한다.
실시 예로서, 전압 생성부(320)는 외부 전원 전압을 레귤레이팅하여 내부 전원 전압을 생성할 수 있다. 전압 생성부(320)에서 생성된 내부 전원 전압은 메모리 장치(300)의 동작 전압으로서 사용된다.
실시 예로서, 전압 생성부(320)는 외부 전원 전압 또는 내부 전원 전압을 이용하여 복수의 동작 전압들을 생성할 수 있다. 전압 생성부(320)는 메모리 장치(300)에서 요구되는 다양한 전압들을 생성하도록 구성될 수 있다. 예를 들어, 전압 생성부(320)는 복수의 소거 전압들, 복수의 프로그램 전압들, 복수의 패스 전압들, 복수의 선택 읽기 전압들, 복수의 비선택 읽기 전압들을 생성할 수 있다.
전압 생성부(320)는 다양한 전압 레벨들을 갖는 복수의 동작 전압들을 생성하기 위해서, 내부 전원 전압을 수신하는 복수의 펌핑 커패시터들을 포함하고, 제어 로직(350)의 제어에 응답하여 복수의 펌핑 커패시터들을 선택적으로 활성화하여 복수의 동작 전압들을 생성할 것이다.
생성된 복수의 동작 전압들은 어드레스 디코더(330)에 의해 메모리 셀 어레이(310)에 공급될 수 있다.
어드레스 디코더(330)는 행 라인들(RL)을 통해 메모리 셀 어레이(310)에 연결된다. 어드레스 디코더(330)는 제어 로직(350)의 제어에 응답하여 동작하도록 구성된다. 어드레스 디코더(330)는 제어 로직(350)으로부터 어드레스(ADDR)를 수신할 수 있다. 어드레스 디코더(330)는 수신된 어드레스(ADDR) 중 블록 어드레스를 디코딩할 수 있다. 어드레스 디코더(330)는 디코딩된 블록 어드레스에 따라 메모리 블록들(BLK1~BLKi) 중 적어도 하나의 메모리 블록을 선택한다. 어드레스 디코더(330)는 수신된 어드레스(ADDR) 중 로우 어드레스를 디코딩할 수 있다. 어드레스 디코더(330)는 디코딩된 로우 어드레스에 따라 선택된 메모리 블록의 워드라인들 중 적어도 하나의 워드라인을 선택할 수 있다. 실시 예에서, 어드레스 디코더(330)는 수신된 어드레스(ADDR) 중 컬럼 어드레스를 디코딩할 수 있다. 어드레스 디코더(330)는 디코딩된 컬럼 어드레스에 따라 입출력 회로(340)와 메모리 셀 어레이(310)를 연결할 수 있다.
예시적으로, 어드레스 디코더(330)는 로우 디코더, 컬럼 디코더, 어드레스 버퍼 등과 같은 구성 요소들을 포함할 수 있다.
입출력 회로(340)는 복수의 페이지 버퍼들을 포함할 수 있다. 복수의 페이지 버퍼들은 비트 라인들을 통해 메모리 셀 어레이(310)에 연결될 수 있다. 프로그램 동작 시, 복수의 페이지 버퍼들에 저장된 데이터에 따라 선택된 메모리 셀들에 데이터가 저장될 수 있다.
리드 동작 시, 선택된 메모리 셀들에 저장된 데이터가 비트라인들을 통해서 센싱되고, 센싱된 데이터는 페이지 버퍼들에 저장될 수 있다.
제어 로직(350)은 어드레스 디코더(330), 전압 생성부(320) 및 입출력 회로(340)를 제어할 수 있다. 제어 로직(350)은 외부 장치로부터 전달되는 커맨드(CMD)에 응답하여 동작할 수 있다. 제어 로직(350)은 커맨드(CMD) 및 어드레스(ADDR)에 응답하여 제어 신호들을 생성하여 주변 회로들을 제어할 수 있다.
도 4는 본 발명의 실시 예에 따른 펑션 컨트롤러(112)와 메모리 장치(120) 간의 연결 관계를 설명하기 위한 도면이다.
도 4를 참조하면, 펑션 컨트롤러(112)가 포함하는 복수의 펑션들(112-1 내지 112-n)은 메모리 장치(120)에 포함되는 복수의 메모리 블록들(120-1 내지 120-n)과 각각 서로 다른 채널을 형성할 수 있다.
복수의 펑션들(112-1 내지 112-n)은 복수의 메모리 블록들(120-1 내지 120-n)과 1:1 대응 관계를 형성할 수 있다. 즉, 복수의 펑션들(112-1 내지 112-n)은 복수의 메모리 블록들(120-1 내지 120-n)을 각각 제어할 수 있다. 예를 들어, 제1 펑션(112-1)은 제1 메모리 블록(120-1)과 제1 채널(CH1)을 형성할 수 있고, 제2 펑션(112-2)은 제2 메모리 블록(120-2)과 제2 채널(CH2)을 형성할 수 있고, 제n 펑션(112-n)은 제n 메모리 블록(120-n)과 제n 채널(CHn)을 형성할 수 있다. 채널(CH1 내지 CHn)은 펑션과 메모리 블록이 통신을 하기 위한 인터페이스 또는 프로토콜을 의미할 수 있다.
도시되지 않은 실시 예에서, 복수의 펑션들(112-1 내지 112-n)은 복수의 메모리 블록들(120-1 내지 120-n)과 n:1 대응 관계를 형성할 수 있다. 즉, 복수의 펑션들(112-1 내지 112-n) 중 적어도 둘 이상의 펑션들은 복수의 메모리 블록들(120-1 내지 120-n) 중 어느 하나의 메모리 블록을 제어할 수 있다.
도 5는 본 발명의 실시 예에 따른 메모리 컨트롤러(110)의 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 스케줄러(111-3)는 리소스 매니저(111-1)로부터 수신한 커맨드에 관한 정보 및 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))에 관한 정보(예: 펑션의 고유값 및 리소스 정보)에 기반하여 펑션 컨트롤러(112)를 제어할 수 있다.
일 예에서, 리소스 매니저(111-1)는 커맨드 큐(111-2)로부터 커맨드에 관한 정보를 수신할 수 있다. 커맨드에 관한 정보는 커맨드 큐(111-2)에 순차적으로 저장된 복수의 커맨드들 중 현재 출력될(또는 처리될) 커맨드에 관한 정보를 포함할 수 있다. 리소스 매니저(111-1)는 커맨드가 수행될 때마다 커맨드 큐(111-2)로부터 커맨드에 관한 정보를 수신할 수 있다. 다른 예에서, 리소스 매니저(111-1)는 커맨드가 수행되는지 여부와 상관없이 커맨드 큐(111-2)로부터 커맨드에 관한 정보를 수신할 수 있다.
리소스 매니저(111-1)는 펑션 컨트롤러(112)가 포함하는 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 고유값 및 리소스 정보를 저장할 수 있다. 일 예에서, 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))이 가지는 고유값은 서로 다를 수 있다. 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))이 가지는 리소스 정보는 커맨드가 수행됨에 따라 갱신될 수 있다.
스케쥴러(111-3)는 리소스 매니저(111-1)로부터 커맨드에 관한 정보, 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 고유값 및 리소스 정보를 수신할 수 있다. 스케쥴러(111-3)는 커맨드가 수행될 때마다 리소스 매니저(111-1)로부터 커맨드에 관한 정보, 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 고유값 및 리소스 정보를 수신할 수 있다. 다른 예에서, 스케쥴러(111-3)는 커맨드가 수행되는지 여부와 상관없이 리소스 매니저(111-1)로부터 커맨드에 관한 정보, 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 고유값 및 리소스 정보를 수신할 수 있다.
스케쥴러(111-3)는 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 리소스 정보를 기초로 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n)) 중 가장 낮은 리소스 정보를 갖는 펑션에 대응되는 커맨드를 우선 처리할 수 있다. 예를 들어, 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n)) 중 제3 펑션(112-3)이 가장 낮은 250의 리소스 정보를 갖는 경우, 제3 펑션(112-3)에 대응되는 커맨드(예: 프로그램 커맨드)를 우선적으로 처리할 수 있다.
일 예에서, 복수의 펑션들(112-1 내지 112-n)에 각각 대응되는 리소스 정보가 동일한 경우에는, 복수의 펑션들(112-1 내지 112-n) 중 가장 낮은 고유값을 가지는 펑션에 대응되는 커맨드를 우선적으로 처리할 수 있다. 예를 들어, 복수의 펑션들(112-1 내지 112-n)이 모두 0의 리소스 정보를 가지는 경우, 복수의 펑션들(112-1 내지 112-n) 중 고유값이 가장 작은 펑션에 대응되는 커맨드를 우선 처리할 수 있다. 이로써, 복수의 펑션들(112-1 내지 112-n)에 의해 이용되는 리소스를 최소화할 수 있다.
스케쥴러(111-3)는 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 리소스 정보를 기초로 복수의 펑션들(예: 도 4의 복수의 펑션들(112-1 내지 112-n)) 중 어느 하나의 펑션에 대응되는 커맨드를 우선적으로 처리하는 것을 결정한 경우, 커맨드 큐(111-2)가 펑션 컨트롤러(112)에 해당 커맨드를 출력하도록 커맨드 큐(111-2)를 제어할 수 있다. 일 예에서, 커맨드 큐(111-2)는 스케쥴러(111-3)의 제어에 따라 펑션 컨트롤러(112)에 커맨드를 출력할 수 있다.
리소스 매니저(111-1)는 가장 낮은 리소스 정보를 갖는 펑션에 대응되는 커맨드가 우선 처리된 경우, 가장 낮은 리소스 정보를 갖는 펑션의 고유값을 리소스 정보에 반영함으로써 리소스 정보를 갱신할 수 있다. 일 예에서, 가장 낮은 리소스 정보를 갖는 펑션이 제5 펑션(112-5)이고 제5 펑션(112-5)에 대응되는 커맨드 메모리 장치(120)로 출력된 경우, 리소스 매니저(111-1)는 제5 펑션(112-5)의 고유값을 제5 펑션(112-5)의 리소스 정보에 반영함으로써 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 리소스 정보를 갱신할 수 있다.
도 6은 도 5에 따른 메모리 컨트롤러(110)의 동작의 일 실시 예를 설명하기 위한 도면이다.
도 6을 참조하면, 복수의 펑션들(112-1 내지 112-n))에 각각 대응되는 리소스 정보에 따라 커맨드를 처리하는 러닝 펑션(Running Function)이 결정될 수 있다. 이하, 제1 펑션의 리소스 정보에 관한 테이블(610), 제2 펑션의 리소스 정보에 관한 테이블(620), 제3 펑션의 리소스 정보에 관한 테이블(630) 및 러닝 펑션에 관한 테이블(640)에 기초하여 설명된다. 설명의 편의를 위하여, 도 6에는 제1 펑션의 리소스 정보(610), 제2 펑션의 리소스 정보(620) 및 제3 펑션의 리소스 정보(630)만 도시하였으나, 복수의 펑션들(112-1 내지 112-n)에 포함되는 펑션에는 모두 동일하게 적용될 수 있다.
일 실시 예에서, 제1 펑션의 리소스 정보, 제2 펑션의 리소스 정보, 제3 리소스 정보가 모두 0인 경우, 제1 펑션 내지 제3 펑션 중 가장 낮은 고유값을 가지는 펑션에 대응되는 커맨드가 우선 처리될 수 있다. 예를 들어, 제1 펑션의 고유값(x)이 60, 제2 펑션의 고유값(y)이 100, 제3 펑션의 고유값(z)이 150인 경우, 제1 펑션의 리소스 정보, 제2 펑션의 리소스 정보, 제3 리소스 정보가 모두 0이면, 제1 펑션에 대응되는 커맨드가 우선 처리될 수 있다.
일 실시 예에서, 제1 펑션에 대응되는 커맨드가 우선 처리된 경우, 제1 펑션의 리소스 정보에 제1 펑션의 고유값(x)이 반영됨으로써, 제1 펑션의 리소스 정보는 0에서 x로 갱신될 수 있다. 제2 펑션 및 제3 펑션의 리소스 정보는 0을 유지할 수 있다.
일 실시 예에서, 제1 펑션의 리소스 정보가 x, 제2 펑션의 리소스 정보가 0, 제3 펑션의 리소스 정보가 0인 경우, 제2 펑션 및 제3 펑션 중 더 낮은 고유값을 가지는 펑션에 대응되는 커맨드가 우선 처리될 수 있다. 예를 들어, 제2 펑션의 고유값(y)이 100, 제3 펑션의 고유값(z)이 150인 경우, 제1 펑션의 리소스 정보가 x, 제2 펑션의 리소스 정보가 0, 제3 펑션의 리소스 정보가 0이면, 제2 펑션에 대응되는 커맨드가 우선 처리될 수 있다.
일 실시 예에서, 제2 펑션에 대응되는 커맨드가 우선 처리된 경우, 제2 펑션의 리소스 정보에 제2 펑션의 고유값(y)이 반영됨으로써, 제2 펑션의 리소스 정보는 0에서 y로 갱신될 수 있다. 제1 펑션 및 제3 펑션의 리소스 정보는 x와 0을 유지할 수 있다.
일 실시 예에서, 제1 펑션의 리소스 정보가 x, 제2 펑션의 리소스 정보가 y, 제3 펑션의 리소스 정보가 0인 경우, 가장 낮은 리소스 정보를 가지는 제3 펑션에 대응되는 커맨드가 우선 처리될 수 있다. 예를 들어, 제1 펑션의 리소스 정보가 60, 제2 펑션의 리소스 정보가 100, 제3 펑션의 리소스 정보가 0인 경우, 제3 펑션에 대응되는 커맨드가 우선 처리될 수 있다.
일 실시 예에서, 제3 펑션에 대응되는 커맨드가 우선 처리된 경우, 제3 펑션의 리소스 정보에 제3 펑션의 고유값(z)이 반영됨으로써, 제3 펑션의 리소스 정보는 0에서 z로 갱신될 수 있다. 제1 펑션 및 제2 펑션의 리소스 정보는 x와 y를 유지할 수 있다.
일 실시 예에서, 제1 펑션의 리소스 정보가 x, 제2 펑션의 리소스 정보가 y, 제3 펑션의 리소스 정보가 z인 경우, 제1 펑션 내지 제3 펑션 중 가장 작은 리소스 정보를 가지는 펑션에 대응되는 커맨드가 우선 처리될 수 있다. 예를 들어, 제1 펑션의 리소스 정보가 60, 제2 펑션의 리소스 정보가 100, 제3 펑션의 리소스 정보가 150인 경우, 제1 펑션 내지 제3 펑션 중 가장 작은 리소스 정보를 가지는 제1 펑션에 대응되는 커맨드가 우선 처리될 수 있다.
일 실시 예에서, 제1 펑션에 대응되는 커맨드가 우선 처리된 경우, 제1 펑션의 리소스 정보에 제1 펑션의 고유값(x)이 반영됨으로써, 제1 펑션의 리소스 정보는 x에서 2x로 갱신될 수 있다. 제2 펑션 및 제3 펑션의 리소스 정보는 y와 z를 유지할 수 있다.
일 실시 예에서, 제1 펑션의 리소스 정보가 3x, 제2 펑션의 리소스 정보가 y, 제3 펑션의 리소스 정보가 z인 경우, 제1 펑션 내지 제3 펑션 중 가장 작은 리소스 정보를 가지는 펑션에 대응되는 커맨드가 우선 처리될 수 있다. 예를 들어, 제1 펑션의 리소스 정보가 60, 제2 펑션의 리소스 정보가 100, 제3 펑션의 리소스 정보가 150인 경우, 제1 펑션 내지 제3 펑션 중 가장 작은 리소스 정보를 가지는 제3 펑션에 대응되는 커맨드가 우선 처리될 수 있다.
일 실시 예에서, 제3 펑션에 대응되는 커맨드가 우선 처리된 경우, 제3 펑션의 리소스 정보에 제3 펑션의 고유값(z)이 반영됨으로써, 제3 펑션의 리소스 정보는 z에서 2z로 갱신될 수 있다. 제1 펑션 및 제2 펑션의 리소스 정보는 3x와 y를 유지할 수 있다.
도 7은 본 발명의 실시 예에 따른 메모리 컨트롤러(110)의 동작 흐름도이다.
도 7을 참조하면, 메모리 컨트롤러(110)는 펑션들과 관련된 정보(예: 고유값 또는 리소스 정보)에 기반하여 커맨드를 처리할 수 있다. 도 7에 도시된 메모리 컨트롤러(110)의 동작은 도 2를 참조하여 설명될 수 있다.
메모리 컨트롤러(110)는, 동작 S701에서, 외부 호스트(101)로부터 복수의 펑션들(112-1 내지 112-n)에 각각 대응되는 커맨드를 수신할 수 있다. 복수의 펑션들(112-1 내지 112-n)에 각각 대응되는 커맨드에는 프로그램 커맨드, 리드 커맨드, 이레이즈 커맨드가 포함될 수 있다.
메모리 컨트롤러(110)는, 동작 S703에서, 복수의 펑션들(112-1 내지 112-n)에 각각 대응되는 리소스 정보를 기초로 복수의 펑션들(112-1 내지 112-n) 중 가장 낮은 리소스 정보를 갖는 제1 펑션(예: 112-1)에 대응되는 커맨드(예: 프로그램 커맨드)를 우선 처리할 수 있다. 일 예에서, 복수의 펑션들(112-1 내지 112-n)에 각각 대응되는 리소스 정보가 모두 동일한 경우, 복수의 펑션들(112-1 내지 112-n)에 각각 대응되는 고유값이 가장 작은 펑션에 대응되는 커맨드가 우선 처리될 수 있다.
메모리 컨트롤러(110)는, 동작 S705에서, 커맨드를 우선 처리한 제1 펑션(예: 112-1)의 고유값을 제1 펑션(예: 112-1)의 리소스 정보에 반영함으로써 리소스 정보를 갱신할 수 있다. 일 예에서, 제1 펑션의 리소스 정보는 종전 리소스 정보에 제1 펑션의 고유값이 더해진 리소스 정보일 수 있다.
100: 스토리지 장치
101: 외부 호스트
110: 메모리 컨트롤러
111: 커맨드 처리부
111-1: 리소스 매니저
111-2: 커맨드 큐
111-3: 스케쥴러
112: 펑션 컨트롤러
120: 메모리 장치

Claims (20)

  1. 외부 호스트에 의해 논리적으로 구분된 복수의 스토리지 장치들로 식별되는 복수의 펑션들;
    상기 복수의 펑션들에 각각 대응되는 고유값 및 리소스 정보를 저장하는 리소스 매니저; 및
    상기 외부 호스트로부터 상기 복수의 펑션들에 각각 대응되는 커맨드들을 수신하면, 상기 리소스 정보를 기초로 상기 복수의 펑션들 중 가장 낮은 리소스 정보를 갖는 제1 펑션에 대응되는 커맨드를 우선 처리하고, 상기 제1 펑션의 고유값을 상기 제1 펑션의 리소스 정보에 누적함으로써 상기 리소스 정보를 갱신하는 커맨드 처리부;를 포함하는 메모리 컨트롤러.
  2. 제 1항에 있어서,
    상기 복수의 펑션들은 서로 다른 고유값을 가지는, 메모리 컨트롤러.
  3. 제 1항에 있어서,
    상기 고유값은 상기 펑션들이 처리하는 데이터의 평균 값 및 상기 펑션들의 가중치에 기반하여 결정되는, 메모리 컨트롤러.
  4. 제 3항에 있어서,
    상기 펑션들의 가중치는 상기 외부 호스트로부터 수신되는 커맨드의 종류에 기반하여 결정되는, 메모리 컨트롤러.
  5. 제 1항에 있어서,
    상기 리소스 정보는 스토리지 장치가 부팅(booting)되는 경우 초기화되는, 메모리 컨트롤러.
  6. 제 1항에 있어서,
    상기 복수의 펑션들은 메모리 장치에 포함되는 복수의 메모리 블록들 중 서로 다른 메모리 블록을 제어하는, 메모리 컨트롤러.
  7. 제 1항에 있어서,
    상기 외부 호스트는 복수의 호스트들을 포함하고,
    상기 커맨드 처리부는 커맨드 큐를 더 포함하고,
    상기 복수의 호스트들로부터 수신된 복수의 커맨드들은 상기 커맨드 처리부가 수신한 순서에 따라 상기 커맨드 큐에 저장되는, 메모리 컨트롤러.
  8. 제 1항에 있어서,
    상기 커맨드는 프로그램 커맨드, 리드 커맨드 또는 이레이즈 커맨드를 포함하는, 메모리 컨트롤러.
  9. 제 1항에 있어서,
    상기 커맨드 처리부는 상기 외부 호스트와 프로토콜 정보 유닛(Protocol Information Unit, PIU) 또는 프로토콜 데이터 유닛(Protocol Data Unit, PDU)을 이용하여 통신을 수행하는, 메모리 컨트롤러.
  10. 제 1항에 있어서,
    상기 고유값을 조절함으로써 상기 펑션들의 점유 비율을 조절하는, 메모리 컨트롤러.
  11. 외부 호스트에 의해 논리적으로 구분된 복수의 스토리지 장치들로 식별되는 복수의 펑션들을 포함하는 메모리 컨트롤러의 동작 방법에 있어서,
    상기 외부 호스트로부터 복수의 펑션들에 각각 대응되는 커맨드들을 수신하는 동작;
    상기 복수의 펑션들에 각각 대응되는 리소스 정보를 기초로 상기 복수의 펑션들 중 가장 낮은 리소스 정보를 갖는 제1 펑션에 대응되는 커맨드를 우선 처리하는 동작; 및
    상기 제1 펑션의 고유값을 상기 제1 펑션의 리소스 정보에 누적함으로써 상기 리소스 정보를 갱신하는 동작을 포함하는, 메모리 컨트롤러의 동작 방법.
  12. 제 11항에 있어서,
    상기 복수의 펑션들은 서로 다른 고유값을 가지는, 메모리 컨트롤러의 동작 방법.
  13. 제 11항에 있어서,
    상기 리소스 정보는 스토리지 장치가 부팅되는 경우 초기화되는, 메모리 컨트롤러의 동작 방법.
  14. 제 11항에 있어서,
    상기 복수의 펑션들은 메모리 장치에 포함되는 복수의 메모리 블록들 중 서로 다른 메모리 블록을 제어하는, 메모리 컨트롤러의 동작 방법.
  15. 제 11항에 있어서,
    상기 커맨드는 프로그램 커맨드, 리드 커맨드 또는 이레이즈 커맨드를 포함하는, 메모리 컨트롤러의 동작 방법.
  16. 복수의 메모리 블록들을 포함하는 메모리 장치; 및
    메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는,
    외부 호스트에 의해 논리적으로 구분된 복수의 스토리지 장치들로 식별되는 복수의 펑션들;
    상기 복수의 펑션들에 각각 대응되는 고유값 및 리소스 정보를 저장하는 리소스 매니저; 및
    상기 외부 호스트로부터 상기 복수의 펑션들에 각각 대응되는 커맨드들을 수신하면, 상기 리소스 정보를 기초로 상기 복수의 펑션들 중 가장 낮은 리소스 정보를 갖는 제1 펑션에 대응되는 커맨드를 우선 처리하고, 상기 제1 펑션의 고유값을 상기 제1 펑션의 리소스 정보에 누적함으로써 상기 리소스 정보를 갱신하는 커맨드 처리부;를 포함하는 스토리지 장치.
  17. 제 16항에 있어서,
    상기 복수의 펑션들은 서로 다른 고유값을 가지는, 스토리지 장치.
  18. 제 16항에 있어서,
    상기 리소스 정보는 상기 스토리지 장치가 부팅되는 경우 초기화되는, 스토리지 장치.
  19. 제 16항에 있어서,
    상기 복수의 펑션들은 상기 메모리 장치에 포함되는 상기 복수의 메모리 블록들 중 서로 다른 메모리 블록을 제어하는, 스토리지 장치.
  20. 제 16항에 있어서,
    상기 외부 호스트는 복수의 호스트들을 포함하고,
    상기 커맨드 처리부는 커맨드 큐를 더 포함하고,
    상기 복수의 호스트들로부터 수신된 복수의 커맨드들은 상기 커맨드 처리부가 수신한 순서에 따라 상기 커맨드 큐에 저장되는, 스토리지 장치.

KR1020220064263A 2022-05-25 2022-05-25 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법 KR20230164477A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220064263A KR20230164477A (ko) 2022-05-25 2022-05-25 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법
US17/978,522 US20230384936A1 (en) 2022-05-25 2022-11-01 Storage device, electronic device including storage device, and operating method thereof
CN202310038811.XA CN117133340A (zh) 2022-05-25 2023-01-12 存储设备、包括存储设备的电子设备及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220064263A KR20230164477A (ko) 2022-05-25 2022-05-25 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20230164477A true KR20230164477A (ko) 2023-12-04

Family

ID=88853341

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220064263A KR20230164477A (ko) 2022-05-25 2022-05-25 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법

Country Status (3)

Country Link
US (1) US20230384936A1 (ko)
KR (1) KR20230164477A (ko)
CN (1) CN117133340A (ko)

Also Published As

Publication number Publication date
US20230384936A1 (en) 2023-11-30
CN117133340A (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
US11307803B2 (en) Storage device for suspending program operation and performing read operation and operating method thereof
US20200356153A1 (en) Storage device and operating method of the storage device
US11861359B2 (en) Storage device and method of operating the same
US20230139864A1 (en) Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US20230418485A1 (en) Host device, storage device, and electronic device
US20220066696A1 (en) Memory controller and method of operating the same
US11520519B2 (en) Storage device and method of operating the same
US20230096111A1 (en) Memory controller, storage device, and host device
US20230058022A1 (en) Storage device and power management method thereof
US11625178B2 (en) Storage device and method of operating the same
US20230384936A1 (en) Storage device, electronic device including storage device, and operating method thereof
US20240126682A1 (en) Storage device, electronic device including the same, and operating method thereof
US11815938B2 (en) Storage device and method of operating the same
US12007887B2 (en) Method and system for garbage collection
US20240045590A1 (en) Storage device, electronic device including the same, and operating method thereof
US20230103797A1 (en) Memory controller and method of operating the same
US11755247B2 (en) Storage device and operating method thereof
US20240020252A1 (en) Computing system and operating method thereof
US20230058630A1 (en) Computing system and operating method thereof
US20240095181A1 (en) Storage device, host device, and electronic device
US20240036731A1 (en) Memory system and method of operating the same
US20230115457A1 (en) Storage device and operating method thereof
KR20230041570A (ko) 메모리 컨트롤러, 스토리지 장치 및 호스트 장치
KR20220159268A (ko) 호스트 장치, 스토리지 장치 및 전자 장치
KR20220159269A (ko) 스토리지 장치 및 그 동작 방법