KR20050115875A - 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체 - Google Patents

인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체 Download PDF

Info

Publication number
KR20050115875A
KR20050115875A KR1020057015715A KR20057015715A KR20050115875A KR 20050115875 A KR20050115875 A KR 20050115875A KR 1020057015715 A KR1020057015715 A KR 1020057015715A KR 20057015715 A KR20057015715 A KR 20057015715A KR 20050115875 A KR20050115875 A KR 20050115875A
Authority
KR
South Korea
Prior art keywords
instruction
cache
memory
stream
data
Prior art date
Application number
KR1020057015715A
Other languages
English (en)
Other versions
KR100985239B1 (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 KR20050115875A publication Critical patent/KR20050115875A/ko
Application granted granted Critical
Publication of KR100985239B1 publication Critical patent/KR100985239B1/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
    • 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
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)

Abstract

캐시 메모리 인터럽트 서비스 루틴(cache memory interrupt service routines : ISR)은 그들이 인터럽트하는 인스트럭션 스트림(301)의 필수 인스트럭션의 대체(이것은 "인스트럭션 캐시 트래싱(instruction cache trashing)"으로서 알려짐)에 영향을 주는데, 이는 ISR(302)의 실행 이전에 인스트럭션 캐시(102) 내에 포함된 인스트럭션이 ISR 인스트럭션에 의해 덮어쓰기(overwritten)되었기 때문이다. 인스트럭션 캐시 메모리의 트래싱을 감소시키기 위하여, 인스트럭션 캐시는 실행 동안에 제 1 메모리 부분(501a) 및 제 2 메모리 부분(501b)으로 동적으로 파티셔닝된다. 제 1 메모리 부분(501a)은 현재의 인스트럭션 스트림(301)의 인스트럭션을 저장하기 위한 것이고, 제 2 메모리 부분(501b)은 ISR(302)의 인스트럭션을 저장하기 위한 것이다. 따라서, ISR(302)은 오로지 제 2 메모리 부분(501b)에만 영향을 주고, 제 1 메모리 부분(501a) 내에 저장된 인스트럭션 데이터를 그대로 유지한다. 이러한 인스트럭션 캐시(102)의 파티셔닝은 인스트럭션 캐시 메모리(102)의 전력 소모를 감소시킬 뿐만 아니라 프로세서 페치 동작(processor fetch operations)을 감소시킨다.

Description

인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및 저장 매체{REDUCING CACHE TRASHING OF CERTAIN PIECES}
본 발명은 프로세서 캐시 영역에 관한 것으로, 보다 구체적으로는 프로세서 인스트럭션 캐시 영역에 관한 것이다.
컴퓨터 시스템에서, 캐시 메모리는 데이터 및 인스트럭션의 형태로 정보로의 프로세서(CPU) 액세스 시간을 감소시키는 데 이용되며, ROM(read only memory) 또는 RAM(random access memory)의 형태로 메인 메모리 내에 저장된다. 캐시는 메인 메모리에 저장되는 데이터 및 인스트럭션의 소정 피스(pieces)의 카피를 포함하는 온-칩 메모리 뱅크이다. 전형적으로, 이들은 2종류의 캐시, 데이터 및 인스트럭션이지만, 이 명세서 내에서는 인스트럭션 캐시만이 고려된다.
인스트럭션 캐시는 CPU에 의한 실행을 위한 코드 피스를 포함한다. CPU가 캐시에 이미 상주하는 코드를 실행할 때마다, 예를 들어 루프를 형성하는 인스트럭션 시퀀스를 실행하는 동안, 루프의 실행은 루프 인스트럭션이 실행될 때마다 이들 인스트럭션 모두를 판독하는 메인 메모리를 액세스하는 것보다 빠르다. 그러나, 이들 인스트럭션이 캐시 메모리에 저장되지 않는 경우, 캐시-미스(a cache-miss)가 발생하며, CPU는 필요한 데이터가 메인 메모리로부터 캐시 메모리로 페칭 때까지 대기하여야 한다. 일단 데이터를 캐시 메모리로 페칭되면, CPU는 인스트럭션 실행을 재개한다. 불행히도, 이들 페칭 동작 동안 CPU는 필요한 데이터를 기다리는 동안 스톨 사이클(stall cycles)을 초래하고, 이는 소중한 CPU 프로세싱 대역폭을 낭비하게 한다.
페칭 동작 동안, 데이터는 소정 블록 크기를 갖는 블록의 메인 메모리로부터 페칭된다. 블록 크기는 메인 메모리로부터 하나의 동작에서 페칭되는 데이터 양을 정의한다. 캐시는 캐시 웨이(cache ways) 및 캐시 블록의 캐시 세트에 관해 조직화된다. 프로세서에 의해 실행되는 인스트럭션의 인스트럭션 어드레스에 따라, 블록 크기를 갖는 메모리로부터 페칭되는 데이터는 캐시 세트 내의 메모리 위치 내에 저장된다. 캐시 세트 내의 메모리 위치는 인스트럭션 어드레스에 의존한다. 데이터 블록이 저장되는 캐시 웨이는 캐시 메모리에 대한 캐시 제어기에 의해 사용되는 캐시 대체 알고리즘에 따라 저장된다. 따라서, 예를 들어, 인스트럭션 어드레스의 11에서 6 비트가 메인 메모리로부터 페칭되는 데이터를 저장하는 캐시 세트를 결정한다. 이 예에서, 캐시 세트는 11에서 6 비트에 의해 정의되며, 32KB인 총 캐시 크기를 갖는 캐시에 적용 가능한데, 8의 웨이 관련성(way associativity) 및 64바이트인 블록 크기를 갖는다. 그러므로, 이 종류의 캐시는 64개의 캐시 세트를 가지며, 각각 8개의 라인(캐시 관련성)을 가지고 각 라인은 길이가 64바이트이다.
전형적으로, 캐시 메모리에서, 새롭게 페칭되는 데이터 블록으로 캐시 내에 저장되는 데이터를 대체하는 어떤 대체 방안이 존재한다. 캐시 제어기는 캐시 메모리에서 8개의 캐시 라인 중 어느 것이 새롭게 페칭되는 데이터 블록으로 대체될 것인지를 결정한다. 이를 위해, 캐시 제어기 하드웨어는, 예를 들어, LRU(a least recently used) 프로세스를 구현하는데, 이 캐시 제어기 하드웨어는 어느 캐시 라인이 가장 오랜 시간 액세스되지 않았는가와 어느 캐시 라인이 후속 프로그램 흐름에 대해 필요하지 않은가를 결정한다. 그 후 새롭게 페칭되는 데이터가 이 캐시 라인에서 대체된다.
ISR(interrupt service routines)는 인터럽트가 발생될 때마다 실행되는 실행 가능한 인스트럭션을 포함하는 인스트럭션 데이터 세그먼트이다. ISR은 CPU에 의한 현재 인스트럭션 스트림의 정기적 실행을 인터럽트하고, 그 후 ISR에 포함되는 인스트럭션을 공급하며, 전형적으로 ISR이 일단 완료되면 현재의 태스크를 재개한다. 물론, ISR이 프로세서의 후속 태스크에 영향을 주는 경우에는 다른 태스크가 재개되는 경우가 간혹 있는데, 전형적으로 오퍼레이팅 시스템의 태스크 스케줄러가 이를 처리한다. 불행히도, ISR은 캐시 콘텐츠에 영향을 주어 이들이 인터럽트하는 인스트럭션 스트림의 실행 시간에 현저한 영향을 끼친다. 불행히도, 그 재개에 따른 인터럽트된 인스트럭션 스트림은 간혹 메인 메모리로부터 어떤 인스트럭션을 페칭할 것을 요구하는데, ISR가 자신 고유의 인스트럭션 데이터로 이 인스트럭션을 대체하였기 때문에 이들은 이전에 캐시에 저장되었다. 따라서, ISR은 인터럽트된 인스트럭션 스트림의 실행을 재개하기 위해 수행되는 페칭 동작의 양을 증가시킨다. 전형적으로 ISR은 간단한 성질 및 요구되는 그들의 실행 속도로 인해 그들의 인스트럭션 내에 루프를 포함하지 않는다. 따라서, 이들은 인스트럭션 캐시를 이용할 이유가 거의 없다. LRU 대체 방안과 결합되는 캐시의 웨이 관련성은 모든 기존 캐시 인스트럭션 데이터를 대체하는 ISR을 잠재적으로 유도하며, 반면 ISR에 의해 전체 LRU를 이용하지 않음으로써 단일 캐시 웨이의 재사용 또는 이용 가능한 웨이의 서브 세트는 시스템 전체에 보다 나은 성능을 가져올 것이다. ISR의 비-루프 성질로 인해, ISR이 시작되기 전에 존재했던 인스트럭션 데이터보다 ISR로 하여금 캐시로부터 자신 고유의 인스트럭션 데이터를 대체하게 하는 것이 낫다. 전형적으로, ISR를 갖는 인스트럭션 캐시를 이용하는 이점은, ISR 인스트럭션이 캐시로 로딩되는 경우에 약간 더 많은 인스트럭션도 인스트럭션 캐시 메모리로 페칭되므로 ISR의 실행 시간이 감소된다는 점이다.
"작동 세트(working set)"는 프로세서가 현재 태스크를 효율적으로 실행하기 위해 프로세서에 대해 획득되어야 하는 인스트럭션 세트이다. 예를 들어, 루프 프로세스에 포함되는 인스트럭션용의 동작 세트는 루프 시작에서 루프 종료까지 실행되는 인스트럭션 양이다. 그러나, 몇몇 경우에서, 동작 세트는 인스트럭션 캐시의 크기를 초과할 수 있으므로, 페칭 동작은 인스트럭션 캐시 내에 저장되는 인스트럭션을 새롭게 페칭되는 인스트럭션으로 대체한다. 불행히도, 이는 제한된 캐시 크기로 인해 인스트럭션 캐시에 이전에 저장된 인스트럭션의 일부를 덮어쓴다. 필요한 인스트럭션의 이 대체는 당업자들 사이에 "인스트럭션 캐시 트래싱(instruction cache trashing)"이라 불리는데, ISR 실행 이전에 캐시에 포함되는 인스트럭션이 ISR의 인스트럭션에 의해 덮어써지기 때문이다. 따라서, ISR의 실행은, 프로그램을 효율적으로 실행하기 위해 추가 페칭이 요구된다는 점에서 동작 세트를 확대하는 실행과 유사하다. 두 경우 모두에서, 인터럽트된 스트림은 전형적으로 자신의 동작을 재개하기 위해 추가 데이터를 페칭할 필요가 있으므로, CPU에 의한 인스트럭션을 처리하기 위해 추가적인 페칭 동작이 필요하다. 물론 ISR이 효율적인 프로세싱을 인터럽트할 뿐만 아니라, ISR과 유사한 캐시 특성을 가지며 내부에 포함되는 어떠한 루프 인스트럭션도 포함하지 않는 다른 코드 세그먼트 또한 현재 실행 프로그래밍의 동작 세트를 방해하는 기능을 한다.
예를 들어, 필립스 디지털 비디오 플랫폼(DVP)에서, 2개의 CPU 칩이 이용되는데, 한 칩은 RISC(MIPS)이며 다른 칩은 TriMedia과 같은 VLIW(very large instruction word) 프로세서이다. TriMedia는 모든 비디오 및 오디오 프로그램을 실행하는 공동 프로세서이다. 그러나, 이 VLIW에 의해 데이터를 처리하는 동안, VLIW CPU 전력의 상대적으로 큰 부분이 인스트럭션 캐시 트래싱으로 인해 낭비된다. 전형적으로, 절반 이상의 CPU 전력이 인스트럭션 캐시 트래싱 및 메인 메모리로의 열악한 액세스로부터 초래되는 스톨 사이클에 의해 소비된다. 감소된 프로세싱 전력에 대한 이유 중 하나는 DVP의 구동기 모델로 인한 것일 수 있는데, ISR에서 실행되는 큰 피스의 코드가 되게 한다. 메인 메모리로부터 트래시 인스트럭션을 많이 리로딩함으로 인해, 메인 메모리 대역폭 요구조건도 증가된다.
그러므로, CPU 프로세싱 전력을 증가시키고 메인 메모리 대역폭을 감소시킬 뿐만 아니라 트래싱의 결과로서 메모리로부터의 데이터 블록 전송과 관련되는 전체 전력 소비를 감소시키는 것을 지원하기 위해 인스트럭션 캐시 트래싱을 감소시킬 필요가 있다. 그러므로, 본 발명의 목적은 다른 인터럽트 프로세스에 의해 사용되기 위한 다른 인스트럭션을 갖는 인스트럭션의 감소된 대체를 지원하는 인스트럭션 캐시를 제공하는 것이다.
도 1은 고 레벨의 캐시 메모리를 갖는 컴퓨터 처리 시스템의 일부를 도시한 도면.
도 2는 본 발명의 일실시예에 따른 캐시 메모리 내의 하드웨어에 배치된 판정 회로를 도시한 도면.
도 3은 프리 인터럽트부(pre-interrupt portion) 및 포스트 인터럽트부(post interrupt portion)를 갖는 제 1 프로그램 스트림과 그 사이에 삽입된 제 2 프로그램 스트림을 도시한 도면.
도 4는 도 2에 도시된 본 발명의 실시예에 대한 프로세스 순서도.
도 5a는 인스트럭션 캐시 내에 저장된 제 1 프로그램 스트림 프리 인터럽트부를 도시한 도면.
도 5b는 제 1 프로그램 스트림 프리 인터럽트부를 저장하는 제 1 메모리부 및 제 2 프로그램 스트림을 저장하는 제 2 메모리부로 파티셔닝된 인스트럭션 캐시 메모리를 도시한 도면.
도 5c는 파티션을 제거한 후의 제 1 프로그램 스트림 포스트 인터럽트부의 일부 및 제 1 프로그램 스트림 프리 인터럽트부의 일부를 저장하는 인스트럭션 캐시 메모리를 도시한 도면.
본 발명에 따르면, 인스트럭션 캐시 관리 방법이 제공되는데, 이러한 방법은 제 1 인스트럭션 캐시 메모리를 제공하는 단계와, 실행을 위한 제 1 인스트럭션 데이터를 상기 제 1 인스트럭션 캐시 메모리에 제공하는 단계와, 제 2 프로그램 스트림의 실행을 개시하기 위한 임시 캐시 표시의 개시를 제공하는 단계와, 상기 임시 캐시 표시의 수신 시에 상기 제 1 인스트럭션 캐시 메모리 내에 임시 캐시를 생성하는 단계-상기 임시 캐시는 상기 제 2 프로그램 스트림의 실행을 위해 사용되는 인스트럭션 데이터의 캐싱에 사용됨-와, 상기 제 2 프로그램 스트림 내에서 인스트럭션을 실행하는 단계와, 상기 제 2 프로그램 스트림의 실행을 종료하기 위한 인스트럭션의 실행 시에 상기 임시 캐시를 제거하는 단계를 포함한다.
본 발명에 따르면, 인스트럭션 캐시 관리 방법이 제공되는데, 이러한 방법은 제 1 인스트럭션 캐시 메모리를 제공하는 단계와, 실행을 위한 제 1 인스트럭션 데이터를 상기 제 1 인스트럭션 캐시 메모리에 제공하는 단계와, 상기 제 1 인스트럭션 데이터와 병렬로 그리고 그보다 우선적으로 중의 하나로의 실행을 위해 제 2 인스트럭션 데이터 스트림의 표시를 제공하는 단계-상기 제 2 인스트럭션 데이터 스트림은 상기 제 1 인스트럭션 데이터에 의해 충족되는 캐시 요건에 비해 실질적으로 보다 적은 캐시 요건을 가짐-와, 상기 제 2 스트림의 긴박한 실행의 표시의 수신 시에 상기 제 1 인스트럭션 캐시 메모리 내에 임시 캐시를 생성하는 단계-상기 임시 캐시는 상기 제 2 프로그램 스트림의 실행을 위해 사용되는 제 2 스트림의 인스트럭션 데이터의 캐싱에 사용됨-와, 상기 제 2 인스트럭션 데이터 스트림 내에서 인스트럭션을 실행하는 단계와, 상기 제 2 인스트럭션 데이터 스트림의 실행을 종료하기 위한 인스트럭션의 실행 시에 상기 임시 캐시를 제거하는 단계를 포함한다.
본 발명에 따르면 캐시 메모리가 제공되는데, 이러한 캐시 메모리는 제 1 인스트럭션 데이터 스트림의 인스트럭션 데이터를 캐싱하기 위한 인스트럭션 캐시 메모리와, 공지된 특성을 갖는 제 2 인스트럭션 데이터 스트림의 존재를 판정하고 상기 제 2 인스트럭션 데이터 스트림의 존재에 의존하여 상기 인스트럭션 캐시 메모리를 제 1 메모리 부 및 임시 메모리 부로 파티셔닝하는 판정 회로를 포함하며, 상기 제 2 인스트럭션 데이터 스트림 내의 인스트럭션은 식별가능한 제 2 타입이며, 상기 제 1 메모리 부는 상기 제 1 인스트럭션 데이터 스트림의 인스트럭션을 캐싱하고, 상기 임시 메모리 부는 상기 제 2 인스트럭션 데이터 스트림의 인스트럭션을 캐싱한다.
본 발명에 따르면 집적 회로가 제공되는데, 이러한 집적 회로는 제 1 프로그램 스트림에 대한 인스트럭션을 캐싱하기 위한 인스트럭션 캐시 메모리와, 상기 인스트럭션 캐시 메모리 내의 임시 캐시 메모리를 생성하고 제거하기 위한 회로를 포함하되, 상기 임시 캐시 메모리는 사이즈가 상기 인스트럭션 캐시 메모리보다 더 작으며, 상기 제 1 프로그램 스트림 이외의 제 2 프로그램 스트림 내의 인스트럭션을 캐싱하는 데 사용된다.
본 발명에 따르면, 집적 회로 기능 블록을 정의하는 데이터를 저장한 저장 매체가 제공되는데, 여기에서 상기 집적 회로 기능 블록은, 제 1 프로그램 스트림에 대한 인스트럭션을 캐싱하기 위한 인스트럭션 캐시 메모리와, 상기 인스트럭션 캐시 메모리 내의 임시 캐시 메모리를 생성하고 제거하기 위한 회로를 포함하되, 상기 임시 캐시 메모리는 사이즈가 상기 인스트럭션 캐시 메모리보다 더 작으며, 상기 제 1 프로그램 스트림 이외의 제 2 프로그램 스트림 내의 인스트럭션을 캐싱하는 데 사용된다.
이하에서는 첨부한 도면을 참조하여 본 발명의 예시적인 실시예를 설명한다.
I. Kadayif 등에 의한 "An Energy Saving Strategy Based on Adaptive Loop Parallelization"라는 명칭의 인터넷 간행물에서는, 상이한 수의 프로세서를 사용하여 각각의 네스팅된 루프가 실행될 수 있도록 복수의 프로세서 전략이 평가되는데, 그렇게 하면 시스템 에너지 절감에 유익하다. 따라서, 프로세서들이 정보 처리에 이용되지 않으면, 셧다운(shut down)되거나 슬립 상태로 된다. 물론, 이들 프로세서 각각은 통상 관련 캐시 메모리를 가지며, 이 캐시 메모리는, 전원 절감 모드 상태로 되면 프로세서의 상태와 유사한 상태로 된다.
Kil-Whan Lee 등에 의한 "THE CACHE MEMORY SYSTEM FOR CalmRISC32"라는 명칭의 인터넷 간행물에서는, 성능 향상 및 전력 소비 절감을 위해 캐시 메모리 시스템으로서 사용하기 위한 이중 데이터 캐시 시스템 구조를 제안하고 있다. 이 경우에, 조력 캐시 시스템이 데이터 캐시 및 인스트럭션 캐시에 제공된다. 공간 및 시간 집약성의 두 유형의 집약성 중에서, 최근에 액세스된 항목들이 시간 집약적으로 가까운 미래에 다시 액세스될 확률이 높다. 따라서, 제 1 캐시 메모리는 공간 집약성을 처리하도록 제공되고, 제 2 캐시 메모리는 시간 집약성을 처리하도록 제공된다. 두 캐시 메모리 모두 프로세서 스톨(stall) 사이클을 개선시키기 위해(감소시키기 위해) 서로 지원한다. 그러나, 이들 두 캐시 메모리를 모두 이용하면, 인스트럭션 캐시 낭비로 인한 효과를 감소시키지 못한다.
도 1을 참조하면, 고 레벨의 컴퓨터 처리 시스템의 일부가 도시되어 있다. 처리 시스템은 인스트럭션 캐시 메모리(102)를 통해 처리할 인스트럭션 데이터를 수신하고, 데이터 캐시 메모리(104)를 통해 처리할 다른 데이터를 수신하는데, 이하에서는 이들을 각각 인스트럭션 캐시(102) 및 데이터 캐시(104)로 지칭한다. 각 캐시(102, 104)는 메인 메모리(103)와 통신한다. 인스트럭션 캐시(102)는 메인 메모리로부터 프로세서(101)가 요구하는 인스트럭션 데이터만 캐시하기 위한 것이다. 인스트럭션 캐시(102) 내에는 페칭 유닛을 포함하는 인스트럭션 캐시 제어기(102a)가 배치되어 있다. 인스트럭션 캐시 제어기(102a)는 인스트럭션 캐시(102) 내에 데이터 블록을 저장하는 것을 제어한다. 데이터 캐시(104)는 CPU(101)가 처리하는, 인스트럭션 데이터를 제외한 데이터를 캐시하는데 사용하기 위한 것이다. 데이터 캐시(104) 내에는 다른 페칭 유닛을 포함하는 데이터 캐시 제어기(104a)가 배치되어 있다.
캐시 제어기(102a 및 104a)는 모두 각 캐시(102, 104) 내의 캐시 라인 배치를 제어하고, 인스트럭션 및 다를 인스트럭션 데이터를 메인 메모리(103)로부터 페치하여 각 캐시(102, 104) 내에 저장하기 위한 것이다. 예를 들면, 캐시 제어기(102a, 104a)는 각각 새로 페치된 데이터를 갖는 각 캐시(102, 104) 내에 어느 캐시 라인을 교체해야 할지를 판정하기 위해 LRU(last recently used) 프로세스를 실행한다.
도 2는 본 발명의 일실시예를 도시하고 있다. 이 경우에, 판정 회로(201)가 인스트럭션 캐시(102) 내에 배치된다. 판정 회로(201)는 메인 메모리(103)로부터 검색되어 인스트럭션 분석 회로를 사용하여 인스트럭션 캐시(102)에 제공된 인스트럭션 데이터의 분석에 사용하기 위한 것이다.
도 3을 참조하면, 프리 인트럽트부(301a) 및 포스트 인터럽트부(301b)를 갖는 제 1 프로그램 스트림 및 그 사이에 삽입된 제 2 프로그램 스트림(302)이 도시되어 있다. 제 2 프로그램 스트림은 선택적으로 ISR(interrupt service request) 프로그램 스트림의 형태를 갖는다. 인스트럭션 포인터(IP)(303)는 CPU(101)가 제 1 프로그램 스트림(301) 및 제 2 프로그램 스트림(302)을 실행하는데 이용하는 인덱스를 관리하는데 사용하기 위해 제공된다.
도 4에는 본 발명의 실시예의 처리 흐름도가 도시된다. 도 3에 도시된 프로그램 스트림에 따라서, 도 5a는 인스트럭션 캐시(102) 내에서 실행할 때의 제 1 프로그램 스트림 프리 인터럽트부(301a)를 도시하며, 이는 인스트럭션 포인터(IP) 어드레스(303a)에서 시작한다. 인스트럭션의 페치는, 인스트럭션 포인터 어드레스(303a 내지 303b)(도 5a)로부터 제 1 프로그램 스트림 프리 인터럽트부(301a)가 수행되는 동안 프로세서 스톨 사이클(processor stall cycles)을 감소시키기 위해서 캐시 컨트롤러 하드웨어(102a)를 사용해서 주 메모리(103)로부터 인스트럭션 캐시로 수행된다. 임시 캐시 표시의 개시(단계 402, 도 4)는 제 1 타입의 명시적인 인스트럭션(explicit instruction)을 가진 프리 인터럽트부(301a)에 의해 또는 인스트럭션 캐시(102) 내의 제 2 프로그램 스트림(302)의 즉시 시행을 나타내는 인스트럭션이 제공되는 지점을 판정하는 판정 회로(201)에 의해 수행된다. 이 지점에서, 제 2 프로그램 스트림(302)을 수행하기 전에 판정 회로(201)는 캐시 컨트롤러(102a)에 지시해서 인스트럭션 캐시(102)(도 4의 단계(403) 참조)를 제 1 메모리부(501a)와 제 2 메모리부(501b)(도 5b)로 파티셔닝한다. 제 1 메모리부(501a)에서 제 1 프로그램 스트림 프리 인터럽트부(301a)와 관련된 캐시된 인스트럭션 데이터의 대부분이 저장된다. 전체 인스트럭션 캐시(102)를 제 1 프로그램 스트림 프리 인터럽트부(301a)와 관련된 인스트럭션 데이터가 차지하고 있는 경우에 LRU 처리는, 사용가능한 메모리 공간의 생성을 가능하게 할 때 사용하기 위해 인스트럭션 캐시(102) 내의 메모리 공간을 비우기 위해서 캐시 컨트롤러에 의해 수행되는 것이 바람직하며, 이 메모리 공간이 제 2 메모리부(501b)가 된다. 제 2 메모리부(501b)는 인스트럭션 캐시(102) 내에서 임시 캐시(501b)를 구현하는 데 사용된다.
다른 방안으로, LRU 처리를 수행하는 대신에, 인스트럭션 캐시 컨트롤러(102a)는 임시 캐시(501b)로 사용하기 위해 인스트럭션 캐시 메모리(102) 내의 메모리 공간을 비우기 위해서 전용 메모리 할당 프로세서를 구현한다. 예컨대, 인스트럭션 캐시(102)로부터의 적어도 하나의 미리 정해진 캐시 웨이는 제 2 메모리부(501b)로 사용하기 위해 폐기된다. 즉, 8웨이 세트 관련 캐시의 경우에, 예컨대 제 2 메모리부(501b)의 구현을 위해서 캐시 웨이 중 3개는 폐기된다. 따라서, 제 2 메모리부는 모든 사용가능한 인스트럭션 캐시 메모리 공간의 3/8로 한정된다. 인스트럭션 캐시 컨트롤러(102a)는 바람직하게는 이들 3개의 캐시 웨이 내의 데이터 블록의 대치를 제어하기 위해 LRU 처리를 사용하지만, 제 2 메모리부(501b)의 구현에 사용되는 캐시 웨이를 선택하는 데는 사용되지 않는다.
다른 방안으로, 제 2 메모리부(302)에 고정된 캐시 웨이를 할당하는 대신에, 인터럽트된 프로그램은 LRU 표시를 사용해서 인스트럭션 캐시 메모리(102)에 저장되며, 이는 최근 최저 사용된 캐시가 추가 처리를 위해 사용될 때 대치하기 위한 즉시 후보이다.
인스트럭션 캐시 메모리(102) 내에 임시 캐시(501b)를 할당할 때, 단계(404)(도 4)에서 프로세서(101)에 의해 제 2 프로그램 스트림(302)에 관한 데이터가 주 메모리(103)로부터 페치되고, 수행을 위해 제 2 메모리부(501b)에 저장된다. 도 5b를 참조하면, 프로세서(101)는 IP 어드레스(303c 내지 303d)로부터 임시 캐시(501b)에 저장된 제 2 프로그램 스트림(302)을 수행한다. 물론, 이 제 2 메모리부(501b)가 이 제 2 프로그램 스트림(302)의 수행에 최적인 데이터양을 수용하는데 충분한 크기를 갖지 않는 경우에, 주 메모리(103)로부터 수행되는 페치의 양을 감소시키기 위해서 임시 캐시(501b)에서 LRU 처리가 구현된다. IP 어드레스(303d)(도 5b)의 이러한 제 2 프로그램 스트림(302)의 끝에, 제 2 미리 정해진 타입의 명시적인 인스트럭션을 가진 판정 회로에 의해 판정될 때, 단계(405)(도 4)에서 종료 회로(201)에 의해 임시 캐시(501b)가 종료되고, 전체 인스트럭션 캐시(102)는 제 1 프로그램 스트림(301)의 포스트 인터럽트부(301b)에 의해 다시 사용될 수 있다(도 5c). 제 1 프로그램 스트림(301)의 포스트 인터럽트부(301b)의 수행은 IP 어드레스(303e)에서 재개된다. 따라서, 제 1 프로그램 스트림(301)에 의해 제 1 메모리부(501b)에 저장된 인스트럭션 데이터의 대부분은 주 메모리(103)로부터의 페칭 동작을 최소화하면서, 제 1 프로그램 스트림(301)에 사용할 수 있다.
인스트럭션 캐시 메모리(102)를 임시 캐시의 형태로 제 1 메모리부(501a) 및 제 2 메모리부(501b)로 파티셔닝함으로써(도 4의 단계 403), 인스트럭션 캐시 낭비를 감소시키는 것과 같은 인스트럭션 처리의 장점을 구현한다. 제 2 프로그램 스트림(302)이 전형적으로 루프 인스트럭션을 포함하지 않고, 일반적으로 순차적이기 때문에 이러한 일반적인 순차 루틴에 사용하기 위해 주 메모리(103)로부터 페치된 인스트럭션 데이터는 수행이 후속할 필요가 없다. 따라서, 인스트럭션 캐시 컨트롤러(102a)에 의해 수행되는 LRU 처리는 인스트럭션 캐시(102)로부터 불필요한 인스트럭션 데이터를 제거하는 쉬운 태스크를 수행한다. 따라서, 임시 캐시(501b)가 제 2 프로그램 스트림(302)을 위한 간단한 판독 전 버퍼로서 동작하기에 비교적 작다는 이점을 가지며, 이로써 프로세서 스톨 사이클은 이 제 2 프로그램 스트림(302)에서 최소화되지만, 최종 제 1 메모리부(501a)의 상당 부분이 임시 캐시(501b)의 구현에 의해 덮어쓰기되도록 그다지 크지 않게 된다(도 4의 단계(403) 참조). 인스트럭션 캐시 제 1 메모리부(501a)가 제 1 프로그램 스트림(301)에 적합한 데이터를 포함하기 때문에, 이 메모리 공간의 상당부분을 덮어쓰기하는 것은 바람직하지 않으며, 이는 일단 제 1 프로그램 스트림(301b)이 재개되면(도 5c의 IP 303e), 제 1 프로그램 스트림(302)에 의해 인터럽트된 이후에 제 1 프리 인터럽트(301a) 방식과 유사한 방식으로 제 1 프로그램 스트림 포스트 인터럽트부(301b)의 수행을 재개하기 위해서, 잠재적으로 주 메모리(103)로부터 많은 페치가 필요하기 때문이다. 따라서, 이러한 제 2 메모리부(501b)의 크기를 우선 결정하는 것이 바람직하며, 잠재적으로는 임시 캐시(501b)의 바람직한 크기를 결정하도록 구현된 판정 회로(201)에 의해 사용하기 위해 프로그램 스트림으로 인스트럭션이 내장된다.
바람직하게는, 페칭 하드웨어를 포함하는 인스트럭션 캐시 컨트롤러(102a)는 제 1 프로그램 스트림 포스트 인터럽트부(301b)에 의해 사용하기 위해 인스트럭션 데이터의 상당 부분을 덮어쓰기는 일없이, 제 2 프로그램 스트림(302)에 사용하기 위한 새로운 인스트럭션 데이터를 임시 캐시(501b)로 페치한다. 판정 회로(201)는 LRU 처리와 조합해서 혹은 선택적으로는 전용 메모리 할당 프로세서를 사용해서 임시 캐시(501b)에 인스트럭션 캐시(102)의 어느 부분을 할당할지 결정하고, 그 결과 제 1 프로그램 스트림 포스트 인터럽트부(301b)에 적합한 인스트럭션 데이터가 최소한 덮어쓰기된다. 따라서, 제 2 프로그램 스트림(302)을 수행한 이후에, CPU(101)는 IP(303e)(도 5c)에서 제 1 프로그램 스트림의 포스트 인터럽트부(301b)를 다시 수행한다. 여기서, 제 1 프로그램 스트림(301)의 포스트 인터럽트부(301b)를 수행할 때, 바람직하게는 이에 적합한 인스트럭션 데이터의 수는 다시 인스트럭션 캐시(102)에 저장된다. 따라서, 예컨대 인스트럭션 캐시(102)의 크기가 32kBytes이고, 8웨이 세트 연결이라면, 임시 캐시(501b)에 할당된 메모리를 4kByte 캐시 웨이의 캐시에 할당되면, 제 2 프로그램 스트림(302)의 수행으로부터 리턴한 이후에 원래의 캐시 데이터의 28/32가 제 1 프로그램 스트림 포스트 인터럽트부(301b)에 적절하다.
캐시 파티셔닝은 본 발명에 따라서 2가지 다른 방식으로 구현된다. 첫번째 방식에서, 인스트럭션 캐시(102) 파티셔닝은 인스트럭션 캐시의 파티셔닝을 위해서 판정 회로(201)를 트리거링하는 임시 캐시 표시(도 4의 단계 402)를 개시하는 미리 정해진 타입의 명시적인 인스트럭션을 구비함으로써 하드웨어에 의해 구현된다. 일단 판정 회로(201)가 임시 캐시 인스트럭션의 개시 형태로 제 1 타입의 명시적인 인스트럭션을 판독하면, 인스트럭션 캐시(102)는 제 1 메모리부(501a) 및 임시 캐시(501b)(도 5b)로 파티셔닝되어서 인터럽트가 처리된다. 물론, 일단 제 2 프로그램 스트림(302)이 수행을 종료하면, 임시 캐시 인스트럭션의 종료의 형태의 제 2 타입의 명시적인 인스트럭션이 판정 회로(201)를 트리거해서, 전체 인스트럭션 캐시(102)가 임시 캐시(501b)에 할당된 메모리를 비워서 다시 제 1 프로그램 스트림 포스트 인터럽트부(301b)에 의해 사용가능하게 한다. 물론, 각각 하드웨어 트리거된 인터럽트의 형태로 인터럽트 인스트럭션으로부터 리턴되는 제 1 및 제 2 타입의 명시적인 인스트럭션은 당업자에게 알려진 것과 유사한 방식으로 지원될 수 있다.
물론, 몇몇 경우에 제 2 프로그램 스트림(302)이 순차적 특성을 갖지 않는 인스트럭션, 예를 들면 제 2 프로그램 스트림(302) 내에 포함된 루프 인스트럭션의 형태를 갖는 인스트럭션을 포함하면 인스트럭션 캐시(102)의 파티셔닝을 디스에이블링하는 것이 바람직할 것이다. 임시 캐시(501b)가 전체의 제 2 프로그램 스트림(302)의 캐싱을 수용할 정도로 충분히 큰 크기를 갖지 않으면, 제 2 프로그램 스트림(302) 내에 포함된 루프 인스트럭션의 실행에서 이용하기 위해 필요한 인스트럭션 데이터를 검색하기 위해서 메인 메모리(103)에 대해 다수의 페치가 생성되고, 임시 캐시(501b)에 할당된 메모리 크기가 너무 작아서, 제 2 프로그램 스트림(302)은 임시 캐시(501b)의 작업 세트보다 더 크다. 따라서, 모든 루프 반복에 있어서, 메인 메모리(103)에 대해 페치가 생성되고, 이는 루프의 모든 반복에 대해 프로세서(101)가 스톨 사이클을 발생시키게 하기 때문에 불리하다. 이러한 경우에, 인스트럭션 캐시(102)를 파티셔닝하면 전력 소모의 증가뿐만 아니라 프로세서 성능의 저하가 초래되어 바람직하지 않다. 당업자라면, 당연히 ISR이 불량한 프로그래밍 실행으로 간주된다는 것을 인식하고 있을 것이다. 전형적으로 ISR은 짧은 인터럽트 응답 시간을 보장하기 위해서 크기가 작고, 그에 따라서 제 1 프로그램 스트림과 같은 정규적 프로그램 작업에 대한 힘든 작업이 그대로 남겨진다.
제 2 방식에서, 인스트럭션 데이터의 제 2 프로그램 스트림(302) 블록은 메인 메모리(103) 내의 소정의 메모리 어드레스 영역 내에 저장된다고 확인되었다. 이러한 방식으로, 제 2 프로그램 스트림(302)은 제 2 프로그램 스트림(302) 인스트럭션 데이터가 메인 메모리(103) 내에 저장되는 어드레스를 이용하여 식별된다. 물론, 바람직하게는 프로그램 스트림의 컴파일링(compile) 및 링킹(linking) 시간 동안에, 제 2 프로그램 스트림(302)을 식별하기 위해서, 바람직하게는 전체 제 2 프로그램 스트림 인스트럭션 데이터의 대부분이 메인 메모리(103) 내의 동일한 메모리 어드레스 영역 내에 저장되게 하는 프로그램 스트림 내에 로드 인스트럭션이 제공된다. 따라서, 이러한 메모리 어드레스 영역으로부터의 임의의 페치는 이러한 제 2 프로그램 스트림 인스트럭션 데이터(302)를 임시 캐시(501b)에 저장하도록 인스트럭션 캐시(도 4의 단계(403))의 파티셔닝을 자동적으로 허용한다. 이러한 방법을 이용함으로써 임시 캐시(501b)의 구현을 위한 전용 인스트럭션의 사용이 방지된다.
따라서 판정 회로(201)는 제 2 프로그램 스트림(302) 내에 있는 인스트럭션의 타입을 판정하는 역할을 하고, 이러한 판정에 기초하여 인스트럭션 캐시 메모리(102)의 파티셔닝(도 4의 단계(403))을 실행한다. 인스트럭션 캐시 메모리(102)가 그에 따라서 파티셔닝되지 않으면, 더 많은 스톨 사이클이 관찰되고 따라서 성능 이득이 실현되지 않는다. 물론, 판정 회로(201)가 인스트럭션 데이터를 처리하여 판정을 실행하는 것 대신에, 인스트럭션 데이터 내의 정보를 선택적으로 인코딩하고, 판정 회로(201)의 인스트럭션 분석 회로에 의해 디코딩한다.
선택적으로, 판정 회로(201)를 하드웨어로 구현하는 것 대신에, 인스트럭션 캐시를 파티셔닝할 것인지 여부를 나타내는 인스트럭션을 메모리(102) 내에 저장된 인스트럭션 데이터 내에 포함한다. 다음에 판정 회로(201) 또는 프로세서에 의해 실행 가능한 다른 소프트웨어 루틴에서 생성된 인스트럭션은 인스트럭션 캐시(102)의 파티셔닝을 실행하는 것이 유리한지 여부를 판정한다.
소프트웨어 제어 하에서, 캐시 메모리(102)는 소프트웨어 판정의 결과로서 실행되는 인스트럭션 데이터의 타입에 의존하여 선택적으로 파티셔닝된다. 소프트웨어가 캐시의 파티셔닝이 유리하다고 판정하면, 캐시 메인 메모리(103)의 전력 소모 및 메모리 대역폭 요구 조건을 감소시킬 뿐만 아니라 CPU의 처리 능력을 증가시키기 위해서 이러한 동작을 실행한다. 메인 메모리(103)로부터 더 많은 페치가 실행될수록, 회로에 의해 더 많은 전력이 소모된다. 인스트럭션 캐시 메모리(102) 및 메인 메모리(103)를 구현하기 위해 이용되는 하드웨어 레벨에서의 로직 게이트의 인에이블링 및 디스에이블링은 전력 절감을 가능하게 한다.
선택적으로, 본 발명의 이러한 실시예에 따른 낮은 하드웨어 비용의 구현에 있어서, 임시 캐시(501b)는 인스트럭션 캐시(102) 내에서 고정된 캐시 웨이 내에서 생성된다. 예를 들면, 제 2 메모리 부분(501b)은 오로지 캐시 웨이 0으로만 생성된다. 이는 다른 캐시 웨이가 아닌 이러한 단일 캐시 웨이 내에서 ISR이 인스트럭션 캐시 데이터를 트래싱하도록 허용하므로, 제 2 프로그램 스트림(302)의 실행으로부터 리턴(returning)할 때, 다른 캐시 웨이가 제 1 프로그램 스트림 후속 인트럽트 부분(301b)에 의해 이용되도록 남겨둔다. 예를 들면, 64바이트의 블록 크기 및 전체 8개의 캐시 웨이를 갖는 32KB의 전체 캐시 크기에 있어서, 4킬로바이트의 고정된 크기를 갖는 단일의 사전 결정된 개수의 캐시 웨이는 임시 캐시(501b)를 실행하기 위해 할당된다.
물론, 메인 메모리(103)에 대해 다수의 페치가 실행될 때, 64바이트 블록의 페칭은 때때로 프로세서 스톨 사이클의 감소를 위해 충분하지 않다. 따라서 페치의 크기를 2개의 순차 64바이트 블록까지 증가시키는 것이 때때로 바람직하다. 물론, 선택적으로 다수의 순차 64바이트 블록을 프리페칭(prefetched)할 수 있다.
종래 기술의 캐시 구현에 비해 인스트럭션 캐시 트래싱을 감소시킴으로써, 인스트럭션 데이터의 메모리 대역폭 요구 조건을 감소시키고 시스템의 전력 소모를 감소시키는 것이 유리하다. 인스트럭션의 실행에 있어서 더 작은 시간이 소모될 뿐만 아니라, 다른 인스트럭션 데이터의 실행에 의해 제거된 데이터를 페칭하는 페칭 동작을 실행하는 데 있어서 더 작은 시간이 소모된다. 이는 랩탑 등과 같은 휴대형 컴퓨터 플랫폼(portable computing platforms) 내에서 구현되는 프로세서 시스템에 있어서 큰 이점을 제공한다.
본 발명의 정신 및 범주를 벗어나지 않으면서 여러 다른 실시예를 고려할 수 있다.

Claims (40)

  1. 인스트럭션 캐시 관리 방법에 있어서,
    제 1 인스트럭션 캐시 메모리(102)를 제공하는 단계와,
    실행을 위한 제 1 인스트럭션 데이터(301a,301b)를 상기 제 1 인스트럭션 캐시 메모리(102)에 제공하는 단계와,
    제 2 프로그램 스트림(302)의 실행을 개시하기 위한 임시 캐시 표시(402)의 개시를 제공하는 단계와,
    상기 임시 캐시 표시(402)의 수신 시에 상기 제 1 인스트럭션 캐시 메모리(102) 내에 임시 캐시(501b)를 생성하는 단계(403)-상기 임시 캐시(501b)는 상기 제 2 프로그램 스트림(302)의 실행을 위해 사용되는 인스트럭션 데이터의 캐싱에 사용됨-와,
    상기 제 2 프로그램 스트림(302) 내에서 인스트럭션을 실행하는 단계(404)와,
    상기 제 2 프로그램 스트림(302)의 실행을 종료하기 위한 인스트럭션의 실행 시에 상기 임시 캐시(501b)를 제거하는 단계(405)를 포함하는
    인스트럭션 캐시 관리 방법.
  2. 제 1 항에 있어서,
    상기 인스트럭션 캐시(102) 내에서 인스트럭션 데이터(301a, 301b, 302)를 실행하고 그리고 상기 제 2 프로그램 스트림(302)의 실행을 위한 임시 캐시(501b) 내에서 인스트럭션 데이터(302)를 실행하는 프로세서(101)를 제공하는 단계를 포함하는 인스트럭션 캐시 관리 방법.
  3. 제 1 항에 있어서,
    상기 제 2 프로그램 스트림(302)은 상기 제 1 인스트럭션 캐시 메모리(102) 내의 제 1 인스트럭션 데이터(301a, 301b)와 비교할 때 축소된 인스트럭션 캐시 요건을 갖는 인스트럭션 캐시 관리 방법.
  4. 제 1 항에 있어서,
    상기 임시 캐시(501b)를 생성하는 단계를 수행하는 인스트럭션의 실행의 시점을 판정하기 위해 상기 제 1 인스트럭션 데이터(301a, 301b) 내의 인스트럭션 데이터를 분석하는 단계를 포함하는 인스트럭션 캐시 관리 방법.
  5. 제 4 항에 있어서,
    상기 분석 단계는 상기 제 1 인스트럭션 데이터(301a, 301b) 및 상기 제 2 프로그램 스트림(302)과는 다른 인스트럭션 데이터를 포함하는 소프트웨어 애플리케이션에 의해 수행되는 인스트럭션 캐시 관리 방법.
  6. 제 4 항에 있어서,
    상기 분석 단계는 상기 제 1 인스트럭션 데이터(301a, 301b)와 상기 제 2 프로그램 스트림(302) 중의 하나가 사전결정된 타입의 인스트럭션을 포함하는지의 여부를 평가하는 단계를 포함하는 인스트럭션 캐시 관리 방법.
  7. 제 6 항에 있어서,
    사전결정된 타입의 인스트럭션은 인터럽트 인스트럭션인 인스트럭션 캐시 관리 방법.
  8. 제 6 항에 있어서,
    사전결정된 타입의 인스트럭션은 인스트럭션 인스트럭션으로부터 리턴되는 인스트럭션 캐시 관리 방법.
  9. 제 4 항에 있어서,
    상기 분석 단계는 상기 제 2 프로그램 스트림(302)이 본질적으로 대략 순차적인지의 여부를 평가하는 단계를 포함하며, 상기 생성 단계(403)는 상기 평가 단계에 따라 수행되는 인스트럭션 캐시 관리 방법.
  10. 제 1 항에 있어서,
    소정의 어드레스 위치에서 상기 제 2 프로그램 스트림(302)을 저장하는 메인 메모리(103)를 제공하는 단계를 더 포함하며, 상기 임시 캐시 표시(402)의 개시는 상기 제 2 프로그램 스트림(302)의 어드레스 위치에 의존하는 인스트럭션 캐시 관리 방법.
  11. 제 1 항에 있어서,
    상기 임시 캐시(501b)의 사이즈는 상기 제 1 인스트럭션 데이터(301a, 301b) 내에 내장된 명시된 인스트럭션에 의존적인 인스트럭션 캐시 관리 방법.
  12. 인스트럭션 캐시 관리 방법에 있어서,
    제 1 인스트럭션 캐시 메모리(102)를 제공하는 단계와,
    실행을 위한 제 1 인스트럭션 데이터(301a,301b)를 상기 제 1 인스트럭션 캐시 메모리(102)에 제공하는 단계와,
    상기 제 1 인스트럭션 데이터(301a, 301b)와 병렬로 그리고 그보다 우선적으로 중의 하나로의 실행을 위해 제 2 인스트럭션 데이터 스트림(302)의 표시(402)를 제공하는 단계-상기 제 2 인스트럭션 데이터 스트림(302)은 상기 제 1 인스트럭션 데이터(301a, 301b)에 의해 충족되는 캐시(501a) 요건에 비해 실질적으로 보다 적은 캐시(501b) 요건을 가짐-와,
    상기 제 2 스트림(302)의 긴박한 실행의 표시(402)의 수신 시에 상기 제 1 인스트럭션 캐시 메모리(102) 내에 임시 캐시(501b)를 생성하는 단계(403)-상기 임시 캐시(501b)는 상기 제 2 프로그램 스트림(302)의 실행을 위해 사용되는 제 2 스트림(302)의 인스트럭션 데이터의 캐싱에 사용됨-와,
    상기 제 2 인스트럭션 데이터 스트림(302) 내에서 인스트럭션을 실행하는 단계(404)와,
    상기 제 2 인스트럭션 데이터 스트림(302)의 실행을 종료하기 위한 인스트럭션의 실행 시에 상기 임시 캐시(501b)를 제거하는 단계(405)를 포함하는
    인스트럭션 캐시 관리 방법.
  13. 제 12 항에 있어서,
    상기 제공된 표시는 인트럽트 인스트럭션인 인스트럭션 캐시 관리 방법.
  14. 제 12 항에 있어서,
    상기 제 2 인스트럭션 데이터 스트림(302)은 본질적으로 대략 순차적인 인스트럭션 캐시 관리 방법.
  15. 제 12 항에 있어서,
    상기 제 2 인스트럭션 데이터 스트림(302)은 본질적으로 순차적인 인스트럭션 캐시 관리 방법.
  16. 제 12 항에 있어서,
    상기 표시는 상기 제 1 인스트럭션 캐시 메모리(102) 내의 사전결정된 메모리 위치로부터 상기 제 2 인스트럭션 데이터 스트림(302)용 인스트럭션 데이터를 인출하는 인출 동작에서 사용되는 상기 제 1 인스트럭션 캐시 메모리(102) 내의 소정의 어드레스에 의존하는 인스트럭션 캐시 관리 방법.
  17. 제 12 항에 있어서,
    소정의 어드레스에서 제 2 인스트럭션 데이터 스트림(302)을 저장하는 메인 메모리(103)를 제공하는 단계를 포함하며, 상기 제 2 인스트럭션 데이터 스트림(302)의 표시(402)는 이러한 어드레스 위치에 의존하는 인스트럭션 캐시 관리 방법.
  18. 캐시 메모리에 있어서,
    제 1 인스트럭션 데이터 스트림(301a, 301b)의 인스트럭션 데이터를 캐싱하기 위한 인스트럭션 캐시 메모리(103)와,
    공지된 특성을 갖는 제 2 인스트럭션 데이터 스트림(302)의 존재를 판정하고 상기 제 2 인스트럭션 데이터 스트림(302)의 존재에 의존하여 상기 인스트럭션 캐시 메모리(103)를 제 1 메모리 부(501a) 및 임시 메모리 부(501b)로 파티셔닝하는 판정 회로(201)를 포함하며,
    상기 제 2 인스트럭션 데이터 스트림(302) 내의 인스트럭션은 식별가능한 제 2 타입이며, 상기 제 1 메모리 부(501a)는 상기 제 1 인스트럭션 데이터 스트림(301a, 301b)의 인스트럭션을 캐싱하고, 상기 임시 메모리 부(501b)는 상기 제 2 인스트럭션 데이터 스트림(302)의 인스트럭션을 캐싱하는
    캐시 메모리.
  19. 제 18 항에 있어서,
    상기 판정 회로(201)는 하드웨어 인터럽트 회로인 캐시 메모리.
  20. 제 18 항에 있어서,
    상기 제 1 인스트럭션 데이터 스트림(301a, 301b) 내의 제 2 인스트럭션 데이터(302)는 명시된 인스트럭션에 후속하는 캐시 메모리.
  21. 제 18 항에 있어서,
    상기 제 2 인스트럭션 데이터 스트림(302)의 공지된 특성은 대략 순차적인 특성으로 실행하는 인스트럭션을 갖는 제 2 인스트럭션 데이터 스트림(302)을 식별하는 특성을 포함하는 캐시 메모리.
  22. 제 18 항에 있어서,
    상기 제 2 인스트럭션 데이터 스트림(302)의 공지된 특성은 순차적으로 실행하는 인스트럭션을 갖는 제 2 인스트럭션 데이터 스트림(302)을 식별하는 특성을 포함하는 캐시 메모리.
  23. 제 18 항에 있어서,
    상기 제 2 인스트럭션 데이터 스트림(302)은 상기 제 1 인스트럭션 데이터 스트림(301a, 301b)에 비해 축소된 캐시 요건을 갖는 캐시 메모리.
  24. 제 18 항에 있어서,
    상기 판정 회로(201)는 상기 임시 메모리 부(501b)를 생성하기 위한 사전결정된 타입의 인스트럭션을 식별하는 인스트럭션 분석 회로를 포함하는 캐시 메모리.
  25. 제 24 항에 있어서,
    상기 사전결정된 타입의 인스트럭션은 명시된 인스트럭션을 포함하는 캐시 메모리.
  26. 제 18 항에 있어서,
    상기 판정 회로(201)는 상기 임시 메모리 부(501b)를 종료시키기 위한 사전결정된 타입의 인스트럭션을 식별하는 인스트럭션 분석 회로를 포함하는 캐시 메모리.
  27. 제 26 항에 있어서,
    상기 사전결정된 타입의 인스트럭션은 인터럽트 인스트럭션으로부터의 리턴(return)을 포함하는 캐시 메모리.
  28. 제 26 항에 있어서,
    상기 사전결정된 타입의 인스트럭션은 제 1 타입 및 제 2 타입 중의 하나를 갖는 명시된 인스트럭션인 캐시 메모리.
  29. 집적 회로에 있어서,
    제 1 프로그램 스트림(301a, 301b)에 대한 인스트럭션을 캐싱하기 위한 인스트럭션 캐시 메모리(102)와,
    상기 인스트럭션 캐시 메모리(102) 내의 임시 캐시 메모리(501b)를 생성하고 제거하기 위한 회로(201)를 포함하되,
    상기 임시 캐시 메모리(501b)는 사이즈가 상기 인스트럭션 캐시 메모리(102)보다 더 작으며, 상기 제 1 프로그램 스트림(301a, 301b) 이외의 제 2 프로그램 스트림(302) 내의 인스트럭션을 캐싱하는 데 사용되는
    집적 회로.
  30. 제 29 항에 있어서,
    상기 회로는 제 1 타입의 명시된 인스트럭션에 응답하여 상기 임시 캐시 메모리(501b)를 생성하는 집적 회로.
  31. 제 30 항에 있어서,
    상기 회로는 제 2 타입의 명시된 인스트럭션에 응답하여 상기 임시 캐시 메모리(501b)를 제거하는 집적 회로.
  32. 제 29 항에 있어서,
    상기 회로는 본질적으로 순차적인 제 2 프로그램 스트림(302)의 개시에 응답하여 상기 임시 캐시 메모리(501b)를 생성하는 집적 회로.
  33. 제 29 항에 있어서,
    상기 제 2 프로그램 스트림(302)은 상기 제 1 프로그램 스트림(301a, 301b)에 비해 실질적으로 축소된 인스트럭션 캐시(102)를 갖는 집적 회로.
  34. 제 29 항에 있어서,
    상기 회로(201)는 사전결정된 타입의 인스트럭션을 식별하며, 그 인스트럭션에 응답하여 임시 캐시 메모리(501b)의 생성 및 제거 중의 하나를 수행하기 위한 인스트럭션 분석 회로를 포함하는 집적 회로.
  35. 집적 회로 기능 블록을 정의하는 데이터를 저장한 저장 매체에 있어서,
    상기 집적 회로 기능 블록은,
    제 1 프로그램 스트림(301a, 301b)에 대한 인스트럭션을 캐싱하기 위한 인스트럭션 캐시 메모리(102)와,
    상기 인스트럭션 캐시 메모리(102) 내의 임시 캐시 메모리(501b)를 생성하고 제거하기 위한 회로(201)를 포함하되,
    상기 임시 캐시 메모리(501b)는 사이즈가 상기 인스트럭션 캐시 메모리(102)보다 더 작으며, 상기 제 1 프로그램 스트림(301a, 301b) 이외의 제 2 프로그램 스트림(302) 내의 인스트럭션을 캐싱하는 데 사용되는
    저장 매체.
  36. 제 35 항에 있어서,
    상기 제 1 회로(201)를 정의하는 데이터는 상기 제 1 회로가 제 1 타입의 명시된 인스트럭션에 응답하여 임시 캐시 메모리(501b)를 생성하는 것을 정의하는 데이터를 포함하는 저장 매체.
  37. 제 35 항에 있어서,
    상기 제 1 회로(201)를 정의하는 데이터는 상기 제 1 회로(201)가 제 2 타입의 명시된 인스트럭션에 응답하여 상기 임시 캐시 메모리(501b)를 제거하는 것을 정의하는 데이터를 포함하는 저장 매체.
  38. 제 35 항에 있어서,
    상기 제 1 회로(201)를 정의하는 데이터는 상기 회로(201)가 본질적으로 순차적인 상기 제 2 프로그램 스트림(302)의 개시에 응답하여 상기 임시 캐시 메모리(501b)를 생성하는 것을 정의하는 데이터를 포함하는 저장 매체.
  39. 제 37 항에 있어서,
    상기 제 2 프로그램 스트림(302)은 상기 제 1 프로그램 스트림(301a, 301b)에 비해 실질적으로 축소된 인스트럭션 캐시(102)를 갖는 저장 매체.
  40. 제 34 항에 있어서,
    상기 제 1 회로(201)를 정의하는 데이터는 상기 회로(201)가 사전결정된 타입의 인스트럭션을 식별하고 그 인스트럭션에 응답하여 상기 임시 캐시 메모리(501b)의 생성 및 제거 중의 하나를 수행하기 위한 인스트럭션 분석 회로를 포함하는 저장 매체.
KR1020057015715A 2003-02-24 2004-02-23 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체 KR100985239B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US44887103P 2003-02-24 2003-02-24
US60/448,871 2003-02-24

Publications (2)

Publication Number Publication Date
KR20050115875A true KR20050115875A (ko) 2005-12-08
KR100985239B1 KR100985239B1 (ko) 2010-10-04

Family

ID=32908665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057015715A KR100985239B1 (ko) 2003-02-24 2004-02-23 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체

Country Status (8)

Country Link
US (1) US7353337B2 (ko)
EP (1) EP1599803B1 (ko)
JP (1) JP2006518896A (ko)
KR (1) KR100985239B1 (ko)
CN (1) CN1777875B (ko)
AT (1) ATE444526T1 (ko)
DE (1) DE602004023372D1 (ko)
WO (1) WO2004075066A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100735552B1 (ko) * 2005-09-23 2007-07-04 삼성전자주식회사 코드 메모리 상의 프로그램의 코드 크기를 줄이는 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263587B1 (en) 2003-06-27 2007-08-28 Zoran Corporation Unified memory controller
US7689772B2 (en) * 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
US7747820B2 (en) * 2007-06-15 2010-06-29 Microsoft Corporation Managing working set use of a cache via page coloring
CN101753282B (zh) * 2008-12-22 2013-06-19 电信科学技术研究院 一种进程缓存的配置和处理的方法及系统
FR2962567B1 (fr) * 2010-07-12 2013-04-26 Bull Sas Procede d'optimisation d'acces memoire, lors de la reprise d'execution d'une application, dans un microprocesseur comprenant plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede
US9104532B2 (en) * 2012-12-14 2015-08-11 International Business Machines Corporation Sequential location accesses in an active memory device
WO2014143036A1 (en) 2013-03-15 2014-09-18 Intel Corporation Method for pinning data in large cache in multi-level memory system
US9558124B2 (en) * 2013-11-08 2017-01-31 Seagate Technology Llc Data storage system with passive partitioning in a secondary memory
CN105706049B (zh) * 2014-01-27 2019-04-16 上海兆芯集成电路有限公司 操作系统例行程序的预测历程储存器的部分使用
US10235203B1 (en) 2014-03-31 2019-03-19 EMC IP Holding Company LLC Techniques for increasing storage system performance in processor-bound workloads with large working sets and poor spatial locality

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463424A (en) * 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
EP0389151A3 (en) * 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
US5394531A (en) * 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
EP0442474B1 (en) * 1990-02-13 1997-07-23 Sanyo Electric Co., Ltd. Apparatus and method for controlling cache memory
JPH0799508B2 (ja) * 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5537635A (en) * 1994-04-04 1996-07-16 International Business Machines Corporation Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size
US5696932A (en) * 1995-05-16 1997-12-09 International Business Machines Corporation Method and system for estimating minumun requirements on a cache in a computer based storage system
US5893920A (en) * 1996-09-30 1999-04-13 International Business Machines Corporation System and method for cache management in mobile user file systems
GB9701960D0 (en) * 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
EP0856798B1 (en) * 1997-01-30 2004-09-29 STMicroelectronics Limited A cache system
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6370619B1 (en) * 1998-06-22 2002-04-09 Oracle Corporation Managing partitioned cache
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6898694B2 (en) * 2001-06-28 2005-05-24 Intel Corporation High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100735552B1 (ko) * 2005-09-23 2007-07-04 삼성전자주식회사 코드 메모리 상의 프로그램의 코드 크기를 줄이는 방법
US7831809B2 (en) 2005-09-23 2010-11-09 Samsung Electronics Co., Ltd. Method for reducing code size of a program in code memory by dynamically storing an instruction into a memory location following a group of instructions indicated by an offset operand and either a length operand or a bitmask operand of an echo instruction

Also Published As

Publication number Publication date
JP2006518896A (ja) 2006-08-17
EP1599803A2 (en) 2005-11-30
US7353337B2 (en) 2008-04-01
WO2004075066A8 (en) 2005-04-07
US20060179225A1 (en) 2006-08-10
WO2004075066A2 (en) 2004-09-02
EP1599803B1 (en) 2009-09-30
WO2004075066A3 (en) 2004-10-07
CN1777875B (zh) 2010-04-28
CN1777875A (zh) 2006-05-24
DE602004023372D1 (de) 2009-11-12
ATE444526T1 (de) 2009-10-15
KR100985239B1 (ko) 2010-10-04

Similar Documents

Publication Publication Date Title
JP3816586B2 (ja) 先取り命令を生成する方法とシステム
US9652230B2 (en) Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US5838945A (en) Tunable software control of harvard architecture cache memories using prefetch instructions
US8250332B2 (en) Partitioned replacement for cache memory
US7093258B1 (en) Method and system for managing distribution of computer-executable program threads between central processing units in a multi-central processing unit computer system
US20070204107A1 (en) Cache memory background preprocessing
US7966457B2 (en) Configurable cache for a microprocessor
US20050086435A1 (en) Cache memory controlling apparatus, information processing apparatus and method for control of cache memory
US7877537B2 (en) Configurable cache for a microprocessor
JP2005539321A (ja) データ処理システムの外部および内部命令セット
US6578065B1 (en) Multi-threaded processing system and method for scheduling the execution of threads based on data received from a cache memory
EP2495662B1 (en) Configurable cache for a microprocessor
KR100985239B1 (ko) 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체
JP2006516168A (ja) ストライド予測テーブルにアドレスするためにキャッシュミスパターンを使用する方法
US20090276575A1 (en) Information processing apparatus and compiling method
US20030088636A1 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
US20210096868A1 (en) Circuitry and method
JP2004038601A (ja) キャッシュメモリ装置
US20070239939A1 (en) Apparatus for Performing Stream Prefetch within a Multiprocessor System
Lopriore Stack cache memory for block-structured programs

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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