KR20040075287A - 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 - Google Patents

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 Download PDF

Info

Publication number
KR20040075287A
KR20040075287A KR1020040011337A KR20040011337A KR20040075287A KR 20040075287 A KR20040075287 A KR 20040075287A KR 1020040011337 A KR1020040011337 A KR 1020040011337A KR 20040011337 A KR20040011337 A KR 20040011337A KR 20040075287 A KR20040075287 A KR 20040075287A
Authority
KR
South Korea
Prior art keywords
performance level
smt processor
threads
processor
threshold
Prior art date
Application number
KR1020040011337A
Other languages
Korean (ko)
Other versions
KR100594256B1 (en
Inventor
박기호
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/631,601 external-priority patent/US7152170B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20040075287A publication Critical patent/KR20040075287A/en
Application granted granted Critical
Publication of KR100594256B1 publication Critical patent/KR100594256B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • AHUMAN NECESSITIES
    • A41WEARING APPAREL
    • A41DOUTERWEAR; PROTECTIVE GARMENTS; ACCESSORIES
    • A41D19/00Gloves
    • A41D19/015Protective gloves
    • A41D19/01547Protective gloves with grip improving means
    • 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
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Textile Engineering (AREA)
  • Multimedia (AREA)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

PURPOSE: An SMT(Simultaneous Multi-Threading) processor, a computer program product operating other performance levels based on number of operating threads, and an operating method for the same are provided to increase performance while reducing power consumption. CONSTITUTION: When a new thread is generated in the SMT processor(200), a thread managing circuit(205) allots a set of processing circuits used by the new thread. The processing circuits include a program counter(215), a set of floating point registers(245), and a set of integer registers(250). A fetch circuit(210) fetches a command from a command cache(220) based on a position provided from the allotted program counter, and the command is provided to a decoder(225). The decoder outputs the decoded command to a register renaming circuit(230). According to a form of the command provided from the register renaming circuit, the renamed command is provided to a floating point command queue(235) or an integer command queue(240) by the register renaming circuit.

Description

동시 다중 쓰레딩 프로세서 회로, 동작하는 쓰레드들의 수에 기초하여 다른 성능레벨들에서 동작하도록 구성되는 컴퓨터 프로그램 제품 및 이들을 동작시키는 방법{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}Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on concurrent multithreading processor circuits, and how to operate them at different performance levels based on the number of threads running on a number of operating threads and methods of operating}

본 발명은 컴퓨터 프로세서 구조에 관한 것으로, 특히 동시 다중 쓰레딩(Simultaneous Multi-Threading, SMT) 컴퓨터 프로세서들, 관련된 컴퓨터 프로그램 제품들, 및 이들을 동작시키는 방법들에 관한 것이다.TECHNICAL FIELD The present invention relates to a computer processor architecture, and more particularly, to simultaneous multi-threading (SMT) computer processors, related computer program products, and methods of operating them.

동시 다중 쓰레딩(Simultaneous Multi-Threading, SMT)는 각 싸이클 동안에 다수의 독립적인 쓰레드들에게 명령들을 내보내는 것(issue)을 허락하는 하드웨어 다중 쓰레딩을 이용하는 프로세서 구조이다. 어느 주어진 싸이클에서 단지 하나의 하드웨어 상황(context)(즉 하나의 쓰레드)만이 활성화되는 다른 하드웨어 다중 쓰레디드(multithreaded) 구조들과 달리, SMT 구조는 모든 쓰레드 상황들(contexts)에게 프로세서 자원들을 동시에 공유하는 것을 허락할 수 있다.Simultaneous Multi-Threading (SMT) is a processor architecture that uses hardware multithreading to allow issues to be issued to multiple independent threads during each cycle. Unlike other hardware multithreaded structures in which only one hardware context (i.e. one thread) is active in any given cycle, the SMT structure shares processor resources to all thread contexts simultaneously. Can be allowed to do.

SMT 프로세서는, SMT 프로세서 내에서 긴 레이턴시(long latency) 동작들의효과들을 감소시킬 수도 있는 명령들을 수행하기 위해 낭비된(wasted) 싸이클들을 활용할 수 있다. 또한 쓰레드들의 수가 증가함에 따라 성능(performance)도 증가할 수 있으나 반면에 SMT 프로세서에 의해 소모되는 전력이 증가할 수 있다.The SMT processor may utilize wasted cycles to perform instructions that may reduce the effects of long latency operations within the SMT processor. In addition, performance can increase as the number of threads increases, while the power consumed by an SMT processor can increase.

종래의 SMT 프로세서의 블록도가 도 1에 개시되어 있다. 도 1의 종래의 SMT 프로세서의 동작은 참고문헌(Dean M. Tullsen, Susan J. Egger, Henry M. Levy, Jack L. Lo, Rebecca L. Stamm, "Exploiting Choice: Instruction Fetch and issue on an Implementable Simultaneous Multithreading Processor", 23rd Annual International Symposium on Computer Architecture, pp. 191-202, 1996)에 상세히 개시되어 있다. 종래의 SMT 프로세서의 구조 및 동작은 당업계에서 잘 알려진 것이므로 여기에서 상세한 설명은 생략된다.A block diagram of a conventional SMT processor is shown in FIG. Operation of the conventional SMT processor of FIG. 1 is described by Dean M. Tullsen, Susan J. Egger, Henry M. Levy, Jack L. Lo, Rebecca L. Stamm, "Exploiting Choice: Instruction Fetch and issue on an Implementable Simultaneous Multithreading Processor ", 23rd Annual International Symposium on Computer Architecture, pp. 191-202, 1996). Since the structure and operation of the conventional SMT processor is well known in the art, a detailed description thereof will be omitted.

본 발명이 이루고자하는 기술적 과제는, 전력소모를 감소시키면서 성능도 증가시킬 수 있는 동시 다중 쓰레딩(SMT) 프로세서를 제공하는 데 있다.It is an object of the present invention to provide a simultaneous multithreading (SMT) processor that can increase performance while reducing power consumption.

본 발명이 이루고자하는 다른 기술적 과제는, 상기 동시 다중 쓰레딩 프로세서를 동작시키는 방법을 제공하는 데 있다.Another object of the present invention is to provide a method of operating the simultaneous multithreading processor.

본 발명이 이루고자하는 또 다른 기술적 과제는, 상기 동시 다중 쓰레딩 프로세서를 동작시키는 컴퓨터 프로그램 제품(product)을 제공하는 데 있다.Another object of the present invention is to provide a computer program product for operating the simultaneous multithreading processor.

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.BRIEF DESCRIPTION OF THE DRAWINGS In order to better understand the drawings cited in the detailed description of the invention, a brief description of each drawing is provided.

도 1은 종래의 동시 다중 쓰레딩(SMT) 프로세서 구조를 나타내는 블록도이다.1 is a block diagram illustrating a conventional simultaneous multithreading (SMT) processor structure.

도 2는 본 발명에 따른 SMT 프로세서의 실시예를 나타내는 블록도이다.2 is a block diagram illustrating an embodiment of an SMT processor according to the present invention.

도 3은 본 발명에 따른 쓰레드 관리 회로의 실시예를 나타내는 블록도이다.3 is a block diagram illustrating an embodiment of a thread management circuit according to the present invention.

도 4는 본 발명에 따른 성능레벨 제어회로의 실시예를 나타내는 블록도이다.4 is a block diagram showing an embodiment of a performance level control circuit according to the present invention.

도 5는 본 발명에 따른 성능레벨 제어회로의 실시예를 나타내는 플로우차트이다.5 is a flowchart showing an embodiment of a performance level control circuit according to the present invention.

도 6은 본 발명에 따른 캐쉬 메모리의 실시예를 나타내는 블록도이다.6 is a block diagram illustrating an embodiment of a cache memory according to the present invention.

도 7은 본 발명에 따른 SMT 프로세서의 다른 실시예를 나타내는 블록도이다.7 is a block diagram illustrating another embodiment of an SMT processor according to the present invention.

도 8은 본 발명에 따른 SMT 프로세서의 또 다른 실시예를 나타내는 블록도이다.8 is a block diagram illustrating another embodiment of an SMT processor according to the present invention.

도 9는 본 발명에 따른 SMT 프로세서의 또 다른 실시예를 나타내는 블록도이다.9 is a block diagram illustrating another embodiment of an SMT processor according to the present invention.

도 10은 본 발명에 따른 성능레벨 제어회로의 다른 실시예를 나타내는 블록도이다.10 is a block diagram showing another embodiment of a performance level control circuit according to the present invention.

도 11은 본 발명에 따른 성능레벨 제어회로의 다른 실시예를 나타내는 플로우차트이다.11 is a flowchart showing another embodiment of a performance level control circuit according to the present invention.

후술되는 본 발명에 따른 실시예들은, SMT 프로세서에 의해 동작되는 쓰레드들의 수에 기초하여 다른 성능레벨들에서 동작하는 프로세싱(processing) 회로들,컴퓨터 프로그램 제품들, 및 방법들을 제공할 수 있다.Embodiments according to the present invention described below may provide processing circuits, computer program products, and methods that operate at different performance levels based on the number of threads operated by an SMT processor.

본 발명에 따른 일부 실시예들에서는, SMT 프로세서에서 쓰레드 동작과 관련되는 프로세싱 회로들, 즉 플로우팅 포인트 유닛(floating point unit) 또는 데이터 캐쉬(data cache)와 같은 프로세싱 회로들이 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 고전력 모드(high power mode) 및 저전력 모드(low power mode)중 하나로 동작할 수 있다. 또한, 상기 SMT 프로세서에 의해 동작되는 쓰레드들의 수가 증가하면 상기 프로세싱 회로들의 성능레벨들이 감소될 수 있다. 그럼으로써 상기 SMT 프로세서의 구조적 이점들(benefits)이 제공되어 쓰레드들과 관련되는 프로세싱 회로들에 의해 소모되는 전력량이 감소될 수 있다. 또한, 상기 SMT 프로세서는 동일한 전력으로 그러나 더 높은 성능에서 동작할 수 있고 또는 종래의 SMT 프로세서들보다 더 많은 전력을 소모하지만 더 높은 성능레벨들에서 동작할 수 있다.In some embodiments in accordance with the present invention, processing circuits associated with thread operation in an SMT processor, i.e., processing circuits such as a floating point unit or data cache, are currently operated by the SMT processor. It may operate in one of a high power mode and a low power mode based on the number of threads that become. In addition, as the number of threads operated by the SMT processor increases, performance levels of the processing circuits may decrease. As such, the architectural benefits of the SMT processor may be provided to reduce the amount of power consumed by the processing circuits associated with the threads. In addition, the SMT processor may operate at the same power but at higher performance or consume more power than conventional SMT processors but at higher performance levels.

본 발명에 따른 일부 실시예들에서는, 상기 프로세싱 회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때 제1성능레벨에서 동작하도록 구성되고 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값보다 클 때에는 제2성능레벨에서 동작하도록 구성될 수 있다.In some embodiments according to the present invention, the processing circuit is configured to operate at a first performance level when the number of threads currently operated by the SMT processor is less than or equal to a threshold and is currently operated by the SMT processor. Can be configured to operate at a second performance level when the number of fields is greater than the threshold.

본 발명에 따른 일부 실시예들에서는, 성능레벨 제어회로가 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 상기 프로세싱 회로에 대한 성능레벨을 제공하도록 구성될 수 있다. 본 발명에 따른 일부 실시예들에서는, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때 상기 프로세싱 회로에 제공되는 상기 성능레벨을 제1성능레벨로 증가시킬 수 있다. 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값을 초과할 때에는 상기 프로세싱 회로에 제공되는 상기 성능레벨을 상기 제1성능레벨보다 낮은 제2성능레벨로 감소시킬 수 있다.In some embodiments according to the present invention, a performance level control circuit may be configured to provide a performance level for the processing circuit based on the number of threads currently operating by the SMT processor. In some embodiments according to the present invention, the performance level control circuit increases the performance level provided to the processing circuit to a first performance level when the number of threads currently operated by the SMT processor is less than or equal to a threshold. You can. The performance level control circuit may reduce the performance level provided to the processing circuit to a second performance level lower than the first performance level when the number of threads currently operated by the SMT processor exceeds the threshold. .

본 발명에 따른 일부 실시예들에서는, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 제1문턱값보다 큰 제2문턱값을 초과할 때에는 상기 프로세싱 회로에 제공되는 상기 성능레벨을 상기 제2성능레벨보다 낮은 제3성능레벨로 더 감소시킨다.In some embodiments according to the present invention, the performance level control circuit provides the performance provided to the processing circuit when the number of threads currently operated by the SMT processor exceeds a second threshold value greater than the first threshold value. The level is further reduced to a third performance level lower than the second performance level.

성능레벨 가변에 대한 여러 가지 실시예들이 본 발명에 따라 제공될 수 있다. 예컨대, 본 발명에 따른 일부 실시예들에서는, 상기 프로세싱 회로는 태그 메모리 및 데이터 메모리를 포함하는 캐쉬 메모리일 수 있다. 여기에서 상기 데이터 메모리는 상기 캐쉬 메모리 회로가 제1성능레벨에서 동작할 때 상기 태그 메모리에 대한 액세스와 동시에 저장된 데이터(cached data)를 제공하도록 구성된다.Various embodiments of varying performance levels may be provided in accordance with the present invention. For example, in some embodiments according to the present invention, the processing circuit can be a cache memory including a tag memory and a data memory. Wherein the data memory is configured to provide cached data simultaneously with access to the tag memory when the cache memory circuitry operates at a first performance level.

상기 데이터 메모리는 상기 캐쉬 메모리 회로가 상기 제1성능레벨보다 낮은 제2성능레벨에서 동작할 때 상기 태그 메모리에서의 히트(hit)에 응답하여 저장된 데이터(cached data)를 제공하도록 구성될 수 있다.The data memory may be configured to provide cached data in response to a hit in the tag memory when the cache memory circuit operates at a second performance level lower than the first performance level.

본 발명에 따른 일부 실시예들에서는, 상기 캐쉬 메모리는 데이터를 저장하도록 구성되는 데이터 캐쉬 메모리 및 명령들을 저장하도록 구성되는 명령 캐쉬 메모리중 적어도 하나일 수 있다. 본 발명에 따른 일부 실시예들에서는, 상기 데이터메모리는 상기 캐쉬 메모리 회로가 상기 제2성능레벨에서 동작할 때에는 상기 태그 메모리에서의 미스(miss)에 응답하여 저장된(cached) 데이터를 제공하지 않도록 구성될 수 있다.In some embodiments according to the present invention, the cache memory may be at least one of a data cache memory configured to store data and an instruction cache memory configured to store instructions. In some embodiments according to the present invention, the data memory is configured to not provide cached data in response to a miss in the tag memory when the cache memory circuit operates at the second performance level. Can be.

본 발명에 따른 일부 실시예들에서는, 상기 프로세싱 회로는 플로우팅 포인트 유닛(unit)일 수 있다. 본 발명에 따른 일부 실시예들에서는, 상기 플로우팅 포인트 유닛은 상기 SMT 프로세서에 의해 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때 제1성능레벨에서 동작하도록 구성되는 제1플로우팅 포인트 유닛일 수 있다. 그리고 상기 SMT 프로세서는 상기 SMT 프로세서에 의해 동작되는 쓰레드들의 수가 상기 문턱값보다 클때에는 상기 제1성능레벨보다 낮은 제2성능레벨에서 동작하도록 구성되는 제2플로우팅 포인트 유닛을 더 구비할 수 있다.In some embodiments according to the present invention, the processing circuit may be a floating point unit. In some embodiments according to the present invention, the floating point unit may be a first floating point unit configured to operate at a first performance level when the number of threads operated by the SMT processor is less than or equal to a threshold. have. The SMT processor may further include a second floating point unit configured to operate at a second performance level lower than the first performance level when the number of threads operated by the SMT processor is greater than the threshold.

본 발명에 따른 일부 실시예들에서는, 상기 성능레벨 제어회로는 상기 SMT 프로세서에서 각각 생성되고 완료되는 쓰레드들에 응답하여 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키거나 감소시키도록 구성될 수 있다.In some embodiments according to the present invention, the performance level control circuitry may be configured to increase or decrease the number of threads currently operating by the SMT processor in response to threads that are each created and completed in the SMT processor. Can be.

본 발명에 따른 일부 실시예들에서는, 제2프로세싱 회로는 상기 문턱값보다 더 크게 증가되고 상기 SMT 프로세서에서 현재 동작되는 쓰레드들의 수에 응답하여 상기 제1성능레벨보다 낮은 제2성능레벨에서 동작하도록 구성된다.In some embodiments according to the present invention, the second processing circuit is configured to operate at a second performance level that is greater than the threshold and is lower than the first performance level in response to the number of threads currently operating in the SMT processor. It is composed.

본 발명에 따른 일부 실시예들에서는, 상기 성능레벨 제어회로는 문턱값보다 작거나 같은 값으로부터 상기 문턱값보다 더 큰 값까지 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키기 위해서 새로운 쓰레드의 생성에 응답하여 상기 적어도 하나의 프로세싱 회로에 제공되는 성능레벨을 감소시키도록 구성될수 있다. 본 발명에 따른 일부 실시예들에서는, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 복수개의 상승하는 문턱값들의 각각을 초과할 때 상기 프로세싱 회로의 성능레벨을 복수개의 하강하는 성능레벨들의 하나로 감소시키도록 구성될 수 있다.In some embodiments according to the present invention, the performance level control circuitry is configured to increase the number of threads currently running by the SMT processor from a value less than or equal to a threshold to a value greater than the threshold. And may be configured to reduce the performance level provided to the at least one processing circuit in response to the generation. In some embodiments according to the present invention, the performance level control circuit is configured to reduce the performance level of the processing circuit by a plurality of levels when the number of threads currently operated by the SMT processor exceeds each of a plurality of rising thresholds. It can be configured to reduce one of the performance levels.

본 발명에 따른 일부 실시예들에서는, 상기 성능레벨 제어회로는 제1프로세싱 회로에 대해서는 제1성능레벨을 유지하고 그리고 문턱값보다 작거나 같은 값으로부터 상기 문턱값보다 더 큰 값까지 증가하는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 응답하여 제2프로세싱 회로에 상기 제1성능레벨보다 낮은 제2성능레벨을 제공하도록 구성될 수 있다.In some embodiments according to the present invention, the performance level control circuit maintains a first performance level for a first processing circuit and increases the SMT from a value less than or equal to a threshold to a value greater than the threshold. The second processing circuit may be configured to provide a second performance level lower than the first performance level in response to the number of threads currently operated by the processor.

본 발명에 따른 다른 실시예들에서는, 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 상기 SMT 프로세서 내의 프로세싱 회로들에 성능레벨을 제공하도록 구성될 수 있다.In other embodiments according to the present invention, the performance level control circuit may be configured to provide a performance level to processing circuits within the SMT processor based on the number of threads currently operating by the SMT processor.

본 발명에 따른 또 다른 실시예들에서는, 쓰레드 관리회로는 쓰레드들이 생성될 때 상기 SMT 프로세서에서 동작되는 쓰레드들에 상기 SMT 프로세서와 관련된 프로세싱 회로들을 할당하도록 구성될 수 있다. 성능레벨 제어회로는, 적어도 하나의 문턱값에 비교되어 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 복수개의 성능레벨들의 하나를 상기 프로세싱 회로들에 제공하도록 구성될 수 있다.In still other embodiments according to the invention, the thread management circuitry may be configured to assign processing circuits associated with the SMT processor to threads that are operated on the SMT processor when threads are created. The performance level control circuit may be configured to provide the processing circuits with one of a plurality of performance levels based on the number of threads currently operating by the SMT processor compared to at least one threshold.

본 발명에 따른 또 다른 실시예들에서는, SMT 프로세서와 관련되는 캐쉬 메모리는 태그 메모리, 및 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 상기 태그 메모리와 동시에 액세스되거나 또는 순차적으로 액세스되는 데이터 메모리를 구비할 수 있다.In still other embodiments according to the present invention, a cache memory associated with an SMT processor may be a tag memory and data simultaneously accessed or sequentially accessed with the tag memory based on the number of threads currently operated by the SMT processor. Memory may be provided.

본 발명과 본 발명의 동작 상의 잇점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings illustrating preferred embodiments of the present invention and the contents described in the accompanying drawings.

이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. Like reference numerals in the drawings denote like elements.

본 발명은 회로들, 컴퓨터 프로그램 제품들, 및 방법들로서 실시될 수 있다. 따라서 본 발명은 하드웨어 실시형태, 소프트웨어 실시형태, 또는 소프트웨어와 하드웨어를 결합한 실시형태를 가질 수 있다. 또한, 본 발명은 컴퓨터 프로그램 코드를 갖는 컴퓨터 저장 매체(computer-usable storage medium) 상의 컴퓨터 프로그램 제춤의 형태를 가질 수도 있다. 컴퓨터 저장 매체로서 하드 디스크들, CD-ROM들, 광 저장장치들, 및 마그네틱 저장장치들이 이용될 수 있다.The invention may be practiced as circuits, computer program products, and methods. Thus, the present invention may have a hardware embodiment, a software embodiment, or an embodiment combining software and hardware. The invention may also take the form of a computer program preparation on a computer-usable storage medium having computer program code. Hard disks, CD-ROMs, optical storage devices, and magnetic storage devices may be used as the computer storage medium.

본 발명에 따른 동작들을 수행하기 위한 컴퓨터 프로그램 코드 또는 "코드"는 JAVA Smalltalk 또는 C++, JavaScript, Visual Basic, TQSL, Perl과 같은 목적지향(object oriented) 프로그램 언어 또는 다양한 다른 프로그램 언어들로 작성될 수 있다. 본 발명의 소프트웨어 실시예들은 특정한 프로그램 언어를 가지고 구현될 필요는 없다. 코드의 일부들은 중개서버(intermediary server)에 의해 이용되는 한 개 이상의 시스템들상에서 완전히 수행될 수 있다.Computer program code or "code" for performing the operations according to the invention may be written in JAVA Smalltalk or object oriented programming languages such as C ++, JavaScript, Visual Basic, TQSL, Perl or various other programming languages. have. Software embodiments of the present invention need not be implemented with a particular programming language. Portions of code can be fully executed on one or more systems used by an intermediary server.

코드는 한 개 이상의 컴퓨터 시스템들상에서 완전히 수행될 수 있고 또는 서버상에서 일부가 그리고 클라인트(client) 장치상에서 일부가 수행될 수도 있으며 또는 통신 네크워크에서 중간점에 있는 대리(proxy) 서버상에서 수행될 수도 있다. 클라이언트 장치는 LAN 또는 WAN(예컨대 인터넷트) 상의 서버에 연결될 수 있고 또는 연결이 인터넷트를 통해(예컨대 인터넷트 서비스 제공자(Internet Service Provider)를 경유하여) 이루어질 수도 있다. 본 발명은 여러 가지 형태의 컴퓨터 네트워크들상에서 여러 가지 프로토콜들(protocols)을 사용하여 실시될 수 있다.The code may be executed entirely on one or more computer systems or partly on the server and partly on the client device or on a proxy server midway in the communication network. have. The client device may be connected to a server on a LAN or WAN (eg, the Internet) or the connection may be made via the Internet (eg, via an Internet Service Provider). The invention may be practiced using various protocols on various types of computer networks.

본 발명은 본 발명의 실시예들에 따른 방법들, 시스템들, 및 컴퓨터 프로그램 제품들을 나타내는 블록도들 및 플로우 차트들을 참조하여 아래에서 설명된다. 블록도들과 플로우 차트들의 각 블록은 컴퓨터 프로그램 명령들에 의해 수행될 수 있음은 자명하다. 이들 컴퓨터 프로그램 명령들은, 이 명령들이 블록도 및/또는 플로우 차트에 기술된 기능들을 수행하기 위한 수단들을 생성하도록, 동시 다중 쓰레딩(SMT) 프로세서 회로, 특정목적 컴퓨터, 또는 다른 프로그램 가능한 데이터 처리장치에 제공될 수 있다.The invention is described below with reference to block diagrams and flow charts illustrating methods, systems, and computer program products according to embodiments of the invention. Obviously, each block of the block diagrams and flow charts may be performed by computer program instructions. These computer program instructions may be directed to a simultaneous multithreading (SMT) processor circuit, a special purpose computer, or other programmable data processing device such that these instructions generate means for performing the functions described in the block diagram and / or flow chart. Can be provided.

이들 컴퓨터 프로그램 명령들은 컴퓨터 독출가능 메모리(computer-readable memory)에 저장될 수 있다. 이 컴퓨터 독출가능 메모리는, 이 컴퓨터 독출가능 메모리에 저장된 명령들이 블록도 및/또는 플로우차트에 기술된 기능들을 수행하는 명령수단을 포함하는 제조품을 생성하도록, 컴퓨터 또는 다른 프로그램 가능한 데이터 처리장치를 지시(direct)할 수 있다.These computer program instructions may be stored in computer-readable memory. The computer readable memory instructs the computer or other programmable data processing apparatus such that the instructions stored in the computer readable memory produce an article of manufacture comprising instruction means for performing the functions described in the block diagram and / or flowchart. You can direct.

컴퓨터 프로그램 명령들은, 일련의 동작 단계들이 컴퓨터 및/또는 다른 프로그램 가능한 장치상에서 수행되도록, SMT 프로세서 회로 또는 다른 프로그램 가능한 데이터 처리장치에 로드(load)될 수 있다. SMT 프로세서 회로 또는 다른 프로그램 가능한 데이터 처리장치에 로드된 이 명령들은 블록도 및/또는 플로우차트에 기술된 기능들을 수행하는 단계들을 제공할 수 있다.Computer program instructions may be loaded into an SMT processor circuit or other programmable data processing device such that a series of operating steps are performed on a computer and / or other programmable device. These instructions, loaded into the SMT processor circuit or other programmable data processor, may provide steps to perform the functions described in the block diagram and / or flowchart.

본 발명에 따른 실시예들은 SMT 프로세서에서 쓰레드들의 동작과 관련된 프로세싱 회로들을 제공할 수 있다. 이 프로세싱 회로들은 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 다른 성능 레벨들에서 동작하도록 구성된다. 다른 성능레벨들은 회로들의 다른 동작속도들 및/또는 정확성의 다른 레벨들을 포함할 수 있다. 본 발명에 따른 일부 실시예들에서는, 프로세싱 회로들이 다른 성능레벨들을 제공하기 위해서 다른 클럭속도에서 동작할 수 있고 및/또는 다른 회로형태들을 사용할 수 있다. 예컨대, 본 발명에 따른 일부 실시예들에서는, SMT 프로세서에서 쓰레드의 동작과 관련된 플로우팅 포인트 유닛(floating point unit) 또는 데이터 캐쉬와 같은 프로세싱 회로들은, SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 고(high) 클럭속도에서의 고 전력모드 또는 저(low) 클럭속도에서의 저 전력모드중 하나에서 동작할 수 있다. 또한 SMT 프로세서에 의해 동작되는 쓰레드들의 수가 증가할 때, 프로세싱 회로들의 성능레벨들은 감소될 수 있고 따라서 SMT 프로세서의 구조적 이점들이 제공되어 쓰레드들과 관련된 프로세싱 회로들에 의해 소모되는 전력양이 감소될 수 있다.Embodiments in accordance with the present invention may provide processing circuits related to the operation of threads in an SMT processor. These processing circuits are configured to operate at different performance levels based on the number of threads currently operating by the SMT processor. Different performance levels may include different operating speeds and / or different levels of accuracy of the circuits. In some embodiments in accordance with the present invention, processing circuits may operate at different clock speeds and / or use other circuit types to provide different performance levels. For example, in some embodiments in accordance with the present invention, processing circuits such as a floating point unit or data cache associated with the operation of a thread in an SMT processor are based on the number of threads currently operating by the SMT processor. Can operate in either a high power mode at a high clock rate or a low power mode at a low clock rate. In addition, when the number of threads operated by an SMT processor increases, the performance levels of the processing circuits can be reduced and thus the architectural advantages of the SMT processor can be provided to reduce the amount of power consumed by the processing circuits associated with the threads. have.

본 발명에 따른 실시예들에서는 다수의 쓰레드들이 서로 병렬적으로 수행되는 것은 자명하다. 여기에서 사용된 바와 같이, "쓰레드"는 관련된 명령들 및 데이터를 갖는 별도의 프로세스일 수 있다. 쓰레드는 다수의 프로세스들을 갖는 병렬 컴퓨터 프로그램의 일부에 해당하는 프로세스를 의미할 수 있다. 또한 쓰레드는 다른 프로그램들과 독립적으로 동작하는 별도의 컴퓨터 프로그램을 의미할 수도 있다. 각 쓰레드는 예컨대 관련된 명령들, 데이터, 프로그램 카운터, 및/또는 레지스터들에 대한 각각의 상태들에 의해 정의되는 관련된 상태(associated state)를 가질 수 있다. 쓰레드에 대한 관련된 상태는 프로세서에 의해 수행되는 쓰레드에 대한 충분한 정보를 포함할 수 있다.In embodiments according to the present invention, it is obvious that a plurality of threads are executed in parallel with each other. As used herein, a "thread" may be a separate process with associated instructions and data. A thread can mean a process that is part of a parallel computer program with multiple processes. A thread can also mean a separate computer program that runs independently of other programs. Each thread may have an associated state defined, for example, by respective states for related instructions, data, program counters, and / or registers. The relevant state for a thread may include sufficient information about the thread being executed by the processor.

본 발명에 따른 일부 실시예들에서는, 성능레벨 제어회로는 SMT 프로세서에서 생성된 쓰레드들에 할당되는 프로세싱 회로들에 각각의 성능레벨들을 제공하도록 구성된다. 예컨대, 성능레벨 제어회로는 프로세싱 회로가 고전력 모드에서 동작할 수 있도록 제1성능레벨을 제공하고 저전력 모드에서 동작할 수 있도록 제2성능레벨을 제공할 수 있다. 본 발명에 따른 또 다른 실시예들에서는, 중간의 성능레벨(즉 고전력과 저전력 사이의 성능레벨들)이 성능레벨 제어회로에 의해 제공된다.In some embodiments in accordance with the present invention, the performance level control circuitry is configured to provide respective performance levels to processing circuits allocated to threads created in the SMT processor. For example, the performance level control circuit may provide a first performance level for the processing circuit to operate in the high power mode and provide a second performance level to operate in the low power mode. In still other embodiments according to the invention, an intermediate performance level (ie, performance levels between high and low power) is provided by the performance level control circuit.

본 발명에 일부 실시예들에서는, 다른 성능레벨들에서 동작하는 프로세싱 회로들이 태그 메모리와 데이터 메모리를 포함하는 캐쉬 메모리일 수 있다. 캐쉬 메모리가 제1성능레벨(즉 고전력 모드)에서 동작할 때는, 태그 메모리와 데이터 메모리는 태그 메모리에 대한 액세스가 히트(hit)이든지 그렇지 않든지에 무관하게 동시에 액세스될 수 있다. 데이터 메모리의 동시 액세스는, 태그 메모리에서의 히트율(hit rate)이 높아질 수 있기 때문에 더 큰 성능을 제공할 수 있다. 또는, 캐쉬메모리는, 데이터 메모리가 태그 메모리에서의 히트에 응답해서만 액세스되는 제2성능레벨(즉 저전력 모드)에서 동작할 수 있다. 그러므로 태그 미스(miss)가 일어나는 경우에는, 데이터 메모리를 액세스하는 것과 관련되는 전력소모의 일부를 줄일 수 있다.In some embodiments of the present invention, the processing circuits operating at different performance levels may be cache memory including a tag memory and a data memory. When the cache memory is operating in the first performance level (ie, high power mode), the tag memory and the data memory can be accessed simultaneously regardless of whether the access to the tag memory is a hit or not. Simultaneous access of the data memory can provide greater performance because the hit rate in the tag memory can be higher. Alternatively, the cache memory may operate at a second performance level (ie, low power mode) in which the data memory is accessed only in response to a hit in the tag memory. Thus, in the event of a tag miss, some of the power consumption associated with accessing the data memory can be reduced.

본 발명에 따른 또 다른 실시예들에서는, 쓰레드들의 동작과 관련된 프로세싱 회로들은 명령 캐쉬일 수 있고 플로우팅 포인트 회로들 또는 정수/로드-스토어(integer/load-store) 회로들과 같은 다른 형태의 프로세싱 회로들일 수 있다. 게다가, 이들 프로세싱 회로들 각각은 다른 성능레벨들에서 동작할 수 있다. 예컨대, 본 발명에 따른 일부 실시예들에서는, 캐쉬 메모리, 명령 캐쉬, 및 플로우팅 포인트 회로들, 및 정수/로드-스토어 회로들이 동시에 서로 다른 성능레벨에서 동작할 수 있다.In still other embodiments according to the present invention, the processing circuits associated with the operation of the threads may be instruction caches and other forms of processing such as floating point circuits or integer / load-store circuits. Circuits. In addition, each of these processing circuits may operate at different performance levels. For example, in some embodiments in accordance with the present invention, cache memory, instruction cache, and floating point circuits, and integer / load-store circuits may operate simultaneously at different performance levels.

본 발명에 따른 또 다른 실시예들에서는, 같은 형태의 프로세싱 회로들(플로우팅 포인트 회로들 및 정수/로드-스토어 회로들과 같은)이 이 회로들의 일부가 제1성능레벨에서 동작하고 다른 일부는 제2성능레벨에서 동작하도록 다른 성능 카테고리들로 분리될 수 있다. 예컨대, 본 발명에 따른 일부 실시예들에서는, 플로우팅 포인트 회로들의 일부가 고전력모드에서 동작하도록 구성되고 반면에 다른 플로우팅 포인트 회로들은 저전력 모드에서 동작하도록 구성된다.In still other embodiments according to the present invention, the same type of processing circuits (such as floating point circuits and integer / load-store circuits) may be used where some of these circuits operate at a first performance level and others are It may be divided into different performance categories to operate at the second performance level. For example, in some embodiments in accordance with the present invention, some of the floating point circuits are configured to operate in a high power mode while other floating point circuits are configured to operate in a low power mode.

도 2는 본 발명에 따른 SMT 프로세서의 일실시예를 나타내는 블록도이다.2 is a block diagram illustrating an embodiment of an SMT processor according to the present invention.

도 2에 따르면, 새로운 쓰레드가 SMT 프로세서(200)에서 생성될 때, 쓰레드 관리회로(205)는 새로이 생성된 쓰레드가 사용할 수 있도록 한 셋트(set)의 프로세싱 회로들을 할당한다. 할당된 프로세싱 회로들은 프로그램 카운터(215), 한 셋트의 플로우팅 포인트 레지스터들(245), 및 한 셋트의 정수(integer) 레지스터들(250)을 포함할 수 있다. 또한 다른 프로세싱 회로들도 새로이 생성된 쓰레드에 할당될 수 있다. 쓰레드가 완료되면, 할당된 프로세싱 회로들은 순차적으로 생성되는 쓰레드들에 재할당될 수 있도록 해방(release)될 수 있다.According to FIG. 2, when a new thread is created in the SMT processor 200, the thread management circuitry 205 allocates a set of processing circuits for use by the newly created thread. The allocated processing circuits may include a program counter 215, a set of floating point registers 245, and a set of integer registers 250. Other processing circuits can also be allocated to newly created threads. Once the thread is complete, the allocated processing circuits can be released so that they can be reassigned to the sequentially created threads.

페치 회로(210)는 할당된 프로그램 카운터(215)에 의해 제공되는 위치에 근거하여 명령 캐쉬(220)로부터 명령을 페치하고 이 명령은 디코더(225)에 제공된다. 디코더(225)는 디코드된 명령을 레지스터 리내이밍(renaming) 회로(230)로 출력한다. 레지스터 리내이밍 회로(230)에 의해 제공되는 명령의 형태에 따라, 개명된(renamed) 명령은 레지스터 리내이밍 회로(230)에 의해 플로우팅 포인트 명령 큐(queue)(235) 또는 정수 명령 큐((240)에 제공된다. 예컨대, 레지스터 래내이밍 회로(230)에 의해 제공되는 명령의 형태가 플로우팅 포인트 명령이라면 그 명령은 플로우팅 포인트 명령 큐(235)에 저장되고, 반면에 레지스터 리내이밍 회로(230)에 의해 제공되는 명령이 정수 명령이라면 그 명령은 정수 명령 큐(240)에 저장된다.The fetch circuit 210 fetches an instruction from the instruction cache 220 based on the position provided by the assigned program counter 215 and the instruction is provided to the decoder 225. The decoder 225 outputs the decoded command to the register renaming circuit 230. Depending on the type of instructions provided by the register renaming circuit 230, the renamed instructions may be generated by the register renaming circuit 230 by a floating point command queue 235 or an integer command queue ( For example, if the form of the instruction provided by the register laming circuit 230 is a floating point instruction, the instruction is stored in the floating point instruction queue 235, while the register renaming circuit ( If the command provided by 230 is an integer command, the command is stored in the integer command queue 240.

플로우팅 포인트 명령 큐(235) 또는 정수 명령 큐(240)로부터의 명령들은 각각의 플루우팅 포인트 회로(255) 또는 정수/로드-스토어 회로(260)에 의한 수행을 위해 관련 레지스터에 저장된다. 특히, 플로우팅 포인트 명령들은 플로우팅 포인트 명령 큐(235)로부터 한 셋트의 플로우팅 포인트 레지스터들(245)로 전달된다. 플로우팅 포인트 레지스터들(245) 내의 명령들은 플로우팅 포인트 회로들(255)에 의해액세스될 수 있다. 또한 플로우팅 포인트 회로들(255)은, 플로우팅 포인트 회로들(255)에 의해 수행되는 명령들이 데이터 캐쉬(265)에 저장된 데이터를 참조할 때와 같이, 데이터 캐쉬(265)에 저장된 플로우팅 포인트 데이터를 액세스할 수 있다.Instructions from floating point command queue 235 or integer command queue 240 are stored in associated registers for execution by respective fluting point circuit 255 or integer / load-store circuit 260. In particular, floating point instructions are passed from floating point command queue 235 to a set of floating point registers 245. Instructions in floating point registers 245 may be accessed by floating point circuits 255. The floating point circuits 255 may also have a floating point stored in the data cache 265, such as when instructions performed by the floating point circuits 255 refer to data stored in the data cache 265. Data can be accessed.

정수 명령들은 정수 명령 큐(240)로부터 정수 레지스터들(250)로 전달된다. 정수/로드-스토어 회로들(260)은 그 명령들이 수행될 수 있도록 정수 레지스터들(250)에 저장된 정수 명령들을 액세스할 수 있다. 정수/로드-스토어 회로들(260)은 또한 정수 레지스터들(250)에 저장된 정수 명령들이 데이터 캐쉬(265)에 저장된 정수 데이터를 참조할 때 데이터 캐쉬(265)를 액세스할 수 있다.Integer instructions are passed from the integer command queue 240 to the integer registers 250. Integer / load-store circuits 260 may access integer instructions stored in integer registers 250 such that the instructions may be performed. Integer / load-store circuits 260 may also access data cache 265 when integer instructions stored in integer registers 250 refer to integer data stored in data cache 265.

본 발명의 실시예들에 따르면, 쓰레드 관리회로(205)는 데이터 캐쉬(265)에 성능레벨을 제공한다. 특히, 성능레벨은 데이터 캐쉬(265)가 제1성능레벨 또는 제2성능레벨(즉 고전력 모드 또는 저전력 모드)에서 동작할 것인지를 제어할 수 있다. 예컨대, 쓰레드 관리회로(205)는 데이터 캐쉬(265)가 고전력 모드에 동작하는 제1성능레벨을 제공할 수 있고 또는 데이터 캐쉬(265)가 저전력 모드에서 동작하는 제2성능레벨을 제공할 수 있다. 본 발명에 따른 일부 실시예들에서는 데이터 캐쉬(265)의 동작이 제1성능레벨 또는 제2성능레벨중 어느 하나에서 이루어지는 것으로 설명되지만 더 많은 성능레벨들이 사용될 수 있음은 자명하다.According to embodiments of the present invention, thread management circuitry 205 provides a performance level to data cache 265. In particular, the performance level may control whether the data cache 265 will operate in the first performance level or the second performance level (ie, high power mode or low power mode). For example, the thread management circuitry 205 may provide a first performance level at which the data cache 265 operates in a high power mode or may provide a second performance level at which the data cache 265 operates in a low power mode. . In some embodiments in accordance with the present invention the operation of the data cache 265 is described as occurring at either the first performance level or the second performance level, but it is apparent that more performance levels may be used.

도 3은 본 발명에 따른 쓰레드 관리회로들의 실시예를 나타내는 블록도이다.3 is a block diagram illustrating an embodiment of thread management circuits in accordance with the present invention.

도 3에 따르면, 쓰레드 관리회로(305)는 동작시스템(operating system)으로부터 또는 SMT 프로세서에서 쓰레드의 생성과 관련되는 쓰레드 발생회로로부터 정보를 수신한다. 쓰레드 관리회로(305)는 쓰레드 할당회로(330)을 구비하며, 쓰레드 할당회로(330)는 SMT 프로세서에 의해 생성된 쓰레드가 사용하도록 프로세싱 회로들을 할당할 수 있다.According to FIG. 3, thread management circuitry 305 receives information from an operating system or from a thread generation circuit associated with the creation of a thread in an SMT processor. The thread management circuit 305 includes a thread allocation circuit 330, which may allocate processing circuits for use by threads created by the SMT processor.

쓰레드 관리회로(305)는 또한 SMT 프로세서에 의해 생성된 쓰레드와 관련되는 프로세싱 회로들에 성능레벨을 제공하는 성능레벨 제어회로(340)을 구비한다. 성능레벨 제어회로(340)는 SMT 프로세서에 의해 현재 동작되는 쓰레들의 수에 기초하여 프로세싱 회로들에 성능레벨을 제공할 수 있다. 특히, SMT 프로세서에 의해 동작되는 쓰레드들의 수가 증가하면 성능레벨 제어회로는 SMT 프로세서에 의해 동작되는 쓰레드들과 관련되는 프로세싱 회로들에 감소하는 성능레벨들을 제공할 수 있다. 성능레벨 제어회로(340)는 SMT 프로세서에 의해 동작되는 쓰레드들의 생성 및 완료에 응답하여 내부 카운트(count)를 증가 및 감소시킴으로서 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 결정할 수 있다.The thread management circuit 305 also includes a performance level control circuit 340 that provides a performance level to processing circuits associated with the threads created by the SMT processor. The performance level control circuit 340 may provide a performance level to the processing circuits based on the number of threads currently operated by the SMT processor. In particular, as the number of threads operated by the SMT processor increases, the performance level control circuit may provide decreasing performance levels to the processing circuits associated with the threads operated by the SMT processor. The performance level control circuit 340 may determine the number of threads currently operated by the SMT processor by increasing and decreasing an internal count in response to the creation and completion of the threads operated by the SMT processor.

본 발명에 따른 프로세싱 회로들에 제공되는 성능레벨이 제1성능레벨(또는 고전력 모드)와 같은 디폴트(default value) 값을 가질 수 있다는 것은 자명하다. 따라서 쓰레드들이 더해지면(added), 프로세싱 회로들에 제공되는 성능레벨은 성능을 떨어뜨려서 프로세싱 회로들의 전력소모를 줄이기 위해서 감소될 수 있다. 성능레벨은 적어도 두가지 상태, 즉 제1성능레벨 및 제2성능레벨을 갖는 신호를 전송할 수 있는 신호라인을 경유하여 프로세싱 회로들에 제공될 수 있다. 예컨대, SMT 프로세서가 초기화된 후, SMT 프로세서에 의해 동작되는 쓰레드들의 수는 "0"이 될 수 있다. 여기에서 프로세싱 회로들에 제공되는 성능레벨의 디폴트 값은 제1성능레벨(고전력 모드)이다. 쓰레드들이 더해지고 결국 문턱값을 초과하면, 성능레벨은 예컨대 어느 성능레벨이 사용되는 지를 나타내는 신호의 상태를 변경시킴으로써 제2성능레벨로 변경될 수 있다.It is apparent that the performance level provided to the processing circuits according to the invention may have a default value such as the first performance level (or high power mode). Thus, as threads are added, the performance level provided to the processing circuits can be reduced to reduce the performance and thus reduce the power consumption of the processing circuits. The performance level may be provided to the processing circuits via a signal line capable of transmitting a signal having at least two states, namely, a first performance level and a second performance level. For example, after the SMT processor is initialized, the number of threads operated by the SMT processor may be "0". The default value of the performance level provided to the processing circuits here is the first performance level (high power mode). When the threads are added and eventually exceed the threshold, the performance level can be changed to the second performance level, for example by changing the state of the signal indicating which performance level is used.

도 4는 본 발명에 따른 성능레벨 제어회로들의 실시예를 나타내는 블록도이다.4 is a block diagram illustrating an embodiment of performance level control circuits according to the present invention.

도 4에 따르면, 카운터 회로(405)는 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 결정하기 위해 동작시스템(oerating system) 또는 도 3을 참조하여 설명된 쓰레드 발생회로로부터 정보를 수신할 수 있다. 예컨대, 카운터 회로(405)가 새로운 쓰레드의 생성에 관하여 정보가 수신될 때 4개의 쓰레드들이 SMT 프로세서에 의해 이전에 이미 시작되었다는 것을 나타낸다면, 카운터 회로(405)는 SMT 프로세서에 의해 현재 5개의 쓰레드들이 동작된다는 것을 반영하도록 증가될 수 있다.According to FIG. 4, the counter circuit 405 may receive information from an oerating system or the thread generation circuit described with reference to FIG. 3 to determine the number of threads currently operating by the SMT processor. For example, if the counter circuit 405 indicates that four threads have already been started by the SMT processor when information regarding the creation of a new thread is received, then the counter circuit 405 may currently have five threads by the SMT processor. Can be increased to reflect that they are operated.

카운터 회로(405)는 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 비교회로(410)에 제공할 수 있다. 문턱값이 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수와 함께 비교회로(410)에 제공된다. 문턱값은 그 이상에서 성능레벨이 변화되는 쓰레드들의 수를 나타내는 프로그램 가능한 값일 수 있다. 따라서 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때에는 프로세싱 회로들에 제공되는 성능모드가 고전력 모드와 같은 제1성능레벨로 유지될 수 있다. 그러나, SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값을 초과할 때에는 SMT 프로세서에 의해 소비되는 전력을 감소시키기 위해 성능레벨이 감소될 수 있다.The counter circuit 405 may provide the comparison circuit 410 with the number of threads currently operating by the SMT processor. A threshold is provided to the comparison circuit 410 with the number of threads currently operating by the SMT processor. The threshold may be a programmable value representing the number of threads for which the performance level will change beyond that. Therefore, when the number of threads currently operated by the SMT processor is less than or equal to the threshold value, the performance mode provided to the processing circuits may be maintained at the first performance level such as the high power mode. However, when the number of threads currently operated by the SMT processor exceeds the threshold, the performance level may be reduced to reduce the power consumed by the SMT processor.

도 5는 본 발명에 따른 성능레벨 조절회로의 실시예의 동작을 나타내는 플로우 차트이다.5 is a flowchart illustrating the operation of an embodiment of a performance level adjusting circuit according to the present invention.

도 5에 따르면, SMT 프로세서가 초기화될 때 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수는 "0"이다(블록 500). SMT 프로세서에서 쓰레드들이 생성되고 완료되면, SMT 프로세서에서 현재 동작하는 쓰레드들의 수(N)은 증가 또는 감소된다(블록 505). 예컨대, 4개의 쓰레드들이 SMT 프로세서에 의해 동작되는 경우에, N의 값은 4이다. 새로운 쓰레드가 생성될 때 N의 값은 5로 증가되고 반면에 쓰레드들의 하나가 그후 완료되면 N의 값은 다시 4로 감소된다.According to FIG. 5, the number of threads currently operating by the SMT processor when the SMT processor is initialized is “0” (block 500). Once threads are created and completed in the SMT processor, the number N of threads currently operating in the SMT processor is increased or decreased (block 505). For example, if four threads are operated by an SMT processor, the value of N is four. When a new thread is created, the value of N is increased to 5, while if one of the threads is then completed, the value of N is reduced back to 4.

SMT 프로세서에서 현재 동작하는 쓰레드들의 수는 문턱값과 비교된다(블록 510). SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 작거나 같으면, 성능레벨 제어회로는 쓰레드들에 할당된 프로세싱 회로들에 제1성능레벨을 제공한다(블록 515). 예컨대, 어느 쓰레드에 할당된 프로세싱 회로가 도 2를 참조하여 설명된 캐쉬 메모리이라면, 캐쉬 메모리는 태그 메모리와 데이터 메모리가 동시에 액세스되도록 동작할 수 있다(고전력 모드에서). 반면에, SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 크다면(블록 510), 성능레벨 제어회로는 쓰레드들과 관련된 프로세싱 회로들에 제2성능레벨을 제공한다(블록 520). 예컨대, 도 2를 참조하여 위에서 설명된 실시예들에서, 제2성능레벨에서 캐쉬 메모리는 태그 메모리에서의 히트에 응답해서만 데이터 메모리가 액세스되도록 동작할 수 있다(저전력 모드에서).The number of threads currently operating in the SMT processor is compared with a threshold (block 510). If the number of threads currently operated by the SMT processor is less than or equal to the threshold, the performance level control circuitry provides a first performance level to the processing circuits assigned to the threads (block 515). For example, if the processing circuit allocated to a thread is the cache memory described with reference to FIG. 2, the cache memory may operate (in high power mode) such that the tag memory and the data memory are accessed simultaneously. On the other hand, if the number of threads currently operated by the SMT processor is greater than the threshold (block 510), then the performance level control circuitry provides a second performance level to the processing circuits associated with the threads (block 520). For example, in the embodiments described above with reference to FIG. 2, at the second performance level, the cache memory may operate so that the data memory is accessed only in response to a hit in the tag memory (in the low power mode).

도 6은 도 2에 보여진 본 발명에 따른 캐쉬 메모리의 실시예를 나타내는 블록도이다.6 is a block diagram illustrating an embodiment of a cache memory according to the present invention shown in FIG. 2.

도 6에 따르면, 태그 메모리(610)는 데이터 메모리(620)에 저장된 데이터의 어드레스들을 저장하도록 구성된다. 태그 메모리(610)는 SMT 프로세서에 의해 작용되는 데이터와 관련된 어드레스를 이용하여 액세스된다. 태그 메모리(610)의 내용들은, SMT 프로세서에 의해 필요한 데이터가 데이터 메모리(620)에 저장되어 있는 지를 결정하기 위해 태그 비교회로(630)에 의해 상기 어드레스와 비교된다. 태그 비교회로(630)가 필요한 데이터가 데이터 메모리(620)에 저장되어 있다고 판정하면, 태그 히트가 일어난다. 그렇지 않으면, 태그 미스(miss)가 일어난다. 태그 히트가 일어나면, 출력 인에이블 회로(650)는 데이터가 데이터 메모리(620)으로부터 출력되도록 인에이블시킨다.According to FIG. 6, the tag memory 610 is configured to store addresses of data stored in the data memory 620. Tag memory 610 is accessed using an address associated with the data acted upon by the SMT processor. The contents of the tag memory 610 are compared with the address by the tag comparison circuit 630 to determine whether data required by the SMT processor is stored in the data memory 620. When the tag comparison circuit 630 determines that necessary data is stored in the data memory 620, a tag hit occurs. Otherwise, a tag miss occurs. When a tag hit occurs, the output enable circuit 650 enables the data to be output from the data memory 620.

본 발명의 실시예들에 따르면, 성능레벨 제어회로에 의해 제공되는 성능레벨은 태그 메모리(610)과 데이터 메모리(620)가 어떻게 동작할 것인가를 제어하기 위해 이용된다. 특히, 제1성능레벨이 캐쉬 메모리에 제공되면, 데이터 메모리 인에이블 회로(640)는 태그 히트가 일어나는지 여부에 무관하게 태그 메모리(610)과 동시에 액세스되도록 데이터 메모리(620)를 인에이블시킨다. 반면에, 제2성능레벨이 캐쉬 메모리에 제공된다면, 데이터 메모리 인에이블 회로(640)는 태그 히트가 일어나지 않으면 데이터 메모리(620)가 액세스되는 것을 허용하지 않는다.According to embodiments of the present invention, the performance level provided by the performance level control circuit is used to control how the tag memory 610 and the data memory 620 operate. In particular, when the first performance level is provided to the cache memory, the data memory enable circuit 640 enables the data memory 620 to be accessed simultaneously with the tag memory 610 regardless of whether a tag hit occurs. On the other hand, if the second performance level is provided to the cache memory, the data memory enable circuit 640 does not allow the data memory 620 to be accessed unless a tag hit occurs.

그러므로, 본 발명에 따른 실시예들에서는, 고전력 모드에서 태그 메모리(610)와 데이터 메모리(620)가 향상된 성능을 제공하기 위해서 동시에 액세스될 수 있다. 반면에 저전력 모드에서는 데이터 메모리(620)는 태그 메모리(610)가 태그 히트가 일어났다는 것을 나타내는 경우에만 액세스되고, 그 결과 캐쉬 메모리에 의해 소비되는 전력이 감소될 수 있다.Therefore, in embodiments according to the present invention, the tag memory 610 and the data memory 620 can be accessed simultaneously to provide improved performance in the high power mode. In the low power mode, on the other hand, the data memory 620 is accessed only when the tag memory 610 indicates that a tag hit has occurred, and as a result, the power consumed by the cache memory can be reduced.

도 7은 명령 캐쉬에 이용되는 본 발명에 따른 실시예를 나타내는 블록도이다.7 is a block diagram illustrating an embodiment of the present invention used for instruction cache.

도 7에 따르면, 쓰레드 관리회로(700)는 명령 캐쉬(722)를 새로운 쓰레드에 할당한다. 쓰레드 관리회로(300)에 포함된 성능레벨 제어회로는 명령 캐쉬(722)가 어떻게 동작할 것인가를 제어하기 위해서 성능레벨을 명령 캐쉬(722)에 제공할 수 있다.According to FIG. 7, the thread management circuit 700 allocates an instruction cache 722 to a new thread. The performance level control circuit included in the thread management circuit 300 may provide the performance level to the instruction cache 722 to control how the instruction cache 722 operates.

특히, 명령 캐쉬(722)는 제1성능레벨에 응답하여 고전력 모드로 동작할 수 있고 제2성능레벨에 응답하여 저전력 모드로 동작하도록 구성될 수 있다. 예컨대 도 5를 참조하여 위에서 설명되었듯이 제1 및 제2성능레벨이 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 명령 캐쉬(722)에 제공될 수 있다. 또한, 명령 캐쉬(722)는 도 6을 참조하여 위에서 설명된 방식과 유사한 방식으로 다른 성능레벨에서 동작할 수 있다. 도 6에서는 데이터 메모리(620)가 저전력 모드에서의 태그 히트에 응답해서만 액세스된다. 예컨대, 연속적인 메모리 액세스들이 동일한 캐쉬 라인에 있는 것으로 판정될 때 직접 어드레싱(direct addressing)을 허락하기 위해서 다른 성능레벨들이 명령 캐쉬에 제공될 수 있다. 이러한 형태의 한정은 태그 램(RAM)의 독출 및 태그 비교가 필요치 않는 직접 어드레스드 캐쉬(direct-addressed cache)를 사용하여 적용될 수 있다. 더구나, 직접 어드레스드 캐쉬에서는 가상(virtual) 어드레스로부터 실제(physical) 어드레스로의 변환이 역시 필요치 않을 수 있다.In particular, the instruction cache 722 can operate in a high power mode in response to the first performance level and can be configured to operate in a low power mode in response to the second performance level. For example, as described above with reference to FIG. 5, first and second performance levels may be provided to the instruction cache 722 based on the number of threads currently operating by the SMT processor. In addition, the instruction cache 722 may operate at different performance levels in a manner similar to that described above with reference to FIG. 6. In FIG. 6, the data memory 620 is accessed only in response to tag hits in the low power mode. For example, different levels of performance may be provided to the instruction cache to allow direct addressing when it is determined that successive memory accesses are in the same cache line. This type of limitation can be applied using a direct-addressed cache that does not require reading of tag RAM and tag comparison. Moreover, direct addressed caching may also not require translation from a virtual address to a physical address.

도 8은 본 발명에 따른 다른 성능레벨들을 갖는 별도의 프로세싱 회로들의 실시예를 나타내는 블록도이다.8 is a block diagram illustrating an embodiment of separate processing circuits having different performance levels in accordance with the present invention.

도 8에 따르면, 제1플로우팅 포인트 회로(805)는 제1성능레벨에서 동작하고 제2플로우팅 포인트 회로(815)는 제1성능레벨보다 낮은 제2성능레벨에서 동작하도록 구성될 수 있다. 다시 말해, 제1플로우팅 포인트 회로(805)는 고전력 모드에서 사용되고 제2플로우팅 포인트 회로(815)는 저전력 모드에서 사용될 수 있다.According to FIG. 8, the first floating point circuit 805 may be configured to operate at a first performance level and the second floating point circuit 815 may be configured to operate at a second performance level lower than the first performance level. In other words, the first floating point circuit 805 can be used in the high power mode and the second floating point circuit 815 can be used in the low power mode.

제1 정수/로드-스토어 회로(810)은 제1성능레벨에서 동작하고 제2정수/로드-스토어 회로(820)은 제2성능레벨에서 동작하도록 구성된다. 쓰레드 관리회로(800)는 두 개의 별도의 성능레벨을 제공하도록 구성된다. 특히, 제1성능레벨은 제1플로우팅 포인트 회로(805) 및 제1정수/로드-스토어 회로(810)에 제공된다. 쓰레드 관리회로(800)에 의해 제공되는 제2성능레벨은 제2프로우팅 포인트 회로(815) 및 제2정수/로드-스토어 회로(820)에 제공된다. 따라서 제1플로우팅 포인트 회로(805) 및 제1정수/로드-스토어 회로(810)는 제1성능레벨로에서 동작하는 쓰레드들에 할당될 수 있고, 반면에 제2프로우팅 포인트 회로(815) 및 제2정수/로드-스토어 회로(820)는 제2성능레벨에서 동작하는 쓰레드들에 할당될 수 있다. 제1 및 제2성능레벨들은 쓰레드 관리회로(800)에 의해 독립적으로 또는 동시에 제공될 수 있음은 자명하다. 또한 두 개 이상의 성능레벨들이 제공될 수 있는 것처럼 두 개 이상의 별도의 플로우팅 포인트 회로들 및 정수/로드-스토어 회로들이 제공될 수 있음은 자명하다.The first integer / load-store circuit 810 is configured to operate at a first performance level and the second integer / load-store circuit 820 is configured to operate at a second performance level. Thread management circuitry 800 is configured to provide two separate levels of performance. In particular, the first performance level is provided to the first floating point circuit 805 and the first integer / load-store circuit 810. The second performance level provided by the thread management circuit 800 is provided to the second floating point circuit 815 and the second integer / load-store circuit 820. Thus, the first floating point circuit 805 and the first integer / load-store circuit 810 can be allocated to threads operating at the first performance level, while the second floating point circuit 815 And the second integer / load-store circuit 820 may be allocated to threads operating at the second performance level. It is apparent that the first and second performance levels may be provided independently or simultaneously by the thread management circuitry 800. It is also apparent that two or more separate floating point circuits and integer / load-store circuits may be provided as two or more performance levels may be provided.

본 발명의 실시예들에 따르면, 제1플로우팅 포인트 회로(805) 및 제1정수/로드-스토어 회로(810)에 제공되는 제1성능레벨은 SMT 프로세서에서 동작되는 쓰레드들의 수가 제1문턱값보다 작거나 같을 때 제공될 수 있다. 제2성능레벨은 SMT 프로세서에 의해 동시에 동작되는 쓰레드들의 수가 제1문턱값을 초과할 때 제2프로우팅 포인트 회로(815) 및 제2정수/로드-스토어 회로(820)에 제공될 수 있다. 따라서, SMT 프로세서에 의해 동작되는 쓰레드들의 수가 문턱값을 초과할 때는, 이전에 존재하는 쓰레드들 및 새롭게 생성된 쓰레드들을 포함하는 모든 쓰레드들이 SMT 프로세서에 의해 소모되는 전력을 감소시키기 위해서 제2프로우팅 포인트 회로(815) 및 제2정수/로드-스토어 회로(820)를 사용할 수 있다.According to embodiments of the present invention, the first performance level provided to the first floating point circuit 805 and the first integer / load-store circuit 810 is determined by the number of threads operating in the SMT processor. May be provided when less than or equal to. The second performance level may be provided to the second floating point circuit 815 and the second integer / load-store circuit 820 when the number of threads simultaneously operated by the SMT processor exceeds the first threshold. Therefore, when the number of threads operated by the SMT processor exceeds the threshold, all the threads, including previously existing threads and newly created threads, have a second coating to reduce the power consumed by the SMT processor. Point circuit 815 and second integer / load-store circuit 820 may be used.

본 발명에 따른 플로우팅 포인트 회로들 및 정수/로드-스토어 회로들은 다른 성능레벨들을 제공하기 위해서 다른 클럭속도들에서 동작할 수 있고 또한/또는 다른 회로형태들을 사용할 수 있다. 예컨대, 본 발명에 따른 일부 실시예들에서는, SMT 프로세서에서 쓰레드의 동작과 관련되는 플로우팅 포인트 회로는 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 고 클럭속도에서의 고전력 모드 또는 저 클럭속도에서의 저전력 모드중 하나에서 동작할 수 있다.Floating point circuits and integer / load-store circuits in accordance with the present invention may operate at different clock speeds and / or use other circuit types to provide different performance levels. For example, in some embodiments according to the present invention, the floating point circuit associated with the operation of a thread in an SMT processor may be a high power mode or a low clock rate at a high clock speed based on the number of threads currently operating by the SMT processor. It can operate in one of the low power modes.

도 9는 쓰레드 관리회로(900)에 의해 제공되는 별도의 성능레벨들에 응답하는 복수개의 프로세싱 회로들을 포함하는 SMT 프로세서의 실시예를 나타내는 블록도이다. 특히, 쓰레드 관리회로(900)는 3개의 별도의 성능레벨들을 명령 캐쉬(930), 데이터 캐쉬(965), 제1 및 제2플로우팅 포인트 회로들(905,915), 및 제1 및 제2정수/로드-스토어 회로들(910,920)에 제공한다. 제1 및 제2플로우팅 포인트 회로들(905,915) 및 제1 및 제2정수/로드-스토어 회로들(910,920)에 제공된 성능레벨은 도 8을 참조하여 위에서 설명된 바와 같이 동작할 수 있음은 자명하다. 또한, 명령 캐쉬(930) 및 데이터 캐쉬(965)는 각각 도 2 및 도 7을 참조하여 위에서 설명된 바와 같이 동작할 수 있다.9 is a block diagram illustrating an embodiment of an SMT processor including a plurality of processing circuits responsive to separate performance levels provided by thread management circuitry 900. In particular, the thread management circuitry 900 sets three separate performance levels into the instruction cache 930, the data cache 965, the first and second floating point circuits 905 and 915, and the first and second integers /. To the load-store circuits 910 and 920. It is apparent that the performance level provided to the first and second floating point circuits 905, 915 and the first and second integer / load-store circuits 910, 920 may operate as described above with reference to FIG. 8. Do. In addition, the instruction cache 930 and data cache 965 may operate as described above with reference to FIGS. 2 and 7, respectively.

따라서, 프로세싱 회로들이 다른 성능레벨들에서 동작할 수 있도록 별도의 성능레벨들이 다른 프로세싱 회로들에 제공될 수 있다. 이렇게 함으로서 성능과 전력소모 사이의 트레이드 오프(tradeoff)에 대한 제어가 매우 잘 이루어질 수 있다. 예컨대, 명령 캐쉬는 제1성능레벨에서 동작하고 반면에 데이터 캐쉬(265) 및 제1 및 제2플로우팅 포인트 회로들(905,915), 및 제1 및 제2정수/로드-스토어 회로들(910,920)은 제2성능레벨에서 동작할 수 있다. 또한 성능레벨의 다른 조합들이 이용될 수도 있다.Thus, separate performance levels can be provided to other processing circuits so that the processing circuits can operate at different performance levels. This allows very good control over the tradeoff between performance and power consumption. For example, the instruction cache operates at the first performance level while the data cache 265 and the first and second floating point circuits 905 and 915, and the first and second integer / load-store circuits 910 and 920. May operate at a second performance level. Also other combinations of performance levels may be used.

도 10은 도 9의 쓰레드 관리회로(900)에 포함되는 성능레벨 제어회로의 실시예의 동작을 나타내는 블록도이다. 특히 성능레벨 제어회로는 SMT 프로세서에서 생성되고 완료되는 쓰레드들에 응답하여 증가되고 감소되는 카운터(1000)를 구비한다. 제1 내지 제3레지스터들(1015,1020,1025) 각각은 SMT 프로세서에서 현재 동작하는 쓰레드들의 수의 문턱값을 저장할 수 있다. 3개의 비교회로들(1030,1035,1040)은 레지스터들(1015,1020,1025)의 각각에 연결된다. 특히, 제1문턱값을 저장하는 제1레지스터(1015)는 제1비교회로(1030)에 연결된다. 제2문턱값을 저장하는 제2레지스터(1020)는 제2비교회로(1035)에 연결된다. 제3문턱값을 저장하는 제3레지스터(1025)는 제3비교회로(1040)에 연결된다.FIG. 10 is a block diagram illustrating an operation of an embodiment of a performance level control circuit included in the thread management circuit 900 of FIG. 9. In particular, the performance level control circuit includes a counter 1000 that is incremented and decremented in response to threads created and completed in the SMT processor. Each of the first to third registers 1015, 1020, and 1025 may store a threshold value of the number of threads currently operating in the SMT processor. Three comparison circuits 1030, 1035, 1040 are connected to each of the registers 1015, 1020, 1025. In particular, the first register 1015, which stores the first threshold value, is connected to the first non-conduit 1030. The second register 1020, which stores the second threshold value, is connected to the second non-converted path 1035. The third register 1025, which stores the third threshold value, is connected to the third non-conduit 1040.

비교회로들(1030,1035,1040) 각각은 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 각각의 레지스터에 저장된 문턱값과 비교한다. 제1비교회로(1030)가 SMT 프로세서에 의해 동작되는 쓰레드들의 현재 수가 제1레지스터(1015)에 저장된 제1문턱값보다 크다고 판정하면, 제1비교회로(1130)는 도 9에 도시된 바와 같이 데이터 캐쉬(965)에 연결되는 성능레벨(1405)를 발생한다. 따라서 SMT 프로세서에 의해 동작되는 쓰레드들의 수가 제1레지스터(1015)에 저장된 문턱값을 초과할 때에는 데이터 캐쉬(965)의 성능레벨은 제1성능레벨로부터 제2성능레벨로 변경된다(즉 고전력 모드로부터 저전력 모드로).Each of the comparison circuits 1030, 1035, 1040 compares the number of threads currently operated by the SMT processor with a threshold stored in each register. If the first non-intersection 1030 determines that the current number of threads operated by the SMT processor is greater than the first threshold value stored in the first register 1015, the first non-intersection 1130 is shown in FIG. 9. A performance level 1405 is generated that is coupled to the data cache 965. Therefore, when the number of threads operated by the SMT processor exceeds the threshold stored in the first register 1015, the performance level of the data cache 965 is changed from the first performance level to the second performance level (i.e., from the high power mode). Into low power mode).

제2비교회로(1035)가 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 제2레지스터(1020)에 저장된 문턱값보다 크다고 판정하면, 제2비교회로(1035)는 명령 캐쉬(930)에 연결되는 성능레벨(1050)을 발생한다. 따라서 명령 캐쉬(930)의 성능레벨이 제1성능레벨로부터 제2성능레벨로 변경된다(즉 고전력 모드로부터 저전력 모드로).If the second non-intersection 1035 determines that the number of threads currently operated by the SMT processor is greater than the threshold stored in the second register 1020, the second non-intersection 1035 is connected to the instruction cache 930. Generate level 1050. Thus, the performance level of the instruction cache 930 is changed from the first performance level to the second performance level (ie, from the high power mode to the low power mode).

제3비교회로(1040)가 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 제3레지스터(1025)에 저장된 문턱값을 초과한다고 판정하면, 제3비교회로(1040)는 제1 및 제2플로우팅 포인트 회로들(905,915) 및 제1 및 제2정수/로드-스토어 회로들(910,920)에 연결되는 성능레벨(1055)을 발생한다. 따라서, 이들 프로세싱 회로들의 성능레벨이 제1성능레벨로부터 제2성능레벨로 변경된다(즉 고전력 모드로부터 저전력 모드로). 제1 및 제2플로우팅 포인트 회로들(905,915) 및 제1 및 제2정수/로드-스토어 회로들(910,920)에 연결되는 성능레벨(1055)은 도 8을 참조하여 위에서 설명된 바와 같이 동작한다는 것은 자명하다.If the third non-intersection 1040 determines that the number of threads currently operated by the SMT processor exceeds the threshold stored in the third register 1025, the third non-intersection 1040 determines the first and second floating points. Generates a performance level 1055 that is coupled to the circuits 905, 915 and the first and second integer / load-store circuits 910, 920. Thus, the performance level of these processing circuits is changed from the first performance level to the second performance level (ie from the high power mode to the low power mode). The performance level 1055 connected to the first and second floating point circuits 905, 915 and the first and second integer / load-store circuits 910, 920 operates as described above with reference to FIG. 8. It is self-evident.

도 11은 도 10에 도시된 성능레벨 제어회로의 방법 실시예를 나타내는 플로우 차트이다.FIG. 11 is a flowchart illustrating a method embodiment of a performance level control circuit shown in FIG. 10.

도 11에 따르면, SMT 프로세서에서 현재 동작하는 쓰레드들의 수는 SMT 프로세서가 초기화될 때는 "0"이다(블록 1100). SMT 프로세서에 의해 쓰레드들이 생성되고 완료되면, SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수 N는 증가되고 감소된다(블록 1105).According to FIG. 11, the number of threads currently operating in the SMT processor is "0" when the SMT processor is initialized (block 1100). When threads are created and completed by the SMT processor, the number N of threads currently operating by the SMT processor is increased and decreased (block 1105).

SMT 프로세서에 의해 현재 수행되는 쓰레드들의 수가 제1문턱값보다 작거나 같으면(블록 1110), 모든 프로세싱 회로들이 계속 제1(또는 고) 성능레벨에서 동작한다(블록 1115). 반면에, SMT 프로세서에 의해 현재 수행되는 쓰레드들의 수가 제1문턱값을 초과하면(블록 1110), 성능레벨(1045)에 연결된 프로세싱 회로들은 제2성능레벨(즉 저전력 모드)로 동작하기 시작한다(블록 1120).If the number of threads currently being executed by the SMT processor is less than or equal to the first threshold (block 1110), all processing circuits continue to operate at the first (or high) performance level (block 1115). On the other hand, if the number of threads currently being executed by the SMT processor exceeds the first threshold (block 1110), the processing circuits connected to the performance level 1045 begin to operate at the second performance level (i.e., low power mode) ( Block 1120).

SMT 프로세서에 의해 현재 수행되는 쓰레드들의 수가 제2문턱값보다 작거나 같으면(블록 1125), 성능레벨(1050)에(그리고 성능레벨 1055에) 연결되는 프로세싱 회로들이 제1성능레벨에서 동작하기 시작한다(또는 계속 동작한다). 반면에, 성능레벨(1045)에 연결되는 프로세싱 회로들은(위에서 설명된 바와 같이) 계속 제2성능레벨에서 동작한다.If the number of threads currently being executed by the SMT processor is less than or equal to the second threshold (block 1125), processing circuits connected to performance level 1050 (and performance level 1055) begin operating at the first performance level. (Or keep running). On the other hand, processing circuits connected to performance level 1045 (as described above) continue to operate at the second performance level.

SMT 프로세서에 의해 현재 수행되는 쓰레드들의 수가 제2문턱값을 초과하면(블록 1125), 성능레벨(1050)에 연결되는 프로세싱 회로들은 성능레벨(1045)에 연결된 프로세싱 회로들과 함께 제2성능레벨(블록 1135)에서 동작하기 시작한다(또는계속 동작한다). 반면에 성능레벨(1055)에 연결되는 프로세싱 회로들은 제1성능레벨에서 계속 동작한다.If the number of threads currently being executed by the SMT processor exceeds the second threshold (block 1125), the processing circuits connected to performance level 1050, along with the processing circuits connected to performance level 1045, perform a second performance level ( And start operating (or continue operating) at block 1135. On the other hand, processing circuits connected to performance level 1055 continue to operate at the first performance level.

SMT 프로세서에 의해 현재 수행되는 쓰레드들의 수가 제3문턱값보다 작거나 같으면(블록 1140), 성능레벨(1055)에 연결된 프로세싱 회로들은 계속 제1성능레벨에서 동작하고 반면에 성능레벨(1045) 및 성능레벨(1050)에 연결된 프로세싱 회로들은 계속 제2성능레벨에서 동작한다(블록 1145). SMT 프로세서에 의해 현재 수행되는 쓰레드들의 수가 제3문턱값을 초과하면(블록 1140), 성능레벨(1055)에 연결된 프로세싱 회로들은 제2성능레벨(즉 저전력 모드)에서 동작하기 시작한다(또는 계속 동작한다.)(블록 1150).If the number of threads currently being executed by the SMT processor is less than or equal to the third threshold (block 1140), the processing circuits connected to performance level 1055 continue to operate at the first performance level, while performance level 1045 and performance Processing circuits coupled to level 1050 continue to operate at the second performance level (block 1145). If the number of threads currently being executed by the SMT processor exceeds a third threshold (block 1140), processing circuits coupled to performance level 1055 begin to operate at a second performance level (i.e., low power mode) (or continue operation). (Block 1150).

위에서 설명된 바와 같이, 본 발명에 따른 실시예들은 SMT 프로세서에서 쓰레드의 동작과 관련된 프로세싱 회로들을 제공할 수 있다. 이 프로세싱 회로들은 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 다른 성능레벨에서 동작하도록 구성된다. 예컨대, 본 발명의 일부 실시예들에서는, 플로우팅 포인트 회로 또는 데이터 캐쉬와 같이 SMT 프로세서에서 쓰레드의 동작과 관련된 프로세싱 회로들은 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 고전력 모드 또는 저전력 모드중 하나에서 동작할 수 있다.As described above, embodiments in accordance with the present invention may provide processing circuits related to the operation of a thread in an SMT processor. These processing circuits are configured to operate at different performance levels based on the number of threads currently operating by the SMT processor. For example, in some embodiments of the invention, processing circuits associated with the operation of a thread in an SMT processor, such as a floating point circuit or a data cache, may be in high power mode or low power mode based on the number of threads currently operating by the SMT processor. It can work on one.

또한, SMT 프로세서에 의해 동작되는 쓰레드들의 수가 증가하면 프로세싱 회로들의 성능레벨들이 감소될 수 있으며 이렇게 함으로써 SMT 프로세서의 구조적 이점들이 제공되어 쓰레드와 관련된 프로세싱 회로들에 의해 소모되는 전력량이 감소될 수 있다. 예컨대, 본 발명에 따른 일부 실시예들에서는 프로세싱 회로들이 다른성능레벨들을 제공하기 위해서 다른 클럭속도들에서 동작할 수 있고 또한/또는 다른 회로형태들을 사용할 수 있다. 예컨대, 본 발명에 따른 일부 실시예들에서는 플로우팅 포인트 회로 또는 데이터 캐쉬와 같은 SMT 프로세서에서 쓰레드의 동작과 관련된 프로세싱 회로들은 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 고 클럭속도에서의 고전력 모드 또는 저 클럭속도에서의 저전력 모드중 하나에서 동작할 수 있다.In addition, increasing the number of threads operated by an SMT processor may reduce performance levels of the processing circuits, thereby providing structural benefits of the SMT processor, thereby reducing the amount of power consumed by the processing circuits associated with the thread. For example, in some embodiments in accordance with the present invention, processing circuits may operate at different clock speeds and / or use other circuit types to provide different performance levels. For example, in some embodiments according to the present invention, the processing circuits associated with the operation of a thread in an SMT processor, such as a floating point circuit or a data cache, may be high power at a high clock speed based on the number of threads currently operating by the SMT processor. Mode or low power mode at low clock speeds.

이상 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.The best embodiment has been disclosed in the drawings and specification above. Although specific terms have been used herein, they are used only for the purpose of describing the present invention and are not intended to limit the scope of the invention as defined in the claims or the claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible from this. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.

상술한 바와 같이 본 발명에 따른 동시 다중 쓰레딩(SMT) 프로세서 및 이를 동작시키는 방법에서는, SMT 프로세서에서 쓰레드 동작과 관련되는 프로세싱 회로들이 현재 동작되는 쓰레드들의 수에 기초하여 다른 성능레벨들, 즉 고 클럭속도에서의 고전력 모드 또는 저 클럭속도에서의 저전력 모드중 하나에서 선택적으로 동작할 수 있다. 따라서 전력소모가 감소되면서 성능도 증가될 수 있다.As described above, in the simultaneous multi-threading (SMT) processor and the method for operating the same, the processing circuits related to the thread operation in the SMT processor are different performance levels, that is, high clock based on the number of threads currently operating. It can optionally operate in either a high power mode at speed or a low power mode at low clock speed. As a result, power consumption can be reduced and performance can be increased.

Claims (41)

동시 다중 쓰레딩(Simultaneous Multi-Threading, SMT) 프로세서에 있어서,In Simultaneous Multi-Threading (SMT) Processor, 상기 SMT 프로세서에서 쓰레드의 동작과 관련되고 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 다른 성능레벨들에서 동작하도록 구성되는 적어도 하나의 프로세싱 회로를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.And at least one processing circuit associated with the operation of the thread in the SMT processor and configured to operate at different performance levels based on the number of threads currently operating by the SMT processor. 제1항에 있어서, 상기 적어도 하나의 프로세싱 회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때에는 제1성능레벨에서 동작하도록 구성되고,The system of claim 1, wherein the at least one processing circuitry is configured to operate at a first performance level when the number of threads currently operated by the SMT processor is less than or equal to a threshold value. 상기 적어도 하나의 프로세싱 회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값보다 클 때에는 제2성능레벨에서 동작하도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The at least one processing circuit is configured to operate at a second performance level when the number of threads currently operated by the SMT processor is greater than the threshold. 제1항에 있어서,The method of claim 1, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 상기 적어도 하나의 프로세싱 회로에 대한 성능레벨을 제공하도록 구성되는 성능레벨 제어회로를 더 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.And a performance level control circuit configured to provide a performance level for the at least one processing circuit based on the number of threads currently operated by the SMT processor. 제3항에 있어서, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때에는 상기 적어도 하나의 프로세싱 회로에 제공되는 성능레벨을 제1성능레벨로 증가시키고,The performance level control circuit of claim 3, wherein the performance level control circuit increases the performance level provided to the at least one processing circuit to a first performance level when the number of threads currently operated by the SMT processor is less than or equal to a threshold value. 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값을 초과할 때에는 상기 적어도 하나의 프로세싱 회로에 제공되는 성능레벨을 상기 제1성능레벨보다 낮은 제2성능레벨로 감소시키는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The performance level control circuit reduces the performance level provided to the at least one processing circuit to a second performance level lower than the first performance level when the number of threads currently operated by the SMT processor exceeds the threshold. Simultaneous multithreading processor, characterized in that. 제4항에 있어서, 상기 문턱값은 제1문턱값을 포함하고,The method of claim 4, wherein the threshold value comprises a first threshold value, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 제1문턱값보다 큰 제2문턱값을 초과할 때에는 상기 적어도 하나의 프로세싱 회로에 제공되는 성능레벨을 상기 제2성능레벨보다 낮은 제3성능레벨로 더 감소시키는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.When the number of threads currently operated by the SMT processor exceeds the second threshold value greater than the first threshold value, the performance level control circuit may increase the performance level provided to the at least one processing circuit than the second performance level. And further reduce to a lower third performance level. 제1항에 있어서, 상기 적어도 하나의 프로세싱 회로는 태그 메모리와 데이터 메모리를 포함하는 캐쉬 메모리 회로를 구비하고,2. The system of claim 1, wherein the at least one processing circuit comprises a cache memory circuit comprising a tag memory and a data memory, 상기 데이터 메모리는 상기 캐쉬 메모리 회로가 제1성능레벨에서 동작할 때 저장된(cached) 데이터를 상기 태그 메모리에 대한 액세스와 동시에 제공하도록 구성되며,The data memory is configured to provide cached data simultaneously with access to the tag memory when the cache memory circuit operates at a first performance level, 상기 데이터 메모리는 상기 캐쉬 메모리 회로가 상기 제1성능레벨보다 낮은 제2성능레벨에서 동작할 때에는 상기 태그 메모리에서의 히트에 응답하여저장된(cached) 데이터를 제공하도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The data memory is configured to provide cached data in response to a hit in the tag memory when the cache memory circuit operates at a second performance level lower than the first performance level. Processor. 제6항에 있어서, 상기 캐쉬 메모리는,The method of claim 6, wherein the cache memory, 명령들에 의해 동작되는 데이터를 저장하도록 구성되는 적어도 하나의 데이터 캐쉬 메모리; 및At least one data cache memory configured to store data operated by instructions; And 관련된 데이터에 동작하는 명령들을 저장하도록 구성되는 명령 캐쉬 메모리를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.And an instruction cache memory configured to store instructions that operate on associated data. 제6항에 있어서, 상기 데이터 메모리는 상기 제2성능레벨에서 동작할 때 상기 태그 메모리에서의 미스에 응답하여 저장된(cached) 데이터를 제공하지 않도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.7. The simultaneous multithreading processor of Claim 6, wherein the data memory is configured to not provide cached data in response to a miss in the tag memory when operating at the second performance level. 제1항에 있어서, 상기 적어도 하나의 프로세싱 회로는 플로우팅 포인트 유닛(unit)을 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.2. The simultaneous multithreading processor of claim 1, wherein the at least one processing circuit comprises a floating point unit. 제9항에 있어서, 상기 플로우팅 포인트 유닛은 상기 SMT 프로세서에 의해 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때 제1성능레벨에서 동작하도록 구성되는 제1플로우팅 포인트 유닛을 구비하고,10. The method of claim 9, wherein the floating point unit comprises a first floating point unit configured to operate at a first performance level when the number of threads operated by the SMT processor is less than or equal to a threshold, 상기 SMT 프로세서는 상기 SMT 프로세서에 의해 동작되는 쓰레드들의 수가상기 문턱값보다 클때에는 상기 제1성능레벨보다 낮은 제2성능레벨에서 동작하도록 구성되는 제2플로우팅 포인트 유닛을 더 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The SMT processor further includes a second floating point unit configured to operate at a second performance level lower than the first performance level when the number of threads operated by the SMT processor is greater than the threshold value. Simultaneous multithreading processor. 제1항에 있어서, 상기 적어도 하나의 프로세싱 회로는 정수 레지스터를 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.2. The simultaneous multithreading processor of Claim 1, wherein the at least one processing circuit comprises an integer register. 제2항에 있어서, 상기 성능레벨 제어회로는 상기 SMT 프로세서에서 각각 생성되고 완료되는 쓰레드들에 응답하여 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키거나 감소시키도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.3. The performance level control circuit of claim 2, wherein the performance level control circuitry is configured to increase or decrease the number of threads currently operating by the SMT processor in response to threads that are each created and completed in the SMT processor. Simultaneous multithreading processor. 제1항에 있어서, 상기 적어도 하나의 프로세싱 회로는, 문턱값 이하로 감소되는 상기 SMT 프로세서에서 현재 동작되는 쓰레드들의 수에 응답하여 제1성능레벨에서 동작하도록 구성되는 제1프로세싱 회로를 구비하고,2. The system of claim 1, wherein the at least one processing circuit comprises a first processing circuit configured to operate at a first performance level in response to the number of threads currently operating in the SMT processor that is reduced below a threshold; 상기 SMT 프로세서는 상기 문턱값보다 더 크게 증가되는 상기 SMT 프로세서에서 현재 동작되는 쓰레드들의 수에 응답하여 상기 제1성능레벨보다 낮은 제2성능레벨에서 동작하도록 구성되는 제2프로세싱 회로를 더 구비하는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The SMT processor further comprises a second processing circuit configured to operate at a second performance level lower than the first performance level in response to the number of threads currently operating in the SMT processor that is increased greater than the threshold. Features simultaneous multithreading processor. 제1항에 있어서, 상기 성능레벨 제어회로는, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 문턱값보다 작거나 같은 값으로부터 상기 문턱값보다 더 큰 값까지 증가시키기 위해서 새로운 쓰레드의 생성에 응답하여 상기 적어도 하나의 프로세싱 회로에 제공되는 성능레벨을 감소시키도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The method of claim 1, wherein the performance level control circuit is responsive to creation of a new thread to increase the number of threads currently operated by the SMT processor from a value less than or equal to a threshold to a value greater than the threshold. And reduce the level of performance provided to the at least one processing circuit. 제2항에 있어서, 상기 성능레벨 제어회로는, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 복수개의 상승하는 문턱값들의 각각을 초과할 때 상기 적어도 하나의 프로세싱 회로의 성능레벨을 복수개의 하강하는 성능레벨들의 하나로 감소시키도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The performance level control circuit of claim 2, wherein the performance level control circuit is configured to lower the performance level of the at least one processing circuit when the number of threads currently operated by the SMT processor exceeds each of a plurality of rising thresholds. A simultaneous multithreading processor, configured to reduce one of the performance levels. 제2항에 있어서, 상기 성능레벨 제어회로는, 제1프로세싱 회로에 대해서는 제1성능레벨을 유지하고 그리고 문턱값보다 작거나 같은 값으로부터 상기 문턱값보다 더 큰 값까지 증가하는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 응답하여 제2프로세싱 회로에 상기 제1성능레벨보다 낮은 제2성능레벨을 제공하도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.3. The system of claim 2, wherein the performance level control circuit is configured by the SMT processor to maintain a first performance level for a first processing circuit and to increase from a value less than or equal to a threshold to a value greater than the threshold. And provide a second processing circuit with a second performance level lower than the first performance level in response to the number of currently operating threads. SMT 프로세서에 있어서,In the SMT processor, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 상기 SMT 프로세서 내의 프로세싱 회로들에 성능레벨을 제공하도록 구성되는 성능레벨제어회로를 구비하는 것을 특징으로 하는 SMT 프로세서.And a performance level control circuit configured to provide a performance level to processing circuits in the SMT processor based on the number of threads currently operated by the SMT processor. 제17항에 있어서, 상기 성능레벨 제어회로는, 새로운 수의 동작하는 쓰레드들을 제공하기 위해서 새로운 쓰레드의 생성에 응답하여 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키도록 구성되고 또한 상기 SMT 프로세서에 의해 동작되는 쓰레드들의 상기 새로운 수에 기초하여 성능레벨을 상기 프로세싱 회로에 제공하도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.18. The system of claim 17, wherein the performance level control circuitry is configured to increase the number of threads currently operated by the SMT processor in response to the creation of a new thread to provide a new number of running threads. And provide a level of performance to the processing circuit based on the new number of threads operated by a processor. 제17항에 있어서, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때 상기 프로세싱 회로들에 제공되는 상기 성능레벨을 제1성능레벨로 증가시키도록 구성되고,18. The system of claim 17, wherein the performance level control circuitry is configured to increase the performance level provided to the processing circuits to a first performance level when the number of threads currently operated by the SMT processor is less than or equal to a threshold. Become, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값을 초과할 때에는 상기 프로세싱 회로들에 제공되는 상기 성능레벨을 상기 제1성능레벨보다 낮은 제2성능레벨로 감소시키도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The performance level control circuit is configured to reduce the performance level provided to the processing circuits to a second performance level lower than the first performance level when the number of threads currently operated by the SMT processor exceeds the threshold. Simultaneous multithreading processor, characterized in that the configuration. 제19항에 있어서, 상기 성능레벨 제어회로는, 제1프로세싱 회로에 대해서는 상기 제1성능레벨을 유지하고 그리고 문턱값보다 작거나 같은 값으로부터 상기 문턱값보다 더 큰 값까지 증가하는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 응답하여 제2프로세싱 회로에 상기 제1성능레벨보다 낮은 제2성능레벨을제공하도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.20. The SMT processor of claim 19, wherein the performance level control circuit is configured to maintain the first performance level for a first processing circuit and to increase from a value less than or equal to a threshold to a value greater than the threshold. And provide the second processing circuit with a second performance level lower than the first performance level in response to the number of threads currently operating. 제17항에 있어서, 상기 프로세싱 회로는 플로우팅 포인트 유닛과 데이터 캐쉬 메모리의 적어도 하나를 구비하는 것을 특징으로 하는 다중 쓰레딩 프로세서.18. The multithreaded processor of claim 17, wherein the processing circuit comprises at least one of a floating point unit and a data cache memory. 제17항에 있어서, 상기 프로세싱 회로들은 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 문턱값보다 작거나 같을 때 제1성능레벨에서 동작하도록 구성되고,18. The system of claim 17, wherein the processing circuits are configured to operate at a first performance level when the number of threads currently operated by the SMT processor is less than or equal to a threshold, 상기 프로세싱 회로들은 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값보다 클 때에는 제2성능레벨에서 동작하도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.And said processing circuits are configured to operate at a second performance level when the number of threads currently operated by said SMT processor is greater than said threshold. SMT 프로세서에 있어서,In the SMT processor, 쓰레드들이 생성될 때 상기 SMT 프로세서에서 동작되는 쓰레드들에 상기 SMT 프로세서와 관련된 프로세싱 회로들을 할당하는 쓰레드 관리회로; 및Thread management circuitry for allocating processing circuits associated with the SMT processor to threads that are operated in the SMT processor when threads are created; And 적어도 하나의 문턱값에 비교되어 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 복수개의 성능레벨들의 하나를 상기 프로세싱 회로들에 제공하는 성능레벨 제어회로를 구비하는 것을 특징으로 하는 SMT 프로세서.And a performance level control circuit for providing one of a plurality of performance levels to the processing circuits based on the number of threads currently operating by the SMT processor compared to at least one threshold. 제23항에 있어서, 상기 적어도 하나의 문턱값은 상기 SMT 프로세서에 의해동작되는 쓰레드들의 문턱 수인 것을 특징으로 하는 SMT 프로세서.24. The SMT processor of claim 23, wherein the at least one threshold is a threshold number of threads operated by the SMT processor. 제23항에 있어서, 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 적어도 하나의 문턱값보다 작거나 같을 때 상기 프로세싱 회로들에 제공되는 성능레벨을 제1성능레벨로 증가시키고,24. The system of claim 23, wherein the performance level control circuit increases the performance level provided to the processing circuits to a first performance level when the number of threads currently operated by the SMT processor is less than or equal to the at least one threshold. Let's 상기 성능레벨 제어회로는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 적어도 하나의 문턱값을 초과할 때에는 상기 프로세싱 회로들에 제공되는 상기 성능레벨을 상기 제1성능레벨보다 낮은 제2성능레벨로 감소시키는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.The performance level control circuit sets the performance level provided to the processing circuits to a second performance level lower than the first performance level when the number of threads currently operated by the SMT processor exceeds the at least one threshold. Simultaneous multithreading processor, characterized in that for reducing. 제23항에 있어서, 상기 성능레벨 제어회로는, 상기 적어도 하나의 문턱값보다 작거나 같은 값으로부터 상기 적어도 하나의 문턱값보다 더 큰 값까지 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키기 위해 새로운 쓰레드의 생성에 응답하여 상기 프로세싱 회로들에 제공되는 성능레벨을 감소시키도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.24. The system of claim 23, wherein the performance level control circuit is to increase the number of threads currently operated by the SMT processor from a value less than or equal to the at least one threshold to a value greater than the at least one threshold. And reduce the performance level provided to the processing circuits in response to the creation of a new thread. 제22항에 있어서, 상기 성능레벨 제어회로는, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 복수개의 상승하는 문턱값들의 각각을 초과할 때 상기 프로세싱 회로들에 제공되는 상기 성능레벨을 복수개의 하강하는 성능레벨들의 하나로 감소시키도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.23. The system of claim 22, wherein the performance level control circuit lowers the performance level provided to the processing circuits when the number of threads currently operated by the SMT processor exceeds each of a plurality of rising thresholds. And reduce to one of the performance levels. 제23항에 있어서, 상기 성능레벨 제어회로는, 제1프로세싱 회로에 대해서는 제1성능레벨을 유지하고 그리고 상기 적어도 하나의 문턱값보다 작거나 같은 값으로부터 상기 적어도 하나의 문턱값보다 더 큰 값까지 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 응답하여 제2프로세싱 회로에 상기 제1성능레벨보다 낮은 제2성능레벨을 제공하도록 구성되는 것을 특징으로 하는 동시 다중 쓰레딩 프로세서.24. The system of claim 23, wherein the performance level control circuit maintains a first performance level for the first processing circuit and from a value less than or equal to the at least one threshold to a value greater than the at least one threshold. And provide a second processing circuit with a second performance level lower than the first performance level in response to the number of threads currently operated by the SMT processor. SMT 프로세서와 관련되는 캐쉬 메모리에 있어서,In the cache memory associated with the SMT processor, 태그 메모리; 및Tag memory; And 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 상기 태그 메모리와 동시에 액세스되거나 또는 순차적으로 액세스되는 데이터 메모리를 구비하는 것을 특징으로 하는 캐쉬 메모리.And a data memory simultaneously accessed or sequentially accessed with the tag memory based on the number of threads currently operated by the SMT processor. 제29항에 있어서, 상기 태그 메모리와 상기 데이터 메모리는 문턱값보다 작거나 같아지는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 응답하여 동시에 액세스되는 것을 특징으로 하는 캐쉬 메모리.30. The cache memory of claim 29 wherein the tag memory and the data memory are simultaneously accessed in response to the number of threads currently operated by the SMT processor that is less than or equal to a threshold. 제29항에 있어서, 상기 데이터 메모리는 문턱값보다 커지는 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 응답하여 상기 태그 메모리에서의 히트에 응답하여 액세스되는 것을 특징으로 하는 캐쉬 메모리.30. The cache memory of claim 29 wherein the data memory is accessed in response to a hit in the tag memory in response to the number of threads currently operated by the SMT processor that is greater than a threshold. SMT 프로세서를 동작시키는 방법에 있어서,In the method for operating the SMT processor, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 적어도 하나의 프로세싱 회로에 성능레벨을 제공하는 단계를 구비하는 것을 특징으로 하는 방법.Providing a performance level to at least one processing circuit based on the number of threads currently operated by the SMT processor. 제32항에 있어서, 상기 제공하는 단계는,The method of claim 32, wherein the providing step, 상기 적어도 하나의 프로세싱 회로에 상기 성능레벨을 제공하기 위해서, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수와 문턱값을 비교하는 단계에 의해 선행되는 것을 특징으로 하는 방법.And comparing the threshold number and the number of threads currently being operated by the SMT processor to provide the performance level to the at least one processing circuit. 제32항에 있어서, 상기 비교하는 단계는,The method of claim 32, wherein the comparing step, 상기 SMT 프로세서에서 시작되는 새로운 쓰레드에 응답하여 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키는 단계; 및Increasing the number of threads currently operated by the SMT processor in response to a new thread started at the SMT processor; And 상기 SMT 프로세서에서 종결되는 쓰레드에 응답하여 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 감소시키는 단계에 의해 선행되는 것을 특징으로 하는 방법.Reducing the number of threads currently operating by the SMT processor in response to the threads terminating in the SMT processor. 제34항에 있어서, 상기 제공하는 단계는,The method of claim 34, wherein the providing step, 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값보다 작거나 같으면 제1성능레벨을 상기 적어도 하나의 프로세싱 회로에 제공하는 단계; 및Providing a first performance level to the at least one processing circuit if the number of threads currently operated by the SMT processor is less than or equal to the threshold; And 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값을 초과하면 상기 제1성능레벨보다 낮은 제2성능레벨을 상기 적어도 하나의 프로세싱 회로에 제공하는 단계를 구비하는 것을 특징으로 하는 방법.Providing the at least one processing circuit with a second performance level lower than the first performance level if the number of threads currently operated by the SMT processor exceeds the threshold. 제35항에 있어서,36. The method of claim 35 wherein 증가하는 추가적인 문턱값들을 초과하도록 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키는 새로운 쓰레드들과 관련된 프로세싱 회로들에 대한 성능레벨들을 더 감소시키는 단계를 더 구비하는 것을 특징으로 하는 방법.Further reducing performance levels for processing circuits associated with new threads that increase the number of threads currently operated by the SMT processor to exceed increasing additional thresholds. SMT 프로세서를 동작시키는 컴퓨터 프로그램 제품에 있어서,A computer program product for operating an SMT processor, comprising: 내부에 구현된 컴퓨터 독출가능(computer readable) 프로그램 코드를 갖는 컴퓨터 독출가능 매체(medium)를 구비하고,A computer readable medium having computer readable program code implemented therein, 상기 컴퓨터 프로그램 제품은 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수에 기초하여 상기 SMT 프로세서 내의 적어도 하나의 프로세싱 회로에 성능레벨을 제공하도록 구성되는 컴퓨터 독출가능 프로그램 코드를 구비하는 것을 특징으로 하는 컴퓨터 프로그램 제품.And the computer program product includes computer readable program code configured to provide a level of performance to at least one processing circuit in the SMT processor based on the number of threads currently operated by the SMT processor. product. 제37항에 있어서,The method of claim 37, 상기 적어도 하나의 프로세싱 회로에 상기 성능레벨을 제공하기 위해 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수와 문턱값을 비교하도록 구성되는 컴퓨터 독출가능 프로그램 코드를 더 구비하는 것을 특징으로 하는 컴퓨터 프로그램 제품.And computer readable program code configured to compare a threshold and the number of threads currently operated by the SMT processor to provide the performance level to the at least one processing circuit. 제37항에 있어서,The method of claim 37, 상기 SMT 프로세서에서 시작되는 새로운 쓰레드에 응답하여 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키는 컴퓨터 독출가능 프로그램 코드; 및Computer readable program code for increasing the number of threads currently operated by the SMT processor in response to a new thread started at the SMT processor; And 상기 SMT 프로세서에서 종결되는 쓰레드에 응답하여 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 감소시키는 컴퓨터 독출가능 프로그램 코드를 더 구비하는 것을 특징으로 하는 컴퓨터 프로그램 제품.And computer readable program code for reducing the number of threads currently operated by the SMT processor in response to the threads terminating in the SMT processor. 제37항에 있어서, 상기 컴퓨터 독출가능 프로그램 코드는,38. The computer program product of claim 37, wherein the computer readable program code includes: 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값보다 작거나 같으면 제1성능레벨을 상기 적어도 하나의 프로세싱 회로에 제공하도록 구성되는 컴퓨터 독출가능 프로그램 코드; 및Computer readable program code configured to provide a first performance level to the at least one processing circuit if the number of threads currently operated by the SMT processor is less than or equal to the threshold; And 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수가 상기 문턱값을 초과하면 상기 제1성능레벨보다 낮은 제2성능레벨을 상기 적어도 하나의 프로세싱 회로에 제공하도록 구성되는 컴퓨터 독출가능 프로그램 코드를 구비하는 것을 특징으로 하는 컴퓨터 프로그램 제품.Computer readable program code configured to provide the at least one processing circuit with a second performance level lower than the first performance level if the number of threads currently operated by the SMT processor exceeds the threshold. Computer program products made. 제38항에 있어서,The method of claim 38, 증가하는 추가적인 문턱값들을 초과하도록 상기 SMT 프로세서에 의해 현재 동작되는 쓰레드들의 수를 증가시키는 새로운 쓰레드들과 관련된 프로세싱 회로들에 대한 성능레벨들을 더 감소시키도록 구성되는 컴퓨터 독출가능 프로그램 코드를 더 구비하는 것을 특징으로 하는 컴퓨터 프로그램 제품.Further comprising computer readable program code configured to further reduce performance levels for processing circuits associated with new threads that increase the number of threads currently operated by the SMT processor to exceed increasing additional thresholds. Computer program product, characterized in that.
KR1020040011337A 2003-02-20 2004-02-20 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 KR100594256B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20030010759 2003-02-20
KR1020030010759 2003-02-20
US10/631,601 US7152170B2 (en) 2003-02-20 2003-07-31 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
US10/631,601 2003-07-31

Publications (2)

Publication Number Publication Date
KR20040075287A true KR20040075287A (en) 2004-08-27
KR100594256B1 KR100594256B1 (en) 2006-06-30

Family

ID=32044744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040011337A KR100594256B1 (en) 2003-02-20 2004-02-20 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

Country Status (5)

Country Link
JP (1) JP4439288B2 (en)
KR (1) KR100594256B1 (en)
CN (1) CN100394381C (en)
GB (1) GB2398660B (en)
TW (1) TWI261198B (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4574493B2 (en) * 2005-08-22 2010-11-04 キヤノン株式会社 Processor system and multi-thread processor
JP4687685B2 (en) * 2007-04-24 2011-05-25 株式会社デンソー Electronic control device for engine control and microcomputer
EP2159700A4 (en) * 2007-06-19 2011-07-20 Fujitsu Ltd Cache controller and control method
EP2423808B1 (en) * 2007-06-20 2014-05-14 Fujitsu Limited Arithmetic device
US9529727B2 (en) * 2014-05-27 2016-12-27 Qualcomm Incorporated Reconfigurable fetch pipeline
CN105808444B (en) * 2015-01-19 2019-01-01 东芝存储器株式会社 The control method of storage device and nonvolatile memory
WO2018018492A1 (en) * 2016-07-28 2018-02-01 张升泽 Method and system of allocating current in plurality of intervals in interior of multi-core chip
WO2018018494A1 (en) * 2016-07-28 2018-02-01 张升泽 Method and system for allocating power based on multi-zone allocation
CN112631960B (en) * 2021-03-05 2021-06-04 四川科道芯国智能技术股份有限公司 Method for expanding cache memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218704A (en) * 1989-10-30 1993-06-08 Texas Instruments Real-time power conservation for portable computers
US5396635A (en) * 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
JP3100241B2 (en) * 1992-10-09 2000-10-16 ダイヤセミコンシステムズ株式会社 Microprocessor drive controller
JP3461535B2 (en) * 1993-06-30 2003-10-27 株式会社日立国際電気 Wireless terminal device and control method therefor
US5630142A (en) * 1994-09-07 1997-05-13 International Business Machines Corporation Multifunction power switch and feedback led for suspend systems
US6073159A (en) 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US7051329B1 (en) * 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US6711447B1 (en) * 2003-01-22 2004-03-23 Intel Corporation Modulating CPU frequency and voltage in a multi-core CPU architecture

Also Published As

Publication number Publication date
JP2004252987A (en) 2004-09-09
CN100394381C (en) 2008-06-11
TW200421180A (en) 2004-10-16
GB0403738D0 (en) 2004-03-24
JP4439288B2 (en) 2010-03-24
GB2398660A (en) 2004-08-25
TWI261198B (en) 2006-09-01
KR100594256B1 (en) 2006-06-30
CN1534463A (en) 2004-10-06
GB2398660B (en) 2005-09-07

Similar Documents

Publication Publication Date Title
US7152170B2 (en) 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
JP5058970B2 (en) Sequencer address management
US7209996B2 (en) Multi-core multi-thread processor
US6658447B2 (en) Priority based simultaneous multi-threading
US7366878B1 (en) Scheduling instructions from multi-thread instruction buffer based on phase boundary qualifying rule for phases of math and data access operations with better caching
US9110810B2 (en) Multi-level instruction cache prefetching
US9189242B2 (en) Credit-based streaming multiprocessor warp scheduling
US11275614B2 (en) Dynamic update of the number of architected registers assigned to software threads using spill counts
US20120079241A1 (en) Instruction execution based on outstanding load operations
US9595075B2 (en) Load/store operations in texture hardware
US9069664B2 (en) Unified streaming multiprocessor memory
EP3716065A1 (en) Apparatus, method, and system for ensuring quality of service for multi-threading processor cores
US20110084976A1 (en) Shader Program Headers
US5860101A (en) Scalable symmetric multiprocessor data-processing system with data allocation among private caches and segments of system memory
US20230409485A1 (en) Flexible cache allocation technology priority-based cache line eviction algorithm
US20130232320A1 (en) Persistent prefetch data stream settings
KR100594256B1 (en) 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
CN112965921B (en) TLB management method and system in multi-task GPU
US20110276979A1 (en) Non-Real Time Thread Scheduling
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
WO2019105566A1 (en) Systems and methods for clustering sub-pages of physical memory pages
GB2410584A (en) A simultaneous multi-threading processor accessing a cache in different power modes according to a number of threads
US7434001B2 (en) Method of accessing cache memory for parallel processing processors

Legal Events

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

Payment date: 20110531

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee