KR20160054628A - 스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링 - Google Patents

스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링 Download PDF

Info

Publication number
KR20160054628A
KR20160054628A KR1020167011543A KR20167011543A KR20160054628A KR 20160054628 A KR20160054628 A KR 20160054628A KR 1020167011543 A KR1020167011543 A KR 1020167011543A KR 20167011543 A KR20167011543 A KR 20167011543A KR 20160054628 A KR20160054628 A KR 20160054628A
Authority
KR
South Korea
Prior art keywords
write commands
drive
write
order
commands
Prior art date
Application number
KR1020167011543A
Other languages
English (en)
Other versions
KR101718128B1 (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 KR20160054628A publication Critical patent/KR20160054628A/ko
Application granted granted Critical
Publication of KR101718128B1 publication Critical patent/KR101718128B1/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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI 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/0638Organizing or formatting or addressing of data
    • 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/0673Single storage device
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 시스템, 방법 및 컴퓨터 프로그램 물건이 제공된다. 동작시, 디바이스에 송신될 스토리지 디바이스와 연관된 복수의 기록 커맨드들이 식별된다. 부가적으로, 복수의 기록 커맨드들의 순서는 결정되고, 결정된 순서는 디바이스에 의해 알려진다. 또한, 복수의 기록 커맨드들은 결정된 순서로 오더링된다.

Description

스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링{ORDERING A PLURALITY OF WRITE COMMANDS ASSOCIATED WITH A STORAGE DEVICE}
본 발명은 스토리지(storage) 디바이스들에 관한 것이고, 더 구체적으로 이러한 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하는 것에 관한 것이다.
스토리지 시스템들은 스토리지 디바이스 및 스토리지 디바이스들에 접속된 그리고/또는 스토리지 디바이스들과 통신하는 다른 디바이스들을 포함하는 많은 디바이스들을 포함할 수 있다. 스토리지 디바이스들과 통신하는 이러한 디바이스들은 종종 스토리지 디바이스들과 연관된 데이터 및/또는 커맨드들에 액세스할 필요가 있다. 많은 상이한 타입들의 스토리지 시스템들에서, 커맨드들은 큐잉되고 커맨드들은 랜덤 순서(order)로 실행된다.
시리얼 ATA(SATA) 컴퓨터 버스는 하드 디스크 드라이브들 및 광학 드라이브들 등과 같은 스토리지 디바이스들에 호스트 버스 어댑터들을 접속하기 위한 하나의 스토리지-인터페이스이다. 현재, SATA 시스템들 및 다른 비교가능한 시스템들에서, 커맨드들은 큐잉되고, 커맨드들이 실행되는 순서는 랜덤이다. SATA 드라이브에 접속된 디바이스는 기록 커맨드들이 실행될 순서에 관해 전혀 알지 못한다.
그러므로, SATA 드라이브에 부착된 디바이스는 커맨드들 모두에 대하여 기록 데이터를 사전 페치하기 위해 충분한 리소스들을 가지지 않는 한, 기록 데이터를 사전 페치하지 않을 수 있다. 모든 커맨드들에 대한 사전 페칭은 모든 커맨드들을 사전 페칭하는 것이 메모리의 많은 부분의 사용을 요구하기 때문에 매우 대가가 크다. 부가적으로, 실행되는 커맨드가 반드시 데이터가 사전 페칭된 커맨드가 아닐 수도 있기 때문에 이 사전 페칭은 성능을 부가하지 않을 수 있다. 그러므로 종래의 기술에 연관된 이러한 그리고 다른 이슈들을 해결할 필요가 존재한다.
스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 시스템, 방법 및 컴퓨터 프로그램 물건이 제공된다. 동작시, 디바이스에 송신될 스토리지 디바이스와 연관된 복수의 기록 커맨드들이 식별된다. 부가적으로, 복수의 기록 커맨드들의 순서가 결정되고, 결정된 순서는 디바이스에 의해 알려진다. 또한, 복수의 기록 커맨드들은 결정된 순서로 오더링된다.
도 1은 일 실시예에 따라, 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 방법을 도시한다.
도 2는 일 실시예에 따라 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 시스템을 도시한다.
도 3은 다른 실시예에 따라 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 방법을 도시한다.
도 4는 다양한 이전 실시예들의 기능성 및/또는 다양한 구조가 구현될 수 있는 예시적인 시스템을 도시한다.
본 발명의 하나 이상의 실시예들의 상세한 설명은 본 발명의 선택된 세부사항들을 도시하는 첨부된 도면들과 함께 아래에 제공된다. 본 발명은 실시예들과 결합하여 설명된다. 본 명세서의 실시예들은 단순한 예시로서 이해되고, 본 발명은 본 명세서의 실시예들 중 일부 또는 전부로 명백히 제한되지 않고 본 발명은 다양한 대안들, 수정들 또는 균등물들을 내포한다. 설명의 단조로움을 회피하기 위해 (제1, 최종, 특정한, 다양한, 추가의, 다른, 특정, 선택, 일부 및 중요한: 을 포함하지만, 이에 제한되지 않는) 다양한 워드 라벨들은 실시예들의 세트들을 분리하기 위해 적용될 수 있다; 본 명세서에 사용되는 바와 같이, 이러한 라벨들은 명백히 품질, 또는 선호 또는 편견의 임의의 형태를 의미하지 않고, 단순히 별개의 세트들 사이에서 편리한 구분을 위한 것이다. 개시된 프로세스들의 임의의 동작들의 순서는 본 발명의 범위 내에서 변경가능하다. 다양한 특정 세부사항들은 본 발명의 완전한 이해를 제공하기 위해 아래의 설명에서 설명된다. 세부사항들이 예시의 목적을 위해 제공되고 본 발명은 세부사항들의 일부 또는 전부 없이 청구항들에 따라 실시될 수 있다. 간략화를 위해, 본 발명에 관련된 기술 분야들에 알려진 기술적 요소는 본 발명이 불필요하게 불명확하게 되지 않도록 상세하게는 설명되지 않았다.
도입
이 도입은 상세한 설명의 더 빠른 이해를 용이하게 하기 위해서만 포함된다; 본 발명은 도입에 제시된 개념들에 제한되지 않고(존재한다면, 명백한 예시들을 포함), 임의의 도입의 단락들은 필연적으로 전체 대상의 요약된 관점이고, 완전하거나 또는 제한적인 설명을 의미하지 않는다. 예를 들어, 아래의 도입은 오직 특정 실시예들에 대한 공간 및 구조에 의해 제한되는 개략적인 정보를 제공한다. 상세한 설명의 균형을 통해 논의되는, 청구항들이 궁극적으로 도출될 실시예들을 포함하는, 많은 다른 실시예들이 존재한다.
도 1은 일 실시예에 따라 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 방법(100)을 도시한다. 도시된 바와 같이, 디바이스에 송신될 스토리지 디바이스와 연관된 복수의 기록 커맨드들이 식별된다. 동작(102)을 참조하라.
본 설명의 문맥에서, 스토리지 디바이스는 데이터를 저장할 수 있는 임의의 디바이스로 지칭한다. 예를 들어, 다양한 실시예들에서, 스토리지 디바이스는 시리얼 ATA(SATA), 시리얼 어태치드 SCSI(SAS) 드라이브, 파이버 채널(FC) 드라이브, 또는 유니버설 시리얼 버스(USB) 드라이브 및/또는 임의의 다른 스토리지 디바이스를 포함할 수 있지만, 이에 제한되지 않는다. 부가적으로 다양한 실시예들에서, 스토리지 디바이스는 주변 컴포넌트 상호접속(PCI) 또는 스토리지 디바이스로서 나타나도록 구성되는 PCI 고속 기반 플러그 인 카드, 또는 스토리지 디바이스로서 나타나도록 구성되는 PCI 또는 PCI 고속 인터페이스를 포함할 수 있다. 일 실시예에서, PCI 또는 PCI 고속 인터페이스는 스토리지 디바이스에 액세스하기 위해 사용될 수 있다.
또한, 기록 커맨드들은 커맨드들을 수신할 수 있는 임의의 타입의 디바이스에 송신될 수 있다. 예를 들어, 다양한 실시예들에서, 디바이스는 호스트 시스템, SAS/SATA 브리지(예를 들어, SAS 대 SATA 브리지 등), USB/SATA 브리지(예를 들어, USB 대 SATA 브리지 등), FC/SATA 브리지(예를 들어, FC 대 SATA 브리지 등), PCI 또는 PCI 고속 기반 플러그 인 카드(예를 들어, 스토리지 디바이스 등으로서 나타나도록 구성됨), PCI 또는 PCI 고속 인터페이스, 적어도 하나의 스토리지 디바이스 또는 시스템에 액세스하도록 사용되는 인터페이스, 또는 동시에 발생하는 복수의 커맨드들을 가질 수 있는 임의의 디바이스를 포함할 수 있다.
스토리지 디바이스와 연관된 기록 커맨드들을 식별하는 것 외에, 복수의 기록 커맨드들의 순서가 결정되고, 결정된 순서는 디바이스에 의해 알려진다. 동작(104)을 참조하라. 일 실시예에서, 결정된 순서는 디바이스에 의해 알려진 미리 결정된 순서일 수 있다.
선택적으로, 순서는 기록 커맨드들이 식별되는 순서에 기반하여 결정될 수 있다(예를 들어, 선착순 기반 접근 등). 예를 들어, 커맨드들이 발생되고 그리고/또는 수신됨에 따라, 커맨드들이 큐잉될 수 있다. 다른 선택으로서, 순서는 디바이스에 의해 알려진 미리 결정된 순서를 포함할 수 있다.
물론, 순서는 디바이스에 의해 알려진 순서를 포함할 수 있다. 일 실시예에서, 컨트롤러는 디바이스에 순서를 알려줄 수 있다. 이 경우에서, 순서는 실시간 또는 거의 실시간으로 스토리지 디바이스에 의해 결정될 수 있다.
또한, 복수의 기록 커맨드들은 결정된 순서로 오더링된다. 동작(106)을 참조하라. 이 경우에서, 스토리지 디바이스는 결정된 순서로 복수의 기록 커맨드들을 오더링할 수 있다.
이 방식에서, 디바이스는 복수의 기록 커맨드들과 연관된 데이터를 사전 페칭하도록 허용될 수 있다. 이 경우에서, 디바이스는 연관된 기록 커맨드가 실행되기 전에 데이터를 사전 페칭하도록 허용될 수 있다. 이는 디바이스가 기록 커맨드들의 순서를 알기 때문에 달성될 수 있다.
일 실시예에서, 스토리지 디바이스와 연관된 판독 커맨드들이 또한 식별될 수 있다. 이 경우에서, 스토리지 디바이스와 연관된 복수의 판독 커맨드들은 랜덤하게 또는 결정된 순서로 오더링될 수 있다. 다른 경우에서, 판독 커맨드들은 기록 커맨드들과 섞일 수 있고, 여기서 기록 커맨드들은 서로에 대하여 자신들의 결정된 순서를 유지한다.
예시적인 실시예들
상세한 설명에 대한 도입을 종결하고, 본 명세서에 설명된 개념들에 따른 다양한 실시예 타입들의 부가적인 설명을 제공하는, "EC"(예시적인 조합)들로서 명백히 열거된 적어도 일부를 포함하는, 예시적인 실시예들의 모음이 후속된다; 이러한 실시예들은 상호 배타적, 완전 또는 제한적인 것으로 의도되지 않는다; 본 발명은 이러한 예시적인 실시예들에 제한되지 않고 오히려, 이슈된 청구항들의 범위 내에 모든 가능한 수정들 및 변형들을 내포한다.
EC1. 방법으로서,
디바이스에 송신될 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 식별하는 단계;
상기 복수의 기록 커맨드들의 순서를 결정하는 단계 ― 상기 결정된 순서는 디바이스에 의해 알려짐 ―; 및
상기 결정된 순서로 상기 복수의 기록 커맨드들을 오더링하는 단계
를 포함하는, 방법.
EC2. EC1에 있어서,
상기 결정된 순서는 상기 디바이스에 의해 알려진 미리 결정된 순서인, 방법.
EC3. EC1에 있어서,
상기 순서는 상기 복수의 기록 커맨드들이 식별되는 순서에 기반하여 결정되는, 방법.
EC4. EC1에 있어서,
상기 디바이스가 상기 복수의 기록 커맨드들과 연관된 데이터를 사전 페칭하도록 허용하는 단계를 더 포함하는, 방법.
EC5. EC4에 있어서,
상기 디바이스는 연관된 기록 커맨드가 실행되기 전에 상기 데이터를 사전 페칭하도록 허용되는, 방법.
EC6. EC1에 있어서,
상기 식별하는 단계, 결정하는 단계 및 오더링하는 단계는 상기 스토리지 디바이스의 모드에 기반하여 수행되는, 방법.
EC7. EC1에 있어서,
상기 스토리지 디바이스는 상기 결정된 순서로 상기 복수의 기록 커맨드들을 오더링하는, 방법.
EC8. EC1에 있어서,
상기 디바이스는 호스트 시스템에 대한 스토리지-인터페이스 어댑터를 포함하는, 방법.
EC9. EC1에 있어서,
상기 디바이스는 SAS/SATA 브리지를 포함하는, 방법.
EC10. EC1에 있어서,
상기 디바이스는 USB/SATA 브리지를 포함하는, 방법.
EC11. EC1에 있어서,
상기 디바이스는 FC/SATA 브리지를 포함하는, 방법.
EC12. EC1에 있어서,
상기 디바이스는 PCI 또는 PCI 고속 기반 플러그 인 카드 중 하나를 포함하는, 방법.
EC13. EC1에 있어서,
상기 디바이스는 PCI 또는 PCI 고속 인터페이스 중 하나를 포함하는, 방법.
EC14. EC1에 있어서,
상기 디바이스는 적어도 하나의 스토리지 디바이스 또는 시스템에 액세스하기 위해 사용되는 인터페이스를 포함하는, 방법.
EC15. EC1에 있어서,
상기 디바이스는 동시에 발생하는 복수의 커맨드들을 가질 수 있는 디바이스를 포함하는, 방법.
EC16. EC1에 있어서,
상기 스토리지 디바이스와 연관된 복수의 판독 커맨드들을 식별하는 단계를 더 포함하는, 방법.
EC17. EC16에 있어서, 상기 스토리지 디바이스와 연관된 복수의 판독 커맨드들은 랜덤하게 오더링되는, 방법.
EC18. EC17에 있어서,
랜덤하게 오더링된 상기 복수의 판독 커맨드들은 상기 결정된 순서로 상기 복수의 기록 커맨드들과 섞이는, 방법.
EC19. EC1에 있어서,
상기 스토리지 디바이스는 시리얼 ATA(SATA) 드라이브, 시리얼 어태치드 SCSI(SAS) 드라이브, 파이버 채널(FC) 드라이브 또는 유니버설 시리얼 버스(USB) 드라이브 중 하나를 포함하는, 방법.
EC20. EC1에 있어서,
상기 스토리지 디바이스는 스토리지 디바이스로서 나타나도록 구성된 PCI 또는 PCI 고속 기반 플러그 인 카드 중 하나를 포함하는, 방법.
EC21. EC1에 있어서,
상기 스토리지 디바이스는 스토리지 디바이스로서 나타나도록 구성된 PCI 또는 PCI 고속 인터페이스 중 하나를 포함하는, 방법.
EC22. EC1에 있어서,
PCI 또는 PCI 고속 인터페이스는 상기 스토리지 디바이스에 액세스하기 위해 사용되는, 방법.
EC23. 컴퓨터 판독가능한 매체상에서 구현되는 컴퓨터 프로그램 물건(product)으로서,
디바이스에 송신된 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 식별하기 위한 컴퓨터 코드;
상기 복수의 기록 커맨드들의 순서를 결정하기 위한 컴퓨터 코드 ― 상기 결정된 순서는 상기 디바이스에 의해 알려짐 ―; 및
상기 결정된 순서로 상기 복수의 기록 커맨드들을 오더링하기 위한 컴퓨터 코드
를 포함하는, 컴퓨터 프로그램 물건.
EC24. 장치로서,
디바이스에 송신된 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 식별하고 결정된 순서로 상기 복수의 기록 커맨드들을 오더링하기 위한 스토리지 디바이스를 포함하고,
상기 결정된 순서는 상기 디바이스에 의해 알려지는, 장치.
EC25. 방법으로서,
랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하기 위해 인에이블되는 디바이스에 의해 기록 커맨드들을 프로세싱하는 단계 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
상기 디바이스가 상기 기록 커맨드들의 적어도 일부와 연관된 기록 데이터를 페칭하는 단계 ― 상기 디바이스는 상기 드라이브에 상기 페칭된 데이터를 송신함 ―;
상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하는 단계
를 포함하고,
상기 디바이스는 다음에 페칭되는 상기 연관된 기록 데이터에 대한 모든 이용가능한 기록 데이터 스토리지를 완전히 이용하기 위해 인에이블되는, 방법.
EC26. EC25에 있어서,
상기 디바이스는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터(encounter)하는, 방법.
EC27. EC25에 있어서,
상기 드라이브에 관하여, 상기 디바이스는 호스트 버스 어댑터 또는 브리지로서 기능하는, 방법.
EC28. EC25에 있어서,
상기 디바이스가 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하는 단계를 더 포함하고,
상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고, 상기 특정 시퀀스와 동일한, 방법.
EC29. EC25에 있어서,
상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 방법.
EC30. EC25에 있어서,
상기 드라이브는 고체-상태 드라이브(SSD)인, 방법.
EC31. EC25에 있어서,
상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하도록 인에이블되고 상기 기록 커맨드들의 실행과 섞이는, 방법.
EC32. 장치로서,
*랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하기 위한 수단;
기록 커맨드들을 프로세싱하기 위한 수단 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
상기 기록 커맨드들 중 적어도 일부와 연관된 기록 데이터를 페칭하기 위한 수단;
상기 드라이브에 상기 페칭된 데이터를 송신하기 위한 수단;
상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하기 위한 수단을 포함하고,
상기 디바이스는 다음에 페칭되는 상기 연관된 기록 데이터에 대한 모든 이용가능한 데이터 스토리지를 완전히 이용하기 위해 인에이블되는, 장치.
EC33. EC32에 있어서,
상기 장치는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터하는, 장치.
EC34. EC32에 있어서,
*상기 장치는 개시자 또는 브리지인, 장치.
EC35. EC32에 있어서,
특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하기 위한 수단을 더 포함하고,
상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고, 상기 특정 시퀀스와 동일한, 장치.
EC36. EC32에 있어서,
상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 장치.
EC37. EC32에 있어서,
상기 드라이브는 고체-상태 드라이브(SSD)인, 장치.
EC38. EC32에 있어서,
상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하도록 인에이블되고 상기 기록 커맨드들의 실행과 섞이는, 장치.
EC39. 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금
랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하기 위해 인에이블되는 디바이스에 의해 기록 커맨드들을 프로세싱하고 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
상기 디바이스가 상기 기록 커맨드들 중 적어도 일부와 연관되는 기록 데이터를 페칭하고 ― 상기 디바이스는 상기 드라이브에 상기 페칭된 데이터를 송신함 ―;
상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하는 것을
포함하는 기능들을 수행하도록 하는 명령들의 세트가 저장되고, 상기 디바이스는 다음에 페칭되는 상기 연관된 기록 데이터에 대한 모든 이용가능한 기록 데이터 스토리지를 완전히 이용하기 위해 인에이블되는,
유형의 컴퓨터 판독가능한 매체.
EC40. EC39에 있어서,
상기 디바이스는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터하는, 유형의 컴퓨터 판독가능한 매체.
EC41. EC39에 있어서,
상기 디바이스는 호스트 버스 어댑터 및 브리지 중 선택된 하나인, 유형의 컴퓨터 판독가능한 매체.
EC42. EC39에 있어서,
상기 기록 커맨드들을 프로세싱하는 것은 상기 기록 커맨드들을 발생시키는 것 및 상기 기록 커맨드들을 수신하는 것 중 적어도 하나를 포함하는, 유형의 컴퓨터 판독가능한 매체.
EC43. EC39에 있어서,
상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 유형의 컴퓨터 판독가능한 매체.
EC44. EC39에 있어서,
상기 드라이브는 고체-상태 드라이브(SSD)인, 유형의 컴퓨터 판독가능한 매체.
EC45. EC39에 있어서,
상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하기 위해 인에이블되고 상기 기록 커맨드들의 실행과 섞이는, 유형의 컴퓨터 판독가능한 매체.
EC46. EC39에 있어서,
상기 저장된 명령들의 세트는 상기 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 상기 디바이스가 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드를 송신하는 것을 포함하는 추가의 기능들을 수행하도록 하고
상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고 상기 특정 시퀀스와 동일한, 유형의 컴퓨터 판독가능한 매체.
EC47. 장치로서,
랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하기 위해 인에이블되는 스토리지-인터페이스;
기록 커맨드들을 일시적으로 홀딩하기 위해 인에이블되는 큐 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
상기 기록 커맨드들 중 적어도 일부와 연관된 기록 데이터를 페칭하고 상기 드라이브에 상기 페칭된 데이터를 송신하기 위한 제어 논리
를 포함하고,
상기 제어 논리는 상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하기 위해 인에이블되고 다음 페칭된 상기 연관된 기록 데이터에 대한 모든 이용가능한 기록 데이터 스토리지를 완전히 이용하기 위해 추가적으로 인에이블되는, 장치.
EC48. EC47에 있어서,
상기 장치는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터하는, 장치.
EC49. EC47에 있어서,
상기 특정 순서는 상기 드라이브에 의해 상기 장치에 전달되는, 장치.
EC50. EC47에 있어서,
상기 장치 및 상기 드라이브 각각은 상기 특정 순서를 사용하도록 사전 구성되는, 장치.
EC51. EC47에 있어서,
상기 특정 순서는 동작의 적어도 하나의 모드의 선택을 통해 상기 장치 및 상기 드라이브 중 적어도 하나에서 결정되는, 장치.
EC52. EC47에 있어서,
상기 특정 순서는 선착순인, 장치.
EC53. EC47에 있어서,
상기 장치 및 상기 드라이브 중 적어도 하나는 상기 특정 순서를 항상 사용하는, 장치.
EC54. EC47에 있어서,
상기 장치는 상기 드라이브에 관하여 호스트 버스 어댑터로서 기능하는, 장치.
EC55. EC47에 있어서,
상기 장치는 상기 드라이브에 관하여 브리지로서 기능하는, 장치.
EC56. EC47에 있어서,
상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 장치.
EC57. EC47에 있어서,
상기 드라이브는 고체-상태 드라이브(SSD)인, 장치.
EC58. EC47에 있어서,
상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하기 위해 인에이블되고 상기 기록 커맨드들의 실행과 섞이는, 장치.
EC59. EC47에 있어서,
상기 장치는 적어도 상기 기록 커맨드들을 발생시키는, 장치.
EC60. EC47에 있어서,
*상기 장치는 적어도 상기 기록 커맨드를 수신하는, 장치.
EC61. EC47에 있어서,
상기 제어 논리는 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하기 위해 추가적으로 인에이블되고,
상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고 상기 특정 시퀀스와 동일한, 장치.
EC62. EC47에 있어서,
상기 큐에서 일시적으로 홀딩되는 상기 기록 커맨드들은 특정 시퀀스로 홀딩되고, 상기 제어 논리는 상기 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하기 위해 추가적으로 인에이블되고 상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고 상기 특정 시퀀스와 동일한, 장치.
추가의 특징들
더 예시적인 정보가 이제 이전의 프레임워크가 사용자의 요구에 따라 구현될 수 있거나 구현될 수 없는 다양한 선택적 구조들 및 특징들에 관하여 설명될 것이다. 아래의 정보가 예시적인 목적들로 설명되고 임의의 방식으로 제한되는 것으로 이해되지 않아야 함이 강력하게 주목되어야 한다. 아래의 특징들 중 일부는 설명된 다른 특징들을 배제하거나 또는 배제함이 없이 선택적으로 결합될 수 있다.
도 2는 일 실시예에 따라 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 시스템(200)을 도시한다. 선택적으로, 제시된 시스템(200)은 도 1의 방법(100)을 실행하도록 구현될 수 있다. 물론, 하지만, 시스템(200)은 임의의 원하는 환경에서 구현될 수 있다. 또한 본 발명의 설명 동안 이미 언급된 정의들이 적용될 수 있음이 주목되어야 한다.
도시된 바와 같이, 시스템(200)은 스토리지 디바이스(202)를 포함한다. 추가적으로 도시된 바와 같이, 하나 이상의 디바이스들(204)은 스토리지 디바이스(202)와 통신하고 그리고/또는 스토리지 디바이스에 접속된다. 이 통신 및/또는 접속은 임의의 타입의 버스 등을 이용하여 달성될 수 있다.
이 경우에서, 스토리지 디바이스(202)는 임의의 수의 스토리지 디바이스들을 제시할 수 있다. 예를 들어, 다양한 실시예들에서, 스토리지 디바이스(202)는 SATA 드라이브, SAS 드라이브, FC 드라이브, USB 드라이브, 스토리지 디바이스로서 나타나도록 구성되는 PCI 또는 PCI 고속 기반 플러그 인 카드 및/또는 임의의 다른 스토리지 디바이스를 나타낼 수 있다.
또한, 하나 이상의 디바이스들(204)은 커맨드들을 수신할 수 있는 임의의 디바이스를 포함할 수 있다. 예를 들어, 다양한 실시예들에서, 디바이스들(204)은 SAS/SATA 브리지, USB/SATA 브리지, FC/SATA 브리지, PCI 또는 PCI 고속 기반 플러그 인 카드, 익스팬더, 및 개시자 및/또는 임의의 다른 디바이스를 포함할 수 있다.
동작 시, 스토리지 디바이스(202)는 디바이스들(204) 중 하나 이상에 송신될 스토리지 디바이스(202)와 연관된 기록 커맨드들을 식별할 수 있다. 그 다음 스토리지 디바이스(202)는 순서를 결정할 수 있다. 다양한 실시예들에서, 이 결정은 실시간 또는 거의 실시간으로 이루어질 수 있거나 또는 미리 결정된 순서일 수 있다.
그 다음, 스토리지 디바이스(202)는 결정된 순서로 기록 커맨드들을 오더링할 수 있고, 결정된 순서는 디바이스들(204)에 의해 알려진다. 일 실시예에서, 스토리지 디바이스(202)는 순서대로 기록 커맨드들을 큐에 위치시킴으로써 기록 커맨드들을 오더링할 수 있다. 다른 실시예에서, 스토리지 디바이스(202)는 기록 커맨드들에 순서를 할당함으로써 기록 커맨드들을 오더링할 수 있다.
일 실시예에서, 식별, 결정 및 오더링은 스토리지 디바이스(202)의 모드에 기반하여 수행될 수 있다. 예를 들어, 모드는 특정 오더링이 수행 및/또는 이용될 것임을 지시할 수 있다. 다른 실시예에서, 식별, 결정 및 오더링은 표준 기능으로서 수행될 수 있다.
일 실시예에서, 스토리지 디바이스(202)와 연관된 복수의 판독 커맨드들이 또한 식별될 수 있다. 이 경우에서, 스토리지 디바이스(202)와 연관된 복수의 판독 커맨드들은 랜덤하게 오더링될 수 있다. 또한, 랜덤하게 오더링된 복수의 판독 커맨드들이 결정된 순서로 복수의 기록 커맨드들과 섞일 수 있다.
이 방식에서, 디바이스들(204)은 기록 커맨드들과 연관된 데이터를 사전 페칭하도록 허용될 수 있다. 이 경우에서, 디바이스들(204)은 연관된 기록 커맨드가 실행되기 전에 데이터를 사전 페칭하도록 허용될 수 있다. 이는 디바이스들(204)이 기록 커맨드들의 순서를 알기 때문에 달성될 수 있다.
예를 들어, 임의의 시스템들에서, SATA 드라이브에 부착된 디바이스(예를 들어, 호스트/브리지 등)는 기록 커맨드들의 순서를 알지 못할 수 있다. 그러므로, 드라이브는 모든 커맨드들에 대한 기록 데이터를 사전 페칭하기 위한 충분한 리소스들을 갖지 않는 경우, 드라이브는 기록 데이터를 사전 페칭하지 않을 수 있다. 하지만, 모든 커맨드들에 대한 사전 페칭은 메모리의 많은 부분을 차지하기 때문에 매우 대가가 클 수 있다.
선택적으로, 하드 디스크 드라이브(HDD)는 모든 데이터를 페칭하도록 요구되는 매체의 로테이션들의 수를 감소시키기 위해 커맨드들을 리오더링할 수 있다. 부가적으로, 고체-상태 드라이브(SSD)는 드라이브에 대하여 최적화하기 위해 내부 구조들에 기반하여 커맨드들을 리오더링할 수 있다. 하지만, 임의의 경우들에서, 기록 데이터를 페칭할 필요가 있는 드라이브에 부착되는 호스트/브리지는 보틀넥(bottle neck)일 수 있다.
그러므로, 드라이브는 호스트 및/또는 브리지에 의해 알려진 결정론적 경향으로 커맨드들을 오더링할 수 있다. 일 실시예에서, 이는 선착순 방식으로서 구현될 수 있다. 그러므로, 호스트는 기록 커맨드들의 순서를 알 수 있고 커맨드가 실행되기 전에 기록 데이터를 사전 페칭할 수 있다. 다양한 실시예들에서, 드라이브는 이 오더링을 항상 수행할 수 있거나 또는 오더링이 모드에 기반할 수 있다. 선택적으로, 둘 이상의 모드가 존재할 수 있다.
부가적으로, 오더링은 임의의 프로토콜 또는 서로에 대한 커맨드들의 오더링의 결정론적 기술을 가지지 않는 프로토콜 내의 모드에 대하여 구현될 수 있다. 판독 커맨드들의 순서가 기록 커맨드들의 순서에 대하여 결정론적일 수도 있거나 또는 결정론적이지 않을 수 있음이 주목되어야 한다.
예를 들어, 많은 기록 및 판독 커맨드들이 수신될 수 있다. 판독 커맨드들은 랜덤하게 오더링될 수 있고 기록 커맨드들은 결정론적으로 오더링될 수 있다. 기록 및 판독 커맨드들은 섞일 수 있고, 서로에 대한 기록 커맨드들의 상대적 순서가 유지된다. 또한 일 실시예에서, 메모리 컨트롤러(예를 들어, SSD 컨트롤러 등)는 효율적인 사전 페칭을 허용하기 위해 드라이브에 부착된 디바이스에 기록 커맨드들의 순서에 관한 정보를 전달할 수 있다.
도 3은 다른 실시예에 따라 스토리지 디바이스와 연관된 복수의 기록 커맨드들을 오더링하기 위한 방법(300)을 도시한다. 선택적으로, 본 발명의 방법(300)은 도 1-2의 기능성 및 구조의 맥락에서 구현될 수 있다. 물론, 하지만, 방법(300)은 임의의 원하는 환경에서 실행될 수 있다. 또 한편, 이미 언급된 정의들이 본 발명의 설명 동안 적용될 수 있다.
도시된 바와 같이, 커맨드가 식별되는지가 결정된다. 동작(302)을 참조하라. 커맨드가 식별되는 경우, 커맨드가 판독 커맨드인지가 결정된다. 동작(304)을 참조하라.
커맨드가 판독 커맨드인 경우, 판독 커맨드는 랜덤 순서로 큐잉된다. 동작(306)을 참조하라. 커맨드가 판독 커맨드가 아닌 경우, 커맨드가 기록 커맨드인지가 결정된다. 동작(308)을 참조하라.
커맨드가 기록 커맨드인 경우, 커맨드는 수신 디바이스에 알려진 순서로 큐잉된다. 동작(310)을 참조하라. 예를 들어, 일 실시예에서, 기록 커맨드는 순서로 큐잉될 수 있고 그 다음에 순서에 관하여 수신 디바이스에 통보될 수 있다. 다른 실시예에서, 기록 커맨드는 수신 디바이스에 의해 이미 알려진 미리 결정된 순서로 큐잉될 수 있다.
그 다음에 데이터를 사전 페칭할 커맨드가 수신 디바이스로부터 수신되는지가 결정된다. 동작(312)을 참조하라. 데이터를 사전 페칭할 커맨드가 수신되는 경우, 데이터가 송신된다. 동작(314)을 참조하라.
일 실시예에서, SATA 드라이브는 호스트, 브리지 또는 부착된 디바이스가 커맨드들을 송신하는 것과 동일한 순서로 기록 커맨드들을 실행할 수 있다. 그 다음에 호스트, 브리지 또는 부착된 디바이스는 기록 커맨드들이 실행될 순서를 아는 것에 기반하여 데이터를 사전 페칭할 수 있다. 그러므로, 모든 이용가능한 기록 데이터 스토리지는 다음 데이터에 대하여 사용될 수 있다.
이 방식에서, 디바이스가 기록 데이터에 대하여 준비되기 전에 기록 데이터가 사전 페칭될 수 있기 때문에 성능은 매우 증가될 수 있다. 일 실시예에서, SSD 컨트롤러는 효율적인 사전 페칭을 허용하도록 부착되는 디바이스에 기록 커맨드들의 순서에 관한 정보를 전달할 수 있다.
도 4는 다양한 이전 실시예들의 다양한 구조 및/또는 기능성이 구현될 수 있는 예시적인 시스템(400)을 도시한다. 도시된 바와 같이, 통신 버스(402)에 접속되는 적어도 하나의 호스트 프로세서(401)를 포함하는 시스템(400)이 제공된다. 시스템(400)은 또한 주 메모리(404)를 포함한다. 제어 논리(소프트웨어) 및 데이터는 랜덤 액세스 메모리(RAM)의 형태를 취할 수 있는 주 메모리(404)에 저장된다.
시스템(400)은 또한 그래픽 프로세서(406) 및 디스플레이(408), 즉, 컴퓨터 모니터를 포함한다. 일 실시예에서, 그래픽 프로세서(406)는 복수의 셰이더 모듈들, 래스터화 모듈 등을 포함할 수 있다. 앞서 말한 모듈들 각각은 그래픽 프로세싱 유닛(GPU)을 형성하기 위해 단일 반도체 플랫폼 상에도 위치될 수 있다.
제시된 설명에서, 단일 반도체 플랫폼은 단독 단일 반도체-기반 집적 회로 또는 칩으로 지칭될 수 있다. 용어 단일 반도체 플랫폼이 또한 온-칩 동작을 시뮬레이션하고 종래의 중앙 프로세싱 유닛(CPU) 및 버스 구현을 이용하여 실질적인 향상들을 이루는 증가된 접속성을 가진 멀티-칩 모듈들을 지칭할 수 있음이 주목되어야 한다. 물론, 다양한 모듈들은 또한 별개로 위치될 수 있거나 또는 사용자의 요구들에 따라 다양한 조합들의 반도체 플랫폼들에 위치될 수 있다.
시스템(400)은 또한 2차 스토리지(410)를 포함할 수 있다. 2차 스토리지(410)는 예를 들어, 플로피 디스크 드라이브, 자기 테이프 드라이브, 컴팩트 디스크 드라이브 등을 포함하는 제거가능한 스토리지 드라이브 및/또는 하드 디스크 드라이브를 포함한다. 제거가능한 스토리지 드라이브는 잘 알려진 방식으로 제거가능한 스토리지 유닛으로부터 판독하고 그리고/또는 이에 기록한다.
컴퓨터 프로그램들 또는 컴퓨터 제어 논리 알고리즘들은 주 메모리(404) 및/또는 2차 스토리지(410)에 저장될 수 있다. 이러한 컴퓨터 프로그램들은 실행될 때, 시스템(400)이 다양한 기능들을 수행할 수 있도록 한다. 메모리(404), 스토리지(410) 및/또는 임의의 다른 스토리지는 컴퓨터-판독가능한 매체의 가능한 예시들이다.
일 실시예에서, 다양한 이전 도면들의 구조 및/또는 기능성이 호스트 프로세서(401), 그래픽 프로세서(406), 호스트 프로세서(401) 및 그래픽 프로세서(406) 둘 다의 성능들의 적어도 일부분일 수 있는 집적 회로(도시 안 됨), 칩셋(작업하도록 설계되고 관련된 기능을 수행하기 위한 유닛으로써 판매되는 집적 회로들의 그룹 등) 및/또는 그 문제에 관한 임의의 다른 집적 회로의 맥락에서 구현될 수 있다.
또한, 다양한 이전 도면들의 구조 및/또는 기능성은 범용 컴퓨터 시스템, 회로 보드 시스템, 엔터테인먼트 목적들에 대하여 전용된 게임 콘솔 시스템, 애플리케이션-특정 시스템 및/또는 임의의 다른 요구되는 시스템의 맥락에서 구현될 수 있다. 예를 들어, 시스템(400)은 데스크톱 컴퓨터, 랩-톱 컴퓨터, 및/또는 임의의 다른 타입의 논리의 형태를 취할 수 있다. 또한, 시스템(400)은 제한적이지는 않지만, PDA(personal digital assistant) 디바이스, 모바일 전화 디바이스, 텔레비전 등을 포함하는 다양한 다른 디바이스들의 형태를 취할 수 있다.
또한, 도시되지 않았지만, 시스템(400)은 통신 목적들을 위한 네트워크[예를 들어, 통신 네트워크, 로컬 영역 네트워크(LAN), 무선 네트워크, 인터넷과 같은 광역 네트워크(WAN), 피어-투-피어 네트워크, 케이블 네트워크 등]에 커플링될 수 있다.
다양한 실시예들이 상기 설명되었지만, 이들이 단지 예시로서 제시될 뿐 이에 제한되지 않음이 이해되어야 한다. 그러므로, 선호되는 실시예의 영역 및 범위는 상기-설명된 예시적인 실시예들 중 어느 것에 의해서도 제한되지 않아야 하지만, 아래의 청구항들 및 자신들의 균등물들에 따라서만 정의되어야 한다.
결론
특정 선택들은 텍스트 및 도면들을 준비하는 데 있어 단지 편의를 위해 상세한 설명에서 이루어졌고 반대로 지시되지 않는 한, 선택들은 그 자체로 설명된 실시예들의 구조 또는 동작에 관한 부가적인 정보를 전달하기 위한 것으로 이해되지 않아야 한다. 선택들의 예시들은: 도면 번호에 대하여 사용되는 지정들의 특정 조직 또는 할당 및 실시예들의 특징들 및 엘리먼트들을 식별하고 참조하기 위해 사용되는 엘리먼트 식별자들(도면번호들 또는 수치적 지정자들 등)의 특정 조직 또는 할당을 포함한다.
용어들 "포함하는" 또는 "포함한다"는 제한적이지 않은 범위의 논리 세트들을 설명하는 관념들로서 이해되고자 구체적으로 의도되고 특히 용어 "내에"에 의해 명백히 후속되지 않는 한 물리적 격납을 뜻하는 것으로 여겨지지 않는다.
앞서 언급된 실시예들이 설명 및 이래의 명확화를 위해 다소 상세히 설명되었지만, 본 발명은 제공되는 세부사항들에 제한된다. 본 발명의 많은 실시예들이 존재한다. 개시된 실시예들은 예시적이고 제한적이지 않다.
구성, 배열 및 사용에서 다양한 변형들은 가능하면 설명과 일치하고 이슈된 특허의 청구항들의 범위 내에 있음이 이해될 것이다. 예를 들어, 사용되는 기술의 상호접속 및 기능-유닛 비트-폭들, 클록 스피드들 및 타입은 각 컴포넌트 블록에서 다양한 실시예들에 따라 변할 수 있다. 상호접속 및 논리에 주어진 이름들은 단순히 예시적이고 설명된 개념들을 제한하는 것으로 이해되지 않아야 한다. 흐름도 및 플로우 다이어그램 프로세스, 동작 및 기능 엘리먼트들의 순서 및 배열은 다양한 실시예들에 따라 변할 수 있다. 또한, 명백히 반대로 언급되지 않는 한, 특정된 값 범위들, 사용된 최대 및 최소 값들, 또는 다른 특정 상세들(예를 들어, 플래시 메모리 기술 타입들; 및 레지스터들 및 버퍼들에서 엔트리들 또는 단계들의 수)은 단순히 설명된 실시예들의 그것들이고, 구현 기술에서 향상들 및 변경들을 트래킹하도록 예측되고, 제한들로서 이해되지 않아야 한다.
당업계에 알려진 기능성 균등 기술들은 다양한 컴포넌트들, 서브-시스템들, 동작들, 기능들, 루틴들, 서브-루틴들, 인-라인 루틴들, 절차들, 매크로들 또는 이들의 부분들을 구현하기 위해 설명된 기술들 대신에 이용가능하다. 또한 실시예들의 많은 기능적 양상들이 더 빠른 프로세싱(하드웨어에서의 이전의 기능들의 소프트웨어로의 이행을 용이하게 함) 및 더 높은 집적도(소프트웨어에서의 이전의 기능들의 하드웨어로의 이행을 용이하게 함)의 실시예 의존 설계 제약들 및 기술 트렌드들의 함수로서 하드웨어(즉, 일반적으로 전용 회로) 또는 소프트웨어(즉, 프로그램된 컨트롤러 또는 프로세서의 임의의 방식을 통해)에서 선택적으로 구현가능함이 또한 이해될 것이다. 다양한 실시예들에서 특정 변형들은 파티셔닝에서 차이들; 상이한 폼 팩터들 및 구성들; 상이한 동작 시스템들 및 다른 시스템 소프트웨어의 사용; 상이한 인터페이스 표준들, 네트워크 프로토콜들 또는 통신 링크들의 사용; 및 특정 애플리케이션의 고유 엔지니어링 및 비지니스 제약들에 따라 본 명세서에서 설명된 개념들을 구현할 때 예상되는 다른 변형들을 포함하지만 이에 제한되지 않는다.
실시예들은 설명된 실시예들의 많은 양상들의 최소 구현을 위해 요구되는 정도를 넘는 환경적 맥락으로 그리고 상세하게 설명되었다. 당업자는 일부 실시예들이 남아있는 엘리먼트들 사이에서 기본 협조를 변경함이 없이 개시된 컴포넌트들 또는 특징을 생략함을 인지할 것이다. 따라서, 개시된 세부사항들의 대부분이 설명된 실시예들의 다양한 양상들을 구현하기 위해 요구되지 않음이 이해된다. 종래의 기술로부터 남아있는 엘리먼트들이 구분가능한 정도에서, 생략되는 컴포넌트들 및 특징들은 본 명세서에 설명된 개념들에 제한되지 않는다.
설계시 모든 이러한 변형들은 설명된 실시예들에 의해 전달되는 교시에 비해 사소한 변경들이다. 또한, 본 명세서에 설명된 실시예들은 다른 컴퓨팅 및 네트워크 애플리케이션들에 넓은 적용성을 가지고 설명된 실시예들의 특정 애플리케이션 또는 인더스트리에 제한되지 않음이 이해된다. 따라서, 본 발명은 이슈된 특허의 청구항들의 범위 내에 내포되는 모든 가능한 수정들 및 변경들을 포함하는 것으로 이해되어야 한다.

Claims (38)

  1. 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링(ordering)하기 위한 방법으로서,
    랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하기 위해 인에이블되는 디바이스에 의해 기록 커맨드들을 프로세싱하는 단계 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
    상기 디바이스가 상기 기록 커맨드들의 적어도 일부와 연관된 기록 데이터를 페칭하는 단계 ― 상기 디바이스는 상기 드라이브에 상기 페칭된 데이터를 송신함 ―;
    상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하는 단계
    를 포함하고,
    상기 디바이스는 다음에 페칭되는 상기 연관된 기록 데이터에 대한 모든 이용가능한 기록 데이터 스토리지를 완전히 이용하기 위해 인에이블되는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 디바이스는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터(encounter)하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 드라이브에 관하여, 상기 디바이스는 호스트 버스 어댑터(host bus adapter) 또는 브리지(bridge)로서 기능하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 디바이스가 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하는 단계를 더 포함하고,
    상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고, 상기 특정 시퀀스와 동일한, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 드라이브는 고체-상태 드라이브(solid-state drive, SSD)인, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하도록 인에이블되고 상기 기록 커맨드들의 실행과 섞이는(intermix), 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 방법.
  8. 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치로서,
    랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하기 위한 수단;
    기록 커맨드들을 프로세싱하기 위한 수단 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
    상기 기록 커맨드들 중 적어도 일부와 연관된 기록 데이터를 페칭하기 위한 수단;
    상기 드라이브에 상기 페칭된 데이터를 송신하기 위한 수단;
    상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하기 위한 수단;
    을 포함하고,
    상기 장치는 다음에 페칭되는 상기 연관된 기록 데이터에 대한 모든 이용가능한 기록 데이터 스토리지를 완전히 이용하기 위해 인에이블되는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  9. 제 8 항에 있어서,
    상기 장치는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  10. 제 8 항에 있어서,
    상기 장치는 개시자(initiator) 또는 브리지인, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  11. 제 8 항에 있어서,
    특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하기 위한 수단을 더 포함하고,
    상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고, 상기 특정 시퀀스와 동일한, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  12. 제 8 항에 있어서,
    상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  13. 제 8 항에 있어서,
    상기 드라이브는 고체-상태 드라이브(SSD)인, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  14. 제 8 항에 있어서,
    상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하도록 인에이블되고 상기 기록 커맨드들의 실행과 섞이는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  15. 유형의(tangible) 컴퓨터 판독가능한 매체로서,
    컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금
    랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하기 위해 인에이블되는 디바이스에 의해 기록 커맨드들을 프로세싱하고 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
    상기 디바이스가 상기 기록 커맨드들 중 적어도 일부와 연관되는 기록 데이터를 페칭하고 ― 상기 디바이스는 상기 드라이브에 상기 페칭된 데이터를 송신함 ―;
    상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하는 것을
    포함하는 기능들을 수행하도록 하는 명령들의 세트가 저장되며,
    상기 디바이스는 다음에 페칭되는 상기 연관된 기록 데이터에 대한 모든 이용가능한 기록 데이터 스토리지를 완전히 이용하기 위해 인에이블되는,
    유형의 컴퓨터 판독가능한 매체.
  16. 제 15 항에 있어서,
    상기 디바이스는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터하는, 유형의 컴퓨터 판독가능한 매체.
  17. 제 15 항에 있어서,
    상기 디바이스는 호스트 버스 어댑터 및 브리지 중 선택된 하나인, 유형의 컴퓨터 판독가능한 매체.
  18. 제 15 항에 있어서,
    상기 기록 커맨드들을 프로세싱하는 것은 상기 기록 커맨드들을 발생시키는 것 및 상기 기록 커맨드들을 수신하는 것 중 적어도 하나를 포함하는, 유형의 컴퓨터 판독가능한 매체.
  19. 제 15 항에 있어서,
    상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 유형의 컴퓨터 판독가능한 매체.
  20. 제 15 항에 있어서,
    상기 드라이브는 고체-상태 드라이브(SSD)인, 유형의 컴퓨터 판독가능한 매체.
  21. 제 15 항에 있어서,
    상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하기 위해 인에이블되고 상기 기록 커맨드들의 실행과 섞이는, 유형의 컴퓨터 판독가능한 매체.
  22. 제 15 항에 있어서,
    상기 저장된 명령들의 세트는 상기 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 상기 디바이스가 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하는 것을 포함하는 추가의 기능들을 수행하도록 하고
    상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고 상기 특정 시퀀스와 동일한, 유형의 컴퓨터 판독가능한 매체.
  23. 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치로서,
    랜덤 순서로 커맨드 실행을 허용하는 스토리지 프로토콜과 호환가능한 드라이브와 통신하도록 인에이블되는 스토리지-인터페이스;
    기록 커맨드들을 일시적으로 홀딩하도록 인에이블되는 큐 ― 각 기록 커맨드는 연관된 기록 데이터를 가짐 ―;
    상기 기록 커맨드들 중 적어도 일부와 연관된 기록 데이터를 페칭하고 상기 드라이브에 상기 페칭된 데이터를 송신하기 위한 제어 논리
    를 포함하고,
    상기 제어 논리는 상기 드라이브에 의한 상기 기록 커맨드들의 실행과 동일한 특정 순서로 상기 연관된 기록 데이터의 페칭을 수행하도록 인에이블되고, 다음 페칭된 상기 연관된 기록 데이터에 대한 모든 이용가능한 기록 데이터 스토리지를 완전히 이용하도록 추가적으로 인에이블되는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  24. 제 23 항에 있어서,
    상기 장치는 상기 특정 순서 외의 시퀀스로 상기 기록 커맨드들을 먼저 인카운터하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  25. 제 23 항에 있어서,
    상기 특정 순서는 상기 드라이브에 의해 상기 장치에 전달되는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  26. 제 23 항에 있어서,
    상기 장치 및 상기 드라이브 각각은 상기 특정 순서를 사용하도록 사전 구성되는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  27. 제 23 항에 있어서,
    상기 특정 순서는 동작의 적어도 하나의 모드의 선택을 통해 상기 장치 및 상기 드라이브 중 적어도 하나에서 결정되는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  28. 제 23 항에 있어서,
    상기 특정 순서는 선착순(first-come first serve)인, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  29. 제 23 항에 있어서,
    상기 장치 및 상기 드라이브 중 적어도 하나는 상기 특정 순서를 항상 사용하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  30. 제 23 항에 있어서,
    상기 장치는 상기 드라이브에 관하여 호스트 버스 어댑터로서 기능하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  31. 제 23 항에 있어서,
    상기 장치는 상기 드라이브에 관하여 브리지로서 기능하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  32. 제 23 항에 있어서,
    상기 스토리지 프로토콜은 시리얼 ATA(SATA) 호환가능한, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  33. 제 23 항에 있어서,
    상기 드라이브는 고체-상태 드라이브(SSD)인, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  34. 제 23 항에 있어서,
    상기 드라이브는 상기 특정 순서와 독립적인 순서로 비-기록 커맨드들을 실행하도록 인에이블되고 상기 기록 커맨드들의 실행과 섞이는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  35. 제 23 항에 있어서,
    상기 장치는 적어도 상기 기록 커맨드들을 발생시키는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  36. 제 23 항에 있어서,
    상기 장치는 적어도 상기 기록 커맨드들을 수신하는, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  37. 제 23 항에 있어서,
    상기 제어 논리는 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하기 위해 추가적으로 인에이블되고,
    상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고 상기 특정 시퀀스와 동일한, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
  38. 제 23 항에 있어서,
    상기 큐에서 일시적으로 홀딩되는 상기 기록 커맨드들은 특정 시퀀스로 홀딩되고, 상기 제어 논리는 상기 특정 시퀀스로 상기 드라이브에 상기 기록 커맨드들을 송신하도록 추가적으로 인에이블되고, 상기 특정 순서는 상기 특정 시퀀스에 의해 설정되고 상기 특정 시퀀스와 동일한, 스토리지 디바이스들과 연관된 기록 커맨드들을 오더링하기 위한 장치.
KR1020167011543A 2009-07-02 2010-07-02 스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링 KR101718128B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/497,327 2009-07-02
US12/497,327 US20110004718A1 (en) 2009-07-02 2009-07-02 System, method, and computer program product for ordering a plurality of write commands associated with a storage device
PCT/US2010/040855 WO2011003050A2 (en) 2009-07-02 2010-07-02 Ordering a plurality of write commands associated with a storage device

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020127002875A Division KR101712504B1 (ko) 2009-07-02 2010-07-02 스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링

Publications (2)

Publication Number Publication Date
KR20160054628A true KR20160054628A (ko) 2016-05-16
KR101718128B1 KR101718128B1 (ko) 2017-03-20

Family

ID=43411771

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127002875A KR101712504B1 (ko) 2009-07-02 2010-07-02 스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링
KR1020167011543A KR101718128B1 (ko) 2009-07-02 2010-07-02 스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020127002875A KR101712504B1 (ko) 2009-07-02 2010-07-02 스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링

Country Status (6)

Country Link
US (4) US20110004718A1 (ko)
JP (1) JP5957634B2 (ko)
KR (2) KR101712504B1 (ko)
CN (1) CN102473087B (ko)
TW (1) TWI470436B (ko)
WO (1) WO2011003050A2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
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
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
US9792074B2 (en) 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
JP5920496B2 (ja) 2014-02-18 2016-05-18 住友化学株式会社 積層多孔質フィルムおよび非水電解液二次電池
WO2017131724A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Host devices and non-volatile memory subsystem controllers
CN106339326A (zh) * 2016-08-26 2017-01-18 记忆科技(深圳)有限公司 一种提升固态硬盘顺序读性能的方法
US10466904B2 (en) * 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
KR102549545B1 (ko) 2018-03-22 2023-06-29 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
CN114995882B (zh) * 2022-07-19 2022-11-04 沐曦集成电路(上海)有限公司 一种异构结构系统包处理的方法
TWI822386B (zh) * 2022-10-11 2023-11-11 慧榮科技股份有限公司 橋接控制晶片與相關的訊號處理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930606B2 (en) * 2009-07-02 2015-01-06 Lsi Corporation Ordering a plurality of write commands associated with a storage device

Family Cites Families (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5150470A (en) * 1989-12-20 1992-09-22 International Business Machines Corporation Data processing system with instruction queue having tags indicating outstanding data status
JPH03230216A (ja) * 1990-02-06 1991-10-14 Fujitsu Ltd 記憶デバイスへの処理データの書込処理方式
JPH03250499A (ja) * 1990-02-27 1991-11-08 Nec Corp データ記憶回路
US5347648A (en) * 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
GB2256735B (en) 1991-06-12 1995-06-21 Intel Corp Non-volatile disk cache
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JPH06236284A (ja) 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5675816A (en) 1992-05-26 1997-10-07 Fujitsu Limited Magnetic disk subsystem with failsafe battery charging and power shut down
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JP3122702B2 (ja) * 1993-10-26 2001-01-09 富士通株式会社 ディスク装置のライトバック制御方法
US5642501A (en) * 1994-07-26 1997-06-24 Novell, Inc. Computer method and apparatus for asynchronous ordered operations
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
US5909591A (en) 1996-06-18 1999-06-01 Lucent Technologies Inc. System and method for identifying individual modules in a modular system
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
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 富士通株式会社 半導体記憶装置、半導体記憶装置の制御装置及び制御方法
US6088701A (en) * 1997-11-14 2000-07-11 3Dfx Interactive, Incorporated Command data transport to a graphics processing device from a CPU performing write reordering operations
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
JPH11265262A (ja) * 1998-03-18 1999-09-28 Hitachi Ltd 高速ライトキャッシュディスク装置
DE59811962D1 (de) * 1998-09-04 2004-10-21 Hyperstone Ag Zugriffssteuerung eines speichers beschränkter löschhäufigkeit
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
JP3745552B2 (ja) * 1999-02-26 2006-02-15 富士通株式会社 情報記憶装置
JP2001014111A (ja) * 1999-06-29 2001-01-19 Hitachi Ltd 回転形記憶装置の制御方法
US20080071973A1 (en) 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
US6405295B1 (en) * 1999-09-07 2002-06-11 Oki Electric Industry, Co., Ltd. Data storage apparatus for efficient utilization of limited cycle memory material
JP2001265534A (ja) * 2000-03-17 2001-09-28 Hitachi Ltd アクセス制御方法及びこれを用いたディスク装置
US7398376B2 (en) * 2001-03-23 2008-07-08 International Business Machines Corporation Instructions for ordering execution in pipelined processes
US7239641B1 (en) 2001-04-24 2007-07-03 Brocade Communications Systems, Inc. Quality of service using virtual channel translation
JP2002342038A (ja) * 2001-05-16 2002-11-29 Hitachi Ltd コマンドの実行順序を制御するディスク装置
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
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
JP3823040B2 (ja) 2001-10-12 2006-09-20 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶装置、データ処理装置、書き込み要求の実行順序を最適化する方法、データ処理方法およびハード・ディスク・ドライブ
EP1320035A1 (en) * 2001-12-11 2003-06-18 Thomson Licensing S.A. Storage device cache management
US6745303B2 (en) * 2002-01-03 2004-06-01 Hitachi, Ltd. Data synchronization of multiple remote storage
US20040081179A1 (en) 2002-10-23 2004-04-29 Gregorcyk Arthur J. Method and system for selecting between serial storage buses using data signals of the buses
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7096313B1 (en) * 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US7103732B1 (en) * 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7069399B2 (en) * 2003-01-15 2006-06-27 Via Technologies Inc. Method and related apparatus for reordering access requests used to access main memory of a data processing system
US6925523B2 (en) * 2003-03-03 2005-08-02 Agilent Technologies, Inc. Managing monotonically increasing counter values to minimize impact on non-volatile storage
US7076605B1 (en) 2003-04-25 2006-07-11 Network Appliance, Inc. Method and apparatus for writing data to a storage device
JP3973597B2 (ja) * 2003-05-14 2007-09-12 株式会社ソニー・コンピュータエンタテインメント プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置
US7107415B2 (en) * 2003-06-20 2006-09-12 Micron Technology, Inc. Posted write buffers and methods of posting write requests in memory modules
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US7386579B2 (en) 2003-11-12 2008-06-10 Siemens Product Life Cycle Management Software Inc. System, method, and computer program product for storing test results in a database
JP2005215729A (ja) 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
US20060004935A1 (en) 2004-06-30 2006-01-05 Pak-Lung Seto Multi-protocol bridge
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7526604B1 (en) * 2004-08-09 2009-04-28 Nvidia Corporation Command queueing speculative write prefetch
US7403130B2 (en) 2004-08-20 2008-07-22 Cooper Technologies Company Removing an automatic circuit recloser from service prior to battery failure
JP2006139548A (ja) * 2004-11-12 2006-06-01 Hitachi Global Storage Technologies Netherlands Bv メディア・ドライブ及びそのコマンド実行方法
JP2006172032A (ja) * 2004-12-15 2006-06-29 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びそのバッファ制御方法
US7469312B2 (en) * 2005-02-24 2008-12-23 International Business Machines Corporation Computer system bus bridge
JP5030387B2 (ja) * 2005-03-08 2012-09-19 エイチジーエスティーネザーランドビーブイ データ記憶装置
US7333279B2 (en) * 2005-03-22 2008-02-19 Seagate Technology Llc System and method for drive-side guarantee of quality of service and for extending the lifetime of storage devices
JP4679943B2 (ja) 2005-03-23 2011-05-11 ヒタチグローバルストレージテクノロジーズネザーランドビーブイ データ記憶装置及びその不揮発性メモリ内データ書き換え処理方法
US7711897B1 (en) 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7694026B2 (en) 2006-03-31 2010-04-06 Intel Corporation Methods and arrangements to handle non-queued commands for data storage devices
JP4439491B2 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US7826349B2 (en) 2006-05-30 2010-11-02 Intel Corporation Connection management mechanism
US7558913B2 (en) * 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US7814245B2 (en) 2006-10-05 2010-10-12 Lsi Corporation Apparatus and methods for improved SATA device interaction without a SAS expander
US7761642B2 (en) * 2006-12-22 2010-07-20 Lsi Corporation Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US7661006B2 (en) 2007-01-09 2010-02-09 International Business Machines Corporation Method and apparatus for self-healing symmetric multi-processor system interconnects
US20080201522A1 (en) * 2007-02-16 2008-08-21 Mediatek Inc. Buffer management method and optical disc drive
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US7653775B2 (en) 2007-04-09 2010-01-26 Lsi Logic Corporation Enhancing performance of SATA disk drives in SAS domains
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
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
US8006047B2 (en) * 2007-06-27 2011-08-23 Hitachi Global Storage Technologies Netherlands B.V. Storage device with write barrier sensitive write commands and write barrier insensitive commands
TWI373772B (en) 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
EP2203828A1 (en) * 2007-10-18 2010-07-07 Nxp B.V. Data processing system with a plurality of processors, cache circuits and a shared memory
TWI384488B (zh) * 2007-12-24 2013-02-01 Skymedi Corp Nonvolatile storage device and its data writing method
US8539188B2 (en) * 2008-01-30 2013-09-17 Qualcomm Incorporated Method for enabling multi-processor synchronization
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
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US8856448B2 (en) * 2009-02-19 2014-10-07 Qualcomm Incorporated Methods and apparatus for low intrusion snoop invalidation
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
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
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
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
KR101695364B1 (ko) 2009-03-27 2017-01-11 엘에스아이 코포레이션 저장 시스템 로컬 블록 어드레스 할당해제 관리 및 데이터 강화
US8291131B2 (en) 2009-07-06 2012-10-16 Micron Technology, Inc. Data transfer management
US9792074B2 (en) 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930606B2 (en) * 2009-07-02 2015-01-06 Lsi Corporation Ordering a plurality of write commands associated with a storage device

Also Published As

Publication number Publication date
US20150106546A1 (en) 2015-04-16
US10019200B2 (en) 2018-07-10
US20120102287A1 (en) 2012-04-26
US8930606B2 (en) 2015-01-06
JP2012532397A (ja) 2012-12-13
WO2011003050A3 (en) 2011-04-07
KR101718128B1 (ko) 2017-03-20
TW201115352A (en) 2011-05-01
CN102473087A (zh) 2012-05-23
US20110004718A1 (en) 2011-01-06
WO2011003050A2 (en) 2011-01-06
KR20120103555A (ko) 2012-09-19
US9582195B2 (en) 2017-02-28
KR101712504B1 (ko) 2017-03-06
US20170123734A1 (en) 2017-05-04
TWI470436B (zh) 2015-01-21
JP5957634B2 (ja) 2016-08-10
CN102473087B (zh) 2018-08-21

Similar Documents

Publication Publication Date Title
KR101718128B1 (ko) 스토리지 디바이스와 연관된 복수의 기록 커맨드들의 오더링
US10884195B2 (en) Techniques to support multiple interconnect protocols for a common set of interconnect connectors
US20220197847A1 (en) Techniques to support mulitple interconnect protocols for an interconnect
WO2011011295A2 (en) Reducing a rate of data transfer to at least a portion of memory
US9274940B2 (en) Method and apparatus for allocating memory space with write-combine attribute
KR101466592B1 (ko) 스케일러블 스토리지 디바이스들
US8645594B2 (en) Driver-assisted base address register mapping
CN107436855B (zh) 用于具有可重配置多端口的pcie存储系统的qos认知io管理
KR20150091663A (ko) 멀티 채널 메모리를 포함하는 시스템 및 그 동작 방법
CN107526534B (zh) 管理存储设备的输入输出(i/o)的方法和设备
US11531636B2 (en) Storage system, method, and apparatus for fast IO on PCIE devices
KR101281480B1 (ko) 드라이브로부터 호스트 디바이스로 보내진 정보에 갭 삽입
US20170132166A1 (en) Chip interconnection method, chip and device
CN116204456A (zh) 数据访问方法及计算设备
US20110004710A1 (en) System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
WO2011011562A2 (en) Maintaining a direct connection between an initiator and a drive
US11231881B2 (en) Raid data storage device multi-step command coordination system
TW201710915A (zh) 資料通道分配技術

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right