KR20000065071A - 버스로부터수집된데이터에대해패리티를발생시키는플라이바이 - Google Patents

버스로부터수집된데이터에대해패리티를발생시키는플라이바이 Download PDF

Info

Publication number
KR20000065071A
KR20000065071A KR1019980708645A KR19980708645A KR20000065071A KR 20000065071 A KR20000065071 A KR 20000065071A KR 1019980708645 A KR1019980708645 A KR 1019980708645A KR 19980708645 A KR19980708645 A KR 19980708645A KR 20000065071 A KR20000065071 A KR 20000065071A
Authority
KR
South Korea
Prior art keywords
memory
xor
data
bus
mass storage
Prior art date
Application number
KR1019980708645A
Other languages
English (en)
Other versions
KR100352039B1 (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 KR20000065071A publication Critical patent/KR20000065071A/ko
Application granted granted Critical
Publication of KR100352039B1 publication Critical patent/KR100352039B1/ko

Links

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Television Signal Processing For Recording (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Other Investigation Or Analysis Of Materials By Electrical Means (AREA)
  • Catching Or Destruction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은, 실질적인 계산 자원을 소비하지 않고 XOR 연산을 수행하는 방법 및 시스템을 제공한다. 특정된 프로세서가 1세트의 디스크 드라이브와 동일한 버스에 연결되며; 상기 특정된 프로세서는 상기 디스크 드라이브로의 데이터 전송 및 상기 디스크 드라이브로부터의 데이터 전송을 조사하여, 개별적인 전송을 요구하지 않고, 상기 디스크 드라이브로 전송된 데이터 및 상기 디스크 드라이브로부터 전송된 데이터에 대해 XOR 연산을 수행한다. 상기 특정된 프로세서는, XOR 연산에 사용되고, XOR 연산의 결과를 기록하며, 상기 프로세서의 명령에 따라 판독되는 XOR 어큐뮬레이터를 유지한다. 상기 XOR 어큐뮬레이터는, 각각의 RAID 스트라이프, 즉, 선택된 1세트의 RAID 스트라이프에 대해 1세트의 어큐뮬레이터 레지스터를 포함한다. 1개의 (내용 주소화 메모리 등의) 메모리가 1세트의 어큐뮬레이터 레지스터를 각각의 선택된 RAID 스트라이프와 연관시킨다.

Description

플라이바이(Fly-By) XOR
기억 시스템의 한 가지 공지의 형태는, 데이터가 다중 디스크 드라이브에 걸쳐 분산 저장되어, 이들 디스크 드라이브 중 하나에서, 또는 그의 기억 블록들 중 하나 또는 그 이상에서 손실된 데이터로 인해 이상이 발생한 경우에도 복구 가능하도록 되어있는 "RAID"로서 알려져 있다. 후의 복구를 위한 데이터의 기억을 위해, RAID 시스템은 패리티 정보와 함께 데이터를 기록함으로써, 이 패리티 정보로부터 데이터를 복구할 수 있다. 예컨대, RAID 시스템의 한 형태에 있어서, 4블록의 데이터 및 1블록의 패리티 정보를 "스트라이프"로서 알려진 유닛에 기록하기 위해 1세트 5개의 디스크가 사용된다.
상기 기술에서 발생하는 한 가지 문제는, 패리티 정보를 기록하는 RAID 시스템이 패리티 정보의 계산을 신속하게 요구함과 동시에 자주 요구한다는 것이다. 예컨대, 하나의 스트라이프에 기입하는 연산은, 적어도 1세트의 패리티 정보의 계산을 필요로 한다. 패리티 정보의 계산은 실질적으로 XOR(배타적 논리합) 함수를 사용하도록 한다. 이것은, 프로세서 사이클, 캐쉬 위치 및 메모리 액세스 사이클 등의 실질적인 계산 자원의 할당을 요구할 수 있다.
패리티 정보의 계산을 위한 한 가지 가능한 기술은, XOR 함수를 계산하기 위한 프로세서를 제어하는 소프트웨어를 제공하는 것이다. 이러한 기술은, 레지스터 충돌 및 불필요한 대기를 방지하기 위해 프로세서 명령을 스케줄링하기 위한 시도를 포함하는 디자인, 및 프로세서에 의한 불필요한 메모리 전송 및 불필요한 대기를 방지하기 위해 캐쉬 미스(misses)를 감소시키기 위한 시도를 포함하는 디자인 등의 몇 가지 다른 디자인을 포함한다. 이러한 기술은, 패리티 정보를 계산하는 목적을 달성하는 반면, 실질적인 계산 자원(프로세서 사이클, 캐쉬 위치, 메모리 전송)을 요구한다는 결점을 갖고 있다.
패리티 정보를 계산하기 위한 다른 가능한 기술은, XOR 연산을 수행하기 위해, 독립 메모리와 함께 제 2 프로세서를 제공하는 것이다. 제 2 프로세서는, DMA 접속을 사용하여 메인 메모리(즉, 제 1 프로세서에 의해 사용되는 메모리)에 연결되어 있으며, 상기 제 2 프로세서가 DMA 연산을 사용하여 메모리로부터 XOR 연산의 입력을 검색하므로, 제 1 프로세서는 다른 작업을 수행할 수 있다. 이러한 기술은, 패리티 정보를 계산하는 목적을 달성하는 반면, 제 1 프로세서의 부담을 일부 경감하지만, 실질적인 메모리 전송 및 시스템 버스의 사용을 요구한다는 결점을 갖고 있다.
따라서, 보다 적은 계산 자원을 소비하면서 XOR 연산을 수행하기 위한 방법 및 시스템을 제공하는 것이 유리하다. 이러한 이점은, 특정된 프로세서가, 시스템 버스상에서 메모리 및 디스크 액세스가 전송될 때, 그들을 검토하고, XOR 연산을 수행하여 그 결과를 기록하며, 프로세서 명령에 따라 상기 XOR 연산의 결과를 출력하는 본 발명의 1실시예에서 달성된다.
본 발명은 기억 시스템에 관한 것이다.
도 1은 플라이바이(fly-by) XOR을 수행하기 위한 시스템의 블록도를 도시하고 있다.
도 2는 플라이바이 XOR을 수행하기 위한 시스템의 동작 방법을 나타내는 플로우챠트를 도시하고 있다.
도 3은 제 1 플라이바이 XOR 요소의 블록도를 도시하고 있다.
도 4는 제 2 플라이바이 XOR 요소의 블록도를 도시하고 있다.
본 발명은, 실질적인 계산 자원을 소비하지 않고 XOR 연산을 수행하는 방법 및 시스템을 제공한다. 특정된 프로세서가, 1세트의 디스크 드라이브와 동일한 버스에 연결된다; 상기 특정된 프로세서는, 디스크 드라이브로의 데이터 전송 및 디스크 드라이브로부터의 데이터 전송을 검토하여, 개별적인 전송을 요구하지 않고, 디스크 드라이브로 전송된 데이터 및 디스크 드라이브로부터 전송된 데이터에 대해 XOR 연산을 수행한다.
바람직한 1실시예에서, 상기 특정된 프로세서는, XOR 연산에 사용되고, XOR 연산의 결과를 기록하며, 프로세서의 명령에 따라 판독되는 XOR 어큐뮬레이터를 유지하고 있다. 상기 XOR 어큐뮬레이터는, 각각의 RAID 스트라이프, 즉, 선택된 1세트의 RAID 스트라이프에 대해 1세트의 어큐뮬레이터 레지스터를 포함한다. 1개의 (내용 어드레스 기억 장치 등의) 메모리가 1 세트의 어큐뮬레이터 레지스터를 각각의 선택된 RAID 스트라이프와 연관시킨다.
이하, 본 발명의 바람직한 1실시예를, 바람직한 프로세스 단계 및 데이터 구조에 관해 설명한다. 그러나, 당업자들은, 본 출원을 숙독한 후, 본 발명의 실시예들이 프로그램 제어하에서 동작하는 1개 또는 그 이상의 범용 프로세서를 사용하여 구현되고, 상기 기기를 사용하여 본 명세서에 기재된 바람직한 프로세스 단계 및 데이터 구조를 구현하는 것은 과도한 실험 또는 그 이상의 발명을 요구하지 않음을 인식할 것이다.
시스템 요소
도 1은 플라이바이(fly-by) XOR을 수행하기 위한 시스템의 블록도를 도시하고 있다.
시스템(100)은, 적어도 1개의 프로세서(110), 1개의 메모리(120), 및 프로세 서(110)와 메모리(120)를 연결하기 위한 시스템 버스(130)를 포함한다. 단지 1개의 프로세서(110)만 도시되어 있으나, 어떤 애플리케이션에 바람직한 실시예에서는, 1개 이상의 프로세서(110)가 시스템 버스(130)에 연결되어, 이들 프로세서(110)가 동작시에 서로 협력한다.
또한, 상기 시스템(100)은, 복수의 디스크 드라이브(140), 및 디스크 드라이브(140)를 제어하고, 메저닌(mezzanine) 버스(160)를 사용하여 디스크 드라이브(140)와 시스템 버스(130) 사이의 데이터를 연결하기 위해, 상기 디스크 드라이브(140)에 연결된 적어도 1개의 디스크 I/O 어댑터(150)를 포함한다.
바람직한 1 실시예에서, 상기 메저닌 버스(160)는, 공지의 PCI 버스 표준에 의해 정의된 바와 같이, PCI 버스이고, PCI 브리지(170)를 사용하여 상기 시스템 버스(130)에 연결되어 있다.
바람직한 1실시예에서, 상기 메저닌 버스(160)는 PCI 버스이지만, 본 발명은, PCI 버스 또는 다른 특정 타입의 버스를 사용하는 것으로 한정되지 않는다. 유사하게, 상기 메저닌 버스(160)는 본 명세서에서 32비트 버스로서 기재되어 있지만, 64비트 버스 등의 다른 버스폭으로도 구현 가능하다. 이러한 다른 형태는 과도한 실험 또는 발명을 요구하지 않는다.
플라이바이 XOR 요소(180)는, 메저닌 버스(160)에 연결되어, 이 메저닌 버스(160)를 사용하는 데이터 전송으로부터 데이터를 수집한다. 상기 플라이바이 XOR 요소(180)는, XOR 연산의 부분적인 또는 최종적인 결과를 저장하기 위해 XOR 버퍼(190)를 사용한다.
상기 프로세서(110)가 상기 메모리(120)와 하나 또는 그 이상의 디스크 드라이브(140) 사이의 데이터의 전송을 지시하면, 이 데이터는 상기 시스템 버스(130)와 PCI 브리지(170) 및 메저닌 버스(160)를 사용하여 전송된다. 상기 데이터가 메저닌 버스(160)를 사용하여 전송됨에 따라, 상기 플라이바이 XOR 요소(180)는 (데이터 전송으로부터의 방해 없이) 데이터를 판독하여, 그것을 XOR 버퍼(190)내의 XOR 어큐뮬레이터(도 2 참조) 중 하나에 부가한다. RAID 스트라이프가 전체적으로 또는 부분적으로 판독 또는 기입되면, 상기 플라이바이 XOR 요소(180)는, 상기 시스템(100)의 어느 부분으로부터 추가적인 자원을 요구하지 않고, 상기 RAID 스트라이프에 대한 1세트의 패리티 정보를 동적으로 계산한다. 추가적인 데이터 전송이 요구되지 않음과 동시에, 상기 프로세서(110) 및 메모리(120)가 상기 XOR 연산을 수행하도록 요구되지도 않는다.
상기 프로세서(110)가, 판독 또는 기입된 RAID 스트라이프의 기억 블록으로 상기 패리티 정보를 기입하도록 지시하면, 상기 플라이바이 XOR 요소(180)는, 상기 XOR 버퍼(190)내의 XOR 어큐뮬레이터 중 하나로부터, 누산된 패리티 정보를 판독한다. 또한, 상기 XOR 버퍼(190)로부터의 누산된 패리티 정보는, 상기 RAID 스트라이프의 디스크 드라이브(140) 중 하나가, RAID 스트라이프의 기억 블록 중 하나의 전체 또는 일부를 상실한 경우, RAID 스트라이프의 데이터를 재구성 또는 복원하는데 사용된다.
시스템 동작
도 2는 플라이바이 XOR을 수행하기 위한 시스템의 동작 방법을 나타내는 플로우챠트를 도시하고 있다.
상기 플라이바이 XOR 요소(180)의 동작 방법(200)은, 상기 프로세서(110)에 의해 수행되는 단계들의 시퀀스, 상기 디스크 드라이브(140) 및 상기 플라이바이 XOR 요소(180)를 포함한다.
플로우 포인트(210)는, 시스템(100)이 RAID 스트라이프에 대해 XOR 연산의 수행하기 직전의 상태이다.
단계(221)에서, 프로세서(110)는, 메모리(120)내의 메모리 버퍼를 할당하고, 메모리 버퍼로 또는 메모리 버퍼로부터 전송된 DMA 및 상기 디스크 드라이브(140) 중 하나가 되도록 데이터를 구성한다.
단계(222)에서, 상기 프로세서(110)는, 상기 메모리
버퍼의 메모리 어드레스를 플라이바이 XOR 요소(180)로 전송하고, 이 플라이바이 XOR 요소(180)가 상기 메모리 버퍼로 또는 상기 메모리 버퍼로부터 전송된 데이터를 인식하도록 지시한다. 또한, 상기 프로세서(110)는, XOR 버퍼(190)내의 XOR 어큐뮬레이터 버퍼 중 하나를 할당하여, XOR 연산의 결과를 누산한다.
단계(223)에서, DMA 전송이 수행된다. 상기 플라이바이 XOR 요소(180)는, 상기 메저닌 버스(160)를 감시하여, 메모리 버퍼로의 전송 및 메모리 버퍼로부터의 전송의 인식을 시도한다. 플라이바이 XOR 요소(180)가 이러한 전송을 인식하면, 전송되는 데이터를 복사하여, 연관된 XOR 어큐뮬레이터 버퍼에 누산된 패리티 정보에 (XOR 연산을 수행함으로써) 그것을 부가한다. 인식된 메모리 버퍼에 대한 모든 데이터가 전송되면, 상기 연관된 XOR 어큐뮬레이터 버퍼는 RAID 스트라이프에 대해 계산된 패리티를 유지한다.
단계(224)에서, 상기 프로세서(110)는, 누산된 패리티 정보를, 상기 플라이바이 XOR 요소(180)가 상기 연관된 XOR 어큐뮬레이터 버퍼로부터 상기 메모리(110)의 메모리 버퍼로, 또는 상기 디스크 드라이브(140) 중 하나의 기억 블록으로 판독하도록 지시한다. 어느 쪽의 경우라도, 상기 플라이바이 XOR 요소(180)로부터의 판독은, 프로세서 판독 또는 상기 디스크 드라이브(140) 중 하나로의 DMA 전송에 의해 수행된다. 바람직한 1실시예에서, 누산된 패리티 정보의 판독은, 조합된 XOR 어큐뮬레이터 버퍼가 제로(zero)로 리셋되도록 한다.
플로우 포인트(230)에서, 상기 RAID 스트라이프에 대한 XOR 연산이 완료되고, 시스템(100)은 다른 RAID 스트라이프에 대해 계속될 수 있다.
바람직한 1실시예에서, 프로세서(110)가, 실제로 상기 디스크 드라이브(140) 중 하나로부터 상기 메모리(120)의 메모리 버퍼로 데이터를 전송하지 않고 XOR 연산을 수행할 수 있다. 본 명세서에서는, 이것을, 상기 데이터가 메모리(120)에 실제로 기억되지 않는다는 점을 제외하고는, 상기 연산이 모든 면에서 메모리 버퍼로의 전송인 것처럼 진행되므로, "널(null)" 메모리 버퍼로의 전송이라 한다. RAID 스트라이프가 디스크 드라이브(140)에 기억되면, RAID 스트라이프의 전체 미만의 기억 블록을 판독 또는 기입하는 것이 요구되나, 전체 RAID 스트라이프에 대해 패리티 정보를 계산해야 하는 RAID 스트라이프에 대한 디스크 연산이 존재하므로, 널 메모리 버퍼로 전송 가능한 것이 유리하다.
예컨대, RAID 스트라이프 중 단 하나의 기억 블록에 기입하는 것이 요구되는 경우, 그 기억 블록과 패리티 정보 기억 블록 양쪽 모두에 기입해야 한다. 공지의 RAID 기억 시스템에서, 우선, 최근의 패리티와 데이터 블록 양쪽을 디스크로부터 메모리로 판독한 후, 프로세서가 새로운 패리티 정보를 계산해야 한다. 그러나, 본 발명에 의하면, 프로세서(110) 또는 메모리(120)의 자원은 사용하지 않지만, 플라이바이 XOR 요소(180)를 사용하여 패리티 정보를 계산하도록 이들 블록을 널 메모리 버퍼로 전송할 수 있다.
또한, 바람직한 1실시예에서, RAID 스트라이프의 단 1개의 기억 블록으로의 기입은 보다 적은 단계에 의해 수행된다: (1) 이전의 기억 블록 데이터 및 이전의 패리티 블록 데이터를 널 메모리 버퍼로 전송하여, 플라이바이 XOR 요소(180)를 사용하여 패리티 정보를 누산한다. (2) 새로운 기억 블록 데이터가 기억 블록으로 기입되어, 상기 기억 블록으로의 기입과 동시에, 플라이바이 XOR 요소(180)를 사용하여 패리티 정보를 누산한다. (3) 누산된 패리티 정보를 XOR 버퍼(190)로부터 패리티 기억 블록으로 기입한다. 이들 동작에서, 프로세서(110) 및 메모리(120)의 자원은 불필요하다.
널 메모리 버퍼로의 전송을 수행하기 위해, 단계(221)에서, 프로세서(110)는 메모리(120)내의 메모리 버퍼를 할당하지 않고, 디스크 드라이브(140) 중 하나와 메모리(120)에 의해 인식되지 않은 메모리 어드레스 사이에서 전송되는 DMA가 되도록 데이터를 설정한다. 단계(223)에서, 상기 DMA 전송이 수행되고, 플라이바이 XOR 요소(180)가 메저닌 버스(160)를 감시하지만, 메모리(120)는 널 메모리 버퍼로 "전송되는" 어떠한 데이터도 포착하지 않는다.
제 1 플라이바이 XOR 요소
도 3은 제 1 플라이바이 XOR 요소(180)의 블록도를 도시하고 있다.
제 1 플라이바이 XOR 요소(180)는, 버스 인터페이스(310), 타이밍 및 제어 요소(320), 및 내용 어드레스 기억 장치(CAM)(330) 및 관련 요소를 포함한다. 상기 XOR 버퍼(190)는 플라이바이 XOR 요소(180)에 연결되어 있고, 랜덤 액세스 메모리(RAM)(340), FIFO 큐(queue)(350) 및 관련 요소를 포함한다. 상기 XOR 버퍼(190)가 개념적으로는 RAM(340)을 포함하고 있지만, 바람직한 1실시예에서, RAM(340)은 외부적인 RAM 회로를 사용하여 구현되는 한편, FIFO(350) 및 관련 요소는 ASIC의 플라이바이 XOR 요소(180)의 다른 회로에 의해 구현된다.
상기 버스 인터페이스(310)와 타이밍 및 제어 요소(320)는, 상기 플라이바이 XOR 요소(180)와 메저닌 버스(160) 사이의 인터페이스를 제공한다. 상기 인터페이스는, 상기 메저닌 버스(160)에 의해 사용되는 제어 신호를 전달하는 1세트의 제어 경로(311), 비트(0∼31)를 갖는 버스 어드레스 값을 전달하는 버스 어드레스(BA) 경로(312), 및 비트(0∼31)를 갖는 버스 데이터 값을 전달하는 버스 데이터(BD) 경로(313)를 포함한다. PCI 버스를 사용한 통신은, 컴퓨터 시스템 설계 업계에 공지되어 있다.
메저닌 버스(160)가 PCI 버스가 아니거나, 또는 32비트폭이 아닌 다른 실시예에서, 버스 데이터 값은 (비트 0∼63 등의) 다른 비트 식별자를 갖고, PCI가 아닌 다른 버스 프로토콜을 사용하여 통신이 일어난다.
상기 XOR 버퍼(190)는, 랜덤 액세스 메모리(RAM)(340)를 포함하는데, 이것은 32개로 이루어진 1세트의 XOR 어큐뮬레이터 버퍼를 제공하고, 이들 각 XOR 어큐뮬레이터 버퍼는 4 바이트(32비트) 폭의 1024개의 엔트리를 포함하는 길이므로, 4K 바이트 크기이다. 따라서, 상기 플라이바이 XOR 요소(180)에 의해, 32개의 상이한 RAID 스트라이프까지 XOR 누산을 동시에 수행할 수 있다.
또한, 상기 XOR 버퍼(190)는, 연속하는 버스 데이터 값의 워드를 입력하고, 이들 연속하는 워드에 대해 XOR 연산을 수행하여, 상기 RAM(340)내의 32개의 XOR 어큐뮬레이터 버퍼 중 하나에 패리티 정보를 누산하기 위해 제공되는 FIFO 큐(350)를 포함한다.
상기 CAM(330)은 1세트 256개의 엔트리를 제공하는데, 이들 각각은, 20비트의 버스 어드레스 값을, RAM(340)내의 32개의 XOR 어큐뮬레이터 버퍼 중 하나의 5비트의 연관된 어드레스와 연관시킨다. 상기 CAM(330)은, CAM(330)내의 256개의 엔트리 중 하나를 선택하기 위한 어드레스 입력 포트(331), CAM(330)에 의해 매칭되는 20비트의 태그를 제공하기 위한 20비트의 태그 포트(332), CAM(330)에 의해 20비트의 태그와 연관된 5비트의 값을 제공하기 위한 5비트 값 포트(333), 기입 제어 신호를 입력받기 위한 기입 제어 포트(334), 및 매칭 제어 신호를 제공하기 위한 매칭 제어 포트(335)를 포함한다.
또한, 상기 타이밍 및 제어 요소(320)는, 상기 매칭 제어 포트(335)로부터 매칭 제어 신호를 입력받아, RAM(340)을 어드레싱하기 위해 15 비트의 RAM 어드레스 경로(RA)(314), 및 CAM(330)을 제어하기 위한 기입 제어 경로(315)를 제공한다.
버스 어드레스 경로(312)의 비트(12∼31)와, 버스 데이터 경로(313)의 비트(12∼31)(따라서, 각각의 경우에 상위 20 비트)는 CAM 멀티플렉서(336)의 입력에 연결되고, 이것의 출력은 CAM(330)의 태그 포트(332)에 연결된다. 또한, 이 태그 포트(332)는, 드라이버(337)를 사용하여 버스 데이터 경로(313)에 연결될 수 있는 20비트 태그 출력을 제공한다. 값 포트(333)에서의 연관된 5비트 값은, XOR 버퍼(190)에 연결되고, 또한, 1쌍의 드라이버(338)를 사용하여 버스 데이터 경로(313)에도 연결된다.
상기 XOR 버퍼(190)는, 15비트의 RAM 어드레스 값을 입력받기 위한 RAM 어드레스 포트(341), 및 RAM(340)내의 연관된 위치에 기억된 32 비트의 RAM 데이터 값을 제공하기 위한 RAM 데이터 포트(342)를 포함하는 RAM(340)을 포함한다. 상기 RAM(340)은, 개념적으로 32개의 개별적인 XOR 어큐뮬레이터 버퍼들로 분할되며, 이들 각각은 1K의 32비트 워드(즉, 4K 바이트)를 포함하고, RAM 어드레스 값의 상위 비트로서 5비트의 XOR 어큐뮬레이터 버퍼의 수(0∼31)를 각각 갖는, RAM(340)내의 1세트의 기억 장소를 차지한다.
상기 값 포트(333)에서의 연관된 5비트의 값은 상기 RAM 어드레스 포트(341)에 연결되고, RAM(340)내의 워드를 어드레싱하기 위한 상위 5비트를 제공한다. 버스 어드레스 경로(312)의 비트(2∼11)(즉, 4바이트 워드를 어드레싱하기 위한 하위 10비트)는, RAM(340)내의 워드를 어드레싱하기 위한 하위 10비트를 제공하고, 또한, RAM 어드레스 포트(341)에 연결되어 있다. 따라서, 상기 RAM(340)은 RAM 어드레스 포트(341)에서의 15비트 어드레스를 입력받고, RAM 데이터 포트(342)에서의 32비트 데이터 워드 출력을 제공한다.
상기 RAM 데이터 포트(342)는, 드라이버(351)를 사용하여, 버스 데이터 경로(313)(및 상기 FIFO 큐(350)의 입력), FIFO 멀티플렉서(352)의 출력, 및 FIFO 레지스터(353)의 입력에 연결되어 있다. 상기 FIFO 큐(350)는, 전체 32비트 워드에 대해 XOR 연산을 동시에 수행하기 위한 1세트 32개의 XOR 게이트를 포함하는 XOR 연산기(354)에 연결된 출력을 갖는다. 상기 FIFO 멀티플렉서(352)는 상기 XOR 연산기(354)의 출력 및 "제로" 입력(355)에 연결되어 있다.
새로운 RAID 스트라이프에 대해 XOR 연산기 버퍼를 할당하기 위해, 단계(221) 및 단계(222)에서와 같이, 상기 타이밍 및 제어 요소(320)는, 상기 메모리(120)의 메모리 버퍼에 대한 20비트 메모리 어드레스를 CAM(330)에 로드하고, 이 20비트 메모리 어드레스를 32개의 XOR 어큐뮬레이터 버퍼 중 하나에 대한 5비트 식별자와 연관시킨다. 버스 어드레스 경로(312)의 비트(2∼9)는 어드레스 입력 포트(331)에 연결되어, CAM(330)에 대한 새로운 엔트리의 주소를 제공한다. 상기 CAM 멀티플렉서(336)는, 타이밍 및 제어 요소(320)의 제어하에서, 태그 포트(332)에 연결하기 위한 버스 데이터 값을 선택한다. 상기 CAM(330)은, 버스 데이터 경로(313)로부터의 버스 데이터 값의 비트(12∼31)를 어드레스 입력 포트(331)에서 특정된 어드레스의 새로운 20비트 태그로서, 버스 데이터 경로(313)로부터의 버스 데이터 값의 비트(0∼4)를 새로운 5비트의 값으로서 삽입한다. 또한, 상기 프로세서(110)는 특수한 목적을 위해 CAM(330)의 선택된 엔트리를 판독한다.
단계(223)에서와 같이 메저닌 버스(160)를 감시하기 위해, 상기 타이밍 및 제어 요소(320)는, 태그 포트(332)로의 연결을 위한 버스 어드레스 경로(312)를 선택한다. 상기 메저닌 버스(160)상에 나타나는 메모리 어드레스의 상위 20비트가 CAM(330)의 20비트 태그 중 하나와 매칭되면, 상기 CAM(330)은, 상기 버스 어드레스의 비트(12∼31)를 매칭하여, 5비트의 값을 이 20비트 태그와 관련시킨다.
상기 연관된 5비트의 값은 RAM(340)의 32개의 XOR 어큐뮬레이터 버퍼 중 하나를 선택하는데 사용되는 한편, 상기 버스 어드레스 경로(312)의 비트(2∼11)는 RAM(340)의 XOR 어큐뮬레이터 버퍼의 개별적인 워드를 선택하는데 사용되어, 메저닌 버스(160)상의 데이터 값이 워드 단위로 상기 FIFO 레지스터(353)에 판독된다. 상기 타이밍 및 제어 요소(320)는, RAM(340)으로부터 FIFO 레지스터(353)로 판독된 대응하는 워드와 관련하여, FIFO 큐(350)내의 각 워드를 XOR 연산기(354)를 통해 배열함으로써, 상기 FIFO 큐(350)의 데이터와 관련된, RAM(340)의 XOR 어큐뮬레이터 버퍼내의 데이터에 대해 XOR 연산을 수행한다. 그 후, 상기 타이밍 및 제어 요소(320)는, 상기 XOR 연산의 결과가 RAM(340)의 관련된 XOR 어큐뮬레이터 버퍼로 재기입 되도록 한다.
단계(224)에서와 같이, 누산된 패리티 정보를 판독하기 위해, 상기 타이밍 및 제어 요소(320)는, RAM 어드레스 포트(341)에 연결하기 위한 버스 어드레스 경로(312)를 선택하여, RAM(340)의 XOR 어큐뮬레이터 버퍼내의 각 워드를 차례로 상기 버스 데이터 경로(313)상으로 판독하는 한편, 메모리(120) 또는 디스크 드라이브(140) 중 하나의 어느 한 쪽으로 DAM 전송이 일어난다. 가장 일반적으로는, DMA 전송이 직접 디스크 드라이브(140) 중 하나로 향하지만, 프로세서(110)가 패리티 정보에 대해서 동작해야 하는 경우에는 메모리(120)로 향할 수 있다. 또한, 상기 프로세서(110)는, 특수한 목적을 위해, 또는 그렇지 않은 경우, XOR 버퍼(190)내에 있는 동안 패리티 정보에 대해 판독 또는 연산을 수행하는 것이 바람직한 경우, RAM(340)의 엔트리를 직접 판독할 수 있다. 상기 타이밍 및 제어 요소(320)는, RAM(340)의 XOR 어큐뮬레이터 버퍼의 각 워드로 제로값을 동시에 기입하여, 상기 XOR 어큐뮬레이터 버퍼가 균일한 제로값으로 리셋되도록 한다.
또한, 상기 프로세서(110)는, XOR 버퍼(190)의 내용과 선택된 정보 사이에서 XOR 연산을 직접 수행하도록, RAM(240)내의 선택된 위치에 직접 기입할 수 있다. 이것은, 단계(223)에서 수행되는 XOR 연산과 유사하다. 그러나, 버스 데이터 경로(313)의 비트(12∼16)는, 상기 CAM(330)의 값 포트(333)로부터의 5비트 값 출력 대신에, RAM 어드레스 포트(341)에 연결된다.
바람직한 1실시예에서, 버스 어드레스 경로(312)와 버스 데이터 경로(313)상의 값들은 표 3-1에 나타난 바와 같이 사용된다. 표 3-1에서, 어드레스 범위의 값들은 16진수로 표시되어 있고, 선택된 비트의 범위는 버스 어드레스(BA) 경로(312) 및 버스 데이터(BD) 경로(313)에 대해 표시되어 있다.
제 2 플라이바이 XOR 요소
도 4는 제 2 플라이바이 XOR 요소의 블록도를 도시하고 있다.
제 2 플라이바이 XOR 요소(180) 및 XOR 버퍼(190)는 제 1 플라이바이 XOR 요소(180) 및 XOR 버퍼(190)와 유사하다. 그러나, 제 1 SRAM(430)이 CAM(330) 대신 사용되고, 제 2 SRAM(440)이 RAM(340) 대신 사용된다. 제 1 플라이바이 XOR 요소(180) 및 XOR 버퍼(190)와 유사하게, 상기 XOR 버퍼(190)가 개념적으로 SRAM(430)을 포함하고 있지만, 바람직한 1실시예에서, SRAM(430)은 외부적인 SRAM 회로를 사용하여 구현되는 한편, XOR 버퍼(190)의 다른 요소들은 ASIC의 플라이바이 XOR 요소(180)의 다른 회로에 의해 구현된다.
제 2 플라이바이 XOR 요소(180)를 위한 버스 인터페이스(410)는 제 1 플라이바이 XOR 요소(180)를 위한 버스 인터페이스(310)와 유사하다; 제 2 플라이바이 XOR 요소(180)를 위한 타이밍 및 제어 요소(420)는, 제 1 플라이바이 XOR 요소(180)를 위한 타이밍 및 제어 요소(320)와 유사하다. 상기 버스 인터페이스(410) 및 상기 타이밍 및 제어 요소(420)는, 유사하게 플라이바이 XOR 요소(180)와 메저닌 버스(160)간의 인터페이스를 제공한다. 상기 인터페이스는, 메저닌 버스(160)에 의해 사용되는 제어 신호를 전달하는 1세트의 제어 경로(411), 비트(0∼31)를 갖는 버스 어드레스 값을 전달하
표 3-1
어드레스 범위 레지스터 판독/기입 데이터/연산
000000..0000FF PCI 버스 레지스터 RW PCI 버스 프로토콜에 의해 특정된 바와 같음
010000..0103FF CAM 엔트리 RW CAM 엔트리의 판독 또는 기입BA<2:9> CAM 엔트리 수BD<0:4> XOR 어큐뮬레이터 수BD<12:31> 메모리 버퍼 어드레스
100000..10FFFF XOR 어큐뮬레이터 버퍼 R XOR 어큐뮬레이터 버퍼의 판독 또는 소거BA<12:16> XOR 어큐뮬레이터 버퍼 수BD<0:31> 결과
100000..10FFFF XOR 어큐뮬레이터 버퍼 W XOR 어큐뮬레이터 버퍼로의 직접 XORBA<12:16> XOR 어큐뮬레이터 버퍼 수BD<0:31> 직접 XOR을 위한 데이터
000000..FFFFFF XOR 어큐뮬레이터 버퍼 X 메모리 버퍼에 관한 플라이바이 XORBA<12:31> 매칭하는 메모리 어드레스BD<0:31> 플라이바이 XOR을 위한 데이터
200000..7FFFFF 널 메모리 버퍼 W 널 메모리 버퍼에 관한 플라이바이 XORBA<12:31> 매칭하는 메모리 어드레스BD<0:31> 플라이바이 XOR을 위한 데이터
는 버스 어드레스(BA) 경로(412), 및 비트(0∼31)를 갖는 버스 데이터 값을 전달하는 버스 데이터(BD) 경로(413)를 포함한다.
상기 제 1 SRAM(430)은, 5비트 워드 메모리 단위로 1메가워드를 포함하고, 제 1 SRAM 어드레스 입력 포트(431), 기입 제어 신호를 입력받기 위한 기입 제어 입력 포트(432), 5비트의 제 1 RAM 데이터 포트(433), 및 유효 제어 신호로서 사용되는 출력 데이터 비트를 제공하기 위한 유효 제어 출력 포트(434)(SRAM(430)에 대한 추가적인 데이터 비트 출력 포트)를 포함한다. 상기 버스 어드레스 경로(412)의 비트(2∼21)는 SRAM 멀티플렉서(435)의 제 1 입력에 연결되고, 버스 어드레스 경로(412)의 비트(12∼31)는 SRAM 멀티플렉서(435)의 제 2 입력에 연결되며, SRAM 멀티플렉서(435)의 출력은 제 1 SRAM 어드레스 입력 포트(431)에 연결된다.
또한, 상기 타이밍 및 제어 요소(420)는, 상기 유효 제어 출력 포트(434)로부터의 유효 제어 신호를 입력받아, 제 2 SRAM(440)을 어드레싱하기 위한 15비트의 RAM 어드레스 경로(RA) 및 제 1 SRAM(430)을 제어하기 위한 기입 제어 경로(415)를 제공한다.
상기 XOR 버퍼(190)는, 15비트의 제 2 SRAM 어드레스 값을 입력받기 위한 제 2 SRAM 어드레스 입력 포트(441) 및 제 2 SRAM(440)내의 연관된 위치에 기억된 32비트의 SRAM 데이터 값을 제공하기 위한 제 2 SRAM 데이터 포트(442)를 포함하는 제 2 SRAM(440)을 포함한다. 상기 RAM(340)과 유사하게, 제 2 SRAM(440)은 개념적으로 32개의 개별적인 XOR 어큐뮬레이터 버퍼들로 분할되는데, 이들 각각은 1K의 32비트 워드(즉, 4K 바이트)를 포함하고, 제 2 SRAM 어드레스 값의 상위 비트로서 자신의 5비트의 XOR 어큐뮬레이터 버퍼 수(0∼31)를 각각 갖는 제 2 SRAM(440)내의 1세트의 기억 장소를 차지한다.
5비트의 값을 1세트 256개의 2비트 태그 중 하나와 연관시키는 대신에, 상기 제 1 SRAM(430)은, 각각의 가능한 20비트 태그에 대해 1개의 엔트리를, 각 엔트리에 대해 1개의 유효 비트를, 유효 비트 세트를 갖는 엔트리에 대해 5비트의 값을 갖는 테이블을 유지한다. 각각의 20비트 태그는, 메모리(120)내의 메모리 버퍼 어드레스(또는 널 메모리 버퍼의 어드레스)의 가능한 상위 20비트를 나타낸다. 각각의 5비트의 값은 가능한 XOR 어큐뮬레이터 버퍼 수를 나타낸다.
상기 제 1 SRAM 데이터 포트(433)에서의 연관된 5비트의 값은, 제 2 SRAM 어드레스 포트(441)에 연결되어, 제 2 SRAM(440)내의 워드를 어드레싱하기 위한 상위 5비트를 제공한다. 버스 어드레스 경로(412)의 비트(2∼11)(즉, 4바이트 워드를 어드레싱하기 위한 하위 10비트)는, 제 2 SRAM(440)내의 워드를 어드레싱하기 위한 하위 10비트를 제공하고, 또한, 제 2 SRAM 어드레스 포트(441)에 연결되어 있다. 따라서, 상기 제 SRAM(440)은, 제 2 SRAM 어드레스 포트(441)에서의 15비트 어드레스를 입력받아, 제 2 SRAM 데이터 포트(442)에서의 32비트 데이터 워드 출력을 제공한다.
상기 제 SRAM 데이터 포트(442)는 제 1 레지스터(450)에 연결되어 있고, 드라이버(451)를 사용하여 버스 데이터 경로(413)(및 제 2 레지스터(452))에도 연결되어 있다. 상기 제 1 레지스터(450) 및 제 2 레지스터(452)는 XOR 연산기(453)의 입력에 연결되어 있는데, 이것은, 전체 32비트 워드에 대해 동시에 XOR 연산을 수행하기 위한 1세트 32개의 XOR 게이트를 포함한다. 상기 XOR 연산기(453)의 출력 및 "제로" 입력(454)은 XOR 멀티플렉서(455)의 입력에 연결되어 있다; 상기 XOR 멀티플렉서(455)의 출력도 상기 제 2 SRAM 데이터 포트(442)에 연결되어 있다.
다른 실시예에서, 특히, 상기 제 2 SRAM(440)이 제 2 레지스터(452)에 대해 적시에 결과를 준비할 만큼 충분히 빠르지 않은 경우, 상기 제 2 레지스터(452)는 FIFO 또는 다른 회로 구성으로 대체될 수 있다.
단계(221) 및 단계(222)에서와 같이, 새로운 RAID 스트라이프에 대해 XOR 어큐뮬레이터 버퍼를 할당하기 위해, 상기 타이밍 및 제어 요소(420)는, 상기 제 1 SRAM(430)이 메모리(120)내의 메모리 버퍼에 대한 20비트 메모리 어드레스(또는 널 메모리 버퍼에 대한 20비트 메모리 어드레스)에 연결되도록 하고, 이 20비트 메모리 어드레스에 의해 특정되는 위치의 32개의 XOR 어큐뮬레이터 버퍼 중 하나에 대한 5비트의 식별자를 기억한다.
상기 SRAM 멀티플렉서(435)는, 상기 타이밍 및 제어 요소(420)의 제어하에서, 상기 제 1 SRAM 어드레스 입력 포트(431)에 연결하기 위해 상기 버스 어드레스 경로(412)의 비트(2∼21)를 선택하고, 상기 버스 데이터 경로(413)로부터의 버스 데이터 값의 비트(0∼4)를 그 기억 장소에 대한 새로운 5비트 값으로서 기억하며, 그 기억 장소에 대해 유효 비트를 설정한다. 상기 프로세서(110)는 특수한 목적을 위해 제 1 SRAM(430)내의 선택된 엔트리를 판독할 수도 있다.
단계(223)에서와 같이, 상기 메저닌 버스(160)를 감시하기 위해, 상기 타이밍 및 제어 요소(420)는, 상기 제 1 SRAM 어드레스 입력 포트(431)에 연결하기 위한 버스 어드레스 경로(412)를 선택한다. 메저닌 버스(160)상에 나타나는 메모리 어드레스(또는 널 메모리 내의 어드레스)의 상위 20비트는 제 1 SRAM(430)의 어드레싱에 사용된다; 그 기억 장소에 대해 유효 비트가 설정되면, 상기 제 1 SRAM 데이터 포트(433)는, 그 20비트 메모리 어드레스와 연관된 XOR 어큐뮬레이터 버퍼에 대한 5비트의 값을 제공한다.
상기 연관된 5비트의 값은, 상기 제 2 SRAM(440)내의 32개의 XOR 어큐뮬레이터 버퍼 중 하나를 선택하는데 사용되는 한편, 상기 버스 어드레스 경로(412)의 비트(2∼11)는, 상기 제 2 SRAM(440)의 XOR 어큐뮬레이터 버퍼내의 개별적인 워드를 선택하는데 사용된다. 상기 제 2 SRAM(440)내의 데이터 값이 상기 제 1 레지스터(452)로 워드 단위로 판독되는 한편, 데이터 값이 상기 메저닌 버스(160)로부터 상기 제 2 레지스터(452)로 워드 단위로 복사된다. 상기 XOR 연산기(453)는, 상기 XOR 어큐뮬레이터 버퍼내의 데이터에 대해 상기 메저닌 버스(160)를 통과하는 데이터와의 XOR 연산을 수행한다. 상기 XOR 연산기(453)로부터의 출력은, 상기 제 2 SRAM 데이터 포트(442)를 사용하여 상기 제 2 SRAM(440)으로 재기입된다.
상기 제 1 플라이바이 XOR 요소(180)와 유사하게, 단계(224)에서와 같이, 누산된 패리티 정보를 판독하기 위해, 상기 타이밍 및 제어 요소(420)는, 상기 제 2 SRAM 어드레스 포트(441)에 연결하기 위한 버스 어드레스 경로(412)를 선택하여, 상기 제 2 SRAM(440)의 XOR 어큐뮬레이터 버퍼내의 각 워드를 차례로 상기 버스 데이터 경로(413)상으로 판독하는 한편, 메모리(120) 또는 디스크 드라이브(140) 중 하나의 어느 한 쪽으로 DMA 전송이 일어난다. 상기 제 1 플라이바이 XOR 요소(180)와 유사하게, 상기 프로세서(110)는, 특수한 목적을 위해, 또는 그렇지 않은 경우, XOR 버퍼(190)내에 있는 동안 패리티 정보에 대해 판독 또는 연산을 수행하는 것이 바람직한 경우, 상기 제 2 SRAM(340)의 엔트리를 직접 판독할 수도 있다. 상기 제 1 플라이바이 XOR 요소(180)와 유사하게, 상기 타이밍 및 제어 요소(420)는, 상기 제 2 SRAM(440)의 XOR 어큐뮬레이터 버퍼내의 각 워드로 제로값을 동시에 기입하여, 상기 XOR 어큐뮬레이터 버퍼가 균일한 제로값으로 리셋되도록 한다.
상기 제 1 플라이바이 XOR 요소(180)와 유사하게, 상기 프로세서(110)는, XOR 버퍼(190)의 내용과 선택된 정보 사이에서 XOR 연산을 직접 수행하도록, 상기 제 2 SRAM(440)내의 선택된 위치에 직접 기입할 수도 있다.
사이 제 2 플라이바이 XOR 요소(180)는, XOR 어큐뮬레이터 버퍼와 연관될 수 있는 상기 메모리(120)내의 메모리 버퍼(또는 널 메모리 버퍼)의 수가 상기 CAM(330)내의 엔트리의 수에 의해 한정되지 않는다는 부가적인 특징을 갖고 있다. 이것은 임의의 폭의 RAID 스트라이프의 사용을 가능하게 하는데, 여기서는 32개의 RAID 스트라이프까지 동시에 사용된다. 상기 제 2 플라이바이 XOR 요소(180)는, 상기 제 1 SRAM 데이터 포트(433)의 폭 및 상기 제 2 SRAM(440)의 크기를 변경함으로써, XOR 어큐뮬레이터 버퍼의 수를 변경하도록 수정될 수 있다.
바람직한 1실시예에서, 상기 버스 어드레스 경로(412) 및 버스 데이터 경로(413)상의 값들은 표 4-1에 나타난 바와 같이 사용된다. 표 4-1에서, 어드레스 범위의 값은 16진수로 나타나 있고, 선택된 비트의 범위는 버스 어드레스(BA) 경로(312) 및 버스 데이터(BD) 경로(313)에 대해 나타나 있다.
표 4-1
어드레스 범위 레지스터 판독/기입 데이터/연산
000000..0000FF PCI 버스 레지스터 RW PCI 버스 프로토콜에 의해 특정된 바와 같음
010000..0103FF 테이블 엔트리 RW 판독 또는 기입 테이블 엔트리BD<0:4> XOR 어큐뮬레이터 수BD<8> 유효 테이블 엔트리BD<12:31> 메모리 버퍼 어드레스
100000..10FFFF XOR 어큐뮬레이터 버퍼 R XOR 어큐뮬레이터 버퍼의 판독 및 소거BA<12:16> XOR 어큐뮬레이터 버퍼 수BD<0:31> 결과
100000..10FFFF XOR 어큐뮬레이터 버퍼 W XOR 어큐뮬레이터 버퍼로의 직접 XORBA<12:16> XOR 어큐뮬레이터 버퍼 수BD<0:31> 직접 XORDMF 위한 데이터
000000..FFFFFF XOR 어큐뮬레이터 버퍼 X 메모리 버퍼에 관한 플라이바이 XORBA<12:31> 매칭하는 메모리 어드레스BD<0:31> 플라이바이 XOR을 위한 데이터
200000..7FFFFF 널 메모리 버퍼 W 널 메모리 버퍼에 관한 플라이바이 XORBA<12:31> 매칭하는 메모리 어드레스BD<0:31> 플라이바이 XOR을 위한 데이터
바람직한 실시예
상기 제 1 플라이바이 XOR 요소(180) 및 그의 관련 XOR 버퍼(190), 및 상기 제 2 플라이바이 XOR 요소(180) 및 그의 관련 XOR 버퍼(190)는 바람직한 실시예들이다. 당업자들에게 있어서, 본 출원의 숙독 후, 상기 제 1 플라이바이 XOR 요소(180) 및 그의 관련 XOR 버퍼(190)는 어떤 세트의 설계 제한에 대해서 바람직하고, 상기 제 2 플라이바이 XOR 요소(180) 및 그의 관련 XOR 버퍼(190)는 다른 세트의 설계 제한에 대해서 바람직하다는 사실은 명백할 것이다.
예컨대, 상기 제 1 플라이바이 XOR 요소(180) 및 그의 관련 XOR 버퍼(190)는, 상대적으로 작지만 복잡한 CAM(330)이 상대적으로 큰 부가적인 외부 SRAM(430)보다 저렴한 경우에 바람직한 반면, 상기 제 2 플라이바이 XOR 요소(180) 및 그의 관련 XOR 버퍼(190)는, 반대의 경우, 또는 상기 RAID 서브시스템에 대한 스트라이프가 상대적으로 넓은 경우에 바람직하다.
다른 실시예
본 명세서에 기술된 구체적인 실시예 또는 실시형태는 어디까지나 본 발명의 기술 내용을 개시한 것으로서, 그와 같은 구체예에만 한정하여 협의로 해석되는 것이 아니고, 본 발명의 정신과 다음에 기재하는 특허청구의 범위내에서 여러가지로 변경하여 실시할 수 있다.

Claims (11)

  1. 스트라이프로부터 적어도 1블록의 데이터를 판독하며, 상기 스트라이프는 복수의 대용량 기억 장치의 각각에 1개의 기억 블록을 포함하고, 상기 판독 단계는 상기 데이터 블록으로부터 버스를 통해 데이터를 전송하는 단계를 포함하는 단계; 및
    상기 버스를 통해 상기 데이터를 전송하는 상기 단계를 수행하는 동안, 상기 전송 단계를 방해하지 않고 XOR 연산의 결과를 누산하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 판독 단계는 상기 데이터를, 메모리 버스를 사용하여 프로세서에 연결되어 있는 메모리로 복사하는 단계를 포함하고;
    상기 데이터 블록으로부터 데이터를 전송하는 상기 단계는, 상기 메모리 버스 이외의 제 2의 버스를 통해 데이터를 전송하는 단계를 포함하며;
    상기 누산 단계는 상기 제 2의 버스를 통해 데이터를 전송하는 상기 단계에 반응하는 방법.
  3. 제 1 항에 있어서,
    상기 판독 단계는 상기 1개의 대용량 기억 장치로부터의 DMA 전송을 초기화하는 단계를 포함하고;
    상기 데이터의 전송 단계는 상기 DMA 전송을 수행하는 단계를 포함하며;
    상기 누산 단계는 상기 DMA 전송에 반응하는 방법.
  4. 제 1 항에 있어서,
    상기 판독 단계는 상기 1개의 대용량 기억 장치로부터 선택된 메모리 위치로의 DMA 전송을 초기화하는 단계를 포함하고;
    상기 선택된 메모리 위치는 상기 메모리에 의해 무시되어, 상기 선택된 메모리 위치로의 상기 DMA 전송이, 상기 메모리에 데이터를 저장하지 않고 상기 결과를 누산하는데 효과적인 방법.
  5. 1개의 프로세서, 1개의 메모리, 상기 프로세서 및 상기 메모리에 연결된 1개의 메모리 버스, 복수의 대용량 기억 장치, 및 상기 복수의 대용량 기억 장치를 상기 메모리 버스에 연결하는 제 2 버스를 갖는 시스템에 있어서,
    상기 복수의 대용량 기억 장치 중 적어도 하나와 상기 메모리의 버퍼 위치 사이의 DMA를 초기화하는 단계;
    상기 버퍼 위치의 복수의 어드레스를 위한 상기 제 2의 버스를 감시하는 단계;
    상기 복수의 어드레스와 연관된 데이터를, 상기 DMA 연산을 방해하지 않고 XOR 버퍼로 복사하는 단계; 및
    상기 데이터에 대한 XOR 연산의 결과를 누산하는 단계를 포함하는 방법.
  6. 제 5 항에 있어서, 상기 버퍼 위치는 상기 메모리에 의해 무시되어, 상기 선택된 메모리 위치로의 상기 DMA 전송이, 상기 메모리에 데이터를 저장하지 않고 상기 결과를 누산하는데 효과적인 방법.
  7. 1개의 프로세서, 상기 프로세서에 연결된 1개의 메모리 버스, 및 상기 메모리 버스에 연결된 1개의 메모리;
    복수의 대용량 기억 장치, 및 상기 복수의 대용량 기억 장치를 상기 메모리 버스에 연결하여, 상기 복수의 대용량 기억 장치 중 하나로의 데이터 전송 및 그로부터의 데이터 전송을 위해 배치되는 제 2의 버스;
    상기 전송 동작을 방해하지 않으면서, 상기 복수의 대용량 기억 장치 중 하나로 전송되는 데이터 및 그로부터 전송되는 데이터를 복사하기 위한 수단, 및 상기 데이터에 대한 XOR 연산의 결과를 누산하기 위한 수단을 포함하는, 상기 제 2의 버스에 연결된 요소를 포함하는 시스템.
  8. 제 7 항에 있어서, 상기 복사 수단은,
    복수의 XOR 어큐뮬레이터 버퍼;
    선택된 메모리 어드레스의 일부를 상기 XOR 어큐뮬레이터 버퍼 중 하나와 매칭시키기 위해 배치되는 메모리;
    상기 메모리 및 상기 제 2의 버스에 연결되고, 상기 메모리의 데이터, 및 상기 선택된 메모리 어드레스와 연관된 데이터에 대해 XOR 연산을 수행하고, 상기 XOR 연산의 결과를 상기 메모리로 기입하기 위해 배치되는 XOR 연산기를 포함하는 시스템.
  9. 제 7 항에 있어서, 상기 1개의 대용량 기억 장치에 연결된 DMA 전송 요소를 포함하며; 상기 요소는, 상기 DMA 전송 요소에 의해 수행되는 DMA 전송을 인식하기 위한 수단, 및 상기 DMA 전송으로부터 데이터를 복사하기 위한 수단을 포함하고; 상기 누산 수단은, 상기 DMA 전송을 인식하기 위한 상기 수단에 반응하는 시스템.
  10. 제 7 항에 있어서, 상기 1개의 대용량 기억 장치에 연결되고, 상기 1개의 대용량 기억 장치 및 1개의 선택된 메모리 위치로부터의 DMA 전송을 수행하기 위해 배치되는 1개의 DMA 전송 요소를 포함하며; 상기 선택된 메모리 위치는 상기 메모리에 의해 무시되어, 상기 선택된 메모리로의 상기 DMA 전송이, 상기 메모리에 데이터를 저장하지 않고 상기 결과를 누산하는데 효과적인 시스템.
  11. 1개의 프로세서, 1개의 메모리, 상기 프로세서와 상기 메모리를 연결하는 메모리 버스, 복수의 대용량 기억 장치, 및 상기 복수의 대용량 기억 장치를 상기 메모리 버스에 연결하는 제 2 버스를 갖는 시스템에 있어서,
    데이터에 대해 수행된 XOR 연산의 결과를 각각 갖는 복수의 XOR 어큐뮬레이터 버퍼; 및
    복수의 엔트리를 가지며, 각 엔트리는 메모리 어드레스의 일부를 상기 XOR 어큐뮬레이터 버퍼 중 하나와 연관시키고, 상기 메모리 어드레스는 상기 데이터와 연관되는 테이블을 포함하는 데이터 구조.
KR10-1998-0708645A 1997-02-28 1998-02-27 버스로부터수집된데이터에대해패리티를발생시키는플라이바이xor KR100352039B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/808,396 US5950225A (en) 1997-02-28 1997-02-28 Fly-by XOR for generating parity for data gleaned from a bus
US8/808,396 1997-02-28
US08/808,396 1997-02-28

Publications (2)

Publication Number Publication Date
KR20000065071A true KR20000065071A (ko) 2000-11-06
KR100352039B1 KR100352039B1 (ko) 2003-01-24

Family

ID=25198648

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0708645A KR100352039B1 (ko) 1997-02-28 1998-02-27 버스로부터수집된데이터에대해패리티를발생시키는플라이바이xor

Country Status (10)

Country Link
US (1) US5950225A (ko)
EP (2) EP0927395B1 (ko)
JP (1) JP2000514941A (ko)
KR (1) KR100352039B1 (ko)
CN (1) CN1242330C (ko)
AT (1) ATE240551T1 (ko)
AU (1) AU6671098A (ko)
DE (1) DE69814579T2 (ko)
HK (1) HK1020624A1 (ko)
WO (1) WO1998038576A1 (ko)

Families Citing this family (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
US6161165A (en) * 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
US6457130B2 (en) 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6343984B1 (en) * 1998-11-30 2002-02-05 Network Appliance, Inc. Laminar flow duct cooling system
EP1912124B8 (en) 1999-10-14 2013-01-09 Bluearc UK Limited Apparatus and system for implementation of service functions
US6370616B1 (en) * 2000-04-04 2002-04-09 Compaq Computer Corporation Memory interface controller for datum raid operations with a datum multiplier
US6728922B1 (en) 2000-08-18 2004-04-27 Network Appliance, Inc. Dynamic data space
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US20020174295A1 (en) 2001-01-29 2002-11-21 Ulrich Thomas R. Enhanced file system failure tolerance
US7054927B2 (en) 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US6799284B1 (en) 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
JP4615137B2 (ja) * 2001-03-26 2011-01-19 富士通セミコンダクター株式会社 同期型メモリに対するフライバイ転送を可能にするdma制御システム
US7739614B1 (en) 2001-05-22 2010-06-15 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of directories
US8171414B2 (en) * 2001-05-22 2012-05-01 Netapp, Inc. System and method for consolidated reporting of characteristics for a group of file systems
US7249150B1 (en) * 2001-07-03 2007-07-24 Network Appliance, Inc. System and method for parallelized replay of an NVRAM log in a storage appliance
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US6757695B1 (en) 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6851070B1 (en) 2001-08-13 2005-02-01 Network Appliance, Inc. System and method for managing time-limited long-running operations in a data storage system
US6965989B1 (en) 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
US6883131B2 (en) * 2001-09-28 2005-04-19 Sun Microsystems, Inc. XOR processing incorporating error correction code data protection
US20030084397A1 (en) * 2001-10-31 2003-05-01 Exanet Co. Apparatus and method for a distributed raid
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US6871317B1 (en) 2001-11-13 2005-03-22 Network Appliance, Inc. Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array
US7346831B1 (en) 2001-11-13 2008-03-18 Network Appliance, Inc. Parity assignment technique for parity declustering in a parity array of a storage system
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
US7613984B2 (en) * 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US7073115B2 (en) * 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance in a raid system
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US7200715B2 (en) 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7426576B1 (en) 2002-09-20 2008-09-16 Network Appliance, Inc. Highly available DNS resolver and method for use of the same
US7171452B1 (en) 2002-10-31 2007-01-30 Network Appliance, Inc. System and method for monitoring cluster partner boot status over a cluster interconnect
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US8041761B1 (en) 2002-12-23 2011-10-18 Netapp, Inc. Virtual filer and IP space based IT configuration transitioning framework
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7664913B2 (en) * 2003-03-21 2010-02-16 Netapp, Inc. Query-based spares management technique
US7424637B1 (en) 2003-03-21 2008-09-09 Networks Appliance, Inc. Technique for managing addition of disks to a volume of a storage system
US7457982B2 (en) * 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
US7383378B1 (en) 2003-04-11 2008-06-03 Network Appliance, Inc. System and method for supporting file and block access to storage object on a storage appliance
US7260737B1 (en) 2003-04-23 2007-08-21 Network Appliance, Inc. System and method for transport-level failover of FCP devices in a cluster
US7739543B1 (en) 2003-04-23 2010-06-15 Netapp, Inc. System and method for transport-level failover for loosely coupled iSCSI target devices
US7293152B1 (en) 2003-04-23 2007-11-06 Network Appliance, Inc. Consistent logical naming of initiator groups
US7437530B1 (en) 2003-04-24 2008-10-14 Network Appliance, Inc. System and method for mapping file block numbers to logical block addresses
US7181439B1 (en) * 2003-04-25 2007-02-20 Network Appliance, Inc. System and method for transparently accessing a virtual disk using a file-based protocol
US7437523B1 (en) 2003-04-25 2008-10-14 Network Appliance, Inc. System and method for on-the-fly file folding in a replicated storage system
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
US7577692B1 (en) 2003-04-25 2009-08-18 Netapp, Inc. System and method for reserving space to guarantee file writability in a file system supporting persistent consistency point images
US7603553B1 (en) 2003-04-25 2009-10-13 Netapp, Inc. System and method to make file handles opaque to clients
US7523201B2 (en) * 2003-07-14 2009-04-21 Network Appliance, Inc. System and method for optimized lun masking
US7593996B2 (en) 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US7055014B1 (en) 2003-08-11 2006-05-30 Network Applicance, Inc. User interface system for a multi-protocol storage appliance
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
TWI259356B (en) * 2004-03-26 2006-08-01 Infortrend Technology Inc Apparatus for checking data coherence, controller and storage system having the same and method therefore is disclosed
US20060123312A1 (en) * 2004-11-19 2006-06-08 International Business Machines Corporation Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
US7353340B2 (en) * 2005-08-17 2008-04-01 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency
US7529894B2 (en) * 2005-08-17 2009-05-05 Sun Microsystems, Inc. Use of FBDIMM channel as memory channel and coherence channel
US7398360B2 (en) * 2005-08-17 2008-07-08 Sun Microsystems, Inc. Multi-socket symmetric multiprocessing (SMP) system for chip multi-threaded (CMT) processors
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US7509460B2 (en) * 2006-05-04 2009-03-24 Sun Microsystems, Inc. DRAM remote access cache in local memory in a distributed shared memory system
US7844584B1 (en) 2006-06-23 2010-11-30 Netapp, Inc. System and method for persistently storing lock state information
US7979701B1 (en) 2006-09-15 2011-07-12 Netapp, Inc. Cross mapping graphical interface to show encryption relationships between hosts and storage devices
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7613947B1 (en) 2006-11-30 2009-11-03 Netapp, Inc. System and method for storage takeover
US7647526B1 (en) 2006-12-06 2010-01-12 Netapp, Inc. Reducing reconstruct input/output operations in storage systems
US7620669B1 (en) 2006-12-15 2009-11-17 Netapp, Inc. System and method for enhancing log performance
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US9646177B2 (en) * 2011-04-29 2017-05-09 Altera Corporation Systems and methods for preventing data remanence in memory systems
US9524107B2 (en) 2014-07-30 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Host-based device drivers for enhancing operations in redundant array of independent disks systems
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10817388B1 (en) 2017-07-21 2020-10-27 EMC IP Holding Company LLC Recovery of tree data in a geographically distributed environment
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
US10817374B2 (en) 2018-04-12 2020-10-27 EMC IP Holding Company LLC Meta chunks
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10936196B2 (en) * 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146588A (en) * 1990-11-26 1992-09-08 Storage Technology Corporation Redundancy accumulator for disk drive array memory
US5469566A (en) * 1992-03-12 1995-11-21 Emc Corporation Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units
US5335235A (en) 1992-07-07 1994-08-02 Digital Equipment Corporation FIFO based parity generator
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5603051A (en) * 1995-06-06 1997-02-11 Hewlett-Packard Company Input/output processor with a local memory providing shared resources for a plurality of input/output interfaces on an I/O bus
US5729705A (en) * 1995-07-24 1998-03-17 Symbios Logic Inc. Method and apparatus for enhancing throughput of disk array data transfers in a controller
US5737744A (en) * 1995-10-13 1998-04-07 Compaq Computer Corporation Disk array controller for performing exclusive or operations
US5742752A (en) * 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US6161165A (en) * 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly

Also Published As

Publication number Publication date
HK1020624A1 (en) 2000-05-12
CN1222986A (zh) 1999-07-14
EP1310874A2 (en) 2003-05-14
EP0927395B1 (en) 2003-05-14
ATE240551T1 (de) 2003-05-15
CN1242330C (zh) 2006-02-15
DE69814579D1 (de) 2003-06-18
WO1998038576A1 (en) 1998-09-03
US5950225A (en) 1999-09-07
EP0927395A1 (en) 1999-07-07
EP1310874A3 (en) 2004-09-22
JP2000514941A (ja) 2000-11-07
KR100352039B1 (ko) 2003-01-24
DE69814579T2 (de) 2004-04-01
AU6671098A (en) 1998-09-18

Similar Documents

Publication Publication Date Title
KR100352039B1 (ko) 버스로부터수집된데이터에대해패리티를발생시키는플라이바이xor
WO1998038576A9 (en) Fly-by xor
US5155835A (en) Multilevel, hierarchical, dynamically mapped data storage subsystem
US5487160A (en) Concurrent image backup for disk storage system
US6484234B1 (en) Method and apparatus for efficiently destaging data from a cache to two or more non-contiguous storage locations
JP3302688B2 (ja) 並列ディスク駆動機構アレイ式データ記憶サブシステム用の論理トラック書込みスケジューリングのシステム
US5210866A (en) Incremental disk backup system for a dynamically mapped data storage subsystem
US5720027A (en) Redundant disc computer having targeted data broadcast
JP3641675B2 (ja) 分割バッファアーキテクチュア
US6513102B2 (en) Internal copy for a storage controller
US5956743A (en) Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
US5893138A (en) System and method for improving channel hardware performance for an array controller
US5996046A (en) Parity generation system for generating new parity using old data in temporary storage without accessing main disk storage of disk drive
US20020087786A1 (en) Method, system, and data structures for superimposing data records in a first data format to memory in a second data format
US5859960A (en) Semiconductor disk apparatus having a semiconductor memory for a recording medium
US6487628B1 (en) Peripheral component interface with multiple data channels and reduced latency over a system area network
US4646237A (en) Data handling system for handling data transfers between a cache memory and a main memory
US5862313A (en) Raid system using I/O buffer segment to temporary store striped and parity data and connecting all disk drives via a single time multiplexed network
US5574736A (en) Data storage device and method of operation
CA2252553C (en) Fly-by xor for generating parity for data gleaned from a bus
EP1662400B1 (en) Apparatus with dual writing function, and storage control apparatus
US20050044300A1 (en) Apparatus with dual writing function, and storage control apparatus
JP2004213684A (ja) 半導体ディスク装置
KR20050004157A (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛
JP2000148665A (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: 20120808

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130812

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140807

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee