JP6256088B2 - ベクトルプロセッサ、情報処理装置および追い越し制御方法 - Google Patents

ベクトルプロセッサ、情報処理装置および追い越し制御方法 Download PDF

Info

Publication number
JP6256088B2
JP6256088B2 JP2014030748A JP2014030748A JP6256088B2 JP 6256088 B2 JP6256088 B2 JP 6256088B2 JP 2014030748 A JP2014030748 A JP 2014030748A JP 2014030748 A JP2014030748 A JP 2014030748A JP 6256088 B2 JP6256088 B2 JP 6256088B2
Authority
JP
Japan
Prior art keywords
instruction
address
overtaking
unit
element check
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
JP2014030748A
Other languages
English (en)
Other versions
JP2015156112A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2014030748A priority Critical patent/JP6256088B2/ja
Priority to US14/624,795 priority patent/US20150234656A1/en
Publication of JP2015156112A publication Critical patent/JP2015156112A/ja
Application granted granted Critical
Publication of JP6256088B2 publication Critical patent/JP6256088B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、コンピュータのメモリアクセスを高速化するための追い越し処理に関する。
コンピュータがメモリをアクセスする際、一般に、ロード命令よりもストア命令の方が低速である。高速なロード命令が低速なストア命令を待ち合わせる状態が発生すると、コンピュータの全体的なメモリアクセス性能が低下する。
コンピュータの命令処理を高速化する方法として、ベクトル処理方式が知られている。ベクトル命令によるメモリアクセスを行う際、ロード命令がストア命令を待ち合わせることによる性能低下を防止するため、追い越し処理が行われている。追い越し処理は、アクセスするアドレスが重複しない場合に、先行するストア命令よりも後続のロード命令を先に実行することにより行われる。
特許文献1記載のベクトル命令制御回路は、リストアドレスを有するリストベクトル命令について、リストアドレス内の最大アドレスおよび最小アドレスに基づいてアクセスするアドレスの重複を判定する。このことにより、特許文献1記載のベクトル命令制御回路は、リストアドレス内の全アドレスについて判定することなく、追い越し処理の判定を高速に行う。
特許技術文献2記載のベクトル型計算機は、ベクトルギャザー命令またはベクトルスキャッター命令において、ベクトル要素の最大値および最小値に基づいて命令のアクセス範囲を求める。そして、特許技術文献2記載のベクトル型計算機は、求められたアクセス範囲に基づいて追い越し処理の判定を行う。
特開2012−150634号公報 特開2011−118743号公報
上述した特許文献1記載のベクトル命令制御回路は、リストアドレスが連続したアドレスではない場合、アドレスが重複していないにもかかわらず追い越し処理ができないと判定される可能性があるという問題点がある。すなわち、追い越し処理の対象となる命令が、リストアドレス内の最大アドレスと最小アドレスの間のアドレスのメモリにアクセスする場合、アクセスするアドレスが重複していなくとも、追い越し処理ができないと判定される。
上述した特許文献2記載のベクトル型計算機も、ベクトルギャザー命令またはベクトルスキャッター命令がアクセスするアドレスが連続していない場合、同様の問題点を有している。
本発明は、上述した問題点を解消あるいは軽減するための技術を提供することを主たる目的とする。
上記目的を達成する本発明に係るベクトルプロセッサは、
ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求めるエレメントチェック部と、
ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行う追い越し判定部とを備える。
上記目的を達成する本発明に係る情報処理装置は、
上述のベクトルプロセッサを備える。
上記目的を達成する本発明に係る追い越し制御方法は、
ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求め、
ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行う。
本発明によれば、追い越し処理が行われる頻度を向上し、メモリアクセス性能を向上することができる。
本発明の第1の実施形態に係る情報処理装置が備えるCPU(Central Processing Unit)の構成を表すブロック構成図である。 エレメントチェック部123の動作を説明するブロック図である。 エレメントチェック部123の他の動作を説明するブロック図である。 追い越し判定部122が備えるバッファ1221を表す図である。 本発明の第2の実施形態に係るベクトルプロセッサの構成を表すブロック構成図である。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係る情報処理装置が備えるCPU(Central Processing Unit)の構成を表すブロック構成図である。本発明の第1の実施形態に係るCPU100は、演算部110と、メモリアクセス制御部120とを備える。CPU100は、ベクトルロード命令およびベクトルギャザー命令などのように、複数の要素データを1命令でアクセスできるメモリアクセス命令を含む命令セットを備えている。CPU100は、ベクトルプロセッサと呼ばれることもある。
演算部100は、図示しないレジスタを備え、命令を制御し、レジスタにあるデータを用いて演算を行う。また、演算部100は、演算するデータをレジスタへロードするため、あるいは演算結果をメモリにストアするなどのために、メモリアクセス制御部120に対してメモリアクセスリクエストを発行する。メモリアクセスリクエストは、メモリアクセスの命令種別、アクセス先のアドレス、およびその他制御情報などを含むパケットである。メモリアクセスリクエストに含まれる命令種別がリストアクセスを行うベクトル命令である場合、演算部100は、メモリアクセスリクエストとは別に、リストアドレスとリストアドレスの制御情報をメモリアクセス制御部120へ送信する。
メモリアクセス制御部120は、追い越し処理部121と、追い越し判定部122と、エレメントチェック部123と、リストアドレスバッファ124と、メモリアクセス発行部125とを備える。
追い越し処理部121は、メモリアクセスリクエストを演算部110から受け取る。そして、追い越し処理部121は、追い越し判定部122からの指示に基づいて、メモリアクセスリクエストをメモリアクセス発行部125へ発行する。また、追い越し処理部121は、発行したメモリアクセスリクエストに関する情報をリストアドレスバッファ124へ送信する。
追い越し判定部122は、バッファ1221を備える。追い越し判定部122は、演算部110から発行されたメモリアクセスリクエストと、エレメントチェック部123から送信されるエレメントチェック結果をバッファ1221のエントリに格納する。次に、追い越し判定部122は、メモリアクセスリクエストに含まれる各命令がアクセスするアドレスの依存関係を調べることにより、先行命令を追い越し可能であるかどうかを判定する。同判定結果に基づいて、追い越し判定部122は、バッファ1221のエントリを並べ替える。そして、追い越し判定部122は、並べ替えられたバッファ1221のエントリに基づいて、次に発行するメモリアクセスリクエストを指示する情報を追い越し処理部121へ送信する。
エレメントチェック部123は、演算部110から発行されたアドレスに偏りがあるかどうかを判定する。そして、エレメントチェック部123は、判定結果をエレメントチェック結果として追い越し判定部122へ送信する。
リストアドレスバッファ124は、演算部110から発行されたリストアドレスを格納するバッファである。リストアドレスバッファ124は、追い越し処理部121から送信されるメモリアクセスリクエスト情報に対応するリストアドレスをメモリアクセス発行部125へ発行する。
メモリアクセス発行部125は、追い越し処理部121からメモリアクセスリクエストを受け取る。また、メモリアクセスリクエストに含まれる命令種別がリストアクセスするベクトル命令である場合、メモリアクセス発行部125は、リストアドレスバッファ124からリストアドレスを受け取る。そして、メモリアクセス発行部125は、メモリアクセスを、メモリが受け取るのに適した形式に整形し、実際に発行する。
以下、図1を参照して、第1の実施形態に係る情報処理装置の動作について説明する。まず、演算部110は、CPU100がフェッチした命令を解読し、その命令の種別に応じた処理を行う。フェッチした命令がメモリをアクセスする命令であった場合、演算部110は、メモリアクセス制御部120に対してメモリアクセスリクエスト(命令種別、アドレス、制御情報)を発行する。メモリアクセスリクエストに含まれる制御情報は、各命令の実行に必要なアドレス以外の情報全般を含む。例えば、制御情報は、実行中の命令ごとに一意に割り付けられた命令ID(IDentification)を含む。
ここで、フェッチした命令が指定したアドレスから一定の間隔(ディスタンス)で保持されている複数のデータをアクセスする命令である場合、制御情報は、ディスタンス情報およびベクトル長(アクセスする要素数)などを含む。このような命令は、例えば、メモリからの読み込みを行うベクトルロード命令、またはメモリへの書き込みを行うベクトルストア命令などである。
また、フェッチした命令がリストアクセスを行う命令である場合、演算部110は、メモリアクセスリクエストとは別に、リストアドレスとその制御情報をメモリアクセス制御部120へ発行する。リストアクセスを行う命令は、例えば、メモリからの読み込みを行うベクトルギャザー命令、およびメモリへの書き込みを行うベクトルスキャッター命令などである。
リストアドレスの制御情報は、そのアドレスが有効であることを示すVビットと、対応する命令を示す命令IDと、対応する命令に対して先頭のアドレスが含まれることを示すSビットと、最後尾のアドレスが含まれることを示すEビットとを含む。一般に、リストアクセスするベクトル命令のアドレスは、1サイクルにおいて複数個発行されることができる。例えば、1サイクルにおいて4つのリストアドレスが同時に発行できると仮定する。この場合、ベクトル長が16であるリストアクセス命令においては、初めの4つのアドレスが転送されるときSビットが1になり、4サイクル目でEビットが1になる。第1の実施形態に係る情報処理装置においては、1命令分のリストアドレスが隙間なく連続で発行されるものとする。
図2は、エレメントチェック部123の動作を説明するブロック図である。以下、図2を参照して、ベクトルギャザー命令およびベクトルスキャッター命令などのリストアクセスを行う命令が発行された場合に、演算部110から発行されたリストアドレスとその制御情報に基づいて、エレメントチェック部123が行う動作を説明する。
以下の説明においては、アドレスの偏りとして、アドレスの最下位ビットの状態をチェックすることにより、奇数番地もしくは偶数番地のみにアクセスするかどうかを調べる方法を示す。しかしながら、チェックの対象は最下位ビットに限定されなくてもよい。なお、本説明における最下位ビットとは、アクセス単位境界ごとの最下位ビットを指す。
図2の「ステージ1」および「ステージ2」の右側の記載は、各クロックサイクルで保持される情報および、情報に対する操作を示す。また、四角に囲まれた「V」,「命令ID」,「S」,「E」,「アドレス0」,「アドレス1」,「アドレス2」,「アドレス3」,「判定終了」,「ODD」,「EVEN」の記載は、これらの情報を格納するフリップフロップを示す。「ODD」フリップフロップは、判定の対象となるアドレスが奇数番地である場合、1の値が格納される。また、「EVEN」フリップフロップは、判定の対象となるアドレスが偶数番地である場合、1の値が格納される。
演算部110から発行されたリストアドレスと制御情報は、ステージ1のフリップフロップに格納される。リストアドレスは、「アドレス0」,「アドレス1」,「アドレス2」,「アドレス3」フリップフロップに格納される。その後、ステージ1において、「アドレス0」,「アドレス1」,「アドレス2」,「アドレス3」の最下位ビットの論理積を求めることによって(処理P201)、これらのアドレスが全て奇数番地であるかどうかが判定される。また、「アドレス0」,「アドレス1」,「アドレス2」,「アドレス3」の最下位ビットの論理和の否定を求めることによって(処理P202)、これらのアドレスが全て偶数番地であるかどうかが判定される。
ステージ1の「S」ビットが点灯(オン)している場合は、ある命令のリストアドレス転送の初回であることを示す。ステージ1の「S」ビットが点灯している場合、ステージ2の「ODD」フリップフロップには、ステージ1で行ったアドレスが全て奇数番地であるかどうかの判定の結果が格納される。すなわち、ステージ2の「ODD」フリップフロップには、ステージ1の「アドレス0」,「アドレス1」,「アドレス2」,「アドレス3」の最下位ビットの論理積(処理P201)が格納される。
同様に、ステージ1の「S」ビットが点灯している場合、ステージ2の「EVEN」フリップフロップには、ステージ1で行ったアドレスが全て偶数番地であるかどうかの判定の結果が格納される。すなわち、ステージ2の「EVEN」フリップフロップには、ステージ1の「アドレス0」,「アドレス1」,「アドレス2」,「アドレス3」の最下位ビットの論理和の否定(処理P202)が格納される。
ステージ1の「S」ビットが消灯(オフ)している場合は、ある命令のリストアドレス転送の初回以外であることを示す。ステージ1の「S」ビットが消灯している場合、ステージ2の「ODD」フリップフロップには、ステージ1で行ったアドレスが全て奇数番地であるかどうかの判定の結果(処理P201)と、「ODD」フリップフロップの値との論理積(処理P203)が格納される。同様に、ステージ1の「S」ビットが消灯している場合、ステージ2の「EVEN」フリップフロップには、ステージ1で行ったアドレスが全て偶数番地であるかどうかの判定の結果(処理P202)と、「EVEN」フリップフロップの値との論理積(処理P204)が格納される。
ステージ1の「命令ID」フリップフロップの値は、そのままステージ2の「命令ID」フリップフロップに格納される。また、ステージ1の「E」ビットと「V」ビットの論理積(処理P205)が、ステージ2の「判定終了」フリップフロップに格納される。「判定終了」フリップフロップが点灯するタイミングにおけるステージ2の「ODD」,「EVEN」フリップフロップの値は、有効な1命令分の判定結果を示す。「判定終了」フリップフロップの値が点灯するタイミングにおいて、エレメントチェック部123は、「命令ID」,「ODD」,「EVEN」フリップフロップの値を、エレメントチェック結果として追い越し判定部122へ転送する。
図3は、エレメントチェック部123の他の動作を説明するブロック図である。以下、図3を参照して、演算部110から、ベクトルロード命令およびベクトルストア命令などの、あるアドレス(ベースアドレス)から一定の間隔(ディスタンス)でメモリに記録された情報を操作する命令が発行された場合にエレメントチェック部123が行う動作を説明する。
演算部110から発行されたメモリアクセスリクエストに含まれるアドレスは、「ベースアドレス」フリップフロップに格納される。また、制御情報として、その命令が有効であることを示すVビット、各命令に対して一意につけられた識別子である命令ID、アクセスするメモリアドレスの間隔を示すディスタンスは、ステージ1の「V」,「命令ID」,「ディスタンス」フリップフロップにそれぞれ格納される。
「ベースアドレス」の最下位ビットと、「ディスタンス」の最下位ビットとの否定の論理積を求めることによって(処理P301)、アクセス先が奇数番地のみかどうかが判定される。そして、判定結果が、ステージ2の「ODD」フリップフロップに格納される。また、「ベースアドレス」の最下位ビットと、「ディスタンス」の最下位ビットとの論理和の否定を求めることによって(処理P302)、アクセス先が偶数番地のみかどうかが判定される。そして、判定結果が、ステージ2の「EVEN」フリップフロップに格納される。
ステージ1の「V」ビットと「命令ID」の値は、ステージ2の「判定終了」フリップフロップと「命令ID」フリップフロップへそれぞれ格納される。「判定終了」フリップフロップが点灯するタイミングにおいて、エレメントチェック部123は、「命令ID」,「ODD」,「EVEN」フリップフロップの値を、エレメントチェック結果として追い越し判定部122へ転送する。
演算部110から発行された命令がスカラ命令の場合、エレメントチェック部123は、アクセス先のアドレスの最下位ビットの点灯あるいは消灯に基づいて、奇数あるいは偶数番地へのアクセスであると判定する。すなわち、エレメントチェック部123は、アドレスの最下位ビットが点灯している場合は奇数番地へのアクセスであると判定し、アドレスの最下位ビットが消灯している場合は偶数番地へのアクセスであると判定する。そして、エレメントチェック部123は、判定結果をエレメントチェック結果として追い越し判定部122へ転送する。
図4は、追い越し判定部122が備えるバッファ1221を表す図である。バッファ1221は、演算部110から発行された命令と、各制御情報をFIFO(First In, First Out)方式で格納するバッファである。バッファ1221は、N個のエントリを有している。各エントリは、「V」,「命令」,「命令ID」,「判定終了」,「ODD」,「EVEN」の項目を含んでいる。バッファ1221は、図4の上方のエントリから情報を入力し、下方のエントリから情報を出力する。バッファ1221は、あるエントリが空となると、後方のエントリを先頭方向(図4の下方向)に詰める機能を有する。
追い越し判定部122は、演算部110から受け取ったメモリアクセスリクエストを、バッファ1221に新規エントリとして登録する。このとき、追い越し判定部122は、このエントリの「V」の項目に1を、「命令」,「命令ID」の項目に、同メモリアクセスリクエストに含まれる命令種別,命令IDを設定する。また、追い越し判定部122は、このエントリの「判定終了」の項目に0を設定する。
エレメントチェック部123からエレメントチェック結果を受け取ったとき、追い越し判定部122は、エレメントチェック結果に含まれる命令IDをキーとしてバッファ1221を検索する。そして、追い越し判定部122は、同命令IDが設定された、バッファ1221の対応するエントリの「ODD」,「EVEN」の項目に、エレメントチェック結果に含まれるODD,EVENの値を設定する。このとき、追い越し判定部122は、この対応するエントリの「判定終了」の項目に1を設定する。
図4の、エントリ#0,#2は、エレメントチェック結果を受取済みのエントリを示す。これらのエントリ#0,#2は、「判定終了」の項目に1が設定され、「ODD」,「EVEN」の項目には0もしくは1が設定されている。一方で、エントリ#1は、エレメントチェック結果を未受取りのエントリを示す。このエントリ#1は、「判定終了」の項目に0が設定されている。また、エントリ#1の「ODD」,「EVEN」の項目に記載の“−”は、まだ値が設定されていないため不定であることを示す。
追い越し判定部122は、エントリに登録された命令の中でどの命令から発行するかの調停を行う。何命令を調停に参加させるか、どういった命令を優先的に発行するかは装置により様々である。
以下、図4を参照して追い越し判定部122による追い越し判定動作を説明する。第1の実施形態においては、追い越し判定部122は、エントリの先頭の3命令による調停を行う。この調停において、追い越し判定部122は、エレメントチェック結果に基づいて、ロード命令がストア命令を可能な限り追い越すようにエントリを操作する。
なお、ある項目のビットが点灯しているとは、その項目に1が設定されていることを指す。同様に、ある項目のビットが消灯しているとは、その項目に0が設定されていることを指す。
バッファ1221のエントリ#0にはストア命令であるベクトルストア命令が登録されている。エントリ#0の「判定終了」ビットと「ODD」ビットが点灯しているため、追い越し判定部122は、このストア命令がメモリの奇数番地にのみアクセスすると判定する。一方で、エントリ#1にロード命令であるベクトルギャザー命令が登録されている。エントリ#1の「判定終了」ビットが消灯しているため、追い越し判定部122は、このロード命令についてのエレメントチェック結果がまだ送信されておらず、アドレスの偏りの判定がまだ行われていないと判定する。従って、追い越し判定部122は、エントリ#1のロード命令がエントリ#0のストア命令を追い越すことはできないと判定する。
さらに、エントリ#2にもベクトルギャザー命令が登録されている。エントリ#2の「判定終了」ビットと「EVEN」ビットが点灯しているため、追い越し判定部122は、このロード命令がメモリの偶数番地にのみアクセスすると判定する。エントリ#0のストア命令とエントリ#2のロード命令のアクセス先が重複しないため、追い越し判定部122は、エントリ#2のロード命令がエントリ#0のストア命令を追い越すことができると判定する。また、追い越し判定部122は、エントリ#2のロード命令が同じくロード命令であるエントリ#1のロード命令を追い越すことができると判定する。
最終的に、追い越し判定部122は、エントリ#2のベクトルギャザー命令が、エントリ#0,#1の命令を追い越して最初に実行されるべき命令であると判断する。そして、追い越し判定部122は、発行指示として、エントリ#2の「命令ID」の項目の値である3333を追い越し処理部121へ送信する。
このように、追い越し判定部122は、先行ストア命令と後続ロード命令における、エレメントチェック結果が示すアクセス先のアドレスの偏りを確認する。そして、これら双方の命令のアクセス先が重複しない場合に、後続ロード命令が先行ストア命令を追い越して実行可能であると判定する。具体的には、追い越し判定部122は、先行ストア命令と後続ロード命令における、双方の命令の「判定終了」ビットの点灯と、「ODD」,「EVEN」ビットが示すアクセス先のアドレスの偏りの有無とを確認する。そして、これら双方の命令の「判定終了」ビットが点灯しており、かつ、一方の命令の「ODD」ビットと他方の命令の「EVEN」ビットが点灯している場合に、これら双方の命令のアクセス先が重複しないと判定する。アクセス先が重複せず、かつ、これら双方の命令の間に後続ロード命令が追い越し不可な命令が存在しない場合に、追い越し判定部122は、後続ロード命令が先行ストア命令を追い越して実行可能であると判定する。なお、追い越し不可な命令とは、「ODD」,「EVEN」ビットにおいて後続ロード命令と同じビットが点灯しているか、「判定終了」ビットが消灯しているストア命令が該当する。
追い越し処理部121は、演算部110から発行されたメモリアクセスリクエストを一時的に記憶する。そして、追い越し処理部121は、追い越し判定部122から受け取った発行指示に基づいて、発行指示に含まれる命令IDに対応するメモリアクセスリクエストをメモリアクセス発行部125へ発行する。発行する命令がリストアクセスを行う命令の場合は、命令IDなどの、このメモリアクセスリクエストに関する情報をリストアドレスバッファ124へ送信する。リストアドレスバッファ124は、受け取った同情報に基づいて、発行されるメモリアクセスリクエストに対応するリストアドレスをメモリアクセス発行部125へ発行する。メモリアクセス発行部125は、受け取ったメモリアクセスリクエストに基づいて、メモリへのアクセスを行う。
以上のように、本発明の第1の実施形態に係るCPU100は、追い越し処理が行われる頻度を向上することができる。なぜならば、エレメントチェック部123がメモリアクセス命令のアクセス先のアドレスの偏りを判定し、追い越し判定部122がこの偏りに基づいて追い越し処理の可否を判定するからである。
また、本発明の第1の実施形態に係るCPU100は、特許技術文献1もしくは2記載の技術において、実際は可能であるにもかかわらず追い越し処理ができないと判定される場合においても、追い越し処理の可否を正しく判定し得る。具体的には、後続ロード命令が、ベクトルアクセスを行う先行ストア命令がアクセスする最大アドレスと最小アドレスの間のアドレスのメモリにアクセスする場合においても、追い越し処理の可否を正しく判定し得る。このことにより、本発明の第1の実施形態に係るCPU100は、特許技術文献1もしくは2記載の技術と比較して、より多くのアクセスパターンにおいて追い越し処理を実現することにより、メモリアクセス性能を向上することができる。
[第2の実施形態]
次に、本発明の第2の実施の形態を説明する。以下の説明では、第1の実施形態と同様な構成については同一の参照番号を付与することにより、重複する説明を省略する。
図5は、本発明の第2の実施形態に係るベクトルプロセッサの構成を表すブロック構成図である。本発明の第2の実施形態に係るベクトルプロセッサ1000は、エレメントチェック部123と、追い越し判定部122とを備える。
エレメントチェック部123は、ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求める。
追い越し判定部122は、ロード命令の、ロード命令に先行するストア命令に対する追い越し判定を、エレメントチェック結果に基づいて行う。
以上のように、本発明の第2の実施形態に係るベクトルプロセッサ1000は、追い越し処理が行われる頻度を上昇することができる。なぜならば、エレメントチェック部123がロード命令あるいはストア命令のアクセス先のアドレスの偏りをエレメントチェック結果として求め、追い越し判定部122がこのエレメントチェック結果に基づいて追い越し処理の可否を判定するからである。
第1の実施形態のエレメントチェック部123は、アドレスの最下位ビットの状態を求めることにより、アクセス先が奇数番地か偶数番地かを判定したが、最下位ビット以外の状態を求めてもよい。例えば、エレメントチェック部123は、アドレスの下位2ビットの状態を求めることにより、アクセス先のアドレスの下位2ビットが“00”,“01”,“10”,“11”のいずれであるかを判定し、エレメントチェック結果として出力してもよい。そして、追い越し判定部122は、先行するストア命令と後続のロード命令のそれぞれに関するエレメントチェック結果に基づいて、追い越し判定を行ってもよい。あるいは、エレメントチェック部123は、アドレスの下位3ビット以上の状態を求めてもよい。
アドレスの下位2ビットの状態を求めた場合の動作の例を説明する。エレメントチェック部123により、あるベクトルストア命令が有するリストアドレスは、下位2ビットの値が“01”,“10”,“11”であるアドレスのみを含むことが判明している。そして、このベクトルストア命令に後続するロード命令のアクセス先のアドレスの下位2ビットの値が“00”のみである場合、追い越し判定部122は、このロード命令がこのベクトルストア命令を追い越すことができると判定する。
100 CPU
110 演算部
120 メモリアクセス制御部
121 追い越し処理部
122 追い越し判定部
1221 バッファ
123 エレメントチェック部
124 リストアドレスバッファ
125 メモリアクセス発行部
1000 ベクトルプロセッサ

Claims (5)

  1. ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求めるエレメントチェック部と、
    ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行う追い越し判定部とを備え
    前記ロード命令あるいは前記ストア命令は、リストアドレスによるアクセスを行う命令であり、
    前記エレメントチェック部は、前記リストアドレスの最下位桁から所定桁数のビットの状態を求めることにより、前記エレメントチェック結果を求めるベクトルプロセッサ。
  2. 前記所定桁数は1であり、
    前記エレメントチェック部は、前記ロード命令あるいは前記ストア命令がアクセスするメモリのアドレスが奇数番地もしくは偶数番地のみかどうかを前記エレメントチェック結果として求める請求項1に記載のベクトルプロセッサ。
  3. 請求項1又は2に記載のベクトルプロセッサを備える情報処理装置。
  4. ロード命令あるいはストア命令がアクセスするメモリのアドレスの最下位桁から所定桁数のビットの状態を、エレメントチェック結果として求め、
    ロード命令の、前記ロード命令に先行するストア命令に対する追い越し判定を、前記エレメントチェック結果に基づいて行い、
    前記ロード命令あるいは前記ストア命令は、リストアドレスによるアクセスを行う命令であり、
    前記リストアドレスの最下位桁から所定桁数のビットの状態を求めることにより、前記エレメントチェック結果を求める追い越し制御方法。
  5. 前記所定桁数は1であり、
    前記ロード命令あるいは前記ストア命令がアクセスするメモリのアドレスが奇数番地もしくは偶数番地のみかどうかをエレメントチェック結果として求める請求項に記載の追い越し制御方法。
JP2014030748A 2014-02-20 2014-02-20 ベクトルプロセッサ、情報処理装置および追い越し制御方法 Active JP6256088B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014030748A JP6256088B2 (ja) 2014-02-20 2014-02-20 ベクトルプロセッサ、情報処理装置および追い越し制御方法
US14/624,795 US20150234656A1 (en) 2014-02-20 2015-02-18 Vector processor, information processing apparatus, and overtaking control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014030748A JP6256088B2 (ja) 2014-02-20 2014-02-20 ベクトルプロセッサ、情報処理装置および追い越し制御方法

Publications (2)

Publication Number Publication Date
JP2015156112A JP2015156112A (ja) 2015-08-27
JP6256088B2 true JP6256088B2 (ja) 2018-01-10

Family

ID=53798196

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014030748A Active JP6256088B2 (ja) 2014-02-20 2014-02-20 ベクトルプロセッサ、情報処理装置および追い越し制御方法

Country Status (2)

Country Link
US (1) US20150234656A1 (ja)
JP (1) JP6256088B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110337635B (zh) * 2017-03-20 2023-09-19 英特尔公司 用于点积操作的***、方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0812661B2 (ja) * 1988-04-01 1996-02-07 日本電気株式会社 命令処理順序制御システム
JP3988144B2 (ja) * 2004-02-23 2007-10-10 日本電気株式会社 ベクトル処理装置、及び、追い越し制御回路
US7660967B2 (en) * 2007-02-01 2010-02-09 Efficient Memory Technology Result data forwarding in parallel vector data processor based on scalar operation issue order
JP5206385B2 (ja) * 2008-12-12 2013-06-12 日本電気株式会社 バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム
US8659390B2 (en) * 2009-08-04 2014-02-25 Raytheon Company Method and system for generating a biometric query plan
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
JP5630281B2 (ja) * 2011-01-19 2014-11-26 日本電気株式会社 ベクトル命令制御回路及びリストベクトルの追い越し制御方法

Also Published As

Publication number Publication date
US20150234656A1 (en) 2015-08-20
JP2015156112A (ja) 2015-08-27

Similar Documents

Publication Publication Date Title
CN109697185B (zh) 多瓦片处理阵列中的同步
US9164951B2 (en) Multiprocessor system, execution control method and execution control program
JPH03282958A (ja) 電子計算機
WO2016140756A1 (en) Register renaming in multi-core block-based instruction set architecture
KR101754850B1 (ko) 메모리 기반의 세마포어
JP5178346B2 (ja) 半導体装置、および、半導体装置によるデータ処理方法
KR102524565B1 (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
CN101840390A (zh) 适用于多处理器***的硬件同步电路结构及其实现方法
US10659396B2 (en) Joining data within a reconfigurable fabric
US11449344B1 (en) Regular expression processor and parallel processing architecture
JP6551751B2 (ja) マルチプロセッサ装置
JP6256088B2 (ja) ベクトルプロセッサ、情報処理装置および追い越し制御方法
US20130024488A1 (en) Semiconductor device
CN116685943A (zh) 可编程原子单元中的自调度线程
US11294687B2 (en) Data bus with multi-input pipeline
EP3543846B1 (en) Computer system and memory access technology
US11847464B2 (en) Variable pipeline length in a barrel-multithreaded processor
EP3588319B1 (en) Memory module
US8683181B2 (en) Processor and method for distributing load among plural pipeline units
JP5871298B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP5623871B2 (ja) データ転送装置、演算装置、それを備えた装置およびデータ転送方法
JP5549179B2 (ja) データアクセス装置、データアクセス制御方式、及び、データアクセス制御プログラム
JP7498166B2 (ja) プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスするシステム及び方法
JP5544856B2 (ja) 調停装置、調停方法及びプログラム
TW201734855A (zh) 基於截斷的確定性有限自動機(dfa)與硬體過濾器匹配的區域/能源複雜的正規表示法樣式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161014

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170914

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171120

R150 Certificate of patent or registration of utility model

Ref document number: 6256088

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150