KR20140093159A - 기억 장치 및 기억 방법 - Google Patents

기억 장치 및 기억 방법 Download PDF

Info

Publication number
KR20140093159A
KR20140093159A KR20130102531A KR20130102531A KR20140093159A KR 20140093159 A KR20140093159 A KR 20140093159A KR 20130102531 A KR20130102531 A KR 20130102531A KR 20130102531 A KR20130102531 A KR 20130102531A KR 20140093159 A KR20140093159 A KR 20140093159A
Authority
KR
South Korea
Prior art keywords
data
memory
memory node
parity
nodes
Prior art date
Application number
KR20130102531A
Other languages
English (en)
Other versions
KR101581086B1 (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 KR20140093159A publication Critical patent/KR20140093159A/ko
Application granted granted Critical
Publication of KR101581086B1 publication Critical patent/KR101581086B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

본 발명은 메모리 노드를 서로 접속한 구성에 있어서, 효율적인 데이터 전송을 가능하게 하는 것을 과제로 한다.
실시형태의 기억 장치는, 미리 정해진 사이즈의 기억 영역을 복수 포함하는 기억부를 구비하고, 2개 이상의 상이한 방향으로 서로 접속되는 복수의 메모리 노드를 갖는다. 복수의 메모리 노드는, 2개 이상의 메모리 노드를 구비하는 2개 이상의 그룹을 구성하고, 제어부는, 기억부에 대한 데이터의 기록처를, 기억 영역마다 상이한 그룹에 순차적으로 할당한다.

Description

기억 장치 및 기억 방법{STORAGE DEVICE AND STORAGE METHOD}
본 출원은, 일본 특허 출원 제2013-6754호(출원일 : 2013년 1월 17일)을 기초 출원으로 하는 우선권을 수용한다. 본 출원은 이 기초 출원을 참조함으로써 기초 출원의 모든 내용을 포함한다.
본 발명의 실시형태는 기억 장치 및 기억 방법에 관한 것이다.
복수의 하드 디스크 장치를 구비하고, 상기 복수의 하드 디스크 장치를 하나의 기억 장치로서 취급하여, 데이터를 상기 복수의 하드 디스크 장치에 분산하여 저장하는 디스크 어레이 장치가 알려져 있다. 하드 디스크 장치는, 기억 매체인 하드 디스크 상에서 헤드를 이동시켜 기록ㆍ판독을 행하기 때문에, 시퀀셜한 기록을 행함으로써 헤드의 시크타임(seek time)의 단축에 의한 판독 시간의 고속화를 기대할 수 있다.
한편, 각각 기억 소자 및 데이터 전송 기능을 갖는 복수의 메모리 노드를 서로 접속함으로써, 용량의 확장을 용이하게 한 스토리지 장치가 개발되어 있다. 각 메모리 노드는, 자신의 메모리 노드를 수신처로 한 데이터를 수신한 경우는, 판독 또는 기록 등의 정해진 처리를 행한다. 또, 각 메모리 노드는, 자신의 메모리 노드를 수신처로 한 것이 아닌 데이터를 수신한 경우는, 수신 패킷을 적절한 다른 메모리 노드에 전송한다. 각 메모리 노드에 의해서 적절한 전송이 반복되는 것에 의해, 데이터는 목적으로 하는 메모리 노드에 도달할 수 있다.
종래 기술에 의한 디스크 어레이 장치에서는, 하드 디스크 장치끼리의 물리적인 배열이 고려되어 있지 않았다. 그 때문에, 종래 기술에 의한 디스크 어레이 장치에서의 액세스 제어를 메모리 노드를 서로 접속하여 구성하는 스토리지 장치에 그대로 적용한 경우, 메모리 노드에 대한 액세스의 집중에 의해 데이터의 전송 대기 시간이 연장되어, 작업 처리량의 저하를 초래할 우려가 있다고 하는 문제점이 있었다.
즉, 메모리 노드를 서로 접속하여 구성하는 스토리지 장치에 대하여 하드 디스크 장치의 시퀀셜한 기록을 그대로 적용하면, 하나의 메모리 노드에 액세스가 집중하여 데이터의 전송 대기 시간이 발생하고, 판독 효율이 저하되어 버릴 가능성이 있다.
본 발명이 해결하고자 하는 과제는, 메모리 노드를 서로 접속한 구성에 있어서, 효율적인 데이터 전송이 가능한 기억 장치 및 기억 방법을 제공하는 것에 있다.
실시형태의 기억 장치는, 미리 정해진 사이즈의 기억 영역을 복수개 포함하는 기억부를 구비하고, 2개 이상의 상이한 방향으로 서로 접속되는 복수의 메모리 노드를 갖는다. 복수의 메모리 노드는, 각각 2개 이상의 메모리 노드를 구비하는 2개 이상의 그룹을 구성하고, 제어부는, 기억부에 대한 데이터의 기록처를, 기억 영역마다 상이한 그룹에 순차적으로 할당한다.
본 발명에 의하면, 메모리 노드를 서로 접속한 구성에 있어서, 효율적인 데이터 전송이 가능한 기억 장치 및 기억 방법을 제공할 수 있다.
도 1은, 실시형태에 따른 기억 장치의 일례의 구성을 나타내는 블록도이다.
도 2는, 실시형태에 따른 메모리 노드의 일례의 구성을 나타내는 블록도이다.
도 3은, 실시형태에 따른, 복수의 메모리 노드를 서로 다른 방향으로 분할하여 4개의 그룹을 형성한 예를 나타내는 도면이다.
도 4는, 실시형태에 따른, 복수의 메모리 노드를 동일한 방향으로 분할하여 4개의 그룹을 형성한 예를 나타내는 도면이다.
도 5는, 실시형태에 따른 메모리 노드의 구성을 개략적으로 나타내는 도면이다.
도 6은, 실시형태에 따른 메모리 노드에 기록되는 데이터의 구성예를 개략적으로 나타내는 도면이다.
도 7은, 실시형태에 따른 시퀀셜 기록의 예를 나타내는 도면이다.
도 8은, 실시형태에 의한, 각 그룹에 있어서, 하나의 페이지에 기록을 행할 때마다 메모리 노드 그룹을 변경하는 예를 나타내는 도면이다.
도 9는, 실시형태에 따른, 메모리 노드 그룹 내에서 패리티를 저장하는 메모리 노드를 선택하는 방법에 관해 설명하기 위한 도면이다.
도 10은, 실시형태에 따른, 사이클릭 기록 방식에 있어서, 논리 어드레스로부터 메모리 노드의 물리 어드레스와 페이지 어드레스를 결정하는 예를 나타내는 도면이다.
도 11은, 실시형태에 따른, 그룹에 있어서 물리 어드레스의 증가 방향을 나타내는 도면이다.
도 12는, 실시형태에 따른 메모리 노드 그룹의 위치 관계를 나타내는 도면이다.
도 13은, 실시형태에 따른, 값 γ과 데이터 및 패리티와의 대응예를 나타내는 도면이다.
도 14는, 실시형태에 따른 제1 데이터 복원 처리를 설명하기 위한 개념도이다.
도 15는, 실시형태에 따른 제1 데이터 복원 처리의 일례를 나타내는 흐름도이다.
도 16은, 실시형태에 따른 제2 데이터 복원 처리를 설명하기 위한 개념도이다.
도 17은, 실시형태에 따른 제2 데이터 복원 처리의 일례를 나타내는 흐름도이다.
(실시형태에 적용 가능한 구성)
이하, 실시형태에 따른 기억 장치에 관해 설명한다. 도 1은, 실시형태에 따른 기억 장치(10)의 일례의 구성을 나타낸다. 기억 장치(10)는, 기억 기능 및 데이터 전송 기능을 갖는 복수의 메모리 노드(11)를 서로 접속한 구성을 구비하고, 데이터 전송 기능은, 각 메모리 노드(11)가 효율적으로 데이터 패킷을 전송하는 전송 방식을 구비한다.
도 1에 있어서, 기억 장치(10)는, 복수의 메모리 노드(11)에 대하여 데이터가 분산되어 저장된다. 도 1의 예에서는, 각 메모리 노드(11)는, 직사각형 격자의 격자점에 배치된다. 격자점의 좌표를 좌표(x, y)로 나타내고, 격자점에 배치되는 메모리 노드(11)의 물리 어드레스는, 상기 격자점의 좌표와 대응하여 물리 어드레스(xD, yD)로 표시되는 것으로 한다. 또, 도 1의 예에서는, 왼쪽 상측 코너에 위치하는 메모리 노드(11)가 원점의 물리 어드레스(0, 0)를 가지며, 각 메모리 노드(11)를 가로방향(X 방향) 및 세로방향(Y 방향)으로 이동시킴으로써, 물리 어드레스가 정수값으로 증감한다.
각 메모리 노드(11)는, 각각 4개의 입력 포트(12) 및 출력 포트(13)를 구비하고, 인접하는 메모리 노드(11)와, 이들 4개의 입력 포트(12) 및 출력 포트(13)를 통해 접속된다. 보다 구체적으로는, 대향하는 2개의 인접하는 메모리 노드(11)는, 서로의 입력 포트(12) 및 출력 포트(13)를 통해 접속된다.
또, 각 메모리 노드(11)는, 2개 이상의 상이한 방향으로 인접하는 메모리 노드(11)와 접속된다. 예컨대, 도 1에 있어서 왼쪽 상측 코너의 물리 어드레스(0, 0)로 표시되는 메모리 노드(11)는, X 방향으로 인접하는 물리 어드레스(1, 0)로 표시되는 메모리 노드(11)와, X 방향과는 상이한 방향인 Y 방향으로 인접하는 물리 어드레스(0, 1)로 표시되는 메모리 노드(11)와 각각 접속된다. 또, 도 1에 있어서 물리 어드레스(1, 1)로 표시되는 메모리 노드(11)는, 서로 다른 4개의 방향으로 인접하는, 물리 어드레스(1, 0), (0, 1), (2,1) 및 (1, 2)로 각각 표시되는 4개의 메모리 노드(11)에 접속된다.
기억 장치(10)는, 패리티의 계산과 데이터 기록ㆍ판독 명령의 발행을 행하는, 적어도 하나의 데이터 컨트롤러(14)를 구비한다. 데이터 컨트롤러(14)는, 입력 포트(12) 및 출력 포트(13)를 통해 메모리 노드(11)에 접속된다. 이 때, 메모리 노드(11)끼리의 통신 규격과 데이터 컨트롤러(14)의 통신 규격이 상이한 경우는, 양자간에 어댑터를 설치해도 좋다. 도 1의 예에서는, 데이터 컨트롤러(14)는, 각 메모리 노드(11)가 배치되는 정방 격자의 x 방향 및 y 방향 각각의 한방향의 각 단부에 각각 접속되어 있다.
각 메모리 노드(11)에 저장하기 위한 데이터는, 예컨대 외부의 호스트 컴퓨터로부터 이 기억 장치(10)에 공급되어, 도시하지 않은 선택 회로에 입력된다. 선택 회로는, 각 데이터 컨트롤러(14)의 상태를 조사하고, 처리에 여유가 있는 데이터 컨트롤러(14)를 선택하여, 상기 데이터를 전송한다.
이와 같이, 실시형태에 따른 기억 장치(10)는, 복수의 데이터 컨트롤러(14)와 복수의 메모리 노드(11)로 구성되어 있기 때문에, 데이터의 입구와 그 사이의 데이터 전송 경로가 복수개 존재하게 되어, 고장 내성에 대하여 유리하다. 즉, 기억 장치(10)는, 메인터넌스시 또는 장애가 발생한 경우라 하더라도, 메인터넌스나 장애 개소 이외의 전송 경로를 이용하는 것이 가능해져, 동작의 완전한 정지가 불필요한 시스템이 실현된다. 또한, 기억 장치(10)는, 메모리 노드(11)나 데이터 컨트롤러(14)와 같은 모듈을 늘리는 것만으로 스케일아웃 특성을 달성할 수 있어, 서버를 늘리는 종래의 방법과 비교하더라도, 시간이 적게 들고 저비용으로 실장 가능하다.
또한, 각 메모리 노드(11)는, 기억 영역으로서 복수의 블록을 포함하고, 각 블록은 복수의 페이지를 포함한다. 메모리 노드(11)에 대한 데이터의 기록은 페이지 단위로 행해진다. 또, 메모리 노드(11)에 대한 데이터의 소거는 블록 단위로 행해진다. 이하에서는, 설명을 위해, 하나의 메모리 노드(11)가 하나의 블록을 포함하고, 하나의 블록이 4개의 페이지를 포함하는 것으로 한다.
또한, 도 1에서는, 각 메모리 노드(11)가 직사각형 격자의 격자점에 배치되도록 나타냈지만, 각 메모리 노드(11)의 배치는 이 예에 한정되지 않는다. 즉, 격자의 형상은, 격자점에 배치되는 각 메모리 노드(11)가 2개 이상의 상이한 방향으로 인접하는 메모리 노드(11)와 접속되면 되고, 예컨대 삼각형, 육각형 등이어도 좋다. 또, 도 1에서는 각 메모리 노드(11)가 2차원적으로 배치되어 있지만, 각 메모리 노드(11)를 3차원적으로 배치해도 상관없다.
도 2는, 실시형태에 따른 메모리 노드(11)의 일례의 구성을 나타낸다. 메모리 노드(11)는, 입력 포트(12) 및 출력 포트(13)에 대응하여, 각각 4개의 입력 포트 버퍼(12A) 및 출력 포트 버퍼(13A)와, 4개의 셀렉터(15)를 가지며, 패킷 컨트롤러(16)와, 메모리(17)와, 메모리 컨트롤러(18)와, MPU(Micro-Processing Unit)(19)을 갖는다.
패킷 컨트롤러(16)와, 메모리 컨트롤러(18)와, MPU(19)와, 각 입력 포트 버퍼(12A)가 로컬 버스(20)에 의해 서로 통신 가능하게 접속된다. 또, 메모리(17)는, 메모리 컨트롤러(18)를 통해 로컬 버스(20)에 접속된다.
각 입력 포트 버퍼(12A)는, 각 입력 포트(12)가 접속된다. 또한, 데이터는, 정해진 사이즈의 패킷을 단위로 하여, 각 메모리 노드(11) 사이에서 전송된다. 패킷은, 송신처 어드레스 및 송신원 어드레스를 적어도 포함하는 헤더부와, 데이터부를 갖는 전송 데이터의 단위이다. 각 출력 포트 버퍼(13A)는 각 출력 포트(13)가 접속된다. 셀렉터(15)는, 각각, 패킷 컨트롤러(16)로부터의 제어 신호에 따라서, 각 입력 포트 버퍼(12A) 및 각 출력 포트 버퍼(13A) 사이의 접속을 제어한다.
이러한 구성에 있어서, 입력 포트(12)에 입력된 패킷은, 입력 포트 버퍼(12A)에 일시적으로 기억된다. 셀렉터(15)는, 입력 포트 버퍼(12A)로부터 패킷이 입력되고, 패킷 컨트롤러(16)로부터 제어 신호가 입력된다. 셀렉터(15)는, 제어 신호에 따라서, 입력된 패킷으로부터 어떤 패킷을 선택하여 출력 포트 버퍼(13A)에 출력한다. 출력 포트 버퍼(13A)는, 셀렉터(15)로부터 출력된 패킷을 일시적으로 기억하고, 출력 포트(13)에 출력한다. 패킷 컨트롤러(16)는, 셀렉터(15)의 출력을 제어한다.
메모리(17)는, 데이터를 기억하는 복수의 메모리셀을 갖는 기억 소자이다. 메모리(17)는, 예컨대 NAND형 플래시 메모리나, 비트 코스트 스케러블 메모리(BiCS), 자기 저항 메모리(MRAM), 상(相)변화 메모리(PcRAM), 저항 변화형 메모리(RRAM(등록상표)) 등을 들 수 있다. 메모리 컨트롤러(18)는, 메모리(17)에 대한 기록, 판독 및 소거의 동작을 제어한다. MPU(19)는, 메모리 노드(11) 내에서 필요한 연산 처리를 행한다. 또, MPU는 범용적인 연산 처리에도 이용 가능하지만, MPU 대신에 특정한 처리에 특화된 전용 하드웨어로 구성해도 상관없다.
메모리 노드(11)가 수신한 패킷은, 입력 포트(12)를 통해 입력 포트 버퍼(12A)에 저장된다. 패킷 컨트롤러(16)는, 패킷이 포함하는 송신처(수신처) 어드레스와, 그 메모리 노드(11) 자신의 어드레스의 2개의 정보에 기초하여, 수신한 패킷이 자신의 메모리 노드(11)를 수신처로 했는지의 여부를 판정한다.
만약, 자신의 메모리 노드(11)를 수신처로 했다고 판정한 경우, 패킷 컨트롤러(16)는, 자신의 메모리 노드(11)의 메모리(17)에 대한 기록, 판독 및 그 밖의 처리 중 지정된 처리를 행한다. 한편, 수신한 패킷이 자신의 메모리 노드(11)를 수신처로 한 것이 아니라고 판정한 경우, 패킷 컨트롤러(16)는, 패킷의 송신처 어드레스의 정보와 자신의 메모리 노드(11)의 어드레스의 정보에 기초하여, 수신한 패킷을 전송하는 인접하는 메모리 노드(11)를 결정하고, 셀렉터(15)에 대하여 제어 신호를 송신한다. 셀렉터(15)는, 이 제어 신호에 따라서, 대응하는 출력 포트 버퍼(13A)에 상기 패킷을 출력한다.
(실시형태에 따른 어드레스 할당 처리)
다음으로, 실시형태에 관해 보다 상세히 설명한다. 우선, 실시형태에 적용 가능한 기존 기술에 관해 개략적으로 설명한다. 복수의 하드 디스크 장치를 구비하는 디스크 어레이 장치에서의 데이터의 분산 저장 방법의 하나로서, 복수의 하드 디스크 장치를 하나의 기억 장치로서 취급함으로써, 액세스 처리의 퍼포먼스나 신뢰성의 향상을 실현하는 RAID(Redundant Array of Independent Disks)라고 불리는 기술이 알려져 있다.
RAID는, 레벨 0∼6의 레벨로 분류되고, 레벨 3∼6에서는, 디스크 고장시에 데이터를 회복하기 위한 용장 정보로서 패리티를 유지한다. RAID는, 디스크 어레이 장치에 있어서, 논리 어드레스에 대응하는 물리 어드레스와 물리 페이지 어드레스를, 복수의 하드 디스크 장치 중으로부터 맵핑함으로써 실현된다.
본 실시형태에서는, 전술한 서로 접속된 복수의 메모리 노드를 구비하는 기억 장치(10)에 있어서, RAID(예컨대 RAID 레벨 5)를 적용한다. 즉, 기억 장치(10)는, 정해진 양의 입력 데이터로부터 패리티를 생성하고, 입력 데이터와 패리티를 복수의 메모리 노드(11)에 대하여 분산시켜 저장한다. 이 때, 기억 장치(10)는, 복수의 메모리 노드(11)를 가상적으로 복수의 그룹으로 분할하고, 분할한 각 그룹에 대하여 입력 데이터와 패리티를 분산시켜 저장한다. 즉, 기억 장치(10)가 구비하는 복수의 메모리 노드(11)는, 각각 정해진 수의 메모리 노드(11)를 구비하는 2개 이상의 그룹을 구성한다.
도 3 및 도 4는, 복수의 메모리 노드(11)를 서로 접속한 기억 장치(10)에 있어서, RAID를 구성하는 메모리 노드(11)를 선택하는 예를 나타낸다. 이하, 메모리 노드(11)의 배열에 있어서, 도면 중에서 X 방향으로 나열되는 메모리 노드(11)의 개수를 값 NX, Y 방향으로 나열되는 메모리 노드(11)의 개수를 값 NY로 한다. 또한, RAID를 구성하는 메모리 노드(11)의 수를 값(NR+1)으로 하여, 선택된 메모리 노드(11)에 분산 노드 번호[ND0∼NDNR]를 정의한다. 이하, 분산 노드 번호(NDn)가 정의된 메모리 노드(11)를, 선택 메모리 노드(NDx)와 같이 기술한다.
이 선택 메모리 노드(NDn)에 있어서, 인덱스 「n」이, 선택된 각 메모리 노드(11)에 일의적으로 부여된 번호이며, 예컨대, 격자의 왼쪽 상측 코너로부터 X 방향으로 증가하고, 격자의 위로부터 아래로 향하여 증가하는 것으로 한다.
또한, RAID를 구성하는 메모리 노드(11)란, 정해진 양의 데이터와, 상기 정해진 양의 데이터로부터 생성되는 패리티가 각각 저장되는 각 메모리 노드(11)를 말한다. 예컨대, 하나의 논리 어드레스(LA : Logical Address)로 표시되는 데이터가 2 이상으로 분할되고, 분할된 데이터 각각을 이용하여 하나의 패리티가 생성된다. 이 분할된 각 데이터와, 상기 데이터로부터 생성된 패리티가, 각각 상이한 메모리 노드(11)에 저장된다.
이하에서는, 설명을 위해, 하나의 논리 어드레스 LA로 표시되는 데이터가, 각각 메모리 노드(11)의 기록 단위(예컨대, 페이지)의 사이즈를 갖는 3개의 데이터로 분할되고, 이 3개의 데이터로부터, 상기 기록 단위의 사이즈를 갖는 패리티가 생성되는 것으로 한다. 즉, 값 NR=3이고, RAID를 구성하는 메모리 노드(11)의 수는 4개가 된다. 또, 하나의 RAID를 구성하는 메모리 노드(11)의 집합을 메모리 노드 그룹이라고 부른다.
도 3 및 도 4는, 값 NR=3인 경우의 메모리 노드(11)의 선택의 예이다. 도 3은, 복수의 메모리 노드(11)를 서로 다른 방향으로 분할하여 4개의 그룹을 형성한 예이다. 보다 구체적으로는, 정방 격자 상에 배열된 복수의 메모리 노드(11)를, X 방향 및 Y 방향으로 각각 2분할하여(이하, 십자 분할이라고 부름), 4개의 그룹(1010, 1011, 1012 및 1013)을 형성한 예이다.
또, 도 4는, 복수의 메모리 노드(11)를 동일한 방향으로 분할하여 4개의 그룹을 형성한 예이다. 보다 구체적으로는, 정방 격자형으로 배열된 복수의 메모리 노드(11)를, X 방향을 향해서 4분할하고, Y 방향으로 4개의 그룹(1020, 1021, 1022 및 1023)을 형성한 예이다.
도 3 및 도 4에 나타낸 바와 같이 각 메모리 노드(11)를 분할한 배열로부터 각각 하나씩 메모리 노드(11)를 선택함으로써, RAID를 구성하는 메모리 노드(11)를 물리적으로 분산시킬 수 있다.
도 3의 예에 있어서, 선택 메모리 노드(ND0)의 물리 어드레스를 어드레스(xD, yD)로 하면, 이 어드레스(xD, yD)가 나타내는 위치의 메모리 노드(11)를 십자 분할된 배열의 왼쪽 상측의 그룹(1010)에서 선택하는 경우, 다음 식(1)의 조건식을 만족하게 된다.
Figure pat00001
또, 이에 따라, 선택 메모리 노드(ND1∼ND3)의 물리 어드레스는, 각각 하기의 식(2), 식(3) 및 식(4)로서 나타낸다.
Figure pat00002
십자 분할의 경우, 이와 같이 선택 메모리 노드(ND0)를 선택함으로써, RAID를 구성하는 메모리 노드 그룹을 일의적으로 결정할 수 있다.
예컨대, 선택 메모리 노드(ND0)로서 메모리 노드(11a0)를 선택한 경우, 전술한 식(2)∼식(4)에 따라서, 메모리 노드(11a0)와, 메모리 노드(11a1, 11a2 및 11a3)에 의해 RAID를 구성하는 메모리 노드(11)의 그룹이 결정된다. 선택 메모리 노드(ND0)로서 메모리 노드(11b)나 메모리 노드(11c)를 선택한 경우도 동일하게 하여, 전술한 식(2)∼식(4)에 따라서, RAID를 구성하는 메모리 노드 그룹이 결정된다.
도 4의 예에 있어서, 선택 메모리 노드(ND0)를 Y 방향으로 4분할된 배열의 최상부의 그룹(1020)에서 선택하는 경우, 다음 식(5)의 조건식을 만족하게 된다.
Figure pat00003
이에 따라, 선택 메모리 노드(ND1∼ND3)의 물리 어드레스는, 각각 하기의 식(6), 식(7) 및 식(8)로서 나타낸다.
Figure pat00004
즉, 이것은 고정수로의 분할이라고 생각되기 때문에, 각각 하기의 식(9), 식(10) 및 식(11)을 계산함으로써 구해진다. 또한, 연산자 「Integer」는 정수 부분을 추출하는 것을 나타내고, 연산자 「%」는 잉여 연산자를 나타낸다.
Figure pat00005
Figure pat00006
Figure pat00007
도 3 및 도 4는, 값 NX 및 값 NY가 같은 값의 짝수이며, 메모리 노드(11)의 배열이 X 방향 및 Y 방향으로 각각 대칭인 경우를 나타내고 있다. 이에 비해, 값 NX와 값 NY가 상이한 경우는, 예컨대 도 3의 십자 분할의 예에서는, 십자와 같이 4분할할 수 없을 가능성이 있다. 이러한 경우는, 메모리 노드(11)의 하나 또는 복수의 행 또는 열을 스페어 디스크로서 이용함으로써, 정보를 기록하는 메모리 노드(11)의 대칭성을 확보할 수 있지만, 용량 효율 저하의 우려가 있어, 적용의 가능성에 제한이 생긴다.
한편, 복수의 메모리 노드(11)의 한방향으로의 분할(도 4 참조) 또는 고정수로의 분할은, 메모리 노드(11)의 배열이 비대칭인 경우에, 유연한 대응이 가능하다. 그러나, 배열 규모와 RAID를 구성하는 메모리 노드(11)의 수의 조합에 따라서는, 도 4에 예시되는 바와 같이, 하나의 메모리 노드 그룹에 속하는 각 메모리 노드(11)가 특정한 열에 치우치게 되는 경우가 발생한다. 메모리 노드 그룹과 같이, 일련의 데이터의 판독 또는 기록을 행하는 복수의 메모리 노드(11)가 1열 또는 1행에 많이 배치될수록, 데이터 전송시에 전송 데이터가 정체를 일으킬 가능성이 높아진다.
각 메모리 노드(11)에 대한 물리 어드레스 맵핑의 방법으로는, 도 3과 같이 상이한 방향으로 분할하는 방법과, 도 4와 같이 한방향으로 분할하는 방법 모두 생각할 수 있다. 어떤 방법을 선택할지는, 전술한 바와 같은, 용량 효율 저하나 정체 발생 가능성 등의 영향을 고려하여 결정하는 것이 바람직하다. 이하에서는, 도 3에 나타내는, 각 메모리 노드(11)의 물리 어드레스 맵핑을, 배열의 십자 분할에 의해 행하는 것으로 하여 설명한다.
다음으로, 실시형태에 따른, 각 메모리 노드(11)에 대한 물리 어드레스 맵핑 방법에 관해 보다 상세히 설명한다. 도 5 및 도 6은, 이하의 설명에서 이용하는 메모리 노드(11)의 구성과 데이터 구성을 개략적으로 나타낸다.
도 5는, 메모리 노드(11)의 구성을 개략적으로 나타낸다. 전술한 바와 같이, 메모리 노드(11)는, 데이터의 소거 단위인 블록을 복수개 포함하고, 블록은, 데이터의 기록 단위에 대응하는 기억 영역인 페이지를 복수개 포함한다. 이하에서는, 도 5에 예시되는 바와 같이, 메모리 노드(11)는, 각각 페이지 어드레스 #0, #1, #2 및 #3으로 표시되는 페이지 Page #0, #1, #2 및 #3을 갖는 하나의 블록을 포함하는 것으로 한다. 또, 기억 장치(10)는, X 방향으로 4개, Y 방향으로 4개의 합계 16의 메모리 노드(11)를 가지며, 값 NX=값 NY=4로 배열을 형성하고, 16개의 메모리 노드(11)가 각각 4개의 메모리 노드(11)를 포함하는 4개의 그룹에 가상적으로 분할되는 것으로 한다. 이러한 구성에 있어서, 각 메모리 노드(11)에 대하여, 각 데이터와, 데이터로부터 생성된 패리티를 분산시켜 저장하는 경우를 생각한다.
도 6은, 메모리 노드(11)에 기록되는 데이터의 구성예를 개략적으로 나타낸다. 데이터(30)는, 호스트 컴퓨터 장치 등의 상위 장치로부터 기억 장치(10)에 전송되는 데이터의 예를 나타낸다. 각 데이터는, 논리 어드레스 LA가 지정되어, 상위 장치로부터 기억 장치(10)에 전송된다. 각 데이터는, 기억 장치(10)에 전송되면, 도시하지 않은 선택 회로를 통해 어느 데이터 컨트롤러(14)에 입력된다. 데이터 컨트롤러(14)는, 입력된 데이터에 기초하여 패리티(31)를 생성한다.
이 예에서는, 데이터 컨트롤러(14)는, 하나의 논리 어드레스 LA로 표시되는 데이터(30)를 각각 페이지의 사이즈와 같은 사이즈의 3개의 데이터로 분할하고, 이 3분할된 데이터로부터, 마찬가지로 페이지의 사이즈와 같은 하나의 패리티(31)를 생성하고 있다. 하나의 논리 어드레스 LA가 나타내는 데이터(30)와, 상기 데이터(30)에 대응하는 패리티(31)로 메모리 노드 그룹이 형성된다.
도 7은, 하나의 메모리 노드 그룹의 페이지가 메워질 때까지 기록을 계속하는 시퀀셜 기록의 예를 나타낸다. 즉, 시퀀셜 기록에 있어서는, 하나의 메모리 노드 그룹의 데이터 또는 패리티가 기록된 메모리 노드(11)의 페이지에 대하여, 상기 페이지가 메워질 때까지, 다른 메모리 노드 그룹의 데이터 및 패리티를 기록한다.
도 7에 있어서, 복수의 메모리 노드(11)가 4개의 그룹(1030, 1031, 1032 및 1033)으로 분할된다. 이 예에서는, 각 그룹(1030∼1033)에 있어서, 왼쪽 상측의 메모리 노드(11)의 각 페이지에 대하여, 논리 어드레스 LA=0∼3인 데이터 및 상기 데이터에 대응하는 패리티(P0∼P3)가 기록되어 있다.
이 시퀀셜 기록에서는, 예컨대 HDD(Hard Disk Drive)로 구성된 스토리지 장치의 연속된 논리 어드레스 LA의 데이터 판독(시퀀셜 판독)에 있어서, 헤드의 시크 타임 단축에 의한 판독 시간의 고속화를 기대할 수 있다.
도 8은, 각 그룹(1030∼1033)에 있어서, 하나의 페이지에 데이터 또는 패리티를 기록할 때마다 메모리 노드 그룹을 변경한다. 즉, 도 8에 나타내는 방법에서는, 데이터 또는 패리티를 하나의 페이지에 기록할 때마다, 그룹(1030∼1033)을 순차적으로 변경하고 있다. 또, 각 그룹(1030∼1033) 내에 있어서, 데이터 또는 패리티를 페이지에 기록하는 메모리 노드(11)를 순차적으로 변경하고 있다. 이 도 8에 나타내는 기록 방법을 사이클릭 기록이라고 부른다.
도 8에 예시되는 사이클릭 기록에서는, 논리 어드레스 LA=0인 데이터에 관해, 분할한 각 데이터와 패리티를, 각 그룹(1030∼1033)의 왼쪽 상측의 메모리 노드(11)의 페이지 Page#0에 순차적으로 기록한다. 다음으로, 논리 어드레스 LA=1인 데이터에 관해, 분할한 각 데이터와 패리티를, 각 그룹(1030∼1033) 내에서 기록처의 메모리 노드(11)를 오른쪽 상측의 메모리 노드(11)로 전환하여, 페이지 Page#0에 순차적으로 기록한다. 그리고, 논리 어드레스 LA=2, 논리 어드레스 LA=3인 각 분할 데이터 및 패리티가, 그룹(1030∼1033)이 순차적으로 변경되고, 각 그룹(1030∼1033) 내에서 기록처의 메모리 노드(11)가 순차적으로 변경되어, 페이지 Page#0에 순차적으로 기록된다. 이하, 각 메모리 노드(11)의 동일 페이지가 모두 기록었다면, 페이지 어드레스가 전환된다. 즉, 논리 어드레스 LA=4인 각 분할 데이터 및 패리티를, 각 그룹(1030∼1033)의 왼쪽 상측의 메모리 노드(11)의 페이지 Page#1에 순차적으로 기록한다.
이 사이클릭 기록에서는, 예컨대 SSD(Solid State Drive)로 구성된 스토리지 장치에 있어서, 시퀀셜 판독시라도, 각 메모리 노드(11)에 대한 병렬 액세스에 의해 액세스 집중이 억제되어, 판독의 고효율화를 기대할 수 있다.
각 메모리 노드(11)에 대한 물리 어드레스 맵핑의 방법은, 전술한 것에 한정되지 않는다. 예컨대, 하나의 메모리 노드(11)의 전체 페이지가 아닌 복수 페이지를 기록할 때마다, 메모리 노드 그룹을 변경하는 방법을 생각할 수 있다. 이 방법은, 전술한 시퀀셜 기록과 사이클릭 기록을 융합시킨 방법이 된다. 어떤 방법을 이용하여 물리 어드레스 맵핑을 행할지는, 기억 장치(10)의 구성이나 사용 환경 등을 고려하여 선택하는 것이 바람직하다. 이하에서는, 사이클릭 기록을 채택한 경우에 관해 설명한다.
도 9 및 전술한 도 8을 이용하여, RAID를 구성하는 메모리 노드 그룹 내에서 패리티(P0∼P15)를 저장하는 메모리 노드(11)를 선택하는 방법에 관해 설명한다. 실시형태에서는, 논리 어드레스 LA가 서로 인접하는 데이터로부터 생성된 각 패리티의 기록처를, 상이한 메모리 노드(11)에 할당하도록 하고 있다.
도 9는, 메모리 노드 그룹이 변경되었을 때, 패리티를 저장하는 메모리 노드(11)의 분산 노드 번호를 변경하는 예를 나타낸다. 도 9에 있어서, 동일한 메모리 노드 그룹의 기록이 이루어진 페이지에 동일한 사선을 부여하여 나타낸다. 도 9의 예에서는, 패리티(P0)를 포함하는 메모리 노드 그룹에 관해, 패리티(P0)가, 선택 메모리 노드(ND0)의 분산 노드 번호에 따라서 그룹(1030)에 기록된다. 다음 패리티(P1)를 포함하는 메모리 노드 그룹에 관해, 패리티(P1)가, 선택 메모리 노드(ND1)의 분산 노드 번호에 따라서 그룹(1031)에 기록된다. 다음 패리티(P2)를 포함하는 메모리 노드 그룹에 관해, 패리티(P2)가, 선택 메모리 노드(ND2)의 분산 노드 번호에 따라서 그룹(1032)에 기록된다. 또한 다음 패리티(P3)를 포함하는 메모리 노드 그룹에 관해, 패리티(P3)가, 선택 메모리 노드(ND3)의 분산 노드 번호에 따라서 그룹(1033)에 기록된다.
이 방식에서는, 메모리 노드 그룹 내에서 패리티를 저장하는 메모리 노드(11)가 항상 동일해진다. 단, 동일한 메모리 노드(11)에 모든 패리티를 기록하는 것은 아니기 때문에, RAID 레벨 4와 같은 성능 열화의 문제는 발생하기 어렵다. 한편, 데이터 갱신이 많은 경우는, 패리티 갱신을 위해 패리티를 저장하는 메모리 노드(11)에 대한 기록이 빈발한다. 그 때문에, 액세스의 집중에 의해 처리 성능이 열화할 가능성이 있다. 또한, 기록 횟수가 제한되는 NAND 플래시와 같은 메모리로 구성된 경우, 패리티를 저장하고 있는 메모리 노드(11)가 먼저 수명이 다하여, 시스템으로서 메모리 노드(11)의 교환까지의 운용 기간이 짧다는 문제가 발생할 수 있다.
패리티를 저장하는 메모리 노드(11)의 분산 노드 번호를 「ND γ」로 하면, 인덱스 γ는, γ=LA%(NR+1)=LA%4로서 선택할 수 있다.
전술한 도 8은, 모든 메모리 노드 그룹이 각 메모리 노드(11)의 동일 페이지에 기록되고, 페이지 어드레스가 전환된 경우에, 패리티를 저장하는 메모리 노드(11)의 분산 노드 번호를 변경하는 예를 나타낸다. 바꾸어 말하면, 도 8에 나타내는 방법에서는, 각 메모리 노드(11)의 동일 페이지, 즉, 서로 위치가 대응하는 기억 영역에 대한 모든 메모리 노드 그룹의 데이터의 할당이 일주한 경우에, 패리티의 기록처의 그룹을 전환한다.
도 8의 예에서는, 패리티(P0, P1, P2 및 P3)를 각각 포함하는 각 메모리 노드 그룹의 각 패리티(P0, P1, P2 및 P3)가, 선택 메모리 노드(ND0)의 분산 노드 번호에 따라서 그룹(1030)에 기록된다. 상기 메모리 노드 그룹의 기록이 완료하면, 각 메모리 노드(11)의 페이지 어드레스 Page#0의 페이지 모두에 기록이 이루어졌기 때문에, 다음부터의 기록은, 페이지 어드레스를 전환하여 행해진다. 다음 패리티(P4, P5, P6 및 P7)를 포함하는 각 메모리 노드 그룹의 각 패리티(P4, P5, P6 및 P7)가, 선택 메모리 노드(ND1)의 분산 노드 번호에 따라서 그룹(1031)에 기록된다. 이와 같이, 각 메모리 노드(11)의 동일 페이지 어드레스의 페이지 모두에 기록이 이루어져, 페이지 어드레스의 전환이 이루어진 경우에, 패리티를 기록하는 메모리 노드(11)의 분산 노드 번호를 전환한다.
이 방식에서는, 시퀀셜 판독에 있어서, 페이지 어드레스가 변할 때까지, 패리티를 저장하는 메모리 노드(11) 이외의 영역에 액세스가 치우치게 된다. 한편, 이 방식에서는, 패리티를 저장하는 메모리 노드(11)가 분산된다. 즉, 갱신이 많은 경우라도, 패리티의 기록 작업이 메모리 노드 전체에 분산되게 된다. 따라서, 이 도 8에 나타내는 방식이라면, 수명이 있는 메모리로 구성된 시스템이라 하더라도, 도 9의 방식과 비교하여 유리하다.
패리티를 저장하기 위한 선택 메모리 노드(ND γ)는, 하기의 식(12)에 의해 결정된다.
Figure pat00008
도 8 및 도 9에서 나타낸 패리티를 저장하는 메모리 노드(11)의 선택 방법은, 기억 장치(10)를 포함하는 스토리지 장치의 구성이나, 데이터의 판독 방식을 고려하여 선택하는 것이 바람직하다.
이하에서는, 도 8에 나타낸, 사이클릭 기록에 의해 패리티를 저장하는 메모리 노드가 분산되어 있는 경우에 관해 설명한다.
도 10은, 사이클릭 기록 방식에 있어서, 논리 어드레스 LA로부터 메모리 노드(11)의 물리 어드레스(x, y)와 페이지 어드레스 P를 결정하는 예를 나타낸다. 도 11은, 도 10에 나타내는 물리 어드레스(x, y)의 증가 방향을 나타낸다. 도 11의 예에서는, 값 NX=12, 값 NY=12로 하여 배치된 각 메모리 노드(11)가 십자 분할되고, 그룹(1040, 1041, 1042 및 1043)이 형성되어 있다. 예컨대 그룹(1040)에 있어서, 물리 어드레스(x, y)는, X 방향으로 메모리 노드(11)마다 증가하고, Y 방향으로 메모리 노드(11)마다 증가한다.
RAID를 구성하는 메모리 노드 그룹을 결정하는 선택 메모리 노드(ND0∼ND3)는, 선택 메모리 노드(ND0)의 물리 어드레스(xD, yD)로부터 일의적으로 결정할 수 있기 때문에, 선택 메모리 노드(ND0)에 관해서만 의론하는 것으로 충분하다. 또한, 각 선택 메모리 노드(ND0∼ND3)는, 각각 각 그룹(1040, 1041, 1042 및 1043)에 포함된다.
도 10에서, 물리 어드레스(xD, yD)에서의 값 xD는, [0, 1, 2, …, (NX/2)-1]을 반복하기 때문에, xD=LA%(NX/2)로서 구해진다. 값 yD는, [0, 1, 2, …, (NX/2)-1]을 각각 (NX/2)회 반복하기 때문에, 다음 식(13)에 의해 구해진다. 또, 페이지 어드레스 P는, 논리 어드레스 LA가 값(NXNY/4) 증가할 때마다 1 증가하기 때문에, 다음 식(14)에 의해 구해진다.
Figure pat00009
Figure pat00010
도 12는, 값 NX 및 값 NY가 2의 제곱, 값(NR+1)이 4의 제곱이라고 가정한 경우의 메모리 노드 그룹의 위치 관계를 나타낸다. 이 때, 선택 메모리 노드(ND0)의 물리 어드레스는, 다음 식(15)에 나타내는 범위 내에 존재한다. 또한, 도 12에 있어서, 분산 노드 번호를 「Num」, 물리 어드레스를 「PA」로서 나타내고 있다.
Figure pat00011
또한, 도 12에서의 각 값을 일반화하면, 값 α 및 값 β를 각각 식(16) 및 식(17)에 나타내는 범위의 정수값으로 하면, 분산 노드 번호 「NDn」의 인덱스 「n」이 n=(α+1)(β+1)-1이 되고, 물리 어드레스는 다음 식(18)로 표시된다.
Figure pat00012
논리 어드레스 LA에 따라서 메모리 노드 그룹 중에서 패리티 저장용 메모리 노드(11)의 분산 노드 번호 「ND γ」를 선택하기 위한 일반식은, 식(19)로서 구해진다. 또, 논리 어드레스 LA로부터 메모리 노드의 물리 어드레스(xD, yD)와 페이지 어드레스 P를 결정하는 일반식은, 각각 식(20), 식(21) 및 식(22)로서 나타낸다.
Figure pat00013
Figure pat00014
Figure pat00015
Figure pat00016
다음으로, 값 NR=3인 경우에 있어서, 어떤 논리 어드레스 LA에 데이터 D를 기록하는 경우의 기록 명령이 예를 나타낸다. 데이터 D는, 기록되는 단위(예컨대, 페이지)의 사이즈로 분할된다. 여기서는, 데이터 D는, 값 NR에 따라서 데이터 d1, d2 및 d3로 3분할된다. 또한, 이들 데이터 d1, d2 및 d3의 배타적 논리합으로부터, 패리티 p를 생성한다.
도 13은, 패리티 p를 저장하는 메모리 노드(11)의 분산 노드 번호 「NDn」을 판정하기 위한 값 γ과, 데이터 d1∼d3 및 패리티 p와의 대응예를 나타낸다. 여기서, 변수 a, b, c 및 d는, 각 데이터를 저장하기 위한 변수이다.
이상의 결과를 이용하여, 논리 어드레스 LA의 데이터 D를 기억 장치(10)의 각 메모리 노드(11)에 기록하기 위한 기록 명령 Write는, 예컨대 다음 식(23)∼(26)과 같이 나타낸다.
Write[xD(LA), yD(LA), ND0, γ(LA), P(LA), a]…(23)
Write[xD(LA), yD(LA), ND1, γ(LA), P(LA), b]…(24)
Write[xD(LA), yD(LA), ND2, γ(LA), P(LA), c]…(25)
Write[xD(LA), yD(LA), ND3, γ(LA), P(LA), d]…(26)
또한, 식(23)∼식(26)에 있어서, 값 γ은, 패리티 담당을 판정하기 위해서 도출한 값이기 때문에, 패킷으로서 송신하지 않아도 좋다.
기록시에는, 기록시의 기록 명령 Write에 대한 메모리 노드(11)로부터의 응답인 메시지 Reply를 데이터 컨트롤러(14)가 수신한 횟수의 카운트와, 타임아웃 감시에 의한 고장 판정을 행하는 것이 바람직하다.
예컨대, 전술한 바와 같이 RAID가 3개의 데이터 d1∼d3과, 하나의 패리티 p의 4개의 데이터로 구성되는 경우, 하나의 기록 명령 Write에 대한 메시지 Reply의, 타임아웃 기간 내에서의 수신 횟수의 카운트치가 4인 경우는, 기록이 정상적으로 행해졌다고 판정할 수 있다.
한편, 타임아웃시에 메시지 Reply의 수신 횟수의 카운트치가 3인 경우는, RAID를 구성하는 4개의 데이터 중 하나의 데이터의 기록이 정상적으로 행해지지 않았다고 판정할 수 있다. 기록이 정상적으로 행해지지 않은 요인으로는, 우선, 기록하고자 하는 메모리 노드(11)의 물리적인 위치 관계나, 정체에 의해 수명이 다하는 것 등을 생각할 수 있다.
이러한 요인의 경우는, 동일한 메모리 노드(11)에 대하여 각 데이터의 재기록을 시도하여, 상기 메모리 노드(11)로부터의 메시지 Reply를 수신했는지의 여부를 확인한다. 이 때, 기록 명령 Write를 발행한 데이터 컨트롤러(14)와 상기 메모리 노드(11)의 경로 도중에 물리적 단선이나 노드 이상이 존재하는 경우도 생각할 수 있다. 그 때문에, 데이터의 재기록에서는, 기록 명령 Write를 발행하는 데이터 컨트롤러(14)의 위치나, 상기 메모리 노드(11)에 대한 데이터 경로의 방향을 바꾸는 것이 바람직하다.
만약, 데이터의 재기록에 대하여 하나의 메시지 Reply가 돌아오지 않는 경우는, RAID에 의한 회복으로 데이터의 판독은 가능하다. 이 경우는, 에러 통지를 행하여, 어떤 메모리 노드(11)가 고장 가능성이 있는지를 출력함으로써 신속한 리빌드로 이어지는 시스템이 바람직하다. 또한, 스페어의 메모리 노드(11)를 설치하면, 데이터를 그 영역에 기록하여 후퇴시켜 놓음으로써 보다 신뢰성을 높일 수 있다. 이것에 한정되지 않고, 새로운 논리 어드레스 LA에 대하여 다시 기록 명령 Write를 발행하는 것도 유효하다.
또, 논리 어드레스 LA의 데이터 D를 기억 장치(10)의 각 메모리 노드(11)로부터 판독하기 위한 판독 명령 Read는, 예컨대 다음 식(27)∼(30)과 같이 나타낸다. 또한, 판독 명령 Read에 있어서는, 데이터 저장용 변수 a∼d를 생략할 수 있다.
Read[xD(LA), yD(LA), ND0, γ(LA), P(LA), a]…(27)
Read[xD(LA), yD(LA), ND1, γ(LA), P(LA), b]…(28)
Read[xD(LA), yD(LA), ND2, γ(LA), P(LA), c]…(29)
Read[xD(LA), yD(LA), ND3, γ(LA), P(LA), d]…(30)
또한, 식(27)∼식(30)에 있어서, 값 γ은 패리티 담당을 판정하기 위해서 도출한 값이기 때문에, 패킷으로서 송신하지 않아도 좋다. 또, 변수 a, b, c 및 d는, 판독한 데이터나 패리티를 저장하는 것이기 때문에, 패킷으로서 송신하지 않아도 좋다.
판독에 있어서도, 기록시와 마찬가지로, 타임아웃 감시에 의한 고장 판정이 있으면 바람직하다.
또한, 판독은, 데이터 d1, d2 및 d3만을 판독하는 제1 판독 방법과, 데이터 d1, d2 및 d3과 패리티 p를 판독하는 제2 판독 방법을 생각할 수 있다.
제1 판독 방법에서는, 패리티 판독용 패킷 전송이 불필요해지기 때문에, 정체 발생률이 낮아져 작업 처리량이 향상될 가능성을 생각할 수 있다. 그러나, 하나의 데이터가 판독되지 않았다고 알게 된 시점에서 비로소 패리티의 판독 명령을 실행하기 때문에, 고장시의 판독에는 쓸데없이 시간이 걸려 버릴 가능성도 생각할 수 있다.
한편, 제2 판독 방법에서는, 패리티 p를 판독하는 패킷이 제1 판독 방법에 대하여 추가되어 지므로, 제1 판독 방법보다 데이터의 정체 발생률이 높아질 우려가 있다. 또, 하나의 데이터가 판독되지 않은 것을 알게 된 시점에서, 이미 패리티 p의 판독 명령이 병렬로 실행되어 있어, RAID에 의한 데이터 회복을 신속하게 실행하는 것이 가능해지는 것도 생각할 수 있다. 또한, 패리티 p를, 동일한 메모리 노드 그룹의 다른 데이터 d1∼d3 중 어느 하나보다 먼저 판독할 수 있는 경우에는, 메모리 노드 그룹 내에서 판독이 끝난 다른 2개의 데이터를 이용하여, 아직 판독되지 않은 데이터를 계산하여 상기 데이터를 판독했다고 간주하는 것도 생각할 수 있다. 또한, 메모리 노드 그룹의 모든 데이터 d1∼d3 및 패리티 p가 데이터 컨트롤러(14)에 도착할 때까지 대기하고, 패리티 p를 이용하여 데이터 정합성의 체크를 행하고 나서, 판독된 데이터 d1∼d3을 출력함으로써 신뢰성을 높이는 것도 가능하다.
이러한 방법은, 사용자가 속도를 중시하는 것인지, 안전을 중시하는 것인지에 기초하여 선택하는 것이 바람직하다.
(실시형태에 적용 가능한 고장 처리)
다음으로, 실시형태에 의한 기억 장치(10)에 적용 가능한 고장 검지 및 데이터 복원에 관해 설명한다. 기억 장치(10)에서의 메모리 노드(11)의 고장 판정은, 데이터 컨트롤러(14)가, 메모리 노드(11)에 액세스했을 때의 메시지 Reply의 수신 횟수의 카운트와, 데이터 오류에 의한 반전 비트의 정정 횟수의 카운트를 행함으로써 실현할 수 있다. 예컨대, 이들 각 카운트치에 각각 임계치를 설정하여, 적어도 한쪽의 카운트치가 대응하는 임계치를 넘은 경우에, 그 메모리 노드(11)에 관한 데이터 전송이 이상이 있다고 판정한다.
도 1에 예시한 기억 장치(10)는, 각 메모리 노드(11)가 4방향의 경로를 갖기 때문에, 목적으로 하는 메모리 노드(11)의 하나의 경로가 단선되었다 하더라도, 다른 경로를 통해 목적으로 하는 메모리 노드(11)에 액세스할 수 있다. 그리고 처리가 완료하면, 그 신호로서 메시지 Reply를 응답한다. RAID로 분할한 데이터에 대한 기록ㆍ판독 처리를 행한 경우는, RAID를 구성하는 메모리 노드(11)로부터 메시지 Reply가 되돌아오면, 모든 처리가 성공한 것을 확인할 수 있다. 단, 액세스 정체가 발생한 경우나 4방향의 경로가 모두 단선된 경우는, 수명이 끊어지는 것에 의해 패킷이 꺼져 버리기 때문에, 메시지 Reply를 수취할 수 없다. 이러한 경우는, 메시지 Reply의 횟수를 세는 것으로 시스템의 상태를 확인할 수 있기 때문에, 고장 등의 문제에 즉시 대응할 수 있다.
또, 메모리 노드(11)는, 도시하지 않은 비지(busy) 전송 선로와 에러(error) 전송 선로를 갖고 있어도 상관없다. 이에 따라 인접하는 메모리 노드(11)의 상태를 검지할 수 있다.
입력 포트 버퍼(12A)가 사용중인 경우, 사용중인 입력 포트 버퍼(12A)에 접속되어 있는 메모리 노드(11)는, 패킷을 송신할 수 없다. 따라서, 사용중인 입력 포트 버퍼(12A)에 접속되어 있는 메모리 노드(11)에 대하여 비지 전송 선로를 통해 비지 신호를 보내어, 패킷 수신할 수 없는 상태(비지 상태)인 것을 통지한다.
또한, 경로 이상이나 물리 어드레스 부정합, 메모리(17)에 대한 액세스 불능 상태(에러 상태)가 된 경우에는, 인접하는 모든 메모리 노드(11)에 대하여 에러 전송 선로를 통해 에러 신호를 보내어, 에러 상태를 통지할 수 있다. 단, 단선 등의 경로 이상의 경우는, 경로 이상이 발생한 선로에만 에러 상태를 통지해도 좋다.
예컨대, 라우팅에 있어서, 경로 도중의 메모리 노드(11)가 패킷을 수신했을 때, 비지 상태 혹은 에러 상태를 발신하고 있는 메모리 노드(11)에 대하여 패킷을 송신하지 않도록 함으로써, 그 노드를 우회하여 목적으로 하는 메모리 노드(11)에 도달할 수 있다.
만약에 목적으로 하는 메모리 노드(11)의 비지 상태를 검지한 경우는, 비지 신호가 꺼질 때까지 패킷을 유지해 두는 것이 가능하다. 한편, 목적으로 하는 메모리 노드(11)의 에러 신호를 검지한 경우는, 클라이언트 장치에 에러 상태를 통지함으로써 신속하게 대응할 수 있다.
그런데, 판독된 데이터에 포함되는 오류 비트수가 많을수록, 메모리 노드(11)가 데이터를 정확하게 유지할 수 없게 되므로, 오류 비트수가 많은 것은, 상기 메모리 노드(11)가 고장이 낫다고 판정하기에 충분한 이유라고 생각할 수 있다.
또, 일반적으로, 기억 매체에 대한 데이터 기록시에는, 기록되는 데이터에 기초하여 생성된 에러 정정 부호가, 상기 데이터와 함께 기억 매체에 기록된다. 그리고, 판독시에, 판독된 데이터에 대하여 에러 정정 부호를 이용하여 에러 정정을 행한다. 이 때, 에러 정정을 행한 정정 비트의 수를 검출하여 출력할 수 있다. 이 정정 비트수가 오류 비트수에 해당한다. 또한, 판독된 데이터에, 에러 정정 부호에 의한 에러 정정 능력을 초과한 에러가 포함되는 경우, 에러 정정이 행해지지 않는다. 기억 장치(10)에 있어서는, 각 메모리 노드(11) 내의 MPU(19), 혹은 전용 하드웨어가 에러 정정 처리를 행한다.
판독된 데이터의 오류 비트수를 카운트하는 방법으로서, 데이터 컨트롤러(14)가 메모리 노드(11)로부터 수취한 데이터의 정정 비트수를 카운트하는 제1 카운트 방법과, 메모리 노드(11)가, 에러 정정 결과에 기초한 불량 비트 정보(정정 비트수 정보)를, 판독한 데이터에 부가하여 데이터 컨트롤러(14)에 응답하는 제2 카운트 방법을 생각할 수 있다.
모든 카운트 방법에서, 데이터 컨트롤러(14)에 의한 처리가 필요해진다. 여기서, 제2 카운트 방법은, 복수의 메모리 노드(11)에 있어서 분산 처리가 이루어지게 되고, 데이터 컨트롤러(14)의 처리가 경감된다. 따라서, 데이터 컨트롤러(14) 자체가 보틀넥이 될 우려를 저감시킬 수 있다.
구체적인 고장 검지 방법으로는, 예컨대, 정정하는 비트수에 임계치를 설정해 두고, 데이터 컨트롤러(14)는, 어떤 메모리 노드(11)에서의 정정 비트수가 임계치에 도달 또는 초과하는 경우에, 상기 메모리 노드(11)가 고장의 가능성이 있다고 하여 에러 통지하면 된다. 이 경우에, 데이터 자체는 판독할 수 있기 때문에, 상기 메모리 노드(11)의 고장이 확정된 것은 아니지만, 고장날 가능성이 높은 메모리 노드(11)를 파악할 수 있기 때문에, 고장시에는 신속한 대응을 할 수 있을 가능성이 높아진다.
또, 정정 비트수에 대한 임계치를 복수 설정함으로써, 고장 가능성에 우선도를 부가할 수 있기 때문에, 보다 효율적인 운용이 가능해진다고 생각할 수 있다. 이 경우, 이 시스템을 관리하기 위한 데이터도 증가하기 때문에, 처리 부하가 커질 가능성이 있다. 또, 고장 예지된 시점에서 메모리 노드(11)를 교환함으로써, 기억 장치(10)에 대하여, 보다 신뢰성을 확보할 수 있다고 생각되지만, 비용도 증대된다. 사용자의 요구에 따라서 이들을 고려한 후에, 정정 비트수에 대한 임계치나 임계치수를 설정하는 것이 바람직하다.
다음으로, 메모리 노드(11)에 저장되는 데이터를 복원하는 데이터 복원 처리에 관해, 보다 구체적으로 설명한다. 또한, 메모리 노드(11)에 대한 데이터 복원 처리가 필요한 경우란, 예컨대, 어떤 메모리 노드(11)가 고장 검지된 경우나, 메인터넌스 등으로 메모리 노드(11)를 교환하는 경우이다. 여기서 말하는 메모리 노드(11)의 교환은, 기억 장치(10)에 삽입된 메모리 노드(11)를 사용자가 제거하고, 제거한 장소에 새로운 메모리 노드(11)를 부착하는 것을 말한다. 교환전과 교환후에서, 메모리 노드(11)의 물리 어드레스는 변화하지 않는다.
도 14는, 제1 데이터 복원 처리를 설명하기 위한 개념도이다. 제1 데이터 복원 처리에서는, 각각 메모리 노드(11)에 해당하는 3개의 메모리 노드 A, B 및 C로 RAID를 구성한다. 도 14에 있어서, 컨트롤러(100)는, 도 1에서의 데이터 컨트롤러(14)에 대응하는 것이며, 각 메모리 노드 A, B 및 C에 대한 데이터의 기록ㆍ판독이나 각종 커맨드의 발행, 패리티 연산 등을 행한다. 버퍼(101)는, 컨트롤러(100)가 데이터를 일시적으로 기억하기 위해 이용된다. 또, 도 15는, 제1 데이터 복원 처리의 일례를 나타내는 흐름도이다. 메모리 노드 A, B 및 C는, 각각 데이터 a, b 및 c가 저장되어 있고, 어느 것(예컨대, 데이터 c)이 패리티인 것으로 한다.
이하에서는, 메모리 노드 B에 관해 고장의 검지 또는 교환이 행해지고, 메모리 노드 B에 저장되는 데이터 b를 복원하는 경우를 예를 들어 설명한다(도 14의 (a) 참조). 도 15의 흐름도에 있어서, 단계 S100에서 메모리 노드 B의 고장 검지 또는 메모리 노드 B의 교환 신호가 통지된 경우, 상기 메모리 노드 B는 교환의 대기 상태로 이행한다. 다음 단계 S101에서, 상기 메모리 노드 B가 새로운 메모리 노드 B'로 교환된다. 이 시점에서는, 메모리 노드 B'는 비어 있고, 아무런 데이터도 저장되어 있지 않다(도 14의 (b) 참조).
메모리 노드 B가 메모리 노드 B'로 교환된 것이 확인되면, 컨트롤러(100)로부터 메모리 노드 B'에 대하여 커맨드 Info가 송신된다(단계 S102). 이 커맨드 Info는, 목적 메모리 노드의 정보를 돌려주는 커맨드이며, 컨트롤러(100)로부터 송신처까지 데이터가 도달했는지의 여부를 확인할 수 있다. 단계 S102에 의한 커맨드 Info의 송신은, 예컨대, 사용자에 의해 기억 장치(10)의 도시하지 않은 조작부나, 기억 장치(10)에 접속되는 상위 장치가 조작되는 것에 의해 실행된다.
다음 단계 S103에서, 컨트롤러(100)는, 단계 S102에서 송신한 커맨드 Info에 대한 메시지 Reply가 수신되었는지의 여부를 판정한다. 만약, 메시지 Reply를 수신했다고 판정한 경우, 경로 이상이 없고, 메모리 노드 B로부터 메모리 노드 B'로의 교환이 정상적으로 완료되었다고 판정할 수 있다. 이 경우, 처리가 단계 S104로 이행되고, 컨트롤러(100)는, 교환전의 메모리 노드 B에 대하여 RAID가 구성되는 다른 메모리 노드 A 및 C에 저장되는 데이터 a 및 c를 판독한다.
다음 단계 S105에서, 컨트롤러(100)는, 단계 S104에서 메모리 노드 A 및 C로부터 판독된 데이터 a 및 c를 이용하여 연산을 행하여, 데이터 b를 복원한다(도 14의 (c) 참조). 복원된 데이터 b는, 일시적으로 버퍼(101)에 저장된다.
다음 단계 S106에서, 컨트롤러(100)는, 복원된 데이터 b를 버퍼(101)로부터 판독하여, 교환후의 메모리 노드 B'에 기록한다(도 14의 (d) 참조). 교환후의 메모리 노드 B'의 물리 어드레스는, 교환전의 메모리 노드 B의 물리 어드레스와 같기 때문에, 교환후의 메모리 노드 B'에 대한 액세스는, 교환전의 메모리 노드 B에 대한 액세스와 동일하게 하여 행해진다. 이에 따라, 메모리 노드 B의 교환에 따르는 데이터 b의 복원이 완료되고, 도 15의 흐름도에 의한 일련의 처리가 종료된다.
한편, 단계 S103에서, 메시지 Reply가 수신되지 않았다고 판정된 경우, 처리가 단계 S107로 이행되고, 컨트롤러(100)와 메모리 노드 B' 사이의 경로에, 단선 등의 경로 이상이 발생했을 가능성이 있게 된다. 이 경우, 경로 이상이 아니라, 교환된 메모리 노드 B'가 고장이 났을 가능성도 있다. 컨트롤러(100)는, 예컨대, 경로 이상 등이 발생했다는 취지의 통지를 출력하고, 도 15의 흐름도에 의한 일련의 처리가 종료된다.
메시지 Reply가 수신되지 않은 원인이 경로 이상인 경우, 이 위치의 물리 어드레스를 사용할 수 없게 된다. 여기서, 기억 장치(10)는, 어떤 물리 어드레스에 대한 경로를 복수개 갖기 때문에, 경로 이상에 대한 내성이 높다.
도 16은, 제2 데이터 복원 처리를 설명하기 위한 개념도이다. 제2 데이터 복원 처리에서는, RAID를 구성하는 3개의 메모리 노드 A, B 및 C에 대하여, 스페어의 메모리 노드 S를 추가하여 설치한다. 또한, 도 16에 있어서, 전술한 도 14와 대응하는 부분에는 동일한 부호를 붙이고, 상세한 설명을 생략한다. 또, 도 17은, 제2 데이터 복원 처리의 일례를 나타내는 흐름도이다. 메모리 노드 A, B 및 C는, 각각 데이터 a, b 및 c가 저장되어 있고, 어느 것(예컨대, 데이터 c)이 패리티인 것으로 한다.
스페어 메모리 노드 S는, 기억 장치(10)의 통상 사용시에는, 데이터의 저장처로서는 이용되지 않고 비어 있는 상태로 유지된다. 또, 스페어 메모리 노드 S는, 전술한 바와 같이 하여, 다른 메모리 노드와 동일하게 하여 분산시켜 물리 어드레스가 맵핑되어 있는 것이 바람직하다. 또, 컨트롤러(100)는, 스페어 메모리 노드 S의 물리 어드레스를 미리 알고 있는 것으로 한다.
이하에서는, 전술한 바와 같이, 메모리 노드 B에 관해 고장의 검지 또는 교환이 행해지고, 메모리 노드 B에 저장되는 데이터 b를 복원하는 경우를 예를 들어 설명한다(도 16의 (a) 참조). 도 17의 흐름도에 있어서, 단계 S200에서 메모리 노드 B의 고장 검지 또는 메모리 노드 B의 교환 신호가 통지된 경우, 상기 메모리 노드 B는 교환의 대기 상태로 이행한다.
다음 단계 S201에서, 컨트롤러(100)는, 교환전의 메모리 노드 B에 대하여 RAID가 구성되는 다른 메모리 노드 A 및 C에 저장되는 데이터 a 및 c를 판독한다. 다음 단계 S202에서, 컨트롤러(100)는, 단계 S201에서 메모리 노드 A 및 C로부터 판독된 데이터 a 및 c를 이용하여 연산을 행하여, 데이터 b를 복원한다(도 16의 (b) 참조). 복원된 데이터 b는, 일시적으로 버퍼(101)에 저장된다(도 16의 (c) 참조).
다음 단계 S203에서, 컨트롤러(100)는, 단계 S202에서 복원된 데이터 b를 버퍼(101)로부터 판독하여, 스페어 메모리 노드 S에 저장한다(도 16의 (d) 참조).
다음 단계 S204에서, 상기 메모리 노드 B가 새로운 메모리 노드 B'로 교환된다. 이 시점에서는, 메모리 노드 B'는 비어 있고, 아무 데이터도 저장되어 있지 않다(도 16의 (d) 참조). 메모리 노드 B가 메모리 노드 B'로 교환된 것이 확인되면, 컨트롤러(100)는, 메모리 노드 B'에 대하여 커맨드 Info를 송신한다(단계 S205).
다음 단계 S206에서, 컨트롤러(100)는, 단계 S205에서 송신한 커맨드 Info에 대한 메시지 Reply가 수신되었는지의 여부를 판정한다. 만약, 메시지 Reply를 수신했다고 판정한 경우, 경로 이상이 없고, 메모리 노드 B로부터 메모리 노드 B'로의 교환이 정상적으로 완료되었다고 판정할 수 있다. 이 경우, 처리가 단계 S207로 이행되고, 컨트롤러(100)는, 스페어 메모리 노드 S로부터 데이터 b를 판독하여, 판독한 데이터 b를 교환후의 메모리 노드 B'에 저장한다(도 16의 (e) 참조).
그리고, 다음 단계 S208에서, 컨트롤러(100)는, 스페어 메모리 노드 S로부터 데이터 b를 소거하여 스페어 메모리 노드 S를 비워, 스페어의 메모리 노드로서의 기능을 회복하고, 고신뢰성을 유지한다. 이에 따라, 메모리 노드 B의 교환에 따르는 데이터 b의 복원이 완료되고, 도 17의 흐름도에 의한 일련의 처리가 종료된다.
한편, 단계 S206에서, 메시지 Reply가 수신되지 않았다고 판정된 경우, 처리가 단계 S209로 이행되고, 컨트롤러(100)와 메모리 노드 B' 사이의 경로에, 단선 등의 경로 이상이 발생했을 가능성이 있게 된다. 이 경우, 경로 이상이 아니라, 교환된 메모리 노드 B'가 고장이 났을 가능성도 있다. 컨트롤러(100)는, 예컨대, 경로 이상 등이 발생했다는 취지의 통지를 출력하고, 도 15의 흐름도에 의한 일련의 처리가 종료된다.
이와 같이, 스페어 메모리 노드 S를 준비한 경우, 데이터 b의 계산 결과를 스페어 메모리 노드 S에 저장하는 것을 우선해야 한다. 이에 따라, 처음에 메모리 노드 A, C 및 S로 RAID를 재구성시키게 되므로, 보다 신뢰성이 높은 시스템을 구축할 수 있게 된다.
또한, 전술한 것에서는, 스페어 메모리 노드 S를 통상의 데이터 저장에는 사용하지 않는 메모리 노드로서 별도로 설치했지만, 이것은 이 예에 한정되지 않는다. 예컨대, 기억 장치(10)의 복수의 메모리 노드 중 데이터가 저장되어 있지 않은 메모리 노드를, 스페어 메모리 노드 S로서 할당할 수도 있다.
이와 같이, 실시형태에 따른 기억 장치(10)는, 복수의 메모리 노드에 대하여 복수의 데이터 컨트롤러를 구비하는 것에 의해, 복수의 경로를 통한 병렬 처리가 가능하다. 그 때문에, 어떤 데이터 컨트롤러로 데이터의 복원 처리를 실행하면서, 별도의 데이터 컨트롤러로 교환중인 메모리 노드의 데이터에 액세스하는 것이 가능해진다. 이 경우, 실제로는, 교환중인 메모리 노드가 잠겨 있기 때문에, 데이터 컨트롤러간의 처리에 의해, 데이터 복원과 액세스의 동시 진행이 실현된다. 이 경우, 작업 처리량이 떨어질 가능성이 있지만, 종래 기술보다 각별히 높은 성능을 유지할 수 있다.
또한, 데이터 복원 처리에 있어서는, 고장 검지의 조건 설정이 중요하고, 신뢰성이나 러닝코스트 등 사용자의 요구에 따라서 조건 변경이 가능한 것이 바람직하다.
또한, 본 발명은 전술한 각 실시형태에 그대로 한정되는 것이 아니라, 실시 단계에서는 그 요지를 일탈하지 않는 범위에서 구성요소를 변형하여 구체화할 수 있다. 또, 각 실시형태에 개시되어 있는 복수의 구성요소의 적절한 조합에 의해, 여러가지 발명을 형성할 수 있다. 예컨대, 각 실시형태에 나타내는 전체 구성요소에서 몇 개의 구성요소를 삭제해도 좋다. 또한, 상이한 실시형태에 걸쳐 있는 구성요소를 적절하게 조합해도 좋다.
10 : 기억 장치
1010, 1011, 1012, 1013, 1020, 1021, 1022, 1023, 1030, 1031, 1032, 1033, 1040, 1041, 1042, 1043 : 그룹
11, 11a0, 11a1, 11a2, 11a3 : 메모리 노드 14 : 데이터 컨트롤러
15 : 셀렉터 17 : 메모리
19 : MPU 30 : 데이터
31 : 패리티 100 : 컨트롤러
101 : 버퍼

Claims (9)

  1. 미리 정해진 사이즈의 기억 영역을 복수 포함하는 기억부를 구비하고, 2개 이상의 상이한 방향으로 서로 접속되는 복수의 메모리 노드와,
    상기 복수의 메모리 노드는, 2개 이상의 메모리 노드를 구비하는 2개 이상의 그룹을 구성하고, 상기 기억부에 대한 데이터의 기록처를, 상기 기억 영역마다 상이한 상기 그룹에 순차적으로 할당하는 제어부
    를 갖는 기억 장치.
  2. 제1항에 있어서, 상기 제어부는,
    상기 그룹 내에서의 상기 기록처를, 상기 그룹 내의 복수의 상기 메모리 노드가 포함하는 복수의 상기 기억 영역에 순차적으로 더 할당하는 것인 기억 장치.
  3. 제1항 또는 제2항에 있어서, 정해진 사이즈의 데이터로부터 패리티를 생성하는 패리티 생성부를 더 가지며,
    상기 제어부는,
    상기 정해진 사이즈의 데이터로부터 생성된 각 패리티의 기록처를, 상이한 상기 메모리 노드에 할당하는 것인 기억 장치.
  4. 제3항에 있어서, 상기 제어부는,
    상기 복수의 메모리 노드에 관해 서로 대응하는 상기 기억 영역에 대한 상기 기록처의 할당이 일주한 경우에, 상기 패리티의 기록처의 상기 그룹을 전환하는 것인 기억 장치.
  5. 제3항에 있어서, 상기 제어부는,
    상기 패리티의 상기 기록처를, 상기 2개 이상의 그룹에 순차적으로 할당하는 것인 기억 장치.
  6. 제1항 또는 제2항에 있어서, 상기 제어부는,
    상기 복수의 메모리 노드를, 2개 이상의 방향으로 분할하여 상기 2개 이상의 그룹을 생성하는 것인 기억 장치.
  7. 제1항 또는 제2항에 있어서, 상기 복수의 메모리 노드 중 제1 메모리 노드는,
    상기 제1 메모리 노드와 접속되고, 상기 복수의 메모리 노드 중의 다른 메모리 노드의 고장 상태를 검지하여 검지 결과를 상기 제어부에 송신하는 검지부를 더 구비하는 기억 장치.
  8. 제1항 또는 제2항에 있어서, 상기 메모리 노드는,
    상기 기억부로부터 판독되는 데이터에 포함되는 오류 비트를 검출하여, 검출 결과를, 상기 제어부로부터 송신되는 판독 명령 및 기록 명령 중 적어도 한쪽에 대한 결과에 부가하여 상기 제어부에 송신하는 검출부를 더 구비하는 기억 장치.
  9. 미리 정해진 사이즈의 기억 영역을 복수 포함하는 기억부를 구비하고, 2개 이상의 상이한 방향으로 서로 접속되는 복수의 메모리 노드가, 2개 이상의 메모리 노드를 구비하는 2개 이상의 그룹을 구성하고, 상기 기억부에 대한 데이터의 기록처를, 상기 기억 영역마다 상이한 상기 그룹에 순차적으로 할당하는 제어 단계를 포함하는 기억 방법.
KR1020130102531A 2013-01-17 2013-08-28 기억 장치 및 기억 방법 KR101581086B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013006754A JP6005533B2 (ja) 2013-01-17 2013-01-17 記憶装置および記憶方法
JPJP-P-2013-006754 2013-01-17

Publications (2)

Publication Number Publication Date
KR20140093159A true KR20140093159A (ko) 2014-07-25
KR101581086B1 KR101581086B1 (ko) 2015-12-29

Family

ID=51166153

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130102531A KR101581086B1 (ko) 2013-01-17 2013-08-28 기억 장치 및 기억 방법

Country Status (5)

Country Link
US (1) US10691542B2 (ko)
JP (1) JP6005533B2 (ko)
KR (1) KR101581086B1 (ko)
CN (1) CN103942153A (ko)
TW (1) TWI516929B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6171478B2 (ja) * 2013-03-28 2017-08-02 富士通株式会社 ストレージシステム、情報処理装置、情報処理装置の制御プログラム、および情報処理装置の制御方法
JP2015152949A (ja) 2014-02-10 2015-08-24 株式会社東芝 ストレージシステム
JP6342351B2 (ja) 2015-03-02 2018-06-13 東芝メモリ株式会社 ストレージシステム
JP2018041153A (ja) * 2016-09-05 2018-03-15 東芝メモリ株式会社 ストレージシステムおよび入出力処理方法
WO2018078741A1 (ja) * 2016-10-26 2018-05-03 株式会社日立製作所 ストレージ装置
BR112017020736B8 (pt) * 2016-11-25 2021-08-17 Huawei Tech Co Ltd método de verificação de dados e sistema de armazenamento
JP2018156594A (ja) * 2017-03-21 2018-10-04 東芝メモリ株式会社 ストレージシステムおよび処理方法
US11755419B2 (en) * 2018-09-06 2023-09-12 International Business Machines Corporation Utilizing spare network nodes for deduplication fingerprints database
JP7160937B2 (ja) * 2018-09-27 2022-10-25 富士フイルム株式会社 放射線撮影装置
CN111782135A (zh) * 2019-06-14 2020-10-16 北京京东尚科信息技术有限公司 数据存储方法、系统、数据节点和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100037416A (ko) * 2008-10-01 2010-04-09 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
JP2011134031A (ja) * 2009-12-24 2011-07-07 Panasonic Corp 半導体記録装置および半導体記録システム

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5072371A (en) * 1989-03-01 1991-12-10 The United States Of America As Represented By The United States Department Of Energy Method for simultaneous overlapped communications between neighboring processors in a multiple
US5130992A (en) * 1990-04-16 1992-07-14 International Business Machines Corporaiton File-based redundant parity protection in a parallel computing system
JPH06348516A (ja) * 1993-06-08 1994-12-22 Hitachi Ltd 情報処理装置
JPH07234763A (ja) 1994-02-25 1995-09-05 Fujitsu Ltd ディスクアレイ装置の処理方法
JPH07311752A (ja) 1994-05-11 1995-11-28 Internatl Business Mach Corp <Ibm> 分散データ処理システム及び初期プログラムロード方法
JP3371044B2 (ja) * 1994-12-28 2003-01-27 株式会社日立製作所 ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法
US5862403A (en) * 1995-02-17 1999-01-19 Kabushiki Kaisha Toshiba Continuous data server apparatus and data transfer scheme enabling multiple simultaneous data accesses
JP3197815B2 (ja) 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
JP3401160B2 (ja) 1997-03-28 2003-04-28 三菱電機株式会社 分散共有メモリネットワーク装置
US6424625B1 (en) 1998-10-28 2002-07-23 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for discarding packets in a data network having automatic repeat request
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
US7543100B2 (en) * 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
JP2003345531A (ja) 2002-05-24 2003-12-05 Hitachi Ltd ストレージシステム、管理サーバ、及びそのアプリケーションの管理方法
US7016213B2 (en) 2003-05-13 2006-03-21 Advanced Micro Devices, Inc. Method for initializing a system including a host and plurality of memory modules connected via a serial memory interconnect
US20050108593A1 (en) * 2003-11-14 2005-05-19 Dell Products L.P. Cluster failover from physical node to virtual node
KR101375763B1 (ko) 2005-04-21 2014-03-19 바이올린 메모리 인코포레이티드 상호접속 시스템
JP2007087062A (ja) * 2005-09-21 2007-04-05 Canon Inc アレイ型記憶装置
JP4661566B2 (ja) * 2005-11-30 2011-03-30 Tdk株式会社 アクセスコントローラ、フラッシュメモリシステム及びアクセス制御方法
JP4254933B2 (ja) * 2005-11-30 2009-04-15 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
JP4434171B2 (ja) * 2006-04-26 2010-03-17 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8041990B2 (en) 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
CN101354694B (zh) * 2007-07-26 2010-10-13 上海红神信息技术有限公司 基于mpu架构的超高扩展超级计算系统
US7836226B2 (en) * 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
JP2010171557A (ja) 2009-01-21 2010-08-05 Mitsubishi Electric Corp 同報送信装置及び受信ノード及び同報送信プログラム及び記録媒体
US8549092B2 (en) 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
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
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
JP2011170589A (ja) * 2010-02-18 2011-09-01 Nec Corp ストレージ制御装置、ストレージ装置およびストレージ制御方法
JP4940322B2 (ja) * 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
US8812800B2 (en) * 2010-06-24 2014-08-19 Hitachi Ltd. Storage apparatus and storage management method
WO2012050934A2 (en) * 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
JP5238791B2 (ja) * 2010-11-10 2013-07-17 株式会社東芝 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法
US8745294B2 (en) * 2011-04-01 2014-06-03 Taejin Info Tech Co., Ltd. Dynamic random access memory for a semiconductor storage device-based system
CN102169462B (zh) * 2011-04-27 2014-03-05 中国科学院光电技术研究所 基于NAND Flash的数据记录方法与记录控制器
US8914670B2 (en) * 2012-11-07 2014-12-16 Apple Inc. Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks
US9832068B2 (en) * 2012-12-17 2017-11-28 Microsoft Technology Licensing, Llc Reachability-based coordination for cyclic dataflow

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100037416A (ko) * 2008-10-01 2010-04-09 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
JP2011134031A (ja) * 2009-12-24 2011-07-07 Panasonic Corp 半導体記録装置および半導体記録システム

Also Published As

Publication number Publication date
US10691542B2 (en) 2020-06-23
TW201430565A (zh) 2014-08-01
JP2014137758A (ja) 2014-07-28
TWI516929B (zh) 2016-01-11
US20140201439A1 (en) 2014-07-17
JP6005533B2 (ja) 2016-10-12
KR101581086B1 (ko) 2015-12-29
CN103942153A (zh) 2014-07-23

Similar Documents

Publication Publication Date Title
KR101581086B1 (ko) 기억 장치 및 기억 방법
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
US9996419B1 (en) Storage system with distributed ECC capability
US8601346B1 (en) System and method for generating parity data in a nonvolatile memory controller by using a distributed processing technique
JP5256149B2 (ja) Hdd障害からの高速データ回復
US8713357B1 (en) Systems and methods for detailed error reporting in data storage systems
US8108595B2 (en) Storage apparatus and method of managing data storage area
US10545684B2 (en) Storage device
US10649843B2 (en) Storage systems with peer data scrub
CN101471882B (zh) 存储子系统
US20100241793A1 (en) Storage system and method for controlling storage system
US20140108702A1 (en) Storage system which includes non-volatile semiconductor storage medium, and storage control method of storage system
US20180275894A1 (en) Storage system
US9195530B1 (en) Systems and methods for improved data management in data storage systems
KR101507669B1 (ko) 리던던트 방식으로 복수의 메모리 장치들 내에 데이터 블록들을 저장하는 방법, 메모리 컨트롤러, 및 메모리 시스템
JP2011159241A (ja) ストレージ装置、ストレージ装置のコントローラおよびストレージ装置の記憶領域割当方法
JP6070357B2 (ja) ストレージ装置
JP2018041404A (ja) ストレージシステム及び方法
CN113282232A (zh) 具有协同优化的多级擦除系统
US20200042386A1 (en) Error Correction With Scatter-Gather List Data Management
US9547554B2 (en) Mass storage device and method of operating the same to store parity data
JP5949816B2 (ja) キャッシュ制御装置及びその制御方法、ストレージ装置、並びにコンピュータ・プログラム
WO2015155824A1 (ja) ストレージシステム
US11947843B2 (en) Method for processing a cache barrier command for a disk array and device for the same
US10506042B2 (en) Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20181115

Year of fee payment: 4