KR102340287B1 - 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법 - Google Patents

멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법 Download PDF

Info

Publication number
KR102340287B1
KR102340287B1 KR1020170121411A KR20170121411A KR102340287B1 KR 102340287 B1 KR102340287 B1 KR 102340287B1 KR 1020170121411 A KR1020170121411 A KR 1020170121411A KR 20170121411 A KR20170121411 A KR 20170121411A KR 102340287 B1 KR102340287 B1 KR 102340287B1
Authority
KR
South Korea
Prior art keywords
storage device
controller
host
command
duplicate
Prior art date
Application number
KR1020170121411A
Other languages
English (en)
Other versions
KR20190033122A (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 KR1020170121411A priority Critical patent/KR102340287B1/ko
Priority to US15/964,737 priority patent/US10572402B2/en
Priority to CN201810893708.2A priority patent/CN109522250B/zh
Publication of KR20190033122A publication Critical patent/KR20190033122A/ko
Application granted granted Critical
Publication of KR102340287B1 publication Critical patent/KR102340287B1/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
    • 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/1694Configuration of memory controller to different memory types
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/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/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/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0689Disk arrays, e.g. RAID, JBOD

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)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법에 관한 것이다. 본 발명의 실시 예에 따른 멀티캐스트(Multicast) 통신 프로토콜에 따라 호스트와 통신하는 저장 장치는, 데이터를 저장하거나 상기 데이터를 출력하기 위한 메모리 장치 및 상기 호스트로부터 상기 데이터에 대한 명령을 페치하고, 상기 명령에 대응하는 논리 어드레스에 따라 상기 명령을 처리하고, 그리고 상기 명령을 페치한 제 1 복제 저장 장치로부터, 상기 제 1 복제 저장 장치에 의해 상기 명령이 처리되었음을 나타내는 알림 신호를 수신하는 컨트롤러를 포함할 수 있다.

Description

멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법{STORAGE DEVICE COMMUNICATING WITH HOST ACCORDING TO MULTICAST COMMUNICATION PROTOCOL AND COMMUNICATION METHOD OF HOST}
본 발명은 저장 장치 및 호스트의 통신 방법에 관한 것으로, 좀 더 구체적으로 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법에 관한 것이다.
플래시 메모리 장치는 컴퓨터, 스마트폰, PDA, 디지털 카메라, 캠코더, 보이스 리코더, MP3 플레이어, 휴대용 컴퓨터(Handheld PC)와 같은 정보 기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다. 플래시 메모리 기반의 대용량 스토리지 장치의 대표적인 예로 솔리드 스테이트 드라이브(이하, SSD)가 있다. SSD의 인터페이스는 SSD의 다양한 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 최적의 SSD 인터페이스로서 SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 적용되고 있다. 특히, PCIe(PCI express) 기반의 NVMe(NVM express)가 활발히 연구 및 적용되고 있다.
호스트는 데이터를 분산하여 관리하기 위해 복수의 SSD들과 통신할 수 있다. 호스트는 P2P(Peer to Peer) 통신 방법에 따라 SSD들과 통신할 수 있다. 그러나, P2P 통신 방법에 따라 호스트가 SSD들 중 어느 하나에 명령을 제공하면 명령을 받은 SSD가 다른 SSD로 그 명령을 제공해야 하므로 명령이 처리되는데 소요되는 시간(즉, 레이턴시(Latency))이 증가하는 문제점이 있다. 또한, SSD들 각각이 다른 SSD로 명령을 제공하고 그 명령의 완료 정보를 수신하기 위해 메모리 공간을 사용해야 하는 문제점이 있다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법을 제공할 수 있다.
본 발명의 실시 예에 따른 멀티캐스트(Multicast) 통신 프로토콜에 따라 호스트와 통신하는 저장 장치는, 데이터를 저장하거나 상기 데이터를 출력하기 위한 메모리 장치 및 상기 호스트로부터 상기 데이터에 대한 명령을 페치하고, 상기 명령에 대응하는 논리 어드레스에 따라 상기 명령을 처리하고, 그리고 상기 명령을 페치한 제 1 복제 저장 장치로부터, 상기 제 1 복제 저장 장치에 의해 상기 명령이 처리되었음을 나타내는 알림 신호를 수신하는 컨트롤러를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 멀티캐스트(Multicast) 통신 프로토콜에 따라 호스트와 통신하는 저장 장치는, 데이터를 저장하거나 상기 데이터를 출력하기 위한 메모리 장치 및 상기 호스트로부터 상기 데이터에 대한 명령을 페치하고, 상기 명령에 대응하는 논리 어드레스에 따라 상기 명령을 처리하고, 그리고 상기 명령을 페치한 마스터 저장 장치로 상기 명령을 처리하였음을 나타내는 알림 신호를 전송하는 컨트롤러를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 제 1 및 제 2 저장 장치들과 연결된 호스트의 통신 방법은, 상기 제 1 및 제 2 저장 장치들을 제어하는 명령을 생성하는 단계, 상기 제 1 및 제 2 저장 장치들에 의해 상기 명령이 페치되도록 상기 제 1 저장 장치의 제출 큐 레지스터를 업데이트하는 단계, 및 상기 제 2 저장 장치에서 상기 명령이 처리되고 상기 제 2 저장 장치가 상기 제 1 저장 장치로 상기 명령이 처리되었음을 나타내는 알림 신호를 전송하면, 상기 제 1 저장 장치로부터 상기 명령의 완료 정보를 수신하는 단계를 포함할 수 있다.
본 발명의 멀티캐스트 통신 방법은 기존의 P2P 통신 방법으로 인한 레이턴시를 줄일 수 있다.
본 발명의 멀티캐스트 통신 방법에 따라 호스트는 하나의 제출 큐 및 완료 큐만을 이용하여 저장 장치들에 접근할 수 있다.
본 발명의 멀티캐스트 통신 방법에 따라 저장 장치들은 작업량의 균형(load balance)을 서로 조정할 수 있다.
본 발명의 멀티캐스트 통신 방법에 의해 저장 장치들의 중단 또는 고장이 유연하게 대처될 수 있다.
도 1은 본 발명의 실시 예에 따른 저장 시스템을 예시적으로 보여주는 블록도이다.
도 2는 도 1에서 도시된 호스트를 예시적으로 보여주는 블록도이다.
도 3은 도 1에서 도시된 저장 장치를 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다.
도 5는 본 발명의 다른 실시 예에 따른 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다.
도 6은 본 발명의 또 다른 실시 예에 따른 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 컨트롤러의 설정값들의 변화에 따른 데이터에 대한 마스터 장치들의 변화를 예시적으로 보여주는 도면이다.
도 8은 도 5의 제 1 내지 제 3 저장 장치들 중 복제 저장 장치로서 동작하는 제 2 저장 장치의 동작이 중단된 경우 새로운 복제 저장 장치가 결정되는 과정을 예시적으로 보여주는 순서도이다.
도 9는 도 8에서 제 1 컨트롤러가 제 3 저장 장치를 새로운 복제 저장 장치로 결정한 후 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다.
도 10은 도 5의 제 1 내지 제 3 저장 장치들 중 마스터 저장 장치로서 동작하는 제 1 저장 장치의 동작이 중단된 경우 새로운 마스터 저장 장치가 결정되는 과정을 예시적으로 보여주는 순서도이다.
도 11은 도 10에서 제 2 및 제 3 컨트롤러들이 제 2 저장 장치를 새로운 마스터 저장 장치로 결정한 후 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다.
도 12는 본 발명의 실시 예에 따른 멀티캐스트 통신 프로토콜에 따라 벡터 명령이 호스트에서 저장 장치들로 전송된 것을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 다른 실시 예에 따른 저장 시스템을 예시적으로 보여주는 블록도이다.
도 14는 본 발명의 또 다른 실시 예에 따른 저장 시스템을 예시적으로 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 멀티캐스트 통신 방법이 적용된 사용자 시스템을 보여주는 블록도이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 저장 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 저장 시스템(10)는 호스트(11), 제 1 저장 장치(12), 및 제 2 저장 장치(15)를 포함할 수 있다.
호스트(11)는 제 1 저장 장치(12)에 데이터를 쓰거나, 제 1 저장 장치(12)로부터 데이터를 읽을 수 있다. 이를 위해, 호스트(11)는 제 1 저장 장치(12)를 제어하는 다양한 명령들을 생성할 수 있다. 일반적인 호스트(11)의 명령 처리 프로세스는 다음과 같다. 호스트(11)는 제 1 저장 장치(12)에 명령을 전송하고, 제 1 저장 장치(12)로부터 해당 명령의 완료 정보 및 그와 연관된 인터럽트(Interrupt)를 수신한다. 호스트(11)는 인터럽트(Interrupt)에 응답하여 해당 명령에 관련된 스레드(Thread)나 작업(Task)을 완료하기 위한 인터럽트 처리를 수행할 수 있다.
제 1 저장 장치(12)는 호스트(11)가 생성한 명령을 페치(Fetch)하고 제 1 저장 장치(12)는 호스트(11)가 생성한 명령에 따라 데이터를 저장하거나 데이터를 호스트(11)로 전송할 수 있다. 제 2 저장 장치(15)는 제 1 저장 장치(12)의 동작이 중단되거나 제 1 저장 장치(12)에 고장이 발생하는 것에 대비하기 위해 데이터를 백업할 수 있다. 즉, 제 1 저장 장치(12)는 마스터 저장 장치일 수 있고 제 2 저장 장치(15)는 복제 저장 장치일 수 있다. 적어도 두 개의 저장 장치들 중에서 하나는 마스터 장치일 수 있고 나머지는 복제 저장 장치일 수 있다. 마스터 저장 장치는 자신을 제외한 다른 저장 장치를 관리하고 호스트(11)에 명령이 완료되었음을 알릴 수 있다. 복제 저장 장치는 마스터 장치가 저장하는 데이터를 백업(Backup) 또는 카피(Copy)할 수 있고 마스터 장치로 자신의 작업 상태 또는 처리 상태를 알릴 수 있다.
제 1 저장 장치(12)는 컨트롤러(13) 및 메모리 장치(14)를 포함할 수 있다. 컨트롤러(13)는 메모리 장치(14)에 데이터를 저장하거나 메모리 장치(14)로부터 데이터를 읽음으로써 호스트가 생성한 명령을 처리할 수 있다. 메모리 장치(14)는 컨트롤러(13)의 제어에 기초하여 데이터를 저장하거나 출력할 수 있다.
제 2 저장 장치(15)도 컨트롤러(16) 및 메모리 장치(17)를 포함할 수 있다. 예를 들어, 제 2 저장 장치(15)는 제 1 저장 장치(12)와 동일하게 구현될 수 있다. 컨트롤러(16) 및 메모리 장치(17)도 제 1 저장 장치(12)의 컨트롤러(13) 및 메모리 장치(14)와 유사한 방식으로 동작할 수 있다. 제 2 저장 장치(15)는 제 1 저장 장치(12)와 유사하게 호스트가 생성한 명령을 페치할 수 있다.
본 발명의 실시 예에 따르면, 호스트(11)는 제 1 및 제 2 저장 장치들(12, 15)과 같은 적어도 두 개의 저장 장치들에 명령을 전송할 수 있다. 즉, 호스트(11)는 명령을 제 1 및 제 2 저장 장치들(12, 15)로 멀티캐스트(Multicast)할 수 있다.
제 1 및 제 2 저장 장치들(12, 15) 각각은 병렬적으로 호스트가 생성한 명령을 페치할 수 있다. 도 1을 참조하면, 제 1 저장 장치(12)는 마스터 저장 장치로 제 2 저장 장치(15)는 복제 저장 장치로 도시되었다. 그러나, 도시된 바와 달리, 호스트가 생성한 명령에 따라 제 1 저장 장치(12)는 복제 저장 장치일 수 있고 제 2 저장 장치(15)는 마스터 저장 장치일 수도 있다. 즉, 제 1 및 제 2 저장 장치들(12, 15)의 역할들은 호스트가 생성한 명령에 따라 변경될 수 있다.
호스트(11)는 명령을 제 1 및 제 2 저장 장치들(12, 15)로 멀티캐스트 하지만, 제 1 및 제 2 저장 장치들(12, 15) 중 어느 장치가 마스터 저장 장치인지는 중요하지 않을 수 있다. 제 1 및 제 2 저장 장치들(12, 15) 중 어느 하나는 호스트(11)가 요청한 데이터에 대해 마스터 저장 장치의 역할을 수행하고 다른 하나는 복제 저장 장치의 역할을 수행할 수 있다. 즉, 마스터 저장 장치와 복제 저장 장치를 결정하는 것은 제 1 및 제 2 저장 장치들(12, 15)에 의해 수행될 수 있다. 즉, 제 1 및 제 2 저장 장치들(12, 15) 각각은 호스트가 생성한 명령에 기초하여 자신의 역할을 판단할 수 있다. 이하, 호스트(11)의 물리적인 구성에 대해 설명한다.
도 2는 도 1에서 도시된 호스트를 예시적으로 보여주는 블록도이다. 도 2는 도 1을 참조하여 설명될 것이다. 도 1을 참조하면, 호스트(100)는 프로세서(110), 호스트 메모리(120), 및 인터페이스 회로(130)를 포함할 수 있다.
프로세서(110)는 호스트 메모리(120)에 로드될 다양한 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버, 등)를 실행할 수 있다. 프로세서(110)는 운영 체제(OS), 응용 프로그램(Application Program)을 실행할 수 있다. 프로세서(110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다.
호스트 메모리(120)에는 프로세서(110)에서 처리될 응용 프로그램이나 데이터들이 로드될 수 있다. 좀 더 구체적으로, 호스트 메모리(120)에는 제 1 및 제 2 저장 장치들(도 1 참조, 12, 15)로 전송될 명령에 대한 큐(Queue)를 관리하기 위한 제출 큐(Submission Queue; SQ) 및 전송된 명령의 완료 정보에 대한 큐를 관리하기 위한 완료 큐(Completion Queue; CQ)가 로드될 수 있다. 호스트 메모리(120)의 특정한 영역이 제출 큐(SQ) 및 완료 큐(CQ)를 위해 사전에 할당될 수 있다. 제출 큐(SQ) 및 완료 큐(CQ)는 순환 버퍼(Circular Buffer)로 지칭될 수도 있다.
제출 큐(SQ)는 호스트(100)에 의해 기입되는 제출 엔트리들의 대기열로서, 제 1 및 제 2 저장 장치들(12, 15)로 전송할 명령들에 대응할 수 있다. 완료 큐(CQ)는 제 1 및 제 2 저장 장치들(12, 15) 중 어느 하나에 의해 기입되는 완료 엔트리들의 대기열로서, 호스트(100)에 의해 요청된 명령의 완료 여부 또는 완료 정보를 나타낼 수 있다.
제출 큐(SQ)는 호스트(100)에 의해 기입 또는 공급될 수 있고, 제 1 및 제 2 저장 장치들(12, 15)에 의해 페치 또는 소비될 수 있다. 제출 큐(SQ)의 테일 포인터(Tail Pointer; TP)는 호스트(100)에 의해 업데이트될 수 있고, 새로운 테일 포인터(TP)의 위치는 호스트(100)에 의해 제 1 및 제 2 저장 장치들(12, 15)로 전송될 수 있다. 제 1 및 제 2 저장 장치들(12, 15) 중 어느 하나는 완료 정보를 전송함으로써 제출 큐(SQ)의 헤드 포인터(Head Pointer; HP)를 업데이트할 수 있다.
완료 큐(CQ)는 제 1 및 제 2 저장 장치들(12, 15)에 의해 기입 또는 공급될 수 있고, 호스트(100)에 의해 처리 또는 소비될 수 있다. 완료 큐(CQ)의 테일 포인터(TP)는 제 1 및 제 2 저장 장치들(12, 15) 중 어느 하나에 의해 업데이트될 수 있다. 호스트(100)는 제 1 및 제 2 저장 장치들(12, 15) 중 어느 하나로부터 전송된 인터럽트에 응답하여 완료 큐(CQ)의 헤드 포인터(HP)를 진전시키고, 새로운 헤드 포인터(HP)의 위치는 호스트(100)에 의해 제 1 및 제 2 저장 장치들(12, 15)로 전송될 수 있다.
인터페이스 회로(130)는 호스트(100)와 제 1 및 제 2 저장 장치들(12, 15) 사이에서 물리적인 연결을 제공한다. 즉, 인터페이스 회로(130)는 호스트(100)에서 발행하는 다양한 접근 요청에 대응하는 명령, 어드레스, 데이터 등을 제 1 및 제 2 저장 장치들(12, 15)과의 인터페이싱 방식에 따라 변환할 수 있다. 인터페이스 회로(130)의 통신 프로토콜은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(PCI express), NVMe(NVM express), ATA(AT Attachment), PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 중 적어도 어느 하나일 수 있다. 예시적으로, 인터페이스 회로(130)는 PCIe 방식으로 데이터를 교환하는 NVMe 프로토콜이 적용될 수 있다. 이하, 도 1의 저장 장치들(12, 15)의 물리적인 구성에 대해 설명한다.
도 3은 도 1에서 도시된 저장 장치를 예시적으로 보여주는 블록도이다. 도 3은 도 1을 참조하여 설명될 것이다. 도 3에 도시된 저장 장치(200)의 구성은 도 1의 제 1 및 제 2 저장 장치들(12, 15) 각각의 구성일 수 있다. 도 3을 참조하면, 저장 장치(200)는 메모리 장치들(211~213), 컨트롤러(220), 및 버퍼 메모리(240)를 포함할 수 있다.
메모리 장치들(211~213)은 컨트롤러(220)의 제어에 따라 데이터 입출력을 수행할 수 있다. 예를 들어, 메모리 장치들(211~213)은 DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory) 등과 같은 휘발성 메모리 또는 NAND 플래시 메모리(NAND Flash Memory), NOR 플래시 메모리(NOR Flash Memory), ReRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory), PRAM(Phase Change Random Access Memory), TRAM(Thyristor Random Access Memory), MRAM(Magnetic Random Access Memory) 등과 같은 불휘발성 메모리를 포함할 수 있다. 도시된 메모리 장치들(211~213)의 수 및 채널들(CH1~CH3)의 수는 예시적인 것에 불과하고 본 발명의 범위는 이에 제한되지 않는다.
컨트롤러(220)는 호스트(11, 도 1 참조)와 저장 장치(200) 사이에서 인터페이싱을 제공한다. 컨트롤러(220)는 프로세서(221), 호스트 인터페이스 회로(222), 저장 장치 인터페이스 회로(226), 버퍼 매니저(229), 및 내부 메모리 인터페이스 회로(230)를 포함할 수 있다.
프로세서(221)는 컨트롤러(220)의 내부 구성들의 동작을 제어할 수 있다. 프로세서(221)는 메모리 장치들(211~213)에 대한 읽기 또는 쓰기 동작에 필요한 다양한 제어 정보를 호스트 인터페이스 회로(222), 저장 장치 인터페이스 회로(226), 버퍼 매니저(229), 및 내부 메모리 인터페이스 회로(230)에 제공한다. 프로세서(221)는 컨트롤러(220)의 다양한 제어들을 위해 제공되는 펌웨어(Firmware)에 따라 동작할 수 있다. 예를 들면, 프로세서(221)는 메모리 장치들(211~213)을 관리하기 위한 가비지 컬렉션(Garbage Collection), 주소 맵핑(Address Mapping), 또는 웨어 레벨링(Wear Leveling) 등을 수행하기 위한 플래시 변환 계층(Flash Translation Layer; FTL)을 실행할 수 있다.
호스트 인터페이스 회로(222)는 호스트(100)와의 통신을 수행할 수 있다. 예를 들면, 호스트 인터페이스 회로(222)는 호스트(100)의 제출 큐 테일 도어벨(SQTDBL)을 기입하기 위한 제 1 레지스터(223)를 포함할 수 있다. 호스트 인터페이스 회로(222)는 호스트(100)의 완료 큐 헤드 도어벨(CQHDBL)을 기입하기 위한 제 2 레지스터(224)를 포함할 수 있다. 제 1 레지스터(223)는 호스트(100)의 제출 큐(SQ)의 정보를 저장할 수 있고 제 2 레지스터(224)는 호스트(100)의 완료 큐(CQ)의 정보를 저장할 수 있다. 제출 큐 테일 도어벨(SQTDBL)은 제출 큐의 테일 포인터의 값을 나타낼 수 있고 그리고 완료 큐 헤드 도어벨(CQHDBL)은 완료 큐의 헤드 포인터의 값을 나타낼 수 있다. 호스트 인터페이스 회로(222)는 제 2 레지스터(224)의 상태에 따라 발생할 인터럽트들을 관리하는 인터럽트 테이블(IR Table)을 저장하기 위한 제 3 레지스터(225)를 포함할 수 있다.
호스트 인터페이스 회로(222)는 도 2에서 전술한 호스트(100)의 인터페이스 회로(130)에 적용된 통신 프로토콜에 따라 동작하도록 구성될 수 있다. 예시적으로, 호스트 인터페이스 회로(222)에 PCIe 방식으로 데이터를 교환하는 NVMe 프로토콜이 적용될 수 있다.
저장 장치 인터페이스 회로(226)는 다른 저장 장치(예를 들면, 도 1의 제 1 및 제 2 저장 장치들(12, 15) 중 어느 하나)와의 통신을 수행할 수 있다. 예를 들어, 저장 장치 인터페이스 회로(226)의 통신 프로토콜은 USB, SCSI, PCIe, NVMe, ATA, PATA, SATA, SAS 중 적어도 어느 하나일 수 있다.
저장 장치 인터페이스 회로(226)는 다른 저장 장치와 알림 신호를 교환하기 위한 알림 모듈(Acknowledgment Module, 227)을 포함할 수 있다. 실시 예에 있어서, 저장 장치(200)가 마스터 저장 장치인 경우, 알림 모듈(227)은 알림 신호를 복제 저장 장치로부터 수신할 수 있다. 이 경우, 알림 신호는 복제 저장 장치에 의해 호스트(11)의 명령이 처리되었음을 나타낼 수 있다. 다른 실시 예에 있어서, 저장 장치(200)가 복제 저장 장치인 경우, 알림 모듈(227)은 알림 신호를 마스터 저장 장치로 전송할 수 있다. 이 경우, 알림 신호는 컨트롤러(220) 또는 복제 저장 장치에서 호스트(11)의 명령이 처리되었음을 나타낼 수 있다.
저장 장치 인터페이스 회로(226)는 다른 저장 장치와 문의 신호(Inquiry Signal) 및 응답 신호(Response Signal)을 교환하기 위한 오류 인식 모듈(Fault Recognition Module, 228)을 포함할 수 있다. 오류 인식 모듈(228)은 다른 저장 장치로 문의 신호 전송하고 그에 대한 응답 신호를 수신할 수 있다. 또는, 오류 인식 모듈(228)은 다른 저장 장치로부터 문의 신호를 수신하고 그에 대한 응답 신호를 전송할 수 있다. 문의 신호는 다른 저장 장치의 동작이 중단되었는지 또는 오류가 발생하였는지 여부를 확인하기 위한 신호이고 응답 신호는 문의 신호를 수신한 저장 장치에서 응답으로서 전송된 신호이다. 예를 들어, 문의 신호는 Heart Beat 신호로 지칭될 수도 있다. 실시 예에 있어서, 알림 모듈(227)과 오류 인식 모듈(228)은 도시된 것과 같이 분리되어 구현되거나, 도시된 것과 달리 하나의 통합된 회로 상에서 구현될 수 있거나, 또는 컨트롤러(220) 내부에서 소프트웨어 방식으로 구현될 수도 있다.
버퍼 매니저(229)는 버퍼 메모리(240)의 읽기 및 쓰기 동작들을 제어한다. 예를 들면, 버퍼 매니저(229)는 메모리 장치들(211~213)에 대한 쓰기 데이터나 읽기 데이터를 버퍼 메모리(240)에 임시로 저장할 수 있다. 버퍼 매니저(229)는 프로세서(221)의 제어에 따라 버퍼 메모리(240)의 영역을 관리할 수 있다.
내부 메모리 인터페이스 회로(230)는 메모리 장치들(211~213)과 데이터를 교환할 수 있다. 내부 메모리 인터페이스 회로(230)는 버퍼 메모리(240)로부터 전달되는 쓰기 데이터를 각각의 채널들(CH1~CH3)을 통해 메모리 장치들(211~213)에 기입한다. 이후, 채널들(CH1~CH3)을 통하여 출력되는 메모리 장치들(211~213)로부터의 읽기 데이터는 내부 메모리 인터페이스 회로(230)에 의해서 취합된다. 취합된 데이터는 버퍼 메모리(240)에 저장된 후 호스트(11)로 전송되거나 곧바로 호스트(11)로 전송될 수 있다.
실시 예에 있어서, 컨트롤러(220) 내부의 구성 요소들(프로세서(221), 호스트 인터페이스 회로(222), 제 1 내지 제 3 레지스터들(223~225), 저장 장치 인터페이스 회로(226), 알림 모듈(227), 오류 인식 모듈(228), 버퍼 매니저(229), 내부 메모리 인터페이스 회로(230))은 도시된 것과 같이 분리되어 구현될 수 있다.
다른 실시 예에 있어서, 도시된 것과 달리, 컨트롤러(220) 내부의 구성 요소들은 SoC(System on Chip), ASIC(Application Specific Integrated Circuit), 또는 FPGA(Field Programmable Gate Array)와 같은 하나의 집적 회로상에서 통합되어 구현될 수도 있다. 이 경우, 도시된 내부의 구성 요소들은 소프트웨어 방식으로 구현될 수 있다.
버퍼 메모리(240)는 저장 장치(200)의 버퍼 메모리 또는 캐시(Cache)로서 동작한다. 예를 들어, 버퍼 메모리(240)는 호스트(11)로부터 수신된 데이터 또는 메모리 장치들(211~213)로부터 출력된 데이터를 임시로 저장하거나, 메모리 장치들(211~213)의 메타 데이터(예를 들어, 맵핑 테이블)를 임시로 저장할 수 있다. 버퍼 메모리(240)는 예를 들어, DRAM, SRAM 등과 같은 휘발성 메모리를 포함할 수 있고, 메모리 장치들(211~213)의 입출력 속도보다 빠른 입출력 속도를 갖도록 구성될 수 있다.
또 다른 실시 예에 있어서, 메모리 장치들(211~213), 컨트롤러(220), 및 버퍼 메모리(240)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 장치들(211~213), 컨트롤러(220), 및 버퍼 메모리(240)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 메모리 장치들(211~213), 컨트롤러(220), 및 버퍼 메모리(240)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 장치들(211~213), 컨트롤러(220), 및 버퍼 메모리(240)는 하나의 반도체 장치로 집적되어 PC 카드(Personal Computer Memory Card International Association; PCMCIA,), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 2 내지 도 3에서, 도 1에서 전술한 호스트(11)와 제 1 및 제 2 저장 장치들(12, 15)의 상세한 구성들에 대해 살펴보았다. 이하, 본 발명의 실시 예에 따른 호스트(11)와 제 1 및 제 2 저장 장치들(12, 15)간의 멀티캐스트 통신 방법에 대해 상세히 설명한다.
도 4는 본 발명의 실시 예에 따른 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다. 도 4는 도 1 내지 도 3을 참조하여 설명될 것이다. 도 4에서, 제 1 저장 장치(310)는 마스터 저장 장치로 가정하고, 제 2 저장 장치(320)는 복제 저장 장치로 가정한다. 제 1 저장 장치(310)는 제 1 컨트롤러(312)를 포함할 수 있고, 제 2 저장 장치(320)는 제 2 컨트롤러(322)를 포함할 수 있고, 그리고 제 1 및 제 2 컨트롤러들(312, 322)의 구성들은 도 3의 컨트롤러(220)의 구성과 실질적으로 동일할 수 있다. 또한, 제 1 및 제 2 저장 장치들(310, 320) 각각은 분리되어 구현되거나 또는 하나의 반도체 장치로 집적되어 구현될 수도 있다.
S105 단계에서, 호스트(100)는 제 1 및 제 2 저장 장치들(310, 320)에 데이터를 저장하거나 제 1 및 제 2 저장 장치들(310, 320)로부터 데이터를 읽기 위한 명령을 생성하고, 명령을 제출 큐 엔트리(SQ Entry)에 기입할 수 있다. 호스트(100)는 호스트 메모리(120)에 할당된 제출 큐의 테일 포인터를 업데이트할 수 있다.
S110 단계에서, 호스트(100)는 새로운 명령이 제출 큐(SQ)에 쓰여졌음을 제 1 및 제 2 저장 장치들(310, 320)에 알리기 위해, 제출 큐 테일 도어벨(SQTDBL)을 저장하는 제 1 및 제 2 컨트롤러들(312, 322)의 레지스터들(예를 들면, 도 3의 제 1 레지스터(223))을 업데이트할 수 있다.
S115 단계에서, 제 1 및 제 2 컨트롤러들(312, 322) 각각은 제출 큐 엔트리를 페치할 수 있다. 제 1 및 제 2 저장 장치들(310, 320) 각각은 병렬적으로 호스트(100)가 생성한 명령을 페치할 수 있다. 따라서, 호스트(100)가 생성한 명령은 멀티캐스트 방식으로 제 1 및 제 2 저장 장치들(310, 320)로 전송될 수 있다. 이후, 제 1 및 제 2 컨트롤러들(312, 322) 각각은 병렬적으로 명령을 처리할 수 있다.
실시 예에 있어서, 명령이 제 1 및 제 2 컨트롤러들(312, 322)에 의해 페치될 때 하나 또는 그 이상의 제출 큐 엔트리들이 순서대로 페치될 수 있다. 좀 더 구체적으로, 제 1 및 제 2 컨트롤러들(312, 322)은 제출 큐 헤드(SQ Head)부터 제출 큐 테일(SQ Tail)까지 저장된 명령들을 순서대로 페치할 수 있다.
S120, S125 단계들에서, 제 1 및 제 2 컨트롤러들(312, 322) 각각은 논리 블록 어드레스(Logical Block Address; LBA)에 따라 명령을 어떻게 처리할지를 결정할 수 있다. 논리 블록 어드레스는 페치된 명령에 포함된 정보일 수 있다. 논리 블록 어드레스는 데이터의 저장 위치에 관한 정보를 나타낼 수 있고 논리 어드레스로 지칭될 수 있다.
제 1 및 제 2 컨트롤러들(312, 322) 각각은 명령에 포함된 논리 블록 어드레스에 따라 스스로의 역할을 판단할 수 있다. 여기서, 저장 장치의 역할에는 마스터 저장 장치의 역할 및 복제 저장 장치의 역할이 있을 수 있다. 도시된 것과 같이, 제 1 컨트롤러(312)는 제출 큐(SQ)에서 페치한 명령에 포함된 논리 블록 어드레스에 따라 해당 명령에 대해 마스터 저장 장치의 역할을 수행해야 함을 판단할 수 있다. 유사하게, 제 2 컨트롤러(322)는 제출 큐(SQ)에서 페치한 명령에 포함된 논리 블록 어드레스에 따라 해당 명령에 대해 복제 저장 장치의 역할을 수행해야 함을 판단할 수 있다. 논리 블록 어드레스를 이용하여 역할을 판단하는 컨트롤러의 상세한 동작은 표 1에서 후술한다.
S121, S126 단계들에서, 제 1 및 제 2 컨트롤러들(312, 322) 각각은 논리 블록 어드레스에 따라 명령에 대응하는 동작을 실행하고, 명령을 처리할 수 있다. 예를 들어, 페치된 명령이 쓰기 명령이면 제 1 및 제 2 컨트롤러들(312, 322) 각각은 호스트가 제공한 데이터를 메모리 장치에 저장할 수 있다. 예를 들어, 페치된 명령이 읽기 명령이면 제 1 및 제 2 컨트롤러들(312, 322) 각각은 메모리 장치들(211~213, 도 3 참조)에서 호스트가 요청한 데이터를 읽을 수 있다. 제출 큐(SQ)에 저장된 명령들은 페치된 순서대로 처리되거나 그렇지 않을 수도 있다.
S130 단계에서, 제 2 컨트롤러(322)는 알림 신호를 제 1 컨트롤러(312)로 전송할 수 있다. 이 때, 알림 신호는 호스트(100)가 생성한 명령이 제 2 저장 장치(320) 또는 제 2 컨트롤러(322)에 의해 처리되었음을 나타낼 수 있다. 제 1 컨트롤러(312)는 제 2 컨트롤러(322)로부터 알림 신호를 수신하여 복제 저장 장치(제 2 저장 장치(320))의 명령 처리가 완료되었음을 확인할 수 있다. 즉, 제 1 컨트롤러(312)는 S130 단계를 통해 호스트가 생성한 명령이 제 1 및 제 2 저장 장치들(310, 320)에 의해 처리되었음을 확인할 수 있다.
S135 단계에서, 제 1 컨트롤러(312)는 제출 큐(SQ)로부터 페치한 명령에 대한 완료를 알리기 위해 완료 큐 엔트리 또는 명령의 완료 정보를 기입할 수 있다. S135 단계에서 제 1 및 제 2 컨트롤러들(312, 322)이 동시에 완료 큐(CQ)에 접근하는 충돌이 발생하지 않는다. 제 1 컨트롤러(312)는 S130 단계에서 알림 신호가 수신되면 호스트(100)로 명령의 완료 정보를 전송할 수 있다. 제 2 컨트롤러(322)는 제 2 저장 장치(320)가 복제 저장 장치이므로 완료 큐(CQ)에 접근하지 않을 수 있다. 예시적으로, 완료 큐 엔트리의 크기는 16 바이트(Byte)일 수 있고, 완료 큐 엔트리는 제출 큐 식별자(SQ Identifier; SQID), 제출 큐 헤드 포인터(SQ Head Pointer; SQHD), 상태 필드(Status Field; SF), 페이즈 태그(Phase Tag; P), 명령 식별자(Command Identifier; CID) 등을 포함할 수 있다.
본 발명의 실시 예에 의하면, 마스터 저장 장치의 컨트롤러(제 1 컨트롤러(312))만 완료 큐에 접근할 수 있다. 따라서, 제 1 컨트롤러(312)는 완료 큐(CQ)에 접근할 수 있으나 제 2 컨트롤러(322)는 완료 큐(CQ)에 접근할 수 없다. 따라서, 호스트(100)가 명령을 멀티캐스트하더라도 제 1 및 제 2 컨트롤러들(312, 322)이 동시에 완료 큐(CQ)로 접근하는 충돌이 발생하지 않는다.
S140 단계에서, 제 1 컨트롤러(312)는 인터럽트를 생성하고, 인터럽트를 호스트(100)로 전송할 수 있다. 인터럽트는 핀 기반의 신호일 수도 있고, 메시지 신호 기반의 인터럽트(Message Signaled Interrupt: 이하, MSI) 또는 MSI-X 방식으로 전송될 수 있다.
S145 단계에서, 호스트(100)는 제 1 컨트롤러(312)로부터 인터럽트를 수신하고, 완료 큐 엔트리 또는 완료 정보를 처리할 수 있다. 좀 더 구체적으로, 호스트(100)는 인터럽트 서비스 루틴(Interrupt Service Routine)을 수행할 수 있다. 호스트(100)는 제 1 및 제 2 저장 장치들(310, 320)로 요청한 명령이 정상적으로 처리되면 그에 상응하는 후속 명령을 새로 생성할 수 있다. 그러나 호스트(100)는 요청한 명령이 정상적으로 처리되지 않은 경우, 다시 명령을 생성하거나 에러를 복구하는 동작을 수행할 수 있다.
S150 단계에서, 호스트(100)는 완료 큐 엔트리 또는 완료 정보가 처리되었음을 제 1 및 제 2 저장 장치들(310, 320)에 알리기 위해, 완료 큐 헤드 도어벨(CQHDBL)을 저장하는 제 1 및 제 2 컨트롤러들(312, 322)의 레지스터들(예를 들면, 도 3의 제 2 레지스터(224))을 업데이트할 수 있다.
실시 예에 있어서, 도시된 것과 달리, 명령의 논리 블록 어드레스에 따라 제 1 저장 장치(310)가 복제 저장 장치일 수 있고, 제 2 저장 장치(320)가 마스터 저장 장치일 수 있다. 이 경우, S130 단계는 제 1 컨트롤러(312)에 의해 수행되고, S135 및 S140 단계들은 제 2 컨트롤러(322)에 의해 수행될 수 있다. 또한, 제 2 컨트롤러(322)는 완료 큐(CQ)에 접근할 수 있으나 제 1 컨트롤러(312)는 완료 큐(CQ)에 접근할 수 없다.
도 5는 본 발명의 다른 실시 예에 따른 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다. 도 5는 도 1 내지 도 4를 참조하여 설명될 것이다. 도 5를 참조하면, 호스트(100)는 제 1 및 제 2 저장 장치들(310, 320)뿐만 아니라 제 3 저장 장치(330)에도 명령을 더 멀티캐스트할 수 있다. 도 5에서, 제 1 저장 장치(310)는 마스터 저장 장치로 가정하고, 제 2 저장 장치(320)는 복제 저장 장치로 가정하고, 제 3 저장 장치(330)는 유휴 저장 장치로 가정한다. 유휴 저장 장치는 해당 명령에 대해 아무런 작업을 수행하지 않는 장치를 지칭할 수 있다. 저장 장치의 역할에는 유휴 저장 장치의 역할이 더 있을 수 있다.
제 1 저장 장치(310)는 제 1 컨트롤러(312)를 포함할 수 있고, 제 2 저장 장치(320)는 제 2 컨트롤러(322)를 포함할 수 있고, 제 3 저장 장치(330)는 제 3 컨트롤러(332)를 포함할 수 있고, 그리고 제 1 내지 제 3 컨트롤러들(312, 322, 332)의 구성들은 도 3의 컨트롤러(220)의 구성과 실질적으로 동일할 수 있다. 또한, 제 1 내지 제 3 저장 장치들(310~330) 각각은 분리되어 구현되거나 또는 하나의 반도체 장치로 집적되어 구현될 수도 있다.
S205 내지 S215 단계들은 도 4의 S105 내지 S115 단계들과 실질적으로 동일할 수 있다. 다만, 호스트(100)는 제출 큐 테일 도어벨(SQTDBL)을 저장하는 제 3 컨트롤러(332)의 레지스터(예를 들면, 도 3의 제 1 레지스터(223))를 더 업데이트할 수 있고, 제 3 컨트롤러(332)는 제출 큐 엔트리를 페치할 수 있다.
S220, S225 단계들은 도 4의 S120, S125 단계들과 실질적으로 동일할 수 있다. S230 단계에서, 제 3 컨트롤러(332)는 논리 블록 어드레스에 따라 명령을 어떻게 처리할지를 결정할 수 있다. 도시된 것과 같이 제 3 컨트롤러(332)는 제출 큐(SQ)에서 페치한 명령에 포함된 논리 블록 어드레스에 따라 해당 명령에 대해 유휴 저장 장치 역할을 수행해야 함을 판단할 수 있다. 예를 들어, 제 1 내지 제 3 컨트롤러들(312, 322, 3323) 각각은 논리 블록 어드레스에 따라 명령에 대응하는 동작들 또는 작업들을 수행할지 여부를 판단할 수 있다.
S221, S226 단계들은 도 4의 S121, S126 단계들과 실질적으로 동일할 수 있다. S231 단계에서, 제 3 컨트롤러(332)는 페치한 명령에 대해 아무런 작업을 수행하지 않을 수 있다.
S235 단계에서, 제 2 컨트롤러(322)는 알림 신호를 제 1 컨트롤러(312)로 전송할 수 있다. 또한, 제 3 컨트롤러(332)도 알림 신호를 제 1 컨트롤러(312)로 전송할 수 있다. 해당 명령에 대해 제 3 컨트롤러(332)에 부여된 역할이 없었기 때문에, 제 3 컨트롤러(332)는 해당 명령에 따른 동작을 수행하지 않는다. 제 3 컨트롤러(332)는 해당 명령에 따른 동작을 수행하지 않고 해당 명령을 처리하였음을 나타내는 알림 신호를 제 1 컨트롤러(312)로 전송할 수 있다.
제 1 컨트롤러(312)는 제 2 및 제 3 컨트롤러들(322, 332)로부터 알림 신호들을 수신하여 호스트(100)로부터 명령을 페치한 저장 장치들의 명령 처리가 완료되었음을 확인할 수 있다. 도 5를 참조하면, 복제 저장 장치와 유휴 저장 장치가 각각 하나씩 도시되었으나, 본 발명은 이에 제한되지 않는다. 예를 들어, 호스트(100)는 도시된 것보다 더 많은 수의 저장 장치들로 명령을 멀티캐스트할 수 있다. 제 1 컨트롤러(312)는 호스트(100)로부터 명령을 페치한 저장 장치들로부터 알림 신호들을 수신하고 알림 신호들의 수를 카운팅할 수 있다. 제 1 컨트롤러(312)는 카운팅 결과에 기초하여 호스트의 명령이 처리되었는지를 판단할 수 있다.
S240 내지 S255 단계들은 도 4의 S135 내지 S150 단계들과 실질적으로 동일할 수 있다. S240 단계에서, 제 1 내지 제 3 컨트롤러들(312, 322, 332)이 동시에 완료 큐(CQ)를 접근하는 충돌이 발생하지 않는다. 호스트(100)는 완료 큐 엔트리 또는 완료 정보가 처리되었음을 제 3 저장 장치(330)에 알리기 위해, 완료 큐 헤드 도어벨(CQHDBL)을 저장하는 제 3 컨트롤러(332)의 레지스터(예를 들면, 도 3의 제 2 레지스터(224))를 더 업데이트할 수 있다.
실시 예에 있어서, 도시된 것과 달리, 호스트(100)에 의해 생성된 명령의 논리 블록 어드레스에 따라 제 1 저장 장치(310)가 복제 저장 장치 또는 유휴 저장 장치일 수 있고, 제 2 저장 장치(320)가 마스터 저장 장치 또는 유휴 저장 장치일 수 있고, 그리고 제 3 저장 장치(330)가 마스터 저장 장치 또는 복제 저장 장치일 수 있다.
도 6은 본 발명의 또 다른 실시 예에 따른 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다. 도 6은 도 1 내지 도 5를 참조하여 설명될 것이다. 도 6의 S305 및 S320 내지 S355 단계들은 도 5의 S205 및 S215 내지 S250 단계들과 실질적으로 동일할 수 있다. 이하, 도 6과 도 5의 차이점에 대해 설명한다.
S310 단계에서, 호스트(100)는 새로운 명령이 제출 큐(SQ)에 쓰여졌음을 제 1 내지 제 3 저장 장치들(310~330)에 알리기 위해, 제출 큐 테일 도어벨(SQTDBL)을 저장하는 제 2 및 제 3 컨트롤러들(322, 332)의 레지스터들을 업데이트하지 않고, 제 1 컨트롤러(312)의 레지스터만 업데이트할 수 있다.
S315 단계에서, 제 1 컨트롤러(312)는 제 2 및 제 3 컨트롤러들(322, 332)의 레지스터들을 업데이트할 수 있다. 제 1 컨트롤러(312)는 호스트(100)에 의해 업데이트된 새로운 제출 큐 테일 도어벨을 제 2 및 제 3 컨트롤러들(322, 332)의 레지스터들에 제공할 수 있다. 즉, 제 1 컨트롤러(312)는 호스트(100) 대신에 새로운 제출 큐의 정보를 제 2 및 제 3 저장 장치들(320, 330)로 전송할 수 있다.
S360 단계에서, 호스트(100)는 완료 큐 엔트리 또는 완료 정보가 처리되었음을 제 1 내지 제 3 저장 장치들(310~330)에 알리기 위해 완료 큐 헤드 도어벨(CQHDBL)을 저장하는 제 2 및 제 3 컨트롤러들(322, 332)의 레지스터들을 업데이트하지 않고, 제 1 컨트롤러(312)의 레지스터만 업데이트할 수 있다.
S365 단계에서, 제 1 컨트롤러(312)는 호스트(100) 대신에 제 2 및 제 3 컨트롤러들(322, 332)의 레지스터들을 업데이트할 수 있다. 제 1 컨트롤러(312)는 호스트(100)에 의해 업데이트된 새로운 완료 큐 헤드 도어벨을 제 2 및 제 3 컨트롤러들(322, 332)의 레지스터들에 제공할 수 있다. 즉, 제 1 컨트롤러(312)는 새로운 완료 큐의 정보를 제 2 및 제 3 저장 장치들(320, 330)로 전송할 수 있다.
도 5에서 도시된 방식 또는 도 6에서 도시된 방식에 관계없이, 제 1 내지 제 3 컨트롤러들(312, 322, 332)은 제출 큐(SQ)에서 명령을 병렬적으로 페치할 수 있다. 호스트(100)가 제 1 컨트롤러(312)의 레지스터만 업데이트해도, 제 1 및 제 3 컨트롤러들(312~332)은 제출 큐(SQ)의 명령을 페치할 수 있다.
LBA MOD 3 Storage Device (310) Storage Device (320) Storage Device (330)
0 0 Master Replica No Task (Idle)
1 1 No Task (Idle) Master Replica
2 2 Replica No Task (Idle) Master
3 0 Master Replica No Task (Idle)
4 1 No Task (Idle) Master Replica
표 1은 본 발명의 실시 예에 따른 저장 장치들의 컨트롤러들이 논리 블록 어드레스에 따라 데이터에 대한 역할들을 판단한 결과를 보여준다. 표 1은 도 4 내지 도 6을 참조하여 설명될 것이다. 표 1은 도 4의 S120 및 S125 단계들, 도 5의 S220, S225, 및 S230 단계들, 및 도 6의 S325, S330, 및 S335 단계들의 결과일 수도 있다.
제 1 내지 제 3 컨트롤러들(312, 322, 332) 각각은 페치한 명령의 논리 블록 어드레스에 대해 모듈로-N(modulo-N) 연산을 수행할 수 있다. N은 제출 큐(SQ)의 명령을 페치하는 컨트롤러들의 개수에 기초하여 결정되거나 또는 N은 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치들의 개수에 기초하여 결정될 수 있다. 표 1에서 N은, 예를 들어, 제 1 내지 제 3 컨트롤러들(312, 322, 332)의 개수인 3으로 가정한다.
표 1을 참조하면, 제 1 컨트롤러(312)는 모듈로 연산의 나머지 값이 0이면 해당 데이터에 대해 마스터 저장 장치의 역할을 수행할 수 있고, 나머지 값이 1이면 해당 데이터에 대해 유휴 저장 장치의 역할을 수행할 수 있고, 그리고 나머지 값이 2이면 해당 데이터에 대해 복제 저장 장치의 역할을 수행할 수 있다. 제 2 및 제 3 컨트롤러들(322, 332)의 역할들도 제 1 컨트롤러(312)와 유사한 방식으로 결정될 수 있다.
데이터의 관점에서, 논리 블록 어드레스가 0인 데이터에 대해 제 1 컨트롤러(312)는 마스터 저장 장치로서 데이터를 저장 또는 카피할 수 있고, 제 2 컨트롤러(322)는 복제 저장 장치로서 데이터를 저장, 카피 또는 백업할 수 있다. 반면에, 제 3 컨트롤러(332)는 논리 블록 어드레스가 0인 데이터에 대해 아무런 작업을 수행하지 않을 수 있다. 다른 논리 블록 어드레스 값을 갖는 다른 데이터도 전술한 데이터와 유사한 방식으로 제 1 내지 제 3 저장 장치들(310~330)의 역할들이 결정될 수 있다.
제 1 컨트롤러(312) 관점에서, 제 1 컨트롤러(312)는 제 1 설정값(0), 제 2 설정값(1), 제 3 설정값(2)을 사전에 저장할 수 있다. 제 1 내지 제 3 설정값들은 도 3의 메모리 장치들(211~213), 버퍼 메모리(240), 또는 컨트롤러(220) 내부의 레지스터(미도시) 등에 저장될 수 있다. 제 1 내지 제 3 설정값들은 사전에 결정된 값이고, 도 3의 저장 장치 인터페이스 회로(226)에 의해 제 2 및 제 3 저장 장치들(320, 330)과 공유될 수 있다.
제 1 컨트롤러(312)는 모듈로 연산의 나머지 값과 제 1 설정값(0)이 일치하면 해당 명령에 대해 마스터 저장 장치로서 동작할 수 있다. 예를 들어, 제 1 컨트롤러(312)는 모듈로 연산의 나머지 값과 제 1 설정값(0)이 일치하면 해당 명령을 처리하고(S121, S221, 및 S326 단계들) 제 2 컨트롤러(322)로부터 알림 신호를 수신할 수 있다(S130, S235, 및 S340 단계들).
제 1 컨트롤러(312)는 모듈로 연산의 나머지 값과 제 2 설정값(1)이 일치하면 해당 명령에 대해 유휴 저장 장치로서 동작할 수 있다. 예를 들어, 제 1 컨트롤러(312)는 모듈로 연산의 나머지 값과 제 2 설정값(1)이 일치하면 해당 명령에 대해 아무런 작업을 수행하지 않을 수 있고(S231 및 S336 단계들) 알림 신호를 마스터 저장 장치로 전송할 수 있다(S235 및 S340 단계들).
제 1 컨트롤러(312)는 모듈로 연산의 나머지 값과 제 3 설정값(2)이 일치하면 해당 명령에 대해 복제 저장 장치로서 동작할 수 있다. 예를 들어, 제 1 컨트롤러(312)는 모듈로 연산의 나머지 값과 제 3 설정값(2)이 일치하면 해당 명령을 처리하고(S126, S226, 및 S331 단계들) 알림 신호를 마스터 저장 장치로 전송할 수 있다(S130, S235, 및 S340 단계들).
실시 예에 있어서, 제 1 내지 제 3 컨트롤러들(312, 322, 332) 각각에 저장된 설정값들은 고정된 값일 수도 있다. 다른 실시 예에 있어서, 설정값들은 동적으로 변경될 수 있다. 예를 들어, 제 1 내지 제 3 저장 장치들(310~330)의 작업량의 균형(load balance)을 조정하기 위해, 제 1 내지 제 3 컨트롤러들(312, 322, 332) 각각에 저장된 설정값들이 변경될 수 있다.
도 7은 본 발명의 실시 예에 따른 컨트롤러의 설정값들의 변화에 따른 데이터에 대한 마스터 장치들의 변화를 예시적으로 보여주는 도면이다. 도 7은 도 5 및 도 6, 그리고 표 1을 참조하여 설명될 것이다. 우선, 도 7의 왼편에서, 모듈로 3 연산의 나머지 값이 0인 데이터에 대해서는 제 1 저장 장치(310)가 마스터 저장 장치로서 동작하고, 모듈로 3 연산의 나머지 값이 1인 데이터에 대해서는 제 2 저장 장치가 마스터 저장 장치로서 동작하고, 모듈로 3 연산의 나머지 값이 2인 데이터에 대해서는 제 3 저장 장치가 마스터 저장 장치로서 동작할 수 있다.
이후, 제 1 저장 장치(310)에 작업량이 많아져서 제 1 저장 장치(310)의 작업량을 줄이려는 경우에, 제 1 내지 제 3 컨트롤러들(312, 322, 332)은 서로 통신하여 모듈로 연산의 방식을 변경할 수 있다. 예를 들어, 제 1 내지 제 3 컨트롤러들(312, 322, 332) 각각은 모듈로 5 연산을 수행할 수 있다. 제 1 저장 장치(310)는 모듈로 5 연산의 나머지 값이 0이면 마스터 저장 장치로 동작하고, 제 2 저장 장치(320)는 모듈로 5 연산의 나머지 값이 1 또는 3이면 마스터 저장 장치로 동작하고, 그리고 제 3 저장 장치(330)는 모듈로 5 연산의 나머지 값이 2 또는 4이면 마스터 저장 장치로 동작할 수 있다.
도 7의 오른편을 참조하면, 데이터에 대한 마스터 저장 장치의 맵핑 관계가 업데이트됨으로써 제 1 저장 장치(310)의 작업량이 감소될 수 있다. 즉, 제 1 내지 제 3 컨트롤러들(312, 322, 332)은 서로 통신하여 설정값들 또는 모듈로 연산의 방식 등을 변경할 수 있다. 호스트(100)는 이러한 변경 과정에 관여하지 않을 수 있다.
도 8은 도 5의 제 1 내지 제 3 저장 장치들 중 복제 저장 장치로서 동작하는 제 2 저장 장치의 동작이 중단된 경우 새로운 복제 저장 장치가 결정되는 과정을 예시적으로 보여주는 순서도이다. 도 8은 도 5를 참조하여 설명될 것이다.
S410 내지 S430 단계들에서, 제 1 내지 제 3 컨트롤러들(312, 322, 332)은 문의 신호 및 응답 신호를 서로 전송하거나 수신할 수 있다. 전술한대로, 문의 신호는 다른 저장 장치의 동작이 중단되었는지 또는 오류가 발생하였는지 여부를 확인하기 위한 신호이고 응답 신호는 문의 신호를 수신한 저장 장치에서 전송된 신호일 수 있다. S410 내지 S430 단계들은 제 1 내지 제 3 컨트롤러들(312, 322, 332)의 오류 인식 모듈들(228, 도 3 참조)에 의해 수행될 수 있다.
S440 단계에서, 제 2 저장 장치(320)의 동작이 임의의 이유로 중단될 수 있다. 예를 들어, 제 2 저장 장치(320)의 동작은 다른 저장 장치로 인한 충돌, 외부 충격, 전력 불안정, 수명 등과 같은 다양한 이유로 중단될 수 있다. 이 경우, 제 2 저장 장치(320)는 제 1 및 제 3 컨트롤러들(312, 332)의 문의 신호들에 대해 응답 신호들을 생성할 수 없다. 따라서, 제 1 및 제 3 컨트롤러들(312, 332)은 제 2 저장 장치(320)의 동작이 중단되었음을 확인할 수 있다.
S450 단계에서, 제 1 컨트롤러(312)는 제 3 저장 장치(330)를 새로운 복제 저장 장치로서 결정할 수 있고 전술한 설정값들을 새로이 업데이트할 수 있다. 만약 도시된 것과 달리 유휴 저장 장치들의 개수가 둘 이상이면, 제 1 컨트롤러(312)는 유휴 저장 장치들 중 어느 하나를 새로운 복제 저장 장치로서 결정할 수 있다. 예를 들어, 둘 이상의 유휴 저장 장치들 중 작업량이 가장 적은 저장 장치를 새로운 복제 저장 장치로서 결정할 수 있다.
도 9는 도 8에서 제 1 컨트롤러가 제 3 저장 장치를 새로운 복제 저장 장치로 결정한 후 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다. 도 9는 도 5 및 도 8을 참조하여 설명될 것이다. 도 9에서 제 2 저장 장치(320)의 동작은 중단되었다(S440 단계 참고).
S505 내지 S515 단계들은 도 5의 S205 내지 S215 단계들과 실질적으로 동일할 수 있다. 다만, 제 2 저장 장치(320)의 동작이 중단되었으므로, S515 단계에서 제 2 컨트롤러(322)는 제출 큐(SQ)로부터 명령을 페치할 수 없다.
S520 및 S521 단계들은 도 5의 S220 및 S221 단계들과 실질적으로 동일할 수 있다. 제 3 저장 장치(330)는 새로운 복제 저장 장치로서 S525 및 S526 단계들을 수행할 수 있다. S525 및 S526 단계들은 도 5의 S225 및 S226 단계들과 실질적으로 동일할 수 있다.
S440 단계(도 8 참조)에서 제 1 컨트롤러(312)의 오류 인식 모듈이 제 2 저장 장치(320)의 동작이 중단된 것을 확인하면, S530 단계에서 제 1 컨트롤러(312)는 호스트(100)의 명령을 페치한 제 3 저장 장치(330)로부터, 제 3 저장 장치(330)에 의해 명령이 처리되었음을 나타내는 알림 신호를 수신할 수 있다. 이후, S535 내지 S550 단계들은 도 5의 S240 내지 S255 단계들과 실질적으로 동일할 수 있다.
도 10은 도 5의 제 1 내지 제 3 저장 장치들 중 마스터 저장 장치로서 동작하는 제 1 저장 장치의 동작이 중단된 경우 새로운 마스터 저장 장치가 결정되는 과정을 예시적으로 보여주는 순서도이다. 도 10은 도 5 및 도 8을 참조하여 설명될 것이다.
S610 내지 S630 단계들은 도 8의 S410 내지 S430 단계들과 실질적으로 동일할 수 있다. S640 단계에서, 제 1 저장 장치(310)의 동작은 임의의 이유로 중단될 수 있다. 이 경우, 제 1 저장 장치(310)는 제 2 및 제 3 컨트롤러들(322, 332)의 문의 신호들에 대해 응답 신호들을 생성할 수 없다. 따라서, 제 2 및 제 3 컨트롤러들(322, 332)은 마스터 저장 장치로서 동작하는 제 1 저장 장치(310)의 동작이 중단되었음을 확인할 수 있다.
S650 단계에서, 제 2 및 제 3 컨트롤러들(322, 332)은 제 2 및 제 3 저장 장치들(320, 330) 중 어느 하나를 새로운 마스터 저장 장치로서 결정할 수 있고 전술한 설정값들을 새로이 업데이트할 수 있다. 예를 들어, 제 2 및 제 3 저장 장치들(320, 330) 중 작업량이 가장 적은 저장 장치가 새로운 마스터 저장 장치로서 결정될 수 있다. 그리고 나머지 저장 장치들 중 어느 하나가 새로운 복제 저장 장치로서 결정될 수 있다.
도 11은 도 10에서 제 2 및 제 3 컨트롤러들이 제 2 저장 장치를 새로운 마스터 저장 장치로 결정한 후 호스트와 저장 장치들간의 멀티캐스트 통신 방법을 예시적으로 보여주는 순서도이다. 도 11은 도 5 및 도 10을 참조하여 설명될 것이다. 도 11에서 제 1 저장 장치(310)의 동작은 중단되었고(S640 단계 참고), 제 2 및 제 3 컨트롤러들(322, 332)에 의해 제 2 저장 장치(320)가 새로운 마스터 저장 장치로서 결정될 수 있고, 제 3 저장 장치(330)가 새로운 복제 저장 장치로서 결정될 수 있다.
S705 내지 S715 단계들은 도 5의 S205 내지 S215 단계들과 실질적으로 동일할 수 있다. 다만, 제 1 저장 장치(310)의 동작은 중단되었으므로, S715 단계에서 제 1 컨트롤러(312)는 제출 큐(SQ)로부터 명령을 페치할 수 없다.
제 2 저장 장치(320)는 새로운 마스터 저장 장치로서 S720 및 S721 단계들을 수행할 수 있다. S720 및 S721 단계들은 도 5의 S220 및 S221 단계들과 실질적으로 동일할 수 있다. 제 3 저장 장치(330)는 새로운 복제 저장 장치로서 S725 및 S726 단계들을 수행할 수 있다. S725 및 S726 단계들은 도 5의 S225 및 S226 단계들과 실질적으로 동일할 수 있다
S640 단계(도 10 참조)에서 제 2 컨트롤러(322)의 오류 인식 모듈이 제 1 저장 장치(310)의 동작이 중단된 것을 확인하면, S730 단계에서 제 2 컨트롤러(322)는 호스트(100)의 명령을 페치한 제 3 저장 장치(330)로부터, 제 3 저장 장치(330)에 의해 명령이 처리되었음을 나타내는 알림 신호를 수신할 수 있다. 또한, 제 3 컨트롤러(332)의 오류 인식 모듈이 제 1 저장 장치(310)의 동작이 중단된 것을 확인하면, 제 3 컨트롤러(332)는 호스트(100)의 명령을 페치한 제 2 저장 장치(320, 이전 복제 저장 장치, 현재 마스터 장치)로 알림 신호를 전송할 수 있다. 이후, S735 내지 S750 단계들은 도 5의 S240 내지 S255 단계들과 실질적으로 동일할 수 있다.
다른 실시 예에 있어서, 제 3 저장 장치(330)가 새로운 마스터 저장 장치로서 결정될 수도 있고 제 2 저장 장치(320)는 그대로 복제 저장 장치로서 동작할 수 있다. 이 경우, 제 3 컨트롤러(332)는 S720, S721 단계들을 수행할 수 있고, 제 2 컨트롤러(322)는 S725, S726 단계들을 수행할 수 있다.
도 12는 본 발명의 실시 예에 따른 멀티캐스트 통신 프로토콜에 따라 벡터 명령이 호스트에서 저장 장치들로 전송된 것을 예시적으로 보여주는 도면이다. 도 12를 참조하면, 저장 시스템(400)은 호스트(410) 그리고 제 1 및 제 2 저장 장치들(420, 430)을 포함할 수 있다. 전술한 멀티캐스트 통신 방법에 따라 호스트(410)는 제 1 및 제 2 저장 장치들(420, 430)로 벡터 명령(Vector Command)을 전송할 수 있다.
벡터 명령은 도시된 것과 같이 명령들의 리스트(List) 또는 집합일 수 있다. 명령들 각각에는 논리 블록 어드레스가 할당될 수 있고 논리 블록 어드레스에 의해 메모리 장치의 메모리 블록이 지정될 수 있다. 제 1 및 제 2 저장 장치들(420, 430) 각각은 전술한 도 4 내지 도 11의 멀티캐스트 통신 방법들에 따라 병렬적으로 호스트가 생성한 벡터 명령을 페치하고 벡터 명령을 처리할 수 있다.
도 13은 본 발명의 다른 실시 예에 따른 저장 시스템을 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 저장 시스템(500)은 호스트(510) 그리고 제 1 및 제 2 저장 장치들(520, 530)을 포함할 수 있다. 호스트(510)는 제 1 쌍(512), 제 2 쌍(514), 및 제 3 쌍(516)을 포함할 수 있다.
제 1 쌍(512)은 제 1 및 제 2 저장 장치들(520, 530)에 의해 접근될 수 있다. 좀 더 구체적으로, 제 1 및 제 2 저장 장치들(520, 530)은 제 1 쌍(512)의 제출 큐(SQ)로부터 명령을 페치할 수 있고, 제 1 및 제 2 저장 장치들(520, 530) 중 마스터 저장 장치는 제 1 쌍(512)의 완료 큐(CQ)에 완료 정보를 기입할 수 있다. 제 1 쌍(512)은 제 1 및 제 2 저장 장치들(520, 530)에 의해 공유될 수 있다. 호스트(510)에 의해 제 1 쌍의 제출 큐(SQ) 테일 도어벨이 기입되도록, 제 1 저장 장치(520)는 제 1 레지스터(522)를 포함할 수 있고 제 2 저장 장치(530)는 제 1 레지스터(532)를 포함할 수 있다.
제 2 쌍(514)은 제 1 저장 장치(520)에 의해 접근될 수 있다. 제 2 쌍(514)은 제 1 저장 장치(520)를 위한 전용 큐일 수 있다. 호스트(510)에 의해 제 2 쌍의 제출 큐(SQ) 테일 도어벨이 기입되도록, 제 1 저장 장치(520)는 제 2 레지스터(524)를 포함할 수 있다.
제 3 쌍(516)은 제 2 저장 장치(530)에 의해 접근될 수 있다. 제 3 쌍(516)은 제 2 저장 장치(530)를 위한 전용 큐일 수 있다. 호스트(510)에 의해 제 3 쌍의 제출 큐(SQ) 테일 도어벨이 기입되도록, 제 2 저장 장치(530)는 제 2 레지스터(534)를 포함할 수 있다.
즉, 호스트(510)는 제 1 및 제 2 저장 장치들(520, 530)을 위한 공유 큐(제 1 쌍(512))뿐만 아니라, 제 1 저장 장치(520)를 위한 전용 큐(제 2 쌍(514)) 및 제 2 저장 장치(530)를 위한 전용 큐(제 3 쌍(516))를 더 포함할 수 있다.
도 14는 본 발명의 또 다른 실시 예에 따른 저장 시스템을 예시적으로 보여주는 도면이다. 도 14를 참조하면, 저장 시스템(600)은 제 1 내지 제 4 저장 장치들(610~640)을 포함할 수 있다. 제 1 내지 제 4 저장 장치들(610~640)은 본 발명의 실시 예에 따른 멀티캐스트 통신 프로토콜에 따라 서로 통신할 수 있다. 즉, 제 1 내지 제 4 저장 장치들(610~640) 각각은 도 1 내지 도 11에서 전술한 호스트(100)의 동작을 수행할 수 있다. 여기서, 제 1 내지 제 4 저장 장치들(610~640) 각각은 분리되어 구현되거나 또는 하나의 반도체 장치로 집적되어 구현될 수도 있다.
제 1 저장 장치(610)는 제 1 쌍(612)을 포함할 수 있고, 제 2 저장 장치(620)는 제 2 쌍(622)을 포함할 수 있고, 제 3 저장 장치(630)는 제 3 쌍(632)을 포함할 수 있고, 그리고 제 4 저장 장치(640)는 제 4 쌍(642)을 포함할 수 있다. 제 1 내지 제 4 쌍들(612, 622, 632, 642) 각각은 도 13의 제 1 쌍(512)과 유사하게 다른 저장 장치들에 의해 공유될 수 있다. 제 1 쌍(612)은 제 2 내지 제 4 저장 장치들(620~640)에 의해 공유될 수 있고, 제 2 쌍(622)은 제 1, 제 3, 및 제 4 저장 장치들(610, 630, 640)에 의해 공유될 수 있고, 제 3 쌍(632)은 제 1, 제 2, 및 제 4 저장 장치들(610, 620, 640)에 의해 공유될 수 있고, 그리고 제 4 쌍(642)은 제 1 내지 제 3 저장 장치들(610~630)에 의해 공유될 수 있다.
본 발명의 실시 예에 따른 멀티캐스트 통신 프로토콜에 따라 제 1 내지 제 4 저장 장치들(610~640) 각각은 다른 저장 장치들과 통신하기 위해 다른 저장 장치들의 개수와 동일한 제출 큐 및 완료 큐의 쌍들을 포함하는 대신에, 제출 큐 및 완료 큐의 한 쌍만을 포함할 수 있다. 예를 들어, N개의 저장 장치들이 서로 통신하는 경우, 기존의 P2P(Peer to Peer) 통신 방법에 의하면, 총 N X (N-1)개의 제출 큐 및 완료 큐의 쌍들이 필요하다. 그러나, 본 발명의 실시 예에 의하면 단지 총 N개의 제출 큐 및 완료 큐의 쌍들이 필요하다.
도 15는 본 발명의 실시 예에 따른 멀티캐스트 통신 방법이 적용된 사용자 시스템을 보여주는 블록도이다. 도 15를 참조하면, 사용자 시스템(700)은 어플리케이션 프로세서(710), 메모리 모듈(720), 네트워크 모듈(730), 저장 장치(740), 및 사용자 인터페이스(750)를 포함한다.
어플리케이션 프로세서(710)는 사용자 시스템(700)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 어플리케이션 프로세서(710)는 사용자 시스템(700)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 어플리케이션 프로세서(710)는 SoC로 제공될 수 있다. 어플리케이션 프로세서(710)는 도 1의 호스트(11), 도 2의 호스트(100), 도 4 내지 도 6 그리고 도 8 내지 도 13의 호스트를 지칭할 수 있다.
메모리 모듈(720)은 사용자 시스템(700)의 주메모리, 동작 메모리, 버퍼 메모리 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(720)은 DDR4 SDRAM, LPDDR4 SDRAM, GDDR5 SDRAM, HBM 등과 같은 고속의 메모리 장치를 포함할 수 있다.
네트워크 모듈(730)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(730)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Division Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 무선 통신을 지원할 수 있다. 네트워크 모듈(730)은 어플리케이션 프로세서(710)에 포함될 수 있다.
저장 장치(740)는 데이터를 저장할 수 있다. 예를 들어, 저장 장치(740)는 어플리케이션 프로세서(710)로부터 수신한 데이터를 저장할 수 있다. 또는 저장 장치(740)는 저장 장치(740)에 저장된 데이터를 어플리케이션 프로세서(710)로 전송할 수 있다. 예시적으로, 저장 장치(740)는 도 1의 제 1 및 제 2 저장 장치들(12, 15), 도 3의 저장 장치(200), 도 4의 제 1 및 제 2 저장 장치들(310, 320), 도 5의 제 1 내지 제 3 저장 장치들(310~330), 도 12의 제 1 및 제 2 저장 장치들(420, 430), 도 13의 제 1 및 제 2 저장 장치들(520, 530), 또는 도 14의 제 1 내지 제 4 저장 장치들(610~640)을 지칭할 수 있다. 또한, 저장 장치(740)는 도 1 내지 도 14를 참조하여 설명된 멀티캐스트 통신 방법에 따라 동작할 수 있다.
사용자 인터페이스(750)는 어플리케이션 프로세서(710)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(750)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(750)는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diode) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
100: 호스트;
200, 310~330: 저장 장치;
220, 312, 322, 332: 컨트롤러;
226: 저장 장치 인터페이스 회로;
227: 알림 모듈;
228: 오류 인식 모듈;

Claims (20)

  1. 제 1 메모리 장치; 및
    제 1 컨트롤러를 포함하되,
    상기 제 1 컨트롤러는:
    저장 장치, 및 제 2 메모리 장치 및 제 2 컨트롤러를 포함하는 제 1 복제 저장 장치에 명령을 멀티캐스트(Multicast) 하는 호스트로부터, 논리 어드레스를 가리키는 상기 명령을 페치하고,
    상기 논리 어드레스에 기초하여 상기 명령을 처리하고, 그리고
    상기 제 1 복제 저장 장치로부터, 상기 제 1 복제 저장 장치에 의해 상기 명령이 처리되었음을 가리키는 알림 신호를 수신하도록 구성되고,
    상기 제 1 복제 저장 장치의 상기 제 2 컨트롤러는 상기 호스트의 상기 명령을 페치하도록 구성되는 저장 장치.
  2. 제 1 항에 있어서,
    상기 제 1 컨트롤러는, 상기 알림 신호를 수신한 것에 응답하여, 상기 제 1 컨트롤러가 상기 명령의 완료 정보를 상기 호스트로 전송하도록 더 구성된 저장 장치.
  3. 제 2 항에 있어서,
    상기 제 1 컨트롤러는:
    제 1 레지스터; 및
    제 2 레지스터를 포함하고,
    상기 제 1 컨트롤러는:
    상기 호스트의 제출 큐에 관한 제 1 정보를 상기 제 1 레지스터에 저장하고,
    상기 제 1 정보를 상기 제 1 복제 저장 장치로 전송하고,
    상기 호스트의 완료 큐에 관한 제 2 정보를 상기 제 2 레지스터에 저장하고, 그리고
    상기 제 2 정보를 상기 제 1 복제 저장 장치로 전송하도록 더 구성된 저장 장치.
  4. 제 1 항에 있어서,
    상기 제 1 컨트롤러는, 문의 신호를 상기 제 1 복제 저장 장치로 전송하고 그리고 상기 제 1 컨트롤러에 의해 상기 제 1 복제 저장 장치로부터 상기 문의 신호에 응답하는 응답 신호가 수신되는지를 결정함으로써, 상기 제 1 복제 저장 장치의 동작이 중단되었는지를 결정하도록 더 구성된 저장 장치.
  5. 제 4 항에 있어서,
    상기 제 1 컨트롤러는, 상기 제 1 복제 저장 장치의 동작이 중단되었다고 결정한 것에 응답하여, 상기 제 1 컨트롤러는 새로운 복제 저장 장치로서 제 2 복제 저장 장치를 결정하도록 더 구성된 저장 장치.
  6. 제 4 항에 있어서,
    상기 제 1 컨트롤러는 USB(Universal Serial Bus) 프로토콜, SCSI(Small Computer System Interface) 프로토콜, PCIe(PCI express) 프로토콜, NVMe(NVM express) 프로토콜, ATA(AT Attachment) 프로토콜, PATA(Parallel ATA) 프로토콜, SATA(Serial ATA) 프로토콜, 및 SAS(Serial Attached SCSI) 프로토콜 중 적어도 하나의 프로토콜에 따라 상기 제 1 복제 저장 장치와 통신하도록 더 구성되고, 그리고
    상기 제 1 컨트롤러는 상기 제 1 컨트롤러가 상기 문의 신호의 전송을 수행하고 그리고 상기 적어도 하나의 프로토콜에 기초하여 상기 응답 신호를 수신하도록 더 구성된 저장 장치.
  7. 제 1 항에 있어서,
    상기 제 1 컨트롤러는:
    상기 제 1 컨트롤러가 상기 논리 어드레스에 대해 모듈로(modulo) 연산을 수행하고, 그리고
    상기 제 1 컨트롤러가, 상기 모듈로 연산의 나머지 값이 제 1 값을 갖는 것에 응답하여, 상기 명령의 처리 및 상기 알림 신호의 수신을 수행하도록 더 구성된 저장 장치.
  8. 제 7 항에 있어서,
    상기 제 1 컨트롤러는 상기 제 1 복제 저장 장치와 통신하고 그리고 상기 제 1 값을 변경하도록 더 구성된 저장 장치.
  9. 제 1 메모리 장치; 및
    제 1 컨트롤러를 포함하되,
    상기 제 1 컨트롤러는:
    저장 장치, 및 제 2 메모리 장치 및 제 2 컨트롤러를 포함하는 마스터 저장 장치에 명령을 멀티캐스트(Multicast) 하는 호스트로부터, 논리 어드레스를 가리키는 상기 명령을 페치하고,
    상기 논리 어드레스에 기초하여 상기 명령을 처리하고, 그리고
    상기 마스터 저장 장치로, 상기 명령이 처리되었음을 가리키는 알림 신호를 전송하도록 구성되고,
    상기 마스터 저장 장치의 상기 제 2 컨트롤러는 상기 호스트의 상기 명령을 페치하도록 구성되는 저장 장치.
  10. 제 9 항에 있어서,
    상기 제 1 컨트롤러는:
    제 1 레지스터; 및
    제 2 레지스터를 포함하고,
    상기 제 1 컨트롤러는:
    상기 호스트의 제출 큐에 관한 제 1 정보를 상기 제 1 레지스터에 저장하고,
    상기 호스트 및 상기 마스터 저장 장치 중 적어도 하나로부터 수신된 정보에 기초하여 상기 제 1 정보를 업데이트하고,
    상기 호스트의 완료 큐에 관한 제 2 정보를 상기 제 2 레지스터에 저장하고, 그리고
    상기 호스트 및 상기 마스터 저장 장치 중 적어도 하나로부터 수신된 정보에 기초하여 상기 제 2 정보를 업데이트하도록 더 구성된 저장 장치.
  11. 제 9 항에 있어서,
    상기 제 1 컨트롤러는, 문의 신호를 상기 마스터 저장 장치로 전송하고 그리고 상기 제 1 컨트롤러에 의해 상기 마스터 저장 장치로부터 상기 문의 신호에 응답하는 응답 신호가 수신되는지를 결정함으로써, 상기 마스터 저장 장치의 동작이 중단되었는지를 결정하도록 더 구성된 저장 장치.
  12. 제 11 항에 있어서,
    상기 저장 장치는 제 1 복제 저장 장치이고, 그리고
    상기 제 1 컨트롤러는, 상기 마스터 저장 장치의 동작이 중단되었다고 결정한 것에 응답하여, 상기 제 1 컨트롤러는 새로운 마스터 저장 장치로서 제 2 복제 저장 장치를 결정하도록 더 구성된 저장 장치.
  13. 제 11 항에 있어서,
    상기 저장 장치는 제 1 복제 저장 장치이고, 그리고
    상기 제 1 컨트롤러는, 상기 마스터 저장 장치의 동작이 중단되었다고 결정한 것에 응답하여:
    상기 제 1 컨트롤러가 새로운 마스터 저장 장치로서 상기 제 1 복제 저장 장치를 결정하고, 그리고
    상기 제 1 컨트롤러가, 제 2 복제 저장 장치로부터 알림 신호를 수신한 것에 응답하여, 상기 호스트로 완료 정보를 전송하도록 더 구성되고,
    상기 완료 정보는 상기 새로운 마스터 저장 장치 및 상기 제 2 복제 저장 장치에 의해 상기 호스트로부터 페치된 명령의 처리가 완료되었음을 가리키는 저장 장치.
  14. 제 9 항에 있어서,
    상기 제 1 컨트롤러는:
    상기 제 1 컨트롤러가 상기 논리 어드레스에 대해 모듈로(modulo) 연산을 수행하고, 그리고
    상기 제 1 컨트롤러가, 상기 모듈로 연산의 나머지 값이 제 1 값을 갖는 것에 응답하여, 상기 명령의 처리 및 상기 알림 신호의 전송을 수행하도록 더 구성된 저장 장치.
  15. 제 14 항에 있어서,
    상기 제 1 컨트롤러는 상기 마스터 저장 장치와 통신하고 그리고 상기 제 1 값을 변경하도록 더 구성된 저장 장치.
  16. 제 1 및 제 2 저장 장치들에 명령을 멀티캐스트(Multicast) 하는 호스트의 통신 방법에 있어서:
    상기 제 1 및 제 2 저장 장치들을 제어하는 상기 명령을 생성하는 단계;
    적어도 상기 제 1 저장 장치의 레지스터를 업데이트함으로써, 상기 제 1 및 제 2 저장 장치들이 상기 명령을 페치하도록 하는 단계; 및
    상기 명령이 상기 제 2 저장 장치에서 처리되고 그리고 상기 제 2 저장 장치가 상기 명령이 상기 제 1 저장 장치로 처리되었음을 가리키는 알림 신호를 전송하면, 상기 제 1 저장 장치로부터 상기 명령의 완료 정보를 수신하는 단계를 포함하되,
    상기 제 1 저장 장치는 상기 호스트의 상기 명령을 페치하도록 구성된 제 1 컨트롤러, 및 상기 제 1 컨트롤러에 의해 제어되는 제 1 메모리를 포함하고, 그리고
    상기 제 2 저장 장치는 상기 호스트의 상기 명령을 페치하도록 구성된 제 2 컨트롤러, 및 상기 제 2 컨트롤러에 의해 제어되는 제 2 메모리를 포함하는 통신 방법.
  17. 제 16 항에 있어서,
    상기 제 1 저장 장치의 상기 레지스터가 업데이트하면, 상기 호스트에 의해, 상기 제 2 저장 장치의 레지스터를 업데이트하는 단계를 더 포함하는 통신 방법.
  18. 제 16 항에 있어서,
    상기 호스트가 상기 제 1 저장 장치의 상기 레지스터를 업데이트하면, 상기 제 2 저장 장치의 레지스터는 상기 제 1 저장 장치에 의해 업데이트되는 통신 방법.
  19. 제 16 항에 있어서,
    상기 호스트는 상기 명령을 저장하도록 구성된 제출 큐 및 상기 완료 정보를 저장하도록 구성된 완료 큐를 포함하고, 그리고
    상기 제출 큐 및 상기 완료 큐를 포함하는 한 쌍은 상기 제 1 및 제2 저장 장치들에 의해 공유되는 통신 방법.
  20. 제 16 항에 있어서,
    상기 제 1 저장 장치의 동작이 중단되면, 상기 제 2 저장 장치로부터 상기 명령의 상기 완료 정보를 수신하는 단계를 더 포함하되,
    상기 제 2 저장 장치로부터 상기 명령의 상기 완료 정보를 수신하는 단계는:
    상기 제 2 저장 장치에서, 상기 제 1 저장 장치의 동작이 중단되었는지를 결정하는 신호를, 상기 제 1 저장 장치로 전송하는 단계를 포함하는 통신 방법.
KR1020170121411A 2017-09-20 2017-09-20 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법 KR102340287B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170121411A KR102340287B1 (ko) 2017-09-20 2017-09-20 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
US15/964,737 US10572402B2 (en) 2017-09-20 2018-04-27 Storage device communicating with host according to multicast communication protocol and communication method of host
CN201810893708.2A CN109522250B (zh) 2017-09-20 2018-08-07 根据多播通信协议与主机通信的存储设备和主机通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170121411A KR102340287B1 (ko) 2017-09-20 2017-09-20 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법

Publications (2)

Publication Number Publication Date
KR20190033122A KR20190033122A (ko) 2019-03-29
KR102340287B1 true KR102340287B1 (ko) 2021-12-20

Family

ID=65719337

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170121411A KR102340287B1 (ko) 2017-09-20 2017-09-20 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법

Country Status (3)

Country Link
US (1) US10572402B2 (ko)
KR (1) KR102340287B1 (ko)
CN (1) CN109522250B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781098B (zh) * 2018-07-31 2023-03-28 爱思开海力士有限公司 用于彼此接合多个存储器***的设备和方法
US11157207B2 (en) 2018-07-31 2021-10-26 SK Hynix Inc. Apparatus and method for engaging plural memory system with each other to store data
US11249919B2 (en) 2018-07-31 2022-02-15 SK Hynix Inc. Apparatus and method for managing meta data for engagement of plural memory system to store data
US10901733B1 (en) * 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Open channel vector command execution
EP4024224B1 (en) * 2019-08-30 2024-02-28 Unitex Corporation Interface conversion device
US11514194B2 (en) * 2019-12-19 2022-11-29 Advanced Micro Devices, Inc. Secure and power efficient audio data processing
KR20220048303A (ko) * 2020-10-12 2022-04-19 삼성전자주식회사 크레딧을 이용하는 호스트 장치와 스토리지 장치의 동작 방법
US11907587B2 (en) 2021-06-09 2024-02-20 Western Digital Technologies, Inc. Managing persistent memory regions across multiple protocols

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083281A1 (en) 2000-12-22 2002-06-27 Bull Hn Information Systems Inc. Write logging in mirrored disk subsystems
US20080313505A1 (en) 2007-06-14 2008-12-18 Samsung Electronics Co., Ltd. Flash memory wear-leveling
US20140189212A1 (en) 2011-09-30 2014-07-03 Thomas M. Slaight Presentation of direct accessed storage under a logical drive model

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139260A (ja) 2002-10-16 2004-05-13 Hitachi Ltd マルチプロセッサによるコマンド処理方式
JP4403893B2 (ja) * 2004-06-21 2010-01-27 株式会社日立製作所 マルチキャストパケット転送装置
CN101222414B (zh) * 2007-01-11 2012-08-08 华为技术有限公司 实现组播通信的装置、***和方法
US8627015B2 (en) 2009-07-31 2014-01-07 Emc Corporation Data processing system using cache-aware multipath distribution of storage commands among caching storage controllers
US8909864B2 (en) 2011-09-30 2014-12-09 Hewlett-Packard Development Company, L.P. Multicast write commands
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9170755B2 (en) 2013-05-21 2015-10-27 Sandisk Technologies Inc. Command and data selection in storage controller systems
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
KR102330391B1 (ko) 2014-09-11 2021-11-24 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법
US9990159B2 (en) 2015-06-26 2018-06-05 Xitore, Inc. Apparatus, system, and method of look-ahead address scheduling and autonomous broadcasting operation to non-volatile storage memory
KR20170032502A (ko) * 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083281A1 (en) 2000-12-22 2002-06-27 Bull Hn Information Systems Inc. Write logging in mirrored disk subsystems
US20080313505A1 (en) 2007-06-14 2008-12-18 Samsung Electronics Co., Ltd. Flash memory wear-leveling
US20140189212A1 (en) 2011-09-30 2014-07-03 Thomas M. Slaight Presentation of direct accessed storage under a logical drive model

Also Published As

Publication number Publication date
US10572402B2 (en) 2020-02-25
CN109522250A (zh) 2019-03-26
CN109522250B (zh) 2023-03-21
US20190087362A1 (en) 2019-03-21
KR20190033122A (ko) 2019-03-29

Similar Documents

Publication Publication Date Title
KR102340287B1 (ko) 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
US10742737B2 (en) Storage device and electronic device including the same
US9785545B2 (en) Method and apparatus for providing dual memory access to non-volatile memory
US20190155760A1 (en) NVME Data Processing Method and NVME Device
US9395921B2 (en) Writing data using DMA by specifying a buffer address and a flash memory address
US20170177541A1 (en) Apparatus and method for transferring data and commands in a memory management environment
US9734085B2 (en) DMA transmission method and system thereof
US9496039B2 (en) Storage device and method for performing interruption control thereof
US10789019B2 (en) Storage device capable of managing jobs without intervention of a processor
JP6021759B2 (ja) メモリシステムおよび情報処理装置
US11294834B2 (en) Data processing system allocating memory area in host as extension of memory and operating method thereof
JP2013109419A (ja) 情報処理装置
WO2019090493A1 (zh) 内存块回收方法和装置
KR20190020229A (ko) 스토리지 장치의 어드레스 맵핑 방법 및 동작 방법
US20190004736A1 (en) Storage device previously managing physical address to be allocated for write data
US11055220B2 (en) Hybrid memory systems with cache management
KR20180092715A (ko) 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치
US9971549B2 (en) Method of operating a memory device
KR20190051530A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US10783033B2 (en) Device and method for accessing in-band memory using data protection
US20210224209A1 (en) Computing system for transmitting completion early between serially connected electronic devices
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
JP2017068806A (ja) 情報処理装置および情報処理方法
KR20220036169A (ko) 메모리 시스템 및 데이터 처리 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant