JP5714792B2 - Instruction control circuit, instruction control method, and information processing apparatus - Google Patents
Instruction control circuit, instruction control method, and information processing apparatus Download PDFInfo
- Publication number
- JP5714792B2 JP5714792B2 JP2008242708A JP2008242708A JP5714792B2 JP 5714792 B2 JP5714792 B2 JP 5714792B2 JP 2008242708 A JP2008242708 A JP 2008242708A JP 2008242708 A JP2008242708 A JP 2008242708A JP 5714792 B2 JP5714792 B2 JP 5714792B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- reduction
- entry
- entries
- buf
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Power Sources (AREA)
- Advance Control (AREA)
Description
本発明は命令制御回路、命令制御方法、および情報処理装置に関し、特に低消費電力を実現する命令制御回路、命令制御方法、および情報処理装置に関する。 The present invention relates to an instruction control circuit, an instruction control method, and an information processing apparatus, and more particularly to an instruction control circuit, an instruction control method, and an information processing apparatus that realize low power consumption.
消費電力制御の一例が特許文献1に記載されている。特許文献1のデータ処理装置は、データを格納するバッファとバッファにデータを供給するデータ供給部とデータ供給部の動作モードを制御するデータ供給制御部とを有し、データ供給制御部がバッファのデータ蓄積量に基づいてデータ供給部を低電力モードあるいは通常モードに移行させることで、データ処理装置自身の消費電力を制御する。 An example of power consumption control is described in Patent Document 1. The data processing apparatus of Patent Literature 1 includes a buffer for storing data, a data supply unit that supplies data to the buffer, and a data supply control unit that controls an operation mode of the data supply unit. The power consumption of the data processing apparatus itself is controlled by shifting the data supply unit to the low power mode or the normal mode based on the data accumulation amount.
また、消費電力制御の他の一例が、特許文献2に記載されている。特許文献2のメモリ管理ユニットは、メモリ管理ユニット制御回路と複数のエントリよりなるアドレス変換バッファとエントリ選択部と電力制御部とを有し、電力制御部がエントリ選択部の出力情報とメモリ管理ユニットの出力情報とに基づいてアドレス変換バッファのエントリの電力を制御する。
Another example of power consumption control is described in
さらに、消費電力制御の他の一例が、特許文献3に記載されている。特許文献3の並列演算処理プロセッサは、命令デコード部および複数の演算器を有する演算処理部と電力制御部とを有し、電力制御部が命令デコード部の出力するユニット選択信号および電力モード設定信号に基づいて各演算器に対するクロックおよび電源の供給を制御する。 Another example of power consumption control is described in Patent Document 3. The parallel processing processor of Patent Literature 3 includes an instruction processing unit having a command decoding unit and a plurality of computing units, and a power control unit, and the power control unit outputs a unit selection signal and a power mode setting signal output from the command decoding unit. Based on the above, the clock and power supply to each arithmetic unit are controlled.
しかしながら、上述した特許文献1〜3に記載されたような技術では、それぞれが複数のエントリを有する複数の命令バッファを構成した場合、動作可能な、即ち電力を消費する、命令バッファのエントリの数をアプリケーションの動的な特性に応じてきめ細かく制御することができないという問題があった。 However, in the techniques as described in Patent Documents 1 to 3 described above, when a plurality of instruction buffers each having a plurality of entries are configured, the number of instruction buffer entries that are operable, that is, that consumes power, are included. There is a problem that it cannot be finely controlled according to the dynamic characteristics of the application.
以下に、例として、図4を参照してこの問題についてさらに説明する。図4は、命令キャッシュ10、命令実行部60および命令制御回路900を有する一般的なプロセッサを示す。このようなプロセッサの構成と動作に関しては、以下の非特許文献1を参照することができる。
In the following, this problem will be further described by way of example with reference to FIG. FIG. 4 shows a general processor having the
図4を参照すると、命令制御回路900は、命令ディスパッチ制御部920と各々「32個」のエントリを有するバッファーA(以下、「Abuf」)941、バッファーB(以下、「Bbuf」)942およびバッファーC(以下、「Cbuf」)943とを有している。
Referring to FIG. 4, the
命令ディスパッチ制御部920は、命令ディスパッチ制御回路924と、Abuf941、Bbuf942およびCbuf943において命令が登録されているエントリ個数を各々カウントするAbuf登録個数カウンタ21、Bbuf登録個数カウンタ22およびCbuf登録個数カウンタ23と、命令キャッシュ10からフェッチした命令を格納する命令レジスタdU925および命令レジスタdL926とを有する。
The instruction
Abuf登録個数カウンタ921、Bbuf登録個数カウンタ922およびCbuf登録個数カウンタ923は、それぞれ命令登録指示信号である命令DSP(Dispatch)-Abuf、命令DSP-Bbufおよび命令DSP-Cbufを入力して「1」カウントアップし、それぞれエントリ解放信号であるErel-Abuf、Erel-BbufおよびErel-Cbufを入力して「1」カウントダウンする。更に、Abuf登録個数カウンタ921、Bbuf登録個数カウンタ922およびCbuf登録個数カウンタ923は、各々の登録個数カウンタが32となった場合にAbuf-full/Bbuf-full/Cbuf-fullというBusy信号を立てる。
The Abuf
命令ディスパッチ制御回路924は、Busy信号が立っている場合は、命令レジスタdU925および命令レジスタdL926をホールドし命令の取得を延期する。
If the Busy signal is raised, the instruction
命令制御回路900においては、以上のようにして命令バッファの登録制御がおこなわれる。
In the
図5は、上記の構成において、Abuf登録個数カウンタ921が「32」になったために命令ディスパッチ制御回路924が命令レジスタdU925および命令レジスタdL926をホールドして命令DSP-Abufが延期し、パイプラインの動きを止めてしまった状況を示している(TMG2〜TMG5)。この場合、Abuf941というリソースが枯渇して命令供給レートが悪化することは仕方が無いとしても、後続のBbuf入命令およびCbuf入命令まで止まってしまい、Bbuf942の未使用エントリ「17」およびCbuf943の未使用エントリ「25」は電力を消費した状態のままである。これは、電力あたりの性能という面で問題である
図5の例では、TMG6において命令DSP-Abufが発行され、続くTMG7、TMG8においてBbuf入命令とC-buf入命令が連続してディスパッチされる。仮に命令実行部60がOut-of-order実行可能に構成してあれば、Bbuf/Cbuf入命令のディスパッチはもっと前のタイミングで実行されることになるが、Out-of-Order実行制御を可能にすることはアーキテクチャを複雑にし、消費電力の上昇を招くことになる。従って、電力あたりの性能向上という課題に対しての解決策としては有効ではない。
FIG. 5 shows that in the above configuration, the instruction
他方、使っていないBbuf942およびCbuf943に対して電力が供給されていることは、省電力という観点からは問題と言える。図5の例で言えば、Bbuf登録個数カウンタ22およびCbuf登録個数カウンタ23はそれぞれ「15」、「7」のままであるので、Bbuf942およびCbuf943のエントリの最大をそれぞれ「16」、「8」にしても性能には変化が無い。従って、Bbuf942およびCbuf943の使用しないそれぞれ「16」、「24」のエントリの電源やクロックを落とすことがプロセッサ全体の動きを踏まえた効率的な省電力制御のあり方である。ここで、Abuf941、Bbuf942およびCbuf943の使用度はアプリケーションに依存するものではあるが、コンパイラ時の静的な解析に基づいてバッファ容量を確定させる等の方法は効果を上げにくい。
On the other hand, supplying power to the
即ち、特許文献1乃至3のいずれに記載された技術を用いても、性能バランスを保持しつつ、命令バッファのエントリの電力消費を動的に制御することができないという問題があった。 That is, there is a problem that even if the technique described in any one of Patent Documents 1 to 3 is used, the power consumption of the instruction buffer entry cannot be dynamically controlled while maintaining the performance balance.
本発明の目的は、上述した課題を解決する命令制御回路、命令制御方法、および情報処理装置を提供することにある。 An object of the present invention is to provide an instruction control circuit, an instruction control method, and an information processing apparatus that solve the above-described problems.
本発明の命令制御回路は、それぞれ複数のエントリを有する複数の命令バッファと、
該複数の命令バッファのぞれぞれに対し、に当該命令バッファ毎の全ての前記エントリが使用状態であるbuf-full時間を計時する時間計時部と、
前記buf-full時間に基づいて削減後エントリ数を算出する時間解析部と、
前記削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する制御部とを有する。
The instruction control circuit of the present invention includes a plurality of instruction buffers each having a plurality of entries,
For each of the plurality of instruction buffers, a time counting unit that measures a buf-full time in which all the entries for each instruction buffer are in use,
A time analysis unit that calculates the number of entries after reduction based on the buf-full time;
And a control unit that controls stop or reduction of power consumption of each of the plurality of entries based on the number of entries after reduction.
本発明の命令制御方法は、それぞれ複数のエントリを有する複数の命令バッファのそれぞれに対し、当該命令バッファ毎の全ての前記エントリが使用状態であるbuf-full時間を計時し、
前記buf-full時間に基づいて削減後エントリ数を算出し、
前記削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する。
In the instruction control method of the present invention, for each of a plurality of instruction buffers each having a plurality of entries, the buf-full time during which all the entries for each instruction buffer are in use is counted,
Calculate the number of entries after reduction based on the buf-full time,
Control of stopping or reducing power consumption of each of the plurality of entries is performed based on the number of entries after reduction.
本発明によれば、命令バッファのエントリのうち性能バランス保持に不要分のエントリの消費電力を、動的にきめ細かく削減することが可能になる。 According to the present invention, it is possible to dynamically and finely reduce the power consumption of entries unnecessary for maintaining the performance balance among the entries in the instruction buffer.
次に、本発明の実施の形態について図面を参照して詳細に説明する。 Next, embodiments of the present invention will be described in detail with reference to the drawings.
図1を参照すると、本発明の第1の実施の形態は、命令キャッシュ10、命令実行部60および命令制御回路200から構成されている。
Referring to FIG. 1, the first embodiment of the present invention includes an
命令キャッシュ10は、例えばキャッシュメモリであり、命令実行部60で実行されるアプリケーションプログラムの命令100を保持する。
The
命令実行部60は、例えば複数命令発行方式のパイプラインであり、命令制御回路200から取得した命令の各ステージ(命令デコード/実行、レジスタファイル読み出し/書き戻し、メモリのアクセス、など)を実行する。
The
命令制御回路200は、以下に詳述する構成と動作により、命令キャッシュ10から命令を取得し、取得した命令をディスパッチして命令実行部60に渡す。命令制御回路200は、命令ディスパッチ制御部20、Abuf41、Bbuf42、Cbuf43およびバッファフル時間解析制御部50を含む。
The
命令ディスパッチ制御部20は、Abuf登録個数カウンタ21、Bbuf登録個数カウンタ22、Cbuf登録個数カウンタ23、命令ディスパッチ制御回路24、命令レジスタdu25、命令レジスタdL26およびBuf数更新間隔REG27を含む。なお、「命令ディスパッチ制御部20」は一般的に「制御部」と呼ぶことができる。
The instruction
Abuf登録個数カウンタ21、Bbuf登録個数カウンタ22およびCbuf登録個数カウンタ23は、例えばカウンタ回路であり、それぞれAbuf41、Bbuf42およびCbuf43において命令が登録されているエントリの個数(以下、登録エントリ数と呼ぶ)を保持する。Abuf登録個数カウンタ21、Bbuf登録個数カウンタ22およびCbuf登録個数カウンタ23は、それぞれ命令DSP-Abuf信号、命令DSP-Bbuf信号および命令DSP-Cbuf信号を入力するとそれぞれの保持している登録エントリ数を「1」加算し、それぞれAbufエントリ解放信号、Bbufエントリ解放信号およびCbufエントリ解放信号を入力するとそれぞれの保持している登録エントリ数を「1」減算する。
The Abuf registered
命令ディスパッチ制御回路24は、例えば論理回路であり、命令ディスパッチ制御部20全体の動作を制御して、Abuf41、Bbuf42およびCbuf43がオーバーフローしないようにそれぞれの登録エントリ数を監視しながら、Abuf41、Bbuf42およびCbuf43への命令の登録制御を実行する。同時に、命令ディスパッチ制御回路24は、後述する削減後エントリ数に基づいて、Abuf41、Bbuf42およびCbuf43の各エントリの電力消費の停止あるいは低減を指示する。
The instruction
具体的には、命令ディスパッチ制御回路24は、命令フェッチdl信号を入力すると、命令126の分類に対応するAbuf41、Bbuf42またはCbuf43のいずれか一つを選択し、選択したAbuf41、Bbuf42およびCbuf43にそれぞれ対応する命令DSP-Abuf信号と命令DSP-Abuf信号、命令DSP-Bbuf信号と命令DSP-Bbuf信号および命令DSP-Cbuf信号と命令DSP-Cbuf信号とを出力する。尚、これらの各信号は、例えばパルス信号である。
Specifically, when the instruction
上記の動作と並行して、命令ディスパッチ制御回路24は、命令フェッチdl信号を入力すると、Abuf登録個数カウンタ21の登録エントリ数とA-Buf削減後エントリ数REG55の削減後エントリ数とを比較し、これらが等しくかつAbuf-full信号がオフである場合にAbuf41がフル状態になったことを検出し、Abuf-full信号をオン状態にする。尚、Abuf-full信号は、例えばレベル信号であり、オン状態でAbuf41に対応する登録エントリ数と削減後エントリ数が等しいことを、オフ状態でAbuf41に対応する登録エントリ数が削減後エントリ数未満であることを示す。同様に、命令ディスパッチ制御回路24は、Bbuf42およびCbuf43に対応する登録エントリ数と削減後エントリ数に基づいて、それぞれBbuf-full信号およびCbuf-full信号を制御する。
In parallel with the above operation, when the instruction
加えて、命令ディスパッチ制御回路24は、Abuf-full信号、Bbuf-full信号またはCbuf-full信号のうちのいずれか1以上をオン状態にしている場合、同時にDLHLD信号をオン状態にする。尚、DLHLD信号は、例えばレベル信号である。
In addition, when any one or more of the Abuf-full signal, the Bbuf-full signal, and the Cbuf-full signal are turned on, the instruction
さらに、命令ディスパッチ制御回路24は、命令フェッチdl信号を入力すると、A-Buf削減後エントリ数REG55の削減後エントリ数(現削減後エントリ数と呼ぶ)と、前回の命令フェッチdl信号の入力時に読み出して記憶していた削減後エントリ数(先削減後エントリ数と呼ぶ)とを比較する。そして、命令ディスパッチ制御回路24は、現削減後エントリ数と先削減後エントリ数が等しい場合には対応する動作として何もせず、現削減後エントリ数が先削減後エントリ数を超えている場合にはAbuf41に対して現削減後エントリ数を示して電力消費の停止あるいは低減するエントリを指示する。また、命令ディスパッチ制御回路24は、現削減後エントリ数が先削減後エントリ数未満の場合にはAbuf登録個数カウンタ21の登録エントリ数が現削減後エントリ数以下になった時点で、Abuf41に対して現削減後エントリ数を示して電力消費の停止あるいは低減するエントリを指示する。同様の動作により、命令ディスパッチ制御回路24は、Bbuf42およびCbuf43に対して現削減後エントリ数を示して電力消費の停止あるいは低減するエントリを指示する。
Further, upon receiving the instruction fetch dl signal, the instruction
命令レジスタdu25は、例えばレジスタ回路であり、命令フェッチのタイミングにおいて、DLHLD信号がオフ状態の場合には命令キャッシュ10から命令100を取得して命令125として保持し、DLHLD信号がオン状態の場合には命令キャッシュ10から命令100を取得しない。
The instruction register du25 is, for example, a register circuit. When the DLHLD signal is off at the instruction fetch timing, the instruction register du25 acquires the
命令レジスタdL26は、例えばレジスタ回路であり、命令フェッチのタイミングにおいて、DLHLD信号がオフ状態の場合には命令レジスタdu25から命令125を取得して命令126として保持し、命令フェッチdl信号を出力し、DLHLD信号がオン状態の場合には命令レジスタdu25から命令125を取得しない。尚、命令フェッチdl信号は、例えばパルス信号である。
The instruction register dL26 is, for example, a register circuit. When the DLHLD signal is off at the instruction fetch timing, the instruction register dL26 acquires the
Buf数更新間隔REG27は、例えばプログラムによるアクセスが可能なレジスタ回路であり、後述する削減後エントリ数を算出する処理を実行する時間間隔を保持する。この時間間隔は、例えば、命令ディスパッチ制御部20が実装されたコンピュータ上で動作するオペレーティングシステムにおけるプロセススイッチング処理の一部として実現される更新間隔設定手段(図示しない)から設定される。そして、設定される時間間隔の単位は、例えば命令実行部60の動作クロック(図示しない)のクロック数である。あるいは、設定される時間間隔の単位は、専用の発信器(図示しない)または他の回路の動作クロック(図示しない)のクロック数であっても良い。なお、「Buf数更新間隔REG27」は一般的に「Buf数更新間隔保持部」と呼ぶことができる。
The Buf number update interval REG27 is, for example, a register circuit that can be accessed by a program, and holds a time interval for executing processing for calculating the number of entries after reduction, which will be described later. This time interval is set, for example, from update interval setting means (not shown) realized as part of process switching processing in an operating system operating on a computer on which the instruction
Abuf41、Bbuf42およびCbuf43は、例えばFIFO(First In First Out)形式のバッファ回路であり、本実施の形態ではそれぞれ例えば32個のエントリを有し(最大エントリ数=32)、例えば演算命令、メモリアクセス命令あるいは分岐命令というような命令の分類に対応して、格納するAbuf41、Bbuf42およびCbuf43を割り当てる。尚、エントリ数は他の実施の形態において任意の個数を有するように構成しても良いし、また格納の割り当ては他の任意の命令の分類に対応しても良い。
Abuf41、Bbuf42およびCbuf43は、それぞれ命令DSP-Abuf信号、命令DSP-Bbuf信号および命令DSP-Cbuf信号を入力すると、命令レジスタdl26から命令126を取得しそれぞれのエントリに登録する。また、Abuf41、Bbuf42およびCbuf43は、エントリに登録している命令126を命令実行部60に出力した場合、それぞれAbufエントリ解放信号、Bbufエントリ解放信号およびCbufエントリ解放信号を出力する。尚、Abufエントリ解放信号、Bbufエントリ解放信号およびCbufエントリ解放信号は、例えばパルス信号である。
When the instruction DSP-Abuf signal, the instruction DSP-Bbuf signal, and the instruction DSP-Cbuf signal are input to the
Abuf41、Bbuf42およびCbuf43は、命令ディスパッチ制御回路24からの電力消費の停止あるいは低減の指示に対応して、各エントリのクロックを停止、電源を停止あるいは低電力モードへ移行させる。尚、このような電力消費の停止あるいは低減の具体的な実現方法は、特許文献1、特許文献2および特許文献3などの記載を参照しても良い。なお、「Abuf41」や、「Bbuf42」、「Cbuf43」は一般的に「命令バッファ」と呼ぶことができる。
バッファフル時間解析制御部50は、Buf-full時間解析回路51、Abuf-full時間カウンタ52、Bbuf-full時間カウンタ53、Cbuf-full時間カウンタ54、A-Buf削減後エントリ数REG55、B-Buf削減後エントリ数REG56およびC-Buf削減後エントリ数REG57を含む。なお、「Abuf-full時間カウンタ52」、「Bbuf-full時間カウンタ53」および「Cbuf-full時間カウンタ54」は一般的に「時間計時部」と呼ぶことができる。
The buffer full time
Buf-full時間解析回路51は、例えば論理回路であり、バッファフル時間解析制御部50全体の動作を制御し、Abuf41、Bbuf42およびCbuf43がバッファフル状態である時間に基づいて、アプリケーションプログラムの実行状態に合わせたAbuf41、Bbuf42およびCbuf43の削減後エントリ数を算出する。なお、「Buf-full時間解析回路51」は一般的に「時間解析部」と呼ぶことができる。
The Buf-full
具体的には、Buf-full時間解析回路51は、Buf数更新間隔REG27から取得した時間間隔を計時し、この時間間隔ごとに以下の処理を実行する。
Specifically, the Buf-full
まず、Buf-full時間解析回路51は、A-Buf削減後エントリ数REG55、B-Buf削減後エントリ数REG56およびC-Buf削減後エントリ数REG57の保持する各削減後エントリ数にそれぞれAbuf-full時間カウンタ52、Bbuf-full時間カウンタ53およびCbuf-full時間カウンタ54の保持する各時間を乗じて、Abuf41、Bbuf42およびCbuf43のフル度値を算出する。続けてBuf-full時間解析回路51は、これらのフル度値の内最大のフル度値に対する各フル度値の比を算出し、これらの各フル度値の比に対応するAbuf41、Bbuf42およびCbuf43の最大エントリ数を乗じて新たな削減後エントリ数を算出する。
First, the Buf-full
次にBuf-full時間解析回路51は、算出した削減後エントリ数をそれぞれA-Buf削減後エントリ数REG55、B-Buf削減後エントリ数REG56およびC-Buf削減後エントリ数REG57に設定する。
Next, the Buf-full
また同時に、Buf-full時間解析回路51は、カウントリセット信号を出力する。
At the same time, the Buf-full
Abuf-full時間カウンタ52、Bbuf-full時間カウンタ53およびCbuf-full時間カウンタ54は、例えばカウンタ回路であり、Abuf41、Bbuf42およびCbuf43がフル状態にある時間を保持する。
The Abuf-
具体的には、Abuf-full時間カウンタ52、Bbuf-full時間カウンタ53およびCbuf-full時間カウンタ54は、それぞれAbuf-full信号、Bbuf-full信号およびCbuf-full信号がオン状態の間カウンタをカウントアップする。尚、これらのカウンタ回路は、例えば命令ディスパッチ制御部20の動作クロック(図示しない)あるいは命令実行部60の動作クロック(図示しない)でカウントを実行する。また、Abuf-full時間カウンタ52、Bbuf-full時間カウンタ53およびCbuf-full時間カウンタ54は、カウントリセット信号を入力してカウンタを「0」クリアする。
Specifically, the Abuf-
A-Buf削減後エントリ数REG55、B-Buf削減後エントリ数REG56およびC-Buf削減後エントリ数REG57は、例えばレジスタ回路であり、それぞれBuf-full時間解析回路51が設定したAbuf41、Bbuf42およびCbuf43の削減後エントリ数を保持する。尚、A-Buf削減後エントリ数REG55、B-Buf削減後エントリ数REG56およびC-Buf削減後エントリ数REG57の初期設定値は、それぞれAbuf41、Bbuf42およびCbuf43の最大エントリ数(本実施の形態では、「32」)である。
The entry number REG55 after A-Buf reduction, the entry number REG56 after B-Buf reduction, and the entry number REG57 after C-Buf reduction are, for example, register circuits, and
次に、Buf-full時間解析回路51の削減後エントリ数算出の動作を、具体的な例を上げて説明する。
Next, the operation of calculating the post-reduction entry number of the Buf-full
初期設定後、最初にBuf数更新間隔REG27から取得した時間間隔(例えば、1,000,000クロック)を計時した期間のAbuf41、Bbuf42およびCbuf43がフル状態であった時間がそれぞれ120,000クロック、60,000クロック、90,000クロックであったとする。
After the initial setting, the time when
まず、Buf-full時間解析回路51は、フル度値を以下のとおり算出する。
First, the Buf-full
(Abuf41のフル度値)=(A-Buf削減後エントリ数REG55の保持する削減後エントリ数)×(Abuf-full時間カウンタ52の保持する時間)=32×120,000=3,840,000。 (Fullness value of Abuf 41) = (Number of entries after reduction held by REG55 after A-Buf reduction) × (Time held by Abuf-full time counter 52) = 32 × 120,000 = 3,840,000.
(Bbuf42のフル度値)=(B-Buf削減後エントリ数REG56の保持する削減後エン数)×(Bbuf-full時間カウンタ53の保持する時間)=32×60,000=1,920,000。 (Fullness value of Bbuf 42) = (Number of post-reduction entries held in the REG 56 after B-Buf reduction) × (Time held by the Bbuf-full time counter 53) = 32 × 60,000 = 1,920,000.
(Abuf41のフル度値)=(C-Buf削減後エントリ数REG57の保持する削減後エントリ数)×(Cbuf-full時間カウンタ54の保持する時間)=32×90,000=2,880,000。
(Fullness value of Abuf 41) = (Number of entries after reduction held in
続けてBuf-full時間解析回路51は、これらのフル度値の内最大のフル度値(本例では、3,840,000)に対する各フル度値の比を算出する。
Subsequently, the Buf-full
(Abuf41のフル度値比)=3,840,000÷3,840,000=1。
(
(Bbuf42のフル度値比)=1,920,000÷3,840,000=0.5。 (Fullness value ratio of Bbuf42) = 1,920,000 ÷ 3,840,000 = 0.5.
(Cbuf43のフル度値比)=2,880,000÷3,840,000=0.75。 (Fullness value ratio of Cbuf43) = 2,880,000 ÷ 3,840,000 = 0.75.
続けて、Buf-full時間解析回路51は、フル度値の比に対応するAbuf41、Bbuf42およびCbuf43の最大エントリ数を乗じて(小数点以下は切り上げ)、新たな削減後エントリ数を算出する。
Subsequently, the Buf-full
(Abuf41の新たな削減後エントリ数)=1×32=32。 (New number of entries after reduction of Abuf 41) = 1 × 32 = 32.
(Bbuf42の新たな削減後エントリ数)=0.5×32=16。 (New number of entries after reduction of Bbuf 42) = 0.5 × 32 = 16.
(Cbuf43の新たな削減後エントリ数)=0.75×32=24。 (New number of entries after reduction of Cbuf 43) = 0.75 × 32 = 24.
こうして算出した削減後エントリ数を設定後、再びBuf数更新間隔REG27から取得した時間間隔を計時した期間のAbuf41、Bbuf42およびCbuf43がフル状態であった時間がそれぞれ120,000クロック、130,000クロック、110,000クロックであったとする。
After setting the number of entries after reduction calculated in this way, the time when
今回は、Buf-full時間解析回路51は、フル度値を以下のとおり算出する。
This time, the Buf-full
(Abuf41のフル度値)=32×120,000=3,840,000。 (Fullness value of Abuf 41) = 32 × 120,000 = 3,840,000.
(Bbuf42のフル度値)=16×130,000=2,080,000。 (Fullness value of Bbuf42) = 16 × 130,000 = 2,080,000.
(Abuf41のフル度値)=24×110,000=2,640,000。 (Fullness value of Abuf 41) = 24 × 110,000 = 2,640,000.
続けてBuf-full時間解析回路51は、これらのフル度値の内最大のフル度値(本例では、3,840,000)に対する各フル度値の比を算出する。
Subsequently, the Buf-full
(Abuf41のフル度値比)=3,840,000÷3,840,000=1。
(
(Bbuf42のフル度値比)=2,080,000÷3,840,000=0.54。 (Fullness value ratio of Bbuf42) = 2,080,000 ÷ 3,840,000 = 0.54.
(Cbuf43のフル度値比)=2,640,000÷3,840,000=0.69。 (Fullness value ratio of Cbuf43) = 2,640,000 ÷ 3,840,000 = 0.69.
続けて、Buf-full時間解析回路51は、フル度値の比に対応するAbuf41、Bbuf42およびCbuf43の最大エントリ数を乗じて、新たな削減後エントリ数を算出する。
Subsequently, the Buf-full
(Abuf41の新たな削減後エントリ数)=1×32=32。 (New number of entries after reduction of Abuf 41) = 1 × 32 = 32.
(Bbuf42の新たな削減後エントリ数)=0.54×32=18。 (New number of entries after reduction of Bbuf 42) = 0.54 × 32 = 18.
(Cbuf43の新たな削減後エントリ数)=0.69×32=23。 (New number of entries after reduction of Cbuf 43) = 0.69 × 32 = 23.
以上が、具体的な例による、Buf-full時間解析回路51の削減後エントリ数算出の動作の説明である。
The above is the description of the operation for calculating the post-reduction entry count of the Buf-full
図2は、本実施の形態の基本的な構成を示す。図2によれば、命令制御回路201は、Abuf41、Bbuf42、Cbuf43、Abuf-full時間カウンタ52、Bbuf-full時間カウンタ53およびCbuf-full時間カウンタ54、buf-full時間解析回路51および命令ディスパッチ制御部20を有する。
FIG. 2 shows a basic configuration of the present embodiment. According to FIG. 2, the
Abuf41、Bbuf42およびCbuf43は、それぞれ32個のエントリを有する。
Each of
Abuf-full時間カウンタ52、Bbuf-full時間カウンタ53およびCbuf-full時間カウンタ54は、Abuf41、Bbuf42およびCbuf43毎にAbuf41、Bbuf42およびCbuf43毎の32個の全てのエントリが使用状態であるbuf-full時間を計時する。
The Abuf-
buf-full時間解析回路51は、Abuf-full時間カウンタ52、Bbuf-full時間カウンタ53およびCbuf-full時間カウンタ54が計時するbuf-full時間に基づいて削減後エントリ数を算出する。
The buf-full
命令ディスパッチ制御部20は、buf-full時間解析回路51が算出した削減後エントリ数に基づいてAbuf41、Bbuf42およびCbuf43の各エントリの電力消費の停止あるいは低減を制御する。
The instruction
上述した本実施の形態における第1の効果は、命令バッファのエントリのうち性能バランス保持に不要分のエントリの電力を動的にきめ細かく削減できる点である。その理由は、命令バッファフルによる時間のバランスに基づいて使用エントリ数を決定するようにしたからである。 The first effect of the present embodiment described above is that the power of entries unnecessary for maintaining the performance balance among the entries in the instruction buffer can be dynamically and finely reduced. The reason is that the number of entries used is determined based on the time balance due to the instruction buffer full.
上述した本実施の形態における第2の効果は、アプリケーションの動作が動的に著しく変化する場合であっても、第1の効果を得ることができる点である。その理由は、使用エントリ数を決定する間隔を変更可能にしたからである。 The second effect in the present embodiment described above is that the first effect can be obtained even when the operation of the application changes significantly dynamically. This is because the interval for determining the number of entries used can be changed.
次に本発明の第2の実施の形態について図面を参照して詳細に説明する。図3を参照すると、第2の実施の形態の構成は、図1に示す第1の実施の形態の構成と比較して、命令ディスパッチ制御部20に余裕度REG32が追加されていることが異なる。また、第2の実施の形態は、第1の実施の形態と比較して、Buf-full時間解析回路51の動作が異なる。
Next, a second embodiment of the present invention will be described in detail with reference to the drawings. Referring to FIG. 3, the configuration of the second embodiment is different from the configuration of the first embodiment shown in FIG. 1 in that a
余裕度REG32は、例えばプログラムによるアクセスが可能なレジスタ回路であり、Buf-full時間解析回路51が削減後エントリ数を調整する場合に参照するための余裕度を保持する。設定される余裕度は、例えばbuf-full時間に基づいて算出された削減後エントリ数の増減値である。あるいは、余裕度は、削減後エントリ数を算出する基であるbuf-full時間の増減値であっても良い。なお、「余裕度REG32」は一般的に「余裕度保持部」と呼ぶことができる。
The margin REG32 is a register circuit that can be accessed by a program, for example, and holds a margin for reference when the Buf-full
Buf-full時間解析回路51は、buf-full時間に基づいて算出した新たな削減後エントリ数を、余裕度REG32から取得した余裕度に基づいて増加あるいは減少し、新たな削減後エントリ数を調整する。例えば、Buf-full時間解析回路51は、buf-full時間に基づいて算出した新たな削減後エントリ数に、最大エントリ数を超えない範囲で余裕度の値を加算する。
The Buf-full
次にBuf-full時間解析回路51は、調整した削減後エントリ数をそれぞれA-Buf削減後エントリ数REG55、B-Buf削減後エントリ数REG56およびC-Buf削減後エントリ数REG57に設定する。
Next, the Buf-full
例えば余裕度REG32に「1」が設定されている場合の、Buf-full時間解析回路51が削減後エントリ数を調整する動作ついて説明する。
For example, an operation in which the Buf-full
まず、Buf-full時間解析回路51は、第1の実施の形態で説明したように、新たな削減後エントリ数を以下の通り算出する。
First, as described in the first embodiment, the Buf-full
(Abuf41の新たな削減後エントリ数)=1×32=32。 (New number of entries after reduction of Abuf 41) = 1 × 32 = 32.
(Bbuf42の新たな削減後エントリ数)=0.5×32=16。 (New number of entries after reduction of Bbuf 42) = 0.5 × 32 = 16.
(Cbuf43の新たな削減後エントリ数)=0.75×32=24。 (New number of entries after reduction of Cbuf 43) = 0.75 × 32 = 24.
次に、Buf-full時間解析回路51は、余裕度「1」に基づいて新たな削減後エントリ数を以下の通り調整する。
Next, the Buf-full
(Abuf41の新たな削減後エントリ数の調整結果)=32。 (Adjustment result of new number of entries after reduction of Abuf 41) = 32.
(Bbuf42の新たな削減後エントリ数の調整結果)=16+1=17。 (Adjustment result of new number of entries after reduction of Bbuf 42) = 16 + 1 = 17.
(Cbuf43の新たな削減後エントリ数の調整結果)=24+1=25。 (Adjustment result of new number of entries after reduction of Cbuf 43) = 24 + 1 = 25.
余裕度は、例えば「-1」のような負の値であってもよく、この場合は削減後エントリ数が少なめに調整される。また、余裕度REG32は、命令バッファ毎に対応して有するように構成しても良い。
The margin may be a negative value such as “−1”. In this case, the number of entries after reduction is adjusted to be small. Further, the
上述した本実施の形態における効果は、第1の実施の形態における効果に比べて、性能または省電力をより重視することができる点である。その理由は、余裕度に基づいて新たな削減後エントリ数を調整するようにしたからである。 The effect in the present embodiment described above is that the performance or power saving can be emphasized more than the effect in the first embodiment. The reason is that the new number of entries after reduction is adjusted based on the margin.
以上の各実施の形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個のモジュールとして実現されたり、ひとつの構成要素が複数のモジュールで実現されたり、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。 Each component described in each of the above embodiments does not necessarily have to be individually independent, and a plurality of components are realized as a single module, or a single component is realized as a plurality of modules. Alternatively, a configuration in which a certain component is a part of another component, a part of a certain component overlaps with a part of another component, or the like may be employed.
さらに、以上説明した各実施の形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作の実行タイミングと他の動作の実行タイミングとの一部ないし全部が重複していたりしていてもよい。 Furthermore, in each embodiment described above, a plurality of operations are not limited to being executed at different timings. For example, another operation may occur during the execution of a certain operation, or part or all of the execution timing of a certain operation and the execution timing of another operation may overlap.
さらに、以上説明した各実施の形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作のすべての関係を限定するものではない。このため、各実施の形態を実施するときには、その複数の動作の関係は内容的に支障しない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施の形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。 Further, in each of the embodiments described above, it is described that a certain operation becomes a trigger for another operation, but the description does not limit all relationships between the certain operation and the other operations. For this reason, when each embodiment is implemented, the relationship between the plurality of operations can be changed within a range that does not hinder the contents. The specific description of each operation of each component does not limit each operation of each component. For this reason, each specific operation of each component may be changed within a range that does not hinder the functional, performance, and other characteristics in implementing each embodiment.
なお、以上説明した各実施の形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。 In addition, each component in each embodiment described above may be realized by hardware, software, or a mixture of hardware and software, if necessary. May be.
また、各構成要素の物理的な構成は、以上の実施の形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。 Further, the physical configuration of each component is not limited to the description in the above embodiment, and may exist independently, may exist in combination, or may be separated. It may be configured.
本発明は、性能低下のない省電力の実現を必要とする、例えばスーパーコンピュータなどに適用できる。 The present invention can be applied to, for example, a supercomputer that requires power saving without performance degradation.
10 命令キャッシュ
20 命令ディスパッチ制御部
21 Abuf登録個数カウンタ
22 Bbuf登録個数カウンタ
23 Cbuf登録個数カウンタ
24 命令ディスパッチ制御回路
41 Abuf
42 Bbuf
43 Cbuf
50 バッファフル時間解析制御部
51 時間解析回路
52 Abuf-full時間カウンタ
53 Bbuf-full時間カウンタ
54 Cbuf-full時間カウンタ
60 命令実行部
200 命令制御回路
201 命令制御回路
920 命令ディスパッチ制御部
921 Abuf登録個数カウンタ
922 Bbuf登録個数カウンタ
923 Cbuf登録個数カウンタ
924 命令ディスパッチ制御回路
941 Abuf
942 Bbuf
943 Cbuf
DESCRIPTION OF
42 Bbuf
43 Cbuf
50 Buffer full time
942 Bbuf
943 Cbuf
Claims (14)
該複数の命令バッファのそれぞれに対し、当該命令バッファの全ての前記エントリが使用状態であるbuf-full時間を計時する時間計時部と、
前記命令バッファのそれぞれの前記buf-full時間の比率と前記buf-full時間を計時した際の前記エントリの使用数を示す第1の削減後エントリ数とに基づいて新たな削減後エントリ数である第2の削減後エントリ数を算出する時間解析部と、
前記第2の削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する制御部と、
を有することを特徴とする命令制御回路。 A plurality of instruction buffers each having a plurality of entries;
For each of the plurality of instruction buffers, a time measuring unit that measures a buf-full time in which all the entries of the instruction buffer are in use,
Is the number of post-entry new reduced on the basis of each of the buf-full first reducing the number after entry indicating the number of use of the entries of the ratio of the time when the counting of the buf-full time of the instruction buffer A time analysis unit for calculating a second post-reduction entry number ;
A control unit that controls stop or reduction of power consumption of each of the plurality of entries based on the second post-reduction entry number;
An instruction control circuit comprising:
前記フル度値のうちの最大のフル度値に対する各前記フル度値の比を算出し、
各前記命令バッファに対応する最大エントリ数と各前記命令バッファに対応する各前記比とを乗じて各前記命令バッファに対応する前記第2の削減後エントリ数を算出する
ことを特徴とする請求項1記載の命令制御回路。 The time analysis unit, the buf-full time and the multiplying and for each of the instruction buffer corresponding to the number of the first reduction after entry to the first number of reductions after entry corresponding to each of the plurality of instruction buffers Calculate the fullness value,
Calculating the ratio of each fullness value to the maximum fullness value of the fullness values;
And calculates the maximum number of entries and a second number of reductions after entry before SL that corresponds to each of said ratios and each said instruction buffer by multiplying the corresponding to each of said instruction buffer for each said instruction buffer The instruction control circuit according to claim 1.
前記時間解析部は、前記余裕度に基づいて前記第2の削減後エントリ数を増減することを特徴とする請求項1または2記載の命令制御回路。 A margin holding unit that holds a predetermined margin with respect to the second post-reduction entry number calculated based on the buf-full time;
The instruction control circuit according to claim 1, wherein the time analysis unit increases or decreases the second post-reduction entry count based on the margin.
ことを特徴とする請求項3記載の命令制御回路。 4. The instruction control circuit according to claim 3, wherein the margin held by the margin holding unit is rewritable.
前記時間解析部は、前記時間間隔に基づいて前記第2の削減後エントリ数を算出する
ことを特徴とする請求項1乃至4のいずれかに記載の命令制御回路。 A Buf number update interval holding unit for holding a predetermined time interval for calculating the second post-reduction entry number;
5. The instruction control circuit according to claim 1, wherein the time analysis unit calculates the second post-reduction entry number based on the time interval.
ことを特徴とする請求項5記載の命令制御回路。 6. The instruction control circuit according to claim 5, wherein the time interval held by the Buf number update interval holding unit is rewritable.
を有することを特徴とする請求項1乃至6のいずれかに記載の命令制御回路。 The instruction control circuit according to claim 1, further comprising an instruction dispatch control circuit that suspends instruction acquisition based on the second post-reduction entry count.
前記命令バッファのそれぞれの前記buf-full時間の比率と前記buf-full時間を計時した際の前記エントリの使用数を示す第1の削減後エントリ数とに基づいて新たな削減後エントリ数である第2の削減後エントリ数を算出し、
前記第2の削減後エントリ数に基づいて前記複数のエントリのそれぞれの電力消費の停止あるいは低減を制御する
ことを特徴とする命令制御方法。 For each of a plurality of instruction buffers each having a plurality of entries, time the buf-full time during which all the entries in the instruction buffer are in use,
Is the number of post-entry new reduced on the basis of each of the buf-full first reducing the number after entry indicating the number of use of the entries of the ratio of the time when the counting of the buf-full time of the instruction buffer Calculate the second post-reduction entry count ,
A command control method comprising: controlling stop or reduction of power consumption of each of the plurality of entries based on the second number of entries after reduction.
前記フル度値のうちの最大のフル度値に対する各前記フル度値の比を算出し、
各前記命令バッファに対応する最大エントリ数と各前記命令バッファに対応する各前記比とを乗じて各前記命令バッファに対応する前記第2の削減後エントリ数を算出する
ことを特徴とする請求項8記載の命令制御方法。 By multiplying said buf-full time corresponding to said first number of reductions after entry to the first number of reductions after entry corresponding to each of the plurality of instruction buffers to calculate the full degree value for each of the instruction buffer ,
Calculating the ratio of each fullness value to the maximum fullness value of the fullness values;
And calculates the maximum number of entries and a second number of reductions after entry before SL that corresponds to each of said ratios and each said instruction buffer by multiplying the corresponding to each of said instruction buffer for each said instruction buffer The instruction control method according to claim 8.
ことを特徴とする請求項8または9記載の命令制御方法。 Claim 8 or 9, wherein the relative buf-full time the second number reduction after entry be calculated based on, increase or decrease the number of post-entry the second reduction based on a predetermined margin Instruction control method as described.
ことを特徴とする請求項8乃至10のいずれかに記載の命令制御方法。 Instruction control method according to any one of claims 8 to 10, characterized in that for calculating the number of said rear second reduction entries based on a predetermined time interval to calculate the number of the post-second reduction entry .
ことを特徴とする請求項8乃至11のいずれかに記載の命令制御方法。 12. The instruction control method according to claim 8, wherein instruction acquisition is postponed based on the second post-reduction entry number.
情報処理装置。 An information processing apparatus that performs dispatch control of instructions by the instruction control method according to claim 8.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008242708A JP5714792B2 (en) | 2008-09-22 | 2008-09-22 | Instruction control circuit, instruction control method, and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008242708A JP5714792B2 (en) | 2008-09-22 | 2008-09-22 | Instruction control circuit, instruction control method, and information processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010073124A JP2010073124A (en) | 2010-04-02 |
JP5714792B2 true JP5714792B2 (en) | 2015-05-07 |
Family
ID=42204808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008242708A Expired - Fee Related JP5714792B2 (en) | 2008-09-22 | 2008-09-22 | Instruction control circuit, instruction control method, and information processing apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5714792B2 (en) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0793198A (en) * | 1993-09-27 | 1995-04-07 | Toshiba Corp | Computer system |
JPH10240698A (en) * | 1997-02-24 | 1998-09-11 | Nec Corp | Load distribution system for high load job |
JP2885764B2 (en) * | 1997-06-19 | 1999-04-26 | 北陸日本電気ソフトウェア株式会社 | Printer device |
JP2001228985A (en) * | 2000-02-16 | 2001-08-24 | Matsushita Graphic Communication Systems Inc | Image processor and print data receiving method |
JP2007200213A (en) * | 2006-01-30 | 2007-08-09 | Nec Corp | Information processing device, entry configuration control method and program |
-
2008
- 2008-09-22 JP JP2008242708A patent/JP5714792B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010073124A (en) | 2010-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8959372B2 (en) | Dynamic performance control of processing nodes | |
US7627770B2 (en) | Apparatus and method for automatic low power mode invocation in a multi-threaded processor | |
JP5329410B2 (en) | Method and apparatus for executing processor instructions based on dynamic variable delay | |
US7752627B2 (en) | Leaky-bucket thread scheduler in a multithreading microprocessor | |
US7853777B2 (en) | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions | |
US9086823B2 (en) | Providing adaptive frequency control for a processor using utilization information | |
US7600135B2 (en) | Apparatus and method for software specified power management performance using low power virtual threads | |
KR100745904B1 (en) | a method and circuit for modifying pipeline length in a simultaneous multithread processor | |
US8245065B2 (en) | Power gating processor execution units when number of instructions issued per cycle falls below threshold and are independent until instruction queue is full | |
JP3919764B2 (en) | How to use dispatch flush on concurrent multithreaded processors to eliminate exception conditions | |
US20140189328A1 (en) | Power reduction by using on-demand reservation station size | |
US9436464B2 (en) | Instruction-issuance controlling device and instruction-issuance controlling method | |
US8365179B2 (en) | Multi-thread processor and its hardware thread scheduling method | |
US20060179279A1 (en) | Bifurcated thread scheduler in a multithreading microprocessor | |
US20060179284A1 (en) | Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency | |
WO2001048599A1 (en) | Method and apparatus for managing resources in a multithreaded processor | |
JP2005302025A (en) | Method, completion table, and processor for tracking a plurality of outstanding instructions | |
US20100031006A1 (en) | Thread completion rate controlled scheduling | |
JP2010286898A (en) | Multithread execution device, and multithread execution method | |
US8006073B1 (en) | Simultaneous speculative threading light mode | |
JPH08221311A (en) | Dynamic changeover of priority sequence of load buffer and store buffer in superscalar processor | |
JP5714792B2 (en) | Instruction control circuit, instruction control method, and information processing apparatus | |
US20060179186A1 (en) | Method and apparatus for adaptive buffer sizing | |
JP4209377B2 (en) | Semiconductor device | |
JP2010061642A (en) | Technique for scheduling threads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100910 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20110705 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120727 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120821 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121018 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130409 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150312 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5714792 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |