KR101826073B1 - 메모리 관리를 위한 캐시 동작들 - Google Patents

메모리 관리를 위한 캐시 동작들 Download PDF

Info

Publication number
KR101826073B1
KR101826073B1 KR1020167003991A KR20167003991A KR101826073B1 KR 101826073 B1 KR101826073 B1 KR 101826073B1 KR 1020167003991 A KR1020167003991 A KR 1020167003991A KR 20167003991 A KR20167003991 A KR 20167003991A KR 101826073 B1 KR101826073 B1 KR 101826073B1
Authority
KR
South Korea
Prior art keywords
cache
memory
victim
entries
cache memory
Prior art date
Application number
KR1020167003991A
Other languages
English (en)
Other versions
KR20160033737A (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 KR20160033737A publication Critical patent/KR20160033737A/ko
Application granted granted Critical
Publication of KR101826073B1 publication Critical patent/KR101826073B1/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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
    • 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/0891Addressing 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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
    • 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • 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/1021Hit rate improvement
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • 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
    • Y02D10/13

Abstract

본 설명에 따르면, 바이트-어드레스가능한 비휘발성 메모리와 같은 배킹 메모리의 앞에 있는 메모리측 캐시에 대한 캐시 동작들은, 제1 동작, 제2 동작 및 제3 동작 중 적어도 2개를 결합하는 것을 포함하고, 여기서, 제1 동작은, 더티(dirty) 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린(clean) 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 캐시 메모리로부터 희생(victim) 캐시 엔트리들을 퇴거시키는 것을 포함한다. 제2 동작은, 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것을 포함하고, 제3 동작은, 배킹 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 셔플 및 확산하기 위해 메모리 위치 어드레스들을 전환하는 것을 포함한다. 이러한 동작들의 다양한 결합들이 메모리의 개선된 동작을 제공할 수 있는 것으로 여겨진다. 다른 양상들이 본 명세서에 설명된다.

Description

메모리 관리를 위한 캐시 동작들{CACHE OPERATIONS FOR MEMORY MANAGEMENT}
본 설명은 일반적으로 컴퓨터 시스템들의 분야에 관한 것이다. 더 상세하게, 본 설명은 멀티-레벨 메모리 계층을 구현하기 위한 장치 및 방법에 관한 것이다.
오늘날의 컴퓨터 혁신에 대한 제한적 요인들 중 하나는 메모리 및 저장 기술이다. 종래의 컴퓨터 시스템들에서, 시스템 메모리(또한, 메인 메모리, 1차 메모리, 실행가능 메모리로 공지됨)는 통상적으로 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM)로 구현된다. DRAM-기반 메모리는 통상적으로, 어떠한 메모리 판독들 또는 기록들이 발생하지 않는 경우에도, 내부 커패시터들을 재충전하기 위해 전력을 소모한다. DRAM-기반 메모리는 휘발성이고, 이는, 전력이 제거되면, DRAM 메모리에 저장된 데이터가 상실됨을 의미한다.
도 1은, 본 설명의 일 양상에 따른 메모리 관리를 위한 캐시 동작들을 이용하는 메모리 계층의 일 실시예에 대한 개략도이다.
도 2는, 도 1의 메모리 계층의 메모리측 캐시의 일 실시예에 대한 개략도이다.
도 3은, 모니터링된 조건들에 대한 응답으로 라이트백(write back) 필터링 및 트래픽 레벨링(leveling) 동작들을 선택적으로 인에이블 및 디스에이블하는, 본 설명의 일 양상에 따른 동작들의 일 실시예를 도시한다.
도 4는, 본 설명의 일 양상에 따른 메모리 관리를 위한 캐시 동작들의 일 실시예를 도시한다.
도 5a 및 도 5b는, 모니터링된 조건들에 대한 응답으로, 본 설명에 따른 메모리측 캐시에 의해 선택적으로 이용될 수 있는 대안적인 교체 정책들을 도시한다.
도 6은, 본 설명의 일 양상에 따른 멀티-레벨 어드레스 전환 동작들의 일 실시예를 도시한다.
도 7a 내지 도 7c는, 본 설명의 일 양상에 따른 배타적 논리합 기반 멀티-레벨 어드레스 전환 동작들의 일 실시예를 도시한다.
도 8a 내지 도 8c는, 본 설명의 일 양상에 따른 배타적 논리합 기반 멀티-레벨 어드레스 전환 동작들(exclusive-OR based multi-level address translation operations)의 더 상세한 예를 도시한다.
도 9는, 도 1의 메모리 계층의 바이트-어드레스가능한 비휘발성 메모리의 일 실시예에 대한 개략도이다.
도 10은, 본 설명의 일 양상에 따른 메모리 관리를 위한 캐시 동작들을 이용하는 컴퓨터 아키텍처의 일례에 대한 개략도이다.
종래의 컴퓨터 시스템들은 성능을 개선하기 위해 다수의 레벨들의 캐싱(caching)에 빈번하게 의존한다. 캐시는, 시스템 메모리로부터 서비스될 수 있는 것보다 빨리 메모리 액세스 요청들을 서비스하기 위해, 프로세서와 메인 메모리 사이에 위치되는 고속 메모리이다. 따라서, 프로세서가 시스템 메모리의 위치로부터 판독하거나 그에 기록할 필요가 있는 경우, 프로세서는 먼저, 그 위치가 캐시에 있는지를 체크한다. 그 위치가 캐시에 있으면, 캐시 "히트(hit)"가 발생하고, 프로세서는, 메인 메모리로부터 판독하거나 그에 기록하는 것보다 훨씬 빠른 캐시로부터 즉시 판독하거나 그에 기록한다. 반대로, 프로세서가 캐시에서 메모리 위치를 발견하지 않으면, 캐시 "미스(miss)"가 발생한다. 캐시 미스가 발생하면, 캐시는 새로운 엔트리를 할당하고, 메인 메모리로부터 데이터를 카피한다. 그 다음, 캐시의 컨텐츠로부터 요청이 수행된다. 데이터는 통상적으로, 캐시 라인들로 지칭되는 고정된 크기의 블록들로 메인 메모리와 캐시 사이에서 전송된다. 캐시 라인이 메인 메모리로부터 캐시로 카피되는 경우, 캐시 엔트리가 생성된다. 캐시 엔트리는 카피된 데이터 뿐만 아니라 요청된 메모리 위치(종종 태그로 지칭됨)를 포함할 것이다.
이러한 캐시들은 통상적으로, 정적 랜덤 액세스 메모리(static random access memory; SRAM)와 같은 휘발성 메모리로 구현된다. 가장 빈번하게 액세스되는 데이터 및 명령어들이 캐시 레벨들 중 하나 내에 저장되어, 메모리 액세스 트랜잭션들의 수를 감소시키고 성능을 개선하는 것을 보장하기 위해, 캐시 관리 프로토콜들이 이용될 수 있다. 캐시 미스 시에 새로운 엔트리를 위한 공간을 만들기 위해, 캐시는 기존의 엔트리들 중 하나를 퇴거시켜야 할 수 있다. 캐시가 퇴거시킬 엔트리를 선택하기 위해 이용하는 휴리스틱(heuristic)은, 통상적으로 전체 캐시에 대해 포괄적이 아닌, 다수의 세트 엔트리들에 대한 연관 캐시들에 적용되는 교체 정책으로 지칭된다. 세트 연관 캐시(set associative cache)에서는, 캐시의 하나보다 많은 메모리 위치가 메인 메모리의 대응하는 메모리 위치에 맵핑될 수 있다. 임의의 교체 정책에 있어서의 근본적 문제는, 기존의 캐시 엔트리 중 어느 것이 장래에 이용될 가능성이 가장 낮은지를 예측해야 한다는 점이다. 하나의 대중적인 교체 정책인 최소 최근 사용(least-recently used; LRU)은 최근에 가장 액세스되지 않은 엔트리를 교체한다.
컴퓨터 시스템은 또한 통상적으로 비휘발성 대용량 스토리지(또한 2차 스토리지 또는 디스크 스토리지로 공지됨)를 포함한다. 종래의 대용량 스토리지 디바이스들은 빈번하게, 자기 매체(예를 들어, 하드 디스크 드라이브들), 광학 매체(예를 들어, 컴팩트 디스크(compact disc; CD) 드라이브, 디지털 다기능 디스크(digital versatile disc; DVD) 등), 홀로그래픽 매체 및 플래시 메모리(예를 들어, 솔리드 스테이트 드라이브들(solid state drives; SSDs), 착탈식 플래시 드라이브들 등)를 포함한다. 일반적으로, 이러한 스토리지 디바이스들은, 다양한 입/출력(I/O) 프로토콜들을 구현하는 다양한 I/O 어댑터들을 통해 프로세서에 의해 액세스되기 때문에 I/O 디바이스들로 간주된다. 이러한 I/O 어댑터들 및 I/O 프로토콜들은 상당한 양의 전력을 소모하고, 플랫폼의 다이 영역 및 폼 팩터에 상당한 영향을 미칠 수 있다.
휴대용 또는 모바일 디바이스들(예를 들어, 랩탑들, 넷북들, 태블릿 컴퓨터들, 개인 휴대 정보 단말(personal digital assistant; PDA들), 휴대용 미디어 플레이어들, 휴대용 게임 디바이스들, 디지털 카메라들, 모바일 폰들, 스마트폰들, 장래의 폰들 등)은 종종, 영구적 전원에 접속되지 않는 경우 제한된 배터리 수명을 갖는다. 이러한 모바일 디바이스들은, 활성 및 유휴 전력 버짓(budget)들을 충족시키기 위해, 통상적으로 저전력 상호접속부들 및 I/O 제어기들을 통해 프로세서에 커플링되는 착탈식 비휘발성 대용량 저장 디바이스들(예를 들어, 임베디드 멀티미디어 카드(Embedded Multimedia Card; eMMC), 보안 디지털(Secure Digital; SD) 카드)을 포함할 수 있다.
컴퓨터 시스템들은 또한, (부트 메모리(또한 BIOS 플래시로 공지됨)와 같은 펌웨어를 저장하기 위해 비휘발성 메모리를 빈번하게 갖는다. 종래의 컴퓨터 시스템은 통상적으로, 종종 판독되지만 거의(또는 전혀) 기록되지 않는 영구적 시스템 정보(예를 들어, 펌웨어)를 저장하기 위해 플래시 메모리 디바이스들을 이용한다. 예를 들어, 부트 프로세스(기본 입력 및 출력 시스템(Basic Input and Output System)(BIOS) 이미지들) 동안 키 시스템 컴포넌트들을 초기화하기 위해 프로세서에 의해 실행되는 초기 명령어들이 통상적으로 플래시 메모리 디바이스에 저장된다. 현재 시장에서 이용가능한 플래시 메모리 디바이스들은 일반적으로 제한된 속도(예를 들어, 50 MHz)를 갖는다. 이러한 속도는 판독 프로토콜들에 대한 오버헤드에 의해 추가로 감소된다(예를 들어, 2.5 MHz). BIOS 실행 속도를 가속하기 위해, 종래의 프로세서들은 일반적으로, 부트 프로세스의 사전-실행가능 펌웨어 인터페이스(Pre-Extensible Firmware Interface; PEI) 단계 동안 BIOS 코드의 일부를 캐싱한다. 프로세서 캐시의 크기는, PEI 단계에서 이용되는 BIOS 코드(또한 "PEI BIOS 코드"로 공지됨)의 크기를 제한한다.
3차원(3D) 크로스 포인트 메모리 디바이스들(예를 들어, 상변화 메모리(Phase-change memory; PCM))은 비휘발성 컴퓨터 메모리의 타입이다. 때때로, 상 변화 랜덤 액세스 메모리(PRAM 또는 PCRAM), PCME, 오보닉 통합 메모리(Ovonic Unified Memory) 또는 칼코게나이드(Chalcogenide) RAM(C-RAM)으로도 지칭되는 PCM은 칼코게나이드 유리의 고유의 거동을 이용한다. 전류의 통과에 의해 생성되는 열의 결과로, 칼코게나이드 유리는 2개의 상태들, 즉, 결정질 및 비정질 상태 사이에서 스위칭될 수 있다. PCM의 최근 버전들은 2개의 추가적인 별개의 상태들을 달성할 수 있다. PCM의 메모리 엘리먼트가 더 신속하게 스위칭될 수 있기 때문에, PCM은 종종 플래시보다 더 높은 성능을 제공한다. 또한, PCM에서, 기록(개별적인 비트들을 1 또는 0으로 변경하는 것)은, 셀들의 전체 블록을 먼저 소거할 필요 없이 바이트 기반으로 수행될 수 있다. 추가로, 기록들로부터의 악화는 통상적으로 더 느리다(PCM 디바이스는 대략 1억 기록 사이클들 동안 생존할 수 있다). PCM 악화는 통상적으로 프로그래밍 동안의 열 팽창, 금속(및 다른 재료) 이송 및 다른 메커니즘들로 인한 것이다.
다른 타입들의 NVRAM은 바이트-어드레스가능한 영구 메모리(byte-addressable persistent memory; BPRAM), 범용 메모리, Ge2Sb2Te5, 프로그래밍가능 금속화 셀(programmable metallization cell; PMC), 저항성 메모리(resistive memory; RRAM), RESET(비정질) 셀, SET(결정질) 셀, PCME, 오브신스키(Ovshinsky) 메모리, 강유전성 메모리(또한 폴리머 메모리 및 폴리(N-비닐카바졸)로 공지됨), 강자성 메모리(또한 스핀트로닉스(Spintronics), 스핀 전달 토크(Spin Transfer Torque; SST) 메모리, SPRAM(스핀-전달 토크 RAM)으로 공지됨), STRAM(스핀 터널링 RAM), 자기저항성 메모리, 자기 메모리, 자기 랜덤 액세스 메모리(magnetic random access memory; MRAM) 및 반도체-옥시데나이트라이드-옥사이드-반도체(Semiconductor-oxidenitride-oxide-semiconductor; SONGS, 또한 유전체 메모리로 공지됨)를 포함한다.
NVRAM의 특성들은 이용되는 특정 기술에 따라 변한다. 예를 들어, 특정 NVRAM은, 일부 영역들에서는 더 높은 성능 특성들을 제공할 수 있는 한편, 다른 메모리 기술들에 비해 더 높은 액세스 레이턴시 및 에너지 소모를 제공할 수 있다.
메모리 용량 및 성능 요건들은, 증가하는 수의 프로세서 코어들 및 가상화와 같은 새로운 용도 모델들에 따라 증가를 계속하고 있다. 또한, 메모리 전력 및 비용은, 전자 시스템들의 전반적 전력 및 비용 각각에 대한 중요한 구성요소가 되어 왔다. 본 설명에 따르면, 바이트-어드레스가능한 비휘발성 메모리와 같은 메인 메모리(본 명세서에서는 배킹 메모리로 지칭됨) 앞에 있는 메모리측 캐시에 대한 캐시 동작들은 제1 동작, 제2 동작 및 제3 동작 중 적어도 2개를 결합하는 것을 포함하고, 여기서 제1 동작은, 더티(dirty) 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린(clean) 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된(biased) 교체 정책에 따라 캐시 메모리로부터 희생(victim) 캐시 엔트리들을 퇴거시키는 것을 포함한다. 더티 캐시 라인은, 캐시에서 변형되었지만 아직 바이트-어드레스가능한 비휘발성 메모리에 라이트백되지 않은 데이터의 라인이다. 희생 캐시 엔트리는, 캐시로부터 퇴거되는 것으로 선택된 캐시 엔트리이다.
제2 동작은, 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것, 및 희생 캐시 메모리로부터의 희생 캐시 엔트리들을 퇴거시키는 것 중 적어도 하나(또는 둘 모두)를 포함하고, 제3 동작은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 셔플 및 확산하기 위해 메모리 위치 어드레스들을 전환하는 것을 포함한다. 이러한 동작들의 다양한 결합들이 메모리의 개선된 동작을 제공할 수 있는 것으로 여겨진다.
일 실시예에서, 메모리측 캐시는 주로, 바이트-어드레스가능한 비휘발성 메모리에 대한 기록 액세스를 위한 필터로 기능한다. 예를 들어, 바이트-어드레스가능한 비휘발성 배킹 메모리로의 라이트백들의 수를 감소시키기 위해, 캐시 라인 퇴거들에 대해 더티 캐시 라인들보다 클린 캐시 라인들을 선호하는 대안적인 교체 정책이 구현될 수 있다. 이러한 대안적인 교체 정책(본 명세서에서는 클린 퇴거 우선(clean eviction first; CEF) 정책으로 지칭됨)은 메모리측 캐시의 메인 캐시 파티션에 희생 캐시 파티션을 추가하는 것과 결합될 수 있고, 여기서, 희생 캐시 파티션은, 일 실시예에서, 기록 트래픽을 더 분리시키기 위해 오직 더티 캐시 라인들만을 저장하도록 전용된다.
클린 퇴거 우선 정책 및 희생 캐시 파티션 중 하나 또는 둘 모두의 구현은 시스템 성능에 영향을 미칠 수 있음이 인식된다. 그러나, 일부 실시예들에서, 바이트-어드레스가능한 비휘발성 메모리로부터 기록 트래픽을 필터링하는 것 및 에너지 효율 및 메모리 내구성을 향상시키는 것을 위해, 어느 정도의 성능은 유용하게 양보될 수 있는 것으로 여겨진다.
바이트-어드레스가능한 비휘발성 배킹 메모리의 어드레스 위치들의 웨어 레벨링(wear leveling)을 용이하게 하거나 향상시키도록, 바이트-어드레스가능한 비휘발성 메모리의 이용가능한 어드레스 공간 사이에 트래픽의 셔플링 및 확산을 제공하기 위해, 메모리측 캐시와 같은 하나 이상의 메모리 엘리먼트들의 입력에서 또는 하나 이상의 메모리 엘리먼트들의 출력에서, 어드레스 전환이 클린 퇴거 우선 정책에, 또는 희생 캐시 파티션의 제공에 (또는 둘 모두에) 추가될 수 있다. 또한, 일부 실시예들에서, 메모리 동작들의 경로를 따른 다수의 위치들에 어드레스 전환에 의해 멀티-레벨 어드레스 전환이 실현될 수 있다. 따라서, 어드레스 전환은, 예를 들어, 메모리측 캐시와 같은 메모리 엘리먼트의 입력 및 출력 둘 모두에 제공될 수 있다. 이러한 어드레스 전환은 또한 파티션들 사이에 제공될 수 있음이 인식된다. 본 설명에 따른 멀티-레벨 어드레스 전환은 바이트-어드레스가능한 비휘발성 메모리에 대한 웨어 레벨링 알고리즘들에 대한 압박을 감소시킬 수 있고, 또한 바이트-어드레스가능한 비휘발성 배킹 메모리의 제한된 내구성에 대한 특정한 악의적 공격들에 대한 취약성을 감소 또는 제거할 수 있는 것으로 여겨진다. 본 명세서에서 참조되는 특징들에 추가로 또는 그에 대신하여 다른 특징들이 실현될 수 있음이 인식된다.
따라서, 본 설명에 따른 메모리측 캐시의 일 실시예에서, 1차 캐시의 이용은, 더티 희생 캐시 및 캐시에 의한 어드레스 전환 둘 모두의 이용과 결합될 수 있다. 다른 실시예에서, 클린 퇴거 우선 정책은 캐시에 의한 어드레스 맵핑과 결합될 수 있다. 또 다른 실시예에서, 1차 캐시에 대한 클린 퇴거 우선 정책은 더티 희생 캐시의 이용과 결합될 수 있다. 또 다른 실시예에서, 1차 캐시에 대한 클린 퇴거 우선 정책은, 더티 희생 캐시의 이용 및 캐시에 의한 어드레스 맵핑과 결합될 수 있다. 특정 애플리케이션에 따라, 다른 결합들이 실현될 수 있다.
본 설명의 다른 양상에 따르면, 기록 필터링 정책들, 예를 들어, 클린 퇴거 우선 정책, 및 희생 캐시 파티션 정책, 및 웨어 레벨링 정책들, 예를 들어, 어드레스 전환 정책 중 하나 이상은, 교번하여, 그리고 다양한 결합들에서는 "온 더 플라이(on the fly)"로 또는 예를 들어, 디바이스가 부트 프로세스에서 초기화될 때 인에이블 및 디스에이블되어, 시스템이 동작하고 작업량의 실행 단계와 같은 동작 조건들이 변할 때, 디바이스 수명, 에너지 효율 또는 성능을 개선시킬 수 있음이 인식된다. 따라서, 시스템은, 클린 퇴거 우선 정책으로부터 더욱 성능-구동적인 최소 최근 사용 정책으로 전환할 수 있고, 조건들이 타당해질 때 다시 클린 퇴거 우선 정책으로 전환할 수 있다. 예를 들어, 시스템이 비교적 가벼운 작업량을 경험하고 있으면, 메모리 동작 성능의 감소가 전반적 시스템 성능에 거의 영향을 미치지 않을 수 있는 포인트에서 바이트-어드레스가능한 비휘발성 메모리에 대한 기록 트래픽을 감소시키기 위해 클린 퇴거 우선 정책이 인에이블될 수 있다. 유사하게, 작업량의 실행 단계와 같은 다양한 요인들에 따라, 희생 파티션이 플러싱(flushing) 및 디스에이블되고, 그 다음 후속적으로 인에이블되고 더티 희생 라인들에 리로딩된다. 유사하게, 디바이스가 부팅되고 리부팅될 때 및 조건들이 타당해질 때, 어드레스 전환은 교번하여 인에이블 및 디스에이블될 수 있다. 이러한 방식으로, 기록 필터링 및 어드레스 전환 정책들의 다양한 결합들의 선택적인 인에이블 및 디스에이블은, 디바이스가 동작하고 디바이스 동작 조건들이 변할 때, 디바이스 수명과 에너지 효율을 트레이드 오프하기 위한 추가적인 유연성을 제공한다.
도 1은, 본 설명의 일 실시예에 따른 메모리 관리를 위한 캐시 동작들을 이용하는, 프로세서 코어(104), 배킹(backing) 메모리(108) 및 메모리측 캐시(110)를 포함하는 시스템(100)을 예시한다. 메모리측 캐시(110)는, 예시된 실시예에서, 예를 들어, 비휘발성 랜덤 액세스 메모리("NVRAM")일 수 있는 바이트-어드레스가능한 비휘발성 배킹 메모리(108)와 관련된 캐시 동작들을 수행한다. 일 실시예에서, 시스템(100)은, 메모리측 캐시(110)에 추가로, 레벨 1 캐시(120), 레벨 2 캐시(124) 및 하위 레벨 캐시(Lower Level Cache; LLC) 캐시(130)를 포함하는 다양한 레벨들의 캐시를 포함할 수 있다. 본 설명에 따른 시스템은, 특정 애플리케이션에 따라, 도시된 것 이외의 더 많거나 더 적은 수의 캐시들, 메모리들 및 프로세서 코어들을 가질 수 있음이 인식된다.
예시된 실시예에서, 상당히 더 저렴하고 더 조밀한 바이트-어드레스가능한 비휘발성 랜덤 액세스 메모리(NVRAM)를 이용하여, 이 실시예에서는 시스템 메모리의 벌크(bulk)인 배킹 메모리(108)를 구현하는 한편, DRAM과 같은 비교적 고속인 메모리의 비교적 소량으로, 메모리측 캐시(110)와 같은 캐시를 구현함으로써 성능이 향상될 수 있다. 시스템 메모리에 추가로, 메모리측 캐시(110) 및 배킹 메모리(114)는 예를 들어, 특정 애플리케이션에 따라 데이터 저장 디바이스들과 같은 다른 타입들의 메모리 디바이스들로 구현될 수 있음이 인식된다.
PCM, 바이트-어드레스가능한 영구 메모리(BPRAM), 범용 메모리, Ge2Sb2Te5, 프로그래밍가능 금속화 셀(PMC), 저항성 메모리(RRAM), RESET(비정질) 셀, SET(결정질) 셀, PCME, 오브신스키 메모리, 강유전성 메모리(또한 폴리머 메모리 및 폴리(N-비닐카바졸)로 공지됨), 강자성 메모리(또한 스핀트로닉스, SPRAM(스핀-전달 토크 RAM)으로 공지됨), STRAM(스핀 터널링 RAM), 자기저항성 메모리, 자기 메모리, 자기 랜덤 액세스 메모리(MRAM) 및 반도체-옥시데나이트라이드-옥사이드-반도체(SONGS, 또한 유전체 메모리로 공지됨)를 포함하는 배킹 메모리(108)를 구현하기 위해 NVRAM에 대한 많은 가능한 기술 선택들이 존재한다. 본 명세서에서 설명되는 시스템(100)의 일 실시예에서의 이용을 위해, NVRAM은 하기 특징들을 갖는다:
(1) NVRAM은, 솔리드 스테이트 디스크들(SSD)에서 이용되는 FLASH 메모리와는 유사하고, 휘발성인 SRAM 및 DRAM과는 다르게, 전력이 제거되는 경우에도 자신의 컨텐츠를 유지한다;
(2) 유휴인 경우, SRAM 및 DRAM과 같은 휘발성 메모리들보다 낮은 전력 소모;
(3) SRAM 및 DRAM과 유사한 랜덤 액세스(또한 랜덤으로 어드레스가능한 것으로 공지됨);
(4) SSD들에서 이용되는 FLASH(한번에 오직 "블록" - NOR FLASH의 경우 최소 64 Kbyte 크기 및 NAND FLASH의 경우 최소 16 Kbyte - 으로만 재기록 및 소거될 수 있음)보다 더 낮은 레벨(예를 들어, 바이트 레벨, 워드 레벨, 캐시 라인 레벨 등)의 입도(granularity)로 재기록가능 및 소거가능;
(5) 시스템 메모리로 이용가능하고, 시스템 메모리 어드레스 공간의 전부 또는 일부를 할당받음; 및
(6) 하기의 것들 중 하나 이상:
a) FLASH와 같은 비휘발성 메모리/스토리지 기술들보다 빠른 기록 속도 및 DRAM에 대한 것보다 높은 기록 레이턴시;
b) 매우 빠른 판독 속도(FLASH보다 빠르고, DRAM 판독 속도와 유사하거나 동등함);
c) (SSD들에서 이용되는 FLASH 메모리와 같이 데이터를 기록하기 전에 소거(1초의 오버라이트)를 요구하기 보다는) 직접 기록가능함;
d) 실패 전에 (SSD들에서 이용되는 부트 ROM 및 FLASH보다) 몇(예를 들어, 2 또는 3)배정도 더 높은 기록 내구성; 및/또는
e) 에너지 비용이 더 높고, 판독에 비해 기록에 대해 이용가능한 피크 대역폭이 더 낮음.
앞서 언급된 바와 같이, 통상적으로, 한번에 완전한 "블록"으로 재기록 및 소거되는 FLASH 메모리에 비해, NVRAM이 임의의 주어진 구현에서 액세스되는 입도의 레벨은 특정 메모리 제어기 및 특정 메모리 버스, 또는 NVRAM이 커플링된 다른 타입의 버스에 의존할 수 있다. 예를 들어, NVRAM이 시스템 메모리로 이용되는 일부 구현들에서, NVRAM은, 바이트의 입도로 액세스되는 고유의 능력에도 불구하고, 캐시 라인(예를 들어, 64-바이트 또는 128-바이트 캐시 라인)의 입도로 액세스될 수 있는데, 그 이유는, 캐시 라인이, 메모리 서브시스템이 메모리에 액세스하는 레벨이기 때문이다. 따라서, NVRAM은, 메모리 서브시스템 내에 배치되는 경우, 동일한 메모리 서브시스템에서 이용되는 DRAM(예를 들어, "메모리측 캐시")과 동일한 레벨의 입도로 액세스될 수 있다. 그렇다 하더라도, 메모리 제어기 및 메모리 버스, 또는 다른 타입의 버스에 의한 NVRAM으로의 액세스의 입도 레벨은, 플래시에 의해 이용되는 블록 크기 및 I/O 서브시스템의 제어기 및 버스의 액세스 크기의 입도 레벨보다는 작다. NVRAM은 또한, 특히 시스템 메모리 구현에서와 같이 상당수의 기록들이 발생할 수 있는 경우, 바이트-어드레스가능한 비휘발성 메모리 레벨의 저장 셀들이 다수의 기록 액세스들 이후에 웨어링 아웃(wear out)되기 시작할 수 있다는 사실을 해결하기 위해 웨어 레벨링 알고리즘들을 통합할 수 있다. 높은 사이클 카운트 블록들은 이러한 방식으로 웨어링 아웃될 가능성이 크기 때문에, 웨어 레벨링은, 높은 사이클 카운트 블록들의 어드레스들을 낮은 사이클 카운트 블록들과 스와핑(swapping)함으로써, 바이트-어드레스가능한 비휘발성 메모리 셀들에 걸쳐 기록들을 확산시킨다. 대부분의 어드레스 스와핑은 통상적으로 애플리케이션 프로그램들에 투명한데, 그 이유는, 어드레스 스와핑이 하드웨어, 저레벨 소프트웨어(예를 들어, 저레벨 드라이버 또는 운영 시스템), 또는 둘의 조합에 의해 핸들링되기 때문임을 주목한다. 본 설명에 따른 캐시 레벨의 어드레스 전환은, NVRAM 자체 내의 웨어 레벨링 동작들의 완화 또는 감소를 허용할 수 있는 것으로 여겨진다.
본 설명의 일부 실시예들의 배킹 메모리(108)는 NVRAM으로 구현되지만, 반드시 임의의 특정 메모리 기술로 제한될 필요는 없다. 배킹 메모리(108)는, 메모리/스토리지 계층에서의 배킹 메모리(108)의 특성들 및/또는 배킹 메모리(108)의 애플리케이션들의 관점에서, 다른 명령어 및 데이터 메모리/스토리지 기술들로부터 구별가능하다. 예를 들어, 배킹 메모리(108)는,
1) 프로세서 코어 내부에(예를 들어, 프로세서 코어(104)와 동일한 다이 상에) 또는 외부에(예를 들어, 프로세서 코어(104)와 동일하거나 상이한 패키지에) 있을 수 있는 캐시들(120-130) 중 하나 이상에 대해 이용될 수 있고, 특정 프로세서 코어에 전용될 수 있거나 다양한 프로세서 코어들에 의해 공유될 수 있는 정적 랜덤 액세스 메모리(SRAM);
2) 프로세서 코어 내부에(예를 들어, 프로세서 코어(104)와 동일한 다이 상에) 또는 외부에(예를 들어, 프로세서 코어(104)와 동일하거나 상이한 패키지에) 있을 수 있는 캐시들(120-130) 중 하나 이상에 대해 이용될 수 있고, 특정 프로세서 코어에 전용될 수 있거나 다양한 프로세서 코어들에 의해 공유될 수 있는 동적 랜덤 액세스 메모리(DRAM);
3) 대용량 스토리지(미도시)로서 적용되는 FLASH 메모리/자기 디스크/광학 디스크; 및
4) (부트 ROM, BIOS 플래시 및/또는 TPM 플래시로 지칭될 수 있는) 펌웨어 메모리(미도시)로서 적용되는 다른 판독가능 메모리(ROM) 또는 FLASH 메모리와 같은 메모리
와는 상이하다.
배킹 메모리(108)는, 프로세서(104)에 의해 직접 어드레스가능하고, 대용량 스토리지로서 적용되는 FLASH/자기 디스크/광학 디스크에 비해 프로세서(104)와 충분히 보조를 맞출 수 있는 명령어 및 데이터 스토리지로서 이용될 수 있다. 또한, 앞서 논의되고 아래에서 상세히 설명되는 바와 같이, 배킹 메모리(108)는, 메모리 버스 상에 배치될 수 있고, 메모리 제어기와 직접 통신할 수 있고, 그 다음, 메모리 제어기는 프로세서(104)와 직접 통신한다. 배킹 메모리(108)는, 다른 명령어 및 데이터 스토리지 기술들(예를 들어, DRAM)과 결합되어, 하이브리드 메모리들(또한, 공동-위치 PCM 및 DRAM; 제1 레벨 메모리 및 제2 레벨 메모리; FLAM(FLASH 및 DRAM)으로 공지됨)을 형성할 수 있다. PCM을 포함하는 상기 기술들 중 적어도 일부는, 시스템 메모리 대신 또는 그에 추가로 대용량 스토리지로 이용될 수 있고, 이러한 방식으로 적용되는 경우 프로세서에 의해 랜덤 액세스가능이거나, 바이트-어드레스가능이거나, 또는 직접 어드레스가능일 필요가 없음을 주목한다.
설명의 편의를 위해, 본 출원의 나머지 대부분은, 바이트-어드레스가능한 비휘발성 메모리(108)에 대한 기술 선택으로서, "NVRAM" 또는 더 구체적으로는 "3D 크로스 포인트 메모리"를 참조할 것이다. 따라서, 용어 NVRAM, 3D 크로스 포인트 메모리, 및 배킹 메모리는, 하기 논의에서 상호 교환가능하게 사용될 수 있다. 그러나, 앞서 논의된 바와 같이, 배킹 메모리에 대해 상이한 기술들이 또한 활용될 수 있음을 인식해야 한다. 또한, NVRAM은 배킹 메모리로서의 이용에 제한되지 않는다.
"메모리측 캐시"(110)는, 일 실시예에서, 바이트-어드레스가능한 비휘발성 메모리에 비해 더 낮은 판독/기록 액세스 레이턴시 및/또는 더 대칭적 판독/기록 액세스 레이턴시를 갖는(즉, 기록 시간들과 대략 동등한 판독 시간들을 갖는) 배킹 메모리(108)의 앞에 있도록 구성되는 중간 레벨 메모리이다. 일부 실시예들에서, 메모리측 캐시(110)는 바이트-어드레스가능한 비휘발성 메모리(108)에 비해 상당히 더 낮은 기록 레이턴시를 갖지만, 유사한(예를 들어, 약간 낮거나 동등한) 판독 레이턴시를 갖는데; 예를 들어, 메모리측 캐시(110)는 휘발성 랜덤 액세스 메모리(VRAM)와 같은 휘발성 메모리일 수 있고, DRAM 또는 다른 고속 커패시터-기반 메모리를 포함할 수 있다. 그러나, 본 설명의 기본 원리들은 이러한 특정 메모리 타입들에 제한되지 않음을 주목해야 한다. 추가적으로, 메모리측 캐시(110)는 비교적 더 낮은 밀집도를 가질 수 있고 그리고/또는 바이트-어드레스가능한 비휘발성 메모리(108)보다 제조하기에 더 비쌀 수 있다. 일 실시예에서, 메모리측 캐시(110)는, 바이트-어드레스가능한 비휘발성 메모리(108)와 프로세서 캐시들(120-130) 사이에 구성된다. 아래에서 설명되는 실시예들 중 일부에서, 메모리측 캐시(110)는, 예를 들어, 판독/기록 레이턴시 제한들 및 메모리 악화 제한들을 포함하는 바이트-어드레스가능한 비휘발성 메모리의 성능 및/또는 용도 제한들을 마스킹하기 위해 하나 이상의 메모리측 캐시들(메모리측 캐시(110들))로 구성된다. 이러한 구현들에서, 캐시들(120-130), 메모리측 캐시(110) 및 배킹 메모리(108)의 조합은, 시스템 메모리로 오직 DRAM만을 이용하는 시스템에 근사화되거나, 동등하거나 이를 초과하는 성능 레벨로 동작한다. 아래에서 상세히 논의되는 바와 같이, 도 1에는 "캐시"로 도시되지만, 메모리측 캐시(110)는, 캐시의 역할을 수행하는 것에 추가로, 또는 그 대신에 다른 역할들을 수행하는 모드들을 포함할 수 있다.
메모리측 캐시(110)는, 프로세서 다이 상에 위치될 수 있고 그리고/또는 프로세서 다이 외부에(예를 들어, 메모리 듀얼 인라인 메모리 모듈(memory dual in-line memory module; DIMM), 라이저(riser)/메자닌(mezzanine) 또는 컴퓨터 마더보드 상에서, 예를 들어, CPU 패키지로의 고대역폭 링크로 CPU 패키지 외부에 위치되는, CPU 패키지 상에 위치된 별개의 다이 상에) 위치될 수 있다. 메모리측 캐시(110)는, 단일 또는 다수의 고대역폭 링크, 예를 들어, DDR 또는 다른 트랜잭셔널 고대역폭 링크들을 이용하여 프로세서 코어(104)와 통신하도록 커플링될 수 있다. 일 실시예에서, 메모리-측 캐시(110)는 작업량의 활성 작업 세트 크기(working set size; WSS)의 적어도 1/8인 메모리 용량을 갖는다. 작업량의 활성 작업 세트 크기(WSS)의 크기는, 핸드헬드 디바이스, 클라이언트 디바이스 또는 서버와 같은 애플리케이션에 따라 변할 수 있음이 인식된다. 특정 애플리케이션에 따라 다른 상대적인 크기들이 적절할 수 있음이 추가로 인식된다.
캐시들은 빈번하게, 메모리측 캐시(110)의 하나보다 많은 메모리 위치가 바이트-어드레스가능한 비휘발성 메모리(104)의 대응하는 메모리 위치에 맵핑될 수 있는 세트 연관(set associative)으로서 조직화된다. 캐시는 통상적으로, 캐시 엔트리들이 획득되는 바이트-어드레스가능한 비휘발성 메모리의 크기보다 상당히 작은 크기로 제한된다. 따라서, 캐시의 제한된 용량 내에서 캐시 엔트리들의 수를 유지하기 위해, 프로세서 코어에 의해 요청될 가능성이 적은 것으로 간주되는 캐시 엔트리들을, 프로세서 코어에 의해 요청될 가능성이 큰 것으로 간주되는 다른 캐시 엔트리들로 교체하기 위한 교체 정책이 빈번하게 이용된다.
통상적인 교체 정책은, 메모리 요청에서 최소 최근 사용된 캐시 엔트리가 캐시로부터 퇴거되고, 메모리 요청의 오브젝트가 될 가능성이 큰 것으로 예상되는 캐시 엔트리로 교체되는 최소 최근 사용(LRU) 교체 정책이다. LRU 교체 정책의 LRU 알고리즘은 통상적으로, 희생물 선택 동안 더티 캐시 엔트리들을 마킹하는데 이용되는 더티 플래그들을 고려하지 않는다.
도 2는, 본 설명의 일 양상에 따라 대안적인 캐시 엔트리 교체 정책(210)을 선택하기 위해 인에이블될 수 있는 퇴거 로직(200)을 갖는 메모리측 캐시(110)의 일 실시예에 대한 개략도이다. 예시된 실시예에서, 선택될 수 있는 하나의 대안적인 캐시 엔트리 교체 정책(210)은, 바이트-어드레스가능한 비휘발성 메모리(108)로의 라이트백 트래픽(write back traffic)을 감소시키기 위해, 더티 캐시 라인들보다 클린 캐시 라인들을 퇴거하는 것을 선호하는 부류의 정책들을 표현하는 클린 퇴거 우선(clean eviction first)(CEF) 정책이다.
본 설명의 다른 양상에서, 메모리측 캐시(110)는, 자신의 메모리 위치들을, 예시된 실시예에서 희생 파티션(224)인 제2 파티션 및 메인 파티션(220)과 같이 2개 이상의 파티션들로 파티셔닝하도록 선택적으로 인에이블될 수 있다. 예를 들어, 더티 캐시 희생물들을 바이트-어드레스가능한 비휘발성 메모리(108)로 드레이닝(draining)하는 대신에, 퇴거 로직(200)에 의해 메인 파티션(220)으로부터 퇴거되는 이러한 더티 캐시 엔트리들은, 선택적으로 인에이블될 수 있는 더티 희생 캐싱 정책(228)에 따라, 전용 캐시 파티션인 희생 파티션(224)에서 캡쳐될 수 있다. 그 다음, 더티 캐시 라인은, 클린 퇴거 우선 정책(210)에 따라, 더티 희생 파티션(224)으로부터 퇴거될 수 있다. 희생 파티션(224)이 더티 희생물들에만 전용되면, 더티 희생 파티션(224)은 클린 캐시 라인들을 포함하지 않을 것이다. 더티 희생 파티션(224)으로부터 퇴거된 더티 캐시 라인은, 그 캐시 엔트리에 기록되는 기록 데이터를 보존하기 위해, 바이트-어드레스가능한 비휘발성 메모리(108)로 라이트백된다.
예시된 실시예에서, 캐시 판독 및 기록 동작들이 관련되는 한, 캐시 파티션들, 즉, 메인 파티션(220) 및 희생 파티션(224) 둘 모두는 하나의 캐시로 효과적으로 동작한다. 따라서, 캐시 검색은 파티션들(220, 224) 둘 모두를 스캔한다. 따라서, 이러한 실시예에서, 캐시 라인은 메인(220) 또는 희생 파티션(224)에 존재한다. 메모리측 캐시를 채울 때, 일 실시예에서, 메인 파티션 캐싱 정책(230)에 따라 희생 파티션(224)보다는 메인 파티션(220)에 새로운 캐시 라인들이 삽입되어, 희생 파티션(224)은, 메인 파티션(220)으로부터 더티 퇴거들만을 유지할 수 있다.
예시된 실시예에서, 메모리측 캐시(110)의 이용가능한 캐시 용량의 특정 부분은, 더티 캐시 라인들을 캐싱하기 위한 희생 파티션(224)에 배타적으로 전용될 수 있다. 파티션(224)과 같은 전용 희생 파티션에서 더티 희생 캐싱을 인에이블하는 것은, 바이트-어드레스가능한 비휘발성 메모리(108)에 대한 라이트백 트래픽의 양에 상당히 영향을 미치지 않고 메모리측 캐시(110)의 전반적 용량을 25%까지 감소시키는 것을 용이하게 할 수 있는 것으로 여겨진다. 따라서, 일부 실시예들에서, 캐시(110)의 크기의 전반적 감소의 결과로, 바이트-어드레스가능한 비휘발성 메모리(108)로의 라이트백 트래픽의 어떠한 증가가 허용가능한 제한들 내로 유지되면서, 더 크고 더 비싼 캐시를 대신하여 더 작고 덜 비싼 메모리측 캐시(110)가 대용될 수 있다.
일 실시예에서, 희생 파티션(224)에 대한 용량의 적절한 할당은 메인 파티션(220)의 용량의 적어도 1/4 내지 1/2이고, 이는 용량의 상당한 할당이다. 또한, 희생 파티션(224)의 연관성은 바람직하게는 메인 파티션(220)의 연관성의 1/2를 수행하는 것으로 여겨진다. 희생 파티션(224)이 너무 작으면, 더티 캐시 라인들 상의 히트들보다 더 많은 희생 파티션(224)으로부터의 퇴거들이 존재하는 상태가 초래될 수 있는 것으로 여겨진다. 그러한 경우, 희생물들을 캐싱하는 효과는 감소될 수 있다. 반대로, 희생 파티션(224)에 너무 많은 캐시 공간이 할당되면, 캐시 히트들은, 메인 파티션(220)의 클린 캐시 라인들로의 캐시 히트들을 댓가로, 더티 캐시 라인들로의 기록들 및 판독들을 선호할 수 있기 때문에, 전반적인 캐시 성능이 감소될 수 있는 것으로 여겨진다. 일반적으로, 특정 파티션의 적절한 크기 및 연관성은 특정 애플리케이션에 따라 변할 수 있는 것으로 여겨진다.
본 설명의 또 다른 양상에서, 어드레스 전환은 메모리측 캐시(110)에 대해 선택적으로 인에이블될 수 있다. 예시된 실시예에서, 프로세서 코어(104)로부터의 메모리 요청들의 어드레스들을 맵핑하기 위해, 메모리측 캐시(110)의 입력에 입력 어드레스 맵핑 로직(240)이 제공된다. 또한, 입력 어드레스 맵핑 로직(240)의 맵핑된 어드레스들을 다시 맵핑하기 위해, 메모리측 캐시(110)의 출력에 출력 어드레스 맵핑 로직(244)이 제공된다. 하나 이상의 이러한 맵핑 또는 리맵핑 동작들은, 바이트-어드레스가능한 비휘발성 메모리(108)의 이용가능한 어드레스 공간 내에서 개선된 트래픽 셔플링 및 확산을 달성할 수 있는 것으로 여겨진다. 증가된 트래픽 분산은, 웨어 레벨링 알고리즘들에 대한 압박을 감소시키고 악의적 공격들의 영향을 감소시킴으로써, 바이트-어드레스가능한 비휘발성 메모리(108)와 같은 비휘발성 메모리의 평균 수명 시간을 연장시키는 것을 용이하게 하는 것으로 여겨진다. 아래에서 더 상세히 설명되는 바와 같이, 예시된 실시예의 어드레스 맵핑 로직은, 배타적 논리합 기반 맵핑 함수(exclusive-or based mapping function)를 포함할 수 있다. 특정 애플리케이션에 따라 다른 맵핑 함수들이 이용될 수 있음이 인식된다.
본 설명의 또 다른 양상에서, 메모리측 캐시(110)는 디바이스 모니터링 및 정책 선택 로직(250)을 포함한다. 도 3은, 메모리측 캐시(110)의 동작들의 예를 도시하고, 여기서, 기록 필터링 정책들, 예를 들어, 클린 퇴거 우선 정책 및 희생 캐시 파티션 정책, 및 웨어 레벨링 정책들, 예를 들어, 어드레스 전환 정책 중 하나 이상이 선택적으로 및 교번하여, 그리고 다양한 결합들에서는 "온 더 플라이"로 인에이블 및 디스에이블되어, 시스템이 동작하고 작업량의 실행 단계와 같은 동작 조건들이 변할 때, 디바이스 수명, 에너지 효율 또는 성능을 개선시킬 수 있다.
제1 동작에서, 디바이스 동작들이 모니터링된다(블록(300)). 예를 들어, 디바이스에 의해 경험되는 작업량의 레벨이 도 2의 디바이스 모니터링 로직(250)과 같은 로직에 의해 모니터링될 수 있다. 또한, 디바이스의 상태가 모니터링될 수 있다. 예를 들어, 디바이스는, 부트 프로세스(기본 입력 및 출력 시스템(BIOS) 이미지들) 동안 키 시스템 컴포넌트들을 초기화하기 위해 프로세서에 의해 초기 명령어들이 실행되는 부트 프로세스에 있을 수 있다. 디바이스 작업량 또는 디바이스의 상태와 같은 기존의 조건들에 기초하여, 예를 들어, 클린 퇴거 우선 정책과 같은 대안적인 교체 정책이 이용되어야 하는지 여부(블록(310))에 대해, 디바이스가 동작할 때 실시간으로 로직(250)에 의해 판정될 수 있다. 그러한 경우, 클린 퇴거 우선 정책이 인에이블된다(블록(314)). 반대이면, 디바이스 상태 또는 작업량과 같은 기존의 조건에 기초하여, 클린 퇴거 우선 정책을 디스에이블(블록(318))하는 것으로, 디바이스가 동작할 때 실시간으로 로직(250)에 의해 판정될 수 있다. 따라서, 시스템은, 예를 들어, 클린 퇴거 우선 정책으로부터 성능-기반 최소 최근 사용 정책으로, 그리고 조건들이 타당해질 때 다시 클린 퇴거 우선 정책으로 전환할 수 있다. 예를 들어, 시스템이 비교적 가벼운 작업량을 경험하고 있으면, 메모리 동작 성능의 감소가 전반적 시스템 성능에 거의 영향을 미치지 않을 수 있는 포인트에서 바이트-어드레스가능한 비휘발성 메모리에 대한 기록 트래픽을 감소시키기 위해 클린 퇴거 우선 정책이 인에이블될 수 있다. 유사하게, 클린 퇴거 우선 정책은 부트 프로세스 동안 인에이블 또는 디스에이블될 수 있다.
추가로, 디바이스 상태 또는 작업량과 같은 기존의 조건들에 기초하여, 더티 희생 파티션이 이용되어야 하는지 여부(블록(320))에 대해, 디바이스가 동작할 때 실시간으로 로직(250)에 의해 판정될 수 있다. 그러한 경우, 더티 희생 파티션이 인에이블된다(블록(324)). 반대이면, 작업량과 같은 기존의 조건들에 기초하여, 이전에 인에이블된 더티 희생 파티션을 디스에이블(블록(328))하는 것으로, 디바이스가 동작할 때 실시간으로 로직(250)에 의해 판정될 수 있다. 그러한 경우, 희생 파티션이 플러싱 및 디스에이블될 수 있고, 그 다음, 후속적으로, 작업량의 실행 단계와 같은 다양한 요인들에 따라, 인에이블되고 더티 희생 라인들로 리로딩될 수 있다. 유사하게, 희생 파티션은 부트 프로세스 동안 인에이블 또는 디스에이블될 수 있다.
또한, 디바이스 상태와 같은 기존의 조건들에 기초하여, 입력 어드레스 맵핑이 이용되어야 하는지 여부(블록(330))에 대해 로직(250)에 의해 판정될 수 있다. 그러한 경우, 입력 어드레스 맵핑이 인에이블된다(블록(334)). 반대이면, 디바이스 상태에 기초하여, 이전에 인에이블된 입력 어드레스 맵핑을 디스에이블(블록(338))하는 것으로 로직(250)에 의해 판정될 수 있다. 유사한 방식으로, 출력 어드레스 맵핑이 이용되어야 하는지 여부(블록(340))에 대해 로직(250)에 의해 판정될 수 있다. 그러한 경우, 출력 어드레스 맵핑이 인에이블되거나(블록(344)), 또는 그렇지 않으면, 디스에이블된다(블록(348)). 예를 들어, 사용자 선택 입력들 또는 디바이스에 대해 설치된 특정 부트 명령어들에 대한 응답으로, 캐시 메모리 입력, 출력 및/또는 파티션들 사이에서 부트 프로세스 동안 어드레스 전환이 선택적으로 인에이블 또는 디스에이블될 수 있다. 이러한 방식으로, 기록 필터링 및 어드레스 전환 정책들의 다양한 조합들의 선택적 인에이블 및 디스에이블은, 예를 들어, 디바이스가 동작하고 디바이스 동작 조건들이 변할 때 또는 디바이스가 부트 프로세스에서 초기화될 때, 디바이스 수명에 대한 성능과 에너지 효율을 트레이드 오프하기 위한 추가적인 유연성을 제공한다.
다른 실시예들에서, 교체 정책, 희생 파티션 및 어드레스 맵핑 중 하나 이상은, 본 설명에 따른 캐시 동작들을 이용하는 디바이스의 제조 시에 고정될 수 있음이 인식된다. 따라서, 교체 정책, 희생 파티션 및 어드레스 맵핑 중 하나 이상은, 본 설명에 따른 캐시 동작들을 이용하는 디바이스의 제조 시에 영구적으로 인에이블 또는 디스에이블될 수 있다.
도 4는, 메모리측 캐시(110)의 캐시 교체 동작들의 예를 도시하고, 여기서, 기록 필터링 정책들, 예를 들어, 클린 퇴거 우선 정책 및 희생 캐시 파티션 정책, 및 웨어 레벨링 정책들, 예를 들어, 어드레스 전환 정책 중 하나 이상은, 다양한 결합들로, 제조될 때 영구적으로 또는 모니터링된 디바이스 동작들에 대한 응답으로 일시적으로 인에이블 또는 디스에이블된다. 예시된 실시예에서, 대안적인 교체 정책들은 최소 최근 사용(LRU) 교체 정책, 및 최소 최근 사용 정책에 기초한 클린 퇴거 우선 정책을 포함한다. 따라서, 캐시 교체 동작들의 개시(블록(400)) 시에, 캐시 교체 탐색 윈도우(500)(도 5a)의 최소 최근 사용(LRU) 캐시 라인이 클린인지 여부에 대해 판정된다(블록(404)). 도 5a는, 최소 최근 사용 정책에 기초한 클린 퇴거 우선 정책의 구현의 일례를 예시한다. 이 예에서, 클린 퇴거 우선 정책은, 캐시 엔트리들을, 캐시 엔트리들(510a-n)으로 표현된 바와 같이, 프로세서 코어에 의해 이들의 (존재하는 경우) 사용의 최신성에 따라 정렬하며, 여기서 사용의 최신성은 화살표(514)로 표현된다. 따라서, 이 예에서, 화살표(514)의 베이스에 있는 캐시 엔트리(510a)는 최소 최근 사용 캐시 엔트리(least recently used cache entry)이고, 화살표(514)의 끝에 있는 캐시 엔트리(510n)는 가장 최근 사용 캐시 엔트리(most recently used cache entry)이다.
최소 최근 사용 캐시 엔트리의 라인, 즉, 캐시 엔트리(510a)가 클린인 것으로 결정되면(블록(404)), 최소 최근 사용 캐시 엔트리의 클린 라인은 메모리측 캐시(110)로부터 퇴거될 수 있다(블록(408)). 그러나, 도 5a의 예에서, 최소 최근 사용 캐시 엔트리(510a)의 라인은 더티인 것으로 도시되어 있다. 따라서, 클린 퇴거 정책(210)(도 2)과 같은 클린 퇴거 우선 정책이 인에이블되는지에 대해 결정된다(블록(410)). 그러한 경우, 탐색 윈도우(500)에 클린 라인이 존재하는지 여부에 대해 결정된다(블록(414)). 도 5a의 예에서, 탐색 윈도우(500)의 최소 최근 사용 클린 라인은 캐시 엔트리(510c)의 라인이다. 따라서, 클린 퇴거 우선 정책이 인에이블되고, 최소 최근 사용 클린 라인은 지정(520a)에 의해 표시된 바와 같이 희생물로 지정되고, 메모리측 캐시(110)로부터 퇴거된다(블록(408)).
반대로, 클린 퇴거 우선 정책이 인에이블되지 않았다면(블록(410) (또는 탐색 윈도우(500)가 어떠한 클린 라인들도 포함하지 않는 것으로 결정된다면(블록(414)), 캐시 엔트리(510a)의 최소 최근 사용 더티 라인은, 도 5a의 캐시 엔트리(510c) 대신에 도 5b의 지정(520b)에 의해 표시되는 바와 같이 희생물로 지정된다. 도 5b는, 클린 퇴거 우선 정책에 대한 대안으로 선택적으로 인에이블될 수 있는 대안적인 정책으로서, 최소 최근 사용 정책의 구현의 일례를 예시한다.
탐색 윈도우(500)가 어떠한 클린 라인들도 포함하지 않기 때문에 또는 클린 퇴거 우선 정책이 인에이블되지 않았기 때문에, 더티 라인의, 희생물로의 지정 시에, 더티 희생 캐시 파티션이 인에이블되었는지 여부에 대해 결정된다(블록(418)). 그러한 경우, 캐시 엔트리(510a)의 최소 최근 사용 더티 라인이 메인 파티션(220)(도 2)으로부터 퇴거되고(블록(420)), 희생 파티션(224)으로 전송된다.
더티 희생 파티션이 인에이블되지 않았다면(블록(418)), 출력 어드레스 맵핑 로직(244)(도 2)의 출력 어드레스 맵핑이 인에이블되었는지 여부에 대해 결정된다(블록(440)). 그러한 경우, 최소 최근 사용 캐시 엔트리(510a)의 더티 라인의 어드레스가 출력 어드레스 맵핑 로직(244)(도 2)에 의해 맵핑(블록(444))(또는 리맵핑)될 수 있고, 최소 최근 사용 캐시 엔트리(510a)의 더티 라인은 메모리측 캐시(110)로부터 퇴거될 수 있고(블록(448)), 바이트-어드레스가능한 비휘발성 메모리(108)에 라이트백될 수 있다. 출력 어드레스 맵핑(블록(444))의 결과로, 라이트백들이 바이트-어드레스가능한 비휘발성 메모리(108)의 전체 어드레스 공간 전반에 걸쳐 더 균등하게 분산되어, 바이트-어드레스가능한 비휘발성 메모리(108)의 메모리 위치들 사이에 라이트백들의 웨어를 더 균등하게 분산시킬 수 있다. 출력 어드레스 맵핑이 인에이블되지 않았다면(블록(440)), 최소 최근 사용 캐시 엔트리(510a)의 더티 라인은 메모리측 캐시(110)로부터 퇴거될 수 있고(블록(450)), 출력 어드레스 맵핑 없이, 바이트-어드레스가능한 비휘발성 메모리(108)에 라이트백될 수 있다.
클린 라인(블록(408)) 또는 더티 라인(블록(448, 450))을 메모리측 캐시(110)로부터 퇴거시킴으로써, 퇴거된 캐시 라인에 의해 이전에 점유되었던 캐시 메모리 위치는 바이트-어드레스가능한 비휘발성 메모리(108)로부터의 데이터의 프레쉬(fresh) 라인에 의해 점유될 수 있다. 따라서, 출력 어드레스 맵핑이 인에이블되면(더티 라인 퇴거들에 대한 블록(440) 또는 클린 라인 퇴거들에 대한 블록(454)), 바이트-어드레스가능한 비휘발성 메모리(108)로부터 데이터의 새로운 라인을 요청하는 판독 요청의 메모리 어드레스는, 데이터의 새로운 라인이 바이트-어드레스가능한 비휘발성 메모리(108)로부터 판독되고 메모리측 캐시(110)에 캐싱(블록(460))되기 전에 맵핑될 수 있다(블록(458))(또는 입력 어드레스 맵핑이 또한 인에이블되면 리맵핑될 수 있다). 출력 어드레스 맵핑이 인에이블되지 않으면(더티 라인 퇴거들에 대한 블록(440) 또는 클린 라인 퇴거들에 대한 블록(454)), 바이트-어드레스가능한 비휘발성 메모리(108)로부터 데이터의 새로운 라인을 요청하는 판독 요청의 메모리 어드레스는, 바이트-어드레스가능한 비휘발성 메모리(108)로부터 데이터의 새로운 라인을 판독하기 위한 출력 어드레스 맵핑(또는 리맵핑) 및 이를 메모리측 캐시(110)에 캐싱(블록(460))함이 없이, 바이트-어드레스가능한 비휘발성 메모리(108)에 직접 적용될 수 있다.
일 실시예에서, 퇴거 동작은, 메인 파티션으로부터의 퇴거 및 희생 파티션으로부터의 더티 라인 퇴거 둘 모두의 각각의 시간을 포함할 수 있다. 이러한 배열은 캐싱 성능을 개선할 수 있는 것으로 여겨진다. 다른 실시예에서, 퇴거 동작은 빈번하게 메인 파티션으로부터 더티 라인 퇴거로 제한되어 기록 트래픽 감소를 개선할 수 있다.
예시된 실시예에서, 일반적인 상황으로, 큰 탐색 윈도우(500)는, 메모리측 캐시(110)로부터 바이트-어드레스가능한 비휘발성 메모리(108)로의 라이트백들에 대한 개선된 감소를 용이하게 할 수 있는 것으로 여겨진다. 반대로, 메모리측 캐시(110)에 대한 큰 탐색 윈도우는, 캐시 히트들 대 캐시 미스들의 관점에서, 메모리측 캐시(110)의 캐싱 품질에 상당한 정도로 악영향을 미치지는 않는 것으로 여겨진다. 탐색 윈도우 크기(SWS)는 캐시 연관성(캐시 세트 당 웨이(way)들의 수)을 지칭한다. 모든 캐시 웨이들의 적어도 50%의 SWS가 양호한 기록 트래픽 감소를 위해 유리한 것으로 여겨진다.
본 설명의 다른 양상에서, 메모리 동작들의 경로를 따른 다수의 위치들에서 어드레스 전환에 의해 멀티-레벨 어드레스 전환이 실현될 수 있다. 따라서, 어드레스 전환은, 예를 들어, 메모리측 캐시와 같은 메모리 엘리먼트의 입력 및 출력 둘 모두에 제공될 수 있다. 이러한 어드레스 전환은 또한 파티션들 사이에 제공될 수 있음이 인식된다. 본 설명에 따른 멀티-레벨 어드레스 전환은, 바이트-어드레스가능한 비휘발성 메모리에 대한 웨어 레벨링 알고리즘들에 대한 압박을 감소시키고 또한 바이트-어드레스가능한 비휘발성 메모리의 제한된 내구성에 대한 특정한 악의적 공격들에 대한 취약성을 감소 또는 제거하기 위해, 전체 이용가능한 어드레스 공간에 걸친 라이트백 동작들의 확산을 향상시킬 수 있는 것으로 여겨진다. 도 6은, 본 설명에 따른 멀티-레벨 어드레싱 전환의 일 실시예를 도시한다. 제1 동작에서, 예를 들어, 메모리 기록 요청과 같은 메모리 I/O 동작이 수신된다(블록(600)). 어드레스 입력 맵핑이 인에이블되면(블록(610)), 메모리 위치의 어드레스는 도 2의 로직(240)과 같은 입력 어드레스 맵핑 로직에 의해 맵핑되고(블록(614)), 맵핑된 입력 어드레스에 의해 식별된 메모리측 캐시(110)의 캐시 엔트리로의 기록 동작이 수행된다(블록(620)). 어드레스 입력 맵핑이 인에이블되지 않으면, 불변인 입력 어드레스에 의해 식별된 메모리측 캐시(110)의 캐시 엔트리로의 기록 동작이 수행된다(블록(620)).
일 실시예에서, 어드레스 맵핑은 배타적 논리합(XOR) 맵핑 함수에 기초한다. 특정 애플리케이션에 따라, 이러한 함수에 의해 부과되는 임의의 연산 오버헤드는 최소화될 수 있는 것으로 여겨진다. 예를 들어, 도 7a에 도시된 바와 같이, 요청된 메모리 동작(블록(600), 도 6)의 원래 어드레스(700)는 태그 어드레스(t) 및 세트 어드레스(s)로 분할될 수 있다. 예를 들어, 일부 실시예들에서, 태그 어드레스(t)는 요청된 메모리 위치를 표현할 수 있고, 세트 어드레스(t)는, 요청된 메모리 위치와 연관된 메모리측 캐시(110)의 메모리 위치를 표현할 수 있다. 이러한 실시예에서, 배타적 논리합 맵핑 함수(710)는 세트 어드레스(s)를 변형하고, 태그 어드레스(t)는 불변으로 유지된다. 맵핑된 세트 어드레스(s')는, 다음과 같이 도 8에 도시된 배타적 논리합 맵핑 함수(710)에 의해 생성되고,
s' = A*s + B*t
여기서, 맵핑된 세트 어드레스(s')는, 입력 세트 어드레스(s)와 고정된 행렬 A와의 배타적 OR(함수(800)), 입력 태그 어드레스(t)와 고정된 행렬 B와의 배타적 OR(함수(810)), 및 이러한 중간적 결과들을 서로 가산하여(함수(820)), 맵핑된 메모리 어드레스(714)를 제공하기 위해 불변인 태그 어드레스(t)에 연접되는 맵핑된 세트 어드레스(s')를 제공하는 것을 포함하는 일련의 동작들의 결과이다. 예시된 실시예에서, 행렬 A 및 행렬 B는, 수에서, 각각 세트 어드레스(s) 및 태그 어드레스(t)의 비트들의 수에 대응하는 비트들의 고정된 스트링들이다. 다른 실시예들에서, 특정 애플리케이션에 따라, 다른 타입들의 수들, 수치적 및 논리적 연산들 및 맵핑 함수들이 이용될 수 있음이 인식된다.
메모리측 캐시(110)에 의해 구현되는 교체 정책에 따라, 입력 어드레스 맵핑 로직(240)(도 2)에 의해 맵핑되는 맵핑된 메모리 어드레스(714)의 더티 캐시 엔트리는, 더티 희생 파티션(224)(도 2)로 퇴거될 수 있다(블록(624), 도 6). 그러한 경우, 그리고 더티 파티션 맵핑이 인에이블되었다면(블록(630)), 메모리 어드레스(714)는 다시 맵핑될 수 있는데(블록(634)), 즉, 도 7b에 도시된 바와 같이, 파티션-내 어드레스 맵핑 로직(260)(도 2)에 의해, 리맵핑된 어드레스(720)에 리맵핑될 수 있다. 예시된 실시예에서, 맵핑 로직(240)과 유사한 맵핑 로직(260)은 도 7b에 도시된 바와 같이 맵핑 로직(710)을 포함한다.
따라서, 배타적 논리합 맵핑 함수는 세트 어드레스(s')를 변형하고, 태그 어드레스(t)는 불변으로 유지된다. 도 8b에 도시된 바와 같이, 맵핑된 세트 어드레스(s'')는, 다음과 같이 도 8a에 도시된 것과 유사한 방식으로 배타적 논리합 맵핑 함수에 의해 생성되고,
s'' = C*s' + D*t
여기서, 리맵핑된 세트 어드레스(s'')는, 입력 세트 어드레스(s')와 고정된 행렬 C와의 배타적 OR(함수(800), 도 8b), 입력 태그 어드레스(t)와 고정된 행렬 D와의 배타적 OR(함수(810)), 및 이러한 중간적 결과들을 서로 가산하여(함수(820)), 리맵핑된 메모리 어드레스(720)를 제공하기 위해 불변인 태그 어드레스(t)에 연접되는 리맵핑된 세트 어드레스(s'')를 제공하는 것을 포함하는 일련의 동작들의 결과이다. 그 다음, 더티 희생 캐시 엔트리는, 리맵핑된 세트 어드레스(s'') 및 태그(t)에 의해 식별되는 캐시 엔트리 위치에서 더티 희생 파티션(224)(도 2)으로 퇴거될 수 있다(블록(640)). 파티션-내 어드레스 맵핑이 인에이블되지 않으면, 더티 캐시 엔트리는, 입력 어드레스 맵핑이 인에이블된 경우, 맵핑된 세트 어드레스(s')에 의해 식별되는 캐시 엔트리 위치에서, 또는 입력 어드레스 맵핑이 인에이블되지 않은 경우, 맵핑되지 않은 세트 어드레스(s)에 의해 식별되는 더티 희생 파티션 메모리 위치에서, 더티 희생 파티션(224)(도 2)으로 퇴거될 수 있다(블록(640)).
메모리측 캐시(110)에 의해 구현되는 교체 정책에 따라, 파티션-내 어드레스 맵핑 로직(260)(도 2)에 의해 리맵핑되는 리맵핑된 메모리 어드레스(720)의 더티 캐시 엔트리는, 더티 희생 파티션(224)(도 2)으로 퇴거될 수 있고(블록(644), 도 6), 바이트-어드레스가능한 비휘발성 메모리(108)에 라이트백될 수 있다. 그러한 경우, 그리고 출력 어드레스 맵핑이 인에이블되었다면(블록(650)), 메모리 어드레스(720)는 다시 맵핑될 수 있는데(블록(654)), 즉, 도 7c에 도시된 바와 같이, 맵핑 로직(710)에 의해, 리맵핑된 어드레스(724)에 리맵핑될 수 있다.
따라서, 배타적 논리합 맵핑 함수(710)는 세트 어드레스(s'')를 변형하고, 태그 어드레스(t)는 불변으로 유지된다. 도 8c에 도시된 바와 같이, 맵핑된 세트 어드레스(s''')는, 다음과 같이 도 8a에 도시된 방식과 유사한 방식으로 배타적 논리합 맵핑 함수에 의해 생성되고,
s''' = E*s'' + F*t
여기서, 맵핑된 세트 어드레스(s''')는, 입력 세트 어드레스(s'')와 고정된 행렬 E와의 배타적 OR(함수(800), 도 8c), 입력 태그 어드레스(t)와 고정된 행렬 F와의 배타적 OR(함수(810)), 및 이러한 중간적 결과들을 서로 가산하여(함수(820)), 리핑된 메모리 어드레스(724)를 제공하기 위해 불변인 태그 어드레스(t)에 연접되는 맵핑된 세트 어드레스(s''')를 제공하는 것을 포함하는 일련의 동작들의 결과이다. 그 다음, 더티 희생 캐시 엔트리는 퇴거될 수 있고, 리맵핑된 세트 어드레스(s''') 및 태그(t)에 의해 식별되는 메모리 위치에서 바이트-어드레스가능한 비휘발성 메모리(108)에 라이트백될 수 있다(블록(660)). 출력 어드레스 맵핑이 인에이블되지 않으면, 더티 캐시 엔트리는, 파티션-내 어드레스 맵핑 및 입력 어드레스 맵핑이 인에이블된 경우, 리맵핑된 세트 어드레스(s'') 및 태그(t)에 의해 식별되는 메모리 위치에서 바이트-어드레스가능한 비휘발성 메모리(108)(도 2)에, 또는 입력 어드레스 맵핑이 인에이블된 경우, 맵핑된 세트 어드레스(s') 및 태그(t)에 의해 식별되는 위치에서 바이트-어드레스가능한 비휘발성 메모리(108)(도 2)에, 또는 입력 어드레스 맵핑이 인에이블되지 않은 경우, 맵핑되지 않은 세트 어드레스(s) 및 태그(t)에 의해 식별되는 메모리 위치에서 바이트-어드레스가능한 비휘발성 메모리(108)(도 2)에 라이트백될 수 있다(블록(660)).
예시된 실시예에서, 메모리측 캐시(110)는, 앞서 설명된 바와 같은 다양한 동작들을 수행하기 위한 로직을 포함한다. 예를 들어, 퇴거 로직(200), 디바이스 모니터링 및 정책 선택 로직(250), 입력 어드레스 맵핑 로직(240), 파티션-내 어드레스 맵핑 로직(260) 및 출력 어드레스 맵핑 로직(244)을 포함하는 이러한 로직은, 하드웨어, 소프트웨어, 펌웨어 및 이들의 다양한 조합들 중 하나 이상을 포함하는 하나 이상의 제어기들에서 구현될 수 있다.
도 9는, 도 1의 메모리 계층에서 이용하기 위한 배킹 메모리(108)의 일례를 도시한다. 배킹 메모리(108)는, 3D 크로스 포인트 배킹 메모리 제어기(900) 및 일련의 3D 크로스 포인트 메모리 배킹 메모리 모듈들(910a-n)을 포함한다. 일 실시예에서, 3D 크로스 포인트 메모리 배킹 메모리(530a-i)의 단일 풀이 시스템 메모리와 스토리지 용도들 사이에서 동적으로 공유될 수 있다.
본 명세서에서 이용되는 시스템 메모리는, 프로세서 코어(104) 상에서 실행되는 소프트웨어에 가시적이고 그리고/또는 그 소프트웨어에 의해 직접 어드레스가능한 한편; 캐시 메모리들(110, 120-130)은, 시스템 어드레스 공간의 직접적으로 어드레스가능한 부분을 형성하지 않는다는 점에서 소프트웨어에 투명하게 동작할 수 있지만, 또한 소프트웨어가 캐시(들)의 일부 또는 전부에 어떠한 제어(구성, 정책들, 힌트들 등)를 제공하도록 허용하는 명령어들의 실행을 지원할 수 있다. 시스템 메모리의 구역들로의 세분화는 시스템 구성 프로세스의 일부로서 (예를 들어, 시스템 설계자에 의해) 수동으로 수행될 수 있고, 그리고/또는 소프트웨어에 의해 자동으로 수행될 수 있다.
이러한 실시예에서, 전체 3D 크로스 포인트 메모리 풀(530a-i)은, 예를 들어, 4KB 크기의 "블록들"로 세분화될 수 있고, 불량한 블록들을 배제하고 웨어 레벨링 동작들을 위한 여분의 블록들을 제공하기 위한 테이블이 이용될 수 있다. 또한, 테이블은, 각각의 블록의, 소프트웨어에 의해 이용되는 "논리적" 블록 어드레스로의 맵핑을 또한 포함할 수 있다.
웨어 레벨링으로 인해 블록이 이동될 때마다, 어드레스 인디렉션 테이블(Address Indirection Table; AIT)(920)이 업데이트될 수 있다. 이러한 상황이 발생하는 경우, 소프트웨어에 의해 이용되는 로직 블록 어드레스는 상이한 3D 크로스 포인트 메모리 디바이스 어드레스(PDA)에 맵핑될 수 있다. 일 실시예에서, 이러한 맵핑은 AIT에 저장되고, 모든 웨어-레벨이 이동할 때 업데이트된다. 본 설명에 따른 캐시 레벨의 어드레스 전환은, NVRAM 자체 내의 웨어 레벨링 동작들에서의 완화 또는 감소를 허용할 수 있는 것으로 여겨진다.
예시된 바와 같이, 3D 크로스 포인트 메모리 제어기(900)는, 시스템 어드레스들을 3D 크로스 포인트 메모리 블록들에 맵핑하기 위해, 웨어 관리 유닛(930) 및 어드레스 인디렉션 유닛(934)에 대한 응답으로, (앞서 논의된 바와 같이 메모리측 캐시(110)에 의해 이전에 맵핑되었을 수 있는) 시스템 메모리를 맵핑하기 위한 어드레스 맵핑 로직(924)을 포함한다. 일 실시예에서, 웨어 관리 로직(930)은, 3D 크로스 포인트 메모리(910a-n)의 저장 셀들이 너무 많은 기록 및/또는 소거 액세스들 이후 웨어 아웃하기 시작한다는 사실을 처리하기 위한 웨어 레벨링 알고리즘을 구현한다. 예를 들어, 낮은 사이클 카운트들을 갖는 데이터 블록들을 가끔 이동하게 하여, 높은 사이클 데이터 블록들이 그 낮은 사이클 데이터 블록들을 저장하는 메모리 셀들에 배치되도록 허용함으로써, 웨어 레벨링은 3D 크로스 포인트 메모리 디바이스의 메모리 셀들에 걸쳐 기록들 및 소거들을 확산시킨다. 통상적으로, 대부분의 블록들은 순환하지 않지만, 높은 사이클 카운트 블록들은 실패할 가능성이 매우 높고, 웨어 레벨링은 낮은 사이클 카운트 블록들과 높은 사이클 카운트 블록들의 어드레스들을 스와핑한다. 웨어 관리 로직(930)은, 하나 이상의 카운터들 및 레지스터들을 이용하여 사이클 카운트들을 추적할 수 있다 (예를 들어, 카운터들은, 사이클이 검출될 때마다 1만큼 증분될 수 있고, 그 결과는 레지스터들의 세트에 저장될 수 있다). 일 실시예에서, 어드레스 인디렉션 로직(934)은, 기록 동작들이 향해야 하는 3D 크로스 포인트 메모리 블록들의 표시를 포함하는 어드레스 인디렉션 테이블(AIT)(920)을 포함한다. AIT는 블록들을 메모리와 스토리지 용도들 사이에서 자동으로 이동시키기 위해 이용될 수 있다. 소프트웨어 관점에서, 모든 블록들로의 액세스는 종래의 메모리 로드/저장 시맨틱스(semantics)를 이용한다 (즉, 웨어 레벨링 및 어드레스 인디렉션 동작들은 소프트웨어에 투명하게 발생한다). 일 실시예에서, AIT는, 소프트웨어에 의해 생성된 시스템 어드레스를 PDA로 전환하기 위해 이용된다. 이러한 전환은, 3D 크로스 포인트 메모리 디바이스들을 균일하게 웨어링하는 것을 용이하게 한다. 그 결과, 데이터는, 임의의 핫스팟들을 회피하기 위해 PDA 공간에서 주위로 이동할 것이다. 이러한 이동이 발생하는 경우, 시스템 어드레스 공간과 PDA 사이의 관계는 변할 것이고, AIT는 이러한 새로운 전환을 반영하기 위해 업데이트될 것이다.
실시예들
하기 예들은 추가적인 실시예들과 관련된다.
예 1은, 메모리 위치들을 갖는 바이트-어드레스가능한 비휘발성 메모리와 이용하기 위한 디바이스이고,
캐시 메모리 및 복수의 캐시 엔트리들을 갖고, 캐시 메모리의 캐시 엔트리들의 바이트-어드레스가능한 비휘발성 메모리에서의 메모리 위치들로부터 데이터를 캐싱하도록 구성되는 캐시를 포함하고, 캐시 메모리는 1차 캐시 메모리, 및 1차 캐시 메모리와 희생 캐시 메모리 둘 모두 중 적어도 하나를 갖고, 캐시는, 제1 동작을 수행하기 위한 제1 동작 제어기, 제2 동작을 수행하기 위한 제2 동작 제어기 및 제3 동작을 수행하기 위한 제3 동작 제어기 중 적어도 2개의 제어기들을 갖고,
제1 동작 제어기는, 더티 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하는 제1 동작을 수행하기 위한 로직을 포함하고,
제2 동작 제어기는, 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것을 포함하는 제2 동작을 수행하기 위한 로직을 포함하고,
제3 동작 제어기는, 메모리 위치들의 어드레스들에 기초하여, 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하는 제3 동작을 수행하기 위한 로직을 포함하고, 캐시 엔트리에 액세스하는 것은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 전환하는 것을 포함한다.
예 2에서, 예 1의 요지는 임의적으로, 캐시가, 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기, 3개 모두를 갖는 것을 포함할 수 있다.
예 3에서, 예 1의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인 것을 포함할 수 있다.
예 4에서, 예 3의 요지는 임의적으로, 디바이스의 동작들을 모니터링하고, 모니터링된 동작들의 함수로서 제1, 제2 및 제3 동작들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 모니터링 로직을 더 포함할 수 있다.
예 5에서, 예 1의 요지는 임의적으로, 캐시가 제2 동작 제어기를 갖고, 디바이스는, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하기 위한 로직을 갖는 제어기를 더 포함하는 것을 포함할 수 있다.
예 6에서, 예 1의 요지는 임의적으로, 메모리 위치 어드레스들을 전환하기 위한 제3 동작 제어기 로직이, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 셔플하기 위한 배타적 논리합 함수를 구현하는 로직을 포함하는 것을 더 포함할 수 있다.
예 7에서, 예 1의 요지는 임의적으로, 디바이스가 부팅할 때 캐시 메모리를 구성하도록 디바이스가 부팅할 때 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 로직을 더 포함할 수 있다.
예 8에서, 예 1의 요지는 임의적으로, 제3 동작 제어기가, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 1차 캐시 메모리와 희생 캐시 메모리 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직을 포함하는 것을 포함할 수 있다.
예 9에서, 예 1 내지 예 7 중 어느 하나의 요지는 임의적으로, 제3 동작 제어기가, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 1차 캐시 메모리와 희생 캐시 메모리 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직을 포함하는 것을 포함할 수 있다.
예 10은, 첨부된 도면들을 참조하여 본 명세서에서 실질적으로 설명되고 첨부된 도면들에 의해 예시된 디바이스이다.
예 11은, 캐시 동작들의 방법이고,
1차 캐시 메모리를 포함하는 캐시 메모리의 캐시 엔트리들의 바이트-어드레스가능한 비휘발성 메모리에서의 메모리 위치들로부터 데이터를 캐싱하는 단계; 및
제1 동작, 제2 동작 및 제3 동작 중 적어도 2개를 수행하는 단계를 포함하고,
제1 동작은, 더티 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하고,
제2 동작은, 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것을 포함하고,
제3 동작은, 메모리 위치들의 어드레스들에 기초하여, 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하고, 캐시 엔트리에 액세스하는 것은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 전환하는 것을 포함한다.
예 12에서, 예 11의 요지는 임의적으로, 제1 동작, 제2 동작 및 제3 동작 중 적어도 2개를 수행하는 단계가, 제1 동작, 제2 동작 및 제3 동작, 3개 모두를 수행하는 단계를 포함하는 것을 포함할 수 있다.
예 13에서, 예 11의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인 것을 포함할 수 있다.
예 14에서, 예 13의 요지는 임의적으로, 시스템이 부팅할 때 캐시 메모리를 구성하도록 시스템이 부팅할 때 제1 동작, 제2 동작 및 제3 동작 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하는 단계를 포함할 수 있다.
예 15에서, 예 11의 요지는 임의적으로, 수행되는 동작들이 제2 동작을 수행하는 것을 포함하고, 방법은, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하는 단계를 더 포함하는 것을 포함할 수 있다.
예 16에서, 예 11의 요지는 임의적으로, 메모리 위치 어드레스들을 전환하는 것이, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 배타적 논리합 함수를 이용하여 메모리 위치 어드레스들을 셔플하는 것을 포함하는 것을 포함할 수 있다.
예 17에서, 예 11의 요지는 임의적으로, 캐시 메모리를 갖는 디바이스의 동작들을 모니터링하는 단계, 및 모니터링된 동작들의 함수로서 제1, 제2 및 제3 동작들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하는 단계를 포함할 수 있다.
예 18에서, 예 11의 요지는 임의적으로, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 파티션들 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환 단계를 포함할 수 있다.
예 19는, 예 11 내지 예 17 중 어느 하나의 요지는 임의적으로, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 파티션들 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환 단계를 포함할 수 있다.
예 20은, 임의의 선행 예에 기술된 방법을 수행하기 위한 수단을 포함하는 장치이다.
예 21은, 실행되는 경우, 임의의 선행 예에 기술된 방법을 구현하는 또는 장치를 실현하는 머신 판독가능 명령어들을 포함하는 머신 판독가능 스토리지이다.
예 22는, 첨부된 도면들을 참조하여 본 명세서에서 실질적으로 설명되고 첨부된 도면들에 의해 예시된 방법이다.
예 23은, 캐시 동작들을 위해 구성되는 시스템이고,
프로세서;
프로세서의 출력에 커플링되는 비디오 디스플레이;
메모리 위치들을 갖는 바이트-어드레스가능한 비휘발성 메모리;
프로세서 및 바이트-어드레스가능한 비휘발성 메모리에 커플링되는 캐시를 포함하고, 캐시는 캐시 메모리 및 복수의 캐시 엔트리들을 갖고, 캐시 메모리의 캐시 엔트리들의 바이트-어드레스가능한 비휘발성 메모리에서의 메모리 위치들로부터 데이터를 캐싱하도록 구성되고, 캐시 메모리는 1차 캐시 메모리, 및 1차 캐시 메모리와 희생 캐시 메모리 둘 모두 중 적어도 하나를 갖고, 캐시는, 제1 동작을 수행하기 위한 제1 동작 제어기, 제2 동작을 수행하기 위한 제2 동작 제어기 및 제3 동작을 수행하기 위한 제3 동작 제어기 중 적어도 2개의 제어기들을 갖고,
제1 동작 제어기는, 더티 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하는 제1 동작을 수행하기 위한 로직을 포함하고,
제2 동작 제어기는, 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것을 포함하는 제2 동작을 수행하기 위한 로직을 포함하고,
제3 동작 제어기는, 메모리 위치들의 어드레스들에 기초하여, 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하는 제3 동작을 수행하기 위한 로직을 포함하고, 캐시 엔트리에 액세스하는 것은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 전환하는 것을 포함한다.
예 24에서, 예 23의 요지는 임의적으로, 캐시가, 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기, 3개 모두를 갖는 것을 포함할 수 있다.
예 25에서, 예 23의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인 것을 포함할 수 있다.
예 26에서, 예 25의 요지는 임의적으로, 시스템의 동작들을 모니터링하고, 모니터링된 동작들의 함수로서 제1, 제2 및 제3 동작 제어기들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 모니터링 로직을 포함할 수 있다.
예 27에서, 예 23의 요지는 임의적으로, 캐시가 제2 동작 제어기를 갖고, 캐시는, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하기 위한 로직을 갖는 제어기를 더 포함하는 것을 포함할 수 있다.
예 28에서, 예 23의 요지는 임의적으로, 메모리 위치 어드레스들을 전환하기 위한 제3 동작 제어기 로직이, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 셔플하기 위한 배타적 논리합 함수를 구현하는 로직을 포함하는 것을 포함할 수 있다.
예 29에서, 예 23의 요지는 임의적으로, 시스템이 부팅할 때 캐시 메모리를 구성하도록 시스템이 부팅할 때 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 로직을 더 포함할 수 있다.
예 30에서, 예 23의 요지는 임의적으로, 제3 동작 제어기가, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 1차 캐시 메모리와 희생 캐시 메모리 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직을 포함하는 것을 포함할 수 있다.
예 31에서, 예 23 내지 예 29 중 어느 하나의 요지는 임의적으로, 제3 동작 제어기가, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 1차 캐시 메모리와 희생 캐시 메모리 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직을 포함하는 것을 포함할 수 있다.
예 32는, 첨부된 도면들을 참조하여 본 명세서에서 실질적으로 설명되고 첨부된 도면들에 의해 예시된 시스템이다.
예 33은, 메모리 위치들을 갖는 바이트-어드레스가능한 비휘발성 메모리와 이용하기 위한 디바이스이고,
캐시 메모리의 캐시 엔트리들의 바이트-어드레스가능한 비휘발성 메모리에서의 메모리 위치들로부터 데이터를 캐싱하기 위한, 캐시 메모리 및 복수의 캐시 엔트리들을 갖는 캐시 수단을 포함하고, 캐시 메모리는 1차 캐시 메모리, 및 1차 캐시 메모리와 희생 캐시 메모리 둘 모두 중 적어도 하나를 갖고, 캐시는, 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기 중 적어도 2개의 제어기들을 갖고,
제1 동작 제어기는, 더티 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하는 제1 동작을 수행하기 위한 로직 수단을 포함하고,
제2 동작 제어기는, 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것을 포함하는 제2 동작을 수행하기 위한 로직 수단을 포함하고,
제3 동작 제어기는, 메모리 위치들의 어드레스들에 기초하여, 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하는 제3 동작을 수행하기 위한 로직 수단을 포함하고, 캐시 엔트리에 액세스하는 것은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 전환하는 것을 포함한다.
예 34에서, 예 33의 요지는 임의적으로, 캐시가, 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기, 3개 모두를 갖는 것을 포함할 수 있다.
예 35에서, 예 33의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인 것을 포함할 수 있다.
예 36에서, 예 35의 요지는 임의적으로, 디바이스의 동작들을 모니터링하고, 모니터링된 동작들의 함수로서 제1, 제2 및 제3 동작 제어기들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 모니터링 수단을 포함할 수 있다.
예 37에서, 예 33의 요지는 임의적으로, 캐시가 제2 동작 제어기를 갖고, 디바이스는, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하기 위한 로직 수단을 갖는 제어기를 더 포함하는 것을 포함할 수 있다.
예 38에서, 예 33의 요지는 임의적으로, 메모리 위치 어드레스들을 전환하기 위한 제3 동작 제어기 로직이, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 셔플하기 위한 배타적 논리합 함수를 구현하는 로직 수단을 포함하는 것을 포함할 수 있다.
예 39에서, 예 33의 요지는 임의적으로, 디바이스가 부팅할 때 캐시 메모리를 구성하도록 디바이스가 부팅할 때 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 로직 수단을 포함할 수 있다.
예 40에서, 예 33의 요지는 임의적으로, 제3 동작 제어기가, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 1차 캐시 메모리와 희생 캐시 메모리 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직 수단을 포함하는 것을 포함할 수 있다.
예 41에서, 예 33 내지 예 40의 요지는 임의적으로, 제3 동작 제어기가, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 1차 캐시 메모리와 희생 캐시 메모리 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직 수단을 포함하는 것을 포함할 수 있다.
예 42는, 컴퓨터 판독가능 프로그램 코드가 구현되는 컴퓨터 판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품이고, 컴퓨터 판독가능 프로그램 코드는, 1차 캐시 메모리, 및 1차 캐시 메모리와 희생 캐시 메모리 둘 모두 중 적어도 하나를 갖는 캐시 메모리, 및 바이트-어드레스가능한 비휘발성 메모리와 통신하도록 구성되고, 동작들을 수행하도록 구성되며, 동작들은,
1차 캐시 메모리를 포함하는 캐시 메모리의 캐시 엔트리들의 비휘발성 메모리에서의 메모리 위치들로부터 데이터를 캐싱하는 것; 및
제1 동작, 제2 동작 및 제3 동작 중 적어도 2개를 수행하는 것을 포함하고,
제1 동작은, 더티 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하고,
제2 동작은, 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것을 포함하고,
제3 동작은, 메모리 위치들의 어드레스들에 기초하여, 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하고, 캐시 엔트리에 액세스하는 것은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 전환하는 것을 포함한다.
예 43에서, 예 42의 요지는 임의적으로, 제1 동작, 제2 동작 및 제3 동작 중 적어도 2개의 수행이, 제1 동작, 제2 동작 및 제3 동작, 3개 모두의 수행을 포함하는 것을 포함할 수 있다.
예 44에서, 예 42의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인 것을 포함할 수 있다.
예 45에서, 예 44의 요지는 임의적으로, 시스템이 부팅할 때 캐시 메모리를 구성하도록 시스템이 부팅할 때 제1 동작, 제2 동작 및 제3 동작 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하는 것을 포함할 수 있다.
예 46에서, 예 42의 요지는 임의적으로, 수행되는 동작들이 제2 동작을 수행하는 것을 포함하고, 동작들은, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하는 것을 더 포함하는 것을 포함할 수 있다.
예 47에서, 예 42의 요지는 임의적으로, 메모리 위치 어드레스들을 전환하는 것이, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 배타적 논리합 함수를 이용하여 메모리 위치 어드레스들을 셔플하는 것을 포함하는 것을 포함할 수 있다.
예 48에서, 예 42의 요지는 임의적으로, 동작들이, 캐시 메모리를 갖는 디바이스의 동작들을 모니터링하는 것, 및 모니터링된 동작들의 함수로서 제1, 제2 및 제3 동작들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하는 것을 더 포함하는 것을 포함할 수 있다.
예 49에서, 예 42의 요지는 임의적으로, 동작들이, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 파티션들 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 더 포함하는 것을 포함할 수 있다.
예 50에서, 예 42 내지 예 49의 요지는 임의적으로, 동작들이, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 파티션들 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 더 포함하는 것을 포함할 수 있다.
예 51은, 첨부된 도면들을 참조하여 본 명세서에서 실질적으로 설명되고 첨부된 도면들에 의해 예시된 컴퓨터 프로그램 제품이다.
예 52에서, 예 11의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인을 갖는 캐시 엔트리들이고, 수행되는 동작들은 제2 동작을 수행하는 것을 포함하고, 방법은, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하는 단계를 더 포함하고, 메모리 위치 어드레스들을 전환하는 것은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 배타적 논리합 함수를 이용하여 메모리 위치 어드레스들을 셔플하는 것을 포함하고, 방법은, 캐시 메모리를 갖는 디바이스의 동작들을 모니터링하는 단계, 및 모니터링된 동작들의 함수로서 제1, 제2 및 제3 동작들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하는 단계를 더 포함하는 것을 포함할 수 있다.
예 53에서, 예 23의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들이고, 캐시는 제2 동작 제어기를 갖고, 캐시는, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하기 위한 로직을 갖는 제어기를 더 포함하고, 메모리 위치 어드레스들을 전환하기 위한 제3 동작 제어기 로직은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 셔플하기 위한 배타적 논리합 함수를 구현하는 로직을 포함하고, 시스템은, 시스템이 부팅할 때 캐시 메모리를 구성하도록 시스템이 부팅할 때 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 로직을 더 포함하는 것을 포함할 수 있다.
예 54에서, 예 33의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들이고, 캐시는 제2 동작 제어기를 갖고, 디바이스는, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하기 위한 로직 수단을 갖는 제어기를 더 포함하고, 메모리 위치 어드레스들을 전환하기 위한 제3 동작 제어기 로직은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 셔플하기 위한 배타적 논리합 함수를 구현하는 로직 수단을 포함하고, 디바이스는, 디바이스가 부팅할 때 캐시 메모리를 구성하도록 디바이스가 부팅할 때 제1 동작 제어기, 제2 동작 제어기 및 제3 동작 제어기 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 로직 수단을 더 포함하고, 제3 동작 제어기는, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 1차 캐시 메모리와 희생 캐시 메모리 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직 수단을 포함하는 것을 포함할 수 있다.
예 55에서, 예 42의 요지는 임의적으로, 희생 캐시 메모리에서 캐싱되는 희생 캐시 엔트리들이 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들이고, 수행되는 동작들은 제2 동작을 수행하는 것을 포함하고, 동작들은, 더티 캐시 라인들을 갖는 캐시 라인들을 희생 캐시 메모리로부터 퇴거시키고, 더티 캐시 메모리로부터 퇴거된 캐시 라인들의 더티 캐시 라인들을 바이트-어드레스가능한 비휘발성 메모리에 라이트백하는 것을 더 포함하고, 메모리 위치 어드레스들을 전환하는 것은, 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 메모리 위치 어드레스들을 확산시키기 위해 배타적 논리합 함수를 이용하여 메모리 위치 어드레스들을 셔플하는 것을 포함하고, 동작들은, 캐시 메모리를 갖는 디바이스의 동작들을 모니터링하는 것, 및 모니터링된 동작들의 함수로서 제1, 제2 및 제3 동작들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하는 것을 더 포함하고, 동작들은, 캐시 메모리의 입력, 캐시 메모리의 출력, 및 캐시 메모리의 파티션들 사이 중 적어도 2개에서 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 더 포함하는 것을 포함할 수 있다.
설명된 동작들은, 소프트웨어, 펌웨어, 하드웨어 또는 이들의 임의의 조합을 생성하기 위한 표준 프로그래밍 및/또는 엔지니어링 기술들을 이용하는 방법, 장치 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 설명된 동작들은, "컴퓨터 판독가능 저장 매체에 유지되는 컴퓨터 프로그램 코드로 구현될 수 있고, 여기서 프로세서는 컴퓨터 판독가능 저장 매체로부터 코드를 판독하고 실행할 수 있다. 컴퓨터 판독가능 저장 매체는, 전자 회로, 저장 재료들, 무기 재료들, 유기 재료들, 생물학적 재료들, 케이싱, 하우징, 코팅 및 하드웨어 중 적어도 하나를 포함한다. 컴퓨터 판독가능 저장 매체는, 자기 저장 매체(예를 들어, 하드 디스크 드라이브들, 플로피 디스크들, 테이프 등), 광학 스토리지(CD-ROM들, DVD들, 광학 디스크들 등), 휘발성 및 비휘발성 메모리 디바이스들(예를 들어, EEPROM들, ROM들, PROM들, RAM들, DRAM들, SRAM들, 플래시 메모리, 펌웨어, 프로그래밍가능 로직 등, 솔리드 스테이트 디바이스들(SSD) 등을 포함할 수 있지만, 이에 제한되는 것은 아니다. 설명된 동작들을 구현하는 코드는, 하드웨어 디바이스(예를 들어, 집적 회로 칩, 프로그래밍가능한 게이트 어레이(Programmable Gate Array; PGA), 주문형 집적 회로(Application Specific Integrated Circuit; ASIC), 등)에 구현되는 하드웨어 로직으로 추가로 구현될 수 있다. 또한 추가로, 설명된 동작들을 구현하는 코드는 "송신 신호들"로 구현될 수 있고, 여기서 송신 신호들은, 광섬유, 구리 와이어 등과 같은 송신 매체를 통해 또는 공간을 통해 전파할 수 있다. 코드 또는 로직이 인코딩되는 송신 신호들은, 무선 신호, 위성 송신, 라디오파들, 적외선 신호들, 블루투스 등을 더 포함할 수 있다. 컴퓨터 판독가능 저장 매체 상에 내장되는 프로그램 코드는, 송신 신호들로서 송신 스테이션 또는 컴퓨터로부터 수신 스테이션 또는 컴퓨터로 송신될 수 있다. 컴퓨터 판독가능 저장 매체는 오직 송신 신호들로만 이루어지지는 않는다. 통상의 기술자들은, 본 설명의 범주를 벗어남이 없이 이러한 구성에 대해 많은 변형들이 행해질 수 있음을 인식할 것이고, 제조 물품이, 관련 기술분야에 공지된 적절한 정보 저장 매체를 포함할 수 있음을 인식할 것이다. 물론, 통상의 기술자들은, 본 설명의 범주를 벗어남이 없이, 이러한 구성에 대해 많은 변형들이 행해질 수 있음을 인식할 것이고, 제조 물품이, 관련 기술분야에 공지된 임의의 유형의 정보를 포함할 수 있음을 인식할 것이다.
특정 애플리케이션들에서, 본 설명에 따른 디바이스는, 데스크탑, 워크스테이션, 서버, 메인프레임, 랩탑, 핸드헬드 컴퓨터 등을 포함하는 컴퓨터 시스템과 같은 컴퓨터 시스템, 디바이스 드라이버 및 네트워크 제어기에 커플링되는 모니터 또는 다른 디스플레이 상에 디스플레이할 정보를 렌더링하기 위한 비디오 제어기를 포함하는 컴퓨터 시스템에 구현될 수 있다. 대안적으로, 디바이스 실시예들은, 예를 들어, 스위치, 라우터 등과 같이 비디오 제어기를 포함하지 않거나, 예를 들어, 네트워크 제어기를 포함하지 않는 컴퓨팅 디바이스에서 구현될 수 있다.
도면들의 예시된 로직은, 특정 순서로 발생하는 특정 이벤트들을 도시할 수 있다. 대안적인 실시예들에서, 특정 동작들은 상이한 순서로 수행되거나, 변형되거나 제거될 수 있다. 또한, 동작들이, 앞서 설명된 로직에 추가될 수 있고, 설명된 실시예들에 여전히 부합할 수 있다. 추가로, 본 명세서에서 설명되는 동작들은 순차적으로 발생할 수 있거나, 특정 동작들이 병렬적으로 프로세싱될 수 있다. 또한 추가로, 동작들은 단일 프로세싱 유닛에 의해 또는 분산형 프로세싱 유닛들에 의해 수행될 수 있다.
도 10은, 본 설명에 따른 메모리측 캐시를 갖는, 도 1의 메모리 계층(100)과 같은 메모리 계층의 컴퓨터 아키텍처(1000)의 일 실시예를 예시한다. 컴퓨터 아키텍처(1000)는, 메인프레임, 서버, 개인용 컴퓨터, 워크스테이션, 랩탑, 핸드헬드 컴퓨터, 텔레포니 디바이스, 네트워크 기기, 가상화 디바이스, 저장 제어기 등과 같은 관련 기술분야에 공지된 임의의 컴퓨팅 디바이스를 포함할 수 있다. 아키텍처(1000)는, 프로세서(1002)(예를 들어, 마이크로프로세서), 메모리(1004)(예를 들어, 휘발성 또는 비휘발성 메모리 디바이스) 및 스토리지(1006)(예를 들어, 자기 디스크 드라이브들, 광학 디스크 드라이브들, 테이프 드라이브 등과 같은 비휘발성 스토리지)를 포함할 수 있다. 스토리지(1006)는, 내부 저장 디바이스 또는 접속된 또는 네트워크 액세스가능한 스토리지를 포함할 수 있다. 스토리지(1006)의 프로그램들은 메모리(1004)로 로딩되고, 관련 기술분야에 공지된 방식으로 프로세서(1002)에 의해 실행된다. 아키텍처는, 이더넷, 파이버 채널 중재 루프(Fibre Channel Arbitrated Loop) 등과 같은 네트워크와의 통신을 가능하게 하기 위한 네트워크 제어기 또는 어댑터(1008)를 더 포함한다. 추가로, 아키텍처는, 특정 실시예들에서, 디스플레이 모니터 상에 정보를 렌더링하기 위한 비디오 제어기(1009)를 포함할 수 있고, 여기서, 비디오 제어기(1009)는 비디오 카드 상에 구현될 수 있거나, 마더보드 상에 장착되는 집적 회로 컴포넌트들 상에 집적될 수 있다. 입력 디바이스(1010)는 사용자 입력을 프로세서(1002)에 제공하기 위해 이용되고, 키보드, 마우스, 펜-스타일러스, 마이크로폰, 터치 감응 디스플레이 스크린 또는 관련 기술분야에 공지된 임의의 다른 활성화 또는 입력 메커니즘을 포함할 수 있다. 출력 디바이스(1012)는, 프로세서(1002), 또는 디스플레이 모니터, 프린터, 스토리지 등과 같은 다른 컴포넌트로부터 송신된 정보를 렌더링할 수 있다.
네트워크 어댑터(1008)는, 네트워크 카드, 예를 들어, 주변기기 컴포넌트 상호접속(Peripheral Component Interconnect; PCI) 카드, PCI-익스프레스, 또는 일부 다른 I/O 카드 상에 구현되거나, 마더보드 상에 장착되는 집적 회로 컴포넌트들 상에 구현될 수 있다. 스토리지(1006)는 내부 저장 디바이스 또는 접속된 또는 네트워크 액세스가능한 스토리지를 포함할 수 있다. 스토리지(1006)의 프로그램들은 메모리(1004)로 로딩되고, 프로세서(1002)에 의해 실행된다. 컴퓨터 아키텍처(1000)의 디바이스들 중 임의의 하나 이상의 디바이스는, 본 명세서에서 설명된 바와 같은 온-다이 변환 테스팅을 갖는 하나 이상의 집적 회로를 포함할 수 있다.
다양한 실시예들의 전술한 설명은, 예시 및 설명의 목적으로 제시되었다. 이러한 설명은 포괄적인 것으로, 또는 개시된 바로 그 형태로 제한되는 것으로 의도되지 않는다. 상기 교시의 관점에서 많은 변형들 및 변화들이 가능하다.

Claims (24)

  1. 장치로서,
    캐시 메모리 및 복수의 캐시 엔트리들을 갖고, 상기 캐시 메모리의 캐시 엔트리들의 바이트-어드레스가능한 비휘발성 메모리(byte-addressable non-volatile memory)에서의 메모리 위치들로부터 데이터를 캐싱하도록 구성되는 캐시를 포함하고,
    상기 캐시 메모리는 1차 캐시 메모리 및 희생 캐시 메모리 중 적어도 하나를 갖고, 상기 캐시는, 제1 동작을 수행하기 위한 제1 동작 제어기, 제2 동작을 수행하기 위한 제2 동작 제어기 및 제3 동작을 수행하기 위한 제3 동작 제어기 중 적어도 2개의 제어기들을 갖고,
    상기 제1 동작 제어기는, 더티(dirty) 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린(clean) 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된(biased) 교체 정책에 따라 상기 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하는 제1 동작을 수행하기 위한 로직을 포함하고,
    상기 제2 동작 제어기는, 상기 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 상기 캐시 메모리의 상기 희생 캐시 메모리로 퇴거시키는 것을 포함하는 제2 동작을 수행하기 위한 로직을 포함하고,
    상기 제3 동작 제어기는, 메모리 위치들의 어드레스들에 기초하여, 상기 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하는 제3 동작을 수행하기 위한 로직을 포함하고,
    상기 캐시 엔트리에 액세스하는 것은, 상기 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산(spread)시키기 위해 상기 메모리 위치 어드레스들을 전환(translating)하는 것을 포함하는, 장치.
  2. 제1항에 있어서,
    상기 캐시는, 상기 제1 동작 제어기, 상기 제2 동작 제어기 및 상기 제3 동작 제어기, 3개 모두를 갖는, 장치.
  3. 제1항에 있어서,
    상기 희생 캐시 메모리에서 캐싱되는 상기 희생 캐시 엔트리들은 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인, 장치.
  4. 제3항에 있어서,
    상기 희생 캐시 메모리는 상기 1차 캐시 메모리의 적어도 1/4의 용량인, 장치.
  5. 제1항에 있어서,
    상기 캐시는 상기 제2 동작 제어기를 갖고, 상기 장치는, 더티 캐시 라인들을 갖는 캐시 라인들을 상기 희생 캐시 메모리로부터 퇴거시키고, 더티 희생 캐시 메모리로부터 퇴거된 캐시 라인들의 상기 더티 캐시 라인들을 상기 바이트-어드레스가능한 비휘발성 메모리에 라이트백(write back)하기 위한 로직을 갖는 제어기를 더 포함하는, 장치.
  6. 제1항에 있어서,
    상기 메모리 위치 어드레스들을 전환하기 위한 상기 제3 동작 제어기 로직은, 상기 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 상기 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 셔플(shuffling)하기 위한 배타적 논리합 함수(exclusive-or function)를 구현하는 로직을 포함하는, 장치.
  7. 제1항에 있어서,
    상기 장치가 부팅할 때 상기 캐시 메모리를 구성하도록 상기 장치가 부팅할 때 상기 제1 동작 제어기, 상기 제2 동작 제어기 및 상기 제3 동작 제어기 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 로직을 더 포함하는, 장치.
  8. 제1항에 있어서,
    상기 제3 동작 제어기는, 상기 캐시 메모리의 입력, 상기 캐시 메모리의 출력, 및 상기 캐시 메모리의 상기 1차 캐시 메모리와 상기 희생 캐시 메모리 사이 중 적어도 2개에서 상기 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직을 포함하는, 장치.
  9. 방법으로서,
    1차 캐시 메모리를 포함하는 캐시 메모리의 캐시 엔트리들의 바이트-어드레스가능한 비휘발성 메모리에서의 메모리 위치들로부터 데이터를 캐싱하는 단계; 및
    제1 동작, 제2 동작 및 제3 동작 중 적어도 2개를 수행하는 단계
    를 포함하고,
    상기 제1 동작은, 더티 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 상기 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하고,
    상기 제2 동작은, 상기 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 상기 캐시 메모리의 희생 캐시 메모리로 퇴거시키는 것을 포함하고,
    상기 제3 동작은, 메모리 위치들의 어드레스들에 기초하여, 상기 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하고, 상기 캐시 엔트리에 액세스하는 것은, 상기 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산시키기 위해 상기 메모리 위치 어드레스들을 전환하는 것을 포함하는, 방법.
  10. 제9항에 있어서,
    상기 제1 동작, 상기 제2 동작 및 상기 제3 동작 중 적어도 2개를 수행하는 단계는, 상기 제1 동작, 상기 제2 동작 및 상기 제3 동작, 3개 모두를 수행하는 단계를 포함하는, 방법.
  11. 제9항에 있어서,
    상기 희생 캐시 메모리에서 캐싱되는 상기 희생 캐시 엔트리들은 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인, 방법.
  12. 제11항에 있어서,
    상기 희생 캐시 메모리는 상기 1차 캐시 메모리의 적어도 1/4의 용량인, 방법.
  13. 제9항에 있어서,
    수행되는 동작들은 상기 제2 동작을 수행하는 것을 포함하고, 상기 방법은, 더티 캐시 라인들을 갖는 캐시 라인들을 상기 희생 캐시 메모리로부터 퇴거시키고, 더티 희생 캐시 메모리로부터 퇴거된 캐시 라인들의 상기 더티 캐시 라인들을 상기 바이트-어드레스가능한 비휘발성 메모리에 라이트백하는 단계를 더 포함하는, 방법
  14. 제9항에 있어서,
    상기 메모리 위치 어드레스들을 전환하는 것은, 상기 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 상기 메모리 위치 어드레스들을 확산시키기 위해 배타적 논리합 함수를 이용하여 메모리 위치 어드레스들을 셔플하는 것을 포함하는, 방법.
  15. 제9항에 있어서,
    상기 캐시 메모리를 갖는 디바이스의 동작들을 모니터링하는 단계, 및 모니터링된 동작들의 함수로서 상기 제1, 제2 및 제3 동작들 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하는 단계를 더 포함하는, 방법.
  16. 제9항에 있어서,
    상기 캐시 메모리의 입력, 상기 캐시 메모리의 출력, 및 상기 캐시 메모리의 파티션(partition)들 사이 중 적어도 2개에서 상기 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환 단계를 더 포함하는, 방법.
  17. 시스템으로서,
    프로세서;
    상기 프로세서의 출력에 커플링되는 비디오 제어기;
    메모리 위치들을 갖는 바이트-어드레스가능한 비휘발성 메모리;
    상기 프로세서 및 상기 바이트-어드레스가능한 비휘발성 메모리에 커플링되는 캐시
    를 포함하고,
    상기 캐시는 캐시 메모리 및 복수의 캐시 엔트리들을 갖고, 상기 캐시 메모리의 캐시 엔트리들의 상기 바이트-어드레스가능한 비휘발성 메모리에서의 메모리 위치들로부터 데이터를 캐싱하도록 구성되고, 상기 캐시 메모리는 1차 캐시 메모리 및 희생 캐시 메모리 중 적어도 하나를 갖고, 상기 캐시는, 제1 동작을 수행하기 위한 제1 동작 제어기, 제2 동작을 수행하기 위한 제2 동작 제어기 및 제3 동작을 수행하기 위한 제3 동작 제어기 중 적어도 2개의 제어기들을 갖고,
    상기 제1 동작 제어기는, 더티 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것에 비해 클린 캐시 라인들을 갖는 캐시 엔트리들을 퇴거시키는 것으로 편향된 교체 정책에 따라 상기 캐시 메모리로부터 희생 캐시 엔트리들을 퇴거시키는 것을 포함하는 제1 동작을 수행하기 위한 로직을 포함하고,
    상기 제2 동작 제어기는, 상기 1차 캐시 메모리로부터의 희생 캐시 엔트리들을 상기 캐시 메모리의 상기 희생 캐시 메모리로 퇴거시키는 것을 포함하는 제2 동작을 수행하기 위한 로직을 포함하고,
    상기 제3 동작 제어기는, 메모리 위치들의 어드레스들에 기초하여, 상기 캐시 메모리의 캐시 엔트리들에 액세스하는 것을 포함하는 제3 동작을 수행하기 위한 로직을 포함하고, 상기 캐시 엔트리에 액세스하는 것은, 상기 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내의 메모리 위치 어드레스들을 확산시키기 위해 상기 메모리 위치 어드레스들을 전환하는 것을 포함하는, 시스템.
  18. 제17항에 있어서,
    상기 캐시는, 상기 제1 동작 제어기, 상기 제2 동작 제어기 및 상기 제3 동작 제어기, 3개 모두를 갖는, 시스템.
  19. 제17항에 있어서,
    상기 희생 캐시 메모리에서 캐싱되는 상기 희생 캐시 엔트리들은 배타적으로, 더티 캐시 라인들을 갖는 캐시 엔트리들인, 시스템
  20. 제19항에 있어서,
    상기 희생 캐시 메모리는 상기 1차 캐시 메모리의 적어도 1/4의 용량인, 시스템.
  21. 제17항에 있어서,
    상기 캐시는 상기 제2 동작 제어기를 갖고, 상기 캐시는, 더티 캐시 라인들을 갖는 캐시 라인들을 상기 희생 캐시 메모리로부터 퇴거시키고, 더티 희생 캐시 메모리로부터 퇴거된 캐시 라인들의 상기 더티 캐시 라인들을 상기 바이트-어드레스가능한 비휘발성 메모리에 라이트백하기 위한 로직을 갖는 제어기를 더 포함하는, 시스템.
  22. 제17항에 있어서,
    상기 메모리 위치 어드레스들을 전환하기 위한 상기 제3 동작 제어기 로직은, 상기 바이트-어드레스가능한 비휘발성 메모리의 어드레스 범위 내에서 상기 메모리 위치 어드레스들을 확산시키기 위해 메모리 위치 어드레스들을 셔플하기 위한 배타적 논리합 함수를 구현하는 로직을 포함하는, 시스템.
  23. 제17항에 있어서,
    상기 시스템이 부팅할 때 상기 캐시 메모리를 구성하도록 상기 시스템이 부팅할 때 상기 제1 동작 제어기, 상기 제2 동작 제어기 및 상기 제3 동작 제어기 중 적어도 하나를 선택적으로 인에이블 및 디스에이블하기 위한 로직을 더 포함하는, 시스템.
  24. 제17항에 있어서,
    상기 제3 동작 제어기는, 상기 캐시 메모리의 입력, 상기 캐시 메모리의 출력, 및 상기 캐시 메모리의 상기 1차 캐시 메모리와 상기 희생 캐시 메모리 사이 중 적어도 2개에서 상기 제3 동작을 수행하는 것을 포함하는 멀티-레벨 어드레스 전환을 위한 로직을 포함하는, 시스템.
KR1020167003991A 2013-09-27 2013-09-27 메모리 관리를 위한 캐시 동작들 KR101826073B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/062467 WO2015047348A1 (en) 2013-09-27 2013-09-27 Cache operations for memory management

Publications (2)

Publication Number Publication Date
KR20160033737A KR20160033737A (ko) 2016-03-28
KR101826073B1 true KR101826073B1 (ko) 2018-02-06

Family

ID=52744241

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167003991A KR101826073B1 (ko) 2013-09-27 2013-09-27 메모리 관리를 위한 캐시 동작들

Country Status (5)

Country Link
US (1) US9645938B2 (ko)
EP (1) EP3049937A4 (ko)
KR (1) KR101826073B1 (ko)
CN (1) CN105493052B (ko)
WO (1) WO2015047348A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190128369A (ko) * 2018-05-08 2019-11-18 주식회사 애포샤 캐싱 장치 및 방법
US10990541B2 (en) 2018-12-28 2021-04-27 SK Hynix Inc. Controller using cache eviction policy based on read data size
US11487660B2 (en) 2020-07-09 2022-11-01 SK Hynix Inc. Data storage device for improving read performance and method of operating the same

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6131170B2 (ja) * 2013-10-29 2017-05-17 株式会社日立製作所 計算機システム、及びデータ配置制御方法
US20160283385A1 (en) * 2015-03-27 2016-09-29 James A. Boyd Fail-safe write back caching mode device driver for non volatile storage device
US9952973B2 (en) * 2015-10-29 2018-04-24 Western Digital Technologies, Inc. Reducing write-backs to memory by controlling the age of cache lines in lower level cache
US9846652B2 (en) * 2016-03-31 2017-12-19 Intel Corporation Technologies for region-biased cache management
US10585809B2 (en) * 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
US10152262B2 (en) * 2016-05-03 2018-12-11 Micron Technology, Inc. Memory access techniques in memory devices with multiple partitions
EP3258382B1 (en) * 2016-06-14 2021-08-11 Arm Ltd A storage controller
US10223305B2 (en) * 2016-06-27 2019-03-05 International Business Machines Corporation Input/output computer system including hardware assisted autopurge of cache entries associated with PCI address translations
US10248571B2 (en) * 2016-08-11 2019-04-02 Hewlett Packard Enterprise Development Lp Saving position of a wear level rotation
US11556462B2 (en) * 2016-08-24 2023-01-17 Futurewei Technologies, Inc. Wear-leveling method for cross-point memory for multiple data temperature zones
KR102593552B1 (ko) 2016-09-07 2023-10-25 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그의 동작 방법
US20180107602A1 (en) * 2016-10-13 2018-04-19 Intel Corporation Latency and Bandwidth Efficiency Improvement for Read Modify Write When a Read Operation is Requested to a Partially Modified Write Only Cacheline
CN108073527B (zh) * 2016-11-07 2020-02-14 华为技术有限公司 一种缓存替换的方法和设备
US10540281B2 (en) * 2017-01-17 2020-01-21 Arm Limited Cache allocation based on quality-of-service monitoring
US10810164B2 (en) * 2017-01-27 2020-10-20 Wyse Technology L.L.C. Securing access to functionality of a file-based write filter
US10372446B2 (en) * 2017-07-01 2019-08-06 Intel Corporation Technology to dynamically modulate memory device read granularity
CN108496161A (zh) * 2017-09-29 2018-09-04 深圳市大疆创新科技有限公司 数据缓存装置及控制方法、数据处理芯片、数据处理系统
US10705590B2 (en) * 2017-11-28 2020-07-07 Google Llc Power-conserving cache memory usage
US10528283B2 (en) * 2018-01-23 2020-01-07 Dell Products, Lp System and method to provide persistent storage class memory using NVDIMM-N with an NVDIMM-P footprint
US11074151B2 (en) 2018-03-30 2021-07-27 Intel Corporation Processor having embedded non-volatile random access memory to support processor monitoring software
US10691466B2 (en) * 2018-04-02 2020-06-23 Intel Corporation Booting a computing system using embedded non-volatile memory
US20190042351A1 (en) * 2018-04-02 2019-02-07 Intel Corporation Self-healing in a computing system using embedded non-volatile memory
KR20200127793A (ko) 2019-05-03 2020-11-11 에스케이하이닉스 주식회사 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법
US11151035B2 (en) 2019-05-12 2021-10-19 International Business Machines Corporation Cache hit ratios for selected volumes within a storage system
US11176052B2 (en) 2019-05-12 2021-11-16 International Business Machines Corporation Variable cache status for selected volumes within a storage system
US11169919B2 (en) 2019-05-12 2021-11-09 International Business Machines Corporation Cache preference for selected volumes within a storage system
US11237730B2 (en) 2019-05-12 2022-02-01 International Business Machines Corporation Favored cache status for selected volumes within a storage system
US11163698B2 (en) 2019-05-12 2021-11-02 International Business Machines Corporation Cache hit ratios for selected volumes using synchronous I/O
US11663144B2 (en) 2020-01-20 2023-05-30 International Business Machines Corporation LRU list reorganization for favored and unfavored volumes
CN113392042B (zh) * 2020-03-12 2024-04-09 伊姆西Ip控股有限责任公司 用于管理缓存的方法、电子设备和计算机程序产品
US11467937B2 (en) * 2020-06-26 2022-10-11 Advanced Micro Devices, Inc. Configuring cache policies for a cache based on combined cache policy testing
US11847062B2 (en) 2021-12-16 2023-12-19 Advanced Micro Devices, Inc. Re-fetching data for L3 cache data evictions into a last-level cache

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100235579A1 (en) 2006-02-22 2010-09-16 Stuart David Biles Cache Management Within A Data Processing Apparatus
US20120191916A1 (en) 2010-09-28 2012-07-26 Texas Instruments Incorporated Optimizing tag forwarding in a two level cache system from level one to lever two controllers for cache coherence protocol for direct memory access transfers

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US8001331B2 (en) * 2008-04-17 2011-08-16 Arm Limited Efficiency of cache memory operations
KR20100021868A (ko) * 2008-08-18 2010-02-26 삼성전자주식회사 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
US20100228922A1 (en) * 2009-03-09 2010-09-09 Deepak Limaye Method and system to perform background evictions of cache memory lines
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8285936B2 (en) 2009-10-20 2012-10-09 The Regents Of The University Of Michigan Cache memory with power saving state
US9135181B2 (en) * 2010-10-27 2015-09-15 International Business Machines Corporation Management of cache memory in a flash cache architecture
US8615636B2 (en) 2011-03-03 2013-12-24 International Business Machines Corporation Multiple-class priority-based replacement policy for cache memory
US8402223B2 (en) * 2011-03-21 2013-03-19 Microsoft Corporation Cache eviction using memory entry value
BR112014013390A2 (pt) 2011-12-20 2017-06-13 Intel Corp redução de potência parcial dinâmica de cache de lado de memória em hierarquia de memória de 2 níveis
US9348522B2 (en) * 2013-12-12 2016-05-24 International Business Machines Corporation Software indications and hints for coalescing memory transactions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100235579A1 (en) 2006-02-22 2010-09-16 Stuart David Biles Cache Management Within A Data Processing Apparatus
US20120191916A1 (en) 2010-09-28 2012-07-26 Texas Instruments Incorporated Optimizing tag forwarding in a two level cache system from level one to lever two controllers for cache coherence protocol for direct memory access transfers

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190128369A (ko) * 2018-05-08 2019-11-18 주식회사 애포샤 캐싱 장치 및 방법
KR102052312B1 (ko) 2018-05-08 2019-12-05 주식회사 애포샤 캐싱 장치 및 방법
US10990541B2 (en) 2018-12-28 2021-04-27 SK Hynix Inc. Controller using cache eviction policy based on read data size
US11487660B2 (en) 2020-07-09 2022-11-01 SK Hynix Inc. Data storage device for improving read performance and method of operating the same

Also Published As

Publication number Publication date
US9645938B2 (en) 2017-05-09
KR20160033737A (ko) 2016-03-28
CN105493052A (zh) 2016-04-13
WO2015047348A1 (en) 2015-04-02
CN105493052B (zh) 2019-05-03
EP3049937A1 (en) 2016-08-03
EP3049937A4 (en) 2017-05-17
US20160203085A1 (en) 2016-07-14

Similar Documents

Publication Publication Date Title
KR101826073B1 (ko) 메모리 관리를 위한 캐시 동작들
US10719443B2 (en) Apparatus and method for implementing a multi-level memory hierarchy
US11132298B2 (en) Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US11200176B2 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US9317429B2 (en) Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9286205B2 (en) Apparatus and method for phase change memory drift management
US9269438B2 (en) System and method for intelligently flushing data from a processor into a memory subsystem
KR20140098221A (ko) 메모리 채널 셧다운에 의한 전력 절약

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