KR20100133964A - 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법 - Google Patents

유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법 Download PDF

Info

Publication number
KR20100133964A
KR20100133964A KR1020107019041A KR20107019041A KR20100133964A KR 20100133964 A KR20100133964 A KR 20100133964A KR 1020107019041 A KR1020107019041 A KR 1020107019041A KR 20107019041 A KR20107019041 A KR 20107019041A KR 20100133964 A KR20100133964 A KR 20100133964A
Authority
KR
South Korea
Prior art keywords
array
valid
cache
entry
value
Prior art date
Application number
KR1020107019041A
Other languages
English (en)
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 KR20100133964A publication Critical patent/KR20100133964A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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

캐시가 액세스될 때 이용되기 위한 방법이 기술된다. 모든 유효 어레이 엔트리가 검증되기 전에, 데이터 어레이 엔트리가 액세스될 때 유효 어레이 엔트리가 읽힌다. 유효 어레이 엔트리가 제 1 어레이 값인 경우, 캐시로의 액세스는 무효화되는 것으로 처리되고, 데이터 어레이 엔트리는 재로딩된다. 유효 어레이 엔트리가 제 2 어레이 값인 경우, 태그 어레이 엔트리가 주소와 비교되어 데이터 어레이 엔트리가 유효한지 또는 무효인지를 판단할 수 있다. 유효 제어 레지스터는, 모든 유효 어레이 엔트리가 검증되기 전의 제 1 제어 값을 보유하고, 모든 유효 어레이 엔트리가 검증된 이후의 제 2 제어 값을 보유한다. 제 2 제어 값이 수립된 이후에, 유효 어레이의 읽기가 비활성화되고, 태그 어레이 엔트리는 주소와 비교되어 데이터 어레이 엔트리가 유효한지 무효인지를 판단할 수 있다.

Description

유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법{METHOD FOR ACHIEVING POWER SAVINGS BY DISABLING A VALID ARRAY}
관련 출원의 상호-참조
본 출원은 2008년 3월 13일에 출원된 미국 가특허출원 제61/036,181호를 기초로 우선권을 주장하며, 상기 미국 가특허출원의 내용은 본 명세서에서 참조로서 포함된다.
발명의 기술분야
본 발명은 캐시(cache)의 선택된 엔트리(entry)가 유효한지를 식별하기 위한 방법에 관한 것이며, 더욱 상세하게는, 유효 어레이(valid array)를 사용하여, 캐시의 엔트리가 유효한지를 판단하기 위한 방법에 관한 것이다. 캐시 내의 모든 엔트리가 유효하다고 밝혀진 후에, 상기 유효 어레이는 비활성화된다.
캐시(cache)를 구현하는 하나의 방법은 개별적인 유효 어레이의 사용에 달려 있다. 유효 어레이는 캐시 내의 특정 엔트리가 유효한지를 나타낸다. 통상적으로, 종래 기술에서 잘 알려져 있는 바와 같이, 캐시에 대해 이루어진 각각의 액세스에 있어서, 캐시에 엔트리를 받아들이기 전에 캐시 엔트리가 유효한지를 판단하기 위하여 유효 어레이에 의해 읽기(read)가 이루어진다. 이는, 캐시가 액세스될 때마다, 유효 어레이의 개별적인 읽기가 요구된다는 것을 의미한다.
그러나, 분명한 바와 같이, 일단 캐시 내의 엔트리 모두가 검증되면(즉, 캐시 내의 엔트리 모두가 유효하다고 판단되면), 유효 어레이는 더 이상 그 목적을 수행하지 않는다. 일단 캐시 내의 엔트리 각각이 검증되면, 유효 어레이의 추가적 읽기는, 엔트리 모두가 유효하다는 이미 결정된 사실 이외의 어떠한 결과도 산출하지 않는다. 그 결과, 유효 어레이의 추가적 읽기는 불필요하게 전력을 소비한다. 유효 어레이의 임의의 추가적 읽기는 단지 이전 처리 단계를 반복하는 것이다.
해당업계 종사자라면 이해할 수 있는 바와 같이, 캐시 내의 엔트리 모두가 검증된 이후의 유효 어레이의 읽기 동작(reading)은 프로세서에 의해 소비되는 전력을 불필요하게 증가시키는 것이다. 이는 비경제적이라고 생각된다.
해당업계 종사자라면 이해할 수 있는 바와 같이, 프로세서 처리 시간 및 전력 소비를 감소시킬 수 있는 능력은 바람직하다. 더 적은 프로세서 처리 시간 및 더 낮은 전력 소비는 더욱 효율적인 프로세서에 기여한다.
따라서, 본 발명의 일 형태는 프로세서의 효율성을 향상시키기 위한 것이다.
본 발명의 추가적인 형태는 캐시 내의 엔트리가 검증된 이후 유효 어레이가 액세스되는 횟수를 감소시킴으로써 프로세서에 의해 소비되는 전력을 줄이기 위한 것이다.
따라서, 본 발명의 특정한 일 형태는, 캐시 내의 엔트리 모두가 검증된 이후 유효 어레이에 대하여 읽기를 비활성화하기 위한 명령어를 구현하는 것이다.
캐시 내의 엔트리가 검증된 이후 유효 어레이의 읽기를 비활성화함으로써, 본 발명은 캐시에 액세스하는 프로세스에 의해 요구되는 전력을 감소시킨다.
따라서, 본 발명의 일 형태는 프로그램 제어 하에서 유효 어레이에 대하여 읽기를 비활성화하기 위한 방법 및 아키텍처를 제공하기 위한 것이다.
본 발명의 추가적인 형태는, 프로그램이 우선 모든 엔트리가 유효하다는 것을 보장할 수 있고 그 후 유효 어레이를 비활성화할 수 있는 방법 및 수단을 제공하는 것이다.
본 발명의 그 밖의 다른 형태는 본 명세서에서 제시된 논의로부터 명백해질 것이다.
본 발명의 다양한 형태가 본 명세서에 첨부된 도면과 함께 기술될 것이다.
도 1은 본 발명의 방법의 일 실시예에 대한 첫 번째 부분을 도시하는 흐름도이다.
도 2는 본 발명의 방법의 일 실시예에 대한 두 번째 부분을 제공하는, 도 1에 도시된 흐름도의 연속이다.
도 3은 본 발명의 방법의 일 실시예에 대한 세 번째 부분을 도시하는, 도 2에 도시된 흐름도의 연속이다.
지금부터 본 발명이 하나 이상의 실시예와 함께 기술될 것이다. 기술된 실시예는 본 발명을 제안하려는 의도는 아니다. 오히려, 본 발명의 실시예들은 본 발명의 넓은 범위를 도시하도록 의도된다. 해당업계 종사자라면 이해할 수 있는 바와 같이, 이용될 수 있는 실시예에 대한 수많은 변형예 및 등가물이 존재한다. 이러한 변형예 및 등가물은 본 발명의 범위 내에 있는 것으로 의도된다.
프로세서 내의 캐시 구조는 통상적으로 세 가지 구성요소: (1) 태그 어레이(tag array), (2) 데이터 어레이(data array), 및 (3) 유효 어레이(valid array)를 가진다. 이러한 논의의 목적을 위하여, "프로세서"라는 용어는 소프트웨어를 통해서든지 또는 하드웨어를 통해서든지 명령어를 실행할 수 있는 임의의 장치를 폭넓게 의미하는 것으로 의도된다. 따라서, 프로세서는 일반적인 예시로서 컴퓨터를 포함한다. 해당업계 종사자라면 이해할 수 있는 바와 같이, 프로세서는 또한 PAD(personal data assistant), 셀룰러폰 등과 같은 휴대용 장치일 수 있다.
통상적인 캐시는 2m 개의 엔트리를 가질 수 있다. 각각의 엔트리는 2b 바이트의 크기를 가질 수 있다. 이러한 파라미터들은 통상적인 캐시를 의미하지만, 더 많거나 더 적은 개수의 엔트리를 갖는 캐시도 본 발명의 범위를 벗어나지 않고 이용될 수 있다. 더욱이, 본 발명은 오직 각각의 엔트리가 2b 바이트의 크기를 갖는 캐시에 한정되도록 의도되지 않는다. 엔트리들은 본 발명의 범위를 벗어나지 않고 더 크거나 더 작은 바이트 크기를 가질 수 있다.
캐시 액세스 동안, 태그 어레이 및 데이터 어레이는 주소의 비트(m+b-1) 내지 비트(b)에 기초하여 액세스된다. 태그 어레이로부터 읽힌 내용(content)이 주소의 상위 비트와 비교된다. 32-비트 주소에 있어서, 이러한 비교는 비트(31)에서 비트(m+b)까지 망라한다. 비교 결과 내용이 동일함을 나타내는 경우, 이러한 비교는 성공적인 것으로 간주된다. 이는, 일반적인 전문 용어에서, 캐시의 "히트(hit)"로서 언급된다. 따라서, 데이터 어레이로부터 읽힌 값이 사용될 수 있다. 그렇지 않고, 비교 결과 일치(match)를 나타내지 않는 경우, 이러한 비교는 성공적인 것으로 간주되지 않는다. 이러한 경우, "미스(miss)"가 존재한다고 말한다. 그 결과, 프로세서는, 통상적으로 캐시 엔트리의 재로딩(reloading)을 포함하는 추가적인 조치를 취해야 한다.
해당업계 종사자에게 명백한 바와 같이 그리고 본 명세서에서의 논의 목적을 위해, "히트"는 일치 태그(matching tag)를 갖는 캐시 내의 유효 엔트리를 찾는 것을 의미한다. "미스"는 캐시 내의 검증되지 않은 엔트리를 의미하거나 태그가 일치되지 않는 엔트리를 의미한다. 엔트리가 유효하지 않은 경우, 전술된 바와 같이 캐시 엔트리의 재로딩을 포함하는 추가적인 처리가 요구된다.
캐시 내의 엔트리가 유효하지 않거나 일치 태그를 가지고 있지 않은 경우, 캐시는 재로딩된다. 엔트리 재로딩은: (1) 주소에 의해 명시되는 메모리 장소로부터 2b 바이트 읽기, (2) 주소의 비트(m+b-1) 내지 비트(b)에 의해 명시되는 장소에서 데이터 어레이에 위와 같은 데이터(즉, 2b 바이트)를 기록하기, 그리고 (3) 주소의 상위 비트를 태그 어레이에 기록하기를 포함한다.
해당업계 종사자라면 이해할 수 있는 바와 같이, 임의의 특정 엔트리에 대한 태그 값이 주어진 경우, 엔트리에 대응하는 메모리 주소를 결정하는 것이 가능하다. 바꾸어 말하면, 데이터 어레이에 저장되어 있는 특정 메모리 장소로부터 값을 결정하는 것이 가능하다. 이에 더하여, 명백한 바와 같이, 다수의 엔트리에 대하여, 데이터 어레이에 저장되어 있는 몇몇 메모리 장소로부터 값을 결정하는 것이 가능하다.
프로세서가 시작된 경우, 또는 프로세서가 리셋(reset)된 경우, 태그 어레이 및 데이터 어레이는 통상적으로 랜덤 값을 보유한다. 특히, 임의의 엔트리의 데이터 값이, 상기 엔트리에 대한 태그 값에 의해 결정되는 메모리 주소의 내용과 일치되지 않을 수 있다. 이러한 불일치(mismatch)는, 유효 어레이의 용도에 의해 해결되는 문제를 제시한다.
유효 어레이는 캐시 내의 각각의 엔트리에 대한 비트를 포함한다. 리셋 시, 또는 프로세서 시작(start-up) 시, 유효 어레이 내의 모든 비트가 0으로 소거된다. 캐시 엔트리가 액세스되고, 유효 어레이 내의 비트가 0인 경우, 캐시 엔트리의 액세스는 "미스"로 처리된다. 전술된 바와 같이, 그 후 캐시 엔트리는 재로딩된다. 캐시 엔트리가 재로딩되는 경우, 유효 비트가 1로 설정된다.
일단 유효 비트가 1로 설정되면, 상기 유효 비트는 0으로 설정되지 않거나, 그 다음 리셋 명령어 또는 시작 명령어가 수행될 때까지 0으로 리셋되지 않는다. 따라서, 유효 어레이는, 필요하다면, 일단 모든 캐시 엔트리가 한 번 재로딩될 때까지 유용한 기능을 제공한다. 캐시 엔트리 각각이 한 번 재로딩된 이후, 유효 어레이 내의 엔트리 모두는 1로 설정된 것이다. 일단 유효 어레이가 이러한 상태 또는 조건에 도달하면, 유효 어레이의 어떠한 추가적 읽기도 추가적 사용을 제공하지 않는다. 바꾸어 말하면, 일단 유효 어레이 내의 비트 모두가 1로 설정되면, 더 이상 유효 어레이를 읽을 이유가 없다. 그 이후의 모든 읽기도 동일한 결과를 리턴할 것이다.
전술된 바와 같이, 종래 기술에서는, 유효 어레이 내의 비트 모두가 1로 설정된 이후에서조차 유효 어레이가 액세스되는 것이 일반적이다. 명백한 바와 같이, 유효 어레이의 이러한 읽기는 불필요하게 전력을 소비한다.
본 발명은, 그 밖의 다른 특징들 중에서도 유효 제어 비트(valid control bit)를 제공함으로써 유효 어레이 내의 비트의 불필요한 읽기를 회피한다. 각각의 캐시에 대한 유효 제어 비트는 제어 레지스터에 저장될 수 있다. 실행 동안, 실행되고 있는 프로그램이 제어 레지스터에 기록한다. 시작 시 또는 리셋 명령어가 실행된 이후, 유효 제어 비트는 0으로 설정된다.
유효 제어 비트가 0일 때, 프로그램은 캐시 내의 엔트리 모두가 검증되었음을 인식한다. 그 결과, 프로그램은 세 개의 제어 파라미터에 따라 연산한다. 첫째, 유효 어레이가 모든 캐시 액세스에 대하여 읽힌다. 둘째, 유효 어레이 내의 비트가 0으로 설정된 경우, 액세스는 "미스"로 처리된다. 셋째, 유효 어레이 내의 비트가 1로 설정된 경우, 태그 비교에 기초하여 액세스가 "히트" 또는 "미스"로 처리된다. 바꾸어 말하면, 유효 제어 비트가 1로 설정되기 전에, 프로그램은 적어도 유효 어레이에 관하여는 전통적인 가이드라인을 따라 연산한다.
그러나, 유효 제어 비트가 1로 설정될 때, 프로그램은 서로 다른 행동 세트를 따라 연산한다. 첫째, 유효 캐시 어레이가 비활성화된다. 둘째, 태그 비교에 기초하여 액세스가 "히트" 또는 "미스"로 처리된다.
제어 비트를 사용하는 캐시 액세스의 의사-코드에서 히트 또는 미스 로직에 대한 하나의 가능 구현예가 아래의 코드 세그먼트 #1에서 나타난다.
코드 세그먼트 #1
entry = address [11:4];
if( valid_control = 1 )
valid_bit = 1;
else
valid_bit = valid_array [entry];
if( address [31 : 12] == tag_array [entry] )
tag_hit = 1;
else
tag_hit = 0;
hit = tag_hit & valid__bit;
유효 제어 비트를 사용하기 위하여, 프로세서는 유효 어레이 내의 모든 비트가 1임을 보장해야 한다. 프로세서는 캐시 내의 엔트리 모두를 다루고 검사하는 프로그램을 실행함으로써 이를 보장할 수 있다. 명령어 캐시에 있어서, 이는 캐시 내의 모든 엔트리로부터 명령어를 실행하는 코드 시퀀스(code sequence)를 실행시키는 것을 수반한다. 데이터 캐시에 있어서, 이는 캐시 내의 모든 엔트리로부터 메모리 장소를 읽는 코드 시퀀스를 실행시키는 것을 수반한다. 프로그램이 이러한 코드 시퀀스 중 하나를 실행한 이후에, 대응하는 캐시에 대한 유효 제어 비트를 설정할 수 있다.
위에서 기술된 아키텍처 및 방법의 대안예에서, 0과 1의 사용이 역으로 되도록 유효 제어 비트 및 유효 어레이 엔트리가 동작할 수 있다고 의도된다. 이러한 대안적 접근 방법에서, 유효 제어 비트는 처음에 1일 수 있다. 이러한 경우에서, 일단 모든 엔트리가 검증되면, 유효 제어 비트가 0으로 설정될 수 있다. 유효 어레이에 있어서, 엔트리 모두가 제로로 초기화될 수 있다. 이러한 경우에서, 일단 엔트리가 검증되면, 상기 엔트리는 0으로 변화될 수 있다. 그 밖의 다른 변형예 또한 본 발명의 범위 내에 있는 것으로 의도된다.
세트 연관 캐시( Set Associative Cache )
세트 연관 캐시는 본 발명의 방법에 관하여 추가적인 과제를 제시한다.
세트 연관 캐시는 위에서 기술된 직접 맵핑식 캐시(direct mapped cache)와 꽤 유사하게 다루어질 수 있다. N-갈래 세트 연관 캐시(N-way set associative cache)에서, 각각의 엔트리에 대하여 태그 어레이 및 유효 비트를 갖는 N 개의 데이터 어레이 세트가 존재한다. 통상적으로, 이러한 어레이 모두는 병렬로 액세스되고, N 개의 태그 값 각각이 주소의 상위 비트와 비교된다. N 개의 유효 비트를 사용하여, 대응하는 엔트리가 유효한지를 판단할 수 있다. 일반적으로, 유효 태그 비교 중 기껏해야 하나가 이러한 시나리오에서의 성공이 기대된다. 만일 그렇다면, 이는 "히트"로 처리되고, 일치 태그에 대응하는 데이터 어레이 값이 사용된다. 그렇지 않다면, 캐시 액세스는 "미스"이고, 주소가 캐시에 재로딩된다. 상기 엔트리에 대하여 한 트의 태그 어레이 또는 데이터 어레이가 선택되고, 재로딩된 주소 또는 데이터가 상기 세트에 기록된다.
세트 연관 캐시에 적용 가능한 우리의 해결책에 있어서, 캐시 내의 모든 엔트리가 재로딩된다는 것을 보장할 수 있는 시퀀스를 수립하는 것이 바람직하다. 교체 정책에 대한 지식(즉, 재로딩시, 어떠한 세트가 재로딩될 것인가)이 이러한 시퀀스를 발생시키는데 열쇠가 된다. 예를 들어, 재로딩 정책이 완전히 임의적인 경우, 모든 엔트리의 모든 세트가 액세스되고 이로써 유효 조건 또는 유효 상태로 설정될 것이라는 것을 보장하는 시퀀스는 존재하지 않는다.
LRU(least recently used)로서 잘 알려져 있는 일반적인 교체 정책에 있어서, 모든 비트를 유효 상태로 설정하기 위한 시퀀스가 똑바로 전진한다. N-갈래 세트 연관 캐시에 있어서, 프로그램은 각각의 엔트리에 대응하는 N 개의 주소를 액세스한다.
플러시( Flush )
일부 프로세서는 캐시 엔트리를 무효화하는 캐시 플러시 명령어를 지원한다. 이러한 명령어가 캐시 엔트리에 대한 유효 비트를 소거함으로써 구현되는 경우, 프로그램은 유효 제어 비트가 0으로 설정된다는 것을 추가적으로 보장한다. 프로그램은 그 후, 무효화된 비트가 1로 리셋되는 것을 보장하기 위하여 추가적인 코드 시퀀스를 실행시킬 수 있고, 그 후 유효 제어 비트를 다시 0으로 설정할 수 있다.
하드웨어에 의한 제어( Hardware Controlled )
이러한 논의의 초점이 소프트웨어 기반 유효 제어 비트를 사용하는 개념에 맞추어져 있지만, 하드웨어를 사용하여 동일한 결과가 획득될 수 있다. 전술된 논의의 관점에서 해당업계 종사자에게 이해되어야 하는 바와 같이, 하드웨어는 유효 제어 어레이 및(AND) 이들의 비트 모두가 함께 있는 곳으로 설계될 수 있다. AND 연산의 결과가 1인 경우, 어레이 내의 모든 비트는 1이고 더 이상 어레이에 액세스할 필요가 없다. 해당업계 종사자라면 이해할 수 있는 바와 같이, 본 발명의 범위를 벗어나지 않는 한 AND 연산수(operand)를 대신하여 OR 연산수가 사용될 수 있다.
지금부터 도면 1-3에 대한 참조가 이루어진다. 도 1-3은 본 발명의 일 실시예를 도시한다.
도 1을 참조하면, 방법(10)이 블록(12)에서 시작된다. 방법(10)은 캐시에 액세스하기 위하여 프로세서에 의해 실행되도록 의도된다. 위에서 언급된 바와 같이, 캐시는 태그 어레이, 데이터 어레이, 및 유효 어레이를 포함한다. 블록(14)에서, 방법(10)은 유효 어레이 내의 모든 유효 어레이 엔트리를 프로세서 리셋 또는 시작에 대한 제 1 어레이 값으로 설정한다. 방법(10)은 블록(16)으로 나아가고, 상기 블록(16)에서, 데이터 어레이로부터 데이터 어레이 엔트리가 액세스될 때마다 유효 어레이로부터 유효 어레이 엔트리를 읽는다. 블록(16) 이후, 방법(10)은 두 경로 사이에서 선택한다. 블록(18)에서, 유효 어레이 엔트리가 제 1 어레이 값인 경우, 캐시로의 액세스는 엔트리가 무효화됨을 나타내는 "미스"로 처리된다. 만일 그렇다면, 블록(20)에서, 메모리로부터 캐시가 재로딩되고, 유효 어레이 엔트리는 제 2 어레이 값으로 설정된다. 나머지 경로를 따라가면, 블록(22)에서, 유효 어레이 엔트리가 제 2 어레이 값인 경우, 태그 어레이 내의 태그 어레이 엔트리가 주소의 선택된 비트와 비교되어 데이터 어레이 엔트리가 "히트"인지 "미스"인지 판단할 수 있다. "미스"가 무효화된 엔트리를 나타내는 반면, "히트"는 유효한 엔트리를 나타낸다. 도 2에서 방법(10)이 계속됨을 나타내기 위하여 도 1에서 "A"라는 이름이 붙은 전환 블록(24)이 제공된다.
도 1에서, 블록(16, 18, 20, 및 22)을 아우르는 점선 경계(26)는, 유효 어레이 내의 엔트리 모두가 검증되기 전 간격(interval) 동안 이러한 네 가지 연산이 수행됨을 알리기 위하여 의도되었다.
도 2를 참조하면, 방법(10)은 캐시에 대하여 유효 제어 레지스터가 수립되는 블록(28)으로 나아간다. 블록(30)에서, 유효 제어 레지스터는 모든 유효 어레이 엔트리가 검증되기 전에 제 1 제어 값으로 설정된다. 블록(32)에서, 유효 제어 레지스터는 모든 유효 어레이 엔트리가 검증된 이후 제 2 제어 값으로 설정된다. "B"라는 이름이 붙은 제 2 전환 블록(34)은 도 3에서 방법(10)이 계속됨을 나타낸다.
도 3을 참조하면, 방법(10)은, 제 2 제어 값이 설정된 이후, 유효 어레이의 읽기가 비활성화되는 블록(36)으로 계속된다. 블록(38)에서, 유효 어레이의 읽기가 비활성화된 이후에, 태그 어레이 엔트리는 주소의 선택된 비트와 비교하여 데이터 어레이 엔트리가 "히트"인지 또는 "미스"인지 판단할 수 있다. "미스"의 경우, 블록(40)에서 캐시가 재로딩된다. 방법(10)은 블록(42)에서 끝이 난다. 점선 경계(44)는, 유효 어레이 엔트리 모두가 검증된 이후 간격(interval) 동안 연산(36, 38 및 40)이 실행됨을 나타내기 위하여 의도되었다.
위에서 언급된 바와 같이, 방법(10)에 대해 의도된 일 변형예에서, 데이터 어레이는 2m 개의 엔트리를 포함할 수 있고, 데이터 어레이 엔트리 각각은 2b 바이트를 포함할 수 있으며, 총 2a 개의 주소가 존재할 수 있다. 물론, 데이터 어레이 및 엔트리는 본 발명의 범위를 벗어나지 않는 한 더 크거나 더 작은 크기일 수 있다.
방법(10)의 변형예에서, 태그 어레이가 주소의 상위 비트와 비교된다. 대안적으로, 2b 바이트인 2m 개의 엔트리가 사용되는 경우, 태그 어레이 엔트리는 주소의 비트(a-1) 내지 비트(m+b)와 비교되도록 의도된다. 주소가 32-비트 주소인 경우, 태그 어레이는 주소에서 비트(31) 내지 비트(m+b)와 비교된다.
데이터 엔트리의 재로딩에 관하여, 재로딩은 몇몇 연산을 수반하도록 의도된다. 첫째, 주소에 의해 명시되는 메모리 장소로부터 2b 바이트가 읽힌다. 둘째, 주소의 비트(m+b-1 내지 b)에 의해 명시되는 데이터 어레이 엔트리에 상기 2b 바이트가 기록된다. 셋째, 주소로부터의 상위 비트(a 내지 m+b)가 대응하는 태그 어레이 엔트리에 기록된다. 그 밖의 다른 의도된 재로딩 연산 역시 본 발명의 범위 내에 있는 것으로 의도된다.
유효 제어 레지스터에 관하여, 레지스터는 하나의 비트-레지스터라고 의도된다. 이와 유사하게, 유효 어레이 엔트리 전부가 단일 비트 엔트리라고 의도된다.
본 발명의 목적을 위하여, 캐시는 데이터 캐시일 수 있고, 또는 명령어 캐시일 수 있다. 캐시는 또한 N 개의 데이터 어레이 세트를 갖는 세트 연관 캐시일 수 있다. 만일 그렇다면, N 개의 데이터 어레이 세트 각각은 병렬로 액세스될 수 있다.
방법(10)에 관하여, 유효 어레이 엔트리가 제 1 어레이 값으로 설정된 이후 뒤이어 데이터 어레이 엔트리가 무효화된 경우, 방법(10)은 유효 어레이 엔트리를 제 1 어레이 값으로 재설정할 것을 의도한다. 전술된 내용으로부터 이해되어야 하는 바와 같이, 유효 제어 레지스터가 제 2 제어 값을 보유하고 있는 경우, 유효 제어 레지스터는 제 1 제어 값을 보유하도록 리셋된다.
방법(10)에 대하여 의도된 변형예에서, 유효 어레이 엔트리 모두를 조합함으로써 제 2 제어 값이 수립된다.
전술된 논의로부터 이해할 수 있는 바와 같이, 방법(10)은 유효 어레이 엔트리 모두가 하드웨어를 통해 조합되는 것을 의도한다. 하드웨어가 이용되는 경우, 유효 어레이 엔트리 모두가 AND 연산수 또는 OR 연산수를 통해 조합될 수 있다. AND 연산수가 이용되는 경우, 제 1 어레이 값은 0이고 제 2 어레이 값은 1이며, 제 1 제어 값은 0이고 제 2 제어 값은 1이다. OR 연산수를 사용하는 경우, 제 1 어레이 값은 1이고 제 2 어레이 값은 0이며, 제 1 제어 값은 1이고 제 2 제어 값은 0이다.
본 발명의 또 다른 의도된 변형예에서, 제 2 제어 값은 프로세서에 의해 실행되는 명령어에 따라 수립된다.
방법(10)은 또한 검증 강제 연산(validation forcing operation)을 포함할 수 있다. 검증 강제 연산은 유효 어레이의 검증을 강제한다. 검증 강제 명령어는 주소의 지정 시퀀스 읽기, 유효 어레이 엔트리 모두를 제 2 어레이 값으로 설정하기, 그리고 유효 제어 레지스터를 제 2 제어 값으로 설정하기를 포함한다. 검증 강제 연산의 변형예에서, 명령어는 주소의 지정 시퀀스로 실행될 수 있고, 따라서 모든 유효 어레이 엔트리를 제 2 어레이 값으로 설정할 수 있다. 그 후, 유효 제어 레지스터가 제 2 제어 값으로 설정될 수 있다.
방법을 통해서든지 또는 소프트웨어를 통해서든지, 본 발명의 그 밖의 다른 실시예 및 변형예가 전술된 실시예에 기초하여 해당업계 종사자에게 명백해야 한다. 이러한 변형예 및 등가물은 본 발명의 범위 내에 있는 것으로 의도된다.

Claims (19)

  1. 캐시(cache)에 액세스하기 위하여 프로세서에 의해 실행되는 방법에 있어서, 상기 캐시는 태그 어레이(tag array), 데이터 어레이(data array), 및 유효 어레이(valid array)를 포함하고, 상기 방법은,
    상기 유효 어레이 내의 모든 유효 어레이 엔트리를 프로세서 리셋(reset) 또는 시작(starup)에 대한 제 1 어레이 값으로 설정하는 단계;
    모든 유효 어레이 엔트리가 검증되기 전에,
    데이터 어레이로부터의 데이터 어레이 엔트리에 액세스될 때마다 유효 어레이로부터 유효 어레이 엔트리를 읽는 단계,
    유효 어레이 엔트리가 상기 제 1 어레이 값인 경우, 캐시로의 액세스를 "미스(miss)"로 처리하는 단계,
    유효 어레이 엔트리가 제 2 어레이 값인 경우, 데이터 어레이 엔트리가 "히트(hit)" 또는 "미스"인지 판단하기 위하여 상기 태그 어레이 내의 태그 어레이 엔트리를 주소의 선택된 비트와 비교하는 단계, 그리고
    "미스"인 경우, 메모리로부터 캐시를 재로딩(reloading)하고 유효 어레이 엔트리를 상기 제 2 어레이 값으로 설정하는 단계;
    캐시에 대하여 유효 제어 레지스터를 수립하는 단계;
    모든 유효 어레이 엔트리가 검증되기 전에 유효 제어 레지스터를 제 1 제어 값으로 설정하는 단계;
    모든 유효 어레이 엔트리가 검증된 이후에 유효 제어 레지스터를 제 2 제어 값으로 설정하는 단계; 그리고
    상기 제 2 제어 값이 설정된 이후에,
    유효 어레이의 읽기를 비활성화하는 단계,
    데이터 어레이 엔트리가 "히트" 또는 "미스"인지 판단하기 위하여 태그 어레이 엔트리를 주소의 선택된 비트와 비교하는 단계, 그리고
    "미스"인 경우, 메모리로부터 캐시를 재로딩하는 단계
    를 포함하는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  2. 제 1 항에 있어서,
    데이터는 2m 개의 엔트리를 포함하고, 데이터 어레이 엔트리 각각은 2b 바이트를 포함하고, 주소의 총 개수는 2a이며, 여기서 m은 정수, a는 정수, 및 b는 정수인 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  3. 제 1 항에 있어서,
    유효 제어 레지스터는 하나의 비트를 포함하는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  4. 제 1 항에 있어서,
    유효 어레이 엔트리 모두가 하나의 비트를 포함하는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  5. 제 2 항에 있어서,
    태그 어레이 엔트리는 주소의 비트(a-1 내지 m+b)와 비교되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  6. 제 5 항에 있어서,
    상기 주소는 32 비트 주소이고, 그리고
    상기 태그 어레이는 주소의 비트(31 내지 m+b)와 비교되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  7. 제 1 항에 있어서,
    태그 어레이는 주소의 상위 비트와 비교되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  8. 제 1 항에 있어서, 상기 재로딩하는 단계는,
    주소에 의해 명시되는 메모리 장소로부터 2b 바이트를 읽는 단계;
    주소의 비트(m+b-1 내지 b)에 의해 명시되는 데이터 어레이 엔트리에 상기 2b 바이트를 기록하는 단계; 그리고
    주소로부터의 상위 비트(a 내지 m+b)를 대응하는 태그 어레이 엔트리에 기록하는 단계
    를 포함하고, 여기서 a,b 및 m은 모두 정수인 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  9. 제 1 항에 있어서,
    상기 캐시는 데이터 캐시(data cache)인 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  10. 제 1 항에 있어서,
    상기 캐시는 명령어 캐시(instruction cache)이고, 상기 데이터 어레이는 명령어를 포함하는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  11. 제 1 항에 있어서,
    상기 캐시는 N 개의 데이터 어레이 세트를 갖는 세트 연관 캐시(set associative cache)이고, 상기 N은 정수이며, 상기 N 개의 데이터 어레이 세트 각각은 병렬로 액세스되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  12. 제 1 항에 있어서,
    유효 어레이 엔트리가 상기 제 2 어레이 값으로 설정된 이후 뒤이어 데이터 어레이 엔트리가 무효화된 경우,
    유효 어레이 엔트리를 상기 제 1 어레이 값으로 재설정하는 단계; 그리고
    유효 제어 레지스터가 상기 제 2 제어 값을 보유하고 있는 경우, 상기 제 1 제어 값을 보유하도록 유효 레지스터를 재설정하는 단계
    를 추가로 포함하는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  13. 제 1 항에 있어서,
    상기 제 2 제어 값은 유효 어레이 엔트리 모두를 조합함으로써 수립되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  14. 제 1 항에 있어서,
    유효 어레이 엔트리 모두는 하드웨어를 통해 조합되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  15. 재 14 항에 있어서,
    제 1 어레이 값은 0이고 제 2 어레이 값은 1이며, 제 1 제어 값은 0이고 제 2 제어 값은 1이며, 유효 어레이 엔트리 모두가 AND 연산수(operand)를 통해 조합되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  16. 제 14 항에 있어서,
    제 1 어레이 값은 1이고 제 2 어레이 값은 0이며, 제 1 제어 값은 1이고 제 2 제어 값은 0이며, 유효 어레이 엔트리 모두가 OR 연산수를 통해 조합되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  17. 제 1 항에 있어서,
    상기 제 2 제어 값은 프로세서에 의해 실행되는 명령어에 따라 수립되는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  18. 제 17 항에 있어서,
    정해진 주소의 시퀀스를 읽는 단계,
    유효 어레이 엔트리 모두를 상기 제 2 어레이 값으로 설정하는 단계, 그리고
    유효 제어 레지스터를 상기 제 2 제어 값으로 설정하는 단계
    를 포함하는 검증 강제 명령어(validation forcing instruction)를 실행하는 단계를 추가로 포함하는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
  19. 제 17 항에 있어서,
    주소의 지정 시퀀스로 명령어를 실행하고, 이로써 모든 유효 어레이 엔트리를 상기 제 2 어레이 값으로 설정하는 단계, 그리고
    유효 제어 레지스터를 상기 제 2 제어 값으로 설정하는 단계
    를 포함하는 검증 강제 명령어를 실행하는 단계를 추가로 포함하는 것을 특징으로 하는, 캐시에 액세스하기 위하여 프로세서에 의해 실행되는 방법.
KR1020107019041A 2008-03-13 2009-03-12 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법 KR20100133964A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3618108P 2008-03-13 2008-03-13
US61/036,181 2008-03-13

Publications (1)

Publication Number Publication Date
KR20100133964A true KR20100133964A (ko) 2010-12-22

Family

ID=41064263

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107019041A KR20100133964A (ko) 2008-03-13 2009-03-12 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법

Country Status (5)

Country Link
US (1) US8762641B2 (ko)
EP (1) EP2266038A4 (ko)
KR (1) KR20100133964A (ko)
CN (1) CN102027456A (ko)
WO (1) WO2009114691A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
WO2010017263A1 (en) 2008-08-06 2010-02-11 Sandbridge Technologies, Inc. Haltable and restartable dma engine
DE102010054446A1 (de) 2010-12-14 2012-06-14 Giesecke & Devrient Gmbh Portabler Datenträger mit Fehlbedienungszähler
US10599566B2 (en) * 2016-11-29 2020-03-24 Qualcomm Incorporated Multi-mode cache invalidation
US10372609B2 (en) * 2017-09-14 2019-08-06 Intel Corporation Fast cache warm-up
CN109165172B (zh) * 2018-08-23 2021-10-29 郑州云海信息技术有限公司 缓存数据处理方法及相关设备

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717895A (en) * 1994-12-01 1998-02-10 Cray Research, Inc. Associative scalar data cache with write-through capabilities for a vector processor
US6044441A (en) * 1995-09-29 2000-03-28 Intel Corporation Method and apparatus for encoding valid and invalid states in a cache with an invalid pattern
EP1111511B1 (en) * 1999-12-06 2017-09-27 Texas Instruments France Cache with multiple fill modes
EP1182565B1 (en) * 2000-08-21 2012-09-05 Texas Instruments France Cache and DMA with a global valid bit
EP1182564A3 (en) 2000-08-21 2004-07-28 Texas Instruments France Local memory with indicator bits to support concurrent DMA and CPU access
JP2002366433A (ja) * 2001-06-11 2002-12-20 Nec Microsystems Ltd キャッシュメモリ制御装置およびプロセッサ
US6968445B2 (en) 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6990557B2 (en) 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
JP3997404B2 (ja) * 2002-07-12 2007-10-24 Necエレクトロニクス株式会社 キャッシュメモリ及びその制御方法
US6842848B2 (en) 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US6925643B2 (en) 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US6904511B2 (en) 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US6971103B2 (en) 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
US7428567B2 (en) 2003-07-23 2008-09-23 Sandbridge Technologies, Inc. Arithmetic unit for addition or subtraction with preliminary saturation detection
US7251737B2 (en) 2003-10-31 2007-07-31 Sandbridge Technologies, Inc. Convergence device with dynamic program throttling that replaces noncritical programs with alternate capacity programs based on power indicator
US7475222B2 (en) 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7797363B2 (en) 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
TW200625097A (en) 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US8046538B1 (en) * 2005-08-04 2011-10-25 Oracle America, Inc. Method and mechanism for cache compaction and bandwidth reduction
EP2069947A4 (en) 2006-09-26 2013-10-09 Qualcomm Inc APPLICATION OF MATRIX INVERSION SOFTWARE IN A WIRELESS COMMUNICATION SYSTEM
KR101545357B1 (ko) 2006-11-10 2015-08-18 퀄컴 인코포레이티드 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템
KR20100052491A (ko) 2007-08-31 2010-05-19 샌드브리지 테크놀로지스, 인코포레이티드 가입자 및 엔터티 사이의 자동화된 상호작용을 위한 방법, 장치 및 구조
WO2009061547A1 (en) 2007-11-05 2009-05-14 Sandbridge Technologies, Inc. Method of encoding register instruction fields
US8539188B2 (en) 2008-01-30 2013-09-17 Qualcomm Incorporated Method for enabling multi-processor synchronization
EP2245529A1 (en) 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations

Also Published As

Publication number Publication date
US8762641B2 (en) 2014-06-24
WO2009114691A2 (en) 2009-09-17
CN102027456A (zh) 2011-04-20
EP2266038A2 (en) 2010-12-29
EP2266038A4 (en) 2011-09-21
US20090235032A1 (en) 2009-09-17
WO2009114691A3 (en) 2009-12-30

Similar Documents

Publication Publication Date Title
US7913041B2 (en) Cache reconfiguration based on analyzing one or more characteristics of run-time performance data or software hint
US7752350B2 (en) System and method for efficient implementation of software-managed cache
US9170955B2 (en) Providing extended cache replacement state information
US20030217227A1 (en) Apparatus and method for implementing a ROM patch using a lockable cache
US11176055B1 (en) Managing potential faults for speculative page table access
US11579879B2 (en) Processing pipeline with first and second processing modes having different performance or energy consumption characteristics
KR20100133964A (ko) 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
TW201351145A (zh) 指令快取的減少耗能
US11886882B2 (en) Pipelines for secure multithread execution
JP2008542880A (ja) 命令の型に応じて構成可能なキャッシュ・システム
US20220156076A1 (en) Dynamic Designation of Instructions as Sensitive for Constraining Instruction Execution
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
CN111353156A (zh) 可缩放多密钥总存储器加密引擎
CN108874690B (zh) 数据预取的实现方法和处理器
US8661169B2 (en) Copying data to a cache using direct memory access
US8527713B2 (en) Cache locking without interference from normal allocations
US11403101B1 (en) Introducing noise in threaded execution to mitigate cross-thread monitoring
US9645825B2 (en) Instruction cache with access locking
US11263015B1 (en) Microarchitectural sensitive tag flow
US11822652B1 (en) Prime and probe attack mitigation
US8117383B2 (en) Hardware accelerator based method and device for string searching
CN111198827A (zh) 页表预取方法及装置
JP2003228483A (ja) マイクロプロセッサ
Park et al. Hybrid schemes and variable-size subblock TLBs: Aggressive superpage supports

Legal Events

Date Code Title Description
N234 Change of applicant [patent]: notification of change of applicant and registration of full transfer of right
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid