KR100395756B1 - 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서 - Google Patents

캐쉬 메모리 및 이를 이용하는 마이크로 프로세서 Download PDF

Info

Publication number
KR100395756B1
KR100395756B1 KR10-2001-0034186A KR20010034186A KR100395756B1 KR 100395756 B1 KR100395756 B1 KR 100395756B1 KR 20010034186 A KR20010034186 A KR 20010034186A KR 100395756 B1 KR100395756 B1 KR 100395756B1
Authority
KR
South Korea
Prior art keywords
data
memory
cache
execution engine
line
Prior art date
Application number
KR10-2001-0034186A
Other languages
English (en)
Other versions
KR20020095874A (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 삼성전자주식회사
Priority to KR10-2001-0034186A priority Critical patent/KR100395756B1/ko
Priority to US10/094,770 priority patent/US6934811B2/en
Priority to GB0209503A priority patent/GB2378020B/en
Publication of KR20020095874A publication Critical patent/KR20020095874A/ko
Application granted granted Critical
Publication of KR100395756B1 publication Critical patent/KR100395756B1/ko

Links

Classifications

    • 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
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

낮은 소비전력을 갖는 캐쉬가 제공된다. 실행 엔진은 다음 사이클에 요구되는 데이터가 직전에 이용된 데이터의 바로 다음 위치로 저장되어 있음을 표시하는 순차 인출 신호를 발생한다. 라인 재사용 버퍼(line reuse buffer)가 구비되는데, 이는 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 캐쉬의 데이터 메모리에 저장되어 있는 데이터를 저장한다. 캐쉬 제어기는 실행 엔진으로부터 순차 인출 신호가 입력되고, 메모리 요구 신호에 의해 요구되는 데이터가 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 경우, 라인 재사용 버퍼로부터 데이터를 인출하며, 캐쉬는 저전력 대기상태로 제어된다.

Description

캐쉬 메모리 및 이를 이용하는 마이크로 프로세서{CACHE MEMORY AND MICROPROCESSOR USING THIS CACHE MEMORY}
본 발명은 마이크로 프로세서에서의 메모리에 대한 데이터 요구(data request)를 처리하는 방법 및 장치에 관한 것으로, 특히 낮은 소비전력의 명령어 캐쉬를 구현하는 것에 관련된다.
마이크로 프로세서와 메모리 간의 동작속도의 차이 때문에 캐쉬 메모리를 이용하여 메모리 접근시간을 단축시키는 방법이 일반화되어 있다. 캐쉬 메모리의 동작원리는 프로그램이 수행될 때 이미 접근한 메모리 어드레스는 단시간 이내에 다시 접근한다는 시간지역성(temporal locality)과 접근한 메모리 어드레스에 인접한 어드레스는 곧 접근한다는 공간지역성(spatial locality)이다. 최근 성능 향상을 위하여 많은 양의 캐쉬 메모리를 프로세서 코어(processer core)와 더불어 한 칩에 집적하고 있다. 그리하여 칩상에서 캐쉬 메모리가 차지하는 면적은 점점 증가하고 있다. 일례로서 인텔사의 SA(StrongArm)-110과 같은 프로세서는 약 70%나 되는 칩의 면적이 캐쉬에 의해 점유된다.
미국특허 제5,455,925호는 메인 메모리, 외부 캐쉬 메모리 및 내부 캐쉬 메모리에 저장된 데이터의 코히어런시(coherency)를 유지하는 장치에 관해 개시하고 있으며, 미국특허 제5,809,531호는 외부 RAM에 접근하지 않고 내부 캐쉬(internal cache)를 사용하여 프로그램을 수행하는 컴퓨터 시스템에 관해 개시하고 있다.
도 1은 L2 캐쉬와 태그가 내장된 마이크로 프로세서 유닛(micro processor unit : 이하 "MPU"라고 함)의 블록도이다. MPU 외부에 연결되었던 L2 캐쉬를 MPU에 내장하면 라인 로딩(line loading)이 감소되어 속도가 개선되고, 전력 소모도 줄어드는 효과가 있다. 한편 멀티웨이 세트(multi-way set)의 사용으로 히트 비율(hitratio)를 증가시켜 효율적이고 단순한 구조를 가져갈 수 있게 되었다. 도 1은 8개의 SRAM과 1개의 태그(TAG)와 MPU 코어(core)로 구성되어 있으며, MPU와 8개의 SRAM 사이에 어드레스와 데이터가 전달되고, 태그와 MPU 사이에는 어드레스가 전달되며, 태그에서는 세트 선택 신호(set selection signal)을 SRAM에 전달한다. 데이터가 판독되는 동작을 설명하면, MPU에서 생성되는 어드레스를 태그에서는 이전 어드레스와 비교하여 세트 선택 신호를 각 L2 캐쉬에 전달한다. L2 캐쉬에서는 어드레스에 의해 모든 세트의 워드라인(wordline)이 선택되고, 그 중 태그에서 전달되는 세트 선택 신호에 해당하는 데이터가 읽혀진다.
그런데 도 2에 도시된 바와 같이, 프로세서 코어와 함께 캐쉬 메모리를 한 칩에 집적하면, 캐쉬 메모리에서 소모되는 전력은 전체 칩 전력소모의 상당 부분에 해당하며, 캐쉬의 전력소모를 줄이는 것은 전체 칩 전력소모를 줄이는데 큰 도움이 된다. 특히 명령어 캐쉬의 경우는 프로그램이 동작하는 동안 거의 매 사이클에 한번씩 접근하게 되어 전력소모가 많으므로 저전력으로 구현해야만 한다.
따라서 본 발명은 기존의 캐쉬에 비해 회로적인 복잡도를 거의 증가시키지 않으면서 저소비전력을 갖는 캐쉬를 제공하는 것을 일 목적으로 한다.
또한 본 발명은 저소비전력을 갖는 명령어 캐쉬를 구비한 마이크로 프로세서를 제공하는 것을 또 다른 목적으로 한다.
도 1은 8개의 SRAM이 내장된 마이크로 프로세서의 블록도.
도 2는 종래 명령어 캐쉬의 블록도.
도 3은 본 발명의 일 실시예에 의한 명령어 캐쉬의 블록도.
도 4는 본 발명의 일 실시예에 의한 캐쉬 제어기에서의 상태 천이도.
도 5는 본 발명에 의한 메모리 요구 처리방법의 흐름도.
[도면의 참조부호에 대한 설명]
101 : 데이터 메모리 103 : 태그 메모리
105 : 논리곱 게이트 107 : 태그 비교 수단
109 : 데이터 경로 201 : 라인 재사용 버퍼
202 : 캐쉬 제어기 203 : 멀티플렉서
205 : 데이터 경로 207 : 상태 표시 수단
209 : 논리합 게이트
본 발명에 의한 마이크로 프로세서에서 실행 엔진(execution engine)은 메모리 요구에 의해 요구되는 데이터가 실행 엔진에서 직전에 이용된 데이터의 바로 다음 위치로 메인 메모리에 저장되어 있는 경우, 순차 인출 신호(sequential fetch signal)를 발생시키며, 캐쉬는 라인 재사용 버퍼를 포함하고 있다. 메인 메모리로부터의 데이터 인출이 필요한 경우 실행 엔진은 메인 메모리로 메모리 요구 신호(memory request signal)를 출력하며, 메모리 요구 신호는 요구되는 데이터가 메인 메모리의 어느 위치에 저장되어 있는 지에 대한 위치정보 즉, 인출 어드레스를 포함하고 있다. 본 발명에 의한 캐쉬는 통상의 캐쉬와 같이 소정수의 워드로 구성되는 캐쉬 라인(line) 단위로 메인 메모리의 데이터를 저장하는 데이터 메모리(data memory)와, 데이터 메모리에 저장되어 있는 데이터의 메인 메모리 어드레스에 대응하는 태그 즉, 태그 어드레스를 저장하는 태그 메모리(tag memory)를 구비하고 있을 뿐만 아니라, 라인 재사용 버퍼를 또한 구비하고 있다. 라인 재사용 버퍼는 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 데이터 메모리에 저장되어 있는 데이터를 저장하고 있다. 데이터 메모리에서 새로운 캐쉬 라인에 접근하는 경우, 또는 캐쉬 미스(cache miss) 후에 새로운 캐쉬 라인을 데이터 메모리에 채워 넣는 경우에 라인 재사용 버퍼에 새로운 캐쉬 라인의 데이터가 저장된다. 데이터 메모리와 라인 재사용 버퍼와 메인 메모리와 실행 엔진 상호간의 데이터 전달을 가능하게 하는 데이터 경로(data path)가 또한 구비되며, 본 발명에 의한 캐쉬 제어기는 실행 엔진으로부터 순차 인출 신호가 입력되고, 요구되는 데이터가 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 데이터 메모리에 저장되어 있는 경우, 라인 재사용 버퍼로부터 실행 엔진으로 데이터가 전달되도록 데이터 경로를 제어한다. 이 경우, 캐쉬 제어기는 또한 데이터 메모리와 태그 메모리를 저전력대기 상태로 제어한다.
메모리 요구 신호에 의해 요구되는 데이터가 데이터 메모리에 저장되어 있지 않은 경우, 캐쉬 제어기는 메인 메모리로부터 실행 엔진으로 데이터가 전달되도록 데이터 경로를 제어한다. 이 경우 캐쉬 제어기는 메인 메모리로부터 데이터 메모리로 데이터가 전달되도록 데이터 경로를 제어한다. 메모리 요구 신호에 의해 요구되는 데이터가 데이터 메모리에 저장되어 있으며 유효하면, 실행 엔진이 순차 인출 신호를 출력하지 않거나 요구되는 데이터가 실행 엔진에서 동일 캐쉬 라인으로 데이터 메모리에 저장되어 있지 않은 경우, 캐쉬 제어기는 데이터 메모리로부터 실행 엔진으로 데이터가 전달되도록 데이터 경로를 제어한다. 메모리 요구 신호에 의해 요구되는 데이터가 데이터 메모리에 저장되어 있으나 유효하지 않으면, 캐쉬 제어기는 메인 메모리로부터 실행 엔진으로 데이터가 전달되도록 데이터 경로를 제어한다. 메모리 요구 신호에 의해 요구되는 데이터가 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 데이터 메모리에 저장되어 있는가 여부는 실행 엔진에서 직전에 이용된 데이터의 캐쉬 라인상의 위치와 캐쉬 라인의 길이에 의해 판정된다.
또한 실행 엔진과, 소정수의 워드로 구성되는 캐쉬 라인 단위로 메인 메모리의 데이터를 저장하는 캐쉬와, 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 캐쉬에 저장된 데이터를 저장하는 라인 재사용 버퍼를 포함하는 마이크로 프로세서에서, 실행 엔진의 메인 메모리에 대한 메모리 요구(memoryrequest)를 처리하는 방법이 제공된다. 먼저, 메모리 요구에 의해 요구되는 데이터가 실행 엔진에 의해 직전에 이용된 데이터의 바로 다음 위치로 메인 메모리에 저장되어 있는 경우, 실행 엔진은 순차 인출 신호(sequential fetch signal)를 발생시킨다. 순차 인출 신호가 발생되면 요구되는 데이터가 실행 엔진에 의해 직전에 이용된 데이터와 동일 캐쉬 라인으로 캐쉬에 저장되어 있는지 확인하고, 요구되는 데이터가 동일 캐쉬 라인으로 캐쉬에 저장되어 있으면 라인 재사용 버퍼로부터 메모리 요구에 의해 요구되는 데이터를 인출하여, 실행 엔진으로 전달한다.
데이터 메모리와 태그 메모리의 합은 보통 10KB에서 70KB 정도이며, 라인 재사용 버퍼는 8바이트에서 64바이트 정도이므로, 라인 재사용 버퍼를 접근할 때의 전력소모는 데이터 메모리와 태그 메모리 접근시의 전력소모에 비해 훨씬 적다. 라인 재사용 버퍼를 통해 실행 엔진에 데이터를 제공하는 빈도는 프로그램에 따라 다르지만 대략 70∼80%에 이르러, 결국 라인 재사용 버퍼를 통한 전력소모의 절감은 상당하다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세히 설명한다. 첨부된 도면에서 동일한 구성요소는 동일한 참조부호를 사용하여 표시한다.
도 2는 일반적인 명령어 캐쉬의 기본 구조를 도시하는 도면이다. 도 2에 도시된 바와 같이, 일반적인 명령어 캐쉬는 메인 메모리에 저장되어 있는 명령어의 내용을 저장하는 데이터 메모리(101)와, 현재 캐쉬에 저장된 명령어가 어떤 것인지를 나타내기 위해 그 태그 어드레스를 저장하고 있는 태그 메모리(103)와, 그리고 캐쉬의 동작을 제어하는 캐쉬 제어기(도시되지 않음)와, 상호간의 데이터 전달을위하여 상기 구성요소를 캐쉬 제어기의 제어하에 서로 연결하는 데이터 경로를 구비하고 있다. 도 2에 실행 엔진과 메인 메모리가 도시되어 있지는 않으나, 실행 엔진과 메인 메모리가 명령어 캐쉬와 어떻게 연결되는지는 당업자에게 충분히 알려져 있다.
요구되는 데이터의 메인 메모리에서의 어드레스와 태그 메모리에 저장되어 있는 태그가 서로 어떻게 연관되는지는 캐쉬 매핑 방식에 의해 결정된다. 본 실시예에서는 직접 매핑 방식(direct mapping method)과 관련해서 설명되나, 완전 연상 매핑 방식(fully associative mapping method)이나 세트 연상 매핑 방식(set associative mapping method)이 이용될 수도 있다. 데이터 경로(data path)는 본 실시예에서 다수의 멀티플렉서(107)와 버스(bus)로 구성되는데, 캐쉬 제어기의 제어하에 데이터 메모리(101)와 메인 메모리(도시되지 않음)와 실행 엔진(도시되지 않음)을 상호간에 연결함으로써 데이터의 전달이 이루어지도록 한다.
캐쉬의 동작은 크게 캐쉬 히트(cache hit)시의 읽기 사이클과 캐쉬 미스(cache miss)시의 처리 사이클로 나뉜다. 실행 엔진이 캐쉬(100)에 접근할 때, 실행 엔진은 캐쉬(100)에 요구되는 데이터의 메인 메모리에서의 어드레스를 전달하게 된다. 이 어드레스는 도 2에서 가장 상단의 "N 비트 인출 어드레스"로 표시된다. N 비트 인출 어드레스는 T 비트의 태그(tag), X 비트의 인덱스(index), L 비트의 라인 오프셋(line offset)으로 구성된다. L 비트의 라인 오프셋은 W 비트의 워드 오프셋(word offset)를 포함하고 있다. 캐쉬는 이 N 비트 인출 어드레스의 X 비트 인덱스를 가지고 캐쉬 내의 데이터 메모리(101)와 태그 메모리(103)에 접근한다. 이 때 태그 메모리(103)에서 읽은 태그가 실행 엔진에서 제공된 인출 어드레스의 T 비트 태그와 동일하고, 그 캐쉬 엔트리(cache entry)가 유효하면 캐쉬 히트가 된다. 어드레스가 실행 엔진에서 제공된 인출 어드레스의 T 비트 태그와 동일한지 여부는 태그 비교 수단(107)에서 판단되는데, 서로 동일한 경우 본 실시예에서 태그 비교 수단(107)은 논리값 1을 발생하도록 구성된다. 태그 비교 수단(107)은 배타적 논리합 게이트(Exclusive-OR gate)를 이용하여 구성할 수 있다. 캐쉬 엔트리가 유효한지는 유효 비트(V)라는 1 비트의 값을 참조하여 판단된다. 캐쉬 엔트리가 유효한 경우 본 실시예에서 "V"는 논리값 1을 갖는다. 태그 비교 수단(107)의 출력과 유효 비트의 값은 논리곱 게이트(105)에 입력되며, 논리곱 게이트(105)의 출력이 논리값 1을 갖으면 캐쉬 히트가 발생한 것이다. 캐쉬 히트가 발생한 경우 캐쉬의 데이터 메모리(101)에서 읽은 데이터를 실행 엔진이 기다림없이 정상적으로 이용한다. 이를 위해 캐쉬 제어기는 데이터 경로를 제어하여 데이터 메모리(101)와 실행 엔진이 서로 연결되도록 한다.
논리곱 게이트(105)의 출력이 논리값 0을 갖는 경우, 캐쉬 미스가 난 것이므로 캐쉬 제어기는 실행 엔진으로 하여금 현재 접근한 데이터를 무시하고, 유효한 데이터가 준비될 때까지 기다리도록 제어신호들을 발생시킨다. 유효한 데이터를 가져오기 위해 캐쉬 제어기는 인터페이스 로직을 통해 캐쉬(100) 밖에 있는 하위 메모리(통상, 메인 메모리)에 접근하여 필요한 데이터를 가져와서 데이터 메모리(101)에 저장하고, 태그 메모리(103)에도 해당하는 태그를 저장하여 미스처리 사이클을 완료한다. 이 때, 실행 엔진에 제공할 데이터는 데이터 메모리(101)에저장한 후, 데이터 메모리(101)에서 읽을 수도 있고, 데이터 메모리(101)에 저장하는 동시에 실행 엔진에 데이터를 전달할 수도 있다.
본 발명은 캐쉬 히트 사이클에서 이전 사이클에 접근한 캐쉬 엔트리를 다시 접근하는 경우에 데이터 메모리와 태그 메모리에 접근하지 않고, 이전 사이클에 이미 접근한 캐쉬 엔트리를 저장하고 있는 라인 재사용 버퍼(line reuse buffer : LRB)에 있는 데이터를 바로 이용한다. 이를 위해 실행 엔진는 다음 사이클에 현재 접근한 명령어의 바로 다음 위치로 메인 메모리에 저장된 명령어에 접근한다는 사실(이하, "순차 인출(sequential fetch)"이라 함)을 미리 캐쉬에 알려 주어야 한다. 이와 같은 정보를 주는 프로세서의 예로서는 ARM사의 ARM9TDMI와 삼성전자의 CalmRISC-32 등이 있다.
도 3은 본 발명의 일 실시예에 의한 명령어 캐쉬의 구조를 나타내는 도면이다. 도 2에 도시된 종래의 명령어 캐쉬와 비교하여, 본 발명의 일 실시예에 의한 명령어 캐쉬는 라인 재사용 버퍼(201) 및 이 라인 재사용 버퍼를 포함한 전체 캐쉬의 동작을 제어하는 캐쉬 제어기(202)를 구비하고 있는 점에서 구별된다. 또한 라인 재사용 버퍼와 관련하여 데이터 경로를 구성하는 멀티플렉서(203), 캐쉬 제어기의 상태를 표시하는 상태 표시 수단(207), 캐쉬 히트를 판정하는 논리합 게이트(209), 메인 메모리 및 태그 메모리에 대한 칩 선택 신호(CSN)를 발생시키는 논리합 게이트(211)가 더 구비된다. 다른 구성요소는 도 2에 도시된 명령어 캐쉬와 동일하므로, 도 3에서 동일한 참조부호로 표시하였다. 도 3에서 점선으로 표시된 캐쉬 제어기(202)는 당업자의 이해를 용이하게 하기 위하여 본 발명과 직접 관련된일부의 구성요소만을 구비하는 것으로 도시하였다.
우선 멀티플렉서(203)는 캐쉬(200)의 데이터 메모리(101) 또는 메인 메모리로부터 출력된 캐쉬 라인 단위의 데이터가 라인 재사용 버퍼(201)에 쓰여질 수 있도록 데이터 경로를 구성한다. 캐쉬(200)의 데이터 메모리(101)에서 새로운 캐쉬 라인에 접근하거나, 혹은 미스 처리 후에 데이터 메모리(101)에 새로운 캐쉬 라인을 채워 넣을 때 그 내용이 실행 엔진에 전달되는 동시에 라인 재사용 버퍼(201)에 저장된다.
상태 표시 수단(207)은 플립플롭으로 구성되며, 캐쉬 제어기(202)에서 출력되는 1 비트의 값을 저장한다. 상태 표시 수단(207)이 논리값 1을 갖는 경우, 데이터 메모리(101) 및 태그 메모리(103)는 그 칩 선택 단자(CSN)에 논리값 1이 입력되므로 동작이 정지되어 저전력 대기상태로 들어간다. 논리합 게이트(209)의 일 입력으로 상태 표시 수단(207)에 저장된 값이 사용되므로, 상태 표시 수단(207)에 저장된 값이 1인 경우 항상 캐쉬 히트가 된다. 또한 상태 표시 수단(207)에 저장된 값이 1이면 데이터 경로를 구성하는 멀티플렉서를 제어하므로써 라인 재사용 버퍼(201)에 저장된 데이터가 실행 엔진으로 전달되도록 한다.
캐쉬 제어기(202)는 동일 사이클에 실행 엔진이 제공하는 순차 인출 정보와 현재 접근했던 데이터의 캐쉬 라인 상의 위치를 종합하여, 다음 사이클에 실행 엔진이 현재 라인 재사용 버퍼(201)에 들어 있는 캐쉬 라인을 접근하는지를 결정한다. 이 결정에 따라 캐쉬 제어기(202)의 상태가 정해진다. 현재 라인 재사용 버퍼(201)에 들어 있는 캐쉬 라인에 실행 엔진이 접근하는 것으로 캐쉬제어기(202)가 결정하는 경우, 캐쉬 제어기(202)는 상태 표시 수단(207)에 논리값 1을 저장한다. 이에 따라 데이터 메모리(101) 및 태그 메모리(103)는 저전력 대기상태로 들어가며 실행 엔진이 요구하는 데이터는 라인 재사용 버퍼(201)로부터 읽혀진다.
도 4는 본 발명에 의한 캐쉬 제어기의 상태도 중에서 관련된 부분만을 도시한 것이다. 도 4에서 "READY"는 일반적인 캐쉬 접근을 위한 준비상태, "LRB_READY"는 라인 재사용 버퍼 접근을 위한 준비상태, "MISS_HANDLING"는 캐쉬 미스를 처리하는 상태를 각각 표시한다. 또한 "~"는 논리부정, ""는 논리곱을 각각 표시한다.
일반적인 캐쉬 접근을 위한 준비상태인 "READY" 상태에서 캐쉬 히트(Cache Hit)가 발생하였으며, 실행 엔진이 다음 접근이 순차 인출이라고 알려 주었으며(SEQ로 표시), 다음 접근이 현재 접근한 캐쉬 라인에 대한 것이라면(IN_LINE으로 표시), 캐쉬 제어기는 라인 재사용 버퍼 접근을 위한 준비상태인 "LRB_READY" 상태로 전이한다. 그러나 캐쉬 히트가 되었더라도 순차 인출이 아니거나(~SEQ) 동일한 캐쉬 라인에 대한 것이 아니라면(~IN_LINE), 계속 일반적인 캐쉬 접근을 위한 준비상태인 " READY" 상태에 있게 된다. 한편 "READY" 상태에서 캐쉬 미스가 발생한 경우에는 캐쉬 미스 처리가 이루어지는 "MISS_HANDLING" 상태로 전이한다.
다음 접근이 현재 접근한 캐쉬 라인에 대한 것임을 표시하는 "IN_LINE" 조건은 도 3에서 MUX(206)의 선택으로 사용되는 (L-W)개의 비트가 모두 1이 아닌 경우, 즉 하나라도 0이 있는 경우이다. (L-W)개의 비트가 모두 1이면 다음에 접근하는 워드가 현재 접근한 워드와 메인 메모리에서 인접하기는 하나, 캐쉬의 데이터 메모리(101)에서 다음 캐쉬 라인으로 넘어가는 경우를 뜻한다.
"LRB_READY" 상태에 있으면 도 3과 관련하여 이미 설명한 바와 같이 상태 표시 수단(207)이 논리값 1을 가지게 되므로, 실행 엔진에 의한 메모리 요구(memory request)는 태그 메모리에 접근하지 않고도 캐쉬 히트가 발생할 것을 알 수 있으며, 이 때 데이터는 라인 재사용 버퍼(201)로부터 읽혀지고, 데이터 메모리(101) 및 태그 메모리(103)는 저전력 대기상태로 있게 된다. "LRB_READY" 상태에서, 만일 다음 접근이 순차 인출이 아니거나 혹은 다른 캐쉬 라인에 대한 것이면(~(SEQ IN_LINE)으로 표시), 캐쉬 제어기는 다시 "READY" 상태로 전이하게 된다. "LRB_READY" 상태에서 다음에 접근하는 워드가 현재 접근한 워드에 대해 순차 인출에 해당하고, 동일 캐쉬 라인에 있는 동안 "LRB_READY" 상태를 유지한다.
캐쉬 미스 처리가 이루어지는 "MISS_HANDLING" 상태에서 캐쉬에 대한 캐쉬 라인 기입이 완료된 후, 순차 인출이고 동일 라인인 경우에는 라인 재사용 버퍼 접근을 위한 준비상태인 "LRB_READY" 상태로 전이하며, 순차 인출이 아니거나 동일 라인이 아닌 경우에는 일반적인 캐쉬 접근을 위한 준비상태인 "READY" 상태로 전이한다.
도 5는 본 발명에 의해 라인 재사용 버퍼를 구비하고 있는 캐쉬에서 실행 엔진의 메모리 요구를 처리하는 방법을 나타내는 흐름도이다. 먼저 실행 엔진은 다음 사이클에 수행할 명령어나 데이터를 메인 메모리에 요구하는 메모리 요구 신호를 발생한다(401). 메모리 요구 신호는 요구하는 데이터가 저장된 메모리 위치에 대한정보, 즉 인출 어드레스를 포함하고 있다. 도 2 및 도 3과 관련하여 이미 설명한 바와 같이, 이 인출 어드레스의 N 비트 중에서 인덱스인 X 비트를 이용하여 캐쉬의 태그 메모리에 접근하여 저장되어 있는 태그와 인출 어드레스 중의 태그를 비교하여, 실행 엔진이 요구하는 데이터가 데이터 메모리에 저장되어 있는 것이 확인되면 캐쉬 히트가 발생된다(403). 캐쉬 히트가 발생하지 않으면 요구되는 데이터가 캐쉬에 저장되어 있지 않은 경우이므로 캐쉬 제어기는 외부 메모리, 즉 메인 메모리로부터 실행 엔진으로 데이터가 전달되도록 데이터 경로를 제어한다(413). 메인 메모리로부터 데이터가 인출되는 경우, 이 데이터는 실행 엔진으로 보내질 뿐만 아니라, 메모리 요구 신호에 의해 요구되는 데이터와 인접하는 캐쉬 라인 단위의 데이터가 소정 위치의 데이터 메모리에 저장되고, 인출 어드레스 중의 태그 비트가 태그 메모리에 저장된다. 이 캐쉬 라인 단위의 데이터는 라인 재사용 버퍼에도 기록된다.
다음에 캐쉬 제어기는 실행 엔진이 순차 인출 신호를 발생하는가 여부를 검사한다(405). 실행 엔진에 의해 소정 시간 내에 (통상, 동일 사이클 내에) 순차 인출 신호가 발생되지 않은 것으로 확인되면, 메모리 요구 신호에 의해 요구되는 데이터가 캐쉬에 저장되어 있기는 하나, 현재 실행 엔진에서 사용되는 데이터와 인접하여 캐쉬에 저장되어 있지 않은 경우이므로 동일한 캐쉬 라인의 다른 위치 또는 다른 캐쉬 라인에 접근하여 요구되는 데이터를 실행 엔진으로 보낸다(409). 뿐만 아니라 캐쉬 라인 전체의 데이터를 라인 재사용 버퍼에 새롭게 기입한다.
순차 인출 신호가 실행 엔진에 의해 발생한 것으로 확인되면, 전술한 바와같이 다음 사이클에 이용될 데이터가 현재 사이클에서 실행되는 데이터와 동일한 캐쉬 라인으로 캐쉬에 저장되어 있는지 여부를 검토한다(407). 동일한 캐쉬 라인으로 저장되어 있지 않은 것으로 확인되면 다음 사이클에 이용될 데이터가 다른 캐쉬 라인으로 저장되어 있는 경우이므로 다른 캐쉬 라인에서 요구되는 데이터를 인출하여 실행 엔진으로 보내고, 캐쉬 라인 전체의 데이터를 라인 재사용 버퍼에 새롭게 기입한다(409). 그러나 동일 캐쉬 라인으로 저장되어 있는 것으로 확인되면, 라인 재사용 버퍼에 접근하여 데이터를 인출한다(411). 이 경우 전술한 바와 같이 태그 메모리 및 데이터 메모리는 저전력 대기상태가 되도록 한다.
본 실시예에 의한 데이터 요구 처리 방법은 캐쉬 히트 여부의 판단, 순차 인출 신호의 발생 여부의 판단, 동일 라인 여부의 판단이 순차적으로 이루어지는 것으로 설명되어 있으나, 그 순서가 바뀌거나 동시에 수행되어도 본 발명의 목적을 구현할 수 있다.
전술한 바와 같은 본 실시예는 단순히 본 발명을 설명하기 위한 것으로서 본 발명의 권리범위를 한정하려는 것은 아니다. 따라서 당업자들은 본 기재로부터 다양한 변형이나 변경을 가할 수 있으나, 그렇다고 하여 본 발명의 범위를 넘어서는 것은 아니다.
데이터 메모리와 태그 메모리의 합은 보통 10KB에서 70KB 정도이며, 라인 재사용 버퍼는 8바이트에서 64바이트 정도이므로, 라인 재사용 버퍼를 접근할 때의 전력소모는 데이터 메모리와 태그 메모리 접근시의 전력소모에 비해 훨씬 적다. 라인 재사용 버퍼를 통해 실행 엔진에 데이터를 제공하는 빈도는 프로그램에 따라 다르지만 대략 70∼80%에 이르러, 결국 라인 재사용 버퍼를 통한 전력소모의 절감은 상당하다.
뿐만 아니라, 본 발명에서 제안한 라인 재사용 버퍼는 캐쉬에서 반출(replacing)되는 캐쉬 라인을 저장하는 임시 저장 장소로도 쓰일 수 있으며, 기존의 명령어 캐쉬에 비해 회로적인 복잡도를 거의 증가시키지 않는다.

Claims (33)

  1. 마이크로 프로세서에 있어서,
    ① 메모리 요구 신호(memory request signal) 및 순차 인출 신호(sequential fetch signal)를 발생시키는 실행 엔진(execution engine)―여기서, 상기 메모리 요구 신호는 메인 메모리로부터의 데이터 인출을 요구하며, 상기 메모리 요구 신호에 의해 요구되는 데이터의 상기 메인 메모리에서의 위치정보를 포함하고, 상기 순차 인출 신호는 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터의 바로 다음 위치로 상기 메인 메모리에 저장되어 있는 경우 발생됨―과,
    ② 캐쉬(cache)―여기서, 상기 캐쉬는
    ⓐ 소정수의 워드로 구성되는 캐쉬 라인(cache line) 단위로 상기 메인 메모리의 데이터를 저장하는 데이터 메모리(data memory)와,
    ⓑ 상기 데이터 메모리에 저장되어 있는 데이터의 상기 메인 메모리에서의 위치정보에 대응하는 태그를 저장하는 태그 메모리(tag memory)와,
    ⓒ 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 데이터를 저장하는 라인 재사용 버퍼(line reuse buffer)와,
    ⓓ 상기 데이터 메모리와 상기 라인 재사용 버퍼와 상기 메인 메모리와 상기 실행 엔진을 필요에 따라 상호간에 연결시키는 데이터 경로(data path)와,
    ⓔ 상기 실행 엔진으로부터 순차 인출 신호가 입력되고, 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 경우, 상기 라인 재사용 버퍼로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 캐쉬 제어기를 포함함―를
    구비하는 것을 특징으로 하는 마이크로 프로세서.
  2. 제1항에 있어서,
    상기 데이터 경로는 멀티플렉서(multiplexer)를 포함하는 것을 특징으로 하는 마이크로 프로세서.
  3. 제1항에 있어서,
    상기 캐쉬 제어기가 상기 라인 재사용 버퍼로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 경우, 상기 데이터 메모리와 상기 태그 메모리를 저전력대기 상태로 제어하는 것을 특징으로 하는 마이크로 프로세서.
  4. 제1항에 있어서,
    상기 캐쉬는 명령어 캐쉬인 것을 특징으로 하는 마이크로 프로세서.
  5. 제1항에 있어서,
    상기 데이터 메모리에서 새로운 캐쉬 라인에 접근하는 경우, 또는 캐쉬 미스(cache miss) 후에 새로운 캐쉬 라인을 상기 데이터 메모리에 채워 넣는 경우에 상기 새로운 캐쉬 라인의 데이터를 상기 라인 재사용 버퍼에 저장하는 것을 특징으로 하는 마이크로 프로세서.
  6. 제1항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 데이터 메모리에 저장되어 있지 않은 경우, 상기 캐쉬 제어기는 상기 메인 메모리로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서.
  7. 제6항에 있어서,
    상기 캐쉬 제어기는 또한 상기 메인 메모리로부터 상기 데이터 메모리로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서.
  8. 제1항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 데이터 메모리에 저장되어 있으며 유효하면, 상기 실행 엔진이 순차 인출 신호를 출력하지 않거나 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있지 않은 경우, 상기 캐쉬 제어기는 상기 데이터 메모리로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서.
  9. 제8항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 데이터 메모리에 저장되어 있으나 유효하지 않으면, 상기 캐쉬 제어기는 상기 메인 메모리로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서.
  10. 제1항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는가 여부는 상기 실행 엔진에서 직전에 이용된 데이터의 캐쉬 라인상의 위치와 상기 캐쉬 라인의 길이에 의해 판정되는 것을 특징으로 하는 마이크로 프로세서.
  11. 제1항에 있어서,
    상기 태그는 상기 위치정보와 직접 매핑 방식(direct mapping method)으로 대응되는 것을 특징으로 하는 마이크로 프로세서.
  12. 제1항에 있어서,
    상기 태그는 상기 위치정보와 완전 연상 방식(fully associative method)으로 대응되는 것을 특징으로 하는 마이크로 프로세서.
  13. 제1항에 있어서,
    상기 태그는 상기 위치정보와 세트 연상 방식(set associative method)으로 대응되는 것을 특징으로 하는 마이크로 프로세서.
  14. 마이크로 프로세서 시스템에 있어서,
    ① 데이터를 저장하며, 저장된 데이터는 해당 위치정보로 특정되는 메인 메모리(main memory)와,
    ② 메모리 요구 신호(memory request signal) 및 순차 인출 신호(sequential fetch signal)를 발생시키는 실행 엔진(execution engine)―여기서, 상기 메모리 요구 신호는 상기 메인 메모리로부터의 데이터 인출을 요구하며, 상기 메모리 요구 신호에 의해 요구되는 데이터의 상기 메인 메모리에서의 위치정보를 포함하고, 상기 순차 인출 신호는 상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터의 바로 다음 위치로 상기 메인 메모리에 저장되어 있는 경우 발생됨―과,
    ③ 캐쉬(cache)―여기서, 상기 캐쉬는
    ⓐ 소정수의 워드로 구성되는 캐쉬 라인(line) 단위로 상기 메인 메모리의데이터를 저장하는 데이터 메모리(data memory)와,
    ⓑ 상기 데이터 메모리에 저장되어 있는 데이터의 상기 메인 메모리에서의 위치정보에 대응하는 태그를 저장하는 태그 메모리(tag memory)와,
    ⓒ 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 데이터를 저장하는 라인 재사용 버퍼(line reuse buffer)와,
    ⓓ 상기 데이터 메모리와 상기 라인 재사용 버퍼와 상기 메인 메모리와 상기 실행 엔진을 필요에 따라 상호간에 연결시키는 데이터 경로(data path)와,
    ⓔ 상기 실행 엔진으로부터 순차 인출 신호가 입력되고, 상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 경우, 상기 라인 재사용 버퍼로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 캐쉬 제어기를 포함함―를
    구비하는 것을 특징으로 하는 마이크로 프로세서 시스템.
  15. 제14항에 있어서,
    상기 데이터 경로는 멀티플렉서(multiplexer)를 포함하는 것을 특징으로 하는 마이크로 프로세서.
  16. 제14항에 있어서,
    상기 캐쉬 제어기가 상기 라인 재사용 버퍼로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 경우, 또한 상기 데이터 메모리와 상기 태그 메모리를 저전력대기 상태로 제어하는 것을 특징으로 하는 마이크로 프로세서 시스템.
  17. 제14항에 있어서,
    상기 캐쉬는 명령어 캐쉬인 것을 특징으로 하는 마이크로 프로세서 시스템.
  18. 제14항에 있어서,
    상기 데이터 메모리에서 새로운 캐쉬 라인에 접근하는 경우, 또는 캐쉬 미스 후에 새로운 캐쉬 라인을 상기 데이터 메모리에 채워 넣는 경우에 상기 새로운 캐쉬 라인의 데이터를 상기 라인 재사용 버퍼에 저장하는 것을 특징으로 하는 마이크로 프로세서 시스템.
  19. 제14항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 데이터 메모리에 저장되어 있지 않은 경우, 상기 캐쉬 제어기는 상기 메인 메모리로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서 시스템.
  20. 제19항에 있어서,
    상기 캐쉬 제어기는 또한 상기 메인 메모리로부터 상기 데이터 메모리로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서 시스템.
  21. 제14에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 데이터 메모리에 저장되어 있으며 유효하면, 상기 실행 엔진이 순차 인출 신호를 출력하지 않거나 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있지 않은 경우, 상기 캐쉬 제어기는 상기 데이터 메모리로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서 시스템.
  22. 제21항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 데이터 메모리에 저장되어 있으나 유효하지 않으면, 상기 캐쉬 제어기는 상기 메인 메모리로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하는 것을 특징으로 하는 마이크로 프로세서 시스템.
  23. 제14항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는가 여부는 상기 실행 엔진에서 직전에 이용된 데이터의 상기 데이터 메모리의 캐쉬 라인상의 위치와 상기 캐쉬 라인의 길이에 의해 판정되는 것을 특징으로 하는 마이크로 프로세서 시스템.
  24. 마이크로 프로세서에 있어서,
    ① 메모리 요구 신호(memory request signal) 및 순차 인출 신호(sequential fetch signal)를 발생시키는 실행 엔진(execution engine)―여기서, 상기 메모리 요구 신호는 메인 메모리로부터의 데이터 인출을 요구하며, 상기 메모리 요구 신호에 의해 요구되는 데이터의 상기 메인 메모리에서의 위치정보를 포함하고, 상기 순차 인출 신호는 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터의 바로 다음 위치로 상기 메인 메모리에 저장되어 있는 경우 발생됨―과,
    ② 캐쉬(cache)―여기서, 상기 캐쉬는
    ⓐ 소정수의 워드로 구성되는 캐쉬 라인(cache line) 단위로 상기 메인 메모리의 데이터를 저장하는 데이터 메모리(data memory)와,
    ⓑ 상기 데이터 메모리에 저장되어 있는 데이터의 상기 메인 메모리에서의 위치정보에 대응하는 태그를 저장하는 태그 메모리(tag memory)와,
    ⓒ 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 데이터를 저장하는 라인 재사용 버퍼(line reusebuffer)와,
    ⓓ 상기 데이터 메모리와 상기 라인 재사용 버퍼와 상기 메인 메모리와 상기 실행 엔진을 필요에 따라 상호간에 연결시키는 데이터 경로(data path)와,
    ⓔ 상기 실행 엔진으로부터 순차 인출 신호가 입력되고, 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 경우, 상기 라인 재사용 버퍼로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하며, 상기 데이터 메모리와 상기 태그 메모리를 저전력대기 상태로 제어하는 캐쉬 제어기를 포함함―를
    구비하는 것을 특징으로 하는 마이크로 프로세서.
  25. 마이크로 프로세서에 있어서,
    ① 메모리 요구 신호(memory request signal) 및 순차 인출 신호(sequential fetch signal)를 발생시키는 실행 엔진(execution engine)―여기서, 상기 메모리 요구 신호는 메인 메모리로부터의 데이터 인출을 요구하며, 상기 메모리 요구 신호에 의해 요구되는 데이터의 상기 메인 메모리에서의 위치정보를 포함하고, 상기 순차 인출 신호는 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터의 바로 다음 위치로 상기 메인 메모리에 저장되어 있는 경우 발생됨―과,
    ② 캐쉬(cache)―여기서, 상기 캐쉬는
    ⓐ 소정수의 워드로 구성되는 캐쉬 라인(cache line) 단위로 상기 메인 메모리의 데이터를 저장하는 데이터 메모리(data memory)와,
    ⓑ 상기 데이터 메모리에 저장되어 있는 데이터의 위치정보에 대응하는 태그를 저장하는 태그 메모리(tag memory)와,
    ⓒ 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 데이터를 저장하는 라인 재사용 버퍼(line reuse buffer)와,
    ⓓ 상기 데이터 메모리와 상기 라인 재사용 버퍼와 상기 메인 메모리와 상기 실행 엔진을 필요에 따라 상호간에 연결시키는 데이터 경로(data path)와,
    ⓔ 상기 실행 엔진으로부터 순차 인출 신호가 입력되고, 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 데이터 메모리에 저장되어 있는 경우, 상기 라인 재사용 버퍼로부터 상기 실행 엔진으로 상기 요구되는 데이터가 전달되도록 상기 데이터 경로를 제어하며, 상기 데이터 메모리와 상기 태그 메모리를 저전력대기 상태로 제어하는 캐쉬 제어기를 포함함―를
    구비하며,
    상기 캐쉬 제어기는 상기 데이터 메모리에서 새로운 캐쉬 라인에 접근하는 경우, 또는 캐쉬 미스(cache miss) 후에 새로운 캐쉬 라인을 상기 데이터 메모리에 채워 넣는 경우에 상기 새로운 캐쉬 라인의 데이터를 상기 라인 재사용 버퍼에 저장하는 것을 특징으로 하는 마이크로 프로세서.
  26. 실행 엔진과, 소정수의 워드로 구성되는 캐쉬 라인 단위로 메인 메모리의 데이터를 저장하는 캐쉬와, 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬라인으로 상기 캐쉬에 저장된 데이터를 저장하는 라인 재사용 버퍼를 포함하는 마이크로 프로세서에서 상기 실행 엔진의 상기 메인 메모리에 대한 메모리 요구(memory request)를 처리하는 방법에 있어서,
    상기 메모리 요구에 의해 요구되는 데이터가 상기 실행 엔진에 의해 직전에 이용된 데이터의 바로 다음 위치로 상기 메인 메모리에 저장되어 있는 경우 상기 실행 엔진이 순차 인출 신호(sequential fetch signal)를 발생시키는 단계와,
    상기 순차 인출 신호가 발생되면 상기 요구되는 데이터가 상기 실행 엔진에 의해 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 캐쉬에 저장되어 있는지 확인하는 단계와,
    상기 요구되는 데이터가 동일 캐쉬 라인으로 상기 캐쉬에 저장되어 있으면 상기 라인 재사용 버퍼로부터 상기 메모리 요구에 의해 요구되는 데이터를 인출하는 단계와,
    상기 인출한 데이터를 상기 실행 엔진으로 전달하는 단계를
    구비하는 것을 특징으로 하는 메모리 요구의 처리방법.
  27. 제26항에 있어서,
    상기 라인 재사용 버퍼로부터 상기 요구되는 데이터를 인출하는 경우 상기 캐쉬를 저전력대기 상태로 제어하는 단계를 더 포함하는 것을 특징으로 하는 메모리 요구의 처리방법.
  28. 제26항에 있어서,
    상기 캐쉬는 명령어 캐쉬인 것을 특징으로 하는 메모리 요구의 처리방법.
  29. 제26항에 있어서,
    상기 캐쉬에서 새로운 캐쉬 라인에 접근하는 경우, 또는 캐쉬 미스 후에 새로운 캐쉬 라인을 상기 캐쉬에 채워 넣는 경우에 상기 새로운 캐쉬 라인의 데이터를 상기 라인 재사용 버퍼에 저장하는 것을 특징으로 하는 메모리 요구의 처리방법.
  30. 제26항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 캐쉬에 저장되어 있지 않은 경우, 상기 메인 메모리로부터 상기 요구되는 데이터를 인출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 요구의 처리방법.
  31. 제26항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 캐쉬에 저장되어 있으며 유효하면, 상기 실행 엔진이 순차 인출 신호를 출력하지 않거나 상기 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 캐쉬에 저장되어 있지 않은 경우, 상기 캐쉬로부터 상기 요구되는 데이터를 인출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 요구의 처리방법.
  32. 제31항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 캐쉬에 저장되어 있으나 유효하지 않으면, 상기 메인 메모리로부터 상기 요구되는 데이터를 인출하는 단계를 더 포함하는 것을 특징으로 하는 메모리 요구의 처리방법.
  33. 제26항에 있어서,
    상기 메모리 요구 신호에 의해 요구되는 데이터가 상기 실행 엔진에서 직전에 이용된 데이터와 동일 캐쉬 라인으로 상기 캐쉬에 저장되어 있는가 여부는 상기 직전에 이용된 데이터의 상기 캐쉬의 캐쉬 라인상의 위치와 상기 캐쉬 라인의 길이에 의해 판정되는 것을 특징으로 하는 메모리 요구의 처리방법.
KR10-2001-0034186A 2001-06-16 2001-06-16 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서 KR100395756B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2001-0034186A KR100395756B1 (ko) 2001-06-16 2001-06-16 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
US10/094,770 US6934811B2 (en) 2001-06-16 2002-03-07 Microprocessor having a low-power cache memory
GB0209503A GB2378020B (en) 2001-06-16 2002-04-25 Cache memory and microprocessor using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0034186A KR100395756B1 (ko) 2001-06-16 2001-06-16 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서

Publications (2)

Publication Number Publication Date
KR20020095874A KR20020095874A (ko) 2002-12-28
KR100395756B1 true KR100395756B1 (ko) 2003-08-21

Family

ID=19710948

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0034186A KR100395756B1 (ko) 2001-06-16 2001-06-16 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서

Country Status (3)

Country Link
US (1) US6934811B2 (ko)
KR (1) KR100395756B1 (ko)
GB (1) GB2378020B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143243B2 (en) * 2003-05-29 2006-11-28 Via-Cyrix, Inc. Tag array access reduction in a cache memory
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8493396B2 (en) 2004-11-15 2013-07-23 Nvidia Corporation Multidimensional datapath processing in a video processor
US20060179240A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation System and method for algorithmic cache-bypass
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
JP2007272280A (ja) * 2006-03-30 2007-10-18 Toshiba Corp データ処理装置
US8228175B1 (en) * 2008-04-07 2012-07-24 Impinj, Inc. RFID tag chips and tags with alternative behaviors and methods
KR100863080B1 (ko) * 2007-03-12 2008-10-13 재단법인서울대학교산학협력재단 저전력형 컨피규레이션 캐시와 이를 포함하는 재구성형프로세싱 시스템
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8489851B2 (en) * 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
JP2011081564A (ja) * 2009-10-06 2011-04-21 Fujitsu Ltd 制御装置、記憶装置、演算処理装置および制御方法
US9104532B2 (en) * 2012-12-14 2015-08-11 International Business Machines Corporation Sequential location accesses in an active memory device
US9946588B2 (en) * 2014-12-17 2018-04-17 International Business Machines Corporation Structure for reducing power consumption for memory device
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4896264A (en) * 1986-09-08 1990-01-23 American Telephone And Telegraph Company Microprocess with selective cache memory
KR19980032288A (ko) * 1996-10-04 1998-07-25 제프리엘.포맨 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법
KR19990057856A (ko) * 1997-12-30 1999-07-15 김영환 저전력 캐쉬 메모리 장치
KR20000065684A (ko) * 1999-04-08 2000-11-15 김영환 전력 소모를 줄인 컴퓨터 시스템
JP2000339217A (ja) * 1999-05-26 2000-12-08 Seiko Epson Corp キャッシュメモリシステム
KR20010110005A (ko) * 2000-06-05 2001-12-12 윤종용 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
KR20020066950A (ko) * 2001-02-13 2002-08-21 후지쯔 가부시끼가이샤 캐시 메모리 시스템

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2509344B2 (ja) 1989-09-19 1996-06-19 富士通株式会社 デ―タ処理装置
US5809531A (en) 1992-09-21 1998-09-15 Intel Corporation Computer system for executing programs using an internal cache without accessing external RAM
US5870574A (en) * 1993-04-12 1999-02-09 Silicon Graphics, Inc. System and method for fetching multiple groups of instructions from an instruction cache in a RISC processor system for execution during separate cycles
US5632038A (en) 1994-02-22 1997-05-20 Dell Usa, L.P. Secondary cache system for portable computer
US5765002A (en) * 1995-03-13 1998-06-09 Intel Corporation Method and apparatus for minimizing power consumption in a microprocessor controlled storage device
JPH08263370A (ja) 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
US5752045A (en) * 1995-07-14 1998-05-12 United Microelectronics Corporation Power conservation in synchronous SRAM cache memory blocks of a computer system
JPH0991136A (ja) * 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
US5974505A (en) * 1997-09-02 1999-10-26 International Business Machines Corporation Method and system for reducing power consumption of a non-blocking cache within a data processing system
JP3798563B2 (ja) * 1999-01-06 2006-07-19 株式会社東芝 命令キャッシュメモリ
JP3498673B2 (ja) * 2000-04-05 2004-02-16 日本電気株式会社 記憶装置
US6535959B1 (en) * 2000-09-05 2003-03-18 Conexant Systems, Inc. Circuit and method for reducing power consumption in an instruction cache
US6718439B1 (en) * 2001-06-01 2004-04-06 Advanced Micro Devices, Inc. Cache memory and method of operation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4896264A (en) * 1986-09-08 1990-01-23 American Telephone And Telegraph Company Microprocess with selective cache memory
KR19980032288A (ko) * 1996-10-04 1998-07-25 제프리엘.포맨 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법
KR19990057856A (ko) * 1997-12-30 1999-07-15 김영환 저전력 캐쉬 메모리 장치
KR20000065684A (ko) * 1999-04-08 2000-11-15 김영환 전력 소모를 줄인 컴퓨터 시스템
JP2000339217A (ja) * 1999-05-26 2000-12-08 Seiko Epson Corp キャッシュメモリシステム
KR20010110005A (ko) * 2000-06-05 2001-12-12 윤종용 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
KR20020066950A (ko) * 2001-02-13 2002-08-21 후지쯔 가부시끼가이샤 캐시 메모리 시스템

Also Published As

Publication number Publication date
US20020194430A1 (en) 2002-12-19
GB2378020A (en) 2003-01-29
KR20020095874A (ko) 2002-12-28
GB0209503D0 (en) 2002-06-05
US6934811B2 (en) 2005-08-23
GB2378020B (en) 2003-08-06

Similar Documents

Publication Publication Date Title
KR100395756B1 (ko) 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
US6138208A (en) Multiple level cache memory with overlapped L1 and L2 memory access
US5900011A (en) Integrated processor/memory device with victim data cache
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
US5210845A (en) Controller for two-way set associative cache
US6321296B1 (en) SDRAM L3 cache using speculative loads with command aborts to lower latency
KR100492041B1 (ko) 캐시를구비한데이터처리시스템및그방법
US6199142B1 (en) Processor/memory device with integrated CPU, main memory, and full width cache and associated method
US6356990B1 (en) Set-associative cache memory having a built-in set prediction array
US20030200404A1 (en) N-way set-associative external cache with standard DDR memory devices
US6560679B2 (en) Method and apparatus for reducing power consumption by skipping second accesses to previously accessed cache lines
KR100445927B1 (ko) 메모리 인터페이스를 갖는 프로세서와, 이 프로세서에서 수행되는 방법 및 컴퓨터 시스템
JPH06243039A (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
EP0952524A1 (en) Multi-way cache apparatus and method
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US6240489B1 (en) Method for implementing a pseudo least recent used (LRU) mechanism in a four-way cache memory within a data processing system
US5835934A (en) Method and apparatus of low power cache operation with a tag hit enablement
US7577791B2 (en) Virtualized load buffers
CN115509959A (zh) 处理系统、控制方法、芯片及计算机可读存储介质
EP1111511A1 (en) Cache with multiple fill modes
KR100710922B1 (ko) 캐시 관리 방법
EP1030243A1 (en) Optimized hardware cleaning function for virtual index virtual tag data cache
US7949833B1 (en) Transparent level 2 cache controller
US6976130B2 (en) Cache controller unit architecture and applied method
CN111639042A (zh) 一种预取buffer数据一致性的处理方法及装置

Legal Events

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

Payment date: 20120801

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee