KR20060130593A - 프로세서, 멀티프로세서 시스템, 프로세서 시스템,정보처리장치 및 온도제어방법 - Google Patents

프로세서, 멀티프로세서 시스템, 프로세서 시스템,정보처리장치 및 온도제어방법 Download PDF

Info

Publication number
KR20060130593A
KR20060130593A KR1020067012463A KR20067012463A KR20060130593A KR 20060130593 A KR20060130593 A KR 20060130593A KR 1020067012463 A KR1020067012463 A KR 1020067012463A KR 20067012463 A KR20067012463 A KR 20067012463A KR 20060130593 A KR20060130593 A KR 20060130593A
Authority
KR
South Korea
Prior art keywords
heat generation
block
command
frequency
instruction
Prior art date
Application number
KR1020067012463A
Other languages
English (en)
Other versions
KR100863387B1 (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 KR20060130593A publication Critical patent/KR20060130593A/ko
Application granted granted Critical
Publication of KR100863387B1 publication Critical patent/KR100863387B1/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/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • 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
    • 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/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
    • 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/46Multiprogramming arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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)
  • Human Computer Interaction (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)
  • Control Of Temperature (AREA)

Abstract

명령 디코더(14)는 명령마다 명령의 실행에 관계되는 연산 블록과 발열계수를 특정하여, 발열계수 프로파일(20)에 저장한다. 명령 스케줄러(16)는 명령을 데이터 의존관계에 기초해서 스케줄링한다. 발열도수 가산기(32)는 스케줄된 명령의 진행에 맞춰, 연산 블록 발열도수 레지스터(22)에 보유되어 있는 해당하는 연산 블록의 발열도수에 발열계수를 누적 가산한다. 발열도수 감산기(34)는 연산 블록 발열도수 레지스터(22)의 각 연산 블록의 발열도수를 시간경과에 따른 방열량에 기초해서 감산한다. 핫 스폿 검출기(36)는 연산 블록 발열도수 레지스터(22)의 발열도수가 소정의 역치를 넘은 연산 블록을 핫 스폿으로서 검출하고, 명령 스케줄러(16)는 핫 스폿이라고 판정된 연산 블록이 실행에 관계되는 명령의 실행을 늦춘다.
명령 디코더, 명령 스케줄러, 발열도수 감산기, 핫 스폿 검출기

Description

프로세서, 멀티프로세서 시스템, 프로세서 시스템, 정보처리장치 및 온도제어방법{PROCESSOR, MULTIPROCESSOR SYSTEM, PROCESSOR SYSTEM, INFORMATION PROCESSING DEVICE, AND TEMPERATURE CONTROL METHOD}
본 발명은 프로세서 기술에 관한 것으로, 특히 발열량을 제어할 수 있는 프로세서, 멀티프로세서 시스템, 프로세서 시스템, 정보처리장치, 및 온도제어방법에 관한 것이다.
LSI 설계에 있어서 제조 프로세스의 미세화와 소자의 고집적화가 한층 진행되어, 칩의 성능 한계로서 발열량을 고려하는 것이 설계상 매우 중요하게 되어 오고 있다. 칩이 고온이 되면, 동작불량을 일으키거나, 장기 신뢰성이 저하하기 때문에, 여러 가지 발열대책이 취해지고 있다. 예를 들면, 칩의 상부에 방열 핀을 형성하여, 칩에서 발생하는 열을 내보내는 방법이 취해진다.
또한, 칩상의 소비전력 분포는 한결같지 않기 때문에, 칩의 일부가 이상적으로 고온이 되는 이른바 "핫·스폿"의 문제를 피할 수 없다. 그래서, 칩의 소비전력 분포에 기초해서, 프로세서의 태스크(task)를 스케줄링하는 것도 검토되고 있다(예를 들면, 특허문헌 1 참조).
특허문헌 1: 미국 특허출원공개 제2002/0065049호 명세서
칩의 일부가 발열하면, 시간경과와 함께 열전도에 의해 발열 부위 주위로 고온 영역이 넓어지고, 결국에는 칩 전체의 온도가 상승한다. 종래의 발열대책은 칩 전체의 온도분포를 거시적으로 관측하여, 수초∼1분 정도의 시간을 들여 방열하는 것으로, 시간 응답성은 좋지 않다. 최근의 고집적화한 LSI 중에는, 1칩으로도 수십 와트 정도의 전력을 소비하는 것도 설계되어 있어, 수십 마이크로초의 오더로 방열 처리를 하지 않으면, 급준(急峻)한 온도 상승에 의해 동작불량이 일어날 수 있다. 국소적으로 발열하고 있으나, 칩 전체로서는 안전한 온도에 있다고 하는 경우에, 칩의 동작 주파수를 낮추면, 프로세서 전체의 처리성능을 희생하게 되어, 효율적이지 않다. 이러한 상황 하, 본 출원인은 칩의 일부가 발열한 경우, 열전도에 의해 고온영역이 넓어지기 전에, 핀포인트로 발열 부위를 검출하고, 그 이상의 온도 상승을 억제하는 미시적인 레벨에서의 발열대책의 필요성을 인식하기에 이르렀다.
본 발명은 이러한 과제를 감안하여 이루어진 것으로, 그 목적은 칩 발열량을 시간적으로도 공간적으로도 미세한 레벨로 제어할 수 있는 프로세서, 멀티프로세서 시스템, 프로세서 시스템, 정보처리장치, 및 온도제어방법을 제공하는 데 있다.
본 발명의 어느 태양(態樣)은 프로세서에 관한 것이다. 이 프로세서는 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와, 명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 소정의 명령 단위로 특정하는 발열 특정부와, 실행해야 할 명령의 진행에 맞춰 상기 소정의 명령 단위로, 상기 발열 특정부에 의해 특정된 블록의 상기 발열도수를 상기 발열계수를 기초로 누적 가산하는 발열도수 가산부를 포함한다.
"블록"은 프로세서의 영역을 구분한 최소 단위이며, 스폿적으로 열의 피크가 발생하는 영역의 크기에 맞춰 구분된다. 예를 들면, 블록은 프로세서를 구성하는 트랜지스터 등의 소자 단체(單體)여도 좋고, 어느 정도의 수의 소자의 집합이어도 좋다. 복수의 프로세서를 포함하는 멀티프로세서 시스템의 경우, 블록은 개개의 프로세서 내에서 구분된 블록이어도 좋고, 개개의 프로세서 전체를 1개의 블록으로 해도 좋다.
"명령 단위"는 명령 코드의 1스텝이어도 좋고, 명령 스텝이 몇 갠가 모여서 구성되는 서브루틴(subroutine) 혹은 태스크여도 좋다.
"블록"의 크기 및 "명령 단위"의 입도(粒度)에 대해서는, 발열제어의 요구 정밀도나 프로세서의 설계조건 등에 의해 설계의 자유도가 있다.
본 발명의 다른 태양도 프로세서에 관한 것이다. 이 프로세서는 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와, 소정의 명령 단위로 추산(estimate)된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산하는 발열도수 가산부와, 각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함한다.
본 발명의 또 다른 태양도 프로세서에 관한 것이다. 이 프로세서는 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유 레지스터와, 실행해야 할 명령과 상기 명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 대응시켜서 저장하는 발열계수 프로파일과, 실행해야 할 명령을 해석하고, 상기 명령의 실행에 관계되는 상기 블록과 상기 발열계수를 소정의 명령 단위로 특정하여, 상기 발열계수 프로파일에 저장하는 디코더와, 상기 발열계수 프로파일에 기초해서, 상기 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 블록의 상기 발열도수를 누적 가산하는 발열도수 가산기와, 각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함한다.
본 발명의 또 다른 태양은 멀티프로세서 시스템에 관한 것이다. 이 멀티프로세서 시스템은 복수의 서브 프로세서와 메인 프로세서를 포함한다. 상기 메인 프로세서는 상기 서브 프로세서 내의 복수의 블록의 발열도수를 보유하는 발열도수 보유부와, 명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 소정의 명령 단위로 특정하는 발열 특정부와, 실행해야 할 명령의 진행에 맞춰 상기 소정의 명령 단위로, 상기 발열 특정부에 의해 특정된 블록의 상기 발열도수를 상기 발열계수를 기초로 누적 가산하는 발열도수 가산부와, 각 블록의 상기 발열도수에 기초해서, 실행해야 할 명령을 상기 복수의 서브 프로세서 사이에서 분배하는 스케줄러를 포함한다.
본 발명의 또 다른 태양도 프로세서에 관한 것이다. 이 프로세서는 실행해야 할 명령을 해독하는 디코더에, 상기 명령의 실행에 관계되는 프로세서 내의 블록의 발열을 해석하는 기능을 갖게 한다.
본 발명의 또 다른 태양은 온도제어방법에 관한 것이다. 이 방법은 명령 코드의 진행에 맞춰 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유함으로써, 명령 코드의 진행에 따른 발열을 블록 단위로 검출한다.
본 발명의 또 다른 태양도 온도제어방법에 관한 것이다. 이 방법은 소정의 명령 단위로 추산된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유하고, 상기 레지스터에 보유된 각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링한다.
본 발명의 또 다른 태양도 온도제어방법에 관한 것이다. 이 방법은 멀티프로세서 시스템에 있어서의 각 프로세서 내의 블록의 발열량을 소정의 명령 단위로 추산하고, 명령의 진행에 따른 블록의 온도변화를 예측하며, 예측된 온도변화를 기초로 명령을 상기 프로세서 사이에서 분배한다.
한편, 이상의 구성요소의 임의의 조합, 본 발명의 표현을 방법, 장치, 시스템, 컴퓨터 프로그램 등의 사이에서 변환한 것도 또한, 본 발명의 태양으로서 유효하다.
<발명의 효과>
본 발명에 따르면, 프로세서의 처리성능을 떨어뜨리지 않고, 프로세서의 발열량을 억제해서 동작불량을 방지할 수 있다.
도 1은 실시형태 1에 따른 프로세서 시스템의 구성도이다.
도 2는 도 1의 프로세서 시스템에 있어서의 발열제어에 따른 기능구성의 상 세 설명도이다.
도 3은 도 1의 발열계수 프로파일의 설명도이다.
도 4는 도 1의 연산 블록 발열도수 레지스터에 저장된 발열도수를 설명하는 도면이다.
도 5는 도 1의 프로세서 시스템에 있어서의 발열제어 순서를 나타내는 플로우차트이다.
도 6은 실시형태 2에 따른 프로세서 시스템의 구성도이다.
<부호의 설명>
12 : 명령 캐시 14 : 명령 디코더
16 : 명령 스케줄러 18 : 실행 유닛
20 : 발열계수 프로파일 22 : 연산 블록 발열도수 레지스터
32 : 발열도수 가산기 34 : 발열도수 감산기
36 : 핫 스폿 검출기 100 : CPU 코어
110 : 메인 메모리 200 : 메인 프로세서
210 : 캐시 220 : DRAM
230a, 230b : 서브 프로세서
실시형태 1
도 1은 실시형태 1에 따른 프로세서 시스템의 구성도이다. 이 프로세서 시스템은 CPU 코어(100)와, 메인 메모리(110)를 포함하며, 이들은 어드레스 버스(28) 및 데이터 버스(30)에 접속되어 있다. CPU 코어(100)는 메인 메모리(110)에 대해 어드레스를 지정해서 데이터의 읽어내기와 써 넣기를 행한다. CPU 코어(100)는 명령 캐시(12)와, 명령 디코더(14)와, 명령 스케줄러(16)와, 실행 유닛(18)과, 발열계수 프로파일(20)과, 연산 블록 발열도수 레지스터(22)를 포함한다. 메인 메모리(110)에는 명령(24)과 연산결과(26)가 기억된다.
CPU 코어(100)가 메인 메모리(110)에서 읽어내는 명령(24)은 일단 명령 캐시(12)에 캐시(cache)된다. 명령 디코더(14)는 명령 캐시(12)에 캐시된 명령(24)을 순차 해독하고, 명령 스케줄러(16)에 준다. 명령 스케줄러(16)는 명령 디코더(14)에 의해 해독된 명령(24)간의 데이터 의존관계에 의해, 명령(24)의 실행순서의 재배열이나 실행 타이밍의 조정을 행하고, 명령(24)을 스케줄링해서, 실행 유닛(18)에 건네준다. 실행 유닛(18)은 스케줄된 명령(24)을 실행하고, 연산결과(26)를 메인 메모리(110)에 쓰기 시작한다.
프로세서 시스템의 칩의 영역 전체를 발열제어 대상이 되는 작은 영역으로 구분하고, 그 소영역을 블록 혹은 연산 블록이라고 부른다. 연산 블록은 칩을 구성하는 트랜지스터 단체 혹은 어느 정도의 수의 트랜지스터의 집합이다. 연산 블록은 스폿적으로 발열의 피크가 나타나는 영역의 크기에 맞춰 구분되지만, 연산 블록의 크기는 발열제어의 목표 정밀도나 프로세서의 요구 사양에 따라 자유롭게 정해도 좋다. 또한, 연산 블록은 동일 사이즈로 규칙적으로 구분되어도 좋으나, 각종 연산 유닛의 경계에 맞춰 불규칙하게 구분되어도 좋다.
발열계수 프로파일(20)은 명령 스텝마다 그 명령 스텝의 실행에 관계되는 프 로세서 시스템의 연산 블록과 그 연산 블록의 발열량에 관한 발열계수를 대응시켜서 저장한 프로파일이다. 연산 블록 발열도수 레지스터(22)는 각 연산 블록의 발열도수를 누적해서 보유하기 위한 레지스터이다.
도 2는 CPU 코어(100)에 있어서의 발열제어에 따른 기능구성을 상세하게 설명하는 도면이다. 명령 디코더(14)는 발열 해석기능을 가지며, 프로세서 시스템의 하드웨어 정보를 기초로, 각 명령 스텝의 실행에 관계되는 연산 블록을 특정하고, 그 연산 블록의 동작에 따른 발열량을 예측하여, 발열계수를 결정한다. 명령 디코더(14)는 명령 스텝마다 특정한 연산 블록의 위치정보와 발열계수를 명령 스텝에 대응시켜서 발열계수 프로파일(20)에 저장한다.
도 3은 발열계수 프로파일(20)의 예를 설명하는 도면이다. 명령 스텝(40), 연산 블록 위치(42), 및 발열계수(44)가 대응시켜져서 저장되어 있다. 명령 스텝(40)은 명령 디코더(14)에 의해 디코드된 스텝마다의 명령이며, MOV(전송), ADD(가산), LD(로드), ST(스토어) 등의 커맨드에 인수(引數)가 주어지고 있다. 예를 들면, 명령 스텝 "MOV AX BX"는 CPU 코어(100)의 연산 레지스터(BX)의 내용을 연산 레지스터(AX)에 대입하는 명령이고, 명령 스텝 "LD AX 2D"는 메인 메모리(110)의 어드레스(2D)의 데이터를 CPU 코어(100)의 연산 레지스터(AX)에 로드하는 명령이다.
연산 블록 위치(42)는 프로세서 시스템의 패키지상의 다이(die)를 직사각형 영역으로 구분한 경우의 매트릭스의 인덱스로 주어진다. 발열계수(44)는 연산 블록 위치(42)로 나타난 영역에 있는 연산 블록이 그 명령을 실행했을 때의 발열량의 예 측값으로부터 정해지는 수치이다.
프로세서 시스템의 LSI의 배치배선이 완료된 후의 논리 시뮬레이션에 있어서, 프로그램 코드를 시뮬레이트했을 때의 결과를 이용하면, 미세한 시간 스텝에서 프로세서의 트랜지스터의 온 오프 상태의 변화를 추적할 수 있다. 이 결과를 이용하면, 명령 스텝마다 어느 연산 블록이 액티브(active)하게 되는지를 완전하게 해석할 수 있다.
연산 블록의 발열량에 대해서는, 회로설계시에 CAD도구 등을 이용해서 연산 블록의 정적인 온도특성을 고려하여 예측할 수 있다. 연산 블록의 정적인 온도특성은 주로 물리적인 특성이나 소자의 위치관계에 기초해서 정량화된다. 예를 들면, CMOS는 값이 반전할 때에 P채널과 N채널의 양 트랜지스터가 순간 동시에 온하여, 관통전류가 흐른다. 이것이 CMOS의 소비전력의 대부분을 차지하며, 소비전력은 CMOS의 동작 주파수에 비례해서 증가한다. 이러한 소비전력을 추산함으로써 연산 블록의 발열량을 예측할 수 있다. 발열계수는 발열량의 예측값을 양자화한 값이다. 회로설계시의 시뮬레이션 결과나 발열 예측량 등의 정보는 하드웨어 정보로서 명령 디코더(14)로부터 참조할 수 있도록 구성된다.
도 3에 나타내는 예에서는, 명령 스텝 "MOV AX BX"의 실행에는, (2,3) 및(2,4)의 위치의 연산 블록이 관계되고, 발열계수는 2이며, 명령 스텝 "LD AX 2D"의 실행에는, (2,2)의 위치의 연산 블록이 관계되고, 발열계수는 1이다.
다시 도 2를 참조해서, 명령 스케줄러(16)는 명령 디코더(14)에 의해 디코드된 명령(24)을 데이터 의존관계에 기초해서 스케줄링하고, 다음으로 실행해야 할 명령 스텝을 선택한다. 명령 스케줄러(16)는 발열계수 프로파일(20)을 참조해서, 그 선택된 명령 스텝의 실행에 관계되는 연산 블록의 위치와 발열계수를 특정하여, 발열도수 가산기(32)에 준다. 발열도수 가산기(32)는 특정된 연산 블록 위치의 현재의 발열도수를 연산 블록 발열도수 레지스터(22)로부터 판독하고, 명령 스케줄러(16)로부터 주어진 발열계수를 가산해서 연산 블록 발열도수 레지스터(22)에 써 넣는다.
발열도수 감산기(34)는 연산 블록 발열도수 레지스터(22)로부터 각 연산 블록의 발열도수를 판독하고, 소정의 방열상수에 기초하는 감산처리를 행하며, 연산 블록 발열도수 레지스터(22)에 써 넣는다. 발열도수 감산기(34)는 소정의 클록으로 동작해서, 연산 블록 발열도수 레지스터(22)의 각 연산 블록의 발열도수를 감산한다. 이것에 의해, 시간경과에 따른 방열량이 연산 블록 발열도수 레지스터(22)의 발열도수에 반영된다.
발열도수 감산기(34)는 발열도수가 제로가 될 때까지 감산하는데, 각 연산 블록의 발열도수가 클수록 발열도수의 감산량을 크게 설정한다. 각 연산 블록의 발열도수로부터 예측되는 온도와 외계 온도와의 차가 클수록, 방열에 의한 온도저하가 빠르다고 생각되기 때문이다. 외계 온도는 측정값, 추정값 혹은 미리 설정한 값 중 어떠한 것을 사용해도 좋다.
도 4는 연산 블록 발열도수 레지스터(22)에 저장된 발열도수의 예를 나타낸다. 연산 블록 발열도수 레지스터(22)에 저장된 각 연산 블록의 발열도수는 발열도수 가산기(32)에 의해 명령 코드의 진행에 맞춰 누적 가산되어, 발열도수 감산기 (34)에 의해 시간경과와 함께 감산된다.
발열도수 가산기(32) 및 발열도수 감산기(34)는 연산 블록의 온도특성의 동적인 면도 고려해서, 연산 블록의 발열도수를 조정해도 좋다. 연산 블록의 동적인 온도특성은 주로 태스크의 실행 이력이나 부하 상황에 의존하지만, 경우에 따라서는, 인접하는 블록에 동시에 태스크가 할당되면, 떨어진 블록에 태스크가 분산하는 경우보다도 열이 발생하기 쉬운 등의 물리적인 성질로부터의 영향도 받는다. 발열도수 가산기(32)는 연산 블록에의 태스크의 할당 상황이나, 인접하는 연산 블록의 발열에 의한 상호작용 등을 가미해서 발열도수의 가산을 행해도 좋다. 발열도수 감산기(34)는 연산 블록 주위의 방열의 진행상태를 고려해서 발열도수의 감산을 행해도 좋다.
다시 도 2를 참조해서, 핫 스폿 검출기(36)는 연산 블록 발열도수 레지스터(22)의 발열도수가 소정의 역치를 넘은 연산 블록을 핫 스폿으로서 검출하고, 그 연산 블록의 위치를 명령 스케줄러(16)에 준다. 이 소정의 역치는 연산 블록이 동작불량이 되는 한계 온도보다도 낮은 온도에 대응하는 발열도수로 주어진다. 따라서, 핫 스폿 검출기(36)는 현실적으로 핫 스폿이 된 연산 블록을 검출할 뿐만 아니라, 장래 핫 스폿이 될 가능성이 높은 연산 블록도 핫 스폿으로서 검출한다.
명령 스케줄러(16)는 핫 스폿이라고 판정된 연산 블록이 실행에 관계되는 명령 스텝 앞에 웨이트 명령을 삽입해서 실행 타이밍을 어긋나게 하거나, 핫 스폿이라고 판정된 연산 블록이 관여하지 않는 명령의 실행을 우선적으로 실행하는 등의 재스케줄링을 행한다. 이와 같이, 명령 스케줄러(16)는 각 연산 블록의 정량화된 정적/동적 온도특성을 평가 파라미터로서 이용한 스케줄링을 행한다.
상기 구성에서는, 명령 디코더(14)가 하드웨어 정보를 기초로 명령 스텝마다 연산 블록을 특정하여, 발열계수를 결정하였으나, 발열계수는 명령의 오퍼랜드(operand)의 일부로서 명령 코드의 생성단계에서 매입(埋入)해도 좋다. 예를 들면, 프로그램이나 컴파일러(compiler)가 명령마다 발열계수를 지정해도 좋다.
도 5는 CPU 코어(100)의 명령 디코더(14)와 명령 스케줄러(16)에 의한 발열제어 순서를 나타내는 플로우차트이다.
명령 캐시(12)에 다음에 디코드해야 할 명령이 캐시되어 있는 경우(S10의 Y), 명령 디코더(14)는 캐시된 명령을 디코드한다(S12). 명령 디코더(14)는 디코드된 명령에 관계되는 연산 블록을 특정하고, 그 연산 블록의 발열계수를 구하여, 발열계수 프로파일(20)을 작성한다(S14).
명령 스케줄러(16)는 명령 디코더(14)에 의해 디코드된 명령을 데이터 의존관계에 기초해서 스케줄링한다(S16). 발열도수 가산기(32)는 스케줄된 명령 코드의 진행에 맞춰, 연산 블록 발열도수 레지스터(22)에 보유되어 있는 해당하는 연산 블록의 발열도수에 발열계수를 누적 가산한다(S18). 여기에서, 발열도수 가산기(32)는 인접하는 연산 블록과의 상호작용을 고려해서, 인접하는 연산 블록의 발열도수가 큰 경우에, 당해 연산 블록의 발열도수의 가산량을 크게 해도 좋다.
핫 스폿 검출기(36)는 연산 블록 발열도수 레지스터(22)의 각 연산 블록의 발열도수를 평가해서 온도를 예측하고, 핫 스폿이 되는 연산 블록이 있는지의 여부를 조사한다(S20). 핫 스폿이 될 가능성이 높은 연산 블록이 존재하는 경우(S20의 Y), 명령 스케줄러(16)는 핫 스폿이 되는 연산 블록이 실행에 관계되는 명령의 실행을 늦추도록, 명령의 실행순서나 실행 타이밍을 조정하여, 명령을 재스케줄링한다(S22).
발열도수 감산기(34)는 시간경과에 따른 방열량의 예측값에 기초해서, 연산 블록 발열도수 레지스터(22)의 각 연산 블록의 발열도수를 감산한다(S24). 이후, S10으로 되돌아가고, 다음으로 디코드해야 할 명령이 없어질 때(S10의 N)까지, 일련의 처리가 반복된다.
본 실시형태의 프로세서 시스템에 따르면, 명령 코드의 진행에 따라 명령 스텝마다 연산 블록 단위로 발열량을 예측하기 때문에, 프로세서 시스템의 패키지 전체의 온도분포를 시간적으로도 공간적으로도 매우 미세한 레벨로 정확하게 파악할 수 있다. 이것에 의해, 프로세서 시스템의 특정의 연산 블록에 처리가 집중되어, 급준한 온도 상승이 예측되는 경우라도, 그 연산 블록이 관계되는 명령의 실행을 실시간으로 스케줄링하여, 발열의 피크를 회피할 수 있다. 프로세서 전체의 처리성능을 희생하지 않고, 발열에 의한 국소적인 동작불량을 방지할 수 있다.
실시형태 2
도 6은 실시형태 2에 따른 프로세서 시스템의 구성도이다. 본 실시형태의 프로세서 시스템은 실시형태 1의 CPU 코어(100)에 상당하는 메인 프로세서(200) 이외에, 2개의 서브 프로세서(230a, 230b)가 버스 결합한 멀티프로세서 시스템이다. 메인 프로세서(200)는 버스를 통해 DRAM(220)에 액세스하여 데이터를 판독하고, 캐시(210)에 데이터를 캐시한다. 메인 프로세서(200)는 적당히 2개의 서브 프로세서 (230a, 230b)에 태스크를 분배해서 프로그램을 실행한다.
메인 프로세서(200)에는, 실시형태 1에서 설명한 CPU 코어(100)의 각 기능구성, 즉, 명령 캐시(12), 명령 디코더(14), 명령 스케줄러(16), 실행 유닛(18), 발열계수 프로파일(20), 연산 블록 발열도수 레지스터(22), 발열도수 가산기(32), 발열도수 감산기(34), 및 핫 스폿 검출기(36)가 포함된다. 이하, 이들의 구성에 대해서, 실시형태 1과는 다른 동작을 설명한다.
본 실시형태의 프로세서 시스템에서는, 메인 프로세서(200), 서브 프로세서(230a, 230b)의 각 모듈을 포함하는 프로세서 시스템의 패키지 전체의 발열량이 제어 대상이 된다. 실시형태 1에서 서술한 연산 블록은 메인 프로세서(200), 서브 프로세서(230a, 230b)의 각 모듈 내에서 구분된 블록이며, 연산 블록마다의 발열도수의 가산 및 감산에 대해서는 실시형태 1과 동일하게 행해진다.
명령 스케줄러(16)는 실시형태 1에서 서술한 명령의 실행순서의 변경, 실행 타이밍의 조정 이외에, 서브 프로세서(230a, 230b)에 명령을 분배함으로써 명령의 스케줄링을 행한다. 명령 스케줄러(16)에 의한 서브 프로세서(230a, 230b)간의 명령의 분배는 명령 스텝 단위 외에, 서브루틴 등 어느 정도 통합된 태스크의 단위로 행해져도 좋다. 명령 스케줄러(16)는 서브 프로세서(230a, 230b)의 부하 상황에 따른 명령의 분배에 의해, 부하 분산을 도모함과 아울러, 서브 프로세서(230a, 230b)의 연산 블록의 발열 상황에 따른 명령의 분배에 의해, 발열량을 제어한다. 예를 들면, 한쪽의 서브 프로세서(230a)에 핫 스폿이 될 가능성이 높은 연산 블록이 검출된 경우, 명령을 다른쪽의 서브 프로세서(230b)에 할당한다.
본 실시형태의 프로세서 시스템에 따르면, 각 서브 프로세서(230a, 230b)의 연산 블록의 발열 상황에 따라, 서브 프로세서(230a, 230b) 사이에서 태스크를 할당함으로써, 프로세서 시스템 전체의 온도분포를 평준화하여, 프로세서 시스템 내에 핫 스폿이 발생하는 것을 방지할 수 있다.
이상, 본 발명을 실시형태를 기초로 설명하였다. 이들 실시형태는 예시이며, 그들의 각 구성요소나 각 처리 프로세스의 조합에 여러 가지 변형예가 가능한 것, 또한 그러한 변형예도 본 발명의 범위에 있는 것은 당업자에게 이해되는 바이다.
그러한 변형예를 설명한다. 실시형태에서는, 발열대책으로서, 핫 스폿이 될 가능성이 있는 연산 블록에 부하가 집중되지 않도록, 명령의 스케줄링을 행하는 방법을 설명하였으나, 이 이외의 발열대책으로서, 예를 들면, 핫 스폿이 될 가능성이 있는 연산 블록을 국소적으로 냉각노즐을 사용해서 냉각하는 방법을 취해도 좋다. 또한, 명령의 스케줄링을 하더라도 연산 블록의 발열을 억제할 수 없는 경우는, 프로세서 전체의 동작 주파수를 떨어뜨리거나, 전원전압을 낮추는 등의 긴급처치를 취하도록 구성해도 좋다.
실시형태에서는, 회로설계시의 시뮬레이터 등에 의해 미리 발열량을 추산하고, 프로세서 내에 발열계수의 정보를 하드웨어 정보로서 갖게 하였으나, 프로세서의 온도를 측정하는 센서를 형성하여, 국소적으로 연산 블록의 온도를 실측(實測)한 후에, 실시형태에서 서술한 스케줄링에 의한 발열제어를 실시하도록 구성해도 좋다.
실시형태에서는, 명령 스텝마다 발열량을 예측하여, 발열도수를 카운트하였 으나, 서브루틴 등 어느 정도 통합된 태스크 단위로 발열량을 예측하여, 발열도수를 카운트하도록 구성해도 좋으며, 스케줄링의 단위도 명령 스텝 단위뿐만 아니라 태스크 단위로 행하도록 구성해도 좋다. 프로세서의 각 연산 블록이 비교적 안전한 온도범위에 있을 때는, 태스크 단위로 카운트된 발열도수를 참조해서 태스크 스케줄링을 행하고, 온도가 상승해서 크리티컬(critical)한 상황이 되었을 때는, 각 연산 블록의 발열도수를 명령 스텝 단위로 카운트해서, 명령 단위의 미세한 스케줄링을 행하도록 전환하는 전환 제어부를 형성해도 좋다.
실시형태에서는, 발열제어를 프로세서 시스템의 하드웨어로 행하는 구성이었으나, 명령 코드의 해석과 온도 예측에 기초한 명령의 스케줄링을 프로세서 시스템의 외부에서 소프트웨어 처리 등으로 행하고, 스케줄링된 명령을 프로세서에 공급하는 구성의 명령 코드 생성장치를 프로세서 시스템과는 별도로 형성해도 좋다.
애플리케이션마다 발열특성의 프로파일을 작성하고, 칩상의 온도센서에 의해 실측된 온도분포와 조합(照合)함으로써 발열계수 등의 프로파일 정보를 수정하는 조합부를 형성해도 좋다. 이것에 의해 발열제어의 정밀도를 더욱 향상시킬 수 있다.
실시형태의 프로세서를 메모리 등의 다른 소자와 함께 기판에 탑재한 프로세서 시스템을 구성해도 좋다. 또한, 그러한 프로세서 시스템을 탑재한 정보처리장치를 구성해도 좋다. 그러한 정보처리장치로서 퍼스널 컴퓨터, 각종 휴대기기 등이 있다.
본 발명은 프로세서의 발열제어의 분야에 적용할 수 있다.

Claims (27)

  1. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와,
    명령의 실행에 관계되는 블록과 그 블록의 방열량에 따른 발열계수를 소정의 명령 단위로 특정하는 발열 특정부와,
    실행해야 할 명령의 진행에 맞춰 상기 소정의 명령 단위로, 상기 발열 특정부에 의해 특정된 블록의 상기 발열도수를 상기 발열계수를 기초로 누적 가산하는 발열도수 가산부를 포함하는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서, 상기 발열 특정부는 실행해야 할 명령을 해독하는 디코더인 것을 특징으로 하는 프로세서.
  3. 제1항 또는 제2항에 있어서, 각 블록의 상기 발열도수를 시간경과에 따른 방열량에 기초해서 감산하는 발열도수 감산부를 더 포함하는 것을 특징으로 하는 프로세서.
  4. 제3항에 있어서, 상기 발열도수 감산부는 각 블록의 상기 발열도수가 클수록 상기 발열도수의 감산량을 크게 설정하는 것을 특징으로 하는 프로세서.
  5. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와,
    소정의 명령 단위로 추산(estimate)된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산하는 발열도수 가산부와,
    각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함하는 것을 특징으로 하는 프로세서.
  6. 제5항에 있어서, 상기 스케줄러는 상기 발열도수가 소정의 역치를 넘은 블록이 실행에 관계되는 명령의 실행을 늦추는 것을 특징으로 하는 프로세서.
  7. 제5항 또는 제6항에 있어서, 각 프로세서의 상기 발열도수를 시간경과에 따른 방열량에 기초해서 감산하는 발열도수 감산부를 더 포함하는 것을 특징으로 하는 프로세서.
  8. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유 레지스터와,
    실행해야 할 명령과 상기 명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 대응시켜서 저장하는 발열계수 프로파일과,
    실행해야 할 명령을 해석하고, 상기 명령의 실행에 관계되는 상기 블록과 상 기 발열계수를 소정의 명령 단위로 특정하여, 상기 발열계수 프로파일에 저장하는 디코더와,
    상기 발열계수 프로파일에 기초해서, 상기 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 블록의 상기 발열도수를 누적 가산하는 발열도수 가산기와,
    각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함하는 것을 특징으로 하는 프로세서.
  9. 복수의 서브 프로세서와 메인 프로세서를 포함하는 멀티프로세서 시스템으로서,
    상기 메인 프로세서는,
    상기 서브 프로세서 내의 복수의 블록의 발열도수를 보유하는 발열도수 보유부와,
    명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 소정의 명령 단위로 특정하는 발열 특정부와,
    실행해야 할 명령의 진행에 맞춰 상기 소정의 명령 단위로, 상기 발열 특정부에 의해 특정된 블록의 상기 발열도수를 상기 발열계수를 기초로 누적 가산하는 발열도수 가산부와,
    각 블록의 상기 발열도수에 기초해서, 실행해야 할 명령을 상기 복수의 서브 프로세서 사이에서 분배하는 스케줄러를 포함하는 것을 특징으로 하는 멀티프로세서 시스템.
  10. 실행해야 할 명령을 해독하는 디코더에, 상기 명령의 실행에 관계되는 프로세서 내의 블록의 발열을 해석하는 기능을 갖게 한 것을 특징으로 하는 프로세서.
  11. 명령 코드의 진행에 맞춰 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유함으로써, 명령 코드의 진행에 따른 발열을 블록 단위로 검출하는 것을 특징으로 하는 온도제어방법.
  12. 소정의 명령 단위로 추산된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유하고, 상기 레지스터에 보유된 각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 것을 특징으로 하는 온도제어방법.
  13. 멀티프로세서 시스템에 있어서의 각 프로세서 내의 블록의 발열량을 소정의 명령 단위로 추산하고, 명령의 진행에 따른 블록의 온도변화를 예측하며, 예측된 온도변화를 기초로 명령을 상기 프로세서 사이에서 분배하는 것을 특징으로 하는 온도제어방법.
  14. 명령 코드의 진행에 맞춰 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유하는 스텝과,
    상기 레지스터에 보유된 각 블록의 상기 발열도수에 기초해서 명령 코드의 진행에 따른 발열을 블록 단위로 검출하는 스텝을 컴퓨터에 실행시키는 것을 특징으로 하는 프로그램.
  15. 소정의 명령 단위로 추산된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유하는 스텝과,
    상기 레지스터에 보유된 각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스텝을 컴퓨터에 실행시키는 것을 특징으로 하는 프로그램.
  16. 멀티프로세서 시스템에 있어서의 각 프로세서 내의 블록의 발열량을 소정의 명령 단위로 추산하는 스텝과,
    명령의 진행에 따른 블록의 온도변화를 예측하고, 예측된 온도변화를 기초로 명령을 상기 프로세서 사이에서 분배하는 스텝을 컴퓨터에 실행시키는 것을 특징으로 하는 프로그램.
  17. 명령 코드의 진행에 맞춰 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유하는 스텝과,
    상기 레지스터에 보유된 각 블록의 상기 발열도수에 기초해서 명령 코드의 진행에 따른 발열을 블록 단위로 검출하는 스텝을 컴퓨터에 실행시키는 프로그램을 저장한 것을 특징으로 하는 기록매체.
  18. 소정의 명령 단위로 추산된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산해서 레지스터에 보유하는 스텝과,
    상기 레지스터에 보유된 각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스텝을 컴퓨터에 실행시키는 프로그램을 저장한 것을 특징으로 하는 기록매체.
  19. 멀티프로세서 시스템에 있어서의 각 프로세서 내의 블록의 발열량을 소정의 명령 단위로 추산하는 스텝과,
    명령의 진행에 따른 블록의 온도변화를 예측하고, 예측된 온도변화를 기초로 명령을 상기 프로세서 사이에서 분배하는 스텝을 컴퓨터에 실행시키는 프로그램을 저장한 것을 특징으로 하는 기록매체.
  20. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와,
    명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 소정의 명령 단위로 특정하는 발열 특정부와,
    실행해야 할 명령의 진행에 맞춰 상기 소정의 명령 단위로, 상기 발열 특정 부에 의해 특정된 블록의 상기 발열도수를 상기 발열계수를 기초로 누적 가산하는 발열도수 가산부를 포함하는 것을 특징으로 하는 프로세서 시스템.
  21. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와,
    소정의 명령 단위로 추산된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산하는 발열도수 가산부와,
    각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함하는 것을 특징으로 하는 프로세서 시스템.
  22. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유 레지스터와,
    실행해야 할 명령과 상기 명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 대응시켜서 저장하는 발열계수 프로파일과,
    실행해야 할 명령을 해석하고, 상기 명령의 실행에 관계되는 상기 블록과 상기 발열계수를 소정의 명령 단위로 특정하여, 상기 발열계수 프로파일에 저장하는 디코더와,
    상기 발열계수 프로파일에 기초해서, 상기 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 블록의 상기 발열도수를 누적 가산하는 발열도수 가산기와,
    각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함하는 것을 특징으로 하는 프로세서 시스템.
  23. 실행해야 할 명령을 해독하는 디코더에, 상기 명령의 실행에 관계되는 프로세서 내의 블록의 발열을 해석하는 기능을 갖게 한 것을 특징으로 하는 프로세서 시스템.
  24. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와,
    명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 소정의 명령 단위로 특정하는 발열 특정부와,
    실행해야 할 명령의 진행에 맞춰 상기 소정의 명령 단위로, 상기 발열 특정부에 의해 특정된 블록의 상기 발열도수를 상기 발열계수를 기초로 누적 가산하는 발열도수 가산부를 포함하는 것을 특징으로 하는 정보처리장치.
  25. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유부와,
    소정의 명령 단위로 추산된 발열량을 기초로, 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 명령의 실행에 관계되는 블록의 발열도수를 누적 가산하는 발열도수 가산부와,
    각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함하는 것을 특징으로 하는 정보처리장치.
  26. 발열제어 대상이 되는 복수의 블록의 발열도수를 보유하는 발열도수 보유 레지스터와,
    실행해야 할 명령과 상기 명령의 실행에 관계되는 블록과 그 블록의 발열량에 따른 발열계수를 대응시켜서 저장하는 발열계수 프로파일과,
    실행해야 할 명령을 해석하고, 상기 명령의 실행에 관계되는 상기 블록과 상기 발열계수를 소정의 명령 단위로 특정하여, 상기 발열계수 프로파일에 저장하는 디코더와,
    상기 발열계수 프로파일에 기초해서, 상기 명령의 진행에 맞춰 상기 소정의 명령 단위로 상기 블록의 상기 발열도수를 누적 가산하는 발열도수 가산기와,
    각 블록의 상기 발열도수에 기초해서 실행해야 할 명령을 스케줄링하는 스케줄러를 포함하는 것을 특징으로 하는 정보처리장치.
  27. 실행해야 할 명령을 해독하는 디코더에, 상기 명령의 실행에 관계되는 프로세서 내의 블록의 발열을 해석하는 기능을 갖게 한 것을 특징으로 하는 정보처리장치.
KR1020067012463A 2004-03-29 2004-12-22 프로세서, 멀티프로세서 시스템, 프로세서 시스템,정보처리장치 및 온도제어방법 KR100863387B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004096410A JP3830491B2 (ja) 2004-03-29 2004-03-29 プロセッサ、マルチプロセッサシステム、プロセッサシステム、情報処理装置および温度制御方法
JPJP-P-2004-00096410 2004-03-29

Publications (2)

Publication Number Publication Date
KR20060130593A true KR20060130593A (ko) 2006-12-19
KR100863387B1 KR100863387B1 (ko) 2008-10-13

Family

ID=35056365

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067012463A KR100863387B1 (ko) 2004-03-29 2004-12-22 프로세서, 멀티프로세서 시스템, 프로세서 시스템,정보처리장치 및 온도제어방법

Country Status (9)

Country Link
US (1) US20070198134A1 (ko)
EP (1) EP1734446B1 (ko)
JP (1) JP3830491B2 (ko)
KR (1) KR100863387B1 (ko)
CN (1) CN100495349C (ko)
CA (1) CA2560451C (ko)
MX (1) MXPA06006062A (ko)
TW (1) TWI326819B (ko)
WO (1) WO2005093569A1 (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7313709B2 (en) * 2004-11-05 2007-12-25 International Business Machines Corporation Instruction set with thermal opcode for high-performance microprocessor, microprocessor, and method therefor
US7848901B2 (en) 2005-11-29 2010-12-07 International Business Machines Corporation Tracing thermal data via performance monitoring
US7480586B2 (en) * 2005-11-29 2009-01-20 International Business Machines Corporation Thermal interrupt generation
US7512530B2 (en) * 2005-11-29 2009-03-31 International Business Machines Corporation Generation of software thermal profiles for applications in a simulated environment
US7376532B2 (en) 2005-11-29 2008-05-20 International Business Machines Corporation Maximal temperature logging
US7490017B2 (en) * 2005-11-29 2009-02-10 International Business Machines Corporation Analytical generation of software thermal profiles
US7698089B2 (en) * 2005-11-29 2010-04-13 International Business Machines Corporation Generation of software thermal profiles executed on a set of processors using processor activity
US20070124618A1 (en) * 2005-11-29 2007-05-31 Aguilar Maximino Jr Optimizing power and performance using software and hardware thermal profiles
US7512513B2 (en) * 2005-11-29 2009-03-31 International Business Machines Corporation Thermal throttling control for testing of real-time software
US7460932B2 (en) * 2005-11-29 2008-12-02 International Business Machines Corporation Support of deep power savings mode and partial good in a thermal management system
US7395174B2 (en) * 2005-11-29 2008-07-01 International Business Machines Corporation Generation of software thermal profiles executed on a set of processors using thermal sampling
US7681053B2 (en) * 2005-11-29 2010-03-16 International Business Machines Corporation Thermal throttle control with minimal impact to interrupt latency
US7721128B2 (en) 2005-11-29 2010-05-18 International Business Machines Corporation Implementation of thermal throttling logic
US7603576B2 (en) * 2005-11-29 2009-10-13 International Business Machines Corporation Hysteresis in thermal throttling
US8037893B2 (en) * 2006-05-03 2011-10-18 International Business Machines Corporation Optimizing thermal performance using thermal flow analysis
US7552346B2 (en) * 2006-05-03 2009-06-23 International Business Machines Corporation Dynamically adapting software for reducing a thermal state of a processor core based on its thermal index
US20070260894A1 (en) * 2006-05-03 2007-11-08 Aguilar Maximino Jr Optimizing thermal performance using feed-back directed optimization
US7596430B2 (en) * 2006-05-03 2009-09-29 International Business Machines Corporation Selection of processor cores for optimal thermal performance
US8027798B2 (en) * 2007-11-08 2011-09-27 International Business Machines Corporation Digital thermal sensor test implementation without using main core voltage supply
US7953957B2 (en) * 2008-02-11 2011-05-31 International Business Machines Corporation Mapping and distributing parallel algorithms to compute nodes in a parallel computer based on temperatures of the compute nodes in a hardware profile and a hardware independent application profile describing thermal characteristics of each parallel algorithm
US7757233B2 (en) * 2008-07-10 2010-07-13 International Business Machines Corporation Controlling a computer system having a processor including a plurality of cores
US8311683B2 (en) * 2009-04-29 2012-11-13 International Business Machines Corporation Processor cooling management
US20110138395A1 (en) * 2009-12-08 2011-06-09 Empire Technology Development Llc Thermal management in multi-core processor
CN102221875B (zh) * 2010-06-30 2014-06-25 威盛电子股份有限公司 微处理器、操作微处理器的方法
US8942857B2 (en) * 2011-04-22 2015-01-27 Qualcomm Incorporated Method and system for thermal load management in a portable computing device
US8595525B2 (en) * 2011-09-22 2013-11-26 Qualcomm Incorporated On-chip thermal management techniques using inter-processor time dependent power density data for indentification of thermal aggressors
JP2014106917A (ja) * 2012-11-29 2014-06-09 Canon Inc 情報処理装置、その制御方法、及びプログラム
WO2015035141A1 (en) 2013-09-09 2015-03-12 Seagate Technology Llc Mobile data storage device with temperature management
KR20150050135A (ko) 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
US10416737B2 (en) * 2014-11-04 2019-09-17 Qualcomm Incorporated Thermal mitigation based on predicted temperatures
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
US10114649B2 (en) 2015-05-26 2018-10-30 International Business Machines Corporation Thermal availability based instruction assignment for execution
WO2018018424A1 (zh) * 2016-07-26 2018-02-01 张升泽 基于芯片的温度控制方法及系统
US20220300324A1 (en) * 2021-03-19 2022-09-22 Mediatek Inc. Thermal-aware task scheduling

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5502838A (en) * 1994-04-28 1996-03-26 Consilium Overseas Limited Temperature management for integrated circuits
US5452277A (en) * 1993-12-30 1995-09-19 International Business Machines Corporation Adaptive system for optimizing disk drive power consumption
US6000036A (en) * 1996-07-17 1999-12-07 International Business Machines Corp. Logical steering to avoid hot spots on integrated circuits
JP3567354B2 (ja) * 1996-12-26 2004-09-22 株式会社リコー マルチプロセッサシステムおよび命令作成装置
US6314447B1 (en) * 1999-10-04 2001-11-06 Sony Corporation System uses local registry and load balancing procedure for identifying processing capabilities of a remote device to perform a processing task
ATE277378T1 (de) * 1999-10-25 2004-10-15 Texas Instruments Inc Intelligente leistungssteuerung in verteilten verarbeitungssystemen
US6564328B1 (en) * 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
US7174194B2 (en) 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems
US6986066B2 (en) * 2001-01-05 2006-01-10 International Business Machines Corporation Computer system having low energy consumption
US6687636B2 (en) * 2001-04-09 2004-02-03 Burgett, Inc. Method of estimating solenoid heat accumulation and compensating for solenoid force loss
WO2003083693A1 (fr) * 2002-04-03 2003-10-09 Fujitsu Limited Planificateur de taches dans un systeme de traitement distribue
US7086058B2 (en) * 2002-06-06 2006-08-01 International Business Machines Corporation Method and apparatus to eliminate processor core hot spots

Also Published As

Publication number Publication date
WO2005093569A1 (ja) 2005-10-06
EP1734446A4 (en) 2011-06-01
KR100863387B1 (ko) 2008-10-13
EP1734446A1 (en) 2006-12-20
JP3830491B2 (ja) 2006-10-04
EP1734446B1 (en) 2012-11-21
CA2560451A1 (en) 2005-10-06
TWI326819B (en) 2010-07-01
CN100495349C (zh) 2009-06-03
CN1894668A (zh) 2007-01-10
CA2560451C (en) 2014-06-17
MXPA06006062A (es) 2006-08-11
US20070198134A1 (en) 2007-08-23
TW200604789A (en) 2006-02-01
JP2005284625A (ja) 2005-10-13

Similar Documents

Publication Publication Date Title
KR100863387B1 (ko) 프로세서, 멀티프로세서 시스템, 프로세서 시스템,정보처리장치 및 온도제어방법
Chantem et al. Temperature-aware scheduling and assignment for hard real-time applications on MPSoCs
Coskun et al. Temperature-aware MPSoC scheduling for reducing hot spots and gradients
Coskun et al. Static and dynamic temperature-aware scheduling for multiprocessor SoCs
Skadron et al. Temperature-aware microarchitecture: Modeling and implementation
Sheikh et al. An overview and classification of thermal-aware scheduling techniques for multi-core processing systems
KR100878660B1 (ko) 프로세서, 정보처리장치, 정보처리시스템, 프로세서의 제어방법, 및 프로세서의 제어 프로그램을 격납한 기록매체
US8595525B2 (en) On-chip thermal management techniques using inter-processor time dependent power density data for indentification of thermal aggressors
Ayoub et al. Temperature aware dynamic workload scheduling in multisocket cpu servers
WO2012145212A2 (en) Method and system for thermal load management in a portable computing device
Lee et al. Thermal-Aware Scheduling for Integrated CPUs--GPU Platforms
Wächter et al. Predictive thermal management for energy-efficient execution of concurrent applications on heterogeneous multicores
Song et al. Managing performance-reliability tradeoffs in multicore processors
Krishna et al. Thermal-aware management techniques for cyber-physical systems
Zhou et al. Performance-aware thermal management via task scheduling
Yun et al. Thermal-aware scheduling of critical applications using job migration and power-gating on multi-core chips
Rao et al. Fast and accurate prediction of the steady-state throughput of multicore processors under thermal constraints
US20140223199A1 (en) Adaptive Temperature and Power Calculation for Integrated Circuits
Chien et al. A thermal-aware scheduling for multicore architectures
JP4397843B2 (ja) プロセッサ、マルチプロセッサシステムおよび温度制御方法
Sapra et al. Exploring multi-core systems with lifetime reliability and power consumption trade-offs
Patnaik et al. Prowatch: a proactive cross-layer workload-aware temperature management framework for low-power chip multi-processors
KR100838438B1 (ko) 태스크 관리방법, 태스크 관리장치, 반도체 집적회로, 전자장치, 태스크 관리 시스템, 및 프로그램을 격납한 기록매체
JP5444964B2 (ja) 情報処理装置及びスケジューリング方法
Gran et al. Optimizing a combined WCET-WCEC problem in instruction fetching for real-time systems

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120924

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130924

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150917

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee