JP2009037608A - Method, system and processor for controlling adaptive performance cycle for enhanced instruction throughput - Google Patents

Method, system and processor for controlling adaptive performance cycle for enhanced instruction throughput Download PDF

Info

Publication number
JP2009037608A
JP2009037608A JP2008180402A JP2008180402A JP2009037608A JP 2009037608 A JP2009037608 A JP 2009037608A JP 2008180402 A JP2008180402 A JP 2008180402A JP 2008180402 A JP2008180402 A JP 2008180402A JP 2009037608 A JP2009037608 A JP 2009037608A
Authority
JP
Japan
Prior art keywords
frequency
execution
instruction
processor
cycle
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2008180402A
Other languages
Japanese (ja)
Other versions
JP5270240B2 (en
Inventor
Jr Anthony Correale
アンソニー・コレアーレ・ジュニア
Kenichi Tsuchiya
ケンイチ・ツチヤ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 US11/776,121 external-priority patent/US7937568B2/en
Priority claimed from US11/776,222 external-priority patent/US7779237B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009037608A publication Critical patent/JP2009037608A/en
Application granted granted Critical
Publication of JP5270240B2 publication Critical patent/JP5270240B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To increase an instruction throughput in a processor performing longer latency instructions within the instruction pipeline. <P>SOLUTION: Logic associated with specific stages of the performance pipeline, responsible for performing the particular type of instructions, determines the schedule of a threshold number of the particular-type instructions. The logic then automatically changes a performance cycle frequency of the specific pipeline stages from a first cycle frequency to a second, pre-established higher cycle frequency. The cycle frequency of only the one or more functional stages are switched to the higher cycle frequency independent of the cycle frequency of the other functional stages in the processor pipeline. The logic also automatically switches the performance cycle frequency of the specific pipeline stages back from the second, higher cycle frequency to the first cycle frequency, when the number of scheduled first-type instructions has completed performance. <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、一般にデータ・プロセッサに関し、とりわけ、プロセッサ実行周波数に関する命令スループットの改善に関する。   The present invention relates generally to data processors, and more particularly to improving instruction throughput with respect to processor execution frequency.

関連出願
本出願は、本願譲受人に譲渡された、「Adaptive Execution Frequency Control Method For Enhanced Instruction Throughput」という名称の、同時に出願された、同時係属の米国特許出願(譲受人整理番号第RPS920070048US1号)の主題に関する。
RELATED APPLICATION This application is assigned to the assignee of the present application, co-pending US Patent Application No. 7 0048, US Patent Application No. 7 0048, concurrently filed, entitled “Adaptive Execution Frequency Control Method For Enhanced Instruction Throughput”. Concerning the subject.

命令実行スループットは、プロセッサ効率の重要な尺度である。このスループットは、中央処理ユニット(CPU)がその上で実行中の命令を処理することが可能な周波数に直接相関する。従来のCPUコアは、通常、高周波数で実行するように設計されるが、実行周波数を指示するクリティカル・サブユニットによって、実際の実行周波数において制限される。すなわち、CPUコアは、クリティカル・サブユニットによってサポートされる最高周波数で命令を実行し、これは通常、プロセッサの最高設計周波数よりも低い。これらのサブユニットは、周波数制限動作である、乗算動作などの特定タイプの動作を実行する、プロセッサ・パイプラインの実行ステージを含む。サブユニットは、特定タイプの動作の実行をより高いプロセッサ周波数で完了することができないため、CPUの最高周波数動作を制限する。一部のプロセッサ設計では、特定タイプの動作でのこうしたより高い周波数での実行を試みると、実行パスにエラーあるいは停止またはその両方を生じさせることになり、事実上、プロセッサ・スループットが低下する。   Instruction execution throughput is an important measure of processor efficiency. This throughput is directly correlated to the frequency at which the central processing unit (CPU) can process the instructions executing on it. Conventional CPU cores are usually designed to run at high frequencies, but are limited in actual execution frequencies by critical subunits that dictate execution frequencies. That is, the CPU core executes instructions at the highest frequency supported by the critical subunit, which is usually lower than the highest design frequency of the processor. These subunits include execution stages of the processor pipeline that perform certain types of operations, such as multiplication operations, which are frequency limited operations. The subunit limits the highest frequency operation of the CPU because it cannot complete the execution of certain types of operations at higher processor frequencies. In some processor designs, attempting to run at these higher frequencies for certain types of operations will result in errors and / or halts in the execution path, effectively reducing processor throughput.

周波数制限動作(一連の乗算命令などの)は、命令実行ストリーム内ではほとんど実行されないが、特にこれらの命令が命令ストリーム内で実行される場合、プロセッサの周波数およびスループットを下限値まで低下させる。たとえば、乗算命令は完了するために3つのサイクルを実行する可能性があり、スループットが80%しか与えられず、周波数の効果が制限される。これらの乗算命令に対処するために、常にプロセッサ動作をスループットの80%に制限し、すべての命令に対する処理シーケンス全体が80%で実行される。一例として、実行パイプにおける乗算動作が(現在の設計に基づいて)800MHzに制限される。プロセッサの周波数が1000MHzであれば、乗算動作は高周波数実行に対する制限要素となる。   Frequency limiting operations (such as a series of multiply instructions) are rarely executed in the instruction execution stream, but reduce the processor frequency and throughput to lower limits, especially when these instructions are executed in the instruction stream. For example, a multiply instruction may execute three cycles to complete, giving only 80% throughput and limiting the frequency effect. In order to deal with these multiply instructions, the processor operation is always limited to 80% of the throughput, and the entire processing sequence for all instructions is executed at 80%. As an example, multiplication operations in the execution pipe are limited to 800 MHz (based on the current design). If the processor frequency is 1000 MHz, the multiplication operation becomes a limiting factor for high frequency execution.

これらのサブユニットによって導入される周波数制限に対処するために、一定の機能強化が実施または提案されている。たとえば一設計では、実行パイプ内に追加のステージが導入される。乗算サブユニットにステージを追加することは、周波数を増加させるための1つの方法であるが、このステージの追加は待ち時間を悪化させ、チップ面積を増加させる。他の設計では、一定量の並列処理が提供され、周波数制限要素をより高速に処理させるために追加のトランジスタが導入される。しかしながら、これらの提案はどちらもプロセッサ・ダイ上のかなり多くのハードウェアに関連し、結果としてより大きな面積要件、より多くの電力消費、および関連するコストの増加を発生させる。   Certain enhancements have been implemented or proposed to address the frequency limitations introduced by these subunits. For example, in one design, additional stages are introduced in the execution pipe. Adding a stage to the multiplication subunit is one way to increase the frequency, but adding this stage degrades latency and increases chip area. In other designs, a certain amount of parallel processing is provided and additional transistors are introduced to make the frequency limiting element process faster. However, both of these proposals are associated with quite a lot of hardware on the processor die, resulting in a larger area requirement, more power consumption, and an associated cost increase.

こうした提案は、高密度のシステム・オン・チップ(SoC)に望ましい設計からは正反対の設計オプションにつながる。現在のSoC設計では、チップ上の面積を低減させることおよび電力効率の良い設計を作成することに焦点が当てられてきている。電圧アイランド、適合電圧制御、ソフトウェア電圧制御、適合周波数制御などの最新の方法は、すべて、電力効率、あるいは、最高レベルの性能を維持しながら特定用途向け集積回路(ASIC)/SoCの電力を低下させるための努力、またはその両方に焦点が当てられている。   These proposals lead to the opposite design option from the desired design for high density system-on-chip (SoC). Current SoC designs have focused on reducing the area on the chip and creating power efficient designs. State-of-the-art methods such as voltage islands, adaptive voltage control, software voltage control, and adaptive frequency control all reduce power for application-specific integrated circuits (ASICs) / SoCs while maintaining power efficiency or the highest level of performance Focus on efforts to do so, or both.

PPC4xx CPUコアは、32ビット汎用マイクロプロセッサ領域での、性能/電力能力に関する業界における主要なCPUコアの1つである。90nm、65nm、および45nmへの技術の出現により、ASIC電力密度は、最も重要な設計障害の1つになっている。CPUコアはASICの主要機能の一部であり、いずれの他の機能構成要素よりも高速で実行するように設計されるため、CPU/マイクロプロセッサ・コアは、ASICの電力効率および性能を向上させる上での主な焦点である。CPUコア内には多数の機能構築ブロックがあり、それぞれが専用の電力/性能属性を備える。したがって、コア内のユニットまたはサブユニットの小規模セットが、これらユニットの性能属性を制限する動作制約を有することは珍しくない。これらユニットは、周波数制限動作を処理する実行ステージ内のそうしたユニットであるという傾向がある。   The PPC4xx CPU core is one of the industry's leading CPU cores in terms of performance / power capability in the 32-bit general purpose microprocessor area. With the advent of technology to 90 nm, 65 nm, and 45 nm, ASIC power density has become one of the most important design obstacles. The CPU / microprocessor core improves the power efficiency and performance of the ASIC because the CPU core is part of the main function of the ASIC and is designed to run faster than any other functional component. The main focus on. There are a number of functional building blocks in the CPU core, each with dedicated power / performance attributes. Thus, it is not uncommon for a small set of units or subunits in a core to have operational constraints that limit the performance attributes of these units. These units tend to be those units in the execution stage that handle frequency limiting operations.

したがって前述のように、これらユニットが、CPU全体の総合的な性能(すなわちスループット)に影響を与えるか、または、所望の性能を達成するために電力効率を犠牲にして構成要素を追加して設計される可能性がある。   Therefore, as mentioned above, these units can affect the overall performance (ie, throughput) of the overall CPU, or can be designed with additional components at the expense of power efficiency to achieve the desired performance. There is a possibility that.

周波数制限動作(一連の乗算命令など)を実行する場合に、プロセッサ内の機能ユニットの実行周波数を適応的および選択的に制御することによって、プロセッサのスループットを向上させるための、方法、システム、およびコンピュータ・プログラム製品が開示される。第1の実施形態では、プロセッサ・レベル(周波数)制御システムが、従来の周波数制限動作である(すなわち、プロセッサ周波数にかなりの速度低下を生じさせる)、様々な算術演算および論理演算に関するプロセッサの(クロック)周波数を選択的に変更する。プロセッサ・レベル周波数制御システムは、コンパイル済み実行コードを監視し、たとえば乗算動作の事前設定数などの一連の特定タイプの命令/動作が、プロセッサによる実行のためにキューに入れられるタイミングを認識する、ユーティリティまたは論理/回路を提供する。周波数制御システムは、最高の乗算動作スループットを可能にするために、プロセッサの周波数を、より高位の(通常の)周波数から事前に確立されたより低位の最適周波数へと、動的に調整する。その後、周波数制御システムは、一連の(乗算)動作が完了すると、プロセッサ周波数をより高位の周波数へと再調整する。一実施形態では、周波数制御システムは、プロセッサの動作周波数を設定するプロセッサに関連付けられたクロックおよび電力管理ユニットをトリガすることによって、プロセッサ周波数を調整する。   A method, system, and method for improving processor throughput by adaptively and selectively controlling the execution frequency of functional units in a processor when performing frequency limiting operations (such as a series of multiply instructions) A computer program product is disclosed. In the first embodiment, the processor level (frequency) control system is a conventional frequency limited operation (ie, causes a significant slowdown in processor frequency), and the processor's ( Select the clock) frequency selectively. The processor level frequency control system monitors the compiled execution code and recognizes when a set of specific types of instructions / operations, such as a preset number of multiplication operations, are queued for execution by the processor, Provide utilities or logic / circuitry. The frequency control system dynamically adjusts the processor frequency from a higher (normal) frequency to a lower pre-established optimal frequency to allow for the highest multiplication operation throughput. Thereafter, the frequency control system readjusts the processor frequency to a higher frequency when a series of (multiplication) operations is completed. In one embodiment, the frequency control system adjusts the processor frequency by triggering a clock and power management unit associated with the processor that sets the operating frequency of the processor.

他の実施形態では、パイプライン・ステージ・レベルのモード制御システムが実装される。パイプライン・ステージ・レベルのモード制御システムは、実行パイプラインの特定ステージで一連の特定タイプの動作を実行する場合、プロセッサのクロック周波数の代わりにハードウェア制御可能サイクルを導入する。モード制御システムは、プロセッサ内に統合可能であり、プロセッサの特定の実行パイプライン・ステージに関連付けることが可能な、1つ以上の命令サイクル管理(ICM)論理/回路を含む。モード制御システムは、プロセッサによる実行に関してスケジューリングされた、特定タイプ(たとえば乗算動作)の連続動作の数をカウントする。特定タイプの動作の数が一定の閾値カウントを超える場合、モード制御システムはICM論理に対して、命令当たりの(プロセッサ周波数とは無関係な)追加サイクルを、特定の実行パイプライン・ステージで発生する動作に挿入するように指示する。ICM論理は、単一の「命令当たりサイクル」動作モードから、事前に定義された「命令当たり複数サイクル」モードに変更し、これによってそれぞれの特定タイプ動作を完了するために必要なサイクル数が増加する。したがって、これら特定タイプ動作のスループットを向上させるために、「命令当たりサイクル」(すなわち動作当たりのサイクル数)周波数が増加する。特定タイプ動作の数が閾値未満であれば、モード制御システムは、サイクル周波数を、標準タイプ動作に関する通常の命令当たり1サイクルで維持する(またはサイクル周波数をこのサイクルに戻す)。   In other embodiments, a pipeline stage level mode control system is implemented. Pipeline stage level mode control systems introduce hardware controllable cycles instead of processor clock frequency when performing a specific series of operations at a specific stage of the execution pipeline. The mode control system includes one or more instruction cycle management (ICM) logic / circuits that can be integrated into the processor and associated with a particular execution pipeline stage of the processor. The mode control system counts the number of consecutive operations of a particular type (eg, multiply operations) scheduled for execution by the processor. If the number of specific types of operations exceeds a certain threshold count, the mode control system generates additional cycles per instruction (independent of processor frequency) for the ICM logic at a specific execution pipeline stage Instruct to insert into action. ICM logic changes from a single “cycle per instruction” mode of operation to a predefined “multiple cycles per instruction” mode, which increases the number of cycles required to complete each specific type of operation. To do. Thus, in order to improve the throughput of these specific types of operations, the “cycles per instruction” (ie, cycles per operation) frequency is increased. If the number of specific type operations is less than the threshold, the mode control system maintains the cycle frequency at one cycle per normal command for standard type operations (or returns the cycle frequency to this cycle).

周波数/モード制御システムは、基本周波数での標準動作に関する命令待ち時間および命令当たりスループットを動的にサポートする一方で、CPU性能に大きな影響を与えることなく、CPUスループットを向上させ、CPU動的電力使用量を低減させるために、より高位の命令当たりサイクルまたはより下位の最適な周波数で、特定タイプ命令を実行する。   The frequency / mode control system dynamically supports instruction latency and throughput per instruction for standard operation at the fundamental frequency, while improving CPU throughput without significantly affecting CPU performance and CPU dynamic power. In order to reduce usage, specific type instructions are executed at a higher cycle per instruction or at a lower optimal frequency.

本発明の前述ならびに追加の目的、特徴、および利点は、以下の詳細に記述された説明で明らかとなろう。   The foregoing as well as additional objects, features, and advantages of the present invention will become apparent in the following detailed written description.

本発明それ自体、ならびにその好ましい使用モード、他の目的、および利点は、例示的な実施形態の以下の詳細な説明を添付の図面に関して参照することにより、最も良く理解されるであろう。   The invention itself, as well as its preferred mode of use, other objects and advantages, will be best understood by referring to the following detailed description of exemplary embodiments in connection with the accompanying drawings.

本発明は、データ・プロセッサにおける実行周波数、動作当たりのサイクル、および機能ユニットの電力使用量を適応的に制御するための方法、システム、およびコンピュータ・プログラム製品を提供する。本明細書では、本発明の2つの主な実装、すなわちプロセッサ・レベルの実装およびパイプライン・ステージ・レベルの実装について説明する。   The present invention provides methods, systems, and computer program products for adaptively controlling execution frequency, cycles per operation, and functional unit power usage in a data processor. This document describes two main implementations of the present invention: processor level implementation and pipeline stage level implementation.

プロセッサ・レベルの実装では、(周波数)制御システムが、様々な算術演算および論理演算に関するプロセッサの(クロック)周波数を選択的に変更する、ソフトウェア制御可能サイクルを実施する。プロセッサ・レベルの周波数制御システムは、ソフトウェア・ベース/制御または論理ベースとすることができる。どちらの方法も、コンパイル済み実行コードを監視し、たとえば乗算動作の事前設定数などの一連の特定タイプの命令/動作がプロセッサによる実行のためにキューに入れられるタイミングを認識する。周波数制御システムは、最高の乗算動作スループットを可能にするために、プロセッサの周波数を、より高位の(通常の)周波数から事前に確立されたより低位の周波数へと、動的に調整する。その後、周波数制御システムは、一連の(乗算)動作が完了すると、プロセッサ周波数をより高位の周波数へと再調整する。さらに周波数制御システムは、CPU性能に大きな影響を与えることなく、プロセッサの動的電力を減少させるために、通常の命令待ち時間および命令当たりスループットをサポートする。   In a processor level implementation, the (frequency) control system implements a software controllable cycle that selectively changes the processor (clock) frequency for various arithmetic and logic operations. The processor level frequency control system may be software based / control or logic based. Both methods monitor compiled executable code and recognize when a set of specific types of instructions / operations, such as a preset number of multiply operations, are queued for execution by the processor. The frequency control system dynamically adjusts the processor frequency from a higher (normal) frequency to a pre-established lower frequency to allow for the highest multiplication operation throughput. Thereafter, the frequency control system readjusts the processor frequency to a higher frequency when a series of (multiplication) operations is completed. In addition, the frequency control system supports normal instruction latency and throughput per instruction to reduce processor dynamic power without significantly impacting CPU performance.

パイプライン・ステージ・レベルの実装は、プロセッサ周波数全体に影響を与えることなく、プロセッサの実行パイプライン内の特定ステージでハードウェアを介して実装されるモード制御システムを提供する。パイプライン・ステージ・レベルのモード制御システムは、実行パイプラインの特定ステージで一連の特定タイプの動作を実行する場合、プロセッサのクロック周波数の代わりにハードウェア制御可能サイクルを導入する。モード制御システムは、プロセッサ内に統合可能であり、プロセッサの特定の実行パイプライン・ステージに関連付けることが可能な、1つ以上の命令サイクル管理(ICM)論理/回路を含む。モード制御システムは、プロセッサによる実行に関してスケジューリングされた、特定タイプ(たとえば乗算動作)の連続動作の数をカウントする。特定タイプの動作の数が一定の閾値カウントを超える場合、モード制御システムはICM論理に対して、命令当たりの(プロセッサ周波数とは無関係な)追加サイクルを、特定の実行パイプライン・ステージで発生する動作に挿入するように指示する。ICM論理は、単一の「命令当たりサイクル」動作モードから、事前に定義された「命令当たり複数サイクル」モードに変更し、これによってそれぞれの特定タイプ動作を完了するために必要なサイクル数が増加する。特定タイプの動作の数が閾値数を下回る場合、モード制御システムは、サイクル周波数が標準タイプ動作に関する通常のサイクル周波数であるか、またはこのサイクル周波数に戻ることを保証する。   Pipeline stage level implementation provides a mode control system that is implemented via hardware at a particular stage in the processor's execution pipeline without affecting the overall processor frequency. Pipeline stage level mode control systems introduce hardware controllable cycles instead of processor clock frequency when performing a specific series of operations at a specific stage of the execution pipeline. The mode control system includes one or more instruction cycle management (ICM) logic / circuits that can be integrated into the processor and associated with a particular execution pipeline stage of the processor. The mode control system counts the number of consecutive operations of a particular type (eg, multiply operations) scheduled for execution by the processor. If the number of specific types of operations exceeds a certain threshold count, the mode control system generates additional cycles per instruction (independent of processor frequency) for the ICM logic at a specific execution pipeline stage Instruct to insert into action. ICM logic changes from a single “cycle per instruction” mode of operation to a predefined “multiple cycles per instruction” mode, which increases the number of cycles required to complete each specific type of operation. To do. If the number of a particular type of operation is below the threshold number, the mode control system ensures that the cycle frequency is the normal cycle frequency for standard type operation or returns to this cycle frequency.

ソフトウェア実装およびハードウェア実装の説明を明確に区別できるようにするために、本明細書には副題が提供される。また、ソフトウェア・ベースの周波数制御システムの諸実施形態は図2、図10、図11、および図12に示され、ハードウェア・ベースのモード制御システムは図3、図4、および図5に示される。   In order to provide a clear distinction between software implementation and hardware implementation descriptions, a subtitle is provided herein. Also, software-based frequency control system embodiments are shown in FIGS. 2, 10, 11, and 12, and hardware-based mode control systems are shown in FIGS. 3, 4, and 5. FIG. It is.

本発明の例示的諸実施形態の以下の詳細な説明では、本発明が実施可能な特定の例示的諸実施形態が、当業者が本発明を実施できるように十分詳細に説明され、他の諸実施形態が使用可能であること、ならびに、論理、アーキテクチャ、プログラム、機械、電気、およびその他における変更が、本発明の趣旨または範囲を逸脱することなく実行可能であることを理解されよう。したがって以下の詳細な説明は限定的な意味で行われるのではなく、本発明の範囲は添付の特許請求の範囲によってのみ画定される。   In the following detailed description of exemplary embodiments of the invention, specific exemplary embodiments in which the invention may be practiced are described in sufficient detail to enable those skilled in the art to practice the invention, and other It will be understood that the embodiments may be used and that changes in logic, architecture, program, machine, electricity, and others can be made without departing from the spirit or scope of the invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.

図面の記述において、同様の要素には以前の図面のものと同様の名前および参照番号が与えられる。後出の図面が、異なるコンテキストにおける要素または異なる機能を備えた要素を使用する場合、その要素には図面番号を表す異なる先行数字が与えられる(たとえば、図1の場合は1xx、図2の場合は2xx)。要素に割り当てられた特定の数字は、説明に役立つためにのみ与えられるものであって、本発明に対するいかなる(構造上または機能上の)制限をも示唆するものではない。   In the description of the drawings, similar elements are given the same names and reference numbers as in previous drawings. If a later drawing uses an element in a different context or with a different function, the element is given a different leading number representing the drawing number (eg, 1xx in the case of FIG. 1, in the case of FIG. 2) 2xx). The specific numbers assigned to the elements are provided for illustrative purposes only and do not imply any (structural or functional) limitations on the present invention.

特定のパラメータ名を使用することは、単なる例示のためであって、本発明に対するいかなる制限をも示唆するものではない。したがって本発明は、制限なしに、上記パラメータを説明するために使用される異なる命名法/用語で実施可能であることも理解されよう。本明細書で使用される頭字語および他の用語、ならびにそれらの意味/定義のリストを、以下に示す。
CPU:中央処理ユニット
SoC:システム・オン・チップ
ASIC:特定用途向け集積回路
PowerPC440:IBM PowerPCアーキテクチャ・ベースの32ビット組み込みプロセッサの1つ
MAC:乗累算クラス命令
Lパイプ:PowerPC440プロセッサ内の、ロードまたは格納クラス命令の実行パイプ
Iパイプ:PowerPC440プロセッサ内の、乗算あるいは除算またはその両方の命令を含む、単純あるいは複雑またはその両方の整数クラス命令の実行パイプ
Jパイプ:PowerPC440プロセッサ内の、単純整数クラス命令の実行パイプ
IFTHステージ:命令フェッチ・ステージ
PDCDステージ:事前復号ステージ、PDCD0およびPDCD1がある
DISSステージ:復号および発行ステージ、DISS0、DISS1、DISS2、DISS3がある
LRACCステージ:Lパイプ登録アクセス・ステージ
IRACCステージ:Iパイプ登録アクセス・ステージ
AGENステージ:Lパイプ・アドレス生成ステージ
CRDステージ:Lパイプ・データ・キャッシュ読み取りステージ
LWBステージ:Lパイプ書き戻しステージ
IEXE1ステージ:Iパイプ実行ステージ1
IEXE2ステージ:Iパイプ実行ステージ2
IWBステージ:Iパイプ書き戻しステージ
JEXE1ステージ:Jパイプ実行ステージ1
JEXE2ステージ:Jパイプ実行ステージ2
JWBステージ:Jパイプ書き戻しステージ
MMU:メモリ管理ユニット
TLB:仮想アドレスから実アドレスへのページ変換に関するテーブル索引バッファ
DPS:データ処理システム
USB:ユニバーサル・シリアル・バス
Iキャッシュ:命令キャッシュ
Dキャッシュ:データ・キャッシュ
APU:補助プロセッサ・ユニット
AIX OS:拡張対話式エグゼクティブ・オペレーティング・システム
Log:論理演算
INV:インバータ
CCR1:ハードウェア構成制御レジスタ1
Iexe1MultUnitEnL2:ラッチされたIEXE1乗算実行ユニット使用可能制御
Iexe1MacUnitEnL2:ラッチされたIEXE1 MAC実行ユニット使用可能制御
Iexe1MultMacUnitEn:IEXE1乗算およびMAC実行ユニット使用可能制御
Iexe1MultMacDesL2:ラッチされたIEXE1乗算およびMAC実行指定子
Iexe2MultUnitEnL2:ラッチされたIEXE2乗算実行ユニット使用可能制御
Iexe2MacUnitEnL2:ラッチされたIEXE2 MAC実行ユニット使用可能制御
Iexe2MultMacUnitEn:IEXE2乗算およびMAC実行ユニット使用可能制御
Iexe2MultMacDesL2:ラッチされたIEXE2乗算およびMAC実行指定子
IwbMultOrMacE1:IWBステージ乗算またはMACオペランド・ラッチ1使用可能
EU_multユニットIexe2:実行ユニットにおける乗算ユニットのIEXE2ステージ
Iexe2MultHold:乗算動作ホールド制御のIEXE2ステージ
SPR:専用レジスタ
GPR:汎用レジスタ
The use of specific parameter names is for illustration only and does not suggest any limitation to the present invention. Thus, it will also be appreciated that the present invention can be practiced with different nomenclature / terminology used to describe the above parameters without limitation. A list of acronyms and other terms used herein and their meaning / definition is provided below.
CPU: Central processing unit SoC: System on chip ASIC: Application specific integrated circuit PowerPC 440: One of IBM PowerPC architecture based 32-bit embedded processor MAC: Multiply accumulate class instruction L Pipe: Load in PowerPC 440 processor Or pipes for execution of stored class instructions I pipe: execution pipes for simple and / or complex integer class instructions including multiplication and / or division instructions in the PowerPC 440 processor J pipe: simple integer class in the PowerPC 440 processor Instruction execution pipe IFTH stage: instruction fetch stage PDCD stage: predecode stage, DISS stage with PDCD0 and PDCD1: decode and issue stage, LRACC stage with DISS0, DISS1, DISS2, and DISS3: L-pipe registration access stage IRACC stage: I-pipe registration access stage AGEN stage: L-pipe address generation stage CRD stage: L-pipe data cache read stage LWB stage: L pipe write-back stage IEXE1 stage: I pipe execution stage 1
IEXE2 stage: I pipe execution stage 2
IWB stage: I pipe writeback stage JEXE1 stage: J pipe execution stage 1
JEXE2 stage: J pipe execution stage 2
JWB stage: J pipe write back stage MMU: Memory management unit TLB: Table index buffer for page conversion from virtual address to real address DPS: Data processing system USB: Universal serial bus I cache: Instruction cache D cache: Data Cache APU: Auxiliary processor unit AIX OS: Extended interactive executive operating system Log: Logical operation INV: Inverter CCR1: Hardware configuration control register 1
Iexe1MultiUnitEnL2: Latched IEXEL1 Multiplication Execution Unit Usable Control Iexe1MacUnitEnL2: Latched IEXE1 MAC Execution Unit Usable Control Iexe1MultMacUnitEn: IEXE1MultiExLatch IEXE2 Multiply Execution Unit Available Control Iexe2MacUnitEnL2: Latched IEXE2 MAC Execution Unit Usable Control Iexe2MultMacUnitEn: IEXE2 Multiply and MAC Execution Unit Usable Control Iexe2MultitMacDesL2: Latched IEXEX2 And MAC execution specifiers IwbMultOrMacE1: IWB stage multiplication or MAC operand latches 1 available EU_mult unit Iexe2: IEXE2 stage of the multiplier unit in the execution unit Iexe2MultHold: IEXE2 stage SPR multiplication operation hold control: dedicated registers GPR: General-purpose registers

次に図面を参照すると、図1は、本発明の機構を内部で有利に実装可能なPower PC440組み込みコアを示す。コア100は、中央処理ユニット(CPU)102、メモリ管理ユニット(MMU)104、およびキャッシュ・ユニット105を備える。コア100に関連付けられるのがサポート論理110である。CPU 102は、(1)ロード/ストア・パイプ(Lパイプ)106、(2)単純整数パイプ107(Jパイプ)、および(3)複雑整数パイプ108(Iパイプ)という、3つの別個の実行パイプをさらに備える。この3つの実行パイプは、以下に記載される図3を用いて、さらに例示および説明される。一実施形態では、CPU 102は、クロック当たり2命令を複数の実行ユニットおよびオプションの補助プロセッサ・ユニット(APU)にディスパッチすることが可能な、2重発行(dual issue)、7ステージ・パイプライン内の命令上で動作する。   Referring now to the drawings, FIG. 1 illustrates a Power PC 440 embedded core in which the mechanism of the present invention can be advantageously implemented. The core 100 includes a central processing unit (CPU) 102, a memory management unit (MMU) 104, and a cache unit 105. Associated with the core 100 is support logic 110. CPU 102 has three separate execution pipes: (1) load / store pipe (L pipe) 106, (2) simple integer pipe 107 (J pipe), and (3) complex integer pipe 108 (I pipe). Is further provided. The three execution pipes are further illustrated and described using FIG. 3 described below. In one embodiment, CPU 102 is in a dual issue, seven stage pipeline that can dispatch two instructions per clock to multiple execution units and an optional auxiliary processor unit (APU). Operates on the instructions.

CPU 102は、汎用レジスタ(GPR)109も含む。概念上、GPR 109は32ビットの汎用レジスタからなる。GPR 109は、それぞれが3つの書き込みポートおよび3つの読み取りポートを含む32ビット・レジスタを備える、2つの6ポート・アレイ(1つのアレイはLパイプ・レジスタ・アクセス(LRACC)用、1つはIパイプ・レジスタ・アクセス(IRACC)用)として実装される。すべてのGPR更新命令で、ファイルのコンテンツを同じく維持するために、適切なGPR書き込みポートが書き込まれる。しかしながらGPR読み取り時には、GPR読み取りポートは、関連付けられたパイプのRACCステージにディスパッチされる命令専用である。   The CPU 102 also includes a general purpose register (GPR) 109. Conceptually, GPR 109 consists of a 32-bit general purpose register. GPR 109 has two 6-port arrays (one for L-pipe register access (LRACC)), each with a 32-bit register containing three write ports and three read ports. Implemented for pipe register access (IRACC). In all GPR update instructions, the appropriate GPR write port is written to maintain the same file contents. However, when reading GPR, the GPR read port is dedicated to instructions dispatched to the RACC stage of the associated pipe.

MMU 104は、複数の(メモリ)ページ・サイズならびに様々なストレージ保護の属性およびオプションをサポートする。複数ページ・サイズにより、変換検索バッファ(TLB)の効率が上昇し、TLBミスの数が最小限に抑えられる。PPC440は、1KB、4KB、16KB、64KB、256KB、1MB、16MB、256MB、または1GBの可能なページ・サイズの任意の組み合わせをTLB内で同時に使用するための柔軟性を、プログラマに与える。極端に大きなページ・サイズを有することで、ユーザが最低数のTLBエントリでシステム・メモリを定義できるようにし、それによって、TLBの割り振りおよび置換を簡略化する。小さなページ・サイズは、データの小規模な実メモリ・スペースの割り振り、あるいは多くのユーザへのスペースの割り振り、またはその両方の場合に、より効率の良いメモリの使用を可能にする。   The MMU 104 supports multiple (memory) page sizes and various storage protection attributes and options. The multiple page size increases the efficiency of the translation search buffer (TLB) and minimizes the number of TLB misses. PPC 440 gives the programmer the flexibility to use any combination of 1KB, 4KB, 16KB, 64KB, 256KB, 1MB, 16MB, 256MB, or 1GB of possible page sizes simultaneously in the TLB. Having an extremely large page size allows the user to define system memory with a minimum number of TLB entries, thereby simplifying TLB allocation and replacement. A small page size allows more efficient use of memory when allocating a small real memory space of data, or allocating space to many users, or both.

メモリ・アクセスは、プロセッサ・ローカル・バス(PLB)インターフェースを介して、どちらもキャッシュ・ユニット105に含まれた命令キャッシュ(Iキャッシュ)120またはデータ・キャッシュ(Dキャッシュ)122との間で実行される。キャッシュ・ユニットに対してこれらの独立したバス・インターフェースを有することで、システム・スループットを最適化するための設計に最高の柔軟性をもたらす。キャッシュ内でヒットするメモリ・アクセス(ロード/ストア)は、単一サイクルのスループットを達成する。PPC440は、8ワード(32バイト)キャッシュ・ラインを備えた別の命令およびデータ・キャッシュを有する。キャッシュ・ユニット105は、低電力動作および高速ヒット/ミス決定を容易にするように、特別に編成される。   Memory accesses are performed between the instruction cache (I cache) 120 or the data cache (D cache) 122 both included in the cache unit 105 via a processor local bus (PLB) interface. The Having these independent bus interfaces to the cache unit provides the greatest flexibility in the design to optimize system throughput. Memory accesses (load / store) that hit in the cache achieve a single cycle throughput. The PPC 440 has a separate instruction and data cache with 8 word (32 byte) cache lines. The cache unit 105 is specially organized to facilitate low power operation and fast hit / miss determination.

PPC440コアは、PowerPC 400ファミリのメンバとして、IBM PowerPC Embedded Tools(TM)プログラムによってサポートされる。PPC440向けの開発ツールは、C/C++コンパイラ、デバッガ、バス機能モデル、ハードウェア/ソフトウェア・コシミュレーション(co-simulation)環境、およびリアルタイム・オペレーティング・システムを含む。サポート論理110は、PowerPC Embedded Tools(TM)プログラムへのアクセスを容易にする。   The PPC440 core is supported by the IBM PowerPC Embedded Tools (TM) program as a member of the PowerPC 400 family. Development tools for the PPC 440 include a C / C ++ compiler, debugger, bus functional model, hardware / software co-simulation environment, and a real-time operating system. Support logic 110 facilitates access to the PowerPC Embedded Tools ™ program.

次に図2を参照すると、本発明の機構を内部で有利に実装可能な、データ処理システムのブロック図が示されている。データ処理システム(DPS)200は、システム・バス/相互接続209を介してメモリ210に結合されたコア201(図1のコア100と同様な場合がある)を備える。コア201には中央処理ユニット(CPU)102が含まれる。図1と同様に、コア201はJTAG、トレース、およびタイマ用のレジスタ203を含む。コア201は、MMU 104、Dキャッシュ205、およびIキャッシュ206も含む。Dキャッシュ205およびIキャッシュ206は、キャッシュ・ユニット105(図1)の構成要素である。加えて、キャッシュ・ユニット(205/206)およびMMU 104の説明は、図1のキャッシュ・ユニット105の例示も備える。   Referring now to FIG. 2, a block diagram of a data processing system is shown in which the mechanism of the present invention can be advantageously implemented internally. Data processing system (DPS) 200 includes a core 201 (which may be similar to core 100 of FIG. 1) coupled to memory 210 via system bus / interconnect 209. The core 201 includes a central processing unit (CPU) 102. Similar to FIG. 1, the core 201 includes a register 203 for JTAG, trace, and timer. The core 201 also includes an MMU 104, a D cache 205, and an I cache 206. The D cache 205 and the I cache 206 are components of the cache unit 105 (FIG. 1). In addition, the description of the cache unit (205/206) and MMU 104 also includes an illustration of the cache unit 105 of FIG.

コア201のある種の特定機能に結合され、これを制御するのが、APU 207、割り込みコントローラ208、ならびに、クロックおよび電力管理(CPM)ユニット230である。説明された実施形態によれば、CPMユニット230は、とりわけ、命令処理中のプロセッサの動作/実行周波数の制御の責務を負う。本発明のソフトウェア・ベースの実装の一実施形態は、実行コード(すなわち命令ストリーム)内での一定条件(または命令タイプ)の検出に基づいて、プロセッサの動作周波数を通常の(高い)周波数から低周波数へと変更するために、周波数制御システムがCPMユニット208をトリガできるようにするものである。   Coupled to and controlling certain specific functions of the core 201 are the APU 207, the interrupt controller 208, and the clock and power management (CPM) unit 230. According to the described embodiment, the CPM unit 230 is responsible for, among other things, controlling the operating / execution frequency of the processor during instruction processing. One embodiment of the software-based implementation of the present invention is based on the detection of certain conditions (or instruction types) in the execution code (ie, instruction stream) and reduces the processor operating frequency from the normal (high) frequency to It allows the frequency control system to trigger the CPM unit 208 to change to frequency.

さらにシステム・バス209に結合されるのが、いくつかの入力デバイスによるアクセスを制御する入力/出力コントローラ(I/Oコントローラ)215であり、この入力デバイスの中では、マウス216およびキーボード217が例示されている。I/Oコントローラ215は出力デバイスへのアクセスも制御し、この出力デバイスの中ではディスプレイ218が例示されている。取り外し可能ストレージ・メディアの使用をサポートするために、I/Oコントローラ215は、1つ以上のUSBポート221、および、読み取り/書き込みコンパクト・ディスク(CDRW)またはデジタル・ビデオ・ディスク(DVD)ドライブなどのメディア・ドライブ218をサポートすることができる。   Further coupled to the system bus 209 is an input / output controller (I / O controller) 215 that controls access by several input devices, of which a mouse 216 and a keyboard 217 are illustrated. Has been. The I / O controller 215 also controls access to the output device, in which the display 218 is illustrated. To support the use of removable storage media, the I / O controller 215 includes one or more USB ports 221, and a read / write compact disc (CDRW) or digital video disc (DVD) drive, etc. Media drives 218 can be supported.

DPS 200は、DPS 200が(ネットワーク・コントローラ222を介して)外部デバイスまたはネットワーク(インターネットなど)に接続し、これらと通信する際に使用できる、ネットワーク・インターフェース・デバイス(NID)225をさらに備える。NID 225はモデムまたはネットワーク・アダプタとすることが可能であり、たとえば無線トランシーバ・デバイスとすることも可能である。   The DPS 200 further comprises a network interface device (NID) 225 that can be used by the DPS 200 to connect to and communicate with external devices or networks (such as the Internet) (via the network controller 222). NID 225 can be a modem or a network adapter, for example, a wireless transceiver device.

当業者であれば、図2に示されたハードウェアが変更可能であることを理解されよう。たとえば、図示されたハードウェアに加えて、またはこれに代えて、他のデバイスを使用することもできる。したがって、図示された例は、本発明に関してアーキテクチャ上の制限を示すことを意味するものではない。図2に図示されたデータ処理システムは、たとえば、Advance Interactive Executive(AIX)オペレーティング・システムまたはLINUXオペレーティング・システムを実行する、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシンズ・コーポレーションの製品であるIMB eServer pSeriesシステムとすることができる。   Those skilled in the art will appreciate that the hardware shown in FIG. 2 can be modified. For example, other devices may be used in addition to or instead of the hardware shown. Accordingly, the depicted example is not meant to imply architectural limitations with respect to the present invention. The data processing system illustrated in FIG. 2 is, for example, the IMB eServer pSeries system, a product of International Business Machines Corporation of Armonk, NY, running the Advanced Interactive Executive (AIX) operating system or the LINUX operating system. It can be.

A.プロセッサ・レベルの実行周波数制御システム
プロセッサ・レベルの周波数制御は、以下の2つの実施形態のうちの1つで実施可能である。(1)「オン・デマンド」周波数制御がCPUクロック周波数およびアプリケーション・コードの構造(周波数制限動作の数)に依存する、ソフトウェア・ベース制御。この第1の制御方法は、CPU周波数、または周波数制限動作のスループットを最大限にする低減された最適実行周波数に等しい、通常の実行周波数を提供する。(2)スケジューリングされているプログラム・コード内の周波数制限動作の数を検出し、閾値数と比較するために、CPU内で単純論理回路が実装される、ハードウェア・ベース回路。閾値を満たす場合、その論理回路は、(実行周波数の)モードを通常のCPU周波数から低減された最適実行周波数へと切り替えるために使用される。
A. Processor Level Execution Frequency Control System Processor level frequency control can be implemented in one of the following two embodiments. (1) Software-based control where “on demand” frequency control depends on CPU clock frequency and application code structure (number of frequency limiting operations). This first control method provides a normal execution frequency equal to the CPU frequency or a reduced optimal execution frequency that maximizes the throughput of the frequency limiting operation. (2) A hardware-based circuit in which a simple logic circuit is implemented in the CPU to detect the number of frequency limiting operations in the scheduled program code and compare it with a threshold number. If the threshold is met, the logic circuit is used to switch the mode (of execution frequency) from the normal CPU frequency to the reduced optimal execution frequency.

いずれの手法の場合も、使用される方法は、既存の乗算ユニットを使用するため、および800Mhz制限を超えるクロッキング周波数を必要とするアプリケーションの場合に乗算ユニットをハーフ・クロッキングする(half-clock)ためのものである。1000MHzのCPU周波数では、ユニットのスループットは、たとえば半分の速度、または500MHzに等しい速度で動作するユニットに基づく。乗算動作の数が閾値制限未満のアプリケーションの場合、プロセッサは乗算動作の全クロッキングを完了することができる。プログラム・コード全体に存在する乗算動作の数が制限されるため、ハーフ・クロッキングによる性能「低下」はこれらの制限された乗算動作の実行中にのみ認識され、処理動作全体ではかなり高い性能およびスループットが享受される。   For either approach, the method used is to use the existing multiplication unit and half-clock the multiplication unit for applications that require a clocking frequency exceeding the 800 Mhz limit (half-clock). ) At a CPU frequency of 1000 MHz, the throughput of the unit is based on a unit operating at a speed that is, for example, half or equal to 500 MHz. For applications where the number of multiply operations is less than the threshold limit, the processor can complete the full clocking of the multiply operations. Because the number of multiplication operations that exist throughout the program code is limited, the performance “degradation” due to half-clocking is recognized only during the execution of these limited multiplication operations, and the overall processing operation has a fairly high performance and Throughput is enjoyed.

ソフトウェア・ベースの実装では、本発明の様々な特徴が、メモリ210または他のストレージ内に格納され、CPU 102によって実行される、ソフトウェア/ファームウェア・コードとして提供される。中でもソフトウェア・コードは、以下で説明する「周波数制御」機能を実行可能にするためのコードである(通常モード(高い)の周波数動作および第2モード(低い)の周波数動作と一致するための「モード」制御とも呼ばれる)。話を簡単にするために、本明細書では、周波数制御機能を実行可能にする(ファームウェアおよび論理を含む)コードの集合体はモード制御ユーティリティと呼ばれる。   In a software-based implementation, the various features of the present invention are provided as software / firmware code that is stored in memory 210 or other storage and executed by CPU 102. Among them, the software code is a code for enabling execution of the “frequency control” function described below (“frequency operation in the normal mode (high) and“ frequency match in the second mode (low) ”). Also called "mode" control). For simplicity, the collection of code (including firmware and logic) that enables frequency control functions is referred to herein as a mode control utility.

したがって図2に示されるように、データ処理システム200は、前述のハードウェア構成要素に加えて、オペレーティング・システム(OS)211(たとえば、マイクロソフト社の商標であるMicrosoft Windows(R)、またはFree Software FoundationおよびLinux Mark Instituteの登録商標であるGNU(R)/Linux(R))および1つ以上のソフトウェア・アプリケーション214を含む、いくつかのソフトウェア構成要素をさらに備える。データ処理システム200は、モード制御ユーティリティ212および関連する制御レジスタ213も備える。具体的に言えば、モード制御ユーティリティ212および関連する制御レジスタ213はメモリ210内に常駐する。制御レジスタ213は、事前に定義されたタイプの(連続)命令数のカウントを、プロセッサ・コア201による実行用にスケジューリングされているアプリケーション(たとえばアプリケーション214)の実行ストリーム内で維持する。   Thus, as shown in FIG. 2, the data processing system 200 includes an operating system (OS) 211 (eg, Microsoft Windows®, which is a trademark of Microsoft Corporation, or Free Software, in addition to the hardware components described above. It further comprises a number of software components, including Foundation and Linux Mark Institute registered trademark GNU (R) / Linux (R)) and one or more software applications 214. Data processing system 200 also includes a mode control utility 212 and an associated control register 213. Specifically, mode control utility 212 and associated control register 213 reside in memory 210. The control register 213 maintains a count of the number of (continuous) instructions of a predefined type in the execution stream of an application (eg, application 214) that is scheduled for execution by the processor core 201.

本明細書で使用される場合、OS 211は、標準のオペレーティング・システム・コード、あるいは、制御ユーティリティ212と通信するファームウェアまたはハイパーバイザ・コード、またはその両方を表すことができる。制御ユーティリティ212は、コンパイル済みコードのスケジューリングを監視し、コンパイル済みコード内の事前に定義された特徴の観察結果、すなわち、実行用にスケジューリングされたコンパイル済みコード内における閾値数の周波数制限動作の有無、に基づいて、プロセッサ周波数における変化をトリガする。具体的に言えば、制御ユーティリティ212は、コンパイル済みコード内の乗算動作の数が事前に定義された閾値数を超えるかどうかを判別する。その後、制御ユーティリティ212は、OS 211をトリガして、プロセッサの動作周波数を高周波数(たとえば1000MHz)から、プロセッサが特定タイプの動作を最大スループットで実行できるより低い最適周波数(たとえば800MHz)へと切り替えるように、CPM 230に信号を送信する。一実施形態では、制御ユーティリティ212がこの信号を生成し、CPM 200へと転送する。   As used herein, OS 211 may represent standard operating system code, firmware or hypervisor code that communicates with control utility 212, or both. The control utility 212 monitors the scheduling of the compiled code and observes the pre-defined features in the compiled code, that is, whether there is a threshold number of frequency limiting operations in the compiled code scheduled for execution. , To trigger a change in the processor frequency. Specifically, the control utility 212 determines whether the number of multiplication operations in the compiled code exceeds a predefined threshold number. The control utility 212 then triggers the OS 211 to switch the operating frequency of the processor from a high frequency (eg, 1000 MHz) to a lower optimal frequency (eg, 800 MHz) at which the processor can perform certain types of operations at maximum throughput. As such, it sends a signal to the CPM 230. In one embodiment, the control utility 212 generates this signal and forwards it to the CPM 200.

実装の際、OS 211およびモード制御ユーティリティ212の実行可能コードは、CPU 102で実行される。例示的実施形態によれば、CPU 102がモード制御ユーティリティ212を実行する場合、モード制御ユーティリティ212は、(1)連続する周波数制限動作の数が、実行周波数の変更が望ましい事前に定義された閾値制限を超えた場合の判別、(2)実行周波数を、CPUサイクル周波数から周波数制限動作向けのより低い最適実行周波数へ、およびその逆へ、切り替える/変更するための、OSまたはCPM 230のトリガ、ならびに、以下で説明する他の特徴/機能を含む、一連の機能プロセスを、CPU 102が完了できるようにする。   At the time of implementation, the executable code of the OS 211 and the mode control utility 212 is executed by the CPU 102. According to an exemplary embodiment, when the CPU 102 executes the mode control utility 212, the mode control utility 212 may: (1) a predefined threshold where the number of consecutive frequency limiting operations is desirable to change the execution frequency. Determining when the limit is exceeded, (2) triggering the OS or CPM 230 to switch / change the execution frequency from the CPU cycle frequency to a lower optimal execution frequency for frequency limiting operation and vice versa, In addition, it allows the CPU 102 to complete a series of functional processes, including other features / functions described below.

代替の実施形態では、(図1および図2のサポート論理110を介してアクセス可能な)拡張ソフトウェア・コンパイラが、(事前に定義された閾値を超える)乗算クラス命令集中動作を備えた複数のアプリケーションが実行のためにキューに入れられることを検出し、このコンパイラが、プロセッサの周波数を、最高の乗算動作スループットを実行可能にする事前に設定されたより低い周波数に調節するために、CPMをトリガする。次にOSユーティリティは、キューに入れられた乗算集中アプリケーションのセットが完了すると、実行周波数を通常の値(すなわち通常のプロセッサ周波数)へと再調節する。   In an alternative embodiment, the extended software compiler (accessible via the support logic 110 of FIGS. 1 and 2) can be used by multiple applications with multiplication class instruction intensive operations (beyond predefined thresholds). Will be queued for execution and this compiler will trigger the CPM to adjust the processor frequency to a preset lower frequency that allows the highest multiplication operation throughput . The OS utility then re-adjusts the execution frequency to a normal value (ie normal processor frequency) when the set of queued multiply intensive applications is complete.

本発明をより明白に理解できるように、以下で説明される諸実施形態では、1000MHzの最高動作周波数を備え、通常タイプの動作(たとえば加算および減算)を最高動作周波数で実行する、プロセッサ例について言及する。加えてこのプロセッサは、本明細書で説明される発明の特徴を実施せずに特定タイプの動作が実行された場合、これらの動作を、異なる、より低い周波数(たとえば500MHz)でも実行する。説明における一貫性を保つために、特定タイプの動作または周波数制限動作は、主に乗算動作と呼ばれ、モード制御機能は、事前に設定された数の乗算動作が、プロセッサによる実行用にスケジューリングされた(されている)コンパイル済みコード内で(連続して)発生するのが検出された場合に、活動化される。しかしながら本発明は、他のタイプの周波数制限動作に適用可能であり、乗算動作への言及は、単に諸実施形態の説明を助けるためである。   In order that the present invention may be more clearly understood, the embodiments described below are for example processors that have a maximum operating frequency of 1000 MHz and perform normal type operations (eg, addition and subtraction) at the maximum operating frequency. Mention. In addition, the processor performs these operations at different, lower frequencies (eg, 500 MHz) when certain types of operations are performed without implementing the inventive features described herein. For consistency in the description, certain types of operations or frequency limiting operations are mainly referred to as multiply operations, and the mode control function is configured to have a pre-set number of multiply operations scheduled for execution by the processor. It is activated when it is detected to occur (continuously) in the compiled code. However, the present invention is applicable to other types of frequency limiting operations, and references to multiplication operations are merely to help explain the embodiments.

前述の例を使用すると、(本発明で説明される諸実施形態の機能を使用しない)通常の動作時に、乗算動作が単一サイクルで完了する他の動作とは異なり、完了するために複数のサイクル(たとえば3サイクル)を必要とすることから、乗算動作は最速のスループット時に500MHzの有効サイクル時間を有する。より高速のアプリケーションは、大部分の動作が周波数制限動作でないアプリケーションであるため、プロセッサはほとんどの命令を最高周波数で実行することができる。これらのより高速なアプリケーションを使用する場合、乗算動作は完了するために2倍の長さ(すなわち2倍のサイクル数)がかかるため、周波数制限動作(乗算動作)は、乗算動作の待ち時間を変更することによって処理される。乗算動作当たりのサイクル数を2倍にすることによって、乗算動作についての有効サイクル時間は500MHzとなる。全体のスループットが影響を受けるが、プロセッサ全体はこの時点で800MHz周波数制限より上で実行可能であるため、高速で実行するアプリケーションにとってはより高速のスループットにつながる。これらの高速アプリケーションの場合、これは受け入れ可能なトレードオフを表す。   Using the above example, during normal operation (without using the functionality of the embodiments described in the present invention), unlike other operations where the multiplication operation completes in a single cycle, multiple operations can be completed to complete. Since a cycle (eg, 3 cycles) is required, the multiply operation has an effective cycle time of 500 MHz at the fastest throughput. Faster applications are those where most operations are not frequency limited operations, so the processor can execute most instructions at the highest frequency. When using these higher speed applications, the frequency limiting operation (multiplication operation) reduces the latency of the multiplication operation because the multiplication operation takes twice as long to complete (ie twice the number of cycles). Processed by changing. By doubling the number of cycles per multiplication operation, the effective cycle time for the multiplication operation is 500 MHz. Although overall throughput is affected, the entire processor can now run above the 800 MHz frequency limit, leading to faster throughput for applications running at high speed. For these high speed applications, this represents an acceptable tradeoff.

しかしながら、より低速のアプリケーション(たとえば800MHz未満で実行するアプリケーション)の場合、乗算動作は好ましくは(アプリケーションが800MHzを超えて実行している場合の、動作当たり2サイクルではなく)単一サイクルで実行される。たとえばこうした低速のアプリケーションでは、800MHzの0.5のみを利用し、プロセッサは400MHzのみの最大周波数スループットを達成する。コアには、コアが閾値制限を超えて実行している場合を特定する、周波数検出器が提供される。コアが閾値制限を超えて実行している場合、コントローラは、動作当たりのサイクル数を増やすために、多重サイクル乗算器を導入する。これにより、半分のプロセッサ速度、2倍の待ち時間で、動作を実行できるように(または実行されるように)することによって、あるいは、乗算動作に関して最適化されたプロセッサ周波数で動作を実行できるようにすることによって、[TK1](term)が効果的に除去される。   However, for slower applications (eg, applications that run below 800 MHz), the multiply operation is preferably performed in a single cycle (rather than two cycles per operation when the application is running above 800 MHz). The For example, such low speed applications utilize only 800 MHz 0.5 and the processor achieves a maximum frequency throughput of only 400 MHz. The core is provided with a frequency detector that identifies when the core is running beyond a threshold limit. If the core is executing beyond the threshold limit, the controller introduces a multi-cycle multiplier to increase the number of cycles per operation. This allows operations to be performed (or to be performed) at half processor speed, twice latency, or at processor frequency optimized for multiply operations. By doing so, [TK1] (term) is effectively removed.

実行中のアプリケーションが増加したサイクル速度で実行したくない場合、モード制御ユーティリティは、アプリケーションをアクセス当たり単一サイクルに強制的に戻す。モード制御システムを導入することにより、どの周波数でどのコード・セグメントが実行されるか、および通常の速度対低速のサイクル速度でいつアプリケーションを実行するか、を動的に制御することができる。有効スループットは通常の範囲内で高いままとなり、より低速で実行するアプリケーション(たとえば多数の乗算動作を伴うアプリケーション)は、それらのアプリケーションを単一のサイクル周波数で実行させることによって不利にはならない。   If the running application does not want to run at an increased cycle rate, the mode control utility forces the application back to a single cycle per access. By introducing a mode control system, it is possible to dynamically control which code segment is executed at which frequency and when the application is executed at a normal speed versus a low cycle speed. Effective throughput remains high within normal ranges, and applications that run slower (eg, applications with multiple multiplication operations) are not penalized by having those applications run at a single cycle frequency.

モード制御ユーティリティ212は、様々な論理構成要素を実装/制御して、実行用にスケジューリングされているコンパイル済みソフトウェア・コード内の乗算動作を監視および検出する。実行のためにキューに入れられた乗算動作が多数ある場合、アプリケーションが低周波数アプリケーションとして最適に実行されることを示し、モード制御ユーティリティはCPM 230を自動的にトリガして、単一のサイクル処理を介して乗算動作の処理に対処するために、プロセッサ周波数を800MHzまで低下させる。これらの乗算動作が処理を完了すると、モード制御ユーティリティはCPMをトリガして、プロセッサ周波数をその通常の高周波数動作(1000MHz)に戻す。高周波数動作中に検出/遭遇した乗算動作の数が閾値未満である間/場合、モード制御ユーティリティは何も実行しないようにプログラミングされ、乗算動作は強制的に2プロセッサ・サイクル内で完了され、プロセッサの有効動作周波数はこれらの乗算動作について500MHz周波数まで低減されるが、他のすべての(タイプの)動作は1000MHzで処理される。   The mode control utility 212 implements / controls various logic components to monitor and detect multiply operations in compiled software code that are scheduled for execution. If there are many multiply operations queued for execution, indicating that the application is best performing as a low frequency application, the mode control utility automatically triggers the CPM 230 to perform single cycle processing. In order to deal with the processing of multiplication operations via the processor frequency, the processor frequency is reduced to 800 MHz. When these multiply operations complete processing, the mode control utility triggers the CPM to return the processor frequency to its normal high frequency operation (1000 MHz). While / if the number of multiply operations detected / encountered during high frequency operation is below a threshold, the mode control utility is programmed to do nothing and the multiply operation is forced to complete in two processor cycles, The effective operating frequency of the processor is reduced to 500 MHz frequency for these multiply operations, while all other (type) operations are processed at 1000 MHz.

別のソフトウェア・ベースの実装として説明されるが、実際の実装では、モード制御ユーティリティのいくつかの機構は、論理構成要素を使用して実装される/可能である。図10〜図12は、ソフトウェア・ベースの周波数制御システムの機構を実装するかまたは実装を支援することが可能であり、ならびにハードウェア・ベースの実装も提供することが可能な、論理例を示す。   Although described as another software-based implementation, in an actual implementation, some mechanisms of the mode control utility are / can be implemented using logical components. FIGS. 10-12 illustrate logical examples that can implement or support the implementation of a software-based frequency control system, as well as provide a hardware-based implementation. .

図10は、本発明の一実施形態に従った、(乗算)動作制御のためのCPU周波数制御論理を示すブロック図である。周波数制御論理回路700は、最適な動作周波数を動的に(オンザフライで)決定するために実装可能な、カウンタ・ベースの検出論理回路である。周波数論理回路700は、カウンタ702に接続されたCPUブロック701を備える。周波数検出論理回路700は、タイマ・クロック703、割り込み(進行中)インジケータ706、およびレジスタ707も含み、これらはすべてコンパレータ/コントロール704に接続される。カウンタ702もコンパレータ/コントロール704に接続される。周波数検出論理回路700には、データ・ローディング用のCPUデータ・バス708が含まれる。コンパレータ/コントロール704の出力は、Mult−OP(乗算動作命令)実行時間コントロール705として示された制御信号である。   FIG. 10 is a block diagram illustrating CPU frequency control logic for (multiplication) operation control, in accordance with one embodiment of the present invention. The frequency control logic 700 is a counter-based detection logic that can be implemented to determine the optimal operating frequency dynamically (on the fly). The frequency logic circuit 700 includes a CPU block 701 connected to a counter 702. The frequency detection logic 700 also includes a timer clock 703, an interrupt (in progress) indicator 706, and a register 707, all connected to a comparator / control 704. A counter 702 is also connected to the comparator / control 704. The frequency detection logic 700 includes a CPU data bus 708 for data loading. The output of the comparator / control 704 is a control signal indicated as a Multi-OP (multiplication operation instruction) execution time control 705.

カウンタ702は、本来はプロセッサの実行パイプ内のキューに入れられた乗算動作の数をカウントし、その数をコンパレータ/コントロール704に提供する、プロセッサ内に統合される回路のセットを備え、コンパレータ/コントロール704は、この乗算動作の数を、メモリ内のモード制御ユーティリティ(または図2のモード制御レジスタ212)から取り出された事前に定義/事前に設定された閾値数と比較する。コンパレータ/コントロール704を使用することによって、モード制御論理回路700は、プロセッサの周波数が、プロセッサ動作周波数のスロットリングがトリガされる閾値周波数よりも上であるかどうかを判別する。周波数が、プロセッサ動作周波数をスロットリングするための閾値周波数よりも上である場合、モード制御論理は、乗算動作のために最適な周波数(たとえば800MHz)まで周波数を低減させる。乗算動作の数が閾値数よりも下の場合、モード制御論理回路700は、周波数を最高限度(周波数がすでにそこにある場合)で維持するか、または周波数を最高周波数に設定する。乗算動作は、その数が閾値を超えるまで、複数サイクルを介して処理される。閾値は設計パラメータであり、乗算動作(または他の周波数制限動作)を含むことができるプログラム・コードの実行中に、動作の最大スループットを実行可能なように選択される。ユーザは、SoC実装に基づいてこの設計パラメータを決定する。   The counter 702 comprises a set of circuitry integrated within the processor that counts the number of multiply operations originally queued in the execution pipe of the processor and provides the number to the comparator / control 704, The control 704 compares this number of multiply operations with a pre-defined / pre-set threshold number retrieved from the mode control utility in memory (or mode control register 212 of FIG. 2). By using the comparator / control 704, the mode control logic 700 determines whether the processor frequency is above a threshold frequency at which throttling of the processor operating frequency is triggered. If the frequency is above the threshold frequency for throttling the processor operating frequency, the mode control logic reduces the frequency to the optimum frequency (eg, 800 MHz) for the multiply operation. If the number of multiplication operations is below the threshold number, the mode control logic 700 maintains the frequency at the highest limit (if the frequency is already there) or sets the frequency to the highest frequency. Multiply operations are processed through multiple cycles until the number exceeds a threshold. The threshold is a design parameter and is selected such that the maximum throughput of the operation can be performed during execution of the program code that can include a multiply operation (or other frequency limiting operation). The user determines this design parameter based on the SoC implementation.

周波数制御論理回路700は、乗算動作サイクル・カウントを設定する機能も含む。この機能は、オペレータが静的に設定する構成レジスタ(レジスタ707内)として対処するか、または動的に設定されるレジスタとすることができる。構成レジスタは、利用するプロセッサ周波数を決定するために使用される。   The frequency control logic circuit 700 also includes a function for setting a multiply operation cycle count. This function can be handled as a configuration register (in register 707) that is statically set by the operator or can be a dynamically set register. The configuration register is used to determine the processor frequency to use.

Multi−Op実行コントロール705は、特権コード(ハイパーバイザまたはOS)によってのみ切り替えまたはプログラミング可能であり、乗算動作が規則正しく制御されるように、割り込み(割り込み(進行中)インジケータ706として示される)またはコンテキスト同期化動作として、モード制御ユーティリティにモード制御を要求するために使用されることになる。   The Multi-Op execution control 705 can only be switched or programmed by privileged code (hypervisor or OS), and interrupt (shown as an interrupt (in progress) indicator 706) or context so that multiplication operations are regularly controlled. As a synchronization operation, it will be used to request mode control from the mode control utility.

次に図11を見ると、命令デコード構成要素を示すCPUブロック701の内部図を備えた、図10の周波数制御論理の他の実施形態が示される。図10および図11の記述では、同じかまたは同様の構成要素が同様の参照番号で示される。したがって、周波数制御論理800によって示されるように、制御論理800の乗算命令カウンタ802は、CPUの命令デコード/発行回路801の出力を監視する。命令デコード/発行回路801は、命令のデコードおよび発行動作を生成するためにコンパイル済みプログラム・コードをデコードする、DISS0 304およびDISS1 305(たとえば2つが示される)を含む。デコードされた命令はIRACC 307に渡され、これが実行のために命令を転送/ディスパッチする。   Turning now to FIG. 11, another embodiment of the frequency control logic of FIG. 10 is shown with an internal view of the CPU block 701 showing instruction decode components. In the description of FIGS. 10 and 11, the same or similar components are indicated with similar reference numerals. Thus, as indicated by the frequency control logic 800, the multiply instruction counter 802 of the control logic 800 monitors the output of the instruction decode / issue circuit 801 of the CPU. Instruction decode / issue circuit 801 includes DISS0 304 and DISS1 305 (eg, two are shown) that decode compiled program code to generate instruction decode and issue operations. The decoded instruction is passed to IRACC 307, which forwards / dispatches the instruction for execution.

一実施形態では、実行パイプラインに命令がディスパッチされるのに先立って、「タイプ」特徴がデコード済み命令から取り出され、乗算命令カウンタ802に転送される。とりわけ一実施では、命令のタイプがCPU内で評価され、命令が乗算命令である場合のみ、(CPU論理によって)信号が生成されて乗算命令カウンタ802に伝送される。乗算命令カウンタ802によって信号が受信されるごとに、乗算命令カウント(レジスタ)が1つずつ増加する。   In one embodiment, the “type” feature is extracted from the decoded instruction and transferred to the multiply instruction counter 802 prior to the instruction being dispatched into the execution pipeline. In particular, in one implementation, the type of instruction is evaluated in the CPU and a signal is generated and transmitted to the multiply instruction counter 802 only if the instruction is a multiply instruction. Each time a signal is received by the multiply instruction counter 802, the multiply instruction count (register) is incremented by one.

他の実施形態では、すべての命令タイプが自動的に検出され、(a)受信されたタイプ信号が乗算命令に関するものであるかどうかを判別するため、および(b)タイプが乗算命令である場合、カウンタ値を1つだけ更新するため、の追加の論理を含む、乗算命令カウンタに渡される。カウンタが更新されるごとに、そのカウンタ値がコンパレータ/コントロール論理704に渡され、ここでプロセッサ周波数の変更をトリガするために、検出された乗算命令の数が事前に設定された閾値と比較される。その閾値に達している場合(コンパレータ/コントロール論理704によって判別された場合)コンパレータ/コントロール論理704は、CPMにCPUの実行/動作周波数を事前に設定されたより低い周波数に変更させるために、割り込み要求を発行し、より低い周波数は多数の乗算動作を含むコードを実行するために最適である。   In other embodiments, all instruction types are automatically detected, (a) to determine if the received type signal is for a multiply instruction, and (b) if the type is a multiply instruction , Passed to the multiply instruction counter, which includes additional logic to update only one counter value. Each time the counter is updated, the counter value is passed to the comparator / control logic 704, where the number of detected multiply instructions is compared to a preset threshold to trigger a change in processor frequency. The If the threshold has been reached (as determined by the comparator / control logic 704), the comparator / control logic 704 causes an interrupt request to cause the CPM to change the CPU execution / operation frequency to a lower frequency set in advance. The lower frequency is optimal for executing code that includes multiple multiplication operations.

図11からの処理の続きが図12に示され、この図は、周波数制御ユーティリティ/論理によって制御されるCPMの動作、および並行して動作するプロセッサ実行ユニットからの入力の、論理流れ図を提供する。具体的に言えば、図12は、周波数制御ユーティリティ/論理による判別に基づいて、実行周波数の修正を完了/実施するために、論理構成要素が周波数制御論理によってトリガされる際に使用されるプロセスを示す。モード制御動作は破線の右側に示され、プロセッサ実行動作は破線の左側に示される。図に示されるように、モード制御プロセスはブロック901で開始され、ここでアプリケーション・プログラム要求が開始される(すなわち、プログラム・コードがデコードされ、命令がCPUの実行ユニットに転送される)。ブロック903で、モード制御ユーティリティ/論理は、アプリケーション・プログラムが、事前に確立された周波数切り替え閾値より大きいいくつかの乗算命令を含むかどうかを判別する。アプリケーションが閾値を超える乗算命令を含まない場合、ブロック905に示されるように、プロセッサの動作周波数は通常の最適な周波数に設定される(またはこの周波数で維持される)。この通常の最適な周波数(最大周波数の場合もある)は、(閾値よりも)少ない数の乗算動作が、半分のクロック周波数の複数サイクルで実行できるようにする。   The continuation of the processing from FIG. 11 is shown in FIG. 12, which provides a logic flow diagram of the operation of the CPM controlled by the frequency control utility / logic and the inputs from the processor execution units operating in parallel. . Specifically, FIG. 12 illustrates the process used when a logic component is triggered by the frequency control logic to complete / implement the modification of the execution frequency based on the determination by the frequency control utility / logic. Indicates. The mode control operation is shown on the right side of the broken line, and the processor execution operation is shown on the left side of the broken line. As shown, the mode control process begins at block 901 where an application program request is initiated (ie, the program code is decoded and instructions are transferred to the CPU execution unit). At block 903, the mode control utility / logic determines whether the application program includes some multiply instructions that are greater than a pre-established frequency switching threshold. If the application does not include a multiply instruction that exceeds the threshold, the processor operating frequency is set to (or maintained at) the normal optimal frequency, as shown in block 905. This normal optimal frequency (which may be the maximum frequency) allows a smaller number of multiply operations (below the threshold) to be performed in multiple cycles at half the clock frequency.

ブロック903で、アプリケーション・プログラムが周波数切り替え閾値よりも多数の乗算動作を含む場合、モード制御ユーティリティ/論理はCPMをトリガして、プロセッサ周波数を、通常の最適周波数よりも低い乗算最適周波数に変更する。現在実行パイプライン内にあるすべての命令は、第1に、通常の周波数で完了することができる。次にプロセッサ周波数は、ブロック907で示されるように、乗算最適周波数に設定される。これによって乗算動作は、より低い半分の周波数ではなく、乗算動作に関する最高処理周波数の単一サイクルで完了することが可能となる。これに続いて、ブロック909に示されるように、乗算命令の実行はこの乗算最適周波数で開始され、プロセスは終了(完了)ブロック911で終了する。   At block 903, if the application program includes more multiplication operations than the frequency switching threshold, the mode control utility / logic triggers the CPM to change the processor frequency to a multiplication optimum frequency that is lower than the normal optimum frequency. . All instructions currently in the execution pipeline can first complete at normal frequency. The processor frequency is then set to the optimum multiplication frequency as indicated by block 907. This allows the multiplication operation to be completed in a single cycle with the highest processing frequency for the multiplication operation, rather than the lower half frequency. Following this, as shown in block 909, execution of the multiply instruction begins at this multiply optimal frequency and the process ends at an end (complete) block 911.

動作周波数モードの実際の切り替えの完了は、割り込みハンドラ915(または図1の割り込みコントロール208)で、(図11からの)モード変更割り込み要求を受信することによってトリガされる。次に、図12の左側を見ると、割り込みハンドラ915はプロセッサに対するすべての他の割り込み、ならびにモード制御割り込み要求を受信する。割り込みハンドラは、ブロック917で、モード変更要求に関する割り込みが受信されたかどうかを判別する。モード変更要求が受信された場合、割り込みハンドラはモード変更信号をプロセッサのモード制御実行論理に送信する。受信されない場合、ブロック919に示されるように、検出された割り込みは他の割り込みのカテゴリに入り、動作周波数に影響を与えることなく完了される。他の割り込みの完了に続いて、ブロック921に示されるように、プロセッサは、現在プロセッサに対して設定されている周波数モードを使用するプログラム実行に戻る。   The completion of the actual switching of the operating frequency mode is triggered by receiving a mode change interrupt request (from FIG. 11) at the interrupt handler 915 (or interrupt control 208 of FIG. 1). Next, looking at the left side of FIG. 12, interrupt handler 915 receives all other interrupts to the processor, as well as mode control interrupt requests. The interrupt handler determines at block 917 whether an interrupt related to the mode change request has been received. If a mode change request is received, the interrupt handler sends a mode change signal to the processor's mode control execution logic. If not, as shown in block 919, the detected interrupt enters another interrupt category and is completed without affecting the operating frequency. Following completion of the other interrupts, as indicated at block 921, the processor returns to program execution using the frequency mode currently set for the processor.

前述の諸実施形態は、モード制御ユーティリティ(またはモード制御論理)が、多数の乗算動作(より低速のアプリケーション・プログラム)を実行する場合に、スループットと周波数との関係を最大限にすることができる。前述のソフトウェア・ベースの実装の場合、実行パイプライン深さは維持され、使用される電力量は維持されるかまたは従来の方法よりも削減される。単一サイクル設計の低周波数アプリケーションは、命令当たり単一サイクルのアプリケーションとして動作を続行し、最終的に電力を保持する。周波数の変更は、より高速のアプリケーション用の通常のアプリケーション・ストリーム内では稀な特定タイプの動作に制限されているため、モード制御ユーティリティによって提供される機構の実装により、プロセッサに対していかなる制限も追加することなしに、あるいは、従来の実装のように多くの電力消費が必要となる実行ステージに構成要素を追加することなしに、あるいはその両方で、最良のスループットおよび最高の動作周波数が(経時的に)与えられる。したがってモード制御ユーティリティ212は、実行アプリケーションに最適な動作周波数に応じて、(オン・デマンドまたは「オンザフライ」で)CPUコアの動的電力使用量を(ソフトウェア制御可能論理を使用して)制御/削減する。   The foregoing embodiments can maximize the relationship between throughput and frequency when the mode control utility (or mode control logic) performs a large number of multiply operations (slower application programs). . For the aforementioned software-based implementation, the execution pipeline depth is maintained and the amount of power used is maintained or reduced over conventional methods. A low frequency application with a single cycle design will continue to operate as a single cycle per instruction application and ultimately retain power. Because frequency changes are limited to certain types of operations that are rare in the normal application stream for higher speed applications, the implementation of the mechanism provided by the mode control utility does not impose any restrictions on the processor. The best throughput and highest operating frequency (over time) can be done without adding or adding components to an execution stage that requires a lot of power consumption as in traditional implementations, or both. Given). Thus, the mode control utility 212 controls / reduces CPU core dynamic power usage (using software controllable logic) (on demand or “on the fly”) depending on the optimal operating frequency for the running application. To do.

B.パイプライン・ステージ・レベルの実行サイクル制御システム
次に図3を参照すると、かなり多くの(乗算動作などの)周波数制限動作を処理する場合、CPUのスループットを向上させるために、動作周波数制御ではなく動作当たりのサイクル制御を可能にするための特定ハードウェア論理が、特定パイプライン・ステージで提供される、パイプライン・ステージ・レベル実装の一実施形態が示される。この実施形態では、モード制御ユーティリティ212(図2)あるいはモード制御論理回路700(図7)、またはその両方に起因する機能上の特徴を使用して、実行コード内に閾値数よりも多い乗算動作が存在する場合を検出することができる。しかしながら、この条件が検出されると、CPUの動作周波数を変更することなくスループットの向上を可能にするように、動作当たりのサイクル処理を調整するために、特定の変更が実行パイプラインのステージに投入される。
B. Pipeline Stage Level Execution Cycle Control System Referring now to FIG. 3, when processing a significant number of frequency limiting operations (such as multiplication operations), rather than operating frequency control to improve CPU throughput. One embodiment of a pipeline stage level implementation is shown in which specific hardware logic to enable cycle control per operation is provided at a specific pipeline stage. In this embodiment, multiplication features greater than the threshold number in the execution code are used using functional features resulting from mode control utility 212 (FIG. 2) or mode control logic 700 (FIG. 7), or both. Can be detected. However, when this condition is detected, certain changes are made to the stages of the execution pipeline to adjust the cycle processing per operation to allow for increased throughput without changing the CPU operating frequency. It is thrown.

図3は、本発明の例示的実施形態に従った、PPC440パイプライン構造を示すブロック図である。パイプライン300は、第1の事前デコード(PDCD0)302および第2の事前デコード(PDCD1)303に接続された、命令フェッチ(IFTH)301を備える。PDCD0 302は第1のデコード/発行(DISS0)304および第2のデコード/発行(DISS1)305に接続される。PDCD1 303は第1のデコード/発行(DISS0)304および第2のデコード/発行(DISS1)305に接続される。プロセッサ内には4つのデコード/発行ユニットが存在可能であるが、これらのユニットは本実施形態の機能上の特徴の説明に関連しないため、パイプライン300の命令流れを例示するために2つのみが示されている。次にDISS0 304は、ロード/ストア・パイプ(「Lパイプ」)第1レジスタ・アクセス(LRACC)306と、整数パイプ(「Iパイプ」)第2レジスタ・アクセス(IRACC)307との、両方に接続される。同様に、DISS1 305は、Lパイプ(第1)レジスタ・アクセス(LRACC)306と、Iパイプ(第2)レジスタ・アクセス(IRACC)307との、両方に接続される。   FIG. 3 is a block diagram illustrating a PPC 440 pipeline structure according to an exemplary embodiment of the present invention. The pipeline 300 includes an instruction fetch (IFTH) 301 connected to a first predecode (PDCD0) 302 and a second predecode (PDCD1) 303. PDCD0 302 is connected to a first decode / issue (DISS0) 304 and a second decode / issue (DISS1) 305. PDCD1 303 is connected to a first decode / issue (DISS0) 304 and a second decode / issue (DISS1) 305. There can be four decode / issue units in the processor, but these units are not relevant to the description of the functional features of this embodiment, so only two to illustrate the instruction flow of pipeline 300. It is shown. DISO 304 then goes to both load / store pipe ("L pipe") first register access (LRACC) 306 and integer pipe ("I pipe") second register access (IRACC) 307. Connected. Similarly, DISS 1 305 is connected to both the L pipe (first) register access (LRACC) 306 and the I pipe (second) register access (IRACC) 307.

パイプライン300は、ロード/ストア・パイプ(「Lパイプ」)、単純整数パイプ(「Jパイプ」)、および複雑整数パイプ(「Iパイプ」)という、3つの実行パイプを含む。LパイプおよびJパイプの命令は、LRACC 306からディスパッチされる。Iパイプ命令はIRACC 307からディスパッチされる。さらにパイプライン300は、LRACC 306が、Lパイプ308のアドレス生成(AGEN)309と、Jパイプ実行ステージ1(JEXE1)311とに接続されることを示す。IRACC 307はIパイプ実行ステージ1(IEXE1)313に接続される。次にAGEN 309は、キャッシュ読み取り(CRD)315に接続され、さらにCRD 315はLパイプ書き戻し(LWB)318に接続される。JEXE1 311はJパイプ実行ステージ2(JEXE2)316に接続され、さらにJEXE2 316はJパイプ書き戻し(JWB)319に接続される。IEXE1 313はIパイプ実行ステージ2(IEXE2) 317に接続され、さらにIEXE2 317はIパイプ書き戻し(IWB)320に接続される。Iパイプ実行ステージ312は、モード制御論理322からの入力を受信する。   Pipeline 300 includes three execution pipes: a load / store pipe (“L pipe”), a simple integer pipe (“J pipe”), and a complex integer pipe (“I pipe”). L pipe and J pipe instructions are dispatched from LRACC 306. I-pipe instructions are dispatched from IRACC 307. Further, the pipeline 300 indicates that the LRACC 306 is connected to the address generation (AGEN) 309 of the L pipe 308 and the J pipe execution stage 1 (JEXE1) 311. IRACC 307 is connected to I-pipe execution stage 1 (IEXE1) 313. AGEN 309 is then connected to a cache read (CRD) 315, which is further connected to an L pipe write back (LWB) 318. JEXE1 311 is connected to J pipe execution stage 2 (JEXE2) 316, and JEXE2 316 is connected to J pipe write back (JWB) 319. IEXE1 313 is connected to an I pipe execution stage 2 (IEXE2) 317 and IEXE2 317 is connected to an I pipe writeback (IWB) 320. The I pipe execution stage 312 receives input from the mode control logic 322.

IFTH 301は、7ステージの命令パイプラインのうちの第1ステージである。IFTH 301で、命令は命令キャッシュ(Iキャッシュ)からフェッチされる。パイプラインの第2ステージを備える、第1の事前デコード(PDCD0)302および第2の事前デコード(PDCD1)303は、部分命令デコードの責務を負う。第1のデコード/発行(DISS0)304および第2のデコード/発行(DISS1)305は、レジスタ・アクセス(RACC)ステージへの最終のデコードおよび発行の責務を負う。LRACC 306およびIRACC 307は第4ステージを備え、ここでは命令(データ)がマルチポートの汎用レジスタ(GPR)ファイルから読み取られる。   IFTH 301 is the first stage of the seven-stage instruction pipeline. At IFTH 301, the instruction is fetched from the instruction cache (I cache). The first predecode (PDCD0) 302 and the second predecode (PDCD1) 303, comprising the second stage of the pipeline, are responsible for partial instruction decoding. The first decode / issue (DISS0) 304 and the second decode / issue (DISS1) 305 are responsible for the final decode and issue to the register access (RACC) stage. LRACC 306 and IRACC 307 comprise a fourth stage, where instructions (data) are read from a multiport general purpose register (GPR) file.

パイプライン300では、ロード/ストア・パイプ(「Lパイプ」)が、ステージ5でAGEN 309、ステージ6でCRD 315、ステージ7でLWB 318を備える。AGEN 309はロード/ストア・アドレスの生成の責務を負う。CRD 315はデータ・キャッシュ・アクセスの責務を負う。LWB 318は、整数動作またはロード動作からの結果をGPRファイル(図示せず)に書き込む責務を負う。   In pipeline 300, the load / store pipe (“L pipe”) comprises AGEN 309 at stage 5, CRD 315 at stage 6, and LWB 318 at stage 7. AGEN 309 is responsible for load / store address generation. CRD 315 is responsible for data cache access. LWB 318 is responsible for writing the results from integer or load operations to a GPR file (not shown).

単純整数パイプ(「Jパイプ」)310は、ステージ5でJEXE1 311、ステージ6でJEXE2 316、ステージ7でJWB 319を備える。JEXE1 311は、単純な算術が完了される実行ステージ1ユニットである。JEXE2 316は、他の実行パイプライン内の1つ以上の実行ステージ1ユニットからの結果が、GPRファイルに書き込むための準備として多重化される、実行ステージ2ユニットである。JWB 319で、Jパイプの結果がGPRファイルに書き込まれる。   A simple integer pipe (“J pipe”) 310 comprises JEXE1 311 at stage 5, JEXE2 316 at stage 6, and JWB 319 at stage 7. JEXE1 311 is an execution stage 1 unit where simple arithmetic is completed. JEXE2 316 is an execution stage 2 unit in which results from one or more execution stage 1 units in other execution pipelines are multiplexed in preparation for writing to a GPR file. At JWB 319, the result of the J pipe is written to the GPR file.

複雑整数パイプ(「Iパイプ」)312は、ステージ5でIEXE1 313、ステージ6でIEXE2 317、ステージ7でIWB 320を備える。IEXE1 313は、複雑な算術が完了される実行ステージ1である。JEXE2 317は、他の実行パイプライン内の1つ以上の実行ステージ1ユニットからの結果が、GPRファイルに書き込むための準備として多重化される、実行ステージ2ユニットである。IWB 320で、Iパイプの結果がGPRファイルに書き込まれる。   The complex integer pipe (“I pipe”) 312 comprises IEXE1 313 at stage 5, IEXE2 317 at stage 6, and IWB 320 at stage 7. IEXE1 313 is an execution stage 1 in which complex arithmetic is completed. JEXE2 317 is an execution stage 2 unit in which results from one or more execution stage 1 units in other execution pipelines are multiplexed in preparation for writing to a GPR file. At IWB 320, the result of the I pipe is written to the GPR file.

パイプライン300は、(a)乗算動作に関する命令スループットを増加させるため、および(b)乗算動作を処理する場合のCPUコアの動的電力使用量を制御/低減するため、に使用される、モード制御論理322も含む(またはモード制御論理322からの入力も受信する)。一実施形態では、CPUコアの動的電力使用量は、CPU周波数を変更することなく、実行パイプラインの待ち時間/周波数のうちの1つを制御するために、CPU周波数検出論理/回路を使用するハードウェアによって低減される。   Pipeline 300 is a mode used to (a) increase instruction throughput for multiply operations and (b) control / reduce CPU core dynamic power usage when processing multiply operations. It also includes control logic 322 (or also receives input from mode control logic 322). In one embodiment, CPU core dynamic power usage uses CPU frequency detection logic / circuits to control one of the execution pipeline latency / frequency without changing the CPU frequency. Reduced by hardware

一般に、RISC(またはスーパースカラ)プロセッサは、プロセッサ内に設計された多くの実行ユニットを有する。PPC440は、多重機能(実行)ユニットを有するスーパースカラRISCプロセッサの一例である。スーパースカラRISC CPUでは、ほとんどの命令が他のパイプで実行可能であるため、この命令ベースの制御はCPU全体の性能に影響を与えない。たとえばCPUクロック周波数が変更されないため、頻繁に使用されるロード/ストアのスループットおよび待ち時間、多くの単純な算術および論理演算に影響が与えられない。   In general, a RISC (or superscalar) processor has a number of execution units designed within the processor. PPC 440 is an example of a superscalar RISC processor having multiple function (execution) units. In a superscalar RISC CPU, most instructions can be executed in other pipes, so this instruction-based control does not affect the overall performance of the CPU. For example, because the CPU clock frequency is not changed, frequently used load / store throughput and latency, many simple arithmetic and logic operations are not affected.

図3に示されたように、モード制御論理322は、すべてCPUの性能(周波数など)に大きな影響を与えることなく、スループットを増加させ、CPUの動的電力使用量を低減させるために、命令待ち時間および命令ベース(選択された命令)当たりのスループットをサポートする。モード制御論理322は、パイプラインの構造および制御を変更することなく、ならびにCPUクロック周波数を変更することなく、PPC440コア内の機能ユニットのうちの1つ以上の実行時間(または使用量)を制御する。モード制御論理322は、乗算動作の完了のタイミングをとるために、通常のCPUクロック周波数の代わりに、ソフトウェア制御可能サイクルの追加を可能にする。モード制御論理322は、最も低速のサブ・アセンブリ/構成要素に制限されることなく、最高周波数ならびにプロセッサ設計の最高の作業負荷/スループットを利用することが可能である。   As shown in FIG. 3, the mode control logic 322 includes instructions to increase throughput and reduce CPU dynamic power usage, all without significantly affecting CPU performance (such as frequency). Supports throughput per latency and instruction base (selected instructions). The mode control logic 322 controls the execution time (or usage) of one or more of the functional units in the PPC 440 core without changing the pipeline structure and control, and without changing the CPU clock frequency. To do. Mode control logic 322 allows the addition of software controllable cycles instead of the normal CPU clock frequency to time the completion of the multiply operation. The mode control logic 322 can utilize the highest frequency as well as the highest workload / throughput of the processor design without being limited to the slowest sub-assemblies / components.

モード制御論理322は、データ・ステージ化レジスタまたは拡張コントロールを追加することなく、選択された命令の実行時間を制御するように設計される。従来の設計では、CPU命令の発行速度が維持される場合、命令実行回数/スループットを調整するために、データ・ステージ化レジスタあるいは対応するコントロールまたはその両方が必要である。しかしながら、本発明のモード制御論理322を使用すると、CPU命令発行速度は維持されるが、選択された命令ステージ実行回数は(組み込みソフトウェアまたは他の制御ソフトウェアを備えた)ハードウェアによって制御される。したがって、パイプラインの特定セクションを使用する特定タイプの命令だけに影響を与えるステージ・ベースの制御に比べて、同じパイプラインを使用する他のすべての命令の実行回数には影響が与えられない。   Mode control logic 322 is designed to control the execution time of selected instructions without adding data staging registers or extended controls. Conventional designs require data staging registers and / or corresponding controls to adjust instruction execution times / throughput if CPU instruction issue rate is maintained. However, using the mode control logic 322 of the present invention, the CPU instruction issue rate is maintained, but the selected number of instruction stage executions is controlled by hardware (with embedded software or other control software). Thus, the number of executions of all other instructions that use the same pipeline is not affected, compared to stage-based control that affects only certain types of instructions that use a particular section of the pipeline.

動作周波数またはCPU周波数は変更されないが、ステージは、「ハーフ・クロッキング」周波数と等価のあらゆる他のサイクルが実行可能である。モード制御論理322は、実行ストリーム内で検出された事前に定義された閾値数(たとえば4)の乗算動作に基づいて、乗算動作を完了するために必要なサイクル数を変調する。乗算動作の数が閾値数に等しいかまたはこれより大きい場合、乗算動作当たりのサイクル数がある因数倍(たとえば、命令当たりのサイクル数を倍にする2という因数)増加される。この変更/修正により、1GHzプロセッサ上の有効スループットは実行パイプ内の他のすべての動作に関して1GHzのままである。   The operating frequency or CPU frequency is not changed, but the stage can perform any other cycle equivalent to the “half clocking” frequency. The mode control logic 322 modulates the number of cycles required to complete the multiplication operation based on a predefined threshold number (eg, 4) multiplication operation detected in the execution stream. If the number of multiply operations is equal to or greater than the threshold number, the number of cycles per multiply operation is increased by some factor (eg, a factor of 2 that doubles the number of cycles per instruction). With this change / modification, the effective throughput on the 1 GHz processor remains at 1 GHz for all other operations in the execution pipe.

次に図4に進むと、本発明の例示的実施形態に従った、乗算動作(および乗累算(MAC)動作)のための実行ステージ1ユニット(Iexe1)に関する第1ステージ・モード制御論理400を示すブロック図が示されている。Iexe1 400では、Iexe1Mult 401およびIexe1Mac 402がORゲート403への入力である。ORゲート403の出力は、ANDゲート404への第1の入力である。次にANDゲート404の出力は遅延延長論理405によって受信され、遅延延長論理405の出力がIexe1MultHold 406である。Iexe1MultHold 406は、自由実行ラッチであるラッチ407に印加される入力であり、その出力がIexe1MultMacDesL2 408である。Iexe1MultMacDesL2 408はMUX 412への第1の入力である。加えて、Iexe1MultUnitEnL2 411はMUX 412への第2の入力であり、CCR1_Fine 409はMUX 412への選択入力である。Iexe1MultMacDesL2 408はインバータであるInv 410によって反転され、反転された出力は第2の入力としてANDゲート404に提供される。最後に、Iexe1MultMacUnitEn413はMUX 412の出力である。   Turning now to FIG. 4, first stage mode control logic 400 for an execution stage 1 unit (Iexe1) for multiply operations (and multiply-accumulate (MAC) operations), according to an illustrative embodiment of the invention. The block diagram which shows is shown. In Iexe1 400, Iexe1Multi 401 and Iexe1Mac 402 are inputs to OR gate 403. The output of the OR gate 403 is the first input to the AND gate 404. The output of AND gate 404 is then received by delay extension logic 405, and the output of delay extension logic 405 is Iexe1MultiHold 406. Iexe1MultiHold 406 is an input applied to a latch 407 that is a free execution latch, and its output is Iexe1MultiMacDesL2 408. Iexe1MultiMacDesL2 408 is the first input to MUX 412. In addition, Iexe1MultiUnitEnL2 411 is the second input to MUX 412 and CCR1_Fine 409 is the selection input to MUX 412. Iexe1MultiMacDesL2 408 is inverted by the inverter Inv 410 and the inverted output is provided to the AND gate 404 as a second input. Finally, Iexe1MultiMacUnitEn 413 is the output of MUX 412.

Iexe1MultMacUnitEn 413は、調整/選択されたタイミング特徴を使用して、パイプライン内の実行ステージ1でIexe1MultUnitEnL2 401を置き換える。Iexe1MultMacUnitEn 413は、パイプラインの実行ステージ2で、Iexe2MultOrMacE1を導出するためにも使用される。CCR1_Fineがアサート解除された場合、遅延制御信号408が選択される。しかしながら、CCR1_Fineがアサートされた場合、Iexe1MultMacUnitEnを制御するために、Iexe1MultUnitEntL2である非遅延制御が選択される。この信号は、乗算ステージのIexe2ステージを導出するために使用される。   Iexe1MultiMacEnEn 413 replaces Iexe1MultiUnitEnL2 401 with execution stage 1 in the pipeline using the adjusted / selected timing features. Iexe1MultiMacUnitEn 413 is also used to derive Iexe2MultiOrMacE1 at execution stage 2 of the pipeline. When CCR1_Fine is deasserted, the delay control signal 408 is selected. However, when CCR1_Fine is asserted, non-delayed control, Iexe1MultiUnitEntryL2, is selected to control Iexe1MultiMacUnitEn. This signal is used to derive the Iexe2 stage of the multiplication stage.

Iexe1 400は、複雑な命令実行のために設計された実行ユニットである。Iexe1 400は、論理関数、加算、減算、乗算、および除算を含む、いくつかの関数を処理するように構成される。加えて、遅延延長論理405は、待ち時間が実行ステージに追加された場合にパイプラインを延長することができる。遅延延長論理405は、モード制御ユーティリティのハードウェア実装の1つ以上の構成要素を表すことができる。CCR1_Fine 409は、CCR1_Fine 409によって選択された入力に基づいてMUX 412の出力を決定する、コア構成レジスタ(CCR)からの選択ビットまたはビット・セットを表す。パイプラインの延長および待ち時間の導入は、図6、図7、図8、および図9のタイミング図からも明らかである。   Iexe1 400 is an execution unit designed for complex instruction execution. Iexe1 400 is configured to handle several functions, including logic functions, addition, subtraction, multiplication, and division. In addition, delay extension logic 405 can extend the pipeline when latency is added to the execution stage. Delay extension logic 405 may represent one or more components of the hardware implementation of the mode control utility. CCR1_Fine 409 represents a selection bit or bit set from the core configuration register (CCR) that determines the output of MUX 412 based on the input selected by CCR1_Fine 409. Pipeline extension and latency introduction is also evident from the timing diagrams of FIGS. 6, 7, 8, and 9. FIG.

図5は、本発明の例示的実施形態に従った、乗算およびMAC動作のための実行ステージ2ユニット(Iexe2)に関する第2ステージ・モード制御論理を示す。Iexe2 420では、IwbMultorMacE1 421がANDゲート422への第1の入力である。ANDゲート422の出力は第1の遅延延長論理423によって受信される。次に第1の遅延延長論理423の出力は自由実行ラッチであるラッチ424に印加され、その出力がIexe2MultMacDesL2 425である。Iexe2MultMacDesL2 425は第2のMUX 429への第1の入力であり、この第2のMUX 429は第2の入力としてIwbMultorMacE1 428を受信し、選択入力としてCCR1_Fine 426を受信する。IwbMultOrMacE1Out 430はMUX 429の出力である。Iexe2MultMacDesL2 425はインバータであるInv 427によって反転され、反転された出力は第2の入力としてANDゲート422に提供される。   FIG. 5 illustrates second stage mode control logic for an execution stage 2 unit (Iexe2) for multiplication and MAC operations, in accordance with an exemplary embodiment of the present invention. In Iexe2 420, IwbMultiMacE1 421 is the first input to AND gate 422. The output of AND gate 422 is received by first delay extension logic 423. The output of the first delay extension logic 423 is then applied to a latch 424, which is a free execution latch, whose output is Iexe2MultiMacDesL2 425. Iexe2MultiMacDesL2 425 is the first input to the second MUX 429, which receives IwbMultiMacE1 428 as the second input and CCR1_Fine 426 as the selection input. IwbMultOrMacE1Out 430 is the output of MUX 429. Iexe2MultiMacDesL2 425 is inverted by Inv 427, an inverter, and the inverted output is provided to AND gate 422 as a second input.

Iexe2 420では、Iexe2MultUnitEnL2 431およびIexe2MacUnitEnL2 432がORゲート433への入力である。ORゲート433の出力は、ANDゲート434への第1の入力である。Inv 427の(反転された)出力はANDゲート434への第2の入力である。最後に、ANDゲート434の出力は第2の遅延延長論理435によって受信され、この第2の遅延延長論理435が出力としてIexe2MultHold 436を引き出す。   In Iexe2 420, Iexe2MultiUnitEnL2 431 and Iexe2MacUnitEnL2 432 are inputs to OR gate 433. The output of OR gate 433 is the first input to AND gate 434. The (inverted) output of Inv 427 is the second input to AND gate 434. Finally, the output of AND gate 434 is received by second delay extension logic 435, which derives Iexe2MultiHold Hold 436 as an output.

Iexe2 420では、IwbMultOrMacE1 421は、IWBステージにおいて乗算またはMACの結果が第1に使用可能な信号である。しかしながら、乗算またはMAC動作は実行ステージ2におけるものである。この図に示されるように、「Iwb」は、この動作/信号が、Iexe2ステージとIwbステージとの間の制御ハンドシェークである、IWBステージ実行可能制御に関するものであることを単に示す。第1の遅延延長論理423はパイプライン(420)の延長を可能にする。第2の遅延延長論理435は、追加のパイプライン延長機能を提供する。第1の遅延延長論理423および第2の遅延延長論理435は、モード制御メカニズムのハードウェア実装の諸構成要素を表すことができる。   In Iexe2 420, IwbMultOrMacE1 421 is a signal that can be first used as a result of multiplication or MAC in the IWB stage. However, multiplication or MAC operations are in execution stage 2. As shown in this figure, “Iwb” simply indicates that this operation / signal is for IWB stage executable control, which is a control handshake between the Iexe2 stage and the Iwb stage. The first delay extension logic 423 allows the pipeline (420) to be extended. Second delay extension logic 435 provides additional pipeline extension functionality. First delay extension logic 423 and second delay extension logic 435 may represent components of the hardware implementation of the mode control mechanism.

図6は、本発明の例示的実施形態に従った、一例として乗算器パイプライン(312)の実行ステージ1(313)において乗算命令当たり1サイクル待ち時間遅延が追加される、連続乗算動作に関する例示的タイミング図を示す。タイミング図500は、CPUクロック波形501およびMult−op iexe1波形502を含む。Mult−op iexe1波形502は、実行パイプライン内に3つの乗算動作が存在することを示す。第1の乗算動作の後に他の(非乗算)パイプ動作が続く。この非乗算パイプ動作の後に第2の乗算動作が続く。最後に、第2の乗算動作の直後に第3の乗算動作が続く。Iexe1MultMacDesL2波形503は、Iパイプ・レジスタ・ホールドのアサーションおよび新規の実行ステージ1ホールド505のアサーションの後に続く、出力Iexe1MultMacDesL2 408に関する、結果として生じるタイミング波形である。乗算命令当たり単一の遅延サイクルを追加する結果として、各乗算命令が実行用の2つのサイクルを有する、6つの実行サイクルが提供される。Iexe2ステージ実行可能E1 504は、実行ステージ1の直後に実行ステージ2処理が実施できるようにする。Iexe1ステージ506は、乗算器パイプラインの実行ステージ1に関する、結果として生じる延長されたタイミング波形である。   FIG. 6 illustrates an example of a continuous multiply operation in which a one cycle latency delay is added per multiply instruction in the execution stage 1 (313) of the multiplier pipeline (312) as an example, according to an exemplary embodiment of the present invention. A timing diagram is shown. Timing diagram 500 includes a CPU clock waveform 501 and a multi-op ixe1 waveform 502. The Multi-op ixe1 waveform 502 indicates that there are three multiply operations in the execution pipeline. The first multiplication operation is followed by another (non-multiplication) pipe operation. This non-multiply pipe operation is followed by a second multiply operation. Finally, a third multiplication operation follows immediately after the second multiplication operation. The Iexe1MultiMacDesL2 waveform 503 is the resulting timing waveform for the output Iexe1MultiMacDesL2 408 following the assertion of the I-pipe register hold and the new execution stage 1 hold 505. As a result of adding a single delay cycle per multiply instruction, six execution cycles are provided, with each multiply instruction having two cycles for execution. The Iexe 2 stage executable E1 504 enables execution stage 2 processing to be performed immediately after execution stage 1. Iexe1 stage 506 is the resulting extended timing waveform for execution stage 1 of the multiplier pipeline.

図7は、本発明の例示的実施形態に従った、一例として乗算器パイプラインの実行ステージ2において乗算ステージ当たり1サイクル待ち時間遅延が追加される、連続乗算動作に関する例示的タイミング図を示す。図7は図6の続きを表す。Iexe2MultMacDesL2波形511は、Iパイプ実行ステージ1ホールドのアサーションおよび新規の実行ステージ2ホールド512のアサーションの後に続く、出力Iexe2MultMacDesL2 408に関するタイミング波形である。結果として生じる実行ステージ2に関するタイミング波形が、Iexe2ステージ513によって示される。図に示されるように、ここで各乗算動作に完了のための2つのサイクルが割り振られる。Iwbステージ実行可能E1波形514は、実行ステージ2における処理の後に、以前の動作からの結果がGPRファイルに書き込まれる準備が整ったことを実証する。Iwbステージ515は、GPRファイルへの実際の結果書き込みに関するタイミング波形である。   FIG. 7 shows an exemplary timing diagram for a continuous multiply operation, with one cycle latency delay added per multiply stage in the execution stage 2 of the multiplier pipeline, as an example, according to an exemplary embodiment of the present invention. FIG. 7 shows a continuation of FIG. The Iexe2MultiMacDesL2 waveform 511 is a timing waveform for the output Iexe2MultiMacDesL2 408 following the assertion of the I pipe execution stage 1 hold and the assertion of the new execution stage 2 hold 512. The resulting timing waveform for execution stage 2 is shown by Iexe2 stage 513. As shown in the figure, each multiplication operation is now allocated two cycles for completion. Iwb stage executable E1 waveform 514 demonstrates that after processing in execution stage 2, the results from the previous operation are ready to be written to the GPR file. The Iwb stage 515 is a timing waveform related to the actual result writing to the GPR file.

図8は、本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ1および実行ステージ2における単一の乗算動作に関する例示的タイミング図を示す。タイミング図600は、CPU波形601およびMult−op iexe1波形602を含む。Mult−op iexe1波形602は、実行パイプラインにおける乗算動作を示す。Iexe1MultMacDesL2波形604は、たとえばIパイプ・レジスタ・ホールドのアサーションの後に続く、(図4のラッチ407の)出力Iexe1MultMacDesL2 408に関するタイミング波形である。Iパイプ・レジスタ・ホールドのタイミング波形は、Iexe1ホールド603によって示される。Iexe1ステージ605は、乗算器パイプラインの実行ステージ1に関する、結果として生じる延長されたタイミング波形である。Iexe2ステージ実行可能E1 606は、実行ステージ1の直後に実行ステージ2処理が実施できるようにする。   FIG. 8 shows an exemplary timing diagram for a single multiply operation in execution stage 1 and execution stage 2 of the multiplier pipeline, in accordance with an exemplary embodiment of the present invention. Timing diagram 600 includes a CPU waveform 601 and a multi-op ixe1 waveform 602. The Multi-op ixe1 waveform 602 shows a multiply operation in the execution pipeline. Iexe1MultiMacDesL2 waveform 604 is a timing waveform for output Iexe1MultiMacDesL2 408 (of latch 407 in FIG. 4), for example following an I-pipe register hold assertion. The I-pipe register hold timing waveform is indicated by Iexe1 hold 603. Iexe1 stage 605 is the resulting extended timing waveform for execution stage 1 of the multiplier pipeline. Iexe 2 stage executable E1 606 allows execution stage 2 processing to be performed immediately after execution stage 1.

図9は、本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ2および書き戻しステージにおける単一の乗算動作に関する例示的タイミング図を示す。実行ステージ2ホールドであるIexe2ホールド607は、実行ステージ2が2サイクルの実行ステージとなることを可能にする。実行ステージ2に関するタイミングの結果として生じる波形は、Iexe2ステージ612によって示される。Iexe2MultMacDesL2 611は、たとえばIパイプ実行ホールドのアサーションの後に続く、(図5のラッチ424の)出力Iexe2MultMacDesL2 425に関するタイミング波形である。Iwbステージ実行可能E1波形613は、実行ステージ2における処理の後に、GPRファイルに書き込まれることになる以前の動作からの結果を準備する。Iwbステージ614は、GPRファイルへの実際の結果書き込みに関するタイミング波形である。Iパイプ上での他の書き戻し(WB)動作に関するタイミング波形は、他の後続の非乗算命令完了の例である、他のOP−iwb 615によって示される。   FIG. 9 illustrates an exemplary timing diagram for a single multiply operation in the execution stage 2 and writeback stage of the multiplier pipeline, according to an exemplary embodiment of the present invention. Execution stage 2 hold Iexe2 hold 607 allows execution stage 2 to be an execution stage of two cycles. The resulting waveform for timing for execution stage 2 is shown by Iexe2 stage 612. Iexe2MultitMacDesL2 611 is a timing waveform for output Iexe2MultitMacDesL2 425 (of latch 424 in FIG. 5), for example following an assertion of I pipe execution hold. The Iwb stage executable E1 waveform 613 prepares the results from previous operations that would be written to the GPR file after processing in the execution stage 2. The Iwb stage 614 is a timing waveform related to the actual result writing to the GPR file. Timing waveforms for other write back (WB) operations on the I pipe are shown by another OP-iwb 615, which is an example of another subsequent non-multiply instruction completion.

図6、図7、図8、および図9のタイミング波形では、あらゆる他のクロック・サイクルで乗算機能を実行することができる。IEXE1、IEXE2、およびIWBは、ソフトウェアによって、または別の方法ではハードウェアによって、モード制御ユーティリティ212がアサート解除された場合、「ホールド」のアサーションによって2サイクルが延長される。多くの既知のベンチマーク・テストでは乗算命令の混合がむしろ少ないという事実により、(延長された)2サイクル実行回数の結果から生じるいかなる性能上の欠点も最小限に抑えられる。加えて、モード制御ユーティリティ212によってトリガされる(乗算動作当たりの)2サイクル実行ステージ回数により、CPUコアの動的電力消費およびCPUコアの面積を低減させる。   In the timing waveforms of FIGS. 6, 7, 8, and 9, the multiply function can be performed in any other clock cycle. IEXE1, IEXE2, and IWB are extended two cycles with a "hold" assertion if the mode control utility 212 is deasserted by software or otherwise by hardware. The fact that many known benchmark tests have rather less mix of multiply instructions minimizes any performance penalty resulting from (extended) two-cycle execution times. In addition, the number of two-cycle execution stages (per multiplication operation) triggered by the mode control utility 212 reduces CPU core dynamic power consumption and CPU core area.

本発明について、主として乗算動作である特定タイプの動作の観点から説明したが、提供された説明および機能強化は、ソフトウェアまたは別の方法としてハードウェアによって、本発明に合致した様式で実行回数を制御することが可能な、様々な他の算術および論理演算に適用可能であることを理解されよう。   Although the present invention has been described in terms of a particular type of operation that is primarily a multiply operation, the descriptions and enhancements provided are controlled by software or, alternatively, hardware, in a manner consistent with the present invention, in a manner consistent with the present invention. It will be understood that it is applicable to a variety of other arithmetic and logical operations that can be done.

一般に本発明は、命令パイプライン内でより長い待ち時間命令を実行するプロセッサにおいて命令スループットを増加させるための、方法、システム、およびプロセッサを提供する。特定タイプの命令を実行する責務を負った実行パイプラインの特定ステージに関連付けられた論理は、少なくとも閾値数の特定タイプの命令がいつ実行されるようにスケジューリングされるかを決定する。次にこの論理は、特定パイプライン・ステージの実行サイクル周波数を、第1のサイクル周波数から、特定タイプの命令のより効率の良い実行およびより高い実行スループットを実行可能にする、第2の事前に確立されたより高いサイクル周波数へと、自動的に変更する。1つ以上のみの機能ステージのサイクル周波数が、プロセッサ・パイプライン内の他の機能ステージのサイクル周波数に依存しないより高いサイクル周波数に切り替えられる。さらにこの論理は、スケジューリングされた数の第1タイプの命令が実行を完了した場合、特定パイプライン・ステージの実行サイクル周波数を、第2のサイクル周波数から第1のサイクル周波数へと、再度自動的に切り替える。   In general, the present invention provides a method, system, and processor for increasing instruction throughput in a processor that executes longer latency instructions in an instruction pipeline. The logic associated with a particular stage of the execution pipeline that is responsible for executing a particular type of instruction determines when at least a threshold number of particular types of instructions are scheduled to be executed. The logic then sets the execution cycle frequency of the specific pipeline stage from the first cycle frequency to allow for more efficient execution and higher execution throughput of specific types of instructions. Automatically change to a higher established cycle frequency. The cycle frequency of only one or more functional stages is switched to a higher cycle frequency that does not depend on the cycle frequency of other functional stages in the processor pipeline. In addition, the logic automatically re-executes the execution cycle frequency of a particular pipeline stage from the second cycle frequency to the first cycle frequency once the scheduled number of first type instructions has completed execution. Switch to.

最終的に、本発明の例示的実施形態について、ソフトウェアがインストールされた完全に機能するコンピュータ・システムとの関連においてこれまで説明し、さらに引き続き説明するが、本発明の例示的実施形態のソフトウェアの諸態様は様々な形のプログラム製品として配布可能であること、ならびに実際に配布を実施するために使用される特定タイプの信号搬送媒体にかかわらず本発明の例示的実施形態が等しく適用されることを、当業者であれば理解されるであろう、ということに留意されたい。信号搬送媒体の例には、フロッピィ・ディスク、ハード・ディスク・ドライブ、CD ROMなどの記録可能タイプ・メディア、および、デジタルおよびアナログの通信リンクなどの伝送タイプ・メディアが含まれる。   Finally, an exemplary embodiment of the present invention will be described above and further described in the context of a fully functional computer system with software installed, but the software of the exemplary embodiment of the present invention The aspects can be distributed as various forms of program products, and the exemplary embodiments of the present invention apply equally regardless of the specific type of signal carrier used to actually perform the distribution. Note that will be understood by those skilled in the art. Examples of signal carrying media include recordable type media such as floppy disks, hard disk drives, CD ROMs, and transmission type media such as digital and analog communication links.

以上、本発明について、好ましい実施形態を参照しながら具体的に図示および説明してきたが、当業者であれば、その形式および細部において本発明の趣旨および範囲を逸脱することなく様々な変更が実行可能であることを理解されよう。   Although the present invention has been specifically illustrated and described with reference to preferred embodiments, those skilled in the art can make various changes in form and detail without departing from the spirit and scope of the present invention. It will be understood that it is possible.

優先権主張の基礎となる出願(米国11/776221)の当初クレーム訳を参考のために記載する。
(A1)
複数の機能ステージを伴うプロセッサ・パイプラインを有するデータ処理システムにおいて、
ある閾値の第1タイプの命令が実行されるスケジュールを決定するステップと、
前記機能ステージのうちの1つ以上の機能ステージの実行サイクル周波数を、第1のサイクル周波数から、前記第1のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第2のサイクル周波数へと、自動的に変更するステップと、
を含む方法。
(A2)
前記スケジューリングされた数の第1タイプの命令の実行が完了したことに応答して、前記1つ以上の機能ステージの前記実行サイクル周波数を、前記第2のサイクル周波数から前記第1のサイクル周波数へと、再度自動的に切り替えるステップをさらに含む、A1に記載の方法。
(A3)
前記第1タイプの命令が、単一サイクル待ち時間で実行される通常タイプの命令よりも長い待ち時間で実行される命令であり、
前記決定するステップが、
前記プロセッサ・パイプラインに関連付けられた論理回路を介して、事前に設定された時間間隔内で前記1つ以上の機能ステージによって実行されるようにスケジューリングされた第1タイプの命令の数が、前記閾値数を超えた場合を評価するステップと、
前記スケジューリングされた前記第1タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記第2のサイクル周波数への前記実行サイクル周波数の増分を動的にトリガするステップと、
をさらに含む、A1に記載の方法。
(A4)
前記動的にトリガするステップが、さらに前記1つ以上の機能ステージでの前記第1タイプの命令の実行を遅延させるため、前記論理回路に追加のサイクル待ち時間を投入するステップをさらに含む、A3に記載の方法。
(A5)
前記1つ以上の機能ステージへのサイクル遅延の追加をトリガするために、所与の間隔でのある数の連続する第1タイプの命令に関する下限として、閾値を格納するステップをさらに含み、
前記決定するステップが、前記間隔内の前記連続する第1タイプの命令の数が少なくとも前記閾値である場合、自動切り替えがトリガされるように、命令ストリーム内で検出された前記連続する第1タイプの命令の数を前記閾値と比較するステップを含む、
A1に記載の方法。
(A6)
前記第1タイプの命令が、乗算命令を含む複雑な算術命令であり、
前記1つ以上の機能ステージが複雑な実行パイプライン内のステージを含む、
A1に記載の方法。
(A7)
前記第2のサイクル周波数が、前記第1のサイクル周波数の整数倍である、A6に記載の方法。
(A8)
複数の機能ステージを含む実行パイプラインを有するプロセッサと、
前記機能ステージのうちの1つ以上の機能ステージに関連付けられた処理論理回路と、
を備える、データ処理システムであって、
前記処理論理回路は、
前記1つ以上の機能ステージ内で実行される命令のシーケンスをフェッチする命令フェッチ・メカニズムと、
ある閾値の第1タイプの命令が実行されるスケジュールを決定するスケジュール決定・メカニズムと、
前記1つ以上の機能ステージの実行サイクル周波数を、第1のサイクル周波数から、前記第1のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第2のサイクル周波数へと、自動的に変更する周波数変更・メカニズムとを備える、
データ処理システム。
(A9)
前記処理論理回路が、
前記スケジューリングされた第1タイプの命令の実行が完了したことに応答して、前記1つ以上の機能ステージの前記実行サイクル周波数を、前記第2のサイクル周波数から前記第1のサイクル周波数へと、再度自動的に切り替える周波数再変更・メカニズムをさらに備える、A8に記載のデータ処理システム。
(A10)
前記第1タイプの命令が、単一サイクル待ち時間で実行される通常タイプの命令よりも長い実行待ち時間で実行される命令であり、
前記スケジュール決定・メカニズムが、
前記プロセッサ・パイプラインに関連付けられた論理回路を介して、事前に設定された時間間隔内で前記1つ以上の機能ステージによって実行されるようにスケジューリングされた第1タイプの命令の数が、前記閾値数を超えた場合を評価するメカニズム、および
前記スケジューリングされた前記第1タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記第2のサイクル周波数への前記実行サイクル周波数の増分を動的にトリガするメカニズム、
をさらに備える、A8に記載のデータ処理システム。
(A11)
前記動的にトリガするメカニズムが、さらに前記1つ以上の機能ステージでの前記第1タイプの命令の実行を遅延させるため、前記実行論理回路に追加のサイクル待ち時間を投入するメカニズムをさらに備える、A10に記載のデータ処理システム。
(A12)
前記処理論理回路が、
前記1つ以上の機能ステージへのサイクル遅延の追加をトリガするために、所与の間隔でのある数の連続する第1タイプの命令に関する下限として、閾値を格納するためのメカニズムをさらに備え、
前記スケジュール決定・メカニズムが、前記間隔内の前記連続する第1タイプの命令の数が少なくとも前記閾値である場合、自動切り替えがトリガされるように、命令ストリーム内で検出された前記連続する第1タイプの命令の数を前記閾値と比較するメカニズムを備える、
A8に記載のデータ処理システム。
(A13)
前記第1タイプの命令が、乗算命令を含む複雑な算術命令であり、
前記1つ以上の機能ステージが複雑な実行パイプライン内のステージを含む、
A8に記載のデータ処理システム。
(A14)
前記第2のサイクル周波数が、前記第1のサイクル周波数の整数倍である、A13に記載のデータ処理システム。
(A15)
様々なタイプの命令を実行するための複数の実行ステージを有する実行パイプラインと、
前記複数の実行ステージのうちの1つ以上内で実行される命令のシーケンスをフェッチする命令フェッチ・メカニズムと、
前記機能ステージのうちの1つ以上の機能ステージに関連付けられた処理論理回路と
を備える、プロセッサであって、
前記処理論理回路は、
ある閾値の第1タイプの命令が実行されるスケジュールを決定するスケジュール決定・メカニズムと、
前記1つ以上の機能ステージの実行サイクル周波数を、第1のサイクル周波数から、前記第1のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第2のサイクル周波数へと、自動的に変更する周波数変更・メカニズムと、
前記スケジューリングされた第1タイプの命令の実行が完了したことに応答して、前記1つ以上の機能ステージの前記実行サイクル周波数を、前記第2のサイクル周波数から前記第1のサイクル周波数へと、再度自動的に切り替える周波数再変更・メカニズムを備える
プロセッサ。
(A16)
前記第1タイプの命令が、単一サイクル待ち時間で実行される通常タイプの命令よりも長い実行待ち時間で実行される命令であり、
前記スケジュール決定・メカニズム
前記プロセッサ・パイプラインに関連付けられた論理回路を介して、事前に設定された時間間隔内で前記1つ以上の機能ステージによって実行されるようにスケジューリングされた第1タイプの命令の数が、前記閾値数を超えた場合を評価するメカニズム、および
前記スケジューリングされた前記第1タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記第2のサイクル周波数への前記実行サイクル周波数の増分を動的にトリガするメカニズム、
をさらに備える、A15に記載のプロセッサ。
(A17)
前記動的にトリガするメカニズムが、さらに前記1つ以上の機能ステージでの前記第1タイプの命令の実行を遅延させるため、前記実行論理回路に追加のサイクル待ち時間を投入するメカニズムをさらに備える、A16に記載のプロセッサ。
(A18)
前記処理論理回路が、
前記1つ以上の機能ステージへのサイクル遅延の追加をトリガするために、所与の間隔でのある数の連続する第1タイプの命令に関する下限として、閾値を格納するためのメカニズムをさらに備え、
前記スケジュール決定・メカニズムが、前記間隔内の前記連続する第1タイプの命令の数が少なくとも前記閾値である場合、自動切り替えがトリガされるように、命令ストリーム内で検出された前記連続する第1タイプの命令の数を前記閾値と比較するメカニズムを備える、
A15に記載のプロセッサ。
(A19)
前記第1タイプの命令が、乗算命令を含む複雑な算術命令であり、
前記1つ以上の機能ステージが複雑な実行パイプライン内のステージを含む、
A15に記載のプロセッサ。
(A20)
前記第2のサイクル周波数が、前記第1のサイクル周波数の整数倍である、A15に記載のプロセッサ。
The initial claim translation of the application (US 11/766221) that is the basis of the priority claim is described for reference.
(A1)
In a data processing system having a processor pipeline with multiple functional stages,
Determining a schedule on which a threshold type of first type instruction is executed;
The execution cycle frequency of one or more of the functional stages is set in advance from the first cycle frequency to be higher than the first cycle frequency and independent of the cycle frequency of the other functional stages. Automatically changing to a second cycle frequency;
Including methods.
(A2)
Responsive to completion of execution of the scheduled number of first type instructions, the execution cycle frequency of the one or more functional stages is changed from the second cycle frequency to the first cycle frequency. And the method of A1, further comprising the step of automatically switching again.
(A3)
The first type instruction is an instruction executed with a longer latency than a normal type instruction executed with a single cycle latency;
Said determining step comprises:
The number of first type instructions scheduled to be executed by the one or more functional stages within a preset time interval via a logic circuit associated with the processor pipeline is Evaluating a case where a threshold number is exceeded;
Dynamically triggering an increase in the execution cycle frequency to the second cycle frequency, provided that the number of the scheduled first type instructions is at least equal to the threshold number;
The method of A1, further comprising:
(A4)
The dynamically triggering further comprises injecting additional cycle latency into the logic circuit to further delay execution of the first type of instruction in the one or more functional stages; The method described in 1.
(A5)
Storing a threshold as a lower bound for a number of consecutive first type instructions at a given interval to trigger the addition of a cycle delay to the one or more functional stages;
The determining step detects the consecutive first type detected in the instruction stream such that an automatic switch is triggered if the number of the consecutive first type instructions within the interval is at least the threshold. Comparing the number of instructions to the threshold value,
The method according to A1.
(A6)
The first type instruction is a complex arithmetic instruction including a multiplication instruction;
The one or more functional stages include stages in a complex execution pipeline;
The method according to A1.
(A7)
The method of A6, wherein the second cycle frequency is an integer multiple of the first cycle frequency.
(A8)
A processor having an execution pipeline including a plurality of functional stages;
Processing logic associated with one or more of the functional stages;
A data processing system comprising:
The processing logic circuit is:
An instruction fetch mechanism for fetching a sequence of instructions to be executed within the one or more functional stages;
A schedule determination mechanism for determining a schedule in which a certain type of first type instruction is executed;
A second cycle set in advance, wherein the execution cycle frequency of the one or more functional stages is higher than the first cycle frequency from the first cycle frequency and does not depend on the cycle frequency of other functional stages. It has a frequency change mechanism that automatically changes to the frequency,
Data processing system.
(A9)
The processing logic circuit is
In response to completion of execution of the scheduled first type instruction, the execution cycle frequency of the one or more functional stages is changed from the second cycle frequency to the first cycle frequency. The data processing system according to A8, further comprising a frequency re-changing mechanism that automatically switches again.
(A10)
The first type instruction is an instruction executed with a longer execution latency than a normal type instruction executed with a single cycle latency;
The schedule determination mechanism is
The number of first type instructions scheduled to be executed by the one or more functional stages within a preset time interval via a logic circuit associated with the processor pipeline is A mechanism for evaluating when a threshold number is exceeded, and the execution cycle to the second cycle frequency, provided that the number of the first type of scheduled instructions is at least equal to the threshold number A mechanism to dynamically trigger frequency increments,
The data processing system according to A8, further comprising:
(A11)
The dynamically triggering mechanism further comprises a mechanism for injecting additional cycle latency into the execution logic to delay execution of the first type of instruction at the one or more functional stages; A data processing system according to A10.
(A12)
The processing logic circuit is
A mechanism for storing a threshold as a lower bound for a number of consecutive first type instructions at a given interval to trigger the addition of a cycle delay to the one or more functional stages;
The scheduling decision mechanism detects the consecutive firsts detected in the instruction stream such that an automatic switch is triggered if the number of consecutive first type instructions in the interval is at least the threshold. Comprising a mechanism for comparing the number of types of instructions to the threshold;
A data processing system according to A8.
(A13)
The first type instruction is a complex arithmetic instruction including a multiplication instruction;
The one or more functional stages include stages in a complex execution pipeline;
A data processing system according to A8.
(A14)
The data processing system according to A13, wherein the second cycle frequency is an integer multiple of the first cycle frequency.
(A15)
An execution pipeline having multiple execution stages for executing various types of instructions;
An instruction fetch mechanism for fetching a sequence of instructions to be executed within one or more of the plurality of execution stages;
And a processing logic circuit associated with one or more of the functional stages,
The processing logic circuit is:
A schedule determination mechanism for determining a schedule in which a certain type of first type instruction is executed;
A second cycle set in advance, wherein the execution cycle frequency of the one or more functional stages is higher than the first cycle frequency from the first cycle frequency and does not depend on the cycle frequency of other functional stages. Frequency change mechanism that automatically changes to frequency,
In response to completion of execution of the scheduled first type instruction, the execution cycle frequency of the one or more functional stages is changed from the second cycle frequency to the first cycle frequency. A processor with a frequency re-changing mechanism that automatically switches again.
(A16)
The first type instruction is an instruction executed with a longer execution latency than a normal type instruction executed with a single cycle latency;
The scheduling decision mechanism A first type of instruction scheduled to be executed by the one or more functional stages within a preset time interval via a logic circuit associated with the processor pipeline. The second cycle frequency, provided that a mechanism for evaluating when the number exceeds the threshold number, and the number of the scheduled instructions of the first type is at least equal to the threshold number A mechanism for dynamically triggering an increment of the execution cycle frequency to
The processor according to A15, further comprising:
(A17)
The dynamically triggering mechanism further comprises a mechanism for injecting additional cycle latency into the execution logic to delay execution of the first type of instruction at the one or more functional stages; The processor according to A16.
(A18)
The processing logic circuit is
A mechanism for storing a threshold as a lower bound for a number of consecutive first type instructions at a given interval to trigger the addition of a cycle delay to the one or more functional stages;
The scheduling decision mechanism detects the consecutive firsts detected in the instruction stream such that an automatic switch is triggered if the number of consecutive first type instructions in the interval is at least the threshold. Comprising a mechanism for comparing the number of types of instructions to the threshold;
The processor according to A15.
(A19)
The first type instruction is a complex arithmetic instruction including a multiplication instruction;
The one or more functional stages include stages in a complex execution pipeline;
The processor according to A15.
(A20)
The processor according to A15, wherein the second cycle frequency is an integer multiple of the first cycle frequency.

優先権主張の基礎となる出願(米国11/776222)の当初クレーム訳を参考のために記載する。
(B1)
プログラム命令を処理する命令プロセッサにおいて実行される方法であり、
ある数の第1タイプの命令が実行されるスケジュールを決定するステップと、
前記命令プロセッサの実行周波数を、他のタイプの命令を処理するのに好適な第1の周波数から、前記第1の周波数よりも低く、前記第1タイプの命令を処理するのに好適な第2の周波数へと、自動的に切り替えるステップと、
を含む、方法。
(B2)
前記数の第1タイプの命令の実行が完了したことを条件に、前記第2の周波数から、前記第1の周波数へと、自動的に再度切り替えるステップをさらに含む、B1に記載の方法。
(B3)
前記決定するステップが、
事前に定義された閾値数の前記第1タイプの命令が、実行プログラム・コード内でいつ実行するようにスケジュールされるかを評価するステップと、
前記実行に関してスケジュールされた第1タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記実行周波数を前記第2の周波数へと切り替えるために前記プロセッサをトリガするステップと、
をさらに含む、B1に記載の方法。
(B4)
前記評価するステップが、
前記プロセッサの実行スケジューラに発行される前記第1タイプの命令の数をカウントするステップと、
前記第1タイプの命令の数と事前に設定された閾値数とを比較するステップと、
前記プロセッサで前記第2周波数への前記実行周波数の変更を実施するための割り込み信号を自動的に発行するステップと、
を含む、B1に記載の方法。
(B5)
前記自動的に発行するステップが、前記割り込み信号を、前記プロセッサに関連付けられたクロックおよび電力管理(CPM)ユニットへと転送するステップを含み、前記CPMユニットが、前記割り込み信号を受信したことに応答して、前記実行周波数を設定および更新する、B4に記載の方法。
(B6)
前記実行周波数を切り替えるために前記プロセッサをトリガするステップが、前記プロセッサが以前にスケジューリングされた他のタイプの命令の実行を完了した後に、前記実行周波数を前記第2の周波数に切り替えるステップを含む、B3に記載の方法。
(B7)
前記評価するステップがソフトウェア・コンパイラを介して完了され、前記ソフトウェア・コンパイラは、プログラム命令のコンパイル時に前記プログラム命令内の命令のシーケンスを監視し、前記第1タイプの命令の数が閾値数を超えることを条件に、前記実行周波数を前記第2の周波数へ変更するために割り込みを発行する、B2に記載の方法。
(B8)
前記評価するステップがハードウェア論理回路回路を介して完了され、前記ハードウェア論理回路は、前記プロセッサでの命令スケジューリング時に前記プログラム命令内の命令のシーケンスを監視し、スケジューリング用に発行された前記第1タイプの命令の数が閾値数を超えることを条件に、前記実行周波数を前記第2の周波数へ変更するために割り込みを発行する、B2に記載の方法。
(B9)
前記プロセッサ周波数の前記自動切り替えをトリガするために、所与の間隔でのある数の連続する第1タイプの命令に関する下限として、閾値を格納するステップをさらに含み、
前記決定するステップが、前記間隔内の前記第1タイプの動作の数が少なくとも前記閾値であることを条件に、自動切り替えが活動化されるように、前記第1タイプの動作の数を前記閾値と比較するステップを含む、
B1に記載の方法。
(B10)
前記第1の周波数は、前記他のタイプの命令に対して最大のプロセッサ命令スループットを提供し、前記第1タイプの命令に対してはより低いプロセッサ命令スループットを提供する周波数であり、
前記第1タイプの命令は、乗算動作を含む算術および論理動作の命令である、
B1に記載の方法。
(B11)
プログラム命令を処理するためのプロセッサと、
前記プロセッサ内での実行のために命令のシーケンスをフェッチするための前記プロセッサ内の命令フェッチ・メカニズムと、
前記プロセッサに関連付けられた処理論理回路とを備える、
データ処理システムであって、
前記処理論理回路は、
ある数の第1タイプの命令が実行されるスケジュールを決定する論理回路と、
前記命令プロセッサの実行周波数を、他のタイプの命令を処理するのに好適な第1の周波数から、前記第1の周波数よりも低く、前記第1タイプの命令を処理するのに好適な第2の周波数へと、自動的に切り替える論理回路と、
前記数の第1タイプの命令の実行が完了したことを条件に、前記第2の周波数から前記第1の周波数へと、自動的に再度切り替える論理回路を備える、
データ処理システム。
(B12)
前記決定する論理回路が、
事前に定義された閾値数の前記第1タイプの命令が、実行プログラム・コード内でいつ実行するようにスケジュールされるかを評価する論理回路、および
前記実行に関してスケジュールされた第1タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記実行周波数を前記第2のより低い実行周波数へと切り替えるために前記プロセッサをトリガする論理回路を
さらに備え、
前記プロセッサをトリガすることが、前記プロセッサが以前にスケジューリングされた他のタイプの命令の実行を完了した後に、前記実行周波数を前記第2の周波数に切り替えることを含む、
B11に記載のデータ処理システム。
(B13)
前記評価する論理回路が、
前記プロセッサの実行スケジューラに発行される前記第1タイプの命令の数をカウントする論理回路と、
前記第1タイプの命令の数と前記事前に設定された閾値数とを比較する論理回路と、
前記プロセッサで前記第2周波数への前記実行周波数の変更を実施するための割り込み信号を自動的に発行する論理回路と
をさらに備え、
前記自動的に発行することが、前記割り込み信号を、前記プロセッサに関連付けられたクロックおよび電力管理(CPM)ユニットへと転送することを含み、前記CPMユニットが、前記割り込み信号を受信したことに応答して、前記実行周波数を設定および更新する、B11に記載のデータ処理システム。
(B14)
前記評価する論理回路が、
ソフトウェア・コンパイラであって、プログラム命令のコンパイル時に前記プログラム命令内の命令のシーケンスを監視し、前記第1タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第2の周波数へ変更するために割り込みを発行する、ソフトウェア・コンパイラと、
ハードウェア論理回路であって、前記プロセッサでの命令スケジューリング時に前記プログラム命令内の命令のシーケンスを監視し、スケジューリング用に発行された前記第1タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第2の周波数へ変更するために割り込みを発行する、ハードウェア論理回路と、
のうちの1つを介して完了される、B12に記載のデータ処理システム。
(B15)
前記プロセッサ周波数の前記自動切り替えをトリガするために、所与の間隔でのある数の連続する第1タイプの命令に関する下限として、閾値を格納するための論理回路をさらに含み、
前記決定することが、前記間隔内の前記第1タイプの動作の数が少なくとも前記閾値であることを条件に、自動切り替えが活動化されるように、前記第1タイプの動作の数を前記閾値と比較することを含む、
B11に記載のデータ処理システム。
(B16)
前記第1の周波数は、前記他のタイプの命令に対して最大のプロセッサ命令スループットを提供し、前記第1タイプの命令に対してはより低いプロセッサ命令スループットを提供する周波数であり、
前記第1タイプの命令は、乗算動作を含む算術および論理動作の命令である、
B11に記載のデータ処理システム。
(B17)
(a)第1の周波数で実行されることでより高いプロセッサ命令スループットを提供する通常タイプの命令と、(b)乗算動作を含む算術および論理動作命令を含み、前記1の周波数よりも低い第2の周波数で実行されることでより低いプロセッサ命令スループットを提供する第1のタイプの命令と、を含む、様々なタイプのプログラム命令を実行するための実行パイプラインと、
前記プロセッサに関連付けられた処理メカニズムとを備える、プロセッサであって、
前記処理メカニズムは、
ある数の第1タイプの命令が実行されるスケジュールを決定するメカニズムと、
前記命令プロセッサの実行周波数を、他のタイプの命令を処理するために好適な第1の周波数から、前記第1の周波数よりも低く、前記第1タイプの命令を処理するために好適な第2の周波数へと、自動的に切り替えるメカニズムと、
前記数の第1タイプの命令の実行が完了したことを条件に、前記第2の周波数から前記第1の周波数へと、自動的に再度切り替えるメカニズムとを備える、
プロセッサ。
(B18)
前記決定するメカニズムが、
事前に定義された閾値数の前記第1タイプの命令が、実行プログラム・コード内でいつ実行するようにスケジュールされるかを評価するメカニズム、および
前記実行に関してスケジュールされた第1タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記実行周波数を前記第2のより低い実行周波数へと切り替えるために前記プロセッサをトリガするメカニズムを、
さらに備え、
前記プロセッサをトリガすることが、前記プロセッサが以前にスケジューリングされた他のタイプの命令の実行を完了した後に、前記実行周波数を前記第2の実行周波数に切り替えることを含む、
B17に記載のプロセッサ。
(B19)
前記評価するメカニズムが、
前記プロセッサ周波数の前記自動切り替えをトリガするために、所与の間隔でのある数の連続する第1タイプの命令に関する下限として、閾値を格納するメカニズムと、
前記プロセッサの実行スケジューラに発行される前記第1タイプの命令の数をカウントするメカニズムと、
前記間隔内の前記第1タイプの動作の数が少なくとも前記閾値であることを条件に、前記自動切り替えが活動化されるメカニズムと、
前記第1タイプの命令の数と前記事前に設定された閾値数とを比較するメカニズムと、
前記プロセッサで前記第2周波数への前記実行周波数の変更を実施するための割り込み信号を自動的に発行するメカニズムとを更に備え、
前記自動的に発行することが、前記割り込み信号を、前記プロセッサに関連付けられたクロックおよび電力管理(CPM)ユニットへと転送することを含み、前記CPMユニットが、前記割り込み信号を受信したことに応答して、前記実行周波数を設定および更新する、B17に記載のプロセッサ。
(B20)
前記評価する論理メカニズムが、
ソフトウェア・コンパイラであって、プログラム命令のコンパイル時に前記プログラム命令内の命令のシーケンスを監視し、前記第1タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第2の周波数へ変更するために割り込みを発行する、ソフトウェア・コンパイラと、
ハードウェア論理回路であって、前記プロセッサでの命令スケジューリング時に前記プログラム命令内の命令のシーケンスを監視し、スケジューリング用に発行された前記第1タイプの命令の数が閾値数を超えることを条件に、前記実行周波数の前記第2の周波数へ変更するために割り込みを発行する、ハードウェア論理回路と、
のうちの1つを介して完了される、B18に記載のプロセッサ。
The original claim translation of the application (US 11/766222) that is the basis for the priority claim is described for reference.
(B1)
A method executed in an instruction processor for processing program instructions;
Determining a schedule on which a number of first type instructions are executed;
The execution frequency of the instruction processor is lower than the first frequency suitable for processing other types of instructions and lower than the first frequency, and suitable for processing the first type of instructions. Automatically switching to the frequency of
Including a method.
(B2)
The method of B1, further comprising the step of automatically switching again from the second frequency to the first frequency on condition that execution of the number of first type instructions has been completed.
(B3)
Said determining step comprises:
Evaluating when a predefined threshold number of said first type instructions are scheduled to execute in the executable program code;
Triggering the processor to switch the execution frequency to the second frequency, provided that the number of first type instructions scheduled for execution is at least equal to the threshold number;
The method of B1, further comprising:
(B4)
Said evaluating step comprises:
Counting the number of instructions of the first type issued to the execution scheduler of the processor;
Comparing the number of instructions of the first type with a preset threshold number;
Automatically issuing an interrupt signal for performing the change of the execution frequency to the second frequency in the processor;
The method of B1, comprising
(B5)
The automatically issuing step includes transferring the interrupt signal to a clock and power management (CPM) unit associated with the processor, wherein the CPM unit is responsive to receiving the interrupt signal. Then, the method according to B4, wherein the execution frequency is set and updated.
(B6)
Triggering the processor to switch the execution frequency comprises switching the execution frequency to the second frequency after the processor completes execution of another type of instruction previously scheduled. The method according to B3.
(B7)
The step of evaluating is completed via a software compiler, the software compiler monitors a sequence of instructions in the program instructions when compiling the program instructions, and the number of instructions of the first type exceeds a threshold number The method according to B2, wherein an interrupt is issued to change the execution frequency to the second frequency on the condition.
(B8)
The step of evaluating is completed via a hardware logic circuit that monitors the sequence of instructions in the program instruction during instruction scheduling in the processor and that is issued for scheduling. The method of B2, wherein an interrupt is issued to change the execution frequency to the second frequency, provided that the number of one type of instructions exceeds a threshold number.
(B9)
Storing a threshold as a lower limit for a number of consecutive first type instructions at a given interval to trigger the automatic switching of the processor frequency;
The determining step sets the number of the first type of operations to the threshold so that automatic switching is activated, provided that the number of the first type of operations in the interval is at least the threshold. Including the step of comparing with
The method according to B1.
(B10)
The first frequency is a frequency that provides maximum processor instruction throughput for the other types of instructions and a lower processor instruction throughput for the first type of instructions;
The first type of instruction is an instruction of arithmetic and logical operations including a multiplication operation.
The method according to B1.
(B11)
A processor for processing program instructions;
An instruction fetch mechanism in the processor for fetching a sequence of instructions for execution in the processor;
Processing logic associated with the processor;
A data processing system,
The processing logic circuit is:
A logic circuit that determines a schedule on which a certain number of first type instructions are executed;
The execution frequency of the instruction processor is lower than the first frequency suitable for processing other types of instructions and lower than the first frequency, and suitable for processing the first type of instructions. A logic circuit that automatically switches to the frequency of
Comprising a logic circuit that automatically switches again from the second frequency to the first frequency on the condition that execution of the number of first type instructions has been completed,
Data processing system.
(B12)
The logic circuit to determine is
A logic circuit that evaluates when a predefined threshold number of the first type of instructions are scheduled to execute in the executable program code; and a first type of instructions scheduled for execution Further comprising a logic circuit that triggers the processor to switch the execution frequency to the second lower execution frequency, provided that a number is at least equal to the threshold number;
Triggering the processor includes switching the execution frequency to the second frequency after the processor has completed execution of another type of previously scheduled instruction.
The data processing system according to B11.
(B13)
The logic circuit to be evaluated is
A logic circuit that counts the number of instructions of the first type issued to the execution scheduler of the processor;
A logic circuit that compares the number of instructions of the first type with the preset threshold number;
A logic circuit that automatically issues an interrupt signal for performing the change of the execution frequency to the second frequency in the processor;
The automatically issuing includes transferring the interrupt signal to a clock and power management (CPM) unit associated with the processor, wherein the CPM unit is responsive to receiving the interrupt signal. The data processing system according to B11, wherein the execution frequency is set and updated.
(B14)
The logic circuit to be evaluated is
A software compiler that monitors a sequence of instructions in the program instructions when compiling the program instructions, and the second of the execution frequencies on condition that the number of instructions of the first type exceeds a threshold number A software compiler that issues an interrupt to change to a frequency, and
A hardware logic circuit, which monitors a sequence of instructions in the program instruction during instruction scheduling in the processor, on condition that the number of instructions of the first type issued for scheduling exceeds a threshold number Hardware logic that issues an interrupt to change to the second frequency of the execution frequency;
The data processing system of B12, completed via one of the following:
(B15)
Further comprising a logic circuit for storing a threshold as a lower limit for a number of consecutive first type instructions at a given interval to trigger the automatic switching of the processor frequency;
The determining determines the number of first type actions to be the threshold value such that automatic switching is activated, provided that the number of the first type actions within the interval is at least the threshold value. Including comparing with
The data processing system according to B11.
(B16)
The first frequency is a frequency that provides maximum processor instruction throughput for the other types of instructions and a lower processor instruction throughput for the first type of instructions;
The first type of instruction is an instruction of arithmetic and logical operations including a multiplication operation.
The data processing system according to B11.
(B17)
(A) a normal type instruction that is executed at a first frequency to provide higher processor instruction throughput; and (b) an arithmetic and logic operation instruction that includes a multiply operation, the first frequency being lower than the first frequency. An execution pipeline for executing various types of program instructions, including a first type of instructions that are executed at two frequencies to provide lower processor instruction throughput;
A processor comprising a processing mechanism associated with the processor,
The processing mechanism is:
A mechanism for determining a schedule for execution of a certain number of first type instructions;
The execution frequency of the instruction processor is lower than the first frequency suitable for processing other types of instructions, lower than the first frequency, and suitable for processing the first type of instructions. A mechanism to automatically switch to
A mechanism for automatically switching again from the second frequency to the first frequency on condition that execution of the number of first type instructions has been completed;
Processor.
(B18)
The determining mechanism is:
A mechanism for evaluating when a predefined threshold number of the first type instructions are scheduled to execute in the executable program code, and the number of first type instructions scheduled for execution A mechanism for triggering the processor to switch the execution frequency to the second lower execution frequency, provided that is at least equal to the threshold number;
In addition,
Triggering the processor includes switching the execution frequency to the second execution frequency after the processor completes execution of another type of instruction previously scheduled.
The processor according to B17.
(B19)
The evaluating mechanism is
A mechanism for storing a threshold as a lower bound on a number of consecutive first type instructions at a given interval to trigger the automatic switching of the processor frequency;
A mechanism for counting the number of instructions of the first type issued to the execution scheduler of the processor;
A mechanism by which the automatic switching is activated provided that the number of the first type of actions in the interval is at least the threshold;
A mechanism for comparing the number of instructions of the first type with the preset threshold number;
A mechanism for automatically issuing an interrupt signal for performing the change of the execution frequency to the second frequency in the processor;
The automatically issuing includes transferring the interrupt signal to a clock and power management (CPM) unit associated with the processor, wherein the CPM unit is responsive to receiving the interrupt signal. Then, the processor according to B17, which sets and updates the execution frequency.
(B20)
The logic mechanism to evaluate is
A software compiler that monitors a sequence of instructions in the program instructions when compiling the program instructions, and the second of the execution frequencies on condition that the number of instructions of the first type exceeds a threshold number A software compiler that issues an interrupt to change to a frequency, and
A hardware logic circuit, which monitors a sequence of instructions in the program instruction during instruction scheduling in the processor, on condition that the number of instructions of the first type issued for scheduling exceeds a threshold number Hardware logic that issues an interrupt to change to the second frequency of the execution frequency;
The processor of B18, completed via one of the following:

本発明の機構を内部で有利に実装可能な、Power PC440組み込みコアを示す図である。FIG. 6 shows a Power PC440 embedded core in which the mechanism of the present invention can be advantageously implemented internally. 本発明の機構を内部で有利に実装可能な、例示的データ処理システムを示すブロック図である。FIG. 6 is a block diagram illustrating an exemplary data processing system in which the mechanisms of the present invention can be advantageously implemented. 本発明の例示的実施形態に従った、ハードウェア制御可能な動作当たりのサイクルを伴う、PPC440パイプライン構造を示すブロック図である。FIG. 4 is a block diagram illustrating a PPC 440 pipeline structure with hardware-controllable cycles per operation according to an exemplary embodiment of the present invention. 本発明の例示的実施形態に従った、乗算動作(および乗累算(MAC)動作)当たりの実行サイクルを制御するための、実行ステージ1のモード制御(または実行回数制御)システムを示すブロック図である。FIG. 3 is a block diagram illustrating an execution stage 1 mode control (or execution frequency control) system for controlling execution cycles per multiply operation (and multiply-accumulate (MAC) operation), in accordance with an exemplary embodiment of the present invention. It is. 本発明の例示的実施形態に従った、乗算動作(およびMAC動作)当たりの実行サイクルを制御するための、実行ステージ2のモード制御(または実行回数制御)システムを示すブロック図である。FIG. 3 is a block diagram illustrating an execution stage 2 mode control (or execution count control) system for controlling execution cycles per multiplication operation (and MAC operation), in accordance with an exemplary embodiment of the present invention. 本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ1および実行ステージ2における連続乗算動作を示す例示的タイミング図である。FIG. 4 is an exemplary timing diagram illustrating successive multiplication operations in execution stage 1 and execution stage 2 of the multiplier pipeline, in accordance with an exemplary embodiment of the present invention. 本発明の例示的実施形態に従った、乗算器パイプラインの実行ステージ2および書き戻しステージにおける連続乗算動作を示す例示的タイミング図である。FIG. 4 is an exemplary timing diagram illustrating successive multiplication operations in the execution stage 2 and writeback stage of the multiplier pipeline, in accordance with an exemplary embodiment of the present invention. 本発明の例示的実施形態に従った、障害状況によるホールドを有する乗算器パイプラインの実行ステージ1および実行ステージ2における乗算動作を示す例示的タイミング図である。FIG. 4 is an exemplary timing diagram illustrating multiplication operations in execution stage 1 and execution stage 2 of a multiplier pipeline with hold due to fault conditions, in accordance with an exemplary embodiment of the present invention. 本発明の例示的実施形態に従った、障害状況を有する乗算器パイプラインの実行ステージ2および書き戻しステージにおける乗算動作を示す例示的タイミング図である。FIG. 6 is an exemplary timing diagram illustrating multiplication operations in execution stage 2 and write back stage of a multiplier pipeline with fault conditions, in accordance with an exemplary embodiment of the present invention. 本発明の例示的実施形態に従った、ソフトウェア・ベースの周波数制御システムに関するCPU周波数検出および制御論理を示すブロック図である。FIG. 2 is a block diagram illustrating CPU frequency detection and control logic for a software-based frequency control system, according to an exemplary embodiment of the present invention. 本発明の例示的実施形態に従った、実行用にスケジューリングされた乗算動作の数をカウントするために命令デコードおよび発行論理に結合された、ソフトウェア・ベースの周波数制御システムを示す他の図である。FIG. 5 is another diagram illustrating a software-based frequency control system coupled to instruction decode and issue logic to count the number of multiply operations scheduled for execution, in accordance with an exemplary embodiment of the present invention. . 本発明の一実施形態に従った、プロセッサの実行周波数をいつ変更するかを決定するために、図11に従ったソフトウェア・ベースの周波数制御システムによって検出された周波数制限命令カウントの使用を示す論理流れ図である。Logic illustrating the use of a frequency limited instruction count detected by a software-based frequency control system according to FIG. 11 to determine when to change the execution frequency of the processor according to one embodiment of the present invention. It is a flowchart.

符号の説明Explanation of symbols

100 Power PC440組み込みコア
102 440 中央処理ユニット(CPU)
104 メモリ管理ユニット(MMU)
105 キャッシュ・ユニット
106 ロード・ストア・パイプ
107 単純整数パイプ
108 複雑整数パイプ
110 サポート論理
120 Iキャッシュ・アレイ(構成可能)
122 Dキャッシュ・アレイ(構成可能)
これでOKです。他も同様です。
100 Power PC440 embedded core 102 440 Central processing unit (CPU)
104 Memory management unit (MMU)
105 cache unit 106 load store pipe 107 simple integer pipe 108 complex integer pipe 110 support logic 120 I cache array (configurable)
122 D-cache array (configurable)
This is OK. Others are the same.

Claims (9)

複数の機能ステージを伴うプロセッサ・パイプラインを有するデータ処理システムにおいて、
ある閾値の第1タイプの命令が実行されるスケジュールを決定するステップと、
前記機能ステージのうちの1つ以上の機能ステージの実行サイクル周波数を、第1のサイクル周波数から、前記第1のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第2のサイクル周波数へと、自動的に変更するステップと、
を含む方法。
In a data processing system having a processor pipeline with multiple functional stages,
Determining a schedule on which a threshold type of first type instruction is executed;
The execution cycle frequency of one or more of the functional stages is set in advance from the first cycle frequency to be higher than the first cycle frequency and independent of the cycle frequency of the other functional stages. Automatically changing to a second cycle frequency;
Including methods.
前記スケジューリングされた数の第1タイプの命令の実行が完了したことに応答して、前記1つ以上の機能ステージの前記実行サイクル周波数を、前記第2のサイクル周波数から前記第1のサイクル周波数へと、再度自動的に切り替えるステップをさらに含む、請求項1に記載の方法。   Responsive to completion of execution of the scheduled number of first type instructions, the execution cycle frequency of the one or more functional stages is changed from the second cycle frequency to the first cycle frequency. The method of claim 1 further comprising the step of automatically switching again. 前記第1タイプの命令が、単一サイクル待ち時間で実行される通常タイプの命令よりも長い待ち時間で実行される命令であり、
前記決定するステップが、
前記プロセッサ・パイプラインに関連付けられた論理回路を介して、事前に設定された時間間隔内で前記1つ以上の機能ステージによって実行されるようにスケジューリングされた第1タイプの命令の数が、前記閾値数を超えた場合を評価するステップと、
前記スケジューリングされた前記第1タイプの命令の数が、少なくとも前記閾値数と同等であることを条件に、前記第2のサイクル周波数への前記実行サイクル周波数の増分を動的にトリガするステップと、
をさらに含む、請求項1に記載の方法。
The first type instruction is an instruction executed with a longer latency than a normal type instruction executed with a single cycle latency;
Said determining step comprises:
The number of first type instructions scheduled to be executed by the one or more functional stages within a preset time interval via a logic circuit associated with the processor pipeline is Evaluating a case where a threshold number is exceeded;
Dynamically triggering an increase in the execution cycle frequency to the second cycle frequency, provided that the number of the scheduled first type instructions is at least equal to the threshold number;
The method of claim 1, further comprising:
前記動的にトリガするステップが、さらに前記1つ以上の機能ステージでの前記第1タイプの命令の実行を遅延させるため、前記論理回路に追加のサイクル待ち時間を投入するステップをさらに含む、請求項3に記載の方法。   The dynamically triggering further comprises injecting additional cycle latency into the logic circuit to further delay execution of the first type of instruction at the one or more functional stages. Item 4. The method according to Item 3. 前記1つ以上の機能ステージへのサイクル遅延の追加をトリガするために、所与の間隔でのある数の連続する第1タイプの命令に関する下限として、閾値を格納するステップをさらに含み、
前記決定するステップが、前記間隔内の前記連続する第1タイプの命令の数が少なくとも前記閾値である場合、自動切り替えがトリガされるように、命令ストリーム内で検出された前記連続する第1タイプの命令の数を前記閾値と比較するステップを含む、
請求項1に記載の方法。
Storing a threshold as a lower bound for a number of consecutive first type instructions at a given interval to trigger the addition of a cycle delay to the one or more functional stages;
The determining step detects the consecutive first type detected in the instruction stream such that an automatic switch is triggered if the number of the consecutive first type instructions within the interval is at least the threshold. Comparing the number of instructions to the threshold value,
The method of claim 1.
前記第1タイプの命令が、乗算命令を含む複雑な算術命令であり、
前記1つ以上の機能ステージが複雑な実行パイプライン内のステージを含む、
請求項1に記載の方法。
The first type instruction is a complex arithmetic instruction including a multiplication instruction;
The one or more functional stages include stages in a complex execution pipeline;
The method of claim 1.
前記第2のサイクル周波数が、前記第1のサイクル周波数の整数倍である、請求項6に記載の方法。   The method of claim 6, wherein the second cycle frequency is an integer multiple of the first cycle frequency. 複数の機能ステージを含む実行パイプラインを有するプロセッサと、
前記機能ステージのうちの1つ以上の機能ステージに関連付けられた処理論理回路と、
を備える、データ処理システムであって、
前記処理論理回路は、
前記1つ以上の機能ステージ内で実行される命令のシーケンスをフェッチする命令フェッチ・メカニズムと、
ある閾値の第1タイプの命令が実行されるスケジュールを決定するスケジュール決定・メカニズムと、
前記1つ以上の機能ステージの実行サイクル周波数を、第1のサイクル周波数から、前記第1のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第2のサイクル周波数へと、自動的に変更する周波数変更・メカニズムとを備える、
データ処理システム。
A processor having an execution pipeline including a plurality of functional stages;
Processing logic associated with one or more of the functional stages;
A data processing system comprising:
The processing logic circuit is:
An instruction fetch mechanism for fetching a sequence of instructions to be executed within the one or more functional stages;
A schedule determination mechanism for determining a schedule in which a certain type of first type instruction is executed;
A second cycle set in advance, wherein the execution cycle frequency of the one or more functional stages is higher than the first cycle frequency from the first cycle frequency and does not depend on the cycle frequency of other functional stages. It has a frequency change mechanism that automatically changes to the frequency,
Data processing system.
様々なタイプの命令を実行するための複数の実行ステージを有する実行パイプラインと、
前記複数の実行ステージのうちの1つ以上内で実行される命令のシーケンスをフェッチする命令フェッチ・メカニズムと、
前記機能ステージのうちの1つ以上の機能ステージに関連付けられた処理論理回路と
を備える、プロセッサであって、
前記処理論理回路は、
ある閾値の第1タイプの命令が実行されるスケジュールを決定するスケジュール決定・メカニズムと、
前記1つ以上の機能ステージの実行サイクル周波数を、第1のサイクル周波数から、前記第1のサイクル周波数よりも高く、かつ他の機能ステージのサイクル周波数に依存しない事前に設定された第2のサイクル周波数へと、自動的に変更する周波数変更・メカニズムと、
前記スケジューリングされた第1タイプの命令の実行が完了したことに応答して、前記1つ以上の機能ステージの前記実行サイクル周波数を、前記第2のサイクル周波数から前記第1のサイクル周波数へと、再度自動的に切り替える周波数再変更・メカニズムを備える
プロセッサ。
An execution pipeline having multiple execution stages for executing various types of instructions;
An instruction fetch mechanism for fetching a sequence of instructions to be executed within one or more of the plurality of execution stages;
And a processing logic circuit associated with one or more of the functional stages,
The processing logic circuit is:
A schedule determination mechanism for determining a schedule in which a certain type of first type instruction is executed;
A second cycle set in advance, wherein the execution cycle frequency of the one or more functional stages is higher than the first cycle frequency from the first cycle frequency and does not depend on the cycle frequency of other functional stages. Frequency change mechanism that automatically changes to frequency,
In response to completion of execution of the scheduled first type instruction, the execution cycle frequency of the one or more functional stages is changed from the second cycle frequency to the first cycle frequency. A processor with a frequency re-changing mechanism that automatically switches again.
JP2008180402A 2007-07-11 2008-07-10 Method, system, and processor for adaptive execution cycle control for extended instruction throughput Expired - Fee Related JP5270240B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/776121 2007-07-11
US11/776,121 US7937568B2 (en) 2007-07-11 2007-07-11 Adaptive execution cycle control method for enhanced instruction throughput
US11/776222 2007-07-11
US11/776,222 US7779237B2 (en) 2007-07-11 2007-07-11 Adaptive execution frequency control method for enhanced instruction throughput

Publications (2)

Publication Number Publication Date
JP2009037608A true JP2009037608A (en) 2009-02-19
JP5270240B2 JP5270240B2 (en) 2013-08-21

Family

ID=40439405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008180402A Expired - Fee Related JP5270240B2 (en) 2007-07-11 2008-07-10 Method, system, and processor for adaptive execution cycle control for extended instruction throughput

Country Status (2)

Country Link
JP (1) JP5270240B2 (en)
TW (1) TW200919306A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010231542A (en) * 2009-03-27 2010-10-14 Oki Semiconductor Co Ltd Semiconductor integrated circuit device
US20140281402A1 (en) * 2013-03-13 2014-09-18 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9977482B2 (en) * 2011-12-21 2018-05-22 Intel Corporation Method and apparatus for setting an I/O bandwidth-based processor frequency floor
CN113075895B (en) * 2021-03-26 2022-09-09 江苏城乡建设职业学院 High-speed centrifuge interrupt program instruction distribution method

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5729740B1 (en) * 1970-04-16 1982-06-24
JPH08202549A (en) * 1995-01-30 1996-08-09 Mitsubishi Electric Corp Data processor
JPH09319578A (en) * 1996-03-29 1997-12-12 Matsushita Electric Ind Co Ltd Data processor having variable number of pipeline steps
JPH1115658A (en) * 1997-06-27 1999-01-22 Matsushita Electric Ind Co Ltd Data processor
JP2002169790A (en) * 2000-12-01 2002-06-14 Sharp Corp Semiconductor integrated circuit
US6446029B1 (en) * 1999-06-30 2002-09-03 International Business Machines Corporation Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
JP2003196149A (en) * 2001-12-26 2003-07-11 Matsushita Electric Ind Co Ltd Memory control device
JP2004062281A (en) * 2002-07-25 2004-02-26 Nec Micro Systems Ltd Pipeline processor and pipeline operation control method
US20050138450A1 (en) * 2003-12-19 2005-06-23 Cheng-Hsueh Hsieh Apparatus and method for power performance monitors for low-power program tuning

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5729740B1 (en) * 1970-04-16 1982-06-24
JPH08202549A (en) * 1995-01-30 1996-08-09 Mitsubishi Electric Corp Data processor
JPH09319578A (en) * 1996-03-29 1997-12-12 Matsushita Electric Ind Co Ltd Data processor having variable number of pipeline steps
JPH1115658A (en) * 1997-06-27 1999-01-22 Matsushita Electric Ind Co Ltd Data processor
US6446029B1 (en) * 1999-06-30 2002-09-03 International Business Machines Corporation Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
JP2002169790A (en) * 2000-12-01 2002-06-14 Sharp Corp Semiconductor integrated circuit
JP2003196149A (en) * 2001-12-26 2003-07-11 Matsushita Electric Ind Co Ltd Memory control device
JP2004062281A (en) * 2002-07-25 2004-02-26 Nec Micro Systems Ltd Pipeline processor and pipeline operation control method
US20050138450A1 (en) * 2003-12-19 2005-06-23 Cheng-Hsueh Hsieh Apparatus and method for power performance monitors for low-power program tuning

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010231542A (en) * 2009-03-27 2010-10-14 Oki Semiconductor Co Ltd Semiconductor integrated circuit device
US20140281402A1 (en) * 2013-03-13 2014-09-18 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US9354884B2 (en) * 2013-03-13 2016-05-31 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US10114652B2 (en) 2013-03-13 2018-10-30 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US10831504B2 (en) 2013-03-13 2020-11-10 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes

Also Published As

Publication number Publication date
TW200919306A (en) 2009-05-01
JP5270240B2 (en) 2013-08-21

Similar Documents

Publication Publication Date Title
US7937568B2 (en) Adaptive execution cycle control method for enhanced instruction throughput
US7779237B2 (en) Adaptive execution frequency control method for enhanced instruction throughput
JP6289444B2 (en) Method and apparatus for varying energy per instruction according to the amount of parallelism available
US9003421B2 (en) Acceleration threads on idle OS-visible thread execution units
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
JP5795820B2 (en) Processor, method, system, and program
US8589665B2 (en) Instruction set architecture extensions for performing power versus performance tradeoffs
US9164764B2 (en) Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode
US20060242389A1 (en) Job level control of simultaneous multi-threading functionality in a processor
JP2023093646A (en) Backward compatibility testing of software in timing disruption mode
US8250395B2 (en) Dynamic voltage and frequency scaling (DVFS) control for simultaneous multi-threading (SMT) processors
US8285950B2 (en) SMT/ECO mode based on cache miss rate
TWI597600B (en) Microprocessor and power saving method for reducing instructions per clock rate at running state thereof
TWI557557B (en) Platform processing device and system and article comprising computer-readable storage medium
US7617385B2 (en) Method and apparatus for measuring pipeline stalls in a microprocessor
Sadrosadati et al. ITAP: Idle-time-aware power management for GPU execution units
JP5270240B2 (en) Method, system, and processor for adaptive execution cycle control for extended instruction throughput
JP2008226236A (en) Configurable microprocessor
US20080229058A1 (en) Configurable Microprocessor
EP0901063A2 (en) Power management methods
Neagoe et al. Why ARM processors are the best choice for embedded low-power applications?
Mehta et al. Fetch halting on critical load misses
Shieh et al. Saving register-file static power by monitoring instruction sequence in ROB
Yan et al. Exploiting virtual registers to reduce pressure on real registers
Saghir et al. Reducing Power of Memory Hierarchy in General Purpose Graphics Processing Units

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130326

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130403

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130509

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees