KR20100072068A - 스토리지 시스템에 관한 방법 및 시스템 - Google Patents

스토리지 시스템에 관한 방법 및 시스템 Download PDF

Info

Publication number
KR20100072068A
KR20100072068A KR1020107009973A KR20107009973A KR20100072068A KR 20100072068 A KR20100072068 A KR 20100072068A KR 1020107009973 A KR1020107009973 A KR 1020107009973A KR 20107009973 A KR20107009973 A KR 20107009973A KR 20100072068 A KR20100072068 A KR 20100072068A
Authority
KR
South Korea
Prior art keywords
data
memory
memory section
request
section
Prior art date
Application number
KR1020107009973A
Other languages
English (en)
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
Priority claimed from US10/284,268 external-priority patent/US7707351B2/en
Priority claimed from US10/284,278 external-priority patent/US7415565B2/en
Priority claimed from US10/284,199 external-priority patent/US7197662B2/en
Application filed by 링 테크노로지 엔터프라이즈, 엘엘씨 filed Critical 링 테크노로지 엔터프라이즈, 엘엘씨
Publication of KR20100072068A publication Critical patent/KR20100072068A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2017Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

스토리지 시스템은 하나 이상의 메모리 섹션, 하나 이상의 스위치 및 관리 시스템을 포함할 수 있다. 메모리 섹션은 메모리 섹션이 가지는 오류를 검출할 수 있고, 관리 시스템에 검출된 오류에 관한 메시지를 전송할 수 있는 메모리 디바이스 및 섹션 컨트롤러를 포함할 수 있다. 스토리지 시스템은 섹션 컨트롤러로부터 오류 메시지를 수신할 수 있고, 결함이 있는 메모리 섹션을 서비스로부터 제거하는 관리 시스템을 포함할 수 있다. 또한, 관리 시스템은 하나 이상의 스위치에 대한 경로 설정(라우팅) 알고리즘을 결정할 수 있다. 다른 측면에서, 스위치는 데이터 블록 식별자를 포함하는 데이터 요청을 읽을 수 있으며, 상기 데이터 블록 식별자를 기반으로 스위치를 통한 데이터 요청 및 다른 관련 데이터의 경로를 설정할 수 있으며, 이에 따라 데이터 요청이 메모리 섹션으로 발송될 수 있다. 메모리 섹션 컨트롤러는 이에 응하여 요청 데이터를 저장하는 메모리 디바이스 내의 어드레스를 결정할 수 있으며, 이들 어드레스를 요청 데이터를 저장하는 메모리 디바이스로 전송한다. 또한, 다른 측면에서, 데이터에 대한 데이터 요청은 섹션 컨트롤러에 의한 통신 경로를 통해 수신될 수 있다. 섹션 컨트롤러는 요청 데이터를 저장하는 메모리 디바이스 내의 주소를 결정할 수 있다. 이에 응하여, 메모리 디바이스는 데이터를 읽을 수 있고, 데이터를 대응 메모리 인터페이스 디바이스로 전송할 수 있다. 이후, 메모리 인터페이스 디바이스는 섹션 컨트롤러로부터 수신된 식별자를 데이터에 추가할 수 있으며, 요청된 비트를 이들의 목적지로 전송할 수 있으며, 이로써 데이터가 섹션 컨트롤러를 통해 전송될 필요가 없다.

Description

스토리지 시스템에 관한 방법 및 시스템{METHODS AND SYSTEMS FOR A STORAGE SYSTEM}
본 발명은 데이터 스토리지(storage)에 관한 것으로서, 보다 상세하게는 높은 작업 처리량(throughput) 스토리지 디바이스를 위한 방법 및 시스템에 관한 것이다.
많은 수의 데이터 블록을 읽거나 쓰는데 필요한 온라인 트랜잭션 처리(on-line transaction processing : OLTP) 어플리케이션 형식을 소위 H-OLTP 어플리케이션이라 한다. 대형 서버(large server) 또는 메인 프레임 또는 개별 서버들은 일반적으로 H-OLTP의 호스트가 된다. 일반적으로, 이들 어플리케이션은 실시간 작동 시스템, 관계형 데이터베이스, 광섬유 기반 네트워킹, 사용자 커뮤니티로의 분산 통신 설비(distributed communication facilities) 및 어플리케이션 그 자체의 사용을 수반한다. 이들 어플리케이션을 위한 스토리지 솔루션은 저장 프로그램 제어하에서 기구적 디스크 드라이브들과 캐시 메모리들의 조합을 사용한다. H-OLTP 어플리케이션의 스토리지 관리를 위한 기술은 복수의 디스크 드라이브 상에서의 덧붙임 파일 스토리지 알고리즘(redundant file storage algorithms), 메모리 캐시 복제(memory cache replications), 데이터 일관 알고리즘(data coherency algorithms), 및/또는 로드 밸런싱(load balancing)을 사용할 수 있다.
캐시 디스크 어레이(CDAs) 및 솔리드스테이트(solid-state) 디스크 스토리지 시스템(SSDs)의 스토리지 관리 기술의 개괄적인 내용은 다음과 같다.
캐시 디스크 어레이(CDAs)는 공통 프로그램 제어 하에서 디스크 드라이브와 솔리드스테이트 메모리 시스템을 결합한다. CDAs 내의 디스크 드라이브들은 서보-기구(servo-mechanical) 디바이스들이다. 현재, 모터 기술의 발전은 디스크 드라이브 원판이 분당 15,000의 회전수로 회전시킬 수 있다. 개선된 시스템들은 분당 18000 회전수로 디스크 드라이브의 원판을 회전시킬 수 있다.
CDAs는 소정 아키텍처(architecture) 내에서 회전하는 디스크들의 개별 랙(rack)과 공통 메모리 캐시를 결합하며, 용량(capacity)은 더 많은 디바이스 랙, 더 많은 캐시 또는 이들 둘을 추가에 의해 증가될 수 있다. CDAs는 대개 H-OLTP 어플리케이션을 포함하는 필수(mission critical) 어플리케이션에서 스토리지 서비스를 제공하기 위해 회사에 의해 사용될 수 있다.
CDA의 온보드(on-board) 캐시는 캐시 메모리 내에 있는 데이터 억세스 시간이 드라이브 상에 있는 데이터 억세스 시간보다 짧을 수 있기 때문에 사용된 데이터를 자주 저장한다. CDAs와 같이 회전하는 매체를 가지는 하이-엔드(high-end) 스토리지 시스템 디바이스는 전체 작업량 및 메모리 캐시 사이즈에 있어서 이상적으로 원하는 특성을 갖지 않는다.
솔리드스테이트 디스크(SSD)는 컴퓨터의 중앙 처리 장치에 내부 버스 구조를 통해 결합되는 솔리드스테이트 메모리에 상응하는 스토리지 디바이스이다. 외부 컴퓨터(서버 또는 메인프레임)에서, SSD가 고속 통신 링크 또는 네트워크를 통해 바로 컴퓨터에 결합되는 경우, SSD는 매우 빠른 디스크 드라이브로 기능할 수 있다. 저장 프로그램 제어하에서, SSDs는 회사의 필수 어플리케이션 효율적인 실행에 필수적인 트랙잭션 로그들, 데이터베이스 인덱스들 및 특별한 데이터 구조들 전체과 같은 사용된 정보를 자주 저장한다.
큰 용량 스토리지가 대용량, 실시간 어플리케이션을 위한 충분한 작업량을 제공하는 것은 바람직할 것이며, 예를 들어, 재정, 방어, 조사, 고객 관리 및 자국 보안 영역에서 사용되는 최신 어플리케이션인 경우 특히 그러할 것이다.
도 1은 제공되는 방법 및 시스템에 따른 스토리지 허브 환경의 블록 다이어그램.
도 2는 제공되는 방법 및 시스템에 따른 스토리지 허브의 보다 상세한 블록 다이어그램.
도 3은 제공되는 방법 및 시스템에 따른 관리 컴플렉스에 대한 논리적 아키텍처를 나타낸 도면.
도 4는 제공되는 방법 및 시스템에 따른 관리 컴플렉스에 대한 물리적 아키텍처의 블록 다이어그램.
도 5는 제공되는 방법 및 시스템에 따른 바람직한 메모리 섹션의 블록 다이어그램.
도 6은 본 발명에 따라 제공되는 방법 및 시스템에 따른 스위치 및 메모리 섹션의 기능적 다이어그램을 나타낸 도면.
도 7은 제공되는 방법 및 시스템에 따른 스위치 및 메모리 섹션의 다른 기능적 다이어그램을 나타낸 도면.
도 8은 제공되는 방법 및 시스템에 따른 다른 바람직한 스위치의 다이어그램을 나타낸 도면.
도 9는 제공되는 방법 및 시스템에 따른 다른 스위치의 다이어그램을 나타낸 도면.
도 10은 제공되는 방법 및 시스템에 따른 바람직한 파이프라인 시프트 레지스터를 나타낸 도면.
도 11은 제공되는 방법 및 시스템에 따른 메모리 인터페이스 디바이스의 바람직한 실시예의 보다 상세한 블록 다이어그램.
도 12는 제공되는 방법 및 시스템에 따른 바람직한 쓰기 동작에 대한 순서도.
도 13은 제공되는 방법 및 시스템에 따른 읽기 동작에 대한 순서도.
도 14는 제공되는 방법 및 시스템에 따른 분할된 메모리 디바이스의 로컬 다이어그램.
도 15는 제공되는 방법 및 시스템에 따른 메모리 인터페이스 디바이스의 다른 실시예를 나타낸 도면.
도 16은 제공되는 방법 및 시스템에 따른 다른 메모리 섹션을 나타낸 도면.
따라서, 본 발명은 종래 기술의 문제점을 해결하는 방법 및 시스템에 관한 것이다.
본 명세서에서 상세화되고, 광범위하게 설명되는 본 발명의 목적에 따르면, 하나 이상의 메모리 섹션(section), 하나 이상의 스위치 및 하나의 관리 시스템을 포함하는 소정 장치에 대한 방법 및 시스템이 제공된다. 하나 이상의 메모리 섹션은 스토리지 기억 장소에 데이터를 저장할 수 있는 하나 이상의 메모리 디바이스와 메모리 섹션 내의 오류를 검출하고, 검출된 오류에 응답하여 오류 메시지를 전송할 수 있는 메모리 섹션 컨트롤러를 포함한다. 하나 이상의 스위치는 하나 이상의 외부 디바이스에 연결하기 위한 하나 이상의 인터페이스와, 하나 이상의 메모리 섹션 및 외부 디바이스 인터페이스에 연결되며, 소정 알고리즘을 기반으로 메모리 섹션과 외부 디바이스 인터페이스를 상호 연결하는 스위치 페브릭(switch fabric)을 포함한다. 관리 시스템은 상기 메모리 섹션 컨트롤러들로부터 오류 메시지를 수신할 수 있고, 오류 메시지를 보내는 메모리 섹션을 서비스로부터 제거할 수 있으며, 추가적으로, 상기 메모리 섹션들 및 외부 디바이스 인터페이스를 상호 연결하는데 스위치 페브릭이 사용하는 소정 알고리즘을 결정할 수 있으며, 상기 스위치에 결정된 알고리즘을 실행할 것을 명령할 수 있다.
다른 실시예에서, 소정 장치에 대한 방법 및 시스템은 하나 이상의 메모리 섹션, 하나 이상의 스위치를 포함한다.
하나 이상의 메모리 섹션은 데이터 저장을 위한 스토리지 기억 장소를 포함하는 하나 이상의 메모리 디바이스, 메모리 디바이스에 어드레스를 제공하는 하나 이상의 메모리 섹션 컨트롤러를 포함한다. 어드레스들은 메모리 디바이스의 스토리지 기억 장소를 식별하는 것이며, 상기 메모리 디바이스는 메모리 디바이스에 쓰거나 메모리 디바이스로부터 읽을 일군(a set of)의 읽기 및 쓰기 데이터로부터 선택된 기능을 수행하기 위하여 제공된 어드레스를 사용한다. 하나 이상의 스위치는 데이터 블록 식별자를 포함하는 데이터 요청을 수신하며, 데이터 블록 식별자를 기반으로 데이터 요청을 하나 이상의 메모리 섹션으로 스위칭한다. 데이터 블록 식별자는 일군의 스토리지 기억 장소를 식별하기 위한 것이다. 또한, 상기 데이터 요청이 스위칭된 메모리 섹션들은 수신된 데이터 블록 식별자를 메모리 섹션 컨트롤러-메모리 섹션 컨트롤러는 데이터 블록 식별자를 데이터 블록 식별자에 의해 식별되는 스토리지 기억 장소를 위한 일군의 어드레스에 매핑함-로 전송하며, 하나 이상의 메모리 섹션의 메모리 디바이스에 일군의 어드레스를 제공한다.
또 다른 실시예로서, 소정 장치에 대한 방법 및 시스템은 하나 이상의 메모리 디바이스, 메모리 섹션 컨트롤러 및 메모리 인터페이스 디바이스를 포함한다. 하나 이상의 메모리 디바이스는 하나 이상의 어드레스에 의해 위치가 정해지는 데이터를 저장하며, 메모리 디바이스는 제어 신호들을 수신할 수 있다. 메모리 섹션 컨트롤러는 메모리 디바이스에 저장된 데이터에 관한 요청을 수신하고, 요청 데이터에 대한 하나 이상의 어드레스를 결정하며, 요청 데이터를 전송하는데 사용하는 식별자를 결정하며, 요청 데이터를 저장하는 메모리 디바이스에 결정된 어드레스를 포함하는 제어 신호를 메모리 디바이스로 전송한다.
메모리 인터페이스 디바이스는 메모리 디바이스에 저장된 요청 데이터를 메모리 디바이스로부터 수신하는데, 메모리 섹션 컨트롤러로부터 요청 데이터를 전송하는데 사용하는 결정된 식별자를 수신하며, 요청 데이터와 결정된 식별자를 결합하며, 요청 데이터를 목적 디바이스로 전송한다.
발명의 요약 및 하기의 상세한 설명은 청구되는 발명의 범주를 제한하지 않는다. 제공되는 실시예 및 설명은 다른 당업자가 본 발명의 실시를 가능하게 하기 위한 것이다. 첨부되는 도면은 본 발명의 적절한 실시예를 설명하는 일 부분에 관한 것으로서, 상세한 설명과 함께 본 발명의 개별 실시예를 보여주며, 본 발명의 원리를 설명한다.
참조는 바람직한 실시예에서 상세하게 사용될 것이며, 참조의 예는 첨부된 도면에서 나타나게 될 것이다. 어디에서든, 동일 또는 유사한 부분을 언급하기 위해, 동일한 참조 번호가 도면 전체에서 사용될 것이다.
도 1은 제공되는 방법 및 시스템의 바람직한 일 실시예에 따른 스토리지 허브 환경의 블록 다이어그램이다. 도시된 바와 같이, 스토리지 허브 환경은 스토리지 허브(10), 서버(12-1 및 12-2), 외부 관리 시스템(14-1 및 14-2), 비휘발성(non-volatile) 스토리지 디바이스(16), IP 네트워크(18) 및 다른 네트워크(20) 연결을 포함할 수 있다. 스토리지 허브(10)는 복수의 스토리지(미도시)를 포함할 수 있으며, 데이터 블록으로 데이터를 저장한다. 데이터가 데이터 블록으로 저장될 수 있을지라도, 데이터 저장을 위한 다른 메카니즘이 본 발명의 범주에서 벗어남이 없이 사용될 수 있다. 비휘발성 스토리지 디바이스(16)는 전술한 CDA와 같은 마그네틱 스토리지 디바이스를 포함할 수 있다. 비휘발성 스토리지 디바이스(16)는 스토리지 허브(10)에 저장된 데이터의 백업 버전을 저장하기 위해 사용될 수 있다.
하기의 상세한 설명은 다음과 같은 방법으로 구성된다.
첫째, 도 1에 도시된 스토리지 허브(10) 환경이 개괄적으로 설명된다. 그리고, 스토리지 허브(10)를 이루는 컴포넌트에 대한 보다 상세한 설명이 제공되며, 이후에 스토리지 허브에서 데이터를 쓰는 것에 대한 바람직한 방법 및 스토리지 허브로부터 데이터를 읽는 것에 대한 상세한 설명이 제공된다. 그리고, 이들 컴포넌트의 다른 실시예가 설명된다. 그러나, 모든 예시적인 설명들은 본 발명을 이루는 방법 및 시스템의 예시라는 것이 이해되어야 할 것이다. 마찬가지로, 당업자는 이러한 응용에 대해 청구항에서 한정하고 있는 본 발명을 실시하기 위해 사용될 수 있는 다른 방법 및 시스템이 존재할 수 있다는 점을 인지할 것이다.
예를 들어, 서버(12-1 및 12-2)는 내부 또는 외부 네트워크(미도시)에 연결되는 상업적으로 사용될 수 있는 표준 서버 또는 서버의 팜(farms)이다. 예를 들어, 서버(12-1 및/또는 12-2)는 내부 네트워크에 연결된 말단 사용자로부터 정보의 검색 또는 저장 요청을 수신하는 이더넷과 같은 내부 네트워크에 연결될 수 있다. 다른 예로, 서버(12-1 및/또는 12-2)는 외부 네트워크에 연결된 말단 사용자로부터 정보의 검색 또는 저장 요청을 수신하는 인터넷과 같은 외부 네트워크에 연결될 수 있다. 또한, 두 개의 서버(12-1 및 12-2)가 도시되어 있다고 할지라도, 스토리지 허브(10)는 어떤 수의 서버(12)와도 연결될 수 있다.
서버(12)에 의해 실행된 어플리케이션이 데이터를 요청하는 경우, 서버(12)는 스토리지 허브(10)에 데이터를 저장할지 여부를 결정한다. 서버(12)는 서버의 어플리케이션이 요청하는 데이터가 스토리지 허브(10) 상에 있는지 여부를 보여주는 기록을 저장할 수 있다. 이후, 서버(12)는 데이터 요청을 스토리지 허브(10)로 전송함으로써 데이터를 요청한다. 스토리지 허브(10)는 데이터가 저장된 기억 장소로부터 데이터를 읽어서 이를 데이터를 요청한 서버(12-1 또는 12-2)로 전송한다. 서버는 스토리지 허브(10)로부터 데이터를 요청할 수 있는 다른 타입의 어플리케이션들 및 데이터베이스 관리 시스템들을 실행시킬 수 있다. 단지 예에 불과하나, 전형적인 어플리케이션의 예는 결제 시스템, 고객 관계 관리 시스템, 예약 시스템, 주문 시스템, 보안 시스템 등을 포함한다. 데이터베이스 관리 시스템은 오라클(ORACLE), DB2, 사이베이스(Sybase), 인포믹스(informix) 등을 포함한다.
또한, 스토리지 허브(10)는 데이터를 저장하기 위해, 서버(12-1 또는 12-2)로부터 소정의 요청을 수신할 수 있다. 이후, 바람직하게 스토리지 허브(10)는 서버(12)에 쓰기가 이루어진 것(즉, 데이터의 저장)에 대한 응답 또는 실패 메시지 중 어느 하나를 제공한다. 이러한 메시지는, 예를 들어, CDA(16)가 스토리지 허브(10)에 대한 백업으로서 사용되는 경우, 데이터 블록이 안전하게 스토리지 허브(10) 내의 스토리지(미도시)와 CDA(16) 모두에 저장되었다는 것에 대한 응답, 데이터 블록이 스토리지 허브(10)의 스토리지(미도시)에 저장되었다는 것에 대한 응답, 어떤 응답도 없거나 또는 실패 메시지를 포함할 수 있다.
외부 관리 시스템(14)은 외부 관리 시스템(14-2)과 같이 바로 스토리지 허브(10)에 연결될 수 있다. 또는, 외부 관리 시스템(14)은 외부 관리 시스템(14-1)과 같이 네트워크를 통해 스토리지 허브(10)에 연결될 수 있다. 네트워크(18)는 내부 이더넷 네트워크, IP 네트워크, 또는 인터넷과 같이, 소정 타입의 네트워크일 수 있다. 비록, 도 1이 외부 관리 시스템(14-1 및 14-2) 스토리지 허브(10)에 연결된 것으로 도시하였을지라도, 다른 실시예에 있어서, 단지 하나 또는 소정 개수의 외부 관리 시스템이 연결될 수도 있으며, 또는 외부 관리 시스템(14)을 필요로 하지 않을 수 있다. 예를 들어, 다른 실시예에서, 3개 또는 그 이상의 외부 관리 시스템을 가지는 것이 바람직할 수 있다. 또한, 외부 관리 시스템은 예를 들어, HP Openview와 같이, 사유적(proprietary) 또는 상업적으로 이용할 수 있는 소프트웨어를 실행하는 컴퓨터일 수 있다. 스토리지 허브(10)는 저장된 데이터 블록의 상태 또는 기억 장소와 같은 감시(surveillance) 및 관리 정보를 외부 관리 시스템(14)에 제공할 수 있다.
도 2는 제공되는 방법 및 시스템에 따른 스토리지 허브(10)의 상세 블록 다이어그램을 나타낸 도면이다. 도시된 바와 같이, 스토리지 허브(10)는 하나의 스위치 또는 복수의 스위치(22-1 및 22-2), 관리 컴플렉스(26), 및 메모리 섹션(30-1 내지 30-n)를 포함한다. 본 실시예에서, 스위치(22-1 및 22-2)들 모두 활성화될 수 있거나 다른 하나가 활성화 스위치에 문제가 있는 경우에 사용되는 잉여 스위치인 경우, 스위치들 중 하나가 활성화될 수 있다. 비록, 도 2에 두 개의 스위치가 도시되어 있다고 할지라도, 스토리지 허브(12)는 단지 하나 또는 소정 개수의 스위치들을 포함할 수 있다.
도 2에서, 서버(12-2)는 스토리지 허브(10)에 입/출력 (input/output, I/O) 컨트롤러(24)를 통해 네트워크(20)를 경유하여 연결된다. 네트워크는 이더넷 네트워크 또는 인터넷과 같은 소정 타입의 내부 또는 외부 네트워크일 수 있다. I/O 컨트롤러(24)는 특정 네트워크(20)에 연결되는 적절한 I/O 컨트롤러인 것이 바람직하다. 바람직하게는, I/O 컨트롤러(24)는 네트워크(20)의 본래 프로토콜과 스토리지 허브(10)에서 사용되는 로컬 프로토콜 사이에서 신호를 변환한다. 가능한 프로토콜들은 전송 제어 프로토콜(Telecommunication Control Protocol)/인터넷 프로토콜 (TCP/IP), 시스템 네트워크 아키텍처(System Network Architecture: SNA)-기반 프로토콜, 직렬 통신 제어 인터페이스(Serial Communications Control Interface, SCCI), 지능 직렬 통신 인터페이스(Intelligent Serial Communications Interface, ISCI), 섬유 채널(Fibre Channel), 인피니밴드(INFINIBAND), 및 다른 제3 세대 입/출력 (3GIO) 프로토콜을 포함할 수 있으나, 이에 제한되지 않는다.
바람직하게, 메모리 섹션(30)은 스토리지에 억세스하는 다른 하드웨어와 함께 스토리지 허브(10)를 위한 스토리지를 포함한다. 본 명세서에서, "메모리 섹션"이라는 용어는 정보를 저장하기 위해 사용되는 하나 이상의 메모리 디바이스를 포함하는 소정의 서브시스템을 나타낸다. 이러한 아키텍처는 데이터를 저장할 수 있는 다른 디바이스에 응용될 수 있다. 따라서, 스토리지 허브(10)가 데이터 저장 요청을 수신하는 경우, 데이터는 데이터를 저장하는 메모리 섹션(30)으로 전송된다. 마찬가지로, 데이터에 관한 소정 요청이 스토리지 허브(10)에서 수신되는 경우, 상기한 요청은 요청된 정보를 저장하는 메모리 섹션(30)으로 전송될 수 있다. 그리고, 메모리 섹션(30)은 요청된 데이터를 읽고, 후에 이를 데이터를 요청한 서버(12)로 전송한다. 바람직한 메모리 섹션(30)의 보다 상세한 설명 및 이들의 동작은 하기에서 제공된다.
스토리지 허브(10)의 관리 컴플렉스(26)는 스토리지 허브(10)를 위한 관리-타입 기능을 수행하며, 스토리지 허브(10)와 외부 관리 시스템(14)을 연결한다. 본 명세서에서, "관리 컴플렉스"는 스토리지 허브(10)의 관리 기능을 수행하는 소프트웨어 및/또는 하드웨어를 나타낸다. 관리 컴플렉스(26)의 보다 상세한 설명은 하기에서 제공된다.
I/O 컨트롤러(24) 및 스위치들(22-1 및 22-2)은 데이터 블록이 네트워크(20)의 본래 프로토콜로 스토리지 허브에 보내지도록 그리고, 스토리지 허브로부터 수신되도록 관리 컴플렉스(26)에 의한 공통 관리 제어 하에 있는 것이 바람직하다.
각 서버(12-1 및 12-2)는 바람직하게 각각 디바이스 드라이버(28-1 및 28-2)를 포함한다. 디바이스 드라이버(28)은 서버 상에 있는 어플리케이션이 데이터가 스토리지 허브(10)로부터 읽혀지거나 스토리지 허브(10)에 쓰여지도록(즉, 스토리지 허브(10)에 저장되도록) 허용하는 서버 상의 소프트웨어를 실행시키는 프로그램이다. 서버(12)가 데이터를 읽거나 쓰기 위한 요청을 수신하는 경우, 서버(12)의 디바이스 드라이버(28)는 상기한 요청을 스토리지 허브(10) 내의 스위치로 전송한다. 예를 들어, 디바이스 드라이버(28)는 서버-상주(server-resident) 소프트웨어의 일부분으로서 공급되는 표준 디바이스 드라이버일 수 있으며, 또는 스토리지 디바이스 공급자에 의해 공급되는 사유 소프트웨어일 수 있다. 또한, 몇몇 어플리케이션에서, 디바이스 드라이버(28)는 서버에 상주하는 소정 어플리케이션에 독립적일 수 있다.
스위치들(22-1 및 22-2)은 서버(12-1), I/O 컨트롤러(24), CDA(16) 및 메모리 섹션(30-1 내지 30-n)에 소정의 산업 표준 통신 인터페이스 프로토콜을 통해 각각 연결된다. 예를 들어, 이들 통신 인터페이스 프로토콜은 섬유 채널, 비동기 전송 모드(Asynchronous Transfer Mode: ATM), 이더넷, 섬유 분산 데이터 인터페이스(Fiber Distributed Data Interface: FDDI), 시스템 네트워크 아키텍처(SNA) 인터페이스, 또는 X.25일 수 있다. 예를 들어, 구리 또는 광섬유 케이블과 같은 소정 타입의 물리적 커넥션이 이들 다양한 컴포넌트들을 연결하는데 사용될 수 있다. 관리 컴플렉스(26)는 바람직하게 기가비트(Gigabit) 이더넷 연결을 통해 스위치(22), 메모리 섹션(30-1 내지 30-n), I/O 컨트롤러(26) 및 외부 관리 시스템(14)에 연결된다. 이들이 바람직한 연결이라고 하더라도, 당업자는 이들 디바이스들을 연결하기 위해 사용되는 많은 수의 다양한 프로토콜 및 물리적 매체가 있다는 것을 인식할 것이다. 또한, 메모리 섹션(30)은 동시적으로 이들 디바이스를 연결하기 위한 복수의 프로토콜 및 물리적 매체를 지원할 수 있다.
스위치들(22)은 예를 들어, 시분할 멀티플렉스 페브릭(time division multiplexed febric) 또는 공간 분할 멀티플렉스 페브릭(space division multiplexed febric)과 같은 소정 타입의 스위치 페브릭일 수 있다. 본 명세서에서, "스위치 페브릭"이라는 용어는 유입(incoming) 인터페이스로부터 유출(outgoing) 인터페이스로 데이터를 보내는 물리적 상호 연결 아키텍처를 나타낸다 예를 들어, 스위치들(22)은 섬유 채널 스위치, ATM 스위치, 스위칭된 고속 이더넷 스위치, 스위칭된 FDDI 스위치, 또는 소정의 다른 타입의 스위치일 수 있다. 또한, 스위치들(22)은 스위치를 제어하기 위한 컨트롤러(미도시)를 포함할 수 있다.
쓰기 동작에 있어서, 데이터 블록은 스토리지 허브(10)의 메모리 섹션(30)에 쓰여지는 것 외에, 캐시 디스크 어레이(16) 또는 다른 스토리지 허브(미도시)에 쓰여질 수 있다. 데이터가 쓰여진 후에, 스토리지 허브(10)는 소정의 응답을 관리 컴플렉스(26) 내의 구성 관리 변수(configuration management parameter)에 의존하는 서버(12)의 디바이스 드라이버(28)로 전송할 수 있다. 구성 관리 변수의 예는 상태(status) 변수, 쓰기-응답 변수, 라우팅(routing) 변수, 보고 간격(reporting interval) 변수 및 현재 날짜 및 시간이다.
데이터 블록 읽기 요청에 대해, 그리고 데이터 블록을 요청하는 디바이스 드라이버(28)의 요청에서, 스위치들(22)은 상기한 요청을 적절한 메모리 섹션(30)에 전송하며, 메모리 섹션(30)은 데이터 블록을 검색하여 이를 스위치(22)를 통해 최초 요청한 서버(12)의 디바이스 드라이버(28)로 전송한다.
데이터 블록의 읽기 및 쓰기 동작 동안 그리고, 관리 컴플렉스(26) 내의 구성 관리 변수에 의존하는 동안, 메모리 섹션(30)은 관리(administrative) 데이터를 수집하고, 이를 관리 컴플렉스(26)로 전송한다. 관리 컴플렉스(26)는 관리 데이터를 외부 관리 시스템(14)에서 이용할 수 있도록 변형한다.
또한, 관리 컴플렉스(26)는 감시 및 관리 정보를 수집할 수 있고, 이를 외부 관리 시스템(14)에 제공할 수 있다. 감시 정보는 예를 들어, 메모리 섹션 하트비트(heartbeat)(즉, 메모리 섹션이 계속 통신할 수 있는 것을 나타내는 신호), 경보, 경보의 응답을 포함한다. 관리 정보는 예를 들어, 읽혀지고, 쓰여진 데이터에 대한 통계, 활성화 메모리 섹션의 개수에 대한 통계, 이용 가능한 메모리 섹션에 대한 통계 및 외부 관리 시스템에 제공하는 상기한 정보에 관한 보고를 포함할 수 있다.
또한, 외부 관리 시스템(14)은 관리 컴플렉스(26)에 구성 관리 데이터를 제공할 수 있다. 이러한 구성 관리 정보는, 예를 들어, 유효 통신 네트워크 어드레스들, 하트비트 간격 주기, 데이터 블록 사이즈 및 커맨드(command) 세트를 포함할 수 있다.
또한, 스토리지 허브(10)는 현장에서 이용할 수 있는 표준 수단을 사용하여 비트-레벨 에러 복구를 수행할 수 있다. 예를 들어, 에러 검출 및 보정(error detection and correction, EDAC) 코드로 지칭되며, 회로 및/또는 소프트웨어를 사용하는 에러 보정 코드(error correction codes, ECC)가 정확성을 위해 데이터를 테스트하는데 사용될 수 있다. 이들 코드들 및 기술들은 에러 검출 및 보정을 위해 복수의 패리티 비트를 사용하는 패리티 비트(parity bit) 또는 순환 잉여 검사(cyclic redundancy checks)를 포함하며, 또한 복수의 에러 검출을 위해 더욱 개선된 기술(예를 들어, Reed-Solomon 코드)을 포함한다. 또한, 스토리지 허브(10)의 각 메모리 섹션(30)은 그 자체의 에러 보정 구조(error correction scheme)를 포함할 수 있다.
아래에서 도 2에 도시된 스토리지 허브(10)의 컴포넌트인 관리 컴플렉스(26), 스위치(22) 및 메모리 섹션(26)에 대한 보다 상세한 설명이 제공된다. 이러한 설명 후에 바람직한 읽기, 쓰기 및 테스트 과정이 상세하게 설명된다. 그리고, 메모리 섹션(30)의 다른 바람직한 실시예들이 스토리지 허브(10) 및 이의 컴포넌트의 바람직한 특성과 함께 제공된다.
관리 컴플렉스(MANAGEMENT COMPLEX)
도 3은 제공되는 방법 및 시스템에 따른 관리 컴플렉스(26)에 대한 로컬 아키텍처를 나타낸 것이다. 도시된 바와 같이, 관리 컴플렉스(26)는 관리 프로세스(administrative processes)(32)들을 관리하는 기능(functions) 및 제어 프로세스(control processes)(34)들을 관리하는 기능을 포함한다. 이들 관리 기능들은 각 프로세스를 실행하는 하나 이상의 중앙 처리 유닛들(CPUs)을 포함할 수 있다. 또한, 관리 컴플렉스(26)는 이들 기능 사이에서 통신하기 위한 하나 이상의 어플리케이션 프로그램 인터페이스들(APIs)을 포함할 수 있다.
도 4는 제공되는 방법 및 시스템에 따른 관리 컴플렉스(26)에 대한 물리적 아키텍처의 블록 다이어그램이다. 도시된 바와 같이, 관리 컴플렉스는 하나 이상의 제어 프로세서(34-1 내지 34-n), 공유 메모리(36), 하나 이상의 관리 프로세서(32-1 내지 32-m), 스토리지 디바이스(38) 및 통신 네트워크(40)를 포함한다. 전술한 바와 같이, 제어 프로세서(34)는 하나 이상의 중앙 처리 유닛(CPUs)를 포함할 수 있다. 이들 제어 CPU(34-1 내지 34-n)는 공유 메모리(36)와 인터페이스로 접속한다. 통신 네트워크(40)는 내부 네트워크일 수 있고, 기가비트 이더넷과 같은 소정 타입의 통신 프로토콜을 사용할 수 있다.
하나 이상의 제어 프로세서(예를 들어, 34-1 내지 34-m)는 마스터(들)로서 기능할 수 있는 반면, 잔존 제어 프로세서(예를 들어, 34-(m+1) 내지 34-n)는 고속 대기 모드(hot standby mode)로 유지될 수 있으므로, 이들은 마스터 제어 프로세서(즉, 34-1)가 작동하지 않는 경우, 빠르게 스위칭될 수 있다.
제어 CPU들(34)은 기가비트 이더넷 네트워크와 같은 통신 네트워크에 결합될 수 있으며, 마그네틱 스토리지 디바이스(38)에 바로 결합될 수 있다.
관리 프로세서(32)는 각각 메모리(미도시)를 포함할 수 있으며, 또한 통신 네트워크(40)에 결합될 수 있다. 또한, 이들 관리 프로세서들은 마그네틱 스토리지 디바이스(38)와 연결될 수 있다. 마그네틱 스토리지 디바이스(38)는 제어 프로세서(34) 및 관리 프로세서(32)로부터 다양한 제어 및 관리 정보를 저장한다. 마그네틱 스토리지 디바이스(38)는 예를 들어, 서보-기구 디스크 드라이브와 같은 소정 타입의 마그네틱 스토리지 디바이스일 수 있다. 다른 실시예에서, 스토리지 디바이스(38)는 필요로 하지 않을 수 있다.
제어 프로세서(34)는 메모리 섹션(30), I/O 컨트롤러(24), 스위치(22) 및 서버(12)의 디바이스 드라이버(28)를 위한 구성 관리 기능을 수행한다. 본 명세서에서, "구성(configuration)"은 스토리지 허브의 각 컴포넌트의 여러 가능한 동작 상태를 포함하는 광의의 용어이다. 본 명세서에서, "동작 상태(operating state)"는 스토리지 허브 또는 스토리지 허브 컴포넌트 중 하나가 변수값에 의해 한정된 대로 동작하는 가능한 방법을 나타낸다. 이들 변수값은, 예를 들어, 시스템 관리자와 같은 스토리지 허브의 사용자에 의해, 그리고, 외부 관리 시스템(14)을 통해 설정될 수 있다.
동작 상태는 예를 들어, 소정의 컴포넌트(예를 들어, 메모리 섹션(30))가 성능 통계(performance statistics)를 얼마나 자주 관리 컴플렉스(26)로 전송하였는지 여부, 소정의 컴포넌트(예를 들어, 메모리 섹션 등)가 경보 보고를 야기하였지에 대한 이벤트 목록, 및/또는 보고된 경보의 타입(예를 들어, 컴포넌트의 돌발 고장(catastrophic failure), 작은 고장 등)을 포함할 수 있다. 또한, 본 명세서에서, "구성 관리(configuration management)"는 스토리지 허브 컴포넌트의 현재 동작 상태의 이해 및 제어 프로세서(34)에서 구동하는 소프트웨어에 의해 한정된 이들 컴포넌트의 상태 변화에 대한 응답 능력을 의미한다. 예를 들어, 제어 프로세서(34)는 스토리지 허브(10) 내에서 활성화 메모리 섹션(30), 스위치들(22) 및 디바이스 드라이버(28), 만일 가능하다면, 스토리지 허브에 연결된 외부 서버(22)의 개수를 실시간으로 제어할 수 있다.
또한, 제어 프로세서(34) 내의 소프트웨어는 관리 컴플렉스가 수행하는 다른 기능과는 독립적으로 그리고, 실질적으로 다른 메모리 섹션(30)의 동작에 영향을 미치지 않고, 또는 그 반대로 다른 모든 스토리지 허브 성능에 영향을 미치면서 새로운 메모리 섹션을 서비스로 불러들일 수 있고, 메모리 섹션을 서비스로부터 제거할 수 있다. 이와 같은 기능을 수행하기 위한 명령은 제어 프로세스(34)에서 스위치(22)로 그리고, 서버(12) 내에 있는 디바이스 드라이버(28)로 전해질 수 있다. 새로운 용량(capacity)이 스토리지 허브(10)에 추가되는 경우, 제어 프로세서(32)에서 소프트웨어 성능(software capability)을 가지면서 새로운 메모리 섹션을 서비스 내로 불러들이는 것이 가능하다. 메로리 섹션(30)에 오류가 발생한 경우, 결함이 있는 메모리 섹션(30)은 서비스 내로 새로 불려진 메모리 섹션으로 대체될 수 있다. 오류 관리의 추가적인 설명은 하기에서 할 것이다.
또한, 제어 프로세서(34)는 예를 들어, 스토리지 허브(10)에 대한 오류 관리를 수행할 수 있다. 본 명세서에서 사용되는 "오류 관리(fault management)"는 오류를 검출하고, 오류 검출에 응답하여 보정 조치를 위하고자 하는 시도를 의미한다. 예를 들어, 제어 프로세서는 하나의 메모리 섹션(30), 메모리 섹션(30)의 일부분의 동작 오류를 인지할 수 있고, 데이터를 작동하는 메모리 섹션(30)에 재배치할 수 있다. 그리고, 제어 프로세서(34)는 이러한 재배치를 외부 관리 시스템(14) 및 스토리지 허브(10)에 결합된 서버(12) 상에서 구동하는 디바이스 드라이버(28)에 전달할 수 있다.
또한, 제어 프로세서(34)는 메모리 섹션이 전원 장애에 의해 마그네틱 스토리지 디바이스(38)에 쓰기를 실패하는 경우, "배드블록(bad-block)" 재배치(remapping) 기능을 관리할 수 있다. 배드블록 재배치는 손상된 메모리 디바이스내에 있는 섹션 컨트롤러(54) 또는 관리 컴플렉스(26)에 의해 발견된 데이터 블록들을 복구하는 과정이다.
예를 들어, 제어 프로세서(34)가 메모리 섹션(30-2) 내에서 바르게 읽지 못한 블록 65,000을 발견하는 경우, 제어 프로세서(34)는 메모리 섹션(30-2) 내의 블록 65,000을 메모리 섹션(30-2) 내의 블록 기억 장소 1,999,998로 재배치하는 것을 결정할 수 있다. 그리고, 제어 프로세서(34)는 CDA(16)에 데이터 블록을 읽도록 지시할 수 있고, 데이터 블록이 메모리 섹션(30-2) 내의 기억 장소 1,999,998에 쓰여지도록 할 수 있다. 완료되면, 제어 프로세서(34)는 스위치(22) 및 메모리 섹션(30-2)에 블록 65,000이 현재 기억 장소 1,999,998로부터 읽혀질 수 있다는 점을 통지한다.
배드블록 재배치의 다른 예에 따르면, 단지 예시에 불과하나, 메모리 섹션 상의 하나의 메모리 디바이스에 오류가 발생한 경우, 관리 컴플렉스(26) 내의 제어 프로세서(34)는 섹션 컨트롤러(54)에 결함이 있는 디바이스에 대해서 통지할 수 있고, 결함이 있는 메모리 디바이스 상의 데이터를 어디에(예를 들어, CDA(16)) 백업할지를 결정하며, 백업된 데이터가 동일한 메모리 섹션 또는 다른 메모리 섹션 상의 대체 메모리 디바이스 상으로 로드될 수 있도록 지시할 수 있다.
또 다른 예에 따르면, 제어 프로세서(34)가 메모리 섹션(30)에 오류가 있는 것으로 결정하는 경우, 제어 프로세서(34)는 전체 메모리 섹션(30)을 서비스에서 제거하고, 대체 메모리 섹션이 메모리 섹션(30)을 대체할 것을 지시할 수 있다. 이를 위해, 제어 프로세서(34)는 예를 들어, CDA(16)에 결함이 있는 메모리 섹션(30)에 있는 데이터의 백업 버전을 다른 메모리 섹션(30-N)으로 전송할 것을 지시할 수 있는데, 다른 메모리 섹션(30-N)은 예를 들어, 메모리 섹션(30)에 오류가 발생한 경우 사용하는 여분 메모리 섹션(30)일 수 있다. 새로운 메모리 섹션(30-N)은 현재 결함이 있는 메모리 섹션(30)인 것처럼 동작할 수 있다. 제어 프로세서(34)는 이러한 정보를 여러 디바이스 드라이버(28) 및 외부 관리 시스템(14)에 전달할 수 있다.
또한, 제어 프로세서(34)는 메모리 섹션(30), 스위치 컨트롤러(들)(202), 및 I/O 컨트롤러(24)에 최신의 새로운 소프트웨어를 제공할 수 있다. 예를 들어, 메모리 섹션(30) 또는 스위치(22)에서 사용하는 소정 소프트웨어가 손상되거나 잘못된 경우, 제어 프로세서(34)는 스토리지(38)로부터 소프트웨어 이미지의 현재 또는 이전 버전의 백업 사본을 로드할 수 있다. 소프트웨어 이미지는 컴퓨터에서 바로 실행될 수 있는 바이너리 객체 코드이다. 일 실시예에서 제어 프로세서(34)를 위한 소프트웨어 이미지는 마그네틱 스토리지(38)에 저장된다. 또한, 제어 프로세서(34)는 CDA(16)에서 메모리 섹션(30)으로의 데이터 블록 로딩을 제어할 수 있으며, 메모리 섹션(30)에서 CDA(16)로의 데이터 블록 로딩을 제어할 수도 있다.
또한, 제어 프로세서(34)는 예를 들어, 스토리지 허브(10)의 컴포넌트들로부터 컴포넌트가 경보를 보냈던 시간 또는 컴포넌트가 경보 상태에 있었던 전체 경과 시간과 같은 정보를 통신 인터페이스를 통해 수신할 수 있다.
또한, 제어 프로세서(34)는 관리 프로세서(32)가 스토리지 허브의 동작 상태를 포함하는 활성화 메모리 섹션(30)의 개수, 일정 시간 동안 스토리지 허브(10)의 총 작업량, 메모리 섹션 큐(queues)의 사이즈 등과 같은 변수에 관한 데이터를 수집할 수 있도록 한다(메모리 섹션 큐는 아직 완료되지 않은 읽기 동작 및 쓰기 동작의 목록을 포함하는 섹션 컨트롤러 내의 큐이다). 또한, 제어 프로세서(34)는 예를 들어, 어떠한 제어 프로세서가 마스터로서 활성화될 것인지, 대기 상태에 있을 것인지 및 만약 가능하다면, 동작하지 않도록 할 것인지에 대한 결정과 같이 자가 동작 상태를 감시할 책임을 진다. 또한, 제어 프로세서(34)는 극단적인 온도 또는 습도 등에 대해 스토리지 허브의 환경을 감시할 수 있다.
또한, 제어 프로세서(34)는 스위치(22)에 의해 실행되는 소프트웨어(즉, 소프트웨어 이미지)의 사본을 저장할 수 있다. 스위치(22)의 상세한 설명은 하기에서 제공된다. 만약 필요하다면, 스위치 소프트웨어를 하나 이상의 스위치에 다시 로드할 수 있다. 하기에서 설명되는 바와 같이, 스위치(22)는 스위치(22)를 제어하기 위한 상기 소프트웨어를 실행시키는 하나 이상의 스위치 컨트롤러(미도시)를 포함할 수 있다. 스위치(22)가 마스터-슬레이브(master-slave) 아키텍처 내에서 구성된 복수의 컨트롤러를 사용하는 경우, 제어 프로세서(34)는 스위치 내에서 어떠한 컨트롤러가 마스터(들)이고, 슬레이브(들)가 되는지 여부를 결정할 수 있다.
또한, 제어 프로세서(34)는 스위치(22) 상의 포트들의 상태(활성(active), 아이들(idle), 서비스 배제(out-of-service))를 결정할 수 있으며, 상기한 포트들이 서버(12) 또는 메모리 섹션(30)에 연결되는데 사용될지 여부를 결정할 수 있다. 또한, 제어 프로세서(34)는 구성 관리 데이터를 스위치(22)에 제공할 수 있다. 구성 관리 데이터의 예는 날짜, 시간, 사용되는 라우팅 알고리즘, 상태 체크 간격, 활성화 서버 포트의 아이덴티티(identity) 등을 포함한다. 또한, 제어 프로세서(34)는 스위치에 연결 설정에 사용될 수 있는 아이들 포트를 찾아내기 위해 다른 "헌트(hunt)" 알고리즘을 사용하도록 명령할 수 있다. 이들 알고리즘은 스위치 컨트롤러에 의해 실행되는 소프트웨어에 포함될 수 있으며, 예를 들어, 로터리 헌트(rotary hunt), 스킵 라우트(skip route) 및 최저 사용(least-used) 방법을 포함할 수 있다.
바람직하게, 관리 프로세서(32)는 I/O 컨트롤러(24), 메모리 섹션(30), 스위치(22) 및 제어 프로세서(34)로부터 정보 및 통계를 수집한다. 수집된 정보 및 통계는 통계 보고, 원격(telemetry) 데이터, 다른 경보 및 관리 데이터를 생성하기 위한 정보를 포함할 수 있다. 관리 프로세서(32)는 이러한 정보를 TCP/IP 또는 다른 적절한 프로토콜을 이용하여 외부 관리 시스템(14)에 제공한다. 관리 프로세서(32)는 디바이스 드라이버(28), 스위치(22) 및 메모리 섹션(30)으로부터 이러한 변수에 관한 데이터를 수집할 수 있다.
예를 들어, 시스템 관리자와 같은 외부 관리 시스템의 사용자들은 스토리지 시스템(10)의 구성 관리 변수를 변경할 것을 요청할 수 있다. 이러한 변경은 예를 들어, 새로운 메모리 섹션(30)의 추가로 나타날 수 있다. 또한, 시스템 관리자와 같은 외부 관리 시스템의 사용자들은 관리 프로세서(36)에 하나 이상의 스토리지 허브(10)을 포함하는 스토리지 영역 네트워크 환경(스토리지 디바이스에 단독으로 적용된 네트워크에 의해 연결된 일군의 스토리지 디바이스), 하나 이상의 스토리지 허브(10)를 포함하는 네트워크 영역 스토리지 환경(다른 트래픽이 공유된 네트워크에 의해 연결된 일군의 스토리지 디바이스) 및 다른 관리 시스템으로부터 통계 데이터를 수집할 것을 요청할 수 있다. 예를 들어, 이러한 통계 데이터는 각 스토리지 환경 또는 특정 서버로부터의 전체 유입 요청을 포함할 수 있다.
관리 프로세서(32)는 관리 데이터가 표준 데이터베이스에 저장되도록 데이터베이스 프로그램을 실행할 수 있으며, 표준 데이터베이스는 스토리지 허브(10)의 시스템 관리자에게 컴퓨터 스크린 또는 종이 상에 보고서 또는 그래프로 정보를 제공하는데 사용될 수 있다. 예를 들어, 스토리지 허브의 시스템 관리자는 이러한 정보에 억세스할 권한을 얻기 위해서 외부 관리 시스템을 사용할 수 있다. 이와 달리, 스토리지 허브(10)의 시스템 관리자는 관리 프로세서의 인터페이스를 통해 이러한 정보에 바로 억세스할 수 있다.
제어 프로세서(34)와 마찬가지로, 관리 프로세서(36)는 자가 감시를 할 수 있으며, 관리 프로세서 자신의 동작 상태를 제어 프로세서로 전달할 수 있으며, 이에 따라 제어 프로세서는 어떤 관리 프로세서(34)를 어떤 이유로 활성화 또는 비활성화할지 여부를 결정한다.
관리 컴플렉스(26)는 비휘발성 스토리지 디바이스에 하나 이상의 메모리 섹션(30)으로 데이터를 로드하도록 명령할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 스토리지 허브(10)는 CDA(16)와 같은 비휘발성 스토리지 디바이스에 연결될 수 있다. 따라서, 관리 컴플렉스(26)는 CDA(16), 스위치(22) 및 메모리 섹션(30)에 여러 기능의 수행을 위한 명령을 전송할 수 있다. 여러 기능은 스토리지 허브(10)에 전원이 공급되는 경우, 예를 들어, 스토리지 허브(10)의 구성에 관리상의 변화, 메모리 섹션(30)의 오류 또는 사용자 초기화 명령에 따라 전원 공급이 중단된 후에 스토리지 허브(10)가 다시 재시동하는 경우, 비휘발성 스토리지 디바이스(16)에서 메모리 섹션(30)으로 로딩하는 것을 포함할 수 있다.
상기 제공된 여러 관리 및 제어 기능들이 관리 컴플렉스(26)에 의해 수행될수 있다고 할지라도, 관리 컴플렉스(26)는 전체, 하나의 서브세트, 또는 완전히 다른 기능을 수행할 수 있다는 점이 이해되어야 할 것이다. 또한, 도 3 및 도 4가 분리된 관리 프로세서(32) 및 제어 프로세서(34)를 사용하여 실행되는 바람직한 관리 컴플렉스를 도시하였다 할지라도, 관리 컴플렉스는 단지 하나 또는 소정 개수의 프로세서를 이용하여 실행될 수도 있으며, 전혀 사용되지 않을 수도 있다.
메모리 섹션(MEMORY SECTION)
도 5는 제공되는 방법 및 시스템에 따른 바람직한 메모리 섹션(30)의 블록 다이어그램이다. 도시된 바와 같이, 메모리 섹션(30)은 스위치 포털("S-포털(S-portal), 42)", 섹션 컨트롤러(54), 읽기 전용 메모리(read only memory: ROM)(56), 임시 스토리지(58), 임시 스토리지 인터페이스 디바이스(60), 임시 저장 셀렉터("T-셀렉터")(62), 동기 장치(synchronizer)(68), 하나 이상의 메모리 인터페이스 디바이스(64-1 내지 64-8) 및 하나 이상의 메모리 디바이스(66-1 내지 66-n)를 포함할 수 있다.
메모리 디바이스(66)는 다이나믹 랜덤 억세스 메모리(dynamic random access memory: DRAMs), 동기 다이나믹 랜덤 억세스 메모리(synchronous dynamic random access memory: SDRAMs), 램버스 DRAMs(Rambus DRAMs: RDRAMs), 마그네틱 랜덤 억세스 메모리, 저항(resistance) 랜덤 억세스 메모리, 강유전체(ferroelectric) 랜덤 억세스 메모리, 고분자 랜덤 억세스 메모리, 칼코겐 화합물(chalcogenide) 랜덤 억세스 메모리, 단일 인라인 메모리 모듈(single in-line memory module: SIMMs), 이중 인라인 메모리 모듈(dual in-line memory module: DIMMs), 램버스 인라인 모듈(RIMMs), 회전 매체 등과 같은 소정 타입의 메모리 디바이스일 수 있다. 비록, 본 명세서에서 메모리 인터페이스 디바이스라는 용어가 사용된다고 할지라도, 이 용어는 메모리 디바이스에 저장된 정보에 억세스할 수 있는 소정 타입의 억세스 디바이스를 포함하여 넓게 해석될 수 있다는 점이 이해되어야 할 것이다. 바람직한 메모리 인터페이스 디바이스의 상세한 설명은 하기에서 제공될 것이다.
섹션 컨트롤러(54)는 예를 들어, 마이크로프로세서(51), 내장 메모리(52), 관리 컴플렉스 인터페이스(53), 메모리 디바이스 제어 회로(55), 통신 채널 인터페이스(communication channel inferface: CCI) 제어 회로(57), 테스트 회로(59), 타이밍 회로(61) 및 헤더/테스트(Header/test) 인터페이스(63)를 포함할 수 있다. 마이크로프로세서(51)는 예를 들어, 적절한 소프트웨어를 실행하는 모토로라 G2(Motorola G2)와 같은 칩일 수 있다. 내장 메모리(52)는 예를 들어, 프로그램 및 데이터 저장을 위한 32 메가바이트의 사용 가능한 SRAM일 수 있다. 이러한 내장 메모리(52)는 모토로라 G2와 같은 마이크로 프로세서(51)에 포함될 수 있다. 관리 컴플렉스 인터페이스(53)는 예를 들어, 섹션 컨트롤러(54)가 관리 컴플렉스(26)와 통신하는데 사용할 수 있는 기가비트 이더넷 인터페이스에서 구동하는 TCP/IP일 수 있다. 헤더/테스트 인터페이스(63)는 섹션 컨트롤러(54)로부터 메모리 인터페이스 디바이스(64)에 정보를 제공하기 위한 적절한 인터페이스일 수 있다.
또한, 섹션 컨트롤러(54)는 최초 전원이 인가되는 경우에 사용될 수 있는 부트스트랩(bootstrap) ROM(56)에 억세스할 수 있다. 이러한 부트스트랩 ROM(56)은 예를 들어, 섹션 컨트롤러(54)가 관리 인터페이스(53)을 통해 현재 소프트웨어 이미지를 얻기 위해 제어 프로세서(34)와 통신할 수 있도록 하는 작은 소프트웨어 이미지를 포함할 수 있다. 또한, 섹션 컨트롤러(54)는 CCI 제어 회로(57)를 포함할 수 있으며, CCI 제어 회로(77)는 예를 들어, 통신 채널 인터페이스(46)의 관리에서 사용하는 다이렉트 메모리 어드레스 회로를 포함할 수 있다.
또한, 섹션 컨트롤러(54)는 메모리 디바이스(66)를 제어하기 위한 메모리 디바이스 제어 회로(55)를 포함할 수 있다. 이러한 메모리 디바이스 제어 회로(55)는 예를 들어, 메모리 래치(latch)의 바이너리 상태를 통해 메모리 디바이스(66)의 상태를 제어하기 위한 메모리 래칭(latching) 회로를 포함할 수 있다. 메모리 래칭의 상세한 설명은 하기에서 제공될 것이다. 섹션 컨트롤러(54)는 메모리 섹션(30)을 테스트하기 위한 테스트 회로(59)를 더 포함할 수 있다. 바람직한 테스트 과정에 대한 상세한 설명은 하기에서 제공될 것이다. 또한, 섹션 컨트롤러는 헤더 타입 정보(예를 들어, 데이터 블록 식별자, 목적 어드레스, 등)를 제공하고, 메모리 섹션(30)을 테스트하기 위한 헤더/테스트 인터페이스(63)를 포함할 수 있다. 또한, 섹션 컨트롤러(54)는 메모리 섹션에서 사용할 수 있는 마스터 및 슬레이브 클럭 신호와 시작 및 중지와 같은 다른 타이밍 신호와 읽기 및 쓰기 신호 등을 제공할 수 있는 타이밍 회로(61)를 포함할 수 있다.
S-포털(42)은 셀렉터(44) 및 통신 채널 인터페이스(46)를 포함할 수 있다. 통신 채널 인터페이스(46)는 스위치(22)를 경유하여 메모리 섹션(30)과 하나 이상의 서버(12)를 연결하는 인터페이스를 제공한다. 이러한 연결은 예를 들어, 하나 이상의 광섬유 또는 구리 케이블을 경유할 수 있다. 셀렉터(44)는 통신 채널 인터페이스(46)와 하나 이상의 메모리 인터페이스 디바이스(64)를 연결하는 회로를 포함할 수 있으며, 이에 따라 셀렉터(44)는 소정 메모리 인터페이스 디바이스(64)와 통신 채널 인터페이스(46)의 소정 I/O 포트를 연결할 수 있다. CCI 회로(57)를 경유하는 섹션 컨트롤러(54)는 셀렉터가 메모리 인터페이스 디바이스(64) 및 통신 채널 인터페이스(46)를 어떻게 연결하는지에 관한 제어 신호를 셀렉터(44)에 제공한다. 또한, 셀렉터(44)는 CCI 회로(57)를 통해 메모리 인터페이스 디바이스(64)에서 섹션 컨트롤러(54)로 테스트 데이터와 같은 데이터를 보내기 위한 지시를 받을 수 있다.
통신 채널 인터페이스(46)는 예를 들어, 표준 채널 인터페이스 프로토콜과 같은 소정 타입의 프로토콜을 사용할 수 있으며, 셀렉터(44)는 포함될 수도 있고, 포함되지 않을 수도 있다. 바람직한 표준 채널 인터페이스 프로토콜은 섬유 채널, 시스템 네트워크 아키텍처 기반 프로토콜, 지능형 직렬 통신 제어 인터페이스, 및 다른 제3 세대 입출력 신호(3GIO) 프로토콜을 포함한다.
임시 스토리지 인터페이스 디바이스(60)는 임시 스토리지 디바이스(58)에 억세스할 수 있는 소정 타입의 디바이스일 수 있다. 예를 들어, 임시 스토리지 인터페이스 디바이스(60)는 연속적으로 상호 연결된 복수의 시프트 레지스터를 포함하는 하나 이상의 시프트(shift) 레지스터 어레이(미도시)를 포함할 수 있으며, 이에 따라, 데이터가 시프트 레지스터 어레이를 통해 연속적으로 기록된다. 시프트 레지스터 어레이 및 메모리 디바이스와 같은 스토리지 매체에 억세스하는데 이들의 사용에 대한 보다 상세한 설명을 위해, 본 출원서와 동일자로 제출된 "메모리 억세스를 개선하는 방법 및 시스템(Methods and Systems for Improved Memory Access)"로 명칭된 William T.Lynch 및 David J. Herbison의 특허출원을 참조하며, 상기 출원서는 본 명세서 전체에서 참조로서 편입된다.
임시 스토리지(58)는 DRAM, SDRAM, SIMM, DIMM, 디스크 드라이브 등과 같은 소정 타입의 메모리 디바이스일 수 있다. T-셀렉터(62)는 복수의 입력 중에서 선택하기 위한 소정 타입의 셀렉터일 수 있다.
실시예에서 스토리지 허브(10)는 동기 장치(68)를 사용할 수 있으며, 여기서, 임시 스토리지 인터페이스 디바이스(60)는 시프트 레지스터 어레이를 포함한다. 이러한 실시예에서, 동기 장치(68)는 예를 들어, 메모리 섹션(30)에 저장된 데이터를 수용할 수 있으며, 유입되는 데이터 스트림(stream)으로부터 클럭 주파수를 추출하는 위상 고정 루프(phase lock loop) 회로를 사용할 수 있다. 따라서, 시프트 레지스터 어레이를 포함하는 임시 스토리지 인터페이스 디바이스(60)는 임시 스토리지 디바이스(58)에 데이터를 쓰는 동안 데이터를 옮기기 위한 클럭 신호를 사용할 수 있다. 이러한 클럭 신호를 예를 들어, 메모리 섹션 시스템 클럭으로부터의 유입 데이터의 위상 또는 주파수의 가능한 차이를 보상하기 위해 사용될 수 있다. 메모리 디바이스(66)에 저장하기 위해, 데이터가 임시 스토리지 인터페이스 디바이스(60)에서 옮겨지는 경우, 메모리 섹션을 위한 시스템 클럭은 데이터를 옮기기 위해 바람직하게 사용될 수 있다.
섹션 컨트롤러(54)는 메모리 섹션(30)의 오류를 검출하는데 사용될 수 있다. 예를 들어, 섹션 컨트롤러(54)는 하드웨어 에러 또는 통신 채널 인터페이스 회로(57)를 통해 통신 채널 인터페이스(42)에서 사용되는 프로토콜 에러를 검출할 수 있다. 또한, 섹션 컨트롤러(54)는 예를 들어, 헤더/테스트 인터페이스(63)의 사용을 통해 메모리 인터페이스 디바이스(64) 내의 에러를 검출할 수 있다. 또한, 메모리 디바이스(66)가 예를 들어, 전자적 에러 보정 회로(예를 들어, DIMMs)와 같은 오류 검출 및/또는 보정을 위한 회로를 포함한다면, 메모리 디바이스(66)는 검출된 오류를 메모리 제어(55)를 통해 섹션 컨트롤러(54)로 전송할 수 있다. 섹션 컨트롤러(54)가 오류를 검출하는 경우, 섹션 컨트롤러(54)는 오류에 관한 정보(예를 들어, 시간, 컴포턴트, 오류 타입)를 관리 인터페이스(53)를 통해 관리 컴플렉스(26)로 전송할 수 있다.
또한, 섹션 컨트롤러(54)는 외부 시스템이 마이크로프로세서(51)와의 인터액션(interaction)을 통해 섹션 컨트롤러(54)에 대한 정보를 얻을 수 있도록 하는 외부 시스템(미도시)이 이용할 수 있는 인터페이스를 포함할 수 있다.
이러한 인터페이스는 예를 들어, 직접적인 진단 감시(diagnostic observations)를 위한 키보드 및 디스플레이를 지원할 수 있다. 또한, 외부 시스템 인터페이스(미도시)는 예를 들어, 직접적인 진단 감시를 위해 개인 컴퓨터 또는 유사(similar) 시스템에 인터페이스를 지원할 수 있다. 또한, 도시되지 않았으나, 외부 시스템은 예를 들어, 마이크로프로세서(51) 상에서 테스트 또는 진단 기능을 지원하기 위한 특별한 소프트웨어를 설치하기 위해 이러한 인터페이스를 사용할 수 있다.
상기한 설명은 바람직한 메모리 섹션의 일 예를 제공한다. 다른 방법 및 시스템들이 본 발명의 범주에서 벗어남이 없이 메모리 섹션을 실행하기 위해 사용될 수 있다. 예를 들어, 하기의 설명은 PCI 버스 기술을 사용하는 메모리 섹션의 다른 바람직한 실시예를 제공한다.
스위치(SWITCHES)
도 6은 본 발명에 따른 방법 및 시스템에서, 스위치(22)의 기능적 다이어그램을 도시한 것이다. 도시된 바와 같이, 스위치(22)는 서버(12)와 접속하는 스위치/서버 통신 인터페이스(204), 스위치/메모리 섹션 통신 인터페이스(208), 스위치 페브릭(206) 및 스위치 컨트롤러(202)를 포함할 수 있다. 스위치/서버 통신 인터페이스(204) 및 스위치/메모리 섹션 통신 인터페이스(208)는 상업적으로 이용할 수 있는 스위치에서 보급되는 표준 스위치 인터페이스일 수 있고, 메모리 섹션 및 서버라는 용어는 상기한 디바이스들이 스위치(22)에 바람직하게 연결된 상태로 있다는 점을 나타내기 위해 사용된다. 스위치 페브릭(22)은 IP 스위치 페브릭, FDDI 스위치 페브릭, ATM 스위치 페브릭, 이더넷 스위치 페브릭, OC-x 타입 스위치 페브릭 또는 섬유 채널 스위치 페브릭과 같은 소정 타입의 스위치 페브릭일 수 있다. 따라서, 스위치(22)는 소정 타입의 상업적으로 이용 가능한 스위치일 수 있다.
본 실시예에서, 스토리지 허브(10)의 관리 컴플렉스(26)는 스위치 컨트롤러(202)를 통해 스위치(22) 전반에 대한 제어를 수행할 수 있으며, 섹션 컨트롤러를 통해 메모리 섹션(30)의 통신 채널 인터페이스(46) 전반에 대한 제어를 수행할 수 있다. 전술한 바와 같이, 예를 들어, 관리 컴플렉스(26)는 스위치 페브릭(206)을 통해 스위치 컨트롤러(202)에 트래픽 스위칭을 위한 알고리즘을 제공할 수 있다. 또한, 전술한 바와 같이, 관리 컴플렉스(26)는 예를 들어, 스위치에 소프트웨어의 새로운 사본, 하트비트(즉, 스위치가 여전히 통신할 수 있다는 응답 신호)를 보내는 규칙적인 주기, 유효 통신 네트워크 어드레스 목록, 경보 응답 및 커맨드 세트를 포함하는 다른 정보를 제공할 수 있다. 또한, 전술한 바와 같이, 관리 컴플렉스(26)는 예를 들어, 통신 메시지의 복제, 메시지 내용의 변경 및 새로운 메시지를 처리하기 위한 명령을 포함하는 다른 정보를 제공한다. 관리 컴플렉스(26)는 예를 들어, 정보를 여러 어드레스로 뿌리기 위한 명령을 포함하는 다른 정보를 제공할 수 있다.
도 7은 제공되는 방법 및 시스템에 따른 스위치(22) 및 메모리 섹션(30)의 통신 채널 인터페이스(46) 관리의 다른 기능적 다이어그램을 도시한 도면이다. 본 실시예에서, 스위치 컨트롤러(202) 및 메모리 섹션 인터페이스(208)는 스위치(22)에 포함될 필요가 없고, 스토리지 허브(10)의 관리 컴플렉스(26)는 스위치 페브릭(206) 및 서버 인터페이스(204)에 관한 직접 제어를 수행한다. 따라서, 본 실시예에서 메모리 섹션(30)의 통신 채널 인터페이스(46)는 직접적으로 스위치 페브릭(206)에 연결된다.
도 6 및 도 7의 다른 실시예에서, 셀렉터(44)는 포함될 필요가 없으며, 모든 메모리 인터페이스 디바이스(64)는 스위치 페브릭(206)에 연결될 수 있다.
도 8은 제공되는 방법 및 시스템에 따른, 스토리지 허브(10)에서 사용될 수 있는 다른 바람직한 스위치(22)의 다이어그램을 도시한 도면이다. 보다 상세하게는 도 8은 하나 이상의 메모리 섹션(30)을 하나 이상의 서버(12)에 연결하는 스위치(22)를 도시한 것이다. 본 실시예에서, 단일 메모리 섹션(30)에 연결된 M개 서버(12-1, 12-2, ... 12-M)를 도시한다. 본 실시예에서, 스위치(22)의 서버 인터페이스(204)는 M개의 스위치/서버 통신 인터페이스(switch/server communications interfaces: SSCI)(204-1 내지 204-M)를 포함하며, 스위치의 메모리 섹션 인터페이스(208)는 N개의 스위치/메모리 섹션 통신 인터페이스(switch/memory section communications interfaces: SMCI)(208)를 포함한다. 또한, 스위치(22)의 스위치 페브릭(206)은 하나 이상의 스위칭 판(plane)(808)을 포함한다.
본 실시예에서, 서버(12)는 각각 디바이스 드라이버(28)를 포함하며, 메모리 섹션(30)은 하나 이상의 통신 채널 인터페이스(CCI)(46-1 내지 46-N)를 포함한다. 본 실시예에서, P개의 평행 라인은 각각 디바이스 드라이버(28)와 스위치(22)를 연결하며, CCI(46)와 스위치(22)를 연결한다. 비록, 본 실시예에서 각각을 연결하는 라인의 개수가 동일할지라도, 다른 예에서 이들은 달라질 수 있다. 디바이스 드라이버(28)는 예를 들어, 상기 언급한 디바이스 드라이버(28)일 수 있으며, 또는 디바이스 드라이버(28)에 포함될 수도 있다.
M개 서버의 일부는 데이터 요청을 생성하고, 스위치(22)를 통해 디바이스 드라이버(28)에서 메모리 섹션(30)으로 데이터 요청을 전송할 수 있다. 서버(12)는 스토리지 허브(10)에 쓰는 것이 요망되는 특정 데이터 블록 또는 스토리지 허브(10)에서 읽기가 요망되는 특정 데이터 블록을 식별하는 데이터 식별자를 데이터 요청에 포함할 수 있다. 이후, 스위치(22)의 해당 SSCI(204)는 데이터 요청을 수신하고, 이를 스위치 컨트롤러(24)로 전송한다. 본 실시예에서, 스위치 컨트롤러(202)는 데이터 요청에 포함된 데이터 블록 식별자로부터 정보 요청에 대해 정해지는 메모리 섹션(30)을 결정한다.
메모리 섹션(30)을 결정하기 위해, 스위치 컨트롤러(202)는 예를 들어, 데이터 블록 식별자와 메모리 섹션 사이의 관계를 규정하는 테이블을 참조할 수 있으며, 어드레스 계산을 위한 알고리즘 또는 다른 방법을 사용할 수 있다.
메모리 섹션이 결정되면, 스위치 컨트롤러(202)는 결정된 메모리 섹션(30)에 대응하는 디바이스 드라이버(28)에서 SMCI(208)까지의 P개의 평행 라인 각각에 대해 각 스위칭 판(808)을 통한 전송 경로를 설정할 수 있다. 또한, 데이터 요청은 스위치 컨트롤러(202)에 의해 변경되어 데이터 요청을 올바른 메모리 섹션(30)으로 보내는데 스위치(22)에 의해 사용되는 새로운 어드레스를 포함할 수 있다. 변경된 데이터 요청은 스위칭 판(808)을 지나서 SMCI(208)로 전송된다. P개 라인을 지나는 이와 같은 전송은 동시적으로 일어날 수 있다.
스위치를 통한 경로가 설정되는 동안, 데이터는 스위치 내 또는 스위치 컨트롤러(202)의 메모리(미도시) 내에 있는 별도의 스토리지 큐(미도시)에 상주할 수 있다. 또한, 데이터 요청은 복사될 수 있고, 스토리지 허브(10)의 특정 요구에 따라 스위치 컨트롤러(202)에 의해 변경될 수 있다. 전술한 바와 같이, 예를 들어, 관리 컴플렉스(26)는 스토리지 허브(10) 또는 하나 이상의 특정 메모리 섹션(30)에 쓰여진 모든 데이터를 백업하도록 스토리지 허브(10)에 명령할 수 있다. 이러한 예에서, 스위치 컨트롤러(202)는 저장될 데이터를 포함하는 쓰기 데이터 요청을 복사할 수 있으며, CDA(16)의 특정 요구에 따라 상기한 요청을 변경할 수 있다. 그리고, 스위치 컨트롤러(202)는 CDA(16)에 쓰기 데이터 요청을 전송하기 위한 경로를 설정할 수 있고, 이후 상기한 요청의 변경된 사본을 CDA(16)로 전송할 수 있으며, 이에 따라 쓰기 데이터가 백업된다. 마찬가지로, 메모리 디바이스(30)에서 전송될 수 있는 쓰기 요청을 포함하는 연속적인 데이터 블록들은 복사될 수 있고, CDA(16)로 전송될 수 있다. 관리 컴플렉스(26)는 예를 들어, 스위치 컨트롤러(202)에 소정의 요청 정보 및 데이터 요청을 어떻게 변경할 것인지 결정하기 위해 스위치에서 필요로 하는 소프트웨어를 제공할 수 있고, 복수의 목적지(destinations)에 변경된 데이터 요청의 사본을 제공할 수 있으며, 복수의 목적지에 데이터 사본을 제공할 수 있다.
메모리 섹션(30)이 데이터 블록과 같은 정보를 서버(12)로 전송하는 경우, 메모리 섹션(30)으로부터의 데이터 블록은 데이터 블록을 전송하는 메모리 섹션(30)의 CCI(46)에 대응하는 SMCI(208)를 통해 스위치(22)에 도착한다. 데이터 블록은 메모리 섹션(30)에 의해 데이터에 삽입되는 식별자를 포함할 수 있다. 메모리 섹션(30)의 메모리 인터페이스 디바이스는 예를 들어, 하기에서 설명하는 바와 같이, 이러한 어드레스를 삽입할 수 있다. 또한, 어드레스는 예를 들어, 메모리 섹션(30), 또는 데이터가 전송되는 포트 또는 디바이스로부터 읽혀지는 특정 데이터 블록을 식별하는 데이터 블록 식별자일 수 있다. 본 실시예에서, P 평행 라인은 각각 CCI(46)와 스위치(22)를 연결하나, 각 연결 라인의 개수는 달라질 수 있다. 또한, P 는 1이거나 1보다 큰 숫자일 수 있다.
SMCI(208)는 데이터 블록을 스위치 컨트롤러(202)로 전송하며, 스위치 컨트롤러(202)는 전송된 데이터 내의 식별자(예를 들어, 데이터 블록 식별자, 목적 어드레스 등)로부터 데이터 블록에 대해 정해진 서버(12)를 결정한다. 이후, 스위치 컨트롤러(202)는 이러한 목적 어드레스 또는 데이터 식별자로 CCI(46)로부터의 P 라인 각각에 대해, 스위치(22)를 관통하여 데이터가 전송되는 SSCI(204)로의 경로를 설정한다. 이후, 스위치(22)는 데이터 블록을 스위칭 판(808)을 관통하여 SSCI(204)로 전송한다. 예를 들어, P 라인을 지나는 데이터 블록의 전송은 동시에 일어날 수 있다.
도 9는 제공되는 방법 및 시스템에 따른 하나 이상의 메모리 섹션(30)에 연결된 다른 스위치(22)를 도시한 것이다. 본 실시예에서, 먹싱(muxing)(각각 자신의 통신 경로 상에 있는 개별 데이터 스트림을 소수의 데이터 스트림으로 결합) 및 디먹싱(demuxing)(각각 자신의 통신 경로 상에 있는 일군의 데이터 스트림을 보다 많은 데이터 스트림으로 분리)은 메모리 섹션(30) 및 스위치(22)에서 사용된다. 본 실시예에서, P개의 평행 라인은 각 메모리 섹션의 CCI(46)와 스위치(22)를 연결하나, 각 연결에서 라인의 개수는 다를 수 있다.
본 실시예에서, 메모리 섹션(30-1) 내의 Q 라인들은 메모리 인터페이스 디바이스(64-1)로부터 나오며, R 라인들은 메모리 인터페이스 디바이스(64-2)로부터 나온다. 대응 먹스(mux)(902-1 및 902-2)는 각 메모리 인터페이스 디바이스(64-1 및 64-2)로부터 P 스트림으로 다중화하며, 여기서, Q 및 R은 양의 정수 P보다 큰 양의 정수이다.
메모리 섹션(30-2)에서, J 라인은 메모리 인터페이스 디바이스(64-4)로부터 나오며, 여기서, J는 P 보다 작은 양의 정수이다. 디먹스(demux)(904)는 이들 J라인을 P라인으로 역다중화한다.
그러나, P 평행 라인(스트림)은 스위칭 경로에 따라 어디서든 다중화 또는 역다중화될 수 있다. 예를 들어, 도시된 바와 같이, P 라인은 SMCI(208-1) 다음에 먹스(906)에 의해 T-라인으로 다중화된다. T-라인은 스위칭 판(808)를 통과하여 디먹스(908)로 이어질 수 있는데, 디먹스는 T-라인을 P 라인으로 역다중화하며, P 라인을 SSCI(204)로 보낸다.
또한, 시프트 어레이를 포함하는 메모리 인터페이스 디바이스를 사용하는 실시예에서, 하나 이상의 파이프라인 시프트 레지스터(미도시)가 전송 및 스위칭 경로 지점에 삽입될 수 있어 메모리 인터페이스 디바이스 시프트 레지스터 어레이의 클럭 주파수의 적절한 배수(먹싱 기능) 또는 약수(sub-multiple)(디먹싱 기능)로 이들 전송 주파수를 유지한다. 예를 들어, 시프트 레지스터 파이프라인은 CCI(46)에 포함될 수 있다.
도 10은 제공되는 방법 및 시스템에 따른 바람직한 파이프라인 시프트 레지스터를 도시한 도면이다. 본 실시예에서, 이 파이프라인 시프트 레지스터는 CCI(46)의 출구(output)에 삽입될 수 있고, 각각의 CCI(46)에서 나오는 각각의 P 라인은 래치 시프트 레지스터(1002-1 내지 1002-P)에 결합될 수 있다. 도시된 바와 같이, 각각의 P 라인은 래치 시프트 레지스터의 S 입력(input)에 결합되고, 이의 반전(inverse)은 래치 시프트 레지스터의 R 입력에 연결된다. 래치 시프트 레지스터는 또한 스토리지 허브(10)의 마스터 클럭 회로에 의해 생성될 수 있는 마스터 클럭 신호를 수신한다. 이러한 마스터 클럭 신호는 스토리지 허브(10) 내의 메모리 섹션과 같은 다른 컴포넌트에 의해 사용될 수 있다. 마스터 클럭 신호는 예를 들어 관리 컴플렉스(26) 또는 사용될 수 있는 별도의 회로에서 생성될 수 있다.
래치 시프트 레지스터(1002)의 출력 Q는 제2 래치 레지스터(1004)의 S 입력으로 공급되고, 반전 출력
Figure pat00001
는 래치 시프트 레지스터(1004)의 R 입력으로 공급된다. 제2 래치 시프트 레지스터(1004)는 슬레이브 클럭 신호를 수신한다. 슬레이브 클럭 신호는 마스터 클럭 신호를 제공하는 회로와 동일한 것에 의해 생성될 수 있고, 예를 들어, 슬레이브 클럭 신호는 마스터 클럭 신호의 반전일 수 있다. 제2 래치 시프트 레지스터(1004-1, 1004-2,..., 1004-P)로부터의 출력 Q는 메모리 섹션(30)을 나가는 파이프라인에 신호를 공급한다. 파이프라인 시프트 레지스터의 설명이 래치 시프트 레지스트를 참조하여 되었을지라도, 예를 들어, 다이나믹 시프트 레지스터와 같은 다른 타입의 시프트 레지스터가 사용될 수도 있다. 또한, 파이프라인 시프트 레지스터의 설명이 파이프라인 시프트 래지스터가 CCI(46)의 출구에 결합되는 것과 관련하여 되었을지라도 파이프라인 시프트 레지스터는 통신 인터페이스 또는 스위칭 판(808)들 사이와 같이, 스토리지 허브(10)의 어디에라도 포함될 수 있을 것이다.
메모리 인터페이스(MEMORY INTERFACE)
도 11은 제공되는 방법 및 시스템에 따른 바람직한 메모리 인터페이스 디바이스(64)의 상세한 블록 다이어그램을 포함한다. 도 11에 도시된 바와 같이, 메모리 인터페이스 디바이스(64-1 및 64-2)는 각각 쓰기(wirte) 시프트 레지스터 어레이(72) 및 읽기(read) 시프트 레지스터 어레이(74)를 포함할 수 있다. 읽기 및 쓰기 시프트 레지스터 어레이는 연속적으로 연결된 복수의 시프트 레지스터(76)를 포함할 수 있다. 시프트 레지스터 어레이(72 및 74)의 각 시프트 레지스터(76)는 시프트 레지스터(76)와 메모리 섹션(66)의 대응 I/O 핀을 연결하는 커넥터 회로(77)에 연결된다.
본 명세서에서, "시프트 레지스터"라는 용어는 입구에서 소정 신호가 수신되도록 하고, 제어 또는 클럭 신호와 같은 어떤 이벤트 발생 시 소정 신호가 출력되도록 하는 하나 이상의 선택 가능한 입구를 가지는 소정 레지스터, 디바이스, 스테이지 또는 그밖에 어떤 것을 가리킨다. 시프트 레지스터라는 용어가 때때로 단일 레지스터 스테이지(stage)뿐만 아니라 연속적인 레지스터들을 나타낸다고 할지라도, 본 명세서에서 사용되는 시프트 레지스터들은 단일 스테이지를 나타낸다. 연속적인 시프트 레지스터는 본 명세서에서 시프트 레지스터 체인(chain) 또는 시프트 레지스터 스트링(string) 중 어느 하나를 나타낸다. 레지스터의 연속적인 세트는 또한, "(시프트) 레지스터의 연속 어레이" 또는 단일 체인 시프트 레지스터 또는 병렬 체인 시프트 레지스터 중 어느 하나일 수 있는 시프트 레지스터 어레이를 나타낸다. 예를 들어, 시프트 레지스터는 다이나믹 또는 래칭 중 어느 하나, 단일 클럭 또는 마스터/슬레이브 클럭 중 어느 하나, 샘플링 또는 에지 트리거(edge trigger) 중 어느 하나, 데이터(D), RS 또는 JK 중 어느 하나, 또는 단일 단계의 전하 결합 디바이스(charge coupled device: CCD)인 소정 타입의 시프트 레지스터일 수 있으며, 또는 클럭 신호를 기반으로 디바이스의 입력을 출력으로 전환하는 소정 타입의 디바이스일 수 있다. 시프트 레지스터 어레이/체인은 본 발명의 범주에서 벗어남이 없이 소정 개수의 시프트 레지스터를 포함할 수 있다.
본 실시예에서, 메모리 섹션(30)의 모든 쓰기 시프트 레지스터 어레이(72)는 쓰기 시프트 레지스터의 더 연장된 체인을 형성하기 위해 상호 결합될 수 있다. 도시된 바와 같이, 메모리 인터페이스 디바이스(64-1)의 시프트 레지스터 어레이(72)는 메모리 인터페이스 디바이스(64-2)의 상부 오른쪽 I/O 핀에서 메모리 인터페이스 디바이스(64-2)의 상부 왼쪽 I/O 핀을 경유하여 메모리 인터페이스 디바이스(64-2)의 쓰기 시프트 레지스터 어레이(72)에 연결된다. 메모리 인터페이스 디바이스(64-2)의 쓰기 시프트 레지스터 어레이(72)는 메모리 인터페이스 디바이스(64-3 등)의 쓰기 시프트 레지스터 어레이(72)에 연결되며, 메모리 섹션의 모든 쓰기 시프트 레지스터 어레이(72)는 쓰기 시프트 레지스터 어레이의 단일 체인을 형성한다. 특정 예에 관하여 설명의 편의를 위해, 각 메모리 인터페이스 디바이스의 시프트 레지스터 어레이는 하나의 시프트 레지스터 어레이로 간주될 것이고, 어레이의 더 연장된 체인을 형성하기 위한 이들 시프트 어레이의 상호 연결은 하나의 시프트 레지스터 체인으로 간주될 것이다.
또한, 본 실시예에서, 메모리 인터페이스 디바이스(64-1)의 하부 오른쪽 I/O 핀은 이들의 읽기 시프트 레지스터 어레이(74)가 체인을 형성하도록 메모리 인터페이스 디바이스(64-2)의 하부 왼쪽 I/O 핀에 연결된다. 도 5를 참조하여 본 실시예에서, 메모리 인터페이스 디바이스(64-3 및 64-4)가 마찬가지로 연결된다는 점을 상기한다. 읽기 시프트 레지스터 어레이(74)의 이들 쌍(pairs)은 읽기 체인으로 간주된다.
또한, 각 읽기 체인에서 제1 메모리 인터페이스 디바이스는 읽기 시프트 레지스터 어레이(74)에 연결되는 읽기 셀렉터(70)을 포함한다. 이들 읽기 셀렉터(70)는 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등) 및/또는 다른 헤더 정보를 읽기 데이터에 삽입하는데 사용된다. 식별자는 바람직하게 스위치(22)가 데이터를 적절한 목적지로 옮기는데 사용하는 식별자이다. 예를 들어, 식별자는 전송되는 데이터(예를 들어, 데이터 블록 식별자) 또는 데이터를 전송할 목적지를 식별하는 목적 어드레스를 위한 식별자일 수 있다. 예를 들어, 목적지가 인터넷에 연결된 컴퓨터라면 목적 어드레스는 컴퓨터에 대한 IP 어드레스일 수 있다. 이와 달리, 목적 어드레스는 데이터를 목적 서버에 전송하는 루트를 정하는데 사용하는 스위치(22)의 간단한 내부 어드레스일 수 있으며, 이러한 경우, 서버(12)는 목적 어드레스를 읽고, 목적 어드레스를 데이터를 전송하는 네트워크가 데이터를 적절한 목적지로 발송하기 위해 사용하는 목적 어드레스로 대체할 것이다.
또한, 메모리 인터페이스 디바이스(64)는 섹션 컨트롤러(54)의 타이밍 회로(61)로부터 제어 및 타이밍 신호를 수신할 수 있다. 이들 제어 및 타이밍 펄스는 메모리 인터페이스 디바이스의 시프트 레지스터(76)가 소정의 이동이 일어나는 것처럼 그들의 이동을 유지하는 방법으로 개별적인 펄스를 이용하여 메모리 디바이스(66)로부터 읽혀진 데이터 또는 메모리 디바이스(66)에 쓰여진 데이터가 읽혀지거나 쓰여지도록 시간이 맞추어질 수 있다. 시프트 레지스터를 포함하는 메모리 인터페이스 디바이스의 추가적인 설명을 위해, 전술한 "메모리 억세스를 개선하기 위한 방법 및 시스템(Methods and Systems for Improved Memory Access)"으로 명칭된 William T.Lynch 및 David J. Herbison의 미국 특허 출원 번호 10/284,198을 참조하며, 이는 본 명세서 전체에서 참조로서 편입된다. 또한, 메모리 섹션 디바이스(64)에 의해 전송된 데이터는 예를 들어, 동일한 방법, 상이한 방법 또는 시스템 설계자에 의해 적절하다고 생각되는 다른 방법으로 전송된다.
바람직한 쓰기 동작(EXEMPLARY WRITING OPERATION)
제공되는 방법 및 시스템에 따른 도 12는 도 1, 6 및 11에 대하여 도 5의 메모리 섹션(30)의 바람직한 쓰기 과정에 대한 순서도를 도시한 것이다. 본 순서도는 쓰기 동작의 한 예를 나타낸 것이며, 본 발명의 범주를 벗어남이 없이 다른 방법이 쓰기 동작을 수행하기 위해 사용될 수 있다. 본 실시예에서, 메모리 섹션(30)의 메모리 디바이스(66)는 데이터 블록으로 분할되고, 여기서, 각 데이터 블록은 데이터 블록 식별자에 의해 식별된다. 데이터 블록 및 메모리 디바이스 분할의 상세한 설명은 하기에서 제공된다.
예를 들어, 쓰기 요청은 소정 네트워크를 경유하여 서버(12)에 연결된 사용자로부터 시작된다. 본 실시예에서, 사용자는 스토리지 허브(10)에 저장될 데이터의 블록(즉, 데이터 블록)을 전송하는 것으로 가정된다. 서버 내 디바이스 드라이버(28)는 저장될 데이터 블록에 대한 데이터 블록 식별자를 결정할 수 있으며, 데이터 블록 식별자(data block identifier: DBI)를 포함하는 요청을 스토리지 허브(10) 내에 있는 스위치(22)로 전송할 수 있다(Step1202). 예를 들어, 디바이스 드라이버(28)는 서버(12)가 데이터 블록 식별자를 결정하는데 사용할 수 있는 오라클 또는 유사 타입의 어플리케이션을 실행시키는 것과 같은 표준 방법으로 데이터 블록 식별자를 결정할 수 있다.
스위치(22)는 데이터 요청을 데이터 블록이 저장될 메모리 섹션(30)으로 보내기 위해 데이터 블록 식별자(DBI)를 사용할 수 있으며, 이는 데이터 요청을 메모리 섹션에 발송하기 위해 스위치(22)가 사용하는 메모리 섹션의 어드레스를 DBI 기반으로 결정함으로써 가능해진다(S1204). 예를 들어, 데이터 요청이 스위치(22)의 SSCI(204)에 도달하는 경우, SSCI는 데이터 요청을 스위치 컨트롤러(202)로 전송할 수 있고, 스위치 컨트롤러는 DBI에 상응하는 어드레스를 찾기 위해 테이블을 사용할 수 있으며, DBI로부터 어드레스를 계산하기 위한 알고리즘을 사용할 수 있고, 또는 다른 방법을 사용할 수 있다.
스위치 컨트롤러(202)는 스위치 페브릭(206)을 통해 SSCI(204)에서 SMCI(208)까지 데이터가 저장될 메모리 섹션에 상응하는 경로를 설정할 수 있다(S1206). 만일 스위치(22) 및 메모리 섹션(30) 사이에 아이들(idle) 통신 채널이 없는 경우, 또는 충돌이 일어나는 경우, 스위치는 혼잡(congestion) 메시지를 요청 서버(12)에 전송할 수 있고, 요청 서버(12)는 충돌이 해결될 때까지 상기한 메시지를 큐에 저장할 수 있다. 도 7에 도시된 바와 같은 스위치(22)의 일 실시예에서, 관리 컴플렉스(26)는 스위치 컨트롤러(202)에 의해 수행되는 상기한 기능을 수행할 수 있다.
다음으로, 스위치(22)는 데이터 요청을 메모리 섹션(30)의 CCI(46)로 전송하며(S1208), CCI(46)는 상기한 요청을 섹션 컨트롤러(54)로 보낸다(S1210). 섹션 컨트롤러(54)는 데이터 요청이 쓰기 요청인지 확인하고, 메모리 디바이스 중 어느 것이 데이터를 저장할 공간을 가지고 있는지를 결정한다(S1212). 예를 들어, 섹션 컨트롤러(54)는 상기한 요청 자체에 포함된 정보에 의해, 데이터 요청의 포맷 또는 사이즈 또는 그밖에 다른 방법에 의해 상기한 요청이 쓰기 요청이라는 점을 확인한다. 만일, 가용 메모리 디바이스(66)가 없는 경우, 섹션 컨트롤러(54)는 부정 응답(negative acknowledgement: NAK) 메시지를 CCI(46) 및 스위치(22)를 통해 요청 서버(12)로 전송하며(S1214), 요청 서버는 부정 응답을 수신한 후(S1216), 동일 또는 다른 DBI를 이용하여 스토리지 허브(10)에 데이터 다시 쓰기를 시도할 수 있으며(S1218), 다른 디바이스(미도시)에 쓰기를 시도하거나, 어플리케이션에 통지할 수 있다.
만일 가용 공간이 있으면, 섹션 컨트롤러(54)는 저장될 데이터를 전송해도 된다는 메시지를 디바이스 드라이버(28)로 전송한다(S1220). 이에 응답하여, 디바이스 드라이버(28)는 스위치(22)를 통해 메모리 섹션(30)의 통신 인터페이스(CCI, 46)로 데이터를 전송한다(S1222). 추가적으로, 관리 컴플렉스(26) 또한, CDA(16)에 쓰기 데이터를 전송할 것을 스위치(22)에 지시할 수 있다. 예를 들어, 관리 컴플렉스(26) 실행 시, 관리 컴플렉스는 데이터가 저장될 메모리 섹션(30) 및 CDA(16)에 모든 쓰기 데이터가 전송되도록 하는 소정 알고리즘을 스위치 컨트롤러(206)에 제공할 수 있다. CDA(16)에 저장된 데이터의 버전은 메모리 섹션에 오류가 발생한 경우, 다른 작동하는 메모리 섹션으로 로드될 수 있는 백업 버전으로 취급될 것이다.
셀렉터(44)는 데이터를 임시 스토리지 인터페이스 디바이스(60)로 전송한다. 섹션 컨트롤러(54)의 마이크로 프로세서(51)는 데이터가 저장될 메모리 디바이스(66)의 상태를 체크하여 메모리 디바이스(66)가 가용 또는 혼잡(busy) 상태인지 여부를 결정한다(S1224). 예를 들어, 마이크로 프로세서(52)는 램(52)에 메모리 섹션(30) 내의 각 메모리 디바이스(66)에 대한 상태 코드를 저장할 수 있으며, 마이크로 프로세서(51)는 메모리 디바이스(66)의 이용 가능성을 결정하기 위해 상태 코드를 참고할 수 있다. 메모리 디바이스(66)가 사용 가능한 경우, 마이크로 프로세서(51)는 메모리 디바이스 제어 회로(55)를 통해 메모리 디바이스(66)에 데이터를 저장할 준비가 되었다는 메시지를 전송한다(S1232). 그러나, 메모리 디바이스(66)가 혼잡한 경우, 데이터 임시 스토리지 메모리 인터페이스 디바이스(60)는 데이터를 임시 메모리 스토리지 디바이스(58)에 저장하며(S1226), 쓰기 요청은 마이크로프로세서의 램(52) 내의 큐에 배치된다.
메모리 디바이스(66)가 사용 가능해지는 경우, 메모리 디바이스(66)는 메모리 섹션 제어 회로(55)를 통해 섹션 컨트롤러(54) 내의 마이크로 프로세서(51)에 신호를 보낸다(S1230). 예를 들어, 이는 메모리 디바이스 제어 회로(55)를 통해 메모리 디바이스(66)가 마이크로프로세서(51)에 인터럽트 신호를 전송함으로써 이루어질 수 있다. 이후, 마이크로프로세서(51)는 메모리 디바이스 제어 회로(55)를 통해 메모리 디바이스(66)에 데이터를 저장할 준비가 되었다는 메시지를 전송한다(S1232). 메모리 디바이스가 준비된 경우, 임시 스토리지 메모리 인터페이스 디바이스(60)는 데이터를 T-셀렉터(62)로 보내는데, 이는 쓰기 동작이기 때문에 T-셀렉터는 데이터를 메모리 인터페이스 디바이스(60)로 보내게 된다. 예를 들어, 상기 단계(S1222)에서 메모리 디바이스가 사용 가능한 경우, 데이터를 임시 메모리 스토리지 디바이스(58)에 저장하는 것은 필요하지 않다. 이후, 데이터는 제1 메모리 인터페이스 디바이스(64-1)의 시프트 레지스터 어레이(76)에 기록되는데, 여기서, 데이터는 데이터가 쓰여질 메모리 디바이스(66)에 대응하는 메모리 인터페이스 디바이스(64)에 로드될 때까지 시프트 레지스터 어레이(76)의 쓰기 체인을 통해 기록된다(S1234). 이후, 데이터는 메모리 섹션(30)의 섹션 컨트롤러(54)에 의해 제공되는 어드레스로 메모리 디바이스에 쓰여진다(S1236).
시프트 레지스터 어레이와 메모리 디바이스 간의 연결 및 데이터 쓰기 방법에 대한 상세한 설명은 본 출원서와 동일자로 제출된 "메모리 억세스를 개선하기 위한 방법 및 시스템(Methods and Systems for Improved Memory Access)"으로 명칭된 William T.Lynch 및 David J. Herbison의 상기한 미국 출원 번호 10/284,198에서 제공된다.
쓰기 동작이 완료되는 경우, 메모리 디바이스(66)는 메모리 디바이스 인터페이스(55)를 통해 섹션 컨트롤러(54) 내의 마이크로프로세서(51)에 통지한다(S1238). 이후, 섹션 컨트롤러(54)는 소정의 응답을 요청 서버(12) 내의 디바이스 드라이버(28)에 전송할 수 있다(S1240).
하기에서는 메모리 디바이스(66)에 데이터를 쓰기 위해 상기 단계(S1236)에서 사용될 수 있는 방법의 상세한 설명이 제공된다. 본 방법은 메모리 래칭으로 간주된다. 메모리 래치는 예를 들어, 공통 리셋 라인을 갖는 에지-트리거 또는 플립플롭(flip flop)일 수 있다. 즉, 메모리 디바이스 제어 회로(55)는 예를 들어, 본 방법을 수행하는 다른 적절한 회로와 함께 하나 이상의 메모리 래치들을 포함할 수 있다.
섹션 컨트롤러(54)는 메모리 디바이스(66)의 관리를 위해 내장 메모리(52) 내에 메모리 기억 장소를 예비적으로 보유할 수 있으며, 본 실시예에서, 메모리 디바이스(66)는 DIMM으로 가정된다. 이들 메모리 기억 장소는 섹션 컨트롤러(54)의 내장 메모리(52) 내의 어디든지 될 수 있다.
메모리 디바이스 제어 회로(55)는 이들 할당된 메모리 기억 장소 내에 저장된 데이터를 읽을 수 있으며, 예를 들어, 마이크로프로세서(51)와 메모리(52) 사이에서 전송된 읽기 정보를 통해 그리고, 이들 메모리 기억 장소로 어드레스가 지정된 정보를 확인함으로써 데이터를 읽을 수 있다. 이들 메모리 기억 장소는 DIMM(66)에 관한 제어 정보와 함께 데이터 전송을 위한 시작 어드레스, 전송하는 바이너리 숫자(digits)의 개수를 저장할 수 있다. 예를 들어, 제어 정보는 읽기 또는 쓰기 동작인지 여부, 시작 또는 종료 동작인지 여부 등에 관한 정보를 포함할 수 있다. 비록, 상기에서 메모리 섹션 내의 메모리 디바이스에 데이터를 쓰는 하나의 방법에 대해서 설명하였을지라도, 당업자는 본 발명의 범주를 벗어남이 없이 가능한 많은 다른 방법들이 가능하다는 점을 이해하여야 할 것이다.
바람직한 읽기 동작(EXEMPLARY READING OPERATION)
도 13은 제공되는 방법 및 시스템에 따른 도 1, 6 및 11에 대하여 도 5의 메모리 섹션의 바람직한 읽기 동작의 순서도를 도시한 것이다. 본 순서도는 읽기 동작의 한 예를 나타낸 것이며, 본 발명의 범주를 벗어남이 없이 다른 방법이 읽기 동작을 수행하기 위해 사용될 수 있다. 본 실시예에서, 메모리 섹션(30)의 메모리 디바이스(66)는 데이터 블록으로 분할되고, 여기서, 각 데이터 블록은 데이터 블록 식별자에 의해 식별된다. 데이터 블록 및 메모리 디바이스 분할의 상세한 설명은 하기에서 제공된다. 읽기 요청은 소정 네트워크를 경유하여 서버(12)에 연결된 사용자로부터 시작된다. 이후, 서버 내의 디바이스 드라이버(28)는 데이터 블록 식별자(DBI)를 포함하는 요청을 스토리지 허브(10) 내의 스위치(22)로 전송한다(S1302). 예를 들어, 디바이스 드라이버(28)는 표준 방법을 사용하여 데이터 블록 식별자를 결정할 수 있다. 예를 들어, 서버(12)는 데이터 블록 식별자를 결정할 수 있는 오라클 또는 유사 타입 어플리케이션을 실행시킬 수 있다.
이후, 스위치(22)는 데이터 블록 식별자(DBI)를 이용하여 데이터 요청을 데이터 블록을 저장하는 메모리 섹션(30)으로 전송하며, 예를 들어, DBI 기반으로 스위치가 데이터 요청을 메모리 섹션(30)으로 발송하기 위해 사용하는 메모리 섹션에 대한 어드레스를 결정함으로써 데이터 요청을 전송한다(S1304). 이후, 스위치 컨트롤러(202)는 스위치 페브릭(206)을 통해 SSCI(204)에서 SMCI(208)까지 데이터가 저장될 메모리 섹션에 상응하는 경로를 설정할 수 있다(S1306). 스위치(22)와 메모리 섹션(30) 사이에 어떠한 아이들 통신 채널이 없는 경우, 또는 충돌이 있는 경우, 스위치는 혼잡 메시지를 요청 서버(12)에 전송할 수 있으며, 요청 서버(12)는 충돌이 해결될 때까지 상기한 메시지를 큐에 저장할 수 있다. 도 7에 도시된 바와 같이, 스위치(22)에 관한 본 실시예에서, 관리 컴플렉스(26)은 스위치 컨트롤러(202)에 의해 수행되는 상기한 기능들을 수행할 수 있다. 다음으로, 스위치(22)는 데이터 요청을 메모리 섹션(30)의 CCI(46)로 전송한다(S1308). 이후, CCI(46)는 상기한 요청을 섹션 컨트롤러(54)로 전송할 수 있다(S1310). 섹션 컨트롤러(54)는 데이터 요청이 읽기 요청인지를 식별하고, 메모리 디바이스 중 어떤 것에 상기 식별된 데이터 블록이 저장되어 있는지를 결정한다(S1312). 예를 들어, 섹션 컨트롤러(54)는 상기한 요청 자체에 포함된 정보, 데이터 요청의 포맷 또는 사이즈, 또는 그밖에 다른 방법에 의해 상기한 요청이 읽기 데이터인지 식별할 수 있다.
만일 요청된 데이터 블록이 메모리 섹션(30)에 저장되어 있지 않다면, 섹션 컨트롤러(54)는 부정 응답(NAK) 메시지를 CCI(46) 및 스위치(22)를 통해 요청 서버(12)로 전송한다(S1314). 부정 응답을 수신한 후(S1316), 요청 서버(12)는 메모리 섹션으로부터 데이터 블록 다시 읽기를 시도할 수 있으며(S1318), 다른 디바이스(미도시)로부터 읽기를 시도할 수 있으며, 어플리케이션에 통지할 수 있다. 만일 섹션 컨트롤러(54)가 메모리 섹션이 요청된 데이터 블록을 저장하고 있는 것을 확인하면, 섹션 컨트롤러(54) 내의 마이크로프로세서(51)는 어떤 메모리 디바이스(66)가 데이터를 저장하고 있는지를 결정하며, 메모리 디바이스(66)가 사용 가능 또는 혼잡 상태인지를 결정하기 위해 메모리 디바이스의 상태를 체크한다(S1320). 예를 들어, 전술한 바와 같이, 마이크로프로세서(52)는 내장 메모리(52)에 메모리 섹션(30) 내의 각 메모리 디바이스(66)에 대한 상태 코드를 저장할 수 있으며, 마이크로프로세서(51)는 메모리 디바이스(66)의 사용 가능성을 결정하기 위해 상태 코드를 참조할 수 있다.
만일, 메모리 디바이스가 사용 가능하다면, 마이크로프로세서(51)는 메모리 디바이스를 섹션 컨트롤러의 내장 메모리(52) 내의 상태를 이용 가능에서 혼잡 상태로 변경함으로써 예비적으로 보유한다(S1326). 이후, 섹션 컨트롤러(54)는 응답(ACK) 신호를 요청 서버(12)에 전송할 수 있다(S1328). 디바이스 드라이버(28)가 여전히 데이터 블록 읽기를 원하는 경우(S1330), 디바이스 드라이버는 읽기 확인(confirmation)을 스위치(22)를 통해 메모리 섹션(30)으로 전송한다(S1332). 그렇지 않은 경우, 디바이스 드라이버는 읽기 요청을 폐기한다(S1334).
읽기 확인을 수신한 경우, 섹션 컨트롤러(54)는 소정 식별자를 데이터를 읽을 메모리 디바이스(들)(66)에 대응하는 읽기 체인 내에 있는 제1 메모리 인터페이스 디바이스(64-1)의 읽기 셀렉터(70)에 제공한다(S1332). 전술한 바와 같이, 식별자는 예를 들어, 스위치(22)가 데이터를 적절한 목적지로 스위칭하는데 사용하는 식별자일 수 있다. 예를 들어, 식별자는 전송되는 데이터에 대한 식별자(예를 들어, 데이터 블록 식별자) 또는 데이터를 전송하는 어드레스를 식별하는 목적 어드레스일 수 있다. 예를 들어, 목적지가 인터넷에 연결된 컴퓨터인 경우, 목적 어드레스는 컴퓨터의 IP 어드레스일 수 있다. 이와 달리, 목적 어드레스는 데이터를 목적 서버로 전송하는데 사용하는 스위치(22)에 대한 내부 어드레스일 수도 있으며, 이러한 경우, 서버(12)는 목적 어드레스를 읽고, 데이터를 전송하는 네트워크가 데이터를 적절한 목적지로 발송하기 위해 사용하는 목적 어드레스로 대체할 것이다.
이후, 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등)는 식별자가 메모리 디바이스(66)에 대응하는 메모리 인터페이스 디바이스(64)에 도착할 때까지 메모리 인터페이스 디바이스(64)의 체인 시프트 레지스터 어레이(74)에 기록된다. 즉, 메모리 디바이스(66)는 데이터 요청 내의 데이터 블록 식별자에 상응하는 데이터 블록을 보유한다(S1336). 다음으로, 섹션 컨트롤러(54)는 데이터 블록 식별자를 사용하여 읽을 데이터 블록이 저장된 스토리지 기억 장소에 대응하는 메모리 디바이스(66)에 대한 어드레스를 결정한다.
이후, 섹션 컨트롤러(54)는 다른 적절한 제어 신호와 함께 이들 어드레스를 메모리 디바이스(66)에 제공한다. 이에 응답하여, 메모리 디바이스는 데이터를 읽고, 상기한 데이터는 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등)가 데이터 전단에 부가되도록 메모리 인터페이스 디바이스(64)의 읽기 시프트 레지스터 체인에 데이터에 로드된다. 어드레스 및 제어 신호는 전술한 메모리 래칭 방법과 같은 방법에 따라 메모리 디바이스(66)에 제공될 수 있다.
상기 단계(10)에서 메모리 디바이스가 혼잡 상태인 경우, 읽기 요청은 마이크로프로세서(51) 내장 메모리(52) 내의 큐에 저장될 수 있다(S1322). 메모리 디바이스가 사용 가능하게 되면, 메모리 디바이스는 섹션 컨트롤러(54)에 인터럽트 신호를 전송할 수 있으며(S1324), 이후, 상기 단계(S1326)의 전단에서 설명한 바와 같이, 읽기 요청을 처리한다.
데이터가 시프트 레지스터 체인으로부터 기록되고, 셀렉터(44)로 전송되는 경우(S1340), 셀렉터(44)는 섹션 컨트롤러(54)의 제어하에서, 데이터를 통신 채널 인터페이스(46)의 적절한 채널에 연결한다. 이후, 데이터는 통신 인터페이스(208) 스위치 페브릭(206), 및 통신 인터페이스(204)를 통해 서버(12)로 보내진다(S1342)
또한, 예를 들어, 데이터는 체인 내의 모든 메모리 디바이스로부터 동시에 읽혀질 수 있으며, 시프트 레지스터 어레이 읽기 체인에 동시에 로드될 수 있다. 이러한 상황에서, 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등)는 예를 들어, 단지 시트프 레지스터 버스 체인의 전단에 삽입될 수 있다.
테스트 동작(TEST OPERATION)
이제 도 5의 실시예에 대한 테스트 동작이 설명될 것이다. 어떤 경우에, 공지의 데이터를 이용하여 시스템을 테스트하는 것이 바람직할 수 있다. 시스템을 테스트 하는 경우, 테스트 데이터 및 제어 신호는 T-셀렉터(62)가 메모리 인터페이스 디바이스(64)로부터 테스트 데이터를 전송하도록 하고, 테스트 데이터가 시스템으로 보내질 수 있도록 섹션 컨트롤러(54)에서 T-셀렉터(62)로 전송될 수 있다. 메모리 인터페이스 디바이스(64)에 쓰여진 후 또는 메모리 인터페이스 디바이스(64)로부터 읽어온 후에 테스트 데이터는 셀렉터(44)로 전송될 수 있고, 셀렉터는 테스트 데이터를 테스트 회로(59)로 전송하기 위해 테스트 회로(59)에 의한 명령을 받을 수 있다. 이후, 테스트 회로(59)는 예를 들어, 패리티 체크(parity checks) 및/또는 비트 레벨 비교와 같은 에러 검출 및 보정 능력(capabilities)을 이용하여 데이터를 체크할 수 있다. 데이터가 정확한 경우, 어떠한 조치도 요구되지 않는다. 만일, 데이터에 정확하지 않은 경우, 테스트 데이터는 다시 전송될 수 있다. 만약 데이터가 정확한 경우, 어떠한 조치도 요구되지 않는다. 그렇지 않다면, 섹션 컨트롤러(54)는 관리 컴플렉스(26)에 오류가 발생하였다는 점을 통지하고, 이를 처리하는 소프트웨어에서 제공하는 에러 복구 능력을 통해 오류를 격리하기 시작한다. 동시에, 관리 컴플렉스(26)는 전술한 바와 같이 관리 컴플렉스(26) 상의 섹션 내에서 오류 관리 절차를 실행할 수 있다.
또한, CPU(51)은 헤더/테스트 인터페이스(63)를 통해 테스트 데이터를 메모리 인터페이스 디바이스(64)에 제공할 수 있다. 예를 들어, 이러한 데이터는 목적 어드레스/데이터 블록 식별자 및 다른 데이터와 같은 방법으로 메모리 인터페이스 디바이스(64)의 하나 이상의 시프트 레지스터 어레이에 제공될 수 있다. 테스트 데이터의 전송은 소정의 정규 데이터가 스토리지 허브를 통해 처리되어 전송되는 방법과 동일하게 스토리지 허브를 통해 처리될 수 있다. 이러한 테스트 데이터는 모든 제어 및 인터페이스 접속, 서버 목적지의 정확한 식별, 작업처리 시간, 병렬 데이터 경로 사이에서 동시적 체크와 같은 모든 시프트 레지스터 어레이의 동작의 테스트를 가능하게 한다. 바람직하다면, 이러한 데이터 이동 경로는 실제 데이터 전송 전에 바람직한 핸드쉐이크 루틴(handshake routines)을 위해 적용될 수 있다.
스토리지 허브의 병렬성 및 범용성(PARALLELISM AND SCALABILITY OF STORAGE HUB)
스토리지 허브(10)는 계층형 병렬성(hierarchical)을 나타낼 수 있다. 본 명세서에서 사용되는 "계층형 병렬성"은 메모리 섹션 내의 병렬성, 메모리 섹션과 스위치 페브릭의 병렬성 및 모든 메모리 섹션과 서버 사이의 스위치 페브릭 커넥션의 병렬성을 나타낸다.
본 실시예에서, 요청 데이터가 상이한 메모리 디바이스(66)에 상주하는 한, 메모리 섹션(30) 자체는 N 개의 동시적인 읽기 및 하나의 쓰기를 지원할 수 있으며, 여기서, N은 메모리 섹션(30)이 사용할 수 있는 통신 채널 연결의 개수이며, 바람직하게는 메모리 디바이스(66)의 개수를 초과하지 않는다. 예를 들어, 도 5에 도시된 바와 같이, 통신 채널 인터페이스(46)는 정보의 전송 및 수신을 위한 4개의 통신 채널 연결을 가진다. 바람직하게, 스위치(22)는 완료할 수 있는 읽기 요청 및 쓰기 요청을 동시적으로 처리할 수 있다. 바람직하게, 메모리 섹션(30)의 섹션 컨트롤러(54)는 메모리 디바이스(66)에서의 데이터의 읽기 및 쓰기를 관리하며, 충돌을 관리한다. 메모리 섹션(30)의 섹션 컨트롤러(54)는 실행되는 소프트웨어에서 제공하는 성능을 통해 충돌을 관리한다. 예를 들어, 섹션 컨트롤러(54)는 쓰기 요청이 큐에 저장된 낮은 우선권 요청을 가지는 읽기 요청보다 우선권을 가지도록 명령할 수 있다. 예를 들어, 전술한 바와 같이, 쓰기 요청에 관한 데이터는 임시 스토리지 디바이스(52) 내의 큐에 저장될 수 있으며, 쓰기 및 읽기 요청은 섹션 컨트롤러(54)의 내장 메모리(52)에 저장될 수 있다. 관리 컴플렉스(26)는 섹션 컨트롤러(54)에 예를 들어, 선도착/선처리(a first-to-arrive/a firts-to-be processed) 알고리즘과 같은 방법으로 충돌을 해결하도록 명령할 수 있다.
본 실시예에서, 메모리 섹션(30)의 병렬성은 메모리 섹션(30) 사이의 병렬성에 의해 더 확대될 수 있다. 즉, 어떤 시점에서 메모리 섹션(30)의 개수가 적어도 스토리지 허브(10)로부터 서버에 연결된 개수 S보다 큰 경우, S개의 메모리 섹션 수만큼 억세스 될 수 있다. 스토리지 허브(10)가 메모리 섹션보다 더 많은 서버 연결을 가지는 경우, 본 실시예에서, 동시적인 트랜잭션 수는 메모리 섹션의 수와 같아진다.
또한, 본 실시예에서, 스토리지 허브(10)는 범용적일 수 있다. 보다 상세하게는, 만일 증가된 용량(capacity)이 스토리지 허브(10)로부터 요구된다면, 이와 같이 증가된 용량은 예를 들어, 추가 메모리 섹션(30) 및 이들을 수용하는 캐비넷을 추가하거나, 백업 전원, 높은 용량 및/또는 추가 스위치(22)를 포함시키거나, 및/또는 스토리지 허브(10) 연결의 개수 및/또는 용량을 증가시킴에 의해 다루어질 수 있다. 또한, 스토리지 허브(10)의 용량이 증가됨에 따라 관리 컴플렉스 프로세서(32 및 34)의 용량 및/또는 개수는 증가될 수 있어 관리 컴플렉스(26)가 스토리지 허브의 메모리 섹션(30) 개별 상태를 감시하기 위한 충분한 용량을 가지는 것이 보증된다.
또한, 본 실시예에서, 메모리 섹션(30)은 범용적일 수 있다. 예를 들어, 메모리 섹션(30)의 증가된 용량은 메모리 디바이스(66)의 추가, 메모리 인터페이스 디바이스(64), 및/또는 메모리 섹션으로의 통신 채널 인터페이스 추가에 의해 얻어질 수 있다. 바람직하게, 각 메모리 섹션에 대한 섹션 컨트롤러(54)는 메모리 섹션(30) 내 각 데이터 블록의 기억 장소에 관한 "맵(map)"을 보유하기 위한 충분히 큰 상주 메모리를 포함한다. 상업적으로 이용 가능한 마이크로프로세서가 이러한 맵을 저장하기 위한 섹션 컨트롤러로서 사용될 수 있다.
범용적인 아키텍처는 초기에 스토리지 허브가 각각 작은 개수의 메모리 디바이스는 포함하는 단지 하나 또는 소수의 메모리 섹션을 포함하는 것으로 배치될 수 있다. 이후, 증가된 용량이 스토리지 허브에 요구됨에 따라, 이와 같이 증가된 용량은 예를 들어, 추가적인 및/또는 더 높은 용량 메모리 섹션을 스토리지 허브에 추가하거나, 추가적인 메모리 섹션을 수용하는 추가적인 캐비넷 및 백업 전원의 추가, 현존하는 하나 이상의 메모리 섹션의 용량 증가, 제어 프로세서(34) 또는 관리 프로세서 추가를 통한 관리 컴플렉스(26)의 용량 증가, 필요에 따라 더 많은 포트 및/또는 스위치 컨트롤러의 추가를 통한 스위치(22)의 개수 및/또는 용량을 증가시킴으로써 관리될 수 있다. 따라서, 스토리지 허브의 용량이 증가함에 따라, 바람직하게는, 특정 사용자에 의해 보여지는 성능은 시스템 성장에 따라 균일하게 유지되며, 랜덤 데이터 요청을 생성하는 어플리케이션을 가지는 사용자에 대한 기대 응답 시간도 시스템 확장에 따라 균일하게 유지된다.
분할(PARTITIONING)
도 14는 제공되는 방법 및 시스템에 따른 N 메모리 디바이스(66)의 로컬 다이어그램을 도시한 것이다. 전술한 바와 같이, 메모리 디바이스(66)는 B 비트를 저장할 수 있는 솔리드스테이트 메모리 디바이스일 수 있으며, 각 메모리 디바이스가 저장할 수 있는 비트의 개수는 달라질 수 있다. 일 실시예에서, 관리 컴플렉스(26)는 소정 커맨드를 메모리 섹션(30)의 섹션 컨트롤러(54)로 전송할 수 있으며, 이는 메모리 섹션(30) 내의 메모리 디바이스(66)를 특정 블록 사이즈를 가지는 하나 이상의 데이터 블록을 포함하는 다수의 파티션(partitions)으로 재구성할 것을 섹션 컨트롤러(54)에 명령하는 것이다. 여기서, 블록 사이즈는 블록 내의 비트수이다. 상이한 사이즈의 데이터 블록 및 데이터 블록 파티션의 사용은 스토리지 허브가 상이한 어플리케이션에 대한 스토리지 구조를 적합하게 하도록 하는데, 상이한 어플리케이션의 데이터는 동일한 스토리지 허브에 저장된다. 예를 들어, 항상 텍스트, 하나 또는 복수의 이미지를 저장하는 온라인 카탈로그와 같은 어플리케이션은 단순히 텍스트를 저장하는 고객 예약 시스템과 같은 어플리케이션에 비해 더 큰 블록 사이즈인 것이 바람직하다. 파티션 또는 데이터 사이즈는 관리 컴플렉스로부터의 커맨드를 통해 자유롭게 재구성될 수 있기 때문에 새로운 어플리케이션을 위한 새로운 데이터는 동작을 멈추거나 변경되지 않은 다른 메모리 섹션 내에 있는 데이터에 영향을 미치지 않으면서 스토리지 허브로 로드될 수 있다.
도 14에 도시된 바와 같이, 메모리 디바이스(66-1)는 두 개의 파티션을 가지며, 여기서, 제1 파티션은 8개의 블록들을 포함하고, 제2 파티션은 2개의 블록들을 포함한다. 본 실시예에서, 제1 파티션 내에 있는 데이터 블록의 블록 사이즈는 제2 파티션에 있는 블록 사이즈보다 작다. 반대로, 메모리 디바이스(66-2)는 4개 블록 각각에 대해 4개의 동일한 파티션을 가지며, 여기서, 각 데이터 블록은 동일한 사이즈이다. 또한, 본 실시예에서, 관리 컴플렉스(26)는 각 파티션 내에서 데이터 블록 사이즈를 동적으로 조정할 수 있고, 파티션을 변경하고, 파티션을 추가 또는 삭제할 수 있다. 예를 들어, 언제든지 관리 컴플렉스(26)는 메모리 섹션(30)의 섹션 컨트롤러(54)에 메모리 디바이스(66)를 재구성할 것을 명령할 수 있고, 여기서, 현재 분할은 다음에 일어나는 분할에 어떠한 영향을 받지 않을 수 있다.
다른 메모리 인터페이스 디바이스(ALTERNATIVE MEMORY INTERFACE DEVICE)
도 15는 제공되는 방법 및 시스템에 따른, 메모리 디바이스로부터 읽고, 메모리 디바이스에 쓰는 공통 시프트 레지스터 어레이를 사용하는 메모리 인터페이스 디바이스의 실시예를 도시한 것이다. 도시된 바와 같이, 각 메모리 인터페이스 디바이스(64)는 연속적으로 상호 연결된 복수의 시프트 레지스터(76)의 시프트 레지스터 어레이(78)를 포함한다. 또한, 도 11에서의 실시예와 같이, 이들 메모리 인터페이스 디바이스는 체인을 형성하기 위해 쌍으로 연결된다.
도시된 바와 같이, 메모리 인터페이스 디바이스(64-1)의 시프트 레지스터 어레이(78)는 메모리 인터페이스 디바이스(64-2)의 시프트 레지스터 어레이(78)와 연결되고, 메모리 인터페이스 디바이스는 교대로 셀렉터(44)에 연결된다. 또한, 분리된 쓰기 체인(write chain)이 없기 때문에, 도 5에 도시된 메모리 인터페이스 디바이스(64)의 상부 오른쪽 및 왼쪽 내의 I/O 핀은 필요하지 않다. 또한, 본 실시예의 메모리 인터페이스 디바이스는 쓰기 셀렉터(82)를 사용한다. 쓰기 셀렉터(82)의 동작은 하기에서 상세하게 설명될 것이다.
다음은 도 15의 실시예에 대한 바람직한 쓰기 동작을 설명한다. 메모리 인터페이스(66)에 쓰여지는 데이터는 전술한 도 11의 실시예에서와 같이, 섹션 컨트롤러(54)의 제어하에서 임시 스토리지 인터페이스 디바이스(60)를 통해 T-셀렉터(62)로 전송된다. 본 실시예에서, 데이터 쓰기를 위한 체인이 분리되기 때문에, 데이터는 데이터가 저장될 메모리 디바이스에 대응하는 체인으로 전송된다. 따라서, T-셀렉터(62)는 상기한 데이터를 쓰기 셀렉터(82)로 보내며, 쓰기 셀렉터(82)는 쓰기 셀렉터(82)가 상기한 데이터를 시프트 레지스터 어레이의 적절한 체인으로 전송하도록 섹션 컨트롤러(54)로부터 제어 신호를 수신한다.
이후, 신호는 체인 내의 제1 메모리 인터페이스 디바이스(64-1)(본 실시예에서)의 쓰기 셀렉터(76)로 보내진다. 이는 쓰기 동작이기 때문에, 데이터는 시프트 레지스터 어레이(78)에 기록되고, 데이터가 쓰여질 메모리 디바이스(66)에 대응하는 시프트 레지스터 어레이(78)에 로드될 때까지 시프트 레지스터를 통해 기록된다. 이후, 데이터가 메모리 디바이스(66)에 쓰여진다. 시프트 레지스터 어레이(78)로부터 메모리 디바이스(66)에 데이터를 쓰는 방법 및 시스켐은 하기에서 더 상세하게 설명된다.
도 15의 실시예에 대한 바람직한 읽기 동작이 이제 설명될 것이다. 우선, 데이터에 대한 식별자(예를 들어, 목적 어드레서, 데이터 블록 식별자 등)가 섹션 컨트롤러(54)로부터 읽기 셀렉터(84)로 제공된다. 이후, 목적 어드레스는 시프트 레지스터 어레이 체인을 통해 기록된다.
다음으로, 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등)가 시프트 레지스터 어레이의 전단에 부가되도록 데이터가 메모리 디바이스(66)로부터 시프트 레지스터 어레이(78)로 로드된다. 이후, 데이터는 셀렉터(44)를 지날때까지 시프트 레지스터(76)의 체인을 통해 기록된다. 이후, 도 5 및 도 11에서 설명된 바와 같이, 데이터는 서버(12)를 통해 말단 사용자에게 보내진다.
또한, 도 11에서와 같이, 데이트 데이터가 메모리 디바이스(66)에 삽입될 수 있고, T-셀렉터(62)를 이용하는 시스템을 통해 보내질 수 있다.
당업자에게 명백한 것처럼, 본 발명의 범주를 벗어남이 없이 메모리 인터페이스 디바이스의 다른 실시예가 가능하다. 예를 들어, 각 메모리 디바이스는 단지 하나의 쓰기 또는 읽기 시프트 레지스터 어레이로서 설명될지라도, 메모리 디바이스는 소정 개수의 시프트 레지스터 어레이의 읽기 또는 쓰기 체인을 포함할 수 있다. 또한, 시프트 레지스터(76)는 1 비트 시프트 레지스터 대신 소정 뎁스(depth)의 시프트 레지스터일 수 있다. 예를 들어, 시프트 레지스터 어레이는 시스템의 특정 목적 수행을 위해 시스템 설계자에 결정된 2x8, 4x32, 8x16 어레이 등과 같은 N x M 어레이일 수 있다. 또한, 시프트 레지스터 어레이는 링으로 구성될 수 있어 체인 내에서 체인에 로드된 데이터가 동시적으로 순환한다. 시프트 레지스터 어레이를 이용한 메모리 억세스의 보다 상세한 설명은 본 출원서와 동일자로 제출된 전술한 "메모리 억세스를 개선하기 위한 방법 및 시스템(Methods and Systems for Improved Memory Access)"로 명칭된 William T.Lynch 및 David J. Herbison의 미국 특허 출원 번호 10/284,198에서 제공된다.
다른 메모리 섹션(ALTERNATIVE MEMORY SECTION)
도 16은 제공되는 방법 및 시스템에 따른 다른 메모리 섹션(30)을 도시한 것이다. 이들 메모리 셕션은 본 발명을 실시하는데 적용될 수 있는 바람직한 메커니즘으로서 제공되는 것이며, 청구범위 범주를 한정하기 위한 것이 아니다.
도시된 바와 같이, 메모리 섹션(30)은 하나 이상의 통신 채널 입출력 인터페이스(46-1 및 46-m), 섹션 컨트롤러(54), 하나 이상의 버스 인터페이스(1602), 버스(1604), 버스 컨트롤러(1606), 애널라이저(analyzer, 1608) 및 하나 이상의 메모리(66-1 및 66-n)를 포함한다. 본 실시예에서, 버스(1604)는 주변 컴포넌트 상호연결(Peripheral Component Interconnect: PCI) 표준을 사용한다. 각 디바이스는 바람직하게 버스 인터페이스(1602)를 통해 버스에 연결되고, 본 실시예에서는 PCI 인터페이스를 통해 연결된다. 본 실시예에서 버스 컨트롤러(1606)는 버스를 제어할 수 있는 디바이스 조정을 위한 PCI 버스 컨트롤러이다. 또한, 본 실시예에서, 애널라이저 회로(1608)는 PCI 버스(1604)의 상태를 감시하며, 섹션 컨트롤러(54)에 버스(1604)의 실시간 상태를 통지한다.
통신 채널 입출력 인터페이스(46-1 및 46-m)은 섬유 채널, 이더넷을 통한 전송 제어 프로토콜/인터네트워킹 프로토콜(TCP/IP), 토큰링 등과 같은 소정 타입의 통신 채널 인터페이스일 수 있다. 본 실시예에서, 통신 채널 입출력 인터페이스(46-1 및 46-m)은 섬유 채널 프로토콜을 사용한다. 칩으로 구현된 상업적으로 이용 가능한 섬유 채널 I/O 컴포넌트가 통신 채널 I/O 인터페이스(46)로서 사용될 수 있다. 이들 상업적으로 이용 가능한 칩은 일반적으로 레이어(layer)2 및 4 프로토콜 엔진, 2.125 기가비트 트랜시버, 데이터 코덱, 전송 FIFO(선입선출) 큐 및 수신 FIFO 큐를 실행시키는 마이크로프로세서를 포함한다. 섬유 채널 I/O 컴포턴트의 마이크로프로세서는 섹션 컨트롤러(54)로부터 PCI 인터페이스(1602)의 제어 및 메모리 디바이스(66)로부터 전송 또는 수신 정보에 관한 커맨드를 수신할 수 있다. 본 실시예에서, m 개의 통신 채널 I/O 인터페이스는 m>=1로 될 수 있다.
또한, 통신 채널 I/O 인터페이스(46)는 바람직하게 섹션 컨트롤러(54)로부터 제어 명령을 수신할 수 있다. 예를 들어, 섹션 컨트롤러(54)는 다이렉트 메모리 어드레스(direct memory address: DMA) 프로토콜을 이용하여 통신 채널 인터페이스(46)에 제어 정보를 전송할 수 있으며, 통신 채널 인터페이스(46)로부터 제어 정보를 수신할 수 있다. 또한, 도시되지는 않았으나, 섹션 컨트롤러(54)는 하나 이상의 I/O 제어 라인 전반에 걸쳐 통신 채널 인터페이스(46)에 인터럽트 및 I/O 커맨드를 전송할 수 있고, 통신 채널 인터페이스(46)로부터 인터럽트 및 I/O 커맨드를 수신할 수 있다.
본 실시예에서, 섹션 컨트롤러(54)는 내부 랜덤 억세스 메모리(RAM), 부트스트랩(bootstrap) 로딩을 위한 읽기 전용 메모리(ROM), 관리 컴플렉스로의 인터페이스 및 마이크로프로세서를 포함하는 하나 이상의 칩으로 구현된다. 섹션 컨트롤러(54)는 전술한 실시예에서와 같이, 메모리 래칭을 통해 직접적으로 메모리 디바이스(66)를 제어할 수 있다. 또한, 섹션 컨트롤러(54)는 애널라이저 회로(1608)로부터 버스 인터페이스(1602)에 대한 실시간 상태 정보를 수신할 수 있다. 또한, 도시된 바와 같이, 섹션 컨트롤러(54)는 DMA 프로토콜을 이용하여 통신 채널 인터페이스에 제어 정보를 전송하고, 통신 채널 인터페이스로부터 제어 정보를 수신하는 DMA 인터페이스를 포함한다.
읽기 전용 메모리(ROM)(56)는 최신 소프트웨어 이미지를 얻기 위해 섹션 컨트롤러에서 사용되는 부트스트랩 프로그램과 연관된 소프트웨어를 저장할 수 있다. 이러한 ROM(56)은 섹션 컨트롤러(54)로부터 분리된 것처럼 도시되었을지라도 이는 섹션 컨트롤러(54)에 포함될 수 있다.
버스 인터페이스(1602)는 메모리 디바이스(66)와 통신 채널 인터페이스(46)를 버스(1604)에 연결하는데 사용되며, 이에 따라 이들 디바이스는 버스(1604)를 통해 정보를 전송 및 수신할 수 있다. 본 실시예에서 버스 인터페이스(1602-3 및 1602-4)는 제어 라인을 경유하여 섹션 컨트롤러(54)에 연결되며, 섹션 컨트롤러(54)는 제어 라인을 통해 버스 인터페이스(1602-3 및 1602-4)로 제어 정보를 전송할 수 있다. 이러한 제어 정보는 예를 들어, 메모리 디바이스(10)로부터 읽혀지는 데이터에 대한 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등)를 포함할 수 있다. 따라서, 버스 인터페이스(1602-3 및 1602-4)는 메모리 인터페이스 디바이스(1602-3 및 1602-4)로 간주될 수도 있다.
전술한 실시예에서와 같이, 메모리 디바이스(66)는 DIMMs와 같은 소정 타입의 메모리 디바이스일 수 있다. 바람직하게, 섹션 컨트롤러(54)는 메모리 디바이스(66)로부터의 읽기 및 메모리 디바이스(66)로의 쓰기를 제어한다. 예를 들어, 메모리 디바이스(66)와 섹션 컨트롤러(54) 사이의 제어 라인은 섹션 컨트롤러(54)로부터 메모리 디바이스(66)까지 메모리 디바이스(66)에 또는 메모리 디바이스(66)로부터 데이터를 전송하기 위한 어드레스 및 비트수에 관한 신호를 이송할 수 있다. 또한, 메모리 디바이스(66)는 동작이 완료되는 경우, 메모리 디바이스(66)의 동작 상태에 관한 정보와 함께 실시간 인터럽트 신호를 이들 제어 라인을 통해 섹션 컨트롤러(54)에 제공할 수 있다. 본 실시예에서, n 메모리 디바이스(66)가 존재하며, 여기서, n>=1이다.
하기에서는 도 14의 메모리 섹션에 대한 읽기 동작의 예의 개략적인 고찰을 제공한다. 본 실시예에서, 통신 채널 인터페이스(46)는 바람직하게 섬유 채널 I/O 컴포넌트이다. 데이터 요청이 통신 채널 인터페이스(46)에 도달하는 경우, 통신 채널 인터페이스(46)는 이를 검출하고, 섹션 컨트롤러(54)에 인터럽트 신호를 전송한다. 이러한 인터럽트 신호는 바람직하게 메모리 디바이스로부터 읽혀질 데이터 블록에 관한 정보를 포함한다. 이후, 섹션 컨트롤러(54)는 데이터 블록 정보를 메모리 디바이스 내의 어드레스로 매핑한다. 즉, 섹션 컨트롤러는 메모리 디바이스 상에서 데이터에 대한 어드레스와 함께 요청된 데이터를 저장하는 메모리 디바이스(66)를 데이터 블록 정보로부터 결정한다. 이후, 섹션 컨트롤러(54)는 어드레스 정보를 내장 메모리로 로드하고, 어드레스는 전술한 메모리 래칭 예에서와 같이, 메모리 디바이스로 전송된다.
이후, 요청된 데이터 블록이 메모리 디바이스(66)로부터 읽혀지며, 이들의 대응 버스 인터페이스(1602)로 전송된다. 또한, 섹션 컨트롤러(54)는 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등)를 버스 인터페이스(1602)로 전송한다. 식별자는 예를 들어, 전송되는 데이터에 대한 식별자(예를 들어, 데이터 블록 식별자) 또는 데이터를 전송하는 어드레스를 식별하는 목적 어드레스 식별자일 수 있다. 목적 어드레스는 예를 들어, 데이터가 전송될 통신 채널 인터페이스(46)에 대응하는 버스 인터페이스(1602)에 대한 내부 어드레스일 수 있다. 이와 달리, 목적 어드레스는 예를 들어, 데이터에 정해진 서버(12)의 어드레스, 정보를 스위칭하는데 스위치(22)에서 사용하는 어드레스 또는 목적지로 데이터를 발송하는데 유용한 다른 식별자일 수 있다.
이후, 버스 인터페이스(1602)는 식별자(예를 들어, 목적 어드레스, 데이터 블록 식별자 등) 및 데이터를 버스 프로토콜에 따라 버스(1604)를 통해 전송한다. 본 실시예에서, 버스(1604)는 PCI 프로토콜을 사용하며, PCI 컨트롤러(1606)는 버스(1604)에 억세스하는데 발생하는 충돌을 조정한다.
데이터가 전송되는 통신 채널 인터페이스(46)에 대한 버스 인터페이스(1602)는 어드레스를 포함하는 데이터를 위한 버스를 감시한다. 모든 정보가 버스를 통해 전송되기 때문에 버스 인터페이스(1602)는 버스 인터페이스(1602)에 대한 어드레스를 포함하지 않은 데이터는 무시한다. 데이터가 전송될 통신 채널 인터페이스(46)에 대한 버스 인터페이스(1602)가 스스로 소정 어드레스를 확인하는 경우, 버스 인터페이스는 버스(1604)로부터 데이터를 읽는다. 통신 채널 인터페이스(46)는 메모리 섹션(30)으로부터 데이터 블록을 전송한다. 어떤 실시예에서, 통신 채널 인터페이스(46)는 메모리 섹션(30)으로부터 데이터를 전송하기 전에 목적 어드레스를 새로운 어드레스로 대체할 수 있다.
도 14의 바람직한 메모리 섹션(30)의 쓰기 동작이 이제 설명될 것이다. 쓰기 요청을 통신 채널 인터페이스(46)로부터 수신하는 경우, 통신 채널 인터페이스(46)는 이것이 쓰기 요청이라는 것을 판단하고, 상기한 요청을 DMA 인터페이스(1610)를 통해 섹션 컨트롤러(54)로 전송한다.
본 실시예에서, 쓰기 요청은 데이터가 쓰여질 메모리 섹션(30)이 어느 것인지 가리키는 데이터 블록 식별자를 포함할 수 있다. 섹션 컨트롤러(54)는 이 데이터 블록 식별자를 매핑하여 메모리 디바이스(66)에 대한 어드레스와 함께 데이터가 쓰여질 메모리 섹션(30)의 메모리 디바이스(66)를 결정한다. 섹션 컨트롤러(54)는 이들 어드레스를 적절한 메모리 디바이스(66)에 제공한다.
섹션 컨트롤러(54)에 쓰기 데이터 요청을 전송하는 것외에, 통신 채널 인터페이스(46)는 쓰기 요청으로부터 데이터를 획득하고, 상기한 데이터를 통신 채널 인터페이스의 대응 버스 인터페이스(1602)로 전송한다. 또한, 섹션 컨트롤러(54)는 통신 채널 인터페이스(46)에 쓰기 데이터를 저장할 메모리 디바이스(66)에 대응하는 버스 인터페이스(1602)에 대한 버스 인터페이스 어드레스를 제공할 수 있다. 버스 인터페이스(1602)는 데이터 및 버스 인터페이스를 버스(1604)로 전송한다.
메모리 디바이스에 대한 버스 인터페이스(1602-3 및 1602-4)는 이들로 정해진 데이터를 찾기 위해 버스(1604)를 감시한다. 버스 인터페이스(1602)가 전송되는 자신의 어드레스를 판독하는 경우, 버스 인터페이스는 버스로부터 쓰기 데이터를 읽는다. 한편, 섹션 컨트롤러(54)는 버스 인터페이스(1602-3 또는 1602-4)로부터의 쓰기 데이터를 수용하기 위해 대응 메모리 디바이스(66)에 통지한다. 버스 인터페이스(1602-3 또는 1602-4)는 데이터를 섹션 컨트롤러(54)에 의해 제공된 어드레스에 상기한 데이터를 쓰는 이들의 대응 메모리 디바이스(66)에 제공한다.
바람직한 실시예에 대한 상기 설명은 예로서 제공된 것이다. 주어진 개시로부터 당업자는 본 발명 및 이의 장점을 이해할 것이나, 개시된 방법 및 구조에서 만들어질 수 있는 명백하게 다양한 변경 및 수정을 발견할 수 있을 것이다. 그러므로, 우리는 첨부되는 청구범위 및 이들의 균등물로 정의되는 바와 같이, 본 발명의 의도 및 범주에 포함되는 모든 변경 및 수정을 보호하고자 한다. 따라서, 하기에서 나타나는 본 발명의 진정한 범주 및 의도를 가지면서, 발명의 상세한 설명 및 실시예는 단지 예시로 보아야 한다.

Claims (14)

  1. 하나 이상의 어드레스에 의해 위치가 정해질 수 있는 데이터를 저장하는 하나 이상의 메모리 디바이스-상기 메모리 디바이스는 제어 신호를 수신할 수 있음-;
    상기 메모리 디바이스에 저장된 데이터에 관한 요청을 수신하고, 상기 요청 데이터에 대한 하나 이상의 어드레스를 결정하며, 상기 요청 데이터를 전송하는데 사용하는 식별자를 결정하며, 상기 요청 데이터를 저장하는 상기 메모리 섹션에 상기 결정된 어드레스를 포함하는 제어 신호를 상기 메모리 섹션에 전송하는 메모리 섹션 컨트롤러; 및
    상기 메모리 디바이스로부터 상기 메모리 디바이스에 저장된 상기 요청 데이터를 수신하고, 상기 메모리 섹션 컨트롤러로부터 상기 요청 데이터를 전송하는데 사용하는 상기 결정된 식별자를 수신하며, 상기 요청 데이터를 상기 결정된 식별자와 결합하고, 상기 요청 데이터를 목적 디바이스로 전송하는 메모리 인터페이스 디바이스를 포함하는 메모리 섹션.
  2. 제1항에 있어서,
    상기 요청 데이터 전송에 사용하는 식별자는 데이터가 전송될 디바이스에 대한 식별자인 메모리 섹션
  3. 제1항에 있어서,
    상기 요청 데이터 전송에 사용하는 식별자는 전송될 데이터를 식별하는 식별자인 메모리 섹션
  4. 제1항에 있어서,
    상기 메모리 인터페이스 디바이스는 상기 메모리 디바이스에 데이터를 쓰는 연속적으로 상호 연결된 적어도 일군의 시프트 레지스터 및 상기 메모리 디바이스로부터 데이터를 읽는 연속적으로 상호 연결된 적어도 일군의 시프트 레지스터를 포함하는 연속적으로 상호 연결된 적어도 일군의 시프트 레지스터를 포함하며,
    상기 일군의 시프트 레지스터 내의 데이터는 클럭 신호에 따라 상기 일군 내의 시프트 레지스터의 하나로부터 상기 일군 내의 다음 시프트 레지스터로 이동하는 메모리 섹션.
  5. 제1항에 있어서,
    상기 결정된 어드레스는 시작 어드레스 및 전송 비트수를 포함하며,
    상기 메모리 섹션 컨트롤러는 상기 메모리 디바이스가 상기 시작 어드레스 및 전송 비트수로 특정된 상기 기억 장소의 데이터를 전송하도록 하기 위해, 상기 시작 어드레스 및 상기 전송 비트수가 상기 메모리 디바이스에 전송되도록 시작 어드레스 및 상기 전송 비트수가 배치될 수 있는 내장 메모리를 포함하는 메모리 섹션.
  6. 제1항에 있어서,
    상기 메모리 섹션은 상기 요청 데이터를 상기 목적 디바이스로 전송하기 위해 상기 식별자를 사용하는 스위치로 상기 요청 데이터를 전송하는 메모리 섹션.
  7. 제1항에 있어서,
    상기 메모리 섹션 컨트롤러는 상기 메모리 디바이스에 테스트 데이터를 제공할 수 있고, 상기 메모리 디바이스로부터 수신된 테스트 데이터를 체크하며, 상기 테스트 데이터의 체크를 통해 오류를 결정할 수 있는 메모리 섹션.
  8. 제1항에 있어서,
    상기 메모리 디바이스의 스토리지 기억 장소는 데이터 블록 식별자로 식별될 수 있는 데이터 블록으로 분할되며, 상기 메모리 섹션에 의해 수신된 데이터 요청은 상기 메모리 섹션 컨트롤러로 전송되는 데이터 블록 식별자를 포함하며, 상기 메모리 섹션 컨트롤러는 상기 데이터 블록 식별자를 기반으로 하나 이상의 어드레스를 결정하며, 상기 결정된 어드레스를 하나 이상의 메모리 디바이스에 제공하는 스토리지 시스템.
  9. 메모리 디바이스 내의 스토리지 기억 장소에 데이터를 저장하는 단계-상기 스토리지 기억 장소는 어드레스에 의해 식별 가능함-;
    메모리 섹션 컨트롤러에 의해 상기 메모리 디바이스에 저장된 데이터에 대한 데이터 요청을 수신하는 단계;
    상기 메모리 섹션 컨트롤러가 상기 요청 데이터에 대한 하나 이상의 어드레스를 결정하는 단계;
    상기 메모리 섹션 컨트롤러가 상기 요청 데이터를 전송하는데 사용하는 식별자를 결정하는 단계;
    상기 메모리 섹션 컨트롤러가 상기 결정된 어드레스를 포함하는 제어 신호를 상기 메모리 디바이스로 전송하는 단계;
    상기 메모리 섹션 컨트롤러가 상기 결정된 식별자를 메모리 인터페이스 디바이스로 전송하는 단계;
    상기 메모리 인터페이스 디바이스가 상기 메모리 디바이스로부터 상기 요청 데이터를 수신하는 단계;
    상기 메모리 인터페이스 디바이스가 상기 식별자를 상기 요청 데이터와 결합하는 단계;
    상기 메모리 인터페이스 디바이스가 상기 요청 데이터를 목적 디바이스로 전송하는 단계를 포함하는 스토리지 시스템 사용 방법.
  10. 제9항에 있어서,
    연속적으로 상호 연결된 일군의 시프트 레지스터 내의 하나 이상의 시프트 레지스터에 있는 데이터를 시프트 주파수를 갖는 클럭 신호를 기반으로 상기 시스프트 레지스터에서 상기 일군의 다음 시프트 레지스터로 이동시키는 단계-상기 시프트 레지스터는 상기 메모리 인터페이스 디바이스에 포함됨-;
    하나 이상의 시프트 레지스터에서 상기 메모리 디바이스로 데이터를 로딩하는 단계; 및
    상기 데이터가 상기 메모리 디바이스에 로드된 후에 상기 클럭 신호에 따라 하나 이상의 시프트 레지스터로부터 로드된 데이터를 상기 일군 내의 다음 시프트 레지스터로 이동시키는 단계를 더 포함하되,
    상기 클럭 신호는 데이터를 로딩하는 동안에 이의 시프트 주파수를 유지하는 스토리지 시스템 사용 방법.
  11. 제9항에 있어서,
    상기 결정된 어드레스는 시작 어드레스 및 전송 비트수를 포함하며,
    시작 어드레스 및 전송 비트수를 상기 메모리 섹션 컨트롤러의 내장 메모리에 배치하는 단계;
    상기 시작 어드레스 및 전송하비트수를 상기 메모리 섹션 컨트롤러로부터 상기 메모리 디바이스로 전송하는 단계; 및
    상기 메모리 디바이스가 상기 시작 어드레스 및 전송 비트수를 수신하는 것에 응답하여, 상기 시작 어드레스 및 전송 비트수에 의해 특정된 기억 장소로 상기 데이터를 전송하는 단계를 더 포함하는 스토리지 시스템 사용 방법.
  12. 제9항에 있어서,
    상기 메모리 섹션이 상기 요청 데이터를 상기 목적 디바이스로 상기 요청 데이터를 전송하기 위해 상기 식별자를 사용하는 스위치로 전송하는 단계를 더 포함하는 스토리지 시스템 사용 방법.
  13. 제9항에 있어서,
    상기 메모리 섹션 컨트롤러가 상기 메모리 디바이스에 테스트 데이터를 제공하는 단계;
    상기 메모리 섹션 컨트롤러가 상기 메모리 인터페이스 디바이스로부터 상기 테스트 데이터를 수신하는 단계;
    상기 메모리 섹션 컨트롤러가 상기 수신된 데이터를 체크하는 단계; 및
    상기 메모리 섹션 컨트롤러가 상기 테스트 데이터의 체크를 기반으로 오류를 결정하는 단계를 더 포함하는 스토리지 시스템 사용 방법.
  14. 제9항에 있어서,
    상기 메모리 디바이스의 스토리지 기억 장소는 데이터 블록 식별자에 의해 식별할 수 있는 데이터 블록으로 분할되며, 상기 메모리 섹션에 의해 수신된 데이터 요청은 데이터 블록 식별자를 포함하며,
    상기 데이터 요청을 상기 메모리 섹션 컨트롤러로 전송하는 단계;
    상기 메모리 섹션 컨트롤러가 상기 데이터 블록 식별자를 기반으로 하나 이상의 어드레스를 결정하는 단계; 및
    상기 메모리 섹션 컨트롤러가 상기 결정된 어드레스를 하나 이상의 메모리 디바이스에 제공하는 단계를 더 포함하는 스토리지 시스템 사용 방법.
KR1020107009973A 2002-10-31 2003-10-23 스토리지 시스템에 관한 방법 및 시스템 KR20100072068A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/284,199 2002-10-31
US10/284,268 US7707351B2 (en) 2002-10-31 2002-10-31 Methods and systems for an identifier-based memory section
US10/284,278 US7415565B2 (en) 2002-10-31 2002-10-31 Methods and systems for a storage system with a program-controlled switch for routing data
US10/284,199 US7197662B2 (en) 2002-10-31 2002-10-31 Methods and systems for a storage system
US10/284,278 2002-10-31
US10/284,268 2002-10-31

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007547A Division KR20050075764A (ko) 2002-10-31 2003-10-23 스토리지 시스템에 관한 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR20100072068A true KR20100072068A (ko) 2010-06-29

Family

ID=32314844

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020057007547A KR20050075764A (ko) 2002-10-31 2003-10-23 스토리지 시스템에 관한 방법 및 시스템
KR1020107009973A KR20100072068A (ko) 2002-10-31 2003-10-23 스토리지 시스템에 관한 방법 및 시스템
KR1020107009972A KR20100072067A (ko) 2002-10-31 2003-10-23 스토리지 시스템에 관한 방법 및 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020057007547A KR20050075764A (ko) 2002-10-31 2003-10-23 스토리지 시스템에 관한 방법 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020107009972A KR20100072067A (ko) 2002-10-31 2003-10-23 스토리지 시스템에 관한 방법 및 시스템

Country Status (7)

Country Link
EP (3) EP2060976B1 (ko)
JP (2) JP2006505065A (ko)
KR (3) KR20050075764A (ko)
AT (3) ATE557349T1 (ko)
AU (1) AU2003286638A1 (ko)
DE (2) DE60327357D1 (ko)
WO (1) WO2004042505A2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540094B2 (en) 2008-02-28 2020-01-21 Memory Technologies Llc Extended utilization area for a memory device
US10877665B2 (en) 2012-01-26 2020-12-29 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US10983697B2 (en) 2009-06-04 2021-04-20 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US11016678B2 (en) 2013-12-12 2021-05-25 Memory Technologies Llc Channel optimized storage modules
US11226771B2 (en) 2012-04-20 2022-01-18 Memory Technologies Llc Managing operational state data in memory module

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6879526B2 (en) 2002-10-31 2005-04-12 Ring Technology Enterprises Llc Methods and apparatus for improved memory access
US7707351B2 (en) 2002-10-31 2010-04-27 Ring Technology Enterprises Of Texas, Llc Methods and systems for an identifier-based memory section
US7058738B2 (en) * 2004-04-28 2006-06-06 Microsoft Corporation Configurable PCI express switch which allows multiple CPUs to be connected to multiple I/O devices
JP4819369B2 (ja) 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
US7941697B2 (en) * 2008-12-30 2011-05-10 Symantec Operating Corporation Failure handling using overlay objects on a file system using object based storage devices
US10255134B2 (en) * 2017-01-20 2019-04-09 Samsung Electronics Co., Ltd. Control plane method and apparatus for providing erasure code protection across multiple storage devices
KR20230085629A (ko) * 2021-12-07 2023-06-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914657A (en) * 1987-04-15 1990-04-03 Allied-Signal Inc. Operations controller for a fault tolerant multiple node processing system
US4984240A (en) * 1988-12-22 1991-01-08 Codex Corporation Distributed switching architecture for communication module redundancy
JPH0795258B2 (ja) * 1988-12-22 1995-10-11 富士通株式会社 二重化ディスク制御方式
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
JP2829091B2 (ja) * 1990-04-19 1998-11-25 株式会社東芝 データ処理システム
US5729763A (en) * 1995-08-15 1998-03-17 Emc Corporation Data storage system
US5922077A (en) * 1996-11-14 1999-07-13 Data General Corporation Fail-over switching system
JPH1117775A (ja) * 1997-06-20 1999-01-22 Sony Corp シリアルインタフェース回路
JP2000242434A (ja) * 1998-12-22 2000-09-08 Hitachi Ltd 記憶装置システム
US6370605B1 (en) * 1999-03-04 2002-04-09 Sun Microsystems, Inc. Switch based scalable performance storage architecture
IE20000203A1 (en) * 1999-03-25 2001-02-21 Converge Net Technologies Inc Storage domain management system
JP3454183B2 (ja) * 1999-04-13 2003-10-06 日本電気株式会社 ディスクアレイ装置
JP3726559B2 (ja) * 1999-06-01 2005-12-14 株式会社日立製作所 ダイレクトバックアップ方法および記憶装置システム
JP4175764B2 (ja) * 2000-05-18 2008-11-05 株式会社日立製作所 計算機システム
GB2367648B (en) * 2000-10-03 2002-08-28 Sun Microsystems Inc Multiple trap avoidance mechanism
US8949471B2 (en) * 2000-11-02 2015-02-03 Oracle America, Inc. TCP/UDP acceleration
US6880100B2 (en) * 2001-07-18 2005-04-12 Smartmatic Corp. Peer-to-peer fault detection
US6947981B2 (en) * 2002-03-26 2005-09-20 Hewlett-Packard Development Company, L.P. Flexible data replication mechanism
US6879526B2 (en) 2002-10-31 2005-04-12 Ring Technology Enterprises Llc Methods and apparatus for improved memory access

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11907538B2 (en) 2008-02-28 2024-02-20 Memory Technologies Llc Extended utilization area for a memory device
US11829601B2 (en) 2008-02-28 2023-11-28 Memory Technologies Llc Extended utilization area for a memory device
US10540094B2 (en) 2008-02-28 2020-01-21 Memory Technologies Llc Extended utilization area for a memory device
US11182079B2 (en) 2008-02-28 2021-11-23 Memory Technologies Llc Extended utilization area for a memory device
US11494080B2 (en) 2008-02-28 2022-11-08 Memory Technologies Llc Extended utilization area for a memory device
US11550476B2 (en) 2008-02-28 2023-01-10 Memory Technologies Llc Extended utilization area for a memory device
US11733869B2 (en) 2009-06-04 2023-08-22 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US10983697B2 (en) 2009-06-04 2021-04-20 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US11775173B2 (en) 2009-06-04 2023-10-03 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US11797180B2 (en) 2012-01-26 2023-10-24 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US10877665B2 (en) 2012-01-26 2020-12-29 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US11226771B2 (en) 2012-04-20 2022-01-18 Memory Technologies Llc Managing operational state data in memory module
US11782647B2 (en) 2012-04-20 2023-10-10 Memory Technologies Llc Managing operational state data in memory module
US11023142B2 (en) 2013-12-12 2021-06-01 Memory Technologies Llc Channel optimized storage modules
US11809718B2 (en) 2013-12-12 2023-11-07 Memory Technologies Llc Channel optimized storage modules
US11016678B2 (en) 2013-12-12 2021-05-25 Memory Technologies Llc Channel optimized storage modules

Also Published As

Publication number Publication date
EP1565819A4 (en) 2007-11-21
KR20050075764A (ko) 2005-07-21
EP1565819A2 (en) 2005-08-24
EP2060976A1 (en) 2009-05-20
EP2302517A1 (en) 2011-03-30
DE60327357D1 (de) 2009-06-04
EP2060976B1 (en) 2011-01-26
AU2003286638A1 (en) 2004-06-07
WO2004042505A3 (en) 2005-03-10
KR20100072067A (ko) 2010-06-29
ATE497208T1 (de) 2011-02-15
DE60335926D1 (de) 2011-03-10
ATE429676T1 (de) 2009-05-15
EP2302517B1 (en) 2012-05-09
ATE557349T1 (de) 2012-05-15
EP1565819B1 (en) 2009-04-22
JP2006505065A (ja) 2006-02-09
AU2003286638A8 (en) 2004-06-07
WO2004042505A2 (en) 2004-05-21
JP2010250813A (ja) 2010-11-04

Similar Documents

Publication Publication Date Title
US7543177B2 (en) Methods and systems for a storage system
US7941595B2 (en) Methods and systems for a memory section
US8281022B1 (en) Method and apparatus for implementing high-performance, scaleable data processing and storage systems
US7415565B2 (en) Methods and systems for a storage system with a program-controlled switch for routing data
US7668981B1 (en) Storage paths
JP2010250813A (ja) ストレージシステムのための方法及びシステム
US6081883A (en) Processing system with dynamically allocatable buffer memory
CN100544342C (zh) 存储系统
JP3783017B2 (ja) ローカル識別子を使ったエンド・ノード区分
US9898482B1 (en) Managing stream connections in storage systems
US6678788B1 (en) Data type and topological data categorization and ordering for a mass storage system
Newhall et al. Nswap: A network swapping module for linux clusters
US6920579B1 (en) Operator initiated graceful takeover in a node cluster
EP1864221A2 (en) Network-accessible memory element, network-accessible memory module, network storage system and storage area network accelerator
US20060184949A1 (en) Methods, systems, and storage mediums for timing work requests and completion processing
WO2021173572A1 (en) Channel controller for shared memory access
US8108580B1 (en) Low latency synchronous replication using an N-way router
US8566446B2 (en) Write operation control in storage networks
US7539781B1 (en) Use of queue pairs for local communication in a network storage system
George et al. Analysis of a Highly Available Cluster Architecture

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application