KR20200096971A - 캐시 제어 인지 메모리 컨트롤러 - Google Patents

캐시 제어 인지 메모리 컨트롤러 Download PDF

Info

Publication number
KR20200096971A
KR20200096971A KR1020207020210A KR20207020210A KR20200096971A KR 20200096971 A KR20200096971 A KR 20200096971A KR 1020207020210 A KR1020207020210 A KR 1020207020210A KR 20207020210 A KR20207020210 A KR 20207020210A KR 20200096971 A KR20200096971 A KR 20200096971A
Authority
KR
South Korea
Prior art keywords
access request
tag
memory
cache
data
Prior art date
Application number
KR1020207020210A
Other languages
English (en)
Other versions
KR102402630B1 (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 KR20200096971A publication Critical patent/KR20200096971A/ko
Application granted granted Critical
Publication of KR102402630B1 publication Critical patent/KR102402630B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • G06F2212/3042In main memory subsystem being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Abstract

컴퓨팅 시스템에 대한 효율적인 메모리 액세스들을 수행하기 위한 시스템들, 장치들 및 방법들이 개시된다. 외부 시스템 메모리는 라스트 레벨 캐시로 사용되며, 다양한 유형의 동적 랜덤 액세스 메모리(DRAM) 중 하나를 포함한다. 메모리 컨트롤러는 동일한 단일 수신된 메모리 요청에 기초하여 태그 요청 및 별도의 데이터 요청을 생성한다. 태그 요청을 전송하는 것은 데이터 요청을 전송하는 것보다 우선된다. 부분 태그 비교는 태그 요청의 처리 동안 수행된다. 부분 태그 비교에 대해 태그 미스가 검출되는 경우, 데이터 요청이 취소되고 메모리 요청이 메인 메모리로 전송된다. 부분 태그 비교에 대해 하나 이상의 태그 히트들이 검출되는 경우, 데이터 요청 처리는 전체 태그 비교 결과에 따라 달라진다.

Description

캐시 제어 인지 메모리 컨트롤러
반도체 제조 공정이 발전하고 온-다이 기하학적 치수들이 줄어드는 둘 다에 따라, 반도체 칩들은 더 많은 기능 및 성능을 제공한다. 그러나, 잠재적 이점을 제한할 수 있는 처리 및 집적 회로 설계에 있어서의 현대 기술들에서 설계 이슈들이 여전히 발생한다. 한 가지 이슈는 2차원 평면 레이아웃 칩들의 연속 생성 시 인터커넥트 지연들이 단위 길이당 계속 증가한다는 것이다. 또한, 개별 칩들 간 높은 전기 임피던스는 레이턴시를 증가시킨다. 추가로, 오프-칩을 다른 다이로 이동시키는 신호들은 이러한 더 긴 신호 루트들에서 기생 커패시턴스의 증가로 인해 이러한 신호들에 대한 전력 소모를 상당히(예를 들어, 10 내지 100 배) 증가시킬 수 있다. 따라서, 오프-칩 동적 랜덤 액세스 메모리(DRAM)와 같은, 시스템 메모리에 대한 메모리 액세스 레이턴시들이 주목할 만하다.
다른 설계 이슈는 계산 시간이 일반적으로 메모리 대역폭에 의해 결정된다는 점에서 많은 데이터에 액세스하는 대부분의 소프트웨어 어플리케이션들이 일반적으로 메모리 바운딩된다는 점이다. 오프-칩 동적 랜덤 액세스 메모리(DRAM)에 대한 메모리 액세스 레이턴시는 수백에서 수천 클록 사이클 이상일 수 있으며, 프로세서 설계에서 코어 수가 증가함에 따라 메모리 대역폭 문제가 부각되었다.
상기의 관점에서, 컴퓨팅 시스템에 대한 효율적인 메모리 액세스들을 수행하기 위한 효율적인 방법들 및 시스템들이 요구된다.
본원에 설명된 방법들 및 메커니즘들의 장점들은 첨부 도면들과 함께 다음의 설명을 참조함으로써 더 잘 이해될 수 있다:
도 1은 컴퓨팅 시스템의 일 실시예의 블록도이다.
도 2는 메모리 컨트롤러의 일 실시예의 블록도이다.
도 3은 메모리 액세스 요청을 시스템 메모리로 전송하기 위한 방법의 일 실시예의 흐름도이다.
도 4는 시스템 메모리에서 캐시 저장 배열에 대한 태그 액세스 요청을 처리하기 위한 방법의 일 실시예의 흐름도이다.
도 5는 시스템 메모리에서 캐시 저장 배열에 대한 태그 액세스 요청으로부터 분리된 데이터 액세스 요청을 처리하기 위한 방법의 다른 실시예의 흐름도이다.
본 발명은 다양한 변형들 및 대안적인 형태들이 가능하지만, 특정 실시예들이 도면들에 예로서 도시되며 본원에 상세하게 설명된다. 도면들 및 그에 대한 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니라, 반대로 본 발명은 첨부된 청구 범위에 의해 정의된 바와 같은 본 발명의 범위 내에 속하는 모든 수정들, 균등물들 및 대안들을 포함하고자 한다는 것을 이해해야 한다.
다음의 설명에서, 많은 특정 세부사항들이 본원에 제시된 방법들 및 메커니즘들의 완전한 이해를 제공하기 위해 제시된다. 그러나, 본 기술분야에서 통상의 기술을 가진 자는 다양한 실시예들이 이러한 특정 세부 사항들 없이 실시될 수 있음을 인식해야 한다. 일부 예들에서, 주지의 구조들, 컴포넌트들, 신호들, 컴퓨터 프로그램 인스트럭션들 및 기술들은 본원에 설명된 접근 방식들을 모호하게 하지 않도록 상세하게 설명되지 않았다. 설명의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 비례하여 도시된 것은 아님이 이해될 것이다. 예를 들어, 요소들 중 일부의 치수들은 다른 요소들에 비해 과장될 수 있다.
컴퓨팅 시스템에 대한 효율적인 메모리 액세스들을 수행하기 위한 다양한 시스템들, 장치들, 방법들 및 컴퓨터 판독 가능 매체들이 개시된다. 일 실시예에서, 컴퓨팅 시스템은 하나 이상의 컴퓨팅 리소스들 및 외부 시스템 메모리를 포함한다. 컴퓨팅 리소스들의 예들은 범용 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 가속 처리 유닛(APU) 등을 포함한다. 컴퓨팅 리소스들은 메모리 액세스 요청들을 생성한다. 다양한 실시예들에서, 소정 컴퓨팅 리소스는 캐시 메모리 서브시스템을 포함한다. 소정의 컴퓨팅 리소스가 캐시 메모리 서브시스템 내에서 메모리 액세스 요청 미스를 결정하는 경우, 소정의 컴퓨팅 리소스는 메모리 액세스 요청을 소정의 메모리 컨트롤러로 전송한다.
소정의 메모리 컨트롤러는 메모리 액세스 요청의 타겟 어드레스와 관련된 메모리 장치에 결합된다. 컴퓨팅 시스템이 다수의 메모리 장치들을 포함하는 경우, 어드레스 공간들은 운영 체제에 의해 다수의 메모리 장치들 사이에 분산된다. 메모리 컨트롤러는 컴퓨팅 리소스들의 요청 어드레스들과 메모리 장치(들)의 저장 위치들을 가리키는 어드레스들 사이의 매핑을 지원한다. 일부 실시예들에서, 메모리 컨트롤러는 단일 메모리 장치에 연결된다. 다른 실시예들에서, 메모리 컨트롤러는 다수의 메모리 장치들에 연결된다. 다양한 실시예들에서, 메모리 컨트롤러는 메모리 액세스 요청들을 저장하기 위한 하나 이상의 큐(queue)들을 포함한다. 실시예에서, 메모리 컨트롤러는 판독 요청들을 저장하기 위한 판독 큐 및 기록 요청들을 저장하기 위한 개별 기록 큐를 포함한다. 다른 실시예들에서, 메모리 컨트롤러는 메모리 판독 요청들 및 메모리 기록 요청들 둘 다를 저장하기 위한 통합 큐를 포함한다.
또 다른 실시예들에서, 메모리 컨트롤러는 수신된 메모리 액세스 요청들을 저장하기 위한 하나 이상의 큐(queue)들 및 하나 이상의 큐들로부터 선택된 스케줄링된 메모리 액세스 요청들을 저장하기 위한 별도의 큐를 포함한다. 따라서, 메모리 컨트롤러는 우선 순위들 및 타겟 어드레스들에 기초하여 메모리 장치로의 메모리 액세스 요청들의 발행을 비순차적으로(out-of-order) 지원한다. 일부 실시예들에서, 메모리 컨트롤러는 또한 적어도 우선 순위들에 기초한 컴퓨팅 리소스들에 대한 응답들의 발행을 비순차적으로 지원한다.
외부 시스템 메모리는 동적 랜덤 액세스 메모리(DRAM)의 다양한 유형들 중 하나로 구현된다. DRAM은 마이크로프로세서 패키지 내에 적어도 기가 바이트의 통합 메모리를 제공한다. 다양한 실시예들에서, 비교적 대용량의 행-기반 메모리 저장 장치는 더 많은 DRAM 및/또는 오프-칩 디스크 메모리 또는 솔리드 스테이트 메모리로 구현된 시스템 메모리에 액세스하기 전에 라스트 레벨 캐시(Last-Level Cache; LLC)로 사용된다. 다양한 실시예들에서, DRAM에 결합된 메모리 컨트롤러는 수신된 단일 메모리 액세스 요청을 두 개의 개별 메모리 액세스 요청들로 분할한다. 실시예에서, 메모리 컨트롤러는 수신된 메모리 액세스 요청에 기초하여 태그 액세스 요청을 생성하고, 수신된 메모리 액세스 요청에 기초하여 태그 액세스 요청과 다른 데이터 액세스 요청을 생성한다.
일부 실시예들에서, 메모리 컨트롤러는 태그 액세스 요청 및 데이터 액세스 요청 각각이 동일한 수신된 메모리 액세스 요청으로부터 생성된다는 것을 명시하는 표시를 저장한다. 실시예에서, 표시는 태그 액세스 요청 및 데이터 액세스 요청 각각 내에 저장된다. 일부 실시예들에서, 판독 큐 및 기록 큐 각각은 태그 큐 및 개별 데이터 큐로 분할된다. 일 실시예에서, 표시는 프리 리스트(free list)로부터 생성된 식별자, 스레드 또는 프로세스 식별자, 컴퓨팅 소스 식별자, 타겟 어드레스, 수명(age) 또는 타임스탬프 등 중에서 하나 이상으로부터 생성된 고유 식별자이다.
다양한 실시예들에서, 메모리 컨트롤러는 태그 액세스 요청을 처리함으로써 생성된 정보가 이용 가능할 때까지 데이터 액세스 요청을 전송하는 것을 방지한다. 따라서, 태그 액세스 요청은 데이터 액세스 요청이 전혀 전송되지 않는 경우, 데이터 액세스 요청 전에 메모리 장치로 전송된다. 메모리 장치 내에서 다수의 행들 중 소정 행이 판독된다. 소정 행은 태그 액세스 요청 내의 타겟 어드레스로 지적된다. 예를 들어, 타겟 어드레스 내의 페이지 인덱스가 소정 행을 식별하는 데 사용된다. 실시예에서, 소정 행은 소정 행의 일부 내에 하나 이상의 태그들을 저장한다.
메모리 컨트롤러는 소정 행에 저장된 하나 이상의 태그들의 일부만을 태그 액세스 요청의 타겟 어드레스 내 태그의 일부와만 비교한다. 다양한 실시예들에서, 부분 태그 비교는 전체(full) 태그 비교보다 상당히 짧은 레이턴시를 갖는다. 매칭되는 것들이 검출되지 않는 경우, 태그 미스가 발생하며 메모리 컨트롤러는 데이터 액세스 요청을 메모리 장치로 보내는 것을 취소한다. 메모리 컨트롤러는 데이터 액세스 요청을 저장하는 큐 엔트리를 무효화시키거나, 아니면 할당을 해제한다. 따라서, 요청된 데이터가 DRAM에서 구현된 라스트 레벨 캐시에 있지 않다는 것이 비교적 빨리 알려져 있다. 예를 들어, 이는 전체 태그 비교의 상당히 긴 레이턴시 이후에 알려진 것과는 대조적으로, 부분 태그 비교의 상당히 짧은 레이턴시 이후로 알려져 있다.
태그 미스의 경우, 메모리 컨트롤러는 또한 단일 메모리 액세스 요청을 오프-칩 시스템 메모리 및/또는 디스크 메모리 또는 솔리드 스테이트 메모리와 같은 메인 메모리로 전송한다. 실시예에서, 메모리 컨트롤러는 단일 메모리 액세스 요청의 사본을 큐에서 유지한다. 다른 실시예들에서, 메모리 컨트롤러는 태그 액세스 요청 및 개별 데이터 액세스 요청 중 하나 이상으로부터 단일 메모리 액세스 요청을 재생성한다.
실시예에서, 메모리 컨트롤러가 부분 태그 비교에 기초하여 하나 이상의 태그 히트들이 발생한다고 결정할 때, 메모리 컨트롤러는 소정 행의 하나 이상의 태그들 전체를 태그 액세스 요청의 태그 어드레스 내 태그 전체와 비교한다. 다양한 실시예들에서, 전체 태그 비교는 부분 태그 비교보다 상당히 긴 레이턴시를 갖는다. 전체 태그 비교로 인해 태그 미스가 발생되는 경우, 메모리 컨트롤러는 부분 태그 비교로부터 결정된 태그 미스에 사용된 상기 단계들을 수행한다. 전체 태그 비교로 인해 태그 히트가 발생되는 경우, 메모리 컨트롤러는 데이터 액세스 요청을 메모리 장치로 전송한다.
메모리 컨트롤러는 데이터 액세스 요청의 액세스 유형에 기초하여 소정 행에서 데이터의 판독 또는 기록 액세스를 수행한다. 실시예에서, 메모리 컨트롤러는 소정 행 내에서 데이터의 위치를 나타내는 소정 행 내에의 태그 히트에 대응되는 태그 위치에 기초하여 액세스할 소정 행 내의 데이터를 식별한다.
도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시예의 일반화된 블록도가 도시된다. 도시된 바와 같이, 컴퓨팅 시스템(100)은 메모리 컨트롤러(130)와 컴퓨팅 리소스들(110) 각각 사이에 통신 패브릭(120)을 포함한다. 예시된 실시예에서, 컴퓨팅 리소스들은 중앙 처리 유닛(CPU)(112), 그래픽 처리 유닛(GPU)(114) 및 허브(116)를 포함한다. 허브(116)는 멀티미디어 엔진(118)과의 통신에 사용된다. 단일 메모리 컨트롤러(130)가 도시되어 있지만, 다른 실시예들에서, 다른 개수의 메모리 컨트롤러들이 컴퓨팅 시스템(100)에 사용된다. 메모리 컨트롤러(130)는 통신 패브릭(120)을 통해 컴퓨팅 리소스들(110)로부터 메모리 액세스 요청들을 수신하고, 메모리 액세스 요청들을 동적 랜덤 액세스 메모리(DRAM)(170)로 구현되는 오프-칩 메인 메모리(162) 및 시스템 메모리 중 하나 이상으로 전송한다. 메모리 컨트롤러(130)는 또한 DRAM(170) 및 메인 메모리(162)로부터 응답들을 수신하고, 응답들을 컴퓨팅 리소스들(110) 내의 요청의 대응되는 소스로 전송한다.
일부 실시예들에서, 컴퓨팅 시스템(100)의 컴포넌트들은 시스템 온 칩(SOC)와 같은 집적 회로 상의 개별 다이들이다. 다른 실시예들에서, 컴포넌트들은 시스템 인 패키지(SiP) 또는 다중 칩 모듈(MCM)에서의 개별 다이들이다. 일 실시예에서, 컴퓨팅 시스템(100)은 모바일 컴퓨터 내의 독립형 시스템, 스마트 폰, 스마트 워치 또는 태블릿; 데스크탑; 서버; 등이다. CPU(112), GPU(114) 및 멀티미디어 엔진(118)은 메모리 액세스 요청들을 생성할 수 있는 컴퓨팅 리소스들의 예들이다. 도시되지는 않았지만, 다른 실시예들에서, 다른 유형의 컴퓨팅 리소스들이 컴퓨팅 리소스들(100)에 포함된다.
CPU(112)의 하나 이상의 프로세서 코어들 각각은 소정의 선택된 인스트럭션 세트 아키텍처(ISA)에 따라 인스트럭션들을 실행하기 위한 회로부를 포함한다. 다양한 실시예들에서, CPU(112)의 프로세서 코어들 각각은 소정의 ISA의 인스트럭션들을 처리하기 위해 사용된 수퍼스칼라 멀티스레드 마이크로아키텍처를 포함한다. 실시예에서, GPU(114)는 다수의 병렬 실행 레인(lane)들을 갖는 고(high) 병렬 데이터 마이크로아키텍처를 포함한다. 일 실시예에서, 마이크로아키텍처는 병렬 실행 레인들을 위해 단일 인스트럭션 다중 데이터(SIMD) 파이프라인을 사용한다. 멀티미디어 엔진(118)은 멀티미디어 어플리케이션들을 위한 오디오 데이터 및 비주얼 데이터를 처리하기 위한 프로세서들을 포함한다.
일 예에서, 가속 처리 유닛(APU), 디스플레이 컨트롤러, 오디오 프로세서 등은 컴퓨팅 리소스들(110)에 포함될 추가 후보들이다. APU의 예는 GPU, FPGA 또는 기타 처리 유닛과 동일한 다이에 통합된 CPU이며, 따라서 전력 소모를 줄이면서 이들 유닛들 간의 데이터 전송 속도를 향상시킨다. 다른 실시예들에서, APU는 비디오 처리 및 다른 어플리케이션-특정 가속기들을 포함한다.
다양한 실시예들에서, 통신 패브릭(120)은 컴퓨팅 리소스들(110)과 메모리 컨트롤러(130) 사이에서 앞뒤로 트래픽을 전달하며, 각자의 통신 프로토콜들을 지원하기 위한 인터페이스들을 포함한다. 일부 실시예들에서, 통신 패브릭(120)은 적어도 요청들 및 응답들을 저장하기 위한 큐(queues), 내부 네트워크에 걸쳐 요청들을 전송하기 전에 수신된 요청들 사이를 중재하기 위한 선택 로직, 패킷들을 구축 및 디코딩하기 위한 로직 및 패킷들에 대한 루트들을 선택하기 위한 로직을 포함한다.
일부 실시예들에서, 컴퓨팅 시스템(100)의 어드레스 공간은 적어도 CPU(112), GPU(114) 및 허브(116)와, 입력/출력 주변 장치들(도시되지 않음) 및 다른 유형의 컴퓨팅 리소스들과 같은 하나 이상의 다른 컴포넌트들로 분할된다. 메모리 맵(map)들은 어드레스들이 어느 컴포넌트에 맵핑되고, 이에 따라 특정 어드레스에 대한 메모리 요청이 CPU(112), GPU(114) 및 허브(116) 중 어느 것에 라우팅 되어야 하는지를 결정하기 위해 유지된다. 소프트웨어 어플리케이션들이 점점 더 많은 데이터에 액세스함에 따라, 메모리 서브시스템이 더 많이 활용된다. 레이턴시들은 더 중요해진다. 더 많은 온-칩 메모리 저장 장치가 인터커넥트 레이턴시들을 줄이는 데 사용된다. 예를 들어, 컴퓨팅 리소스들(110) 내의 컴퓨팅 리소스들 중 하나 이상은 각자의 프로세서 코어에 대한 메모리 레이턴시들을 줄이기 위한 캐시 메모리 서브시스템을 포함한다. 다양한 실시예들에서, DRAM(170) 내의 비교적 대용량의 행 기반 메모리 저장 장치는 오프-칩 시스템 메모리(도시되지 않음)에 액세스하기 전에 라스트 레벨 캐시(LLC)로 사용되며, 이는 더 많은 DRAM일 수 있거나 디스크 메모리나 솔리드 스테이트 메모리인 메인 메모리(162)일 수 있다.
다양한 실시예들에서, DRAM(170)은 집적 회로 내의 개별 커패시터에 각 데이터 비트를 저장한다. 커패시터는 충전되거나 방전될 수 있다. 이러한 두 상태들은 두 개의 논리적 비트 값들을 나타내는 데 사용된다. DRAM(170)은 비트당 단일 트랜지스터 및 커패시터를 이용한다. 온-칩 동기식 RAM(SRAM)에 사용되는 6개의 트랜지스터들과 비교하여, DRAM은 더 높은 밀도에 도달한다. HDD 및 플래시 메모리와 달리, DRAM(170)은 비휘발성 메모리가 아니라 휘발성 메모리이다. DRAM(170)은 전원 공급 장치가 제거될 때 비교적 빠르게 데이터를 잃는다.
최근, 수직 및 수평 둘 다로 단일 회로에 통합된 2개 이상의 능동 전자 부품 층들을 포함하는 3차원 집적 회로(3D IC)에서 진전이 이루어졌다. SiP(System in Package) 또는 MCM(Chip Stack multi-chip module)으로 알려진 3D 패키징은 별도의 칩을 단일 패키지에 적층함으로써 공간을 절약한다. 이러한 계층들 내의 컴포넌트들은 수직으로든 수평으로든 온-칩 시그널링을 사용하여 통신한다. 이 시그널링은 주지의 2차원 평면 레이아웃 회로들에 비해 감소된 인터커넥트 신호 지연을 제공한다.
실시예에서, DRAM(170)은 다중 채널 메모리 아키텍처를 포함한다. 이 유형의 아키텍처는 그들 사이에 더 많은 통신 채널들을 추가함으로써 메모리 컨트롤러(130)로의 데이터의 전송 속도를 증가시킨다. 실시예에서, 다중 채널 아키텍처는 다중 메모리 모듈들 및 다중 채널들을 지원할 수 있는 마더보드 및/또는 카드를 이용한다. 다른 실시예에서, DRAM(170)은 앞에서 설명된 바와 같은 라스트 레벨 캐시를 제공하기 위해 3차원 집적 회로(3D IC)를 이용한다. 하나 이상의 행 버퍼들 또는 다른 등가 구조들을 포함하는 행-기반 액세스 방식을 사용하는 라스트 레벨 캐시에 대한 다른 메모리 기술들이 가능하고 고려된다. 다른 메모리 기술들의 예들은 상 변화 메모리, 스핀-토크-전송(spin-torque-transfer) 저항성 메모리, 멤리스터(memristor) 등을 포함한다.
앞에서 설명된 바와 같이, 다양한 실시예들에서, DRAM(170)은 시스템 메모리에 액세스하기 전에 라스트 레벨 캐시(LLC)로 사용된다. 일부 실시예들에서, 메모리 컨트롤러(130)는 DRAM 개방/활성화, 프리차지, 폐쇄 및 리프레시 명령들과 같은 RAM 트랜잭션들을 처리하기 위한 제어 로직을 포함한다. 추가로, 메모리 컨트롤러(130)는 태그 비교와 같은 캐시 액세스들을 처리하고 태그 비교에 기초하여 판독된 대용량 데이터의 일부를 식별하기 위한 제어 로직을 포함한다. 다양한 실시예들에서, DRAM(170)은 I/O 컨트롤러 및 버스(160) 및 메모리 버스(150)를 통해 시스템 메모리(도시되지 않음) 및 메인 메모리(162) 중 하나 이상으로부터의 데이터로 채워진다. 요청된 블록을 갖는 대응되는 캐시 충진 라인은 원래의 메모리 액세스 요청을 완료하기 위해 DRAM(170)으로부터 컴퓨팅 리소스들(110) 내의 캐시 메모리 서브시스템들 중 대응되는 하나로 전달된다. 캐시 충진 라인은 하나 이상의 캐시 레벨들에 배치된다.
메모리 컨트롤러(130)에 대한 각자의 인터페이스를 위한 프로토콜의 일례는 이중 데이터 레이트(double data rate; DDR) 타입의 프로토콜이다. 프로토콜은 콜록 사이클당 데이터 전송 횟수, 신호 전압 레벨, 신호 타이밍, 신호 및 클록 위상 및 클록 주파수와 같은 정보 전송에 사용되는 값들을 결정한다. 프로토콜 예들은 DDR2 SDRAM, DDR3 SDRAM, GDDR4(Graphics Double Data Rate, version 4) SDRAM 및 GDDR5(Graphics Double Data Rate, version 5) SDRAM을 포함한다. 메모리 컨트롤러(130)는 메모리 채널들을 인터페이싱하고 대응되는 프로토콜을 따르는 제어 회로부를 포함한다.
도시된 바와 같이, DRAM(170)은 메모리 어레이 뱅크들(174A-174B)을 포함한다. 뱅크들(174A-174B)의 각 뱅크는 행 버퍼들(172A-172B) 중 각각의 행 버퍼를 포함한다. 행 버퍼들(172A-172B) 중 각 행 버퍼는 메모리 어레이 뱅크들(174A-174B) 내의 다수의 행들 중 액세스된 행에 데이터를 저장한다. 액세스된 행은 수신된 메모리 액세스 요청의 DRAM 어드레스에 의해 식별된다. DRAM(170)의 로직(138) 내의 제어 로직은 식별된 행에 액세스하기 위해 한번 그리고 폐쇄 트랜잭션 동안 행 버퍼에 저장된 수정된 콘텐트들을 식별된 행에 다시 넣기 위해 한번 DRAM(170) 내의 데이터 및 제어 라인들의 활성화(개방) 트랜잭션들 및 프리차지와 같은 복잡한 트랜잭션들을 수행한다. 활성화/개방, 열 액세스, 판독 액세스, 기록 액세스 및 프리차지/폐쇄와 같은 상이한 DRAM 트랜잭션들 각각은 상이한 각자의 레이턴시를 갖는다. 종종, 활성화 및 프리차지 트랜잭션들은 판독 액세스 및 기록 액세스 트랜잭션들보다 상당히 더 긴 레이턴시들을 갖는다.
다양한 실시예들에서, DRAM(170)은 하나 이상의 메모리 채널들, 채널당 하나 이상의 메모리 모듈들 또는 장치들, 메모리 모듈당 하나 이상의 랭크들, 랭크당 하나 이상의 뱅크들 및 뱅크당 하나 이상의 행들을 포함한다. 일반적으로, 각 행은 데이터 페이지를 저장한다. 페이지의 크기는 설계 고려사항들에 기초하여 선택된다. 페이지는 1 킬로바이트(1 KB), 4 킬로바이트(4 KB) 또는 설계 선택사항들에 기초한 임의의 크기일 수 있다.
컴퓨팅 리소스들(110)의 캐시 메모리 서브시스템들(도시되지 않음)은 데이터 블록들을 저장하도록 구성된 고속 캐시 메모리들을 포함한다. 본원에 사용된 바와 같은, "블록"은 연속 메모리 위치들에 저장된 바이트 세트이며, 코히어런시(coherency)을 위한 단위로 취급된다. 본원에 사용된 바와 같이, "캐시 블록", "블록", "캐시 라인" 및 "라인" 이라는 용어들 각각은 호한 가능하다. 일부 실시예들에서, 블록은 또한 캐시에서 할당 및 할당 해제의 단위일 수도 있다. 블록의 바이트 수는 설계 선택 사항에 따라 달라지며, 어떠한 크기라도 될 수 있다. 추가로, "캐시 태그", "캐시 라인 태그" 및 "캐시 블록 태그" 라는 용어들 각각은 호환 가능한다. 다양한 실시예들에서, 캐시 메모리 서브시스템들은 캐시들이 계층 구조로 구현된다.
본원에 사용된 바와 같이, "액세스"라는 용어는 대응되는 요청 어드레스의 요청된 데이터가 캐시에 상주하는 경우 캐시 히트(cache hit)를 발생시키는 메모리 판독 요청 또는 메모리 기록 요청 동작을 수행하는 것을 지칭한다. 대안으로, 메모리 액세스 요청은 요청된 데이터가 캐시에 상주하지 않을 경우 캐시 미스(cache miss)를 발생시킨다. 본원에 사용된 바와 같이, "메모리 판독 요청들"은 판독 요청들로도 지칭되며, 마찬가지로 "메모리 기록 요청들"은 기록 요청들로도 지칭된다.
요청된 데이터가 컴퓨팅 리소스들(110)의 캐시 메모리 서브시스템에서 발견되지 않는 경우, 메모리 액세스 요청이 생성되고 메모리 컨트롤러(130)로 전송된다. 도시된 바와 같이, 메모리 컨트롤러(130)는 통신 패브릭(120)을 통해 컴퓨팅 리소스들(110)로부터 수신된 메모리 액세스 요청들을 큐잉(queuing)하기 위한 요청 큐(132)를 포함한다. 메모리 컨트롤러(130)는 또한 DRAM(170)으로부터 수신된 응답들을 저장하기 위한 응답 큐(134)를 갖는다. 실시예에서, 요청 큐(132)는 메모리 액세스 요청들을 저장하기 위한 하나 이상의 큐들을 포함한다. 다른 실시예에서, 요청 큐(132)는 메모리 판독 요청들을 저장하기 위한 판독 큐 및 메모리 기록 요청들을 저장하기 위한 개별 기록 큐를 포함한다. 다른 실시예들에서, 요청 큐(132)는 메모리 판독 요청들 및 메모리 기록 요청들 둘 다를 저장하기 위한 통합 큐를 포함한다.
또 다른 실시예들에서, 요청 큐(132)는 수신된 메모리 액세스 요청들을 저장하기 위한 하나 이상의 큐들 및 하나 이상의 큐들로부터 선택된 스케줄링된 메모리 액세스 요청들을 저장하기 위한 별도의 큐를 포함한다. 스케줄러(136)는 DRAM(170)으로의 비순차적 발행을 위해 요청 큐(132)에 저장된 메모리 액세스 요청들을 선택하기 위한 하나 이상의 스케줄링 블록들을 포함한다. 따라서, 메모리 컨트롤러(130)는 우선 순위들 및 타겟 어드레스들에 기초하여 DRAM(170)으로의 메모리 액세스 요청들의 발행을 비순차적으로 지원한다.
다양한 실시예들에서, 메모리 버스(150)는 판독 모드 및 기록 모드의 소정 모드 동안과 같이, 소정의 시간량 동안 단일 방향으로 데이터 트래픽을 전송하는 것을 지원한 다음, 판독 모드 및 기록 모드의 다른 모드 동안과 같이 다른 소정의 시간량 동안 반대 방향으로 데이터 트래픽을 전송한다. 실시예에서, 메모리 버스(150)는 적어도 명령 버스 및 데이터 버스를 이용하고, 메모리 버스(150)는 데이터 버스 상의 데이터 트래픽을 DRAM(170)으로부터 메모리 컨트롤러(130)로 전송하기 위한 판독 모드를 지원한다. 추가로, 메모리 버스(150)는 데이터 버스 상의 데이터 트래픽을 메모리 컨트롤러(130)로부터 DRAM(170)으로 전송하기 위한 기록 모드를 지원한다.
일부 실시예들에서, 메모리 컨트롤러(130)는 또한 적어도 우선 순위들에 기초하여 컴퓨팅 리소스들(110)에 대한 응답들의 발행을 비순차적으로 지원한다. 다양한 실시예들에서, 메모리 컨트롤러(130)의 스케줄러(136)는 서비스 품질(QoS) 또는 다른 우선 순위 정보, 수명, 프로세스 또는 스레드 식별자(ID) 및 동일한 메모리 채널을 대상으로 하고, 동일한 랭크를 대상으로 하고, 동일한 뱅크를 대상으로 하고/하거나 동일한 페이지를 대상으로 하는 것과 같은 다른 저장된 요청들과의 관계에 기초하여 저장된 메모리 액세스 요청들의 발행을 스케줄링한다.
다양한 실시예들에서, 로직(138)라고도 하는 캐시 컨트롤러 및 메모리 장치 컨트롤러 로직(138)은 수신된 단일 메모리 액세스 요청을 두 개의 개별 메모리 액세스 요청들로 분할한다. 실시예에서, 로직(138)은 수신된 메모리 액세스 요청에 기초하여 태그 액세스 요청을 생성하고, 수신된 메모리 액세스 요청에 기초하여 태그 액세스 요청과 다른 데이터 액세스 요청을 생성한다. 태그 액세스 요청 및 데이터 액세스 요청은 또한 캐시 태그 액세스 요청 및 캐시 데이터 액세스 요청으로 지칭될 수 있다. 일부 실시예들에서, 요청 큐(132) 내의 판독 큐 및 기록 큐 각각은 태그 큐 및 개별 데이터 큐로 분할된다. 일 실시예에서, 로직(138)은 프리 리스트, 스레드 또는 프로세스 식별자, 컴퓨팅 소스 식별자, 타겟 어드레스, 수명 또는 타임스탬프 등으로부터 생성된 식별자 중 하나 이상으로부터 고유 식별자를 생성한다. 일부 실시예들에서, 로직(138)은 태그 액세스 요청 및 데이터 액세스 요청 각각에 생성된 고유 식별자를 저장한다.
일부 실시예들에서, 로직(138)은 태그 액세스 요청을 처리함으로써 생성된 정보에 기초하여 데이터 액세스 요청을 전송하는 것을 스케줄링한다. 다양한 실시예들에서, 로직(138)은 태그 액세스 요청을 처리함으로써 생성된 정보가 이용 가능할 때까지 데이터 액세스 요청을 전송하는 것을 방지한다. 따라서, 태그 액세스 요청은 데이터 액세스 요청이 전혀 전송되지 않는 경우, 데이터 액세스 요청이 전송되기 전에 메모리 장치로 전송된다. 실시예에서, 타겟 어드레스 내의 페이지 인덱스는 뱅크들(174A-174B) 중 타겟팅된 뱅크에서 다수의 행들 중 소정 행을 식별하는 데 사용된다. 실시예에서, 소정 행은 소정 행의 일부 내에 하나 이상의 태그들을 저장한다. DRAM(170)이 RAM 캐시 메모리와 같은 라스트 레벨 캐시로 사용되므로, 메모리 장치는 RAM 캐시 메모리 장치로 지칭될 수 있다.
다양한 실시예들에서, 로직(138)은 소정 행에 저장된 하나 이상의 태그들과 단일 메모리 액세스 요청의 타겟 어드레스 내 태그 사이의 부분 태그 비교를 수행하며, 이는 태그 액세스 요청에 저장된다. 다양한 실시예들에서, 부분 태그 비교는 전체 태그 비교보다 상당히 짧은 레이턴시를 갖는다. 매칭되는 것들이 검출되지 않는 경우, 태그 미스가 발생하며, 로직(138)은 데이터 액세스 요청을 DRAM(170)으로 보내는 것을 취소한다. 메모리 컨트롤러는 데이터 액세스 요청을 저장하는 큐 엔트리를 무효화시키거나, 아니면 할당을 해제한다. 따라서, 이는 요청된 데이터가 전체 태그 비교의 상당히 긴 레이턴시 이후에 알려진 것과는 대조적으로, 부분 태그 비교의 상당히 짧은 레이턴시 후로 알려져 있는 것과 같이 시스템 메모리에 더 빨리 있지 않는 것으로 알려져 있다. 태그 미스의 경우, 로직(138)은 또한 단일 메모리 액세스 요청을 메인 메모리(162)로 전송한다. 일부 실시예들에서, 전체 태그 비교는 부분 태그 비교와 동시에 시작한다. 부분 태그 비교에 대해 매칭되는 것들이 검출되지 않는 경우, 전체 태그 비교가 게이트(gated) 또는 중지되거나, 또는 전체 태그 비교가 허용되지만 결과는 폐기된다.
실시예에서, 로직(138)은 부분 태그 비교에 기초하여 하나 이상의 태그 히트들이 발생한다고 결정할 때, 로직(138)은 소정 행의 하나 이상의 태그들 전체를 태그 액세스 요청의 태그 어드레스 내의 태그 전체와 비교한다. 앞에서 설명된 바와 같이, 일부 실시예들에서, 전체 태그 비교는 부분 태그 비교와 동시에 시작한다. 다양한 실시예들에서, 이 전체 태그 비교는 부분 태그 비교보다 상당히 긴 레이턴시를 갖는다. 전체 태그 비교로 인해 태그 미스가 발생되는 경우, 로직(138)은 부분 태그 비교로부터 결정된 태그 미스에 사용되는 상기 단계들을 수행한다. 전체 태그 비교로 인해 태그 히트가 발생되는 경우, 로직(138)은 데이터 액세스 요청을 DRAM(170)으로 전송한다. 실시예에서, 전체 태그 히트 결과는 데이터 액세스 요청의 처리에 의해 나중에 판독된 행의 특정 부분을 식별하는 데 사용된다. 예를 들어, 행의 특정 캐시 라인은 태그 히트 결과에 의해 식별된다.
오프-칩 디스크 메모리(162)는 비휘발성의 랜덤 액세스 보조 데이터 저장 장치를 제공할 수 있다. 일 실시예에서, 오프-칩 디스크 메모리(162)는 하나 이상의 하드 디스크 드라이브(HDD)들을 포함할 수 있다. HDD들은 일반적으로 각각이 자기 매체로 코팅된 하나 이상의 회전 디스크들을 포함한다. 이러한 디스크들은 분당 수천 회전 속도로 회전한다. 자기 액추에이터는 회전 디스크들 위에 자기 판독/기록 장치들을 포지셔닝하는 역할을 한다. 다른 실시예에서, 오프-칩 디스크 메모리(162)는 솔리드 스테이트 디스크(SSD)를 이용한다. 솔리드 스테이트 디스크는 또한 솔리드 스테이트 드라이브로 지칭될 수 있다. SSD는 HDD 인터페이스를 에뮬레이트할 수 있지만, SSD는 솔리드 스테이트 메모리를 이용하여 HDD에서 발견되는 전자 기계 장치들보다는 영구적인 데이터를 저장한다. 예를 들어, SSD는 플래시 메모리 뱅크들을 포함할 수 있다.
도 2를 참조하면, 메모리 컨트롤러(200)의 일 실시예의 일반화된 블록도가 도시된다. 예시된 실시예에서, 메모리 컨트롤러(200)는 통신 패브릭을 통한 컴퓨팅 리소스들에 대한 인터페이스(210), 수신된 메모리 액세스 요청들 및 수신된 응답들을 저장하기 위한 큐(220), 제어 유닛(250) 및 적어도 메모리 버스의 데이터 버스를 통한 메모리 장치에 대한 인터페이스(280)를 포함한다. 인터페이스들(210 및 280) 각각은 각자의 통신 프로토콜들을 지원한다.
실시예에서, 큐(220)는 수신된 판독 요청들에 기초하여 생성된 요청들을 저장하기 위한 판독 태그 큐(232) 및 판독 데이터 큐(234)를 포함한다. 추가로, 큐(220)는 수신된 기록 요청들에 기초하여 생성된 요청들을 저장하기 위한 기록 태그 큐(236) 및 기록 데이터 큐(238)를 포함한다. 일 실시예에서, 큐(220)는 하나 이상의 큐들(232-238)로부터 선택된 스케줄링된 메모리 액세스 요청들 또는 큐가 사용되는 경우 통합 큐를 저장하기 위한 큐(239)를 포함한다.
일부 실시예들에서, 판독 스케줄러(252)는 판독 태그 큐(232)로부터의 판독 태그 요청들을 비순차적으로 선택하기 위한 중재 로직을 포함한다. 판독 스케줄러(252)는 서비스 품질(QoS) 또는 다른 우선 순위 정보, 수명, 프로세스 또는 스레드 식별자(ID) 및 동일한 메모리 채널을 대상으로 하고, 동일한 랭크를 대상으로 하고, 동일한 뱅크를 대상으로 하고/하거나 동일한 페이지를 대상으로 하는 것과 같은 다른 저장된 요청들과의 관계에 기초하여 메모리 장치로의 판독 태그 큐(232) 내에 저장된 태그 판독 요청들의 비순차적 발행을 스케줄링한다. 기록 스케줄러(254)는 기록 태그 큐(236)에 대한 유사한 선택 로직을 포함한다. 실시예에서, 응답 스케줄러(256)는 우선 순위에 기초하여 메모리 장치로부터 수신되는 컴퓨팅 리소스들에 대한 응답들을 비순차적으로 발행하기 위한 유사한 로직을 포함한다.
일부 실시예들에서, 제어 레지스터들(270)은 전류 모드의 표시를 저장한다. 예를 들어, 오프-칩 메모리 데이터 버스 및 메모리 장치는 소정 시간에 판독 모드 또는 기록 모드를 지원한다. 따라서, 트래픽은 현재 모드 동안 소정의 단일 방향으로 라우팅되며, 데이터 버스 전향(turnaround) 레이턴시 이후 현재 모드가 변경되면 방향을 변경한다. 다양한 실시예들에서, 제어 레지스터들(270)은 판독 모드 동안 전송하기 위한 임계 개수의 판독 요청들(판독 버스트 길이)을 저장한다.
실시예에서, 캐시 컨트롤러 로직(260)은 수신된 단일 메모리 액세스 요청을 두 개의 개별 메모리 액세스 요청들로 분할한다. 실시예에서, 로직(260)은 수신된 메모리 액세스 요청에 기초하여 태그 액세스 요청을 생성하고, 수신된 메모리 액세스 요청에 기초하여 태그 액세스 요청과 다른 데이터 액세스 요청을 생성한다. 일부 실시예들에서, 로직(260)은 태그 액세스 요청 및 데이터 액세스 요청 각각이 동일한 수신된 메모리 액세스 요청으로부터 생성된다는 것을 명시하는 표시를 저장한다. 실시예에서, 표시는 태그 액세스 요청 및 데이터 액세스 요청 각각 내에 저장된다. 일 실시예에서, 표시는 프리 리스트로부터 생성된 식별자, 스레드 또는 프로세스 식별자, 컴퓨팅 소스 식별자, 타겟 어드레스, 수명 또는 타임스탬프 등 중에서 하나 이상으로부터 생성된 고유 식별자이다. 다른 실시예들에서, 로직(260)은 판독 태그 요청의 콘텐트들을 저장하는 판독 태그 큐(232)의 엔트리, 및 개별적이지만 대응되는 판독 데이터 요청의 콘텐트들을 저장하는 판독 데이터 큐(234)의 엔트리와 같은, 대응되는 큐 엔트리들에 상기 표시를 저장한다. 기록 태그 큐(236) 및 기록 데이터 큐(238)는 기록 요청들에 대한 유사한 표시들을 저장한다.
다양한 실시예들에서, 메모리 장치 로직(262)은 태그 액세스 요청을 처리함으로써 생성된 정보가 이용 가능할 때까지 데이터 액세스 요청을 전송하는 것을 방지한다. 따라서, 태그 액세스 요청은 데이터 액세스 요청이 전혀 전송되지 않는 경우, 데이터 액세스 요청 전에 메모리 장치로 전송된다. 실시예에서, 타겟 어드레스 내의 페이지 인덱스는 로직(262)에 의해 메모리 장치의 타겟팅된 뱅크에서 다수의 행들 중 소정 행을 식별하는 데 사용된다. 실시예에서, 소정 행은 소정 행의 일부 내에 하나 이상의 태그들을 저장한다.
다양한 실시예들에서, 로직(262)은 소정 행에 저장된 하나 이상의 태그들과 단일 메모리 액세스 요청의 타겟 어드레스 내의 태그 사이의 부분 태그 비교를 수행하며, 이는 태그 액세스 요청에 저장된다. 매칭되는 것들이 검출되지 않는 경우, 태그 미스가 발생하며, 로직(262)은 데이터 액세스 요청을 메모리 장치로 보내는 것을 취소한다. 로직(262)은 액세스 유형에 기초하여 판독 데이터 큐(234) 또는 기록 데이터 큐(238)의 큐 엔트리를 무효화시커나, 아니면 할당을 해제한다. 태그 미스의 경우, 로직(262)은 또한 단일 메모리 액세스 요청을 개별 시스템 메모리 또는 메인 메모리로 전송한다. 일부 실시예들에서, 로직(262)은 부분 태그 비교를 수행하는 것과 동시에 전체 태그 비교를 수행하기 시작한다. 부분 태그 비교에 대해 매칭되는 것들이 검출되지 않는 경우, 전체 태그 비교가 게이트 또는 중지되거나, 또는 전체 태그 비교가 허용되지만 결과는 폐기된다.
실시예에서, 로직(262)은 부분 태그 비교에 기초하여 하나 이상의 태그 히트들이 발생한다고 결정할 때, 로직(262)은 소정 행의 하나 이상의 태그들 전체를 태그 액세스 요청의 태그 어드레스 내의 태그 전체와 비교한다. 전체 태그 비교로 인해 태그 미스가 발생되는 경우, 로직(262)은 부분 태그 비교로부터 결정된 태그 미스에 사용되는 상기 단계들을 수행한다. 전체 태그 비교로 인해 태그 히트가 발생되는 경우, 로직(262)은 데이터 액세스 요청을 DRAM(170)으로 전송한다.
이제 도 3을 참조하면, 메모리 액세스 요청을 DRAM의 라스트 레벨 캐시 저장 장치로 전송하기 위한 방법(300)의 일 실시예가 도시된다. 논의를 위해, 이 실시예(뿐만 아니라 도 4-5)에서의 단계들이 순차적으로 도시된다. 그러나, 설명된 방법들의 다양한 실시예들에서, 설명된 요소들 중 하나 이상은 도시된 것과 다른 순서로 동시에 수행되거나 또는 완전히 생략된다는 점에 유의한다. 다른 추가 요소들은 또한 원하는 대로 수행된다. 본원에 설명된 다양한 시스템들 또는 장치들 중 어느 것이라도 방법(300)을 구현하도록 구성된다.
하나 이상의 컴퓨팅 리소스들은 컴퓨터 프로그램들 또는 소프트웨어 어플리케이션들을 실행한다. 컴퓨팅 리소스의 예들은 앞서 제공되어 있다. 컴퓨팅 리소스는 컴퓨팅 리소스 내의 캐시 메모리 서브시스템 내에서 소정의 메모리 액세스 요청 미스를 결정한다. 컴퓨팅 리소스는 메모리 액세스 요청을 메모리 컨트롤러를 통해 DRAM과 같은 시스템 메모리로 전송한다.
컴퓨터 프로그램의 실행 동안(블록 302), 컴퓨팅 리소스 내에서 누락된 메모리 요청이 검출된다(블록 304). 소정 메모리 요청은 적어도 하나의 메모리 장치에 결합된 메모리 컨트롤러로 전송되며(블록 306), 여기서 이는 태그 요청 및 개별 데이터 요청으로 분할된다(블록 308). 태그 요청은 다른 태그 요청들과 함께 스케줄링되어 메모리 장치로 전송된다(블록 310). 데이터 요청은 태그 요청을 처리함으로써 생성된 정보가 이용 가능할 때까지 전송되는 것이 방지된다(블록 312). 태그 요청은 스케줄러에 의해 선택될 때 메모리 장치로 전송된다(블록 314). 일부 경우, 소정의 메모리 요청이 유일한 메모리 요청이므로 태그 요청은 유일한 태그 요청이다. 이러한 경우, 스케줄링은 다수의 태그 요청들로부터의 정보를 사용하지 않는다. 일부 실시예들에서, 단일 태그 요청 및 단일 데이터 요청만이 존재할 때, 메모리 요청이 판독 요청인 경우 데이터 요청은 태그 요청과 함께 추론적으로 전송된다. 검색된 데이터는 전체 태그 미스가 최종적으로 발생하는 경우 폐기될 수 있다. 그렇지 않으면, 방법(400) 및 방법(500)에 대한 향후 설명에서 더 설명되는 바와 같이, 데이터 요청을 전송하기 전에 부분 태그 비교가 수행된다.
도 4를 참조하면, DRAM의 라스트 레벨 캐시 저장 배열에 대한 태그 액세스 요청을 처리하기 위한 방법(400)의 다른 실시예가 도시된다. 도시된 예에서, 태그 요청이 메모리 장치로 전송된다(블록 402). 앞서 설명된 바와 같이, 다양한 실시예들에서, 캐시 컨트롤러에 대한 로직(예: 도 2의 로직(260))은 단일 수신된 메모리 요청으로부터 태그 요청 및 별도의 데이터 요청을 생성한다. 그런 다음, 캐시 컨트롤러 로직은 태그 요청을 메모리 컨트롤러를 위한 로직 또는 메모리 장치를 위한 로직(즉, 도 2의 로직(262))으로 전송한다. 메모리 컨트롤러 내의 메모리 장치를 위한 로직은 태그 요청을 메모리 장치로 전송한다. 태그 요청에 응답하여, 소정 행은 태그 요청의 어드레스에 대응되는 DRAM 캐시 내에서 식별된다(블록 404). 소정 행은 활성화 트랜잭션에 의해 개방된다(블록 406). 행으로부터의 정보가 행 버퍼에 저장된다(블록 408) 행 버퍼에 저장된 하나 이상의 태그들의 일부는 태그 요청의 어드레스 내의 태그의 일부와 비교(부분 태그 비교)된다(블록 410).
부분 태그 비교에 기초한 태그 미스(tag miss)가 발생하지 않은 경우(조건부 블록(412)의 "아니오" 분기), 부분 태그 히트가 발생하며 개별 데이터 요청이 처리된다(블록 414). 일 실시예에서, 개별 데이터 요청은 판독 요청이고, 데이터 요청은 메모리 장치로 전송됨으로써 추론적으로 처리된다. 일부 실시예들에서, 전체 태그 비교도 수행된다. 일부 실시예들에서, 메모리 장치를 위한 로직은 부분 태그 비교를 수행하며, 캐시 컨트롤러를 위한 로직은 전체 태그 비교를 수행한다. 데이터 요청이 기록 요청이면, 전체 태그 비교가 수행될 때까지 데이터 요청에 대한 처리가 발생하지 않는다. 행 버퍼에 저장된 하나 이상의 태그들 전체가 태그 요청의 타겟 어드레스 내의 태그 전체와 비교된다. 다양한 실시예들에서, 전체 태그 비교의 레이턴시는 부분 태그 비교의 레이턴시보다 길다. 전체 태그 미스가 전체 태그 비교에 기초하여 결정되는 경우, 판독 요청을 전송함으로써 검색된 데이터가 폐기된다. 데이터 요청이 판독 요청이고 이미 메모리 장치로 전송된 경우, 검색된 데이터는 폐기되고 캐시 컨트롤러를 위한 로직은 대응되는 메모리 요청을 시스템 메모리로 전송한다. 데이터 요청이 아직 전송되지 않은 경우, 캐시 컨트롤러를 위한 로직은 데이터 요청을 취소하고 대응되는 메모리 요청을 시스템 메모리로 전송한다. 전체 태그 히트가 전체 태그 비교에 기초하여 결정되는 경우, 데이터 요청(판독 요청)을 전송함으로써 검색된 데이터는 캐시 컨트롤러를 위한 로직으로 전송되어 대응되는 메모리 요청을 서비스한다. 전체 태그 히트가 발생하고 데이터 요청이 기록 요청인 경우, 데이터 요청은 메모리 장치로 전송되어 메모리 요청을 서비스한다. 그렇지 않으면, 부분 태그 비교에 기초하여 태그 미스가 발생한 것으로 결정되는 경우(조건부 블록(412)의 "예" 분기), 대응되는 데이터 요청이 메모리 장치로 전송되는 것이 취소되며(블록 416), 메모리 요청이 시스템 메모리로 전송되어 DRAM 캐시에 충진 데이터(fill data)를 제공한다(블록 418). 다양한 실시예들에서, 메모리 컨트롤러의 로직과 캐시 컨트롤러의 로직 사이에 상기 통신은 사용될 뿐만 아니라, 상기 단계들은 데이터를 폐기하거나, 데이터 요청을 취소하거나 또는 요청들을 서비스하는데 사용된다. 일부 실시예들에서, 메모리 장치를 위한 로직(즉, 도 2의 로직(262))은 부분 태그 미스의 표시를 캐시 컨트롤러를 위한 로직(즉, 도 2의 로직(260))으로 전송하며, 이는 검색된 데이터를 추론적으로 폐기하거나 데이터 요청을 취소한다. 다른 실시예들에서, 메모리 장치를 위한 로직은 추론적으로 검색된 데이터를 폐기하고, 부분 태그 미스의 표시를 캐시 컨트롤러를 위한 로직으로 전송한다.
도 5를 참조하면, DRAM의 라스트 레벨 캐시 저장 배열에 대한 태그 액세스 요청으로부터 분리된 데이터 액세스 요청을 처리하기 위한 방법(500)의 다른 실시예가 도시된다. 태그 요청에 대한 부분 태그 히트가 결정된다(블록 502). 그 후, 행 버퍼 내의 하나 이상의 태그들 전체가 태그 요청의 어드레스 내의 태그 전체와 비교된다(블록 504). 전체 태그 미스가 발생한 것으로 결정되는 경우(조건부 블록(506)의 "아니오" 분기), 메모리 요청은 시스템 메모리로 전송되어 DRAM 캐시에 충진 데이터를 제공한다(블록 508). 앞서 설명된 바와 같이, 다양한 실시예들에서, 데이터 요청이 판독 요청이고 추론적으로 메모리 장치로 전송된 경우, 검색된 데이터는 폐기되고 캐시 컨트롤러를 위한 로직은 대응되는 메모리 요청을 시스템 메모리로 전송한다. 데이터 요청이 아직 전송되지 않은 경우, 캐시 컨트롤러를 위한 로직은 데이터 요청을 취소하고 대응되는 메모리 요청을 시스템 메모리로 전송한다.
전체 태그 히트가 발생한다고 결정되는 경우(조건부 블록(506)의 "예" 분기), 데이터 요청은 메모리 장치로 전송되고(블록 510), 데이터 요청 내 어드레스에 대응되는 DRAM 캐시 내의 소정 행이 식별된다(블록 512). 행 버퍼의 대응되는 캐시 라인에 대한 판독 또는 기록 액세스는 액세스 유형에 기초하여 수행되고(블록 514), 대응되는 메타 데이터가 행 버퍼에서 업데이트되며(블록 516), 행 버퍼의 정보에 대응되는 행이 폐쇄된다(블록 518). 앞서 설명된 바와 같이, 일부 실시예들에서, 데이터 요청이 판독 요청인 경우, 데이터 요청은 전체 태그 비교의 완료 전에 부분 태그 비교에 기초하여 추론적으로 메모리 장치로 전송된다. 이러한 경우, 검색된 데이터는 전체 태그 비교가 전체 태그 미스를 결정하는 경우 폐기된다. 전체 태그 비교가 전체 태그 히트를 결정하나는 경우, 검색된 데이터는 판독 요청을 서비스하기 위해 더 빨리 제공된다.
다양한 실시예들에서, 소프트웨어 어플리케이션의 프로그램 인스트럭션들은 앞서 설명된 방법들 및/또는 메커니즘들을 구현하는 데 사용된다. 프로그램 인스트럭션들은 C와 같은 하이 레벨 프로그래밍 언어로 하드웨어의 행동을 설명한다. 대안으로, 베릴로그(Verilog)와 같은 하드웨어 설계 언어(HDL)가 사용된다. 프로그램 인스트럭션들은 비일시적 컴퓨터 판독 가능 저장 매체에 저장된다. 다양한 유형의 저장 매체가 사용 가능하다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 인스트럭션들 및 수반되는 데이터를 제공하기 위해 사용하는 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 프로그램 인스트럭션들을 실행하도록 구성된 적어도 하나 이상의 메모리들 및 하나 이상의 프로세서들을 포함한다.
상기 설명된 실시예들은 단지 구현예들의 비제한적 예들에 불과하다는 점을 강조해야 한다. 상기 개시가 완전히 이해되면 많은 변형들 및 수정들이 본 기술분야에서 숙련된 자들에게 명백해질 것이다. 다음의 청구범위는 모든 이러한 변형들 및 수정들을 포함하는 것으로 해석되는 것으로 의도된다.

Claims (20)

  1. 랜덤 액세스 메모리(RAM) 캐시 메모리 컨트롤러에 있어서,
    메모리 액세스 요청들을 수신하기 위한 제1 인터페이스;
    캐시 액세스 요청들을 RAM 캐시 메모리 장치로 전송하기 위한 제2 인터페이스; 및
    제어 로직을 포함하며,
    메모리 액세스 요청을 수신하는 것에 응답하여, 상기 제어 로직은,
    상기 메모리 액세스 요청에 기초하여 캐시 태그 액세스 요청을 생성하고;
    상기 메모리 액세스 요청에 기초하여 상기 캐시 태그 액세스 요청과 다른 캐시 데이터 액세스 요청을 생성하고;
    상기 제2 인터페이스를 통해 상기 캐시 태그 액세스 요청을 상기 RAM 캐시 메모리 장치로 전송하고;
    상기 캐시 태그 액세스 요청을 처리함으로써 생성된 정보에 기초하여 상기 캐시 데이터 액세스 요청을 전송하는 것을 스케줄링하도록 구성된, RAM 캐시 메모리 컨트롤러.
  2. 제1항에 있어서, 상기 제어 로직은 상기 캐시 태그 액세스 요청 및 상기 캐시 데이터 액세스 요청 각각에 고유 식별자를 저장하도록 더 구성되며, 상기 고유 식별자는 동일한 메모리 액세스 요청으로부터 생성되는 상기 캐시 태그 액세스 요청 및 상기 캐시 데이터 액세스 요청 각각을 지정하는, RAM 캐시 메모리 컨트롤러.
  3. 제1항에 있어서, 상기 제어 로직은,
    상기 캐시 태그 액세스 요청 내의 어드레스에 대응되는 상기 RAM 캐시 메모리 장치 내에서 복수의 행들 중 소정 행을 식별하고;
    상기 소정 행에 저장된 하나 이상의 태그들의 일부만을 상기 캐시 태그 액세스 요청의 상기 어드레스 내의 태그의 일부와만 비교하도록 구성되는, RAM 캐시 메모리 컨트롤러.
  4. 제3항에 있어서, 상기 캐시 데이터 액세스 요청을 전송하는 것을 스케줄링하는 것은 상기 어드레스 내의 상기 태그의 상기 일부만을 비교하는 것에 기초하여 태그 미스(tag miss)를 결정하는 것에 응답하여 상기 캐시 데이터 액세스 요청을 상기 RAM 캐시 메모리 장치로 전송하는 것을 취소하는 것을 포함하는, RAM 캐시 메모리 컨트롤러.
  5. 제3항에 있어서, 상기 어드레스 내의 상기 태그의 상기 일부만을 비교하는 것에 기초하여 태그 미스를 결정하는 것에 응답하여, 상기 제어 로직은 상기 메모리 액세스 요청을 시스템 메모리 및 메인 메모리 중 하나 이상으로 전송하도록 더 구성되는, RAM 캐시 메모리 컨트롤러.
  6. 제3항에 있어서, 상기 캐시 데이터 액세스 요청을 전송하는 것을 스케줄링하는 것은 상기 소정 행의 상기 하나 이상의 태그들 전체를 상기 캐시 태그 액세스 요청의 상기 어드레스 내의 상기 태그 전체와 비교하는 것에 기초하여 태그 히트(tag hit)를 결정하는 것에 응답하여 상기 제2 인터페이스를 통해 상기 캐시 데이터 액세스 요청을 상기 RAM 캐시 메모리 장치로 전송하는 것을 포함하는, RAM 캐시 메모리 컨트롤러.
  7. 제6항에 있어서, 상기 제어 로직은 상기 캐시 태그 액세스 요청에 의한 액세스로 인해 발생되는 상기 태그 히트에 대응되는 태그의 위치에 기초하여 상기 캐시 데이터 액세스 요청에 의해 액세스된 소정 행의 데이터를 식별하도록 더 구성되는, RAM 캐시 메모리 컨트롤러.
  8. 방법에 있어서,
    프로세서에 의해, 메모리 장치에 저장된 데이터에 대한 메모리 액세스 요청들을 생성하는 단계;
    메모리 컨트롤러에 의해, 상기 프로세서로부터 상기 메모리 액세스 요청들을 수신하는 단계; 및
    메모리 액세스 요청을 수신하는 것에 응답하여,
    상기 메모리 컨트롤러에 의해, 상기 메모리 액세스 요청에 기초하여 태그 액세스 요청을 생성하는 단계;
    상기 메모리 컨트롤러에 의해, 상기 메모리 액세스 요청에 기초하여 상기 태그 액세스 요청과 다른 데이터 액세스 요청을 생성하는 단계;
    상기 메모리 컨트롤러에 의해, 상기 태그 액세스 요청을 상기 메모리 장치로 전송하는 단계; 및
    상기 메모리 컨트롤러에 의해, 상기 태그 액세스 요청을 처리함으로써 생성된 정보에 기초하여 상기 데이터 액세스 요청을 전송하는 것을 스케줄링하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 메모리 컨트롤러에 의해, 상기 태그 액세스 요청 및 상기 데이터 액세스 요청 각각에 고유 식별자를 저장하는 단계를 더 포함하며, 상기 고유 식별자는 동일한 메모리 액세스 요청으로부터 생성되는 상기 태그 액세스 요청 및 상기 데이터 액세스 요청 각각을 지정하는, 방법.
  10. 제9항에 있어서,
    상기 태그 액세스 요청 내의 어드레스에 대응되는 상기 메모리 장치 내에서 복수의 행들 중 소정 행을 식별하는 단계; 및
    상기 소정 행에 저장된 하나 이상의 태그들의 일부만을 상기 태그 액세스 요청의 상기 어드레스 내의 태그의 일부와만 비교하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서, 상기 데이터 액세스 요청을 전송하는 것을 스케줄링하는 단계는 상기 어드레스 내의 상기 태그의 상기 일부만을 비교하는 것에 기초하여 태그 미스를 결정하는 것에 응답하여 상기 데이터 액세스 요청을 상기 메모리 장치로 전송하는 것을 취소하는 단계를 포함하는, 방법.
  12. 제10항에 있어서, 상기 어드레스 내의 상기 태그의 상기 일부만을 비교하는 것에 기초하여 태그 미스를 결정하는 것에 응답하여, 상기 방법은 상기 메모리 액세스 요청을 시스템 메모리 및 메인 메모리 중 하나 이상으로 전송하는 단계를 더 포함하는, 방법.
  13. 제10항에 있어서, 상기 데이터 액세스 요청을 전송하는 것을 스케줄링하는 단계는 상기 소정 행의 상기 하나 이상의 태그들 전체를 상기 캐시 태그 액세스 요청의 상기 어드레스 내의 상기 태그 전체와 비교하는 것에 기초하여 태그 히트를 결정하는 것에 응답하여 상기 데이터 액세스 요청을 상기 메모리 장치로 전송하는 단계를 포함하는, 방법.
  14. 제13항에 있어서, 상기 캐시 태그 액세스 요청에 의한 액세스로 인해 발생되는 상기 태그 히트에 대응되는 태그의 위치에 기초하여 상기 캐시 데이터 액세스 요청에 의해 액세스된 소정 행의 데이터를 식별하는 단계를 더 포함하는, 방법.
  15. 컴퓨팅 시스템에 있어서,
    메모리 장치에 저장된 데이터에 대한 메모리 액세스 요청들을 생성하도록 구성된 프로세서; 및
    상기 메모리 장치에 결합된 메모리 컨트롤러를 포함하며;
    메모리 액세스 요청을 수신하는 것에 응답하여, 상기 메모리 컨트롤러는,
    상기 메모리 액세스 요청에 기초하여 태그 액세스 요청을 생성하고;
    상기 메모리 액세스 요청에 기초하여 상기 태그 액세스 요청과 다른 데이터 액세스 요청을 생성하고;
    상기 태그 액세스 요청을 상기 메모리 장치로 전송하고;
    상기 태그 액세스 요청을 처리함으로써 생성된 정보에 기초하여 상기 데이터 액세스 요청을 전송하는 것을 스케줄링하도록 구성된, 컴퓨팅 시스템.
  16. 제15항에 있어서, 상기 메모리 컨트롤러는 상기 태그 액세스 요청 및 상기 데이터 액세스 요청 각각에 고유 식별자를 저장하도록 더 구성되며, 상기 고유 식별자는 동일한 메모리 액세스 요청으로부터 생성되는 상기 태그 액세스 요청 및 상기 데이터 액세스 요청 각각을 지정하는, 컴퓨팅 시스템.
  17. 제16항에 있어서, 상기 메모리 컨트롤러는,
    상기 태그 액세스 요청 내의 어드레스에 대응되는 상기 메모리 장치 내에서 복수의 행들 중 소정 행을 식별하고;
    상기 소정 행에 저장된 하나 이상의 태그들의 일부만을 상기 태그 액세스 요청의 상기 어드레스 내의 태그의 일부와만 비교하도록 구성되는, 컴퓨팅 시스템.
  18. 제17항에 있어서, 상기 캐시 데이터 액세스 요청을 전송하는 것을 스케줄링하는 것은 상기 어드레스 내의 상기 태그의 상기 일부만을 비교하는 것에 기초하여 태그 미스를 결정하는 것에 응답하여 상기 캐시 데이터 액세스 요청을 상기 메모리 장치로 전송하는 것을 취소하는 것을 포함하는, 컴퓨팅 시스템.
  19. 제17항에 있어서, 상기 어드레스 내의 상기 태그의 상기 일부만을 비교하는 것에 기초하여 태그 미스를 결정하는 것에 응답하여, 상기 메모리 컨트롤러는 상기 메모리 액세스 요청을 시스템 메모리 및 메인 메모리 중 하나 이상으로 전송하도록 더 구성되는, 컴퓨팅 시스템.
  20. 제18항에 있어서, 상기 캐시 데이터 액세스 요청을 전송하는 것을 스케줄링하는 것은 상기 소정 행의 상기 하나 이상의 태그들 전체를 상기 캐시 태그 액세스 요청의 상기 어드레스 내의 상기 태그 전체와 비교하는 것에 기초하여 태그 히트를 결정하는 것에 응답하여 상기 캐시 데이터 액세스 요청을 상기 메모리 장치로 전송하는 것을 포함하는, 컴퓨팅 시스템.
KR1020207020210A 2017-12-12 2018-09-19 캐시 제어 인지 메모리 컨트롤러 KR102402630B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/839,700 US10572389B2 (en) 2017-12-12 2017-12-12 Cache control aware memory controller
US15/839,700 2017-12-12
PCT/US2018/051624 WO2019118035A1 (en) 2017-12-12 2018-09-19 Cache control aware memory controller

Publications (2)

Publication Number Publication Date
KR20200096971A true KR20200096971A (ko) 2020-08-14
KR102402630B1 KR102402630B1 (ko) 2022-05-26

Family

ID=63794666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207020210A KR102402630B1 (ko) 2017-12-12 2018-09-19 캐시 제어 인지 메모리 컨트롤러

Country Status (6)

Country Link
US (1) US10572389B2 (ko)
EP (1) EP3724775B1 (ko)
JP (1) JP7036925B2 (ko)
KR (1) KR102402630B1 (ko)
CN (1) CN111684427A (ko)
WO (1) WO2019118035A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102579319B1 (ko) * 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법
US11983121B1 (en) 2023-04-19 2024-05-14 Metisx Co., Ltd. Cache memory device and method for implementing cache scheduling using same

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10732897B2 (en) 2018-07-03 2020-08-04 Western Digital Technologies, Inc. Quality of service based arbitrations optimized for enterprise solid state drives
US11392320B2 (en) 2018-07-03 2022-07-19 Western Digital Technologies, Inc. Quality of service based arbitrations optimized for enterprise solid state drives
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120151251A1 (en) * 2010-12-08 2012-06-14 Advanced Micro Devices, Inc. Queue freeze on protocol error
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
US6427188B1 (en) * 2000-02-09 2002-07-30 Hewlett-Packard Company Method and system for early tag accesses for lower-level caches in parallel with first-level cache
JP4520788B2 (ja) * 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ
US20090006777A1 (en) * 2007-06-28 2009-01-01 Donley Greggory D Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor
US7680985B2 (en) * 2007-06-28 2010-03-16 International Business Machines Corporation Method and apparatus for accessing a split cache directory
US8341358B1 (en) * 2009-09-18 2012-12-25 Nvidia Corporation System and method for cleaning dirty data in a cache via frame buffer logic
JP2012103826A (ja) * 2010-11-09 2012-05-31 Fujitsu Ltd キャッシュメモリシステム
US20120136857A1 (en) * 2010-11-30 2012-05-31 Advanced Micro Devices, Inc. Method and apparatus for selectively performing explicit and implicit data line reads
US20120144118A1 (en) * 2010-12-07 2012-06-07 Advanced Micro Devices, Inc. Method and apparatus for selectively performing explicit and implicit data line reads on an individual sub-cache basis
US8825955B2 (en) * 2011-11-22 2014-09-02 The Regents Of The University Of Michigan Data processing apparatus having a cache configured to perform tag lookup and data access in parallel, and a method of operating the data processing apparatus
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8868843B2 (en) * 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9535832B2 (en) * 2013-04-30 2017-01-03 Mediatek Singapore Pte. Ltd. Multi-hierarchy interconnect system and method for cache system
US9652397B2 (en) * 2014-04-23 2017-05-16 Texas Instruments Incorporated Dynamic power reduction and performance improvement in caches using fast access
US9779025B2 (en) 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120151251A1 (en) * 2010-12-08 2012-06-14 Advanced Micro Devices, Inc. Queue freeze on protocol error
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102579319B1 (ko) * 2023-04-19 2023-09-18 메티스엑스 주식회사 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법
US11983121B1 (en) 2023-04-19 2024-05-14 Metisx Co., Ltd. Cache memory device and method for implementing cache scheduling using same

Also Published As

Publication number Publication date
JP7036925B2 (ja) 2022-03-15
US20190179760A1 (en) 2019-06-13
EP3724775A1 (en) 2020-10-21
KR102402630B1 (ko) 2022-05-26
WO2019118035A1 (en) 2019-06-20
EP3724775B1 (en) 2022-11-16
CN111684427A (zh) 2020-09-18
US10572389B2 (en) 2020-02-25
JP2021506033A (ja) 2021-02-18

Similar Documents

Publication Publication Date Title
KR102402630B1 (ko) 캐시 제어 인지 메모리 컨트롤러
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
US11429281B2 (en) Speculative hint-triggered activation of pages in memory
US10503670B2 (en) Dynamic per-bank and all-bank refresh
US8868843B2 (en) Hardware filter for tracking block presence in large caches
US11422707B2 (en) Scheduling memory requests for a ganged memory device
US11474942B2 (en) Supporting responses for memory types with non-uniform latencies on same channel
JP7108141B2 (ja) データ領域を記憶するためのキャッシュ
CN112088368B (zh) 动态的每存储体和全存储体刷新
US11526278B2 (en) Adaptive page close prediction

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