KR101554294B1 - 추론적 프리챠지의 검출 - Google Patents

추론적 프리챠지의 검출 Download PDF

Info

Publication number
KR101554294B1
KR101554294B1 KR1020107006272A KR20107006272A KR101554294B1 KR 101554294 B1 KR101554294 B1 KR 101554294B1 KR 1020107006272 A KR1020107006272 A KR 1020107006272A KR 20107006272 A KR20107006272 A KR 20107006272A KR 101554294 B1 KR101554294 B1 KR 101554294B1
Authority
KR
South Korea
Prior art keywords
memory
page
bank
predetermined
access
Prior art date
Application number
KR1020107006272A
Other languages
English (en)
Other versions
KR20100055503A (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 KR20100055503A publication Critical patent/KR20100055503A/ko
Application granted granted Critical
Publication of KR101554294B1 publication Critical patent/KR101554294B1/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
    • 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

Landscapes

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

Abstract

DRAM 제어기(103)는 페이지 히트들의 수를 최대화하고 페이지 충돌들 및 페이지 미스들의 수를 최소화하기 위해 판독/기록 요청들을 재배열하도록 구성될 수 있다. 모든 개별적인 페이지를 추적하지 않으면서, 각 판독/기록 요청에 대한 자동-프리챠지 예측을 얻기 위해 3-레벨 예측 알고리즘이 수행될 수 있다. 대신에, DRAM 제어기는 DRAM(105)의 각 뱅크에 대한 페이지 활동의 이력을 추적하고, 뱅크 기반이 아닌 제 1 순위 기반의 이력에 대해 예측을 행한다. 지정된 수의 메모리 요청들이 한번에 큐 내에 저장될 수 있으며, 페이지에 대한 액세스 이후 그 페이지를 닫아야하는지 아니면 열린 채로 남겨두어야 하는 지를 결정하는 데에 이용될 수 있다. 큐 내의 어떠한 미래 요청(future request)들도 그 페이지를 포함하고 있는 소정의 뱅크에 대한 것이 아니라면, 그 뱅크에 대한 최근의 뱅크 이력을 이용하여, 그 페이지를 닫아야하는지 아니면 열린 채로 남겨두어야 하는 지에 대한 예측을 얻는다. 만일 상기 결정 그리고/또는 예측의 결과로서 페이지가 닫히지 않는다면, 그 페이지는 열린 채로 남겨지며, 그 페이지에 대한 마지막 액세스 이후 지정된 시간 길이 동안 아이들 상태로 유지된 후에 닫혀진다.

Description

추론적 프리챠지의 검출{DETECTION OF SPECULATIVE PRECHARGE}
본 발명은 일반적으로 메모리 시스템들의 분야에 관한 것으로서, 보다 특정하게는 메모리 제어기의 설계에 관한 것이다.
오늘날 컴퓨터 시스템들이 점점 더 복잡해지고, 기술의 진보에 의해 프로세서의 속도가 끊임없이 증가함에 따라, 소정 시스템의 메모리의 대역폭 및 레이턴시에 종종 크게 의존하는 시스템 성능을 최적화하는 것이 더욱 더 어려워지고 있다. 결과적으로, 최저의 레이턴시로 메모리를 액세스하고, 메모리 대역폭을 최대로 이용하게 되면, 시스템의 성능을 개선 그리고/또는 최적화할 수 있다. 메모리를 액세스하고 소정의 메모리 요청을 완료하는 데에 요구되는 시간이 증가함에 따라, 시스템은 느려지게 된다. 따라서, 액세스 시간을 어느 정도 감소시키고, 그리고/또는 메모리 버스 상에서의 쓰루풋을 전체적으로 증가시키게 되면, 시스템의 성능을 개선할 수 있다.
특히 데스크탑 컴퓨터들, 그래픽 어댑터 카드들 및 노트북 컴퓨터들을 포함하는 다수의 시스템들은 다이내믹 랜덤 액세스 메모리(DRAM)를 이용한다. DRAM 디바이스들은, 특히 스태틱 랜덤 액세스 메모리(SRAM) 디바이스들을 포함하는 다른 메모리 기술들에 비해 많은 장점들을 제공한다. 이러한 장점들중 가장 중요한 것은 저장 밀도가 더 높고 전력 소모가 더 적다는 것이다. 하지만, 이러한 장점들은, 각각의 후속하는 액세스에 대해, 예를 들어 각각의 판독/기록 액세스 이전/이후에, DRAM 디바이스들 내에 메모리 셀들 및 다른 컴포넌트들을 준비할 때에 야기되는 많은 시간 지연(time delay)들을 희생하여 얻어지는 것이다. 이러한 지연들의 예로는 로우 프리챠지(row precharge), 루우 리프레시(row refresh) 및 로우 활성화(row activation)를 수행하는 데에 요구되는 시간이 있다. 이러한 지연들을 야기할 때에 메모리 동작들을 보다 정확하게 관리하고 제어하기 위해, 판독/기록 액세스들 사이에서 전송되는 부가적인 커맨드들이 생성되는데, 이들은 부가적인 오버헤드를 야기한다. 오늘날 이용되는 DRAM들 중에서 많은 비율의 DRAM은 더블-데이터-레이트 동기 DRAM (DDR SDRAM) 패밀리에 속한다.
(DDR2 및 DDR3을 포함하는) DDR SDRAM은, 시스템 클럭에 기초하여 스트로브 신호(strobe signal)의 상승 에지 및 하강 에지 상에 데이터를 전송함으로써, 싱글-데이터-레이트 SDRAM 보다 더 큰 대역폭을 달성한다. 이에 의해, 전송 레이트가 실제로 두배가 됨으로써, 메모리 버스의 주파수의 증가를 요구하지 않으면서, 시스템 성능을 개선하게 된다. DRAM 성능을 더욱 개선하기 위해, 메모리 요소들은 종종 페이지 구성으로 액세스되는데, 이러한 페이지 구성에서는, 개별적인 칼럼 어드레스 스트로브(CAS) 신호들을 이용하여 다수의 판독들 및 기록들을 수행하지 않으면서, DRAM의 로우가 활성이 되거나 또는 열릴(open) 수 있다(로우 어드레스 스트로브(RAS) 신호가 어서트(assert)된 상태로 유지될 필요가 없다). 이에 의해, 동일한 로우 내에서의 연속적인 판독들 또는 기록들이 가능하게 되어, 보통 프리챠지 및 로우 액세스와 관련된 지연들을 피할 수 있게 되며, 그리고 버스트 데이터 전송 동안 시스템 성능을 현저하게 증가시키게 된다.
전형적으로, 메모리 페이지는 그 페이지로부터의 판독들 또는 그 페이지에 대한 기록들이 수행되기 전에 열릴 필요가 있다. DRAM 제어기는 기록/판독 커맨드 직후에 그 페이지를 닫거나, 또는 그 페이지를 열린 상태로 두도록 결정할 수 있다. 하지만, DRAM 제어기의 제한된 용량으로 인해, 열린 상태의 많은 페이지들을 취급하는 것이 불가능해질 수 있다. 결과적으로, 이러한 페이지들을 열린 상태로 두는 것이 미래(future)의 전송 동안 액세스 지연들중 일부를 제거할 것임에도 불구하고, DRAM 제어기는 열린 페이지들중 일부를 닫을 필요가 있다. 따라서, DRAM 제어기의 한계는 DRAM 메모리의 동작을 최대한 이용하는 것을 방해할 수 있다.
이러한 종래 기술과 여기에서 설명되는 본 발명을 비교한 이후, 종래 기술과 관련된 유사한 다른 문제들이 당업자에게 자명해질 것이다.
시스템(예를 들어, 컴퓨터 시스템)은 DRAM 버스에 결합되는 DRAM(다이내믹 랜덤 액세스 메모리) 디바이스들, 및 이러한 DRAM 디바이스들에 대한 액세스를 관리하고 제어하도록 구성된 DRAM 제어기를 포함한다. 메모리 페이지가 판독 또는 기록 동작을 위해 액세스되기 전에, 메모리 페이지가 아직 열려있지 않다면, 그 메모리 페이지는 열릴 필요가 있다. DRAM 제어기는, 페이지를 액세스했던 판독/기록 요청 직후에 열린 페이지를 닫거나, 또는 그 페이지를 열린 상태로 남겨둘 것을 결정할 수 있다. 만일 DRAM 제어기가 많은 열린 페이지들을 취급하기에 제한된 용량을 가지고 있다면, 어떠한 경우들에서는, 하나 이상의 열린 페이지들을 닫을 것이 요구되는데, 이는 이러한 페이지들을 열린 상태로 두는 것이 (새로운 페이지를 열기 위한) 부가적인 활성 커맨드(activate command) 및 (열린 페이지를 닫기 위한) 프리챠지 커맨드의 필요성을 없앰으로써 메모리에 대한 액세스 시간을 상당히 감소시킬 것임에도 불구하고 요구되는 것이다. 열린 상태의 많은 페이지들을 한번에 처리하기에 DRAM 제어기의 용량이 제한됨에도 불구하고, DRAM 버스의 전체적인 쓰루풋이 개선될 수 있다. 일 실시예에 있어서, DRAM 제어기는 효율적인 페이지 방침(page policy)에 따라 동작하도록 구성되어, 후속하는 판독/기록 액세스들 사이에서 발행(issue)될 필요가 있는 활성 커맨드 및 프리챠지 커맨드를 최소화하기 위해, 열린 페이지들중 어떤 페이지들을 계속해서 열린 상태로 둘 것인지, 그리고 어떤 페이지들을 닫을 것인지를 결정할 수 있다.
메모리 제어기, 예를 들어 DRAM 제어기는 개선된 메모리 액세스를 위해 3-레벨 자동-프리챠지(auto-precharge) 예측 알고리즘에 따라 동작하도록 구성될 수 있다. DRAM 제어기는 각 DRAM 뱅크에 대한 페이지 활동(activity)의 이력(history)을 추적함으로써 페이지 이용을 최적화할 수 있다. 소정의 뱅크에 대한 최근 액세스들의 이력은 DRAM 제어기로 하여금, 기록/판독 동작들 이후 액세스된 페이지에 해당하는 로우의 자동-프리챠지를 시작할 것인지, 아니면 그 액세스된 페이지를 열린 상태로 둘 것인지를 결정할 수 있게 한다. 만일 그 페이지가 열린 상태로 남겨져야 한다면, 소정 뱅크에 대한 최근 액세스들의 이력은 또한 그 페이지가 닫기기 전에 얼마나 오래 열려있어야 하는지 (그리고 아이들(idle) 상태에 있어야 하는지)를 결정할 수 있다. 따라서, DRAM 제어기는, 뱅크에 기초(bank based)하는 것이 아닌 제 1 순위에 기초(first order based)하는 이력에 대해 자동-프리챠지 예측을 행하면서, 뱅크 단위(bank basis)로 페이지 히트들(page hits)(DRAM의 특정의 뱅크 내의 이미 열려져있는 로우에 대해 이루어지는 요청들), 페이지 미스들(page misses)(열려진 어떠한 로우도 갖지 않는 DRAM의 특정 뱅크 내의 로우에 대해 이루어지는 요청들), 및 페이지 충돌들(page conflicts)(열려져있는 또 다른 별개의 로우를 이미 가지고 있는 DRAM의 특정 뱅크 내의 로우에 대해 이루어지는 요청들)의 이력을 추적하도록 구성될 수 있다.
일 실시예에서, DRAM 제어기는 페이지 테이블(Page Table)을 포함할 수 있는데, 여기에서 모든 엔트리(entry)는 소정의 메모리 뱅크에 대한 마지막 4개의 이력적인 액세스들을 기록할 수 있다. DRAM 제어기는 또한 메모리 뱅크 이력 테이블(Memory Bank History Table)을 포함할 수 있다. 메모리 요청이 중재(arbitration)를 획득(win)한 후, DRAM 제어기는 그 요청이 이전의 메모리 요청과 소정의 메모리 뱅크 내의 동일한 DRAM 페이지에 대한 것이었는 지의 여부의 표시로 메모리 뱅크 이력 테이블을 업데이트할 수 있다. 실제로, 이것은 요청이 페이지 히트인지 아닌지의 여부의 표시와 다른데, 그 이유는 페이지 미스들은 소정 뱅크 내의 가장 최근에 액세스된(비록 지금은 닫혀지긴 하였지만) 메모리 페이지인 메모리 페이지를 매우 잘 요청하기 때문이다.
일단 중재를 통해 요청이 선택되면, 예측이 수행될 수 있다. 선택이 되면, 메모리 뱅크 이력 테이블은, 해당(in question) 뱅크에 대한 마지막 M개의 액세스들(예를 들어, 3개의 액세스들)에 막 선택된 액세스를 플러스(plus)시켜 인덱스될 수 있다. 이러한 메모리 뱅크 이력 테이블은 예측이 이루어진 주기 이후 업데이트될 수 있다. 이러한 업데이트는 해당 뱅크에 대한 DRAM 페이지 테이블에 저장되어 있는 해당 (M+1) 비트(예를 들어, M이 3이면, 4비트) 뱅크 이력 정보에 의해 인덱스되는 위치에 저장된 값에 대해 수행될 수 있다. 일 실시예에 있어서, 예측의 업데이트는 칸피던스 카운터(confidence counter)에 기초하여 일어날 수 있다. 각 메모리 뱅크 이력 테이블 엔트리는 N 비트(예를 들어, 2 비트) 칸피던스 카운트 값을 포함할 수 있다. 예측이 정확했다면, DARM 제어기는 (최대값에서 포화(saturate)되는) 칸피던스 카운트 값을 증분(increment)시킬 수 있다. 예측이 부정확했다면, DRAM 제어기는 칸피던스 카운트 값을 감분(decrement)시킬 수 있다. DRAM 제어기는, 카운터가 지정된 값(예를 들어, 제로)에 이를 경우에만, 예측 값을 업데이트할 수 있다. 대안적인 실시예들에서, 카운트 값은 낮게 시작하여 증분될 수 있으며, 최대값은 예측 값이 업데이트될 수 있다는 표시로서 이용될 수 있다. 이력, 예측 및 칸피던스 카운트 값의 업데이트는, 그 자동-프리챠지 결정이 뱅크 히트(Bank Hit) 또는 뱅크 충돌(Bank Conflict)에 의해 결정되었던 요청들에 대해서는 수행되지 않을 수 있으며, 이에 대해서는 하기에서 더 설명된다.
큐 내의 다른 계류중인(pending) 요청들이 특정의 DRAM 뱅크에 대해 목표가 정해지는지(즉, 그 뱅크를 목표로 하고 있는지)의 상태가, 메모리 뱅크 이력 테이블 내의 예측 값에 의해 표시되는 자동-프리챠지 예측을 대신할 수 있다. 예를 들어, 메모리 뱅크 이력 테이블 내에 저장되며 현재 메모리 요청에 해당하는 예측 값은, 자동-프리챠지가 인에이블되는 상태로, 현재의 판독/기록 요청이 DRAM 메모리에 전송되어야 함을 예측할 수 있다. 하지만, 요청 큐는 현재 메모리 요청과 동일한 DRAM 페이지를 목표로 하고 있는 하나 이상의 계류중인 요청들을 포함할 수 있다. 이는 자동-프리챠징이 이러한 경우에는 유익하지 않을 수 있음을 나타낸다.
일 실시예에서, (중재의 결과로서) 일단 계류증인 메모리 요청이 현재 메모리 요청으로서 선택되면, (문제의 메모리 뱅크 내의 잠재적인 페이지 히트들 및 페이지 미스들에 각각 해당하는) 결과적인 뱅크 히트 및 뱅크 충돌 신호들이 형성되어, 뱅크 이력 예측을 퀄리파이(qualify)한다. DRAM 제어기가 계류중인 메모리 요청들중 어느 것도 페이지 히트 또는 페이지 충돌을 야기하지 않을 것임(즉, 계류중인 메모리 요청들중 어느 것도 문제의 메모리 뱅크에 대한 액세스를 요청하지 않음)을 결정하면, 그 DRAM 제어기는 (상기 설명한) 뱅크 이력 예측에 기초하여 현재 메모리 요청에 대한 자동-프리챠지를 설정할 수 있다. 만일 계류중인 메모리 요청들중 어느 것도 페이지 히트를 야기하지 않지만, 계류중인 메모리 요청들중 적어도 하나가 페이지 충돌을 야기하게 된다면, 현재 메모리 요청에 대해 자동-프리챠지가 인에이블될 수 있다. 만일 계류중인 메모리 요청들중 적어도 하나가 페이지 히트를 야기한다면, 현재 메모리 요청에 대해 자동-프리챠지가 디스에이블될 수 있다.
만일 판독/기록 요청이 자동-프리챠지를 하지 않는다면, DRAM 제어기는 아이들 주기 카운터(idle cycle counter)를 이용하여, 열린 페이지가 지정된 시간 길이 동안 아이들 상태로 유지된 이후 닫혀야하는 지의 여부를 결정할 수 있다. 일 실시예에서, DRAM 페이지 테이블 내의 각 엔트리는 소정의 열린 메모리 페이지가 얼마나 오래 열려있었는 지를 추적할 수 있다. DRAM 제어기는, 아이들 주기 카운터가 프로그램가능한 한계치(limit)를 히트할 때에, 열린 메모리 페이지를 닫을 수 있다. DRAM 제어기는 프로그램가능한 고정된 수의 클럭 주기들 이후 비활성의 페이지를 닫거나, 또는 DRAM 페이지 테이블 엔트리 이력에 기초하여 동적으로 조정된 고정된 수의 클럭 주기들 이후 비활성의 페이지를 닫을 수 있다.
본 발명의 다른 양상들은 첨부된 도면들을 참조하여 하기의 상세한 설명을 읽을 때에 명확해질 것이다.
도 1은 메모리 버스를 통해 메모리에 대한 액세스를 제어하도록 구성된 메모리 제어기를 포함하는 예시적인 시스템의 블록도이다.
도 2는 도 1의 메모리 제어기의 일 실시예의 부분적인 논리 블록도이다.
도 3은 일 실시예에 따른 뱅크 이력 테이블의 액세스 및 업데이트를 보여주는 구조적인 다이어그램이다.
도 4는 3-레벨 자동-프리챠지 예측 알고리즘의 일부의 일 실시예를 도시하는 흐름도이다.
본 발명은 비록 다양한 수정과 대안적인 형태들이 가능하지만, 본 명세서에서는 발명의 특정한 실시예들을 예로서 도면에 도시하였으며, 이에 대해 상세히 설명할 것이다. 하지만, 이해될 사항으로서, 도면 및 이에 대한 상세한 설명은 본 발명을 개시된 특정 형태로 제한하도록 의도된 것은 아니며, 오히려 첨부된 청구항에 의해 정의되는 본 발명의 정신 및 범위 내에 드는 모든 변형, 균등물 및 대안들을 포괄하도록 의도된 것이다.
여기에서 이용되는 "소정의 메모리 뱅크에 대해 이루어지는 메모리 요청" 또는 "열린/닫힌 메모리 페이지에 대해 이루어지는 메모리 요청"은, 메모리 요청이 소정의 메모리 뱅크 그리고/또는 열린/닫힌 메모리 페이지에 대한 액세스를 요청하고 있음을 나타낸다. 다시 말해, 예를 들어 "열린 페이지에 대해 이루어지는 메모리 요청"의 표현은 "열린 페이지에 대한 액세스를 요청하는 메모리 요청"과 같은 말이다. 유사하게, "소정의 뱅크를 목표로 하는 메모리 요청" 또는 "열린/닫힌 페이지를 목표로 하는 메모리 요청"은, 메모리 요청이 소정의 메모리 뱅크 그리고/또는 열린/닫힌 메모리 페이지에 대한 액세스를 요청하고 있음을 의미한다.
도 1은 기본적인 예시적 시스템(100)(이는 컴퓨터 시스템이 될 수 있다)의 블록도를 나타내는 바, 여기서 프로세싱 유닛(113)은 메모리 제어기(103)에 결합된 프로세서 코어(101)를 구비하도록 구성된다. 메모리 제어기(103)는 메모리 버스(111)에 결합될 수 있는바, 메모리 제어기(103)는 이 메모리 버스(111)를 통해 메모리(105)를 주기적으로 액세스함으로써, 프로세싱 유닛(113)과 메모리(105) 간의 데이터 교환을 용이하게 한다. 당업자라면 시스템(100)은 다양한 방식들로 구현될 수 있으며, 메모리 액세스가 메모리 제어기에 의해 제어되는 기본적인 구성을 예시하도록 나타내었다는 것을 이해할 것이다.
일 실시예에서, 메모리 제어기(103)는, 시스템(100)의 필요(needs)에 의해 요구되는 일정 범위의 기능을 지원하기 위한 레지스터(register)들을 포함하여, 서브 회로들 그리고/또는 컴포넌트들을 포함할 수 있다. 예를 들어, 메모리 제어기(103)는 메모리(105)와 프로세서 코어(101) 사이에 전달되는 데이터를 버퍼링하기 위한 다양한 버퍼들을 포함할 수 있으며, 서브-제어 블록들로 분할될 수 있다. 유사하게, 메모리(105)는 메모리 버스(111)를 통해 메모리 제어기(103)와 인터페이스하도록 된, 다양한 구성들의 다수의 메모리 요소들 또는 메모리 디바이스들을 포함할 수 있다. 다양한 실시예들이 가능하며, 고려된다.
일 실시예에서, 메모리(105)는 DRAM이 될 수 있으며, 이에 따라 메모리 제어기(103)는 DRAM 제어기가 될 수 있다. 또 다른 실시예에서, 메모리(105)는 더블 데이터 레이트 DRAM (DDR DRAM), 예를 들어 DDR3 메모리가 될 수 있는 바, 이는 DDR3 메모리 제어기(103)에 의해 제어된다. 일 실시예에서, DRAM 제어기(103)는 DRAM 디바이스들 내의 메모리 페이지들에 대한 액세스를 관리 및 제어하도록 구성될 수 있다. 메모리 페이지는, 판독 또는 기록 동작을 위해 액세스되기 전에, 열릴 필요가 있다. DRAM 제어기(103)는, 판독/기록 액세스 이후 열린 페이지를 닫거나, 또는 그 페이지를 열린 상태로 둘 것을 결정할 수 있다. 일 실시예에서, DRAM 제어기(103)는 후속하는 판독/기록 액세스들 사이에서 발행되는 활성 커맨드 및 프리챠지 커맨드를 줄이도록 설계된 효율적인 페이지 방침에 따라 동작하도록 구성되며, 이에 의해 DRAM 제어기(103)가 (더) 많은 수의 열린 페이지들을 동시에 취급할 수 없을 때에도, DRAM 버스(111)의 전체 쓰루풋을 개선한다.
DRAM(105)과 인터페이스할 때, DRAM 제어기(103)는 판독 및 기록 요청들을 취급하도록 동작하여, 3개의 개별적인 타입의 메모리 액세스들을 야기할 수 있다. 제 1 타입의 메모리 액세스는 열려있는 또 다른 별개의 로우를 이미 가지고 있는 DRAM(105)의 특정 뱅크 내의 로우에 대해 이루어진 요청들에 해당하며, 일반적으로 페이지 충돌로서 불린다. 페이지 충돌의 경우, 페이지는 먼저 프리챠지 커맨드에 의해 닫힌 다음, 활성 커맨드에 의해 열림으로써, 요청된 판독/기록 동작에 대해 DRAM(105)을 준비한다. 제 2 타입의 메모리 액세스는 열려진 어떠한 로우도 갖지 않는 DRAM(105)의 특정 뱅크 내의 로우에 대해 이루어진 요청들에 해당하며, 일반적으로 페이지 미스라 불린다. 페이지 미스의 경우, 페이지는 먼저 활성 커맨드에 의해 열림으로써, 요청된 판독/기록 동작에 대해 DRAM(105)을 준비한다. 제 3 타입의 메모리 액세스는 이미 열려있는 DRAM(105)의 특정 뱅크 내의 로우에 대해 이루어진 요청들에 해당하며, 일반적으로 페이지 히트라 불린다. 페이지 히트의 경우, 요청된 판독/기록 동작은 요청된 판독/기록 동작에 대해 DRAM(105)을 준비해야할 필요없이, 이에 따라 부가적인 커맨드들이 먼저 수행될 필요없이, 수행될 수 있다.
따라서, 페이지 히트들의 수를 최대화하고 페이지 충돌들 및 페이지 활동들의 수를 최소화하는 방식으로 판독/기록 요청들을 재배열(re-order)하도록 DRAM 제어기(103)를 구성하는 것이 바람직하다. 결과적으로, 요청들의 스트림과 관련된 어드레스들의 스트림이 페이지 히트들에 대해 도움(conducive)이 되지 않을 때, DRAM 제어기(103)는 페이지 충돌들에 대한 다음으로 더 나은 대안으로서 페이지 미스들을 선호(favor)하도록 동작할 수 있다. 이에 따라, 최적의 성능을 달성하기 위해, DRAM 제어기(103)는 3-레벨 자동-프리챠지 예측 알고리즘을 수행하도록 구성될 수 있다.
도 2는 3-레벨 자동-프리챠지 예측 알고리즘을 수행하도록 구성된 DRAM 제어기(103)의 하나의 가능한 실시예를 도시한다. 일 실시예에서, DRAM 제어기(103)는 DRAM 페이지 테이블(106)을 이용하여, 지정된 수의 열린 페이지들(몇몇 실시예들에서는, 32개의 열린 페이지들)까지 지원할 수 있다. DRAM 페이지 테이블(106)은 칩 선택 신호(들) 및 뱅크 선택 신호(들)에 기초하여 인덱스됨으로써, 모든 뱅크를 커버할 수 있으며, 그리고 각 뱅크에 대한 로우 어드레스 및 최근의 뱅크 이력 정보를 저장하는 데에 이용될 수 있다. 또한, DRAM 페이지 테이블(106)은 판독/기록 요청이 페이지 히트, 페이지 미스 또는 페이지 충돌을 야기하는 지의 여부 및 자동-프리챠지가 현재의 판독/기록 요청에 대해 수행되어야 하는 지의 여부를 결정하는 데에 이용될 수 있다. 어드레스 맵(address map)(104)은 프로세서 코어(101)로부터 현재 판독/기록 요청에 해당하는 어드레스를 수신할 수 있으며, DRAM 페이지 테이블(106) 내의 현재 요청에 해당하는 페이지를 룩업(lookup)하기 위한 인덱스 (룩업) 신호를 발생시킬 수 있다.
들어오는 커맨드들(incoming commands)은 DRAM 제어기 요청 큐(DCQ)(114) 내에 배치될 수 있으며, 이러한 DCQ(114)는 지정된 수의 엔트리들(몇몇 실시예들에서는, 12개의 엔트리들)을 보유하도록 구성될 수 있다. 이에 따라, DCQ(114)는 DRAM 어드레스 정보, 페이지 히트/미스/충돌 정보, 및 판독 및 기록 요청들에 해당하는 요청 우선순위 정보(request priority information), 및 프리페치 커맨드들 뿐 아니라, 판독들, 기록들 및 프리페치들을 저장하도록 구성될 수 있다. DCQ(114)는, 상기 정보가 얻어지면 할당되며, 이후 요청의 전체 커맨드 시퀀스가 완료되면 할당이 해제(deallocate)된다. 또한, DCQ(114)는 DRAM 페이지 테이블(106)이 바뀔 때 마다 업데이트될 수 있다. 큐잉되는 커맨드들의 중재는 DRAM 페이지 테이블(106)로부터 수신된 페이지 정보 및 타이밍 체크 블럭(110)으로부터 수신되는 타이밍 체크 정보에 적어도 기초하여, 지정된 우선순위 방식에 따라 그리고/또는 다양한 요청 타입들의 우선순위들에 따라 중재기(112)에 의해 수행될 수 있다. 일반적으로, 들어오는 요청들의 중재는 가능한 많은 우선순위 방식들중 하나 이상에 따라 수행될 수 있으며, 각각의 우선순위 방식은 특정의 시스템 성능 및 메모리 성능 요구에 따라 안출될 수 있다. 예를 들어, 가장 오래된 엔트리가 지정된 횟수 보다 더 많이 바이패스되는 것을 막기 위해, 보다 오래된 요청들은 적절한(in place) 부가 메커니즘에 의해 보다 최근의 요청들을 능가하는(over) 우선순위를 받을 수 있다. 다른 가능성들은 페이지 미스들을 능가하여 페이지 히트들을 선택하는 것을 포함하며, 페이지 미스들은 페이지 충돌을 능가하여 선택될 수 있다. 당업자라면, 페이지 이용 최적화는 또한 다수의 다른 중재 방식들에서 역할을 할 수 있으며, 그리고 여기에서 명백하게 개시되지는 않았지만, 다양한 다른 우선순위 방식들이 가능하고 고려된다는 것을 이해할 것이다. 일단 DCQ(114)로부터의 커맨드가 중재를 통해 선택되면, 자신의 관련 어드레스 정보와 함께, 선택된 커맨드는 멀티플렉서(116)를 경유하여 패드들(124a)를 통해 DRAM(105)에 제공될 수 있다.
또한, DRAM 제어기(105)는 백엔드(back end)의 판독 큐(120) 및 기록 큐(118)를 각각 포함한다. 기록 큐(118)는 지정된 수(몇몇 실시예에서는, 6개)의 기록 데이터 요청들을 저장하는 데에 이용될 수 있는데, 이러한 저장은 이들의 커맨드 부분들이 완료되고 DCQ(114)의 할당이 해제된 이후에 이루어진다. 이에 따라, 기록 큐(118)는 보다 정확하게 타이밍된 방식(timed manner)으로 메모리 제어기 데이터 버퍼로부터 데이터를 판독하는 것을 촉진시킬 수 있다. 판독 큐(120)는 지정된 수(몇몇 실시예에서는, 12개)의 기록 데이터 요청들을 저장하는 데에 이용될 수 있는데, 이러한 저장은 이들의 커맨드 부분들이 완료되고 DCQ(114)의 할당이 해제된 이후에 이루어진다. 따라서, DDR 메모리들의 경우, 판독 큐(120)는 음의 클럭 도메인(clock domain)에 데이터를 전송하기 위해, DDR 트리거 신호 DQS 및 데이터 수신기들과, 수신(receive) FIFO(선입 선출) 버퍼(122)의 제어를 용이하게 할 수 있다.
자동- 프리챠지 예측을 이용한 페이지 이용 최적화
DRAM 제어기(103)는 DRAM(105)의 각 뱅크에 대한 페이지 활동의 이력을 추적함으로써 페이지 이용을 최적화할 수 있다. 임의의 소정 뱅크에 대한 최근 액세스들의 이력은 DRAM 제어기(103)가 판독/기록 동작에 이어서 자동-프리챠지를 시작해야하는지, 아니면 메모리 페이지를 열린 상태로 남겨두어야 하는 지를 결정하는 것을 도울 수 있다. 페이지가 열린 상태로 남겨져야 하는 것으로 결정되면, 이러한 이력은 또한 그 페이지가 닫히기 전에 얼마나 올래 열린 상태로 남겨져야 하는지를 (그리고 가능하게는 아이들 상태로 유지되어야 하는 지를) 결정하는 데에 이용된다. 일 실시예에서는, DRAM(15)의 모든 페이지의 이력이 추적될 수 있다. 하지만, 이것이 하드웨어로 구현하기가 실용적이지 않은 경우, DRAM 제어기(103)는, (DRAM 페이지 테이블(106)과 관련하여 뱅크 이력 테이블(108)을 이용하여) 뱅크에 기초하는 것이 아닌 제 1 순위에 기초하는 이력에 대해 예측을 행하면서, (예를 들어, DRAM 페이지 테이블(106)을 이용하여) 페이지 히트들, 페이지 미스들 및 페이지 충돌들의 이력을 뱅크 단위로 추적하도록 구성될 수 있다.
뱅크 이력
이전에 설명한 바와 같이, DRAM 제어기(103)는 DRAM(105)의 각 DRAM 뱅크에 대해 페이지 활동의 이력을 추적할 수 있다. 뱅크 이력 테이블(108) 내의 모든 엔트리는 (DRAM 페이지 테이블(106) 내에 저장된) 소정 뱅크 내의 마지막 4개의 페이지 액세스들의 이력에 기초하는 예측을 포함할 수 있다. 어떠한 요청이 중재기(112)로부터 중재를 얻음으로써 현재의 요청이 된 이후, 뱅크 이력은 상기 현재의 요청이 뱅크에 대해 이루어진 이전 요청과 그 뱅크 내의 동일한 DRAM 페이지에 대한 것인 지에 따라 업데이트될 수 있다. 다시 말해, 추적은 뱅크 단위로 수행되기 때문에, 이러한 표시는 현재의 요청이 페이지 히트인지 아닌지의 표시와 약간 다르다. 예를 들어, 현재의 요청은 페이지 미스를 야기할 수 있지만, 이는 현재 요청된 뱅크에 대해 마지막으로 요청되었던 동일한 페이지를 요청할 수 있으며, 결과적으로 현재의 요청은 요청된 뱅크에 대한 페이지 액세스들을 추적함에 있어서 요청된 뱅크의 견지에서 "히트"로 고려된다. 다시 말해, 실제로 페이지 미스는, 요청된 페이지가 너무 이르게 닫혔다면, 현재의 요청은 페이지 히트가 될 것임을 나타낸다. 페이지가 닫히지 않았다면, 현재의 요청은 페이지 히트 또는 페이지 충돌중 어느 하나를 야기했을 것이지만, 페이지 미스는 야기하지 않았을 것이다. 또한, 주목할 사항으로서, 현재 설명된 실시예들에서, 프리페치들 및 기록들은 페이지 이력 테이블(108)에 대한 업데이트들을 야기하지는 않지만, 대안적인 실시예들은 다르게 구성될 수 있다.
도 3은 뱅크 이력 테이블(Bank History Table)(108)이 어떻게 액세스되고 업데이트되는 지의 일 실시예를 나타낸다. 나타낸 실시예에서, 뱅크 이력 테이블(108) 내의 엔트리는 자동-프리챠지 예측 비트(AP)를 포함할 수 있는데, 이는 자동-프리챠지가 예측됨을 나타내는 '1'의 값 또는 자동-프리챠지가 예측되지 않음을 나타내는 '0'의 값을 가질 수 있다. 하지만, 대안적인 실시예들에서, 자동-프리챠지 예측을 나타내는 AP의 값은, 이것이 무엇을 나타내도록 되어 있는 지가 명확한 한, 나타낸 것과 다르게 특정될 수 있다. 도 3에 나타낸 바와 같이, 뱅크 이력 테이블(108)은 각각의 4비트 인덱스들에 해당하는 16개의 엔트리들(210)을 포함할 수 있는 바, 각 인덱스는 소정의 뱅크에 대한 가장 최근의 4번의 페이지 액세스들/요청들에 해당하는 뱅크 이력에 기초하여 형성된다. 다시 말해, 현재 요청된 페이지에 대한 예측 엔트리를 액세스하기 위한 인덱스는, 현재 요청 외에, 현재 요청된 뱅크에 대한 마지막 3번의 액세스들(즉, DRAM 페이지 테이블(106)에 저장된 뱅크 이력 정보)에 기초할 수 있다.
소정의 페이지에 대한 예측은 중재기(112)가 현재 요청을 선택한 이후에 수행될 수 있으며, 상기 설명한 바와 같이 인덱스 값을 이용하여 뱅크 이력 테이블(108) 내의 해당하는 예측 값을 액세스하는 것을 포함할 수 있다. 도 3에 나타낸 바와 같이, 현재 요청된 뱅크에 대한 가장 최근의 이전 3번의 액세스들의 이력에 해당하는 3 비트(206)와 현재 요청(208)을 이용하여, 현재 요청된 페이지에 대한 뱅크 이력 테이블(108) 내의 예측 값을 액세스하기 위한 인덱스를 형성한다. 여분의 클럭 주기에 의해 페이지 히트들을 지연시키는 것을 막기 위해서는, 하나의 클럭 주기로 예측 값에 대한 액세스를 수행할 것이 요구된다.
일 실시예에서, 인덱스는, 칩 선택 신호(들)/뱅크 선택 신호(들) 및 페이지 히트 신호를 멀티플렉싱하고, 페이지 테이블(106)로부터의 뱅크 이력을 멀티플렉싱함으로써 생성될 수 있다. 이때, 대안적인 실시예들에서, 엔트리들의 수는 적어도 추적되고 있는 가장 최근의 요청들/액세스들의 수에 의해 결정되는 것과 다를 수 있다는 것을 주목해야 하며, 당업자라면 가능한 변형들은 도 3에 제시된 실시예로 제한되지 않다는 것을 이해할 것이다. 예를 들어, 뱅크에 대한 5개의 가장 최근 액세스들/요청들이 추적된다면, 뱅크 이력 테이블(108)은 구(old) 뱅크 이력의 4비트에 현재(새로운) 뱅크 이력을 플러스하여 이루어지는 5비트 인덱스에 기초하여 액세스가능한 32개의 엔트리들을 가지며 구성될 수 있다. 전부 해서, 추적되는 가장 최근의액세스들의 수는 4와 다르게 지정될 수 있으며, 추적되는 가장 최근의 액세스들의 수가 4보다 작거나 큰 많은 실시예들이 가능하다.
이후, 예측 이후의 클럭 주기 동안 뱅크 이력 테이블(108)이 업데이트될 수 있다. 도 3에 나타낸 바와 같이, 예측에 이어서, DRAM 페이지 테이블(106)로부터 얻은 4비트 뱅크 이력, 즉 현재 요청된 뱅크에 대한 가장 최근의 이전 4번의 액세스의 이력에 해당하는 4비트(202)에 의해 정의되는 인덱스에 해당하는 엔트리(AP) 값을 업데이트함으로써, 뱅크 이력 테이블(108)이 업데이트될 수 있다. 만일 현재 요청이 페이지 히트를 야기한다면, AP는 (몇몇 실시예들에서, 하기에서 보다 상세히 설명되는 바와 같이, 칸피던스 카운터를 필요로 하는) '0'으로 업데이트될 수 있다. 만일 현재 요청이 페이지 충돌을 야기한다면, AP는 (몇몇 실시예들에서, 칸피던스 카운터를 또한 필요로 하는) '1'로 업데이트될 수 있다. 만일 현재 요청이 페이지 미스를 야기하는 경우, 현재 요청된 로우가 요청된 뱅크 내의 가장 최근에 액세스된/요청된 로우이면, AP는 '0'으로 업데이트되고, 그렇지 않으면 AP는 (몇몇 실시예들에서, 칸피던스 카운터를 또한 필요로 하는) '1'로 업데이트된다. 일단 뱅크 이력 테이블(108)이 업데이트되면, 페이지 테이블(106) 내의 현재 요청된 뱅크에 해당하는 뱅크 이력 엔트리 역시 업데이트되어 새로운 뱅크 이력을 반영하는데, 이는 현재 발생한 또는 완료된 메모리 액세스를 포함한다.
상기 주목한 바와 같이, 일 실시예에서, 뱅크 이력 테이블(108) 내의 예측 값(AP)의 업데이팅은 부가적으로 칸피던스 카운터에 기초하여 수행될 수 있다. 뱅크 이력 테이블(108) 내의 각 엔트리는 또한 해당하는 N 비트 칸피던스 카운터 값을 포함할 수 있다. 자신의 해당 뱅크에 대한 예측이 정확했다면, 카운터는 증분되어, 비트들의 수에 의해 결정되는 값에서 포화된다. 예를 들어, 만일 뱅크 이력 테이블(108) 내의 각 엔트리가 해당하는 2 비트 칸피던스 카운터를 갖는 다면, 그 카운터는 3에서 포화될 수 있다. 예측이 부정확했다면, 카운터는 증분될 수 있다. 카운터가 제로에 이르면, 예측 값(즉, 뱅크 이력 테이블(108) 내의 AP의 해당 값)은 플립(flip)됨으로써, 부정확한 예측들의 스트링을 나타낼 수 있다. 당업자라면 카운터 값은 지정되는 임의 수의 비트들을 포함할 수 있으며, 여기에서 이용되는 실제 수들은 단지 예시적인 것임을 이해할 것이다.
자동- 프리챠지 예측 알고리즘
상기 설명한 바와 같이 뱅크 이력을 추적하는 것은, 3-레벨의 예측을 포함할 수 있는, DRAM 제어기(103)에 의해 실행되는 자동-프리챠지 예측 알고리즘의 일부로서 이용될 수 있다.
레벨 1
DCQ(114) 내의 미래의 요청들은, 소정의 뱅크 내의 가장 최근에 액세스된 DRAM 페이지가 액세스 직후 닫혀야하는지, 아니면 열린 상태로 남겨져야하는 지를 결정하는 데에 이용될 수 있다. 즉, DCQ(114) 내의 계류중인 다른 요청들이 특정의 DRAM 뱅크를 목표로 하고 있는 지의 상태를 이용하여, 레벨 1의 자동-프리챠지 예측을 수행할 수 있다. 따라서, DCQ(114) 내의 각각의 계류중인 요청을 평가(evaluate)하여, 요청이 어떠한 소정 뱅크에 대한 것인지, 그리고 그 요청이 그 소정 뱅크 내의 현재 열린 페이지에 대한 것인 지를 결정할 수 있다. 일 실시예에서, 이러한 평가는 현재 처리되는 메모리 요청에 대해 액세스되고 있는 열린 페이지 (및 그 해당하는 소정 뱅크)에 대해 이루어질 수 있다. 즉, 각각의 계류중인 요청을 평가하여, 그것이 액세스되고 있는 뱅크 그리고/또는 페이지에 대한 것인 지를 결정하며, 그리고 자동-프리챠지가 인에이블 또는 디스에이블되는 상태로, 현재 처리되는 메모리 요청이 DRAM 메모리에 전송되어야 하는 지를 결정할 수 있다. DCQ(114) 내의 계류중인 요청들의 평가에 응답하여 취해지는 행동(들)은 다음의 4개의 카테고리중 하나에 해당한다:
(A) DCQ(114) 내의 계류중인 요청들중 어느 것도 소정 뱅크 내의 페이지들에 대한 것이 아니라면(즉, 계류중인 요청들중 어느 것도 그 소정 뱅크 내의 페이지를 요청하고 있지 않으며, 이에 따라 그 소정 뱅크 내의 열린 페이지에 대해 페이지 히트 또는 페이지 충돌을 야기하지 않는 다면), 상기 뱅크 이력 부분에서 설명된 바와 같이 뱅크 이력 정보에 따라 레벨 2 예측이 이루어질 수 있으며(하기 설명되는 레벨 2 엔트리를 또한 참조), 그리고 현재 처리되는 메모리 요청에 대한 자동-프리챠지가 그에 따라 설정될 수 있다.
(B) DCQ(114) 내의 계류중인 요청들중 어느 것도 소정 뱅크 내의 열린 페이지에 대한 것이 아니지만, 적어도 하나의 계류중인 요청이 그 소정 뱅크 내의 닫힌 페이지에 대한 것이라면(즉, 소정 뱅크에 대한 계류중인 요청들중 어느 것도 그 소정 뱅크 내의 열린 페이지에 대해 페이지 히트를 야기하지 않지만, 계류중인 요청들중 적어도 하나가 페이지 충돌을 야기한다면), 뱅크 이력 테이블(108) 내의 해당하는 예측이 무엇인지에 상관없이 (현재 메모리 액세스 이후 소정 뱅크 내의 열린 페이지를 닫기 위해) 현재 처리되는 메모리 요청에 대해 자동-프리챠지가 인에이블된다.
(C) 소정 뱅크에 대한 DCQ(114) 내의 계류중인 모든 요청들이 그 소정 뱅크 내의 열린 페이지에 대한 것이라면(즉, 소정 뱅크에 대한 계류중인 모든 요청들이 그 소정 뱅크 내의 열린 페이지에 대해 페이지 히트를 야기한다면), 그 소정 뱅크 내의 열린 페이지는 열린 채로 남는다. 즉, 현재 메모리 액세스 이후 자동-프리챠지가 수행되지 않는다.
(D) 소정 뱅크에 대한 DCQ(114) 내의 계류중인 요청들중 적어도 하나가 그 소정 뱅크 내의 열린 페이지에 대한 것이고, 계류중인 요청들중 적어도 하나가 그 소정 뱅크 내의 닫힌 페이지에 대한 것이라면(즉, 소정 뱅크에 대한 계류중인 요청들중 적어도 하나가 그 소정 뱅크 내의 열린 페이지에 대해 페이지 히트를 야기하고, 이러한 계류중인 요청들중 적어도 하나가 페이지 충돌을 야기한다면), 그 소정 뱅크 내의 열린 페이지는 열린 상태로 남게 된다. 즉, 현재 메모리 액세스 이후 자동-프리챠지가 수행되지 않는다. 페이지 히트를 야기하는 계류중인 요청들이 DCQ(114)로부터 먼저 전송되며, 이에 의해 일단 이러한 요청들이 전송되면, 상기 (B)에서 설명한 조건을 야기한다.
전체로서, 조건들 (C) 및 (D)를 결합하여, DCQ(114) 내의 계류중인 요청들중 적어도 하나가 소정 뱅크 내의 열린 페이지에 대한 것이라면, (그 소정 뱅크에 대한) 현재 메모리 요청에 대한 자동-프리챠지는 디스에이블되어야 함을 결정할 수 있다.
레벨 2
(상기 레벨 1 (A)에서 설명된 바와 같이) 만일 DCQ(114) 내의 계류중인 어떠한 요청들도 소정 뱅크 내의 DRAM 페이지에 대한 것이 아니라면, 최근의 뱅크 이력 정보를 이용하여, 그 DRAM 페이지가 액세스 이후 즉시 닫혀야하는 지의 여부, 또는 열린 상태로 남겨져야 하는 지의 여부를 예측할 수 있다. 이러한 예측은 상기에서 뱅크 이력 부분에서 설명한 바와 같이 뱅크 이력 테이블(108) 내에서 액세스될 수 있다.
레벨 3
만일 DRAM 페이지가 레벨 1 또는 레벨 2 예측중 어느 하나에 기초하여 닫히지 않았다면, 그 DRAM은 열린 채로 남겨지지만, 그것이 마지막으로 액세스된 시간으로부터 (프로그램가능한) 지정된 수의 클럭 주기들 동안 아이들 상태로 유지된 이후 닫힐 수 있다.
다시 한번 주목할 사항으로서, DRAM 페이지 테이블(106) 내의 뱅크 이력, 배크 이력 테이블(108) 내의 예측 값 및 해당하는 칸피던스 카운터 값은, 그 자동-프리챠지 결정이 상기 레벨 1 (A)에서 설명된 레벨 1 예측에 의해 결정되었던 요청들에 대해서는 업데이트되지 않는다. 유사하게, 프리페치들 및 기록 명령들은 뱅크 이력 테이블(108)을 이용하여 이루어지는 예측, 또는 뱅크 이력 테이블(108)의 업데이트를 야기하지 않는다. 자동-프리챠지가 이러한 타입의 요청들과 관련하여 수행되는 지의 여부 역시 상기 레벨 1 (A)에서 설명되는 레벨 1 예측에 의해 결정될 수 있다. 하지만, DRAM 제어기(103)는 버스트 기록 내의 마지막 기록 요청 이후 항상 자동-프리챠지를 시작하도록 구성될 수 있으며, 프리페치 및 기록 요청들은 임의의 다른 요청과 같이 페이지 히트/페이지 충돌에 영향을 줄 수 있다.
상기 설명한 바와 같이, 자동-프리챠지 예측 알고리즘은 자동-프리챠지가 판독/기록 요청에 대해 수행되어야 하는 지를 예측하는 데에 이용될 수 있다. 만일 예측이 판독/기록 요청에 대해 자동-프리챠지를 야기하지 않는 다면, 열린 페이지가 닫힐 때에, 여전히 문제가 남게 된다. 페이지가 열린 상태로 유지되지만 긴 시간 기간 동안 아이들 상태로 유지된다면, 뱅크 이력 예측이 부정확하게 되어, 페이지 충돌을 야기할 가능성이 있다. 따라서, DRAM 제어기(103)는 소정의 페이지가 얼마나 오래 열려있었는 지를 추적하기 위해, 각각의 DRAM 페이지 테이블 엔트리에 해당하는 각각의 아이들 주기 카운터를 포함하도록 구성될 수 있다. 일 실시예에서, 열린 페이지에 해당하는 아이들 주기 카운터가 지정된 한계를 히트(hit)할 때에, DRAM 제어기(103)는 열린 (아이들) 페이지를 닫도록 동작할 수 있다. 일 실시예에서, 상기 지정된 한계는 프로그램가능하다. 따라서, DRAM 제어기(103)는 지정된 수의 클럭 주기(예를 들어, 일 실시예에서는 128 주기) 이후 비활성 (아이들) 페이지를 닫거나, 또는 동적으로 조정된 지정된 수의 클럭 주기(예를 들어, 16, 32, 64, 96 등의 주기) 이후 비활성 페이지를 닫을 수 있는데, 여기서 동적인 조정(들)은 DRAM 페이지 테이블 이력(106) 내의 지정된 메모리 페이지에 해당하는 뱅크 이력 엔트리에 기초할 수 있다.
도 4는 메모리 제어기(예를 들어, 도 1 및 2의 메모리 제어기(103))에 의해 실행될 수 있는 3-레벨 자동-프리챠지 예측 알고리즘의 한 부분의 일 실시예의 흐름도이다. 들어오는 메모리 요청들(이는 메모리 제어기에 의해 수신되는 메모리 요청들이 될 수 있다)은 계류중인 메모리 요청들로서 큐 내에 저장될 수 있다(402). 이러한 큐 내에 저장된 계류중인 메모리 요청들중 하나는 프로세싱/서비싱을 위해 선택되고, 그 큐로부터 제거될 수 있으며, 그리고 선택된 메모리 요청에 의해 요청되는 소정의 메모리 페이지 (및 해당하는 소정의 메모리 뱅크)가 식별될 수 있다(404). 그런 다음, 소정의 메모리 뱅크에 대한 최근의 액세스 이력에 해당하는 현재 예측 값에 기초하여 소정의 메모리 페이지를 닫을 것인지 아니면 열린 채로 둘 것인 지에 대한 예측이 이루어질 수 있다(406). 일단 예측이 이루어지면, 상기 소정의 메모리 뱅크에 대한 소정 수의 가장 최근의 이전 메모리 액세스들에 해당하는 미래의 예측 값이 업데이트된다(412). 메모리 큐 내의 계류중인 메모리 요청들을 분석하여, 그 큐 내에 저장된 계류중인 메모리 요청들중 적어도 하나가 소정의 메모리 뱅크에 대한 액세스를 요청하고 있는 지의 여부를 결정할 수 있다(410).
상기 410에서의 분석이, 큐 내에 저장된 계류중인 메모리 요청들중 적어도 하나가 소정의 메모리 뱅크에 대한 액세스를 요청하고 있음을 나타내면(즉, 큐 내에 저장된 계류중인 메모리 요청들중 적어도 하나가 소정의 메모리 뱅크 내의 메모리 페이지를 목표로 하고 있다면), 그 큐 내에 저장된 계류중인 메모리 요청들을 이용하여, 소정의 메모리 페이지가 닫혀야하는지 아니면 열린 채로 남겨져야 하는 지를 결정할 수 있다(414, 418). 한편, 410에서의 분석이, 큐 내에 저장된 계류중인 메모리 요청들중 어느 것도 소정의 메모리 뱅크에 대한 액세스를 요청하고 있지 않음을 나타내면, 소정의 메모리 페이지는 406에서의 예측에 따라 닫히거나 또는 열린 채로 남을 수 있다(416).
만일 418 또는 416 중의 어느 하나가, 소정의 메모리 페이지가 닫혀야 함을 나타내는 경우, 선택된 메모리 요청에 대하여 그 소정의 메모리 페이지에 대한 액세스가 완료되면 (그리고 몇몇 실시예들에서는, 메모리가 다시 액세스되기 전에), 그 소정의 메모리 페이지는 닫힐 수 있다(422). 만일 소정의 메모리 페이지가 열린 채로 유지되어야 하는 것으로 결정되면, 이러한 소정의 메모리 페이지는 선택된 메모리 요청에 대하여 소정의 메모리 페이지에 대한 액세스가 완료된 후에 열린 채로 유지될 수 있으며(424), 그리고 지정된 시간 길이 이후에, 만일 이러한 지정된 시간 길이 동안 상기 소정의 메모리 페이지가 아이들 상태로 유지된다면, 이 소정의 메모리 페이지는 닫힐 수 있다(426). 이러한 지정된 시간 길이는 클럭 주기의 측면에서 측정될 수 있으며, 프로그램될 수 있다. 예를 들어, 소정의 메모리 페이지는 128 클럭 주기 동안 아이들 상태로 유지된 이후에 닫힐 수 있다. 특정의 실시예들에서, 클럭 주기들의 수는 소정의 메모리 뱅크에 대한 최근의 액세스 이력에 기초하여 동적으로 조정될 수 있다. 예를 들어, 소정의 메모리 뱅크에 대한 최근의 액세스 이력에 기초하여, 128개의 클럭 주기들은 16, 32, 64 등의 클럭 주기들로 조정될 수 있다. 몇몇 실시예들에서, 이러한 알고리즘은, 일단 406에서 예측이 이루어지면, 소정의 메모리 뱅크에 대한 최근의 액세스 이력을 업데이트하고, 그 소정의 메모리 뱅크에 대한 최근의 액세스 이력에 대한 해당 예측 값을 업데이트하는 것을 더 포함할 수 있다.
여기에서, 도 4의 흐름도는 선택된 (그러므로, 현재의) 메모리 액세스에 의한 소정의 메모리 페이지에 대한 실제 액세스가 언제 일어나는 지를 특정하지 않음을 주목해야 한다. 일 실시예에서, 소정의 메모리 페이지에 대한 액세스는 그 소정의 메모리 페이지에 대한 미래의 액세스에 관한 결정이 이루어진 후에 일어날 수 있다. 다른 실시예에서, 이러한 액세스는, 결정이 이루어지는 동안, 또는 심지어 이러한 결정이 이루어지기 전에 일어날 수 있다. 하지만, 일단 선택된 메모리 요청에 대하여 소정의 메모리 페이지에 대한 액세스가 완료되면 (그리고, 어떠한 실시예들에서는, 다른 메모리 요청에 의해 메모리가 액세스되기 전에), 그 소정의 메모리 페이지의 상태가 어떤 상태가 되어야 하는 지에 대한 결정이 이루어진다. 따라서, 몇몇 실시예들에서, 일단 소정의 메모리 페이지에 대한 미래의 액세스들에 관한 결정이 이루어지면, 선택된 메모리 요청(커맨드)이 (상기 소정의 메모리 페이지를 액세스하기 위해) 메모리에 전송될 수 있는 바, 그 선택된 메모리 커맨드에 대해 인에이블되는 자동-프리챠지 표시기(auto-precharge indicator)와 함께 전송된다. 이러한 자동-프리챠지 표시기는, 소정의 메모리 페이지가 닫혀야하는 것으로 예측된 경우 인에이블될 수 있고, 소정의 메모리 페이지가 열린 채로 남겨져야 하는 것으로 예측된 경우 디스에이블될 수 있다. 선택된 메모리 요청에 대하여 소정의 메모리 페이지에 대한 액세스가 완료되면, 인에이블된 자동-프리챠지는 소정의 뱅크 내의 소정의 메모리 페이지에 해당하는 로우의 자동적인 프리챠지를 야기한다. 선택된 메모리 요청에 대하여 소정의 메모리 페이지에 대한 액세스가 완료된 이후, 디스에이블된 자동-프리챠지 표시기는 소정 뱅크 내의 소정의 메모리 페이지에 해당하는 로우의 상태가 변하지 않게 한다.
따라서, DRAM 제어기는, DRAM 내에 구성된 개별적인 모든 페이지를 추적하지 않으면서 최적의 성능을 달성하기 위해, 페이지 히트들의 수를 최대화하고 페이지 충돌들의 수를 최소화하는 방식으로 판독/기록 요청들을 재배열하도록 구성될 수 있으며, 여기서 상기 재배열은 판독/기록 요청들 다음에 프리챠지가 따라와야 하는 지를 예측하기 위해 3-레벨 자동-프리챠지 예측 알고리즘을 수행함으로써 얻어지는 자동-프리챠지 예측들에 의해 통지될 수 있다.
비록 본 발명이 특정 실시예들과 관련하여 설명되었지만, 이러한 실시예들은 예시적인 것이며 본 발명의 범위는 그렇게 제한되지 않는 다는 것을 이해할 것이다. 상기 설명한 실시예들에 대한 임의의 변형들, 수정들, 부가들 및 개선들이 가능하다. 이러한 변형들, 수정들, 부가들 및 개선들은 하기의 청구항들에 기재된 본 발명의 범위 내에 있다.
본 발명은 일반적으로 마이크로프로세서들에 적용될 수 있다.
101: 프로세서 코어(들)
103: 메모리 제어기
104: 어드레스 맵
105: 메모리
106: DRAM 페이지 테이블
108: 뱅크 이력 테이블
110: 타이밍 체크
111: 메모리 버스
112: 중재기
113: 프로세싱 유닛
114: DCQ
116: 멀티플렉서
118: 기록 큐
120: 판독 큐

Claims (10)

  1. 복수의 메모리 뱅크들을 갖는 메모리(105)에 대한 액세스를 관리하는 방법으로서,
    현재 메모리 요청에 의해 요청되는 소정의 메모리 페이지를 식별하는 단계(404)와, 여기서 상기 소정의 메모리 페이지는 상기 복수의 메모리 뱅크들의 소정의 메모리 뱅크 내에 있으며;
    상기 소정의 메모리 뱅크에 대한 최근의 메모리 액세스들의 각각의 이력에 해당하는 현재 예측 값에 기초하여, 상기 소정의 메모리 페이지가 닫혀야하는지 아니면 열린 채로 남아야 하는 지를 결정하는 단계(406)와, 여기서 상기 복수의 메모리 뱅크들의 각각의 메모리 뱅크에 대한 최근 메모리 액세스들의 상기 이력은 페이지 테이블(106)의 각 엔트리에 저장되고, 상기 복수의 메모리 뱅크들의 각각의 메모리 뱅크에 대한 상기 현재 예측 값은 메모리 뱅크 테이블(108)의 각각의 엔트리에 저장되며;
    상기 메모리를 액세스할 것을 대기하고 있는 하나 이상의 부가적인 메모리 요청들중 어느 것도 상기 소정의 메모리 뱅크 내의 메모리 페이지를 요청하고 있지 않음을 결정하는 단계(410)와; 그리고
    상기 현재 메모리 요청에 대하여 상기 소정의 메모리 페이지에 대한 액세스의 완료하에서, 상기 소정의 메모리 페이지가 닫혀야 하는 것으로 결정되면 상기 소정의 메모리 페이지를 닫는 단계(422) 상기 소정의 메모리 페이지가 열린 채로 남아야 하는 것으로 결정되면 상기 소정의 메모리 페이지를 열린 채로 남겨두는 단계(424) 중 하나의 단계를 수행하는 단계를 포함하며,
    상기 소정의 메모리 페이지가 닫혀야하는지 아니면 열린 채로 남아야 하는 지를 결정하는 단계는, 상기 하나 이상의 부가적인 메모리 요청들 중 어느 것도 상기 소정의 메모리 뱅크 내의 메모리 페이지를 요청하고 있지 않는다는 결정에 응답하여 수행되는 것을 특징으로 하는 복수의 메모리 뱅크들을 갖는 메모리에 대한 액세스를 관리하는 방법.
  2. 제 1 항에 있어서,
    상기 단계(422)와 단계(424) 중 하나의 단계를 수행하는 단계는, 상기 현재 메모리 요청에 대하여 상기 소정의 메모리페이지에 대한 액세스가 완료된 후 상기 메모리가 다시 액세스되기 전에 수행되는 것을 특징으로 하는 복수의 메모리 뱅크들을 갖는 메모리에 대한 액세스를 관리하는 방법.
  3. 제 1 항에 있어서,
    상기 소정의 메모리 페이지가 지정된 시간 기간 동안 아이들 상태로 유지되는 것에 응답하여, 상기 현재 메모리 요청에 대하여 상기 소정의 메모리 페이지에 대한 액세스된가 완료되고 상기 지정된 시간 기간 이후, 상기 소정의 메모리 페이지를 닫는 단계를 더 포함하는 것을 특징으로 하는 복수의 메모리 뱅크들을 갖는 메모리에 대한 액세스를 관리하는 방법.
  4. 제 1 항에 있어서,
    상기 소정의 메모리 뱅크에 대한 제 1 수의 가장 최근의 이전 메모리 액세스들에 해당하는 제 1 정보, 및 상기 현재 메모리 요청에 대하여 상기 소정의 메모리 페이지에 대한 액세스에 해당하는 제 2 정보에 따라, 상기 현재 예측 값을 얻는 단계를 더 포함하는 것을 특징으로 하는 복수의 메모리 뱅크들을 갖는 메모리에 대한 액세스를 관리하는 방법.
  5. 제 1 항에 있어서,
    복수의 메모리 요청들을 수신하고, 상기 수신된 메모리 요청들을 계류중인 메모리 요청들로서 큐 내에 저장하는 단계(402)와;
    상기 큐 내에 저장된 계류중인 메모리 요청들중 하나를 선택하고, 선택된 메모리 요청을 상기 큐로부터 제거하는 단계(404)와;
    상기 선택된 메모리 요청에 의해 요청되는 제 1 메모리 페이지 및 해당하는 제 1 메모리 뱅크를 식별하는 단계(404)와;
    상기 제 1 메모리 뱅크에 대한 최근의 메모리 액세스들의 이력에 해당하는 현재 예측 값에 기초하여, 상기 제 1 메모리 페이지를 닫아야하는지, 아니면 열린 채로 남겨 두어야 하는 지의 예측을 행하는 단계(406)와;
    상기 큐 내에 저장된 상기 계류중인 메모리 요청들중 어느 것도 상기 제 1 메모리 뱅크에 대한 액세스를 요청하고 있지 않음을 결정하는 단계(410)와;
    상기 결정 단계에 응답하여,
    상기 예측을 행하는 단계에 의해, 상기 제 1 메모리 페이지를 닫아야하는 것으로 예측되면, 상기 선택된 메모리 요청에 대한 자동-프리챠지(auto-precharge)를 인에이블시키는 것(422), 또는
    상기 예측을 행하는 단계에 의해, 상기 제 1 메모리 페이지를 열린 채로 남겨 두어야 하는 것으로 예측되면, 상기 선택된 메모리 요청에 대한 자동-프리챠지를 디스에이블시키는 것(424) 중에서 하나를 수행하는 단계를 더 포함하는 것을 특징으로 하는 복수의 메모리 뱅크들을 갖는 메모리에 대한 액세스를 관리하는 방법.
  6. 하나 이상의 메모리 뱅크들을 갖는 메모리(105)에 대한 액세스를 제어하도록 구성된 메모리 제어기(103)로서,
    상기 하나 이상의 메모리 뱅크들 각각에 대한 각각의 메모리 뱅크 액세스 이력 정보를 저장하도록 구성된 페이지 테이블(106)과; 그리고
    복수의 엔트리들을 갖는 메모리 뱅크 이력 테이블(108)을 포함하며,
    여기서, 상기 복수의 엔트리들의 각 엔트리는 상기 하나 이상의 메모리 뱅크들중 하나에 대해 페이지 테이블에 저장된 각각의 메모리 뱅크 액세스 이력 정보에 해당하는 각각의 예측 값을 저장하도록 구성되고;
    상기 메모리 제어기는 현재 메모리 요청이 목표로 하고 있는 소정의 메모리 페이지를 식별하도록 구성되고, 상기 소정의 메모리 페이지는 상기 하나 이상의 메모리 뱅크들의 소정의 메모리 뱅크 내에 있고;
    상기 메모리 제어기는 상기 메모리 뱅크 이력 테이블로부터 현재 예측 값을 얻도록 더 구성되고, 상기 현재 예측 값은 상기 소정의 메모리 뱅크에 대해 상기 페이지 테이블에 저장된 상기 각각의 메모리 뱅크 액세스 이력 정보에 적어도 기초하며; 그리고 상기 현재 예측 값은 메모리 제어기에게, 상기 메모리 제어기가 상기 소정의 메모리 페이지를 닫아야하는지, 아니면 상기 소정의 메모리 페이지를 열린 채로 남겨두어야 하는 지를 나타내며; 그리고
    상기 메모리 제어기는 임의의 계류중인 메모리 요청들이 상기 소정의 메모리 뱅크를 목표로 하고 있는 지를 결정하고, 상기 계류중인 메모리 요청들중 어느 것도 상기 소정의 메모리 뱅크를 목표로 하고 있지 않다는 결정에 응답하여, 상기 현재 메모리 요청에 대해 상기 소정의 메모리 페이지에 대한 액세스가 완료되면, 상기 현재 예측 값이 무엇을 나타내는 지에 따라 상기 소정의 메모리 페이지를 닫거나 또는 열린 채로 남겨두도록 구성되며; 그리고
    상기 계류중인 메모리 요청들은 상기 메모리를 액세스할 것을 대기하고 있는 하나 이상의 부가적인 메모리 요청들을 포함하는 것을 특징으로 하는 메모리 제어기.
  7. 제 6 항에 있어서, 상기 메모리 제어기는 다음의 것들:
    상기 메모리 뱅크 이력 테이블의 소정의 엔트리로부터 상기 현재 예측 값을 얻고, 여기서 상기 소정의 엔트리의 위치는, 상기 소정의 메모리 뱅크에 대한 상기 페이지 테이블에 저장된 상기 각각의 메모리 뱅크 액세스 이력 정보의 적어도 제 1 부분, 및 상기 현재 메모리 요청에 해당하는 메모리 뱅크 액세스 정보에 의해 결정되며;
    상기 계류중인 메모리 요청들중 어느 것도 상기 소정의 메모리 페이지를 목표로 하고 있지 않고, 상기 계류중인 메모리 요청들중 적어도 하나가 상기 소정의 메모리 뱅크 내의 닫힌 메모리 페이지를 목표로 하고 있을 때, 상기 현재 메모리 요청에 대해 상기 소정의 메모리 페이지에 대한 액세스가 완료되면, 상기 소정의 메모리 페이지를 닫고;
    상기 계류중인 메모리 요청들중 어느 것도 상기 소정의 메모리 뱅크 내의 임의의 닫힌 메모리 페이지들을 목표로 하고 있지 않고, 상기 계류중인 메모리 요청들중 적어도 하나가 상기 소정의 메모리 페이지를 목표로 하고 있을 때, 상기 현재 메모리 요청에 대해 상기 소정의 메모리 페이지에 대한 액세스가 완료되면, 상기 소정의 메모리 페이지를 열린 채로 남겨두고;
    상기 계류중인 메모리 요청들중 적어도 하나가 상기 소정의 메모리 페이지를 목표로 하고 있고, 상기 계류중인 메모리 요청들중 적어도 하나가 상기 소정의 메모리 뱅크 내의 닫힌 메모리 페이지를 목표로 하고 있을 때, 상기 현재 메모리 요청에 대해 상기 소정의 메모리 페이지에 대한 액세스가 완료되면, 상기 소정의 메모리 페이지를 열린 채로 남겨두고;
    상기 현재 예측 값을 얻은 후, 상기 메모리 뱅크 이력 테이블에 저장된 미래 예측 값을 업데이트하고;
    상기 메모리 뱅크 이력 테이블의 소정의 엔트리에 저장된 상기 미래 예측 값을 업데이트하고, 여기서 상기 소정의 엔트리의 위치는 상기 소정의 메모리 뱅크에 대한 상기 페이지 테이블에 저장된 상기 각각의 메모리 뱅크 액세스 이력 정보에 의해 결정되며; 그리고
    상기 현재 메모리 요청에 해당하는 메모리 액세스 상태(memory access condition)를 식별하고, 상기 메모리 액세스 상태에 따라 상기 미래 예측 값을 업데이트하는 것 중에서,
    하나 이상을 수행하도록 더 구성되며,
    여기서, 상기 메모리 액세스 상태는,
    상기 소정의 메모리 페이지가 이미 열려 있음을 나타내는 페이지 히트(page hit);
    상기 소정의 메모리 뱅크 내에 어떠한 열린 페이지도 없음을 나타내는 페이지 미스(page miss); 또는
    상기 소정의 메모리 페이지가 열려있지 않고 상기 소정의 메모리 뱅크 내의 다른 메모리 페이지가 열려있음을 나타내는 페이지 충돌(page conflict)중 하나인 것을 특징으로 하는 메모리 제어기.
  8. 제 7 항에 있어서,
    상기 메모리 액세스 상태가 페이지 히트이면, 상기 메모리 제어기는 상기 소정의 메모리 페이지가 열린 채로 유지되어야 함을 나타내기 위해 상기 미래 예측 값을 업데이트하도록 동작하고;
    상기 메모리 액세스 상태가 페이지 충돌이면, 상기 메모리 제어기는 상기 소정의 메모리 페이지가 닫혀야 함을 나타내기 위해 상기 미래 예측 값을 업데이트하도록 동작하고;
    상기 메모리 액세스 상태가 페이지 미스이고, 상기 소정의 메모리 뱅크 내의 가장 최근에 열린 페이지가 상기 소정의 메모리 페이지가 아니면, 상기 메모리 제어기는 상기 소정의 메모리 페이지가 닫혀야 함을 나타내기 위해 상기 미래 예측 값을 업데이트하도록 동작하고;
    상기 메모리 액세스 상태가 페이지 미스이고, 상기 소정의 메모리 뱅크 내의 가장 최근에 열린 페이지가 상기 소정의 메모리 페이지이면, 상기 메모리 제어기는 상기 소정의 메모리 페이지가 열린 채로 유지되어야 함을 나타내기 위해 상기 미래 예측 값을 업데이트하도록 동작하고;
    상기 메모리 뱅크 이력 테이블의 각 엔트리는 각각의 칸피던스 카운터 값(confidence counter value)을 저장하도록 더 구성되고;
    상기 메모리 제어기는 상기 메모리 뱅크 이력 테이블의 소정의 엔트리에 상기 미래 예측 값을 저장하도록 동작하며; 그리고
    상기 메모리 제어기는 상기 메모리 액세스 상태 및 상기 소정의 엔트리에 저장된 상기 각각의 칸피던스 카운터 값에 따라 상기 미래 예측 값을 업데이트하도록 동작하는 것을 특징으로 하는 메모리 제어기.
  9. 제 6 항에 있어서,
    상기 메모리 제어기에 결합된 하나 이상의 메모리 요소들(105)을 더 포함하며,
    상기 메모리 제어기는 상기 하나 이상의 메모리 요소들에 대한 액세스를 제어하도록 구성되는 것을 특징으로 하는 메모리 제어기.
  10. 삭제
KR1020107006272A 2007-08-22 2008-07-28 추론적 프리챠지의 검출 KR101554294B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/843,443 US7761656B2 (en) 2007-08-22 2007-08-22 Detection of speculative precharge
US11/843,443 2007-08-22

Publications (2)

Publication Number Publication Date
KR20100055503A KR20100055503A (ko) 2010-05-26
KR101554294B1 true KR101554294B1 (ko) 2015-09-18

Family

ID=39865815

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107006272A KR101554294B1 (ko) 2007-08-22 2008-07-28 추론적 프리챠지의 검출

Country Status (7)

Country Link
US (1) US7761656B2 (ko)
EP (1) EP2191376B1 (ko)
JP (1) JP5305542B2 (ko)
KR (1) KR101554294B1 (ko)
CN (1) CN102084345B (ko)
TW (1) TWI457753B (ko)
WO (1) WO2009025712A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090157985A1 (en) * 2007-12-18 2009-06-18 Arm Limited Accessing memory arrays
US8429367B2 (en) * 2007-12-28 2013-04-23 Intel Corporation Systems, methods and apparatuses for clock enable (CKE) coordination
US8347020B2 (en) * 2009-03-20 2013-01-01 Qualcomm Incorporated Memory access controller, systems, and methods for optimizing memory access times
JP5428687B2 (ja) * 2009-09-14 2014-02-26 株式会社リコー メモリ制御装置
KR20110032606A (ko) * 2009-09-23 2011-03-30 삼성전자주식회사 전자 디바이스의 성능 개선을 위한 전자 디바이스 컨트롤러
US20120059983A1 (en) * 2010-09-03 2012-03-08 David Wilkins Nellans Predictor-based management of dram row-buffers
US8615638B2 (en) * 2010-10-08 2013-12-24 Qualcomm Incorporated Memory controllers, systems and methods for applying page management policies based on stream transaction information
WO2013083194A1 (en) * 2011-12-08 2013-06-13 Huawei Technologies Co., Ltd. Memory controller and method for controlling accesses to a memory
US8990473B2 (en) * 2012-10-04 2015-03-24 Applied Micro Circuits Corporation Managing requests to open and closed banks in a memory system
US9251048B2 (en) * 2012-10-19 2016-02-02 International Business Machines Corporation Memory page management
CN103902462B (zh) * 2012-12-27 2018-03-09 华为技术有限公司 内存管理方法、内存管理装置及计算机
US20150199134A1 (en) * 2014-01-10 2015-07-16 Qualcomm Incorporated System and method for resolving dram page conflicts based on memory access patterns
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
EP3284218B1 (en) 2015-10-12 2020-01-01 Hewlett-Packard Enterprise Development LP Switch network architecture
US9703493B2 (en) 2015-12-14 2017-07-11 Qualcomm Incorporated Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache
JP2018049387A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
US10379748B2 (en) 2016-12-19 2019-08-13 International Business Machines Corporation Predictive scheduler for memory rank switching
US11029879B2 (en) * 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
JP2019204150A (ja) * 2018-05-21 2019-11-28 日本電信電話株式会社 通信用入出力装置
CN109658009B (zh) * 2019-01-11 2024-05-07 杭州市电力设计院有限公司 基于随机原理与排队理论的电动汽车充电站能量管理方法
US10991417B1 (en) 2019-05-24 2021-04-27 Xilinx, Inc. Auto-precharge management in a controller
US11373695B2 (en) 2019-12-18 2022-06-28 Micron Technology, Inc. Memory accessing with auto-precharge
KR102343550B1 (ko) * 2020-04-10 2021-12-24 원광대학교산학협력단 스몰 액티브 커맨드를 이용한 메모리 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295322A (ja) * 2003-03-26 2004-10-21 Nec Corp メモリアクセス制御装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0394344A (ja) * 1989-09-07 1991-04-19 Nec Corp 情報処理装置
US5715421A (en) * 1992-10-16 1998-02-03 Seiko Epson Corporation Apparatus and method of addressing paged mode memory including adjacent page precharging
JP3254019B2 (ja) * 1992-11-30 2002-02-04 富士通株式会社 データ先読み制御装置
US5732236A (en) 1993-05-28 1998-03-24 Texas Instruments Incorporated Circuit and method for controlling access to paged DRAM banks with request prioritization and improved precharge schedule
JPH07105686A (ja) * 1993-10-04 1995-04-21 Oki Electric Ind Co Ltd メモリ制御装置
US5625790A (en) 1995-09-14 1997-04-29 Micron Technology, Inc. Method and apparatus for reducing the access time of a memory device by decoding a row address during a precharge period of the memory device
US5889714A (en) * 1997-11-03 1999-03-30 Digital Equipment Corporation Adaptive precharge management for synchronous DRAM
US5983325A (en) 1997-12-09 1999-11-09 Advanced Micro Devices, Inc. Dataless touch to open a memory page
US6199145B1 (en) * 1998-02-27 2001-03-06 Intel Corporation Configurable page closing method and apparatus for multi-port host bridges
US6219765B1 (en) * 1998-08-03 2001-04-17 Micron Technology, Inc. Memory paging control apparatus
US6401180B1 (en) 1999-01-04 2002-06-04 Advanced Micro Devices, Inc. Bank history table for improved pre-charge scheduling of random access memory banks
JP2001166985A (ja) * 1999-12-10 2001-06-22 Nec Gumma Ltd メモリ制御装置
US7127573B1 (en) 2000-05-04 2006-10-24 Advanced Micro Devices, Inc. Memory controller providing multiple power modes for accessing memory devices by reordering memory transactions
US6785793B2 (en) * 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
US6829184B2 (en) 2002-01-28 2004-12-07 Intel Corporation Apparatus and method for encoding auto-precharge
US7124260B2 (en) 2002-08-26 2006-10-17 Micron Technology, Inc. Modified persistent auto precharge command protocol system and method for memory devices
CN1279450C (zh) * 2002-11-13 2006-10-11 矽统科技股份有限公司 内存读取/写入仲裁方法
US7133995B1 (en) 2002-12-16 2006-11-07 Advanced Micro Devices, Inc. Dynamic page conflict prediction for DRAM
US20050060533A1 (en) 2003-09-17 2005-03-17 Steven Woo Method, device, software and apparatus for adjusting a system parameter value, such as a page closing time
US7167946B2 (en) 2003-09-30 2007-01-23 Intel Corporation Method and apparatus for implicit DRAM precharge
US7130967B2 (en) * 2003-12-10 2006-10-31 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
KR100650730B1 (ko) 2004-12-28 2006-11-27 주식회사 하이닉스반도체 메모리 장치의 프리차지 타이밍 제어 방법 및 그 장치
US7167385B2 (en) 2005-02-11 2007-01-23 International Business Machines Corporation Method and apparatus for controlling the timing of precharge in a content addressable memory system
JP4839749B2 (ja) * 2005-09-20 2011-12-21 日本電気株式会社 コンピュータ、携帯端末装置、電力制御方法、電力制御プログラム
US20070162642A1 (en) * 2005-12-19 2007-07-12 Ivo Tousek A dma controller with multiple intra-channel software request support
US7606988B2 (en) * 2007-01-29 2009-10-20 International Business Machines Corporation Systems and methods for providing a dynamic memory bank page policy

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004295322A (ja) * 2003-03-26 2004-10-21 Nec Corp メモリアクセス制御装置

Also Published As

Publication number Publication date
EP2191376B1 (en) 2016-09-28
EP2191376A1 (en) 2010-06-02
JP5305542B2 (ja) 2013-10-02
CN102084345A (zh) 2011-06-01
JP2010537310A (ja) 2010-12-02
KR20100055503A (ko) 2010-05-26
TWI457753B (zh) 2014-10-21
WO2009025712A1 (en) 2009-02-26
TW200925859A (en) 2009-06-16
US7761656B2 (en) 2010-07-20
CN102084345B (zh) 2014-06-18
US20090055570A1 (en) 2009-02-26

Similar Documents

Publication Publication Date Title
KR101554294B1 (ko) 추론적 프리챠지의 검출
US8560796B2 (en) Scheduling memory access requests using predicted memory timing and state information
US6526483B1 (en) Page open hint in transactions
US7127574B2 (en) Method and apparatus for out of order memory scheduling
US8572322B2 (en) Asynchronously scheduling memory access requests
EP2943956B1 (en) Memory device having an adaptable number of open rows
US20150046642A1 (en) Memory command scheduler and memory command scheduling method
US7587547B2 (en) Dynamic update adaptive idle timer
WO2000075793A1 (en) A programmable sram and dram cache interface
WO2004061685A2 (en) Method and apparatus for determining a dynamic random access memory page management implementation
KR20230157522A (ko) 중재 동안의 기록 뱅크 그룹 마스크
US11789655B2 (en) Efficient and low latency memory access scheduling
EP4359903A1 (en) Efficient rank switching in multi-rank memory controller
US6801982B2 (en) Read prediction algorithm to provide low latency reads with SDRAM cache
US11782640B2 (en) Efficient and low latency memory access scheduling
CN113946435A (zh) 内存管理技术及计算机系统
US20240112722A1 (en) Directed refresh management for dram
CN112965816B (zh) 内存管理技术及计算机系统
Guo et al. Alleviating dram refresh overhead via inter-rank piggyback caching
US11526278B2 (en) Adaptive page close prediction
EP4315013A1 (en) Dram command streak efficiency management

Legal Events

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