[go: up one dir, main page]

KR101051815B1 - 저장 컨트롤러 및 저장 시스템 - Google Patents

저장 컨트롤러 및 저장 시스템 Download PDF

Info

Publication number
KR101051815B1
KR101051815B1 KR1020080074096A KR20080074096A KR101051815B1 KR 101051815 B1 KR101051815 B1 KR 101051815B1 KR 1020080074096 A KR1020080074096 A KR 1020080074096A KR 20080074096 A KR20080074096 A KR 20080074096A KR 101051815 B1 KR101051815 B1 KR 101051815B1
Authority
KR
South Korea
Prior art keywords
data
data sequence
buffer
memory
subset
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020080074096A
Other languages
English (en)
Other versions
KR20090013085A (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 KR20090013085A publication Critical patent/KR20090013085A/ko
Application granted granted Critical
Publication of KR101051815B1 publication Critical patent/KR101051815B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

서로 다른 부 저장 장치들로부터 검색된 데이터 요소들을 저장하기 위해 동일한 버퍼를 이용하는 저장 컨트롤러. 일 실시예에서, 이 컨트롤러는 목표 메모리에 저장하기 위해 데이터가 이용 가능한 때에 앞서 위치 설명자들을 검색한다. 각 위치 설명자는 부 저장 장치로부터 수신된 데이터가 저장될 메모리 위치들을 지시한다. 각 요구를 처리하는 때에 앞서 위치 설명자들의 서브세트만이 검색되어 저장될 수 있다. 제한된 수의 위치 설명자들의 그러한 검색 및 저장으로 인해, 저장 컨트롤러에 의해 이용되는 버퍼의 사이즈가 감소될 수 있다. 위치 설명자들을 앞서 검색함으로 인해, 저장 컨트롤러 내의 데이터 요소들의 불필요한 버퍼링이 회피되어, 데이터를 주 메모리에 기입하는 데 있어서 대기 시간이 감소되고, 따라서 성능이 향상된다.
저장 컨트롤러, 버퍼, 위치 설명자

Description

저장 컨트롤러 및 저장 시스템{STORAGE CONTROLLER AND STORAGE SYSTEM}
본 발명은 일반적으로 저장 기술에 관한 것으로, 더 구체적으로는 검색된 데이터를 메모리에 바로 기입하는 저장 컨트롤러에 의한 버퍼 공간의 최적의 이용에 관한 것이다.
저장 컨트롤러는 비휘발성 저장 매체에 대한 판독 및 기입 요구들을 제어하는 컴포넌트(또는 장치(unit))이다. 그 요구들은 종종 중앙 프로세서(예컨대, 중앙 처리 장치, CPU)로부터 수신되고 저장 컨트롤러는 각 요구를 처리하기 위해 비휘발성 저장 매체와 인터페이스한다. 판독 요구의 경우, 저장 컨트롤러는 비휘발성 저장 매체로부터 데이터를 검색한다.
저장 컨트롤러는 종종 검색된 데이터를 메모리에 기입하도록 요구받는다. 예를 들면, CPU는 파일에 포함된 데이터가 검색되고 주 메모리(main memory)(후술되는 컨트롤러 메모리(controller memory)와 구별하기 위함)로서 동작하는 RAM(random access memory)에 저장되는 것을 지시할 수 있다.
저장 컨트롤러는 또한 메모리에 바로 기입하도록 요구받을 수 있다. '바로(directly)'라 함은 일반적으로 저장 컨트롤러가, 각 저장 동작을 위해 CPU를 인터럽트하지 않고, 데이터를 RAM에 저장하는 것을 의미한다. 예시로서, DMA(direct memory access)에서는, 저장 컨트롤러가 전체 데이터의 저장을 완료한 후에만 CPU를 인터럽트한다.
통상적으로 다양한 판독/기입 요구들을 지원하기 위해 저장 컨트롤러 내에(또는 그와 관련하여) 버퍼 공간이 제공된다. 버퍼 공간은 일시적인 저장을 제공하고, 속도 불일치 및 데이터를 목표 주 메모리에 저장하기 위한 자원(예컨대, 버스)의 이용 불가(unavailability)의 경우에도 데이터의 순차적인 전송(orderly transfer)을 가능하게 한다. 버퍼 공간은 통상적으로 RAM으로서 구현되고, 컨트롤러 메모리라고 불린다.
일반적으로, 보다 작은 버퍼/메모리 사이즈를 가지고도, 다양한 동작들이 효율적으로 지원될 수 있도록(보다 나은 처리량(throughput), 감소된 대기 시간(latency) 등, 중의 하나 이상) 버퍼 공간이 최적으로 이용되는 것이 바람직하다.
본 발명은 보다 작은 버퍼/메모리 사이즈를 가지고도, 다양한 동작들이 효율적으로 지원될 수 있도록 버퍼 공간을 최적으로 이용하는 것을 목적으로 한다.
상기 목적을 달성하기 위하여, 본 발명의 일 양태에 따르면, 복수의 부 저장 장치(secondary storage units)에의 액세스 요구들을 제어하는 저장 컨트롤러(storage controller)가 제공되고, 이 저장 컨트롤러는, 버퍼; 및 제1 부 저장 장치로부터의 제1 데이터 시퀀스를 지정하는 제1 판독 요구 및 제2 부 저장 장치로부터의 제2 데이터 시퀀스를 지정하는 제2 판독 요구를 수신하는 제어 장치(control unit)를 포함하고, 상기 제어 장치는 상기 제1 판독 요구 및 상기 제2 판독 요구에 응답하여 각각 상기 제1 부 저장 장치로부터의 상기 제1 데이터 시퀀스 및 상기 제2 부 저장 장치로부터의 상기 제2 데이터 시퀀스를 검색하고, 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스의 양쪽 모두를 상기 버퍼에 저장한다.
본 발명에 따르면, 보다 작은 버퍼/메모리 사이즈를 가지고도, 다양한 동작들이 효율적으로 지원될 수 있도록 버퍼 공간을 최적으로 이용할 수 있다.
첨부 도면들 참조하여 예시적인 실시예들을 설명한다.
도면들에서, 유사한 참조 번호들은 일반적으로 동일하고, 기능적으로 유사하고, 및/또는 구조적으로 유사한 요소들을 나타낸다. 한 요소가 처음 나타나는 도면은 대응하는 참조 번호 중의 가장 왼쪽 숫자(들)로 나타내어진다.
1. 개관
본 발명의 일 양태에 따라 제공되는 저장 컨트롤러는 복수의 부 저장 장치들 로부터 검색된 데이터를 저장하기 위해 단 하나의 버퍼를 이용한다. 일 실시예에서, 저장 컨트롤러 내에 제공된 제어 장치는 부 저장 장치들 중 임의의 것으로부터 검색된 데이터 요소들을 버퍼 내의 (하나 또는 그 이상의) 메모리 위치들의 세트의 각각에 저장하는 융통성을 가지고 설계된다. 버퍼 공간은 최적으로 이용될 수 있고 그 결과 버퍼 사이즈 요건이 감소될 수 있다.
본 발명의 일 양태는 대응하는 정보가 요구될 수 있기 전에 (검색된 데이터 요소들이 목표 메모리 내에서 결국 저장될 목표 메모리의 위치들을 지시하는) 위치 설명자들(location descriptors)을 프리페치(pre-fetching)함으로써 더욱 최적의 이용을 제공한다. 일 실시예에서, 저장 컨트롤러는 판독 요구에서 요구된 데이터 요소들을 제공하도록 비휘발성 메모리에 커맨드들을 발행하고, 위치 설명자들의 서브세트만을 검색한다. 서브세트 내의 요소 수는 대응하는 데이터 요소들이 저장을 위해 이용 가능한 후에 곧 위치 설명자들의 이용 가능을 보증하도록 선택된다. 검색된 위치 설명자들도 버퍼에 저장될 수 있다.
위치 설명자들의 서브세트만 검색 및 저장하기 때문에, 버퍼 사이즈 요건이 감소될 수 있다. 그러한 요건은 기술(예컨대, NCQ)이 부 저장 장치들이 선 요구들(earlier requests)에 관련된 데이터 요소들을 송신하기 전에 후 요구들(later requests)에 관련된 데이터 요소들을 송신하는 것을 허용하고, 저장 컨트롤러가 모든 계류중 요구들(pending requests)에 대한 위치 설명자들을 검색하는 것이 바람직한 경우에 중요할 수 있다.
위치 설명자들을 미리 검색하기 때문에, 데이터가 저장 컨트롤러에서 버퍼링 되는 기간이 감소될 수 있고, 그에 의해 저장 설명자들의 즉시 이용 불가(immediate unavailability)에 의해 방해받지 않고 보다 낮은 대기 시간으로 데이터 전송을 완료하는 것에 더하여 버퍼 사이즈 요건을 더욱 감소시킬 수 있다. 위치 설명자들의 그러한 적시의 이용 가능(timely availability)은 서로 다른 부 저장 장치들로부터 검색된 데이터를 저장하기 위해 단 하나의 버퍼가 이용되는 경우에 중요하다. 왜냐하면 그 공유 버퍼는 보다 작은 사이즈를 갖도록 설계될 수 있고 다른 요구들에 관련된 데이터를 저장하기 위해 위치들을 자유롭게 할 필요가 있기 때문이다.
아래에서는 본 발명의 몇몇 양태들에 대해 예시를 위한 예들을 참조하여 설명한다. 본 발명에 대한 충분한 이해를 제공하기 위해 다수의 특정 상세들, 관계들, 및 방법들이 제시된다는 것을 이해해야 할 것이다. 그러나, 관련 기술 분야의 숙련자라면 본 발명이 그 특정 상세들 중 하나 또는 그 이상의 상세가 없이, 또는 다른 방법 등으로 실시될 수 있다는 것을 쉽사리 인지할 것이다. 그 밖의 경우들에서, 잘 알려진 구조들 또는 동작들에 대해서는 본 발명의 특징들을 모호하게 하는 것을 피하기 위해 상세히 제시하지 않는다. 더욱이, 설명된 특징들/양태들은 다양한 조합으로 실시될 수 있다. 단, 여기서는 간결성을 위하여 그 조합들 중 일부만이 설명되어 있다.
2. 예시적 시스템
도 1은 본 발명의 몇몇 특징들이 구현될 수 있는 예시적인 시스템을 예시하는 도이다. 이 도는 중앙 처리 장치(CPU 110), 저장 컨트롤러(120), 주 메모 리(130), 및 부 저장 장치들(140A-140N)을 포함하는 것으로 도시되어 있다. 전형적인 환경은, 설명된 특징들의 이해에 관련되지 않아 도시되지 않은, 다양한 다른 컴포넌트들(타입 및 개수 모두에서)을 포함할 수도 있다는 것을 이해해야 할 것이다. 유사하게, 일부 다른 시스템들은 보다 적은 수의 컴포넌트를 포함할 수도 있다. 도 1의 각 컴포넌트에 대해 아래에서 더 설명한다.
주 메모리(130)는 랜덤 액세스 메모리(RAM, 예컨대, 다이내믹 RAM - DRAM)로서 구현될 수 있고 다양한 명령들 및 데이터를 저장한다. CPU(110)에 의해 실행되는 (예컨대, 사용자 애플리케이션을 나타내는) 명령들 중 일부는 본 발명의 몇몇 양태들에 따라 부 저장 장치들로부터 데이터가 검색되게 한다. 운영 체제를 나타내는 일부 다른 명령들은 검색된 데이터를 저장하기 위해 주 메모리(130) 내의 특정 위치들을 할당할 수 있다. 일부 다른 명령들의 실행은 아래에서 설명되는 다른 특징들이 제공되게 한다. 유사하게, 주 메모리(130)는, 아래 섹션들에서 설명되는 바와 같이, 위치 설명자들(아래 섹션들에서 설명됨)을 저장할 뿐만 아니라, 검색된 데이터 요소들을 저장할 수 있다.
부 저장 장치들(140A-140N) 각각은 비휘발성 저장 매체를 포함하고, 예를 들면, 하드 디스크, CD-ROM 등으로서 구현될 수 있다. 부 저장 장치들(140A-140N)은 일반적으로 데이터를 수반하는 다양한 동작들(예컨대 판독, 기입, 저장 컨트롤러(120)로의 데이터 전송 등)을 코디네이트(co-ordinate)하기 위해 그들 내부에 컨트롤러 장치들을 포함하고, 관련 기술 분야에서 잘 알려진 SATA(Serial Advanced Technology Attachment) 등의 대응하는 프로토콜/표준과 일관되게 구현될 수 있다.
시리얼 기술의 경우, 바이트들의 시퀀스에 대한 요구가 경로(124A) 상에서 송신될 수 있고 그 요구에 대하여 순차적으로 요구된 바이트들(데이터 요소들)이 수신될 수 있다. 일 실시예에서는, 각 부 저장 장치에 대하여 하나의 요구만이 계류중일 수 있다. 그러나, (예컨대, NCQ(native command queuing)를 이용하여) 각 부 저장 장치에 대하여 복수의 요구들이 계류중이도록 하는 지원이 존재하는 경우, 복수의 요구들에 관련된 데이터가 (수신 동안에) 재순서화(re-order)될 수 있지만, 각 요구에 관련된 데이터는 그 데이터가 부 저장 장치에 (논리적으로) 저장되어 있는 것과 동일한 순서로 계속해서 수신될 수 있다.
CPU(110)는 (예컨대, 주 메모리(130)로부터 검색된) 소프트웨어 명령들을 실행하는 하나 또는 그 이상의 프로세서 장치들을 나타낼 수 있다. 명령들 중 일부는 부 저장 장치들로부터 데이터를 검색하는 요구들을 발행할 수 있다. 일 실시예에서, CPU(110)는 단지 데이터 요소들의 시퀀스를 전송하는 요구를 발행하고, 저장 컨트롤러(120)는 요구된 데이터의 전송의 완료를 신호하기 위해 인터럽트를 생성한다. 몇몇 요구들은 그 요구들 중 다수가 저장 컨트롤러(120)에 의해 처리되고 있도록 단기간 내에 발행될 수 있다는 것을 이해해야 할 것이다. 처리되고 있는 요구들은 계류중 요구들(pending requests)이라고 불릴 수 있다.
저장 컨트롤러(120)는 부 저장 장치들(140A-140N)로부터 데이터 요소들의 시퀀스를 판독하는 요구들을 CPU(110)로부터 수신하고(경로(112)를 통하여), 그 요구된 데이터 요소들을 제공하도록 대응 커맨드들을 부 저장 장치들(140A-140N)에 발행한다. 일단 부 저장 장치들로부터 데이터가 수신되면, 저장 컨트롤러(120)는 그 데이터를 CPU로부터 수신된 요구들에 의해 지정된 각각의 목표 메모리들로 전송한다.
부 저장 장치로부터의 데이터의 수신과 그 후 메모리(130)로의 전송 사이에, 저장 컨트롤러(120)는 데이터를 일시적으로 저장할 필요가 있다.
하나의 선행 실시예에서, 저장 컨트롤러(120)는 물리적 인터페이스들(링크들)(124A-124N)의 각각에서 수신된 데이터에 대하여 각각 하나의 버퍼를 포함한다. 그러한 접근법은 (모든 버퍼들에서 함께) 보다 높은 총계의 온칩 메모리(higher aggregate on-chip memory)를 초래하고, 이는 증가된 비용 및 다이 면적 요건 등의 이유 때문에 바람직하지 않을 수 있다.
본 발명의 일 양태에 따라 제공되는 저장 컨트롤러는 아래에서 더 상세히 설명되는 바와 같이 그러한 불리점들 중 일부를 극복한다.
3. 저장 컨트롤러
도 2는 본 발명의 일 실시예에서 저장 컨트롤러의 상세를 예시하는 블록도이다. 저장 컨트롤러(120)는 버퍼(210), 제어 유닛(220), FIFO들(240A-240N) 및 버스 마스터(250)를 포함하는 것으로 도시되어 있다. 저장 컨트롤러(120)는 다음의 설명에 관련되지 않아 도에서 도시되지 않은 다양한 다른 컴포넌트들/블록들을 포함할 수도 있다. 부 저장 장치(140A)로부터 데이터 요소들이 검색되어야 하고, 그 검색된 데이터 요소들이 주 메모리(130)에 저장될 것임을 지시하는 판독 요구들이 수신된다고 가정하여 설명한다. 그러나, 본 발명의 다양한 양태들의 범위 및 정신에서 벗어나지 않고 서로 다른 저장 장치들 및 목표 메모리들이 지정될 수 있다. 도 2의 각 컴포넌트에 대하여 아래에서 상세히 설명한다.
FIFO들(240A-240N) 각각은 대응하는 부 저장 장치(140A-140N)로부터 경로들(124A-124N)을 통하여 수신된 데이터에 대하여, 제어 장치(220)가 그 데이터를 (대응하는 FIFO로부터 경로들(224A-224N)을 통하여) 버퍼(210)로 이동시키기 전에, 일시적인 저장을 제공한다. 게다가, 각 FIFO는 부 저장 장치로부터 수신된 임의의 상태/제어 정보를 저장하고 그것을 제어 장치(220)에 제공할 수 있다. 관련 기술 분야에서 잘 알려진, SATA 프로토콜의 상황에서 구현된 일 실시예에서, 각 FIFO는 프로토콜 사양을 만족시키기 위해 흐름 제어(flow control) 목적으로 이용된다. 예를 들면 SATA는 저장 컨트롤러가 경로(124A) 상에서 그것에 의해 수신 흐름 제어가 개시된 후에 적어도 21개 Dword를 수신할 수 있을 것을 요구한다. 이는 공유 버퍼(210)를 취득하는 데 있어서 있음직한 중재 대기 시간(arbitration latency)으로 인해 임의의 포트 상의 데이터가 결코 드롭(drop)되지 않는 것을 보증한다.
제어 장치(220)는 경로들(112 및 124A/124N) 간의 데이터 전송을 코디네이트하기 위해 다양한 동작들을 수행한다. 특히, 제어 장치(220)는 경로들(124A-124N) 중의 임의의 경로 상에 접속된 저장 장치 상에 저장된 바이트들의 시퀀스를 검색하는 요구들을 경로(112) 상에서 수신할 수 있다. 이 바이트들의 시퀀스는 임의의 미리 지정된 규약(convention)에 따라(예컨대, 관련 기술 분야에서 잘 알려진 AHCI(Advanced Host Controller Interface) 표준에 따라) 지정될 수 있고 일반적으로 CPU(110)에 의해 실행되는 디바이스 드라이버 소프트웨어에 의해 제공된다. 상기 요구들은 또한, 예를 들면, 아래 세션들에서 설명되는 바와 같이, 데이터가 저 장될 목표 메모리 및 그 목표 메모리 내의 위치(들)를 지정한다.
제어 장치(220)는 요구된 데이터를 대응하는 FIFO 내로 검색하도록 대응 커맨드들(예컨대, SATA 표준에 따른 것)을 경로들(124A-124N) 상에서 저장 장치로 발행한다. 그 후 제어 장치(220)는 각 FIFO 내의 데이터를 버퍼(210)로 전송한다. 제어 장치(220)는 아래 섹션들에서 예로써 설명되는 바와 같이 목표 메모리/위치들에 데이터가 저장되는 것을 용이하게 하기 위해 그 데이터와 함께 제어 정보를 저장할 수 있다.
버퍼(210)는 경로들(124A-124N)로부터 수신된 데이터가 주 메모리(120)에 저장하기 전에 일시적으로 저장되는 랜덤하게 액세스 가능한 메모리를 나타낸다. 일 실시예에서는, 모든 경로들(124A-124N)로부터 수신된 데이터를 저장하기 위해 SRAM으로서 구현된 단 하나의 메모리 장치(메모리 셀들의 행렬 및 액세스 회로를 갖는 것)가 이용된다. SRAM은 단일 집적 회로로서 저장 컨트롤러의 다른 컴포넌트들과 함께 구현되고 따라서 버퍼(210)는 그러한 시나리오에서 "온칩(on-chip)"이라고 한다. 그러나, 대안 실시예들은 단 하나의 버퍼를 지원하는 복수의 메모리 장치를 이용할 수도 있다.
본 발명의 일 양태에 따르면, 메모리 공간은, 그 메모리 위치들 중 적어도 일부가 경로들(124A-124N) 중 임의의 경로 상에서 검색된 데이터를 저장하는 데 이용될 수 있도록, 공유된다. 버퍼 공간은 그러한 공유로 인해 효율적으로 이용될 수 있다. 버퍼 공간의 효율적인 이용으로 인해, 성능 병목 현상 및 데이터 드롭(오버플로우)을 피하면서 그러한 공유가 가능하게 될 수 있다.
버스 마스터(250)는 버퍼(210) 내의 데이터를 주 메모리(130)로 전송한다. 일 실시예에서, 버스 마스터(250)는 버스(112)에의 액세스에 대하여 중재하고 그 후 DMA 기법들을 이용하여 버퍼(210)의 데이터를 메모리(130)에 저장한다. 마지막 데이터 요소가 저장되면, 버스 마스터(250)는 먼저 CPU(110)에 인터럽트를 송신하고(데이터 전송이 완료되었음을 지시함) 버스(112)의 제어를 포기한다.
일 실시예에서, 부 저장 장치들로부터 검색된 데이터는 CPU(110)로부터 수신된 커맨드와 관련된 위치 설명자들에 의해 지정된 목표 메모리/위치들에 저장되고 따라서 위치 설명자들에 관련하여 설명을 계속한다.
4. 위치 설명자
도 3a 및 3b는 각각 주 메모리의 일부 및 제어 장치(220) 내의 레지스터를 나타내고, 일 실시예에서 CPU(210)에 의해 제어 장치(220)로 위치 설명자들에 관한 정보가 제공되는 방법을 예시하기 위해 도 1 및 2와 함께 이용된다. 전술한 바와 같이, 각 위치 설명자는, 데이터 요소들의 대응 블록이 기입될, 목표 메모리 및 그 안의 위치들을 지시한다.
일 실시예에서, CPU(110)는 제어 장치(220) 내의 레지스터(310)에 커맨드를 기입한다. AHCI 표준에서, 위치 설명자들은 PRD(physical region descriptor)라고 불리고 따라서 메모리(130)는 PRD 테이블(350)과 함께 도시된다. PRD 테이블 내의 각 항목(entry)은 판독될 파일 내의 데이터의 대응 부분(파일 콘텐츠를 형성하는 데이터 요소들의 시퀀스)이 주 메모리(130) 내의 어디에(즉, 개별 메모리 위치 주소) 저장될 것인지를 지정하는 위치 정보를 포함한다. 만일에 대비하여, 목표 메 모리는 2 이상의 메모리 장치일 수 있고, 위치 설명자들도 (지정된 규약에 따라) 메모리 장치들 중 특정한 하나의 메모리 장치를 지정할 수 있다.
PRD들(350A-350N)은 PRD 테이블(350) 내의 연속 위치들에 위치할 수 있다. 대안적으로, PRD 테이블 자체가 링크된 목록(linked list)으로서 구현될 수 있고, 이 경우 각 PRD(마지막 것을 제외)는 링크된 목록 내의 다음 PRD의 주소를 포함한다.
일 실시예에서, PRD들(350A-350N) 각각은 메모리 장치(130) 내의 메모리 블록의 시작 주소는 물론, 블록의 사이즈(메모리 위치들의 수)를 포함하도록 설계되고, 여기서 블록은 판독될 바이트들의 시퀀스의 대응 서브세트가 저장될 메모리 내의 위치들이다. 그러한 블록들 각각은 디바이스 드라이버가 저장 컨트롤러(120)에 판독 요구를 송신하기 전에 도 1의 시스템에서 실행하는 운영 체제에 의해 할당될 수 있다.
CPU(110)는, 또한, 제어 장치(220)에 포함된 플래그(도시되지 않음)를 설정하여 요구가 행하여졌음을 지시할 수 있다. 그에 응답하여, 제어 장치(220)는 필드(310)의 콘텐츠를 판독하고, 주 메모리(130) 내의 대응 커맨드 헤더(필드(320))를 검색한다. NCQ 기술을 지원하는 일 실시예에서는, 32개의 가능한 계류중인 커맨드들의 각각에 대응하여 32개까지의 커맨드 헤더들이 존재할 수 있다(도시되지 않음). 커맨드 헤더(320)는 커맨드 테이블(330)의 주소를 포함한다. 커맨드 테이블(330)은 PRD 테이블(본 예에서는 RPD 테이블(350))의 주소를 포함한다.
따라서, 모든 PRD들은 함께 부 저장 장치들로부터 검색하고자 하는 데이터 요소들을 저장할 목표 메모리 및 메모리 위치들을 지정한다. 위치 설명자들의 적시의 이용 가능은 저장 컨트롤러 내에서 데이터 요소들이 버퍼링되는 기간을 최소화하고, 그에 의해 버퍼 공간 요건을 감소시키기 위해 중요할 수 있다는 것을 이해해야 할 것이다.
일 실시예에서, 제어 장치는 모든 계류중 판독 요구들의 모든 위치 설명자들을 검색할 수 있다. 그러나 그러한 접근법은 상당한 양의 버퍼 공간을 요구할 수 있다. 버퍼 공간 요건은 전술한 NCQ와 같은 기술들의 경우에 악화된다.
본 발명의 일 양태는, 아래에서 더 상세히 설명되는 바와 같이, 필요한 버퍼 사이즈를 감소시킴과 동시에, 위치 설명자들의 적시의 이용 가능을 보증한다.
5. 위치 설명자의 검색
도 4는 본 발명의 일 양태에 따라 위치 설명자들이 검색되어 이용되는 방법을 예시하는 순서도이다. 이 순서도는 도 1에 관하여, 그리고 단지 예시를 위해, 저장 컨트롤러(120)에 관련하여 설명된다. 그러나, 다른 환경들(예컨대, 도 3에 관하여 위에서 설명된 공유 버퍼를 구비하거나 구비하지 않는) 및 다른 컴포넌트들에서 다양한 특징들이 구현될 수 있다.
더욱이, 단계들은 단지 예시를 위해 특정 시퀀스로 기술된다. 본 발명의 몇몇 양태들의 범위 및 정신에서 벗어나지 않고 다른 컴포넌트들, 및 상이한 시퀀스의 단계들을 이용한, 다른 환경들에서의 대안 실시예들이 구현될 수도 있고, 이에 대해서는 관련 기술 분야의 숙련자라면 여기서 제공되는 개시 내용을 읽고 명백히 알 수 있을 것이다. 순서도는 단계 401에서 시작하고, 거기서 컨트롤은 단계 410 으로 넘어간다.
단계 410에서, 저장 컨트롤러(120)는 저장 장치로부터 주 메모리로 원하는 데이터 요소들의 시퀀스를 전송하는 요구를 수신한다. 여기서, 요구는 위치 설명자들이 어디에 위치하는지를 지정한다. 전술한 바와 같이, 위치 설명자들은 데이터가 어디에(특정 메모리 장치(들) 및 그 안의 위치들) 저장될 것인지를 식별한다. 예로써 예시하기 위해, 저장 컨트롤러(120)는 부 저장 장치(140A)에 저장된 파일을 주 메모리(130)로 전송하는 요구를 수신할 수 있다.
(특정 부 저장 장치, 그 위의 데이터 요소들의 시퀀스의 위치/식별자들을 식별하는 것을 포함하여) 요구의 포맷을 위해서는 물론 위치 설명자들의 위치를 지정하기 위하여 임의의 미리 지정된 규약이 이용될 수 있다. 그러한 규약들에 대한 몇몇 접근법들에 대해서는 관련 기술 분야의 숙련자라면 여기서 제공된 개시 내용을 읽고 명백히 알 수 있을 것이다. 그러나, 일 실시예에서, 검색하고자 하는 데이터 요소들은 전술한 AHCI 표준에 따라 지정되고 위치 설명자들은 도 3a 및 3b에 관하여 위에서 설명한 바와 같이 지정된다. 그 후 컨트롤은 단계 420으로 넘어간다.
단계 420에서, 저장 컨트롤러(120)는 데이터 요소들의 시퀀스를 제공하도록(즉, 반환(send back)하도록) 저장 장치에 커맨드들을 발행한다. 전술한 예에서, 저장 컨트롤러(120)는, 예를 들면, 관련 기술 분야에서 잘 알려진 SATA 프로토콜에 따라, 특정 위치들에 있는 데이터를 제공하도록 부 저장 장치(140A)에 커맨드들을 발행한다. 그 커맨드들은 대응하는 프로토콜들/표준들과 일관되게 발행될 수 있 다. 그 후 컨트롤은 단계 440으로 넘어간다.
단계 440에서, 저장 컨트롤러(120)는 데이터 요소들의 수신을 완료하기 전에 설명자들의 서브세트를 검색한다. 상기 데이터 요소들은 상기 서브세트 내의 설명자들 중 제1 설명자를 이용하여 저장될 것이다. 전술한 시리얼 기술들의 경우, 위치 설명자에 대응하는 데이터 요소들을 검색하는 데 더 많은 시간이 걸린다고 가정하여 단 하나의 위치 설명자만 필요할 수 있다. 더 많은 설명자들이 검색될 수 있지만, (요구에 대한) 모든 위치 설명자들을 검색하는 것은 전술한 이유들 때문에 바람직하지 않을 수 있다.
설명자들의 서브세트를 검색하는 액션들은 단계 420의 커맨드들의 발행에 선행할 수 있다. 그러나, 버퍼 요건을 감소시키기 위해, 위치 설명자들을 검색하는 액션들은 단계 420의 커맨드들을 발행한 후에, 그러나 상기 서브세트 내의 제1 설명자에 대응하는 데이터의 수신을 완료하기 전에 시작될 수 있다. 특정 액션들은 설명자들의 어느 장치로부터 검색될 것인지에 따라 달라진다.
예를 들면, 특정 위치 설명자가 바이트 번호들 1024 내지 2047이 주 메모리(130)의 메모리 위치들 4048 내지 5071에 저장될 것임을 지시한다고 가정하면, 저장 컨트롤러(120)는 적어도 바이트 5071(마지막 바이트)이 부 저장 장치로부터 수신되기 전에 제어 장치(220)에게 위치 설명자가 이용 가능하다는 것을 보증할 수 있다. 추가 위치 설명자들은 주 메모리(130)로부터 위치 설명자들을 검색할 목적으로 버스(112)가 액세스될 필요가 있는 횟수를 감소시킬 수 있다. 그 후 컨트롤은 단계 445로 넘어간다.
단계 445에서, 저장 컨트롤러(120)는 검색된 설명자들을 버퍼(예컨대, 210)에 저장한다. 단계 440에서 위치 설명자들의 서브세트만 검색되므로, 버퍼 사이즈 요건이 감소될 수 있다. 그 후 컨트롤은 단계 450으로 넘어간다.
단계 450에서, 저장 컨트롤러(120)는 수신된 데이터를 설명자들 중 제1 설명자에 의해 지시된 메모리 위치들에 저장한다. 그 후 컨트롤은 단계 460으로 넘어간다.
단계 460에서, 저장 컨트롤러(120)는 상기 서브세트의 뒤를 잇는 다음 설명자를 페치하고 그 다음 설명자를 서브세트에 추가한다. 예시를 위해, 단계 440에서 검색된 설명자들의 서브세트가 2개의 설명자를 포함한다고 가정하면, 저장 컨트롤러(120)는 제1 설명자에 대응하는 데이터의 수신(및 그 후 단계 450에서 주 메모리 내의 대응 위치에 저장)과 동시에 제3 설명자를 검색하고, 따라서 제2 및 제3 설명자들에 대응하는 데이터를 저장하기 위한 위치 정보를 갖는다. 그 후 컨트롤은 단계 480으로 넘어간다.
단계 480에서, 만일 저장 컨트롤러(120)가 파일로부터 더 많은 데이터가 수신되고 있다고 판정하면, 컨트롤은 단계 450으로 넘어가고, 그렇지 않다면 컨트롤은 단계 499로 넘어가고, 거기서 순서도가 종료한다.
위치 설명자들의 서브세트만 검색하기 때문에, 버퍼 사이즈 요건이 감소될 수 있다. 또한, 필요한 위치 설명자가 즉시 이용 가능하기 때문에, (부 저장 장치들로부터 수신된) 데이터가 버퍼링될 필요가 있는 시간의 양이 감소될 수 있고, 그에 의해 버퍼 사이즈 요건을 감소시킬 수 있다.
버퍼(210)는 위에서 설명한 원하는 특징들을 지원하면서 다양한 접근법들을 이용하여 구현될 수 있다. 일 실시예에서의 버퍼(220)의 상세에 관하여 설명한다.
6. 버퍼
도 5a는 일 실시예에서 버퍼(210)의 상세를 예시하는 블록도이다. 버퍼(210)는 데이터 버퍼(510) 및 제어 버퍼(520)를 포함하는 것으로 도시되어 있고, 이들에 대해서는 아래에서 도 5b를 참조하여 더 상세히 설명한다. 도 5b는 일 실시예에서 제어 버퍼(520)에 저장된 데이터의 본질을 예시한다.
제어 장치(220)는 각 위치 설명자에 대응하는 데이터 블록들(CPU(110)로부터의 단일 판독 요구에 의해 검색하고자 하는 데이터 요소들의 시퀀스의 서브세트)을 데이터 버퍼(510)에 저장하고, 그 블록에 대한 상태 정보를 제어 버퍼(520)에 저장한다. 도 5b는 본 발명의 일 실시예에서 데이터의 대응 블록의 상태 정보를 포함하는 다양한 필드들을 예시한다.
전형적인 시나리오에서는, 몇몇 파일 요구들이 미해결(outstanding)(아직 완료되지 않았거나 계류중)일 수 있고, 제어 장치(220)는 부 저장 장치들(140A-140N) 각각으로부터 수신된 파일 부분들을 데이터 버퍼(510)에 저장할 수 있다. 서로 다른 링크들에 대응하는 데이터(서로 다른 부 저장 장치들로부터 수신된 데이터)를 저장하기 위해 단 하나의 버퍼(210)가 이용되고, 주 메모리 내의 목표 주소들이 상이하기 때문에, 아래에서 예로써 설명되는 바와 같이, 각 데이터 블록은 대응하는 상태 정보와 함께 저장될 필요가 있다.
상태 항목(590)은 필드들(550, 560, 570 및 580)을 포함하는 것으로 도시되 어 있다. 이 예에서는, 상태 항목(590)이 부 저장 장치(140A)로부터 수신되어, 주 메모리 위치(360)에 저장될 데이터, 즉, 도 3a에 도시된, PRD(350A)에 대응하는 데이터에 대응한다고 가정한다.
필드(550)는 데이터가 수신된 포트(부 저장 장치에 대응하는 링크)를 지정한다. 이 예에서, 그 항목은 부 저장 장치(140A)로부터 데이터가 수신되었음을 지정하는 수에 대응할 것이다.
필드(560)는 상태 항목(590)에 대응하는 (데이터 버퍼(510) 내의) 데이터의 블록의 길이/사이즈를 지정한다.
필드들(570 및 580)은 함께 데이터 버퍼(510) 내의 데이터의 블록이 기입될 주 메모리(130) 내의 시작 주소를 지정한다. 주 메모리(130) 내의 그 주소는 PRD의 콘텐츠에 의해 지정되고, PRD의 주소는 필드(570)(상위 PRD 주소(예컨대, 고차(higher order) 32 비트)), 및 필드(580)(하위 PRD 주소(예컨대, 저차(lower order) 32 비트))에 의해 지정된다. 2개의 필드들(570 및 580)에서 제시된 상위 및 하위 PRD 주소들은 주 메모리 내의 주소 공간이 64비트 주소로 지정되고 그 필드들 각각은 일 실시예에서 32 비트만을 포함하는 것을 반영한다. 이 예시적인 예에서 필드들(570 및 580)의 값들은 PRD(350A)로부터 검색된다.
따라서, 위치 설명자들의 관련 정보가 버퍼(210) 내에 데이터의 각 블록(각 위치 설명자에 의해 지정된 데이터에 대응하는 데이터의 시퀀스 내의 경계들)과 관련하여 저장될 수 있고 버스 마스터(250)는 그 정보를 이용하여 각 데이터 요소를 저장할 목표 위치들/메모리를 판정할 수 있다.
일 실시예에서 데이터 요소들의 시퀀스의 판독 동작에 수반되는 동작들의 시퀀스를 예시하는 예시적인 시퀀스도의 예시와 함께 설명을 계속한다.
7. 시퀀스도
도 6은 본 발명의 일 실시예에서 파일 판독 동작 동안에 수반되는 CPU(110), 저장 컨트롤러(120) 및 부 저장 장치(140A) 각각에서의 동작들의 시퀀스를 예시하기 위해 이용되는 예시적인 시퀀스도이다.
이벤트(610)는 부 저장 장치(140A)로부터 주 메모리(130)로 (파일에 대응하는) 데이터 요소들의 시퀀스를 전송하도록 CPU(110)에 의해 저장 컨트롤러(120)에 발행되는 요구를 나타낸다. 이벤트(615)는 저장 컨트롤러(120)가 CPU(110)에 의해 발행된 요구(610)를 판독하는 동작을 나타낸다.
이벤트(620)는 파일 내의 데이터를 제공하도록 저장 컨트롤러(120)에 의해 부 저장 장치(140A)에 발행되는 커맨드를 나타낸다. 동일한 이벤트에서, 저장 컨트롤러(120)는, 위에서 설명된 바와 같이, (주 메모리(130)에 발행되는 적절한 액세스 커맨드들에 의해) 위치 설명자들의 서브세트의 검색을 개시할 수 있다.
이 예에서는, 저장 컨트롤러(120)가 이벤트(620) 동안에 2개의 위치 설명자를 검색한다고 가정한다 ― 비록 대개의 경우에 대응하는 정보의 적시의 이용 가능을 보증하기 위해 단 하나의 위치 설명자로 충분할 수 있다 하더라도(부 저장 장치로부터 데이터 블록을 검색하는 것이 주 메모리로부터 위치 설명자를 검색하는 것보다 더 많은 시간이 걸린다고 가정하여). 그러나, 작은(특히 마지막 블록) 블록들의 경우, 그 여분의 위치 설명자를 검색함으로써, 위치 설명자들을 기다릴 필요 없이 필요한 정보의 적시의 이용 가능이 보증된다.
시간 인스턴스(time instance) t1에서, 부 저장 장치(140A)는 파일 내의 데이터를 저장 컨트롤러(120)에 제공하기 시작한다. 그 데이터는 버퍼(210)(도 2)에 저장될 수 있다. t2까지는, 제1 위치 설명자에 의해 지정된 데이터가 버퍼(210)에서 이용 가능하다고 생각된다. 파일 설명자는 (제어 장치에 의해) t2에 앞서 검색/수신되었고 또한 버퍼(210)에 저장되었다고 생각된다. 파일 설명자들(상기 이벤트(620)에서 지적된 2개)의 세트의 나머지 것들 전부도 수신된다고 생각된다.
따라서, 이벤트(640)는 데이터 버퍼(510)로부터 주 메모리(130)로의 데이터(690A)의 전송을 나타낸다. 따라서, 버스 마스터(250)는 대응 부분들이 이용 가능하게 되자마자 주 메모리(130)로 그 부분들의 DMA 전송을 개시할 수 있다. 일 실시예에서, DMA 전송은 최소 64 바이트를 전송한다. 따라서, 파일의 대응 부분의 적어도 64 바이트가 수신되어 버퍼(210)에 저장되면, 버스 마스터(250)는 주 메모리(130)로 그 전송을 개시할 수 있다.
제2 위치 설명자에 대응하는 데이터(690B)의 수신의 개시에 의해 나타내어진 바와 같이, 데이터의 수신이 계속된다.
시간 인스턴스 t3에서, 저장 컨트롤러(120)는 제2 설명자에 대응하는 데이터가 시간 인스턴스 t4에서 완전히 수신되기 전에 다음 설명자(이 예에서는 제3 위치 설명자)를 검색할 수 있다. t4 직후에 개시되는 것으로 도시된 이벤트(660)는 주 메모리(130)로의 데이터(690B)의 전송을 나타낸다. 시간 인스턴스 t4에서 시작하여, (시간 인스턴스 t3에서 수신된) 제3 설명자에 대응하는 데이터(690C)의 수신이 개시된다.
판독 요구에서 요구된 모든 데이터 요소들이 주 메모리(130)에 전송될 때까지, 후속 위치 설명자들의 검색, 주 메모리(130)로의 데이터 부분들의 기입, 및 부 저장 장치(140A)로부터의 데이터의 수신이 유사한 방식으로 계속된다.
위의 설명은 단지 예시를 위해 단 하나의 판독 요구에 관하여 제공되었지만, 복수의 판독 요구들도 위의 설명과 일관되게 병행하여 처리될 것임을 이해해야 할 것이다.
8. 결론
위에서는 본 발명의 다양한 실시예들이 설명되었지만, 그것들은 제한이 아니라 예로서 제시되었을 뿐임을 이해해야 할 것이다. 따라서, 본 발명의 폭 및 범위는 위에서 설명된 예시적인 실시예들 중 어느 것에 의해서도 제한되어서는 안 되고, 다음의 청구항들 및 그 균등물들에 따라서만 정의되어야 할 것이다.
도 1은 본 발명의 몇몇 특징들이 구현될 수 있는 예시적인 시스템을 예시하는 도이다.
도 2는 일 실시예에서 저장 컨트롤러의 상세를 예시하는 블록도이다.
도 3의 (a) 및 (b)는 일 실시예에서 데이터를 요구하는 프로세서에 의해 위치 설명자들이 지정되는 방법을 보여주는 도이다.
도 4는 본 발명의 일 실시예에서 저장 컨트롤러에 의해 이용되는 버퍼의 사이즈가 감소될 수 있는 방법을 예시하는 순서도이다.
도 5a는 일 실시예에서 저장 컨트롤러 내의 버퍼의 상세를 예시하는 도이다.
도 5b는 일 실시예에서 저장 컨트롤러 내의 버퍼 내의 데이터에 대한 제어 정보가 지정되는 방법을 예시하는 도이다.
도 6은 일 실시예에서 부 저장소로부터 목표 메모리로의 데이터의 전송 동안의 이벤트들의 시퀀스를 예시하기 위해 이용되는 시퀀스도이다.
<도면의 주요 부분에 대한 부호의 설명>
120: 저장 컨트롤러
130: 주 메모리
210: 버퍼
220: 제어 장치
250: 버스 마스터

Claims (22)

  1. 복수의 부 저장 장치(secondary storage unit)에의 액세스 요구들을 제어하는 저장 컨트롤러(storage controller)로서,
    버퍼; 및
    제1 부 저장 장치로부터의 제1 데이터 시퀀스를 지정하는 제1 판독 요구 및 제2 부 저장 장치로부터의 제2 데이터 시퀀스를 지정하는 제2 판독 요구를 수신하는 제어 장치(control unit)
    를 포함하고,
    상기 제어 장치는 상기 제1 판독 요구 및 상기 제2 판독 요구에 응답하여 각각 상기 제1 부 저장 장치로부터의 상기 제1 데이터 시퀀스 및 상기 제2 부 저장 장치로부터의 상기 제2 데이터 시퀀스를 검색하고, 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스의 양쪽 모두를 상기 버퍼에 저장하고,
    상기 제어 장치는 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스가 저장될 메모리의 위치들을 지시하는 데이터를 더 저장하며,
    상기 제1 요구는 제1 위치 설명자(first location descriptor)를 더 지정하고, 상기 제1 위치 설명자는 상기 메모리, 및 상기 제1 데이터 시퀀스의 제1 서브세트가 상기 메모리에서 저장될 위치들을 지시하고, 상기 제어 장치는 상기 제1 서브세트의 검색을 완료하기 전에 상기 제1 위치 설명자를 프리페치(pre-fetch)하는, 저장 컨트롤러.
  2. 제1항에 있어서, 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스를 주 메모리에 전송하는 마스터 장치(master unit)를 더 포함하는 저장 컨트롤러.
  3. 제2항에 있어서, 상기 버퍼는 제어 버퍼 및 데이터 버퍼를 포함하고, 상기 제어 장치는 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스를 상기 데이터 버퍼에 저장하는, 저장 컨트롤러.
  4. 삭제
  5. 제1항에 있어서, 상기 제어 장치는 상기 제1 서브세트가 상기 제1 부 저장 장치로부터 수신되고 있는 동안에 제2 위치 설명자를 프리페치하고, 상기 제2 위치 설명자는 제2 데이터 서브세트를 식별하고, 상기 제2 데이터 서브세트는 상기 시퀀스 순서에 따라 상기 제1 서브세트의 다음에 오는 저장 컨트롤러.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 메모리;
    복수의 부 저장 장치;
    제1 부 저장 장치로부터의 제1 데이터 시퀀스를 지정하는 제1 판독 요구 및 제2 부 저장 장치로부터의 제2 데이터 시퀀스를 지정하는 제2 판독 요구를 발행하는 처리 장치 - 상기 제1 부 저장 장치 및 상기 제2 부 저장 장치는 상기 복수의 부 저장 장치에 포함됨 - ; 및
    상기 제1 판독 요구 및 상기 제2 판독 요구를 처리하는 저장 컨트롤러
    를 포함하는 저장 시스템으로서,
    상기 저장 컨트롤러는,
    버퍼; 및
    상기 제1 판독 요구 및 상기 제2 판독 요구를 수신하는 제어 장치 - 상기 제어 장치는 상기 제1 판독 요구 및 상기 제2 판독 요구에 응답하여 각각 상기 제1 부 저장 장치로부터의 상기 제1 데이터 시퀀스 및 상기 제2 부 저장 장치로부터의 상기 제2 데이터 시퀀스를 검색하고, 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스의 양쪽 모두를 상기 버퍼에 저장함 -
    를 포함하고,
    상기 제어 장치는 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스가 저장될 메모리의 위치들을 지시하는 데이터를 더 저장하며,
    상기 제1 요구는 제1 위치 설명자를 더 지정하고, 상기 제1 위치 설명자는 상기 메모리, 및 상기 제1 데이터 시퀀스의 제1 서브세트가 상기 메모리에서 저장될 위치들을 지시하고, 상기 제어 장치는 상기 제1 서브세트의 검색을 완료하기 전에 상기 제1 위치 설명자를 프리페치하는,
    저장 시스템.
  11. 제10항에 있어서, 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스를 주 메모리에 전송하는 마스터 장치를 더 포함하는 저장 시스템.
  12. 제11항에 있어서, 상기 버퍼는 제어 버퍼 및 데이터 버퍼를 포함하고, 상기 제어 장치는 상기 제1 데이터 시퀀스 및 상기 제2 데이터 시퀀스를 상기 데이터 버퍼에 저장하는, 저장 시스템.
  13. 삭제
  14. 제10항에 있어서, 상기 제어 장치는 상기 제1 서브세트가 상기 제1 부 저장 장치로부터 수신되고 있는 동안에 제2 위치 설명자를 프리페치하고, 상기 제2 위치 설명자는 제2 데이터 서브세트를 식별하고, 상기 제2 데이터 서브세트는 상기 시퀀스 순서에 따라 상기 제1 서브세트의 다음에 오는 저장 시스템.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
KR1020080074096A 2007-07-30 2008-07-29 저장 컨트롤러 및 저장 시스템 Active KR101051815B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/829,983 US8683126B2 (en) 2007-07-30 2007-07-30 Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US11/829,983 2007-07-30

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020100083249A Division KR20100106262A (ko) 2007-07-30 2010-08-27 저장 컨트롤러 및 저장 시스템

Publications (2)

Publication Number Publication Date
KR20090013085A KR20090013085A (ko) 2009-02-04
KR101051815B1 true KR101051815B1 (ko) 2011-07-25

Family

ID=40331767

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020080074096A Active KR101051815B1 (ko) 2007-07-30 2008-07-29 저장 컨트롤러 및 저장 시스템
KR1020100083249A Withdrawn KR20100106262A (ko) 2007-07-30 2010-08-27 저장 컨트롤러 및 저장 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020100083249A Withdrawn KR20100106262A (ko) 2007-07-30 2010-08-27 저장 컨트롤러 및 저장 시스템

Country Status (5)

Country Link
US (1) US8683126B2 (ko)
JP (1) JP4748610B2 (ko)
KR (2) KR101051815B1 (ko)
CN (1) CN101359314A (ko)
TW (1) TWI365375B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101842568B1 (ko) 2014-12-20 2018-05-14 인텔 코포레이션 트랜잭션 버퍼링된 메모리에서의 초기 식별

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US8667188B2 (en) 2010-03-24 2014-03-04 Hewlett-Packard Development Company, L.P. Communication between a computer and a data storage device
BR112014026287A2 (pt) * 2012-05-15 2017-06-27 Ericsson Telefon Ab L M sistema e método para remover erros de detecção do pdcch em uma rede de telecomunicações
KR101993187B1 (ko) * 2012-11-26 2019-06-27 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20140067739A (ko) * 2012-11-27 2014-06-05 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR102091394B1 (ko) * 2013-03-04 2020-03-20 삼성전자 주식회사 저항체를 이용한 비휘발성 메모리 장치 및 그 구동 방법
KR102330389B1 (ko) 2014-07-24 2021-11-24 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US20170147517A1 (en) * 2015-11-23 2017-05-25 Mediatek Inc. Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
JP6752651B2 (ja) * 2016-08-02 2020-09-09 キヤノン株式会社 情報処理システム、情報処理システムにおける方法、及びプログラム
JP6407946B2 (ja) * 2016-12-12 2018-10-17 ファナック株式会社 機器情報及び位置情報の管理装置及び管理システム
US10339073B2 (en) * 2017-06-29 2019-07-02 Keysight Technologies, Inc. Systems and methods for reducing write latency
CN109614148B (zh) * 2018-12-11 2020-10-02 中科驭数(北京)科技有限公司 数据逻辑运算方法、监测方法及装置
JP2020154493A (ja) 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
CN112347026B (zh) * 2019-08-09 2023-03-31 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
KR102653852B1 (ko) * 2019-05-07 2024-04-02 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US11199992B2 (en) * 2019-07-15 2021-12-14 Western Digital Technologies, Inc. Automatic host buffer pointer pattern detection
KR20220005804A (ko) 2020-07-07 2022-01-14 김순식 이발기의 커터날 에칭부분 보강구조
US11500581B2 (en) 2020-09-25 2022-11-15 Western Digital Technologies, Inc. Efficient TLP fragmentations in extended LBA environment
US11853218B2 (en) 2020-11-20 2023-12-26 Western Digital Technologies, Inc. Semi and cached TLP coalescing
US11537524B2 (en) 2020-11-20 2022-12-27 Western Digital Technologies, Inc. Effective PCIe utilization by PCIe TLP coalescing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050076274A (ko) * 2004-01-20 2005-07-26 삼성전자주식회사 디스크립터 dma콘트롤러를 채용한 더블 버퍼링 dma데이터전송장치
KR20070059859A (ko) * 2005-12-06 2007-06-12 한국전자통신연구원 칩 내부 회로 간의 데이터 전송을 위한 통신 시스템

Family Cites Families (223)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3091657A (en) 1962-11-14 1963-05-28 Flexiflor Electrical Systems I Wiring ducts
US3614740A (en) 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with circuits for transferring between operating routines, interruption routines and subroutines
US3987291A (en) 1975-05-01 1976-10-19 International Business Machines Corporation Parallel digital arithmetic device having a variable number of independent arithmetic zones of variable width and location
US4101960A (en) 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4541046A (en) 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
US4566005A (en) 1983-03-07 1986-01-21 International Business Machines Corporation Data management for plasma display
US4748585A (en) 1985-12-26 1988-05-31 Chiarulli Donald M Processor utilizing reconfigurable process segments to accomodate data word length
US4965751A (en) 1987-08-18 1990-10-23 Hewlett-Packard Company Graphics system with programmable tile size and multiplexed pixel data and partial pixel addresses based on tile size
US4985848A (en) 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5047975A (en) 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US4965716A (en) 1988-03-11 1990-10-23 International Business Machines Corporation Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor
US4897717A (en) 1988-03-30 1990-01-30 Starsignal, Inc. Computer-based video compression system
US4958303A (en) 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
US5210834A (en) 1988-06-01 1993-05-11 Digital Equipment Corporation High speed transfer of instructions from a master to a slave processor
US5040109A (en) 1988-07-20 1991-08-13 Digital Equipment Corporation Efficient protocol for communicating between asychronous devices
US4991169A (en) 1988-08-02 1991-02-05 International Business Machines Corporation Real-time digital signal processing relative to multiple digital communication channels
US5175828A (en) 1989-02-13 1992-12-29 Hewlett-Packard Company Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison
JPH0795766B2 (ja) 1989-06-30 1995-10-11 株式会社日立製作所 デジタル・データ通信装置及びそれに使用するデータ通信アダプタ
US5179530A (en) 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
JP3218567B2 (ja) 1990-09-28 2001-10-15 クロームアロイ・ガス・タービン・コーポレイション 高強力ニッケル基超合金類の溶接
JPH0799508B2 (ja) 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5263136A (en) 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5522080A (en) 1991-10-24 1996-05-28 Intel Corporation Centralized control SIMD processor having different priority levels set for each data transfer request type and successively repeating the servicing of data transfer request in a predetermined order
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
JPH0612190A (ja) * 1992-06-25 1994-01-21 Hitachi Ltd 磁気ディスク制御方式
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5430841A (en) 1992-10-29 1995-07-04 International Business Machines Corporation Context management in a graphics system
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5375223A (en) 1993-01-07 1994-12-20 International Business Machines Corporation Single register arbiter circuit
US5682554A (en) 1993-01-15 1997-10-28 Silicon Graphics, Inc. Apparatus and method for handling data transfer between a general purpose computer and a cooperating processor
EP0607988B1 (en) 1993-01-22 1999-10-13 Matsushita Electric Industrial Co., Ltd. Program controlled processor
US5327369A (en) 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
US5388245A (en) 1993-06-01 1995-02-07 Intel Corporation Memory arbitration method and apparatus for multiple-cycle memory coprocessors employing a data cache unit and stack RAM
JP3248992B2 (ja) 1993-07-13 2002-01-21 富士通株式会社 マルチプロセッサ
US6073158A (en) 1993-07-29 2000-06-06 Cirrus Logic, Inc. System and method for processing multiple received signal sources
US5574944A (en) 1993-12-15 1996-11-12 Convex Computer Corporation System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context
US5802574A (en) 1993-12-28 1998-09-01 Intel Corporation Method and apparatus for quickly modifying cache state
US5761476A (en) 1993-12-30 1998-06-02 Intel Corporation Non-clocked early read for back-to-back scheduling of instructions
US5809524A (en) 1994-01-04 1998-09-15 Intel Corporation Method and apparatus for cache memory replacement line identification
US5560030A (en) 1994-03-08 1996-09-24 Texas Instruments Incorporated Transfer processor with transparency
US5706478A (en) 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
US5784590A (en) 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
JPH0877002A (ja) 1994-08-31 1996-03-22 Sony Corp 並列プロセッサ装置
GB2293668B (en) 1994-09-30 1999-09-29 Advanced Risc Mach Ltd Accessing data memories
US6009454A (en) 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
US5920352A (en) 1994-10-28 1999-07-06 Matsushita Electric Industrial Co., Ltd. Image memory storage system and method for a block oriented image processing system
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
JPH08153032A (ja) 1994-11-29 1996-06-11 Matsushita Electric Ind Co Ltd ネットワーク経由データ先読みバッファ方法
US5649173A (en) 1995-03-06 1997-07-15 Seiko Epson Corporation Hardware architecture for image generation and manipulation
EP0732659B1 (en) * 1995-03-17 2001-08-08 LSI Logic Corporation Controlling (n+i) I/O channels with (n) data managers in a homogeneous software programming environment
US5864712A (en) * 1995-03-17 1999-01-26 Lsi Logic Corporation Method and apparatus for controlling (N+I) I/O channels with (N) data managers in a homogenous software programmable environment
US5764243A (en) 1995-03-24 1998-06-09 3Dlabs Inc. Ltd. Rendering architecture with selectable processing of multi-pixel spans
EP0735487B1 (en) 1995-03-31 2001-10-31 Sun Microsystems, Inc. A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US5751295A (en) 1995-04-27 1998-05-12 Control Systems, Inc. Graphics accelerator chip and method
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5754191A (en) 1995-06-23 1998-05-19 Cirrus Logic, Inc. Method and apparatus for optimizing pixel data write operations to a tile based frame buffer
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5805905A (en) 1995-09-06 1998-09-08 Opti Inc. Method and apparatus for arbitrating requests at two or more levels of priority using a single request line
US6016474A (en) 1995-09-11 2000-01-18 Compaq Computer Corporation Tool and method for diagnosing and correcting errors in a computer program
US5781799A (en) * 1995-09-29 1998-07-14 Cirrus Logic, Inc. DMA controller arrangement having plurality of DMA controllers and buffer pool having plurality of buffers accessible to each of the channels of the controllers
US5796974A (en) 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US6331856B1 (en) 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US20020116595A1 (en) 1996-01-11 2002-08-22 Morton Steven G. Digital signal processor integrated circuit
US6317819B1 (en) 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
US5859980A (en) 1996-02-08 1999-01-12 Advanced Micro Devices, Inc. Network interface having adaptive transmit start point for each packet to avoid transmit underflow
US6236674B1 (en) 1996-02-23 2001-05-22 Teletransactions, Inc. Transceiver control with sleep mode operation
US5950012A (en) 1996-03-08 1999-09-07 Texas Instruments Incorporated Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes
US6049672A (en) 1996-03-08 2000-04-11 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure
US5784640A (en) 1996-03-18 1998-07-21 Advanced Micro Devices, Inc. CPU with DSP function preprocessor having look-up table for translating instruction sequences intended to perform DSP function into DSP macros
DE29606102U1 (de) 1996-04-02 1996-06-05 Hermann Kleinhuis GmbH & Co KG, 58507 Lüdenscheid Kabelkanal
US6092094A (en) 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
US6131152A (en) 1996-05-15 2000-10-10 Philips Electronics North America Corporation Planar cache layout and instruction stream therefor
US5848254A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
JP3442225B2 (ja) 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6222552B1 (en) 1996-07-26 2001-04-24 International Business Machines Corporation Systems and methods for caching depth information of three-dimensional images
US6192073B1 (en) 1996-08-19 2001-02-20 Samsung Electronics Co., Ltd. Methods and apparatus for processing video data
KR100262453B1 (ko) 1996-08-19 2000-08-01 윤종용 비디오데이터처리방법및장치
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5835788A (en) 1996-09-18 1998-11-10 Electronics For Imaging System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory
US5812147A (en) 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5949410A (en) 1996-10-18 1999-09-07 Samsung Electronics Company, Ltd. Apparatus and method for synchronizing audio and video frames in an MPEG presentation system
US5925124A (en) 1997-02-27 1999-07-20 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
US6141740A (en) 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
JPH10293656A (ja) * 1997-04-21 1998-11-04 Toshiba Corp ディスク記憶システム及び同システムに適用する2重化方法
US5940090A (en) 1997-05-07 1999-08-17 Cirrus Logic, Inc. Method and apparatus for internally caching the minimum and maximum XY pixel address values in a graphics subsystem
US5940858A (en) 1997-05-30 1999-08-17 National Semiconductor Corporation Cache circuit with programmable sizing and method of operation
JP2912299B2 (ja) * 1997-06-10 1999-06-28 四国日本電気ソフトウェア株式会社 ディスクアレイ制御装置
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
KR100243100B1 (ko) 1997-08-12 2000-02-01 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
US6044419A (en) 1997-09-30 2000-03-28 Intel Corporation Memory handling system that backfills dual-port buffer from overflow buffer when dual-port buffer is no longer full
US5999199A (en) 1997-11-12 1999-12-07 Cirrus Logic, Inc. Non-sequential fetch and store of XY pixel data in a graphics processor
US6301600B1 (en) 1997-11-18 2001-10-09 Intrinsity, Inc. Method and apparatus for dynamic partitionable saturating adder/subtractor
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
US6480927B1 (en) 1997-12-31 2002-11-12 Unisys Corporation High-performance modular memory system with crossbar connections
JPH11355717A (ja) * 1998-06-04 1999-12-24 Matsushita Electric Ind Co Ltd Avデータ出力装置及びavデータ入出力装置
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6192458B1 (en) 1998-03-23 2001-02-20 International Business Machines Corporation High performance cache directory addressing scheme for variable cache sizes utilizing associativity
US6631423B1 (en) 1998-03-31 2003-10-07 Hewlett-Packard Development Company, L.P. System and method for assessing performance optimizations in a graphics system
US6144392A (en) 1998-04-30 2000-11-07 Ati Technologies, Inc. Method and apparatus for formatting a texture in a frame buffer
US6150610A (en) 1998-05-26 2000-11-21 The Wiremold Company Tamper-resistant surface mounted raceway cover
US6252610B1 (en) 1998-05-29 2001-06-26 Silicon Graphics, Inc. Method and apparatus for efficiently switching state in a graphics pipeline
US6208361B1 (en) 1998-06-15 2001-03-27 Silicon Graphics, Inc. Method and system for efficient context switching in a computer graphics system
US6611272B1 (en) 1998-07-02 2003-08-26 Microsoft Corporation Method and apparatus for rasterizing in a hierarchical tile order
US6490654B2 (en) 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6476807B1 (en) 1998-08-20 2002-11-05 Apple Computer, Inc. Method and apparatus for performing conservative hidden surface removal in a graphics processor with deferred shading
US6292886B1 (en) 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
JP3983394B2 (ja) 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
EP1365385B1 (en) 1998-11-09 2012-06-13 Broadcom Corporation Graphics display system with processing of graphics layers, alpha blending and composition with video data
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6636222B1 (en) 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6601161B2 (en) 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6496902B1 (en) 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
US6437789B1 (en) 1999-02-19 2002-08-20 Evans & Sutherland Computer Corporation Multi-level cache controller
US6209078B1 (en) 1999-03-25 2001-03-27 Lsi Logic Corporation Accelerated multimedia processor
US7031330B1 (en) 1999-04-15 2006-04-18 Marconi Intellectual Property (Ringfence), Inc. Very wide memory TDM switching system
US6351808B1 (en) 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
DE69935852T2 (de) * 1999-06-09 2007-12-20 Texas Instruments Inc., Dallas Host-Zugriff zu gemeinschaftlichem Speicher mit Hochprioritätsbetriebsart
JP3639464B2 (ja) 1999-07-05 2005-04-20 株式会社ルネサステクノロジ 情報処理システム
US6915385B1 (en) 1999-07-30 2005-07-05 International Business Machines Corporation Apparatus for unaligned cache reads and methods therefor
US6529201B1 (en) 1999-08-19 2003-03-04 International Business Machines Corporation Method and apparatus for storing and accessing texture maps
US6657635B1 (en) 1999-09-03 2003-12-02 Nvidia Corporation Binning flush in graphics data processing
US6825848B1 (en) 1999-09-17 2004-11-30 S3 Graphics Co., Ltd. Synchronized two-level graphics processing cache
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6631463B1 (en) 1999-11-08 2003-10-07 International Business Machines Corporation Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
US6975324B1 (en) 1999-11-09 2005-12-13 Broadcom Corporation Video and graphics system with a video transport processor
US6597357B1 (en) 1999-12-20 2003-07-22 Microsoft Corporation Method and system for efficiently implementing two sided vertex lighting in hardware
US6499090B1 (en) 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
US6978457B1 (en) 2000-01-31 2005-12-20 Agilent Technologies, Inc. Method and system increasing performance substituting finite state machine control with hardware-implemented data structure manipulation
US6715035B1 (en) 2000-02-17 2004-03-30 International Business Machines Corporation Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency
JP3474173B2 (ja) 2000-02-25 2003-12-08 株式会社ソニー・コンピュータエンタテインメント 画像出力装置に応じた画像データを作成する情報処理装置およびそのための記録媒体
US6370617B1 (en) 2000-04-10 2002-04-09 Silicon Integrated Systems Corp. Non-stalling pipeline tag controller
US6624818B1 (en) 2000-04-21 2003-09-23 Ati International, Srl Method and apparatus for shared microcode in a multi-thread computation engine
US6742064B2 (en) * 2000-05-15 2004-05-25 Goodrich Corp. Programmable throttle circuit for each control device of a processing system
US6674841B1 (en) 2000-09-14 2004-01-06 International Business Machines Corporation Method and apparatus in a data processing system for an asynchronous context switching mechanism
US6560685B1 (en) 2000-09-27 2003-05-06 Sony Corporation System and method to improve speed and reduce memory allocation for set top box boot-up
US6629188B1 (en) 2000-11-13 2003-09-30 Nvidia Corporation Circuit and method for prefetching data for a texture cache
US6788303B2 (en) 2001-02-27 2004-09-07 3Dlabs Inc., Ltd Vector instruction set
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6940503B2 (en) 2001-05-10 2005-09-06 Ati International Srl Method and apparatus for processing non-planar video graphics primitives
US7191281B2 (en) 2001-06-13 2007-03-13 Intel Corporation Mobile computer system having a navigation mode to optimize system performance and power management for mobile applications
KR100395756B1 (ko) 2001-06-16 2003-08-21 삼성전자주식회사 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
JP3835207B2 (ja) 2001-06-27 2006-10-18 ソニー株式会社 試着画像提供システム及び試着画像提供方法、試着画像生成装置及び試着画像生成方法
US6965982B2 (en) 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6922716B2 (en) 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7564460B2 (en) 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US7016418B2 (en) 2001-08-07 2006-03-21 Ati Technologies, Inc. Tiled memory configuration for mapping video data and method thereof
JP2003153219A (ja) * 2001-11-19 2003-05-23 Matsushita Electric Ind Co Ltd データ伝送方法、受信装置、受信方法及び受信プログラム
US7080169B2 (en) * 2001-12-11 2006-07-18 Emulex Design & Manufacturing Corporation Receiving data from interleaved multiple concurrent transactions in a FIFO memory having programmable buffer zones
JP3840966B2 (ja) 2001-12-12 2006-11-01 ソニー株式会社 画像処理装置およびその方法
US7305540B1 (en) 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US20040073773A1 (en) 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US7159212B2 (en) 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US6983408B2 (en) 2002-03-08 2006-01-03 Microsoft Corporation Managing error/status information generated during video processing
US6812929B2 (en) 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
CN1310163C (zh) * 2002-03-13 2007-04-11 先进微装置公司 通用串行总线主机控制器
US7015909B1 (en) 2002-03-19 2006-03-21 Aechelon Technology, Inc. Efficient use of user-defined shaders to implement graphics operations
US6732242B2 (en) 2002-03-28 2004-05-04 Intel Corporation External bus transaction scheduling system
US7146468B2 (en) 2002-04-24 2006-12-05 Ip-First, Llc. Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache
US6785772B2 (en) 2002-04-26 2004-08-31 Freescale Semiconductor, Inc. Data prefetching apparatus in a data processing system and method therefor
US6891543B2 (en) 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7043667B2 (en) * 2002-05-14 2006-05-09 Intel Corporation Debug information provided through tag space
US7035979B2 (en) 2002-05-22 2006-04-25 International Business Machines Corporation Method and apparatus for optimizing cache hit ratio in non L1 caches
US7027059B2 (en) 2002-05-30 2006-04-11 Intel Corporation Dynamically constructed rasterizers
US6925531B2 (en) * 2002-07-11 2005-08-02 Storage Technology Corporation Multi-element storage array
US6952214B2 (en) 2002-07-12 2005-10-04 Sun Microsystems, Inc. Method for context switching a graphics accelerator comprising multiple rendering pipelines
US6825843B2 (en) 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US6809732B2 (en) 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
KR100702746B1 (ko) 2002-08-20 2007-04-03 엘지전자 주식회사 컴퓨터 시스템에서의 무선 랜 모듈 전원 관리방법 및 그장치
US6944744B2 (en) 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US6957317B2 (en) 2002-10-10 2005-10-18 Intel Corporation Apparatus and method for facilitating memory data access with generic read/write patterns
JP3986950B2 (ja) 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US6981106B1 (en) 2002-11-26 2005-12-27 Unisys Corporation System and method for accelerating ownership within a directory-based memory system
JP2004220070A (ja) 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US6839062B2 (en) 2003-02-24 2005-01-04 Microsoft Corporation Usage semantics
US6976126B2 (en) 2003-03-11 2005-12-13 Arm Limited Accessing data values in a cache
US20040205326A1 (en) 2003-03-12 2004-10-14 Sindagi Vijay K.G. Early predicate evaluation to reduce power in very long instruction word processors employing predicate execution
US20040193837A1 (en) 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US7148888B2 (en) 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
US7032097B2 (en) 2003-04-24 2006-04-18 International Business Machines Corporation Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US6993628B2 (en) 2003-04-28 2006-01-31 International Business Machines Corporation Cache allocation mechanism for saving elected unworthy member via substitute victimization and imputed worthiness of substitute victim member
US20040221117A1 (en) 2003-05-02 2004-11-04 Shelor Charles F. Logic and method for reading data from cache
US7151544B2 (en) 2003-05-16 2006-12-19 Sun Microsystems, Inc. Method for improving texture cache access by removing redundant requests
US6862027B2 (en) 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
US7260677B1 (en) 2003-07-16 2007-08-21 Unisys Corporation Programmable system and method for accessing a shared memory
US7334110B1 (en) 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US7369815B2 (en) 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
GB2406404C (en) 2003-09-26 2011-11-02 Advanced Risc Mach Ltd Data processing apparatus and method for handling corrupted data values
US7202872B2 (en) 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern
US20080088631A1 (en) 2003-11-19 2008-04-17 Reuven Bakalash Multi-mode parallel graphics rendering and display system supporting real-time detection of scene profile indices programmed within pre-profiled scenes of the graphics-based application
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US7406698B2 (en) 2003-12-30 2008-07-29 Microsoft Corporation Driver framework component for synchronizing interactions between a multi-threaded environment and a driver operating in a less-threaded software environment
US6985151B1 (en) 2004-01-06 2006-01-10 Nvidia Corporation Shader pixel storage in a graphics memory
US7154500B2 (en) 2004-04-20 2006-12-26 The Chinese University Of Hong Kong Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer
US20050239518A1 (en) 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
US7724263B2 (en) 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US7091982B2 (en) 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7328359B2 (en) 2004-07-21 2008-02-05 Intel Corporation Technique to create link determinism
JP4520790B2 (ja) 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US7669009B2 (en) 2004-09-23 2010-02-23 Intel Corporation Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US20060064517A1 (en) 2004-09-23 2006-03-23 Honeywell International Inc. Event-driven DMA controller
US7352885B2 (en) 2004-09-30 2008-04-01 General Electric Company Method and system for multi-energy tomosynthesis
US7852341B1 (en) 2004-10-05 2010-12-14 Nvidia Corporation Method and system for patching instructions in a shader for a 3-D graphics pipeline
US8698817B2 (en) 2004-11-15 2014-04-15 Nvidia Corporation Video processor having scalar and vector components
US7869835B1 (en) 2005-03-02 2011-01-11 Nvidia Corporation Method and system for pre-loading and executing computer instructions within the cache memory
US7486290B1 (en) 2005-06-10 2009-02-03 Nvidia Corporation Graphical shader by using delay
US7450131B2 (en) 2005-09-30 2008-11-11 Intel Corporation Memory layout for re-ordering instructions using pointers
US7451293B2 (en) 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
US7412570B2 (en) 2005-11-15 2008-08-12 Sun Microsystems, Inc. Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state
US7545381B2 (en) 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7725687B2 (en) 2006-06-27 2010-05-25 Texas Instruments Incorporated Register file bypass with optional results storage and separate predication register file in a VLIW processor
US7493452B2 (en) 2006-08-18 2009-02-17 International Business Machines Corporation Method to efficiently prefetch and batch compiler-assisted software cache accesses
US7750913B1 (en) 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
US8269782B2 (en) 2006-11-10 2012-09-18 Sony Computer Entertainment Inc. Graphics processing apparatus
US7650459B2 (en) * 2006-12-21 2010-01-19 Intel Corporation High speed interface for non-volatile memory
US7620749B2 (en) * 2007-01-10 2009-11-17 International Business Machines Corporation Descriptor prefetch mechanism for high latency and out of order DMA device
JP2008305093A (ja) * 2007-06-06 2008-12-18 Canon Inc メモリ制御装置、メモリ制御装置の制御方法、プログラム及び記憶媒体
US7934052B2 (en) * 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US8990543B2 (en) 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
CA2716464A1 (en) 2009-12-24 2011-06-24 Mcmaster University Bit-width allocation for scientific computations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050076274A (ko) * 2004-01-20 2005-07-26 삼성전자주식회사 디스크립터 dma콘트롤러를 채용한 더블 버퍼링 dma데이터전송장치
KR20070059859A (ko) * 2005-12-06 2007-06-12 한국전자통신연구원 칩 내부 회로 간의 데이터 전송을 위한 통신 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101842568B1 (ko) 2014-12-20 2018-05-14 인텔 코포레이션 트랜잭션 버퍼링된 메모리에서의 초기 식별

Also Published As

Publication number Publication date
US20090037689A1 (en) 2009-02-05
KR20090013085A (ko) 2009-02-04
CN101359314A (zh) 2009-02-04
JP2009032243A (ja) 2009-02-12
KR20100106262A (ko) 2010-10-01
TW200921387A (en) 2009-05-16
TWI365375B (en) 2012-06-01
JP4748610B2 (ja) 2011-08-17
US8683126B2 (en) 2014-03-25

Similar Documents

Publication Publication Date Title
KR101051815B1 (ko) 저장 컨트롤러 및 저장 시스템
EP3647932B1 (en) Storage device processing stream data, system including the same, and operation method thereof
US9563367B2 (en) Latency command processing for solid state drive interface protocol
CN102428451B (zh) 用于数据存储装置的命令及中断分组
CN101477453B (zh) 嵌入式系统、用于嵌入式系统的预取模块及其控制方法
US7287101B2 (en) Direct memory access using memory descriptor list
US6012106A (en) Prefetch management for DMA read transactions depending upon past history of actual transfer lengths
US7069399B2 (en) Method and related apparatus for reordering access requests used to access main memory of a data processing system
US20190087091A1 (en) Method and design for dynamic management of descriptors for sgl operation
KR20170026116A (ko) 고성능 트랜잭션 기반 메모리 시스템
JP2012529103A (ja) メモリデバイスによりホストメモリアクセスを制御するための方法およびシステム
US12271628B2 (en) Non-volatile memory-based storage device, device controller and method thereof
CN104252422A (zh) 内存访问方法和内存控制器
KR100868395B1 (ko) Dma 전송을 수행하기 위한 장치 및 방법과 머신 판독 가능 매체
US20100306421A1 (en) Dma transfer device
US20070226382A1 (en) Method for improving direct memory access performance
JP2011232917A (ja) 半導体集積回路、及びリクエスト制御方法
US8719542B2 (en) Data transfer apparatus, data transfer method and processor
US20240345774A1 (en) Information processing system
US9110856B2 (en) Interface control apparatus, data storage apparatus and method for interface control
CN107783909A (zh) 一种内存地址总线扩展方法及装置
US7287102B1 (en) System and method for concatenating data
US10789001B1 (en) Posted operation data control
JP2014211801A (ja) インターフェース制御装置、データ記憶装置及びインターフェース制御方法
US8667188B2 (en) Communication between a computer and a data storage device

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20080729

PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20080729

Comment text: Request for Examination of Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20091221

Patent event code: PE09021S01D

AMND Amendment
E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20100625

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20091221

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I

AMND Amendment
J201 Request for trial against refusal decision
PJ0201 Trial against decision of rejection

Patent event date: 20100728

Comment text: Request for Trial against Decision on Refusal

Patent event code: PJ02012R01D

Patent event date: 20100625

Comment text: Decision to Refuse Application

Patent event code: PJ02011S01I

Appeal kind category: Appeal against decision to decline refusal

Decision date: 20110531

Appeal identifier: 2010101005725

Request date: 20100728

A107 Divisional application of patent
PA0107 Divisional application

Comment text: Divisional Application of Patent

Patent event date: 20100827

Patent event code: PA01071R01D

PB0901 Examination by re-examination before a trial

Comment text: Amendment to Specification, etc.

Patent event date: 20100728

Patent event code: PB09011R02I

Comment text: Request for Trial against Decision on Refusal

Patent event date: 20100728

Patent event code: PB09011R01I

Comment text: Amendment to Specification, etc.

Patent event date: 20100222

Patent event code: PB09011R02I

Comment text: Amendment to Specification, etc.

Patent event date: 20080729

Patent event code: PB09011R02I

B601 Maintenance of original decision after re-examination before a trial
PB0601 Maintenance of original decision after re-examination before a trial

Comment text: Report of Result of Re-examination before a Trial

Patent event code: PB06011S01D

Patent event date: 20100928

J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20100728

Effective date: 20110531

PJ1301 Trial decision

Patent event code: PJ13011S01D

Patent event date: 20110531

Comment text: Trial Decision on Objection to Decision on Refusal

Appeal kind category: Appeal against decision to decline refusal

Request date: 20100728

Decision date: 20110531

Appeal identifier: 2010101005725

PS0901 Examination by remand of revocation
S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
PS0701 Decision of registration after remand of revocation

Patent event date: 20110614

Patent event code: PS07012S01D

Comment text: Decision to Grant Registration

Patent event date: 20110601

Patent event code: PS07011S01I

Comment text: Notice of Trial Decision (Remand of Revocation)

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20110719

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20110719

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20140702

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20140702

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20151023

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20151023

Start annual number: 5

End annual number: 5

FPAY Annual fee payment

Payment date: 20170710

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20170710

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20200701

Start annual number: 10

End annual number: 10

PR1001 Payment of annual fee

Payment date: 20210628

Start annual number: 11

End annual number: 11

PR1001 Payment of annual fee

Payment date: 20220627

Start annual number: 12

End annual number: 12

PR1001 Payment of annual fee

Payment date: 20240625

Start annual number: 14

End annual number: 14

PR1001 Payment of annual fee

Payment date: 20250630

Start annual number: 15

End annual number: 15