図面 (/)

技術 補助プロセッサを用いて一次プロセッサ用の命令をプリフェッチする方法および装置

出願人 オラクル・アメリカ・インコーポレイテッド
発明者 ショードリー,シャイレンダートレンブレイ,マーク
出願日 2001年8月30日 (20年5ヶ月経過) 出願番号 2002-524815
公開日 2004年6月10日 (17年8ヶ月経過) 公開番号 2004-517383
状態 特許登録済
技術分野 階層構造のメモリシステム 先行制御 特別なプログラム実行装置
主要キーワード 方向セット 縮小プロセス 一次プロセッサ 縮小モジュール 呼び出し履歴 決定論 コンピュータ性能 呼び出しアドレス
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2004年6月10日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (9)

課題・解決手段

本発明は、一次プロセッサより前に、補助プロセッサを用いてプリフェッチを行うシステムを提供する。このシステムは、一次プロセッサ上で実行可能コードを実行し、補助プロセッサ上で実行可能コードの縮小バージョンを同時に実行することによって動作する。実行可能コードの縮小バージョンが、実行可能コードよりも速く行われ、一次プロセッサセッサが命令を必要とするときより前に一次プロセッサ用のプリフェッチ動作を行う。また、このシステムは、プリフェッチされた命令をメインメモリから取り出す必要なしに、一次プロセッサが、プリフェッチされた命令にアクセスできるように、プリフェッチされた命令を一次プロセッサによってアクセス可能であるキャッシュに格納する。

概要

背景

概要

本発明は、一次プロセッサより前に、補助プロセッサを用いてプリフェッチを行うシステムを提供する。このシステムは、一次プロセッサ上で実行可能コードを実行し、補助プロセッサ上で実行可能コードの縮小バージョンを同時に実行することによって動作する。実行可能コードの縮小バージョンが、実行可能コードよりも速く行われ、一次プロセッサセッサが命令を必要とするときより前に一次プロセッサ用のプリフェッチ動作を行う。また、このシステムは、プリフェッチされた命令をメインメモリから取り出す必要なしに、一次プロセッサが、プリフェッチされた命令にアクセスできるように、プリフェッチされた命令を一次プロセッサによってアクセス可能であるキャッシュに格納する。

目的

本発明の一実施形態は、一次プロセッサより前に、補助プロセッサを用いて命令をプリフェッチしてプリフェッチ動作を行うシステムを提供する

効果

実績

技術文献被引用数
1件
牽制数
1件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

一次プロセッサの前に、補助プロセッサを用いてプリフェッチ動作を行うことによって命令プリフェッチする方法であって、該一次プロセッサ上で実行可能コードを実行する工程と、該補助プロセッサ上で該実行可能コードの縮小バージョンを同時に実行する工程であって、該実行可能コードの該縮小バージョンが、該実行可能コードよりも速く行われ、該一次プロセッサセッサが命令を必要とするときより前に該一次プロセッサ用のプリフェッチ動作を行う、工程と、該プリフェッチされた命令をメインメモリから取り出す必要なしに、該一次プロセッサが、該プリフェッチされた命令にアクセスできるように、該プリフェッチされた命令を該一次プロセッサによってアクセス可能であるキャッシュに格納する工程とを包含する、方法。

請求項2

前記実行可能コードを実行する前に、前記一次プロセッサについて、ソースコードを実行可能コードにコンパイルする工程と、該実行可能コードをプロファイルして、該実行可能コードの頻繁に参照される部分について命令のトレースを作成する工程と、前記一次プロセッサによってアクセス可能であるキャッシュに命令トレースの一部分をプリフェッチするようにプリフェッチ命令を生成することによって、前記補助プロセッサについて、該実行可能コードの縮小バージョンを生成する工程と、通信命令を、前記一次プロセッサについて、前記実行可能コードに挿入し、該補助プロセッサについて、前記実行可能コードの縮小バージョンに挿入して、該一次プロセッサから該補助プロセッサに進行情報転送する工程とをさらに含み、該進行情報は、該補助プロセッサが前記プリフェッチ動作を行うようにトリガする、請求項1に記載の方法。

請求項3

前記ソースコードをコンパイルするプロセス、および前記実行可能コードの縮小バージョンを生成するプロセスは、コンパイラによって行われる、請求項2に記載の方法。

請求項4

前記補助プロセッサが誤った経路に沿って命令をプリフェッチしたことを前記進行情報が該補助プロセッサに示す場合に、前記実行可能コードの縮小バージョンは、該補助プロセッサがプリフェッチを中断するようにさせる、請求項2に記載の方法。

請求項5

前記実行可能コードの縮小バージョンが、制御フロー履歴情報を、分岐履歴情報および呼び出し履歴情報を記録する専用ハードウェアから読み出し、該制御フロー履歴情報に基づいて、該実行可能コードを通じて予測された経路を構成し、前記一次プロセッサ用の命令をプリフェッチするために、予測された経路に沿ってプリフェッチ動作を行うように設定されている、請求項1に記載の方法。

請求項6

前記実行可能コードの縮小バージョンを生成する工程が、前記実行可能コードについて、制御フローグラフを構成する工程と、該制御フローグラフからループを取り除く工程と、該制御フローグラフと関係がない実行可能コード命令を取り除く工程と、前記プリフェッチ命令を、該実行可能コードの縮小バージョンに挿入して、前記一次プロセッサ用の該実行可能コードから命令をプリフェッチする工程とを含む、請求項1に記載の方法。

請求項7

前記プリフェッチ動作を行う工程が、前記一次プロセッサ用の複数の命令を含むキャッシュブロックをプリフェッチする工程を含む、請求項1に記載の方法。

請求項8

前記進行情報を、一方向通信チャネルを介して、前記一次プロセッサから前記補助プロセッサに周期的に送る工程をさらに含む、請求項1に記載の方法。

請求項9

コンピュータによって実行されるときに、該コンピュータが一次プロセッサの前に、補助プロセッサを用いてプリフェッチ動作を行うことによって命令をプリフェッチする方法を行うようにさせる命令を格納するコンピュータ読み出し可格納媒体であって、該方法は、該一次プロセッサ上で実行可能コードを実行する工程と、該補助プロセッサ上で該実行可能コードの縮小バージョンを同時に実行する工程であって、該実行可能コードの該縮小バージョンが、該実行可能コードよりも速く行われ、該一次プロセッサセッサが命令を必要とするときより前に該一次プロセッサ用のプリフェッチ動作を行う、工程と、該プリフェッチされた命令をメインメモリから取り出す必要なしに、該一次プロセッサが該プリフェッチされた命令にアクセスできるように、該プリフェッチされた命令を該一次プロセッサによってアクセス可能であるキャッシュに格納する工程とを包含する、コンピュータ読み出し可能格納媒体。

請求項10

前記方法は、前記実行可能コードを実行する工程の前に、前記一次プロセッサについて、ソースコードを実行可能コードにコンパイルする工程と、該実行可能コードをプロファイルして、該実行可能コードの頻繁に参照される部分について命令のトレースを作成する工程と、前記一次プロセッサによってアクセス可能であるキャッシュに命令トレースの一部分をプリフェッチするようにプリフェッチ命令を生成することによって、前記補助プロセッサについて、該実行可能コードの縮小バージョンを生成する工程と、通信命令を、前記一次プロセッサについて、前記実行可能コードに挿入し、該補助プロセッサについて、前記実行可能コードの縮小バージョンに挿入して、該一次プロセッサから該補助プロセッサに進行情報を転送する工程とをさらに含み、該進行情報は、該補助プロセッサが前記プリフェッチ動作を行うようにトリガする、請求項9に記載のコンピュータ読み出し可能格納媒体。

請求項11

前記ソースコードをコンパイルするプロセス、および前記実行可能コードの縮小バージョンを生成するプロセスは、コンパイラによって行われる、請求項10に記載のコンピュータ読み出し可能格納媒体。

請求項12

前記補助プロセッサが誤った経路に沿って命令をプリフェッチしたことを前記進行情報が該補助プロセッサに示す場合、前記実行可能コードの縮小バージョンは、該補助プロセッサがプリフェッチを中断するようにさせる、請求項10に記載のコンピュータ読み出し可能格納媒体。

請求項13

前記実行可能コードの縮小バージョンが、制御フロー履歴情報を、分岐履歴情報および呼び出し履歴情報を記録する専用ハードウェアから読み出し、該制御フロー履歴情報に基づいて、該実行可能コードを通じて予測された経路を構成し、前記一次プロセッサ用の命令をプリフェッチするために、予測された経路に沿ってプリフェッチ動作を行うように設定されている、請求項9に記載のコンピュータ読み出し可能格納媒体。

請求項14

前記実行可能コードの縮小バージョンを生成する工程は、前記実行可能コードについて、制御フローグラフを構成する工程と、該制御フローグラフからループを取り除く工程と、該制御フローグラフと関係がない実行可能コード命令を取り除く工程と、前記プリフェッチ命令を、該実行可能コードの縮小バージョンに挿入して、前記一次プロセッサ用の該実行可能コードから命令をプリフェッチする工程とを含む、請求項9に記載のコンピュータ読み出し可能格納媒体。

請求項15

前記プリフェッチ動作を行う工程が、前記一次プロセッサ用の複数の命令を含むキャッシュブロックをプリフェッチする工程を含む、請求項9に記載のコンピュータ読み出し可能格納媒体。

請求項16

前記進行情報を、一方向通信チャネルを介して、前記一次プロセッサから前記補助プロセッサに周期的に送る工程をさらに含む、請求項9に記載のコンピュータ読み出し可能格納媒体。

請求項17

メモリからのプリフェッチを容易にする装置であって、実行可能コードを実行するように設定された一次プロセッサと、該実行可能コードの縮小バージョンを同時に実行するように設定された補助プロセッサであって、該実行可能コードの該縮小バージョンが、該実行可能コードよりも速く行われ、該一次プロセッサセッサが命令を必要とするときより前に該一次プロセッサ用のプリフェッチ動作を行う、補助プロセッサと、該一次プロセッサによってアクセス可能であり、該プリフェッチされた命令をメインメモリから取り出す必要なしに、該一次プロセッサが該プリフェッチされた命令にアクセスできるように、該プリフェッチされた命令を格納するように設定されている、キャッシュとを含む、装置。

請求項18

前記一次プロセッサについて、ソースコードを実行可能コードにコンパイルし、該実行可能コードをプロファイルして、該実行可能コードの頻繁に参照される部分について命令のトレースを作成し、前記一次プロセッサによってアクセス可能であるキャッシュに命令トレースの一部分をプリフェッチするようにプリフェッチ命令を生成することによって、前記補助プロセッサについて、該実行可能コードの縮小バージョンを生成し、通信命令を、前記一次プロセッサについて、前記実行可能コードに挿入し、該補助プロセッサについて、前記実行可能コードの縮小バージョンに挿入して、該一次プロセッサから該補助プロセッサに進行情報を転送するように設定されたコンパイルメカニズムをさらに含み、該進行情報は、該補助プロセッサが前記プリフェッチ動作を行うようにトリガする、請求項17に記載の装置。

請求項19

前記補助プロセッサが誤った経路に沿って命令をプリフェッチしたことを前記進行情報が該補助プロセッサに示す場合に、前記実行可能コードの縮小バージョンは、該補助プロセッサがプリフェッチを中断するようにさせる、請求項18に記載の装置。

請求項20

前記実行可能コードについて、分岐履歴情報および呼び出し履歴情報を記録する専用ハードウェアをさらに含む装置であって、前記実行可能コードの縮小バージョンが、制御フロー履歴情報を、分岐履歴情報および呼び出し履歴情報を記録する専用ハードウェアから読み出し、該制御フロー履歴情報に基づいて、該実行可能コードを通じて予測された経路を構成し、前記一次プロセッサ用の命令をプリフェッチするために、予測された経路に沿ってプリフェッチ動作を行うように設定されている、請求項17に記載の装置。

請求項21

前記実行可能コードの縮小バージョンの生成において、前記コンパイルメカニズムが、前記実行可能コードについて、制御フローグラフを構成し、該制御フローグラフからループを取り除き、該制御フローグラフと関係がない実行可能コード命令を取り除き、前記プリフェッチ命令を、該実行可能コードの縮小バージョンに挿入して、前記一次プロセッサ用の該実行可能コードから命令をプリフェッチするように設定されている、請求項17に記載の装置。

請求項22

前記プリフェッチ動作が、前記一次プロセッサ用の複数の命令を含むキャッシュブロックをプリフェッチするように設定されている、請求項17に記載の装置。

請求項23

前記一次プロセッサおよび前記補助プロセッサが、同じ半導体チップ上にある、請求項17に記載の装置。

請求項24

前記一次プロセッサおよび前記補助プロセッサが、別の半導体チップ上にある、請求項17に記載の装置。

請求項25

前記補助プロセッサが、前記一次プロセッサの、メモリアクセス動作に関係ないハードウェアを有さない簡略的なバージョンである、請求項17に記載の装置。

--

0001

背景
(発明の分野)
本発明は、コンピュータシステム性能を向上させる技術に関する。より具体的には、本発明は、一次プロセッサの前に、補助プロセッサを用いて、プリフェッチ操作を行うことによって、命令メモリからプリフェッチする方法および装置に関する。

0002

(関連技術)
半導体集積密度が高められることによって、マイクロプロセッサチップにより多くのトランジスタ集積することが可能になり、コンピュータ設計者は、コンピュータシステム性能を高めるために、これらのトランジスタを用いる異なる方法を研究している。この目的を達成するため、コンピュータ設計者は、複数の中央処理装置(CPU)を単一の半導体チップに組み込み始めている。これによって、同時に実行され得る別々の部分に平行化(分割)することができる、計算タスク性能利得を得ることができる。

0003

不運なことに、平行化からの性能利得は、コードの固有シリアル部分を含む多くの用途において限定され得る。このコードの固有シリアル部分においては、メモリ待ち時間の問題によって、性能はさらに限定される。

0004

メモリ待ち時間の問題は、プロセッサクロックスピードが急激な速度で増大し続けるにつれて、段々ひどくなっている。今日のプロセッサクロックスピードにおいて、メインメモリからキャッシュライン引き込むために、200プロセッサクロックサイクルまでかかることもあり得る。

0005

コンピュータ設計者は、現在では、複数の技術を用いて、メモリ待ち時間を低減している。(1)不適切の実行は、ロードをスケジューリングし、格納して、可能な限りメモリ待ち時間を隠すように用いられ得る。不運なことに、故障実行は、典型的には、メモリ待ち時間の数クロックサイクルを隠すことに限定される。(2)非故障ロード命令は、アドレスが有効でない場合に故障を引き起こすことなく、データ値推論的にロードするように用いられ得る。(3)ステアリングロード命令は、L1キャッシュが用いられていないデータ値で汚染されないように、データ値を、L1キャッシュではなく、L2キャッシュに推論的にロードするように用いられ得る。不運なことに、非故障ロードおよびステアリングロードの使用は、不必要なロードにつながり得る。これは、命令キャッシュスペースを無駄にし、レジスタ拘束する。(4)何人かの研究者は、ハードウェアプリフェッチエンジンを用いることを調査したが、これらのハードウェアプリフェッチエンジンは、典型的には、不規則メモリアクセスパターンには、有効でない。

0006

メモリ待ち時間の遅延は、命令フェッチ動作中の問題ともなり得る。命令キャッシュのミスは、データキャッシュミスと同じ程度に、遅延を引き起こし得ることに留意されたい。また、今日のプログラム言語で書かれたプログラムコードに通常点在している多くの分岐および関数呼び出しのせいで、どの命令が次に実行される可能性が高いか予測することが非常に困難であることにも留意されたい。

0007

命令フェッチ動作中のメモリ待ち時間を低減する方法および装置が必要とされている。

0008

(要旨)
本発明の一実施形態は、一次プロセッサより前に、補助プロセッサを用いて命令をプリフェッチしてプリフェッチ動作を行うシステムを提供する。このシステムは、該一次プロセッサ上で実行可能コードを実行し、該補助プロセッサ上で該実行可能コードの縮小バージョンを同時に実行することによって動作する。該実行可能コードの該縮小バージョンが、該実行可能コードよりも速く行われ、該一次プロセッサセッサが命令を必要とするときより前に該一次プロセッサ用のプリフェッチ動作を行う。また、このシステムは、該プリフェッチされた命令をメインメモリから取り出す必要なしに、該一次プロセッサが、該プリフェッチされた命令にアクセスできるように、該プリフェッチされた命令を該一次プロセッサによってアクセス可能であるキャッシュに格納する。

0009

本発明の一実施形態において、システムは、実行可能コードを実行する前に、前記一次プロセッサについて、ソースコードを実行可能コードにコンパイルする。次に、このシステムは、該実行可能コードをプロファイルして、該実行可能コードの頻繁に参照される部分について命令のトレースを作成する。その後、このシステムは、前記一次プロセッサによってアクセス可能であるキャッシュに命令トレースの一部分をプリフェッチするようにプリフェッチ命令を生成することによって、前記補助プロセッサについて、該実行可能コードの縮小バージョンを生成する。また、システムは、通信命令を、前記一次プロセッサについて、前記実行可能コードに挿入し、該補助プロセッサについて、前記実行可能コードの縮小バージョンに挿入して、該一次プロセッサから該補助プロセッサに進行情報転送する。この進行情報は、該補助プロセッサが前記プリフェッチ動作を行うようにトリガする。

0010

本発明の一実施形態において、前記ソースコードをコンパイルするプロセス、および前記実行可能コードの縮小バージョンを生成するプロセスは、コンパイラによって行われる。

0011

本発明の一実施形態において、前記補助プロセッサが誤った経路に沿って命令をプリフェッチしたことを前記進行情報が該補助プロセッサに示す場合に、前記実行可能コードの縮小バージョンは、該補助プロセッサがプリフェッチを中断するようにさせる。

0012

本発明の一実施形態において、前記実行可能コードの縮小バージョンが、制御フロー履歴情報を、分岐履歴情報および呼び出し履歴情報を記録する専用ハードウェアから読み出すように設定されている。次に、実行可能コードの縮小バージョンが、該制御フロー履歴情報に基づいて、該実行可能コードを通じて予測された経路を構成し、前記一次プロセッサ用の命令をプリフェッチするために、予測された経路に沿ってプリフェッチ動作を行うように設定されている。

0013

本発明の一実施形態において、前記実行可能コードの縮小バージョンを生成する工程が、前記実行可能コードについて、制御フローグラフを構成する工程を含む。これを行うことにおいて、このシステムは、該制御フローグラフからループを取り除き、該制御フローグラフと関係がない実行可能コード命令を取り除く。また、このシステムは、前記プリフェッチ命令を、該実行可能コードの縮小バージョンに挿入して、前記一次プロセッサ用の該実行可能コードから命令をプリフェッチする。

0014

本発明の一実施形態において、前記プリフェッチ動作を行う工程が、前記一次プロセッサ用の複数の命令を含むキャッシュブロックをプリフェッチする工程を含む。

0015

本発明の一実施形態において、このシステムは、前記進行情報を、一方向通信チャネルを介して、前記一次プロセッサから前記補助プロセッサに周期的に送る。

0016

本発明の一実施形態において、前記一次プロセッサおよび前記補助プロセッサが、同じ半導体チップ上にある。

0017

本発明の一実施形態において、前記一次プロセッサおよび前記補助プロセッサが、別の半導体チップ上にある。

0018

本発明の一実施形態において、前記補助プロセッサが、前記一次プロセッサの簡略的なバージョンである。

0019

(詳細な説明)
以下の説明は、当業者が本発明を作成し、用いることを可能にするように提示され、特定の適用例およびその要件コンテキストにおいて提供される。当業者であれば、開示された実施形態に対する各種の改変例が容易に理解され、本明細書において定義された一般的な原理が、本発明の精神および範囲から逸脱することなく、他の実施形態および用途に適応され得る。従って、本発明は、説明する実施形態に限定されず、本明細書において開示された原理および特徴に一致する最も広い範囲に一致するべきである。

0020

この詳細な説明において記載されるデータ構造およびコードは、典型的には、コンピュータ読み出し可格納媒体に格納される。コンピュータ読み出し可能格納媒体は、コンピュータシステムによって用いられるコードおよび/またはデータを格納し得る任意のデバイスまたは媒体であり得る。これには、ディスクドライブ磁気テープ、CD(コンパクトディスク)、およびDVD(デジタルビデオディスク)のような磁気または光格納デバイス、ならびに、伝達媒体に、(信号がその上で変調される搬送波とともに、もしくは、搬送波なしで)埋め込まれたコンピュータ命令信号が含まれるが、これらに限定されない。例えば、伝達媒体は、インターネットのような通信ネットワークを含み得る。

0021

(コンピュータシステム)
図1は、本発明の実施形態による、コンピュータシステム101を示す図である。コンピュータシステム101は、一次プロセッサ102および補助プロセッサ104を含む。これらの構造体の全ては、シリコンダイ100上にある(本発明の他の実施形態においては、これらの構造体は、複数のシリコンダイ」上にあってもよい)。

0022

プロセッサ102および104は、プロセッサ102および104によって実行される命令をそれぞれ含む命令キャッシュ112および120を含む。

0023

プロセッサ102および104は、さらに、ロードバッファ114および122を含み、それぞれ、データキャッシュ107および106との通信バッファリングする格納バッファ116および124を含む。より具体的には、一次プロセッサ102は、データキャッシュ107から受け取ったロードをバッファリングするロードバッファ114と、データキャッシュ107への格納をバッファリングする格納バッファ116とを含む。同様に、補助プロセッサ104は、データキャッシュ106から受け取ったロードをバッファリングするロードバッファ122と、データキャッシュ106への格納をバッファリングする格納バッファ124とを含む。

0024

プロセッサ102および104は、さらに、一次プロセッサ102と補助プロセッサ104との間の高速通信を容易にする一方向通信チャネル128〜129によって結合されている。一次プロセッサ102が補助プロセッサ104内のレジスタ126に書き込むことを、通信チャネル128が可能にしていることに留意されたい。同様に、補助プロセッサ104が一次プロセッサ102内のレジスタ127に書き込むことを、通信チャネル129が可能にしている。

0025

共有メモリ通信メカニズムの使用とは異なり、レジスタ126(または127)への書き込みは、キャッシュミスまたはコヒーレンストラフィックを引き起こさない。さらに、一次プロセッサ102は、処理を継続するために、補助プロセッサ104が通信を受け取るまで待機する必要がない。対照的に、一次プロセッサ102がメモリを介して補助プロセッサ104と通信しようとする場合、システムは、通信するために、格納バッファ116がクリアされるまで待機する必要がある。

0026

本発明の一実施形態において、データキャッシュ106および107は、32バイトキャッシュラインを有する16Kバイト方向セット連想データキャッシュである。

0027

データキャッシュ106、データキャッシュ107、命令キャッシュ112および命令キャッシュ120は、スイッチ110を介して、L2キャッシュ113に結合される。スイッチ110は、信号ライン切り換える、任意のタイプの回路を含み得る。本発明のある実施形態において、スイッチ110は、クロスバースイッチである。

0028

L2キャッシュは、一次プロセッサ102および補助プロセッサ104用の両方の命令およびデータを格納する、大きい統一型キャッシュである。L2キャッシュ113は、メモリコントローラ111に結合されている。メモリコントローラ111自体は、ダイナミックランダムアクセスメモリDRAM)108(チップの外側に位置する)に結合されている。

0029

DRAM108は、一次プロセッサ102用の実行可能コード130を含む。システム動作中、実行可能コード130は、メモリコントローラ111、L2キャッシュ113およびスイッチ110を介して、一次プロセッサ102の命令キャッシュ112にロードされる。DRAM108は、また、補助プロセッサ104用の縮小された実行可能コード132を含む。縮小された実行可能コード132は、実行可能コード130と同じメモリ参照パターンを生成する、実行可能コード130の縮小バージョンである。システム動作中、縮小された実行可能コード132は、メモリコントローラ111、L2キャッシュ113およびスイッチ110を介して、補助プロセッサ104の命令キャッシュ120にロードされる。DRAM108は、さらに、メモリコントローラ111、L2キャッシュ113およびスイッチ110を介して、データキャッシュ106〜107に移動し、データキャッシュ106〜107から移動するデータ134を含む。

0030

本発明は、複数のプロセッサを含む任意のコンピュータシステムにおいて用いられ得、例示したコンピュータシステム構造に限定されないことに留意されたい。

0031

また、本発明の一実施形態において、補助プロセッサ104は、命令が一次プロセッサ102によって用いられる前に、命令アクセスを作成するために用いられることに留意されたい。この実施形態において、補助プロセッサ104は、プログラムによって指定された計算の全てを実際に行う必要はなく、補助プロセッサ104は、プログラムの命令アクセスパターンを補助プロセッサ104が決定するために充分な計算を行う必要があるに過ぎない。従って、補助プロセッサ104は、命令アドレス計算を行うために必要とされない回路(例えば、デバイダ、およびマルチプレクサ回路)を省いた、一次プロセッサ102のより簡略なバージョンであり得る。

0032

(コンパイルプロセス)
図2は、本発明の実施形態による、コンパイルプロセスを示す図である。コンパイルプロセスの間、ソースコード202は、コンパイラ204に供給され、一次プロセッサ102用の実行可能コード130を生成する。その後、実行可能コード130が、縮小モジュール208に供給され、補助プロセッサ104用の縮小された実行可能コード132を生成する。縮小モジュール208は、コンパイラ204の一部であってもよいし、あるいは、コンパイラ204とは別でもよい。

0033

本発明の一実施形態において、コンパイルおよび縮小プロセスは、ランタイムの前に行われる。他の実施形態において、コンパイルおよび縮小プロセスは、ランタイム中、プログラムが実行されている間に行われる。

0034

(縮小された実行可能コードの生成)
図3は、本発明の実施形態による、縮小モジュール208内の縮小された実行可能コード132のフローチャートである。システムは、実行可能コード130をプロファイル(実行可能コード130の実行をシミュレーション)し、メモリ待ち時間が遅延を引き起こしているホットスポットを確認する工程(工程302)から開始する。システムは、プロセスをプロファイルする間に得た情報を用いて、実行可能コード130におけるホットスポットの命令のトレースを確立する。本発明の一実施形態において、システムは、それぞれ、約2000個の命令の約100個の分散したトレースを構成する。その後、システムは、これらのトレースを、対応するソースコードに戻って相関させる(工程304)。

0035

次に、システムは、トレースをプリフェッチするコードを生成することによって、縮小された実行可能コード132を作成する(工程306)。このプロセスは、以下で、図4、5、および9を参照しながら、より詳細に説明される。

0036

また、システムは、プロセッサからプロセッサへの通信コードを、実行可能コード130および縮小された実行可能コード132の両方に挿入し得る(工程308)。この通信コードは、一次プロセッサ102が進行(progress)情報を補助プロセッサ104に知らせるようにさせる。この進行情報は、補助プロセッサ104が、正しい経路に沿ってプリフェッチしているのか否か、プリフェッチを継続するために、一次プロセッサ102よりも早すぎないか否かを判定することを可能にする。

0037

プリフェッチが早過ぎた命令は一次プロセッサ102によって用いられる可能性が低く、一次プロセッサ102の直後により必要とされるデータに取って代わる可能性があるので、補助プロセッサ104が、一次プロセッサ102よりも早すぎる状態で命令をプリフェッチすることが望ましくないことに留意されたい。用いられる可能性が低い命令をプリフェッチすることは、メモリの帯域幅を拘束し、コンピュータ性能を低下させるキャッシュ汚染につながり得る。従って、プリフェッチ命令を開始する前に、補助プロセッサ104の対応するコードに対して、一次プロセッサ102の実行経路が閉じられるまで、補助プロセッサ104は待機することが望ましい。

0038

また、典型的には、単一のプリフェッチ動作が、複数の命令を含むキャッシュライン全体を取り出すことにも留意されたい。例えば、プリフェッチキャッシュラインは、16個の4バイト命令を含む64バイトを含み得る。

0039

この進行情報が、補助プロセッサ104が実行可能コード130を介して誤った経路に沿ってプリフェッチしていることを示す場合、システムは、補助プロセッサ104が命令トレースのプリフェッチを停止させるようにさせる。

0040

図4は、本発明の実施形態による、縮小された実行可能コード132の1つの可能な構成を示す図である。この実施形態において、縮小された実行可能コード132は、ループとして構成される。コードは、まず、変数「val」を読み出すことから開始する。「val」は、共有メモリ内、または、図1のレジスタ126内に位置し得る。valが0と等しくない場合、システムは、valに含まれる値に基づいて、プリフェッチ動作を含むコードの特定の部分を実行するスイッチステートメントを実行する。このようにして、一次プロセッサ102は、進行情報を、変数valを通じて補助プロセッサ104に知らせ得る。この進行情報は、特定のプリフェッチ命令が実行されて、一次プロセッサ102が命令を必要とする前に、補助プロセッサ104が命令をプリフェッチするようにさせる。その後、コードは、valを0にリセットして、ループを続ける。valの読み出しおよび書き込みは、同期化されないことに留意されたい。

0041

図5は、本発明の実施形態による、縮小された実行可能コード132をいかに構成するか詳細に示したフローチャートである。システムは、実行可能なコード130の制御フローグラフを構成する工程(工程502)から開始する。次に、小さいループはL2キャッシュ113にプリフェッチされることが想定されるため、システムは、制御フローグラフから小さいループを取り除く(工程504)。従って、小さいループが取り除かれた後、ループが終了するまで実行される。また、システムは、実行可能なコード130から、制御フローグラフに関係しない全ての命令を取り除く(工程506)。これは、関係ないコードが、コートを通じて実行経路に影響を与えず、必要なプリフェッチ動作に影響を与えないので、行われ得る。例えば、数学的な計算を行う決定論コードが取り除かれ得る。

0042

次に、システムは、プリフェッチ命令を縮小された実行可能コード132に挿入して、実行可能コード130の対応する箇所の命令をプリフェッチする(工程508)。

0043

(プロセスの停止)
図6は、本発明の実施形態による、縮小された実行可能コード132が、誤った経路に沿って処理していたと判定する場合にいかに停止するかを示すフローチャートである。システムは、補助プロセッサ104上で実行される縮小された実行可能コード132が、一次プロセッサ102によって書き込まれた進行情報を読み出すとき(工程602)に開始される。この進行情報は、一次プロセッサ102の実行経路が、実行可能コード130内で向かった場所を示す。

0044

補助プロセッサ104が誤った経路に沿って処理していることをこの進行情報が示す場合、補助プロセッサ104は、トレースのプリフェッチを中断する(工程604)。補助プロセッサは、正しい経路に沿ったプリフェッチを、任意に開始する。

0045

プリフェッチプロセス中、補助プロセッサ104は、分岐の片側のみをプリフェッチするように決定し得、一次プロセッサ102は、分岐の他方の側をプリフェッチすることを実際に決定し得ることに留意されたい。この場合、補助プロセッサ104は、誤った経路を選択している。

0046

また、補助プロセッサ104が、必ずしも停止する必要がないことにも留意されたい。誤った経路に沿ってプリフェッチすることによる不利益は、キャッシュの汚染および不必要なメモリ転送のみであり、これは、非常に小さいトレースについては、大きなファクタになり得ない。

0047

履歴情報を格納する専用ハードウェア)
図7は、本発明の実施形態による、縮小された実行可能コード132がいかに動作するかを示すフローチャートである。システムは、実行可能コード130について制御フロー履歴情報を記録する専用ハードウェアから、制御フロー履歴情報を読み出す工程(工程702)から開始する。例えば、この制御フロー履歴情報は、いずれの分岐が選択され、いずれの関数呼び出しが実行されたかについての記録を含み得る。次に、システムは、制御フロー履歴情報に基づいて、実行可能コード130を通じる予測された経路を構成する(工程704)。例えば、予測された経路は、実行可能コード130を通じる選択された最後の経路に基づいて、あるいは、実行可能コード130を通じる、最も頻繁に選択される経路に基づいて、判定され得る。次に、縮小された実行可能コード132は、補助プロセッサ104が予測された経路に沿ってプリフェッチ動作を行うようにさせる(工程706)。

0048

図8は、本発明の実施形態による、制御フロー履歴情報を格納する専用ハードウェアを示す図である。この実施形態においては、専用ハードウェアは、関数を呼び出し、または復帰用の呼び出しアドレスを格納する。全ての呼び出しについて、ハードウェアは、後続の分岐が選択されたか否かについての記録を格納する。例えば、第1のロウは、アドレス「X」にあり、選択された分岐、選択されていない分岐、その後に3つの選択された分岐が続く関数呼び出しを特定する。第2のロウは、アドレス「Y」にあり、分岐がない関数呼び出しを特定する。第3のロウは、アドレス「Y+4」への関数呼び出しからの復帰を特定する。最終的に、第4のロウは、アドレス「Z」にあり、2つの選択された分岐、および選択されていない分岐が続く関数呼び出しを特定する。

0049

サンプル縮小された実行可能コード)
図9は、本発明の実施形態による、プリフェッチ命令を含む実行可能コード132のサンプル部分を示す図である。

0050

図9の左側に、実行可能コード130のある部分の構造を示す。この部分は、複数のブロック902、904、906、908、910、および912に分割され、各々のブロックは、長さが64バイトであり、単一プリフェッチ動作でプリフェッチされ得る。実行可能コード130が、まず、ブロック902を実行し、ブロック902が、ブロック904またはブロック906への分岐を行うことに留意されたい。ブロック904および906の両方が、ブロック908への関数呼び出しを行う。その後、ブロック908は、ブロック910またはブロック912のいずれかへの分岐を行い得る。

0051

図9の右側に、縮小された実行可能コード132の一部分の対応する構造を示す。縮小された実行可能コード132は、まず、ブロック902、904、および906をプリフェッチする。次に、変数「addr」が、関数呼び出しの目標アドレスと共に、ロードされ、縮小された実行可能コード132は、ブロック908、910、および912をプリフェッチする。

0052

縮小された実行可能コード132が、実行可能コード130の両側でプリフェッチすることに留意されたい。本発明の他の実施形態において、縮小された実行可能コード132は、不必要な命令ロードおよび命令キャッシュ汚染を無くすため、予測された分岐経路のみでプリフェッチする。

0053

また、プリフェッチ動作が、実行可能コード130のブロックを、図1のL2キャッシュ113に移動させることに留意されたい。あるいは、プリフェッチ動作は、一次プロセッサ102について、命令キャッシュ112に向かって全体的に命令がプリフェッチされるようにさせ得る。

図面の簡単な説明

0054

本発明の上記の説明は、例示および説明のためのみに提示されてきた。上記の説明は、網羅するものではなく、本発明を開示された形態に限定するものでもない。従って、多くの改変例および変形例が、当業者にとって明らかである。さらに、上記の開示内容は、本発明を限定するものではない。本発明の範囲は、添付の特許請求の範囲によって規定される。

図1
図1は、本発明の実施形態による、コンピュータシステムを示す図である。
図2
図2は、本発明の実施形態による、コンパイルプロセスを示す図である。
図3
図3は、本発明の実施形態による、実行可能コードの縮小バージョンを生成するプロセスを示すフローチャートである。
【図4】
図4は、本発明の実施形態による、縮小された実行可能コードの例示的な構造を示す図である。
図5
図5は、本発明の実施形態による、実行可能コードの縮小バージョンをいかに構成するかを詳細に示すフローチャートである。
図6
図6は、本発明の実施形態による、実行可能コードの縮小バージョンが、誤った経路に沿って処理していたと判定する場合にいかに停止するかを示すフローチャートである。
図7
図7は、本発明の実施形態による、専用ハードウェアから制御フロー履歴情報を読み出すことによって、実行可能コードの縮小バージョンがいかに動作するかを示すフローチャートである。
図8
図8は、本発明の実施形態による、制御フロー履歴情報を格納する専用ハードウェアを示す図である。
図9
図9は、本発明の実施形態による、縮小された実行可能コードのサンプル部分を示す図である。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ