KR20120046259A - 드라이브로부터 호스트 디바이스로 보내진 정보에 갭 삽입 - Google Patents

드라이브로부터 호스트 디바이스로 보내진 정보에 갭 삽입 Download PDF

Info

Publication number
KR20120046259A
KR20120046259A KR1020127004286A KR20127004286A KR20120046259A KR 20120046259 A KR20120046259 A KR 20120046259A KR 1020127004286 A KR1020127004286 A KR 1020127004286A KR 20127004286 A KR20127004286 A KR 20127004286A KR 20120046259 A KR20120046259 A KR 20120046259A
Authority
KR
South Korea
Prior art keywords
drive
information
host device
commands
time delay
Prior art date
Application number
KR1020127004286A
Other languages
English (en)
Other versions
KR101281480B1 (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 KR20120046259A publication Critical patent/KR20120046259A/ko
Application granted granted Critical
Publication of KR101281480B1 publication Critical patent/KR101281480B1/ko

Links

Images

Classifications

    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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

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 Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Transfer Systems (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Bus Control (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Pinball Game Machines (AREA)

Abstract

드라이브로부터 호스트 디바이스로 보내진 정보에 갭을 삽입하기 위한 시스템, 방법, 그리고 컴퓨터 프로그램 물건이 제공된다. 동작시, 하나의 커맨드들이 호스트 디바이스로부터 드라이브에서 수신된다. 추가적으로, 정보는 호스트 디바이스로 보내기 위해 큐잉된다. 더욱이, 갭은 호스트 디바이스로 보내기 위해 정보에 삽입되어 호스트 디바이스는 드라이브로 추가적인 커맨드들을 보낼 수 있다.

Description

드라이브로부터 호스트 디바이스로 보내진 정보에 갭 삽입{INSERTING A GAP IN INFORMATION SENT FROM A DRIVE TO A HOST DEVICE}
본 발명은 메모리 시스템들(memory systems)에 관한 것으로, 보다 특정하게는 일단 드라이브(drive)가 데이터를 보내기 시작하면, 호스트 디바이스(host device)로부터 드라이브에서 커맨드들(commands)을 수신하는 것에 관한 것이다.
많은 저장 시스템들(storage systems)에서, 타겟 디바이스들(target devices)은 충돌이 존재하는 경우, 호스트를 통해 프레임들을 전송할 때 우선순위(priority)를 갖는다. 이들 경우들에서, 커맨드들을 큐잉(예를 들어, 제 1 파티 다이렉트 메모리 액세스(First Party Direct Memory Access) 등을 이용)할 때, 일단 타겟이 데이터 페이즈(data phase)를 입력하기 위해 다이렉트 메모리 액세스(DMA) 셋업 프레임 정보 구조(FIS)를 보냈다면, 호스트는 전형적으로 타겟 디바이스로 임의의 커맨드들을 보낼 수 없다.
드라이브가 데이터를 신속히 페치(fetch)할 수 있다면, 호스트는 최대 큐 깊이(maximum queue depth)와 동일한 다수의 커맨드들을 드라이브로 보낼 수 있다. 그 다음 드라이브는 프레임들 간에 어떠한 중단들(breaks)이 없이 DMA 셋업, 데이터, DMA 셋업, 데이터 등을 리턴할 수 있다. 이것은 호스트가 임의의 보다 많은 커맨드들을 보내도록 허용하지 않는다.
이들 경우들에서, 드라이브의 큐 깊이는 최대 큐 깊이로부터 0으로, 다시 최대 큐 깊이로, 그리고 다시 0으로 진동할 수 있다. 이것은 성능에 부정적인 영향을 끼칠 수 있다. 따라서 종래 기술과 연관된 이들 및/또는 다른 이슈들(issues)을 다룰 필요가 있다.
드라이브로부터 호스트 디바이스로 보내지는 정보에 갭(gap)을 삽입하기 위한 시스템, 방법, 그리고 컴퓨터 프로그램 물건이 제공된다. 동작시, 하나 이상의 커맨드들이 호스트 디바이스로부터 드라이브에서 수신된다. 추가적으로, 정보는 호스트 디바이스로 보내기 위해 큐잉된다. 더욱이, 호스트 디바이스가 드라이브로 추가적인 커맨드들을 보낼 수 있도록, 갭은 호스트 디바이스로 보내기 위해 정보에 삽입된다.
도 1은 일 실시예에 따라서 드라이브로부터 호스트 디바이스로 보내진 정보에 갭을 삽입하기 위한 방법을 도시한다.
도 2는 일 실시예에 따라서 드라이브로부터 호스트 디바이스로 보내진 정보에 갭을 삽입하기 위한 시스템을 도시한다.
도 3은 다른 실시예에 따라서 드라이브로부터 호스트 디바이스로 보내진 정보에 갭을 삽입하기 위한 방법을 도시한다.
도 4는 다양한 이전 실시예들의 다양한 아키텍처 및/또는 기능이 구현될 수 있는 예시적인 시스템을 예시한다.
본 발명의 하나 이상의 실시예들의 상세한 설명이 본 발명의 선택된 세부사항들(details)을 예시하는 첨부 도면들과 함께 이하 제공된다. 본 발명은 실시예들과 관련하여 기술된다. 본 명세서에서 실시예들은 단지 예시적인 것으로 이해되며, 본 발명은 본 명세서내 임의의 또는 모든 실시예들로 또는 모든 실시예들에 의해 명확히 제한되지 않으며, 본 발명은 많은 대안들, 변경들, 그리고 균등물들을 망라한다. 설명에 있어서 단조로움을 피하기 위해, (제 1(first), 최종(last), 특정(certain), 다양한(various), 게다가(further), 기타(other), 특별한(particular), 선택하다(select), 몇몇(some), 그리고 주목할 만한(notable) 등을 포함하지만 이에 제한되지 않는) 다양한 워드 라벨들(word labels)이 실시예들의 세트들을 구별하기 위해 적용될 수 있다; 본 명세서에서 사용된 바와 같이, 이러한 라벨들은 명확히 품질, 또는 임의의 형태의 선호(preference) 또는 편견(prejudice)을 시사하기 위한 것으로 여겨지지 않으며, 단지 개별 세트들 사이를 편리하게 구별하기 위한 것이다. 개시된 프로세스들 중 몇몇 동작들의 순서는 본 발명의 범주내에서 변경가능하다. 많은 특정한 세부사항들이 본 발명의 완전한 이해를 제공하기 위해 다음 서술에서 설명된다. 세부사항들은 예를 위해 제공되며 본 발명은 일부 또는 전체의 세부사항들 없이도 청구항들에 따라서 실행될 수 있다. 명료성을 위해, 본 발명과 관련된 기술 분야들에 알려진 기술 자료는 본 발명이 불필요하게 모호해지지 않도록 하기 위해 상세히 기술되지 않았다.
도입부[INTRODUCTION]
본 도입부는 단지 상세한 설명의 보다 빠른 이해를 용이하게 하기 위해 포함된다; 임의의 도입부의 단락들이 필연적으로 전체 요지의 요약된 견해이며 완전하거나 제한적인 설명으로 여겨지지 않기 때문에, 본 발명은 (만약에 있다면, 명백한 예들을 포함하는) 도입부에 제공된 개념들로 제한되지 않는다. 예를 들어, 이어지는 도입부는 공간과 조직에 의해 소정의 실시예들만으로 제한된 개요 정보(overview information)를 제공한다. 궁국적으로 청구항들을 유도해낼 실시예들을 포함하며 명세서의 나머지 부분(balance) 전반에 걸쳐서 논의되는, 많은 다른 실시예들이 존재한다.
드라이브로부터 호스트 디바이스로 보내진 정보에 갭을 삽입하기 위한 시스템, 방법, 그리고 컴퓨터 프로그램 물건이 제공된다. 동작시, 하나 이상의 커맨드들이 호스트 디바이스로부터 드라이브에서 수신된다. 추가적으로, 호스트 디바이스로 보내기 위해 정보가 큐잉된다. 더욱이, 호스트 디바이스가 드라이브로 추가적인 커맨드들을 보낼 수 있도록, 호스트 디바이스로 보내기 위해 정보에 갭이 삽입된다.
예시적인 실시예들[EXAMPLE EMBODIMENTS]
상세한 설명에 대한 도입부를 끝냄에 있어서, 다음은 "EC들"(예시적인 조합들(Example Combinations))로서 명시적으로 열거된 적어도 몇몇을 포함하고, 본 명세서에 기술된 개념들에 따라서 다양한 실시 유형들의 추가적인 설명을 제공하는 예시적인 실시예들의 집합이다; 이들 예들은 상호 배타적이고, 완전하거나, 또는 제한적인 것으로 여겨지지 않는다; 그리고 본 발명은 이들 예시적인 실시예들로 제한되지 않으며 오히려 허여된 청구항들(issued claims)의 범주내 모든 가능한 변경들 및 변화들을 망라한다.
EC1.
호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하는 단계;
상기 호스트 디바이스로 보내기 위해 정보를 큐잉하는 단계; 그리고
상기 호스트 디바이스가 상기 드라이브로 추가적인 커맨드들을 보낼 수 있도록, 상기 호스트 디바이스로 보내기 위해 상기 정보에 갭을 삽입하는 단계를 포함하는, 방법.
EC2.
EC1에 있어서,
상기 갭을 삽입하는 단계는 시간 지연을 삽입하는 단계를 포함하는, 방법.
EC3.
EC2에 있어서,
상기 정보는 상기 하나 이상의 커맨드들 중 적어도 하나와 연관된 셋업 정보 및 데이터를 포함하는, 방법.
EC4.
EC3에 있어서,
상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS)를 포함하는, 방법.
EC5.
EC3에 있어서,
상기 셋업 정보는 세트 디바이스 비트 FIS를 포함하는, 방법.
EC6.
EC3에 있어서,
상기 시간 지연은 상기 셋업 정보를 보내기 전에 삽입되는, 방법.
EC7.
EC3에 있어서,
상기 지연 시간은 상기 셋업 정보를 보낸 후 삽입되는, 방법.
EC8.
EC2에 있어서,
상기 시간 지연 기간 동안 상기 호스트 디바이스로부터 상기 드라이브에서 상기 추가적인 커맨드들을 수신하는 단계를 더 포함하는, 방법.
EC9.
EC2에 있어서,
상기 시간 지연을 삽입하는 단계는 상기 정보가 상기 호스트 디바이스로 보내지고 있는 기간 동안 상기 시간 지연을 삽입하는 단계를 포함하는, 방법.
EC10.
EC9에 있어서,
상기 시간 지연은 상기 드라이브의 현재의 큐 깊이(current queue depth)에 기초하여 삽입되는, 방법.
EC11.
EC9에 있어서,
상기 시간 지연은 이전 커맨드가 수신되었던 이후의 시간의 양에 기초하여 삽입되는, 방법.
EC12.
EC9에 있어서,
상기 시간 지연의 시간의 길이는 상기 드라이브의 현재의 큐 깊이에 기초하는, 방법.
EC13.
EC9 있어서,
상기 시간 지연의 시간의 길이는 이전 커맨드가 상기 드라이브에 의해 수신되었던 이후의 시간의 양에 기초하는, 방법.
EC14.
EC2에 있어서,
상기 시간 지연의 시간의 길이 또는 상기 시간 지연이 삽입되는 시점 중 적어도 하나는 실시간으로 결정되는, 방법.
EC15.
EC2에 있어서,
상기 시간 지연의 시간의 길이 또는 상기 시간 지연이 삽입되는 시점 중 적어도 하나는 사전결정된 값인, 방법.
EC16.
EC2에 있어서,
상기 정보는 상기 시간 지연이 상기 셋업 정보에 이어지는 것을 나타내는 정보를 포함하는 셋업 정보를 포함하는, 방법.
EC17.
EC2에 있어서,
상기 정보는 상태 정보(status information)를 포함하고 상기 시간 지연은 상기 상태 정보를 보내기 전에 삽입되는, 방법.
EC18.
EC1에 있어서,
상기 갭을 삽입하는 단계는 추가적인 정보를 삽입하는 단계를 포함하는, 방법.
EC19.
EC1에 있어서,
상기 호스트 디바이스는 상기 갭 보다 앞서 상기 갭에 관해 통지를 받는, 방법.
EC20.
EC1에 있어서,
상기 드라이브는 직렬 ATA(SATA) 드라이브를 포함하는, 방법.
EC21.
호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하기 위한 컴퓨터 코드;
상기 호스트 디바이스로 보내기 위해 정보를 큐잉하기 위한 컴퓨터 코드;
상기 호스트 디바이스가 상기 드라이브로 추가적인 커맨드들을 보낼 수 있도록, 상기 호스트 디바이스로 보내기 위해 상기 정보에 갭을 삽입하기 위한 컴퓨터 코드를 포함하는, 컴퓨터 판독가능 매체상에 구현된 컴퓨터 프로그램 물건.
EC22.
호스트 디바이스로부터 하나 이상의 커맨드들을 수신하기 위한 드라이브;
상기 호스트 디바이스로 보내기 위해 정보를 큐잉하기 위한 버퍼; 그리고
상기 호스트 디바이스가 상기 드라이브로 추가적인 커맨드들을 보낼 수 있도록, 상기 호스트 디바이스로 보내기 위해 상기 정보에 갭을 삽입하기 위한 컨트롤러를 포함하는, 장치.
EC23.
호스트 드라이브로부터 커맨드들을 수신하도록 이네이블되는 드라이브 ?상기 호스트 디바이스는 상기 드라이브로 하여금 상기 호스트 디바이스가 추가적인 커맨드들을 보내지 못하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블됨?,
컨트롤러, 및
버퍼를 포함하며; 그리고
상기 드라이브는 충돌이 존재할 때 상기 호스트 디바이스에 비해 우선순위를 가지며,
상기 버퍼는 상기 호스트 디바이스로 보내기 위해 정보를 큐잉하도록 이네이블되며, 그리고
상기 컨트롤러는 상기 정보에 갭을 삽입도록 이네이블되며, 상기 호스트 디바이스는 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블링되는 , 시스템.
EC24.
EC23에 있어서,
상기 컨트롤러는 상기 갭을 삽입하도록 추가로 이네이블되어, 상기 드라이브가 상기 호스트 디바이스로 셋업 정보를 보내는 것을 통해 적어도 부분적으로 상기 호스트 디바이스로 상기 정보를 보내는 것을 개시한 후에, 상기 호스트 디바이스는 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되는, 시스템.
EC25.
EC24에 있어서,
상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 셋업을 포함하는, 시스템.
EC26.
EC23에 있어서,
상기 드라이브는
직렬 ATA(SATA) 드라이브,
직렬 부착 SCSI(SAS) 드라이브,
파이버 채널(Fibre Channel) 드라이브, 및
범용 직렬 버스(Universal Serial Bus : USB) 드라이브
중 하나 이상을 포함하는, 시스템.
EC27.
EC23에 있어서,
상기 커맨드들은
전달 요청(transfer request),
데이터 전달을 위한 커맨드,
상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드, 그리고
데이터를 리트리브하기 위한 커맨드
중 하나 이상을 포함하는, 시스템.
EC28.
EC23에 있어서,
상기 정보는
데이터 정보,
데이터 구조 정보,
다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
세트 디바이스 비트 FIS, 그리고
상기 커맨드들 중 적어도 하나와 연관된 데이터
중 하나 이상을 포함하는, 시스템.
EC29.
EC23에 있어서,
상기 갭은
브레이크(break),
인터럽션(interruption), 그리고
지연(delay)
중 하나 이상을 포함하는, 시스템.
EC30.
EC23에 있어서,
상기 갭은
시간 지연,
추가적인 정보,
상기 갭의 길이,
벤더 특정 정보, 그리고
상기 갭과 연관된 정보
중 하나 이상을 포함하는, 시스템.
EC31.
EC23에 있어서,
상기 컨트롤러는 상기 드라이브의 현재의 커맨드 큐에 적어도 부분적으로 기초하여 상기 갭을 삽입하도록 추가로 이네이블되는, 시스템.
EC32.
EC23에 있어서,
상기 컨트롤러는 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하여 상기 갭을 삽입하도록 추가로 이네이블되는, 시스템.
EC33.
EC23에 있어서,
상기 갭은 시간 지연을 포함하고, 상기 컨트롤러는, 실시간으로, 상기 시간 지연의 시간의 길이를 결정하도록 이네이블되는, 시스템.
EC34.
EC23에 있어서,
상기 갭은 시간 지연을 포함하고, 상기 컨트롤러는 실시간으로 상기 시간 지연이 삽입되는 시점을 결정하도록 이네이블되는, 시스템.
EC35.
호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하는 단계 ? 상기 호스트 디바이스는 상기 드라이브로 하여금 상기 호스트 디바이스가 추가적인 커맨드들을 보내지 못하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블됨 ?;
상기 호스트 디바이스로 보내기 위해 정보를 큐잉하는 단계 ?상기 보내는 것은 적어도 부분적으로 상기 호스트 디바이스로 셋업 정보를 보내는 것을 통해 이루어짐?;
시간 지연을 삽입할지 여부를 결정하는 단계; 그리고
상기 결정에 기초하여, 상기 호스트 디바이스가 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되게 상기 시간 지연을 조건적으로 삽입하는 단계
를 포함하는, 방법.
EC36.
EC35에 있어서,
상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 셋업을 포함하는, 방법.
EC37.
EC35에 있어서,
활성 큐잉된 커맨드들이 존재하는지 여부를 결정하기 위해 상기 드라이브와 연관된 버퍼를 조사하며, 존재한다면, 상기 결정하는 단계를 수행하는 단계를 더 포함하는, 방법.
EC38.
EC35에 있어서,
상기 드라이브는
직렬 ATA(SATA) 드라이브,
직렬 부착 SCSI(SAS) 드라이브,
파이버 채널(FC) 드라이브, 그리고
범용 직렬 버스(USB) 드라이브
중 하나 이상을 포함하는, 방법.
EC39.
EC35에 있어서,
상기 커맨드들은
전달 요청,
데이터를 전달하기 위한 커맨드,
상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드, 그리고
데이터를 리트리브하기 위한 커맨드
중 하나 이상을 포함하는, 방법.
EC40.
EC35에 있어서,
상기 정보는
데이터 정보,
데이터 구조 정보,
다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
세트 디바이스 비트 FIS, 그리고
상기 커맨드들 중 적어도 하나와 연관된 데이터
중 하나 이상을 포함하는, 방법.
EC41.
EC35에 있어서,
상기 결정하는 단계는 상기 드라이브의 현재의 커맨드 큐 깊이에 적어도 부분적으로 기초하는, 방법.
EC42.
EC35에 있어서,
상기 결정하는 단계는 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하는, 방법.
EC43.
EC35에 있어서,
실시간으로, 상기 시간 지연의 길이를 결정하는 단계를 더 포함하는, 방법.
EC44.
EC35에 있어서,
실시간으로, 상기 시간 지연이 삽입되는 시점을 결정하는 단계를 더 포함하는, 방법.
EC45.
호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하기 위한 수단 ? 상기 호스트 디바이스는 상기 드라이브로 하여금 상기 호스트 디바이스가 추가적인 커맨드들을 보내지 못하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블됨?;
상기 호스트 디바이스로 보내기 위해 정보를 큐잉하기 위한 수단 ?상기 보내는 것은 적어도 부분적으로 상기 호스트 디바이스로 셋업 정보를 보내는 것을 통해 이루어짐?;
시간 지연을 삽입할지 여부를 결정하기 위한 수단; 그리고
상기 결정하기 위한 수단에 기초하여, 상기 호스트 디바이스가 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되게 상기 시간 지연을 조건적으로 삽입하기 위한 수단
을 포함하는, 시스템.
EC46.
EC45에 있어서,
상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 셋업을 포함하는, 시스템.
EC47.
EC45에 있어서,
활성 큐잉된 정보가 존재하는지 여부를 결정하기 위해 상기 드라이브와 연관된 버퍼를 조사하기 위한 수단을 더 포함하며, 상기 결정하기 위한 수단은 상기 조사하기 위한 수단의 결과에 기초하는 조건부인, 시스템.
EC48.
EC45에 있어서,
상기 드라이브는
직렬 ATA(SATA) 드라이브,
직렬 부착 SCSI(SAS) 드라이브,
파이버 채널(FC) 드라이브, 그리고
범용 직렬 버스(USB) 드라이브
중 하나 이상을 포함하는, 시스템.
EC49.
EC45에 있어서,
상기 커맨드들은
전달 요청,
데이터를 전달하기 위한 커맨드,
상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드, 그리고
데이터를 리트리브하기 위한 커맨드
중 하나 이상을 포함하는, 시스템.
EC50.
EC45에 있어서,
상기 정보는
데이터 정보,
데이터 구조 정보,
다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
세트 디바이스 비트 FIS, 그리고
상기 커맨드들 중 적어도 하나와 연관된 데이터
중 하나 이상을 포함하는, 시스템.
EC51.
EC45에 있어서,
상기 결정하기 위한 수단은 상기 드라이브의 현재의 커맨드 큐 깊이에 적어도 부분적으로 기초하여 동작하는, 시스템.
EC52.
EC45에 있어서,
상기 결정하기 위한 수단은 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하여 동작하는, 시스템.
EC53.
EC45에 있어서,
실시간으로, 상기 시간 지연의 길이를 결정하기 위한 수단을 더 포함하는, 시스템.
EC54.
EC45에 있어서,
실시간으로 상기 시간 지연이 삽입되는 시점을 결정하기 위한 수단을 더 포함하는, 시스템.
EC55.
컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 기능들을 수행하게 하는 명령들의 세트가 그 내부에 저장되는, 유형적(tangible) 컴퓨터 판독가능 매체로서, 상기 기능들은,
호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하는 것? 상기 호스트 디바이스는, 상기 드라이브로 하여금 상기 호스트 디바이스가 추가적인 커맨드들을 보내지 못하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블됨?;
상기 호스트 디바이스로 보내기 위해 정보를 큐잉하는 것 ?상기 보내는 것은 적어도 부분적으로 상기 드라이브로 셋업 정보를 보내는 것을 통해 이루어짐?; 그리고
상기 호스트 디바이스가 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되게 시간 지연을 조건적으로 삽입하는 것을 포함하는, 유형적 컴퓨터 판독가능 매체.
EC56.
EC55에 있어서,
상기 조건적으로 삽입하는 것은 상기 시간 지연을 삽입할지 여부를 결정하는 것에 적어도 부분적으로 기초하는, 유형적 컴퓨터 판독가능 매체.
EC57.
EC56에 있어서,
상기 결정하는 것은 상기 드라이브의 현재의 커맨드 큐 깊이에 적어도 부분적으로 기초하는, 유형적 컴퓨터 판독가능 매체.
EC58.
EC56에 있어서,
상기 결정하는 것은 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하는, 유형적 컴퓨터 판독가능 매체.
EC59.
EC55에 있어서,
상기 기능들은, 실시간으로, 상기 시간 지연의 길이를 결정하는 것을 더 포함하는, 유형적 컴퓨터 판독가능 매체.
EC60.
EC55에 있어서,
상기 기능들은 실시간으로 상기 지연 시간이 삽입되는 시점을 결정하는 것을 더 포함하는, 유형적 컴퓨터 판독가능 매체.
EC61.
EC55에 있어서,
상기 드라이브는
직렬 ATA(SATA) 드라이브,
직렬 부착 SCSI(SAS) 드라이브,
파이버 채널(FC) 드라이브, 그리고
범용 직렬 버스(USB) 드라이브
중 하나 이상을 포함하는, 유형적 컴퓨터 판독가능 매체.
EC62.
EC55에 있어서,
상기 커맨드들은
전달 요청,
데이터를 전달하기 위한 커맨드,
상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드; 그리고
데이터를 리트리브하기 위한 커맨드
중 하나 이상을 포함하는, 유형적 컴퓨터 판독가능 매체.
EC63.
EC55에 있어서,
상기 정보는
데이터 정보,
데이터 구조 정보,
다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
세트 디바이스 비트 FIS, 그리고
상기 커맨드들 중 적어도 하나와 연관된 데이터
중 하나 이상을 포함하는, 유형적 컴퓨터 판독가능 매체.
다양한 실시예들의 설명들(DESCRIPTIONS OF VARIOUS EMBODIMENTS)
일 실시예에 따라서, 도 1은 드라이브로부터 호스트 디바이스로 보내지는 정보에 갭을 삽입하기 위한 방법(100)을 도시한다. 도시된 바와 같이, 하나 이상의 커맨드들은 호스트 디바이스로부터 드라이브에서 수신된다. 동작(102)을 참조.
커맨드들은 호스트 디바이스로부터 드라이브로 보내질 수 있는 임의의 커맨드 또는 명령을 포함할 수 있다. 예를 들어, 일 실시예에서, 커맨드는 데이터(예를 들어, 전달 요청 등)를 전달하기 위해 커맨드를 포함할 수 있다. 다른 실시예에서, 커맨드는 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드를 포함할 수 있다.
드라이브는 데이터를 저장할 수 있는 임의의 드라이브를 포함할 수 있다. 예를 들어, 일 실시예에서, 드라이브는 직렬 ATA(SATA) 드라이브를 포함할 수 있다. 다양한 다른 실시예들에서, 드라이브는 직렬 부착 SCSI(SAS) 드라이브, 파이버 채널(FC) 드라이브, 또는 범용 직렬 버스(USB) 드라이브, 및/또는 임의의 다른 저장 디바이스 또는 드라이브를 포함할 수 있지만, 이에 제한되지 않는다.
게다가, 호스트 디바이스는 드라이브로 커맨드들을 보낼 수 있는 임의의 디바이스를 포함할 수 있다. 예를 들어, 다양한 실시예들에서, 호스트 디바이스는 데스크탑 컴퓨터, 랩-탑 컴퓨터, 및/또는 임의의 다른 유형의 로직을 포함할 수 있다. 여전히, 호스트 디바이스는 휴대 정보 단말기(PDA) 디바이스, 모바일 폰 디바이스 등을 포함하지만, 이에 제한되지 않는 다양한 다른 디바이스들의 형태를 취할 수 있다.
도 1에 더 도시된 바와 같이, 호스트 디바이스로 보내기 위해 정보가 큐잉된다. 동작(104)을 참조. 일 실시예에서, 정보는 버퍼 또는 데이터를 큐잉할 수 있는 디바이스내에서 큐잉될 수 있다.
정보는 데이터(예를 들어, 데이터 유형 정보, 데이터 구조 정보 등)와 연관된 임의의 데이터 또는 정보를 포함할 수 있다. 일 실시예에서, 정보는 커맨드들 중 적어도 하나와 연관된 셋업 정보와 데이터를 포함할 수 있다. 예를 들어, 호스트 디바이스로부터 드라이브에서 수신된 커맨드들은 데이터를 리트리브하기 위한 커맨드를 포함할 수 있다.
그 다음 드라이브는 데이터와 셋업 정보를 큐잉할 수 있다. 일 실시예에서, 셋업 정보는 다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS)를 포함할 수 있다. 다른 실시예에서, 셋업 정보는 세트 디바이스 비트 FIS를 포함할 수 있다. 주목해야 할 것은, 다양한 실시예들에서, 갭은 시간 기반 또는 커맨드 임계치 기반 또는 이들 둘의 조합에 기반을 둘 수 있다. 임계치는 또한 커맨드들의 수 및 큐 깊이 또는 다른 파라미터들에 기초할 수 있다.
더욱이, 호스트 디바이스가 드라이브로 추가적인 커맨드들을 보낼 수 있도록, 호스트 디바이스로 보내기 위해 정보에 갭이 삽입된다. 동작(106)을 참조. 본 발명의 설명의 정황에서, 갭은 호스트 디바이스가 드라이브로 커맨드들을 보낼 수 있는 브레이크, 인터럽션, 또는 지연을 지칭한다.
다양한 실시예들에서, 갭은 시간 지연, 또는 추가적인 정보 등을 포함할 수 있다. 예를 들어, 일 실시예에서, 갭을 삽입하는 것은 시간 지연을 삽입하는 것을 포함할 수 있다. 다른 실시예에서, 갭을 삽입하는 것은 추가적인 정보를 삽입하는 것을 포함할 수 있다.
추가적인 정보는 임의의 유형의 정보를 포함할 수 있다. 예를 들어, 일 실시예에서, 추가적인 정보는 갭의 길이를 나타내는 정보를 포함할 수 있다. 다른 실시예에서, 추가적인 정보는 벤더 특정 정보를 포함할 수 있다. 또 다른 실시예에서, 추가적인 정보는 갭과 연관된 정보를 포함할 수 있다.
여전히 다른 실시예에서, 정보는 시간 지연이 셋업 정보에 이어지는 것을 나타내는 정보를 포함하는 셋업 정보를 포함할 수 있다. 이 경우에, 정보는 상태 정보를 포함할 수 있으며 시간 지연은 상태 정보가 보내지기 전에 또는 상태 정보에 뒤이어 삽입될 수 있다.
주목해야 할 것은 갭은 정보를 보내는 임의의 시점에 삽입될 수 있다는 것이다. 예를 들어, 갭이 시간 지연을 포함하는 경우에 있어서, 시간 지연은 셋업 정보를 보내기전에 삽입될 수 있다. 다른 실시예에서, 시간 지연은 셋업 정보가 보내진 후 삽입될 수 있다.
어느 한 경우에 있어서, 추가적인 커맨드들은 시간 지연의 기간 동안 호스트 디바이스로부터 드라이브에서 수신될 수 있다. 일 실시예에서, 갭을 삽입하는 것은 정보가 호스트 디바이스로 보내지는 기간 동안 갭을 삽입하는 것을 포함할 수 있다.
주목해야 할 것은 갭이 삽입되는 시점은 다양한 파라미터들에 기초할 수 있다는 것이다. 예를 들어, 일 실시예에서, 갭은 드라이브의 현재의 큐 깊이에 기초하여 삽입될 수 있다. 다른 실시예에서, 갭은 이전 커맨드가 수신되었던 이후의 시간의 양에 기초하여 삽입될 수 있다.
더욱이, 갭의 길이 또는 크기는 다양한 파라미터들에 기초할 수 있다. 예를 들어, 일 실시예에서, 시간 지연의 시간의 길이는 드라이브의 현재의 큐 깊이에 기초할 수 있다. 다른 실시예에서, 시간 지연의 시간의 길이는 이전 커맨드가 수신되었던 이후의 시간의 양에 기초할 수 있다.
어느 한 경우에 있어서, 옵션으로서, 시간 지연의 시간의 길이 또는 시간 지연이 삽입되는 시점 중 적어도 하나는 실시간으로 결정될 수 있다. 다른 옵션으로서, 시간 지연의 시간의 길이 또는 시간 지연이 삽입되는 시점 중 적어도 하나는 사전결정된 값일 수 있다. 이 경우, 사전결정된 값은 하드웨어 또는 소프트웨어내 설정된 값일 수 있다.
사용자의 요구들에 따라, 전술한 프레임워크가 구현될 수 있는 또는 구현될 수 없는 다양한 선택적 아키텍처들 또는 특징들에 관해 이제 보다 예시적인 정보가 설명될 것이다. 보다 주목해야 할 것은 다음의 정보는 예시적인 목적들을 위해 설명되며 임의의 방식으로 제한하는 것으로 간주되어서는 안 된다는 것이다. 하기 특징들 중 임의의 것은 기술된 다른 특징들을 배제하거나 배제함이 없이 선택적으로 포함될 수 있다.
일 실시예에 따라서, 도 2는 드라이브로부터 호스트 디바이스로 보내진 정보에 갭을 삽입하기 위한 시스템(200)을 도시한다. 옵션으로서, 본 발명의 시스템(200)은 도 1의 방법(100)을 수행하도록 구현될 수 있다. 물론, 그러나, 시스템(200)은 임의의 원하는 환경에서 구현될 수 있다. 또한 주목해야 할 것은 전술한 정의들은 본 발명의 설명동안 활용될 수 있다는 것이다.
도시된 바와 같이, 시스템(200)은 호스트 디바이스(204)로부터 하나 이상의 커맨드들을 수신하기 위한 드라이브(202)를 포함한다. 더욱이, 시스템(200)은 호스트 디바이스(204)로 보내기 위해 정보를 큐잉하기 위한 버퍼(206)를 포함한다. 여전히, 드라이브(202)가 호스트 디바이스(204)로 정보를 보내는 것을 개시한 후 호스트 디바이스(204)가 드라이브(202)로 추가적인 커맨드들을 보낼 수 있도록, 호스트 디바이스(204)로 보내기 위해 정보에 갭을 삽입하기 위한 컨트롤러(208)를 포함한다.
주목해야 할 것은 드라이브(202)가 SATA 드라이브, SAS 드라이브, FC 드라이브 및/또는 임의의 다른 저장 디바이스 또는 드라이브와 같은 다양한 유형들의 드라이브를 포함할 수 있다는 것이다. 정보에 갭들을 삽입함으로써, 데이터를 매우 신속하게 페치하는 드라이브들은, 드라이브들이 데이터를 보내기 시작했을 때 드라이브들이 최대 큐 깊이로부터 0으로 진동하지 않게 구성될 수 있다.
예를 들어, SATA에서, 충돌이 존재할 경우, 호스트를 통해서 프레임들을 전송할 때 타겟은 일반적으로 우선순위를 갖는다. 부가적으로, 전형적으로 SATA에서, 커맨드들을 큐잉할 때(예를 들어, 제 1 파티 다이렉트 메모리 액세스 등을 이용), 일단 타겟이 데이터 페이즈(data phase)를 입력하기 위해 DMA 셋업 FIS를 보냈다면, 호스트는 임의의 커맨드들을 타겟으로 보낼 수 없다.
드라이브가 실제로 빠르게 데이터를 페치할 수 있다면, 호스트는 최대 큐 깊이(예를 들어, 32 등)와 동일한 커맨드들의 수를 드라이브로 보낼 수 있다. 전형적으로, 그 다음, 드라이브는 프레임들 간에 갭들을 갖지 않고 DMA 셋업, 데이터, DMA 셋업, 데이터 등을 리턴할 수 있다. 이것은 호스트가 임의의 보다 많은 커맨드들을 보내는 것을 허용하지 않는다.
드라이브의 큐 깊이는 최대 큐 깊이(예를 들어, 32 등)로부터 0으로 그리고 다시 최대 큐 깊이(예를 들어, 32 등)로부터 0으로 진동할 것이다. 이것은 성능에 부정적인 영향을 끼칠 수 있다. 몇몇 경우들에서, 데이터내에 갭들이 존재하는 하드 디스크 드라이브들(HDD들)은 매우 느려, 이러한 진동이 발생하지 않는다. 그러나, 드라이브들이 빠르면 진동이 발생할 수 있다.
따라서, 일 실시예에서, 호스트 디바이스(204)가 드라이브(202)로 보다 많은 커맨드들을 보낼 수 있도록 하기 위해, 호스트 디바이스(204)로 DMA 셋업을 보내기 전에 하나 이상의 갭들이 삽입될 수 있다. 갭이 삽입되는 시점은 드라이브(202)의 현재의 큐 깊이 또는 최종 커맨드 이후 시간의 양을 포함하는 다양한 파라미터들에 기초할 수 있다. 일 실시예에서, 갭이 삽입되는 시점은 드라이브(202)의 현재의 큐 깊이, 최종 커맨드 이후 시간의 양, 또는 이들 또는 몇몇 다른 파라미터의 조합에 기초할 수 있다.
게다가, 커맨드들이 호스트 디바이스(204)로부터 보내지게 허용하는 갭의 길이는 또한 다양한 파라미터들에 기초할 수 있다. 예를 들어, 갭의 길이는 큐 깊이, 시간, 또는 몇몇 다른 파라미터에 기초할 수 있다. 다양한 실시예들에서, 이들 파라미터들은 호스트 디바이스(204) 또는 드라이브(202)에 의해 실시간으로 조정(turn)될 수 있다. 옵션으로서, 파라미터들은 또한 고정값들로 설정될 수 있다.
일 실시예에서, 드라이브(202)는 이러한 DMA 셋업 후에 갭이 존재할 것이라는 것을 표시하기 위해 DMA 셋업에 정보를 추가함으로써 호스트 디바이스(204)에 신호할 수 있다. 옵션으로서, 호스트 디바이스(204)는 커맨드에 정보를 추가함으로써 커맨드들을 보내는 것을 종료하도록 신호할 수 있다. 또한 주목해야 할 것은, 일 실시예에서, 갭들은 또한 상태(status)를 보내기 전에 삽입될 수 있다는 것이다. 이는 DMA 셋업 FIS 이전에 갭들을 삽입하는 것 대신, 또는 DMA 셋업 FIS 이전에 갭들을 삽입하는 것에 부가하여 수행될 수 있다.
다른 실시예에 따라서, 도 3은 드라이브로부터 호스트 디바이스로 보내진 정보에 갭을 삽입하기 위한 방법(300)을 도시한다. 옵션으로서, 본 발명의 방법(300)은 도 1-2의 기능 및 아키텍처의 상황에서 구현될 수 있다. 물론, 그러나, 방법(300)은 임의의 원하는 환경에서 수행될 수 있다. 다시, 전술한 정의들은 본 발명 설명 동안 활용할 수 있다.
도시된 바와 같이, 활성 큐잉된 커맨드들이 존재하는지 여부가 결정된다. 동작(302)을 참조. 이 경우에, 활성 큐잉된 커맨드들은 드라이브와 연관된 버퍼내에 활성 큐잉된 커맨드들일 수 있다.
활성 큐잉된 커맨드들이 존재하면, 시간 지연을 삽입할지 여부가 결정된다. 동작(304)을 참조. 일 실시예에서, 타이머는 시간 지연을 삽입하기 위해 사용될 수 있다.
시간 지연을 삽입하도록 결정된다면, 시간 지연이 삽입된다. 동작(306)을 참조. 그 다음 시스템이 데이터를 전달할 준비가 되었는지 여부가 결정된다. 동작(308)을 참조.
시스템이 데이터를 전달할 준비가 되었다면, DMA 셋업 FIS가 보내진다. 동작(310)을 참조. 일단 DMA 셋업 FIS가 보내진다면, 데이터 전달이 완료된다. 동작(312)을 참조. 주목해야 할 것은 DMA 셋업은 커맨드와 연관된 데이터의 조각만을 위해 존재할 수 있다는 것이다. 일단 이러한 데이터의 조각이 전달을 완료하였다면, 갭이 삽입될 수 있다.
따라서, 그 다음, 시간 지연을 삽입할지 여부가 결정된다. 동작(314)을 참조. 시간 지연을 삽입하도록 결정되면, 시간 지연이 삽입된다. 동작(316)을 참조.
추가로 도시된 바와 같이, 세트 디바이스 비트 FIS를 보낼지 여부가 결정된다. 동작(318)을 참조. 세트 디바이스 비트 FIS를 보내도록 결정되면, 세트 디바이스 비트 FIS가 보내진다. 동작(320)을 참조.
이러한 방법으로, 드라이브가 데이터를 보내기 시작했더라도, 호스트 디바이스는 드라이브로 커맨드들을 보낼 수 있다. 주목해야 할 것은, 도 3에는 예시되지 않았지만, 정보는 시간 지연의 기간 동안 호스트 디바이스로 보내질 수 있다는 것이다. 예를 들어, 시간 지연의 지속기간에 관한 정보 또는 벤더 특정 정보(vender specific information)가 삽입될 수 있다.
도 4는 다양한 이전 실시예들의 다양한 아키텍처 및/또는 기능이 구현될 수 있는 예시적인 시스템(400)을 예시한다. 도시된 바와 같이, 통신 버스(402)에 연결되는 적어도 하나의 호스트 프로세서(401)를 포함하는 시스템(400)이 제공된다. 시스템(400)은 메인 메모리(main memory)(404)를 또한 포함한다. 제어 로직(소프트웨어)과 데이터는 랜덤 액세스 메모리(RAM)의 형태를 취할 수 있는 메인 메모리(404)에 저장된다.
시스템(400)은 그래픽 프로세서(406) 및 디스플레이(408), 즉 컴퓨터 모니터를 또한 포함한다. 일 실시예에서, 그래픽 프로세서(406)는 복수의 셰이더 모듈들(shader modules), 래스터화 모듈(rasterization module) 등을 포함할 수 있다. 전술한 모듈들 각각은 심지어 그래픽 프로세싱 유닛(GPU)을 형성하기 위해 단일 반도체 플랫폼(single semiconductor platform)상에 위치될 수 있다.
본 발명의 설명에서, 단일 반도체 플랫폼은 독자적 통합 반도체-기반 집적회로(sole unitary semiconductor-based integrated circuit) 또는 칩(chip)을 지칭할 수 있다. 주목해야 할 것은, 단일 반도체 플랫폼이란 용어는 또한 온칩 동작(on-chip operation)을 시뮬레이트하는 향상된 연결성을 갖는 멀티-칩 모듈들(multi-chip modules)을 지칭하고, 종래의 중앙 처리 장치(CPU) 및 버스 구현을 이용하는 것을 통해 실질적인 개선들을 이룰 수 있다는 것이다. 물론, 다양한 모듈들은 또한 사용자의 요구들에 따라, 별도로 또는 반도체 플랫폼들의 다양한 조합들로 위치될 수 있다.
시스템(400)은 2차 저장기(secondary storage)(410)를 또한 포함할 수 있다. 예를 들어, 2차 저장기(410)는 하드 디스크 드라이브 및/또는 플로피 디스크 드라이브, 자기 테이프 드라이브, 컴팩트 디스크 드라이브 등을 나타내는 착탈식(removable) 저장 드라이브를 포함한다. 착탈식 드라이브는 공지된 방식으로 착탈식 저장 유닛으로부터 판독하고 그리고/또는 착탈식 저장 유닛에 기록한다.
컴퓨터 프로그램들, 또는 컴퓨터 제어 로직 알고리즘들은 메인 메모리(404) 및/또는 2차 저장기(410)내에 저장될 수 있다. 실행시, 이러한 컴퓨터 프로그램들은 다양한 기능들을 수행하도록 시스템(400)을 이네이블한다. 메모리(404), 저장기(410) 및/또는 임의의 다른 저장기가 컴퓨터-판독가능한 매체의 예들로서 가능하다.
일 실시예에서, 다양한 이전 도면들의 아키텍처 및/또는 기능은 호스트 프로세서(401), 그래픽 프로세서(406), 호스트 프로세서(401)와 그래픽 프로세서(406) 둘 다의 능력들의 적어도 일부를 가능케 할 수 있는 (도시되지 않은) 집적 회로, 칩셋(chipset)(즉, 작업을 위해 설계되고 관련된 기능 등을 수행하기 위한 유닛으로서 판매된 집적 회로들의 그룹), 및/또는 그러한 문제를 위한 임의의 다른 집적 회로의 상황에서 구현될 수 있다.
여전히, 다양한 이전 도면들의 아키텍처 및/또는 기능은 범용 컴퓨터 시스템, 회로 보드 시스템, 엔터테인먼트 목적의 전용 게임 콘솔 시스템(game console system), 특정-용도 시스템(application-specific system), 및/또는 임의의 다른 원하는 시스템의 상황에서 구현될 수 있다. 예를 들어, 시스템(400)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 및/또는 임의의 다른 유형의 로직의 형태를 취할 수 있다. 여전히, 시스템(400)은 휴대 정보 단말기(PDA) 디바이스, 모바일 폰 디바이스, 텔레비전 등을 포함하지만, 이에 제한되지 않는 다양한 다른 디바이스들의 형태를 취할 수 있다.
게다가, 비록 도시되지 않았지만, 시스템(400)은 통신을 목적으로 네트워크[예를 들어, 통신 네트워크, 근거리 통신망(LAN), 무선 네트워크, 인터넷, 피어-투-피어 네트워크(peer-to-peer network), 케이블 네트워크 등과 같은 광역 네트워크(WAN)]에 결합될 수 있다.
비록 다양한 실시예들이 앞서 기술되었지만, 이들은 단지 예로서 제공된 것이며, 제한하지 않는다는 것이 이해되어야 한다. 따라서, 바람직한 실시예의 범위(breadth)와 범주는 임의의 전술한 예시적인 실시예들에 의해 제한되지 않으며, 이어지는 청구항들과 이들의 균등물들에 따라서만 정의되어야 한다.
결론(CONCLUSION)
특정의 선택들은 단지 텍스트와 도면들을 준비함에 있어서 편의를 위한 설명으로 이루어졌으며, 반대되는 표시가 없는 한 상기 선택들은 그 자체를 기술된 실시예들의 구조 또는 동작에 관한 추가적인 정보를 전달하는 것으로서 해석해서는 안된다. 선택들의 예들은 : 도면 넘버링을 위해 사용된 명칭(designation)들의 특별한 조직(organization) 또는 할당 및 실시예들의 특징들과 엘리먼트들을 식별하고 참조하기 위해 사용된 엘리먼트 식별자들(element identifiers)(예를 들어, 콜아웃들(callouts) 또는 수치 표시기들(numerical designators))의 특별한 조직 또는 할당을 포함한다.
특별히 "포함하다(includes)" 또는 "포함하는(including)"의 단어들은, 제약을 두지 않는(open-ended) 범주의 논리적 세트들을 기술하는 추상개념들로서 해석되도록 의도되며 명시적으로 "~내에서(within)"란 단어가 뒤따르지 않는 한 물리적봉쇄를 시사하는 것으로 의미하지 않는다.
비록 전술한 실시예들이 이해 및 설명의 명료화를 위해 다소 세부적으로 기술되었지만, 본 발명은 제공된 세부사항들로 제한되지 않는다. 본 발명의 다수의 실시예들이 존재한다. 개시된 실시예들은 예시적이며 제한적이지 않다.
구성, 어레인지먼트, 그리고 사용에 있어서 많은 변동들이 설명과 일치할 수 있으며, 허여된(issued) 특허의 청구항들의 범주내에 있다는 것이 이해될 것이다. 예를 들어, 상호 연결 및 기능-단위 비트-폭들(function-unit bit-widths), 클럭 속도들(clock speeds), 그리고 사용된 기술의 유형은 각각의 컴포넌트 블록내에서 다양한 실시예들에 따라 가변적일 수 있다. 상호연결 및 로직에 부여되는 명칭들은 단지 예시적인 것이며, 기술된 개념들을 제한하는 것으로서 해석되어서는 안된다. 순서도(flowchart) 및 흐름도 프로세스, 동작(action), 그리고 기능 엘리먼트들의 순서 및 어레인지먼트는 다양한 실시예들에 따라서 가변될 있다. 또한, 특별히 반대되게 언급하지 않는 한, 특정된 값의 범위들, 사용된 최대 및 최소 값들, 또는 (플래시 메모리 기술 유형들; 그리고 레지스터들(registers)과 버퍼들내 엔트리들(entries) 또는 스테이지들(stages)의 수와 같은) 다른 특별한 사양들(specifications)은 단지 기술된 실시예들의 사양들이며, 개선안들을 따를 것으로 예상되며 기술 구현시 변할 수 있어, 제한들로서 해석되어서는 안된다.
종래 기술에 알려진 기능적으로 균등한 기법들이 다양한 컴포넌트들, 서브-시스템들, 동작들, 기능들, 루틴들, 서브-루틴들, 인-라인 루틴들(in-line routines), 절차들, 매크로들(macros), 또는 이들의 부분들을 구현하기 위해 기술된 기법들 대신에 활용가능하다. 실시예들의 많은 기능적 양상들이 하드웨어(즉, 일반적으로 전용 회로) 또는 (즉, 프로그램된 컨트롤러 또는 프로세서의 몇몇 방식을 통해) 소프트웨어에서 선택적으로 실현가능 한데, 이는 실시예의 기능이 디자인 제약들 및 고속 프로세싱(사전에 하드웨어에서 소프트웨어로 기능들의 이동을 원활하게 함) 및 더 높은 집적도(사전에 소프트웨어에서 하드웨어로 기능들의 이동을 원활하게 함)의 기술 경향들과 관련되기 때문임이 이해된다. 다양한 실시예들에서 특정 변동들은, 제한되는 것은 아니지만, 세분화(partitioning)에서의 차이점들; 상이한 폼 팩터들(form factors) 및 구성들; 상이한 운영 체제들(operating systems) 및 다른 시스템 소프트웨어의 사용; 상이한 인터페이스 표준들의 사용, 네트워크 프로토콜, 또는 통신 링크들의 사용; 그리고 특별 애플리케이션의 독특한 엔지니어링과 비즈니스 제약들에 따라 본 명세서에 기술된 개념들을 구현할 때 예상되는 다른 변동들을 포함한다.
실시예들은 설명된 실시예들의 많은 양상들의 최소 구현을 위해 요구되는 것을 충분히 능가하는 환경적 상황 및 세부사항으로 설명되었다. 당업자는 몇몇 실시예들이 나머지 엘리먼트들 중에서 기본적인 협력을 변경하지 않고 개시된 컴포넌트들 또는 특징들을 생략한 것을 인식할 것이다. 따라서 많은 개시된 세부사항들은 설명된 실시예들의 다양한 양상들을 구현하기 위해 요구되지 않는다는 것이 이해된다. 나머지 엘리먼트들이 종래 기술과 구별가능하다는 점에서, 생략된 컴포넌트들과 특징들은 본 명세서에 기술된 개념들을 제한하지 않는다.
설계에 있어서의 이러한 변화들 모두는 설명된 실시예들에 의해 시사되는 교시들(teachings)에 비해 실질적인 변화가 없다. 본 명세서에 설명된 실시예들은 다른 컴퓨팅 및 네트워킹 애플리케이션들에 대해 넓은 응용성을 가지며, 설명된 실시예들의 특별한 애플리케이션 또는 산업으로 제한되지 않는다는 것이 또한 이해된다. 따라서 발명은 허여된 특허의 청구항들의 범주내에 망라되는 모든 가능한 변경들과 변동들을 포함하는 것으로 해석될 것이다.

Claims (63)

  1. 호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하는 단계;
    상기 호스트 디바이스로 보내기 위해 정보를 큐잉하는 단계; 그리고
    상기 호스트 디바이스가 상기 드라이브로 추가적인 커맨드들을 보낼 수 있도록 상기 호스트 디바이스로 보내기 위해 상기 정보에 갭을 삽입하는 단계
    를 포함하는,
    방법.
  2. 제 1 항에 있어서,
    상기 갭을 삽입하는 단계는 시간 지연을 삽입하는 단계
    를 포함하는,
    방법.
  3. 제 2 항에 있어서,
    상기 정보는 상기 하나 이상의 커맨드들 중 적어도 하나와 연관된 셋업 정보 및 데이터
    를 포함하는,
    방법.
  4. 제 3 항에 있어서,
    상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS)
    를 포함하는,
    방법.
  5. 제 3 항에 있어서,
    상기 셋업 정보는 세트 디바이스 비트 FIS
    를 포함하는,
    방법.
  6. 제 3 항에 있어서,
    상기 시간 지연은 상기 셋업 정보를 보내기 전에 삽입되는,
    방법.
  7. 제 3 항에 있어서,
    상기 지연 시간은 상기 셋업 정보를 보낸 후 삽입되는,
    방법.
  8. 제 2 항에 있어서,
    상기 시간 지연 기간 동안 상기 호스트 디바이스로부터 상기 드라이브에서 상기 추가적인 커맨드들을 수신하는 단계
    를 더 포함하는,
    방법.
  9. 제 2 항에 있어서,
    상기 시간 지연을 삽입하는 단계는 상기 정보가 상기 호스트 디바이스로 보내지고 있는 기간 동안 상기 시간 지연을 삽입하는 단계
    를 포함하는,
    방법.
  10. 제 9 항에 있어서,
    상기 시간 지연은 상기 드라이브의 현재의 큐 깊이에 기초하여 삽입되는,
    방법.
  11. 제 9 항에 있어서,
    상기 시간 지연은 이전 커맨드가 수신되었던 이후의 시간의 양에 기초하여 삽입되는,
    방법.
  12. 제 9 항에 있어서,
    상기 시간 지연의 시간의 길이는 상기 드라이브의 현재의 큐 깊이에 기초하는,
    방법.
  13. 제 9 항 있어서,
    상기 시간 지연의 시간의 길이는 이전 커맨드가 상기 드라이브에 의해 수신되었던 이후의 시간의 양에 기초하는,
    방법.
  14. 제 2 항에 있어서,
    상기 시간 지연의 시간의 길이 또는 상기 시간 지연이 삽입되는 시점 중 적어도 하나는 실시간으로 결정되는,
    방법.
  15. 제 2 항에 있어서,
    상기 시간 지연의 시간의 길이 또는 상기 시간 지연이 삽입되는 시점 중 적어도 하나는 사전결정된 값인,
    방법.
  16. 제 2 항에 있어서,
    상기 정보는 상기 지연 시간이 상기 셋업 정보에 이어지는 것을 나타내는 정보를 포함하는 셋업 정보
    를 포함하는,
    방법.
  17. 제 2 항에 있어서,
    상기 정보는 상황(status) 정보를 포함하며 상기 시간 지연은 상기 상태 정보를 보내기 전에 삽입되는,
    방법.
  18. 제 1 항에 있어서,
    상기 갭을 삽입하는 단계는 추가적인 정보를 삽입하는 단계
    를 포함하는,
    방법.
  19. 제 1 항에 있어서,
    상기 호스트 디바이스는 상기 갭에 앞서 상기 갭에 관해 통지를 받는,
    방법.
  20. 제 1 항에 있어서,
    상기 드라이브는 직렬 ATA(SATA) 드라이브
    를 포함하는,
    방법.
  21. 호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하기 위한 컴퓨터 코드;
    상기 호스트 디바이스로 보내기 위해 정보를 큐잉하기 위한 컴퓨터 코드;
    상기 호스트 디바이스가 상기 드라이브로 추가적인 커맨드들을 보낼 수 있도록 상기 호스트 디바이스로 보내기 위해 상기 정보에 갭을 삽입하기 위한 컴퓨터 코드
    를 포함하는,
    컴퓨터 판독가능 매체상에 구현된 컴퓨터 프로그램 물건.
  22. 호스트 디바이스로부터 하나 이상의 커맨드들을 수신하기 위한 드라이브;
    상기 호스트 디바이스로 보내기 위해 정보를 큐잉하기 위한 버퍼; 그리고
    상기 호스트 디바이스가 상기 드라이브로 추가적인 커맨드들을 보낼 수 있도록, 상기 호스트 디바이스로 보내기 위해 상기 정보에 갭을 삽입하기 위한 컨트롤러
    를 포함하는,
    장치.
  23. 호스트 드라이브로부터 커맨드들을 수신하도록 이네이블되는 드라이브를 포함하며, 상기 호스트 디바이스는 상기 드라이브로 하여금 상기 호스트가 추가적인 커맨드들을 보내지 못하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블되며, 상기 드라이브는,
    컨트롤러, 및
    버퍼를 포함하며, 그리고
    상기 드라이브는 충돌이 존재할 때 상기 호스트 디바이스에 비해 우선순위를 가지며,
    상기 버퍼는 상기 호스트 디바이스로 보내기 위해 정보를 큐잉하도록 이네이블되며, 그리고
    상기 컨트롤러는 상기 정보에 갭을 삽입하도록 이네이블되며, 상기 호스트 드라이브가 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되는,
    시스템.
  24. 제 23 항에 있어서,
    상기 컨트롤러는 상기 갭을 삽입하도록 추가로 이네이블되어, 상기 드라이브가 상기 호스트 디바이스로 셋업 정보를 보내는 것을 통해 적어도 부분적으로 상기 호스트 디바이스로 상기 정보를 보내는 것을 개시한 후, 상기 호스트 디바이스는 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되는,
    시스템.
  25. 제 24 항에 있어서,
    상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 셋업을 포함하는,
    시스템.
  26. 제 23 항에 있어서,
    상기 드라이브는
    직렬 ATA(SATA) 드라이브,
    직렬 부착 SCSI(SAS) 드라이브,
    파이버 채널(Fibre Channel) 드라이브, 및
    범용 직렬 버스(Universal Serial Bus : USB) 드라이브
    중 하나 이상을 포함하는,
    시스템.
  27. 제 23 항에 있어서,
    상기 커맨드들은
    전달 요청(transfer request),
    데이터 전달을 위한 커맨드,
    상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드, 그리고
    데이터를 리트리브(retrieve)하기 위한 커맨드
    중 하나 이상을 포함하는,
    시스템.
  28. 제 23 항에 있어서,
    상기 정보는,
    데이터 정보,
    데이터 구조 정보,
    다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
    세트 디바이스 비트 FIS, 그리고
    상기 커맨드들 중 적어도 하나와 연관된 데이터
    중 하나 이상을 포함하는,
    시스템.
  29. 제 23 항에 있어서,
    상기 갭은
    브레이크(break),
    인터럽션(interruption), 그리고
    지연(delay)
    중 하나 이상을 포함하는,
    시스템.
  30. 제 23 항에 있어서,
    상기 갭은
    시간 지연,
    추가적인 정보,
    상기 갭의 길이,
    벤더 특정 정보, 그리고
    상기 갭과 연관된 정보
    중 하나 이상을 포함하는,
    시스템.
  31. 제 23 항에 있어서,
    상기 컨트롤러는 상기 드라이브의 현재의 커맨드 큐에 적어도 부분적으로 기초하여 상기 갭을 삽입하도록 더 이네이블되는,
    시스템.
  32. 제 23 항에 있어서,
    상기 컨트롤러는 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하여 상기 갭을 삽입하도록 추가로 이네이블되는,
    시스템.
  33. 제 23 항에 있어서,
    상기 갭은 시간 지연을 포함하고, 상기 컨트롤러는, 실시간으로, 상기 시간 지연의 시간의 길이를 결정하도록 이네이블되는,
    시스템.
  34. 제 23 항에 있어서,
    상기 갭은 시간 지연을 포함하고, 상기 컨트롤러는 실시간으로 상기 시간 지연이 삽입되는 시점을 결정하도록 이네이블되는,
    시스템.
  35. 호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하는 단계 ?상기 호스트 디바이스는 상기 드라이브로 하여금 상기 호스트 디바이스가 추가적인 커맨드들을 보내는 것을 방지하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블됨?;
    상기 호스트 디바이스로 보내기 위해 정보를 큐잉하는 단계 ? 상기 보내는 것은 적어도 부분적으로 상기 호스트 디바이스로 셋업 정보를 보내는 것을 통해 이루어짐?;
    시간 지연을 삽입할지 여부를 결정하는 단계; 그리고
    상기 결정에 기초하여, 상기 호스트 디바이스가 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되도록 상기 시간 지연을 조건적으로 삽입하는 단계
    를 포함하는,
    방법.
  36. 제 35 항에 있어서,
    상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 셋업을 포함하는,
    방법.
  37. 제 35 항에 있어서,
    활성 큐잉된 커맨드들이 존재하는지 여부를 결정하기 위해 상기 드라이브와 연관된 버퍼를 조사하며, 존재한다면, 상기 결정하는 단계를 수행하는 단계
    를 더 포함하는,
    방법.
  38. 제 35 항에 있어서,
    상기 드라이브는
    직렬 ATA(SATA) 드라이브,
    직렬 부착 SCSI(SAS) 드라이브,
    파이버 채널(FC) 드라이브, 그리고
    범용 직렬 버스(USB) 드라이브
    중 하나 이상을 포함하는,
    방법.
  39. 제 35 항에 있어서,
    상기 커맨드들은
    전달 요청,
    데이터를 전달하기 위한 커맨드,
    상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드, 그리고
    데이터를 리트리브하기 위한 커맨드
    중 하나 이상을 포함하는,
    방법.
  40. 제 35 항에 있어서,
    상기 정보는
    데이터 정보,
    데이터 구조 정보,
    다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
    세트 디바이스 비트 FIS, 그리고
    상기 커맨드들 중 적어도 하나와 연관된 데이터
    중 하나 이상을 포함하는,
    방법.
  41. 제 35 항에 있어서,
    상기 결정하는 단계는 상기 드라이브의 현재의 커맨드 큐 깊이에 적어도 부분적으로 기초하는,
    방법.
  42. 제 35 항에 있어서,
    상기 결정하는 단계는 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하는,
    방법.
  43. 제 35 항에 있어서,
    실시간으로, 상기 시간 지연의 길이를 결정하는 단계
    를 더 포함하는,
    방법.
  44. 제 35 항에 있어서,
    실시간으로 상기 시간 지연이 삽입되는 시점을 결정하는 단계
    를 더 포함하는,
    방법.
  45. 호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하기 위한 수단 ?상기 호스트 디바이스는 상기 드라이브로 하여금 상기 호스트 디바이스가 추가적인 커맨드들을 보내지 못하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블됨?;
    상기 호스트 디바이스로 보내기 위해 정보를 큐잉 하기 위한 수단 ?상기 보내는 것은 적어도 부분적으로 상기 호스트 디바이스로 셋업 정보를 보내는 것을 통해 이루어짐?;
    시간 지연을 삽입할지 여부를 결정하기 위한 수단; 그리고
    상기 결정하기 위한 수단에 기초하여, 상기 호스트 디바이스가 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되게 상기 시간 지연을 조건적으로 삽입하기 위한 수단
    을 포함하는,
    시스템.
  46. 제 45 항에 있어서,
    상기 셋업 정보는 다이렉트 메모리 액세스(DMA) 셋업을 포함하는,
    시스템.
  47. 제 45 항에 있어서,
    활성 큐잉된 정보가 존재하는지 여부를 결정하기 위해 상기 드라이브와 연관된 버퍼를 조사하기 위한 수단을 더 포함하며, 상기 결정하기 위한 수단은 상기 조사하기 위한 수단의 결과에 기초하는 조건부인,
    시스템.
  48. 제 45 항에 있어서,
    상기 드라이브는
    직렬 ATA(SATA) 드라이브,
    직렬 부착 SCSI(SAS) 드라이브,
    파이버 채널(FC) 드라이브, 그리고
    범용 직렬 버스(USB) 드라이브
    중 하나 이상을 포함하는,
    시스템.
  49. 제 45 항에 있어서,
    상기 커맨드들은
    전달 요청,
    데이터를 전달하기 위한 커맨드,
    상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드, 그리고
    데이터를 리트리브하기 위한 커맨드
    중 하나 이상을 포함하는,
    시스템.
  50. 제 45 항에 있어서,
    상기 정보는
    데이터 정보,
    데이터 구조 정보,
    다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
    세트 디바이스 비트 FIS, 그리고
    상기 커맨드들 중 적어도 하나와 연관된 데이터
    중 하나 이상을 포함하는,
    시스템.
  51. 제 45 항에 있어서,
    상기 결정하기 위한 수단은 상기 드라이브의 현재의 커맨드 큐 깊이에 적어도 부분적으로 기초하여 동작하는,
    시스템.
  52. 제 45 항에 있어서,
    상기 결정하기 위한 수단은 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하여 동작하는,
    시스템.
  53. 제 45 항에 있어서,
    실시간으로, 상기 시간 지연의 길이를 결정하기 위한 수단
    을 더 포함하는,
    시스템.
  54. 제 45 항에 있어서,
    실시간으로, 상기 시간 지연이 삽입되는 시점을 결정하기 위한 수단
    을 더 포함하는,
    시스템.
  55. 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 기능들을 수행하도록 명령들의 세트가 그 내부에 저장된, 유형적(tangible) 컴퓨터 판독가능 매체로서, 상기 기능들은,
    호스트 디바이스로부터 드라이브에서 하나 이상의 커맨드들을 수신하는 것 ?상기 호스트 디바이스는 상기 드라이브로 하여금 상기 호스트 디바이스가 추가적인 커맨드들을 보내지 못하게 하는 저장 프로토콜을 이용하여 상기 드라이브와 통신하도록 이네이블됨?;
    상기 호스트 디바이스로 보내기 위해 정보를 큐잉하는 것 ?상기 보내는 것은 적어도 부분적으로 상기 드라이브로 셋업 정보를 보내는 것을 통해 이루어짐?; 그리고
    상기 호스트 디바이스가 상기 드라이브로 상기 추가적인 커맨드들을 보내도록 이네이블되게 시간 지연을 조건적으로 삽입하는 것
    을 포함하는,
    유형적 컴퓨터 판독가능 매체.
  56. 제 55 항에 있어서,
    상기 조건적으로 삽입하는 것은 상기 시간 지연을 삽입할지 여부를 결정하는 것에 적어도 부분적으로 기초하는,
    유형적 컴퓨터 판독가능 매체.
  57. 제 56 항에 있어서,
    상기 결정하는 것은 상기 드라이브의 현재의 커맨드 큐 깊이에 적어도 부분적으로 기초하는,
    유형적 컴퓨터 판독가능 매체.
  58. 제 56 항에 있어서,
    상기 결정하는 것은 이전 커맨드가 수신되었던 이후의 시간에 적어도 부분적으로 기초하는,
    유형적 컴퓨터 판독가능 매체.
  59. 제 55 항에 있어서,
    상기 기능들은, 실시간으로, 상기 시간 지연의 시간의 길이를 결정하는 단계를 더 포함하는,
    유형적 컴퓨터 판독가능 매체.
  60. 제 55 항에 있어서,
    상기 기능들은 실시간으로 상기 지연 시간이 삽입되는 시점을 결정하는 단계를 더 포함하는,
    유형적 컴퓨터 판독가능 매체.
  61. 제 55 항에 있어서,
    상기 드라이브는
    직렬 ATA(SATA) 드라이브,
    직렬 부착 SCSI(SAS) 드라이브,
    파이버 채널(FC) 드라이브, 그리고
    범용 직렬 버스(USB) 드라이브
    중 하나 이상을 포함하는,
    유형적 컴퓨터 판독가능 매체.
  62. 제 55 항에 있어서,
    상기 커맨드들은
    전달 요청,
    데이터를 전달하기 위한 커맨드,
    상기 드라이브와 연관된 메모리의 부분을 액세스하기 위한 커맨드; 그리고
    데이터를 리트리브하기 위한 커맨드
    중 하나 이상을 포함하는,
    유형적 컴퓨터 판독가능 매체.
  63. 제 55 항에 있어서,
    상기 정보는
    데이터 정보,
    데이터 구조 정보,
    다이렉트 메모리 액세스(DMA) 프레임 정보 구조(FIS),
    세트 디바이스 비트 FIS, 그리고
    상기 커맨드들 중 적어도 하나와 연관된 데이터
    중 하나 이상을 포함하는,
    유형적 컴퓨터 판독가능 매체.
KR1020127004286A 2009-07-17 2010-07-15 드라이브로부터 호스트 디바이스로 보내진 정보에 갭 삽입 KR101281480B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/505,333 2009-07-17
US12/505,333 US8140712B2 (en) 2009-07-17 2009-07-17 System, method, and computer program product for inserting a gap in information sent from a drive to a host device
PCT/US2010/042147 WO2011008963A2 (en) 2009-07-17 2010-07-15 Inserting a gap in information sent from a drive to a host device

Publications (2)

Publication Number Publication Date
KR20120046259A true KR20120046259A (ko) 2012-05-09
KR101281480B1 KR101281480B1 (ko) 2013-07-02

Family

ID=43450212

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127004286A KR101281480B1 (ko) 2009-07-17 2010-07-15 드라이브로부터 호스트 디바이스로 보내진 정보에 갭 삽입

Country Status (7)

Country Link
US (4) US8140712B2 (ko)
EP (1) EP2454671A4 (ko)
JP (1) JP5658250B2 (ko)
KR (1) KR101281480B1 (ko)
CN (1) CN102713873B (ko)
TW (2) TWI447586B (ko)
WO (1) WO2011008963A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110004718A1 (en) 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US8140712B2 (en) 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US8516166B2 (en) 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
KR102238650B1 (ko) 2014-04-30 2021-04-09 삼성전자주식회사 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법
US9817777B2 (en) * 2015-03-31 2017-11-14 Toshiba Memory Corporation Multi-operating state serial ATA devices and methods of operation therefor
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250499A (ja) * 1990-02-27 1991-11-08 Nec Corp データ記憶回路
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JPH08124393A (ja) * 1994-10-20 1996-05-17 Fujitsu Ltd データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US5805809A (en) 1995-04-26 1998-09-08 Shiva Corporation Installable performance accelerator for maintaining a local cache storing data residing on a server computer
US5621687A (en) * 1995-05-31 1997-04-15 Intel Corporation Programmable erasure and programming time for a flash memory
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5835935A (en) * 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5956473A (en) * 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US6085248A (en) * 1997-02-11 2000-07-04 Xaqtu Corporation Media access control transmitter and parallel network management system
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
JP3898305B2 (ja) * 1997-10-31 2007-03-28 富士通株式会社 半導体記憶装置、半導体記憶装置の制御装置及び制御方法
US5924120A (en) * 1998-02-03 1999-07-13 Digital Equipment Corporation Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times
CN1126037C (zh) * 1998-09-04 2003-10-29 奥托·穆勒 用于具有限制删除频率的存储器的存取控制的方法
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
US6301639B1 (en) * 1999-07-26 2001-10-09 International Business Machines Corporation Method and system for ordering priority commands on a commodity disk drive
US7628622B2 (en) * 1999-08-04 2009-12-08 Super Talent Electronics, Inc. Multi-level cell (MLC) slide flash memory
US6405295B1 (en) * 1999-09-07 2002-06-11 Oki Electric Industry, Co., Ltd. Data storage apparatus for efficient utilization of limited cycle memory material
JP2001100935A (ja) * 1999-09-28 2001-04-13 Internatl Business Mach Corp <Ibm> ディスク装置およびその制御方法
US6928494B1 (en) * 2000-03-29 2005-08-09 Intel Corporation Method and apparatus for timing-dependant transfers using FIFOs
CN1466760A (zh) * 2000-09-28 2004-01-07 �����ι�˾ 磁盘驱动器的关键事件记录
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US20030041214A1 (en) * 2001-07-27 2003-02-27 Fujitsu Limited Cache control methods and apparatus for hard disk drives
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US20030058681A1 (en) * 2001-09-27 2003-03-27 Intel Corporation Mechanism for efficient wearout counters in destructive readout memory
US7000063B2 (en) * 2001-10-05 2006-02-14 Matrix Semiconductor, Inc. Write-many memory device and method for limiting a number of writes to the write-many memory device
US7130933B2 (en) * 2002-07-24 2006-10-31 Intel Corporation Method, system, and program for handling input/output commands
US7096313B1 (en) * 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
CN100483552C (zh) * 2002-10-28 2009-04-29 桑迪士克股份有限公司 在非易失性存储系统中执行自动磨损平衡的方法
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US7103732B1 (en) * 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
TW555100U (en) * 2002-11-27 2003-09-21 Power Quotient Int Co Ltd High speed of data transfer of solid state disk on module
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
US6925523B2 (en) * 2003-03-03 2005-08-02 Agilent Technologies, Inc. Managing monotonically increasing counter values to minimize impact on non-volatile storage
JP4460867B2 (ja) * 2003-09-26 2010-05-12 東芝ストレージデバイス株式会社 インターフェース装置及びパケット転送方法
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
JP2005215729A (ja) * 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
WO2005094281A2 (en) * 2004-03-25 2005-10-13 Riverstone Networks, Inc. Device-level address translation within a programmable non-volatile memory device
JP2006164012A (ja) * 2004-12-09 2006-06-22 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びそのパワー・セーブ・モードの制御方法
US7318962B2 (en) * 2005-01-28 2008-01-15 The United States Of America As Represented By The Secretary Of The Navy Magnetically directed self-assembly of molecular electronic junctions comprising conductively coated ferromagnetic microparticles
US20060209684A1 (en) * 2005-03-18 2006-09-21 Via Technologies, Inc. Data rate controller, and method of control thereof
JP4679943B2 (ja) * 2005-03-23 2011-05-11 ヒタチグローバルストレージテクノロジーズネザーランドビーブイ データ記憶装置及びその不揮発性メモリ内データ書き換え処理方法
US7620747B1 (en) * 2005-10-12 2009-11-17 Nvidia Corporation Software based native command queuing
US20070260756A1 (en) 2006-01-05 2007-11-08 Pao-Ching Tseng Method for Processing Command via SATA Interface
US7694026B2 (en) * 2006-03-31 2010-04-06 Intel Corporation Methods and arrangements to handle non-queued commands for data storage devices
US7739470B1 (en) * 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US7904764B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. Memory lifetime gauging system, method and computer program product
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7904619B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7904672B2 (en) * 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US8090980B2 (en) * 2006-12-08 2012-01-03 Sandforce, Inc. System, method, and computer program product for providing data redundancy in a plurality of storage devices
US7861139B2 (en) * 2007-01-26 2010-12-28 Micron Technology, Inc. Programming management data for NAND memories
JP2008226040A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法
JP2008250961A (ja) * 2007-03-30 2008-10-16 Nec Corp 記憶媒体の制御装置、データ記憶装置、データ記憶システム、方法、及び制御プログラム
KR20080090021A (ko) 2007-04-03 2008-10-08 삼성테크윈 주식회사 데이터 전송 속도가 다른 인터페이스들을 갖는 데이터 저장모듈 및 이의 데이터 전송방법
JP4400650B2 (ja) * 2007-05-23 2010-01-20 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
US7631128B1 (en) * 2007-06-28 2009-12-08 Emc Corporation Protocol controller for a data storage system
US7840751B2 (en) * 2007-06-29 2010-11-23 Seagate Technology Llc Command queue management of back watered requests
US7945727B2 (en) * 2007-07-27 2011-05-17 Western Digital Technologies, Inc. Disk drive refreshing zones in segments to sustain target throughput of host commands
TWI373772B (en) * 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
US8209465B2 (en) * 2007-10-30 2012-06-26 Hagiwara Sys-Com Co., Ltd. Data writing method
US20090125645A1 (en) * 2007-11-12 2009-05-14 Gemalto Inc System and method for supporting multiple tokens having a smart card to control parameters of a flash memory device
US7849275B2 (en) * 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US9183133B2 (en) * 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US8453022B2 (en) * 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
US7827320B1 (en) * 2008-03-28 2010-11-02 Western Digital Technologies, Inc. Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state
US7970978B2 (en) * 2008-05-27 2011-06-28 Initio Corporation SSD with SATA and USB interfaces
US20100017588A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for providing an extended capability to a system
US20100017566A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer
US20100017807A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for transparent communication between a storage device and an application
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US8140739B2 (en) * 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
US20100064093A1 (en) * 2008-09-09 2010-03-11 Radoslav Danilak System, method, and computer program product for converting data in a binary representation to a non-power of two representation
US8131921B2 (en) * 2008-09-17 2012-03-06 Intel Corporation Command suspension in response, at least in part, to detected acceleration and/or orientation change
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
US20100146236A1 (en) * 2008-12-08 2010-06-10 Radoslav Danilak System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command
US8230159B2 (en) * 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8291131B2 (en) * 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US8140712B2 (en) 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US20110022765A1 (en) * 2009-07-23 2011-01-27 Ross John Stenfort System, method, and computer program product for maintaining a direct connection between an initiator and a drive
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8108737B2 (en) * 2009-10-05 2012-01-31 Sandforce, Inc. System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device

Also Published As

Publication number Publication date
US20130019031A1 (en) 2013-01-17
EP2454671A2 (en) 2012-05-23
JP5658250B2 (ja) 2015-01-21
US20130227174A1 (en) 2013-08-29
US9330033B2 (en) 2016-05-03
US8615609B2 (en) 2013-12-24
CN102713873A (zh) 2012-10-03
JP2012533800A (ja) 2012-12-27
TW201437813A (zh) 2014-10-01
WO2011008963A3 (en) 2011-05-12
US8140712B2 (en) 2012-03-20
US20140173139A1 (en) 2014-06-19
TW201120641A (en) 2011-06-16
TWI447586B (zh) 2014-08-01
EP2454671A4 (en) 2014-06-04
CN102713873B (zh) 2016-10-19
US8423680B2 (en) 2013-04-16
KR101281480B1 (ko) 2013-07-02
US20110016233A1 (en) 2011-01-20
WO2011008963A2 (en) 2011-01-20
TWI467386B (zh) 2015-01-01

Similar Documents

Publication Publication Date Title
US10019200B2 (en) Ordering a plurality of write commands associated with a storage device
US10365920B2 (en) Management of device firmware update effects as seen by a host
WO2011011295A2 (en) Reducing a rate of data transfer to at least a portion of memory
KR101281480B1 (ko) 드라이브로부터 호스트 디바이스로 보내진 정보에 갭 삽입
US9461904B2 (en) Selective enablement of operating modes or features via host transfer rate detection
JP7010598B2 (ja) 再構成可能なマルチポートを具備するPCIeストレージシステムのためのQoSを認識した入出力管理方法、管理システム、及び管理装置
US8615614B2 (en) Message passing using direct memory access unit in a data processing system
WO2021043212A1 (zh) 一种日志数据的存储方法、电子设备及存储介质
US20160187958A1 (en) Techniques for managing power and performance for a networking device
CN113138802B (zh) 命令分发装置、方法、芯片、计算机设备及存储介质
CN105183398B (zh) 一种存储设备、电子设备及数据处理方法
CN105988871B (zh) 一种远端内存分配方法、装置和系统
CN115904259A (zh) 非易失性存储器标准NVMe指令的处理方法及相关装置
CN114077588B (zh) 一种预读方法及装置
US11119787B1 (en) Non-intrusive hardware profiling
US10877552B1 (en) Dynamic power reduction through data transfer request limiting

Legal Events

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