KR101662969B1 - 동적으로 할당된 더티 마스크 공간을 이용한 메모리 관리 - Google Patents

동적으로 할당된 더티 마스크 공간을 이용한 메모리 관리 Download PDF

Info

Publication number
KR101662969B1
KR101662969B1 KR1020157016404A KR20157016404A KR101662969B1 KR 101662969 B1 KR101662969 B1 KR 101662969B1 KR 1020157016404 A KR1020157016404 A KR 1020157016404A KR 20157016404 A KR20157016404 A KR 20157016404A KR 101662969 B1 KR101662969 B1 KR 101662969B1
Authority
KR
South Korea
Prior art keywords
dirty
cache memory
line
cache
memory line
Prior art date
Application number
KR1020157016404A
Other languages
English (en)
Other versions
KR20150091101A (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 KR20150091101A publication Critical patent/KR20150091101A/ko
Application granted granted Critical
Publication of KR101662969B1 publication Critical patent/KR101662969B1/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/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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details 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

캐시 메모리를 포함하는 메모리 시스템에 관련된 시스템들 및 방법들이 개시된다. 캐시 메모리 시스템은 복수의 캐시 메모리 라인들을 포함하는 캐시 메모리와, 복수의 더티 마스크들을 포함하는 더티 버퍼를 포함한다. 캐시 제어기는, 각각의 캐시 메모리 라인으로의 기입이 그 캐시 메모리 라인으로의 전체 기입이 아닌 경우 더티 마스크들 중 하나를 캐시 메모리 라인들 각각에 할당하도록 구성된다. 더티 마스크들 각각은 캐시 메모리 라인들 중 하나에서 데이터 유닛들의 더티 상태들을 표시한다. 캐시 제어기는 더티 마스크들을, 더티 마스크들이 할당되는 캐시 메모리 라인들과 연관시키는 식별 (ID) 정보를 저장한다.

Description

동적으로 할당된 더티 마스크 공간을 이용한 메모리 관리{MEMORY MANAGEMENT USING DYNAMICALLY ALLOCATED DIRTY MASK SPACE}
이 개시물은 메모리 관리, 더욱 구체적으로 캐시 메모리의 관리에 관한 것이다.
캐시로서 또한 지칭되는 캐시 메모리는 데이터에 대한 액세스를 가속시키기 위한 다양한 데이터 프로세싱 시스템들에서 이용된다. 바이트-기입가능한 (byte-writable) 캐시는 클라이언트들이 캐시 메모리 라인의 일부 바이트들을 기입하도록 하고, 나머지 바이트들은 건드리지 않은 채로 둔다. 바이트-기입가능한 캐시 메모리를 기입할 시에는, 데이터 일관성을 유지하는 것이 중요하다. 다양한 바이트-기입가능한 캐시 메모리 기입 방식들이 데이터 일관성을 유지하기 위하여 이용될 수도 있다. 이 기입 방식들 중의 일부는 시스템 성능을 약화시키거나 과도한 메모리 공간을 소비할 수도 있다.
일 예에서, 더티 버퍼는, 각각의 캐시 메모리 라인으로의 기입이 그 캐시 메모리 라인으로의 전체 기입이 아닌 경우 캐시 메모리 라인에 할당된 복수의 더티 마스크들을 포함할 수도 있다. 일 예에서, 더티 버퍼는 캐시 메모리의 일부일 수도 있다. 다른 예들에서, 그것은 캐시 메모리로부터 별도일 수도 있고, 예를 들어, 별도의 메모리 디바이스일 수도 있다. 더티 마스크는 캐시 메모리 라인에서의 데이터 유닛들의 더티 상태를 표시한다. 캐시 메모리 라인들 각각은 캐시 메모리 라인에 할당된 더티 마스크의 식별 (identification; ID) 을 저장하는 로케이션을 포함할 수도 있다. 예를 들어, ID 는 일반적으로, 캐시 라인에서의 적어도 하나의 바이트가 더티임을 표시할 수도 있는 더티 플래그 (dirty flag), 및/또는 캐시 메모리 라인에서의 매 바이트가 더티임을 표시할 수도 있는 완전 더티 플래그 (fully dirty flag) 와 같은 플래그들과 동일한 캐시 라인에서의 더티 버퍼 인덱스에 저장될 수도 있다. 이것은 액세싱 편리성을 허용할 수도 있다. 그러나, 다른 예들에서, ID 는 캐시 라인들에서의 플래그들과는 별도인 다른 메모리 저장 로케이션들에서 저장될 수도 있다.
하나의 예에서, 개시물은 복수의 캐시 메모리 라인들을 포함하는 캐시 메모리, 복수의 더티 마스크들을 포함하는 더티 버퍼, 및 각각의 캐시 메모리 라인으로의 기입이 그 캐시 메모리 라인으로의 전체 기입이 아닌 경우 더티 마스크들 중 하나를 캐시 메모리 라인들 각각에 할당하도록 구성된 캐시 제어기를 포함하는 캐시 메모리 시스템을 설명한다. 더티 마스크들 각각은 캐시 메모리 라인들 중 하나에서 데이터 유닛들의 더티 상태들을 표시한다. 제어기는 더티 마스크들을, 더티 마스크들이 할당되는 캐시 메모리 라인들과 연관시키는 식별 (ID) 정보를 저장한다.
또 다른 예에서, 개시물은 복수의 캐시 메모리 라인들을 포함하는 캐시 메모리에 데이터를 기입하는 단계, 그 캐시 메모리 라인으로의 기입이 그 캐시 메모리 라인으로의 전체 기입이 아닌 경우 복수의 더티 마스크들 중 하나를 캐시 메모리 라인들 각각에 할당하는 단계로서, 더티 마스크는 캐시 메모리 라인에서의 데이터 유닛들의 더티 상태를 표시하는, 상기 할당하는 단계, 및 더티 마스크들을, 더티 마스크들이 할당되는 캐시 메모리 라인들과 연관시키는 식별 (ID) 정보를 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법을 설명한다.
또 다른 예에서, 개시물은 복수의 캐시 메모리 라인들을 포함하는 캐시 메모리에 데이터를 기입하기 위한 수단, 그 캐시 메모리 라인으로의 기입이 그 캐시 메모리 라인으로의 전체 기입이 아닌 경우 복수의 더티 마스크들 중 하나를 캐시 메모리 라인들 각각에 할당하기 위한 수단으로서, 여기서, 더티 마스크는 캐시 메모리 라인에서의 데이터 유닛들의 더티 상태를 표시하는, 상기 할당하기 위한 수단, 및 더티 마스크들을, 더티 마스크들이 할당되는 캐시 메모리 라인들과 연관시키는 식별 (ID) 정보를 저장하기 위한 수단을 포함하는 메모리 시스템을 설명한다.
또 다른 예에서, 개시물은 프로세서, 프로세서에 커플링된 주 메모리, 프로세서에 커플링된 캐시 메모리를 포함하는 시스템을 설명한다. 캐시 메모리는 제어기, 복수의 캐시 메모리 라인들, 및 더티 버퍼를 포함한다. 더티 버퍼는 더티 마스크를 포함한다. 제어기는, 캐시 메모리 라인으로의 기입이 캐시 메모리 라인으로의 전체 기입이 아닌 경우 더티 마스크들 중 하나를 캐시 메모리 라인들 각각에 할당한다. 더티 마스크는 캐시 메모리 라인에서의 데이터 유닛들의 더티 상태를 표시한다. 제어기는 더티 마스크들을, 더티 마스크들이 할당되는 캐시 메모리 라인들과 연관시키는 식별 (ID) 정보를 저장한다.
또 다른 예에서, 개시물은 캐시 메모리 라인으로의 기입이 언제 전체 기입이 아닌지를 표시하는 더티 플래그를 이용하여 캐시 메모리에서의 캐시 메모리 라인의 상태를 추적하는 단계, 그 캐시 메모리 라인으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닌 경우 더티 마스크를 캐시 메모리 라인에 할당하는 단계, 및 더티 마스크가 액세스될 수도 있도록, 특정 캐시 메모리 라인에 어태치되는 할당된 더티 마스크의 식별 (ID) 정보를 추적하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법을 설명한다.
또 다른 예에서, 개시물은 캐시 메모리 라인으로의 기입이 언제 전체 기입이 아닌지를 표시하는 더티 플래그를 이용하여 캐시 메모리에서의 캐시 메모리 라인의 상태를 추적하기 위한 수단, 그 캐시 메모리 라인으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닌 경우 더티 마스크를 캐시 메모리 라인에 할당하기 위한 수단, 및 더티 마스크가 액세스될 수도 있도록, 특정 캐시 메모리 라인에 어태치되는 할당된 더티 마스크의 식별 (ID) 정보를 추적하기 위한 수단을 포함하는 캐시 메모리 시스템을 설명한다.
또 다른 예에서, 개시물은 비일시적 (non-transitory) 컴퓨터 판독가능 매체를 설명한다. 컴퓨터 판독가능 매체는 명령들을 포함하고, 상기 명령들은, 실행되는 경우, 프로그래밍가능한 프로세서로 하여금, 캐시 메모리 라인으로의 기입이 언제 전체 기입이 아닌지를 표시하는 더티 플래그를 이용하여 캐시 메모리에서의 캐시 메모리 라인의 상태를 추적하게 하고, 그 캐시 메모리 라인으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닌 경우 더티 마스크를 캐시 메모리 라인에 할당하게 하고, 그리고 더티 마스크가 액세스될 수도 있도록, 특정 캐시 메모리 라인에 어태치되는 할당된 더티 마스크의 식별 (ID) 정보를 추적하게 한다.
하나 이상의 예들의 세부사항들은 첨부한 도면들 및 이하의 설명에서 기재된다. 다른 특징들, 목적들, 및 장점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
도 1 은 이 개시물의 기법들을 구현할 수도 있는 프로세서, 캐시 메모리, 및 주 메모리를 포함하는 일 예의 프로세싱 시스템을 예시하는 블록도이다.
도 2 는 이 개시물의 기법들을 구현할 수도 있는 도 1 의 일 예의 캐시 메모리의 추가적인 세부사항들을 예시하는 블록도이다.
도 3 은 이 개시물의 기법들을 구현할 수도 있는 캐시 메모리 라인의 예를 예시하는 블록도이다.
도 4a 및 도 4b 는 이 개시물의 기법들을 이용하여 캐시에서의 데이터 프로세싱의 예를 예시하는 개념도들이다.
도 5 는 이 개시물의 기법들에 따라 일 예의 방법을 예시하는 플로우차트이다.
도 6 은 이 개시물의 기법들에 따라 일 예의 방법을 예시하는 또 다른 플로우차트이다.
데이터 일관성을 유지하기 위해 이용된 하나의 방식은 때대로 "판독-할당-기입" 방식으로서 지칭된다. 기입 요청들을 수신 시에, 프로세서는 먼저 시스템 메모리로부터 타겟 캐시 메모리 라인을 판독할 수도 있고, 다음으로, 프로세서는 선택된 데이터 유닛들 예를 들어, 바이트들을 캐시 메모리에 기입할 수도 있다. 미기입 (un-writtend) 데이터 유닛들은 시스템 메모리와 동일한 값을 가진다. 캐시 메모리의 라인이 캐시로부터 퇴거될 때, 전체적인 캐시 메모리 라인은 시스템 메모리로 내보내진다. 임의의 건드리지 않은 데이터 유닛들은 동일한 값들로 기입될 수도 있다. 이 방식으로, 캐시 메모리 라인으로의 임의의 기입은 시스템 메모리로의 판독으로 귀착된다. 이것은 시스템 메모리로의 여분의 트래픽 및 기입 요청들에 대한 바람직하지 않은 지연시간 (latency) 을 초래한다. 최신 디지털 시스템들에서는, 메모리 대역폭이 일반적으로 시스템 성능에 대한 병목현상일 수도 있다. 이것은 특히 그래픽 프로세싱 유닛 (graphics processing unit; GPS) 들에 대해 해당할 수도 있다. 따라서, 이 방식은 시스템 메모리로의 증가된 트래픽으로 인해 선호되지 않을 수도 있다.
데이터 일관성을 유지하기 위해 이용된 또 다른 방식은 소위 "바이트 더티 마스크 (byte dirty mask)" 를 저장하는 것을 포함한다. (데이터 유닛들은 일반적으로 한 번에 1 바이트 액세스가능할 수도 있다.) 바이트 더티 마스크는 더티 (dirty) 인 캐시 메모리 라인에서의 임의의 바이트들을 표시한다. 바이트가 더욱 상위-레벨 메모리 예를 들어, 시스템 메모리와 상이하며 더욱 상위-레벨 메모리에 아직 기입되지 않았던 데이터를 포함하여, 캐시 및 시스템 메모리에서 일관성 없는 데이터가 있을 수도 있을 때, 바이트는 더티이다. 바이트 더티 마스크는 예를 들어, 변경이 시스템 메모리에 기입될 필요가 있도록, 캐시 메모리 라인에 대한 수정이 발생하였는지 여부를 표시하기 위하여 이용될 수도 있다. 따라서, 후기입 (write-back) 캐시에서, 바이트 더티 마스크에서의 비트는 캐시 메모리 라인을 메모리 시스템 계층구조에서의 다음의 더 상위 메모리 레벨 예를 들어, 시스템 메모리에 기입하는 것이 언제 필요한지를 표시할 수도 있다.
전체의 캐시 메모리 라인에 대해 1-비트 더티 비트를 이용하는 대신에, 1-비트/바이트 더티 마스크는 각각의 캐시 메모리 라인에 대해 저장될 수 있다. 퇴거될 때, 더티 마스크는 캐시 메모리 라인 데이터와 함께 바이트 기입 인에이블 데이터로서 내보내질 수도 있어서, 더욱 상위-레벨 메모리에서의 대응하는 데이터와 상이한 데이터를 포함하는 더티 바이트들이 결정될 수도 있다. "언-더티 (un-dirty)" 바이트들, 즉, 기입되지 않았으며 더욱 상위-레벨 메모리에서의 대응하는 데이터와 여전히 동일한 바이트들은 시스템 메모리에 기입되지 않을 수도 있다. 이 타입의 방식으로, 시스템은 각각의 캐시 메모리 라인에서의 데이터와 함께 마스크를 저장한다. 매 바이트에 대한 1-비트 마스크로, 마스크 랜덤 액세스 메모리 (Random Access Memory; RAM) 는 데이터 RAM 의 1/8 이고, 이것은 큰 메모리 면적 비용 (memory area cost) 을 제공한다. RAM 아키텍처 때문에, 마스크 RAM 면적은 일반적으로 RAM 의 총 면적의 1/8 보다 일반적으로 더 클 수도 있다. 예시로서, 하나의 예에서, 캐시는 512x128-비트 RAM을 이용한 8 킬로바이트 (KB) 들이지만, 면적은 28 nm 기술에서 약 0.061 mm2 이다. 그러나, 이 예에서, 256x32-비트의 마스크 RAM 은 0.013 mm2 의 면적을 가지고, 이 면적은 캐시 메모리의 면적의 21 % 이다.
위에서 설명된 더티 바이트 마스크 시스템의 저장을 위한 일 예의 아키텍처가 표 1 에서 예시되어 있다. 하나의 예에서, 캐시는 각각의 라인에서 1 킬로바이트 (Kbyte) 데이터를 갖는 128 개의 캐시 메모리 라인들 (0...127) 을 가진다고 가정한다. 이하의 표 1 의 아키텍처를 이용하여 바이트 더티 마스크를 저장할 때, 각각의 캐시 메모리 라인은 1024-비트 DirtyByteMask 를 요구하고, 이것은 이하의 표 1에서 도시된 바와 같이, 128 킬로-비트 (K-bit) 레지스터들을 희생시킨다.
표 1 에서 예시된 바와 같이, 캐시 메모리 라인들은 캐시 메모리 라인에서의 데이터가 유효한지를 표시하기 위한 유효 플래그와, 캐시에서의 그 데이터에 대응하는 주 메모리에서의 어드레스를 표시하는 태그를 포함할 수도 있다. (표 1 에서 도시되지 않은) 데이터는 또한 캐시 메모리 라인의 일부이다. 더티 플래그는 캐시 메모리 라인의 데이터에서의 임의의 바이트들이 주 시스템 메모리에서의 데이터와 더 이상 일치하지 않도록 기입되었는지를 표시하기 위하여 이용된다. 캐시 메모리 라인은 또한, 캐시 메모리 라인의 어느 바이트들이 더티인지를 표시하는 더티 바이트 마스크를 포함할 수도 있다.
Figure 112015059430898-pct00001
표 1 바이트 더티 마스크에 대한 태그 아키텍처
위에서 설명된 판독-할당-기입 방식 및 바이트 더티 마스크 저장 방식의 둘 모두는 그 자신의 단점들을 가진다. 판독-할당-기입 방식은 여분의 대역폭을 취하고, 바이트 더티 마스크를 저장하는 것은 면적 불이익으로 귀착된다. 표 1 에서 예시된 예에서, 바이트 더티 마스크는 캐시 메모리 라인에서 매 바이트에 대하여 1 비트를 저장한다. 특정 비트가 활성, 예를 들어, 논리적 "1" 일 경우, 대응하는 바이트는 더티이다. 다른 구성들이 또한 가능하다.
위에서 논의된 제 2 아키텍처에서, 캐시 메모리는 바이트 더티 마스크를 저장한다. 그 시스템에서의 각각의 캐시 메모리 라인은 바이트 더티 마스크에 대한 전용 로케이션을 가진다. 전체의 캐시를 커버하지 않는 기입 요청들만이 더티 마스크를 이용할 것이다. 판독 요청들은 임의의 더티 마스크를 이용하지 않을 것이고, 전체적인 캐시 라인을 커버하는 기입 요청들은 1-비트 더티 플래그를 이용할 수 있다. 따라서, 시스템에서의 각각의 캐시 메모리 라인이 바이트 더티 마스크에 대한 전용 로케이션을 가지게 하는 것은 필요한 것보다 더 많은 메모리를 이용할 수도 있다.
이 개시물의 기법들에 따르면, 매 캐시 메모리 라인에서의 매 바이트에 대한 1-비트 마스크를 이용하는 대신에, 1-비트 플래그가 바이트 더티 마스크들의 풀 (pool) 과 함께 각각의 캐시 메모리 라인에 대해 이용될 수도 있다. 따라서, 전체의 캐시 메모리 라인을 커버하는 기입 요청들은 캐시 메모리의 상태를 설명하기 위하여 1-비트 더티 플래그를 이용할 수도 있다. 따라서, 전체적인 캐시 메모리 라인에 대한 1-비트 플래그는 각각의 바이트에 대한 1-비트 마스크 대신에 이용될 수도 있다. 더티이지만 완전 더티는 아닌 각각의 캐시 메모리 라인에 대하여, 바이트 더티 마스크 메모리 로케이션들 중 하나를 지시하는 포인터가 제공될 수도 있다. 일 예에서, 바이트 더티 마스크들의 풀에서의 각각의 마스크는 캐시 메모리 라인에서의 매 바이트에 대해 1 비트를 저장할 수도 있다. 특정 비트가 활성, 예를 들어, 논리적 "1" 일 경우, 대응하는 바이트는 더티이다. 다른 구성들이 또한 가능하다.
예를 들어, 포인터는 별도의 바이트 더티 마스크 메모리 로케이션을 지시하기 위하여 이용될 수도 있다. 별도의 바이트 더티 마스크 메모리 로케이션은 바이트 더티 마스크들을 저장하기 위하여 이용될 수도 있다. 각각의 바이트 더티 마스크는 특정 캐시 메모리 라인의 어느 바이트들이 더티인지를 표시한다. 다시 말해서, 더티 바이트들은, 주 메모리에서의 대응하는 메모리 로케이션과 동일한 데이터를 더 이상 포함하지 않도록 기입되었던 캐시 메모리 라인에서의 그 바이트들이다. 일반적으로, 캐시 메모리에서의 모든 캐시 메모리 라인들이 동시에 더티인 바이트들을 가지지는 않을 것이므로, 바이트 더티 마스크 메모리 로케이션들의 수는 캐시 메모리 라인들의 수보다 더 작을 수도 있다. 따라서, 이러한 예의 시스템에서는 더 적은 메모리가 이용될 수도 있다.
일반적으로, 일 예로서, 그래픽 프로세싱 유닛 (graphics processing unit; GPU) 을 사용하는 응용들에서는, 요청들의 대부분이 판독 요청들이다. 이러한 판독들은 캐시 메모리 라인에서의 값들을 변경시키지 않으므로, 판독 요청들은 캐시 메모리 라인에서의 바이트들로 하여금 더티로 되게 하지 않을 것이다. 다시 말해서, 판독 전에, 캐시 메모리 라인이 대응하는 더욱 상위-레벨 메모리, 예를 들어, 주 메모리와 동일한 데이터를 포함할 경우, 캐시 메모리 라인은 또한, 판독 후에 대응하는 더욱 상위-레벨 메모리와 동일한 데이터를 포함할 것이다. 추가적으로, 대부분의 기입 요청들은 연속적인 어드레스들을 가진다. 따라서, 일반적으로, GPU 를 사용하는 응용들에서는, 이웃하는 기입 요청들이 궁극적으로 전체의 캐시 메모리 라인을 커버할 것이다. 데이터가 동일한 데이터로 겹쳐쓰기 (overwrite) 되지 않은 것으로 가정하면, 전체적인 캐시 메모리 라인은 기입되었을 경우, 각각의 바이트의 내용들은 더티이다. 다시 말해서, 캐시 메모리 라인의 각각의 바이트가 대응하는 더욱 상위-레벨 메모리 로케이션들과 동일한 데이터를 포함하지 않을 때에는, 모든 바이트들이 더티이므로 어느 바이트들이 더티인지를 추적하는 것이 이제 더 이상 필요하지 않다. 이 개시물의 기법들에 따르면, 더티 마스크는 1-비트 더티 플래그와, 더티 마스크들의 풀의 일부일 수도 있는 별도의 바이트 더티 마스크 메모리 로케이션으로의 포인터에 의해 대체될 수도 있다. 1-비트 더티 플래그는 캐시 라인이 더티인지 여부를 표시하고, 그러할 경우, 포인터에 의해 식별된 별도의 바이트 더티 마스크 메모리 로케이션은 캐시 라인의 어느 바이트들이 더티인지를 표시한다. 매 캐시 메모리 라인은 개별적인 더티 마스크를 필요로 하지 않으므로, 더 작은 수의 더티 마스크들이 이용될 수도 있다. 즉, 캐시 메모리 라인들의 일부는 더티가 아니고, 즉, 임의의 더티 바이트들을 포함하지 않는다.
이 개시물은 바이트-기입가능한 캐시에 대한 기입 아키텍처를 제안한다. 제안된 아키텍처는 특정 특징들을 가질 수도 있다. 하나의 예로서, 각각의 캐시 메모리 라인에 대한 전용 더티 마스크를 이용하는 대신에, 전체의 캐시는 더티 마스크들의 풀을 공유할 수도 있다. 더티 마스크들의 공유된 풀은 각각의 캐시 메모리 라인을 갖는 바이트 더티 마스크를 포함하는 시스템과 비교할 때, 더 작은 메모리를 이용할 수도 있다. 캐시 메모리 라인들의 수보다 더 작은 수의 더티 마스크들의 이용을 허용할 수도 있는 시스템 동작의 하나의 양태는 판독 동작들의 주파수이다. 판독 동작들은 캐시 메모리를 변경시키지 않고, 이에 따라, 더티 마스크들의 풀로부터의 더티 마스크를 이용하는 것으로 귀착된다. 따라서, 위에서 논의된 바와 같이, 일부의 시스템들은 데이터가 더티로 되게 하지 않은 큰 수들의 판독들을 수행할 수도 있으므로, 더티 마스크들의 수는 캐시 메모리 라인들에 대한 수보다 상당히 더 작을 수도 있다. 많은 데이터가 더티로 되지 않을 수도 있으므로, 예를 들어, 다른 캐시 메모리 라인들과 동시에, 바이트 더티 마스크들의 풀은 매 캐시 메모리 라인에 대한 바이트 더티 마스크들 대신에 이용될 수도 있다. 추가적으로 일부의 시스템들에서는, 기입들이 동일한 캐시 메모리 라인들로의 것인 경향이 있고, 이것은 이 라인들이 "완전 더티" 로 되는 경향이 있을 것임을 의미한다. 매 바이트가 더티이므로, 완전 더티 캐시 메모리 라인들은 바이트 더티 마스크를 이용하지 않는다.
더티 마스크들의 수가 캐시 메모리 라인들에 대한 수보다 상당히 더 작을 수도 있음을 예시하는 예에서, 1000 개의 캐시 메모리 라인들을 갖는 캐시는 20 개의 더티 마스크들만을 이용할 수도 있다. 기입 요청이 전체 캐시 메모리 라인에 기입되지 않아서, 바이트들의 서브세트 (subset) 만이 더티일 경우, 더티 마스크 공간은 그 특정 캐시 메모리 라인에 할당될 수도 있다. 할당된 더티 마스크 공간의 식별 (ID) 는 이 캐시 메모리 라인에 어태치 (attach) 될 수도 있어서, 이 캐시 메모리 라인이 퇴거될 때에 마스크가 액세스될 수 있다. ID 는 일반적으로, 캐시 라인에서의 적어도 하나의 바이트가 더티임을 표시할 수도 있는 더티 플래그, 및/또는 캐시 메모리 라인에서의 매 바이트가 더티임을 표시할 수도 있는 완전 더티 플래그와 같은 캐시 라인 플래그들과 함께 저장될 수도 있다. 이것은 액세싱 편리성을 허용할 수도 있다. 그러나, 다른 예들에서, ID 는 다른 메모리 저장 로케이션들에서 저장될 수도 있다.
특정 캐시 메모리 라인에 대한 정보가 더 이상 더티 바이트 마스크에서 저장되지 않는다는 점에서, 캐시 메모리 라인은 퇴거될 수도 있다. 이것은 예를 들어, 캐시 메모리 라인이 주 메모리로부터의 새로운 정보로 기입되어 그것이 더 이상 더티가 아닐 때, 또는 캐시 메모리 라인이 완전 더티로 되고, 각각의 바이트가 더티이므로 어느 바이트들이 더티인지를 추적할 필요성이 없을 때에 발생할 수도 있다. 일부의 경우들에는, 시스템에서의 매 더티 바이트 마스크가 이용 중일 경우, 그것이 완전 더티가 아니라 더티이더라도 캐시 메모리 라인을 퇴거하는 것이 필요할 수도 있다. 따라서, 시스템은 캐시 메모리 라인을 주 메모리 (16) 외부에 기입할 수도 있어서, 그 캐시 메모리 라인은 더 이상 더티가 아니다.
둘째로, 더티 마스크가 어태치된 캐시 메모리 라인들 (예를 들어, 특정 더티 마스크에 대하여 이용 중인 캐시 메모리 라인들) 을 적중 (hit) 시키는 임의의 기입 요청들은 대응하는 더티 마스크에 대한 업데이트를 야기시켜야 한다. 더티 마스크가 업데이트될 때, 검출 로직은 더티 마스크가 모두 1 인지를 검출할 수도 있다. 일단 더티 마스크가 모두 1 이어서, 캐시 라인이 완전 더티임을 표시하면, 그것은 더티 마스크들의 ID 를 무효한 것으로 설정함으로써 캐시 메모리 라인으로부터 어태치 해제 (de-attach) 될 수 있다. 이것은 캐시 메모리 라인이 "완전 더티" 임을 표시한다. 전체적인 캐시 메모리 라인이 메모리 계층구조에서 다음의 최상위 메모리에 기입될 필요가 있을 때, 캐시 메모리 라인은 완전 더티이다. 다시 말해서, 전체적인 캐시 메모리 라인이 기입되었을 때에 캐시 메모리 라인은 완전 더티이어서, 메모리 계층구조에서 예를 들어, 주 시스템 메모리 또는 일부의 다른 중간 메모리와 같은 다음의 최상위 메모리는 최신의 것이 아니다.
각각의 캐시 메모리 라인은 특정 캐시 메모리 라인이 완전 더티인지를 표시하기 위하여 1-비트 "완전 더티" 플래그를 이용할 수도 있다. 따라서, 완전 더티 캐시 메모리 라인에 대하여, 그 더티 마스크는 다른 요청들을 위하여 이용가능할 수 있다. 예를 들어, 완전 더티 캐시 메모리 라인에 대한 더티 마스크는 완전히 기입되지 않은 (예를 들어, 완전 더티) 또 다른 캐시 메모리 라인을 표시하기 위한 재할당을 위하여 이용가능할 수도 있다. 캐시 메모리 라인의 완전 더티 상태는 위에서 언급된 전체 플래그에 의해 표시될 수도 있다. 이와 같이, 완전 더티 캐시 메모리 라인에 대하여, 그 캐시 메모리 라인에서의 매 바이트가 더티이므로, 더티 마스크는 더 이상 그 캐시 메모리 라인에 대해 필요하지 않다. 따라서, 이 예에서, 마스크는 더티인 바이트들을 계속 추적하기 위하여 필요하지 않다.
바이트 더티 마스크의 다른 이용들과, 이 개시물의 제안된 기법들 중의 일부의 예 사이의 비교를 위하여, 캐시 메모리는 1 킬로바이트 (Kbyte) 데이터를 각각 갖는 128 개의 캐시 메모리 라인들을 가진다고 가정한다. 다른 기법들을 이용하여 바이트 더티 마스크를 저장할 때, 각각의 캐시 메모리 라인은 1024-비트 DirtyByteMask 를 요구하고, 이것은 상기 표 1에서 도시된 바와 같이, 128 킬로-비트 레지스터들을 희생시킨다.
이 개시물에서 제안된 기법들에 의하여, 하나의 예에서, 각각의 캐시 메모리 라인은 특정 캐시 메모리 라인이 완전 더티인지를 표시하기 위하여 1-비트 "완전 더티" 플래그를 이용할 수도 있다. 특정 캐시 메모리 라인이 완전 더티가 아닐 경우, 3-비트 인덱스 (이하의 표 2 에서 3-비트 DirtyBufferIndex 로서 지칭됨) 는 어느 버퍼가 특정 캐시 메모리 라인에 대한 더티 바이트 마스크 (DirtyByteMask) 를 저장하고 있는지를 표시할 것이다. 캐시 메모리 라인들의 대부분이 비-더티 (non-dirty) 또는 완전 더티인 것으로 가정하면, 8-엔트리 버퍼 (DirtyBuffer) 는 128 개의 캐시 메모리 라인들을 가지는 캐시와 함께 이용하기에 충분히 클 수도 있다.
버퍼에서의 각각의 엔트리는 1 킬로-비트 플래그와, 8 킬로-비트 레지스터들을 포함할 수도 있는 8-엔트리 DirtyBuffer 를 저장할 수도 있다. 하나의 예에서, 태그에서의 각각의 캐시 메모리 라인에 대한 4 개의 여분의 비트들은 표 2 에서 예시된 바와 같이 이용된다. 128 개의 캐시 메모리 라인들의 총 비트 비용은 4*128=512 비트들이다. 8 킬로-비트 DirtyBuffer 와 조합되어, 데이터 일관성을 추적하기 위하여, 즉, 어느 바이트들이 더티이고 어느 바이트들이 더티가 아닌지를 추적하기 위하여 이용된 총 비트들의 수는 8.5 킬로-비트들이고, 이것은 위에서 언급된 다른 방식들에서 바이트 더티 마스크들을 저장하기 위하여 필요한 128 킬로-비트보다 훨씬 더 작다. 표 2 에서 예시된 캐시 메모리 라인들은 또한, 캐시 메모리에서의 그 데이터에 대응하는 데이터를 포함하는 주 메모리에서의 (또는 일부의 더욱 상위 레벨 메모리에서의) 어드레스들을 표시하는 태그들을 포함한다. 예를 들어, 태그는 특정 캐시 라인 상에 저장된 데이터가 프로세서에 의해 판독되도록 또한 이용가능한 주 메모리에서의 어드레스를 표시할 수도 있다.
Figure 112015059430898-pct00002
표 2 하나의 제안된 접근법의 태그 아키텍처
도 1 은 프로세서 (12), 캐시 메모리 (14), 및 주 메모리 (16) 를 포함하는 일 예의 프로세싱 시스템 (10) 을 예시하는 블록도이다. 프로세서 (12) 는 마이크로프로세서, 디지털 신호 프로세서 (digital signal processor; DSP), 중앙 프로세싱 유닛 (central processing unit; CPU), 그래픽 프로세싱 유닛 (graphics processing unit; GPU), 또는 다른 프로세서일 수도 있다. 추가적으로, 프로세서 (12) 는 필드 프로그래밍가능한 게이트 어레이 (field programmable gate array; FPGA), 복합 프로그래밍가능한 로직 디바이스 (complex programmable logic device; CPLD) 및 프로세싱 기능성을 구현하는 다른 디지털 로직과 같은 디지털 로직을 포함할 수도 있다. 프로세서 (12) 는 이들 중 하나 이상의 조합들을 포함할 수도 있다. 예를 들어, 프로세서 (12) 는 GPU 뿐만 아니라, 프로세싱 기능성을 제공하는 다른 로직을 포함할 수도 있다. 일부의 예들에서, 프로세서 (12) 는 다수의 CPU 들, 다수의 DSP 들, 하나 이상의 CPU 들 및 DSP 들의 조합, CPU 들, DSP 들, GPU 들, FPGA 들, CPLD 들, 또는 다른 프로세싱 로직의 다른 조합들과 같은 하나 또는 다수의 프로세서들일 수도 있다.
프로세서 (12) 는 평균 메모리 액세스 시간을 감소시키기 위하여 일시적인 데이터 판독들 및 기입들을 위한 캐시 메모리 (14) 를 이용할 수도 있는데, 이 평균 메모리 액세스 시간은 그렇지 않을 경우에, 주 시스템 메모리일 수도 있는 주 메모리 (16) 를 액세스하기 위하여 필요할 것이다. 캐시 메모리 (14) 는 주 메모리 (16) 와 비교할 때, 더 작을 수도 있고, 예를 들어, 더 낮은 데이터 저장량을 가질 수도 있다. 캐시 메모리 (14) 는 또한, 주 메모리 (16) 와 비교할 때, 더 빠른 메모리일 수도 있다. 예를 들어, 캐시 메모리 (14) 로부터의 판독은 주 메모리 (16) 로부터의 판독보다 완료하기 위한 더 적은 클록 사이클들을 취할 수도 있다. 일부의 예들에서, 캐시 메모리는 파선 (24) 에 의해 표시된 바와 같이, 프로세서 (12) 와 동일한 칩 상에 있을 수도 있다. 다른 예들에서, 캐시 메모리는 프로세서(12) 에 인접할 수도 있는 별도의 칩에 있을 수도 있다. 일부의 예들에서, 캐시 메모리 (14) 는 다수의 프로세서들을 서빙할 수도 있다. 캐시 메모리 (14) 는 또한, 레벨 1 및 레벨 2 캐시의 둘 모두와 같은 다수의 계층적인 레벨들을 포함할 수도 있다. 캐시 메모리 설계에서는, 지연시간 및 적중 레이트 (hit rate) 사이의 절충이 일반적으로 있을 수도 있다. 더 큰 캐시들은 더 양호한 적중 레이트들, 하지만 더 긴 지연시간을 가질 수도 있다. 이 절충을 다루기 위하여, 많은 시스템들은 더 크고 더 느린 캐시들에 의해 백업된 더 작고 더 빠른 캐시들과 함께, 캐시의 다수의 레벨들을 이용할 수도 있다. 멀티-레벨 (multi-level) 캐시들은 일반적으로 가장 작은 레벨 1 (L1) 캐시를 먼저 검사함으로써 일반적으로 동작할 수도 있다. 레벨 1 캐시가 적중 (hit) 을 가질 경우, 프로세서는 진행된다. 더 작은 캐시가 부적중 (miss) 할 경우, 일반적으로 다음의 더 큰 캐시 (L2) 가 검사될 수도 있다. 이것은 주 메모리 (16) 가 검사될 수도 있을 때까지 캐시의 더욱 더 상위 레벨들과 함께 계속될 수도 있다.
추가적으로, 캐시 메모리 (14) 는 주 메모리 (16) 의 빈번하게 이용된 저장 로케이션들로부터의 데이터의 복사본 (copy) 들을 저장할 수도 있다. 대부분의 메모리 액세스들이 캐시 메모리 (14) 에서 캐시되는 한, 메모리 액세스들의 평균 지연시간은 주 메모리 (16) 의 지연시간보다 캐시 메모리 (14) 의 지연시간에 더 근접할 수도 있다. 주 메모리 판독들 및 기입들과 비교하여, 발생하는 캐시 메모리 (14) 판독들 또는 기입들의 백분율이 더 높을수록, 캐시 메모리 (14) 및 주 메모리 (16) 를 이용하는 시스템의 메모리 액세스 성능이 일반적으로 더 높을 것이라는 점이 이해될 것이다.
주 메모리 (16) 는 일반적으로 랜덤 액세스 메모리 (RAM) 또는 다른 타입들의 휘발성 컴퓨터 메모리일 수도 있다. 일부의 예들에서, 주 메모리 (16) 는 RAM 및 판독 전용 메모리 (Read Only Memory; ROM) 둘 모두의 혼합일 수도 있다. 일부의 경우들에는, 예를 들어, 실행가능한 코드가 저장될 필요가 있지만, 거의 데이터가 저장될 필요가 없거나 전혀 데이터가 저장될 필요가 없을 경우, 주 메모리 (16) 는 비휘발성 메모리 (예를 들어, ROM) 일 수도 있다. 최소의 데이터 양이 저장될 필요가 있을 경우들에는, 별도의 메모리가 이용될 수도 있거나, 레지스터들이 이용될 수도 있거나, 캐시 메모리 (14) 가 이용될 수도 있거나, 또는 다른 타입들의 저장 장치가 이용될 수도 있다. 다양한 예들에서, 주 메모리 (16) 는 예를 들어, 시스템 버스 (26) 를 통해 프로세서 (12) 에 결합될 수도 있다. 주 메모리 (16) 는 일반적으로 캐시 메모리 (14) 보다 더욱 상위 레벨 메모리로 고려될 것이다. 일반적으로, 주 메모리 (16) 는 캐시 메모리 (14) 와 비교할 때, 더 클 수도 있고, 예를 들어, 더 큰 데이터 저장량을 가질 수도 있다. 추가적으로, 일반적으로, 주 메모리 (16) 는 캐시 메모리 (14) 와 비교할 때에 더 느릴 것이다. 예를 들어, 캐시 메모리에 대해 데이터를 판독하거나 기입하는 것이 걸리는 것보다, 프로세서 (12) 가 주 메모리 (16) 에 대해 데이터를 판독하거나 기입하는 것이 더 오래 걸릴 수도 있다.
예시된 예에서, 프로세서 (12) 는 캐시 메모리 (14) 에 대한 프로세서 (12) 에 의한 판독들 및 기입들을 허용하기 위하여 캐시 메모리 (14) 에 커플링된다. 추가적으로, 프로세서 (12) 는 캐시 메모리 (16) 에 대한 프로세서 (12) 에 의한 판독들 및 기입들을 허용하기 위하여 주 메모리 (16) 에 커플링된다. 본원에서 설명된 기법들은 캐시 메모리 (14) 및 주 메모리가 본원에서 설명된 기법들과 함께 이용될 수도 있는 프로세서 (12) 를 통해 결합되기만 하는 메모리 구성들에 적용될 수도 있다. 추가적으로, 예시된 예에서는, 프로세서 (12) 에 의한 개입 없이 주 메모리 (16) 및 캐시 메모리 (14) 사이에서 데이터를 전송하는 것을 허용하기 위하여, 주 메모리 (16) 는 캐시 메모리 (14) 에 결합될 수도 있다. 예를 들어, 데이터 전송 제어기 (22) 는 이 데이터 전송을 제어할 수도 있다. 예시된 바와 같이, 데이터 전송 제어기 (22) 는 주 메모리 (16) 및 캐시 메모리 (14) 의 외부에 있을 수도 있다. 하나의 예들에서, 데이터 전송 제어기 (22) 는 주 메모리 (16) 또는 캐시 메모리 (14) 의 일부일 수도 있다. 데이터 전송 제어기 (22) 는 또한, 주 메모리 (16) 및 캐시 메모리 (14) 에서의 컴포넌트들, 또는 주 메모리 (16) 에서의, 캐시 메모리 (14) 에서의, 그리고 이 디바이스들의 외부에 있는 컴포넌트들을 포함할 수도 있다. 일부의 예들에서, 캐시 제어기 (20) 및 데이터 전송 제어기 (22) 는 단일 제어기일 수도 있다. 다른 메모리 구성들이 또한 가능하다는 점이 이해될 것이다. 예를 들어, 캐시는 프로세서가 아니라 메모리에 접속될 수도 있거나, 캐시가 주 메모리가 아니라 프로세서에 접속될 수도 있다. 또 다른 예에서는, 다수의 더욱 상위의 레벨들의 메모리들을 갖는 시스템들이 본원에서 설명된 기법들과 함께 이용될 수도 있다. 예를 들어, 일부의 시스템들은 프로세서 (12) 와 동일한 칩 상에 있는 제 1 레벨 캐시와, 프로세서 (12) 뿐만 아니라 주 메모리 (16) 로부터 오프 칩 (off chip) 인 제 2 레벨 캐시 (도시되지 않음) 를 가질 수도 있다. 일반적으로, 임의의 캐시 메모리, 예를 들어, 제 1 레벨 캐시, 선택적인 제 2 레벨 캐시 등은 주 메모리 (16) 로부터의 별도의 메모리 디바이스들일 것이고, 일반적으로, 주 메모리 (16) 와 동일한 칩 상에 있지 않을 것이다.
일 예에서, 캐시 메모리 (14) 는 만약 존재하다면, 프로세서 (12) 가 데이터를 어느 바이트들에 기입하였고 데이터를 어느 바이트들에 기입하지 않았는지를 추적하기 위한 다양한 양태들을 포함하는 바이트 기입가능한 캐시이다. 캐시 메모리 (14) 는 각각의 캐시 메모리 라인에 대해 전용 마스크를 이용하지 않는다. 오히려, 하나의 예에서, 캐시 메모리 (14) 에서는, 전체의 캐시가 더티 마스크 공간 (18) 에서의 더티 마스크들의 풀을 공유한다. 더티 바이트 마스크들 또는 플래그들의 풀은 필요한 대로 캐시 메모리 (14) 의 상이한 라인들에 할당가능하다. 일반적으로, 이러한 캐시 아키텍처는 각각의 캐시 메모리 라인들에 대해 더티 마스크를 포함하는 캐시 시스템보다 더 적은 메모리 로케이션들, 더 작은 전력, 및 더 작은 면적을 이용할 수도 있다. 더티 라인들의 풀을 공유함으로써, 더 적은 총 메모리 로케이션들이 이용될 수도 있다.
도 1 에서 예시된 바와 같이, 더티 마스크 공간 (18) 에서의 더티 마스크들의 풀은 캐시 메모리 (14) 의 부분에서 저장될 수도 있다. 다라서, 더티 마스크 공간 (18) 에서의 더티 마스크들의 풀은 캐시 메모리 (14) 와 동일한 물리적 부분의 일부일 수도 있다. 그러나, 다른 예들에서, 더티 마스크 공간 (18) 에서의 더티 마스크들의 풀은 캐시 메모리로부터의 별도의 메모리 또는 별도의 물리적 부분에서 저장될 수도 있다. 이 별도의 메모리 로케이션은 순간적인 응용의 기법들의 수행을 허용하기 위하여 캐시 메모리 (14) 에 결합될 수도 있다. 위에서 논의된 바와 같이, 더티 마스크들의 수는 캐시 메모리 (14) 에서의 캐시 메모리 라인들의 수보다 더 작을 수도 있다. 예를 들어, 1000 개의 캐시 메모리 라인들을 갖는 캐시 메모리 (14) 는 20 개의 더티 마스크들만을 이용할 수도 있다.
더티 마스크 공간 (18) 에서의 더티 마스크들은 바이트가 언제 "더티" 인지를 표시한다. 바이트가 최종 시스템 메모리 전송 후의 값으로 기입되었을 때, 바이트는 더티이다. 기입된 값은 일반적으로 주 메모리 (16) 에서의 대응하는 값과는 상이할 것이다. 다시 말해서, 그 바이트에서 저장된 값이 주 메모리 (16) 에서의 대응하는 메모리 로케이션에서 저장된 값과 동일하지 않을 가능성이 있도록 값이 기입되었을 때, 바이트가 더티이다. 반대로, 그 바이트에서 저장된 값이 주 메모리 (16) 에서의 대응하는 메모리 로케이션에서 저장된 값과 일치할 때, 즉, 최종 시스템 메모리 전송 이후로 바이트가 기입되지 않았음을 우리가 알 때, 바이트는 더티가 아니다. 다양한 예의 시스템들은 캐시 메모리에서의 특정 바이트가 주 메모리 (16) 에서 저장된 대응하는 값과 상이한 값을 저장하고 있는지 여부를 계속 추적하지 않는다는 점이 이해될 것이다. 오히려, 캐시 메모리에서의 그 바이트로의 기입이 최종 시스템 메모리 전송 후에 발생할 경우, 값은 주 메모리 (16) 의 대응하는 메모리 로케이션에서 저장되는 것과 더 이상 일치하지 않는 것으로 가정될 수도 있다. 일반적으로, 캐시 메모리 라인의 특정 바이트들이 더티이지만, 그 캐시 메모리 라인의 매 바이트가 더티가 아닐 때, 더티 마스크 공간 (18) 에서의 더티 마스크는 시스템이 더티인 바이트들 및 더티가 아닌 바이트들 사이를 구별하도록 한다. 특정 캐시 메모리 라인에서의 바이트들 중의 어느 것도 더티가 아닐 경우, 더티 마스크는 그 캐시 메모리 라인에 대해 필요하지 않으며, 적어도 그 특정 시간에서 필요하지 않다. 일부의 다른 시간에서, 그 캐시 메모리 라인의 하나 이상의 바이트들은 더티일 수도 있다. 따라서, 더티 마스크 공간 (18) 에서의 더티 마스크는 그 시간에 이용될 수도 있다. 다른 한편으로, 특정 캐시 메모리 라인의 모든 바이트들이 더티일 때, 더티 마스크는 또한 그 캐시 메모리 라인에 대해 필요하지 않다. 다시, 이것은 적어도 그 특정 시간에 대해 해당할 수도 있다. 추가적으로, 완전 더티 플래그는 캐시 메모리 라인에서의 각각의 바이트가 더티임을 이미 표시할 수도 있으므로, 어느 특정 바이트들이 더티인지를 추적하는 것이 필요하지 않다. 이 양태는 이하에서 논의된 도 4a 및 도 4b 의 예들에 대해 상세하게 설명된다.
일부의 예들에서, 캐시 메모리 (14) 및 더티 마스크 공간 (18) 은 캐시 제어기 (20) 에 의해 제어될 수도 있다. 캐시 제어기 (20) 는, 각각의 캐시 메모리 라인으로의 기입이 그 캐시 메모리 라인으로의 전체 기입이 아닐 때, 더티 마스크들 중 하나를 캐시 메모리 라인들 각각에 할당하도록 구성될 수도 있다. 일 예에서, 더티 마스크들 각각은 캐시 메모리 라인들 중 하나에서 데이터 유닛들의 더티 상태들을 표시한다. 추가적으로, 캐시 제어기 (20) 는 더티 마스크들을, 더티 마스크들이 할당되는 캐시 메모리 라인들과 연관시키는 식별 (ID) 정보를 저장할 수도 있다.
캐시 제어기 (20) 는 디지털 로직 회로, 프로세서, 또는 이 개시물의 다양한 양태들을 구현할 수도 있는 다른 회로부일 수도 있다. 캐시 제어기 (20) 는 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 일부의 조합을 포함할 수도 있다. 추가적으로, 캐시 제어기 (20) 는 캐시 (14) 에 대해 내부적인 것으로 예시되어 있지만, 다른 예들에서는, 캐시 제어기 (20) 의 전부 또는 부분이 캐시 메모리 (14) 로부터 별도일 수도 있다. 다른 예들에서, 프로세서 (12) 는 제어 기능성을 구현하기 위하여 캐시 메모리 (14) 의 기능성을 제어하기 위하여 이용될 수도 있다.
이 개시물의 양태들의 구현하는 디바이스들, 시스템들, 및 방법들은 또한 일련의 바이트들이 "완전 더티" 인지를 추적할 수도 있다. 캐시 메모리 (14) 에서의 바이트들은 그 로케이션에서의 각각의 개별적인 바이트가 더티일 때에 완전 더티이다. 캐시 메모리 로케이션에서의 각각의 개별적인 바이트가 더티일 경우 (로케이션이 완전 더티임), 어느 개별적인 바이트들이 더티인지를 계속 추적하기 위하여 그 로케이션에 대한 더티 마스크 공간 (18) 에서의 더티 마스크를 이용하기 위한 필요성이 없다. 이것은 또한, 이하에서 논의된 도 4a 및 도 4b 의 예들에 대해 더욱 상세하게 설명된다.
도 1 에서 예시된 시스템은 일련의 캐시 메모리 라인들을 포함하는 캐시 메모리 (14) 를 포함하는 메모리 시스템을 구현하도록 구성될 수도 있다. 각각의 캐시 메모리 라인은 완전 더티 플래그 및 더티 버퍼 인덱스를 포함할 수도 있다. 캐시 메모리 시스템을 포함하는 프로세싱 시스템 (10) 은 또한, 더티 마스크 공간을 포함하는 더티 버퍼를 포함할 수도 있다. 그 캐시 메모리 라인으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닐 때, 더티 마스크 공간은 특정 캐시 메모리 라인에 할당될 수도 있으며, 여기서, 할당된 더티 마스크 공간의 식별 (ID) 는 더티 마스크 공간이 액세스될 수도 있도록 특정 캐시 메모리 라인에 어태치된다.
도 2 는 이 개시물의 기법들을 구현할 수도 있는 도 1 의 일 예의 캐시 메모리 (14) 를 예시하는 블록도이다. 캐시 메모리 (14) 는 데이터 및 그 데이터에 관련된 다양한 다른 정보를 저장하기 위한 다수의 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 을 포함할 수도 있다. 예를 들어, 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 은 캐시 메모리 라인에서의 데이터가 유효한지를 표시하기 위한 플래그를 포함할 수도 있다. 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 은 또한, 캐시에서의 그 데이터에 대응하는 주 메모리에서의 어드레스를 표시하는 태그를 포함할 수도 있다. 작은 수의 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 은 예시를 위하여 도시되어 있고, 정상적으로는 매우 큰 수의 캐시 메모리 라인들이 있을 것이라는 점이 이해될 것이다. 데이터에서의 임의의 바이트들이 주 메모리 (16) 에서의 데이터와 더 이상 일치하지 않도록 기입되었는지를 표시하기 위하여, 더티 플래그는 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 의 각각과 함께 포함될 수도 있다.
추가적으로, 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 중 하나에서의 매 바이트가 더티인지를 표시하기 위하여, 완전 더티 플래그는 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 과 함께 포함될 수도 있다. 이것은 예를 들어, 프로세서 (12) 가 캐시 메모리 라인에서의 바이트들의 전부에 기입하였으며 캐시 메모리 라인에서의 바이트들의 전부가 주 메모리 (16) 에서의 대응하는 메모리 로케이션들에서의 데이터 값들과는 상이한 값들을 가질 때에 발생할 수도 있다.
캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 은 또한, 캐시 메모리 라인 (110, 112, 114, 116, 118, 120, 122) 이 더티이지만 완전 더티가 아닐 때, 더티 마스크 공간 (108) 에서 더티 마스크에서의 로케이션으로의 포인터로서 작동하는 더티 버퍼 인덱스를 포함할 수도 있다. 캐시 메모리 라인이 완전 더티일 때에는, 어느 바이트들이 더티인지를 추적하기 위하여 일련의 플래그들 또는 마스크를 이용하는 것이 필요하지 않다. 이것은 모든 바이트들이 더티이기 때문이다. 따라서, 캐시 메모리 라인 (110, 112, 114, 116, 118, 120, 122) 이 완전 더티일 때, 더티 마스크 공간 (108) 에서 저장되는 그 캐시 메모리 라인 (110, 112, 114, 116, 118, 120, 122) 에 대응하는 임의의 로케이션은 또 다른 캐시 메모리 라인 (110, 112, 114, 116, 118, 120, 122) 에 할당될 수도 있다. 따라서, 더티 마스크 공간 (108) 의 부분들은, 더티이지만 완전 더티가 아닌 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 에 동적으로 할당될 수도 있다. 추가적으로, 더티 마스크 공간 (108) 은, 완전 더티이거나 전혀 더티가 아닌 것 중의 어느 하나인 임의의 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 로부터 동적으로 할당해제 (de-allocate) 될 수도 있다. 다시 말해서, 그 특정 캐시 메모리 라인에서의 데이터가 완전 더티이거나 더티가 아닌 것 중의 어느 하나일 때, 캐시 메모리 라인에 대한 정보는 더티 마스크 공간 (108) 으로부터 "퇴거" 될 수도 있다. 캐시 메모리 라인이 퇴거된 후, 이 정보에 의해 이용된 공간은 또 다른 캐시 메모리 라인을 위해 재할당 (reallocate) 될 수 있다.
또 다른 경우들에는, 예를 들어, 하나 이상의 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 이 더티가 아니거나 결코 더티가 아니었을 경우, 더티 마스크 공간 (108) 은 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 중 하나 이상에 동적으로 결코 할당되지 않았을 수도 있다. 대안적으로, 하나 이상의 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 은 완전 더티일 수도 있고, 결코 더티가 아니었을 수도 있다. 이것은 예를 들어, 캐시 메모리 라인이 캐시 메모리 라인으로의 하나의 기입으로 더티가 아닌 것으로부터 완전 더티인 것으로 되도록 전체적인 캐시 메모리 라인 예를 들어, 캐시 메모리 라인에서의 각각의 바이트가 한 번에 기입될 때에 발생할 수도 있다.
도 2 에서 예시된 캐시 메모리 라인 (14) 은 메모리 시스템을 구현하도록 구성될 수도 있다. 캐시 메모리 (14) 는 일련의 캐시 메모리 라인들을 포함할 수도 있다. 각각의 캐시 메모리 라인은 완전 더티 플래그 및 더티 버퍼 인덱스를 포함할 수도 있다. 추가적으로, 캐시 메모리 (14) 는 또한, 더티 마스크 공간을 포함하는 더티 버퍼를 포함할 수도 있다. 다른 예들에서, 더티 버퍼는 캐시 메모리 (14) 로부터 외부일 수도 있다. 그 캐시 메모리 라인으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닐 때, 더티 마스크 공간은 특정 캐시 메모리 라인에 할당될 수도 있으며, 여기서, 할당된 더티 마스크 공간의 식별 (ID) 는 더티 마스크 공간이 액세스될 수도 있도록 특정 캐시 메모리 라인에 어태치된다.
도 3 은 이 개시물의 기법들을 구현할 수도 있는 도 2 의 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 중 하나인 일 예의 캐시 메모리 라인 (110) 을 예시하는 블록도이다. 캐시 메모리 라인 (110) 은 캐시 메모리 라인에서의 데이터가 유효한지를 표시하기 위한 유효 플래그 (300) 를 포함한다. 캐시 메모리 라인 (110) 은 또한, 캐시 메모리 (14) 에서의 그 데이터에 대응하는 데이터, 즉, 캐시 메모리 (14) 에서 프로세서 (12) 에 의해 또한 이용가능한 주 메모리 (16) 데이터를 포함하는 주 메모리 (16) 에서의 어드레스를 표시하는 태그 (302) 를 포함한다. 데이터 (304) 는 또한 캐시 메모리 라인 (110) 의 일부이고, 예를 들어, 데이터 (304) 의 3 개의 데이터 바이트들 (306, 308, 310) 을 포함할 수도 있다. 다른 예들에서는, 더 많거나 더 적은 바이트들이 또한 가능하다.
예시된 예에서, 예를 들어, 프로세서 (12) 가 새로운 값들을 캐시 메모리 라인 (110) 에 기입하였을 경우, 데이터에서의 임의의 바이트들이 주 메모리 (16) 에서의 데이터와 더 이상 일치하지 않을 수도 있도록 기입되었는지를 표시하기 위하여, 더티 플래그 (312) 가 이용될 수도 있다. 프로세서 (12) 는 이미 존재하는 데이터 값들과 동일한 데이터 값을 캐시 메모리 라인에 기입할 수도 있지만, 일반적으로는, 값들이 동일하지 않을 것이라는 점이 이해될 것이다. 추가적으로, 일반적으로 이 기법들을 구현하는 시스템들은 값들이 변경되었는지를 알아 보기 위하여 실제로 검사하지 않을 수도 있다. 오히려, "더티" 또는 "완전 더티" 와 같은 상태들은 다양한 기입들이 발생하는 경우 가정될 수도 있다. 캐시 메모리 라인의 하나 이상의 바이트들에서 저장된 값들이 변경되고 이 값들이 주 메모리 (16) 에서의 대응하는 로케이션 또는 로케이션들에서 저장된 값들과 더 이상 동일하지 않을 때마다, 변경된 바이트들은 "더티" 이다. 캐시 메모리 라인에서의 일부이지만 전부가 아닌 바이트들이 더티일 때, 시스템은 더티인 특정 바이트들을 표시하기 위하여 마스크를 이용하여 어느 바이트들이 더티인지를 추적할 수도 있다. 마스크는 더티 마스크 공간 (18) 에서의 메모리 로케이션들의 풀 중 하나에서 저장될 수도 있다.
완전 더티 플래그 (314) 는 캐시 메모리 라인 (110) 에서의 매 바이트가 더티인지를 표시하기 위하여 포함될 수도 있다. 이 경우, 캐시 메모리 라인 (110) 이 완전 더티일 경우에는, 더티 마스크 공간 (18) 에서 더티 버퍼 마스크를 가지기 위한 필요성이 전혀 없다. 캐시 메모리 라인 (110) 은 또한, 캐시 메모리 라인 (110) 이 더티이지만 완전 더티가 아닐 때, 더티 마스크 공간 (18) 에서의 로케이션으로의 포인터로서 작동하는 더티 버퍼 인덱스 (316) 를 포함할 수도 있다.
도 3 에서 예시된 바와 같이, 일부의 예들에서, 더티 플래그 (312) 및 완전 더티 플래그 (314) 는 각각의 캐시 메모리 라인 (110) 의 상태를 표시하기 위하여 이용될 수도 있다. 다른 예들에서는, 캐시 메모리 라인이 더티가 아니고 완전 더티 플래그임을 표시하는 "클린 (clean)" 플래그가 이용될 수도 있다. 일반적으로, 클린 플래그는 더티 플래그 (312) 의 반대일 수도 있다. 다른 예들은 클린 플래그, 더티 플래그, 및 완전 더티 플래그를 포함할 수도 있다.
캐시 메모리 라인 (110) 이 완전 더티일 때에는, 어느 바이트들이 더티인지를 추적하기 위하여 일련의 플래그들 또는 마스크를 이용하는 것이 필요하지 않다는 점이 이해될 것이다. 이것은 모든 바이트들이 더티이기 때문이다. 모든 바이트들이 더티일 때, 단일의 "완전 더티" 플래그는 어느 바이트들이 더티인지를 결정하기 위한 충분한 정보를 제공한다. 더티 마스크 공간 (18) 에서 저장되는, 어느 바이트들이 더티인지를 표시하는 임의의 마스크는 또 다른 캐시 메모리 라인에 의해 이용될 수도 있다. 따라서, 캐시 메모리 라인 (110) 이 완전 더티일 때, 더티 마스크 공간 (18) 에서 저장되는 그 캐시 메모리 라인 (110) 에 대응하는 임의의 로케이션은 더티 바이트들을 표시하기 위하여 또 다른 캐시 메모리 라인에 할당될 수도 있다. 따라서, 더티 마스크 공간 (18) 은, 더티이지만 완전 더티가 아닌 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 에 동적으로 할당될 수도 있다. 더티 마스크 공간 (18) 은, 완전 더티이거나 전혀 더티가 아닌 임의의 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 로부터 동적으로 할당해제될 수도 있다.
예를 들어, 캐시 메모리 라인에서 저장된 더티 마스크와 함께 어태치된 캐시 메모리 라인들 (110, 112, 114, 116, 118, 120, 122) 을 적중시키는 임의의 기입 요청들은 대응하는 더티 마스크에 대한 업데이트를 야기시킬 수도 있다. 더티 마스크가 업데이트될 때, 검출 로직은 더티 마스크가 모두 1 인지, 즉, 캐시 메모리 라인에서의 매 바이트에 대해 "1" 이 있는지를 검출할 수도 있다. 일단 더티 마스크가 모두 1 이면, 캐시 메모리 라인은 완전 더티이다. 따라서, 캐시 메모리 라인이 "완전 더티" 임을 표시하기 위하여 완전 더티 플래그 (314) 를 설정함으로써, 더티 마스크는 캐시 메모리 라인 (110) 으로부터 어태치 해제 (de-attach) 될 수도 있다. 캐시 메모리에서의 각각의 바이트가 각각의 바이트가 주 메모리에서의 대응하는 바이트들과 동일한 데이터를 포함하지 않도록 기입되었을 때, 캐시 메모리 라인은 완전 더티이다. 이 때, 전체적인 캐시 메모리 라인은 메모리 계층구조에서 다음의 최상위 메모리, 예를 들어, 주 메모리 (16) 에 기입될 필요가 있다. 다시 말해서, 메모리 계층구조에서 다음의 최상위 메모리가 최신의 것이 아니도록, 전체적인 캐시 메모리 라인이 기입되었을 때, 캐시 메모리 라인은 완전 더티이다. 각각의 캐시 메모리 라인은 특정 캐시 메모리 라인이 완전 더티인지를 표시하기 위하여 1-비트 "완전 더티" 플래그를 이용할 수도 있다. 따라서, 완전 더티 개시 메모리 라인에 대하여, 그 더티 마스크는 완전히 기입되지 않은 또 다른 캐시 메모리 라인을 표시하기 위한 재할당을 위하여 이용가능할 수 있다. 캐시 메모리 라인의 완전 더티 상태는 완전 더티 플래그에 의해 표시될 수도 있다. 이와 같이, 완전 더티 캐시 메모리 라인에 대하여, 그 캐시 메모리 라인에서의 매 바이트가 더티이므로, 더티 마스크는 더 이상 그 캐시 메모리 라인에 대해 필요하지 않다. 마스크는 더티인 바이트들을 계속 추적하기 위하여 필요하지 않다.
도 3 에서 예시된 바와 같이, 캐시 메모리 라인은 완전 더티 플래그 (314) 및 더티 버퍼 인덱스 (316) 를 포함하도록 구성될 수도 있다. 더티 마스크 공간 (18) 은, 그 캐시 메모리 라인 (110) 으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닌 경우 특정 캐시 메모리 라인 (110) 에 할당될 수도 있는 별도의 메모리 디바이스 또는 캐시 메모리 (14) 의 일부일 수도 있다. 할당된 더티 마스크 공간의 식별 (ID) 는 더티 마스크 공간 (18) 이 액세스될 수도 있도록 특정 캐시 메모리 라인 (110) 에 어태치된다.
도 4a 및 도 4b 는 이 개시물의 기법들을 이용하여 캐시 메모리 (14) 에서의 데이터 프로세싱의 예를 예시하는 개념도들이다. 도 4a 는 5 개의 상이한 시점들 동안에 단일 캐시 메모리 라인 (110) 에서의 값들을 예시한다. 시간 0 은 초기 상태를 표시한다. 시간들 1 내지 3 은 캐시 메모리 라인 (110) 으로의 다양한 데이터 기입들을 예시한다. 제안된 방식은 예를 들어, 판독-할당-기입 방식과 비교할 때에 시스템 메모리 판독 대역폭을 절감할 수도 있다. 시간 4 는, 캐시 메모리 라인이 완전 더티로 되었고, 각각의 바이트가 더티이므로 어느 바이트들이 더티인지를 추적하기 위한 필요성이 없기 때문에, 캐시 메모리 라인 (777) 에 대한 정보가 더 이상 더티 바이트 마스크에서 저장되지 않도록 하는 캐시 라인 (777) 의 퇴거 및 어드레스 723 으로부터의 판독을 예시한다. 더티 마스크 공간 (18) 에서의 단일 어드레스 및 주 메모리 (16) 에서의 단일 어드레스에 대한 값들과, 이 값들이 5 개의 상이한 시점들에서 어떻게 변경되는지는 도 4b 에서 예시되어 있다.
논의된 바와 같이, 5 개의 상이한 시점들이 예시된다. 이 5 개의 시점들은 시간 0 내지 시간 4 이다. 시간 0 은 초기 상태이다. 시간 0 에서, 데이터는 캐시 메모리 라인 (110) 에 기입되지 않았다. 일반적으로, 다양한 플래그들 및 데이터 레지스터들의 갓들이 시간 0 에서 무엇인지는 특별히 중요하지 않을 수도 있다.
다음으로, 데이터는 주 메모리 (16) 로부터 캐시 메모리 라인 (110) 으로 기입될 수도 있다. 예시된 예에서, 캐시 메모리 (14) 가 프로세서 (12) 로부터 기입 요청을 수신할 때, 캐시 메모리 (14) 는 주 메모리 (16) 에서의 데이터가 무엇인지를 알지 못하고, 그 때에 데이터를 페치 (fetch) 하지 않는다. 오히려, 데이터는 프로세서 (12) 에 의해 필요하게 되기 때문에, 한 번에 1 바이트씩 캐시 메모리 (14) 에 기입될 수도 있다. 데이터가 실제로 절대 필요하게 되지 않을 경우, 그것은 캐시 메모리 (14) 에 기입되지 않는다. 이것은 주 메모리 (16) 로부터 캐시 메모리 (14) 로의 판독 대역폭을 절감할 수도 있다. 이 데이터는 시간들 1, 2 및 3 에서 기입될 때에 바이트 별로 캐시 메모리 라인 (110) 에서 저장될 수도 있고, 프로세서 (12) 에 의해 판독되거나 기입될 수도 있다. 시간들 1, 2 및 3 에서, 데이터 (304) 는 이하에서 추가적으로 상세하게 논의되는 바와 같이 다양한 방법들로 수정된다. 시간 4 에서, 데이터 (304) 는 캐시 메모리 라인 (110) 으로부터 다시 주 메모리 (16) 로 기입되어, 주 메모리 (16) 및 캐시 메모리 라인 (110) 은 다시 동일한 데이터를 저장한다. 그 때, 캐시 메모리 라인 (110) 은 퇴거될 수도 있고, 어드레스 723 으로부터의 데이터는 캐시 메모리 라인 (110) 에 기입될 수도 있다. 데이터는 프로세서 (12) 에 의해 필요하게 되기 때문에, 캐시 메모리 라인 (110) 에 기입될 수도 있다.
도 4a 의 예에서 예시된 바와 같이, 시간 0 에서, 우리는 일반적으로 캐시 메모리 라인 (110) 에서의 데이터 중의 임의의 것에 대해 "돈 케어 (don't care)" 한다. 값들은 일부의 초기 상태일 수도 있거나, 또는 캐시 메모리 라인 (110) 으로의 이전 기입으로부터의 가비지 데이터 (garbage data) 일 수도 있다. "돈 케어" 는 "X" 에 의해 표시된다. 대문자 "X" 는 16 진수 값들 (각각 4 비트들) 을 표시하고, 소문자 "x" 는 개별적인 비트들을 표시한다. 따라서, 유효 플래그 (300), 더티 플래그 (312), 및 완전 더티 플래그 (314) 는 이 예에서 개별적인 비트들이다. 또 다른 예에서, 시간 0 에서 저장된 값들은 알려진 유효 값들이었지만, 프로세싱을 위해 간단하게 더 이상 필요하지 않은 것일 수도 있다.
도 4a 의 예에서 예시된 바와 같이, 태그 (302) 는 3 개의 16 진수 값들 (총 12 비트들) 을 포함한다. 태그 (302) 는 그 캐시 메모리 라인에서 지금 저장된 데이터가 유래되었던 주 메모리 (16) 에서의 어드레스를 표시한다. 더티 버퍼 인덱스 (316) 는 3 개의 2 진수 숫자들을 포함한다. 더티 버퍼 인덱스 (316) 는 어느 바이트들이 더티인지를 표시하는 마스크로의 포인터로서 작동한다.
데이터 (304) 는 데이터의 3 개의 바이트들을 포함한다. 각각의 데이터 바이트 (306, 308, 310) 는 2 개의 16 진수 숫자들이다. 하나의 바이트는 8 비트들이고, 각각의 16 진수 숫자는 4 비트들을 나타낸다. 예시된 예에서의 더티 마스크 공간 (18) 에서의 각각의 어드레스는 3 개의 비트들을 포함한다. 예시된 예에서의 주 메모리 (16) 는 6 개의 16 진수 숫자들 (총 24 비트들) 을 포함한다.
도 4a 내지 도 4b 의 예시된 예는 판독-할당-기입 방식이 아니다. 따라서, 초기의 데이터 값들은 도 4a 내지 도 4b 의 예에서 프로세서 (12) 에 의해 필요하게 되지 않으므로, 도면은 데이터가 캐시 메모리 (14) 에 기입되는 것을 예시하지 않는다. 판독-할당-기입의 예에서, 유효 데이터는 주 메모리 (16) 로부터 캐시 메모리 (14) 에 기입될 수도 있고, 더욱 구체적으로, 데이터는 캐시 메모리 (14) 의 캐시 메모리 라인 (110) 에 기입될 수도 있다. 따라서, 유효 플래그 (300) 는 "1" 이다. 태그 (302) 는 데이터가 나오는 주 메모리 (16) 에서의 어드레스가 "777" 임을 표시할 것이다. 이러한 예에서, 주 메모리 (16), 어드레스 777 은 데이터 "AA AA AA" 를 포함할 것이다.
시간 1 에서, 데이터 (304) 는 수정된다. 더욱 구체적으로, 데이터 바이트 (308) 는 그 이전 값으로부터 "00" 으로 변경된다. 이것은 예를 들어, 프로세서 (12) 에 의해, 프로세서 (12) 가 수행하고 있는 프로세스의 일부로서, 또는 주 메모리 (16) 로부터 캐시 메모리 (14) 로의 직접적인 메모리 전송에 의해 행해질 수도 있다. 따라서, 데이터 (304) 는 "1" 의 값을 포함하는 더티 플래그 (312) 에 의해 표시된 바와 같이 "더티" 이다. 3 개의 데이터 바이트들 (306, 308, 310) 중 하나만 더티이고, 구체적으로, 데이터 바이트 (308) 는 더티이다. 캐시 메모리 라인 (110) 은 "완전 더티" 가 아니고, 완전 더티 플래그 (314) 는 "0" 의 값을 포함한다. 캐시 메모리 라인 (110) 은 "더티" 이지만, "완전 더티" 가 아니므로 (위에서 논의된 제 2 상태), 더티 버퍼 마스크는 바이트 기입가능한 캐시 메모리 (14) 의 어느 바이트들이 더티인지를 결정하기 위하여 필요하게 된다. 예를 들어, 더티 바이트들을 표시하는 비트들은 더티 마스크 공간 (18) 에서 저장될 수도 있다. 더티 버퍼 인덱스 (316) 는 "101" 의 값을 포함한다. 이 값은 더티 마스크 공간 (18) 에서의 어드레스로의 포인터이다. 더티 마스크 공간 (18) 의 어드레스 "101" 는 도 4b 에서 예시되고, 시간 1 에서, 더티 마스크 공간 (18) 의 어드레스 "101" (5) 은 "010" 의 2 진수 값을 포함한다. 이것은 "010" 에서의 "1" 에 의해 표시된 데이터 바이트 (308) 가 더티임을 표시한다. "010" 에서의 첫 번째 "0" 은 데이터 바이트 (306) 가 더티가 아님을 표시하고, "010" 에서의 두 번째 "0" 은 데이터 바이트 (310) 가 더티가 아님을 표시한다. 따라서, 도 4b 의 예시된 예에서, 더티 마스크 공간 (18), 어드레스 "101" 에서의 각각의 비트는 데이터 (304) 의 특정한 데이터 바이트 (306, 308, 310) 의 더티 상태를 추적하기 위하여 이용될 수도 있다.
도 4a 에서 예시된 바와 같이, 시간 2 에서, 데이터 (304) 는 수정된다. 더욱 구체적으로, 데이터 바이트 (306) 는 그 이전 값으로부터 "FF" 로 변경된다. 데이터 (304) 는 "1" 의 값을 포함하는 더티 플래그 (312) 에 의해 표시된 바와 같이 여전히 "더티" 이다. 3 개의 데이터 바이트들 (306, 308, 310) 중의 2 개만 더티이고, 구체적으로, 데이터 바이트들 (306 및 308) 은 더티이다. 캐시 메모리 라인 (110) 은 "완전 더티" 가 아니고, 완전 더티 플래그 (314) 는 "0" 의 값을 포함한다. 캐시 메모리 라인 (110) 은 "더티" 이지만, "완전 더티" 가 아니므로 (다시, 위에서 논의된 제 2 상태), 더티 버퍼 마스크는 바이트 기입가능한 캐시 메모리 (14) 의 어느 바이트들이 더티인지를 결정하기 위하여 필요하게 된다. 예를 들어, 더티 바이트들을 표시하는 비트들은 더티 마스크 공간 (18) 에서 저장될 수도 있다. 더티 버퍼 인덱스 (316) 는 "101" 의 값을 포함한다. 이 값은 더티 마스크 공간 (18) 에서의 어드레스로의 포인터이다. 더티 마스크 공간 (18) 의 어드레스 "101" 는 도 4b 에서 예시되고, 시간 2 에서, 더티 마스크 공간 (18) 의 어드레스 "101" 은 "110" 2 진수의 값을 포함한다. 이것은 "110" 에서의 "1" 에 의해 표시된 데이터 바이트들 (306 및 308) 이 더티임을 표시한다. "110" 에서의 "0" 은 데이터 바이트 (310) 가 더티가 아님을 표시한다. 도 4b 의 예시된 예에서, 더티 마스크 공간 (18), 어드레스 "101" 에서의 각각의 비트는 데이터 (304) 의 특정한 데이터 바이트 (306, 308, 310) 의 더티 상태를 추적하기 위하여 이용될 수도 있다.
도 4a 에서 예시된 바와 같이, 시간 3 에서, 데이터 (304) 는 다시 수정된다. 더욱 구체적으로, 데이터 바이트 (310) 는 그 이전 값으로부터 "88" 로 변경된다. 데이터 (304) 는 "1" 의 값을 포함하는 더티 플래그 (312) 에 의해 표시된 바와 같이 "더티" 이다. 그러나, 이 때, 3 개의 데이터 바이트들 (306, 308, 310) 중의 3 개 전부가 더티이다. 캐시 메모리 라인 (110) 은 시간 3 에서 "완전 더티" 이다. 따라서, 완전 더티 플래그 (314) 는 "1" 의 값을 포함한다. 캐시 메모리 라인 (110) 은 "완전 더티" 이므로 (위에서 논의된 제 3 상태), 더티 버퍼 마스크는 바이트 기입가능한 캐시 메모리 (14) 의 어느 바이트들이 더티인지를 결정하기 위하여 필요하지 않게 된다. 캐시 메모리 라인 (110) 에 대한 모든 바이트들은 더티이다. 시간 3 에서 더티 버퍼 인덱스 (316) 에서의 값은 "돈 케어", 즉, "xxx" 이다. 추가적으로, 더티 마스크 공간 (18), 어드레스 101 의 값은 "돈 케어", 즉, "xxx" 이다. 이 마스크 공간은 더티 바이트 상태를 추적하기 위하여 또 다른 캐시 메모리 라인 (110, 112, 114, 116, 118, 120, 122) 에 재할당될 수도 있다.
도 4a 에서 예시된 바와 같이, 시간 4 에서, 데이터 (304) 는 주 메모리 (16), 어드레스 777 에 다시 기입된다. 따라서, 시간 4 에서, 주 메모리 (16), 어드레스 777 에서의 데이터는 "FF 00 88" 이다. 시간 4 에서, 캐시 메모리 라인 (110) 은 위에서 설명된 제 1 상태, "더티 아님" 에 있다. 더티 아님 상태에서는, 비트들 중의 어느 것도 더티가 아니므로, 더티 마스크 공간 (18) 에서 저장된 더티 버퍼 마스크가 필요하지 않다. 더티 플래그 (312) 는 시간 4 에서 "0" 의 값을 포함하고, 완전 더티 플래그 (314) 는 또한 시간 4 에서 "0" 의 값을 포함한다. 다시 말해서, 캐시 메모리 라인이 완전 더티로 되었고, 각각의 바이트가 더티이므로 어느 바이트들이 더티인지를 추적하기 위한 필요성이 없기 때문에, 캐시 메모리 라인 (110) 에 대한 정보가 더 이상 더티 바이트 마스크에서 저장되지 않는다. 시간 4 에서, 캐시 메모리 라인 (110) 은 예를 들어, 또 다른 주 메모리 (16) 어드레스, 예를 들어, 어드레스 723 에 관련된 정보를 저장할 수도 있다.
일 예에서는, 위에서 설명된 바와 같이, 기입 요청이 전체 캐시 메모리 라인으로 기입하지 않을 경우, 더티 마스크 공간은 그것에 할당될 수도 있다. 할당된 더티 마스크 공간의 식별 (ID) 는 이 캐시 메모리 라인에 어태치될 수도 있어서, 이 캐시 메모리 라인이 퇴거될 때에 마스크가 액세스될 수 있다.
하나의 예에서, 더티 마스크는 다수의 데이터 바이트들의 특정한 데이터 바이트를 추적하기 위하여 이용될 수도 있다. 마스크 내의 특정한 비트는 데이터 바이트가 예를 들어, 주 메모리에서의 대응하는 바이트의 값과 그 바이트가 더 이상 일치하지 않도록 기입을 통해 변경되었는지를 표기하기 위하여 이용될 수도 있다.
일 예에서, 다수의 데이터 바이트들 중의 각각의 하나를 개별적으로 표기하기 위하여 마스크 내의 비트들을 이용하는 것은 적어도 하나의 기입을 통해 어느 것이 업데이트되었는지를 추적하는 것을 허용한다. 일 예에서, 특정한 더티 비트는 특정한 바이트가 더티임을 표시하기 위하여 이용될 수도 있다. 마스크에서의 각각의 비트들이 활성인지를 결정함으로써, 다수의 데이터 바이트들 중의 각각의 하나가 업데이트된 것으로 결정이 행해질 수도 있다.
더티 마스크를 이용하는 것은 데이터 엘리먼트가 업데이트되었는지 아닌지를 결정하는 것을 허용한다. 예를 들어, 모든 더티 비트들에 대해 불리언 (Boolean) 'and' 연산을 수행함으로써, 더티 마스크에서의 모든 더티 비트들이 더티로 표기되는 것을 확인하기 위하여, 특정한 로직 회로부가 제공될 수도 있다. 이 때, 데이터 엘리먼트 세트는 후기입 후보로서 표기될 수도 있다.
더티 마스크와 함께 어태치된 캐시 메모리 라인들을 적중시키는 임의의 기입 요청들은 대응하는 더티 마스크에 대한 업데이트를 야기시켜야 한다. 더티 마스크가 업데이트될 때, 검출 로직은 더티 마스크가 모두 1 인지를 검출할 수도 있다. 일단 더티 마스크가 모두 1 이어서, 특정 캐시 라인에서의 바이트들이 완전 더티임을 표시하면, 그것은 ID 를 무효한 것으로 설정함으로써 캐시 메모리 라인으로부터 어태치 해제될 수 있다. 이것은 캐시 메모리 라인이 "완전 더티" 임을 표시한다. 전체적인 캐시 메모리 라인들이 메모리 계층구조에서 다음의 최상위 메모리에 기입될 필요가 있을 때, 캐시 메모리 라인은 완전 더티이다. 다시 말해서, 메모리 계층구조에서 다음의 최상위 메모리가 최신의 것이 아니도록, 전체적인 캐시 메모리 라인이 기입되었을 때, 캐시 메모리 라인은 완전 더티이다. 각각의 캐시 메모리 라인은 특정 캐시 메모리 라인이 완전 더티인지를 표시하기 위하여 1-비트 "전체" 플래그를 이용할 수도 있다. 따라서, 완전 더티 개시 메모리 라인에 대하여, 그 더티 마스크는 완전히 기입되지 않은 또 다른 캐시 메모리 라인을 표시하기 위한 재할당을 위하여 이용가능할 수 있다. 캐시 메모리 라인의 완전 더티 상태는 완전 더티 플래그에 의해 표시될 수도 있다. 이와 같이, 더티 마스크는 그 캐시 메모리 라인을 위해 더 이상 필요하지 않다.
도 5 는 이 개시물의 기법들에 따라 일 예의 방법을 예시하는 플로우차트이다. 캐시 메모리 (14) 는 캐시 메모리에서 캐시 메모리 라인의 상태를 추적할 수도 있다 (400). 예를 들어, 캐시 제어기 (20) 는 캐시 메모리 (14) 에서 캐시 메모리 라인의 상태를 추적할 수도 있다. 이것은 예를 들어, 캐시 메모리 라인으로의 기입이 언제 그 특정 캐시 메모리 라인에서의 매 바이트로의 전체 기입이 아닌지를 표시하는 더티 플래그를 이용하여 행해질 수도 있다. 따라서, 캐시 메모리 라인으로의 기입이 발생하고, 기입이 그 특정 캐시 메모리 라인에서의 매 바이트로의 전체 기입이 아닐 때, 캐시 메모리 라인에서의 바이트들의 일부는 주 메모리 (16) 에서의 대응하는 메모리 로케이션 (들) 와는 상이할 수도 있다. 추가적으로, 캐시 메모리 라인에서의 바이트들의 일부는 주 메모리 (16) 에서의 대응하는 메모리 로케이션 (들) 와 동일할 수도 있다. 그러나, 동일한 캐시 메모리 라인으로의 추후의 기입들이 발생함에 따라, 궁극적으로, 전체적인 캐시 메모리 라인은 주 메모리 (16) 에서의 대응하는 메모리 로케이션 (들) 와는 상이할 수도 있다는 점이 이해될 것이다. 위에서 논의된 바와 같이, 최종 메모리 전송 후에 발생할 수도 있는 기입 또는 기입들은 일반적으로 캐시에서 저장된 데이터를, 대응하는 메모리 로케이션에서 저장되는 것으로부터 변경시킬 것이다. 그럼에도 불구하고, 프로세서 (12) 는 동일한 값들을 캐시 메모리로 기입하여 데이터가 기입 또는 기입들이 발생한 후에 실제적으로 변경되지 않는 것이 가능하다. 시스템은 일반적으로 데이터가 변경되었음을 확실히 하기 위하여 데이터를 실제로 검사하지는 않는다. 오히려, 시스템은 그와 같이 단지 추정하고, 기입된 것에 기초하여 적절한 더티 플래그, 예를 들어, 더티 또는 완전 더티를 표기한다. 예를 들어, 전체적인 캐시 메모리 라인으로의 기입이 발생할 수도 있거나, 캐시 메모리 라인으로의 다수의 기입들이 궁극적으로 캐시 메모리 라인에서의 각각의 바이트를 변경시킬 수도 있다.
그 캐시 메모리 라인으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닐 때, 캐시 메모리는 더티 마스크 공간 (18) 을 특정 캐시 메모리 라인에 할당할 수도 있다 (402). 예를 들어, 캐시 제어기 (20) 는 할당을 수행할 수도 있다. 캐시 제어기 (20) 는 캐시 메모리 (14) 의 일부이거나, 캐시 메모리 (14) 로부터 별도일 수도 있다는 점이 이해될 것이다. 따라서, 더티 마스크 공간 (18) 내의 더티 마스크들은 필요한 대로 캐시 메모리 라인들에 할당되고 캐시 메모리 라인들로부터 할당해제될 수도 있다. 각각의 캐시 라인에 대한 더티 마스크 공간이 아니라 더티 마스크 공간 (18) 을 이용하는 것은 더 적은 메모리를 요구할 수도 있다.
캐시 메모리는 더티 마스크 공간이 액세스될 수도 있도록 특정 캐시 메모리 라인에 어태치되는 할당된 더티 마스크 공간의 식별 (ID) 를 추적할 수도 있다 (404). 예를 들어, 캐시 제어기 (20) 는 ID 를 추적할 수도 있다. 따라서, ID 는 캐시 메모리 라인 및 할당된 더티 마스크 공간, 예를 들어, 더티 마스크 사이의 연결을 제공할 수도 있어서, 더티 마스크는 캐시 메모리 라인에서의 어느 바이트들이 더티이고 잠재적으로, 주 메모리 (16) 에서의 대응하는 바이트들과 동일한 데이터를 포함하지 않는지를 결정하기 위하여 이용될 수도 있다.
일부의 예들에서, 더티 마스크 공간 (18) 에서의 모든 더티 마스크들이 캐시 메모리 라인에 할당된 상태로 되고 추가적인 더티 마스크가 필요하게 될 경우, 예를 들어, 대응하는 캐시 메모리 라인이 완전 더티가 되기 전에, 하나가 할당해제될 수도 있다 (각각의 바이트는 주 메모리 (16) 에서의 대응하는 바이트와 상이함). 이것이 발생할 경우, 더티 마스크 공간 (108) 에서의 더티 마스크는 특정 캐시 메모리 라인으로부터 할당해제되도록 선택될 수도 있고, 캐시 메모리 라인에서의 데이터는 캐시 메모리 라인이 더 이상 더티가 아니도록, 주 메모리 (16) 에서의 대응하는 메모리에 다시 기입될 수도 있다.
본원에서 설명된 시스템들 및 방법들의 일부의 예들은 더티 마스크를 포함하는 일련의 캐시 메모리 라인들 중 하나에 대한 기입 요청이 발생하는 경우 더티 마스크 공간에서의 대응하는 더티 마스크에 대한 업데이트를 야기시킬 수도 있다. 추가적으로, 캐시는 이 캐시 메모리 라인이 퇴거될 때에 더티 마스크 공간이 액세스될 수도 있도록, 할당된 더티 마스크 공간의 ID 를 특정 캐시 메모리 라인에 어태치할 수도 있다. 캐시는 또한, 더티 버퍼 마스크가 일부의 예들에서 할당되는 특정 캐시 메모리 라인을 표시할 수도 있다. 캐시는 또한, 캐시 메모리 라인의 적어도 하나의 바이트가 주 메모리에서의 대응하는 바이트와 상이하다는 것을 표시할 수도 있다.
본원에서 설명된 다양한 예들은 캐시 메모리 (14) 가 다양한 작동들을 수행할 수도 있음을 표시할 수도 있다. 일부의 예들에서, 캐시 메모리 (14) 내부의 프로세서, 제어기, 또는 다른 로직 회로부는 이 작동들을 수행할 수도 있다는 점이 이해될 것이다. 다른 예들은, 캐시 메모리 (14) 내부에 있지 않지만 본원에서 설명된 기능들 중 하나 이상을 제어하는 프로세서, 제어기, 또는 다른 로직 회로부를 포함할 수도 있다. 따라서, 동적으로 할당된 더티 마스크 공간 기능성은 캐시 메모리 내부에서, 캐시 메모리 외부에서, 또는 이들의 일부의 조합으로 수행될 수도 있다. 그것은 하드웨어 회로부, 소프트웨어, 또는 이들의 일부의 조합에 의해 수행될 수도 있다.
도 6 은 이 개시물의 기법들에 따라 일 예의 방법을 예시하는 또 다른 플로우차트이다. 일 예의 시스템, 디바이스, 또는 장치는 일련의 캐시 메모리 라인들을 포함하는 캐시 메모리에 데이터를 기입할 수도 있다 (450). 각각의 캐시 메모리 라인은 완전 더티 플래그 및 더티 버퍼 인덱스를 포함할 수도 있다. 완전 더티 플래그는 캐시 메모리 라인이 "완전 더티" 임을 표시한다. 다시 말해서, 캐시 메모리 라인에서의 그 각각의 바이트는 주 메모리 (16) 에서의 대응하는 바이트와 상이하다.
더티 버퍼 인덱스는 더티 버퍼에 대한 어드레스 또는 인덱스를 포함할 수도 있다. 예를 들어, 더티 버퍼 인덱스는 더티 마스크들 중의 적어도 하나가 할당되는 적어도 하나의 로케이션으로의 적어도 하나의 포인터를 포함할 수도 있다. 또 다른 예에서, 더티 버퍼 인덱스는 복수의 더티 마스크들 중 하나가 할당되는 로케이션으로의 포인터를 포함한다. 더티 버퍼는 주 메모리 (16) 에서의 대응하는 바이트들과 상이한 바이트들을 표시한다.
일 예의 시스템, 디바이스, 또는 장치는 그 캐시 메모리 라인으로의 기입이 그 특정 캐시 메모리 라인으로의 전체 기입이 아닐 때, 더티 버퍼에서의 더티 마스크 공간을 특정 캐시 메모리 라인에 할당할 수도 있다 (452). 예를 들어, 일 예의 시스템, 디바이스, 또는 장치 내의 캐시 제어기 (20) 는 이러한 할당을 수행할 수도 있다. 일부의 예들에서, 캐시 제어기 (20) 는 캐시 메모리 (14) 의 일부일 수도 있다. 다른 예들에서, 그것은 별도의 디바이스일 수도 있다. 추가적으로, 할당된 더티 마스크 공간의 식별 (ID) 는 더티 마스크 공간이 액세스될 수도 있도록 특정 캐시 메모리 라인에 어태치된다.
예에 따라서는, 본원에서 설명된 기법들 중의 임의의 것의 어떤 액트 (act) 들 또는 이벤트 (event) 들이 상이한 시퀀스에서 수행될 수 있거나, 추가될 수도 있거나, 병합될 수도 있거나, 또는 모두 배제 (예를 들어, 모든 설명된 액트들 또는 이벤트들이 기법들의 실시를 위해 필요한 것은 아님) 될 수도 있다는 것을 인식해야 한다. 또한, 어떤 예들에서는, 액트들 또는 이벤트들이 순차적인 것이 아니라, 예를 들어, 멀티-스레딩된 (multi-threaded) 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 예들에서는, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현될 경우, 기능들은 하나 이상의 명령들 또는 코드로서, 컴퓨터 판독가능 매체 상에 저장되거나 컴퓨터 판독가능 매체를 통해 송신될 수도 있고, 하드웨어-기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들, 또는 예를 들어, 통신 프로토콜에 따라 하나의 장소로부터 또 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적 유형의 컴퓨터 판독가능 저장 매체들, 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 이 개시물에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한이 아닌 예로서, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 희망하는 프로그램 코드를 저장하기 위해 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속은 컴퓨터 판독가능 매체라고 적절하게 칭해진다. 예를 들어, 동축 케이블, 광섬유 케이블, 트위스트 페어 (twisted pair), 디지털 가입자 회선 (digital subscriber line; DSL), 또는 무선 기술들 예컨대, 적외선, 라디오 (radio), 및 마이크로파 (microwave) 를 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신될 경우, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL, 또는 무선 기술들 예컨대, 적외선, 라디오, 및 마이크로파는 매체의 정의 내에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 접속들, 반송파들, 신호들, 또는 다른 일시적인 매체들을 포함하는 것이 아니라, 그 대신에, 비일시적, 유형의 저장 매체들에 관한 것이라는 것을 이해해야 한다. 본원에서 이용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광학 디스크 (optical disc), 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크 (Blu-ray disc) 를 포함하고, 여기서 디스크 (disk) 들은 통상 데이터를 자기적으로 재생하는 반면, 디스크 (disc) 들은 데이터를 레이저들로 광학적으로 재생한다. 상기의 조합들은 컴퓨터 판독가능 매체들의 범위 내에 또한 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서 (digital signal processor; DSP) 들, 범용 마이크로프로세서들, 주문형 집적 회로 (application specific integrated circuit; ASIC) 들, 필드 프로그래밍가능한 로직 어레이 (field programmable logic array; FPGA) 들, 또는 다른 등가의 통합된 또는 별개의 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 본원에서 이용된 바와 같은 용어 "프로세서" 는 상기한 구조, 또는 본원에서 설명된 기법들의 구현을 위해 적당한 임의의 다른 구조 중의 임의의 것을 지칭할 수도 있다. 추가적으로, 일부의 양태들에서는, 본원에서 설명된 기능성이 인코딩 및 디코딩을 위해 구성되거나 조합된 코덱 (codec) 내에 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에서 제공될 수도 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
이 개시물의 기법들은 무선 핸드셋 (wireless handset), 집적 회로 (integrated circuit; IC) 또는 IC 들의 세트 (예를 들어, 칩셋) 를 포함하는 광범위한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위하여 이 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛 내에 조합될 수도 있거나, 적당한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는 상호동작하는 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이러한 그리고 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (52)

  1. 캐시 메모리 시스템으로서,
    복수의 캐시 메모리 라인들을 포함하는 캐시 메모리;
    복수의 더티 마스크들을 포함하는 더티 버퍼; 및
    캐시 제어기를 포함하고,
    상기 캐시 제어기는,
    각각의 캐시 메모리 라인으로의 기입이 전체 기입이 아닌 경우, 상기 각각의 캐시 메모리 라인에서의 데이터 유닛들의 더티 상태들을 표시하는 상기 복수의 더티 마스크들 중 하나를 상기 각각의 캐시 메모리 라인에 할당하고,
    상기 복수의 더티 마스크들 중 상기 하나를, 상기 복수의 더티 마스크들 중 상기 하나가 할당되는 상기 각각의 캐시 메모리 라인과 연관시키는 식별 (identification; ID) 정보를 저장하며,
    상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티인 경우 상기 각각의 캐시 메모리 라인으로부터 상기 복수의 더티 마스크들 중 상기 하나를 할당해제하고,
    상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티가 아닌 경우 상기 각각의 캐시 메모리 라인으로부터 상기 복수의 더티 마스크들 중 상기 하나를 할당해제하도록 구성된, 캐시 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 복수의 캐시 메모리 라인들 각각은,
    상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티인 때를 표시하는 완전 더티 플래그를 저장하는 로케이션; 및
    상기 ID 정보를 저장하기 위한 더티 버퍼 인덱스를 저장하는 로케이션을 포함하는, 캐시 메모리 시스템.
  3. 제 2 항에 있어서,
    상기 복수의 캐시 메모리 라인들 각각은,
    주 메모리로부터의 데이터의 최종 기입 이후로 상기 각각의 캐시 메모리 라인의 적어도 하나의 데이터 유닛이 기입되었음을 표시하는 더티 플래그를 저장하는 로케이션을 더 포함하는, 캐시 메모리 시스템.
  4. 제 3 항에 있어서,
    상기 주 메모리로부터의 데이터의 최종 기입 이후로 상기 각각의 캐시 메모리 라인의 적어도 하나의 데이터 유닛이 기입되었음을 표시하는 상기 더티 플래그는 1-비트 플래그를 포함하는, 캐시 메모리 시스템.
  5. 제 2 항에 있어서,
    상기 완전 더티 플래그는 1-비트 플래그를 포함하는, 캐시 메모리 시스템.
  6. 제 2 항에 있어서,
    상기 더티 버퍼 인덱스는 상기 더티 마스크가 할당되는 상기 각각의 캐시 메모리 라인을 표시하는 더티 마스크에 대한 어드레스를 제공하는, 캐시 메모리 시스템.
  7. 제 2 항에 있어서,
    상기 더티 버퍼 인덱스는 상기 더티 버퍼에서의 더티 마스크의 로케이션으로의 포인터를 포함하는, 캐시 메모리 시스템.
  8. 제 1 항에 있어서,
    상기 캐시 제어기는 또한, 상기 각각의 캐시 메모리 라인에 대한 기입 요청이 발생하는 경우 상기 각각의 캐시 메모리 라인에 할당된 상기 복수의 더티 마스크들 중 상기 하나에 대한 업데이트를 야기시키도록 구성되는, 캐시 메모리 시스템.
  9. 제 1 항에 있어서,
    상기 더티 버퍼는 상기 캐시 메모리의 부분을 포함하는, 캐시 메모리 시스템.
  10. 제 1 항에 있어서,
    상기 더티 버퍼는 상기 캐시 메모리로부터의 별도의 메모리를 포함하는, 캐시 메모리 시스템.
  11. 제 1 항에 있어서,
    상기 캐시 메모리에 커플링된 프로세서 및 상기 프로세서에 커플링된 주 메모리를 더 포함하고, 상기 프로세서는 상기 캐시 메모리 및 상기 주 메모리에 대해 데이터를 판독 및 기입하도록 구성되는, 캐시 메모리 시스템.
  12. 메모리 시스템을 동작시키는 방법으로서,
    복수의 캐시 메모리 라인들을 포함하는 캐시 메모리에 데이터를 기입하는 단계;
    각각의 캐시 메모리 라인으로의 기입이 전체 기입이 아닌 경우, 상기 각각의 캐시 메모리 라인에서의 데이터 유닛들의 더티 상태를 표시하는 복수의 더티 마스크들 중 하나를 상기 복수의 캐시 메모리 라인들의 상기 각각의 캐시 메모리 라인에 할당하는 단계;
    상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티인 경우 상기 각각의 캐시 메모리 라인으로부터 상기 복수의 더티 마스크들 중 상기 하나를 할당해제하는 단계;
    상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티가 아닌 경우 상기 각각의 캐시 메모리 라인으로부터 상기 복수의 더티 마스크들 중 상기 하나를 할당해제하는 단계; 및
    상기 복수의 더티 마스크들 중 상기 하나를, 상기 복수의 더티 마스크들 중 상기 하나가 할당되는 상기 각각의 캐시 메모리 라인과 연관시키는 식별 (ID) 정보를 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  13. 제 12 항에 있어서,
    상기 복수의 캐시 메모리 라인들 각각은,
    상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티인 때를 표시하는 완전 더티 플래그를 저장하는 로케이션; 및
    상기 ID 정보를 저장하기 위한 더티 버퍼 인덱스를 저장하는 로케이션을 포함하는, 메모리 시스템을 동작시키는 방법.
  14. 제 12 항에 있어서,
    상기 복수의 더티 마스크들 중 상기 하나를 포함하는 상기 각각의 캐시 메모리 라인에 대한 기입 요청이 발생하는 경우 상기 복수의 더티 마스크들 중 상기 하나에 대한 업데이트를 야기시키는 단계를 더 포함하는, 메모리 시스템을 동작시키는 방법.
  15. 제 12 항에 있어서,
    주 메모리로부터의 데이터의 최종 기입 이후로 상기 각각의 캐시 메모리 라인의 적어도 하나의 데이터 유닛이 기입되었음을 표시하는 단계를 더 포함하는, 메모리 시스템을 동작시키는 방법.
  16. 제 12 항에 있어서,
    상기 각각의 캐시 메모리 라인이 완전 더티임을 표시하는 단계를 더 포함하는, 메모리 시스템을 동작시키는 방법.
  17. 제 12 항에 있어서,
    상기 복수의 더티 마스크들 중 상기 하나가 할당되는 상기 각각의 캐시 메모리 라인을 표시하는 단계를 더 포함하는, 메모리 시스템을 동작시키는 방법.
  18. 시스템으로서,
    프로세서;
    상기 프로세서에 커플링된 주 메모리; 및
    상기 프로세서에 커플링된 캐시 메모리를 포함하고,
    상기 캐시 메모리는,
    캐시 제어기;
    복수의 캐시 메모리 라인들; 및
    복수의 더티 마스크들을 포함하는 더티 버퍼를 포함하며,
    상기 캐시 제어기는 각각의 캐시 메모리 라인으로의 기입이 전체 기입이 아닌 경우, 상기 각각의 캐시 메모리 라인에서의 데이터 유닛들의 더티 상태를 표시하는 상기 복수의 더티 마스크들 중 하나를 상기 복수의 캐시 메모리 라인들 중 상기 각각의 캐시 메모리 라인에 할당하도록 구성되고;
    상기 캐시 제어기는 상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티인 경우 상기 각각의 캐시 메모리 라인으로부터 상기 복수의 더티 마스크들 중 상기 하나를 할당해제하도록 구성되고;
    상기 캐시 제어기는 상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티가 아닌 경우 상기 각각의 캐시 메모리 라인으로부터 상기 복수의 더티 마스크들 중 상기 하나를 할당해제하도록 구성되며,
    상기 캐시 제어기는 상기 복수의 더티 마스크들 중 상기 하나를, 상기 복수의 더티 마스크들 중 상기 하나가 할당되는 상기 각각의 캐시 메모리 라인과 연관시키는 식별 (ID) 정보를 저장하도록 구성되는, 시스템.
  19. 제 18 항에 있어서,
    상기 캐시 메모리 라인들 각각은,
    상기 각각의 캐시 메모리 라인에서의 상기 데이터 유닛들 각각이 더티인 때를 표시하는 완전 더티 플래그를 저장하는 로케이션; 및
    상기 ID 정보를 저장하기 위한 더티 버퍼 인덱스를 저장하는 로케이션을 포함하는, 시스템.
  20. 제 19 항에 있어서,
    상기 캐시 메모리 라인들 각각은 상기 각각의 캐시 메모리 라인의 적어도 하나의 데이터 유닛이 상기 주 메모리에서의 대응하는 데이터 유닛과 상이함을 표시하는 더티 플래그를 저장하는 로케이션을 더 포함하는, 시스템.
  21. 제 19 항에 있어서,
    상기 더티 버퍼 인덱스는 상기 복수의 더티 마스크들 중 상기 하나가 할당되는 상기 각각의 캐시 메모리 라인을 표시하는 상기 복수의 더티 마스크들 중 상기 하나에 대한 어드레스를 제공하는, 시스템.
  22. 제 18 항에 있어서,
    상기 캐시 제어기는 또한, 상기 복수의 더티 마스크들 중 상기 하나를 포함하는 상기 각각의 캐시 메모리 라인에 대한 기입 요청이 발생하는 경우 상기 복수의 더티 마스크들 중 상기 하나에 대한 업데이트를 야기시키도록 구성되는, 시스템.
  23. 제 18 항에 있어서,
    상기 캐시 제어기는 상기 각각의 캐시 메모리 라인에서의 로케이션에 상기 각각의 캐시 메모리 라인에 대한 상기 ID 정보를 저장하도록 구성되는, 시스템.
  24. 제 18 항에 있어서,
    상기 더티 버퍼는 상기 캐시 메모리의 부분을 포함하는, 시스템.
  25. 제 18 항에 있어서,
    상기 더티 버퍼는 상기 캐시 메모리로부터의 별도의 메모리를 포함하는, 시스템.
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
KR1020157016404A 2012-11-28 2013-10-28 동적으로 할당된 더티 마스크 공간을 이용한 메모리 관리 KR101662969B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/687,761 US9342461B2 (en) 2012-11-28 2012-11-28 Cache memory system and method using dynamically allocated dirty mask space
US13/687,761 2012-11-28
PCT/US2013/067111 WO2014085002A1 (en) 2012-11-28 2013-10-28 Memory management using dynamically allocated dirty mask space

Publications (2)

Publication Number Publication Date
KR20150091101A KR20150091101A (ko) 2015-08-07
KR101662969B1 true KR101662969B1 (ko) 2016-10-05

Family

ID=49551817

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157016404A KR101662969B1 (ko) 2012-11-28 2013-10-28 동적으로 할당된 더티 마스크 공간을 이용한 메모리 관리

Country Status (6)

Country Link
US (1) US9342461B2 (ko)
EP (1) EP2926257B1 (ko)
JP (1) JP6009688B2 (ko)
KR (1) KR101662969B1 (ko)
CN (1) CN104813293B (ko)
WO (1) WO2014085002A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160026579A1 (en) * 2014-07-22 2016-01-28 Lsi Corporation Storage Controller and Method for Managing Metadata Operations in a Cache
KR102362239B1 (ko) 2015-12-30 2022-02-14 삼성전자주식회사 디램 캐시를 포함하는 메모리 시스템 및 그것의 캐시 관리 방법
US10585798B2 (en) * 2017-11-27 2020-03-10 Intel Corporation Tracking cache line consumption
US10705590B2 (en) 2017-11-28 2020-07-07 Google Llc Power-conserving cache memory usage
US11099987B2 (en) * 2019-11-27 2021-08-24 Micron Technology, Inc. Bit masking valid sectors for write-back coalescing
KR20220030440A (ko) * 2020-08-31 2022-03-11 삼성전자주식회사 전자 장치, 시스템-온-칩, 및 그것의 동작 방법
JP7350699B2 (ja) * 2020-09-11 2023-09-26 株式会社東芝 ライトバックキャッシュ装置
CN112835532A (zh) * 2021-02-25 2021-05-25 上海壁仞智能科技有限公司 用于缓存控制的方法以及计算装置
US11681631B2 (en) 2021-06-25 2023-06-20 Microsoft Technology Licensing, Llc Write-behind optimization of covering cache

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010055494A1 (en) 2008-11-17 2010-05-20 Nxp B.V. A cache management policy and corresponding device
US20120246410A1 (en) 2011-03-24 2012-09-27 Kabushiki Kaisha Toshiba Cache memory and cache system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155824A (en) * 1989-05-15 1992-10-13 Motorola, Inc. System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address
US5802572A (en) * 1996-03-15 1998-09-01 International Business Machines Corporation Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
JP3204295B2 (ja) * 1997-03-31 2001-09-04 日本電気株式会社 キャッシュメモリシステム
US6205521B1 (en) 1997-11-03 2001-03-20 Compaq Computer Corporation Inclusion map for accelerated cache flush
JP4434534B2 (ja) * 2001-09-27 2010-03-17 株式会社東芝 プロセッサ・システム
US7203798B2 (en) 2003-03-20 2007-04-10 Matsushita Electric Industrial Co., Ltd. Data memory cache unit and data memory cache system
US7127560B2 (en) * 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
JP4009306B2 (ja) 2003-11-18 2007-11-14 松下電器産業株式会社 キャッシュメモリおよびその制御方法
EP1698978A4 (en) 2003-12-22 2008-11-05 Matsushita Electric Ind Co Ltd CACHE MEMORY AND CONTROL PROCEDURE THEREFOR
CN100445944C (zh) * 2004-12-21 2008-12-24 三菱电机株式会社 控制电路以及控制方法
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
US7380070B2 (en) 2005-02-17 2008-05-27 Texas Instruments Incorporated Organization of dirty bits for a write-back cache
US20060274070A1 (en) 2005-04-19 2006-12-07 Herman Daniel L Techniques and workflows for computer graphics animation system
US8180968B2 (en) * 2007-03-28 2012-05-15 Oracle America, Inc. Reduction of cache flush time using a dirty line limiter
US7917699B2 (en) 2007-12-21 2011-03-29 Mips Technologies, Inc. Apparatus and method for controlling the exclusivity mode of a level-two cache
JP2011248389A (ja) * 2008-09-09 2011-12-08 Panasonic Corp キャッシュメモリ、キャッシュメモリシステム
TW201015319A (en) * 2008-09-17 2010-04-16 Panasonic Corp Cache memory, memory system, data copying method and data rewriting method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010055494A1 (en) 2008-11-17 2010-05-20 Nxp B.V. A cache management policy and corresponding device
US20120246410A1 (en) 2011-03-24 2012-09-27 Kabushiki Kaisha Toshiba Cache memory and cache system

Also Published As

Publication number Publication date
JP2015535631A (ja) 2015-12-14
US20140149685A1 (en) 2014-05-29
JP6009688B2 (ja) 2016-10-19
CN104813293B (zh) 2017-10-31
CN104813293A (zh) 2015-07-29
US9342461B2 (en) 2016-05-17
WO2014085002A1 (en) 2014-06-05
EP2926257B1 (en) 2019-06-26
EP2926257A1 (en) 2015-10-07
KR20150091101A (ko) 2015-08-07

Similar Documents

Publication Publication Date Title
KR101662969B1 (ko) 동적으로 할당된 더티 마스크 공간을 이용한 메모리 관리
TWI522802B (zh) 確保微處理器之快取記憶體層級之資料一致性的裝置與方法
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US7461209B2 (en) Transient cache storage with discard function for disposable data
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US8838906B2 (en) Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US5418927A (en) I/O cache controller containing a buffer memory partitioned into lines accessible by corresponding I/O devices and a directory to track the lines
US6195729B1 (en) Deallocation with cache update protocol (L2 evictions)
US20060155934A1 (en) System and method for reducing unnecessary cache operations
JP2005528695A (ja) キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置
US20070168617A1 (en) Patrol snooping for higher level cache eviction candidate identification
JP2005528694A (ja) スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置
US7809889B2 (en) High performance multilevel cache hierarchy
JP2006277762A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
US20070288694A1 (en) Data processing system, processor and method of data processing having controllable store gather windows
US8112589B2 (en) System for caching data from a main memory with a plurality of cache states
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
KR20190058318A (ko) 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
US7197605B2 (en) Allocating cache lines
CN112513825A (zh) 混合精确和不精确的缓存侦听过滤
US6516387B1 (en) Set-associative cache having a configurable split and unified mode
US5287482A (en) Input/output cache
KR100505695B1 (ko) 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법
JP2019537162A (ja) 非割り当てキャッシュポリシー
KR20020095875A (ko) 멀티 레벨 캐쉬 시스템

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant