KR102637166B1 - 대용량 데이터를 저장하는 네트워크 스토리지 장치 - Google Patents

대용량 데이터를 저장하는 네트워크 스토리지 장치 Download PDF

Info

Publication number
KR102637166B1
KR102637166B1 KR1020180044420A KR20180044420A KR102637166B1 KR 102637166 B1 KR102637166 B1 KR 102637166B1 KR 1020180044420 A KR1020180044420 A KR 1020180044420A KR 20180044420 A KR20180044420 A KR 20180044420A KR 102637166 B1 KR102637166 B1 KR 102637166B1
Authority
KR
South Korea
Prior art keywords
volatile memory
storage controller
network
network storage
switch
Prior art date
Application number
KR1020180044420A
Other languages
English (en)
Other versions
KR20190120992A (ko
Inventor
이창덕
신승엽
양경보
오화석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180044420A priority Critical patent/KR102637166B1/ko
Priority to US16/196,941 priority patent/US11290533B2/en
Priority to CN201910197641.3A priority patent/CN110392092B/zh
Priority to JP2019058273A priority patent/JP7210353B2/ja
Priority to SG10201902874Q priority patent/SG10201902874QA/en
Priority to EP22185333.6A priority patent/EP4095668A1/en
Priority to EP19169055.1A priority patent/EP3557429A3/en
Publication of KR20190120992A publication Critical patent/KR20190120992A/ko
Priority to US17/671,693 priority patent/US20220174115A1/en
Application granted granted Critical
Publication of KR102637166B1 publication Critical patent/KR102637166B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • 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/1684Details of memory controller using multiple buses
    • 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
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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/0656Data buffering 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/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/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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0226Mapping or translating multiple network management protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/104Asynchronous transfer mode [ATM] switching fabrics
    • H04L49/105ATM switching elements
    • H04L49/108ATM switching elements using shared central buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access
    • G06F2213/1602Memory access type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)
  • Memory System (AREA)
  • Small-Scale Networks (AREA)

Abstract

네트워크 페브릭에 연결되는 네트워크 스토리지 장치는, 상기 네트워크 페브릭과의 인터페이싱을 수행하고, 상기 네트워크 페브릭을 통해서 제공되는 명령어를 변환하여 실행하는 네트워크 스토리지 컨트롤러, 그리고 상기 네트워크 스토리지 컨트롤러의 제어에 따라 상기 네트워크 스토리지 컨트롤러와 데이터를 교환하는 불휘발성 메모리 클러스터를 포함하되, 상기 불휘발성 메모리 클러스터는, 상기 네트워크 스토리지 컨트롤러와 제 1 채널을 통해서 연결되는 제 1 불휘발성 메모리 어레이, 상기 네트워크 스토리지 컨트롤러와 제 2 채널을 통해서 연결되는 불휘발성 메모리 스위치, 그리고 상기 불휘발성 메모리 스위치의 제어에 따라 상기 네트워크 스토리지 컨트롤러와 통신하는 제 2 불휘발성 메모리 어레이를 포함한다.

Description

대용량 데이터를 저장하는 네트워크 스토리지 장치 {NETWORK STORAGE DEVICE STORING LARGE AMOUNT OF DATA}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 대용량 데이터를 저장하는 네트워크 스토리지 장치에 관한 것이다.
플래시 메모리 기반의 대용량 스토리지 장치의 대표적인 예로 솔리드 스테이트 드라이브(이하, SSD)가 있다. 최근들어 SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 SSD의 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 SATA, SAS, PCIe 기반의 NVMe가 활발히 연구 및 적용되고 있다.
최근에는 대용량 데이터 센터와 같은 시스템에서 확장의 용이성을 제공하기 위한 SSD 인터페이스들이 활발히 개발되고 있다. 특히, 이더넷 스위치와 같은 네트워크 페브릭(Network Fabric)에 SSD를 장착하기 위한 표준으로 NVMe-oF(NVMe over Fabrics)가 제안되고 활발히 연구되고 있다. NVMe-oF는 광범위한 스토리지 네트워킹 페브릭들(예컨대, 이더넷(Ethernet), 파이버 채널(Fiber Channel), InfiniBand 등)을 통해 NVMe 스토리지 프로토콜을 지원한다.
NVMe-oF 스토리지 프로토콜에서도 NVMe SSD를 사용한다. 따라서, NVMe SSD를 포함하는 스토리지의 인터페이스는 네트워크 페브릭의 프로토콜을 NVMe-oF 프로토콜로 변환하거나 데이터 버퍼의 기능을 가진다. 하지만, 이 경우 복수의 프로토콜 계층에 대응하는 프로토콜 변환을 수행해야 하기 때문에 레이턴시 증가는 불가피하게 된다.
따라서, 레이턴시의 감소와 용량 확장의 용이성을 위해 NVMe SSD가 아닌 불휘발성 메모리 장치(NVM) 또는 불휘발성 메모리 어레이(NVM Array)를 저장 매체로 사용하고, 다중 프로토콜의 변환(Translation)을 효율적으로 수행하는 기술이 절실히 요구되고 있다.
본 발명의 목적은 네트워크 스토리지 장치의 컨트롤러 구조를 간략화시키고, 확장의 용이성을 제공하기 위한 이더넷 스토리지 장치를 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 네트워크 페브릭에 연결되는 네트워크 스토리지 장치는, 상기 네트워크 페브릭과의 인터페이싱을 수행하고, 상기 네트워크 페브릭을 통해서 제공되는 명령어를 변환하여 실행하는 네트워크 스토리지 컨트롤러, 상기 네트워크 스토리지 컨트롤러의 제어에 따라 상기 네트워크 스토리지 컨트롤러와 데이터를 교환하는 불휘발성 메모리 클러스터를 포함하되, 상기 불휘발성 메모리 클러스터는, 상기 네트워크 스토리지 컨트롤러와 제 1 채널을 통해서 연결되는 제 1 불휘발성 메모리 어레이, 상기 네트워크 스토리지 컨트롤러와 제 2 채널을 통해서 연결되는 불휘발성 메모리 스위치, 상기 불휘발성 메모리 스위치의 제어에 따라 상기 네트워크 스토리지 컨트롤러와 통신하는 제 2 불휘발성 메모리 어레이를 포함한다.
상기 목적을 달성하기 위한 본 발명의 다른 실시 예에 따른 네트워크 스토리지 장치는, 네트워크 스위치를 통해 제공되는 제 1 명령어를 불휘발성 메모리를 제어하기 위한 제 2 명령어로 변환하고, 상기 제 2 명령어를 인터페이스를 사용하여 출력하는 스토리지 컨트롤러, 그리고 상기 스토리지 컨트롤러로부터 출력되는 상기 제 2 명령어에 따라 쓰기 데이터를 저장하거나, 저장된 데이터를 상기 스토리지 컨트롤러에 출력하는 불휘발성 메모리 클러스터를 포함하되, 상기 스토리지 컨트롤러는 상기 불휘발성 메모리 클러스터에 대한 명령을 수행하는 적어도 하나의 외장형 연산 장치를 포함한다.
이상과 같은 본 발명의 실시 예에 따르면, NAND 플래시 메모리 장치와 같은 불휘발성 메모리 장치나 불휘발성 메모리 어레이 단위의 용량 확장이 가능한 네트워크 스토리지 장치가 제공될 수 있다. 따라서, 본 발명의 네트워크 스토리지 장치는 네트워크 페브릭에 연결되어 다중 프로토콜에 대한 단일 계층의 프로토콜 변환을 수행함에 따라 레이턴시를 줄일 수 있고, 용이하게 메모리 용량을 확장할 수 있다.
도 1은 본 발명의 실시 예에 따른 네트워크 스토리지 시스템을 간략히 보여주는 블록도이다.
도 2는 도 1의 네트워크 스토리지 컨트롤러의 일 실시 예를 보여주는 블록도이다.
도 3은 도 2의 스토리지 컨트롤러의 구성을 보여주는 블록도이다.
도 4는 도 1의 네트워크 스토리지 컨트롤러의 다른 실시 예를 보여주는 블록도이다.
도 5는 본 발명의 다른 실시 예에 다른 네트워크 스토리지 컨트롤러를 보여주는 블록도이다.
도 6은 본 발명의 또 다른 실시 예에 다른 네트워크 스토리지 컨트롤러를 보여주는 블록도이다.
도 7은 본 발명의 NVM 클러스터의 일부를 보여주는 도면이다.
도 8은 본 발명의 NVM 클러스터의 다른 일부를 보여주는 도면이다.
도 9는 본 발명의 NVM 클러스터의 또 다른 일부를 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따라 구성 가능한 네트워크 스토리지 장치의 구성을 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 네트워크 스토리지 시스템의 예를 간략히 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 플래시 메모리 장치를 사용하는 솔리드 스테이트 드라이브(SSD)가 본 발명의 특징 및 기능을 설명하기 위한 스토리지 장치의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 네트워크 스토리지 시스템을 간략히 보여주는 블록도이다. 도 1을 참조하면, 네트워크 스토리지 시스템은 이더넷 스위치(100)와 네트워크 스토리지 장치(200)를 포함한다. 이더넷 스위치(100)를 통해서 호스트(미도시됨)는 네트워크 스토리지 장치(200)에 이더넷 프로토콜의 명령어와 데이터를 전달한다. 그러면, 네트워크 스토리지 장치(200)는 이더넷 프로토콜의 명령어 또는 데이터를 중간 프로토콜 계층(예를 들면, NVMe 프로토콜)으로의 변환 없이 직접 NVM 클러스터(280)에 전달되는 명령어 및 데이터로 변환할 수 있다.
이더넷 스위치(100)는 호스트에서 제공되는 명령어나 데이터를 네트워크 스토리지 장치(200)에 제공한다. 또는, 이더넷 스위치(100)는 호스트의 요청에 따라 네트워크 스토리지 장치(200)가 제공하는 데이터를 호스트로 전달한다. 즉, 이더넷 스위치(100)는 이더넷 프로토콜(Ethernet Protocol)을 사용하는 네트워크 페브릭이나 스위치일 수 있다. 이더넷 스위치(100)는 네트워크 스토리지 장치(200)에 명령어나 데이터를 전송할 때, NVMe-oF 스토리지 프로토콜을 포함하는 이더넷 프로토콜에 따라 전송할 것이다. 또한, 이더넷 스위치(100)는 네트워크 스토리지 장치(200)로부터 응답이나 데이터를 이더넷 프로토콜에 따라 교환할 것이다.
네트워크 스토리지 장치(200)는 이더넷 스위치(100)를 통해서 제공되는 명령어(CMD)나 데이터에 응답하여 NVM 클러스터(280)를 제어한다. NVM 클러스터(280)는 NVM 스위치들(230, 232, 234)과 불휘발성 메모리 장치들(240, 250, 260, 270)을 포함할 수 있다. 네트워크 스토리지 장치(200)는 이더넷 스위치(100)에서 제공되는 이더넷 프로토콜 포맷의 명령어나 데이터를 불휘발성 메모리 장치들(240, 250, 260, 270)을 제어하기 위한 명령어나 데이터 포맷으로 직접 변환할 수 있다. 이러한 기능을 수행하기 위해 네트워크 스토리지 장치(200)는 네트워크 스토리지 컨트롤러(210)를 포함한다. 스토리지 컨트롤러(210)에서는 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 계층에서 처리할 수 있다. 네트워크 스토리지 컨트롤러(210)는 싱글 칩(Single chip)으로 구현될 수 있다.
스토리지 컨트롤러(210)는 이더넷 스위치(100)와 네트워크 스토리지 장치(200) 사이에서 인터페이싱을 제공한다. 네트워크 스토리지 컨트롤러(210)는 이더넷 스위치(100)에서 제공되는 네트워크 전송 양식, 예를 들면, 이더넷 프로토콜 포맷(예를 들면, 패킷)의 명령어나 데이터를 불휘발성 메모리 장치들(240, 250, 260, 270)에 적용되는 명령어나 데이터 포맷으로 직접 변환할 수 있다. 네트워크 스토리지 컨트롤러(210)에서는 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 계층에서 처리할 수 있다. 네트워크 스토리지 컨트롤러(210)의 좀더 구체적인 동작은 후술하는 도면들에서 상세히 설명될 것이다.
버퍼 메모리(220)는 네트워크 스토리지 장치(200)와 이더넷 스위치(100) 사이의 데이터 교환을 위한 데이터 버퍼로 사용될 수 있다. 예를 들어, 버퍼 메모리(220)는 DRAM(Dynamic RAM)일 수 있다. 그러나 버퍼 메모리(220)는 이에 한정되는 것은 아니며, SRAM(Static RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리이거나, 또는 불휘발성 RAM(NV-RAM), 또는 이것들의 조합으로 구성될 수 있다.
NVM 클러스터(280)는 NVM 스위치들(230, 232, 234)과 불휘발성 메모리 장치들(240, 250, 260, 270)을 포함한다. 여기서, 불휘발성 메모리 장치들(240, 250, 260, 270)은 각각 불휘발성 메모리 어레이(NVM Array)로 구성될 수 있다. 즉, 불휘발성 메모리 장치(240)는 하나 이상의 NAND 플래시 메모리 장치를 포함할 수 있고, 나머지 불휘발성 메모리 장치(250, 260, 270)도 유사한 형태로 구성되거나 조합될 수 있다.
NVM 스위치들(230, 232, 234)은 네트워크 스토리지 컨트롤러(210)의 플래시 인터페이스(Flash Interface)에 불휘발성 메모리 장치를 확장 연결하기 위한 구성으로 제공된다. 예를 들면, NVM 스위치들(230, 232, 234) 각각은 연결되는 불휘발성 메모리 장치에 대한 어드레스 맵핑을 독립적으로 수행할 수 있다. NVM 스위치들(230, 232, 234)과 각각의 NVM 스위치들(230, 232, 234)과 연결되는 불휘발성 메모리 장치들의 구조는 후술하는 도면을 통해서 상세히 설명하기로 한다.
상술한 설명에 따르면, 본 발명의 네트워크 스토리지 장치(200)는 네트워크 프로토콜을 직접 불휘발성 메모리 장치를 제어하기 위한 명령어나 데이터 포맷으로 변환할 수 있는 네트워크 스토리지 컨트롤러(210)를 포함한다. 따라서, 네트워크 스토리지 컨트롤러(210)는 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 불휘발성 메모리 장치들(240, 250, 260, 270)에 로드/스토어(Load/Store)할 수 있다. 또한, 불휘발성 메모리 장치들(240, 250, 260, 270)은 NVM 스위치를 사용하여 용이하게 확장 가능하다.
도 2는 도 1의 네트워크 스토리지 컨트롤러의 일 실시 예를 보여주는 블록도이다. 도 2를 참조하면, 일 실시 예에 따른 네트워크 스토리지 컨트롤러(210a)는 스토리지 컨트롤러(214)를 포함할 수 있다.
스토리지 컨트롤러(214)는 내장형 CPU(211)를 사용하여 이더넷 스위치(100)와 NVM 클러스터(280) 사이에서 인터페이싱을 수행한다. 특히, 스토리지 컨트롤러(214)는 제 1 포트(PT1)를 통해서 이더넷 스위치(100)와 연결된다. 예를 들면, 제 1 포트(PT1)는 이더넷 스위치(100)와 연결을 위한 네트워크 인터페이스 기능을 수행할 수 있다.
스토리지 컨트롤러(214)는 제 2 포트(PT2)를 통해서 버퍼 메모리(220)와 데이터를 교환할 수 있다. 그리고 스토리지 컨트롤러(214)는 제 3 포트(PT3)를 통해서 NVM 클러스터(280)와 연결된다. 여기서 제 3 포트(PT3)는 도 1에 도시된 바와 같이 복수의 채널들(CH1, CH2, CH3)을 포함할 수 있다. 제 3 포트(PT3)가 제공하는 채널들 중 적어도 하나를 통하여, 스토리지 컨트롤러(214)는 NVM 클러스터(280) 중 불휘발성 메모리 어레이(NVM array)와 직접 연결될 수 있다. 또는, 제 3 포트(PT3)가 제공하는 채널들 중 적어도 하나를 통하여, 스토리지 컨트롤러(214)는 NVM 스위치들(230, 232)과 연결될 수 있다. 또는, 제 3 포트(PT3)가 제공하는 채널들 중 적어도 하나를 통하여, 스토리지 컨트롤러(214)는 캐스케이드 방식으로 연결되는 NVM 스위치들(Cascade NVM SWs)과 연결될 수 있다.
도 3은 도 2의 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 스토리지 컨트롤러(214)는 내장형 CPU(211), 워킹 메모리(213), 호스트 인터페이스(215), 버퍼 매니저(217) 및 플래시 인터페이스(219)를 포함할 수 있다.
내장형 CPU(211)는 NVM 클러스터(280)에 대한 읽기/쓰기 동작에 필요한 다양한 제어 정보를 호스트 인터페이스(215) 및 플래시 인터페이스(219)의 레지스터들에 전달한다. 내장형 CPU(211)는 네트워크 스토리지 컨트롤러(210)의 다양한 제어 동작을 위해 제공되는 펌웨어 또는 운영체제(OS)에 따라 동작할 수 있다. 예를 들면, 내장형 CPU(211)는 NVM 클러스터(280)를 관리하기 위한 가비지 컬렉션(Garbage collection)이나, 주소 맵핑, 웨어 레벨링 등을 수행하기 위한 플래시 변환 계층(FTL)을 실행할 수 있다. 특히, 내장형 CPU(211)는 워킹 메모리(213)에 로드되는 스토리지 매니저(216)를 호출하여 실행할 수 있다.
스토리지 매니저(216)의 실행에 따라, 내장형 CPU(211)는 이더넷 스위치(100)를 통해서 제공되는 명령어나 데이터에 대해 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 레이어(Layer)에서 처리할 수 있다. 더불어, CPU(211)는 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 NVM 클러스터(280)에 로드/스토어(Load/Store)할 수 있다.
워킹 메모리(213)는 내장형 CPU(211)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있다. 워킹 메모리(213)는 내장형 CPU(211)가 실행하는 코드들 및 명령들을 저장할 수 있다. 워킹 메모리(213)는 내장형 CPU(211)에 의해 처리되는 데이터를 저장할 수 있다. 워킹 메모리(213)는 예시적으로 SRAM(Static RAM)으로 구현될 수 있다. 특히, 워킹 메모리(213)에는 스토리지 매니저(216)가 로드될 수 있다. 스토리지 매니저(216)는 내장형 CPU(211)에 의해서 실행됨에 따라, 이더넷 스위치(100)에서 제공되는 명령어나 데이터의 전송 포맷 변환을 단일 레이어에서 처리할 수 있다. 더불어, 스토리지 매니저(216)는 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리할 수 있다. 더불어, 워킹 메모리(213)에는 플래시 변환 계층(FTL)이나 다양한 메모리 관리 모듈이 저장될 수 있다.
스토리지 매니저(216)는 NVM 클러스터(280)에 대한 제반 정보들을 수집하고 조정할 수 있다. 즉, 스토리지 매니저(216)는 NVM 클러스터(280)에 저장되는 데이터의 상태나 맵핑 정보를 유지, 업데이트할 수 있다. 따라서, 이더넷 스위치(100)로부터 접근 요청이 발생하더라도, 고속으로 요청한 데이터를 이더넷 스위치(100)에 제공하거나, 쓰기 요청된 데이터를 기입할 수 있다. 더불어, 스토리지 매니저(216)는 데이터의 어드레스를 관리하기 위한 맵핑 테이블(Mapping table)에 대한 관리 권한을 가지기 때문에, 필요시 NVM 클러스터(280) 간의 데이터 이동이나 맵핑 정보의 정정을 수행할 수 있다.
호스트 인터페이스(215)는 이더넷 스위치(100)와 통신을 수행할 수 있다. 호스트 인터페이스(215)는 이더넷 스위치(100)로부터 제공되는 네트워크 전송 양식을 포함하는 명령어를 인식할 수 있다. 예를 들면, 호스트 인터페이스(215)는 파이버 채널(Fiber channel), 인피니밴드(InfiniBand) 등의 고속 이더넷 시스템의 통신 프로토콜을 사용하여 이더넷 스위치(100)와 통신할 수 있다. 호스트 인터페이스(215)는 이더넷 스위치(100)로부터 전달되는 네트워크 전송 양식을 갖는 명령어를 변환하여 플래시 인터페이스(219) 측으로 전달할 수 있다. 또는, 호스트 인터페이스(215)는 플래시 인터페이스(219)를 통해서 제공되는 데이터를 네트워크 전송 양식을 포함하도록 변환하여 이더넷 스위치(100)에로 전달할 수 있을 것이다.
버퍼 매니저(217)는 버퍼 메모리(220, 도 1 참조)의 읽기 및 쓰기 동작들을 제어한다. 예를 들면, 버퍼 매니저(217)는 쓰기 데이터(Write data)나 읽기 데이터(Read data)를 버퍼 메모리(220)에 일시 저장한다. 버퍼 매니저(217)는 내장형 CPU(211)의 제어에 따라 버퍼 메모리(220)의 메모리 영역을 스트림 단위로 구분하여 관리할 수 있다.
플래시 인터페이스(219)는 NVM 클러스터(280)와 데이터를 교환한다. 플래시 인터페이스(219)는 버퍼 메모리(220)로부터 전달되는 데이터를 각각의 메모리 채널들(CH1, CH2, CH3)을 경유하여 NVM 클러스터(280)에 기입한다. 그리고 메모리 채널을 통하여 제공되는 NVM 클러스터(280)로부터의 읽기 데이터(Read data)는 플래시 인터페이스(219)에 의해서 취합된다. 취합된 데이터는 이후 버퍼 메모리(220)에 저장될 것이다.
상술한 구조의 스토리지 컨트롤러(214)는 이더넷 스위치(100)와의 통신을 위한 네트워크 프로토콜을 직접 플래시 메모리 레벨의 명령어나 데이터 변환할 수 있다. 따라서, 네트워크 페브릭을 통해서 제공되는 명령어나 데이터는 이더넷 네트워크 인터페이스 카드(Ethernet NIC), TCP/IP 오프로드 엔진, PCIe 스위치와 같은 순차적인 복수 단계의 변환(Translation) 과정을 거치지 않아도 된다. 이러한 특징에 따라, 이더넷 스위치(100)에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 NVM 클러스터(280)에 로드/스토어(Load/Store)할 수 있다.
특히, 스토리지 컨트롤러(214)는 싱글 칩(Single Chip)으로 구현 가능하다. 싱글 칩으로 구현되는 스토리지 컨트롤러(214)에 의해서, 본 발명의 네트워크 스토리지 장치(200)는 경박단소화된 사이즈로 제공될 수 있다. 따라서, 본 발명의 네트워크 스토리지 장치(200)는 네트워크 페브릭 상에서 낮은 레이턴시, 높은 경제성과 확장성을 제공할 수 있다.
도 4는 도 1의 네트워크 스토리지 컨트롤러의 다른 실시 예를 보여주는 블록도이다. 도 4를 참조하면, 다른 실시 예에 따른 네트워크 스토리지 컨트롤러(210b)는 외장형 프로세서(211b), 그리고 스토리지 컨트롤러(214b)를 포함할 수 있다.
스토리지 컨트롤러(214b)는 외장형 프로세서(211b)를 사용하여 이더넷 스위치(100)와 NVM 클러스터(280) 사이를 인터페이싱할 수 있다. 외장형 프로세서(211b)는 이더넷 스위치(100)로부터 전달되는 이더넷 프로토콜의 명령어나 데이터를 변환할 수 있다. 더불어, 외장형 프로세서(211b)는 이더넷 스위치(100)를 통해서 제공되는 요청에 따라 NVM 클러스터(280)에 저장된 데이터를 검색하거나 검색된 데이터를 이더넷 스위치(100)로 출력하도록 스토리지 컨트롤러(214b)를 제어할 수 있다. 외장형 프로세서(211b)는 네트워크 관리에 특화된 하나 또는 그 이상의 프로세서들을 포함할 수 있을 것이다.
외장형 프로세서(211b)는 스토리지 컨트롤러(214b)에 포함되는 내장형 프로세서의 기능을 수행할 수도 있으며, 내장형 프로세서와 워크로드를 분산 처리를 수행할 수 있다. 더불어, 외장형 프로세서(211b)는 네트워크 관리와 같은 호스트로부터 요청받은 별도 동작의 처리를 수행할 수도 있다.
스토리지 컨트롤러(214b)는 제 1 포트(PT1)를 통해서 이더넷 스위치(100)와 전기적으로 연결된다. 스토리지 컨트롤러(214b)는 제 2 포트(PT2)를 통해서 버퍼 메모리(220)와 데이터를 교환할 수 있다. 그리고 스토리지 컨트롤러(214b)는 제 3 포트(PT3)를 통해서 NVM 클러스터(280)와 연결된다. 여기서, 제 3 포트(PT3)는 도 1에 도시된 바와 같이 복수의 채널들(CH1, CH2, CH3)을 포함할 수 있다. 더불어, 스토리지 컨트롤러(214b)는 제 4 포트(PT4)를 통해서 외장형 프로세서(211b)에 연결될 수 있다. 스토리지 컨트롤러(214b)는 외장형 프로세서(211b)를 사용하여 프로토콜의 변환이나 NVM 클러스터(280)에 저장된 데이터의 검색, 또는 NVM 클러스터(280)로의 데이터 로드/스토어 동작을 수행할 수 있다. 제 4 포트(PT4)는 예를 들면, 복수의 프로세서들과 연결 가능한 PCIe 인터페이스로 제공될 수 있지만, 본 발명은 여기에만 국한되지는 않는다. 스토리지 컨트롤러(214b)는 외장형 프로세서(211b)의 제어에 따르는 점을 제외하면, 도 3의 스토리지 컨트롤러(214a)와 유사한 구성 및 기능을 가질 수 있다. 여기서, 스토리지 컨트롤러(214b)는 하나의 칩으로 구성될 수 있고, 네트워크 스토리지 컨트롤러(210b)는 하나의 PCB 보드 상에 구현될 수 있다.
도 5는 본 발명의 다른 실시 예에 다른 네트워크 스토리지 컨트롤러(210c)를 보여주는 블록도이다. 도 5를 참조하면, 네트워크 스토리지 컨트롤러(210c)는 하나의 칩으로 구현 가능하다.
네트워크 스토리지 컨트롤러(210c)는 이더넷 스위치(100)와 연결되는 제 1 포트(PT1)를 포함한다. 제 1 포트(PT1)는 파이버 채널(Fiber channel), 인피니밴드(InfiniBand) 등의 고속 이더넷 시스템과 네트워크 스토리지 컨트롤러(210c)를 연결하기 위한 하드웨어 포트일 수 있다. 제 1 포트(PT1)는 호스트 인터페이스(215)에 이더넷 프로토콜의 명령어 또는 데이터를 전달할 것이다. 호스트 인터페이스(215)는 이더넷 스위치(100)와 이더넷 프로토콜에 따라 통신을 수행할 수 있다. 예를 들면, 파이버 채널(Fiber channel), 인피니밴드(InfiniBand) 등의 고속 이더넷 시스템의 통신 프로토콜은 호스트 인터페이스(215)에 의해서 NVM 클러스터(280)를 제어하기 위한 전송 양식으로 변환될 수 있다.
버퍼 매니저(217)는 버퍼 메모리(220, 도 1 참조)의 읽기 및 쓰기 동작들을 제어한다. 예를 들면, 버퍼 매니저(217)는 쓰기 데이터(Write data)나 읽기 데이터(Read data)를 버퍼 메모리(220)에 일시 저장한다. 버퍼 매니저(217)는 내장형 CPU(211c)의 제어에 따라 버퍼 메모리(220)의 메모리 영역을 스트림 단위로 구분하여 관리할 수 있다.
플래시 인터페이스(219)는 NVM 클러스터(280)와 데이터를 교환한다. 플래시 인터페이스(219)는 버퍼 메모리(220)로부터 전달되는 데이터를 각각의 메모리 채널들을 경유하여 NVM 클러스터(280)에 기입한다. 그리고 메모리 채널을 통하여 제공되는 NVM 클러스터(280)로부터의 읽기 데이터(Read data)는 플래시 인터페이스(219)에 의해서 취합된다. 취합된 데이터는 이후 버퍼 메모리(220)에 저장될 것이다.
내장형 CPU(211c)는 NVM 클러스터(280)에 대한 읽기/쓰기 동작에 필요한 다양한 제어 정보를 호스트 인터페이스(215) 및 플래시 인터페이스(219)의 레지스터들에 전달한다. 내장형 CPU(211c)는 스토리지 컨트롤러(210c)의 다양한 제어 동작을 위해 제공되는 펌웨어 또는 운영체제(OS)에 따라 동작할 수 있다. 예를 들면, 내장형 CPU(211c)는 NVM 클러스터(280)를 관리하기 위한 가비지 컬렉션(Garbage collection)이나, 주소 맵핑, 웨어 레벨링 등을 수행하기 위한 플래시 변환 계층(FTL)을 실행할 수 있다. 특히, 내장형 CPU(211c)는 워킹 메모리(213)에 로드되는 운영 체제(OS)나 관리 모듈을 호출하여 실행할 수 있다. 내장형 CPU(211c)는 네트워크 스토리지 컨트롤러(210c)에 제공되는 명령어나 데이터에 대해 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 레이어(Layer)에서 처리할 수 있다.
이상에서 설명된 다른 실시 예의 네트워크 스토리지 컨트롤러(210c)는 네트워크 인터페이싱을 직접 수행하며, 내장형 CPU(211c)를 포함할 수 있다. 따라서, 네트워크 스토리지 컨트롤러(210c)는 이더넷 스위치(100)에 직접 연결되어, NVM 클러스터(280)를 제어할 수 있다.
도 6은 본 발명의 또 다른 실시 예에 다른 네트워크 스토리지 컨트롤러(210d)를 보여주는 블록도이다. 도 6을 참조하면, 네트워크 스토리지 컨트롤러(210d)는 외장형 프로세서(211d)를 사용하여 NVM 클러스터(280)와 이더넷 스위치(100)와의 인터페이싱을 수행할 수 있다.
네트워크 스토리지 컨트롤러(210d)는 이더넷 스위치(100)와 연결되는 제 1 포트(PT1)를 포함한다. 제 1 포트(PT1)는 파이버 채널(Fiber channel), 인피니밴드(InfiniBand) 등의 고속 이더넷 시스템과 네트워크 스토리지 컨트롤러(210d)를 연결하기 위한 하드웨어 포트일 수 있다. 제 1 포트(PT1)는 이더넷 스위치(100)로부터 제공되는 이더넷 프로토콜의 명령어 또는 데이터를 수신할 것이다. 제 1 포트(PT1)는 수신된 명령어나 데이터를 호스트 인터페이스(215)에 전달한다. 여기서, 내장형 CPU(211c), 워킹 메모리(213), 호스트 인터페이스(215), 버퍼 매니저(217), 플래시 인터페이스(219)는 도 5의 그것들과 동일하게 구성될 수 있다.
반면, 네트워크 스토리지 컨트롤러(210d)는 외장형 프로세서(211d)를 사용하여 이더넷 스위치(100)와 NVM 클러스터(280) 사이를 인터페이싱할 수 있다. 외장형 프로세서(211d)는 이더넷 스위치(100)로부터 전달되는 이더넷 프로토콜의 명령어나 데이터를 변환할 수 있다. 더불어, 외장형 프로세서(211d)는 이더넷 스위치(100)로부터 제공되는 요청에 따라 NVM 클러스터(280)에 저장된 데이터를 검색하거나 검색된 데이터를 이더넷 스위치(100)로 출력하도록 네트워크 스토리지 컨트롤러(210d)를 제어할 수 있다. 외장형 프로세서(211d)는 스토리지 컨트롤러(214b)에 포함되는 내장형 CPU(211c)와 워크로드를 분산 처리할 수도 있다. 예시적으로, 내장형 CPU(211c)의 제어에 따라 외장형 프로세서(211b)는 할당된 명령어를 처리할 수 있을 것이다. 더불어, 외장형 프로세서(211b)는 네트워크 관리와 같은 호스트로부터 요청받은 별도 동작의 처리를 수행할 수도 있다. 외장형 프로세서(211d)는 하나 또는 적어도 둘 이상의 프로세서들을 포함할 수 있을 것이다. 외장형 프로세서(211d)와 네트워크 스토리지 컨트롤러(210d)를 연결하기 위한 제 4 포트(PT4)가 제공된다. 외장형 프로세서(211d)와 네트워크 스토리지 컨트롤러(210d)는 예를 들면, PCIe 인터페이스를 지원하는 제 4 포트(PT4)를 통해서 통신할 수 있다.
도 7은 본 발명의 NVM 클러스터의 일부를 보여주는 도면이다. 도 7을 참조하면, NVM 어레이(240)는 네트워크 스토리지 컨트롤러(210)에 직접 연결되어 데이터를 교환할 수 있다.
NVM 어레이(240)는, 예를 들면, NAND 플래시 메모리 장치들(Raw NAND_11, Raw NAND_12, Raw NAND_13, …, Raw NAND_1i, i는 3보다 큰 자연수)을 포함할 수 있다. NAND 플래시 메모리 장치들(Raw NAND_11, Raw NAND_12, Raw NAND_13, …, Raw NAND_1i) 각각은 제 1 채널(CH1)과 디바이스 사이에 별도의 인터페이스나 스위치를 포함하지 않을 것이다. NAND 플래시 메모리 장치들(Raw NAND_11, Raw NAND_12, Raw NAND_13, …, Raw NAND_1i)은 단일 디바이스들의 조합이거나, 복수의 디바이스들이 포함되는 하나의 패키지 단위로 제공될 수 있다.
NAND 플래시 메모리 장치들(Raw NAND_11, Raw NAND_12, Raw NAND_13, …, Raw NAND_1i) 각각은 제 1 채널(CH1)에 연결된다. 예를 들면, 제 1 채널(CH1)은 동일한 데이터 라인(DQ)을 공유하는 NAND 플래시 메모리 장치들(Raw NAND_11, Raw NAND_12, Raw NAND_13, …, Raw NAND_1i)과 네트워크 스토리지 컨트롤러(210) 사이의 데이터 경로일 수 있다. 즉, 제 1 채널(CH1)에 연결되는 NAND 플래시 메모리 장치들(Raw NAND_11, Raw NAND_12, Raw NAND_13, …, Raw NAND_1i)은 동일한 데이터 라인(DQ)을 공유할 수 있을 것이다. 제 1 채널(CH1)을 통해서 네트워크 스토리지 컨트롤러(210)의 플래시 인터페이스(219)는 NAND 플래시 메모리 장치들(Raw NAND_11, Raw NAND_12, Raw NAND_13, …, Raw NAND_1i) 중 어느 하나를 선택하거나 채널-웨이(Channel-Way) 인터리빙 제어를 할 수 있다.
도 8은 본 발명의 NVM 클러스터의 다른 일부를 보여주는 도면이다. 도 8을 참조하면, NVM 어레이(250)는 NVM 스위치(230)를 통해서 네트워크 스토리지 컨트롤러(210)에 연결될 수 있다.
NVM 스위치(230)는 제 2 채널(CH2)에 의해서 네트워크 스토리지 컨트롤러(210)와 통신한다. 예를 들면, NVM 스위치(230)는 제 2 채널(CH2)을 통해서 네트워크 스토리지 컨트롤러(210)의 플래시 인터페이스(219, 도 2 참조)와 연결될 것이다. 플래시 인터페이스(219)는 제 1 채널(CH1)과는 독립적으로 제 2 채널(CH2)을 사용하여 NVM 스위치(230) 및 NVM 어레이(250)에 접근할 수 있다.
NVM 스위치(230)는 예시적으로 스위치 컨트롤러(231)와 버퍼(233)를 포함할 수 있다. 스위치 컨트롤러(231)는 제 2 채널(CH2)을 통해서 제공되는 어드레스와 NVM 어레이(250)의 실제 어드레스를 맵핑하기 위한 어드레스 맵핑 기능을 수행할 수 있다. 스위치 컨트롤러(231)는 메모리 채널(CH2_1)에 연결되는 NVM 어레이(250)의 어드레스를 플래시 인터페이스(219)가 제공하는 어드레스와 맵핑시킬 수 있다. 스위치 컨트롤러(231)는 NVM 어레이(250)에 추가되거나 제거되는 디바이스가 존재하는 경우, 어드레스 맵핑을 업데이트할 수도 있다. 버퍼(233)는 네트워크 스토리지 컨트롤러(210)와 NVM 어레이(250) 사이에서 교환되는 데이터를 일시 저장할 수 있다. 버퍼(233)는 예를 들면 디램(DRAM)과 같은 휘발성 메모리 장치로 구현될 수 있다.
NVM 어레이(250)는, 예를 들면, NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j, j는 3보다 큰 자연수)을 포함할 수 있다. NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j) 각각은 스위치 컨트롤러(230)의 제어에 따라 선택될 수 있다. NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j)은 단일 디바이스들의 조합 또는 복수의 디바이스들이 포함되는 하나의 패키지 단위로 제공될 수 있다.
NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j) 각각은 메모리 채널(CH2_1)에 연결된다. 예를 들면, 메모리 채널(CH2_1)은 동일한 데이터 라인(DQ)을 공유하는 NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j)과 NVM 스위치(230) 사이의 데이터 경로일 수 있다. 즉, 메모리 채널(CH2_1)에 연결되는 NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j)은 동일한 데이터 라인을 공유할 수 있을 것이다.
이상에서는 NVM 스위치(230)를 통해서 NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j)이 네트워크 스토리지 컨트롤러(210)에 연결되는 예가 설명되었다. 여기서, NVM 스위치(230)에 하나의 메모리 채널(CH2_1)이 구비되는 것으로 설명되었으나, 본 발명은 여기에 국한되지 않음은 잘 이해될 것이다. 즉, NVM 스위치(230)에 둘 이상의 메모리 채널들이 연결되고, 복수의 NVM 어레이들이 연결될 수도 있음은 잘 이해될 것이다.
실질적으로 PCIe 스위치를 통한 SSD의 확장에는 한계가 있다. 하지만, NVM 스위치(230)를 통하여 디바이스 단위의 NAND 플래시 메모리 장치들(Raw NAND_21, Raw NAND_22, Raw NAND_23, …, Raw NAND_2j)을 확장하는 데는 이론적으로 제한이 존재하지 않는다. 따라서, 본 발명의 기술을 사용하는 경우, 네트워크 스토리지 장치(200)의 용량 확장은 용이하게 구현될 수 있다.
도 9는 본 발명의 NVM 클러스터의 또 다른 일부를 보여주는 도면이다. 도 9를 참조하면, NVM 어레이들(260, 270)은 NVM 스위치들(232, 234)을 통해서 네트워크 스토리지 컨트롤러(210)에 연결될 수 있다. 여기서, NVM 스위치들(232, 234)은 캐스케이드(Cascade) 연결 구조를 가질 수 있다.
NVM 스위치(232)는 제 3 채널(CH3)에 의해서 네트워크 스토리지 컨트롤러(210)와 연결된다. NVM 스위치(232)는 제 3 채널(CH3)을 통해서 네트워크 스토리지 컨트롤러(210)의 플래시 인터페이스(219, 도 2 참조)와 연결될 것이다. 플래시 인터페이스(219)는 제 1 채널(CH1)이나 제 2 채널(CH2)과는 독립적으로 제 3 채널(CH3)을 사용하여 NVM 스위치(232)에 접근할 수 있다.
NVM 스위치(232)는 예시적으로 스위치 컨트롤러(235)와 버퍼(237)를 포함할 수 있다. 스위치 컨트롤러(235)는 제 3 채널(CH3)을 통해서 제공되는 어드레스와 NVM 어레이(270) 및 캐스케이드 형태로 연결된 NVM 스위치(234)의 어드레스를 맵핑하기 위한 어드레스 맵핑 기능을 수행할 수 있다. 스위치 컨트롤러(235)는 메모리 채널(CH3_1)에 연결되는 NVM 어레이(270)의 어드레스를 플래시 인터페이스(219)가 제공하는 어드레스와 맵핑시킬 수 있다. 그리고 스위치 컨트롤러(235)는 메모리 채널(CH3_2)에 연결되는 NVM 스위치(234)의 어드레스를 플래시 인터페이스(219)가 제공하는 어드레스와 맵핑시킬 수 있다. 여기서, NVM 스위치(232)는 스위치 컨트롤러(235)와 버퍼(237)를 포함할 수 있다. 스위치 컨트롤러(235)는 제 3 채널(CH3)을 통해서 제공되는 어드레스와 NVM 어레이(270) 및 캐스케이드 형태로 연결된 NVM 스위치(234)의 어드레스를 맵핑하기 위한 어드레스 맵핑 기능을 수행할 수 있다.
NVM 스위치(234)는 메모리 채널(CH3_2)에 의해서 NVM 스위치(232)와 연결된다. NVM 스위치(234)는 메모리 채널(CH3_3)을 통해서 NVM 어레이(260)와 연결될 것이다. NVM 스위치(234)도 스위치 컨트롤러(236)와 버퍼(238)를 포함할 수 있다.
스위치 컨트롤러(232) 또는 스위치 컨트롤러(234)는 추가되는 메모리 포트(메모리 채널)를 통해서 추가 NVM 어레이나 NVM 스위치를 인식하고 인터페이싱을 수행할 수 있다. 여기서, NVM 어레이들(260, 270)을 구성하는 NAND 플래시 메모리 장치들(Raw NAND_31, Raw NAND_32, Raw NAND_33, …, Raw NAND_3k, Raw NAND_41, Raw NAND_42, Raw NAND_43, …, Raw NAND_4m)은 단일 디바이스들의 조합 또는 복수의 디바이스들이 포함되는 패키지 단위로 제공될 수 있다.
이상에서는 NVM 스위치들(230, 232, 234)을 통해서 NVM 어레이들(240, 250, 260, 270)이 네트워크 스토리지 컨트롤러(210)에 연결되는 예가 설명되었다. 여기서, NVM 스위치들(230, 232, 234)은 캐스케이드 방식으로도 연결 가능하며, SSD 단위가 아닌 NVM 단품이나 어레이 단위와 연결될 수 있다. 실질적으로 PCIe 스위치를 통한 SSD의 확장에는 한계가 있다. 하지만, NVM 스위치들(230, 232, 234)을 통하여 디바이스 단위로 스토리지 용량을 확장하는 데에는 이론적으로 제한이 존재하지 않는다. 따라서, 본 발명의 기술을 사용하는 경우, 용이한 네트워크 스토리지 장치(200)의 용량 확장이 가능하다.
도 10은 본 발명의 실시 예에 따라 구성 가능한 네트워크 스토리지 장치의 구성을 보여주는 블록도이다. 도 10을 참조하면, 네트워크 스토리지 장치(300)는 이더넷 스위치(100)와 인터페이싱을 수행하기 위한 네트워크 스토리지 컨트롤러(310)와 외장형 프로세서(305), 버퍼 메모리(330), 그리고 직접 NVM 클러스터(380)를 포함할 수 있다. 외장형 프로세서(305)는 특정 목적을 위해 제공되는 프로세서나 연산 장치, 또는 가속 엔진으로 구현될 수 있다.
이더넷 스위치(100)를 통해서 서버나 데이터 센터와 같은 호스트(미도시됨)는 네트워크 스토리지 장치(300)에 이더넷 프로토콜의 명령어와 데이터를 전달한다. 그러면, 네트워크 스토리지 장치(300)는 이더넷 프로토콜의 명령어 또는 데이터를 PCIe 프로토콜로의 변환없이 직접 NVM 클러스터(380)에 전달되는 명령어 및 데이터로 변환할 수 있다.
네트워크 스토리지 컨트롤러(310)는 이더넷 스위치(100)를 통해서 제공되는 이더넷 프로토콜의 명령어나 데이터에 응답하여 NVM 클러스터(380)를 제어한다. 특히, 네트워크 스토리지 컨트롤러(310)는 외장형 프로세서(305)에 의해서 제어될 수 있다. 대용량의 NVM 클러스터(380)와의 데이터 교환과 데이터나 명령어를 처리하기 위해서, 외장형 CPU(305)는 하나 이상의 프로세서들로 구성될 수 있음은 잘 이해될 것이다. 외장형 프로세서(305)는 필요시 네트워크 스토리지 컨트롤러(310)의 내부에 임베디드 CPU로 제공될 수도 있을 것이다.
네트워크 스토리지 컨트롤러(310)에서는 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 계층에서 처리할 수 있다. 네트워크 스토리지 컨트롤러(310)는 이더넷 스위치(100)와 네트워크 스토리지 장치(300) 사이에서 인터페이싱을 제공한다. 네트워크 스토리지 컨트롤러(310)는 이더넷 스위치(100)에서 제공되는 이더넷 프로토콜 포맷(예를 들면, 패킷)의 명령어나 데이터를 NVM 클러스터(380)에 적용되는 명령어나 데이터 포맷으로 직접 변환할 수 있다. 네트워크 스토리지 컨트롤러(310)에서는 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 계층에서 처리할 수 있다.
버퍼 메모리(330)는 네트워크 스토리지 장치(300)와 이더넷 스위치(100) 사이의 데이터 교환을 위한 데이터 버퍼로 사용될 수 있다. 예를 들어, 버퍼 메모리(330)는 DRAM(Dynamic RAM)일 수 있다. 그러나 버퍼 메모리(330)는 이에 한정되는 것은 아니며, SRAM(Static RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리이거나, 또는 불휘발성 RAM(NV-RAM), 또는 이것들의 조합으로 구성될 수 있다.
NVM 클러스터(380)는 적어도 하나의 NVM 스위치(330, 332, 334, 326, 338)와 적어도 하나의 NVM 어레이(340, 350, 352, 354, 360, 362, 370, 372, 374)를 포함할 수 있다. 여기서, NVM 어레이(340, 350, 352, 354, 360, 362, 370, 372, 374)는 각각 불휘발성 메모리 장치들의 어레이로 구성될 수 있다. 즉, NVM 어레이(340, 350, 352, 354, 360, 362, 370, 372, 374) 각각은 복수의 NAND 플래시 메모리 장치들을 포함할 수 있다.
NVM 스위치(330, 332, 334, 326, 338)는 네트워크 스토리지 컨트롤러(310)의 플래시 인터페이스(Flash Interface)에 불휘발성 메모리 장치를 확장 연결하기 위한 구성으로 제공된다. 예를 들면, NVM 스위치(330, 332, 334, 326, 338) 각각은 연결되는 불휘발성 메모리 장치나 불휘발성 메모리 장치 어레이에 대한 어드레스 맵핑을 독립적으로 수행할 수 있다.
NVM 스위치(330)는 3개 NVM 어레이(350, 352, 354)와 연결되어 네트워크 스토리지 컨트롤러(310)와의 인터페이싱을 수행할 수 있다. NVM 스위치(332)는 NVM 스위치(334)와 네트워크 스토리지 컨트롤러(310)와의 인터페이싱을 수행할 수 있다. NVM 스위치(334)는 NVM 스위치(336)와 NVM 어레이(360)를 제어할 수 있다. NVM 스위치(336)는 NVM 스위치(338)와 NVM 어레이(362)를 제어할 수 있다. 그리고 NVM 스위치(338)는 3개 NVM 어레이(370, 372, 374)와 연결되어 NVM 스위치(336)와의 인터페이싱을 수행할 수 있다.
이상에서는 네트워크 스토리지 컨트롤러(310)에 연결될 수 있는 NVM 스위치(330, 332, 334, 326, 338)와 NVM 어레이(340, 350, 352, 354, 360, 362, 370, 372, 374)의 연결 형태가 간략히 설명되었다. 물론, NVM 어레이(340)와 같이 NVM 스위치를 사용하지 않고, 네트워크 스토리지 컨트롤러(310)에 연결될 수도 있음은 잘 이해될 것이다.
도 11은 본 발명의 실시 예에 따른 네트워크 스토리지 시스템의 예를 간략히 보여주는 블록도이다. 도 11을 참조하면, 본 발명의 네트워크 스토리지 시스템(1000)은 서버(1100), 네트워크 페브릭(1200), 그리고 복수의 이더넷 SSD들(1300, 1400)을 포함할 수 있다.
서버(1100)는 네트워크 페브릭(1200)을 통해서 복수의 이더넷 SSD들(1300, 1400)과 연결된다. 서버(1100)는 복수의 이더넷 SSD들(1300, 1400)에 명령어와 데이터를 이더넷 프로토콜을 사용하여 전송할 수 있다. 그리고 서버(1100)는 복수의 이더넷 SSD들(1300, 1400) 중 적어도 하나로부터 제공되는 이더넷 프로토콜의 데이터를 수신할 수 있다. 네트워크 페브릭(1200)은 네트워크 스위치일 수 있다.
복수의 이더넷 SSD들(1300, 1400) 각각은 앞서 설명된 도 1 또는 도 10의 스토리지 장치로 제공될 수 있다. 즉, 이더넷 SSD(1300)와 같이 네트워크 스토리지 컨트롤러(1310)는 NVM 스위치를 경유하지 않고 직접 NVM 어레이(1320)에 연결될 수 있다. 반면, 이더넷 SSD(1400)에 포함되는 네트워크 스토리지 컨트롤러(1410)는 NVM 스위치(1412, 1414)를 통해서 NVM 어레이들(1422, 1424)을 제어할 수 있다. 물론, 이더넷 SSD 컨트롤러(1410)는 NVM 스위치를 사용하지 않고, 직접 NVM 어레이(1420)를 제어할 수 있음은 잘 이해될 것이다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 네트워크 페브릭에 연결되는 네트워크 스토리지 장치에 있어서:
    상기 네트워크 페브릭과의 인터페이싱을 수행하고, 상기 네트워크 페브릭을 통해서 제공되는 명령어를 변환하여 실행하는 네트워크 스토리지 컨트롤러; 그리고
    상기 네트워크 스토리지 컨트롤러의 제어에 따라 상기 네트워크 스토리지 컨트롤러와 데이터를 교환하는 불휘발성 메모리 클러스터를 포함하되,
    상기 불휘발성 메모리 클러스터는:
    상기 네트워크 스토리지 컨트롤러와 제 1 채널을 통해서 직접 연결되는 적어도 하나의 제 1 불휘발성 메모리 어레이;
    상기 네트워크 스토리지 컨트롤러와 제 2 채널을 통해서 직접 연결되는 불휘발성 메모리 스위치; 그리고
    상기 불휘발성 메모리 스위치의 제어에 따라 상기 네트워크 스토리지 컨트롤러와 통신하는 적어도 하나의 제 2 불휘발성 메모리 어레이를 포함하고,
    상기 네트워크 스토리지 컨트롤러는 상기 네트워크 페브릭에 연결된 공통의 제1 포트를 통해 상기 적어도 하나의 제1 불휘발성 메모리 어레이 및 상기 적어도 하나의 제2 불휘발성 메모리 어레이에 대한 제1 명령어들을 수신하고, 상기 제1 명령어들을 상기 적어도 하나의 제1 불휘발성 메모리 어레이 및 상기 적어도 하나의 제2 불휘발성 메모리 어레이를 제어하기 위한 제2 명령어들로 변환하고, 그리고 상기 제2 명령어들을 상기 적어도 하나의 제1 불휘발성 메모리 어레이로 그리고 상기 불휘발성 메모리 스위치를 통해 상기 적어도 하나의 제2 불휘발성 메모리 어레이로 독립적으로 전송하도록 구성되고, 그리고
    상기 제 1 명령어들은 네트워크 전송 양식을 포함하는 네트워크 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 네트워크 스토리지 장치는 버퍼 메모리를 더 포함하고,
    상기 네트워크 스토리지 컨트롤러는:
    상기 네트워크 페브릭과의 통신을 위한 상기 공통의 제 1 포트;
    상기 버퍼 메모리와의 통신을 위한 제 2 포트; 그리고
    상기 불휘발성 메모리 클러스터와의 통신을 위한 제 3 포트를 더 포함하는 네트워크 스토리지 장치.
  3. 제 1 항에 있어서,
    상기 공통의 제 1 포트는 상기 네트워크 전송 양식을 지원하는 인터페이스를 포함하는 네트워크 스토리지 장치.
  4. 제 1 항에 있어서,
    상기 네트워크 전송 양식은 고속 이더넷 시스템을 포함하는 네트워크 스토리지 장치.
  5. 제 1 항에 있어서,
    상기 네트워크 스토리지 컨트롤러는:
    상기 네트워크 페브릭으로부터 상기 제 1 명령어들을 상기 제 2 명령어들로 변환하고, 상기 제 2 명령어들에 따라 상기 적어도 하나의 제1 불휘발성 메모리 어레이 및 상기 적어도 하나의 제2 불휘발성 메모리 어레이를 제어하는 스토리지 컨트롤러; 그리고
    상기 스토리지 컨트롤러의 요청에 따라 상기 적어도 하나의 제1 불휘발성 메모리 어레이 및 상기 적어도 하나의 제2 불휘발성 메모리 어레이에 대한 명령들을 수행하는 외장형 연산 장치를 포함하는 네트워크 스토리지 장치.
  6. 제 5 항에 있어서,
    상기 외장형 연산 장치는 상기 제 1 명령어들 또는 상기 제 2 명령어들을 상기 스토리지 컨트롤러와 분산 처리하거나 단독으로 처리하는 하나 또는 그 이상의 프로세서이거나 가속 엔진인 네트워크 스토리지 장치.
  7. 제 1 항에 있어서,
    상기 네트워크 스토리지 컨트롤러는:
    상기 네트워크 페브릭으로부터 상기 제 1 명령어들을 수신하는 호스트 인터페이스;
    상기 제 1 명령어들을 상기 제 2 명령어들로 변환하고, 상기 제 2 명령어들에 따라 상기 적어도 하나의 제1 불휘발성 메모리 어레이 및 상기 적어도 하나의 제2 불휘발성 메모리 어레이에 대한 명령들을 수행하는 스토리지 컨트롤러; 그리고
    상기 스토리지 컨트롤러의 제어에 따라 상기 적어도 하나의 제1 불휘발성 메모리 어레이 및 상기 적어도 하나의 제2 불휘발성 메모리 어레이에 접근하는 인터페이스를 포함하는 네트워크 스토리지 장치.
  8. 네트워크 스토리지 장치에 있어서:
    네트워크 스위치를 통해 제공되는 제 1 명령어를 불휘발성 메모리를 제어하기 위한 제 2 명령어로 변환하고, 상기 제 2 명령어를 인터페이스를 사용하여 출력하는 스토리지 컨트롤러; 그리고
    상기 스토리지 컨트롤러로부터 출력되는 상기 제 2 명령어에 따라 쓰기 데이터를 저장하거나, 저장된 데이터를 상기 스토리지 컨트롤러에 출력하는 불휘발성 메모리 클러스터를 포함하되,
    상기 스토리지 컨트롤러는 상기 불휘발성 메모리 클러스터에 대한 명령을 수행하는 하나 또는 그 이상의 외장형 연산 장치를 포함하고,
    상기 외장형 연산 장치는 호스트의 요청에 따른 명령어를 처리하는 하나 또는 그 이상의 프로세서들을 포함하고, 그리고
    상기 외장형 연산 장치는 상기 호스트의 요청에 따른 네트워크 관리 동작을 수행하는 네트워크 스토리지 장치.
  9. 제 8 항에 있어서,
    상기 제 1 명령어는 네트워크 전송 양식을 갖고, 상기 제 2 명령어는 상기 불휘발성 메모리를 제어하기 위한 양식을 갖는 네트워크 스토리지 장치.
  10. 제 8 항에 있어서,
    상기 스토리지 컨트롤러는 내장형 연산 장치를 포함하며,
    상기 외장형 연산 장치는, 상기 제 1 명령어 또는 상기 제 2 명령어를 상기 내장형 연산 장치와 분산 처리하는 하나 또는 그 이상의 프로세서들을 포함하는 네트워크 스토리지 장치.
  11. 제 8 항에 있어서,
    상기 불휘발성 메모리 클러스터는, 상기 스토리지 컨트롤러와 제 1 채널을 통해서 연결되며, 상기 인터페이스를 통해서 제어되는 제 1 불휘발성 메모리 어레이를 포함하는 네트워크 스토리지 장치.
  12. 제 11 항에 있어서,
    상기 불휘발성 메모리 클러스터는 제 2 불휘발성 메모리 어레이를 더 포함하고,
    상기 스토리지 컨트롤러와 제 2 채널을 통해서 연결되며, 상기 제 2 불휘발성 메모리 어레이와 상기 인터페이스 사이에서 인터페이싱을 수행하는 제 1 불휘발성 메모리 스위치를 더 포함하는 네트워크 스토리지 장치.
  13. 제 12 항에 있어서,
    상기 제 1 불휘발성 메모리 스위치는:
    상기 인터페이스에서 제공하는 제 1 어드레스를 상기 제 2 불휘발성 메모리 어레이와 맵핑하는 제 1 스위치 컨트롤러; 그리고
    상기 인터페이스와 상기 제 2 불휘발성 메모리 어레이 사이에서 전달되는 데이터를 버퍼링하는 제 1 버퍼를 포함하는 네트워크 스토리지 장치.
  14. 제 13 항에 있어서,
    상기 불휘발성 메모리 클러스터는:
    제 3 불휘발성 어레이; 그리고
    상기 제 1 불휘발성 메모리 스위치와 상기 제 3 불휘발성 메모리 어레이 사이에서 인터페이싱을 수행하는 제 2 불휘발성 메모리 스위치를 더 포함하는 네트워크 스토리지 장치.
  15. 제 14 항에 있어서,
    상기 제 1 내지 제 2 불휘발성 메모리 스위치들은 상호 독립적으로 어드레스 맵핑을 수행하는 네트워크 스토리지 장치.
  16. 네트워크 스토리지 장치에 있어서:
    네트워크 스위치를 통해 제공되는 제 1 명령어를 불휘발성 메모리를 제어하기 위한 제 2 명령어로 변환하고, 상기 제 2 명령어를 인터페이스를 사용하여 출력하는 스토리지 컨트롤러; 그리고
    상기 스토리지 컨트롤러로부터 출력되는 상기 제 2 명령어에 따라 쓰기 데이터를 저장하거나, 저장된 데이터를 상기 스토리지 컨트롤러에 출력하는 불휘발성 메모리 클러스터를 포함하되,
    상기 스토리지 컨트롤러는 상기 불휘발성 메모리 클러스터에 대한 명령을 수행하는 하나 또는 그 이상의 외장형 연산 장치를 포함하고,
    상기 스토리지 컨트롤러는 내장형 연산 장치를 포함하며,
    상기 외장형 연산 장치는, 상기 제 1 명령어 또는 상기 제 2 명령어를 상기 내장형 연산 장치와 분산 처리하는 하나 또는 그 이상의 프로세서들을 포함하는 네트워크 스토리지 장치.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020180044420A 2018-04-17 2018-04-17 대용량 데이터를 저장하는 네트워크 스토리지 장치 KR102637166B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020180044420A KR102637166B1 (ko) 2018-04-17 2018-04-17 대용량 데이터를 저장하는 네트워크 스토리지 장치
US16/196,941 US11290533B2 (en) 2018-04-17 2018-11-20 Network storage device storing large amount of data
CN201910197641.3A CN110392092B (zh) 2018-04-17 2019-03-15 与网络结构连接的网络存储设备
JP2019058273A JP7210353B2 (ja) 2018-04-17 2019-03-26 大容量データを格納するネットワークストレージデバイス
SG10201902874Q SG10201902874QA (en) 2018-04-17 2019-03-29 Network storage device storing large amount of data
EP22185333.6A EP4095668A1 (en) 2018-04-17 2019-04-12 Network storage device storing large amount of data
EP19169055.1A EP3557429A3 (en) 2018-04-17 2019-04-12 Network storage device storing large amount of data
US17/671,693 US20220174115A1 (en) 2018-04-17 2022-02-15 Network storage device storing large amount of data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180044420A KR102637166B1 (ko) 2018-04-17 2018-04-17 대용량 데이터를 저장하는 네트워크 스토리지 장치

Publications (2)

Publication Number Publication Date
KR20190120992A KR20190120992A (ko) 2019-10-25
KR102637166B1 true KR102637166B1 (ko) 2024-02-16

Family

ID=66175301

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180044420A KR102637166B1 (ko) 2018-04-17 2018-04-17 대용량 데이터를 저장하는 네트워크 스토리지 장치

Country Status (6)

Country Link
US (2) US11290533B2 (ko)
EP (2) EP4095668A1 (ko)
JP (1) JP7210353B2 (ko)
KR (1) KR102637166B1 (ko)
CN (1) CN110392092B (ko)
SG (1) SG10201902874QA (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US10860223B1 (en) * 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US20210019069A1 (en) * 2019-10-21 2021-01-21 Intel Corporation Memory and storage pool interfaces
US11321259B2 (en) * 2020-02-14 2022-05-03 Sony Interactive Entertainment Inc. Network architecture providing high speed storage access through a PCI express fabric between a compute node and a storage server
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
KR20220067795A (ko) * 2020-11-18 2022-05-25 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11573718B2 (en) 2021-02-12 2023-02-07 Western Digital Technologies, Inc. Disaggregation of control path and data path
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
CN113487033B (zh) * 2021-07-30 2023-05-23 上海壁仞智能科技有限公司 以图形处理器为执行核心的推理方法和装置
CN114553899A (zh) * 2022-01-30 2022-05-27 阿里巴巴(中国)有限公司 一种存储设备
EP4276639A1 (en) * 2022-05-09 2023-11-15 Samsung Electronics Co., Ltd. Computing system including memory device and storage device and operating method thereof

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040024573A1 (en) * 2002-07-31 2004-02-05 Sun Microsystems, Inc. Method, system, and program for rendering information about network components
US20160127492A1 (en) * 2014-11-04 2016-05-05 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US20170177222A1 (en) * 2014-03-08 2017-06-22 Diamanti, Inc. Methods and systems for data storage using solid state drives

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
JP3934867B2 (ja) 2000-09-29 2007-06-20 株式会社東芝 不揮発性半導体記憶装置および不揮発性半導体メモリシステム
US7649880B2 (en) * 2002-11-12 2010-01-19 Mark Adams Systems and methods for deriving storage area commands
US7752381B2 (en) * 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
KR20090097486A (ko) 2008-03-11 2009-09-16 주식회사 엠트론스토리지테크놀로지 솔리드 스테이트 드라이브 컨트롤러를 갖는 저장 장치
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US10236032B2 (en) * 2008-09-18 2019-03-19 Novachips Canada Inc. Mass data storage system with non-volatile memory modules
US9250687B1 (en) 2009-08-10 2016-02-02 Ajoy Aswadhati High performance flexible storage system architecture
JP2012137885A (ja) 2010-12-24 2012-07-19 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
US9767058B2 (en) 2011-11-17 2017-09-19 Futurewei Technologies, Inc. Method and apparatus for scalable low latency solid state drive interface
US20140195634A1 (en) * 2013-01-10 2014-07-10 Broadcom Corporation System and Method for Multiservice Input/Output
KR102068342B1 (ko) * 2013-03-07 2020-01-20 삼성전자주식회사 메모리 제어기 및 그것을 포함하는 메모리 시스템
US9459957B2 (en) 2013-06-25 2016-10-04 Mellanox Technologies Ltd. Offloading node CPU in distributed redundant storage systems
US9785356B2 (en) * 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US10063638B2 (en) * 2013-06-26 2018-08-28 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
CN103955440A (zh) * 2013-12-18 2014-07-30 记忆科技(深圳)有限公司 一种非易失存储设备及其进行数据操作的方法
JP2015143945A (ja) 2014-01-31 2015-08-06 富士通株式会社 ストレージ制御装置、ストレージ装置および制御プログラム
US10628353B2 (en) * 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US9727503B2 (en) 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
CN104038550B (zh) * 2014-06-18 2018-01-23 华为技术有限公司 数据通信方法及其装置、存储系统
US10466923B2 (en) 2015-02-27 2019-11-05 Samsung Electronics Co., Ltd. Modular non-volatile flash memory blade
KR102506135B1 (ko) 2015-03-16 2023-03-07 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10114778B2 (en) 2015-05-08 2018-10-30 Samsung Electronics Co., Ltd. Multi-protocol IO infrastructure for a flexible storage platform
KR102430187B1 (ko) 2015-07-08 2022-08-05 삼성전자주식회사 RDMA NVMe 디바이스의 구현 방법
WO2017031126A1 (en) * 2015-08-17 2017-02-23 Brocade Communications Systems, Inc. Pci express connected network switch
US9952788B2 (en) * 2015-09-29 2018-04-24 Cnex Labs, Inc. Method and apparatus for providing a shared nonvolatile memory system using a distributed FTL scheme
KR102387973B1 (ko) 2015-12-01 2022-04-19 삼성전자주식회사 이중화 저장 장치, 그것을 포함한 서버 시스템 및 그것의 동작 방법
US9992162B2 (en) * 2016-03-04 2018-06-05 Imagine Communications Corp. Device, system and method for network-based address translation for multiple recipients
US10223313B2 (en) 2016-03-07 2019-03-05 Quanta Computer Inc. Scalable pooled NVMe storage box that comprises a PCIe switch further connected to one or more switches and switch ports
US10481799B2 (en) * 2016-03-25 2019-11-19 Samsung Electronics Co., Ltd. Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories
US10769098B2 (en) * 2016-04-04 2020-09-08 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US10459855B2 (en) 2016-07-01 2019-10-29 Intel Corporation Load reduced nonvolatile memory interface
US10534541B2 (en) 2016-09-20 2020-01-14 Seagate Technology Llc Asynchronous discovery of initiators and targets in a storage fabric
KR20180034778A (ko) 2016-09-27 2018-04-05 삼성전자주식회사 직렬로 연결되는 스토리지 장치들 중 직접 연결되지 않은 스토리지 장치로의 바이패스 경로를 제공하도록 구성되는 전자 장치, 그것에 포함되는 스토리지 장치, 그것을 포함하는 컴퓨팅 시스템, 및 그것을 이용하여 통신하는 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040024573A1 (en) * 2002-07-31 2004-02-05 Sun Microsystems, Inc. Method, system, and program for rendering information about network components
US20170177222A1 (en) * 2014-03-08 2017-06-22 Diamanti, Inc. Methods and systems for data storage using solid state drives
US20160127492A1 (en) * 2014-11-04 2016-05-05 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet

Also Published As

Publication number Publication date
SG10201902874QA (en) 2019-11-28
US11290533B2 (en) 2022-03-29
CN110392092A (zh) 2019-10-29
JP2019185765A (ja) 2019-10-24
KR20190120992A (ko) 2019-10-25
EP3557429A3 (en) 2020-01-08
US20220174115A1 (en) 2022-06-02
CN110392092B (zh) 2024-07-12
JP7210353B2 (ja) 2023-01-23
US20190320020A1 (en) 2019-10-17
EP4095668A1 (en) 2022-11-30
EP3557429A2 (en) 2019-10-23

Similar Documents

Publication Publication Date Title
KR102637166B1 (ko) 대용량 데이터를 저장하는 네트워크 스토리지 장치
US20210311871A1 (en) System and method for aggregating server memory
EP3916564A1 (en) System with cache-coherent memory and server-linking switch
KR20190112446A (ko) 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법
RU2008130859A (ru) Способ осуществления доступа к целевому дисковому запоминающему устройству, система расширения дисковой емкости и дисковый массив
KR101003102B1 (ko) 멀티 프로세싱 유닛에 대한 메모리 매핑방법, 및 장치
US7299334B2 (en) Storage system configurations
EP4002139A2 (en) Memory expander, host device using memory expander, and operation method of server system including memory expander
US20230222062A1 (en) Apparatus and method for cache-coherence
KR102446716B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
KR102433549B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
US9529721B2 (en) Control device, and storage system
JP4983133B2 (ja) 入出力制御装置およびその制御方法、並びにプログラム
JP7281528B2 (ja) 情報処理装置
JP6998419B2 (ja) 制御プログラム
US20240012684A1 (en) Memory disaggregation method, computing system implementing the method
US20230222067A1 (en) Apparatus and method for cache-coherence
KR102684940B1 (ko) 데이터 처리 시스템
KR102615319B1 (ko) 대용량 메모리 자원 공유 방법 및 메모리 브리지 ic를 이용한 효율적인 메모리 자원 공유 시스템
JP6694007B2 (ja) 情報処理装置
KR20230157187A (ko) Cxl 스위치, 메모리 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 및 이의 동작 방법
KR20230156524A (ko) 스토리지 장치들 및 메모리 장치들과 통신하도록 구성된 호스트의 동작 방법, 및 스토리지 장치들 및 메모리 장치들을 포함하는 시스템
KR20230107085A (ko) 캐시-일관성을 위한 장치 및 방법
CN117009279A (zh) 存储器装置的操作方法、计算系统及其操作方法
JP2015230586A (ja) 情報処理装置、プログラムおよび記録媒体

Legal Events

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