Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5938053B2 - データ処理装置内におけるアドレス生成 - Google Patents
[go: Go Back, main page]

JP5938053B2 - データ処理装置内におけるアドレス生成 - Google Patents

データ処理装置内におけるアドレス生成 Download PDF

Info

Publication number
JP5938053B2
JP5938053B2 JP2013557168A JP2013557168A JP5938053B2 JP 5938053 B2 JP5938053 B2 JP 5938053B2 JP 2013557168 A JP2013557168 A JP 2013557168A JP 2013557168 A JP2013557168 A JP 2013557168A JP 5938053 B2 JP5938053 B2 JP 5938053B2
Authority
JP
Japan
Prior art keywords
address
instruction
data processing
offset value
frame
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
JP2013557168A
Other languages
English (en)
Other versions
JP2014510971A (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 JP2014510971A publication Critical patent/JP2014510971A/ja
Application granted granted Critical
Publication of JP5938053B2 publication Critical patent/JP5938053B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space 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)
  • Executing Machine-Instructions (AREA)

Description

本発明は、データ処理に関する。特に、本発明は、データ処理装置内におけるアドレス生成に関する。
アドレス指定モードは、ほとんどのデータプロセッサ設計における命令セットアーキテクチャの態様である。本願では、アドレス指定モードは、命令セット内のプログラム命令が、レジスタ内に保持される情報およびプログラム命令内でエンコードされたパラメータを使用して、メモリ内のオペランドのアドレスを計算する機構を指す。異なる命令セットアーキテクチャは、それらがサポートするアドレス指定モードの数が異なる。公知のアドレス指定モードの実施例は、アドレスが、アドレスパラメータ自体である、絶対アドレス指定と、アドレスが、指定されたベースレジスタのコンテンツに加算されたオフセットパラメータによって与えられる、「ベースプラスオフセット」アドレス指定と、アドレスが、プログラムカウンタの現在の値に加算されたオフセットパラメータによって与えられる、プログラムカウンタ(PC)相対アドレス指定である。PC相対アドレス指定は、プログラムコード内に記憶された任意のアドレスパラメータを修正することを必要とせずに、プロセッサによってサポートされる利用可能なアドレス空間内の任意の仮想アドレスにロードされ得るように、プログラムコードを位置独立的にすることを可能にするという利点を有する。位置独立コードは、動的にロードされる共有ライブラリのための現代のソフトウェアシステムにおいて、かつアプリケーションプログラムのためのセキュリティ手段として、ますます重要となりつつある。
しかしながら、データプロセッサのメモリ容量およびプログラムアプリケーションのメモリ要件が増加するにつれ、メモリアドレスを指定するために必要とされるビットの数は経時的に増加する傾向にある。したがって、制限された命令サイズを有する命令セットアーキテクチャでは、最大プログラム命令サイズに対して、多数のビットによって、どのようにメモリアドレスまたはオフセットパラメータを指定するかが問題である。相対アドレス指定では、ベースアドレスからのオフセットを提供する、オフセットパラメータと関連付けられたビットの数は、直接、そのアドレス指定モードを使用してアドレス可能なメモリの最大量を制限する。したがって、例えば、ARMプロセッサ等のRISCプロセッサでは、例えば、プログラム命令が、32ビットの最大サイズを有する、33ビット符号付きオフセットを指定するための要件は、問題を呈する。典型的には、複数の別個のプログラム命令が、命令セットアーキテクチャのプログラム命令のサイズと比較して大きいオフセットを構成するために要求されるであろう。以下の説明では、命令は、ある長さを有する一方、データは、ある幅を有すると見なされるものとする。さらに、所与の命令サイズに対して、より大きなオフセットを実装する以前に公知の方法の1つは、典型的には、メモリ場所内により大きなオフセットを記憶し、次いで、より小さいオフセット範囲を伴う相対アドレス指定モードを使用して、そのメモリ場所からそれをロードし、その後、第2の異なるプログラム命令内のそのより大きなオフセットを使用して、標的メモリアドレスを算出することを伴うであろう。これは、2つの異なる命令間の依存につながり、特に、初期ロード動作がデータキャッシュにミスを伴う場合、処理における非効率性を生じさせ、パイプラインの失速、したがって、処理遅延をもたらし得る。故に、付加的データメモリアクセスおよび記憶の必要性を伴わずに、プログラム命令内のパラメータを使用して、インラインに効率的に実装され得るように、オフセットが命令サイズと比較して大きいという、拡張されたオフセット範囲を有する位置独立アドレス指定機構を提供することが求められている。
本願では、フレームは、仮想アドレス空間の単位を指し、フレームサイズは、2バイトであって、Fは、所定の数のフレーム内オフセットビットである。フレームベースアドレスは、フレーム内の所定のオフセットにおけるアドレスである。プロセッサの仮想アドレス空間は、したがって、等サイズの非重複フレームの連続シーケンスに分割され、それぞれ、一意のフレームベースアドレスを有する。
本発明は、
データを処理するための処理回路と、
プログラム命令に応答して、前記データ処理を行う前記処理回路を制御するための制御信号を生成する命令デコーダと、
を備え、前記プログラム命令は、ある命令サイズを有するアドレス計算命令を備え、前記命令デコーダは、情報エンティティのメモリ場所を指定するフルアドレスが、少なくとも1つの補助プログラム命令を使用して、部分的アドレス結果から計算可能であるように、前記アドレス計算命令に応答して、前記部分的アドレス結果を非固定基準アドレスおよび部分的オフセット値から計算するためのアドレス計算演算を行い、前記部分的オフセット値は、前記命令サイズ以上のビット幅を有し、前記アドレス計算命令の少なくとも1つの部分的オフセットフィールド内でエンコードされる、データ処理装置を提供する。
本発明は、メモリアドレスが、情報エンティティの絶対メモリ場所を指定する、フルアドレスが、少なくとも1つの補助プログラム命令を使用して、部分的アドレス結果から計算可能であるように、アドレス計算命令を実行し、非固定基準アドレス(例えば、プログラムカウンタ)からの部分的アドレス結果および部分的オフセット値(例えば、非固定基準アドレスに対するメモリアドレス)を生成する第1の段階を伴うプロセスにおいて、効率的に計算されることができると認識する。部分的オフセット値は、命令サイズ以上のビット幅を有し、アドレス計算命令の少なくとも1つの部分的オフセットフィールド内でエンコードされる。
本技法による、アドレス計算命令自体内の部分的オフセット値のエンコーディングは、オペレーティングシステムによってロードされるプログラムイメージの一部を形成するように、プログラム作成時間において、オフセットを算出することによって、メモリに対して大きなオフセットを記憶する必要性を回避する。部分的オフセット値を計算するために使用される基準アドレスは、アドレス計算命令からデコードされる部分的オフセット値が、絶対(部分的)メモリアドレスではなく、相対オフセットを提供するように、非固定または可変基準アドレス(例えば、ゼロの固定基準アドレスとは対照的)である。
命令自体内でそれをインラインでエンコードすることによって、部分的オフセット値を指定するためのアドレス計算命令の使用と、情報エンティティの絶対メモリ場所を取得するための少なくとも1つの補助プログラム命令のアドレス計算命令との併用は、絶対メモリアドレスを指定する際、より柔軟性を提供し、効率を改善する。特に、少なくとも2つの命令(アドレス計算命令および少なくとも1つの補助プログラム命令)の指定された組み合わせにおいて、命令サイズに対して大きなオフセットをインラインで容易に指定可能にし、比較的大きなオフセットのメモリへの記憶およびそこからの読み出しを回避する。
部分的アドレス結果を計算するために使用されるフレームオフセット値は、アドレス計算命令自体の少なくとも1つのフレームオフセットフィールドから導出されるため、部分的アドレス結果が、既に、メモリ内に情報エンティティの場所情報の一部を備える。メモリ内の情報エンティティのための場所情報の残りの部分は、次いで、(i)メインメモリ内にオフセット値またはその一部を記憶するか、または(ii)フルオフセット自体を固定命令サイズを有するアドレス計算命令内に組み込むかのいずれかを必要とせずに、少なくとも1つのさらなるプログラム命令を介して、容易に指定される。したがって、本技法によると、拡張されたオフセット範囲を有する相対アドレスを指定するより効率的方法が、メインメモリの参照を介するのではなく、メモリアドレスをプログラム命令内のパラメータからインラインで構成されることを可能にするため、提供される。また、最適化コンパイラが、相対アドレス算出を上位部分および下位部分に分割し、これらの2つの部分をより独立して処理し、再利用することを可能にする。
いくつかの実施形態では、プログラム命令は、フルアドレスが、アドレス計算命令および少なくとも1つの補助プログラム命令を備える、少なくとも2つのプログラム命令を備えるセットの実行によって得られるように、少なくとも1つの補助プログラム命令を備える。
いくつかの実施形態では、フルアドレスは、フルオフセット値および非固定基準アドレスによって指定され、少なくとも1つの補助命令は、部分的オフセット値および補助オフセット値がともに、フルオフセット値を指定するように、補助オフセット値を提供する。
いくつかの実施形態では、補助オフセット値は、少なくとも1つのさらなる命令の少なくとも1つの補助オフセットフィールド内でエンコードされる。
いくつかの実施形態では、部分的オフセット値は、フルオフセット値の第1の部分を形成し、補助オフセット値は、フルオフセット値のさらなる部分を形成する。
いくつかの実施形態では、フルオフセット値のビット幅は、命令サイズ以上である。
いくつかの実施形態では、フルオフセット値は、33ビット符号付きオフセットであって、命令サイズは、32ビットである。
いくつかの実施形態では、データ処理装置は、所定のフレームサイズの複数のメモリフレームを有する仮想アドレス空間へのアクセスを有し、部分的オフセット値は、非固定基準アドレスに対して、情報エンティティを含有するフレームのためのフレームベースアドレスを指定するフレームオフセット値である。
いくつかの実施形態では、部分的オフセット値は、少なくとも1つの部分的オフセットフィールド内のエンコーディングから得られ、少なくとも1つの部分的オフセットフィールドの組み合わせられたビット幅を上回るビット幅を有する。
いくつかの実施形態では、部分的オフセット値は、少なくとも1つの部分的オフセットフィールドにおけるエンコーディングおよびゼロの所定のビット幅を備える。
いくつかの実施形態では、所定のフレームサイズは、2である、バイトの数に対応し、Fは、フレーム内オフセットビットの数であって、フレームベースアドレスは、フレーム内の所定のオフセットである。
いくつかの実施形態では、アドレス計算演算は、
(i)フレームオフセット値を、部分的オフセット値をエンコードするアドレス計算命令の少なくとも1つのフィールドから導出することと、
(ii)フレームベースアドレスを備える部分的アドレス結果を生成することと、
を含む。
いくつかの実施形態では、少なくとも1つの補助プログラム命令は、フレーム内オフセット値を指定する少なくとも1つのフレーム内オフセットフィールドを備え、フレーム内オフセット値は、フレームベースアドレスに対して、メモリのフレーム内の情報エンティティの場所を指定し、少なくとも1つの補助命令の実行に応じて、フレーム内オフセット値は、フレームベースアドレス結果と組み合わせられ、フルアドレスを生成する。
補助命令は、フレーム内オフセット値を部分的アドレス結果と組み合わせ、フルアドレスを生成する効果を有する、任意の命令であり得ることを理解されるであろう。しかしながら、いくつかの実施形態では、補助命令は、加算命令およびメモリアクセス命令、例えば、「ベースプラスオフセット」アドレス指定モードを使用する、ロードまたは記憶命令のうちの1つを備える。これらの命令は、一般に、他のデータ処理およびメモリアクセス目的のために提供され、このようなフルアドレス生成のためのこれらの命令の展開は、位置独立アドレス指定に特有の特殊目的補助命令を要求せずに、既存の命令の効率的再利用を提供する。
フルアドレスの計算は、初めのアドレス計算命令の実行直後、フルアドレスを算出するために使用される少なくとも1つのさらなるプログラム命令の実行を含み得ることを理解されるであろう。しかしながら、いくつかの実施形態では、データ処理装置は、アドレス計算命令および補助命令を備える、プログラム命令のシーケンスを実行するように構成され、補助命令が、アドレス計算命令の実行に続いてであるが、1つ以上の介入プログラム命令の実行後、実行される。これは、プログラム命令のシーケンス内のアドレス計算命令および補助命令を分離するための柔軟性を提供し、したがって、フルアドレスの計算の精度を落とすことなく、よりプログラミングの自由性をもたらす。
データ処理装置は、アドレス計算命令の単一インスタンスおよび関連付けられた補助命令の単一インスタンスを備える、プログラム命令のシーケンスを実行するように構成され得ることを理解されるであろう。しかしながら、いくつかの実施形態では、データ処理装置は、アドレス計算命令の複数のインスタンスを備えるプログラム命令のシーケンスを実行するように構成され、複数のインスタンスはそれぞれ、所定の情報エンティティの部分的アドレスを指定する、すなわち、複数のインスタンスは、同一の部分的アドレスを指定する。したがって、実行時、例えば、プログラムカウンタの異なる値を有する、複数の異なるアドレス計算命令を使用することができるが、アドレス計算命令の複数のインスタンスはすべて、少なくとも1つのさらなるプログラム命令の実行時、同一のフル標的アドレスを指定するように使用されることができる。これは、メモリアドレス計算内に付加的柔軟性を提供し、プログラムシーケンス内のいくつかの異なる点から容易に正確に計算することを可能にする。
代替として、アドレス計算命令の単一インスタンスを使用して、次いで、複数の少なくとも1つのさらなる補助プログラム命令によって使用されることができる、部分的アドレスを生成することができる。
アドレス計算命令ビット幅およびフルアドレスビット幅は、同一であり得ることを理解されるであろう。しかしながら、いくつかの実施形態では、アドレス計算命令は、ある命令ビット幅を有し、フルアドレスは、前記命令ビット幅と異なるフルアドレスビット幅を有する。
アドレス計算命令内の少なくとも1つのフレームオフセットフィールドの総幅およびフレームオフセット値は、同じビット幅を有し得ることを理解されるであろう。しかしながら、いくつかの実施形態では、少なくとも1つのフレームオフセットフィールドは、第1のビット総幅を有し、フレームオフセット値は、第1のビット幅を上回る第2のビット幅を有する。
アドレス計算命令内でエンコードされたフレームオフセット値およびフルアドレスは、同じビット幅を有し得ることを理解されるであろう。しかしながら、いくつかの実施形態では、フレームオフセット値は、第2のビット幅を有し、フルアドレスは、第2のビット幅と異なる第3のビット幅を有する。
部分的アドレス結果は、任意の所望のビット幅を有し得るが、いくつかの実施形態では、部分的アドレス結果は、フルアドレスと関連付けられた第3のビット幅と等しいビット幅を有するように計算されることを理解されるであろう。これは、部分的アドレス結果が、既に、フルアドレスに対応する所望のビット幅であるため、フルアドレスに到達するために行われる必要がある補助計算を簡略化する。
アドレス計算命令内の少なくとも1つのフレームオフセットフィールドの総幅に対応する第1のビット幅と、フルアドレス(および、可能性として、また、部分的アドレス結果)に対応する第3のビット幅は、広範囲の異なる可能性として考えられるビット幅から選択され得る。しかしながら、いくつかの実施形態では、第1のビット総幅は、21ビットであって、第3のビット幅は、64ビットである。これは、いくつかの公知のRISC命令セットアーキテクチャ命令が、32ビットの最大ビット幅を有し、64ビットのアドレスビット幅が、最大264バイトのサイズの仮想アドレス空間内の任意のアドレスを指定するために十分であるため、便宜的である。
部分的アドレス結果の計算は、幅広い種々の異なる処理機能のうちの任意の1つを備え得ることを理解されるであろう。しかしながら、いくつかの実施形態では、部分的アドレス結果の計算は、少なくとも1つのフレームオフセットフィールドをフレームサイズで乗算することによって、第1のビット幅をフレームオフセット値に対応する第2のビット幅に拡張することと、次いで、符号拡張を行うことによって、第2のビット幅をフルアドレスに対応する第3のビット幅に拡張することとを含む。このようなフレームオフセット値の拡張は、部分的アドレス結果が、基準アドレスを下回る場合、オフセット値が負となるであろうため、重要である。故に、フレームオフセット値は、それを基準アドレスに加算する前に、符号拡張される。
フルアドレスは、少なくとも1つのさらなる命令によって指定されたフレーム内オフセット値とともに、アドレス計算命令自体内の少なくとも1つのフィールドを介して指定されたフレームオフセット値を使用して、いくつかの異なる方法のうちの任意の1つにおいてこれらの情報片を組み合わせることによって、生成され得ることを理解されるであろう。しかしながら、一実施形態では、フレームオフセット値は、フレーム内オフセット値に加算され、フルアドレスに対応する組み合わせられたオフセット値を生成し、組み合わせられたオフセット値は、非固定基準アドレスに対する情報エンティティの場所を指定する。このようなフレームオフセット値とフレーム内オフセット値の加算は、フルアドレスの生成の簡単な方法であって、容易に実装され得る。
組み合わせられたオフセット値は、アドレス計算命令のビット幅未満のビット幅等、異なるビット幅の範囲のうちの任意の1つを有し得ることを理解されるであろう。しかしながら、いくつかの実施形態では、組み合わせられたオフセット値は、アドレス計算命令のビット幅を上回るビット幅を有する。これは、アドレス計算命令自体のビット幅に対して大きいオフセット値の使用を要求する。そのような比較的に大きいビット幅は、そうでなければ、メインメモリ内に大きなオフセットの記憶を要求し、それによって、プログラムサイズを増加させ、典型的には、メインメモリからのオフセット値のロードから生じるであろう、処理の非効率性を被る場合がある。
位置がフルアドレスのフレーム内オフセットビットに対応する部分的アドレス結果の一部は、フルアドレスの対応するフィールドが、少なくとも1つのさらなるプログラム命令の実行に応じて、算出された値を保持するように意図されるため、任意の所定の値を含有し得ることを理解されるであろう。したがって、例えば、少なくとも1つのさらなるプログラム命令が、加算命令である場合、フレーム内オフセット値は、部分的アドレス結果に加算され、フルアドレスを生成する。しかしながら、いくつかの実施形態では、フレームベースアドレス以外であるが、フルアドレスのフレーム内オフセットビットに対応する部分的アドレス結果の一部は、ゼロの数値を有するマルチビット値である。部分的アドレスの本部分が、ゼロと等しくなるように設定される場合、少なくとも1つのさらなるプログラム命令の実行に応じて、フレーム内オフセット値は、少なくとも1つのさらなるプログラム命令から、フルアドレスのフレーム内オフセットビット内に効率的にコピーされる。本ゼロ値は、実装が簡単であって、アドレス計算命令が実行されるプログラム命令のシーケンスの点にかかわらず、一貫した値が、位置が前記フルアドレスのフレーム内オフセットビットに対応する部分的アドレス結果の部分内に記憶されることを保証する。これは、プログラム命令のシーケンス内のアドレス計算命令の異なるインスタンスをすべて使用し、所定の変数の同一の部分的アドレスを確実に計算することができることを保証するのに役立つ。
フレームオフセット値が指定される基準アドレスは、任意の選択された基準アドレスに対応し得ることを理解されるであろう。しかしながら、いくつかの実施形態では、基準アドレスは、プログラムカウンタに依存する。これは、基準アドレスが暗示的であることを意味し、基準アドレスをアドレス計算命令自体内に保持するレジスタを明示的に指定する必要はない。したがって、命令は、より大きいフレームオフセットフィールドを含有することができる。さらに、多くのデータ処理装置は、プログラムカウンタ内のアドレスにしたがって、プログラム命令のシーケンスを実行するため、これは、フレームオフセット値を参照するために対比される便宜的ベースを提供し、位置独立アドレス指定を可能にする。
基準アドレスは、種々の異なる方法において、プログラムカウンタに依存し得るが、いくつかの実施形態では、非固定基準アドレスは、プログラムカウンタによってアドレスされるメモリのフレームのフレームベースアドレスを指定することを理解されるであろう。
非固定基準アドレスが、プログラムカウンタに依存する、いくつかの実施形態では、非固定基準アドレスは、前記プログラムカウンタ内の所定の数の最小有効ビットをゼロに設定することによって得られ、前記所定の数は、前記所定のフレームサイズに依存する。これは、部分的アドレスの計算において使用されるプログラムカウンタのビットが、また、プログラムカウンタ内のアドレスに依存するフレーム内のオフセットを提供するのではなく、プログラムカウンタによってアドレスされるメモリのフレームの下位アドレスのみ指定することを保証する。これは、フレームオフセットフィールドの総ビット幅が、フレームオフセット値のビット幅未満であって、プログラムコードのシーケンスにおける異なる点で生じる、異なるアドレス計算命令が、それらの異なるアドレス計算命令にポイントするプログラムカウンタが、その都度、異なる値を有するという事実にかかわらず、同一の部分的アドレスを計算するために一貫して使用されることができることを保証する。
所定の数のフレームオフセットビット、ひいては、メモリのフレームのサイズが、いくつかの異なる値のうちの任意の1つに設定され得ることを理解されるであろう。しかしながら、いくつかの実施形態では、メモリのフレームのサイズは、アドレス計算命令を備える一式のプログラムコードおよび関連付けられた情報エンティティが、データ処理装置上で起動するオペレーティングシステムによって再配置され得る、最小粒度以下に設定される。アドレス計算命令およびそれらが参照する情報エンティティが、同一の量だけ再配置され、その量が、フレームサイズの倍数である場合、フレームオフセット値およびフレーム内オフセット値は両方とも、不変のまま使用されてもよく、したがって、プログラムコードは、再配置プロセスの一部として修正される必要はない。
本技法による、メモリのフレームのサイズは、メモリ管理の目的のために使用されるメモリページサイズ、例えば、データ処理装置のメモリ管理ユニットによって使用されるメモリページサイズに等しく設定され得ることを理解されるであろう。しかしながら、いくつかの実施形態では、メモリページサイズは、フレームサイズの整数倍数に設定されてもよい。
第2の態様によると、本発明は、データ処理装置上でデータ処理を行うためのデータ処理方法であって、
プログラム命令に応答して、前記データ処理を行う処理回路を制御するための制御信号を生成することと、
ある命令サイズを有するアドレス計算命令に応答して、情報エンティティのメモリ場所を指定するフルアドレスが、少なくとも1つの補助プログラム命令を使用して、部分的アドレス結果から計算可能であるように、前記部分的アドレス結果を非固定基準アドレスおよび部分的オフセット値から計算するためのアドレス計算演算を行うことであって、前記部分的オフセット値は、前記命令サイズ以上のビット幅を有し、前記アドレス計算命令の少なくとも1つの部分的オフセットフィールド内でエンコードされることと、
を含む、方法を提供する。
第3の態様によると、本発明は、
データを処理するための処理回路と、
プログラム命令に応答して、前記データ処理を行う前記処理回路を制御するための制御信号を生成する命令デコーダと、
を備え、前記プログラム命令は、ある命令サイズを有する補助プログラム命令を備え、前記命令デコーダは、前記補助プログラム命令に応答して、情報エンティティのメモリ場所を指定するフルアドレス結果を計算するためのアドレス計算演算を行い、前記補助プログラム命令は、部分的オフセット値および非固定基準アドレスから計算された部分的アドレス結果に対応する入力オペランドを有し、前記補助プログラム命令は、補助オフセット値をエンコードする少なくとも1つの補助オフセットフィールドを備え、前記部分的オフセット値および前記補助オフセット値はともに、フルオフセット値を指定する、データ処理装置を提供する。
補助プログラム命令は、部分的オフセットおよび補助オフセットからのフルオフセットの生成の目的に特有でなくてもよく、例えば、汎用加算命令等の既存のデータ処理および/またはメモリアクセス命令であってもよい。しかしながら、既存のデータ処理命令は、本技法に従って、部分的オフセットおよび非ゼロ基準値から生成される部分的アドレス結果を前提として、フルオフセットを生成するように特別に構成される。
第4の態様によると、本発明は、データ処理装置上でデータ処理を行うためのデータ処理方法であって、
プログラム命令に応答して、前記データ処理を行う処理回路を制御するための制御信号を生成することと、
ある命令サイズを有する補助プログラム命令に応答して、情報エンティティのメモリ場所を指定するフルアドレス結果を計算するためのアドレス計算演算を行うことであって、前記補助プログラム命令は、部分的オフセット値および非固定基準アドレスから計算された部分的アドレス結果に対応する入力オペランドを有し、前記補助プログラム命令は、補助オフセット値をエンコードする少なくとも1つの補助オフセットフィールドを備え、前記部分的オフセット値および前記補助オフセット値はともに、フルオフセット値を指定することと、
を含む、方法を提供する。
第5の態様によると、本発明は、
データを処理するための処理回路と、
プログラム命令に応答して、前記データ処理を行う前記処理回路を制御するための制御信号を生成する命令デコーダと、
を備え、前記プログラム命令は、ある命令サイズを有するアドレス計算命令および少なくとも1つの補助プログラム命令を備える、命令対を備え、前記命令デコーダは、前記命令対に応答して、非固定基準アドレスに対して、情報エンティティのメモリ場所を指定するフルアドレス結果を計算するためのアドレス計算演算を行い、前記アドレス計算命令は、前記アドレス計算命令の少なくとも1つの部分的オフセットフィールド内で部分的オフセット値をエンコードし、前記少なくとも1つの補助命令は、補助オフセット値をエンコードする少なくとも1つの補助オフセットフィールドを備え、前記部分的オフセット値および前記補助オフセット値がともに、前記非固定基準アドレスに加算されると、前記フルアドレス結果を指定し、前記部分的オフセット値および前記補助オフセット値の組み合わせられたビット幅は、前記命令サイズ以上である、データ処理装置を提供する。
第6の態様によると、本発明は、データ処理装置上でデータ処理を行うためのデータ処理方法であって、
プログラム命令に応答して、前記データ処理を行う処理回路を制御するための制御信号を生成することと、
ある命令サイズを有するアドレス計算命令および少なくとも1つの補助プログラム命令を備える命令対に応答して、非固定基準アドレスに対して、情報エンティティのメモリ場所を指定するフルアドレス結果を計算するためのアドレス計算演算を行うことであって、前記アドレス計算命令は、前記アドレス計算命令の少なくとも1つの部分的オフセットフィールド内で部分的オフセット値をエンコードし、前記少なくとも1つの補助命令は、補助オフセット値をエンコードする少なくとも1つの補助オフセットフィールドを備え、前記部分的オフセット値および前記補助オフセット値がともに、前記非固定基準アドレスに加算されると、前記フルアドレス結果を指定し、前記部分的オフセット値および前記補助オフセット値の組み合わせられたビット幅は、前記命令サイズ以上であることと、
を含む、方法を提供する。
本発明の他の態様および特徴は、添付の請求項に記載される。
次に、本発明の好ましい実施形態が、付随の図面を参照して、単なる一例として説明される。
本発明のある実施形態による、データ処理装置を図式的に図示する。 符号付き33ビットPC相対オフセットが、2つの異なるプログラム命令の組み合わせを実行することによって、どのように2つの部分内で指定されるかを図式的に図示する。 本技法に従って、アドレス計算命令の実行に対応する、部分的アドレス結果を計算するために使用される、アドレス計算演算を図式的に図示する。 図3によって図示されるアドレス計算命令実行の結果に基づく、フルアドレス値の計算を図式的に図示する。 本技法による、アドレス計算命令のアセンブラ文法表現と、また、本技法による、少なくとも1つのさらなる命令のアセンブラ文法表現を図式的に図示する。 アドレス計算命令および補助命令が、本技法に従って、どのように可分性および再利用の特徴を有するかを図式的に図示する。 プログラムカウンタ相対アドレス指定命令の完全詳細を図式的に図示する。 本技法に対応する少なくとも1つのさらなる命令のための第1のオプションである、命令の加減算クラスの詳細を図式的に図示する。 本技法に対応する少なくとも1つのさらなる命令のための第1のオプションである、命令の加減算クラスの詳細を図式的に図示する。 は、ロード/記憶レジスタ命令に対応する、本技法による、代替のさらなる命令の詳細を図示する。 は、ロード/記憶レジスタ命令に対応する、本技法による、代替のさらなる命令の詳細を図示する。 本発明の仮想機械実装を図式的に図示する。
図1は、本発明のある実施形態による、データ処理装置を図式的に図示する。データ処理装置は、「システムオンチップ」を形成するいくつかの処理構成要素を含む、集積回路100を備える。特に、集積回路100は、実行パイプライン110、命令キャッシュ120、データキャッシュ130、一式の汎用レジスタ140、およびプログラムカウンタ150を備える。システムオンチップ100は、オフチップメモリ160へのアクセスを有する。
本実施形態のデータ処理装置100は、ロード−記憶アーキテクチャである、RISC(縮小命令セットコンピューティング)アーキテクチャを有し、データを処理する命令は、レジスタ上でのみ動作し、データ処理命令は、メモリにアクセスする命令と別個である。パイプライン110は、フェッチ回路112、デコード回路114、実行回路116、およびライトバック回路118を備える。一式の汎用レジスタ140は、オペランドおよび実行パイプライン110によって実行される命令の結果を記憶するために使用される。データ処理装置100は、複数の異なる命令タイプを実行するように構成される。特に、32ビット命令形態と称される、32ビット幅データ上で動作する命令と、64ビット命令形態と称される、64ビット幅データ上で動作する命令の両方を実行することができる。
フェッチ回路112は、命令キャッシュ120から命令がフィードされる。実行回路116は、データキャッシュ130から読み取り、レジスタファイルを読み取ることができる一方、ライトバック回路118は、データキャッシュ130への書き込みおよびそこからの読み取りの両方を行うことができる。情報は、実行段階において、レジスタ140から読み取られ、結果は、典型的には、ライトバック段階において、レジスタ140に書き込まれる。データ処理装置100はまた、オフチップメモリ160へのアクセスを有し、命令キャッシュ120またはデータキャッシュ130内に存在しない場合、命令および/またはデータをオフチップメモリ160から読み出すことを要求されてもよい。
プログラムカウンタ150は、実行されるべきプログラム命令に対応するメモリアドレスを含有する、特殊目的レジスタである。プログラムカウンタ150は、64ビット値を図1の配列内に記憶する。
32ビットおよび64ビット命令形態の両方の実行をサポートするために、汎用レジスタ140は、データ処理回路100が、32ビット命令形態を実行しているとき、高次32ビットが、読み取りに関して無視され、書き込みに関して所定の値に設定されるよう、レジスタ140が、一式の32ビットレジスタとして、データ処理装置によって見なされるように構成される、可変幅レジスタである。一方、データ処理装置が、64ビット命令形態を実行しているとき、データ処理装置100は、レジスタ140が、64ビットレジスタとして見なされ、そのフル64ビット幅が、利用されるように構成される。
データ処理装置100は、アーキテクチャの機械言語命令がどのように各メモリアクセス命令のメモリオペランドのアドレスを識別するかを定義する、種々のアドレス指定モードを備える、少なくとも1つの関連付けられた命令セットアーキテクチャを有する。所与のアドレス指定モードは、汎用レジスタ140および/またはプログラムカウンタ150内に保持される情報ならびに/あるいは機械命令自体またはその他の場所内に含有される定数を使用することによって、オペランドのメモリアドレスをどのように計算すべきかを指定する。異なるコンピュータアーキテクチャは、典型的には、それらがハードウェア内に提供するアドレス指定モードの数に関して、大きく異なる。アドレス指定モードの一実施例は、前述のように、PC相対命令のためのアドレスが、プログラムカウンタ内に保持されるアドレスに加算されるオフセットパラメータによって指定される、PC相対アドレス指定である。オフセットは、通常、符号付き値であって、現在の命令より低いまたは高いアドレスにおいて、コードまたはデータへの参照を可能にする。
データのための単純アドレス指定モードの実施例は、「ベースプラスオフセット」アドレス指定モードであって、アドレスは、指定されたベースレジスタのコンテンツに加算されたオフセットの観点から定義される。オフセットは、典型的には、符号付きまたは非符号付き値であって、ベースレジスタが、ベースプラスオフセットアドレス指定のために、ゼロの値に設定される場合、これは、絶対アドレス指定に相当する。絶対または直接アドレス指定は、非常に大きなオフセットのために、命令における空間を要求する。これは、問題かつ制約となり、オフセット値が、典型的には、16ビット以下に制限され得るため、命令幅が、例えば、32ビット幅命令に制限され得る。PC相対アドレス指定は、データまたはプログラムコードのために使用されることができ、データの場合、PC相対アドレス指定モードは、現在の命令から短距離だけ離れたプログラムメモリ内に記憶された「定数」からレジスタをロードするために使用されることができる。PC相対アドレス指定は、ベースプラスオフセットアドレス指定の特殊例であって、プログラムカウンタは、ベースレジスタとして選択される。
図1のRISCパイプライン化されたアーキテクチャ等のアーキテクチャは、典型的には、制限されたオフセット値によって、PC相対アドレス指定モードをサポートする。本アドレス指定モードが使用されるとき、コンパイラは、典型的には、命令として、それらの定数を偶発的に実行しないように防止するためにそれらを使用するサブルーチン直前または直後にリテラルプール内に定数を配置する。PC相対アドレス指定モードを使用するロード命令は、定数値をリテラルプールから読み取り、値を汎用レジスタ140のうちの1つ内に記憶し、次いで、次の命令を実行する。本PC相対データアドレス指定は、任意のデータレジスタを修正せず、代わりに、PCを分岐命令からの所与のオフセットにおける他の命令のアドレスに設定する、PC相対分岐とは異なることに留意されたい。PC相対アドレス指定またはベースプラスオフセットアドレス指定は、要求されるアドレスを得るために、データキャッシュ130またはオフチップメモリ160等のメモリへの恐らくいくつかの参照を行う必要なく、プログラム命令内でアドレスをインラインで構成するための能力を提供する利点を有する。
しかしながら、PC相対アドレス指定およびベースプラスオフセットアドレス指定は、アクセスされ得るアドレスの範囲が、オフセットを指定するために使用され得る命令エンコーディング内のビットの数によって判定されるという点において、制限を有する。例えば、12ビットオフセットは、わずか4096個の異なるアドレスのみ、ベースアドレスに対してアクセス可能にし、これは、大きなプログラムアプリケーションのサイズ(典型的には、数メガバイト)と比較して小さい。しかしながら、参照の局所性の原理が、該当し、短い時間にわたって、プログラムが、典型的には、アクセスするであろう、データアイテムの多くが、メモリ内において、相互に非常に近い傾向にあるであろう。それでもなお、メモリを間接的に参照するのではなく、プログラム命令内でインラインで指定される、オフセットを介して、より大きなアドレス範囲にアクセス可能であることが望ましい。アドレスまたはオフセットあるいはその一部をリテラルプールに記憶することによる、データのアドレス指定は、プログラムサイズを増加させ、オフセットのロードが、データキャッシュ130内にミスをもたらす場合、非効率性およびパイプライン失速につながり、それによって、オフチップメモリ160への時間のかかるアクセスを必要とし得る。さらに、メモリ場所からのデータのロードを伴う連続ロード命令間の依存性もまた、パイプラインバブルを引き起こし、処理の効率を低減させ得る。
本技法によると、例えば、符号付き33ビットオフセットを伴う、PC相対アドレスは、2つの異なる32ビット幅プログラム命令のみ使用して、指定されることができる。故に、少数の命令を使用して、大きなPC相対オフセット範囲を指定する。符号付き33ビットオフセットは、プログラムカウンタの現在の値より最大4ギガバイト高いまたは低い範囲内でアドレスを指定する能力を提供する。nビットアドレス計算命令および対応する補助命令を使用して、mビットオフセットを指定する本アドレス指定モード(mは、nより大きい)は、図1のデータ処理装置内に実装される。
図2は、フル33ビットオフセットが、2つの異なるプログラム命令の組み合わせを実行することによって、どのように2つの部分内で指定されるかを図式的に図示する。特に、「ADRP」命令と称されるアドレス計算命令は、符号付き33ビットオフセットの上位21ビットを得るために使用され、これは、プログラムカウンタの調節された値に加算され、結果は、図1の汎用レジスタ140のうちの1つに記憶される一方、複数の異なる形態、例えば、ADD、LDR、またはSTRのうちの1つをとり得る、補助(すなわち、少なくとも1つのさらなる)命令は、33ビットオフセットの下位12ビットを指定するために使用される。図2は、仮想メモリアドレスの3つの個別のフレームを示しており、各フレームは、本実施例では、4キロバイトの倍数である、フレームベースアドレスを伴う、4キロバイト単位のメモリを備える。図2に図示されるメモリのフレームは、物理的アドレス変換およびページテーブルルックアップの仮想目的のために、メモリをカテゴリ化するために使用される、仮想メモリのページと異なり、例えば、フレームサイズは、ページサイズと異なってもよいことに留意されたい。
第1のメモリフレーム210(プログラムカウンタのための「フレームP」と表される)は、メモリアドレス計算命令ADRP212の1つのインスタンスを備え、現在、図1のプログラムカウンタレジスタ内に記憶されるプログラムカウンタ150は、現在、ADRP命令212にポイントしている。メモリ220の第2の4キロバイトフレーム(データのための「フレームD」と表される)は、そのアドレスが指定されるべき変数「X」の値を含有する陰影領域222を備える。言い換えると、変数Xは、標的データアドレスに対応する。第3の4キロバイトフレーム230もまた、図2に示されるが、本実施例では、本フレームは、特定の関心命令または変数を含有しない。
連続フレームのベース間の仮想メモリにおける分離は、実質的に、一定であるように配列される。プログラムが、フレームベースアドレスP&Dとともに作成される場合、次いで、これらのフレームが、オペレーティングシステムによって、アドレスP’およびD’に再配置される場合、D−Pは、D’−P’と等しくなければならないことが要求される。本例示的配列では、フレームサイズは、4kbであるが、フレームサイズは、複数の異なる値から選択されることができることを理解されるであろう。しかしながら、プログラムコードおよび関連付けられたデータが、オペレーションシステムによって再配置され得る粒度は、フレームサイズの整数倍数であるべきという制約が存在する。これは、プログラムコードが、実際に、再配置されるかどうかにかかわらず、本技法による、相対アドレス指定が、有効であり続けることを保証するためである。フレームオフセットビットの数、ひいては、フレームサイズは、命令エンコーディング、すなわち、図8A、8B、9A、および9BのADD、LDR、およびSTR命令のオフセットまたは即値フィールド内のビットの最小数によって判定される。例えば、図4の12ビットオフセットは、4キロバイトのフレームサイズをもたらす。
図2に示されるように、変数「X」に対する部分的アドレス結果は、仮想メモリの「フレームD」220のベースに対応し、「hi21」で表されるフレームオフセットによって指定され、ADRP命令のエンコーディング内に含有される。本フレームオフセット値は、ADRP命令212を含有するフレームのベースアドレスに対応するプログラムカウンタの調節された値に対して、変数「X」に対するアドレスが位置するメモリのフレームのベースアドレスを識別する。したがって、ADRP命令の実行は、フレームPのベースアドレスに対して、フレームDのベースアドレスに対応する部分的アドレス結果を算出する。例えば、ADD、LDR、またはSTR命令のさらなる補助プログラム命令は、そのエンコーディング内に、標的変数「X」のフレーム220内の場所を指定する、図2において「lo12」で表されるフレーム内オフセットフィールドを提供する。したがって、フレームオフセット値hi21およびフレーム内オフセット値lo12の組み合わせによって得られる完全33ビットオフセットは、2つの異なる命令を実行することによって指定される。本配列では、ADRP命令およびさらなる命令、例えば、加算命令の両方とも、32ビットの幅を伴う命令である。
図3は、本技法に従って、部分的アドレス結果を計算するために使用され、ADRP命令の実行に対応する、アドレス計算演算を図式的に図示する。ADRP命令のエンコーディングは、図3の要素310に示される。示されるように、ADRP命令は、32ビット幅命令であって、下位5ビット、すなわち、ADRP[4:0]は、ADRP命令の実行の結果が書き込まれるべき宛先レジスタを指定する。ADRPエンコーディングのビット[23:5]は、第1のフレームオフセットフィールドである、「immhi」とラベルされる19ビット値である。第2のフレームオフセットフィールド「immlo」は、ADRPエンコーディングのビット[30:29]うちに指定される。第1および第2のフレームオフセットフィールドは、組み合わせられ(この場合、連結され)、33ビットフレームオフセット値322に対応する21ビット部分を形成する。図3に示されるように、フレームオフセット値322の残りの12ビットはすべて、ゼロビットである。12個のゼロビットは、フレームDのベース(図2参照)が、ADRP命令の実行結果(すなわち、部分的アドレス結果)によって指定されることを保証する。また、図3では、2つ以上のオフセットフィールド(フィールド「immhi」およびフィールド「immlo」)が、ADRP命令エンコーディング内に存在するが、いったんデコードされると、1つのみのオフセット値が存在することに留意されたい。したがって、アドレス計算命令の代替実装では、エンコーディング内の命令に、1つ、2つ、またはそれ以上のオフセットフィールドが存在し得るが、いったんデコードされると、単一オフセット値となる。ADRP命令のビット31は、命令によって指定される演算のタイプをエンコードし、この場合、プログラムカウンタに対して、4キロバイトメモリフレームのベースのアドレスを計算するためのPC相対アドレス指定命令である。
図3のデータ要素320は、図1のデコーディング回路140による、ADRP命令310のデコーディングの結果を示す。本64ビットデータ要素は、33ビットフレームオフセット値322および31ビット符号拡張を備える。デコーディングプロセスの間、ADRPエンコーディング310のimmhiフィールドおよびimmloフィールドは、連結され、64ビット値320のビット[32:12]を形成し、効果的に、連結されたオフセットフィールドを4キロバイトのフレームサイズで乗算する。64ビット値320の上位31ビット[63:33]は、次いで、ビット32のコピーに設定され、オフセット値の符号拡張をもたらす。64ビット値320の下位12ビット[11:0]は、基準値に設定され、この場合、12個のゼロビットのストリングである。フレームオフセット値322は、部分的オフセット値と見なされることができ、さらなるプログラム命令の実行に応じて、補助オフセット値と組み合わせられ、フルオフセットを形成し、情報エンティティのメモリ場所を指定するフルアドレスをもたらすであろう。図3の実施形態では、フレームオフセット値322は、符号拡張され、符号付きフレームオフセット値を生成する。フレームオフセット値322は、部分的アドレス結果と見なされることができる。代替として、符号拡張されたフレームオフセット値322は、部分的アドレス結果と見なされることができる。
ADRP命令の実行はまた、図3で350として表される64ビットプログラムカウンタレジスタ内に記憶される値をとり、その64ビット値の下位12ビットをゼロ化することを含む。下位12ビットのゼロ化は、事実上、64ビットプログラムカウンタの上位52ビット内の情報のみ、留保されることを意味する。プログラムカウンタのこれらの上位52ビットは、プログラムカウンタによってアドレスされるメモリのフレームのベースを指定する(図2参照)。ゼロ化されるか、または他の基準値に設定される、下位12ビットは、ADRP命令に対応するプログラムカウンタのメモリフレーム内のフレーム内オフセットに対応する。したがって、プログラムカウンタ350内の値の下位12ビットのゼロ化の中間結果360は、仮想メモリの「フレームP」220のフレームベースアドレスを指定する(図2参照)。
図3の要素370は、ADRP命令310の実行に応じて行われる、加算演算を行うための回路を示す。加算の結果は、宛先レジスタRdに書き込まれ、ADRPエンコーディング310のスケーリングされ、符号拡張されたフレームオフセットフィールドをプログラムカウンタに対応する64ビット値360(下位12ビットがゼロ化されている)に加算することによって得られる。本加算の結果は、図2に示されるように、標的変数「X」を含有するメモリフレームのベースを指定する、部分的アドレス結果410である。
図4は、図3に図示されるADRP実行370の結果に基づいて、図2の変数「X」のフルアドレス値の計算を図式的に図示する。32ビット加算エンコーディング420は、12ビットフレーム内オフセットフィールド422を備える。図4に示されるように、図3の実施例において宛先レジスタRdに書き込まれたADRP実行の64ビット結果410は、回路430によって、12ビットフレーム内オフセットフィールドによって指定された、12ビットフレーム内オフセット値、すなわち、加算エンコーディングのビット[21:10]を含有する、32ビット幅加算命令420から構成される64ビット値に加算される。本特定の実施形態(図4)では、フレーム内オフセット値は、フレーム内オフセットフィールドに等しいことに留意されたい。対照的に、図3から、フレームオフセット値は、ADRP命令の2つの連結されたフレーム−オフセットフィールド(すなわち、「immhi」および「immlo」)をスケーリングおよび符号拡張することによって、構成されることが分かる。図3のアドレス生成命令のフレームオフセットフィールド322は、符号拡張され、符号付きフレームオフセット値を生成するはずであるが、図4のフレーム内オフセットフィールド422は、符号拡張またはゼロ拡張のいずれかが行われ得る。図4の実装では、ゼロ拡張される。一般に、フレーム内オフセット値422(すなわち、デコードされたフレーム内オフセットフィールド422)は、必ずしも、フレーム内オフセットフィールドと等しくなく、また、少量だけスケーリングされ得る。例えば、本技法による、ある命令セットアーキテクチャでは、フレーム内オフセット値を生成するために、フレーム内オフセットフィールドは、アクセスのサイズだけスケーリングされ、すなわち、12ビットオフセットフィールドは、ハーフワード(2バイト)アクセスに対して、13ビットオフセット値を生成するために、2で乗算され、ワード(4バイト)アクセスに対して、4で乗算される等となるが、余剰高次ビットは、本アドレス指定モードに対して(すなわち、補助命令として、ADRPと併用されるとき)利用されない。加算命令420を実行する結果は、図2の変数「X」に対応するフルアドレスを含有する64ビット結果値440をもたらす。
したがって、図2に戻って参照すると、加算演算430の結果440は、仮想メモリの「フレームD」220内の変数「X」の正確な場所222を指定する。図4の例示的実施形態では、64ビットオフセットの下位12ビットを提供するために、加算命令が、さらなる(または、補助)命令として使用されたが、代替命令が、本目的のために使用され得ることに留意されたい。例えば、ベースプラスオフセットアドレス指定モードを利用する、記憶命令STRまたはロード命令LDRは、代替として、単一命令によって、フルアドレスを計算し、そのメモリ場所にアクセスするために使用され得る。加算命令等の以前に公知の命令は、補助命令として使用され、加算命令のソースレジスタフィールド内でエンコードされた値をADRP命令(アドレス計算命令)の実行の結果を記憶する、宛先レジスタに設定することによって、部分的オフセットからフルオフセットを計算することができる。故に、以前に公知の加算命令は、本技法に従って、加算命令(補助命令)の実行に応じて、フルオフセットおよびフルアドレスを生成するために、入力オペランドとして、部分的アドレス結果(すなわち、図3のADRP命令を実行する結果)を指定するように構成されることができる。以前に公知の命令は、本技法に従って、補助プログラム命令として構成されることができるが、代替実施形態では、新しい目的特有の補助命令が、本技法に従って、アドレス計算命令の実行によって生成される部分的アドレス結果を前提として、フルオフセットの計算のために展開され得る。
図5は、本技法のアドレス計算命令に対応するADRP命令と、また、この場合、LDR命令として示される、補助命令のアセンブラ文法表現を図式的に図示する。示されるように、ADRP命令は、宛先64ビットレジスタを指定し、部分的アドレス結果は、ADRP命令の実行後、記憶され、さらなる引数として、「ラベル」、すなわち、その4キロバイトフレームベースアドレスが計算されるべき変数の名称をとる。補助LDR命令は、第1の引数として、転送されるべき「Xt」によって表される64ビット宛先レジスタをとり、第2の引数として、64ビットベースレジスタおよびフルアドレスの下位12ビットに対応する12ビット非符号付き即値(すなわち、オフセット)の両方が、指定される。
また、図5に示されるのは、LDRエンコーディングのビット[21:10]が、12ビットフレーム内オフセットフィールドを含有するという事実である。図5における命令シーケンス530は、(i)そのベースレジスタとしてのADRP命令の宛先レジスタXd、(ii)フレーム内オフセット値に対応する下位12ビットを指定する、ADRP命令後のLDR命令の実行が、どのように組み合わせて、フルアドレスを計算し、同時に、そのアドレスからのデータをレジスタXt中にロードするために使用され得るかを示す。効果的に、レジスタXdは、基準アドレスに加えて、33ビットフレームオフセットの上位21ビットを含有する一方、LDR命令のフィールド「lo12」は、33ビットオフセットの下位12ビットを提供する。
対照的に、命令シーケンス540は、フル標的メモリアドレスを指定する以前に公知の代替方法を図示する、旧来の32ビットARMコードに対応する。これは、最初に、第1のPC相対LDR命令を使用して、メモリ内のリテラルプールからオフセットをロードし、次いで、メモリから読み出された値をプログラムカウンタに加算し、第2のLDR命令を介して、フルアドレスを生成することを伴う。シーケンス540の第1のLDR命令の実行の間、オフセットにアクセスする試みが、データキャッシュミスをもたらす場合、データ処理装置は、オフチップメモリにアクセスすることが要求され、パイプライン失速をもたらす可能性が高い。対照的に、本技法に対応する命令530のシーケンスは、2つのプログラム命令ADRPおよびLDRの組み合わせのプログラム命令エンコーディング内のパラメータとして、オフセットを完全にインラインで指定する。これは、540のシーケンスの2つのロード動作間の依存性を回避し、より効率的に実行される可能性が高く、さらに、定数オフセットを記憶するための余剰メモリを要求しない。
図6は、本技法による、アドレス計算命令および補助命令が、どのように可分性および再利用性の特徴を有するか、すなわち、フルアドレス計算の精度を留保するために、即時連続して、アドレス計算命令および補助命令を実行する必要はないことを図式的に図示する。図6の実施例1は、プログラムコードの単一シーケンスにおけるADRP命令のいくつかの異なる発生が、どのように許容されるかを示す。図6の左側には、ADRP命令の2つの個別のバージョンが、1つは、「off1」のフレーム内オフセットを伴う第1のプログラムカウンタ「PC1」を有するフレーム610内に、1つは、「off2」のフレーム内オフセットを伴う第2の異なるプログラムカウンタ「PC2」を有するフレーム620内に示される。
図3に示されるように、33ビットフレームオフセット値322の64ビット符号拡張バージョン320の下位12ビットと、部分的アドレスの下位12ビットは、値ゼロを有するという事実のため、第1のADRP命令ADRP1および第2のADRP命令ADRP2両方のそれぞれの実行は、標的変数「varX」を含有するフレーム630のベースアドレスに対応する結果をもたらす。これは、図6における値「off1」に対応する第1のプログラムカウンタPC1のフレーム内オフセットが、ADRP2命令のフレーム内オフセット値、すなわち、図6における「off2」と異なるという事実にもかかわらずである。変数「varX」のフルアドレスが、次いで、LDR命令の実行によって、フルアドレスの下位12ビットを提供することを介して、正確に導出され、それらの12ビットを命令ADRP1およびADRP2によって書き込まれた宛先レジスタ内に記憶されたフレームベースアドレスと組み合わせる。
図6はまた、「実施例2」と表される第2の実施例を示しており、命令シーケンスは、同一の標的変数varXのアドレスを計算するために使用され得る単一ADRP命令と2つの異なるさらなる命令とを備えるように図示される。ADRP命令の実行後、宛先レジスタXd内に記憶される値は、標的変数を含有するフレーム630のベースに対応するであろう。故に、LDR命令が実行されると、「:lo12:varX」として書かれる12ビットフレーム内オフセット値は、レジスタXd内に含有されるフレームベースアドレスに加算され、変数varXのフルアドレスをもたらすであろう。
いくつかの介入命令、すなわち、INSTRN P、INSTRN Q、およびINSTRN Rが、実施例2における6つの命令の最後である、STR命令の実行に先立って、本第2の例示的コードシーケンスにおいて実行される。本STR命令はまた、第1のADRP命令の実行の間、宛先レジスタXd内に記憶された結果を使用し、再び、その中で指定されたフレームベースアドレスをSTR命令自体内で指定された12ビットフレーム内オフセットと組み合わせる。実施例2のLDR命令およびSTR命令は両方とも、図3のフレーム630内の変数varXのための正確なフルアドレスをもたらす。したがって、図6は、本技法による、アドレス計算命令および少なくとも1つのさらなる命令が、分離可能であることを図示し、また、変数のアドレス計算の精度を落とさずに、プログラムコードの同一のシーケンス内に(すなわち、プログラムコード内の異なる場所において)、アドレス計算命令および補助命令のいくつかの発生が存在し得ることを図示する。ともにプログラム命令自体内にフルアドレスをインラインで指定する、本別個のアドレス計算命令および補助命令(LDRまたはSTR)の提供は、コンパイラが、相対アドレス指定に対して、オフセット値の上位部分および下位部分に分割し、オフセットの2つの構成要素を独立して処理し、プログラムコード内の別個の点において、2つの異なる命令の実行をもたらすことを可能にする。
例示的実施形態では、33ビットオフセットが指定されるが、本技法は、任意の選択されたサイズのオフセットを指定するために使用され得、オフセットサイズは、フルアドレスを構成するために使用されるアドレス計算命令および1つ以上のさらなる命令内に配分されるビットの数によってのみ制限されることを理解されるであろう。同様に、単一補助(さらなる)命令が、オフセットの下位ビットを提供するように図示されたが、本技法に従って、複数のさらなる命令を使用して、アドレス計算命令によって提供される部分的アドレスと組み合わせて、オフセットの異なる部分を提供し得ることを理解されるであろう。
図7は、本技法による、PC相対アドレス指定命令、すなわち、アドレス計算命令の完全詳細を図式的に図示する。要素710は、命令エンコーディングを示し、また、示されるのは、本命令のデコーディングおよび実行の間に行われる演算である。これらの演算はまた、前述の図3によって図式的に図示される。
図8Aは、本技法による、少なくとも1つのさらなる命令として使用するためのオプションの1つである、加減算命令の詳細を図式的に図示する。加算命令のエンコーディング810は、適切なアセンブラ文法およびオペランドとともに示される。
図8Bは、図8Aの加減算命令の実行をデコードするための擬似コードを図式的に図示する。
図9Aは、本技法による、少なくとも1つのさらなる命令のための図8AおよびBのものと異なるオプションに対応する、ロード−記憶レジスタ命令の詳細を図式的に図示する。要素910は、LDRまたはSTR命令のための命令エンコーディングとともに、ベースプラスオフセットアドレス指定モードを図式的に図示する。
図9Bは、図9AのLDRまたはSTR命令に対応するアセンブラ文法とともに、これらのロード−記憶レジスタ命令のデコードのための擬似コードを示す。
図10は、使用され得る仮想機械実装を図示する。前述の実施形態は、関係技法をサポートする具体的処理ハードウェアを動作させるための装置および方法の観点から、本発明を実装するが、また、ハードウェアデバイスのいわゆる仮想機械実装を提供することも可能である。これらの仮想機械実装は、仮想機械プログラム1010をサポートするホストオペレーティングシステム1020を典型的に起動する、ホストプロセッサ1030上で起動される。典型的には、大型の強力なプロセッサが、合理的速度で実行する、仮想機械実装を提供するために要求されるが、そのようなアプローチは、互換性または再利用の理由から、別のプロセッサにネイティブなコードを起動することを所望するとき等、ある状況においては、正当化され得る。仮想機械プログラム1010は、そのような実際のハードウェアデバイスによるプログラムの実行によってもたらされるであろう、同一の結果をもたらすために、アプリケーションプログラム(または、オペレーティングシステム)1000を実行可能である。したがって、前述のメモリアクセスの制御を含む、プログラム命令は、仮想機械プログラム1010を使用して、アプリケーションプログラム1000内から実行され、仮想機械ハードウェアとのその相互作用をモデル化してもよい。

Claims (36)

  1. データを処理するための処理回路と、
    プログラム命令のシーケンスに含まれるプログラム命令に応答して、前記データ処理を行う前記処理回路を制御するための制御信号を生成する命令デコーダと、
    を備え、前記プログラム命令のシーケンスは、ある命令サイズを有するアドレス計算命令を含み、前記命令デコーダは、情報エンティティのメモリ場所を指定するフルアドレスが、少なくとも1つの補助プログラム命令を使用して、部分的アドレス結果から計算可能であるように、前記アドレス計算命令に応答して、前記処理回路を制御するための制御信号を生成し、前記アドレス計算命令に応答して生成された制御信号に応答して、前記処理回路は、前記部分的アドレス結果を非固定基準アドレスおよび部分的オフセット値から計算するためのアドレス計算演算を行い、前記部分的オフセット値は、前記命令サイズ以上のビット幅を有し、前記アドレス計算命令の少なくとも1つの部分的オフセットフィールド内でエンコードされ、
    前記プログラム命令のシーケンスは、前記フルアドレスが、前記アドレス計算命令および前記少なくとも1つの補助プログラム命令を備える、少なくとも2つのプログラム命令を備えるセットの実行によって得られるように、前記少なくとも1つの補助プログラム命令を含み、
    前記フルアドレスは、フルオフセット値および前記非固定基準アドレスによって指定され、前記少なくとも1つの補助プログラム命令は、前記部分的オフセット値および補助オフセット値の両方に基づいて、前記フルオフセット値を指定するように、前記補助オフセット値を提供する、データ処理装置。
  2. 前記補助オフセット値は、前記少なくとも1つの補助プログラム命令の少なくとも1つの補助オフセットフィールド内でエンコードされる、請求項1に記載のデータ処理装置。
  3. 前記部分的オフセット値は、前記フルオフセット値の第1の部分を形成し、前記補助オフセット値は、前記フルオフセット値のさらなる部分を形成する、請求項1に記載のデータ処理装置。
  4. 前記フルオフセット値のビット幅は、前記命令サイズ以上である、請求項1に記載のデータ処理装置。
  5. 前記フルオフセット値は、33ビット符号付きオフセットであって、前記命令サイズは、32ビットである、請求項2に記載のデータ処理装置。
  6. 前記データ処理装置は、所定のフレームサイズの複数のメモリフレームを有する仮想アドレス空間へのアクセスを有し、前記部分的オフセット値は、前記非固定基準アドレスに対して、前記情報エンティティを含有するフレームのためのフレームベースアドレスを指定するフレームオフセット値である、請求項1から5のいずれか1項に記載のデータ処理装置。
  7. 前記部分的オフセット値は、前記少なくとも1つの部分的オフセットフィールドにおけるエンコーディングから得られ、前記少なくとも1つの部分的オフセットフィールドの組み合わせられたビット幅を上回るビット幅を有する、請求項6に記載のデータ処理装置。
  8. 前記部分的オフセット値は、前記少なくとも1つの部分的オフセットフィールドにおける前記エンコーディングに基づくビット列と、所定のビット幅を有するゼロの値の列からなるビット列の両方により示される値である、請求項7に記載のデータ処理装置。
  9. 前記所定のフレームサイズは、2である、バイトの数に対応し、Fは、フレーム内オフセットビットの数である、請求項6から8のいずれか1項に記載のデータ処理装置。
  10. 前記アドレス計算演算は、
    (i)前記フレームオフセット値を、前記部分的オフセット値をエンコードする前記アドレス計算命令の少なくとも1つの部分的オフセットフィールドから導出することと、
    (ii)前記フレームベースアドレスを備える前記部分的アドレス結果を生成することと、
    を含む、請求項9に記載のデータ処理装置。
  11. 前記少なくとも1つの補助プログラム命令は、フレーム内オフセット値を指定する少なくとも1つのフレーム内オフセットフィールドを備え、前記フレーム内オフセット値は、前記フレームベースアドレスに対して、前記メモリのフレーム内の前記情報エンティティの場所を指定し、前記少なくとも1つの補助プログラム命令の実行に応じて、前記フレーム内オフセット値は、前記フレームベースアドレス結果と組み合わせられ、前記フルアドレスを生成する、請求項10に記載のデータ処理装置。
  12. 前記少なくとも1つの補助プログラム命令は、加算命令およびメモリアクセス命令のうちの1つを備える、請求項1から11のいずれか1項に記載のデータ処理装置。
  13. 前記データ処理装置は、前記アドレス計算命令および前記少なくとも1つの補助プログラム命令を備える、プログラム命令のシーケンスを実行するように構成され、前記少なくとも1つの補助プログラム命令は、前記アドレス計算命令の実行に続いてであるが、1つ以上の介入プログラム命令の実行後、実行される、請求項12に記載のデータ処理装置。
  14. 前記データ処理装置は、前記アドレス計算命令の複数のインスタンスを備える、プログラム命令のシーケンスを実行するように構成され、前記複数のインスタンスのいずれが実行された場合においても、前記情報エンティティの前記部分的アドレス結果が提供される、請求項11に記載のデータ処理装置。
  15. 前記アドレス計算命令は、ある命令ビット幅を有し、前記フルアドレスは、前記命令ビット幅と異なるフルアドレスビット幅を有する、請求項1から14のいずれか1項に記載のデータ処理装置。
  16. 前記アドレス計算命令は、ある命令ビット幅を有し、前記フルアドレスは、前記命令ビット幅と異なるフルアドレスビット幅を有し、
    前記少なくとも1つの部分的オフセットフィールドである少なくとも1つのフレームオフセットフィールドは、第1のビット幅を有し、
    前記フレームオフセット値は、前記第1のビット幅を上回る第2のビット幅を有する、請求項6から9のいずれか1項に記載のデータ処理装置。
  17. 前記フレームオフセット値は、前記少なくとも1つのフレームオフセットフィールドのコンテンツを組み合わせ、前記所定のフレームサイズに応じて、スケーリング演算を行うことによって生成される、請求項16に記載のデータ処理装置。
  18. 前記フルアドレスビット幅は、前記フレームオフセット値と関連付けられた前記第2のビット幅と異なる、請求項17に記載のデータ処理装置。
  19. 前記第1のビット幅の総数は、21ビットであって、前記フルアドレスのビット幅である第3のビット幅は、64ビットである、請求項16に記載のデータ処理装置。
  20. 前記部分的アドレス結果の計算は、前記少なくとも1つのフレームオフセットフィールドを前記フレームサイズで乗算することによって、前記第1のビット幅を前記フレームオフセット値に対応する前記第2のビット幅に拡張することと、符号拡張を行うことによって、前記第2のビット幅を前記フルアドレスに対応する第3のビット幅に拡張することとを含む、請求項16に記載のデータ処理装置。
  21. 符号拡張され、下位12ビットがゼロとされたフレームオフセット値と、前記非固定基準アドレスとを加算して生成された値が、前記少なくとも1つの補助プログラム命令の実行に応じて、前記フレーム内オフセット値に加算されることにより、前記フルアドレスが生成される、請求項11に記載のデータ処理装置。
  22. ビット位置が前記フルアドレスの前記フレーム内オフセットビットに対応する前記部分的アドレス結果のビット部分は、ゼロの数値を有するマルチビット値である、請求項9、10、11及び14のいずれか1項に記載のデータ処理装置。
  23. 前記非固定基準アドレスは、プログラムカウンタに依存する、請求項1から22のいずれか1項に記載のデータ処理装置。
  24. 前記非固定基準アドレスは、プログラムカウンタに依存するものであり、
    前記非固定基準アドレスは、前記プログラムカウンタによってアドレスされるメモリのフレームのベースアドレスを指定する、請求項9に記載のデータ処理装置。
  25. 前記非固定基準アドレスは、前記プログラムカウンタ内の所定の数の最小有効ビットをゼロに設定することによって得られ、前記所定の数は、前記所定のフレームサイズに依存する、請求項24に記載のデータ処理装置。
  26. 前記メモリのフレームのサイズは、前記アドレス計算命令を備える一式のプログラムコードおよび関連付けられた情報エンティティが、前記データ処理装置上で起動するオペレーティングシステムによって再配置されることができる、最小粒度以下に設定される、請求項6から11、14、16から22、24および25のいずれか1項に記載のデータ処理装置。
  27. 前記データ処理装置は、メモリ管理ユニットを使用して、仮想アドレスを物理的アドレスに変換するように構成され、
    前記メモリ管理ユニットによるアドレス変換の管理単位であるブロックは、所定のメモリページサイズを有する、請求項26に記載のデータ処理装置。
  28. 前記メモリページサイズは、前記フレームサイズの整数の倍数に設定される、請求項27に記載のデータ処理装置。
  29. ホストハードウェア上で実行するコンピュータプログラムによって提供される、仮想機械であって、請求項1から28のいずれか1項に記載のデータ処理装置に従って、命令実行環境を提供する、仮想機械。
  30. データ処理装置上でデータ処理を行うためのデータ処理方法であって、
    プログラム命令のシーケンスに含まれるプログラム命令に応答して、前記データ処理を行う処理回路を制御するための制御信号を生成することと、
    ある命令サイズを有するアドレス計算命令に応答して、情報エンティティのメモリ場所を指定するフルアドレスが、少なくとも1つの補助プログラム命令を使用して、部分的アドレス結果から計算可能であるように、前記部分的アドレス結果を非固定基準アドレスおよび部分的オフセット値から計算するためのアドレス計算演算を行うことであって、前記部分的オフセット値は、前記命令サイズ以上のビット幅を有し、前記アドレス計算命令の少なくとも1つの部分的オフセットフィールド内でエンコードされることと、
    を含み、
    前記プログラム命令のシーケンスは、前記フルアドレスが、前記アドレス計算命令および前記少なくとも1つの補助プログラム命令を備える、少なくとも2つのプログラム命令を備えるセットの実行によって得られるように、前記少なくとも1つの補助プログラム命令を含み、
    前記フルアドレスは、フルオフセット値および前記非固定基準アドレスによって指定され、前記少なくとも1つの補助プログラム命令は、前記部分的オフセット値および補助オフセット値の両方に基づいて、前記フルオフセット値を指定するように、前記補助オフセット値を提供する、方法。
  31. プログラム命令のシーケンスを備え、データプロセッサに、請求項30に記載の方法を実行させるためのものである、コンピュータプログラム。
  32. 前記少なくとも1つの補助プログラム命令は、フレーム内オフセット値を指定するフィールドを有し、前記コンピュータプログラムは、データプロセッサに、前記補助プログラム命令に応答して、前記部分的アドレス結果および前記フレーム内オフセット値を使用して、前記フルアドレスを計算することを行わせるためのものである、請求項31に記載のコンピュータプログラム。
  33. 前記補助プログラム命令は、加算命令およびメモリアクセス命令のうちの1つを備える、請求項32に記載のコンピュータプログラム。
  34. 前記プログラム命令のシーケンスは、前記アドレス計算命令および前記補助プログラム命令を備え、前記補助プログラム命令は、前記アドレス計算命令の実行に続いてであるが、1つ以上の介入プログラム命令の実行後に実行される、請求項32または請求項33に記載のコンピュータプログラム。
  35. 前記プログラム命令のシーケンスは、前記アドレス計算命令の複数のインスタンスを備え、前記複数のインスタンスのいずれを実行しても、所定の情報エンティティに対しては、同一の前記部分的アドレス結果が得られるものである、請求項31から34のいずれか1項に記載のコンピュータプログラム。
  36. 前記アドレス計算命令の複数のインスタンスのうちのどれが、前記補助プログラム命令にとっての先行命令としてもっとも近いかに関わらず、前記補助プログラム命令を実行すると、前記所定の情報エンティティのための前記フルアドレスとして同一の値が得られるものである、請求項35に記載のコンピュータプログラム。
JP2013557168A 2011-03-07 2012-01-26 データ処理装置内におけるアドレス生成 Active JP5938053B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1103823.9 2011-03-07
GB1103823.9A GB2488980B (en) 2011-03-07 2011-03-07 Address generation in a data processing apparatus
PCT/GB2012/050158 WO2012120267A1 (en) 2011-03-07 2012-01-26 Address generation in a data processing apparatus

Publications (2)

Publication Number Publication Date
JP2014510971A JP2014510971A (ja) 2014-05-01
JP5938053B2 true JP5938053B2 (ja) 2016-06-22

Family

ID=43923299

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013557168A Active JP5938053B2 (ja) 2011-03-07 2012-01-26 データ処理装置内におけるアドレス生成

Country Status (10)

Country Link
US (2) US8954711B2 (ja)
EP (1) EP2652596B1 (ja)
JP (1) JP5938053B2 (ja)
KR (1) KR101980080B1 (ja)
CN (1) CN103582872B (ja)
GB (1) GB2488980B (ja)
IL (1) IL227486A (ja)
MY (1) MY176323A (ja)
TW (1) TWI531970B (ja)
WO (1) WO2012120267A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130113809A1 (en) * 2011-11-07 2013-05-09 Nvidia Corporation Technique for inter-procedural memory address space optimization in gpu computing compiler
US9110778B2 (en) * 2012-11-08 2015-08-18 International Business Machines Corporation Address generation in an active memory device
TWI463320B (zh) * 2012-11-29 2014-12-01 Mstar Semiconductor Inc 記憶體存取權限控制方法與相關記憶體管理系統
JP6179093B2 (ja) * 2012-12-03 2017-08-16 富士通株式会社 演算処理装置、演算処理方法
US9122495B2 (en) * 2012-12-19 2015-09-01 Bmc Software, Inc. Relative addressing usage for CPU performance
CN103986798B (zh) * 2014-05-12 2017-07-07 浪潮(北京)电子信息产业有限公司 一种实现系统地址映射的方法及装置
US10191680B2 (en) 2014-07-28 2019-01-29 Hewlett Packard Enterprise Development Lp Memory access control
WO2016018234A1 (en) 2014-07-28 2016-02-04 Hewlett-Packard Development Company, L.P. Memory access control
US20160092219A1 (en) * 2014-09-29 2016-03-31 Qualcomm Incorporated Accelerating constant value generation using a computed constants table, and related circuits, methods, and computer-readable media
US20160378480A1 (en) * 2015-06-27 2016-12-29 Pavel G. Matveyev Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
CN106959969B (zh) * 2016-01-12 2020-07-17 恒生电子股份有限公司 一种数据处理方法及装置
US10534610B2 (en) 2016-07-20 2020-01-14 International Business Machines Corporation PC-relative addressing and transmission
US11321236B2 (en) * 2018-01-08 2022-05-03 Microsoft Technology Licensing, Llc. Reduced instructions to generate global variable addresses
JP7367359B2 (ja) * 2018-08-10 2023-10-24 株式会社デンソー 車両用電子制御システム、ファイルの転送制御方法、ファイルの転送制御プログラム及び装置
GB2592069B (en) 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11769566B2 (en) * 2021-07-02 2023-09-26 Micron Technology, Inc. Programming codewords for error correction operations to memory
US11556356B1 (en) * 2021-09-23 2023-01-17 International Business Machines Corporation Dynamic link objects across different addressing modes
CN116248217B (zh) * 2022-12-14 2026-04-14 成都海光集成电路设计有限公司 时间同步运算方法、模组及数据传输设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2230258A5 (ja) * 1973-05-16 1974-12-13 Honeywell Bull Soc Ind
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
JP2522248B2 (ja) * 1986-05-24 1996-08-07 株式会社日立製作所 記憶装置アクセス機構
US5293594A (en) * 1986-05-24 1994-03-08 Hitachi, Ltd. Data processing system having a plurality of register groups and a logical or circuit for addressing one register of one of the register groups
JPH04156613A (ja) * 1990-10-20 1992-05-29 Fujitsu Ltd 命令バッファ装置
US5386534A (en) * 1992-10-27 1995-01-31 Motorola, Inc. Data processing system for generating symmetrical range of addresses of instructing-address-value with the use of inverting sign value
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
US5787495A (en) * 1995-12-18 1998-07-28 Integrated Device Technology, Inc. Method and apparatus for selector storing and restoration
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
JPH1049369A (ja) * 1996-08-07 1998-02-20 Ricoh Co Ltd データ処理装置
US6009510A (en) * 1998-02-06 1999-12-28 Ip First Llc Method and apparatus for improved aligned/misaligned data load from cache
US7124273B2 (en) * 2002-02-25 2006-10-17 Intel Corporation Method and apparatus for translating guest physical addresses in a virtual machine environment
US6799261B2 (en) * 2002-06-28 2004-09-28 Motorola, Inc. Memory interface with fractional addressing
GB2402757B (en) * 2003-06-11 2005-11-02 Advanced Risc Mach Ltd Address offset generation within a data processing system
EP1585028A1 (fr) * 2004-04-07 2005-10-12 Stmicroelectronics SA Procédé et dispositif de calcul d'adresses d'un programme stocké dans une mémoire segmentée
EP1936493A1 (en) * 2006-12-22 2008-06-25 Telefonaktiebolaget LM Ericsson (publ) Data-processing unit
GB2475653B (en) * 2007-03-12 2011-07-13 Advanced Risc Mach Ltd Select and insert instructions within data processing systems
EP2150889A1 (en) * 2007-04-10 2010-02-10 Cambridge Consultants Limited Data processing apparatus

Also Published As

Publication number Publication date
CN103582872B (zh) 2016-11-23
GB2488980A (en) 2012-09-19
EP2652596B1 (en) 2016-01-06
EP2652596A1 (en) 2013-10-23
US20120233440A1 (en) 2012-09-13
US8954711B2 (en) 2015-02-10
MY176323A (en) 2020-07-28
US9495163B2 (en) 2016-11-15
WO2012120267A1 (en) 2012-09-13
TW201237750A (en) 2012-09-16
IL227486A (en) 2017-07-31
KR20140014182A (ko) 2014-02-05
GB201103823D0 (en) 2011-04-20
IL227486A0 (en) 2013-09-30
TWI531970B (zh) 2016-05-01
KR101980080B1 (ko) 2019-08-28
US20150106585A1 (en) 2015-04-16
GB2488980B (en) 2020-02-19
CN103582872A (zh) 2014-02-12
JP2014510971A (ja) 2014-05-01

Similar Documents

Publication Publication Date Title
JP5938053B2 (ja) データ処理装置内におけるアドレス生成
JP3657949B2 (ja) 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア
JP6908601B2 (ja) ベクトルロード命令
JP2006185462A (ja) 高データ密度のriscプロセッサ
KR20180066146A (ko) 벡터 데이터 전송 명령어
US20090282220A1 (en) Microprocessor with Compact Instruction Set Architecture
CN110073332B (zh) 数据处理装置和方法
CA1264861A (en) Method and means for moving bytes in a reduced instruction set computer
US20100161950A1 (en) Semi-absolute branch instructions for efficient computers
US20110047355A1 (en) Offset Based Register Address Indexing
US6408380B1 (en) Execution of an instruction to load two independently selected registers in a single cycle
US20060095726A1 (en) Independent hardware based code locator
WO2022153026A1 (en) Memory copy size determining instruction and data transfer instruction
US8874882B1 (en) Compiler-directed sign/zero extension of a first bit size result to overwrite incorrect data before subsequent processing involving the result within an architecture supporting larger second bit size values
JP2025507837A (ja) スケーラブルベクトル命令セットアーキテクチャのためのサブベクトルサポート命令
JP5311008B2 (ja) 信号処理プロセッサ及び半導体装置
US20190146797A1 (en) Supplying constant values
JP2010020450A (ja) 信号処理プロセッサ及び半導体装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160405

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: 20160420

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160513

R150 Certificate of patent or registration of utility model

Ref document number: 5938053

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