KR20070049676A - 버스를 통해 메모리 프리-페치 명령들을 전송하기 위한방법 및 장치 - Google Patents
버스를 통해 메모리 프리-페치 명령들을 전송하기 위한방법 및 장치 Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 202
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012545 processing Methods 0.000 claims abstract description 13
- 230000005540 biological transmission Effects 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 19
- 238000012546 transfer Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 8
- 230000011664 signaling Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address 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
본 발명은 일반적으로 디지털 시스템들에 관한 것이며, 특히 처리 시스템에서 버스를 통해 메모리 프리-페치 명령들을 전송하기 위한 방법 및 장치들에 관한 것이다.
집적 회로들은 개별 디바이스들을 사용하여 구현하기에 어렵거나 불가능했던 새로운 애플리케이션들을 가능하게 함으로써 전자 산업에 혁명을 일으켰다. 집적 기술은 수 백만개의 전자 부품들로 구성된 복잡한 회로들이 반도체 재료로 이루어진 단일 칩으로 패키지화되도록 한다. 결과적으로, 컴퓨터들, 셀룰러 전화기들, 개인 디지털 보조장치(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항에 있어서,상기 메모리 제어기는 상기 예측된 어드레스에서 상기 데이터를 포함하는 상기 페이지로부터 상기 데이터의 적어도 일부분을 프리-페치 버퍼로 판독하고, 상기 예측된 어드레스에서 상기 데이터는 상기 판독 요청에 응답하여 상기 프리-페치 버 퍼로부터 수신되는 것을 특징으로 하는 데이터 검색 방법.
- 제 3항에 있어서,상기 페이지로부터 상기 프리-페치 버퍼로 판독된 상기 데이터의 적어도 일부분의 크기는 미리 결정된 크기인 것을 특징으로 하는 데이터 검색 방법.
- 제 3항에 있어서,상기 페이지로부터 상기 프리-페치 버퍼로 판독된 상기 데이터의 적어도 일부분의 크기는 상기 프리-페치 명령과 함께 상기 메모리 제어기로 전송되는 것을 특징으로 하는 데이터 검색 방법.
- 제 1항에 있어서,상기 메모리는 SDRAM을 포함하는 것을 특징으로 하는 데이터 검색 방법.
- 제 1항에 있어서,상기 메모리는 NAND 플래시 메모리를 포함하는 것을 특징으로 하는 데이터 검색 방법.
- 제 1항에 있어서,상기 프리-페치 명령 및 상기 판독 요청과 함께 상기 예측된 어드레스를 상 기 메모리 제어기로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 검색 방법.
- 제 8항에 있어서,상기 예측된 어드레스는 버스의 제 1 채널을 통해 상기 메모리 제어기로 전송되며, 상기 데이터는 상기 버스의 제 2 채널을 통해 상기 판독 요청에 응답하여 수신되는 것을 특징으로 하는 데이터 검색 방법.
- 제 9항에 있어서,상기 프리-페치 명령 및 상기 판독 요청은 공통 채널을 통해 상기 메모리 제어기로 전송되는 것을 특징으로 하는 데이터 검색 방법.
- 제 10항에 있어서,상기 프리-페치 명령은 제 1 코드를 포함하고, 상기 판독 요청은 상기 제 1 코드와는 서로 다른 제 2 코드를 포함하는 것을 특징으로 하는 데이터 검색 방법.
- 제 9항에 있어서,상기 프리-페치 명령 및 상기 판독 요청과 연관된 전송 수식어(qualifier)들을 상기 버스의 상기 제 1 채널을 통해 상기 메모리 제어기로 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 검색 방법.
- 제 9항에 있어서,상기 메모리에 기록될 데이터를 상기 버스의 상기 제 1 채널을 통해 전송하는 단계 및 상기 메모리에 상기 데이터를 기록하기 위한 어드레스를 상기 제 1 버스의 상기 제 1 채널을 통해 전송하는 단계를 더 포함하는 것을 특징으로 하는 데이터 검색 방법.
- 메모리로부터 데이터를 검색하는 방법으로서,상기 메모리의 개방되지 않은 페이지에서 데이터가 요구될 어드레스를 예측하는 단계;상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 단계;상기 예측된 어드레스에서 프리-페치 버퍼로 상기 데이터를 판독하는 단계; 및상기 프리-페치 버퍼로부터 상기 데이터를 삭제하는 단계를 포함하는 데이터 검색 방법.
- 제 14항에 있어서,상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청이 상기 메모리 제어기로 전송되지 않으면 상기 데이터는 상기 메모리의 하나 또는 그 이상의 서로 다른 페이지들로부터 미리 결정된 개수의 데이터에 대한 판독 요청들의 상기 메모리 제어기로의 전송에 응답하여 상기 프리-페치 버퍼로부터 삭제되며, 상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청은 상기 메모리 제어기로 전송되지 않는 것을 특징으로 하는 데이터 검색 방법.
- 제 14항에 있어서,상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청이 상기 메모리 제어기로 전송되지 않으면 상기 데이터는 미리 결정된 시간 이후에 상기 프리-페치 버퍼로부터 삭제되며, 상기 메모리 제어기는 상기 예측된 어드레스에서 상기 데이터를 포함하는 상기 페이지로부터 상기 데이터의 적어도 일부분을 프리-페치 버퍼로 판독하고, 상기 예측된 어드레스에서 상기 데이터는 상기 판독 요청에 응답하여 상기 프리-페치 버퍼로부터 수신되는 것을 특징으로 하는 데이터 검색 방법.
- 제 14항에 있어서,상기 메모리 내의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청이 상기 메모리 제어기로 전송되기 전에 상기 메모리 제어기에 전송된 후속 프리-페치 명령에 응답하여 상기 데이터는 상기 프리-페치 버퍼에 의해 삭제되는 것을 특징으로 하는 데이터 검색 방법.
- 메모리;메모리 제어기; 및상기 메모리에서 데이터가 요구될 어드레스를 예측하고, 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하며, 상기 데이터가 요구되는 경우에 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하도록 구성된 프로세서를 포함하며,상기 메모리 제어기는 상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 상기 프로세서로 전달하도록 더 구성되는 처리 시스템.
- 제 18항에 있어서,상기 메모리 제어기는 상기 프리-페치 명령에 응답하여 상기 메모리 내의 페이지를 개방하도록 더 구성되고, 상기 페이지는 상기 예측된 어드레스에서 상기 데이터를 포함하는 것을 특징으로 하는 처리 시스템.
- 제 19항에 있어서,프리-페치 버퍼를 더 포함하며, 상기 메모리 제어기는 상기 예측된 어드레스에서 상기 데이터를 포함하는 상기 페이지로부터 상기 데이터의 적어도 일부분을 상기 프리-페치 버퍼로 판독하고, 상기 판독 요청에 응답하여 상기 프리-페치 버퍼 로부터 상기 예측된 어드레스에서의 상기 데이터를 상기 프로세서로 전달하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 제 20항에 있어서,상기 페이지로부터 상기 프리-페치 버퍼로 판독된 상기 데이터의 적어도 일부분의 크기는 미리 결정된 크기인 것을 특징으로 하는 처리 시스템.
- 제 20항에 있어서,상기 프로세서는 상기 페이지로부터 상기 프리-페치 버퍼로 판독될 상기 데이터의 적어도 일부분의 크기를 상기 프리-페치 버퍼로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 제 20항에 있어서,상기 프리-페치 버퍼는 상기 메모리 제어기 내에 위치되는 것을 특징으로 하는 처리 시스템.
- 제 20항에 있어서,상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 상기 판독 요청을 수신하지 않고 상기 메모리 제어기가 상기 프로세서로부터 상기 프리-페치 명령 이후에 상기 메모리의 하나 또는 그 이상의 서로 다른 페이지들로부터 미리 결 정된 개수의 데이터에 대한 판독 요청들을 수신하면, 상기 메모리 제어기는 상기 프리-페치 버퍼 내의 상기 데이터를 삭제하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 제 18항에 있어서,상기 메모리는 SDRAM을 포함하는 것을 특징으로 하는 처리 시스템.
- 제 18항에 있어서,상기 메모리는 NAND 플래시 메모리를 포함하는 것을 특징으로 하는 처리 시스템.
- 제 18항에 있어서,상기 프로세서는 상기 프리-페치 명령 및 상기 판독 요청과 함께 상기 예측된 어드레스를 상기 메모리 제어기로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 제 27항에 있어서,상기 프로세서를 상기 메모리 제어기에 접속하는 버스를 더 포함하며, 상기 버스는 제 1 및 제 2 채널들을 가지고, 상기 프로세서는 상기 버스의 제 1 채널을 통해 상기 예측된 어드레스를 상기 메모리 제어기로 전송하도록 더 구성되고, 상기 메모리 제어기는 상기 버스의 상기 제 2 채널을 통해 상기 데이터를 상기 프로세서에 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 제 28항에 있어서,상기 프로세서와 상기 메모리 제어기 사이에 공통 채널을 더 포함하며, 상기 프로세서는 상기 공통 채널을 통해 상기 프리-페치 명령 및 상기 판독 요청을 상기 메모리 제어기로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 제 29항에 있어서,상기 프로세서는 상기 프리-페치 명령을 포함하는 제 1 코드 및 상기 판독 요청을 포함하는 제 2 코드를 발생하도록 더 구성되고, 상기 제 1 코드는 상기 제 2 코드와 서로 다른 것을 특징으로 하는 처리 시스템.
- 제 28항에 있어서,상기 프로세서는 상기 프리-페치 명령 및 상기 판독 요청과 연관된 전송 수식어(qualifier)들을 상기 버스의 상기 제 1 채널을 통해 상기 메모리 제어기로 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 제 28항에 있어서,상기 프로세서는 상기 메모리에 기록될 데이터를 상기 버스의 상기 제 1 채 널을 통해 전송하고, 상기 메모리에 상기 데이터를 기록하기 위한 어드레스를 상기 제 1 버스의 상기 제 1 채널을 통해 전송하도록 더 구성되는 것을 특징으로 하는 처리 시스템.
- 메모리;메모리 제어기;상기 메모리에서 데이터가 요구될 어드레스를 예측하는 수단;상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 프리-페치 명령을 메모리 제어기로 전송하는 수단;상기 데이터가 요구되는 경우에 상기 메모리의 상기 예측된 어드레스에서 상기 데이터에 대한 판독 요청을 상기 메모리 제어기로 전송하는 수단; 및상기 데이터를 수신하는 수단을 포함하며, 상기 메모리 제어기는 상기 판독 요청에 응답하여 상기 메모리의 상기 예측된 어드레스에서 상기 데이터를 상기 수신 수단으로 전달하도록 더 구성되는 처리 시스템.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101228934B1 (ko) * | 2007-08-28 | 2013-02-01 | 삼성전자주식회사 | 컴퓨터 시스템, 그 제어 방법 및 데이터 처리 장치 |
Families Citing this family (26)
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)
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と記憶装置の間に配置される制御装置及びチップセット |
-
2004
- 2004-08-27 US US10/929,127 patent/US8028143B2/en not_active Expired - Fee Related
-
2005
- 2005-08-26 JP JP2007530160A patent/JP2008511925A/ja not_active Withdrawn
- 2005-08-26 CN CN2005800371547A patent/CN101048762B/zh not_active Expired - Fee Related
- 2005-08-26 MX MX2007002367A patent/MX2007002367A/es active IP Right Grant
- 2005-08-26 WO PCT/US2005/030403 patent/WO2006026428A1/en active Application Filing
- 2005-08-26 CN CN201210536627.XA patent/CN103034476B/zh not_active Expired - Fee Related
- 2005-08-26 EP EP05791595A patent/EP1784731A1/en not_active Withdrawn
- 2005-08-26 KR KR1020077006940A patent/KR100913279B1/ko not_active IP Right Cessation
- 2005-08-26 TW TW094129411A patent/TWI391819B/zh not_active IP Right Cessation
-
2007
- 2007-02-27 IL IL181615A patent/IL181615A0/en unknown
-
2011
- 2011-08-04 JP JP2011170908A patent/JP5231612B2/ja not_active Expired - Fee Related
Cited By (1)
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 |