KR100492041B1 - 캐시를구비한데이터처리시스템및그방법 - Google Patents

캐시를구비한데이터처리시스템및그방법 Download PDF

Info

Publication number
KR100492041B1
KR100492041B1 KR1019970059182A KR19970059182A KR100492041B1 KR 100492041 B1 KR100492041 B1 KR 100492041B1 KR 1019970059182 A KR1019970059182 A KR 1019970059182A KR 19970059182 A KR19970059182 A KR 19970059182A KR 100492041 B1 KR100492041 B1 KR 100492041B1
Authority
KR
South Korea
Prior art keywords
cache
memory
instruction
command
instructions
Prior art date
Application number
KR1019970059182A
Other languages
English (en)
Other versions
KR19980042268A (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 KR19980042268A publication Critical patent/KR19980042268A/ko
Application granted granted Critical
Publication of KR100492041B1 publication Critical patent/KR100492041B1/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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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
    • 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

Abstract

데이터 처리 시스템(20)은 종래의 캐시에서처럼 TAG 어드레스를 저장하기 위한 TAG 배열을 이용하지 않는 캐시(26)를 구비한다. 한 실시예에 따라, 캐시(26)는 미리 결정된 변위(displacement)의 짧은 역방향 브랜치 명령(short backward branch instruction)인 흐름 변경 명령에 응답하여 캐시(26)를 활성 상태로 전이(transition)하는 상태 기계(30)를 이용한다. 미리 결정된 변위는 캐시(26) 내의 엔트리들의 수보다도 작아서, 캐시는 캐시 내에 완전히 포함될 수 있는 루프 내에 프로그램이 있는 한, 활성 상태를 유지할 수 있다. 현재 명령에 대한 유효 비트를 이전 명령과 연관시키는 유효 비트 배열에 대한 룩 어헤드 특성(look ahead feature)이 제공되어, 다음의 명령에 대한 유효 비트는 캐시를 판독하는 동안에 현재의 명령을 판독하는데 이용된 것과 동일한 인덱스로 검사된다.

Description

캐시를 구비한 데이터 처리 시스템 및 그 방법{Data processing system having a cache and method therefor}
관련 문헌
윌리엄 씨. 모이어(William C. Moyer) 등이 저술하였고 발명의 명칭이 "DISTRIBUTED TAG CACHE MEMORY SYSTEM AND METHOD FOR STORING DATA IN THE SAME"이며, 대리인 참조 번호가 SC90334A인 관련 문헌이 동시에 본원과 출원되었으며, 양수인에게 양도되었다.
기술 분야
본 발명은 일반적으로 데이터 처리에 관한 것이며, 특히 데이터 처리 시스템에서의 캐시 및 그 방법에 관한 것이다.
저전력 소비는 이동 및 휴대 장비들이 광범위하게 이용됨으로써 마이크로프로세서 및 마이크로컨트롤러 설계시 중요성을 얻고 있다. 통상적인 내장 제어 시스템은 중앙 처리 유닛(CPU) 및 다양한 상이한 형태의 메모리 및 주변 장치들을 포함한다. 상이한 형태의 메모리는 마이크로컨트롤러를 구비하는 집적 회로의 외부 및/또는 동일 집적 회로 상에 있을 수 있으며, 캐시 메모리, ROM(판독 전용 메모리) 및 다양한 SRAM(정적 랜덤 액세스 메모리) 디바이스들을 포함할 수 있다.
용량이 큰 외부 메인 메모리를 액세스하는데는 상당량의 에너지와 시간이 필요하다. 따라서, 메인 메모리에 대한 액세스들의 수를 줄이기 위해, 보다 작고, 보다 빠르고, 보다 효율적인 메모리(때때로, 캐시라고 불림)가 집적 회로 상에서 이용될 수 있다. 집적 회로의 크기를 가능한 작게 하기 위해서는, 집적 회로에 장착되는 메모리를 필요한 만큼만 포함시킬 필요가 있다.
캐시의 성능을 증가시키기 위해 흔히 캐시 TAG가 이용된다. 캐시 TAG는 마이크로프로세서가 제공하는 TAG 어드레스를 수신하여, 요청된 명령들 및/또는 데이터가 캐시 메모리 내에 있는지를 결정한다. 요청된 명령이 캐시 메모리 내에 없다면, 마이크로프로세서는 메인 메모리에서 그 명령을 검색해야 한다. 명령이 캐시에 기록되어 있을 때, 그 명령의 어드레스의 상위 비트들이 TAG 배열 내에 저장된다. 캐시 TAG는 또한 프로세서 발생 어드레스와 TAG 어드레스를 비교하는 비교기를 구비한다. TAG 어드레스와 프로세서 발생 어드레스가 동일하다면, 캐시 "히트(hit)"가 발생하며, 캐시 TAG에 의해 제공된 매치 신호(match signal)는 요청된 데이터가 캐시 메모리 내에 위치해 있음을 나타낸다. TAG 어드레스와 프로세서 발생 어드레스가 동일하지 않다면, 캐시 "미스(miss)"가 발생하며, 매치 신호는 요청된 데이터가 캐시 메모리 내에 없음을 나타낸다. 또한, 유효 비트는 캐시의 비교 사이클 동안 저장된 TAG 어드레스의 유효 히트를 한정(qualify)하기 위해, TAG 어드레스의 일부로 설정할 수도 있다.
명령 및 데이터 검색의 효율성을 향상시키기 위해, 고성능 마이크로프로세서의 메모리 시스템 내에 여러 단계들의 계층을 둘 수 있다. 명령들 및 데이터를 검색하기 위해 CPU가 소비하는 전력은 통상적으로 상기 명령들 및 데이터가 메모리 시스템의 다른 레벨로부터 페치될 때 훨씬 더 크다. 따라서, 메모리의 다른 레벨에 대한 명령 페치들의 수를 줄임으로써, 특히 배터리로 전력 공급하는 응용들에서 전력 소비를 줄이는 것이 바람직하다.
또한, 일부 응용들은 작은 프로그램 루프들에 대해 실행 시간의 상당 부분이 종종 소요된다. 그러한 응용의 한 예로 디지털 신호 처리를 위한 필터의 구현을 들 수 있다. 이들 명령들의 전부 또는 일부를 위한 메인 메모리에 반복적으로 액세스함으로써 전력 소비 및 실행 속도 모두 악영향을 가져올 수 있다. 따라서, 메인 메모리에 반복적으로 액세스할 필요성을 회피하고 캐시를 실행하는데 필요한 표면적을 줄임으로써, 그러한 작은 루프들의 실행에 연관된 전력 소비를 줄이고 실행 속도를 빠르게 하는 것이 바람직하다.
일반적으로, 본 발명은 캐시를 구비한 데이터 프로세싱 시스템을 제공한다. 캐시는 "태그 없음(TAGless)"을 의미하는데, 즉 종래의 캐시에서처럼 TAG 어드레스를 저장하기 위한 TAG 배열을 이용하지 않는다. 또한, 현재의 명령에 대한 유효 비트를 이전의 명령과 연관시켜서, 캐시를 판독하는 동안 다음 명령에 대한 유효 비트가 현재의 명령을 판독하는데 이용된 것과 동일한 인덱스로 검사되고, 따라서 TAG 없는 캐시에 간단한 룩 어헤드 특성을 제공하는 유효 비트 배열이 제공된다.
한 실시예에 따른 캐시는 미리 결정된 변위보다 작은 짧은 역방향 브랜치(SBB : short backward branch)인 흐름 변경(COF : change of flow) 명령에 응답하여 상기 캐시를 활성 상태로 전이하는 상태 기계를 포함한다. 미리 결정된 변위는 캐시(26) 내의 엔트리들의 수보다도 작아서, 캐시는 캐시 내에 완전히 포함될 수 있는 루프 내에 프로그램이 있는 한, 활성 상태를 유지할 수 있다. 본 발명에 따른 캐시 메모리는 예를 들어 통신 응용에서의 필터 기능처럼, 다수 번 반복되는, 빽빽하고(tight) 짧은 루프들을 갖는 프로그램들에 유용하다. 캐시는 "태그 없음(TAGless)"이기 때문에, TAG 배열 및 비교기가 제거되어 보다 적은 집적 회로의 표면적이 요구된다.
본 발명을 도 1 내지 도 4를 참조해서 더 상세하게 설명한다. 신호, 상태 비트, 또는 유사한 장치를 논리적으로 참 또는 논리적으로 거짓 상태로 각각 랜더링하도록 나타낼 때 "주장하다(assert)" 및 "부정하다(negate)"란 용어가 이용될 것이다. 논리적으로 참 상태가 디지털 논리 레벨 1이면, 논리적으로 거짓 상태는 디지털 논리 레벨 0을 나타낸다. 또한 논리적으로 참 상태가 디지털 논리 레벨 0이면, 논리적으로 거짓 상태는 디지털 논리 레벨 1을 나타낸다.
도 1은 본 발명에 따른 데이터 처리 시스템(20)의 블록도이다. 데이터 처리 시스템(20)은 중앙 처리 유닛(CPU;22), 메인 메모리(24), TAG 없는 루프 캐시(26), 멀티플렉서(28) 및 상태 기계(30)를 포함한다. 일반적으로, CPU(22)는 복수의 명령 어드레스들을 발생시킨다. 이 명령 어드레스들은 메인 메모리(24)와 루프 캐시(26)에 제공된다. 각 명령 어드레스는 M개 비트들로 구성되며 상기 M은 정수이다. M개 비트들 중 일부만이 M-P로 표시된 바와 같이, 루프 캐시(26)에 제공되는데, 여기서 P는 M보다 작은 정수이고 명령 어드레스들의 전역(global) TAG 부분을 나타내며, M-P는 INDEX 부분이다. 글로벌 TAG 부분은 TAG 배열을 갖는 종래의 캐시 메모리에서 이용된 TAG 어드레스와 유사하다.
상태 기계(30)는 메인 메모리(24)와 루프 캐시(26)중 어느 것이 명령들을 CPU(22)에 제공할 것인지를 결정 및 제어하는데 이용된다. 메인 메모리(24) 또는 루프 캐시(26)는 명령 어드레스에 응답하여, 명령 어드레스 M에 대응하는 명령을 멀티플렉서(28)를 통해 CPU(22)에 제공한다. 메인 메모리(24)가 명령을 CPU(22)에 제공하면, "DATA IN"이라는 라벨이 붙은 명령도 또한 캐시(26)에 제공된다. 상태 기계(30)에 의해 결정된 대로 루프 캐시(26)에 의해 명령이 제공된다면, 명령 어드레스 M-P에 대응하고 "DATA" 라벨이 붙은 명령은 CPU(22)에 제공된다. 알아두어야 할 점은 다른 실시예들에서 루프 캐시(26)는 예를 들어 CPU(22) 대신에 대안적 데이터 처리 또는 저장 유닛에 명령을 제공할 수도 있다는 점이다.
명령이 어디로부터 검색되어야 할지를 결정하기 위해, 상태 기계(30)는 "COF"(흐름 변경) 라벨이 붙은 제어 신호와 "SBBI"(짧은 역방향 브랜치 명령) 라벨이 붙은 제어 신호를 수신한다. 일련의 명령 어드레스들에서 명령 어드레스가 비연속적 명령 어드레스이면 CPU(22)는 제어 신호 COF를 상태 기계에 제공한다. 루프 캐시(26)는 두 개의 제어 비트들을 상태 기계(30)에 제공한다. 그 중 한 제어 비트는 "TRIGGERING SBB" 이라는 라벨이 붙으며, 다른 제어 비트는 "VALID BIT"라는 라벨이 붙는다. 상태 기계(30)는 또한 멀티플렉서(28)를 제어하기 위해, "LOOP CACHE HIT AND ACTIVE"이라는 라벨이 붙은 루프 캐시 히트 신호와 활성화 신호(activation signal)를 제공한다. 상태 기계(30)는 루프 캐시(26)에 대한 액세스 형태를 제어하기 위해 판독 신호 및 기록 신호와 같은 "CONTROL"이라는 라벨이 붙은 다른 제어 신호들을 제공한다.
루프 캐시(26)는 활성 및 비활성의 두 가지 상태들을 갖는다. 루프 캐시(26)가 활성 상태이면 루프 캐시(26)로부터 데이터를 판독하여 멀티플렉서(28)를 통해 CPU(22)에 제공할 수 있다. 루프 캐시(26)가 비활성 상태이면, 메인 메모리(24)로부터 멀티플렉서(28)를 통해 CPU(22)에 데이터가 제공되며 동시에 메인 메모리(24)로부터 데이터를 판독하여 루프 캐시(26)에 기록할 수 있다. 루프 캐시(26)가 다양한 신호들에 대해 기능하고 응답하는 방식에 대해서는 도 2 내지 도 4를 참조해서 상세히 후술한다.
상태 기계(30)는 TAG 어드레스들을 저장하는 TAG 배열 없이도 제어 신호들 COF 및 SBBI를 이용하여 루프 캐시(26)를 제어한다. 데이터 처리 시스템(20)은, 예를 들어 통신 시스템에서 필터링 기능이나 또는 다른 통신 집약적인 디지털 신호 처리 기능들을 제공하는 명령들과 같이, 많이 반복되는 루프들을 포함하는 명령들을 실행할 때 가장 효과적이다. 루프가 루프 캐시(26)내에서 완전하게 실행되기 위해서는 루프 캐시(26)가 루프의 모든 명령들을 포함할 수 있을 정도로 충분히 커야만 한다. CPU(22)가 루프 캐시(26)내에서 적합한 루프를 검출하면, 그 루프를 결정하는 명령이 트리거링 SBB 비트와 함께 나타나거나 표시된다. 이 때, 다음 명령이 TAG 없는 루프 캐시(26)로부터 CPU(22)에 제공된다. 명령 어드레스의 INDEX 부분(M-P)만이 루프 캐시(26)에 제공되고 CPU(22)가 루프 캐시 내로부터의 명령들을 실행하는지를 트리거링 SBB가 결정하기 때문에 데이터 처리 시스템(20)에서 TAG 어드레스와 별도의 TAG 배열은 필요 없게 된다. 또한 모든 명령 검색을 위한 TAG 비교 사이클도 필요 없게 된다. 설명된 실시예에 따라 메인 메모리(24)는 루프 내에 없는 명령들을 위해 액세스되며 따라서, 루프 캐시(26)는 루프 캐시 내에서 전체적으로 실행될 수 있는 빽빽한 루프들 내에 대부분의 실행 시간이 있는 응용들에서 가장 유용하다.
데이터 처리 시스템 내에서 캐시를 TAG 배열 없이 구현하기 때문에 집적 회로의 표면적이 줄어들며, 따라서 집적 회로의 비용과 복잡성이 감소된다. 또한, TAG 배열에 대한 액세스들이 제거되기 때문에 데이터 처리 시스템에서 전력 소비도 줄어든다.
도 2는 도 1의 루프 캐시(26)를 보다 상세히 설명한다. 도 2에 도시된 루프 캐시(26)는 "DATA IN" 라벨이 붙은 명령들을 저장하는 제 1 부분(32), 제 1 부분(32)에 포함된 명령들의 각각에 대응하는 유효 비트를 저장하기 위한 제 2 부분(34) 및 상태 기계(30)로부터 수신된 짧은 역방향 브랜치(SBB) 비트를 저장하기 위한 제 3 부분(36)의 세 부분으로 되어 있다. 루프 캐시(26)는 또한 래치(38)와 멀티플렉서(40)를 포함한다. 래치(38)는 명령 어드레스의 INDEX 부분을 수신하는 복수의 입력 단자들과, 멀티플렉서(40)의 복수의 제 1 입력 단자들에 결합되어 있는 복수의 출력 단자들을 포함한다. 멀티플렉서(40)의 복수의 제 2 입력 단자들도 또한 INDEX 부분을 수신한다. 멀티플렉서(40)의 다수의 출력 단자는 제 2 부분(34)을 어드레싱하는데 이용된다.
제 2 부분(34)은 멀티플렉서(40)의 출력으로부터 INDEX를 수신한 것에 응답하여 VALID BIT를 제공하기 위한 출력 단자를 포함한다. 제 1 부분(32)은 메인 메모리로부터 명령들을 수신하는 복수의 입력 단자들과, INDEX 수신에 응답하여 명령들을 제공하는 복수의 출력 단자들을 포함한다. 제 1 부분(32)은 1에서 N+1까지의 라벨이 붙은 복수의 엔트리들을 포함한다. 알아두어야 할 점은 각각의 엔트리는 하나 이상의 명령을 포함할 수 있다는 점이다. 그러나, 제 1 부분(32)의 엔트리 수는 본 발명을 설명하는데 있어서 중요하지 않으며 특정한 실시예에서 생각해 볼 수 있는 임의의 수가 될 수 있다. 제 2 부분(34)과 제 3 부분(36)은 제 1 부분의 엔트리들 수에 대응하는 다수의 엔트리들을 갖는다. 제 2 부분(34)은 유효 비트들을 저장하며 상술한 바와 같이 유효 비트들은 제 1 부분(32)에 저장된 명령들에 대한 룩-어헤드 기능을 실행하는데 이용된다. 제 2 부분(34)에는 제 1 부분(32) 내의 엔트리 각각에 대응하는 유효 비트가 있다. 대응하는 명령이 유효할 때 유효 비트는 주장되며, 반대로 대응하는 명령이 유효하지 않을 때 유효 비트는 부정된다.
룩-어헤드 기능의 실행을 위해, 각각의 INDEX는 루프 캐시(26)에 대한 기록동작 동안 래치(38)에 래치된다. 기록 신호는 멀티플렉서(40)를 제어하며, 상태 기계(30)에 의해 제공된다. 기록 동작 동안 제 2 부분(34)은 래치(38)에 저장된 INDEX에 의해 어드레싱된다. 룩 어헤드 기능을 제공하기 위해, 래치에 저장된 INDEX는 일련의 명령들에서 이전 명령이 되며, 다음 INDEX 가 제 1 부분(32)을 어드레싱하는데 이용될 때 제공된다. 예를 들어, 도 2에 도시된 바와 같이 기록 동작 동안 인덱스가 N+1 라벨의 엔트리를 어드레싱하면, 멀티플렉서(40) 출력은 제 2 부분(34)의 엔트리 N을 가리키는 "WRITE"의 라벨이 붙은 실선으로 표시된 바와 같이, 엔트리 N에 대응하는 엔트리를 어드레싱하게 된다.
루프 캐시(26)의 판독 동작 동안, 상태 기계(30)로부터의 기록 제어 신호 WRITE는 부정되며, 다음 인덱스는 제 1 부분(32), 제 2 부분(34) 및 제 3 부분(36)의 엔트리 N+1에서 실선 화살표를 이용해서 도 2에 도시된 바와 같이 제 1 부분(32), 제 2 부분(34) 및 제 3 부분(36)을 어드레싱하는데 이용된다. 판독된 명령은 현재의 명령 어드레스에 대응하며, 다음의 연속적인 명령 어드레스에 대응하는 유효 비트는 상기 INDEX와 동시에 판독된다. 따라서, 명령 유효성에 대한 룩 어헤드 특성이 데이터 처리 시스템(20)의 TAG 없는 루프 캐시에 제공된다.
알아두어야 할 점은 상기 룩 어헤드 특성은 캐시가 TAG 배열을 갖는 형태인지 여부에 상관없이 유효 비트 배열을 갖는 어떤 캐시와도 함께 이용될 수 있다는 점이다. 이것은 도 1에 도시된 메인 메모리에서와 같이, 메모리 시스템에서 계층적 구조의 다음 레벨이 선택적 활성화를 허용하여 각각의 액세스에 대한 다음 레벨을 자동으로 활성화될 필요를 회피하며, 이것은 데이터 처리 시스템의 전력 소비를 상당히 감소시키는 결과를 가져온다. 룩 어헤드 특성은 또한 룩 어헤드 특성이 부족한 종래의 제 1 캐시에 의해 야기되었을 수도 있는 명령 스트림에서 스톨들(stalls)을 제거할 수 있는데, 종래의 캐시가 메모리 시스템에서의 계층적 구조의 다음 레벨을 액세스해야 하는지를 결정하기 전에 명령이 유효한지를 알기 위해서는 기다려야 할 수도 있기 때문이다.
요청된 명령이 루프 캐시(26)에 저장되어 있지 않다면, 메인 메모리에 대한 액세스가 실행된다. 명령이 CPU(22)에 제공됨과 동시에 그 명령은 또한 루프 캐시(26)에도 기록된다. 엔트리가 제 1 부분(32)의 위치에 기록될 때, 대응하는 유효 비트가 주장된다. 이 유효 비트는 엔트리가 유효하며 제 2 부분(34)의 이전 위치에 대응하는 위치에 위치하게 됨을 나타낸다. 트리거링 SBB는 루프 캐시의 활성화를 야기하는 "취해진(taken)" SBBI이다. 트리거링 SBB가 검출되면 SBBI 명령에 대응하는 SBB 엔트리는 제 3 부분(36)에 설정된다.
제 1 부분(32) 내의 하나의 엔트리만이 트리거링 SBB 비트와 동시에 표시될 수 있다. 이 하나의 트리거링 SBB를 도 1에 도시된 바와 같이 TRIGGERING SBB 라 불린다.
도 3은 도 1의 상태 기계(30)의 동작을 나타내는 상태도이다. 도 3에 도시된 바와 같이, 상태 기계(30)는 (1) 데이터가 메인 메모리로부터 제공됨을 나타내는 비활성 상태, 및 (2) 데이터가 루프 캐시(26)에서 CPU(22)에 제공될 수 있는 활성 상태의 두 가지 동작 상태를 갖는다. 또한 상태 기계(30)가 한 상태에서 다른 상태로 전이하도록 충족시켜야 하는 조건, 또는 상태 기계(30)가 그 현재의 상태를 유지하도록 충족시켜야 하는 조건이 도 3에 도시되어 있다. 상태 기계(30)가 비활성 상태(40)에서 활성 상태(42)로 전이되기 위해, CPU(22)로부터의 제어 비트 COF가 주장되고 CPU(22)로부터의 SBBI 비트가 주장된다. 상태 기계(30)는 트리거링 SBB와 주장된 COF가 존재할 때 또는 부정된 COF가 존재할 때 루프 캐시(26)를 활성 상태(42)로 유지한다. 트리거링 SBB와 부정된 COF가 존재하거나, 또는 COF가 주장되고 제 2 부분(34)에 트리거링 SBB가 존재하지 않으면, 상태 기계(30)는 루프 캐시(26)가 활성 상태(42)에서 비활성 상태(40)로 전이하게 한다. 상태 기계(30)는 COF가 부정되거나 또는 SBBI가 부정되면 루프 캐시(26)를 비활성 상태(40)로 유지한다.
도 4는 도 1의 루프 캐시(26)를 액세스하는 흐름도이다. 단계(43)에서 루프 캐시는 제 2 부분(34)의 모든 유효 비트를 부정함으로써 무효화된다. 단계(44)에서, CPU(22)는 다음의 명령 어드레스를 계산한다. 단계(46)에서, 루프 캐시(26)가 활성 상태인지를 결정한다. 루프 캐시(26)가 활성이면 단계(46)에서 결정 단계(48)로 YES 경로가 선택된다. 결정 단계(48)에서 이전의 명령이 CPU(22)에 의해 공급된 일련의 명령에서 흐름 변경(COF)이 야기되었는지를 결정한다. 흐름 변경이 있다면 결정 단계(48)에서 결정 단계(50)로 YES 경로가 선택된다. 결정 단계(50)에서, COF가 트리거링 SBB인지를 결정한다. 미리 결정된 변위보다 작은 역방향 브랜치 명령(backward branch instruction)에 의해 흐름 변경이 야기되었다면, 결정 단계(50)에서 결정 단계(52)로 YES 경로가 선택된다. 결정 단계(52)에서, 다음 명령에 대응하는 유효 비트를 살펴봄으로써, 다음 어드레스에 대응하는 다음 명령이 유효 명령인지를 결정한다. 상기 다음 명령에 대한 유효 비트가 주장되었다면, 결정 단계(52)에서 단계(54)로 YES 경로가 선택된다. 단계(54)에서, 상기 명령이 캐시 메모리로부터 CPU(22)에 공급되어 실행된다.
그러나, 결정 단계(52)에서, 다음 명령에 대한 유효 비트가 주장되지 않았다면, 결정 단계(52)에서 단계(70)로 NO 경로가 선택된다. 단계(70)에서, 루프 캐시(26)에는 메인 메모리로부터 다음 명령이 로드되고, 다음 명령이 유효화되며, 다음 명령이 CPU(22)에 공급되어 실행된다. 주목할 점은 언제라도 상기 루프 캐시에는 명령이 로드되고 대응하는 유효 비트가 설정된다는 점이다.
결정 단계(50)를 되돌아가서, 결정 단계(48)에서 흐름 변경 명령이 트리거링 SBB가 아닌 것으로 결정되었다면, 단계(68)로 NO 경로가 선택된다. 단계(68)에서, 유효 비트 배열이 있는 제 2 부분(34)(도 2)은 무효화되고, 다음 명령이 메인 메모리로부터 CPU(22)에 공급되고, 또한 루프 캐시(26)에 로드된다. 또한, 루프 캐시(26)는 비활성 상태(40)로 전이된다(도 3). 단계(68)에서, 흐름은 단계(44)의 시작으로 되돌아가고, 여기서 다음 명령 어드레스가 CPU(22)에 의해 계산된다.
결정 단계(48)로 되돌아가서, 이전의 명령이 흐름 변경이 아니었다면, 단계(66)로 NO 경로가 선택된다. 단계(66)에서, 이전의 명령이 캐시 메모리를 활성화한 미리 결정된 변위의 역방향 브랜치(트리거링 SBB)를 야기했는지를 결정한다. 그 명령이 트리거링 SBB가 아니라면, 결정 단계(66)에서 결정 단계(52)로 NO 경로가 선택된다. 이전의 명령이 트리거링 SBB이면, 단계(66)에서 단계(68)로 YES 경로가 선택되고 그 흐름은 상술한 바와 같이 단계(68)에서 계속된다.
결정 단계(46)로 되돌아가서, 루프 캐시(26)가 비활성임을 나타내는 NO 경로가 선택되면 결정 단계(56)에서 흐름 변경이 있었는지를 결정한다. 이전의 어드레스에 대해 결정 단계(56)에서 흐름 변경이 없었다면, 단계(62)로 NO 경로가 선택된다. 단계(62)에서, 루프 캐시(26)에는 다음 명령이 로드되고 그 다음 명령은 메인 메모리로부터 CPU(22)에 공급된다. 단계(62)후, 흐름은 단계(44)에서 다시 계속된다.
결정 단계(56)로 되돌아가서, 이전의 명령이 흐름 변경이었다면 결정 단계(58)로 YES 경로가 선택된다. 결정 단계(58)에서, 짧은 역방향 브랜치 명령(SBBI)이 CPU(22)에 의해 주장되어 상태 기계(30)에 공급되었는지를 결정한다. SBBI가 주장되지 않았다면, 단계(64)로 NO 경로가 선택되고 루프 캐시(26)가 무효화되며, 루프 캐시(26)와 CPU(22)는 메인 메모리(24)로부터 다음 명령을 공급받는다. 단계(64)후, 프로그램 흐름은 단계(44)에서 다시 계속된다.
결정 단계(58)로 되돌아가서, 명령이 짧은 역방향 브랜치 명령인 것으로 표시되었다면, 단계(60)로 YES 경로가 선택된다. 단계(60)에서, 루프 캐시(26)가 활성화되고 트리거링 브랜치 명령에 대한 SBB 비트가 설정된다. 또한, 다음 명령이 루프 캐시(26)로부터 CPU(22)에 공급된다. 단계(60)후, 프로그램 흐름은 단계(44)에서 다시 계속된다. 알아두어야 할 점은 이들 단계들은 명령 어드레스들이 더 이상 없을 때까지 각각의 다음 명령 어드레스에 대해 반복되며, 명령 어드레스가 더이상 없을 때 프로그램은 종료된다는 점이다.
본 발명을 양호한 실시예의 내용으로 서술하였으나, 본 발명이 다양한 방식들로 수정될 수 있으며 상술한 것 외에 많은 실시예들을 취할 수 있다는 것은 당업자에게는 명백하다.
따라서, 첨부된 클레임에 의해 본 발명의 정신 및 범주 내에 있는 본 발명의 모든 수정들을 포함하도록 의도된다.
도 1은 본 발명에 따른 데이터 처리 시스템의 블록도.
도 2는 도 1의 루프 캐시에 대한 블록도.
도 3은 도 1의 상태 기계의 상태도.
도 4는 본 실시예에 따른 TAG 없는 캐시 메모리를 활성화하는 방법의 흐름도.
*도면의 주요 부호에 대한 간단한 설명*
22 : CPU 24 : 메인 메모리
26 : 루프 캐시 28 : 멀티플렉서
30 : 상태 기계

Claims (4)

  1. 데이터 처리 시스템(20)에 있어서,
    명령 어드레스들을 발생하고 명령들을 처리하는 중앙 처리 유닛(22)으로서, 상기 명령들 중 하나는 상기 명령 어드레스들 중 하나에 대응하는, 상기 중앙 처리 유닛(22);
    상기 중앙 처리 유닛(22)에 결합되어, 상기 명령들을 공급 및 수신하는 제 1 메모리(24);
    상기 중앙 처리 유닛(22)과 상기 제 1 메모리(24)에 결합되어, 상기 명령들을 수신 및 공급하는 제 2 메모리(26); 및
    상기 중앙 처리 유닛(22)과 상기 제 2 메모리(26)에 결합되어, 상기 제 2 메모리(26)를 활성화하고 상기 명령이 유효함을 나타내는 유효 비트에만 응답하여 상기 명령을 상기 중앙 처리 유닛(22)에 공급하는 상태 기계(30)를 포함하는 데이터 처리 시스템(20).
  2. 데이터 처리 시스템(20)에 있어서,
    명령 어드레스들을 발생하고 상기 명령들을 처리하는 중앙 처리 유닛(22)으로서, 상기 명령들 중 하나는 상기 명령 어드레스들 중 하나에 대응하는, 중앙 처리 유닛(22);
    상기 중앙 처리 유닛(22)에 결합되어, 데이터를 공급 및 수신하는 메인 메모리(24); 및
    상기 중앙 처리 유닛(22)과 상기 메인 메모리(24)에 결합되어, 상기 명령들을 수신하는 캐시 메모리(26)를 포함하고, 상기 캐시 메모리(26)는,
    명령들을 저장하는 제 1 부분(32)과,
    유효 비트들을 저장하는 제 2 부분(34)을 포함하고,
    상기 제 1 부분(32) 내에 저장된 현재 명령의 상기 유효 비트는 이전 명령의 명령 어드레스에서의 상기 제 2 부분(34) 내에 저장되는, 데이터 처리 시스템(20).
  3. 데이터 처리 시스템(20)에서 명령들을 취급하는 방법으로서, 상기 데이터 처리 시스템(20)은 중앙 처리 유닛(22), 메인 메모리(24) 및 캐시 메모리(26)를 포함하는, 상기 명령들 취급 방법에 있어서,
    상기 캐시 메모리(26)를 무효화하는 단계;
    상기 메인 메모리(24) 또는 상기 캐시 메모리(26) 중 어느 쪽에 액세스하기 위한 다음 어드레스를 계산하는 단계;
    상기 캐시 메모리(26)가 활성인지를 결정하는 단계;
    상기 중앙 처리 유닛(22)에 의해 공급된 일련의 명령 어드레스들에서 이전 명령이 흐름 변경을 야기했는지를 결정하는 단계;
    상기 흐름 변경을 야기한 상기 이전 명령이 상기 캐시 메모리(26)를 활성화한 미리 결정된 변위의 역방향 브랜치인지를 결정하는 단계;
    상기 다음 어드레스에 대응하는 다음 명령이 유효한 명령인지를 결정하는 단계; 및
    상기 캐시 메모리(26)로부터 상기 다음 명령을 공급하는 단계를 포함하는 명령들 취급 방법.
  4. 데이터 처리 시스템(20)에서 명령들을 취급하는 방법으로서, 상기 데이터 처리 시스템(20)은 중앙 처리 유닛(22), 메인 메모리(24) 및 캐시 메모리(26)를 포함하는, 상기 명령들 취급 방법에 있어서,
    상기 캐시 메모리(26)를 무효화하는 단계;
    상기 메인 메모리(24) 또는 상기 캐시 메모리(26) 중 어느 쪽에 액세스하기 위해 다음 어드레스를 계산하는 단계;
    상기 캐시 메모리(26)가 비활성인지를 결정하는 단계;
    상기 중앙 처리 유닛(22)에 의해 공급된 일련의 명령 어드레스들에서 흐름 변경을 야기하지 않은 이전 명령이 제공되었는지를 결정하는 단계; 및
    상기 메인 메모리(24)로부터 다음 명령을 상기 캐시 메모리(26)에 로드하고, 상기 다음 명령을 중앙 처리 유닛(22)에 공급하는 단계를 포함하는 명령들 취급 방법.
KR1019970059182A 1996-11-14 1997-11-11 캐시를구비한데이터처리시스템및그방법 KR100492041B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/748,855 US5893142A (en) 1996-11-14 1996-11-14 Data processing system having a cache and method therefor
US08/748,855 1996-11-14
US8/748,855 1996-11-14

Publications (2)

Publication Number Publication Date
KR19980042268A KR19980042268A (ko) 1998-08-17
KR100492041B1 true KR100492041B1 (ko) 2005-08-25

Family

ID=25011219

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970059182A KR100492041B1 (ko) 1996-11-14 1997-11-11 캐시를구비한데이터처리시스템및그방법

Country Status (3)

Country Link
US (1) US5893142A (ko)
JP (1) JP4057114B2 (ko)
KR (1) KR100492041B1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983310A (en) * 1997-02-13 1999-11-09 Novell, Inc. Pin management of accelerator for interpretive environments
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6055610A (en) * 1997-08-25 2000-04-25 Hewlett-Packard Company Distributed memory multiprocessor computer system with directory based cache coherency with ambiguous mapping of cached data to main-memory locations
US6401196B1 (en) * 1998-06-19 2002-06-04 Motorola, Inc. Data processor system having branch control and method thereof
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
US6519684B1 (en) * 1999-11-23 2003-02-11 Motorola, Inc. Low overhead method for selecting and updating an entry in a cache memory
EP1107110B1 (en) * 1999-11-30 2006-04-19 Texas Instruments Incorporated Instruction loop buffer
US6963965B1 (en) 1999-11-30 2005-11-08 Texas Instruments Incorporated Instruction-programmable processor with instruction loop cache
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US20040088682A1 (en) * 2002-11-05 2004-05-06 Thompson Ryan C. Method, program product, and apparatus for cache entry tracking, collision detection, and address reasignment in processor testcases
US7249248B2 (en) * 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
WO2005026928A2 (en) * 2003-09-16 2005-03-24 Koninklijke Philips Electronics N.V. Power saving operation of an apparatus with a cache memory
AT500858B8 (de) * 2004-08-17 2007-02-15 Martin Schoeberl Instruction cache für echtzeitsysteme
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US20090055589A1 (en) * 2007-08-24 2009-02-26 Arm Limited Cache memory system for a data processing apparatus
JP5159258B2 (ja) * 2007-11-06 2013-03-06 株式会社東芝 演算処理装置
US9398033B2 (en) 2011-02-25 2016-07-19 Cavium, Inc. Regular expression processing automaton
WO2013020003A1 (en) 2011-08-02 2013-02-07 Cavium, Inc. Packet classification by an optimised decision tree
US9203805B2 (en) * 2011-11-23 2015-12-01 Cavium, Inc. Reverse NFA generation and processing
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9507563B2 (en) 2013-08-30 2016-11-29 Cavium, Inc. System and method to traverse a non-deterministic finite automata (NFA) graph generated for regular expression patterns with advanced features
US9426165B2 (en) 2013-08-30 2016-08-23 Cavium, Inc. Method and apparatus for compilation of finite automata
US9426166B2 (en) 2013-08-30 2016-08-23 Cavium, Inc. Method and apparatus for processing finite automata
US9183155B2 (en) * 2013-09-26 2015-11-10 Andes Technology Corporation Microprocessor and method for using an instruction loop cache thereof
US9419943B2 (en) 2013-12-30 2016-08-16 Cavium, Inc. Method and apparatus for processing of finite automata
US9275336B2 (en) 2013-12-31 2016-03-01 Cavium, Inc. Method and system for skipping over group(s) of rules based on skip group rule
US9544402B2 (en) 2013-12-31 2017-01-10 Cavium, Inc. Multi-rule approach to encoding a group of rules
US9667446B2 (en) 2014-01-08 2017-05-30 Cavium, Inc. Condition code approach for comparing rule and packet data that are provided in portions
US9602532B2 (en) 2014-01-31 2017-03-21 Cavium, Inc. Method and apparatus for optimizing finite automata processing
US9904630B2 (en) 2014-01-31 2018-02-27 Cavium, Inc. Finite automata processing based on a top of stack (TOS) memory
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US10110558B2 (en) 2014-04-14 2018-10-23 Cavium, Inc. Processing of finite automata based on memory hierarchy
US10002326B2 (en) 2014-04-14 2018-06-19 Cavium, Inc. Compilation of finite automata based on memory hierarchy
US9438561B2 (en) * 2014-04-14 2016-09-06 Cavium, Inc. Processing of finite automata based on a node cache

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06208508A (ja) * 1992-11-02 1994-07-26 Sgs Thomson Microelectron Inc キャッシュタグメモリ
JPH06318174A (ja) * 1992-04-29 1994-11-15 Sun Microsyst Inc キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
JPH0773106A (ja) * 1993-09-03 1995-03-17 Nec Corp キャッシュメモリ
US5479641A (en) * 1993-03-24 1995-12-26 Intel Corporation Method and apparatus for overlapped timing of cache operations including reading and writing with parity checking
KR960008547A (ko) * 1994-08-22 1996-03-22 빈센트 비. 인그라시아 캐시 태그(tag) 랜덤 액세스 메모리 및, 그 메모리에서의 다수의 유효 비트 무효화 방법
KR970059938A (ko) * 1996-01-25 1997-08-12 제프리 엘. 포맨 이중 사용 캐시 태그 어레이를 갖는 마이크로프로세서 아키텍처

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4763253A (en) * 1986-09-26 1988-08-09 Motorola, Inc. Microcomputer with change of flow
JPH0452741A (ja) * 1990-06-14 1992-02-20 Toshiba Corp キャッシュメモリ装置
JPH06243036A (ja) * 1993-02-12 1994-09-02 Hitachi Ltd キャッシュ制御システム
US5666505A (en) * 1994-03-11 1997-09-09 Advanced Micro Devices, Inc. Heuristic prefetch mechanism and method for computer system
US5535360A (en) * 1994-08-31 1996-07-09 Vlsi Technology, Inc. Digital computer system having an improved direct-mapped cache controller (with flag modification) for a CPU with address pipelining and method therefor

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06318174A (ja) * 1992-04-29 1994-11-15 Sun Microsyst Inc キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
JPH06208508A (ja) * 1992-11-02 1994-07-26 Sgs Thomson Microelectron Inc キャッシュタグメモリ
US5479641A (en) * 1993-03-24 1995-12-26 Intel Corporation Method and apparatus for overlapped timing of cache operations including reading and writing with parity checking
JPH0773106A (ja) * 1993-09-03 1995-03-17 Nec Corp キャッシュメモリ
KR960008547A (ko) * 1994-08-22 1996-03-22 빈센트 비. 인그라시아 캐시 태그(tag) 랜덤 액세스 메모리 및, 그 메모리에서의 다수의 유효 비트 무효화 방법
KR970059938A (ko) * 1996-01-25 1997-08-12 제프리 엘. 포맨 이중 사용 캐시 태그 어레이를 갖는 마이크로프로세서 아키텍처

Also Published As

Publication number Publication date
US5893142A (en) 1999-04-06
JPH10154098A (ja) 1998-06-09
JP4057114B2 (ja) 2008-03-05
KR19980042268A (ko) 1998-08-17

Similar Documents

Publication Publication Date Title
KR100492041B1 (ko) 캐시를구비한데이터처리시스템및그방법
US7958311B2 (en) Cache line replacement techniques allowing choice of LFU or MFU cache line replacement
US5586295A (en) Combination prefetch buffer and instruction cache
US5870576A (en) Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
JP3504282B2 (ja) 実時間キャッシュ機能を提供する集積回路用チップ
US6138208A (en) Multiple level cache memory with overlapped L1 and L2 memory access
US5210842A (en) Data processor having instruction varied set associative cache boundary accessing
KR101441019B1 (ko) 마이크로프로세서용 구성가능한 캐시
KR100395756B1 (ko) 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
KR101039018B1 (ko) 다중-상태 프로세서를 위한 캐싱 명령들
US6356990B1 (en) Set-associative cache memory having a built-in set prediction array
EP0950222A1 (en) Prefetch management in cache memory
KR100470516B1 (ko) 분포된태그캐시메모리시스템및그것에데이터를저장하기위한시스템
US7130963B2 (en) System and method for instruction memory storage and processing based on backwards branch control information
KR101462220B1 (ko) 마이크로프로세서용 구성가능한 캐시
US20040221117A1 (en) Logic and method for reading data from cache
US7577791B2 (en) Virtualized load buffers
US6606687B1 (en) Optimized hardware cleaning function for VIVT data cache
US5926841A (en) Segment descriptor cache for a processor
WO1997034229A9 (en) Segment descriptor cache for a processor
JP2000259498A (ja) マルチスレッド・プロセッサの命令キャッシュ
EP1107110B1 (en) Instruction loop buffer
US6963965B1 (en) Instruction-programmable processor with instruction loop cache
US7447884B2 (en) Multi-table branch prediction circuit for predicting a branch's target address based on the branch's delay slot instruction address
US9645825B2 (en) Instruction cache with access locking

Legal Events

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

Payment date: 20130507

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140512

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee