図面 (/)

技術 低複雑性命令プリフェッチシステム

出願人 クゥアルコム・インコーポレイテッド
発明者 マイケル・ウィリアム・モロージェームズ・ノリス・ディーフェンダーファー
出願日 2015年2月2日 (5年9ヶ月経過) 出願番号 2015-018674
公開日 2015年7月2日 (5年4ヶ月経過) 公開番号 2015-122094
状態 特許登録済
技術分野 階層構造のメモリシステム
主要キーワード ポータブル製品 位置固定式 方向セット メモリアクセス帯域幅 ミス情報 ラインアレイ 命令ライン 比較ロジック
関連する未来課題
重要な関連分野

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

図面 (4)

課題

命令キャッシュ内でミスが発生した場合、ミスの割合と、メモリアクセス帯域幅と、電力消費とを最小化するプリフェッチ技術を提供する。

解決手段

第1のキャッシュ内命令フェッチアドレスでミスしたという通知を受け取ると、ミスの原因になったフェッチアドレスが、前の命令のフェッチアドレスとの関係において非連続的であるか連続的であるかが決定される。非連続的である場合、ミスの原因になったフェッチアドレスに基づいて第2のキャッシュから第1の命令のラインをプリフェッチした後、さらに第2のキャッシュから第2の命令のラインをプリフェチする。一方、連続的である場合、第2のキャッシュから第2の命令のラインをプリフェッチすることなく、ミスの原因になったフェッチアドレスに基づいて、第2のキャッシュから第1の命令のラインをプリフェッチする。

概要

背景

例えば携帯電話ラップトップコンピュータ携帯情報端末(PDA)等のような多くのポータブル製品は、例えば通信プログラム及びマルチメディアプログラムのようなプログラムを実行するプロセッサを用いる。このような製品の処理システムは、命令及びデータを格納するメモリ及びプロセッサコンプレックスを含む。大容量メインメモリは通常、プロセッササイクル時間と比較して緩慢アクセス時間を有する。その結果、プロセッサと密接に位置づけられた高性能低容量のキャッシュを用いると、従来、キャッシュメモリの性能及び容量に基づいて、階層内メモリコンプレックスが構成された。例えば、レベル1命令キャッシュ及びレベル1データキャッシュは一般に、プロセッサに直接接続されるであろう。一方、レベル統一キャッシュは、レベル1(L1)命令キャッシュ及びL1データキャッシュに接続される。更に、システムメモリは、レベル2(L2)統一キャッシュに接続される。レベル1命令キャッシュは通常、プロセッサ速度で動作し、レベル2統一キャッシュ動作は、レベル1キャッシュよりも緩慢に動作するが、システムメモリより高速なアクセス時間を有する。代替メモリ構成は、例えば、L1及びL2キャッシュに加えてレベル3キャッシュを有するメモリ階層を有する。別のメモリ構成は、レベル1キャッシュ及びシステムメモリのみを用いうる。

なぜ命令キャッシュにメモリ階層を用いることができるかの根拠となる原理の1つは、命令は、メモリ内の連続位置からアクセスされる傾向があるということである。コードの最後に用いられたセクションを保持するキャッシュを有することによって、プロセッサは、高い性能レベルで実行することができる。プログラムはまた、分岐コール、及び復帰型命令を含み、例えば割込みのような非連続動作サポートするので、連続局所性の原理は、コードの比較的短いセクションのみでしか維持されない。このような非連続動作によって、命令キャッシュへの命令フェッチミスを起こし、命令フェッチは、高いメモリ容量と緩慢なアクセス時間で動作する、次の上位メモリレベルに適用される。ミスは、プロセッサに、命令を待機する機能を停止させる恐れがある。プロセッサ性能を高く保つために、ミスレートは低くなければならない。

命令キャッシュは一般に、命令キャッシュ内の単一アドレス位置付けられた複数の命令によって構成される。この複数の命令は一般に、キャッシュライン又は単にラインと呼ばれる。ミスは、キャッシュライン内の任意の場所への命令アクセスにおいて発生しうる。ミスが発生すると、必要な命令をフェッチするだけではなく、ミスが起こった命令からキャッシュラインの末尾までのキャッシュラインの残りもフェッチされることがある。いくつかのシステムにおいて、このプリフェッチ技術は更に、ミスが起こると、常にキャッシュラインの残り及び次のキャッシュラインをプリフェッチすることに及ぶ。次のキャッシュラインを常にプリフェッチする従来の技術は、次のキャッシュラインが、まもなく必要になる命令を含むという仮定に基づいている。次のキャッシュライン内の命令を用いるこの仮定は、例えば、ライン内に条件付分岐があり、この条件によって、分岐が次の連続命令まで失敗する場合にも有効である。常に次のキャッシュラインをプリフェッチすることにより、ミスを低減することができる。

命令の連続アクセスの局所性原理は、やはりプログラム内のいくつかのポイントで失敗し、分岐、コール、及び復帰等による非連続動作によってミスが発生する。連続アクセスによるミスは、例えば、命令がキャッシュラインの末尾でフェッチされ、次の連続命令キャッシュライン内に存在すべき次の連続命令がキャッシュ内に存在しない場合、発生しうる。非連続アクセスによるミスは、例えば、分岐命令があり、分岐がプログラムアドレスを新たな位置に変更し、新たな位置の命令がキャッシュ内に存在しない場合、発生しうる。次のキャッシュラインを常にプリフェッチする従来の技術は、用いない命令をフェッチし、それによって、メモリアクセス帯域幅の不必要な損失電力使用の増加、及び低プロセッサ性能をもたらす。

概要

命令キャッシュ内でミスが発生した場合、ミスの割合と、メモリアクセス帯域幅と、電力消費とを最小化するプリフェッチ技術を提供する。第1のキャッシュ内の命令のフェッチアドレスでミスしたという通知を受け取ると、ミスの原因になったフェッチアドレスが、前の命令のフェッチアドレスとの関係において非連続的であるか連続的であるかが決定される。非連続的である場合、ミスの原因になったフェッチアドレスに基づいて第2のキャッシュから第1の命令のラインをプリフェッチした後、さらに第2のキャッシュから第2の命令のラインをプリフェチする。一方、連続的である場合、第2のキャッシュから第2の命令のラインをプリフェッチすることなく、ミスの原因になったフェッチアドレスに基づいて、第2のキャッシュから第1の命令のラインをプリフェッチする。

目的

命令が存在しない場合、不一致すなわちミスが発見され、L1 Iキャッシュ制御ユニット206は、命令がIキャッシュ203内に存在しないことを示すミスインジケーションを提供する

効果

実績

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

この技術が所属する分野

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

請求項1

命令プリフェッチのための方法であって、フェッチアドレス命令キャッシュ内でミスしたという通知を受け取ることと、前記ミスの原因になったフェッチアドレスの属性を判定することと、前記属性に基づいて、命令ラインプリフェッチすることとを備える方法。

請求項2

前記属性は、前記フェッチアドレスが非連続動作ターゲットアドレスであることを示す請求項1に記載の方法。

請求項3

前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであることと、前記ターゲットアドレスは、キャッシュラインのうちのX%を越えることとを示す請求項1に記載の方法。

請求項4

前記属性は、前記フェッチアドレスが、前記命令キャッシュ内の偶数アドレスであることを示す請求項1に記載の方法。

請求項5

前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであること、又は前記フェッチアドレスが前記命令キャッシュ内の偶数アドレスであることを示す請求項1に記載の方法。

請求項6

前記プリフェッチすることは更に、前記ミスした命令と、それに関連する命令のラインとを、前記プリフェッチする命令のラインと結合することによって、長データ転送を可能にすることを更に備える請求項1に記載の方法。

請求項7

前記プリフェッチすることは更に、前記プリフェッチする命令のラインが前記命令キャッシュ内に存在するかを判定することと、前記プリフェッチする命令のラインが前記命令キャッシュ内に存在しない場合、命令のラインをプリフェッチすることとを更に備える請求項1に記載の方法。

請求項8

前記プリフェッチすることは、連続動作のターゲットアドレスで前記ミスが発生した原因になったフェッチアドレスを前記属性として判定することと、前記属性に基づいて、命令のラインをプリフェッチすることをディセーブルすることとを更に備える請求項1に記載の方法。

請求項9

前記非連続動作は、前記命令キャッシュに接続されたプロセッサ内のロジックから判定される請求項2に記載の方法。

請求項10

前記非連続動作は、前記フェッチアドレスと前のフェッチアドレスとを比較することによって判定される請求項2に記載の方法。

請求項11

フェッチアドレスがミスしたという通知を生成するように構成された命令キャッシュと、前記ミスの原因になったフェッチアドレスの属性を判定するように構成されたプリフェッチ判定ロジックと、前記属性に基づいて命令のラインをプリフェッチするように構成されたプリフェッチロジックとを備える命令キャッシュ及びプリフェッチシステム

請求項12

前記属性は、前記フェッチアドレスが、非連続動作のターゲットアドレスであることを示す請求項11に記載の命令キャッシュ及びプリフェッチシステム。

請求項13

前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであることと、前記ターゲットアドレスがキャッシュラインのうちのX%を越えることを示す請求項11に記載の命令キャッシュ及びプリフェッチシステム。

請求項14

前記属性は、前記フェッチアドレスが、前記命令キャッシュ内の偶数アドレスであることを示す請求項11に記載の命令キャッシュ及びプリフェッチシステム。

請求項15

前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであること、又は前記フェッチアドレスが前記命令キャッシュ内の偶数アドレスであることを示す請求項11に記載の命令キャッシュ及びプリフェッチシステム。

請求項16

前記命令キャッシュに接続されたプロセッサであって、前記フェッチアドレスを生成するように構成されたプロセッサと、非連続分岐型動作を示す制御信号を生成するように構成された、前記プロセッサ内のロジックとを更に備える請求項11に記載の命令キャッシュ及びプリフェッチシステム。

請求項17

フェッチアドレスがミスしたという通知を生成するように構成された命令キャッシュと、前記ミスの原因になったフェッチアドレスの属性を判定し、前記ミスしたフェッチアドレスと前記属性とに基づいてミス情報を生成するように構成されたプリフェッチ判定ロジックと、前記ミスしたフェッチアドレスに関連する命令によって、前記ミス情報に応答するように構成されたシステムメモリ階層とを備えるメモリシステム

請求項18

前記ミスしたフェッチアドレスに関連する命令は、プリフェッチされた命令を含む請求項17に記載のメモリシステム。

請求項19

前記ミスしたフェッチアドレスに関連する命令は、バースト転送によって前記命令キャッシュへ提供される請求項18に記載のメモリシステム。

請求項20

前記属性は、前記フェッチアドレスが非連続動作のターゲットアドレスであることを示す請求項17に記載のメモリシステム。

技術分野

0001

本発明は、一般に命令キャッシュの分野に関し、特に、命令キャッシュ内のミスにおける命令プリフェッチに関する。

背景技術

0002

例えば携帯電話ラップトップコンピュータ携帯情報端末(PDA)等のような多くのポータブル製品は、例えば通信プログラム及びマルチメディアプログラムのようなプログラムを実行するプロセッサを用いる。このような製品の処理システムは、命令及びデータを格納するメモリ及びプロセッサコンプレックスを含む。大容量メインメモリは通常、プロセッササイクル時間と比較して緩慢アクセス時間を有する。その結果、プロセッサと密接に位置づけられた高性能低容量のキャッシュを用いると、従来、キャッシュメモリの性能及び容量に基づいて、階層内メモリコンプレックスが構成された。例えば、レベル1命令キャッシュ及びレベル1データキャッシュは一般に、プロセッサに直接接続されるであろう。一方、レベル統一キャッシュは、レベル1(L1)命令キャッシュ及びL1データキャッシュに接続される。更に、システムメモリは、レベル2(L2)統一キャッシュに接続される。レベル1命令キャッシュは通常、プロセッサ速度で動作し、レベル2統一キャッシュ動作は、レベル1キャッシュよりも緩慢に動作するが、システムメモリより高速なアクセス時間を有する。代替メモリ構成は、例えば、L1及びL2キャッシュに加えてレベル3キャッシュを有するメモリ階層を有する。別のメモリ構成は、レベル1キャッシュ及びシステムメモリのみを用いうる。

0003

なぜ命令キャッシュにメモリ階層を用いることができるかの根拠となる原理の1つは、命令は、メモリ内の連続位置からアクセスされる傾向があるということである。コードの最後に用いられたセクションを保持するキャッシュを有することによって、プロセッサは、高い性能レベルで実行することができる。プログラムはまた、分岐コール、及び復帰型命令を含み、例えば割込みのような非連続動作サポートするので、連続局所性の原理は、コードの比較的短いセクションのみでしか維持されない。このような非連続動作によって、命令キャッシュへの命令フェッチはミスを起こし、命令フェッチは、高いメモリ容量と緩慢なアクセス時間で動作する、次の上位メモリレベルに適用される。ミスは、プロセッサに、命令を待機する機能を停止させる恐れがある。プロセッサ性能を高く保つために、ミスレートは低くなければならない。

0004

命令キャッシュは一般に、命令キャッシュ内の単一アドレス位置付けられた複数の命令によって構成される。この複数の命令は一般に、キャッシュライン又は単にラインと呼ばれる。ミスは、キャッシュライン内の任意の場所への命令アクセスにおいて発生しうる。ミスが発生すると、必要な命令をフェッチするだけではなく、ミスが起こった命令からキャッシュラインの末尾までのキャッシュラインの残りもフェッチされることがある。いくつかのシステムにおいて、このプリフェッチ技術は更に、ミスが起こると、常にキャッシュラインの残り及び次のキャッシュラインをプリフェッチすることに及ぶ。次のキャッシュラインを常にプリフェッチする従来の技術は、次のキャッシュラインが、まもなく必要になる命令を含むという仮定に基づいている。次のキャッシュライン内の命令を用いるこの仮定は、例えば、ライン内に条件付分岐があり、この条件によって、分岐が次の連続命令まで失敗する場合にも有効である。常に次のキャッシュラインをプリフェッチすることにより、ミスを低減することができる。

0005

命令の連続アクセスの局所性原理は、やはりプログラム内のいくつかのポイントで失敗し、分岐、コール、及び復帰等による非連続動作によってミスが発生する。連続アクセスによるミスは、例えば、命令がキャッシュラインの末尾でフェッチされ、次の連続命令キャッシュライン内に存在すべき次の連続命令がキャッシュ内に存在しない場合、発生しうる。非連続アクセスによるミスは、例えば、分岐命令があり、分岐がプログラムアドレスを新たな位置に変更し、新たな位置の命令がキャッシュ内に存在しない場合、発生しうる。次のキャッシュラインを常にプリフェッチする従来の技術は、用いない命令をフェッチし、それによって、メモリアクセス帯域幅の不必要な損失電力使用の増加、及び低プロセッサ性能をもたらす。

0006

本開示は、ミスが発生した場合、ミスの割合と、メモリアクセス帯域幅と、電力消費とを低減するプリフェッチ技術へのニーズが存在することを認識する。本発明の1つの実施形態は、命令プリフェッチのための方法を提供する。ミスが発生すると、フェッチアドレスが命令キャッシュ内でミスしたという通知が受け取られる。ミスの原因になったフェッチアドレスの属性が判定され、その属性に基づいて、命令のラインがプリフェッチされる。

0007

本発明の別の実施形態は、命令キャッシュ及びプリフェッチシステムを扱う。命令キャッシュは、フェッチアドレスがミスしたという通知を生成するように構成される。プリフェッチ判定ロジックは、ミスの原因になったフェッチアドレスの属性を判定するように構成され、プリフェッチロジックは、属性に基づいて命令のラインをプリフェッチするように構成される。

0008

本発明の別の実施形態は、メモリシステムを扱う。メモリシステムは、フェッチアドレスがミスしたという通知を生成するように構成された命令キャッシュを用いる。プリフェッチ判定ロジックは、ミスの原因になったフェッチアドレスの属性を判定し、ミスしたフェッチアドレスと属性とに基づいてミス情報を生成するように構成される。システムメモリ階層は、ミスしたフェッチアドレスに関連する命令によって、ミス情報に応答するように構成される。

0009

本発明の様々な実施形態が例示によって示され説明される以下の発明を実施する形態から、当業者には、本発明の他の実施形態が容易に明らかになるであろうことが理解される。理解されるように、本発明は、他の実施形態及び異なる実施形態も可能であり、いくつかの詳細は、全て本発明から逸脱することなく様々な他の観点における変更が可能である。従って、図面及び発明を実施する形態は、本質的に例示的であり、限定的ではないと見なされる。

図面の簡単な説明

0010

図1は、無線通信システムを示す。
図2は、命令キャッシュラインのプリフェッチが、メモリ効率の良い動作のためのヒューリスティックに基づいて適用されうるプロセッサ及びメモリコンプレックスの機能ブロック図である。
図3は、低複雑性プリフェッチ処理を示すフローチャートである。

発明を実施する形態

0011

添付図面と関連して以下で説明される発明を実施する形態は、本発明の様々な典型的な実施形態の説明として意図されており、本発明が実施されうる実施形態のみを表すことは意図されていない。発明を実施する形態は、本発明の完全な理解を提供する目的のために、具体的な詳細を含む。しかし、本発明はこれら具体的な詳細なしでも実現されうることが当業者には明らかであるだろう。いくつかの例において、周知の構成及びデバイスは、本発明の概念を不明確にすることを避けるためにブロック図形式で示される。

0012

図1は、本開示の実施形態が有利に用いられうる典型的な無線通信システム100を示す。例示目的のために、図1は、3つの遠隔ユニット120、130、及び150と、2つの基地局140とを示す。典型的な無線通信システムは、更に多くの遠隔ユニット及び基地局を有することができることが理解されるであろう。遠隔ユニット120、130、及び150は、以下で更に説明されるような、本発明を具現化するために適した構成要素125A、125C、及び125Bによって表されるハードウェア部品ソフトウェア構成要素、又はその両方をそれぞれ含む。図1は、基地局140から遠隔ユニット120、130、及び150への順方向リンク信号180と、遠隔ユニット120、130、及び150から基地局140への逆方向リンク信号190とを示す。

0013

図1では、遠隔ユニット120は、無線ローカルループ・システムにおけるモバイル電話として示され、遠隔ユニット130は、無線ローカル・ループ・システムにおけるポータブルコンピュータとして示され、遠隔ユニット150は、無線ローカル・ループ・システムにおける位置固定式遠隔ユニットとして示される。例えば遠隔ユニットは、代わりに、携帯電話、ページャウォキートーキーハンドヘルドパーソナル通信システムPCSユニット、例えば携帯情報端末のようなポータブル・データ・ユニット、あるいは例えば計測装置のような位置固定式データユニットであることができる。図1は本発明の教示に従う典型的な遠隔ユニットを示すが、本発明は、示されたこれら典型的なユニットに限定されない。本発明は、命令キャッシュ及びシステムメモリを備えるプロセッサを有する任意のデバイスによって適切に用いることができる。

0014

図2は、メモリ効率の良い動作のためのヒューリスティックスに基づいて、命令キャッシュラインのプリフェッチが適用されうるプロセッサ及びメモリコンプレックス200の機能ブロック図である。プロセッサ及びメモリコンプレックス200は、プロセッサ202と、直接マップされたレベル1(L1)命令キャッシュ(Iキャッシュ)203と、システムメモリ階層208とを含む。L1命令Iキャッシュ203は、L1 Iキャッシュラインアレイ204と、L1 Iキャッシュ制御ユニット206とを備える。L1 Iキャッシュ制御ユニット206は、例えばセット連想キャッシュのような様々なタイプのキャッシュで用いられうるような、命令タグマッチングのための命令コンテンツアドレス指定可能メモリと、プリフェッチロジックとを含むことができる。プロセッサコンプレックスに接続することができる周辺デバイスは、説明の明確性のために図示しない。プロセッサ及びメモリコンプレックス200は、L1 Iキャッシュ203及びシステムメモリ階層208に格納されたプログラムコードを実行するために、構成要素125A乃至125Cによって適切に用いられうる。

0015

L1 Iキャッシュラインアレイ204は、例えばキャッシュライン210及び211のような複数のラインを含むことができる。各ラインはそれぞれ、複数の命令(I0、I1、・・・、I7)212乃至219から成る。タグ200と、例えば有効ビットのようなライン状態(LS)221とが各ラインに関連付けられる。キャッシュライン210及び211はそれぞれ、ラインアドレス222及び223のL1 Iキャッシュラインアレイ204内に存在する。L1 Iキャッシュ制御ユニット206は、キャッシュラインにアクセスするために命令アドレス(IA)インタフェース225を介して受け取られる命令アドレス(IA)224に応答するアドレス制御ロジックを含む。IA224は、タグ226、ラインアドレス228、命令「I」フィールド232、及びバイト「B」フィールド234から成ることができる。ラインアドレス228は、「ライン+」フィールド229及び偶数「E」ビット230から成る。

0016

プロセッサ及びメモリコンプレックス200内の命令をフェッチするために、プロセッサ202は、フェッチされることが望まれる命令の命令アドレス(IA)224を生成し、そのフェッチアドレスをL1 Iキャッシュ制御ユニット206へ送る。受信したIA224に基づいて、L1 Iキャッシュ制御ユニット206は、命令がL1 Iキャッシュラインアレイ204内に存在するかをチェックし調べる。このチェックは、例えば、IA224によって選択されたようなライン210内の一致するタグ236をチェックする比較ロジックを用いることにより達成される。例えば有効ビット238のようなライン状態ビット(LS)221を確認することによって、ラインが有効命令を含むかに対しても判定が行われる。命令が存在する場合、一致すなわちヒットが生じ、L1 Iキャッシュ制御ユニット206は、L1 Iキャッシュ203内に命令が存在することを示す。命令が存在しない場合、不一致すなわちミスが発見され、L1 Iキャッシュ制御ユニット206は、命令がIキャッシュ203内に存在しないことを示すミスインジケーションを提供する。

0017

命令が存在する場合、その命令フェッチアドレスの命令が、L1 Iキャッシュラインアレイ204から選択される。命令はその後、命令出力バス240でプロセッサ202へ送られる。

0018

命令が命令キャッシュ内に存在しない場合、ミス情報が、ミス信号経路242を介してメモリ階層208へ提供され、ミスが発生したことを示す。レベル1Iキャッシュ203内のミスを検出すると、プロセッサ及びメモリコンプレックス200は、望まれる命令をフェッチしようと試み、以下で更に詳しく説明するように、システムメモリの上位レベルから追加の命令をプリフェッチすることができる。例えば命令は、システムメモリ階層208に位置するレベル2(L2)統一キャッシュからプリフェッチされうる。ミスによって所望となった命令及び任意のプリフェッチされた命令は、メモリデータバスインタフェース244でシステムメモリ階層208から提供される。

0019

ミスが発生すると、ミスの原因となったフェッチアドレスに関連する1つ又は複数の属性が判定されうる。例えばフェッチアドレスは、連続アクセス又は非連続アクセスの何れかのターゲットとして分類されうる。フェッチアドレスは更に、例えばそのアドレスがキャッシュラインのうちのX%を越えるかによっても分類されうる。フェッチアドレスはまた、そのアドレスが命令キャッシュ内の偶数アドレスであるかに基づいて分類されることもある。これらの分類及びその他の分類は、いつプリフェッチするかをインテリジェントに決定するヒューリスティックの形式で併用されうる属性を定義する。インテリジェントにプリフェッチすることによって、電力が節約され、メモリ帯域幅が改善され、ミスの割合が低減され、一般にプロセッサ及びシステムの性能は改善されうる。

0020

ミスの原因となったフェッチアドレスに関連する属性は、フェッチアドレスから動的に決定することができる。例えば、フェッチアドレスをモニタすることによって、連続フェッチアドレスか非連続フェッチアドレスかが判定されうる。フェッチアドレス及びキャッシュラインの長さに基づいて、キャッシュライン内のアクセスの位置は、動的に決定することができる。例えば、決定された位置が閾値X%に等しいか、又はそれを越えた場合、この属性は関連性を有する。また、フェッチアドレス及びキャッシュラインの長さに基づいて、フェッチアドレス内のビットは、アクセスが偶数キャッシュラインへのアクセスであるか奇数キャッシュラインへのアクセスであるかを判定するために用いられうる。これらの属性は、以下で更に詳しく説明される。

0021

1つの実施形態において、命令キャッシュ内のミスに、ミス属性のうちの1つ又は複数が関連している場合、メモリ階層の次のレベルから次の連続キャッシュラインがプリフェッチされる。1つ又は複数のミス属性が関連していない場合、次の連続キャッシュラインはプリフェッチされない。一般に、連続していないキャッシュラインはプリフェッチされうることが留意される。プリフェッチするキャッシュラインの決定は、ミスの属性、プログラムの属性、又はそのような属性の組み合わせに基づくことができる。例えば、分岐履歴テーブル又は分岐予測ロジックからの情報は、命令の連続ラインをプリフェッチするか命令の非連続ラインをプリフェッチするかを判定するために用いられうるプログラムの実行のフローの属性を提供するために用いられるであろう。

0022

別の実施形態において、命令キャッシュ内のミスが、例えば命令キャッシュ内に存在しない命令のアドレスへの分岐、サブルーチンコール等のような非連続ミスによる場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。命令キャッシュ内のミスが、例えば命令キャッシュ内に存在しない命令への連続するアクセスのような連続ミスによる場合、プリフェッチ動作は行われない。プリフェッチ動作のアドレスは、命令の連続ライン又は非連続ラインに対しうることも留意される。

0023

別の実施形態において、命令キャッシュ内のミスが、命令キャッシュ内の偶数のアドレスで発生した場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。命令キャッシュ内のミスが、命令キャッシュ内の奇数のアドレスで発生した場合、プリフェッチは行われない。

0024

別の実施形態において、命令キャッシュ内のミスが、キャッシュラインのうちのX%に等しいアドレス又はそれを越えるアドレスでの非連続ミスによる場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。命令キャッシュ内のミスが、キャッシュラインのうちのX%に満たないアドレスでのミス、あるいは連続ミスによる場合、プリフェッチは行われない。例えばキャッシュラインのうちの75%のように、キャッシュラインの末尾付近のフェッチアドレスでミスが発生した場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。キャッシュラインのうちの割合Xは、試験的手段によって選ばれた値に定めることができる。又はXは、X%が、動作中のプログラムに適合できるようにプログラム可能でありうる。例えば、8つの命令から成る命令ライン210を備えた図2の典型的な例示の場合、X%が62.5%であれば、ラインの62.5%は、I4 216、ラインのうちの5つの命令に関連する。ミスが、I4 216のフェッチアドレス又はそれを越えるフェッチアドレスで発生した場合、プリフェッチ動作が可能である。ミスが、I3 215のフェッチアドレス又はそれに満たないフェッチアドレスで発生した場合、プリフェッチ動作は可能ではない。代替実施形態において、命令キャッシュ内のミスが、キャッシュラインのうちのX%を越えたアドレスでのミスによる場合、プリフェッチが行われる。X%=62.5%である上記例の場合、I5 217のフェッチアドレス又はそれを越えるフェッチアドレスでミスが発生した場合、プリフェッチが可能である。ミスが、キャッシュラインのうちのI4 216に等しいかそれに満たないアドレスである場合、プリフェッチは行われない。

0025

別の実施形態において、ミス属性は、プリフェッチするか否かを判定するために併用されうる。例えば、命令キャッシュ内のミスが、例えば命令キャッシュ内に存在しない命令への分岐、サブルーチンコール等のような非連続ミスによる場合、あるいは命令キャッシュ内のミスが、命令キャッシュ内の偶数のアドレスで発生した場合、メモリ階層の次のレベルからの命令のラインがプリフェッチされる。そうでない場合、ミスが発生しても、プリフェッチは行われない。

0026

プリフェッチするかの判定は、アドレス指定された命令がキャッシュ内に存在するか否かを判定するために、キャッシュアクセスプローブ並行して動作することができるプリフェッチ判定ロジック246によって達成される。プリフェッチ判定ロジック246は、ミスインジケーション248、例えば分岐、コール、又は復帰動作のような非連続動作がミスの原因となったことを示す非連続インジケーション250、及びX%値252を入力として選択し、例えばフェッチされた命令のIA224を含むことができる。ミスインジケーション248、非連続インジケーション250、及びX%値252は、L1 Iキャッシュ制御ユニット206によって提供される。ミスが、非連続フェッチ動作のフェッチアドレスに関連しているという判定は、プロセッサ202からの制御254から得ることができる。制御254は更に、例えば分岐、コール、復帰等のような命令に関連する非連続動作256のためのロジックから得ることができる。あるいは、L1 Iキャッシュ制御ユニット206は、フェッチが非連続動作に関連しているかを判定するために、現在のフェッチ命令アドレスと以前のフェッチ命令アドレスとを比較することができる。プリフェッチ判定ロジック246は、必要に応じて接続された信号によって命令キャッシュ外に位置しうることが留意される。例えばプリフェッチ判定ロジックは、命令アドレス224を生成するプロセッサ202に、より密接に関連付けられうる。

0027

例えば、フェッチアドレスが偶数アドレスキャッシュラインを示すかを判定するようなその他の属性は、偶数「E」ビット230に基づくことができる。ここで、偶数キャッシュラインの場合、E=0である。「E」ビット230アドレスビット位置又はビット値は、命令キャッシュラインアレイ204内のラインの長さに依存して変化しうる。図2に示すように、2ビットのBフィールド234は、ワードにおいて最大4バイトを示し、3ビットのIフィールド232は、ラインにおいて最大8ワードを示す。この構成によって、「E」ビット230は、32バイトのキャッシュラインにアドレス指定された8ワード毎に状態を変化させる。

0028

更なる実施形態において、プリフェッチ判定ロジック246は、プリフェッチされるキャッシュラインが既に命令キャッシュ内に存在するかを、キャッシュのプローブに判定させることができる。プリフェッチターゲットに関連するキャッシュラインが既にキャッシュ内に存在する場合、プリフェッチ動作は停止されるか、開始を妨げられる。

0029

プリフェッチが、命令キャッシュに関連するプリフェッチロジックによって開始され、上位レベルのメモリ階層によって応答されると、命令の複数のラインが、例えばメモリデータバス244のようなメモリデータバスを介してL1 Iキャッシュへ転送される。実現されるシグナリングプロトコル及びメモリデータバスインタフェース244の物理バス幅に依存して、データは、例えば32バイト、64バイト、128バイト、256バイト、512バイト等のような、定められた大きさの量又はパケットで転送されうる。一般に、短いデータパケットの複数の転送は通常、データを構成し送ることによるオーバヘッドによって、大きいデータパケットサイズのバースト転送をするよりも効率が悪い。従って、別の実施形態において、プリフェッチする判定が下されると、例えば2つの個々のデータ転送において、命令の2つのラインをプリフェッチするのではなく、長いデータ転送が必要となる。プリフェッチにおける長いデータ転送によって、短い個別の転送で命令を送るのと比べて、転送時間全体が最小化される。

0030

図3は、低複雑性プリフェッチ処理300を示すフローチャートである。図3ブロックと、図2の要素との間の典型的な関係は、プロセッサメモリコンプレックス200からの要素が方法300を実行するためにどのように適切に協働しうるかを説明することによって示される。

0031

ブロック302で、例えばプロセッサ202のようなプロセッサが命令をフェッチする。判定ブロック304で、フェッチされている命令が命令キャッシュ内に存在するかが判定される。例えばL1 Iキャッシュ制御ユニット206が、命令が存在するかをチェックして調べる。命令が命令キャッシュ内に存在する場合、処理300は、ブロック306でキャッシュ内の命令をフェッチし、その後ブロック302へ戻り、次の命令フェッチを待つ。例えば、選択された命令は、命令出力バス240に置かれ、プロセッサ202内で受け取られる。

0032

命令が命令キャッシュ内に存在しない場合、ミス状況が検出されている。処理300は判定ブロック308へ進み、ここで、現在の命令アドレスに関連する次の連続ラインが既に命令キャッシュ内に存在するかが判定される。このような判定は、L1 Iキャッシュラインアレイ204に直接アクセスせずに、L1 Iキャッシュ制御ユニット206内で達成することができる。次の連続ラインがL1 Iキャッシュ内に既に存在する場合、ブロック310で、現在の命令アドレスに対して、例えばシステムメモリ階層208のようなメモリ階層へフェッチが発行される。処理300はその後、ブロック302へ戻り、次の命令フェッチを待つ。並行して、ブロック312で、ミスの原因となったフェッチアドレスの属性が判定される。このような判定は、プリフェッチ判定ロジック246によって適切に達成されうる。

0033

次の連続ラインがキャッシュ内に存在しない場合、処理は、判定ブロック314へ進み、ここで、ブロック312で判定されたミス属性のうちの1つ又は複数が関連するかが判定される。複数の属性が判定されうるが、定められた又はプログラム可能な関数が、適用可能な属性全て又は適用可能な属性のサブセットを選択することができる。ミス属性が関連する場合、処理300はブロック316へ進み、命令及び決定されたプリフェッチキャッシュラインを次のレベルのメモリからフェッチし、ブロック302へ戻って次の命令フェッチを待つ。このように、判定ブロック314でプリフェッチする判定が下されると、命令の2つのラインをプリフェッチするのではなく、例えば2つの個々のデータ転送において、長いデータ転送が必要とされる。ミス属性が関連しない場合、ブロック318で、現在の命令アドレスに関して、例えばシステムメモリ階層208のようなメモリ階層へフェッチが発行される。処理300はその後、ブロック320へ戻り、次の命令フェッチを待つ。

0034

本明細書に開示された実施形態の典型的な説明は、直接マップされたキャッシュの実現形態を用いて示された。直接マップされたキャッシュは、例えば単一方向セット連想キャッシュのようなセット連想キャッシュの特別例と見なされうる。本明細書で説明された原理は、例えば4方向セット連想キャッシュ実現形態のようなN方向セット連想キャッシュにも適用可能である。同様に、本明細書で説明された原理は、完全連想キャッシュ実現形態にも適用可能である。

0035

本明細書に開示した実施形態に関連して説明された様々な例示的論理ブロックモジュール回路、要素、及び/又は構成要素は、汎用プロセッサデジタル信号プロセッサ(DSP)、特定用途向け集積回路ASIC)、フィールド・プログラマブルゲート・アレイ(FPGA)あるいはその他のプログラマブル論理構成要素、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェア部品、又は上述された機能を実現するために設計された上記何れかの組合せを用いて実現又は実行されうる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラマイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、例えばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアに接続された1つ又は複数のマイクロプロセッサ、又はこのような任意の構成である計算構成要素の組み合わせとして実現することも可能である。

0036

本明細書に開示された実施形態に関連して記述された方法は、ハードウェアによって直接、プロセッサによって実行されるソフトウェアモジュールによって、または、これらの組み合わせによって具現化されうる。ソフトウェアモジュールは、RAMメモリフラッシュメモリROMメモリEPROMメモリ、EEPROMメモリレジスタハードディスクリムーバブルディスクCD−ROM、あるいは当該技術分野で知られているその他の形式の記憶媒体収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合されうる。または、記憶媒体はプロセッサに統合されうる。

0037

本発明は、実施形態に関して開示されたが、広範囲の様々な実現形態が、上記記載及び以下の特許請求の範囲と矛盾せず当業者によって用いられうることが理解されるであろう。例えば実施形態は、主にレベル1命令キャッシュに関して開示された。これら実施形態は、レベル2命令キャッシュ、命令をプリフェッチするレベル2統一キャッシュ、又はプロセッサ・メモリ・コンプレックスに適用可能なその他のレベルのメモリ階層を用いて実現することもできる。命令キャッシュは、プロセッサコアに統合されるか、あるいはプロセッサコアに外付けであることができることも理解されるであろう。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

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

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

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

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

関連性が強い人物一覧

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

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

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

関連する公募課題一覧

astavision 新着記事

サイト情報について

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

主たる情報の出典

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