KR20150138211A - 메모리 활성화 레이트의 조정 - Google Patents
메모리 활성화 레이트의 조정 Download PDFInfo
- Publication number
- KR20150138211A KR20150138211A KR1020157026437A KR20157026437A KR20150138211A KR 20150138211 A KR20150138211 A KR 20150138211A KR 1020157026437 A KR1020157026437 A KR 1020157026437A KR 20157026437 A KR20157026437 A KR 20157026437A KR 20150138211 A KR20150138211 A KR 20150138211A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- address
- cache
- entry
- activation rate
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
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
본 발명의 기술은, 복수의 메모리 어드레스와 연관된 복수의 메모리 위치의 활성화 레이트를 모니터링하는 것과, 활성화 레이트를 조정하는 것을 포함한다. 상기 조정하는 것은 활성화 레이트에 기초하여 상기 메모리 어드레스를 사용하여 캐시를 선택적으로 갱신하는 것을 포함한다.
Description
실세계 분석을 위한 많은 애플리케이션은 대량의 데이터세트를 처리한다. 예컨대, 어떤 온라인 비지니스가 온라인 마켓플레이스에서 더 나은 자리를 차지할 수 있도록 하기 위해 머신 학습(machine learning)을 대용량 데이터세트에 적용할 수 있다. 이러한 방식에서, 상기 온라인 비지니스는 비지니스의 웹사이트에 등장하는 광고를 클릭하는 사용자에 의해 생성되는 수익 및/또는 온라인 카탈로그를 통한 판매에 기인한 수익을 받을 수 있다. 이와 같은 활동을 서술하는 대용량 데이터세트가 온라인 사용자의 욕구와 트렌드를 이해하기 위해 발굴될 수 있다.
도 1은 예시적 구현에 따른 컴퓨터 시스템의 개략도이다.
도 2는 예시적 구현에 따른 도 1의 컴퓨터 시스템의 활성화 레이트 조정 시스템의 개략도이다.
도 3은 예시적 구현에 따른 메모리의 활성화 레이트를 조정하는 기술을 도시하는 흐름도이다.
도 4는 예시적 구현에 따른 도 1의 컴퓨터 시스템의 검출 어레이와 제어기 사이의 상호작용을 도시하는 개략적 도면이다.
도 2는 예시적 구현에 따른 도 1의 컴퓨터 시스템의 활성화 레이트 조정 시스템의 개략도이다.
도 3은 예시적 구현에 따른 메모리의 활성화 레이트를 조정하는 기술을 도시하는 흐름도이다.
도 4는 예시적 구현에 따른 도 1의 컴퓨터 시스템의 검출 어레이와 제어기 사이의 상호작용을 도시하는 개략적 도면이다.
대량의 데이터세트를 처리하는 것은, 이 처리와 관련하여 동일한 메모리 위치 또는 근처 메모리 위치에 대한 다수의 잠재적인 반복적 액세스로 인해 컴퓨터 시스템의 메모리에 상당한 부담이 될 수 있다. 본원에 개시된 시스템 및 기술이 없다면, 반복적 액세스는 메모리에 저장된 데이터의 무결성에 잠재적으로 영향을 줄 정도로 충분히 큰 레이트로 이루어질 수 있다.
특히, 대응하는 저장된 데이터를 표현하기 위해 DRAM(dynamic random access memory) 디바이스의 커패시터-기반 메모리 셀에는 전하가 선택적으로 저장될 수 있다. 누설 전류는 저장된 전하를 손상시키므로, DRAM 디바이스의 메모리 셀은 주기적으로 리프레시(refresh)되는데, 이것은 DRAM의 디바이스 메모리 셀에 저장된 데이터를 판독하는 것 및 데이터를 메모리 셀에 다시 재기록(rewrite)하는 것을 포함한다. 그러나, DRAM 디바이스가 리프레시되는 레이트는 특정 활동을 위한 전하 레벨을 유지하기에 불충분할 수 있다. 이 방식에서는, DRAM 디바이스의 메모리 셀의 행에 액세스하기 위해, "활성화 명령"이라 불리는 명령이 발행되어 액세스를 위한 행을 개방할 수 있다. 충분히 높은 레이트에서 주어진 행의 반복적 활성화(예컨대, 리프레시 주기 당 수천 번 정도의 활성화)는, 인접한 워드 라인이 주기적으로 리프레시된다고 하더라도, 이들 워드 라인에 저장된 데이터를 손상시킬 수 있다(DRAM 피처의 비교적 좁은 간격으로 인해 DRAM에서 자연 발생됨). 즉, 주기적 리프레시 간격은 활성화 레이트가 특정 임계치를 초과할 때 저장된 데이터를 유지하기에 불충분할 수 있다.
주어진 리프레시 주기 동안 주어진 행의 반복적 활성화에 기인하여 발생할 수 있는 손상을 제어하기 위해, 빈번하게 액세스되는 DRAM 행에 대한 데이터 콘텐츠를 캐시 엔트리를 사용하여 저장하는 시스템 및 기술이 본원에 개시된다.
특히, 본원에서는 모니터링되는 시스템 어드레스 풀(pool)에 대응하는 메모리 위치에 대한 활성화 레이트를 모니터링하는 시스템 및 기술이 개시된다. 차례로, 이 어드레스 풀은 캐시가 타겟으로 하는 어드레스 수보다 상당히 더 큰 수의 어드레스를 포함할 수 있다. 캐시가 타겟으로 하는 어드레스는 풀의 어드레스에 대한 모니터링된 활성화 레이트에 기초하여 갱신된다. 예컨대, 풀 내에서 모니터링되는 어드레스 중 하나가, 사전 결정된 리프레시 레이트 임계치를 초과하는 연관된 활성화 레이트를 갖는다면, 캐시는 그 메모리 위치에 대한 리프레시 레이트 임계치가 그 이후에 초과되지 않도록 그 메모리 위치에 대한 액세스를 후속적으로 처리하기 위해 갱신될 수 있다. 마찬가지로, 빈번하게 액세스되었고 현재 캐싱되는 메모리 위치는 이제 덜 빈번하게 액세스될 수 있다. 이 경우에, 캐시는 덜 빈번하게 액세스된 메모리 위치에 대응하는 엔트리를 퇴출(evict)시키거나 제거하기 위해 갱신될 수 있다.
더 구체적인 예로서, 도 1은 예시적 컴퓨터 시스템(100)을 도시한다. 이 예에서, 컴퓨터 시스템(100)은 프로세서 패키지들(120)(예로서 도 1에는 두 개의 프로세서 패키지(120-1 및 120-2)가 도시되어 있음)을 포함한다. 일반적으로, 프로세서 패키지(120)는 하나 또는 복수의 프로세서 코어(130)를 포함하는 반도체 패키지(예컨대, 볼 및 그리드 패키지)가 될 수 있다. 프로세서 코어(들)(130)에 추가하여, 프로세서 패키지(120)는, 집합적으로 메모리(180)를 형성하는 메모리 모듈(182)(예로서, DIMM(dual inline memory module))에서의 데이터의 저장 및 검색을 일반적으로 제어하는 메모리 제어기(160)를 포함할 수 있다. 도 1에 도시된 것처럼, 예시적 구현에서, 각각의 프로세서 패키지(120)는, 예컨대, 컴퓨터 시스템(100)에 대한 로컬 및 공유 메모리 양쪽으로 기능할 수 있는 연관된 메모리(180)를 가질 수 있다. 첨부된 특허청구범위의 범위 내에 있는 다른 구현들이 고려된다.
예시적 구현에 따르면, 메모리(180)의 임의의 주어진 위치가 활성화되는 레이트를 제한하기 위해, 프로세서 패키지(120)는 제어기(164)를 포함한다. 제어기(164)는, (도 1에 예로서 도시된 것처럼) 메모리 제어기(160)의 일부가 될 수 있거나, 메모리 제어기(160)로부터 분리될 수 있다. 또한, 제어기(164)는, 특정 구현에 의존하여, CPU 패키지의 일부로서 구현될 수 있거나(즉, CPU에 의한 머신 실행가능 명령어의 실행에 의해 구현됨), CPU 패키지 외부의 회로소자(예컨대, 하나 또는 복수의 집적 회로)를 사용하여 구현될 수 있거나, 이들의 조합이 될 수 있다.
특정 형태와 상관없이, 제어기(164)는 주어진 어드레스 풀 내의 어드레스에 대응하는 메모리 위치가 언제 활성화되는지를 검출하기 위해 메모리(180)와의 트랜잭션을 모니터링한다. 이 위치는, 특정 구현에 의존하여, 메모리(180)의 인접 및/또는 비인접 위치를 포함할 수 있다.
예시적 구현에 따르면, 주어진 어드레스가 언제 어드레스 풀 내에 있는지를 판정하기 위해, 제어기(164)는 검출 어레이(140)를 사용한다. 예로서, 검출 어레이(140)는 일반적으로 메모리(180)의 가장 빈번하게 활성화된 어드레스(예컨대, 캐시 라인과 연관된 가장 빈번하게 활성화된 어드레스)를 포함한다. 예시적 구현에 따르면, 제어기(164)는 어떤 어드레스가 풀에 속할지를 제어한다. 이 방식에서, 예시적 구현에 따르면, 제어기(164)는 어드레스에 대한 관찰된 활성화 레이트에 기초하여 (예로서) 일정 수의 풀에 대해 어드레스를 선택적으로 퇴출시키거나 추가한다.
어드레스 풀의 주어진 어드레스가 사전 정의된 임계치(예컨대, 메모리 손상이 발생하기 전의 리프레시 주기 당 활성화의 결정된 최대 수와 일치하는 임계치)를 초과할 때, 제어기(164)는 관련 메모리 위치가 액세스되는 레이트를 감소시키기 위해 보정 동작을 취한다. 이 방식에서, 본원에 더 개시되는 것처럼, 제어기(164)는, 풀의 연관된 어드레스에 대한 활성화 레이트가 초과되었다는 것의 검출에 응답하여, 그 이후에 그 어드레스를 추적하도록 캐시(150)를 갱신한다. 즉, 제어기(164)는, 그 어드레스와 연관된 순수 데이터(clean data)가 캐시(150)의 라인에 저장되도록, 그 어드레스를 타겟으로 하도록 대응하는 캐시 태그 어드레스를 갱신한다. 빈번하게 액세스된 메모리 어드레스를 캐싱하도록 캐시(150)를 구성함으로써, 대부분의 액세스가 캐시(150)로부터 서빙됨에 따라, 대응하는 메모리 위치의 활성화 레이트는 상당히 감소된다.
이제, 도 2를 참조하면, 예시적 구현에 따라, 활성화 레이트 조절 시스템(200)은 제어기(204)에 의해 캐싱되지 않은 요청(220)을 모니터링하는데, 이것은 예컨대 메모리 버스 동작으로 통신되는 요청일 수 있고, 활성화 명령의 통신을 수반할 수 있다. 제어기(204)는, 활성화 명령과 연관되는 요청(220)과 연관된 메모리 어드레스를, 모니터링되는 어드레스(212)의 풀(210)과 비교한다. 이 방식에서, 모니터링되는 어드레스(212)에 대해, 제어기(204)는 대응하는 활성화 레이트(214)의 로그(log)를 유지한다. 또한, 제어기(204)는 어떤 어드레스(212)가 풀(210)에 속할지를 유지하므로, 일반적으로 풀(210)은 가장 빈번하게 활성화되는 어드레스(212)를 포함한다. 따라서, 일반적으로, 메모리(250)는 대응하는 어드레스(264)를 갖는 메모리 위치(260)를 포함하는데, 가장 빈번하게 활성화된 어드레스(264)는 풀(210)의 추적되는 어드레스(212)에 대응한다.
주어진 활성화 레이트(214)가 사전 정의된 임계치를 초과할 때, 제어기(204)는, 캐시(270)의 캐시 엔트리(276) 중 하나를 퇴출시키고 퇴출된 캐시 엔트리(276)를 초과된 활성화 레이트(214)를 갖는 어드레스(212)에 대응하는 캐시 엔트리(276)로 대체하도록 캐시(270)를 갱신한다. 이를 위해, 캐시(270)는, 캐시(270)가 새로운 어드레스(212)에 대한 데이터를 저장하도록, 대응하는 태그 어드레스 엔트리(274)를 갱신할 수 있다.
이제 도 3을 참조하면, 예시적 구현에 따른 기술(300)은 메모리 어드레스 풀과 연관되는 메모리 위치의 활성화 레이트를 모니터링하는 것(블록 302)을 포함한다. 이 기술(300)은, 매우 빈번하게 활성화되는 메모리 어드레스에 대한 캐시-투-캐시 액세스를 선택적으로 구성하는 것을 포함하여, 활성화 레이트를 조정하는 것(블록 304)을 포함한다.
일반적으로 활성화 레이트는 가장 빈번하게 활성화되는 어드레스를 캐싱함으로써 낮아진다. 예컨대, 최대 활성화 레이트가 리프레시 간격당 백만 번의 활성화이고 리프레시 간격당 이십만 번의 활성화에서 문제가 발생할 경우, 예시적 구현에 따르면, 캐시(270)는 적어도 5개의 어드레스, 즉, 1M/200K=5 어드레스에 대한 캐시 엔트리를 포함한다. 그런 경우에, 시스템 상에서 작동하는 애플리케이션은 5 개의 어드레스에 신속히 액세스할 수 있고 메모리(250)와 부딪치지(hit) 않는다. 가설적으로 애플리케이션이 6개의 어드레스에 신속히 액세스한다면, 메모리(250)는 가장 빈번한 활성화의 여섯 개마다 하나를 획득(get)할 것이고, 이것은 문제를 유발하지 않을 정도로 충분히 낮은 레이트에서 이루어질 것이다.
더 구체적인 예로서 도 4를 참조하면, 몇몇 구현에 따라, 검출 어레이(140)는 모니터링되는 어드레스의 풀과 관련되는 N 개의 엔트리(402)(도 4에는 N 개의 엔트리(402-1, 402-1, ..., 402-N)가 예로서 도시되어 있음)를 포함할 수 있다. 예시적 구현에 따르면, 검출 어레이는 모니터링되는 어드레스에 대응하는 16 개의 엔트리(402)를 포함할 수 있다.
각 엔트리(402)는 예컨대 도 4의 캐시 라인(402-1)에 도시된 다음과 같은 필드들을 포함할 수 있다. 캐시 엔트리 포인터 필드(404)는 대응하는 캐시 엔트리에 대한 잠재적 포인터를 나타내는 데이터를 포함한다. 상태 필드(406)는, 엔트리(402)에 대한 LRU(least recently used) 카운트 값을 나타내는 데이터(408) 뿐만 아니라, 엔트리(402-1)가 캐싱되는지 여부를 나타내는 데이터를 포함한다. 본원에서 더 설명되는 것처럼, LRU 카운트 값은, 가장 빈번하게 활성화된 메모리 어드레스를 식별하기 위한 (예시적 구현에 따른) LRU 교체 정책에 적어도 근접하는 캐시 엔트리 교체 정책에 따라 사용된다. 엔트리(402)의 필드들은 또한, 열 선택 필드(410), 뱅크 식별 필드(412) 및 행 어드레스 필드(414)와 같은 특정 어드레스를 식별하는 필드들을 포함할 수 있다. 또한, 엔트리(402)는 활성화 카운트 값을 저장하는 데이터를 포함하는 필드(416)를 포함한다.
이와 관련하여, 필드(416)는, 연관된 어드레스에 대한 활성화를 추적하기 위해 제어기(164)에 의해 사용되고 갱신되는 활성화 카운터를 형성한다. 이 활성화가 임계치를 초과할 때, 제어기(164)는 캐시를 갱신하기 위한 적절한 동작을 취한다. 도 4의 특정 예에서, 임계치는 각 어드레스에 대해 정의될 수 있다. 이와 관련하여, 예시적 구현에 따르면, 엔트리(402)는 임계 상태를 식별하는 데이터를 포함하는 필드(418)를 포함한다. 필드(416)의 데이터에 의해 표시된 카운트 값이 필드(418)의 데이터에 의해 표시된 임계치를 초과할 경우, 제어기(164)는 대응하는 어드레스에 대한 활성화 레이트가 초과된 것으로 간주한다.
예시적 구현에 따르면, 리프레시 주기를 결정하기 위해 사용될 수 있는 하나의 리프레시 간격 카운터가 존재할 수 있다. 이 방식에서, 몇몇 구현에 따르면, 임의의 활성 칩 선택 신호가 리프레시를 위한 소스로서 사용될 수 있다. 추가적 구현에 따르면 다른 시간 간격이 사용될 수 있다. 특정 구현에 상관없이, 활성화 카운터(즉, 필드(416)에 의해 표시된 카운트 값)는 주기적으로 리셋된다.
첨부된 특허청구범위의 범위 내에 있는 다른 구현들이 고려된다. 이 방식에서, 추가적 구현에 따르면, 어떤 캐시 엔트리를 교체해야 할지를 결정하기 위해 다른 방식이 사용될 수 있다. 예컨대, 추가적 예시적 구현에 따르면, 캐시 엔트리는 매우 빈번하게 액세스되고 있는 새로운 어드레스를 타겟으로 하는 엔트리로 무작위로 교체될 수 있다. 추가적 구현에서는, 업 카운터에 의해 제공된 카운트 값에 기초하여 가장 오래된 엔트리가 교체될 수 있다. 추가적 구현에 따르면, 어떤 캐시 엔트리를 교체해야 할지를 결정하기 위해 다른 기술들이 사용될 수 있다.
도 4에 도시된 것처럼, 제어기(164)는 각 활성화 사이클마다 다음과 같은 동작을 수행할 수 있다. 이 방식에서, 각 활성화 사이클마다, 제어기(164)는, 활성화 사이클로부터의 어드레스가 검출 어레이(140)의 엔트리(402)에 의해 표시된 어드레스들 중 임의의 것과 일치하는지 여부를 판정한다(결정 블록(420)). 만일 그렇다면, 제어기(164)는 그 엔트리에 대한 활성화 레이트 카운터를 증가시키고(블록(424)), 그 엔트리에 대한 LRU 카운트 값(408)을 이 예에서 카운터에 대한 최대값인 "7"로 설정한다(블록(426)). 즉, 이 최대 LRU 카운트 값에 의해, 그 엔트리는 이제 검출 어레이(140)의 가장 빈번하게 액세스된 엔트리들 중 하나인 것으로 지정된다. 제어기(164)는 또한 다른 엔트리(402)에 대한 LRU 카운터를 감소시킨다(블록(428)). 이와 같이, 검출 어레이(140)가 각 활성화 사이클마다 갱신됨에 따라, 액세스되지 않은 엔트리는 감소되는 LRU 카운트를 가지므로, 최저 최근 사용 엔트리(402)의 식별이 가능하다.
제어기(164)는 활성화 레이트 임계치가 초과되었는지 여부를 판정한다(결정 블록(430)). 만일 그렇다면, 제어기(164)는 캐시와 통신하여 최저 LRU 카운트를 갖는 캐시 엔트리를 퇴출시키고 그것을 현재의 활성화 사이클로부터의 어드레스에 대응하는 캐시 엔트리로 대체한다.
결정 블록(420)에서, 제어기(164)가 현재의 활성화 사이클로부터의 어드레스가 검출 어레이(140)의 엔트리(402)에 대응하는 임의의 어드레스와 일치하지 않는다고 판정하면, 제어기(164)는 최저 활성화 카운트/LRU 카운트를 갖는 검출 어레이의 엔트리를 선택한다(블록(440)). 이와 관련하여, 예컨대, 두 개의 엔트리(402)가 동일한 LRU 카운트를 갖는다면, 카운터(164)는 더 낮은 대응하는 활성화 레이트를 갖는 후보 엔트리(402)를 선택한다. 다음에 선택된 엔트리는 블록(442)에 따라 검출 어레이(140)로부터 퇴출되거나 제거된다. 제어기(164)는 검출 어레이(140)에서 퇴출된 엔트리를 활성화 사이클로부터의 어드레스로 대체하고, 그 엔트리에 대해 LRU 카운트를 7로 설정하고, 나머지 엔트리에 대해 LRU 카운트를 감소시킨다(블록 444).
제한된 수의 예가 본원에 설명되었지만, 본 개시의 이익을 갖는 당업자는 그로부터 다양한 수정 및 변형을 인식할 것이다. 첨부된 특허청구범위는 그런 모든 변형 및 수정을 포함하도록 의도된 것이다.
Claims (15)
- 복수의 메모리 어드레스와 관련된 복수의 메모리 위치의 활성화 레이트(activation rates)를 모니터링하는 단계와,
상기 활성화 레이트를 조정하는 단계를 포함하되,
상기 조정하는 단계는 상기 활성화 레이트에 기초하여 상기 메모리 어드레스를 사용하여 캐시를 선택적으로 갱신하는 단계를 포함하는
방법.
- 제 1 항에 있어서,
상기 활성화 레이트를 모티터링하는 단계는 엔트리들을 갖는 어레이를 유지하는 단계를 포함하고, 각각의 엔트리는 상기 복수의 메모리 어드레스 중 한 메모리 어드레스와 연관되고 상기 연관된 메모리 어드레스에 대한 활성화 레이트를 추적하는 카운터를 가지며, 상기 유지하는 단계는 제 2의 더 큰 복수의 메모리 어드레스 중 어떤 메모리 어드레스가 테이블에 의해 추적될지를 선택적으로 조정하는 단계를 포함하는
방법.
- 제 2 항에 있어서,
상기 조정하는 단계는, 트랜잭션에서 상기 테이블에 의해 추적되고 있지 않은 메모리 어드레스가 표시되는 것에 응답하여, 상기 테이블의 엔트리들 중 한 엔트리를 퇴출시키는(evicting) 단계와, 상기 퇴출된 엔트리를 상기 트랜잭션에서 표시된 상기 메모리 어드레스에 대응하는 새로운 엔트리로 대체하는 단계를 포함하는
방법.
- 제 3 항에 있어서,
상기 퇴출시키는 단계는, 상기 엔트리들 중에서 상기 테이블에 의해 추적된 적어도 하나의 다른 메모리 어드레스보다 덜 빈번하게 액세스된 메모리 어드레스에 대응하는 엔트리를 퇴출을 위해 선택하는 단계를 포함하는
방법.
- 제 4 항에 있어서,
상기 퇴출시키는 단계는, 적어도 최저 최근 사용 교체 정책(a least recently used replacement policy)에 근접하는 교체 정책을 적용하는 단계를 포함하는
방법. - 제 2 항에 있어서,
상기 조정하는 단계는, 버스 트랜잭션에서 상기 테이블에 의해 추적되고 있는 메모리 어드레스가 표시되는 것에 응답하여, 상기 표시된 어드레스의 더 많은 최근 사용(more recent use)을 나타내도록 연관된 엔트리의 카운터를 증가시키는 단계를 포함하는
방법.
- 제 1 항에 있어서,
상기 활성화 레이트를 모니터링하는 단계는,
상기 복수의 메모리 어드레스와 연관된 카운터를 사용하여 상기 활성화 레이트를 추적하는 단계와,
상기 카운터 상에서 임계치를 초과하였음이 표시될 때, 상기 복수의 메모리 어드레스의 연관된 메모리 어드레스가 활성화 임계치를 초과하였음을 판정하는 단계를 포함하고,
상기 캐시를 선택적으로 갱신하는 단계는, 하나의 캐시 엔트리를 퇴출시키고 상기 퇴출된 캐시 엔트리를 상기 활성화 임계치를 초과하는 메모리 어드레스와 연관된 데이터로 대체하는 단계를 포함하는
방법. - 복수의 메모리 어드레스를 포함하는 시스템 메모리와,
상기 복수의 메모리 어드레스의 제 1 세트를 타겟으로 하는 캐시와,
상기 복수의 메모리 어드레스의 더 큰 제 2 세트의 활성화 레이트를 모니터링하고, 상기 모니터링된 활성화 레이트에 기초하여 상기 캐시가 타겟으로 하는 상기 제 1 세트의 구성(composition)을 선택적으로 갱신하는 제어기를 포함하는
시스템.
- 제 8 항에 있어서,
엔트리들―각각의 엔트리는 상기 제 2 세트의 메모리 위치와 연관됨― 및 상기 연관된 메모리 위치와 연관된 활성화 레이트를 추적하기 위한 카운터를 포함하는 어레이를 더 포함하되,
상기 제어기는 상기 제 1 세트의 구성을 언제 갱신해야 할지를 판정하기 위해 상기 어레이를 사용하도록 커플링되는
시스템.
- 제 9 항에 있어서,
상기 제어기는 또한, 상기 연관된 메모리 위치가 얼마나 빈번하게 액세스되는지에 기초하여 상기 메모리 어드레스의 제 2 세트의 구성을 선택적으로 갱신하도록 구성되는
시스템.
- 제 9 항에 있어서,
상기 엔트리들 중 적어도 하나는, 상기 캐시의 대응하는 엔트리에 대한 포인터를 위한 데이터를 저장하는 필드와, 상기 연관된 메모리 위치가 상기 어레이에 의해 추적되는 다른 메모리 위치에 비해 얼마나 빈번하게 액세스되는지를 추적하기 위한 카운터를 나타내는 데이터를 저장하는 필드를 포함하는
시스템.
- 제 9 항에 있어서,
상기 엔트리들 중 적어도 하나는, 활성화 레이트 임계치가 언제 초과되었는지를 식별하기 위해 상기 엔트리의 상기 카운터에 의해 표시되는 값에 대한 임계치를 표시하는 필드를 더 포함하는
시스템.
- 프로세서 기반 시스템에 의해 판독가능한 명령어를 저장하는 비일시적 저장 매체를 포함하는 제품으로서,
상기 명령어는, 상기 프로세서 기반 시스템에 의해 실행될 때 상기 프로세서 기반 시스템으로 하여금,
복수의 메모리 어드레스와 연관된 복수의 메모리 위치의 활성화 레이트를 모니터링하게 하고,
상기 활성화 레이트에 기초하여, 상기 메모리 어드레스를 사용하여 캐시를 선택적으로 갱신하게 하는
제품.
- 제 13 항에 있어서,
상기 명령어는, 상기 프로세서 기반 시스템에 의해 실행될 때 상기 프로세서 기반 시스템으로 하여금,
엔트리들―각각의 엔트리는 상기 복수의 메모리 어드레스 중 한 메모리 어드레스와 연관됨― 및 상기 연관된 메모리 어드레스에 대한 상기 활성화 레이트를 추적하는 카운터를 갖는 어레이를 유지하게 하되, 상기 유지하는 것은, 제 2의 더 큰 복수의 메모리 어드레스 중 어떤 메모리 어드레스가 테이블에 의해 추적될지를 선택적으로 조정하는 것을 포함하는
제품.
- 제 13 항에 있어서,
상기 복수의 메모리 위치 중 적어도 하나는 캐시 라인 어드레스를 포함하는
제품.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/034243 WO2014158154A1 (en) | 2013-03-28 | 2013-03-28 | Regulating memory activation rates |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150138211A true KR20150138211A (ko) | 2015-12-09 |
Family
ID=51624939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157026437A KR20150138211A (ko) | 2013-03-28 | 2013-03-28 | 메모리 활성화 레이트의 조정 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9804972B2 (ko) |
KR (1) | KR20150138211A (ko) |
CN (1) | CN105190566A (ko) |
WO (1) | WO2014158154A1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105229742A (zh) | 2013-04-30 | 2016-01-06 | 惠普发展公司,有限责任合伙企业 | 存储器访问速率 |
US9639467B2 (en) * | 2015-07-06 | 2017-05-02 | Mediatek, Inc. | Environment-aware cache flushing mechanism |
US9812185B2 (en) * | 2015-10-21 | 2017-11-07 | Invensas Corporation | DRAM adjacent row disturb mitigation |
KR20180068661A (ko) | 2016-12-14 | 2018-06-22 | 에스케이하이닉스 주식회사 | 반도체장치 |
US10657069B2 (en) * | 2017-05-15 | 2020-05-19 | Seagate Technology Llc | Fine-grained cache operations on data volumes |
US12105637B2 (en) * | 2019-10-21 | 2024-10-01 | EMC IP Holding Company LLC | Instance based active data storage management |
US11994990B2 (en) * | 2022-01-21 | 2024-05-28 | Micron Technology, Inc. | Memory media row activation-biased caching |
US12073090B2 (en) * | 2022-01-21 | 2024-08-27 | Micron Technology, Inc. | Cache-assisted row hammer mitigation |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630097A (en) * | 1991-06-17 | 1997-05-13 | Digital Equipment Corporation | Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses |
EP0552667B1 (en) | 1992-01-22 | 1999-04-21 | Enhanced Memory Systems, Inc. | Enhanced dram with embedded registers |
US5745913A (en) | 1996-08-05 | 1998-04-28 | Exponential Technology, Inc. | Multi-processor DRAM controller that prioritizes row-miss requests to stale banks |
US5717644A (en) | 1996-10-09 | 1998-02-10 | International Business Machines Corporation | Apparatus for varying the refresh rate for a DRAM in response to variation in operating voltages and method thereof |
EP1182567B1 (en) * | 2000-08-21 | 2012-03-07 | Texas Instruments France | Software controlled cache configuration |
US6651141B2 (en) * | 2000-12-29 | 2003-11-18 | Intel Corporation | System and method for populating cache servers with popular media contents |
US6799241B2 (en) * | 2002-01-03 | 2004-09-28 | Intel Corporation | Method for dynamically adjusting a memory page closing policy |
US7320100B2 (en) * | 2003-05-20 | 2008-01-15 | Cray Inc. | Apparatus and method for memory with bit swapping on the fly and testing |
US7434002B1 (en) * | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US8166248B2 (en) * | 2006-06-12 | 2012-04-24 | Arris Group, Inc. | Caching of information according to popularity |
US8108596B2 (en) * | 2006-08-03 | 2012-01-31 | Arm Limited | Memory controller address mapping scheme |
US8108609B2 (en) | 2007-12-04 | 2012-01-31 | International Business Machines Corporation | Structure for implementing dynamic refresh protocols for DRAM based cache |
US8788758B1 (en) * | 2008-11-04 | 2014-07-22 | Violin Memory Inc | Least profitability used caching scheme |
US8261136B2 (en) * | 2009-06-29 | 2012-09-04 | Sandisk Technologies Inc. | Method and device for selectively refreshing a region of a memory of a data storage device |
CN102473140B (zh) | 2009-07-17 | 2015-05-13 | 株式会社东芝 | 存储器管理装置 |
US8200902B2 (en) | 2010-06-10 | 2012-06-12 | Arm Limited | Cache device for coupling to a memory device and a method of operation of such a cache device |
US8543766B2 (en) * | 2011-06-10 | 2013-09-24 | Freescale Semiconductor, Inc. | Writing data to system memory in a data processing system in which cache line states are tracked |
US8806137B2 (en) * | 2011-06-17 | 2014-08-12 | Lsi Corporation | Cache replacement using active cache line counters |
US9940286B2 (en) * | 2013-03-14 | 2018-04-10 | Nvidia Corporation | PCIE traffic tracking hardware in a unified virtual memory system |
-
2013
- 2013-03-28 US US14/778,341 patent/US9804972B2/en active Active
- 2013-03-28 KR KR1020157026437A patent/KR20150138211A/ko not_active Application Discontinuation
- 2013-03-28 WO PCT/US2013/034243 patent/WO2014158154A1/en active Application Filing
- 2013-03-28 CN CN201380075099.5A patent/CN105190566A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20160085691A1 (en) | 2016-03-24 |
US9804972B2 (en) | 2017-10-31 |
CN105190566A (zh) | 2015-12-23 |
WO2014158154A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20150138211A (ko) | 메모리 활성화 레이트의 조정 | |
US11264079B1 (en) | Apparatuses and methods for row hammer based cache lockdown | |
US11636038B2 (en) | Method and apparatus for controlling cache line storage in cache memory | |
US8417891B2 (en) | Shared cache memories for multi-core processors | |
US9129672B2 (en) | Semiconductor device and operating method thereof | |
US8392657B2 (en) | Monitoring cache usage in a distributed shared cache | |
KR101252367B1 (ko) | 저전압 동작 동안 캐시 부분의 디스에이블 | |
US11232848B2 (en) | Memory module error tracking | |
TWI417723B (zh) | 用於快取線替換之方法 | |
US20040083341A1 (en) | Weighted cache line replacement | |
WO2018100331A1 (en) | Storage circuitry responsive to a tag-matching command | |
JP2002150771A (ja) | Dramキャッシュ・メモリ中のデータをリフレッシュする方法および装置 | |
US10120806B2 (en) | Multi-level system memory with near memory scrubbing based on predicted far memory idle time | |
US8793434B2 (en) | Spatial locality monitor for thread accesses of a memory resource | |
CN108701070A (zh) | 对多级系统存储器的存储器侧高速缓存的容易出错的高速缓存行槽的处理 | |
US20180307434A1 (en) | Bitflip Security Attack Protection | |
Lee et al. | TWiCe: Time window counter based row refresh to prevent row-hammering | |
US8667221B2 (en) | Detection of streaming data in cache | |
US20140189244A1 (en) | Suppression of redundant cache status updates | |
TW201911063A (zh) | 揮發性記憶體的資料保存系統及方法 | |
US9141552B2 (en) | Memory using voltage to improve reliability for certain data types | |
US20230315299A1 (en) | Systems and method for tracking activations to perform row hammer mitigation in memory modules | |
US10552325B2 (en) | Reducing write-backs to memory by controlling the age of cache lines in lower level cache | |
US9141451B2 (en) | Memory having improved reliability for certain data types | |
US9760488B2 (en) | Cache controlling method for memory system and cache system thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
WITN | Withdrawal due to no request for examination |