KR101378270B1 - Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스 - Google Patents

Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스 Download PDF

Info

Publication number
KR101378270B1
KR101378270B1 KR1020110018995A KR20110018995A KR101378270B1 KR 101378270 B1 KR101378270 B1 KR 101378270B1 KR 1020110018995 A KR1020110018995 A KR 1020110018995A KR 20110018995 A KR20110018995 A KR 20110018995A KR 101378270 B1 KR101378270 B1 KR 101378270B1
Authority
KR
South Korea
Prior art keywords
target
initiator
data block
data
connection
Prior art date
Application number
KR1020110018995A
Other languages
English (en)
Other versions
KR20120061710A (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 KR20120061710A publication Critical patent/KR20120061710A/ko
Application granted granted Critical
Publication of KR101378270B1 publication Critical patent/KR101378270B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

SAS 확장기는 넥서스와 관련된 데이터 액세스 정보를 수집하고, 데이터 프리페치가 적절한지 여부를 판정한다. SAS 확장기는 넥서스의 이전의 데이터 요청을 이용하여 잠재적인 데이터 블록을 식별한다. SAS 확장기는 잠재적인 데이터 블록에 대한 데이터 요청을 타겟에 발행한다. SAS 확장기는 데이터 판독 내의 미래의 이용을 위해 프리페치 캐시 내에 잠재적인 데이터 블록을 저장한다.

Description

SAS 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 SAS 확장기 디바이스{DATA PREFETCH IN SAS EXPANDERS}
본 발명은 일반적으로 직렬 연결 소형 컴퓨터 시스템 인터페이스(Serial Attached Small Computer System Interface: SAS) 디바이스의 분야에 관한 것으로서, 더 구체적으로는 SAS 확장기를 이용하여 데이터 프리페치(prefetch)를 수행하기 위한 디바이스, 시스템 및 방법에 관한 것이다.
직렬 연결 SCSI에서, 디바이스는 SAS 이니시에이터(initiator), SAS 타겟 또는 SAS 확장기이다. SAS 이니시에이터는 디바이스 서비스 요청 및 작업 관리 요청을 발생시키는 디바이스이다. SAS 타겟은 SAS 타겟으로부터 요청을 수신하고 프로세싱하는 디바이스이다. SAS 확장기는 단일 포트에 대한 다수의 SAS 이니시에이터 또는 타겟 사이의 통신을 용이하게 하는데 이용되는 디바이스이다. SAS 토폴로지(topology)에서, 다수의 SAS 확장기는 캐스케이드 방식(cascaded fashion)으로 서로 접속될 수 있다. SAS 이니시에이터 또는 SAS 타겟은 해당 SAS 이니시에이터 또는 SAS 타겟에 대한 다수의 요청이 SAS 토폴로지 내에서 발생할 때 다른 작업을 수행하여 비지(busy) 상태일 수 있다.
저장 시스템에서 데이터 판독을 용이하게 하기 위한 방법은, 이들에 한정되는 것은 아니지만, 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하는 단계와, 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보에 기초하여, 이니시에이터와 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하는 단계와, 타겟의 적어도 하나의 제 1 데이터 블록에 대한 제 1 데이터 요청을 이니시에이터로부터 수신하는 단계와, 이니시에이터와 타겟 사이의 접속이 이용 임계값을 초과하는 것을 판정할 때 제 1 데이터 요청에 기초하여 이니시에이터로부터 미래의 데이터 요청 내의 포함을 위해 타겟의 적어도 하나의 제 2 잠재적인 데이터 블록을 식별하는 단계와, 적어도 하나의 제 2 잠재적인 데이터 블록에 대한 제 2 데이터 요청을 타겟에 발행하는 단계와, 타겟으로부터 적어도 하나의 제 2 잠재적인 데이터 블록을 수신하는 단계와, SAS 확장기 내에, 타겟으로부터의 적어도 하나의 제 2 잠재적인 데이터 블록을 저장하는 단계를 포함한다.
시스템은, 이들에 한정되는 것은 아니지만, 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하기 위한 수단과, 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보에 기초하여, 이니시에이터와 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하기 위한 수단과, 타겟의 적어도 하나의 제 1 데이터 블록에 대한 데이터 요청을 이니시에이터로부터 수신하기 위한 수단과, 이니시에이터와 타겟 사이의 접속이 이용 임계값을 초과하는 것을 판정할 때 제 1 데이터 요청에 기초하여 이니시에이터로부터 미래의 데이터 요청 내의 포함을 위해 타겟의 적어도 하나의 제 2 잠재적인 데이터 블록을 식별하기 위한 수단과, 적어도 하나의 제 2 잠재적인 데이터 블록에 대한 제 2 데이터 요청을 타겟에 발행하기 위한 수단과, 타겟으로부터 적어도 하나의 제 2 잠재적인 데이터 블록을 수신하기 위한 수단과, 타겟으로부터의 적어도 하나의 제 2 잠재적인 데이터 블록을 저장하기 위한 수단을 포함할 수 있다.
SAS 확장기 디바이스는, 이들에 한정되는 것은 아니지만, 데이터 통신을 위해 이니시에이터와 통신적으로 결합하기 위한 제 1 포트와, 데이터 통신을 위해 타겟과 통신적으로 결합하기 위한 제 2 포트와, 데이터를 저장하기 위한 캐시 메모리와, 제 1 포트, 제 2 포트 및 캐시 메모리에 통신적으로 결합되고, 데이터 판독을 용이하게 하기 위한 방법을 실행하도록 구성된 프로세서를 포함할 수 있고, 이 방법은, 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하는 단계와, 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보에 기초하여, 이니시에이터와 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하는 단계와, 타겟의 적어도 하나의 데이터 블록에 대한 제 1 데이터 요청을 이니시에이터로부터 수신하는 단계와, 이니시에이터와 타겟 사이의 접속이 이용 임계값을 초과하는 것을 판정할 때 제 1 데이터 요청에 기초하여 이니시에이터로부터 미래의 데이터 요청 내의 포함을 위해 타겟의 적어도 하나의 제 2 잠재적인 데이터 블록을 식별하는 단계와, 적어도 하나의 제 2 잠재적인 데이터 블록에 대한 제 2 데이터 요청을 타겟에 발행하는 단계와, 타겟으로부터 적어도 하나의 제 2 잠재적인 데이터 블록을 수신하는 단계와, 타겟으로부터의 적어도 하나의 제 2 잠재적인 데이터 블록을 캐시 메모리 내에 저장하는 단계를 포함한다.
상기 일반적인 설명 및 이하의 상세한 설명의 모두는 단지 예시적이고 설명적인 것이며, 반드시 본 발명을 한정하는 것은 아니라는 것이 이해되어야 한다. 명세서 내에 합체되어 명세서의 부분을 구성하는 첨부 도면은 본 발명의 요지를 도시한다. 함께, 상세한 설명 및 도면은 본 발명의 원리를 설명하는 기능을 한다.
본 발명의 무수히 많은 장점은 첨부 도면을 참조하여 당 기술 분야의 숙련자들에 의해 더 양호하게 이해될 수 있다.
도 1은 SAS 확장기를 이용하는 네트워크 토폴로지를 도시하는 블록 다이어그램.
도 2는 데이터 프리페치를 위한 통상의 시퀀스 절차를 도시하는 흐름도.
도 3은 저장 시스템 내의 데이터 판독을 용이하게 하기 위한 방법을 도시하는 흐름도.
이제, 첨부 도면에 도시되어 있는 개시된 요지를 상세히 참조할 것이다.
본 발명의 예시적인 실시예에 따른 SAS 확장기를 특징으로 하는 직렬 연결 소형 컴퓨터 시스템 인터페이스(SAS) 네트워크가 도 1에 도시된다. 네트워크(100)는 SAS 확장기(110)를 포함할 수 있다. 네트워크(100)는 데이터 통신을 위해 확장기(110)에 접속된 하나 이상의 소스 디바이스(120)를 포함할 수 있다. 예를 들어, 소스 디바이스(120)는 이니시에이터(예를 들어, 호스트 시스템, 서버 시스템) 또는 다른 SAS 확장기를 포함할 수 있다. 하나 이상의 소스 디바이스(120)가 확장기(110)의 소스 디바이스 포트(130)를 경유하여 확장기(110)에 접속될 수 있다. 네트워크(100)는 데이터 통신을 위해 확장기(110)에 접속된 하나 이상의 목적지 디바이스(140)를 포함할 수 있다. 예를 들어, 목적지 디바이스(140)는 타겟(예를 들어, SAS 디스크, SAS 호환 디스크, SAS 디스크 어레이 또는 SATA 디스크 어레이) 또는 다른 SAS 확장기를 포함할 수 있다. 하나 이상의 목적지 디바이스(140)가 확장기(110)의 목적지 디바이스 포트(150)를 경유하여 확장기(110)에 접속될 수 있다.
확장기(110)는 확장기(110)의 제어 및 작동을 위한 프로세서(160)를 추가로 포함할 수 있다. 확장기(110)는 확장기(110) 내의 데이터의 저장을 위해 프로세서(160)에 통신적으로 결합된 메모리(170)를 추가로 포함할 수 있다. 확장기(110)는 소스 디바이스 포트(130)를 경유하여 확장기(110)에 접속된 이니시에이터와 목적지 디바이스 포트(150)를 경유하여 확장기(110)에 접속된 타겟 사이의 접속을 설정하도록 구성될 수 있다. 확장기(110)는 소스 디바이스 포트(130)[예를 들어, 소스 디바이스(120)]를 경유하여 확장기(110)에 직접 접속된 이니시에이터를 위한 접속을 설정할 수 있고, 또는 소스 디바이스 포트(130)를 경유하여 확장기(110)에 접속된 하나 이상의 확장기의 네트워크를 경유하여 확장기(110)에 접속된 이니시에이터를 위한 접속을 설정할 수 있다. 확장기(110)는 소스 디바이스 포트(130)[예를 들어, 목적지 디바이스(120)]를 경유하여 확장기(110)에 직접 접속된 타겟과의 접속을 설정할 수 있고, 또는 목적지 디바이스 포트(150)를 경유하여 확장기(110)에 접속된 하나 이상의 확장기의 네트워크를 경유하여 확장기(110)에 접속된 타겟과의 접속을 설정할 수 있다. 네트워크(100)의 특정 이니시에이터와 네트워크(100)의 특정 타겟을 포함하여 설정된 접속은 넥서스(nexus)라 칭한다. 도 1에 도시된 바와 같이, 프로세서(160) 및 메모리(170)는 확장기(110) 내에서 작동할 수 있다. 다른 실시예에서, 프로세서(160) 및 메모리(170) 중 하나 이상은 저장 시스템의 부분으로서 확장기(110)의 외부에서 작동할 수 있다.
확장기(110)의 프로세서(160)는 네트워크(100)의 특정 넥서스와 관련된 데이터 액세스 정보를 수집할 수 있다. 링크 이용 정보는 단일 포트[예를 들어, 소스 디바이스 포트(130) 또는 목적지 디바이스 포트(150) 중 하나]와 관련된 정보를 포함할 수 있다. 예를 들어, 링크 이용 정보는 이용 비율(예를 들어, 링크가 설정되는 시간에 대한 링크가 이용되는 시간의 비율) 또는 대역폭 요건(예를 들어, 링크를 통한 데이터 전송의 레이트) 중 하나 이상을 포함할 수 있다. 프로세서(160)는 특정 이니시에이터 및 특정 타겟을 위해 설정된 접속을 위한 링크 이용 정보의 다수의 세트를 수집하고, 넥서스 이용 정보를 제공하기 위해 링크 이용 정보를 적응시킬 수 있다. 넥서스 이용 정보는 넥서스 이용 비율(예를 들어, 넥서스가 설정되는 시간에 대한 넥서스가 이용되는 시간의 비율) 또는 넥서스 대역폭 요건(예를 들어, 넥서스를 통한 데이터 전송의 레이트) 중 하나 이상을 포함할 수 있다. 프로세서(160)는 넥서스 이용 정보를 경유하여 네트워크(100)의 특정 넥서스와 관련된 데이터 액세스 정보를 수집할 수 있다.
네트워크(100)의 특정 넥서스와 관련된 데이터 액세스 정보는 확장기(110)에 의해 수행된 저장 및 포워드 프로세스와 관련된 정보를 추가로 포함할 수 있다. 저장 및 포워드 프로세스에서, 확장기는 이니시에이터로부터 접속을 수락할 수 있다. 확장기는 원하는 접속 타겟과의 접속을 설정하기 전에 이니시에이터로부터 송출 프레임(outgoing frame)을 버퍼링할 수 있다. 저장 및 포워드 프로세스를 수행하는 것은 접속의 페이로드 크기(예를 들어, 단일 프레임 내에서 전송되고 있는 데이터의 양), 접속의 데이터와 관련된 하나 이상의 태그(예를 들어, 단일 입력/출력의 할당된 식별자), 접속과 관련된 논리 블록 어드레스(LBA) 또는 접속과 관련된 명령 중 하나 이상을 포함하는 데이터 액세스 정보에 대한 확장기 액세스를 제공할 수 있다. 예에서, 호스트는 확장기를 경유하여 드라이브로의 접속을 개시할 수 있다. 다른 예에서, 드라이브는 확장기를 경유하여 호스트로의 접속을 개시할 수 있다. 저장 및 포워드 데이터 액세스 정보가 네트워크(100)의 특정 넥서스와 관련된 데이터 액세스 정보를 제공하기 위해 프로세서(160)에 의해 수집되고 적응될 수 있다. 프로세서(160)는 저장 및 포워드 데이터 액세스 정보를 경유하여 네트워크(100)의 특정 넥서스와 관련된 데이터 액세스 정보를 수집할 수 있다.
프로세서(160)는 네트워크(100)의 특정 넥서스의 이용의 빈도와 관련된 정보를 제공하기 위해 저장 및 포워드 데이터 액세스 정보 또는 링크 이용 정보 중 하나 이상을 적응시킬 수 있다. 또한, 프로세서(160)는 네트워크(100)의 특정 넥서스를 통해 전송된 데이터의 양과 관련된 정보를 제공하기 위해 저장 및 포워드 데이터 액세스 정보 또는 링크 이용 정보 중 하나 이상을 적응시킬 수 있다.
프로세서(160)는 데이터 프리페치 작업이 네트워크(100)의 특정 넥서스에 대해 적절한지 여부[예를 들어, 네트워크(100)의 특정 넥서스가 높은 이용을 갖는지 여부]를 판정하기 위해 특정 넥서스와 관련된 정보를 이용할 수 있다. 이용 임계값은 특정 넥서스와 관련된 하나 이상의 유형의 정보를 포함할 수 있다. 예를 들어, 프로세서(160)는 네트워크(100)의 특정 넥서스와 관련된 데이터 액세스 정보가 이용 임계값을 충족하는지 이를 초과하는지의 여부를 판정할 수 있다. 일 예에서, 프로세서(160)는 특정 넥서스와 관련된 정보가 이용 임계값을 충족하는지 이를 초과하는지 여부를 판정하기 위해 매트릭스를 이용할 수 있다. 이용 임계값은 프로그램 가능할 수 있다. 또한, 이용 임계값은 사용자 구성 가능할 수 있다.
프로세서(160)는 데이터 프리페치 작업을 위한 데이터 블록을 식별할 수 있다. 또한, 프로세서(160)는 데이터 프리페치 작업이 네트워크(100)의 특정 넥서스에 적절한지 여부를 판정할 때 데이터 프리페치 작업을 위한 데이터 블록을 식별할 수 있다. 예를 들어, 프로세서(160)는 넥서스에 대한 데이터 판독 요청을 수신할 수 있다(예를 들어, 데이터 판독 요청은 넥서스의 이니시에이터에 의해 발행되고, 데이터 판독 요청은 넥서스의 타겟에 안내됨). 데이터 판독 요청은 원본 데이터 세트를 위한 것일 수 있다. 프로세서(160)는 데이터 판독 요청을 수신하기 전에 데이터 프리페치 작업이 데이터 판독 요청과 관련된 넥서스에 적절한 것을 판정할 수 있다. 다른 실시예에서, 프로세서(160)는 데이터 판독 요청을 수신한 후에 데이터 프리페치 작업이 데이터 판독 요청과 관련된 넥서스에 적절한지 여부를 판정할 수 있다.
프로세서(160)는 원본 데이터 세트에 기초하여 데이터 프리페치 작업을 위한 잠재적인 데이터 세트를 식별할 수 있다. 예를 들어, 프로세서(160)는 원본 데이터 세트에 대한 근접도에 기초하여 잠재적인 데이터 세트를 식별할 수 있다(예를 들어, 잠재적인 데이터 세트는 원본 데이터 세트의 LBA에 근접한 LBA에 위치됨). 다른 예에서, 프로세서(160)는 원본 데이터 세트와의 콘텐츠 관련성에 기초하여 잠재적인 데이터 세트를 식별할 수 있다(예를 들어, 잠재적인 데이터 세트 및 원본 데이터 세트는 모두 더 큰 데이터 세트의 부분임). 다른 예에서, 프로세서(160)는 원본 데이터 세트와의 일시적인 관련성에 기초하여 잠재적인 데이터 세트를 식별할 수 있다(예를 들어, 잠재적인 데이터 세트에 대한 이전의 데이터 판독 요청은 원본 데이터 세트에 대한 이전의 데이터 판독 요청 후에 발행되어 있음). 다른 예에서, 프로세서(160)는 상기 팩터 또는 관련성(예를 들어, 근접, 전후 관계 및 일시적) 중 하나 이상에 기초하여 잠재적인 데이터 세트를 식별할 수 있다.
잠재적인 데이터 세트를 식별할 때, 프로세서(160)는 잠재적인 데이터 세트에 대한 데이터 판독 요청을 넥서스의 이니시에이터로부터 수신하기 전에, 잠재적인 데이터 세트에 대한 데이터 판독 요청을 넥서스의 타겟에 발행할 수 있다. 예를 들어, 프로세서(160)는 원본 데이터 세트와 잠재적인 데이터 세트를 조합하는 하나 이상의 데이터 판독 요청을 발행할 수 있다. 다른 예(미도시)에서, 프로세서(160)는 잠재적인 데이터 세트 및 원본 데이터 세트에 대한 개별의 데이터 판독 요청을 발행할 수 있다. 프로세서(160)가 잠재적인 데이터 세트 및 원본 데이터 세트에 대한 개별의 데이터 판독 요청을 발행할 수 있는 예에서, 프로세서(160)는 원본 데이터 세트에 대한 데이터 판독 요청을 발행한 후에 잠재적인 데이터 세트에 대한 데이터 판독 요청을 발행할 수 있다. 또한, 프로세서(160)는 데이터 판독 요청의 타겟(예를 들어, 넥서스의 타겟)에 대한 감소된 활동시에(예를 들어, 타겟이 아이들 상태임) 잠재적인 데이터 세트에 대한 데이터 요청을 발행할 수 있다. 프로세서(160)는 넥서스의 타겟으로부터 잠재적인 데이터 세트를 수신할 때 확장기(110)의 메모리(170) 내에 잠재적인 데이터 세트를 저장할 수 있다. 본 명세서에 사용될 때, 잠재적인 데이터 세트를 프리페칭은 잠재적인 데이터 세트에 대한 데이터 판독 요청을 넥서스의 이니시에이터로부터 수신하기 전에 잠재적인 데이터 세트에 대한 데이터 판독 요청을 넥서스의 타겟에 발행하는 것을 칭할 수 있다. 본 명세서에 사용될 때, 잠재적인 데이터 세트의 프리페치 캐싱은 잠재적인 데이터 세트에 대한 데이터 판독 요청을 넥서스의 이니시에이터로부터 수신하기 전에 메모리(170) 내에 잠재적인 데이터 세트를 저장하는 것을 칭할 수 있다.
프로세서(160)는 넥서스의 이니시에이터로부터 잠재적인 데이터 세트에 대한 데이터 판독 요청을 수신할 때 잠재적인 데이터 세트를 넥서스의 이니시에이터에 발행할 수 있다. 다른 예에서, 메모리(170) 내에 저장된 잠재적인 데이터 세트는 넥서스의 이니시에이터 이외의 이니시에이터에 데이터 판독 요청을 충족하는데 이용될 수 있다. 또한, 프로세서(160)는 메모리(170) 내에 저장된 잠재적인 데이터 세트가 유효한 것을 판정할 때 확장기(110)의 메모리(170)로부터 이니시에이터에 잠재적인 데이터 세트를 발행할 수 있다. 예를 들어, 확장기(110)가 넥서스의 타겟에 직접 연결될 수 있기 때문에, 프로세서(160)는 넥서스의 타겟 내의 잠재적인 데이터 세트의 LBA 내에 저장된 데이터가 메모리(170) 내에 저장된 잠재적인 데이터 세트와 동일한지 여부를 판정하기 위해 넥서스의 타겟에 대한 데이터 통신을 모니터링할 수 있다. 프로세서(160)는 메모리(170) 내에 저장된 잠재적인 데이터 세트가 유효하지 않은 것을 판정할 때 메모리(170) 내에 저장된 잠재적인 데이터 세트를 업데이트할 수 있다. 예를 들어, 프로세서(160)는 넥서스의 타겟에 데이터 판독 요청을 발행하는 것을 통해 메모리(170) 내에 저장된 잠재적인 데이터 세트를 업데이트할 수 있다. 다른 예에서, 프로세서(160)는 확장기(110)를 경유하여 넥서스의 타겟에 기록되어 있는 데이터를 이용하여 메모리(170) 내에 저장된 잠재적인 데이터 세트를 업데이트할 수 있다. 다른 실시예에서, 프로세서(160)는 메모리(170)로부터 유효하지 않은 잠재적인 데이터 세트를 소거할 수 있고, 데이터 프리페치의 이득 없이 잠재적인 데이터 세트에 대한 데이터 판독 요청이 작동할 수 있게 할 수 있다.
프로세서(160)는 넥서스의 타겟이 비지 상태인 것을 판정할 때 메모리(170)로부터 이니시에이터에 잠재적인 데이터 세트를 발행할 수 있다. 다른 실시예에서, 프로세서(160)는 넥서스의 타겟이 비지 상태이건 아니건간에 메모리(170)로부터 이니시에이터에 잠재적인 데이터 세트를 발행할 수 있다. 메모리(170)로부터 이니시에이터에 잠재적인 데이터 세트를 발행하기 위해, 확장기(110)는 넥서스의 타겟 대신에 데이터 판독 요청을 수락할 수 있다.
일반적으로 도 2를 참조하면, 데이터 프리페치를 위한 명령 시퀀스 절차(200)를 도시하는 흐름도가 제공된다. 절차(200)는 도 1에 설명된 것과 같은 시스템[예를 들어, 호스트(202)(예를 들어, 넥서스의 이니시에이터), 확장기(204) 및 드라이브(206)(예를 들어, 넥서스의 타겟)를 포함하는 시스템]에서 구현될 수 있다. 절차(200)는 드라이브(206)의 LBA의 세트(예를 들어, 도 2에 도시된 바와 같이 LBA 1, 2 및 3) 내의 데이터에 대한 데이터 판독 요청을 예시하는 단계 210을 포함할 수 있다. 확장기(204)의 프로세서[예를 들어, 프로세서(160)]는 호스트(202)와 드라이브(206) 사이의 넥서스가 데이터 프리페치를 위한 후보자인 것을 판정할 수 있다. 또한, 프로세서[예를 들어, 프로세서(160)]는 단계 210의 데이터 판독 요청을 수신하기 전에 호스트(202)와 드라이브(206) 사이의 넥서스가 데이터 프리페치를 위한 후보자인 것을 판정할 수 있다. 다른 예에서, 프로세서[예를 들어, 프로세서(160)]는 단계 210의 데이터 판독 요청을 수신한 후에 호스트(202)와 드라이브(206) 사이의 넥서스가 데이터 프리페치를 위한 후보자인 것을 판정할 수 있다.
도 2에 도시된 바와 같이, 확장기(204)[예를 들어, 프로세서(160)를 경유하여]는 원본 데이터 세트에 기초하여 잠재적인 데이터 세트를 식별한다(예를 들어, LBA 4 및 5 내의 데이터는 LBA 1, 2 및 3 내의 데이터에 기초하여 식별됨). 따라서, 단계 220에 나타낸 바와 같이, 확장기(204)는 드라이브(206)(예를 들어, 넥서스의 타겟)에 원본 데이터 세트 및 잠재적인 데이터 세트(예를 들어, LBA 1, 2, 3, 4 및 5 내의 데이터)의 모두에 대한 단일의 데이터 판독 요청을 발행한다. 드라이브는 데이터 판독 요청에 응답하여 LBA 1 내지 5 내에 저장된 데이터를 판독할 수 있다. 예를 들어, 단계 220에 나타낸 바와 같이, 드라이브(206)는 LBA 1을 위한 탐색 명령 및 LBA 5를 통한 순차적인 판독을 수행할 수 있다. 원본 데이터 세트 및 잠재적인 데이터 세트의 모두를 판독하기 위한 다른 방법이 본 발명에 의해 고려된다.
다른 실시예에서, 확장기(204)는 드라이브(206)에 원본 데이터 세트 및 잠재적인 데이터 세트(도시하지 않음)에 대한 개별의 데이터 판독 요청을 발행할 수 있다. 이 특정 실시예에서, 확장기(204)는 드라이브(206)의 감소된 활동시에[예를 들어, 드라이브(206)가 아이들일 때] 데이터 판독 요청을 드라이브(206)에 발행할 수 있다.
절차(200)는 드라이브(206)가 LBA 1 내지 5 내의 데이터를 확장기(204)에 복귀시키는 것을 표현하는 단계 230을 추가로 포함할 수 있다. 확장기(204)는 드라이브(206)로부터 데이터를 수신할 때 프리페치 캐시 내에 잠재적인 데이터 세트를 저장할 수 있다. 예를 들어, 프로세서(160)는 드라이브(206)의 LBA 4 및 5로부터 메모리(170) 내에 데이터를 저장할 수 있다.
절차(200)는 확장기(204)가 호스트(예를 들어, 넥서스의 이니시에이터)에 원본 데이터 판독 요청의 원본 데이터 세트를 복귀시키는 것을 표현하는 단계 240을 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 LBA 1 내지 3으로부터 발행 호스트에 요청된 데이터를 복귀시킬 수 있다. 호스트(202)는 요청된 데이터를 이용할 수 있다.
절차(200)는 호스트(202)가 드라이브(206)로부터 잠재적인 데이터 블록 중 하나 이상을 요청하는 것을 표현하는 단계 250을 추가로 포함할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 호스트(202)는 드라이브(206)의 LBA 4 내의 데이터에 대한 데이터 판독 요청을 확장기(204)에 발행할 수 있다. 확장기(204)는 메모리(170) 내에 저장된 데이터가 유효한 것으로 판정될 때[예를 들어, 메모리(170) 내의 데이터가 드라이브(206) 내의 대응 데이터와 동일함] 드라이브(206) 대신에 데이터 판독 요청을 수락할 수 있다.
절차(200)는 확장기(204)가 메모리(170)로부터 호스트(202)에 하나 이상의 잠재적인 데이터 블록을 복귀하는 것을 표현하는 단계 260을 추가로 포함할 수 있다. 확장기(204)는 메모리(170) 내에 저장된 하나 이상의 잠재적인 데이터 블록이 유효한 것을 검증할 때 메모리(170)로부터 호스트에 하나 이상의 잠재적인 데이터 블록을 복귀시킬 수 있다. 확장기(204)는 잠재적인 데이터 블록 중 하나 이상에 대한 데이터 판독 요청을 수신한 후에 메모리(170) 내에 저장된 데이터가 유효한 것을 검증할 수 있다. 다른 예에서, 확장기(204)는 메모리(170) 내에 잠재적인 데이터 블록을 저장한 후에 드라이브(206)에 기록된 데이터를 모니터링하는 것을 통해 메모리(170) 내에 저장된 데이터가 유효한 것을 검증할 수 있다. 호스트(202)는 확장기(204)로부터 하나 이상의 잠재적인 데이터 블록을 수신할 때 하나 이상의 잠재적인 데이터 블록을 이용할 수 있다.
일반적으로 도 3을 참조하면, 저장 시스템에서 데이터 판독을 용이하게 하기 위한 방법이 도시된다. 방법(300)은 이니시에이터[예를 들어, 호스트(202)]와 타겟[예를 들어, 드라이브(206)] 사이의 접속과 관련된 데이터 액세스 정보를 수집하는 것을 표현하는 단계 305를 포함할 수 있다. 예를 들어, 확장기(110)의 프로세서(160)는 네트워크(100)의 특정 넥서스와 관련된 데이터 액세스 정보를 수집할 수 있다. 방법(300)은 이니시에이터[예를 들어, 호스트(202)]와 타겟[예를 들어, 드라이브(206)] 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하는 것을 표현하는 단계 310을 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 데이터 프리페치 작업이 네트워크(100)의 특정 넥서스에 적절한지 여부를 판정하기 위해 특정 넥서스와 관련된 정보를 이용할 수 있다.
방법(300)은 타겟의 적어도 하나의 제 1 데이터 블록에 대한 제 1 데이터 요청을 이니시에이터로부터 수신하는 것을 표현하는 단계 315를 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 넥서스에 대한 데이터 판독 요청을 수신할 수 있다{예를 들어, 데이터 판독 요청은 넥서스의 이니시에이터에 의해 발행되고[예를 들어, 호스트(202)], 데이터 판독 요청은 넥서스의 타겟에 안내된다[예를 들어, 드라이브(206)]}. 데이터 판독 요청은 원본 데이터 세트에 대한 것일 수 있다. 방법(300)은 이니시에이터와 타겟 사이의 접속이 이용 임계값을 초과하는 것으로 판정될 때 제 1 데이터 요청에 기초하여 이니시에이터로부터의 미래의 데이터 요청 내의 포함을 위해 타겟의 적어도 하나의 제 2 잠재적인 데이터 블록을 식별하는 것을 표현하는 단계 320을 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 데이터 프리페치 작업이 네트워크(100)의 특정 넥서스에 적절한지 여부를 판정할 때 데이터 프리페치 작업을 위해 데이터 블록을 식별할 수 있다.
방법(300)은 적어도 하나의 제 2 잠재적인 데이터 블록에 대한 타겟에 제 2 데이터 요청을 발행하는 것을 표현하는 단계 325를 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 잠재적인 데이터 세트에 대한 데이터 판독 요청을 넥서스의 이니시에이터로부터 수신하기 전에 잠재적인 데이터 세트에 대한 데이터 판독 요청을 넥서스의 타겟에 발행할 수 있다. 방법(300)은 타겟으로부터 적어도 하나의 제 2 잠재적인 데이터 블록을 수신하는 것을 표현하는 단계 330을 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 넥서스의 타겟으로부터 잠재적인 데이터 세트를 수신할 수 있다.
방법(300)은 SAS 확장기 내에, 타겟으로부터의 적어도 하나의 제 2 잠재적인 데이터 블록을 저장하는 것을 표현하는 단계 335를 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 넥서스의 타겟으로부터 잠재적인 데이터 세트를 수신할 때 확장기(110)의 메모리(170) 내에 잠재적인 데이터 세트를 저장할 수 있다. 방법(300)은 타겟으로부터 적어도 하나의 제 2 잠재적인 데이터 블록 중 적어도 하나에 대한 제 3 데이터 요청을 이니시에이터로부터 수신하는 것을 표현하는 단계 340을 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 넥서스의 이니시에이터로부터 잠재적인 데이터 세트에 대한 데이터 판독 요청을 수신할 수 있다.
방법(300)은 SAS 확장기 내에 저장된 적어도 하나의 제 2 잠재적인 데이터 블록 중 적어도 하나의 유효한지 여부를 판정하는 것을 표현하는 단계 345를 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 넥서스의 타겟에 대한 데이터 통신을 모니터링하여, 넥서스의 타겟 내의 잠재적인 데이터 세트의 LBA에 저장된 데이터가 메모리(170) 내에 저장된 잠재적인 데이터와 동일한지 여부를 판정할 수 있다. 방법(300)은 적어도 하나의 제 2 잠재적인 데이터 블록 중 적어도 하나가 유효한 것으로 판정될 때 적어도 하나의 제 2 잠재적인 데이터 블록 중 적어도 하나를 이니시에이터에 전송하는 것을 표현하는 단계 350을 추가로 포함할 수 있다. 예를 들어, 프로세서(160)는 메모리(170) 내에 저장된 잠재적인 데이터 세트가 유효한 것으로 판정될 때 확장기(110)의 메모리(170)로부터 이니시에이터에 잠재적인 데이터 세트를 발행할 수 있다.
방법(300)은 SAS 확장기 내의 적어도 하나의 제 2 잠재적인 데이터 블록이 유효하지 않은 것으로 판정될 때 SAS 확장기 내에 저장된 적어도 하나의 제 2 잠재적인 데이터 블록을 업데이트하는 것을 표현하는 단계 355를 추가로 포함할 수 있다.
본 발명에 있어서, 개시된 방법은 디바이스에 의해 판독 가능한 명령 또는 소프트웨어 또는 펌웨어의 세트로서 구현될 수 있다. 이러한 소프트웨어는 본 발명의 개시된 기능 및 프로세스를 수행하기 위해 프로세서를 프로그램하는데 사용된 저장된 컴퓨터 코드를 포함하는 컴퓨터 판독 가능 저장 매체를 이용하는 프로그램 제품을 포함할 수 있다. 컴퓨터 판독 가능 매체는 이들에 한정되는 것은 아니지만, 임의의 유형의 통상의 플로피 디스크, 광 디스크, CD-ROM, 자기 디스크, 하드 디스크 드라이브, 자기 광학 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드 또는 전자 명령을 저장하기 위한 임의의 다른 적합한 매체를 포함할 수 있다. 또한, 개시된 방법의 단계의 특정 순서 또는 계층은 예시적인 접근법의 예라는 것이 이해된다. 디자인 선호도에 기초하여, 방법의 단계의 특정 순서 또는 계층은 여전히 개시된 요지 내에 있으면서 재배열될 수 있는 것이 이해된다. 첨부된 방법 청구항들은 샘플 순서의 다양한 단계의 요소를 제시하고, 반드시 제시된 특정 순서 또는 계층에 한정되는 것을 의미하는 것은 아니다.
본 발명 및 다수의 그 수반하는 장점이 상기 설명에 의해 이해될 수 있을 것으로 고려되고, 다양한 변경이 개시된 요지로부터 벗어나지 않고 또는 모든 그 실질적인 장점을 희생하지 않고 구성 요소의 형태, 구성 및 배열에서 이루어질 수 있는 것이 명백할 것이다. 설명된 형태는 단지 예시적인 것이고, 이러한 변형을 포함하고 구비하는 것이 이하의 청구범위의 의도이다.
100: 네트워크 110: SAS 확장기
120: 소스 디바이스 130: 소스 디바이스 포트
140: 목적지 디바이스 150: 목적지 디바이스 포트
160: 프로세서 170: 메모리
202: 호스트 204: 확장기
206: 드라이브

Claims (23)

  1. 직렬 연결 소형 컴퓨터 시스템 인터페이스(A Serial Attached Small Computer System Interface: SAS) 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법에 있어서,
    이니시에이터와 타겟 사이의 접속과 관련된 정보 및 상기 SAS 확장기의 저장 및 포워드 프로세스를 통해 수집된 정보를 포함하는 데이터 액세스 정보를 수집하는 단계와,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 정보 및 상기 SAS 확장기의 저장 및 포워드 프로세스를 통해 수집된 정보를 포함하는 데이터 액세스 정보에 기초하여, 상기 이니시에이터와 상기 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하는 단계와,
    상기 타겟의 적어도 하나의 데이터 블록에 대한 데이터 요청을 상기 이니시에이터로부터 수신하는 단계와,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 상기 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후(subsequent)의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 단계와,
    상기 SAS 확장기에 의해, 상기 적어도 하나의 데이터 블록 및 상기 적어도 하나의 잠재적인 데이터 블록에 대한 하나 이상의 데이터 요청을 상기 타겟에 발행하는 단계와,
    상기 적어도 하나의 데이터 블록을 수신하는 단계와,
    상기 적어도 하나의 데이터 블록을 수신할 때 상기 타겟이 다른 작업을 처리하느라 바쁘지 않을 경우, 상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신하는 단계와,
    상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신할 때, 상기 SAS 확장기 내에, 상기 타겟으로부터의 상기 적어도 하나의 잠재적인 데이터 블록을 저장하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 타겟의 적어도 하나의 잠재적인 데이터 블록의 하나 이상에 대한 추가 데이터 요청을 상기 이니시에이터로부터 수신하는 단계와,
    상기 SAS 확장기 내에 저장된 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상이 유효한지 여부를 판정하는 단계와,
    상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상이 유효하다고 판정될 때, 상기 SAS 확장기 내에 저장된 상기 적어도 하나의 잠재적인 데이터 블록으로부터 상기 이니시에이터에 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상을 전송하는 단계를 더 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 정보는, 상기 이니시에이터와 상기 타겟 사이의 접속의 이용 빈도 또는 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 전송된 데이터의 양 중 적어도 하나와 관련된 정보를 포함하는
    방법.
  4. 삭제
  5. 제 3 항에 있어서,
    상기 확장기의 저장 및 포워드 프로세스를 통해 수집된 정보는,
    페이로드 크기 정보, 태그 정보, 논리 블록 어드레스 정보 및 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 송신된 명령의 식별을 포함하는
    방법.
  6. 제 1 항에 있어서,
    상기 이용 임계값은,
    사용자 구성 가능 이용 임계값과 프로그램 가능 이용 임계값 중 적어도 하나를 포함하는
    방법.
  7. 제 1 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 상기 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 단계는,
    요청된 데이터 블록의 선행하는 시퀀스에 기초하여 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 단계를 포함하는
    방법.
  8. 제 1 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 상기 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 단계는,
    상기 적어도 하나의 데이터 블록에 대한 논리 블록 어드레스 근접도에 기초하여 상기 적어도 하나의 잠재적인 데이터 블록을 식별하는 단계를 포함하는
    방법.
  9. 제 1 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 상기 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 단계는,
    상기 적어도 하나의 데이터 블록과의 콘텐츠 관련성에 기초하여 상기 적어도 하나의 잠재적인 데이터 블록을 식별하는 단계를 포함하는
    방법.
  10. 삭제
  11. 제 1 항에 있어서,
    상기 SAS 확장기에 의해, 상기 적어도 하나의 데이터 블록 및 상기 적어도 하나의 잠재적인 데이터 블록에 대한 하나 이상의 데이터 요청을 상기 타겟에 발행하는 단계는,
    상기 SAS 확장기에 의해, 상기 적어도 하나의 데이터 블록에 대한 하나 이상의 제 1 데이터 요청을 상기 타겟에 발행하는 단계와,
    상기 SAS 확장기에 의해, 상기 적어도 하나의 잠재적인 데이터 블록에 대한 하나 이상의 제 2 데이터 요청을 상기 타겟에 발행하는 단계를 포함하는
    방법.
  12. 제 1 항에 있어서,
    상기 SAS 확장기 내의 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상이 유효하지 않다고 판정될 때, 상기 SAS 확장기 내에 저장된 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상을 업데이트하는 단계를 더 포함하는
    방법.
  13. 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하기 위한 수단과,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 데이터 액세스 정보에 기초하여, 상기 이니시에이터와 상기 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하기 위한 수단과,
    상기 타겟의 적어도 하나의 데이터 블록에 대한 데이터 요청을 상기 이니시에이터로부터 수신하기 위한 수단과,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 제 1 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하기 위한 수단과,
    SAS 확장기에 의해, 상기 적어도 하나의 데이터 블록 및 상기 적어도 하나의 잠재적인 데이터 블록에 대한 하나 이상의 데이터 요청을 상기 타겟에 발행하기 위한 수단과,
    상기 적어도 하나의 데이터 블록을 수신하기 위한 수단과,
    상기 적어도 하나의 데이터 블록을 수신할 때 상기 타겟이 다른 작업을 처리하느라 바쁘지 않을 경우, 상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신하기 위한 수단과,
    상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신할 때, 상기 SAS 확장기의 상기 타겟으로부터의 상기 적어도 하나의 잠재적인 데이터 블록을 저장하기 위한 수단과,
    상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상에 대한 추가 데이터 요청을 상기 이니시에이터로부터 수신하기 위한 수단과,
    상기 SAS 확장기 내에 저장된 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상이 유효한지 여부를 판정하기 위한 수단과,
    상기 저장된 적어도 하나의 잠재적인 데이터 블록의 하나 이상이 유효하다고 판정될 때, 상기 이니시에이터에 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상을 전송하기 위한 수단과,
    상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상이 유효하지 않다고 판정될 때, 상기 SAS 확장기 내에 저장된 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상을 업데이트하기 위한 수단을 포함하는
    시스템.
  14. 삭제
  15. 제 13 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하기 위한 수단은,
    상기 이니시에이터와 상기 타겟 사이의 접속의 이용 빈도 또는 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 전송된 데이터의 양 중 적어도 하나와 관련된 데이터 액세스 정보를 수집하기 위한 수단을 포함하는
    시스템.
  16. 제 13 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 데이터 액세스 정보는,
    페이로드 크기 정보, 태그 정보, 논리 블록 어드레스 정보 또는 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 송신된 명령의 식별을 포함하는
    시스템.
  17. 제 13 항에 있어서,
    상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상이 유효하지 않다고 차후에 판정될 때 상기 SAS 확장기 내에 저장된 적어도 하나의 잠재적인 데이터 블록의 하나 이상을 차후에 업데이트하기 위한 수단을 더 포함하는
    시스템.
  18. 직렬 연결 소형 컴퓨터 시스템 인터페이스(SAS) 확장기 디바이스에 있어서,
    데이터 통신을 위해 이니시에이터와 통신적으로 결합하기 위한 제 1 포트와,
    데이터 통신을 위해 타겟과 통신적으로 결합하기 위한 제 2 포트와,
    데이터를 저장하기 위한 캐시 메모리와,
    상기 제 1 포트, 상기 제 2 포트 및 상기 캐시 메모리에 통신적으로 결합되고, 방법을 수행하도록 구성된 명령어를 실행하도록 구성된 프로세서를 포함하되,
    상기 방법은,
    이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하는 것 - 상기 데이터 액세스 정보는 상기 이니시에이터와 상기 타겟 사이의 접속의 이용 빈도, 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 전송된 데이터의 양, 페이로드 크기 정보, 태그 정보, 논리 블록 어드레스 정보 및 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 송신된 명령의 식별 중 적어도 하나를 포함함 - 과,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 데이터 액세스 정보에 기초하여, 상기 이니시에이터와 상기 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하는 것과,
    상기 타겟의 적어도 하나의 데이터 블록에 대한 데이터 요청을 상기 이니시에이터로부터 수신하는 것과,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 상기 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 것과,
    상기 타겟이 다른 작업을 처리하느라 바쁘지 않을 경우, SAS 확장기에 의해 상기 적어도 하나의 데이터 블록 및 상기 적어도 하나의 잠재적인 데이터 블록에 대한 하나 이상의 데이터 요청을 상기 타겟에 발행하는 것과,
    상기 적어도 하나의 데이터 블록을 수신하는 것과,
    상기 적어도 하나의 데이터 블록을 수신할 때 상기 타겟이 다른 작업을 처리하느라 바쁘지 않을 경우, 상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신하는 것과,
    상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신할 때, 상기 타겟으로부터의 적어도 하나의 잠재적인 데이터 블록을 상기 SAS 확장기의 상기 캐시 메모리 내에 저장하는 것과,
    상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상에 대한 추가 데이터 요청을 상기 이니시에이터로부터 수신하는 것과,
    상기 SAS 확장기 내에 저장된 상기 적어도 하나의 저장된 잠재적인 데이터 블록의 하나 이상이 유효한지 여부를 판정하는 것과,
    상기 적어도 하나의 저장된 잠재적인 데이터 블록의 하나 이상이 유효하다고 판정될 때, 상기 캐시 메모리로부터 상기 이니시에이터로 상기 적어도 하나의 잠재적인 데이터 블록의 하나 이상을 전송하는 것과,
    상기 적어도 하나의 저장된 잠재적인 데이터 블록의 하나 이상이 유효하지 않다고 판정될 때, 상기 SAS 확장기 내에 저장된 상기 적어도 하나의 저장된 잠재적인 데이터 블록의 하나 이상을 업데이트하는 것을 포함하는
    SAS 확장기 디바이스.
  19. 제 18 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 상기 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 것은,
    요청된 데이터 블록의 선행하는 시퀀스에 기초하여 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 것을 포함하는
    SAS 확장기 디바이스.
  20. 제 18 항에 있어서,
    상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과한다고 판정될 때, 상기 데이터 요청에 기초하여 상기 이니시에이터로부터의 차후의 데이터 요청 내의 포함을 위해 상기 타겟의 적어도 하나의 잠재적인 데이터 블록을 식별하는 것은,
    상기 적어도 하나의 데이터 블록에 대한 논리 블록 어드레스 근접도에 기초하여 상기 적어도 하나의 잠재적인 데이터 블록을 식별하는 것을 포함하는
    SAS 확장기 디바이스.
  21. 제 13 항에 있어서,
    상기 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하기 위한 수단은,
    이니시에이터와 타겟 사이의 접속과 관련된 정보 및 상기 SAS 확장기의 저장 및 포워드 프로세스를 통해 수집된 정보를 포함하는 데이터 액세스 정보를 수집하는 수단을 더 포함하고,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 데이터 액세스 정보에 기초하여, 상기 이니시에이터와 상기 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하기 위한 수단은,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 정보 및 상기 SAS 확장기의 저장 및 포워드 프로세스를 통해 수집된 정보를 포함하는 데이터 액세스 정보에 기초하여, 상기 이니시에이터와 상기 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하기 위한 수단을 더 포함하는
    시스템.
  22. 제 18 항에 있어서,
    상기 이니시에이터와 타겟 사이의 접속과 관련된 데이터 액세스 정보를 수집하는 것 - 상기 데이터 액세스 정보는 상기 이니시에이터와 상기 타겟 사이의 접속의 이용 빈도, 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 전송된 데이터의 양, 페이로드 크기 정보, 태그 정보, 논리 블록 어드레스 정보 및 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 송신된 명령의 식별 중 적어도 하나를 포함함 - 은,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 정보 및 상기 SAS 확장기의 저장 및 포워드 프로세스를 통해 수집된 정보를 포함하는 데이터 액세스 정보를 수집하는 것 - 상기 데이터 액세스 정보는 상기 이니시에이터와 상기 타겟 사이의 접속의 이용 빈도, 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 전송된 데이터의 양, 페이로드 크기 정보, 태그 정보, 논리 블록 어드레스 정보 및 상기 이니시에이터와 상기 타겟 사이의 접속을 통해 송신된 명령의 식별 중 적어도 하나를 더 포함함 - 을 더 포함하고,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 데이터 액세스 정보에 기초하여, 상기 이니시에이터와 상기 타겟 사이의 접속이 이용 임계값을 초과하는지 여부를 판정하는 것은,
    상기 이니시에이터와 상기 타겟 사이의 접속과 관련된 정보 및 상기 SAS 확장기의 저장 및 포워드 프로세스를 통해 수집된 정보를 포함하는 데이터 액세스 정보에 기초하여, 상기 이니시에이터와 상기 타겟 사이의 접속이 상기 이용 임계값을 초과하는지 여부를 판정하는 것을 더 포함하는
    SAS 확장기 디바이스.
  23. 제 1 항에 있어서,
    상기 적어도 하나의 데이터 블록을 수신할 때 상기 타겟이 다른 작업을 처리하느라 바쁘지 않을 경우, 상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신하는 단계는,
    상기 적어도 하나의 데이터 블록을 수신할 때 상기 타겟이 아이들(idle) 상태 또는 사실상 아이들 상태일 경우, 상기 타겟으로부터 상기 적어도 하나의 잠재적인 데이터 블록을 수신하는 단계를 더 포함하는
    방법.
KR1020110018995A 2010-12-03 2011-03-03 Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스 KR101378270B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/960,118 US8566496B2 (en) 2010-12-03 2010-12-03 Data prefetch in SAS expanders
US12/960,118 2010-12-03

Publications (2)

Publication Number Publication Date
KR20120061710A KR20120061710A (ko) 2012-06-13
KR101378270B1 true KR101378270B1 (ko) 2014-03-25

Family

ID=45747082

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110018995A KR101378270B1 (ko) 2010-12-03 2011-03-03 Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스

Country Status (6)

Country Link
US (1) US8566496B2 (ko)
EP (1) EP2461245A3 (ko)
JP (1) JP5480834B2 (ko)
KR (1) KR101378270B1 (ko)
CN (1) CN102486752B (ko)
TW (1) TWI444833B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8626981B1 (en) * 2011-03-24 2014-01-07 Maxim Integrated Products, Inc. SAS expander with non-blocking virtual PHY architecture
US8689044B2 (en) * 2011-11-16 2014-04-01 Hewlett-Packard Development Company, L.P. SAS host controller cache tracking
US8694826B2 (en) * 2012-02-29 2014-04-08 Hewlett-Packard Development Company, L.P. SAS host cache control
US8898506B2 (en) 2012-07-25 2014-11-25 Lsi Corporation Methods and structure for hardware serial advanced technology attachment (SATA) error recovery in a serial attached SCSI (SAS) expander
US8589607B1 (en) * 2012-08-07 2013-11-19 Lsi Corporation Methods and structure for hardware management of serial advanced technology attachment (SATA) DMA non-zero offsets in a serial attached SCSI (SAS) expander
US8904119B2 (en) 2012-10-31 2014-12-02 Lsi Corporation Method and structures for performing a migration of a logical volume with a serial attached SCSI expander
US8756345B2 (en) 2012-10-31 2014-06-17 Lsi Corporation Methods and structure for managing protection information with a serial attached SCSI expander
US8904108B2 (en) 2012-10-31 2014-12-02 Lsi Corporation Methods and structure establishing nested Redundant Array of Independent Disks volumes with an expander
US9135198B2 (en) 2012-10-31 2015-09-15 Avago Technologies General Ip (Singapore) Pte Ltd Methods and structure for serial attached SCSI expanders that self-configure by setting routing attributes of their ports based on SMP requests
US8782292B2 (en) 2012-10-31 2014-07-15 Lsi Corporation Methods and structure for performing a rebuild of a logical volume with a serial attached SCSI expander
US9026706B2 (en) 2012-12-14 2015-05-05 Lsi Corporation Method and system for detecting multiple expanders in an SAS topology having the same address
US8990448B2 (en) 2013-03-08 2015-03-24 Lsi Corporation Smart discovery model in a serial attached small computer system topology
US20140297910A1 (en) * 2013-03-29 2014-10-02 Hewlett-Packard Development Company, L.P. Sas expander
CN104956348B (zh) * 2013-04-02 2018-04-20 慧与发展有限责任合伙企业 Sata发起方寻址和存储设备分片
WO2015126420A1 (en) * 2014-02-24 2015-08-27 Hewlett-Packard Development Company, L.P. Sas zone configuration management
CN104601711A (zh) * 2015-01-27 2015-05-06 曙光云计算技术有限公司 用于云服务器的基于fpga的数据存储方法和***
US11289137B2 (en) 2017-11-16 2022-03-29 Micron Technology, Inc. Multi-port storage-class memory interface
US10990307B2 (en) * 2018-07-27 2021-04-27 Broadcom International Pte. Ltd. System and method for providing a configurable storage media interface

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090138672A1 (en) 2007-11-22 2009-05-28 Hitachi, Ltd. Storage controller and storage controller control method

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55118168A (en) * 1979-03-02 1980-09-10 Hitachi Ltd Memory reading control system
JPS615358A (ja) * 1984-06-07 1986-01-11 Fujitsu Ltd デ−タ処理装置
JPS61221966A (ja) * 1985-03-28 1986-10-02 Nec Corp ベクトル命令処理装置
US4878219A (en) * 1988-04-28 1989-10-31 Digital Equipment Corporation Method and apparatus for nodes in network to avoid shrinkage of an interframe gap
JPH02127742A (ja) * 1988-11-07 1990-05-16 Nec Corp 空き領域検索方式
SE469402B (sv) * 1991-05-02 1993-06-28 Swedish Inst Of Computer Scien Foerfarande foer att haemta data till ett cache-minne
US5634025A (en) * 1993-12-09 1997-05-27 International Business Machines Corporation Method and system for efficiently fetching variable-width instructions in a data processing system having multiple prefetch units
US5881254A (en) * 1996-06-28 1999-03-09 Lsi Logic Corporation Inter-bus bridge circuit with integrated memory port
JPH1016115A (ja) * 1996-07-08 1998-01-20 Mitsui Petrochem Ind Ltd 透湿性シート
US6138192A (en) * 1996-12-31 2000-10-24 Compaq Computer Corporation Delivering a request to write or read data before delivering an earlier write request
US6298407B1 (en) * 1998-03-04 2001-10-02 Intel Corporation Trigger points for performance optimization in bus-to-bus bridges
FI105749B (fi) * 1998-06-12 2000-09-29 Ericsson Telefon Ab L M Dataverkkoliikennöinti
JP3149856B2 (ja) * 1998-08-31 2001-03-26 日本電気株式会社 磁気ディスク制御装置
US6286074B1 (en) * 1999-03-24 2001-09-04 International Business Machines Corporation Method and system for reading prefetched data across a bridge system
US6636927B1 (en) * 1999-09-24 2003-10-21 Adaptec, Inc. Bridge device for transferring data using master-specific prefetch sizes
US6678782B1 (en) * 2000-06-27 2004-01-13 International Business Machines Corporation Flow architecture for remote high-speed interface application
US6820161B1 (en) * 2000-09-28 2004-11-16 International Business Machines Corporation Mechanism for allowing PCI-PCI bridges to cache data without any coherency side effects
KR100649300B1 (ko) * 2000-11-07 2006-11-24 주식회사 케이티 통신 시스템에서의 적응적인 데이터 전송 방법 및 그 장치
US7047327B1 (en) * 2000-12-20 2006-05-16 Adaptec, Inc. Method and structure for supporting flow control by a SCSI initiator during the data out phase of the packetized SCSI protocol
US6721870B1 (en) 2001-06-12 2004-04-13 Emc Corporation Prefetch algorithm for short sequences
US6792496B2 (en) * 2001-08-02 2004-09-14 Intel Corporation Prefetching data for peripheral component interconnect devices
US6578130B2 (en) * 2001-10-18 2003-06-10 International Business Machines Corporation Programmable data prefetch pacing
US6973528B2 (en) * 2002-05-22 2005-12-06 International Business Machines Corporation Data caching on bridge following disconnect
US7089369B2 (en) * 2003-03-31 2006-08-08 Sun Microsystems, Inc. Method for optimizing utilization of a double-data-rate-SDRAM memory system
US7139878B2 (en) * 2003-06-20 2006-11-21 Freescale Semiconductor, Inc. Method and apparatus for dynamic prefetch buffer configuration and replacement
US7424562B2 (en) * 2004-03-01 2008-09-09 Cisco Technology, Inc. Intelligent PCI bridging consisting of prefetching data based upon descriptor data
US7107384B1 (en) * 2004-03-01 2006-09-12 Pericom Semiconductor Corp. Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths
CN100511118C (zh) * 2004-12-21 2009-07-08 普安科技股份有限公司 储存虚拟化控制器、子***及***与方法
US9495263B2 (en) 2004-12-21 2016-11-15 Infortrend Technology, Inc. Redundant SAS storage virtualization subsystem and system using the same, and method therefor
JP2006331252A (ja) * 2005-05-30 2006-12-07 Matsushita Electric Ind Co Ltd バスブリッジ装置
US7657690B1 (en) * 2005-06-14 2010-02-02 Globalfoundries Inc. Control of PCI memory read behavior using memory read alias and memory command reissue bits
US20070005833A1 (en) 2005-06-30 2007-01-04 Pak-Lung Seto Transmit buffers in connection-oriented interface
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US8081827B2 (en) * 2006-02-28 2011-12-20 Ricoh Co., Ltd. Compressed data image object feature extraction, ordering, and delivery
JP5052193B2 (ja) * 2007-04-17 2012-10-17 株式会社日立製作所 記憶制御装置および記憶制御方法
JP4809413B2 (ja) * 2008-10-08 2011-11-09 株式会社日立製作所 ストレージシステム
US8490088B2 (en) * 2010-09-10 2013-07-16 International Business Machines Corporation On demand virtual machine image streaming
US8949579B2 (en) * 2010-10-04 2015-02-03 International Business Machines Corporation Ineffective prefetch determination and latency optimization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090138672A1 (en) 2007-11-22 2009-05-28 Hitachi, Ltd. Storage controller and storage controller control method

Also Published As

Publication number Publication date
EP2461245A2 (en) 2012-06-06
US8566496B2 (en) 2013-10-22
EP2461245A3 (en) 2012-11-21
CN102486752B (zh) 2016-05-04
TW201224777A (en) 2012-06-16
US20120144082A1 (en) 2012-06-07
TWI444833B (zh) 2014-07-11
JP5480834B2 (ja) 2014-04-23
JP2012118958A (ja) 2012-06-21
KR20120061710A (ko) 2012-06-13
CN102486752A (zh) 2012-06-06

Similar Documents

Publication Publication Date Title
KR101378270B1 (ko) Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스
CN105612488B (zh) 数据写请求处理方法和存储阵列
US6954839B2 (en) Computer system
US8850116B2 (en) Data prefetch for SCSI referrals
AU2010319840A1 (en) Allocating storage memory based on future use estimates
WO2017006674A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US10452557B2 (en) Storage apparatus, computer system, and method for improved read operation handling
CN106133707A (zh) 高速缓存管理
WO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
CN103927136B (zh) 输入输出io类型的识别方法和装置
US20230137668A1 (en) storage device and storage system
JP2005115600A (ja) 情報処理装置及び方法
US10318196B1 (en) Stateless storage system controller in a direct flash storage system
US8713257B2 (en) Method and system for shared high speed cache in SAS switches
US9652155B2 (en) Computer system, cash data management method, and computer
US9798661B2 (en) Storage system and cache control method
CN103377145A (zh) 使用逻辑卷映射装载预取高速缓存的方法和装置
US10168944B2 (en) Information processing apparatus and method executed by an information processing apparatus
US9253276B2 (en) Multi-protocol bridge with integrated performance accelerating cache
CN106155583B (zh) 缓存固态设备读取请求结果的***和方法
JP2009294699A (ja) ストレージ装置
US10713171B2 (en) Computer system
CN105827681A (zh) 一种san网络下备份数据传输方法
US11977636B2 (en) Storage transaction log
WO2016181640A1 (ja) 計算装置、方法、及び、プログラム

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee