JP2008015562A - キャッシュミス/ヒット予想 - Google Patents
キャッシュミス/ヒット予想 Download PDFInfo
- Publication number
- JP2008015562A JP2008015562A JP2006182742A JP2006182742A JP2008015562A JP 2008015562 A JP2008015562 A JP 2008015562A JP 2006182742 A JP2006182742 A JP 2006182742A JP 2006182742 A JP2006182742 A JP 2006182742A JP 2008015562 A JP2008015562 A JP 2008015562A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- cache miss
- thread
- operand cache
- hit
- 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.)
- Withdrawn
Links
Images
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】マルチスレッドプロセッサにおけるパイプラインのリード命令の読み込み先メモリアドレスの決定前にオペランドキャッシュミス/ヒット予想を行う事で従来よりも早い段階でスレッドの制御を行い、パイプラインのストールを解消する為の方法を提供する。
【解決手段】本発明は、マルチスレッドプロセッサにおけるパイプラインのリード命令の読み込み先メモリアドレスの決定前に命令がリード判定回路でリード命令と判別された後に、キャッシュ予想回路で命令アドレスを読み込んで履歴テーブルおよびグローバルカウンタを参照する事でオペランドキャッシュミス/ヒットを予想し、前記命令がキャッシュミスをするリード命令と予想された場合にスレッドの切り替えを行う事でパイプラインのストールを解消する。
【選択図】図2
【解決手段】本発明は、マルチスレッドプロセッサにおけるパイプラインのリード命令の読み込み先メモリアドレスの決定前に命令がリード判定回路でリード命令と判別された後に、キャッシュ予想回路で命令アドレスを読み込んで履歴テーブルおよびグローバルカウンタを参照する事でオペランドキャッシュミス/ヒットを予想し、前記命令がキャッシュミスをするリード命令と予想された場合にスレッドの切り替えを行う事でパイプラインのストールを解消する。
【選択図】図2
Description
本発明は、コンピュータプロセッサの高速化に係り、特にキャッシュメモリを有する演算処理回路のメモリにおける読み込み命令のオペランドキャッシュミス/ヒット予想および前記予想結果によるスレッドを制御することによってパイプラインのストールを解消する方法に関する。
近年のプロセス技術の進歩により、CPUやメモリの高速化は進んでいる。しかし、CPUの高速化に比較しメモリの高速化は穏やかであり、両者の速度差が大きくなっている。この速度差を緩和する為にキャッシュメモリが存在する。このキャッシュメモリは、プロセッサによって高速にデータを読み出す事が可能な記憶素子によって構成されており、メモリデバイスに記憶されているデータの一部を記憶し、プロセッサがメモリデバイスからデータの読み出しを行う場合に、そのデータがキャッシュメモリに記憶されているものであれば、キャッシュメモリからデータを読み出す事で高速な読み出しを可能としている。キャッシュメモリはアクセススピード、記憶できる容量に応じて複数のレベルに分けられている(例えば、一次キャッシュ、二次キャッシュなど)場合があり、レベルの低いほど高速にアクセスできる記憶素子が用いられる。
また一方で、プロセッサは通常行う処理を分割し、細かいステージに分け、各ステージで異なった命令を実行する事によって高速な実行を可能としており、この細かいステージの総称を命令パイプライン(以下、本明細書ではパイプラインとする)と呼んでいる。しかし、このパイプラインで、何らかの原因により次のステージにおける処理を行う事ができないと、そのステージの処理を終了する事ができず、実行が進まなくなる時があり、この事をストールと呼んでいる。
そこで、CPUなどのプロセッサでメモリ読み込み命令(以下、本明細書ではリード命令とする)を実行する場合、一次キャッシュにヒットしなければ、オペランドキャッシュミスとなり二次キャッシュや三次キャッシュと言うような遅いキャッシュメモリやメインメモリにアクセスすることになりパイプラインがストールしてしまい命令実行の速度低下をまねくと言う問題がある。また特に、細分化したプログラムであるスレッドを複数同時実行可能なマルチスレッドプロセッサでは、オペランドキャッシュミスしてメインメモリ等にアクセスするようになると実行するスレッドを切り替え、パイプラインのストールを最小限に抑える事が従来から考えられているが、このような複雑なプロセッサはパイプラインが長い為にスレッドが変更されてから変更されたスレッドの命令が実行されるまでに時間がかかると言う問題がある。さらに、オペランドキャッシュミスあるいはヒットの両方の場合でリード命令の効率の良いスケジューリングが異なっており、多くのCPUではオペランドキャッシュヒットを前提にスケジューリングを行っているためにオペランドキャッシュミスをした場合にはスケジューリングを改めてやり直す必要があり、同様に命令実行の速度低下をまねくと言う問題がある。
このような命令実行の速度低下の問題に対処するため、マルチスレッドプロセッサにおけるパイプラインの命令実行よりも早い段階でリード命令のオペランドキャッシュミス/ヒットを予想する技術が従来からいくつか考案されている。
従来のオペランドキャッシュミス/ヒット予想では、リード命令実行時のキャッシュミス/ヒットによりカウンタ値が増減するグローバルカウンタやリード命令の読み込み先のメモリアドレスに関連づけられたエントリに前記リード命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを用い、パイプラインのスケジューリングの段階でリード命令のオペランドキャッシュミス/ヒットを予想することでスケジューリングを行っていた(非特許文献1〜5)。
米国特開US2003−0208665 A1公報(特許文献1)では、読み込むメモリのロードアドレスの一部を変換したエントリを有し、リード命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶したオペランドキャッシュヒット/ミス予想テーブル(CPT)を使う事でリード命令のオペランドキャッシュヒット/ミス予想を試み、スケジュール従属命令にこの予想情報を用いてキャッシュミスするリード命令の実行前に命令のスケジュールをやり直す技術が開示されている。
一方で、従来のマルチスレッドプロセッサにおけるスレッドの切り替え手段としては、オペランドキャッシュミス発生後にデコード段階のデコードされた命令に対してエントリを作成し、そのエントリを命令実行の指標として命令が実行された時にはエントリが消去され、命令が実行されていない時はエントリを残す事で命令実行されていないエントリ数を知る事によってスレッドを切り替える手段が知られている。
しかし、これら従来法のリード命令のオペランドキャッシュミス/ヒットを予想する方法は、マルチスレッドプロセッサにおけるパイプラインのスケジューリング段階以降あるいは読み込み先メモリアドレスの決定後に予想する方法であった。また、スレッド切り替えによってパイプラインのストールを解消する方法でも、通常スレッドを切り替えてから異なったスレッドの命令が実行されるまでに複数クロックかかるので、その間に命令実行が一時的に止まる為に効果は限定的であった。そして、例え本従来法のキャッシュミス/ヒット予想とスレッド切り替え技術を組み合わせたとしても、従来の予想方法は動作の遅いメモリからの読み込みが行われる直前に予想する方法であり、メインメモリにアクセスする事がわかってからスレッドを変更してもパイプラインを命令が伝わっていくまでに複数クロックの時間がかかる事でパイプラインはしばらくストールしてしまい、本従来法の予想とスレッドの切り替えを行う事でパイプラインのストールを大幅に解消する事は実現できなかった。
米国特開 US 2003-0208665 A1公報
IBM Power5 CHIP:A Dual-Core Multithreaded Processor
Speculation Techniques for Improving Load Related Instruction Scheduling
Bloom Filtering Cache Misses for Accurate Data Speculation and Prefetching
The ALPHA 21264 MICROPROCESSOR
ACCESS-MODE PREDICTIONS FOR LOW-POWER CACHE DESIGN
本発明では、従来よりもマルチスレッドプロセッサにおけるパイプラインの早い段階であるリード命令の読み込み先メモリアドレスの決定前に、メモリからの読み込み時の命令あるいは該パイプラインに投入されているスレッドの命令の種別を判定し、実行される命令がリード命令と判断された場合に、オペランドキャッシュミス/ヒット予想を行う方法を提供する。また、前記予想においてオペランドキャッシュミスすると予想されることで従来よりも早い段階でのスレッドの制御を行うことで、パイプラインのストールを大幅に解消する為の方法を提供する。
本発明の上記課題は本発明の第一態様として以下の各手段を備える事で解決できる。
キャッシュミス/ヒット予想においては、マルチスレッドプロセッサにおけるパイプラインのリード命令の読み込み先メモリアドレスの決定前において該パイプラインに投入されているスレッドの命令の種別を判定し、前記判定結果がリード命令であったときに該リード命令実行時のオペランドキャッシュミス/ヒットを予想するオペランドキャッシュミス/ヒット予想手段を備える。
キャッシュミス/ヒット予想においては、マルチスレッドプロセッサにおけるパイプラインのリード命令の読み込み先メモリアドレスの決定前において該パイプラインに投入されているスレッドの命令の種別を判定し、前記判定結果がリード命令であったときに該リード命令実行時のオペランドキャッシュミス/ヒットを予想するオペランドキャッシュミス/ヒット予想手段を備える。
また、前記マルチスレッドプロセッサは、前記リード命令のメモリ上の命令アドレスを変換したエントリに前記リード命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを用いて、該履歴テーブルの前記リード命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記リード命令実行時のオペランドキャッシュミス/ヒットを予測する履歴テーブルを用いたオペランドキャッシュミス/ヒット予想手段を備える。
そして、前記マルチスレッドプロセッサは、リード命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに用いることによって前記履歴テーブルに記憶された前記リード命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、該命令がオペランドキャッシュミス/ヒットを予想するグローバルカウンタを用いたオペランドキャッシュミス/ヒット予想手段を備える。
上記より、オペランドキャッシュミス/ヒット予想を行う事が可能である。
一方で、スレッドの制御においては、パイプラインのリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該パイプラインに投入されているスレッドの命令の種別を判定し、前記判定された命令の種別に応じてスレッドの制御するスレッド制御方法を備える。
一方で、スレッドの制御においては、パイプラインのリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該パイプラインに投入されているスレッドの命令の種別を判定し、前記判定された命令の種別に応じてスレッドの制御するスレッド制御方法を備える。
前記マルチスレッドプロセッサはリード命令のオペランドキャッシュミス/ヒット予想手段を備え、前記メモリからの読み込み時の命令あるいはパイプラインに投入されているスレッドの命令の種別が前記リード命令であったとき、前記オペランドキャッシュミス/ヒット予想手段により前記リード命令のオペランドキャッシュミス/ヒットを予想し、オペランドキャッシュミスが予想されたときにスレッドを制御するスレッド制御方法を備える。
上記により、スレッドの制御が可能となる。
マルチスレッドプロセッサにおいては、命令プレデコーダとスレッド制御回路を備え、前記命令プレデコーダは命令パイプラインのリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定して前記スレッド制御回路に信号を通知し、前記スレッド制御回路は、前記通知された命令の種別に基づいてスレッド制御回路にスレッドの制御のイベントが発生したことを通知する手段を備える。
マルチスレッドプロセッサにおいては、命令プレデコーダとスレッド制御回路を備え、前記命令プレデコーダは命令パイプラインのリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定して前記スレッド制御回路に信号を通知し、前記スレッド制御回路は、前記通知された命令の種別に基づいてスレッド制御回路にスレッドの制御のイベントが発生したことを通知する手段を備える。
また、前記マルチスレッドプロセッサは、リード命令のオペランドキャッシュミス/ヒット予想手段を備え、前記スレッド制御回路は、前記命令プレデコーダから通知された命令の種別が前記リード命令のとき、前記オペランドキャッシュミス/ヒット予想手段により前記リード命令のオペランドキャッシュミス/ヒットを予想し、オペランドキャッシュミスが予想されるときに、前記スレッド制御回路にスレッドを制御するイベントが発生したことを通知する手段を備える。
以上より、メモリからの読み込み時の命令あるいはパイプラインにおける命令の種別を判定し、命令がリード命令であった場合にオペランドキャッシュミス/ヒットを予想し、該リード命令がキャッシュミスと予測されることでスレッドを制御することが可能となる。
本発明の主たる前提としては、ある特定の命令アドレスのリード命令が過去複数回連続でキャッシュミスをしていたならば、そのリード命令を実行する際には再度キャッシュミスをすると考える点にある。
本発明によれば、マルチスレッドプロセッサにおけるパイプラインのリード命令の読み込み先メモリアドレスの決定前にリード命令のオペランドキャッシュミス/ヒットを予想する事ができる。そして、マルチスレッドプロセッサにおけるパイプラインのリード命令の読み込み先メモリアドレスの決定前にリード命令のオペランドキャッシュミスを予想する事で従来よりも早い段階でのスレッドの制御を行う事ができ、パイプラインのストールを大幅に解消し、なおかつ命令実行の高速化を実現できる。
また、前記オペランドキャッシュミス/ヒット予想結果によりリード命令がオペランドキャッシュミスと予測される場合は、2次キャッシュや3次キャッシュといった遅いキャッシュメモリやメインメモリ等にアクセスする事でレイテンシが長くなる事が予想でき、一方でオペランドキャッシュヒットと予測されれば、一次キャッシュからデータを読み込む事でレイテンシが短くなる事が予想できる。つまり、本発明のオペランドキャッシュミス/ヒット予想を用いる事でレイテンシの長短を予想する事ができる。
さらに、バスを介してメモリにアクセスする場合(例えば、他のプロセッサと共有しているメモリにアクセスする場合など)において、オペランドキャッシュミスすると予想される事によって、バスを介してアクセスを行うメモリに対するリード命令であると予想でき、バスの使用を早い段階で想定し、効率的なスケジューリングを行うことが可能である。
また、本発明の他の形態の1つとして、1クロックから数クロック毎にスレッドを切り替えていき高速な動作を目指すプロセッサである細粒度マルチスレッディングプロセッサの場合においてもオペランドキャッシュミス/ヒット予想でオペランドキャッシュミスと予想された時に、オペランドキャッシュミスと予想されたスレッドでの命令実行を早い段階で止めさせ、オペランドキャッシュミスすると予想されたスレッドへのスレッドを制御し、やめさせる事でパイプラインのストールを事前に解消し、高速な動作をする事が可能となる。
プロセッサがメモリからデータを読み込む際に、オペランドキャッシュミスしてレベルの高いキャッシュメモリ(例えば、二次キャッシュ、三次キャッシュなど)もしくはメインメモリ等からの読み込みでレイテンシが長くかかる読み込みの事を「ハイコストな読み込み」、オペランドキャッシュヒットしてレベルの低いキャッシュメモリ(例えば、一次キャッシュ)などの読み込みでレイテンシが短い読み込みの事を「ローコストな読み込み」として定義し、以下で用いる事とする。
以下では、図面を参照しながら本発明の一態様について説明する。
図1は、本発明のオペランドキャッシュミス/ヒット予想によるスレッド切り替えの全体構成図である。以下に、本発明のオペランドキャッシュミス/ヒット予想によるスレッド制御の構成を説明する。
図1は、本発明のオペランドキャッシュミス/ヒット予想によるスレッド切り替えの全体構成図である。以下に、本発明のオペランドキャッシュミス/ヒット予想によるスレッド制御の構成を説明する。
本発明は、マルチスレッドプロセッサでスレッドの命令を実行しているパイプライン(a)、前記命令の種別がリード命令か否かを判定するリード命令判定回路(b)、リード命令が実行された時に命令の命令アドレスに関連づけてハイコストな読み込みかローコストな読み込みかをエントリに記憶している履歴テーブルを備えている履歴回路(c)、ある命令アドレスのリード命令が実行された時にハイコストな読み込みかローコストな読み込みかを数値化しカウントするグローバルカウンタを備えているグローバルカウンタ回路(d)、命令の命令アドレスに対応するアドレス別履歴およびグローバルカウンタから、リード命令の読み込み先がハイコストな読み込みかローコストな読み込みかを予想する予想回路(e)、スレッドを制御する為のスレッド制御回路(f)、バスのスケジューリングを行うバス調停回路(不図示)を備える事によって構成される。ここで、リード命令判定回路(b)は、フィッチされた命令がリード命令か否かを判定する簡単なデコーダ回路からなり、パイプラインにおけるリード命令の読み込み先メモリアドレスの決定するステージよりも前のいずれかのステージに存在し、リード命令のビット列パターンを記憶した素子からなり、該ビット列パターンとリード命令判定回路が存在するステージに送られてきた命令を比較し、リード命令であるか否かの判定をする。すなわち、リード命令のビット列をみて、それがリード命令であると判定するだけでよく、他の命令のデコードはする必要がないものであり、パイプラインの外側にパイプラインを並行動作するように設けられる。また、履歴回路(c)は、メモリアクセスステージに存在し、リード命令の命令アドレスをハッシュした結果において指し示されるエントリで、同じエントリが指し示されたリード命令のメモリ読み込みがハイコストな読み込みであったかローコストな読み込みであったかを単数あるいは複数アクセス前まで記憶する履歴テーブル、リード命令の命令アドレスをハッシュするハッシュ回路とハッシュ回路の結果を基に履歴テーブルにアクセスするアクセス回路からなる。履歴テーブルは、リード命令のメモリ上のアドレスとそのキャッシュミス/ヒットと対応関係をなしている履歴テーブルである。なお、リード命令の命令アドレスは物理アドレスでも仮想アドレスでもよい。さらに、グローバルカウンタ回路(d)は、メモリアクセスステージに存在し、リード命令によるメモリ読み込みがハイコストな読み込みであったか、ローコストな読み込みであったかを記憶するグローバルカウンタ、リード命令によるメモリ読み込みがハイコストであったかローコストな読み込みであったかによりグローバルカウンタを増減させる演算回路、グローバルカウンタにアクセスするアクセス回路からなる。そして、予想回路はプロセッサ内に存在し、履歴テーブルを読んだ結果に基づいてハイコストな読み込みであるかローコストな読み込みであるかを判定する履歴テーブル判定回路、グローバルカウンタを読んだ結果に基づいてハイコストな読み込みであるかローコストな読み込みであるかを判定するグローバルカウンタ判定回路、さらに履歴回路のオペランドキャッシュミス/ヒット予想とグローバルカウンタ回路のオペランドキャッシュミス/ヒット予想を並列に実行する場合において履歴テーブル判定回路の結果およびグローバルカウンタ判定回路の結果に基づいてハイコストな読みであるかローコストな読みであるかを判定する判定回路からなり、オペランドキャッシュミス/ヒット予想結果が、命令にキャッシュミスすると予想された場合に、スレッド制御回路にスレッドを制御するように信号を通知するスレッド制御信号通知回路からなる。また、スレッド制御回路はプロセッサ内に存在し、送られてきた信号を受け取ってスレッドを制御する回路からなる。
図2は、本発明のオペランドキャッシュミス/ヒット予想によるスレッド制御の簡易フローチャート図を示しており、オペランドキャッシュミス/ヒット予想によるスレッド制御方法を以下で説明する。
マルチスレッドプロセッサにおけるパイプライン(図1a)のリード命令の読み込み先メモリアドレスの決定前に、メモリからの読み込み時の命令あるいは該パイプラインに投入されているスレッドの命令の種別をリード命令判定回路(図1b)でリード命令のビット列によってリード命令か否かを判定し(A1)、リード命令であった場合はオペランドキャッシュミス/ヒット予想回路(図1e)で該命令の命令アドレスをキャッシュメモリから読み込み(A2)、読み込んだ命令アドレスを履歴回路(図1c)に送る。命令アドレスは履歴回路(図1c)で受け取られハッシュ関数などを用いてエントリに変換されることで、該命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶してある履歴テーブル内で過去に同じ命令アドレスを変換したエントリの位置を特定する(A3)。オペランドキャッシュミス/ヒット予想回路(図1e)では、履歴回路(図1c)からの該命令に対応する履歴テーブル内の過去のオペランドキャッシュミス/ヒットの履歴を参照する事によって該命令がキャッシュミスするかキャッシュヒットするかを予想する(A4)。ここでキャッシュミスすると予想された場合は、更に予想精度を向上する為にグローバルカウンタ回路(図1d)のグローバルカウンタを参照して(A5)、該命令がキャッシュミスするかキャッシュヒットするかを予想する(A6)。ここでもキャッシュミスすると予想された場合には、命令プレデコーダがスレッド制御回路(図1f)に信号を与えてスレッドの制御を行う(A7)。ここにおける、履歴回路のキャッシュミス/ヒット予想とグローバルカウンタ回路のキャッシュミス/ヒット予想は並列に実行することも可能である。
図3は、マルチスレッドプロセッサにおけるパイプライン(図1a)のリード命令の読み込み先メモリアドレスの決定前に命令をリード命令か否かを判断し、リード命令であった場合にオペランドキャッシュミス/ヒットを予想し、オペランドキャッシュミスであったならばスレッドの制御を行う事でパイプライン(図1a)のストールを解消する為のフローチャート図である。以下、図3のフローチャート図の詳細な説明を図1のブロック図を参照しながら説明する。
はじめに、パイプライン(図1a)上のリード命令の読み込み先メモリアドレスの決定前(例えば、データがキャッシュに読み込まれた段階、あるいはデコードされる前の段階) においてメモリからの読み込み時の命令あるいは該パイプラインに投入されているスレッドの命令がその命令の種別を判定する為にリード命令判定回路(図1b)に送られる事で、該命令とプロセッサのリード命令のビット列パターンを比較する事によって該命令がリード命令か否かを判断する(B1)。ここで、該命令がリード命令と判断される場合は、オペランドキャッシュミス/ヒット予想回路(図1e)に該命令の命令アドレスを送るように促す。一方で、該命令がリード命令と判断されない場合は、パイプライン(図1a)上の該命令を通常どおりに実行する。
次に、オペランドキャッシュミス/ヒット予想回路(図1e)は、該命令の命令アドレスを取得した(B2)後、取得した命令アドレスを履歴回路(図1c)に送る(B3)。
ここにおける、履歴回路(図1c)は、リード命令が実行された際のリード命令の命令アドレスを一定のアルゴリズム(例えば、ハッシュ関数)で変換した結果が示すエントリに、前記リード命令が実行された時にハイコストだったかローコストであったかの判定結果を1アクセスあるいは複数アクセス分記憶している履歴テーブルによって構成されており、記憶する履歴の数はアドレス別アクセス履歴の容量、エントリ数、マッピング法などによって決められる。
ここにおける、履歴回路(図1c)は、リード命令が実行された際のリード命令の命令アドレスを一定のアルゴリズム(例えば、ハッシュ関数)で変換した結果が示すエントリに、前記リード命令が実行された時にハイコストだったかローコストであったかの判定結果を1アクセスあるいは複数アクセス分記憶している履歴テーブルによって構成されており、記憶する履歴の数はアドレス別アクセス履歴の容量、エントリ数、マッピング法などによって決められる。
履歴回路(図1c)では、前記取得した命令アドレスから例えばハッシュ関数を用いたダイレクトマップ方式やnウェイセットアソシエィテブなどのメモリの局所性を利用した方式などによって該命令アドレスをエントリに変換することにより(B4)、該命令に対応する過去に同じ命令アドレスを変換したエントリに前記命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブル内における位置を特定し参照し(B5)、計算されたエントリのビット列をオペランドキャッシュミス/ヒット予想回路(図1e)に送る。
オペランドキャッシュミス/ヒット予想回路(図1e)では、履歴回路(図1c)から送られてきたエントリのビット列を読み込み(B6)、そのビット列によって該命令がハイコストな傾向にあるかローコストな傾向にあるかを判断する(B7)。ここで、ビット列がハイコストな傾向でない場合は、ローコストなリード命令と認識し、オペランドキャッシュヒットすると予想する事(B8)で、パイプライン(図1a)上の命令を通常どおりに実行する。一方で、ピット列がハイコストな傾向である場合は、オペランドキャッシュミスをするリード命令であると予想する。つまり、ここでは履歴回路(図1c)から該命令の命令アドレスに対応するアクセス履歴を読み込み、記憶されている過去の数アクセスにおいて該命令がハイコストであるかローコストであるかを判断する事でオペランドキャッシュミス/ヒットを予想している。
ここで、オペランドキャッシュミスを予想された該命令のオペランドキャッシュミス/ヒット予想精度の向上をはかる為に、さらに、グローバルカウンタ回路(図1d)のグローバルカウンタを用いる。
グローバルカウンタは、値を保持する記憶素子で構成されており、記憶される値は最大値と最小値を持っている。このグローバルカウンタでは、例えば、リード命令が実行された時に、ローコストな読み込みであった場合、グローバルカウンタの値を任意に設定した値だけを増やし、ハイコストな読み込みであった場合にグローバルカウンタの値を任意に設定した値だけを減らすと言うようなカウント値のアップダウンの手法をとる事で過去に実行されたリード命令を参考にパイプライン(図1a)上のリード命令にカウント値をつける事ができる。また、グローバルカウンタのカウンタ値は、リード命令が実行された時に、ローコストな読み込みであった場合、グローバルカウンタの値を任意に設定した値だけを減らし、ハイコストな読み込みであった場合にグローバルカウンタの値を任意に設定した値だけを増やすとしても良い。
オペランドキャッシュミス/ヒット予想回路(図1e)で、上記の履歴回路(図1c)でキャッシュミスをすると予想された該命令に対応するグローバルカウンタのカウント値の読み込みを行い(B9)、該命令がハイコストなカウント値であるか否かを判断する(B10)。もし、カウント値がグローバルカウンタで任意に設定したハイコストの基準値に至っていない場合は、ローコストなリード命令と認識し、オペランドキャッシュヒットすると予想する事(B11)で、パイプライン(図1a)上の命令を通常どおりに実行する。一方で、カウント値がハイコストな基準値に至っている場合は、ハイコストなリード命令と認識し、リード命令がオペランドキャッシュミスすると予想する(B12)。
次に、履歴回路(図1c)とグローバルカウンタ回路(図1d)の両方で該命令のオペランドキャッシュミスを予想された結果をもとに命令プレデコーダはスレッド制御回路(図1f)にスレッドの制御を行うように信号を送る(B13)。スレッド制御回路(図1f)では、送られてきた信号によって異なったスレッドを読み込む為の設定を行いスレッドの制御を行う(B14)。
このように、履歴回路(図1c)とグローバルカウンタ回路(図1d)を用いる事によってリード命令の読み込み先メモリアドレスの決定前に該命令がリード命令であった場合にオペランドキャッシュミス/ヒットする事を予想でき、該命令のオペランドキャッシュミスが予想された結果を利用しスレッドを制御する事でマルチスレッドプロセッサのリード命令の読み込み先メモリアドレスの決定前にキャッシュミスによって生じるパイプライン(図1a)のストールに対処する事ができる。
本発明における実施態様の一つとして、前記オペランドキャッシュミス/ヒット予想とオペランドキャッシュミス予想によるスレッドを制御する処理は1クロックで行われる事が望ましい。
本発明における実施態様の一つとして、パイプライン(図1a)上にリード命令判定回路(図1b)およびキャッシュミス/ヒット予想回路(図1c)を備える場合は、命令をパイプライン(図1a)に読み込んだ直後に実行されるステージが望ましい。また、パイプライン(図1a)に読み込まれた命令は予想回路による予想の対象とし、ハイコストな読み込みと予想された命令がある場合はスレッド制御回路(図1f)によって命令をパイプライン(図1a)に読み込むスレッドを変更するようにしても良い。
本発明における他の実施態様の一つとして、ある特定のレベルのキャッシュメモリに予想回路を備える場合は、前記キャッシュメモリにプロセッサに対する命令が読み込まれた場合に、読み込まれた命令をオペランドキャッシュミス/ヒット予想の対象として、ハイコストな読み込みであると予想された場合は、スレッド制御回路(図1f)によって読み込むスレッドを変更し、最も低いレベルのキャッシュにデータが存在しない場合は次に低いレベルのキャッシュへの読み込みを始めるようにしても良い。
本発明におけるさらなる実施態様の一つとして、履歴回路(図1c)、グローバルカウンタ回路(図1d)はリード命令を受けてメモリもしくはキャッシュメモリにアクセス要求を発行するステージであるメモリアクセスステージに備える事が望ましい。また、履歴回路(図1c)、グローバルカウンタ回路(図1d)はハードウェアで切り替えが可能なスレッド毎に備える事にしても良い。例えば、プロセッサにおいて、それぞれスレッド番号が付与されている各スレッドに履歴回路(図1c)およびグローバルカウンタ(図1d)を設けプロセッサによってスレッドを切り替える事としてもよい。
本発明における実施態様の一つとして、アクセス履歴内のテーブル数、過去何回のアクセス分までアクセス履歴として記録するかはプロセッサの設計および予想回路の結果の使用目的で変える事が可能である。
本発明における実施態様の一つとして、リード命令と判断されたパイプライン(図1a)上にある命令がハイコストな読み込みか否かの予想に用いるのであればアクセス履歴は過去8アクセス分を記憶するだけで十分である。また、より高い確率でハイコストな読み込みか否かの予想に用いるのであればアクセス履歴は更に多くのアクセス分を記憶する事が必要となる。本発明における実施態様の一つとしては、履歴回路(図1c)は32テーブル、過去12アクセス分のアクセス履歴を記憶する事が望ましい。
また、本発明における実施態様の一つとして、リード命令と判断されたパイプライン(図1a)上にある命令が履歴回路(図1c)における該命令の命令アドレスをハッシュ関数などで変換したエントリにキャッシュミス/ヒットを記憶している履歴テーブルを参照して、例えばある該命令のアクセス履歴の全てがハイコストな読み込みだった場合は、強いハイコストな読み込みであると予想し、該命令のアクセス履歴の過去数回のみがハイコストな読み込みであった場合は、弱いハイコストな読み込みであると予想とするようにハイコストな読み込みの予想のレベルを段階分けしても良い。
また、本発明における実施態様の一つとして、グローバルカウンタの最小値を0、最大値を15とし、リード命令が実行された時にローコストな読み込みであった場合に加算する値を1とし、ハイコストな読み込みであった場合に減算する値は2とする構成が望ましい。
次に、本発明における実施態様の一つとして、次回のリード命令に対してのオペランドキャッシュミス/ヒット予想の判断材料として反映させる為に、オペランドキャッシュミス/ヒット予想されて実行されたリード命令のオペランドキャッシュミス/ヒットの結果を履歴回路(図1c)における履歴テーブルへの書き込み、グローバルカウンタ回路(図1d)におけるグローバルカウンタへの書き込みを行うことでリード命令のキャッシュミス/ヒットの実行履歴を記憶するプロセスを示す(図1を参照)。
パイプライン(図1a)上でオペランドキャッシュミス/ヒットの予想されたリード命令が実行される事によって実際にオペランドキャッシュミスしたかオペランドキャッシュヒットしたかの実行結果が生じる。前記実行結果に基づいて、パイプライン(図1a)上のメモリアクセスステージにおいて前記実行されたリード命令に応じた命令アドレスをハッシュ関数などで変換したエントリと該実行結果を履歴回路(図1c)にある履歴テーブル内の対応しているエントリに書き込み、同様にリード命令に応じた該実行結果をグローバルカウンタ回路(図1d)のグローバルカウンタでカウントすることで次回のリード命令に対してのオペランドキャッシュミス/ヒット予想の判断材料として反映する。
現在、マルチスレッディング技術には粗粒度マルチスレッディングと細粒度マルチスレッディングとがある。そこで、本発明の方法を用いる事で従来法と比較して粗粒度および細粒度マルチスレッディングプロセッサにおけるオペランドキャッシュミスによるパイプラインのストールの大幅な解消をし、プロセッサの高速化を実現できる事を図4と図5で示す。
図4では、粗粒度マルチスレッディング機構においてオペランドキャッシュミスによってパイプラインがストールする時の本発明を用いてオペランドキャッシュミスが予想される事によるスレッド切り替えのスレッド制御方法と従来のスレッド切り替えのスレッド制御方法との比較を例示している。
図4の(A)では、本発明の方法および従来法ともにプロセッサにおけるキャッシュのパイプラインにおいて命令が進行してパイプライン処理が行われている様子が示されている。
図4の(B)では、命令が図4の(A)から複数クロック進んだ時のスレッド1における命令のオペランドキャッシュミス予想時の状態を示しており、本発明の方法ではパイプラインのリード命令の読み込み先メモリアドレスの決定前にスレッド1における命令のオペランドキャッシュミスが予想する事ができスレッド1からスレッド2へのスレッドの切り替えを実行する。一方で従来法では、パイプライン上を命令が進行してパイプライン処理が行われている様子が示されている。
図4の(C)では、スレッド1における命令のオペランドキャッシュミスを予想された図4の(B)後に命令が3クロック進んだパイプライン処理進行時の状態を示しており、本発明の方法ではパイプラインのストールが起こる前にスレッド1からスレッド2へのスレッドの切り替えを実行した為にオペランドキャッシュミスが起こると予想されるスレッド1の使用をやめている様子が示されている。一方で、従来法では、パイプライン上を命令が進行してパイプライン処理が行われている様子が示されている。
図4の(D)では、命令が図4の(C)から4クロック進んだスレッド1における命令のオペランドキャッシュミスによるパイプラインのストール時の状態を示しており、本発明の方法ではあらかじめ命令のスレッド1でのオペランドキャッシュミスを予想しスレッド1からスレッド2へスレッドを切り替えていた為にストール時にも命令実行が続けられる状態となっている。一方で、従来法では、スレッド1でパイプラインのストールが突然起こる為にスレッド1における命令実行が一時的に停止し、スレッド1からスレッド2への切り替えを行う。
図4の(E)では、命令が図4の(D)から3クロック進んだスレッド1における命令のオペランドキャッシュミスによるパイプラインのストール直後の状態を示しているが、本発明の方法ではあらかじめ命令のスレッド1のオペランドキャッシュミスを予想しスレッド1からスレッド2へスレッドを切り替えていた為にスレッド1のパイプラインのストール直後にも命令実行がスムーズに続けられパイプライン処理を実行している。一方で、従来法では、既にスレッド1でパイプラインのストールが起こっている為に命令実行が一時的に停止しており、スレッド切り替えた先のスレッド2の命令の進行は6クロック遅くなっている。
以上より、本発明のパイプラインのリード命令の読み込み先メモリアドレスの決定前でのキャッシュミス予想によるスレッド切り替えを用いる事で、粗粒度マルチスレッドプロセッサにおけるパイプラインのストールによる命令実行の遅れを大幅に解消する事ができると同時にプロセッサの高速化を可能にする事ができる。
図5では、細粒度マルチスレッディング機構においてオペランドキャッシュミスによってパイプラインがストールする時の本発明を用いてキャッシュミス予想される事によるスレッド切り替えのスレッド制御方法と従来のキャッシュミス予想によるスレッド切り替えのスレッド制御方法との比較を例示している。
図5の(A)では、本発明の方法および従来法ともにキャッシュのパイプラインにおいて命令が進行してパイプライン処理が行われている様子が示されている。
図5の(B)では、命令が図5(A)から複数クロック進んだ時にスレッド1における命令のオペランドキャッシュミス予想時の状態を示しており、本発明の方法ではパイプラインのリード命令の読み込み先メモリアドレスの決定前にスレッド1における命令のキャッシュミスを予想する事ができ、スレッド1におけるパイプラインのストールが起こる前にスレッドの切り替えを実行し、オペランドキャッシュミスが起こると予想されるスレッド1の使用をやめる。一方で従来法では、パイプライン上を命令が進行してパイプライン処理が行われている様子が示されている。
図5の(B)では、命令が図5(A)から複数クロック進んだ時にスレッド1における命令のオペランドキャッシュミス予想時の状態を示しており、本発明の方法ではパイプラインのリード命令の読み込み先メモリアドレスの決定前にスレッド1における命令のキャッシュミスを予想する事ができ、スレッド1におけるパイプラインのストールが起こる前にスレッドの切り替えを実行し、オペランドキャッシュミスが起こると予想されるスレッド1の使用をやめる。一方で従来法では、パイプライン上を命令が進行してパイプライン処理が行われている様子が示されている。
図5の(C)では、命令が図5の(B)から4クロック進んだスレッド1における命令のオペランドキャッシュミスを予想された後のパイプライン処理進行時の状態を示しており、本発明の方法ではスレッド1におけるパイプラインのストールが起こる前にスレッドの切り替えの制御を実行し、オペランドキャッシュミスが起こると予想されるスレッド1にスレッドが切り替わらないようにスレッド1の使用をやめて、スレッド2の命令実行を調整している。一方で、従来法では、パイプライン上を命令が進行してパイプライン処理が行われている様子が示されている。
図5の(D)では、命令が図5の(C)から2クロック進んだスレッド1における命令のオペランドキャッシュミスによるパイプラインのストール時の状態を示しており、本発明の方法ではあらかじめスレッド1における命令のオペランドキャッシュミスを予想しスレッドを切り替えの制御をしてスレッド1を使用しないようにしていた為にスレッド1のパイプラインのストール時にも命令実行が続けられる状態となっている。一方で、従来法では、スレッド1でパイプラインのストールが突然起こる為にスレッド1で命令実行が一時的に停止しており、スレッド切り替えの制御を行うことでスレッド1の使用をやめ、スレッド2の命令実行の調整を行う。
図5の(E)では、命令が図5の(D)から4クロック進んだスレッド1における命令のオペランドキャッシュミスによるパイプラインのストール直後の状態を示しているが、本発明の方法ではあらかじめスレッド1での命令のオペランドキャッシュミスを予想しスレッド切り替えの制御をしてスレッド1の使用をやめていた為にスレッド1でのパイプラインのストール直後にも命令実行がスムーズに続けられパイプライン処理が進行している。一方で、従来法では、既にスレッド1でパイプラインのストールが起こっている為に命令実行が一時的に停止している命令がいくつかあり、パイプライン処理は進行しているもののスレッド切り替えの制御をしたスレッド2で命令実行を調整された命令が到達するまで命令実行数は本発明に比べて少なくなっている。
以上より、本発明のパイプラインのリード命令の読み込み先メモリアドレスの決定前のオペランドキャッシュミス予想によるスレッド切り替えの制御を用いる事で細粒度マルチスレッドプロセッサにおけるパイプラインのストールによる命令実行の遅れを大幅に解消する事ができると同時にプロセッサの高速化を可能にする事ができる。
本実施例では、履歴テーブルとグローバルカウンタを用いてプロセッサのパイプラインのリード命令の読み込み先メモリアドレスの決定前のデコード段階でリード命令のメモリアクセスのオペランドキャッシュミス/ヒット予想を行うことで、予想精度およびオペランドキャッシュミスが起こっている全体に対してなされるオペランドキャッシュミス予想の割合、実用性を有する良い設定を求める事とする。
ここでのオペランドキャッシュミス/ヒットは、L1データキャッシュにアクセスする際に最小限必要なレイテンシでアクセスできない場合、つまりレイテンシが長く他の動作の遅いメモリからデータを読み込む必要があるとされる時はオペランドキャッシュミス、最小限必要なレイテンシでアクセスできる場合、つまりレイテンシが短くL1データキャッシュからデータ読み込みができる時はオペランドキャッシュヒットと定義した。評価には履歴テーブル機能、及びグローバルカウンタ機能を追加したSimpleScalar-3.0dを用いた。そして、デコード時に履歴テーブルに対応するエントリの値およびカウンタ値を記憶し、オペランドキャッシュヒット時にはエントリ値およびカウンタ値で個々にオペランドキャッシュヒット数を記憶する配列の値を増加させ、一方でオペランドキャッシュミス時にはエントリ値およびグローバルカウンタ値で個々にオペランドキャッシュミス数を記憶する配列の値を減少させた。
ベンチマークプログラムとしてMIBenchを用い、AES、basicmath、bf、bitcnts、crc、fft、gs、gsm、ispell、jpeg、lame、qsort、raw、search、sha、susan、tiffの計17種類のプログラムを使用し、入力ファイル、使用する機能の違いなど56パターンで評価を行った。履歴テーブルは過去Mアクセスまで記憶し、エントリ数をNとすると(M,N)=(3,128)、(6,64)、(12,32)の3通り(表1におけるTable Entry)で評価を行った。グローバルカウンタはビット幅A、オペランドキャッシュヒット時にB増加するとし、オペランドキャッシュミス時にC減少するとして、(A,B,C)=(2,1,1)、(4,1,2)の2通り、およびグローバルカウンタ機能を使用しないnoneの計3通り(表1におけるCounter Type)で評価した。ここで採用した(2,1,1)は標準的な分岐予想に使用される値であり、(4,1,2)は従来のスケジューリング段階でオペランドキャッシュミス/ヒット予想する時に使用された値を参考に決定した。
評価項目として、オペランドキャッシュヒット予想したオペランドキャッシュヒットの正解率PHAH-Ratio、およびオペランドキャッシュミス予想したオペランドキャッシュミスの正解率PMAM-Ratio、全オペランドキャッシュミスに対するオペランドキャッシュミスの割合PMAM/AllM-Ratio、全体の予想正解率All-Ratioを設けた。
以下に、オペランドキャッシュミス/ヒット予想の評価を行った結果を表1で示す。
MIBenchプログラムの全てのリード命令のオペランドキャッシュミスリード割合は1.6%となった(不表示)。
表1においてMIBenchプログラムを使用し、履歴テーブルのエントリ数(Table Entry)別のオペランドキャッシュヒット予想したオペランドキャッシュヒット正解率PHAH-Ratioは32=64=128であり、オペランドキャッシュミス予想したオペランドキャッシュミス正答率PMAM-Ratioは32>68>128でいずれも予想精度は94.0%を超しており予想精度は高精度である事が示されている。一方で全オペランドキャッシュミスに対するオペランドキャッシュミスの割合PMAM/All-Ratio、全体の予想正解率All-Ratioは128>68>32であり、履歴テーブルのエントリ数を増やす事によって全体として起こるオペランドキャッシュミスに対して予想するオペランドキャッシュミスの数を増やせる事が示されている。
表1においてMIBenchプログラムを使用し、履歴テーブルのエントリ数(Table Entry)別のオペランドキャッシュヒット予想したオペランドキャッシュヒット正解率PHAH-Ratioは32=64=128であり、オペランドキャッシュミス予想したオペランドキャッシュミス正答率PMAM-Ratioは32>68>128でいずれも予想精度は94.0%を超しており予想精度は高精度である事が示されている。一方で全オペランドキャッシュミスに対するオペランドキャッシュミスの割合PMAM/All-Ratio、全体の予想正解率All-Ratioは128>68>32であり、履歴テーブルのエントリ数を増やす事によって全体として起こるオペランドキャッシュミスに対して予想するオペランドキャッシュミスの数を増やせる事が示されている。
表1においてカウンタタイプ(Counter Type)別のオペランドキャッシュヒット予想したオペランドキャッシュヒット正解率PHAH-Ratioおよびオペランドキャッシュミス予想したオペランドキャッシュミス正解率PMAM-Ratioは(4,1,2)>(2,1,1)>noneの結果となりいずれも94.0%を超しており高精度なオペランドキャッシュミス/ヒット予想を行える事が示されている。また、表1において、全オペランドキャッシュミスに対するオペランドキャッシュミスの割合PMAM/AllM-Ratio はnone>(4,1,2)>>>(2,1,1)、全体の予想正解率All-Ratioはnone>(4,1,2)>(2,1,1)であり(2,1,1)の実用性はほとんどない。つまり、標準的な分岐予想で使用される値を本発明の方法で適用しても全体として起こっているオペランドキャッシュミスに対して予想されるオペランドキャッシュミスは少数であり、予想精度は98.8%と良いものの実用性に欠けていることが示されている。逆にnoneと(4,2,1)の場合では全体として起こっているオペランドキャッシュミスに対して半分くらいオペランドキャッシュミスを予想する事ができている。
表1から、実用性を有する良い設定は、オペランドキャッシュミス予想したオペランドキャッシュミス正解率PMAM-Ratioを重視するならば履歴テーブルのエントリ数を32、カウンタ設定を(4,1,2)とする事が良い。全オペランドキャッシュミスに対するオペランドキャッシュミスの割合PMAM/All-Ratio、全体の予想正解率All-Ratioを重視するならば履歴テーブルのエントリ数を128、カウンタを使用しないとする。
また、SimpleScalar-3.0dを改造したものを使用し、MIBenchによる評価を行う事でオペランドキャッシュミスと予想したリード命令の99.5%がオペランドキャッシュミスをした(不表示)。
以上より、デコード段階におけるリード命令によるメモリアクセスのオペランドキャッシュミス/ヒットを高精度で予想できる事が確かめられた。
また、本発明を用いた結果は、従来のパイプラインのスケジュール段階で同様のグローバルカウンタを用いてオペランドキャッシュミス/ヒット予想したAlpha21264の予想精度の97%と同程度の精度で予想する事が可能となった。
また、本発明を用いた結果は、従来のパイプラインのスケジュール段階で同様のグローバルカウンタを用いてオペランドキャッシュミス/ヒット予想したAlpha21264の予想精度の97%と同程度の精度で予想する事が可能となった。
本実施例において、パイプラインのデコード段階で高精度のオペランドキャッシュミス予想が得られ、予想結果に基づいてスレッドの切り替えを行う事で従来のスケジュール段階よりも早い段階でスレッドが切り替わる事によってパイプラインのストールを解消する事が可能となる。
(付記1)
マルチスレッドプロセッサにおけるメモリ読み込み命令のオペランドキャッシュミス/ヒット予想方法において、
命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、
前記判定結果が前記メモリ読み込み命令であったときに該メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とするオペランドキャッシュミス/ヒット予想方法。
(付記2)
前記マルチスレッドプロセッサは、前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを備え、
該履歴テーブルの前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項1記載のオペランドキャッシュミス/ヒット予想方法。
(付記3)
前記マルチスレッドプロセッサは、メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに備え、
前記履歴テーブルに記憶された前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項2記載のオペランドキャッシュミス/ヒット予想方法。
(付記4)
マルチスレッドプロセッサにおけるスレッド制御方法において
メモリ読み込み命令のオペランドキャッシュミス/ヒット予想手段を備え、
命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、
前記命令パイプラインに投入されているスレッドの命令の種別が前記メモリ読み込み命令であったとき、前記オペランドキャッシュミス/ヒット予想手段により前記メモリ読み込み命令のオペランドキャッシュミス/ヒットを予想し、
オペランドキャッシュミスが予想されたときにスレッドの制御をする
ことを特徴とするスレッド制御方法。
(付記5)
マルチスレッドプロセッサにおいて、
命令プレデコーダとスレッド制御回路およびメモリ読み込み命令のオペランドキャッシュミス/ヒット予想手段を備え、
前記命令プレデコーダは命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、前記スレッド制御回路に信号を通知し、
前記スレッド制御回路は、前記命令プレデコーダから通知された命令の種別が前記メモリ読み込み命令のとき、前記オペランドキャッシュミス/ヒット予想手段により前記メモリ読み込み命令のオペランドキャッシュミス/ヒットを予想し、
オペランドキャッシュミスが予想されるときに、前記スレッド制御回路にスレッドの制御をするイベントが発生したことを通知する、
ことを特徴とするマルチスレッドプロセッサ。
(付記6)
前記オペランドキャッシュミス/ヒット予想手段は前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを含み、
該履歴テーブルの前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測し、
オペランドキャッシュミスが予想されたときにスレッドの制御をする、
ことを特徴とする請求項4記載のスレッド制御方法。
(付記7)
前記オペランドキャッシュミス/ヒット予想手段はメモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに含み、
前記履歴テーブルに記憶された前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測し、
オペランドキャッシュミスが予想されたときにスレッドの制御をする、
ことを特徴とする請求項6記載のスレッド制御方法。
(付記8)
前記オペランドキャッシュミス/ヒット予想手段は、前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを含み、
該履歴テーブルの前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項5記載のマルチスレッドプロセッサ。
(付記9)
前記オペランドキャッシュミス/ヒット予想手段はメモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに含み、
前記履歴テーブルに記憶された前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項8記載のマルチスレッドプロセッサ。
(付記10)
前記マルチプロセッサが粗粒度マルチスレッディング機構あるいは細粒度マルチスレッディング機構を有する、
ことを特徴とする請求項9記載のマルチスレッドプロセッサ。
(付記11)
前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブル、およびメモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをハードウェアで切り替えが可能なスレッド毎に備える
ことを特徴とする、請求項10記載のマルチスレッドプロセッサ
(付記1)
マルチスレッドプロセッサにおけるメモリ読み込み命令のオペランドキャッシュミス/ヒット予想方法において、
命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、
前記判定結果が前記メモリ読み込み命令であったときに該メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とするオペランドキャッシュミス/ヒット予想方法。
(付記2)
前記マルチスレッドプロセッサは、前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを備え、
該履歴テーブルの前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項1記載のオペランドキャッシュミス/ヒット予想方法。
(付記3)
前記マルチスレッドプロセッサは、メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに備え、
前記履歴テーブルに記憶された前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項2記載のオペランドキャッシュミス/ヒット予想方法。
(付記4)
マルチスレッドプロセッサにおけるスレッド制御方法において
メモリ読み込み命令のオペランドキャッシュミス/ヒット予想手段を備え、
命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、
前記命令パイプラインに投入されているスレッドの命令の種別が前記メモリ読み込み命令であったとき、前記オペランドキャッシュミス/ヒット予想手段により前記メモリ読み込み命令のオペランドキャッシュミス/ヒットを予想し、
オペランドキャッシュミスが予想されたときにスレッドの制御をする
ことを特徴とするスレッド制御方法。
(付記5)
マルチスレッドプロセッサにおいて、
命令プレデコーダとスレッド制御回路およびメモリ読み込み命令のオペランドキャッシュミス/ヒット予想手段を備え、
前記命令プレデコーダは命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、前記スレッド制御回路に信号を通知し、
前記スレッド制御回路は、前記命令プレデコーダから通知された命令の種別が前記メモリ読み込み命令のとき、前記オペランドキャッシュミス/ヒット予想手段により前記メモリ読み込み命令のオペランドキャッシュミス/ヒットを予想し、
オペランドキャッシュミスが予想されるときに、前記スレッド制御回路にスレッドの制御をするイベントが発生したことを通知する、
ことを特徴とするマルチスレッドプロセッサ。
(付記6)
前記オペランドキャッシュミス/ヒット予想手段は前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを含み、
該履歴テーブルの前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測し、
オペランドキャッシュミスが予想されたときにスレッドの制御をする、
ことを特徴とする請求項4記載のスレッド制御方法。
(付記7)
前記オペランドキャッシュミス/ヒット予想手段はメモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに含み、
前記履歴テーブルに記憶された前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測し、
オペランドキャッシュミスが予想されたときにスレッドの制御をする、
ことを特徴とする請求項6記載のスレッド制御方法。
(付記8)
前記オペランドキャッシュミス/ヒット予想手段は、前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを含み、
該履歴テーブルの前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項5記載のマルチスレッドプロセッサ。
(付記9)
前記オペランドキャッシュミス/ヒット予想手段はメモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに含み、
前記履歴テーブルに記憶された前記メモリ読み込み命令のメモリ上のアドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項8記載のマルチスレッドプロセッサ。
(付記10)
前記マルチプロセッサが粗粒度マルチスレッディング機構あるいは細粒度マルチスレッディング機構を有する、
ことを特徴とする請求項9記載のマルチスレッドプロセッサ。
(付記11)
前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブル、およびメモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをハードウェアで切り替えが可能なスレッド毎に備える
ことを特徴とする、請求項10記載のマルチスレッドプロセッサ
Claims (5)
- マルチスレッドプロセッサにおけるメモリ読み込み命令のオペランドキャッシュミス/ヒット予想方法において、
命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、
前記判定結果が前記メモリ読み込み命令であったときに該メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とするオペランドキャッシュミス/ヒット予想方法。 - 前記マルチスレッドプロセッサは、前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに前記メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットの履歴を記憶した履歴テーブルを備え、
該履歴テーブルの前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴に基づいて前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項1記載のオペランドキャッシュミス/ヒット予想方法。 - 前記マルチスレッドプロセッサは、メモリ読み込み命令の実行時のオペランドキャッシュミス/ヒットによりカウント値がアップダウンするグローバルカウンタをさらに備え、
前記履歴テーブルに記憶された前記メモリ読み込み命令のメモリ上の命令アドレスを変換したエントリに記憶されたオペランドキャッシュミス/ヒットの履歴と前記グローバルカウンタの値に基づいて、前記メモリ読み込み命令実行時のオペランドキャッシュミス/ヒットを予測する、
ことを特徴とする請求項2記載のオペランドキャッシュミス/ヒット予想方法。 - マルチスレッドプロセッサにおけるスレッド制御方法において
メモリ読み込み命令のオペランドキャッシュミス/ヒット予想手段を備え、
命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、
前記命令パイプラインに投入されているスレッドの命令の種別が前記メモリ読み込み命令であったとき、前記オペランドキャッシュミス/ヒット予想手段により前記メモリ読み込み命令のオペランドキャッシュミス/ヒットを予想し、
オペランドキャッシュミスが予想されたときにスレッドの制御をする
ことを特徴とするスレッド制御方法。 - マルチスレッドプロセッサにおいて、
命令プレデコーダとスレッド制御回路およびメモリ読み込み命令のオペランドキャッシュミス/ヒット予想手段を備え、
前記命令プレデコーダは命令パイプラインにおけるリード命令の読み込み先メモリアドレスの決定前において、メモリからの読み込み時の命令あるいは該命令パイプラインに投入されているスレッドの命令の種別を判定し、前記スレッド制御回路に信号を通知し、
前記スレッド制御回路は、前記命令プレデコーダから通知された命令の種別が前記メモリ読み込み命令のとき、前記オペランドキャッシュミス/ヒット予想手段により前記メモリ読み込み命令のオペランドキャッシュミス/ヒットを予想し、
オペランドキャッシュミスが予想されるときに、前記スレッド制御回路にスレッドの制御をするイベントが発生したことを通知する、
ことを特徴とするマルチスレッドプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006182742A JP2008015562A (ja) | 2006-06-30 | 2006-06-30 | キャッシュミス/ヒット予想 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006182742A JP2008015562A (ja) | 2006-06-30 | 2006-06-30 | キャッシュミス/ヒット予想 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008015562A true JP2008015562A (ja) | 2008-01-24 |
Family
ID=39072544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006182742A Withdrawn JP2008015562A (ja) | 2006-06-30 | 2006-06-30 | キャッシュミス/ヒット予想 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008015562A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010503070A (ja) * | 2006-08-29 | 2010-01-28 | クゥアルコム・インコーポレイテッド | 従属命令スレッドスケジューリング |
JP2014106736A (ja) * | 2012-11-27 | 2014-06-09 | Canon Inc | 情報処理装置及びその制御方法 |
CN110968349A (zh) * | 2019-12-06 | 2020-04-07 | 海光信息技术有限公司 | 一种抵御投机执行侧信道攻击的处理器缓存技术方案 |
JP2022538371A (ja) * | 2019-09-11 | 2022-09-01 | レッドパイン シグナルズ インコーポレイティド | スレッド粒度を提供するマルチスレッドプロセッサ |
-
2006
- 2006-06-30 JP JP2006182742A patent/JP2008015562A/ja not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010503070A (ja) * | 2006-08-29 | 2010-01-28 | クゥアルコム・インコーポレイテッド | 従属命令スレッドスケジューリング |
US8291431B2 (en) | 2006-08-29 | 2012-10-16 | Qualcomm Incorporated | Dependent instruction thread scheduling |
JP2014106736A (ja) * | 2012-11-27 | 2014-06-09 | Canon Inc | 情報処理装置及びその制御方法 |
JP2022538371A (ja) * | 2019-09-11 | 2022-09-01 | レッドパイン シグナルズ インコーポレイティド | スレッド粒度を提供するマルチスレッドプロセッサ |
JP7194315B2 (ja) | 2019-09-11 | 2022-12-21 | レッドパイン シグナルズ インコーポレイティド | スレッド粒度を提供するマルチスレッドプロセッサ |
CN110968349A (zh) * | 2019-12-06 | 2020-04-07 | 海光信息技术有限公司 | 一种抵御投机执行侧信道攻击的处理器缓存技术方案 |
CN110968349B (zh) * | 2019-12-06 | 2023-07-28 | 海光信息技术股份有限公司 | 一种抵御投机执行侧信道攻击的处理器缓存技术方案 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5089186B2 (ja) | データ・キャッシュ・ミス予測およびスケジューリング | |
US7676656B2 (en) | Minimizing unscheduled D-cache miss pipeline stalls in a cascaded delayed execution pipeline | |
JP5137948B2 (ja) | ローカル及びグローバル分岐予測情報の格納 | |
US8140768B2 (en) | Jump starting prefetch streams across page boundaries | |
US8812822B2 (en) | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss | |
TWI574155B (zh) | 資料預取方法、電腦程式產品以及微處理器 | |
JP7149405B2 (ja) | 複数のテーブルの分岐ターゲットバッファ | |
US7856548B1 (en) | Prediction of data values read from memory by a microprocessor using a dynamic confidence threshold | |
KR20120070584A (ko) | 데이터 스트림에 대한 저장 인식 프리페치 | |
JP2009540411A (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
US11579884B2 (en) | Instruction address translation and caching for primary and alternate branch prediction paths | |
US20180173535A1 (en) | Determining a predicted behaviour for processing of instructions | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
EP4020167A1 (en) | Accessing a branch target buffer based on branch instruction information | |
JP2008015562A (ja) | キャッシュミス/ヒット予想 | |
JP2007272280A (ja) | データ処理装置 | |
US12019553B2 (en) | System, apparatus and method for prefetching physical pages in a processor | |
EP4020187A1 (en) | Segmented branch target buffer based on branch instruction type | |
JP2008015668A (ja) | タスク管理装置 | |
US20070239939A1 (en) | Apparatus for Performing Stream Prefetch within a Multiprocessor System | |
WO2002069150A1 (fr) | Microprocesseur et procede de distribution d'ordres d'execution d'instructions | |
JP2004127031A (ja) | メモリ切り替え回路 | |
JP2006048258A (ja) | データプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080530 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080519 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080701 |