KR100389549B1 - 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 - Google Patents

템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 Download PDF

Info

Publication number
KR100389549B1
KR100389549B1 KR10-2000-7010799A KR20007010799A KR100389549B1 KR 100389549 B1 KR100389549 B1 KR 100389549B1 KR 20007010799 A KR20007010799 A KR 20007010799A KR 100389549 B1 KR100389549 B1 KR 100389549B1
Authority
KR
South Korea
Prior art keywords
data
cache
temporal
bit
cache memory
Prior art date
Application number
KR10-2000-7010799A
Other languages
English (en)
Other versions
KR20010042262A (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 KR20010042262A publication Critical patent/KR20010042262A/ko
Application granted granted Critical
Publication of KR100389549B1 publication Critical patent/KR100389549B1/ko

Links

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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

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

Abstract

본 발명은 캐시 메모리 관리를 제공하기 위한 방법 및 시스템에 관한 것이다. 상기 시스템은 주 메모리, 상기 주 메모리에 연결된 프로세서, 및 상기 프로세서에 연결되고, 데이터를 캐싱하기 위한 적어도 하나의 캐시 메모리를 포함한다. 상기 적어도 하나의 캐시 메모리는 각각 다수의 세트를 포함하는 적어도 두 개의 캐시 경로를 구비한다. 상기 다수의 세트는 각각 상기 두 개의 캐시 경로 중에서 넌템포럴 데이터를 포함하는 하나의 경로를 나타내는 비트를 구비한다. 상기 프로세서는 상기 주 메모리 또는 상기 적어도 하나의 캐시 메모리 중 하나로부터 데이터를 액세스한다.

Description

템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조{SHARED CACHE STRUCTURE FOR TEMPORAL AND NON-TEMPORAL INSTRUCTIONS}
프로세서에 있어서 캐시 메모리의 사용은 메모리 액세스 시간의 감소를 용이하게 한다. 캐시 구조의 기본적인 아이디어는 가장 빈번하게 액세스되는 명령어 및 데이터를 고속의 캐시 메모리에 저장함으로써, 평균 메모리 액세스 시간을 캐시 액세스 시간에 근접시키고자 하는 것이다. 가능한 최고의 동작 속도를 달성하기 위하여, 통상의 프로세서는 캐시 계층(hierarchy), 즉 캐시 메모리의 각기 다른 레벨을 구현한다. 캐시의 각기 다른 레벨은 프로세서 코어(core)로부터의 거리에 대응된다. 프로세서에 가까운 캐시일수록 데이터 액세스가 빠르다. 그러나, 데이터 액세스가 빠를수록 데이터 저장 비용이 많이 든다. 결과적으로, 캐시 레벨이 가까울수록 보다 빠르고 작은 캐시이다.
캐시 메모리의 성능은 적중률(hit ratio)로 종종 측정된다. 프로세서가 메모리를 조회하여 캐시에서 워드를 찾은 경우, 이를 적중(hit)이 되었다고 말한다. 만일, 캐시에서 단어를 찾지 못한 경우, 그것은 주 메모리에 있으며, 이를 적중실패(miss)로 간주한다. 적중실패가 발생하면, 액세스에 의해 색인(index)된 엔트리(entry)의 할당(allocation)이 이루어진다. 상기 액세스는 데이터를 프로세서로 로딩(loading) 하거나, 또는 프로세서로부터 메모리로 데이터를 저장하기 위한 것일 수 있다. 캐싱된 정보는, 더이상 필요하지 않거나, 무효화 되거나 또는 다른 데이터로 교체되어질 때까지 캐시 메모리에 의해 보존되는데, 상기의 경우에 캐시 엔트리는 할당 해제(de-allocate)된다.
L1 및 L2 캐시를 구비한 펜티엄 ProTM프로세서와 같이 캐시 계층을 구현한 프로세서에서는, 보다 빠르고 작은 L1 캐시가 L2 캐시보다 프로세서에 더 가깝다. 프로세서가 캐시 가능한 데이터, 일례로 로드 명령어를 요구하면, 이 요구(request)는 먼저 L1 캐시로 전송된다. 만약, 요구된 데이터가 L1 캐시에 있으면, 이것은 프로세서로 제공된다. 그렇지 않은 경우, L1 적중실패(miss)가 되고, 상기 요구는 L2 캐시로 전송된다. 마찬가지로, L2 캐시 적중(hit)인 경우, 데이터는 L1 캐시 및 프로세서 코어로 전달된다. 만약, L2 캐시 적중실패(miss)인 경우에는, 상기 요구는 주 메모리로 전송된다. 주 메모리는 요구된 데이터를 L2 캐시, L1 캐시 및 프로세서 코어로 제공함으로써, L2 캐시 적중실패에 응답한다.
통상적으로, 캐시에 저장되는 데이터의 형태는 프로그램 및 데이터의액티브(active) 부분을 포함한다. 캐시가 가득찬 경우, 새로 요구된 데이터 라인을 위한 공간을 만들기 위하여, 저장된 데이터의 현재의 라인을 교체할 필요가 있다. 이러한 교체 기술의 하나로, 최근에 가장 적게 사용된 데이터 라인을 새로 요구된 라인으로 교체하는 최근 최소 사용(Least Recently Used : 이하, 'LRU'라 칭함) 알고리즘의 사용이 포함된다. 펜티엄 ProTM프로세서에서는, L2 캐시가 L1 캐시보다 크기 때문에, 통상적으로, L2 캐시는 L1 캐시에 있는 모든 것과, L1 캐시에서 LRU 알고리즘에 의해 교체된 일부 부가적인 라인들을 저장한다.
Milland Mittal에 의해 발명되고 1996년 12월 17일에 출원되어 현재 미합중국 특허 번호 5,829,025로 특허된 미합중국 특허 출원 번호 08/767,950의 "Computer System and Method of Allocating Cache Memories in a Multilevel Cache Hierarchy utilizing a Locality Hint within an Instruction"에서는, 명령어에 연관된 집약성 힌트(locality hint)의 사용을 통해 캐시 메모리를 할당하기 위한 기술을 개시하고 있다. 프로세서와 메모리 사이의 데이터 전송을 위해 프로세서가 메모리에 액세스하는 경우, 명령어에 연관된 집약성 힌트에 따라 상기 액세스는 캐시의 여러 레벨로 할당되거나, 또는 캐시 메모리에 할당되지 않을 수 있다. 어떤 명령어는 드물게 사용된다. 예를 들어, 프로세서가 즉시 요구하지는 않지만, 가까운 미래에 요구될 것으로 예상되는 넌템포럴(non-temporal) 사전인출(prefetch) 명령어는 데이터를 예비적재(preload)한다. 이러한 데이터는, 통상적으로, 한번만 사용되거나 가까운 미래에 재사용되지 않으며, 이를 "넌템포럴 데이터(non-temporal data)"라고 부른다. 자주 사용되는 명령어는 "템포럴 데이터(temporal date)"라고 부른다. 넌템포럴 데이터에 대하여, 이 데이터는 자주 사용되지 않기 때문에, 최적의 성능이란 캐싱된 데이터를 이렇게 드물게 사용되는 데이터로 겹쳐쓰지(overwrite) 않는 것을 말한다. 미합중국 특허 번호 5,829,025에서는, 넌템포럴 사전인출 데이터와 같이 드물게 사용되는 데이터를 저장하기 위한 버퍼를 캐시 메모리와 분리하여 제공함으로써, 이러한 문제를 해결하고 있다. 그러나, 이러한 분리된 버퍼의 추가 사용은 비용 및 공간에 대해 모두 낭비적이다.
따라서, 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조를 제공하는 기술이 요구되며, 이것으로 별도의 버퍼 사용을 없앨 수 있다.
본 발명은 일반적인 프로세서 분야에 관한 것으로, 특히, 템포럴(temporal) 및 넌템포럴(non-temporal) 명령어(instruction)에 대한 공유 캐시(cache) 구조를 제공하는 기술에 관한 것이다.
본 발명은 도면에서 한 예로서 도시되고, 이에 한정되지 않는다. 같은 참조부호는 동일한 구성요소를 나타낸다
도1은 본 발명을 적용한 컴퓨터 시스템의 제1 실시예를 도시한 회로 블록도로서, 여기서 캐시 메모리는 상기 컴퓨터 시스템의 주 메모리와 프로세서 간의 데이터 액세스를 위해 사용됨.
도2는 본 발명을 적용한 컴퓨터 시스템의 제2 실시예를 도시한 회로 블록도로서, 여기서 두 캐시 메모리는 상기 컴퓨터 시스템의 주 메모리와 프로세서 간의 데이터 액세스를 위한 캐시 메모리 레벨로 배열됨.
도3은 본 발명이 적용된 기술에서의 캐시 메모리의 조직적 구조의 일실시예를 도시한 불록도.
도4는 본 발명의 제1 실시예에 따른 캐시 관리 기술을 도시한 테이블.
도5A 및 도5B는 본 발명의 제1 실시예에 따라, 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
도6A 및 도6B는 본 발명의 제1 실시예에 따라, 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 다른 예를 도시한 도면.
도7A 내지 도7D는 본 발명의 제1 실시예에 따라, 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
도8A 내지 도8D는 본 발명의 제1 실시예에 따라, 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중하기 전과 후의 캐시 메모리 구성의 다른 예를 도시한 도면.
도9A 및 도 9B는 본 발명의 제1 실시예에 따라, 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중실패하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
도10A 및 도10B는 본 발명의 제1 실시예에 따라, 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중실패하기 전과 후의 캐시 메모리 구성의 일례를 도시한 도면.
발명의 요약
캐시 메모리 관리를 위한 방법 및 시스템이 제공된다. 상기 시스템은 주 메모리, 상기 주 메모리에 연결된 프로세서, 및 상기 프로세서에 연결되고, 데이터를 캐싱하기 위한 적어도 하나의 캐시 메모리를 포함한다. 상기 적어도 하나의 캐시 메모리는 각각 다수의 세트를 포함하는 적어도 두 개의 캐시 경로를 구비한다(The at least one cache memory has at least two cache ways, each comprising a plurality of sets). 상기 다수의 세트는 각각 상기 적어도 두 개의 캐시 경로 중에서 어느 하나의 경로가 넌템포럴 데이터를 포함하는지 여부를 나타내는 비트를 구비한다(Each of the plurality of sets has a bit which indicates whether one of the at least two cache ways contains non-temporal data). 상기 프로세서는 상기 주 메모리 또는 상기 적어도 하나의 캐시 메모리 중의 하나(one of the main memory or the at least one cache memory)로부터 데이터를 액세스한다.
캐시 메모리의 관리를 제공하기 위한 기술이 설명되는데, 여기서 캐시 할당은 데이터 이용율에 의해 결정된다. 다음의 설명에서는, 본 발명의 완전한 이해를 제공하기 위해, 특정 메모리 장치, 회로도, 프로세서 명령어 등과 같은 여러 특정 세부사항을 설명한다. 그러나, 이 기술분야의 통상의 지식을 가진 자에게는, 본 발명이 이러한 특정한 세부사항 없이 실시될 수 있음이 이해될 것이다. 다른 경우에서, 본 발명을 모호하지 않게 하기 위해 잘 알려진 기술 및 구조는 상세하게 기재되지 않았다. 본 발명의 바람직한 실시예로서 특정한 구현이 기술되었지만, 본 발명의 정신 및 범위로부터 동떨어지지 않은 그 외의 실시예가 설계되고 구현될 수 있음을 알 수 있다. 또한, 본 발명은 직렬로 배열된 캐시 계층 시스템을 참조하여 기술되고 있지만, 이러한 계층에 엄밀히 제한될 필요는 없다.도1을 참조하면, 통상의 컴퓨터 시스템이 도시되어 있으며, 여기서, 상기 컴퓨터 시스템의 중앙 처리 장치(이하, 'CPU'라 칭함)를 형성하는 프로세서(10)는 버스(14)에 의해 주 메모리(11)에 연결된다. 상기 주 메모리(11)는 통상적으로 임의 접근 메모리(random-access-memory)로 구성되고, 일반적으로 RAM으로 부른다. 이어, 상기 주 메모리(11)는, 일반적으로, 정보의 대용량 기억(저장)을 위한 자기(magnetic) 또는 광(optical) 기억 장치와 같은 대용량 기억 장치(22)에 연결된다. 캐시 메모리(이하, '캐시'로 약칭함)(13)도 역시 버스(14)에 연결된다. 상기 캐시(13)는, 기능적 이용율 및 캐시(13)에 연관된 데이터 전송을 예시하기 위하여. CPU(11)와 주 메모리(11) 사이에 위치하는 것으로 도시된다. 상기 캐시(13)의 실제 물리적 배치는 시스템 및 프로세서 구조에 따라 변경할 수 있다. 또한, 캐시 제어기(15)는, 캐시(13)의 동작을 제어하기 위하여, 캐시(13) 및 버스(14)와 연결되도록 도시된다. 상기 제어기(15)와 같은 캐시 제어기의 동작은, 이 기술 분야에서 잘 알려져 있기 때문에, 다음의 도면들에 캐시 제어기는 도시되지 않는다. 일부 제어기는 도시된 캐시의 동작을 제어하기 위한 CPU(10)의 제어하에 있는 것으로 가정된다.
동작 중, 메모리(11)와 CPU(10) 간의 정보 전송은 CPU(10)로부터의 메모리 액세스에 의해 달성된다. CPU(10)에 의해 캐싱 가능한 데이터가 현재 또는 곧 액세스될 경우, 그 데이터는 먼저 캐시(13)에 할당된다. 즉, CPU(10)가 메모리(11)로부터 임의의 정보를 액세스하는 경우, 캐시(13)로부터 그 정보를 구한다. 만일, 액세스된 데이터가 캐시(13)에 있다면, "적중(hit)"이 발생한다. 그렇지 않으면, "적중실패(miss)"가 발생하고, 그 데이터에 대한 캐시 할당이 시도된다. 일반적인 실례에 따르면, 대부분의 액세스(로드 또는 저장)는 캐시(13)의 할당을 요구한다. 다만 캐싱 불가능한 액세스는 캐시에 할당되지 않는다.도2를 참조하여, 다중 캐시 배열을 적용한 컴퓨터 시스템이 도시된다. 역시, CPU(10)는 버스(14)에 의해 주 메모리(11)에 연결되고, 상기 주 메모리(11)는 대용량 기억 장치(12)에 연결된다. 도2의 예에서는, 두 개의 분리된 캐시 메모리(21, 22)가 도시된다. 상기 캐시(21, 22)는 직렬로 배열되고, 각각은 레벨1(L1) 캐시 및 레벨2(L2) 캐시라 불리는 캐시 레벨을 나타낸다. 또한, L1 캐시(21)는 CPU(10)의 일부분으로 도시되고, 반면에 L2 캐시(22)는 CPU(10)의 외부에 도시된다. 낮은 레벨의 캐시는 프로세서의 외부에 배치되는 반면, L1 캐시는 프로세서 칩 상에 배치하는 일반적인 실례를 예시하는데, 여기서, 상기 낮은 레벨의 캐시는 프로세서 코어로부터 멀리 떨어져 있다. 여러 캐시 메모리의 실제 배치는 프로세서 구조에 따라 선택 설계되거나 규정된다. 따라서, L1 캐시가 CPU(10)의 외부에 배치될 수 있다는 것을 알 수 있다.
일반적으로, CPU(10)는 실행 유닛(23), 레지스터 파일(24) 및 페치/디코더 유닛(25)을 포함한다. 상기 실행 유닛(23)은 다양한 산술적(또는 비메모리) 프로세서 명령어를 수행하기 위한 CPU(10)의 프로세싱 코어이다. 상기 레지스터 파일(24)은 실행 유닛(23)에 의해 요구된 다양한 정보를 저장(또는 축적)하기 위한 일반적 목적의 레지스터 세트이다. 보다 진보된 시스템에서는 하나 이상의 레지스터가 존재할 수 있다. 상기 페치/디코더 유닛(25)은 실행될 프로그램의 명령어를 보존하는 기억 장소(주 메모리(11)와 같은)로부터 명령을 인출하고, 실행 유닛(23)에 의해 실행하도록 상기 명령을 복호화한다. 파이프라인형 구조를 사용하는 보다 진보된 프로세서에서는, 명령어가 실제적으로 요구되기 전에 미래의 명령어가 사전인출되고 복호화되어, 필요시 프로세서가 인출되어질 명령어를 기다리는 유휴 상태(idle)가 되지 않도록 한다.
상기 CPU(10)의 여러 유닛(23-25)은 내부 버스 구조(27)에 연결된다. 버스 인터페이스 유닛(BIU)(26)은 CPU(10)의 여러 유닛을 버스(14)에 연결하기 위한 인터페이스를 제공한다. 도2에 도시된 바와 같이, L1 캐시는 내부 버스(27)에 연결되고, CPU(10)에 대한 내부 캐시로서 기능을 한다. 그러나, L1 캐시는 CPU(10)의 외부에 위치하여 버스(14)에 연결될 수 있다는 것을 다시 한번 강조한다. 캐시는 데이터, 명령 또는 양쪽 모두를 캐싱하는데 사용되어 진다. 일부 시스템에서, 실제적으로, L1 캐시는 데이터를 캐싱하기 위한 섹션 및 명령을 캐싱하기 위한 섹션의 두 섹션으로 나뉜다. 그러나, 설명의 간소화를 위해, 상술한 다양한 캐시는, 이하에서 데이터로 통칭된 데이터, 명령어 및 다른 정보를 갖는 단일 캐시로 도면에 도시된다. 도2에 도시된 유닛들의 동작은 알려진 것으로 간주한다. 또한, CPU(10)는 도시된 소자들 뿐만 아니라 실제로는 더 많은 소자들을 포함한다고 여겨진다. 따라서, 본 발명의 이해를 위해 관련되는 구조들만이 도2에 도시되었다. 일실시예에서, 본 발명은 데이터 캐시를 갖는 시스템에서 이용된다. 그러나, 본 발명은 어떤 형태의 캐시에도 적용할 수 있다.
또한, 상기 컴퓨터 시스템은 하나 이상의 CPU(도2에서 점선으로 표시된 바와 같이)를 포함할 수 있다. 이러한 시스템에서, 통상적으로 다중 CPU는 주 메모리(11) 및/또는 대용량 저장 장치(12)를 공유한다. 따라서, 이 컴퓨터 시스템에 연관된 일부 또는 모든 캐시는 컴퓨터 시스템의 여러 프로세서에 의해 공유될 수 있다. 예를 들어, 도2의 시스템에 있어서, 각 프로세서의 L1 캐시(21)는 각자의프로세서에서만 사용되지만, 주 메모리(11)는 시스템의 모든 CPU에 의해 공유된다. 추가로, 각 CPU는 연관된 외부의 L2 캐시(22)를 구비한다.
본 발명은 단일 CPU 컴퓨터 시스템 또는 다중 CPU 컴퓨터 시스템에서 실행될 수 있음을 알수 있다. 또한, 메모리를 액세스하는 다른 형태의 유닛(이외의 프로세서)이 여기서 기술된 CPU에 상응하는 기능을 할 수 있으며, 이에 따라, 기술된 CPU와 유사한 메모리 액세스 기능을 수행할 수 있음을 알 수 있다. 예를 들어, 직접 메모리 액세스(DMA) 장치는 여기서 기재된 프로세서와 유사하게 메모리를 액세스할 수 있다. 따라서, 하나의 프로세서(CPU)를 구비하고, 하나 또는 그 이상의 메모리 액세스 장치를 구비한 컴퓨터 시스템은, 여기서 기술된 다중 프로세서 시스템에 상응하는 기능을 수행하게 된다.
기술한 바와 같이, 단지 두 개의 캐시(21, 22)가 도시된다. 그러나, 상기 컴퓨터 시스템은 단지 캐시의 두 레벨에 대해 한정될 필요는 없다. 현재, 보다 진보된 시스템에서는 제3 레벨(L3) 캐시를 사용하는 것이 관례이다. 또한, 캐시 메모리를 직렬로 배열하여, 데이터는 L1 캐시에서 캐싱되고, L2 캐시에도 캐싱되는 것이 관례이다. 만일, L3 캐시가 존재한다면, 통상적으로, L2 캐시에서 캐싱된 데이터는 L3 캐시에도 캐싱된다. 이에 따라, 특정 캐시 레벨에서 캐싱된 데이터는 더 높은 레벨의 캐시 계층 전부에서도 캐싱된다.도3은 본 발명 기술이 구현된 캐시 메모리의 조직적 구조의 일실시예를 도시한 블록도이다. 캐시 구조에는, 일반적으로, "x"개의 세트가 있고, 각 세트 당 "y"개의 경로(여기서, y≥2)가 있으며, 각 경로는 하나의 데이터 엔트리 또는 하나의 캐시 라인을 포함한다. 본 발명은 세트 내의 경로 중 하나가 넌템포럴(NT) 데이터를 포함하는지를 나타내는, 캐시 세트당 LRU 로크 비트(lock bit)를 제공한다. 그렇게 되면, 정규 또는 의사 LRU 비트는 NT 데이터를 가리키도록 업데이트 된다. 또한, 각 세트마다 "z"개의 정규 또는 의사 LRU 비트가 있다. 만약, 상기 LRU 로크 비트가 설정되지 않았다면, 상기 정규 또는 의사 LRU 비트가, 적용된 LRU 기술에 따른 세트 내의 경로를 지시한다. 세트당 정규 또는 의사 LRU 비트의 수는 세트당 경로의 수 및 적용된 LRU(정규 또는 의사) 기술에 따라 달라진다.
도시된 실시예에서와 같이, 상기 캐시(50)는 4-경로 세트 관련 캐시(four-way set associative cache)로 구성된다. 도3의 예에서, 각 페이지는 1/4 캐시 사이즈와 동일한 것으로 도시된다. 특히, 캐시(50)는 동일한 사이즈의 네가지 경로(예를 들어, 경로0(52), 경로1(54), 경로2(56) 및 경로3(58))로 나누어지고, 주 메모리(11)(도1 및 도2 참조)는 페이지(일례로, 페이지0 ~ 페이지n)로 나누어지는 것으로 보여진다. 다른 실시예에서, 각 페이지는 캐시의 사이즈보다 크거나 또는 작을 수 있다. 캐시의 조직적 구조(도3에 도시된 바와 같은)는, 도1의 캐시(13), 도2의 L1 캐시 및/또는 L2 캐시(22) 내에서 적용될 수 있다.
또한, 상기 캐시(50)는, 최근 최소 사용된 데이터(또는, NT 데이터, 바이어스 LRU 기술이 적용된 경우)를 갖는 세트 내의 경로를 각각 나타내는 LRU 비트(600- 60n) 어레이를 포함한다. 이러한 리스팅은, 캐시 세트가 가득찬 경우에 어떤 캐시 엔트리를 겹쳐쓸 것인지를 결정하기 위하여, 캐시 제어기(15)의 제어하에 LRU 기술에 따라 수행된다. 일실시예에서는, 최근 최소 사용된 디렉토리 알고리즘을 정확히 추적하는 LRU 기술이 적용될 수 있다. 다른 실시예에서는, 최근 최소 사용된 디렉토리 구성요소를 추적하도록 최선의 시도를 수행하는 의사 LRU 알고리즘이 적용된다. 또한, 상기 비트(600- 60n)는 LRU 비트(600- 60n)를 나타내고, LRU 비트(600- 60n) 어레이는 LRU 비트(60)로 나타낼 수 있다.
또한, 캐시(50)는, 임의의 세트 내의 경로(52, 54, 56, 58) 중 어느 것이 캐시(50)를 오염시켜서는 안되는 테이터(즉, 드물게 사용되는 데이터)를 포함하는지를 나타내는 LRU 로크 비트(700- 70n) 어레이를 포함하는데, 이는 다음 부분에서 상세히 기술된다,
도4는 본 발명의 원리에 따른 캐시 관리 기술을 도시한 테이블이다. 본 발명은, 해당 캐싱된 데이터 중 어느 것이 스트리밍 또는 넌템포럴로서, 해당 세트에 캐시 적중실패가 발생하면 교체되는 첫번째 엔트리가 될 데이터인지를 나타내는 LRU 로크 비트(700- 70n) 어레이를 사용한다. 일실시예에서, LRU 로크 비트(70)가 1로 설정(set)되었다는 것은 해당 세트가 넌템포럴 엔트리를 가지고 있음을 나타낸다. 만약, LRU 로트 비트(70)가 설정 해제(clear)된 상태라면, 템포럴 명령어에 의해 캐시 적중이 발생하였을 경우, 적용된 LRU 기술에 따라 해당 LRU 비트(60)가 업데이트되고(도4의 항목1 참조), 관련된 LRU 로크 비트는 업데이트 되지 않는다. 그러나, 만약, LRU 로크 비트(70)가 이미 1로 설정된 경우(해당 세트가 넌템포럴 명령어를 가지고 있음을 나타냄)에는, LRU 로크 비트(70)는 업데이트되지 않고, LRU 비트(60)도 업데이트되지 않는다(항목2 참조).
넌템포럴 명령어에 의해 캐시 적중된 경우에는, LRU 로크 비트(70)의 상태에 관계없이, LRU 비트(60) 및 LRU 로크 비트(70)는 업데이트 되지 않는다(항목3 참조). 다른 실시예에서는, L1 캐시 제어기의 제어 레지스터에서의 모드 비트를 통해 제어됨에 따라, 스트리밍 또는 넌템포럴 명령어에 의해 캐시 적중이 발생하면 LRU 비트를 적중된 경로로 만든다(항목4 참조). 또한, LRU 로크 비트(70)는 1로 설정된다. 이러한 실시예에서, 스트리밍 또는 넌템포럴 명령어에 의해 적중된 데이터는 해당 세트에 대한 캐시 적중실패가 발생하면 첫 번째로 교체된다.
템포럴 명령어에 의해 캐시 적중실패가 발생하면, LRU 로크 비트는 설정 해제되고, LRU 비트(60)는 의사 LRU 기술을 바탕으로 업데이트 된다(항목5). 그러나, 스트리밍 또는 넌템포럴 명령어에 의해 캐시 적중실패가 되면, LRU 로크 비트(70)는 1로 설정되고, 해당 LRU 비트(60)는 업데이트 되지 않는다(항목6).이제, 도4의 테이블에 제공된 각 항목의 예들이 토의될 것이다. 도5A 및 도5B는 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리 구성의 일례를 도시한다. 이 예는 도4의 항목1에 해당한다. 여기서, LRU 로크 비트(700)는 이미 캐시 세트0에 대해 설정 해제된 상태이고, 캐시 세트0이 템포럴 명령어에 의해 적중되었기 때문에, LRU 로크 비트(700)는 업데이트 되지 않는다. 그러나, LRU 비트(600)는 적용된 LRU 기술에 따라 업데이트된다. 이 예에서, 의사 LRU 기술은, 경로3이 최근 최소 사용된 엔트리임을 나타내는 것으로 가정한다.도6A 및 6B는 템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리 구성의 다른 예를 도시한다. 이 예는 도4의 항목2에 해당한다. 여기서, LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정되어 있는데, 이것은 해당 세트가 넌템포럴 데이터를 포함하고 있음을 나타낸다. 따라서, LRU 로크 비트(700) 및 LRU 비트(600)는 모두 업데이트 되지 않는다.도7A 내지 도7D는 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리의 구성의 일례를 도시한다. 이 예는 도4의 항목3에 해당하며, L1 캐시 제어기에 위치한 모드 비트를 0으로 설정함으로써 구현될 수 있다(도4 참조). 첫 번째 경우(7A 및 7B)에서, LRU 로크 비트(700)는 이미 캐시 세트0에 대해 설정 해제된 상태이다. 이러한 실시예에서, 넌템포럴 캐시 적중은 LRU 로크 비트(70)를 업데이트 하지 않는다. 따라서, 캐시 세트0이 넌템포럴 명령어에 의해 적중되었기 때문에, LRU 로크 비트(700) 및 LRU 비트(600)는 모두 업데이트되지 않는다. 두 번째 경우(도7C 및 도7D)에서, LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정된 상태인데, 이것은 해당 세트가 넌템포럴 데이터를 포함하고 있음을 나타낸다. 따라서, LRU 로크 비트(70) 및 LRU 비트(600)는 모두 업데이트되지 않는다.도8A 내지 도8D는 넌템포럴 명령어가 캐시 세트0의 경로2에 대해 적중되기 전과 후의 캐시 메모리의 구성의 다른 예를 도시한다. 이 예는 도4의 항목4에 해당하며, L1 캐시 제어기에 위치한 모드 비트를 1로 설정함으로써 구현될 수 있다(도4참조). 첫 번째 경우(도8A 및 도8B)에서, LRU 로크 비트(700)는 이미 캐시 세트0에 대해 설정 해제된 상태이다. 도7A 내지 도7D에 도시된 예에 대한 다른 실시예에서는, 넌템포럴 캐시 적중이 LRU 로크 비트(70)를 업데이트한다. 따라서, 도8A에 도시된 바와 같이, 캐시 세트0이 넌템포럴 명령어에 의해 적중되었기 때문에, LRU 로크 비트(700)는, 도8B에 도시된 바와 같이 업데이트된다(1로 설정됨). 또한, LRU 비트(600)는 적중된 경로를 나타내도록 업데이트 된다. LRU 로크 비트(700)가 캐시 세트0에 대해 이미 설정된 경우(도8C 및 도8D), LRU 로크 비트(700)는 1로 설정된 상태로 남는다. 또한, LRU 비트(600)는 세트 내의 적중된 경로를 나타내도록 업데이트된다.도9A 및 도9B는 템포럴 명령어가 캐시 세트0에 대해 적중실패되기 전과 후의 캐시 메모리의 구성의 일례를 도시한다. 이 예는 도4의 항목5에 해당한다. 여기서 LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정된 상태이고, 템포럴 명령어에 의해 목표 세트0에 적중실패가 되었으므로, 캐시에서 상기 템포럴 적중실패를 교체함에 따라, LRU 로크 비트(700)는 상기 세트에 대해 설정 해제된다. 그러나, LRU 비트(600)는 적용된 LRU 기술에 따라 업데이트된다. 이 예에서, 의사 LRU 기술은 경로3이 최근 최소 사용된 엔트리임을 나타낸다.도10A 및 도10B는 넌템포럴 명령어가 캐시 세트0에 대해 적중실패 되기 전 또는 후의 캐시 메모리의 구성의 일례를 도시한다. 이 예는 도4의 항목6에 해당한다. 이 경우에서, LRU 로크 비트(700)는 캐시 세트0에 대해 이미 설정 해제된 상태이다. 캐시세트0에 대해 넌템포럴 적중실패가 발생했기 때문에, LRU 로크 비트(700)는 1로 설정되고, LRU 비트(600)는 해당 세트0에 넌템포럴 데이터를 나타내도록 그대로 남는다.본 발명의 장치 및 방법을 구현함으로써, 캐시 또는 캐시 계층에서 데이터 오염을 최소화 하고, 템포럴 및 넌템포럴 명령어를 관리하기 위한 공유 캐시 구조가 제공된다. 또한, 본 발명의 구현예는 별도의 버퍼의 사용을 제거함으로써, 효과 적인 비용 및 능률성을 향상시킨다.본 발명은 본 발명의 정신 또는 필수적인 특성으로부터 동떨어지지 않는 다른 특정한 형식에서 실시될 수 있다. 상술한 실시예는 실례로써 간주될 뿐 이에 한정되지는 않는다. 이에 따라, 본 발명의 진정한 범위는 앞의 설명이라기 보다는 첨부된 청구항에 의해 나타난다. 상기 청구항과 동등한 의미 및 범위 내에서 가능한 모든 변경은 본 발명의 범위에 포함되어질 것이다.

Claims (26)

  1. 캐시 메모리 관리를 갖는 컴퓨터 시스템에 있어서,
    주 메모리;
    상기 주 메모리에 연결되는 프로세서; 및
    상기 프로세서에 연결되는 적어도 하나의 캐시 메모리
    를 포함하되,
    상기 프로세서는
    넌템포럴 데이터 및 텀포럴 데이터를 처리하도록 명령어를 실행하고, 상기 주 메모리 또는 상기 적어도 하나의 캐시 메모리 중에서 어느 하나로부터 데이터를 액세스하며,
    상기 적어도 하나의 캐시 메모리는
    적어도 두개의 캐시 경로(cache way)를 갖고,
    상기 적어도 두개의 캐시 경로 각각은 상기 적어도 하나의 캐시 메모리에 저장되어 있는 복수의 데이터 세트로 구성되고,
    상기 복수의 데이터 세트 각각은 상기 적어도 하나의 캐시 메모리에 제1비트 및 제2비트를 갖고,
    상기 복수의 데이터 세트 각각의 상기 제1비트는 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 하나의 경로가 제일 먼저 교체될 수 있는 넌템포럴 데이터 - 상기 넌템포럴 데이터는 상기 프로세서에 의해 드물게 사용됨 - 를 포함하는지 여부를 나타내고,
    상기 제2비트는 대응 경로의 데이터 엔트리의 오더(order)를 나타내는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 관련 데이터 세트는
    상기 넌템포럴 데이터를 포함하지 않고,
    상기 오더는
    상기 관련 데이터 세트의 다른 데이터 엔트리에 관하여 상기 데이터 엔트리가 상기 프로세서에 의해 최근 최소 사용된(least recently used) 엔트리인지 여부를 나타내는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  3. 제1항에 있어서,
    상기 제1비트는
    상기 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 하나의 경로가 캐시 적중실패(miss)에 따라 교체되는 상기 넌템포럴 데이터를 포함한다는 것을 나타내도록 설정(set)되는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  4. 제3항에 있어서,
    상기 관련 데이터 세트는
    상기 넌템포럴 데이터를 포함하고,
    상기 제2비트는
    상기 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 하나의 경로에 있는 상기 넌템포럴 데이터를 가리키는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 제1비트는
    상기 관련 데이터 세트에 있는 상기 적어도 두개의 캐시 경로 중에서 어느 경로도 상기 넌템포럴 데이터를 포함하지 않는다는 것을 나타내도록 설정 해제(cleared)되는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  6. 제1항에 있어서,
    상기 적어도 하나의 캐시 메모리 및 상기 프로세서에 연결되는 캐시 제어 로직을 더 포함하되,
    상기 캐시 제어 로직은 상기 적어도 하나의 캐시 메모리를 제어하는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  7. 제6항에 있어서,
    상기 프로세서는
    데이터 액세스를 위한 명령어를 수신하되,
    상기 프로세서는
    상기 데이터가 상기 적어도 하나의 캐시 메모리에 위치하고 있는지 여부를 판단하여, 상기 데이터가 상기 적어도 하나의 캐시 메모리에 위치하고 있으면 상기 적어도 하나의 캐시 메모리로부터 상기 데이터를 액세스하고, 그렇지 않으면 상기 주 메모리로부터 상기 데이터를 액세스하는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  8. 제7항에 있어서,
    상기 적어도 하나의 캐시 메모리로부터 상기 데이터가 액세스되는 경우에,
    상기 캐시 제어 로직은
    상기 데이터가 템포럴인지 여부를 판단하여, 상기 데이터가 템포럴이고 상기 제1비트가 넌템포럴 데이터를 나타내도록 설정되어 있지 않으면 액세스되고 있는 상기 경로에 대응하는 상기 제2비트의 오더를 업데이트하고, 그렇지 않으면 상기 오더를 변경하지 않고 그대로 두는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 액세스되고 있는 경로의 데이터 세트와 관련된 상기 제1비트는
    변경되지 않는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  10. 제7항에 있어서,
    상기 적어도 하나의 캐시 메모리로부터 액세스되는 상기 데이터가 넌템포럴인 경우에,
    상기 캐시 제어 로직은
    생기 액세스되는 데이터가 넌템포럴이라는 것을 나타내도록 상기 제1비트를 구성하고, 상기 제2비트의 상기 오더를 업데이트하는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  11. 제7항에 있어서,
    상기 주 메모리로부터 상기 데이터가 액세스되는 경우에,
    상기 캐시 제어 로직은
    상기 데이터가 넌템포럴인지 여부를 판단하여, 상기 데이터가 넌템포럴인 경우에는 상기 액세스되는 데이터가 넌템포럴이라는 것을 나타내도록 상기 제1비트를 구성하고, 상기 제2비트의 상기 오더를 변경하지 않고 그대로 두는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  12. 제11항에 있어서,
    상기 캐시 제어 로직이 상기 데이터가 템포럴이라고 판단한 경우에,
    상기 캐시 제어 로직은
    상기 액세스되는 데이터가 템포럴이라는 것을 나타내도록 상기 제1비트를 구성하고, 상기 제2비트의 상기 오더를 업데이트하는
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  13. 제1항에 있어서,
    상기 복수의 데이터 세트 각각의 상기 제1비트는
    로크 비트(lock bit)인
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  14. 제1항에 있어서,
    상기 넌템포럴 데이터는
    상기 프로세서에 의해 드물게 사용되도록 미리 결정되어 있는 데이터 타입인
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  15. 제1항에 있어서,
    상기 넌템포럴 데이터는
    캐싱될 필요가 없는 스트리밍 데이터 타입인
    캐시 메모리 관리를 갖는 컴퓨터 시스템.
  16. 템포럴 데이터 및 넌템포럴 데이터를 저장하는 데이터 캐시 메모리에서 넌템포럴 데이터 오염(pollution)을 제거하는 방법에 있어서,
    넌템포럴 명령어가 실행되는 동안 상기 데이터 캐시 메모리의 데이터 캐시 세트에 대한 캐시 적중실패(miss)에 응하여 상기 캐시 세트에 있는 제1비트를 동적으로 설정(set)하는 단계;
    템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중실패 및 설정되어 있는 상기 제1비트에 응하여 상기 적어도 두개의 경로 중에서 하나의 경로에 있는 상기 넌템포럴 데이터를 상기 템포럴 데이터로 교체하는 단계; 및
    상기 적어도 두개의 경로 중에서 하나의 경로에 있는 상기 넌템포럴 데이터를 상기 템포럴 데이터로 교체하는 것에 응하여 상기 데이터 캐시 세트의 상기 제1비트를 동적으로 설정해제(clear)하는 단계
    를 포함하되,
    상기 제1비트는 상기 데이터 캐시 세트에 있는 적어도 두개의 경로 중에서 어느 하나의 경로가 넌템포럴 데이터를 포함하는지 여부를 나타내고, 상기 데이터 캐시 세트에 있는 제2비트는 상기 데이터 캐시 세트에 있는 상기 적어도 두개의 경로의 데이터 엔트리 오더(order)를 나타내는
    방법.
  17. 제16항에 있어서,
    상기 넌템포럴 데이터는
    드물게 사용되도록 미리 결정되어 있는 데이터 타입인
    방법.
  18. 제16항에 있어서,
    상기 넌템포럴 데이터는
    캐싱될 필요가 없는 스트리밍 데이터 타입인
    방법.
  19. 제16항에 있어서,
    상기 데이터 캐시 메모리는
    복수의 데이터 캐시 세트를 포함하고,
    상기 제1비트를 동적으로 설정하는 단계, 상기 제1비트를 동적으로 설정해제하는 단계, 및 넌템포럴 데이터를 교체하는 단계는
    상기 데이터 캐시 메모리 내의 상기 복수의 데이터 캐시 세트의 각 캐시 세트에 대한 명령어 액세스 동안 하나의 캐시 세트에서 동시에 실행되는
    방법.
  20. 제16항에 있어서,
    상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중실패에 응하여 상기 적어도 두개의 경로 중에서 어느 경로가 상기 넌템포럴 데이터를 포함하는지를 가리키도록 상기 데이터 캐시 세트의 상기 제2비트를 갱신하는 단계
    를 더 포함하는 방법.
  21. 제20항에 있어서,
    상기 제1비트의 세팅을 유지하는 단계; 및
    상기 템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중(hit)에 응하여 상기 두개의 경로 중에서 어느 경로가 상기 넌템포럴 데이터를 포함하는지를 가리키도록 상기 제2비트를 유지하는 단계
    를 더 포함하는 방법.
  22. 제20항에 있어서,
    설정되어 있는 제1비트를 유지하여, 상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중에 응하여 상기 두개의 경로 중에서 어느 경로가 상기 넌템포럴 데이터를 포함하는지를 계속 가리키도록 상기 제2비트를 업데이트하지 않고 모드 비트(mode bit)을 설정해제하는 단계
    를 더 포함하는 방법.
  23. 제20항에 있어서,
    설정되어 있는 모드 비트 및 상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중에 응하여 상기 제1비트를 설정하는 단계
    를 더 포함하는 방법.
  24. 제23항에 있어서,
    상기 설정되어 있는 모드 비트 및 상기 넌템포럴 명령어가 실행되는 동안 상기 캐시 세트에 대한 캐시 적중에 응하여 상기 두개의 경로 중에서 어느 경로가 적중되었는지를 가리키도록 상기 데이터 캐시 세트의 상기 제2비트를 업데이트하는 단계
    를 더 포함하는 방법.
  25. 제16항에 있어서,
    상기 템포럴 명령어가 실행되는 동안 상기 캐시 세트의 캐시 적중에 응하여 상기 데이터 캐시 세트의 상기 제1비트의 세팅을 유지하는 단계
    를 더 포함하는 방법.
  26. 제16항에 있어서,
    상기 제1비트는
    로크 비트(lock bit)인
    방법.
KR10-2000-7010799A 1998-03-31 1999-03-24 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조 KR100389549B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/053,386 1998-03-31
US09/053,386 1998-03-31
US09/053,386 US6202129B1 (en) 1998-03-31 1998-03-31 Shared cache structure for temporal and non-temporal information using indicative bits

Publications (2)

Publication Number Publication Date
KR20010042262A KR20010042262A (ko) 2001-05-25
KR100389549B1 true KR100389549B1 (ko) 2003-06-27

Family

ID=21983863

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7010799A KR100389549B1 (ko) 1998-03-31 1999-03-24 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조

Country Status (10)

Country Link
US (2) US6202129B1 (ko)
EP (1) EP1066566B1 (ko)
JP (1) JP4486750B2 (ko)
KR (1) KR100389549B1 (ko)
CN (1) CN1230750C (ko)
AU (1) AU3364599A (ko)
BR (1) BR9909295A (ko)
RU (1) RU2212704C2 (ko)
TW (1) TW573252B (ko)
WO (1) WO1999050752A1 (ko)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978379A (en) 1997-01-23 1999-11-02 Gadzoox Networks, Inc. Fiber channel learning bridge, learning half bridge, and protocol
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
US6216215B1 (en) 1998-04-02 2001-04-10 Intel Corporation Method and apparatus for senior loads
US6542966B1 (en) * 1998-07-16 2003-04-01 Intel Corporation Method and apparatus for managing temporal and non-temporal data in a single cache structure
US7430171B2 (en) 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6560677B1 (en) * 1999-05-04 2003-05-06 International Business Machines Corporation Methods, cache memories, systems and computer program products for storing transient, normal, and locked entries in an associative cache memory
US6728835B1 (en) * 2000-08-30 2004-04-27 Unisys Corporation Leaky cache mechanism
US6681295B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
AU2001294856A1 (en) * 2000-09-29 2002-04-08 Sun Microsystems, Inc. System and method for identifying and managing streaming-data
US6668307B1 (en) * 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
US6578111B1 (en) * 2000-09-29 2003-06-10 Sun Microsystems, Inc. Cache memory system and method for managing streaming-data
US6598124B1 (en) * 2000-09-29 2003-07-22 Sun Microsystems, Inc. System and method for identifying streaming-data
US6766413B2 (en) * 2001-03-01 2004-07-20 Stratus Technologies Bermuda Ltd. Systems and methods for caching with file-level granularity
US6766389B2 (en) * 2001-05-18 2004-07-20 Broadcom Corporation System on a chip for networking
US7287649B2 (en) * 2001-05-18 2007-10-30 Broadcom Corporation System on a chip for packet processing
US6574708B2 (en) 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
US7212534B2 (en) 2001-07-23 2007-05-01 Broadcom Corporation Flow based congestion control
US6823426B2 (en) * 2001-12-20 2004-11-23 Intel Corporation System and method of data replacement in cache ways
US7328328B2 (en) * 2002-02-19 2008-02-05 Ip-First, Llc Non-temporal memory reference control mechanism
US7295555B2 (en) 2002-03-08 2007-11-13 Broadcom Corporation System and method for identifying upper layer protocol message boundaries
US7114043B2 (en) * 2002-05-15 2006-09-26 Broadcom Corporation Ambiguous virtual channels
US7269709B2 (en) * 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7035979B2 (en) * 2002-05-22 2006-04-25 International Business Machines Corporation Method and apparatus for optimizing cache hit ratio in non L1 caches
US7073030B2 (en) 2002-05-22 2006-07-04 International Business Machines Corporation Method and apparatus providing non level one information caching using prefetch to increase a hit ratio
US6904501B1 (en) * 2002-06-17 2005-06-07 Silicon Graphics, Inc. Cache memory for identifying locked and least recently used storage locations
US7934021B2 (en) 2002-08-29 2011-04-26 Broadcom Corporation System and method for network interfacing
US7346701B2 (en) 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
WO2004021626A2 (en) 2002-08-30 2004-03-11 Broadcom Corporation System and method for handling out-of-order frames
US8180928B2 (en) 2002-08-30 2012-05-15 Broadcom Corporation Method and system for supporting read operations with CRC for iSCSI and iSCSI chimney
US7313623B2 (en) 2002-08-30 2007-12-25 Broadcom Corporation System and method for TCP/IP offload independent of bandwidth delay product
US7512498B2 (en) * 2002-12-31 2009-03-31 Intel Corporation Streaming processing of biological sequence matching
JP4008946B2 (ja) * 2003-11-18 2007-11-14 松下電器産業株式会社 キャッシュメモリ及びその制御方法
US7321954B2 (en) * 2004-08-11 2008-01-22 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
US20060101208A1 (en) * 2004-11-09 2006-05-11 Intel Corporation Method and apparatus for handling non-temporal memory accesses in a cache
US7356650B1 (en) * 2005-06-17 2008-04-08 Unisys Corporation Cache apparatus and method for accesses lacking locality
US7437510B2 (en) * 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
US20070150658A1 (en) * 2005-12-28 2007-06-28 Jaideep Moses Pinning locks in shared cache
US8527713B2 (en) * 2006-01-31 2013-09-03 Qualcomm Incorporated Cache locking without interference from normal allocations
GB0603552D0 (en) * 2006-02-22 2006-04-05 Advanced Risc Mach Ltd Cache management within a data processing apparatus
EP1990732A4 (en) * 2006-02-27 2009-09-02 Fujitsu Ltd DEVICE, METHOD AND LRU CONTROL PROGRAM
US20080147989A1 (en) * 2006-12-14 2008-06-19 Arm Limited Lockdown control of a multi-way set associative cache memory
CN101595462B (zh) 2007-01-31 2012-04-25 高通股份有限公司 用以减少多级高速缓冲存储器层级中的掷出的设备和方法
US7793049B2 (en) * 2007-10-30 2010-09-07 International Business Machines Corporation Mechanism for data cache replacement based on region policies
US8108614B2 (en) * 2007-12-31 2012-01-31 Eric Sprangle Mechanism for effectively caching streaming and non-streaming data patterns
BRPI0822963B1 (pt) * 2008-07-23 2019-10-01 Micro Motion, Inc. Método para executar uma rotina de processamento utilizando uma memória externa e uma memória interna, e, sistema de processamento
US8364898B2 (en) * 2009-01-23 2013-01-29 International Business Machines Corporation Optimizing a cache back invalidation policy
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8521963B1 (en) * 2009-09-21 2013-08-27 Tilera Corporation Managing cache coherence
RU2527736C2 (ru) * 2009-12-16 2014-09-10 Телефонактиеболагет Л М Эрикссон (Пабл) Способ, сервер, компьютерная программа и компьютерный программный продукт для кэширования
US9323527B2 (en) * 2010-10-15 2016-04-26 International Business Machines Corporation Performance of emerging applications in a virtualized environment using transient instruction streams
WO2013048493A1 (en) 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
CN103946812B (zh) 2011-09-30 2017-06-09 英特尔公司 用于实现多级别存储器分级体系的设备和方法
EP2761480A4 (en) 2011-09-30 2015-06-24 Intel Corp APPARATUS AND METHOD FOR IMPLEMENTING MULTINIVE MEMORY HIERARCHY ON COMMON MEMORY CHANNELS
EP3451176B1 (en) 2011-09-30 2023-05-24 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9122286B2 (en) * 2011-12-01 2015-09-01 Panasonic Intellectual Property Management Co., Ltd. Integrated circuit apparatus, three-dimensional integrated circuit, three-dimensional processor device, and process scheduler, with configuration taking account of heat
US9519549B2 (en) * 2012-01-11 2016-12-13 International Business Machines Corporation Data storage backup with lessened cache pollution
US8856455B2 (en) 2012-03-28 2014-10-07 International Business Machines Corporation Data cache block deallocate requests
US8874852B2 (en) 2012-03-28 2014-10-28 International Business Machines Corporation Data cache block deallocate requests in a multi-level cache hierarchy
CN103577480B (zh) * 2012-08-07 2017-05-31 中国银联股份有限公司 一种参数划分系统及其方法、一种业务处理系统及其方法
US9558121B2 (en) * 2012-12-28 2017-01-31 Intel Corporation Two-level cache locking mechanism
US9256539B2 (en) 2013-03-07 2016-02-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Sharing cache in a computing system
WO2014142867A1 (en) 2013-03-14 2014-09-18 Intel Corporation Power efficient level one data cache access with pre-validated tags
US20150095586A1 (en) * 2013-09-30 2015-04-02 Advanced Micro Devices , Inc. Storing non-temporal cache data
US11580125B2 (en) * 2015-05-08 2023-02-14 Adp, Inc. Information system with temporal data
US10379827B2 (en) * 2016-12-29 2019-08-13 Intel Corporation Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment
US11681627B1 (en) * 2021-10-18 2023-06-20 Meta Platforms Technologies, Llc Distributed temporal cache for Systems on a Chip

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471605A (en) * 1992-08-27 1995-11-28 Intel Corporation Apparatus for updating a multi-way set associative cache memory status array
US5493667A (en) * 1993-02-09 1996-02-20 Intel Corporation Apparatus and method for an instruction cache locking scheme

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5119453A (en) * 1974-08-08 1976-02-16 Fujitsu Ltd Patsufua memoriseigyohoshiki
JPS5534336A (en) * 1978-08-31 1980-03-10 Fujitsu Ltd Buffer memory control method
JPS58159285A (ja) * 1982-03-17 1983-09-21 Nec Corp バツフアメモリ制御方式
JPH01133162A (ja) * 1987-11-18 1989-05-25 Fujitsu Ltd キャッシュメモリ制御方式
US4905141A (en) 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
JPH0358151A (ja) * 1989-07-26 1991-03-13 Nec Corp キャッシュメモリ装置
JPH0358252A (ja) * 1989-07-27 1991-03-13 Nec Corp キャッシュメモリ制御装置
JPH041838A (ja) * 1990-04-18 1992-01-07 Nec Corp キャッシュメモリ制御回路
JPH04215151A (ja) * 1990-12-13 1992-08-05 Nec Commun Syst Ltd キャッシュ制御方式
DE69224084T2 (de) * 1991-01-15 1998-07-23 Koninkl Philips Electronics Nv Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
GB2255211B (en) * 1991-04-25 1995-05-17 Intel Corp LRU pointer updating in a controller for two-way set associative cache
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
JPH05165726A (ja) * 1991-12-12 1993-07-02 Nec Corp データ処理装置
JPH05233454A (ja) * 1992-02-24 1993-09-10 Hitachi Ltd キャッシュメモリ装置
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US5434992A (en) 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JPH07281957A (ja) * 1994-04-15 1995-10-27 Hitachi Ltd キャッシュ記憶装置およびアクセス命令生成方法
US5826052A (en) 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
JPH07334428A (ja) * 1994-06-14 1995-12-22 Toshiba Corp キャッシュメモリ
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
US5701426A (en) * 1995-03-31 1997-12-23 Bull Information Systems Inc. Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio
US5845317A (en) * 1995-11-17 1998-12-01 Micron Technology, Inc. Multi-way cache expansion circuit architecture
GB2311880A (en) * 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
US5829025A (en) * 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
JPH10207767A (ja) * 1997-01-16 1998-08-07 Toshiba Corp ロック機能付キャッシュメモリ及びこのキャッシュメモリを備えたマイクロプロセッサ
US6434671B2 (en) * 1997-09-30 2002-08-13 Intel Corporation Software-controlled cache memory compartmentalization
US6223258B1 (en) * 1998-03-31 2001-04-24 Intel Corporation Method and apparatus for implementing non-temporal loads
US6105111A (en) * 1998-03-31 2000-08-15 Intel Corporation Method and apparatus for providing a cache management technique
US6205520B1 (en) * 1998-03-31 2001-03-20 Intel Corporation Method and apparatus for implementing non-temporal stores
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471605A (en) * 1992-08-27 1995-11-28 Intel Corporation Apparatus for updating a multi-way set associative cache memory status array
US5493667A (en) * 1993-02-09 1996-02-20 Intel Corporation Apparatus and method for an instruction cache locking scheme

Also Published As

Publication number Publication date
RU2212704C2 (ru) 2003-09-20
KR20010042262A (ko) 2001-05-25
AU3364599A (en) 1999-10-18
CN1295687A (zh) 2001-05-16
US6202129B1 (en) 2001-03-13
BR9909295A (pt) 2000-12-05
JP4486750B2 (ja) 2010-06-23
EP1066566A4 (en) 2002-10-23
US6584547B2 (en) 2003-06-24
WO1999050752A9 (en) 2000-05-25
US20020007441A1 (en) 2002-01-17
EP1066566B1 (en) 2006-11-02
WO1999050752A1 (en) 1999-10-07
TW573252B (en) 2004-01-21
JP2002510085A (ja) 2002-04-02
EP1066566A1 (en) 2001-01-10
CN1230750C (zh) 2005-12-07

Similar Documents

Publication Publication Date Title
KR100389549B1 (ko) 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조
US6105111A (en) Method and apparatus for providing a cache management technique
US6219760B1 (en) Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
JP4028875B2 (ja) メモリを管理するためのシステムおよび方法
US6912623B2 (en) Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6990557B2 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6292871B1 (en) Loading accessed data from a prefetch buffer to a least recently used position in a cache
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US20100217937A1 (en) Data processing apparatus and method
US20070239938A1 (en) Area effective cache with pseudo associative memory
JPH0364893B2 (ko)
EP1012723A1 (en) Cache hierarchy management with locality hints for different cache levels
US20060069843A1 (en) Apparatus and method for filtering unused sub-blocks in cache memories
KR100320974B1 (ko) 수직 캐시 계층구조에서 의사 정밀 아이-캐시의 포함 방법
US7293141B1 (en) Cache word of interest latency organization
US7337278B2 (en) System, method and storage medium for prefetching via memory block tags
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
US11397680B2 (en) Apparatus and method for controlling eviction from a storage structure
WO2010098152A1 (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法

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: 20120601

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee