JP5608594B2 - プレロード命令制御 - Google Patents

プレロード命令制御 Download PDF

Info

Publication number
JP5608594B2
JP5608594B2 JP2011069731A JP2011069731A JP5608594B2 JP 5608594 B2 JP5608594 B2 JP 5608594B2 JP 2011069731 A JP2011069731 A JP 2011069731A JP 2011069731 A JP2011069731 A JP 2011069731A JP 5608594 B2 JP5608594 B2 JP 5608594B2
Authority
JP
Japan
Prior art keywords
memory address
memory
address
data
null value
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.)
Active
Application number
JP2011069731A
Other languages
English (en)
Other versions
JP2011227880A (ja
Inventor
サイモン・ジョン・クラスク
Original Assignee
アーム・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2011227880A publication Critical patent/JP2011227880A/ja
Application granted granted Critical
Publication of JP5608594B2 publication Critical patent/JP5608594B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、データ処理システムの分野に関する。より詳細には、本発明は、後のメモリアクセスに備えるために、プレロード操作をトリガさせるためのプレロード命令をサポートする、データ処理システムに関する。
プレロード命令をサポートするデータ処理システムを提供することは公知である。かかるプレロード命令は、後のメモリアドレスへのメモリアクセスに備えるためのプレロード操作の対象となる、メモリアドレスを指定する。このメモリアドレスにおけるデータは、少なくとも後にアクセスされる可能性があり、したがって後のアクセスに備えるためのプレロード操作は、後のアクセスを加速することができる。しかしながら、プレロード操作は、機能するためのエネルギーを消費し、状況によっては、機能することが所望される他のデータ処理操作を遅らせ得、例えば、フェッチをトリガさせるプレロード操作は、そのフェッチデータ値を直ちに要求する、後のロード操作の妨げとなる。
エネルギー消費の低減および実行の効率性を改善することができる措置は、有利である。
一態様から概観すると、本発明は、データを処理するための装置であって、
プログラム命令に応じて、データ処理操作を実施するように構成される処理回路と、
該処理回路に連結され、該プログラム命令に応答して、該データ処理操作を実施するように、該処理回路を制御するための制御信号を生成する、命令デコーダ回路と、
を備え、該命令デコーダは、プレロード命令に応答し、該プレロード命令は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる該メモリアドレスの場所を指定し、該メモリアドレスをヌル値と比較し、かつ、
(i)該メモリアドレスが、該ヌル値と一致しない場合、該プレロード操作を実施するために、該処理回路を制御するための制御信号を生成し、
(ii)該メモリアドレスが、該ヌル値と一致する場合、該プレロード操作を実施するために、該処理回路を制御するための該制御信号を生成しない、装置を提供する。
本技術は、特定のメモリアドレスについて、プレロード命令が、そのメモリアドレスをプレロードしようとして実行される場合、プレロード操作を抑制することが望ましい場合があることを認識する。例として、特定のメモリアドレスは、実施されることがなく、かつ実際に要求されないデータアクセスに対応することは知られ得る。したがって、それらのメモリアドレスに対応しているデータ値をプレロードしようとするプレロード命令は、浪費エネルギーにつながると思われ、実施されている他のより有用な命令を妨げる可能性がある。これらのメモリアドレスは、ヌル値として見なされる場合があり、命令デコーダは、プレロード操作が実際に実施されるべきかどうかを決定するために、受信したプレロード命令のメモリアドレスを、これらのヌル値と比較し得る。メモリアドレスがヌル値と一致する場合、プレロード操作は実施されない。これは、エネルギーを節約し、効率性を高める。
プレロード操作が、多種多様な異なる形態をとり得ることは、理解されるだろう。幾つかのシステムでは、トランスレーションルックアサイドバッファ回路は、仮想アドレスと物理アドレスとの間のトランスレーションを指定する、アドレスマッピングデータを記憶する。本文脈におけるプレロード操作は、メモリアドレスのためのアドレスマッピングデータが、トランスレーションルックアサイドバッファ内にまだ記憶されていない場合、メモリアドレスのためのアドレスマッピングデータの、トランスレーションルックアサイドバッファへのロードをトリガし得る。それゆえに、実際のロード操作が要求されるとき、アドレストランスレーションデータは、すでにトランスレーションルックアサイドバッファ内に存在し、したがってロード操作は、より迅速に進み得る。
トランスレーションデータの、トランスレーションルックアサイドバッファへのロードは、ページテーブルウォーク操作を使用してもよい。かかるページテーブルウォークは、メモリアドレストランスレーションデータを記憶する効率的方法であるが、比較的遅いという不都合を被る。したがって、ページテーブルウォーク操作を使用して、メモリアドレスのためのトランスレーションデータの記憶をトリガさせる機能を果たす、メモリアドレスに対するプレロード命令は、そのメモリアドレスへの実際のアクセス操作が実施されるとき、かなりの時間を節約する。
他の実施形態では、キャッシュメモリが提供されてもよく、プレロード操作は、データを、メモリアドレスからキャッシュメモリへロードしてもよい。このロードされたデータは、次いで、メモリアドレスへのアクセスが要求されるとき、より迅速に入手可能となる。
ヌル値は、ゼロ等の固定値に設定され得る。ゼロメモリアドレスは、誤操作を捕らえる方法として、多くのオペレーティングシステムによって、通常アクセス不可能に設定される、メモリアドレススペースにおける最終ページに通常は対応する。ゼロであるメモリアドレスポインタ値もまた、データアクセスの連結リストシーケンスの最終部分を示す一般的な方法であり、最後のデータブロックは、それが最後のデータブロックであることを示すために、ゼロのヌル値で満たされた次のデータブロックへのポインタを有する。
ヌル値はまた、一連の値のうちのいずれか1つであってもよく、例えば、メモリアドレスの範囲内の任意のメモリアドレスは、ヌル値と一致するものとして扱われる。
ヌル値は、ソフトウェアまたはハードウェア制御下で、プレロード操作が実際に要求されないことの指標として、ユーザまたはシステムに知られる値に設定されるプログラマブル値であってもよい可能性もある。この技術は、例えば、別の既定値が、連結リストデータ構造内の最後のデータブロックを示すものとして使用される場合に、使用されてもよい。
ヌル値は、プレロード操作の対象とならないメモリアドレスを検出するように構成される検出回路によって、ハードウェア制御下でプログラムされてもよい。かかるメモリアドレスは、例えば、メモリアドレスがアクセス不可能であるという結果を返す、以前のメモリアクセスによって特定されてもよい。アクセス不可能メモリアドレスをプレロードする後の試みは、無益であり、したがってかかるプレロード操作は、抑制され得る。
別の態様から概観すると、本発明は、データを処理するための装置であって、
プログラム命令に応じて、データ処理操作を実施する処理手段と、
該プログラム命令に応答して制御信号を生成するための命令デコーダ手段であって、該制御信号は、該データ処理操作を実施するように該処理回路を制御する、手段と、
を備え、該命令デコーダ手段は、プレロード命令に応答し、該プレロード命令は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となるように該メモリアドレスの場所を指定し、該メモリアドレスをヌル値と比較し、かつ、
(i)該メモリアドレスが、該ヌル値と一致しない場合、該プレロード操作を実施するために、該処理回路を制御するための制御信号を生成し、
(ii)該メモリアドレスが、該ヌル値と一致する場合、該プレロード操作を実施するために、該処理回路を制御するための該制御信号を生成しない、装置を提供する。
さらなる態様から概観すると、本発明は、データを処理するための方法であって、
プログラム命令に応じてデータ処理操作を実施するステップと、
該データ処理操作を制御するための制御信号を生成するために、プログラム命令をデコードするステップと、
を含み、該デコードするステップは、プレロード命令に応答し、該プレロード命令は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる該メモリアドレスの場所を指定し、該メモリアドレスをヌル値と比較し、かつ、
(i)該メモリアドレスが、該ヌル値と一致しない場合、該プレロード操作を実施するために、該処理回路を制御するための制御信号を生成し、
(ii)該メモリアドレスが、該ヌル値と一致する場合、該プレロード操作を実施するために、該処理回路を制御するための該制御信号を生成しない、方法を提供する。
本発明の上記および他の目的、特徴および利点は、添付の図面に関連して一読されるべき、例示的な実施形態の以下の詳細な説明から、明らかであろう。
プレロード命令のためのサポートを含む、データ処理システムを概略的な例示である。 命令デコーダによる、プレロード命令のデコードを概略的に例示するフロー図である。 トランスレーションルックアサイドバッファを概略的に例示する図である。 3レベルページテーブル階層を通じるページテーブルウォークを概略的に例示する図である。 ページテーブルウォークの間にアクセス不可能ページに遭遇したときの、プレロード命令のためのヌル値のアップデートを概略的に例示するフロー図である。 連結リストの最終部分を示すためのヌル値を使用する、連結リストデータ構造を概略的に例示する図である。 仮想機械実施形態を概略的に例示する図である。
図1は、メモリ6に連結したプロセッサ4を含むデータ処理システム2を例示する。プロセッサ4は、様々の異なる形態を有する処理回路を含む。レジスタバンク8、乗算器10、シフター12、および加算器14を備えるデータパスは、演算操作等のデータ処理操作を実施する。ロード/記憶ユニット16は、メモリ6内に記憶されるデータにアクセスするための、ロードおよび記憶操作を実施する。
プロセッサ4は、トランスレーションルックアサイドバッファ20を組み込むメモリ管理ユニット18を含む。メモリ管理ユニット18は、関連するアクセス許可を点検するほかに、アクセスされるメモリ場所の仮想アドレスを受信し、これを物理アドレスに変換する。トランスレーションルックアサイドバッファ20は、それらの物理アドレスに関連するアクセスパラメータを記憶するほかに、仮想アドレスを物理アドレスにマップする、アドレスマッピングデータのキャッシュを記憶する機能を果たす。トランスレーションルックアサイドバッファ20内に記憶されるアドレスマッピングデータは、メモリ6内に記憶されるページテーブルデータ22に由来し、メモリアドレススペースの全体に関する、アドレスマッピングデータの一式、ならびにメモリアドレススペースの全体に関する、アクセスプロパティを定義する。キャッシュメモリ24は、それらがメモリ6内に記憶されるデータ値よりも迅速にアクセスされ得るように、プロセッサ4内にデータ値を記憶する。キャッシュメモリ24は、物理的にアドレス指定され、したがって、仮想アドレスから物理アドレストランスレーションへのダウンストリームは、トランスレーションルックアサイドバッファ20(またはメモリ6から読み出されるページテーブルデータ)を使用して、メモリ管理ユニット18によって実施される。
命令フェッチユニット26は、プログラム命令を、メモリ6内に記憶されるプログラム28からフェッチする機能を果たす。これらのフェッチ命令は、プログラム命令が、命令デコーダ32に適用されるステージであるデコードステージに、フェッチ命令が到達するまで、フェッチ命令が、命令パイプラインステージ(例えば、リオーダー、イシュー等)に沿って進行するところの、命令パイプライン30に供給される。命令デコーダ32は、プログラム命令をデコードし、プロセッサ4の他の部分に供給され、デコードされているプログラム命令で指定されるデータ処理操作を実施するために、それらのプロセッサ4の他の部分を設定および制御する機能を果たす制御信号を生成する。プログラム命令は、メモリ6内に記憶されるメディアデータ値34等のデータ値にアクセスするための、ロード/記憶ユニット16によって実施されるロードおよび記憶命令を含み得る。プログラム命令は、それらのアクセスデータ値、例えば、加算、乗算等を操作するための、演算命令を含み得る。
命令デコーダ32によってサポートされる、命令の1つのタイプは、プレロード命令(PLD〔r〕である。このプレロード命令は、レジスタr内に保持される値によって指定されるメモリアドレス上で、プレロード操作を実施する機能を果たす。プレロード操作は、様々の異なる形態をとり得る。プレロード操作は、レジスタr内のメモリアドレスによって指定されるデータ値を収容するキャッシュラインを、キャッシュメモリ24へ、プレロードするために、ロード/記憶ユニット16をトリガさせることであってもよい。プレロード操作の別の形態は、トランスレーションルックアサイドバッファ20が、レジスタr内の値によって指定される仮想アドレスを、物理アドレス値にトランスレートするのに必要なトランスレーションデータをまだ含まない場合、ページテーブルデータ22を通じて、ページテーブルウォークを実施するために、メモリ管理ユニット18をトリガさせることであってもよい。ページテーブルウォーク操作は、比較的遅く、したがってデータ値が実際に要求される前に、このページテーブルウォークを実施するために、メモリ管理ユニット18をトリガさせることは、トランスレーションデータが、それが実際に要求される前に、トランスレーションルックアサイドバッファ20において入手可能となることを保証し、それによって後のアクセス命令遅延を低減する。
命令デコーダ32は、プレロードヌルレジスタ36に連結され、プレロード操作が実施されない値である、メモリアドレスのヌル値を示すプレロード命令をデコードするとき、命令デコーダ32によって解釈されて使用されるヌル値を記憶する。この例示的実施形態では、プレロードヌルレジスタ36は、ソフトウェア制御下で、プログラム可能である。しかしながら、プレロードヌルレジスタ36が、ゼロ等の固定既定値を記憶してもよいか、または後述されるように、ハードウェア制御下で設定されてもよい可能性もある。ヌル値はまた、一連の値のうちのいずれか1つであってもよい可能性もあり、例えば、範囲内のあるメモリアドレス(それはプログラム可能である可能性がある)は、ヌル値と一致するものとして扱われる。
ヌル値がメモリアドレスの範囲に対応する実施形態は、次のような状況において有用であり得る。
MOV r0,#0x1000
PLD 〔r0〕
は、トランスレーションルックアサイドバッファの場合について、0x1000に対応するだけでなく、後に続く4kBページにも対応するマッピングをロードし、それゆえに次の
PLD 〔r0,#0x4〕
は、パフォーマンスに影響することなく破棄される可能性がある(および潜在的にある種のパフォーマンス向上をもたらす)。これはまた、キャッシュライン長がアーキテクチャー上不変ではないため、キャッシュラインフィルを実施するハードウェアに有用であり、したがって、後のPLDに使用されるストライドが、コードが実行され得る全てのチップ上に存在するキャッシュライン長の最小公倍数であるように、コードが書き込まれてもよく、それによってより長いキャッシュライン長での実施は、効果的に反復されるPLD(同じキャッシュラインをヒットしているPLD)を破棄することを選択してもよい。エントリーをタイムアウトする追加的機構もまた、長い間隔を空けて実行される同一のプレロード(アイテムが退去させられた場合があるような)を防止するために、退去を監視する代替と共に、実施されてもよい。
図2は、命令デコーダ32によって実施されるときの、プレロード命令PLD〔r〕のデコードを概略的に例示するフロー図である。ステップ38において、処理は、プレロード命令が受信されるまでウェイトする。プレロード命令が受信されるとき、ステップ40は、レジスタr内に記憶される値によって指定されるメモリアドレスが、ヌル値レジスタ36内に記憶される、ヌル値に対応するかどうかを決定する。一致がある場合、処理は終了する。一致がない場合、処理は、プレロード操作が実施されるステップ42に進む。プレロード操作は、アドレストランスレーションデータが、トランスレーションルックアサイドバッファ20内にまだ記憶されていない場合、任意の必要なページテーブルウォークおよび/またはキャッシュメモリ24に対する、キャッシュラインフェッチ操作を含んでもよい。
図3は、トランスレーションルックアサイドバッファ20を概略的に例示する。トランスレーションルックアサイドバッファ20は、対応する物理アドレストランスレーションおよびアクセスプロパティと共に、仮想アドレスタグの形態でアドレスマッピングデータを記憶する。使用するとき、仮想アドレスは、トランスレーションルックアサイドバッファ20によって使用され、アドレスマッピングデータ内に記憶される全ての仮想アドレスタグとの比較がなされる(例えば、トランスレーションルックアサイドバッファが、コンテントアドレッサブルメモリCAMとして使用される等)。一致が見出される場合、対応する物理トランスレーションは、そのメモリ領域についてのアクセスプロパティと共に、アドレスマッピングデータから読み出しされる。メモリがページに分割されるところのページは、4kB等のサイズを有し、それは仮想アドレスの最も有意な部分のみが、対応する物理アドレスにトランスレートされる必要があるようなサイズであることは、当業者であれば理解するであろう。メモリページ内の異なる位置に対応しているアドレス内のビットは、トランスレートされる必要がない。
図4は、トランスレーションルックアサイドバッファ20内にミスがあるときに発現する、ページテーブルデータ22を通した、ページテーブルウォーク操作を概略的に例示する。ミスが発現するとき、受信した仮想アドレスに関するアドレスマッピングデータは、トランスレーションルックアサイドバッファ20内には存在しない。したがって、仮想アドレスの部分(例えば、最も有意な部分)は、最初に、第1レベルテーブル44にインデックスするために使用され、ここでポインタは第2レベルテーブル46に見出される。仮想アドレスの異なる部分(例えば、2番目に有意な部分)は、次いで第2レベルテーブル46内の位置へのインデックスを形成するために使用され、そこからさらなるポインタが、第3レベルテーブル48を識別するために読み出しされる。仮想アドレスの最終部分(しかし仮想アドレスの剰余の全てではない)は、第3レベルページテーブル内のエントリーのインデックスとして消費され、それはトランスレーションルックアサイドバッファ20に返されることになる、物理アドレストランスレーションデータおよびアクセスプロパティを記憶する。
図5は、ヌル値が、アクセス不可能ページにアクセスしているページテーブルウォークに応じて、メモリ管理ユニット18によって、ハードウェア制御下に設定され得る様子を概略的に例示するフロー図である。ステップ50で、メモリ管理ユニット18による処理は、ページテーブルウォークが要求されるまでウェイトする。ページテーブルウォークが要求されるとき、ステップ52は、図4に例示するように、ページテーブルウォークを実施し、アクセスプロパティを示しているデータを含む、アドレスマッピングデータを返す。ステップ54は、返されたアクセスプロパティから、ページがアクセス不可能としてマークされているかどうかを決定する。ページが、アクセス不可能としてマークされていない場合、ステップ56は、ページテーブルデータを、トランスレーションルックアサイドバッファ20に返す。ページがアクセス不可能としてマークされている場合、ステップ58は、プレロードヌルレジスタ36内のヌル値を、ページテーブルウォークが実施されたばかりのページのメモリアドレスに対応するように設定する機能を果たす。このページテーブルは、アクセス不可能であり、したがってそのアクセス不可能ページに対する、さらなるページテーブルウォークを実施する意味はない。それゆえに、アクセス不可能ページ内のメモリアドレスを指定する、プレロード命令は、後に、ヌル値に対応しているものとして識別され、ページテーブルウォークは、かかるメモリアドレスに対するプレロード操作の一部としてはトリガされない。
図6は、連結リストデータ構造を概略的に例示する略図である。かかる連結リストデータ構造は、一般的に、データ処理内で使用され、そのデータのサイズが事前に知られていない場合に、大量のデータを柔軟に記憶するのに便利である。データは、固定サイズブロック内で消費されるデータ値として記憶され、各ブロックにおける最終エントリーは、その連結リストデータ構造内の次のデータブロックに向けてポイントしている。それゆえに、連結リストは、変化する数のブロックから形成され得、各ブロックは、リストにおける次のブロックに向けてポイントしている。リストにおける最終ブロックは、次のブロックへのポインタが見出される位置におけるヌル値の存在によって、最終ブロックとして示される。処理効率を高めるために、データブロックが最初に開くとき、次のポインタ値がプレロード命令によって使用されることが通常である。以前のブロックが最初にアクセスされるとき、そのようにして次のブロックに関して実施される、プレロード操作は、次のデータブロックが、データ処理における消費のために、実際に存在することが要求される前に、キャッシュロード、ページテーブルウォーク等の操作が実施されるための十分な時間を与える。しかしながら、最終データブロックに遭遇するとき、連結リストの最終部分の指標として記憶されるヌル値に関して、プレロード操作を実施することは、エネルギーおよび処理リソースの浪費である。したがって、本技術は、かかるヌル値が識別され、またプレロード操作が抑制されることを可能にする。
図7は、使用され得る仮想機械実施を例示する。前述の実施形態が、考慮している当技術をサポートする特定の処理ハードウェアを操作する装置および方法の観点から、本発明を実施する一方で、ハードウェアデバイスのいわゆる仮想機械実施を提供することもまた可能である。これらの仮想機械実施は、仮想機械プログラム510をサポートする、ホストオペレーティングシステム520を動作する、ホストプロセッサ530上で動作する。典型的には、大型の強力なプロセッサは、適正なスピードで実行する仮想機械実施を提供することが要求されるが、そのようなアプローチは、互換性または再利用の理由で、別のプロセッサに対してネイティブなコードを動作することが望ましいとき等、特定の状況において正当化され得る。仮想機械プログラム510は、仮想機械プログラム510によってモデル化されているデバイスである、リアルハードウェアによって提供され得る、アプリケーションプログラムインターフェースと同じアプリケーションプログラム500に、アプリケーションプログラムインターフェースを提供する。それゆえに、上述のメモリアクセスの制御を含むプログラム命令は、それらの仮想機械ハードウェアとの相互作用をモデル化するために、仮想機械プログラム510を使用して、アプリケーションプログラム500内で実行され得る。
本発明の例示的な実施形態について、添付の図面を参照して、本明細書中に詳細に説明したが、本発明は、これらの厳密な実施形態には制限されず、添付の特許請求の範囲に記載されているように、本発明の範囲および精神から逸脱せずに、当業者によって、本発明に種々の変更および修正を行うことができるということを理解されたい。
2 データ処理システム
4 プロセッサ
6 メモリ
8 レジスタバンク
10 乗算器
12 シフター
14 加算器
16 ロード/記憶ユニット

Claims (20)

  1. データを処理するための装置であって、
    プログラム命令に応答して、データ処理操作を実施するように構成される処理回路と、
    前記処理回路に連結され、前記プログラム命令に応答して、前記データ処理操作を実施するように、前記処理回路を制御するための制御信号を生成する、命令デコーダ回路と、
    を備え、前記命令デコーダ回路、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる前記メモリアドレスの場所を指定するプレロード命令をデコードする際に、前記メモリアドレスをヌル値と比較し、かつ、
    (i)前記メモリアドレスが、前記ヌル値と一致しない場合、前記プレロード操作を実施するための制御信号であって、前記処理回路を制御するための制御信号を生成し、
    (ii)前記メモリアドレスが、前記ヌル値と一致する場合、前記プレロード操作を実施するための制御信号であって、前記処理回路を制御するための制御信号を生成しないものである、装置。
  2. 仮想アドレスと物理アドレスとの間のトランスレーションを指定する、アドレスマッピングデータを記憶するように構成される、トランスレーションルックアサイドバッファ回路を含み、前記メモリアドレスは、仮想メモリアドレスであり、前記アドレスマッピングデータが、前記メモリアドレスのためのトランスレーションを指定しない場合、前記プレロード操作は、前記メモリアドレスのためのアドレスマッピングデータの、前記トランスレーションルックアサイドバッファ回路へのロードをトリガする、請求項1に記載の装置。
  3. 前記メモリアドレスのための前記アドレスマッピングデータが、ページテーブルウォーク操作を使用してアクセスされる、請求項2に記載の装置。
  4. キャッシュメモリを備え、前記プレロード操作が、前記メモリアドレスから前記キャッシュメモリへデータをロードする、請求項1、2、および3のいずれか1項に記載の装置。
  5. 前記ヌル値がゼロである、請求項1、2、3および4のいずれか1項に記載の装置。
  6. 前記ヌル値が、一連の値のうちの1つである、請求項1〜4のいずれか1項に記載の装置。
  7. 前記ヌル値が、プログラム可能な値である、請求項1〜4のいずれか1項に記載の装置。
  8. 前記ヌル値が、前記プレロード操作の対象とならないメモリアドレスを検出するように構成される検出回路によってプログラムされる、請求項6に記載の装置。
  9. 前記メモリアドレスが、メモリアドレスページに分割されるメモリアドレススペース内にあり、前記命令デコーダ回路が、アクセス不可能メモリページへのメモリアクセスであると以前に検出されたメモリアクセスに対応するように、前記ヌル値を設定する、請求項1〜4のいずれか1項に記載の装置。
  10. データを処理するための装置であって、
    プログラム命令に応答して、データ処理操作を実施するための処理手段と、
    前記プログラム命令に応答して制御信号を生成するための命令デコーダ手段であって、前記制御信号は、前記データ処理操作を実施するように前記処理手段を制御する、手段と、
    を備え、前記命令デコーダ手段は、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる前記メモリアドレスの場所を指定するプレロード命令をデコードする際に、前記メモリアドレスをヌル値と比較し、かつ、
    (i)前記メモリアドレスが、前記ヌル値と一致しない場合、前記プレロード操作を実施するための制御信号であって、前記処理手段を制御するための制御信号を生成し、
    (ii)前記メモリアドレスが、前記ヌル値と一致する場合、前記プレロード操作を実施するための制御信号であって、前記処理手段を制御するための制御信号を生成しないものである、装置。
  11. データを処理する方法であって、
    データ処理操作を制御するための制御信号を生成するために、プログラム命令をデコードするステップと、
    前記プログラム命令に応答して前記データ処理操作を実施するステップと
    含み、前記デコードするステップは、後のメモリアドレスへのメモリアクセスに備えるために、プレロード操作の対象となる前記メモリアドレスの場所を指定するプレロード命令をデコードする際に、前記メモリアドレスをヌル値と比較し、かつ、
    (i)前記メモリアドレスが、前記ヌル値と一致しない場合、前記プレロード操作を実施するための制御信号であって、前記データ処理操作を制御するための制御信号を生成し、
    (ii)前記メモリアドレスが、前記ヌル値と一致する場合、前記プレロード操作を実施するための制御信号であって、前記データ処理操作を制御するための前記制御信号を生成しないものである、方法。
  12. 前記方法は、仮想アドレスと物理アドレスとの間のトランスレーションを指定する、アドレスマッピングデータを記憶するステップをさらに含み
    前記メモリアドレスは、仮想メモリアドレスであり、
    前記方法は、前記アドレスマッピングデータが、前記メモリアドレスのためのトランスレーションを指定しない場合、前記プレロード操作に基づき、前記メモリアドレスのためのアドレスマッピングデータのロードをトリガするステップをさらに含む、請求項11に記載の方法。
  13. 前記メモリアドレスのための前記アドレスマッピングデータが、ページテーブルウォーク操作を使用してアクセスされる、請求項12に記載の方法。
  14. 前記プレロード操作が、前記メモリアドレスからキャッシュメモリにデータをロードする、請求項11、12、および13のいずれか1項に記載の方法。
  15. 前記ヌル値がゼロである、請求項11〜14のいずれか1項に記載の方法。
  16. 前記ヌル値が、一連の値のうちの1つである、請求項11〜14のいずれか1項に記載の方法。
  17. 前記ヌル値が、プログラム可能な値である、請求項11〜14のいずれか1項に記載の方法。
  18. 前記ヌル値、前記プレロード操作の対象とならないメモリアドレスをハードウェアにおいて検出することによってプログラムされるものである、請求項17に記載の方法。
  19. 前記メモリアドレスが、メモリアドレスページに分割されるメモリアドレススペース内にあり、前ヌル値が、以前に検出されたアクセス不可能メモリページへのメモリアクセスに対応するように設定される、請求項11〜14のいずれか1項に記載の方法。
  20. 請求項11〜19のいずれか1項に記載の方法に従って作動するようにコンピュータを制御する、コンピュータプログラムによって提供される仮想機械。
JP2011069731A 2010-04-22 2011-03-28 プレロード命令制御 Active JP5608594B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1006758.5A GB2479780B (en) 2010-04-22 2010-04-22 Preload instruction control
GB1006758.5 2010-04-22

Publications (2)

Publication Number Publication Date
JP2011227880A JP2011227880A (ja) 2011-11-10
JP5608594B2 true JP5608594B2 (ja) 2014-10-15

Family

ID=42270693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011069731A Active JP5608594B2 (ja) 2010-04-22 2011-03-28 プレロード命令制御

Country Status (4)

Country Link
US (1) US9632776B2 (ja)
JP (1) JP5608594B2 (ja)
CN (1) CN102236541B (ja)
GB (1) GB2479780B (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122613B2 (en) * 2013-03-07 2015-09-01 Arm Limited Prefetching of data and instructions in a data processing apparatus
US20160019161A1 (en) * 2013-03-12 2016-01-21 Hewlett-Packard Development Company, L.P. Programmable address mapping and memory access operations
US9639459B2 (en) * 2013-06-04 2017-05-02 Globalfoundries Inc. I/O latency and IOPs performance in thin provisioned volumes
US9418018B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Efficient fill-buffer data forwarding supporting high frequencies
US20160140034A1 (en) * 2014-11-13 2016-05-19 Samsung Electronics Co., Ltd. Devices and methods for linked list array hardware implementation
GB2543520B (en) * 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
JP6100952B2 (ja) * 2016-04-27 2017-03-22 株式会社日立製作所 情報処理装置
CN109983538B (zh) * 2016-11-29 2023-06-16 Arm有限公司 存储地址转换
DE102017208838A1 (de) * 2017-05-24 2018-11-29 Wago Verwaltungsgesellschaft Mbh Vorladen von Instruktionen
US10866904B2 (en) 2017-11-22 2020-12-15 Arm Limited Data storage for multiple data types
US10831673B2 (en) 2017-11-22 2020-11-10 Arm Limited Memory address translation
US10929308B2 (en) 2017-11-22 2021-02-23 Arm Limited Performing maintenance operations
CN109947497B (zh) * 2017-12-20 2021-06-08 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN112380013B (zh) * 2020-11-16 2022-07-29 海光信息技术股份有限公司 缓存预载方法、装置、处理器芯片及服务器

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6247746A (ja) 1985-08-27 1987-03-02 Fujitsu Ltd 割り込み制御方式
JPH02178859A (ja) 1988-12-29 1990-07-11 Nec Corp アドレス変換装置
JP3460002B2 (ja) * 1994-03-31 2003-10-27 三菱電機株式会社 キャッシュメモリ
US5842225A (en) 1995-02-27 1998-11-24 Sun Microsystems, Inc. Method and apparatus for implementing non-faulting load instruction
JPH08249228A (ja) 1995-03-09 1996-09-27 Fujitsu Ltd データ処理装置
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
JP2000148584A (ja) 1998-11-10 2000-05-30 Matsushita Electric Ind Co Ltd プリフェッチ方法および装置
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6553460B1 (en) 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
EP1139222A1 (en) * 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
US20020144054A1 (en) * 2001-03-30 2002-10-03 Fanning Blaise B. Prefetch canceling based on most recent accesses
JP4011871B2 (ja) 2001-08-13 2007-11-21 株式会社日立製作所 プロセッサ及びコンピュータシステム
US6785772B2 (en) * 2002-04-26 2004-08-31 Freescale Semiconductor, Inc. Data prefetching apparatus in a data processing system and method therefor
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
GB2402764B (en) 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
US7707359B2 (en) * 2005-12-09 2010-04-27 Oracle America, Inc. Method and apparatus for selectively prefetching based on resource availability
US7822941B2 (en) * 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US8806177B2 (en) * 2006-07-07 2014-08-12 International Business Machines Corporation Prefetch engine based translation prefetching
US8117398B2 (en) * 2008-01-18 2012-02-14 Texas Instruments Incorporated Prefetch termination at powered down memory bank boundary in shared memory controller

Also Published As

Publication number Publication date
GB2479780A (en) 2011-10-26
CN102236541B (zh) 2016-08-03
GB201006758D0 (en) 2010-06-09
US20110264887A1 (en) 2011-10-27
JP2011227880A (ja) 2011-11-10
US9632776B2 (en) 2017-04-25
CN102236541A (zh) 2011-11-09
GB2479780B (en) 2018-04-04

Similar Documents

Publication Publication Date Title
JP5608594B2 (ja) プレロード命令制御
CN107735775B (zh) 用于使用与指针相关联的范围信息来执行指令的装置和方法
EP1914627A2 (en) Invalidating storage, clearing buffer entries
US8190652B2 (en) Achieving coherence between dynamically optimized code and original code
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US9817762B2 (en) Facilitating efficient prefetching for scatter/gather operations
US10740248B2 (en) Methods and systems for predicting virtual address
EP3422192B1 (en) Address translation data invalidation
EP3881189B1 (en) An apparatus and method for controlling memory accesses
US11138128B2 (en) Controlling guard tag checking in memory accesses
US9678889B2 (en) Address translation in a data processing apparatus
JP5318197B2 (ja) ホストデータ処理装置内におけるデバイスエミュレーションのサポート
CN108874690B (zh) 数据预取的实现方法和处理器
US11397541B2 (en) Controlling guard tag checking in memory accesses
US11636048B2 (en) Handling guard tag loss
US7076635B1 (en) Method and apparatus for reducing instruction TLB accesses
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses
WO2019229412A1 (en) An apparatus and method for triggering action

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130410

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140717

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140804

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140901

R150 Certificate of patent or registration of utility model

Ref document number: 5608594

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250