KR101414035B1 - 저장 효율적인 섹터형 캐시 - Google Patents

저장 효율적인 섹터형 캐시 Download PDF

Info

Publication number
KR101414035B1
KR101414035B1 KR1020127030081A KR20127030081A KR101414035B1 KR 101414035 B1 KR101414035 B1 KR 101414035B1 KR 1020127030081 A KR1020127030081 A KR 1020127030081A KR 20127030081 A KR20127030081 A KR 20127030081A KR 101414035 B1 KR101414035 B1 KR 101414035B1
Authority
KR
South Korea
Prior art keywords
data
sector
array
block
processor
Prior art date
Application number
KR1020127030081A
Other languages
English (en)
Other versions
KR20130018412A (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 KR20130018412A publication Critical patent/KR20130018412A/ko
Application granted granted Critical
Publication of KR101414035B1 publication Critical patent/KR101414035B1/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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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

Abstract

특정 블록의 특정 섹터 내의 특정 데이터를 메모리로부터 캐시로 복사하기 위한 시스템에 대한 기술이 일반적으로 설명된다. 일부 예시에서, 캐시는 태그 어레이 및 데이터 어레이를 포함한다. 일부 예시에서, 프로세서는 특정 섹터 내의 데이터를 메모리로부터 시작 섹터에서 시작하는 데이터 어레이의 웨이로 복사하도록 구성될 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 특정 섹터를 식별하도록 구성될 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 데이터 어레이 내의 웨이를 식별하도록 구성될 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여, 시작 섹터를 식별하도록 구성될 수 있다.

Description

저장 효율적인 섹터형 캐시{STORAGE EFFICIENT SECTORED CACHE}
여기에서 달리 언급하지 않으면, 본 섹션에서 기술된 내용은 본 출원에서의 청구항의 선행 기술이 아니며 본 섹션에 포함한 것에 의해 선행 기술로서 인정된 것이 아니다.
캐시(cache)는 프로세서들이나 프로세서 코어들 중 하나 이상에 의한 접근을 위하여 데이터를 저장하는데 사용될 수 있다. 데이터는 보통 캐시와 함께 칩의 바깥쪽에 배치되는 보다 대용량의 메모리에 저장된 데이터의 사본(copy)일 수 있다. 캐시에서, 데이터의 사본은 데이터 어레이(data array)에 저장될 수 있다. 태그 어레이(tag array)는 데이터 어레이에 저장된 데이터의 인덱스(index)를 유지할 수 있다. 프로세서는 어드레스(address)를 식별함으로써 캐시에 저장된 특정 데이터를 요청할 수 있다. 어드레스는 태그 어레이 내의 어드레스와 비교되어 특정 데이터의 사본이 캐시의 데이터 어레이에 저장되어 있는지를 결정한다.
일 예시에서, 특정 블록(block)의 특정 섹터(sector) 내의 특정 데이터를 메모리로부터 캐시로 복사하기 위한 방법이 설명된다. 일부 예시에서, 캐시는 태그 어레이 및 데이터 어레이를 포함할 수 있다. 일부 예시에서, 방법은, 프로세서에 의하여, 특정 섹터 내의 특정 데이터를 메모리로부터 시작 섹터(start sector)에서 시작하는 데이터 어레이의 웨이(way)로 복사하는 단계를 포함할 수 있다. 일부 예시에서, 방법은, 프로세서에 의하여, 태그 어레이를 갱신하여 특정 섹터를 식별하는 단계를 더 포함할 수 있다. 일부 예시에서, 방법은, 프로세서에 의하여, 태그 어레이를 갱신하여 데이터 어레이 내의 웨이를 식별하는 단계를 더 포함할 수 있다. 일부 예시에서, 방법은, 프로세서에 의하여, 태그 어레이를 갱신하여 시작 섹터를 식별하는 단계를 더 포함할 수 있다.
다른 예시에서, 특정 블록의 특정 섹터 내의 특정 데이터를 복사하기 위한 시스템이 설명된다. 일부 예시에서, 시스템은 태그 어레이 및 데이터 어레이를 포함하는 캐시를 포함한다. 일부 예시에서, 시스템은 메모리와, 캐시 및 메모리와 통신하도록 구성된 프로세서를 더 포함한다. 일부 예시에서, 프로세서는 특정 섹터 내의 특정 데이터를 메모리로부터 시작 섹터에서 시작하는 데이터 어레이의 웨이로 복사하는데에 유효할 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 특정 섹터를 식별하는데 추가적으로 유효할 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 데이터 어레이의 웨이를 식별하는데 추가적으로 유효할 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 시작 섹터를 식별하는데 추가적으로 유효할 수 있다.
또 다른 예시에서, 어드레스에 기초하여 캐시 내에 저장된 특정 섹터 내의 특정 데이터의 사본을 읽어 오기(retrieve) 위한 방법이 기술된다. 일부 예시에서, 어드레스는 태그 필드(tag field), 세트 인덱스 필드(set index field) 및 섹터 인덱스 필드(sector index field)를 포함한다. 일부 예시에서, 캐시는 태그 어레이 및 데이터 어레이를 포함한다. 일부 예시에서, 방법은, 프로세서에 의하여, 세트 인덱스 필드 내의 식별된 세트 내에서, 태그 필드 내의 제1 태그 데이터를 태그 어레이 내의 다른 태그 필드 내의 제2 태그 데이터와 비교하여 매칭 태그(matching tag)를 생산하는 단계를 포함한다. 일부 예시에서, 매칭 태그는 태그 구조로 있다. 일부 예시에서, 태그 구조는 섹터 비트 벡터 필드(sector bit vector field), 웨이 필드 및 시작 섹터 필드를 포함한다. 일부 예시에서, 방법은, 프로세서에 의하여, 태그 구조의 섹터 비트 벡터 필드 내의 섹터 비트 벡터 데이터를 어드레스의 섹터 인덱스 필드 내의 데이터와 비교하여, 특정 섹터 내의 특정 데이터의 사본이 캐시에 저장되어 있다고 결정하는 단계를 더 포함한다. 일부 예시에서, 방법은, 프로세서에 의하여, 웨이 필드 내의 데이터를 분석하여 특정 섹터 내의 특정 데이터의 사본이 저장되는 데이터 어레이 내의 웨이를 결정하는 단계를 더 포함한다. 일부 예시에서, 방법은, 프로세서에 의하여, 시작 섹터 필드 내의 데이터를 분석하여 특정 섹터 내의 특정 데이터의 사본이 저장되는 데이터 어레이 내의 시작 섹터를 결정하는 단계를 더 포함한다. 일부 예시에서, 방법은, 프로세서에 의하여, 데이터 어레이의 웨이, 세트 및 시작 섹터에서 특정 데이터의 사본을 읽어오는 단계를 더 포함한다.
전술한 요약은 예시적인 것일 뿐이고, 어떤 방식으로든 제한을 의도한 것은 아니다. 상술한 예시적인 태양, 실시예 및 특징들에 더하여, 추가의 태양, 실시예 및 특징들은 도면과 이하의 상세한 설명을 참조함으로써 분명하게 될 것이다.
도 1은 저장 효율적인 섹터형 캐시를 구현하는데 활용될 수 있는 예시적인 시스템을 도시하고;
도 2는 저장 효율적인 섹터형 캐시를 구현하는데 활용될 수 있는 예시적인 시스템을 도시하고;
도 3은 저장 효율적인 섹터형 캐시를 구현하기 위한 예시적인 프로세스에 대한 흐름도를 도시하고;
도 4는 저장 효율적인 섹터형 캐시를 구현하기 위한 예시적인 컴퓨터 프로그램 제품을 도시하며;
도 5는 저장 효율적인 섹터형 캐시를 구현하도록 배열되는 예시적인 컴퓨팅 장치를 도시하는 블록도이고;
모두 여기에서 제시된 적어도 일부의 실시예에 따라 배열된다.
이하의 상세한 설명에서, 여기의 일부를 구성하는 첨부 도면에 대한 참조가 이루어진다. 도면에서, 유사한 부호는, 문맥에서 다른 지시가 없다면, 일반적으로 유사한 구성요소를 식별한다. 상세한 설명, 도면, 및 청구항에서 기술된 실시예들은 제한하는 것으로 의미되지 않는다. 여기에 제시된 대상의 범위와 사상을 벗어나지 않고, 다른 실시예가 이용될 수 있고, 다른 변형이 이루어질 수 있다. 여기에서 일반적으로 기술되고 도면에서 도시된 바와 같은 본 개시의 태양들이 다양한 다른 구성으로 배열, 대체, 조합, 분리, 및 설계될 수 있음과, 이 모두가 여기에서 명확히 고려됨이 쉽게 이해될 것이다.
본 개시는 일반적으로, 그 중에서도 특히, 저장 효율적인 섹터형 캐시를 구현하는 것에 관련된 방법, 기기, 시스템, 장치 및 컴퓨터 프로그램 제품에 관련된다.
간단히 말하자면, 특정 블록의 특정 섹터 내의 특정 데이터를 메모리로부터 캐시로 복사하기 위한 시스템에 대한 기술이 일반적으로 설명된다. 일부 예시에서, 캐시는 태그 어레이 및 데이터 어레이를 포함한다. 일부 예시에서, 프로세서는 특정 섹터 내의 데이터를 메모리로부터 시작 섹터에서 시작하는 데이터 어레이의 웨이로 복사하도록 구성될 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 특정 섹터를 식별하도록 구성될 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 데이터 어레이 내의 웨이를 식별하도록 구성될 수 있다. 일부 예시에서, 프로세서는 태그 어레이를 갱신하여 시작 섹터를 식별하도록 구성될 수 있다.
도 1은 여기에서 제시된 적어도 일부 실시예에 따라 배열된 저장 효율적인 섹터형 캐시를 구현하는데 활용될 수 있는 예시적인 시스템을 도시한다. 예시적인 시스템(100)은 캐시(112) 및 메모리(154)와 통신하도록 구성된 프로세서(102)를 포함할 수 있다. 캐시(112)는 태그 어레이(106) 및 데이터 어레이(104)를 포함할 수 있다. 일부 예시에서, 데이터 어레이(104)는 DRAM(동적 랜덤 액세스 메모리(dynamic random access memory))을 이용하여 구현될 수 있고, 태그 어레이(106)는 SRAM(정적 랜덤 액세스 메모리(static random access memory)) 또는 DRAM을 이용하여 구현될 수 있다.
태그 어레이(106)는 다수의 웨이 또는 열(column)(108) 및 다수의 세트 또는 행(row)(110)으로 배열된 다수의 태그 구조(116)를 포함하도록 구성될 수 있다. 일부 예시에서, 데이터 어레이(104)는 동일한 수의 세트(110) 및 상이한 수의 웨이(114)로 배열된 다수의 캐시 라인(cache line)(118)을 포함하도록 구성될 수 있다. 예컨대, 도시된 바와 같이, 태그 어레이(106) 및 데이터 어레이(104)는 둘 다 N 세트를 포함할 수 있다. 도시된 예시에서, 태그 어레이(106)는 8개의 웨이를 포함하고 데이터 어레이(104)는 4개의 웨이를 포함한다.
이하에서 더 상세히 설명되는 바와 같이, 태그 구조(116)는 (매핑하는 화살표(124)에 의해 예시된 바와 같이) 매핑(mapping) 또는 인덱싱(indexing)하도록 구성될 수 있고, 섹터(120, 122)는 데이터 어레이(104)에 저장된 데이터를 포함할 수 있다. 섹터(120, 122)는 메모리(154) 내의 별개의 데이터 블록으로부터의 데이터의 사본을 포함할 수 있다. 프로세서(102)는 데이터를 데이터 어레이(104)의 캐시 라인(118)에 저장하고 태그 구조(116)를 태그 어레이(106)에 저장하도록 구성될 수 있다. 별개의 데이터 블록으로부터의 데이터가 하나의 캐시 라인에 저장되는 예시에서, 태그 구조(116)는 데이터가 데이터 어레이(104)에 저장되는 세트, 웨이(열) 및 시작 섹터의 위치를 나타내도록 구성될 수 있다. 마찬가지로, 프로세서(102)는 어드레스를 생성하고 어드레스를 태그 어레이(106) 내의 태그 구조(116)와 비교함으로써 데이터 어레이(104)에 저장된 데이터에 대한 요청을 생성하도록 구성될 수 있다. 다른 이점들 중에서도, 다수의 별개 블록으로부터의 데이터의 사본을 동일한 캐시 라인에 저장하고 인덱싱함으로써, 효율적인 캐시 저장 장치가 실현될 수 있다.
도 2는 여기에서 제시된 적어도 일부 실시예에 따라 배열된 저장 효율적인 섹터형 캐시를 구현하는데 활용될 수 있는 예시적인 시스템을 도시한다. 도 2는 실질적으로 시스템(100)과 유사하며, 추가적인 세부사항이 있다. 도 1의 컴포넌트와 동일하게 표시되는 도 2에서의 컴포넌트들은 명확성을 위하여 다시 설명되지 않을 것이다.
도 2에서 도시된 바와 같이, 프로세서(102)는 캐시(112)에 저장될 수 있는 데이터의 위치를 식별하는 어드레스(126)를 생성하도록 구성될 수 있다. 어드레스(126)는 태그(128), 세트 인덱스(130), 섹터 인덱스(132) 및 섹터 오프셋(sector offset)(134)과 같은 필드들을 포함할 수 있다. 태그 어레이 내의 각각의 태그 구조(116)는 태그(136), 스테이트(state)(138), 섹터 비트 벡터(140), 웨이(142), 시작 섹터(144) 및/또는 길이(145)와 같은 필드들을 포함하도록 구성될 수 있다. 이러한 필드들의 일부 용도는 이하에서 설명될 것이다. 데이터 어레이(104) 내의 각각의 캐시 라인(118)은 146, 148, 150 및 152에서 도시된 바와 같이 M 섹터를 포함하도록 구성될 수 있다. 일부 예시에서, 64섹터가 캐시 라인(118)에서 사용될 수 있다.
프로세서(102)가 특정 블록의 특정 섹터 내의 특정 데이터를 요청하는 예시에서, 프로세서(102)는 특정 데이터에 대한 어드레스(126)를 생성하도록 구성될 수 있다. 어드레스(126) 중 세트 인덱스(130)는 프로세서(102)가 태그 필드(128) 내에서 식별된 태그에 대하여 태그 어레이(106) 내에서 판독할 수 있는 세트 또는 행을 나타낼 수 있다. 도시된 예시에서, 세트(S2)가 어드레스(126)에서 식별된다. 예시에서, 세트가 식별되면, 프로세서(102)는 태그 필드(128) 내에서 식별되는 태그에 대하여 세트(S2) 내의 웨이(열) 내에서 태그를 비교하도록 구성될 수 있다. 태그 필드(128) 내의 데이터와 세트(S2) 내의 웨이 중 임의의 하나에서의 태그 필드(136) 내의 데이터 간에 매칭이 없으면, 프로세서(102)는 블록 미스(block miss)가 있다고 결정하도록 구성될 수 있다. 요청된 데이터의 섹터 내의 데이터는 이후 메모리(154)로부터 읽어올 수 있고 교체 정책(replacement policy)에 의하여 정의된 위치에서 캐시(112)에 저장될 수 있다. 예컨대, 가장 오래된 타임 스탬프(time stamp)가 있는 데이터, 정의된 기간 내에 액세스되지 않은 데이터 또는 최저 사용 빈도의(least recently used) 데이터가 요청된 데이터의 사본으로 겹쳐쓰기(overwritten) 될 수 있다.
프로세서(102)가 태그 필드(128) 내의 데이터 및 태그 필드(136) 중 하나에서의 데이터 간의 매칭을 결정하는 예시에서, 프로세서(102)는 스테이트 필드(138) 내의 데이터를 판독하도록 구성될 수 있다. 스테이트 필드(138) 내의 데이터는 캐시 일관성 프로토콜(cache coherence protocol)에 비추어 데이터의 스테이트가 유효한지를 나타낼 수 있다. 스테이트가 유효하지 않으면, 프로세서(102)는 캐시 미스가 발생했다고 결정하도록 구성될 수 있다. 스테이트가 유효하면, 프로세서(102)는 섹터 인덱스 필드(132) 내의 데이터를 섹터 비트 벡터 필드(140) 내의 데이터와 비교하여 특정 섹터 내의 데이터의 사본이 데이터 어레이(104)에 저장되어 있는지를 결정하도록 구성될 수 있다. 예컨대, 섹터 비트 벡터(140) 내의 비트는 특정 섹터 내의 데이터의 사본이 데이터 어레이(104)에 저장되어 있는지를 나타낼 수 있다. 섹터 비트 벡터(140) 내의 데이터가 특정 섹터 내의 데이터의 사본이 데이터 어레이(104)에 저장되어 있지 않는다는 것을 나타내면, 프로세서(102)는 섹터 미스가 있다고 결정하도록 구성될 수 있다. 섹터 미스에 응답하여, 프로세서(102)는 특정 섹터 내의 데이터를 메모리(154)로부터 읽어오고 이를 (여기에서 논의된) 교체 정책에 기초하여 캐시(112)에 복사하도록 구성될 수 있다.
특정 섹터 내의 데이터의 사본이 캐시(112)에 존재하는 것으로 결정되는 예시에서, 프로세서(102)는 웨이 필드(142) 내의 데이터를 판독하도록 구성될 수 있다. 웨이 필드(142)는 특정 섹터 내의 데이터의 사본이 저장되는 데이터 어레이(104) 내의 웨이 또는 열을 나타낼 수 있다. 상이한 태그 라인을 가지는 다수의 별개의 블록의 섹터 내의 데이터는 태그 어레이(106)에서 데이터 어레이(104) 내의 동일한 웨이(114) 및 캐시 라인(118)으로 매핑될 수 있다. 프로세서(102)는 시작 섹터 필드(144) 내의 데이터를 판독하여 특정 섹터 내의 데이터의 사본이 저장되는 캐시 라인(118) 내에서의 시작 섹터를 결정하도록 구성될 수 있다. 프로세서(102)는 길이 필드(145) 내의 데이터를 판독하여 특정 데이터가 점유(occupy) 및/또는 예약(reserve)할 수 있는 섹터가 얼마나 많은지 결정하도록 구성될 수 있다. 예컨대, 특정 데이터는 데이터 어레이(104)에서 두 개의 섹터를 점유할 수 있으며 전체 4개의 섹터가 관련된 데이터에 대하여 예약될 수 있다. 점유되고 예약된 섹터는 길이 필드(145) 내에서 식별될 수 있다. 이러한 예시에서, 프로세서(102)가 동일한 블록의 두 개의 새로운 섹터에 액세스하면, 이러한 두 개의 새로운 섹터 내의 데이터는 상이한 블록의 데이터의 제거(eviction)를 일으키는 대신, 길이 필드(145) 내에 정의된 기존의 예약을 이용하여 저장될 수 있다. 시작 섹터가 시작 섹터 필드(144)로부터 결정되는 이후에, 프로세서(102)는 어드레스(126)의 섹터 오프셋 필드(134) 내에 바이트/워드를 위치시키도록 구성될 수 있다.
메모리(154)로부터의 데이터는 캐시(112)에 효율적으로 저장될 수 있다. 프로세서(102)가 블록 또는 섹터 미스(앞서 논의됨)를 결정하는 예시에서 또는 캐시(112)에 먼저 데이터가 채워 넣어지는(populated) 경우, 데이터는 프로세서(102)에 의하여 메모리(154)로부터 데이터 어레이(114)로 복사될 수 있다. 요청된 특정 섹터 그 자체가 복사될 수 있으므로, 데이터의 전체 블록이 데이터 어레이(114)로 반드시 복사될 필요가 없다. 다수의 별개의 블록으로부터의 데이터를 포함하는 섹터가 단일 캐시 라인에 맞아 들어갈 수 있는 예시에서, 데이터가 있는 이 섹터들은 동일한 캐시 라인에 저장될 수 있다. 예컨대, 특정 섹터가 프로세서(102)에 의하여 액세스되면, 그 섹터 및 다음의 연속적인 섹터 또는 섹터들이 복사될 수 있다. 다른 예시에서, 프로세서(102)는 섹터 프리페처(sector prefetcher)를 이용하도록 구성될 수 있다. 섹터 프리페처는 섹터 내의 데이터에 대한 연속적인 액세스를 검출하고 특정 섹터 및 다음 몇 개의 섹터를 프리페치(prefetch)하도록 구성될 수 있다. 다음의 몇 개의 섹터는 스트라이드(stride)에 의하여 분리되거나 연속적일 수 있다. 일부 예시에서, 이력 데이터에 기초하여, 프리페처는 또한 얼마나 많은 섹터가 길이 필드(145)를 이용하여 데이터 어레이(104)에서 예약되어야 하는지를 결정하도록 구성될 수 있다. 다른 예시에서, 프로세서(102)는 얼마나 많은 섹터가 이러한 블록에 대하여 과거에 액세스되었는지와 같은, 블록 내의 데이터의 과거 사용을 모니터링하도록 구성될 수 있다. 이러한 정보에 기초하여, 프로세서(102)는 과거에 액세스되었던 블록에 대하여 동일한 수의 섹터를 예약하도록 구성될 수 있다.
일부 예시에서, 특정 섹터에 더하여 데이터가 있는 섹터는 예측 알고리즘(predictive algorithm)에 기초하여 메모리(154)에서 캐시(112)로 복사되거나 예약될 수 있다. 이러한 예시에서, 프로세서(102)는 메모리(154)로부터 복사된 섹터 및 블록 내의 데이터의 이력 정보를 유지하도록 구성될 수 있다. 예컨대, 이력 상, 데이터를 포함하는 특정 섹터들은 (연속적인 섹터와 같이) 보통 메모리(154)로부터 캐시(112)로 함께 복사될 수 있거나 데이터가 있는 하나의 섹터를 복사하는 것은 관련된 섹터가 또한 복사되어야 함을 제안할 수 있다. 이러한 이력 정보로, 이러한 관련된 섹터 중 하나에 대한 섹터 미스는 프로세서(102)가 데이터가 있는 관련된 섹터를 복사하도록 구성되어야 함을 나타낼 수 있다. 예컨대, 프로세서(102)는 캐시(112)가 저장할 수 있는 것보다 많은 블록의 사용을 계속 파악할 수 있는 예측 구조를 이용하도록 구성될 수 있다. 일례로, 예측 구조는 블록이 캐시로부터 제거되는 경우 블록의 섹터 비트 벡터(140) 내에 숫자 "1"을 기록하는데에 유효한 카운터 및 블록 어드레스로 인덱싱된 테이블을 포함할 수 있다. 프로세서(102)가 블록 미스가 있다고 결정하면, 프로세서(102)는 테이블을 체크하도록 구성될 수 있다. 카운터는 섹터의 수를 결정하여 블록을 위하여 예약하도록 프로세서(102)에 의하여 이용될 수 있다.
일 예시에서, 메모리(154)는 프로세서(102)에 의한 요청에 따라 캐시(112)의 데이터 어레이(114)로 복사될 수 있는 블록(156 및 162) 내의 데이터를 포함할 수 있다. 예시에서, 블록(156)은 태그 "456"을 가지며 4개의 섹터(158)(X1, X2, X3 및 X4)를 포함한다. 예시에서, 데이터는 (데이터 비트 벡터(160)의 1 0 1 0 비트로 나타난 바와 같이) 섹터(X1 및 X3)에 저장된다. 예시에서, 블록(162)은 태그 "789"를 가지며 4개의 섹터(162)(Y1, Y2, Y3 및 Y4)를 포함한다. 예시에서, 데이터는 (데이터 비트 벡터(166)에서 0 0 1 1 비트로 나타난 바와 같이) 섹터(Y3 및 Y4)에 저장된다. 블록(156 및 162)의 모든 섹터를 복사하고 저장함으로써 데이터 어레이(114) 내에 할당되고 사용되는 다수의 캐시 라인(118) 및 전체 8개의 섹터가 될 것이다. 이는 현재 어떠한 데이터도 섹터 (X2, X4, Y1 및 Y2)에 저장되어 있지 않더라도 적용된다.
프로세서(102)는 데이터가 현재 저장되어 있는 섹터들(158, 164)로부터의 데이터를 메모리(154)로부터 데이터 어레이(114)로 복사하도록 구성될 수 있다. 예시에서, 블록(156)의 섹터(X1 및 X3) 내의 데이터가 데이터 라인(118a)으로 복사된다. 데이터 라인(118a)은 (00, 01, 10, 11로 번호 매겨진) 4개의 캐시 라인 섹터 번호(164)를 가지는 4개의 섹터를 포함한다. 블록(158)의 두 개의 섹터(X1 및 X3)만으로부터의 데이터가 메모리(154)로부터 데이터 어레이(114)로 복사됨에 따라, 데이터 라인(118a)은 두 개의 다른 섹터 내에 데이터를 위한 공간을 가진다. 블록(162) 내의 섹터(Y3 및 Y4) 내의 데이터도 또한 데이터 라인(118a)으로 복사될 수 있다. 일부 예시에서, 프로세서(102)는 블록에 대하여 필요할 가능성이 있는 미리 설정된 수의 연속적인 섹터를 예약하도록 구성될 수 있다. 예컨대, 캐시 라인(118)에 64 섹터가 있고, 태그 어레이(106)가 데이터 어레이(104)보다 두 배 많은 라인을 보유(hold)할 수 있으면, 프로세서(102)는 디폴트(default)로 각각의 새로운 블록에 대하여 32 섹터를 예약할 수 있다. 다른 예시에서, 위에서 논의된 바와 같이, 예측 테이블은 블록의 과거 사용을 기록하는 데에 이용될 수 있다. 이러한 예시에서, 프로세서(102)는 과거에 블록에 대하여 사용되고, 예약될 수 있는 섹터의 최소 수로 반올림되는 수의 섹터를 예약하도록 구성될 수 있다. 예컨대, 최소수는 16 또는 32의 배수일 수 있다.
예시에서, 프로세서(102)는 태그 어레이(108)를 갱신하여 블록(156 및 162)의 복사를 반영하도록 구성될 수 있다. 예시에서 도시된 바와 같이, 제1 태그 구조(116a)는 인덱스 블록(156)에 이용될 수 있다. 예시에서, 프로세서(102)는 태그 필드(136) 내에 태그 "456"을 저장하고, 스테이트 필드(138) 내에 유효 스테이트(예컨대, "1")를 저장하도록 구성될 수 있다. 예시에서, 프로세서(102)는 섹터 비트 벡터(140) 내의 데이터를 갱신하도록 구성되어, 블록(156)의 어떤 섹터가 데이터 어레이(104)에 저장된 데이터를 포함하는지 나타내는 비트 벡터 "1010"를 포함하도록 할 수 있다.
예시에서, 블록(156)은 데이터 어레이(104)의 웨이(w2)로 매핑된다. 다수의 별개의 블록으로부터의 섹터 내의 데이터가 동일한 캐시 라인 및 웨이로 매핑될 수 있음에 따라, 태그 구조(116a)는 또한 시작 섹터 필드(144)를 포함한다. 이러한 예시에서, 태그 "456"을 가지는 블록(156)은 00의 값을 가지는 캐시 라인 섹터 번호 164에서 시작하며 따라서 프로세서(102)는 시작 섹터 필드(144)에 "00"을 저장하도록 구성될 수 있다. 블록(156)의 두 개의 섹터에 데이터가 있으며, 따라서 프로세서(102)는 길이 필드(145)에 "10"을 저장하도록 구성될 수 있다.
마찬가지로, 예시에서, 제2 태그 구조(116b)가 블록(162)을 인덱싱하는데 이용될 수 있다. 태그 구조(116b)는 태그 구조(116a)와는 상이한 태그 항목(tag entry)에 저장될 수 있다. 프로세서(102)는 태그 필드(136) 내에 태그 "789"를 저장하고, 스테이트 필드(138) 내에 유효 스테이트(예컨대, "1")를 저장하도록 구성될 수 있다. 예시에서, 프로세서(102)는 섹터 비트 벡터(140) 내의 데이터를 갱신하도록 구성되어, 블록(162)의 어떠한 섹터가 데이터 어레이(104)에 저장된 데이터를 포함하는지 나타내는 비트 벡터 "0011"를 포함하도록 할 수 있다.
예시에서, 블록(162)은 웨이(w2)로 매핑된다. 다수의 별개의 블록으로부터의 섹터 내의 데이터가 동일한 캐시 라인 및 웨이로 매핑될 수 있음에 따라, 태그 구조(116b)는 또한 시작 섹터 필드(144)를 포함한다. 이러한 예시에서, 태그 "789"를 가지는 블록(162)은 10의 값을 가지는 캐시 라인 섹터 번호 164에서 시작하며, 따라서 프로세서(102)는 시작 섹터(144)에 "10"을 저장하도록 구성될 수 있다. 블록(162)의 두 개의 섹터 내에 데이터가 존재하며, 따라서 프로세서(102)는 길이 필드(145)에 "10"을 저장하도록 구성될 수 있다.
예시에서, 데이터가 블록(156)의 섹터(X2)에 저장되었으면, 블록(156 및 162)은 동일한 캐시 라인(118a)에 맞아 들어가지 않을 수 있다. 그러한 예시에서, 다른 캐시 라인이 블록(156, 162)을 저장하는데 사용될 수 있다. 예를 들어, 프로세서(102)는 태그 어레이(106)를 판독하고, 블록(156, 162)으로부터의 데이터를 저장하기 위한 희망하는 수의 섹터를 가지는 희생 블록(victim block) 내의 데이터를 찾도록 구성될 수 있다. 희생 블록으로부터의 데이터는 프로세서(102)에 의하여 선택되어 캐시(112)로부터 제거될 수 있다. 희생 블록으로부터의 데이터를 제거한 이후에, 프로세서(102)는 희생 블록으로부터의 데이터에 의해 마련된(freed) 데이터 어레이(104) 내의 공간을 점유하도록 블록(156 및/또는 162)으로부터 데이터를 복사하도록 구성될 수 있다. 다른 예시에서, 프로세서(102)는 태그 어레이(106)를 판독하여 블록(156, 162) 내의 데이터에 연속적인, 동일 캐시 라인에 저장된 다른 블록으로부터의 데이터가 있는지 살피도록 구성될 수 있다. 그러한 데이터는 제거될 수 있으며, 프로세서(102)는 블록(156, 162)의 저장을 연속적인 섹터로 확장시키도록 구성될 수 있다. 다른 예시에서, 프로세서(102)에 의해 이용되는 교체 정책에 기초하여, 캐시 라인(118a)에 저장된 더 오래된 데이터는 더 새로운 데이터의 저장을 허용하도록 제거될 수 있다. 프로세서(102)는 단일 캐시 라인(118)에 저장될 수 있는 별개의 데이터 블록의 수를 제한하도록 구성될 수 있다. 예컨대, 태그 어레이(106)를 단순화하기 위하여, 프로세서(102)는 단일 캐시 라인에 저장될 수 있는 상이한 블록의 수를 (예컨대, 두 개 또는 네 개의 블록으로) 제한하도록 구성될 수 있다. 그러한 예시에서, 시작 섹터 필드(144) 내의 데이터는 캐시 라인 내의 허용된 블록의 수에 기초하여 허용된 시작 섹터 중 하나를 식별하는 더 적은 비트로 인코딩될 수 있다. 시작 섹터 필드(144) 내의 데이터는 특정 블록이 1/4, 1/2 또는 전체 캐시 라인을 이용하는지 여부를 나타낼 수 있다.
다른 가능한 이점 중에서, 시스템(100)에서, 캐시(112)는 단일 캐시 라인에서의 다수의 별개의 블록으로부터의 데이터의 저장을 허용한다. 데이터의 단일 블록의 저장은 데이터 어레이(104) 내에 전체 캐시 라인을 할당하는 것을 반드시 요구할 필요는 없다. 데이터가 그 섹터에 있는지 여부와 상관없이 블록 내 모든 섹터에 대한 공간을 할당하는 대신에, 저장된 데이터가 있는 섹터에 대하여 데이터 어레이에 공간이 할당될 수 있다. 태그 구조(116)와 캐시 라인(118) 간의 1 대 1 매핑 보다, 시스템(100)은, 일부 예시에서, 태그 구조(116) 및 캐시 라인(118) 간의 다수 대 1 또는 n 대 1 매핑을 허용한다. 예컨대, 태그 어레이(108) 내의 웨이(w2) 및 웨이(w5) 내의 태그 구조(116)는 양자 모두 웨이 필드(142) 내의 데이터에 기초하여 데이터 어레이(104)의 웨이(w2) 내의 캐시 라인(118)으로 매핑할 수 있다. 데이터의 다수 개별의 블록이 데이터 어레이(104)에서 동일한 캐시 라인을 공유할 수 있으므로 데이터 어레이(104)에서 이용되는 것보다 더 많은 웨이/열이 태그 어레이(108)에서 이용될 수 있다. 일부 예시에서, 저장된 데이터가 있는 섹터를 복사함으로써, 캐시에서의 저장 공간 단편화(storage fragmentation)가 비교적 큰 캐시 크기를 가지는 캐시에서도 제한될 수 있다. 일부 예시에서, 시스템(100)은 데이터 어레이(104) 내의 캐시 라인을 부분적으로 채우는 것을 피한다. 상기한 바는, 다른 이점들 중에서도, 이하에서 설명되는 바와 같이, 더 높은 성능 및 더 나은 에너지 효율을 가져올 수 있다.
적어도 저장 공간 단편화를 제한하는 것의 일부로서, 결과적으로 캐시는 더 많은 데이터 블록을 보유할 수 있다. 유효 캐시 용량을 증가시킴으로써, 더 많은 블록이 다른 메모리로부터 읽어오는 대신에 캐시에서 찾아질 수 있으므로 캐시 미스율이 감소될 수 있다. 더 많은 코어가 캐시가 있는 칩의 대역폭 포락선(bandwidth envelope)을 부딪히지 않고 구현되도록 허용하여 데이터 트래픽(data traffic)이 감소될 수 있다. 다수의 블록으로부터의 데이터가 단일 캐시 라인을 공유할 수 있음에 따라, 캐시 라인은 더 빈번히 액세스될 수 있다. DRAM 캐시 라인은 리프레시(refresh)되지 않으면 그 전하를 잃을 수 있다. 캐시 라인으로의 다중 액세스는 DRAM의 더 적은 리프레시가 사용될 수 있다는 것을 의미할 수 있다.
시스템(100)을 이용하는 증가된 효율의 예시로서, 4KB 라인 및 8 웨이의 연대(associativity)를 가지는 32MB 섹터형 캐시에서, 8,192 캐시 라인이 (태그에 대하여는 64KB이고 섹터 비트 벡터에 대하여는 64KB인) 128KB의 태그 어레이와 함께 이용될 수 있다. 각 4KB 라인이 절반 채워지면, 유효 캐시 용량은 16MB뿐이다. 태그 구조(116)는 캐시 라인이 배치되는 것을 나타내는 (일부 예시에서는 3비트일 수 있는) 웨이 필드를 포함한다. 태그 구조(116)는 시작 섹터를 나타내는 (일부 예시에서는 1비트일 수 있는) 시작 섹터 필드를 포함할 수 있다. 태그 구조(116)는 블록이 점유하도록 허용될 수 있는 섹터의 최대 수를 나타내는 (일부 예시에서는 1비트일 수 있는) 길이 필드를 포함할 수 있다. 예시에서, 태그 구조(116) 내의 여분의 필드는, 총 5KB의 여분의 태그 저장 공간(4% 증가) 및 32MB의 유효 캐시 용량(100% 증가)을 가지는 태그 어레이 내에서 총 5 여분 비트를 가진다.
도 3은 여기에서 개시된 적어도 일부 실시예에 따라 배열된 저장 효율적인 섹터형 캐시를 구현하기 위한 예시적인 프로세스에 대한 흐름도를 도시한다. 일부 예시에서, 도 3에서의 프로세스는 위에서 논의된 시스템(100)을 이용하여 구현될 수 있다. 예시적인 프로세스는 블록(200, 202, 204, 206, 208, 210, 212, 214 및/또는 216) 중 하나 이상에 의해 예시된 바와 같이 하나 이상의 동작, 작용 또는 기능을 포함할 수 있다. 개별의 블록으로 도시되었으나, 다양한 블록이, 요구되는 구현예에 따라, 추가적인 블록으로 분할될 수 있거나, 더 적은 블록으로 조합될 수 있거나, 제거될 수 있다. 프로세스는 블록(200)에서 시작할 수 있다.
블록(200)에서, 프로세서는 특정 블록 내 특정 섹터 내의 데이터를 캐시로부터 요청하도록 구성될 수 있다. 프로세스는 블록(200)에서 블록(202)으로 계속될 수 있다.
블록(202)에서, 프로세서는 특정 블록에 대한 데이터의 사본이 캐시에 저장되어 있는지를 결정하도록 구성될 수 있다. 일부 예시에서, 이는 태그 어레이 내의 태그 및/또는 스테이트 필드를 분석함으로써 수행될 수 있다. 블록이 캐시에 없으면("아니오"), 프로세서는 캐시 미스가 발생했다고 결정하도록 구성될 수 있으며, 프로세스는 블록(202)에서 블록(210)으로 계속될 수 있다.
블록(202)에서, 프로세서가 블록이 캐시에 있다고 결정하면("예"), 프로세스는 블록(202)에서 블록(204)으로 계속될 수 있다. 블록(204)에서, 프로세서는 특정 섹터 내의 데이터의 사본이 캐시에 저장되어 있는지를 결정하도록 구성될 수 있다. 일부 예시에서, 이는 섹터 비트 벡터를 분석함으로써 수행될 수 있다. 특정 섹터에 대한 데이터가 캐시에 저장되어 있지 않다면("아니오"), 프로세서는 섹터 캐시 미스가 발생했다고 결정하도록 구성될 수 있으며, 프로세스는 블록(204)에서 블록(210)으로 계속될 수 있다.
블록(204)에서, 프로세서가 특정 섹터 내의 데이터의 사본이 캐시에 있다고 결정하면("예"), 프로세스는 블록(204)에서 블록(206)으로 계속될 수 있다. 블록(206)에서, 프로세서는 특정 섹터 내의 데이터의 사본이 캐시의 데이터 어레이에 저장되는 웨이 및 시작 섹터를 결정하도록 구성될 수 있다. 일부 예시에서, 이는 웨이 및 시작 섹터 필드 내의 데이터를 분석함으로써 수행될 수 있다. 프로세스는 블록(206)에서 블록(208)으로 계속될 수 있다. 블록(208)에서, 프로세서는 섹터 비트 벡터를 참고함으로써 적절한 섹터에서 데이터 어레이의 시작 섹터 및 웨이에 저장된 특정 섹터의 데이터의 사본을 읽어오도록 구성될 수 있다.
블록(202)에서의 블록 미스 이후에 또는 블록(204)에서의 섹터 미스 이후에, 블록(210)에서, 프로세서는 특정 섹터에 저장된 데이터를 다른 메모리로부터 캐시의 데이터 어레이의 캐시 라인으로 복사하도록 구성될 수 있다. 특정 섹터에 저장된 데이터는 다른 별개의 블록으로부터의 데이터를 포함하는 캐시 라인으로 복사될 수 있다. 프로세스는 블록(210)에서 블록(212)으로 계속될 수 있다.
블록(212)에서, 프로세서는 캐시의 태그 어레이를 갱신하여 데이터 어레이에 저장된 데이터를 포함하는 특정 섹터를 식별하도록 구성될 수 있다. 일부 예시에서, 이는 섹터 비트 벡터 필드를 갱신함으로써 수행될 수 있다. 프로세스는 블록(212)에서 블록(214)으로 계속될 수 있다.
블록(214)에서, 프로세서는 캐시의 태그 어레이를 갱신하여 데이터를 포함하는 특정 섹터가 데이터 어레이에 저장되는 웨이를 식별하도록 구성될 수 있다. 일부 예시에서, 이는 웨이 필드를 갱신함으로써 수행될 수 있다. 프로세스는 블록(214)에서 블록(216)으로 계속될 수 있다.
블록(216)에서, 프로세서는 캐시의 태그 어레이를 갱신하여 데이터를 포함하는 특정 섹터가 데이터 어레이에 저장되는 캐시 라인 내의 시작 섹터를 식별하도록 구성될 수 있다. 일부 예시에서, 이는 시작 섹터 필드를 갱신함으로써 수행될 수 있다.
도 4는 여기에서 제시된 적어도 일부 실시예에 따라 배열된 예시적인 컴퓨터 프로그램 제품(300)을 도시한다. 프로그램 제품(300)은 신호 베어링 매체(302)를 포함할 수 있다. 신호 베어링 매체(302)는, 예컨대, 프로세서에 의하여 실행되면, 도 1 내지 도 3에 관하여 위에서 기술된 기능을 제공할 수 있는 하나 이상의 명령을 포함할 수 있다. 따라서, 예컨대, 시스템(100)을 참조하면, 프로세서(102)는 매체(302)에 의하여 시스템(100)으로 전달되는 명령(304)에 응답하여 도 4에서 도시된 블록 중 하나 이상을 착수할 수 있다.
일부 구현예에서, 신호 베어링 매체(302)는 하드 디스크 드라이브, CD(Compact Disk), DVD(Digital Video Disk), 디지털 테이프, 메모리 등과 같은 컴퓨터 판독 가능 매체(306)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(302)는 메모리, 읽기/쓰기(R/W) CD, R/W DVD 등과 같은 기록 가능 매체(308)를 포함할 수 있으나, 이에 제한되지는 않는다. 일부 구현예에서, 신호 베어링 매체(302)는 디지털 및/또는 아날로그 통신 매체(예컨대, 광섬유 케이블, 도파관(waveguide), 유선 통신 링크, 무선 통신 링크 등)와 같은 통신 매체(310)를 포함할 수 있으나, 이에 제한되지는 않는다. 따라서, 예컨대, 프로그램 제품(300)은, 신호 베어링 매체(302)가 무선 통신 매체(310)(예컨대, IEEE 802.11 표준에 따르는 무선 통신 매체)에 의해 전달되는 RF 신호 베어링 매체(302)에 의하여 시스템(100)의 하나 이상의 모듈에 전달될 수 있다.
도 5는 여기에서 기술된 적어도 일부의 실시예에 따라 저장 효율적인 섹터형 캐시를 구현하도록 배열되는 예시적인 컴퓨팅 장치(400)를 나타낸 블록도이다. 매우 기초적인 구성(402)에서, 컴퓨팅 장치(400)는 일반적으로 하나 이상의 프로세서(404) 및 시스템 메모리(406)를 포함한다. 메모리 버스(408)는 프로세서(404) 및 시스템 메모리(406) 사이의 통신을 위하여 사용될 수 있다.
요구되는 구성에 따라, 프로세서(404)는 마이크로 프로세서(μP), 마이크로 컨트롤러(μC), 디지털 신호 프로세서(DSP), 또는 그들의 임의의 조합을 포함하는 임의의 유형일 수 있으나, 이에 제한되지는 않는다. 프로세서(404)는 레벨 1 캐시(410), 레벨 2 캐시(412)와 같은 하나 이상의 레벨(level)의 캐시(cache), 프로세서 코어(414), 및 레지스터(416)를 포함할 수 있다. 예시적인 프로세서 코어(414)는 산술 논리 연산장치(arithmetic logic unit; ALU), 부동 소수점 장치(floating point unit; FPU), 디지털 신호 처리 코어(DSP Core), 또는 그들의 임의의 조합을 포함할 수 있다. 예시적인 메모리 컨트롤러(418)는 또한 프로세서(404)와 함께 사용될 수 있고, 또는 일부 구현예에서 메모리 컨트롤러(418)는 프로세서(404)의 내적인 일부일 수 있다.
요구되는 구성에 따라, 시스템 메모리(406)는 (RAM과 같은) 휘발성 메모리, (ROM, 플래시 메모리 등과 같은) 비휘발성 메모리, 또는 그들의 임의의 조합을 포함하는 임의의 유형일 수 있으나, 이에 제한되지는 않는다. 시스템 메모리(406)는 운영 체제(420), 하나 이상의 어플리케이션(application)(422), 및 프로그램 데이터(424)를 포함할 수 있다. 어플리케이션(422)은 도 2의 시스템(100)에 관하여 기술된 바를 포함하여 여기에 기술된 바와 같은 기능을 수행하도록 배열되는 저장 효율적인 섹터형 캐시 알고리즘(426)을 포함할 수 있다. 프로그램 데이터(424)는 여기에서 기술된 바와 같은 저장 효율적인 섹터형 캐시 알고리즘에 대하여 유용할 수 있는 저장 효율적인 섹터형 캐시 데이터(428)를 포함할 수 있다. 일부 실시예에서, 어플리케이션(422)은 저장 효율적인 섹터형 캐시 알고리즘이 제공될 수 있도록 운영 체제(420) 상에서 프로그램 데이터(424)로 동작하도록 배열될 수 있다. 이러한 기술된 기초적인 구성(402)은 파선 내의 그 구성요소들에 의해 도 5에서 도시된다.
컴퓨팅 장치(400)는 기초적인 구성(402) 및 임의의 요구되는 장치 및 인터페이스(interface) 사이에서 통신을 용이하게 하도록 추가적인 특징 또는 기능, 및 추가적인 인터페이스를 가질 수 있다. 예를 들어, 버스/인터페이스 컨트롤러(430)는 기초적인 구성(402) 및 하나 이상의 데이터 저장 장치(432) 사이에서 저장 인터페이스 버스(434)를 통하여 통신을 용이하게 하도록 사용될 수 있다. 데이터 저장 장치(432)는 이동식 저장 장치(436), 고정식 저장 장치(438), 또는 그 조합일 수 있다. 이동식 저장 장치 및 고정식 저장 장치의 예를 몇 가지 들자면, 플렉서블 디스크 드라이브(flexible disk drive) 및 하드 디스크 드라이브(HDD)와 같은 자기 디스크 장치, 컴팩트 디스크(CD) 드라이브 또는 디지털 다목적 디스크(DVD) 드라이브와 같은 광 디스크 드라이브, 고체 상태 드라이브(SSD), 및 테이프 드라이브 등을 포함한다. 예시적인 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈(program module), 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술에서 구현되는 휘발성 및 비휘발성의 이동식 및 고정식 매체를 포함할 수 있다.
시스템 메모리(406), 이동식 저장 장치(436) 및 고정식 저장 장치(438)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 요구되는 정보를 저장하는데 사용될 수 있고, 컴퓨팅 장치(400)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하나, 이에 제한되지는 않는다. 임의의 그러한 컴퓨터 저장 매체는 컴퓨팅 장치(400)의 일부일 수 있다.
컴퓨팅 장치(400)는 또한 버스/인터페이스 컨트롤러(430)를 통하여 다양한 인터페이스 장치(예컨대, 출력 인터페이스(442), 주변 인터페이스(444), 및 통신 인터페이스(446))로부터 기초적인 구성(402)으로의 통신을 용이하게 하기 위한 인터페이스 버스(440)를 포함할 수 있다. 예시적인 출력 장치(442)는 그래픽 처리 유닛(448) 및 오디오 처리 유닛(450)을 포함하며, 이는 하나 이상의 A/V 포트(452)를 통하여 디스플레이 또는 스피커와 같은 다양한 외부 장치로 통신하도록 구성될 수 있다. 예시적인 주변 인터페이스(444)는 직렬 인터페이스 컨트롤러(454) 또는 병렬 인터페이스 컨트롤러(456)를 포함하며, 이는 하나 이상의 I/O 포트(458)를 통하여 입력 장치(예컨대, 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등) 또는 기타 주변 장치(예컨대, 프린터, 스캐너 등)와 같은 외부 장치와 통신하도록 구성될 수 있다. 예시적인 통신 장치(446)는 네트워크 컨트롤러(460)를 포함하며, 이는 하나 이상의 통신 포트(464)를 통하여 네트워크 통신 링크 상에서 하나 이상의 다른 컴퓨팅 장치(462)와의 통신을 용이하게 하도록 배열될 수 있다.
네트워크 통신 링크는 통신 매체의 하나의 예일 수 있다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 기타 수송 메커니즘(transport mechanism)과 같은, 변조된 데이터 신호에서의 기타 데이터에 의해 구현될 수 있고 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"는 신호 내에 정보를 인코딩하는 방식으로 설정되거나 변경된 하나 이상의 특성을 갖는 신호일 수 있다. 예를 들어, 통신 매체는 유선 네트워크 또는 직접 유선 연결(direct-wired connection)과 같은 유선 매체, 및 음향, 라디오 주파수(RF), 마이크로웨이브, 적외선(IR) 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있으나, 이에 제한되지 않는다. 여기에서 사용된 컴퓨터 판독 가능 매체라는 용어는 저장 매체 및 통신 매체 둘 다를 포함할 수 있다.
컴퓨팅 장치(400)는 휴대 전화기, 개인 휴대용 단말기(personal data assistant; PDA), 개인 미디어 재생 장치, 무선 웹워치 장치(wireless web-watch device), 개인 헤드셋 장치, 특정 용도 장치, 또는 상기 기능 중 임의의 것을 포함하는 융합 장치와 같은 소형 폼팩터 휴대용(모바일) 전자 장치의 일부로 구현될 수 있다. 컴퓨팅 장치(400)는 또한 랩탑 컴퓨터와 랩탑이 아닌 컴퓨터 구성 둘 다를 포함하는 개인 컴퓨터로 구현될 수 있다.
본 개시는 다양한 태양의 예시로서 의도된 본 출원에 기술된 특정 실시예들에 제한되지 않을 것이다. 당업자에게 명백할 바와 같이, 많은 수정과 변형들이 그 사상과 범위를 벗어나지 않으면서 이루어질 수 있다. 여기에 열거된 것들에 더하여, 본 개시의 범위 안에서 기능적으로 균등한 방법과 장치가 위의 설명으로부터 당업자에게 명백할 것이다. 그러한 수정과 변형들은 첨부된 청구항의 범위에 들어가도록 의도된 것이다. 본 개시는 첨부된 청구항과 그러한 청구항에 부여된 균등물의 전 범위에 의해서만 제한될 것이다. 본 개시가 물론 다양할 수 있는 특정 방법, 시약, 합성 구성 또는 생물학적 시스템에 제한되지 않는 것으로 이해될 것이다. 또한, 여기에서 사용된 용어는 특정 실시예를 기술하기 위한 목적이고, 제한하는 것으로 의도되지 않음이 이해될 것이다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 실시예로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 일반적으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 일반적으로 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두개의 기재사항"을 단순히 기재한 것은, 일반적으로 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다. 또한, "A, B 및 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). "A, B 또는 C 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, A, B, 및 C를 함께 갖는 시스템을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 어떠한 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
또한, 마쿠쉬 그룹을 이용하여 본 개시의 특징 또는 양상이 기술될 때는, 당업자라면 본 개시가 또한 마쿠쉬 그룹의 임의의 개별 구성원 또는 구성원의 서브그룹을 이용하여 기술됨을 이해할 것이다.
서면의 기재를 제공하는 것과 같은 어떠한 그리고 모든 목적을 위해서, 본 개시에 기재된 모든 범위는 모든 어떠한 가능한 하위범위 및 그 하위범위의 조합을 또한 포괄함이 이해 되어야 한다. 임의의 나열된 범위는, 그 동일한 범위가 적어도 동일한 이분 범위, 삼분 범위, 사분 범위, 오분 범위, 십분 범위 등으로 분할될 수 있으며, 그러한 동일 범위를 충분히 기술하는 것으로 용이하게 인식될 수 있다. 제한되지 않은 예로서, 본 개시에 기재된 각 범위는, 하위 삼분, 중간 삼분, 상위 삼분 등으로 용이하게 분할될 수 있다. 또한, "까지(up to)", "적어도(at least)" “더 큰(greater than)”, “더 적은(less than)” 등과 같은 모든 언어는 인용된 수를 포함하며, 상술한 바와 같은 하위 범위로 분할될 수 있는 범위들을 나타냄이 이해되어야 한다. 마지막으로, 범위는 각 개별 구성요소를 포함됨이 이해되어야 한다. 따라서, 예를 들어, 1 내지 3 셀(cell)을 가지는 그룹은 1, 2 또는 3 셀을 가지는 그룹을 나타낸다. 유사하게, 1 내지 5 셀을 가지는 그룹은 1, 2, 3, 4 또는 5 셀을 가지는 그룹을 나타내는 등이다.
다양한 양상 및 실시예들이 본 개시에서 기술되었지만, 다른 양상 및 실시예들이 당업자에게 명확할 것이다. 본 개시에 기재된 다양한 양상 및 실시예는 예시의 목적으로 제시된 것이고, 제한하려고 의도된 것은 아니며, 진정한 범위 및 사상은 이하 청구범위에 의해 나타낸다.

Claims (20)

  1. 블록(block)을 메모리(memory)로부터 캐시(cache)로 복사하기 위한 방법으로서,
    상기 블록은 상기 메모리 내 적어도 제1 섹터 및 제2 섹터에 저장된 데이터를 포함하고, 상기 제1 및 제2 섹터는 비연속적인 섹터이고, 상기 캐시는 태그 어레이(tag array) 및 데이터 어레이(data array)를 포함하며, 상기 태그 어레이는 상기 메모리로부터의 데이터가 상기 데이터 어레이에 저장되는 매핑을 하도록 구성되고,
    상기 방법은,
    프로세서(processor)에 의하여, 상기 블록의 상기 제1 섹터 내 제1 데이터를 상기 메모리로부터 상기 데이터 어레이의 웨이(way)의 시작 섹터(start sector)로 복사하는 단계;
    상기 프로세서에 의하여, 상기 블록의 상기 제2 섹터 내 제2 데이터를 상기 메모리로부터 상기 데이터 어레이의 상기 웨이의 다음 섹터(next sector)로 복사하는 단계 - 상기 다음 섹터는 상기 시작 섹터에 연속적임-;
    그리고, 상기 제1 및 제2 데이터의 복사에 응답하여:
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신(update)하여 상기 데이터 어레이에 저장되어 있는 상기 제1 및 제2 데이터를 식별하는 단계;
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여 상기 데이터 어레이 내 상기 웨이에 저장되어 있는 상기 제1 및 제2 데이터를 식별하는 단계;
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여 상기 데이터 어레이의 상기 웨이 내의 상기 시작 섹터를 식별하는 단계; 및
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여 상기 캐시에 상기 제1 데이터 및 상기 제2 데이터를 저장하는 섹터의 수에 해당하는 길이를 저장하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복사하는 단계들에 앞서, 상기 프로세서에 의하여, 상기 블록의 사본이 상기 캐시에 저장되어 있지 않다고 결정하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 프로세서에 의하여, 상기 블록의 상기 사본이 상기 캐시에 저장되어 있지 않다고 결정하는 단계는 상기 블록에 대한 요청의 태그 필드를 상기 태그 어레이 내의 태그 필드와 비교하는 단계를 포함하는, 방법.
  4. 제3항에 있어서,
    상기 복사하는 단계들에 앞서, 상기 프로세서에 의하여, 상기 제1 데이터의 사본이 상기 캐시에 저장되어 있지 않다고 결정하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 프로세서에 의하여, 상기 제1 데이터의 상기 사본이 상기 캐시에 저장되어 있지 않다고 결정하는 단계는 상기 요청의 섹터 인덱스 필드(sector index field)를 상기 태그 어레이 내의 섹터 비트 벡터 필드(sector bit vector field)와 비교하는 단계를 포함하는, 방법.
  6. 제5항에 있어서,
    상기 태그 어레이 내의 상기 섹터 비트 벡터 필드는 상기 데이터 어레이 내에 저장된 상기 블록의 섹터의 사본을 나타내는, 방법.
  7. 제1항에 있어서,
    상기 블록은 제1 블록이고;
    상기 웨이는 제1 웨이이고;
    상기 시작 섹터는 제1 시작 섹터이고;
    상기 다음 섹터는 제1 다음 섹터이고;
    상기 길이는 제1 길이이고;
    상기 수는 제1 수이며;
    상기 방법은,
    상기 프로세서에 의하여, 제3 섹터 내의 제3 데이터를 상기 메모리로부터 상기 데이터 어레이의 제2 웨이의 제2 시작 섹터로 복사하는 단계 - 상기 제3 섹터는 제2 블록 내에서 상기 메모리에 저장되며, 상기 제2 블록은 상기 제1 블록과 구별됨 -;
    상기 프로세서에 의하여, 제4 섹터 내의 제4 데이터를 상기 메모리로부터 상기 데이터 어레이의 상기 제2 웨이의 제2 다음 섹터로 복사하는 단계 - 상기 제4 섹터는 상기 제2 블록 내에서 상기 메모리에 저장되며, 상기 제4 섹터는 상기 제3 섹터에 비연속적이고, 상기 제2 다음 섹터는 상기 제2 시작 섹터에 연속적임 -;
    그리고, 상기 제3 및 제4 데이터의 복사에 응답하여,
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여, 상기 데이터 어레이에 저장되어 있는 상기 제3 및 제4 데이터를 식별하는 단계;
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여, 상기 데이터 어레이 내의 상기 제2 웨이에 저장되어 있는 상기 제3 및 제4 데이터를 식별하는 단계;
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여, 상기 데이터 어레이의 상기 제2 웨이 내 상기 제2 시작 섹터를 식별하는 단계; 및
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여, 상기 캐시에 상기 제3 및 제4 데이터를 저장하는 섹터의 제2 수에 해당하는 제2 길이를 저장하는 단계
    를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 제1 웨이 및 상기 제2 웨이는 구별되는, 방법.
  9. 제1항에 있어서,
    상기 복사하는 단계들은 상기 블록을 분석하고, 데이터가 상기 메모리에 저장된 상기 블록의 상기 제1 및 제2 섹터 내의 데이터를 복사하고, 데이터가 메모리 에 저장되지 않는 상기 블록의 상기 제1 및 제2 섹터와는 상이한 나머지 섹터에 대하여 상기 데이터 어레이 내 공간을 할당하지 않는 단계를 포함하는, 방법.
  10. 제7항에 있어서,
    상기 프로세서에 의하여, 상기 제1 및 제2 섹터 내의 데이터를 복사하는 단계는 상기 제1 블록을 분석하고, 데이터가 상기 메모리에 저장된 상기 제1 블록의 상기 제1 및 제2 섹터 내의 데이터를 복사하고, 데이터가 상기 메모리에 저장되지 않는 상기 제1 블록의 상기 제1 및 제2 섹터와는 상이한 제1 나머지 섹터에 대하여 상기 데이터 어레이 내 공간을 할당하지 않는 단계를 포함하고;
    상기 프로세서에 의하여, 상기 제3 및 제4 섹터 내의 데이터를 복사하는 단계는 상기 제2 블록을 분석하고, 데이터가 상기 메모리에 저장된 상기 제2 블록의 상기 제3 및 제4 섹터 내의 데이터를 복사하고, 데이터가 상기 메모리에 저장되지 않는 상기 제2 블록의 상기 제3 및 제4 섹터와는 상이한 제2 나머지 섹터에 대하여 상기 데이터 어레이 내의 공간을 할당하지 않는 단계를 포함하는, 방법.
  11. 제1항에 있어서,
    상기 제1 데이터를 복사하는 단계는 상기 제1 섹터 및 상기 제1 데이터에 관련된 섹터들 내의 데이터를 복사하는 단계를 포함하고,
    상기 제2 데이터를 복사하는 단계는 상기 제2 섹터 및 상기 제2 데이터에 관련된 섹터들 내의 데이터를 복사하는 단계를 포함하는, 방법.
  12. 제1항에 있어서,
    상기 프로세서에 의하여, 상기 태그 어레이를 갱신하여 상기 데이터 어레이 내의 상기 제1 및 제2 데이터에 대하여 예약된 섹터의 수를 나타내는 단계를 더 포함하는 방법.
  13. 제1항에 있어서,
    상기 프로세서에 의하여, 교체 정책(replacement policy)에 기초하여 상기 웨이 및 시작 섹터를 선택하는 단계를 더 포함하는 방법.
  14. 블록을 메모리로부터의 캐시로 복사하도록 구성된 시스템으로서,
    상기 블록은 상기 메모리 내 적어도 제1 섹터 및 제2 섹터에 저장된 데이터를 포함하고, 상기 제1 및 제2 섹터는 비연속적인 섹터이고,
    상기 시스템은,
    메모리;
    태그 어레이 및 데이터 어레이를 포함하는 캐시 - 상기 태그 어레이는 상기 메모리로부터의 데이터가 상기 데이터 어레이에 저장되는 매핑을 하도록 구성됨 -; 및
    상기 캐시 및 상기 메모리와 통신하도록 구성된 프로세서를 포함하고,
    상기 프로세서는,
    상기 블록의 상기 제1 섹터 내의 제1 데이터를 상기 메모리로부터 상기 데이터 어레이의 웨이의 시작 섹터로 복사하고;
    상기 블록의 상기 제2 섹터 내의 제2 데이터를 상기 메모리로부터 상기 데이터 어레이의 상기 웨이의 다음 섹터로 복사하고 - 상기 다음 섹터는 상기 시작 섹터에 연속적임 -;
    그리고 상기 제1 및 제2 데이터의 상기 복사에 응답하여,
    상기 태그 어레이를 갱신하여 상기 데이터 어레이에 저장되어 있는 상기 제1 및 제2 데이터를 식별하고;
    상기 태그 어레이를 갱신하여 상기 데이터 어레이의 상기 웨이 내에 저장되어 있는 상기 제1 및 제2 데이터를 식별하고;
    상기 태그 어레이를 갱신하여 상기 데이터 어레이의 상기 웨이 내 상기 시작 섹터를 식별하며;
    상기 태그 어레이를 갱신하여 상기 캐시에서 상기 제1 및 제2 데이터를 저장하는 섹터의 수에 해당하는 길이를 저장하도록 구성되는, 시스템.
  15. 제14항에 있어서,
    상기 블록은 제1 블록이고;
    상기 웨이는 제1 웨이이고;
    상기 시작 섹터는 제1 시작 섹터이고;
    상기 다음 섹터는 제1 다음 섹터이고;
    상기 길이는 제1 길이이고;
    상기 수는 제1 수이며;
    상기 프로세서는,
    제3 섹터 내의 제3 데이터를 상기 메모리로부터 상기 데이터 어레이의 제2 웨이의 제2 시작 섹터로 복사하고 - 상기 제3 데이터는 제2 블록 내에서 상기 메모리에 저장되며, 상기 제2 블록은 상기 제1 블록과 구별됨 -;
    상기 프로세서에 의하여, 제4 섹터 내의 제4 데이터를 상기 메모리로부터 상기 데이터 어레이의 상기 제2 웨이의 제2 다음 섹터로 복사하고 - 상기 제 4 섹터는 상기 제2 블록 내에서 상기 메모리에 저장되고, 상기 제4 섹터는 상기 제3 섹터에 비연속적이며, 상기 제2 다음 섹터는 상기 제2 시작 섹터에 연속적임 -;
    상기 태그 어레이를 갱신하여, 상기 데이터 어레이에 저장되어 있는 상기 제3 및 제4 데이터를 식별하고;
    상기 태그 어레이를 갱신하여, 상기 데이터 어레이 내의 상기 제2 웨이 내에 저장되어 있는 상기 제3 및 제4 데이터를 식별하고;
    상기 태그 어레이를 갱신하여, 상기 데이터 어레이의 상기 제2 웨이 내의 상기 제2 시작 섹터를 식별하며;
    상기 태그 어레이를 갱신하여, 상기 캐시에 상기 제3 및 제4 데이터를 저장하는 섹터의 제2 수에 해당하는 제2 길이를 저장하도록 더 구성되는, 시스템.
  16. 제15항에 있어서,
    상기 제1 웨이 및 상기 제2 웨이는 구별되는, 시스템.
  17. 제15항에 있어서,
    상기 프로세서는 상기 제1 블록을 분석하고, 상기 메모리 내에 데이터가 저장된 상기 제1 및 제2 섹터 내의 데이터를 복사하도록 구성되고, 상기 메모리 내에 데이터가 저장되지 않은 상기 제1 특정 블록의 상기 제1 및 제2 섹터와는 상이한 제1 나머지 섹터에 대하여 상기 데이터 어레이 내의 공간을 할당하도록 구성되지 않음으로써, 상기 제1 및 제2 섹터 내의 데이터를 복사하도록 구성되고;
    상기 프로세서는 상기 제2 블록을 분석하고, 상기 메모리 내에 데이터가 저장된 상기 제3 및 제4 섹터 내의 데이터를 복사하도록 구성되고, 상기 메모리 내에 데이터가 저장되지 않은 상기 제2 블록의 상기 제3 및 제4 섹터와는 상이한 제2 나머지 섹터에 대하여 상기 데이터 어레이 내의 공간을 할당하도록 구성되지 않음으로써, 상기 제3 및 제4 섹터 내의 데이터를 복사하도록 구성되는, 시스템.
  18. 제14항에 있어서,
    상기 데이터 어레이는 DRAM을 이용하여 구현되고, 상기 태그 어레이는 SRAM 또는 DRAM을 이용하여 구현되는, 시스템.
  19. 어드레스(address)에 기초하여 캐시 내에 저장된 블록 내의 데이터의 사본을 읽어오기(retrieve) 위한 방법으로서,
    상기 어드레스는 태그 필드, 세트 인덱스 필드 및 섹터 인덱스 필드를 포함하고, 상기 캐시는 태그 어레이 및 데이터 어레이를 포함하며, 상기 태그 어레이는 데이터가 상기 데이터 어레이 내에 저장될 수 있는 매핑을 하도록 구성되고,
    상기 방법은,
    프로세서에 의하여, 상기 세트 인덱스 필드에서 식별된 세트 내의, 상기 태그 필드 내의 제1 태그 데이터를 상기 태그 어레이 내의 다른 태그 필드 내의 제2 태그 데이터와 비교하여 매칭 태그(matching tag)를 생성하는 단계 - 상기 매칭 태그는 태그 구조로 되어 있고, 상기 태그 구조는 섹터 비트 벡터 필드, 웨이 필드, 시작 섹터 필드 및 상기 데이터의 상기 사본이 상기 캐시에 저장된 섹터의 수를 나타내는 길이 필드를 포함함 -;
    상기 프로세서에 의하여, 상기 태그 구조의 상기 섹터 비트 벡터 필드 내의 섹터 비트 벡터 데이터를 상기 어드레스의 상기 섹터 인덱스 필드 내의 데이터와 비교하여 상기 블록으로부터의 제1 섹터 내의 제1 데이터의 사본이 상기 캐시에 저장되어 있다고 결정하는 단계;
    상기 프로세서에 의하여, 상기 웨이 필드 내의 데이터를 분석하여 상기 제1 데이터의 상기 사본이 저장된 상기 데이터 어레이 내의 웨이를 결정하는 단계;
    상기 프로세서에 의하여, 상기 시작 섹터 필드 내의 데이터를 분석하여 상기 블록의 상기 사본이 저장된 상기 데이터 어레이 내의 시작 섹터를 결정하는 단계;
    상기 프로세서에 의하여, 상기 길이 필드 내 데이터를 분석하여, 상기 블록이 상기 데이터 어레이에 저장되는 섹터의 수를 결정하는 단계; 및
    상기 프로세서에 의하여, 상기 길이에 기초하여, 상기 데이터 어레이의 상기 웨이, 세트 및 시작 섹터로부터의 상기 제1 데이터의 상기 사본을 읽어오는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 어드레스는 섹터 오프셋 필드(sector offset field)를 더 포함하며, 상기 방법은 상기 섹터 오프셋 필드 내의 데이터를 이용하여 상기 제1 데이터의 상기 사본을 읽어오는 단계
    를 더 포함하는 방법.
KR1020127030081A 2010-04-21 2010-04-21 저장 효율적인 섹터형 캐시 KR101414035B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2010/031878 WO2011133146A2 (en) 2010-04-21 2010-04-21 Storage efficient sectored cache

Publications (2)

Publication Number Publication Date
KR20130018412A KR20130018412A (ko) 2013-02-21
KR101414035B1 true KR101414035B1 (ko) 2014-07-01

Family

ID=44834713

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127030081A KR101414035B1 (ko) 2010-04-21 2010-04-21 저장 효율적인 섹터형 캐시

Country Status (5)

Country Link
US (1) US8874849B2 (ko)
JP (1) JP5597306B2 (ko)
KR (1) KR101414035B1 (ko)
CN (1) CN102859504B (ko)
WO (1) WO2011133146A2 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150009883A (ko) * 2013-07-17 2015-01-27 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
GB2521227B (en) * 2013-12-16 2020-11-25 Advanced Risc Mach Ltd Invalidation of index items for a temporary data store
KR102317248B1 (ko) * 2014-03-17 2021-10-26 한국전자통신연구원 캐시의 부분연관 재구성을 이용한 캐시 제어 장치 및 캐시 관리 방법
US10013352B2 (en) * 2014-09-26 2018-07-03 Intel Corporation Partner-aware virtual microsectoring for sectored cache architectures
US20170091099A1 (en) * 2015-09-25 2017-03-30 Zvika Greenfield Memory controller for multi-level system memory having sectored cache
GR20170100067A (el) * 2017-02-16 2018-10-31 Arm Limited Προβλεψη χρησης τομεων κρυφης μνημης
CN107704527B (zh) * 2017-09-18 2020-05-08 华为技术有限公司 数据存储方法、装置及存储介质
CN109165172B (zh) * 2018-08-23 2021-10-29 郑州云海信息技术有限公司 缓存数据处理方法及相关设备
WO2020190841A1 (en) 2019-03-18 2020-09-24 Rambus Inc. System application of dram component with cache mode

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526610B1 (en) * 2008-03-20 2009-04-28 International Business Machines Corporation Sectored cache memory
KR20090072933A (ko) * 2007-12-28 2009-07-02 후지쯔 가부시끼가이샤 섹터 기능이 있는 캐시 메모리

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493026A (en) * 1982-05-26 1985-01-08 International Business Machines Corporation Set associative sector cache
JPH02171944A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd バッファ記憶装置
US5202969A (en) 1988-11-01 1993-04-13 Hitachi, Ltd. Single-chip-cache-buffer for selectively writing write-back and exclusively writing data-block portions to main-memory based upon indication of bits and bit-strings respectively
JPH05149675A (ja) * 1991-11-27 1993-06-15 Matsushita Refrig Co Ltd 冷蔵庫
JPH05314008A (ja) * 1992-05-13 1993-11-26 Toshiba Corp 情報処理装置
JPH06149675A (ja) * 1992-11-11 1994-05-31 Kofu Nippon Denki Kk キャッシュメモリ装置
US6678790B1 (en) * 1997-06-09 2004-01-13 Hewlett-Packard Development Company, L.P. Microprocessor chip having a memory that is reconfigurable to function as on-chip main memory or an on-chip cache
US6643743B1 (en) * 2000-03-31 2003-11-04 Intel Corporation Stream-down prefetching cache
US6766431B1 (en) 2000-06-16 2004-07-20 Freescale Semiconductor, Inc. Data processing system and method for a sector cache
US6571322B2 (en) * 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
WO2009037912A1 (ja) * 2007-09-20 2009-03-26 Nec Corporation キャッシュメモリシステムおよびキャッシュメモリ制御方法
JP5413001B2 (ja) * 2009-07-09 2014-02-12 富士通株式会社 キャッシュメモリ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090072933A (ko) * 2007-12-28 2009-07-02 후지쯔 가부시끼가이샤 섹터 기능이 있는 캐시 메모리
US7526610B1 (en) * 2008-03-20 2009-04-28 International Business Machines Corporation Sectored cache memory

Also Published As

Publication number Publication date
JP5597306B2 (ja) 2014-10-01
CN102859504A (zh) 2013-01-02
WO2011133146A3 (en) 2012-01-26
CN102859504B (zh) 2015-11-25
US8874849B2 (en) 2014-10-28
US20120317361A1 (en) 2012-12-13
JP2013524379A (ja) 2013-06-17
KR20130018412A (ko) 2013-02-21
WO2011133146A2 (en) 2011-10-27

Similar Documents

Publication Publication Date Title
KR101414035B1 (ko) 저장 효율적인 섹터형 캐시
KR101902650B1 (ko) 완전삭제-인식 디램 컨트롤러
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
JP5752989B2 (ja) プロセッサ・メインメモリのための持続性メモリ
KR101786871B1 (ko) 원격 페이지 폴트 처리 장치 및 그 방법
US8935484B2 (en) Write-absorbing buffer for non-volatile memory
US20160098353A1 (en) Methods and systems for memory de-duplication
US20170242794A1 (en) Associative and atomic write-back caching system and method for storage subsystem
US9524238B2 (en) Systems and methods for managing cache of a data storage device
US9317448B2 (en) Methods and apparatus related to data processors and caches incorporated in data processors
CN109952565B (zh) 内存访问技术
US8583873B2 (en) Multiport data cache apparatus and method of controlling the same
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
KR20190058318A (ko) 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
US20140317337A1 (en) Metadata management and support for phase change memory with switch (pcms)
US20130198453A1 (en) Hybrid storage device inclucing non-volatile memory cache having ring structure
KR20140012186A (ko) 메모리 페이지들의 일부에 저장된 메타데이터를 갖는 메모리
US20180032429A1 (en) Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators
KR20190052546A (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US20210056030A1 (en) Multi-level system memory with near memory capable of storing compressed cache lines
CN115079957B (zh) 请求处理方法、装置、控制器、设备及存储介质
KR20150094205A (ko) 플래시 기반 저장 장치의 스왑 관리 방법
US8200920B2 (en) Systems and methods for storing and accessing data stored in a data array
TW202244735A (zh) Dram感知快取記憶體

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 6