KR102519019B1 - 액세스 효율에 기초한 메모리 요청의 순서화 - Google Patents

액세스 효율에 기초한 메모리 요청의 순서화 Download PDF

Info

Publication number
KR102519019B1
KR102519019B1 KR1020217005114A KR20217005114A KR102519019B1 KR 102519019 B1 KR102519019 B1 KR 102519019B1 KR 1020217005114 A KR1020217005114 A KR 1020217005114A KR 20217005114 A KR20217005114 A KR 20217005114A KR 102519019 B1 KR102519019 B1 KR 102519019B1
Authority
KR
South Korea
Prior art keywords
memory
write
requests
request
read
Prior art date
Application number
KR1020217005114A
Other languages
English (en)
Other versions
KR20210032504A (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 KR20210032504A publication Critical patent/KR20210032504A/ko
Application granted granted Critical
Publication of KR102519019B1 publication Critical patent/KR102519019B1/ko

Links

Images

Classifications

    • 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
    • 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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

장치의 일 실시예는 메모리 회로 및 메모리 제어기 회로를 포함한다. 메모리 제어기 회로는 기록 요청 큐를 포함할 수 있다. 메모리 제어기 회로는 메모리 회로에 액세스하기 위한 메모리 요청을 수신하고 메모리 요청이 판독 요청 또는 기록 요청을 포함하는지 여부를 결정하도록 구성될 수 있다. 수신된 판독 요청은 실행을 위해 스케줄링될 수 있는 반면, 수신된 기록 요청은 기록 요청 큐에 저장될 수 있다. 메모리 제어기 회로는 특정된 메모리 액세스 효율을 달성하는 것에 기초하여 그리고 기록 요청 큐에 저장된 기록 요청들의 수에 기초하여 스케줄링된 메모리 요청들을 재순서화할 수 있다.

Description

액세스 효율에 기초한 메모리 요청의 순서화
본 명세서에 기술된 실시예들은 컴퓨팅 시스템들의 분야에 관한 것으로, 보다 상세하게는 컴퓨팅 시스템 내의 메모리 제어기에 의한 메모리 요청들의 관리에 관한 것이다.
시스템-온-칩(system-on-a-chip, SoC)들을 포함하는 컴퓨터 시스템들은 프로세서들, 및 소프트웨어 프로그램들 또는 애플리케이션들뿐만 아니라 프로세서들에 의해 동작되고 있는 데이터를 저장하는 다수의 메모리 회로들을 포함한다. 그러한 메모리들은 저장 용량뿐만 아니라 액세스 시간도 변할 수 있다. 일부 컴퓨팅 시스템들에서, 일부 메모리 회로들은 통신 링크 또는 다른 통신 네트워크를 통해 프로세서들과 통신하는 메모리 제어기 회로를 통해 프로세서들에 결합된다.
동작 동안, 프로세서 코어들, 그래픽 프로세서들 등을 포함할 수 있는 프로세서들은 통신 링크를 통해 메모리 제어기로 액세스를 위한 요청들을 송신한다. 메모리 제어기는 요청들을 수신하고, 요청들을 위한 메모리 회로들에의 액세스를 중재한다. 프로세서로부터 메모리 회로들로 특정 요청을 중계할 시, 메모리 제어기 회로는 메모리 회로가 특정 요청을 이행할 때까지 기다린다. 특정 요청을 이행하기 위해, 메모리 회로는 요청된 데이터 또는 확인 신호를 메모리 제어기 회로에 전송할 수 있으며, 메모리 제어기 회로는 이어서 요청 프로세서 상으로 데이터 또는 신호를 중계한다.
대체로, 장치가 메모리 회로 및 메모리 제어기 회로를 포함하는, 시스템, 장치, 및 방법이 고려된다. 메모리 제어기 회로는 기록 요청 큐(write request queue)를 포함할 수 있다. 메모리 제어기 회로는 메모리 회로에 액세스하기 위한 메모리 요청을 수신하고 메모리 요청이 판독 요청 또는 기록 요청을 포함하는지 여부를 결정하도록 구성될 수 있다. 수신된 판독 요청은 실행을 위해 스케줄링될 수 있는 반면, 수신된 기록 요청은 기록 요청 큐에 저장될 수 있다. 메모리 제어기 회로는 특정된 메모리 액세스 효율을 달성하는 것에 기초하여 그리고 기록 요청 큐에 저장된 기록 요청들의 수에 기초하여 스케줄링된 메모리 요청들을 재순서화할(reorder) 수 있다.
일부 구현예들에서, 메모리 제어기 회로는 판독 턴(read turn) 및 기록 턴(write turn)의 완료에 응답하여 현재 메모리 액세스 효율을 결정하도록 구성될 수 있다. 판독 턴은 다수의 판독 요청들의 실행에 대응할 수 있는 반면, 기록 턴은 다수의 기록 요청들의 실행에 대응할 수 있다. 현재 메모리 액세스 효율은 완료된 판독 및 기록 턴들 동안 발생한 총 클록 사이클들에 대한, 메모리 요청들을 처리하는 데 사용된 클록 사이클들의 비에 기초하여 결정될 수 있다.
특정 구현예들에서, 메모리 제어기 회로는 특정된 메모리 액세스 효율에 대한 현재 메모리 액세스 효율의 비교에 기초하여 후속 판독 및 기록 턴들에서 실행될 메모리 요청들의 수를 수정하도록 구성될 수 있다. 다양한 실시예들에서, 메모리 제어기 회로는 적어도 하나의 부분 기록 메모리 요청을 판독 턴과 기록 턴 사이에서 실행되게 스케줄링하도록 구성될 수 있다.
일부 실시예들에서, 메모리 제어기 회로는 기록 요청 큐 내의 기록 요청들의 수가 요청들의 임계 수를 충족한다는 결정에 응답하여 기록 요청 큐에 포함된 기록 요청들의 서브세트를 스케줄링하도록 구성될 수 있다. 특정 구현예들에서, 메모리 제어기 회로는 복수의 기록 요청들을 다수의 판독 요청들의 실행에 후속하여 실행되도록 스케줄링함으로써 기록 요청들보다 판독 요청들을 우선순위화하도록 구성될 수 있다. 다양한 실시예들에서, 메모리 제어기 회로는 특정 기록 요청에 의해 저장될 데이터의 양이 상이한 기록 요청에 의해 저장될 데이터의 양보다 크다는 결정에 응답하여 상이한 기록 요청보다 특정 기록 요청을 우선순위화하도록 구성될 수 있다.
다음의 상세한 설명은 첨부 도면들을 참조하며, 이제 도면들이 간단히 설명된다.
도 1은 메모리 제어기 회로 및 메모리 회로를 포함하는 메모리 시스템의 일 실시예의 블록도를 예시한다.
도 2는 메모리 제어기 회로 및 메모리 회로의 일 실시예의 블록도를 도시하며, 여기서 메모리 회로는 다수의 메모리 디바이스들을 포함한다.
도 3은 스케줄링된 요청 버퍼, 및 버퍼링된 메모리 요청들의 실행을 위한 타임라인을 표현하는 차트의 일 실시예를 도시한다.
도 4는 스케줄링된 요청 버퍼의 상이한 상태들을 표현하는 3개의 테이블들을 나타낸다.
도 5는 스케줄링된 요청 버퍼, 및 버퍼링된 메모리 요청들의 실행을 위한 타임라인을 도시하는 대응하는 차트의 다른 실시예를 예시한다.
도 6은 메모리 제어기 회로에 의해 메모리 요청들을 스케줄링하기 위한 방법의 일 실시예의 흐름도를 도시한다.
도 7은 메모리 요청들의 실행에 대응하는 효율 값을 결정하기 위한 방법의 일 실시예의 흐름도를 나타낸다.
도 8은 컴퓨터 시스템의 일 실시예의 블록도를 도시한다.
도 9는 일부 실시예들에 따른 예시적인 컴퓨터 판독가능 매체를 도시하는 블록도를 예시한다.
본 개시내용은 다양한 수정들 및 대안적인 형태들을 허용하지만, 그의 특정 실시예들은 도면들에서 예시로 도시되고, 본 명세서에서 상세하게 설명될 것이다. 그러나, 도면들 및 이에 대한 상세한 설명은 본 개시내용을 예시된 특정 형태로 제한하도록 의도되는 것이 아니며, 반대로, 첨부된 청구범위에 의해 한정되는 바와 같은 본 개시내용의 사상 및 범주 내에 속하는 모든 수정들, 등가물들 및 대안들을 포괄하려는 의도로 이해하여야 한다. 본 출원 전반에 걸쳐 사용되는 바와 같이, "~일 수 있다(may)"라는 단어는 의무적인 의미(즉, "~이어야만 한다(must)"는 의미)라기보다 오히려 허용의 의미(즉, "~에 대해 가능성을 갖는다"는 의미)로 사용된다. 유사하게, "포함하다(include, includes)" 및 "포함하는(including)"이라는 단어들은, 포함하지만 그로 제한되지 않음을 의미한다.
다양한 유닛들, 회로들 또는 다른 컴포넌트들이 태스크 또는 태스크들을 수행하도록 "구성되는 것"으로 설명될 수 있다. 그러한 맥락들에서, "~하도록 구성된"은 동작 동안에 태스크 또는 태스크들을 수행하는 "회로부를 갖는"을 일반적으로 의미하는 구조의 광의의 설명이다. 그와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on) 상태가 아닐 시에도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "~하도록 구성된"에 대응하는 구조를 형성하는 회로부는 하드웨어 회로들을 포함할 수 있다. 유사하게, 다양한 유닛들/회로들/컴포넌트들은 설명의 편의상 태스크 또는 태스크들을 수행하는 것으로 설명될 수 있다. 그러한 설명은 "~하도록 구성된"이라는 문구를 포함하는 것으로 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성된 유닛/회로/컴포넌트를 언급하는 것은 그 유닛/회로/컴포넌트에 대해 35 U.S.C. § 112, (f) 문단의 해석을 적용하지 않고자 명확히 의도된다. 더 일반적으로, 임의의 요소의 언급은, 용어 "~하기 위한 수단" 또는 "~하는 단계"가 구체적으로 언급되지 않는 한, 그 요소에 대해 35 U.S.C. §112, (f) 문단의 해석을 적용하지 않고자 명확히 의도된다.
본 명세서에서 사용되는 바와 같이, 용어 "기초하여"는 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이러한 용어는 부가적인 인자들이 결정에 영향을 줄 수 있는 가능성을 배제하지 않는다. 즉, 결정은 단지 특정된 인자들에 기초하거나 또는 그 특정된 인자들뿐만 아니라 다른, 불특정된 인자들에 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이러한 문구는 B가 A를 결정하는 데 사용되거나 A의 결정에 영향을 주는 인자라는 것을 명시한다. 이러한 문구는 A의 결정이 C와 같은 일부 다른 인자에 또한 기초할 수 있음을 배제하지 않는다. 또한, 이러한 문구는 A가 B만에 기초하여 결정되는 실시예를 커버하도록 의도된다. 따라서, "에 기초하여"라는 문구는 "에 적어도 부분적으로 기초하여"라는 문구와 동의어이다.
컴퓨터 시스템에서, 메모리 회로들의 계층구조는 컴퓨터 시스템 내의 기능성 회로 블록들에 의한 사용을 위한 프로그램 명령어들 및 데이터를 저장하는 데 사용된다. 그러한 기능성 회로 블록들은 프로세서, 프로세서 코어, 그래픽 코어, 오디오 처리 회로, 네트워크 처리 회로 등을 포함할 수 있다. 캐시 메모리 회로들과 같은 메모리 회로들 중 일부는 기능성 블록들에 대한 저밀도 고속-액세스 전용 저장소를 제공하기 위해 기능성 회로 블록들에 직접 결합될 수 있다. 다른 메모리 회로들이 다수의 기능성 회로 블록들 사이에서 공유되어, 기능성 회로가 더 많은 양의 저장 공간에 액세스할 수 있게 한다. 메모리 회로들의 그러한 공유를 용이하게 하기 위해, 메모리 제어기 회로는 메모리 회로들에 대한 액세스를 관리하기 위해 채용될 수 있다.
메모리 제어기 회로는 기능성 회로 블록들로부터 메모리 회로들에 액세스하기 위한 요청들을 수신한다. 그러한 요청들은 메모리 회로들로부터 이전에 저장된 데이터를 검색하기 위한 요청들(통상적으로 "판독 요청들"로 지칭됨), 및 메모리 회로들에 데이터를 저장하기 위한 요청들(통상적으로 "기록 요청들"로 지칭됨)을 포함할 수 있다. 일부 경우들에서, 판독 요청 및 기록 요청은 "판독-수정-기록" 요청을 형성하도록 조합될 수 있다.
메모리 제어기 회로가 메모리 회로에 액세스하기 위한 요청들을 수신함에 따라, 각각의 요청은 스케줄링으로 지칭되는 프로세스에서 다른 수신된 요청들에 관련하여 실행 순서에 배치된다. 메모리 제어기 회로는 다양한 기준들에 따라 실행 순서를 결정할 수 있다. 예를 들어, 메모리에 액세스하기 위한 소정 유형들의 요청들은 더 높은 우선순위를 가질 수 있고, 따라서 실행 순서에서, 더 낮은 우선순위를 갖는 요청들보다 전에 배치된다. 일부 경우들에서, 다양한 기준들에 따른 스케줄링은 메모리 회로들이 완전히 이용되지 않는 기간들을 생성하여, 메모리 서브시스템의 효율을 감소시킬 수 있다. 본 명세서에 사용되는 바와 같이, 메모리 서브시스템 "효율"은 메모리 서브시스템의 이용(utilization)의 임의의 척도를 지칭한다. 효율의 한 가지 일반적인 척도는 주어진 시간량 내에 발생하는 총 가능한 메모리 사이클들에 대한 활성, 즉, 비-유휴 메모리 사이클들의 비이다.
컴퓨터 시스템에서의 메모리 회로들의 비효율적인 사용은 컴퓨터 시스템의 성능에 부정적인 영향을 미칠 수 있다. 예를 들어, 부적절하게 디스플레이되는 비디오는, 비디오 데이터가 비효율적인 방식으로 메모리로부터 검색되는 것으로부터 기인할 수 있다. 또한, 비효율적인 메모리 액세스는 소프트웨어 또는 프로그램 명령어들이 시기적절하게 프로세서 또는 프로세서 코어에 이용가능하지 않게 하여, 컴퓨터 시스템 성능의 일시 정지 또는 감속을 야기할 수 있다. 도면에 예시되고 후술되는 실시예들은 원하는 효율을 유지하면서 메모리 액세스 요청들을 스케줄링하기 위한 기법들을 제공하며, 이에 의해 컴퓨터 시스템 성능을 개선할 수 있다.
메모리 제어기 회로 및 메모리 회로를 포함하는 메모리 시스템의 일 실시예에 대한 블록도가 도 1에 예시되어 있다. 도시된 바와 같이, 메모리 시스템(100)은 통신 버스(180)를 통해 메모리 회로(120)에 결합된 메모리 제어기 회로(110)를 포함한다. 메모리 제어기 회로(110)는 스케줄링된 요청 버퍼(130) 및 기록 요청 큐(140)를 추가로 포함한다. 다양한 실시예들에서, 메모리 제어기 회로(110) 및 메모리 회로(120)는 동일한 집적 회로 상에 포함될 수 있거나, 별개의 집적 회로들로 구현될 수 있다. 메모리 제어기 회로(110)는 상태 기계 또는 다른 순차 논리 회로의 특정 실시예일 수 있고, 메모리 회로(120)는 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM) 등과 같은 임의의 적합한 유형의 메모리 회로일 수 있다.
예시된 바와 같이, 메모리 제어기 회로(110)는 메모리 회로에 액세스하기 위한 메모리 요청을 수신하고, 메모리 요청이 판독 요청 또는 기록 요청을 포함하는지 여부를 결정하도록 구성된다. 메모리 제어기 회로(110)는 실행을 위해 수신된 판독 요청을 스케줄링하거나 또는 수신된 기록 요청을 기록 요청 큐(140)에 저장하도록 추가로 구성된다. 또한, 메모리 제어기 회로(110)는 특정된 메모리 액세스 효율(160)을 달성하는 것에 기초하여, 그리고 기록 요청 큐(140)에 저장된 기록 요청들의 수에 추가로 기초하여, 스케줄링된 메모리 요청들을 재순서화하도록 구성된다.
메모리 제어기 회로(110)는, 도시된 바와 같이, 판독 요청에 기초하여, 통신 버스(180)를 통해 메모리 회로(120)로 전송될 하나 이상의 메모리 커맨드들을 생성할 수 있다. 그러한 커맨드들은 스케줄링된 요청 버퍼(130) 내로 배치될 수 있다. 다양한 실시예들에서, 스케줄링된 요청 버퍼(130)는 커맨드들(134 내지 136)을 저장하도록 구성된 레지스터 파일 또는 다른 적합한 저장 회로의 특정 실시예일 수 있다. 일부 경우들에서, 메모리 제어기 회로(110)는 스케줄링된 요청 버퍼(130) 내의 다음 이용가능한 엔트리 내에, 판독 요청 또는 판독 요청과 연관된 커맨드들을 배치할 수 있다. 다른 경우들에서, 메모리 제어기 회로(110)는 메모리 요청(150)에 포함된 어드레스를 비교하고, 포함된 어드레스에 의해 참조되는 것과 동일한 메모리 페이지 상의 정보에 액세스하는 다른 판독 요청들과 함께 실행되도록 판독 요청을 스케줄링할 수 있다.
기록 요청들의 경우, 메모리 제어기 회로(110)는, 큐잉된(queued) 기록 요청들의 수가 임계치(141)로 표시된 바와 같은 임계 수에 도달할 때까지, 수신된 기록 요청들을 기록 요청 큐(140) 내로 계속해서 저장할 수 있다. 이 시간 동안, 메모리 제어기 회로(110)는 판독 요청들을 계속해서 스케줄링하고 실행할 수 있다. 큐잉된 기록 요청들의 수가 임계치(141)에 도달한 후, 예를 들어, 기록 요청들(144 내지 146)과 같은 큐잉된 기록 요청들 중 하나 이상은, 스케줄링된 순서로 실행되도록 스케줄링된 요청 버퍼(130) 내로 기록 요청들을 배치함으로써 스케줄링된다.
아래에서 더 상세히 설명되는 바와 같이, 일부 실시예들에서, 메모리 제어기 회로(110)는 "판독 턴"(기록을 포함하지 않는 일련의 판독 메모리 액세스들) 및 "기록 턴"(일련의 기록 메모리 액세스들)의 완료 후에 통신 버스(180) 상에서 현재 메모리 액세스 효율(170)을 결정할 수 있다. (단일 판독 턴 및 단일 기록 턴의 완료 후에, 또는 다른 식으로) 현재 메모리 액세스 효율이 계산될 때, 이 효율은 이어서, 재순서화 프로세스의 일부로서 특정된 메모리 액세스 효율(160)과 비교될 수 있다. 다양한 실시예들에서, 특정된 메모리 액세스 효율(160)은 메모리 시스템(100)의 설계의 일부로서 특정될 수 있거나, 현재의 처리 요건들에 기초하여 하드웨어에 의해 결정될 수 있거나, 또는 심지어 소프트웨어에 의해 설정될 수 있다.
전술된 바와 같이, 메모리 제어기 회로(110)는 통신 버스(180)를 통해 메모리 회로(120)에 결합된다. 다양한 실시예들에서, 통신 버스(180)는 로컬 클록 신호뿐만 아니라, 커맨드들, 어드레스 및 데이터를 위한 전용 와이어들을 포함할 수 있다. 그러한 데이터 와이어들은 양방향일 수 있어서, 메모리 제어기 회로(110) 또는 메모리 회로(120) 중 어느 하나가 데이터 라인 상으로 데이터를 구동하게 할 수 있게 한다. 메모리 제어기 회로(100) 및 메모리 회로(120)는 둘 모두가 동시에 데이터 라인들을 구동할 수 없다는 것에 유의한다. 판독 동작으로부터 기록 동작으로(또는 그 반대로) 전이가 이루어질 때마다, 통신 버스(180)에 포함된 데이터 라인으로 하여금, 새로운 디바이스가 데이터 라인들을 구동하는 것이 가능한 상태에 도달할 수 있도록 하기 위해 다수의 사이클들이 요구될 수 있다. 예를 들어, 판독 동작으로부터 기록 동작으로 전환할 때, 메모리 제어기 회로(110)는, 메모리 회로(120)가 판독 동작과 연관된 데이터를 전송하는 것을 완료할 때까지, 기록될 데이터를 전송하기 시작하는 것을 기다려야 한다.
도 1에 예시된 바와 같은 메모리 제어기 회로(110)는 단지 예시일 뿐임에 유의한다. 도 1의 예시는 본 개시내용에 관련된 특징부들을 강조하기 위해 간략화되었다. 다른 실시예들에서, 메모리 제어기 회로(110)는 예를 들어 통신 버스(180)를 통해 데이터를 전송 및 수신하도록 구성된 인터페이스 회로들과 같은 추가적인 회로 블록들을 포함할 수 있다.
도 1에 도시된 바와 같이, 기록 요청들은 기록 요청 큐에 저장될 수 있다. 도 2를 참조하면, 기록 요청 큐를 이용하는 메모리 제어기의 일 실시예가 도시된다. 메모리 제어기 회로(210)는 시스템 인터페이스(211), 중재 회로(212), 명령어 큐(230), 및 기록 요청 큐(240)를 포함한다. 메모리 제어기 회로(210)는 데이터 버스(280) 및 버스 클록(282)을 통해 메모리 회로(220)에 결합된다. 메모리 회로(220)는 메모리 디바이스들(225a 내지 225d)을 포함하며, 메모리 디바이스들은 이어서 각자의 복수의 메모리 뱅크들(227) 및 메모리 페이지들(229)(명료함을 위해 메모리 디바이스(225a)에 대해서만 도시됨)을 포함한다. 일부 실시예들에서, 메모리 제어기 회로(210), 명령어 큐(230), 기록 요청 큐(240), 및 메모리 회로(220)는 도 1의 메모리 제어기 회로(110), 스케줄링된 요청 버퍼(130), 기록 요청 큐(140), 및 메모리 회로(120)에 대응할 수 있다. 버스 클록(282) 및 통신 버스(280)는 집합적으로 통신 버스(180)에 대응할 수 있다.
메모리 회로(220)는, 예시된 바와 같이, 메모리 디바이스들(225)로 총칭되는 4개의 메모리 디바이스들(225a 내지 225d)을 포함한다. 메모리 디바이스들(225) 각각은 다수의 메모리 뱅크들(227)을 포함한다(명료함을 위해, 메모리 뱅크들(227) 및 메모리 페이지들(229)은 메모리 디바이스(225a)에 대해서만 도시됨). 다양한 실시예들에서, 뱅크들의 수는 메모리 디바이스들(225) 사이에서 동일할 수 있거나 변할 수 있다. 메모리 디바이스들(225) 중 주어진 하나의 메모리 디바이스에 대해, 상이한 메모리 뱅크들이 동시에 또는 중첩 시퀀스로 메모리 요청들을 이행할 수 있다. 그러나, 각각의 메모리 디바이스(225)는 한 번에 단일 메모리 요청에 대한 커맨드들, 어드레스들, 및 데이터를 전송 또는 수신하는 것으로 제한될 수 있다. 메모리 뱅크들(227) 각각은 다수의 메모리 페이지들(229)을 포함한다. "메모리 페이지"(본 명세서에서 "페이지"로도 지칭됨)는 단일 판독 또는 기록 커맨드를 사용하여 단일 메모리 뱅크(227)로부터 액세스될 수 있는 데이터의 양에 대응한다는 것에 유의한다. 일부 실시예들에서, 메모리 페이지는 메모리 어레이 내의 메모리 셀들의 하나 이상의 물리적 행들에 대응할 수 있다. 다른 실시예들에서, 메모리 페이지는 메모리 셀들의 상이한 물리적 또는 논리적 구조, 예컨대 예를 들어, 메모리 셀들의 하나 이상의 열들, 또는 메모리 어드레스 값의 일부분으로 어드레스될 수 있는 다수의 메모리 셀들에 대응할 수 있다.
메모리 제어기 회로(110)와 같은 메모리 제어기 회로(210)는 수신된 메모리 요청들을 수신, 디코딩, 스케줄링, 및 실행하기 위한 회로들을 포함한다. 도시된 바와 같이, 시스템 인터페이스(211)는 메모리 제어기(210)를 포함하는 컴퓨팅 시스템에 포함된 처리 회로로부터 메모리 회로(220)에 액세스하기 위한 메모리 요청을 수신한다. 중재 회로(212)는 시스템 인터페이스(211)로부터 메모리 요청을 수신하고, 메모리 요청이 판독 요청 또는 기록 요청을 포함하는지 여부를 결정한다. 중재 회로(212)는 수신된 판독 요청을 명령어 큐(230) 내로 배치한다. 일부 실시예들에서, 중재 회로(212)는 유사한 메모리 어드레스를 갖는 다른 판독 요청들과 함께 판독 요청을 스케줄링할 수 있다. 예를 들어, 동일한 메모리 페이지(229)에 대응하는 메모리 어드레스들을 갖는 판독 요청들은 함께 스케줄링되어, 공통 메모리 페이지(229)의 단일 활성화에 의해 여러 판독 요청들이 이행되게 할 수 있다. 다른 예로서, 상이한 메모리 뱅크들(227)에 대한 또는 상이한 메모리 디바이스들(225)에 대한 어드레스들을 갖는 판독 요청들은, 메모리 제어기 회로(210)가 상이한 뱅크들 또는 디바이스들로 동시 요청들을 전송할 수 있는 실시예들에서, 함께 스케줄링될 수 있다.
본 명세서에 사용되는 바와 같이, 용어 "동시" 및 "병렬"은 중첩 시점들 동안 발생할 수 있는 이벤트들을 지칭하는 데 사용된다는 것에 유의한다. "동시" 또는 "병렬"의 사용은 이벤트들이 동시에 시작 및 종료되는 것을 암시하도록 의도되지 않지만, 그러한 발생들도 배제되지는 않는다.
중재 회로(212)는 수신된 기록 요청을 기록 요청 큐(240) 내로 배치한다. 메모리 제어기 회로(210)가 사용될 수 있는 컴퓨팅 시스템에서, 판독 요청들은 기록 요청들보다 실행을 위해 우선순위화될 수 있다. 판독 요청들은 활성 애플리케이션 또는 프로세스에 의해 사용될 데이터에 대해 발행될 수 있으며, 따라서 데이터를 검색하고 요청을 이행하기 위한 시간량은 애플리케이션 또는 프로세스의 성능에 영향을 줄 수 있다. 대조적으로, 기록 요청은 추후에 사용될 애플리케이션 또는 프로세스에 의해 이전에 사용된 데이터를 포함할 수 있다. 또한, 기록 요청에 포함된 데이터는 현재 캐시 메모리에 저장될 수 있고, 그 결과, 기록 요청이 이행되지 않았더라도 애플리케이션 또는 프로세스에 대해 이용가능할 수 있다.
통신 버스(280)는, 예시된 바와 같이, 판독 및 기록 데이터 둘 모두를 전달하기 위해 사용되는 조합 입력/출력(I/O) 버스이다. 판독 커맨드로부터 기록 커맨드로 전환할 때, 판독 커맨드들과 연관된 데이터가 메모리 회로(220)로부터 메모리 제어기 회로(210)로 전송된다. 이 데이터는, I/O 버스가 기록 커맨드를 위해 반대 방향으로 데이터를 송신하도록 재구성되기 전에, 메모리 제어기 회로(210)에 의해 수신된다. 기록 커맨드로부터 판독 커맨드로 전환하는 경우 그 반대가 사실이며, 예를 들어, 기록 커맨드들과 연관된 데이터는, 임의의 판독 데이터가 메모리 회로(220)에 의해 전송될 수 있기 전에 I/O 버스를 통해 전송된다.
따라서, 판독 및 기록 요청들 사이에서 통신 버스(280)를 앞뒤로 전환하는 것은, 데이터 전달의 완료를 기다리는 것에 기인하여 다음 메모리 커맨드에 사용되지 않을 수 있는 버스 클록(282)의 사이클들을 생성한다. 이러한 미사용 클록 사이클들은 메모리 제어기 회로(210)의 효율의 감소를 야기할 수 있다. 원하는 효율 목표를 달성하기 위해, 메모리 제어기 회로(210)는 단일 판독 턴 동안 처리되는 판독 요청들의 수뿐만 아니라 단일 기록 턴 동안 처리되는 기록 요청들의 수를 조정할 수 있다. 주어진 판독 또는 기록 턴은, 일부 상황들 하에서의 0개의 요청을 포함하는, 임의의 적합한 수의 대응하는 메모리 요청들을 포함할 수 있다는 것에 유의한다.
전술된 바와 같이, 각자의 판독 및 기록 턴들에 대해 스케줄링된 판독 요청들 및 기록 요청들의 수는 현재 메모리 액세스 효율에 기초하여 결정된다. 판독 턴 및 후속 기록 턴이 완료된 후, 메모리 제어기 회로(210)는 완료된 판독 및 기록 턴들 동안 발생하는 버스 클록(282)의 사이클들의 총 수에 대한, 메모리 요청들을 처리하는 데 사용되는 버스 클록(282)의 사이클들의 수의 비에 기초하여 현재 메모리 액세스 효율에 대한 값을 결정한다. 이어서, 메모리 제어기 회로(210)는 현재 메모리 액세스 효율을 특정된 메모리 액세스 효율과 비교하여 특정된 효율로부터의 현재 델타를 결정할 수 있다. 이어서, 메모리 제어기 회로(210)는 특정된 메모리 액세스 효율을 달성하는 것에 기초하여 스케줄링된 메모리 요청들을 재순서화한다.
주어진 턴 동안 처리되는 요청들의 수를 조정하는 것에 더하여, 메모리 제어기 회로(210)는 특정된 메모리 액세스 효율을 달성하기 위해 하나 이상의 요청 순서화 기법들을 채용할 수 있다. 예를 들어, 메모리 제어기 회로(210)는 후속 판독 및 기록 턴들에서 실행될 메모리 요청들의 수를 수정할 수 있다. 메모리 제어기 회로(210)는 적어도 하나의 부분 기록 메모리 요청(즉, 판독-수정-기록 요청)을 판독 턴과 기록 턴 사이에서 실행되도록 스케줄링할 수 있다. 다른 기법은 특정 기록 요청에 의해 저장될 데이터의 양이 상이한 기록 요청에 의해 저장될 데이터의 양보다 크다는 결정에 응답하여 상이한 기록 요청보다 특정 기록 요청을 우선순위화하는 것을 포함한다. 이들 기법들은 아래에서 더 상세하게 설명된다.
기록 요청들보다 판독 요청들을 우선순위화함으로써, 메모리 제어기 회로(210)는 수신된 기록 요청들을 기록 요청 큐(240) 내로 저장할 수 있으며, 이에 의해 수신된 판독 요청들을 위해 명령어 큐(230)에서 이용가능한 엔트리들을 마련할(free) 수 있다. 따라서, 일부 조건들 하에서, 판독 및 기록 턴들의 세트는 모든 판독 요청들을 포함할 수 있고 기록 요청들은 포함하지 않을 수 있다. 따라서, 판독 요청들의 그러한 우선순위화는, 판독 요청이 발행되는 것과 후속적으로 이행되는 것 사이의 시간량을 감소시킴으로써 활성 애플리케이션들 또는 프로세스들의 성능을 개선할 수 있다.
중재 회로(212)는, 예시된 바와 같이, 수신된 기록 요청들(244 내지 258)을 기록 요청 큐(240)에 저장한다. 기록 요청(258) 및 임계치(241)에 의해 표시된 바와 같이, 큐잉된 기록 요청들의 수가 임계 수에 도달하면, 중재 회로(212)는 큐잉된 기록 요청들의 서브세트를 명령어 큐(230) 내로 배치함으로써 서브세트를 스케줄링한다. 도 2에 도시된 바와 같이, 서브세트는 기록 요청들(244 내지 246)을 포함한다. 그러나, 다른 실시예들에서, 기록 요청 큐(240) 내의 모든 기록 요청들을 포함하여 임의의 적합한 수의 기록 요청들이 서브세트에 포함될 수 있다. 판독 요청들을 우선순위화하기 위해, 중재 회로(212)는 판독 요청들(232 내지 237)을 기록 요청들(244 내지 246) 이전에 실행되도록 스케줄링한다. 판독 요청들(232 내지 237)은 판독 턴을 형성하는 한편, 기록 요청들(244 내지 246)은 기록 턴을 형성한다. 판독 및 기록 턴들은 함께 판독 및 기록 턴들의 하나의 세트를 형성하며, 이는 본 명세서에서 메모리 요청 턴으로서 또한 지칭된다.
임계치(241)에 대한 값은 메모리 제어기 회로(210)의 설계 동안 설정될 수 있거나, 또는 예를 들어 메모리 제어기 회로(210)를 포함하는 컴퓨터 시스템에서 실행되는 운영 체제와 같은 소프트웨어에 의해 설정될 수 있다. 일부 실시예들에서, 임계 값은 특정된 메모리 액세스 효율에 대한 현재 메모리 액세스 효율의 비교에 기초하여 조정될 수 있다.
중재 회로(212)는 특정 기록 요청에 의해 저장될 데이터의 양이 상이한 기록 요청에 의해 저장될 데이터의 양보다 크다는 결정에 응답하여 상이한 기록 요청보다 특정 기록 요청을 우선순위화할 수 있다. 명령어 큐(230)에 도시된 바와 같이, 기록 요청들은 순서(246, 244, 그런 다음 245)로 스케줄링된다. 예를 들어, 기록 요청(246)은 메모리 디바이스들(225) 중 하나에 128 바이트의 데이터를 저장하기 위한 요청일 수 있다. 그러나, 기록 요청들(244, 245)은 각각 32 바이트의 데이터를 저장하기 위한 요청들일 수 있으며, 따라서 중재 회로(212)는 기록 요청(246) 후에 이들 요청을 스케줄링한다. 기록 요청들(244, 245)은 동등한 양의 데이터에 대한 것이기 때문에, 중재 회로(212)는 다른 기준들을 사용하여 이들 2개의 요청에 대한 순서를 선택할 수 있다. 예를 들어, 기록 요청(244)은 메모리 요청(246)과는 상이한 메모리 디바이스들(225) 중 하나의 메모리 디바이스 내의 위치를 어드레스할 수 있고, 따라서 기록 요청(246)과 동시에 실행되도록 스케줄링될 수 있다. 그렇지 않으면, 중재 회로(212)는 2개의 요청이 메모리 제어기 회로(210)에 의해 수신되는 순서에 기초하여 기록 요청(245) 전에 기록 요청(244)을 스케줄링할 수 있다.
메모리 요청들을 실행하기 위해, 메모리 제어기 회로(210)는 각각의 요청에 대응하는 하나 이상의 메모리 커맨드들을 메모리 회로(220)로 전송한다. 메모리 회로(220)는 스케줄링된 판독 요청들 및 기록 요청들에 대응하는 메모리 커맨드들을 실행한다. 메모리 제어기 회로(210)는 통신 버스(280) 및 버스 클록(282)을 통해 메모리 회로(220)로 메모리 커맨드들을 전송한다. 버스 클록(282)은 메모리 회로들(220)로의 메모리 커맨드들의 흐름을 제어하기 위해 메모리 제어기 회로(210)에 의해 이용된다. 버스 클록(228)(본 명세서에서 간결함을 위해 "클록 사이클"로 지칭됨)의 다수의 사이클들은, 특정 메모리 요청의 실행을 개시하는 것에서 메모리 요청이 생성된 메모리 커맨드들에 의해 이행될 때 사이에 발생한다. 일부 메모리 요청들의 실행은 특정 메모리 요청을 이행하는 데 사용되는 개별 메모리 커맨드들 사이의 유휴 클록 사이클들을 포함할 수 있다. 명령어 큐(230)에서 기다리는 메모리 요청들에 따라, 다른 메모리 커맨드들은 이러한 다른 유휴 클록 사이클들 중 일부 또는 전부 동안 실행될 수 있다. 메모리 제어기 회로(210)의 효율은 특정 시간량에 걸쳐 발생하는 클록 사이클들의 총 수에 대한 메모리 커맨드들을 실행하기 위해 능동적으로 사용된 클록 사이클들의 비 또는 백분율에 기초하여 결정될 수 있다.
도 2의 실시예는 단지 개시된 개념들을 설명하기 위한 예시임에 유의한다. 예시된 판독 및 기록 요청들의 수는 명료함을 위해 선택된다. 다른 실시예들에서, 임의의 적합한 수의 판독 및 기록 요청들이 명령어 큐 및 기록 요청 큐에 포함될 수 있다.
도 1의 설명을 다시 참조하면, 메모리 제어기 회로는 메모리 제어기의 효율을 표현하는 값을 결정한다. 이러한 효율은, 일부 실시예들에서, 특정 시간량에서 실행된 메모리 커맨드들의 수에 의해 결정될 수 있다.
도 3을 참조하면, 효율을 결정하기 위한 예에서, 스케줄링된 요청 버퍼의 일 실시예 및 메모리 커맨드 실행 대 시간을 도시하는 차트가 도시된다. 스케줄링된 요청 버퍼(330)는, 다양한 실시예들에서, 도 1의 스케줄링된 요청 버퍼(130), 또는 도 2의 명령어 큐(230)에 대응할 수 있다. 도시된 바와 같이, 스케줄링된 요청 버퍼(330)는 8개의 각자의 메모리 요청들(331 내지 338)로 현재 채워진 8개의 엔트리들을 포함한다. 메모리 요청들(331 내지 338) 각각은 판독 요청(문자 "R"로 표시됨) 또는 기록 요청(문자 "W"로 표시됨)이다. 또한, 복수의 메모리 페이지들(p1 내지 p5) 중 어느 것이 각자의 요청에 의해 액세스되는지를 나타내는 메모리 페이지 표시자가 포함된다. 예를 들어, 메모리 요청(333)은 메모리 페이지 2 내의 위치에서의 정보에 대한 판독 요청이다.
예시된 바와 같이, 차트(300)는 메모리 요청들(331 내지 338)에 대응하는 메모리 커맨드들을 실행하기 위한 타임라인을 도시한다. 클록 신호(315)는 도 1의 클록 신호(115)에 대응하고, 메모리 요청들(331 내지 338)을 실행하는 메모리 제어기, 예컨대, 메모리 제어기 회로(110)에 타이밍 기준을 제공한다. 실행 신호(317)는 메모리 제어기 회로(110)와, 예를 들어 메모리 회로(120)와 같은 메모리 회로 사이의 커맨드 인터페이스에서의 활동을 나타낸다. 하이 신호는 메모리 커맨드가 능동적으로 실행되고 있을 때를 나타내고, 로우 신호는 커맨드 인터페이스가 유휴일 때를 나타낸다. 커맨드 인터페이스가 유휴일 때, 메모리 제어기 및 메모리 회로 내의 회로들은 다양한 메모리 요청들 및 커맨드들을 능동적으로 실행하고 있거나 달리 처리하고 있을 수 있다는 것에 유의한다. 실행되고 있는 메모리 커맨드의 유형을 나타내기 위해 여러 문자들이 실행 신호(317)와 함께 사용된다. "a"는 하나 이상의 후속 판독 또는 기록 커맨드들을 위해 각자의 메모리 페이지를 준비하는 데 사용되는 활성화 커맨드를 나타낸다. "r"은 활성화된 메모리 페이지로부터 1 바이트 이상의 정보를 판독하기 위한 판독 커맨드를 나타낸다. 유사하게, "w"는 활성화된 페이지에 1 바이트 이상의 정보를 기록하기 위한 기록 커맨드를 나타낸다.
전술한 바와 같이, 메모리 제어기는 하나 이상의 메모리 커맨드들을 메모리 회로에 발행함으로써 메모리 요청을 실행하며, 메모리 회로는 이어서 개별 메모리 커맨드들을 실행하고, 이에 의해 대응하는 메모리 요청을 이행한다. 도 3을 참조하면, 시간 t1에서 메모리 요청(331)은 메모리 페이지 1에 대한 페이지 활성화 커맨드를 실행함으로써 개시된다. 도시된 바와 같이, 메모리 회로들은 시간 t2까지 클록 신호(315)의 여러 사이클들을 이용하며, 이 시점에서 페이지 1로부터의 정보는 판독되어 메모리 제어기로 전송될 수 있다. 메모리 요청(331)은 시간 t2에서 판독 커맨드를 실행함으로써 이행된다. 또한, 동일한 메모리 페이지 상의 정보에 액세스하는 메모리 요청(332)을 이행하기 위해 제2 판독 커맨드가 실행된다. 시간 t3까지, 메모리 요청들(333, 334)이 이행되었다. 간결함을 위해, 메모리 요청들(333, 334)을 이행하기 위한 메모리 커맨드들의 도시들은 생략된다. 시간 t3에서, 메모리 요청(335)은 페이지 4에 대한 활성화 커맨드를 실행함으로써 개시되고, 정보는 클록 신호(315)의 여러 사이클들 후에 판독된다.
메모리 회로(120)는, 예시된 바와 같이, 판독 커맨드들을 위한 판독 상태 또는 기록 커맨드들을 위한 기록 상태로 구성되고, 클록 신호(315)의 여러 사이클들은 판독 상태로부터 기록 상태로 메모리 회로(120)를 재구성하는 데 사용된다. 이 전이 동안, 메모리 판독, 기록, 및 활성화 커맨드들은 메모리 회로(120)에 발행되지 않는다. 시간 t4와 t5 사이에서, 판독 상태에서 기록 상태로의 전이가 수행된다. 이러한 판독-투-기록(read-to-write) 전이는 메모리 요청들(331 내지 335)을 포함하는 판독 턴을 종료할 수 있고, 메모리 요청들(336 내지 338)을 포함하는 기록 턴을 위해 메모리 회로(120)를 준비시킬 수 있다.
시간 t5에서, 메모리 회로(120)는 기록 상태에 있고, 기록 커맨드를 위해 페이지 3을 준비시키기 위해 메모리 페이지 활성화를 실행한다. 클록 신호(315)의 여러 사이클들 후에, 시간 t6에서, 페이지 3은 메모리 요청(336)의 일부로서 데이터를 수신할 준비가 된다. 도시된 바와 같이, 메모리 회로(120)에 대한 기록 커맨드들은 판독 커맨드들과 상이할 수 있다. 판독 커맨드가 활성화된 페이지 상의 메모리 위치들의 서브세트를 판독할 수 있는 반면, 기록 커맨드는, 일부 실시예들에서, 활성화된 페이지 내의 모든 위치들에 기록할 수 있다. 따라서, 기록 커맨드들은, 더 많은 정보가 메모리 제어기 회로(110)로부터 메모리 회로(120)로 전송되는 것으로 인해, 완료되는 데 더 많은 시간을 소비할 수 있다.
메모리 제어기 회로(110) 및 메모리 회로(120)는 요청(336)이 완료된 후에 메모리 요청들(337, 338)을 계속해서 이행할 수 있다. 메모리 제어기 회로(110)는 판독 턴 및 기록 턴의 완료에 응답하여 현재 메모리 액세스 효율을 결정할 수 있다. 현재 메모리 액세스 효율은 완료된 판독 및 기록 턴들 동안 발생한 총 클록 사이클들에 대한, 메모리 요청들을 처리하는 데 사용된 클록 사이클들의 비에 기초하여 결정된다. 예를 들어, 특정 판독 턴은 48개의 판독 요청들을 포함할 수 있고, 후속 기록 턴은 16개의 기록 요청들을 포함할 수 있다. 이러한 64개의 메모리 요청들을 이행하는 것은 클록 신호(315)의 150개 사이클이 걸릴 수 있다. 이러한 150개의 사이클 동안, 실행 신호(317)는 45개 사이클 동안의 활동을 나타내어, 0.30 또는 30% 현재 메모리 액세스 효율의 비를 야기할 수 있다. 메모리 제어기 회로(110)는 메모리 제어기 회로(110)의 설계 동안 설정되거나, 또는 예를 들어 메모리 제어기 회로(110)를 포함하는 컴퓨터 시스템에서 실행되는 운영 체제와 같은 소프트웨어에 의해 설정되는, 특정된 메모리 액세스 효율을 포함할 수 있다. 30%의 현재 메모리 액세스 효율 값은 이 특정된 메모리 액세스 효율 값, 예를 들어 90%와 비교되어, 메모리 제어기 회로(110)가 특정된 목표 아래로 동작하고 있다고 결정한다. 이러한 비교에 기초하여, 메모리 제어기 회로(110)는 미래의 메모리 요청 턴들을 위해 하나 이상의 기법들을 수정할 수 있다. 예를 들어, 메모리 제어기 회로(110)는 후속 메모리 요청 턴들에 포함된 메모리 요청들의 수를 수정할 수 있다. 추가적인 상세 사항들이 본 개시내용에서 이후에 제공된다.
도 3의 실시예가 예시임에 유의한다. 도 3은 실시예의 특징들을 명확하게 개시하기 위해 단순화되어 있다. 다른 실시예들에서, 판독 또는 기록 요청을 이행하기 위해 추가적인 커맨드들이 실행될 수 있다. 일부 실시예들에서, 메모리 커맨드들의 순서는 상이할 수 있다. 특정 메모리 커맨드를 완료하는 데 사용되는 클록 사이클들의 수는 도 3에 도시된 것과 상이할 수 있다.
도 3의 설명에서, 메모리 제어기는 특정된 메모리 액세스 효율에 대한 현재 메모리 액세스 효율의 비교에 응답하여 후속 메모리 요청 턴들에 포함된 메모리 요청들의 수를 조정하는 것으로서 개시된다. 도 4로 진행하면, 스케줄링된 요청 버퍼를 표현하는 여러 테이블들이 그러한 조정들의 예를 예시하기 위해 사용된다. 스케줄링된 요청 버퍼(430a)는 제1 시점에서, 예를 들어, 도 1의 스케줄링된 요청 버퍼(130)와 같은 스케줄링된 요청 버퍼의 상태를 도시한다. 스케줄링된 요청 버퍼들(430b, 430c)은 현재 메모리 액세스 효율의 2개의 상이한 값들(431b, 431c)에 응답하여 추후 시점에서의 스케줄링된 요청 버퍼의 가능한 상태들을 도시한다.
스케줄링된 요청 버퍼(430a)는, 각각 32개의 각자의 메모리 요청들을 갖는, 판독 턴 및 기록 턴을 갖는 스케줄링된 요청 버퍼의 상태를 도시한다. 일단 스케줄링된 요청들이 판독 및 기록 턴들의 끝에서 수행되면, 예를 들어, 도 1의 메모리 제어기 회로(110)와 같은 메모리 제어기 회로는 전술된 바와 같이 현재 메모리 액세스 효율을 결정한다. 메모리 제어기 회로(110)는 특정된 메모리 액세스 효율에 대한 현재 메모리 액세스 효율의 비교에 기초하여 후속 판독 및 기록 턴들에서 실행될 메모리 요청들의 수를 수정할 수 있다.
제1 예로서, 메모리 제어기 회로(110)는 현재 메모리 액세스 효율(431b)에 대해 60%의 값을 결정한다. 특정된 메모리 액세스 효율이 85%인 경우, 메모리 제어기 회로(110)는 후속 판독 및 기록 턴들에 포함된 메모리 요청들의 수를 조정할 수 있다. 이러한 경우는, 판독 요청들이 단일 메모리 디바이스 상의 하나 또는 2개의 메모리 뱅크들 상의 상이한 메모리 페이지들에 액세스하고 있는 경우에 발생할 수 있으며, 이에 의해 동시에 수행될 수 있는 판독 요청들의 수를 제한할 수 있다. 대조적으로, 큐잉된 기록 요청들은 다양한 메모리 디바이스에 걸쳐있을 수 있으며, 이에 의해 다수의 기록 요청들의 동시 실행을 가능하게 한다. 스케줄링된 요청 버퍼(430b)에 도시된 바와 같이, 메모리 제어기 회로(110)는 판독 턴 내의 판독 요청들의 수를 20으로 감소시키고, 기록 턴 내의 기록 요청들의 수를 40으로 증가시킨다. 판독 및 기록 턴들 각각 내의 요청들의 수를 수정하는 것에 더하여, 메모리 요청들의 총 수가 조합된 메모리 요청 턴에 대해 수정된다는 것에 유의한다.
제2 예에서, 메모리 제어기 회로(110)는 현재 메모리 액세스 효율(431c)에 대해 95%의 값을 결정한다. 85%의 동일한 특정된 메모리 액세스 효율을 가정하면, 메모리 제어기 회로(110)는 판독 및 기록 턴들 각각 내의 메모리 요청들의 수를 다시 조정할 수 있다. 이전과 유사한 판독 요청들과 기록 요청들의 혼합을 가정하면, 메모리 제어기 회로(110)는 판독 턴 내의 판독 요청들의 수를 48으로 증가시키고, 기록 턴 내의 기록 요청들의 수를 16으로 감소시킨다. 메모리 액세스 효율(431c)의 더 높은 값으로 인해, 메모리 제어기 회로(110)는 동시에 수행될 수 있는 제한된 기회를 갖는 판독 요청들 중 일부를 실행하는 마진을 갖는다. 현재 메모리 액세스 효율을 추적하고 특정된 메모리 액세스 효율과 비교함으로써, 메모리 제어기 회로는 특정된 효율을 획득하기 위해 판독 및 기록 턴들 내의 메모리 요청들의 수를 수정할 수 있다.
도 4의 도시들은 단지 예시들임에 유의한다. 다른 실시예들에서, 상이한 수의 메모리 요청들이 판독 및 기록 턴들에 포함될 수 있다. 판독 및 기록 요청들만이 예시되지만, 다른 실시예들에서, 다른 유형들의 메모리 요청들, 예컨대 부분 판독 요청들이 포함될 수 있다.
이제 도 5를 참조하면, 판독-수정-기록 메모리 요청을 스케줄링하는 예가 도시된다. 스케줄링된 요청 버퍼(530)는, 도 1의 스케줄링된 요청 버퍼(130), 또는 도 2의 명령어 큐(230)에 대응할 수 있다. 스케줄링된 요청 버퍼(530)는, 3개의 엔트리들이 현재 3개의 각자의 메모리 요청들(531 내지 533)로 채워져 있는 것으로 도시되어 있다. 메모리 요청(531)은 메모리 페이지 1(p1)에 대한 판독 요청(R)이다. 메모리 요청(533)은 메모리 페이지 4(p4)에 대한 기록 요청(W)이다. 또한, 메모리 요청(532)은 페이지 3(p3)에 대한 부분 판독(즉, 판독-수정-기록) 요청(RMW)이다. 도 1 및 스케줄링된 요청 버퍼(530)를 집합적으로 참조하면, 3개의 메모리 요청들(531 내지 533)은 차트(500)의 타임라인에 따라 실행된다.
예시된 바와 같이, 차트(500)는 3개의 메모리 요청들(531 내지 533)에 대응하는 메모리 커맨드들을 실행하기 위한 타임라인을 도시한다. 클록 신호(515)는 클록 신호(115)에 대응하고, 메모리 제어기 회로(110)에 타이밍 기준을 제공한다. 실행 신호(517)는 메모리 제어기 회로(110)와 메모리 회로(120) 사이의 커맨드 인터페이스에서의 활동을 나타낸다. 신호의 하이 부분은 메모리 커맨드가 능동적으로 실행되고 있을 때를 나타내고, 신호의 로우 부분은 커맨드 인터페이스가 유휴일 때를 나타낸다. 도 3의 차트(300)와 유사하게, 실행되고 있는 메모리 커맨드의 유형을 나타내기 위해 여러 문자들이 실행 신호(317)와 함께 사용된다. "a"는 하나 이상의 후속 판독 또는 기록 커맨드들을 위해 각자의 메모리 페이지를 준비하는 데 사용되는 활성화 커맨드를 나타낸다. "r"은 활성화된 메모리 페이지로부터 1 바이트 이상의 정보를 판독하기 위한 판독 커맨드를 나타낸다. 유사하게, "w"는 활성화된 페이지에 1 바이트 이상의 정보를 기록하기 위한 기록 커맨드를 나타낸다.
도시된 바와 같이, 판독 요청(531)은 판독 턴 내의 마지막 판독 요청이고, 기록 요청(533)은 후속 기록 턴 내의 첫번째 기록 요청이다. 메모리 제어기 회로(110)는 판독 턴의 끝과 기록 턴의 시작 사이에서 수행되도록 부분 기록 요청(532)을 스케줄링한다. 부분 기록 요청은 특정된 페이지로부터 정보를 판독하는 것, 필요한 경우, 특정된 페이지로부터의 데이터의 일부 또는 전부를 수정하는 것, 및 이어서 수정된 데이터를 특정된 페이지에 다시 기록하는 것을 포함하는 판독-수정-기록 요청의 유형이다. 판독 및 기록 커맨드들 둘 모두가 이러한 유형의 메모리 요청을 이행하도록 실행되기 때문에, 판독-투-기록 전이가 판독 및 기록 커맨드들 사이에서 수행된다. 후술하는 바와 같이, 판독 턴과 기록 턴 사이에 판독-수정-기록 요청을 스케줄링하는 것은, 메모리 회로(120)가 특히 판독-수정-기록 요청을 위해 판독-투-기록 전이를 실행하는 것을 피할 수 있게 할 수 있다.
시간들 t1과 t2 사이에서, 2개의 메모리 커맨드들, 페이지 활성화 커맨드 및 판독 커맨드가, 판독 요청(531)을 이행하기 위해 실행된다. 시간 t2와 t3 사이에서, 페이지 활성화 커맨드 및 판독 커맨드가 메모리 요청(532)의 판독 부분을 이행하기 위해 실행되어, 특정된 페이지 3이 메모리 제어기 회로(110)에 의해 판독되는 것을 야기한다. 페이지 3으로부터의 데이터가 판독된 후, 메모리 제어기 회로(110)는 시간 t3에서 시간 t4까지 메모리 회로(120)에 대한 판독-투-기록 전이를 개시한다. 전이 시간 동안, 메모리 제어기 회로(110)는 메모리 요청(532)에 특정된 바와 같이 페이지 3으로부터의 데이터에 대한 임의의 필요한 변경을 행할 수 있다. 메모리 회로(120)가 기록 상태에 있은 후에, 메모리 요청(532)의 기록 부분은 시간들 t4와 t5 사이에서 이행된다. 메모리 회로(120)가 이제 기록 상태에 있기 때문에, 기록 요청(533)은 추가 상태 전이를 필요로 하지 않고 시간 t5에서 시작할 수 있다.
판독-수정-기록 요청(532)이 판독 턴 동안 스케줄링되는 경우, 판독 턴을 완료하기 위해 판독 상태로 메모리 회로(120)를 복귀시키기 위해, 기록-투-판독 전이는 요청(532)이 이행된 후에 필요할 것임에 유의한다. 마찬가지로, 판독-수정-기록 요청(532)이 기록 턴 동안 스케줄링되는 경우, 요청의 제1 판독 부분에 대한 판독 상태로 메모리 회로(120)를 배치하기 위해, 기록-투-판독 전이는 요청(532)이 시작되기 전에 필요할 것이다.
또한, 도 5는 개시된 개념들을 설명하기 위한 예시임에 유의한다. 차트(500) 내의 타임라인은 명료함을 위해 단순화되어 있다. 다른 실시예들에서, 임의의 적합한 수의 클록 사이클들이 예시된 활동 동안 그리고 그 사이에서 발생할 수 있다.
메모리 요청들의 스케줄링 및 실행에 관련된 회로들 및 차트들이 위에서 제시되었다. 이러한 회로들을 동작시키기 위한 2개의 방법이 이제 제시된다.
이제 도 6을 참조하면, 메모리 제어기에서 메모리 요청들을 관리하기 위한 방법의 일 실시예를 예시하는 흐름도가 도시된다. 방법(600)은 예를 들어 도 1의 메모리 제어기 회로(110) 또는 도 2의 메모리 제어기 회로(210)와 같은 메모리 제어기 회로에 적용될 수 있다. 도 1 및 도 6의 흐름도를 종합적으로 참조하면, 방법은 블록(601)에서 시작될 수 있다.
메모리 제어기는 메모리 회로에 액세스하기 위한 메모리 요청을 수신한다(블록 602). 메모리 제어기, 예컨대, 메모리 제어기 회로(110)는 메모리 제어기 회로(110) 및 메모리 회로(120)를 포함하는 컴퓨팅 시스템 내의 하나 이상의 처리 회로들로부터 메모리 요청을 수신한다. 처리 회로는 메모리 회로(120)로부터 정보, 예를 들어, 컴퓨팅 시스템 내의 처리 회로에서 현재 실행되고 있는 애플리케이션 또는 다른 소프트웨어 프로세스의 프로그램 코드를 위한 명령어 또는 피연산자를 검색하기 위한 메모리 요청을 발행할 수 있다. 다른 경우들에서, 처리 회로는 추후 사용을 위해 메모리 회로(120) 내로 정보를 저장하기 위한 메모리 요청을 발행할 수 있다. 메모리 제어기(110)는, 도 1에 도시된 바와 같이, 기록 요청 큐 및 스케줄링된 요청 버퍼를 포함한다.
메모리 제어기는 메모리 요청이 판독 요청 또는 기록 요청인지 여부에 따라 메모리 요청을 처리한다(블록 604). 메모리 제어기 회로(110)는 메모리 요청이 판독 요청 또는 기록 요청을 포함하는지 여부를 결정한다. 일부 실시예들에서, 예를 들어, 판독-수정-기록 커맨드들과 같은 추가 유형들의 메모리 요청들이 수신될 수 있다. 메모리 액세스들은 클록 신호(예컨대, 클록 신호(115))의 여러 사이클들이 걸릴 수 있고, 따라서, 메모리 제어기 회로(110)는 효율적인 레이트로 메모리 요청들을 이행하는 방식으로 수신된 메모리 요청들을 스케줄링하도록 구성될 수 있다. 판독 요청은 애플리케이션을 위한 명령어 또는 피연산자에 대한 요청을 포함할 수 있기 때문에, 그러한 판독 요청들이 이행되는 속도는, 컴퓨팅 시스템의 사용자에 의한 컴퓨팅 시스템의 인지된 성능에 직접적인 영향을 미칠 수 있다. 따라서, 판독 요청들을 스케줄링하는 것은 기록 요청들을 스케줄링하는 것보다 우선순위화될 수 있다. 수신된 판독 요청은 판독 턴의 일부로서 다른 판독 요청들의 그룹 내에서 스케줄링된 요청 버퍼(130) 내에서 스케줄링될 수 있다. 기록 요청들은 기록 요청들이 코드 실행을 위한 중요한 경로 내에 있지 않을 수 있기 때문에 판독 요청들보다 더 낮은 우선순위를 가질 수 있다. 따라서, 메모리 제어기 회로(110)는 수신된 기록 요청을 기록 요청 큐(140)에 저장할 수 있다.
메모리 제어기는 메모리 요청들을 실행하는 메모리 제어기의 현재 효율을 표현하는 효율 값을 결정한다(블록 606). 다수의 메모리 요청들을 실행한 후, 메모리 제어기 회로(110)는 가장 최근의 판독 및 기록 턴들에 포함된 메모리 커맨드들의 실행과 연관된 현재 메모리 액세스 효율에 대한 값을 결정한다. 효율 값은, 완료된 판독 및 기록 턴들 동안, 도 2에 도시된, 버스 클록(282)의 총 클록 사이클들에 대한 활성 클록 사이클들의 비에 기초하여 결정될 수 있다. 활성 클록 사이클들은 메모리 요청들을 처리하는 데 사용된 버스 클록(282)의 사이클들을 지칭한다. 사이클들의 총 수는 판독 턴의 첫번째 요청의 실행의 시작으로부터 기록 턴의 마지막 요청의 완료까지 발생하는 버스 클록(282)의 사이클들의 수를 지칭한다. 다른 실시예들에서, 효율 값은 판독 및 기록 턴들 내의 메모리 요청들의 수를 사이클들의 총 수로 나눈 것에 기초할 수 있다.
메모리 제어기는 효율 값에 기초하여 그리고 기록 요청 큐에 저장된 기록 요청들의 수에 기초하여 메모리 요청을 스케줄링한다(블록 608). 메모리 제어기 회로(110)는 현재 메모리 액세스 효율의 결정된 값을 특정된 메모리 액세스 효율 값과 비교한다. 이러한 특정된 값은 메모리 제어기 회로(110)의 설계 동안 설정될 수 있거나, 또는 컴퓨팅 시스템 상에서 실행되는 운영 체제 또는 다른 소프트웨어에 의해 메모리 제어기 회로(110)로 전송될 수 있다. 메모리 제어기 회로(110)는 적절한 다가오는 판독 또는 기록 턴 내에서 메모리 요청을 스케줄링한다. 다가오는 판독 및 기록 턴에 대해, 메모리 제어기 회로(110)는 또한 후속 판독 및 기록 턴들에 포함될 판독 요청들의 수 및/또는 기록 요청들의 수를 조정할 수 있다. 예를 들어, 기록 요청 큐(140) 내의 기록 요청들의 수가 임계치(141)보다 작은 경우, 수신된 기록 요청은 처리를 위해 스케줄링되기보다는 기록 요청 큐(140)에 저장된다. 그렇지 않으면, 기록 요청 큐(140) 내의 요청들의 수가 임계치(141)에 도달하는 경우, 기록 요청 큐(140)에 현재 저장된 하나 이상의 기록 요청들은 실행을 위해 다가오는 기록 턴 내에 스케줄링될 수 있다.
메모리 회로는 스케줄링된 판독 요청들 및 기록 요청들을 실행한다(블록 610). 스케줄링된 메모리 요청들을 실행하기 위해, 메모리 제어기 회로(110)는 각각의 요청에 대응하는 하나 이상의 메모리 커맨드들을 메모리 회로(120)로 전송한다. 메모리 회로(120)는 스케줄링된 판독 및 기록 요청들에 대응하는 메모리 커맨드들을 실행한다. 방법은 블록(614)에서 종료된다.
도 6에 예시된 방법은 개시된 개념들을 설명하기 위한 예시임에 유의한다. 다른 실시예들에서, 동작들은 상이한 시퀀스로 수행될 수 있다. 예를 들어, 기록 요청들의 현재 큐잉된 수를 임계 수와 비교하는 것과 같은 추가적인 동작들이 또한 포함될 수 있다.
이제 도 7로 진행하면, 메모리 제어기에 의해 효율 값을 결정하고 이용하기 위한 방법의 일 실시예를 예시하는 흐름도가 도시된다. 방법(600)과 유사한 방법(700)은 예컨대, 도 1의 메모리 제어기 회로(110) 또는 도 2의 메모리 제어기 회로(210)와 같은 메모리 제어기 회로에 적용될 수 있다. 방법(700)에 의해 개시된 동작들은 방법(600)과 함께 또는 그 일부로서 수행될 수 있다. 도 1 및 도 7의 흐름도를 종합적으로 참조하면, 방법은 블록(701)에서 시작될 수 있다.
메모리 제어기는 스케줄링된 수의 연속적인 판독 요청들을 실행함으로써 판독 턴을 완료한다(블록 702). 메모리 제어기 회로(110)는, 전술된 바와 같이, 판독 턴을 형성하기 위해 수신된 판독 요청들의 그룹을 생성한다. 판독 턴의 요청들은, 판독 턴의 마지막 판독 요청들이 완료되기 전에 기록 요청이 실행되지 않고서, 특정 순서로 실행된다. 특정 순서는 일부 판독 요청들을 직렬로 실행하는 것을 포함할 수 있는 반면, 일부는 상이한 메모리 뱅크들 또는 상이한 메모리 디바이스들에 어드레스하는 2개의 판독 요청들을 병렬로 실행하는 것과 같이 동시에 실행될 수 있다.
메모리 제어기는 스케줄링된 수의 연속적인 기록 요청들을 실행함으로써 기록 턴을 완료한다(블록 704). 블록(702)과 유사하게, 메모리 제어기 회로(110)는, 전술된 바와 같이, 기록 요청 큐(140)에 큐잉된 기록 요청들을 사용하여 기록 턴을 형성하기 위해 기록 요청들의 그룹을 생성한다. 판독 턴의 요청들에서와 같이, 기록 턴의 요청들은, 기록 턴의 마지막 기록 요청이 완료되기 전에 판독 요청이 실행되지 않고서, 특정 순서로 실행될 수 있다. 기록 요청들에 대한 특정 순서는 또한 일부 기록 요청들을 직렬로 실행하는 것을 포함할 수 있는 반면, 일부는 적절하게 동시에 실행될 수 있다.
판독 턴 및 기록 턴을 완료하는 것에 응답하여, 메모리 제어기는 메모리 제어기가 판독 턴 및 기록 턴 동안 메모리 요청들을 실행하고 있는 시간량에 기초하여 효율 값을 결정한다(블록 706). 판독 턴 및 후속 기록 턴에 대한 메모리 요청들을 실행한 후, 메모리 제어기 회로(110)는 현재 메모리 액세스 효율 값을 결정한다. 이 효율 값은, 예를 들어, 판독 턴의 첫번째 요청의 실행의 시작으로부터 기록 턴의 마지막 요청의 완료까지 발생하는 사이클들의 총 횟수 중에서, 판독 및 기록 턴들 내의 메모리 요청들과 연관된 메모리 커맨드들의 실행 동안 발생한 클록 신호(115)의 사이클들의 백분율에 기초할 수 있다.
메모리 제어기는 결정된 값에 기초하여 후속 판독 턴 및 기록 턴에서 실행될 메모리 요청들의 수를 조정한다(블록 708). 메모리 제어기 회로(110)는 결정된 현재 메모리 액세스 효율 값을 특정된 메모리 액세스 효율 값과 비교한다. 이러한 비교에 기초하여, 메모리 제어기 회로(110)는 후속 판독 및 기록 턴들에서 스케줄링되는 판독 및/또는 기록 요청들의 수를 조정할 수 있다. 일부 상황들 하에서, 판독 턴 내의 판독 요청들의 수 또는 기록 턴 내의 기록 요청들의 수(둘 모두는 아님)는 0일 수 있다. 방법은 블록(710)에서 종료된다.
방법(700)은 메모리 요청들을 관리하는 것에 관련된 하나의 예시임에 유의한다. 다른 실시예들에서 동작들은 상이한 순서로 수행될 수 있다. 일부 실시예들은 예를 들어 판독 및 기록 턴들 사이의 판독-투-기록 전이를 포함하는 것과 같은 추가 동작들을 포함할 수 있다.
예를 들어, 시스템-온-칩(SoC)과 같은 컴퓨터 시스템의 일 실시예의 블록도가 도 8에 예시되어 있다. 컴퓨터 시스템(800)은 메모리 제어기 회로 및 메모리 회로를 포함하고 위에 개시된 개념들을 이용하는 시스템을 나타낼 수 있다. 컴퓨터 시스템(800)은, 다양한 실시예들에서, 복수의 집적 회로들을 포함하는 하나 이상의 회로 기판들 상에 구현된 시스템일 수 있거나, 단일 컴퓨터 칩 상에 통합된 SoC일 수 있거나, 또는 이들의 조합으로서 구현될 수 있다. 컴퓨터 시스템(800)은 코어(801), 그래픽 프로세서(802), 및 시스템 주변기기들(803)을 포함하는 여러 처리 코어들을 포함하는데, 이들 모두는 메모리 캐시 제어기(805)에 결합된다. 메모리 캐시 제어기(805)는 캐시 메모리(806) 및 메모리 제어기 회로(808)에 결합된다. 메모리 제어기 회로(808)는 메모리들(810a 내지 810c)에 결합된다. 집합적으로, 메모리 제어기(808) 및 메모리들(810a 내지 810c)은 메모리 시스템(820)을 형성하며, 이는, 일부 실시예들에서, 도 1의 메모리 시스템(100)에 대응한다.
예시된 실시예들에서, 코어(801)는 계산 동작들을 수행하는 범용 처리 코어를 나타낸다. 단일 처리 코어, 즉 코어(801)가 예시되어 있지만, 일부 실시예들에서, 코어(801)는 임의의 적합한 수의 처리 코어들을 포함하는 코어 컴플렉스에 대응할 수 있다. 다양한 실시예들에서, 코어(801)는 예를 들어 ARM™, PowerPC®, Blackfin®, 또는 x86 ISA들, 또는 이들의 조합과 같은, 임의의 적합한 명령어 세트 아키텍처(instruction set architecture, ISA)를 구현할 수 있다. 코어(801)는 이용될 명령어들 및 데이터를 페치하기 위한 메모리 트랜잭션들을 발행함으로써, 예를 들어 메모리들(810a 내지 810c)과 같은, 컴퓨터 시스템(800)의 외부에 위치된 메모리들에 저장된 데이터를 이용하고 명령어들을 실행할 수 있다. 메모리들(810a 내지 810c)로부터 페치된 데이터 및 명령어들은 캐시 메모리(806)에 캐시될 수 있다. 일부 실시예들에서, 코어(801)는 캐시 메모리(806)에 더하여 하나 이상의 캐시 메모리들을 포함할 수 있다.
그래픽 프로세서(802)는, 예시된 실시예에서, 디스플레이 스크린(도시되지 않음)으로 전송될 이미지들 또는 비디오를 처리하기 위한 회로부를 포함한다. 일부 실시예들에서, 그래픽 프로세서(802)에 의해 처리될 이미지들 및/또는 비디오들은 메모리들(810a 내지 810c)에 저장될 수 있다. 메모리들(810a 내지 810c)은 또한 이미지들을 생성하기 위해 그래픽 프로세서(802)에 의해 사용하기 위한 그래픽 처리 명령어들을 저장할 수 있다. 그래픽 프로세서(802)는 그래픽 데이터 및 명령어들을 검색하기 위한 메모리 트랜잭션들을 발행할 수 있는 처리 코어에 대응할 수 있다. 메모리들(810a 내지 810c)로부터 검색된 데이터는 캐시 메모리(806)에 캐시될 수 있다.
예시된 실시예에서, 시스템 주변기기들(803)은 임의의 수의 적합한 태스크들을 수행하기 위한 하나 이상의 회로 블록들을 포함한다. 예를 들어, 다양한 실시예들에서, 시스템 주변기기들(803)은 통신 주변기기들(예컨대, 범용 직렬 버스(USB), 이더넷(Ethernet)), 암호화 엔진들, 오디오 프로세서들, 직접 메모리 액세스 모듈들, 또는 메모리들(810a 내지 810c)로부터 데이터 또는 커맨드를 검색하기 위한 메모리 트랜잭션들을 생성할 수 있는 임의의 다른 주변기기 중 임의의 하나 이상을 포함할 수 있다. 시스템 주변기기들(803)은 메모리 캐시 제어기(805)에 메모리 트랜잭션들을 발행할 수 있는 다양한 기능성 회로들 내의 하나 이상의 처리 코어들을 포함할 수 있다.
예시된 실시예에서, 메모리 캐시 제어기(805)는 코어(801), 그래픽 프로세서(802), 및 시스템 주변기기들(803)에 의해 발행된 메모리 트랜잭션들을 관리하기 위한 회로들을 포함한다. 예시된 실시예에서, 메모리 캐시 제어기(805)는 메모리 트랜잭션들을 디코딩하고, 어드레스들을 변환하고, 어드레스된 위치에 대응하는 유효 콘텐츠가 현재 캐시 메모리(806)에 있는지 여부, 또는 이 데이터가 메모리들(810a 내지 810c)로부터 또는 다른 곳에서 페치되어야 하는지 여부를 결정한다. 유효 콘텐츠가 현재 캐시 메모리(806)에 캐시되지 않은 경우, 메모리 캐시 제어기(805)는 요청된 데이터를 페치하기 위해 트랜잭션을 메모리 제어기 회로(808)로 전송할 수 있다. 일부 실시예들에서, 컴퓨터 시스템(800)은 하나 초과의 캐시 메모리(806)를 포함할 수 있고, 따라서 각각의 캐시 메모리(806)에 대한 각자의 메모리 캐시 제어기(805)를 포함할 수 있다.
일부 실시예들에서, 메모리 제어기 회로(808)는 도 1의 메모리 캐시 제어기(110)에 대응할 수 있다. 메모리 제어기 회로(808)는 메모리들(810a 내지 810c) 각각으로부터의 메모리 트랜잭션들을 이행하기 위한 하나 이상의 메모리 제어기 회로들을 포함할 수 있다. 예를 들어, 하나의 메모리 제어기 회로가 메모리들(810a 내지 810c) 각각에 대해 포함될 수 있다. 예시된 실시예에서, 메모리 제어기 회로(808)는 메모리들(810a 내지 810c) 각각에 데이터를 판독 및 기록하는 데 사용되는 회로들을 포함한다. 메모리 제어기 회로(808)는, 트랜잭션의 어드레스에 대응하는 유효 콘텐츠가 현재 캐시 메모리(806)에 저장되어 있지 않은 경우 메모리 캐시 제어기(805)로부터 메모리 트랜잭션들을 수신한다.
메모리들(810a 내지 810c)은 컴퓨터 시스템(800)을 위한 데이터 및 명령어들을 저장하는 메모리 계층구조의 적어도 일부를 집합적으로 형성하는 저장 디바이스들이다. 보다 구체적으로, 메모리들(810a 내지 810c)은 비휘발성 메모리 디바이스보다 적은 액세스 시간들을 갖는 휘발성 메모리에 대응할 수 있다. 따라서, 메모리들(810a 내지 810c)은 컴퓨터 시스템(800)의 시스템 부트 후에 비휘발성 메모리로부터 판독된 하나 이상의 애플리케이션들 및 운영 체제에 대응하는 명령어들 및 데이터를 저장하는 데 사용될 수 있다. 메모리들(810a 내지 810c)은 메모리 디바이스들의 동적 랜덤 액세스 메모리(DRAM) 군 내의, 또는 메모리 디바이스들의 정적 랜덤 액세스 메모리(SRAM) 군 내의 메모리 디바이스들, 또는 일부 실시예들에서 이들의 조합을 나타낼 수 있다.
또한, 명료함을 개선하고 개시된 개념들을 설명하는 것을 돕기 위해, 도 8에 예시된 컴퓨터 시스템(800)의 도면이 단순화되었음에 또한 유의한다. 다른 실시예들에서, 상이한 및/또는 추가적인 회로 블록들 및 회로 블록들의 상이한 구성들이 가능하고 고려된다.
도 9는 일부 실시예들에 따른, 회로 설계 정보를 저장하는 비일시적 컴퓨터 판독가능 저장 매체의 예를 예시하는 블록도이다. 도 9의 실시예는 예를 들어 도 8의 컴퓨터 시스템(800)을 포함하는 IC와 같은 집적 회로들을 설계 및 제조하기 위한 프로세스에서 이용될 수 있다. 예시된 실시예에서, 반도체 제조 시스템(920)은 비일시적 컴퓨터 판독가능 저장 매체(910) 상에 저장된 설계 정보(915)를 처리하고 설계 정보(915)에 기초하여 집적 회로(930)를 제조하도록 구성된다.
비일시적 컴퓨터 판독가능 저장 매체(910)는 다양한 적절한 유형들의 메모리 디바이스들 또는 저장 디바이스들 중 임의의 것을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(910)는, 설치 매체, 예를 들어, CD-ROM, 플로피 디스크들, 또는 테이프 디바이스; DRAM, DDR RAM, SRAM, EDO RAM, 램버스(Rambus) RAM 등과 같은 컴퓨터 시스템 메모리 또는 랜덤-액세스 메모리; 플래시, 자기 매체, 예를 들어, 하드 드라이브, 또는 광학 저장소와 같은 비휘발성 메모리; 레지스터들, 또는 다른 유사한 유형들의 메모리 요소들 등일 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(910)는 또한 다른 유형들의 비일시적 메모리 또는 이들의 조합들을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(910)는 상이한 위치들, 예를 들어, 네트워크를 통해 연결되는 상이한 컴퓨터 시스템들에 상주할 수 있는 2개 이상의 메모리 매체들을 포함할 수 있다.
설계 정보(915)는, 제한 없이, VHDL, Verilog, SystemC, Syste㎷erilog, RHDL, M, MyHDL 등과 같은 하드웨어 설명 언어들을 포함하는 다양한 적절한 컴퓨터 언어들 중 임의의 것을 사용하여 특정될 수 있다. 설계 정보(915)는 집적 회로(930)의 적어도 일부분을 제조하기 위해 반도체 제조 시스템(920)에 의해 사용가능할 수 있다. 설계 정보(915)의 포맷은 예를 들어 반도체 제조 시스템(920)과 같은 적어도 하나의 반도체 제조 시스템에 의해 인식될 수 있다. 일부 실시예들에서, 설계 정보(915)는 셀 라이브러리의 요소들뿐만 아니라 그들의 연결성을 특정하는 넷리스트를 포함할 수 있다. 집적 회로(930)에 포함된 회로들의 논리 합성 동안 사용되는 하나 이상의 셀 라이브러리들이 또한 설계 정보(915)에 포함될 수 있다. 그러한 셀 라이브러리들은 셀 라이브러리에 포함된 셀들의 디바이스 또는 트랜지스터 레벨 넷리스트, 마스크 설계 데이터, 특성화 데이터 등을 나타내는 정보를 포함할 수 있다.
다양한 실시예들에서, 집적 회로(930)는 메모리들, 아날로그 또는 혼합-신호 회로들 등과 같은 하나 이상의 맞춤형 매크로셀들을 포함할 수 있다. 그러한 경우들에서, 설계 정보(915)는 포함된 매크로셀들에 관련된 정보를 포함할 수 있다. 그러한 정보는, 제한 없이, 개략적 캡처 데이터베이스, 마스크 설계 데이터, 거동 모델들, 및 디바이스 또는 트랜지스터 레벨 넷리스트들을 포함할 수 있다. 본 명세서에 사용되는 바와 같이, 마스크 설계 데이터는 그래픽 데이터 시스템(gdsii), 또는 임의의 다른 적합한 포맷에 따라 포맷팅될 수 있다.
반도체 제조 시스템(920)은 집적 회로들을 제조하도록 구성된 다양한 적절한 요소들 중 임의의 것을 포함할 수 있다. 이는, 예를 들어 반도체 재료들을 (예를 들어, 마스킹을 포함할 수 있는 웨이퍼 상에) 침착시키는 것, 재료들을 제거하는 것, 침착된 재료들의 형상을 변경하는 것, 재료들을 수정하는 것(예를 들어, 재료들을 도핑하거나 또는 자외선 처리를 사용하여 유전 상수들을 수정함으로써) 등을 위한 요소들을 포함할 수 있다. 반도체 제조 시스템(920)은 또한 정확한 동작을 위해 제조된 회로들의 다양한 테스트를 수행하도록 구성될 수 있다.
다양한 실시예들에서, 집적 회로(930)는 설계 정보(915)에 의해 특정된 회로 설계에 따라 동작하도록 구성되며, 이는 본 명세서에 기술된 기능 중 임의의 것을 수행하는 것을 포함할 수 있다. 예를 들어, 집적 회로(930)는 본 명세서에 도시되거나 설명된 다양한 요소들 중 임의의 것을 포함할 수 있다. 추가로, 집적 회로(930)는 다른 컴포넌트들과 공조하여 본 명세서에 설명된 다양한 기능들을 수행하도록 구성될 수 있다. 추가로, 본 명세서에 설명된 기능은 다수의 연결된 집적 회로들에 의해 수행될 수 있다.
본 명세서에 사용되는 바와 같이, "~하도록 구성된 회로의 설계를 특정하는 설계 정보"라는 형태의 문구는 요소가 충족되기 위해 해당 회로가 제조되어야 한다는 것을 의미하지 않는다. 오히려, 이 문구는 설계 정보가, 제조 시에, 표시된 액션들을 수행하도록 구성될 것이거나 특정된 컴포넌트들을 포함할 회로를 설명한다는 것을 표시한다.
특정 실시예들이 위에서 설명되었지만, 이들 실시예들은 단일 실시예만이 특정 특징부에 대해 설명된 경우에도 본 개시내용의 범주를 제한하도록 의도되지 않는다. 본 개시내용에 제공된 특징부들의 예들은 달리 언급되지 않는 한 제한적인 것이 아니라 예시적인 것으로 의도된다. 상기의 설명은 본 개시내용의 이익을 취하는 당업자에게 자명한 바와 같이 그러한 대안물들, 수정물들, 및 등가물들을 포괄하도록 의도된다.
본 개시내용의 범주는, 본 명세서에 다뤄진 문제점들 중 임의의 것 또는 전부를 완화시키든 아니든, (명시적으로 또는 묵시적으로) 본 명세서에 개시된 임의의 특징부 또는 특징부들의 조합, 또는 그의 임의의 일반화를 포함한다. 따라서, 특징부들의 임의의 그러한 조합에 대해 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 심사 동안에 새로운 청구범위가 작성될 수 있다. 구체적으로, 첨부된 청구범위를 참조하면, 종속항들로부터의 특징부들은 독립항들의 특징부들과 조합될 수 있으며, 각자의 독립항들로부터의 특징부들은 첨부된 청구범위에 열거된 특정 조합들로 조합될 수 있을 뿐 아니라 임의의 적절한 방식으로 조합될 수 있다.

Claims (20)

  1. 장치로서,
    메모리 회로; 및
    기록 요청 큐(write request queue)를 포함하는 메모리 제어기 회로를 포함하며, 상기 메모리 제어기 회로는,
    상기 메모리 회로에 액세스하기 위한 메모리 요청을 수신하고, 상기 메모리 요청이 판독 요청 또는 기록 요청을 포함하는지 여부를 결정하고;
    실행을 위해 수신된 판독 요청을 스케줄링하고;
    수신된 기록 요청을 상기 기록 요청 큐에 저장하고;
    특정된 메모리 액세스 효율을 달성하는 것에 기초하여 그리고 상기 기록 요청 큐에 저장된 기록 요청들의 수에 기초하여 스케줄링된 메모리 요청들을 재순서화하도록(reorder) 구성되고,
    메모리 액세스 효율은 메모리 요청들을 처리하는 데 사용된 활성 클록 사이클들의 수에 대한 총 클록 사이클들의 수의 비교를 사용하여 결정되는, 장치.
  2. 제1항에 있어서, 상기 메모리 제어기 회로는 판독 턴(read turn) 및 기록 턴(write turn)의 완료에 응답하여 현재 메모리 액세스 효율을 결정하도록 추가로 구성되고, 판독 턴은 다수의 판독 요청들의 실행에 대응하고, 기록 턴은 다수의 기록 요청들의 실행에 대응하며, 상기 현재 메모리 액세스 효율은 상기 완료된 판독 및 기록 턴들 동안의 총 클록 사이클들에 대한 활성 클록 사이클들의 비에 기초하여 결정되는, 장치.
  3. 제2항에 있어서, 상기 메모리 제어기 회로는 상기 특정된 메모리 액세스 효율에 대한 상기 현재 메모리 액세스 효율의 비교에 기초하여 후속 판독 및 기록 턴들에서 실행될 메모리 요청들의 수를 수정하도록 추가로 구성되는, 장치.
  4. 제2항에 있어서, 상기 메모리 제어기 회로는 적어도 하나의 부분 기록 메모리 요청을 판독 턴과 기록 턴 사이에서 실행되게 스케줄링하도록 추가로 구성되는, 장치.
  5. 제1항에 있어서, 상기 메모리 제어기 회로는 상기 기록 요청 큐 내의 기록 요청들의 수가 요청들의 임계 수를 충족한다는 결정에 응답하여 상기 기록 요청 큐에 포함된 기록 요청들의 서브세트를 스케줄링하도록 추가로 구성되는, 장치.
  6. 제5항에 있어서, 상기 메모리 제어기 회로는 상기 기록 요청들의 서브세트를 다수의 판독 요청들의 실행에 후속하여 실행되도록 스케줄링함으로써 기록 요청들보다 판독 요청들을 우선순위화하도록 추가로 구성되는, 장치.
  7. 제1항에 있어서, 상기 메모리 제어기 회로는 특정 기록 요청에 의해 저장될 데이터의 양이 상이한 기록 요청에 의해 저장될 데이터의 양보다 크다는 결정에 응답하여 상기 상이한 기록 요청보다 상기 특정 기록 요청을 우선순위화하도록 추가로 구성되는, 장치.
  8. 방법으로서,
    메모리 제어기에 의해, 메모리 회로에 액세스하기 위한 메모리 요청을 수신하는 단계 - 상기 메모리 제어기는 기록 요청 큐 및 스케줄링된 요청 버퍼를 포함함 -;
    상기 메모리 제어기에 의해, 상기 메모리 요청이 판독 요청 또는 기록 요청인지 여부에 따라 상기 메모리 요청을 처리하는 단계;
    다수의 판독 요청들 및 다수의 기록 요청들의 실행 동안 통신 버스의 활동에 기초하여 효율 값을 결정하는 단계 - 상기 통신 버스는 상기 메모리 제어기와 적어도 하나의 메모리 회로 사이에 결합되고, 상기 효율 값은 버스 클록 사이클들의 총 수에 대한, 메모리 요청들을 처리하는 데 사용된 활성 버스 클록 사이클들의 수의 비를 사용하여 결정됨 -;
    상기 효율 값에 기초하여 그리고 상기 기록 요청 큐에 저장된 기록 요청들의 수에 기초하여 상기 메모리 요청을 스케줄링하는 단계; 및
    상기 메모리 회로에 의해, 스케줄링된 판독 요청들 및 기록 요청들을 실행하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 처리하는 단계는, 상기 메모리 요청이 기록 요청인 것에 응답하여 상기 기록 요청 큐에 추가하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 기록 요청 큐 내의 기록 요청들의 수가 임계 수보다 크다고 결정하는 것에 응답하여 상기 기록 요청 큐로부터의 복수의 기록 요청들을, 실행을 위해, 스케줄링하는 단계를 추가로 포함하는, 방법.
  11. 제8항에 있어서, 상기 처리하는 단계는 상기 메모리 요청이 판독 요청인 것에 응답하여 실행을 위해 상기 메모리 요청을 스케줄링하는 단계를 포함하는, 방법.
  12. 제8항에 있어서,
    스케줄링된 수의 연속적인 판독 요청들을 실행함으로써 판독 턴을 완료하는 단계;
    스케줄링된 수의 연속적인 기록 요청들을 실행함으로써 기록 턴을 완료하는 단계; 및
    판독 턴 및 기록 턴을 완료하는 것에 응답하여 상기 효율 값을 결정하는 단계를 추가로 포함하는, 방법.
  13. 제12항에 있어서, 상기 결정된 효율 값에 기초하여 후속 판독 턴 및 기록 턴에서 실행될 메모리 요청들의 수를 조정하는 단계를 추가로 포함하는, 방법.
  14. 제8항에 있어서, 각각의 기록 요청에 의해 상기 메모리 회로에 저장될 데이터의 양에 기초하여 기록 요청들을 우선순위화하는 단계를 추가로 포함하는, 방법.
  15. 장치로서,
    적어도 하나의 프로세서에 결합된 시스템 인터페이스;
    실행 전에 하나 이상의 메모리 요청들을 저장하도록 구성된 명령어 큐;
    기록 요청 큐; 및
    중재 회로를 포함하며, 상기 중재 회로는,
    상기 시스템 인터페이스로부터 메모리 요청을 수신하고, 상기 메모리 요청이 판독 요청 또는 기록 요청을 포함하는지 여부를 결정하고;
    수신된 판독 요청을 상기 명령어 큐 내로 배치하고;
    수신된 기록 요청을 상기 기록 요청 큐 내로 배치하고;
    특정된 레벨의 메모리 액세스 효율을 달성하는 것에 기초하여 상기 명령어 큐 내에 배치된 메모리 요청들을 재순서화하도록 구성되고, 메모리 액세스 효율의 레벨은 버스 클록 사이클들의 총 수에 대한, 메모리 요청들을 처리하는 데 사용되는 활성 버스 클록 사이클들의 수의 비교를 사용하여 결정되는, 장치.
  16. 제15항에 있어서, 상기 중재 회로는 판독 턴 및 기록 턴의 완료에 응답하여 메모리 액세스 효율의 현재 레벨을 결정하도록 추가로 구성되고, 판독 턴은 다수의 판독 요청들의 실행에 대응하고, 기록 턴은 다수의 기록 요청들의 실행에 대응하며, 상기 현재 레벨은 메모리 요청들을 처리하는 데 사용된 상기 완료된 판독 및 기록 턴들 동안 발생하는 상기 버스 클록 사이클들의 총 수의 백분율에 기초하여 결정되는, 장치.
  17. 제16항에 있어서, 상기 중재 회로는 상기 특정된 레벨에 대한 상기 현재 레벨의 비교에 기초하여 후속 판독 및 기록 턴들에서 실행될 메모리 요청들의 수를 조정하도록 추가로 구성되는, 장치.
  18. 제16항에 있어서, 상기 중재 회로는 판독 턴과 기록 턴 사이에서 실행될 적어도 하나의 부분 기록 메모리 요청을, 상기 명령어 큐 내에, 배치하도록 추가로 구성되는, 장치.
  19. 제15항에 있어서, 상기 중재 회로는, 상기 기록 요청 큐 내의 기록 요청들의 수가 요청들의 임계 수를 충족한다는 결정에 응답하여, 상기 기록 요청 큐에 포함된 기록 요청들의 서브세트를 상기 명령어 큐 내에 배치하도록 추가로 구성되고, 스케줄링된 판독 요청들은 상기 기록 요청들의 서브세트보다 실행을 위해 우선순위화되는, 장치.
  20. 제15항에 있어서, 상기 중재 회로는 특정 기록 요청에 의해 저장될 데이터의 양이 상이한 기록 요청에 의해 저장될 데이터의 양보다 크다는 결정에 응답하여 상기 상이한 기록 요청보다 상기 특정 기록 요청을 우선순위화하도록 추가로 구성되는, 장치.
KR1020217005114A 2018-08-24 2019-08-23 액세스 효율에 기초한 메모리 요청의 순서화 KR102519019B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/112,624 US10678478B2 (en) 2018-08-24 2018-08-24 Ordering memory requests based on access efficiency
US16/112,624 2018-08-24
PCT/US2019/047807 WO2020041649A1 (en) 2018-08-24 2019-08-23 Ordering memory requests based on access efficiency

Publications (2)

Publication Number Publication Date
KR20210032504A KR20210032504A (ko) 2021-03-24
KR102519019B1 true KR102519019B1 (ko) 2023-04-06

Family

ID=67876090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217005114A KR102519019B1 (ko) 2018-08-24 2019-08-23 액세스 효율에 기초한 메모리 요청의 순서화

Country Status (5)

Country Link
US (2) US10678478B2 (ko)
EP (1) EP3841481A1 (ko)
KR (1) KR102519019B1 (ko)
CN (1) CN112639752A (ko)
WO (1) WO2020041649A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614889B2 (en) * 2018-11-29 2023-03-28 Advanced Micro Devices, Inc. Aggregating commands in a stream based on cache line addresses
KR20220110295A (ko) 2019-12-26 2022-08-05 마이크론 테크놀로지, 인크. 적층 메모리 시스템을 위한 진리표 확장
WO2021133687A1 (en) 2019-12-26 2021-07-01 Micron Technology, Inc. Techniques for non-deterministic operation of a stacked memory system
CN115427925A (zh) * 2019-12-26 2022-12-02 美光科技公司 用于堆叠存储器系统的主机技术
CN113778317A (zh) * 2020-06-10 2021-12-10 慧荣科技股份有限公司 计算机可读取存储介质、调度主机命令的方法及装置
KR102496994B1 (ko) * 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102529761B1 (ko) 2021-03-18 2023-05-09 에스케이하이닉스 주식회사 PCIe 디바이스 및 그 동작 방법
US11977769B2 (en) * 2022-01-27 2024-05-07 Micron Technology, Inc. Control of back pressure based on a total number of buffered read and write entries
US20230266893A1 (en) * 2022-02-21 2023-08-24 Samsung Electronics Co., Ltd. Memory system including memory device and memory controller, and operating method thereof
US20240036736A1 (en) * 2022-07-29 2024-02-01 Texas Instruments Incorporated Memory controller with command reordering
CN115840542B (zh) * 2023-02-24 2023-06-02 浪潮电子信息产业股份有限公司 一种硬盘的请求处理方法、系统、存储介质和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050172084A1 (en) 2004-01-30 2005-08-04 Jeddeloh Joseph M. Buffer control system and method for a memory system having memory request buffers
US20080162799A1 (en) 2006-12-28 2008-07-03 Bryan Spry Mechanism for write optimization to a memory device

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60026908D1 (de) 2000-07-05 2006-05-18 St Microelectronics Srl Arbitrierungsverfahren und Schaltungsarchitektur dazu
GB2396031B (en) * 2002-12-05 2005-10-26 Imagination Tech Ltd A SIMD processor with multi-port memory unit
US7579683B1 (en) * 2004-06-29 2009-08-25 National Semiconductor Corporation Memory interface optimized for stacked configurations
CN101213533A (zh) * 2005-05-04 2008-07-02 Nxp股份有限公司 存储器控制器、控制存储器存取的方法以及包括存储器控制器的系统
US7603503B1 (en) * 2006-09-18 2009-10-13 Nvidia Corporation Efficiency based arbiter
US9069489B1 (en) * 2010-03-29 2015-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic random access memory front end
US8812889B2 (en) 2010-05-05 2014-08-19 Broadcom Corporation Memory power manager
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US8510521B2 (en) * 2010-09-16 2013-08-13 Apple Inc. Reordering in the memory controller
US9141561B2 (en) * 2012-10-25 2015-09-22 Texas Instruments Incorporated Master circuits having dynamic priority leads coupled with memory controller
US9569119B2 (en) * 2014-09-04 2017-02-14 National Instruments Corporation Self-addressing memory
KR102515924B1 (ko) 2016-04-19 2023-03-30 에스케이하이닉스 주식회사 미디어 컨트롤러 및 이를 포함한 데이터 저장 장치
KR102238652B1 (ko) * 2014-11-12 2021-04-09 삼성전자주식회사 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
US20170075812A1 (en) 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
KR20180069960A (ko) * 2016-12-15 2018-06-26 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US10740042B2 (en) * 2016-12-30 2020-08-11 Western Digital Technologies, Inc. Scheduling access commands for data storage devices
US10331582B2 (en) * 2017-02-13 2019-06-25 Intel Corporation Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time
KR102605609B1 (ko) * 2018-04-02 2023-11-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050172084A1 (en) 2004-01-30 2005-08-04 Jeddeloh Joseph M. Buffer control system and method for a memory system having memory request buffers
US20080162799A1 (en) 2006-12-28 2008-07-03 Bryan Spry Mechanism for write optimization to a memory device

Also Published As

Publication number Publication date
US11403037B2 (en) 2022-08-02
KR20210032504A (ko) 2021-03-24
US20200301615A1 (en) 2020-09-24
CN112639752A (zh) 2021-04-09
WO2020041649A1 (en) 2020-02-27
EP3841481A1 (en) 2021-06-30
US10678478B2 (en) 2020-06-09
US20200065028A1 (en) 2020-02-27

Similar Documents

Publication Publication Date Title
KR102519019B1 (ko) 액세스 효율에 기초한 메모리 요청의 순서화
CN109564556B (zh) 具有条纹和读取/写入事务管理的存储器控制器仲裁器
US9639280B2 (en) Ordering memory commands in a computer system
US8560796B2 (en) Scheduling memory access requests using predicted memory timing and state information
CN107924375B (zh) 用于高速存储器接口的命令仲裁
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
CN109690508B (zh) 带虚拟控制器模式的存储器控制器
US9268721B2 (en) Holding by a memory controller multiple central processing unit memory access requests, and performing the multiple central processing unit memory requests in one transfer cycle
US11100013B2 (en) Scheduling of read and write memory access requests
US10572389B2 (en) Cache control aware memory controller
US9489321B2 (en) Scheduling memory accesses using an efficient row burst value
US8572322B2 (en) Asynchronously scheduling memory access requests
US7127573B1 (en) Memory controller providing multiple power modes for accessing memory devices by reordering memory transactions
US10817219B2 (en) Memory access scheduling using a linked list
CN114902198B (zh) 用于异构存储器系统的信令
KR20230017865A (ko) Dram을 위한 리프레시 관리
CN116324744A (zh) 具有多个命令子队列和对应的仲裁器的存储器控制器
CN117083588A (zh) 仲裁期间写入存储体组掩码
US20230102680A1 (en) Stacked command queue
KR20240022655A (ko) 하이브리드 dram/영구 메모리 채널 중재 기능을 갖는 메모리 제어기
US20240095194A1 (en) Read Arbiter Circuit with Dual Memory Rank Support
US20240094917A1 (en) Write Arbiter Circuit with Per-Rank Allocation Override Mode
WO2013083194A1 (en) Memory controller and method for controlling accesses to a memory

Legal Events

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