KR20080038436A - 스마트 스케일러블 스토리지 스위치 아키텍처 - Google Patents

스마트 스케일러블 스토리지 스위치 아키텍처 Download PDF

Info

Publication number
KR20080038436A
KR20080038436A KR20087007248A KR20087007248A KR20080038436A KR 20080038436 A KR20080038436 A KR 20080038436A KR 20087007248 A KR20087007248 A KR 20087007248A KR 20087007248 A KR20087007248 A KR 20087007248A KR 20080038436 A KR20080038436 A KR 20080038436A
Authority
KR
South Korea
Prior art keywords
virtual
host
physical
drive
commands
Prior art date
Application number
KR20087007248A
Other languages
English (en)
Other versions
KR101340176B1 (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 KR20080038436A publication Critical patent/KR20080038436A/ko
Application granted granted Critical
Publication of KR101340176B1 publication Critical patent/KR101340176B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

상품, 소비자 수준의 스토리지 디바이스들을 이용하여 진보된 스토리지 특징들을 제공하는 방법 및 시스템이 제공된다. 진보된 스토리지 시스템은 컴퓨터 시스템과 하나 이상의 물리적인 디스크 디바이스들 사이에 연결된 컴포넌트이다. 상기 진보된 스토리지 시스템의 호스트 인터페이스는 그 자신을 컴퓨터 시스템에게, 컴퓨터 시스템의 호스트 컨트롤러에 익숙한 소비자 수준의 스토리지 하드웨어의 커맨드들 구현하는 가상 디스크 드라이브로서 제공한다. 유사하게, 상기 진보된 스토리지 시스템의 스토리지 디바이스 인터페이스는 그 자신을, 연결된 물리적인 스토리지 디바이스의 실제 토폴로지에 관계없이, 하나 이상의 디스크 드라이브에 소비자 수준의 호스트 컨트롤러로서 제공한다. 본 시스템은 컴퓨터 시스템에 진보된 스토리지 특징들을 추가하기 위해 사용자가 저비용의, 소비자 수준의 하드웨어를 결합하는 간단한 방식을 제공한다.
가상 드라이브 제공 시스템, 가상 드라이브 제공 방법, 물리적인 드라이브, 가상 드라이브, 호스트 인터페이스, 매핑 컴포넌트

Description

스마트 스케일러블 스토리지 스위치 아키텍처{SMART SCALABLE STORAGE SWITCH ARCHITECTURE}
관련출원의 전후 참조
본 출원은 2005년 8월 25일 "스마트 스케일러블 스토리지 스위치 아키텍처(SMART SCALABLE STORAGE SWITCH ARCHITECTURE)" 라는 명칭으로 출원된 미국 가특허 출원 제 60/711,863 호(대리인 문서 번호 59472-8092.US00)의 우선권을 주장하며, 이것은 본 명세서에서 참조 문헌으로 인용된다.
스토리지 시스템은 내결함성(fault tolerance), 증가된 처리량(throughput), 증가된 스토리지 용량, 및 확장성(expandability)과 같은 특징들을 제공하기 위하여 종종 다수의 디스크 드라이브를 이용한다. 예를 들어, 미러링(mirroring)은 드라이브들 중 하나가 고장나는 경우 데이터가 다른 드라이브로부터 여전히 판독될 수 있도록 데이터의 복사본을 저장하기 위하여 둘 이상의 드라이브를 이용한다. 스트라이핑(striping)은 처리량을 증가시키기 위하여 데이터가 동시에 둘 이상의 드라이브에 병렬로 기록(및 판독)되는 부분으로 분할되도록 해준다. 연결(concatenation)은 둘 이상의 드라이브를 결합하여, 단일 디스크 드라이브로부터 이용가능한 것보다 스토리지 용량을 더 크게 할 수 있다. 그러한 특징들은 엔터프 라이즈급 스토리지 솔루션(enterprise-class storage solutions)에서는 일반적인 것이 되었지만, 이 특징들은 소비자 시스템들 중에서는 여전히 드문 것이다. 그러한 시스템을 조립하는 비용과 복잡성으로 인해, 많은 소비자들이 이들 진보된 스토리지 특징들의 이점을 취하지 못하고 있다.
또한, 상품의 설계 제한 및 소비자 수준의(consumer-level) 스토리지 하드웨어는, 사용자가 이들 진보된 스토리지 특징들로부터 이익을 얻지 못하게 하고 있다. 예를 들어, 많은 컴퓨터 시스템들은 단일 호스트 인터페이스에 의해 어드레싱될 수 있는 디스크 드라이브의 개수를 제한한다. SATA(Serial Advanced Technology Attachment) 1.0 사양(웹 www.serialata.org에서 입수가능함)은 호스트에 단일의 디스크 드라이브를 연결하는 것만을 지원한다. 이후의 SATA II 포트 멀티플라이어 사양(웹 www.serialata.org에서 입수가능함)은 호스트가 15개의 물리적인 디스크 드라이브를 어드레싱하도록 해주는 추가적인 어드레싱 방식을 부가하였으나, 모든 호스트들이 더욱 새로운 사양을 지원하는 것이 아니며, 또한 호스트 컴퓨터 시스템이 다수의 드라이브들을 관리하는 것은 많은 소비자들에게 어려운 추가적인 복잡성과 구성을 부가시킨다. 그 결과, 소비자는 엔터프라이즈급 컴퓨터 시스템들에게 이용가능한 하이엔드(high-end) 스토리지 특징들을 제공할 수 있는 사용이 편리하고 저가인 하드웨어를 얻을 수가 없다.
상품, 소비자 수준의 스토리지 디바이스를 이용하여 진보된 스토리지 특징을 제공하는 방법 및 시스템이 제공된다. 상기 진보된 스토리지 시스템은 컴퓨터 시스템 및 하나 이상의 물리적인 디스크 드라이브 사이에 연결된 컴포넌트이다. 상기 진보된 스토리지 시스템의 호스트 인터페이스는 그 자신을 컴퓨터 시스템에게, 컴퓨터 시스템의 호스트 컨트롤러에 익숙한 소비자 수준의 스토리지 하드웨어의 커맨드를 구현하는 하나 이상의 가상 디스크 드라이브로서 제공한다. 유사하게, 상기 진보된 스토리지 시스템의 스토리지 디바이스 인터페이스는 그 자신을, 연결된 물리적인 스토리지 디바이스의 실제 토폴로지(topology)에 관계없이, 하나 이상의 물리적인 디스크 드라이브에 소비자 수준의 호스트 컨트롤러로서 제공한다. 먼저, 상기 진보된 스토리지 시스템은 상기 컴퓨터 시스템으로부터 가상 드라이브로의 커맨드를 수신하고, 상기 커맨드를 하나 이상의 물리적인 커맨드들에 매핑한다. 그 다음, 상기 매핑된 물리적인 커맨드들은 상기 커맨드의 내용을 수행하도록, 상기 물리적인 디스크 드라이브에 전송된다. 마지막으로, 상기 물리적인 디스크 드라이브들로부터의 응답들이 결합되고, 상기 가상의 커맨드에 대한 단일 응답이 다시 상기 컴퓨터 시스템으로 전송된다. 본 시스템은 컴퓨터 시스템에 진보된 스토리지 특징들을 추가하기 위하여 사용자가 저비용의, 소비자 수준의 하드웨어를 결합하는 간단한 방식을 제공한다.
본 요약은 이하 상세한 설명에서 더욱 설명되는 다양한 개념들을 간략화된 형태로 소개하기 위해 제공된다. 본 요약은 상기 청구된 주제의 주요 특징들 또는 본질적인 특징들을 확인하기 위해 의도된 것이 아니며, 더욱이 상기 청구된 주제의 범주를 제한하는데 사용되는 것으로 의도되지 않는다.
도 1은 일 실시예에서의, 진보된 스토리지 시스템의 컴포넌트를 예시하는 블록도이다.
도 2는 일 실시예에서의, 캐스케이드식(cascaded) 진보된 스토리지 시스템 디바이스들의 토폴로지를 예시한다.
도 3은 일 실시예에서의, 시스템의 물리적인 매핑 컴포넌트의 가상 프로세싱을 예시하는 흐름도이다.
도 4는 일 실시예에서의, 가상 응답을 생성하는 가상-물리 매핑 컴포넌트의 프로세싱을 예시하는 흐름도이다.
도 5는 일 실시예에서의, 다양한 스토리지 아키텍처를 예시한다.
도 6은 일 실시예에서의, 스틸바인 아키텍처의 다양한 애플리케이션을 예시한다.
도 7은 일 실시예에서의, 정책과 메카니즘의 분리를 예시한다.
도 8은 일 실시예에서의, 가상 커맨드를 물리적인 커맨드로 변환하는 것을 예시한다.
도 9는 일 실시예에서의, 스틸바인 컴포넌트의 논리 계층들을 예시한다.
도 10은 일 실시예에서의, 물리적인 디스크 영역을 가상 드라이브로 변환하는 것을 예시한다.
도 11은 일 실시예에서의, 물리적인 디스크 영역들을 연결하여(concatenating) 가상 드라이브를 생성하는 것을 예시한다.
도 12는 일 실시예에서의, 스토리지 서브시스템 소프트웨어 컴포넌트의 상위 레벨 도면을 예시한다.
상품, 소비자 수준의 스토리지 디바이스를 이용하여 진보된 스토리지 특징을 제공하는 방법 및 시스템이 제공된다. 예를 들어, 진보된 스토리지 시스템은 다수의 상용 하드 드라이브를 이용하여 내결함성 스토리지 시스템을 제공한다. 진보된 스토리지 시스템은 컴퓨터 시스템과 하나 이상의 물리적인 디스크 드라이브 사이에 연결된 컴포넌트이다. 진보된 스토리지 시스템의 호스트 인터페이스는 그 자신을 컴퓨터 시스템에게, 컴퓨터 시스템의 호스트 컨트롤러에 익숙한 소비자 수준의 스토리지 하드웨어의 커맨드를 구현하는 가상 디스크 드라이브로서 제공한다. 예를 들어, 진보된 스토리지 시스템은 컴퓨터 시스템에게 단일 하드 드라이브로서 나타날 수 있다. 유사하게, 진보된 스토리지 시스템의 스토리지 디바이스 인터페이스는 그 자신을, 연결된 물리적인 스토리지 디바이스의 실제 토폴로지에 관계없이, 소비자 수준의 호스트 컨트롤러로서 하나 이상의 디스크 드라이브에 제공한다. 예를 들어, 진보된 스토리지 시스템은 컴퓨터 시스템에게 제공된 두 개의 물리적인 드라이브에 단일 가상 디스크 드라이브로서 연결될 수 있으며, 각각의 디스크 드라이브는 시스템에 연결된 유일한 드라이브인 것으로 생각할 수 있다. 컴퓨터 시스템, 진보된 스토리지 시스템 및 디스크 드라이브 간의 각각의 연결은 데이터 채널을 형성한다. 먼저, 진보된 스토리지 시스템은 컴퓨터 시스템으로부터 가상 드라이브로의 커맨드를 수신하고, 그 커맨드를 하나 이상의 물리적인 커맨드에 매핑한다. 예를 들어, 스토리지 시스템은 두 개의 다른 물리적인 드라이브에 실제 저장 되는 가상 드라이브상의 소정의 위치로부터 1 메가바이트의 데이터를 판독하는 커맨드를 수신할 수 있다. 그 다음에, 매핑된 물리적인 커맨드는 그 커맨드의 내용을 수행하도록, 물리적인 디스크 드라이브로 전송된다. 예를 들어, 가상 판독 커맨드는 각각의 물리적인 디스크 드라이브에 전송된 두 개의 분리된 판독 커맨드로 분할될 수 있고, 각각은 그 데이터의 다른 부분을 판독하기 위한 것이다. 마지막으로, 물리적인 디스크 드라이브로부터의 응답들이 결합되고, 가상 커맨드에 대한 단일 응답이 다시 컴퓨터 시스템에 전송된다. 예를 들어, 두 개의 분리된 디스크 드라이브로부터 판독된 데이터는 그 데이터가 마치 단일 디스크 드라이브로부터 수신된 것처럼 단일 응답으로 결합될 수 있다. 비용 감소를 위하여, 진보된 스토리지 시스템은 단일 칩 상에 제공될 수 있다. 이 시스템은 진보된 스토리지 특징을 컴퓨터 시스템에 추가하기 위하여 사용자가 저비용의, 소비자 수준의 하드웨어를 결합하는 간단한 방식을 제공한다.
몇몇의 실시예에서, 진보된 스토리지 시스템은 소비자 구성이 필요하지 않도록, 제조 동안에 특정한 특징을 제공하도록 구성된다. 예를 들어, 진보된 스토리지 시스템은 이에 연결되는 추가적인 디스크 드라이브를 연결(concatenate)하도록 구성될 수 있다. 소비자는 진보된 스토리지 시스템과 몇 개의 하드 드라이브를 구입한다. 컴퓨터 시스템은 각각의 새로운 드라이브가 진보된 스토리지 시스템에 연결됨에 따라 용량을 증가시키는 단일 가상 드라이브를 인지하게 된다. 소비자는 호스트 시스템의 재구성없이 나중에 스토리지 용량을 더 추가하기 위해 추가적인 드라이브를 구입하는 것도 가능하다. 또한, 진보된 스토리지 시스템은 데이터의 손실을 방지하는 미러링을 제공하도록 구성될 수 있다. 소비자가 추가 하드 드라이브를 연결하면, 하나의 드라이브가 고장나는 경우 그 데이터가 다른 디스크 드라이브에서 액세스(예를 들어, 그것으로부터의 판독, 그것에 대한 기록 등)되도록, 각 하드 드라이브 상의 데이터가 다른 드라이브 상에 미러링된다. 진보된 스토리지 시스템의 구성은 일련의 하드웨어 핀(pin) 또는 점퍼(jumper)를 통한 것이거나, 제조 동안 시스템에 대한 특정한 펌웨어 이미지의 플래싱(flashing)에 의한 것일 수 있다. 예를 들어, 시스템은 정책(policy) 테이블을 사용하여 동작 지시어(behavior directives)의 형태로 구성 정보를 특정할 수 있다. 디바이스 내 컨트롤 로직이 결정 시점에 도달하고, 다수의 가능성으로부터 행동 방침을 선택해야 할 때, 테이블은 참고가 되며 그 테이블에 의해 특정된 행동이 수행된다. 이것은 정책 테이블의 내용을 간단히 변경시킴으로써, 동일 하드웨어가 다른 특징의 노출을 위해 이용되도록 해준다. 또한, 정책 테이블을 변경하지 않고도, 추가적인 환경 설정(configurability)을 허용하도록, 정책 테이블 내 특정 정책들보다 우위에 있는 하드웨어 핀(pins)이 제공될 수 있다.
몇몇 실시예에서, 진보된 스토리지 시스템은 추가 스토리지 특징을 제공하도록 다른 그러한 시스템들과 캐시케이드식(cascaded)으로 이루어질 수 있다. 예를 들어, 진보된 스토리지 시스템의 일례는 호스트 컴퓨터 시스템에 연결될 수 있고, 진보된 컴퓨터 시스템의 다른 예는 제1 예에 연결될 수 있다. 이러한 방식으로, 복잡한 스토리지 토폴로지들은 보통의 소비자에 의해 용이하게 조립될 수 있다. 예를 들어, 연결된 디바이스들을 연결하도록 구성된 진보된 스토리지 시스템의 일 례는 호스트 컨트롤러에 연결될 수 있고, 연결된 디바이스들의 미러링을 제공하도록 구성된 다른 예들은 고용량, 미러링된 가상 스토리지 디바이스가 생성되도록 제1 예에 결합될 수 있다. 호스트 시스템은 단일의 대규모 디스크 드라이브만을 여전히 인지할 수 있고, 표준 디스크 드라이브 커맨드를 이용하여, 연결된 스토리지 디바이스들과 통신할 수 있다. 진보된 스토리지 시스템의 각 예는 호스트 인터페이스 상에서 수신된 가상의 커맨드들을 스토리지 인터페이스 상의 각각의 연결된 드라이브에 전송된 (캐스케이드식 진보된 스토리지 시스템 예들에 의해 가상 커맨드들로서 차례로 처리될 수 있는) 물리적인 커맨드들로 변환한다.
몇몇 실시예에서, 진보된 스토리지 시스템은 호스트와 진보된 스토리지 시스템 사이의 인지(acknowledgement) 사이클과, 진보된 스토리지 시스템과 연결된 디바이스들 사이의 인지 사이클을 분리한다. 예를 들어, 진보된 스토리지 시스템은 커맨드를 수행하는 물리적인 드라이브가 그 동작의 성공 또는 실패를 인지하기 전에 조차도, 데이터가 호스트 인터페이스 상에서 수신된 가상 커맨드에 응답하여 기록되었음을 추론적으로(speculatively) 인지할 수 있다. 진보된 스토리지 시스템을 사용하여 다수의 물리적인 드라이브들이 캐스케이드식으로 이루어진 토폴로지에서, 추론적인 인지는 각각의 계층에서 커맨드가 수신되는 시간과 그 커맨드가 완료되고 인지되는 시간 사이의 지연에 의해 야기된 지연 시간(latency)을 줄임으로써 성능을 증가시킨다. 이 시스템은 또한 성공을 표시하는 요청에 응답함으로써 호스트 컴퓨터 시스템으로부터의 실패한 물리적인 커맨드들의 재시도(retrying), 그 다음 성공할 때까지의 물리적인 커맨드의 재시도를 은닉할 수 있다. 몇몇의 경우, 전체 스토리지 동작은, 만일 진보된 스토리지 시스템이 결국 실패하는 한 청크(chunk)의 기록 성공을 추론적으로 인지하는 경우, 시스템이, 전체 스토리지 동작이 실패했다고 보고할 수 있도록, 대량의 데이터를 청크별로 기록하는 것과 같이, 나누어 수행된다. 이것은 호스트 시스템의 동작 성공 또는 실패의 관점의 완전성을 그대로 유지하면서 시스템의 추가적인 성능의 획득을 허용한다.
몇몇 실시예에서, 진보된 스토리지 시스템은 몇 개의 저속 데이터 채널을 하나의 고속 데이터 채널로 모은다. 예를 들어, 만일 진보된 스토리지 시스템이 1.5 Gbps(gigabits per second)의 데이터 전송 속도를 갖는 SATA I 사양을 구현하는 두 개의 물리적인 디스크 드라이브에 연결된다면, 진보된 스토리지 시스템은 SATA II 사양 호스트 인터페이스를 3.0 Gbps의 데이터 전송 속도를 갖는 컴퓨터 시스템에 제공할 수 있다. 진보된 스토리지 시스템은 디스크 드라이브로들부터 병렬로 판독하고 기록하며, 컴퓨터 시스템은 두 개의 드라이브의 결합된 처리량으로부터 이익을 얻는다.
몇몇 실시예에서, 진보된 스토리지 시스템은 다수의 드라이브들과 캐스케이드식 진보된 스토리지 시스템 컴포넌트들 사이에서 스토리지 커맨드들을 전송하기 위해 경로를 자동적으로 선택한다. 진보된 스토리지 시스템은 메시(mesh) 토폴로지를 이용하여 드라이브들과 호스트 컴퓨터 시스템 사이의 홉(hops)의 수를 최소화함으로써 지연 시간을 줄이는 방식으로 각 드라이브를 액세스할 수 있다. 예를 들어, 다수의 진보된 스토리지 시스템 컴포넌트들이 메시를 형성하도록 연결될 수 있다. 커맨드들은 많은 다른 방식으로 메시내에서 라우팅될 수 있다. 예를 들어, 드라이브에 대한 커맨드는 10개의 진보된 스토리지 시스템 컴포넌트들의 체인을 통해 전송될 수 있으나, 이것은 커맨드를 완료하는데 있어 매우 긴 지연 시간을 초래할 것이다. 그 대신에, 진보된 스토리지 시스템 컴포넌트들은 서로 통신하여 캐스케이드식 디스크 드라이브로의 가장 빠른 경로를 선택할 것이다.
몇몇 실시예에서, 진보된 스토리지 시스템은 새로운 드라이브들이 연결될 때 그 자신을 자동적으로 재구성한다. 예를 들어, 사용자가 4번째 드라이브를 시스템에 연결하면, 진보된 스토리지 시스템은 기존의 가상 용량의 크기를 늘리기 위하여 그 드라이브를 다른 드라이브에 자동적으로 연결할 수 있다. 유사하게, 진보된 스토리지 시스템은 새로운 드라이브를 다른 용량들에 대한 미러로서 자동적으로 사용할 수 있다. 그 결정은 다수의 요인들, 예컨대, 진보된 스토리지 시스템의 구성, 기존 및 새로운 드라이브의 크기, 및 드라이브의 속도에 근거할 수 있다. 예를 들어, 만일 구성이, 미러링이 수행되어야 한다고 표시하면, 진보된 스토리지 시스템은 세 개의 다른 연결된 25 GB(gigabyte) 드라이브들을 미러링하도록 단일의 연결된 75 GB 디스크 드라이브를 사용할 수 있다. 유사하게, 만일 두 개의 1.5 Gbps 드라이브들이 이미 연결되었다면, 시스템은 두 개의 원래 드라이브가 병렬로 기록될 수 있는 동일한 시간량 동안에 기록될 수 있기 때문에 새로운 3.0 Gbps 드라이브를 미러로서 구성할 수 있다. 시스템은 외부 구성을 요구하지 않기 때문에, 그 시스템은 다른 스토리지 시스템들이 가능하지 않은 상황에서 사용될 수 있다. 예를 들어, 셋톱 박스, 개인용 비디오 레코더, MP3 플레이어, 및 다른 임베디드 디바이스들은 모두 추가적인 스토리지 및 내결함성과 같은 진보된 특징으로부터 이익을 얻을 수 있지만, 구성 사용자 인터페이스가 부족하거나, 몇몇 경우에는 다른 스토리지 시스템들이 요구하는 구성 사용자 인터페이스를 표시하기 위한 하드웨어 조차도 부족할 수 있다.
몇몇 실시예에서, 진보된 스토리지 시스템은 연결된 물리적인 드라이브의 일련 번호를 가상-물리(virtual-to-physical) 변환 상태 정보에 기록한다. 드라이브의 식별(identification)은 새로운 또는 이전에 인지한 드라이브의 연결과 같은 외부 이벤트에 응답하여 더 정교한 정책들을 허용한다. 드라이브가 삽입될 때, 그것은 알려진 물리적인 디바이스들의 리스트와 비교된다. 새로 연결된 드라이브가 인식되었으나, 다른 물리적인 인터페이스에 연결되면, 변환 정보는 이러한 재위치 이동(re-positioning)을 설명하도록 자동적으로 갱신된다. 만일 드라이브가 인식되지 않으면, 진보된 스토리지 시스템의 몇몇 실시예는 이용가능한, 가능한 향상된 액세스 모드들(예를 들어, 미러, 스트라이프, 연결) 중 임의의 하나에 새로운 드라이브(또는 그 일부)를 추가하도록 변환 정보를 업데이트할 것이다. 진보된 스토리지 시스템의 몇몇 실시예에서, 새로운 물리적인 드라이브는 그 변환에 추가되지 않아서, 추가 사용자 행동가 취해질 때까지 액세스를 방지한다. 진보된 스토리지 시스템은 물리적인 드라이브들의 액세스를 보장하기 위하여 다양한 드라이브 록킹(locking) 특징들을 제공할 수 있다. 현대의 SATA 디스크 드라이브는 호스트로부터의 커맨드들을 지원하여 드라이브를 잠금 및 해제하며, 드라이브 그 자체 내에 패스워드를 저장한다. 일 실시예에서, 드라이브 액세스 커맨드들의 가상-물리 변환은 그러한 드라이브 록킹 커맨드의 지원을 포함한다. 예를 들어, (가상) 드라이 브의 잠금(또는 해제) 요구가 호스트로부터 수신되면, 커맨드는 적절한 물리적인 드라이브의 세트에 전달된다. 이러한 실시예들은 호스트 디바이스가 가상 드라이브를 그 자체로 구속하게 해주어, (적절한 패스워드 없이) 가상 드라이브의 모든 물리적인 드라이브 컴포넌트들이 어떤 다른 호스트 디바이스에 의해 액세스 불가능하게 한다. 몇몇 실시예에서, 진보된 스토리지 시스템은 모든 드라이브 록킹 태스크를 내부적으로 수행한다. 새로운 물리적인 드라이브가 연결되면, 드라이브 로킹 요청은 그 드라이브에 전송되고, 패스워드는 가상-물리 변환 상태 정보에 저장된다. 계속해서, 가상 드라이브에 대한 액세스 요청이 호스트 인터페이스 상에서 수신되면, 그것은 각각 이전에 저장된 패스워드들을 이용하는 드라이브 해제 요청에 의해 선행되는 적절한 물리적인 드라이브에 대한 액세스들의 집합으로 변환된다. 이것은 물리적인 드라이브들을 진보된 스토리지 시스템의 특정 예로 구속하여, 이들이 (적절한 패스워드가 없는) 어떠한 다른 호스트 디바이스에 의해서도 액세스 불가능하게 한다.
도 1은 일 실시예에서의, 진보된 스토리지 시스템의 컴포넌트들을 예시하는 블록도이다. 호스트 컴퓨터 시스템(100)은 진보된 스토리지 시스템(150)에 연결되고, 진보된 스토리지 시스템(150)은 하나 이상의 디스크 드라이브(예컨대, 180 및 190)에 연결된다. 호스트 컴퓨터 시스템(100)은 디스크 드라이브 또는 진보된 스토리지 시스템(150)과 같은 스토리지 디바이스들과 통신하는 호스트 컨트롤러(105)를 포함한다. 진보된 스토리지 시스템(150)은 호스트 인터페이스 컴포넌트(155), 구성 컴포넌트(160), 가상-물리 매핑 컴포넌트(165), 및 디바이스 인터페이스 컴포 넌트(170)를 포함한다. 호스트 인터페이스 컴포넌트(155)는 스토리지 커맨드를 수행하도록 호스트 컨트롤러(105)와 통신한다. 호스트 컨트롤러(105)로부터 수신된 스토리지 커맨드는 진보된 스토리지 시스템(150)에 의해 호스트 컴퓨터 시스템(100)에 제공된 가상 드라이브로의 가상 커맨드로서 처리된다. 구성 컴포넌트(160)는 몇 개의 드라이브가 연결되는지와 어떤 스토리지 특징들(예컨대, 스트라이핑, 미러링, 및 연결)이 사용되는 각 드라이브에 제공될 것인지와 같은 진보된 스토리지 시스템(150)에 대한 구성 정보(configuration information)를 저장한다. 가상-물리 매핑 컴포넌트(165)는 구성 컴포넌트(160)에 의해 저장된 구성 정보에 기초하여 호스트 인터페이스(155)로부터 수신된 가상 커맨드를 디바이스 인터페이스(170)에게 발행된(issued) 물리적인 커맨드에 매핑한다. 가상-물리 매핑 컴포넌트(165)는 또한 디바이스 인터페이스 컴포넌트(170)로부터 수신된 물리적인 응답을 호스트 인터페이스(155)를 통해 호스트 컴퓨터(100)에 전송된 가상 응답에 매핑한다. 디바이스 인터페이스 컴포넌트(170)는 스토리지 커맨드들을 수행하도록 하나 이상의 물리적인 디스크 드라이브(또는 추가적인 진보된 스토리지 시스템)와 통신한다.
전술한 시스템이 구현되는 컴퓨팅 디바이스는 중앙 처리 유닛, 메모리, 입력 디바이스(예컨대, 키보드 및 포인팅 디바이스), 출력 디바이스(예컨대, 디스플레이 디바이스), 및 스토리지 디바이스(예컨대, 디스크 드라이브)를 포함할 수 있다. 메모리 및 스토리지 디바이스들은 전술한 시스템을 구현하는 인스트럭션(instructions)을 포함할 수 있는 컴퓨터 판독가능 매체이다. 부가적으로, 데이 터 구조 및 메시지 구조는 통신 링크 상의 신호와 같은 데이터 전송 매체를 통해 저장되거나 전송될 수 있다. 다양한 통신 링크들, 예컨대, 인터넷, 근거리 통신망, 광대역 통신망, 점대점 다이얼 업 접속부(point-to-point dial-up connection), 셀폰 네트워크 등이 사용될 수 있다.
전술한 시스템의 실시예는 개인용 컴퓨터, 서버 컴퓨터, 핸드 헬드(hand-held) 또는 랩탑(laptop) 디바이스, 다수의 프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램 가능 소비자 전자장치, 디지털 카메라, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 전술한 시스템들 또는 디바이스들 등 중 임의의 하나를 포함하는 분산 컴퓨팅 환경을 포함하는 다양한 동작 환경에서 구현될 수 있다. 이 컴퓨터 시스템들은 셀폰, PDA(personal digital assistants), 스마트 폰, 개인용 컴퓨터, 프로그램 가능 소비자 전자장치, 디지털 카메라 등일 수 있다.
전술한 시스템은 하나 이상의 컴퓨터 또는 다른 디바이스들에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 인스트럭션들의 일반적인 컨텍스트(context)로 기술될 수 있다. 일반적으로, 프로그램 모듈들은 특정한 태스크를 수행하거나 특정한 추상적 데이터 형태(abstract data types)를 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 프로그램 모듈의 기능은 다양한 실시예로서 원하는 바에 따라 결합되거나 분산될 수 있다.
도 2는 일 실시예에서의, 캐스케이드식(cascaded) 진보된 스토리지 시스템 디바이스들의 토폴로지를 예시한다. 호스트 컴퓨터(25)는 진보된 스토리지 시스템 컴포넌트(210)에 연결된다. 진보된 스토리지 시스템 컴포넌트(210)는 단일의 표준 디스크 드라이브(270)로서 호스트 컴퓨터(205)에 나타난다. 진보된 스토리지 시스템 컴포넌트(210)는 제1 디스크 드라이브(215), 제2 디스크 드라이브(220), 및 다른 진보된 스토리지 시스템 컴포넌트(225)에 연결된다. 진보된 스토리지 시스템 컴포넌트(225) 및 관련된 디스크 드라이브(230 및 240)는 본 실시예에서 다른 디스크 드라이브(250)로서 제1 진보된 스토리지 컴포넌트(210)에 나타날 수 있으며, 또는 두 개의 컴포넌트가 이들 두 개의 컴포넌트들이 서로 인식하여 구성 정보를 교환하도록 해주는 개인 통신 채널(예컨대, 독립 접속 또는 데이터 채널을 통해 전송되는 커스텀(custom) 프로토콜)을 구비할 수 있다. 제2 진보된 스토리지 시스템 컴포넌트(225)는 제1 디스크 드라이브(230) 및 제2 디스크 드라이브(240)에 연결된다. 이 시스템은 여러 방식으로 구성될 수 있다. 예를 들어, 제1 진보된 스토리지 시스템 컴포넌트(210)는 두 개의 드라이브(215 및 220)를 연결하도록 구성될 수 있고, 제2 진보된 스토리지 시스템 컴포넌트(225)는 다른 한 쌍의 디스크 드라이브(230 및 240)를 이용하여 연결된 디스크 드라이브(215 및 220)의 미러를 제공하도록 구성될 수 있다.
도 3은 일 실시예에서의, 시스템의 가상-물리 매핑 컴포넌트의 프로세싱을 예시하는 흐름도이다. 이 컴포넌트는 커맨드가 진보된 스토리지 시스템의 호스트 인터페이스로부터 수신될 때 시동된다. 블록(310)에서, 컴포넌트는 진보된 스토리지 시스템에 의해 제공된 가상 디스크 드라이브에 전달된 커맨드를 수신한다. 블록(320)에서, 컴포넌트는 가상 커맨드를 하나 이상의 물리적인 커맨드에 매핑한다. 블록(330)에서, 컴포넌트는 매핑에 의해 생성된 다음 물리적인 커맨드를 획득한다. 블록(340)에서, 컴포넌트는 물리적인 커맨드를 적절한 물리적인 디바이스에 전송한다. 블록(350)에서, 컴포넌트는 물리적인 디바이스로부터 커맨드에 대한 응답을 수신한다. 몇몇 실시예에서, 컴포넌트는 물리적인 디바이스로부터의 응답을 대기하지 않을 수 있다. 예를 들어, 컴포넌트는 커맨드가 성공할 것이고 모든 물리적인 응답을 수신하기 전에 가상 커맨드에 대해 응답할 것이라고 가정할 수 있고, 또는 컴포넌트는 물리적인 응답에 대한 확인 전에 모든 물리적인 커맨드들이 전송될 때까지 대기할 수 있다. 판단 블록(360)에서, 만일 매핑에 의해 생성된 더 많은 물리적인 커맨드들이 있으면, 컴포넌트는 다음 물리적인 커맨드를 획득하기 위하여 블록(330)으로 되돌아가고, 그렇지 않으면 컴포넌트는 블록(370)에서 계속한다. 블록(370)에서, 컴포넌트는 수신된 물리적인 응답이 있다면 이 응답에 기초하여 가상 응답을 생성한다. 블록(380)에서, 컴포넌트는 이 컴포넌트가 가상 커맨드를 수신한 컴퓨터 시스템 또는 디바이스에 가상 응답을 전송한다. 그 후, 컴포넌트가 완료된다.
도 4는 일 실시예에서의, 가상 응답을 생성하는 가상-물리 매핑 컴포넌트의 프로세싱을 예시하는 흐름도이다. 블록(410)에서, 컴포넌트는 디스크 드라이브 또는 다른 디바이스에게 발행된 물리적인 커맨드에 대한 물리적인 응답을 대기한다. 판단 블록(420)에서, 만일 물리적인 커맨드가 성공하면 컴포넌트는 블록(430)에서 계속하며, 그렇지 않으면 컴포넌트는 블록(460)에서 계속한다. 블록(430)에서, 컴포넌트는 (물리적인 커맨드가 디스크 드라이브로부터 데이터를 판독하는 것과 같은) 가상 응답 내에 포함되어야 하는 물리적인 응답으로부터의 임의의 데이터를 가 상 응답에 추가한다. 판단 블록(440)에서, 발행된 물리적인 커맨드가 더 있다면, 컴포넌트는 다음 물리적인 응답을 대기하도록 블록(410)으로 되돌아가고, 그렇지 않으면 컴포넌트는 블록(450)에서 계속한다. 블록(450)에서, 컴포넌트는 성공 응답 및 이를 포함한 임의의 포함된 데이터를 전송함으로써 가상 커맨드의 성공을 보고한다. 블록(460)에서, 커맨드가 실패하면, 컴포넌트는 가상 커맨드가 성공하지 못했다는 것을 나타내는 실패 응답을 전송한다. 성공 또는 실패 응답이 전송된 후, 컴포넌트는 종료된다.
추가적인 실시예들
이제, 진보된 스토리지 시스템의 몇몇 추가적인 실시예들이 설명될 것이다. 제1 실시예는 스틸바인(SteelVine)이라고 불리는 진보된 스토리지 시스템의 아키텍처를 설명한다. 다른 실시예, 예컨대, 폴라리스(Polaris), 피코(Pico), 및 밀키웨이(Milkyway)는 진보된 스토리지 특징들을 소비자 시장이 액세스 가능하게 해 주는 완전한 스토리지 시스템을 칩 솔루션 상에 제공하는 스틸바인 아키텍처의 하드웨어 실시예를 설명한다.
스틸바인 아키텍처는 완전히 새로운 카테고리의 제품, 즉, SSoC(Storage Subsystem on a Chip)을 생성하기 위해 최근에 정의된 SATA 스토리지 인터페이스 표준들에 기반한다. 스틸바인 아키텍처 기반 SSoC는 모든 SATA 사양에 따르지만, 새롭고 신규한 방식으로 이들 사양을 해석하고 사용한다. 이러한 아키텍처는 이전에는 최고급의, 엔터프라이즈급, 스토리지 서브시스템에서만 이용가능했던 기능을 대용량, 저비용, 상품 기반 컴퓨팅 무대로 가져오게 하는 새로운 SATA 표준을 사용 한다.
스틸바인 컴포넌트는 물리적인 드라이브 집합을 유연하게 가상화하는 능력, RAID(-1, 0, 1 및 10) 능력뿐만 아니라 네이티브 커맨드 큐잉(Native Command Queuing : NCQ) 지원과 같은 고수준의 엔터프라이즈급 스토리지 능력을 포함하기 위해 표준 포트 멀티플라이어 개념을 확장한다. 이러한 이유로, 최초의 스틸바인 제품들은 "확장된" 포트 멀티플라이어 기능을 제공한다고 말할 수 있다.
몇몇 실시예에서, 이들 제품은 과중한 하드웨어 지원, 마이크로코드 집약형, SSoC로서 구현된다. 표준 SATA 호스트 어댑터 및 디스크 드라이브의 관점으로부터, 이들 제품은 "SATA 케이블에서 팽창(bulge)"으로서 나타나는데, 즉, 이들은 호스트에 대한 타겟 또는 그 반대로 나타난다. 이용가능한 물리적인 드라이브와는 다른 특성을 갖는 가상 드라이브의 환상(illusion)을 일으키기 위하여, 호스트에 의해 생성되고 가상 드라이브에 전달된 커맨드 패킷들은, 연결된 물리적인 드라이브들에 전달된 새로운 커맨드 패킷들로 변환된다. SSoC에 의해 수행된 이러한 변환은 컴포넌트내에 포함된 구성 데이터에 기반한 와이어 속도(wire-speed)로 발생한다. 이러한 변환은 또한 (예컨대, 미러링된 가상 드라이브상에 다수의 기록을 행하고, 다수의 연결된 드라이브 등을 연결하는 판독을 행하는) 단일 입력 가상 커맨드에 응답하여 다수의 물리적인 드라이브 커맨드의 생성을 포함할 수 있다.
유사성에도 불구하고, 고수준 설명에서 스틸바인 SSoC는 표준 외부 RAID 컨트롤러와는 구조적으로 및 기능적으로 아주 다르다는 것을 주목하는 것이 중요하다. 특히, 스틸바인 컴포넌트들은 범용 프로세서 하드웨어 상에 소프트웨어로서 구현되지 않는다. 이것은 스틸바인 SSoC가 간단하고, 저비용의, 단일칩 덤프 포트 멀티플라이어 컴포넌트(dumb Port Multiplier Components)의 스케일로 훨씬 더 저렴하고 훨씬 덜 복잡하게 와이어 속도의 성능을 달성할 수 있다는 것을 의미한다. 많은 문제들에 간단한 부르트 포스(brute-force) 솔루션을 적용함으로써, 복잡성이 감소되고 관리 비용이 제거된다. 예를 들어, 간단한 미러링은 향상된 신뢰성을 제공하는데 사용된다. 이러한 솔루션은 프로세싱 및 메모리 자원 면에서 전통적인 패리티(parity) RAID 솔루션보다 훨씬 적게 요구하며, 디스크 드라이브의 저(및 지속 감소)비용 지출을 통해 그 신뢰성을 달성한다.
몇몇 실시예에서, 스틸바인 아키텍처는 어플라이언스 모델로서 스토리지 장치를 제공한다. 사용자는 어떻게 진행 되는지에 대해 아무것도 이해(또는 아는 것조차도)할 필요가 없고, 제공된 서비스에 대해 이들이 기꺼이 지불할 비용으로, 이들이 이해하는 조건하에서 이들이 원하는 기능(예컨대, 크고, 빠르고, 신뢰성있는 등)을 간단히 획득한다. 이러한 어플라이언스 기반 방안은 대용량의 제품을 판매하는데 도움을 준다. 사용자의 대용량 카테고리는, RAID가 무엇을 의미하고, 어떤 구성 옵션이 그들에게 맞는지를 결정하기에 만족할 만큼 충분히 이것이 잘 작용하는지 훨씬 덜 이해할 것으로는 예상되지 않는다. 더욱이, 어플라이언스 방안은 스토리지 서비스 및 호스트 컴퓨터 사이의 인터페이스를 최소화한다. 이것은 원하는 스토리지 서비스가 호스트에 대한 변화 또는 구성없이 획득될 수 있음을 의미하므로, 사용자에게는 주된 이점이다. 호스트 하드웨어, BIOS, OS, 및 애플리케이션에 대한 물리적인 디스크와 같이 보이는 스토리지 디바이스는 호스트를 변경하거나 호 스트에 어떤 것도 추가함이 없이 진보된 기능을 제공할 수 있다.
정책과 메카니즘을 주의깊게 분리함으로써, 스틸바인 아키텍처는 사용자가 설정할 필요없이 모든 것을 행하도록 공장에서 모두 설정되어 나온 고정된 구성(예컨대, 단일 드라이브처럼 보이는 멀티 드라이브 유닛, 즉, 듀플렉스 드라이브, 또는 단일 전원 컨넥터 및 호스트 포트를 갖는 3.5" 엔벨로프의 4개의 2.5" 드라이브)으로부터, 사용자들에 의해 정책들이 정의되고 RAID 어레이의 각각의 활동이 주의깊에 모니터링되고 로깅(log)되도록 해주는 크기 조정 가능성이 높은, 하이터치 RAID 어레이까지, 폭 넓은 범위의 상이한 사용 시나리오에서 SSoC들을 적용가능하게 해준다.
다음 섹션들은 스틸바인 아키텍처에 기반한 제품들이 동작하고, 이러한 아키텍처에 의해 제공된 주요 특징들을 기술하고, 폴라리스 및 밀키웨이 하드웨어를 사용하는 스토리지 서브시스템들을 둘러싸는 주요 구현 문제들의 개요를 제공하는 시스템 컨텍스트를 정의한다.
스틸바인 스토리지 서브시스템 개요
SATA는 호스트 버스 어댑터(Host Bus Adaptor : HBA) 및 디스크 드라이브 사이의 점대점 연결로서 설계되었다. SATA 링크의 대역폭(즉, 1.5 Gbps, 3 Gbps, 또는 6 Gbps)이 현재의 하드 드라이브의 대역폭을 초과하기 때문에, 다수의 드라이브를 단일 SATA(호스트) 포트에 연결하는 것이 가능하고, 가장 저속의 SATA 링크 조차도 그 대역폭 용량을 초과하지 않는다. 이러한 이유로, SATA 포트 멀티플라이어(PM) 사양은 다수의 드라이브들이 단일 호스트 포트에 연결되는 것을 허용하도록 규정되었다. SATA PM 사양이 단순한 먹스(mux) 형태 디바이스 또는 허브(hub) 형태 디바이스를 정의하는 반면, 실리콘 이미지는 새로운 타입의 디바이스인 확장된 포트 멀티플라이어(EPM)로 생성하도록 이 사양을 확장했다. EPM은 PM의 기본적인 허브형(hub-like) 기능에 추가하여, 크고, 비싸고, 복잡한 스토리지 어레이 컨트롤러와 전통적으로 연관된 기능을 제공하는 SSoC이다.
스틸바인 컴포넌트는 물리적인 드라이브들의 집합을 몇 개의 가상 드라이브들로 변환하며, 각각의 가상 드라이브는 그들이 구성되도록 하는 물리적인 드라이브들의 특성보다 더 향상된 (예컨대, 더 크고, 더 빠르고, 또는 더욱 신뢰성 있는) 특성들을 가질 수 있다. 부가적으로, 더욱 진보된 스틸바인 컴포넌트(예컨대, 밀키웨이)는 컴포넌트들이 패브릭(fabric)에 연결되게 함으로써 확장성(scalability)을 제공하는 추가된 메시 라우팅 능력을 갖는다. 이것은 잠재적으로 대규모 물리적인 드라이브의 집합을 잠재적으로 대규모 호스트의 집합에 대해 이용가능한 가상 드라이브의 집합으로 매핑하는 것을 허용한다.
스틸바인 계열의 컴포넌트의 한 가지 설계 목적은 호스트에 완전히 투명한 방식으로 모든 원하는 물리적인 드라이브의 확장을 수행하는 것이다. 효과적으로, 스틸바인 컴포넌트는 배선에서 "팽창(bluge)"으로서 나타나는데, 즉, 그것은 호스트에 대해 PM처럼 보이고 드라이브에 대해 HBA처럼 보인다. 호스트의 관점으로부터, 스틸바인 컴포넌트에 의해 제공되는 가상 드라이브와 동일한 특성(예컨대, 크기, 속도, 또는 신뢰성)을 갖는 물리적인 드라이브 사이의 차별화는 사실상 불가능할 수 있다. 이것은 다양한 호스트 시스템과의 상호 운용성을 보장해주며, 대규모 의 커스텀 호스트측(애플리케이션, 드라이버, BIOS 등) 소프트웨어를 개발, 설치 및 지원할 필요성을 제거한다.
스틸바인 계열(즉, 독립형 PM 및 EPM(폴라리스), 및 스케일러블 EPM(밀키웨이))에 있어서의 초기 제품들은 단일의, 고집적된 SSoC에 있어서의 완전한 스토리지 서브시스템 성능들을 제공하도록 설계된다. (이들과 연관된 칩상 임베디드 소프트웨어를 갖는) 스틸바인 컴포넌트가 거의 완전한 스토리지 서브시스템 기능을 제공하지만, 적은 수의 추가 컴포넌트(예컨대, 외부 EEPROM, LED, LM87 환경 제어 컴포넌트 등)는 완전한 스토리지 서브시스템을 생성하도록 요구될 수 있다. 완전한 폴라리스 기반 스토리지 서브시스템을 포함하는 모든 주요 엔티티(entity) 뿐만 아니라 완전한 서브시스템을 위해 필요한 컴포넌트들이 이하에서 설명된다.
스틸바인 아키텍처의 응용
다음 단락들은 스토리지 인터페이스들의 계층에서 스틸바인 아키텍처가 어디에 적합한가, 이러한 아키텍처가 오늘날 현존하는 다른 아키텍처와 어떻게 관련이 있는가, 그리고 이러한 아키텍처에 기반한 제품들이 어떻게 나타날 수 있는지에 대해 설명한다.
스틸바인 아키텍처는 가상 드라이브의 생성 개념에 기초하는데, 이들 가상 드라이브는 이들이 생성되도록 하는 물리적인 드라이브의 특성에 비해 확장된 특성을 갖는다. 이러한 아키텍처에 있어서, 이들 확장은 물리적인 드라이브가 갖는 동일한 인터페이스를 호스트에 제시하면서 제공된다. 그 결과, 스틸바인 아키텍처는 기존의 호스트 소프트웨어에 추가 또는 변형을 요구함이 없이, SATA 스토리지를 지 원하는 임의의 시스템에 이익을 제공해 줄 수 있다. 이것은 스틸바인 아키텍처가 BIOS, 디바이스 드라이버, 파일 시스템, OS, 또는 응용 소프트웨어와 독립적이고, 호환성 테스트 요구사항들에 대해 전형적으로 큰 부담없이 도입될 수 있게 해준다. 이것은 또한 향상된 스토리지 기능과 전형적으로 RAID 하드웨어의 배치와 연관된 호스트 시스템 간의 예기치 않고 원하지 않은 상호작용의 형태에 대한 임의의 기회를 제거한다.
이와 같은 저레벨의 추상화(abstraction)에서 스토리지 기능 확장을 도입하는 능력은 넓은 범위의 이익을 제공한다. 스틸바인 아키텍처는 스토리지 인터페이스 계층의 최저 레벨 중 하나, 즉, 블록 액세스 인터페이스에 중심을 둔다. 이보다 더 낮은 유일한 레벨들은 주어진 드라이브 형태의 물리적인, 링크 및 전송 인터페이스 계층들이다. 드라이브 프로토콜(예컨대, SCSI) 계열 내에서, 많은 상이한 형태의 물리적인, 링크 및 전송 인터페이스(예컨대, SAS, 광학/구리, FC 등) 뿐만 아니라, 많은 다른 서브 프로토콜(예컨대, Ultra320)이 있을 수 있다. 다른 형태의 디스크 드라이브에 의해 제공된 네이티브 인터페이스들에는 많은 차이점들이 존재하는 (및 드라이브의 블록 레벨 프로토콜들의 종류는 그들의 종류 면에서 또한 매우 상이할 수 있는) 반면, 현대의 디스크 드라이브에 의해 제공된 블록 액세스의 일반적인 추상화는 모든 형태의 드라이브들에서 일반적이다.
가장 일반적인 개념으로, 현재 인기있는 모든 디스크 드라이브들은 다음과 원칙들을 따르는 일반적인 판독/기록 블록 시멘틱의 집합을 제공한다. 즉,
개시자(initiator)(예컨대, 호스트)는 선택된 타겟 디바이스(예컨대, 물리적 인 드라이브)에 커맨드를 발행한다.
커맨드는 수행될 커맨드의 형태를 나타내는 조작 부호(opcode)(예컨대, 판독, 기록 등), 시작 블록의 어드레스, 및 시작에 이어 얼마나 많은 블록들이 영향을 받을 것인가에 대한 카운트를 포함한다.
만일 커맨드가 판독 동작이면, 타겟 디바이스는 주어진 블록 어드레스에서 시작하여 드라이브로부터 판독된, 원하는 수의 블록들로 응답한다.
만일 커맨드가 기록 동작이면, (소정의 블록 어드레스에서 시작해서) 드라이브에 기록될 표시된 블록들의 수가 커맨드를 따르는 개시자에 의해 제공될 것이다.
세부 사항 및 용어가 변경되지만, 블록 레벨 인터페이스의 일반적인 특징은 어떤 종류의 드라이버가 포함되는지와 상관없이 동일하다. 오늘날 가장 일반적인 드라이브 프로토콜은 SCSI 및 ATA인 것으로 알려져 있다. 이들 프로토콜은 각기 다른 방식으로 타겟 디바이스(예컨대, 로직 유닛 번호(LUN) 대 타켓 포트 어드레스) 및 스토리지 위치(예컨대, 블록 번호 대 로직 블록 어드레스)를 언급한다. 그러나, SCSI와 ATA 둘다 근본적으로 대체로 동일한 방식으로 동작하는데, 즉, 이들은 주어진 시작 어드레스에 기초하여 몇 개의 주어진 수의 고정 크기의 단위(즉, 블록들 또는 섹터들)로 판독 및 기록 동작을 제공한다.
스틸바인과 다른 스토리지 서브시스템 아키텍처들과의 비교
스틸바인 아키텍처에 대한 이해를 돕기 위하여, 오늘날의 주력 스토리지 아키텍처들이 조사된다. 가장 간단하고 가장 일반적인 형태의 스토리지 아키텍처는 DAS(Direct Attached Storage)로서 알려져 있다. DAS에 있어서, 디스크 드라이브 는 HBA를 통해 개별 호스트들에 연결된다. 다수의 드라이브를 단일 HBA 포트에 연결되게 해주는 이러한 방안(예컨대, 멀티 드롭 버스 또는 허브/먹스/스위치를 포함함)의 몇몇 변형들이 있지만, 각각의 드라이브가 임의의 시점에서 단일 호스트에 연결되는 경우가 전형적이다. DAS 모델은 저렴한 비용 및 낮은 복잡성으로 호스트에 스토리지 장치를 제공하며, 여기서 비용은 드라이버, 케이블, 및 호스트에 연결된 HBA의 수의 함수이고, 복잡성은 HBA (및 그의 필요한 드라이버 및 지원 소프트웨어)의 설치, 및 HBA의 스토리지 포트에 드라이버를 연결하는 것을 포함한다. 하나보다 많은 호스트를 포함하는 시스템에 있어서, 이러한 방안은 분할된 스토리지 자원 및 단일 호스트에 구속된 각각의 드라이브로 인해 활용이 어렵다는 단점이 있다. 그런 상황에서, 몇몇 호스트는 너무 많은 용량을 갖는 반면, 다른 호스트는 너무 적게 가질 수 있다. 유일한 솔루션은 드라이브를 추가로 부가하는 것이다. 그러나, DAS 아키텍처에서 드라이브의 추가 또는 이동은, 호스트가 자주 드라이브를 추가하거나 제거하기 위하여 정지되어야만 하기 때문에, 복잡하고 (시간 및 노력 측면에서) 값비싼 활동이 될 수 있다. 이에 더하여, DAS 서브시스템의 신뢰성 및 가용성은 원하는 것보다 다소 낮은 경향이 있다. 이것은 임의의 호스트, 드라이브 또는 케이블링 하네스(harness)가 고장이 나면, 그 결과 영향을 받은 드라이브 상에서 데이터에 대한 액세스의 손실을 초래한다는 사실 때문이다.
스토리지 지역 네트워크(SAN)는 대규모 엔터프라이즈 시스템용 DAS 아키텍처의 단점을 해결하기 위하여 개발되었다. 이러한 아키텍처 방안에 있어서, 특수 스토리지 네트워크가 정의되어 있는데(즉, Fibre Channel : FC), (다소의) 유연한 방 식으로 드라이브들의 집합이 호스트의 집합에 연결되도록 해준다. SAN에 있어서, 드라이브를 세분하고 이들의 다양한 부분들을 지정된 호스트들에 할당하는 것이 가능하다. 또한, 특정 호스트가 고장이면, 다른 호스트들이 드라이버 집합을 인계받는(take over) 것이 가능하다. 이러한 아키텍처는 드라이브 (및 그 일부)가 호스트에 유연하게(및 다소 동적으로) 재할당되게 하는 이점을 가짐으로써, DAS 아키텍처에서 가능한 것보다 데이터의 가용성을 더 크게 하고 드라이브의 활용도를 더 크게 한다. 그러나, SAN 아키텍처는 스토리지(드라이브, 케이블링 및 컨트롤러를 포함)의 가격 및 스토리지 서브시스템의 설정 및 관리의 복잡성의 두 가지에 의해 상당한 비용을 초래한다.
DAS 및 SAN 아키텍처 둘다 블록 레벨에서 동작하는 스토리지 서브시스템이다. 그러나, NAS(Network Attached Storage)로 알려진 다음의(next) 아키텍처는 추상화 파일 레벨에서 동작한다. NAS 아키텍처는 (보통 DAS 아키텍처에 의해) 많은 드라이버들의 집합에 연결하고 (전형적으로, 근거리) 네트워크를 통해 다른 호스트들에 파일 액세스를 전달하는 파일 서버로서 작용하는 호스트를 포함한다. NAS 아키텍처는 다른 추상화 레벨에서 동작하기 때문에, 그 특성들(예컨대, 가격, 성능, 복잡도) 및 본 섹션에서 설명된 다른 아키텍처들의 특성들을 직접 비교할 수 없다.
마지막으로, 스틸바인 아키텍처는 도 5에 예시되고, 이것은 DAS 및 SAN 아키텍처 둘다와 특성을 공유한다. 어떤 의미에서는, 스틸바인 아키텍처는 "SAN-in-a-box"를 제공하며, 여기서 드라이브 어레이로 표현된 스토리지 용량은 간단하고 비 용 효과적인 방식으로 호스트 집합과 연관될 수 있다. 스틸바인 아키텍처는 DAS 아키텍처의 비용 및 간단성의 레벨에서, SAN 아키텍처의 유연성 및 이용가능성을 제공한다. 부가적으로, 스틸바인 아키텍처는 스토리지 계층의 블록 레벨을 처리하며, 그와 같이, NAS 아키텍처 내 파일 서버 요소에 대한 이익을 제공한다.
다른 RAID 레벨들은 본 섹션에서 언급되지 않았다는 것을 주목해야만 한다. 그들은 스토리지 아키텍처를 나타내지 않으며, 그보다는, 향상된 레벨의 스토리지 기능을 제공하기 위한 일련의 스토리지 서브시스템 구현 기술들을 제공한다. 스틸바인 아키텍처의 몇몇 실시예에서, 원하는 수준의 성능 및 신뢰성은, 가격/성능 목적을 충족시키고 초기 스틸바인 제품에 대해 선택된 대용량의, 비용에 민감한 타겟 시장의 요구사항을 만족시키기 위하여 간단한 브루트 포스 수단(예컨대, 패리티 RAID에 반대되는 미러링)에 의해 생성된다. 본 기술 분야에서 통상의 지식을 갖는 자라면 다른 일반적인 방안들이 RAID 기능(예컨대, 패리티 RAID)을 구현하는데 또한 사용될 수 있다는 것을 인식할 것이다.
스틸바인 아키텍처의 예시적인 실시예
가상 드라이브가 생성되도록 하는 물리적인 드라이브의 특성 이상의 상이한(및 향상된) 특성을 갖는 가상 드라이브를 생성하는 스틸바인 아키텍처의 능력은 단일 호스트에 연결된 작은 수의 드라이브들에서부터 대규모 호스트의 집합을 지원하는 대규모 어레이의 드라이브들까지의 범위를 갖는 다수의 다른 시나리오들에 적용될 수 있다. 이러한 측면의 저면에는, 몇 개의(예컨대, 2개 내지 4개의) 2.5" 드라이브가 표준 3.5" 드라이브의 엔벨로프에 적합하고 단일 SATA 포트 및 단일 전 원 접속부를 갖는 모듈을 생성하도록 단일 스틸바인 SSoC와 결합될 수 있다. 물리적으로 단일 3.5" 드라이브가 나타나지만, 이러한 형태의 유닛은 매우 신뢰성있는(즉, 투명하게 미러링된) 드라이브, 또는 다수의 가상 드라이브(각기 크기, 성능, 및 신뢰성에 대하여 이들 자신의 특수화된 특성을 가짐)를 포함하는 다양한 다른 특징들을 제공할 수 있다. 유사하게, 다수의(예컨대, 2개 내지 4개의) 3.5" 드라이브는 단일 SATA 및 전원 접속부를 또한 갖는 브릭(Brick)에 결합될 수 있다.
브릭은 다양한 다른 형태의 스토리지 어레이들의 구성에서 기본적인 구성 블록으로서 사용될 수 있다. 도 6은 브릭으로 생성될 수 있는 몇몇 다른 형태의 구조들을 도시한다. 도 6a에 있어서, 4개의 드라이브 브릭이 표준 데스크측 PC 타워 내에서의 단일 스토리지 유닛으로서 사용된다. 이러한 응용에 있어서, 브릭은 이것이 제공하는 가상 드라이브들의 수에 상관없이 단지 마더보드에 대해 단일 SATA 접속부만을 차지한다. 이것은 SATA 포트들이 제한된 개수로 사용가능한 경우에 강점이 될 수 있다. 도 6b는 독립 외부 구성에서의 동일한 기본적인 브릭을 예시한다. 이러한 애플리케이션에서, 브릭은 그 자신의 인클로저(enclosure) 및 전원을 구비하며, 외부 SATA(eSATA) 접속부에 의해 호스트에 연결된다. 독립형 브릭은 또한 어레이의 대역외(out-of-band) 모니터링 또는 제어를 위해 인터페이스(예컨대, RS232, USB, Ethernet 등)를 추가로 구비할 수 있다. 브릭은 또한 구성 정보가 브릭의 스틸바인 SSoC에 로드되거나 브릭의 스틸바인 SSoC로부터 보존되게 해주는 메모리 디바이스 포트(예컨대, 컴팩트 플래시)를 구비할 수 있다.
스틸바인 아키텍처의 확장성 특징을 이용하여, 몇몇 브릭스들은 도 6c에 도 시된 바와 같은 랙 기반(rack-based) 스토리지 어레이(셀프(Shelf)로 알려짐)에 결합될 수 있다. 본 예에서, 4개의 브릭은 한 쌍의 리던던트 전원을 공유하며, 각각의 브릭은 추가 기능(예컨대, 패리티 RAID, FC 및 SCSI 등과 같은 다른 스토리지 인터페이스로의 변환)을 제공할 수 있는 중앙 컨트롤러에 연결된다. 셀프의 드라이브들은 모두 스틸바인 SSoC를 통해 연결될 수 있고, eSATA 접속부를 통해 하나 이상의 호스트 또는 컨트롤러에 연결될 수 있다.
마지막으로, 도 6d는 다수의 셀프들이 스토리지 랙을 생성하도록 함께 연결된 일례를 제공한다. 이러한 종류의 스토리지 랙은 각각의 셀프 내의 드라이브들이 스틸바인 컴포넌트들에 어떻게 연결되는지에 따라, 그리고 셀프 내 컴포넌트들이 어떻게 상호접속되는지에 따라 다양한 다른 토폴로지로 구성될 수 있다. 극단적인 경우, 전체 랙은 단일 SATA 접속부를 통해 호스트에 연결될 수 있다.
스토리지 어레이 컨트롤러 컴포넌트
전형적인 폴라리스 기반 스토리지 서브시스템은 도 12에 예시된 바와 같이, 3개의 상위 레벨 형태의 엔티티, 즉, 호스트, 스토리지 어레이 컨트롤러, 및 드라이브로 이루어진다. 이 도면은 또한 스틸바인 기반 스토리지 서브시스템의 제조를 수행하는 상위 레벨의 하드웨어 및 소프트웨어 컴포넌트를 예시한다. 예시된 바와같이, 호스트 하드웨어는 호스트의 내부 I/O 버스를 스토리지 어레이 컨트롤러에 연결되는 스토리지 상호접속 링크(들)에 연결하는 어떤 형태의 호스트 버스 어댑터(HBA)를 포함한다.
몇몇 스토리지 어레이 컨트롤러는 그들의 주요 스토리지 상호접속 링크에 추 가하여 연결을 지원한다. 이들 링크는 단발성(sporadic) 사용(예컨대, 공장에서, 현장에서의 재구성 등을 위해)만을 위해 의도될 수 있고, 또는 이들을 스토리지 어레이 컨트롤러에 (모니터링, 코드 업데이트, 정책 입력 등과 같은 것들을 위해) 동적 액세스를 허용하는 "장기간에 걸친(chronic)" 부속물을 제공할 수 있다. 이들 "대역외" 메카니즘을 보조적인 상호접속 링크라고 지칭한다. 이들 대역외 통신 채널은 다양한 다른 통신 기술들(예컨대, 이더넷, USB, RS232, WiFi 등)로 구현될 수 있고, 이들 위에 층을 형성하는 넓은 범위의 다른 통신 프로토콜(예컨대, HTTP, TCP/IP, 독점적(proprietary) 프로토콜 등)을 구비할 수 있다. 또한, 대역외 채널들에 의해 제공되는 동일한 기능은 "대역내(in-band)" 통신 채널들에 의해, 즉, 주요 스토리지 상호접속 링크(예컨대, SATA) 내에 부채널들을 생성함으로써 제공될 수 있다.
보조 통신 링크에 추가하여, 스토리지 서브시스템은 또한 본 섹션에서 "프론트 패널(Front Panel)"로 알려진 외부적으로 액세스 가능한 I/O 디바이스의 집합을 제공할 수 있다. 프론트 패널은 단순한 LED 및 스위치 I/O에서부터, 오디오가 출력되는 매우 화려한 색상의 터치 스크린 LCD까지, 무엇이든지 제공할 수 있다. 대역외 채널과 같이, 프론트 패널은 사용자에게 스토리지 서브시스템에 대한 상태 정보를 제공할 수 있고, 구성 및 관리 목적으로 사용자로부터의 입력을 취할 수 있다. 프론트 패널은 또한 스토리지 어레이 컨트롤러의 구성 및 상태 정보를 백업하고 복구하는데 사용될 수 있는 제거가능한, 비휘발성 스토리지 인터페이스(예컨대, USB, 컴팩트 플래시 등)의 형태를 사용자에게 제공할 수 있다.
폭넓은 범위의 다른 형태의 프론트 패널뿐만 아니라, 다양한 범위의 대역외 인터페이스를 지원하기 위하여, 현 세대의 스틸바인 SSoC는 외부 마이크로컨트롤러에 간단한 인터페이스를 포함하도록 설계되었다. 적절한 외부 마이크로컨트롤러는 원하는 형태의 프론트 패널뿐만 아니라 원하는 대역외 통신 링크를 처리하기 위하여 선택될 수 있다. 외부 마이크로컨트롤러는 외부 제어 인터페이스를 경유하여 SSoC에 용이하게 인터페이스한다. 후술하는 바와 같이, 이와 같은 종류의 외부 마이크로컨트롤러는 주어진 스토리지 서브시스템을 위한 정책을 구현하는데 또한 사용될 수 있다.
이들 후자 기능들 각각이 별도의 마이크로컨트롤러에 의해 처리될 수 있고, 또는 이들 기능 중 몇몇(또는 심지어 모두)은 공통의 마이크로컨트롤러에 결합될 수 있다는 것은 주목할 만하다. 간단성을 기하기 위하여, 본 설명에 있어서, 원하는 모든 기능을 처리하는 단일 외부 마이크로컨트롤러를 설명한다. 본 문서의 예들은 단일 SSoC를 사용하지만, 스틸바인 아키텍처는 다수의 SSoC를 단일의 로직 엔티티로 결합하게 해주어, 집합 자원들의 합계를 갖는 단일 SSoC와 거의 동일한 성능 및 기능을 갖는다. 따라서, 단일 SSoC는 스케일러블 컴포넌트의 집합(예컨대, 밀키웨이)의 간략화된 표현으로서 사용될 수 있다.
하드웨어 컴포넌트
전형적으로, 스토리지 어레이 컨트롤러 하드웨어는 조립된 드라이브 집합의 물리적인 패키징과 관련된 분류된 활동을 관리하는 다른 하드웨어 유닛뿐만 아니라, 호스트의 스토리지 링크에 다수의 드라이브를 상호접속하는 것을 관리하는 컴 포넌트를 포함한다. 이들 물리적인 드라이브 패키징 관련 활동은 총칭하여 인클로저 관리(Enclosure Management : EM)로서 지칭되며, 다음과 같은 기능, 즉, LED를 제어하고, 전원, 팬, 온도 등을 모니터링하는 기능들을 포함한다. 스틸바인 기반 스토리지 어레이 컨트롤러 하드웨어는 주로 (하나 이상의) 스틸바인 SSoC로 구성되고, 종종 인클로저 관리, 호스트와 스토리지 어레이 컨트롤러 사이의 대역외 통신, 및 스틸바인 SSoC용 외부 정책 로직을 처리하는 마이크로컨트롤러를 추가로 포함한다.
폴라리스 SSoC 내에서, 실리콘 이미지 독점적 임베디드 마이크로컨트롤러(내부적으로는 Pico로 알려짐)는 모든 초기화, 컨트롤 면(control-plane), 가상화, 및 외부 인터페이스 기능을 실행한다. 피코 CPU는 하바드(Havard) 메모리 구조(즉, 별도의 인스트럭션 및 데이터 메모리)를 갖는 고성능, 저비용, 임베디드 32 비트 RISC 프로세서이다. 인스트럭션 메모리는 64 KB의 온칩 SRAM으로 구성되고, 데이터 메모리는 16 KB의 온칩 SRAM으로 구성된다. 별도의 제어 레지스터 어드레스 공간은 폴라리스 칩상의 다양한 기능 유닛들과 통신하는데 사용된다.
밀키웨이 SSoC는 스위치간 링크(ISL) 연결의 집합, 하드웨어 지원 라우팅 계층, 확장된 임베디드 프로세서(즉, Pico II), 및 (버스에 대향된) 내부 상호접속용 크로스바를 포함하는, 폴라리스 특징의 합집합(superset)을 제공한다. 스위치간 링크(ISL) 포트 및 라우팅 하드웨어는 밀키웨이 SSoC가 패브릭으로 결합되도록 해주며, 이 패브릭은 공통 스토리지 서브시스템 내에 다수의 호스트 및 드라이브 포트들을 포함하도록 폴라리스의 기능이 스케일링되게 해준다. ISL 링크의 추가적인 설명 및 스케일러블 스토리지 어레이 컨트롤러를 생성하는 이들의 용도는 이하의 섹션에서 제공될 것이다.
Pico II는 SSoC의 스틸바인 계열용으로 설계된 제2 세대 임베디드 컨트롤러이고, 폴라리스에서 발견된 Pico I 칩에서의 다수의 개선점들을 포함한다. 피코 I의 개선점들 중에서, 피코 II는 브랜치 인스트럭션 정렬 제한들을 완화하며, 4개의 어드레스 브레이크포인트 레지스터 및 단일 스테핑 디버그 모드(둘다 gdb 기반 디버깅을 지원함)를 추가하고, 미사용(로드 및 로테이트) 인스트럭션을 제거하는 개선점을 포함한다. 이들 차이점에도 불구하고, 동일한 툴 체인이 피코 I 및 피코 II 둘다를 지원한다.
소프트웨어 컴포넌트
앞에서 정의된 하드웨어 컴포넌트에 더하여, 폴라리스 기반 스토리지 서브시스템은 다양한 다른 소프트웨어 컴포넌트로 구성된다. 상위 레벨에서는, 이러한 형태의 시스템 내에 몇 가지 특정 카테고리의 소프트웨어가 있고, 각각의 카테고리는 이것이 존재하는 시스템 내에서의 레벨, 이것이 실행하는 환경에 의해 부과된 제한들, 및 소프트웨어 그 자체의 특성(예컨대, 실시간, 동시성(concurrency)의 정도 등)에 의해 구별된다. 호스트 내 소프트웨어의 형태는 다음의 카테고리, 즉, 디바이스 드라이버, 시스템 소프트웨어, 및 응용 소프트웨어로 분류될 수 있다.
디바이스 드라이버는 HBA 하드웨어를 통해 스토리지 링크를 관리하고 호스트 내에 상위 레벨의 소프트웨어용 스토리지 서브시스템의 특징 및 성능들로의 액세스를 제공하는 코드이다. 이 코드는 표준 PM과는 다른 어떤 것인 폴라리스를 대부분 인식하지 못하지만, 폴라리스 디바이스를 충분히 사용하기 위하여 디바이스 드라이버가 이해할 수 있는 PM 사양의 레지스터 집합들에 대한 다수의 판매자 지정 확장부들이 있다. 부가적으로, 디바이스 드라이버는 서브시스템 생성 이벤트를 통신하는 비폴링 기반(non-polling-based) 수단을 지원해야 한다. 이것은 호스트 소프트웨어가 스토리지 서브시스템(예컨대, 온/오프 라인 수행 드라이브, EM 이벤트 등) 내 상태의 현저한 변화를 인식하도록 하기 위하여, 콜백, 또는 블로킹 ioctl 형태의 어떤 메카니즘이 지원될 필요가 있다는 것을 의미한다. 유사하게, 대역내 통신을 통해 (즉, SATA 링크를 이용하여) 폴라리스 서브시스템과 통신할 필요가 있는 경우, 디바이스 드라이버는 이를 위해(또는, 최소 한도로, 이것의 발생을 방해하지 않도록) 지원해야 한다. 이것은 (전형적으로) 커널 레벨 코드(kernel-level code)이며, 이 코드는 매우 OS-(및 버전) 특정적이고, 커널 프로그래밍에 대한 깊은 이해와 (호스트, HBA, 폴라리스, EM, 및 드라이브를 포함하는) 많은 시스템 하드웨어에 대한 친밀한 지식을 필요로 한다. 이것의 효율은 전체 시스템 수준의 성능에 반영된다.
시스템 소프트웨어는 디바이스 드라이버와 상호작용하고, 직접적인 사용자 상호작용을 포함하지 않는 기능을 수행하는 저수준의 시스템 코드로 이루어진다. 예를 들어, 스토리지 서브시스템을 모니터링하고 어떤 비정상적인 상황(예컨대, 드라이브 실패, 온도 또는 전압 편위 등)을 보고하는 데몬(daemon)은 후선 방식(background)으로 실행할 수 있고, 그 관심사를 디바이스 드라이버에 등록할 수 있고, 그 모니터링된 이벤트 중 하나가 발생하면 통지받을 수 있다. 유사하게, 데 몬은 정책 이벤트(예컨대, 드라이브 온-/오프-라인 변환)를 다루기 위하여 존재할 수 있고, 몇몇 사전 정의된 정책 로직(예컨대, 새로운 드라이브가 추가되면, 이를 주어진 로직 드라이브의 말단에 연결 또는 미러 집합용 재구성 동작을 시작)의 실행에 응답하여 SSoC 상태로 업데이트를 수행한다. 이러한 종류의 코드는 스틸바인 기반 서브시스템의 특징 및 기능을 적절히 깊이 이해하는 것과, 시스템 레벨(그러나 커널 레벨일 필요는 없음) 프로그래밍의 지식을 요구한다. 이것은 고성능 또는 자원 제한 코드가 되지 못하는 경향이 있다.
응용 소프트웨어는 OS의 최상부 상에서 표준 응용 프로그램으로서 실행되며, 전형적으로 직접 사용자 상호작용, 예컨대, 스토리지 서브시스템에 의해 제공된 특징들로의 사용자 액세스를 제공하는 그래픽 사용자 인터페이스(GUI) 또는 커맨드 라인 인터페이스(CLI) 코드를 포함하는 기능을 수행한다. 이러한 종류의 코드는 스토리지 서브시스템의 어떤 특정한 기술적 세부 사항보다는 인간 요인 측면에 더 많은 중요성을 요구하며, 기본적인 성능들이 추상화되어 사용자에게 제공되는 방법에 초점을 맞추어야 한다. 이러한 코드는 자원이 풍부한 환경에서 실행되는데, 유일한 성능 문제는 인간 상호작용과 연관된 문제들인 경향이 있다.
스토리지 서브시스템 내에 존재하는 소프트웨어는 두 개의 넓은 카테고리, 즉, 펌웨어 및 마이크로코드로 분류된다.
펌웨어는 스토리지 서브시스템 내의 지원 마이크로컨트롤러(들) 상에서 실행하는 코드이다. 이러한 코드는, EM, 외부 통신, 및 스틸바인 정책 기능들과 같은 것들을 수행하며, 호스트 소프트웨어보다 더욱 자원 제한적이고 성능에 더 민감한 환경에서 수행하는 경향이 있다. 다른 점에서 보면, 이 코드는 호스트에 대해 설명된 시스템 소프트웨어와 특성이 유사하다. 이 코드는 표준 실시간 동작 시스템(RTOS) 또는 커스텀 런 타임 환경(custom run-time environment)에서 실행할 수 있다. 대부분의 경우, 펌웨어는 스토리지 서브시스템 내 하드웨어의 하위 레벨의 처리를 수행할 것이다. 극단적으로, 펌웨어는 이더넷 접속을 통해 서브시스템으로의 외부(대역외) 액세스를 제공하는 웹 서버와 같이 상당한 상위 레벨의 기능을 제공할 수 있다. 그러나, 펌웨어가 저비용/성능 마이크로컨트롤러에서 실행되어야만 한다는 사실은, 이 코드가 유사한 호스트 기반 버전의 코드와 다르게 기록될 것을 요구한다.
마이크로코드는 SSoC 그 자체의 기능을 구현하기 위하여 스틸바인 컴포넌트 상에서 실행하는 특별한 형태의 코드이다. 스틸바인 컴포넌트는 실리콘 컴포넌트(즉, 폴라리스) 및 마이크로코드 컴포넌트로 구성된다. 마이크로코드는 SSoC의 동작과 직접적으로 연관되며, 따라서 칩 그 자체의 가장 깊은 세부 사항의 깊은 지식을 요구한다. 마이크로코드는 매우 자원 제한적이고 성능에 민감한 환경에서 실행한다. 마이크로코드는 고도의 동시성을 포함하고, 모든 제한을 충족하도록 특별한 코딩 고려사항들이 관찰될 것을 요구한다. 표준 RTOS가 일반적으로 사용될 수 없기 때문에, 커스텀 실행 환경의 몇몇 형태가 종종 이러한 코드를 위해 제공된다.
스위치간 링크( ISL ) 상호접속 패브릭
서로 연결된(즉, 캐스케이드식) 진보된 스토리지 디바이스들은, 트리 또는 메시 토폴로지에 있든지 간에, 그들이 유사한 진보된 스토리지 디바이스들에 상호 접속되는지를 결정할 수 있다. 이러한 결정은 특정 포트, 스위치 설정, 프로토콜 신호 등의 사용에 기초하여 이루어질 수 있다. 일단 이러한 결정이 이루어지면, 컴포넌트들은 표준 디스크 인터페이스 프로토콜(예컨대, SATA)과 다른 통신 방식들을 이용할 수 있다. 이와 같은 하나의 통신 방식은 스위치간 링크(ISL) 프로토콜이다. ISL의 일 실시예에서, 하나보다 많은 경로가 송수신 디바이스 사이에 존재할 때, ISL을 구현하는 진보된 스토리지 디바이스는 가장 효율적인 경로를 이용하는 메시를 통해 메시지를 라우팅할 것이다. ISL 프로토콜은 임의의 상호접속 토폴로지 내에서 효율적인 메시지 기반 통신을 제공한다. ISL 네트워크 내에서, 각각의 진보된 스토리지 디바이스는 네트워크의 노드로 고려되고, 고유 노드 ID가 부여된다. ISL은 각 메시지를 노드들 간에 정보를 운반하는 흐름 제어 유닛(또는 플릿(flits))으로 불리는 작은 유닛들로 분할한다. 각 플릿이 하나의 유닛으로 전송되지만, 소정의 메시지에 대한 후속 플릿들은 수신 노드내의 정체 현상으로 인해 지연될 수 있다. 각각의 ISL 링크는 양방향 통신(full-duplex)이고, 각 방향은 논리적으로 둘 이상의 가상 채널(VC)로 분할된다. 메시지의 모든 플릿들은 어떤 주어진 링크의 단일 VC를 이용할 것이다. 한 VC 상의 메시지가 흐름 제어로 인해 차단되면, 다른 메시지는 다른 VC를 이용하는 링크를 통해 진행할 수 있다. 일 실시예에서, VC들 중 하나는 짧은 메시지를 위해 마련된다. 초기화 시간에서, 노드들이 네트워크에 추가되거나 네트워크로부터 제거되면, ISL 노드들은 "플러드 라우팅(flood routing)" 메시지를 교환한다. 이들 메시지는 발신 노드의 ID 및 메시지가 횡단된(traversed) "홉(hops)"(또는 중간) 노드의 수를 포함한다. 각각의 다른 노드에 대해 메시지가 가장 작은 홉 카운트로 도달한 링크를 저장함으로써, 노드는 네트워크 내 각각의 다른 노드로 메시지를 전송하기 위한 최선의 출력 링크를 결정할 수 있다. 이 정보는 경로 테이블에 저장된다. 이미 알려진 것보다 나쁜 홉 카운트를 포함하는 주어진 노드로부터 이후의 플러드 라우팅 메시지들은 폐기되거나 전송되지 않는다. 이것은 라우팅 프로세스가 빠르게 종료하도록 보장한다. 만일 다른 노드까지의 거리(즉, 홉 카운트)가 하나보다 많은 링크에 대한 거리와 동일하다면, 메시지는 링크들 중 임의의 하나 상에서 전송될 수 있다. 이것은 링크들 사이에서 공유하는 로드를 구현하는데 사용된다. 각 메시지의 제1 플릿은 원하는 목적지 노드의 노드 번호를 포함한다. 메시지의 제1 플릿이 노드에 도달하면, 이 플릿은 그 메시지에 대한 원하는 목적지를 결정하도록 검사된다. 만일 목적지가 수신 노드이면, (동일 링크 상의 동일 VC 상에 제1 플릿 및 하나 이상의 후속 노드로 구성되는) 그 메시지는 노드에 의해 수신되고, 그 메시지 내에 지정된 가상 드라이브로 전달된다. 그렇지 않으면, 경로 테이블은 메시지를 목적지 노드로 전송하기 위한 최선의 출력 링크를 결정하도록 참조된다. 만일 하나보다 많은 링크가 사용가능하면, 사용된 링크보다는 미사용 링크에게 우선권이 주어지거나, 가장 최근에 사용된 것보다는 덜 최근에 사용된 링크에게 우선권이 주어진다.
안정된 스케일러블 컴포넌트 설계
안정된 서브시스템은 전형적인 사용시 "병목 현상(bottleneck)"과 같이 단일 자원이 가담하지 않는 것을 보장하는 방식으로 제공되는 것으로 정의된다. 스틸바인 아키텍처에 의해 처리되는 주요한 도전은 단일 컴포넌트를 사용하고 밸런스를 유지함으로써 넓은 범위의 서브시스템 크기를 생성할 수 있도록 하는 것이다. 스틸바인 SSoC의 일반화된 추상적 모델은 다른 형태의 링크(예컨대, 호스트 SATA, 드라이브 SATA, 및 ISL)에 대한 미정의된 수의 포트들을 갖는다. 그러나, 각 링크 형태의 특정 개수를 선택하는 것은 스틸바인 컴포넌트의 설계에 있어서 중요한 문제이다. 각 포트 형태의 개수 선택에 추가하여, 스틸바인 기능(예컨대, 가상화, 확장(enhancement) 등)의 구현에 사용된 자원량은 결과적인 SSoC의 비용 및 성능의 주요 결정 요인이다. 스틸바인 아키텍처는 단지 작은 수의(이상적으로는, 하나의) 컴포넌트 형태를 가지고 호스트 및 드라이브 접속부의 수가 넓은 범위에 걸쳐 (독립적으로) 스케일링되도록 정의된다.
단일 저비용 컴포넌트에 높은 정도의 확장성을 지원하기 위하여, 대규모의 서브시스템으로 구성될 수 있는 원자(atomic) 단위를 생성하는 것이 필요하다. 이러한 원자 단위는 넓은 범위의 다른 수의 호스트 포트 및 드라이브 포트를 갖는 스토리지 스위치를 생성하기 위해 공통 구성 블록으로서 역할을 한다. 이러한 방안은 미사용 포트들을 구비하는 스위치들의 경우 추가의 비용을 초래하거나 다른 크기의 스위치의 각 경우에 대해 별도의 NRE 비용을 초래하는 대안들에 비해 우수하다. 더욱이, 적절히 정의된 구성 블록 유닛은, 더 많은 유닛들이 점점 대규모 서브시스템을 생성하도록 결합되기 때문에 결과적인 서브시스템이 안정적이도록 (즉, 어떤 주어진 자원 형태의 양이 불충분한 것으로 인해 병목 현상이 발생하지 않도록) 보장하기 위하여 충분한 자원들을 포함하면서, 최소의 서브시스템에 대한 모든 기본적인 수준의 기능을 수행하기 위하여 요구된 최소한의 자원들을 포함할 것이 다.
확장성(scalability)은 패브릭을 통해 달성되고, 밸런스는 원자 구성 블록에 포함된 자원들의 정의와 이들 블록들이 결합되는 토폴로지의 결합을 통해 달성된다. 하이퍼큐브(hypercube)의 차원은 가능한 확장성 정도를 정의한다. 유연한 라우팅 패브릭을 이용함으로써, 상호접속 토폴로지는 임의적일 수 있고, 그 일부는 다른 것보다 더 나을 것이다. 지연 시간 및 대역폭은 스위치 확장성의 주요 문제들이다. 홉 카운트는 지연 시간을 정의한다. 대역폭은 차원 및 토폴로지에 의해 정의된다. N 차원 하이퍼큐브는 이것이 평균 홉 길이를 최소화하고 균일한 이등분의 대역폭을 제공(즉, 패브릭이 이등분되는 것과 무관하게 동등한 집단 대역폭을 획득)하기 때문에 이상적인 토폴로지이다. 하이퍼큐브의 차원은 ISL 포트의 개수에 의해 정의된다. 최악의 경우, 모든 호스트는 호스트의 노드로부터 가장 원격지에 있는 드라이브를 액세스하여, 각 노드가 통과 트래픽은 물론, (원격 노드로 진행하는) 그의 국부적인 호스트로부터의 트래픽 및 (원격 노드/호스트로 진행하는) 국부적인 드라이브로부터의 트래픽을 지원하도록 한다.
고도의 확장성을 달성하고, 이들의 가격/성능 특성을 최적화하기 위하여, 스틸바인 컴포넌트는 "안정된" 개수의 호스트, 드라이브 및 스위치간 링크, 및 관련 자원들로 구성된다. 안정된 컴포넌트 설계는, 단일 칩이 본 섹션에서 호스트/드라이브 상호접속을 지원하기 위해 충분한(밴드대역 및 계산) 자원을 갖는 것으로 정의되며, 추가 칩이 부가될 때, 각각의 추가적인 칩은 전체 서브시스템이 안정되도록 보장하는데 필요한 자원들을 제공한다.
정책과 메카니즘의 분리
이러한 시스템의 설계에 있어서, 메카니즘(즉, 그것이 어떻게 수행될 것인지)으로부터 정책(즉, 무엇을 해야 할 것인지)을 분리하는 것은 종종 좋은 설계 작업이다. 스틸바인 SSoC는 이들 원리를 염두에 두고 설계되어, 몇몇 다른 설계 옵션들을 제공하고, 이들 옵션들의 주요 형태는 이하에서 설명된다.
스틸바인 기반 제품에 있어서, 마이크로코드의 주요 기능은 다른 저수준 메카니즘의 집합(예컨대, 디스크 대 디스크 복사, 외부 통신, 원격 액세스 등)와 함께, 기본적인 기능 SSoC(즉, 가상화 및 RAID 특징이 추가된 SATA PM 기능)를 제공하는 메카니즘을 구현하는 것이다. 이 코드는 서브시스템의 요구되는 모든 "정상 상태(steady-state)" 동작을 수행한다. 그러나, 일부 "예외(exception)" 이벤트가 발생하면(예컨대, 드라이브 고장, 새로운 드라이브 온 라인으로 됨, 드라이브 오프 라인으로 됨 등), 이러한 이벤트에 어떻게 응답할 것인가에 대해 판단이 이루어져야 한다. "정책" 컴포넌트는 이들 이벤트를 처리하고, 이들 각각에 응답하여 취해질 적절한 동작을 결정하는 로직으로서 정의된다. 이러한 로직은 (도 7에 도시된 바와 같이) 몇몇 다른 위치에서 구현될 수 있는 정책 모듈로 알려진 코드로 실현된다.
임베디드 정책
제1 예시적인 옵션(즉, 도 7a)에 있어서, 정책 모듈은 SSoC 그 자체 내에 내장된다. 정책 이벤트가 발생하면, 정책 모듈이 시동되고, 칩은 어떤 외부의 엔티티를 참고하지 않고 무엇을 해야 할 것인지 그 자신을 위해 결정한다. 정책 의사 결정(decision-making) 프로세스의 유일한 외부 입력은 칩 상의 범용 입력 핀들을 통해 전달된 스트래핑(strapping) 옵션에서 온다. 이들 스트래핑 옵션 핀의 설정에 기초하여, 다른 동작들이 동일 정책 모듈로부터 도출될 수 있고, 또는 대안적으로, 전적으로 다른 임베디드 정책들이 선택될 수 있다.
정책 로직은 SSoC의 마이크로코드 내에서 메카니즘들과 분리되며, 정책 모듈과 코어 메카니즘 사이에 잘 정의된 인터페이스가 존재한다. 임의의 정책 모듈들은 (칩의 코드 공간 및 데이터 공간이 허용하는 한) SSoC에 로드될 수 있다. 정책 모듈의 실행은 전형적으로 시간이 중요(time-critical)하지 않아서, 성능 관심은 최소이다(또한 정책 모듈은 SSoC 내에 적절히 저하된 우선권 레벨에서 수행되어야 한다).
이러한 형태의 임베디드 정책은 다른 이벤트들에 어떻게 반응하는지에 대한 그 결정에 기초하는 적절한 정적 정보에만 의존할 수 있기 때문에, 상당히 간단한 정책들을 구현하는 데에만 사용될 수 있다. 코드 및 데이터 크기 제한들뿐만 아니라 성능 제한들은 광대한 복잡한 계산을 요구하는 정책 구현을 불가능하게 할 것이다. 실제로 이 정책과 관련된 영구적인 상태 정보는 매우 제한된 공간을 가질 수 있는 SSoC의 EEPROM에 저장된다.
임베디드 정책을 사용하는 것은 비용에 가장 민감한 애플리케이션을 위하여 가장 간단하고 보편적인 정책들에만 가장 잘 제한된다. 이것은 비록 정책 모듈들이 용이한 추가 및 제거를 위해 모듈화되었지만, SSoC는 (이것이 다른 마이크로코드를 나타내기 때문에) 정책 모듈이 변경될 때마다 완전히 재허가 받아야 한다. 더욱이, 가능하다면 외부 엔티티 또는 사용자의 조언을 요구할 수 있는 어떠한 정책도 임베디드 형태로 구현되지 못할 것이다.
국부적인 외부 정책
정책 모듈을 구현하기 위한 제2 옵션이 도 7b에 예시되어 있으며, 여기서 정책 모듈은 SSoC 그 자체의 외부의(그러나, 국부적인) 마이크로컨트롤러 내에 구현된다. 더 복잡한 정책들은 (여전히 전적으로 비제한적이지 않을지라도) 보다 완화된 자원 제한들로 구현될 수 있다. 매우 저가의 단일 칩 마이크로컨트롤러(예컨대, PIC)가 존재하기 때문에, 이러한 방안의 추가 비용은 매우 적을 수 있다. 이러한 방안은 정책없는(plicy-free)(즉, 순수한 메카니즘) SSoC의 생성과 유효화를 허용하며, 여기서 맞춤형 정책들은 (I2C 기반 EEPROM과 대등한) 작은 컴포넌트를 추가함으로써 추가될 수 있다. 대안적으로, 고도의 기능을 갖는 마이크로컨트롤러가 사용될 수 있어서, 스토리지 서브시스템의 외부(대역외) 인터페이스, 예컨대, 이더넷, USB, 또는 RS232 링크, 컴팩트 플래시 또는 PCMCIA 카드 인터페이스, ISO7816 카드 인터페이스, 또는 802.* 또는 블루투스 무선 링크를 역시 지원할 수 있다.
정책의 선택 또는 구성은 외부 인터페이스에 의해 수행될 수 있다. 이러한 방안은 정책 모듈과 연련된 상태 정보가 스토리지 서브시스템의 외부에 저장되게 해주는 추가적인 이점을 갖는다. 외부 프로세서(특히 외부 통신 링크 또는 고체 상태의 메모리 디바이스 인터페이스를 가짐)는 "오프 사이트/원격(off- site/remote)" 위치로 임계 상태를 백업하는 수단을 제공할 수 있다. 이것은 만일 정책 프로세서가 대체되는 경우에, 드라이브들이 액세스 불가능하게 되는 것을 방지한다.
외부 정책 컨트롤러는 사용자 개입없이, 즉, 사용자에게 입력을 요구하지 않고 모든 가능한 이벤트들을 처리할 수 있는 방식으로 구성된다. 이것은 많은 이벤트들의 경우, 극단적으로 단순화한, 브루트 포스 또는 최악 형태의 행동가 취해져야 한다는 것을 의미한다. 예를 들어, 시스템에 새로운 드라이브가 나타나면 무엇을 해야하는지에 대한 질문에 대해, 상황과 무관하게 올바르게 동작하는 간단한 응답, 예컨대, 항상 새로운 드라이브를 결정론적 방식으로 사전 정의된 로직 드라이브로 분배하고, 새로운 드라이브를 "자유 풀(free pool)"에 할당하고 사용자 지향 구성을 대기하는 등으로 응답되어야 한다.
호스트 기반 정책
마지막으로, 도 7c에 도시된 옵션은 정책 모듈이 호스트 상에서 구현된 경우를 나타낸다. 임의적으로 복잡한(그리고 상태 유지(stateful)) 정책들은, 이러한 방안은 물론 인간의 상호작용을 필요로하는 정책들로 구현될 수 있다.
본 옵션이 앞에서 정의된 국부적인 외부 정책 예와 대등할 수 있으며, 여기서 호스트는 국부적인 마이크로컨트롤러 대신에 전술한 정책 모듈을 실행한다. 이 경우, 호스트 기반 정책 모듈은 "데몬" 프로세스, 즉, 어떤 사용자-가시적 표현없이도 호스트 상에서 실행하는 애플리케이션으로서 지칭될 수 있다. 이 호스트는 국부적인 외부 정책의 경우에 정책 프로세서를 대체할 수 있으며, 호스트 데몬과 동일한 정책 계산들을 실행할 수 있다. 데몬은 호스트 상에서 설정될 수 있고, 스토리지 서브시스템으로부터의 이벤트들에 응답하고 SSoC의 상태로의 업데이트를 전송하면서 조용히 실행될 수 있다. 어떤 사용자 입력없이도 데몬으로서 호스트 상에서 실행하는 전적으로 사전 정의된 정책 모듈들, 또는 사용자 정의 구성 파일, CLI 또는 GUI로부터 구성되고 구동된 정책 모듈들을 구비하는 것이 가능하다.
스토리지 서브시스템으로부터의 이벤트에 응답하여 취할 적절한 행동을 결정하기 위해 사용자가 조언을 받아야 하는 많은 상황들이 있다. (정상 상태 동작에서 사용자와 어떠한 상호작용도 포함하지 않는) 전술한 데몬 방안에 추가하여, 정책 의사결정 프로세스에서 사용자를 포함하는 정책들을 갖는 것이 가능하다. CLI 기반 애플리케이션 및 GUI 기반 애플리케이션 둘다, 맨 인 더 루프(man-in-the-loop) 정책 모듈을 제작하도록 생성될 수 있다. 이들 애플리케이션은 스토리지 서브시스템으로부터의 이벤트를 처리하며, (예컨대, 팝업 윈도우를 통해) 사용자와 상호작용을 발생하고, 스토리지 서브시스템의 상태를 업데이트한다.
스토리지 서브시스템과 이들의 호스트 기반 정책 모듈들 간의 상호작용은 대역내 (즉, SATA 링크를 이용하는) 통신 링크 또는 대역외 (즉, 이더넷, USB, RS232, WiFi, 블루투스 등과 같은 몇몇 부속 접속부를 이용하는) 통신 링크를 통해 수행될 수 있다. 외부 정책 모듈들과 통신하는데 사용되는 프로토콜 및 대역 내 대 대역외 통신 링크들의 사용은 다음 섹션에서 더 상세히 논의될 것이다.
정책 구현 선택
전술한 옵션들 중 어느 것이 정책들을 구현하는데 사용는지와는 것과는 무관 하게, 스틸바인 SSoC 메카니즘들과 그 정책 모듈들 사이의 인터페이스는 논리적으로 동일하게 유지된다. SSoC의 메카니즘에 의해 발생된 (전형적으로 드라이브의 유입 및 유출과 관련된) 이벤트는 정책 모듈로 진행한다. 그 다음, 정책 모듈은 (전형적으로 SSoC의 가상화 테이블의 업데이트를 포함하는) 어떤 행동들이 이에 응답하여 수행되어야 하는지를 결정하기 위해 몇몇 로직을 실행한다. 이들은 업데이트 메카니즘을 이용하는 스틸바인 SSoC에 적용된다.
또한, 전술한 3개의 옵션에 추가하여, 스틸바인 기반 스토리지 시스템용 정책 모듈을 구현하기 위해 다양한 하이브리드 경우들이 또한 존재함을 주목할 가치가 있다. 예를 들어, 호스트가 아닌 비국부적인 마이크로컨트롤러가 사용될 수 있다. 스틸바인 스토리지를 포함하는 대규모 시스템 내에 다수의 호스트가 있을 수 있고, 단일 호스트가 대규모의 시스템 내 각각의 SSoC에 대한 정책 기능들을 수행하는 것으로 가정될 수 있다.
앞에서 정의된 각각의 옵션들(및 다양한 하이브리드 선택)은 구별되는 이익, 비용, 성능 및 제한을 갖는다. 제1 옵션(임베디드 정책)은 단일 칩 솔루션과 연관된 간단성 및 저비용의 이점을 갖는다. 이러한 방안으로 많은 유용한 정책들을 구현할 수 있지만, 이것은 옵션들 중 가장 제한된 것이다. 제2 옵션(국부적인 외부 정책)은 단일 칩 방안보다 작은 것으로부터 호스트 기반 방안보다 큰 것까지, 폭넓은 범위의 다른 비용으로, 광범위한 성능을 제공한다. 외부 정책 모듈이 다른 기능(예컨대, 인클로저 관리 및 외부 인터페이스 프로세서) 용도로 사용된 마이크로컨트롤러에 "피기 백(piggy-backed)"될 수 있다는 사실은 이러한 방안을 바람직한 옵션으로 만든다. 제3 옵션(호스트 기반 정책)이 (호스트내에 이미 존재하는 자원들을 이용하는) 가장 비용 효과적인 것으로 생각될 수 있지만, 이러한 옵션은 상당한 단점을 갖는다. 호스트 기반 정책 솔루션들은 임의의 호스트와 함께 작업하고 이들의 정의된 기능을 수행하기 위해 어떠한 사용자 개입도 필요하지 않는 사용이 간단한 어플라이언스들로서 나타나는 스토리지 서브시스템을 생성하는 목적에 상반되는 것이다. 호스트 기반 방안은 많은 OS 버전들과 함께 사용하기 위하여 생성되고 유효화되어야 하는 소프트웨어를 호스트 상에 설치할 것을 요구한다. 이러한 방안은 또한 소규모 임베디드 컨트롤러보다 유닛 당 훨씬 더 비싼 경향이 있는 호스트 자원을 소모한다. 더욱이, 만일 호스트를 대체한 결과로서 정책/구성 정보의 손실을 초래한다면, 데이터에 대한 액세스가 저하될 수 있다.
스틸바인 SSoC 의 특징
스틸바인 아키텍처의 다른 구현들이 많이 있을 수 있지만, 아키텍처의 중심에 배치된 컴포넌트들은 모두 공통 특성 집합을 공유하고, 공통 특징 집합에 의지한다. SSoC의 전체 스틸바인 계열에 대한 일반적 특징 세트는 본 섹션에서 정의되며, (폴라리스 및 밀키웨이 하드웨어에 기초한) 특정 구현에 의해 구체화된 특징의 부집합은 다음 섹션에서 설명된다.
호스트의 관점으로부터, 스틸바인 컴포넌트는 물리적인 드라이브, 또는 표준 포트 멀티플라이어 뒤에 있는 물리적인 드라이브 집합인 것으로 나타난다. 호스트에 제공된 이들 드라이브는 (반드시) 실제 물리적인 드라이브는 아니지만, 사실상 가상 드라이브이다. 이들은, 이들이 생성된 물리적인 드라이브의 특성과는 다를 수 있는 추가적인(유용한) 특성(예컨대, 크기, 속도, 및 신뢰성)을 갖는 드라이브로서 호스트에 나타난다. 스틸바인 컴포넌트의 주요 기능은 몇몇 (정적 또는 역동적으로 변경가능한) 구성 데이터와 함께, 잘 정의된 규칙들의 집합을 따르는, 그것의 이용가능한 물리적인 드라이브 집합에 기초하여 가상 드라이브를 생성하고 유지하는 것이다.
호스트는 (원리적으로) 그에게 제공되는 가상 드라이브가 (정의된 추가 특성을 갖는) 실제의 물리적인 드라이브가 아니라는 것을 검사할 수 없어야 한다. 이러한 환상은 다양한 실제적인 목적을 위해 무시할 수 있으며, 그렇지 않으면, 모든 의도 및 목적상, 스틸바인 SSoC에 의해 생성된 가상 드라이브는 물리적인 드라이브들과 구별이 불가능하다. 유사하게, 극단적으로 퇴보된 경우에 있어서, 스틸바인 컴포넌트는 표준의, 단독처리능력이 없는, SATA 포트 멀티플라이어의 기능과 동일한 기능을 제공하도록 구성될 수 있다.
가상 드라이브의 추상화는 호스트 발생 SATA 커맨드 스트림에 대해 변환을 수행함으로써 생성된다. 이들 변환은 대부분 간단한 테이블 룩업 동작에 의해 구현될 수 있으며, 여기서 가상 드라이브에 전달되는 커맨드들은 하나 이상의 물리적인 드라이브에 대한 (가능하게는 다수의) 커맨드(즉, 물리적인 커맨드)로 빠르고 용이하게 변환될 수 있다. 몇몇 경우에서, 이 변환은 간단히 커맨드(예컨대, 타겟 드라이브 및 시작 섹터) 내 값들을 대체함으로써 수행될 수 있다. 다른 경우는, 예를 들어, 연결된 물리적인 드라이브를 연결하고, 미러링된 집합들에 대한 기록을 복사하는 등의 동작을 위하여, 다수의 물리적인 커맨드가 단일 가상 커맨드에 응답 하여 생성될 것을 요구한다. 전자의 경우, 간단한 테이블 룩업 기능이, 가상 커맨드에서 물리적인 커맨드로의 변환을 수행하는데 사용될 수 있다. 후자의 경우, 요구되는 분기(fork)/접합(join) 형태의 동작을 수행하고, 다양한 예외적인 상황들(예컨대, 드라이브 고장, 커맨드 재시도 등)을 처리하기 위하여, 몇 가지 추가 로직이 수행되어야만 한다.
다수의 가상 드라이브 지원은 포트 멀티플라이어 사양에 의해 제공되는 어드레싱 메카니즘을 이용하여 달성된다. 매우 높은 수준의 관점으로부터, 호스트에 의해 발행되는 SATA 커맨드는 수행될 동작 형태를 정의하는 패킷들과 주어진 동작을 수행하는데 필요한 인수(arguments)로 구성된다. 다른 형태의 커맨드가 많이 존재하지만, 주요 관심사는 일련의 디스크 블록들(섹터로도 알려짐)에 대한 판독 또는 기록 동작을 수행하는 것이다. 전형적인 판독 동작은 시작 블록 어드레스(전형적으로, 로직 블록 어드레스(LBA)로서 알려진 48 비트값) 및 판독될 블록의 수를 인수로서 갖는다. 호스트는 이 커맨드를 드라이브에 전송하고, (디스크 상의 주어진 위치로부터의) 원하는 데이터 블록들이 복귀된다. 유사하게, 기록 동작은 동일한 어드레스 및 카운트 인수를 가지며, 디스크(디스크 상의 주어진 위치)에 기록될 데이터 블록들도 포함한다. 이에 더하여, SATA 포트 멀티플라이어 사양은 14개까지의 다른 물리적인 드라이브들 중 어느 것이 주어진 커맨드의 타겟이 되는지 선택하는 추가적 인수가 포함되게 한다. 가상 드라이브를 생성하기 위해, 스틸바인 컴포넌트는 주어진 가상 드라이브를 정의하고, 이 정보에 기초하여, 적절한 물리적인 LBA 및 블록 개수를 갖는 하나 이상의 물리적인 커맨드를 발생하는 변환 정보를 선 택하기 위해 타겟 드라이브 번호를 이용한다. 판독/기록 데이터는 이들 변환의 일부로서 변경되지 않는다. 이러한 가상-물리 커맨드 변환의 일례가 도 8에 도시된다. 타겟 ID는 사용할 테이블을 선택하고, 시작 LBA 및 블록 카운트 인수들은 특정 커맨드를 가상화하기 위해 어떤 테이블 엔트리가 사용될지를 정의한다.
스틸바인 컴포넌트의 결합
스틸바인 아키텍처는 단일 호스트 포트로부터 다수의 물리적인 디바이스들로의 액세스를 가능하게 하는 능력을 "캐스케이드" 스틸바인 디바이스들에게 제공한다.
SATA II 포트 멀티플라이어 사양은 4비트 타겟 어드레싱을 제공하는데, 이것은 15개의 물리적인 디스크 드라이브까지 액세스를 허용한다. 이 사양은 포트 멀티플라이어들이 캐스케이드식으로 연결될 수 없다는 것을 명확하게 기술하고 있다. 이러한 제한에 대한 이론적 근거는, 디스크 어드레싱을 디바이스들의 하위 계층으로 확장하는 메카니즘이 없다는 것이다. 그러나 스틸바인의 가상화 능력은 이러한 제한을 극복하기 위하여 사용될 수 있다. 예를 들어, 호스트는 (SATA II 사양에 따라 구현된) 간단한 포트 멀티플라이어에 연결될 수 있는 반면, 포트 멀티플라이어 상의 각각의 드라이브 포트는 단일 가상 디스크를 구현하는 스틸바인 디바이스에 연결된다. 스틸바인 디바이스 아래에는 포트 멀티플라이어에 단일 가상 드라이브를 제공하도록 가상화된(예컨대, 연결되고, 스트라이프되는 등의) 몇몇 물리적인 드라이브들이 있을 수 있다. 이러한 방식으로, 포트 멀티플라이어 사양의 단일 레벨 제한이 극복된다.
전술한 예에서 저수준의 스틸바인 디바이스들은, 대신에, 추가적인 스틸바인 디바이스들에 연결되며, 그러한 추가적인 스틸바인 디바이스들은 이번에는 단일 가상 드라이브를 전술한 디바이스에 다시 제공하면서 몇몇 물리적인 드라이브들을 가상화하는 것에 주목하자. 어떤 의미에서는, 상위 스틸바인 디바이스는 하위 스틸바인 디바이스들에 의해 제공되는 다른 가상 드라이브들로 구성된 새로운 가상 드라이브를 생성한다. 이러한 방식으로 캐스케이드식으로 될 수 있는 스틸바인 디바이스들의 계층의 수는 사실상 제한이 없다는 것은 명백하다. 간단한 포트 멀티플라이어와 통신할 수 없는(즉, 포트 멀티플라이어를 인식하지 못하는) 호스트의 경우, 고수준 디바이스는, 대신에, 연결된 호스트에게 단일 가상 드라이브의 뷰(view)를 제공하는 스틸바인 디바이스일 수 있다는 것, 즉, 고수준의 간단한 포트 멀티플라이어가 사용될 수 있으나, 본 시나리오에서는 요구되지 않는다는 것을 주목하자.
스틸바인 디바이스들의 각 계층은 액세스될 수 있는 물리적인 드라이브의 수를 지수적으로 증가시키기 때문에, 호스트에 연결될 수 있는 물리적인 드라이브의 수에는 사실상 제한이 없다. 그러나, 사용가능한 캐스케이딩 깊이에는 실제적인 제한이 있다. 예를 들어, 각각의 계층은 도입된 추가 지연 시간으로 인해 전체 성능을 약간 감소시킬 것으로 예상된다.
물리적인 드라이브 집합이 가상화되는 경우, 수행된 변환의 본질은, 가상 드라이브에 대한 커맨드에서 전송된 로직 블록 어드레스(LBA)의 일부가, 데이터가 시작하는 하위 또는 구성 드라이브(물리적인 또는 케스케이드식 가상 드라이브)를 선 택하는데 사용되고, LBA의 나머지는 컴포넌트 디바이스 내 위치을 선택하는데 사용된다는 점이다. 즉, 가상화에 의해 LBA의 일부가 디스크 어드레싱용으로 추가 비트를 제공할 수 있다. 즉, 케스케이딩에 의해 4비트 어드레스 제한을 극복하는 방법은 SATA II 멀티플라이어 사양에 내재한다.
기능의 로직 계층
스틸바인 아키텍처는 물리적인 드라이브 집합으로부터 가상 드라이브를 생성하는 것 외에도, 중요한 기능을 제공한다. 향상된 가상 드라이브 기능(예컨대, 개선된 속도 및 신뢰성)을 생성하는데 필요한 특징들, 및 단일 SSoC에 의해 제공된 것 이상의 드라이브 및 호스트의 수를 스케일링(scaling)하는데 필요한 것들은 앞에서 정의된 기본적인 SATA 포트 멀티플라이어형 기능 및 간단한 가상화에 추가하여 제공된다. 도 9는 (단일 칩에 의해 지원되는 호스트 및 드라이브의 수를 초과하여 스케일링하는 것을 허용하기 위하여) 외부 인터페이스가 호스트, 몇몇 드라이브, 및 잠재적인 다른 그러한 SSoC에 연결되는 몇 개의 고속 포트로 구성되는 정규의 스틸바인 SSoC를 예시한다.
스틸바인 아키텍처에 있어서 완전한 특징들의 집합은 논리적으로 독립적인 계층들의 집합으로서 이하에 정의된다. 도 9에 도시된 로직 기능 계층들은 각 기능이 존재하는 추상화의 상대 레벨뿐만 아니라, 그 기능에 대한 사용 계층 둘다를 제안하는 구성에서 나타낸다. (이들 계층이 반드시 별도의 기능으로서 구현되어야 하는 것은 아니며, 더욱이 이들 특징들 모두가 특정 제품 내에 존재해야 하는 것은 아니다.)
서브 섹션들은 이하에서 정규의 스틸바인 컴포넌트의 다른 로직 기능들을 설명한다. 이 기능들은, SATA 드라이브를 지원하는데 필요한 메카니즘; (스틸바인 컴포넌트의 집합으로 구성되는 패브릭을 통해) 다수의 원격 드라이브들에 액세스를 가능하게 해주는 특징; 기초적인 가상-물리 변환(즉, 물리적인 드라이브의 영역에서 가상 드라이브 생성)을 위한 로직; 가상 드라이브의 특성의 추가적인 확장 (예컨대, 속도 또는 신뢰성)을 제공하는 메카니즘; (주어진 호스트를 위해) 가상 드라이브를 특정 타겟 ID에 매핑하기 위한 메카니즘; 및 SATA 프로토콜을 다른 (잠재적으로, 상위 수준의) 프로토콜로 변환할 수 있게 하는 특징을 포함한다.
SATA 계층
몇몇 실시예에서, 스틸바인 SSoC의 주요 외부 인터페이스 접속부(즉, 호스트 포트 및 드라이브 포트)는 모두 SATA 인터페이스들이며, 이러한 이유로, 스틸바인 컴포넌트 아키텍처 내 제1 로직 계층은 SATA 인터페이스를 지원한다. SATA I 사양의 SATA 물리적인, 링크 및 전송 계층들에 의해 정의된 기초적인 능력에 추가하여, 이 층은 SATA 포트 멀티플라이어 사양에서 정의된 특징뿐만 아니라, SATA II 사양에서 정의된 네이티브 커맨드 큐잉(NCQ) 프로토콜에 대한 지원을 제공한다.
스틸바인 컴포넌트들 상에 두 가지 형태의 SATA 인터페이스, 즉, 타겟(즉, 호스트) 포트 및 개시자(즉, 드라이브) 포트가 존재한다. 전술한 바와 같이, 스틸바인 아키텍처는 컴포넌트에 포함될 각각의 형태의 링크의 수를 선택하는데 있어서 밸런스를 이루고자 힘쓰고 있다. 이 외에, 스틸바인 SSoC 내 SATA 포트들 간에는 더 이상의 차이는 없으며, 각 형태의 SATA 포트는 기능이 동등해야 하고, 특정 형 태의 포트에 대한 개개의 예들 간에는 특성화나 차별화가 없어야 한다. 특히, SATA 포트 멀티플라이어 사양이 (레거시 부트(legacy boot) 동작을 지원하기 위하여) 물리적인 드라이브 포트 0의 특별한 처리를 요구하지만, 스틸바인 컴포넌트 상의 물리적인 드라이브 포트들 간에는 차이가 없어야만 한다. 이것은 가상화 및 매핑 기능(후술함)에 의해 임의의 물리적인 드라이브(들)가 가상 드라이브 0을 생성하는데 사용될 수 있기 때문에 필요하다.
물리적인, 링크 및 전송 서브 계층
스틸바인 컴포넌트에 대하여 이루어진 하드웨어/소프트웨어 트레이드 오프는 우수한 정책/메카니즘 분리 원리에 의해 크게 영향을 받는다. 이들 가이드 라인은 데이터 패킷들이 몇 종류의 프로세서에서 실행하는 소프트웨어에 의해 제어되는 방안을 제안하지만, 데이터 그 자체는 특정 하드웨어를 통해 흐른다. 이 방안은 제어 면(즉, 상위 수준, 제어 지향 로직, 장시간 상수를 가지며, 그래서 성능 제한들이 덜 엄격함)으로부터 데이터 면(즉, 고성능, 저수준, 데이터 이동 메카니즘)을 분리한다. 본 섹션에서 취해진 하드웨어/소프트웨어 트레이드 오프 방안은 하드웨어 메카니즘들이 SATA 물리적인, 링크 및 전송 계층들의 표준화된 특징들을 모두 구현하기 위해 제공되어야 한다고 제안한다.
이것은, 최대한 가능한 정도까지, 하드웨어 메카니즘들이 호스트 포트 및 드라이브 포트가 표준 방법으로 기능하게 해주는 SATA 사양에서 정의된 로직(즉, 상태 머신(state-machines))을 구현함을 의미한다. 그러나, 다른 정책들이 이들 메카니즘에 적용되도록 해주는 "후크(hooks)"가 있어야 한다. 다양한 SATA 포트들이 다양한 표준 SATA 이벤트들(예컨대, 초기화, 유휴(idle), 전원 관리, 중재 등)에 적절한 응답을 자동적으로 생성하는 것이 가능해야 하지만, 동시에 마이크로코드 정의, 소프트 정책 로직은 주어진 정책과 일관되는 방식으로 이벤트들을 검출하고, 그에 응답하고, 이벤트들을 생성한다. 예를 들어, 하드웨어가 SATA 패킷(즉, FIS)에서의 CRC에러를 자동적으로 검출하는 메카니즘을 제공하는 것이 적절하지만, 그 구현의 정책 부분에까지, 그러한 이벤트에 응답하여 어떤 행동, 예컨대, 초기에 즉시 에러를 전송하고, 이벤트를 로그하고, FIS를 전달하는 등을 취해야 하는지를 결정해야 한다.
이것은 메카니즘들이 이벤트가 일어날 때마다, 신호를 발생하고, 소프트웨어로 그것을 처리할 때까지 그것을 남겨두는 그러한 저수준의 추상화에서 설계되어야 한다는 것을 의미하지 않는다. 그 대신에, 적절한 하드웨어/소프트웨어 트레이드 오프에 의해 소프트웨어가 공통 정책 경우에 대해서는 소정의 사전 정의된(표준) 동작들을 선택할 수 있고, 비표준화의 경우, 즉, 정책이 SATA 사양에서 정의된 동작들에 맞지 않게 구현된 경우에는 소프트웨어 정의 로직으로 회피할 수 있다. 우수한 메카니즘 설계는 정책 선택들을 단지 선험적으로 알려진 정책들로만 한정하지 않고, 광범위한 다른 동작들이 기능 구성 블록들의 집합으로부터 구성되게 할 것이다. 이러한 설계 방안의 목표는 정책 결정에 대한 침해없이 정의된 메카니즘들의 추상화 레벨을 가능한 가장 높은 레벨로 향상, 즉, 하드웨어가 그 메카니즘의 사용 범위를 제한하는 지점까지 가급적 많은 특징의 기능을 하드웨어에서 구현하도록 시도하는 것이다.
이들 설계 원리들과 조화하여, 수신 FIS들의 디멀티플렉싱이 하드웨어 메카니즘들에서 처리되도록, 예컨대, 가상 드라이브들에 전송된 FIS들을, 포트 멀티플라이어 제어 포트, 또는 스토리지 인클로저 관리 브리지로 전송된 FIS로부터 분리하는 것이 전반적으로 적절하다. 유사하게, 저수준 링크 기능(예컨대, 링크 속도, 유휴 발생, 링크 중재, 전원 관리의 자동 협상(negotiation))은 소프트웨어가 "표준" 동작에 우선하도록, 예컨대, 자동 협상 단계의 결과가 무엇인지와는 무관하게, 강제로 링크 속도가 주어진 속도로 되게 해주는 능력을 갖고, 하드웨어에서 처리되어야 하는 것이 적절하다. 또한, 하드웨어 메카니즘이 새도우(shadow) 레지스터 및 드라이브 포트용 지원 로직을 구현하는 것도 적절하다.
SATA 메카니즘이, 다른 정책들이 적용되도록 하는 예는, 링크 레벨의 인지가 처리되는 방법들에 있다. SATA 포트 멀티플라이어 사양은 링크 레벨의 인지가 드라이브에 의해 수행되어야 하고 PM을 투명하게 통과해야 한다는 것을 언급하는 반면, 성능의 최적화는 (우수한 CRC를 갖는) 호스트 패킷의 추론적 인지를 통해 달성될 수 있다. 이러한 최적화는 어떠한 상황에도 적용될 수 있고, 그것은 정책 로직이 그렇게 하는 것이 적절한 때, 그리고 하지 말아야 할 때를 결정할 때까지이다.
또 다른 예는 호스트와 드라이브들 간의 패킷의 큐잉 또는 버퍼링에 적용된 정책을 포함한다. 호스트 링크가, 드라이브들이 지원할 수 있는 것보다 더 높은 속도로 실행할 수도 있는 경우, 만일 직접 연결이 드라이브와 호스트 간에 이루어진다면, 호스트 링크의 이용이 어려울 수 있다. 호스트 링크는 이것이 동작 가능할 수 있는 가능한 3 Gbps 대신에 1.5 Gbps의 유효 속도로 동작할 수 있다. (스틸 바인 기반 시스템에서 중요하고, 성능 제한적이며, 계량적일 수 있는) 호스트 링크 이용을 개선할 대안적인 방안은 드라이브로부터 FIS를 버퍼링하고, 이들을 호스트에 최고 속도로 전송하는 것을 포함한다. 이러한 기술은 몇몇 상황에서 호스트 링크 처리량을 증가시키는 동안(즉, 동일한 호스트 링크를 통해 액세스되는 하나보다 많은 드라이브가 존재할 때), (단일 드라이브만을 액세스시 처리량에 부담을 야기하는) 증가된 지연 시간의 비용으로 호스트 링크 처리량을 증가시킨다. 따라서, 이것은 버퍼링이 수행되어야 할 때(또는 수행하는 경우)의 정책 결정이 된다. 기본적인 하드웨어 메카니즘은 주어진 시점에 정책 모듈에 의해 어떤 선택이 이루어지든지 지원한다.
포트 멀티플라이어
SATA II 포트 멀티플라이어(PM) 사양은 하나보다 많은 타겟 디바이스가 단일의 개시자의 링크에 연결되게 해주는 간단한 어드레싱 방식을 정의한다. 이것은 다수의 드라이브들이 단일 호스트 포트에 연결되도록 해주는 것으로 의도되며, 3 Gbps의 SATA II 대역폭 및 (판독 헤드 채널들이 700 Mbps 미만으로 유지되는 아주 작은 대역폭을 제공하는) 현재(볼륨(volume)) 드라이브의 대역폭이 주어진다면 적당하다.
PM 사양은 표준 종류의 허브 또는 멀티플렉서 구성에서 특정 드라이브를 선택하는데 사용되는 어드레스들(타겟 ID로 알려짐)에 대하여 FIS 헤더에 4개의 예비 비트들을 정의한다. 타겟 ID 필드는 16개까지의 다른 타겟들 중 하나를 선택하는데 사용된다. PM은 단일 호스트 포트와, 0부터 N-1까지 (연속하여) 번호가 부여된 14개의 드라이브 포트를 갖는 것으로 정의되며, 여기서 N은 PM 예에 의해 정의된 전체 포트 수이다. 타겟 ID 0은 레거시 호환성을 구현하는데 사용된다는 점에서 특별한 것이다. 이것은 포트 0에 연결된 드라이브가 회전하고 호스트 컨트롤러가 PM 인식을 못하더라도(즉, FIS 헤더에서 타겟 ID를 인식하지 못하거나 선택할 수 없더라도) 부팅가능함을 의미한다. 타겟 ID 15는 PM 그 자체와 대화하는데 사용되는 포트로 정의된다. 이 포트는 32 비트 값으로서 어드레싱되고 판독/기록될 수 있는 (표준 및 밴더 정의) 레지스터의 집합으로의 액세스를 제공한다.
하나 더의 타겟 ID가 스토리지 인클로저 관리 브리지(SEMB) 기능에 대한 어드레스로서 사용하기 위해 따로 마련될 수 있다. 이 어드레스는 전형적으로 PM에 의해 지원된 물리적인 드라이브의 최대 개수의 어드레스보다 1이 더 큰 것이다(즉, 타겟 ID N+1). 이 함수는 PM에 연결된 스토리지 인클로저 프로세서(SEP)와 호스트 사이에서 브리지, 투명하게 전송되는 커맨드 및 응답으로서 작용한다.
SATA 호스트 컨트롤러들은 (SATA 호스트 컨트롤러들이 FIS 헤더들 내에 넌 제로(non-zero) 타겟 ID 필드들을 생성하고 그에 응답하는 것을 의미하는) PM 인식, 또는 (SATA 호스트 컨트롤러들이 FIS 타겟 ID 필드를 0으로 놓고 그렇지 않으면 무시한다는 것을 의미하는) 비 PM 인식 중 하나가 될 수 있다. SATA 호스트 컨트롤러는 또한 커맨드 기반 스위칭, 또는 FIS-기반 스위칭을 지원할 수 있다. 커맨드 기반 스위칭은 한번에 단지 단일 커맨드를 주어진 타겟 디바이스에 발행하는 것을 포함한다. 커맨드가 완료된 후에만 호스트는 새로운 커맨드를 다른 타겟에 발행할 수 있다. 이러한 방안은 (구현하기가 더 간단하고 더 적은 자원을 필요로 하기 때문에) 덜 비싸지만, 달성될 수 있는 동시성의 양을 제한하고, 따라서 스토리지 서브시스템의 성능을 제한한다. FIS 기반 스위칭에 의하면, 호스트는 다른 타겟에 대한 다수의 미해결 커맨드(outstanding commands)를 가질 수 있고, 응답 FIS가 타겟들에 대한 미해결 커맨드를 갖는 타겟들 중 하나로부터 올 수 있다는 사실에 대해 대처할 수 있다. 이것은 각각의 미해결 커맨드에 대한 개별의 컨텍스트를 유지하고, ("태깅(tagging)" 메카니즘을 통해) 적절한 컨텍스트와 응답을 연관시킴으로써 수행된다. 이러한 방안은 호스트 컨트롤러에서의 추가적인 하드웨어 비용 및 복잡성을 희생하여, 보다 높은 시스템 성능을 제공한다. 호스트 컨트롤러가 커맨드 기반 스위칭 또는 FIS 기반 스위칭을 수행하는지 여부는 PM 준수 디바이스에 대부분 명백하다. 컨텍스트 및 태깅의 개념은 이하의 NCQ에 대한 섹션에서 더 상세히 설명된다.
스틸바인 컴포넌트가 PM 사양의 어드레싱 특징을 사용하여 가상 드라이브를 선택한다는 것을 주목하여야 한다. 스틸바인 컴포넌트는 또한 SEMB 기능뿐만 아니라, (타겟 ID 15) 벤더 정의 레지스터들을 사용할 수 있다. 이들 PM 특징은 (정신(spirit)이 아니라면) PM 사양의 문자(letter)와 일치하고, 스틸바인 SSoC의 고유 특징들을 지원하는데 사용된다.
네이티브 커맨드 큐잉( NCQ )
임의의 SATA 기반 시스템의 성능에 중요한 영향을 미칠 수 있는 SATA 사양의 다른 특징은 네이티브 커맨드 큐잉(NCQ)으로 알려져 있다. 이 특징은 다른 스토리지 인터페이스(예컨대, SCSI)에서 발견되며, 주어진 드라이브에서 한번에 다수의 커맨드가 미해결되게 해주는 것을 포함한다. 이것은 드라이브들에 의한 커맨드 실행이 엄격하게 동기적일 필요가 없다는 것을 의미한다. 즉, 호스트는 이전에 발행된 커맨드들이 모두 완료되기 전에 추가적인 커맨드를 드라이브에 발행할 수 있다. NCQ는 커맨드들이 드라이브에서 수신된 순서와 다른 순서로 드라이브에 의해 실행될 수 있다는 것을 의미한다. NCQ의 이점은 여러 배이고, 커맨드 발행 및 커맨드 응답을 중첩시킴으로써 성능을 증가시킬 수 있어서, 지연 시간이 은닉되게 한다(그 결과 사용중(busy)인 스토리지 서브시스템의 전체 처리량이 증가된다). 부가적으로, 드라이브들이 이제 한번에 하나보다 많은 커맨드를 액세스할 수 있다는 사실은, 이들이 요청된 탐색(seek) 동작에 대하여 플래터(platter)의 현재 회전 위치에 대한 증가된 지식에 기반하여, 디스크 헤드 스케줄링을 더욱 효율적으로 할 수 있다는 것을 의미한다.
NCQ가 배선의 호스트 및 타겟측 양자(및 이들 사이의 무엇이든)에서 다수의 "컨텍스트"의 생성을 요구할 때 NCQ를 지원하는 것은 매우 자원 집중적일 수 있다. 각각의 컨텍스트는 (미해결 FIS, DMA 상태, 에러 상태 등의 복사본을 포함할 수 있는) 미해결 트랜잭션(transaction)의 상태를 유지한다. 이러한 이유로, SATA NCQ 프로토콜을 지원하는 호스트 컨트롤러 또는 드라이브 중 어느 것도 널리 사용되지 않으며, NCQ가 이용가능하게 되면, 이것은 이용가능한 SATA HBA 및 드라이브의 부집합에서 추가된 비용 특징(added-cost feature)으로서 (적어도, 처음에) 올 것이다. 그럼에도 불구하고, 이 프로토콜을 이용하여, 스틸바인 기반 스토리지 서브시스템에 의해 제공된 성능을 증가시킬 수 있다. 스틸바인 디바이스는 비록 물리적 인 드라이브들이 NCQ 프로토콜을 지원하지 못하더라도, 호스트가 동일한 타겟 디바이스에 다수의 미해결 커맨드들을 갖게 해준다. 이것은 커맨드 발행 및 실행을 중첩시킴으로써 지연 시간이 은닉되게 해주는 동작의 파이프라이닝을 지원함으로써 성능을 개선한다.
NCQ 프로토콜은 타겟 디바이스당 미해결 커맨드가 31개까지 발행되게 해준다. 포트 멀티플라이어는 HBA 포트당 14개의 타겟까지 허용한다. 따라서, SATA 호스트 컨트롤러가 호스트 포트 당 (14*31=)434개까지의 미해결 커맨드를 갖는 것이 가능하다. 이것은 호스트 컨트롤러당 (엄청나게) 다수의 컨텍스트를 나타낸다. 스틸바인 SSoC는 만일 이러한 최대수의 미해결 커맨드를 지원한다면 마찬가지로 엄청나게 많은 수의 컨텍스트를 지원해야 할 것이다. 다행히도, 시뮬레이션은 타겟당 4개보다 많은 미해결 커맨드의 지원에 응답하여 리턴이 감소하고 있음을 보여주고 있으며, NCQ 프로토콜은 진행중 최대의 미해결 커맨드의 개수보다 적게 허용하고 있다.
스틸바인 SSoC들은 가상 드라이브 당 이들이 이출(export)한 일정한 개수의 미해결 커맨드를 제공할 수 있고, 이 개수는 최대 434의 특정 한계보다 훨씬 적을 수 있다. 사실상, SSoC는 가상 드라이브 당 동적 가변수의 미해결 커맨드를 지원할 수 있다. 이것은 각각의 큐잉된 커맨드가 SSoC에 도달할 때 커맨드 풀(pool)로부터 컨텍스트를 할당하고, 자유 컨텍스트가 없을 때까지 비지 비트(busy bit : BSY)가 클리어된(cleared) FIS를 호스트로 리턴함으로써 수행될 수 있다. 이때, 스틸바인 컴포넌트는 컨텍스트가 자유롭게 될 때까지 단순히 대기한 다음, 대기하 는 가상 드라이브를 위해 BSY 비트를 클리어링 할 수 있다. 독립 ATA 레지스터 집합이 각 타겟 ID마다 (따라서, 각 가상 드라이브마다) HBA에 존재하기 때문에, 이러한 행동은 각 가상 드라이브마다 독립으로 커맨드 발행 속도를 '흐름 제어하는' 효과를 갖는다.
(비록 두 특징들이 스틸바인 아키텍처에서 지원되지만) NCQ 프로토콜이 PM 지원과는 독립적이라는 것과, NCQ가 PM 인식 또는 비 PM 인식 호스트 컨트롤러와 함께 사용될 수 있다는 것을 주목하여야 한다.
가상화 계층
가상화 계층은 하나 이상의 (국부적인 또는 원격의) 물리적인 드라이브들로부터 가상 드라이브들을 생성할 책임이 있다. 가상화는 단순히 가상 드라이브를 물리적인 드라이브 상의 블록들의 (가능한, 적절한) 부집합으로서 정의하는 것으로 구성될 수 있다. 이 경우, 요구되는 모든 것은, LBA를 가상 드라이브의 어드레스 공간으로부터 물리적인 드라이브 상의 적절한 어드레스들로 변환하는 것이다. 가상화는 또한 다수의 물리적인 드라이브들로부터의 인접 블록들로 구성되는 가상 드라이브의 생성을 허용한다. 이 경우, 주어진 가상 커맨드는 다수의 물리적인 드라이브들에 영향을 미치는 동작(즉, 두 개의 물리적인 드라이브들 사이의 경계를 연결하는 판독/기록 동작)을 정의할 수 있고, 따라서, 다수의 물리적인 커맨드들이 생성되어야 한다. 가상화 계층은 이들 물리적인 커맨드로부터의 결과들을 결합된 가상 응답으로 결합하는 것은 물론 가상 커맨드를 (각각 적절한 필드값을 갖는) 적절한 개수의 물리적인 커맨드로 분리할 책임이 있다.
몇몇 실시예에서, 가상화 계층은 상태 머신들의 집합 및 룩업 테이블(LUT)의 결합을 이용하여 구현된다. 그러한 구현에 있어서, LUT는 가상 커맨드의 시작 LBA 및 블록 카운트 필드들을 이들의 물리적인 값들로 변환하고, 다수의 물리적인 커맨드들에 대한 필드를 잠재적으로 발생시킬 책임이 있다. 상태 머신은 다수의 물리적인 커맨드들을 단일 가상 응답으로 분기(forking)/결합(joining)하고, 이들 동작으로부터 일어날 수 있는 어떤 예외 상황들의 처리를 수행할 책임이 있다. 다수의 물리적인 응답들이 가상 커맨드에 응답하여 호스트로 리턴된 가상 응답들에 결합되는 것과 같이, 다수의 물리적인 커맨드들의 발행의 결과인 예외사항은 호스트에 전달되기 전에 가상화된 예외사항에 결합(및 잠재적으로 억압)된다.
판독/기록 가상 커맨드들의 시작 LBA 및 블록 카운트 필드들은 하나 이상의 부분들로 분해되고, 그 다음 이 부분들은 주어진 물리적인 드라이브들의 적절한 부분에 매핑하도록 변환된다. 그러나, 이러한 가상화의 동작로부터 야기되는 물리적인 커맨드들의 개수에 무관하게, 하나의 불변량(invariant)은 항상 유지된다. 즉, 물리적인 커맨드의 블록 카운터 필드들 전체의 합은 가상 커맨드의 블록 카운터 필드의 합과 같다. 가상화 계층은 어드레스를 변환하고, 종종 이들을 다수의 서브 레퍼런스(sub-reference)로서 발행하지만, 호스트에 의해 요청된 것 만큼 판독/기록 데이터를 정확하게 발생한다.
가상화 계층이 동작하는 기본적인 유닛은 본 섹션에서 영역(Region)으로 언급된 인접 범위의 디스크 블록들이다. 하나 이상의 물리적인 드라이브 영역들은 이 계층에 의해 결합되어 가상 드라이브를 생성한다. 본 문서에서, 다수의 드라이 브로부터의 영역들의 결합은 연결(concatenation) 또는 RAID 1(즉, 스트라이핑보다 리던던시를 덜 갖는(RAID 0) 독립적이고/저렴한 디스크 어레이의 특징)로 알려져 있다. 영역의 개념과 연결에서의 이들의 사용은 둘다 다음 서브섹션에서 설명된다.
물리적인 디스크들의 영역
본 문서에서, 영역은 단일 물리적인 드라이브의 인접 범위의 블록들(하나에서 모두에 이르기까지의 수의 범위를 가짐)로서 정의된다. 중첩 영역을 정의하는 것이 가능하며, 단일 영역은 전체 드라이브를 포함하도록 정의될 수 있으나, 영역은 다수의 물리적인 드라이브들을 연결할 수 없다.
도 10에서, 가상 드라이브(Vi)는 단일 물리적인 드라이브의 일부로 이루어지는 단일 영역으로부터 생성된다. 예시된 물리적인 드라이브(Pj)는 0(드라이브 상의 제1 블록)으로부터 Mj(드라이브 상의 마지막 블록의 LBA)까지의 범위를 갖는 블록 어드레스 공간을 갖는다. 이 도면에서 사용된 표시법(notation)은 영역(R0)을 튜플(tuple)(Pj, S0, C0)로서 표현하며, 이 튜플은 그 영역에 대하여 시작 블록 어드레스(S0) 및 블록 카운트(C0) 뿐만 아니라, 그 영역이 정의된 물리적인 드라이브(Pj)에 대한 식별자를 포함한다. 주어진 물리적인 디스크의 정의된 영역은 호스트에 가상 드라이브 Vi로서 제공될 수 있다. 그러한 가상 드라이브는 이것이 (R0), 그 시작 LBA(0), 및 최대 LBA(Mi, 이 경우 (C0-1)과 동일함)에 기반한 영역을 나타내는 튜플에 의해 정의된다.
예시된 예에서, 영역상에 발행된 판독/기록 액세스 커맨드는 다른 튜플로서 예시되는데, 이 튜플은 주어진 가상 커맨드에 의해 영향을 받는 영역 Ri의 부집합을 정의한다. 이 튜플은 가상 커맨드를 시작 LBA(sv) 및 블록 카운트(cv)로서 기술한다. 본 실시예는 또한 가상화로부터의 결과인 물리적인 커맨드를 도시하며, 이 물리적인 커맨드는 트랜잭션의 시작(물리적인) 어드레스(S0+sv) 및 블록 카운트(cv)를 포함하는 튜플로 이루어진다. 이와 같은 간단한 경우에서, 커맨드 형태는 동일하게 유지되고, 블록 카운트 필드는 가상화 프로세스의 일부로 변경하지 않는다는 것을 주목하자.
이것은 가상 드라이브의 블록 어드레스 공간을 한 영역의 공간으로 변환하는 가상화 계층의 가장 기본적인 목적을 예시한다. 이들 두 어드레스 공간들 사이에는 간단한 선형 관계가 존재하기 때문에, 이러한 변환은 LUT형 구현으로 용이하게 수행되며, 추가 로직은 필요하지 않다. 가상화 계층의 애플리케이션 예는, 단일의 대규모 물리적인 드라이브로부터 다수의 소규모 가상 드라이브들을 생성하고; 다수의 소규모 가상 드라이브로부터 단일의 대규모 가상 드라이브들을 생성하고; 다수의 물리적인 드라이브의 빠른 영역으로부터 대규모의, 평균보다 빠른 가상 드라이브를 생성하는 것을 포함한다.
연결( Concatenation )( RAID -1)
가상화 계층의 영역 추상화의 확장은 연결의 개념, 즉, 하나보다 많은 영역의 선형 결합으로 이루어지는 가상 드라이브의 생성이다. 이러한 특징은 (상이하거나, 또는 동일한 드라이브로부터의) 둘 이상의 작은 영역들의 집합으로부터 단일의 대규모 가상 드라이브를 생성하는데 사용될 수 있다. 이러한 특징의 가장 간단한 용도는 그 집합 내에서 다수의 완전한 물리적인 드라이브들을 모든 물리적인 드라이브들이 결합된 용량을 갖는 단일 가상 드라이브에 결합하는 것이다.
도 11은 두 개의 영역을 다른 물리적인 드라이브들로부터 단일 가상 드라이브로 연결하는 일례를 제공한다. 본 실시예에서, 가상 드라이브(Vi)는 (가상 어드레스 공간에서 나타나는 순서로) Vi, 시작 블록 어드레스(0), 및 최대 유효 블록 어드레스(Mi, 결합된 영역들에서 1을 감산한 것, 즉, (CiO+Ci1-1)의 크기의 합과 같음)를 포함하는 영역들의 리스트를 포함하는 튜플(Li,0,Mi)에 의해 표현될 수 있다.
연결된 가상 드라이브를 생성할 수 있는 (영역들 그들 자신, 예컨대, 비중첩, 인접하는, 블록들의 그룹 등에 적용되는 것들과 다른) 영역들의 선택에는 어떠한 제한도 없다.
확장 계층( Enhancement Layer )
가상화 계층은 가상 드라이브들을 생성하는 것과 관련되며, 그러한 가상 드라이브들은 단지 크기만 다르고 그 외에는 이들이 구성되도록 하는 물리적인 드라이브들과 동일한 모든 특성을 공유한다. 가상화 계층에 의해 제공되는 기본적인 기능에 대한 구성에 대하여, 확장 계층은 (잠재적으로는 연결된) 영역의 집합들에 서 시작하며, 이들을 구성하는 물리적인 드라이브의 특성보다 향상된 특성을 갖는 가상 드라이브를 생성하기 위하여 작은 추가 기능의 집합을 영역 집합들에 적용한다.
확장 계층은 다수의 영역들을 다양한 방식으로 결합하여 기초적인 물리적 드라이브들의 성능과 신뢰성을 향상시킨다. 이들 특징들은 다른 다양한 RAID 기능을 제공하는 시스템의 방식과 유사한 많은 방식으로 이루어지지만, 확장 계층은 몇 가지 중요한 방식에서 다르다. 이러한 계층의 특징은 쉽고 싸게 단일의 저비용의 SSoC에 통합될 수 있고, 여전히 "와이어 속도"로(즉, HBA와 드라이브 사이의 직접 연결의 성능 레벨과 동등한 성능 레벨로) 동작할 수 있는 기능들로서 정의된다. 이것은 스틸바인 아키텍처의 이러한 일부분에 의해 제공된 메카니즘은 용이하고 값싸게 구현되고, 간단한 브루트 포스 기법을 이용하는 경향이 있음을 의미한다. 예를 들어, 패리티 RAID(예컨대, RAID 5) 대신에 간단한 미러링(RAID 1)이 사용되어, 상당량의 프로세싱 전원 및 메모리를 요구함이 없이, 간단한, 저비용의 구현을 가능하게 한다.
확장 계층의 주요 특징은 스트라이핑(RAID 0), 미러링(RAID 1), 및 이 둘의 결합(예컨대, RAID 10 및 RAID 01)을 포함한다. 이들 특징은 가상화 계층에 의해 정의된 것들의 상부에 계층을 이루며, 다음 서브섹션에서 더 상세히 설명된다.
스트라이핑 ( RAID 0)
만일 액세스 패턴이 (예컨대, 어떤 종류의 서버 또는 멀티 유저 시스템에서) 랜덤하다면, 동시에 이동하는 다수의 헤드의 이점을 획득하기 위하여, 스트라이프 는 개개의 판독/기록 트랜잭션이 매우 자주 스트라이프 경계를 가로지르지 않도록 충분히 커야 하지만, 동시적(concurrent) 탐색을 갖는 통계적인 이익을 얻지 못하게 너무 크지는 않아야 한다. 만일 어떤 종류의 장소가 있거나, 또는 많은 방대한 연속적인 판독이 있다면, 이것은 원하는 성능을 제공하지 못할 수 있지만, 멀티 유저 시스템상에서 전형적인 종류의 파일 시스템들의 랜덤 액세스로 인하여, 결국 매우 잘 작동하게 된다. 스트라이핑의 목적은 헤드들 및 더 많은 처리량, 즉, 조립질 병렬처리(coarse grainded parallism)를 배가시키는 것이다.
미러링 ( RAID 1)
아키텍처는 다수의 미러링된 드라이브를 허용하지만, 폴라리스 및 밀키웨이는 2-웨이 및 4-웨이 미러링 제한을 갖는다. 이 아키텍처는 만일 어떤 물리적인 커맨드가 실패하면(드라이브들이 불일치한 것처럼) 기록을 반복하고 가상 커맨드를 실패로 한다. 이 아키텍처는 또한 실패 예외사항을 처리하며, 로드/웨어(load/wear)를 공유하도록 판독을 교대로 한다. 아키텍처는 시작 LBA(중간 워드 비트)를 선택기로서 사용하고, 이것이 드라이브 판독을 시작하면 스위치하지 않는다. 아키텍처는 또한 만일 드라이브가 교환(swapped out)되었는지(미러 집합이 불능인 경우) 여부를 결정하기 위하여 드라이브 일련 번호를 추적한다.
몇몇 실시예에서, 모든 기록은 미러 집합의 모든 항(members)으로 진행한다. 판독은 그 집합의 단지 하나의 드라이브로부터 오지만, 섹터(sector)는 일반적으로 동일한 드라이브로부터 판독된다. 아키텍처는 그 집합에서 어떤 드라이브로부터 판독할지를 선택하기 위해 단일 결정론적 방식을 사용한다. 청크(chunk)는 우수한 순차적인 판독 성능(>100MB)을 보장하기 위하여 큰 경계상에 배치되며, 랜덤 판독으로 개선된 성능을 위해 탐색 오버래핑을 허용한다.
미러 세트가 불능인 것으로 결정될 때마다, 재구성(rebuild) 동작이 발생되어야 한다. 재구성은, 미러들이 동기화되기까지 아키텍처가 재구성을 계속 시도하도록 비휘발성 메모리에 표시된다. 디스크들의 동기화를 시도하는 동안에, 아키텍처는 "포인터"가 존재하는 곳, 즉, 복사 및 미복사 드라이브 영역들 사이에 분할 라인이 존재하는 곳을 추적한다. 그 포인터 뒤 블록으로(즉, 동기화가 된 영역으로)의 기록들은 복제되며, 포인터 앞쪽의 기록은 단지 동기화된 드라이브에 대해서만 행해질 수 있다.
몇몇 실시예에서 아키텍처는 비휘발성 메모리에 포인터를 유지하며, 만일 전원이 오프되면 재구성이 전원이 복구된 때 중단된 곳으로 픽업할 수 있도록 한다. 너무 고가여서, 포인터가 증가될(즉, 블록이 기록될) 때마다 비휘발성 메모리에 기록할 수 없을 때, 아키텍처는 단지 정규 점검 지점에서 비휘발성 메모리를 업데이트하여 재시작시 수행되는 반복 작업량을 줄인다.
스틸바인 구현은 적절한 공유(fair-share) 방식의 스케줄러를 이용하여 재구성 기능을 구현한다. 이것은 재구성 활동이, 호스트에 의해 사용된 것과는 다르게 이용가능한 자원을 모두 소비하고, 호스트가 모든 자원의 소비를 원할 때 재구성에 의해 사용된 자원량에 대한 보다 낮은 범위를 제공하도록 한다. 이것은 만일 호스트가 로드를 부과하지 않으면, 재구성 활동이 모든 자원을 획득할 것이며, 재구성이 가장 짧은 시간량으로 완료할 것임을 의미한다. 만일 호스트가 100% 로드를 부 과하면, 재구성 활동은, 재구성이 제한된 시간 기간 내에 완료하도록 최소량의 보장된 자원(예컨대, 20%)을 얻을 것이다. 이것은 호스트가 재구성 활동을 최소량 미만으로 줄인 다음 이 레벨에서 재구성 활동을 유지하도록 강제하고자 하는 시점까지 원하는 모든 사이클을 획득한다는 것을 의미한다.
매핑 계층
스틸바인 아키텍처에서의 다음 계층은 매핑 계층으로 알려져 있다. 매핑 계층은 호스트 FIS내 타겟 ID 필드와 이전 계층들에 의해 정의된 가상 드라이브들 사이에 간단한 레벨의 간접적 행동을 제공한다. 이 매핑은 LUT 기반 구현을 동작시키며, 여기서 매핑 테이블내의 "페이지(page)"의 선택은 입력되는 FIS ID 타겟 필드 내의 값에 기초하여 수행된다.
이 기능이 조금 더 관심있게 되는 경우는, 물리적인 드라이브들이 가상드라이브에 "동일성 매핑(identity-mapped)"되는 때이다. 이것은 가상화 계층이 가상 드라이브를 완전한 물리적인 드라이브로 이루어지는 영역으로 정의한다는 것을 의미하고, 이러한 가상 드라이브 상에서 행해진 확장은 없음을 의미한다. 이러한 동작 모드에서, 스틸바인 SSoC는 포트 멀티플라이어와 매우 유사하게 작용하며, 주어진 타겟 ID(즉, 가상 드라이브)에 대한 모든 커맨드를 원하는 물리적인 드라이브로 직접 간단히 전달한다. 그러나, 매핑 계층은 물리적인 드라이브 포트들의 재매핑을 허용하는데, 즉, 타겟 ID 0은 물리적인 드라이브 포트 0에 매핑할 필요가 없으나, 물리적인 드라이브 포트들 중 임의의 하나에 매핑될 수 있다. 이러한 특징은 간단한 포트 멀티플라이어에 의해 제공된 것보다 유연성을 더 증가시키며, (예컨 대, 레이아웃 또는 패키징 편리성의 이유로) 물리적인 포트의 재할당용으로 유용할 수 있다.
이것에 더하여, 매핑 계층은 다수의 "뷰(view)"의 생성을 허용한다. 즉, 주어진 물리적인 드라이브는 사용된 타겟 ID에 따라 다양한 다른 방식으로 액세스될 수 있다. 예를 들어, 브릭내 4개의 드라이브는 연결되어 호스트에 가상 드라이브 번호 0으로서 제공될 수 있다. 동시에, 스틸바인 SSoC는 1 내지 4의 타겟 ID 번호를 이용하여 드라이브들에 대한 스틸바인 SSoC가 개개의 (동일성 매핑된) 드라이브들과 같이 액세스되도록 구성될 수 있다. 이것은 가상 드라이브의 개개의 구성 드라이브들로 관리적으로 액세스하기 위해, 예컨대, 수리 또는 모니터링 활동을 지원하는데 유용할 수 있다.
변환 계층( Translation Layer )
스틸바인 아키텍처는 SATA 스토리지 링크 프로토콜에 기반하지만, 다수의 다른, 추상적인, 상위 계층의 스토리지 프로토콜(예컨대, SCSI, iSCSI, CIFS, NFS 등)이 존재한다. 스틸바인 아키텍처 내 최상부 계층은 변환 계층으로 알려져 있으며, 이것은 호스트 액세스 프로토콜이 네이티브 SATA 프로토콜로부터 가상으로 임의의 원하는 호스트 인터페이스 프로토콜로 변환될 수 있는 포인트이다. 더욱이, 이것은 스틸바인 아키텍처에 의해 제공된 기본적인 블록 지향 서비스가 파일 레벨 서비스로 변환될 수 있는 곳이다.
표준 SATA 특징
스틸바인 아키텍처 SSoC는 다양한 SATA 사양에 적합하게 정의되었다. 그러 나, (사양에 의해 설정된 제한들 내에 여전히 남아 있지만) 사양의 특징들이 사용되는 방식으로 상당한 자유가 취해진다. 예를 들어, ATA 사양은 소정의 디바이스에 의해 제공되는 기능 및 특징들을 공표하고 가능하게 하는 적절히 유연한 메카니즘을 제공하며, 스틸바인 컴포넌트는 사양의 이러한 양태를 이용한다. ATA 사양은 소정의 디바이스가 지원하는 (사전 정의된) 특징들을 공표하게 해주는 데이터 구조(즉, IDENT) 및 (확인 커맨드를 사용하는) 프로토콜을 정의한다. 더욱이, SATA는 소정의 디바이스에 의해 제공된 것들(예컨대, DMA 모드, 멀티 블록 동작에서 전송하기 위한 블록의 수 등) 중 특정 특징을 호스트가 선택하게(또는 가능하게) 해준다. 스틸바인 컴포넌트는 이 컴포넌트가 제공하는 각각의 가상 드라이브에 대해 적절한 IDENT 데이터 구조를 합성하고, 이 컴포넌트가 지원하는 특정 특징을 표시한다.
SATA는 PATA 드라이브를 위해 기록된 소프트웨어(디바이스 드라이버, OS, 및 애플리케이션 코드를 포함함)와 역방향 호환성이 있는 것으로 정의되었다. 호스트 소프트웨어와 PATA 및 SATA 하드웨어 사이의 주요 인터페이스는 태스크파일(Taskfile)로서 알려진 레지스터 집합이다. ATA 레지스터 집합(또는 태스크파일)은 원래 다음과 같이 정의된 8개의 단일-바이트 레지스터, 즉, 데이터, 에러/특징, 섹터 카운트, 섹터 번호, 실린더 로우(Cylinder Low), 실린더 하이, 디바이스 헤드, 및 상태/커맨드 레지스터들로 구성되었다.
원래, 드라이브들은 이들의 물리적인 속성들, 즉, 실린더, 헤드 및 섹터들에 의해 어드레싱된다. 그러나, 시간이 지남에 따라 이러한 형태의 어드레싱(C/H/S로 알려짐)은 논리적 블록 어드레스(LBA)로 알려진 확장되고, 간략화된, 선형 형태의 어드레싱에 의해 대체되었다. 역방향 호환성을 유지하기 위하여, 원래 레지스터 집합의 정의는 이와 같은 새로운 형태의 어드레싱용으로 사용되었다(즉, 섹터 번호 레지스터는 LBA[7:0]을 위해, 실린더 로우는 LBA[15:8]을 위해, 실린더 하이는 LBA[23:16]을 위해, 그리고 디바이스 헤드 레지스터의 일부는 LBA[27:24]를 위해 사용되었다). 이것은 28 비트 블록 어드레싱 방식을 위해 제공되었으며, 그 결과 (전형적인 512 바이트 블록 크기 이용시) 이용가능한 드라이브 크기에 의해 용이하게 얻을 수 있는 크기인 128 GB의 최대 어드레스 가능 범위가 된다. 이에 응답하여, ATA 표준은 "확장된 레지스터"를 생성하였다. LBA 및 섹터 카운트 레지스터들의 각각에 순차적으로 2 바이트가 기록되고, 그에 따라 이들을 8비트 레지스터만 처리하는 레거시 소프트웨어와 역방향 호환되는 방식으로 16 비트 값으로 확장할 수 있다. 이러한 확장은 48비트 LBA 공간을 허용하여, 기본적인 스토리지 기술에서의 임의의 종류의 해결책을 제외하고, 적어도 몇년 동안 지속해야 하는 크기인 128 PB의 최대 액세스가능한 드라이브 크기가 된다.
HBA와 드라이브 간의 ATA 트랜잭션은 데이터의 전송을 포함하지 않는 커맨드(즉, 비데이터 커맨드) 및 데이터 전송 커맨드를 포함한다. 데이터 이동을 포함하는 명령어의 경우, ATA 사양은 다수의 다른 데이터 전송 모드들을 정의하며, 각 모드는 연속적으로 상위 수준의 성능을 제공한다. 두 가지 주요 데이터 전송 모드들은 프로그램 I/O(PIO) 및 직접 메모리 액세스(DMA)로 알려져 있다. ATA 레지스터 집합은 또한 (함께 커맨드 블록이라 불리는 전술한 8개의 레지스터에 추가하여) 제어 블록으로 알려진 한 쌍의 레지스터를 포함한다. 제어 블록 레지스터는 교대의 상태/디바이스 제어 레지스터 및 드라이브 액세스 레지스터를 포함한다.
SATA 사양
SATA I 사양은 1.5 Gbps SATA PHY, 링크, 전송 및 프로토콜의 모든 기본적인 특징을 포함하는 SATA의 제1 세대를 정의한다. SATA II 사양은 모든 계층의 사양에서 추가적인 특징과 성능을 제공하는 개선사항을 SATA I 사양에 제공한다. PHY 계층에서, 이러한 새로운 사양은 백플레인(backplane) 상호접속 및 비동기 신호 복구를 위한 가이드라인은 물론 호스트 및 디바이스가 가장 높은 공통 링크 속도 설정에 도달하게 해주는 더 높은 속도(즉, 3 Gbps)의 링크 속도 및 자동 협상 프로세스를 정의하는데 필요한 정보를 제공한다.
프로토콜 계층에서, 새로운 커맨드 큐잉 특징을 지원하는 디바이스 커맨드 프로토콜에 대한 변경이 이루어진다. 네이티브 커맨드 큐잉(NCQ)은 다수의 미해결 커맨드들을 주어진 디바이스에서 발행하게 해주고, 이들 커맨드가 발행된 것과는 다른 순서로 이들 커맨드가 리턴되도록 해주는 새로운 프로토콜의 이름을 나타낸다. NCQ 지원은, 진행중인 많은 커맨드들이 존재할 때 비용이 많이 드는 커맨드 당 인터럽트를 갖는 대신에, 인터럽트를 수집함으로써 시스템 성능을 개선한다. 또한, 호스트 컨트롤러에서 다수의 컨텍스트는 드라이버가 원하면 언제든지 경쟁없는(race-free) 상태로 리턴하게 하고, 또한 성능을 향상시킨다.
SATA II 사양에서 또 다른 추가는 포트 멀티플라이어(PM) 성능으로 알려진 특징을 제공한다. 이 특징은 단일 SATA 호스트 포트가 15개까지의 드라이브에 연 결되게 해준다. 이 사양은 호스트 및 드라이브들 둘다에 투명한 방식으로 단일 호스트 포트를 다수의 드라이브 포트로 팬 아웃(fans-out)하는 간단한, 단일 레벨의, 허브형 디바이스의 생성을 허용한다. PM 디바이스들의 캐스케이딩은 전술한 사양에 의해 명백하게 제한된다.
PM 사양은 FIS 헤더에서 4개의 미사용 비트들을 사용하여 목적지 드라이브 포트들에 대한 어드레싱을 제공한다. 이들 비트들은 타겟 포트 필드로 알려진 하나의 필드를 형성하며, 이 필드는 사용을 위해 원하는 목적지(드라이브) 포트의 선택을 위해 멀티플렉싱 디바이스에 의해 사용된다. 정상 동작에서, HBA는 어드레스를 각각의 FIS 헤더에 부가고, PM에 전송한다. 호스트로부터 FIS를 수신하면, PM 디바이스는 FIS 헤더 내 어드레스 필드를 조사하고, 타겟 포트 필드를 클리어시키며, FIS를 선택된 목적지 포트에 전송한다. 유사하게, 드라이브 포트로부터 입력되는 FIS는 이들의 입력 포트 어드레스를 FIS의 헤더에 포함하도록 변경되며, FIS의 CRC는 헤더에서의 그 변경들을 반영하도록 업데이트되고, FIS는 헤더 포트에 전송된다. 만일 입력 FIS가 그의 CRC 체크를 실패하면, PM 디바이스는 불량 CRC를 전파해야 하고, 우량(재생된) CRC를 FIS에 기록함으로써 이것을 마스크하지 않는다.
폴라리스 기반 스토리지 서브시스템
구현될 스틸바인 계열의 첫 번째인, 폴라리스는 아키텍처의 정의된 기능의 부분집합을 제공한다. 밀키웨이는 완전한 스틸바인 아키텍처의 최초의 완전한 구현이다. 폴라리스는 단일 호스트, 5개의 드라이브, 독립형 제품으로서 확립되는 반면, 밀키웨이는 서브시스템들을 다수의 호스트 포트 및 다수의 드라이브 포트들로 구성할 수 있게 한다. 관심 대상이 되는 광범위한 스토리지 서브시스템은 폴라리스 기반 하드웨어로 구성될 수 있다. 다음의 섹션은 폴라리스 및 그와 관련된 마이크로코드의 (향상된) 포트 멀티플라이어 기능을 이용하여 하드웨어 및 스토리지 어레이 컨트롤러를 구성하는 소프트웨어 둘다를 조사한다.
폴라리스 SSoC의 주요 외부 인터페이스들은 SATA II 호스트 포트 및 5개의 SATA II 드라이브 포트들로 구성된다. 부가적으로, 폴라리스 SSoC는 LED 드라이버, I2C 버스 및 몇 개의 GPIO 라인들을 포함하는 다양한 소수의 I/O 인터페이스를 갖는다. 이들 외부 인터페이스들은 기본적인 5개 드라이브 대 1개 호스트, SATA 멀티플렉서 기능은 물론, 폴라리스를 위해 정의된 모든 "향상된" 기능을 지원하는데 필수적이고 충분하다.
내부적으로, 하드웨어는 임베디드 프로세서, 데이터 이동 엔진, SATA 포트의 각각에 대한 자원(즉, PHY, 링크 및 전송 로직, 및 링크용 FIFO 버퍼로서 작용하는 레지스터 집합), 및 다양한 지원 기능을 위한 로직으로 구성된다. 포트 당 FIFO 버퍼들의 각각은 일단에서 링크에 연결되고, 타단에서 공통 내부 버스에 연결된다. 데이터 이동 기능 유닛은 정의된 FIFO 버퍼 집합들 사이에서 데이터를 이동시키는데 관련될 수 있다. 이 유닛은 드라이브 대 호스트 및 호스트 대 드라이브 전송에 더하여 드라이브 대 드라이브 전송이 발생하도록 해준다.
내부 자원(예컨대, 포트 당 로직, FIFO, 데이터 이동기(data-mover), 및 다 른 VO 인터페이스 로직)은 그 특정 컨트롤 레지스터 어드레스 공간(시스템 컨트롤 프로세서(SCP) 레지스터 공간 내에서 정의된 16개 레지스터의 16개 뱅크(banks)로 구성됨)을 통해 수행된 부하(loads) 및 스토리지 장치를 갖는 임베디드 프로세서에 의해 액세스된다. 이들 레지스터 중 일부(예컨대, SATA PHY, EEPROM 기록, 소프트 리셋 등을 컨트롤하는 것들)는 우발적인 액세스에 대해 보호된다.
폴라리스 SSoC는 마이크로코드, 구성 상태, 및 정책 관련 상태를 포함하도록 외부 I2C 부착 EEPROM을 이용한다. 마이크로코드는 전원이 업 될때 자동적으로 피코 인스트럭션 메모리로 판독되고, 이 코드는 간단한 하드웨어 체크섬(checksum) 메카니즘을 이용하여 유효화된다.
폴라리스 하드웨어는 피코 프로세서를 리셋시키는 소프트 리셋 레지스터를 구비하지만, 마이크로코드 리로드를 강요하지 않는다. COM-RESET 대역외 신호가 호스트 포트 상에서 발생하면, 마스크할 수 없는 인터럽트(Non-Maskable Interrupt: NMI)가 발생되어, (마이크로코드 리로드를 강요하는) 하드 리셋을 야기한다. 마이크로코드 로드 및 검증은 1초 미만의 실시간으로 완료하도록 설계된다.
시스템 컨트롤 프로세서( SCP )
폴라리스 설계에 있어서, 그 설계의 데이터 면 부분을 하드웨어로 구현하고, 피코로 알려진 시스템 컨트롤 프로세서(SCP) 상에서 실행하는 마이크로코드를 통해 단지 상위 수준의, 제어 면 기능을 수행하려는 시도가 있었다. 각 링크의 경우, 완전한 SATA 물리적인, 링크, 및 전송 계층들은 하드웨어로 구현된다. 대부분의 소수의 인터페이스 기능들(예컨대, I2C, EEPROM, 및 LED)은 어느 정도의 하드웨어 지원을 받으며, 많은 벌크 데이터의 이동은 전용 하드웨어 기능 유닛에 의해 수행된다. 피코의 마이크로코드는 초기화, 가상화, 미러링, 스트라이핑, 포트들 간의 FIS의 이동, 예외 상황 처리, 인클로저 관리 기능 등을 포함하여, SSoC에 의해 제공된 대부분의 모든 기능을 구현할 책임이 있다.
SSoC의 벌크의 기능을 구현함에 있어서, 피코 프로세서의 성능은 폴라리스 기반 시스템의 전체 성능에 영향을 미친다. 피코는 이중 발행(dual-issue), RISC형 인스트럭션 집합을 가지며, 32 레지스터, 7 단 파이프라인, 및 하바드 메모리 아키텍처를 갖는 간단한 임베디드 32 비트 제어 프로세서이다. 피코 I은 카운터 타이머 및 외부 인터럽트를 지원하지만, 곱하기 또는 나누기 동작을 위한 하드웨어 지원을 제공하지 않는다. 폴라리스에서 사용된 피코 I 프로세서는 플로팅 포인트 지원, MMU, 캐시를 갖지 않으며, 부적절한(out-of-order) 실행을 하지 않는다. 이것은 150 MHz에서 동작하며, 인스트럭션 메모리용으로 64 KB의 SRAM 및 데이터 메모리용으로 16KB의 SRAM을 구비한다.
이하에서 설명된 하드웨어 자원에 추가하여, SCP에 대한 기본적인 지원을 제공하는 레지스터 뱅크가 추가로 존재한다. 이들은 총칭하여 CPU 레지스터로 알려져 있으며, 프로세서 상태(PS), 인터럽트 마스크, 인터럽트 보류(Pending), 예외 프로그램 카운터 및 카운터/타이머 레지스터들을 포함한다.
Gnu 컴파일러 슈트(suite)에 기반한 완전한 툴 체인은 피코 용도로 개발되었 다. 피코 툴 체인은 Gnu 바이너리 유틸리티(bintools) 뿐만 아니라, 컴파일러(gcc), 어셈블러(gas), 디버거(gdb)를 포함한다.
스플릿 - 머지 엔진( Split - Merge Engine : SME )
내부 데이터 이동기(mover) 기능(스플릿 머지 엔진(SME)으로서 알려짐)은 본질적으로 SCP 레지스터 어드레스 공간(즉, 레지스터, FIFO, 및 메모리들 사이) 내 위치들 사이에서 이중 워드를 이동시키는 정보처리기능을 갖는(intelligent) 온칩 DMA 컨트롤러이다. SME는 SATA 포트들 사이에서의 모든 데이터 이동 활동에 책임이 있고, 또한 스트라이핑 및 미러링 둘다를 포함하는 드라이브 가상화 기능들을 지원하여 복잡한 분산 수집(scatter-gather) 동작을 수행할 수 있다.
SME는 또한 드라이브 대 드라이브(Drive-to-Drive) 복사를 지원한다. 이것은 미러 집합 재구성 동작, 백업 등과 같은 동작 수행시 시스템 레벨의 성능을 제공한다. 이러한 특징은 폴라리스 호스트 링크 상의 로드를 줄일 뿐만 아니라, 호스트에 대한 이들 대역폭 집약형(intensive) 데이터 복사 동작의 영향을 줄일 수 있다. 이것은 상당수의 프로세싱 사이클, 메모리 및 I/O 대역폭에 면에서 이들 복사 동작들이 호스트에 부담을 주지 않으며, 폴라리스 호스트 링크를 소모시키지 않는다는 것을 의미한다.
호스트 SATA 포트
호스트 포트는 호스트와 폴라리스 간에 SATA 접속부의 타겟 단부를 구현한다. 이 호스트 포트와 관련된 자원은 SATA 프로토콜의 PHY, 링크, 및 전송 계층들, 접속부를 제어하는데 사용된 컨트롤 및 상태 레지스터들의 집합, 및 FIS 헤더 들의 입력 및 출력을 위한 버퍼로서 작용하는 레지스터들의 집합을 구현하는데 필요한 로직을 포함한다.
호스트 포트의 로직은 SATA 링크 프리미티브(primitives)의 링크 레벨 핸드쉐이킹(handshaking) 및 교환은 물론 모든 필요한 전원 업 및 저레벨의 동기화 활동을 처리한다. SATA 프로토콜 프로세싱의 몇몇 양태(예컨대, ALIGN, CONT, SOF/EOF, X-RDY, HOLD, R_IP, WTRM 등의 프리미티브들의 발생)는 자동적으로 처리된다. 그러나, 그것은 링크 상에 어떤 프리미티브의 수신에 의해 발생된 인터럽트들을 처리하고, 다른 링크 프리미티브(예컨대, R-OK, R-ERR, P-SYNC 등)를 발생시키기 위한 폴라리스 마이크로코드까지이다. 이것은 호스트 포트의 제어 및 상태 레지스터들의 조작을 통해 수행된다. 호스트 포트 로직은 입력 FIS에 대한 CRC를 확인하고, 제어 및 상태 레지스터에서 그 확인의 결과를 표시한다. 유사하게, 이 로직은 출력 FIS에 대한 CRC를 발생한다. 출력 FIS에 대한 의도적인 불량 CRC의 발생을 허용하도록 특별한 조정이 이루어진다. 부분 로직은 FIS 타겟 ID 필드를 통해 입력 FIS의 약간 저레벨인 디멀티플렉싱을 수행한다. 포트 로직은 SEMB 로직에 어드레싱된(즉, PM N+1, 여기서, N은 소정의 값을 호스트 포트 컨트롤 및 상태 레지스터들에 설정함으로써 정의됨) FIS 뿐만 아니라, 어드레스 15(즉, PM15)로 향하는 FIS를 확인하고, 각각의 경우에 대해 적절한 인터럽트를 발생한다. 인터럽트들은 다른 이벤트들이 호스트 포트에서 일어나면 발생되고, 모든 인터럽트들은 적절한 포트 컨트롤 레지스터에 기록함으로써 클리어될 수 있다.
입력 FIS의 헤더는 자동적으로 버퍼 레지스터에 배치되는 반면, FIS의 바디 (또는 페이로드)는 SME를 통해 타겟 디바이스에 직접 전송된다. 출력 FIS의 헤더를 버퍼 레지스터에 기록하는 동작은, FIS를 호스트에 다시 전송하도록 포트를 트리거한다. 포트의 컨트롤 및 상태 레지스터에서와 같이, 버퍼 레지스터들은 SCP 레지스터 어드레스 공간에 존재하고, 두배의 워드(즉, 32 비트) 값으로서 판독 및 기록된다.
드라이브 SATA 포트
폴라리스상의 5개의 드라이브 포트는 폴라리스 및 그의 드라이브 간에 SATA 접속부의 개시자(initiator) 단부로서 역할을 한다. 모든 드라이브 포트들은 거의 서로 동일하며, 또한 기능 및 구현면에서 호스트 포트와 거의 동일하다. 드라이브 포트들은 이들의 제어 및 상태 레지스터들 내에 몇 개의 추가 필드들, 예를 들어, 각 드라이브 포트에 연결된 FIOF와 관련된 필드들뿐만 아니라, 포트상에서 바이패스 및 컷-스루(cut-through) 동작이 가능하도록 하는 비트, 포트의 SStatus 새도우 레지스터에서 X 비트를 처리하는 비트를 포함함으로써 호스트 포트와는 다르다.
호스트 포트의 제어 및 상태 레지스터 필드의 합집합을 갖는 것에 부가하여, 각각의 드라이브 포트는 FIFO로서 관리되는 SRAM의 풀(full) FIS 만큼(즉, 8KB)을 갖는다. 이 SRAM은 포트의 드라이브들의 각각으로 그리고 포트의 드라이브들의 각각으로부터 이동하는 FIS를 버퍼링(buffer)하는데 사용된다. 드라이브 포트의 FIFO는 SME의 제어하에 FIS 전송을 위한 출발지(source) 또는 목적지(destination)로서 역할을 한다. 이러한 설계는 FIS가 SME 엔진에 의해 드라이브 포트 FIFO 내로, 그리고 드라이브 포트 FIFO로부터 전송될 것으로 예상되지만, SCP가 FIFO를 직 접 판독 및 (DWORD 경계에서) 기록하게 해준다.
특별한 하드웨어 특징들은 FIS의 "컷-스루" 라우팅의 구현을 지원하도록 폴라리스 내에 포함되어, 모든 바이트들이 수신되기 전에 FIS를 목적지 포트로 전송하게 해준다. 이러한 특징을 지원하는 것은 피크(peak) 성능 레벨을 달성하는 것을 돕는데, 그렇지 않으면, 디바이스가 "저장 및 전송(store-and-forward)" 형태의 동작(상당한 지연 시간 불이익을 발생하지만, 디바이스의 처리량 지향 성능에 무시할만한 영향을 미칠 수 있음)을 수행함에 따라, 각 트랜잭션에 상당한 지연 시간이 추가될 것이다. 호스트 포트의 로직 및 드라이브 포트의 로직 내의 특별한 특징들은 각각의 포트의 제어 레지스터들을 조작함으로써 이러한 특징이 가능하도록 해준다.
또한, 제어 레지스터는 물리적인 레벨의 SATA 인터페이스 로직의 구성을 허용하는 호스트 포트 및 드라이브 포트들 둘다에 존재한다.
인클로저 관리 지원 기능
폴라리스 SSoC는 표준 스토리지 인클로저 프로세서(SEP)와 인터페이스하기 위한 표준 SATA 메카니즘을 지원한다. 전술한 바와 같이, SATA 스토리지 인클로저 관리 브리지(SEMB) 특징은 폴라리스 컴포넌트가 SAF-TE 또는 SES 프로토콜를 통해 HBA와 SEP 사이의 브리지로서 작용하게 해준다.
SEP는 폭넓은 범위의 비용, 크기, 및 복잡성을 연결할 수 있지만, 일반적으로, SEP는 폴라리스 컴포넌트보다 더 비용이 들고 더 큰 경향이 있으며, 스틸바인 SSoC보다 상당히 더 큰 호스트 소프트웨어를 포함한다. 간단한 인클로저 관리 서 비스들에 필요한 기본적인 특징들을 가능하게 하기 위하여, 스틸바인 컴포넌트와 조화를 이루는 비용 및 복잡성 레벨에서 폴라리스는 더 간단하고, 저 비용의, 환경 모니터링 칩(예컨대, 내셔널 반도체 LM87)의 사용을 지원할 수 있다. 저비용의 EM 컴포넌트 지원은 마이크로코드로 구현되고, 표준 SEMB 프로토콜의 SIMG 독점적 확장에 의해 제공된다.
LM87은 상태 및 집합 값들을 제공하도록 판독/기록될 수 있는 한 묶음의 8 비트 폭의 레지스터를 갖는다. LM87 트랜잭션은 실제로 간단하다. 즉, 패킷(i2c addr, reg addr)을 판독하고, 이에 응답하여 데이터 바이트를 얻고, 패킷(i2c addr, reg addr, data byte)을 기록한다.
SEMB의 기본적인 기능은 간단한 I2C 버스 인터페이스에 제공될 수 있는 반면, 폴라리스는 SEMB 기능용 전용 하드웨어 지원을 제공한다. 마스터/슬레이브 가능 IC 버스에 더하여, DMA 유닛과 같은 기능을 하고, EM IC 버스 상에서 SEMB 메모리 및 디바이스들 간에 데이터 블록을 전송하기 위해 사용될 수 있는 메모리 및 로직의 (1 KB)의 전용 블록이 존재한다. EM I2C 버스는 두 개의 다른 I2C 타겟 어드레스로 프로그래밍될 수 있다.
SEMB I2C 트랜잭션은 잘 정의되고 고도로 정형화되어 있으므로, 폴라리스 SEMB 로직은 이들 트랜잭션용 하드웨어 지원을 제공한다. 특히, SEMB 로직은 자동적으로 (6 또는 7 바이트) SEMB 패킷 헤더를 수신하고, 인터럽트를 폴라리스 마이크로코드에 발생하여 입력 패킷의 배치를 처리한다.
SEMB 로직은 각 패킷의 끝에 체크섬을 자동적으로 추가하고, (각 패킷의 끝에서 수신된 값에 대하여 마이크로코드에 의해 검증될) 입력 패킷에 대한 체크섬을 발생하도록 설정될 수 있다.
SEMB 로직은 SEMB 메모리와 EM I2C 버스 사이에서 데이터를 이동시키며, SME는 호스트와 SEMB 메모리 사이에서 데이터를 (FIFO와 호스트 사이에서 데이터 FIS의 이동시 수행되는 것과 같은 방식으로) 이동시키는데 사용된다.
SEMB 로직은 부분적으로 입력 SEP 패킷 헤더를 분석 및 분해할 수 있고(sepStat 필드, CRC 등을 추출함), 헤더만 있는 패킷을(즉. 데이터 없음) 가질 수 있고, 또는 헤더 및 데이터 패킷을 가질 수 있다.
SEMB 로직은 EM I2C 상에서 Tx 데이터 속도를 N개의 선택중 하나로 설정할 수 있다. 마이크로코드에 의해 설정될 수 있는 SEMB 로직용의 별도의 리셋 신호가 있다. 마이크로코드는, 만일 EM I2C 상에 SEMB가 존재하는지 여부를 알도록 리셋시에 프로브 패킷을 전송하고, PM N+1 포트용 서명을 리턴하도록 호스트의 요청시 적절히 응답할 수 있도록 전술한 상황을 주목한다.
SEMB 메모리는 이중 워드 액세스로 SCP에 의해 판독/기록될 수 있다. SEMB 로직은 타이머를 포함하여 시간 종료(timeout) 인터럽트를 허용함으로써, 진행중인 EM 12C 트랜잭션이 검출되도록 할 수 있다.
LED 컨트롤 로직
스틸바인 컴포넌트의 다른 특징은 LED를 통해 물리적인 드라이브 상태를 결 정하는 능력이다. 다른 스토리지 애플리케이션은 다른 형태의 외부 표시를 요구하므로, 스틸바인 컴포넌트는 다른 LED 동작들을 지원해야 한다. 예를 들어, 엔터프라이즈 제품은 실패를 표시하는 것과는 다르게 부여되는 어떠한 LED 표시도 요구하지 않는 반면에, 소비자 제품은 드라이브 활동 및 전원 표시 둘다를 요구한다.
폴라리스는 드라이브 활동의 자동 표시를 허용할 뿐만 아니라, LED 표시를 깜박거리게 하는 하드웨어 지원을 받는다. 마이크로코드에서 이들 기능을 수행하는 오버헤드가 금지되므로, 이들 기능 둘다의 용도로 하드웨어를 지원하는 것이 중요하다. 폴라리스는 드라이브 포트 당 두 개의 LED, 호스트 포트용으로 두 개, 및 4 시스템 LED를 갖는다. 포트 당 LED 쌍은 LED의 상태에 의해 다른 상태들을 나타내는 8개의 다른 모드들 중 하나로 동작할 수 있다. 각각의 LED는 온, 오프로 설정되거나, 또는 깜박이도록 만들어질 수 있다. 이들은 이들이 엔터프라이즈 모드인지 여부에 따라 다르게 작동한다. 포트 당 LED 쌍 중에서 하나는 활동에 응답하여 토글(수십 밀리초 동안 온 또는 오프)하도록 프로그래밍될 수 있다. 자동 블링크 모드는 선택된 LED가 약 1 초 주기로 토글 상태로 되도록 한다.
시스템 LED는 마이크로코드에 의해 직접 제어되며, (그들의 턴 온/오프를 벗어나는) 어떠한 하드웨어 지원도 받지 않는다.
폴라리스에서, 실행 마이크로코드, 가상화 상태, 및 그 디바이스에 대한 다른 구성 정보를 모두 저장하는데 사용되는 외부 EEPROM에 액세스하기 위한 지원이 또한 제공된다.
폴라리스 소프트웨어 개요
도 12에 예시된 바와 같이, 폴라리스 기반 스토리지 서브시스템의 소프트웨어 컴포넌트는 3개의 다른 형태의 소프트웨어로 구성된다. 이 3개의 부분은 3개의 다른 위치, 즉, SSoC 상에, SSoC에 국부적인 보드 상에, 및 호스트 상에 존재한다. 폴라리스 SSoC에 기반한 다른 스토리지 제품들은 원하는 기능의 전달을 위해 요구되는 소프트웨어의 형태 및 양의 상세에서만 다르다. 다른 양의 자원들은 이들이 다소 다르게 구현된 이들 다른 형태의 소프트웨어 요구들 각각에 대해 이용가능하다. 소프트웨어 공학에서의 동일한 최상의 관습(the same best practices)은 문제의 소프트웨어의 형태에 관계없이 이러한 소프트웨어의 개발에 적용될 것이다.
폴라리스 기반 스토리지 서브시스템에 대한 이들 3개의 다른 카테고리의 소프트웨어 각각이 호스트 소프트웨어로부터 시작하여, 국부적인 컨트롤러 상의 소프트웨어로 이동하고, 적절한 폴라리스 SSoC 상의 소프트웨어로 종료하는 다음의 서브섹션에서 (고수준으로) 설명된다. 이에 더하여, 스토리지 서브시스템 내 소프트웨어 간의 다양한 주요 인터페이스가 또한 설명된다. 이것은 정책 모듈들을 정의하고 구현하며, 상기 서브시스템의 동작을 모니터링하고, 폴라리스 SSoC 내에 마이크로코드를 업데이트하기 위한 인터페이스를 포함한다.
호스트 소프트웨어
호스트 측에서 실행하는 소프트웨어는 제한이 거의 없는 표준의, 자원이 풍부한 호스트 환경에서 실행하는 시스템 레벨 소프트웨어 및 응용 레벨 소프트웨어로 구성된다. 주어진 폴라리스 기반 스토리지 제품에 대해 요구되는 시스템 레벨 소프트웨어의 양을 최소화하는 것이 바람직하다. 이것은 각각의 새로운 OS 및 플 랫폼 릴리스용 드라이버의 연속적인 포팅(porting) 및 호환성 테스팅과 관련된 높은 비용 때문이다. 몇몇 시스템 소프트웨어는, 스토리지 서브시스템의 특징을 기존의 시스템 관리 콘솔에 매핑하는 정책 또는 어댑터(adaptors)와 같이 사용자 상호 작용없이 실행하는 데몬의 형태로 전달될 수 있다.
디바이스 드라이버
최저 레벨에서, 디바이스 드라이버에서 구현된 기능이 존재한다. 이것은 스토리지 서브시스템으로부터의 관심 이벤트의 비동기 통지가 발생된 결과로서 (ioctls에 대한) 콜백을 발생하고, 폴라리스 하드웨어의 하위 레벨 특징으로의 (ioctl형) 액세스를 허용하는 것과 같은 다양한 하위 레벨 특징을 포함할 수 있다. 스틸라인 아키텍처의 목표 중 하나는 호스트에 투명한 기능의 추가를 허용하는 것이다. 이것은 기존의 (레거시) 디바이스 드라이버들로 적절하게 동작하는 폴라리스 하드웨어로 스토리지 서브시스템을 구성하는 것이 가능해야 함을 의미한다. 주어진 서브시스템의 소정의 특징들은 특별한 디바이스 드라이버를 통해서만 액세스가 가능할 수 있지만, 표준의, 릴리스된 디바이스 드라이버를 통해 서브시스템의 가치(value)를 많이 유도하는 것이 바람직하다.
애플리케이션
최상부 계층에는 사용자와 상호작용하는 CLI 및 GUI와 같은 사용자 상호작용 애플리케이션들이 있다. CLI는 스크립팅(scripting) 또는 다른 관리 기능들이 가능하게 할 수 있다. GUI는 추상화를 통해 동작을 간단하게 할 수 있다.
외부 인터페이스 API /라이브러리
전술한 아키텍처는 시스템의 특징들을 액세스하기 위한 외부 인터페이스 라이브러리를 제공할 수 있다. 이러한 방법으로, 서브시스템과 통신하는 방법의 세부 사항이 요약되었고, 서브시스템의 다른 컴포넌트와는 독립적으로 변경이 이루어질 수 있다. (디바이스 드라이버와 다른) 모든 호스트 SW는 특징들로의 균일한 액세스를 보장하고, 이동성(portability)을 증가시키는 공통 라이브러리를 사용할 수 있다.
외부 컨트롤러 펌웨어
몇 가지 다른 종류의 임베디드 컨트롤러는 인클로저 관리, 외부 인터페이스의 처리, 및 외부 정책 구현 용도의 프로세스들을 포함하는 폴라리스 기반 스토리지 서브시스템에서 발견된다. 기능들이 개개의 프로세서들에 의해 처리되거나, 또는 공통 프로세서 상에서 함께 결집될 수 있지만, 이들 프로세서들에 대해 실행하는 소프트웨어의 형태는 사실상 유사하고 본 명세서에서는 펌웨어로서 언급된다. 펌웨어는 호스트 소프트웨어 및 마이크로코드 둘다와 공통적인 특성을 갖는다. 그러나, 전형적으로, 펌웨어 실행 환경은 전형적인 호스트 환경보다는 그와 관련된 자원을 더 적게 갖지만, 폴라리스 마이크로코드에 이용가능한 것보다는 훨씬 더 많은 자원을 갖는다. 실행 시간 환경은 마이크로코드 또는 상용 RTOS, 또는 심지어 유닉스 파생물(derivative)(knoppix, eCos 등) 용도로 사용된 것과 동일할 수 있다. 인터페이스 패키지는 어떤 종류의 외부 인터페이스가 스토리지 서브시스템에 제공될 것인지에 따라서, 원하는 외부 인터페이스(예컨대, 웹 서버, 프로토콜, 링크 인터페이스 등), HTTP, TCP/IP, USB 등을 제공하기 위한 펌웨어 모듈들이다. 예를 들어, 폴라리스는 구성, 모니터링, 또는 업데이트를 위해 CLI를 실행하기 위한 시리얼 또는 USB 포트를 제공하거나, 또는 웹 브라우저로부터 컨트롤/모니터링을 허용하도록 웹 서버를 또한 실행하고 이더넷을 접속할 수 있다.
SSoC 마이크로코드
폴라리스 SSoC 상에서 실행하는 코드는 일반적인 마이크로코드로 알려져 있으며, 공통 서비스 부분, 애플리케이션 특정적 부분, 및 (선택적으로) 임베디드 정책 모듈을 포함하는 몇 가지 주요 부분으로 구성된다. 다른 특징 집합들이 다른 제품 용도로 정의되기 때문에, 마이크로코드에 대한 변경들은 전술한 정책 모듈로 제한되어야 한다.
비접촉(no-touch) 어플라이언스로부터 하이터치 관리 시스템까지의 범위에 걸쳐 광범위한 다른 용도의 모델이 있다. 그 제품이 사용된 모드에 기초하여, 추가 소프트웨어가 없는 것에서부터 광대한 양의 소프트웨어까지 어디서든지 요구할 수 있다.
결론
전술한 설명으로부터, 진보된 스토리지 시스템의 특정 실시예들이 본 명세서에서 예시의 목적으로 설명되었으나, 본 발명의 사상 및 범주로부터 벗어남이 없이 다양한 변형들이 이루어질 수 있다는 것을 알 수 있을 것이다. 예를 들어, 비록 스토리지 디바이스들은 일반적으로 앞에서 디스크 드라이브의 관점에서 언급되었지만, 디스크에 기반하지 않은, 예컨대, 플래시 디바이스, 테이프 드라이브, 및 다른 스토리지 기술들과 같은 다양한 다른 스토리지 디바이스들이 사용될 수 있다. 유 사하게, 비록 스토리지 인터페이스들은 SATA 인터페이스들의 관점에서 설명되었지만, 다른 스토리지 디바이스들이 진보된 스토리지 시스템, 예컨대, PATA(Parallel Advanced Technology Attachment), 범용 직렬 버스(USB), 펌웨어, 및 광채널(Fibre Channel)과 함께 또한 사용될 수 있다. 진보된 스토리지 시스템은 또한 하드웨어 또는 소프트웨어 중 하나로, 이를 테면, 커스텀 ASIC 상에, 또는 일반적인 컴퓨터 시스템을 사용하여 구현될 수 있다. 따라서, 본 발명은 첨부된 특허청구범위에 의한 것을 제외하고는 제한되지 않는다.

Claims (33)

  1. 물리적인 드라이브들을 하나 이상의 가상 드라이브로서 제공하는 시스템으로서,
    가상 커맨드를 수신하도록 구성된 호스트 인터페이스 컴포넌트와,
    상기 가상 커맨드를 하나 이상의 매핑된 커맨드로 매핑하도록 구성된 매핑 컴포넌트와,
    상기 매핑된 커맨드들을 하나 이상의 디바이스로 전송하도록 구성된 디바이스 인터페이스 컴포넌트
    를 포함하는 가상 드라이브 제공 시스템.
  2. 제1항에 있어서,
    상기 매핑 컴포넌트는 상기 시스템이 제조되는 때에 구성되는 가상 드라이브 제공 시스템.
  3. 제1항에 있어서,
    상기 매핑 컴포넌트 구성은 하드웨어 핀 집합의 접속부들을 변경함으로써 변경될 수 있는 가상 드라이브 제공 시스템.
  4. 제1항에 있어서,
    상기 매핑 컴포넌트 구성은 정책 테이블을 변경함으로써 변경될 수 있는 가상 드라이브 제공 시스템.
  5. 제1항에 있어서,
    상기 매핑 컴포넌트 구성은 새로운 디바이스를 상기 디바이스 인터페이스 컴포넌트에 연결하는 것에 응답하여 자동적으로 변경되는 가상 드라이브 제공 시스템.
  6. 제1항에 있어서,
    상기 디바이스 인터페이스 컴포넌트는 스토리지 디바이스들이 케스케이드식(cascaded)으로 연결될 수 있도록 상기 시스템의 제2 인스턴스의 상기 호스트 인터페이스 컴포넌트에 연결되는 가상 드라이브 제공 시스템.
  7. 제6항에 있어서,
    호스트 컴퓨터 시스템에 액세스가능한 상기 캐스케이드식 스토리지 디바이스들은 상기 호스트 컴퓨터 시스템에 의해 자체적으로 지원되는 스토리지 디바이스들의 수를 초과하는 가상 드라이브 제공 시스템.
  8. 제6항에 있어서,
    상기 디바이스 인터페이스 컴포넌트는 케스케이드식 물리적인 디바이스를 액 세스하기 위한 경로를 자동적으로 선택하는 가상 드라이브 제공 시스템.
  9. 제1항에 있어서,
    상기 호스트 인터페이스 컴포넌트는 상기 매핑된 커맨드들에 대한 응답들이 수신되기 전에 가상 커맨드들에 대한 응답들을 전송하는 가상 드라이브 제공 시스템.
  10. 제1항에 있어서,
    상기 호스트 인터페이스 컴포넌트는 상기 디바이스 인터페이스 컴포넌트에 연결된 스토리지 디바이스에 의해 지원된 속도보다 더 빠른 속도로 통신하는 가상 드라이브 제공 시스템.
  11. 제1항에 있어서,
    상기 시스템의 구성을 관리하기 위한 구성 컴포넌트를 더 포함하는 가상 드라이브 제공 시스템.
  12. 제1항에 있어서,
    상기 호스트 인터페이스 컴포넌트는 SATA 커맨드들을 이용하여 상기 컴퓨터 시스템과 통신하는 가상 드라이브 제공 시스템.
  13. 제1항에 있어서,
    상기 디바이스 인터페이스 컴포넌트는 SATA 커맨드들을 이용하여 적어도 하나의 디바이스와 통신하는 가상 드라이브 제공 시스템.
  14. 제1항에 있어서,
    상기 호스트 인터페이스 컴포넌트는 SATA 포트 멀티플라이어 커맨드들을 수신하는 가상 드라이브 제공 시스템.
  15. 제1항에 있어서,
    상기 호스트 인터페이스 컴포넌트는 SATA NCQ 커맨드들을 수신하는 가상 드라이브 제공 시스템.
  16. 제1항에 있어서,
    상기 매핑된 커맨드는 물리적인 커맨드인 가상 드라이브 제공 시스템.
  17. 제1항에 있어서,
    상기 매핑된 커맨드는 가상 커맨드인 가상 드라이브 제공 시스템.
  18. 제1항에 있어서,
    상기 하나 이상의 디바이스들 중 적어도 하나는 물리적인 디바이스인 가상 드라이브 제공 시스템.
  19. 제1항에 있어서,
    상기 하나 이상의 디바이스들 중 적어도 하나는 가상 디바이스인 가상 드라이브 제공 시스템.
  20. 스토리지 시스템에서 물리적인 드라이브들을 하나 이상의 가상 드라이브로서 제공하는 방법으로서,
    가상 커맨드를 수신하는 단계와,
    상기 가상 커맨드를 하나 이상의 매핑된 커맨드로 매핑하는 단계와,
    상기 매핑된 커맨드들을 하나 이상의 디바이스로 전송하는 단계와,
    상기 하나 이상의 매핑된 커맨드에 대한 응답들을 수신하는 단계와,
    상기 응답들에 기초하여 가상 응답을 전송하는 단계
    를 포함하는 가상 드라이브 제공 방법.
  21. 제20항에 있어서,
    구성 정보를 수신하는 단계를 더 포함하며, 상기 가상 커맨드를 매핑하는 단계는 상기 수신된 구성 정보를 이용하는 단계를 포함하는 가상 드라이브 제공 방법.
  22. 제21항에 있어서,
    상기 구성 정보는 상기 시스템이 제조되는 때에 수신되는 가상 드라이브 제공 방법.
  23. 제21항에 있어서,
    상기 구성 정보는 새로운 디바이스를 상기 디바이스 인터페이스 컴포넌트에 연결하는 것에 응답하여 자동적으로 변경되는 가상 드라이브 제공 방법.
  24. 제20항에 있어서,
    상기 매핑된 커맨드들을 전송하는 단계는 스토리지 디바이스들이 케스케이드식으로 연결될 수 있도록 상기 시스템의 제2 인스턴스에 커맨드들을 전송하는 단계를 포함하는 가상 드라이브 제공 방법.
  25. 제24항에 있어서,
    호스트 인터페이스를 통해 액세스가능한 상기 캐스케이드식 스토리지 디바이스들은 상기 호스트 인터페이스에 의해 자체적으로 지원되는 수를 초과하는 가상 드라이브 제공 방법.
  26. 제20항에 있어서,
    상기 가상 응답은 상기 매핑된 커맨드들에 대한 응답들이 수신되기 전에 전 송되는 가상 드라이브 제공 방법.
  27. 제20항에 있어서,
    상기 가상 커맨드들은 매핑된 커맨드들이 물리적인 디바이스에 전송되는 속도보다 더 빠른 속도로 수신되는 가상 드라이브 제공 방법.
  28. 제20항에 있어서,
    상기 매핑된 커맨드는 물리적인 커맨드인 가상 드라이브 제공 방법.
  29. 제20항에 있어서,
    상기 매핑된 커맨드는 가상 커맨드인 가상 드라이브 제공 방법.
  30. 제20항에 있어서,
    상기 하나 이상의 디바이스들 중 적어도 하나는 물리적인 디바이스인 가상 드라이브 제공 방법.
  31. 제20항에 있어서,
    상기 하나 이상의 디바이스들 중 적어도 하나는 가상 디바이스인 가상 드라이브 제공 방법.
  32. 물리적인 드라이브들을 하나 이상의 가상 드라이브로서 제공하도록 스토리지 시스템을 제어하기 위한 명령어들을 포함하는 컴퓨터 판독 가능 매체로서,
    상기 명령어들은,
    가상 커맨드를 수신하는 단계와,
    상기 가상 커맨드를 하나 이상의 매핑된 커맨드로 매핑하는 단계와,
    상기 매핑된 커맨드들을 하나 이상의 디바이스로 전송하는 단계와,
    상기 하나 이상의 매핑된 커맨드에 대한 응답들을 수신하는 단계와,
    상기 응답들에 기초하여 가상 응답을 전송하는 단계
    를 포함하는 컴퓨터 판독 가능 매체.
  33. 제32항에 있어서,
    상기 디바이스 인터페이스는 스토리지 디바이스들이 캐스케이드식으로 이루어지도록 물리적인 커맨드들을 상기 시스템의 제2 인스턴스로 전송하는 컴퓨터 판독 가능 매체.
KR1020087007248A 2005-08-25 2006-08-24 스마트 스케일러블 스토리지 스위치 아키텍처 KR101340176B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US71186305P 2005-08-25 2005-08-25
US60/711,863 2005-08-25
PCT/US2006/032454 WO2007024740A2 (en) 2005-08-25 2006-08-24 Smart scalable storage switch architecture

Publications (2)

Publication Number Publication Date
KR20080038436A true KR20080038436A (ko) 2008-05-06
KR101340176B1 KR101340176B1 (ko) 2013-12-10

Family

ID=37772239

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087007248A KR101340176B1 (ko) 2005-08-25 2006-08-24 스마트 스케일러블 스토리지 스위치 아키텍처

Country Status (7)

Country Link
US (2) US8595434B2 (ko)
EP (1) EP1934751B1 (ko)
JP (1) JP5155861B2 (ko)
KR (1) KR101340176B1 (ko)
CN (2) CN101356506B (ko)
TW (1) TWI350970B (ko)
WO (1) WO2007024740A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
KR20160106486A (ko) * 2015-03-02 2016-09-12 삼성전자주식회사 불휘발성 메모리 모듈 어레이 시스템

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030172295A1 (en) * 2002-03-01 2003-09-11 Onspec Electronics, Inc. Device and system for allowing secure identification of an individual when accessing information and a method of use
US8019842B1 (en) 2005-01-27 2011-09-13 Netapp, Inc. System and method for distributing enclosure services data to coordinate shared storage
US8180855B2 (en) * 2005-01-27 2012-05-15 Netapp, Inc. Coordinated shared storage architecture
US7882271B2 (en) * 2005-06-02 2011-02-01 Seagate Technology Llc Processor partnering in a storage system
US7571269B2 (en) * 2005-08-25 2009-08-04 Silicon Image, Inc. Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices
US8595434B2 (en) 2005-08-25 2013-11-26 Silicon Image, Inc. Smart scalable storage switch architecture
US8666230B2 (en) * 2005-10-14 2014-03-04 Microsoft Corporation Multiple physical optical disc formats in backwards compatible order
US20070162626A1 (en) * 2005-11-02 2007-07-12 Iyer Sree M System and method for enhancing external storage
US7587570B2 (en) * 2006-05-31 2009-09-08 International Business Machines Corporation System and method for providing automated storage provisioning
US8000321B2 (en) * 2006-10-19 2011-08-16 Alcatel Lucent Method and apparatus for improved non-intrusive monitoring functions
US7876894B2 (en) * 2006-11-14 2011-01-25 Mcm Portfolio Llc Method and system to provide security implementation for storage devices
US7711213B2 (en) * 2007-01-29 2010-05-04 Hewlett-Packard Development Company, L.P. Nanowire-based modulators
US20080181406A1 (en) * 2007-01-30 2008-07-31 Technology Properties Limited System and Method of Storage Device Data Encryption and Data Access Via a Hardware Key
US20090046858A1 (en) * 2007-03-21 2009-02-19 Technology Properties Limited System and Method of Data Encryption and Data Access of a Set of Storage Devices via a Hardware Key
US20080288782A1 (en) * 2007-05-18 2008-11-20 Technology Properties Limited Method and Apparatus of Providing Security to an External Attachment Device
US20080184035A1 (en) * 2007-01-30 2008-07-31 Technology Properties Limited System and Method of Storage Device Data Encryption and Data Access
US7797488B2 (en) * 2007-03-05 2010-09-14 Accusys, Inc. Method of creating a multiple of virtual SATA ports in a disk array controller
JP2008293476A (ja) * 2007-04-27 2008-12-04 Ricoh Co Ltd インターフェース制御回路、画像処理装置および電力管理方法
US20080288703A1 (en) * 2007-05-18 2008-11-20 Technology Properties Limited Method and Apparatus of Providing Power to an External Attachment Device via a Computing Device
US7844777B2 (en) * 2007-06-26 2010-11-30 Intel Corporation Cache for a host controller to store command header information
JP5487482B2 (ja) * 2007-06-29 2014-05-07 シーゲイト テクノロジー エルエルシー 記憶システムにおけるプロセッサ・パートナリング
TW200919454A (en) * 2007-10-18 2009-05-01 Skymedi Corp SATA electronic device and its method of data transmission
US8583878B2 (en) * 2008-01-02 2013-11-12 Sandisk Il Ltd. Storage device having direct user access
US8370402B2 (en) 2008-01-02 2013-02-05 Sandisk Il Ltd Dual representation of stored digital content
US20090171911A1 (en) * 2008-01-02 2009-07-02 Sandisk Il, Ltd. Data indexing by local storage device
US8452927B2 (en) * 2008-01-02 2013-05-28 Sandisk Technologies Inc. Distributed storage service systems and architecture
US9098506B2 (en) * 2008-01-02 2015-08-04 Sandisk Il, Ltd. Data indexing by local storage device
US8307129B2 (en) * 2008-01-14 2012-11-06 International Business Machines Corporation Methods and computer program products for swapping synchronous replication secondaries from a subchannel set other than zero to subchannel set zero using dynamic I/O
JP2009205189A (ja) * 2008-02-26 2009-09-10 Buffalo Inc フォルダ管理方法
WO2009108902A2 (en) * 2008-02-29 2009-09-03 Atrato, Inc. Storage system front end
US7904566B2 (en) * 2008-03-14 2011-03-08 Silicon Image, Inc. Method, apparatus, and system for employing an enhanced port multiplier
US7979589B2 (en) * 2008-03-14 2011-07-12 Silicon Image, Inc. Method, apparatus, and system for port multiplier enhancement
JP5033041B2 (ja) * 2008-04-14 2012-09-26 株式会社日立製作所 ストレージシステム
TWI421700B (zh) * 2008-06-02 2014-01-01 無線虛擬儲存裝置及取得遠端檔案之方法
US8516173B2 (en) * 2008-07-28 2013-08-20 International Business Machines Corporation Swapping PPRC secondaries from a subchannel set other than zero to subchannel set zero using control block field manipulation
CN102112970B (zh) 2008-07-29 2015-03-11 惠普发展公司,有限责任合伙企业 用隐藏存储子系统详情的控制设备来将该存储子系统与电子设备连接
JP4399021B1 (ja) 2008-10-29 2010-01-13 株式会社東芝 ディスクアレイ制御装置および記憶装置
US8285970B2 (en) 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
JP2010128572A (ja) 2008-11-25 2010-06-10 Fuji Xerox Co Ltd データ制御装置、記憶装置及びデータ制御装置の接続方法
US8527720B2 (en) * 2008-12-03 2013-09-03 Lsi Corporation Methods of capturing and naming dynamic storage tiering configurations to support data pre-staging
US8195878B2 (en) * 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
US9207984B2 (en) 2009-03-31 2015-12-08 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US9164914B1 (en) * 2009-04-07 2015-10-20 Marvell World Trade Ltd. Multiple port routing circuitry for flash memory storage systems
US9377967B2 (en) * 2009-05-27 2016-06-28 Dell Products L.P. Systems and methods for scalable storage management
JP2010108497A (ja) * 2009-10-22 2010-05-13 Toshiba Corp ディスクアレイ制御装置および記憶装置
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9063655B2 (en) * 2010-05-12 2015-06-23 Silicon Image, Inc. Multi-level port expansion for port multipliers
CN103080917B (zh) * 2010-06-18 2014-08-20 Lsi公司 可扩展存储装置
US8789170B2 (en) * 2010-09-24 2014-07-22 Intel Corporation Method for enforcing resource access control in computer systems
FR2969788B1 (fr) * 2010-12-27 2013-02-08 Electricite De France Procede et dispositif de controle d'acces a un systeme informatique
US8615544B2 (en) * 2011-02-25 2013-12-24 Wyse Technology Inc. System and method for unlocking a device remotely from a server
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
US8621113B2 (en) * 2011-05-31 2013-12-31 Micron Technology, Inc. Apparatus including host bus adapter and serial attachment programming compliant device and related methods
US8762224B2 (en) * 2011-06-03 2014-06-24 Ebay Inc. Payer device that changes physical state based on payer information
JP5209096B2 (ja) 2011-09-07 2013-06-12 株式会社東芝 リモートアクセスシステム、電子機器およびリモートアクセス処理方法
US9047068B2 (en) * 2011-10-31 2015-06-02 Dell Products L.P. Information handling system storage device management information access
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9032160B1 (en) * 2011-12-29 2015-05-12 Emc Corporation Continuous data replication
US8914583B1 (en) 2012-03-31 2014-12-16 Emc Corporation System and method for improving cache performance
US8909886B1 (en) 2012-03-31 2014-12-09 Emc Corporation System and method for improving cache performance upon detecting a migration event
US8966190B1 (en) * 2012-03-31 2015-02-24 Emc Corporation System and method for assigning control of a logical unit number
US9841739B2 (en) * 2012-06-07 2017-12-12 Hitachi, Ltd. Motion controller device and communication method therein
TWI497416B (zh) * 2012-10-08 2015-08-21 Wistron Neweb Corp 程式執行系統、程式編譯系統以及電腦程式產品
US9501437B2 (en) 2012-11-15 2016-11-22 Empire Technology Development Llc Scalable storage system having multiple storage channels
US9122806B2 (en) 2012-11-28 2015-09-01 Avago Technologies General Ip (Singapore) Pte. Ltd. SATA data appliance for providing SATA hosts with access to a configurable number of SATA drives residing in a SAS topology
CN103942005B (zh) * 2013-01-22 2017-03-08 广东华晟数据固态存储有限公司 一种固态硬盘及其控制装置、系统、方法
TWI559133B (zh) 2013-05-22 2016-11-21 祥碩科技股份有限公司 磁碟陣列系統及資料處理方法
TW201445429A (zh) * 2013-05-22 2014-12-01 Asmedia Technology Inc 磁碟陣列系統及資料處理方法
US9213611B2 (en) 2013-07-24 2015-12-15 Western Digital Technologies, Inc. Automatic raid mirroring when adding a second boot drive
EP3042286A1 (en) * 2013-09-05 2016-07-13 Hewlett Packard Enterprise Development LP Mesh topology storage cluster with an array based manager
CN106412030B (zh) * 2013-11-05 2019-08-27 华为技术有限公司 一种选择存储资源方法、装置及系统
US9170746B2 (en) * 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US20170048167A1 (en) * 2014-04-30 2017-02-16 Hewlett Packard Enterprise Development Lp Flood disable on network switch
KR102378065B1 (ko) * 2014-07-09 2022-03-25 한국전자통신연구원 레이어드 디비전 멀티플렉싱을 이용한 방송 신호 송신 장치 및 방송 신호 송신 방법
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
CN104182367B (zh) * 2014-07-28 2017-05-17 英业达科技有限公司 存储控制装置与其调用方法
US20160034191A1 (en) * 2014-08-01 2016-02-04 Kabushiki Kaisha Toshiba Grid oriented distributed parallel computing platform
CN104219084B (zh) * 2014-08-04 2018-01-16 新华三技术有限公司 一种板卡的启动方法和设备
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9851901B2 (en) 2014-09-26 2017-12-26 Western Digital Technologies, Inc. Transfer of object memory references in a data storage device
KR102320044B1 (ko) 2014-10-02 2021-11-01 삼성전자주식회사 Pci 장치, 이를 포함하는 인터페이스 시스템, 및 컴퓨팅 시스템
US9628350B2 (en) * 2014-11-05 2017-04-18 Amazon Technologies, Inc. Dynamic scaling of storage volumes for storage client file systems
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9471448B2 (en) * 2014-12-10 2016-10-18 Intel Corporation Performing an atomic write operation across multiple storage devices
WO2016118125A1 (en) * 2015-01-21 2016-07-28 Hewlett Packard Enterprise Development Lp Virtual storage
US9524114B2 (en) 2015-01-27 2016-12-20 Futurewei Technologies, Inc. Optimizing synchronous write via speculation
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
KR102398213B1 (ko) 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9720838B2 (en) 2015-03-27 2017-08-01 Intel Corporation Shared buffered memory routing
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US20160299844A1 (en) * 2015-04-08 2016-10-13 Sandisk Enterprise Ip Llc Mapping Logical Groups of Data to Physical Locations In Memory
US9836427B2 (en) * 2015-05-28 2017-12-05 HGST Netherlands B.V. Library for seamless management of storage devices
US10097636B1 (en) 2015-06-15 2018-10-09 Western Digital Technologies, Inc. Data storage device docking station
US9575689B2 (en) 2015-06-26 2017-02-21 EMC IP Holding Company LLC Data storage system having segregated control plane and/or segregated data plane architecture
EP3320721A4 (en) * 2015-07-06 2018-08-01 Telefonaktiebolaget LM Ericsson (publ) Apparatus and method for forwarding messages
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10097534B2 (en) * 2015-08-28 2018-10-09 Dell Products L.P. System and method to redirect hardware secure USB storage devices in high latency VDI environments
US9760730B2 (en) 2015-08-28 2017-09-12 Dell Products L.P. System and method to redirect and unlock software secure disk devices in a high latency environment
US10091295B1 (en) 2015-09-23 2018-10-02 EMC IP Holding Company LLC Converged infrastructure implemented with distributed compute elements
US10104171B1 (en) 2015-11-25 2018-10-16 EMC IP Holding Company LLC Server architecture having dedicated compute resources for processing infrastructure-related workloads
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
CN106126122A (zh) * 2016-06-22 2016-11-16 广东睿江云计算股份有限公司 一种基于qos的云主机磁盘io指令调度方法及系统
WO2018004519A1 (en) * 2016-06-27 2018-01-04 Hitachi, Ltd. Management method and apparatus for configuring optimized path
US20180032555A1 (en) * 2016-07-28 2018-02-01 Bank Of America Corporation Object database system including an object-specific historical attribute-change information system
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US11153164B2 (en) * 2017-01-04 2021-10-19 International Business Machines Corporation Live, in-line hardware component upgrades in disaggregated systems
US10534598B2 (en) 2017-01-04 2020-01-14 International Business Machines Corporation Rolling upgrades in disaggregated systems
US10528329B1 (en) * 2017-04-27 2020-01-07 Intuit Inc. Methods, systems, and computer program product for automatic generation of software application code
US10705796B1 (en) 2017-04-27 2020-07-07 Intuit Inc. Methods, systems, and computer program product for implementing real-time or near real-time classification of digital data
US10467261B1 (en) 2017-04-27 2019-11-05 Intuit Inc. Methods, systems, and computer program product for implementing real-time classification and recommendations
US10467122B1 (en) 2017-04-27 2019-11-05 Intuit Inc. Methods, systems, and computer program product for capturing and classification of real-time data and performing post-classification tasks
CN108255430A (zh) * 2018-01-10 2018-07-06 深圳市得微电子有限责任公司 Ncq命令处理方法、存储设备及计算机可读存储介质
WO2020000275A1 (zh) * 2018-06-27 2020-01-02 华为技术有限公司 一种存储系统及存储系统的工作模式的切换方法
US11399312B2 (en) 2019-08-13 2022-07-26 International Business Machines Corporation Storage and retention intelligence in mobile networks
US11163687B2 (en) * 2019-10-17 2021-11-02 Citrix Systems, Inc. Provisioning virtual machines with a single identity and cache virtual disk
US11704040B2 (en) 2019-12-09 2023-07-18 International Business Machines Corporation Transparent drive-to-drive copying
CN111209229B (zh) * 2019-12-30 2021-12-21 苏州艾利特机器人有限公司 一种基于虚拟设备的现场总线方法
TWI773343B (zh) * 2021-05-26 2022-08-01 中華電信股份有限公司 分散式物件資料儲存系統、方法及電腦可讀媒介
CN113535088A (zh) * 2021-07-15 2021-10-22 深圳市安存数据技术有限公司 存储设备、数据处理方法和存储系统

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0428021B1 (en) * 1989-11-03 1998-09-02 Compaq Computer Corporation Method for data distribution in a disk array
US5140592A (en) * 1990-03-02 1992-08-18 Sf2 Corporation Disk array system
JP2831087B2 (ja) * 1990-03-19 1998-12-02 株式会社日立製作所 データ記憶システム
US5502836A (en) * 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system operation
US5822782A (en) * 1995-10-27 1998-10-13 Symbios, Inc. Methods and structure to maintain raid configuration information on disks of the array
US6098119A (en) 1998-01-21 2000-08-01 Mylex Corporation Apparatus and method that automatically scans for and configures previously non-configured disk drives in accordance with a particular raid level based on the needed raid level
JP2000105673A (ja) * 1998-09-28 2000-04-11 Nikon Corp インタフェース装置
JP3186725B2 (ja) * 1998-12-25 2001-07-11 日本電気株式会社 ディスクアレイ制御装置、ディスクアレイ制御システム、その方法及びプログラムを記憶した記憶媒体
US6311257B1 (en) * 1999-04-13 2001-10-30 Emc Corporation Method and system for allocating memory for a command queue
TW464822B (en) 2000-07-19 2001-11-21 Ruei-Min Liau Method for segmenting one hard disk to multiple completely independent partitions
US8239354B2 (en) * 2005-03-03 2012-08-07 F5 Networks, Inc. System and method for managing small-size files in an aggregated file system
US6985983B2 (en) * 2001-03-01 2006-01-10 Hewlett-Packard Development Company, L.P. Translating device adapter having a common command set for interfacing multiple types of redundant storage devices to a host processor
US20030079018A1 (en) * 2001-09-28 2003-04-24 Lolayekar Santosh C. Load balancing in a storage network
US6895455B1 (en) * 2002-06-26 2005-05-17 Western Digital Technologies, Inc. Disk drive and method for implementing nonstandard disk-drive commands on a serial ATA interface that only supports standard ATA disk-drive commands
US6735650B1 (en) * 2002-08-30 2004-05-11 Western Digital Technologies, Inc. Disk drive and method for data transfer initiated by nonstandard disk-drive commands on a serial ATA interface that only supports standard ATA disk-drive commands
US6952794B2 (en) * 2002-10-10 2005-10-04 Ching-Hung Lu Method, system and apparatus for scanning newly added disk drives and automatically updating RAID configuration and rebuilding RAID data
JP2004151945A (ja) * 2002-10-30 2004-05-27 Matsushita Electric Ind Co Ltd ミラーリング装置
US20040177218A1 (en) * 2002-11-06 2004-09-09 Meehan Thomas F. Multiple level raid architecture
US7206989B2 (en) * 2002-11-20 2007-04-17 Intel Corporation Integrated circuit having multiple modes of operation
US7167929B2 (en) * 2003-01-13 2007-01-23 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays, and a storage-shelf-interface tunneling method and system
US8301809B2 (en) * 2003-07-02 2012-10-30 Infortrend Technology, Inc. Storage virtualization computer system and external controller thereof
US7870334B2 (en) * 2003-11-12 2011-01-11 International Business Machines Corporation Distributed task queues in a multiple-port storage system
US20050114464A1 (en) * 2003-10-27 2005-05-26 Shai Amir Virtualization switch and method for performing virtualization in the data-path
GB0326293D0 (en) * 2003-11-12 2003-12-17 Ibm Data storage systems
US20050114595A1 (en) * 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
US7146484B2 (en) * 2004-06-15 2006-12-05 Hitachi, Ltd. Method and apparatus for caching storage system
US8019937B2 (en) * 2004-07-21 2011-09-13 Infortrend Technology, Inc. Applying storage device commit-cached-data-to-media functionality to improve data security in systems that allow storage devices to cache writes
JP2006092154A (ja) * 2004-09-22 2006-04-06 Hitachi Ltd ストレージシステム及びストレージ制御方法
JP2006134208A (ja) * 2004-11-09 2006-05-25 Fujitsu Ltd ストレージ仮想化装置
CN1299207C (zh) * 2005-01-21 2007-02-07 清华大学 San环境中基于网络的海量存储资源管理方法
US7743178B2 (en) * 2005-04-11 2010-06-22 Emulex Design & Manufacturing Corporation Method and apparatus for SATA tunneling over fibre channel
US7853741B2 (en) * 2005-04-11 2010-12-14 Emulex Design & Manufacturing Corporation Tunneling SATA targets through fibre channel
US7571269B2 (en) 2005-08-25 2009-08-04 Silicon Image, Inc. Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices
US8595434B2 (en) 2005-08-25 2013-11-26 Silicon Image, Inc. Smart scalable storage switch architecture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
KR20160106486A (ko) * 2015-03-02 2016-09-12 삼성전자주식회사 불휘발성 메모리 모듈 어레이 시스템

Also Published As

Publication number Publication date
CN103744790B (zh) 2017-05-10
JP2009508192A (ja) 2009-02-26
CN101356506B (zh) 2014-01-08
WO2007024740A3 (en) 2007-12-21
US20140059295A1 (en) 2014-02-27
US9201778B2 (en) 2015-12-01
KR101340176B1 (ko) 2013-12-10
CN101356506A (zh) 2009-01-28
EP1934751A4 (en) 2010-08-04
JP5155861B2 (ja) 2013-03-06
TWI350970B (en) 2011-10-21
CN103744790A (zh) 2014-04-23
US20070050538A1 (en) 2007-03-01
TW200719157A (en) 2007-05-16
WO2007024740A2 (en) 2007-03-01
EP1934751A2 (en) 2008-06-25
EP1934751B1 (en) 2017-11-08
US8595434B2 (en) 2013-11-26

Similar Documents

Publication Publication Date Title
KR101340176B1 (ko) 스마트 스케일러블 스토리지 스위치 아키텍처
JP4686463B2 (ja) ストレージシェルフ・ルータ・インターフェイスのトンネリングシステムおよび方法
JP5047365B2 (ja) 割り当て単位に基づく仮想フォーマッティング法およびその方法を利用するデバイス
JP4871880B2 (ja) ストレージシェルフ・ルータ集積回路
US9298648B2 (en) Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
JP5250031B2 (ja) 割り当て単位に基づく仮想フォーマッティング法および割り当て単位に基づく仮想フォーマッティング法を利用するデバイス
US7801120B2 (en) Method and system for efficient queue management
US8073674B2 (en) SCSI device emulation in user space facilitating storage virtualization
WO2017133483A1 (zh) 存储系统
US7080190B2 (en) Apparatus and method for providing transparent sharing of channel resources by multiple host machines
US20080052728A1 (en) Method and interface for access to memory within a first electronic device by a second electronic device
JP2007506205A (ja) 仮想ディスクをフォーマッティングするシステムおよび方法
US20130275668A1 (en) Data processing method and device
US8473699B2 (en) Facilitating data compression during replication using a compressible configuration bit
US8219714B2 (en) Storage area network and method for provisioning therein
US8402195B2 (en) Storage system mounted with plurality of processors
Waschke Storage Standards: Progress in the Datacenter
Halbeisen et al. NEXT-GENERATION DATA BACKUP

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: 20161123

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171127

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181122

Year of fee payment: 6