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

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

Info

Publication number
KR100913279B1
KR100913279B1 KR1020077006940A KR20077006940A KR100913279B1 KR 100913279 B1 KR100913279 B1 KR 100913279B1 KR 1020077006940 A KR1020077006940 A KR 1020077006940A KR 20077006940 A KR20077006940 A KR 20077006940A KR 100913279 B1 KR100913279 B1 KR 100913279B1
Authority
KR
South Korea
Prior art keywords
data
memory controller
delete delete
memory
bus
Prior art date
Application number
KR1020077006940A
Other languages
English (en)
Other versions
KR20070049676A (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를 오프-칩 메모리 디바이스에 인터페이스 접속하기 위해 프리패치 명령들을 사용하는 것은 수년간 실현 가능한 해결책을 제공하였다. 그러나 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)가 데이터를 판독할 준비가 되면, 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 클록 사이클(301) 동안 메모리의 폐쇄된 페이지의 어드레스로부터의 제 1 판독 동작이 CPU에 의해 초기화될 수 있다. 이는 유효 신호(304)를 선언(assert)하고, 타입 필드(306)를 적절히 세팅하고, 제 1 판독 동작을 위한 어드레스 A0를 송신 채널(308)을 통해 SDRAM 제어기로 전송함으로써 달성될 수 있다. 타입 필드(306)는 CPU가 어드레스 A0에서 SDRAM으로부터 판독 동작을 요청하고 있는지 결정하기 위해 SDRAM 제어기에 의해 사용될 수 있다. 제 1 클록 사이클(301)의 종료시, CPU는 SDRAM 제어기에 의한 전송 Ack 신호(310)의 선언을 검출하고, 전송이 수신 및 수락되었다고 판단한다.
제 1 판독 동작 요청에 응답하여, SDRAM 제어기는 SDRAM에서 적절한 페이지를 개방하여 어드레스 A0로부터 데이터를 판독하기 시작할 수 있다. SDRAM의 레이턴시로 인해, 데이터가 사용 가능해지기 전에 7개의 클록 사이클 지연이 발생할 수 있다. 데이터가 사용 가능해지면, SDRAM 제어기는 유효 신호(312)를 선언할 수 있고, 수신 채널(316)을 통한 데이터 전송을 시그널링 하도록 타입 필드(314)를 세팅할 수 있다. 이 예에서 데이터 전송은 수신 채널(316)의 대역폭 및 CPU에 의해 요청되는 데이터의 양을 수용하기 위해 4개의 클록 사이클을 필요로 한다. 결과적으로, 데이터는 제 8, 제 9, 제 10 및 제 11 클록 사이클(315, 317, 319, 321) 동안 수신 채널(316)을 통해 SDRAM 제어기로부터 CPU로 전송될 수 있다. 상기 클록 사이클들의 각각의 종료시, SDRAM 제어기는 CPU에 의한 전송 Ack 신호(318)의 선언을 검출하고, 데이터 전송이 수신되어 사용되는지를 결정한다.
제 8 클록 사이클(315) 동안, 제 1 판독 동작을 위해 어드레스 A0를 포함하는 SDRAM의 동일한 페이지로부터 제 2 판독 동작이 CPU에 의해 요청될 수 있다. 이는 유효 신호(304)를 선언하고, 타입 필드(306)를 적절히 세팅하며, 제 2 판독 동작을 위한 어드레스 A1을 송신 채널(308)을 통해 SDRAM 제어기로 전송함으로써 달성될 수 있다. CPU가 어드레스 A1에서 SDRAM으로부터 판독 동작을 요청하는지를 결정하기 위해 SDRAM 제어기에 의해 타입 필드(306)가 사용될 수 있다. 제 8 클록 사이클(315)의 종료시, CPU는 SDRAM 제어기에 의한 전송 Ack 신호(310)의 선언을 검출하고, 상기 전송이 수신되어 사용되는지를 결정한다.
SDRAM의 페이지가 이미 개방되어 있기 때문에, SDRAM의 레이턴시는 4개의 사이클로 감소하여 데이터는 제 12 클록 사이클(323)의 시작시 전송에 사용할 수 있게 된다. 데이터가 사용 가능할 때, SDRAM 제어기는 유효 신호(312)를 선언하고, 수신 채널(316)을 통해 데이터 전송을 시그널링하도록 타입 필드(314)를 세팅한다. 이 예에서 데이터 전송은 요청된 데이터의 양 및 수신 채널(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)를 선언하고, 수신 채널(316)을 통한 데이터 전송을 시그널링하도록 타입 필드(314)를 세팅할 수 있다. 이 예에서 데이터 전송은 4개의 클록 사이클에서 수신 채널(316)을 통해 전송된다. 상기 클록 사이클들의 각각의 종료시, NAND 플래시 제어기는 CPU에 의해 전송 Ack 신호(318)의 선언을 검출하며, 데이터 전송이 수신 및 수락되었다고 판단한다.
본 명세서에서 개시된 실시예와 관련하여 다양하게 설명되는 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 처리기(DSP), 응용 집적 회로(ASIC), 현장 프로그래밍 가능한 게이트 어레이(FPGA), 또는 다른 프로그래밍 가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 요소들, 또는 본 명세서에 개시된 기능을 수행하도록 설계된 그들의 임의의 조합을 사용하여 실행되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서가 될 수 있지만, 선택적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 기계가 될 수 있다. 프로세서는 또한 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합된 하나 또는 그 이상의 마이크로프로세서, 또는 임의의 다른 구성과 같은 컴퓨팅 장치들의 조합으로서 실행될 수 있다.
본 명세서에 개시된 실시예와 관련하여 설명되는 방법 또는 알고리즘은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 그들의 조합에서 즉시 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 제거가능한 디스크, CD-ROM 또는 공지된 임의의 다른 저장 매체 형태에 상주할 수 있다. 저장 매체는 저장매체로부터 정보를 판독하고 정보를 기록할 수 있는 프로세서에 접속된다. 선택적으로, 저장 매체는 프로세서의 필수 구성요소이다.
개시된 실시예의 전술된 설명은 당업자가 본 발명을 구현하고 이용하기에 용이하도록 하기 위하여 제공되었다. 이들 실시예에 대한 여러 가지 변형은 당업자에게 자명하며, 여기서 한정된 포괄적인 원리는 본 발명의 사용 없이도 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 설명된 실시예에 한정되는 것이 아니며, 여기에 개시된 원리 및 신규한 특징에 나타낸 가장 넓은 범위에 따르며, 단일 엘리먼트에 대한 참조는 특별히 언급되지 않는 경우에는 "하나 및 단 하나"를 의미하는 것이 아니라 "하나 또는 그 이상"을 의미한다. 당업자에게 공지되거나 공지될 본 개시물을 통해 설명된 다양한 실시예들의 엘리먼트들에 대한 모든 구성적이고 기능적인 등가물들은 참조로서 통합되고 청구항들에 의해 포함되도록 의도된다. 또한, 본 명세서에 개시된 것 중 어느 것도 상기 개시물이 청구항들에 명백하게 언급되는지에 관계없이 공적인 것으로 지정된다. 어떤 청구항의 엘리먼트도 상기 엘리먼트가 구문 "~을 위한 수단"을 사용하여 언급되거나, 방법 청구항에서 상기 엘리먼트가 구문 "~을 위한 단계"를 사용하여 언급되지 않는다면, 35 U.S.C. §112, 6번째 문장의 규정에서 고려되어야 할 필요는 없다.

Claims (58)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 버스를 통해 제 1 명령을 전송하는 단계 - 상기 제 1 명령은 프로세서에 의해 전송되며 데이터의 메모리 어드레스 및 제 1 타입 코드를 포함하고, 상기 데이터는 상기 제 1 명령에 응답하여 상기 프로세서에 의해 수신되는 것은 아님 -;
    상기 버스를 통해 제 2 명령을 전송하는 단계 - 상기 제 2 명령은 상기 메모리 어드레스 및 제 2 타입 코드를 포함하고, 상기 제 1 타입 코드는 상기 제 1 명령을 프리패치 요청으로서 식별하고 상기 제 2 타입 코드는 상기 제 2 명령을 판독 요청으로서 식별함 -; 및
    상기 프로세서에서 상기 판독 요청에 응답하여 상기 데이터를 수신하는 단계를 포함하는, 방법.
  35. 제 34 항에 있어서,
    상기 메모리 어드레스는 상기 버스의 송신 채널을 통해 전송되며, 상기 제 1 타입 코드는 제 1 측대역 신호이고 상기 제 2 타입 코드는 제 2 측대역 신호인 것을 특징으로 하는 방법.
  36. 제 34 항에 있어서,
    상기 제 1 명령은 메모리로부터 데이터를 검색(retrieve)하여 메모리 제어기의 버퍼에 저장하도록 구성된 메모리 제어기로 전송되고, 상기 메모리 제어기는 미리 결정된 시간 내에 상기 메모리 제어기가 상기 제 2 명령을 수신하지 않을 때 또는 상기 데이터를 요청하지 않는 미리 결정된 수의 판독 요청들이 상기 메모리 제어기에 수신된 후 상기 데이터를 폐기하도록 구성되는 것을 특징으로 하는 방법.
  37. 제 36 항에 있어서,
    상기 제 1 명령 및 상기 제 2 명령은 상기 버스의 송신 채널을 통해 시분할 다중화 방식으로 전송되는 것을 특징으로 하는 방법.
  38. 제 37 항에 있어서,
    상기 송신 채널은 다수의 바이트 레인(lane)들을 포함하고, 상기 제 1 명령 및 상기 제 2 명령 중 적어도 하나는 상기 다수의 바이트 레인들 전부보다 적은 바이트 레인들에서 전송되며, 상기 제 1 명령 및 상기 제 2 제 2 명령 중 적어도 하나는 상기 다수의 바이트 레인들 중 어느 바이트 레인들이 상기 메모리 제어기에 정보를 전송하는데 사용될지를 상기 메모리 제어기에 지시하는 제어 신호를 포함하는 것을 특징으로 하는 방법.
  39. 시스템으로서,
    데이터를 처리하는 수단; 및
    프리-패치 명령에 응답하여 메모리로부터 검색된 데이터를 저장하는 수단을 포함하며,
    상기 데이터를 저장하는 수단은 시스템 버스를 통해 상기 데이터 처리 수단에 액세스할 수 있고,
    상기 데이터를 저장하는 수단은 미리 결정된 시간 내에 상기 처리 수단으로부터 상기 데이터에 대한 판독 명령이 수신되지 않으면 상기 데이터를 폐기하도록 구성되는, 시스템.
  40. 제 39 항에 있어서,
    상기 데이터를 저장하는 수단은 메모리 제어기의 버퍼를 포함하는 것을 특징으로 하는 시스템.
  41. 제 40 항에 있어서,
    상기 메모리 제어기는 타입 코드를 포함하는 측대역 신호를 수신하도록 구성되고, 상기 메모리 제어기는 상기 타입 코드를 이용하여 상기 판독 명령으로부터 상기 프리패치 명령을 구분하도록 구성되는 것을 특징으로 하는 시스템.
  42. 제 40 항에 있어서,
    상기 메모리 제어기는 상기 처리 수단으로부터 상기 시스템 버스의 하나 이상의 바이트 레인들을 식별하는 제어 신호의 수신에 응답하여 상기 하나 이상의 바이트 레인들을 통해 상기 처리 수단으로부터 데이터를 수신하도록 구성되는 것을 특징으로 하는 시스템.
  43. 제 39 항에 있어서,
    상기 프리패치 명령은 상기 시스템 버스를 통해 시분할 다중화 방식으로 전송되는 것을 특징으로 하는 시스템.
  44. 시스템으로서,
    버퍼를 포함하는 메모리 제어기를 포함하며,
    상기 메모리 제어기는 메모리의 페이지로부터의 데이터를 프로세서로부터 상기 데이터에 대한 프리패치 요청의 수신에 응답하여 상기 버퍼에 저장하도록 구성되고, 상기 메모리 제어기는 상기 데이터에 대한 판독 요청에 응답하여 상기 버퍼에 저장된 데이터를 상기 프로세서에 전송하도록 구성되며, 상기 메모리 제어기는 또한 상기 데이터에 대한 판독 요청의 수신 전에 상기 프로세서로부터 다른 페이지에 대한 미리 결정된 수의 판독 요청들이 수신되면 상기 버퍼에 저장된 데이터를 폐기하도록 구성되는, 시스템.
  45. 제 44 항에 있어서,
    상기 메모리 제어기는 또한 미리 결정된 양의 시간 내에 상기 메모리 제어기가 상기 프로세서로부터 판독 요청을 수신하지 않으면 상기 버퍼에 저장된 데이터를 폐기하도록 구성되는 것을 특징으로 하는 시스템.
  46. 제 44 항에 있어서,
    상기 프로세서와 상기 메모리 제어기 사이에 명령들 및 데이터를 전달하는 시분할 다중화된 송신 채널을 더 포함하는 것을 특징으로 하는 시스템.
  47. 제 46 항에 있어서,
    상기 시분할 다중화된 송신 채널은 다수의 바이트 레인들을 포함하고, 상기 메모리 제어기는 오프-칩 메모리에 기록될 데이터를 전송하는데 사용될 상기 다수의 바이트 레인들 중 하나 이상을 식별하는 제어 신호를 수신하도록 구성되는 것을 특징으로 하는 시스템.
  48. 제 44 항에 있어서,
    상기 메모리 제어기는 또한 측대역 신호를 통해 상기 메모리 제어기에 수신되는 타입 코드를 이용하여 상기 프로세서로부터 수신된 명령의 타입을 식별하도록 구성되는 것을 특징으로 하는 시스템.
  49. 버스를 통해 메모리 제어기에 특정 메모리 어드레스를 전송하는 동시에 제 1 측대역 신호를 통해 상기 메모리 제어기에 제 1 타입 코드를 전송하는 단계;
    상기 버스를 통해 상기 메모리 제어기에 상기 특정 메모리 어드레스를 전송하는 동시에 제 2 측대역 신호를 통해 상기 메모리 제어기에 제 2 타입 코드를 전송하는 단계;
    상기 제 1 측대역 신호가 아니라 상기 제 2 측대역 신호에 응답하여 상기 버스를 통해 프로세서에서 상기 메모리 제어기로부터 상기 특정 메모리 어드레스와 관련된 정보를 수신하는 단계; 및
    상기 버스를 통해 상기 메모리 제어기에 데이터를 전송하는 단계를 포함하며,
    상기 어드레스 및 상기 데이터는 상기 버스의 단일 채널을 통해 상기 메모리 제어기로 전송되고, 상기 어드레스의 전송 및 상기 데이터의 전송은 시분할 다중화 방식으로 수행되는, 방법.
  50. 제 49 항에 있어서,
    상기 버스는 다수의 바이트 레인들을 포함하고, 상기 데이터는 상기 다수의 바이트 레인들 전부가 아닌 일부를 통해 상기 메모리 제어기로 전송되며, 상기 방법은,
    상기 데이터를 전송하는 바이트 레인들을 식별하는 제어 신호를 상기 메모리 제어기에 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  51. 제 50 항에 있어서,
    상기 어드레스가 전송될 때 유효 신호를 선언하는 단계; 및
    상기 메모리 제어기에 수신되는 어드레스에 응답하여 상기 메모리 제어기로부터 전송 확인 신호를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  52. 삭제
  53. 제 49 항에 있어서,
    상기 메모리 제어기는 상기 제 1 측대역 신호에 응답하여 상기 특정 메모리 어드레스와 관련된 정보를 프리패치 버퍼에 저장하고, 상기 제 1 측대역 신호가 전송된 후 미리 결정된 시간 주기 내에 상기 제 2 측대역 신호가 전송되면 상기 정보가 상기 프리패치 버퍼로부터 상기 프로세서에 수신되고, 상기 제 1 측대역 신호가 전송된 후의 상기 미리 결정된 시간 주기가 지난 후 상기 제 2 측대역 신호가 전송되면 상기 정보가 메모리 디바이스로부터 상기 프로세서에 수신되는 것을 특징으로 하는 방법.
  54. 시스템으로서,
    다수의 바이트 레인(lane)들을 갖는 버스에 연결된 메모리 제어기를 포함하며,
    상기 메모리 제어기는 상기 버스를 통해 제어 신호를 수신하도록 구성되고, 상기 제어 신호는 상기 메모리 제어기에 데이터를 전송하는데 사용될 상기 다수의 바이트 레인들 중 전부가 아닌 적어도 하나의 바이트 레인들을 지시하며, 상기 메모리 제어기는 또한 상기 제어 신호에 응답하여 상기 전부가 아닌 적어도 하나의 바이트 레인들로부터 상기 데이터를 수신하도록 구성되는, 시스템.
  55. 제 54 항에 있어서,
    상기 메모리 제어기는 프리패치 요청에 응답하여 메모리로부터 검색된 데이터를 저장하는 버퍼를 포함하며, 상기 메모리 제어기는 상기 프리패치 요청을 수신한 후 미리 결정된 시간 동안 상기 메모리로부터 검색된 데이터를 상기 버퍼에 저장하도록 구성되는 것을 특징으로 하는 시스템.
  56. 제 54 항에 있어서,
    상기 버스는 제 1 데이터 및 명령들을 프로세서로부터 상기 메모리 제어기로 전송하는 시분할 다중화된 송신 채널을 포함하고, 제 2 데이터 및 명령들을 상기 메모리 제어기로부터 상기 프로세서로 전송하는 수신 채널을 더 포함하는 것을 특징으로 하는 시스템.
  57. 제 54 항에 있어서,
    상기 버스는 4개의 바이트 레인들을 갖는 송신 채널을 포함하는 것을 특징으로 하는 시스템.
  58. 제 57 항에 있어서,
    상기 제어 신호는 프로세서로부터 상기 메모리 제어기로 데이터를 전송하는데 사용될 상기 송신 채널의 상기 4개의 바이트 레인들 중 2개를 식별하는 것을 특징으로 하는 시스템.
KR1020077006940A 2004-08-27 2005-08-26 버스를 통해 메모리 프리패치 명령들을 전송하기 위한 방법 및 장치 KR100913279B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20070049676A KR20070049676A (ko) 2007-05-11
KR100913279B1 true 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
KR101480420B1 (ko) * 2013-02-15 2015-01-13 연세대학교 산학협력단 메모리-디스크 통합 시스템

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
KR101228934B1 (ko) * 2007-08-28 2013-02-01 삼성전자주식회사 컴퓨터 시스템, 그 제어 방법 및 데이터 처리 장치
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 西安电子科技大学 一种基于指令预取的多核共享存储器控制设备
WO2014204495A1 (en) * 2013-06-19 2014-12-24 Empire Technology Development, Llc Locating cached data in a multi-core processor
US9563551B2 (en) * 2013-06-20 2017-02-07 Silicon Motion, Inc. Data storage device and data fetching method for flash memory
DE112013007734B4 (de) * 2013-12-26 2023-03-30 Intel Corporation Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000070846A (ko) * 1999-08-06 2000-11-25 다니구찌 이찌로오, 기타오카 다카시 버스제어장치 및 버스제어시스템

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1014271B1 (en) 1997-02-07 2006-09-13 Mitsubishi Denki Kabushiki Kaisha Bus controller and bus control system
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
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と記憶装置の間に配置される制御装置及びチップセット

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000070846A (ko) * 1999-08-06 2000-11-25 다니구찌 이찌로오, 기타오카 다카시 버스제어장치 및 버스제어시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101480420B1 (ko) * 2013-02-15 2015-01-13 연세대학교 산학협력단 메모리-디스크 통합 시스템

Also Published As

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

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
US7502896B2 (en) System and method for maintaining the integrity of data transfers in shared memory configurations
US5283883A (en) Method and direct memory access controller for asynchronously reading/writing data from/to a memory with improved throughput
JP3534822B2 (ja) キャッシュラインリプレーシング装置及び方法
US20070088867A1 (en) Memory controller and data processing system with the same
US7739425B2 (en) Two channel computer bus architecture
US7913021B2 (en) Scalable bus structure
US7822903B2 (en) Single bus command having transfer information for transferring data in a processing system
WO2013176912A1 (en) Flash memory controller
TWI534615B (zh) 串列周邊介面控制器、串列周邊介面快閃記憶體及其存取方法和存取控制方法
US7424562B2 (en) Intelligent PCI bridging consisting of prefetching data based upon descriptor data
JP3384770B2 (ja) コマンド・スタッキングを有する高帯域幅で狭い入出力のメモリ装置
US7039747B1 (en) Selective smart discards with prefetchable and controlled-prefetchable address space
KR20150093461A (ko) 시스템 인터커넥트 및 시스템 인터커넥트의 동작 방법
JP2001229074A (ja) メモリ制御装置と情報処理装置及びメモリ制御チップ
JP2004240520A (ja) ノンキャッシュ領域内高速メモリアクセス方法
JPH0628309A (ja) 16ビット幅モードにおいてisaバスとインタフェースする高スピード読出のための8ビット幅ローカルバス上の8ビット幅バッファメモリを使用する方法および装置
EP1067555A1 (en) Memory controller and an information processing apparatus having such a memory controller
JPH06266638A (ja) 半導体記憶装置
JP2000187635A (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