JP6912707B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP6912707B2
JP6912707B2 JP2017096400A JP2017096400A JP6912707B2 JP 6912707 B2 JP6912707 B2 JP 6912707B2 JP 2017096400 A JP2017096400 A JP 2017096400A JP 2017096400 A JP2017096400 A JP 2017096400A JP 6912707 B2 JP6912707 B2 JP 6912707B2
Authority
JP
Japan
Prior art keywords
instruction
addresses
memory access
intervals
same
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
JP2017096400A
Other languages
English (en)
Other versions
JP2018194946A (ja
Inventor
慎吾 渡辺
慎吾 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017096400A priority Critical patent/JP6912707B2/ja
Priority to US15/964,197 priority patent/US11200057B2/en
Publication of JP2018194946A publication Critical patent/JP2018194946A/ja
Application granted granted Critical
Publication of JP6912707B2 publication Critical patent/JP6912707B2/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/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/3017Runtime instruction translation, e.g. macros
    • 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/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
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30047Prefetch instructions; cache control instructions
    • 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/30098Register arrangements
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

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

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
同時アクセス可能な複数のメモリブロックを有するデータメモリとの間でデータを遣り取りする複数のベクトルパイプラインを有する演算処理装置が知られている(特許文献1参照)。演算処理装置は、基本パターンのデータサイズを決める第1パラメータと、基本パターンにおける有効なデータ数を決める第2パラメータとに基づき、データメモリに対するストライドアクセスを行う。
また、プロセッサからのアクセスに基づき、メモリの動作を制御するメモリコントローラが知られている(特許文献2参照)。履歴格納回路は、プロセッサがアクセスするデータのアドレスが非連続である非連続アクセスの履歴情報を格納する。非連続アクセス予測回路は、履歴情報に基づき、非連続アクセスを予測する。アドレス出力回路は、非連続アクセスの予測に基づいて、メモリから読み出すデータの読み出しアドレスを出力する。データ格納回路は、読み出しアドレスに基づきメモリから読み出されたデータを格納する。
特開2012−128559号公報 特開2006−215799号公報
演算処理装置は、ストライドアクセスを実行するには、ストライドアクセスを実行しない場合よりも長時間を要する。
1つの側面では、本発明の目的は、1命令で複数のアドレスに対してメモリアクセスを行うメモリアクセス命令を高速に実行することができる演算処理装置及び演算処理装置の制御方法を提供することである。
演算処理装置は、1命令で複数のアドレスに対してメモリアクセスを行うメモリアクセス命令を実行する演算処理装置であって、前記メモリアクセス命令のアクセス対象である複数のアドレスの間隔がすべて同じであるかを検出する検出部と、前記複数のアドレスの間隔がすべて同じである場合、前記メモリアクセス命令を1命令としてデコードし、前記複数のアドレスの間隔が同じでない場合、前記メモリアクセス命令を複数の命令としてデコードするデコード部と、前記デコード部がデコードした命令に応じて、メモリアクセスを行うメモリアクセス部とを有する。
1つの側面では、1命令で複数のアドレスに対してメモリアクセスを行うメモリアクセス命令を高速に実行することができる。
図1は、第1の実施形態による演算処理装置の構成例を示す図である。 図2は、メモリアクセス処理ユニットがデータキャッシュメモリに対してロードを行う処理を説明するための図である。 図3は、ストライドアクセス検出回路の構成例を示す図である。 図4は、履歴テーブルの構成例を示す図である。 図5は、データキャッシュメモリの構成例を示す図である。 図6は、第1の実施形態による演算処理装置の制御方法を示すフローチャートである。 図7は、アドレス演算を示す図である。 図8は、第2の実施形態による履歴テーブルの構成例を示す図である。 図9は、第2の実施形態による演算処理装置の制御方法を示すフローチャートである。
(第1の実施形態)
図1は、第1の実施形態による演算処理装置の構成例を示す図である。演算処理装置は、命令キャッシュメモリ101と、命令フェッチユニット102と、命令デコードユニット103と、レジスタファイル104と、実効アドレス値演算器105と、メモリアクセス処理ユニット106と、データキャッシュメモリ107とを有する。演算処理装置は、さらに、履歴テーブル108と、ストライドアクセス検出回路109と、制御回路110とを有する。制御回路110は、演算処理装置内の各ユニットを制御する。
命令キャッシュメモリ101は、図8のインダイレクトアクセス命令800と、演算命令805と、を含む命令を記憶する。インダイレクトアクセス命令800は、ロード命令又はストア命令である。インダイレクトアクセス命令800は、オペコード801と、ディスティネーションレジスタ番号802と、ベースレジスタ番号803と、インデックスレジスタ番号804とを有する。オペコード801は、命令の種類を示す。ディスティネーションレジスタ番号802と、ベースレジスタ番号803と、インデックスレジスタ番号804は、レジスタファイル104内の複数のレジスタのうちのいずれかの番号である。ベースレジスタ番号803及びインデックスレジスタ番号804は、アクセス対象のアドレスを記憶するレジスタの番号である。その詳細は、後に図7を参照しながら説明する。ディスティネーションレジスタ番号802は、ロードしたデータを書き込むレジスタの番号又はストアするデータを記憶するレジスタの番号である。演算命令805は、算術演算、論理演算、レジスタ間のデータ移動を行う命令である。演算命令805は、オペコード806と、ディスティネーションレジスタ番号807と、第1ソースオペランドレジスタ番号808と、第2ソースオペランドレジスタ番号809と、を有する。オペコード806は、実行する命令の種類を示す。ディスティネーションレジスタ番号807と第1ソースオペランドレジスタ番号808と第2ソースオペランドレジスタ番号809は、それぞれ、レジスタファイル104内の複数のレジスタのうちいずれかの番号である。第1ソースオペランドレジスタ番号808と第2ソースオペランドレジスタ番号809は、それぞれ、演算器に入力するデータを記憶するレジスタの番号である。ディスティネーションレジスタ番号807は、演算した結果を書き込むレジスタの番号である。
命令フェッチユニット102は、命令キャッシュメモリ101に記憶されている命令121をフェッチし、そのフェッチした命令122を命令デコードユニット103に出力し、そのフェッチした命令のアドレス111を履歴テーブル108に出力する。命令デコードユニット103は、ヒット信号118及びストライド幅119を入力し、命令122をデコードし、ストライド幅119及びオペコード112を実効アドレス値演算器105に出力し、レジスタ番号113をレジスタファイル104に出力する。ヒット信号118及びストライド幅119については、後述する。オペコード112は、図8のオペコード801に対応する。レジスタ番号113は、ディスティネーションレジスタ番号802、ベースレジスタ番号803及びインデックスレジスタ番号804に対応する。
レジスタファイル104は、複数のレジスタを有し、レジスタ番号113に応じたオペランド114を実効アドレス値演算器105に出力する。例えば、レジスタファイル104は、ディスティネーションレジスタ番号802の他、図7に示すように、ベースレジスタ番号803が示すスカラーレジスタに記憶されているベースアドレス701と、インデックスレジスタ番号804が示すベクトルレジスタに記憶されている第1〜第4のインデックスアドレス711〜714を実効アドレス値演算器105に出力する。スカラーレジスタは、1個の値を記憶するレジスタである。ベクトルレジスタは、複数の値を記憶するレジスタである。
実効アドレス値演算器105は、ストライド幅119、オペコード112及びオペランド114を入力し、ストライド幅119、実効アドレス115及びオペランド114をメモリアクセス処理ユニット106に出力する。実効アドレス値演算器105は、図7に示すように、加算器703〜706を有する。加算器703は、ベースアドレス701及び第1のインデックスアドレス711を加算し、第1の実効アドレス721を出力する。加算器704は、ベースアドレス701及び第2のインデックスアドレス712を加算し、第2の実効アドレス722を出力する。加算器705は、ベースアドレス701及び第3のインデックスアドレス713を加算し、第3の実効アドレス723を出力する。加算器706は、ベースアドレス701及び第4のインデックスアドレス714を加算し、第4の実効アドレス724を出力する。実効アドレス値演算器105は、第1〜第4の実効アドレス721〜724を、実効アドレス115としてメモリアクセス処理ユニット106及びストライドアクセス検出回路109に出力する。
メモリアクセス処理ユニット106は、ストライド幅119、実効アドレス115及びオペランド114及びオペコード112を入力し、データキャッシュメモリ107に対してデータのロード又はストアを行う。
図2は、メモリアクセス処理ユニット106がデータキャッシュメモリ107に対してロードを行う処理を説明するための図である。例えば、第1の実効アドレス721が「5」であり、第2の実効アドレス722が「3」であり、第3の実効アドレス723が「13」であり、第4の実効アドレス724が「7」である。レジスタファイル104は、ディスティネーションレジスタ番号802が示すベクトルレジスタ201を有する。
オペコード112がロード命令を示す場合、メモリアクセス処理ユニット106は、データキャッシュメモリ107の5番地のデータFをロードしてベクトルレジスタ201の第1の領域に書き込み、データキャッシュメモリ107の3番地のデータDをロードしてベクトルレジスタ201の第2の領域に書き込み、データキャッシュメモリ107の13番地のデータNをロードしてベクトルレジスタ201の第3の領域に書き込み、データキャッシュメモリ107の7番地のデータHをロードしてベクトルレジスタ201の第4の領域に書き込む。
オペコード112がストア命令を示す場合、メモリアクセス処理ユニット106は、ベクトルレジスタ201の第1の領域に記憶されているデータFをデータキャッシュメモリ107の5番地にストアし、ベクトルレジスタ201の第2の領域に記憶されているデータDをデータキャッシュメモリ107の3番地にストアし、ベクトルレジスタ201の第3の領域に記憶されているデータNをデータキャッシュメモリ107の13番地にストアし、ベクトルレジスタ201の第4の領域に記憶されているデータHをデータキャッシュメモリ107の7番地にストアする。
演算処理装置は、データレベル並列性を活用するために、SIMD(Single Instruction Multiple Data streams)演算を行うことができる。また、演算処理装置は、SIMD演算が適用できる割合を向上させるため、インダイレクトアクセス命令800を実行することができる。インダイレクトアクセス命令800は、上記のように、1命令で複数の実効アドレス721〜724にメモリアクセスを行う命令であり、1命令で複数の独立したメモリアクセスが可能な命令である。
一般的には、命令デコードユニット103は、1個のインダイレクトアクセス命令を複数のスカラーアクセス命令に分解してデコードし、メモリアクセス処理ユニット106は、その複数のスカラーアクセス命令を実行する。スカラーアクセス命令は、1命令で1個のアドレスにメモリアクセスを行う命令である。例えば、図2の場合、命令デコードユニット103は、複数のアドレス(5番地、3番地、13番地及び7番地)にアクセスを行うインダイレクトアクセス命令を、5番地にアクセスするスカラーアクセス命令と3番地にアクセスするスカラーアクセス命令と13番地にアクセスするスカラーアクセス命令と7番地にアクセスするスカラーアクセス命令に分解してデコードする。すなわち、命令デコードユニット103は、1個のインダイレクトアクセス命令を複数のスカラーアクセス命令としてデコードする。メモリアクセス処理ユニット106は、その4個のスカラーアクセス命令を順に実行する。しかし、この実行は、メモリアクセス速度が低速になってしまう課題がある。以下、インダイレクトアクセス命令を高速に実行する演算処理装置の制御方法を説明する。
ストライドアクセス検出回路109は、アドレス検出部であり、実効アドレス値演算器105から実効アドレス115を入力し、インダイレクトアクセス命令の複数の実効アドレス115の間隔がすべて同じであるか否かを検出する。また、ストライドアクセス検出回路109は、検出した実効アドレス115の間隔が履歴テーブル108から出力されたストライド幅119と一致しているかについて、比較して検証する。以下、図3を参照しながら、ストライドアクセス検出回路109の構成を説明する。
図3は、ストライドアクセス検出回路109の構成例を示す図である。ストライドアクセス検出回路109は、減算器305,306,307と、比較器308,309,310と、論理和演算回路(OR回路)311と、論理積演算回路(AND回路)312と、を有する。実効アドレス115は、上記のように、第1の実効アドレス721と、第2の実効アドレス722と、第3の実効アドレス723と、第4の実効アドレス724を含む。
減算器305は、第2の実効アドレス722から第1の実効アドレス721を減算し、その減算結果を、第1の実効アドレス721と第2の実効アドレス722の間隔として出力する。減算器306は、第3の実効アドレス723から第2の実効アドレス722を減算し、その減算結果を、第2の実効アドレス722と第3の実効アドレス723の間隔として出力する。減算器307は、第4の実効アドレス724から第3の実効アドレス723を減算し、その減算結果を、第3の実効アドレス723と第4の実効アドレス724の間隔として出力する。
比較器308は、減算器305の出力値とストライド幅119とを比較し、減算器305の出力値とストライド幅119の結果とが一致する場合には1を出力し、減算器305の出力値とストライド幅119とが一致しない場合には0を出力する。比較器309は、減算器305及び減算器306の出力値を比較し、減算器305及び減算器306の出力値が同じである場合には1を出力し、減算器305及び減算器306の出力値が異なる場合には0を出力する。比較器310は、減算器306及び減算器307の出力値を比較し、減算器306及び減算器307の出力値が同じである場合には1を出力し、減算器306及び減算器307の出力値が異なる場合には0を出力する。
論理和演算回路311は、比較器308の出力値と制御信号120との論理和値を出力する。制御信号120が1の場合には、比較器308の結果にかかわらず、論理和演算回路311の出力は常に1となる。制御信号120が0の場合には、論理和演算回路311の出力は比較器308の出力と同値になり、比較器308の出力値が1の場合には、論理和演算回路311は1を出力し、比較器308の出力値が0の場合には、論理和演算回路311は0を出力する。
論理積演算回路312は、制御信号120が1である場合、比較器309及び3010の出力値の論理積値をストライド検出信号116として出力する。減算器305は、減算結果をストライド幅117として出力する。第1〜第4の実効アドレス721〜724の間隔がすべて同じである場合には、ストライド検出信号116が1になり、その時の第1〜第4の実効アドレス721〜724の間隔がストライド幅117である。第1〜第4の実効アドレス721〜724の間隔が同じでない場合には、ストライド検出信号116が0になる。以下、ストライド検出信号116が1である時のインダイレクトアクセス命令をストライドアクセス命令と呼ぶ。ストライドアクセス検出回路109は、実効アドレス115を入力し、ストライド検出信号116を制御回路110に出力し、ストライド幅117を履歴テーブル108に出力する。また、論理積演算回路312は、制御信号120が0である場合、比較器308、比較器309及び比較器310の出力値の論理積値をストライド検出信号116として出力する。第1〜第4の実効アドレス721〜724のアドレスの間隔がすべて同じ、かつ、ストライド幅119の値と同じである場合には、ストライド検出信号116を1として出力する。第1〜第4の実効アドレス721〜724のアドレスの間隔がすべて同じではない、又は、ストライド幅119と同じ値でない場合には、ストライド検出信号116は0となる。このようにストライドアクセス検出回路109は、制御信号120によって動作を変えることができる。なお、実効アドレス721〜724が4個の場合を例に説明したが、4個に限定されない。
図1において、制御回路110は、ストライド検出信号116が1の場合、履歴テーブル108に対して、命令アドレス111毎にストライド幅117を登録することができる。以下、図4を参照しながら、履歴テーブル108の構成を説明する。
図4は、履歴テーブル108の構成例を示す図である。履歴テーブル108は、エントリ部400及び比較器404を有する。命令アドレス111は、タグアドレス411及びインデックスアドレス412を有する。タグアドレス411は、命令アドレス111の上位アドレスである。インデックスアドレス412は、命令アドレス111の下位アドレスである。
まず、履歴テーブル108への登録方法を説明する。制御回路110は、ストライド検出信号116が1の場合、インデックスアドレス412が示すエントリ部400内のエントリに対して、有効を示す有効フラグ401を書き込み、タグアドレス411をタグアドレス402として書き込み、ストライド幅117をストライド幅403として書き込む。すなわち、制御回路110は、インダイレクトアクセス命令のインデックスアドレス412毎に、複数のアドレスの間隔がすべて同じであることを示す有効フラグ401、タグアドレス402及びストライド幅403を履歴テーブル108のエントリ部400に登録する。
次に、履歴テーブル108の検索方法を説明する。履歴テーブル108が命令アドレス111を入力すると、制御回路110は、インデックスアドレス412が示すエントリ部400内のエントリに記憶されている有効フラグ401、タグアドレス402及びストライド幅403を読み出す。比較器404は、読み出された有効フラグ401が有効を示し、かつ読み出されたタグアドレス402とタグアドレス411が同じ場合には、1のヒット信号118を出力し、それ以外の場合には、0のヒット信号118を出力する。また、履歴テーブル108は、読み出されたストライド幅403をストライド幅119として出力する。履歴テーブル108は、ヒット信号118及びストライド幅119を命令デコードユニット103に出力する。ストライド幅119は、命令デコードユニット103、実効アドレス値演算器105及びメモリアクセス処理ユニット106を介して、データキャッシュメモリ107に出力される。
なお、履歴テーブル108は、ダイレクトマップの構造を例に説明したが、セットアソシアティブやフルアソシアティブの構造でもよい。
インダイレクトアクセス命令がストライドアクセス命令である場合、メモリアクセス処理ユニット106は、データキャッシュメモリ107に対して高速にアクセスすることができる。以下、図5を参照しながら、その詳細を説明する。
図5は、データキャッシュメモリ107の構成例を示す図である。データキャッシュメモリ107は、8個のメモリバンク500と、行デコーダ503と、列デコーダ504と、マルチプレクサ505とを有する。
複数のメモリバンク500は、各アドレスのデータを記憶する。列デコーダ504は、選択部であり、実効アドレス115及びストライド幅119に応じて、下位アドレス選択信号502を出力し、メモリバンク500を選択する。行デコーダ503は、選択部であり、実効アドレス115に応じて、上位アドレス選択信号501を出力し、選択されたメモリバンク500内のアドレスを選択する。マルチプレクサ505は、ストライド幅119に応じて、列デコーダ504及び行デコーダ503により選択されたアドレスに対してデータをロード又はストアする。
まず、実効アドレス115が0番地、1番地、2番地、3番地であるストライドアクセス命令(ロード命令)の場合を例に説明する。このストライドアクセス命令は、連続する4個のアドレスのアクセス命令である。実効アドレス115の先頭アドレスは0番地であり、ストライド幅119は1である。行デコーダ503は、0の上位アドレス選択信号501を出力し、列デコーダ504は、0、1、2及び3の下位アドレス選択信号502を出力する。メモリバンク500は、第1行において、第1〜第4列に記憶されている0番地〜3番地のデータをロードしてマルチプレクサ505に出力する。マルチプレクサ505は、その0番地〜3番地のデータを出力する。そして、メモリアクセス処理ユニット106は、その0番地〜3番地のデータをベクトルレジスタ201に書き込む。
また、ストア命令の場合、マルチプレクサ505は、ベクトルレジスタ201内の4個のデータを第1〜第4列のメモリバンク500に出力する。メモリバンク500は、第1行において、第1〜第4列の0番地〜3番地に4個のデータをストアする。
次に、実効アドレス115が8番地、10番地、12番地、14番地であるストライドアクセス命令(ロード命令)の場合を例に説明する。実効アドレス115の先頭アドレスは8番地であり、ストライド幅119は2である。行デコーダ503は、8の上位アドレス選択信号501を出力し、列デコーダ504は、0、2、4及び6の下位アドレス選択信号502を出力する。メモリバンク500は、第2行において、第1、第3、第5及び第7列に記憶されている8番地、10番地、12番地、14番地のデータをロードしてマルチプレクサ505に出力する。マルチプレクサ505は、その8番地、10番地、12番地、14番地のデータを出力する。そして、メモリアクセス処理ユニット106は、その8番地、10番地、12番地、14番地のデータをベクトルレジスタ201に書き込む。
また、ストア命令の場合、マルチプレクサ505は、ベクトルレジスタ201内の4個のデータを第1、第3、第5及び第7列のメモリバンク500に出力する。メモリバンク500は、第2行において、第1、第3、第5及び第7列の8番地、10番地、12番地、14番地に4個のデータをストアする。
なお、図5には、説明の簡単のために、ストライド幅119が2以下の場合のメモリバンク500の構成を説明したが、メモリバンク数を増やすことにより、ストライド幅119が3以上のメモリバンク500の構成にすることもできる。
以上のように、データキャッシュメモリ107は、ストライドアクセス命令の場合、メモリアクセス処理ユニット106の制御の下、複数の実効アドレス115に対して並列にアクセスすることができる。したがって、インダイレクトアクセス命令がストライドアクセス命令である場合、メモリアクセス処理ユニット106は、データキャッシュメモリ107に対して高速にアクセスすることができる。
図6は、第1の実施形態による演算処理装置の制御方法を示すフローチャートである。ステップS601では、命令フェッチユニット102は、命令キャッシュメモリ101に記憶されているインダイレクトアクセス命令121をフェッチし、そのフェッチしたインダイレクトアクセス命令122を命令デコードユニット103に出力し、そのフェッチしたインダイレクトアクセス命令121のアドレス111を履歴テーブル108に出力する。
次に、ステップS602では、履歴テーブル108は、制御回路110の制御の下、図4に示すように、アドレス111に応じて、ヒット信号118及びストライド幅119を出力する。履歴テーブル108は、読み出された有効フラグ401が有効を示し、かつ読み出されたタグアドレス402とタグアドレス411が同じ場合には、1のヒット信号118を出力し、それ以外の場合には、0のヒット信号118を出力する。ヒット信号118が1である場合には、アドレス111に対応するインダイレクトアクセス命令がストライドアクセス命令であり、インダイレクトアクセス命令の複数のアドレスの間隔がすべて同じであることを意味する。ヒット信号118が0である場合には、アドレス111に対応するインダイレクトアクセス命令がストライドアクセス命令ではなく、インダイレクトアクセス命令の複数のアドレスの間隔が同じでないか、又は、アドレス111に対応するインダイレクトアクセス命令が初めてフェッチされたことを意味する。
次に、ステップS603では、命令デコードユニット103は、ヒット信号118が1及び0のいずれかであるのかを判定する。そして、命令デコードユニット103は、ヒット信号118が1であると判定した場合には、インダイレクトアクセス命令がストライドアクセス命令であると予測し、ステップS609に処理を進める。また、命令デコードユニット103は、ヒット信号118が0であると判定した場合には、インダイレクトアクセス命令がストライドアクセス命令ではないと予測し、ステップS604に処理を進める。
ステップS604では、命令デコードユニット103は、インダイレクトアクセス命令を複数のスカラーアクセス命令に分解してデコードする。例えば、図2に示すように、インダイレクトアクセス命令が5番地、3番地、13番地及び7番地のアドレスを有する場合、命令フェッチユニット102は、そのインダイレクトアクセス命令を、5番地のスカラーアクセス命令、3番地のスカラーアクセス命令、13番地のスカラーアクセス命令、及び7番地のスカラーアクセス命令に分解してデコードする。すなわち、命令デコードユニット103は、1個のインダイレクトアクセス命令を複数のスカラーアクセス命令としてデコードする。そして、命令デコードユニット103は、オペコード112及びレジスタ番号113を出力する。レジスタファイル104は、レジスタ番号113に応じて、オペランド114を実効アドレス値演算器105に出力する。
次に、ステップS605では、実効アドレス値演算器105は、オペコード112及びオペランド114に応じて、実効アドレス115及びオペランド114を出力する。メモリアクセス処理ユニット106は、オペコード112、実効アドレス115及びオペランド114に応じて、データキャッシュメモリ107に対して、複数のスカラーアクセス命令に対応するメモリアクセスを順に行う。複数のスカラーアクセス命令がロード命令の場合、メモリアクセス処理ユニット106は、データキャッシュメモリ107からデータをロードし、そのロードしたデータをレジスタファイル104内のレジスタに書き込む。複数のスカラーアクセス命令がストア命令の場合、メモリアクセス処理ユニット106は、レジスタファイル104内のレジスタに記憶されているデータをデータキャッシュメモリ107にストアする。
次に、ステップS606において、制御回路110は、制御信号120を1としてストライドアクセス検出回路109に出力する。ストライドアクセス検出回路109は、図3に示すように、複数の実効アドレス115の間隔がすべて同じであるか否かを検出し、ストライド検出信号116及びストライド幅117を出力する。複数の実効アドレス115の間隔がすべて同じである場合には、ストライド検出信号116が1になり、複数の実効アドレス115の間隔が同じでない場合には、ストライド検出信号116が0になる。
次に、ステップS607では、制御回路110は、ストライド検出信号116が1及び0のいずれであるのかを判定する。そして、制御回路110は、ストライド検出信号116が1であると判定した場合には、ステップS608に処理を進め、ストライド検出信号116が0であると判定した場合には、処理を終了し、次の命令の処理を繰り返す。
ステップS608では、制御回路110は、図4に示すように、履歴テーブル108において、インデックスアドレス412が示すエントリ部400内のエントリに対して、有効を示す有効フラグ401を書き込み、タグアドレス411をタグアドレス402として書き込み、ストライド幅117をストライド幅403として書き込む。その後、制御回路110は、処理を終了し、次の命令の処理を繰り返す。
ステップS609〜S612は、インダイレクトアクセス命令がストライドアクセス命令であると予測して行う処理である。ステップS609では、命令デコードユニット103は、インダイレクトアクセス命令(ストライドアクセス命令)を1命令として内部命令にデコードする。そして、命令デコードユニット103は、ストライド幅119、オペコード112及びレジスタ番号113を出力する。レジスタファイル104は、レジスタ番号113に応じて、オペランド114を実効アドレス値演算器105に出力する。
次に、ステップS610では、実効アドレス値演算器105は、ストライド幅119、オペコード112及びオペランド114に応じて、ストライド幅119、実効アドレス115及びオペランド114を出力する。メモリアクセス処理ユニット106は、ストライド幅119、オペコード112、実効アドレス115及びオペランド114に応じて、データキャッシュメモリ107に対して、ストライドアクセス命令のアクセスを行う。ストライドアクセス命令がロード命令の場合、メモリアクセス処理ユニット106は、データキャッシュメモリ107から複数のアドレスのデータを並列にロードし、そのロードしたデータをレジスタファイル104内のレジスタに並列に書き込む。ストライドアクセス命令がストア命令の場合、メモリアクセス処理ユニット106は、レジスタファイル104内のレジスタに記憶されている複数のアドレスのデータをデータキャッシュメモリ107に並列にストアする。
次に、ステップS611において、制御回路110は、制御信号120を0としてストライドアクセス検出回路109に出力する。ストライドアクセス検出回路109は、予測の成功又は失敗を検証するため、図3に示すように、複数の実効アドレス115の間隔がすべて同じであり、かつ、複数の実効アドレス115間のアドレスの間隔と履歴テーブル108から出力されたストライド幅119が同じであるか否かを検出し、ストライド検出信号116を出力する。複数の実効アドレス115間のアドレスの間隔がすべて同じであり、かつ、複数の実効アドレス115間のアドレスの間隔と履歴テーブル108から出力されたストライド幅119が同じである場合には、ストライド検出信号116が1になり、複数の実効アドレス115の間隔が同じではない場合、又は、複数の実効アドレス115間のアドレスの間隔と履歴テーブル108から出力されたストライド幅119が同じでない場合には、ストライド検出信号116が0になる。例えば、履歴テーブル108への登録時には、第1〜第4のアドレス721〜724の間隔がすべて同じであったが、その後、インデックスレジスタ番号804が示すベクトルレジスタに記憶されている第1〜第4のインデックスアドレス711〜714が書き換えられる場合がある。その場合、第1〜第4のアドレス721〜724の間隔が同じでなくなり、ストライド検出信号116が0になる場合がある。
次に、ステップS612では、制御回路110は、ストライド検出信号116が1及び0のいずれであるのかを判定する。そして、制御回路110は、ストライド検出信号116が0であると判定した場合には、予測失敗であるので、ステップS613に処理を進め、ストライド検出信号116が1であると判定した場合には、予測成功であるので、処理を終了し、次の命令の処理を繰り返す。
次に、ステップS613では、制御回路110は、予測が失敗したので、演算処理装置の各ユニットに対して、上記のストライドアクセス命令のメモリアクセス処理を取り消す処理を行う。
次に、ステップS614では、制御回路110は、予測が失敗したので、履歴テーブル108の上記のアドレス111に対応するエントリを削除する。
次に、ステップS615では、命令デコードユニット103は、インダイレクトアクセス命令を複数のスカラーアクセス命令に分解してデコードする。すなわち、命令デコードユニット103は、1個のインダイレクトアクセス命令を複数のスカラーアクセス命令としてデコードする。そして、命令デコードユニット103は、オペコード112及びレジスタ番号113を出力する。レジスタファイル104は、レジスタ番号113に応じて、オペランド114を実効アドレス値演算器105に出力する。
次に、ステップS616では、実効アドレス値演算器105は、オペコード112及びオペランド114に応じて、実効アドレス115及びオペランド114を出力する。メモリアクセス処理ユニット106は、ステップS605と同様に、オペコード112、実効アドレス115及びオペランド114に応じて、データキャッシュメモリ107に対して、複数のスカラーアクセス命令に対応するメモリアクセスを順に行う。その後、制御回路110は、処理を終了し、次の命令の処理を繰り返す。
以上のように、演算処理装置は、履歴テーブル108を用いることにより、命令のデコード前に、インダイレクトアクセス命令がストライドアクセス命令であるか否かを予測することができる。これにより、命令デコードユニット103は、インダイレクトアクセス命令がストライドアクセス命令である場合にはストライドアクセス命令を1命令としてデコードし、インダイレクトアクセス命令がストライドアクセス命令でない場合には複数のスカラーアクセス命令に分解してデコードする。すなわち、インダイレクトアクセス命令がストライドアクセス命令でない場合、命令デコードユニット103は、1個のインダイレクトアクセス命令を複数のスカラーアクセス命令としてデコードする。
例えば、インダイレクトアクセス命令がn個のアドレスを有する場合には、命令デコードユニット103は、そのインダイレクトアクセス命令をn個のスカラーアクセス命令に分解してデコードする。すなわち、インダイレクトアクセス命令がn個のアドレスを有する場合、命令デコードユニット103は、1個のインダイレクトアクセス命令をn個のスカラーアクセス命令としてデコードする。インダイレクトアクセス命令がストライドアクセス命令である場合、命令デコードユニット103は、そのストライドアクセス命令を1命令としてデコードするので、最大でn倍の速度向上を得ることができる。通常、nは、2〜16である。nが大きいほど、この効果は増大する。インダイレクトアクセス命令がストライドアクセス命令である場合、メモリアクセス処理ユニット106は、データキャッシュメモリ107に対して高速にアクセスすることができる。
(第2の実施形態)
図8は、第2の実施形態による履歴テーブル108の構成例を示す図である。以下、本実施形態が第1の実施形態と異なる点を説明する。インダイレクトアクセス命令800は、上記のように、オペコード801と、ディスティネーションレジスタ番号802と、ベースレジスタ番号803と、インデックスレジスタ番号804とを有する。また、演算命令805は、オペコード806と、ディスティネーションレジスタ番号807と、第1ソースオペランドレジスタ番号808と、第2ソースオペランドレジスタ番号809と、を有する。ディスティネーションレジスタ番号802と、ベースレジスタ番号803と、インデックスレジスタ番号804と、ディスティネーションレジスタ番号807と、第1ソースオペランドレジスタ番号808と、第2ソースオペランドレジスタ番号809は、レジスタファイル104内の複数のレジスタのうちのいずれかの番号である。ベースレジスタ番号803及びインデックスレジスタ番号804は、アクセス対象のアドレスを記憶するレジスタの番号である。第1ソースオペランドレジスタ番号808と第2ソースオペランドレジスタ番号809は、演算命令の入力対象のデータを記憶するレジスタの番号である。ディスティネーションレジスタ番号802は、ロードしたデータを書き込むレジスタの番号、又はストアするデータを記憶するレジスタの番号である。ディスティネーションレジスタ番号807は、演算結果を書き込むレジスタの番号である。
履歴テーブル108は、エントリ部810を有し、命令フェッチユニット102がフェッチしたインダイレクトアクセス命令800内のディスティネーションレジスタ番号802及びインデックスレジスタ番号804を入力する。制御回路110は、レジスタファイル104内のレジスタ番号毎に、複数のアドレスの間隔がすべて同じであることを示す有効フラグ811及びストライド幅812を履歴テーブル108のエントリ部810に登録する。
まず、履歴テーブル108への登録方法を説明する。制御回路110は、ストライド検出信号116が1の場合、インデックスレジスタ番号804が示すエントリ部810内のエントリに対して、有効を示す有効フラグ811を書き込み、ストライド幅117をストライド幅812として書き込む。
また、インダイレクトアクセス命令がロード命令の場合、そのロード命令が実効されると、メモリアクセス処理ユニット106は、ディスティネーションレジスタ番号802が示すレジスタに対して、ロードしたデータを書き込む。演算命令の場合、その演算が実行されるとディスティネーションレジスタ番号807が示すレジスタに対して演算結果を書き込む。その結果、ディスティネーションレジスタ番号802及びディスティネーションレジスタ番号807が示すレジスタの値が書き換えられてしまう。そこで、制御回路110は、ディスティネーションレジスタ番号802及びディスティネーションレジスタ番号807のエントリを履歴テーブル108から削除する。これにより、履歴テーブル108を用いた予測の失敗を防止することができる。
次に、履歴テーブル108の検索方法を説明する。履歴テーブル108がフェッチしたインダイレクト命令を入力すると、制御回路110は、インデックスレジスタ番号804が示すエントリ部810内のエントリに記憶されている有効フラグ811及びストライド幅812をそれぞれヒット信号118及びストライド幅119として出力する。履歴テーブル108は、有効フラグ811が有効を示す場合には、1のヒット信号118を出力し、有効フラグ811が無効を示す場合には、0のヒット信号118を出力する。
図9は、第2の実施形態による演算処理装置の制御方法を示すフローチャートである。ステップS901では、命令フェッチユニット102は、命令キャッシュメモリ101に記憶されている命令121をフェッチし、そのフェッチした命令122を命令デコードユニット103及び履歴テーブル108に出力する。
次に、ステップS902では、命令デコードユニット103は、命令122をデコードする。次に、ステップS903では、命令デコードユニット103は、命令122がインダイレクトアクセス命令及び演算命令のいずれであるのかを判定する。そして、命令デコードユニット103は、命令122がインダイレクトアクセス命令であると判定した場合には、ステップS904に処理を進め、命令122が演算命令であると判定した場合には、ステップS919に処理を進める。
次に、ステップS904では、履歴テーブル108は、制御回路110の制御の下、図8に示すように、アクセス命令122のインデックスレジスタ番号804に応じて、ヒット信号118及びストライド幅119を出力する。履歴テーブル108は、読み出された有効フラグ811が有効を示す場合には、1のヒット信号118を出力し、読み出された有効フラグ811が無効を示す場合には、0のヒット信号118を出力する。ヒット信号118が1である場合には、アクセス命令122がストライドアクセス命令であり、インダイレクトアクセス命令の複数のアドレスの間隔がすべて同じであることを意味する。ヒット信号118が0である場合には、アクセス命令122がストライドアクセス命令ではなく、インダイレクトアクセス命令の複数のアドレスの間隔が同じでないか、アクセス命令122が初めてフェッチされたことを意味する。
次に、ステップS905では、命令デコードユニット103は、ヒット信号118が1及び0のいずれかであるのかを判定する。そして、命令デコードユニット103は、ヒット信号118が1であると判定した場合には、インダイレクトアクセス命令がストライドアクセス命令であると予測し、ステップS914に処理を進める。また、命令デコードユニット103は、ヒット信号118が0であると判定した場合には、インダイレクトアクセス命令がストライドアクセス命令ではないと予測し、ステップS906に処理を進める。
ステップS906では、命令デコードユニット103は、1個のインダイレクトアクセス命令を複数のスカラーアクセス命令に分解してデコードする。すなわち、命令デコードユニット103は、1個のインダイレクトアクセス命令を複数のスカラーアクセス命令としてデコードする。そして、命令デコードユニット103は、オペコード112及びレジスタ番号113を出力する。レジスタファイル104は、レジスタ番号113に応じて、オペランド114を実効アドレス値演算器105に出力する。
次に、ステップS907では、履歴テーブル108は、制御回路110の制御の下、図8に示すように、ディスティネーションレジスタ番号802に応じて、ヒット信号118及びストライド幅119を出力する。
次に、ステップS908では、制御回路110は、ヒット信号118が1及び0のいずれであるのかを判定する。そして、制御回路110は、ヒット信号118が1であると判定した場合には、ステップS909に処理を進め、ヒット信号118が0であると判定した場合には、ステップS910に処理を進める。
ステップS909では、制御回路110は、ディスティネーションレジスタ番号802に対応するエントリを履歴テーブル108から削除し、ステップS910に処理を進める。
ステップS910では、実効アドレス値演算器105は、オペコード112及びオペランド114に応じて、実効アドレス115及びオペランド114を出力する。メモリアクセス処理ユニット106は、図6のステップS605と同様に、オペコード112、実効アドレス115及びオペランド114に応じて、データキャッシュメモリ107に対して、複数のスカラーアクセス命令に対応するメモリアクセスを順に行う。
次に、ステップS911では、ストライドアクセス検出回路109は、図3に示すように、複数の実効アドレス115の間隔がすべて同じであるか否かを検出し、ストライド検出信号116及びストライド幅117を出力する。複数の実効アドレス115の間隔がすべて同じである場合には、ストライド検出信号116が1になり、複数の実効アドレス115の間隔が同じでない場合には、ストライド検出信号116が0になる。例えばアクセス命令(ストライドアクセス命令)121が初めてフェッチされた場合には、ストライド検出信号116が1になる。
次に、ステップS912では、制御回路110は、ストライド検出信号116が1及び0のいずれであるのかを判定する。そして、制御回路110は、ストライド検出信号116が1であると判定した場合には、ステップS913に処理を進め、ストライド検出信号116が0であると判定した場合には、処理を終了し、次の命令の処理を繰り返す。
ステップS913では、制御回路110は、図8に示すように、履歴テーブル108において、アクセス命令122のインデックスレジスタ番号804が示すエントリ部810内のエントリに対して、有効を示す有効フラグ811を書き込み、ストライド幅117をストライド幅812として書き込む。その後、制御回路110は、処理を終了し、次の命令の処理を繰り返す。
ステップS914では、命令デコードユニット103は、インダイレクトアクセス命令(ストライドアクセス命令)を1命令として内部命令にデコードする。そして、命令デコードユニット103は、ストライド幅119、オペコード112及びレジスタ番号113を出力する。レジスタファイル104は、レジスタ番号113に応じて、オペランド114を実効アドレス値演算器105に出力する。
次に、ステップS915では、履歴テーブル108は、制御回路110の制御の下、図8に示すように、ディスティネーションレジスタ番号802に応じて、ヒット信号118及びストライド幅119を出力する。
次に、ステップS916では、制御回路110は、ヒット信号118が1及び0のいずれであるのかを判定する。そして、制御回路110は、ヒット信号118が1であると判定した場合には、ステップS917に処理を進め、ヒット信号118が0であると判定した場合には、ステップS918に処理を進める。
ステップS917では、制御回路110は、ディスティネーションレジスタ番号802に対応するエントリを履歴テーブル108から削除し、ステップS918に処理を進める。
ステップS918では、実効アドレス値演算器105は、ストライド幅119、オペコード112及びオペランド114に応じて、ストライド幅119、実効アドレス115及びオペランド114を出力する。メモリアクセス処理ユニット106は、図6のステップS610と同様に、ストライド幅119、オペコード112、実効アドレス115及びオペランド114に応じて、データキャッシュメモリ107に対して、ストライドアクセス命令のアクセスを行う。その後、制御回路110は、処理を終了し、次の命令の処理を繰り返す。
ステップS919では、命令デコードユニット103は、演算命令をデコードし、ステップS915に処理を進める。ステップS915では、履歴テーブル108は、制御回路110の制御の下、図8に示すように、演算命令のディスティネーションレジスタ番号807に応じて、ヒット信号118及びストライド幅119を出力する。次に、ステップS916では、制御回路110は、ヒット信号118が1及び0のいずれであるのかを判定する。そして、制御回路110は、ヒット信号118が1であると判定した場合には、ステップS917に処理を進め、ヒット信号118が0であると判定した場合には、ステップS918に処理を進める。ステップS917では、制御回路110は、演算命令のディスティネーションレジスタ番号807に対応するエントリを履歴テーブル108から削除し、ステップS918に処理を進める。ステップS918では、演算命令は、第1ソースオペランドレジスタ番号808が示すデータと第2ソースオペランドレジスタ番号809が示すデータを入力とし、オペコード112が示す演算を行い、演算結果をディスティネーションレジスタ番号807が示すレジスタに書き込む。その後、制御回路110は、処理を終了し、次の命令の処理を繰り返す。
以上のように、インダイレクトアクセス命令がストライドアクセス命令である場合、メモリアクセス処理ユニット106は、データキャッシュメモリ107に対して高速にアクセスすることができる。
また、制御回路110は、ディスティネーションレジスタ番号802が示すエントリを履歴テーブル108から削除するので、第1の実施形態のような予測の失敗を防止できる。これにより、演算処理装置は、図6のステップS611のストライドアクセスの検証処理、及びステップS613〜S616のストライドアクセス命令の実行の取り消し処理を行う必要がなくなる。
また、ストライドアクセス検出回路109は、ステップS911の履歴テーブル108への登録時のみ動作する。この場合、ストライド幅119との比較は不要になるため、比較器308と論理和演算回路311と制御信号120は不要になる。さらに、ステップS906において、命令デコードユニット103は、インダイレクトアクセス命令を複数のスカラーアクセス命令に分解してデコードするので、演算処理装置は、低速動作となる。そのため、ストライドアクセス検出回路109は、低速動作の回路でよいので、コストを低減できる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
101 命令キャッシュメモリ
102 命令フェッチユニット
103 命令デコードユニット
104 レジスタファイル
105 実効アドレス値演算器
106 メモリアクセス処理ユニット
107 データキャッシュメモリ
108 履歴テーブル
109 ストライドアクセス検出回路
110 制御回路

Claims (12)

  1. 1命令で複数のアドレスに対してメモリアクセスを行うメモリアクセス命令を実行する演算処理装置であって、
    前記メモリアクセス命令のアクセス対象である複数のアドレスの間隔がすべて同じであるかを検出する検出部と、
    前記複数のアドレスの間隔がすべて同じである場合、前記メモリアクセス命令を1命令としてデコードし、前記複数のアドレスの間隔が同じでない場合、前記メモリアクセス命令を複数の命令としてデコードするデコード部と、
    前記デコード部がデコードした命令に応じて、メモリアクセスを行うメモリアクセス部と
    を有することを特徴とする演算処理装置。
  2. 1命令で複数のアドレスに対してメモリアクセスを行うメモリアクセス命令を実行する演算処理装置であって、
    前記メモリアクセス命令のアクセス対象である複数のアドレスの間隔がすべて同じであるかを検出する検出部と、
    所定の条件に応じて、前記メモリアクセス命令を1命令としてデコードするか、または、前記メモリアクセス命令を複数の命令としてデコードするデコード部と、
    前記デコード部がデコードした命令に応じて、メモリアクセスを行うメモリアクセス部と、
    記検出部が、前記複数のアドレスの間隔がすべて同じであることを検出した場合、前記複数のアドレスの間隔がすべて同じであることを履歴テーブルに登録する制御部を有し、
    前記デコード部は、前記履歴テーブルに前記複数のアドレスの間隔がすべて同じであることが登録されている場合、前記メモリアクセス命令を1命令としてデコードし、前記履歴テーブルに前記複数のアドレスの間隔がすべて同じであることが登録されていない場合、前記メモリアクセス命令を複数の命令に分解してデコードすることを特徴とする演算処理装置。
  3. 前記制御部は、前記メモリアクセス命令のアドレス毎に、前記複数のアドレスの間隔がすべて同じであることを前記履歴テーブルに登録することを特徴とする請求項2に記載の演算処理装置。
  4. 前記メモリアクセス命令は、前記複数のアドレスを記憶する第1のレジスタの番号を含み、
    前記制御部は、前記第1のレジスタの番号毎に、前記複数のアドレスの間隔がすべて同じであることを前記履歴テーブルに登録することを特徴とする請求項2に記載の演算処理装置。
  5. 前記検出部は、前記複数のアドレスの間隔を検出し、
    前記制御部は、前記検出部が、前記複数のアドレスの間隔がすべて同じであることを検出した場合、前記複数のアドレスの間隔がすべて同じであること及び前記複数のアドレスの間隔を前記履歴テーブルに登録し、
    前記メモリアクセス部は、前記履歴テーブルに前記複数のアドレスの間隔がすべて同じであることが登録されている場合、前記履歴テーブルに登録されている前記複数のアドレスの間隔に応じて、メモリアクセスを行うことを特徴とする請求項2〜4のいずれか1項に記載の演算処理装置。
  6. 前記履歴テーブルに前記複数のアドレスの間隔がすべて同じであることが登録されていない場合、前記検出部は、前記メモリアクセス命令の前記複数のアドレスの間隔がすべて同じであるか否かを検出し、前記検出部が、前記複数のアドレスの間隔がすべて同じであることを検出した場合、前記制御部は、前記複数のアドレスの間隔がすべて同じであることを前記履歴テーブルに登録することを特徴とする請求項2〜5のいずれか1項に記載の演算処理装置。
  7. 前記履歴テーブルに前記複数のアドレスの間隔がすべて同じであることが登録されている場合、前記デコード部は、前記メモリアクセス命令を1命令としてデコードし、前記検出部は、前記メモリアクセス命令の前記複数のアドレスの間隔がすべて同じであるか否かを検出し、前記検出部が、前記複数のアドレスの間隔が同じでないことを検出した場合、前記メモリアクセス命令のデコードに基づくメモリアクセスを取り消し、前記制御部は、前記履歴テーブルの登録を削除し、前記デコード部は、前記メモリアクセス命令を複数の命令に分解してデコードすることを特徴とする請求項2〜6のいずれか1項に記載の演算処理装置。
  8. 前記メモリアクセス命令は、前記メモリアクセス命令によりロードする複数のアドレスのデータを書き込む又は前記メモリアクセス命令によりストアするデータを記憶する第2のレジスタの番号を含み、
    前記第2のレジスタの番号に対して前記複数のアドレスの間隔がすべて同じであることが前記履歴テーブルに登録されている場合、前記制御部は、前記履歴テーブルの登録を削除することを特徴とする請求項4に記載の演算処理装置。
  9. 前記演算処理装置は、演算命令を実行し、
    前記演算命令は、演算結果を書き込む第3のレジスタの番号を含み、
    前記第3のレジスタの番号に対して前記複数のアドレスの間隔がすべて同じであることが前記履歴テーブルに登録されている場合、前記制御部は、前記履歴テーブルの登録を削除することを特徴とする請求項4又は8に記載の演算処理装置。
  10. さらに、前記デコード部が前記メモリアクセス命令を1命令としてデコードした場合、前記メモリアクセス部の制御の下、前記複数のアドレスに対して並列にアクセスするメモリを有することを特徴とする請求項1〜9のいずれか1項に記載の演算処理装置。
  11. 前記メモリは、
    各アドレスのデータを記憶する複数のメモリバンクと、
    前記アドレスに応じて、前記メモリバンクを選択する第1の選択部と、
    前記アドレスに応じて、前記メモリバンク内のアドレスを選択する第2の選択部と、
    前記第1の選択部及び前記第2の選択部により選択されたアドレスに対してデータをロード又はストアするマルチプレクサとを有することを特徴とする請求項10に記載の演算処理装置。
  12. 1命令で複数のアドレスに対してメモリアクセスを行うメモリアクセス命令を実行する演算処理装置の制御方法であって、
    前記演算処理装置が有する検出部が、前記メモリアクセス命令のアクセス対象である複数のアドレスの間隔がすべて同じであるかを検出し、
    前記演算処理装置が有するデコード部が、前記複数のアドレスの間隔がすべて同じである場合、前記メモリアクセス命令を1命令としてデコードし、前記複数のアドレスの間隔が同じでない場合、前記メモリアクセス命令を複数の命令としてデコードし、
    前記演算処理装置が有するメモリアクセス部が、前記デコード部がデコードした命令に応じて、メモリアクセスを行うことを特徴とする演算処理装置の制御方法。
JP2017096400A 2017-05-15 2017-05-15 演算処理装置及び演算処理装置の制御方法 Active JP6912707B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017096400A JP6912707B2 (ja) 2017-05-15 2017-05-15 演算処理装置及び演算処理装置の制御方法
US15/964,197 US11200057B2 (en) 2017-05-15 2018-04-27 Arithmetic processing apparatus and method for controlling arithmetic processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017096400A JP6912707B2 (ja) 2017-05-15 2017-05-15 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2018194946A JP2018194946A (ja) 2018-12-06
JP6912707B2 true JP6912707B2 (ja) 2021-08-04

Family

ID=64096711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017096400A Active JP6912707B2 (ja) 2017-05-15 2017-05-15 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11200057B2 (ja)
JP (1) JP6912707B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294678B2 (en) * 2018-05-29 2022-04-05 Advanced Micro Devices, Inc. Scheduler queue assignment
US20200210186A1 (en) * 2018-12-27 2020-07-02 Intel Corporation Apparatus and method for non-spatial store and scatter instructions

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430680B1 (en) * 1998-03-31 2002-08-06 International Business Machines Corporation Processor and method of prefetching data based upon a detected stride
JP2006215799A (ja) 2005-02-03 2006-08-17 Toshiba Corp メモリコントローラ
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
JP5664198B2 (ja) 2010-12-14 2015-02-04 富士通株式会社 演算処理装置
US20160054997A1 (en) * 2014-08-22 2016-02-25 Samsung Electronics Co., Ltd. Computing system with stride prefetch mechanism and method of operation thereof

Also Published As

Publication number Publication date
US20180329710A1 (en) 2018-11-15
US11200057B2 (en) 2021-12-14
JP2018194946A (ja) 2018-12-06

Similar Documents

Publication Publication Date Title
JP5658556B2 (ja) メモリ制御装置、及びメモリ制御方法
CN112445753B (zh) 从多维阵列预取多维元素块的硬件装置和方法
US10268454B2 (en) Methods and apparatus to eliminate partial-redundant vector loads
EP2951681B1 (en) Solution to divergent branches in a simd core using hardware pointers
JP5834997B2 (ja) ベクトルプロセッサ、ベクトルプロセッサの処理方法
WO2017146860A1 (en) Combining loads or stores in computer processing
KR20110055629A (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
TWI644254B (zh) 用於執行推論向量存取操作的資料處理裝置、電腦程式產品與方法
EP2951682B1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
JP6912707B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP4228241B2 (ja) 演算処理装置
JP5633122B2 (ja) プロセッサ及び情報処理システム
CN108959180B (zh) 一种数据处理方法及系统
JP6773378B2 (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
KR20150035161A (ko) 그래픽 처리 장치 및 이의 동작 방법
CN110914801B (zh) 在数据处理设备中的向量交叉
JP2008542893A (ja) マイクロプロセッサにおける効率の良い積和演算を実行するための装置及び方法
US20180088948A1 (en) Efficient vectorization techniques for operands in non-sequential memory locations
CN116302099A (zh) 加载数据到向量寄存器的方法、处理器、设备、介质
JP5206385B2 (ja) バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム
JP2002024008A (ja) データ処理装置およびプログラム変換装置
JP5380102B2 (ja) マイクロプロセッサ
JP6237241B2 (ja) 処理装置
CN107193757B (zh) 数据预取方法、处理器和设备
CN116507999A (zh) 一种处理器、处理方法及相关设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210405

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210621

R150 Certificate of patent or registration of utility model

Ref document number: 6912707

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150