KR100610730B1 - 메모리 액세스 대기시간을 감소시키기 위한 메모리 액세스스케쥴링 방법 및 장치 - Google Patents

메모리 액세스 대기시간을 감소시키기 위한 메모리 액세스스케쥴링 방법 및 장치 Download PDF

Info

Publication number
KR100610730B1
KR100610730B1 KR1020047004589A KR20047004589A KR100610730B1 KR 100610730 B1 KR100610730 B1 KR 100610730B1 KR 1020047004589 A KR1020047004589 A KR 1020047004589A KR 20047004589 A KR20047004589 A KR 20047004589A KR 100610730 B1 KR100610730 B1 KR 100610730B1
Authority
KR
South Korea
Prior art keywords
memory
page
write
scheduling
block
Prior art date
Application number
KR1020047004589A
Other languages
English (en)
Other versions
KR20040037187A (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 KR20040037187A publication Critical patent/KR20040037187A/ko
Application granted granted Critical
Publication of KR100610730B1 publication Critical patent/KR100610730B1/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
    • 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
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison

Landscapes

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

Abstract

본 발명은 메모리 콘트롤러를 포함하는 장치를 제공한다. 메모리 콘트롤러는 판독 요청 큐에 연결되어 있다. 명령 큐는 메모리 콘트롤러에 연결되어 있다. 메모리 페이지 테이블은 메모리 콘트롤러에 연결되어 있다. 메모리 페이지는 다수의 페이지 테이블 엔트리를 갖는다. 메모리 페이지 이력 테이블은 메모리 콘트롤러에 연결되어 있다. 메모리 페이지 이력 테이블은 다수의 페이지 이력 테이블 엔트리를 갖는다. 사전 계산된 룩업 테이블은 메모리 콘트롤러에 연결되어 있다. 메모리 콘트롤러는 메모리 액세스 대기시간을 줄이기 위한 메모리 스케쥴링 프로세스를 포함한다.

Description

메모리 액세스 대기시간을 감소시키기 위한 메모리 액세스 스케쥴링 방법 및 장치{METHOD AND APPARATUS FOR MEMORY ACCESS SCHEDULING TO REDUCE MEMORY ACCESS LATENCY}
본 발명은 메모리 콘트롤러에 관한 것으로서, 보다 상세하게는 메모리 액세스 대기시간(latency)을 감소시키고 대역폭을 개선시키기 위한 방법 및 장치에 관한 것이다.
동적 랜덤 액세스 메모리(DRAM) 등의 최신 메모리는 컴퓨터 산업 전반에 사용되고 있다. 메모리는 페이지로 나뉘어 구성되어 있다. 메모리의 각 페이지에는 많은 인접한 기억 장소에 대한 데이터가 들어 있다. DRAM 등의 메모리 장치는 또한 DRAM 장치마다 적은 수의 뱅크(예를 들면, 4개의 뱅크)로 나뉘어 구성되어 있다. 이들 메모리 장치 각각은 뱅크마다 다수의 페이지를 갖는다. 뱅크 중에서 한번에 단지 하나의 페이지만이 액세스될 수 있다. 뱅크 내의 특정 페이지가 액세스될 수 있으려면, 그 액세스 이전에 그 페이지가 "활성화(activate)" 명령을 사용하여 열려(open) 있어야만 한다. 이 활성화 명령은 "로우(row)" 명령이라고도 한다. 페이지를 열도록 요구하는 메모리 요청은 페이지-공백 액세스 요청(page-empty access request)이라 한다. 이미 열려 있는 페이지에 대한 메모리 요청은 페이지 히트 액세스 요청(page-hit access request)이라 한다. 페이지는 프리차지 명령(pre-charge command)을 사용하여 닫을 수 있다.
페이지 P0가 위치한 메모리 뱅크와 동일한 뱅크에 위치하는 페이지 P1 내의 장소에 액세스하기 위한 요청이 수신될 때 페이지 P0가 열려 있는 경우, 먼저 페이지 P0가 닫혀진 후에야만 페이지 P1을 열 수 있다. 이것과 같은 페이지 충돌은 한쪽 페이지가 닫혀진 후에야만 원하는 페이지를 열 수 있는 경우에 일어난다. 이 상황을 페이지-미스 액세스(page-miss access)라고 한다.
메모리 액세스 대기시간은 페이지 히트의 경우보다 페이지 미스의 경우 훨씬 더 크다. 서로 다른 메모리 뱅크들에 대한 페이지 히트 액세스와 페이지 공백 액세스는 가용 데이터 대역폭이 유지될 수 있도록 인터리브될 수 있다. 그렇지만, 페이지 미스 액세스는 일반적으로 가용 데이터 대역폭을 감소시키는 결과를 가져온다. 따라서, 페이지 미스는 DRAM 성능에 특히 악영향을 준다.
SDRAM/DDR(동기식 DRAM 더블 데이터 레이트) 메모리 기술은 적은 수의 DRAM 뱅크를 갖는다. SDRAM/DDR 메모리는 각 클록 사이클의 양쪽 엣지 모두에서의 데이터 전송을 지원하는 유형의 SDRAM으로서, 메모리 칩의 데이터 처리량을 효과적으로 배가시킨다. 적은 수의 메모리 뱅크를 갖는 SDRAM/DDR 메모리에서는 페이지 미스 액세스 및 페이지 공백 액세스로 인해 성능 병목 현상이 야기될 수 있다. 이러한 성능 병목 현상은 메모리 대기시간의 증가 및 대역폭의 감소, 이에 따른 플랫폼 성능의 저하를 가져올 수 있다. 메모리 콘트롤러에서는, 페이지 충돌이 일어나서 그 페이지를 닫게 될 시점까지 페이지들을 열어 두기를 지속해야 할지 아니면 페이지들을 적극적으로 닫아둘 수 있는지에 대한 딜레마가 있다. 그렇지만, 이들 기술 중 어느 것도 모든 작업 부하에 대해 최적이지는 않다.
SDRAM/DDR 메모리는 메모리 요청이 완료되자마자 메모리 뱅크를 자동적으로 프리차지하는(닫는) 데 사용될 수 있는 자동 프리차지(auto-pre-charge)라고 하는 메카니즘을 제공한다. 이것은 SDRAM/DDR 메모리 장치에 보다 적합한 페이지-닫기 방식의 개발에 있어서 유용할 수 있다. 명시적인 프리차지 명령을 발행하는 방식과 비교할 때 자동 프리차지 방식을 가짐으로써 얻을 수 있는 이점은 명시적인 프리차지 명령을 필요없게 해준다는 것이다. 이것이 DRAM 명령의 버스 이용 대역폭을 감소시킬 수 있다. 따라서, 다른 명령들을 위해 쓰이도록 명령 버스 슬롯을 해방시켜준다. 그렇지만, 자동 프리차지 방식은 모든 페이지 미스 액세스를 페이지 공백 액세스로 변환할(즉, 대기시간을 감소시킬) 뿐만 아니라 자동 프리차지 방식은 모든 페이지 히트 액세스에 대해서도 동일한 일을 행한다. 따라서, 앞서 있었던 요청을 위해 이미 열려 있던 페이지를 단지 재사용하게 될 것인 액세스에 대한 대기시간이 보다 길어지게 된다. 액세스 스트림에 존재하는 집약성(locality)의 정도에 따라, 상당한 성능 손실이 생길 수 있다.
기존의 DRAM 기술에서는 일반적으로 시스템 내부의 연결된 DRAM 장치에 일련의 DRAM 명령을 발행한다. 이들 DRAM 명령은 DRAM 장치로 하여금 이전에 열려 있던 페이지의 닫기(프리차지), 새로운 페이지의 열기(활성화) 및 DRAM 장치로부터 데이터의 판독 또는 그 장치로 데이터의 기록 등 여러가지 기능을 수행하도록 한다. 전기적인 문제로, 동일한 DRAM 메모리 뱅크로의 연속한 명령들 사이에 일정한 시간 여유를 두어야만 한다. 이렇게 할당된 시간은 제조업자의 규격에 규정되어 있으며 DRAM 타이밍 요건이라고 한다. 도 1은 메모리로부터 데이터를 판독하기 위해 발행되는 명령은 물론이고 관련 타이밍 요건의 일례도 나타낸 것이다. DRAM 명령 스트림(100)은 아이들 상태의 DRAM 뱅크로부터의 판독(페이지 공백)을 나타낸 것이다. DRAM 명령 스트림(105)은 다른 페이지가 열려 있는 상황에서 DRAM 뱅크로부터의 판독(페이지 미스)을 나타낸 것이다. DRAM 명령 스트림(100, 105)에 나타낸 바와 같이, 연속적인 메모리 액세스를 위한 DRAM 명령이 순차적으로 발행될 때, DRAM 서브시스템은 시간 요건을 맞추기 위해 할당된 시간 동안 아이들 상태로 남아 있을 것이다. 만일 이들 아이들 상태의 DRAM 명령 버스 슬롯이 다른 식으로도 사용되지 않는 경우, 이것은 메모리 시스템 효율의 저하 및 성능 저하를 가져올 수 있다.
본 발명은 유사한 참조 번호가 유사한 구성 요소를 가리키고 있는 첨부 도면들에 단지 일례로서 도시되어 있으며, 이는 어떤 한정을 위한 것이 아니다. 본 개시 내용에서 일 실시예라고 한 표현은 반드시 동일한 실시예를 말하는 것이 아니라 적어도 하나의 실시예를 말하는 것임에 유의해야 한다.
도 1은 메모리로부터 데이터를 판독하기 위해 발행된 명령 및 그와 관련된 타이밍 요건의 일례를 나타낸 도면이다.
도 2는 메모리 콘트롤러를 구비한 시스템을 포함하는 본 발명의 일 실시예를 나타낸 도면이다.
도 3은 지능형 자동 프리차지 프로세스를 구비한 메모리 콘트롤러를 포함하 는 본 발명의 일 실시예를 나타낸 도면이다.
도 4는 지능형 자동 프리차지 프로세스를 구비한 본 발명의 일 실시예와 비교한 명시적인 프리차지 명령의 비교예를 나타낸 도면이다.
도 5는 페이지 테이블을 포함하는 본 발명의 일 실시예를 나타낸 도면이다.
도 6은 지능형 자동 프리차지 프로세스를 구비한 본 발명의 일 실시예의 블록도이다.
도 7은 페이지 액세스 예측 프로세스를 구비한 메모리 콘트롤러를 포함하는 본 발명의 일 실시예를 나타낸 도면이다.
도 8A는 페이지 액세스 예측 프로세스를 구비한 본 발명의 일 실시예의 블록도이다.
도 8B는 페이지 액세스 예측 프로세스를 구비한 본 발명의 일 실시예의 블록도이다.
도 8C는 페이지 액세스 예측 프로세스를 구비한 본 발명의 일 실시예의 블록도이다.
도 8D는 페이지 액세스 예측 프로세스에 대한 병렬 프로세스를 구비한 본 발명의 일 실시예의 블록도이다.
도 9는 마이크로 명령 스케쥴러를 갖는 본 발명의 일 실시예의 명령 스트림을 중첩 스케쥴러(overlapped schedulers) 및 순차 스케쥴러(sequential scheduler)와 비교한 비교예를 나타낸 도면이다.
도 10은 중첩 명령 스케쥴링을 사용하는 마이크로 명령 스케쥴러를 구비한 본 발명의 일 실시예를 단순 스케쥴러와 비교한 비교예를 나타낸 도면이다.
도 11A는 마이크로 연산 기반 명령 스케쥴링을 구비한 본 발명의 일 실시예의 블록도이다.
도 11B는 마이크로 연산 기반 명령 스케쥴링을 구비한 본 발명의 일 실시예의 블록도이다.
도 12는 편의적 기록 플러싱(opportunistic write flush) 프로세스를 구비한 본 발명의 일 실시예를 나타낸 도면이다.
도 13A는 편의적 기록 플러싱을 구비한 본 발명의 일 실시예의 블록도이다.
도 13B는 편의적 기록 플러싱을 구비한 본 발명의 일 실시예의 블록도이다.
도 14는 사전 계산된 룩업 테이블을 구비한 본 발명의 일 실시예를 나타낸 도면이다.
도 15는 페이지 액세스 지향 블록 기반 방식의 스케쥴링 프로세스(page-access oriented block-based scheduling process)를 구비한 본 발명의 일 실시예의 블록도이다.
본 발명은 일반적으로 메모리 콘트롤러 스케쥴링 및 메모리 액세스로 인한 대기시간을 감소시키기 위한 방법 및 장치에 관한 것이다. 이제부터, 도면을 참조하여, 본 발명의 예시적인 실시예들에 대해 기술할 것이다. 예시적인 실시예들은 본 발명을 설명하기 위해 제공된 것으로서, 본 발명의 범위를 한정하는 것으로 해석되어서는 안된다.
도 2는 시스템(200)을 포함하는 본 발명의 일 실시예를 나타낸 것이다. 시스템(200)은 중앙 처리 장치(CPU) 및 캐시(210), 메모리 콘트롤러(220), 입출력(I/O)(230), 메인 메모리(240) 및 메모리 버스(250)를 포함한다. 유의할 점은 CPU 및 캐시(210)와 메모리 콘트롤러(220)가 동일 칩 상에 존재할 수 있다는 것이다. 메인 메모리(240)는 DRAM(동적 랜덤 액세스 메모리), SDRAM(동기식 DRAM), SDRAM/DDR(SDRAM/더블 데이터 레이트), RDRAM(램버스 DRAM) 등일 수 있다. 본 발명의 일 실시예에서, 메모리 콘트롤러(220)는 지능형 자동 프리차지 프로세스(intelligent auto-pre-charge process)(215)를 포함한다.
도 3은, 지능형 자동 프리차지 프로세스(215)를 포함하는 스케쥴링 수단을 갖는 본 발명의 일 실시예로서, 메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키기 위한 것이다. 회로부(300)는 메모리 콘트롤러부(220), 기록 버퍼(320), 판독 요청 큐(330) 및 명령 큐(340)를 포함한다. 메모리 콘트롤러부(220)는 지능형 자동 프리차지 프로세스(215)를 포함한다. 메모리 콘트롤러(220)는 메모리 스케쥴러도 포함한다.
본 발명의 일 실시예에서, 지능형 자동 프리차지 프로세스(215)는 자동 프리차지 동작의 선택적 인에이블(selective enabling)을 가능하게 해준다. 자동 프리차지 동작의 선택적 인에이블은 열려 있는 페이지에 대한 추가의 액세스가 메모리 콘트롤러(220)의 요청 큐에 있는지를 검사함으로써 처리된다. 여기서, 자동 프리차지를 착수할지 여부가 판정된다. 열려 있는 페이지에 대한 다른 요청을 검출할 수 없는 경우, 자동 프리차지는 계속될 수 있다. 그렇지 않고, 차후의 요청과의 어떤 충돌도 검출되지 않은 경우, 액세스 후에 프리차지를 행할지 여부를 나타내는 비트를 디스에이블함으로써 자동 프리차지 동작이 취소된다.
자동 프리차지 결정을 가능한 한 길게 지연시키는 것도 본 발명의 일 실시예에 의해 제공된다. 자동 프리차지 결정을 가능한 한 길게 지연시킴으로써, 또 다른 요청이 열려 있는 페이지에 도달할 기회가 증가된다. 따라서, 더 많은 페이지 히트 액세스가 일어날 수 있다.
본 발명의 일 실시예에서, 메모리 콘트롤러(220) 내의 지능형 자동 프리차지 프로세스(215)는 판독 요청 큐(330) 또는 기록 버퍼(320)로부터 한번에 하나씩 요청을 선택한다. 이어서, 지능형 자동 프리차지 프로세스(215)는 그 요청을 위해 필요한 DRAM 명령을 발생하고 이를 명령 큐(340)에 위치시킨다. 명령은 명령 큐(340)로부터 DRAM 명령 버스 상으로 시프트되어 나간다. 유의할 점은 본 발명의 다른 실시예들이 스케쥴러의 유한 상태 기계(finite state machine) 구현과 같이 명령 큐(340) 없이 구현될 수 있다는 것이다.
도 4는 지능형 자동 프리차지 프로세스(215)를 갖는 본 발명의 일 실시예와 비교한 명시적인 프리차지 명령의 비교예를 나타낸 것이다. 도 4는 지능형 자동 프리차지 프로세스(215)가 페이지 미스 액세스의 횟수를 감소시키고(페이지 공백으로 변환되어 대기시간이 감소됨) 필요한 명령 대역폭을 감소시킴으로써 일반적인 방법에 비하여 어떻게 성능을 향상시킬 수 있는지를 정성적으로 나타낸 것이다.
타임라인(timeline)(410)에서 알 수 있는 바와 같이, 제1 요청(415)은 뱅크 0, 페이지 0(즉, B0, R0) 내의 한 장소에 액세스한다. 제2 요청(416)은 뱅크 1, 페이지 0(즉, B1, R0) 내의 한 장소에 액세스한다. 제3 메모리 요청(417)은 뱅크 0, 페이지 1(즉, B0, R1: 제1 요청(415)과 뱅크는 동일하지만 메모리 페이지는 상이함) 내의 한 장소에 액세스한다. 타임라인(420)은 유사한 제1 요청(415), 제2 요청(416) 및 제3 요청(417)을 갖는다. 그렇지만, 타임라인(420)은 지능형 자동 프리차지 프로세스(215)를 갖는 본 발명의 일 실시예를 사용한다. 타임라인(410, 420)에서, 제1 판독(430)은 제1 요청(415) 후에 행해진다. 타임라인(410)에서, 판독 요청(440)이 행해지면, 뱅크 0에 대한 프리차지 요청이 필요하다(즉, 뱅크 0을 닫아야 한다). 반면에, 타임라인(420)에서는, 프리차지 요청이 취소된다. 따라서, 제3 요청(417)은 타임라인(410)과 비교하여 대기시간없이 행해진다.
본 발명의 일 실시예에서, 메모리 콘트롤러(220) 내의 지능형 자동 프리차지 프로세스(215)는 변화하는 시스템 부하에 기초하여 메모리 페이지를 프리차지할 것인지(닫을 것인지) 또는 메모리 페이지를 프리차지하지 않을 것인지를 동적으로 결정한다. 본 발명의 이 실시예에서, 메모리 페이지에 액세스하는 CAS 동작의 발행시에 프리차지 실행 여부의 결정은 메모리 콘트롤러(220)의 요청 큐에 추가의 요청이 존재하는지(또는 존재하지 않는지)에 기초한다.
본 발명의 일 실시예에서, 메모리 페이지를 프리차지할지 여부의 결정은 이하의 상황에 기초하고 있다. 제1 조건은 메모리 콘트롤러(220)의 요청 큐가 비어있는 것이다. 즉, 메모리 콘트롤러(220)가 현재 어떤 추가의 요청도 가지고 있지 않은 것이다. 이 조건에서, 페이지는 열린 채로 두고, CAS 명령과 관련된 자동 프리차지 동작이 취소된다.
다른 조건은 메모리 콘트롤러(220)의 요청 큐가 비어있지 않지만 이 요청 큐가 동일한 페이지에 대한 어떤 추가의 요청도 가지고 있지 않은 것이다. 이 조건에서, 자동 프리차지 동작은 취소되지 않으며, 페이지는 CAS 동작이 완료될 때 자동적으로 닫힌다.
또 다른 조건은 메모리 콘트롤러(220)의 요청 큐가 비어있지 않고 동일한 페이지에 대한 차후의 요청이 있는 것이다. 이 조건에서, 페이지는 열린 채로 두며, CAS 동작과 관련된 자동 프리차지 동작이 취소된다.
도 5는 페이지 테이블(520), 복수의 페이지 테이블 엔트리(525), 판독 요청 큐(530), 지능형 자동 프리차지 프로세스(215) 및 명령 큐(340)를 갖는 본 발명의 일 실시예를 나타낸 것이다. 본 발명의 일 실시예에서, 각 페이지 테이블 엔트리(525)는 명령 큐(340)에서의 슬롯의 번호가 들어 있는 슬롯 # 필드(526)를 포함한다. 슬롯 # 필드(526)는 메모리 페이지에 대한 명령 큐(340)에 있는 이전의 컬럼 어드레스 신호(column address signal, CAS) 명령을 가리키는 데 사용된다. 일단 초기화되면, 슬롯 # 필드(526)는 명령 큐(340)가 시프트 레지스터를 시프트할 때마다 한번씩 감소된다. 슬롯 # 필드(526)는 명령 큐(340) 내의 모든 슬롯을 열거하는 데 필요한 비트의 수보다 1비트 더 넓은 폭을 갖는다. 슬롯 # 필드(526)가 (예를 들어 0000에서 1111까지) 한 바퀴 돌면(roll over), 이 감소가 멈춘다. 따라서, 최상위 비트는 그의 슬롯 # 필드(526)가 유효한 것인지 여부를 나타낸다. 각 페이지 테이블 엔트리(525)는 메모리 페이지 번호(529), 유효성 비트(528) 및 닫힘 비트(closed bit)(527)도 포함하고 있다. 닫힘 비트(527)는 그 스케쥴링 시 에 페이지가 닫혀 있는지 여부를 나타낸다. 본 발명의 일 실시예에서, 명령 큐(340)는 복수의 엔트리를 가지며, 그 각각은 명령 필드, 어드레스 필드, 및 자동 프리차지 제어 비트 필드를 가지고 있다. 유의할 점은 본 발명의 다른 실시예들에서 페이지 테이블(520)의 기능을 벗어나지 않고 다른 공지의 기술들이 구현될 수 있다는 것이다.
본 발명의 일 실시예에서, 지능형 자동 프리차지 프로세스(215)는 페이지 테이블 엔트리(525)를 다음과 같이 사용한다. 메모리 페이지에 대한 액세스 명령이 발행되었는데 페이지 테이블 내에 그 페이지에 대한 엔트리가 없는 경우 또는 페이지 테이블이 그 페이지가 현재 닫혀있음을 나타내는 경우, 지능형 자동 프리차지 프로세스(215)는 명령 큐(340)에 뱅크 활성화(ACT) 명령을 스케쥴링한 다음에 명령 큐(340)에 CAS 명령을 스케쥴링한다. CAS 명령은 자동 프리차지 비트를 임시적으로 설정(set)한다. 지능형 자동 프리차지 프로세스(215)는 CAS 명령이 스케쥴링되어 있는 슬롯을 가리키기 위해 페이지 테이블 엔트리(525)를 갱신한다. CAS 명령이 명령 큐(340)의 선두에 도달하면, CAS 명령은 자동 프리차지 비트의 현재 값을 사용하여 발행된다. 그렇지만, 명령 큐(340)에 그 페이지에 대한 선행하는 액세스가 있지만 페이지 충돌이 없는 경우, 지능형 자동 프리차지 프로세스(215)는 그 페이지 테이블 엔트리가 가리키고 있는 명령 큐(340)의 슬롯 내의 자동 프리차지 비트를 소거(clear)시킨다. 이어서, 지능형 자동 프리차지 프로세스(215)는 현재의 액세스를 위해 CAS 명령을 스케쥴링하고, CAS 명령이 스케쥴링되어 있던 명령 큐(340)의 슬롯을 가리키도록 페이지 테이블 엔트리(525)를 갱신한다. 그렇지만, 페이지 충돌이 있는 경우, 페이지는 자동 프리차지 명령에 의해 닫혀질 수 있으며, 페이지 테이블은 그 페이지가 닫혀있음을 나타내도록 갱신된다. 그 페이지에 대한 차후의 액세스가 도달하면, 상기한 바가 반복된다.
도 6은 지능형 자동 프리차지 프로세스(600)를 갖는 본 발명의 일 실시예의 블록도를 나타낸 것이다. 페이지 "P"에 대한 메모리 요청이 도달하면, 프로세스(600)는 블록 605에서 페이지 "P"가 동일한 랭크의 동일한 메모리 뱅크를 갖는 페이지 테이블 내의 임의의 다른 열린 페이지 "Q"와 충돌하는지를 판정하는 것으로 시작한다. 블록 605에서 페이지 P가 임의의 다른 페이지 Q와 충돌하는 것으로 판정된 경우, 프로세스(600)는 블록 606으로 가서 페이지 Q의 닫힘 비트를 설정한다. 프로세스(600)는 블록 606으로부터 블록 610으로 진행한다. 그렇지만, 블록 605에서 페이지 P가 다른 페이지 Q와 충돌하지 않는 경우, 프로세스(600)는 곧바로 블록 610으로 진행한다. 블록 610에서는 페이지 테이블에서 페이지 P를 탐색한다. 이어서, 프로세스(600)는 블록 615으로 진행하여 페이지 P에 대해 엔트리가 존재하는지와 유효성 비트가 설정되어 있는지를 판정한다. 페이지 P에 대해 엔트리가 존재하고 유효성 비트가 설정되어 있는 경우, 프로세스(600)는 블록 617로 진행한다.
블록 617에서 페이지 테이블 내의 페이지 P가 열려 있는지 여부를 판정한다. 블록 617에서 페이지 테이블 내의 페이지 P가 열려 있는 것으로 판정된 경우, 프로세스(600)는 블록 619로 진행한다. 블록 619에서는 슬롯 # 필드(526)가 유효한지를 판정한다(유의할 점은 본 발명의 일 실시예에서 유효 상태는 최상위 비트가 "0" 임을 의미하며, 본 발명의 다른 실시예들에 있어서는 다른 대안적인 비트 설정이 슬롯 # 필드(526)가 유효하다는 것을 의미함). 블록 619에서 슬롯 # 필드(526)가 유효하다고 판정한 경우, 프로세스(600)는 블록 665로 진행한다. 블록 619에서 슬롯 # 필드(526)가 유효하지 않은 것으로 판정하면, 프로세스(600)는 블록 670으로 진행한다.
블록 617에서 페이지 테이블 내의 페이지 P가 열려 있지 않은 것으로 판정하면, 프로세스(600)는 블록 620으로 진행한다. 블록 620에서는 명령 큐(340)에 페이지 P에 대한 ACT 명령을 스케쥴링한다. 그 다음에, 블록 621에서는 명령 큐(340)에 페이지 P에 대한 CAS 명령을 스케쥴링한다. 이어서, 블록 622에서는 페이지 P에 대한 페이지 테이블 엔트리(525)의 슬롯 # 필드(526)를 갱신하여 CAS 명령이 스케쥴링되어 있는 슬롯 번호를 가진다. 이어서, 블록 623에서는 명령 큐(340) 내의 CAS 명령에 대한 자동 프리차지 비트를 설정한다. 이어서, 블록 624에서는 닫힘 비트를 소거시킨다.
그렇지만, 블록 610에서 페이지 P를 페이지 테이블에서 탐색해 보았으나 페이지 P에 대한 엔트리가 존재하지 않은 경우에는, 프로세스(600)는 블록 630으로 진행한다. 블록 630에서는 페이지 테이블(520)에 새로운 엔트리를 할당하고(예를 들면, 슬롯 # 필드(526)의 최상위 비트가 설정되어 있는 최근 최소 사용된(least recently used) 엔트리를 재활용함) 필요한 경우 한 페이지를 할당 해제(deallocate)한다. 이어서, 블록 635에서는 페이지 번호 필드(529)에 페이지 P의 페이지 번호를 설정한다. 블록 640에서는 유효성 비트(528)를 설정한다. 이 어서, 블록(645)에서는 닫힘 비트(527)를 소거시킨다. 이어서, 블록 650에서는 슬롯 # 필드(526)의 최상위 비트를 설정한다. 프로세스(600)는 블록 650으로부터 블록 605로 진행한다.
블록 665에서는 페이지 P에 대한 페이지 테이블 엔트리(525) 내의 슬롯 # 필드(526)가 가리키는 명령 큐(340) 내의 슬롯에서의 자동 프리차지 비트를 소거시킨다. 이어서, 블록 670에서는 명령 큐(340)에 페이지 P에 대한 CAS 명령을 스케쥴링한다. 이어서, 블록 675에서는 페이지 P에 대한 페이지 테이블 엔트리(525) 내의 슬롯 # 필드(526)가 갱신되어 CAS 명령이 명령 큐(340)에서 스케쥴링되어 있는 슬롯 번호를 가진다. 이어서, 블록 676에서는 명령 큐(340) 내의 CAS 명령에 대한 자동 프리차지 비트를 설정한다. 이어서, 프로세스(600)는 블록 605로 진행한다.
요청 큐에 기초하여 페이지를 열린 채로 두거나 페이지를 닫음으로써, 지능형 자동 프리차지 프로세스(215)는 작업 부하에 적응하고 성능을 향상시킨다. 그렇지만, 지능형 자동 프리차지 프로세스(215)를 갖는 본 발명의 실시예들이 성능을 저하시킬 수도 있는 적은 개수의 작업 부하의 유형이 있다. 예를 들면, 집약성(locality)은 높지만, 요청이 메모리 명령 버스를 통해 발행되어야만 할 때까지 그 페이지에 대한 그 다음 요청이 아직 도달하지 않는 식으로 동일한 페이지에 대한 연속적인 요청들 사이의 간격이 충분히 큰 작업 부하가 있다. 따라서, 지능형 자동 프리차지 프로세스(215)는 페이지를 닫게 되고, 그 결과 페이지 히트 대신에 페이지 공백을 낳게 된다.
지능형 자동 프리차지 프로세스(215)가 성능을 저하시킬 수도 있는 작업부하 의 유형을 극복하기 위해, 본 발명의 일 실시예는 이전의 메모리 요청으로부터의 정보를 사용하여 가까운 장래에 동일한 페이지에 대한 차후의 요청이 있을지, 따라서 페이지를 열린 채로 두어야만 하는지 여부를 예측한다. 다른 대안에서, 본 발명의 일 실시예는 가까운 장래에 동일한 페이지에 대한 요청이 없을 수 있는지, 따라서 페이지를 닫아야만 하는지 여부를 판정한다.
도 7은 메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키기 위한 스케쥴링 수단을 갖는 본 발명의 일 실시예로서 페이지 액세스 예측 프로세스(710)를 포함한다. 도 7에 도시한 본 발명의 실시예는 메모리 콘트롤러(220), 페이지 액세스 예측 프로세스(710), 페이지 이력 테이블(720), 및 페이지 테이블(520)을 포함한다. 페이지 테이블(520)은 복수의 페이지 테이블 엔트리(525)를 갖는다. 각 페이지 테이블 엔트리(780)는 타이머 필드(790)를 갖는다. 페이지 이력 테이블(720)은 복수의 페이지 이력 엔트리(725)를 포함한다. 페이지 이력 엔트리(725)는 커버리지(coverage) 필드(726), 현재의 액세스 구간(access epoch)에서의 무충돌 액세스(conflict-free access)의 횟수(727), 마지막 액세스 구간에서의 무충돌 액세스의 횟수(728), 사용중(in-use) 비트(729), 및 메모리 페이지 번호 필드(730)를 포함한다.
페이지 이력 테이블(720)은 이전에 액세스했던 페이지에 관한 정보 및 현재 열려 있는 페이지로의 액세스에 관한 정보를 가지고 있다. 무충돌 액세스의 횟수는 그 페이지가 마지막으로 닫히기에 앞서 그 페이지를 가능한 한 길게 열어둔 경우 그 페이지에 대해 얼마나 많은 액세스가 있을 것인지를 추적함으로써 (개념적으 로) 결정된다. 이 횟수는 충돌 후에 페이지가 처음으로 열린 때부터 시작하여 그 페이지가 충돌로 인해 닫힐 때까지 그 동일한 페이지에 대한 액세스의 횟수를 카운트함으로써 계산될 수 있다. 페이지 커버리지(726)는 액세스한 전체 페이지의 일부분이다. 본 발명의 일 실시예에서, 페이지 커버리지(726)는 비트 벡터(bit vector)를 사용하여 구현되며, 이 비트 벡터에서 각 비트는 페이지 내의 특정의 캐시 라인이 액세스되었는지를 나타낸다.
본 발명의 일 실시예에서는, 페이지에 대한 마지막 액세스로부터의 페이지 이력 테이블(720) 내의 이력 정보(마지막 액세스 구간에서의 무충돌 액세스 횟수(728))를 사용하여 그 다음 액세스 구간에서 그 페이지를 언제 닫아야 하는지를 예측한다. 이러한 이력 정보를 이용할 수 없는 경우(그 페이지가 이전에 액세스되지 않았거나 그의 정보가 페이지 이력 테이블로부터 제거될 정도로 너무 오래 전에 액세스되었기 때문임), 앞서 있었던 액세스의 페이지로부터의 이력 정보(현재의 액세스 구간에서의 무충돌 액세스 횟수(727))를 사용하여 그 페이지를 언제 닫아야 할지를 예측한다.
도 8A 내지 도 8D는 페이지 액세스 예측 프로세스(800)를 갖는 본 발명의 일 실시예의 블록도를 나타낸 것이다. 페이지 액세스 예측 프로세스(800)는 블록 805에서 페이지 P에 대한 요청이 메모리 콘트롤러(220)에 의해 수신되는 것으로 시작한다. 블록 810에서는 페이지 이력 테이블(720)에 요청된 페이지 "P"와 일치하는 것이 있는지를 판정한다. 페이지 P와 일치하는 것이 없는 경우, 프로세스(800)는 블록 820으로 진행한다. 블록 820에서는 페이지 이력 테이블(720) 내의 가장 오래 된 엔트리를 할당 해제한다. 이어서, 블록 821에서는 페이지 이력 테이블(720) 내의 할당 해제된 엔트리를 사용하여 현재의 요청에서의 페이지 번호에 대한 정보를 할당한다. 블록 822에서는 마지막 구간에서의 무충돌 액세스 횟수(728)를 페이지 이력 테이블(720)에서의 가장 최근의 엔트리(youngest entry)의 현재의 구간에서의 무충돌 액세스 횟수(727)로 초기화한다. 블록 823에서는 현재의 구간에서의 무충돌 액세스 횟수(727)를 0으로 설정한다. 블록 824에서는 커버리지(726)를 0으로 설정한다. 블록 825는 페이지 사용중 비트(729)를 설정한다.
이력 테이블(720)에서 페이지 P와 일치하는 것이 발견된 경우, 프로세스(800)는 블록 811로 진행한다. 블록 811에서는 마지막 구간에서의 무충돌 액세스 횟수(728) 및 현재의 구간에서의 무충돌 액세스 횟수(727)를 검색한다. 블록 815에서는 페이지 P가 이미 사용중으로 표시되어 있는지를 판정한다. 페이지가 이미 사용중으로 표시된 경우, 프로세스(800)는 블록 816으로 진행하여 커버리지를 검색한다. 페이지가 아직 사용중으로 표시되지 않은 경우, 프로세스(800)는 전술한 바와 같이 블록 824로 진행한다.
블록 825이 완료된 후에, 프로세스(800)는 블록 830으로 진행하여, 현재의 요청 페이지 P에 대한 스케쥴링의 결과 동일한 뱅크 및 동일한 랭크에 속하는 다른 페이지 "Q"와의 페이지 충돌이 생기는지를 판정한다. 다른 페이지 Q와의 충돌이 있는 것으로 판정된 경우, 블록 831에서는 페이지 Q를 닫는다. 페이지 Q의 관련 페이지 이력 테이블 엔트리(725)는 다음과 같이 갱신된다. 블록(832)에서, 마지막 구간에서의 무충돌 액세스 횟수(728)는 현재의 구간에서의 무충돌 액세스 횟수(727)로 설정된다. 이어서, 블록 833에서는 페이지 Q에 대한 현재의 구간에서의 무충돌 액세스 횟수를 0으로 설정한다. 이어서, 블록 834에서는 페이지 P에 대한 현재의 구간에서의 무충돌 액세스 횟수를 0으로 설정한다. 이어서, 블록 835는 사용중 비트(729)를 소거시킨다.
충돌이 없는 경우 또는 블록 835가 완료된 후, 프로세스(800)는 블록 836으로 진행한다. 블록 836에서, 페이지 P에 대한 요청을 스케쥴링한다. 블록 840에서, 페이지 P에 대한 마지막 구간에서의 무충돌 액세스 횟수(728)가 페이지 P에 대한 현재의 구간에서의 무충돌 액세스 횟수(727)보다 많은지가 판정된다. 마지막 구간에서의 무충돌 액세스 횟수(728)가 현재의 구간에서의 무충돌 액세스 횟수(727)보다 많지 않은 것으로 판정된 경우, 블록 847에서 페이지 P가 닫혀진다.
블록 840에서 마지막 구간에서의 무충돌 액세스 횟수(728)가 현재의 구간에서의 무충돌 액세스 횟수(727)보다 많은 것으로 판정된 경우, 프로세스(800)는 블록 845로 진행한다. 블록 845에서는 커버리지가 100%보다 작은지 여부를 판정한다. 커버리지가 100%보다 작지 않은 경우, 프로세스(800)는 블록 847로 진행하고 페이지 P를 닫는다. 커버리지가 100%보다 작은 경우, 프로세스(800)는 블록 846으로 진행하여 페이지 P를 열린 채로 둔다.
프로세스(800)는 블록 850으로 진행하여 현재의 구간에서의 무충돌 액세스 횟수(727)를 증가시킨다. 이어서, 블록 851에서는 커버리지 필드(726)를 갱신한다. 블록 855에서는 페이지가 충돌로 인해 닫혀 있는지를 판정한다. 페이지가 충돌로 인해 닫혀있지 않은 경우, 블록 856에서는 사용중 비트(729)를 소거시킨다. 페이지가 충돌로 인해 닫혀 있는 경우, 프로세스(800)는 블록 805로 진행한다.
도 8D는 서브 프로세스(890)를 나타낸 것이다. 본 발명의 일 실시예에서, 서브 프로세스(890)는 프로세스(800)와 병렬로 실행된다. 프로세스(890)는 블록 860으로 진행한다. 블록 860에서는 페이지가 열려 있는지를 판정한다. 페이지가 열려 있는 경우, 블록 865에서는 페이지 테이블 엔트리(780) 내의 타이머 필드(790)를 리셋시킨다. 블록 860에서 페이지가 열려 있지 않은 것으로 판정한 경우, 블록 870에서는 페이지가 마지막 액세스로부터 소정의 시간보다 더 길게 열려 있었는지를 판정한다. 블록 870에서 페이지가 마지막 액세스로부터 소정의 시간보다 더 길게 열려 있었던 것으로 판정한 경우, 블록 871에서는 그 페이지를 닫는다.
이어서, 블록 872는 마지막 구간에서의 무충돌 액세스 횟수(728)를 현재의 구간에서의 무충돌 액세스 횟수(727)로 설정한다. 이어서, 블록 873에서는 현재의 구간에서의 무충돌 액세스 횟수(727)를 0으로 설정한다. 블록 874에서는 사용중 비트(729)를 소거시킨다. 이어서, 프로세스(890)는 블록 860으로 되돌아간다. 블록 865가 완료된 후, 프로세스(890)는 블록 860으로 진행한다.
일 실시예에서, 지능형 자동 프리차지 프로세스(215)는 메모리 콘트롤러(220)에서 페이지 액세스 예측 프로세스(710)와 결합된다. 그렇지만, 유의해야 할 점은 페이지를 열린 채로 둘 것인지 여부에 대한 의사 결정을 개선하기 위해 페이지 액세스 예측 프로세스(710) 또는 지능형 자동 프리차지 프로세스(215) 중 하나가 현재의 메모리 스케쥴러(status quo memory scheduler)와 결합될 수도 있다는 것이다. 또한, 유의해야 할 점은 메모리 요청과 진행상황을 통신하는 칩셋 프리페쳐(prefetcher) 또는 프로세서 등의 컴퓨터 시스템에서 있을 수 있는 장래의 요청과 관련된 다른 정보(이 정보는 메모리 콘트롤러(220) 성능을 향상시키기 위해 페이지를 열린 채로 두거나 페이지를 닫는 것에 대한 의사 결정을 개선시키는 데도 사용될 수 있음), 또는 상기 프로세서로부터 전달된 정보를 페이지 액세스 예측 프로세스(710)가 사용할 수도 있다는 것이다.
본 발명의 일 실시예에서, 메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키기 위한 스케쥴링 수단은 마이크로 명령 스케쥴러 프로세스를 포함한다. 본 발명의 이 실시예에서, 지능형 자동 프리차지 프로세스(215) 및 페이지 액세스 예측 프로세스(710)를 스케쥴러 내에 포함하고 있는 메모리 콘트롤러(220)는 각 메모리 명령을 독립적으로 스케쥴링가능한 엔티티로서 취급하도록 스케쥴링을 수정할 수도 있다. 본 발명의 이 실시예에서, 차후의 메모리 요청에 대한 메모리 명령은 현재의 메모리 요청에 대한 메모리 명령들 사이의 아이들 상태 슬롯에 삽입될 수 있다. 따라서, 연속적인 메모리 요청에 대한 메모리 명령이 중첩되어 메모리 명령 버스 대역폭의 활용도가 더 좋아지게 된다.
도 9는 마이크로 명령 스케쥴러를 갖는 본 발명의 일 실시예를 중첩 스케쥴러(overlapped scheduler) 및 순차 스케쥴러(squential scheduler)와 비교한 비교예를 나타낸 것이다. 중첩 메모리 명령 스케쥴링(overlapped memory command scheduling)은 현재의 메모리 요청을 위해 발생되어야만 하는 명령의 세트를 덩어리 개체(rigid entity)로서 처리하는 것에 기초하며, 메모리 스케쥴러는 이 일단의 명령을 기존의 메모리 명령 스케쥴 상부에 중첩시키려고 한다.
그렇지만, 이 방식은 그다지 유연성이 없어서 모든 경우에 다 성공하지는 못하며, 메모리 타이밍 요건의 어떤 값에 대해서는 순차 방식과 비교하여 아무런 이점도 나타내지 못할 수 있다. 이것이 도 9에 타임라인(920)으로 나타내어져 있다. 타임라인(920)은 버스트 길이가 8 바이트인 중첩 스케쥴러를 나타낸 것으로서, 이 스케쥴러는 성능을 향상시키지 못한다.
도 9에서 알 수 있는 바와 같이, 제1 동작(Act 1)은 뱅크 B0 및 로우 R0에 대해 행해진 요청이다. 제2 요청(Act 2)(960)은 Act 1과는 다른 뱅크(B1)에 대한 것이다. 도 9에서 이 특정의 명령 시퀀스로부터 알 수 있는 바와 같이, 본 발명의 일 실시예의 타임라인(910)을 보면 버스트 길이가 8 바이트인 중첩 스케쥴러(타임라인(920)으로 나타냄)는 물론 순차 스케쥴러(타임라인(940)으로 나타냄)에 비해서도 개선되었음을 알 수 있다. 본 발명의 일 실시예에서, 마이크로 명령 스케쥴링은 성능을 향상시키기 위해 단순 스케쥴러(즉, 순차 스케쥴러)는 물론 중첩 스케쥴러에도 적용될 수 있다.
도 10은 중첩 명령 스케쥴링을 사용하는 마이크로 명령 스케쥴러를 갖는 본 발명의 일 실시예를 단순 스케쥴러와 비교한 비교예를 나타낸 것이다. 도 10의 비교예는 상이한 뱅크에 대한 2개의 요청(Act1, Act2)을 보여주고 있다. 타임라인(1010)은 중첩 스케쥴러에 대한 마이크로 연산 기반의 메모리 명령 스케쥴링을 갖는 본 발명의 일 실시예를 나타낸 것이다. 타임라인(1020)은 단순 스케쥴러에 대한 기본적인 메모리 명령 스케쥴링을 나타낸 것이다. 본 발명의 일 실시예 에서, 마이크로 연산 기반의 메모리 명령 스케쥴링은 요청에 대해 가능한 메모리 명령들 각각을 독립적으로 삽입하여 최소한의 타이밍 요건만이 고려되도록 한다.
그렇지만, 이것은 이점이 있는 몇몇 타이밍 요건(프리차지-활성화 지연, tRP, RAS-CAS 지연, tRCD)의 완화(확장)를 배제하지 않는다. 이들 요건의 확장을 허용함으로써, 마이크로 연산 기반의 명령 스케쥴링을 갖는 본 발명의 일 실시예에서는 연속적인 메모리 액세스가 중첩되고, 따라서 그렇지 않을 경우 메모리 액세스들이 노출될 수 있는 것에 대해 확장의 일부를 은닉할 수 있는 가능성이 더 높다.
도 11A 및 도 11B는 마이크로 연산 기반의 명령 스케쥴링을 갖는 본 발명의 일 실시예의 블록도를 나타낸 것이다. 프로세스(1100)는 블록 1110에서 메모리 콘트롤러(220)가 메모리 요청 큐(530)로부터 그 다음 요청을 선택하는 것으로 시작하고, 이 요청에 대해 발행되어야만 하는 메모리 명령들의 시퀀스를 결정한다. 블록 1120에서는 메모리 명령의 시퀀스를 결정한다. 블록 1120에서 결정하는 명령의 시퀀스는 이하의 것 중 하나일 수 있다.
페이지 충돌: 프리차지, 활성화, CAS;
페이지 공백: 활성화, CAS;
페이지 히트: CAS.
블록 1120에서 테이블 참조에 기초하여 페이지 충돌이 있을 것으로 판정한 경우, 프로세스(1100)는 블록 1125로 진행한다. 블록 1125에서는, 본 발명의 일 실시예를 갖는 메모리 스케쥴러가 이하의 요건을 가정하여 그 동작을 현재의 페이지에 대한 마지막 명령 이후의 첫번째 이용가능한 명령 슬롯에 스케쥴링해보려고 시도한다. 블록 1130에서는 선택된 위치에 프리차지 명령을 삽입하는 것이 이전의 요청에 대해 메모리 명령들을 배열하는 데 사용되었던 페이지 테이블 가정에 저촉되거나 이를 무효화하게 될지 여부를 판정한다. 블록 1130에서 이 선택된 위치에 프리차지 명령을 삽입하는 것이 페이지 테이블 가정과 저촉되거나 이를 무효화하지 않을 것으로 판정한 경우, 프로세스(1100)는 블록 1135로 진행한다. 그렇지 않은 경우, 프로세스(1100)는 블록 1125로 진행하여 그 다음의 이용가능한 명령 슬롯을 탐색한다.
블록 1130에서 선택된 위치에 프리차지 명령을 삽입하는 것이 이전의 요청에 대해 메모리 명령들을 배열하는 데 사용되었던 페이지 테이블 가정과 저촉하지 않을 것으로 판정한 경우, 프로세스(1100)는 블록 1135로 진행한다. 블록 1135에서는 선행하는 명령들에 대한 타이밍 요건들이 고려되고 있는지 여부를 판정한다. 선행하는 명령들에 대한 타이밍 요건들이 고려되고 있지 않은 경우, 프로세스(1100)는 블록 1125로 되돌아간다.
선행하는 명령들에 대한 타이밍 요건들이 고려되고 있는 경우, 프로세스(1100)는 블록 1136으로 진행하여 프리차지 명령을 첫번째 이용가능한 슬롯에 삽입한다. 그 다음에, 프로세스(1100)는 블록 1142로 진행한다.
블록 1120에서 페이지 테이블을 참조한 바 페이지 공백이 요구되는 것으로 판정한 경우, 프로세스(1100)는 블록 1142로 진행한다. 블록 1142에서는 활성화 명령의 삽입을 위해 첫번째(그 다음) 이용가능한 명령 슬롯을 선택한다. 블록 1143에서는 활성화 명령을 선택된 위치에 삽입하는 것이 이전의 요청들에 대한 메 모리 명령들을 배열하는 데 사용된 페이지 테이블 가정과 저촉되거나 이를 무효화하게 될지 여부를 판정한다.
블록 1143에서 활성화 명령의 삽입이 이전의 요청들에 대해 사용된 페이지 테이블 가정에 저촉되거나 이를 무효화하게 될 것으로 판정한 경우, 프로세스(1100)는 블록 1142로 진행한다. 블록 1143에서 활성화 명령의 삽입이 이전의 요청들에 대해 사용된 페이지 테이블 가정에 저촉되거나 이를 무효화하지 않을 것으로 판정한 경우, 프로세스(1100)는 블록 1144로 진행한다.
블록 1144에서는 선행하는 명령, CAS 명령 및 데이터 전송에 대한 타이밍 요건들이 고려되고 있는지를 판정한다. 선행하는 명령에 대한 타이밍 요건이 고려되고 있는 경우, 프로세스(1100)는 블록 1145로 진행한다. 블록 1145에서는 활성화 명령을 삽입한다. 그 후, 프로세스(1100)는 블록 1146으로 진행하여 CAS 명령을 삽입한다.
블록 1120에서 메모리 페이지 테이블을 참조한 바 페이지 히트가 오게 될 것으로 판정한 경우, 프로세스(1100)는 블록 1153으로 진행한다. 이 CAS 동작(프로그램의 판독/기록)의 경우, 명령은 요청된 선행 CAS 동작 이후에 허용될 수 있는 명령 큐에서의 가장 앞선 위치에 삽입된다. 요청에 대해 활성화 명령이 발생된 경우, 활성화 명령에 관한 타이밍 요건이 존중되어야만 한다.
블록 1153에서는 CAS 명령을 요청된 선행 CAS 동작 이후에 허용될 수 있는 명령 큐에서의 가장 앞선 위치에 (타이밍 요건을 존중하면서) 삽입한다. 이어서, 프로세스(1100)는 블록 1110으로 진행한다.
본 발명의 일 실시예에서, 메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키기 위한 스케쥴링 수단은 편의적 기록 플러싱 방식(opportunistic write flushing policy)을 포함한다. 본 발명의 이 실시예에서, 메모리 콘트롤러(220)는 기록 선점(write preemption), 기록 금지 기간(write block-out period) 및 비FIFO(non-first-in-first-out) 기록 선택 동작을 사용하여 편의적 기록 플러싱을 가능하게 해준다. 이 실시예에서는 기록 플러싱 시퀀스의 편의적 개시, 새로운 판독 요청이 도달하자마자 기록 플러싱 시퀀스의 선점, 기록 선점이 행해진 후 전환 사이클(turnaround cycle)을 최소화하기 위한 기록 금지 기간, 및 기록 요청의 메모리 자원 소모를 최소화하기 위한 비FIFO 기록 선택이 가능하다.
도 12는 기록 버퍼(320), 비FIFO 선택(1210), 편의적 기록 플러싱(1235), 기록 금지 프로세스(1205), 및 기록 선점 프로세스(1225)를 갖는 본 발명의 일 실시예를 나타낸 것이다. 도 12에 도시된 일례에서 구성요소(1250)를 보면 가장 좌측의 기록 시퀀스에서의 처음 2번의 기록 이후에 판독 요청이 도달하고 있음을 알 수 있다. 이 판독 요청은 기록 플러싱 시퀀스를 즉시 선점한다. 선점하는 판독이 서비스된 후에, 빈번한 판독/기록 전환을 방지하기 위해 기록 금지 기간이 오게 된다.
도 13A 및 도 13B는 편의적 기록 플러싱을 갖는 본 발명의 일 실시예의 블록도를 나타낸 것이다. 프로세스(1300)는 블록 1310에서 기록 버퍼에 대한 임계값을 선택하는 것으로 시작한다. 선택된 임계값은 구현에 따라 다르다. 블록 1320에서는 판독 요청이 판독 요청 큐(530)에 존재하는지를 판정한다. 블록 1320에서 판독 요청 큐(530)에 판독 요청이 존재하지 않는 것으로 판정한 경우, 프로세스(1300)는 블록 1330으로 진행한다. 블록 1330에서는 기록 버퍼(320) 내의 내용이 블록 1310에서 선택한 선택된 임계값을 초과하는지를 판정한다. 블록 1330에서 기록 버퍼 내용이 선택된 임계값보다 큰 것으로 판정한 경우, 편의적 기록 플러싱이 시작될 수 있다.
블록 1335에서는 기록 플러싱 시퀀스를 개시한다. 기록 플러싱 시퀀스의 개시 시에, 메모리 콘트롤러(220)는 기록 버퍼(320)로부터 기록 요청을 다음과 같이 선택한다. 블록 1340에서는 기록 요청이 이미 열려 있는 메모리 페이지에 대한 것인지를 판정한다. 블록 1340에서 이미 열려 있는 메모리 페이지에 대한 요청을 발견한 경우, 블록 1341에서는 이 요청에 제1 우선순위를 할당한다. 블록 1340에서 이미 열려 있는 메모리 페이지에 대한 기록 요청을 발견하지 못하거나 블록 1341이 완료된 경우, 프로세스(1300)는 블록 1345로 진행한다.
블록 1345에서는 (이미 열려 있는 페이지와의 충돌을 피하기 위해) 기록 요청이 아이들 상태의 메모리 뱅크에 대한 것인지를 판정한다. 블록 1345에서 아이들 상태의 메모리 뱅크에 대한 기록 요청이 있는 것으로 판정한 경우, 블록 1346에서는 이들 요청에 대해 제2 우선순위를 할당한다. 프로세스(1300)는 블록 1350으로 진행하여 제1 우선순위나 제2 우선순위 요청이 발견되지 않았는지 여부를 판정한다. 블록 1350에서 제1 우선순위나 제2 우선순위를 발견하지 못한 것으로 판정한 경우, 블록 1351에서는 기록 버퍼에서 가장 오래된 기록 요청을 선택한다.
블록 1350에서 제1 우선순위나 제2 우선순위를 발견한 것으로 판정하거나 블 록 1351이 완료된 경우, 블록 1352에서는 우선순위가 존재한다면 우선순위 순서에 따라 기록 요청을 플러싱하고, 그렇지 않고 제1 우선순위나 제2 우선순위의 요청을 발견하지 못한 경우, 블록 1351에서 선택된 기록 요청을 플러싱한다. 이어서, 프로세스(1300)는 블록 1320으로 진행하여, 새로운 판독 요청이 판독 요청 큐(530)에 도달하지 않거나 블록 1310에서 선택된 임계값이 초과되지 않는 한, 이 시퀀스를 반복한다.
메모리 콘트롤러(220)가 기록 플러싱 시퀀스의 도중에 있는 동안 새로운 판독 요청이 판독 요청 큐(530)에 도달하는 경우, 메모리 콘트롤러(220)는 새로운 기록 요청의 플러싱을 즉각 중지하고 이하의 것을 수행한다. 블록 1320에서 새로운 판독 요청이 판독 요청 큐(530)에 존재하는 것으로 판정한 후, 프로세스(1300)는 블록 1360으로 진행한다. 블록 1360에서는 기록 플러싱 시퀀스를 중지한다. 프로세스(1300)는 블록 1370으로 진행하여 새로 수신된 판독 요청을 서비스한다. 블록 1370이 완료된 후, 블록 1380에서는 기록 금지 기간을 시행한다. 기록 금지 기간 동안, 메모리 콘트롤러(220)는 추가의 판독 요청을 서비스할 수 있지만, 새로운 기록 플러싱 시퀀스를 개시하지 않을 수 있다. 이 금지 기간은 판독 요청과 기록 요청 사이의 빈번한 변경을 방지하기 위함이다.
금지 기간 길이의 정확한 설정과 관련된 여러가지 절충이 있다. 금지 기간이 너무 길게 설정된 경우, 메모리에 대한 기록 요청의 플러싱을 강제적으로 하지 못하게 하므로 성능이 저하될 수 있다. 금지 기간 길이가 너무 짧게 설정된 경우, 판독 요청과 기록 요청 사이의 빈번한 변경이 일어날 수 있으며, 이에 따라 전환의 증가 및 성능의 저하를 가져올 수 있다. 블록 1390에서는 새로운 판독 요청이 수신되었는지와 프로세스(1300)가 여전히 금지 기간 중에 있는지를 판정한다. 블록 1390에서 새로운 판독 요청이 수신되었고 프로세스(1300)가 여전히 금지 기간 중에 있는 것으로 판정한 경우, 프로세스(1300)는 블록 1360으로 진행한다. 그렇지만, 블록 1390에서 새로운 판독 요청이 수신되었지만 프로세스(1300)가 더 이상 금지 기간 중에 있지 않은 것으로 판정한 경우, 프로세스(1300)는 블록 1320으로 되돌아간다.
본 발명의 일 실시예에서, 메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키기 위한 스케쥴링 수단은 페이지 액세스 지향 블록 기반 방식의 판독 요청 스케쥴링(page-access oriented block-based scheduling)을 포함한다. 본 발명의 일 실시예에서, 메모리 콘트롤러(220)는 페이지 액세스 지향 블록 기반 방식의 판독 요청 스케쥴링을 사용한다. 본 발명의 이 실시예에서, 메모리 콘트롤러(220)는 메모리에 대해 새로운 요청을 발행할 준비가 완료될 때마다, 판독 요청 큐(530)의 선두에 있는 요청을 선택하는 대신에 판독 요청 큐(530)의 선두에 있는 요청들의 블록을 검사한다. 이 블록에 있는 각 요청에 대한 페이지 액세스 특성을 계산한 후에, 메모리 콘트롤러(220)는 선택된 블록 내의 어느 특정의 요청이 제일 먼저 발행되어야만 하는지를 판정하는 데 사용되는 사전 계산된 룩업 테이블에 대한 인덱스로서 상기 계산된 특성을 사용한다.
도 14는 사전 계산된 룩업 테이블(1410)을 갖는 본 발명의 일 실시예를 나타낸 것이다. 테이블 인덱싱(table indexing)은 블록 내의 각 요청에 대한 판정된 페이지 액세스 특성의 결과(페이지 히트, 페이지 공백, 페이지 미스)를 하나의 값으로 해싱(hashing)함으로써 행해진다. 이어서, 이 값은 사전 계산된 룩업 테이블(1410)에 대한 인덱스로서 사용된다.
페이지 액세스 지향 블록 기반 방식의 판독 요청 스케쥴링을 사용함으로써, 과도한 페이지 충돌로 인한 최적화되지 않은 페이지 액세스 시퀀스를 피할 수 있다. 따라서, 새로운 페이지에 액세스할 수 있기 전에 이미 열려 있는 페이지를 먼저 닫기 위해 필요한 부가의 대기시간이 감소된다.
도 15는 페이지 액세스 지향 블록 기반 방식의 스케쥴링 프로세스(1500)를 갖는 본 발명의 일 실시예의 블록도를 나타낸 것이다. 프로세스(1500)는 메모리 콘트롤러(220)에서 새로운 판독 요청의 발행 준비가 완료될 때마다 실행된다. 블록 1510에서는 블록 크기 N을 선택한다. 일 실시예에서, 블록 크기 N은 2 또는 3일 수 있다. 그렇지만 유의해야 할 점은 블록 크기 N가 임의의 타당한 크기일 수 있다는 것이다. 블록 1520에서, 판독 보류 임계값(read-hold threshold)을 선택한다.
블록 1530에서는 판독 요청이 선택된 임계값보다 길게 판독 요청 큐(530)에 존재하였는지 여부를 판정한다. 블록 1530에서 판독 요청이 선택된 임계값보다 길게 판독 요청 큐(530)에 존재한 것으로 판정한 경우, 프로세스(1500)는 블록 1533으로 진행한다. 블록 1533에서는 메모리에 대한 판독 요청을 발행한다. 블록 1533이 완료된 후에, 프로세스(1500)는 블록(1560)으로 진행한다. 블록 1530에서, 판독 요청이 선택된 임계값보다 길게 판독 요청 큐(530)에 존재하지는 않은 것으로 판정한 경우, 프로세스(1500)는 블록 1535로 진행한다.
블록 1535에서는 판독 요청 큐(530)의 선두로부터 N개(블록 1510에서 선택된 것임)의 요청으로 이루어진 블록을 선택한다. 블록 1536에서는 현재의 메모리 페이지 테이블 상태를 사용하여, 요청이 페이지 충돌 액세스인지, 페이지 공백 액세스인지, 아니면 페이지 히트 액세스인지 여부를 계산한다. 블록 1536으로부터의 결과는 블록 1537에서 사용된다. 블록 1537에서는 블록 1536에서 얻어진 정보로부터 사전 계산된 룩업 테이블을 생성한다. 블록 1537에서 생성된 것인, 사전 계산된 룩업 테이블(1410)은 블록 1536에서의 전체적인 페이지 테이블 룩업 계산의 모든 가능한 값에 대한 엔트리를 갖는다. 각 엔트리에 대한 값은 현재의 블록에 있는 요청 중 어느 것이 메모리에 대해 제일 먼저 발행되어야 하는지를 규정한다.
블록 1540에서는 선택된 블록 N에서의 마지막 요청이 블록 1536에 의해 수행되었는지 여부를 판정한다. 블록 1540에서, 선택된 블록 N에서의 마지막 요청이 블록 1536에서 아직 수행되지 않은 것으로 판정한 경우, 프로세스(1500)는 블록 1536으로 진행한다. 선택된 블록 N에서의 마지막 요청이 블록 1536에서 요청의 상태를 계산하는 데 사용되었다고 블록 1540에서 판정한 경우, 프로세스(1500)는 블록 1550으로 진행한다. 블록 1550은 블록 1536에서 계산된 결과들을 하나의 총합값으로 결합한다.
본 발명의 일 실시예에서, 블록 1536으로부터의 개개의 페이지 룩업 결과의 결합은 해시 함수를 사용하여 수행된다. 본 발명의 다른 실시예에서, 블록 1550에서는 블록 1536에서 계산된 결과들을 우선순위 인코딩(priority encoding)을 사용 하여 결합한다. 유의해야 할 점은 개개의 페이지 룩업 결과를 결합하는 데 본 기술 분야의 다른 기술들도 사용될 수 있다는 것이다.
프로세스(1500)는 블록 1560으로 진행하여, 블록 1550에서 생성된 값을 사전 계산된 룩업 테이블(1410)에 대한 인덱스로서 사용한다. 프로세스(1500)는 블록 1565로 진행하여, 블록 1560으로부터의 인덱스를 사용하여 선택된 요청들 중 어느 것이 메모리에 대해 발행되어야 하는지를 결정한다. 프로세스(1500)는 블록 1570으로 진행하여, 블록 1565에서 결정된 요청을 발행한다. 블록 1575에서는 N-1개의 미사용 요청들을 판독 요청 큐(530)의 선두에 보관한다.
상기 실시예들은 또한 장치 또는 기계 판독가능 매체 상에 저장되어 명령어들을 수행하기 위해 기계에 의해 판독될 수 있다. 기계 판독가능 매체에는 기계(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메카니즘도 포함된다. 예를 들어, 기계 판독가능 매체는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 장치, 그리고 전기, 광학, 음향 또는 다른 형태의 전파 신호(예를 들면, 반송파, 적외선 신호, 디지털 신호 등)을 포함한다. 상기 장치 또는 기계 판독가능 매체에는 고체 메모리 장치 및/또는 회전 자기 또는 광학 디스크가 포함될 수 있다. 이 장치 또는 기계 판독가능 매체가 분산되어 있을 수 있으며, 그 때에는 명령어의 일부가 컴퓨터의 상호 연결부를 통하거나 하여 서로 다른 기계에 분할되어 있을 수 있다.
몇몇 예시적인 실시예들에 대해 기술하고 첨부 도면에 도시하였지만, 본 기 술 분야의 통상의 지식을 가진자라면 여러가지 다른 변형례를 안출할 수 있기 때문에, 이러한 실시예들은 단지 광의의 본 발명을 설명하기 위한 것이지 이를 한정하는 것이 아니고 또한 본 발명은 이상에서 설명하고 도시한 특정의 구조 및 구성에 한정되는 것이 아님을 이해할 것이다.

Claims (53)

  1. 메모리 액세스 대기시간(latency)을 감소시키고 대역폭을 향상시키는 스케쥴링(scheduling) 수단을 갖는 메모리 콘트롤러;
    상기 메모리 콘트롤러에 연결된 판독 요청 큐;
    상기 메모리 콘트롤러에 연결된 명령 큐; 및
    상기 메모리 콘트롤러에 연결되어 있으며, 복수의 페이지 테이블 엔트리를 갖는 메모리 페이지 테이블 -상기 복수의 페이지 테이블 엔트리는 메모리 페이지 번호, 메모리 페이지 유효성 상태, 메모리 페이지 닫힘 상태, 및 상기 명령 큐의 시프트 레지스터 내의 슬롯을 가리키는 인덱스를 저장하기 위한 구조를 가짐-
    을 포함하는 장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키는 상기 스케쥴링 수단은 지능형 자동-프리차지 프로세스(intelligent auto-precharge process)를 포함하는 장치.
  5. 제2항에 있어서,
    상기 메모리 콘트롤러에 연결되어 있으며 복수의 페이지 이력 테이블 엔트리를 갖는 메모리 페이지 이력 테이블을 더 포함하는 장치.
  6. 제5항에 있어서,
    상기 복수의 페이지 이력 테이블 엔트리는 메모리 페이지 번호, 사용중(in-use) 상태, 제1 무충돌(conflict-free) 액세스들의 횟수, 제2 무충돌 액세스들의 횟수 및 커버리지(coverage)를 저장하기 위한 구조를 갖는 장치.
  7. 제1항에 있어서,
    메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키는 상기 스케쥴링 수단은 페이지 액세스 예측 프로세스를 포함하는 장치.
  8. 제1항에 있어서,
    메모리 액세스 대기시간을 감소시키고 대역폭을 개선시키는 상기 스케쥴링 수단은 마이크로 명령 스케쥴링 프로세스를 포함하는 장치.
  9. 제1항에 있어서,
    메모리 액세스 대기시간을 감소시키는 상기 스케쥴링 수단은 편의적 기록-플러싱(opportunistic write-flushing) 방식을 포함하며,
    상기 편의적 기록 플러싱 방식은 기록 플러싱 시퀀스들의 편의적 개시, 새로운 판독 요청들의 수신 시에 기록 플러싱 시퀀스들의 선점(preemption), 기록 금지 기간들 및 비FIFO(non-first-in-first-out) 기록 선택을 갖는 장치.
  10. 제5항에 있어서,
    상기 메모리 콘트롤러에 연결된 사전 계산된 룩업(lookup) 테이블
    을 더 포함하는 장치.
  11. 제10항에 있어서,
    메모리 액세스 대기시간을 감소시키는 상기 스케쥴링 수단은 페이지 액세스 지향 블록 기반 방식의 판독 요청 스케쥴링 프로세스(page-access oriented block-based read request scheduling process)를 포함하는 장치.
  12. 메모리 콘트롤러;
    상기 메모리 콘트롤러에 연결된 판독 요청 큐;
    상기 메모리 콘트롤러에 연결된 명령 큐;
    상기 메모리 콘트롤러에 연결되어 있으며 복수의 페이지 테이블 엔트리를 갖는 메모리 페이지 테이블 -상기 복수의 페이지 테이블 엔트리는 메모리 페이지 번호, 메모리 페이지 유효성 상태, 메모리 페이지 닫힘 상태, 및 상기 명령 큐의 시프트 레지스터 내의 슬롯을 가리키는 인덱스를 저장하기 위한 구조를 가짐- ;
    상기 메모리 콘트롤러에 연결되어 있으며 복수의 페이지 이력 테이블 엔트리를 갖는 메모리 페이지 이력 테이블 ; 및
    상기 메모리 콘트롤러에 연결된 사전 계산된 룩업 테이블
    을 포함하며,
    상기 메모리 콘트롤러는 메모리 액세스 대기시간을 감소시키는 메모리 스케쥴링 프로세스를 포함하는
    장치.
  13. 삭제
  14. 제12항에 있어서,
    상기 복수의 페이지 이력 테이블 엔트리는 메모리 페이지 번호, 사용중 상태, 제1 무충돌 액세스들의 횟수, 제2 무충돌 액세스들의 횟수 및 커버리지를 저장하기 위한 구조를 갖는 장치.
  15. 제12항에 있어서,
    상기 스케쥴링 프로세스는 지능형 자동-프리차지 프로세스를 포함하는 장치.
  16. 제12항에 있어서,
    상기 스케쥴링 프로세스는 페이지 액세스 예측 프로세스를 포함하는 장치.
  17. 제12항에 있어서,
    상기 스케쥴링 프로세스는 마이크로-명령 스케쥴링 프로세스를 포함하는 장치.
  18. 제12항에 있어서,
    상기 스케쥴링 프로세스는 편의적 기록-플러싱 방식을 포함하며,
    상기 편의적 기록 플러싱 방식은 기록 플러싱 시퀀스들의 편의적 개시, 새로운 판독 요청들의 수신 시에 기록 플러싱 시퀀스들의 선점, 기록 금지 기간들 및 비FIFO 기록 선택을 갖는 장치.
  19. 제12항에 있어서,
    상기 스케쥴링 프로세스는 페이지 액세스 지향 블록 기반 방식의 판독 요청 스케쥴링 프로세스를 포함하는 장치.
  20. 프로세서;
    상기 프로세서에 연결된 메모리 콘트롤러;
    상기 메모리 콘트롤러에 연결된 버스;
    상기 버스 및 상기 메모리 콘트롤러에 연결된 메모리;
    메모리 액세스 대기시간을 감소시키는 스케쥴링 수단;
    상기 메모리 콘트롤러에 연결된 판독 요청 큐; 및
    상기 메모리 콘트롤러에 연결된 명령 큐; 및
    상기 메모리 콘트롤러에 연결되어 있으며, 복수의 페이지 테이블 엔트리를 갖는 메모리 페이지 테이블 -상기 복수의 페이지 테이블 엔트리는 메모리 페이지 번호, 메모리 페이지 유효성 상태, 메모리 페이지 닫힘 상태, 및 상기 명령 큐의 시프트 레지스터 내의 슬롯을 가리키는 인덱스를 저장하기 위한 구조를 가짐-
    을 포함하는 시스템.
  21. 삭제
  22. 삭제
  23. 제20항에 있어서,
    메모리 액세스 대기시간을 감소시키는 상기 스케쥴링 수단은 지능형 자동-프리차지 프로세스를 포함하는 시스템.
  24. 제23항에 있어서,
    상기 메모리 콘트롤러에 연결되어 있으며 복수의 페이지 이력 테이블 엔트리를 갖는 메모리 페이지 이력 테이블
    을 더 포함하는 시스템.
  25. 제24항에 있어서,
    상기 복수의 페이지 이력 테이블 엔트리는 시스템 페이지 번호, 사용중 상태, 제1 무충돌 액세스들의 횟수, 제2 무충돌 액세스들의 횟수 및 커버리지를 저장하기 위한 구조를 갖는 시스템.
  26. 제20항에 있어서,
    메모리 액세스 대기시간을 감소시키는 상기 스케쥴링 수단은 페이지 액세스 예측 프로세스를 포함하는 시스템.
  27. 제20항에 있어서,
    메모리 액세스 대기시간을 감소시키는 상기 스케쥴링 수단은 마이크로-명령 스케쥴링 프로세스를 포함하는 시스템.
  28. 제20항에 있어서,
    메모리 액세스 대기시간을 감소시키는 상기 스케쥴링 수단은 편의적 기록-플러싱 방식을 포함하며,
    상기 편의적 기록-플러싱 방식은 기록 플러싱 시퀀스들의 편의적 개시, 새로운 판독 요청들의 수신 시에 기록 플러싱 시퀀스들의 선점, 기록 금지 기간들 및 비FIFO 기록 선택을 갖는 시스템.
  29. 제24항에 있어서,
    상기 메모리 콘트롤러에 연결된 사전 계산된 룩업 테이블을 더 포함하는 시스템.
  30. 제29항에 있어서,
    메모리 액세스 대기시간을 감소시키는 상기 스케쥴링 수단은 페이지 액세스 지향 블록 기반 방식의 판독 요청 스케쥴링 프로세스를 포함하는 시스템.
  31. 프로세서;
    상기 프로세서에 연결된 메모리 콘트롤러;
    상기 메모리 콘트롤러에 연결된 버스;
    상기 버스 및 상기 메모리 콘트롤러에 연결된 메모리;
    상기 메모리 콘트롤러에 연결된 판독 요청 큐;
    상기 메모리 콘트롤러에 연결된 명령 큐;
    상기 메모리 콘트롤러에 연결되어 있으며, 복수의 페이지 테이블 엔트리를 갖는 메모리 페이지 테이블 -상기 복수의 페이지 테이블 엔트리는 메모리 페이지 번호, 메모리 페이지 유효성 상태, 메모리 페이지 닫힘 상태, 및 상기 명령 큐의 시프트 레지스터 내의 슬롯을 가리키는 인덱스를 저장하기 위한 구조를 가짐-;
    상기 메모리 콘트롤러에 연결되어 있으며 복수의 페이지 이력 테이블 엔트리를 갖는 메모리 페이지 이력 테이블; 및
    상기 메모리 콘트롤러에 연결된 사전 계산된 룩업 테이블
    을 포함하고,
    상기 메모리 콘트롤러는 메모리 액세스 대기시간을 감소시키는 메모리 스케쥴링 프로세스를 포함하는
    시스템.
  32. 삭제
  33. 삭제
  34. 제31항에 있어서,
    상기 복수의 페이지 이력 테이블 엔트리는 메모리 페이지 번호 필드, 사용중 상태 필드, 제1 무충돌 액세스들의 횟수 필드, 제2 무충돌 액세스들의 횟수 필드, 및 커버리지 필드를 갖는 시스템.
  35. 제31항에 있어서,
    상기 스케쥴링 프로세스는 지능형 자동-프리차지 프로세스를 포함하는 시스템.
  36. 제31항에 있어서,
    상기 스케쥴링 프로세스는 페이지 액세스 예측 프로세스를 포함하는 시스템.
  37. 제31항에 있어서,
    상기 스케쥴링 프로세스는 마이크로-명령 스케쥴링 프로세스를 포함하는 시스템.
  38. 제31항에 있어서,
    상기 스케쥴링 프로세스는 편의적 기록-플러싱 방식을 포함하며,
    상기 편의적 기록-플러싱 방식은 기록 플러싱 시퀀스들의 편의적 개시, 새로운 판독 요청들의 수신 시에 기록 플러싱 시퀀스들의 선점, 기록 금지 기간들 및 비FIFO 기록 선택을 갖는 시스템.
  39. 제31항에 있어서,
    상기 스케쥴링 프로세스는 페이지 액세스 지향 블록 기반 방식의 판독 요청 스케쥴링 프로세스를 포함하는 시스템.
  40. 적어도 하나의 메모리 페이지의 자동적인 프리차지를 스케쥴링하는 단계 및 적어도 하나의 메모리 페이지의 자동적인 프리차지의 스케쥴링을 금지하는 단계 중 하나를 결정하는 단계;
    메모리 콘트롤러에 의해 액세스되도록 하기 위해 적어도 하나의 메모리 페이지를 언제 열린 상태로 두어야 하는지를 예측하는 단계;
    복수의 메모리 명령 타이밍 요건을 완화시키면서 복수의 메모리 명령 각각을 메모리 명령 스트림에 독립적으로 삽입하는 것을 스케쥴링하는 단계;
    편의적 메모리 기록-명령 플러싱 시퀀스들의 개시를 수행하는 단계; 및
    순서없는(out-of-order) 페이지 지향 방식의 메모리 판독 요청들을 처리하는 단계
    를 포함하는 방법.
  41. 제40항에 있어서,
    적어도 하나의 메모리 페이지의 자동적인 프리차지를 스케쥴링하는 단계 및 적어도 하나의 메모리 페이지의 자동적인 프리차지의 스케쥴링을 금지하는 단계 중 하나를 결정하는 상기 단계는,
    제1 메모리 페이지가 제2 메모리 페이지와 충돌하는지를 판정하는 단계;
    상기 제1 메모리 페이지에 대해 엔트리가 존재하는지와 상기 제1 메모리 페이지가 유효한지를 판정하는 단계;
    상기 제1 메모리 페이지에 대해 상기 엔트리가 존재하고 상기 제1 메모리 페이지가 유효한 경우, 메모리 명령들을 스케쥴링하고 복수의 페이지 테이블 엔트리를 갱신하는 단계;
    상기 제1 메모리 페이지에 대해 상기 엔트리가 존재하지 않고 상기 제1 메모리 페이지가 유효하지 않은 경우, 상기 제1 메모리 페이지에 대해 제1 명령이 제1 큐에 존재하는지를 판정하는 단계;
    상기 제1 메모리 페이지에 대해 제1 명령이 상기 제1 큐에 존재하는 경우, 메모리 명령들을 스케쥴링하고 상기 복수의 페이지 테이블 엔트리를 갱신하는 단계; 및
    프리차지 상태 비트를 설정하는 단계
    를 포함하는 방법.
  42. 제40항에 있어서,
    메모리 콘트롤러에 의해 액세스되도록 하기 위해 적어도 하나의 메모리 페이지를 언제 열린 상태로 두어야 하는지를 예측하는 상기 단계는,
    메모리 페이지 이력 테이블에서 제1 메모리 페이지를 검색하는 단계;
    상기 제1 메모리 페이지에 대해 제1 기간 및 제2 기간 동안 무충돌 액세스들을 결정하는 단계;
    상기 제1 메모리 페이지에 대한 커버리지를 결정하는 단계;
    상기 제1 페이지가 상기 메모리 콘트롤러에 의해 액세스되도록 열려 있었던 기간인 제3 기간을 결정하는 단계;
    상기 제1 페이지가 액세스되도록 열어 두는 단계와, 상기 커버리지, 상기 제1 기간, 상기 제2 기간, 및 상기 제3 기간에 기초하여 상기 제1 페이지를 닫는 것 단계 중 하나를 결정하는 단계; 및
    상기 페이지 이력 테이블 내의 복수의 엔트리를 갱신하는 단계
    를 포함하는 방법.
  43. 제40항에 있어서,
    상기 복수의 메모리 명령 각각을 상기 메모리 명령 스트림에 독립적으로 삽입하는 것을 스케쥴링하는 상기 단계는,
    메모리 요청 명령 큐 내의 메모리 요청에 기초하여 메모리 명령들의 시퀀스를 결정하는 단계;
    복수의 메모리 명령에 대한 타이밍 요건들을 결정하는 단계; 및
    상기 복수의 메모리 명령에 대한 타이밍 요건들 및 페이지 테이블의 상태에 기초하여 상기 메모리 명령들의 시퀀스에 대한 스케쥴링 순서를 결정하는 단계
    를 포함하는 방법.
  44. 제40항에 있어서,
    상기 편의적 메모리 기록 명령 플러싱을 수행하는 단계는,
    메모리 판독 요청들의 수신 시에 기록-플러싱 시퀀스를 선점하는(preempting) 단계;
    복수의 기록 금지 기간을 결정하는 단계; 및
    메모리 자원 소모를 줄이기 위해 복수의 메모리 기록 명령을 비FIFO 순서로 선택하는 단계
    를 포함하는 방법.
  45. 제44항에 있어서,
    기록 버퍼에 대한 임계값을 선택하는 단계,
    메모리 판독 요청이 판독 요청 큐에 존재하는지를 판정하는 단계;
    상기 메모리 판독 요청이 상기 판독 요청 큐에 존재하는 경우, 기록 플러싱 시퀀스를 중지하는 단계;
    상기 판독 요청이 상기 판독 요청 큐에 존재하는 경우, 상기 복수의 금지 기간 중 하나를 시행하는 단계;
    기록-버퍼 내용들이 상기 임계값을 초과하는 경우 기록-플러싱 시퀀스를 개시하는 단계;
    제1 메모리 판독 요청에 대한 우선순위를 결정하는 단계; 및
    기록 플러싱 요청을 스케쥴링하는 단계
    를 더 포함하는 방법.
  46. 제40항에 있어서,
    순서없는 페이지 지향 방식의 메모리 판독 요청을 처리하는 상기 단계는,
    블록 크기를 선택하는 단계;
    판독 보류 임계 기간(read-hold threshold period)을 선택하는 단계;
    판독 요청이 판독 요청 큐에 남아 있는 기간을 결정하는 단계;
    상기 판독 요청이 판독 요청 큐에 상기 판독 보류 임계 기간보다 길게 남아 있는 경우, 메모리에 대해 상기 판독 요청을 발행하는 단계;
    상기 블록 크기에 기초하여 상기 판독 요청 큐의 선두로부터 판독 요청들의 블록을 선택하는 단계;
    상기 판독 요청들의 블록의 상태를 결정하는 단계;
    상기 결정된 상태를 사용하여 사전 계산된 룩업 테이블을 생성하는 단계;
    상기 판독 요청들의 블록의 상기 상태를 하나의 값으로 결합하는 단계; 및
    상기 값 및 상기 사전 계산된 룩업 테이블에 기초하여 발행할 판독 요청을 결정하는 단계
    를 포함하는 방법.
  47. 기계에 의해 실행될 때 상기 기계가 이하의 동작들을 수행하게 하는 명령어들을 포함하는 기계 판독가능한 매체로서,
    상기 동작들은,
    적어도 하나의 메모리 페이지의 자동적인 프리차지를 스케쥴링하는 단계 및 적어도 하나의 메모리 페이지의 자동적인 프리차지의 스케쥴링을 금지하는 단계 중 하나를 결정하는 단계;
    메모리 콘트롤러에 의해 액세스되도록 하기 위해 적어도 하나의 메모리 페이지를 언제 열린 상태로 두어야 하는지를 예측하는 단계;
    복수의 메모리 명령 타이밍 요건을 완화시키면서 복수의 메모리 명령 각각을 메모리 명령 스트림에 독립적으로 삽입하는 것을 스케쥴링하는 단계;
    편의적 메모리 기록-명령 플러싱 시퀀스들의 개시를 수행하는 단계; 및
    순서없는 페이지 지향 방식의 메모리 판독 요청들을 처리하는 단계
    를 포함하는 기계 판독가능한 매체.
  48. 제47항에 있어서,
    적어도 하나의 메모리 페이지의 자동적인 프리차지를 스케쥴링하는 단계와 적어도 하나의 메모리 페이지의 자동적인 프리차지의 스케쥴링을 금지하는 단계 중 하나를 결정하는 상기 단계는, 기계에 의해 수행될 때, 상기 기계가,
    제1 메모리 페이지가 제2 메모리 페이지와 충돌하는지를 판정하는 단계;
    상기 제1 메모리 페이지에 대해 엔트리가 존재하고 상기 제1 메모리 페이지가 유효한지를 판정하는 단계;
    상기 제1 메모리 페이지에 대해 상기 엔트리가 존재하고 상기 제1 메모리 페이지가 유효한 경우, 메모리 명령들을 스케쥴링하고 페이지 테이블 엔트리들을 갱신하는 단계;
    상기 제1 메모리 페이지에 대해 상기 엔트리가 존재하지 않고 상기 제1 메모리 페이지가 유효하지 않은 경우, 상기 제1 메모리 페이지에 대해 제1 명령이 제1 큐에 존재하는지를 판정하는 단계;
    상기 제1 메모리 페이지에 대해 상기 제1 명령이 상기 제1 큐에 존재하는 경우, 메모리 명령들을 스케쥴링하고 페이지 테이블 엔트리들을 갱신하는 단계; 및
    프리차지 상태 비트를 설정하는 단계
    를 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는 기계 판독가능한 매체.
  49. 제47항에 있어서,
    메모리 콘트롤러에 의해 액세스되도록 하기 위해 적어도 하나의 메모리 페이지를 언제 열린 상태로 두어야 하는지를 예측하는 상기 단계는, 기계에 의해 수행될 때, 상기 기계가,
    메모리 페이지 이력 테이블에서 제1 메모리 페이지를 검색하는 단계;
    상기 제1 메모리 페이지에 대해 제1 기간 및 제2 기간 동안 무충돌 액세스들을 결정하는 단계;
    상기 제1 메모리 페이지에 대한 커버리지를 결정하는 단계;
    상기 제1 페이지가 상기 메모리 콘트롤러에 의해 액세스되도록 열려 있었던 기간인 제3 기간을 결정하는 단계;
    상기 제1 페이지가 액세스되도록 열어 두는 단계와, 상기 커버리지, 상기 제1 기간, 상기 제2 기간, 및 상기 제3 기간에 기초하여 상기 제1 페이지를 닫는 단계 중 하나를 결정하는 단계; 및
    상기 페이지 이력 테이블 내의 복수의 엔트리를 갱신하는 단계
    를 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는 기계 판독가능한 매체.
  50. 제47항에 있어서,
    상기 복수의 메모리 명령 각각을 메모리 명령 스트림에 독립적으로 삽입하는 것을 스케쥴링하는 상기 단계는, 기계에 의해 수행될 때, 상기 기계가,
    메모리 요청 명령 큐 내의 메모리 요청에 기초하여 메모리 명령들의 시퀀스를 결정하는 단계;
    복수의 메모리 명령에 대한 타이밍 요건들을 결정하는 단계; 및
    상기 복수의 메모리 명령에 대한 타이밍 요건들 및 페이지 테이블 상태에 기초하여 상기 메모리 명령들의 시퀀스에 대한 스케쥴링 순서를 결정하는 단계
    를 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는 기계 판독가능한 매체.
  51. 제47항에 있어서,
    편의적 메모리 기록 명령 플러싱을 수행하는 상기 단계는, 기계에 의해 수행될 때, 상기 기계가,
    메모리 판독 요청의 수신 시에 기록 플러싱 시퀀스를 선점하는 단계;
    복수의 기록 금지 기간을 결정하는 단계; 및
    메모리 자원 소모를 줄이기 위해 메모리 기록 명령들을 비FIFO 순서로 선택하는 단계
    를 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는 기계 판독가능한 매체.
  52. 제51항에 있어서,
    기계에 의해 수행될 때, 상기 기계가,
    기록 버퍼에 대한 임계값을 선택하는 단계;
    메모리 판독 요청이 판독 요청 큐에 존재하는지를 판정하는 단계;
    상기 메모리 판독 요청이 상기 판독 요청 큐에 존재하는 경우, 기록-플러싱 시퀀스를 중지하는 단계;
    상기 판독 요청이 상기 판독 요청 큐에 존재하는 경우, 상기 복수의 금지 기간 중 하나를 시행하는 단계;
    기록 버퍼 내용이 상기 임계값을 초과하는 경우 기록-플러싱 시퀀스를 개시하는 단계;
    제1 메모리 판독 요청에 대한 우선순위를 결정하는 단계; 및
    기록-플러싱 요청을 스케쥴링하는 단계
    를 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는 기계 판독가능한 매체.
  53. 제47항에 있어서,
    순서없는 페이지 지향 방식의 메모리 판독 요청들을 처리하는 상기 단계는, 기계에 의해 수행될 때, 상기 기계가,
    블록 크기를 선택하는 단계;
    판독 보류 임계 기간을 선택하는 단계;
    판독 요청이 판독 요청 큐에 남아 있는 기간을 결정하는 단계;
    상기 판독 요청이 상기 판독 요청 큐에 상기 판독 보류 임계 기간보다 길게 남아 있는 경우, 메모리에 대해 상기 판독 요청을 발행하는 단계;
    상기 블록 크기에 기초하여 상기 판독 요청 큐의 선두로부터 판독 요청들의 블록을 선택하는 단계;
    상기 판독 요청들의 블록의 상태를 결정하는 단계;
    상기 결정된 상태를 사용하여 사전 계산된 룩업 테이블을 생성하는 단계;
    상기 판독 요청들의 블록의 상기 상태를 하나의 값으로 결합하는 단계; 및
    상기 값 및 상기 사전 계산된 룩업 테이블에 기초하여 발행할 판독 요청을 결정하는 단계
    를 포함하는 동작들을 수행하게 하는 명령어들을 더 포함하는 기계 판독가능한 매체.
KR1020047004589A 2001-09-27 2002-09-27 메모리 액세스 대기시간을 감소시키기 위한 메모리 액세스스케쥴링 방법 및 장치 KR100610730B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/966,957 2001-09-27
US09/966,957 US6785793B2 (en) 2001-09-27 2001-09-27 Method and apparatus for memory access scheduling to reduce memory access latency
PCT/US2002/031161 WO2003027867A2 (en) 2001-09-27 2002-09-27 Method and apparatus for memory access scheduling to reduce memory access latency

Publications (2)

Publication Number Publication Date
KR20040037187A KR20040037187A (ko) 2004-05-04
KR100610730B1 true KR100610730B1 (ko) 2006-08-09

Family

ID=25512111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047004589A KR100610730B1 (ko) 2001-09-27 2002-09-27 메모리 액세스 대기시간을 감소시키기 위한 메모리 액세스스케쥴링 방법 및 장치

Country Status (7)

Country Link
US (1) US6785793B2 (ko)
EP (1) EP1481326A2 (ko)
KR (1) KR100610730B1 (ko)
CN (1) CN100587675C (ko)
AU (1) AU2002330170A1 (ko)
TW (1) TWI269971B (ko)
WO (1) WO2003027867A2 (ko)

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596139B2 (en) * 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7356030B2 (en) * 2000-11-17 2008-04-08 Foundry Networks, Inc. Network switch cross point
US7236490B2 (en) * 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US6910095B2 (en) * 2001-10-01 2005-06-21 Britestream Networks, Inc. Memory request handling method for small discontiguous accesses to high-density memory devices
US7085866B1 (en) * 2002-02-19 2006-08-01 Hobson Richard F Hierarchical bus structure and memory access protocol for multiprocessor systems
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US6983353B2 (en) * 2002-04-29 2006-01-03 Emc Corporation Method and apparatus for enhancing operations in disk array storage devices
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US7266117B1 (en) * 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US7468975B1 (en) * 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7143412B2 (en) * 2002-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for optimizing performance in a multi-processing system
US7159066B2 (en) * 2002-08-27 2007-01-02 Intel Corporation Precharge suggestion
US20040088472A1 (en) * 2002-10-31 2004-05-06 Nystuen John M. Multi-mode memory controller
US6910114B2 (en) * 2002-11-15 2005-06-21 Intel Corporation Adaptive idle timer for a memory device
US7469316B2 (en) * 2003-02-10 2008-12-23 Intel Corporation Buffered writes and memory page control
JP4250989B2 (ja) * 2003-03-26 2009-04-08 日本電気株式会社 メモリアクセス制御装置
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
JP2006527878A (ja) 2003-06-16 2006-12-07 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 多重メモリを有するデータ処理回路
US7111153B2 (en) * 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
DE102004009428A1 (de) * 2004-02-24 2005-09-08 Deutsche Thomson-Brandt Gmbh Speicher-Controller
DE602004020504D1 (de) 2003-12-09 2009-05-20 Thomson Licensing Speichersteuerung
JP4435588B2 (ja) * 2004-01-30 2010-03-17 株式会社日立製作所 ストレージシステム
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US7222224B2 (en) * 2004-05-21 2007-05-22 Rambus Inc. System and method for improving performance in computer memory systems supporting multiple memory access latencies
US7657703B1 (en) * 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US20060136681A1 (en) * 2004-12-21 2006-06-22 Sanjeev Jain Method and apparatus to support multiple memory banks with a memory block
US7328315B2 (en) * 2005-02-03 2008-02-05 International Business Machines Corporation System and method for managing mirrored memory transactions and error recovery
US7609567B2 (en) 2005-06-24 2009-10-27 Metaram, Inc. System and method for simulating an aspect of a memory circuit
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US9542352B2 (en) * 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8060774B2 (en) * 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8619452B2 (en) 2005-09-02 2013-12-31 Google Inc. Methods and apparatus of stacking DRAMs
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US7392338B2 (en) * 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US7386656B2 (en) * 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
JP2008544437A (ja) * 2005-06-24 2008-12-04 メタラム インコーポレイテッド 一体化されたメモリコア及びメモリインターフェース回路
US20070005868A1 (en) * 2005-06-30 2007-01-04 Osborne Randy B Method, apparatus and system for posted write buffer for memory with unidirectional full duplex interface
US7426621B2 (en) * 2005-12-09 2008-09-16 Advanced Micro Devices, Inc. Memory access request arbitration
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
JP2007249837A (ja) * 2006-03-17 2007-09-27 Nec Electronics Corp メモリ制御装置、メモリ制御方法及び携帯機器
US20070288690A1 (en) * 2006-06-13 2007-12-13 Foundry Networks, Inc. High bandwidth, high capacity look-up table implementation in dynamic random access memory
US7724589B2 (en) 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US7903654B2 (en) * 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US7644248B2 (en) * 2006-09-27 2010-01-05 Intel Corporation Mechanism to generate logically dedicated read and write channels in a memory controller
US20080103529A1 (en) * 2006-10-26 2008-05-01 Old Dominion University Apparatus and methods for performing cellular electro-manipulations
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US20080162852A1 (en) * 2006-12-28 2008-07-03 Surya Kareenahalli Tier-based memory read/write micro-command scheduler
US7978614B2 (en) * 2007-01-11 2011-07-12 Foundry Network, LLC Techniques for detecting non-receipt of fault detection protocol packets
US8037399B2 (en) * 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8209479B2 (en) 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
US9588810B2 (en) 2007-08-08 2017-03-07 Microsoft Technology Licensing, Llc Parallelism-aware memory request scheduling in shared memory controllers
US7761656B2 (en) * 2007-08-22 2010-07-20 Advanced Micro Devices, Inc. Detection of speculative precharge
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US8149839B1 (en) 2007-09-26 2012-04-03 Foundry Networks, Llc Selection of trunk ports and paths using rotation
EP2223224B1 (en) * 2007-11-19 2011-06-01 Rambus Inc. Scheduling based on turnaround event
US8180975B2 (en) * 2008-02-26 2012-05-15 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
CN101587461B (zh) * 2008-05-20 2012-03-07 上海奇码数字信息有限公司 存储器访问调度装置、调度方法与存储器访问控制系统
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US7996647B2 (en) * 2008-07-23 2011-08-09 Microchip Technology Incorporated Enhanced microprocessor or microcontroller
CN101639817B (zh) * 2009-03-13 2012-01-25 青岛海信信芯科技有限公司 一种存储器的控制方法、存储器控制器和存储器控制系统
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
CN101625887B (zh) * 2009-08-14 2011-11-02 西北工业大学 访存请求调度装置以及用该装置进行访存请求调度的方法
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
EP2526493B1 (en) * 2010-01-19 2019-06-19 Rambus Inc. Adaptively time-multiplexing memory references from multiple processor cores
US8463229B2 (en) * 2010-01-27 2013-06-11 Nokia Corporation Coexistence for cognitive radio
US8560796B2 (en) * 2010-03-29 2013-10-15 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information
US8572322B2 (en) * 2010-03-29 2013-10-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US9842068B2 (en) 2010-04-14 2017-12-12 Qualcomm Incorporated Methods of bus arbitration for low power memory access
US8539129B2 (en) * 2010-04-14 2013-09-17 Qualcomm Incorporated Bus arbitration techniques to reduce access latency
CN102236622A (zh) * 2010-04-30 2011-11-09 中兴通讯股份有限公司 提高动态存储器带宽利用率的动态存储器控制器及方法
US8635385B2 (en) * 2010-07-16 2014-01-21 Advanced Micro Devices, Inc. Mechanism to handle peripheral page faults
US9118611B2 (en) 2010-08-20 2015-08-25 Mosys, Inc. Data synchronization for circuit resources without using a resource buffer
TWI409701B (zh) * 2010-09-02 2013-09-21 Univ Nat Central Execute the requirements registration and scheduling method
CN102456391B (zh) * 2010-10-26 2015-01-28 中兴通讯股份有限公司 提高ddr控制器效率的方法和装置
CN102855195B (zh) * 2011-06-30 2015-05-27 重庆重邮信科通信技术有限公司 第二代低功耗双倍速率存储控制器及访问命令处理方法
US8949547B2 (en) * 2011-08-08 2015-02-03 Arm Limited Coherency controller and method for data hazard handling for copending data access requests
US8379457B1 (en) 2012-01-26 2013-02-19 Stec, Inc. Auto calibration of storage memory controller
US20130205089A1 (en) * 2012-02-08 2013-08-08 Mediatek Singapore Pte. Ltd. Cache Device and Methods Thereof
US9619316B2 (en) 2012-03-26 2017-04-11 Intel Corporation Timing optimization for memory devices employing error detection coded transactions
KR101949382B1 (ko) 2012-04-04 2019-02-18 삼성전자주식회사 서비스 품질의 향상을 위한 시스템 온 칩 및 시스템 온 칩의 제어 방법
KR101919903B1 (ko) 2012-09-14 2018-11-19 삼성전자 주식회사 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
US10445243B2 (en) * 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US9423978B2 (en) * 2013-05-08 2016-08-23 Nexgen Storage, Inc. Journal management
US9336855B2 (en) * 2013-05-14 2016-05-10 Qualcomm Incorporated Methods and systems for smart refresh of dynamic random access memory
US10956044B2 (en) * 2013-05-16 2021-03-23 Advanced Micro Devices, Inc. Memory system with region-specific memory access scheduling
WO2014203029A1 (en) * 2013-06-17 2014-12-24 Freescale Semiconductor, Inc. Efficient scheduling in asynchronous contention-based system
US9811453B1 (en) * 2013-07-31 2017-11-07 Juniper Networks, Inc. Methods and apparatus for a scheduler for memory access
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
TWI553483B (zh) * 2014-10-13 2016-10-11 瑞昱半導體股份有限公司 處理器及存取記憶體的方法
KR20160061704A (ko) 2014-11-24 2016-06-01 삼성전자주식회사 페이지 상태 알림 기능이 있는 메모리 장치
US10484519B2 (en) 2014-12-01 2019-11-19 Hewlett Packard Enterprise Development Lp Auto-negotiation over extended backplane
KR101993028B1 (ko) * 2015-02-05 2019-06-26 에스케이하이닉스 주식회사 메모리 컨트롤러
EP3274818B1 (en) * 2015-03-26 2021-01-27 Intel Corporation Computing methods and apparatuses with graphics and system memory conflict check
US10025685B2 (en) * 2015-03-27 2018-07-17 Intel Corporation Impedance compensation based on detecting sensor data
KR102076196B1 (ko) * 2015-04-14 2020-02-12 에스케이하이닉스 주식회사 메모리 시스템, 메모리 모듈 및 메모리 모듈의 동작 방법
WO2017065732A1 (en) 2015-10-12 2017-04-20 Hewlett Packard Enterprise Development Lp Switch network architecture
US10437480B2 (en) * 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler
CN105550152B (zh) * 2015-12-11 2018-03-30 中国航空工业集团公司西安航空计算技术研究所 一种基于时间的gjb289数据总线命令调度电路及方法
US10222853B2 (en) 2016-03-03 2019-03-05 Qualcomm Incorporated Power saving techniques for memory systems by consolidating data in data lanes of a memory bus
US10140181B1 (en) 2016-05-19 2018-11-27 Vexata, Inc. Endurance aware raid scheme for flash based SSDS with FPGA optimized implementation
US10134473B1 (en) * 2016-05-19 2018-11-20 Vexata, Inc. Input output scheduling for solid state media
CN106155586B (zh) * 2016-05-31 2019-03-08 华为技术有限公司 一种存储方法、服务器及存储控制器
CN106095611A (zh) * 2016-06-20 2016-11-09 中国航天科技集团公司第九研究院第七七研究所 一种快速响应ahb访问的容错型sdram控制方法
US10402120B2 (en) * 2016-07-15 2019-09-03 Advanced Micro Devices, Inc. Memory controller arbiter with streak and read/write transaction management
US9684461B1 (en) 2016-10-31 2017-06-20 International Business Machines Corporation Dynamically adjusting read data return sizes based on memory interface bus utilization
US9892066B1 (en) 2016-10-31 2018-02-13 International Business Machines Corporation Dynamically adjusting read data return sizes based on interconnect bus utilization
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
US10621094B2 (en) 2017-06-28 2020-04-14 Intel Corporation Coarse tag replacement
US10803000B2 (en) 2017-12-04 2020-10-13 Synopsys, Inc. Phase-aware control and scheduling
CN112154408A (zh) * 2018-04-12 2020-12-29 美光科技公司 重放受保护存储器块命令队列
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
CN110729006B (zh) * 2018-07-16 2022-07-05 超威半导体(上海)有限公司 存储器控制器中的刷新方案
CN113168385A (zh) * 2018-08-03 2021-07-23 御眼视觉技术有限公司 访问动态存储器模块
US10545701B1 (en) * 2018-08-17 2020-01-28 Apple Inc. Memory arbitration techniques based on latency tolerance
CN110858121B (zh) * 2018-08-23 2023-07-11 阿里巴巴集团控股有限公司 后台操作的调度方法及装置
KR102254501B1 (ko) * 2018-10-19 2021-05-21 한양대학교 산학협력단 부분 순서 보장 기반의 입출력 스케줄러 및 그 방법
CN109656846B (zh) * 2018-12-20 2020-11-17 湖南国科微电子股份有限公司 电子终端及存储器可用延时参数区间寻优方法与装置
US10768859B1 (en) * 2019-04-10 2020-09-08 SK Hynix Inc. History-based memory control system and method
US10860388B1 (en) * 2019-07-09 2020-12-08 Micron Technology, Inc. Lock management for memory subsystems
CN110362516B (zh) * 2019-07-23 2020-11-10 南京凯鼎电子科技有限公司 一种提高ddr存储总线利用率的方法和装置
CN112468481B (zh) * 2020-11-23 2022-09-16 西安西热电站信息技术有限公司 一种基于CAS的单页和多页web应用身份集成认证方法
CN112767978B (zh) * 2021-01-11 2022-10-14 湖南国科微电子股份有限公司 一种ddr命令调度方法、装置、设备及介质
US11656797B2 (en) * 2021-07-28 2023-05-23 Western Digital Technologies, Inc. Data storage device executing runt write commands as free commands

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278967A (en) 1990-08-31 1994-01-11 International Business Machines Corporation System for providing gapless data transfer from page-mode dynamic random access memories
US6154826A (en) * 1994-11-16 2000-11-28 University Of Virginia Patent Foundation Method and device for maximizing memory system bandwidth by accessing data in a dynamically determined order
EP0940757A3 (en) 1997-12-05 2000-05-24 Texas Instruments Incorporated Traffic controller using priority and burst control for reducing access latency
US6173345B1 (en) 1998-11-03 2001-01-09 Intel Corporation Method and apparatus for levelizing transfer delays for a channel of devices such as memory devices in a memory subsystem
US6546439B1 (en) * 1998-12-09 2003-04-08 Advanced Micro Devices, Inc. Method and system for improved data access
US6510497B1 (en) * 1998-12-09 2003-01-21 Advanced Micro Devices, Inc. Method and system for page-state sensitive memory control and access in data processing systems
US6418525B1 (en) 1999-01-29 2002-07-09 International Business Machines Corporation Method and apparatus for reducing latency in set-associative caches using set prediction
EP1236092A4 (en) 1999-09-01 2006-07-26 Intel Corp BRANCH COMMAND FOR A PROCESSOR
US6631440B2 (en) * 2000-11-30 2003-10-07 Hewlett-Packard Development Company Method and apparatus for scheduling memory calibrations based on transactions

Also Published As

Publication number Publication date
CN1735869A (zh) 2006-02-15
EP1481326A2 (en) 2004-12-01
CN100587675C (zh) 2010-02-03
KR20040037187A (ko) 2004-05-04
AU2002330170A1 (en) 2003-04-07
US6785793B2 (en) 2004-08-31
WO2003027867A3 (en) 2004-09-23
TWI269971B (en) 2007-01-01
WO2003027867A2 (en) 2003-04-03
US20030061459A1 (en) 2003-03-27

Similar Documents

Publication Publication Date Title
KR100610730B1 (ko) 메모리 액세스 대기시간을 감소시키기 위한 메모리 액세스스케쥴링 방법 및 장치
KR100724557B1 (ko) 아웃 오브 오더 dram 시퀀서
US7127574B2 (en) Method and apparatus for out of order memory scheduling
JP4695761B2 (ja) コマンド再順序付けシステム
EP1110151B1 (en) Buffering system bus for external-memory accesses
JP4472186B2 (ja) 外部デバイスへのアクセスを優先順序付けるための方法および装置
JP5272274B2 (ja) メモリアクセスの順序を変更するシステム、装置、および方法
JP5305542B2 (ja) 投機的なプリチャージの検出
US6799257B2 (en) Method and apparatus to control memory accesses
US20150046642A1 (en) Memory command scheduler and memory command scheduling method
KR19980042453A (ko) 데이타 처리시스템에서 복수개의 메모리 억세스 리퀘스트신호를리오더링하는 방법
WO2011126625A2 (en) Scheduling memory access requests using predicted memory timing and state information
JP2002530743A (ja) ページタグレジスタを使用して、メモリデバイス内の物理ページの状態を追跡すること
JP4250989B2 (ja) メモリアクセス制御装置
JP2004500608A (ja) ユニバーサルリソースアクセスコントローラ
JP5393405B2 (ja) メモリ制御回路
JP2002063130A (ja) バス調停システム
JP2011100273A (ja) メモリ制御回路
JP2000315172A (ja) アクセス待ち時間を減少するためにメモリ状態情報を使用するメモリ制御
JPH1131072A (ja) メモリ先行ロード装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090730

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee