KR102219759B1 - 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법 - Google Patents

저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102219759B1
KR102219759B1 KR1020150003372A KR20150003372A KR102219759B1 KR 102219759 B1 KR102219759 B1 KR 102219759B1 KR 1020150003372 A KR1020150003372 A KR 1020150003372A KR 20150003372 A KR20150003372 A KR 20150003372A KR 102219759 B1 KR102219759 B1 KR 102219759B1
Authority
KR
South Korea
Prior art keywords
resource sharing
storage device
memory
storage devices
devices
Prior art date
Application number
KR1020150003372A
Other languages
English (en)
Other versions
KR20160086475A (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 KR1020150003372A priority Critical patent/KR102219759B1/ko
Priority to US14/966,738 priority patent/US10031678B2/en
Publication of KR20160086475A publication Critical patent/KR20160086475A/ko
Application granted granted Critical
Publication of KR102219759B1 publication Critical patent/KR102219759B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/0661Format or protocol conversion arrangements
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile 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/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory

Abstract

저장 장치들을 포함하는 데이터 저장 시스템의 동작 방법은 상기 저장 장치들에서 리소스 공유 수행 여부에 대한 정보를 포함하는 패킷을 호스트로 전송하는 단계, 상기 저장 장치들에서 상기 호스트로부터 상기 저장 장치들 중 리소스 공유를 수행할 수 있는 저장 장치들의 ID 정보를 수신하는 단계, 상기 리소스 공유를 수행할 수 있는 저장 장치들 중 어느 하나의 저장 장치에서 나머지 저장 장치들로 리소스 공유 요청 메시지를 전송하는 단계 및 상기 나머지 저장 장치들 중 적어도 하나는 상기 리소스 공유를 수행하는 단계를 포함한다.

Description

저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법{STORAGE DEVICE, DATA STORAGE SYSTEM HAVING THE SAME, AND OPERATION METHOD THEREOF}
본 발명은 저장 장치, 그것을 포함하는 데이터 저장 시스템, 및 그것의 동작 방법에 관한 것이다.
스토리지 장치는 컴퓨터, 스마트 폰, 스마트패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 불 휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
불 휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다.
반도체 제조 기술이 발전되면서, 스토리지 장치의 고집적화 및 그에 따른 대용량화가 지속적으로 진행되고 있다. 스토리지 장치의 고집적화는 스토리지 장치의 생산 비용을 감소시킨다는 장점을 갖는다. 그러나, 스토리지 장치의 고집적화로 인해 스토리지 장치의 스케일이 감소하고 구조가 변화하면서, 기존에 발견되지 않은 다양한 문제들이 발견되고 있다. 새롭게 발견되고 있는 다양한 문제들은 스토리지 장치에 저장된 데이터를 손상시킬 수 있으며, 따라서, 스토리지 장치의 신뢰성이 저해될 수 있다. 스토리지 장치의 신뢰성을 향상시킬 수 있는 방법 및 장치에 대한 요구가 지속적으로 제기되고 있다.
본 발명의 목적은 리소스 공유를 수행하는 복수의 저장 장치들을 포함하는 데이터 저장 시스템을 제공하는 데에 있다.
본 발명의 실시 예에 따른 저장 장치들을 포함하는 데이터 저장 시스템의 동작 방법은 상기 저장 장치들에서 리소스 공유 수행 여부에 대한 정보를 포함하는 패킷을 호스트로 전송하는 단계, 상기 저장 장치들에서 상기 호스트로부터 상기 저장 장치들 중 리소스 공유를 수행할 수 있는 저장 장치들의 ID 정보를 수신하는 단계, 상기 리소스 공유를 수행할 수 있는 저장 장치들 중 어느 하나의 저장 장치에서 나머지 저장 장치들로 리소스 공유 요청 메시지를 전송하는 단계 및 상기 나머지 저장 장치들 중 적어도 하나는 상기 리소스 공유를 수행하는 단계를 포함한다.
실시 예로서, 상기 리소스 공유 요청 메시지를 전송한 뒤, 상기 나머지 저장 장치들로부터 리소스 공유 가능 여부에 대한 메시지를 수신하는 단계, 상기 어느 하나의 저장 장치에서 상기 나머지 저장 장치들 중 리소스 공유 가능한 저장 장치로 연산해야 하는 데이터 및 코드 정보를 포함한 메시지를 전송하는 단계,
상기 리소스 공유 가능한 저장 장치에서 상기 연산해야 하는 데이터 및 코드를 이용하여 연산을 수행하는 단계 및 상기 연산 결과 정보를 상기 어느 하나의 저장 장치로 전송하는 단계를 더 포함한다.
실시 예로서, 상기 리소스 공유 요청 메시지를 전송한 뒤, 상기 나머지 저장 장치들로부터 리소스 공유 가능 여부에 대한 메시지를 수신하는 단계, 상기 어느 하나의 저장 장치에서 상기 나머지 저장 장치들 중 리소스 공유 가능한 저장 장치로 저장해야 하는 데이터를 포함한 메시지를 전송하는 단계 및 상기 리소스 공유 가능한 저장 장치의 메모리 중 이용 가능한 메모리 영역에 상기 저장해야 하는 데이터가 프로그램 되는 단계를 더 포함한다.
실시 예로서, 상기 이용 가능한 메모리 영역은 프리 블록이다.
실시 예로서, 상기 패킷은 페이로드 영역에 상기 저장 장치들 각각의 구성 정보를 포함하고, 상기 구성 정보에 포함된 저장 장치 시리얼 번호 정보 영역 중 벤더에게 할당된 영역에 상기 리소스 공유 가능 여부에 대한 정보를 포함한다.
실시 예로서, 저장 장치는 복수의 메모리 장치들 및 상기 복수의 메모리 장치들을 제어하고, 리소스 공유의 가능 여부에 대한 정보를 포함한 패킷을 호스트로 전송하고, 상기 호스트로부터 상기 리소스 공유를 수행할 수 있는 저장 장치들의 ID 정보를 수신하고, 상기 리소스 공유를 수행할 수 있는 저장 장치들 사이에서 리소스 프로세서 또는 메모리 리소스 공유 요청 메시지를 보내거나, 상기 프로세서 또는 메모리 리소스 공유 요청 메시지에 응답하여 상기 리소스 공유를 수행하는 컨트롤러를 포함한다.
실시 예로서, 상기 컨트롤러는 상기 메모리 리소스 공유 요청 메시지를 수신하고, 상기 메모리 장치 중 이용 가능한 메모리 영역이 존재하면, 상기 이용 가능한 메모리 영역을 공유한다.
실시 예로서, 상기 컨트롤러는 상기 프로세서 리소스 공유 요청 메시지를 수신하고, 상기 프로세서가 추가적인 연산을 수행하면, 상기 프로세서를 공유한다.
실시 예로서, 상기 컨트롤러는 상기 프로세서 또는 메모리 리소스 공유 요청 메시지를 입 출력하고, 상기 프로세서 및 상기 메모리 리소스를 공유하기 위한 복수의 레지스터들을 포함하는 인터페이스를 더 포함한다.
본 발명의 실시 예에 따른 데이터 저장 시스템은 중앙 처리 장치, 상기 중앙 처리 장치와 연결되고, 상기 중앙 처리 장치의 트랜잭션을 대신하는 루트 콤플렉스, 상기 중앙 처리 장치 또는 상기 루트 콤플렉스의 동작 중 발생하는 데이터를 저장하는 시스템 메모리, 상기 루트 콤플렉스와 연결되는 인터페이스 스위치 및 상기 인터페이스 스위치를 통해 데이터를 송수신하는 엔드포인트 장치들을 포함하되, 상기 루트 콤플렉스는 상기 엔드포인트 장치들로부터 리소스 공유 가능 여부에 대한 정보를 포함한 구성 정보 패킷들을 수신하고, 상기 리소스 공유를 수행할 수 있는 엔드포인트 장치들에 대한 ID 정보를 포함하는 패킷을 전송하고, 상기 리소스 공유를 수행할 수 있는 엔드포인트 장치들은 서로의 리소스를 공유한다.
본 발명의 실시 예에 따른 데이터 저장 시스템은 초기 설정 시 저장 장치들의 리소스 공유의 수행 여부를 판단하고, 리소스 공유를 수행할 수 있는 저장 장치들 사이에서 메모리 및 프로세서 리소스를 공유함으로써, 효율적으로 데이터 관리를 수행할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 스위치 및 저장 장치들의 관계를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 리소스 공유 정보를 포함하는 패킷을 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 5는 본 발명의 제1 실시 예에 따른 리소스 공유 방법을 보여주는 블록도이다.
도 6은 본 발명의 제2 실시 예에 따른 리소스 공유 방법을 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 저장 장치들의 리소스 공유 가능 여부 판단을 보여주는 순서도이다.
도 8은 본 발명의 실시 예에 따른 프로세서 리소스 공유 방법을 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따른 메모리 리소스 공유 방법을 보여주는 순서도이다.
도 10은 본 발명의 제1 실시 예에 따른 저장 장치들의 메시지 전달 방법을 보여주는 블록도이다.
도 11은 본 발명의 제2 실시 예에 따른 저장 장치들의 메시지 전달 방법을 보여주는 블록도이다.
도 12는 본 발명의 다른 실시 예에 따른 데이터 저장 시스템을 보여주는 블록도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 시스템을 보여주는 블록도이다. 도 1을 참조하면, 데이터 저장 시스템(1000)은 중앙처리장치(이하, CPU)(1100), 루트 콤플렉스(1200), 그래픽 처리 장치(이하, GPU)(1300), 시스템 메모리(1400), 스위치(1500), 제1 및 제2 엔드포인트 장치들(1600, 1700)을 포함할 수 있다.
CPU(1100)는 루트 콤플렉스(1200)와 연결될 수 있다. CPU(1100)는 데이터 저장 장치(1000)의 전반적인 동작을 제어할 수 있다.
루트 콤플렉스(1200)는 내부 버스를 통하여 CPU(1100)와 연결될 수 있다. 루트 콤플렉스(1200)는 CPU(1100)와 엔드포인트 장치들(1600, 1700) 사이의 트랜잭션(transaction)을 관리할 수 있다. 예를 들어, 루트 콤플렉스(1200)는 트랜잭션과 관련된 메시지들을 라우팅(routing)할 수 있다. 루트 콤플렉스(1200)는 엔드포인트 장치들(1600, 1700)에 직접 연결되거나, 적어도 하나의 인터페이스 스위치(1500)를 통해 연결될 수 있다. 실시 예에 있어서, 루트 콤플렉스(1200)는 CPU(1100)와 분리된 장치로 구현되거나, CPU(1100)에 집적화되도록 구현될 수 있다.
GPU(1300)는 루트 콤플렉스(1200)와 연결될 수 있다. GPU(1300)는 그래픽 처리 속도를 빠르게 하기 위해 사용되는 장치이다. GPU(1300)는 CPU(1100)를 대신하여 그래픽을 처리함으로써, CPU(1100)의 부담을 줄일 수 있다.
시스템 메모리(1400)는 루트 콤플렉스(1200)를 통해 CPU(1100)와 통신할 수 있다. 시스템 메모리(1400)는 CPU(1100)/루트 콤플렉스(1200)의 구동에 필요한 데이터를 저장할 수 있다. 시스템 메모리(1400)는 CPU(1100)에 의해 제어된다. 시스템 메모리(1400)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM, MRAM, RRAM, FRAM 등과 같은 불 휘발성 메모리를 포함할 수 있다.
인터페이스 스위치(1500)는 루트 콤플렉스(1200)와 엔드포인트 장치들(1600, 1700)을 연결한다. 실시 예에 있어서, 인터페이스 스위치(1500)는, 루트 콤플렉스(1200)의 멀티캐스트 동작(multicast operation)을 지원하거나 혹은 엔드포인트 장치들(1600, 1700) 사이의 멀티캐스트 동작을 지원하도록 구현될 수 있다. 여기서 멀티캐스트 동작은 하나의 송신 패킷을 여러 곳에 전송하는 것을 말한다.
인터페이스 스위치(1500)는 루트 콤플렉스(1200)에 연결되는 업스트림(upstream) 포트(UP) 및 엔드포인트 장치들(1600, 1700) 각각에 연결되는 다운스트림 포트들(DP1, DP2)을 포함할 수 있다.
엔드포인트 장치들(1600, 1700) 각각은 데이터를 저장한다. 엔드포인트 장치들(1600, 1700) 각각은 멀티캐스트 동작을 지원하도록 구현될 수 있다. 실시 예에 있어서 엔드포인트 장치들(1600, 1700) 각각은 불 휘발성 메모리 장치로 구현된 저장 장치일 수 있다. 예를 들어, 엔드포인트 장치들(1600, 1700) 각각은 SSD(solid state drive), UFS(universal flash storage) 수 있다.
실시 예에 있어서, DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM, MRAM, RRAM, FRAM 등과 같은 불 휘발성 메모리를 포함할 수 있다.
엔드포인트 장치들(1600, 1700) 각각은 본 발명의 실시 예에 따라, 엔드포인트 장치들(1600, 1700)은 두 개 이상일 수 있다. 또한, 엔드포인트 장치들(1600, 1700)은 저장 장치들(1600, 1700)이라 할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 시스템(1000)의 엔드포인트 장치들(1600, 1700)은 초기 설정 시, 리소스 공유와 관련된 메시지(또는, 패킷)를 루트 콤플렉스(1200)로 전송할 수 있다.
예를 들어, 엔드포인트 장치들(1600, 1700)은 리소스 공유 가능 여부에 대한 정보를 메시지(혹은, 패킷)에 포함하여 루트 콤플렉스(1200)로 전송한다. 루트 콤플렉스(1200)는 멀티 캐스트 동작에 의하여 리소스 공유를 수행할 수 있는 엔드포인트 장치들에 대한 정보를 포함한 메시지(혹은, 패킷)를 엔드포인트 장치들(1600, 1700) 각각에 전송한다.
엔드포인트 장치들(1600, 1700)이 리소스 공유 가능한 장치들이면, 서로 프로세서 리소스를 공유할 수 있다. 그리고 엔드포인트 장치들(1600, 1700)은 메모리 리소스를 공유할 수 있다.
인터페이스 스위치(1500) 및 엔드포인트 장치들(1600, 1700)이 PCIe(Peripheral Component Interconnect Express) 인터페이스에 의해 구성되고, 엔드포인트 장치들(1600, 1700)이 SSD라고 가정한다.
도 2는 도 1에 도시된 스위치 및 저장 장치들의 관계를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 인터페이스 스위치(1500)는 가상 채널(1510) 및 업 스트림 포트(UP) 및 다운 스트림 포트들(DP1, DP2)를 포함할 수 있다. 인터페이스 스위치(1500)는 PCIe 인터페이스 규약에 따라 구현된다고 가정한다.
인터페이스 스위치(1500)는 PCIe 인터페이스 규약에 따라 트래픽 클래스(traffic class) 및 가상 채널(Virtual Channel)(1510)에 따라 동작한다. 트래픽 클레스는 트래픽의 중요도에 따라 다른 태그를 포함한다. 가상 채널(1510)은 가상의 라우팅 정보를 설정하고, 트래픽을 타깃 채널로 전송한다. 가상 채널(1510)은 트래픽 클래스에 따라 복수의 큐(queue)로 구분하거나, 큐를 통과하지 않고 바이패스될 수 있다.
인터페이스 스위치(1500)는 업 스트림 포트(UP)를 통해 루트 콤플렉스(1200)와 연결된다.
제1 저장 장치(1600)는 제1 컨트롤러(1610) 및 제1 메모리(1640)를 포함한다. 제1 컨트롤러(1610)는 제1 인터페이스(1620) 및 제1 프로세서(1630)를 포함할 수 있다. 제2 저장 장치(1700)는 제2 컨트롤러(1710) 및 제2 메모리(1740)를 포함한다. 제2 컨트롤러(1710)는 제2 인터페이스(1720) 및 제2 프로세서(1730)를 포함할 수 있다.
저장 장치들(1600, 1700) 각각은 제1 및 제2 인터페이스들(1620, 1720)을 통해 인터페이스 스위치(1500)와 연결된다. 제1 및 제2 인터페이스들(1620, 1720)은 PCIe 인터페이스 규약에 따라 구현된다고 가정한다.
도 2를 참조하면, 초기 설정 시, 제1 및 제2 인터페이스 회로들(1620, 1720) 각각은 저장 장치들(1600, 1700) 각각의 구성 정보를 포함하는 패킷들(CfgRd1, CfgRd2)을 인터페이스 스위치(1500)로 출력한다. 구성 정보를 포함한 패킷들(CfgRd1, CfgRd2)은 가상 채널(1510)을 통해 루트 콤플렉스(1200)로 전송된다.
루트 콤플렉스(1200) 구성 정보를 포함한 패킷들(CfgRd1, CfgRd2)에 포함된 특정 패턴을 통해 저장 장치들(1600, 1700)의 리소스 공유 수행 여부에 대한 정보를 취득한다. 저장 장치들(1600, 1700)이 리소스 공유를 수행할 수 있으면, 루트 콤플렉스(1200)는 저장 장치들(1600, 1700) 각각의 ID 정보를 포함하는 패킷(CfgWr)을 인터페이스 스위치(1500)로 출력한다.
인터페이스 스위치(1500)의 가상 채널(1510)은 ID 정보를 포함하는 패킷(CfgWr)을 저장 장치들(1600, 1700) 각각으로 출력한다.
도 3은 본 발명의 실시 예에 따른 리소스 공유 정보를 포함하는 패킷을 보여주는 블록도이다. 도 3을 참조하면, 패킷(Packet)은 초기 설정 시, 저장 장치의 구성 정보를 포함한다. 패킷(Packet)은 도 2의 구성 정보를 포함하는 패킷들(CfgRd1, CfgRd2)과 같은 구조를 포함할 수 있다. 구체적으로, 패킷은 헤더(Header), 페이로드(Payload), 및 CRC를 포함할 수 있다. 실시 예로서, 헤더는 패킷의 타입, 페이로드의 길이 정보를 포함한다. 즉, 헤더는 패킷에서 미리 정해지지 않은 모든 정보를 포함할 수 있다.
페이로드는 저장 장치의 구성 정보(Configuration Information)를 포함할 수 있다. 구성 정보는 Device ID, Vendor ID, 디바이스 시리얼 넘버 정보(Device serial number information)등을 포함할 수 있다. 본 발명의 실시 예에 따라, 저장 장치의 리소스 공유 정보는 디바이스 시리얼 넘버 정보에 특정한 패턴의 형태로 포함된다. 구체적으로, 디바이스 시리얼 넘버 정보 중, Vendor에게 할당된 영역에 리소스 공유 정보를 저장할 수 있다. Vendor에게 할당된 영역은 예비 비트(Reserved bit)일 수 있다. 리소스 공유 정보의 저장 장소는 디바이스 시리얼 넘버 정보 영역에 한정되지 않는다. 이는 하나의 실시 예이고, 리소스 공유 정보는 Vender에게 할당된 영역 어디에든 저장 가능하다.
도 4는 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 1 및 도 2에 도시된 엔드포인트 장치들(저장 장치들)(1600, 1700)은 도 4에 도시된 저장 장치(2000)와 같은 구조를 포함할 수 있다. 도 4를 참조하면, 도 저장 장치(2000)는 복수의 불 휘발성 메모리 장치들(2100) 및 그것들을 제어하는 메모리 제어기(2200)를 포함할 수 있다. 실시 예에 있어서, 저장 장치(2000)는 SSD(solid state drive), EMMC(embedded multimedia card), UFS(universal flash storage), SD(secure digital) 카드, USB 장치 등과 같은 다양한 데이터 저장 장치일 수 있다.
불 휘발성 메모리 장치들(2100) 각각은 적어도 하나의 비트를 저장하는 메모리 셀들로 구성된 복수의 메모리 블록들을 포함할 수 있다. 본 발명에 따른 불 휘발성 메모리 장치들(2100) 각각은 낸드 플래시 메모리(NAND Flash Memory), 기판과 수직 방향으로 적층되는 메모리 셀들을 갖는 3차원 플래시 메모리(Vertical NAND, 이하, 'VNAND'라고 함), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magneto resistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
또한, 본 발명의 불 휘발성 메모리 장치들(2100) 각각은 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다. 또한, 불 휘발성 메모리 장치들(1100)은 옵션적으로 외부 고전압(Vpp)을 제공받도록 구현될 수 있다.
메모리 제어기(2200)는 복수의 채널들(CH1 ~ CHi, i는 2 이상의 정수)을 통하여 불 휘발성 메모리 장치들(2100)에 연결된다. 메모리 제어기(2200)는 적어도 하나의 2프로세서(1210), 내부 메모리(2220), 에러 정정 회로(2230), 호스트 인터페이스(2240) 및 메모리 인터페이스(2250)를 포함한다.
적어도 하나의 프로세서(2210)는 저장 장치(2000)의 전반적인 동작을 제어할 수 있다.
내부 메모리(2220)는 메모리 제어기(1200)의 구동에 필요한 데이터를 임시로 저장할 것이다. 예를 들어, 내부 메모리(2220)는 호스트의 입출력 요청 시, 입출력 데이터를 임시로 저장할 수 있다. 내부 메모리(1220)는 쓰기 동작 시, 외부로부터 입력된 데이터를 불 휘발성 메모리 장치들(2100)에 프로그램 하기 위하여 임시로 저장하거나, 읽기 동작 시, 불 휘발성 메모리 장치들(2100)로부터 읽혀진 데이터를 외부로 출력하기 위하여 임시로 저장한다.
실시 예에 있어서, 내부 메모리(2220)는 데이터 혹은 명령을 저장하는 복수의 메모리 라인들을 포함할 수 있다. 여기서 복수의 메모리 라인들은, 프로세서(2210)에서 직접 액세스하는 캐시 라인들에 다양한 방법으로 맵핑 될 수 있다. 여기서 캐시 라인들은 프로세서(2210) 내부에 존재하거나 혹은 프로세서(2210) 외부에 별도로 구현될 수 있다.
에러 정정 회로(2230)는 입출력 데이터의 에러를 검출 및 정정하도록 구현될 수 있다. 예를 들어, 에러 정정 회로(2230)는 쓰기 동작에서 프로그램 될 데이터의 에러 정정 코드값을 계산하고, 읽기 동작에서 읽혀진 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 불 휘발성 메모리 장치(2100)로부터 읽혀진 데이터의 에러를 정정할 수 있다.
또한, 도시되지 않았지만 저장 장치(2000)는 메모리 제어기(2200)를 구동하는 데 필요한 코드 데이터를 저장하는 코드 메모리가 더 포함될 수 있다. 코드 메모리는 불 휘발성 메모리 장치(예를 들어, PRAM, MRAM 등)로 구현될 수 있다.
호스트 인터페이스(2240)는 외부의 장치(도 1에 도시된, "CPU", "루트 콤플렉스", 또는 "다른 저장 장치" 중 어느 하나)와 인터페이스 기능을 제공할 수 있다. 호스트 인터페이스(2240)는 초기 설정 시, 저장 장치(2000)의 리소스 공유 수행 여부에 대한 정보를 포함하는 구성 정보를 출력하도록 구현될 수 있다. 또한 호스트 인터페이스(2240)는 다른 저장 장치들로부터 리소스 공유 요청을 입력 받을 수 있다.
호스트 인터페이스(2240)는 리소스 공유가 가능하면, 다른 저장 장치로부터 연산하기 위한 데이터, 코드 및 저장하기 위한 데이터를 입력 받는다. 호스트 인터페이스(2240)는 입력 받은 연산하기 위한 데이터 및 코드를 프로세서(2210)로 전송할 수 있다. 또는 호스트 인터페이스(2240)는 저장하기 위한 데이터를 메모리 인터페이스(2250)를 통해 불 휘발성 메모리 장치(2100)로 전달할 수 있다. 예시적으로, 호스트 인터페이스(2240)는 PCIe 인터페이스, 썬더볼트(thunderbolt) 인터페이스 및 네트워크(network) 인터페이스 일 수 있다.
메모리 인터페이스(1260)는 불 휘발성 메모리 장치(1100)와 인터페이스 기능을 제공할 수 있다.
리소스 공유를 수행할 수 있는 저장 장치(2000)는, 리소스 공유 정보를 포함하는 패킷(Packet)을 발행 및 입력 받을 수 있다. 그리고, 리소스 공유를 수행할 수 있는 저장 장치들 사이에서 프로세서(2210) 또는 불 휘발성 메모리 장치(2100)를 공유하여 사용할 수 있다.
도 5는 본 발명의 제1 실시 예에 따른 리소스 공유 방법을 보여주는 블록도이다. 도 5는 저장 장치들(1600, 1700)의 프로세서 리소스 공유를 설명하기 위한 사시도이다. 도 5를 참조하면, 저장 장치들(1600, 1700)은 인터페이스 스위치(1500) 및 루트 콤플렉스(1200)를 통해 컨트롤러(1610, 1710)의 프로세서 리소스를 공유할 수 있다. 도 5의 저장 장치들(1600, 1700)은 DRAM, SDRAM등과 같은 휘발성 메모리, 또는 PRAM, MRAM, RRAM, FRAM 등과 같은 불 휘발성 메모리를 포함할 수 있다.
제1 저장장치(1600)의 제1 인터페이스(1620)는 제1 구성 레지스터(1621), 제1 정보 레지스터(1622), 제1 코드 레지스터(1623), 제1 데이터 레지스터(1624) 및 제1 결과 레지스터(1625)를 포함할 수 있다.
제2 저장장치(1700)의 제2 인터페이스(1720)는 제2 구성 레지스터(1721), 제2 정보 레지스터(1722), 제2 코드 레지스터(1723), 제2 데이터 레지스터(1724) 및 제2 결과 레지스터(1725)를 포함할 수 있다.
초기 설정 시, 루트 콤플렉스(1200)는 제1 및 제2 구성 레지스터(1621, 1721)로부터 제1 및 제2 저장 장치들(1600, 1700)의 구성 정보를 읽어온다(①). 구체적으로, 루트 콤플렉스(1200)는 제1 및 제2 구성 레지스터(1621, 1721)로부터 제1 및 제2 저장 장치들(1600, 1700)의 구성 정보를 포함한 패킷을 수신한다. 패킷의 Vendor에게 할당된 영역에는 리소스 공유 정보가 포함되어있다.
제1 및 제2 저장 장치들(1600, 1700)이 리소스 공유를 지원한다면, 루트 콤플렉스(1200)는 제1 및 제2 저장 장치들(1600,1700)의 ID 정보를 제1 및 제2 정보 레지스터(1612, 1712)로 전송한다(②). 따라서, 제1 및 제2 저장 장치들(1600, 1700)은 서로의 리소스를 공유할 수 있다. 리소스는 프로세서 리소스, 메모리 리소스등이다.
프로세서 리소스를 공유하는 경우, 제1 저장 장치(1600)는 프로세서 리소스 공유 요청 메시지를 제2 저장 장치(1700)로 전송한다(③).
제2 저장 장치(1700)는 리소스 공유 가능 여부에 대한 메시지를 제1 저장 장치(1600)로 전송한다(④). 구체적으로, 제2 프로세서(1730)가 추가적인 연산을 할 수 있으면, 리소스 공유 가능 정보를 포함하는 메시지를 제1 저장 장치(1600)로 전송한다. 제2 프로세서(1730)가 추가적인 연산을 할 수 없으면, 리소스 공유 불가능 정보를 포함하는 메시지를 제1 저장 장치(1600)로 전송한다.
제2 저장 장치(1700)가 리소스 공유를 수행할 수 있으면, 제1 저장 장치(1600)는 코드 및 연산하기 위한 데이터를 포함하는 메시지를 제2 저장 장치(1700)로 전송한다(⑤). 구체적으로, 제1 저장 장치(1600)는 코드 및 데이터를 제2 코드 레지스터(1723) 및 제2 데이터 레지스터(1724)로 각각 전송한다. 제2 코드 레지스터(1723) 및 제2 데이터 레지스터(1724)는 수신한 코드 및 데이터를 제2 프로세서(1730)로 전송한다. 제2 프로세서(1721)는 코드 및 데이터를 연산한다. 제2 프로세서(1730)는 연산 결과를 제2 결과 레지스터(1725)로 전송한다.
제2 결과 레지스터(1725)는 연산 결과 정보를 포함하는 메시지를 제1 저장 장치(1600)로 전송한다(⑥). 구체적으로 제2 결과 레지스터(1725)는 연산 결과 정보를 포함하는 메시지를 제1 결과 레지스터(1625)로 전송한다. 반대로, 제1 결과 레지스터(1625)는 제2 결과 레지스터(1725)로부터 연산 결과 정보가 포함된 메시지를 읽어올 수 있다.
반대로, 제2 저장 장치(1700)가 제1 저장 장치(1600)로 프로세서 리소스 공유를 요청하고, 제1 저장 장치(1600)가 제2 저장 장치(1600)의 연산을 대신 수행할 수 있다.
이와 같이 리소스 공유가 가능한 저장 장치들(1600, 1700) 사이에서 프로세서 리소스를 공유할 수 있다.
도 6은 본 발명의 제2 실시 예에 따른 리소스 공유 방법을 보여주는 블록도이다. 도 6은 저장 장치들(1600, 1700)의 메모리 리소스 공유를 설명하기 위한 사시도이다. 도 6을 참조하면, 저장 장치들(1600, 1700)은 인터페이스 스위치(1500) 및 루트 콤플렉스(1200)를 통해 제1 및 제2 메모리(1640, 1740) 리소스를 공유할 수 있다.
제1 및 제2 인터페이스(1610, 1710)의 구성은 도 5에 도시된 제1 및 제2 인터페이스(1610, 1710)와 동일하다.
초기 설정 시, 루트 콤플렉스(1200)는 제1 및 제2 구성 레지스터(1621, 1721)로부터 제1 및 제2 저장 장치들(1600, 1700)의 구성 정보를 읽어온다(①). 구체적으로, 루트 콤플렉스(1200)는 제1 및 제2 구성 레지스터(1621, 1721)로부터 제1 및 제2 저장 장치들(1600, 1700)의 구성 정보를 포함한 패킷을 수신한다. 패킷의 Vendor에게 할당된 영역에는 리소스 공유 정보가 포함되어있다.
제1 및 제2 저장 장치들(1600, 1700)이 리소스 공유를 지원한다면, 루트 콤플렉스(1200)는 제1 및 제2 저장 장치들(1600,1700)의 ID 정보를 제1 및 제2 정보 레지스터(1622, 1722)로 전송한다(②). 따라서, 제1 및 제2 저장 장치들(1600, 1700)은 서로의 자원을 공유할 수 있다. 리소스는 프로세서 자원, 메모리 리소스등을 지원할 수 있다.
메모리 리소스를 공유하는 경우, 제1 저장 장치(1600)는 메모리 리소스 공유 요청 메시지를 제2 저장 장치(1700)로 전송한다(③).
제2 저장 장치(1700)는 리소스 공유 가능 여부에 대한 메시지를 제1 저장 장치(1600)로 전송한다(④). 구체적으로, 제2 메모리(1740)에 사용 가능한 메모리 영역(Available Memory)이 존재하는 경우, 메모리 리소스 공유 가능 정보를 포함하는 메시지를 제1 저장 장치(1600)로 전송한다. 제2 메모리(1740)에 사용 가능한 메모리 영역이 존재하지 않는 경우, 메모리 리소스 공유 불가능 정보를 포함하는 메시지를 제1 저장 장치(1600)로 전송한다.
제2 저장 장치(1700)에 사용 가능한 메모리 영역이 있다면, 제1 저장 장치(1600)는 저장해야 하는 데이터를 메시지에 포함하여 제2 저장 장치(1700)로 전송할 수 있다(⑤). 구체적으로, 제1 저장 장치(1600)는 저장해야 하는 데이터를 포함한 메시지를 제2 인터페이스(1720)로 전송할 수 있다. 저장하기 위한 데이터는 제2 인터페이스(1720)를 통해 제2 메모리(1740)의 사용 가능한 메모리 영역에 프로그램 된다. 또한 제1 저장 장치(1600)는 제2 메모리(1740)에 프로그램된 데이터를 읽어올 수 있다.
반대로, 제2 저장 장치(1700)가 제1 저장 장치(1600)로 메모리 리소스 공유를 요청하고, 제1 저장 장치(1600)가 제2 저장 장치(1600)의 데이터를 대신 저장할 수 있다.
공유되는 리소스가 프리 블록인 경우, 제1 및 제2 저장 장치들(1600, 1700)은 가비지 콜렉션(garbage collection)을 수행하지 않을 수 있다. 가비지 콜렉션이란, 희생 블록(victim block)을 선택하고, 희생 블록의 유효 페이지(valid page)를 자유 블록(free block)에 복사하고, 희생 블록을 소거한 다음에 그것을 자유 블록으로 만든 동작이다.
가비지 콜렉션을 수행하면, 희생 블록에 유효 페이지가 많을수록 유효 페이지를 복사하는 횟수가 더 많아질 수 있다. 많은 유효 페이지 복사 횟수는 저장 장치의 성능 저하를 유발할 수 있다. 또한, 자유 블록을 확보하기 위해 희생 블록을 소거하고 유효 페이지를 복사하는 횟수가 많을수록 저장 장치의 수명은 더 줄어들 수 있다.
따라서, 저장 장치들(16000, 1700) 사이의 메모리 리소스를 공유함으로써, 저장 장치의 수명은 증가하고, 데이터의 프로그램 및 읽기 속도가 향상될 수 있다.
도 7은 본 발명의 실시 예에 따른 저장 장치들의 리소스 공유 가능 여부 판단을 보여주는 순서도이다. 도 5 내지 도 7을 참조하면, S110 단계에서, 루트 콤플렉스(1200)는 제1 및 제2 저장 장치들(1600, 1700)로부터 구성 정보를 포함하는 패킷을 읽어온다. 구체적으로, 구성 정보는 제1 및 제2 저장 장치들(1600, 1700)의 리소스 공유에 대한 정보를 포함한다.
S120 단계에서, 루트 콤플렉스(1200)는 리소스 공유를 할 수 있는 저장 장치들의 정보를 얻는다. 구체적으로, 루트 콤플렉스(1200)는 저장 장치들(1600, 1700)로부터 수신한 구성 정보를 통해 리소스 가능 여부에 대한 정보를 얻을 수 있다. 저장 장치들의 리소스 공유에 대한 정보는 구성 정보 중 Vendor에게 할당된 영역에 저장된다.
S130 단계에서, 루트 콤플렉스(1200)는 리소스 공유 가능 저장 장치들의 ID를 포함한 패킷을 모든 저장 장치들로 전송한다. 만약에 제1 및 제2 저장 장치들(1200, 1300) 모두 리소스 공유를 할 수 있다면, 루트 콤플렉스(1200)는 제1 및 제2 저장 장치들(1600, 1700)의 ID 정보가 포함된 패킷을 각각에 전송한다. 따라서, 제1 및 제2 저장 장치들(1600, 1700)은 서로의 리소스를 공유할 수 있다.
도 8은 본 발명의 실시 예에 따른 프로세서 리소스 공유 방법을 보여주는 순서도이다. 도 5, 도 7 및 도 8을 참조하면, S210 단계에서, 저장 장치는 프로세서 리소스 공유를 요청하는 메시지를 다른 리소스 공유 저장 장치들에게 전송한다. 구체적으로, 제1 저장 장치(1600)가 요청 저장 장치이면, 제1 저장 장치(1600)는 프로세서 공유를 요청하는 메시지를 제2 저장 장치(1700)로 전송한다. 제1 및 제2 저장 장치들(1600, 1700)은 리소스 공유 저장 장치라고 가정한다.
S220 단계에서, 프로세서 리소스 공유를 요청한 저장 장치는 다른 리소스 공유 저장 장치들로부터 프로세서 공유 수행 가능 여부에 대한 메시지를 수신한다. 구체적으로, 제1 저장 장치(1600)는 제2 저장 장치(1700)로부터 프로세서 공유 수행 가능 여부에 대한 메시지를 수신한다.
S230 단계에서, 프로세서 리소스 공유를 요청한 저장 장치는 코드 및 연산해야 하는 데이터를 포함하는 메시지를 프로세서 공유를 할 수 있는 저장 장치로 전송한다. 구체적으로, 제2 저장 장치(1700)가 프로세서 공유를 수행할 수 있다면, 제1 저장 장치(1600)는 연산에 필요한 코드 및 데이터를 제2 저장 장치(1700)의 제2 인터페이스(1720)로 전송한다. 제2 인터페이스(1720)는 연산에 필요한 코드 및 데이터를 제2 프로세서(1730)로 전송한다. 제2 프로세서(1730)는 코드 및 데이터를 이용하여 연산을 수행한다. 제2 프로세서(1730)는 연산 결과 정보를 제2 인터페이스(1720)로 전송한다.
S240 단계에서, 프로세서 리소스 공유를 요청한 저장 장치는 프로그램 공유를 수행한 저장 장치로부터 연산 결과를 읽어올 수 있다. 구체적으로, 제1 저장 장치(1600)는 제2 저장 장치(1700)로부터 연산 결과 정보를 포함하는 메시지를 읽어온다. 반대로, 제2 저장 장치(1700)는 연산 결과 정보를 포함하는 메시지를 제1 저장 장치(1600)로 전송할 수 있다.
도 9는 본 발명의 실시 예에 따른 메모리 리소스 공유 방법을 보여주는 순서도이다. 도 6, 도 7 및 도 9를 참조하면, S310 단계에서, 저장 장치는 메모리 리소스 공유를 요청하는 메시지를 다른 리소스 공유 저장 장치들에게 전송한다. 구체적으로, 제1 저장 장치(1600)가 요청 저장 장치이면, 제1 저장 장치(1600)는 메모리 공유를 요청하는 메시지를 제2 저장 장치(1700)로 전송한다. 제1 및 제2 저장 장치들(1600, 1700)은 리소스 공유 저장 장치라고 가정한다.
S320 단계에서, 메모리 리소스 공유를 요청한 저장 장치는 다른 리소스 공유 저장 장치들로부터 메모리 리소스 공유의 수행 가능 여부에 대한 메시지를 수신한다. 구체적으로, 제1 저장 장치(1600)는 제2 저장 장치(1700)로부터 메모리 리소스 공유의 수행 가능 여부에 대한 메시지를 수신한다.
S330 단계에서, 메모리 리소스 공유를 요청한 저장 장치는 데이터를 포함하는 메시지를 메모리를 공유할 수 있는 저장 장치로 전송한다. 구체적으로, 제2 저장 장치(1700)가 메모리를 공유할 수 있다면, 제1 저장 장치(1600)는 프로그램 될 데이터를 제2 저장 장치(1700)의 제2 인터페이스(1720)로 전송한다. 제2 인터페이스(1720)는 프로그램 될 데이터를 제2 메모리(1740)로 전송한다. 데이터는 제2 메모리의 사용 가능한 메모리 영역에 프로그램 된다.
도 10은 본 발명의 제1 실시 예에 따른 저장 장치들의 메시지 전달 방법을 보여주는 블록도이다. 도 10은 두 개 이상의 저장 장치들 사이의 리소스 공유 방법을 보여주기 위한 도면이다. 도 10을 참조하면, 제1 내지 제4 저장 장치들(SSD1~SSD4)은 리소스 공유를 수행할 수 있는 저장 장치라 가정한다. 제1 저장 장치(SSD1)은 제2 내지 제4 저장 장치들(SSD2~SSD4)에게 프로세서 리소스 공유 요청 메시지 및 리소스 공유 수행 가능 여부 메시지들(MsgD)을 송수신한다.
만약 제2 내지 제4 저장 장치들(SSD2~SSD4) 중 제3 저장 장치(SSD3)이 프로세서 리소스를 공유할 수 있다면, 제1 저장 장치(SSD1)는 제3 저장 장치(SSD3)에 연산해야 하는 데이터 및 코드를 포함하는 메시지(MWr)를 송신한다. 그리고, 제3 저장 장치(SSD3)는 제1 저장 장치(SSD1)로 연산 결과 정보를 포함하는 메시지(MWr)를 송신한다.
도 11은 본 발명의 제2 실시 예에 따른 저장 장치들의 메시지 전달 방법을 보여주는 블록도이다. 도 11을 참조하면, 제1 내지 제4 저장 장치들(SSD1~SSD4)은 리소스 공유를 수행할 수 있는 저장 장치라 가정한다. 제1 저장 장치(SSD1)은 제2 내지 제4 저장 장치들(SSD2~SSD4)에게 메모리 리소스 공유 요청 메시지(MsgD)를 송신하고, 수행 가능 여부 메시지들(MsgD)을 수신한다.
만약 제2 내지 제4 저장 장치들(SSD2~SSD4) 중 제3 저장 장치(SSD3)이 메모리 리소스를 공유할 수 있다면, 제1 저장 장치(SSD1)는 제3 저장 장치(SSD3)에 저장해야 하는 데이터를 포함하는 메시지(MWr)를 송신한다. 그리고, 제1 저장 장치(SSD1)는 제3 저장 장치(SSD3)로부터 프로그램된 데이터를 읽어오기 위한 메시지(MRd)를 송신할 수 있다.
도 12는 본 발명의 다른 실시 예에 따른 데이터 저장 시스템을 보여주는 블록도이다. 도 12는 본 발명의 실시 예가 적용된 저장 장치를 포함하는 컴퓨팅 장치가 가질 수 있는 구성을 나타낸 블록도이다. 컴퓨팅 시스템(3000)은 저장 장치(3100) 및 호스트(3300)를 포함할 수 있다. 호스트(3300)는 버스(3310), 프로세서(3330), 및 시스템 메모리(3350)를 포함할 수 있다. 저장 장치(3100)는 도 15에 나타난 저장 장치(2000, 도 15 참조)와 같은 구성을 가질 수 있다. 저장 장치(3100)의 구성 및 기능에 관한 설명은 도 15에 대한 설명과 중복되는 범위에서 생략된다.
버스(3310)는 컴퓨팅 시스템(3000)의 구성 요소들 사이의 통신 채널을 제공할 수 있다. 예컨대, 버스(3310)는 저장 장치(3100), 프로세서(3330), 및 시스템 메모리(3350) 사이의 통신 채널을 제공할 수 있다. 버스(3310)는 도 12에 도시되지 않은 다른 구성 요소들 사이의 통신 채널을 제공할 수 있다. 버스(3310)는 컴퓨팅 시스템(3000)의 표준 인터페이스 규약에 따라 작동할 수 있다. 실시 예로서, 버스(3310)는 PCIe 규약에 따라 작동할 수 있다. 그러나, 이것은 실시 예일 뿐이며, 버스(3310)는 다른 다양한 통신 규약에 따라 작동할 수 있다.
프로세서(3330)는 버스(3310)를 통해 컴퓨팅 시스템(3000)의 구성 요소를 제어할 수 있다. 예컨대, 프로세서(3330)는 버스(3310)를 통해 시스템 메모리(3350) 및 저장 장치(3100)를 제어할 수 있다. 실시 예로서, 프로세서(3330)는 PCIe 규약에 따라 컴퓨팅 시스템(3000)의 구성 요소를 제어할 수 있다. 실시 예로서, 프로세서(3330)는 범용 CPU(Central Processing Unit) 또는 어플리케이션 프로세서(Application Processor)일 수 있다.
시스템 메모리(3350)는 버스(3330)를 통해 프로세서(3330) 및 저장 장치(3100)와 통신할 수 있다. 시스템 메모리(3350)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM, MRAM, RRAM, FRAM 등과 같은 불 휘발성 메모리를 포함할 수 있다.
호스트(3300)는 저장 장치(3100)에 저장된 데이터를 불러오거나 저장 장치(3100)에 저장할 데이터를 전송할 수 있다.
저장 장치(3100)는 메모리 컨트롤러(2200, 도 4 참조)를 포함할 수 있다. 메모리 컨트롤러(2300)는 버스(3310) 또는 프로세서(3330)에 의해 인식되는 장치 정보를 가질 수 있다. 예컨대, 저장 장치(3100)가 커넥터(미 도시)에 의해 버스(3310)에 연결되면, 메모리 컨트롤러(2300)는 버스(3310) 또는 프로세서(3330)와 소정의 통신을 수행할 수 있다. 소정의 통신을 수행함으로써, 저장 장치(3100)는 버스(3310) 또는 프로세서(3330)에 의해 저장 장치인 것으로 식별될 수 있다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
1000: 데이터 저장 시스템 2000: 저장 장치
1100: 중앙 처리 장치 2100: 불 휘발성 메모리 장치
1200: 루트 콤플렉스 2200: 컨트롤러
1300: 그래픽 처리 장치
1400: 시스템 메모리
1500: 인터페이스 스위치
1600, 1700: 엔드포인트 장치들

Claims (10)

  1. 저장 장치들을 포함하는 데이터 저장 시스템의 동작 방법에 있어서:
    상기 저장 장치들의 리소스 공유 수행 여부를 나타내는 구성 정보를 포함하는 패킷을 호스트로 전송하는 단계;
    상기 구성 정보에 응답하여 상기 저장 장치들 중 어느 것이 상기 리소스 공유를 수행하는지를 나타내는 ID 정보를 상기 호스트로부터 상기 저장 장치들이 수신하는 단계;
    상기 ID 정보에 응답하여 리소스 공유 요청 메시지를 상기 리소스 공유를 수행하는 저장 장치들 중 요청 장치로부터 나머지 저장 장치들로 전송하는 단계; 및
    상기 리소스 공유를 수행하는 저장 장치들 중 선택된 어느 하나의 저장 장치로부터 리소스 공유 가능 여부에 대한 메시지를 수신하면, 선택되지 않은 저장 장치들 중 적어도 하나는 상기 리소스 공유를 수행하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 요청 장치에서 데이터 및 코드 정보를 포함하는 메시지를 상기 선택된 장치로 전송하는 단계;
    상기 선택된 저장 장치에서 상기 데이터 및 상기 코드 정보를 이용하여 연산을 수행하는 단계; 및
    상기 선택된 저장 장치에서 상기 연산의 결과를 상기 요청 장치로 전송하는 단계를 더 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 요청 장치에서 상기 선택된 저장 장치에 저장되어야 하는 데이터를 포함하는 메시지를 전송하는 단계; 및
    상기 선택된 저장 장치의 가용 메모리 영역에 저장되어야 하는 데이터를 프로그래밍하는 단계를 더 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 패킷은 페이로드 영역을 포함하고, 상기 페이로드 영역은 시리얼 번호 및 상기 구성 정보를 포함하는 저장 장치 시리얼 번호 정보를 포함하는 동작 방법.
  5. 복수의 메모리 장치들; 및
    상기 메모리 장치들을 제어하고, 상기 메모리 장치들이 리소스 공유를 수행하는지 여부를 나타내는 구성 정보를 포함하는 패킷을 호스트로 전송하고,
    상기 호스트로부터 상기 리소스 공유를 수행하는 저장 장치를 식별하는 ID 정보를 수신하여 프로세서 또는 메모리 리소스 공유 요청 메시지를 리소스 공유를 수행하는 저장 장치 중 요청 장치에서 리소스 공유를 수행하는 나머지 저장 장치로 전달하도록 제어하거나,
    상기 저장 장치들 중 선택된 어느 하나로부터 리소스 공유가 현재 수행될 수 있음을 나타내는 메시지를 수신하면, 선택되지 않은 저장 장치들 중 적어도 하나에서 상기 리소스 공유를 수행하는 컨트롤러를 포함하는 저장 장치.
  6. 제 5 항에 있어서,
    상기 선택된 저장 장치 중 어느 하나의 메모리 영역이 이용 가능한 것으로 판단되면, 상기 선택된 저장 장치는 상기 리소스 공유가 현재 수행될 수 있음을 나타내는 메시지를 전송하고, 상기 컨트롤러는 상기 메모리 영역을 공유하는 저장 장치.
  7. 제 5 항에 있어서,
    상기 선택된 저장 장치의 프로세서가 추가적인 연산을 수행할 수 있는 것으로 판단되면, 상기 선택된 저장 장치는 상기 리소스 공유가 현재 수행될 수 있음을 나타내는 메시지를 전송하고,
    상기 컨트롤러는 상기 프로세서를 공유하는 저장 장치.
  8. 제 5 항에 있어서,
    상기 컨트롤러는 프로세서 또는 상기 메모리 리소스 공유 요청 메시지를 입출력하고 상기 프로세서 또는 메모리 리소스를 공유하기 위한 복수의 레지스터들을 포함하는 인터페이스를 포함하는 저장 장치.
  9. 중앙 처리 장치;
    상기 중앙 처리 장치와 연결되고, 상기 중앙 처리 장치로부터 트랜잭션을 수신하는 루트 콤플렉스;
    상기 중앙 처리 장치 또는 상기 루트 콤플렉스의 동작 중에 사용된 데이터를 저장하는 시스템 메모리;
    상기 루트 콤플렉스와 연결되는 인터페이스 스위치; 및
    상기 인터페이스 스위치를 통하여 데이터를 송수신하는 복수의 엔드포인트 장치들을 포함하되,
    상기 루트 콤플렉스는 상기 엔드포인트 장치들이 리소스 공유를 수행하는지 여부를 나타내는 구성 정보를 포함하는 구성 정보 패킷을 상기 엔드포인트 장치들로부터 수신하고, 상기 구성 정보를 사용하여 상기 리소스 공유를 수행하는 상기 엔드포인트 장치들을 식별하는 ID 정보를 포함하는 패킷을 전송하고,
    제 1 장치가 현재 상기 리소스 공유를 수행할 수 있다는 것을 나타내는 메시지를 제 2 장치 에 전송한 후, 상기 리소스 공유를 수행하는 상기 엔드포인트 장치들 중 첫번째 장치는 상기 엔드포인트 장치들 중 상기 제 1 장치와 다른 상기 제 2 장치의 리소스를 공유하는 데이터 저장 시스템.
  10. 리소스 공유를 수행하는 저장 장치를 포함하는 데이터 저장 시스템의 동작 방법에 있어서:
    특정 리소스를 식별하는 요청 메시지를 상기 저장 장치들 중 요청 장치에서 나머지 저장 장치들 중 선택된 어느 하나로 전송하는 단계;
    상기 선택된 장치가 현재 리소스 공유를 수행할 수 있는지 여부를 나타내는 메시지를 상기 선택된 장치에서 상기 요청 장치로 전송하는 단계;
    상기 리소스 공유를 수행할 수 있는지 여부를 나타내는 메시지가 현재 리소스 공유를 수행할 수 없음을 나타내는 경우, 상기 요청 장치에 의하여 일정 시간 동안 동작을 차단하는 단계; 및
    상기 리소스 공유를 수행할 수 있는지 여부를 나타내는 메시지가 리소스 공유를 수행할 수 있음을 나타내는 경우, 상기 요청 장치에 의하여 상기 특정 리소스에 엑세스 하는 단계를 포함하는 동작 방법.
KR1020150003372A 2015-01-09 2015-01-09 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법 KR102219759B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150003372A KR102219759B1 (ko) 2015-01-09 2015-01-09 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법
US14/966,738 US10031678B2 (en) 2015-01-09 2015-12-11 Storage device, data storage device including the same, and operation method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150003372A KR102219759B1 (ko) 2015-01-09 2015-01-09 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160086475A KR20160086475A (ko) 2016-07-20
KR102219759B1 true KR102219759B1 (ko) 2021-02-25

Family

ID=56367613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150003372A KR102219759B1 (ko) 2015-01-09 2015-01-09 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US10031678B2 (ko)
KR (1) KR102219759B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853573B2 (en) 2021-11-12 2023-12-26 SK Hynix Inc. Storage device sharing system and operating method thereof

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102371557B1 (ko) * 2015-03-20 2022-03-07 삼성전자주식회사 호스트 장치, 그것과 복수의 장치들을 갖는 호스트 시스템 및 그것의 인터페이스 링크 레이어 구성 방법
CN110109515A (zh) * 2019-06-17 2019-08-09 上海沃特斯智能科技有限公司 资源共享分配处理器
US11899757B2 (en) * 2019-12-02 2024-02-13 Cox Automotive, Inc. Systems and methods for temporary digital content sharing
JP2022012403A (ja) * 2020-07-01 2022-01-17 キヤノン株式会社 プログラム、情報処理装置及び制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100228888A1 (en) 2009-03-05 2010-09-09 Hitachi, Ltd. Information processing apparatus and managing method of configuration information acquired from storage system
US20120162069A1 (en) 2010-12-24 2012-06-28 Denso Corporation Vehicular device
US20130297857A1 (en) 2012-05-06 2013-11-07 Rotem Sela Parallel computation with multiple storage devices

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4928732B2 (ja) 2005-01-17 2012-05-09 株式会社リコー データ転送システム及び電子機器
JP4998469B2 (ja) * 2006-08-09 2012-08-15 日本電気株式会社 インターコネクション用スイッチおよびシステム
JP4501916B2 (ja) 2006-09-20 2010-07-14 日本電気株式会社 I/o機器の共有システムと情報処理装置共有システム及びそれらに用いる方法
US7562176B2 (en) 2007-02-28 2009-07-14 Lsi Corporation Apparatus and methods for clustering multiple independent PCI express hierarchies
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
JP5430890B2 (ja) * 2008-07-25 2014-03-05 株式会社東芝 半導体記憶装置
KR101065939B1 (ko) * 2008-09-01 2011-09-19 에스케이 텔레콤주식회사 장치 대 장치 간의 리소스 공유 시스템 및 장치 대 장치 간의 리소스 공유 방법
US8595343B2 (en) 2008-11-14 2013-11-26 Dell Products, Lp System and method for sharing storage resources
JP5482263B2 (ja) 2010-02-08 2014-05-07 日本電気株式会社 エンドポイント共有システムおよびデータ転送方法
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8601198B2 (en) 2011-06-30 2013-12-03 Intel Corporation Controllable transaction synchronization for merging peripheral devices
CN104094244B (zh) 2011-09-30 2017-05-31 英特尔公司 用于对于系统协处理器的直接i/o访问的方法和装置
JP2013097718A (ja) 2011-11-04 2013-05-20 Nec Corp 優先度制御システム、スイッチ、優先度制御方法、及びプログラム
US9189441B2 (en) 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
JP2015114777A (ja) * 2013-12-10 2015-06-22 富士通株式会社 情報処理端末、電力制御プログラムおよび電力制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100228888A1 (en) 2009-03-05 2010-09-09 Hitachi, Ltd. Information processing apparatus and managing method of configuration information acquired from storage system
US20120162069A1 (en) 2010-12-24 2012-06-28 Denso Corporation Vehicular device
US20130297857A1 (en) 2012-05-06 2013-11-07 Rotem Sela Parallel computation with multiple storage devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853573B2 (en) 2021-11-12 2023-12-26 SK Hynix Inc. Storage device sharing system and operating method thereof

Also Published As

Publication number Publication date
US20160202921A1 (en) 2016-07-14
US10031678B2 (en) 2018-07-24
KR20160086475A (ko) 2016-07-20

Similar Documents

Publication Publication Date Title
US11573742B2 (en) Dynamic data placement for collision avoidance among concurrent write streams
US11487666B2 (en) Timed data transfer between a host system and a memory sub-system
US11204721B2 (en) Input/output size control between a host system and a memory sub-system
KR102219759B1 (ko) 저장 장치, 그것을 포함하는 데이터 저장 시스템 및 그것의 동작 방법
KR102330391B1 (ko) 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법
CN110383250B (zh) 配置为使用无线接口执行操作的数据存储设备
US11269552B2 (en) Multi-pass data programming in a memory sub-system having multiple dies and planes
KR20160087224A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11294820B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US10585822B2 (en) Operation method of host system including storage device and operation method of storage device controller
US20190354483A1 (en) Controller and memory system including the same
KR102537373B1 (ko) 메모리 시스템에서의 데이터 전달 방법 및 장치
US20240036768A1 (en) Partial Execution of a Write Command from a Host System
US20240134568A1 (en) Computational storage device, method for operating the computational storage device and method for operating host device
EP4361786A1 (en) Computational storage device, method for operating the computational storage device and method for operating host device
CN109582218B (zh) 存储器系统及其操作方法
CN115705305A (zh) 动态状态寄存器阵列
KR20210057297A (ko) 시스템 및 시스템의 동작 방법
CN115858253A (zh) 跨互连的存储器镜像的技术

Legal Events

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