KR20070049676A - 버스를 통해 메모리 프리-페치 명령들을 전송하기 위한방법 및 장치 - Google Patents

버스를 통해 메모리 프리-페치 명령들을 전송하기 위한방법 및 장치 Download PDF

Info

Publication number
KR20070049676A
KR20070049676A KR1020077006940A KR20077006940A KR20070049676A KR 20070049676 A KR20070049676 A KR 20070049676A KR 1020077006940 A KR1020077006940 A KR 1020077006940A KR 20077006940 A KR20077006940 A KR 20077006940A KR 20070049676 A KR20070049676 A KR 20070049676A
Authority
KR
South Korea
Prior art keywords
data
memory
memory controller
fetch
read request
Prior art date
Application number
KR1020077006940A
Other languages
English (en)
Other versions
KR100913279B1 (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 KR20070049676A publication Critical patent/KR20070049676A/ko
Application granted granted Critical
Publication of KR100913279B1 publication Critical patent/KR100913279B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

본 발명은 프로세서가 데이터가 요구될 메모리의 어드레스를 예측하고, 상기 예측된 메모리의 어드레스에서 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하고, 만약 데이터가 요구되면 예측된 메모리의 어드레스에서 데이터에 대한 판독 요청을 메모리 제어기로 전송하도록 구성될 수 있는 처리 시스템 및 방법에 관한 것이다.

Description

버스를 통해 메모리 프리-페치 명령들을 전송하기 위한 방법 및 장치{METHOD AND APPARATUS FOR TRANSMITTING MEMORY PRE-FETCH COMMANDS ON A BUS}
본 발명은 일반적으로 디지털 시스템들에 관한 것이며, 특히 처리 시스템에서 버스를 통해 메모리 프리-페치 명령들을 전송하기 위한 방법 및 장치들에 관한 것이다.
집적 회로들은 개별 디바이스들을 사용하여 구현하기에 어렵거나 불가능했던 새로운 애플리케이션들을 가능하게 함으로써 전자 산업에 혁명을 일으켰다. 집적 기술은 수 백만개의 전자 부품들로 구성된 복잡한 회로들이 반도체 재료로 이루어진 단일 칩으로 패키지화되도록 한다. 결과적으로, 컴퓨터들, 셀룰러 전화기들, 개인 디지털 보조장치(PDA)들 등등과 같은 강력한 계산 디바이스들은 휴대용 디바이스들로 감소될 수 있다.
집적 회로들은 오늘날 범용 또는 특정 애플리케이션 프로세서들과 같은 복잡한 회로를 구현하는데 널리 사용되고 있다. 일반적인 집적 프로세서는 시스템 메모리와 함께 중앙 처리 유닛(CPU)을 포함할 수 있다. 높은 대역폭의 시스템 버스는 상기 두 회로 사이의 통신들을 지원하는데 사용될 수 있다. 버스는 일반적으로 집적 회로 상의 부품들 사이에 공유되는 채널 또는 경로이다. 부가적으로, 온-칩 메모리 제어기의 제어하에, 낮은 레이턴시의 오프-칩 메모리에 액세스하는데 사용될 수 있는 외부 버스가 존재할 수 있다.
오프-칩 메모리는 일반적으로 페이지들로 포맷화된다. 하나의 페이지는 일반적으로 메모리의 행과 결합된다. 대부분의 응용예들에서, 메모리 제어기는 한번에 제한된 수의 페이지들을 개방할 수 있다. "개방된 페이지"는 메모리가 메모리의 행을 가리키는 것을 의미하며, 메모리 제어기로부터 데이터를 판독하라는 열 접속 명령을 필요로 한다. 메모리의 개방되지 않은 페이지에 접속하기 위해, 메모리 제어기는 메모리에 행 접속 명령을 제공해야 하며, 포인터는 데이터를 판독하기 위해 열 접속 명령을 제공하기 전에 포인터를 이동시키도록 메모리에 행 접속 명령을 제공해야 한다. 결과적으로, 메모리 내에서 페이지를 폐쇄하고 새로운 페이지를 개방하기 위해 레이턴시 조건이 주어진다.
다수의 CPU 구현들은 오프-칩 메모리 디바이스들과 충돌되는 높은 레이턴시를 보상하기 위해 프리-페치 메카니즘을 포함한다. 상기 CPU들은 명령 스트림들을 평가하고, 레이턴시를 감소시키고 CPU 성능을 개선하기 위해 향후에 요구될 수 있는 오프-칩 메모리 디바이스들로부터의 페이지들에 대한 요청들을 실행하도록 구성될 수 있다. 그러나, 상기 프리-페치 요청들은 종종 CPU 중단 뿐만 아니라 명령 스트림내의 브랜치들로 인해 부정확할 수 있다. 또한, 프리-페치 요청이 버스를 통해 수용되면, 데이터는 오프-칩 메모리로부터 판독되며, 데이터가 더 이상 요구되지 않는 경우에도 버스를 통해 CPU로 다시 전달된다. 이는 종종 버스에 더 낮은 대역폭을 발생할 수 있고, 버스를 통해 불확실한 데이터가 전달될 때 오프-칩 메모 리로부터 후속 데이터에 CPU가 접속하는 것을 지연시킨다.
CPU를 오프-칩 메모리 디바이스에 접속하기 위해 프리-페치 명령들을 사용하는 것은 수년간 실현가능한 해결책을 제공하였다. 그러나, CPU의 동작 속도가 지수적으로 증가할수록 오프-칩 메모리 디바이스와 관련된 레이턴시를 감소시키는 것이 상당히 요구되고 있다.
본 발명의 일 양상에서, 메모리로부터 데이터를 검색하는 방법은 상기 메모리에서 데이터가 요구될 어드레스를 예측하는 단계; 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 단계; 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하는 단계; 및 상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 수신하는 단계를 포함한다.
본 발명의 또다른 양상에서, 메모리로부터 데이터를 검색하는 방법은 상기 메모리의 개방되지 않은 페이지에서 데이터가 요구될 어드레스를 예측하는 단계; 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 단계; 상기 예측된 어드레스에서 프리-페치 버퍼로 상기 데이터를 판독하는 단계; 및 상기 프리-페치 버퍼로부터 상기 데이터를 삭제하는 단계를 포함한다.
본 발명의 또다른 양상에서, 처리 시스템은 메모리; 메모리 제어기; 및 상기 메모리에서 데이터가 요구될 어드레스를 예측하고, 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하며, 상기 데이터가 요구되는 경우에 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하도록 구성된 프로세서를 포함하며, 상기 메모리 제어기는 상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 상기 프로세서로 전달하도록 더 구성된다.
본 발명의 또다른 양상에서, 처리 시스템은 메모리; 메모리 제어기; 상기 메모리에서 데이터가 요구될 어드레스를 예측하는 수단; 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 수단; 상기 데이터가 요구되는 경우에 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하는 수단; 및 상기 데이터를 수신하는 수단을 포함하며, 상기 메모리 제어기는 상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 상기 수신 수단으로 전달하도록 더 구성된다.
본 발명의 다른 실시예들은 하기의 상세한 설명에서 당업자에게 용이하게 인식될 것이며, 본 발명의 다양한 실시예들은 예시의 방식으로 도시 및 설명된다. 본 발명은 다른 및 서로 다른 실시예들일 수 있으며, 몇몇 세부 사항들은 본 발명의 사상 및 영역에서 벗어나지 않고 다양한 다른 고려사항들에서 수정할 수 있다. 따라서, 도면 및 상세한 설명은 그 특성을 제한하는 것이 아니라 설명하는 것으로 간주되어야 한다.
본 발명의 양상들은 첨부된 도면들에서 예로서 설명되지만, 이에 제한되지 않는다.
도 1은 오프-칩 메모리를 구비한 집적 회로의 일 예를 설명하는 개념적인 블럭 다이어그램이다.
도 2는 오프-칩 메모리를 구비한 집적 회로의 또다른 예를 설명하는 개념적인 블럭 다이어그램이다.
도 3은 SDRAM으로부터의 판독 동작에서의 레이턴시를 감소하기 위해 프리-페치 명령을 사용하는 것을 설명하는 타이밍 다이어그램이다.
도 4는 NAND 플래시 메모리로부터의 판독 동작에서의 레이턴시를 감소하기 위해 프리-페치 명령을 사용하는 것을 설명하는 타이밍 다이어그램이다.
첨부된 도면을 참조하여 하기에 설명되는 상세한 설명은 본 발명의 다양한 실시예들이 설명으로서 의도되는 것이며, 본 발명이 실행될 수 있는 실시예들만을 표현하도록 의도되는 것은 아니다. 상세한 설명은 본 발명의 현저한 이해를 제공하기 위한 특정 세부 설명들을 포함한다. 그러나, 상기 특정 세부 설명들 없이 본 발명이 실행될 수 있음이 당업자에게 명백할 것이다. 몇몇 경우들에서, 공지된 구성들 및 부품들은 본 발명의 개념들을 모호하게 하는 것을 방지하기 위해 블럭 다이어그램 형태로 도시된다.
오프-칩 메모리를 구비한 집적 회로의 몇몇 실시예들은 다양한 발명의 개념들을 설명하기 위해 개시될 것이다. 본 명세서에 개시된 적어도 하나의 실시예에 서 칩 상에 집적된 CPU는 상기 구성들과 결합하여 발생되는 레이턴시를 감소시키는 방식으로 메모리 제어기를 통해 오프-칩 메모리와 결합될 수 있다. 당업자는 상기 발명적 개념들이 상기 구성들에 제한되는 것이 아니라 버스 마스터 디바이스가 메모리와 통신하는 임의의 처리 시스템에 적용될 수 있음을 인식할 것이다. 예를 들어, CPU는 온-칩 메모리와 통신하기 위해 본 개시물을 통해 설명된 다양한 발명 개념들을 사용할 수 있다. 선택적으로 개별 프로세서 또는 다른 버스 마스터 디바이스는 개별 메모리와 통신하기 위해 사용될 수 있다.
도 1은 오프-칩 메모리를 구비한 집적 회로(102)를 설명하는 개념적 블럭 다이어그램이다. 오프-칩 메모리는 예를 들면, 메모리, 레지스터들, 브리지, 또는 정보를 검색 및 저장할 수 있는 임의의 다른 디바이스들을 포함하여 다수의 페이지 포맷을 가지는 임의의 저장 디바이스로 구현될 수 있다. 도 1에 도시된 실시예에서, 오프-칩 메모리는 동기식 동적 랜덤 액세스 메모리(SDRAM;104) 및NAND 플래시 메모리(106)를 포함할 수 있다. CPU(108)는 SDRAM 메모리 제어기(110)를 통해 SDRAM(104)에 접속하고, NAND 플래시 제어기(112)를 통해 NAND 플래시 메모리(106)에 접속할 수 있다. CPU(108)는 예를 들면, 마이크로 제어기, 디지털 신호 처리기(DSP), 프로그램가능한 로직 부품, 게이트들 또는 트랜지스터 로직의 조합 또는 임의의 다른 처리 부품들을 포함하여 임의의 처리 부품이 될 수 있다.
집적 회로(102)는 SDRAM 제어기(110) 및 NAND 플래시 제어기(112)에 CPU(108)를 접속하기 위한 시스템 버스(114)를 포함할 수 있다. 시스템 버스(114)는 또한 다양한 발명의 개념들을 모호하게 하는 것을 방지하기 위해 생략될 수 있 는 다양한 다른 집적된 부품들 사이에서 통신을 제공하기 위해 사용될 수 있다. 시스템 버스(114)는 특정 애플리케이션 및 전체 설계 제약들에 따라 결정되는 다양한 방식들로 구성될 수 있다. 예를 들어, 시스템 버스(114)는 포인트-대-포인트 스위칭된 접속 또는 공유 버스로서 구현될 수 있다.
처리 시스템의 일 실시예에서, 버스 마스터 디바이스는 메모리 내에 개방되지 않은 페이지들에 접속하기 위한 프리-페치 명령들을 발생하는데 사용될 수 있다. 예를 들어, 도 1에 도시된 CPU(108)는 시스템 버스(114)를 통해 프리-페치 명령을 SDRAM 제어기로 전송할 수 있다. 프리-페치 명령은 CPU(108)에 의한 데이터에 대한 향후 요청을 예상하여 SDRAM(104)내의 메모리의 페이지에 접속하기 위해 SDRAM 메모리 제어기(110)에 의해 사용될 수 있는 어드레스를 포함할 수 있다. SDRAM 메모리 제어기(110)는 SDRAM(104) 내의 메모리의 페이지를 개방할 수 있거나, 선택적으로 페이지로부터 프리-페치 버퍼로 데이터의 일부분 또는 전부를 판독할 수 있다. 간단한 구성에서, SDRAM 메모리 제어기(110)는 SDRAM(104) 내의 메모리의 페이지를 개방하고, CPU(108)는 페이지가 이미 개방되었다는 사실에 기인하여 낮은 레이턴시가 발생하는 장점을 가질 수 있고, 따라서 SDRAM 메모리 제어기(110)로부터 행 액세스 명령을 필요로 하지 않는다. 선택적인 구성에서, SDRAM 메모리 제어기(110)는 페이지로부터 데이터를 판독하는 프리-페치 버퍼를 구현할 수 있고, 상기 데이터를 프리-페치 버퍼로 저장할 수 있다. 페이지로부터 판독된 데이터량은 미리 결정되거나, 선택적으로 프리-페치 명령과 함께 방송될 수 있다. CPU(108)가 데이터를 판독할 준비가 되면, 프리-페치 버퍼로부터 SDRAM(104)으로부 터 판독하는 것보다 훨씬 낮은 레이턴시로 데이터를 판독할 것이다. CPU(108)가 데이터를 필요로 하지 않는 경우에, 데이터는 CPU를 통해 SDRAM 버스(114)로 전송되지 않고 SDRAM 메모리 제어기(110)에 의해 삭제될 수 있다. SDRAM 메모리 제어기(110)는 CPU(108)가 임의의 개수의 알고리즘들을 사용하는 데이터를 필요로 하지 않는지 결정할 수 있다. 예를 들어, SDRAM 메모리 제어기(110)는 미리 결정된 시간 내에 CPU(108)로부터 판독 요청을 수신하지 않거나 서로 다른 페이지로의 미리 결정된 개수의 판독 요청들을 수신하지 않는 경우에 데이터를 삭제할 수 있다. 선택적으로, SDRAM 메모리 제어기(110)는 프리-페치 버퍼 내에서 데이터에 대한 판독 요청을 수신하기 전에 후속 프리-페치 명령을 수신하는 경우에 데이터를 삭제할 수 있다.
유사한 방식으로, 도 1에 도시된 CPU(108)는 시스템 버스(114)를 통해 NAND 플래시 제어기(112)에 프리-페치 명령을 전송함으로써 NAND 플래시 메모리(106)에 접속할 수 있다. 프리-페치 명령은 NAND 플래시 메모리(106) 내의 개방되지 않은 메모리 페이지에 접속하기 위해 NAND 플래시 제어기(112)에 의해 사용될 수 있는 어드레스를 포함할 수 있다. NAND 플래시 제어기(112)는 후속 판독 요청에 대하여 더 낮은 레이턴시의 장점을 CPU(108)에 제공하기 위해 NAND 플래시 메모리(106) 내에 메모리의 페이지를 간단히 버퍼링할 수 있다. 선택적으로, NAND 플래시 제어기(112)는 CPU(108)에 의한 데이터에 대한 향후 요청을 예상하여 프리-페치 버퍼 내에서 NAND 플래시 메모리 페이지 버퍼로부터의 데이터를 판독할 수 있다. 만약 CPU(108)가 데이터를 필요로 하지 않으면, 데이터는 NAND 플래시 제어기(112)에 의 해 삭제될 수 있다. NAND 플래시 제어기(112)는 SDRAM 제어기 또는 임의의 다른 수단을 사용하여 전술된 것과 동일한 방식으로 CPU(108)가 데이터를 필요로 하지 않는지를 결정한다.
여태까지 설명된 실시예들에서, 메모리 제어기는 SDRAM 메모리 제어기(110)인지, NAND 플래시 제어기(112)인지 아니면 임의의 다른 메모리 제어기인지에 따라 프리-페치 명령에 응답하여 버스 마스터 디바이스에 데이터를 전송하지 않는다. 데이터는 프리-페치 명령에 포함되었던 것과 동일한 어드레스의 버스 마스터 디바이스에 의한 후속 판독 요청에 응답하여 시스템 버스를 통해 전송된다. 또한, 메모리 제어기가 프리-페치 버퍼로 데이터를 판독하거나 프리-페치 명령에 응답하여 메모리 내의 페이지를 개방해야할 필요는 없다. 특정 실시예들에서, 프리-페치 명령은 특정 어드레스가 향후에 요청될 버스 마스터 디바이스로부터의 통지를 더 이상 제공할 필요가 없고, 메모리 제어기가 전송 레이턴시를 감소시키기 위해 수행할 수 있는 동작이 존재하는 경우에 상기 동작을 수행해야 하지만, 상기 동작을 수행해야할 필요는 없다.
집적 회로(102)의 일 실시예에서, 시스템 버스(114)는 어드레스 채널, 기록 채널 및 판독 채널로 구현될 수 있다. 어드레스 채널은 CPU(108)이 적절한 메모리 제어기를 통해 오프-칩 메모리 내의 특정 위치에 접속하는데 사용될 수 있다. 측대역 시그널링은 프리-페치 명령들 뿐만 아니라 CPU(108)가 기록 동작을 요청하는지 아니면 판독 동작을 요청하는지의 여부를 표시하는 다른 제어 신호들을 지원하는데 사용될 수 있다. 기록 채널은 적절한 메모리 제어기를 통해 오프-칩 메모리 에 데이터를 기록하는데 사용될 수 있고, 판독 채널은 적절한 메모리 제어기를 통해 오프-칩 메모리로부터 데이터를 판독하는데 사용될 수 있다. 상기 버스 구조는 공지되어 있다.
집적 회로(102)의 선택적인 실시예에서, 버스 구조는 어드레스 채널을 제거하도록 구성될 수 있다. 상기 개념은 도 2에 설명된다. 어드레스 채널은 기록 채널 뿐만 아니라 "송신 채널"(202)을 재정의함으로써 제거될 수 있다. 송신 채널(202)은 시간 분할 멀티플렉싱 방식으로 CPU(108)와 적절한 메모리 제어기 사이에 정보를 전송하기 위해 범용 매체로서 사용될 수 있다. 상기 정보는 오프-칩 메모리에 기록될 어드레스 정보, 제어 신호들 및 데이터를 포함할 수 있다. 제어 신호의 일 예는 하나의 기록 또는 판독 동작에서 오프-칩 메모리에 기록되거나 판독될 바이트들의 개수를 표시하는 신호이다. 제어 신호의 또다른 예는 송신 채널의 바이트 레인들(lanes) 중 어느 것이 오프-칩 메모리에 기록될 데이터를 전송하는데 사용되는지를 표시하는 신호이다. 예를 들어, 32-비트 송신 채널(202)을 통해 전송된 데이터의 2-바이트들은 4 바이트 레인들 중 2개의 레인들을 필요로 할 것이다. 상기 제어 신호는 송신 채널(202)을 통해 2 바이트 레인들 중 어느 레인이 데이터를 전송하기 위해 사용될 것인지를 적절한 메모리 제어기에 표시하기 위해 사용될 수 있다.
도 2를 참조하여 설명되는 다양한 개념들은 임의의 개수의 프로토콜들을 사용하여 구현될 수 있다. 하기의 상세한 설명에서, 버스 프로토콜의 일 예가 제공될 것이다. 상기 버스 프로토콜은 처리 시스템의 발명의 양상들을 설명하기 위해 제공되며, 상기 발명의 양상들이 임의의 적절한 프로토콜과 함께 사용될 수 있음을 이해하도록 한다. 송신 채널을 위한 기본 시그널링 프로토콜은 하기의 테이블 1에 도시된다. 당업자는 본 명세서에 개시된 버스 구조의 실제 구현에서 신호들을 변경하고 및/또는 신호들을 상기 프로토콜에 부가할 수 있다.
테이블 1
신호 정의 구동 주체
클럭 기준 클럭 신호. 처리 시스템
유효 정보 유효 정보는 송신 채널을 통해 전송된다. CPU
타입(2:0) 송신 채널을 통해 전송된 정보의 타입을 표시. CPU
전송 Ack 메모리 제어기가 송신 채널을 통해 정보를 수신할 수 있음을 표시. 메모리 제어기
송신 채널 CPU에 의해 정보를 전송하도록 구동되는 채널. CPU
동일한 시그널링 프로토콜이 하기의 테이블 2에 도시된 수신 채널을 위해 사용될 수 있다.
테이블 2
신호 정의 구동 주체
클럭 기준 클럭 신호. 처리 시스템
유효 정보 유효 정보는 수신 채널을 통해 전송된다. 메모리 제어기
타입(2:0) 수신 채널을 통해 전송된 정보의 타입을 표시. 메모리 제어기
전송 Ack CPU가 수신 채널을 통해 판독 데이터를 수신할 수 있음을 표시. CPU
수신 채널 수신 부품에 의해 정보를 방송하도록 구동되는 채널. 메모리 제어기
상기 시그널링 프로토콜에서 사용된 타입 필드의 정의는 테이블 3에 도시된다.
테이블 3
타입 값 정의
000 예약됨
001 유효한 기록 어드레스
010 유효한 기록 제어 신호들
011 유효한 기록 데이터
100 유효한 판독 프리-페치 명령
101 유효한 판독 어드레스
110 유효한 판독 제어 신호들
111 유효한 판독 데이터
상기 시그널링 프로토콜에서 유효 정보 및 전송 Ack 신호들의 정의는 테이블 4에 도시된다.
테이블 4
유효 정보; 전송 Ack 정의
0;0 유효 정보는 전송되지 않고, 버스의 다른 단부에서 디바이스는 전송을 수신할 준비가 되어있지 않다.
0;1 유효 정보는 전송되지 않고, 버스의 다른 단부에서 디바이스는 전송을 수신할 준비가 되어있다.
1;0 유효 정보는 전송되고, 버스의 다른 단부에서 디바이스는 정보를 수신할 준비가 되어있지 않다.
1;1 유효 정보는 전송되고, 버스의 다른 단부에서 디바이스는 전송을 수신할 준비가 되어있다.
도 3은 프리-페치 명령이 SDRAM으로부터의 판독 동작에 대한 레이턴시를 감소시키는데 사용될 수 있는 방법의 일 예를 설명하는 타이밍 다이어그램이다. 본 발명의 개념들을 모호하게 하는 것을 방지하기 위해, 도 3에 설명된 예는 단지 판독 동작에 제한된다. 또한, 상기 판독 동작들을 위한 제어 신호들은 도시되지 않는다. 제어 신호들은 버스의 폭을 증가시키고 제어신호들을 전달하는 바이트 레인들을 식별하기 위한 시그널링을 제공함으로써 임의의 주어진 판독 동작에 대한 어드레스 정보와 동시에 송신 채널을 통해 전송될 수 있다.
상기 예에서, SDRAM 내의 개방되지 않은 페이지로부터 데이터를 액세스하기 위한 레이턴시는 7개의 클럭 사이클들이며, 개방된 동일한 페이지로부터 데이터를 액세스하기 위한 레이턴시는 4개의 클럭 사이클들이다. 상기 예에서, 처음 2번의 판독 동작들은 SDRAM 내의 동일한 페이지로부터 발생되고, 3번째 판독 동작은 SDRAM 내의 서로 다른 페이지로부터 발생된다. 프리-페치 명령을 사용함으로써, 3번째 판독 동작의 레이턴시는 7개의 클럭 사이클들로부터 4개의 클럭 사이클들로 감소될 수 있다.
시스템 클럭(302)은 CPU와 SDRAM 사이의 통신들을 동기화하는데 사용될 수 있다. 시스템 클럭(302)은 21개의 클럭 사이클들로 도시되고, 각각의 사이클은 설명을 용이하게 하기 위해 순차적으로 번호가 매겨진다.
메모리의 폐쇄된 페이지 내의 어드레스로부터 제 1 판독 동작은 제 1 클럭 사이클(301) 동안 CPU에 의해 초기화될 수 있다. 이는 유효 신호(304)를 주장하고, 타입 필드(306)를 적절히 세팅하고, 제 1 판독 동작을 위한 어드레스 A0를 송신 채널(308)을 통해 SDRAM 제어기로 전송함으로써 달성될 수 있다. 타입 필드(306)는 SDRAM 제어기가 CPU가 어드레스 A0에서 SDRAM으로부터 판독 동작을 요청하는지 결정하기 위해 사용될 수 있다. 제 1 클럭 사이클(301)의 종료시, CPU는 SDRAM 제어기에 의해 전송 Ack 신호(310)의 주장을 검출하고, 전송이 수신되어 사용되는지를 결정한다.
제 1 판독 동작 요청에 응답하여, SDRAM 제어기는 SDRAM 내에서 적절한 페이지를 개방하여 어드레스 A0로부터 데이터를 판독하기 시작할 수 있다. SDRAM의 레이턴시로 인해, 7개의 클럭 사이클 지연은 데이터가 사용가능하기 전에 경험될 수 있다. 데이터가 사용가능하면, SDRAM 제어기는 유효 신호(312)를 주장할 수 있고, 타입 필드(314)를 수신 채널(316)을 통한 데이터 전송을 시그널링 하도록 세팅할 수 있다. 상기 예에서 데이터 전송은 수신 채널(316)의 대역폭 및 CPU에 의해 요청되는 데이터의 양을 수용하기 위해 4개의 클럭 사이클들을 필요로 한다. 결과적 으로, 데이터는 제 8, 제 9, 제 10 및 제 11 클럭 사이클들(315, 317, 319, 321) 동안 SDRAM 제어기로부터 CPU로 수신 채널(316)을 통해 전송될 수 있다. 상기 클럭 사이클들의 각각의 종료시, SDRAM 제어기는 CPU에 의한 전송 Ack 신호(318)의 주장을 검출하고, 데이터 전송이 수신되어 사용되는지를 결정한다.
제 8 클럭 사이클(315) 동안, 제 2 판독 동작은 제 1 판독 동작을 위해 어드레스 A0를 포함하는 SDRAM의 동일한 페이지로부터 CPU에 의해 요청될 수 있다. 이는 유효 신호(304)를 주장하고, 타입 필드(306)를 적절히 세팅하며, 제 2 판독 동작을 위한 어드레스 A1를 송신 채널(308)을 통해 SDRAM 제어기로 전송함으로써 달성될 수 있다. 타입 필드(306)는 SDRAM 제어기가 CPU가 어드레스 A1에서 SDRAM으로부터 판독 동작을 요청하는지를 결정하기 위해 사용될 수 있다. 제 8 클럭 사이클(315)의 종료시, CPU는 SDRAM 제어기에 의한 전송 Ack 신호(310)의 주장을 검출하고, 상기 전송이 수신되어 사용되는지를 결정한다.
SDRAM 내의 페이지가 이미 개방되기 때문에, SDRAM의 레이턴시는 4개의 사이클들로 감소되어 데이터는 제 12 클럭 사이클(323)의 시작시 전송에 사용할 수 있게 된다. 데이터가 사용가능할 때, SDRAM 제어기는 유효 신호(312)를 주장하고, 타입 필드(314)를 수신 채널(316)을 통해 데이터 전송을 시그널링하도록 세팅한다. 상기 예에서 데이터 전송은 요청된 데이터의 양 및 수신 채널(312)의 대역폭으로 인해 4개의 클럭 사이클을 필요로 하며, 따라서 제 12, 13, 14, 15 클럭 사이클들(323, 325, 327, 329) 동안 수신 채널(316)을 통해 전송될 수 있다. 상기 클럭 사이클들의 각각의 종료시, SDRAM 제어기는 CPU에 의한 전송 Ack 신호(318)의 주장을 검출하며, 데이터 전송이 수신되어 사용되는지를 결정한다.
제 8 클럭 사이클(315) 동안, CPU는 SDRAM내의 서로 다른 페이지로부터의 어드레스 A2로부터 데이터를 필요로 할 것을 예측하고, 결과적으로 제 9 클럭 사이클(317)에서 송신 채널(308)을 통해 프리-페치 명령을 전송한다. 이는 유효 신호(304)를 주장하고, 타입 필드(306)가 프리-페치 명령을 표시하도록 세팅하고, 어드레스 A2를 송신 채널(308)을 통해 SDRAM 제어기로 전송함으로써 달성될 수 있다. 프리-페치 명령에 응답하여, SDRAM 제어기는 제 1 판독 동작 동안 수신 채널(316)을 통해 CPU로 데이터를 전송하는 것과 동시에 SDRAM내의 메모리의 새로운 페이지를 개방하기 시작할 수 있다. 제 9 클럭 사이클(317)의 종료시, CPU는 SDRAM 제어기에 의한 전송 Ack 신호(310)의 주장을 검출하며, 프리-페치 명령이 수신되어 사용되는지를 결정한다.
제 14 클럭 사이클(327) 동안, CPU는 SDRAM내의 어드레스 A2로부터 데이터를 필요로 하는지를 결정하고, 이에 따라 상기 데이터에 대한 판독 요청을 전송한다. 이는 유효 신호(304)를 주장하고, 타입 필드(306)를 적절히 세팅하고, 제 3 판독 동작을 위한 어드레스 A2를 송신 채널(308)을 통해 SDRAM 제어기로 전송함으로써 달성될 수 있다. 타입 필드(306)는 SDRAM 제어기가 CPU가 어드레스 A2에서 SDRAM으로부터 판독 동작을 요청하는지를 결정하는데 사용될 수 있다. 제 14 클럭 사이 클(327)의 종료시, CPU는 전송이 수신되어 사용되는지를 결정한다.
어드레스 A2를 포함하는 SDRAM 내의 메모리의 페이지가 이미 개방되기 때문에, SDRAM의 레이턴시는 4개의 사이클들로 감소되어 데이터는 제 18 클럭 사이클(335)의 시작시 전송에 사용할 수 있게 된다. 데이터가 사용가능할 때, SDRAM 제어기는 유효 신호(312)를 주장하고, 타입 필드(314)를 수신 채널(316)을 통해 데이터 전송을 시그널링하도록 세팅한다. 상기 예에서 데이터 전송은 요청된 데이터의 양 및 수신 채널(316)의 대역폭으로 인해 4개의 클럭 사이클을 필요로 하며, 따라서 제 18, 19, 20, 21 클럭 사이클들(335, 337, 339, 341) 동안 수신 채널(316)을 통해 전송될 수 있다. 상기 클럭 사이클들 각각의 종료시, SDRAM 제어기는 CPU에 의한 전송 Ack 신호(318)의 주장을 검출하며, 데이터 전송이 수신되어 사용되는지를 결정한다.
도 4는 NAND 플래시 메모리로부터 판독 동작의 레이턴시를 감소시키기 위해 프리-페치 명령을 사용하는 방법의 일 예를 도시하는 타이밍 다이어그램이다. SDRAM과 관련하여 프리-페치 명령들을 설명하는데 사용된 것과 유사한 방식으로, 도 4에 도시된 예는 오직 판독 동작들에만 제한되며, 상기 판독 동작들을 위한 제어 신호들은 도시되지 않는다. 제어 신호들은 버스의 대역폭을 증가시키고 제어 신호들을 전달하는 바이트 레인들을 식별하기 위한 시그널링을 제공함으로써 임의의 주어진 판독 동작에 대한 어드레스 정보와 동시에 송신 채널을 통해 전송될 수 있다.
상기 예에서, CPU는 n 사이클들의 레이턴시를 가지는 NAND 플래시 메모리로부터 데이터를 판독할 것이다. 상기 레이턴시는 NAND 플래시 메모리로부터 NAND 플래시 제어기 내에 포함된 큰 판독 버퍼로 일반적으로 512 바이트의 전체 데이터 페이지를 판독하는데 필요한 시간과 동일하다. 대부분의 경우에 초기 레이턴시는 수백개의 클럭 사이클들이 될 수 있다. 만약 CPU가 폐쇄된 페이지로부터의 데이터를 위해 NAND 플래시 제어기에 판독 동작을 요청하면, CPU는 데이터의 새로운 페이지가 NAND 플래시 제어기로 로딩될 때까지 대기하는 동안 지연될 수 있다. 프리-페치 명령을 발행함으로써, NAND 플래시 제어기는 데이터를 판독 버퍼로 판독하고, CPU는 다른 명령들을 실행하는 것을 계속한다. 부가적으로, 수신 채널은 다른 판독 동작들을 위한 CPU로의 데이터 전송에 사용할 수 있다. 이는 수신 채널의 사용을 상당히 개선시킨다.
제 1 클럭 사이클(301) 동안, CPU는 NAND 플래시 메모리 내의 어드레스 A0로부터 데이터를 필요로 하는지를 예측하며, 결과적으로, 송신 채널(308)을 통해 프리-페치 명령을 전송할 수 있다. 이는 유효 신호(304)를 주장하고, 타입 필드(306)를 프리-페치 명령을 표시하도록 세팅하고, 프리-페치 명령에 대한 어드레스 A0를 송신 채널(308)을 통해 NAND 플래시 제어기로 전송함으로써 달성될 수 있다. 프리-페치 명령에 응답하여, NAND 플래시 제어기는 메모리의 새로운 페이지를 NAND 플래시 메모리로부터 NAND 플래시 제어기 내의 판독 버퍼로 로딩하기 시작할 수 있다. 제 1 클럭 사이클(301)의 종료시, CPU는 NAND 플래시 제어기에 의해 전 송 Ack 신호(310)의 주장을 검출하며, 프리-페치 명령이 수신되어 사용되는지를 결정한다.
대부분의 경우에, NAND 플래시 메모리로부터 NAND 플래시 제어기로의 새로운 페이지의 로딩 프로세스는 종료하는데 다수의 사이클들이 소요된다. 상기 기간 동안, CPU는 외부 캐시 또는 외부 메모리들로부터의 명령들을 인출 및 실행하는 것을 계속하면서 NAND 플래시 메모리가 메모리의 새로운 페이지를 NAND 플래시 제어기로 로딩할 때까지 대기한다. 클럭 사이클 n(401)에서, 상기 n은 NAND 플래시 제어기 내의 판독 버퍼를 로딩하는데 걸리는 시간보다 크거나 동일하며, CPU는 유효 신호(304)를 주장하고, 타입 필드(306)를 적절히 세팅하며, 어드레스 A0를 송신 채널(308)을 통해 NAND 플래시 제어기로 전송함으로써 어드레스 A0로부터 판독 동작을 요청할 수 있다. n 클럭 사이클(401)의 종료시, CPU는 NAND 플래시 제어기에 의해 전송 Ack 신호(310)의 주장을 검출하며, 전송이 수신되어 사용되는지를 결정한다.
NAND 플래시 메모리 내의 판독 버퍼가 NAND 플래시 제어기로부터의 메모리의 페이지를 사용하여 이미 로딩하고 있기 때문에, 레이턴시는 CPU가 수신 채널을 통해 NAND 플래시 제어기 내의 버퍼를 판독하는데 필요한 시간으로 감소될 수 있다. 상기 예에서, 판독 레이턴시는 4개의 클럭 사이클들로 감소된다. 결과적으로, 데이터는 CPU가 판독 동작을 요청한 후에 4개의 클럭 사이클들에서 사용가능하다. 데이터가 사용가능하면, NAND 플래시 제어기는 유효 신호(312)를 주장하고, 타입 필드(314)가 수신 채널(316)을 통한 데이터 전송을 시그널링하도록 세팅할 수 있 다. 상기 예에서 데이터 전송은 4개의 클럭 사이클들에서 수신 채널(316)을 통해 전송된다. 상기 클럭 사이클들의 각각의 종료시, NAND 플래시 제어기는 CPU에 의해 전송 Ack 신호(318)의 주장을 검출하며, 데이터 전송이 수신되어 사용되는지를 결정한다.
본 명세서에서 개시된 실시예와 관련하여 다양하게 설명되는 논리 블럭들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 처리기(DSP), 응용 집적 회로(ASIC), 현장 프로그램가능한 게이트 어레이(FPGA), 또는 다른 프로그램가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 요소들, 또는 본 명세서에 개시된 기능을 수행하도록 설계된 그들의 임의의 조합을 사용하여 실행되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서가 될 수 있지만, 선택적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계가 될 수 있다. 프로세서는 또한 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 또는 그 이상의 마이크로프로세서, 또는 임의의 다른 구성과 같은 컴퓨팅 장치들의 조합으로서 실행될 수 있다.
본 명세서에 개시된 실시예와 관련하여 설명되는 방법 또는 알고리즘은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 그들의 조합에서 즉시 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 제거가능한 디스크, CD-ROM 또는 공지된 임의의 다른 저장 매체 형태에 상주할 수 있다. 저장 매체는 저장매체로부터 정보를 판독하고 정보를 기록할 수 있는 프로세서에 접속된다. 선택적으로, 저장 매체는 프로세서의 필수 구성요소이다.
개시된 실시예의 전술된 설명은 당업자가 본 발명을 구현하고 이용하기에 용이하도록 하기 위하여 제공되었다. 이들 실시예에 대한 여러 가지 변형은 당업자에게 자명하며, 여기서 한정된 포괄적인 원리는 본 발명의 사용 없이도 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 설명된 실시예에 한정되는 것이 아니며, 여기에 개시된 원리 및 신규한 특징에 나타낸 가장 넓은 범위에 따르며, 단일 엘리먼트에 대한 참조는 특별히 언급되지 않는 경우에는 "하나 및 단 하나"를 의미하는 것이 아니라 "하나 또는 그 이상"을 의미한다. 당업자에게 공지되거나 공지될 본 개시물을 통해 설명된 다양한 실시예들의 엘리먼트들에 대한 모든 구성적이고 기능적인 등가물들은 참조로서 통합되고 청구항들에 의해 포함되도록 의도된다. 또한, 본 명세서에 개시된 것 중 어느 것도 상기 개시물이 청구항들에 명백하게 언급되는지에 관계없이 공적인 것으로 지정된다. 어떤 청구항의 엘리먼트도 상기 엘리먼트가 구문 "~을 위한 수단"을 사용하여 언급되거나, 방법 청구항에서 상기 엘리먼트가 구문 "~을 위한 단계"를 사용하여 언급되지 않는다면, 35 U.S.C. §112, 6번째 문장의 규정에서 고려되어야 할 필요는 없다.

Claims (33)

  1. 메모리로부터 데이터를 검색하는 방법으로서,
    상기 메모리에서 데이터가 요구될 어드레스를 예측하는 단계;
    상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 단계;
    상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하는 단계; 및
    상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 수신하는 단계를 포함하는 데이터 검색 방법.
  2. 제 1항에 있어서,
    상기 메모리 제어기는 상기 프리-페치 명령에 응답하여 상기 메모리 내의 페이지를 개방하고, 상기 페이지는 상기 예측된 어드레스에서 상기 데이터를 포함하는 것을 특징으로 하는 데이터 검색 방법.
  3. 제 2항에 있어서,
    상기 메모리 제어기는 상기 예측된 어드레스에서 상기 데이터를 포함하는 상기 페이지로부터 상기 데이터의 적어도 일부분을 프리-페치 버퍼로 판독하고, 상기 예측된 어드레스에서 상기 데이터는 상기 판독 요청에 응답하여 상기 프리-페치 버 퍼로부터 수신되는 것을 특징으로 하는 데이터 검색 방법.
  4. 제 3항에 있어서,
    상기 페이지로부터 상기 프리-페치 버퍼로 판독된 상기 데이터의 적어도 일부분의 크기는 미리 결정된 크기인 것을 특징으로 하는 데이터 검색 방법.
  5. 제 3항에 있어서,
    상기 페이지로부터 상기 프리-페치 버퍼로 판독된 상기 데이터의 적어도 일부분의 크기는 상기 프리-페치 명령과 함께 상기 메모리 제어기로 전송되는 것을 특징으로 하는 데이터 검색 방법.
  6. 제 1항에 있어서,
    상기 메모리는 SDRAM을 포함하는 것을 특징으로 하는 데이터 검색 방법.
  7. 제 1항에 있어서,
    상기 메모리는 NAND 플래시 메모리를 포함하는 것을 특징으로 하는 데이터 검색 방법.
  8. 제 1항에 있어서,
    상기 프리-페치 명령 및 상기 판독 요청과 함께 상기 예측된 어드레스를 상 기 메모리 제어기로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 검색 방법.
  9. 제 8항에 있어서,
    상기 예측된 어드레스는 버스의 제 1 채널을 통해 상기 메모리 제어기로 전송되며, 상기 데이터는 상기 버스의 제 2 채널을 통해 상기 판독 요청에 응답하여 수신되는 것을 특징으로 하는 데이터 검색 방법.
  10. 제 9항에 있어서,
    상기 프리-페치 명령 및 상기 판독 요청은 공통 채널을 통해 상기 메모리 제어기로 전송되는 것을 특징으로 하는 데이터 검색 방법.
  11. 제 10항에 있어서,
    상기 프리-페치 명령은 제 1 코드를 포함하고, 상기 판독 요청은 상기 제 1 코드와는 서로 다른 제 2 코드를 포함하는 것을 특징으로 하는 데이터 검색 방법.
  12. 제 9항에 있어서,
    상기 프리-페치 명령 및 상기 판독 요청과 연관된 전송 수식어(qualifier)들을 상기 버스의 상기 제 1 채널을 통해 상기 메모리 제어기로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 검색 방법.
  13. 제 9항에 있어서,
    상기 메모리에 기록될 데이터를 상기 버스의 상기 제 1 채널을 통해 전송하는 단계 및 상기 메모리에 상기 데이터를 기록하기 위한 어드레스를 상기 제 1 버스의 상기 제 1 채널을 통해 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 검색 방법.
  14. 메모리로부터 데이터를 검색하는 방법으로서,
    상기 메모리의 개방되지 않은 페이지에서 데이터가 요구될 어드레스를 예측하는 단계;
    상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 단계;
    상기 예측된 어드레스에서 프리-페치 버퍼로 상기 데이터를 판독하는 단계; 및
    상기 프리-페치 버퍼로부터 상기 데이터를 삭제하는 단계를 포함하는 데이터 검색 방법.
  15. 제 14항에 있어서,
    상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청이 상기 메모리 제어기로 전송되지 않으면 상기 데이터는 상기 메모리의 하나 또는 그 이상의 서로 다른 페이지들로부터 미리 결정된 개수의 데이터에 대한 판독 요청들의 상기 메모리 제어기로의 전송에 응답하여 상기 프리-페치 버퍼로부터 삭제되며, 상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청은 상기 메모리 제어기로 전송되지 않는 것을 특징으로 하는 데이터 검색 방법.
  16. 제 14항에 있어서,
    상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청이 상기 메모리 제어기로 전송되지 않으면 상기 데이터는 미리 결정된 시간 이후에 상기 프리-페치 버퍼로부터 삭제되며, 상기 메모리 제어기는 상기 예측된 어드레스에서 상기 데이터를 포함하는 상기 페이지로부터 상기 데이터의 적어도 일부분을 프리-페치 버퍼로 판독하고, 상기 예측된 어드레스에서 상기 데이터는 상기 판독 요청에 응답하여 상기 프리-페치 버퍼로부터 수신되는 것을 특징으로 하는 데이터 검색 방법.
  17. 제 14항에 있어서,
    상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청이 상기 메모리 제어기로 전송되기 전에 상기 메모리 제어기에 전송된 후속 프리-페치 명령에 응답하여 상기 데이터는 상기 프리-페치 버퍼에 의해 삭제되는 것을 특징으로 하는 데이터 검색 방법.
  18. 메모리;
    메모리 제어기; 및
    상기 메모리에서 데이터가 요구될 어드레스를 예측하고, 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하며, 상기 데이터가 요구되는 경우에 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하도록 구성된 프로세서를 포함하며,
    상기 메모리 제어기는 상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 상기 프로세서로 전달하도록 더 구성되는 처리 시스템.
  19. 제 18항에 있어서,
    상기 메모리 제어기는 상기 프리-페치 명령에 응답하여 상기 메모리 내의 페이지를 개방하도록 더 구성되고, 상기 페이지는 상기 예측된 어드레스에서 상기 데이터를 포함하는 것을 특징으로 하는 처리 시스템.
  20. 제 19항에 있어서,
    프리-페치 버퍼를 더 포함하며, 상기 메모리 제어기는 상기 예측된 어드레스에서 상기 데이터를 포함하는 상기 페이지로부터 상기 데이터의 적어도 일부분을 상기 프리-페치 버퍼로 판독하고, 상기 판독 요청에 응답하여 상기 프리-페치 버퍼 로부터 상기 예측된 어드레스에서의 상기 데이터를 상기 프로세서로 전달하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  21. 제 20항에 있어서,
    상기 페이지로부터 상기 프리-페치 버퍼로 판독된 상기 데이터의 적어도 일부분의 크기는 미리 결정된 크기인 것을 특징으로 하는 처리 시스템.
  22. 제 20항에 있어서,
    상기 프로세서는 상기 페이지로부터 상기 프리-페치 버퍼로 판독될 상기 데이터의 적어도 일부분의 크기를 상기 프리-페치 버퍼로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  23. 제 20항에 있어서,
    상기 프리-페치 버퍼는 상기 메모리 제어기 내에 위치되는 것을 특징으로 하는 처리 시스템.
  24. 제 20항에 있어서,
    상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 상기 판독 요청을 수신하지 않고 상기 메모리 제어기가 상기 프로세서로부터 상기 프리-페치 명령 이후에 상기 메모리의 하나 또는 그 이상의 서로 다른 페이지들로부터 미리 결 정된 개수의 데이터에 대한 판독 요청들을 수신하면, 상기 메모리 제어기는 상기 프리-페치 버퍼 내의 상기 데이터를 삭제하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  25. 제 18항에 있어서,
    상기 메모리는 SDRAM을 포함하는 것을 특징으로 하는 처리 시스템.
  26. 제 18항에 있어서,
    상기 메모리는 NAND 플래시 메모리를 포함하는 것을 특징으로 하는 처리 시스템.
  27. 제 18항에 있어서,
    상기 프로세서는 상기 프리-페치 명령 및 상기 판독 요청과 함께 상기 예측된 어드레스를 상기 메모리 제어기로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  28. 제 27항에 있어서,
    상기 프로세서를 상기 메모리 제어기에 접속하는 버스를 더 포함하며, 상기 버스는 제 1 및 제 2 채널들을 가지고, 상기 프로세서는 상기 버스의 제 1 채널을 통해 상기 예측된 어드레스를 상기 메모리 제어기로 전송하도록 더 구성되고, 상기 메모리 제어기는 상기 버스의 상기 제 2 채널을 통해 상기 데이터를 상기 프로세서에 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  29. 제 28항에 있어서,
    상기 프로세서와 상기 메모리 제어기 사이에 공통 채널을 더 포함하며, 상기 프로세서는 상기 공통 채널을 통해 상기 프리-페치 명령 및 상기 판독 요청을 상기 메모리 제어기로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  30. 제 29항에 있어서,
    상기 프로세서는 상기 프리-페치 명령을 포함하는 제 1 코드 및 상기 판독 요청을 포함하는 제 2 코드를 발생하도록 더 구성되고, 상기 제 1 코드는 상기 제 2 코드와 서로 다른 것을 특징으로 하는 처리 시스템.
  31. 제 28항에 있어서,
    상기 프로세서는 상기 프리-페치 명령 및 상기 판독 요청과 연관된 전송 수식어(qualifier)들을 상기 버스의 상기 제 1 채널을 통해 상기 메모리 제어기로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  32. 제 28항에 있어서,
    상기 프로세서는 상기 메모리에 기록될 데이터를 상기 버스의 상기 제 1 채 널을 통해 전송하고, 상기 메모리에 상기 데이터를 기록하기 위한 어드레스를 상기 제 1 버스의 상기 제 1 채널을 통해 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
  33. 메모리;
    메모리 제어기;
    상기 메모리에서 데이터가 요구될 어드레스를 예측하는 수단;
    상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 수단;
    상기 데이터가 요구되는 경우에 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하는 수단; 및
    상기 데이터를 수신하는 수단을 포함하며, 상기 메모리 제어기는 상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 상기 수신 수단으로 전달하도록 더 구성되는 처리 시스템.
KR1020077006940A 2004-08-27 2005-08-26 버스를 통해 메모리 프리패치 명령들을 전송하기 위한 방법 및 장치 KR100913279B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/929,127 US8028143B2 (en) 2004-08-27 2004-08-27 Method and apparatus for transmitting memory pre-fetch commands on a bus
US10/929,127 2004-08-27

Publications (2)

Publication Number Publication Date
KR20070049676A true KR20070049676A (ko) 2007-05-11
KR100913279B1 KR100913279B1 (ko) 2009-08-21

Family

ID=35517148

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077006940A KR100913279B1 (ko) 2004-08-27 2005-08-26 버스를 통해 메모리 프리패치 명령들을 전송하기 위한 방법 및 장치

Country Status (9)

Country Link
US (1) US8028143B2 (ko)
EP (1) EP1784731A1 (ko)
JP (2) JP2008511925A (ko)
KR (1) KR100913279B1 (ko)
CN (2) CN101048762B (ko)
IL (1) IL181615A0 (ko)
MX (1) MX2007002367A (ko)
TW (1) TWI391819B (ko)
WO (1) WO2006026428A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101228934B1 (ko) * 2007-08-28 2013-02-01 삼성전자주식회사 컴퓨터 시스템, 그 제어 방법 및 데이터 처리 장치

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7209998B2 (en) * 2004-02-04 2007-04-24 Qualcomm Incorporated Scalable bus structure
US7912994B2 (en) * 2006-01-27 2011-03-22 Apple Inc. Reducing connection time for mass storage class peripheral by internally prefetching file data into local cache in response to connection to host
JP2008009702A (ja) * 2006-06-29 2008-01-17 Matsushita Electric Ind Co Ltd 演算処理システム
US7730268B2 (en) * 2006-08-18 2010-06-01 Cypress Semiconductor Corporation Multiprocessor system having an input/output (I/O) bridge circuit for transferring data between volatile and non-volatile memory
US9019285B2 (en) * 2007-03-15 2015-04-28 Renesas Electronics Corporation Semiconductor integrated circuit device
US8275946B1 (en) * 2007-04-19 2012-09-25 Marvell International Ltd. Channel tags in memory components for optimizing logical to physical address translations
JP4643667B2 (ja) * 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
CN101464845B (zh) * 2009-01-09 2012-09-05 威盛电子股份有限公司 用于总线系统的预取装置、预取系统及预取数据方法
US9720859B1 (en) * 2010-04-30 2017-08-01 Mentor Graphics Corporation System, method, and computer program product for conditionally eliminating a memory read request
CN102207916B (zh) * 2011-05-30 2013-10-30 西安电子科技大学 一种基于指令预取的多核共享存储器控制设备
KR101480420B1 (ko) * 2013-02-15 2015-01-13 연세대학교 산학협력단 메모리-디스크 통합 시스템
CN105264501B (zh) * 2013-06-19 2018-06-08 英派尔科技开发有限公司 定位多核处理器中的被高速缓存的数据的方法和装置
US9563551B2 (en) * 2013-06-20 2017-02-07 Silicon Motion, Inc. Data storage device and data fetching method for flash memory
KR101925694B1 (ko) 2013-12-26 2018-12-05 인텔 코포레이션 멀티칩 패키지 링크
KR102507219B1 (ko) * 2016-02-02 2023-03-09 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법
CN106383926A (zh) * 2016-08-29 2017-02-08 北京中电华大电子设计有限责任公司 一种基于Cortex‑M系列处理器的指令预取方法及电路
US10394706B2 (en) * 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US10642502B2 (en) 2018-06-29 2020-05-05 Western Digital Technologies, Inc. System and method for prediction of read commands to non-sequential data
US10649776B2 (en) 2018-06-29 2020-05-12 Western Digital Technologies, Inc. System and method for prediction of multiple read commands directed to non-sequential data
US10846226B2 (en) 2019-01-28 2020-11-24 Western Digital Technologies, Inc. System and method for prediction of random read commands in virtualized multi-queue memory systems
US10896131B2 (en) 2019-01-28 2021-01-19 Western Digital Technologies, Inc. System and method for configuring a storage device based on prediction of host source
US10719445B1 (en) 2019-02-28 2020-07-21 Western Digital Technologies, Inc. System and method for scaling a historical pattern matching data structure in a memory device
US10725781B1 (en) 2019-02-28 2020-07-28 Western Digital Technologies, Inc. System and method for chain prediction of multiple read commands
US11010299B2 (en) 2019-05-20 2021-05-18 Western Digital Technologies, Inc. System and method for performing discriminative predictive read
CN111459857B (zh) * 2020-03-31 2022-04-19 西安微电子技术研究所 一种tcm控制器及数据缓存读取方法
US11416263B1 (en) 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69736680T2 (de) 1997-02-07 2007-10-11 Mitsubishi Denki K.K. System und gerät zur bussteuerung
US5848025A (en) 1997-06-30 1998-12-08 Motorola, Inc. Method and apparatus for controlling a memory device in a page mode
JP3694848B2 (ja) * 1998-05-20 2005-09-14 富士通株式会社 光伝送システム及び光伝送装置
US20020056027A1 (en) * 1998-10-29 2002-05-09 Hiroki Kanai Information processing system
US6389514B1 (en) * 1999-03-25 2002-05-14 Hewlett-Packard Company Method and computer system for speculatively closing pages in memory
KR100342004B1 (ko) 1999-08-06 2002-07-02 다니구찌 이찌로오, 기타오카 다카시 버스제어장치 및 버스제어시스템
US6636927B1 (en) * 1999-09-24 2003-10-21 Adaptec, Inc. Bridge device for transferring data using master-specific prefetch sizes
US6292402B1 (en) * 1999-12-08 2001-09-18 International Business Machines Corporation Prefetch write driver for a random access memory
US6560693B1 (en) * 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US6515672B1 (en) * 1999-12-23 2003-02-04 Intel Corporation Managing prefetching from a data buffer
US6601167B1 (en) * 2000-01-14 2003-07-29 Advanced Micro Devices, Inc. Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program
JP3789722B2 (ja) * 2000-03-31 2006-06-28 三菱電機株式会社 Dramコントロール装置及びdramコントロール方法
JP3873589B2 (ja) 2000-07-12 2007-01-24 株式会社日立製作所 プロセッサシステム
US6988161B2 (en) * 2001-12-20 2006-01-17 Intel Corporation Multiple port allocation and configurations for different port operation modes on a host
US6922767B2 (en) * 2002-10-29 2005-07-26 International Business Machines Corporation System for allowing only a partial value prediction field/cache size
US6938146B2 (en) * 2002-12-19 2005-08-30 International Business Machines Corporation Memory power management using prefetch buffers
US7020762B2 (en) 2002-12-24 2006-03-28 Intel Corporation Method and apparatus for determining a dynamic random access memory page management implementation
JP2005275735A (ja) * 2004-03-24 2005-10-06 Advanet Inc Cpuと記憶装置の間に配置される制御装置及びチップセット

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101228934B1 (ko) * 2007-08-28 2013-02-01 삼성전자주식회사 컴퓨터 시스템, 그 제어 방법 및 데이터 처리 장치

Also Published As

Publication number Publication date
JP2012009048A (ja) 2012-01-12
CN103034476A (zh) 2013-04-10
IL181615A0 (en) 2007-07-04
JP5231612B2 (ja) 2013-07-10
US8028143B2 (en) 2011-09-27
JP2008511925A (ja) 2008-04-17
CN101048762B (zh) 2012-12-26
KR100913279B1 (ko) 2009-08-21
EP1784731A1 (en) 2007-05-16
TW200629064A (en) 2006-08-16
CN103034476B (zh) 2016-07-06
MX2007002367A (es) 2007-05-11
TWI391819B (zh) 2013-04-01
CN101048762A (zh) 2007-10-03
WO2006026428A1 (en) 2006-03-09
US20060047914A1 (en) 2006-03-02

Similar Documents

Publication Publication Date Title
KR100913279B1 (ko) 버스를 통해 메모리 프리패치 명령들을 전송하기 위한 방법 및 장치
US6874044B1 (en) Flash drive/reader with serial-port controller and flash-memory controller mastering a second RAM-buffer bus parallel to a CPU bus
US5544346A (en) System having a bus interface unit for overriding a normal arbitration scheme after a system resource device has already gained control of a bus
AU652707B2 (en) Bus interface logic for computer system having dual bus architecture
US7502896B2 (en) System and method for maintaining the integrity of data transfers in shared memory configurations
US7739425B2 (en) Two channel computer bus architecture
US20070088867A1 (en) Memory controller and data processing system with the same
US7913021B2 (en) Scalable bus structure
US20050097240A1 (en) Supercharge message exchanger
CN114490460B (zh) 一种用于asic的flash控制器及其控制方法
US7822903B2 (en) Single bus command having transfer information for transferring data in a processing system
US6842831B2 (en) Low latency buffer control system and method
US7774513B2 (en) DMA circuit and computer system
US5537609A (en) Mini cache operational module for enhancement to general cache
JP3384770B2 (ja) コマンド・スタッキングを有する高帯域幅で狭い入出力のメモリ装置
US5590286A (en) Method and apparatus for the pipelining of data during direct memory accesses
US20020116561A1 (en) System and method for data transmission
JP2003099324A (ja) マルチメディアプロセッサ用のストリーミングデータキャッシュ
US7039747B1 (en) Selective smart discards with prefetchable and controlled-prefetchable address space
EP1856619B1 (en) Scalable bus structure
US20050188125A1 (en) Method and apparatus for burst mode data transfers between a CPU and a FIFO
JP2001229074A (ja) メモリ制御装置と情報処理装置及びメモリ制御チップ
JPH0628309A (ja) 16ビット幅モードにおいてisaバスとインタフェースする高スピード読出のための8ビット幅ローカルバス上の8ビット幅バッファメモリを使用する方法および装置
US20090248919A1 (en) Method for external fifo acceleration
JP2004240520A (ja) ノンキャッシュ領域内高速メモリアクセス方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
E801 Decision on dismissal of amendment
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120727

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130729

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee