[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20210074876A - 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법 - Google Patents

호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법 Download PDF

Info

Publication number
KR20210074876A
KR20210074876A KR1020190166003A KR20190166003A KR20210074876A KR 20210074876 A KR20210074876 A KR 20210074876A KR 1020190166003 A KR1020190166003 A KR 1020190166003A KR 20190166003 A KR20190166003 A KR 20190166003A KR 20210074876 A KR20210074876 A KR 20210074876A
Authority
KR
South Korea
Prior art keywords
queue
command queue
command
virtual
storage device
Prior art date
Application number
KR1020190166003A
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 KR1020190166003A priority Critical patent/KR20210074876A/ko
Priority to US17/034,169 priority patent/US11294600B2/en
Priority to CN202011457053.8A priority patent/CN112988058A/zh
Publication of KR20210074876A publication Critical patent/KR20210074876A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

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)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

호스트와 인터페이스를 수행하는 스토리지 장치, 및 이의 동작방법이 개시된다. 네트워크 커맨드 큐 및 가상 커맨드 큐를 포함하는 커넥션, 및 복수의 메모리 칩들을 포함하는 스토리지 장치의 동작방법은, 호스트 장치로부터 상기 커넥션으로 복수의 커맨드들을 수신하는 단계, 복수의 메모리 칩들 각각에 커맨드를 제공하는 복수의 물리적 커맨드 큐들 중 커넥션에 할당되는 물리적 커맨드 큐를 선택하는 단계, 네트워크 커맨드 큐 및 가상 커맨드 큐에 순차적으로 상기 복수의 커맨드들을 저장하는 단계, 및 네트워크 커맨드 큐의 큐 깊이에 기초하여 복수의 커맨드들에 대한 응답으로서 호스트 장치로 커맨드 조절 요청을 전송하고, 가상 커맨드 큐의 큐 깊이에 기초하여 커넥션에 할당되는 물리적 커맨드 큐의 수를 조절하는 단계를 포함한다.

Description

호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법{Storage Device performing interface with host device and Operating Method of the same}
본 개시의 기술적 사상은 스토리지 장치 및 이의 동작방법에 관한 것으로서, 상세하게는 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법에 관한 것이다.
비휘발성 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 기반의 비휘발성 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다.
스토리지 장치를 포함하는 데이터 처리 시스템은 스토리지 시스템(Storage system)으로 지칭될 수 있으며, 스토리지 시스템은 호스트 장치(Host Device)와 스토리지 장치(Storage device)를 포함할 수 있다. 호스트 장치와 스토리지 장치는 다양한 인터페이스 표준을 통해 연결될 수 있으며, 인터페이스 동작 시 기록 및 독출 등의 데이터 처리의 혼잡도(congestion)를 감소함으로써 데이터 처리 성능을 향상할 필요가 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 호스트 장치와 스토리지 장치 사이의 데이터 처리의 혼잡도(congestion)를 감소함으로써 데이터 처리 성능을 향상할 수 있는 스토리지 장치 및 이의 동작방법을 제공하는 데 있다.
본 개시의 기술적 사상에 따른 네트워크 커맨드 큐 및 가상 커맨드 큐를 포함하는 커넥션, 및 복수의 메모리 칩들을 포함하는 스토리지 장치의 동작방법은, 호스트 장치로부터 상기 커넥션으로 복수의 커맨드들을 수신하는 단계, 복수의 메모리 칩들 각각에 커맨드를 제공하는 복수의 물리적 커맨드 큐들 중 커넥션에 할당되는 물리적 커맨드 큐를 선택하는 단계, 네트워크 커맨드 큐 및 가상 커맨드 큐에 순차적으로 상기 복수의 커맨드들을 저장하는 단계, 및 네트워크 커맨드 큐의 큐 깊이에 기초하여 복수의 커맨드들에 대한 응답으로서 호스트 장치로 커맨드 조절 요청을 전송하고, 가상 커맨드 큐의 큐 깊이에 기초하여 커넥션에 할당되는 물리적 커맨드 큐의 수를 조절하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 호스트 장치와 인터페이스를 수행하는 스토리지 장치에 있어서, 복수의 메모리 칩들을 포함하는 메모리, 및 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 네트워크 커맨드 큐 및 가상 커맨드 큐로 각각 구성되고 상기 호스트 장치로부터 커맨드를 수신하는 복수의 커넥션들. 및 복수의 메모리 칩들에 각각 연결되고 각각 대응하는 메모리 칩으로 커맨드를 제공하는 복수의 물리적 커맨드 큐들을 포함하고, 스토리지 컨트롤러는, 네트워크 커맨드 큐의 큐 깊이에 기초하여 호스트 장치로 커맨드 조절 요청을 전송하고, 가상 커맨드 큐의 큐 깊이에 기초하여 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수를 조절할 수 있다.
본 개시의 기술적 사상에 따른 스토리지 장치는, 복수의 메모리 칩들을 포함하는 메모리, 및 메모리의 동작을 제어하는 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 네트워크 커맨드 큐 및 가상 커맨드 큐로 각각 구성되고 상기 호스트 장치로부터 커맨드를 수신하는 복수의 커넥션들을 포함하고, 스토리지 컨트롤러는, 네트워크 커맨드 큐의 큐 깊이에 기초하여 호스트 장치로 커맨드 조절 요청을 전송하고, 가상 커맨드 큐의 큐 깊이에 기초하여 가상 커맨드 큐에 인큐된 커맨드가 제공되는 메모리 칩의 수를 조절할 수 있다.
본 발명의 기술적 사상의 스토리지 장치 및 이의 동작방법에 따르면 가상 커맨드 큐 각각의 큐 깊이(queue depth)에 기초하여 커맨드들을 처리하는 메모리 칩을 할당할 수 있다. 또한, 스토리지 장치는 네트워크 커맨드 큐의 큐 깊이에 기초하여, 호스트 장치로 커맨드 조절 요청(command throttling request)을 커맨드에 대한 응답으로서 호스트 장치로 송신할 수 있다. 따라서, 이를 통해 스토리지 장치의 데이터 처리의 혼잡도(congestion)가 감소되고 데이터 처리 성능이 향상될 수 있는 효과가 있다.
도 1은 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도이다.
도 3은 본 개시의 예시적인 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도이다.
도 5는 도 4의 S48_3 단계를 설명하기 위한 도면이다.
도 6은 도 4의 S48_4 단계를 설명하기 위한 도면이다.
도 7은 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도이다.
도 8은 도 7의 S483 단계를 설명하기 위한 도면이다.
도 9는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도이다.
도 10은 도 9의 S487 단계를 설명하기 위한 도면이다.
도 11은 본 개시의 예시적인 실시 예에 따른 스토리지 장치를 나타내는 블록도이다.
도 12는 본 개시에 따른 스토리지 장치의 동작을 설명하기 위한 블록도이다.
도 13a 및 도 13b는 도 12의 S120 단계를 설명하기 위한 도면이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적인 실시 예에 따른 스토리지 시스템을 나타내는 블록도이다.
스토리지 시스템(1000)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
도 1을 참조하면, 스토리지 시스템(1000)은 호스트 장치(20) 및 스토리지 장치(10)를 포함할 수 있다. 또한, 스토리지 장치(10)는 스토리지 컨트롤러(100) 및 메모리(200)를 포함할 수 있다. 스토리지 장치(10)가 비휘발성하게 데이터를 저장하는 경우, 메모리(200)는 비휘발성 메모리 칩들을 포함할 수 있다.
스토리지 장치(10)는 호스트 장치(20)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 예시적인 실시 예에서, 스토리지 장치(10)는 솔리드 스테이트 드라이브(Solid State Drive, SSD)일 수 있다. 예를 들어, 스토리지 장치(10)는 이더넷-결합 스토리지 드라이브(Ethernet-Attached Storage Drive(EASD))일 수 있다. 메모리(200)는 데이터를 비휘발성하게 저장하는 복수의 플래시 메모리 칩들(예를 들어, NAND 메모리 칩들)을 포함할 수 있다.
호스트 장치(20)는 다양한 인터페이스를 통하여 스토리지 장치(10)와 통신할 수 있다. 예시적인 실시 예에서, 호스트 장치(20)는 USB(Universal Serial Bus), MMC(MultiMediaCard), PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스를 통해 스토리지 장치(10)와 통신할 수 있다. 또한, SSD 등과 같은 스토리지 장치(10)에 최적화된 인터페이스로서 NVMe(Non-Volatile Memory Express)가 제안되고 있으며, 본 개시의 스토리지 시스템(1000)에 NVMeoF(non-volatile memory express over fabrics) 인터페이스가 적용될 수 있다.
예시적 실시 예에서, 스토리지 시스템(1000)은 패브릭(30)을 포함할 수 있고, 호스트 장치(20)는 패브릭(30)으로 복수의 커맨드들(CMDs)을 전송할 수 있고, 스토리지 장치(10)는 패브릭(30)을 통해 호스트 장치(20)로부터 복수의 커맨드들(CMDs)을 수신할 수 있다. 예를 들어, 호스트 장치(20)는 복수의 커맨드들(CMDs)을 포함하는 패킷을 전송할 수 있고, 스토리지 장치(10)는 복수의 커맨드들(CMDs)을 포함하는 상기 패킷을 수신할 수 있다. 예시적인 실시 예에서, 패브릭(30)은 이더넷(Ethernet)일 수 있고, 패브릭(30)은 적어도 하나의 스위치를 포함할 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 예시적인 실시 예에서, 스토리지 장치(10)는 직접 호스트 장치(20)에 연결될 수도 있다.
스토리지 장치(10)는 복수의 커맨드들(CMDs)에 따른 응답(RES)을 패브릭(30)을 통해 호스트 장치(20)로 전송할 수 있다. 예시적인 실시 예에서, 복수의 커맨드들(CMDs)이 스토리지 장치(10)의 커넥션의 대역폭(band width)을 초과하도록 스토리지 장치(10)로 수신되는 경우에는 커맨드 조절 요청(command throttling request, CTR)을 복수의 커맨드들(CMDs)에 대한 응답으로서 호스트 장치(20)로 전송할 수 있다. 예시적인 실시 예에서, 커맨드 조절 요청(CTR)은 커넥션의 대역폭에 대한 정보를 포함할 수 있다.
다만 본 개시에 따른 스토리지 장치(10)는 이에 한정되지 않으며, 스토리지 장치(10)는 하나 이상의 플래시 메모리 칩들을 포함하는 플래시 메모리 장치에 해당할 수 있다. 예시적인 실시 예에서, 스토리지 장치(10)는 스토리지 시스템(1000)에 내장되는 임베디드(embedded) 메모리일 수도 있다. 예를 들어, 스토리지 장치(10)는 eMMC 또는 임베디드 UFS 메모리 장치일 수 있다. 예시적인 실시 예에서, 스토리지 장치(10)는 스토리지 시스템(1000)에 착탈 가능한 외장(external) 메모리일 수도 있다. 예를 들어, 스토리지 장치(10)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
스토리지 장치(10)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 상기 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역을 가지는 메모리 셀들의 어레이들, 또는 상기 메모리 셀들의 동작과 관련된 회로로서 상기 기판상에 또는 상기 기판 내에 형성된 회로의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 “모놀리식”은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다.
예시적인 실시 예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 Vertical NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.
미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합될 수 있다.
예시적인 실시 예에서, 스토리지 장치(10)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(10)는 비휘발성 메모리를 포함할 수 있으며, 비휘발성 메모리는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM), 나노튜브 RAM(Nanottube RAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory) 등 다양한 종류의 메모리가 적용될 수 있다.
스토리지 컨트롤러(100)는 메모리(200)의 동작을 전반적으로 제어할 수 있고, 예를 들어, 메모리(200)와 호스트 장치(20) 간의 데이터 교환을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(100)는 호스트 장치(20)의 요청에 따라 메모리(200)를 제어하여 데이터를 쓰거나 데이터를 독출할 수 있다. 또한, 스토리지 컨트롤러(100)는 비휘발성 메모리의 특성이나 비휘발성 메모리의 효율적인 관리를 위하여 필요한 일련의 내부 동작(예를 들어, 성능 조절, 머지, 웨어 레벨링 등)을 제어할 수 있다.
스토리지 컨트롤러(100)는 복수의 네트워크 커맨드 큐들(110), 복수의 가상 커맨드 큐들(120) 및 복수의 물리적 커맨드 큐들(130)을 포함할 수 있다. 복수의 물리적 커맨드 큐들(130) 각각은 복수의 커맨드들(CMDs)을 수신하여 일시적으로 버퍼링할 수 있고, 복수의 가상 커맨드 큐들(120) 중에서 대응하는 가상 커맨드 큐로 복수의 커맨드들(CMDs)을 제공할 수 있다.
예시적인 실시 예에서, 복수의 네트워크 커맨드 큐들(110) 중 하나의 네트워크 커맨드 큐와 복수의 가상 커맨드 큐들(120) 중 하나의 가상 커맨드 큐는 서로 대응 관계일 수 있고, 대응하는 네트워크 커맨드 큐 및 가상 커맨드 큐는 하나의 커넥션을 구성할 수 있다. 즉, 복수의 네트워크 커맨드 큐들(110) 및 복수의 가상 커맨드 큐들(120)은 서로 1:1로 대응될 수 있고, 스토리지 컨트롤러(100)에는 동일한 수의 복수의 네트워크 커맨드 큐들(110) 및 복수의 가상 커맨드 큐들(120)을 포함할 수 있다.
예시적인 실시 예에서, 복수의 물리적 커맨드 큐들(130) 각각은 메모리(200)에 포함된 복수의 메모리 칩들 중 특정 메모리 칩에 전용된 커맨드 큐일 수 있다. 즉, 복수의 물리적 커맨드 큐들(130) 및 복수의 메모리 칩들은 서로 1:1로 대응될 수 있고, 복수의 물리적 커맨드 큐들(130) 중 특정 물리적 커맨드 큐에 저장된 커맨드들은 정해진 특정 메모리 칩으로 전송될 수 있다. 다만 본 개시는 도 1에 도시된 바에 한정되지 않으며, 복수의 물리적 커맨드 큐들(130)은 메모리(200)에 포함될 수도 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(100)는, 복수의 네트워크 커맨드 큐들(110) 각각에 인큐된 커맨드의 수, 즉, 큐 깊이(queue depth)가 제1 기준 값(RV1)을 초과하면, 커맨드 조절 요청(CTR)을 호스트 장치(20)로 전송할 수 있다. 따라서, 호스트 장치(20)가 스토리지 장치(10)로 복수의 커맨드들(CMDs)을 전송할 때 호스트 장치(20)는 약속된 대역폭을 유지할 수 있다. 또는 예시적인 실시 예에서, 스토리지 컨트롤러(100)는, 복수의 가상 커맨드 큐들(120) 각각의 큐 깊이가 제2 기준 값(RV2)을 초과하면, 제2 기준 값(RV2)을 초과한 큐 깊이를 갖는 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수를 증가시킬 수 있다. 하나의 가상 커맨드 큐에 연결되는 물리적 커맨드 큐의 수가 증가될수록 가상 커맨드 큐에 인큐된 커맨드들이 처리되는 속도가 증가되므로, 본 개시에 따른 스토리지 장치(10)는 데이터 처리의 혼잡도(congestion)가 감소될 수 있고 데이터 처리 성능이 향상될 수 있다.
도 2는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도이다.
도 1 및 도 2를 참조하면, S10 단계에서, 스토리지 장치(10)는 호스트 장치(20)로부터 복수의 커맨드들(CMDs)을 수신할 수 있다. 예를 들어, 스토리지 컨트롤러(100)는 복수의 커맨드들(CMDs)을 포함하는 패킷을 수신할 수 있고, 패킷으로부터 파싱된 복수의 커맨드들(CMDs)을 획득할 수 있다.
S20 단계에서, 스토리지 장치(10)는 복수의 커맨드들(CMDs)에 대응하는 커넥션에 할당되는 물리적 커맨드 큐를 선택할 수 있다. 호스트 장치(20)는 커넥션을 통해 스토리지 장치(10)와 통신할 수 있고, 예를 들어, 복수의 커맨드들(CMDs)은 복수의 커넥션들 중 하나의 커넥션에 대응될 수 있다. 상기 커넥션은 하나의 네트워크 커맨드 큐 및 하나의 가상 커맨드 큐를 포함할 수 있고, 상기 커넥션에 포함된 가상 커맨드 큐에 할당되는 물리적 커맨드 큐가 선택될 수 있다.
예를 들어, 스토리지 장치(10)는 복수의 물리적 커맨드 큐들(130) 중에서 복수의 커맨드들(CMDs)에 대응하는 가상 커맨드 큐로부터 복수의 커맨드들(CMDs)을 수신하는 물리적 커맨드를 선택할 수 있다. 스토리지 장치(10)는 복수의 물리적 커맨드 큐들(130) 중 하나의 물리적 커맨드 큐를 선택할 수도 있고, 복수의 물리적 커맨드 큐들(130) 중 2개 이상의 물리적 커맨드 큐를 선택할 수도 있다. 복수의 물리적 커맨드 큐들(130) 중 현재 다른 커맨드가 인큐되지 않은 가용 물리적 커맨드 큐들 중에서 복수의 커맨드들(CMDs)에 대응하는 물리적 커맨드 큐가 선택될 수 있다.
S30 단계에서, 스토리지 장치(10)는 복수의 커맨드들(CMDs)을 수신하는 커넥션을 구성하는 네트워크 커맨드 큐 및 가상 커맨드 큐에 복수의 커맨드들(CMD)을 순차적으로 저장할 수 있다. 예를 들어, 복수의 커맨드들(CMDs)이 스토리지 장치(10)로 수신되면, 복수의 커맨드들(CMDs)은 특정 속도로 대응하는 네트워크 커맨드 큐에 저장될 수 있고, 또한, 특정 속도로 네트워크 커맨드 큐에 저장된 복수의 커맨드들(CMDs)이 대응하는 가상 커맨드 큐로 페치(fetch)될 수 있다. 즉, 복수의 커맨드들(CMDs)이 스토리지 장치(10)의 특정 커넥션으로 수신되면, 복수의 커맨드들(CMDs)은 상기 특정 커넥션에 포함된 네트워크 커맨드 큐 및 가상 커맨드 큐를 거쳐서 가상 커맨드 큐에 할당된 물리적 커맨드 큐에 저장될 수 있다. 따라서, 복수의 커맨드들(CMDs) 중 일부를 네트워크 커맨드 큐에 저장하는 동작 및 복수의 커맨드들(CMDs) 중 다른 일부를 네트워크 커맨드 큐로부터 페치하는 동작이 병렬적으로 수행될 수 있다.
S40 단계에서, 스토리지 장치(10)는 복수의 커맨드들(CMDs)에 대응하는 네트워크 커맨드 큐의 큐 깊이에 기초하여, 커맨드 조절 요청(CTR)을 복수의 커맨드들(CMDs)에 대한 응답으로 전송할 수 있다. 또한, S40 단계에서, 복수의 커맨드들(CMDs)에 대응하는 가상 커맨드 큐의 큐 깊이에 기초하여, 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수를 조절할 수 있다.
예시적인 실시 예에서, 네트워크 커맨드 큐의 큐 깊이와 제1 기준 값(RV1)을 비교한 결과 및 가상 커맨드 큐의 큐 깊이와 제2 기준 값(RV2)을 비교한 결과에 따라, 수신된 복수의 커맨드들(CMDs)에 따른 데이터 처리 방법이 달라질 수 있다. 예를 들어, 가상 커맨드 큐의 큐 깊이가 제2 기준 값(RV2)을 초과하는 경우에는, 스토리지 장치(10)는 복수의 커맨드들(CMDs)을 할당하는 메모리 칩의 수를 증가시킬 수 있다. 즉, 스토리지 장치(10)는 가상 커맨드 큐의 큐 깊이가 제2 기준 값(RV2)을 초과하는 경우에는, 복수의 커맨드들(CMDs)이 수신된 커넥션을 구성하는 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수를 증가시킬 수 있다.
또는 예를 들어, 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값(RV1)을 초과하는 경우에는, 스토리지 장치(10)는 커맨드 조절 요청(CTR)을 복수의 커맨드들(CMDs)에 대한 응답으로서 호스트 장치(20)로 송신할 수 있다. 따라서 본 개시에 따른 스토리지 장치(10)는 네트워크 커맨드 큐의 큐 깊이 및 가상 커맨드 큐의 큐 깊이가 각각의 기준 값을 초과하지 않도록 관리함으로써, 데이터 처리의 혼잡도를 감소시킬 수 있고 데이터 처리 성능이 향상될 수 있다.
복수의 네트워크 커맨드 큐들(110) 각각의 큐 깊이에 대해 제1 기준 값(RV1)이 설정될 수 있고, 복수의 가상 커맨드 큐들(120) 각각의 큐 깊이에 대해 제2 기준 값(RV2)이 설정될 수 있다. 예시적인 실시 예에서, 복수의 네트워크 커맨드 큐들(110) 각각의 제1 기준 값(RV1)은 서로 동일할 수 있고, 복수의 가상 커맨드 큐들(120) 각각의 제2 기준 값(RV2)은 서로 동일할 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 복수의 네트워크 커맨드 큐들(110) 각각의 제1 기준 값(RV1)은 서로 상이할 수도 있고, 복수의 가상 커맨드 큐들(120) 각각의 제2 기준 값(RV2)은 서로 상이할 수 있다.
예시적인 실시 예에서, 제1 기준 값(RV1) 및 제2 기준 값(RV2)은 미리 설정된 값일 수 있다. 예시적인 실시 예에서, 제1 기준 값(RV1) 및 제2 기준 값(RV2)은 별도의 제1 기준 값(RV1) 및 제2 기준 값(RV2) 설정 단계를 통해 설정될 수 있다. 제1 기준 값(RV1) 및 제2 기준 값(RV2) 설정 단계에 대해서는 도 12에 대한 설명에서 후술하겠다.
도 3은 본 개시의 예시적인 실시 예에 따른 스토리지 장치를 나타내는 블록도이다. 도 3은 제1 커넥션(CON1)으로 복수의 커맨드들(CMDs)이 수신되는 실시 예에 대해 도시하였으나, 본 개시는 이에 한정되지 않으며, 제2 내지 제n 커넥션(CON2~CONn)에 복수의 커맨드들(CMDs)이 수신되는 경우에도 동일한 설명이 적용될 수 있다.
도 3을 참조하면, 스토리지 장치(10)는 스토리지 컨트롤러(100) 및 메모리(200)를 포함할 수 있다. 스토리지 컨트롤러(100)는 메모리(200)의 전반적인 동작을 제어할 수 있다.
스토리지 컨트롤러(100)는 제1 내지 제n 네트워크 커맨드 큐(110_1~110_n), 제1 내지 제n 가상 커맨드 큐(120_1~120_n) 및 제1 내지 제k 물리적 커맨드 큐(130_1~130_k)를 포함할 수 있다. 예를 들어, n은 3 이상의 자연수일 수 있고, k는 4이상의 자연수 일 수 있다. 예시적인 실시 예에서, n은 k와 동일한 값을 가질 수 있으나, 본 개시는 이에 한정되지 않으며, n 및 k는 서로 상이한 값을 가질 수도 있다.
스토리지 컨트롤러(100)는 제1 내지 제n 커넥션(CON1~CONn)을 포함할 수 있고, 제1 내지 제n 커넥션(CON1~CONn) 각각을 통해 호스트 장치와 통신할 수 있다. 제1 네트워크 커맨드 큐(110_1) 및 제1 가상 커맨드 큐(120_1)는 제1 커넥션(CON1)을 구성할 수 있고, 제1 네트워크 커맨드 큐(110_1) 및 제1 가상 커맨드 큐(120_1)는 호스트 장치(예를 들어, 도 1의 20)에 의해 제1 커넥션(CON1)으로 식별될 수 있다. 제2 네트워크 커맨드 큐(110_2) 및 제2 가상 커맨드 큐(120_2)는 제2 커넥션(CON2)을 구성할 수 있고, 제2 네트워크 커맨드 큐(110_2) 및 제2 가상 커맨드 큐(120_2)는 호스트 장치(20)에 의해 제2 커넥션(CON2)으로 식별될 수 있다. 제n 네트워크 커맨드 큐(110_n) 및 제n 가상 커맨드 큐(120_n)는 제n 커넥션(CONn)을 구성할 수 있고, 제n 네트워크 커맨드 큐(110_n) 및 제n 가상 커맨드 큐(120_n)는 호스트 장치(20)에 의해 제n 커넥션(CONn)으로 식별될 수 있다. 즉, 제1 내지 제n 네트워크 커맨드 큐(110_1~110_n) 중 하나의 네트워크 커맨드 큐는 제1 내지 제n 가상 커맨드 큐(120_1~120_n) 중 하나의 가상 커맨드 큐에 대응될 수 있다.
예시적인 실시 예에서, 제1 내지 제n 커넥션(CON1~CONn) 각각은 약속된 대역폭(Service Level Agreement, SLA)을 가질 수 있다. 예를 들어, 제1 커넥션(CON1)은 제1 대역폭(BW1)이 약속될 수 있고, 제2 커넥션(CON2)은 제2 대역폭(BW2)이 약속될 수 있고, 제n 커넥션은 제n 대역폭(BWn)이 약속될 수 있다. 예시적인 실시 예에서, 제1 내지 제n 대역폭(BW1~BWn)은 서로 동일한 값을 가질 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 제1 내지 제n 대역폭(BW1~BWn)은 서로 상이한 값을 가질 수도 있다.
메모리(200)는 제1 내지 제k 메모리 칩(200_1~200_k)을 포함할 수 있다. 제1 내지 제k 메모리 칩(200_1~200_k) 중 하나의 메모리 칩은 제1 내지 제k 물리적 커맨드 큐(130_1~130_k) 중 하나의 물리적 커맨드 큐에 대응될 수 있다. 예를 들어, 제1 물리적 커맨드 큐(130_1)에 저장된 커맨드들은 제1 메모리 칩(200_1)으로 전송될 수 있고, 제2 물리적 커맨드 큐(130_2)에 저장된 커맨드들은 제2 메모리 칩(200_2)으로 전송될 수 있고, 제k-1 물리적 커맨드 큐(130_k-1)에 저장된 커맨드들은 제k-1 메모리 칩(200_k-1)으로 전송될 수 있고, 제k 물리적 커맨드 큐(130_k)에 저장된 커맨드들은 제k 메모리 칩(200_k)으로 전송될 수 있다.
제1 커넥션(CON1)으로 수신된 복수의 커맨드들(CMDs)은 1차적으로 제1 네트워크 커맨드 큐(110_1)에 일시적으로 저장될 수 있다. 제1 네트워크 커맨드 큐(110_1)는 저장된 커맨드들을 제1 가상 커맨드 큐(120_1)로 전송할 수 있고, 즉, 복수의 커맨드들(CMDs)을 제1 가상 커맨드 큐(120_1)로 전송할 수 있다. 이 때, 제1 네트워크 커맨드 큐(110_1)에 복수의 커맨드들(CMDs) 중 일부가 저장되는 동작 및 복수의 커맨드들(CMDs) 중 다른 일부가 제1 네트워크 커맨드 큐(110_1)로부터 제1 가상 커맨드 큐(120_1)로 페치되는 동작은 병렬적으로 수행될 수 있다.
제1 가상 커맨드 큐(120_1)는 제1 네트워크 커맨드 큐(110_1)로부터 복수의 커맨드들(CMDs)을 수신하여 복수의 커맨드들(CMDs)을 일시적으로 저장할 수 있다. 예시적인 실시 예에서, 제1 가상 커맨드 큐(120_1)는 제1 물리적 커맨드 큐(130_1)와 연결될 수 있고, 제1 가상 커맨드 큐(120_1)에 저장된 복수의 커맨드들(CMDs)은 제1 물리적 커맨드 큐(130_1)에 전송될 수 있고, 복수의 커맨드들(CMDs)은 제1 물리적 커맨드 큐(130_1)에 저장될 수 있다. 이 때, 제1 가상 커맨드 큐(120_1)에 복수의 커맨드들(CMDs) 중 일부가 저장되는 동작 및 복수의 커맨드들(CMDs) 중 다른 일부가 제1 가상 커맨드 큐(120_1)로부터 제1 물리적 커맨드 큐(130_1)로 페치되는 동작은 병렬적으로 수행될 수 있다.
복수의 커맨드들(CMDs)이 제1 물리적 커맨드 큐(130_1)에 저장됨에 따라 제1 메모리 칩(200_1)은 복수의 커맨드(CMDs)에 따른 동작을 수행할 수 있다.
도 3에서는 제1 가상 커맨드 큐(120_1)에 제1 물리적 커맨드 큐(130_1) 만이 할당되는 것으로 도시되었으나, 본 개시에 따른 스토리지 장치(10)는 하나의 가상 커맨드 큐에 하나의 물리적 커맨드 큐가 할당되는 것에 한정되지 않는다. 예를 들어, 제1 가상 커맨드 큐(120_1)는 제1 물리적 커맨드 큐(130_1) 및 제2 물리적 커맨드 큐(130_2)와 연결될 수 있고, 제1 물리적 커맨드 큐(130_1) 및 제2 물리적 커맨드 큐(130_2) 각각은 제1 가상 커맨드 큐(120_1)로부터 번갈아서 복수의 커맨드들(CMDs) 중 일부 및 다른 일부를 수신하여 저장할 수 있다. 즉, 제1 물리적 커맨드 큐(130_1)는 복수의 커맨드들(CMDs) 중 일부를 일시적으로 저장하여 제1 메모리 칩(200_1)으로 제공할 수 있고, 제2 물리적 커맨드 큐(130_2)는 복수의 커맨드들(CMDs) 중 다른 일부를 일시적으로 저장하여 제2 메모리 칩(200_2)으로 제공할 수도 있다.
또한, 다른 예시적인 실시 예에서, 서로 다른 커넥션을 구성하는 가상 커맨드 큐들, 예를 들어, 제1 가상 커맨드 큐(120_1) 및 제2 가상 커맨드 큐(120_2)가 하나의 제1 물리적 커맨드 큐(130_1)에 연결될 수도 있다. 따라서, 제1 메모리 칩(200_1)은 제1 가상 커맨드 큐(120_1) 및 제2 가상 커맨드 큐(120_2) 모두로부터 커맨드들을 수신할 수 있고, 즉, 제1 메모리 칩(200_1)은 제1 커넥션(CON1) 및 제2 커넥션(CON2)으로부터 모두 커맨드들을 수신할 수 있다.
본 개시에 따른 스토리지 장치(10)는 제1 네트워크 커맨드 큐(110_1)가 복수의 커맨드들(CMDs)을 수신하는 동작, 제1 네트워크 커맨드 큐(110_1)가 복수의 커맨드들(CMDs)을 제1 가상 커맨드 큐(120_1)로 전송하는 동작, 및 제1 가상 커맨드 큐(120_1)가 복수의 커맨드들(CMDs)을 제1 물리적 커맨드 큐(130_1)로 전송하는 동작에 따라, 호스트 장치(20)로 커맨드 조절 요청(CTR)을 전송하거나, 제1 가상 커맨드 큐(120_1)에 할당되는 물리적 커맨드 큐의 수(예를 들어, 제1 물리적 커맨드 큐(130_1) 및 제2 물리적 커맨드 큐(130_2))를 증가시킬 수 있다. 따라서, 스토리지 장치(10)는 데이터 처리의 혼잡도가 감소될 수 있고 데이터 처리 성능이 향상될 수 있다.
도 4는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도로서, 도 1의 S40 단계를 설명하기 위한 순서도이다. 도 5는 도 4의 S48_3 단계를 설명하기 위한 도면이다. 도 6은 도 4의 S48_4 단계를 설명하기 위한 도면이다. S40 단계는 S42 단계 내지 S48_4 단계를 포함할 수 있다. 예를 들어, 복수의 커맨드들(CMDs)은 제1 커넥션(CON1)으로 수신될 수 있다.
도 4를 참조하면, S42 단계에서, 스토리지 장치는 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값 이하인지 판단할 수 있다. 또한, S44 단계 및 S46 단계에서, 스토리지 장치는 가상 커맨드 큐의 큐 깊이가 제2 기준 값 이하인지 판단할 수 있다. 예시적인 실시 예에서, 제1 기준 값 및 제2 기준 값은 미리 설정된 값일 수 있고, 스토리지 컨트롤러(100)에 미리 저장된 값일 수 있다. 또는 예시적인 실시 예에서, 도 12의 S100 단계를 수행함으로써 스토리지 장치는 네트워크 커맨드 큐의 큐 깊이에 대한 제1 기준 값 및 가상 커맨드 큐의 큐 깊이에 대한 제2 기준 값을 획득할 수 있다.
네트워크 커맨드 큐의 큐 깊이가 제1 기준 값 이하이고, 가상 커맨드 큐의 큐 깊이가 제2 기준 값 이하이면, S48_1 단계가 수행될 수 있다. S48_1 단계에서 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수는 유지될 수 있다.
도 4 및 도 5를 참조하면, 예를 들어, 복수의 커맨드들(CMDs)에 대응하는 제1 커넥션(CON1)에 포함되는 제1 네트워크 커맨드 큐(110_1)의 제1 기준 값(RV1)은 7, 제2 가상의 커맨드 큐(120_1)의 제2 기준 값(RV2)은 7일 수 있다. 제1 네트워크 커맨드 큐(110_1)에 인큐된 커맨드들(NCMD1~NCMD3)의 수, 즉, 큐 깊이(QD1)는 3일 수 있다. 제1 가상 커맨드 큐(120_1)에 인큐된 커맨드들(VCMD1~VCMD3)의 수, 즉, 큐 깊이(QD2)는 3일 수 있다.
제1 네트워크 커맨드 큐(110_1)의 큐 깊이(QD1)가 제1 기준 값(RV1) 이하이고, 제1 가상 커맨드 큐(120_1)가 큐 깊이(QD2)가 제2 기준 값(RV2) 이하이면, 제1 가상 커맨드 큐(120_1)에 연결되어 복수의 커맨드들(CMDs)을 수신하는 물리적 커맨드 큐의 수는 대로 유지(S48_1)될 수 있다. 즉, 제1 가상 커맨드 큐(120_1)에 할당되는 물리적 커맨드 큐는 도 2의 S20 단계에서 선택된 제1 물리적 커맨드 큐(130_1)로 유지될 수 있다. 이 때, 제1 네트워크 커맨드 큐(110_1)에 인큐된 커맨드들(NCMD1~NCMD3)이 제1 페치 속도(FR1)로 제1 가상 커맨드 큐(120_1)으로 페치(fetch)될 수 있다.
다시 도 4를 참조하면, 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값 이하이고, 가상 커맨드 큐의 큐 깊이가 제2 기준 값을 초과하면 S48_2 단계가 수행될 수 있다. S48_2 단계에서 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수가 증가될 수 있다.
도 4 및 도 6을 참조하면, 예를 들어, 제1 기준 값(RV1)은 7, 제2 기준 값(RV2)은 7일 수 있다. 제1 네트워크 커맨드 큐(110_1)에 인큐된 커맨드들(NCMD1~NCMD3)의 수, 즉, 큐 깊이(QD1)는 3일 수 있다. 제1 가상 커맨드 큐(120_1)에 인큐된 커맨드들(VCMD1~VCMD8)의 수, 즉, 큐 깊이(QD2)는 8일 수 있다.
제1 네트워크 커맨드 큐(110_1)의 큐 깊이(QD1)가 제1 기준 값(RV1) 이하이고, 제1 가상 커맨드 큐(120_1)의 큐 깊이(QD2)가 제2 기준 값(RV2) 초과되면, 제1 가상 커맨드 큐(120_1)에 할당되는 물리적 커맨드 큐의 수가 도 2의 S20 단계에서 선택된 물리적 커맨드 큐의 수보다 증가(S48_2)될 수 있다. 예를 들어, 제2 물리적 커맨드 큐(130_2)가 제1 가상 커맨드 큐(120_1)에 더 할당될 수 있고, 제1 물리적 커맨드 큐(130_1) 및 제2 물리적 커맨드 큐(130_2)가 제1 가상 커맨드 큐(120_1)로부터 복수의 커맨드들(CMDs)을 수신할 수 있다.
제1 가상 커맨드 큐(120_1)는 인큐된 커맨드들(VCMD1~VCMD8)을 제1 물리적 커맨드 큐(130_1) 및 제2 물리적 커맨드 큐(130_2)에 번갈아 전송할 수 있다. 예를 들어, 제1 가상 커맨드 큐(120_1)는 제1 커맨드(VCMD1)를 제1 물리적 커맨드 큐(130_1)에 전송하고, 제2 커맨드(VCMD2)를 제2 물리적 커맨드 큐(130_2)에 전송할 수 있다. 따라서, 제1 가상 커맨드 큐(120_1)에 인큐된 커맨드들(VCMD1~VCMD8)이 제1 가상 커맨드 큐(120_1)로부터 출력되는 속도가 증가될 수 있고, 인큐된 커맨드들(VCMD1~VCMD8)의 수가 감소되는 속도가 상대적으로 빨라질 수 있다.
다시 도 4를 참조하면, 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하면 제1 모드(S48_3) 및 제2 모드(S48_4) 중 하나의 모드가 수행될 수 있다. 예를 들어, 가상 커맨드 큐의 큐 깊이가 제2 기준 값 이하이면 제1 모드(S48_3)가 수행될 수 있고, 가상 커맨드 큐의 큐 깊이가 제2 기준 값을 초과하면 제2 모드(S48_4)가 수행될 수 있다. 제1 모드(S48_3) 및 제2 모드(S48_4)에 대해서는 도 7 내지 도 10에 대한 설명에서 후술하겠다.
도 7은 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도로서, 도 4의 S48_3 단계를 설명하기 위한 순서도이다. 도 8은 도 7의 S483 단계를 설명하기 위한 도면이다. S48_3 단계는 S481 단계 내지 S484 단계를 포함할 수 있다.
도 7 및 도 8을 참조하면, 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하고, 가상 커맨드 큐의 큐 깊이가 제2 기준 값 이하이면, S48_3 단계가 수행될 수 있다. 예를 들어, 제1 네트워크 커맨드 큐(110_1)의 제1 기준 값(RV1)은 7, 제1 가상 커맨드 큐(120_1)의 제2 기준 값(RV2)은 7일 수 있다. 제1 네트워크 커맨드 큐(110_1)에 인큐된 커맨드들(NCMD1~NCMD8)의 수, 즉, 큐 깊이(QD1)는 8일 수 있다. 제1 가상 커맨드 큐(120_1)에 인큐된 커맨드들(VCMD1~VCMD3)의 수, 즉, 큐 깊이(QD2)는 3일 수 있다.
S481 단계에서, 스토리지 장치는 일정 시간이 경과 후에도 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하고, 가상 커맨드 큐의 큐 깊이가 제2 기준 값 이하인지 확인할 수 있다. 예를 들어, 호스트로부터 복수의 커맨드들(CMDs)이 스토리지 장치의 제1 커넥션(CON1)으로 수신되면, 수신된 시점에서 제1 네트워크 커맨드 큐(110_1)의 큐 깊이(QD1)가 급격히 증가될 수 있고, 시간이 경과됨에 따라 점차 제1 네트워크 커맨드 큐(110_1)의 큐 깊이(QD1)가 감소될 수 있다. 따라서, 일정 시간이 경과되어도 제1 네트워크 커맨드 큐(110_1)의 큐 깊이(QD1)가 제1 기준 값(RV1)을 초과하고, 제1 가상 커맨드 큐(120_1)의 큐 깊이(QD2)가 제2 기준 값(RV2) 이하인지 확인할 수 있다.
상기 상태가 지속되면, S482 단계에서, 스토리지 장치는 네트워크 커맨드 큐 및 가상 커맨드 큐를 포함하는 커넥션의 입/출력 대역폭이 약속 레벨 이하인지 확인할 수 있다. 예를 들어, 제1 커넥션(CON1)의 입/출력 대역폭이 약속 레벨, 즉, 제1 대역폭(BW1)이하인지 확인할 수 있다.
커넥션의 입/출력 대역폭이 약속 레벨 이하인 경우에는, S483 단계에서 스토리지 장치는 네트워크 커맨드 큐에 인큐된 커맨드들이 가상 커맨드 큐로 출력되는 페치 속도를 증가시킬 수 있다. 스토리지 장치는 커넥션의 입/출력 대역폭이 약속 레벨 이하임에도 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하는 경우에는, 네트워크 커맨드 큐에서 커맨드가 출력되는 속도가 작은 것으로 판단하고 네트워크 커맨드 큐에 인큐된 커맨드들이 가상 커맨드 큐로 출력되는 페치 속도를 증가시킬 수 있다. 예를 들어, 제1 커넥션(CON1)의 입/출력 대역폭이 약속된 제1 대역폭(BW1)이하인 경우에는, 제1 네트워크 커맨드 큐(110_1)에 인큐된 커맨드들(NCMD1~NCMD8)이 제1 페치 속도(예를 들어, 도 5의 FR1)보다 빠른 제2 페치 속도(FR2)로 제1 가상 커맨드 큐(120_1)으로 페치될 수 있다.
커넥션의 입/출력 대역폭이 약속 레벨을 초과하는 경우에는, S484 단계에서 스토리지 장치는 호스트 장치로 커맨드 조절 요청(예를 들어, 도 3의 CTR)을 전송할 수 있다. 이 때, 커맨드 조절 요청(CTR)은 복수의 커맨드들에 대한 응답으로서 전송될 수 있다. 커맨드 조절 요청(CTR)은 대역폭 위반에 대한 정보를 포함할 수 있다. 따라서, 호스트 장치는 커맨드 조절 요청(CTR)에 따라 스토리지 장치로 전송하는 커맨드들의 대역폭을 감소시킬 수 있고, 약속된 대역폭의 레벨을 준수할 수 있다.
도 9는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작을 나타내는 순서도로서, 도 4의 S48_4 단계를 설명하기 위한 순서도이다. 도 10은 도 9의 S487 단계를 설명하기 위한 도면이다. S48_4 단계는 S486 단계 내지 S488 단계를 포함할 수 있다.
도 9 및 도 10을 참조하면, 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하고, 가상 커맨드 큐의 큐 깊이가 제2 기준 값을 초과하면, S48_4 단계가 수행될 수 있다. 예를 들어, 제1 기준 값(RV1)은 7, 제2 기준 값(RV2)은 7일 수 있다. 제1 네트워크 커맨드 큐(110_1)에 인큐된 커맨드들(NCMD1~NCMD8)의 수, 즉, 큐 깊이(QD1)는 8일 수 있다. 제1 가상 커맨드 큐(120_1)에 인큐된 커맨드들(VCMD1~VCMD8)의 수, 즉, 큐 깊이(QD2)는 8일 수 있다.
S486 단계에서, 스토리지 장치는 네트워크 커맨드 큐 및 가상 커맨드 큐를 포함하는 커넥션의 입/출력 대역폭이 약속 레벨 이하인지 확인할 수 있다. 예를 들어, 스토리지 장치는 제1 커넥션(CON1)의 입/출력 대역폭이 약속 레벨, 즉, 제1 대역폭(BW1)이하인지 확인할 수 있다.
커넥션의 입/출력 대역폭이 약속 레벨 이하인 경우에는, S487 단계에서, 스토리지 장치는 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수를 증가시킬 수 있다. 예를 들어, 제1 커넥션(CON1)의 입/출력 대역폭이 제1 대역폭(BW1)이하인 경우, 제1 가상 커맨드 큐(120_1)에 제1 물리적 커맨드 큐(130_1) 및 제2 물리적 커맨드 큐(130_2)를 연결시킴으로써, 제1 가상 커맨드 큐(120_1)에 할당되는 물리적 커맨드 큐의 수를 증가시킬 수 있고, 복수의 커맨드들(CMDs)을 처리하는 메모리 칩(예를 들어, 제1 메모리 칩 및 제2 메모리 칩)의 수를 증가시킬 수 있다. 제1 커넥션(CON1)의 입/출력 대역폭이 제1 대역폭(BW1)을 초과하지 않음에도 제1 네트워크 커맨드 큐(110_1)의 큐 깊이(QD1)가 제1 기준 값(RV1)을 초과하고, 제1 가상 커맨드 큐(120_1)의 큐 깊이(QD2)가 제2 기준 값(RV2)을 초과하는 것은, 제1 가상 커맨드 큐(120_1)에 인큐된 커맨드들(VCMD1~VCMD8)이 출력되는 속도가 작은 것으로 판단될 수 있다. 따라서, 스토리지 장치는 제1 가상 커맨드 큐(120_1)에 할당되는 물리적 커맨드 큐의 수를 증가시킴으로써, 제1 가상 커맨드 큐(120_1)에 인큐된 커맨드들(VCMD1~VCMD8)이 출력되는 속도를 증가시킬 수 있다.
커넥션의 입/출력 대역폭이 약속 레벨을 초과하는 경우에는, S488 단계에서 스토리지 장치는 호스트 장치로 커맨드 조절 요청(예를 들어, 도 3의 CTR)을 전송할 수 있다. 이 때, 커맨드 조절 요청(CTR)은 복수의 커맨드들에 대한 응답으로서 전송될 수 있다. 커맨드 조절 요청(CTR)은 대역폭 위반에 대한 정보를 포함할 수 있다. 따라서, 호스트 장치는 커맨드 조절 요청(CTR)에 따라 스토리지 장치로 전송하는 커맨드들의 대역폭을 감소시킬 수 있고, 약속된 대역폭의 레벨을 준수할 수 있다.
도 11은 본 개시의 예시적인 실시 예에 따른 스토리지 장치를 나타내는 블록도이다. 도 11에 대한 설명에서는 도 3에서와 동일한 부호에 대해 중복 설명을 생략하겠다.
도 11을 참조하면, 스토리지 장치(10a)는 스토리지 컨트롤러(100a) 및 메모리(200a)를 포함할 수 있다. 스토리지 컨트롤러(100a)는 메모리(200a)의 전반적인 동작을 제어할 수 있다.
스토리지 컨트롤러(100a)는 제1 내지 제n 네트워크 커맨드 큐(110_1~110_n) 및 제1 내지 제n 가상 커맨드 큐(120_1~120_n)를 포함할 수 있다. 예를 들어, n은 3 이상의 자연수일 수 있다.
메모리(200a)는 제1 내지 제k 메모리 칩(200_1a~200_ka)을 포함할 수 있다. 제1 내지 제k 메모리 칩(200_1a~200_ka) 각각은 제1 내지 제k 물리적 커맨드 큐(130_1~130_k) 중 대응하는 물리적 커맨드 큐를 포함할 수 있다. 제1 내지 제k 메모리 칩(200_1a~200_ka) 각각은 대응하는 물리적 커맨드 큐에 저장된 커맨드에 따른 동작을 수행할 수 있다. 예를 들어, 제1 메모리 칩(200_1a)은 제1 물리적 커맨드 큐(210_1)를 포함할 수 있고, 제2 메모리 칩(200_2a)은 제2 물리적 커맨드 큐(210_2)를 포함할 수 있고, 제k-1 메모리 칩(200_k-1a)은 제k-1 물리적 커맨드 큐(210_k-1)를 포함할 수 있고, 제k 메모리 칩(200_ka)은 제k 물리적 커맨드 큐(210_k)를 포함할 수 있다. 예를 들어, k는 4이상의 자연수일 수 있다. 예시적인 실시 예에서, n은 k와 동일한 값을 가질 수 있으나, 본 개시는 이에 한정되지 않으며, n 및 k는 서로 상이한 값을 가질 수도 있다.
예시적인 실시 예에서, 복수의 커맨드들(CMDs)은 제1 커넥션(CON1)으로 수신될 수 있고, 복수의 커맨드들(CMDs)은 제1 네트워크 커맨드 큐(110_1)에 일시적으로 저장될 수 있다. 제1 네트워크 커맨드 큐(110_1)는 제1 가상 커맨드 큐(120_1)로 복수의 커맨드들(CMDs)을 전송할 수 있고, 제1 가상 커맨드 큐(120_1)는 복수의 커맨드들(CMDs)을 일시적으로 저장할 수 있다. 예시적인 실시 예에서, 제1 가상 커맨드 큐(120_1)는 제1 물리적 커맨드 큐(210_1)와 연결될 수 있고, 제1 가상 커맨드 큐(120_1)에 저장된 복수의 커맨드들(CMDs)은 제1 물리적 커맨드 큐(210_1)에 전송됨에 따라 제1 메모리 칩(200_1a)에서 복수의 커맨드들(CMDs)에 따른 동작을 수행할 수 있다.
본 개시에 따른 스토리지 장치(10a)는 제1 네트워크 커맨드 큐(110_1)가 복수의 커맨드들(CMDs)을 수신하는 동작, 제1 네트워크 커맨드 큐(110_1)가 복수의 커맨드들(CMDs)을 제1 가상 커맨드 큐(120_1)로 전송하는 동작, 및 제1 가상 커맨드 큐(120_1)가 복수의 커맨드들(CMDs)을 제1 물리적 커맨드 큐(210_1)로 전송하는 동작에 따라, 호스트 장치(20)로 커맨드 조절 요청(CTR)을 전송하거나, 제1 가상 커맨드 큐(120_1)에 할당되는 물리적 커맨드 큐의 수를 변경할 수 있다. 예시적 실시 예에서 스토리지 장치(10a)는 제1 네트워크 커맨드 큐(110_1)의 큐 깊이를 제1 기준 값과 비교하고, 제1 가상 커맨드 큐(120_1)의 큐 깊이를 제2 기준 값과 비교한 결과에 기초하여, 호스트 장치(20)로 커맨드 조절 요청(CTR)을 전송하거나, 제1 가상 커맨드 큐(120_1)에 할당되는 물리적 커맨드 큐의 수를 변경할 수 있다.
본 개시에 따른 스토리지 장치(10a)에는 도 2, 도 4 내지 도 9의 설명이 동일하게 적용될 수 있다. 따라서 본 개시에 따른 스토리지 장치(10a)는 데이터 처리의 혼잡도가 감소될 수 있고 데이터 처리 성능이 향상될 수 있다.
도 12는 본 개시에 따른 스토리지 장치의 동작을 설명하기 위한 블록도이다. 도 13a 및 도 13b는 도 12의 S120 단계를 설명하기 위한 도면이다. 예시적인 실시 예에서, 도 12의 S100 단계는 하나의 커넥션을 구성하는 네트워크 커맨드 큐의 제1 기준 값 및 가상 커맨드 큐의 제2 기준 값을 설정하는 단계로서 도 2의 S10 단계 이전에 미리 수행될 수 있으나, 본 개시는 이에 한정되지 않는다. S100 단계는 S110 단계 및 S120 단계를 포함할 수 있다.
도 12를 참조하면, S110 단계에서, 스토리지 장치는 네트워크 커맨드 큐에 커맨드가 제공되는 기준 속도, 네트워크 커맨드 큐에서 커맨드가 페치되는 기준 속도, 및 가상 커맨드 큐에서 커맨드가 출력되는 기준 속도를 설정할 수 있다. 상기 기준 속도들은 제1 기준 값 및 제2 기준 값을 설정하기 위해 설정된 특정 값들을 가질 수 있다. 예를 들어, 가상 커맨드 큐에 하나의 물리적 커맨드 큐가 할당되는 것을 가정하여, 네트워크 커맨드 큐에 커맨드가 제공되는 기준 속도, 네트워크 커맨드 큐에서 커맨드가 출력되는 기준 속도, 및 가상 커맨드 큐에서 커맨드가 출력되는 기준 속도가 설정될 수 있다. 다만, 본 개시는 이에 한정되지 않으며, 가상 커맨드 큐에 복수의 물리적 커맨드 큐들이 할당되는 것을 가정하여 네트워크 커맨드 큐에 커맨드가 제공되는 기준 속도, 네트워크 커맨드 큐에서 커맨드가 페치되는 기준 속도, 및 가상 커맨드 큐에서 커맨드가 출력되는 기준 속도가 설정될 수도 있다.
S120 단계에서, 스토리지 장치는 네트워크 커맨드 큐에 복수의 기준 커맨드들이 제공될 때, 네트워크 커맨드 큐의 큐 깊이의 변화 및 가상 커맨드 큐의 큐 깊이의 변화에 기초하여 네트워크 커맨드 큐의 제1 기준 값 및 가상 커맨드 큐의 제2 기준 값을 설정할 수 있다.
도 12, 도 13a 및 도 13b를 참조하면, 네트워크 커맨드 큐의 큐 깊이(QD1)는 네트워크 커맨드 큐가 기준 커맨드들을 수신하고, 다시 가상 커맨드 큐로 기준 커맨드들을 출력하면서 증가와 감소를 반복할 수 있다. S120 단계에서 스토리지 장치는 정해진 제1 시간(t1) 동안의 네트워크 커맨드 큐의 큐 깊이(QD1)의 변화를 검출할 수 있다. 스토리지 장치는 검출된 큐 깊이(QD1)의 최대값(vmax_1)보다 크고 네트워크 커맨드 큐의 큐 용량(queue capacity, max_1)보다 작은 값을 갖도록 제1 기준 값(RV1)을 설정할 수 있다. 이 때, 네트워크 커맨드 큐 용량은 네트워크 커맨드 큐에 저장될 수 있는 커맨드의 최대 값을 의미할 수 있다.
가상 커맨드 큐의 큐 깊이(QD2)는 가상 커맨드 큐가 기준 커맨드들을 수신하고, 다시 물리적 커맨드 큐로 기준 커맨드들을 출력하면서 증가와 감소를 반복할 수 있다. S120 단계에서 스토리지 장치는 정해진 제2 시간(t2) 동안 가상 커맨드 큐의 큐 깊이(QD2)의 변화를 검출할 수 있다. 스토리지 장치는 검출된 큐 깊이(QD2)의 최대값(vmax_2)보다 크고 가상 커맨드 큐의 큐 용량(max_2)보다 작은 값을 갖도록 제2 기준 값(RV2)을 설정할 수 있다. 이 때, 가상 커맨드 큐 용량은 가상 커맨드 큐에 저장될 수 있는 커맨드의 최대 값을 의미할 수 있다.
도 3, 도 11, 및 도 12를 참조하면, 제1 내지 제n 네트워크 커맨드 큐(110_1~110_n) 각각의 제1 기준 값들은 서로 동일할 수 있다. 예를 들어, 제1 커넥션(CON1)에 대해 S100 단계를 수행하여 제1 기준 값을 설정한 후, 제2 내지 제n 네트워크 커맨드 큐(110_2~110_n)에도 설정된 제1 기준 값을 동일하게 적용할 수 있다. 또는 예시적인 실시 예에서, 제1 내지 제n 커넥션(CON1~CONn) 각각에 대해 S100 단계를 수행함으로써 제1 내지 제n 네트워크 커맨드 큐(110_1~110_n) 각각의 제1 기준 값들을 개별적으로 설정할 수 있고, 제1 내지 제n 네트워크 커맨드 큐(110_1~110_n) 각각의 제1 기준 값들 중 일부는 서로 다를 수도 있다.
예시적인 실시 예에서, 도 3 및 도 11의 제1 내지 제n 가상 커맨드 큐(120_1~120_n) 각각의 제2 기준 값들은 서로 동일할 수 있다. 예를 들어, 제1 커넥션(CON1)에 대해 S100 단계를 수행하여 제2 기준 값을 설정한 후, 제2 내지 제n 가상 커맨드 큐(120_2~120_n)에도 설정된 제2 기준 값을 동일하게 적용할 수 있다. 또는 예시적인 실시 예에서, 제1 내지 제n 커넥션(CON1~CONn) 각각에 대해 S100 단계를 수행함으로써 제1 내지 제n 가상 커맨드 큐(120_1~120_n) 각각의 제2 기준 값들을 개별적으로 설정할 수 있고, 제1 내지 제n 가상 커맨드 큐(120_1~120_n) 각각의 제2 기준 값들 중 일부는 서로 다를 수도 있다.
예를 들어, 가상 커맨드 큐에 하나의 물리적 커맨드 큐가 할당될 때의 가상 커맨드 큐에서 커맨드가 출력되는 기준 속도는, 가상 커맨드 큐에 복수의 물리적 커맨드 큐들이 할당될 때의 가상 커맨드 큐에서 커맨드가 출력되는 기준 속도보다 느릴 수 있다. 따라서, 가상 커맨드 큐에 하나의 물리적 커맨드 큐가 할당될 때의 제1 기준 값 및 제2 기준 값은 가상 커맨드 큐에 복수의 물리적 커맨드 큐들이 할당될 때의 제1 기준 값 및 제2 기준 값과 서로 상이할 수 있다. 예를 들어, S110 단계에서, 제1 가상 커맨드 큐(120_1)는 제1 물리적 커맨드 큐(130_1 또는 210_1)에 연결되고, 제n 가상 커맨드 큐(120_n)는 제k-1 물리적 커맨드 큐(130_k-1 또는 210_k-1) 및 제k 물리적 커맨드 큐(130_k 또는 210_k)에 연결된다고 가정될 경우, S120 단계에서 설정된 제1 네트워크 커맨드 큐(110_1)의 제1 기준 값과 제n 가상 커맨드 큐(120_n)의 제1 기준 값은 상이할 수 있고, 제1 가상 커맨드 큐(120_1)의 제2 기준 값과 제n 가상 커맨드 큐(120_n)의 제2 기준 값은 상이할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 네트워크 커맨드 큐 및 가상 커맨드 큐를 포함하는 커넥션, 및 복수의 메모리 칩들을 포함하는 스토리지 장치의 동작방법에 있어서,
    호스트 장치로부터 상기 커넥션으로 복수의 커맨드들을 수신하는 단계;
    상기 복수의 메모리 칩들 각각에 커맨드를 제공하는 복수의 물리적 커맨드 큐들 중 상기 커넥션에 할당되는 물리적 커맨드 큐를 선택하는 단계;
    상기 네트워크 커맨드 큐 및 상기 가상 커맨드 큐에 순차적으로 상기 복수의 커맨드들을 저장하는 단계; 및
    상기 네트워크 커맨드 큐의 큐 깊이에 기초하여 상기 복수의 커맨드들에 대한 응답으로서 상기 호스트 장치로 커맨드 조절 요청을 전송하고, 상기 가상 커맨드 큐의 큐 깊이에 기초하여 상기 커넥션에 할당되는 상기 물리적 커맨드 큐의 수를 조절하는 단계;를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  2. 제1 항에 있어서,
    상기 커맨드 조절 요청을 전송하고, 상기 물리적 커맨드 큐의 수를 조절하는 단계는,
    상기 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하고, 상기 가상 커맨드 큐의 큐 깊이가 제2 기준 값 이하인 경우, 상기 커넥션의 입/출력 대역폭이 약속 레벨 이하인지 판단하는 단계; 및
    상기 커넥션의 입/출력 대역폭이 약속 레벨 이하인 경우, 상기 네트워크 커맨드 큐에서 상기 가상 커맨드 큐로 커맨드가 페치되는 커맨드 페치 속도를 증가시키는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  3. 제1 항에 있어서,
    상기 커맨드 조절 요청을 전송하고, 상기 물리적 커맨드 큐의 수를 조절하는 단계는,
    상기 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하고, 상기 가상 커맨드 큐의 큐 깊이가 제2 기준 값 이하인 경우, 상기 커넥션의 입/출력 대역폭이 약속 레벨 이하인지 판단하는 단계; 및
    상기 커넥션의 입/출력 대역폭이 약속 레벨을 초과하는 경우, 상기 호스트 장치로 상기 대역폭의 위반 정보를 포함하는 상기 커맨드 조절 요청을 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작방법.
  4. 제1 항에 있어서,
    상기 커맨드 조절 요청을 전송하고, 상기 물리적 커맨드 큐의 수를 조절하는 단계는,
    상기 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하고, 상기 가상 커맨드 큐의 큐 깊이가 제2 기준 값을 초과하는 경우, 상기 커넥션의 입/출력 대역폭이 약속 레벨 이하인지 판단하는 단계; 및
    상기 커넥션의 입/출력 대역폭이 약속 레벨 이하인 경우, 상기 복수의 물리적 커맨드 큐들 중에서 상기 커넥션에 할당되는 상기 물리적 커맨드 큐의 수를 증가시키는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  5. 제1 항에 있어서,
    상기 커맨드 조절 요청을 전송하고, 상기 물리적 커맨드 큐의 수를 조절하는 단계는,
    상기 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값을 초과하고, 상기 가상 커맨드 큐의 큐 깊이가 제2 기준 값을 초과하는 경우, 상기 커넥션의 입/출력 대역폭이 약속 레벨 이하인지 판단하는 단계; 및
    상기 커넥션의 입/출력 대역폭이 약속 레벨을 초과하는 경우, 상기 호스트 장치로 상기 대역폭의 위반 정보를 포함하는 상기 커맨드 조절 요청을 전송하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작방법.
  6. 호스트 장치와 인터페이스를 수행하는 스토리지 장치에 있어서,
    복수의 메모리 칩들을 포함하는 메모리; 및
    상기 메모리의 동작을 제어하는 스토리지 컨트롤러;를 포함하고,
    상기 스토리지 컨트롤러는,
    네트워크 커맨드 큐 및 가상 커맨드 큐로 각각 구성되고 상기 호스트 장치로부터 커맨드를 수신하는 복수의 커넥션들; 및
    상기 복수의 메모리 칩들에 각각 연결되고, 각각 대응하는 메모리 칩으로 커맨드를 제공하는 복수의 물리적 커맨드 큐들;을 포함하고,
    상기 스토리지 컨트롤러는, 상기 네트워크 커맨드 큐의 큐 깊이에 기초하여 상기 호스트 장치로 커맨드 조절 요청을 전송하고, 상기 가상 커맨드 큐의 큐 깊이에 기초하여 상기 가상 커맨드 큐에 연결되는 물리적 커맨드 큐의 수를 조절하는 것을 특징으로 하는 스토리지 장치.
  7. 복수의 메모리 칩들을 포함하는 메모리; 및
    상기 메모리의 동작을 제어하는 스토리지 컨트롤러;를 포함하고,
    상기 스토리지 컨트롤러는 네트워크 커맨드 큐 및 가상 커맨드 큐로 각각 구성되고 호스트 장치로부터 커맨드를 수신하는 복수의 커넥션들을 포함하고,
    상기 스토리지 컨트롤러는, 상기 네트워크 커맨드 큐의 큐 깊이에 기초하여 상기 호스트 장치로 커맨드 조절 요청을 전송하고, 상기 가상 커맨드 큐의 큐 깊이에 기초하여 상기 가상 커맨드 큐에 인큐된 커맨드가 제공되는 메모리 칩의 수를 조절하는 것을 특징으로 하는 스토리지 장치.
  8. 제7 항에 있어서,
    상기 복수의 메모리 칩들 각각은 대응되는 물리적 커맨드 큐를 포함하고,
    상기 스토리지 컨트롤러는, 상기 가상 커맨드 큐의 큐 깊이에 기초하여 상기 가상 커맨드 큐에 할당되는 물리적 커맨드 큐의 수를 조절함으로써, 상기 가상 커맨드 큐에 인큐된 커맨드가 제공되는 메모리 칩의 수를 조절하는 것을 특징으로 하는 스토리지 장치.
  9. 제7 항에 있어서,
    상기 스토리지 컨트롤러는,
    상기 네트워크 커맨드 큐의 큐 깊이가 제1 기준 값 이하이고, 상기 가상 커맨드 큐의 큐 깊이가 제2 기준 값을 초과하는 경우, 상기 가상 커맨드 큐에 인큐된 커맨드가 제공되는 메모리 칩의 수를 증가시키는 것을 특징으로 하는 스토리지 장치.
  10. 제7 항에 있어서,
    상기 스토리지 컨트롤러는,
    상기 가상 커맨드 큐의 큐 깊이가 제2 기준 값을 초과하고 상기 가상 커맨드 큐가 포함된 커넥션의 입/출력 대역폭이 약속 레벨 이하인 경우, 상기 가상 커맨드 큐에 인큐된 커맨드가 제공되는 메모리 칩의 수를 증가시키는 것을 특징으로 하는 스토리지 장치.
KR1020190166003A 2019-12-12 2019-12-12 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법 KR20210074876A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190166003A KR20210074876A (ko) 2019-12-12 2019-12-12 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법
US17/034,169 US11294600B2 (en) 2019-12-12 2020-09-28 Storage device interfacing with host device and operating method of the storage device
CN202011457053.8A CN112988058A (zh) 2019-12-12 2020-12-11 与主机设备接合的存储设备及存储设备的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190166003A KR20210074876A (ko) 2019-12-12 2019-12-12 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210074876A true KR20210074876A (ko) 2021-06-22

Family

ID=76316239

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190166003A KR20210074876A (ko) 2019-12-12 2019-12-12 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법

Country Status (3)

Country Link
US (1) US11294600B2 (ko)
KR (1) KR20210074876A (ko)
CN (1) CN112988058A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762583B2 (en) * 2020-10-22 2023-09-19 EMC IP Holding Company, LLC System and method for selectively throttling commands within a storage system
US11870712B1 (en) * 2020-12-03 2024-01-09 Amazon Technologies, Inc. Distributed network management
US11924105B1 (en) * 2021-04-29 2024-03-05 Marvell Asia Pte Ltd Method and apparatus for control of congestion in storage area network
US12126502B1 (en) 2023-04-26 2024-10-22 Netapp, Inc. Configurable quality of service provider pipeline
US12135880B1 (en) * 2023-04-26 2024-11-05 Netapp, Inc. Dynamic quality of service implementation based upon resource saturation

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7061861B1 (en) * 2000-07-06 2006-06-13 Broadband Royalty Corporation Method and system for weighted fair flow control in an asynchronous metro packet transport ring network
US7689708B1 (en) 2002-10-28 2010-03-30 Netapp, Inc. Apparatus to flow control frames in a networked storage virtualization using multiple streaming protocols
US7414973B2 (en) * 2005-01-24 2008-08-19 Alcatel Lucent Communication traffic management systems and methods
JP4901310B2 (ja) 2006-05-31 2012-03-21 株式会社日立製作所 記憶制御装置及び記憶制御装置のコマンド実行数制御方法
US8291131B2 (en) 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
KR101699377B1 (ko) * 2014-07-02 2017-01-26 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US11036533B2 (en) * 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
JP6558090B2 (ja) 2015-06-15 2019-08-14 富士通株式会社 ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム
US9948566B2 (en) * 2015-12-09 2018-04-17 Vmware, Inc. Selective network traffic throttling
US10721178B2 (en) 2016-01-22 2020-07-21 Medtronic, Inc. Systems, apparatus and methods facilitating data buffering and removal
US10778809B2 (en) * 2016-02-26 2020-09-15 Arista Networks, Inc. Per-input port, per-control plane network data traffic class control plane policing
US10409719B2 (en) 2016-03-17 2019-09-10 Samsung Electronics Co., Ltd. User configurable passive background operation
US10474374B2 (en) 2016-05-24 2019-11-12 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring
US10366766B2 (en) 2017-12-12 2019-07-30 Western Digital Technologies, Inc. Power shaping and peak power reduction by data transfer throttling
US10387078B1 (en) * 2018-03-13 2019-08-20 Western Digital Technologies, Inc. Adaptive control of host queue depth for command submission throttling using data storage controller
US11343193B2 (en) * 2020-01-03 2022-05-24 Realtek Singapore Private Limited Apparatus and method for rate management and bandwidth control

Also Published As

Publication number Publication date
US11294600B2 (en) 2022-04-05
US20210181989A1 (en) 2021-06-17
CN112988058A (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
CN108628777B (zh) 动态和自适应中断合并的系统和方法
KR102395190B1 (ko) 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
KR20210074876A (ko) 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법
KR102527992B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10936485B2 (en) Data storage device for dynamic garbage collection triggering and operating method thereof
US10133483B2 (en) Memory system and method for differential thermal throttling
KR20160087224A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR20180092435A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
US11922037B2 (en) Controller, storage device and operation method of storage device
US20180113736A1 (en) Computing Systems and Methods of Operating Computing Systems
KR20190130831A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
KR20190128498A (ko) 메모리 시스템, 그것의 동작 방법 및 전자 장치
US11593031B2 (en) Operating method of host device and storage device using credit
US20220197510A1 (en) Storage device for executing processing code and operating method of the storage device
US11726677B2 (en) Storage device configured to change power state based on reference clock from host device and method for operating the same
KR20230060817A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
CN112783430A (zh) 存储器系统
US11789652B2 (en) Storage device and storage system including the same
KR20200015260A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11409468B2 (en) Storage system and method for using proactive device timeout information
US11106597B2 (en) Controller, data storage device and operating method thereof
EP4177758A1 (en) A storage device and an operating method of a storage controller thereof
KR102583244B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20240231687A9 (en) Computational storage device, method for operating the computational storage device and method for operating host device