KR100260864B1 - 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법 - Google Patents

전자 회로의 전력 소모를 감소시키기 위한 장치와 방법 Download PDF

Info

Publication number
KR100260864B1
KR100260864B1 KR1019970039158A KR19970039158A KR100260864B1 KR 100260864 B1 KR100260864 B1 KR 100260864B1 KR 1019970039158 A KR1019970039158 A KR 1019970039158A KR 19970039158 A KR19970039158 A KR 19970039158A KR 100260864 B1 KR100260864 B1 KR 100260864B1
Authority
KR
South Korea
Prior art keywords
instruction
processor
cache memory
power mode
information
Prior art date
Application number
KR1019970039158A
Other languages
English (en)
Other versions
KR19980032288A (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 KR19980032288A publication Critical patent/KR19980032288A/ko
Application granted granted Critical
Publication of KR100260864B1 publication Critical patent/KR100260864B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/3824Operand accessing
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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)
  • Power Sources (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Abstract

집합-연관 캐쉬 메모리가 제1 전력 모드에서 동작하고 있는 동안, 정보는 캐쉬 메모리의 최대 N개의 웨이로 저장되는데, 여기서 N은 N>1인 정수이다. 캐쉬 메모리가 제2 전력 모드에서 동작하고 있는 동안, 정보는 캐쉬 메모리의 최대 M개의 웨이로 저장되는데, 여기서 M은 0<M<N인 정수이다.

Description

전자 회로의 전력 소모를 감소시키기 위한 장치와 방법
최근에는 휴대용 랩탑 컴퓨터가 점점 더 인기를 끌고 있다. 그러한 랩탑 컴퓨터는 휴대의 편리를 위해 배터리에 의해 전력을 공급받는 것이 보통이다. 바람직하게는, 배터리에 의해 전력을 공급받는 랩탑 컴퓨터는 배터리를 재충전하거나 교체하기 전에 오랜 시간 동안 작동하여야 한다.
따라서, 배터리를 재충전하거나 교체하지 않고 전기 회로를 작동시킬 수 있는 시간을 연장하기 위해서 랩탑 컴퓨터 전기 회로의 전력 소비를 감소시키는 것이 중요하다. 이러한 목적을 달성하기 위하여, 종래 기술은 소정의 시간 동안 특정한 동작을 감지하지 못하면 전기 회로의 전력을 디스에이블시키거나 클럭 신호를 디스에이블시킨다. 그러한 종래의 "타이머(timer)" 기술의 단점은 전기 회로가 작동하고 있지 않는 때에도 타이머가 끝나기를 기다리는 동안 과도 전력(exess power)을 불필요하게 소모한다는 것이다.
따라서, 본 발명의 목적은 종래 기술에 비하여 전기 회로가 더 적은 과도 전력(excess power)을 소비하는 방법 및 장치를 제공하는 것이다.
도 1은 예시적인 실시예에 따른 정보를 처리하기 위한 프로세서 장치의 블록도.
도 2는 도 1의 프로세서의 시퀀서 유니트의 블록도.
도 3은 도 2의 시퀀서 유니트의 명령어 버퍼 큐의 블록도.
도 4는 도 2의 시퀀서 유니트의 리오더 버퍼의 개념도.
도 5는 도 1의 프로세서의 리네임 버퍼의 개념도.
도 6은 도 1의 프로세서의 명령어 캐쉬의 블록도.
도 7은 도 6의 명령어 캐쉬의 센스 증폭 회로의 개략적인 전기 회로도.
<도면의 주요 부분에 대한 부호의 설명>
12 : 버스 인터페이스 유니트
14 : 명령어 캐쉬
16 : 데이터 캐쉬
18 : 시퀀서 유니트
20 : 브랜치 유니트
22 : 고정 소수점 유니트
26 : 복소 고정 소수점 유니트
28 : 로드/저장 유니트
30 : 부동 소수점 유니트
34 : 리네임 버퍼
38 : 리네임 버퍼
39 : 메모리
41 : 트랜스듀서
42 : 캐리 비트 레지스터
70 : 명령어 버퍼
71 : 페치 논리
72 : 디코드 논리
74 : 디스패치 논리
76 : 리오더 버퍼
80 : 완료 논리
82 : 실행 논리
100 : 제어 논리
102 : 인에이블 라인
도 1은 예시적인 실시예에 따라 정보를 처리하기 위한 프로세서(10) 장치의 블록도이다. 예시적인 실시예에 있어서, 프로세서(10)은 단일 집적 회로 슈퍼스칼라 마이크로프로세서이다. 따라서, 이하에서 더욱 상세히 논의되는 바와 같이, 프로세서(10)은 다양한 유니트, 레지스터, 버퍼, 메모리, 및 다른 섹션을 포함하는데 이들은 모두 집적 회로에 의해 형성된다. 또한, 예시적인 실시예에 있어서, 프로세서(10)은 단축 명령어 집합 계산(reduced instruction set computing: "RISC") 기법에 따라 작동한다. 도 1에 도시한 바와 같이, 장치 버스(11)은 프로세서(10)의 버스 인터페이스 유니트 ("BIU")에 연결되어 있다. BIU(12)는 프로세서(10)과 장치 버스(11) 사이의 정보 전달을 제어한다.
BIU(12)는 프로세서(10)의 데이터 캐쉬(16)과 명령어 캐쉬(14)에 연결되어 있다. 명령어 캐쉬(14)는 시퀀서 유니트(sequencer unit)(18)로 명령어를 출력한다. 명령어 캐쉬로부터 입력된 명령어에 응답하여, 시퀀서 유니트(18)은 프로세서(10)의 다른 실행 회로로 명령어를 선택적으로 출력한다.
도시된 실시예에 있어서, 프로세서(10)의 실행 회로는 시퀀서 유니트(18)에 부가하여 복수개의 실행 유니트(multiple execution units), 즉 브랜치 유니트(branch unit)(20), 고정 소수점 유니트 ("FXU")(22), 복소 고정 소수점 유니트 ("CFXU")(26), 로드/저장 유니트 (load/store unit: "LSU")(28) 및 부동 소수점 유니트 ("FPU")(30)을 포함한다. FXU(22), CFXU(26) 및 LSU(28)은 범용 구조 레지스터 (general purpose architectural registers: "GPRs")(32) 및 고정 소수점 리네임 버퍼(34)로부터 소스 오퍼런드 정보를 입력한다. 더욱이, FXU(22)는 캐리 비트 (carry bit: "CB") 레지스터(42)로부터 "캐리 비트"를 입력한다. FXU(22), CFXU(26) 및 LSU(28)은 그들의 동작 결과 (목적지 오퍼런드 정보)를 출력하여 고정 소수점 리네임 버퍼(34)의 선택된 엔트리에 저장한다. 또한, CFXU(26)은 특정 용도 레지스터(special purpose resisters: "SPRs")(40)에 소스 오퍼런드 정보 및 목적지 오퍼런드 정보를 를 입출력한다.
FPU(30)은 자신의 소스 오퍼런드 정보를 부동 소수점 구조 레지스터 (floating point architectural register: "FPRs")(36)과 부동 소수점 리네임 버퍼(38)로부터 입력한다. FPU(30)은 자신의 동작 결과 (목적지 오퍼런드 정보)를 출력하여 부동 소수점 리네임 버퍼(38) 내의 선택된 엔트리에 저장한다.
로드 명령어(Load instruction)에 응답하여, LSU(28)은 데이터 캐쉬(16)으로부터 정보를 입력하고 이러한 정보를 리네임 버퍼(34 및 38) 중 선택된 하나에 카피한다(copies). 만일 이러한 정보가 데이터 캐쉬(16)에 저장되어 있지 않다면, 데이터 캐쉬(16)은 이러한 정보를 장치 버스(11)에 연결되어 있는 장치 메모리(39)로부터 (BIU(12)와 장치 버스(11)을 통해) 입력한다. 더욱이, 데이터 캐쉬(16)은 정보를 데이터 캐쉬(16)으로부터 장치 버스(11)에 연결되어 있는 장치 메모리(39)로 (BIU(12)와 장치 버스(11)을 통해) 출력하는 것이 가능하다. 저장 명령어(Store instruction)에 응답하여, LSU(28)은 GPRs(32)와 FPRs(36) 중 선택된 하나로부터 정보를 입력하고 이러한 정보를 데이터 캐쉬(16)에 카피한다.
시퀀서 유니트(18)은 GPRs과 FPRs로 정보를 출력하고 GPRs과 FPRs로부터 정보를 입력한다. 시퀀서 유니트(18)로부터, 브랜치 유니트(20)은 프로세서(10)의 현재 상태를 표시하는 신호와 명령어를 입력한다. 이러한 명령어와 신호에 응답하여, 브랜치 유니트(20)은 (시퀀서 유니트(18)로) 프로세서(10)에 의해 실행되어야 할 명령어 시퀀스를 저장하기에 적합한 메모리 어드레스를 표시하는 신호를 출력한다. 브랜치 유니트(20)으로부터의 그러한 신호에 응답하여, 시퀀서 유니트(18)은 명령어 캐쉬(14)로부터 표시된 명령어 시퀀스를 입력한다. 만일 명령어 캐쉬(14) 내에 하나 이상의 명령어 시퀀스가 저장되어 있지 않으면, 명령어 캐쉬(14)는 장치 버스(11)에 접속되어 있는 장치 메모리(39)로부터 (BIU(12)와 장치 버스(12)를 통해) 그러한 명령어를 입력한다.
명령어 캐쉬(14)로부터 입력되는 명령어에 응답하여, 시퀀서 유니트(18)은 실행 유니트(20, 22, 26, 28 및 30) 중 선택된 하나로 명령어를 선택적으로 디스패치한다. 각 실행 유니트는 특정 클래스의 명령어 중 하나 이상의 명령어를 실행한다. 예를 들면, FXU(22)는 소스 오퍼런드에 대하여 제1 클래스의 고정 소수점 수학 연산을 실행하는데, 여기에는 합산, 감산, AND 연산, OR 연산 및 XOR 연산 등이 포함된다. CFXU(26)는 소스 오퍼런드에 대하여 고정 소수점 곱셈 및 나눗셈과 같은 제2 클래스의 고정 소수점 연산을 실행한다. FPU(30)는 소스 오퍼런드에 대하여 부동 소수점 곱셈 및 나눗셈과 같은 부동 소수점 연산을 실행한다.
선택된 하나의 리네임 버퍼(34)에 정보가 저장될 때, 이러한 정보는 선택된 리네임 버퍼가 할당되는 명령어에 의해 특정되는 저장 위치(storage location) (예를 들면, GPRs(32) 또는 CA 레지스터(42) 중 하나)와 연관된다(be associated). 선택된 하나의 리네임 버퍼(34)에 저장되어 있는 정보는 시퀀서 유니트(18)로부터의 신호에 응답하여 연관된 GPRs(32) (또는 CA 레지스터(42)) 중 하나로 카피된다. 시퀀서 유니트(18)은 정보를 생성한 명령어의 "완료(completing)"에 응답하여 리네임 버퍼(34) 중 선택된 하나의 버퍼에 저장되어 있는 정보를 카피할 것을 지시한다. 이러한 카피를 "라이트백(writeback)"이라고 한다.
정보가 선택된 하나의 리네임 버퍼(38)에 저장될 때, 이러한 정보는 FPRs(36)의 하나와 연관된다. 선택된 하나의 리네임 버퍼(38)에 저장되어 있는 정보는 시퀀서 유니트(18)으로부터의 신호에 응답하여 연관된 하나의 FPRs(36)로 카피된다. 시퀀서 유니트(18)은 정보를 생성한 명령어의 "완료"에 응답하여 리네임 버퍼(38) 중 선택된 하나의 버퍼에 저장되어 있는 정보를 카피할 것을 지시한다.
프로세서(10)은 복수개의 실행 유니트(20, 22, 26, 28 및 30)에서 복수개의 명령어를 동시에 처리함으로써 고성능을 달성할 수 있다. 따라서, 각 명령어는 스테이지의 시퀀스(a sequence of stages)로서 처리되는데, 여기서 각 명령어는 다른 명령어의 스테이지와 병렬로 실행될 수 있다. 이러한 기법을 "파이프라이닝(pipelining)"이라고 한다. 예시적인 실시예에서, 명령어는 보통 페치(fetch), 디코드(decode), 디스패치(dispatch), 실행(execute), 완료(completion), 및 라이트백(writeback)의 여섯 개의 스테이지로서 처리된다.
페치 스테이지에 있어서, 시퀀서 유니트(18)은, 브랜치 유니트(20) 및 시퀀서 유니트(18)과 관련하여 상기에서 논의된 명령어 시퀀스를 저장하는 하나의 이상의 메모리 어드레스로부터 하나 이상의 명령어를 (명령어 캐쉬(14)로부터) 선택적으로 입력한다.
디코드 스테이지에서, 시퀀서 유니트(18)은 페치된 명령어를 2개까지 디코딩한다.
디스패치 스테이지에서, 시퀀서 유니트(18)은 디스패치된 명령어 결과 (목적지 오퍼런드 정보)를 위한 리네임 버퍼 엔트리를 예약한 후 실행 유니트(20, 22, 26, 28 및 30) 중 (디코드 스테이지의 디코딩에 응답하여) 선택된 하나로 디코딩된 명령어를 최대 2개까지 선택적으로 디스패치한다. 디스패치 스테이지에서, 오퍼런드 정보가 디스패치된 명령어를 위하여 선택된 실행 유니트로 공급된다. 프로세서(10)은 명령어의 프로그래밍된 시퀀스 순서에 따라 명령어를 디스패치한다.
실행 스테이지에서, 실행 유니트는 디스패치된 명령어를 실행하고 작동 결과 (목적지 오퍼런드 정보)를 출력하여 상기에서 논의한 리네임 버퍼(38) 및 리네임 버퍼(34) 내의 선택된 엔트리에 저장한다. 이러한 방법으로, 프로세서(10)은 명령어의 프로그래밍된 시퀀스 순서에 상관없이 명령어를 실행할 수 있다.
완료 스테이지에서, 시퀀서 유니트(18)은 명령어가 "완료"되었다는 것을 표시한다. 프로세서(10)은 명령어의 프로그래밍된 시퀀스 순서에 따라 명령어를 완료한다.
라이트백 스테이지에서, 시퀀서(18)은 정보를 리네임 버퍼(34 및 38)로부터 GPRs(32) 및 FPRs(36) 각각에 카피할 것을 지시한다. 시퀀서 유니트(18)은 그러한 선택된 리네임 버퍼에 저장되어 있는 정보의 카피를 지시한다. 마찬가지로, 특정 명령어의 라이트백 스테이지에서, 프로세서(10)은 자신의 구조 상태(architectual states)를 특정 명령어에 응답하여 업데이트한다. 프로세서(10)은 명령어 "라이트백" 스테이지의 각각을 프로그래밍된 시퀀스 순서에 따라 처리한다. 프로세서(10)은 특정 상황에서 명령어 완료 스테이지와 라이트백 스테이지를 병합할 수 있다.
예시적인 실시예에 있어서, 각각의 명령어는 명령어 처리의 각 스테이지를 완료하기 위해 하나의 머신 사이클(machine cycle)을 요구한다. 그럼에도 불구하고, 소정의 명령어 (예를 들면, CFXU(26)에 의해 실행되는 복소 고정 소수점 명령어)는 하나 이상의 사이클을 요구할 수도 있다. 따라서, 선행 명령어의 완료에 요구되는 시간의 변화에 응답하여 가변 지연(variable delay)이 특정 명령어 실행 및 완료 스테이지 사이에서 발생할 수 있다.
프로세서(10)은 5개의 전력 모드를 구현하고 이에 따라 동작한다. 이 5개의 전력 모드 중 4개는 "절전(power saving)" 동작 모드이다. 5개의 전력 모드는 하드웨어 구현 레지스터 및 기계 상태 레지스터(machine state register: "MSR") 내의 제어 비트의 상태에 응답하여 선택적으로 인에이블되거나 디스에이블된다. 이러한 레지스터들은 SPRs(40) 내에 위치해 있다. 따라서, 제어 비트는 SPRs(40)로 향하는 이동 명령어(move instructions)를 실행하는 CFXU(26)에 응답하여 설정 및/또는 소거된다. 5개의 전력 모드는 전-전력 모드(Full-power mode), 도우즈 모드(Doze mode), 냅 모드(Nap mode), 슬립 모드(Sleep mode), 및, 예시적인 실시예의 중요한 특징이 되는, 특별 모드(Special mode)이다.
1. 전-전력 모드(Full-power mode). 전-전력 모드는 프로세서(10)의 디폴트 전력 모드이다. 전-전력 모드에서, 프로세서(10)은 완전히 전력을 공급받고, 유니트들은 프로세서(10)의 프로세서 클럭 속도에서 동작한다. 프로세서(10)은 또한 동적 전력 관리 모드(dynamic power management mode)를 구현하는데, 이는 선택적으로 인에이블되거나 디스에이블될 수 있다. 만일 동적 전력 관리 모드가 인에이블되면, 프로세서(10) 내의 유휴 상태에 있는 유니트(idle units)는 성능, 소프트웨어 실행, 또는 외부 하드웨어 회로에 영향을 주지 않고 자동적으로 저-전력 상태로 들어간다.
상술한 동적 전력 관리 모드와 전-전력 모드, 도우즈 모드, 냅 모드, 및 슬립 전력 모드는 본 명세서에 참조된 전화 1-800-파워PC, 뉴욕, 호프웰 정션의 IBM 마이크로전자 부서에 의해 출판된 간행물 파워PC 603c RISK 마이크로프로세서 사용자 매뉴얼에 더욱 자세히 기술되어 있다. 더욱이, 동적 전력 관리 모드는 본 명세서에 참조된 미합중국 특허 제5,420,808호에 기술되어 있다. 예시적인 실시예에 있어서, 프로세서(10)은 뉴욕, 호프웰 정션의 IBM 마이크로전자 부서로부터 입수할 수 있는 파워PC 603e RISK 마이크로프로세서의 향상된 버젼이다. 프로세서(10)은 특별 전력 모드를 구현하기 때문에 파워PC 603e RISK 마이크로프로세서에 비하여 상대적으로 향상된 것이다. 따라서, 특별 전력 모드는 예시적인 실시예의 중요한 특징이 된다.
2. 도즈 모드(Doze mode). 도즈 모드에서는, BIU(12)의 버스 스누핑 논리(bus snooping logic), 프로세서(10)의 (도 1에 도시되어 있지 않은) 시간 베이스/감소기 레지스터(time base/decrementer registers), 및 프로세서(10)의 (도 1에 도시되지 않은) 위상 고정 루프(phase-locked loop: "PLL")를 제외한 프로세서(10)의 모든 유니트들이 디스에이블된다. 도즈 모드에서, 프로세서(10)의 PLL은 완전히 전력을 공급받는 상태에 계속 있게 되고 장치 버스(11)의 외부 장치 클럭에 동기된 채로 있으므로, 프로세서(10)의 단지 수개의(only a few) 클럭 사이클 내에 전-전력 모드로 되돌아갈 수 있다.
도즈 모드로부터, 프로세서(10)은 인터럽트 라인 INT의 표명(assertion)을 통한 외부 비동기 인터럽트에 응답하여 전-전력 모드로 돌아가므로, INT는 프로세서(10)으로 논리 1 상태를 갖는 신호를 공급한다. 마찬가지로, 도즈 모드로부터, 프로세서(10)은 장치 관리 인터럽트 라인 SMI의 표명을 통한 장치 관리 인터럽트에 응답하여 전-전력 모드로 돌아가므로, SMI는 프로세서(10)으로 논리 1 상태를 갖는 신호를 공급한다. 더욱이, 도즈 모드로부터, 프로세서(10)은 감소기 예외, 하드 리세트 또는 소프트 리세트(a hard or soft reset), 또는 기계 검사 입력(machine check input)에 응답하여 전-전력 모드로 돌아간다.
하드 리세트는 저전압 (예를 들면, 0 볼트)로부터 전압 기준 노드 GND에 대하여 선정된 전압 (예를 들면, 2.5 볼트)로 전환하는 전압 공급 노드 Vdd에 응답하여 발생한다. 명백히, 간결하게 하기 위해, 도 1 내지 도 6은 INT, SMI, Vdd, 및 GND로부터 프로세서(10)의 다양한 회로로의 모든 접속을 도시하고 있지는 않다. 어떠한 절전 모드로부터도, 프로세서(10)은 소프트 리세트에 응답하여 전-전력 모드로 되돌아 가는데, 여기서 제어 비트는, SPRs(40)로 향하는 적합한 이동 명령어 - 이러한 이동 명령어는 명령어의 소프트웨어 리세트 시퀀스의 일부임 - 를 실행하는 CFXU(26)에 응답하여 설정 및/또는 소거된다.
3. 냅 모드(Nap mode). 도즈 모드에 비하여, 냅 모드는 BIU(12)의 버스 스누핑 논리를 디스에이블시킴으로써 프로세서(10)의 전력 소비를 더 감소시켜 단지 프로세서(10)의 PLL 및 시간 베이스/감소기 레지스터만이 전-전력 상태에 남게 된다. 냅 모드로부터, 프로세서(10)은 라인 INT의 표명을 통한 외부 비동기 인터럽트, 장치 관리 인터럽트, 감소기 예외, 하드 또는 소프트 리세트, 또는 기계 검사 입력에 응답하여 전-전력 모드로 돌아간다. 도즈 모드에서와 마찬가지로, 냅 모드에서 전-전력 모드로의 복귀는 프로세서(10)의 단지 수개의 클럭 사이클 내에 일어난다.
4. 슬립 모드(Sleep mode). 슬립 모드에서, 프로세서(10)의 모든 유니트들을 디스에이블시킴으로써 전력 소모는 거의 최소로 감소하고, 그 후 프로세서(10)의 외부 논리는 PLL 및 외부 장치 클럭을 디스에이블시킬 수 있다. 슬립 모드로부터, 프로세서(10)은 PLL이 외부 장치 클럭에 동기되기 위해 적합한 최소 시간이 지난후, 인터럽트 라인 INT의 표명, 장치 관리 인터럽트, 감소기 예외, 하드 또는 소프트 리세트, 또는 기계 검사 입력 후에, PLL 및 외부 장치 클럭 양자에 응답하여 전-전력 모드로 돌아간다.
5. 특별 모드(Special mode). 예시적인 실시예의 중요한 특징에 있어서, 프로세서(10)은 (1) 하드웨어 이벤트(hardware event) 또는 (2) 소프트웨어 이벤트(software event)에 응답하여 특별 모드로 들어간다. 예시적인 실시예에 있어서, 하드웨어 이벤트는 트랜스듀서(41)이 라인 HPS (하드웨어 이벤트, 절전, 특별 모드) 상으로 논리 1 상태를 갖는 신호를 출력하는 때 발생한다. 유사하게, 소프트웨어 이벤트는 SPRs(40)이 라인 SPR (소프트웨어 이벤트, 절전, 특별 모드) 상으로 논리 1 상태를 갖는 신호를 출력할 때 발생한다. SPRs(40)은, SPRs(40)의 선정된 "HID0" 비트로 향하는 적합한 "특별 목적 레지스터로 이동" ("MTSPR") 명령어를 실행하는 CFXU(26)에 응답하여 SPS 상으로 그러한 신호를 출력한다.
트랜스듀서(41)은 프로세서(10)을 형성하는 집적 회로의 상대 온도를 감지하기 위한 열 센서를 포함한다. (트랜스듀서(41)의) 열 센서가 임계 온도를 넘는 상대 온도를 감지하는 경우에 하드웨어 이벤트가 발생한다 (즉, 트랜스듀서(41)이 HPS 상으로 논리 1 상태를 갖는 신호를 출력한다). 예시적인 실시예에 있어서, 임계 온도는 프로세서(10)이 전-전력 모드에서 안전하게 작동할 수 있는 최대 안전 온도로 미리 선택된다. 따라서, 만일 프로세서(10)의 온도가 프로세서(10)이 전-전력 모드에서 안전하게 작동할 수 있는 최대 안전 온도를 넘으면, 프로세서(10)을 전-전력 모드에서 계속하여 작동시키는 것이 프로세서(10)에게 손상을 끼치게 될 것이다. 하드웨어 이벤트에 응답하여 프로세서(10)이 특별 "절전" 모드 동작으로 들어감으로써 그러한 손상이 실질적으로 회피될 수 있다.
만일 프로세서(10)이 하드웨어 이벤트에 응답하여 특별 모드로 들어가면, 프로세서(10)은 프로세서(10)의 한개의 사이클 동안 페치되는 명령어의 최대 개수를 감소시켜, 이하에서 도 2 및 도 3과 관련하여 더욱 상세히 논의되는 바와 같이 프로세서(10)의 한개의 사이클당 더 적은 명령어가 디스패치된다. 이러한 방법으로, 실행 유니트가 유휴 상태에 있을 가능성이 크게 되고, 따라서 동적 전력 관리 모드의 저-전력 상태가 쉽게 유도된다. 더욱이, 만일 프로세서(10)이 하드웨어 이벤트에 응답하여 특별 모드로 들어가면, 프로세서(10)은 도 5와 관련하여 이하에서 더욱 상세히 논의되는 바와 같이 LSU(28)의 동작을 변화시킨다.
비교해 보면, 만일 프로세서(10)이 소프트웨어 이벤트에 응답하여 특별 모드로 들어가면, 프로세서(10)은 (a) 이하에서 도 2 및 도 3과 관련하여 더욱 상세히 논의되는 바와 같이 프로세서(10)의 한개의 사이클 동안 페치되는 명령어의 최대 개수를 감소시키고, (b) 도 5와 관련하여 이하에서 더욱 상세히 논의되는 바와 같이 LSU(28)의 동작을 변화시키며, (c) 이하에서 도 6과 관련하여 더욱 상세히 논의되는 바와 같이 명령어 캐쉬(14) 및 데이터 캐쉬(16)의 "웨이(way)"의 수를 감소시킴으로써 명령어 캐쉬(14) 및 데이터 캐쉬(16) 내의 전력 소비를 감소시킨다.
특별 모드로부터, 프로세서(10)은 HPS나 SPS가 모두 논리 1 상태를 갖지 않는 경우에 전-전력 모드로 돌아간다. 더욱이, 만일 프로세서(10)이 단지 소프트웨어 이벤트에 응답하여 특별 모드로 들어간 경우라면 (즉, HPS는 논리 0 상태를 갖는 반면 SPS는 논리 1 상태를 갖는 경우), 프로세서(10)은 그밖에 (1) INT의 표명을 통한 외부 비동기 인터럽트, (2) 하드 리세트 또는 소프트 리세트, 또는 (3) 기계 검사 입력에 응답하여 (특별 모드로부터) 전-전력 모드로 돌아간다. 선택적인 실시예에 있어서, 만일 프로세서(10)이 단지 소프트웨어 이벤트에 응답하여 특별 모드로 들어간 경우라면, 프로세서(10)은 그밖에 SIM의 표명을 통한 장치 관리 인터럽트에 응답하여 (특별 모드로부터) 전-전력 모드로 돌아간다. 그러한 선택적인 실시예에 있어서, 프로세서(10)은, 프로세서(10)이 INT의 표명에 응답하여 전-전력 모드로 돌아가는 것과 유사하게, SMI의 표명에 응답하여 전-전력 모드로 돌아간다.
또 다른 하나의 선택적인 실시예에 있어서, 프로세서(10)은 또한 감소기 예외(decrementer exception)에 응답하여 전-전력 모드로 돌아간다. SPRs(40)은 프로세서 클럭 신호에 응답하여 카운트를 감소시키기 위한 회로를 포함한다 (간결하게 하기 위해 도 1에 도시되지는 않음). 감소기 예외는 그러한 카운트가 0으로 값이 감소할 때 발생한다.
도 1은 명령어 캐쉬(14), 데이터 캐쉬(16), 시퀀서 유니트(18) 및 LSU(28)의 각각에 연결되어 있는 한개의 SPS 라인을 도시한다. 마찬가지로, 도 1은 명령어 캐쉬(14), 데이터 캐쉬(16), 시퀀서 유니트(18) 및 LSU(28)의 각각에 연결되어 있는 한개의 HPS 라인을 도시한다. 유사하게, 도 1은 명령어 캐쉬(14), 데이터 캐쉬(16), 시퀀서 유니트(18) 및 LSU(28)의 각각에 연결되어 있는 한개의 INT 라인을 도시한다.
도 2는 시퀀서 유니트(18)의 블록도이다. 상기에서 논의한 바와 같이, 페치 스테이지에서, 만일 프로세서(10) (및 페치 논리(71))이 전-전력 모드에서 동작하면, 페치 논리(71)은 명령어 캐쉬(14)로부터 (프로세서(10)과 페치 논리(71)의 사이클당) 최대 두 개까지의 명령어를 선택적으로 요청하고, 이러한 명령어를 명령어 버퍼(70)에 저장한다. 따라서, 프로세서(10)의 특정 사이클 동안, 시퀀서(18)은 명령어 캐쉬(14)로부터 (0에서 2개까지) 변하는 개수만큼의 명령어를 요청하는데, 여기서 요청하는 명령어의 개수는 명령어 버퍼(70)에 저장될 수 있는 부가 명령어(additional instructions)의 수 (즉, 명령어 버퍼(70) 내에서 사용 가능한 버퍼의 수)에 따른다.
디코드 스테이지에서, 만일 프로세서(10) (및 디코드 논리(72))이 전-전력 모드에서 동작하면, 디코드 논리(72)은 명령어 버퍼(70)으로부터 (프로세서(10)과 디코드 논리(72)의 사이클당) 페치된 명령어를 최대 두 개까지 선택적으로 입력하고 디코딩한다. 따라서, 프로세서(10)의 특정 사이클 동안, 디코드 논리(72)는 명령어 버퍼(70)로부터 (0에서 2개까지) 변하는 개수만큼의 명령어를 입력하고 디코딩하는데, 여기서 입력하고 디코딩하는 명령어의 개수는 특정 사이클 동안 디스패치 논리(74)에 의해 디스패치되는 명령어의 수에 따른다.
디스패치 스테이지에서, 만일 프로세서(10) (및 디스패치 논리(74))가 전-전력 모드에서 동작하면, 디스패치 논리(74)은 (디코드 스테이지의 디코딩에 응답하여) 실행 유니트(20, 22, 26, 28 및 30) 중 선택된 하나의 유니트로 (프로세서(10)과 디스패치 논리(74)의 사이클당) 디코딩된 명령어를 최대 두 개까지 선택적으로 디스패치한다. 따라서, 프로세서(10)의 특정 사이클 동안, 디스패치 논리(72)는 실행 유니트로 (0에서 2개까지) 변하는 개수만큼의 디코딩된 명령어를 디스패치하는데, 여기서 입력하고 디코딩하는 명령어의 개수는 실행을 위해 실행 유니트에 저장될 수 있는 부가 명령어의 수 (예를 들면, 실행 유니트 내에서의 사용 가능한 예약 스테이션(reservation stations)의 수)에 따른다.
비교해 보면, 예시적인 실시예에 있어서, 만일 프로세서(10)이 특별 전력 모드에서 동작하면, 페치 논리(71)은 (SPS, MPS 및 INT의 논리 상태에 응답하여) 명령어 캐쉬(14)로부터 프로세서(10)의 사이클당 (두 개의 명령어 대신) 최대 하나의 명령어를 요청하고, 명령어 버퍼(70)에 하나의 명령어를 저장한다. 이러한 방법으로, (a) 디코드 논리(72)는 프로세서(10)의 사이클당 명령어 버퍼(70)으로부터 (평균적으로) 대략 하나의 페치된 명령어를 입력하고 디코딩하며, (b) 디스패치 논리(74)는 (프로세서(10)의 사이클당) 실행 유니트(20, 22, 26, 28 및 30) 중 선택된 하나의 유니트로 (평균적으로) 대략 하나의 명령어를 디스패치하며, (c) 완료 논리(80)은 (이하에서 더욱 상세히 논의되는 바와 같이) 프로세서(10)의 사이클당 (평균적으로) 대략 하나의 명령어의 "완료"를 표시한다. 따라서, 실행 유니트는 (전-전력 모드와 비교하여) 유휴 상태에 있을 가능성이 크게 되고, 결과로서 (미합중국 특허 제5,420,808호에 기술된) 동적 전력 관리 모드의 저-전력 상태가 더욱 쉽게 야기된다.
선택적인 실시예에 있어서, 만일 프로세서(10)이 특별 전력 모드에서 동작하면, 디스패치 논리(74)는 (SPS, MPS 및 INT의 논리 상태에 응답하여) 실행 유니트(20, 22, 26, 28 및 30) 중 선택된 하나의 유니트로 프로세서(10)의 사이클당 (두 개의 명령어 대신) 최대 하나의 명령어를 디스패치하는데, 이러한 선택적인 실시예의 기법은 프로세서(10)의 단일 사이클 동안 페치되는 명령어의 최대 개수를 감소시키는 예시적 실시예에서의 기법 대신에 (또는 이에 부가하여) 사용될 수 있다. 따라서, 도 2는 페치 논리(71) 및 디스패치 논리(74) 양자에 모두 연결되어 있는 SPS, HPS 및 INT를 도시한다.
도 3은 명령어 버퍼(70)의 블록도이다. 명령어 버퍼(70)은 디스패치 버퍼(56)의 버퍼(I0) 및 버퍼(I1)에 I0 명령어 및 I1 명령어를 각각 저장한다. 예시적인 실시예에 있어서, 프로세서(10)의 사이클에 응답하여, I0 명령어가 단독으로 디코드 논리(72)(도 2)로 디스패치되든지, I0 및 I1 명령어가 모두 함께 디코드 논리(72)로 디스패치되든지, 또는 I1 명령어가 단독으로 디코드 논리(72)로 디스패치된다. 버퍼(I0 및 I1)의 내용은 각각 라인(55a-b)를 통해 디코드 논리(72)로 출력된다.
예시적인 실시예에 있어서, 명령어 버퍼(70)은 프로세서(10)의 한개의 사이클 동안 64-비트 버스(50)을 통해 명령어 캐쉬(14)로부터 32-비트 명령어를 최대 두 개까지 병렬로 입력할 수 있다. 디코드 논리(72)로 함께 디스패치되는 I0 및 I1 명령어 양자에 응답하여, 명령어 버퍼(70)은 이전에(previously) 저장되어 있던 명령어를 명령어 버퍼(54a-b)에서 버퍼(I0 및 I1)로 각각 전달한다. 또한, 그러한 경우에, 명령어 버퍼(70)은 이전에 저장되어 있던 명령어를 명령어 버퍼(52a-b)에서 명령어 버퍼(54a-b)로 각각 전달한다. 더욱이, 그러한 경우에, 만일 프로세서(10)이 전-전력 모드에서 작동한다면, 명령어 버퍼(70)은 64-비트 버스(50)을 통해 명령어 캐쉬(14)로부터 32-비트 명령어를 최대 두 개까지 병렬로 입력하고, 그러한 명령어를 사용 가능한 (즉, 이미 명령어를 저장하고 있지 않고 비어 있는) 제1 버퍼쌍(pair of buffers), 즉 버퍼(I0)와 함께 개시하는(beginning), (a) 버퍼(I0 및 I1), (b) 버퍼(54a-b), 또는 (c) 버퍼(52a-b) 중 하나에 저장한다.
단독으로 디코드 논리(72)로 디스패치되는 I0 명령어에 응답하여, 명령어 버퍼(70)은 이전에 저장되어 있던 명령어를 버퍼(I1)에서 버퍼(I0)으로 전달한다. 또한, 그러한 경우에, 명령어 버퍼(70)은 이전에 저장되어 있던 명령어를 명령어 버퍼(54a)에서 버퍼(I1)로, 명령어 버퍼(54b)에서 명령어 버퍼(54a)로, 명령어 버퍼(52a)에서 명령어 버퍼(54b)로, 명령어 버퍼(52b)에서 명령어 버퍼(52a)로 전달한다. 더욱이, 그러한 경우에, 명령어 버퍼(70)은 64-비트 버스(50)을 통해 명령어 캐쉬(14)로부터 한개의 32-비트 명령어를 입력하고 이 명령어를 사용 가능한 제1 버퍼, 즉 버퍼(I0)와 함께 개시하는, 버퍼(I0, I1, 54b, 54a, 52b 또는 52a)) 중 하나에 저장한다.
만일 프로세서(10)이 전-전력 모드에서 동작한다면, 명령어 버퍼(70)은 프로세서(10)의 한개의 사이클 동안 64-비트 버스(50)을 통해 명령어 캐쉬(14)로부터 32-비트 명령어를 최대 두 개까지 병렬로 입력할 수 있다. 이러한 방법에서, 예를 들어, 명령어 캐쉬(14)는 4웨이 집합-연관 캐쉬(four-way set-associative cache)이므로, 명령어 캐쉬(14)의 최소 256개의 센스 증폭기 (64 비트/웨이 x 4웨이 x 1 감지 증폭기/비트)가 그러한 프로세서(10)의 한개의 사이클 동안 활성 상태에 있게 된다. 이러한 센스 증폭기의 활성화는 프로세서(10)의 평균 소비 전력에 기여한다.
비교해 보면, 만일 프로세서(10)이 특별 전력 모드에서 동작한다면, 명령어 버퍼(70)은 프로세서(10)의 한개의 사이클 동안 64-비트 버스(50)을 통해 명령어 캐쉬(14)로부터 한개의 32-비트 명령어를 입력할 수 있다. 이러한 방법으로, 예를 들어, 명령어 캐쉬(14)의 128개의 센스 증폭기 (32 비트/웨이 x 4웨이 x 1 감지 증폭기/비트)가 프로세서(10)의 각각의 사이클 동안 활성 상태에 (반면, 명령어 캐쉬(14)의 다른 128개의 센스 증폭기는 디스에이블된 상태에) 있게 된다. (전-전력 모드에서와 같이) 256개의 센스 증폭기를 활성화시키는 대신에 (특별 전력 모드에서) 단지 128개의 센스 증폭기만을 활성화시킴으로써, 프로세서(10)의 평균 전력 소비는 감소하는데, 이는 프로세서(10)의 사이클당 센스 증폭기의 단지 1/2만이 활성화되기 때문이다.
소프트웨어 이벤트에 응답하여 프로세서(10)이 특별 "절전" 모드로 들어가면, 전력이 부가적으로 감소하는데, 이는 이 경우 프로세서(10)이 이하에서 도 6과 관련하여 논의되는 바와 같이 명령어 캐쉬(14) 및 데이터 캐쉬(16) 내의 "웨이"의 수를 감소시키기 때문이다. 예를 들면, 만일 프로세서(10)이 소프트웨어 이벤트에 응답하여 명령어 캐쉬(14) 내의 "웨이"의 수를 4웨이 대신 2웨이로 감소시키면, 프로세서(10)이 특별 전력 모드에서 동작하고 있는 중에, 상술한 프로세서(10)의 두 개의 사이클 각각 동안 명령어 캐쉬(14)의 64개의 센스 증폭기 (32 비트/웨이 x 2웨이 x 1 센스 증폭기/비트)가 활성 상태에 (반면, 명령어 캐쉬(14)의 다른 192개의 센스 증폭기는 디스에이블 상태에) 있게 된다. (전-전력 모드에서와 같이) 256개의 센스 증폭기를 활성화시키는 대신에 (만일 프로세서(10)이 소프트웨어 이벤트에 응답하여 특별 "절전" 모드로 들어가면) 단지 64개의 센스 증폭기를 활성화시킴으로써, 프로세서(10)의 평균 전력 소비는 감소하는데, 이는 프로세서(10)의 사이클당 센스 증폭기의 단지 1/4만이 활성화되기 때문이다.
도 4는 예시적인 실시예에서의 시퀀서 유니트(18)의 리오더 버퍼(reorder buffer)(76)의 개념도이다. 도 4에 도시된 바와 같이, 리오더 버퍼(76)은 각각 버퍼 번호(0-4)가 라벨링된 5개의 엔트리를 갖고 있다. 각 엔트리는 5개의 기본 필드(primary fields), 즉 "명령어형(instruction type)" 필드, "GPR 목적지수(number-of-GPR destination)" 필드, "FPR 목적지수(number-of-FPR destination)" 필드, "종료(finished)" 필드, "예외" 필드를 갖고 있다.
다시 도 2를 참조하면, 디스패치 논리(74)가 명령어를 실행 유니트로 디스패치할 때, 시퀀서 유니트(18)은 디스패치된 명령어를 리오더 버퍼(76)의 연관 엔트리로 할당한다. 시퀀서 유니트(18)은 리오더 버퍼(76)의 엔트리를 디스패치된 명령어로 선입 선출 방식에 기초하여(on a first-in first-out basis) 회전식으로(in a rotating manner) 할당 (또는 "연관")하는데, 먼저 시퀀서 유니트(18)은 엔트리(0)을 할당하고, 이어서 순차적으로 엔트리(1-4)를 할당하며, 그 후 다시 엔트리(0)을 할당한다. 디스패치된 명령어가 리오더 버퍼(76)의 연관 엔트리로 할당될 때, 디스패치 논리(74)는, 리오더 버퍼(76)의 연관 엔트리의 다양한 필드 및 서브필드에 저장하기 위한, 디스패치된 명령어에 관한 정보를 출력한다.
예를 들면, 도 4의 엔트리(1)에서, 리오더 버퍼(76)은 명령어가 FXU(22)로 디스패치되는 것을 표시한다. 예시적인 실시예의 다른 특징에 따르면, 엔트리(1)은 또한 디스패치된 명령어가 하나의 GPR 목적지 레지스터를 갖는다는 것 ("GPR 목적지수" = 1), 0개의 FPR 목적지 레지스터를 갖는다는 것 ("FPR 목적지수" = 0), 아직 종료되지 않았다는 것("종료" = 0), 아직 예외를 야기하지 않았다는 것("예외" = 0)을 표시한다.
실행 유니트가 디스패치된 명령어를 실행할 때, 실행 유니트는 리오더 버퍼(76) 내의 명령어 연관 엔트리를 수정한다. 특히, 디스패치된 명령어의 실행 종료에 응답하여, 실행 유니트는 엔트리의 "종료" 필드를 ("종료" = 1이 되도록) 수정한다. 만일 실행 유니트가 디스패치된 명령어를 실행하는 도중에 예외가 발생하면, 실행 유니트는 "예외" 필드를 ("예외" = 1이 되도록) 수정한다.
도 4는 할당 포인터(allocation pointer)(173)과 완료 포인터(completion pointer)(175)를 도시한다. 프로세서(10)은 이러한 포인터들을 리오더 버퍼(76)으로부터의 판독과 리오더 버퍼(76)으로의 기록을 제어하기 위해 유지한다(maintains). 프로세서(10)은 리오더 버퍼 엔트리가 특정 명령어에 할당 (또는 "연관")되었는지를 표시하기 위해 할당 포인터(173)을 유지한다. 도 4에 도시된 바와 같이, 할당 포인터(173)은 리오더 버퍼 엔트리(3)을 가리키고, 이에 의해 리오더 버퍼 엔트리(3)이 명령어 할당을 위해 사용될 수 있는 다음 리오더 버퍼 엔트리라는 것을 표시한다.
또한, 프로세서(10)은 (특정 명령어로 이전에 할당된 리오더 버퍼 엔트리에 대해) 특정 명령어가 다음의 조건을 만족하는지를 표시하기 위해 완료 포인터(175)를 유지한다:
조건 1 - (명령어가 디스패치되는) 실행 유니트가 명령어의 실행을 종료;
조건 2 - 명령어 처리의 어떠한 스테이지와 관련해서도 예외가 생기지 않음;
조건 3 - 이전에 디스패치된 어떠한 명령어도 조건 1과 조건 2를 만족함.
도 4에 도시된 바와 같이, 완료 포인터(175)는 리오더 버퍼 엔트리(1)을 가리키는데, 이에 의해 리오더 버퍼 엔트리(1)이 조건 1, 2 및 3을 만족할 수 있는 다음 리오더 버퍼 엔트리라는 것을 표시한다. 따라서, "유효(valid)" 리오더 버퍼 엔트리는, 완료 포인터(175)에 의해 지시되는 리오더 버퍼 엔트리와, 할당 포인터(173)에 의해 지시되는 리오더 버퍼 엔트리에 선행하는 그의 후속 리오더 버퍼 엔트리(subsequent reorder buffer entries)로서 정의된다.
다시 도 2를 참조하면, 리오더 버퍼(76)의 엔트리는 시퀀서 유니트(18)의 예외 논리(82)와 완료 논리(80)에 의해 판독된다. 리오더 버퍼(76)의 "예외" 필드에 응답하여, 예외 논리(82)는 디스패치된 명령어를 실행하는 도중에 발생한 예외를 처리한다. 리오더 버퍼(76)의 "예외" 필드와 "종료" 필드에 응답하여, 완료 논리(80)은 디스패치 논리(74)와 리오더 버퍼(76)으로 신호를 출력한다. 이러한 신호를 통해, 완료 논리(80)은 프로그래밍된 순차의 순서대로 명령어의 "완료"를 표시한다. 완료 논리(80)은 만일 다음 조건을 만족하면 명령어의 "완료"를 표시한다:
조건 1 - (명령어가 디스패치되는) 실행 유니트가 명령어의 실행을 종료함 (리오더 버퍼(76)의 명령어 연관 엔트리에서 "종료" = 1);
조건 2 - 명령어 처리의 어떤 스테이지와 관련해서도 예외가 생기지 않음 (리오더 버퍼(76)의 명령어 연관 엔트리에서 "예외" = 0);
조건 3 - 이전에 디스패치된 어떠한 명령어도 조건 1과 조건 2를 만족함.
리오더 버퍼(76) 내의 정보에 응답하여, 디스패치 논리(74)는 디스패치되어야 할 부가 명령어의 적합한 개수를 판단한다.
도 5는 부동 소수점 리네임 버퍼(38)의 개념도이다. 도 5에 도시된 바와 같이, 리네임 버퍼(38)은 각각 버퍼 번호(0-3)으로 라벨링된 4개의 리네임 버퍼를 포함한다. 시퀀서 유니트(18)은 리네임 버퍼(0-3)을 디스패치된 명령어로 선입 선출 방식에 기초하여 회전식으로 할당하는데, 시퀀서 유니트(18)은 먼저 리네임 버퍼(0)을 할당하고, 이어서 리네임 버퍼(1-3)을 순차적으로 할당하며, 그 후 리네임 버퍼(0)을 다시 할당한다.
도 5를 참조하면, 디스패치 논리(74) (도 2)에 의해 디스패치되는 명령어를 위한 목적지 오퍼런드 정보를 저장하기 위해 리네임 버퍼(2)가 할당된다. 도 5는 할당 포인터(180), 라이트백 포인터(182), 및 완료 포인터(184)를 도시한다. 프로세서(10)은 리네임 버퍼(38)로부터의 판독과 리네임 버퍼(38)로의 기록을 제어하기 위해 이러한 포인터들을 유지한다. 프로세서(10)은 리네임 버퍼가 특정 명령어에 할당되었는지를 표시하기 위해 할당 포인터(180)을 유지한다. 도 5에 도시된 바와 같이, 할당 포인터(180)은 리네임 버퍼(3)을 가리키며, 이에 의해 리네임 버퍼(3)이 명령어 할당을 위해 사용될 수 있는 다음 리네임 버퍼라는 것을 표시한다.
프로세서(10)은 또한 (이전에 특정 명령어로 할당된) 리네임 버퍼가 또 다른 명령어로의 재할당을 위해 사용될 수 있는지를 표시하기 위해 라이트백 포인터(182)를 유지한다. 도 5에 도시된 바와 같이, 라이트백 포인터(182)는 리네임 버퍼(2)를 가리키는데, 이에 의해 리네임 버퍼(2)가 그로부터 프로세서(10)이 (도 5의 리네임 버퍼의 "레지스터 번호" 필드에서 특정된) FPRs(36) 중 하나로 (도 5의 리네임 버퍼의 "정보" 필드에 저장된 것과 같은) 목적지 오퍼런드 정보를 카피할 다음 리네임 버퍼라는 것을 표시한다.
따라서, 프로세서(10)은 프로세서(10)이 리네임 버퍼로부터 특정 명령어의 결과 (목적지 오퍼런드 정보)를 구조 레지스터 내에 저장하기 위해 카피함에 응답하여 라이트백 포인터(182)를 (이전에 특정 명령어에 할당된 리네임 버퍼를 지나서) 전진시킨다( advances). 이러한 방법으로, 프로세서(10)은 프로세서(10)이 구조 레지스터로 결과를 카피할 때까지 특정 명령어의 결과 (목적지 오퍼런드 정보)를 저장하기 위해 할당된 리네임 버퍼를 예약한다.
또한, 프로세서(10)은 (이전에 특정 명령어로 할당된 리네임 버퍼에 대해) 특정 명령어가 다음의 조건을 만족하는지를 표시하기 위해 완료 포인터(184)를 유지한다:
조건 1 - (명령어가 디스패치되는) 실행 유니트가 명령어의 실행을 종료함;
조건 2 - 명령어 처리의 어떤 스테이지와 관련해서도 예외가 생기지 않음;
조건 3 - 이전에 디스패치된 어떠한 명령어도 조건 1과 조건 2를 만족함.
도 5에 도시된 바와 같이, 완료 표인터(184)는 리네임 버퍼(2)를 가리키는데, 이에 의해 리네임 버퍼(2)가 조건 1, 2 및 3을 만족할 수 있는 다음 리네임 버퍼라는 것을 표시한다. 예시적인 실시예에서, 프로세서(10)은 명령어의 결과가 리네임 버퍼로부터 구조 레지스터 내에 저장되기 위해 카피되는지 여부에 관계없이 완료 포인터(184)를 유지한다.
따라서, "리네임 엔트리"는, 완료 포인터(184)에 의해 지시되는 리네임 버퍼와, 할당 포인터(180)에 의해 지시되는 리네임 버퍼에 선행하는 그의 후속 리네임 버퍼로서 정의된다. "라이트백 엔트리"는, 라이트백 포인터(182)에 의해 지시되는 리네임 버퍼와, 완표 포인터(184)에 의해 지시되는 리네임 버퍼에 선행하는 그의 후속 리네임 버퍼로서 정의된다. 라이트백 엔트리는 "완료"는 되었지만, 예를 들면 구조 레지스터로의 기록단(write ports)이 사용 불가능한 것에 의해 그 결과가 리네임 버퍼로부터 구조 레지스터로 아직 카피되지 않은 명령어의 결과를 저장한다.
개념적으로, 라이트백 엔트리는 리네임 엔트리와 구조 레지스터 사이에 위치한다. 그 장점으로서, 만일 완료 스테이지에서 라이트백단(writeback port)이 사용 가능하면 결과는 라이트백 엔트리를 우회하여(bypass) 구조 레지스터로 직접 기록될 수 있다. 더욱이, 리네임 엔트리와 같이, 실행 유니트가 정보와 연관된 구조 레지스터를 특정하는 명령어를 실행하는 경우에는 프로세서(10)은 라이트백 엔트리가 실행 유니트로 정보를 출력하도록 작동한다.
FPU(30)는 단일-정밀도(single-precision) (즉, 32-비트) 및 이중-정밀도(double-precision) (즉, 64-비트) 양자에 대해 IEEE 754를 완전히 따른다. 따라서, 이중-정밀도 작동을 지원하기 위해, 도 5의 각 리네임 버퍼의 "정보" 필드는 64-비트이다. 다시 도 1을 참조하면, 만일 프로세서(10)이 전-전력 모드에서 동작하면, LSU(28)은 프로세서(10)의 한개의 사이클 동안 (FPRs(36)에 지시되는 "로드" 명령어를 실행하는 LSU(28)에 응답하여) 데이터 캐쉬(16)으로부터 (리네임 버퍼(38)의) 단일 리네임 버퍼 "정보" 필드로 64 비트의 정보 (즉, 사이클당 64 비트의 정보)를 로딩한다. 이러한 방법으로, 예를 들어, 데이터 캐쉬(16)이 4웨이 집함-연관 캐쉬이므로, 프로세서(10)의 그러한 한개의 사이클 동안 데이터 캐쉬(16)의 최소한 256개의 센스 증폭기 (64 비트/웨이 x 4웨이 x 1 센스 증폭기)가 활성 상태에 있게 된다. 이러한 센스 증폭기의 활성화는 프로세서(10)의 평균 전력 소비에 기여한다.
비교해 보면, 만일 프로세서(10)이 특별 전력 모드에서 동작하면, LSU(28)은 프로세서(10)의 두 개의 사이클 (즉, 사이클당 32 비트의 정보) 동안 (FPRs(36)로 향하는 "로드" 명령어를 실행하는 LSU(28)에 응답하여) 데이터 캐쉬(16)으로부터 (리네임 버퍼(38)의) 단일 리네임 버퍼 "정보" 필드로 64 비트의 정보를 로딩한다. 이러한 방법으로, 예를 들어, 데이터 캐쉬(16)의 128개의 센스 증폭기 (32 비트/웨이 x 4웨이 x 1 감지 증폭기/비트)가 프로세서(10)의 이러한 두 개의 사이클 각각 동안 활성 상태에 (반면, 데이터 캐쉬(16)의 다른 128개의 센스 증폭기는 디스에이블된 상태에) 있게 된다. (전-전력 모드에서와 같이) 256개의 센스 증폭기를 활성화시키는 대신에 (특별 전력 모드에서) 단지 128개의 센스 증폭기를 활성화시킴으로써, 프로세서(10)의 평균 전력 소비는 감소하는데, 이는 프로세서(10)의 사이클당 센스 증폭기의 단지 1/2만이 활성화되기 때문이다.
소프트웨어 이벤트에 응답하여 프로세서(10)이 특별 "절전" 모드로 들어가면, 전력이 부가적으로 감소하는데, 이는 이 경우 프로세서(10)이 이하에서 도 6과 관련하여 논의되는 바와 같이 명령어 캐쉬(14) 및 데이터 캐쉬(16) 내의 "웨이"의 수를 감소시키기 때문이다. 예를 들면, 만일 프로세서(10)이 소프트웨어 이벤트에 응답하여 데이터 캐쉬(16) 내의 "웨이"의 수를 4웨이 대신 2웨이로 감소시키면, 프로세서(10)이 특별 전력 모드에서 동작하고 있는 중에, 상술한 프로세서(10)의 두 개의 사이클 각각 동안 데이터 캐쉬(16)의 64개의 센스 증폭기 (32 비트/웨이 x 2웨이 x 1 센스 증폭기/비트)가 활성 상태에 (반면, 데이터 캐쉬(16)의 다른 192개의 센스 증폭기는 디스에이블 상태에) 있게 된다. (전-전력 모드에서와 같이) 256개의 센스 증폭기를 활성화시키는 대신에 (만일 프로세서(10)이 소프트웨어 이벤트에 응답하여 특별 "절전" 모드로 들어가면) 단지 64개의 센스 증폭기를 활성화시킴으로써, 프로세서(10)의 평균 전력 소비는 감소하는데, 이는 프로세서(10)의 사이클당 센스 증폭기의 단지 1/4만이 활성화되기 때문이다.
도 6은 명령어 캐쉬(14)의 블록도이다. 도 6의 명령어 캐쉬(14)는 마찬가지로 데이터 캐쉬(16)을 나타낸다. 명령어 캐쉬(14) 및 데이터 캐쉬(16)의 각각은 16-킬로바이트, 4"웨이" 집합-연관 캐쉬이다. 명령어 캐쉬(14) 및 데이터 캐쉬(16)은 물리 (즉 "실제") 어드레스에 응답하여 어드레싱된다.
따라서, 도 6은 실효 어드레스(effective addresses)를 연관 물리 어드레스로 변환하기 위한 메모리 관리 유니트 ("MMU")를 포함하는 제어 논리(100)을 도시한다. 예를 들면, 실효 어드레스는 시퀀서 유니트(18)의 페치 논리(71) (도 2)로부터 수신된다. 예시적인 실시예에 있어서, 실효 어드레스의 20내지 211비트는 연관 물리 어드레스로의 변환에 의해 변하지 않으므로, 실효 어드레스의 20내지 211비트는 연관 물리 어드레스의 20내지 211비트와 동일한 디지털 논리값을 갖는다.
명령어 캐쉬(14)와 데이터 캐쉬(16)의 각각은 도 6에 도시된 바와 같이 128개의 합동 클래스(congruence classes) (즉, 집합)로 논리적으로 배열된다. 예를 들면, 명령어 캐쉬(14)에 대해, 각각의 집합은 각각 명령어 캐쉬(14) 내에 미리 할당된 4개의 라인의 연관 그룹 (즉, 4"웨이", 블록(0-3))을 갖는다. 각 라인은 각각의 어드레스 택(address tag), (예를 들면, "유효" 비트를 포함하는) 각각의 상태 비트(state bits), 및 각각의 8 단어 정보 그룹(a respective group of eight words of information)을 저장할 수 있다. 각 단어는 4 바이트 (즉, 32 비트)를 갖는다.
따라서, 집합(0)의 블록(3)은 어드레스 택30, 상태 비트 스테이트30, 및 단어 W30내지 W37을 저장할 수 있다. 마찬가지로, 집합(x)의 각 블록(y)는 어드레스 택xy, 상태 비트 스테이트xy, 및 단어 Wxy0내지 Wxy7을 저장할 수 있는데, 여기서 x는 0에서 127까지의 범위를 갖는 변수 정수 집합 번호(variable integer set number)이고, y는 0에서 3까지의 범위를 갖는 변수 정수 블록 번호(variable integer block number)이다.
집합은 물리 어드레스 비트 25내지 211에 의해 특정된다. 따라서, 각 집합은 복수의 어드레스를 포함하는데, 모든 집합은 동일한 7개의 물리 어드레스 비트 25내지 211을 공유한다. 따라서, 어떤 순간에 있어서도, 명령어 캐쉬(14)는 명령어 캐쉬(14) 내의 집합(x)의 4개의 라인의 연관 그룹에 저장되어 있는 어드레스 택x0내지 어드레스 택X3에 의해 특정되는 바와 같이, 특정 집합(x)에 속하는 최대 4개까지의 물리 어드레스에 대한 정보를 저장한다.
예를 들면, (a) 집합(0)의 블록(0)에서, 명령어 캐쉬(14)는 제1 어드레스 비트 212내지 231을 포함하는 어드레스 택0을 저장할 수 있고, (b) 집합(0)의 블록(1)에서, 명령어 캐쉬(14)는 제2 어드레스 비트 212내지 231을 포함하는 어드레스 택1을 저장할 수 있으며, (c) 집합(0)의 블록(2)에서, 명령어 캐쉬(14)는 제3 어드레스 비트 212내지 231을 포함하는 어드레스 택2을 저장할 수 있고, (d) 집합(0)의 블록(3)에서, 명령어 캐쉬(14)는 제4 어드레스 비트 212내지 231을 포함하는 어드레스 택3을 저장할 수 있다. 따라서, 각 어드레스 택xy는 20 비트를 갖는다.
도 7은 도 6의 명령어 캐쉬(14)의, 일반적으로 121으로 표시되는, 센스 증폭 회로(sense amplification circuitry)의 개략적인 전기 회로도이다. 센스 증폭 회로(121)은 도 6의 센스 증폭기(104, 106 및 108a-h)의 센스 증폭기를 나타낸다. 따라서, 각 어드레스 택xy가 20 비트를 가지므로, 센스 증폭기(104)는 각각이 본질적으로 회로(121)과 동일한 80개의 센스 증폭기 (20개의 센스 증폭기 곱하기 4개의 블록(0-3))을 포함한다.
유사하게, 각 단어 Wxyz(여기서 z는 0에서 7의 정수 단어 번호(integer word number)임) 는 32 비트를 가지므로, 센스 증폭기(108a-h)의 각각은 각각 본질적으로 회로(121)과 동일한 128개의 센스 증폭기 (32개의 센스 증폭기 곱하기 4개의 블록(0-3)) 각각의 그룹을 갖게 되고, 따라서 센스 증폭기(108a-h)는 모두 합하여 1024개의 센스 증폭기 (128개의 센스 증폭기 곱하기 8개의 단어(0-7))를 갖게 된다. 마찬가지로, 센스 증폭기(106) 내의 센스 증폭기의 개수는 스테이트xy당 비트수의 네배와 같고, 이러한 센스 증폭기의 각각은 본질적으로 회로(121)과 동일하다.
20-비트 어드레스 택xy의 각각은 20개의 동적 랜덤 액세스 메모리 ("DRAM") 셀의 각각의 그룹을 포함하고, 각 DRAM 셀은 디지털 정보 각각의 한개의 비트를 저장할 수 있다. 유사하게, 각각의 32-비트 단어 Wxyz는 32개의 DRAM 셀 각각의 그룹을 포함하고, 각각의 DRAM 셀은 디지털 정보 각각의 한개의 비트를 저장할 수 있다. 마찬가지로, 각각의 스테이트xy내의 DRAM 셀의 개수는 스테이트xy당 비트수와 동일하다.
센스 증폭기(104)의 80개의 센스 증폭기는 (1) 어드레스 택x0으로 표기되는 (여기서 x는 집합 번호임) 20개의 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(104)의) 20개의 센스 증폭기의 제1 그룹에 연결되고, (2) 어드레스 택x1으로 표기되는 20개의 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(104)의) 센스 증폭기의 제2 그룹으로 각각 연결되고, (3) 어드레스 택x2으로 표기되는 20개의 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(104)의) 센스 증폭기의 제3 그룹으로 각각 연결되고, (4) 어드레스 택x3으로 표기되는 20개의 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(104)의) 센스 증폭기의 제4 그룹으로 각각 연결되도록 구성된다.
따라서, (센스 증폭기(104)의) 각각의 센스 증폭기는 어드레스 택xy의 2q비트에 대한 디지털 정보를 저장하는 128개의 DRAM 셀 각각의 패밀리(family)에 연결되는데, 여기서: (a) q는 0에서 19까지의 상수 (즉, 패밀리의 모든 DRAM 셀에 공통인) 비트 번호이고, (b) x는 0에서 127까지의 변수 (즉, 패밀리의 모든 DRAM 셀에 대하여 상이한) 집합 번호이고, (c) y는 0에서 3의 상수 블록 번호이다.
도 7에 도시된 바와 같이, 각각의 센스 증폭기 (회로(121))은 인에이블 라인을 갖는다. 도 6을 참조하면, 인에이블 라인(102)는 총 4개의 어드레스 택 인에이블 라인 (즉, 4 블록 x 블록당 1 어드레스 택 인에이블 라인)을 포함한다. 그러한 어드레스 택 인에이블 라인 각각은 제어 논리(100)에서 센스 증폭기(104)의 4개의 그룹 각각으로 연결되어 있고, 여기서 각각의 그룹은 어드레스 택xy에 대한 디지털 정보를 저장하는 DRAM 셀의 패밀리에 연결되어 있는데, 여기서 (a) x는 0에서 127의 변수 집합 번호이고, (b) y는 0에서 3의 상수 블록 번호이다.
센스 증폭기(108a-h)의 1024개의 센스 증폭기는 (1) Wx0z으로 표기되는 256개의 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(108a-h)의) 256개의 센스 증폭기의 제1 그룹을 통해 버스(120a)를 경유하여 멀티플렉서(114a)에 각각 연결되고, (2) Wx1z으로 표기되는 256개의 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(108a-h)의) 256개의 센스 증폭기의 제2 그룹을 통해 버스(120b)를 경유하여 멀티플렉서(114b)에 각각 연결되고, (3) Wx2z으로 표기되는 256개의 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(108a-h)의) 256개의 센스 증폭기의 제3 그룹을 통해 버스(120c)를 경유하여 멀티플렉서(114c)에 각각 연결되고, (4) Wx3z으로 표기되는 256개의 DRAM 셀의 128개의 집합의 각각이 (센스 증폭기(108a-h)의) 256개의 센스 증폭기의 제4 그룹을 통해 버스(120d)를 경유하여 멀티플렉서(114d)에 각각 연결된다.
따라서, (센스 증폭기(108a-h)의) 각각의 센스 증폭기는 단어 Wxyz의 비트2q에 대한 디지털 정보를 저장하는 128개의 DRAM 셀의 각각의 패밀리에 연결되는데, 여기서: (a) q는 0에서 31까지의 상수 비트 번호이고, (b) x는 0에서 127까지의 변수 집합 번호이고, (c) y는 0에서 3의 상수 블록 번호이고, (d) s는 0에서 7의 상수 단어 번호이다.
인에이블 라인(102)는 총 32개의 단어 인에이블 라인 (즉 4 블록 x 8 단어/블록 x 단어당 1 단어 인에이블 라인)을 포함한다. 각각의 그러한 단어 인에이블 라인은 제어 논리(100)에서 센스 증폭기(108a-h)의 4개의 그룹 각각의 서브그룹으로 연결되고, 여기서 각각의 서브그룹은 단어 Wxyz에 대한 디지털 정보를 저장하는 DRAM 셀의 패밀리에 연결되어 있는데, 여기서 (a) x는 0에서 127까지의 변수 집합 번호이고, (b) y는 0에서 3의 상수 블록 번호이고, (c) z는 0에서 7의 상수 단어 번호이다.
마찬가지로, 센스 증폭기(106)은 (1) 스테이트x0으로 표기되는 (여기서 x는 집합 번호임) DRAM 셀의 128개의 집합 각각이 (센스 증폭기(106)의) 센스 증폭기의 제1 그룹에 연결되고, (2) 스테이트x1으로 표기되는 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(106)의) 센스 증폭기의 제2 그룹으로 각각 연결되고, (3) 스테이트x2으로 표기되는 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(106)의) 센스 증폭기의 제3 그룹으로 각각 연결되고, (4) 스테이트x3으로 표기되는 DRAM 셀의 128개의 집합 각각이 (센스 증폭기(106)의) 센스 증폭기의 제4 그룹으로 각각 연결되도록 구성된다.
따라서, (센스 증폭기(106)의) 각각의 센스 증폭기는 스테이트xy의 비트2q에 대한 디지털 정보를 저장하는 128개의 DRAM 셀의 각각의 패밀리에 연결되는데, 여기서: (a) q는 상수 비트 번호이고, (b) x는 0에서 127까지의 변수 집합 번호이고, (c) y는 0에서 3의 상수 블록 번호이다.
인에이블 라인(102)는 총 4개의 단어 인에이블 라인 (즉, 4 블록 x 블록당 1 상태 인에이블 라인)을 포함한다. 각각의 그러한 단어 인에이블 라인은 제어 논리(100)에서 센스 증폭기(106)의 4개의 그룹 각각으로 연결되고, 여기서 각각의 그룹은 스테이트xy에 대한 디지털 정보를 저장하는 DRAM 셀의 패밀리에 연결되어 있는데, 여기서 (a) x는 0에서 127까지의 변수 집합 번호이고, (b) y는 0에서 3의 상수 블록 번호이다.
도 7을 참조하면, 각각의 센스 증폭기 (회로(121))은 그의 128개의 결합된 DRAM 셀의 하나로부터 라인 D 및 D을 통해 상이한 전압을 입력하는데, 여기서 하나의 DRAM 셀은 집합 번호에 따라 (즉, 이하에서 논의되는 어드레스 비트 25내지 211에 따라) 제어 논리(100)에서 출력되는 제어 라인(124)의 논리 상태에 응답하여 선택된다. 만일 인에이블이 논리 1 상태를 가지면 회로(121)은 활성화되고, 그 밖의 경우에는 회로(121)이 활성화되지 않는다. 만일 회로(121)이 활성화되지 않으면, 프로세서(10)은 더 적은 전력을 소비하게되고, 출력 노드 아웃(OUT)은 높은 임피던스 상태를 갖는다. 만일 회로(121)이 활성화되어 있는 동안 D가 D보다 큰 전압을 가지면, OUT은 Vdd (즉, 논리 1 상태)에 실질적으로 동일한 전압을 갖는다. 비교해 보면, 회로(121)이 활성화되어 있는 동안 D가 D보다 작은 전압을 가지면, OUT은 GND (즉, 논리 0 상태)에 실질적으로 동일한 전압을 갖는다.
버스(110)을 통해, 어드레스 택 정보는 제어 논리(100)과 어드레스 택xy 사이에서 전달되고, 상태 정보는 제어 논리(100)과 스테이트xy 사이에서 전달된다. 버스(116, 118 및 120a-d)를 통해, 명령어 정보 (또는 데이터 캐쉬(16)의 경우의 데이터 정보)가 제어 논리(100)과 Wxyz사이에서 전달된다.
예시 명령어 페치 동작(an example instruction fetch operation) 중에, 제어 논리(100)은 시퀀서 유니트(18)로부터 실효 어드레스를 수신한다. 제어 논리(100)은 (이하에서 논의되는 바와 같이) 수신된 실효 어드레스의 비트 25내지 211에 응답하여 특정 집합(x)를 판단하고, 제어 논리(100)은 집합(x)의 블록(0-3)으로부터 정보를 입력한다. 특히, 버스(110)을 통해, 제어 논리(100)은 네 개의 어드레스 택, 어드레스 택x0, 어드레스 택x1,어드레스 택x2, 어드레스 택x3과 이들 각각의 4개의 연관 상태, 스테이트x0, 스테이트x1, 스테이트x2, 및 스테이트x3을 판독한다.
더우기, 제어 논리(100)은 수신된 실효 어드레스의 비트 23및 24를 제어 라인(122)를 통해 멀티플렉서(114a-d)로 출력한다. 제어 라인(122)의 논리 상태에 응답하여, 멀티플렉서(114a)는 집합(x)의 블록(0)에서 선택된 이중-단어(double-word)를 버스(118)로 출력한다. 예를 들면, 이중 단어는 (a) Wx00및 Wx01로 표기되는 DRAM 셀, (b) Wx02및 Wx03로 표기되는 DRAM 셀, (c) Wx04및 Wx05로 표기되는 DRAM 셀, 또는 (d) Wx06및 Wx07로 표기되는 DRAM 셀 중에서 선택된다.
마찬가지로, 제어 라인(122)의 논리 상태에 응답하여, 멀티플렉서(114b)는 집합(x)의 블록(1)에서 선택된 이중-단어를 버스(118)로 출력하고, 멀티플렉서(114c)는 집합(x)의 블록(2)에서 선택된 이중-단어를 버스(118)로 출력하고, 멀티플렉서(114d)는 집합(x)의 블록(3)에서 선택된 이중-단어를 버스(118)로 출력한다. 버스(118)을 통해, 멀티플렉서(112)는 멀티플렉서(114a-d)로부터 4개의 이중 단어를 모두 수신한다.
제어 논리(100)의 MMU는 수신된 실효 어드레스를 특정 물리 어드레스로 변환한다. 제어 논리(100)은 특정 물리 어드레스의 비트 212내지 231을 버스(110)으로부터의 실효 어드레스 택xy와 비교한다. 어드레스 택xy의 유효성(validity)은 어드레스 택xy와 연관된 스테이트xy내의 "유효" 비트의 디지털 논리값에 의해 표시된다. 이러한 비교에 응답하여, 만일 특정 물리 어드레스의 비트 212내지 231가 어드레스 택xy와 정합하면(match), 제어 논리(100)은 적합한 제어 신호를 제어 라인(126)을 통해 멀티플렉서(112)로 출력하고, 멀티플렉서(112)는 (a) 만일 어드레스 택x0와 정합하면 멀티플렉서(114a)로부터의 이중-단어를, (b) 만일 어드레스 택x1과 정합하면 멀티플렉서(114b)로부터의 이중-단어를, (c) 만일 어드레스 택x2와 정합하면 멀티플렉서(114c)로부터의 이중-단어를, 또는 (d) 만일 어드레스 택x3과 정합하면 멀티플렉서(114d)로부터의 이중-단어를 (버스(116)을 통해 제어 논리(100)으로) 출력한다.
따라서, 제어 논리(100)은 멀티플렉서(112)로부터 이중-단어를 입력한다. 만일 프로세서(10)이 전-전력 모드에서 동작하면, 제어 논리(100)은 예시 명령어 페치 동작의 일부로서 시퀀서 유니트(18)로 멀티플렉서(112)로부터의 이중-단어를 출력한다.
비교해 보면, 만일 프로세서(10)이 특별 전력 모드에서 동작하면, 제어 논리(100)은 단지 한개의 단어 (즉, 이중-단어의 반)를 멀티플렉서(112)로부터 시퀀서 유니트(18)로 출력한다. 제어 논리(100)은 실효 어드레스 비트 22에 응답하여 한개의 단어를 선택한다. 이는, 만일 프로세서(10)이 특별 전력 모드에서 동작하며, 명령어 버퍼(70)(도 3)이 프로세서(10)의 한개의 사이클 동안 64-비트 버스(50)을 통해 명령어 캐쉬(14)로부터 (최대 2개의 32-비트 명령어 대신에) 한개의 32-비트 명령어를 입력할 수 있기 때문이다.
특별 전력 모드에서, 제어 논리(100)은 인에이블 라인(102) 상에 적합한 신호를 출력하여, 센스 증폭기(108a-h)의 단지 선택된 서브그룹만이 활성화되고 센스 증폭기(108a-h)의 선택되지 않은 서브그룹은 디스에이블되게 한다. 선택된 서브그룹은 단어 Wxyz에 대한 디지털 정보를 저장하는 DRAM에 연결된 것들인데, 여기서 (a) x는 0에서 127의 변수 집합 번호이고, (b) y는 0에서 3의 변수 블록 번호이고, (c) z는 유효 어드레스 비트 22내지 24에 응답하여 선택된 0에서 7의 상수 단어 번호이다. 이러한 방법으로, 프로세서(10)은 프로세서(10)의 사이클당, 명령어 캐쉬(14)의 (전-전력 모드에 비하여) 더 적은 센스 증폭기를 활성화시키므로, 명령어 캐쉬(14) (그리고 프로세서(10))의 평균 전력 소비는 감소한다.
만일 프로세서(10)이 소프트웨어 이벤트 (즉, SPS가 논리 1 상태를 가짐)에 응답하여 특별 "절전" 모드로 들어가면 전력이 부가적으로 감소하는데, 이는 이 경우 제어 논리(100)이 명령어 캐쉬(14) 내의 "웨이"의 수를 4웨이 대신에 2웨이로 감소시키기 때문이다. 따라서, 프로세서(10)이 특별 "절전" 모드에서 동작하는 동안, 제어 논리(100)은 (스테이트x2및 스테이트x3내의 "유효" 비트의 디지털 논리값에 의해 각각 표시되듯이) 어드레스 택x2및 어드레스 택x3가 유효하지 않고, 단지 (스테이트x0및 스테이트x1내의 "유효" 비트의 디지털 논리값에 의해 각각 표시되듯이) 어드레스 택x0및 어드레스 택x1만이 유효하도록 동작한다.
따라서, 이러한 상황에서의 명령어 페치 동작을 위해, 상기에서 도 2 및 도 3과 관련하여 논의된 바와 같이 256개의 센스 증폭기 (2 단어/웨이 x 4 바이트/단어x 8 비트/바이트 x 4 웨이 x 1 센스 증폭기/비트) 대신에 64개의 센스 증폭기 (1 단어/웨이 x 4 바이트/단어 x 8 비트/바이트 x 2 웨이 x 1 센스 증폭기/비트)가 활성화된다. 그 장점으로서, 이는 명령어 캐쉬(14) (및 프로세서(10))의 평균 전력 소비를 현저하게 감소시킨다.
마찬가지로, 만일 프로세서(10)이 소프트웨어 이벤트에 응답하여 특별 "절전" 모드로 들어가면, 프로세서(10)은 데이터 캐쉬(16) 내의 "웨이"의 수를 4웨이 대신에 2웨이로 감소시킨다. 따라서, 그러한 경우의 LSU(28) 부동 소수점 로드 동작에 대해서, 상기에서 도 5와 관련하여 논의된 바와 같이 256개의 센스 증폭기 (2 단어/웨이 x 4 바이트/단어 x 8 비트/바이트 x 4 웨이 x 1 센스 증폭기/비트) 대신에 64개의 센스 증폭기 (1 단어/웨이 x 4 바이트/단어 x 8 비트/바이트 x 2 웨이 x 1 센스 증폭기/비트)가 활성화된다. 그 장점으로서, 이는 데이터 캐쉬(16) (및 프로세서(10))의 평균 전력 소비를 현저하게 감소시킨다.
소프트웨어 이벤트는 SPS가 논리 0 상태에서 논리 1 상태로 전이할 때 발생한다. SPS는 SPRs(40)의 선정된 "HID0" 레지스터 비트로 향하는 제1 MTSPR 명령어를 실행하는 CFXU(26)에 응답하여 논리 1 상태로 전이한다. 제1 MTSPR 명령어는 SPS의 논리 1 상태를 특정한다.
제1 MTSPR 명령어 바로 직전에, 소프트웨어는 (프로세서(10)의 회로를 복잡하지 않게 하기 위해) "명령어 동기" ("ISYNC") 전에 오는 "동기" ("SYNC") 명령어를 특정하는 것이 유용하다. 제1 MTSPR 명령어 바로 뒤에, 소프트웨어는 또 다른 ISYNC 명령어를 특정하는 것이 유용하다.
상기에서 방금 논의한 바와 같이, 만일 프로세서(10)이 소프트웨어 이벤트에 응답하여 특별 "절전" 모드로 들어가면 (즉, SPS가 논리 1 상태를 가지면), 프로세서(10)은 명령어 캐쉬(14) 및 데이터 캐쉬(16) 내의 "웨이"의 수를 4웨이 대신 2웨이로 감소시킨다. 따라서, 제1 MTSPR 명령어에 선행하는 SYNC 명령어 바로 직전에, 소프트웨어가 "데이터 캐쉬 블록 플러쉬(Data Cache Block Flush)" ("DCBF") 및 "명령어 캐쉬 블록 무효(Instruction Cache Block Invalidate)" ("ICBI") 명령어를 특정하는 것이 중요하다.
유사하게, SPS는 SPRs(40)의 선정된 "HID0" 레지스터 비트를 향하는 제2 MTSPR 명령어를 실행하는 CFXU(26)에 응답하여 논리 2 상태로 전이한다. 제2 MTSPR 명령어는 SPS의 논리 0 상태를 특정한다. 제2 MTSPR 명령어 바로 직전에, 소프트웨어는 ISYNC 명령어 전에 오는 SYNC 명령어를 특정하는 것이 유용하다. 제2 MTSPR 명령어 바로 뒤에, 소프트웨어는 또 다른 ISYNC 명령어를 특정하는 것이 유용하다.
DCBF 명령어는 실효 어드레스를 특정한다. DCBF 명령어에 응답하여, 만일 데이터 캐쉬(16) 내의 어떠한 라인이 실효 어드레스에 정보 (예를 들면, 데이터)를 저장하면, 프로세서(10)은 스테이트xy의 라인 "유효" 비트를 소거함으로써 라인을 무효화시킨다. 더욱이, DCBF 명령어에 응답하여 만일 무효화된 라인이 (실효 어드레스에 응답하여 변환된) 동일한 물리 어드레스에서 메모리(39)(도 1) 내에 저장된 원래 정보에 비하여 프로세서(10)에 의하여 수정된 정보를 저장하면, 프로세서(10)은 데이터 캐쉬(16)에서 메모리(39) 내의 동일한 물리 어드레스로 수정된 정보를 카피함으로써 메모리(39)를 업데이트한다. SPS를 논리 1 상태로 전이하기 전에, 소프트웨어는, 데이터 캐쉬(16) 내의 128개의 모든 집합의 블록(2 및 3) 내에서 모든 라인이 무효화되도록, 충분한 DCBF 명령어를 특정하는 것이 중요하다.
ICBU 명령어는 실효 어드레스를 특정한다. ICBC 명령어에 응답하여, 만일 명령어 캐쉬(14) 내의 어떠한 라인이 실효 어드레스에 정보 (예를 들면, 명령어)를 저장하면, 프로세서(10)은 스테이트xy의 라인 "유효" 비트를 소거함으로써 라인을 무효화시킨다. SPS를 논리 1 상태로 전이하기 전에, 소프트웨어는, 명령어 캐쉬(14) 내의 128개의 모든 집합의 블록(2 및 3) 내에서 모든 라인이 무효화되도록, 충분한 ICBI 명령어를 특정하는 것이 중요하다.
SYNC 명령어는 프로세서(10)에 의해 실행되는 모든 명령어의 결과를 순서화하는 기능(ordering function)을 제공한다. SYNC 명령어를 실행하는 중에, 프로세서(10)이 어떠한 후속 명령어(subsequent instructions) (즉, 실행해야 할 명령어의 프로그래밍된 순차 내에서 SYNC 명령어의 다음에 오는 명령어)를 실행하기 전에, 프로세서는 적어도 우선 순위 명령어(prior instructions) (즉, 실행되야 할 명령어의 프로그래밍된 순차 내에서 SYNC 명령어에 선행하는 명령어)가 더 이상 예외를 야기하지 않을 정도로 ("터치 로드(touch load)" 동작 및 명령어 페치를 제외한) 모든 우선 순위 명령어가 완료되도록 하여야한다.
프로세서(10)이 SYNC 명령어를 완료할 때, 프로세서(10)은 SYNC 명령어에 우선하여 프로세서(10)에 의해 개시되는 모든 외부 액세스(external accesses)를 (메모리(39)에 액세스하는 모든 다른 메커니즘에 대하여) 수행할 것이다. 더욱이, 프로세서(10)은 그의 모든 로드를 완료하고, 우선 순위 명령어에 응답하여 개시된 캐쉬/버스 액티비티(cache/bus activites)를 저장할 것이다. 프로세서(10)은 모든 우선 순위 "데이타 캐쉬 블록 터치" ("DCBT") 및 "저장용 데이타 캐쉬 블록 터치" ("DCBTST") 명령어가 완료될 때까지, 적어도 어드레스 변환(address translation)을 통하여, 그러나 장치 버스(11) 상에서 이러한 DCBT 및 DCBTST 명령어가 완료되었는지 여부에 상관없이, SYNC 명령어의 완료를 지연한다. SYNC, DCBT 및 DCBTST 명령어는 상기에서 기술한 파워PC 603e RISK 마이크로프로세서 사용자 매뉴얼에서 더욱 자세히 기술된다.
ISYNC 명령어에 응답하여, 프로세서(10)은 프로세서(10)이 모든 우선 순위 명령어 (즉, 실행해야할 명령어의 프로그래밍된 순차 내의 선행하는 ISYNC 명령어)를 완료시킬 수 있을 때까지 기다린다. 그 후, 프로세서(10)은 모든 페치된 명령어를 버리고(discards), 장래의 명령어(future instructions)가 페치 (또는 리페치)되어 우선 순위 명령어에 의해 설정된 콘텍스트(context)에서 실행된다. 프로세서(10)에 의한 ISYNC 명령어의 실행은 다른 프로세서 또는 그들의 캐쉬에 영향을 끼치지 않는다.
ISYNC 명령어를 실행하는 중에, 프로세서(10)은 리페치 직렬화(refetch serialization)를 달성한다. 이러한 방법으로, 프로세서(10)이 어떠한 후속 명령어 (즉, 실행해야할 명령어의 프로그래밍된 순차 내에서 ISYNC 명령어의 뒤에 오는 명령어)를 실행하기 전에, 프로세서(10)은 (a) 적어도 이전 명령어가 더 이상 예외를 야기하지 않을 정도로 모든 우선 순위 명령어를 완료하고, (b) 적어도 어드레스 변환을 통해, 모든 우선 순위 저장 동작이 완료되도록 한다. 이러한 후속 명령어는 우선 순위 명령어의 결과에 영향을 받는다. ISYNC 명령어는 콘텍스트에 동기된다(is context synchronizing).
HPS가 논리 0 상태에서 논리 1 상태로 전이할 때 하드웨어 이벤트가 발생한다. HPS가 논리 0 상태에서 논리 1 상태로 전이함에 응답하여, 프로세서(10)은 다음에 열거된 것과 같은 동작을 수행한다.
1. 시퀀서 유니트(18)(도 1)은 아직 프로세서(10)의 실행 유니트로 디스패치되지 않은 명령어 버퍼(70)(도 3) 내의 모든 계류중인 명령어(pending instructions)를 중지한다.
2. 프로세서(10)은 실행 유니트 (브랜치 유니트(20), FXU(22), CFUX(26), LSU(28) 및 FPU(30)) 내의 모든 계류중인 명령어를 중지하고, 그러한 계류중인 명령어는 실행되지 않는다. 그러한 점을 고려하여, LSU(28)(도 1)은 데이터 캐쉬(16) 내에 아직 저장되지 않은 모든 계류중인 명령어를 중단한다. 예를 들면, 예시적인 실시예에서, LSU(28)은 저장 큐(store queue)를 포함한다. 따라서, LSU(28)은 저장 큐 내의 모든 계류중인 저장 요청을 중단하고, 그러한 계류중인 저장 요청은 수행되지 않는다.
3. 프로세서(10)은 리네임 버퍼(34 및 38)(도 1) 내의 모든 엔트리를 무효화한다. 예를 들면, 프로세서(10)은 라이트백 포인터(182)(도 5) 및 완료 포인터(184)를 이동시켜, 라이트백 포인터(182) 및 완료 포인터(184)는 할당 포인터(180)이 가리키는 것과 동일한 리네임 버퍼 엔트리를 가리킨다.
4. 시퀀서 유니트(18)(도 2)는 리오더 버퍼(76)의 완료 포인터(175)(도 4)에 의해 지시되는 명령어의 어드레스를 세이브한다. 이어서, 프로세서(10)은 완료 포인터(175)를 이동시켜 리오더 버퍼(76) 내의 모든 엔트리를 무효화하여, 완료 포인터(175)는 할당 포인터(173)가 가리키는 것과 동일한 리오더 버퍼 엔트리를 가리킨다.
프로세서(10)이 상기 나열된 작동을 수행한 후에, 페치 논리(71)(도 2)는 페치 명령어를 다시 계속하는데, 이는 바로 위의 선행하는 문단 (즉, 상기에서 나열된 동작 4)에서 논의된 바와 같이 시퀀서 유니트(18)에 의해 세이브된 어드레스에서 시작한다.
선택적인 실시예에서, 프로세서(10)은 프로세서(10)이 특별 "절전" 모드로 들어갈 때마다, 프로세서(10)이 소프트웨어 이벤트에 응답하여 특별 "절전" 모드로 들어갔는지 또는 하드웨어 이벤트에 응답하여 특별 "절전" 모드로 들어갔는지 여부에 상관없이, 명령어 캐쉬(14) 및 데이터 캐쉬(16) 내의 "웨이"의 수를 4웨이 대신에 2웨이로 감소시킨다. 그러한 선택적인 실시예에서, HPS가 논리 0 상태에서 논리 1 상태로 전이함에 응답하여:
(1) 제어 논리(100)(도 6)은 명령어 캐쉬(14) 내의 모든 128개의 집합의 블록(2) 및 블록(3) 내의 모든 라인이 무효화되어, 스테이트x2및 스테이트x3내의 "유효" 비트가 소거되도록 하고;
(2) 마찬가지로, 데이터 캐쉬(16)의 제어 논리는 데이터 캐쉬(16) 내의 모든 128개의 집합의 블록(2) 및 블록(3) 내의 모든 라인을 무효화하고;
(3) 만일 데이터 캐쉬(16) 내의 그러한 무효화된 라인이 (실효 어드레스에 응답하여 변환된) 동일한 물리 어드레스에 메모리(39)(도 1) 내에 저장된 원래 정보에 비하여 프로세서(10)에 의하여 수정된 정보를 저장하면, 프로세서(10)은 데이터 캐쉬(16)에서 메모리(39) 내의 동일한 물리 어드레스로 수정된 정보를 카피함으로써 메모리(39)를 업데이트한다.
제어 논리(100)은 명령어 캐쉬(14) 내에 새로운 정보를 저장하기 위해 가장 최근에 사용된 ("LRU") 치환 기법(replacement policy)을 구현한다. 그러한 점에 있어서, 데이터 캐쉬(16)은 명령어 캐쉬(14)와 동일하다. 명령어 캐쉬(14)에 비하여, 데이터 캐쉬(16)은 부가적으로 프로세서(10)의 데이터 캐쉬(16)으로의 기록 동작을 지원한다. 프로세서(10)은 바이트-바이-바이트(byte-by-byte), 반-단어(half-word), 단어(word), 또는 이중-단어(doble-word) 방식에 기초하여 그러한 기록 동작을 수행할 수 있다. 더욱이, 프로세서(10)은 프로세서(10)의 단일 사이클 내에서 데이터 캐쉬(16)으로 완전한 판독-수정-기록 동작을 수행할 수 있다. 데이터 캐쉬(16)은 라이트-백(write-back) 또는 라이트-스루(write-through) 모드에서 선택적으로 동작하고, 페이지-바이-페이지 및 라인-바이-라인 방식에 기초하여 메모리 코히어런스(memory coherency), 기록 기법(write policy), 및 캐쉬 능력(cacheability)의 제어를 구현한다.
비록 예시적인 실시예 및 그의 장점이 이상에서 상세히 기술되었지만, 이들은 예시로서 기술한 것이지 본 발명이 거기에 한정되는 것은 아니다. 본 발명의 폭, 범주 및 사상을 벗어나지 않고서도 예시적인 실시예의 다양한 변형, 치환 및 개조가 가능하다.
본 발명에 따르면, 전기 회로가 더 적은 과도 전력(excess power)을 소비하는 것이 가능하게 된다.

Claims (24)

  1. 집합-연관 캐쉬 메모리(set-associative cache memory)가 제1 전력 모드에서 동작하고 있는 동안, 상기 캐쉬 메모리의 최대 N개의 웨이로(in up to N number of ways) 정보를 저장하는 단계 - 여기서 N은 N>1인 정수임 - , 및
    상기 캐쉬 메모리가 제2 전력 모드에서 동작하고 있는 동안, 상기 캐쉬 메모리의 최대 M개의 웨이로 상기 정보를 저장하는 단계- 여기서 M은 0<M<N인 정수임 -
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 N개의 웨이는 상기 M개의 웨이를 포함하는 방법.
  3. 제1항에 있어서, 상기 제1 전력 모드는 전-전력 모드(full power mode)이고, 상기 제2 전력 모드는 저-전력 모드(low power mode)인 방법.
  4. 제1항에 있어서, 상기 캐쉬 메모리는 소프트웨어 이벤트(software event)에 응답하여 상기 제2 전력 모드에서 동작하는 방법.
  5. 제1항에 있어서, 상기 캐쉬 메모리는 하드웨어 이벤트(hardware event)에 응답하여 상기 제2 전력 모드에서 동작하는 방법.
  6. 제5항에 있어서, 상기 하드웨어 이벤트는 상기 캐쉬 메모리의 온도가 임계 온도(threshold temperature)를 넘을 때 발생하는 방법.
  7. 제6항에 있어서, 상기 임계 온도는 상기 제1 전력 모드에서 동작하는 상기 캐쉬 메모리의 최대 안전 온도(maximum safe temperature)인 방법.
  8. 제1항에 있어서, 상기 캐쉬 메모리가 상기 제2 전력 모드에서 동작하는 경우, 상기 캐쉬 메모리의 상기 M개의 웨이 이외의 웨이로 저장된 상기 정보를 무효화하는(invalidate) 단계를 더 포함하는 방법.
  9. 제8항에 있어서, 상기 캐쉬 메모리로부터 장치 메모리로 상기 무효화된 정보를 카피하는 단계를 더 포함하며, 상기 카피 동작은 상기 무효화된 정보가 상기 장치 메모리 내에 저장된 상기 정보의 버전(version)에 대하여 수정된 경우에 행해지는 방법.
  10. 제1항에 있어서, 상기 캐쉬 메모리가 상기 제2 전력 모드에서 동작하는 동안, 상기 캐쉬 메모리의 상기 M개의 웨이 이외의 웨이에 결합된 일군의 센스 증폭기(sense amplifiers)를 디스에이블시키는 단계를 더 포함하는 방법.
  11. 제1항에 있어서, 상기 캐쉬 메모리는 명령어 캐쉬 메모리(instruction cache memory)인 방법.
  12. 제1항에 있어서, 상기 캐쉬 메모리는 데이터 캐쉬 메모리(data cache memory)인 방법.
  13. 집합-연관 캐쉬 메모리를 포함하는 회로에 있어서,
    상기 집합-연관 캐쉬 메모리는
    상기 캐쉬 메모리가 제1 전력 모드에서 동작하고 있는 동안 정보를 상기 캐쉬 메모리의 최대 N개의 웨이로 저장하기 위한 것이고 - 여기서 N은 N>1인 정수임 - ,
    상기 캐쉬 메모리가 제2 전력 모드에서 동작하고 있는 동안 상기 정보를 상기 캐쉬 메모리의 최대 M개의 웨이로 저장하기 위한 것인 - 여기서 M은 0<M<N인 정수임 -
    회로.
  14. 제13항에 있어서, 상기 N개의 웨이는 상기 M개의 웨이를 포함하는 회로.
  15. 제13항에 있어서, 상기 제1 전력 모드는 전-전력 모드이고, 상기 제2 전력 모드는 저-전력 모드인 회로.
  16. 제13항에 있어서, 상기 캐쉬 메모리는 소프트웨어 이벤트에 응답하여 상기 제2 전력 모드에서 동작하는 회로.
  17. 제13항에 있어서, 상기 캐쉬 메모리는 하드웨어 이벤트에 응답하여 상기 제2 전력 모드에서 동작하는 회로.
  18. 제17항에 있어서, 상기 하드웨어 이벤트는 상기 캐쉬 메모리의 온도가 임계 온도를 넘을 때 발생하는 회로.
  19. 제18항에 있어서, 상기 임계 온도는 상기 제1 전력 모드에서 동작하는 상기 캐쉬 메모리의 최대 안전 온도인 회로.
  20. 제13항에 있어서, 상기 캐쉬 메모리가 상기 제2 전력 모드에서 동작하는 경우, 상기 캐쉬 메모리의 상기 M개의 웨이 이외의 웨이로 저장된 상기 정보를 무효화하기 위한 회로를 더 포함하는 회로.
  21. 제20항에 있어서,
    상기 정보의 버전을 저장하기 위한 장치 메모리와;
    상기 무효화된 정보가 상기 장치 메모리 내에 저장된 상기 정보의 버전에 대하여 수정된 경우에 상기 캐쉬 메모리로부터 상기 장치 메모리로 상기 무효화된 정보를 카피하기 위한 회로
    를 더 포함하는 회로.
  22. 제13항에 있어서, 상기 캐쉬 메모리가 상기 제2 전력 모드에서 동작하는 동안, 상기 캐쉬 메모리의 상기 M개의 웨이 이외의 웨이에 결합된 일군의 센스 증폭기를 디스에이블시키기 위한 회로를 더 포함하는 회로.
  23. 제13항에 있어서, 상기 캐쉬 메모리는 명령어 캐쉬 메모리인 회로.
  24. 제13항에 있어서, 상기 캐쉬 메모리는 데이터 캐쉬 메모리인 회로.
KR1019970039158A 1996-10-04 1997-08-18 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법 KR100260864B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/726,871 US5870616A (en) 1996-10-04 1996-10-04 System and method for reducing power consumption in an electronic circuit
US8/726,871 1996-10-04

Publications (2)

Publication Number Publication Date
KR19980032288A KR19980032288A (ko) 1998-07-25
KR100260864B1 true KR100260864B1 (ko) 2000-07-01

Family

ID=24920357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970039158A KR100260864B1 (ko) 1996-10-04 1997-08-18 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법

Country Status (6)

Country Link
US (1) US5870616A (ko)
JP (1) JP3466062B2 (ko)
KR (1) KR100260864B1 (ko)
CN (1) CN1099076C (ko)
GB (1) GB2317976B (ko)
SG (1) SG70606A1 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314523B1 (en) * 1997-04-09 2001-11-06 Compaq Computer Corporation Apparatus for distributing power to a system of independently powered devices
US6167524A (en) * 1998-04-06 2000-12-26 International Business Machines Corporation Apparatus and method for efficient battery utilization in portable personal computers
US6185657B1 (en) 1998-04-20 2001-02-06 Motorola Inc. Multi-way cache apparatus and method
US6421698B1 (en) * 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
US6658532B1 (en) * 1999-12-15 2003-12-02 Intel Corporation Cache flushing
US6446168B1 (en) * 2000-03-22 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamically switching a cache between direct-mapped and 4-way set associativity
US7263567B1 (en) * 2000-09-25 2007-08-28 Intel Corporation Method and apparatus for lowering the die temperature of a microprocessor and maintaining the temperature below the die burn out
US6845432B2 (en) * 2000-12-28 2005-01-18 Intel Corporation Low power cache architecture
TW586666U (en) * 2001-04-03 2004-05-01 Univ Nat Chiao Tung Microprocessor command reading structure
KR100395756B1 (ko) * 2001-06-16 2003-08-21 삼성전자주식회사 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
US7152170B2 (en) * 2003-02-20 2006-12-19 Samsung Electronics Co., Ltd. Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
US20050046400A1 (en) * 2003-05-21 2005-03-03 Efraim Rotem Controlling operation of a voltage supply according to the activity of a multi-core integrated circuit component or of multiple IC components
US7174405B1 (en) * 2003-06-06 2007-02-06 Cisco Technology, Inc. Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation
TWI224281B (en) * 2003-07-16 2004-11-21 Sunplus Technology Co Ltd A processor executing script with different length and method thereof
US7233880B2 (en) * 2003-09-11 2007-06-19 Intel Corporation Adaptive cache algorithm for temperature sensitive memory
US20050138296A1 (en) * 2003-12-18 2005-06-23 Coulson Richard L. Method and system to alter a cache policy
US7664970B2 (en) * 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
US7966511B2 (en) 2004-07-27 2011-06-21 Intel Corporation Power management coordination in multi-core processors
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
WO2006106890A1 (en) * 2005-03-31 2006-10-12 Semiconductor Energy Laboratory Co., Ltd. Arithmetic processing device and electronic appliance using arithmetic processing device
US7475192B2 (en) * 2005-07-12 2009-01-06 International Business Machines Corporation Cache organization for power optimized memory access
US7647514B2 (en) * 2005-08-05 2010-01-12 Fujitsu Limited Reducing power consumption at a cache
US20070083783A1 (en) * 2005-08-05 2007-04-12 Toru Ishihara Reducing power consumption at a cache
US20070043965A1 (en) * 2005-08-22 2007-02-22 Intel Corporation Dynamic memory sizing for power reduction
US7562191B2 (en) * 2005-11-15 2009-07-14 Mips Technologies, Inc. Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme
US7689772B2 (en) * 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
US7827425B2 (en) * 2006-06-29 2010-11-02 Intel Corporation Method and apparatus to dynamically adjust resource power usage in a distributed system
US7644293B2 (en) * 2006-06-29 2010-01-05 Intel Corporation Method and apparatus for dynamically controlling power management in a distributed system
JP2008090673A (ja) * 2006-10-03 2008-04-17 Mitsubishi Electric Corp キャッシュメモリ制御装置
US8028131B2 (en) * 2006-11-29 2011-09-27 Intel Corporation System and method for aggregating core-cache clusters in order to produce multi-core processors
US8151059B2 (en) * 2006-11-29 2012-04-03 Intel Corporation Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture
JP2009251713A (ja) * 2008-04-02 2009-10-29 Toshiba Corp キャッシュメモリ制御装置
GB2464131A (en) * 2008-10-06 2010-04-07 Ibm Lowering i/o power of a computer system by lowering code switching frequency
JP5338905B2 (ja) * 2009-05-29 2013-11-13 富士通株式会社 キャッシュ制御装置およびキャッシュ制御方法
US9164905B2 (en) 2009-09-02 2015-10-20 Nec Corporation Semiconductor integrated circuit device, method of controlling semiconductor integrated circuit device, and cache device
US9164772B2 (en) * 2011-02-04 2015-10-20 Qualcomm Incorporated Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available
JP6012263B2 (ja) 2011-06-09 2016-10-25 株式会社半導体エネルギー研究所 半導体記憶装置
KR101933741B1 (ko) 2011-06-09 2018-12-28 가부시키가이샤 한도오따이 에네루기 켄큐쇼 캐시 메모리 및 캐시 메모리의 구동 방법
US9135182B2 (en) 2012-06-01 2015-09-15 Semiconductor Energy Laboratory Co., Ltd. Central processing unit and driving method thereof
US20140136793A1 (en) * 2012-11-13 2014-05-15 Nvidia Corporation System and method for reduced cache mode
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
KR20200114481A (ko) 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5091851A (en) * 1989-07-19 1992-02-25 Hewlett-Packard Company Fast multiple-word accesses from a multi-way set-associative cache memory
IL96808A (en) * 1990-04-18 1996-03-31 Rambus Inc Introductory / Origin Circuit Agreed Using High-Performance Brokerage
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
KR0122528B1 (ko) * 1993-01-08 1997-11-20 윌리엄 티.엘리스 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
US5465373A (en) * 1993-01-08 1995-11-07 International Business Machines Corporation Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
US5761473A (en) * 1993-01-08 1998-06-02 International Business Machines Corporation Method and system for increased instruction synchronization efficiency in a superscalar processsor system utilizing partial data dependency interlocking
US5682515A (en) * 1993-01-25 1997-10-28 Benchmarq Microelectronics, Inc. Low power set associative cache memory with status inhibit of cache data output
US5420808A (en) * 1993-05-13 1995-05-30 International Business Machines Corporation Circuitry and method for reducing power consumption within an electronic circuit
KR0175116B1 (ko) * 1993-12-15 1999-04-01 윌리엄 더블유. 켈리 명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인
WO1995018998A1 (en) * 1994-01-05 1995-07-13 Norand Corporation Safe-stop mode for a microprocessor operating in a pseudo-static random access memory environment
JP3428741B2 (ja) * 1994-02-14 2003-07-22 松下電器産業株式会社 演算装置とアドレス発生装置及びプログラム制御装置
US5495419A (en) * 1994-04-19 1996-02-27 Lsi Logic Corporation Integrated circuit physical design automation system utilizing optimization process decomposition and parallel processing
JP2858542B2 (ja) * 1994-06-03 1999-02-17 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ用ディスク・ドライブの電力消費を節減する方法及び装置
US5666537A (en) * 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
GB2297398B (en) * 1995-01-17 1999-11-24 Advanced Risc Mach Ltd Accessing cache memories
JPH0950401A (ja) * 1995-08-09 1997-02-18 Toshiba Corp キャッシュメモリ及びそれを備えた情報処理装置

Also Published As

Publication number Publication date
GB9716264D0 (en) 1997-10-08
GB2317976B (en) 2001-12-19
KR19980032288A (ko) 1998-07-25
JP3466062B2 (ja) 2003-11-10
SG70606A1 (en) 2000-02-22
US5870616A (en) 1999-02-09
CN1180196A (zh) 1998-04-29
GB2317976A (en) 1998-04-08
CN1099076C (zh) 2003-01-15
JPH10124202A (ja) 1998-05-15

Similar Documents

Publication Publication Date Title
KR100260864B1 (ko) 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법
KR100261639B1 (ko) 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법
US5860107A (en) Processor and method for store gathering through merged store operations
US6687789B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US5897655A (en) System and method for cache replacement within a cache set based on valid, modified or least recently used status in order of preference
US7562191B2 (en) Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme
US7657708B2 (en) Methods for reducing data cache access power in a processor using way selection bits
KR100308677B1 (ko) 복수l1캐쉬라인의파이프라인형스누핑
US5630075A (en) Write combining buffer for sequentially addressed partial line operations originating from a single instruction
Levitan et al. The PowerPC 620 microprocessor: a high performance superscalar RISC microprocessor
US7650465B2 (en) Micro tag array having way selection bits for reducing data cache access power
US5809532A (en) Data processor with cache and method of operation
US5940877A (en) Cache address generation with and without carry-in
US5974505A (en) Method and system for reducing power consumption of a non-blocking cache within a data processing system
EP1107110B1 (en) Instruction loop buffer
KR100260865B1 (ko) 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법
US5687350A (en) Protocol and system for performing line-fill address during copy-back operation
US5895486A (en) Method and system for selectively invalidating cache lines during multiple word store operations for memory coherence
US6963965B1 (en) Instruction-programmable processor with instruction loop cache
JP3048979B2 (ja) 電子回路内の電力消費を減少させる方法及びシステム
US6963988B2 (en) Fixed point unit power reduction mechanism for superscalar loop execution
Ogden et al. A new PowerPC microprocessor for low power computing systems
WO2008024221A2 (en) Micro tag reducing cache power

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: 20100405

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee