KR101298367B1 - 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법 - Google Patents

전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법 Download PDF

Info

Publication number
KR101298367B1
KR101298367B1 KR20110092935A KR20110092935A KR101298367B1 KR 101298367 B1 KR101298367 B1 KR 101298367B1 KR 20110092935 A KR20110092935 A KR 20110092935A KR 20110092935 A KR20110092935 A KR 20110092935A KR 101298367 B1 KR101298367 B1 KR 101298367B1
Authority
KR
South Korea
Prior art keywords
packet
memory
node
memory node
address
Prior art date
Application number
KR20110092935A
Other languages
English (en)
Other versions
KR20120050377A (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 가부시끼가이샤 도시바
Publication of KR20120050377A publication Critical patent/KR20120050377A/ko
Application granted granted Critical
Publication of KR101298367B1 publication Critical patent/KR101298367B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Abstract

본 발명의 일 실시 양태에 따르면, 스토리지 장치는, 복수의 입력 포트, 복수의 출력 포트, 셀렉터, 패킷 컨트롤러 및 메모리를 구비한 복수의 메모리 노드를 구비한다. 상기 셀렉터는, 상기 입력 포트에 입력된 패킷을 상기 출력 포트에 출력한다. 상기 패킷 컨트롤러는 상기 셀렉터의 출력을 제어한다. 상기 메모리는 데이터를 기억한다. 상기 메모리 노드끼리는, 상기 입력 포트 및 상기 출력 포트에 의해 서로 접속되어 있다. 상기 메모리 노드는, 물리적인 위치에 의해 정해지는 물리 어드레스를 갖는다. 상기 패킷 컨트롤러는, 자신의 메모리 노드를 수신처로 하지 않는 패킷을 수신한 경우에, 상기 패킷의 송신처 어드레스와 상기 자신의 메모리 노드의 어드레스를 적어도 포함하는 정보에 기초하여, 상기 패킷을 출력하는 상기 출력 포트를 전환한다.

Description

전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법{STORAGE DEVICE CONNECTTING MEMORY NODES HAVING TRANSMISSION FUNCTION AND DATA PROCESSING METHOD}
<관련 출원>
본 출원은 2010년 11월 10일에 출원된 일본 특허 출원 번호 제2010-252336호에 기초한 것으로 그 우선권을 주장하며, 그 전체 내용이 참조로서 본 명세서에 원용된다.
본 발명에 개시된 실시 형태는 일반적으로, 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법에 관한 것으로서, 예를 들어 스토리지 장치에 있어서의 데이터 패킷의 전송 제어 방식에 관한 것이다.
용량을 용이하게 확장할 수 있는 스토리지 장치로서, 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치를 고려할 수 있다. 각 메모리 노드는, 자신의 메모리 노드를 수신처로 하는 데이터 패킷을 수신한 경우에는 판독 혹은 기입 등의 소정의 처리를 행한다. 한편, 각 메모리 노드는, 자신의 메모리 노드를 수신처로 하지 않는 패킷을 수신한 경우에는, 수신 패킷을 적절한 다른 메모리 노드에 전송한다. 각 메모리 노드에 의해 적절한 전송이 반복됨으로써, 데이터 패킷은 원하는 메모리 노드에 도달할 수 있다.
각 메모리 노드는, 메모리와, 전송 기능을 갖는 컨트롤러, 복수의 포트를 갖고 있다. 각 메모리 노드는, 패킷의 전송처를 나타낸 경로 지정표(라우팅 테이블)를 유지·관리하고, 그에 따라서 패킷의 전송을 행한다. 경로 지정표를 관리하면, 물리적인 위치에 관계없이 임의의 논리적인 패킷 전송 네트워크를 구축하는 것이 가능하다.
그러나, 용량 확장을 위해 새로운 메모리 노드를 추가하는 경우, 혹은 고장 등의 이유에 의해 기존의 메모리 노드를 제거하는 경우에는, 각 메모리 노드의 경로 지정표를 갱신할 필요가 있고, 그의 절차는 번잡하다. 경로 지정표의 유지·관리 비용은, 특히 메모리 노드수가 대규모가 되었을 경우에 방대해지고, 이것이 용량의 확장성에 제한을 부과하게 된다.
또한, 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치에 있어서, 복수의 데이터를 복수의 메모리 노드에 기입·판독을 행하는 경우에 있어서, 복수의 데이터를 동일 배선으로 동시에 통신시키는 것은 일반적으로 곤란하기 때문에, 데이터의 전송 대기가 발생하기 쉽다. 이러한 데이터의 전송 대기는, 데이터의 기입·판독에 필요한 시간의 증가를 초래한다.
도 1은 제1 실시 형태의 스토리지 장치의 구성을 도시한 도면.
도 2는 상기 제1 실시 형태에 있어서의 메모리 노드의 구성을 도시한 도면.
도 3a, 3b, 3c, 3d, 3e는 상기 제1 실시 형태에 있어서의 메모리 노드의 배치예를 도시한 도면.
도 4는 상기 제1 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 1을 도시한 도면.
도 5a, 5b는 상기 제1 실시 형태에 있어서의 전송 알고리즘 1에 의한 패킷의 전송 과정을 도시한 도면.
도 5c는 상기 제1 실시 형태에 있어서의 전송 알고리즘 1에 의한 패킷의 전송 과정의 흐름도.
도 5d는 상기 제1 실시 형태에 있어서의 전송 알고리즘 1에 의한 패킷의 전송 과정의 구체예를 도시한 도면.
도 6은 상기 제1 실시 형태의 스토리지 장치를 포함하는 스토리지 시스템의 구성을 도시한 도면.
도 7은 상기 제1 실시 형태의 스토리지 시스템에 있어서의 기입 동작을 도시한 도면.
도 8은 상기 제1 실시 형태의 스토리지 시스템에 있어서의 판독 동작을 도시한 도면.
도 9는 상기 제1 실시 형태의 스토리지 장치에 있어서의 메모리 노드의 자동 어드레스 취득 방식을 도시한 도면.
도 10은 제2 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 2를 도시한 도면.
도 11a, 11b는 상기 제2 실시 형태에 있어서의 전송 알고리즘 2에 의한 패킷의 전송 과정을 도시한 도면.
도 11c는 상기 제2 실시 형태에 있어서의 전송 알고리즘 2에 의한 패킷의 전송 과정의 흐름도.
도 11d는 상기 제2 실시 형태에 있어서의 전송 알고리즘 2에 의한 패킷의 전송 과정의 구체예를 도시한 도면.
도 12a는 상기 전송 알고리즘 1에 의한 패킷의 전송 과정의 구체예를 도시한 도면.
도 12b는 상기 전송 알고리즘 2에 의한 패킷의 전송 과정의 구체예를 도시한 도면.
도 13은 제3 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 3을 도시한 도면.
도 14a, 14b는 상기 제3 실시 형태에 있어서의 전송 알고리즘 3에 의한 패킷의 전송 과정을 도시한 도면.
도 14c는 상기 제3 실시 형태에 있어서의 전송 알고리즘 3에 의한 패킷의 전송 과정의 흐름도.
도 14d는 상기 제3 실시 형태에 있어서의 전송 알고리즘 3에 의한 패킷의 전송 과정의 구체예를 도시한 도면.
도 15는 상기 제3 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 4를 도시한 도면.
도 16은 상기 제3 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 5를 도시한 도면.
도 17은 제4 실시 형태의 스토리지 시스템의 구성을 도시한 도면.
도 18은 상기 제4 실시 형태의 스토리지 시스템에 있어서의 바이패스 전송 발생률과 정체 발생률을 도시한 도면.
도 19는 제5 실시 형태의 스토리지 장치의 구성을 도시한 도면.
도 20은 제6 실시 형태의 스토리지 시스템의 구성을 도시한 도면.
도 21은 상기 제6 실시 형태의 스토리지 시스템의 다른 구성예를 도시한 도면.
도 22는 제7 실시 형태의 스토리지 시스템의 구성을 도시한 도면.
도 23은 상기 제7 실시 형태의 스토리지 시스템에 대한 비교예를 도시한 도면.
도 24는 상기 제7 실시 형태에 있어서의 패킷의 헤더부에 기록된 어드레스 정보를 도시한 도면.
도 25는 상기 제7 실시 형태의 스토리지 시스템에 있어서의 기입 동작을 도시한 도면.
도 26은 상기 제7 실시 형태의 스토리지 시스템의 다른 구성예를 도시한 도면.
도 27은 제8 실시 형태의 스토리지 시스템의 구성을 도시한 도면.
도 28은 상기 제8 실시 형태의 스토리지 시스템에 대한 비교예를 도시한 도면.
도 29는 상기 제8 실시 형태에 있어서의 패킷의 헤더부에 기록된 어드레스 정보를 도시한 도면.
도 30은 상기 제8 실시 형태의 스토리지 시스템에 있어서의 기입 동작을 도시한 도면.
도 31, 32는 상기 제8 실시 형태의 스토리지 시스템의 다른 구성예를 도시한 도면.
도 33a는 제9 실시 형태의 스토리지 시스템의 구성을 도시한 도면.
도 33b, 33c, 33d는 스토리지 시스템에 있어서 전송 대기가 발생하는 판독 동작을 도시한 도면.
도 34a, 34b, 34c, 34d, 34e는 상기 제9 실시 형태의 스토리지 시스템에 있어서 전송 대기의 발생을 회피하는 판독 동작을 도시한 도면.
도 35a, 35b는 상기 제9 실시 형태의 스토리지 시스템에 있어서 전송 대기의 발생을 회피하는 판독 동작의 다른 예를 도시한 도면.
도 36a, 36b, 36c, 36d, 36e, 36f는 상기 제9 실시 형태의 스토리지 시스템에 있어서 전송 대기의 발생을 회피하는 판독 동작의 다른 예를 도시한 도면.
도 37a는 제10 실시 형태의 스토리지 시스템의 구성을 도시한 도면.
도 37b, 37c, 37d, 37e, 37f, 37g는 스토리지 시스템에 있어서 전송 대기가 발생하는 기입 동작을 도시한 도면.
도 38a, 38b, 38c, 38d, 38e는 상기 제10 실시 형태의 스토리지 시스템에 있어서 전송 대기의 발생을 회피하는 기입 동작을 도시한 도면.
이하, 도면을 참조하여 실시 형태에 대하여 설명한다. 또한, 이하의 설명에 있어서, 동일한 기능 및 구성을 갖는 구성 요소에 대해서는 동일 부호를 붙이고, 중복 설명은 필요한 경우에만 행한다.
일반적으로, 일 실시형태에 따르면, 스토리지 장치는, 복수의 입력 포트, 복수의 출력 포트, 셀렉터, 패킷 컨트롤러 및 메모리를 구비한 복수의 메모리 노드를 구비한다. 상기 셀렉터는, 상기 입력 포트에 입력된 패킷을 상기 출력 포트에 출력한다. 상기 패킷 컨트롤러는 상기 셀렉터의 출력을 제어한다. 상기 메모리는 데이터를 기억한다. 상기 메모리 노드끼리는, 상기 입력 포트 및 상기 출력 포트에 의해 서로 접속되어 있다. 상기 메모리 노드는 물리적인 위치에 의해 정해지는 물리 어드레스를 갖는다. 상기 패킷 컨트롤러는, 자신의 메모리 노드를 수신처로 하지 않는 패킷을 수신한 경우에, 상기 패킷의 송신처 어드레스와 상기 자신의 메모리 노드의 어드레스를 적어도 포함하는 정보에 기초하여, 상기 패킷을 출력하는 상기 출력 포트를 전환한다.
[제1 실시 형태]
제1 실시 형태는, 전송 기능을 갖는 복수의 메모리 노드를 서로 접속한 스토리지 장치를 구비하고, 각 메모리 노드가 효율적으로 데이터 패킷을 전송하는 전송 방식을 갖는다.
[1] 스토리지 장치의 구성
도 1은, 제1 실시 형태의 스토리지 장치의 구성을 나타내는 도면이며, 복수의 메모리 노드의 물리적인 배치법과, 이에 대한 어드레스의 할당법의 일례를 나타낸다.
도시한 바와 같이, 스토리지 장치(10)는, 데이터 전송 기능을 갖는 메모리 노드(11)를 복수 구비한다. 각각의 메모리 노드(11)는 정방격자의 격자점에 놓인다. 격자점의 좌표인 격자 좌표(x,y)에 위치하는 메모리 노드의 논리 어드레스는 위치 좌표와 일치하여 (x,y)로 한다. 즉, 메모리 노드(11)의 논리 어드레스는 물리 어드레스(격자 좌표(x,y))에 일치한다.
각 메모리 노드(11)는, 4개의 입력 포트(12)와 4개의 출력 포트(13)를 갖는다. 각 메모리 노드는, 인접하는 4개의 메모리 노드와 입력 포트(12) 및 출력 포트(13)를 통해 서로 접속된다. 구체적으로는, 대향하는 2개의 인접한 메모리 노드는, 서로의 입력 포트(12)와 출력 포트(13)가 접속된다.
도 2에, 각 메모리 노드(11)의 구성을 나타내었다. 메모리 노드(11)는, 입력 포트(12), 입력 포트 버퍼(12A), 출력 포트(13), 출력 포트 버퍼(13A), 셀렉터(14), 패킷 컨트롤러(15), 메모리(16), 메모리 컨트롤러(17), MPU18 및 로컬 버스(19)를 갖는다.
입력 포트(12)에 입력된 패킷은, 입력 포트 버퍼(12A)에 일시적으로 기억된다. 셀렉터(14)에는 입력 포트 버퍼(12A)로부터 패킷이 입력되고, 또한 패킷 컨트롤러(15)로부터 제어 신호가 입력된다. 셀렉터(14)는, 제어 신호에 따라, 입력된 패킷으로부터 어느 하나의 패킷을 선택하여 출력 포트 버퍼(13A)에 출력한다. 출력 포트 버퍼(13A)는, 셀렉터(14)로부터 출력된 패킷을 일시적으로 기억함과 함께, 출력 포트(13)에 출력한다. 패킷 컨트롤러(15)는 셀렉터(14)의 출력을 제어한다. 패킷이란, 송신처 어드레스 및 송신원 어드레스를 적어도 포함하는 헤더부와, 데이터부로 이루어지는 전송 데이터의 단위이다.
메모리(16)는, 데이터를 기억하는 복수의 메모리 셀을 갖는다. 메모리(16)는, 예를 들어 NAND형 플래시 메모리 등으로 이루어진다. 메모리 컨트롤러(17)는, 메모리(16)에의 기입, 판독 및 소거의 동작을 제어한다. MPU18은 메모리 노드 내에서 필요한 연산 처리를 행한다. 로컬 버스(19)는, 입력 포트 버퍼(12A), 패킷 컨트롤러(15), 메모리 컨트롤러(17) 및 MPU18 사이를 서로 접속하고, 이들 사이의 신호 전송을 행한다.
메모리 노드(11)가 수신한 패킷은, 입력 포트(12)를 통해 입력 포트 버퍼(12A)에 저장된다. 패킷 컨트롤러(15)는, 패킷이 포함하는 송신처(수신처) 어드레스와 그 메모리 노드 자신(이하, 자(自)노드)의 어드레스의 2개의 정보에 기초하여, 수신한 패킷이 자노드앞인지의 여부를 판단한다.
만일 자노드앞이면, 패킷 컨트롤러(15)는 자노드의 메모리(16)에 대한 기입, 판독, 혹은 기타 소정의 처리를 행한다. 만약에 자노드앞이 아니면, 패킷의 송신처 어드레스와 자노드의 어드레스의 2개의 정보에 기초하여, 패킷을 전송하는 인접하는 메모리 노드를 결정하고, 셀렉터(14)에 의해 대응하는 출력 포트 버퍼(13A)에 패킷을 출력한다.
도 1에 도시한 스토리지 장치에서는 정방격자의 격자점에 메모리 노드가 배치되었지만, 본 실시 형태는 이 예로 한정되는 것은 아니다. 이것을 도 3a 내지 도 3e를 참조하여, 예를 들어 설명한다.
도 3a에 도시한 구성이 도 1에 도시한 예에 상당한다. 보다 일반적으로는, 본 실시 형태에 있어서, 각 메모리 노드는 격자점에 배치된다. 격자란, 기하학에 있어서는 평면 상의 점 중, x 좌표, y 좌표가 함께 정수인 점을 말한다. 여기에서는 x 방향과 y 방향의 단위 벡터, ex와 ey의 길이가 상이한 경우, 즉 x 방향과 y 방향의 반복 주기가 상이한 경우도 포함한다. 이 예를 도 3b에 나타내었다.
또한, x 방향과 y 방향의 단위 벡터가 직교하지 않는 경우, 즉 x축과 y축이 직교하지 않는 경우도 포함한다. 이 예를 도 3c에 나타내었다. 또한, 메모리 노드의 상호 접속수는 반드시 4라고는 할 수 없다. 상호 접속수가 6인 예를 도 3d에 나타내었다.
본 실시 형태에 있어서는, 격자의 정의에 관계없이 어느 경우에서든 격자 좌표(x,y)에 위치하는 메모리 노드의 논리 어드레스는 위치 좌표와 일치하여 (x,y)로 한다. 즉, 메모리 노드의 논리 어드레스는 물리 어드레스(격자 좌표(x,y))에 일치한다.
또한, 보다 일반적으로는, 본 실시 형태에 있어서는, 각 격자점에 2 이상의 메모리 노드의 조가 배치되는 경우를 포함한다. 각 격자점에 2개의 메모리 노드가 배치되는 예를, 도 3e에 나타내었다. 이 예에서는 격자점(1,0) 등에 2개의 메모리 노드가 배치된다. 이것을, (1,0,0)과 (1,0,1)로 한다. 즉, 1개의 메모리 노드의 좌표는 (x,y,z)의 3개의 정수의 조에 의해 표현된다. 이 경우에 있어서도, 노드 좌표(x,y,z)에 위치하는 메모리 노드의 논리 어드레스는 위치 좌표와 일치하여 (x,y,z)로 한다. 즉, 메모리 노드의 논리 어드레스는 물리 어드레스(격자 좌표(x,y,z))에 일치한다. 또한, 격자점이 배치되는 평면이 3차원적으로 구부러지거나 혹은 접힌 경우도 포함한다.
인접한 메모리 노드란, 도 3a 내지 도 3e에 있어서 이하의 위치 관계에 있는 메모리 노드를 가리킨다. 도 3a 내지 도 3c에 있어서, 예를 들어 자노드가 좌표(1,1)에 존재하는 경우, 자노드에 인접한 메모리 노드는 좌표(0,1), (1,2), (2,1), (1,0)에 존재하는 4개의 메모리 노드를 가리킨다. 또한, 도 3d에 있어서, 예를 들어 자노드가 좌표(1,1)에 존재하는 경우, 자노드에 인접한 메모리 노드는 좌표(0,1), (0,2), (1,2), (2,1), (2,0), (1,0)에 존재하는 6개의 메모리 노드를 가리킨다. 또한, 도 3e에 있어서, 예를 들어 자노드가 좌표(1,0,1)에 존재하는 경우, 자노드에 인접한 메모리 노드란 좌표(0,1,0), (1,1,0), (1,0,0)에 존재하는 3개의 메모리 노드를 가리킨다.
[2] 스토리지 장치의 전송 알고리즘 1
전송 알고리즘 1에서는, 패킷이 포함하는 송신처 어드레스 및 자노드의 어드레스의 2개의 정보에 기초하여, 전송처의 메모리 노드를 결정한다.
도 4는, 제1 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 1을 도시한 도면이다. 도 4를 참조하여, 패킷의 송신처 어드레스와 자노드의 어드레스의 2개의 정보에 기초하여, 전송처의 인접 노드를 결정하는 방법의 일례를 나타낸다. 이것을 전송 알고리즘 1로 한다.
패킷을 수취한 메모리 노드는, 패킷의 송신처 노드(to)와 자노드(PP: Present position)와의 거리가 가장 작아지는 인접하는 메모리 노드에 패킷을 전송한다.
도 5a 내지 도 5d를 참조하여, 전송 알고리즘 1에 따른 패킷의 전송 과정의 구체예를 나타낸다.
도 5a에 도시한 바와 같이, 송신처 노드(to)의 어드레스를 (xto, yto), 자노드(PP)의 어드레스를 (xpp, ypp)로 하고, 추가로 dx=xto-xpp, dy=yto-ypp로 한다. 전송처를 나타내는 방향으로서, 도 5b에 도시한 바와 같이, y가 증가하는 방향을 N(North), x가 증가하는 방향을 E(East), y가 감소하는 방향을 S(South), x가 감소하는 방향을 W(West)로 한다.
a에 대하여 그의 절대값을 나타내는 기호를 |a|로 하여, |dx|>|dy|이면 x 방향으로, |dx|<|dy|이면 y 방향으로 진행한다. x 방향으로 진행하는 경우에는, dx>0이면 E에, dx<0이면 W에 전송한다. 마찬가지로, y 방향으로 진행하는 경우에는 dy>0이면 N에, dy<0이면 S에 전송한다.
도 5c에, 스토리지 장치에 있어서의 전송 알고리즘 1의 흐름을 나타낸다. 전송 알고리즘 1은 패킷 컨트롤러(15)에 기억되어 있고, 패킷 컨트롤러(15)에 의해 실행된다.
우선, 패킷 컨트롤러(15)는 dx=xto-xpp, dy=yto-ypp를 산출한다(스텝 S1). 계속해서, 패킷 컨트롤러(15)는 dx가 0인지의 여부를 판정한다(스텝 S2). dx가 0일 때, yto>ypp가 성립되는지의 여부를 판정한다(스텝 S3). yto>ypp가 성립될 때, 패킷을 N에 전송한다(스텝 S4). 한편, yto>ypp가 성립되지 않을 때, 패킷을 S에 전송한다(스텝 S5).
이어서, 스텝 S2에 있어서 dx가 0이 아닐 때, 패킷 컨트롤러(15)는 dy가 0인지의 여부를 판정한다(스텝 S6). dy가 0일 때, xto>xpp가 성립되는지의 여부를 판정한다(스텝 S7). xto>xpp가 성립될 때, 패킷을 E에 전송한다(스텝 S8). 한편, xto>xpp가 성립되지 않을 때, 패킷을 W에 전송한다(스텝 S9).
이어서, 스텝 S6에 있어서 dy가 0이 아닐 때, 즉 dx와 dy가 0이 아닐 때, 패킷 컨트롤러(15)는 dx>0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S10). dx>0이고 dy>0이 성립될 때, dx>dy가 성립되는지의 여부를 판정한다(스텝 S11). dx>dy가 성립될 때, 패킷을 E에 전송한다(스텝 S12). 한편, dx>dy가 성립되지 않을 때, 패킷을 N에 전송한다(스텝 S13).
이어서, 스텝 S10에 있어서 dx>0이고 dy>0이 성립되지 않을 때, 패킷 컨트롤러(15)는 dx<0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S14). dx<0이고 dy>0이 성립될 때, (-1)·dx>dy가 성립되는지의 여부를 판정한다(스텝 S15). (-1)·dx>dy가 성립될 때, 패킷을 W에 전송한다(스텝 S16). 한편, (-1)·dx>dy가 성립되지 않을 때, 패킷을 N에 전송한다(스텝 S17).
이어서, 스텝 S14에 있어서 dx<0이고 dy>0이 성립되지 않을 때, 패킷 컨트롤러(15)는 dx<0이고 dy<0이 성립되는지의 여부를 판정한다(스텝 S18). dx<0이고 dy<0이 성립될 때, dx>dy가 성립되는지의 여부를 판정한다(스텝 S19). dx>dy가 성립될 때, 패킷을 S에 전송한다(스텝 S20). 한편, dx>dy가 성립되지 않을 때, 패킷을 W에 전송한다(스텝 S21).
이어서, 스텝 S18에 있어서 dx<0이고 dy<0이 성립되지 않을 때, 패킷 컨트롤러(15)는 dx>(-1)·dy가 성립되는지의 여부를 판정한다(스텝 S22). dx>(-1)·dy가 성립될 때, 패킷을 E에 전송한다(스텝 S23). 한편, dx>(-1)·dy가 성립되지 않을 때, 패킷을 S에 전송한다(스텝 S24).
이상의 처리에 의해, 메모리 노드에 입력된 패킷은, 송신처 노드(to)와 자노드(PP)와의 거리가 가장 작아지는 것 같은 인접하는 메모리 노드에 전송된다.
도 5d에, 패킷의 전송 과정의 구체예를 나타낸다. 전송 알고리즘 1에 있어서는 |dx|=|dy|가 될 때까지는 |dx|>|dy|이면 x 방향으로, |dx|<|dy|이면 y 방향으로 연속해서 진행하고, |dx|=|dy|가 된 후에는 x 방향과 y 방향으로 교대로 진행한다.
예를 들어, 케이스 1에서는 dx=0이고 dy>0이기 때문에, 송신처 노드(to)에 도달할 때까지 N으로 진행한다. 케이스 4에서는 dx>0이고 dy>0이며, dx<dy이기 때문에, dx=dy가 될 때까지 N으로 연속하여 진행하고, dx=dy가 된 후에는 E와 N으로 교대로 진행한다.
[3] 스토리지 장치를 포함하는 스토리지 시스템
도 6은, 제1 실시 형태의 스토리지 장치를 포함하는 스토리지 시스템의 구성을 도시한 도면이다.
스토리지 시스템(20)은, 스토리지 장치를 클라이언트가 사용하기 위한 시스템이며, 이하와 같은 구성을 구비한다.
스토리지 장치(10)는, 게이트웨이 서버를 통해 클라이언트와 접속된다. 스토리지 장치(10) 내부의 통신 규격과 게이트웨이 서버(21A, 21B)의 통신 규격이 상이한 경우에는 양자 사이에 어댑터(22A, 22B)를 각각 설치할 수 있다.
상세하게 설명하면, 스토리지 장치(10)의 외주부에 배치된 메모리 노드(1,4)는 어댑터(22A), 게이트웨이 서버(21A)를 통해 클라이언트(31A)와 접속된다. 마찬가지로, 메모리 노드(1,1)는 어댑터(22B), 게이트웨이 서버(21B)를 통해 클라이언트(31B1, 31B2)와 접속된다. 또한, "메모리 노드(x,y)"는 어드레스(x,y)의 메모리 노드임을 나타낸다. 이후도 마찬가지이다.
게이트웨이 서버(21A, 21B)는, 예를 들어 컴퓨터로 구성되고, 스토리지 장치(10) 내부의 메모리 노드(11)와 동일한 규약에 기초하여 어드레스를 갖는다. 도 6에서는, 게이트웨이 서버(21A)는 어드레스(0,4)를 갖고, 게이트웨이 서버(21B)는 어드레스(0,1)을 갖는다.
이어서, 스토리지 시스템에 있어서의 기입 동작을 설명한다.
도 7은, 스토리지 장치(10)에 클라이언트가 파일을 기입하는 절차를 나타낸다. 여기에서는 클라이언트(31A)가 스토리지 장치(10)에 파일을 기입하는 경우를 설명한다.
클라이언트(31A)는, 파일과 파일 ID를 게이트웨이 서버(21A)에 송신한다((1) 참조). 파일 ID는 파일을 일의적으로 특정할 수 있는 식별자이다. 파일 ID로서는, ¥¥strage-system¥home¥cliantA¥file1.txt와 같은 소정의 파일 시스템에 있어서의 풀 패스의 파일명을 사용할 수 있다.
이어서, 게이트웨이 서버(21A)는, 파일을 규정 크기의 데이터 패킷으로 분할하고, 각 패킷에 패킷 ID를 할당한다. 계속해서, 파일 ID와, 분할된 패킷의 패킷 ID를 파일 테이블에 기입한다((2) 참조). 패킷 ID는 패킷을 일의적으로 특정할 수 있는 식별자이다. 패킷 ID로서는, … ¥file1.txt-1, …¥file1.txt-2와 같이 「파일 ID+연속하는 번호」를 할당할 수 있다.
이어서, 게이트웨이 서버(21A)는, 패킷 ID의 정보에 기초하여, 그의 패킷을 기입하는 메모리 노드의 어드레스(이하, 기입 노드 어드레스)를 결정한다((3) 참조). 이때, 대규모 분산 파일 시스템에서 사용되는 컨시스텐트 해싱(문헌 1 참조)이라 불리는 노드 결정 방법을 사용할 수도 있다. 컨시스텐트 해싱은, 노드 어드레스의 해시값 및 패킷 ID의 해시값의 양쪽을 사용하여 기입 어드레스를 결정하는 점에 특징이 있다.
[문헌 1]: 마루야마 후지오/슈도 가즈유키 편, 「구름 세계 저편을 잡는 크라우드의 기술」, 가부시끼가이샤 아스키·미디어 웍스, 2009년 11월 6일, p.88, ISBN978-4-04-868064-6
이어서, 게이트웨이 서버(21A)는 기입 어드레스를 송신처 어드레스, 게이트웨이 서버(21A)의 어드레스를 송신원 어드레스로 하여, 기입 패킷을 스토리지 장치(10)에 송신한다((4), (5) 참조).
메모리 노드(1,4)에 송신된 패킷은, 스토리지 장치(10) 내에서 전송 알고리즘 1에 따라서 적절한 전송이 반복됨으로써, 송신처 어드레스의 메모리 노드에 도달한다((6) 참조). 원하는 메모리 노드에서는, 수취한 패킷을 자노드의 메모리(16)에 기입한다((7) 참조). 그 후, 기입 완료 패킷을 게이트웨이 서버(21A)에 회신한다((8) 참조).
이어서, 스토리지 시스템에 있어서의 판독 동작을 설명한다.
도 8은, 스토리지 장치(10)로부터 클라이언트가 파일을 판독하는 절차를 나타낸다. 여기에서는, 클라이언트(31A)가 스토리지 장치(10)로부터 파일을 판독하는 경우를 설명한다.
클라이언트(31A)는 판독 요구(파일 ID)를 게이트웨이 서버(21A)에 송신한다((1) 참조).
게이트웨이 서버(21A)는, 파일 테이블로부터 파일 ID에 대응하는 패킷 ID를 취득한다((2) 참조). 계속해서, 게이트웨이 서버(21A)는, 패킷 ID의 정보에 기초하여, 판독을 행하는 메모리 노드의 어드레스(이하, 판독 노드 어드레스)를 결정한다((3) 참조). 이때, 대규모 분산 파일 시스템에서 사용되는 컨시스텐트 해싱이라 불리는 노드 결정 방법을 사용할 수도 있다.
이어서, 게이트웨이 서버(21A)는, 판독 노드 어드레스를 송신처 어드레스, 게이트웨이 서버(21A)의 어드레스를 송신원 어드레스로 하여, 판독 패킷을 스토리지 장치(10)에 송신한다((4), (5) 참조).
메모리 노드(1,4)에 송신된 패킷은, 스토리지 장치(10) 내에서 전송 알고리즘 1에 따라서 적절한 전송이 반복됨으로써, 송신처 어드레스의 메모리 노드에 도달한다((6) 참조). 원하는 메모리 노드에서는 판독 패킷에 따라 자노드의 메모리(16)로부터 원하는 데이터를 판독한다((7) 참조). 그 후, 판독한 데이터를 데이터 패킷으로서 게이트웨이 서버(21A)에 회신한다((8) 참조).
도 6에 도시한 시스템에 있어서는, 기입 데이터의 랜더마이즈 처리(Rand 처리), 기입 데이터에의 오류 정정 부호(ECC: error-correcting code)의 부여, 및 ECC를 사용한 판독 데이터의 오류 검출 및 정정의 기능(ECC 기능)을 게이트웨이 서버가 실시할 수도 있다. 이 경우, 각 메모리 노드의 메모리 컨트롤러는 랜더마이즈 처리와 ECC 기능을 가질 필요가 없다. 또한, 메모리 노드 간의 통신 시에 ECC 처리를 실시할 필요가 없다. 이로 인해, 메모리 노드 1개당의 비용을 저감하는 것이 가능해진다.
[4] 스토리지 장치의 확장성
스토리지 장치에 새로운 메모리 노드를 추가할 때의 방식에 대하여 설명한다.
도 9는, 스토리지 장치에 새로운 메모리 노드를 추가했을 때의 자동 어드레스 취득 방식을 나타낸다.
본 실시 형태의 스토리지 장치(10)에 있어서는, 격자 좌표(x,y)에 위치하는 메모리 노드의 논리 어드레스는 위치 좌표와 일치하여 (x,y)로 하기 때문에, 추가하는 메모리 노드는 인접 노드에 어드레스를 문의함으로써, 자노드의 어드레스를 간이하게 산출해 낼 수 있다.
예를 들어, 추가하는 메모리 노드가 W 방향에 있는 인접 노드에 어드레스를 문의하는 경우, 인접 노드의 어드레스를 (x,y)로 하면, 추가 노드의 어드레스는 (x+1,y)가 된다. 마찬가지로, N, E, S에 있는 인접 노드(x,y)에 문의했을 경우, 자노드의 어드레스는 각각 (x,y-1), (x-1,y), (x,y+1)이 된다.
도 9에 도시한 경우에 있어서는, 메모리 노드(4,4)의 E 방향에 새로운 메모리 노드를 추가한 상황을 예시하고 있다. 추가하는 메모리 노드는 to와 from이 none인 address_request 패킷을 W 방향에 있는 인접 노드(4,4)에 송신한다. address_request 패킷을 수신한 메모리 노드(4,4)는 from을 자노드 어드레스로 하고, to를 (5,4)로 한 address_answer 패킷을 E 방향에 있는 메모리 노드의 출력 포트 버퍼에 세팅한다. 추가 노드는 address_answer 패킷을 수신함으로써, 자노드의 어드레스가 (5,4)인 것을 산출해 낼 수 있다.
또한, 다른 방식으로서, 수동 어드레스 설정 방식도 생각할 수 있다. 수동 어드레스 설정 방식에서는, 스토리지 장치(10)의 운용자가 미리 추가하는 메모리 노드의 어드레스를 산출해 내고, 이것을 프리셋하고 나서 신규한 메모리 노드를 추가한다.
전술한 자동 어드레스 취득 방식은, 각 메모리 노드의 패킷 컨트롤러가 Address_request 패킷에 대하여 회답하는 기능을 갖는 것이 필요하다. 이로 인해, 패킷 컨트롤러 1개당의 비용이 고가가 되는 경향이 있다. 한편, 추가하는 메모리 노드의 어드레스를 프리셋할 필요가 없기 때문에, 메모리 노드를 추가할 때의 절차가 간이화되어, 운용 비용을 저하시킬 수 있다.
이상 설명한 바와 같이 제1 실시 형태에 따르면, 메모리 노드의 논리적인 어드레스와 물리적인 위치(물리 어드레스)가 일치하기 때문에, 각 메모리 노드가 경로 지정표를 관리할 필요가 없는 효율적인 데이터 전송 방식을 실현할 수 있다. 이로 인해, 스토리지 장치의 확장성이 우수한, 즉 스토리지 장치에 메모리 노드를 용이하게 추가하는 것이 가능하다.
[제2 실시 형태]
제2 실시 형태의 스토리지 장치에 대하여 설명한다. 제2 실시 형태는 제1 실시 형태가 갖는 전송 알고리즘 1과 상이한 전송 알고리즘 2를 갖는다. 전송 알고리즘 2에서는, 패킷이 포함하는 송신처 어드레스 및 송신원 어드레스, 자노드의 어드레스의 3개의 정보에 기초하여, 전송처의 메모리 노드를 결정한다. 또한, 이 스토리지 장치는 도 1 및 도 2와 동일한 구성을 갖기 때문에 기재를 생략한다.
[1] 스토리지 장치의 전송 알고리즘 2
도 10은, 제2 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 2를 도시한 도면이다. 도 10을 참조하여, 패킷의 송신처 어드레스 및 송신원 어드레스, 자노드의 어드레스의 3개의 정보에 기초하여, 전송처의 인접 노드를 결정하는 방법의 일례를 나타낸다. 이것을 전송 알고리즘 2로 한다.
도 10에 도시한 바와 같이, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선으로 구획되는 2개의 영역 중 어느 쪽에 자노드(PP)가 존재하는지를 판단하고, 그 영역에 할당된 방향의 인접하는 메모리 노드에 패킷을 전송한다.
도 11a 내지 도 11d를 참조하여, 전송 알고리즘 2에 따른 패킷의 전송 과정의 구체예를 나타낸다.
도 11a에 도시한 바와 같이, 송신처 노드(to)의 어드레스를 (xto, yto), 송신원 노드(from)의 어드레스를 (xfrom, yfrom), 자노드(PP)의 어드레스를 (xpp, ypp)로 한다. 또한, dx=xto-xfrom, dy=yto-yfrom, Dx=xpp-xfrom, Dy=ypp-yfrom으로 한다. 전송처를 나타내는 방향으로서, 도 11b에 도시한 바와 같이, y가 증가하는 방향을 N, x가 증가하는 방향을 E, y가 감소하는 방향을 S, x가 감소하는 방향을 W로 한다.
y=(dx/dy)·x라는 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선의 식에 기초하여, Dy와 (dy/dx)·Dx 중 어느 쪽이 큰 지를 비교함으로써, 그 직선으로 구획되는 2개의 영역 중 어느 쪽에 자노드(PP)가 존재하고 있는지를 판단한다.
dx>0이고 dy>0인 경우를 예로 전송 방향의 할당예를 설명한다. Dy와 (dy/dx)·Dx를 비교한 경우에, Dy가 (dy/dx)·Dx보다 커지는 영역을 A 영역, 다른 한쪽 영역을 B 영역으로 한다. 전송에 있어서, A 영역의 제1 우선 방향에는 E를 할당하고, B 영역의 제1 우선 방향에는 N을 할당한다. 전송 알고리즘 2에 있어서는, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선을 따라서 패킷이 진행하도록 전송이 행해진다.
도 11c에, 스토리지 장치에 있어서의 전송 알고리즘 2의 플로우를 나타내었다. 전송 알고리즘 2는 패킷 컨트롤러(15)에 기억되어 있고, 패킷 컨트롤러(15)에 의해 실행된다.
우선, 패킷 컨트롤러(15)는 dx=xto-xfrom, dy=yto-yfrom, Dx=xpp-xfrom, Dy=ypp-yfrom을 산출한다(스텝 S31). 계속해서, 패킷 컨트롤러(15)는 dx가 0인지의 여부를 판정한다(스텝 S32). dx가 0일 때, yto>ypp가 성립되는지의 여부를 판정한다(스텝 S33). yto>ypp가 성립될 때, 패킷을 N에 전송한다(스텝 S34). 한편, yto>ypp가 성립되지 않을 때, 패킷을 S에 전송한다(스텝 S35).
이어서, 스텝 S32에 있어서 dx가 0이 아닐 때, 패킷 컨트롤러(15)는 dy가 0인지의 여부를 판정한다(스텝 S36). dy가 0일 때, xto>xpp가 성립되는지의 여부를 판정한다(스텝 S37). xto>xpp가 성립될 때, 패킷을 E에 전송한다(스텝 S38). 한편, xto>xpp가 성립되지 않을 때, 패킷을 W에 전송한다(스텝 S39).
이어서, 스텝 S36에 있어서 dy가 0이 아닐 때, 즉 dx와 dy가 0이 아닐 때, 패킷 컨트롤러(15)는 Dy·dx>dy·Dx가 성립되는지의 여부를 판정한다(스텝 S40). Dy·dx>dy·Dx가 성립될 때, dx>0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S41). dx>0이고 dy>0이 성립될 때, 패킷을 E에 전송한다(스텝 S42). 한편, dx>0이고 dy>0이 성립되지 않을 때, dx<0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S43). dx<0이고 dy>0이 성립될 때, 패킷을 N에 전송한다(스텝 S44).
이어서, 스텝 S43에 있어서 dx<0이고 dy>0이 성립되지 않을 때, dx<0이고 dy<0이 성립되는지의 여부를 판정한다(스텝 S45). dx<0이고 dy<0이 성립될 때, 패킷을 W에 전송한다(스텝 S46). dx<0이고 dy<0이 성립되지 않을 때, 패킷을 S에 전송한다(스텝 S47).
이어서, 스텝 S40에 있어서 Dy·dx>dy·Dx가 성립되지 않을 때, dx>0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S48). dx>0이고 dy>0이 성립될 때, 패킷을 N에 전송한다(스텝 S49). dx>0이고 dy>0이 성립되지 않을 때, dx<0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S50). dx<0이고 dy>0이 성립될 때, 패킷을 W에 전송한다(스텝 S51). dx<0이고 dy>0이 성립되지 않을 때, dx<0이고 dy<0이 성립되는지의 여부를 판정한다(스텝 S52). dx<0이고 dy<0이 성립될 때, 패킷을 S에 전송한다(스텝 S53). dx<0이고 dy<0이 성립되지 않을 때, 패킷을 E에 전송한다(스텝 S54).
이상의 처리에 의해, 메모리 노드에 입력된 패킷은, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선을 따라서 패킷이 진행하도록, 인접하는 메모리 노드에 전송된다.
도 11d에, 패킷의 전송 과정의 구체예를 나타낸다. 전송 알고리즘 2에 있어서는, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선을 따라서 패킷이 진행하도록 전송이 행해진다. 예를 들어, 케이스 3에서는 dx<0이고 dy>0이며, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선으로부터 가능한 한 떨어지지 않도록 W 또는 N으로 진행한다. 케이스 4에서는 dx>0이고 dy>0이며, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선으로부터 가능한 한 떨어지지 않도록 N 또는 E로 진행한다.
도 12a 및 도 12b를 참조하여, 전송 알고리즘 1에 대한 전송 알고리즘 2의 우위성을 나타내었다.
도 12a 및 도 12b는, 2개의 송신원 노드(from1)와 (from2)로부터 각각 송신처 노드(to)앞의 패킷을 송신한 경우의 패킷의 전송 과정을 예시하고 있다. 도 12a는 전송 알고리즘 1에 의한 전송 과정을 나타내고, 도 12b는 전송 알고리즘 2에 의한 전송 과정을 나타낸다.
도 12a에 도시한 전송 알고리즘 1에서는, 2개의 패킷이 합류하는 지점에서 합류 대기의 정체(jam으로 나타냄)가 발생하고 있다. 한편, 도 12b에 도시한 전송 알고리즘 2에서는 정체는 발생하고 있지 않다. 따라서, 전송 알고리즘 2에서는 전송 알고리즘 1보다 정체 발생 확률을 감소시킬 수 있다.
이상 설명한 바와 같이 제2 실시 형태에 따르면, 제1 실시 형태에 비하여 정체 발생 확률을 감소시킬 수 있어, 많은 클라이언트가 동시에 접속한 경우라도 응답 속도를 유지할 수 있는 스토리지 장치를 제공 가능하다.
또한, 제1 실시 형태와 마찬가지로, 메모리 노드의 논리 어드레스와 물리 어드레스가 일치하기 때문에, 각 메모리 노드가 경로 지정표를 관리할 필요가 없는 효율적인 데이터 전송 방식을 실현할 수 있다. 이로 인해, 스토리지 장치의 확장성이 우수한, 즉 스토리지 장치에 메모리 노드를 용이하게 추가하는 것이 가능하다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제3 실시 형태]
제3 실시 형태의 스토리지 장치에 대하여 설명한다. 제3 실시 형태는, 제1, 제2 실시 형태가 갖는 전송 알고리즘 1, 2와 상이한 전송 알고리즘 3을 갖는다. 전송 알고리즘 3에서는, 패킷이 포함하는 송신처 어드레스 및 송신원 어드레스, 자노드의 어드레스 및 자노드의 출력 포트 점유 정보의 4개의 정보에 기초하여, 전송처의 메모리 노드를 결정한다. 또한, 이 스토리지 장치는 도 1 및 도 2와 동일한 구성을 갖기 때문에 기재를 생략한다.
[1] 스토리지 장치의 전송 알고리즘 3
도 13은, 제3 실시 형태의 스토리지 장치에 있어서의 전송 알고리즘 3을 도시한 도면이다. 도 13을 참조하여, 패킷의 송신처 어드레스 및 송신원 어드레스, 자노드의 어드레스, 자노드의 출력 포트 점유 정보의 4개의 정보에 기초하여, 전송처의 인접 노드를 결정하는 방법의 일례를 나타낸다. 이것을 전송 알고리즘 3으로 한다.
도 13에 도시한 바와 같이, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선으로 구획되는 2개의 영역 중 어느 쪽에 자노드(PP)가 존재하는지를 판단하여, 그 영역에 할당된 2개의 방향 중, 자노드의 출력 포트의 점유 정보에 의해 정해지는 방향의 인접 노드에 패킷을 전송한다. 각 영역에는 제1 우선 방향과 제2 우선 방향을 할당한다. 제1 우선 방향의 출력 포트 버퍼가 다른 패킷에 의해 점유되어 있었을 경우에, 제2 우선 방향이 선택된다.
도 13, 도 14a 내지 도 14d를 참조하여, 전송 알고리즘 3에 따른 패킷의 전송 과정의 구체예를 나타내었다.
도 14a에 도시한 바와 같이, 송신처 노드(to)의 어드레스를 (xto, yto), 송신원 노드(from)의 어드레스를 (xfrom, yfrom), 자노드의 어드레스(PP)를 (xpp, ypp)로 한다. 또한, dx=xto-xfrom, dy=yto-yfrom, Dx=xpp-xfrom, Dy=ypp-yfrom으로 한다.
도 13에서는 dx>0이고 dy>0인 경우를 예시하고 있다. Dy와 (dy/dx)·Dx를 비교한 경우에, Dy가 (dy/dx)·Dx보다 커지는 영역을 A 영역, 다른 한쪽 영역을 B 영역으로 한다. 전송에 있어서, A 영역의 제1 우선 방향에는 E를 할당하고, B 영역의 제1 우선 방향에는 N을 할당한다. 또한, A 영역의 제2 우선 방향(bypass 방향)에는 N을 할당하고, B 영역의 제2 우선 방향에는 E를 할당한다. 예를 들어, 도시되어 있는 바와 같이 패킷을 전송하는 메모리 노드가 B 영역에 속하는 경우에 있어서, 제1 우선 방향인 N 방향의 출력 포트 버퍼가 다른 패킷에 점유되어 있으면, 그 메모리 노드는 제2 우선 방향인 E 방향에 패킷을 전송한다.
도 14c에, 스토리지 장치에 있어서의 전송 알고리즘 3의 흐름을 나타낸다. 전송 알고리즘 3은, 패킷 컨트롤러(15)에 기억되어 있고, 패킷 컨트롤러(15)에 의해 실행된다. 또한, 도 14b에 도시한 바와 같이, N으로 패킷을 출력하기 위한 출력 포트 버퍼를 OPBN으로 하고, E로 패킷을 출력하기 위한 출력 포트 버퍼를 OPBE, W로 패킷을 출력하기 위한 출력 포트 버퍼를 OPBW, S로 패킷을 출력하기 위한 출력 포트 버퍼를 OPBS로 한다.
이들 출력 포트 버퍼 OPBN, OPBE, OPBW, OPBS가 비어 있는지(패킷을 기억할 수 있는지), 혹은 패킷에 점유되어 있는지의 정보(출력 포트 점유 정보)는 이하와 같이 패킷 컨트롤러(15)에 기억된다. 패킷 컨트롤러(15)는, 출력 포트 버퍼와 입력 포트 버퍼의 총수만큼만 버퍼 점유 플래그 비트를 갖는다. 패킷 컨트롤러(15)는, 출력 포트 버퍼에 패킷이 기입된 경우, 그 버퍼에 대응하는 버퍼 점유 플래그 비트를 "1"로 하고, 출력 포트 버퍼로부터 패킷이 출력된 경우, 그 버퍼에 대응하는 버퍼 점유 플래그 비트를 "0"으로 한다. 패킷 컨트롤러(15)는, 버퍼 점유 플래그 비트를 평가함으로써, 대응하는 출력 포트 버퍼가 비어 있는지의 여부(패킷에 점유되어 있는지의 여부)를 판단할 수 있다.
우선, 패킷 컨트롤러(15)는 dx=xto-xfrom, dy=yto-yfrom, Dx=xpp-xfrom, Dy=ypp-yfrom을 산출한다(스텝 S61). 계속해서, 패킷 컨트롤러(15)는, dx가 0인지의 여부를 판정한다(스텝 S62). dx가 0일 때, yto>ypp가 성립되는지의 여부를 판정한다(스텝 S63). yto>ypp가 성립될 때, 패킷을 N에 전송한다(스텝 S64). 한편, yto>ypp가 성립되지 않을 때, 패킷을 S에 전송한다(스텝 S65).
이어서, 스텝 S62에 있어서 dx가 0이 아닐 때, 패킷 컨트롤러(15)는 dy가 0인지의 여부를 판정한다(스텝 S66). dy가 0일 때, xto>xpp가 성립되는지의 여부를 판정한다(스텝 S67). xto>xpp가 성립될 때, 패킷을 E에 전송한다(스텝 S68). 한편, xto>xpp가 성립되지 않을 때, 패킷을 W에 전송한다(스텝 S69).
이어서, 스텝 S66에 있어서 dy가 0이 아닐 때, 즉 dx와 dy가 0이 아닐 때, 패킷 컨트롤러(15)는 Dy·dx>dy·Dx가 성립되는지의 여부를 판정한다(스텝 S70). Dy·dx>dy·Dx가 성립될 때, dx>0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S71). dx>0이고 dy>0이 성립될 때, E에 출력하는 출력 포트 버퍼 OPBE가 비어 있는지의 여부, 즉 다른 패킷에 의해 점유되어 있지 않은지를 판정한다(스텝 S72). 출력 포트 버퍼 OPBE가 비어 있을 때, 패킷을 E에 전송한다(스텝 S73). 한편, 출력 포트 버퍼 OPBE가 비어 있지 않을 때, 패킷을 N에 전송한다(스텝 S74).
이어서, 스텝 S71에 있어서 dx>0이고 dy>0이 성립되지 않을 때, dx<0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S75). dx<0이고 dy>0이 성립될 때, N에 출력하는 출력 포트 버퍼 OPBN이 비어 있는지의 여부를 판정한다(스텝 S76). 출력 포트 버퍼 OPBN이 비어 있을 때, 패킷을 N에 전송한다(스텝 S77). 한편, 출력 포트 버퍼 OPBN이 비어 있지 않을 때, 패킷을 W에 전송한다(스텝 S78).
이어서, 스텝 S75에 있어서 dx<0이고 dy>0이 성립되지 않을 때, dx<0이고 dy<0이 성립되는지의 여부를 판정한다(스텝 S79). dx<0이고 dy<0이 성립될 때, W에 출력하는 출력 포트 버퍼 OPBW가 비어 있는지의 여부를 판정한다(스텝 S80). 출력 포트 버퍼 OPBW가 비어 있을 때, 패킷을 W에 전송한다(스텝 S81). 한편, 출력 포트 버퍼 OPBW가 비어 있지 않을 때, 패킷을 S에 전송한다(스텝 S82).
이어서, 스텝 S79에 있어서 dx<0이고 dy<0이 성립되지 않을 때, S에 출력하는 출력 포트 버퍼 OPBS가 비어 있는지의 여부를 판정한다(스텝 S83). 출력 포트 버퍼 OPBS가 비어 있을 때, 패킷을 S에 전송한다(스텝 S84). 한편, 출력 포트 버퍼 OPBS가 비어 있지 않을 때, 패킷을 E에 전송한다(스텝 S85).
이어서, 스텝 S70에 있어서 Dy·dx>dy·Dx가 성립되지 않을 때, dx>0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S86). dx>0이고 dy>0이 성립될 때, N에 출력하는 출력 포트 버퍼 OPBN이 비어 있는지의 여부를 판정한다(스텝 S87). 출력 포트 버퍼 OPBN이 비어 있을 때, 패킷을 N에 전송한다(스텝 S88). 한편, 출력 포트 버퍼 OPBN이 비어 있지 않을 때, 패킷을 E에 전송한다(스텝 S89).
이어서, 스텝 S86에 있어서 dx>0이고 dy>0이 성립되지 않을 때, dx<0이고 dy>0이 성립되는지의 여부를 판정한다(스텝 S90). dx<0이고 dy>0이 성립될 때, W에 출력하는 출력 포트 버퍼 OPBW가 비어 있는지의 여부를 판정한다(스텝 S91). 출력 포트 버퍼 OPBW가 비어 있을 때, 패킷을 W에 전송한다(스텝 S92). 한편, 출력 포트 버퍼 OPBW가 비어 있지 않을 때, 패킷을 N에 전송한다(스텝 S93).
이어서, 스텝 S90에 있어서 dx<0이고 dy>0이 성립되지 않을 때, dx<0이고 dy<0이 성립되는지의 여부를 판정한다(스텝 S94). dx<0이고 dy<0이 성립될 때, S에 출력하는 출력 포트 버퍼 OPBS가 비어 있는지의 여부를 판정한다(스텝 S95). 출력 포트 버퍼 OPBS가 비어 있을 때, 패킷을 S에 전송한다(스텝 S96). 한편, 출력 포트 버퍼 OPBS가 비어 있지 않을 때, 패킷을 W에 전송한다(스텝 S97).
이어서, 스텝 S94에 있어서 dx<0이고 dy<0이 성립되지 않을 때, E에 출력하는 출력 포트 버퍼 OPBE가 비어 있는지의 여부를 판정한다(스텝 S98). 출력 포트 버퍼 OPBE가 비어 있을 때, 패킷을 E에 전송한다(스텝 S99). 한편, 출력 포트 버퍼 OPBE가 비어 있지 않을 때, 패킷을 S에 전송한다(스텝 S100).
이상의 처리에 의해, 제1 우선 방향에 있어서 정체가 발생하고 있는 경우에는, 제2 우선 방향으로 패킷을 전송함으로써, 정체를 회피하면서 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선을 따라서, 인접하는 메모리 노드에 패킷이 전송된다.
도 14d에, 패킷의 전송 과정의 구체예를 나타낸다. 케이스 1은 정체가 발생하지 않는 예이며, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선을 따라서 패킷이 전송된다. 케이스 2, 3은 정체를 회피하는 예를 나타낸다. 케이스 2에서는, 패킷을 N에 전송하고자 하고 있을 때, N 방향에 정체가 발생하고 있다. 이로 인해, 케이스 3에 도시한 바와 같이, 패킷을 E에 전송하여 정체를 회피하고 있다. 케이스 4, 5는 정체를 회피하는 다른 예를 나타낸다. 케이스 4에서는, 패킷을 E에 전송하고자 하고 있을 때, E 방향에 정체가 발생하고 있다. 이로 인해, 케이스 5에 도시한 바와 같이, 패킷을 N에 전송하여 정체를 회피하고 있다.
전송 알고리즘 3에 있어서는, 제1 우선 방향에서 정체가 발생하고 있는 경우에는, 제2 우선 방향으로 패킷을 전송함으로써 정체를 회피할 수 있다. 이때, 정체가 애당초 발생하지 않은 경우와 비교하여, 송신처 노드에 패킷이 도달할 때까지의 전송 횟수는 변함없다.
[2] 스토리지 장치의 전송 알고리즘 4
도 15는 스토리지 장치에 있어서의 전송 알고리즘 4를 도시한 도면이다. 도 15를 참조하여, 패킷의 송신처 어드레스 및 송신원 어드레스, 자노드의 어드레스, 자노드의 출력 포트 점유 정보의 4개의 정보에 기초하여, 전송처의 인접 노드를 결정하는 방법의 다른 제1 예를 나타내었다. 이것을 전송 알고리즘 4로 한다.
도 15에 도시한 바와 같이, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선, 및 그 직선과 송신처 노드(to)의 위치에서 직교하는 직선으로 구획되는 4개의 영역을 정의한다. 이들 4개의 영역 중, 어느 영역에 자노드(PP)가 존재하는지를 판단하여, 자노드(PP)가 존재하는 영역에 할당된 제1 우선과 제2 우선의 2개의 방향 중, 자노드(PP)의 출력 포트의 점유 정보에 의해 정해지는 방향의 인접 노드에 패킷을 전송한다.
알고리즘 3과 비교한 알고리즘 4의 우위성은 다음과 같다. 알고리즘 3에 대해서는, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선을 대각선으로 하는 직사각형에 의해 규정되는 영역 이외에 패킷을 전송하는 것을 금지하는 제한을 설치할 필요가 있다. 한편, 알고리즘 4에 대해서는 그 제한을 설치할 필요가 없다.
[3] 스토리지 장치의 전송 알고리즘 5
도 16은 스토리지 장치에 있어서의 전송 알고리즘 5를 도시한 도면이다. 도 16을 참조하여, 패킷의 송신처 어드레스 및 송신원 어드레스, 자노드의 어드레스, 자노드의 출력 포트 점유 정보의 4개의 정보에 기초하여, 전송처의 인접 노드를 결정하는 방법의 다른 제2 예를 나타내었다. 이것을 전송 알고리즘 5로 한다.
도 16에 도시한 바와 같이, 송신처 노드(to)와 송신원 노드(from)를 연결하는 직선, 그 직선과 송신처 노드(to)의 위치에서 직교하는 직선, 송신처 노드(to)의 위치에서 x 방향과 y 방향으로 신장하는 2개의 직선의 4개의 직선으로 구획되는 8개의 영역을 정의한다. 이들 8개의 영역 중, 어느 영역에 자노드(PP)가 존재하는지를 판단하여, 자노드(PP)가 존재하는 영역에 할당된 제1 우선과 제2 우선의 2개의 방향 중, 자노드(PP)의 출력 포트의 점유 정보에 의해 정해지는 방향의 인접 노드에 패킷을 전송한다. 상기 송신처 노드(to)의 위치에서 x 방향과 y 방향으로 신장하는 2개의 직선은, 예를 들어 송신처 노드(to)를 통과하여 메모리 노드의 배열 방향을 따른 2개의 직선을 포함한다.
알고리즘 4와 비교한 알고리즘 5의 우위성은 다음과 같다. 알고리즘 4에서는, 송신처 노드(to)와 송신원 노드(from)을 연결하는 직선을 대각선으로 하는 직사각형에 의해 규정되는 영역 이외에서 패킷을 제2 우선 방향(bypass 방향)으로 전송시켰을 경우, 송신처 노드(to)에 패킷이 도달할 때까지의 전송 횟수가 적어도 1개 증가한다. 한편, 알고리즘 5의 경우에서는 전송 횟수의 증가가 없다.
이상 설명한 바와 같이 제3 실시 형태에 따르면, 제1, 제2 실시 형태에 비하여 정체 발생 확률을 감소시킬 수 있어, 많은 클라이언트가 동시에 접속한 경우에도, 응답 속도를 유지할 수 있는 스토리지 장치를 제공 가능하다.
또한, 제1 실시 형태와 마찬가지로, 메모리 노드의 논리 어드레스와 물리 어드레스가 일치하기 때문에, 각 메모리 노드가 경로 지정표를 관리할 필요가 없는 효율적인 데이터 전송 방식을 실현할 수 있다. 이로 인해, 스토리지 장치의 확장성이 우수한, 즉 스토리지 장치에 메모리 노드를 용이하게 추가하는 것이 가능하다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제4 실시 형태]
제4 실시 형태에서는, 전송 기능을 갖는 메모리 노드를 복수 구비한 스토리지 장치와, 스토리지 장치에 접속된 제어 컴퓨터로 이루어지는 스토리지 시스템에 있어서, 패킷 전송 시의 정체가 발생하지 않는, 즉 정체 프리가 되는 시스템의 운용 조건에 대하여 설명한다.
[1] 스토리지 시스템의 구성
도 17은 제4 실시 형태의 스토리지 시스템의 구성을 도시한 도면이다.
도시한 바와 같이, 스토리지 시스템은, 복수의 메모리 노드(11)를 포함하는 스토리지 장치(10), 및 스토리지 장치(10)에 접속된 복수의 제어 컴퓨터(41)를 구비한다. 스토리지 장치(10)는, 도 1에 도시한 바와 같이, 데이터 전송 기능을 갖는 메모리 노드가 서로 복수 접속된 구성을 갖는다. 스토리지 장치(10)의 외주부에 배치된 메모리 노드(11)에는 제어 컴퓨터(41)가 접속되어 있다.
[2] 스토리지 시스템의 정체 발생 프리의 운용 조건
도 17을 참조하여, 스토리지 시스템에 있어서의 패킷 전송 시뮬레이션의 틀을 설명한다. 스토리지 장치(10)에 접속된 제어 컴퓨터(41)로부터 송신된 리퀘스트 패킷이 송신처 어드레스의 메모리 노드에 도달할 때까지의 과정, 및 원하는 메모리 노드로부터 반송된 데이터 패킷이 원래의 제어 컴퓨터(41)에 도착할 때까지의 과정을 시뮬레이션한다. 패킷의 전송 알고리즘으로서는, 도 13을 이용하여 설명한 바이패스 기능 부착 라우팅 알고리즘(전송 알고리즘 3)을 사용한다.
스토리지 장치(10)의 메모리 노드수를 Nnode=Nx×Ny로 하고, 스토리지 장치(10)에 접속되어 있는 제어 컴퓨터수를 Nc로 한다. 메모리 노드 사이에서 1회의 패킷 전송이 행해지는 시간을 단위 스텝 시간으로 한다. 제어 컴퓨터(41)가, 단위 스텝 시간당에 리퀘스트 패킷을 송신할 확률을 Rr로 한다. Rr은 최대로 1이다. 바이패스 전송 발생률을 Rbypass, 정체 발생률을 Rjam으로 한다.
바이패스 전송 발생률 Rbypass는, 메모리 노드가 1개의 패킷의 전송을 시도했을 때에, 바이패스 전송에 의해 정체가 회피된 확률을 나타낸다. 한편, 정체 발생률 Rjam은, 메모리 노드가 1개의 패킷의 전송을 시도했을 때에, 제1 우선 방향의 출력 포트 버퍼뿐만 아니라, 제2 우선 방향의 출력 포트 버퍼도 다른 패킷에 의해 점유되어 있었기 때문에, 패킷 전송을 실시할 수 없어 정체가 발생하고, 패킷이 체류한 확률을 나타낸다. 또한, 부하 계수를 Rload로 한다. 부하 계수 Rload는 1개의 메모리 노드에 존재하고 있는 패킷수의 평균이다.
도 18은, 바이패스 전송 발생률 Rbypass와 부하 계수 Rload의 관계, 및 정체 발생률 Rjam과 부하 계수 Rload의 관계를 나타낸다. 다수의 플롯은, 메모리 노드수 Nnode, 제어 컴퓨터수를 Nc, 확률 Rr을 다양하게 변화시킨 경우의 결과를 나타내고 있다.
정체 발생률 Rjam은 부하 계수 Rload가 0.2보다 작은 경우 거의 제로이며, 정체 프리의 시스템 운용 조건은 부하 계수 Rload<0.2인 것을 알 수 있다. 정체 발생률 Rjam은 부하 계수 Rload가 0.2 이상이 되면 증가하기 시작한다. 그러나, 부하 계수 Rload=2이더라도 정체 발생률 Rjam은 0.05 정도로, 실용상 거의 문제가 되지 않는다. 한편, 정체 발생률 Rjam은 부하 계수 Rload가 2보다 커지면 급증한다. 이것은, 부하 계수 Rlaod가 2보다 커지면 연쇄적으로 정체가 발생하는 행업 현상이 일어나기 때문이다.
바이패스 전송 발생률 Rbypass는 부하 계수 Rload의 증가에 대하여, 정체 발생률 Rjam보다 1자리 빨리 상승하고 있다. 즉, 바이패스 전송 알고리즘은 정체 발생 요건을 1자리 정도 개선하는 효과가 있다.
이어서, 이 시뮬레이션 결과에 기초하여, 정체 프리 혹은 정체 발생이 실용상 문제가 되지 않는, 제어 컴퓨터수와 메모리 노드수의 관계를 구한다. 평균 패킷 체류 스텝 시간을 Savg로 한다. 평균 패킷 체류 스텝 시간 Savg는 제어 컴퓨터(41)이 리퀘스트 패킷을 송신하고 나서 그 리퀘스트 패킷이 송신처 어드레스의 메모리 노드에 도달할 때까지의 스텝 시간 Srequest와, 원하는 메모리 노드로부터 반송된 데이터 패킷이 원래의 제어 컴퓨터에 도착할 때까지의 스텝 시간 Sdat의 합이다. 스텝 시간 Srequest와 Sdat는 정체가 발생하지 않는 경우 (Nx/2+Ny/2)이다. 따라서, 평균 패킷 체류 스텝 시간 Savg는 (Nx+Ny)이며, 이것은 약 2√Nnode이다.
한편, 제어 컴퓨터(41)가, 1 스텝 시간당으로 송신하는 리퀘스트 패킷의 총 수는 Nc×Rr이다. 따라서, 스토리지 시스템 내에 존재하는 패킷 총 수는 평균하여 Nc×Rr×2√Nnode이다. 이로 인해, Rload∼Nc×Rr×2√Nnode/Nnode=Nc×Rr×2/√Nnode이다. 여기서, 정체 발생 요건을 Rload limit로 하면, 바람직한 시스템 운용 조건은 Rload<Rload limit가 된다. 따라서, 정체 프리 혹은 정체 발생이 실용상 문제가 되지 않는 최대의 제어 컴퓨터수 Ncmax는 Ncmax<Rload limit×√Nnode/(Rr×2)가 된다. Rr은 최대 1이기 때문에, 보다 엄격한 조건은 Ncmax<Rload limit×√Nnode/2이다.
전술한 바와 같이, 패킷 전송시에 정체 발생 프리의 운용 조건은 Rload limit=0.2이며, 정체가 실용상 문제가 되지 않는 운용 조건은 Rload limit=2이다. 따라서, 바람직한 최대의 제어 컴퓨터수 Ncmax는 Ncmax<√Nnode이며, 보다 바람직하게는 Ncmax<0.1×√Nnode이다. 따라서, Nc<√Nnode와 같은 관계가 성립되고 있다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제5 실시 형태]
제5 실시 형태는, 도 1에 도시한 전송 기능을 갖는 복수의 메모리 노드를 서로 접속한 스토리지 장치를 구비하고, 각 메모리 노드가 분산 처리 기능을 갖는다.
[1] 스토리지 장치의 구성
도 19는, 제5 실시 형태의 스토리지 장치의 구성을 도시한 도면이다.
도시한 바와 같이, 스토리지 장치는, 도 1에 도시한 복수의 메모리 노드(11)를 포함하는 스토리지 장치(10)를 구비하는 동시에, 각 메모리 노드(11)는 어드레스 변환기(42)를 구비하고, 분산 처리 기능을 갖고 있다.
[2] 스토리지 장치의 분산 처리 기능
여기에서는 도 19를 참조하여, apple과 orange라는 키워드를 함께 포함하는 URL을 찾는 AND 검색 처리를 예로 들어, 분산 처리 기능을 설명한다.
여기서, 메모리 노드(1,3)와 (4,3)이 각각 apple과 orange의 전치 파일을 유지하고 있는 것으로 한다. 전치 파일이란, 키워드 하나하나에 대하여 작성되는 색인 파일로, 예를 들어 apple이라는 키워드에 대응하는 전치 파일에는 apple을 포함하는 전 URL의 리스트가 저장된다.
게이트웨이 서버는, AND 검색 명령을 apple과 orange의 전치 파일을 관리하는 메모리 노드에 송신한다. 전치 파일을 관리하는 메모리 노드는, 전치 파일의 내용을 키-값(key-value)형 데이터에 맵핑한다. 여기서, 키와 값은 각각 URL과 그 전치 파일의 키워드로 한다.
각 메모리 노드는 스스로가 보유하는 키-값형 데이터의 각 레코드에 대하여, 키를 어드레스 변환기(42)에 의해 어드레스로 변환하고, 그 어드레스에 값을 포함하는 패킷을 송신한다. 어드레스 변환기(42)는, 어느 룰에 따라, 스스로 키로부터 어드레스를 산출하는 경우도 있고, 키를 어드레스로 변환하는 기능을 갖는 서버에 문의하여, 키에 대응하는 어드레스를 얻을 수도 있다.
예를 들어, 어드레스 변환기(42)는, 다음 어드레싱 룰에 따라, 키로부터 어드레스를 산출한다.
어드레스=hash(key) mod N
여기서, hash()는 암호학적인 해쉬 함수, N은 스토리지 장치(10) 내의 메모리 노드수, mod N은 N을 으로 하는 잉여 연산을 나타낸다.
또한, 예를 들어, 어드레스 변환기(42)는 키에 대응하는 어드레스를 다른 서버에 문의하고, 그리고 다른 서버가 컨시스텐트 해싱에 의해 키를 어드레스로 변환하여 원래의 어드레스 변환기(42)에 회답한다.
도 19에 도시한 예에서는, apple과 orange의 전치 파일은 함께 URL1을 포함하는 것으로 하고, URL1은 어드레스(2,1)로 변환된 것으로 한다. 이 경우, 메모리 노드(2,1)가, URL1이 AND 검색식을 만족시키는지의 여부를 판정하는 역할을 담당하게 된다. 메모리 노드(2,1)에는, 값이 apple과 orange인 2개의 패킷이 전해진다. 이로 인해, 메모리 노드(2,1)는 URL1이 AND 검색 조건을 만족시키고 있음을 알 수 있다.
메모리 노드(2,1)는 그 점을 퀘리를 낸 게이트웨이 서버에 통지한다. 마찬가지 판정을 전치 파일에 기재된 URL 모두에 대하여 다수의 메모리 노드가 행함으로써, 퀘리를 낸 게이트웨이 서버는 AND 검색 조건을 만족시킨 URL의 리스트를 얻을 수 있다.
이상의 AND 검색 연산을, 단일 메모리 노드로 행하는 경우에는, 다음 코드로 나타내는 연산을 행할 필요가 있다.
Figure 112011071728775-pat00001
여기에서는 apple과 orange의 전치 파일이 각각 저장하는 URL의 수를, 각각 Napple과 Norange로 하고, ==는 일치 연산을 나타낸다. 메모리 노드는 일치 연산을, Napple×Norange/2회만큼 반복할 필요가 있다. 본 실시 형태의 스토리지 장치에서는 이 일치 연산을 수많은 메모리 노드에서 분산하여 실시할 수 있다.
이상 설명한 바와 같이 제5 실시 형태에 따르면, 제1 실시 형태에 기재한 스토리징 기능뿐만 아니라, 분산 처리(분산 컴퓨팅) 기능도 겸비할 수 있다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제6 실시 형태]
제6 실시 형태는, 전송 기능을 갖는 메모리 노드를 복수 구비한 스토리지 장치와, 스토리지 장치의 일부의 메모리 노드가, 인접하는 메모리 노드(이하, 인접 노드)와 접속된 입출력 포트(이하, 인접 포트) 이외의 입출력 포트(이하, 비인접 포트)를 갖고, 상기 일부의 메모리 노드가, 상기 비인접 포트에 의해, 제어 컴퓨터 혹은 인접하지 않는 메모리 노드(이하, 비인접 노드)와 접속된 구성을 갖는다.
[1] 스토리지 시스템의 구성
도 20은, 제6 실시 형태의 스토리지 시스템의 구성을 도시한 도면이다.
도시한 바와 같이, 스토리지 시스템은, 복수의 메모리 노드(11)를 포함하는 스토리지 장치(10), 및 스토리지 장치(10)에 접속된 복수의 게이트웨이 서버(21A, 21B)를 구비한다. 스토리지 장치(10)는, 도 1에 도시한 바와 같이, 데이터 전송 기능을 갖는 메모리 노드가 서로 복수 접속된 구성을 갖는다. 스토리지 장치(10)의 외주부에 배치된 메모리 노드(1,4)에는, 어댑터(22A)를 통해 게이트웨이 서버(21A)가 접속되어 있다. 스토리지 장치(10)의 중앙부에 배치된 메모리 노드(3,5)는, 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖고, 이 비인접 포트에는 어댑터(22B)를 통해 게이트웨이 서버(21B)가 접속되어 있다.
[2] 스토리지 시스템의 패킷 전송
도 20을 참조하여, 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖는 메모리 노드를 도입한 효과에 대하여 설명한다. 여기서, 스토리지 장치(10)의 x 방향의 메모리 노드수를 Nx, y 방향의 메모리 노드수를 Ny로 한다.
게이트웨이 서버의 접속처가 스토리지 장치(10)의 외주부에 배치된 메모리 노드로 한정되는 경우, 게이트웨이 서버로부터 원하는 메모리 노드에 도달할 때까지의 패킷의 평균 전송 횟수는 Nx/2+Ny/2이다.
한편, 도 20에 도시한 바와 같이, 스토리지 장치(10)의 중앙부에 위치하는 메모리 노드(3,5)의 입출력 포트수를 증가시키고, 추가한 입출력 포트(상기 비인접 포트)에 의해, 메모리 노드(3,5)를 게이트웨이 서버(21B)와 접속한다. 그러자, 게이트웨이 서버(21B)로부터 원하는 메모리 노드까지의 패킷의 평균 전송 횟수는 Nx/4+Ny/4가 된다.
이와 같이, 스토리지 장치(10) 내의 일부의 메모리 노드의 입출력 포트수를 증가시키고, 추가한 입출력 포트로 메모리 노드와 게이트웨이 서버를 접속하면, 패킷이 원하는 메모리 노드에 도달할 때까지의 평균 전송 횟수를 저감시킬 수 있다.
또한, 도 21에 도시한 바와 같이, 추가한 입출력 포트에 의해 게이트웨이 서버에 접속된 메모리 노드를 스토리지 장치(10)에 복수 배치할 수도 있다. 즉, 메모리 노드(4,7)는 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖고, 이 비인접 포트는 어댑터(22C)를 통해 게이트웨이 서버(21C)에 접속되어 있다.
또한, 스토리지 장치(10) 내의 메모리 노드에 접속된 복수의 게이트웨이 서버(21A, 21B, 21C, 21D)끼리를, 서버와 메모리 노드를 접속하는 배선과는 다른 배선(23)으로 접속할 수도 있다. 또한, 게이트웨이 서버 간, 예를 들어 게이트웨이 서버(21A, 21B) 간에 어댑터(22E)를 접속할 수도 있다. 이에 따라, 배선(23)을 사용하여, 게이트웨이 서버 간, 및 게이트웨이 서버와 메모리 노드 간에 패킷 전송을 행할 수 있다. 예를 들어, 게이트웨이 서버(21A)→게이트웨이 서버(21B)→게이트웨이 서버(21C)→메모리 노드(4,7)의 순으로 패킷을 전송할 수도 있다. 또한, 게이트웨이 서버(21A)→게이트웨이 서버(21D)→메모리 노드(5,4)의 순으로 패킷을 전송할 수도 있다.
이상 설명한 바와 같이 제6 실시 형태에 따르면, 게이트웨이 서버와 스토리지 장치 내의 메모리 노드와의 사이에서 패킷 전송을 행할 때에 전송 시간을 단축시킬 수 있다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제7 실시 형태]
제7 실시 형태는, 전송 기능을 갖는 메모리 노드를 복수 구비한 스토리지 장치와, 스토리지 장치의 일부의 메모리 노드가, 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖고, 상기 일부의 메모리 노드가, 상기 비인접 포트에 의해, 제어 컴퓨터 혹은 인접하지 않는 메모리 노드(비인접 노드)와 접속된 구성을 갖는다.
[1] 스토리지 시스템의 구성
도 22는 제7 실시 형태의 스토리지 시스템의 구성을 도시한 도면이다.
도시한 바와 같이, 스토리지 시스템은, 복수의 메모리 노드(11)를 포함하는 스토리지 장치(10), 및 스토리지 장치(10)에 접속된 게이트웨이 서버(21A)를 구비한다. 스토리지 장치(10)는, 도 1에 도시한 바와 같이, 데이터 전송 기능을 갖는 메모리 노드가 서로 복수 접속된 구성을 갖는다. 스토리지 장치(10)의 외주부에 배치된 메모리 노드(7,1)에는 어댑터(22A)를 통해 게이트웨이 서버(21A)가 접속되어 있다.
스토리지 장치(10)의 내부에 배치된 메모리 노드(3,3), (3,8), (8,3), (8,8)은, 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖는다. 비인접 포트 간은 배선(24)에 의해 접속되어 있다. 예를 들어, 메모리 노드(3,3)와 (3,8) 간, 메모리 노드(3,8)와 (8,8) 간, 메모리 노드(8,8)과 (8,3) 간 및 메모리 노드(8,3)과 (3,3) 간이, 배선(24)에 의해 서로 접속되어 있다.
비인접 노드에 접속된 메모리 노드는, 물리적인 위치에 의해 정해지는 어드레스에 더하여, 비인접 노드와 접속된 메모리 노드끼리의 상대적인 물리 위치에 의해 정해지는 부가 어드레스를 갖는다. 비인접 노드와 접속된 메모리 노드는, 자노드 이외의 메모리 노드를 수신처로 하는 패킷을 수신한 경우, 자노드의 패킷 컨트롤러가, 자노드의 부가 어드레스, 혹은 자노드 이외의, 비인접 노드에 접속된 메모리 노드의 부가 어드레스 중 어느 하나를 적어도 포함하는 정보에 기초하여 패킷의 출력 포트를 결정한다.
[2] 스토리지 시스템의 패킷 전송
우선, 인접하지 않는 메모리 노드(비인접 노드)끼리의 접속이, 스토리지 장치(10) 내의 패킷 전송 횟수에 부여하는 영향에 대하여 설명한다. 전술한 바와 같이, 일부의 비인접 노드가 비인접 포트에 의해 상호 접속된 스토리지 장치를 도 22에, 전 메모리 노드의 입출력 포트수가 동일하고, 비인접 노드 간의 접속이 없는 스토리지 장치를 도 23에 나타내었다.
이들 스토리지 장치에 있어서, 어드레스(7,0)의 게이트웨이 서버(21A)로부터, 메모리 노드(7,8)에 데이터 패킷을 송부하는 케이스를 생각한다.
비인접 노드 간의 접속이 없는 경우(도 23), 최단의 데이터 전송 경로는, 게이트웨이 서버(21A)(7,0)→메모리 노드(7,1)→(7,2)→(7,3)→(7,4)→(7,5)→(7,6)→(7,7)→(7,8)이다. 따라서, 게이트웨이 서버(21A)로부터 메모리 노드(7,8)에 패킷 전송을 행할 때의 (게이트웨이 서버와 메모리 노드 간, 및 메모리 노드와 메모리 노드 간의) 총 패킷 전송 횟수는 8회이다.
한편, 비인접 노드 간이 상호 접속되어 있는 경우(도 22), 게이트웨이 서버(21A)→메모리 노드(7,1)→(7,2)→(7,3)→(8,3)→(8,8)→(7,8)이 최단 경로가 되고, 6회의 전송으로 패킷을 게이트웨이 서버(21A)로부터 송신처 메모리 노드(7,8)에 보낼 수 있다.
이와 같이, 일부의 인접하지 않는 메모리 노드끼리를 증설한 입출력 포트에 의해 접속하고, 이들 입출력 포트 간의 접속 배선을 이용하여 패킷 전송을 행함으로써, 송신처 노드에 도달할 때까지의 패킷 전송 횟수를 저감할 수 있고, 전송 시간을 단축할 수 있다.
단, 도 22에 도시한 바와 같이, 비인접 노드 간이 접속된 스토리지 장치에서는, 메모리 노드와 메모리 노드 간, 혹은 메모리 노드와 게이트웨이 서버(21A) 간의 물리적인 거리와, 이들의 데이터 전송 상의 거리가 반드시 일치하는 것은 아닌 점에 주의가 필요하다.
전술한 바와 같이, 어드레스(7,0)의 게이트웨이 서버(21A)로부터, 메모리 노드(7,8)에 데이터 패킷을 송부하는 경우에 있어서, 비인접 노드 간의 접속이 존재하지 않는 스토리지 장치(도 23)에서는, 패킷의 최저 총 전송 횟수(8회)는, 패킷 송신원과 송신처의 물리적인 위치에서 결정되는 어드레스(게이트웨이 서버(21A)(7,0), 메모리 노드(7,8))의 차이와 동일하다.
한편, 전술한 바와 같이, 비인접 노드 간이 접속된 도 22의 스토리지 장치에서는, 동일한 물리 어드레스를 갖는 게이트웨이 서버(21A)(7,0) 내지 송신처 메모리 노드(7,8) 간의 패킷 통신을 6회의 전송으로 행할 수 있다. 이와 같이, 비인접 노드 간이 접속된 스토리지 장치에서는, 물리적인 최단 거리와, 데이터 전송 상의 최단 거리가 상이하기 때문에, 물리적인 위치에 의해 결정되는 어드레스만으로 패킷의 최단 전송 경로를 결정할 수는 없다.
따라서, 비인접 노드 간이 접속된 스토리지 장치에서는, 이들 비인접 노드에 접속된 메모리 노드끼리의 상대적인 물리 위치를 반영한 어드레스(이하, 서브 어드레스라 기재함)를 비인접 노드에 접속된 메모리 노드에 추가 부여하고, 전 메모리 노드에 부여된, 물리 위치를 반영한 어드레스(이하, 메인 어드레스라 기재함)와 서브 어드레스의 양자로부터 데이터 전송 경로·패킷 전송처를 결정하면, 전술한 알고리즘에 따라서 효율적으로 패킷 전송을 행할 수 있다. 또한, 도 22에서는, 메인 어드레스를 둥근 괄호로, 서브 어드레스를 사각 괄호로 표시하고 있다. 또한, 상기 비인접 노드에 접속된 메모리 노드는, 예를 들어 도 22에 도시한 메모리 노드(3,3), (3,8), (8,3), (8,8)을 가리킨다.
단, 전술한 바와 같이 효율적으로 패킷 전송을 행하기 위해서는, 패킷의 헤더부에 필요한 어드레스 정보가 모두 쓰여져 있는 것, 전송처 결정에 사용되는, 패킷의 송신원 어드레스 및 송신처 어드레스를 적절히 재기입하는 것 등이 필요하다. 이들에 대하여 다음에 설명한다.
비인접 노드에 접속된 메모리 노드를 갖는 스토리지 시스템에서 패킷 전송을 행하는 경우, 바람직한 패킷의 헤더부의 어드레스 정보의 일례를 도 24에 나타내었다.
여기서, 최종 송신처 노드와 송신원 노드는, 각각 패킷을 최종적으로 보내는 수신처의 노드와, 패킷을 최초로 작성·발신하는 노드를 의미한다. 한편, 일시 송신처 노드 어드레스와 일시 송신원 노드 어드레스는, 각 메모리 노드에서 패킷 전송처 결정에 사용되는 어드레스이며, 패킷의 통신 과정에서 재기입된다. 이때의 재기입 룰에 대해서는 후술한다.
또한, 일시 송신처/송신원 어드레스의 타입은, 그 어드레스가, 메인 어드레스와 서브 어드레스 중 어느 쪽인지 구별하기 위한 것이다. 또한, 제1 중계 노드, 제2 중계 노드는, 패킷 송신 시에 경유해야 할 비인접 노드에 접속된 메모리 노드이며, 송신원 노드에 가장 가까운 비인접 노드에 접속된 메모리 노드가 제1 중계 노드, 최종 송신처 노드에 가장 가까운 비인접 노드에 접속된 메모리 노드가 제2 중계 노드이다.
도 22에 도시한 바와 같이, 인접하지 않는 메모리 노드와 일부의 메모리 노드가 접속된 스토리지 장치를 포함하는 시스템에서, 비인접 노드 간의 접속을 경유한 패킷 전송을 행하는 경우, 패킷을 수신한 메모리 노드에 있어서의 패킷 전송처 결정이나 패킷의 헤더부의 수정 등은, 예를 들어 다음과 같은 룰로 행하는 것이 바람직하다.
(a) 추가의 입출력 포트(비인접 포트)를 갖지 않는 메모리 노드가 패킷을 수신한 경우, 패킷 컨트롤러가 패킷의 헤더부에 기록된 어드레스 정보를 조사하고,
(i) 최종 송신처 노드의 어드레스가 자노드의 어드레스와 일치하는 경우에는 패킷 전송을 행하지 않는다.
(ii) 최종 송신처 노드의 어드레스가 자노드의 어드레스와 상이한 경우에는, 일시 송신원 노드, 일시 송신처 노드, 자노드의 메인 어드레스를 참조하여 전송처를 결정하고, 인접한 메모리 노드에 패킷을 송신한다.
(b) 비인접 노드에 접속된 메모리 노드가 패킷을 수신한 경우, 패킷 컨트롤러는 패킷의 헤더부에 기록된 어드레스 정보를 조사하고,
(i) 자노드의 어드레스가 최종 송신처 노드의 어드레스와 일치하는 경우에는 패킷 전송을 행하지 않는다.
(ii) 자노드의 어드레스가, 최종 송신처 노드의 어드레스와 상이하고,
(1) 제1 중계 노드의 어드레스와 일치하는 경우에는, 패킷의 헤더부의 일시 송신처, 일시 송신원의 어드레스를, 각각 제2 중계 노드의 서브 어드레스, 자노드의 서브 어드레스에 재기입한다. 또한, 일시 송신원 노드, 일시 송신처 노드, 자노드의 서브 어드레스를 참조하여 전송처를 결정하고, 다른 비인접 노드에 접속된 메모리 노드에 패킷을 송신한다.
(2) 제2 중계 노드의 어드레스와 일치하는 경우에는, 일시 송신처 어드레스를 최종 송신처 노드의 메인 어드레스, 일시 송신원 어드레스를 자노드의 메인 어드레스로 변경한다. 또한, 일시 송신원 노드, 일시 송신처 노드, 자노드의 메인 어드레스를 참조하여 전송처를 결정하고, 인접한 다른 메모리 노드에 패킷을 전송한다.
(3) 제1 중계 노드, 제2 중계 노드의 어느 어드레스와도 상이하고, 또한 패킷의 헤더부에 쓰여진 일시 송신처 어드레스와 일시 송신원 어드레스가 서브 어드레스인 경우에는, 일시 송신원 노드, 일시 송신처 노드, 자노드의 서브 어드레스를 참조하여 전송처를 결정하고, 다른 비인접 노드에 접속된 메모리 노드에 패킷을 전송한다.
(4) 제1 중계 노드, 제2 중계 노드의 어느 어드레스와도 상이하고, 또한 일시 송신처 어드레스와 일시 송신원 어드레스가 메인 어드레스인 경우에는, 일시 송신원 노드, 일시 송신처 노드, 자노드의 메인 어드레스를 참조하여 전송처를 결정하고, 다른 인접한 메모리 노드에 패킷을 전송한다.
이어서, 비인접 노드 간의 접속을 병용하여 패킷 송신을 행하는 예로서, 도 22에 도시한 시스템에서, 클라이언트가 게이트웨이 서버(21A)를 통해 스토리지 장치에 파일을 기입하는 절차를 설명한다.
도 25는, 도 22에 도시한 스토리지 시스템에 있어서의 기입 동작을 도시한 도면이다.
우선, 클라이언트는 파일과 파일 ID를 게이트웨이 서버(21A)에 송신한다((1) 참조). 파일 ID는 파일을 일의적으로 특정할 수 있는 식별자이다.
이어서, 게이트웨이 서버(21A)는, 파일을 규정 크기의 데이터로 분할하고, 분할한 각 데이터에 분할 데이터 ID를 할당한다. 또한, 파일 ID와 분할 데이터 ID를 파일 테이블에 기입한다. 분할 데이터 ID는, 분할된 데이터를 일의적으로 특정할 수 있는 식별자이다((2) 참조).
이어서, 게이트웨이 서버(21A)는, 분할 데이터 ID의 정보에 기초하여, 분할 데이터를 기입하는 기입처의 메모리 노드(이하, 기입 노드)의 어드레스를 결정한다(도 22에서는 메인 어드레스(7,8)의 메모리 노드).
이어서, 하기 절차로, 게이트웨이 서버(21A)로부터 기입 노드에 패킷을 전송할 때에 통신 시간(패킷 전송 횟수)이 최소가 되는 경로를 구한다:
1. 게이트웨이 서버(21A)에 가장 가까운, 비인접 노드에 접속된 메모리 노드(제1 중계 노드)와, 기입 노드에 가장 근접한 비인접 노드에 접속된 메모리 노드(제2 중계 노드)의 각각의 어드레스를 조사한다. 도 22에서 (7,8)에 기입하는 경우, 게이트웨이 서버(21A)와 기입 노드의 각각의 최근접의 비인접 노드에 접속된 메모리 노드는 메인 어드레스(8,3), (8,8)의 메모리 노드이다.
2. 비인접 노드 간의 접속을 포함하는 최단 경로와 포함하지 않는 최단 경로를 구한다. 도 22에서 메모리 노드(7,8)에 기입하는 경우, 전자는 게이트웨이 서버(21A)→메모리 노드(7,1)→(7,2)→(7,3)→(8,3)([2,1])→(8,8)([2,2])→(7,8)이며, 후자는 게이트웨이 서버(21A)→메모리 노드(7,1)→(7,2)→(7,3)→(7,4)→(7,5)→(7,6)→(7,7)→(7,8)이다.
3. 인접 노드와만 접속된 메모리 노드 간의 경로에 대해서는 메인 어드레스로, 비인접 노드에 접속된 메모리 노드 간의 경로는 서브 어드레스를 바탕으로 하여, 각각의 경로에서 패킷 송신을 행할 때에 발생하는 전송 횟수를 산출한다. 도 22에서 메모리 노드(7,8)에 기입하는 경우, 비인접 노드에 접속된 메모리 노드를 통하는 최단 경로의 전송 횟수는 6회이고, 비인접 노드에 접속된 메모리 노드를 통하지 않는 최단 경로에서는 전송 횟수는 8회이다.
4. 패킷 전송 횟수가 작은 쪽의 경로를 디폴트 경로로서 결정한다((3) 참조).
이하에서는 비인접 노드 간의 접속을 포함하는 경로 쪽이, 포함하지 않는 경로보다 패킷 전송 횟수가 적은 케이스에 대하여 설명한다.
·어드레스 데이터, 기입 명령 등으로 이루어지는 헤더부를, 기입 데이터에 부가한 기입 패킷을 게이트웨이 서버(21A)에서 작성한다. 또한, 패킷의 헤더부에 기록된 어드레스 정보의 일시 송신처는 제1 중계 노드의 메인 어드레스(도 22에서는 (8,3))로 하고, 일시 송신원은 패킷 송신원의 메인 어드레스(도 22에서는 (7,0))로 한다.
·작성한 기입 패킷을, 게이트웨이 서버(21A)로부터 게이트웨이 서버(21A)에 접속된 메모리 노드에 전송한다((4) 참조).
·전술한 알고리즘에 따라서, 일시 송신처 메모리 노드(도 22에서는 메인 어드레스(8,3)의 제1 중계 노드)에 도달할 때까지, 메모리 노드 간에서 기입 패킷의 전송을 행한다(각 메모리 노드는 일시 송신처, 일시 송신원, 자노드의 메인 어드레스를 참조하여 전송처를 결정함)((5) 참조).
·기입 패킷을 수취한 제1 중계 노드는 패킷의 헤더부를 읽고, 패킷의 최종 송신처 노드가 다른 메모리 노드이고, 제1 중계 노드가 자노드인 점에서, 일시 송신처를 제2 중계 노드의 서브 어드레스(도 22에서는 [2,2]), 일시 송신원을 자노드의 서브 어드레스(도 22에서는 [2,1])로 변경한다((6) 참조). 또한, 인접한 비인접 노드에 접속된 메모리 노드에 패킷을 전송한다((7) 참조).
·전술한 알고리즘에 따라, 일시 송신처 메모리 노드인 제2 중계 노드에 도달할 때까지, 비인접 노드에 접속된 메모리 노드 간에서 기입 패킷의 전송을 행한다(각 메모리 노드는 일시 송신처, 일시 송신원, 자노드의 서브 어드레스를 참조하여 전송처를 결정함).
·기입 패킷을 수신한 제2 중계 노드는 패킷의 헤더부를 읽고, 최종 송신처가 다른 메모리 노드이고, 제2 중계 노드가 자노드인 점에서, 일시 송신처를 최종 송신처 노드의 메인 어드레스(도 22에서는 기입 노드(7,8)), 일시 송신원을 자노드의 메인 어드레스(도 22에서는 (8,8))로 변경한다((8) 참조). 또한, 인접한 메모리 노드에 기입 패킷을 전송한다.
·일시 송신원 노드, 일시 송신처 노드, 자노드의 메인 어드레스를 참조하여, 전술한 알고리즘에 의해 메모리 노드 간에서 전송이 반복되고, 최종 송신처인 기입 노드(도 8에서는 메인 어드레스(7,8))에 기입 패킷이 도달한다((9) 참조).
·패킷을 수신한 기입 노드는 최종 송신처가 자노드인 점에서, 패킷을 전송하지 않고, 헤더부의 어드레스 정보나 기입 데이터 등을 자노드의 메모리(16)에 기입한다((10) 참조). 그 후, 수신처나 중계처를 반대로 한 기입 완료 보고의 패킷을 작성한다. 이 패킷에서는, 발신원 노드를 기입 노드의 (7,8)로 하고, 최종 송신처 노드를 게이트웨이 서버(21A)의 (7,0), 제1 중계 노드를 메인 어드레스(8,8)(서브 어드레스[2,2])의 노드, 제2 중계 노드를 메인 어드레스(8,3)(서브 어드레스[2,1])의 노드로 한다. 그 후, 기입 완료 보고의 패킷을 전술한 절차와 동일한 절차로, 게이트웨이 서버(21A)에 회신한다((11) 참조). 전 분할 데이터의 기입이 끝난 후, 게이트웨이 서버(21A)는 클라이언트에 파일 기입의 종료 보고를 행한다.
전술한 예에서는, 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖고, 인접하지 않는 메모리 노드끼리가 비인접 포트에 의해 상호 접속된 메모리 노드를 갖는 스토리지 장치에 클라이언트가 파일을 기입하는 절차를 설명했지만, 메모리 노드에 기입된 데이터의 판독·소거나 메모리의 빈 용량 확인 등을 위해, 판독 명령·소거 명령이나 빈 용량의 회신 명령 등을 게이트웨이 서버로부터 스토리지 장치의 메모리 노드에 보내는 경우에도, 비인접 노드 간의 접속을 통해 통신을 행함으로써 패킷 전송 시간을 단축할 수 있다. 또한, 판독한 데이터나 문의 결과 등을 메모리 노드로부터 게이트웨이 서버에 보내는 경우 등에 있어서도, 비인접 노드 간의 접속을 통해 통신을 행함으로써 패킷 전송 시간을 단축할 수 있다.
전술한 바와 같이, 인접하지 않는 노드 간의 접속을 통해 데이터 송신을 행함으로써 패킷의 평균 전송 횟수를 저감시키는 것이 가능하다. 또한, 추가 입출력 포트(비인접 포트)에 의해 비인접 노드와 접속되는 메모리 노드는, 스토리지 장치 내에서 균일하게 분산하여 배치되어 있는 것이 바람직하다.
예를 들어, 10×10의 메모리 노드로 구성되어 있는 도 22에 도시한 스토리지 장치에서는, 5×5의 메모리 노드를 포함하는 4개의 영역으로 분할(경계를 점선으로 나타냄)하고, 각 영역의 중심에 위치하는 메모리 노드(3,3), (8,3), (3,8), (8,8)끼리를 증설 포트(비인접 포트)로 접속하고 있다. 이 경우에는, 어느 5×5의 메모리 노드 블록에든, 1개의 추가 입출력 포트(비인접 포트)를 갖는 메모리 노드가 존재한다.
이와 같이, 포함되는 메모리 노드수가 동일한 것 같은, 복수의 영역으로 스토리지 장치를 분할하고, 그 중심의 메모리 노드를 추가 입출력 포트가 부착된 메모리 노드로 하여 상호 접속함으로써, 추가 입출력 포트가 부착된 메모리 노드를 스토리지 장치 내에서 균일하게 분산 배치시킬 수 있다.
또한, 예를 들어 al×bm의 노드로 구성된 스토리지 장치를 1×m씩의 영역 ab개로 분할하고, 각 영역의 중심에 위치하는 메모리 노드끼리를 추가 입출력 포트에 의해 접속하는 경우, (cl+d, em+f)(a≥c≥0, b≥e≥0, l≥d≥0, m≥f≥0)으로 표시되는 메모리 노드에 가장 가깝고, 각 영역의 중심에 위치하는 추가 입출력 포트가 부착된 메모리 노드 어드레스는 (cl+round(1/2,0), em+round(m/2,0))으로 표시된다. (round(A,0)은 A의 소수점 이하를 반올림하는 함수).
그런데, 스토리지 장치에 있어서, 인접하지 않는 일부의 메모리 노드 간을 접속함으로써 발생하는 과제는, 그 접속을 통해 통신을 행하는 패킷의 수가 증가하면, 패킷 통신의 정체가 발생하기 쉬워지는 것이다.
이에 대하여, 인접한 메모리 노드 간보다, 인접하지 않는 메모리 노드 간의 패킷 통신 속도를 높게 함으로써, 이 패킷 전송의 정체를 완화시킬 수 있다. 단, 이 경우에는, 게이트웨이 서버에 있어서, 패킷 전송의 디폴트 경로 결정 시에 행하는, 비인접 노드 간의 접속을 통하는 최단 경로와, 비인접 노드 간의 접속을 경유하지 않는 최단 경로의 총 패킷 통신 시간의 산출에 주의가 필요하다. 총 패킷 통신 시간은 메모리 노드 간의 통신 시간과 패킷 전송 횟수의 곱과 동등하다. 따라서, 인접한 메모리 노드 간과 인접하지 않는 메모리 노드 간의 데이터 통신 속도가 동등한 경우에는, 전술한 바와 같이 각 경로의 전송 횟수로 데이터 통신 시간을 비교할 수 있다. 그러나, 패킷 송신 속도가 상이한 경우에는 전송 횟수만으로 총 패킷 통신 시간을 비교할 수 없다.
통신 속도의 역수(속도=거리/시간이기 때문에, 이것은 통신 시간에 비례)와 전송 횟수의 곱을 참조함으로써, 비인접 노드끼리의 접속을 경유하는 경로와, 비인접 노드끼리의 접속을 경유하지 않는 경로의 총 패킷 통신 시간을 정확하게 비교할 수 있다. 그러나, 전술한 예와 같이, 인접한 노드 간의 접속과 비인접 노드 간의 접속이 패킷 통신 경로에서 혼재해 있는 경우, 이 계산은 번잡한 것이 된다.
인접 노드 간과 비인접 노드 간에서 패킷 통신 속도가 상이한 스토리지 장치에서는, 부여하는 어드레스의 스텝을 패킷 통신 속도에 역비례시키고, 그의 어드레스 차이를 전송 횟수로 간주하는 것도 하나의 방법이다.
인접 노드 간보다 비인접 노드 간 쪽이, 패킷 통신 속도가 10배 높은 경우의 어드레스 부여예를 도 26에 나타내었다. 도 26에서는, 인접하지 않는 노드와 접속된 메모리 노드에는, 이들 물리 위치를 반영시키면서, 어느 메모리 노드와, 그 메모리 노드와 접속된 비인접 노드와의 사이에서 1씩 상이하도록 서브 어드레스를 부여하고 있다(사각 괄호로 표시). 또한, 도 26에 도시한 전 메모리 노드에는, 서로의 물리적인 위치 관계를 반영시키면서, 인접하는 메모리 노드 간에서, 10씩 상이한 메인 어드레스를 부여하고 있다(둥근 괄호로 표시).
이러한 스토리지 장치에서, 비인접 노드에 접속된 메모리 노드 간에서 패킷 송신을 행하는 경우에는 각 메모리 노드의 서브 어드레스의 차이를 계산하고, 인접 메모리 노드 간에서 패킷 송신을 행하는 경우에는 메인 어드레스의 차이를 계산하여, 이들을 전송 횟수라 간주한다. 전송 횟수의 산출 룰을 이와 같이 정하면, 인접 노드 간과 비인접 노드 간에서 접속 속도가 상이한 경우에 있어서도, 전송 횟수만으로 패킷 통신 시간을 어림잡아 비교할 수 있다.
이상 설명한 바와 같이 제7 실시 형태에 따르면, 게이트웨이 서버와 스토리지 장치 내의 메모리 노드와의 사이에서 패킷 전송을 행할 때에 전송 시간을 단축시킬 수 있다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제8 실시 형태]
제8 실시 형태에서는 패킷의 평균 전송 횟수를 저감시키기 위해, 게이트웨이 서버와 스토리지 장치와의 사이에 스위칭 릴레이를 추가한 스토리지 시스템에 대하여 설명한다.
[1] 스토리지 시스템의 구성
도 27은 제8 실시 형태의 스토리지 시스템의 구성을 도시한 도면이다.
도시한 바와 같이, 스토리지 시스템은, 복수의 메모리 노드(11)를 포함하는 스토리지 장치(10), 스토리지 장치(10)에 접속된 스위칭 릴레이(81), 및 스위칭 릴레이(81)에 접속된 게이트웨이 서버(21A)를 구비한다.
스토리지 장치(10)는, 도 1에 도시한 바와 같이, 데이터 전송 기능을 갖는 메모리 노드가 서로 복수 접속된 구성을 갖는다. 스위칭 릴레이(81)는, 스토리지 장치(10)의 일단부측(도 27에 있어서 좌측 단부)에 배치된 메모리 노드(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9) 모두에 접속되어 있다. 스위칭 릴레이(81)에는, 어댑터(22A)를 통해 게이트웨이 서버(21A)가 접속되어 있다.
스위칭 릴레이(81)는, 패킷의 헤더부에 기록된 어드레스 정보에 따라, 수신한 패킷을 지정된 송신처 노드에 전송한다. 스위칭 릴레이(81)에는, 스토리지 장치 내의 메모리 노드와는 상이한 어드레스가 부여되어 있다(도 27에서는 사각 괄호로 표시).
[2] 스토리지 시스템의 패킷 전송
제8 실시 형태의 스토리지 시스템에 있어서 패킷을 전송하는 수순에 대하여 설명한다.
게이트웨이 서버(21A)로부터 송출된 패킷은, 어댑터(22A)를 통과하여 스위칭 릴레이(81)에 들어간다. 스위칭 릴레이(81)에 들어간 패킷은, 스위칭 릴레이(81)와 접속된, 메모리 노드(1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9) 중 어느 하나에 보내지고, 그 후, 송신처 어드레스의 메모리 노드까지 전송된다.
반대로, 스토리지 장치(10) 내의 메모리 노드로부터 발신된 패킷은, 메모리 노드(1,1) 내지 (1,9) 중 어느 하나의 메모리 노드에 보내지고, 스위칭 릴레이(81)와 어댑터(22A)를 통해 게이트웨이 서버(21A)에 전송된다.
도 27에 도시한 시스템에 있어서, 게이트웨이 서버(21A)로부터 스위칭 릴레이(81)와 메모리 노드(1,9)를 통해, 메모리 노드(5,9)에 패킷을 보내는 경우에는 이하가 된다. 최단 경로는 스위칭 릴레이(81)→메모리 노드(1,9)→(2,9)→(3,9)→(4,9)→(5,9)이고, 스토리지 장치(10) 내의 전송 횟수는 4회이다.
한편, 도 28에 도시한 바와 같이, 스위칭 릴레이(81)를 통하지 않고, 게이트웨이 서버(21A)가 스토리지 장치(10)의 메모리 노드(1,4)에 접속되어 있는 시스템에서는, 게이트웨이 서버(21A)로부터 메모리 노드(5,9)에 패킷을 보내는 경우에는 이하가 된다. 게이트웨이 서버(21A)→메모리 노드(1,4)→(1,5)→(1,6)→(1,7)→(1,8)→(1,9)→(2,9)→(3,9)→(4,9)→(5,9)가 최단 경로의 하나이며, 스토리지 장치(10) 내에서 패킷의 전송은 최저 9회 필요하다.
이와 같이, 게이트웨이 서버(21A)와 스토리지 장치(10)와의 사이에 스위칭 릴레이(81)를 도입하면, 패킷의 전송 횟수를 저감시키고, 전송 시간을 단축할 수 있다.
또한, 게이트웨이 서버(21A)로부터 스토리지 장치(10)에 패킷을 송신하는 케이스에 대하여 설명했지만, 스토리지 장치(10) 내의 메모리 노드에 보존된 데이터를 게이트웨이 서버(21A)에 송신하는 경우에 있어서도, 게이트웨이 서버(21A)와 스토리지 장치(10)과의 사이에 스위칭 릴레이(81)가 존재하는 시스템(도 27) 쪽이, 어댑터를 통해 게이트웨이 서버(21A)와 스토리지 장치(10)가 직접 접속된 시스템(도 28)보다 일반적으로 패킷의 평균 전송 횟수가 적어, 전송 시간이 짧다.
단, 스위칭 릴레이를 도입한 시스템에 있어서의 패킷 전송 횟수는, 스위칭 릴레이와 스토리지 장치 간에서 패킷의 송수신을 행할 때에 중계하는 메모리 노드에 의존한다. 예를 들어, 전술한 바와 같이, 도 27에 도시한 시스템에서 게이트웨이 서버(21A)가 메모리 노드(5,9)와의 사이에서 패킷 전송을 행하는 경우, 중계하는 메모리 노드가 메모리 노드(1,9)이면, 스토리지 장치(10) 내의 전송 횟수는 최저 4회이다. 그러나, 다른 메모리 노드를 중계한 경우에는 5회 이상의 전송이 필요하다.
이와 같이, 패킷의 전송 횟수를 최소한으로 하기 위해서는, 스위칭 릴레이에 직접 접속된 메모리 노드 중, 송신처 노드에 가장 가까운 메모리 노드를 중계 메모리 노드로서 선택하는 것이 중요하다. 패킷 전송 시간이 최단이 되는, 중계 메모리 노드의 어드레스 산출 수순에 대해서는 후술한다.
또한, 스위칭 릴레이를 통하지 않고 게이트웨이 서버와 스토리지 장치가 접속된 시스템에 있어서, 게이트웨이 서버와 스토리지 장치 내의 메모리 노드와의 사이에서 패킷 전송을 행하는 경우, 송신원과 송신처는 게이트웨이 서버, 메모리 노드 중 어느 하나이며, 이것은 패킷 전송이 행해지고 있는 동안 변경되지 않는다.
한편, 스위칭 릴레이를 통해 게이트웨이 서버와 스토리지 장치가 접속된 시스템에 있어서, 패킷 전송을 행하는 경우에는, 우선 중계 메모리 노드를 수신처로 하여 패킷 전송이 행해진다. 패킷이 중계 메모리 노드에 도달한 후에는, 메모리 노드(게이트웨이 서버로부터 메모리 노드에 패킷을 송신하는 경우) 혹은 스위칭 릴레이(메모리 노드로부터 게이트웨이 서버에 패킷 송신하는 경우)을 송신처로 하여 패킷 전송이 행해진다. 즉, 패킷이 중계 메모리 노드에 도달하는 전후에서, 패킷의 송신처의 변경이 필요하다.
스위칭 릴레이를 사용한 시스템에 있어서, 패킷의 헤더부에 기록된 어드레스 정보의 예를 도 29에 나타내었다. 여기서, 최종 송신처 노드와 송신원 노드는 각각 패킷을 최종적으로 보내는 수신처의 메모리 노드, 패킷을 최초로 작성·발신하는 메모리 노드를 의미한다. 한편, 일시 송신처 노드 어드레스와 일시 송신원 노드 어드레스는, 각 메모리 노드에서 패킷 전송처의 결정에 사용되는 어드레스이며, 스위칭 릴레이에 접속된 중계 메모리 노드에서 재기입된다(재기입 룰에 대해서는 후술함).
또한, 어드레스 타입이란, 그 어드레스가 스토리지 장치(10) 내의 메모리 노드의 어드레스인지 스위칭 릴레이(81)의 어드레스인지를 구별하기 위한 것이다. 또한, 중계 노드 어드레스는 패킷 전송시에 경유해야 할, 스위칭 릴레이(81)와 접속된 메모리 노드의 어드레스이다.
전술한 바와 같이, 스위칭 릴레이에 접속된 메모리 노드에서는, 패킷의 헤더부에 기록된 어드레스 정보의 재기입이 행해진다. 패킷의 어드레스 정보가 도 29에 도시한 것인 경우, 재기입 룰은 예를 들어 다음과 같은 것이다.
1. 최종 송신처 노드가 자노드 이외의 메모리 노드이고, 송신원이 스위칭 릴레이인 경우, 일시 송신처를 최종 송신처 노드로, 일시 송신원을 자노드로 변경한다.
2. 최종 송신처 노드가 스위칭 릴레이인 경우, 일시 송신처를 스위칭 릴레이로, 일시 송신원을 자노드로 변경한다.
3. 최종 송신처가 자노드 이외의 메모리 노드이고, 송신원도 메모리 노드인 경우, 일시 송신처, 일시 송신원 모두 변경하지 않는다.
예를 들어, 도 27에 도시한 시스템에서, 클라이언트가 스토리지 장치(10)에 파일을 기입하는 절차는 다음과 같이 된다.
도 30은, 도 27에 도시한 스토리지 시스템에 있어서의 기입 동작을 도시한 도면이다.
우선, 클라이언트는, 파일과 파일 ID를 게이트웨이 서버(21A)에 송신한다((1) 참조). 파일 ID는 파일을 일의적으로 특정할 수 있는 식별자이다.
이어서, 게이트웨이 서버(21A)는 파일을 규정 크기의 데이터로 분할하고, 분할한 각 데이터에 분할 데이터 ID를 할당한다. 또한, 파일 ID와 분할 데이터 ID를 파일 테이블에 기입한다. 분할 데이터 ID는, 분할된 데이터를 일의적으로 특정할 수 있는 식별자이다((2) 참조).
이어서, 게이트웨이 서버(21A)는, 분할 데이터 ID의 정보에 기초하여, 분할 데이터를 기입하는 기입처의 메모리 노드(기입 노드)의 어드레스를 결정한다(도 27에서는 어드레스(5,9)). 또한, 스위칭 릴레이(81)에 접속된 메모리 노드 중, 기입 노드에 가장 가까운 메모리 노드를 중계 메모리 노드로 하여, 그의 어드레스를 산출한다(도 27에서는 어드레스(1,9))((3) 참조).
이어서, 게이트웨이 서버(21A)는, 기입 데이터에, 전술한 어드레스 정보를 포함하는 헤더부 등을 부가한 기입 패킷을 작성한다. 여기서, 일시 송신처 어드레스는 중계 노드 어드레스(도 27에서는 어드레스(1,9)), 일시 송신원 노드 어드레스는 스위칭 릴레이(81)의 어드레스(도 27에서는 [1])로 한다. 그 후, 패킷을 스위칭 릴레이(81)에 송신한다((4) 참조).
기입 패킷을 수취한 스위칭 릴레이(81)는, 지정된 일시 송신처 메모리 노드(중계 메모리 노드(1,9))에 이 기입 패킷을 송신한다((5) 참조).
스위칭 릴레이(81)로부터 기입 패킷을 수신한 중계 메모리 노드는, 패킷의 헤더부를 읽고, 최종 송신처 노드가 스토리지 장치(10) 내의 다른 메모리 노드인 점에서, 이하와 같이 헤더부를 재기입한 기입 패킷을 작성한다. 헤더부에 있어서, 일시 송신원 어드레스를 자노드 어드레스로, 일시 송신처 노드 어드레스를, 최종 송신처인 기입 노드의 어드레스(도 27에서는 (5,9))로 변경한다((6) 참조).
그 후, 기입 패킷을 인접한 메모리 노드에 전송한다. 스토리지 장치(10) 내에서 적절한 전송을 반복함으로써, 기입 패킷을 기입 노드(도 27에서는 메모리 노드(5,9))에 도달시킨다((7) 참조).
기입처의 메모리 노드에서는, 수취한 패킷의 기입 데이터, 패킷 송신원이나 중계 노드의 어드레스 등을 자노드의 메모리(16)에 기입한다((8) 참조). 그 후, 기입 완료 보고의 패킷을 작성하고, 상기와 반대 경로로 게이트웨이 서버(21A)에 회신한다((9) 참조). 기입 완료 보고의 패킷에서는, 헤더부의 어드레스 정보의 최종 송신처 노드는 스위칭 릴레이로 하고, 송신원은 기입 노드, 중계 노드는 게이트웨이 서버(21A)로부터 기입 노드에 패킷 전송을 행했을 때와 동일한 메모리 노드, 일시 송신처 노드는 중계 노드, 일시 송신원 노드는 기입 노드로 한다. 상기 패킷은, 중계 메모리 노드에 있어서, 일시 송신처를 스위칭 릴레이에, 일시 송신원을 중계 노드에, 헤더부의 어드레스 정보가 재기입된다((10) 참조).
전 분할 데이터의 기입이 끝난 후, 게이트웨이 서버(21A)는 클라이언트에게 파일 기입의 종료 보고를 행한다.
또한, 클라이언트가 스토리지 장치(10)에 파일을 기입하는 경우뿐만 아니라, 기입된 데이터의 판독·소거나 메모리의 빈 용량의 확인 등을 위해, 판독·소거 명령이나 빈 용량의 회신 명령 등을 스토리지 장치(10)의 메모리 노드에 보내는 경우에도, 전술한 절차에 따라서 스위칭 릴레이(81)에 접속된 메모리 노드를 통해 패킷을 전송할 수 있다. 또한, 기입이나 소거 등의 명령 실시 완료 보고, 메모리 노드로부터 판독한 데이터 등을 메모리 노드로부터 게이트웨이 서버(21A)에 송신할 때 등에도, 마찬가지로 전술한 절차에 따라서 스위칭 릴레이(81)에 접속된 메모리 노드를 통해 패킷을 전송할 수 있다. 이에 의해, 전송 시간을 단축할 수 있다.
또한, 여기까지는 도 27에 도시한 바와 같이, 좌측 단부의 메모리 노드만이 스위칭 릴레이(81)와 접속된 스토리지 시스템에 대하여 설명했지만, 도 31에 도시한 바와 같이, 모든 외주부의 메모리 노드가 스위칭 릴레이(81, 82, 83, 84)와 접속된 스토리지 시스템에 있어서도, 스위칭 릴레이를 도입하지 않는 시스템보다 패킷의 평균 전송 횟수가 적어, 전송 시간을 짧게 할 수 있다. 도 31에 도시한 스토리지 시스템에서는, 스토리지 장치의 좌측 단부에 배치된 메모리 노드에 스위칭 릴레이(81)가 접속되고, 상단부에 배치된 메모리 노드에 스위칭 릴레이(82), 우측 단부에 배치된 메모리 노드에 스위칭 릴레이(83), 하단부에 배치된 메모리 노드에 스위칭 릴레이(84)가 각각 접속되어 있다. 또한, 모든 스위칭 릴레이는 어댑터(22A)를 통해 게이트웨이 서버(21A)와 접속되어 있다.
또한, 도 32에 도시한 바와 같이, 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖는 복수의 메모리 노드가, 비인접 포트에 의해 스위칭 릴레이(81)와 접속된 스토리지 장치를 포함하는 스토리지 시스템에 있어서도, 스위칭 릴레이를 도입하지 않는 시스템보다 패킷의 평균 전송 횟수가 적어, 전송 시간을 짧게 할 수 있다. 도 32에 도시한 스토리지 시스템에서는, 스토리지 장치(10) 내의 메모리 노드(3,2), (3,7), (8,2), (8,7)에 스위칭 릴레이(81)가 접속되어 있다.
그런데, 전술한 바와 같이, 스위칭 릴레이에 접속되어 있는 메모리 노드를 통해 패킷 전송을 행하는 경우, 패킷 전송 시간(전송 횟수)이 최소가 되는 메모리 노드를 중계 메모리 노드로서 선택하는 것이 중요하다. 이하에서는 그 중계 메모리 노드의 어드레스 산출에 대하여 설명한다.
우선, 도 27에 도시한 바와 같이, 좌측 단부의 메모리 노드 모두가 스위칭 릴레이(81)에 접속된 스토리지 장치(10)와 게이트웨이 서버(21A)와의 사이에서 데이터 전송을 행하는 경우, 스토리지 장치(10) 내의 어드레스(x,y)의 패킷 송신처/송신원 메모리 노드에 있어서, 패킷 전송 거리(전송 횟수)가 최소가 되는, 스위칭 릴레이(81)에 접속된 메모리 노드는 어드레스(1,y)의 메모리 노드이다.
모서리에 배치된 메모리 노드의 어드레스가 (a0,b0)이고, 가로 c0개, 세로 d0개의 메모리 노드로 이루어지는 스토리지 장치에 있어서, 외주부의 전 메모리 노드가 스위칭 릴레이에 접속되어 있는 경우, 스토리지 장치(10) 내의 어드레스(x,y)의 메모리 노드가 게이트웨이 서버(21A)와의 사이에서 패킷 전송을 행할 때, 전송 시간(전송 횟수)이 최소가 되는 중계 메모리 노드의 어드레스는 이하와 같다. 여기서, 도 31에 도시한 바와 같이, 스위칭 릴레이와 접속된 메모리 노드의 어드레스는 (a0,y), (a0+c0,y), (x,b0), (x,b0+d0)으로 표시된다(x는 a0 내지 a0+c0의 임의의 정수값, y는 b0 내지 b0+d0의 임의의 정수값).
min(x-a0,a0+c0-x)≤min(y-b0,b0+d0-y)이고 min(x-a0,a0+c0-x)=x-a0의 경우에는 (x-a0,y);
min(x-a0,a0+c0-x)≤min(y-b0,b0+d0-y)이고 min(x-a0,a0+c0-x)=a0+c0-x의 경우에는 (a0+c0-x,y);
min(x-a0,a0+c0-x)≥min(y-b0,b0+d0-y)이고 min(y-b0,b0+d0-y)=y-b0의 경우에는 (x,y-b0);
min(x-a0,a0+c0-x)≥min(y-b0,b0+d0-y)이고 min(y-b0,b0+d0-y)=b0+d0-y의 경우에는 (x,b0+d0-y).
또한, min(x,y)는 2개의 인수 x, y 중, 작은 쪽을 부여하는 함수이다.
한편, 도 32에 도시한 바와 같이, 스위칭 릴레이(81)와 접속된 메모리 노드의 어드레스가 (am+b,cn+d)(m, n은 정수)로 부여되는 경우(도 32에서는 a=5, b=3, c=5, d=2, m=0 또는 1, n=0 또는 1), 임의의 메모리 노드(어드레스 (x,y))에 대하여, 패킷 전송 시간(전송 횟수)이 최소가 되는, 스위칭 릴레이(81)에 접속되는 메모리 노드(중계 메모리 노드)는 (a(round(x/a,0)+b, c(round(y/c,0)+d)로 부여된다. 여기서, round(u,0)는 수치 u를 소수점에서 반올림하는 함수이다.
이상 설명한 바와 같이 제8 실시 형태에 따르면, 스토리지 장치 내에서 메모리 노드 간의 패킷 전송 횟수를 저감시킬 수 있다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제9 실시 형태]
제9 실시 형태는, 복수의 데이터를 복수의 메모리 노드에 보존하는 데이터 처리에 있어서, 게이트웨이 서버와의 데이터 전송 시간이 서로 다른 메모리 노드를, 복수 데이터의 보존 장소로서 선택하는 데이터 처리 수순을 구비한다.
[1] 스토리지 시스템의 구성
도 33a는 제9 실시 형태의 스토리지 시스템의 구성을 도시한 도면이다.
도시한 바와 같이, 스토리지 시스템은, 복수의 메모리 노드(11)를 포함하는 스토리지 장치(10), 및 스토리지 장치(10)에 접속된 복수의 게이트웨이 서버(21A)를 구비한다. 스토리지 장치(10)는, 도 1에 도시한 바와 같이, 데이터 전송 기능을 갖는 메모리 노드가 서로 복수 접속된 구성을 갖는다. 스토리지 장치(10)의 외주부에 배치된 메모리 노드(1,4)에는, 어댑터(22A)를 통해 게이트웨이 서버(21A)가 접속되어 있다.
[2] 스토리지 시스템의 데이터 처리 방법
제9 실시 형태의 스토리지 시스템에 있어서의 데이터 처리 수순에 대하여 설명한다.
도 33a 내지 도 33d 및 도 34a 내지 도 34e는, 스토리지 장치(10)이 어댑터(22A)를 통해 게이트웨이 서버(21A)와 접속된 스토리지 시스템이다. 스토리지 장치는, 인접한 메모리 노드(11)가 상호 접속된 복수의 메모리 노드로 구성된다.
각 메모리 노드(11)는, 송신된 패킷이 자노드앞이면 수취하고, 다른 메모리 노드가 수신처인 경우에는, 인접하는 메모리 노드에 패킷을 전송한다. 이 데이터 전송 기능에 의해, 게이트웨이 서버(21A)와 지정 메모리 노드와의 사이에서 패킷 통신을 행할 수 있다.
단, 패킷 전송에 필요한 전송 횟수는 메모리 노드에 따라 달라진다. 예를 들어, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수는, 어드레스(1,4)의 메모리 노드는 0회, 어드레스(1,5), (2,4), (1,3)의 메모리 노드는 1회, 어드레스(1,6), (2,5), (3,4), (2,3), (1,2)의 메모리 노드는 2회이다. 도 33a 내지 도 33d 및 도 34a 내지 도 34e에서는, 동일한 최저 전송 횟수를 갖는 메모리 노드를 동일한 해칭으로 나타내고 있다.
또한 여기에서는, 스토리지 장치(10)의 메모리 노드 내의 패킷 전송 시간과 메모리 노드 간의 패킷 송신 시간을, 메모리 노드에 의존하지 않고 일정하게 한다. 이 경우, 총 패킷 전송 시간은 어느 메모리 노드 간이든 동일하다. 또한, 패킷 전송 시간은, 입력 포트에 패킷을 수신한 후, 패킷의 헤더부에 기록된 어드레스로부터 자노드앞인지의 여부를 판단하고, 출력 포트로부터 패킷을 출력할 때까지의 시간이다. 총 패킷 전송 시간은, 메모리 노드가 패킷을 수취하고 나서 인접 노드에 패킷을 송신하고, 그 패킷이 인접 노드에 도달할 때까지의 시간이다.
그런데, 1개의 파일을 3개로 분할하고, 분할 후의 데이터의 순서에 맞춰 ID=1, ID=2, ID=3과 ID를 부여한 3개의 데이터를, 3개의 메모리 노드에 각각 보존한다. 그 후, 메모리 노드로부터 3개의 데이터를 판독하여, 게이트웨이 서버에 송신하는 데이터 처리에 대하여 생각한다.
데이터를 보존하는 3개의 메모리 노드가, 게이트웨이 서버와의 패킷 통신에 필요한 최저 전송 횟수가 동일해지는 메모리 노드인 경우와, 최저 전송 횟수가 모두 다른 메모리 노드의 경우의 각각에 대하여, 판독된 데이터의 스토리지 장치 내의 전송 과정을 비교한다. 또한, 판독 명령은 일제히 행해지고, 판독된 데이터의 송신은 동시에 개시되는 것, 따라서 3개의 데이터의 전송도 모두 동일한 타이밍으로 진행하는 것으로 한다.
게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 3회인 메모리 노드(1,1), (2,2), (3,5)에 보존된 3개의 데이터가, 각 메모리 노드로부터 판독된 후, 게이트웨이 서버(21A)를 향해 전송되어 가는 과정의 일례를 도 33a 내지 도 33d에 나타내었다.
도 33a는, 각 메모리 노드 내의 메모리로부터 데이터가 판독된 직후(전송 전)의 스토리지 장치(10)의 상태를 나타내고, 도 33b는, 도 33a로부터 일정 시간 경과하여, 3개의 데이터 모두가, 보존되어 있던 메모리 노드의 인접 노드에 전송된 상태를 나타낸다. 도 33b에 도시한 바와 같이, 도 33a에 있어서 메모리 노드(1,1), (2,2), (3,5)에 보존되어 있던 3개의 데이터는, 메모리 노드(1,2), (2,3), (2,5)에 각각 전송되고 있다.
도 33c, 도 33d는, 각각 데이터의 전송이 2회, 3회 행해진 상태를 나타낸다. 도 33c에 도시한 바와 같이, 도 33b에 있어서 메모리 노드(1,2), (2,3), (2,5)에 보존되어 있던 3개의 데이터는, 메모리 노드(1,3), (2,4), (1,5)에 각각 전송되고 있다. 또한, 도 33d에 도시한 바와 같이, 도 33c에 있어서 메모리 노드(1,3), (2,4), (1,5)에 보존되어 있던 3개의 데이터는 메모리 노드(1,4)에 각각 전송되고 있다. 또한, 도 33a 내지 도 33d는, 보존되어 있던 메모리 노드로부터 게이트웨이 서버(21A)를 향해 데이터 전송을 행하는 과정이기 때문에, 시간의 경과와 함께, 게이트웨이 서버(21A)와의 패킷 통신에 필요한, 최저 전송 횟수가 적은 메모리 노드에 데이터가 전송되고 있다.
그런데, 도 33a 내지 도 33c에 도시한 스토리지 장치(10)에서는, 3개의 데이터는 각각 다른 메모리 노드에 존재하고 있지만, 도 33d에 도시한 스토리지 장치(10)에서는 모든 데이터가 어드레스(1,4)의 메모리 노드 상에 위치하고 있다. 이것은, 3개의 데이터가 동시에 어드레스(1,4)의 메모리 노드에 도달한 상태를 나타내고 있다.
단, 메모리 노드의 일시 보존용 메모리(입력 포트 버퍼)의 기억 용량 크기가, 복수의 데이터를 보존할 수 있을 만큼 크지 않을 경우에는, 메모리 노드(1,4)에서는 한번에 하나의 데이터밖에 받아들일 수 없다. 일시 보존용 메모리는, 자노드앞이 아닌 데이터를 수신한 경우에, 그 데이터를 전송할 때까지의 동안에 보관하기 위한 메모리이다.
이 경우에는, 수신한 하나의 데이터의 어댑터(22A)에의 전송이 종료할 때까지 다른 데이터는 어드레스(1,4)의 메모리 노드에 전송할 수 없어, 인접 노드에서 대기할 필요가 있다.
메모리 노드의 일시 보존용 메모리의 크기가 충분히 크고, 3개의 데이터를 동시에 일시 보존할 수 있는 경우에 있어서도, 어드레스(1,4)의 메모리 노드로부터 게이트웨이 서버(21A)에 3개의 데이터를 한번에 송신하는 것은 통상적으로 불가능하기 때문에, 하나의 데이터가 게이트웨이 서버(21A)에 송신될 때까지의 동안, 다른 데이터는 어드레스(1,4)의 메모리 노드에서 대기할 필요가 있다. 이러한 데이터 전송의 대기가 발생하면, 전 데이터의 전송에 필요로 하는 시간이 증가한다.
또한, 도 33a 내지 도 33d로부터 알 수 있는 바와 같이, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 동일한 메모리 노드의 수는 전송 횟수가 적어짐에 따라 감소한다. 따라서, 도 33a에 도시한 바와 같이, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 동일하고 상이한 메모리 노드에 복수 데이터를 보존하고, 동시에 판독하여 전송을 개시하면, 시간이 경과하여 데이터가 게이트웨이 서버(21A)에 근접할수록, 전송처의 메모리 노드의 수가 감소하고, 복수 데이터가 동일한 메모리 노드에 전송될 확률이 높아진다. 이와 같이, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 동일한 메모리 노드에 복수 데이터를 보존하면, 판독 후의 전송 시에 쓸모없는 대기 시간이 발생하기 쉬워진다.
도 34a 내지 도 34e, 도 35a 및 도 35b를 참조하여, 이러한 전송 시의 대기 시간을 저감하기 위한 데이터 처리 수순을 설명한다.
도 34a 내지 도 34e는, 메모리 노드로부터 판독된 데이터가 게이트웨이 서버(21A)를 향해 전송되어 가는 과정의 일례를 도시한 도면이다. 도 34a 내지 도 34e는, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 1회인 메모리 노드(1,5)에 ID=2의 데이터를, 최저 전송 횟수가 2회인 메모리 노드(1,2)에 ID=1의 데이터를, 3회인 메모리 노드(4,4)에 ID=3의 데이터를 보존시킨 후, 이들 데이터를 동시에 판독하여 게이트웨이 서버(21A)에 전송하는 과정을 나타내고 있다.
이 경우에도, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 적은 메모리 노드에 데이터는 전송되고 있다. 그러나, 도 34a 내지 도 34e의 경우, 모든 과정에서, 도 33d에 도시된 바와 같은 동일 메모리 노드에의 복수 데이터의 전송이 발생하지 않고 있다. 이것은, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 상이한 메모리 노드에 데이터를 보존했기 때문이다. 이 경우에도, 최저 전송 횟수가 적은 메모리 노드에 데이터 전송이 행해지지만, 최저 전송 횟수가 상이한 메모리 노드로부터 전 데이터의 전송이 개시되기 때문에, 어느 시간에 있어서든 각 데이터는 최저 전송 횟수가 상이한 메모리 노드에 위치한다.
이와 같이, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 상이한 메모리 노드에 데이터를 보존함으로써, 판독 데이터의 전송 시에 있어서의 복수 데이터의 동일 메모리 노드에의 동시 전송이 회피되어, 데이터 전송 시간을 단축할 수 있다.
또한, 당연하지만, 게이트웨이 서버와의 패킷 통신에 필요한 최저 전송 횟수가 상이한 메모리 노드에 보존한 데이터를 판독하여 게이트웨이 서버에 전송하는 경우, 데이터를 보존한 메모리 노드가 게이트웨이 서버에 가까운 순서로 게이트웨이 서버에 데이터가 도달한다. 도 34a에서는, 게이트웨이 서버(21A)에 가장 가까운 메모리 노드에 ID=2의 데이터를, 다음에 서버(21A)에 가까운 메모리 노드에 ID=1의 데이터를, 가장 서버(21A)로부터 먼 메모리 노드에 ID=3의 데이터를 보존하고 있기 때문에, 이들 메모리 노드로부터 판독·전송된 데이터는, 도 34c 내지 도 34e에 도시한 바와 같이, ID=2의 데이터, ID=1의 데이터, ID=3의 데이터의 순서로 게이트웨이 서버(21A)에 도달한다.
전술한 바와 같이, 이들 데이터는 하나의 파일을 3 분할한 것이며, 분할 후의 데이터의 순서에 맞춰 ID=1, ID=2, ID=3으로 ID를 부여받고 있다. 이로 인해, 분할 데이터로부터 파일을 재구성하기 위해서는, 게이트웨이 서버(21A)에 도달한 데이터를 ID순으로 교체할 필요가 있다.
한편, 도 35a에서는, ID=1의 데이터를 게이트웨이 서버(21A)로부터의 최저 전송 횟수 1회의 메모리 노드에, ID=2의 데이터를 최저 전송 횟수 2회의 메모리 노드에, ID=3의 데이터를 최저 전송 횟수 3회의 메모리 노드에 보존하고 있다. 이로 인해, 이들 데이터를 메모리 노드로부터 판독하고, 게이트웨이 서버(21A)에 전송하면, 도 35b에 도시한 바와 같이, ID=1의 데이터, ID=2의 데이터, ID=3의 데이터의 순서로 게이트웨이 서버(21A)에 도달한다. 따라서, 파일의 재구성을 행할 때에, 데이터의 재배열을 행할 필요가 없다.
이와 같이, 데이터의 판독 순서가 의미를 갖는 복수의 데이터를, 게이트웨이 서버와의 패킷 통신에 필요한 최저 전송 횟수가 상이한 메모리 노드에 보존하는 경우, 그 순서에 맞춰, 게이트웨이 서버에 가까운 메모리 노드로부터 먼 메모리 노드로 순서대로 보존한다. 이에 따라, 게이트웨이 서버(21A)에 전송된 데이터의 재배열 작업을 생략할 수 있다.
그런데, 모두 등가의 메모리 노드로 구성된 스토리지 장치의 단일 메모리 노드와 게이트웨이 서버가, 어댑터를 통해 접속되어 있는 스토리지 시스템에서, 스토리지 장치에 복수 데이터를 보존하는 수순에 대하여 설명했지만, 도 36a에 도시한 바와 같이, 인접 노드와 접속된 입출력 포트 이외의 입출력 포트(비인접 포트)를 갖고, 비인접 포트에 의해 상호 접속된 복수의 메모리 노드를 갖는 스토리지 장치에 있어서도, 게이트웨이 서버(21B)와의 패킷 통신에 필요한 최저 전송 횟수가 상이한 메모리 노드에 데이터를 보존함으로써, 보존 데이터의 전송 시에 쓸모없는 대기 시간이 발생하는 것을 회피할 수 있다.
또한, 도 36b 내지 도 36d에 도시한 바와 같이, 스위칭 릴레이를 통해 스토리지 장치(10)와 게이트웨이 서버(21A)가 접속되어 있는 경우에 있어서도, 게이트웨이 서버(21A)와의 패킷 통신에 필요한 최저 전송 횟수가 상이한 메모리 노드에 데이터를 보존함으로써, 보존 데이터의 전송 시에 쓸모없는 대기 시간이 발생하는 것을 회피할 수 있다. 또한, 도 36a 내지 도 36d에서는, ID=1, ID=2, ID=3의 데이터를, 패킷 통신에 필요한 최저 전송 횟수가 1회, 2회, 3회인 메모리 노드에 각각 보존한 예를 나타내고 있다.
또한, 전술한 바와 같이, 메모리 노드의 어드레스의 해시 값과 패킷 ID의 해시값으로부터, 패킷 데이터를 보존하는 메모리 노드의 어드레스를 정하는 방법(컨시스텐트 해싱)이 있다. 이것은 예를 들어, 0 내지 2160-1의 정수값을 취하는 ID 공간을 생각하여, 메모리 노드와 패킷의 각각에 대하여, 전자는 어드레스, 후자는 패킷 ID로 암호학적 해쉬 함수 SHA-1을 계산(계산 결과는 0 내지 2160-1의 어느 하나의 정수값이 됨)함으로써, 이들을 ID 공간의 어느 하나의 ID에 할당한다. 이어서, 각 패킷에 대하여, 해시값의 ID로부터 ID 공간을 시계 방향으로 추적하여, 최초로 맞닥뜨린 메모리 노드를, 그 패킷을 보존하는 메모리 노드로서 결정하는 것이다.
본 방법은, 높은 균일성으로 패킷을 메모리 노드에 분산 보존할 수 있을 뿐만 아니라, 메모리 노드를 증감시키더라도, 변경이 필요한 패킷이 적은(즉, 메모리 노드의 스케일러빌리티가 높은) 특징을 갖고 있다. 그러나, 이 방법으로 패킷을 보존하는 메모리 노드를 정하면, 게이트웨이 서버와의 통신 시에 필요한 전송 횟수가 같은 메모리 노드에 패킷이 보존될 수 있다(전술한 바와 같이, 이것은 데이터 판독 시에 패킷 충돌을 일으킴).
게이트웨이 서버와의 통신에서 패킷 전송 횟수가 상이한 메모리 노드에, N개의 패킷을 균일하게 분산시켜서 보존하기 위해서는, 예를 들어 패킷 ID의 해시값 mod N을 계산하여(mod는 나눗셈의 나머지를 돌려주는 함수), 그 패킷을 보존하는 메모리 노드의 전송 횟수(0 내지 (N-1) 중 어느 하나)를 정한다(계산 결과, 전송 횟수가 일치하는 패킷이 있으면, 상이한 값이 되도록 조정함). 또한, 각 패킷에 대하여, 결정된 전송 횟수를 갖는 메모리 노드 중으로부터, 그 패킷을 보존하는 메모리 노드를 전술한 컨시스텐트 해싱에 의해 정하면 좋다.
또한, 이러한 패킷 보존 장소의 메모리 노드를 결정하는 수순에서는, 결정된 전송 횟수를 갖는 메모리 노드의 어드레스 파악이 필요하다. 어느 전송 횟수를 갖는 메모리 노드의 어드레스는 다음과 같이 표시된다.
도 33a 내지 도 35b와 같이, 게이트웨이 서버(21A)가, 어댑터(22A)를 통해 스토리지 장치(여기서는 메모리 노드의 어드레스는 모두 양의 정수 값으로 함)의 단부에 위치하는 메모리 노드(1,a0)와 접속되어 있는 시스템에 있어서, 메모리 노드(1,a0)와의 사이에서 패킷 통신을 행하는 경우에, 최저 전송 횟수가 n회인 메모리 노드의 어드레스는 (1+b,a0+(n-b))(n≥b≥0) 및 (1+c,a0-(n-c))(a0-1≥n-c≥0)로 표시된다.
도 36a, 도 36d에 도시한 바와 같이, 증가 포트(비인접 포트)에 의해, 인접하지 않는 메모리 노드끼리나 메모리 노드와 스위칭 릴레이가 접속된 스토리지 장치(메모리 노드의 어드레스는 양의 정수 값으로 함)에 있어서, 증가 포트를 갖는 노드(a0,b0)와의 사이에서 패킷 통신을 행하는 경우에, 최저 전송 횟수가 n회인 메모리 노드의 어드레스는 (a0+c, b0+(n-c))(n≥c≥0), (a0+d, b0-(n-d))(n≥d≥0, b0-1≥n-d), (a0-e, b0+(n-e))(min(a0-1,n)≥e≥0), (a0-f, b0-(n-f))(a0-1≥f≥0, b0-1≥n-f≥0)으로 표시된다.
도 36b에 도시한 바와 같이, 스토리지 장치(전 메모리 노드의 어드레스는 양의 정수 값으로 함)의 좌측 단부(어드레스(1,y))의 메모리 노드가 스위칭 릴레이와 접속되어 있는 시스템에 있어서, 어드레스(1,a0)의 중계 메모리 노드와의 사이에서 패킷 통신을 행하는 경우에, 최저 전송 횟수가 n회인 메모리 노드의 어드레스는 (1,a0+n)로 표시된다.
또한, 데이터 전송 시간이 같은 메모리 노드가 상호 접속된 스토리지 장치를 포함하는 시스템에 대하여 설명해 왔지만, 도 36e에 도시한 바와 같은 데이터 전송 시간이 같은 메모리 노드가 트리 형상으로 접속된 스토리지 시스템이나, 도 36f에 도시한 바와 같은 데이터 전송 시간이 상이한 메모리 노드로 이루어지는 스토리지 시스템 등, 서버와의 데이터 통신 시간이 상이한 메모리 노드가 존재하는 스토리지 장치를 포함하는 시스템이면, 본 실시 형태를 적용할 수 있다.
도 36e에 도시한 시스템은, 데이터 전송 시간이 같은 메모리 노드가 트리형상으로 접속된 스토리지 시스템이며, 게이트웨이 서버(21A)와의 통신 시간이 같은 메모리 노드를 동일한 해칭으로 나타내고 있다. 도 36f에 도시한 시스템에서는, 메모리 노드 간과 메모리 노드 내지 스위칭 릴레이 간의 데이터 통신 속도는 동일하고, 또한 어드레스(a,l), (a,m), (a,n), (b,l), (b,m), (b,n)의 메모리 노드 간, 및 이들 메모리 노드 내지 스위칭 릴레이(81) 간의 데이터 통신 속도에 대하여, 어드레스(α,δ), (β,γ), (β,ε)의 메모리 노드 간, 및 이들 메모리 노드 내지 스위칭 릴레이(81) 간의 데이터 통신 속도는 2배, 어드레스(A,B)와 스위칭 릴레이(81) 간의 통신 속도는 4배인 경우를 나타내고 있다. 또한, 스위칭 릴레이(81)와의 데이터 전송 시간이 같은 메모리 노드를 동일한 해칭으로 나타내고 있다. 단, 메모리 노드 내에서의 데이터 전송 시간은, 메모리 노드 간 및 스위칭 릴레이 내지 메모리 노드 간의 데이터 전송 시간보다 충분히 작다고 가정한다.
이상 설명한 바와 같이 제9 실시 형태에 따르면, 복수의 메모리 노드에 보존한 데이터를 각 메모리 노드로부터 판독한 후, 게이트웨이 서버에 송신할 때의 전송 시간을 단축할 수 있다. 이에 따라, 고속의 데이터 판독이 가능해진다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
[제10 실시 형태]
제10 실시 형태는, 게이트웨이 서버로부터 복수의 데이터를 복수의 메모리 노드에 송신하는 데이터 처리에 있어서, 데이터 통신 시간이 긴 메모리 노드를 수신처로 하는 데이터로부터, 데이터 통신 시간이 짧은 메모리 노드를 수신처로 하는 데이터의 순으로 데이터 전송을 행하는 데이터 처리 수순을 구비한다.
[1] 스토리지 시스템의 구성
도 37a는 제10 실시 형태의 스토리지 시스템의 구성을 도시한 도면이다.
도시한 바와 같이, 스토리지 시스템은, 복수의 메모리 노드(11)를 포함하는 스토리지 장치(10), 및 스토리지 장치(10)에 접속된 복수의 게이트웨이 서버(21A)를 구비한다. 스토리지 장치(10)는, 도 1에 도시한 바와 같이, 데이터 전송 기능을 갖는 메모리 노드가 서로 복수 접속된 구성을 갖는다. 스토리지 장치(10)의 외주부에 배치된 메모리 노드(1,4)에는, 어댑터(22A)를 통해 게이트웨이 서버(21A)가 접속되어 있다.
[2] 스토리지 시스템의 데이터 처리 방법
제10 실시 형태의 스토리지 시스템에 있어서의 데이터 처리 수순에 대하여 설명한다.
도 37a 내지 도 37g 및 도 38a 내지 도 38e는, 제9 실시 형태와 마찬가지로, 스토리지 장치가 어댑터(22A)를 통해 게이트웨이 서버(21A)와 접속된 스토리지 시스템이다. 스토리지 장치는, 인접한 메모리 노드(11)가 상호 접속된 복수의 메모리 노드로 구성된다.
여기에서는, 게이트웨이 서버(21A)로부터, ID=1, ID=2, ID=3의 3개의 데이터를, 각각 어드레스(1,5), (1,2), (4,4)의 메모리 노드에 송신하는 경우의, 게이트웨이 서버(21A)로부터의 데이터 송신 순서와, 전 데이터 송신에 필요한 시간의 관계에 대하여 생각한다. 또한, 메모리 노드의 일시 보존용 메모리(입력 포트 버퍼)에 패킷은 1개밖에 보존할 수 없고, 또한 한번에 1개의 패킷밖에, 게이트웨이 서버(21A)로부터 어드레스(1,4)의 메모리 노드에 송신할 수 없는 것으로 한다.
도 37a 내지 도 37g에서는, 게이트웨이 서버(21A)에 가까운 메모리 노드를 수신처로 하는 데이터로부터 먼 메모리 노드를 수신처로 하는 데이터의 순서(즉, ID=1의 데이터, ID=2의 데이터, ID=3의 데이터의 순)로, 게이트웨이 서버(21A)로부터 스토리지 장치에 패킷을 송신한 경우의 패킷 전송 과정을 나타내고 있다.
이 경우, 당연한 것이지만, 도 37b 내지 도 37c에 도시한 바와 같이, 게이트웨이 서버(21A)에 가장 가까운, 어드레스(1,5)의 메모리 노드를 수신처로 하는 데이터(ID=1) 송신은 가장 빨리 종료한다.
그러나, 게이트웨이 서버(21A)로부터 가장 먼, 어드레스(4,4)의 메모리 노드를 수신처로 한 데이터(ID=3)는, 도 37d에 도시한 바와 같이, 2개의 데이터(ID=1, ID=2)가, 어드레스(1,4)의 메모리 노드로부터 인접 메모리 노드에 전송될 때까지, 어드레스(1,4)에 송신할 수 없어, 그때까지의 동안에 게이트웨이 서버(21A)에서 대기할 필요가 있다. 그 대기가 끝나고, 어드레스(1,4)의 메모리 노드에 송신되더라도, 도 37d 내지 도 37g에 도시한 바와 같이, 어드레스(4,4)까지 데이터가 도달하기 위해서는 최저 3회의 전송이 필요하다.
한편, 도 38a 내지 도 38e에서는, 게이트웨이 서버(21A)로부터 가장 먼 메모리 노드를 수신처로 하는 데이터로부터, 가까운 메모리 노드를 수신처로 하는 데이터의 순서(즉 ID=3의 데이터, ID=2의 데이터, ID=1의 데이터의 순)로, 게이트웨이 서버(21A)로부터 스토리지 장치에 패킷을 송신한 경우의 패킷 전송 과정을 나타내고 있다.
이 경우에 있어서도, 도 38b 내지 도 38d에 도시한 바와 같이, ID=3의 데이터와 ID=2의 데이터가 어드레스(1,4)의 메모리 노드로부터 인접 노드에 전송될 때까지, ID=1의 데이터는 어드레스(1,4)의 메모리 노드에 송신할 수 없어, 게이트웨이 서버(21A)에서 대기할 필요가 있다.
그러나, 나중에 발신되는 데이터(ID=1)의 수신처인 어드레스(1,5)의 메모리 노드는 게이트웨이 서버(21A)에 가까워, 적은 전송 횟수로 수신처의 메모리 노드에 도달한다. 한편, 앞서 게이트웨이 서버(21A)로부터 송신된 데이터(ID=3)는, 수신처가 게이트웨이 서버(21A)로부터 떨어져 있지만, 다른 데이터가 게이트웨이 서버(21A)에서 대기하고 있는 동안에 전송이 개시되고 있기 때문에, 그만큼 빨리 수신처에 도달한다. 이들 결과, 도 38e에 도시한 바와 같이, 3개의 데이터는 동시에 수신처의 메모리 노드에 도달한다.
도 37a 내지 도 37g와 도 38a 내지 도 38e의 비교로부터 알 수 있는 바와 같이, 수신처의 메모리 노드가 게이트웨이 서버(21A)로부터 떨어진 데이터로부터, 게이트웨이 서버(21A)로부터 가까운 데이터의 순서로, 게이트웨이 서버(21A)로부터 데이터 송신을 행함으로써, 모든 데이터 송신에 필요한 시간을 최소로 할 수 있다.
또한, 데이터 전송 시간이 같은 메모리 노드가 상호 접속된 스토리지 장치를 포함하는 시스템에 대하여 설명해 왔지만, 데이터 전송 시간이 같은 메모리 노드가 트리 형상으로 접속된 스토리지 시스템(도 36e)이나, 데이터 전송 시간이 상이한 메모리 노드로 이루어지는 스토리지 시스템(도 36f) 등, 서버와의 데이터 통신 시간이 상이한 메모리 노드가 존재하는 스토리지 장치에 복수의 데이터를 송신하는 경우에는 본 실시 형태를 마찬가지로 적용할 수 있다.
이상 설명한 바와 같이 제10 실시 형태에 따르면, 게이트웨이 서버와의 통신 시간이 상이한 복수의 메모리 노드에 복수의 데이터를 보낼 때, 필요하게 되는 통신 시간을 최소로 할 수 있다. 그 밖의 구성 및 효과는 전술한 제1 실시 형태와 마찬가지이다.
이상 설명한 바와 같이, 제1 내지 제10 실시 형태에 따르면, 메모리 노드가 경로 지정표를 관리할 필요가 없고, 효율적으로 패킷을 전송할 수 있는 스토리지 장치 및 데이터 처리 방법을 제공할 수 있다.
상기 실시 형태에서는, 메모리 노드가 경로 지정표를 관리할 필요가 없고, 효율적으로 패킷을 전송할 수 있는 스토리지 장치 및 데이터 처리 방법을 제공할 수 있다.
여러 가지 실시예들이 기술되었으나, 그러한 실시예들은 단지 예로서만 나타내어진 것으로서, 본 발명의 범위를 한정하고자 하는 것은 아니다. 실제로, 본 명세서에 기술된 신규 방법 및 장치는 다양한 다른 형태로 실시될 수 있고; 또한, 본 명세서에 기술된 방법 및 장치들의 형태에 있어서, 다양한 생략, 치환, 변환이, 본 발명의 정신을 벗어남 없이 이루어질 수 있다. 첨부된 특허청구범위 및 그의 등가물들은 본 발명의 범위 및 정신에 수속되는 그러한 형태 또는 변경을 포함하고자 한다.

Claims (18)

  1. 복수의 입력 포트, 복수의 출력 포트, 셀렉터, 패킷 컨트롤러 및 메모리를 구비한 복수의 메모리 노드 - 상기 셀렉터는 상기 입력 포트에 입력된 패킷을 상기 출력 포트에 출력하고, 상기 패킷 컨트롤러는 상기 셀렉터의 출력을 제어하고, 상기 메모리는 데이터를 기억함 - 를 포함하고,
    상기 메모리 노드끼리는 상기 입력 포트 및 상기 출력 포트에 의해 서로 접속되고,
    상기 메모리 노드는 물리적인 위치에 의해 정해지는 물리 어드레스를 갖고,
    상기 패킷 컨트롤러는 자신의 메모리 노드를 수신처로 하지 않는 패킷을 수신한 경우에, 상기 패킷의 송신처 어드레스와 상기 자신의 메모리 노드의 어드레스를 적어도 포함하는 정보에 기초하여, 상기 패킷을 출력하는 상기 출력 포트를 전환하고,
    상기 패킷 컨트롤러는, 상기 송신처 어드레스, 상기 자신의 메모리 노드의 어드레스, 및 상기 패킷의 송신원 어드레스를 적어도 포함하는 정보에 기초하여, 상기 출력 포트를 전환하는, 스토리지 장치.
  2. 삭제
  3. 제1항에 있어서, 상기 패킷 컨트롤러는, 상기 송신처 어드레스의 메모리 노드와 상기 송신원 어드레스의 메모리 노드를 연결하는 직선으로 구획되는 2개의 영역 중 어느 쪽에 상기 자신의 메모리 노드가 속하는지를 판단하고,
    상기 자신의 메모리 노드가 속하는 영역에 할당된 방향의 인접한 메모리 노드에 상기 패킷을 전송하는, 스토리지 장치.
  4. 제1항에 있어서, 상기 패킷 컨트롤러는, 상기 송신처 어드레스, 상기 자신의 메모리 노드의 어드레스, 상기 송신원 어드레스, 및 자신의 메모리 노드의 출력 포트 점유 정보를 적어도 포함하는 정보에 기초하여, 상기 출력 포트를 전환하는, 스토리지 장치.
  5. 제4항에 있어서, 상기 패킷 컨트롤러는, 상기 송신처 어드레스의 메모리 노드와 상기 송신원 어드레스의 메모리 노드를 연결하는 직선으로 구획되는 2개의 영역 중 어느 쪽에 상기 자신의 메모리 노드가 속하는지를 판단하고,
    상기 자신의 메모리 노드가 속하는 영역에 할당된 2개의 방향 중, 상기 자신의 메모리 노드의 상기 출력 포트 점유 정보에 의해 정해지는 방향의 인접한 메모리 노드에 상기 패킷을 전송하는, 스토리지 장치.
  6. 제4항에 있어서, 상기 패킷 컨트롤러는, 상기 송신처 어드레스의 메모리 노드와 상기 송신원 어드레스의 메모리 노드를 연결하는 직선, 및 상기 직선과 직교하는 직선으로 구획되는 4개의 영역 중 어느 영역에 상기 자신의 메모리 노드가 속하는지를 판단하고,
    상기 자신의 메모리 노드가 속하는 영역에 할당된 2개의 방향 중, 상기 자신의 메모리 노드의 상기 출력 포트 점유 정보에 의해 정해지는 방향의 인접한 메모리 노드에 상기 패킷을 전송하는, 스토리지 장치.
  7. 제4항에 있어서, 상기 패킷 컨트롤러는, 상기 송신처 어드레스의 메모리 노드와 상기 송신원 어드레스의 메모리 노드를 연결하는 직선, 및 상기 직선과 직교하는 직선, 상기 송신처 어드레스의 메모리 노드를 통과하여 메모리 노드의 배열 방향을 따른 2개의 직선으로 구획되는 8개의 영역 중 어느 영역에 상기 자신의 메모리 노드가 속하는지를 판단하고,
    상기 자신의 메모리 노드가 속하는 영역에 할당된 2개의 방향 중, 상기 자신의 메모리 노드의 상기 출력 포트 점유 정보에 의해 정해지는 방향의 인접한 메모리 노드에 상기 패킷을 전송하는, 스토리지 장치.
  8. 제1항에 있어서, 상기 패킷 컨트롤러는, 상기 자신의 메모리 노드에 인접하는 상기 복수의 메모리 노드 중, 상기 송신처 어드레스의 메모리 노드와 상기 패킷의 출력처의 메모리 노드와의 거리가 가장 작아지는 메모리 노드에 상기 패킷을 전송하는, 스토리지 장치.
  9. 제1항에 있어서, 상기 복수의 메모리 노드 중 일부의 메모리 노드는, 인접하는 메모리 노드와 접속된 제1 입력 포트 및 출력 포트 이외의 제2 입력 포트 및 출력 포트를 갖고,
    상기 일부의 메모리 노드가, 상기 제2 입력 포트 및 출력 포트에 의해, 컴퓨터 또는 인접하지 않는 비인접 메모리 노드 중 적어도 어느 하나에 접속되어 있는, 스토리지 장치.
  10. 제9항에 있어서, 상기 비인접 메모리 노드에 접속된 메모리 노드가, 상기 물리 어드레스에 더하여, 상기 비인접 메모리 노드에 접속된 메모리 노드끼리의 상대적인 물리 위치에 의해 결정되는 부가 어드레스를 갖고,
    상기 비인접 메모리 노드에 접속된 메모리 노드가, 자신의 메모리 노드 이외의 메모리 노드를 수신처로 하는 패킷을 수신한 경우,
    상기 메모리 노드의 상기 패킷 컨트롤러가, 상기 자신의 메모리 노드의 부가 어드레스, 또는 상기 자신의 메모리 노드 이외의, 비인접 메모리 노드에 접속된 메모리 노드의 부가 어드레스 중 적어도 어느 하나를 포함하는 정보에 기초하여, 상기 출력 포트를 전환하는, 스토리지 장치.
  11. 제9항에 있어서, 상기 복수의 메모리 노드를, 동일한 메모리 노드수를 포함하는 복수 영역으로 분할하고, 상기 복수 영역의 각각의 중심에 위치하는 메모리 노드끼리를 상기 제2 입력 포트 및 출력 포트에 의해 접속하는, 스토리지 장치.
  12. 제1항에 있어서, 상기 복수의 메모리 노드에 접속된 릴레이를 더 포함하고,
    상기 릴레이는 상기 패킷의 상기 송신처 어드레스를 갖는 메모리 노드와의 거리가 가장 작은 메모리 노드에 상기 패킷을 송신하는, 스토리지 장치.
  13. 제1항에 있어서, 상기 메모리 노드는 어드레스 변환기를 더 구비하고,
    상기 메모리 노드는, 스스로가 보유하는 키-값(key-value)형 데이터의 각 레코드에 대하여, 상기 어드레스 변환기에 의해 키를 어드레스로 변환하고, 상기 어드레스에 값을 포함하는 패킷을 송신하는, 스토리지 장치.
  14. 복수의 입력 포트, 복수의 출력 포트, 셀렉터, 패킷 컨트롤러 및 메모리를 구비한 복수의 메모리 노드 - 상기 셀렉터는 상기 입력 포트에 입력된 패킷을 상기 출력 포트에 출력하고, 상기 패킷 컨트롤러는 상기 셀렉터의 출력을 제어하고, 상기 메모리는 데이터를 기억함 - ; 및
    상기 복수의 메모리 노드 중 외주부에 배치된 메모리 노드에 접속된 복수의 컴퓨터를 포함하고,
    상기 메모리 노드끼리는 상기 입력 포트 및 상기 출력 포트에 의해 서로 접속되고,
    상기 메모리 노드는 물리적인 위치에 의해 정해지는 물리 어드레스를 갖고,
    상기 패킷 컨트롤러는, 자신의 메모리 노드를 수신처로 하지 않는 패킷을 수신한 경우에, 상기 패킷의 송신처 어드레스와 상기 자신의 메모리 노드의 어드레스를 적어도 포함하는 정보에 기초하여, 상기 패킷을 출력하는 상기 출력 포트를 전환하고,
    상기 메모리 노드수를 Nnode로 하고, 상기 컴퓨터수를 Nc로 했을 경우, Nc<√Nnode의 관계식을 만족하는, 스토리지 시스템.
  15. 제14항에 있어서, Nc<0.1×√Nnode의 관계식을 만족하는, 스토리지 시스템.
  16. 데이터 전송 기능을 갖는 복수의 메모리 노드가 상호 접속된 스토리지 장치에서의 데이터 처리 방법으로서,
    컴퓨터로부터 복수의 데이터를 수신하고; 및
    상기 컴퓨터와의 데이터 통신 시간이 상이한 복수의 메모리 노드를, 상기 복수의 데이터의 보존 장소로서 선택하고, 선택한 상기 복수의 메모리 노드에 상기 복수의 데이터를 보존하는, 데이터 처리 방법.
  17. 제16항에 있어서, 상기 컴퓨터는 상기 데이터 통신 시간이 상이한 복수의 메모리 노드에, 상기 데이터 통신 시간이 긴 메모리 노드를 수신처로 하는 데이터부터, 상기 데이터 통신 시간이 짧은 메모리 노드를 수신처로 하는 데이터의 순으로 상기 복수의 데이터를 송신하는, 데이터 처리 방법.
  18. 제16항에 있어서, 상기 복수의 데이터는 하나의 데이터를 분할한 데이터를 포함하는, 데이터 처리 방법.
KR20110092935A 2010-11-10 2011-09-15 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법 KR101298367B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010252336A JP5238791B2 (ja) 2010-11-10 2010-11-10 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法
JPJP-P-2010-252336 2010-11-10

Publications (2)

Publication Number Publication Date
KR20120050377A KR20120050377A (ko) 2012-05-18
KR101298367B1 true KR101298367B1 (ko) 2013-09-16

Family

ID=46020756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20110092935A KR101298367B1 (ko) 2010-11-10 2011-09-15 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법

Country Status (5)

Country Link
US (3) US9246709B2 (ko)
JP (1) JP5238791B2 (ko)
KR (1) KR101298367B1 (ko)
CN (1) CN102708073B (ko)
TW (1) TWI463837B (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US8824437B2 (en) * 2011-03-02 2014-09-02 Ricoh Company, Ltd. Wireless communications device, electronic apparatus, and methods for determining and updating access point
JP5762878B2 (ja) 2011-08-08 2015-08-12 株式会社東芝 key−valueストアを有するメモリシステム
US8838937B1 (en) * 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
JP5985403B2 (ja) 2013-01-10 2016-09-06 株式会社東芝 ストレージ装置
JP6005533B2 (ja) * 2013-01-17 2016-10-12 株式会社東芝 記憶装置および記憶方法
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
JP6005566B2 (ja) 2013-03-18 2016-10-12 株式会社東芝 情報処理システム、制御プログラムおよび情報処理装置
JP6070357B2 (ja) * 2013-03-28 2017-02-01 富士通株式会社 ストレージ装置
US8761181B1 (en) * 2013-04-19 2014-06-24 Cubic Corporation Packet sequence number tracking for duplicate packet detection
JP5931816B2 (ja) 2013-08-22 2016-06-08 株式会社東芝 ストレージ装置
JP5989614B2 (ja) * 2013-08-22 2016-09-07 株式会社東芝 ストレージ装置
JP5996497B2 (ja) * 2013-08-22 2016-09-21 株式会社東芝 ストレージ装置
JP5902137B2 (ja) * 2013-09-24 2016-04-13 株式会社東芝 ストレージシステム
US10003675B2 (en) * 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
JP5659289B1 (ja) * 2013-12-27 2015-01-28 株式会社東芝 ストレージシステム
JP2015152949A (ja) 2014-02-10 2015-08-24 株式会社東芝 ストレージシステム
US20160034191A1 (en) * 2014-08-01 2016-02-04 Kabushiki Kaisha Toshiba Grid oriented distributed parallel computing platform
US9645760B2 (en) * 2015-01-29 2017-05-09 Kabushiki Kaisha Toshiba Storage system and control method thereof
JP6313237B2 (ja) * 2015-02-04 2018-04-18 東芝メモリ株式会社 ストレージシステム
JP6342351B2 (ja) 2015-03-02 2018-06-13 東芝メモリ株式会社 ストレージシステム
US10268373B2 (en) * 2015-03-04 2019-04-23 Toshiba Memory Corporation Storage system with improved communication
US10303637B2 (en) * 2015-08-20 2019-05-28 Toshiba Memory Corporation Storage system including a plurality of storage devices arranged in a holder
US9619165B1 (en) * 2015-10-30 2017-04-11 Sandisk Technologies Llc Convertible leaf memory mapping
US10255955B2 (en) * 2016-02-09 2019-04-09 Samsung Electronics Co., Ltd. Multi-port memory device and a method of using the same
JP2018041154A (ja) 2016-09-05 2018-03-15 東芝メモリ株式会社 ストレージシステムおよび処理方法
JP6675290B2 (ja) 2016-09-09 2020-04-01 キオクシア株式会社 ストレージシステム及び方法
GB2575293B (en) * 2018-07-04 2020-09-16 Graphcore Ltd Data Through Gateway
CN114584531B (zh) * 2022-03-17 2023-11-17 南京南瑞继保电气有限公司 多电平换流器系统子模块控制器自动学习地址的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100241783A1 (en) * 2009-03-23 2010-09-23 Honeywell International Inc. Memory node for use within a data storage system having a plurality of interconnected memory nodes
JP2010218364A (ja) * 2009-03-18 2010-09-30 Fujitsu Ltd 情報処理システム、通信制御装置および方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04148484A (ja) * 1990-10-12 1992-05-21 Fujitsu Ltd プロセッサアレイ計算機の通信方式
JPH04152439A (ja) * 1990-10-17 1992-05-26 Fujitsu Ltd ファイル代行処理方式
JP2976675B2 (ja) * 1992-02-21 1999-11-10 日本電気株式会社 アレイプロセッサのルーティング方法
US5926101A (en) * 1995-11-16 1999-07-20 Philips Electronics North America Corporation Method and apparatus for routing messages in a network of nodes with minimal resources
KR0170493B1 (ko) * 1995-12-08 1999-03-30 양승택 다중 프로세서 시스템을 위한 논블록킹 결함허용 감마 연결망
US6230303B1 (en) * 1997-02-24 2001-05-08 Lucent Technologies Inc. Proximity-based cluster allocation for hardware-software co-synthesis of heterogeneous distributed embedded systems
JP2982755B2 (ja) 1997-07-11 1999-11-29 日本電気株式会社 スイッチ装置
US6456624B1 (en) * 1997-10-29 2002-09-24 Enterasys Networks, Inc. Network address resolve blocker
US6457100B1 (en) * 1999-09-15 2002-09-24 International Business Machines Corporation Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
KR100592753B1 (ko) * 2001-02-24 2006-06-26 인터내셔널 비지네스 머신즈 코포레이션 다차원 고속 푸리에 변환의 효율적 구현 방법, 시스템 및 그에 관한 프로그램을 기록한 컴퓨터 판독가능 기록 매체와, 다차원 어레이의 효율적 재배치 방법, 시스템 및 그에 관한 프로그램을 기록한 컴퓨터 판독가능 기록 매체
JP2003174460A (ja) 2001-12-06 2003-06-20 Hitachi Ltd データ通信方法及びその実施システム並びにその処理プログラム
US7080156B2 (en) * 2002-03-21 2006-07-18 Sun Microsystems, Inc. Message routing in a torus interconnect
US20040022022A1 (en) * 2002-08-02 2004-02-05 Voge Brendan A. Modular system customized by system backplane
WO2004032435A1 (ja) * 2002-10-03 2004-04-15 In4S Inc. ビットストリングの照合方法および装置
JP2004140539A (ja) 2002-10-17 2004-05-13 Hitachi Ltd 情報ルーティング方式および情報中継装置
US7213106B1 (en) * 2004-08-09 2007-05-01 Sun Microsystems, Inc. Conservative shadow cache support in a point-to-point connected multiprocessing node
US7325095B2 (en) * 2005-02-28 2008-01-29 Hitachi Global Storage Technologies Netherlands B.V. Data storage organization for distributed computing in an intelligent disk drive
JP4713902B2 (ja) * 2005-03-01 2011-06-29 株式会社日立製作所 ストレージシステム
CA2597692A1 (en) 2005-04-21 2006-11-02 Violin Memory, Inc. Interconnection system
US7633940B1 (en) * 2005-06-27 2009-12-15 The Board Of Trustees Of The Leland Stanford Junior University Load-balanced routing
US7577813B2 (en) * 2005-10-11 2009-08-18 Dell Products L.P. System and method for enumerating multi-level processor-memory affinities for non-uniform memory access systems
WO2008034298A1 (en) * 2006-09-20 2008-03-27 Intel Corporation Optimized cache consistency algorithm in a point-to-point interconnected multiple processor system
US8050257B2 (en) * 2006-12-12 2011-11-01 Maged E Beshai Network with a fast-switching optical core
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
WO2008149784A1 (ja) 2007-06-08 2008-12-11 Nec Corporation 半導体集積回路及びフィルタ制御方法
JP2009037273A (ja) 2007-07-31 2009-02-19 Hitachi Ltd マルチプロセッサシステム
US8102794B2 (en) * 2007-12-10 2012-01-24 Electronics And Telecommunications Research Institute Cross-layer routing method in wireless sensor network
JP4385387B1 (ja) * 2009-07-02 2009-12-16 修平 西山 属性付きキー・バリュー・ストアによるデータベース・システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218364A (ja) * 2009-03-18 2010-09-30 Fujitsu Ltd 情報処理システム、通信制御装置および方法
US20100241783A1 (en) * 2009-03-23 2010-09-23 Honeywell International Inc. Memory node for use within a data storage system having a plurality of interconnected memory nodes

Also Published As

Publication number Publication date
TW201220773A (en) 2012-05-16
US10397139B2 (en) 2019-08-27
US20160149834A1 (en) 2016-05-26
US9246709B2 (en) 2016-01-26
KR20120050377A (ko) 2012-05-18
CN102708073A (zh) 2012-10-03
US20120117354A1 (en) 2012-05-10
CN102708073B (zh) 2017-03-01
TWI463837B (zh) 2014-12-01
US20180324111A1 (en) 2018-11-08
JP2012103926A (ja) 2012-05-31
US10044642B2 (en) 2018-08-07
JP5238791B2 (ja) 2013-07-17

Similar Documents

Publication Publication Date Title
KR101298367B1 (ko) 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법
US11003604B2 (en) Procedures for improving efficiency of an interconnect fabric on a system on chip
US4797882A (en) Mesh-based switching network
US8819611B2 (en) Asymmetric mesh NoC topologies
US5533198A (en) Direction order priority routing of packets between nodes in a networked system
JPH09153892A (ja) ワームホール・ネットワークにおけるメッセージ送達方法およびシステム
Scheideler Models and techniques for communication in dynamic networks
CN101141389A (zh) 增强多位Trie树查找方法和装置
CN108111410B (zh) 在笛卡尔拓扑的网络中构建无死锁路由的方法和装置
US20180198739A1 (en) Bus control device, relay device, and bus system
JP5404947B2 (ja) ストレージ装置
JP5628397B2 (ja) ストレージ装置
CN117176638A (zh) 一种路由路径确定方法及相关组件
JP2015015049A (ja) ストレージ装置
CN110825689B (zh) 电子芯片的实现方法及电子芯片
Bay et al. Deterministic on-line routing on area-universal networks
US20170111286A1 (en) Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto
JP2976675B2 (ja) アレイプロセッサのルーティング方法
KR100446243B1 (ko) 다중 링크를 가지는 보드간의 패킷로드 분산 장치 및방법
Hamdi Topological properties of the directional hypercube
JPH08278889A (ja) 並列計算機を用いた巡回セールスマン問題解法処理システム
Sun et al. Generalized block shift network for clusters
Pietracaprina Deterministic routing of h-relations on the multibutterfly
JPH0683259B2 (ja) データ伝送方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160707

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 6