KR20140098199A - 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시 - Google Patents

물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시 Download PDF

Info

Publication number
KR20140098199A
KR20140098199A KR1020147017417A KR20147017417A KR20140098199A KR 20140098199 A KR20140098199 A KR 20140098199A KR 1020147017417 A KR1020147017417 A KR 1020147017417A KR 20147017417 A KR20147017417 A KR 20147017417A KR 20140098199 A KR20140098199 A KR 20140098199A
Authority
KR
South Korea
Prior art keywords
cache
memory
dram
row
processing unit
Prior art date
Application number
KR1020147017417A
Other languages
English (en)
Other versions
KR101893544B1 (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 KR20140098199A publication Critical patent/KR20140098199A/ko
Application granted granted Critical
Publication of KR101893544B1 publication Critical patent/KR101893544B1/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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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

Landscapes

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

Abstract

컴퓨팅 시스템의 대형 로우-기반 메모리에서 효율적 캐시 데이터 액세스를 위한 시스템 및 방법이 개시된다. 컴퓨팅 시스템은 프로세싱 유닛과 집적 3차원(3D) 동적 랜덤 액세스 메모리(DRAM)를 포함한다. 프로세싱 유닛은 캐시로 3D DRAM을 이용할 수 있다. 3D DRAM의 메모리 어레이 뱅크 내 멀티플 로우 중 각각의 로우는 적어도 멀티플 캐시 태그와, 멀티플 캐시 태그에 의해 표시되는 멀티플 대응 캐시 라인을 저장한다. 프로세싱 유닛으로부터 메모리 요청을 수신함에 응답하여, 3D DRAM은 수신한 메모리 요청 내 캐시 태그에 의해 표시되는 주어진 캐시 라인 상에서 수신한 메모리 요청에 따라 메모리 액세스를 수행한다. 멀티플 DRAM 거래를 이용하기 보다는, 단일, 복합 DRAM 거래를 이용하여 대기시간 및 전력 소모를 감소시킬 수 있다.

Description

물리적 로우에 함께 저장된 태그 및 데이터를 구비한 DRAM 캐시{A DRAM CACHE WITH TAGS AND DATA JOINTLY STORED IN PHYSICAL ROWS}
본 발명은 컴퓨팅 시스템에 관한 것이고, 특히, 컴퓨팅 시스템의 대형 로우-기반 메모리에서 효율적인 캐시 데이터 액세스에 관한 것이다.
반도체 제조 프로세스가 진보하고 온-다이 기하 치수가 감소함에 따라, 반도체 칩이 더 많은 기능 및 성능을 제공한다. 그러나, 설계 문제는 프로세싱 및 집적 회로 설계 분야의 현대 기술에서도 여전히 발생하고 있고, 이는 잠재적인 이점을 제한할 수 있다. 한가지 문제는 인터커넥트 지연이 2차원 평면 레이아웃 칩의 일련의 세대에서 단위 길이 당 계속 증가한다는 점이다. 또한, 개별 칩 간의 높은 전기 임피던스가 대기시간을 증가시킨다. 추가적으로, 칩을 벗어나 다른 다이에 이르는 신호는 이러한 긴 신호 루트에 대한 와류 커패시턴스 증가로 인해 이 신호들에 대한 전력 소모가 크게 증가할 수 있다(가령, 10배 내지 100배).
다른 설계 문제는 다량의 데이터에 액세스하는 대부분의 소프트웨어 애플리케이션이, 연산 시간이 일반적으로 메모리 대역폭에 의해 결정된다는 점에서, 통상적으로 메모리에 구속된다는 것이다. 오프-칩 동적 랜덤 액세스 메모리(DRAM)에 대한 메모리 액세스 대기시간은 수백 내지 수천의 클럭 사이클일 수 있고, 프로세서 설계에서 코어의 숫자 증가는 메모리 대역폭 문제를 두드러지게 하였다. 최근에, 단일 회로에 수직 및 수평으로 모두 집적되는 능동 전자 부품들의 2개 이상의 층을 포함하는 3차원 집적 회로(3D IC)에서 진보가 이루어지고 있다. 시스템 인 패키지(SiP) 또는 칩 스택 멀티-칩 모듈(MCM)이라 알려진 3D 패키징은 개별 칩들을 단일 패키지 내에 적층시킴으로써 공간을 절약한다. 이러한 층 내의 구성요소들은 수직으로든 수평으로든 관계없이 온-칩 시그널링을 이용하여 통신한다. 이러한 시그널링은 알려진 2차원 평면 레이아웃 회로에 비해 인터커넥트 신호 지연이 감소한다.
위 설명에서의 제조 경향은 마이크로프로세서 패키지 내에서 기가바이트 단위의 집적 메모리를 이끌 수 있다. 일부 경우에, 오프-칩 메모리에 액세스하기 전에 추가적인 온-칩 스토리지가 최종-레벨 캐시(LLC)와 같은 로우-기반 메모리로 사용될 수 있다. 추가 메모리에 의해 실현되는 실패율 감소는 프로세서와 오프-칩 메모리 사이의 대기시간 갭을 감추는 것을 돕는다. 그러나, 로우-기반 메모리에 대한 캐시 액세스 메커니즘은 이러한 추가 집적 메모리용으로 불충분할 수 있다. 멀티-기가바이트 캐시를 위한 수백 메가바이트와 같은 대형 태그 데이터 어레이는 마이크로프로세서 다이 상에 배치하기에 비싸고 비실용적일 수 있다.
64-바이트 라인으로부터 4-킬로바이트(KB) 라인까지 성장하는 것과 같이, 추가적인 집적 메모리를 위한 데이터 캐시 라인의 크기 증가는, 집적 메모리 내 캐시 라인의 수와 대응하는 태그의 크기를 모두 감소시킨다. 그러나, 더티 비트 및 일관성 정보는 원래 캐시 라인 크기(64-바이트 라인)의 입도(granularity) 상에서 여전히 유지될 수 있다. 추가적으로, 몇바이트만을 표적으로 할 때에도 전체 4KB 라인에 액세스할 수 있기 때문에, 데이터 전송이 과도한 대역폭을 소모할 수 있다.
집적 DRAM 내 추가 캐시의 데이터 및 태그를 저장 및 액세스하면서 DRAM 액세스 메커니즘을 이용하는 것은 상당한 전력을 소실시킨다. 추가적으로, 이러한 메커니즘은 특히, 고도로 연관된(연상) 온-패키지 캐시용으로, 많은 대역폭을 소모하고, 태그 및 데이터가 순차적 방식으로 판독됨에 따라 너무 많은 시간을 소비한다. 따라서, 온-패키지 DRAM은 많은 추가 데이터 스토리지를 제공하지만, 캐시 및 DRAM 액세스 메커니즘은 비효율적이다.
위에 비추어볼 때, 컴퓨팅 시스템의 대형 로우-기반 메모리에서의 효율적 캐시 데이터 액세스를 위한 효율적 방법 및 시스템이 요망된다.
컴퓨팅 시스템의 대형 로우-기반 메모리에서 효율적 캐시 데이터 액세스를 위한 시스템 및 방법이 고려된다.
일 실시예에서, 컴퓨팅 시스템은 프로세싱 유닛과 집적 동적 랜덤 액세스 메모리(DRAM)를 포함한다. 프로세싱 유닛의 예는 범용 마이크로프로세서, 그래픽 프로세싱 유닛(GPU), 가속 프로세싱 유닛(APU), 등을 포함한다. 집적 DRAM은 3차원(3D) DRAM일 수 있고, 프로세싱 유닛과 함께 시스템-인-패키지(SiP)에 포함될 수 있다. 프로세싱 유닛은 캐시로 3D DRAM을 이용할 수 있다.
다양한 실시예에서, 3D DRAM은 태그 어레이 및 데이터 어레이를 모두 저장할 수 있다. 3D DRAM의 메모리 어레이 뱅크 내 멀티플 로우 중 각각의 로우는 하나 이상의 캐시 태그와, 하나 이상의 캐시 태그에 의해 표시되는 하나 이상의 대응 캐시 라인을 저장할 수 있다. 프로세싱 유닛으로부터 메모리 요청을 수신함에 응답하여, 3D DRAM은 수신한 메모리 요청 내 캐시 태그에 의해 표시되는 주어진 캐시 라인 상에서 수신한 메모리 요청에 따라 메모리 액세스를 수행할 수 있다. 메모리 액세스 수행은 주어진 캐시 라인을 저장하는 멀티플 로우 중 각자의 로우의 단일 판독을 포함할 수 있다. 멀티플 DRAM 거래를 이용하기 보다는, 단일, 복합 DRAM 거래를 이용하여 대기시간 및 전력 소모를 감소시킬 수 있다.
이러한 실시예 및 그외 다른 실시예가 다음의 설명 및 도면을 참조할 때 더욱 이해될 수 있을 것이다.
도 1은 컴퓨팅 시스템의 일 실시예의 개략적 블록도다.
도 2는 시스템-인-패키지(SiP)의 실시예의 개략적 블록도다.
도 3은 컴퓨팅 시스템의 다른 실시예의 개략적 블록도다.
도 4는 캐시 스토리지 배열에 액세스하는데 사용되는 시퀀스 스텝의 일 실시예의 개략적 블록도다.
도 5는 효율적인 인-패키지 DRAM 액세스 방법의 일 실시예의 개략적인 순서도다.
발명이 다양한 변형 및 대안의 형태를 취할 수 있지만, 구체적인 실시예들이 예를 들어 도면으로 도시되고 여기서 세부적으로 설명된다. 그러나, 도면 및 도면에 대한 상세한 설명은 개시되는 특정 형태로 발명을 제한하고자 함이 아니며, 대신에, 발명은 첨부 청구범위에 의해 규정되는 바와 같은 본 발명의 사상 및 범위 내에 있는 모든 변형예, 등가물, 및 대안들을 커버하는 것이다.
다음의 설명에서, 본 발명의 완전한 이해를 돕기 위해 수많은 구체적 세부사항들이 제시된다. 그러나, 발명이 이러한 구체적 세부사항없이 실시될 수 있음을 당업자는 이해하여야 한다. 일부 예에서, 잘 알려진 회로, 구조, 및 기술은 본 발명의 본질을 흐리지 않기 위해 세부적으로 제시되지 않았다.
도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시예의 개략적 블록도가 도시된다. 도시되는 바와 같이, 마이크로프로세서(110)는 대응하는 하나 이상의 캐시 메모리 서브시스템(124a-124b)에 연결되는 하나 이상의 프로세서 코어(122a-122b)를 포함할 수 있다. 마이크로프로세서는 인터페이스 로직(140), 메모리 컨트롤러(130), 시스템 통신 로직(126), 및 공유 캐시 메모리 서브시스템(128)을 또한 포함할 수 있다. 일 실시예에서, 마이크로프로세서(110)의 도시되는 기능은 단일 집적 회로 상에 통합된다. 다른 실시예에서, 도시되는 기능은 컴퓨터 마더보드 상의 칩셋에 통합된다.
일 실시예에서, 마이크로프로세서(110)는 모바일 컴퓨터, 스마트폰, 또는 태블릿; 데스크탑; 서버; 또는 그외 다른 것 내의 독립형 시스템이다. 일 실시예에서, 시스템 통신 로직(116)은 시스템 버스다. 다른 실시예에서, 마이크로프로세서(110)는 디스크 메모리(162), DRAM(170), 주변 입/출력(I/O) 장치, 다른 프로세싱 유닛(가령, 다른 범용 마이크로프로세서)(이는 중앙 프로세싱 유닛(CPU), ; 그래픽 프로세싱 유닛(GPU), 가속 프로세싱 유닛(APU), 필드 프로그래머블 게이트 어레이(FPGA), 등이라 불릴 수도 있음)에 프로세서 코어(122a-122b)를 연결하기 위해 다양한 프로토콜 중 하나를 이용하는 로직(126)에 시스템 버스 컨트롤러를 통합한다. 이러한 실시예에서, 시스템 통신 로직(126)은 메모리 컨트롤러(130) 및 인터페이스 로직(140)의 기능을 대체 또는 통합할 수 있다.
컴퓨팅 시스템(100) 내 구성요소들의 추가적인 설명은 짧게 제공된다. 컴퓨팅 시스템(100)이 범용 마이크로프로세서(110)를 포함하는 것으로 일 실시예에서 도시되지만, 다른 용도로 사용되는 다른 실시예에서, 마이크로프로세서(110)는 다른 타입의 프로세싱 유닛으로 대체될 수 있다. 다른 타입의 프로세싱 유닛은 그래픽 프로세싱 유닛(GPU), 필드 프로그래머블 게이트 어레이(FPGA), 또는 가속 프로세싱 유닛(APU)을 포함할 수 있다. 일반적으로, APU는 추가적인 프로세싱 기능을 포함하는 칩이다. 추가적인 프로세싱 기능은 범용 CPU 외부에서의 하나 이상의 연산을 가속시키는데 사용될 수 있다. 일 실시예에서, APU는 GPU, FPGA, 또는 다른 프로세싱 유닛과 동일한 다이 상에 통합되는 범용 CPU를 포함할 수 있어서, 전력 소모를 감소시키면서 이러한 유닛들 간의 데이터 전송 속도를 개선시킨다. 다른 실시예에서, APU는 비디오 프로세싱 및 다른 애플리케이션-전용 가속기를 포함할 수 있다.
컴퓨팅 시스템(100)에 사용되는 주어진 타입의 프로세싱 유닛에 관계없이, 소프트웨어 애플리케이션이 점점 더 많은 데이터에 액세스함에 따라, 메모리 서브시스템이 더 과중하게 이용된다. 대기시간이 더 중대해진다. 인터커넥트 대기시간을 감소시키기 위해 더 많은 온-칩 메모리 스토리지가 사용될 수 있다. 예를 들어, 각각의 캐시 메모리 서브시스템(124a-124b)은 각각 프로세서 코어(122a-122b)에 대한 메모리 대기시간을 감소시킬 수 있다. 추가적으로, 마이크로프로세서(110)는 오프-칩 DRAM(170) 및/또는 오프-칩 디스크 메모리(162)에 액세스하기 전에 최종-레벨 캐시(LLC)로 공유 캐시 메모리 서브시스템(128)을 포함할 수 있다.
캐시 메모리 서브시스템(124a-124b, 128)에 의해 제공되는 추가 메모리에 의해 실현되는 실패율 감소는 프로세서 코어(122a-122b) 중 주어진 하나와 오프-칩 메모리 사이에서 대기시간을 감추는 것을 돕는다. 그러나, 각각의 캐시 메모리 서브시스템(124a-124b, 128)에 대해 이용할 공간이 제한되어 있다. 따라서, 각각의 캐시 메모리 서브시스템(124a-124b, 128)에 대해 각자 크기가 제한되고, 상당한 수의 액세스가 DRAM(170) 및/또는 디스크 메모리(162)와 같은 오프-칩 메모리로 여전히 전송된다.
메모리 대기시간 감소를 위한 시도를 계속하면서, 온-칩 메모리 스토리지를 더 제공하기 위해 다른 기술이 이용될 수 있다. 도 1에 도시되지 않지만, 일 실시예에서, 마이크로프로세서(110)는 3차원 집적 회로(3D IC)를 이용하여 최종-레벨 캐시(LLC)를 제공할 수 있다. 컴퓨팅 시스템에 대한 이러한 실시예의 추가적인 세부사항은 나중에 도 2 및 도 3의 설명에서 제공된다. 3D 집적 DRAM은 오프-칩 메모리 액세스를 감소시키기 위해 작은 대기시간의 인터커넥트와 상당히 많은 양의 추가 온-칩 메모리 스토리지를 제공할 수 있다. 마이크로프로세서(110) 내의 인터페이스 로직은 3D 집적 DRAM에 대해 어드레스 변환을 제공할 수 있다. 3D 집적 DRAM 내의 제어 로직은 3D 집적 DRAM 내의 멀티플 메모리 어레이 뱅크 내 멀티플 로우 중 주어진 로우의 액세스를 위해 사용되는 전형적인 스텝을 변경시킬 수 있다. 3D IC를 이용하는 실시예를 더 설명하기 전에, 도 1에 도시되는 컴퓨팅 시스템(100) 내 구성요소들의 추가적인 설명이 제공된다.
각각의 프로세서 코어(122a-122b)는 주어진 명령어 세트에 따라 명령어를 실행하기 위한 회로를 포함할 수 있다. 예를 들어, x86 명령어 세트 구조(ISA)가 선택될 수 있다. 대안으로서, Alpha, PowerPC 또는 다른 명령어 세트 구조가 선택될 수 있다. 일 실시예에서, 각각의 프로세서 코어(122a-122b)는 주어진 ISA의 명령어를 처리하는데 사용되는 수퍼스칼라, 멀티-스레디드 마이크로아키텍터를 포함할 수 있다.
캐시 메모리 서브시스템(124a-124b, 128)은 데이터의 블록을 저장하도록 구성되는 고속 캐시 메모리를 포함할 수 있다. 여기서 사용되는 바와 같이, "블록"은 일관성 용도를 위한 유닛으로 취급되는, 인접 메모리 위치에 저장되는 한 세트의 바이트다. 여기서 사용되는 바와 같이, 각각의 용어 "캐시 블록", "블록", "캐시 라인", 및 "라인"은 상호혼용가능하다. 일부 실시예에서, 블록은 캐시의 할당 및 할당해제의 유닛일 수도 있다. 블록 내 바이트의 수는 설계 선택에 따라 변경될 수 있고, 임의의 크기를 가질 수 있다. 추가적으로, 각각의 용어 "캐시 태그", "캐시 라인 태그", 및 "캐시 블록 태그"는 상호혼용가능하다.
각각의 캐시 메모리 서브시스템(124a-124b)은 대응하는 캐시 컨트롤러에 연결되는 캐시 메모리 또는 캐시 어레이를 포함할 수 있다. 캐시 메모리 서브시스템(124a-124b, 128)은 캐시의 계층으로 구현될 수 있다. (계층 내에서) 프로세서 코어(122a-122b) 근처에 위치하는 캐시는, 요망될 경우, 프로세서 코어(122a-122b) 내로 통합될 수 있다. 이러한 레벨의 캐시는 멀티-레벨 계층의 레벨-1(L1)일 수 있다. 일 실시예에서, 캐시 메모리 서브시스템(124a-124b) 각각은 L2 캐시 구조를 나타내고, 공유 캐시 메모리 서브시스템(128)은 L3 캐시 구조를 나타낸다. 다른 실시예에서, 캐시 메모리 서브시스템(114) 각각은 L1 캐시 구조를 나타내고, 공유 캐시 서브시스템(118)은 L2 캐시 구조를 나타낸다. 다른 실시예도 가능하고 고려된다.
일반적으로, 프로세서 코어(122a-122b)는 데이터 및 명령어를 위해 캐시 메모리 서브시스템(124a-124b)에 각각 액세스한다. 여기서 사용되는 바와 같이, 캐시 메모리 서브시스템에 관한 "액세스"라는 용어는 대응하는 요청 어드레스의 요청받는 데이터가 캐시에 존재할 경우 캐시 히트를 나타낼 수 있는 판독 또는 기록 요청 작동을 수행하는 것을 의미한다. 대안으로서, 요청받은 데이터가 캐시에 존재하지 않을 경우 판독 또는 기록 작동이 캐시 미스로 나타날 수 있다.
요청받은 블록이 각각의 캐시 메모리 서브시스템(124a-124b)에 또는 공유 캐시 메모리 서브시스템(128)에서 발견되지 않는 경우와 같이, 캐시 미스가 발생할 경우, 판독 요청이 발생되어 메모리 컨트롤러(130)에 송신된다. 메모리 컨트롤러(130)는 요청받은 블록에 대응하는 어드레스를 변환할 수 있고, 판독 요청을 메모리 버스(150)를 통해 오프-칩 DRAM(170)에 송신할 수 있다. 오프-칩 DRAM(170)은 오프-칩 디스크 메모리(162)로부터 I/O 컨트롤러 및 버스(160)와 메모리 버스(150)를 통해 데이터로 충전될 수 있다.
요청받은 블록을 갖는 대응하는 캐시 필 라인은 원래의 판독 또는 기록 요청을 완성하기 위해 오프-칩 DRAM(170)으로부터 캐시 메모리 서브시스템(124a-124b) 중 대응하는 하나에 운반될 수 있다. 캐시 필 라인은 캐시의 하나 이상의 레벨에 배치될 수 있다. 추가적으로, 캐시 필 라인은 캐시 내 대응하는 세트 내에 배치될 수 있다. 대응하는 세트 내에 가용한 웨이(ways)가 없을 경우, 통상적으로 최소 최근 사용(LRU) 알고리즘은 세트 내 어떤 웨이가 데이터를 퇴거시키고 캐시 필 라인 데이터에 의해 대체될 것인지를 결정한다. 통상적으로, 할당(allocation)은 캐시 계층의 하위 레벨로부터 인출되는 캐시 필 라인을 특정 캐시에 대한 캐시 미스에 후속하여 특정 캐시의 웨이 내로 저장함을 의미한다.
오프-칩 디스크 메모리(162)는 데이터의 비-휘발성, 랜덤 액세스 보조 스토리지를 제공할 수 있다. 일 실시예에서, 오프-칩 디스크 메모리(162)는 하나 이상의 하드 디스크 드라이브(HDD)를 포함할 수 있다. HDD는 통상적으로 하나 이상의 회전 디스크를 포함하고, 각각은 자기 매체로 코팅된다. 이 디스크들은 분당 수천 회전의 속도로 회전한다. 자기 액추에이터는 회전 디스크 위에 자기 판독/기록 장치를 배치하는 기능을 한다.
다른 실시예에서, 오프-칩 디스크 메모리(162)는 고상 디스크(SSD)를 이용한다. 고상 디스크는 고상 드라이브로도 불릴 수 있다. SSD는 HDD 인터페이스를 에뮬레이션할 수 있지만, SSD는 HDD에 발견되는 전기역학적 장치보다는 지속적 데이터를 저장하기 위해 고상 메모리를 이용한다. 예를 들어, SSD는 플래시 메모리의 뱅크들을 포함할 수 있다.
오프-칩 DRAM(170)은 집적 회로 내에 별도의 커패시터에 데이터의 각각의 비트를 저장하는 일 타입의 동적 랜덤 액세스 메모리일 수 있다. 커패시터는 충전 또는 방전될 수 있다. 이러한 두 상태를 이용하여 일 비트의 2개의 논리 값을 나타낼 수 있다. DRAM(170)은 비트 당 단일 트랜지스터 및 커패시터를 이용할 수 있다. 온-칩 동기식 RAM(SRAM)에 사용되는 6개의 트랜지스터에 비해, DRAM은 훨씬 높은 밀도에 도달할 수 있다. HDD 및 플래시 메모리와 달리, DRAM(170)은 비-휘발성 메모리가 아닌 휘발성 메모리일 수 있다. DRAM(170)은 전력을 제거하자마자 데이터를 잃을 수 있다.
오프-칩 DRAM(170)은 멀티-채널 메모리 구조를 포함할 수 있다. 이러한 타입의 구조는 사이에 더 많은 통신 채널들을 더함으로써 메모리 컨트롤러(130)에 대한 데이터의 전송 속도를 증가시킬 수 있다. 멀티-채널 구조는 복수의 메모리 모듈 및 마더보드 및/또는 복수의 채널을 지지할 수 있는 카드를 이용한다.
일 실시예에서, 각각의 메모리 모듈은 메모리 컨트롤러(130)에 대한 각자의 인터페이스에 대해 동일한 프로토콜을 가질 수 있다. 프로토콜의 일례는 더블 데이터 레이트(DDR) 타입의 프로토콜이다. 프로토콜은 클럭 사이클 당 데이터 전송의 수, 신호 전압 레벨, 신호 타이밍, 신호 및 클럭 위상 및 클럭 주파수와 같은 정보 전송에 사용되는 값을 결정할 수 있다. 프로토콜 예는 DDR2 SDRAM, DDR3 SDRAM, GDDR4(그래픽스 더블 데이터 레이트, 버전 4) SDRAM, 및 GDDR5(그래픽스 더블 데이터 레이트, 버전 5) SDRAM을 포함한다. 메모리 컨트롤러(130)는 메모리 채널에 인터페이싱하기 위한, 그리고 대응 프로토콜을 따르기 위한, 제어 회로를 포함할 수 있다. 추가적으로, 메모리 컨트롤러(130)는 메모리 요청을 대기(queuing)시키기 위한 요청 큐를 포함할 수 있다.
이제 도 2를 살펴보면, 시스템-인-패키지(SiP)(200, 240)의 실시예의 개략적 블록도가 도시된다. 3차원(3D) 패키징이 컴퓨팅 시스템 내에서 사용될 수 있다. 이러한 타입의 패키징은 시스템 인 패키지(SiP)로 불릴 수 있다. SiP는 하나 이상의 3차원 집적 회로(3D IC)를 포함한다. 3D IC는 단일 회로 내에 수직으로 및/또는 수평으로 집적되는 능동 전자 구성요소들의 2개 이상의 층을 포함한다. 일 실시예에서, 인터포저-기반 집적을 이용할 수 있고, 이 경우 3D IC가 프로세싱 유닛(220) 옆에 배치될 수 있다. 대안으로서, 3D IC가 다른 IC 바로 위에 적층될 수 있다.
다이-적층 기술은 고-대역폭 및 저-대기시간 인터커넥트로 동일 패키지에 함께 실리콘(집적 칩)의 복수의 개별 조각들을 물리적으로 적층시키는 제조 프로세스다. 다이는 실리콘 인터포저 상에서 나란히 또는 서로의 바로 위에 수직으로, 적층될 수 있다. SiP용 일 구조는 프로세싱 유닛 옆에 및/또는 위에, 하나 이상의 DRAM 칩을 적층하는 것이다. DRAM 칩을 적층함으로써, 시스템에 대한 매우 큰 캐시가 프로세싱 유닛용으로 실현될 수 있다. 일 실시예에서, 이러한 대형 캐시는 수백 MB(또는 그 이상) 수준의 크기를 가질 수 있다.
도시되는 바와 같이, 일 실시예에서, SiP(200)는 수평 저-대기시간 인터커넥트(210)를 통해 프로세싱 유닛(220)과 통신하는 하나 이상의 3차원(3D) DRAM(230, 232) 및 프로세싱 유닛(220)을 포함할 수 있다. 다시, 프로세싱 유닛(220)은 마이크로프로세서로도 불릴 수 있는 범용 CPU, 그래픽 프로세싱 유닛(GPU), 가속 프로세싱 유닛(APU), 필드 프로그래머블 게이트 어레이(FPGA), 또는 캐시와 같은 로우-기반 메모리를 이용하는 다른 데이터 프로세싱 장치일 수 있다.
인-패키지 수평 저-대기시간 인터커넥트(210)는 SiP가 사용되지 않을 때 감소된 길이의 인터커넥트 신호 대(versus) 긴 오프-칩 인터커넥트를 제공한다. 인-패키지 수평 저-대기시간 인터커넥트(210)는 프로세싱 유닛(220) 및 3D DRAM(230, 232)과 같은 칩이 회로 보드 상의 별도의 패키지 내에 장착되는 것처럼 특정 신호 및 프로토콜을 이용할 수 있다. SiP(200)는 패키지 외부 연결(214)에 도달하는 후면 비아 또는 관통-벌크 실리콘 비아(212)를 추가로 포함할 수 있다. 패키지 외부 연결(214)은 입/출력(I/O) 신호 및 전력 신호에 사용될 수 있다.
다른 실시예에서, SiP(240)는 프로세싱 유닛(220) 바로 위에 적층되는 3D DRAM(250)을 포함한다. 도시되지 않지만, SiP(200) 및 SiP(240) 각각에 대하여, 복수의 칩 또는 소자 층들이 서로 위에 적층될 수 있고, 직접적인 수직 인터커넥트(216)가 이들 간을 뚫고 연결된다. 서로 다른 소자 층들 사이를 뚫을 수 있는 수직 인터커넥트(216)의 크기 및 밀도는 3D IC 제조에 사용되는 기반 기술에 기초하여 변한다.
이제 도 3을 살펴보면, 3차원(3D) DRAM을 이용하는 컴퓨팅 시스템(300)의 일 실시예의 개략적인 블록도가 도시된다. 앞서 설명한 회로 및 로직은 동일하게 번호가 부여된다. 컴퓨팅 시스템(300)은 앞서 설명한 시스템 인 패키지(SiP)와 같은 3차원(3D) 패키징을 이용할 수 있다. 컴퓨팅 시스템(300)은 SiP(310)를 포함할 수 있다. 일 실시예에서, SiP(310)는 앞서 설명한 프로세싱 유닛(220)과, 저-대기시간 인터커넥트(340)을 통해 통신하는 3D DRAM(330)을 포함할 수 있다. 인-패키지 저-대기시간 인터커넥트(340)는 SiP가 사용되지 않을 때 긴 오프-칩 인터커넥트보다 짧은 길이로, 수평 및/또는 수직일 수 있다.
SiP(310)의 일 실시예가 DRAM 메모리 기술을 이용하는 것으로 도시되지만, 하나 이상의 버퍼 또는 다른 대등한 구조를 포함하는 로우-기반 액세스 기법을 이용하는 다른 메모리 기술도 가능하고 고려된다. 다른 메모리 기술의 예는 상변화 메모리, 스핀-토크-전달 저항 메모리, 멤리스터, 등을 포함한다.
프로세싱 유닛(220)은 소프트웨어 애플리케이션에 의해 설명되는 알고리즘을 위한 연산 및 작업을 수행하기 위한 실행 엔진(322)을 포함할 수 있다. 일 실시예에서, 실행 엔진(322)은 범용 CPU의 하나 이상의 프로세서 코어를 포함할 수 있다. 다른 실시예에서, 실행 엔진(322)은 적어도 그래픽 렌더링 및 3D 그래픽 애플리케이션을 위한 데이터-중심 작동을 수행하기 위해 쉐이더, 다른 그래픽 프로세싱 블록, 그리고 GPU의 단일-명령어-멀티플-데이터(SIMD) 파이프라인을 포함할 수 있다. 주어진 알고리즘에 따른 데이터 프로세싱을 위한 회로의 다른 예도 가능하고 고려된다.
프로세싱 유닛(220)은 메모리 컨트롤러(326), 메모리 버스(150), 및 I/O 컨트롤러 및 버스(160)를 통해 디스크 메모리(162)와 같은 오프-패키지 메모리와 통신할 수 있다. 도시되는 바와 같이, 일 실시예에서, 컴퓨팅 시스템(300)은 앞서 설명한 컴퓨팅 시스템(100)에 포함되는, 오프-패키지DRAM(170)을 포함할 수 없다. 온-패키지 3D DRAM(330)은 매우 큰 온-패키지 메모리 스토리지를 제공할 수 있고, 이는 오프-패키지 메모리 액세스의 수를 감소시키고, 긴 메모리 대기시간을 감춘다. 다른 실시예에서, 컴퓨팅 시스템(300)은 오프-패키지 DRAM(170)을 여전히 포함할 수 있다.
프로세싱 유닛(220)은 I/O 장치 및 다른 프로세싱 유닛에 대한 인터페이스 로직을 포함할 수 있다. 인터페이스 로직은 설명의 편이성을 위해 도시되지 않는다. 프로세싱 유닛(220)은 3D DRAM(330)과 통신하는 인터페이스 로직(324)을 또한 포함할 수 있다. 이러한 통신에 사용되는 프로토콜, 어드레스 포맷, 및 인터페이스 신호는 오프-패키지 DRAM(170)에 사용되는 프로토콜, 어드레스 포맷, 및 인터페이스 신호와 유사할 수 있다. 그러나, 3D DRAM(330)이 최종-레벨 캐시(LLC)로 사용될 때, 이러한 통신에 조정이 이루어질 수 있다. 예를 들어, 프로세싱 유닛(220)으로부터 3D DRAM(330)으로 전송되는 메모리 요청은 메모리 어레이 뱅크(332a-332b) 중 하나 내의 각자의 로우를 식별하는, DRAM 어드레스에 부가된, 캐시 태그를 포함할 수 있다. 수신한 캐시 태그를 이용하여, 3D DRAM(330) 내의 식별된 주어진 로우에 저장되는 캐시 태그에 비교할 수 있다.
다른 DRAM 토폴로지와 마찬가지로, 3D DRAM(330)은 멀티플 메모리 어레이 뱅크(332a-332b)를 포함할 수 있다. 각각의 뱅크(332a-332b)는 로우 버퍼(334a-334b) 중 각자 하나씩을 포함할 수 있다. 각각의 로우 버퍼(334a-334b)는 메모리 어레이 뱅크(332a-332b) 내 멀티플 로우 중 액세스된 로우에 데이터를 저장할 수 있다. 액세스된 로우는 수신한 메모리 요청 내 DRAM 어드레스에 의해 식별될 수 있다. 제어 로직(336)은 로우 버퍼에 저장된 하나 이상의 캐시 태그와, 수신한 메모리 요청 내 캐시 태그 사이에서 태그 비교를 수행할 수 있다. 추가적으로, 제어 로직은 수신한 DRAM 어드레스 내 비트 필드보다 캐시 태그 비교 결과를 이용함으로써 로우 버퍼의 칼럼 액세스를 변경할 수 있다.
제어 로직(336)은 로우 버퍼 내에 저장되는 메타데이터를 업데이트할 수 있다. 메타데이터는 적어도 최소 최근 사용(LRU) 값, 더티 비트, 및 캐시 일관성 값을 포함할 수 있다. 제어 로직(336)은 식별된 로우 및 로우 버퍼의 액세스를 동기화하여, 멀티플 DRAM 거래를 단일, 복합 거래로 변화시킬 수 있다. 이러한 단일, 복합 거래는 3D DRAM(330) 내의 데이터 및 제어 라인의 활성화 및 프리차지를 수행하여, 한번에, 식별된 로우에 액세스하고, 한번에, 로우 버퍼에 저장된 수정 콘텐츠를 식별된 로우에 풋-백(put back)할 수 있다. 추가적인 설명이 이어진다.
이제 도 4를 참조하면, 캐시 스토리지 배열(400)에 액세스하는데 사용되는 시퀀스 스텝의 일 실시예를 설명하는 개략적 블록도가 도시된다. 데이터는 다양한 방식으로 3D DRAM 내에 저장될 수 있다. 예를 들어, 주어진 메모리 어레이 뱅크 내의 각각의 로우는 세트-연관 캐시 조직을 이용하여 데이터를 저장할 수 있다. 저장된 데이터는 캐시 라인으로 분할될 수 있다. 각각의 로우는 동일 로우 내의 캐시 라인에 대응하는 캐시 태그를 또한 저장할 수 있다. 더욱이, 각각의 로우는 대체 상태, 캐시 일관성 상태, 더티 비트, 등과 같이, 주어진 캐시 라인에 대응하는 메타데이터를 저장할 수 있다.
캐시 스토리지 배열(400)의 일 실시예가 DRAM 메모리 기술의 이용을 설명하고 있으나, 하나 이상의 버퍼 또는 다른 대등 구조를 포함한 로우-기반 액세스 기법을 이용하는 다른 메모리 기술도 가능하고 고려된다. 다른 메모리 기술의 예는 상변화 메모리, 스핀-토크-전달 저항 메모리, 멤리스터, 등을 포함한다.
3D DRAM 내 하나 이상의 메모리 어레이 뱅크 중 주어진 하나가 도 4에 도시된다. 메모리 어레이 뱅크(430)는 멀티플 로우(432a-432k)를 포함할 수 있다. 각각의 로우(432a-432k)는 N-웨이 세트-연관 캐시 조직을 위한 캐시 태그 및 캐시 라인을 저장할 수 있고, N은 1보다 큰 정수다. 8-웨이, 16-웨이, 32-웨이, 등과 같은 서로 다른 개수의 웨이가 선택될 수 있다. 예를 들어, 로우(432a)는 필드(434a-434d)에 캐시 태그를 저장한다. 로우(432a)는 필드(438a-438d)에 대응하는 캐시 라인의 데이터 부분을 저장할 수 있다. 따라서, 메모리 어레이 뱅크(430)는 캐시 조직의 태그 어레이 및 데이터 어레이를 단일 물리 구조로 조합한다. 로우(432a) 내 필드(4343a, 434d)와 같이, 각 로우의 일부분을 이용하여, 필드(438a-438d)와 같이, 로우의 나머지에 저장되는 데이터 요소에 대응하는 태그 엔트리를 홀딩할 수 있다.
메모리 어레이 뱅크(430)의 로우(432a-432k) 내 태그 스토리지는 3D DRAM의 총 크기의 고정된 분율일 수 있다. 일 실시예에서, 캐시 라인 또는 캐시 블록의 데이터 부분은 64바이트의 데이터를 저장한다. 다른 크기도 가능하고 고려된다. 그러나, 캐시 라인의 크기는 메모리 어레이 뱅크(430)에 사용되는 캐시 스토리지 배열(400)로 인해 변하지 않을 수 있다. 캐시 스토리지 배열(400) 및 시퀀스 스텝은 64-바이트 크기와 같이, 캐시 라인 크기를 동일하게 유지시키면서, 3D DRAM의 전체 크기를 갖는 태그 스토리지 스케일을 가능하게 할 수 있다. 어떤 온-칩 SRAM 스토리지도 프로세싱 유닛 내 태그 스토리지를 위해 이용될 수 없다.
일 실시예에서, 메모리 어레이 뱅크(430)는 30-웨이 세트-연관 캐시 조직을 이용한다. 각각의 로우(432a-432k)는 32개의 웨이를 저장하기에 충분한 공간을 가질 수 있지만, 그 중 2개는 대응하는 캐시 태그 정보를 저장하는데 이용될 수 있다. 일례에서, 캐시 라인은 64바이트이고, 캐시 태그는 4바이트다. 본 예에서, 2개의 캐시 라인은 2라인 x 64바이트 = 128 바이트의 스토리지를 제공한다. 본 예에서, 태그 스토리지는 2개의 캐시 라인에 의해 통상적으로 점유되는 공간에 배치된다. 30개의 캐시 라인의 경우, 태그 스토리지는 30웨이 x 4바이트 = 120 바이트를 이용한다. 추가의 8바이트를 이용하여, 대체 결정, 사전인출 힌트, 프로파일링 데이터, 더티 비트, 캐시 일관성 상태, 등을 개선시키기 위한 추가 정보와 같이, 추가적인 메카데이터를 저장할 수 있다.
로우(432a-432k)의 각각의 로우는 저장되는 캐시 라인에 대응하는 메타데이터를 저장할 수 있다. 예를 들어, 로우(432a)는 필드(436a)에 상태 메타데이터를 저장한다. 저장되는 메타데이터는 각각의 대응 캐시 라인를 위해 다음 중 하나 이상 - 유효 비트, 대응하는 캐시 블록을 소유하는 소스를 표시하는 캐시 블록 오너 인코딩, 캐시 컨트롤러에 의해 이용되는 캐시 대체 알고리즘과 연관하여 사용되는 최소 최근 사용(LRU) 퇴거 정보, 수정, 배타, 소유, 공유, 무효, 등과 같은 캐시 일관성 상태를 지정하는 표시, 더티 비트, 사전인출 힌트 정보, 프로파일링 데이터, 등을 적어도 포함할 수 있다. 다른 타입의 상태 정보도 가능하고 고려된다.
메모리 어레이 뱅크(430)의 로우에 저장된 정보로 계속하여, 로우(432k)는 로우(432a)에서와 유사한 포맷으로 정보를 저장할 수 있다. 예를 들어, 로우(432k)는 필드(434m-434q)에 태그를, 필드(436k)에 상태 메타데이터를, 그리고 필드(438m-438q)에 대응하는 캐시 라인의 데이터 부분을 저장할 수 있다. 로우(432a-432k)에 저장되는 정보가 특정 순서 및 인접 공간에서 도시되지만, 인접한지 여부에 관계없이 데이터 저장을 위한 다른 배치도 가능하고 고려된다. 특정 스토리지 배열이 설계 교환에 기초하여 선택될 수 있다.
로우 버퍼(440)는 로우(432a-432k) 중 선택된 로우로부터 판독되는 데이터 및 메타데이터를 저장할 수 있다. 로우 버퍼(440)는 로우(432a-432k)와 유사한 스토리지 배열을 이용할 수 있다. 예를 들어, 로우 버퍼(440)는 필드(444a-444d) 내 N 웨이의 세트-연관 캐시 조직을 위한 캐시 태그 정보를 저장할 수 있다. 로우 버퍼(440)는 필드(448a-448d) 내 대응하는 캐시 라인의 데이터 부분을 저장할 수 있다. 로우 버퍼(440)는 필드(446) 내, 대응하는 상태 메타데이터(state metadata)와 같은, 상태 정보(status information)를 저장할 수 있다.
일례에서, 캐시 라인은 64 바이트이고, 캐시 태그는 4바이트이며, 메모리 어레이 뱅크(430)는 30-웨이 세트-연관 캐시 조직을 이용한다. 각각의 로우(432a-432k)는 태그 스토리지를 위해 2 웨이, 그리고 데이터 스토리지를 위해 30 웨이를 이용할 수 있다. 2웨이는 메타데이터 스토리지를 또한 포함할 수 있다. 따라서, 각각의 로우(432a-432k)는 32 웨이 x 64 바이트/웨이 = 2,048 바이트 또는 2 킬로-바이트(KB)의 스토리지를 포함한다. 마찬가지로, 로우 버퍼(440)는 2KB의 스토리지를 포함한다. 각각의 로우(432a-432k)는 정보 저장을 위해 DRAM 메모리 기술을 이용할 수 있다. 그러나, 로우 버퍼(440)는 레지스터, SRAM 셀, 또는 다른 저장 메커니즘을 이용할 수 있다. 따라서, 로우 버퍼(440)의 반복적 액세스는 로우(432a-432k) 중어떤 하나의 반복된 액세스보다 더 효율적일 수 있다.
3D DRAM은 대응하는 프로세싱 유닛에 대한 초대형 인-패키지 메모리 스토리지를 저장할 수 있다. 이러한 대형 메모리 스토리지는 최종-레벨 캐시로 사용될 수 있다. 일 실시예에서, 캐시 라인 또는 캐시 블록의 데이터 부분은 64바이트의 데이터를 저장한다. 다른 크기도 가능하고 고려된다. 3D DRAM은 적어도 수백 메가바이트(MB) 또는 그 이상의 크기를 가질 수 있다. 메모리 어레이 뱅크(430)는 3D DRAM 내에 멀티플 뱅크 중 하나의 뱅크일 수 있다. 일례에서, 3D DRAM은 512MB의 크기를 갖고, 이는 8,388,608 개의 개별 64-바이트 캐시 라인을 저장할 수 있다. 대응하는 캐시 태그는 4 내지 8 바이트의 크기를 가질 수 있다. 4바이트 캐시 태그의 경우, 대응하는 태그 어레이는 8,388,608 x 4바이트 = 32 MB의 크기를 갖는다. 이러한 대형 태그 어레이는 프로세싱 유닛 내 온-칩 SRAM에 쓸모있게 저장되지 않을 수 있다. 대신에, 이러한 대형 태그 어레이가, 도 4에 도시되는 바와 같이, 3D DRAM 내에 저장될 수 있다.
3D DRAM에 저장되는 캐시 라인에 대응하는 태그, 상태 정보, 및 데이터에 액세스하기 위해 스텝(1-7)의 시퀀스가 도 4에 도시된다. 메모리 어레이 뱅크(430)가 동일 로우 내의 태그 어레이 및 데이터 어레이를 저장하는 캐시로 사용될 때, 로우(432a-432k) 중 주어진 로우에 대한 스텝(1-7)을 이용하는 시퀀스와는 다른 액세스 시퀀스는 큰 대기시간을 가질 수 있다. 예를 들어, DRAM 액세스는 통상적으로, 제 1 활성화 또는 오픈 스테이지, 전체 로우의 콘텐츠를 로우 버퍼 내로 복사하는 스테이지, 태그 판독 스테이지, 태그 비교 스테이지, 칼럼 액세스를 포함하는 데이터 판독 또는 기록 액세스 스테이지, 제 1 사전인출 또는 클로즈 스테이지, 제 2 활성화 또는 오픈 스테이지, 전체 로우의 콘텐츠를 다시 로우 버퍼 내로 복사하는 스테이지, 태그 판독 스테이지, 태그 비교 스테이지, 매칭 태그에 대응하는 상태 정보를 위한 업데이트 스테이지, 및 제 2 사전인출 또는 클로즈 스테이지를 포함한다.
메모리 어레이 뱅크(430) 내의 액세스 스텝을 계속하면, 다른 로우에 저장되는 다른 데이터가 그 동안에 액세스될 경우 로우 버퍼의 각각의 액세스 이후에 하나 이상의 추가적인 사전인출 및 활성화 스테이지가 포함될 수 있다. 단일 캐시 액세스를 위해 복수의 DRAM 거래를 이용하는 대신에, 스텝(1-7)의 시퀀스를 이용하여 캐시 액세스를 단일 DRAM 거래로 변환할 수 있다. 활성화/오픈, 칼럼 액세스, 판독, 기록, 및 사전인출/클로즈와 같은, 서로 다른 DRAM 작동들 각각은 각자 서로 다른 대기시간을 갖는다. 활성화 및 사전인출 작동은 판독 및 기록 작동보다 훨씬 큰 대기시간을 가지는 경우가 잦다. 따라서, 단일, 복합 거래를 생성하는데 사용되는 스텝(1-7)의 시퀀스는 개별 활성화 및 사전인출 작동의 수를 감소시킬 수 있다.
시퀀스(1) 중, 프로세싱 유닛으로부터의 메모리 요청이 3D DRAM에 의해 수신될 수 있다. 메모리 요청은 3D 집적 제조 프로세스를 통해 가용한 수평 또는 수직의 짧은 저-대기시간 인터커넥트 루트를 가로질러왔을 수 있다. 완전한 어드레스의 일부분이 어드레스(410)로 도시된다. 필드(412, 414)는 각각 캐시 태그 및 페이지 인덱스를 저장할 수 있다. 완전한 어드레스의 다른 부분은 채널 인덱스, 뱅크 인덱스, 서브 어레이 인덱스, 등 중 하나 이상을 포함하여, 3D DRAM 내의 메모리 어레이 뱅크(430)를 식별할 수 있다. 시퀀스(2) 중, 로우(432a-432k) 중 주어진 로우가 페이지 인덱스(414)에 의해 다른 로우로부터 선택될 수 있다.
시퀀스(3) 중, 활성화 또는 오픈 스테이지가 실행되어 로우(432a-432k) 중 선택된 로우의 전체 콘텐츠를 로우 버퍼(440) 내로 복사한다. 3D DRAM(또는 일반적으로 DRAM) 내 로우(432a-432k) 중 선택된 로우를 판독하는 것은, "소멸" 작동이다. 선택된 로우의 전체 콘텐츠의 복제본이 로우 버퍼(440)에서 유지된다. 메모리 어레이 뱅크(430)의 로우로부터 로우 버퍼 내로 데이터를 판독하는 이러한 프로세스는 "활성화" 또는 "오픈"이라 불린다. 서로 다른 로우로부터의 데이터에 액세스하여야 할 때, 로우 버퍼(440)의 콘텐츠가 "사전인출"되거나 "클로즈"될 수 있고, 이는 로우 버퍼(440)에 저장된 데이터의 현재 값을 메모리 어레이 뱅크(430) 내로 배치한다.
캐시 태그를 이용하여, 멀티플 캐시 라인 중 어느 캐시 라인이 선택된 로우 내에서 액세스되고 있는지를 결정할 수 있다. 예를 들어, 30-웨이 세트-연관 캐시 조직에서, 로우(432a)가 선택될 때, 필드(434a-434d)에 저장되는 캐시 태그 값을 이용하여, 필드(438a-438d)에 저장된 30 캐시 라인 중 어느 캐시 라인에 액세스되고 있는지를 결정할 수 있다. 어드레스(410) 내 필드(412)에 저장되는 캐시 태그는 로우 버퍼(440)에 저장되는 멀티플 캐시 라인 중 대응하는 캐시 라인의 위치를 파악하기 위해 비교 로직에 사용될 수 있다.
시퀀스(4) 중, 필드(412)에 저장된 캐시 태그 값이 로우 버퍼(440) 내 필드(444a-444d) 중 하나에 저장된 캐시 태그 값과 일치하고 필드(446)에 저장된 대응하는 캐시 라인 상태가 대응 캐시 라인이 유효 캐시 라인임을 표시할 때, 캐시 라인 히트가 발생할 수 있다. 일 실시예에서, 이러한 태그 비교 작동은 단일 연속 버스트에서 필드(444a-444d)에 저장된 캐시 태그 각각을 판독할 수 있다. 일례에서, 캐시 태그는 앞서 예에서 설명한 바와 같이 2 캐시 라인과 동등한 크기의 공간에 저장된다. 이러한 2 캐시 라인 가치의 정보가 단일 작동에서 로우 버퍼(440)로부터 판독될 수 있다. 다음에, 비교 로직이 필드(444a-444d)로부터 판독된 캐시 태그 각각을 필드(412)에 저장된 캐시 태그 값에 비교할 수 있다.
다른 실시예에서, 수신한 어드레스로부터 하나 이상의 비트가, 태그 비교 로직을 위해 필드(444a-444d)에 저장된 캐시 태그의 서브그룹을 선택할 수 있다. 태그 매치가 결정될 경우, 3D DRAM 액세스의 후속 단계가 진행될 수 있다. 매치가 발생한다고 결정되지 않을 경우, 필드(444a-444d)에 저장된 캐시 태그의 제 1 서브그룹과는 다른 서브그룹이 태그 비교 로직을 위해 선택될 수 있다. 이러한 메커니즘이 3개 이상의 서브그룹으로 일반화될 수 있다. 이러한 메커니즘은 태그 비교에 사용되는 판독 작동의 총 크기 및/또는 총 집합 버스트 길이 및/또는 버스 점유도를 감소시킬 수 있다.
시퀀스(5) 중, 로우 버퍼(440)에 저장되는 멀티플 캐시 라인 중 주어진 캐시 라인이 태그 비교 결과에 기초하여 선택된다. 이러한 칼럼 액세스는 필드(444a-444d)의 캐시 태그와, 필드(446)에 저장되는 캐시 라인 상태 정보와 같이, 수신한 어드레스에 저장되는 그리고 로우 버퍼(440)에 저장되는 정보에 기초한다. 선택된 주어진 캐시 라인은 수신한 메모리 요청에 기초하여 판독 또는 기록된다. 일 실시예에서, 오프셋 값은 수신한 어드레스에 저장될 수 있고, 액세스될 선택된 캐시 라인 내의 특정 바이트 또는 워드를 표시하는데 사용될 수 있다. 판독 또는 기록 작동은 로우 버퍼(440)에 저장된 콘텐츠에 바로 작용할 수 있다.
시퀀스(6) 중, 선택된 캐시 라인에 대응하는 필드(446)에 저장된 상태 정보가 업데이트된다. 예를 들어, 캐시 일관성 상태가 변경되었을 수 있고, LRU 대체 상태가 변경되었을 수 있으며, 캐시 블록 오너 식별자(ID)가 변경되었을 수 있고, 사전인출 힌트 정보 및 프로파일링 데이터가 변경되었을 수 있으며, 등등이다. 다시, 업데이트 작동은 로우 버퍼(440)에 저장된 콘텐츠에 바로 작용할 수 있다. 시퀀스(7) 중, 사전인출 또는 클로즈 스테이지가 실행되어, 로우 버퍼(440)의 전체 콘텐츠를 다시 로우(432a-432k) 중 선택된 로우 내로 복사한다. 적어도 캐시 라인들 중 주어진 캐시 라인과 상태 정보와 같이, 로우 버퍼(440) 내 콘텐츠 중 일부분이 이제 수정된다.
도 3에 도시되는 제어 로직(336)과 같은 제어 로직은, 시퀀스(3-7)에서 수행되는 작동들이 중단없는 작동의 블록으로 발생함을 보장할 수 있다. 예를 들어, 시퀀스(3)에서 오픈 작동이 개시되면, 메모리 어레이 뱅크(430) 내 데이터에 작용하기를 기다리는 다른 메모리 요청이, 시퀀스(3-7)가 완성될 때까지 제어 로직에 의해 계속 대기하도록 지시받을 수 있다. 이러한 3D DRAM의 단일, 복합 액세스는 추가적인 고비용 활성화 및 사전인출 대기시간을 피한다. 3D DRAM의 이러한 단일, 복합 액세스는, 단일 활성화 대기시간, 단일 사전인출 대기시간, 캐시 라인 상에서 수행되는 단일 판독/기록 작동, 상태 정보 업데이트를 위한 단일 기록 작동, 및 태그 판독 및 비교를 위한 대기시간에 대한 단일 메모리 요청에 대응하는 액세스의 대기시간을 유지시킬 수 있다.
이제 도 5를 살펴보면, 효율적인 인-패키지 DRAM 액세스를 위한 방법(500)의 일 실시예의 개략적인 순서도가 도시된다. 설명을 위해, 본 실시예 및 나중에 설명되는 방법의 후속 실시예의 단계들이 순차적으로 도시된다. 그러나 다른 실시예에서, 일부 단계는 도시된 것과는 다른 순서로 이루어질 수 있고, 일부 단계는 동시에 수행될 수 있으며, 일부 단계는 다른 단계와 조합될 수 있고, 일부 단계는 생략될 수 있다.
하나 이상의 컴퓨터 프로그램 또는 소프트웨어 애플리케이션이 블록(502)에서 실행된다. 프로세싱 유닛은 이러한 애플리케이션들을 실행할 수 있다. 프로세싱 유닛의 예는 앞서 제시된 바 있다. 프로세싱 유닛은 3D DRAM과 같은, 3D 집적 메모리를 또한 포함하는 시스템-인-패키지(SiP) 내에 놓일 수 있다. 프로세싱 유닛은 캐시로 3D DRAM을 이용할 수 있다.
블록(504)에서, 프로세싱 유닛은 프로세싱 유닛 내의 캐시 메모리 서브시스템 내의 주어진 메모리 요청 미스를 결정할 수 있다. 블록(506)에서, 프로세싱 유닛은 3D DRAM과 같이 인-패키지 집적 DRAM 캐시에 주어진 메모리 요청에 대응하는 어드레스를 전송할 수 있다. 어드레스는 온-칩 캐시에 액세스하기 위해 프로세싱 유닛 내에 사용되는 대응하는 캐시 어드레스로부터 변환되는 DRAM 어드레스에 추가하여 비-변환 캐시 태그를 포함할 수 있다. 블록(508)에서, 3D DRAM 내의 제어 로직은 3D DRAM 내 메모리 어레이 뱅크 내의 어드레스에 대응하는 주어진 로우를 식별할 수 있다.
블록(510)에서, 3D DRAM 내의 제어 로직은 주어진 로우를 활성화시키고 오픈시킬 수 있다. 블록(512)에서, 주어진 로우의 콘텐츠는 복사되어 로우 버퍼에 저장될 수 있다. 블록(514)에서, 로우 버퍼 내의 태그 정보가 어드레스의 태그 정보와 비교될 수 있다. 블록(506-512)에서 설명되는 단계들은 도 4와 관련하여 앞서 설명한 시퀀스(1-4)에 대응할 수 있다.
태그 비교가 태그 히트가 발생하지 않는다고 결정할 경우(조건 블록(516)), 블록(518)에서, 메모리 요청이 메인 메모리에 전송될 수 있다. 메인 메모리는 오프-칩 비-집적 DRAM 및/또는 오프-칩 디스크 메모리를 포함할 수 있다. 태그 비교가 태그 히트 발생을 결정할 경우(조건 블록(516)), 블록(520)에서, 로우 버퍼 내 대응하는 캐시 라인 상에서 판독 또는 기록 작동이 수행된다.
블록(522)에서, 캐시 라인을 위한 상태 정보를 저장하는 로우 버퍼 내 대응하는 메타데이터가 업데이트된다. 블록(524)에서, 로우 버퍼에 저장된 수정 및 비수정 정보 모두가 다시 주어진 로우에 복사된다. 사전인출 및 클로즈 스테이지가 수행되어 데이터를 이동시킨다.
상술한 실시예는 소프트웨어를 포함할 수 있다. 이러한 실시예에서, 방법 및/또는 메커니즘을 구현하는 컴퓨터 판독가능 매체 상에서 저장되거나 운반될 수 있다. 프로그램 명령어를 저장하도록 구성되는 수많은 타입의 매체가 가용하고, 하드 디스크, 플라피 디스크, CD-ROM, DVD, 플래시 메모리, 프로그래머블 ROM(PROM), 랜덤 액세스 메모리(RAM), 및 다양한 다른 형태의 휘발성 또는 비-휘발성 스토리지를 포함한다. 일반적으로 말해서, 컴퓨터 액세스가능 스토리지 매체는 컴퓨터에 명령어 및/또는 데이터를 제공하기 위해 사용 중 컴퓨터에 의해 액세스가능한 임의의 스토리지 매체를 포함할 수 있다. 예를 들어, 컴퓨터 액세스가능 스토리지 매체는 자기 또는 광학 매체와 같은 스토리지 매체, 예를 들어, 디스크(고정식 또는 제거가능형), 테이프, CD-ROM, 또는 DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, 또는 블루-레이를 포함할 수 있다. 스토리지 매체는 RAM(가령, 동기식 동적 RAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3, 등) SDRAM, 저-전력 DDR(LPDDR2, 등) SDRAM, 램버스 DRAM(RDRAM), 정적 RAM(SRAM), 등), ROM, 플래시 메모리, 비-휘발성 메모리(가령, 플래시 메모리), 범용 시리얼 버스(USB) 인터페이스, 등과 같은 주변 인터페이스를 통해 액세스가능)와 같은 휘발성 또는 비-휘발성 메모리 매체를 더 포함할 수 있다. 스토리지 매체는 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 액세스가능한 스토리지 매체와, 마이크로일렉트로미캐니컬 시스템(MEMS)을 포함할 수 있다.
추가적으로, 프로그램 명령어는 GDS II 스트림 포맷(GDSII)와 같은 데이터베이스 포맷 또는 VHDL, Verilog와 같은 디자인 언어(HDL), 또는 C와 같은 하이 레벨 프로그래밍 언어로 하드웨어 기능의 하이 레벨 레지스터-트랜스퍼 레벨(RTL) 디스크립션 또는 거동-레벨 디스크립션을 포함할 수 있다. 일부 경우에, 디스크립션(description)은 합성 라이브러리로부터 게이트들의 리스트를 포함하는 네트리스트를 제공하기 위해 디스크립션을 합성할 수 있는 합성 툴에 의해 판독될 수 있다. 네트리스트는, 시스템을 포함하는 하드웨어의 기능을 또한 나타내는, 한 세트의 게이트를 포함한다. 네트리스트는 그 후 마스크에 적용될 기하적 형상을 설명하는 데이터 세트를 생성하도록 배치 및 루팅될 수 있다. 마스크는 그 후 시스템에 대응하는 회로 또는 반도체 회로를 생성하도록 다양한 반도체 제조 스텝에 사용될 수 있다. 대안으로서, 컴퓨터 액세스가능 스토리지 매체 상의 명령어는 요망되는 바에 따라, (합성 라이브러리가 있는 또는 없는) 네트리스트, 또는 데이터 세트일 수 있다. 추가적으로, 명령어는 Cadence®, EVE®, 및 Mentor Graphics®와 같은 판매사로부터 하드웨어 기반 타입 에뮬레이터에 의해 에뮬레이션 용도로 이용될 수 있다.
위 실시예가 상당히 세부적으로 설명되었으나, 위 개시내용을 완전히 이해할 경우 수많은 변형예 및 수정예가 다 업자에게 명백해질 것이다. 다음의 청구범위는 이러한 모든 변형예 및 수정예를 포괄하는 것으로 해석되어야 한다.

Claims (20)

  1. 복수의 로우와 제어 회로를 포함하는 동적 랜덤 액세스 메모리(DRAM)에 있어서,
    각각의 로우는 적어도 (i) 복수의 캐시 태그와, (ii) 복수의 캐시 태그에 의해 표시되는 복수의 캐시 라인을 저장하도록 구성되고, 상기 제어 회로는
    메모리 요청을 수신하도록 구성되고,
    수신한 메모리 요청 내의 제 1 캐시 태그에 의해 표시되는 주어진 캐시 라인 상에서 수신한 메모리 요청에 따라 메모리 액세스를 수행하도록 구성되며,
    메모리 액세스 수행은 주어진 캐시 라인을 저장하는 복수의 로우 중 각자의 로우의 단일 판독을 포함하는 DRAM.
  2. 제 1 항에 있어서,
    상기 제어 회로는 수신한 메모리 요청 내의 제 1 캐시 태그가 각자의 로우에 저장되는 복수의 캐시 태그 중 제 2 캐시 태그와 일치함을 결정하도록 또한 구성되는 DRAM.
  3. 제 2 항에 있어서,
    복수의 로우 중 각각의 로우는 복수의 캐시 태그에 대응하는 메타데이터를 저장하도록 또한 구성되고, 상기 메타데이터는 캐시 대체 상태, 더티 비트, 유효 비트, 및 캐시 일관성 값 중 적어도 하나를 포함하는 DRAM.
  4. 제 3 항에 있어서,
    주어진 캐시 라인을 저장하는 각자의 로우의 단일 판독으로 메모리 액세스의 수행은, 메모리 액세스에 기초하여 메타데이터를 업데이트하는 단계를 포함하는 DRAM.
  5. 메모리 요청을 발생시키도록 구성되는 제 1 칩 상의 프로세싱 유닛과,
    복수의 로우를 포함하는 제 2 칩 상의 동적 랜덤 액세스 메모리(DRAM)을 포함하는 시스템 인 패키지(SIP)에 있어서,
    상기 DRAM은 제 1 칩에 연결되고, 상기 DRAM은,
    복수의 로우 중 동일 로우에, 적어도 복수의 캐시 태그와, 복수의 캐시 태그에 의해 표시되는 복수의 캐시 라인을 저장하도록 구성되고,
    프로세싱 유닛으로부터 메모리 요청을 수신하도록 구성되며,
    수신한 메모리 요청 내의 제 1 캐시 태그에 의해 표시되는 주어진 캐시 라인 상에서 수신한 메모리 요청에 따라 메모리 액세스를 수행하도록 구성되고,
    상기 메모리 액세스 수행은 주어진 캐시 라인을 저장하는 복수의 로우 중 각자의 로우의 단일 판독을 포함하는 시스템 인 패키지.
  6. 제 5 항에 있어서,
    DRAM은 수신한 메모리 요청 내의 제 1 캐시 태그가 각자의 로우에 저장되는 복수의 캐시 태그 중 제 2 캐시 태그와 일치함을 결정하도록 또한 구성되는 시스템 인 패키지.
  7. 제 6 항에 있어서,
    각자의 로우 내 제 2 캐시 태그의 위치가 각자의 로우 내의 주어진 캐시 라인의 위치를 표시하는 시스템 인 패키지.
  8. 제 7 항에 있어서,
    DRAM은 복수의 캐시 태그에 대응하는 메타데이터를 복수의 로우 중 동일 오루에 저장하도록 또한 구성되고, 상기 메타데이터는 캐시 대체 상태, 더티 비트, 유효 비트, 및 캐시 일관성 값 중 적어도 하나를 포함하는 시스템 인 패키지.
  9. 제 8 항에 있어서,
    주어진 캐시 라인을 저장하는 각자의 로우의 단일 판독으로 메모리 액세스의 수행은, 메모리 액세스에 기초하여 메타데이터를 업데이트하는 단계를 포함하는 시스템 인 패키지.
  10. 제 7 항에 있어서,
    메모리 요청은 각자의 로우를 식별하는 DRAM 어드레스 및 제 1 캐시 태그를 포함하는 시스템 인 패키지.
  11. 제 7 항에 있어서,
    DRAM은 3차원(3D) 집적 회로(IC)인
    시스템 인 패키지.
  12. 제 11 항에 있어서,
    프로세싱 유닛은 범용 마이크로프로세서, 그래픽 프로세싱 유닛(GPU), 가속 프로세싱 유닛(APU), 및 필드 프로그래머블 게이트 어레이(FPGA) 중 적어도 하나인
    시스템 인 패키지.
  13. 적어도 하나 이상의 캐시 태그와 상기 하나 이상의 캐시 태그에 의해 표시되는 하나 이상의 캐시 라인을 동적 랜덤 액세스 메모리(DRAM) 내 복수의 로우 중 동일 로우 내에 저장하는 단계와,
    DRAM에 연결되는 프로세싱 유닛으로부터 메모리 요청을 수신하는 단계와,
    수신한 메모리 요청 내 제 1 캐시 태그에 의해 표시되는 주어진 캐시 라인 상에서 수신한 메모리 요청에 따라 메모리 액세스를 수행하는 단계 - 메모리 액세스 수행은 주어진 캐시 라인을 저장하는 각자의 로우의 단일 판독을 포함하는 - 를 포함하는 방법.
  14. 제 13 항에 있어서,
    수신한 메모리 요청 내의 제 1 캐시 태그가 각자의 로우에 저장되는 하나 이상의 캐시 태그 중 제 2 캐시 태그와 일치함을 결정하는 단계를 더 포함하는 방법.
  15. 제 14 항에 있어서,
    각자의 로우 내의 제 2 캐시 태그의 위치가 각자의 로우 내 주어진 캐시 라인의 위치를 표시하는 방법.
  16. 제 15 항에 있어서,
    복수의 캐시 태그에 대응하는 메타데이터를 하나 이상의 로우 중 동일 로우에 저장하는 단계를 더 포함하며, 상기 메타데이터는 캐시 대체 상태, 더티 비트, 유효 비트, 및 캐시 일관성 값 중 적어도 하나를 포함하는 방법.
  17. 제 16 항에 있어서,
    주어진 캐시 라인을 저장하는 각자의 로우의 단일 판독으로 메모리 액세스의 수행은 메모리 액세스에 기초하여 메타데이터를 업데이트하는 단계를 포함하는 방법.
  18. 제 15 항에 있어서,
    각자의 로우를 식별하는 DRAM 어드레스에 추가하여 제 1 캐시 태그를 메모리 요청 내에서 전송하는 단계를 더 포함하는 방법.
  19. 제 15 항에 있어서,
    DRAM은 3차원(3D) 집적 회로(IC)인 방법.
  20. 제 18 항에 있어서,
    프로세싱 유닛은 범용 마이크로프로세서, 그래픽 프로세싱 유닛(GPU), 가속 프로세싱 유닛(APU), 및 필드 프로그래머블 게이트 어레이(FPGA) 중 적어도 하나인 방법.
KR1020147017417A 2011-11-30 2012-11-21 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시 KR101893544B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/307,776 2011-11-30
US13/307,776 US9753858B2 (en) 2011-11-30 2011-11-30 DRAM cache with tags and data jointly stored in physical rows
PCT/US2012/066217 WO2013081932A1 (en) 2011-11-30 2012-11-21 A dram cache with tags and data jointly stored in physical rows

Publications (2)

Publication Number Publication Date
KR20140098199A true KR20140098199A (ko) 2014-08-07
KR101893544B1 KR101893544B1 (ko) 2018-08-30

Family

ID=47295206

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147017417A KR101893544B1 (ko) 2011-11-30 2012-11-21 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시

Country Status (6)

Country Link
US (1) US9753858B2 (ko)
EP (1) EP2786255B1 (ko)
JP (1) JP6236011B2 (ko)
KR (1) KR101893544B1 (ko)
CN (1) CN103959260B (ko)
WO (1) WO2013081932A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190087499A (ko) * 2016-11-29 2019-07-24 에이알엠 리미티드 태그 매칭 명령에 응답하는 저장회로

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135182B2 (en) * 2012-06-01 2015-09-15 Semiconductor Energy Laboratory Co., Ltd. Central processing unit and driving method thereof
US11132300B2 (en) 2013-07-11 2021-09-28 Advanced Micro Devices, Inc. Memory hierarchy using page-based compression
US9477605B2 (en) * 2013-07-11 2016-10-25 Advanced Micro Devices, Inc. Memory hierarchy using row-based compression
KR20150009883A (ko) * 2013-07-17 2015-01-27 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9398297B2 (en) 2013-11-04 2016-07-19 Intel Corporation Integral image coding
JP6635026B2 (ja) * 2014-04-11 2020-01-22 ソニー株式会社 信号処理装置、および信号処理方法
EP3140749B1 (en) * 2014-05-08 2021-01-13 Micron Technology, INC. In-memory lightweight coherency
JP6637906B2 (ja) * 2014-05-08 2020-01-29 マイクロン テクノロジー,インク. ハイブリッドメモリキューブシステム相互接続ディレクトリベースキャッシュコヒーレンス方法
US9779025B2 (en) * 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
US9330433B2 (en) 2014-06-30 2016-05-03 Intel Corporation Data distribution fabric in scalable GPUs
CN104834608B (zh) * 2015-05-12 2017-09-29 华中科技大学 一种异构内存环境下的缓存替换方法
US10073786B2 (en) * 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
KR102491651B1 (ko) 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US10019367B2 (en) 2015-12-14 2018-07-10 Samsung Electronics Co., Ltd. Memory module, computing system having the same, and method for testing tag error thereof
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10482033B2 (en) 2016-03-24 2019-11-19 Samsung Electronics Co., Ltd Method and device for controlling memory
US10467092B2 (en) * 2016-03-30 2019-11-05 Qualcomm Incorporated Providing space-efficient storage for dynamic random access memory (DRAM) cache tags
US10503641B2 (en) * 2016-05-31 2019-12-10 Advanced Micro Devices, Inc. Cache coherence for processing in memory
KR20230151553A (ko) 2016-06-27 2023-11-01 애플 인크. 조합된 높은 밀도, 낮은 대역폭 및 낮은 밀도, 높은 대역폭 메모리들을 갖는 메모리 시스템
US10956339B2 (en) * 2016-07-14 2021-03-23 Advanced Micro Devices, Inc. System and method for storing cache location information for cache entry transfer
US10180906B2 (en) * 2016-07-26 2019-01-15 Samsung Electronics Co., Ltd. HBM with in-memory cache manager
US10599566B2 (en) * 2016-11-29 2020-03-24 Qualcomm Incorporated Multi-mode cache invalidation
US10366008B2 (en) 2016-12-12 2019-07-30 Advanced Micro Devices, Inc. Tag and data organization in large memory caches
US10402349B2 (en) * 2017-02-08 2019-09-03 Arm Limited Memory controller having data access hint message for specifying the given range of one or more memory addresses
GB2562062B (en) * 2017-05-02 2019-08-14 Advanced Risc Mach Ltd An apparatus and method for managing capability metadata
US11170463B2 (en) * 2017-05-19 2021-11-09 Movidius Limited Methods, systems and apparatus to reduce memory latency when fetching pixel kernels
WO2018231408A1 (en) 2017-06-15 2018-12-20 Rambus Inc. Hybrid memory module
CN107644663B (zh) * 2017-10-31 2018-09-07 睿力集成电路有限公司 一种3d动态随机存取存储器及数据保存方法
US10572389B2 (en) * 2017-12-12 2020-02-25 Advanced Micro Devices, Inc. Cache control aware memory controller
US10545875B2 (en) * 2017-12-27 2020-01-28 Advanced Micro Devices, Inc. Tag accelerator for low latency DRAM cache
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
US20210200680A1 (en) * 2018-06-05 2021-07-01 Rambus Inc. Cache dynamic random access memory
US10970220B2 (en) * 2018-06-26 2021-04-06 Rambus Inc. Tags and data for caches
CN108959526B (zh) * 2018-06-28 2021-10-15 郑州云海信息技术有限公司 日志管理方法以及日志管理装置
US11726920B2 (en) * 2018-06-29 2023-08-15 Rambus Inc. Tag processing for external caches
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
WO2020190841A1 (en) * 2019-03-18 2020-09-24 Rambus Inc. System application of dram component with cache mode
US11054998B1 (en) * 2019-12-12 2021-07-06 Facebook, Inc. High bandwidth memory system with distributed request broadcasting masters
US11294808B2 (en) * 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11507516B2 (en) 2020-08-19 2022-11-22 Micron Technology, Inc. Adaptive cache partitioning
US11693593B2 (en) * 2020-10-28 2023-07-04 Micron Technology, Inc. Versioning data stored on memory device
US11972145B2 (en) * 2021-01-21 2024-04-30 Micron Technology, Inc. Opportunistic data movement
US20220308995A1 (en) * 2021-03-27 2022-09-29 Intel Corporation Integrated three-dimensional (3d) dram cache
US11886728B2 (en) 2021-08-13 2024-01-30 Micron Technology, Inc. Undo capability for memory devices
US11797446B2 (en) * 2021-10-29 2023-10-24 International Business Machines Corporation Multi purpose server cache directory
CN115831174B (zh) * 2022-12-02 2023-08-08 武汉麓谷科技有限公司 一种m.3固态硬盘接口的转换装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070204107A1 (en) * 2004-02-24 2007-08-30 Analog Devices, Inc. Cache memory background preprocessing
US20100250856A1 (en) * 2009-03-27 2010-09-30 Jonathan Owen Method for way allocation and way locking in a cache

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5329489A (en) 1988-03-31 1994-07-12 Texas Instruments Incorporated DRAM having exclusively enabled column buffer blocks
JPH02210685A (ja) * 1989-02-10 1990-08-22 Tokyo Electric Co Ltd Dramコントローラ
US5412787A (en) 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5629950A (en) * 1992-04-24 1997-05-13 Digital Equipment Corporation Fault management scheme for a cache memory
TW243509B (en) 1994-01-31 1995-03-21 Ibm Data processor with memory cache and method of operation
US5764946A (en) 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5848433A (en) 1995-04-12 1998-12-08 Advanced Micro Devices Way prediction unit and a method for operating the same
US5845323A (en) 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
JPH09110582A (ja) 1995-10-11 1997-04-28 Kokusai Chodendo Sangyo Gijutsu Kenkyu Center 結晶製造装置
US6061759A (en) 1996-02-09 2000-05-09 Apex Semiconductor, Inc. Hidden precharge pseudo cache DRAM
US5974506A (en) 1996-06-28 1999-10-26 Digital Equipment Corporation Enabling mirror, nonmirror and partial mirror cache modes in a dual cache system
US20010034808A1 (en) 1996-07-19 2001-10-25 Atsushi Nakajima Cache memory device and information processing system
US5784391A (en) 1996-10-08 1998-07-21 International Business Machines Corporation Distributed memory system with ECC and method of operation
JPH10207726A (ja) 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US6044478A (en) 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6073230A (en) 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6138213A (en) 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6016533A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
KR100313996B1 (ko) 1998-01-08 2001-12-28 구자홍 컴퓨터시스템의바이오스데이터저장장치및방법
JP3307579B2 (ja) 1998-01-28 2002-07-24 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶システム
US6038693A (en) 1998-09-23 2000-03-14 Intel Corporation Error correction scheme for an integrated L2 cache
JP2000113668A (ja) 1998-10-06 2000-04-21 Nec Corp 半導体集積回路装置
US6314514B1 (en) 1999-03-18 2001-11-06 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that speculatively executes call and return instructions
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6353910B1 (en) 1999-04-09 2002-03-05 International Business Machines Corporation Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage
JP2000315384A (ja) 1999-04-30 2000-11-14 Nec Corp 半導体記憶装置
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
US6804162B1 (en) 2001-04-05 2004-10-12 T-Ram, Inc. Read-modify-write memory using read-or-write banks
US6662272B2 (en) 2001-09-29 2003-12-09 Hewlett-Packard Development Company, L.P. Dynamic cache partitioning
US7007210B2 (en) 2002-01-30 2006-02-28 International Business Machines Corporation Method and system for handling multiple bit errors to enhance system reliability
US7234052B2 (en) 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US6832294B2 (en) 2002-04-22 2004-12-14 Sun Microsystems, Inc. Interleaved n-way set-associative external cache
US7054999B2 (en) 2002-08-02 2006-05-30 Intel Corporation High speed DRAM cache architecture
KR100940260B1 (ko) * 2003-07-14 2010-02-04 삼성전자주식회사 다이나믹 주파수 스케일링에 따라 동작 모드의 제어가가능한 반도체 시스템 및 동작 모드 제어 방법
US7117290B2 (en) 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7237098B2 (en) 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7996644B2 (en) 2004-12-29 2011-08-09 Intel Corporation Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache
WO2006101113A1 (ja) 2005-03-22 2006-09-28 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ制御方法およびキャッシュメモリ制御装置
JP4241665B2 (ja) * 2005-05-11 2009-03-18 Necエレクトロニクス株式会社 キャッシュメモリ装置及びその制御方法
US7568070B2 (en) 2005-07-29 2009-07-28 Qualcomm Incorporated Instruction cache having fixed number of variable length instructions
JP4201783B2 (ja) 2005-08-04 2008-12-24 富士通マイクロエレクトロニクス株式会社 キャッシュメモリ装置、半導体集積回路およびキャッシュ制御方法
US7676730B2 (en) 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
US7707463B2 (en) 2005-11-30 2010-04-27 International Business Machines Corporation Implementing directory organization to selectively optimize performance or reliability
US7620875B1 (en) 2006-03-07 2009-11-17 Xilinx, Inc. Error correction code memory system with a small footprint and byte write operation
US7617368B2 (en) * 2006-06-14 2009-11-10 Nvidia Corporation Memory interface with independent arbitration of precharge, activate, and read/write
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8135935B2 (en) 2007-03-20 2012-03-13 Advanced Micro Devices, Inc. ECC implementation in non-ECC components
US7822911B2 (en) * 2007-08-15 2010-10-26 Micron Technology, Inc. Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
US7809980B2 (en) 2007-12-06 2010-10-05 Jehoda Refaeli Error detector in a cache memory using configurable way redundancy
US8589706B2 (en) 2007-12-26 2013-11-19 Intel Corporation Data inversion based approaches for reducing memory power consumption
US20090276587A1 (en) 2008-04-30 2009-11-05 Moyer William C Selectively performing a single cycle write operation with ecc in a data processing system
US8266498B2 (en) 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
US20120159080A1 (en) 2010-12-15 2012-06-21 Advanced Micro Devices, Inc. Neighbor cache directory
US8644104B2 (en) 2011-01-14 2014-02-04 Rambus Inc. Memory system components that support error detection and correction
US20120221785A1 (en) * 2011-02-28 2012-08-30 Jaewoong Chung Polymorphic Stacked DRAM Memory Architecture
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache
WO2013048497A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US20130346695A1 (en) 2012-06-25 2013-12-26 Advanced Micro Devices, Inc. Integrated circuit with high reliability cache controller and method therefor
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070204107A1 (en) * 2004-02-24 2007-08-30 Analog Devices, Inc. Cache memory background preprocessing
US20100250856A1 (en) * 2009-03-27 2010-09-30 Jonathan Owen Method for way allocation and way locking in a cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190087499A (ko) * 2016-11-29 2019-07-24 에이알엠 리미티드 태그 매칭 명령에 응답하는 저장회로

Also Published As

Publication number Publication date
CN103959260A (zh) 2014-07-30
EP2786255A1 (en) 2014-10-08
CN103959260B (zh) 2017-10-13
WO2013081932A1 (en) 2013-06-06
KR101893544B1 (ko) 2018-08-30
EP2786255B1 (en) 2018-11-14
US20130138892A1 (en) 2013-05-30
US9753858B2 (en) 2017-09-05
JP2015503160A (ja) 2015-01-29
JP6236011B2 (ja) 2017-11-22

Similar Documents

Publication Publication Date Title
KR101893544B1 (ko) 물리적 로우에 함께 저장된 태그 및 데이터를 구비한 dram 캐시
US8868843B2 (en) Hardware filter for tracking block presence in large caches
Asghari-Moghaddam et al. Chameleon: Versatile and practical near-DRAM acceleration architecture for large memory systems
US20210406170A1 (en) Flash-Based Coprocessor
Loh 3D-stacked memory architectures for multi-core processors
TWI545435B (zh) 於階層式快取處理器中之協調預取
JP7036925B2 (ja) キャッシュ制御を考慮したメモリコントローラ
US10073790B2 (en) Electronic system with memory management mechanism and method of operation thereof
US11023410B2 (en) Instructions for performing multi-line memory accesses
US11232039B2 (en) Cache for storing regions of data
US20210034539A1 (en) Memory-aware pre-fetching and cache bypassing systems and methods
US10877889B2 (en) Processor-side transaction context memory interface systems and methods
Bojnordi et al. Retagger: An efficient controller for dram cache architectures
US11354246B2 (en) Memory-side transaction context memory interface systems and methods based on clock cycles and wires
KR102683696B1 (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
KR20240087273A (ko) 하이브리드 메모리 장치 및 그 관리 방법
KR20240034258A (ko) Ram으로서의 캐시 메모리의 동적 할당

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right