KR100582340B1 - 캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체 - Google Patents

캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체 Download PDF

Info

Publication number
KR100582340B1
KR100582340B1 KR1020040081254A KR20040081254A KR100582340B1 KR 100582340 B1 KR100582340 B1 KR 100582340B1 KR 1020040081254 A KR1020040081254 A KR 1020040081254A KR 20040081254 A KR20040081254 A KR 20040081254A KR 100582340 B1 KR100582340 B1 KR 100582340B1
Authority
KR
South Korea
Prior art keywords
cache
instruction
counter
instructions
line
Prior art date
Application number
KR1020040081254A
Other languages
English (en)
Other versions
KR20050046535A (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 KR20050046535A publication Critical patent/KR20050046535A/ko
Application granted granted Critical
Publication of KR100582340B1 publication Critical patent/KR100582340B1/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
    • 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/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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

Abstract

본 발명은 컴퓨터용 캐시 시스템에 관한 것이다. 본 발명의 바람직한 실시예에서, DFI 캐시(Dynamic Frequent Instruction cache)는 메인 캐시와 동시에 질의를 받으며, 만약 요청된 어드레스가 어느 한 캐시 내부에 존재하면, 캐시 히트가 발생한다. DFI 캐시는 빈번하게 사용되는 인스트럭션을 메인 캐시보다 오랫 동안 보유하기 때문에, 메인 캐시는 캐시 라인들을 무효화시킬 수 있으며 이 캐시 라인을 다음에 액세스할 때에 캐시 히트의 이점을 여전히 가지게 된다.

Description

캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록 매체{DYNAMIC FREQUENT INSTRUCTION LINE CACHE}
도 1은 본 발명의 바람직한 실시예를 구현하는 데 적합한 컴퓨터 시스템의 블록도,
도 2는 본 발명의 바람직한 실시예를 구현하는 데 적합한 컴퓨터 시스템의 구성 요소들의 블록도,
도 3은 본 발명의 바람직한 실시예에 따른 캐시 시스템의 도면,
도 4는 본 발명의 바람직한 실시예를 구현하는 데 적합한 프로세스 단계들의 흐름도,
도 5는 본 발명의 바람직한 실시예를 구현하는 데 적합한 프로세스 단계들의 흐름도,
도 6은 본 발명의 바람직한 실시예를 구현하는 데 적합한 하드웨어 카운터 스택(a hardware counter stack)의 도면,
도 7은 본 발명의 바람직한 실시예를 구현하는 데 적합한 하드웨어 카운터 스택의 도면.
도면의 주요 부분에 대한 부호의 설명
300 : 보조 캐시 302 : 메인 캐시
304A-G : 캐시 라인 306A-G : 캐시 라인
308A-G : 연관된 카운터
본 발명은 전반적으로 컴퓨터 메모리에 관한 것으로서, 보다 구체적으로는, 자주 액세스되는 라인을 저장하는 컴퓨터 캐시에 관한 것이다.
캐시는 컴퓨터에서 사용되는 상위 레벨 메모리를 지칭한다. 메모리 시스템을 선택할 때에, 설계자는 통상적으로 성능과 속도를 비용 및 다른 제약 사항과 절충시켜야 한다. 가능한 한 가장 효과적인 머신을 생성하기 위해서, 통상적으로 다수의 타입의 메모리가 구현된다.
대부분의 컴퓨터 시스템에서, 프로세서는 최근에 요청된 정보를 요청하는 경향이 있다. 메인 메모리보다는 신속하면서도 소형인 캐시 메모리는 프로세서에 의해 사용되는 인스트럭션을 저장하는 데 사용되어, 이 캐시 내에 저장된 어드레스 라인이 요청될 때에, 캐시는 정보가 메인 메모리로부터 검색되어야 하는 경우보다 신속하게 이 정보를 프로세서로 제공할 수 있다. 이로써, 캐시 메모리는 성능을 향상시킨다.
캐시 성능은 컴퓨터 시스템에서 점점 중요해지고 있다. 요청된 라인이 캐시 내에 존재하기 때문에 메인 메모리로부터 페치될 필요가 없을 경우에 발생하는 캐시 히트(cache hit)는 컴퓨터 시스템에서 시간 및 자원을 절감한다. 따라서, 가능한 한 일관적인 캐시 히트의 가능성을 증가시키고 캐시 미스(cache miss)를 감소시키기 위해서 지금까지 여러 유형의 캐시가 개발되어 왔다.
여러 유형의 캐시가 종래 기술 시스템에서 사용되어 왔다. 인스트럭션 캐시(I-캐시)는 메인 메모리로부터 인스트럭션을 액세스하는 것과 관련된 지연을 유발하지 않으면서 인스트럭션 페치가 이루어질 수 있도록 저장 장소의 시간적 및 공간적 위치를 이용한다. 그러나, 빈번하게 사용되지만 시간적으로 또는 공간적으로 이격된 캐시 라인들은 여전히 그 캐시의 연관성 및 크기에 따라서 그 캐시로부터 축출될 수도 있다. 캐시 미스 시에, 프로세서는 메인 메모리로부터 그 라인을 페치하게 되며 이로써 전체 성능을 감소시킨다.
따라서, 캐시 라인들이 이들의 사용 빈도에 따라서 계속해서 캐시되게(cached) 하여 캐시 메모리의 전체 히트 레이트를 잠재적으로 증가시킬 수 있는 방법 및 장치가 필요하다.
본 발명의 바람직한 실시예에서, 컴퓨터 시스템용 캐시 시스템에는 다수의 제 1 인스트럭션을 저장하는 제 1 캐시 및 다수의 제 2 인스트럭션을 저장하는 제 2 캐시가 제공되며, 제 1 캐시 내의 각 인스트럭션은 자신이 액세스될 때에 증분되는 연관 카운터를 갖는다. 이 실시예에서, 이 카운터가 임계치에 도달하면, 이와 관련된 인스트럭션은 제 1 캐시에서 제 2 캐시로 복사되며, 이 인스트럭션은 제 1 캐시 내의 그의 저장 위치에서보다 더 긴 주기 동안 제 2 캐시에서 유지되고 오버라이트(overwrite)되지 않는다.
본 발명의 새로운 특징들은 첨부된 청구 범위에서 제안된다. 그러나, 본 발명 자체 뿐만 아니라 본 발명의 바람직한 사용 모드, 다른 목적 및 장점들은 첨부된 도면과 함께 다음의 발명의 구성 부분을 참조하게 되면 최선으로 이해될 것이다.
이제 도면을 참조하면, 특히 도 1을 참조하면, 본 발명의 바람직한 실시예에 따라서 본 발명이 구현될 수 있는 데이터 처리 시스템이 도시되어 있다. 시스템 유닛(110)과, 비디오 디스플레이 단말기(102)와, 키보드(104)와, 플로피 디스크 및 다른 타입의 영구적으로 저장하면서 이동가능한 저장 매체와 같은 저장 장치(108), 및 마우스(106)를 포함하는 컴퓨터(100)가 도시되어 있다. 가령, 조이스틱, 터치패드, 터치 스크린, 트랙볼, 마이크로폰 등과 같은 추가적인 입력 장치가 개인용 컴퓨터(100) 내에 포함될 수 있다. 컴퓨터(100)는 미국 뉴욕 아몬크 소재하는 IBM사의 제품인 IBM RS/6000 컴퓨터 또는 IntelliStation 컴퓨터와 같은 임의의 적합한 컴퓨터를 사용하여 구현될 수 있다. 도 1에는 컴퓨터가 도시되어 있지만, 본 발명의 다른 실시예는 네트워크 컴퓨터와 같은 다른 타입의 데이터 처리 시스템에 구현될 수도 있다. 또한, 컴퓨터(100)는 바람직하게는 컴퓨터(100) 내부에서 실행되며 컴퓨터 판독가능한 매체 내에 존재하는 시스템 소프트웨어에 의해서 구현될 수 있는 그래픽 유저 인터페이스(GUI)를 포함한다.
도 2에서는, 본 발명이 구현될 수 있는 데이터 처리 시스템의 블록도가 도시된다. 데이터 처리 시스템(200)은 본 발명의 프로세스를 구현하는 코드 또는 인스트럭션이 위치하는 도 1의 컴퓨터(100)와 같은 컴퓨터의 예이다. 이 데이터 처리 시스템(200)은 PCI(a peripheral component interconnect) 로컬 버스 아키텍쳐를 사용한다. 도시된 실례가 PCI 버스를 사용하지만, AGP(Accelerated Graphics Port) 및 ISA(Industry Standard Architecture)와 같은 다른 버스 아키텍쳐가 사용될 수도 있다. 프로세서(202) 및 메인 메모리(204)는 PCI 브리지(208)를 통해서 PCI 로컬 버스(206)에 접속된다. PCI 브지리(208)는 프로세서(202)를 위한 통합형 메모리 제어기 및 캐시 메모리를 포함한다. PCI 로컬 버스(206)로의 추가적인 접속은 직접 구성 요소 상호 접속부 또는 애드인 보드(add-in board)를 통해서 이루어진다. 도시된 실례에서, LAN(local area netwrok) 어댑터(210), 소형 컴퓨터 시스템 인터페이스(SCSI) 호스트 버스 어댑터(212) 및 확장 버스 인터페이스(214)가 직접적인 구성 요소 접속에 의해서 PCI 로컬 버스(206)로 접속된다. 이와 대조적으로, 오디오 어댑터(216), 그래픽 어댑터(218) 및 오디오/비디오 어댑터(219)는 확장 슬롯 내부로 삽입된 애드인 보드에 의해서 PCI 로컬 버스(206)로 접속된다. 확장 버스 인터페이스(214)는 키보드 및 마우스 어댑터(220), 모뎀(222) 및 추가 메모리(224)를 접속시킨다. SCSI 호스트 버스 어댑터(212)는 하드 디스크 드라이브(226), 테이프 드라이브(228) 및 CD 롬 드라이브(230)를 접속시킨다. 통상적인 PCI 로컬 버스 구현은 3개 또는 4개의 PCI 확장 슬롯 또는 애드인 커넥터를 지원할 것이다.
운영 체제는 프로세서(202) 상에서 실행되어 도 2의 데이터 처리 시스템(200) 내부의 다양한 구성 요소들을 제어하고 조정하는 데 사용된다. 이 운영 체제는 마이크로소프트사로부터 입수가능한 윈도우 2000과 같은 상업적으로 입수가능한 운영 체제일 수 있다. 자바와 같은 객체 지향 프로그래밍 시스템이 이 운영 체제와 함께 실행되며 데이터 처리 시스템(200) 상에서 실행되는 애플리케이션 또는 자바 프로그램으로부터 운영 체제에 대한 호출을 제공한다. "자바"는 선 마이크로시스템스 사의 상표이다. 운영 체제, 객체 지향 프로그래밍 시스템 및 애플리케이션 또는 프로그램을 위한 인스트럭션은 하드 디스크 드라이브(206)와 같은 저장 장치 상에 위치하며 프로세서(202)에 의해 실행되기 위해서 메인 메모리(204) 내부로 로딩된다.
본 기술 분야의 당업자는 도 2의 하드웨어가 구현예에 따라서 변할 수 있음을 이해할 것이다. 플래시 ROM (또는 등가의 비휘발성 메모리) 또는 광학 디스크 드라이브 등과 같은 다른 내부 하드웨어 또는 주변 장치는 도 2에 도시된 하드웨어 대신에 또는 더불어 사용될 수도 있다. 또한, 본 발명의 프로세스는 다중프로세서 데이터 처리 시스템에도 적용될 수 있다.
가령, 선택 사양적으로 네트워크 컴퓨터로서 구현되는 경우, 데이터 처리 시스템(200)은 SCSI 호스트 버스 어댑터(212), 하드 디스크 드라이브(226), 테이프 드라이브(228) 및 CD-ROM(230)를 포함하지 않을 수도 있다. 이 경우에, 적절하게는 클라이언트 컴퓨터라고 지칭되는 이 컴퓨터는 LAN 어댑터(210), 모뎀(222) 등과 같은 몇몇 타입의 네트워크 통신 인터페이스를 포함해야 한다. 다른 실례로서, 데이터 처리 시스템(200)은 이 데이터 처리 시스템이 몇몇 타입의 네트워크 통신 인터페이스를 포함하는지의 여부와 상관없이 이러한 네트워크 통신 인터페이스에 의존하지 않고도 부팅될 수 있도록 구성되는 독립형 시스템일 수 있다. 또 다른 실례로서, 이 데이터 처리 시스템(200)은 운영 체제 파일 및/또는 사용자가 생성한 데이터를 저장하는 비휘발성 메모리를 갖도록 ROM 및/또는 플래시 ROM과 함께 구성되는 PDA(a personal digital assistant)일 수 있다.
도 2에 도시된 실례 및 상술된 실례들은 아키텍쳐적으로 한정하기 위한 것이 아니다. 가령, 데이터 처리 시스템(200)은 PDA 형태를 취하는 것 외에도 노트북 컴퓨터 또는 휴대용 컴퓨터일 수 있다. 또한, 이 데이터 처리 시스템(200)은 키오스크(a kiosk) 또는 웹 어플라이언스(a web appliance)일 수 있다.
본 발명의 프로세스는 가령 메인 메모리(204), 메모리(224)와 같은 메모리 내부 또는 하나 이상의 주변 장치(226-230) 내부에 위치하는 컴퓨터 구현형 인스트럭션을 사용하여 프로세서(202)에 의해 수행된다.
본 발명은 가령 도 1 및 도 2에 도시된 시스템과 같은 컴퓨터 시스템을 위한 혁신적인 캐시 시스템을 제공한다. 바람직한 실시예에서, 본 발명의 캐시 시스템은 가령 메인 메모리(204)의 일부로서 또는 다른 캐시 메모리로서 구현된다.
바람직한 실시예에서, DFI(a Dynamic Frequent Instruction) 캐시가 가령 인 스트럭션 캐시(I 캐시)와 같은 메인 캐시와 함께 구현된다. 이 두 캐시는 동시에 질의를 받으며 이로써 라인이 어느 한 캐시 내에 존재한다면, 그 질의가 캐시 히트를 발생할 것이다.
일 실시예에서, 메인 캐시 내의 캐시 라인은 그 어드레스 라인이 액세스될 때마다 증분되는 연관 카운터를 구비하고 있다. 이 카운터가 소정의 값에 도달하면, 이 라인은 그 캐시로부터 제거되어 DFI 캐시 내부로 배치된다. 이로써, DFI 캐시는 보다 빈번하게 액세스되는 라인을 메인 캐시보다 오래 동안 보유하게 된다.
다른 실시예에서, 메인 캐시에는 가장 빈번하게 참조되는 라인을 카운트하는 하드웨어 카운터가 제공된다. 아이템이 메인 캐시로부터 제거될 때, 최고 카운터 값은 어느 라인이 제거될지를 판정한다. 이 제거된 라인은 바람직하게는 DFI 캐시 내부로 이동되고, 이로써 보다 빈번하게 액세스되는 라인은 이 캐시 내에 보다 오래 동안 유지된다.
도 3은 본 발명의 바람직한 실시예에 부합되는 컴퓨터 시스템용 캐시 아키텍쳐를 도시한다. 이 도시된 실례에서는, 두 개의 캐시, 즉 제 1 캐시(302)(예를 들어, 인스트럭션 캐시 즉 I 캐시) 및 DFI 캐시(300)가 존재한다. 이 예에서의 제 1 캐시(302)는 I 캐시(302)의 각 라인(306A-G)에 대응하는 카운터(308A-G)를 위한 공간을 포함한다. 각 라인(306A-G)은 이에 대응하는 각 카운터(308A-G)를 가지고 있으며, 라인(306A)과 같은 라인이 액세스될 때마다, 그의 카운터(308A)가 증분된다. 이 예시적인 실례에서는 제 1 캐시는 I 캐시이지만, 가령 N.P.Jouppi에 의해서 IEEE, CH2887-8/9/90에서 발행되고 본 발명에서 참조로서 인용되는 "Improving Direct-Mapped Cache Performance by the Addiction of a Small Fully-Associative Cache and Prefetch Buffers"에서 개시된 빅팀 캐시(victim cache)와 같은 다른 타입의 캐시가 대신 구현될 수 있다.
카운터가 사전결정된 임계치(또는 구현에 따라서 가변하는 임계치)에 도달하게 되면, 그 라인은 I 캐시(302)로부터 제거되어 DFI 캐시(300) 내부로 배치되는데 여기에 배치된 라인은 가령 라인(304A)이다. 본 실례에서, DFI 캐시는 전적으로 연관성 캐시이며 새로운 라인이 부가될 경우에 어느 라인이 오버라이트할지를 결정하기 위해서는 LRU(Least Recently Used) 방침을 따른다.
DFI 캐시는 가령 연관된 카운터가 임계치를 도달함으로써 빈번하게 액세스되는 것으로 판정된 인스트럭션 라인을 저장하는 추가 캐시이다. 위의 실례에서, I 캐시 및 DFI 캐시는 바람직하게는 동시에 질의를 받게 된다. 이로써, 만일에 탐색되고 있는 인스트럭션이 DFI 캐시 또는 I 캐시 중 어느 한 캐시 내에 존재한다면, 캐시 히트가 발생한다. 이 DFI 캐시는 소정의 인스트럭션이 빈번하게 액세스되는 것으로 판정되면 갱신될 것이다.
본 발명이 해당 카운터가 임계치에 도달함으로써 "빈번하게 액세스되는" 인스트럭션 라인을 기술하지만, 소정의 인스트럭션을 "빈번하게 액세스되는" 인스트럭션으로 지정하는 다른 방법이 본 발명의 범위 내에서 구현될 수 있다.
DFI 캐시는 빈번하게 사용되는 라인을 통상적인 인스트럭션 캐시보다 오래 동안 보유하고 있다. 이로써, 이 통상적인 인스트럭션 캐시는 빈번하게 사용되는 라인으로 고려되는 라인을 포함하는 라인들을 무효화시킨다. 이러한 인스트럭션이 다시 요청될 때에, 이 인스트럭션은 DFI 캐시 내에 발견되고 캐시 히트가 발생한다. 따라서, 본 발명의 메카니즘에 의해서, 몇 개의 캐시 미스는 캐시 히트로 되게 된다. 라인이 DFI 캐시에서만 발견되면, 이 라인은 오직 DIF 캐시에서만 보유될 수 있거나 DFI 캐시로부터 제거되어 메인 캐시 내부로 복사되거나 DFI 캐시 내부에 유지되면서 메인 캐시 내부로 복사될 수 있다. 바람직한 실시예에서, DFI 캐시 내에서 액세스된 라인의 액세스 빈도가 카운터에 의해 측정된다. 가령, 최종 "X" 번의 액세스를 추적하는 알고리즘이 사용될 수 있으며, 여기서 "X"는 사전결정된 수이다. 또한, DFI 캐시 내에서 액세스된 라인의 액세스 빈도를 추적하는 다른 방법이 본 발명의 범위 내에서 구현될 수 있다.
DFI 캐시는 직접 맵핑된 캐시(a direct mapped cache) 또는 세트 연관성 캐시(a set associative cache)로서 구성될 수 있으며, 그 크기는 바람직하게는 공간과 성능이 서로 절충될 수 있도록 선택된다.
다른 예시적인 실시예에서, I 캐시(302)의 빈번하게 사용되는 캐시 라인(306A)과 연관된 카운터(308)와 같은 카운터는 해당 캐시 라인(306A)이 액세스될 때마다 증분되지만, 그 I 캐시(302) 내의 다른 캐시 라인과 연관된 카운터는 감분된다. 소정의 라인이 I 캐시 내에서 대체될 때에는, 최저 카운터 값을 갖는 라인이 대체될 라인으로 선택된다.
이러한 프로세스로 인해서 DFI 캐시(300)는 보다 빈번하게 액세스되는 보다 높은 카운터 값을 갖는 라인을 보다 오래 동안 보유하게 된다.
도 4는 본 발명의 바람직한 실시예를 구현하는 프로세스의 흐름도이다. 이 예시적인 프로세스에서, 가령 메인 캐시(302)에서 캐시 히트가 발생하면 카운터가 증분된다. 메인 캐시(302) 내의 소정의 라인의 해당 카운터가 임계치를 초과하면, 이 라인은 빈번하게 액세스되는 라인으로 간주되어서 이 라인은 보조 캐시 내부로 이동된다. 이 실례에서, 이러한 방식으로 메인 캐시에서 보조 캐시(300) 내부로 이동된 데이터는 이 보조 캐시로부터 액세스된다.
본 실례는 메인 캐시는 도 3의 캐시(302)에 대응하고 보조 캐시는 도 3의 DFI 캐시(300)에 대응하는 실례이다. 이 프로세스는 메모리 어드레스가 메인 캐시 내에서 발견되는지를 체크함으로써 시작된다(단계 402). 만일 메모리 어드레스가 발견되면, 그 캐시 라인과 연관된 카운터가 증분한다(단계 404). 카운터가 임계치를 초과하면(단계 406), 보조 캐시에 공간이 있는지에 대해서 체크된다(단계 408). 만일 카운터가 임계치를 초과하지 않는다면, 이 데이터는 메인 캐시로부터 간단하게 액세스되고(단계 416) 프로세스가 종료된다.
만일 카운터가 임계치를 초과하고 보조 캐시가 차 있다면, 보조 캐시 내에서 대체될 엔트리가 선택된다(단계 410). 만일 보조 캐시가 차 있지 않다면, 또는 보조 캐시 내에서 대체될 엔트리가 선택된 후에, 그 캐시 라인은 메인 캐시로부터 보조 캐시로 이동한다(단계 412). 이 단계는 메인 메모리로부터 그 캐시 라인을 제거하는 단계를 포함한다. 이어서, 그 데이터는 보조 캐시로부터 액세스되며(단계 414) 프로세스가 종료된다.
단계(402)에서 탐색된 메모리 어드레스가 메인 캐시 내에서 발견되지 않는다 면, 이 메모리 어드레스는 보조 캐시 내에서 체크된다(단계 418). 만일 그 어드레스가 발견되면, 프로세스는 단계(414)로 진행하고, 데이터는 보조 캐시로부터 액세스된다. 메모리 어드레스가 보조 캐시 내에서 발견되지 않는다면, 메인 캐시의 공간이 차 있는 지의 여부가 체크된다(단계 420). 메인 캐시가 차 있다면, 메인 캐시 내에서 대체될 엔트리가 선택되고(단계 422) 그 데이터는 컴퓨터 시스템의 메인 메모리로부터 메인 캐시 내부로 이동되며(단계 424) 프로세스가 종료된다. 만약 메인 캐시가 차 있지 않다면, 데이터는 메인 메모리로부터 메인 캐시 내부로 이동되고(단계 424) 프로세스가 종료된다.
도 5는 본 발명의 바람직한 실시예를 구현하는 다른 프로세스의 흐름도이다. 본 실례에서, 캐시(302)의 선택된 라인(306A)에 대한 카운터(308A)는 이 선택된 라인이 캐시 내에서 발견되면 증분되는 반면, 모든 다른 라인(306B, 306C 등)에 대한 카운터(308B, 308C 등)는 감분된다. 이 캐시 내의 캐시 라인을 대체할 필요가 있을 때, 최저 카운터 값을 갖는 캐시 라인(즉, 가장 적게 액세스되는 라인)이 대체된다.
이 프로세스는 메모리 요청이 캐시에서 수신되면서 시작된다(단계 502). 이 실례에서, 기술된 캐시는 도 3의 메인 캐시(302)에 대응한다. 이 캐시는 바람직하게는 이 캐시의 각 라인 또는 메모리 어드레스와 연관된 카운터를 구비한다. 만약 원하는 어드레스가 이 캐시 내에 존재하면(단계 504), 이 라인과 연관된 카운터가 증분된다(단계 506). 또한, 모든 다른 카운터는 감분되고(단계 508), 프로세스가 종료된다.
만약 원하는 어드레스가 이 캐시 내에 존재하지 않는다면(단계 504), 최저 카운터 값을 갖는 캐시 라인이 대체되도록 선택된다(단계 512). 이어서, 이 선택된 캐시 라인이 새로운 데이터로 대체된다(단계 514). 이어서, 프로세스가 종료된다.
도 6 및 도 7은 본 발명의 다른 구현을 도시한다. 이 실례에서, 하드웨어 카운터 스택(600)은 "Addr 8"(604) 및 "Addr 3"(602)를 포함하는 개별 어드레스 라인과 연관된 카운터를 도시한다.
이 실시예에서, 메인 캐시는 도 3에서 기술된 것과 동일하지만, 차이점은 이 실시예에서는 가장 빈번하게 참조되는 라인을 카운트하는 하드웨어 카운터(600)가 존재한다는 것이다. 어드레스 라인이 페치되면, 이 라인은 이 스택의 최하부에 있는 하드웨어 카운터 내부로 배치된다. 이 어드레스 라인이 다시 액세스되면, 이에 연관된 카운터가 증분하며, 이 어드레스 라인은 이 스택 위로 이동하고, 이로써 이 스택 내의 보다 상위의 엔트리들이 이 스택 내의 보다 하위의 엔트리보다 빈번하게 참조된다. 하드웨어가 어드레스 라인을 위한 카운터로 가득 차 있고, 새로운 어드레스 라인이 참조될 때에, 이 스택의 최하부 어드레스 라인이 대체되는 것으로 선택된다.
도 6은 스택에서 어드레스 3(602)가 어드레스 8(604) 아래에 존재하는 예시적인 경우를 도시한다. 이 경우에, 어드레스 3(602)는 어드레스 8(604)보다 작은 카운터 값을 갖는다. 어드레스 3(602)가 보다 빈번하게 액세스됨에 따라서, 이에 연관된 카운터는 증분하여, 결국에는 어드레스 8(604)의 카운터 값을 초과하게 된다. 도 7은 어드레스 3(602)이 어드레스 8(604)보다 큰 카운터 값을 갖는 경우의 이들의 상대적 위치를 도시한다. 도 7에서, 어드레스 3(602)는 스택(600) 내에서 어드레스 8(604)보다 상위에 나타난다. 본 실례에서, 새로운 어드레스가 참조되면, 이 어드레스와 연관된 카운터가 이하에서 기술될 바와 같이 대체되기 위해서 선택된다.
본 발명의 이러한 하드웨어 카운터는 가령 메인 캐시로부터 어느 어드레스가 보조 어드레스 내부로 이동되어야 하는지를 결정하고, 그 캐시가 차 있을 경우에 보조 캐시(가령, DFI 캐시) 내의 어느 라인이 제거되어야 하는지를 결정하는 데 있어서 유용하다. 가령, 일 실시예에서, 메인 캐시는 I 캐시이며, 보조 캐시는 DFI 캐시이다. 캐시 내의 각 어드레스는 하드웨어 카운터(600) 내에서 한 위치를 갖는다. 캐시가 차 있고 다른 어드레스 라인을 부가해야 하는 경우에, 이 I 캐시는 한 어드레스 라인을 축출하여 공간을 만든다. 캐시 내에서 어느 라인이 제거될지에 대한 결정(바람직하게는 DFI 캐시 내부로 어느 라인을 기록할지에 대한 결정)은 하드웨어 카운터(600)를 참조하여 이루어진다. 바람직한 실시예에서, 가장 빈번하게 액세스되는 라인들이 I 캐시로부터 제거되는데, 즉 이러한 라인들은 하드웨어 카운터 스택(600)에서 최상부에 위치한다. 본 실례에서, 새로운 어드레스가 부가될 경우라면, 이 새로운 어드레스는 스택의 최하부에 부가될 것인데, 이 때에는 어드레스 1이 I 캐시로부터 완전하게 제거되어 DFI 캐시 내부로 배치된다. 아이템이 I 캐시로부터 제거되면, 이 아이템은 또한 카운터(600)에서도 제거된다.
다른 실시예에서, DFI 캐시 내부의 각 라인은 이와 연관된 카운터를 갖는다. DFI 캐시 내부의 한 라인이 캐시 히트이면, DFI 캐시 내부의 다른 라인들과 연관된 카운터들의 값은 감분된다. 따라서, DFI 캐시 내부에서 보다 빈번하게 사용되는 라인들은 덜 빈번하게 사용되는 라인보다 높은 카운터 값을 갖는다. DFI 캐시 내에서 한 라인이 대체될 것이라면, 최저 카운터 값을 갖는 라인이 대체된다. 이러한 방식으로, DFI 캐시는 보다 빈번하게 사용되는 라인들을 I 캐시보다 오래 동안 보유한다.
DFI 캐시로부터 라인을 제거할 경우에, 어느 라인을 제거할지를 결정하는 데 있어서 다른 방법이 사용될 수 있다. 몇몇 경우에, 최소 히트 값을 갖는 라인을 제거하는 것은 바람직하지 않거나 비효율적이다. 작업 세트 대체 알고리즘(a working set replacement algorithm)과 같은 페이지를 대체하기 위해 알려진 알고리즘이 본 발명의 상황에서 구현될 수 있다. 이러한 알고리즘은 이동형 윈도우를 적절하게 이용하며 특정 시간에 참조되지 않는 페이지 또는 라인은 작업 세트 또는 캐시로부터 제거된다.
본 발명이 전적으로 기능적인 데이터 처리 시스템의 상황에서 기술되었지만, 본 기술 분야의 당업자는 본 발명의 프로세스는 인스트럭션을 갖는 컴퓨터 판독가능한 매체의 형태 및 다양한 형태로 배포될 수 있으며 본 발명은 이러한 배포를 수행하는데 실제적으로 사용되는 특정 타입의 신호 보유 매체와 상관 없이 동등하게 적용될 수 있다는 것을 이해할 것이다. 이러한 컴퓨터 판독가능한 매체의 실례는 플로피 디스크, 하드 디스크 드라이브, RAM, CD-ROM, DVD-ROM과 같은 기록가능한 타입의 매체, 가령 무선 주파수 및 광파 전송과 같은 전송 형태를 사용하는 무선 또는 유선 통신 링크 및 디지털 및 아날로그 통신 링크와 같은 전송 타입 매체를 포함한다. 이 컴퓨터 판독가능한 기록 매체는 특정한 데이터 처리 시스템에서 실제적으로 사용되도록 디코딩되는 코딩된 형식을 취할 수 있다.
본 발명의 상세한 설명은 단지 예시적으로 기술되었으며 본 발명을 개시된 형태로만 한정하기 위한 것이 아니다. 수 많은 수정 및 변경이 본 기술 분야의 당업자에게 가능하다. 이 실시예들은 본 발명의 원리, 실제적 응용을 가장 잘 설명하고 본 기술 분야의 당업자가 특정하게 사용되는 데 적합한 다양한 수정을 고려하면서 다양한 실시예로 본 발명을 이해할 수 있도록 하기 위해서 선택 및 기술되었다.
본 발명은 캐시 라인들이 이들의 사용 빈도에 따라서 연속적으로 캐시되게 하여 캐시 메모리의 전체 히트 레이트를 잠재적으로 증가시킬 수 있다.

Claims (11)

  1. 컴퓨터 시스템용 캐시 시스템에 있어서,
    다수의 제 1 인스트럭션을 저장하는 제 1 캐시와,
    다수의 제 2 인스트럭션을 저장하는 제 2 캐시를 포함하되,
    상기 다수의 제 1 인스트럭션 각각은 자신과 연관된 연관 카운터를 갖고,
    상기 다수의 제 1 인스트럭션 중 제 1 인스트럭션이 액세스될 때에, 제 1 연관 카운터는 증분되며,
    상기 제 1 연관 카운터가 임계치에 도달하면, 상기 다수의 제 1 인스트럭션의 상기 제 1 인스트럭션은 상기 제 2 캐시 내부로 복사되는
    캐시 시스템.
  2. 제 1 항에 있어서,
    상기 다수의 제 2 인스트럭션 각각은 자신과 연관된 연관 카운터를 가지며,
    상기 다수의 제 2 인스트럭션 중 한 인스트럭션이 액세스될 때에, 상기 다수의 제 2 인스트럭션과 연관된 나머지 모든 카운터들은 감분되는
    캐시 시스템.
  3. 제 1 항에 있어서,
    상기 다수의 제 1 인스트럭션의 상기 제 1 인스트럭션은 상기 제 2 캐시로부터 액세스되는
    캐시 시스템.
  4. 제 1 항에 있어서,
    상기 연관 카운터들은 하드웨어 카운터를 포함하고,
    소정의 인스트럭션이 페치될 때에, 상기 소정의 인스트럭션은 상기 하드웨어 카운터 내부에서 상기 하드웨어 카운터의 스택의 최하부에 배치되며,
    상기 소정의 인스트럭션이 다시 액세스될 때에, 상기 소정의 인스트럭션은 상기 스택 상부로 이동되고,
    상기 스택이 차 있고 새로운 인스트럭션이 상기 스택 내에 저장되는 경우에, 상기 새로운 인스트럭션은 상기 하드웨어 카운터 내에서 최하부에 있는 어드레스를 대체하는
    캐시 시스템.
  5. 제 1 항에 있어서,
    상기 제 1 캐시는 인스트럭션 캐시이며,
    상기 제 2 캐시는 완전 연관성(fully associative)이고, LRU(least recently used) 방침을 따르는
    캐시 시스템.
  6. 컴퓨터 시스템 내의 캐시를 관리하는 방법에 있어서,
    제 1 캐시 내에서 제 1 인스트럭션을 체크하는 단계━상기 제 1 캐시 내의 각 인스트럭션은 자신과 연관된 연관 카운터를 가짐━와,
    상기 제 1 인스트럭션이 상기 제 1 캐시 내에서 발견되면, 제 1 연관 카운터를 증분하는 단계와,
    상기 제 1 연관 카운터의 값을 임계치와 비교하는 단계와,
    상기 제 1 연관 카운터의 값이 상기 임계치를 초과하면, 상기 제 1 인스트럭션을 상기 제 1 캐시에서 제 2 캐시로 이동시키는 단계를 포함하는
    캐시 관리 방법.
  7. 제 6 항에 있어서,
    상기 제 2 캐시로부터 상기 제 1 인스트럭션을 액세스하는 단계를 더 포함하는
    캐시 관리 방법.
  8. 제 6 항에 있어서,
    상기 제 2 캐시 내의 각 인스트럭션은 자신과 연관된 연관 카운터를 가지며,
    상기 제 2 캐시 내의 한 인스트럭션이 액세스될 때에, 상기 제 2 캐시 내의 나머지 모든 인스트럭션과 연관된 카운터들은 감분되는
    캐시 관리 방법.
  9. 제 6 항에 있어서,
    상기 연관 카운터들은 하드웨어 카운터를 포함하고,
    소정의 인스트럭션이 페치될 때에, 상기 소정의 인스트럭션은 상기 하드웨어 카운터 내부에서 상기 하드웨어 카운터의 스택의 최하부에 배치되며,
    상기 소정의 인스트럭션이 다시 액세스될 때에, 상기 소정의 인스트럭션은 상기 스택 상부로 이동되고,
    상기 스택이 차 있고 새로운 인스트럭션이 상기 스택 내에 저장되는 경우에, 상기 새로운 인스트럭션은 상기 하드웨어 카운터 내에서 최하부에 있는 어드레스를 대체하는
    캐시 관리 방법.
  10. 제 6 항에 있어서,
    상기 제 1 캐시는 인스트럭션 캐시이며,
    상기 제 2 캐시는 완전 연관성이고, LRU(least recently used) 방침을 따르는
    캐시 관리 방법.
  11. 제 6 항 내지 제 10 항 중 어느 한 항에 따른 방법의 단계들을 수행하는 컴퓨터 프로그램을 구비한 컴퓨터 판독가능한 기록 매체.
KR1020040081254A 2003-11-13 2004-10-12 캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체 KR100582340B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/713,725 2003-11-13
US10/713,725 US20050108478A1 (en) 2003-11-13 2003-11-13 Dynamic frequent instruction line cache

Publications (2)

Publication Number Publication Date
KR20050046535A KR20050046535A (ko) 2005-05-18
KR100582340B1 true KR100582340B1 (ko) 2006-05-23

Family

ID=34573790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040081254A KR100582340B1 (ko) 2003-11-13 2004-10-12 캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체

Country Status (5)

Country Link
US (1) US20050108478A1 (ko)
JP (1) JP2005149497A (ko)
KR (1) KR100582340B1 (ko)
CN (1) CN1286006C (ko)
TW (1) TW200537374A (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549226B2 (en) * 2004-05-14 2013-10-01 Hewlett-Packard Development Company, L.P. Providing an alternative caching scheme at the storage area network level
CN100465955C (zh) * 2004-10-12 2009-03-04 国际商业机器公司 用于高速缓存万维网内容的方法和系统
TW200745847A (en) * 2005-12-23 2007-12-16 Koninkl Philips Electronics Nv Apparatus and method for dynamic cache management
US8051248B2 (en) * 2008-05-05 2011-11-01 Globalfoundries Inc. Transient transactional cache
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
JP5916355B2 (ja) * 2011-11-21 2016-05-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラムの命令を実行する装置および命令をキャッシュするシステム
CN103377141B (zh) * 2012-04-12 2016-10-12 无锡江南计算技术研究所 高速存储区的访问方法以及访问装置
EP2680152B1 (en) * 2012-06-27 2017-05-03 Alcatel Lucent Process for managing the storage of a list of N items in a memory cache of C items of a cache system
JP6118285B2 (ja) * 2014-03-20 2017-04-19 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム
US10496277B1 (en) * 2015-12-30 2019-12-03 EMC IP Holding Company LLC Method, apparatus and computer program product for storing data storage metrics
US10387329B2 (en) 2016-02-10 2019-08-20 Google Llc Profiling cache replacement
US11899589B2 (en) 2021-06-22 2024-02-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for bias mode management in memory systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043885A (en) * 1989-08-08 1991-08-27 International Business Machines Corporation Data cache using dynamic frequency based replacement and boundary criteria
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
TW451132B (en) * 1998-12-15 2001-08-21 Nippon Electric Co System and method for cache processing
US6532520B1 (en) * 1999-09-10 2003-03-11 International Business Machines Corporation Method and apparatus for allocating data and instructions within a shared cache
US6393522B1 (en) * 2000-01-27 2002-05-21 Ati International Srl Method and apparatus for cache memory management
US20010049818A1 (en) * 2000-02-09 2001-12-06 Sanjeev Banerjia Partitioned code cache organization to exploit program locallity
US7260684B2 (en) * 2001-01-16 2007-08-21 Intel Corporation Trace cache filtering

Also Published As

Publication number Publication date
KR20050046535A (ko) 2005-05-18
US20050108478A1 (en) 2005-05-19
TW200537374A (en) 2005-11-16
JP2005149497A (ja) 2005-06-09
CN1617095A (zh) 2005-05-18
CN1286006C (zh) 2006-11-22

Similar Documents

Publication Publication Date Title
US8943272B2 (en) Variable cache line size management
US8601216B2 (en) Method and system for removing cache blocks
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
JP5090047B2 (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
US7284096B2 (en) Systems and methods for data caching
US8176255B2 (en) Allocating space in dedicated cache ways
US7424577B2 (en) Dynamic optimization of cache memory
US8490065B2 (en) Method and apparatus for software-assisted data cache and prefetch control
US7689775B2 (en) System using stream prefetching history to improve data prefetching performance
US7669009B2 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US20030105926A1 (en) Variable size prefetch cache
US7571286B2 (en) Reduced memory traffic via detection and tracking of temporally silent stores
US6782453B2 (en) Storing data in memory
JPH0962572A (ja) ストリーム・フィルタ装置及び方法
US6668307B1 (en) System and method for a software controlled cache
KR100582340B1 (ko) 캐시 시스템, 캐시 관리 방법 및 컴퓨터 판독가능한 기록매체
WO2001088716A1 (en) Method for controlling cache system comprising direct-mapped cache and fully-associative buffer
JP5255049B2 (ja) データをキャッシュ・メモリにプリフェッチする方法、コンピュータ・プログラム、及びシステム
US6643743B1 (en) Stream-down prefetching cache
US20170046278A1 (en) Method and apparatus for updating replacement policy information for a fully associative buffer cache
WO2006053334A1 (en) Method and apparatus for handling non-temporal memory accesses in a cache
Shoa et al. Distortion of matching pursuit: modeling and optimization
Kravtsov Methods of cache memory optimization for multimedia applications

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
LAPS Lapse due to unpaid annual fee