KR101182018B1 - 메모리 랭크 버스트 스케줄링 - Google Patents

메모리 랭크 버스트 스케줄링 Download PDF

Info

Publication number
KR101182018B1
KR101182018B1 KR1020107021358A KR20107021358A KR101182018B1 KR 101182018 B1 KR101182018 B1 KR 101182018B1 KR 1020107021358 A KR1020107021358 A KR 1020107021358A KR 20107021358 A KR20107021358 A KR 20107021358A KR 101182018 B1 KR101182018 B1 KR 101182018B1
Authority
KR
South Korea
Prior art keywords
memory
rank
requests
request
queues
Prior art date
Application number
KR1020107021358A
Other languages
English (en)
Other versions
KR20100117135A (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 KR20100117135A publication Critical patent/KR20100117135A/ko
Application granted granted Critical
Publication of KR101182018B1 publication Critical patent/KR101182018B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

방법, 장치 및 시스템이 개시된다. 일 실시예에서, 방법은 다수의 메모리 요청을 다수의 메모리 랭크 큐 내에 그룹화하는 단계를 포함한다. 각각의 랭크 큐는 대응하는 메모리 랭크 내의 어드레스들을 타겟으로 하는 메모리 요청들을 포함한다. 방법은 또한 메모리 랭크 큐들 중 하나 내의 메모리 요청들의 최소 버스트 수를, 버스트 수가 복수의 메모리 랭크 큐 중 하나 내에 도달한 때 서비스되도록 스케줄링한다. 마지막으로, 메모리 요청이 에이징 임계치를 초과하는 경우, 그 메모리 요청이 서비스된다.

Description

메모리 랭크 버스트 스케줄링{MEMORY RANK BURST SCHEDULING}
본 발명은 메모리 서브시스템에 대한 트래픽의 스케줄링에 관한 것이다. 구체적으로, 본 발명은 메모리 요청들을 동일 메모리 랭크들로 그룹화함으로써 메모리 요청들의 버스트들을 스케줄링하는 것에 관한 것이다.
근년에, 컴퓨터 산업에서는 메모리 서브시스템의 성능을 향상시키기 위하여 여러 메모리 스케줄링 정책들이 제안되고 구현되어 왔다. 그러나, 최근에는 에너지 효율이 메모리 서브시스템들의 설계에 있어서 1 순위 고려 대상이 되었다. 따라서, 때로는 소정의 컴퓨터 시스템들은 메모리 서브시스템에서 때때로 소정의 레이턴시를 희생하여 메모리 서브시스템의 전체 전력 소비를 전반적으로 개선하는 것이 유리하다.
최신의 메모리 모듈들은 통상적으로 여러 개의 메모리 랭크로 분할되며, 각각의 랭크는 여러 개의 뱅크를 갖는다. 메모리 서브시스템들로의 전력 공급은 전력이 각각의 메모리 랭크에 대해 독립적으로 공급되게 하기 위해 종종 분할될 수 있다. 진보된 전력 관리 특징들을 갖는 컴퓨터 시스템들은 메모리 서브시스템과 같은 서브시스템들이 저전력 유휴 상태가 되게 하는 것은 물론, 최대 전력 동작 상태가 되게 하는 능력을 갖는다.
본 발명은 도면들에 의해 한정이 아니라 예시적으로 도시되며, 도면들에서 동일 참조 부호들은 유사한 요소들을 지시한다.
도 1은 MRBS 엔진의 일 실시예를 나타낸다. 많은 실시예에서, MRBS 엔진(100)은 메모리 제어기(102)에 통신 결합된다.
도 2는 메모리 요청들의 그들의 기점으로부터 목적지로의 예시적인 프로세스 흐름을 나타낸다.
도 3-8은 상이한 기준들에 기초하는 다양한 메모리 요청 버스트 배열 스킴들을 나타낸다.
도 9는 랭크별로 메모리 요청들의 버스트들을 전송하는 프로세스의 일 실시예의 흐름도이다.
메모리 랭크 버스트 스킴을 이용하여 메모리 요청들을 스케줄링하기 위한 방법, 장치 및 시스템의 실시예들이 개시된다. 후술하는 실시예들 중 다수에서, 다수의 랭크를 갖는 메모리를 포함하는 컴퓨터 시스템 내에 메모리 랭크 버스트 스케줄링(MRBS) 엔진이 상주한다. MRBS 엔진은 하나 이상의 프로세서 및/또는 하나 이상의 입출력(I/O) 장치로부터 메모리 요청들을 수신한다. 어드레스 번역 로직은 수신된 메모리 요청들의 각각이 컴퓨터 시스템 내의 메모리 내의 어떤 메모리 랭크를 타겟으로 하고 있는지를 결정한다. 이어서, 요청들은 다수의 메모리 랭크 큐들로 분류되며, 메모리 랭크당 하나의 메모리 랭크 큐가 존재한다.
이어서, MRBS 엔진은 버스트들 내에서 메모리로 전송될 요청들의 그룹들을 스케줄링하며, 각각의 버스트는 다수의 요청을 포함한다. MRBS 엔진은 또한 모든 랭크들을 모니터링하여, 랭크들의 어느 것도 메모리 요청이 위치하는 메모리 랭크 큐가 유효 버스트를 구성할 충분한 요청들을 수신하지 못하기 때문에 완료되지 않고 있는 메모리 요청을 갖지 않는 것을 보장한다. 임의의 랭크 큐 내의 임의의 메모리 요청이 에이징 임계치를 초과하는 경우(즉, 요청이 쇠약해지는 경우), 그 요청은 요청이 자체적으로 전송되어야 하는 경우에도 메모리로 전송되며, MRBS 엔진이 이용하는 요청 규칙들의 최소 버스트 수를 따르지 않는다.
메모리 랭크들에 대한 액세스가 랭크마다 버스트들로 분할될 때, 랭크들은 컴퓨터 시스템이 동작하는 시간의 상당 부분 동안 개별적으로 유휴 상태에 있을 수 있다. 따라서, 랭크 버스팅 스킴을 제공함으로써, 랭크들이 버스트들 사이에서 유휴 상태에 있는 시간들은 진보된 전력 공급 및 관리 시스템이 하나 이상의 랭크를 저전력 유휴 상태가 되게 하는 것을 가능하게 하며, 이는 메모리 서브시스템의 전체 전력 소비를 낮출 것이다.
아래의 설명 및 청구범위에서 개시되는 기술들의 "하나의 실시예" 또는 "일 실시예"에 대한 언급은 그 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 개시되는 기술들의 적어도 일 실시예에 포함된다는 것을 의미한다. 따라서, 명세서 전반에서 다양한 곳에 나오는 "일 실시예에서"라는 문구의 출현들은 모두가 동일 실시예를 지칭하지는 않는다.
아래의 설명 및 청구범위에서, "포함한다" 및 "구비한다"라는 용어들은 그들의 변형들과 더불어 서로에 대한 동의어들로서 사용되고, 그렇게 취급되는 것을 의도할 수 있다. 또한, 아래의 설명 및 청구범위에서는, "결합되는" 및 "접속되는"이라는 용어들이 그들의 변형들과 더불어 사용될 수 있다. 이러한 용어들은 서로에 대한 동의어인 것을 의도하지 않는다는 것을 이해해야 한다. 오히려, 특정 실시예들에서, "접속되는"이라는 용어는 둘 이상의 요소가 서로 직접 물리적 또는 전기적으로 접촉하는 것을 지시하는 데 사용될 수 있다. "결합되는"이라는 용어는 둘 이상의 요소가 직접 물리적 또는 전기적으로 접촉하는 것을 의미할 수 있다. 그러나, "결합되는"이라는 용어는 둘 이상의 요소가 서로 직접 접촉하지 않지만, 여전히 서로 협력하거나 상호작용하는 것을 의미할 수도 있다.
더구나, 아래의 설명 및 청구범위에서, "통신 결합되는"이라는 용어는 그의 변형들과 더불어 특정 실시예들에서 둘 이상의 요소가 결합 매체(결합 매체는 상호접속, 네트워크, 구리 와이어 등이다) 자체를 통해 일부 수단들에 의해 서로 통신하게 하는 결합(즉, 전술한 바와 같은 "결합되는")을 설명하는 데 사용될 수 있다.
도 1은 MRBS 엔진의 일 실시예를 나타낸다. 많은 실시예에서, MRBS 엔진(100)은 메모리 제어기(102)에 통신 결합된다. 다른 실시예들에서, MRBS 엔진(100)은 메모리 제어기(102)에 통합된다. 메모리 제어기(102)는 메모리 제어기(102)에 통신 결합되는 하나 이상의 프로세서로부터 메모리 요청들(프로세서들(104)로부터의 입력)을 수신한다. 많은 실시예에서, 메모리 제어기(102)는 하나 이상의 프로세서 중 적어도 하나에 통합된다. 하나 이상의 프로세서 각각은 상이한 실시예들에서 하나 이상의 프로세서 코어를 가질 수 있다. 또한, 많은 실시예에서, 메모리 제어기(102)는 또한 메모리 제어기(102)에 통신 결합되는 I/O 서브시스템으로부터 하나 이상의 I/O 장치로부터 메모리 요청들(I/O(106)로부터의 입력)을 수신한다. I/O 서브시스템은 하나 이상의 I/O 장치에 결합되는 하나 이상의 I/O 호스트 제어기를 포함할 수 있다. I/O 호스트 제어기들은 특히 하나 이상의 유니버설 직렬 버스(USB) 호스트 제어기 및 하나 이상의 주변 컴포넌트 상호접속(PCI) 익스프레스(등록상표) 호스트 제어기를 포함할 수 있다.
더구나, MRBS 엔진(100)은 메모리(108)에 통신 결합된다. 메모리(108)는 상이한 실시예들에서 동적 랜덤 액세스 메모리(DRAM)와 같은 하나 이상의 타입의 메모리일 수 있다. 메모리는 듀얼 인라인 메모리 모듈(DIMM) 또는 이들의 임의 변형들과 같은 하나 이상의 메모리 모듈을 포함할 수 있다. 메모리 모듈은 다수의 메모리 랭크는 물론, 메모리 랭크당 다수의 메모리 뱅크를 포함할 수 있다. 일부 실시예들에서, 메모리는 메모리 랭크 0(110) 및 메모리 랭크 1(112)에서 시작하여 메모리 랭크 N-1을 통해 계속되는 N개의 랭크를 포함한다. 예를 들어, 8개의 메모리 랭크가 존재할 수 있다. 소정 예들에서는 메모리 랭크당 8개의 메모리 뱅크가 존재할 수 있다.
프로세서들, I/O 서브시스템들, 메모리 제어기, MRBS 엔진 및 다중 랭크 메모리는 컴퓨터 시스템 내에 위치한다. 다른 실시예들에서, 컴퓨터 시스템은 데스크탑 컴퓨터, 랩탑 컴퓨터, 서버 컴퓨터, 핸드헬드 장치, 텔레비전 셋톱 컴퓨터, 또는 컴퓨터 시스템들의 많은 다른 타입들 중 어느 하나일 수 있다.
많은 실시예에서, 메모리 제어기는 하나 이상의 프로세서(104) 및 I/O 서브시스템(106)으로부터의 모든 메모리 요청들을 수신하기 위한 입력 큐(도시되지 않음)를 구비한다. 메모리 제어기(102)는 각각의 메모리 요청을 메모리 요청 내의 어드레스가 타겟으로 하고 있는 물리 랭크로 분류하기 위한 어드레스 번역 로직(116)을 포함한다. 따라서, 어드레스 번역 로직(116)은 각각의 메모리 요청을 랭크 큐들, 즉 메모리 랭크 0 큐(118), 메모리 랭크 1 큐(120) 내지 메모리 랭크 N-1 큐(122) 중 하나로 전송한다.
많은 실시예에서, 스케줄러(124)가 각각의 메모리 랭크 큐의 상태를 감독하며, 하나 이상의 사전 결정된 요구가 충족된 후에 메모리(108)로 전송될 메모리 요청들의 버스트를 스케줄링할 것이다. 많은 실시예에서, 하나의 요구는 랭크 큐로부터의 메모리 요청들의 최소 버스트 수를 포함한다. 따라서, 최소 버스트 수가 2인 경우, 스케줄러(124)는 요청들이 메모리(108)로 전송되기 전에 주어진 랭크 큐 내에 2개의 메모리 요청이 존재할 때까지 기다릴 것이다. 따라서, 제1 요청은 시간 A에 도달할 수 있고, 제2 요청은 시간 B에 도달할 수 있으며, 이어서 제1 및 제2 요청들은 시간 B에 2개 요청의 버스트 내에 스케줄링되는데, 이는 제1 요청이 서비스되기 전에(즉, 스케줄링되고, 메모리(108)로 전송되기 전에) 시간 A에서 시간 B까지의 절대 시간의 차이 동안 기다릴 것을 요구한다.
또한, 많은 실시예에서, 스케줄러(124)가 고수하는 또 하나의 요구는 랭크 큐로부터의 메모리 요청들의 최대 버스트 수를 포함한다. 따라서, 최대 버스트 수가 8인 경우, 스케줄러(124)는 다른 랭크로 이동하기 전에 주어진 랭크로부터 한 번에 8개 이하의 버스트를 스케줄링할 것이다. 그러나, 어떠한 다른 랭크 큐도 최소 버스트 수의 미해결 요청들을 갖지 않는 경우, 스케줄러(124)는 즉시 동일 랭크 큐로 복귀하고, 그 랭크 큐가 제1 최대 버스트 수의 요청들을 초과하는 추가의 최소 버스트 수의 요청들을 갖는 경우에 다른 버스트를 스케줄링할 수 있다.
각각의 랭크 큐는 뱅크 오버랩 비트 어레이(BO)는 물론, 에이징 카운터(AC)도 포함한다. BO는 대응 메모리 랭크를 구성하는 뱅크들 각각에 대한 정보의 저장된 비트를 포함한다. 예를 들어, 메모리 랭크 0을 포함하는 8개의 뱅크가 존재하는 경우, 뱅크 오버랩 비트 어레이 내에는 8비트 값이 존재할 것이며, 그 값 내의 각각의 비트는 특정 뱅크에 대응한다.
이러한 비트마다의 값은 뱅크가 랭크 큐 내에 표현되어 있는지를 지시한다. 많은 실시예에서, 상이한 뱅크들에 대한 랭크 버스트 내의 메모리 요청들을 이용하는 메모리 랭크 버스트를 갖는 것이 더 유리하다. 뱅크 오버랩은 다수의 뱅크가 단일 메모리 랭크에 대한 메모리 요청들의 주어진 버스트 내에서 액세스되는 것을 지칭한다. 따라서, 최소 버스트 수가 2인 경우, 일부 실시예들에서 단일 버스트에 대해 2개의 메모리 요청이 이용 가능한 것으로 보이기 위해, 큐 내의 메모리 요청들은 메모리 랭크 내의 상이한 뱅크들을 타겟으로 해야 한다.
대안으로, 최소 버스트 수가 2이고, 단일 랭크 큐 내에 2개의 미해결 메모리 요청이 존재하지만, 2개의 메모리 요청이 동일 뱅크에 대한 것인 경우, 이러한 메모리 요청 쌍은 동일 버스트 내에 있을 자격이 없으며, 버스트는 아직 생성될 수 없다.
많은 실시예에서, 뱅크 오버랩 비트 어레이는 단지 특정 뱅크를 타겟으로 하는 주어진 랭크 큐 내의 적어도 하나의 미해결 메모리 요청이 존재하는지를 추적한다. 따라서, 특정 뱅크를 타겟으로 하는 둘 이상의 미해결 메모리 요청이 존재할 수 있지만, (2, 5, 10개 등의 요청이 존재함을 의미할 수 있는) 적어도 하나의 요청이 존재하는 경우에 비트는 "1"일 것이다. 특정 뱅크에 대한 요청이 존재하지 않게 되자마자, 비트는 "0"으로 스위칭된다. 많은 실시예에서, 최대 버스트 수는 랭크 내의 뱅크들의 수와 동일하다.
에이징 카운터는 가장 오래된 메모리 요청이 대응하는 랭크 큐 내에서 얼마나 실효되었는지를 추적한다. 주어진 메모리 요청의 실효도(stale-ness)는 메모리 요청이 얼마나 오랫동안 메모리 랭크 큐 내에 머물렀는지를 나타낸다. 메모리 요청이 스케줄링(즉, 서비스)되지 않고 너무 오랫동안 머무는 경우, 노쇠(starvation)가 발생할 수 있으며, 이는 프로세서 또는 I/O 장치를 (프로세서/장치가 서비스되는 메모리 요청에 의존하는 다른 동작들을 갖는 경우) 중지시킬 수 있다. 따라서, 에이징 카운터는 메모리 랭크 큐 내의 가장 오래된 요청이 도착한 이후에 경과된 클럭들의 수를 카운트할 수 있다. 메모리 요청이 에이징 임계치를 지난 기간 동안 메모리 요청 큐 내에 머무른 경우에, 메모리 요청은 메모리 랭크 큐가 랭크 버스트에 대한 자격을 갖는 데 필요한 수의 요청들을 갖지 않는 경우에도 스케줄링될 것이다. 많은 실시예에서, 에이징 임계치는 기본 입출력 시스템(BIOS) 또는 다른 곳에서 액세스될 수 있는 구성 레지스터를 통해 상하로 변경될 수 있다.
따라서, 스케줄러(124)는 에이징 카운터, 뱅크 오버랩 비트 어레이 및 최소 및 최대 버스트 수들과 같은 기준들을 이용하여 메모리 요청들의 버스트들을 배열한다. 많은 실시예에서, 스케줄러(124)가 현재 작용하고 있는 메모리 랭크는 워킹 랭크로서 지칭될 수 있다. 워킹 랭크는 메모리 랭크 0 큐(118), 메모리 랭크 1 큐(120) 내지 메모리 랭크 N-1 큐(122) 사이에서 변할 수 있다.
많은 실시예에서, 컴퓨터 시스템 내에는 메모리 랭크 전력 관리자(126)가 존재한다. 메모리 랭크 전력 관리자(126)는 메모리(108) 내의 각각의 랭크의 전력을 개별적으로 업 및 다운하기 위한 로직을 포함한다. 따라서, 메모리 랭크 전력 관리자(126)는 개별 랭크를 유휴 상태(저전력 상태)에서 액티브 상태(최대 전력 상태)로 그리고 다시 그 반대로 되게 할 수 있다. 또한, 메모리 랭크 전력 관리자(126)는 개별 메모리 랭크들을 중간 메모리 준비 레벨들의 추가적인 전력 상태들이 되게 할 수도 있다. 메모리 랭크 전력 관리자(126)는 그 자신의 결정을 행하기 위한 로직을 구비하거나, 메모리 제어기(102), MRBS 엔진(100) 또는 시스템 내의 다른 곳으로부터 랭크 전력 관련 명령들을 수신할 수 있다. 도 1은 메모리 제어기(102) 내에 통합된 메모리 랭크 전력 관리자를 도시하지만, (도시되지 않은) 다른 실시예들에서 메모리 랭크 전력 관리자는 MRBS 엔진 내에, 메모리 모듈 상에 또는 시스템 내의 다른 곳의 다른 전력 관리 장치 내에 위치할 수 있다.
도 2는 메모리 요청들의 그들의 기점에서 목적지로의 예시적인 프로세스 흐름을 나타낸다. 프로세스는 하나 이상의 프로세서 및/또는 하나 이상의 I/O 장치가 서비스를 위해 하나 이상의 메모리 요청을 메모리 제어기로 전송함으로써 시작된다. 이러한 요청들은 메모리 제어기 내의 하나 이상의 입력 큐 내에 입력된다(단계 1). 이어서, 메모리 제어기는 각각의 메모리 요청 내의 타겟 어드레스를 번역하여, 요청이 어느 대응 랭크 큐로 전송될지를 결정한다(단계 2). 이어서, 스케줄러는 에이징 카운터, 뱅크 오버랩 비트 어레이, 및 최소 및 최대 버스트 수들과 같은 배열 기준들을 이용하여 메모리 요청들의 버스트들을 배열한다(단계 3). 마지막으로, 스케줄러는 메모리 요청이 전송될 준비가 된 경우에 메모리 사이클마다 워킹 랭크로부터 메모리로 다음 메모리 요청을 전송한다(단계 4).
도 3-8은 상이한 기준들에 기초하는 다양한 메모리 요청 버스트 배열 스킴들을 설명한다.
도 3은 2개의 메모리 랭크 상에서의 메모리 요청 버스트 배열 스킴의 제1 실시예를 설명한다. 이 도면은 하나 이상의 프로세서 및/또는 하나 이상의 I/O 장치로부터 메모리 제어기(MC)에 도달하는 다수의 메모리 요청(수직 화살표들)의 순서-즉 요청들의 "메모리 제어기 수신 순서"를 나타낸다. 이 도면은 또한 전술한 기준들 중 하나 이상을 적용하는 요청들의 "MRBS 스케줄링된 순서"를 나타낸다. 이 타이밍 도면은 좌에서 우로 시간 라인을 가로질러 가는 메모리 요청들의 제1 내지 최종 도착 순서를 나타낸다. 또한, 이 타이밍 도면은 여러 잠재적인 타이밍 문제들 가운데 요청들의 입력 큐들 내로의 수신, 어드레스 번역 시간, 메모리 액세스 레이턴시들 또는 메모리 랭크마다의 저전력/고전력 상태들로의 입장/퇴장과 관련된 추가적인 부담을 고려하지 않는다. 그러한 타이밍 문제들은 임의의 주어진 기능에 대해 통상적인 것으로 가정될 수 있으며, 이벤트들 사이의 절대 지연들을 얻기 위해 타이밍들에 추가될 수 있는 배경 상수들로서 타이밍 도면들에 삽입될 수 있다.
이제, 도 3을 참조하면, 버스트 스케줄링에 대해 여기에 도시된 주요 기준들은 2로 설정되는 최소 버스트 수이다. 랭크 A를 타겟으로 하는 메모리 요청(300)이 최초로 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(302)이 두 번째로 도달한다. 랭크 A를 타겟으로 하는 메모리 요청(304)이 세 번째로 도달하자마자, 스케줄러는 제1 버스트(306)를 스케줄링하는데, 이는 랭크 A 큐가 이제 생성될 버스트(길이 2의 버스트)에 대한 최소 버스트 수를 충족시키기 때문이다. 버스트(306)는 완성하는 데 시간 델타 1(△t1)이 걸린다. 따라서, △t1의 시작에서, 랭크 A는 메모리 요청들(300, 304)이 완료될 수 있도록 그의 유휴 상태로부터 벗어나야 하며, 이어서 랭크 A는 그의 유휴 상태로 복귀할 수 있다.
이어서, 랭크 B를 타겟으로 하는 메모리 요청(308)이 도달하며, 이는 랭크 B가 이제 최소 버스트 길이 기준들을 충족시키게 한다. 따라서, 버스트(310)가 △t2에 걸쳐 생성된다. 랭크 B는 메모리 요청들(302, 308)이 완료될 수 있도록 △t2의 시작에서 그의 유휴 상태로부터 벗어나야 한다. 이 시점에서, 랭크 B는 그의 유휴 상태로 복귀할 수 있다.
이어서, 랭크 B를 타겟으로 하는 메모리 요청(312)이 도달한다. 랭크 B는 아직 최소 버스트 수 기준들을 충족시키지 못하는데, 이는 버스트(310)가 생성된 후에 메모리 요청들(302, 308)이 랭크 B 큐 밖으로 방출되었기 때문이다. 따라서, 이 시점에서 메모리 요청(312)은 랭크 B 큐 내에 저장된 유일한 요청이다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(314)이 도달하며, 이는 랭크 B가 이제 최소 버스트 길이 기준들을 다시 충족시키게 한다. 따라서, 버스트(316)가 △t3에 걸쳐 생성된다. 랭크 B는 메모리 요청들(312, 314)이 완료될 수 있도록 △t3의 시작에서 그의 유휴 상태에서 벗어나야 한다. 이 시점에서, 랭크 B는 그의 유휴 상태로 복귀할 수 있다.
이어서, 랭크 A를 타겟으로 하는 메모리 요청(318)이 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(320)이 도달한다. 랭크 B를 타겟으로 하는 메모리 요청(322)이 도달하자마자, 스케줄러는 버스트(324)를 스케줄링하는데, 이는 랭크 B 큐가 다시 최소 버스트 수를 충족시키기 때문이다. 버스트(324)는 완성되는 데 △t4가 걸린다. 따라서, △t4의 시작에서, 랭크 B는 메모리 요청들(320, 322)이 완료될 수 있도록 그의 유휴 상태로부터 벗어나야 하며, 이어서 랭크 B는 그의 유휴 상태로 복귀할 수 있다.
마지막으로, 랭크 A를 타겟으로 하는 메모리 요청(326)이 도달하며, 이는 랭크 A가 이제 최소 버스트 길이 기준들을 충족시키게 한다. 따라서, 버스트(328)가 △t5에 걸쳐 생성된다. 랭크 A는 메모리 요청들(318, 326)이 완료될 수 있도록 △t5의 시작에서 그의 유휴 상태로부터 벗어나야 한다. 이 시점에서, 랭크 B는 그의 유휴 상태로 복귀할 수 있다.
도 4는 2개의 메모리 랭크 상에서의 메모리 요청 버스트 배열 스킴의 제2 실시예를 설명한다. 버스트 스케줄링에 대해 여기에 도시된 주요 기준들은 2로 설정되는 최소 버스트 수는 물론, 각각의 버스트 주위에 구현되는 추가적인 랭크 프리-액티브 시간 및 포스트-액티브 시간이다. 많은 실시예에서, 프리 액티브 및/또는 포스트 액티브 시간은 메모리 랭크의 전력 스킴에 대한 요구일 수 있다. 도 4에서 버스트 시간 자체에 대한 프리 및 포스트 액티브 시간들의 상대적 크기는 버스트 시간에 대한 프리 액티브 및 포스트 액티브 기간들의 진정한 비율을 스케일링하거나 지시하지 않을 수 있다.
이제, 도 4를 참조하면, 랭크 A를 랭크 A를 타겟으로 하는 메모리 요청(400)이 최초로 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(402)이 두 번째로 도달한다. 랭크 A를 타겟으로 하는 메모리 요청(404)이 세 번째로 도달하자마자, 스케줄러는 제1 버스트(406)를 스케줄링하는데, 이는 랭크 A 큐가 이제 생성될 버스트(길이 2의 버스트)에 대한 최소 버스트 수를 충족시키기 때문이다. 버스트(406)는 완성되는 데 △t1이 걸린다. 따라서, △t1의 시작에서, 랭크 A는 메모리 요청들(400, 404)이 완료될 수 있도록 그의 유휴 상태로부터 벗어나야 하며, 이어서 랭크 A는 △t1의 끝에 그의 유휴 상태로 복귀할 수 있다.
도 4의 실시예에서, 랭크는 랭크가 완전 액티브 상태로 전력 업되는 데 필요한 프리 액티브 시간을 갖는다. 이것은 적지만 유한 양의 시간이 걸릴 수 있다. 일부 실시예들에서, 이것은 액티브 상태로의 전력 업을 완료하기 위한 하나 이상의 메모리 사이클(즉, 프리 액티브 시간) 및 유휴 상태로의 전력 다운을 완료하기 위한 하나 이상의 메모리 사이클(즉, 포스트 액티브 시간)을 필요로 할 수 있다. 구체적으로, △t1의 프리 액티브 시간 부분은 △t1a이고, 실제 버스트 시간은 △t1b이며, 랭크 B를 유휴 상태로 복귀시키기 위한 포스트 액티브 시간은 △t1c이다. 따라서, 스케줄러가 버스트(406)를 스케줄링할 때와 버스트(406)가 실제로 생성될 때 사이에는 △t1a의 지연이 발생할 수 있는 것이 가능하다. 또한, 스케줄러가 버스트(406)를 완성할 때와 랭크 A가 실제로 유휴 상태로 복귀할 때 사이에는 △t1c의 지연이 발생할 수 있다. △t1a, △t1b 및 △t1c의 실제 절대 시간 길이는 메모리 구현에 의존한다.
일부 실시예들에서는, 메모리 제어기 내의 로직 및/또는 MRBS 내의 로직이 유휴 상태에서 액티브 상태로의 메모리 랭크에 대한 전력의 램프 업(ramp up)을 우선적으로 개시할 수 있는 경우에 프리 액티브 시간이 감소될 수 있다. 일부 실시예들에서, 요청들이 메모리 제어기에 도달할 때 요청들을 조사 또는 검사하거나, 요청들이 그들의 기점 장치들(예컨대, 프로세서들, I/O 장치들)로부터 떠날 때 요청들을 검사할 수 있는 우선적 로직(preemptive logic)은 메모리 요청들이 스케줄러에 실제로 도달하기 전에 랭크마다의 미래의 수신 메모리 요청들의 순서를 스케줄러에 통신할 수 있다.
이러한 우선적 로직(도 1에는 명시적으로 도시되지 않음)은 메모리 제어기 내에, 스케줄러 내에 또는 시스템 내의 다른 곳에 위치할 수 있다. 따라서, 우선적 로직으로부터 수신되는 미래의 메모리 요청 정보(예를 들어, 미래의 메모리 요청 도달 순서)를 이용하여, 메모리 랭크 전력 관리 로직(예컨대, 도 1의 메모리 랭크 전력 관리자(126))은 소정의 메모리 랭크 전력 상태가 요구되기 전에 메모리 랭크 전력 상태들을 조작하는 능력을 갖출 수 있다. 이것은 프리 액티브 시간이 감소될 수 있게 하는데, 그 이유는 스케줄러에 의해 메모리 요청 버스트 스케줄링 이벤트가 스케줄링되는 바로 그때에 랭크가 액티브 상태로 전력 업될 수 있기 때문이다.
이어서, 랭크 B를 타겟으로 하는 메모리 요청(408)이 도달하며, 이는 랭크 B가 이제 최소 버스트 길이 기준들을 충족시키게 한다. 따라서, 버스트(410)가 △t2에 걸쳐 생성된다. 랭크 B는 메모리 요청들(402, 408)이 완료될 수 있도록 △t2의 시작에서 그의 유휴 상태로부터 벗어나야 한다. 이 시점에서, 랭크 B는 그의 유휴 상태로 복귀할 수 있다. 메모리 랭크 B는 유휴 상태에서 액티브 상태로 전력 업되는 데 프리 액티브 시간 △t2a가 걸린다. 따라서, 스케줄러가 버스트(410)를 스케줄링하는 시점으로부터 △t2a의 지연이 발생하며, 이어서 실제 버스트가 △t2b에 걸쳐 생성되고, 마지막으로 메모리 랭크 B는 랭크 B를 유휴 상태로 복귀하는 데에 포스트 액티브 시간 △t2c가 걸린다.
이어서, 랭크 B를 타겟으로 하는 메모리 요청(412)이 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(414)이 도달하며, 이는 랭크 B가 이제 최소 버스트 길이 기준들을 다시 충족시키게 한다. 따라서, 버스트(416)가 △t3에 걸쳐 생성된다. (버스트 406 및 410에서와 같이) 구체적으로 도시되지 않았지만, △t3은 △t3a 프리 액티브 시간, △t3b 버스트 시간 및 △t3c 포스트 액티브 시간을 포함한다. 랭크 B는 메모리 요청들(412, 414)이 완료될 수 있도록 △t3의 시작에서 그의 유휴 상태로부터 벗어나야 하며, 이어서 랭크 B는 △t3의 끝에서 그의 유휴 상태로 복귀한다.
이어서, 랭크 A를 타겟으로 하는 메모리 요청(418)이 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(420)이 도달한다. 랭크 B를 타겟으로 하는 메모리 요청(422)이 도달하자마자, 스케줄러는 버스트(424)를 스케줄링하는데, 이는 랭크 B 큐가 다시 최소 버스트 수를 충족시키기 때문이다. 버스트(424)는 완성에 △t4(도시되지 않은 △t4a, △t4b, △t4c 포함)가 걸린다. 따라서, △t4의 시작에서, 랭크 B는 메모리 요청들(420, 422)이 완료될 수 있도록 그의 유휴 상태로부터 벗어나야 하며, 이어서 랭크 B는 그의 유휴 상태로 복귀한다.
도 4에 도시된 예에서, 랭크 A를 타겟으로 하는 제2 메모리 요청은 도시된 시간의 윈도 동안에 도달하지 않으며, 따라서 메모리 요청(418)은 윈도의 끝에 큐 내에 유지되어, 버스트 내에 포함될 다른 랭크 A 타겟 요청을 기다린다.
일부 실시예들에서는, 랭크들 사이에 오버랩핑되는 프리 및 포스트 액티브 시간들로 인해 둘 이상의 랭크 각각이 동시에 비 유휴 상태에 있을 수 있는 시점들이 존재한다.
도 5는 2개의 메모리 랭크 상에서의 메모리 요청 버스트 배열 스킴의 제3 실시예를 설명한다. 버스트 스케줄링에 대하여 여기에 도시된 주요 기준들은 4로 설정되는 최소 버스트 수이다. 이제, 도 5를 참조하면, 랭크 A를 타겟으로 하는 메모리 요청(500)이 최초로 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(502)이 두 번째로 도달한다. 랭크 A를 타겟으로 하는 메모리 요청(504)이 세 번째로 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(506)이 네 번째로 도달한다. 랭크 B를 타겟으로 하는 메모리 요청(508)이 다섯 번째로 도달한다.
이어서, 랭크 B를 타겟으로 하는 메모리 요청(510)이 도달하자마자, 스케줄러는 버스트 스케줄을 개시하기 위해 메모리 랭크 B 큐 내에 삽입되는 충분한 메모리 요청들을 갖는다(즉, 4개 요청의 최소 버스트 수가 이제 메모리 랭크 B 큐 내에 존재한다). 따라서, 스케줄러는 4개 요청(요청들 502, 506, 508, 510)의 버스트를 버스트(512) 내에서 메모리로 전송하는데, 이는 △t1이 걸린다.
이러한 버스트 전송 동안, 랭크 A를 타겟으로 하는 메모리 요청(514)이 도달한다. 이어서, 메모리 요청들(516, 518)이 순차적으로 도달하며, 이들 양자는 랭크 B를 타겟으로 한다. 이어서, 랭크 A를 타겟으로 하는 메모리 요청(520)이 도달한다. 이 시점에서, 스케줄러는 다시 버스트가 생성될 수 있는지를 검사한다. 스케줄러는 4개 요청(요청들 500, 504, 514, 520)의 버스트를 버스트(522) 내에서 메모리 전송하며, 이는 △t2가 걸린다.
이 시점에서, 메모리 랭크 B 큐 내에는 여전히 2개의 요청(요청들 516, 518)이 존재하며, 최소 버스트 수에 도달하지 않았다. 따라서, 메모리 요청들(516, 518)이 그들 각각의 에이징 임계치에 도달하지 않는 한, 이들은 랭크 B 큐 내에 유지될 것이다.
도 6은 2개의 메모리 랭크 상에서의 메모리 요청 버스트 배열 스킴의 제4 실시예를 설명한다. 버스트 스케줄링에 대해 여기에 도시된 주요 기준들은 4로 설정되는 최소 버스트 수, 8로 설정되는 최대 버스트 수, 및 구현되는 연장된 랭크 액티브 시간이다. 연장된 랭크 액티브 시간은, 임의의 메모리 랭크 큐 내의 어떠한 메모리 요청도 그의 에이징 임계치에 도달하지 않았고, 다른 어떠한 메모리 랭크 큐도 큐 내에 필요한 최소 버스트 수의 요청을 아직 갖지 못하며, 현재의 워킹 랭크 큐가 그의 최대 버스트 수에 도달하지 못한 경우에, 현재의 워킹 랭크 큐가 스케줄링된 버스트의 적어도 개시 후에 그의 버스트 윈도를 개방 상태로 유지할 수 있는 소정 실시예들에서 구현될 수 있는 추가된 가능한 버스트 스케줄링 특징이다. 이것은 워킹 랭크로부터의 후속 도달 요청들이 버스트가 종료되기 전에 버스트의 끝에 동적으로 추가되는 것을 가능하게 한다.
이제, 도 6을 참조하면, 랭크 A를 타겟으로 하는 메모리 요청(600)이 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(602)이 도달한다. 이어서, 랭크 A를 타겟으로 하는 메모리 요청(604)이 도달한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청들(606, 608)이 순차적으로 도달한다. 이어서, 메모리 요청(610)이 도달하자마자, 스케줄러는 버스트(612) 내에서 메모리로 전송될 4개 요청(요청들, 602, 606, 608, 610)의 버스트를 스케줄링한다. 오리지널 4 요청 버스트는 △t1a가 걸리지만, 연장된 랭크 액티브 시간이 구현되기 때문에, 스케줄러는 버스트에 하나 이상의 추가 메모리 요청을 동적으로 추가할 가능성을 열어 둔다. 일부 실시예들에서, 이러한 추가 시간 길이는 △t1b이며, 이러한 시간 델타는 오리지널 버스트가 △t1a에서 끝나자마자 시작된다.
다음에 도달하는 메모리 요청은 랭크 A를 타겟으로 하는 요청(614)이다. 이 시점에서, 랭크 A 큐는 여전히 버스트를 개시할 충분한 최소 버스트 수를 갖지 못한다. 이어서, 랭크 B를 타겟으로 하는 메모리 요청(616)이 도달한다. 스케줄러는 요청(616)이 △t1b 연장된 랭크 액티브 시간 윈도 동안에 도달하였고, 버스트(612)가 요청들의 최대 버스트 수에 이르지 않았음을 결정하며, 따라서 요청(616)이 현재의 버스트(612)에 즉시 추가되고, 요청(616)은 버스트의 일부로서 메모리로 즉시 전송된다. 오리지널 4 요청 버스트의 끝(△t1a의 끝) 시간과 요청(616)이 메모리로 전송되는 시간 사이에 갭이 존재하지만, 요청(616)은 현재의 버스트(612)의 일부로서 간주된다. 이 시점에서, 동일한 연장된 랭크 액티브 시간 윈도 길이가 다시 시작되며, △t1c의 끝까지 연장할 것이다.
이어서, 또한 랭크 B를 타겟으로 하는 메모리 요청(618)이 도달한다. 요청(618)도 동일 버스트(612) 내에 스케줄링되는데, 그 이유는 그 요청이 △t1c 연장된 랭크 액티브 시간 윈도 동안에 도달하였고, 버스트(612)가 여전히 최대 버스트 수의 요청들에 도달하지 않았기 때문이다. 연장된 랭크 액티브 시간 윈도가 다시 시작되며, △t1d의 끝까지 연장된다.
메모리 요청(620)이 도달하며, 이 시점에서 랭크 A 큐는 랭크 A 큐 버스트를 스케줄링하는 데 필요한 최소 버스트 수의 요청들을 갖는다. 따라서, 스케줄러는 워킹 랭크 큐를 랭크 A 큐로 스위칭하고, 요청들(600, 604, 614, 620)을 이용하여 4 요청 버스트(622)를 전송한다. 따라서, 이어서 메모리 요청(624)이 도달하고, 여전히 △t1d 연장된 랭크 액티브 시간 윈도 내에 있지만, 무효 인자(랭크 A 큐가 요청들의 최소 버스트 수에 도달하는 것)가 워킹 랭크들을 스위칭하도록 스케줄러에게 요구하였으므로, 그것은 문제가 되지 않는다. 따라서, 랭크 B 큐가 다시 최소 버스트 수에 도달하거나, 요청(624)이 그의 에이징 임계치에 도달할 때까지, 요청(624)은 랭크 B 큐 내에서 기다려야 한다.
다른 실시예들에서, 둘 이상의 랭크 큐가 스케줄링될 요청들의 최소 버스트 수를 충족시키고, 어떠한 랭크 큐도 자신의 에이징 임계치에 도달한 미해결 요청을 갖지 않는 경우, 버스트 요구들을 충족시키는 다수의 랭크 큐들을 스케줄링하는 순서는 다수의 구현 중 어느 하나에서 제공될 수 있다.
일부 실시예들에서, 메모리 랭크 큐들 사이의 라운드 로빈 스킴이 구현될 수 있다. 다른 실시예들에서, 메모리 랭크 큐들의 우선 순위는 요청들의 최소 버스트 수를 충족시키는 랭크 큐 각각 내의 가장 오래된 요청의 나이에 기초할 수 있다. 다른 실시예들에서는, 각각의 큐 내의 요청들의 수에 기초하는 순서로 랭크 큐 버스트들을 스케줄링하는 스킴이 제공된다(가장 많은 수의 요청을 갖는 큐가 최초로 스케줄링되며, 가장 적은 수의 요청을 갖는 큐가 마지막으로 스케줄링된다).
버스트가 여분의 요청들을 수신하지 못하는 시점은 상이한 실시예들에서 상이할 수 있다. 도 6에서 전술한 실시예들에 대한 대안 실시예들에서, 버스트는 버스트가 시작된 후에 추가 요청들이 버스트에 추가될 수 있도록 열려 있지 못할 수 있다. 일부 실시예들에서는, 버스트가 스케줄링된 시점에 버스트에 추가 요청들이 추가되는 것이 금지된다. 다른 실시예들에서는, 버스트가 스케줄링되기 이전 시점에 버스트에 추가 요청들이 추가되는 것이 금지된다. 예를 들어, 제1 랭크가 현재 워킹 랭크이고, 제2 랭크가 버스트를 허가하는 충분한 요청들을 취득하는 경우, 제2 랭크는 그가 워킹 랭크가 될 때까지 버스트를 스케줄링할 수 없지만, 버스트는 그 시점에서 닫힐 수 있다.
더구나, 일부 실시예들에서, 요청들의 최소 버스트 수는 요청들의 최대 버스트 수와 동일하다. 이러한 실시예들에서, 최소 버스트 수의 요청들은 항상 스케줄링된다. 따라서, 큐가 요청들의 최소 버스트 수보다 훨씬 더 많은 요청을 갖는 경우, 스케줄러는 제1 패스(pass)에서 메모리로 전송될 요청들의 최소 버스트 수를 스케줄링할 수 있고, 제2 패스에서 메모리로 전송될 동일 큐로부터의 요청들의 다른 최소 수를 스케줄링할 수 있으며, 기타 등등이다. 따라서, 동일 랭크 큐(즉, 워킹 랭크)는 최소 수의 요청들의 버스트들을 계속 전송할 수 있다. 이것은 다른 랭크가 워킹 랭크의 우선 순위를 능가할 때까지 계속될 수 있으며, 이어서 새로운 최고 우선 순위의 랭크 큐를 수용하기 위하여 다수의 패스 상의 다수의 버스트가 중지될 수 있다.
도 7은 2개의 메모리 랭크 상에서의 메모리 요청 버스트 배열 스킴의 제5 실시예를 설명한다. 버스트 스케줄링에 대해 여기에 도시된 주요 기준들은 2로 설정되는 최소 버스트 수 및 △t1로 설정되는 요청 노쇠를 결정하기 위한 에이징 임계치(아래에 더 상세히 설명됨)이다. 전술한 바와 같이, 에이징 임계치는 특정 수의 메모리 사이클이며, 주어진 메모리 요청이 특정 수보다 많은 사이클 동안 랭크 큐 내에 머무르는 경우에 요청은 노쇠한 것으로 결정되며, 요청은 그가 랭크 큐 내의 유일한 요청이고, 랭크 큐가 요청들의 최소 버스트 수의 요구를 충족시키지 못하는 경우에도 우선 순위를 취득한다.
이제, 도 7을 참조하면, 메모리 요청(700)이 도달하고, 이는 랭크 A를 타겟으로 한다. 이어서, 메모리 요청(702)이 도달하고, 이는 랭크 B를 타겟으로 한다. 랭크 A를 타겟으로 하는 메모리 요청(704)이 도달하면, 스케줄러는 2 요청 버스트(706)를 스케줄링하고, 버스트(706) 내의 2개의 요청(700, 704)을 메모리로 전송한다. 추가 입력 활동 없이 상당한 수의 사이클이 패스하며, 이어서 랭크 A를 타겟으로 하는 메모리 요청(710)이 도달한다. 더 많은 사이클이 패스하며, 랭크 B를 타겟으로 하는 추가적인 메모리 요청은 도달하지 않는다. 기간 (Δt1) 후에, 랭크 B에 대한 (그리고 구체적으로 메모리 요청(702)에 대한) 에이징 카운터가 그의 임계치에 도달한다. 이 시점에서, 스케줄러는 단일 요청 "버스트"(708)와 더불어 요청(702)을 메모리로 전송한다. 이것은 요청(702)이 랭크 B 큐 내에서 무기한 노화되지 않고 완료되게 한다. 따라서, 에이징 임계치가 충족된 후에 요청들이 메모리로 전송될 것을 요구하는 에이징 임계치 규칙이 최소 버스트 수 규칙을 대신한다.
랭크 A를 타겟으로 하는 메모리 요청(712)이 도달한다. 이 시점에서, 스케줄러는 다른 2 요청 버스트(714)를 스케줄링하고, 요청들(710, 712)을 메모리로 전송할 수 있다.
도 8은 2개의 메모리 랭크 상에서의 메모리 요청 버스트 배열 스킴의 제6 실시예를 설명한다. 버스트 스케줄링에 대해 여기에 도시된 주요 기준들은 2로 설정되는 최소 버스트 수 및 주어진 스케줄링된 버스트 내의 메모리 요청들 각각이 상이한 뱅크들로부터 개시되어야 한다는 요구이다. 따라서, 동일 랭크를 타겟으로 하는 2개의 요청이 도달하고, 이 요청들 양자가 동일 뱅크를 타겟으로 하고 있는 경우, 스케줄러는 이 두 요청을 버스트화하지 않는다. 오히려, 요청들 중 어느 하나에 대한 에이징 임계치가 히트되지 않은 한, 동일 랭크를 타겟으로 하지만 다른 뱅크로부터 개시되는 제3 요청이, 제1 및 제3 요청들이 버스트로 스케줄링되게 하기 위해, 도달해야 할 것이다.
이제, 도 8을 참조하면, 랭크 A, 뱅크 1을 타겟으로 하는 메모리 요청(800)이 도달한다. 이어서, 랭크 B, 뱅크 1을 타겟으로 하는 메모리 요청(802)이 도달한다. 이어서, 랭크 A, 뱅크 1을 타겟으로 하는 메모리 요청(804)이 도달한다. 스케줄러는 요청들(800, 804)이 동일 뱅크를 타겟으로 하므로 랭크 A 큐로부터 2 요청 버스트를 스케줄링하지 않는다.
이어서, 랭크 B, 뱅크 2를 타겟으로 하는 메모리 요청(806)이 도달하고, 스케줄러는 요청들(802, 806)을 사용하여 2 요청 버스트(808)를 메모리로 전송한다. 이어서, 랭크 B, 뱅크 3을 타겟으로 하는 메모리 요청(810)이 도달한다. 이어서, 랭크 B, 뱅크 4를 타겟으로 하는 요청(812)이 도달하고, 스케줄러는 요청들(810, 812)을 사용하여 2 요청 버스트를 메모리 전송한다. 이어서, 랭크 A, 뱅크 3을 타겟으로 하는 메모리 요청(816)이 도달한다. 이것은 스케줄러가 요청들(800, 816)을 사용하여 2 요청 버스트(818)를 메모리로 전송하게 한다. 요청(800)은 버스트(818)에서 사용되는데, 그 이유는 이 요청이 도달할 2개의 뱅크 1 요청들 중 첫 번째이며, 따라서 최초로 완료된다.
이어서, 랭크 B, 뱅크 5를 타겟으로 하는 메모리 요청(820)이 도달한다. 이어서, 랭크 B, 뱅크 6을 타겟으로 하는 메모리 요청(822)이 도달하고, 스케줄러는 요청들(820, 822)을 사용하여 다른 2 요청 버스트(824)를 메모리로 전송한다. 이어서, 랭크 A, 뱅크 4를 타겟으로 하는 메모리 요청(826)이 도달한다. 따라서, 스케줄러는 2개의 랭크 A, 뱅크 1 요청 중 두 번째 요청(804) 및 요청(826)을 사용하여 2 요청 버스트(828)를 메모리로 전송한다.
다른 실시예들에서, 동일 뱅크로부터의 둘 이상의 요청은 이러한 동일 뱅크로부터의 둘 이상의 요청 모두가 동일 메모리 페이지에 대한 페이지 히트들인 경우에 동일 랭크 버스트 내에 스케줄링될 수 있다(이것은 메모리 부담을 줄일 것이다).
랭크 버스트들에 대해 어떤 요청들을 그룹화할지를 결정하기 위해 다른 기준들이 이용될 수 있다. 예를 들어, 일부 실시예들에서는, 랭크당 2개의 큐, 즉 메모리 판독 요청들에 대한 하나의 큐 및 메모리 기입 요청들에 대한 하나의 큐가 존재한다. 이러한 분할된 큐는 랭크마다의 판독 큐 및 기입 큐가 (2개의 상이한 랭크에 대한 요청들과 유사한) 완전히 독립적인 큐들로서 간주되는 것처럼 구현될 수 있다. 큐 기준들의 다른 예는 (어떤 타입의 메모리 구현이 시스템에서 이용되는지에 의존하는) 메모리 타이밍 충돌을 갖는 큐 내의 임의의 요청이 버스트들로부터 배제될 수 있다는 것이다. 예컨대, 요청에 대한 메모리로부터의 응답을 크게 증가시킬 수 있는 메모리 행 사이클 시간(tRC) 충돌을 갖는 그러한 요청이 배제될 수 있다. 많은 다른 기준들도 포함될 수 있으며, 전술한 특정 기준들 모두는 단지 예로서 사용된다. 따라서, MRBS 엔진은 그러한 예시적인 기준들로 한정되지 않아야 한다.
많은 실시예들에서, 메모리 요청이 그의 에이징 임계치에 도달하는 경우와 같이, 메모리 요청을 즉시 스케줄링하기 위한 기준이 충족될 때에도, 메모리 요청이 즉시 스케줄링되지 못한다. 오히려, 스케줄러는 워킹 랭크 큐를, (스케줄링의 중간에 임의의 버스트가 존재하는 경우에) 현재의 스케줄링 버스트가 완료된 직후에 스케줄링될 메모리 요청을 포함하는 랭크 큐로 변경한다.
도 9는 랭크별로 메모리 요청들의 버스트들을 전송하기 위한 프로세스의 일 실시예의 흐름도이다. 이 프로세스는 소프트웨어, 하드웨어 또는 이들 양자의 조합을 포함할 수 있는 처리 로직에 의해 수행된다. 도 9를 참조하면, 프로세스는 처리 로직이 메모리 요청을 수신함으로써 시작된다(처리 블록 900). 이 요청은 상이한 실시예들에서 프로세서 또는 I/O 장치로부터 올 수 있다.
이어서, 처리 로직은 메모리 요청이 타겟으로 하는 어드레스를 번역하여, 어드레스가 어느 메모리 랭크 내에 존재하는지를 결정한다(처리 블록 902). 이어서, 처리 로직은 요청이 타겟으로 하는 랭크에 대응하는 메모리 랭크 큐 내에 요청을 삽입한다(처리 블록 904). 요청이 소정의 랭크 큐 내에 있는 경우, 처리 로직은 자신의 에이징 임계치를 넘은 임의의 요청이 임의의 랭크 큐 내에 존재하는지를 결정한다(처리 블록 906).
자신의 에이징 임계치를 넘은 요청이 존재하는 경우, 처리 로직은 그 요청을 메모리로 전송하고(처리 블록 908), 처리 로직은 블록 906으로 복귀하여, 다른 요청이 그의 에이징 임계치를 넘었는지를 결정한다.
그와 달리, 요청이 그의 에이징 임계치를 초과하지 않은 경우, 처리 로직은 블록 904에서 새로운 요청이 추가된 특정 랭크 큐를 검사하여, 랭크 큐가 그 랭크에서 메모리로의 버스트를 개시하기 위한 모든 기준을 충족시키는지를 결정한다(처리 블록 910). 이러한 기준들은 위에서 상세히 설명되었다(예컨대, 큐 내의 요청들의 최소 버스트 수).
기준이 버스트에 대해 충족되지 않은 경우, 처리 로직은 프로세스 흐름의 시작으로 복귀하여, 다음 메모리 요청을 수신한다(처리 블록 900). 그와 달리, 기준들 중 하나 이상이 충족된 경우, 처리 로직은 버스트를 구성하는 요청들의 세트를 결정한다(처리 블록 912). 일부 실시예들에서, 이 세트는 해당 랭크 큐 내의 요청들의 전체 수를 포함한다. 다른 실시예들에서는, 동일 뱅크 문제들, 최대 버스트 수의 초과, 다른 잠재적인 문제들로 인해, 이 세트는 랭크 큐 내의 요청들의 전체 수를 포함하지 않을 수 있다.
버스트가 결정되면, 처리 로직은 버스트를 메모리로 전송하고(처리 블록 914), 프로세스가 종료되며, 이것은 프로세스 흐름을 시작으로 되돌려, 처리 로직이 다음 메모리 요청을 수신하게 한다.
많은 실시예에서, 도 9의 처리 블록들의 다수는 처리 로직에 의해 병렬로 수행될 수 있다. 예를 들어, 처리 블록들(900, 902, 904)은 요청들이 계속 도달함에 따라 연속적으로 수행될 수 있다. 따라서, 이러한 블록들은 처리 로직이 다른 요청에 대해 결정 블록들(906 및/또는 910)을 통해 진행하고 있을 때 하나의 요청에 대해 동시에 처리될 수 있다.
따라서, 메모리 랭크 버스트 스킴을 이용하여 메모리 요청들을 스케줄링하기 위한 방법, 장치 및 시스템의 실시예들이 개시되었다. 이러한 실시예들은 특정 실시예들을 참조하여 설명되었다. 본 개시의 이익을 갖는 사람들에게는, 여기에 설명된 실시예들의 더 넓은 사상 및 범위로부터 벗어나지 않고 그러한 실시예들에 대한 다양한 변형 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면들은 한정적이 아니라 예시적인 것으로 간주되어야 한다.

Claims (25)

  1. 복수의 메모리 요청을 복수의 메모리 랭크 큐 내에 그룹화하는 단계 ― 각각의 랭크 큐는 메모리 내의 대응하는 메모리 랭크 내의 어드레스들을 타겟으로 하는 상기 복수의 메모리 요청 중의 메모리 요청들을 포함함 ―;
    메모리 요청들의 버스트 수가 상기 복수의 메모리 랭크 큐 중 하나에서 최소 버스트 수에 도달한 때, 상기 복수의 메모리 랭크 큐 중 하나 내의 적어도 최소 버스트 수의 메모리 요청들을 상기 메모리로 전송하도록 스케줄링하는 단계; 및
    적어도 하나의 메모리 요청을, 상기 적어도 하나의 메모리 요청이 에이징 임계치(aging threshold)를 초과할 때 상기 메모리로 전송하도록 스케줄링하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 복수의 메모리 랭크 큐 중 하나 내의 스케줄링되는 메모리 요청들 각각이 상이한 메모리 뱅크로부터의 것인 방법.
  3. 제2항에 있어서, 상기 에이징 임계치를 초과하는 적어도 하나의 메모리 요청은 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 임의의 메모리 랭크 큐보다도 스케줄링에서 우선 순위를 갖는 방법.
  4. 제3항에 있어서, 상기 복수의 메모리 랭크 큐 중 다른 하나 내의 메모리 요청들을 스케줄링하기 전에, 상기 복수의 메모리 랭크 큐 중 하나 내의 메모리 요청들을 메모리 요청들의 최대 버스트 수까지 스케줄링하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 복수의 메모리 요청 중 어느 것도 상기 에이징 임계치를 초과하지 않을 때 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 상기 복수의 메모리 랭크 큐 각각을 라운드 로빈 방식으로 스케줄링하는 단계를 더 포함하는 방법.
  6. 제4항에 있어서, 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 상기 복수의 메모리 랭크 큐 각각을 최대 수의 메모리 요청들을 갖는 메모리 랭크 큐로부터 시작하여 최소 수의 메모리 요청들을 갖는 메모리 랭크 큐에 이르는 순서로 스케줄링하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 복수의 메모리 랭크 큐 중 하나 내의 최소 버스트 수의 메모리 판독 요청들을 제1 스케줄링 패스(pass)에서 상기 메모리로 전송하도록 스케줄링하는 단계; 및
    상기 복수의 메모리 랭크 큐 중 하나 내의 최소 버스트 수의 메모리 기입 요청들을 제2 스케줄링 패스에서 상기 메모리로 전송하도록 스케줄링하는 단계
    를 더 포함하는 방법.
  8. 제2항에 있어서, 스케줄링될 상기 최소 버스트 수의 메모리 요청들로부터 메모리 타이밍 충돌을 갖는 임의의 메모리 요청을 배제하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서, 현재 스케줄링되고 있는 상기 복수의 메모리 랭크 중의 메모리 랭크를 액티브 전력 상태로 전력 업(power up)하고, 현재 스케줄링되고 있지 않은 상기 복수의 메모리 랭크 중의 각각의 메모리 랭크를 유휴 전력 상태로 전력 다운(power down)함으로써, 상기 메모리 내의 복수의 메모리 랭크에 대한 복수의 전력 상태를 관리하는 단계를 더 포함하는 방법.
  10. 복수의 메모리 랭크 큐 ― 상기 복수의 메모리 랭크 큐 각각은,
    메모리 내의 대응하는 메모리 랭크 내의 어드레스들을 타겟으로 하는 모든 미해결 메모리 요청들을 저장하고,
    상기 메모리 랭크 큐 내의 모든 저장된 메모리 요청들에 의해 타겟이 되고 있는 메모리 랭크의 뱅크들의 수를 추적하고,
    에이징 카운터를 이용하여 상기 메모리 랭크 큐 내의 각각의 저장된 메모리 요청의 나이를 추적하도록 동작할 수 있음 ―; 및
    메모리 요청들의 버스트 수가 상기 복수의 메모리 랭크 큐 중 하나에서 최소 버스트 수에 도달한 때, 상기 복수의 메모리 랭크 큐 중 하나 내의 적어도 최소 버스트 수의 메모리 요청들을 상기 메모리로 전송하도록 스케줄링하고, 적어도 하나의 메모리 요청을, 상기 적어도 하나의 메모리 요청의 나이가 에이징 임계치를 초과할 때 상기 메모리로 전송하도록 스케줄링하기 위한 메모리 요청 스케줄러
    를 포함하는 장치.
  11. 제10항에 있어서, 상기 복수의 메모리 랭크 큐 중 하나 내의 스케줄링되는 메모리 요청들 각각은 상이한 메모리 뱅크로부터의 것인 장치.
  12. 제11항에 있어서, 상기 메모리 요청 스케줄러는 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 임의의 메모리 랭크 큐를 스케줄링하기 전에 상기 에이징 임계치를 초과하는 적어도 하나의 메모리 요청을 우선 순위 방식으로 스케줄링하도록 더 동작 가능한 장치.
  13. 제12항에 있어서, 상기 메모리 요청 스케줄러는 상기 복수의 메모리 랭크 큐 중 다른 하나 내의 메모리 요청들을 스케줄링하기 전에 상기 복수의 메모리 랭크 큐 중 하나 내의 메모리 요청들을 메모리 요청들의 최대 버스트 수까지 스케줄링하도록 더 동작 가능한 장치.
  14. 제13항에 있어서, 상기 메모리 요청 스케줄러는 상기 복수의 메모리 요청 중 어느 것도 상기 에이징 임계치를 초과하지 않을 때, 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 상기 복수의 메모리 랭크 큐 각각을 최고 나이 요청 우선 순위 방식으로 스케줄링하도록 더 동작 가능한 장치.
  15. 제13항에 있어서, 상기 메모리 요청 스케줄러는 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 상기 복수의 메모리 랭크 큐 각각을 최대 수의 메모리 요청들을 갖는 메모리 랭크 큐로부터 시작하여 최소 수의 메모리 요청들을 갖는 메모리 랭크 큐에 이르는 순서로 스케줄링하도록 더 동작 가능한 장치.
  16. 제10항에 있어서,
    상기 메모리 요청 스케줄러는,
    상기 복수의 메모리 랭크 큐 중 하나 내의 최소 버스트 수의 메모리 판독 요청들을 제1 스케줄링 패스에서 상기 메모리로 전송하도록 스케줄링하고,
    상기 복수의 메모리 랭크 큐 중 하나 내의 최소 버스트 수의 메모리 기입 요청들을 제2 스케줄링 패스에서 상기 메모리로 전송하도록 스케줄링하도록
    더 동작 가능한 장치.
  17. 제11항에 있어서, 상기 메모리 요청 스케줄러는 스케줄링될 상기 최소 버스트 수의 메모리 요청들로부터 메모리 타이밍 충돌을 갖는 임의의 메모리 요청을 배제하도록 더 동작 가능한 장치.
  18. 다중 랭크, 다중 뱅크 메모리; 및
    상기 메모리에 통신 결합되는 메모리 제어기
    를 포함하고,
    상기 메모리 제어기는 메모리 랭크 버스트 스케줄링 엔진을 포함하고,
    상기 메모리 랭크 버스트 스케줄링 엔진은,
    복수의 메모리 랭크 큐 ― 상기 복수의 메모리 랭크 큐 각각은 대응하는 메모리 랭크 내의 어드레스들을 타겟으로 하는 모든 미해결 메모리 요청들을 저장하고, 상기 메모리 랭크 큐 내의 모든 저장된 메모리 요청들에 의해 타겟이 되고 있는 메모리 랭크의 뱅크들의 수를 추적하고, 에이징 카운터를 이용하여 상기 메모리 랭크 큐 내의 각각의 저장된 메모리 요청의 나이를 추적하도록 동작할 수 있음 ―; 및
    메모리 요청들의 버스트 수가 상기 복수의 메모리 랭크 큐 중 하나에서 최소 버스트 수에 도달한 때, 상기 복수의 메모리 랭크 큐 중 하나 내의 적어도 최소 버스트 수의 메모리 요청들을 상기 메모리로 전송하도록 스케줄링하고, 적어도 하나의 메모리 요청을, 상기 적어도 하나의 메모리 요청의 나이가 에이징 임계치를 초과할 때 상기 메모리로 전송하도록 스케줄링하기 위한 메모리 요청 스케줄러
    를 포함하는 시스템.
  19. 제18항에 있어서, 상기 복수의 메모리 랭크 큐 중 하나 내의 스케줄링되는 메모리 요청들 각각은 상이한 메모리 뱅크로부터의 것인 시스템.
  20. 제19항에 있어서, 상기 메모리 요청 스케줄러는 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 임의의 메모리 랭크 큐를 스케줄링하기 전에 상기 에이징 임계치를 초과하는 적어도 하나의 메모리 요청을 우선 순위 방식으로 스케줄링하도록 더 동작 가능한 시스템.
  21. 제20항에 있어서, 상기 메모리 요청 스케줄러는 상기 복수의 메모리 랭크 큐 중 다른 하나 내의 메모리 요청들을 스케줄링하기 전에 상기 복수의 메모리 랭크 큐 중 하나 내의 메모리 요청들을 메모리 요청들의 최대 버스트 수까지 스케줄링하도록 더 동작 가능한 시스템.
  22. 제20항에 있어서, 상기 메모리 요청 스케줄러는 상기 적어도 최소 버스트 수의 메모리 요청들을 갖는 상기 복수의 메모리 랭크 큐 각각을 최대 수의 메모리 요청들을 갖는 메모리 랭크 큐로부터 시작하여 최소 수의 메모리 요청들을 갖는 메모리 랭크 큐에 이르는 순서로 스케줄링하도록 더 동작 가능한 시스템.
  23. 제18항에 있어서,
    상기 메모리 요청 스케줄러는,
    상기 복수의 메모리 랭크 큐 중 하나 내의 최소 버스트 수의 메모리 판독 요청들을 제1 스케줄링 패스에서 상기 메모리로 전송하도록 스케줄링하고,
    상기 복수의 메모리 랭크 큐 중 하나 내의 최소 버스트 수의 메모리 기입 요청들을 제2 스케줄링 패스에서 상기 메모리로 전송하도록 스케줄링하도록
    더 동작 가능한 시스템.
  24. 제18항에 있어서, 상기 메모리 요청 스케줄러는 스케줄링될 상기 최소 버스트 수의 메모리 요청들로부터 행 사이클 시간(tRC) 충돌을 갖는 임의의 메모리 요청을 배제하도록 더 동작 가능한 시스템.
  25. 제18항에 있어서, 현재 스케줄링되고 있는 상기 복수의 메모리 랭크 중의 메모리 랭크를 액티브 전력 상태로 전력 업하고, 현재 스케줄링되고 있지 않은 상기 복수의 메모리 랭크 중의 각각의 메모리 랭크를 유휴 전력 상태로 전력 다운하기 위한 메모리 랭크 전력 관리자를 더 포함하는 시스템.
KR1020107021358A 2008-03-27 2009-03-27 메모리 랭크 버스트 스케줄링 KR101182018B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/057,132 US8046559B2 (en) 2008-03-27 2008-03-27 Memory rank burst scheduling
US12/057,132 2008-03-27
PCT/US2009/038522 WO2009120937A2 (en) 2008-03-27 2009-03-27 Memory rank burst scheduling

Publications (2)

Publication Number Publication Date
KR20100117135A KR20100117135A (ko) 2010-11-02
KR101182018B1 true KR101182018B1 (ko) 2012-09-11

Family

ID=41114747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107021358A KR101182018B1 (ko) 2008-03-27 2009-03-27 메모리 랭크 버스트 스케줄링

Country Status (4)

Country Link
US (1) US8046559B2 (ko)
KR (1) KR101182018B1 (ko)
CN (1) CN101960431B (ko)
WO (1) WO2009120937A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170136383A (ko) * 2016-06-01 2017-12-11 주식회사 맴레이 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서
US11449449B2 (en) 2020-02-14 2022-09-20 SK Hynix Inc. Data processing apparatus and operating method thereof
WO2024026502A1 (en) * 2022-07-29 2024-02-01 Texas Instruments Incorporated Memory controller with command reordering

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101053537B1 (ko) * 2009-10-30 2011-08-03 주식회사 하이닉스반도체 데이터 입출력 회로 및 이를 포함하는 반도체 메모리 장치
KR20110052133A (ko) * 2009-11-12 2011-05-18 주식회사 하이닉스반도체 반도체 장치
KR101053540B1 (ko) * 2010-02-26 2011-08-03 주식회사 하이닉스반도체 반도체 메모리의 외부 신호 입력 회로
KR101136984B1 (ko) * 2010-03-29 2012-04-19 에스케이하이닉스 주식회사 전압 공급 제어회로 및 이를 이용한 반도체 장치
US8688880B2 (en) * 2010-06-23 2014-04-01 International Business Machines Corporation Centralized serialization of requests in a multiprocessor system
US8838935B2 (en) * 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8775754B2 (en) * 2011-06-24 2014-07-08 Arm Limited Memory controller and method of selecting a transaction using a plurality of ordered lists
US8738875B2 (en) 2011-11-14 2014-05-27 International Business Machines Corporation Increasing memory capacity in power-constrained systems
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
US8775762B2 (en) * 2012-05-07 2014-07-08 Advanced Micro Devices, Inc. Method and apparatus for batching memory requests
US9569393B2 (en) * 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
US9098389B2 (en) * 2012-11-19 2015-08-04 SK Hynix Inc. Memory system and operating method thereof
US9489321B2 (en) * 2013-06-13 2016-11-08 Advanced Micro Devices, Inc. Scheduling memory accesses using an efficient row burst value
US20150089961A1 (en) * 2013-09-30 2015-04-02 Yacov Duzly Temperature-Controlled Storage Module
US20150094875A1 (en) * 2013-09-30 2015-04-02 Yacov Duzly Temperature-Controlled Storage Module that Cools Memory Prior to a Data Burst
US9281046B2 (en) * 2013-10-08 2016-03-08 Advanced Micro Devices, Inc. Data processor with memory controller for high reliability operation and method
WO2015067295A1 (en) 2013-11-05 2015-05-14 Huawei Technologies Co., Ltd. Method and arrangement for controlling requests to a shared electronic resource
US9208843B2 (en) 2014-02-07 2015-12-08 SK Hynix Inc. Internal address generation circuits
US10635316B2 (en) 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US11921658B2 (en) 2014-03-08 2024-03-05 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
WO2016196766A2 (en) * 2015-06-03 2016-12-08 Diamanti, Inc. Enabling use of non-volatile media - express (nvme) over a network
US10628353B2 (en) * 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
KR20160138448A (ko) 2014-03-08 2016-12-05 다이아만티 인코포레이티드 통합 네트워크 및 스토리지를 위한 방법 및 시스템
US10235203B1 (en) * 2014-03-31 2019-03-19 EMC IP Holding Company LLC Techniques for increasing storage system performance in processor-bound workloads with large working sets and poor spatial locality
CN105335296B (zh) * 2014-07-30 2018-08-14 华为技术有限公司 一种数据处理方法、装置及系统
CN104866238B (zh) * 2015-05-25 2018-12-14 华为技术有限公司 访问请求调度方法及装置
US10521368B2 (en) * 2015-12-24 2019-12-31 Arm Limited Arbitration of requests requiring a variable number of resources
CN108632162B (zh) * 2017-03-22 2021-03-23 华为技术有限公司 一种队列调度方法及转发设备
US10733137B2 (en) * 2017-04-25 2020-08-04 Samsung Electronics Co., Ltd. Low latency direct access block storage in NVME-of ethernet SSD
KR102417692B1 (ko) 2017-11-29 2022-07-07 에스케이하이닉스 주식회사 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법
KR102394727B1 (ko) * 2017-12-12 2022-05-09 에스케이하이닉스 주식회사 반도체시스템
US10846253B2 (en) * 2017-12-21 2020-11-24 Advanced Micro Devices, Inc. Dynamic page state aware scheduling of read/write burst transactions
CN108829348B (zh) * 2018-05-29 2022-03-04 上海兆芯集成电路有限公司 存储器装置及命令重排序方法
CN108922278B (zh) * 2018-08-20 2021-07-23 广东小天才科技有限公司 一种人机交互方法及学习设备
US11360544B2 (en) * 2018-10-03 2022-06-14 Google Llc Power management systems and methods for a wearable computing device
US11321250B2 (en) * 2020-07-28 2022-05-03 Dell Products L.P. Input/output device selection system
US11687281B2 (en) * 2021-03-31 2023-06-27 Advanced Micro Devices, Inc. DRAM command streak efficiency management

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112265A (en) 1997-04-07 2000-08-29 Intel Corportion System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command
US6564304B1 (en) 2000-09-01 2003-05-13 Ati Technologies Inc. Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching
US20030177296A1 (en) 2002-03-18 2003-09-18 Hugh Kurth Dynamic request priority arbitration
US7299324B2 (en) 2003-11-05 2007-11-20 Denali Software, Inc. Reactive placement controller for interfacing with banked memory storage

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5999289U (ja) 1982-12-23 1984-07-05 アルプス電気株式会社 記録再生装置
US7324541B2 (en) * 2003-12-22 2008-01-29 Intel Corporation Switching device utilizing internal priority assignments
CN1965548B (zh) * 2004-04-12 2012-08-22 联合设备技术公司 转送突发数据的方法和装置
JP4470183B2 (ja) * 2006-08-28 2010-06-02 エルピーダメモリ株式会社 半導体記憶装置
US7669044B2 (en) * 2006-09-29 2010-02-23 Microsoft Corporation Accelerated system boot
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112265A (en) 1997-04-07 2000-08-29 Intel Corportion System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command
US6564304B1 (en) 2000-09-01 2003-05-13 Ati Technologies Inc. Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching
US20030177296A1 (en) 2002-03-18 2003-09-18 Hugh Kurth Dynamic request priority arbitration
US7299324B2 (en) 2003-11-05 2007-11-20 Denali Software, Inc. Reactive placement controller for interfacing with banked memory storage

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170136383A (ko) * 2016-06-01 2017-12-11 주식회사 맴레이 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서
US10031676B2 (en) 2016-06-01 2018-07-24 MemRay Corporation Memory controller, and memory module and processor including the same
KR101888405B1 (ko) * 2016-06-01 2018-08-14 주식회사 맴레이 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서
US11449449B2 (en) 2020-02-14 2022-09-20 SK Hynix Inc. Data processing apparatus and operating method thereof
WO2024026502A1 (en) * 2022-07-29 2024-02-01 Texas Instruments Incorporated Memory controller with command reordering

Also Published As

Publication number Publication date
US8046559B2 (en) 2011-10-25
KR20100117135A (ko) 2010-11-02
WO2009120937A3 (en) 2009-12-23
US20090248994A1 (en) 2009-10-01
CN101960431A (zh) 2011-01-26
CN101960431B (zh) 2013-04-24
WO2009120937A2 (en) 2009-10-01

Similar Documents

Publication Publication Date Title
KR101182018B1 (ko) 메모리 랭크 버스트 스케줄링
KR100898710B1 (ko) Dram 기반의 랜덤 액세스 메모리 서브시스템에서 트리메모리 액세스에 대한 퍼포먼스를 향상시키기 위한다중-뱅크 스케쥴링
JP4723260B2 (ja) ソースデバイスに対するリクエストをスケジューリングする装置及び方法
JP4024875B2 (ja) 異なるデータ・レートで動作するネットワーク・ポートに関して、共用メモリへのアクセスを調停する方法および装置
US5581734A (en) Multiprocessor system with shared cache and data input/output circuitry for transferring data amount greater than system bus capacity
TWI498918B (zh) 存取緩衝器
JP4861339B2 (ja) スイッチマトリックス経由のデータ転送を改善するフロー制御方法
US20140181555A1 (en) Managing a power state of a processor
US20050172091A1 (en) Method and an apparatus for interleaving read data return in a packetized interconnect to memory
US10158712B2 (en) Source-side resource request network admission control
US20130124805A1 (en) Apparatus and method for servicing latency-sensitive memory requests
US20140052936A1 (en) Memory queue handling techniques for reducing impact of high-latency memory operations
US9135195B2 (en) Prediction of electronic component behavior in bus-based systems
US10175893B2 (en) Predictive scheduler for memory rank switching
US7346722B2 (en) Apparatus for use in a computer systems
US7669028B2 (en) Optimizing data bandwidth across a variable asynchronous clock domain
US9620215B2 (en) Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode
US9720826B1 (en) Systems and methods to distributively process a plurality of data sets stored on a plurality of memory modules
CN109491785B (zh) 内存访问调度方法、装置及设备
US8935489B2 (en) Adaptively time-multiplexing memory references from multiple processor cores
EP1704487B1 (en) Dmac issue mechanism via streaming id method
GB2341771A (en) Address decoding
GB2341772A (en) Primary and secondary bus architecture
GB2341765A (en) Bus idle usage
GB2341699A (en) Inter-module data transfer

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: 20150827

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160830

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 8