JP2012128559A - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP2012128559A
JP2012128559A JP2010278041A JP2010278041A JP2012128559A JP 2012128559 A JP2012128559 A JP 2012128559A JP 2010278041 A JP2010278041 A JP 2010278041A JP 2010278041 A JP2010278041 A JP 2010278041A JP 2012128559 A JP2012128559 A JP 2012128559A
Authority
JP
Japan
Prior art keywords
data
arithmetic processing
stride
address
instruction
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.)
Granted
Application number
JP2010278041A
Other languages
English (en)
Other versions
JP5664198B2 (ja
Inventor
Masahiko Toshi
雅彦 都市
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 JP2010278041A priority Critical patent/JP5664198B2/ja
Publication of JP2012128559A publication Critical patent/JP2012128559A/ja
Application granted granted Critical
Publication of JP5664198B2 publication Critical patent/JP5664198B2/ja
Expired - Fee Related 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/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
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】ストライド命令の後続命令に対してもチェイニングを行って性能を向上することができる演算処理装置の提供を図る。
【解決手段】同時アクセス可能な複数のメモリブロックbank0〜bank3を有するデータメモリ2との間でデータを遣り取りする複数のベクトルパイプライン121〜124を有する演算処理装置であって、前記データメモリに対するストライドアクセスを、基本パターンのデータサイズを決める第1パラメータと、該基本パターンにおける有効なデータ数を決める第2パラメータで規定する。
【選択図】図3

Description

この出願で言及する実施例は、演算処理装置に関する。
従来、配列データに対する計算(ベクトル演算)を1命令で処理可能な演算処理装置(プロセッサ)として、ベクトルプロセッサが利用されている。このようなベクトルプロセッサは、気象予測や流体解析といった科学技術計算に適用されているが、近年、携帯端末のソフトウェア無線(SDR:Software Defined Radio)への適用も考えられている。
ベクトルプロセッサは、複数の演算器に対して連続的にデータを投入することで、高い演算スループットを得ることでき、1サイクルで処理可能なデータ数を増やす様々な工夫も行われている。
ところで、従来、ベクトルプロセッサ(演算処理装置)としては、様々なものが提案されている。
特開2000−259609号公報 米国特許第6591345号明細書
前述したように、ベクトルプロセッサは、一般に、[レイテンシ+データ数/演算器数]サイクルで処理を終えることができ、特に、メモリレイテンシによる性能低下を緩和できる特徴に注目して研究が行われてきた。
ところで、組み込み用途では、消費電力が大きくて性能予測が難しいキャッシュメモリを用いることなく、高速なローカルメモリを採用することがある。この場合、大容量の外部メモリとローカルメモリ間の通信はプログラマが責任を持つことになるが、データメモリを固定レイテンシでアクセスできるため、パイプラインストールなどの制御を少なくすることができ、回路の単純化や占有面積の低減を図ることができる。
しかしながら、ストライドアクセスの飛び飛びのアドレスでは、実際に使用するデータサイズよりも広い範囲をアクセスすることになり、連続アクセスのように1サイクルでメモリアクセスが完了しない。そのため、後続命令とのチェイニングができず、性能劣化の原因になることがある。
また、データをどこまで転送したかを管理して、処理も遅らせることも考えられるが、制御が複雑になるといった問題がある。
一実施形態によれば、同時アクセス可能な複数のメモリブロックを有するデータメモリとの間でデータを遣り取りする複数のベクトルパイプラインを有する演算処理装置が提供される。
前記データメモリに対するストライドアクセスを、基本パターンのデータサイズを決める第1パラメータと、該基本パターンにおける有効なデータ数を決める第2パラメータで規定する。
開示の演算処理装置は、ストライド命令の後続命令に対してもチェイニングを行って性能向上を図ることができるという効果を奏する。
演算処理装置の一例における命令実行を説明するためのタイムチャートである。 ベクトル命令のチェイニングを説明するためのタイムチャートである。 本実施例の演算処理装置の構成例を示すブロック図である。 図3の演算処理装置におけるデータメモリの読み出しシーケンスの一例を説明するための図である。 図3の演算処理装置におけるデータメモリのアドレス割り当てを説明するための図である。 図3の演算処理装置におけるスカラレジスタを説明するための図である。 図3の演算処理装置におけるベクトルレジスタを説明するための図である。 本実施例の演算処理装置におけるシーケンシャルアクセスの一例を説明するためのタイムチャートである。 本実施例の演算処理装置によるストライドアクセスの一例を説明するための図である。 図9のストライドアクセスを説明するためのタイムチャートである。 本実施例の演算処理装置によるストライドアクセスの他の例を説明するための図である。 図11のストライドアクセスを説明するためのタイムチャートである。 本実施例の演算処理装置によるストライドアクセスのさらに他の例を説明するための図である。 図13のストライドアクセスを説明するためのタイムチャートである。 本実施例の演算処理装置におけるストライドアクセスの動作を規定するパラメータを説明するための図である。 本実施例の演算処理装置におけるアドレス生成部の一例を示すブロック図である。
まず、本実施例の演算処理装置を詳述する前に、演算処理装置の一例における命令の実行、並びに、ベクトル命令のチェイニングを、図1および図2を参照して説明する。
図1は、演算処理装置の一例における命令実行を説明するためのタイムチャートである。ここで、演算処理装置(ベクトルプロセッサ)は、配列データに対するベクトル演算を1命令で処理可能なプロセッサであり、演算器に対して連続的にデータを投入することで高い演算スループットを得るようになっている。
また、ベクトルプロセッサは、並列に動作可能な複数の演算器を有し、連続した配列データに対しては、[スタートアップ(レイテンシ)+データ数/演算器数]サイクルで処理するようになっている。
また、同時動作可能な複数のベクトルパイプラインを設け、命令を並列に実行することで、さらなる性能向上を図ることも行われている。
具体的に、図1に示されるように、例えば、8個の16ビット演算器を有するベクトルプロセッサは、64要素の配列データに対して演算を行う場合、スタートアップを4にすると、4+64/8=12サイクルで演算を終えることができる。なお、スタートアップは、全てのパイプラインにデータが流れるまでの時間(サイクル)に対応する。
ここで、各演算器では、命令のフェッチ(fetch)、デコード(decode)、レジスタからの読み出し(reg. read)、実行(execute)およびライトバック(writeback)の5つの処理が行われる。
なお、図1の各ブロック中の『0..7』,『8..15』,…,『56..63』は、64要素の配列データにおいて、各演算器で1サイクルごとに処理される8要素のデータを示している。
図2は、ベクトル命令のチェイニングを説明するためのタイムチャートである。図2において、参照符号vldhは、ハーフワード(halfword)データをデータメモリから読み出してレジスタに格納させる命令であり、また、vaddhは、ベクトルレジスタ同士の加算を行わせる命令である。
具体的に、図2の命令『vldh sr1 vr0』は、sr1が示すアドレスから連続した領域にメモリアクセスを行わせ、vr0〜vr63へ格納させる命令である。なお、『vaddh vr0 vr64 vr128』は、先行するvldhとデータ依存があるが、5サイクル目にはvaddh命令で一番先に行う演算に必要なデータが参照可能になるため、このタイミングからvaddhの演算を開始することができる。
それ以降、vaddhは、先行のvldh命令を追いかけるかのように、メモリから読み出されるデータを次々と処理し、5サイクル目以降、それぞれのベクトルパイプラインでvldhとvaddhは同時に動作する。
このようなベクトル命令間の並列動作をチェイニングというが、vldh命令により読み出されるデータサイズと、vaddh命令により必要とされるデータサイズが同じであれば、データ依存関係を満たして正しく演算することが可能になる。
ところで、ベクトルプロセッサは、配列データの演算といった連続データを扱うことに向いており、連続したメモリアドレスに対するアクセスをシーケンシャルアクセスという。
しかしながら、連続したデータだけではなく、より複雑なデータパターンに対する演算を行いたいという要求がある。これは、例えば、ソフトウェア無線(SDR:Software Defined Radio)への適用といったものが考えられ、一定の間隔で並んだデータを抽出して演算を行うといった処理である。
その場合、メモリ上に並んだデータから必要なデータだけを取り出して、ロード/ストアする命令が必要になる。一般に、このようなアクセスパターンは、ストライドアクセスと呼ばれている。
しかしながら、ストライドアクセス(ストライド命令)の飛び飛びのアドレスでは、実際に使用するデータサイズよりも広い範囲をアクセスすることになり、連続アクセスのように1サイクルでメモリアクセスが完了しない。
そのため、後続命令とのチェイニングができず、性能劣化の原因になることがある。また、データをどこまで転送したかを管理して、処理も遅らせることも考えられるが、制御が複雑になる。
以下、演算処理装置の実施例を、添付図面を参照して詳述する。図3は、本実施例の演算処理装置の構成例を示すブロック図である。図3において、参照符号1は演算処理装置、2はデータメモリ、そして、3は命令メモリ(IMEM)を示す。
演算処理装置1は、デコーダ(デコードロジック)11、ベクトルパイプライン部12、スカラーレジスタ(SR)13、ベクトルレジスタ(VR)14、マルチプレクサ・デマルチプレクサ(MUX/DEMUX)15、および、アドレス生成部16を有する。
ベクトルパイプライン部12は、4本のパイプラインを有する。その内、2本がALU,乗算,論理演算などの演算命令を実行するベクトルパイプライン121,122である。また、残りの2本がロード・ストア(Load/Store)などの転送命令を実行するベクトルパイプライン123,124である。
各ベクトルパイプライン121〜124は、例えば、16ビットの演算器を8個ずつ有し、それぞれ毎サイクル、16ビット演算を8並列で演算することができる。データメモリ2は、4つのバンク(メモリブロック)bank0〜bank3を有し、マルチプレクサ・デマルチプレクサ15を介してベクトルパイプライン123,124に接続されている。
アドレス生成部16は、デコーダ11の出力に応じて、例えば、ストライドロードストア命令(ストライドLoad/Store命令)のときに、図8〜図14を参照して説明する処理を行うために、データメモリ2に対するアドレス信号等を生成する。
なお、スカラーレジスタ13は、例えば、32ビット幅のレジスタで4つのエントリを有し、また、ベクトルレジスタ14、例えば、128ビット幅のレジスタで8つのエントリを有している。
図4は、図3の演算処理装置におけるデータメモリの読み出しシーケンスの一例を説明するための図である。
図4に示されるように、データメモリ2の読み出しシーケンスは、アドレス(address)が入力されてから、次のクロック(clock)でデータ(read data)が読み出される。すなわち、データメモリは、レイテンシが1のローカルメモリとなっている。なお、命令メモリもレイテンシが1のローカルメモリとなっている。
図5は、図3の演算処理装置におけるデータメモリのアドレス割り当てを説明するための図である。データメモリ2は、4つのバンクbank0〜bank3を有し、各バンクbank0〜bank3は、例えば、それぞれ128ビット幅の読み出し/書き込み共用のアクセスポートを1つ有する。なお、アドレスは、例えば、バンクインタリーブ方式で割り振られている。
具体的に、バイトアドレス0〜15の16バイト(128ビット)のデータは、データメモリ2のバンクbank0(dmem-bank0)に格納(転送)され、また、バイトアドレス16〜31の16バイトのデータは、バンクbank1(dmem-bank1)に格納される。
さらに、バイトアドレス32〜47の16バイトのデータは、データメモリ2のバンクbank2(dmem-bank2)に格納され、また、バイトアドレス48〜63の16バイトのデータは、バンクbank3(dmem-bank3)に格納される。そして、バイトアドレス64〜79の16バイトのデータは、再びバンクbank0(dmem-bank0)に格納され、同様の処理が繰り返される。
従って、或るデータにアクセスしたい場合、各バンクメモリの物理アドレスは、次のように求めることができる。
バンクメモリの物理アドレス
=(データのバイトアドレス)÷(各バンクのラインサイズ × バンク数)
=(データのバイトアドレス)÷(16 × 4)
図6は、図3の演算処理装置におけるスカラーレジスタを説明するための図であり、また、図7は、図3の演算処理装置におけるベクトルレジスタを説明するための図である。
図6に示されるように、スカラーレジスタ(SR)13は、例えば、32ビット幅のレジスタであり、例えば、アドレス(address)等のデータが格納される。
図7に示されるように、ベクトルレジスタ(VR)14は、例えば、128ビット幅のレジスタであり、例えば、16ビットデータの各要素が8個ずつ格納される。すなわち、ベクトルレジスタ14の各エントリには、それぞれ要素0〜7,要素8〜15,要素16〜23,…が格納される。
ここで、前に、図1を参照して説明したように、ベクトルプロセッサ(各演算器)では、命令のフェッチ(fetch)、デコード(decode)、レジスタからの読み出し(reg. read)、実行(execute)およびライトバック(writeback)の各ステージの処理が行われる。
なお、図3に示すデコーダ11は、例えば、フェッチした命令をデコードし、1サイクルに1命令ずつベクトルパイプラインに投入する。なお、各命令で演算するデータ数は、例えば、ベクトルレングス(Vector Length:VL)という制御レジスタで管理される。
図8は、本実施例の演算処理装置におけるシーケンシャルアクセスの一例を説明するためのタイムチャートである。ここで、データメモリ2の各バンクbank0〜bank3には、図5を参照して説明した16バイトのデータがそれぞれ格納されている。
すなわち、図8に示されるように、実行(演算)ステージでは、アドレスA,A+1,…に従ってデータメモリ2をアクセスしたデータを演算し、そして、ライトバックステージでその演算結果をベクトルレジスタ14の各エントリにライトバックされる。
ここで、アドレスAによりアクセスされる各バンクのバイトアドレスは、例えば、サイクル1でbank0のバイトアドレス0〜15、また、サイクル2でbank1のバイトアドレス16〜31となる。そして、例えば、サイクル3でbank2のバイトアドレス32〜47、また、サイクル4でbank3のバイトアドレス32〜63となる。
さらに、次のアドレスA+1によりアクセスされる各バンクのバイトアドレスは、例えば、サイクル5でbank0のバイトアドレス64〜79、また、サイクル6でbank1のバイトアドレス80〜95となる。そして、例えば、サイクル7でbank2のバイトアドレス96〜111、また、サイクル8でbank3のバイトアドレス112〜127となる。
なお、ライトバックステージでは、例えば、サイクル2からベクトルレジスタ14のエントリ0,1,2…に対して、データメモリ2において前のサイクルでアクセスされた128ビット(16バイト)のデータの格納(ライトバック)が行われる。
このように、シーケンシャルアクセスを行うベクトルロード命令では、各バンクbank0〜bank3のデータ幅(128ビット)と転送先のベクトルレジスタ14のデータ幅が同じであるため、毎サイクル1バンクずつアクセスすればよいことになる。
次に、命令をデコードしたときに、ストライドロードストア命令(ストライドLoad/Store命令)であった場合の動作を説明する。命令をデコードしたときに、ストライドLoad/Store命令であった場合、命令発行制御部は、先行命令でLoad/Store命令が実行されているか否かを確認する。
Load/Store命令が実行中であれば、そのLoad/Store命令が完了するまでベクトルパイプラインへの発行を待つ。そして、先行のLoad/Store命令が完了した時点で、ストライドLoad/Store命令がベクトルパイプラインへ発行される。
ストライドLoad/Store命令を実行中は、後続の命令がLoad/Store命令であれば、発行部はベクトルパイプラインへの命令発行を、そのストライドLoad/Storeが完了するまで発行を待ち合わせる。
ベクトルパイプラインにストライドLoad/Store命令が投入されると、ベクトル命令は、引数であるスカラーレジスタ(SR)13を読み出し、アクセスデータパターン(sr0〜sr31)を読み出す。
アクセスデータパターンは、ディスタンス(distance)およびカウント(count)という2つのパラメータで決まる基本パターン(ストライドパターン)の繰り返しとして規定される。ここで、ディスタンスは、基本パターンのデータサイズを決めるパラメータであり、また、カウントは、有効なデータ数を決めるパラメータである。
図9は、本実施例の演算処理装置によるストライドアクセスの一例を説明するための図であり、また、図10は、図9のストライドアクセスを説明するためのタイムチャートである。なお、図9および図10は、distance=4,count=2のバイトデータ(distance=2,count=1のハーフデータ)のストライドLoad/Store命令を説明するためのものである。
distance=4でcount=2の場合、すなわち、基本パターンのデータサイズが4バイトで、有効なデータ数が2バイトの場合、図9に示されるように、データメモリ2のバンクbank0〜bank3からベクトルレジスタ(VR)14へデータが転送される。
すなわち、bank0のバイトアドレス0〜3中のアドレス0,1のデータ、バイトアドレス4〜7中のアドレス4,5のデータ、…、bank1のバイトアドレス28〜31中のアドレス28,29のデータが、VRのエントリに格納される。
ここで、バイトアドレス0〜3において、最初のアドレス0がベースアドレス(基底アドレス)になり、また、バイトアドレス4〜7において、最初のアドレス4がベースアドレスになる。
次に、bank2のバイトアドレス32〜35中のアドレス32,33のデータ、バイトアドレス36〜39中のアドレス36,37のデータ、…、bank3のバイトアドレス60〜63中のアドレス60,61のデータが、VRのエントリに格納される。
さらに、bank0のバイトアドレス64〜67中のアドレス64,65のデータ、バイトアドレス68〜71中のアドレス68,69のデータ、…、bank1のバイトアドレス92〜95中のアドレス92,93のデータが、VRのエントリに格納される。
このように、ロード命令(Load)では、データメモリ2上のデータから2バイトおきのデータを抽出し、それらのデータを整列させてベクトルレジスタ14へ転送(格納)する。
ここで、ベクトルレジスタ14のデータ幅は128ビットなので、図10に示されるように、2つのバンクを同時にアクセスすることで、データメモリ2における128ビットのデータを扱うようになっている。
すなわち、サイクル1では、アドレスAによるbank0のバイトアドレス0〜15、および、bank1のバイトアドレス16〜31を同時にアクセスする。また、サイクル2では、アドレスAによるbank2のバイトアドレス32〜47、および、bank3のバイトアドレス32〜63を同時にアクセスする。
さらに、サイクル3では、アドレスA+1によるbank0のバイトアドレス64〜79、および、bank1のバイトアドレス80〜95を同時にアクセスする。そして、サイクル4では、アドレスA+1によるbank2のバイトアドレス96〜111、および、bank3のバイトアドレス112〜127を同時にアクセスする。
なお、ライトバックステージでは、例えば、サイクル2からベクトルレジスタ14のエントリ0,1,2…に対して、データメモリ2において前のサイクルでアクセスされた2つのバンクからの128ビットのデータ転送が行われる。
従って、distance=4でcount=2のバイトデータのストライドLoad/Store命令では、2つバンクを同時アクセスすることにより、転送先ベクトルレジスタ14のデータ幅と同じ128ビットにすることができる。
なお、有効なデータのバイトアドレスは、必ず連番になるので、ベースアドレスまたはベースアドレス+1のどちらを演算子として使用するかを決めればよいことになる。
このように、本実施例によれば、毎サイクルで、ベクトルパイプラインのデータ幅と同じデータ転送を可能にすることができる。これにより、ストライドロード/ストア命令(ストライドLoad/Store命令)の後続命令に対しても、チェイニングを行うことが可能になり、演算処理装置の性能向上を図ることができる。
なお、命令をデコードしたとき、ストライドLoad/Store命令であった場合、このストライドLoad/Store命令の先行命令がLoad/Store命令の場合には、その先行命令が完了した時点で、ストライドLoad/Store命令をベクトルパイプラインへ発行するようになっている。これは、後述する他のストライドアクセスの例でも同様である。
図11は、本実施例の演算処理装置によるストライドアクセスの他の例を説明するための図であり、また、図12は、図11のストライドアクセスを説明するためのタイムチャートである。なお、図11および図12は、distance=6,count=2のバイトデータ(distance=3,count=1のハーフデータ)のストライドLoad/Store命令を説明するためのものである。
distance=6でcount=2の場合、すなわち、基本パターンのデータサイズが6バイトで、有効なデータ数が2バイトの場合、図11に示されるように、データメモリ2のバンクbank0〜bank3からベクトルレジスタ(VR)14へデータが転送される。
すなわち、bank0のバイトアドレス0〜5中のアドレス0,1のデータ、バイトアドレス6〜11中のアドレス6,7のデータ、…、bank2のバイトアドレス42〜47中のアドレス42,43のデータが、VRのエントリに格納される。
次に、bank3のバイトアドレス48〜53中のアドレス48,49のデータ、バイトアドレス54〜59中のアドレス54,55のデータ、…、bank1のバイトアドレス90〜95中のアドレス90,91のデータが、VRのエントリに格納される。
さらに、bank2のバイトアドレス96〜101中のアドレス96,97のデータ、バイトアドレス102〜17中のアドレス102,103のデータ、…、bank0のバイトアドレス138〜143中のアドレス138,139のデータが、VRのエントリに格納される。
ここで、ベクトルレジスタ14のデータ幅は128ビットなので、図12に示されるように、3つのバンクを同時にアクセスすることで、データメモリ2における128ビットのデータを扱うようになっている。
すなわち、サイクル1では、アドレスAによるbank0のバイトアドレス0〜15、bank1のバイトアドレス16〜31、および、アドレスAによるbank2のバイトアドレス32〜47を同時にアクセスする。
また、サイクル2では、アドレスAによるbank3のバイトアドレス32〜63、アドレスA+1によるbank0のバイトアドレス64〜79、および、bank1のバイトアドレス80〜95を同時にアクセスする。
さらに、サイクル3では、アドレスA+1によるbank2のバイトアドレス96〜111、bank3のバイトアドレス112〜127、および、アドレスA+2によるbank0のバイトアドレス128〜142を同時にアクセスする。
なお、ライトバックステージでは、例えば、サイクル2からベクトルレジスタ14のエントリ0,1,2…に対して、データメモリ2において前のサイクルでアクセスされた3つのバンクからの128ビットのデータ転送が行われる。
従って、distance=6でcount=2のバイトデータのストライドLoad/Store命令では、3つバンクを同時アクセスすることにより、転送先のベクトルレジスタ14のデータ幅と同じ128ビットにすることができる。
このように、本実施例によれば、毎サイクルで、ベクトルパイプラインのデータ幅と同じデータ転送が可能になり、ストライドLoad/Store命令の後続命令に対しても、チェイニングを行うことが可能になり、演算処理装置の性能向上を図ることができる。
図13は、本実施例の演算処理装置によるストライドアクセスのさらに他の例を説明するための図であり、また、図14は、図13のストライドアクセスを説明するためのタイムチャートである。なお、図13および図14は、distance=5,count=2のバイトデータのストライドLoad/Store命令を説明するためのものである。
distance=5でcount=2の場合、すなわち、基本パターンのデータサイズが5バイトで、有効なデータ数が2バイトの場合、図13に示されるように、データメモリ2のバンクbank0〜bank3からベクトルレジスタ(VR)14へデータが転送される。
すなわち、bank0のバイトアドレス0〜4中のアドレス0〜2のデータ、バイトアドレス5〜9中のアドレス5〜7のデータ、…、bank1のバイトアドレス25〜29中のアドレス25のデータが、VRのエントリに格納される。
次に、bank1のバイトアドレス25〜29中のアドレス26,27のデータ、バイトアドレス30〜bank2のバイトアドレス34中のアドレス30〜32のデータ、…、bank3のバイトアドレス50〜54中のアドレス50,51のデータが、VRのエントリに格納される。
さらに、bank3のバイトアドレス50〜54中のアドレス52のデータ、バイトアドレス55〜59中のアドレス55〜57のデータ、…、bank0のバイトアドレス75〜79中のアドレス75〜77のデータが、VRのエントリに格納される。
ここで、ベクトルレジスタ14のデータ幅は128ビットなので、図14に示されるように、2つのバンクを同時にアクセスすることで、データメモリ2における128ビットのデータを扱うようになっている。
すなわち、サイクル1では、アドレスAによるbank0のバイトアドレス0〜15、および、bank1のバイトアドレス16〜31を同時にアクセスする。また、サイクル2では、アドレスAによるbank2のバイトアドレス32〜47、および、bank3のバイトアドレス32〜63を同時にアクセスする。
さらに、サイクル3では、アドレスA+1によるbank0のバイトアドレス64〜79、および、bank1のバイトアドレス80〜95を同時にアクセスする。そして、サイクル4では、アドレスA+1によるbank2のバイトアドレス96〜111、および、bank3のバイトアドレス112〜127を同時にアクセスする。
なお、ライトバックステージでは、例えば、サイクル2からベクトルレジスタ14のエントリ0,1,2…に対して、データメモリ2において前のサイクルでアクセスされた2つのバンクからの128ビットのデータ転送が行われる。
従って、distance=5でcount=2のバイトデータのストライドLoad/Store命令では、2つバンクを同時アクセスすることにより、転送先ベクトルレジスタ14のデータ幅と同じ128ビットにすることができる。
このように、本実施例によれば、毎サイクルで、ベクトルパイプラインのデータ幅と同じデータ転送が可能になり、ストライドLoad/Store命令の後続命令に対しても、チェイニングを行うことが可能になり、演算処理装置の性能向上を図ることができる。
以上、詳述したように、ディスタンスおよびカウントの2つのパラメータで規定される基本パターン(ストライドパターン)に従って、同時に2または3つのバンクをアクセスすることにより、転送先ベクトルレジスタのデータ幅と同じにすることができる。
図15は、本実施例の演算処理装置におけるストライドアクセスの動作を規定するパラメータを説明するための図である。図15において、distance(ディスタンス)は、基本パターンのデータサイズを決めるパラメータであり、また、count(カウント)は、有効なデータ数を決めるパラメータである。
また、図15において、『o』は、データメモリ2から1サイクルで取り込んでベクトルレジスタ14に格納することができる場合を示し、また、『x』は、パイプラインをストールせせる場合を示している。
図15に示されるように、例えば、パラメータdistance(ディスタンス)をDSTとし、パラメータcount(カウント)をCNTとし、同時アクセス可能なバンクの数をNとすると、DSTおよびCNTは、次の式を満たす整数として定義することができる。
CNT×N≧DST
図16は、本実施例の演算処理装置におけるアドレス生成部の一例を示すブロック図であり、図8〜図14を参照して説明したデータメモリ2に対するストライドアクセスのためのアドレス信号等を生成するアドレス生成部16の一例を示すものである。ここで、アドレス生成部16は、ベースアドレス、ストライドパターン(基本パターン)およびオペコードを受け取って、データメモリ2に対する各種の信号を生成する。
図16に示されるように、アドレス生成部16は、データメモリ2の各バンクbank0〜bank3に対するアドレスAdd0〜Add3、チップセレクト信号CS0〜CS3、および、ライトイネーブル信号WE0〜WE3を生成する。
アドレス生成部16は、セレクタ161〜165、フリップフロップ166、インクリメント回路167、および、制御回路168を有する。セレクタ161〜163は、それぞれbank0〜bank3に対するアドレスを選択するもので、ベースアドレス或いはそのベースアドレス(またはフリップフロップ166の出力)にインクリメント回路167により1を加算したアドレスを選択して出力する。
制御回路168は、2つのパラメータ distance および count により規定されるストライドパターンおよびオペコードを受け取って、bank0〜bank3に対するチップセレクト信号CS0〜CS3およびライトイネーブル信号WE0〜WE3を生成する。なお、制御回路168は、各セレクタ161〜165に対する制御信号も生成する。
以上、詳述した実施例において、データメモリ2は、4つのバンクbank0〜bank3を有するものに限定されず、また、演算処理装置1が同時アクセス可能であれば、バンク以外の複数のメモリブロックを有するものでもよい。さらに、データメモリ2に対するストライドアクセスは、ストライドLoad/Store命令に限定されるものでもない。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
同時アクセス可能な複数のメモリブロックを有するデータメモリとの間でデータを遣り取りする複数のベクトルパイプラインを有する演算処理装置であって、
前記データメモリに対するストライドアクセスを、基本パターンのデータサイズを決める第1パラメータと、該基本パターンにおける有効なデータ数を決める第2パラメータで規定することを特徴とする演算処理装置。
(付記2)
前記第1パラメータをDSTとし、前記第2パラメータをCNTとし、前記同時アクセス可能なメモリブロックの数をNとするとき、DSTおよびCNTは、CNT×N≧DSTを満たす整数として規定されることを特徴とする付記1に記載の演算処理装置。
(付記3)
さらに、第1ビット幅を有する第1レジスタを有し、
前記ストライドアクセスにより同時にアクセスされるメモリブロックの数は、前記第1ビット幅に従って規定されることを特徴とする付記1または2に記載の演算処理装置。
(付記4)
前記第1レジスタは、前記第1ビット幅の複数のエントリを有するベクトルレジスタであることを特徴とする付記2または3に記載の演算処理装置。
(付記5)
前記ストライドアクセスは、ストライドロード/ストア命令によるアクセスであり、
デコードした命令が前記ストライドロード/ストア命令のとき、該ストライドロード/ストア命令の先行命令がロード/ストア命令の場合には、当該先行命令が完了した時点で、前記ストライドロード/ストア命令を前記ベクトルパイプラインへ発行するようになっていることを特徴とする付記1〜4のいずれか1項に記載の演算処理装置。
(付記6)
さらに、アドレス生成部を有し、
該アドレス生成部は、前記第1および第2パラメータにより規定される前記基本パターンおよびベースアドレスを受け取って、前記複数のメモリブロックに対するアドレス信号をそれぞれ生成することを特徴とする付記1〜5のいずれか1項に記載の演算処理装置。
(付記7)
前記アドレス生成部は、
前記基本パターンにおける有効なデータのアドレスを、前記ベースアドレスをインクリメントして生成することを特徴とする付記6に記載の演算処理装置。
(付記8)
前記メモリブロックは、前記データメモリにおけるバンクであることを特徴とする付記1〜7のいずれか1項に記載の演算処理装置。
1 演算処理装置(ベクトルプロセッサ)
2 データメモリ
3 命令メモリ(IMEM)
11 デコーダ(デコードロジック)
12 ベクトルパイプライン部
13 スカラーレジスタ(SR)
14 ベクトルレジスタ(VR)
15 マルチプレクサ・デマルチプレクサ(MUX/DEMUX)
16 アドレス生成部
bank0〜bank3 バンク(メモリブロック)
CNT カウント(count:第2パラメータ)
DST ディスタンス(distance:第1パラメータ)
N 同時アクセス可能なバンク(メモリブロック)の数

Claims (5)

  1. 同時アクセス可能な複数のメモリブロックを有するデータメモリとの間でデータを遣り取りする複数のベクトルパイプラインを有する演算処理装置であって、
    前記データメモリに対するストライドアクセスを、基本パターンのデータサイズを決める第1パラメータと、該基本パターンにおける有効なデータ数を決める第2パラメータで規定することを特徴とする演算処理装置。
  2. 前記第1パラメータをDSTとし、前記第2パラメータをCNTとし、前記同時アクセス可能なメモリブロックの数をNとするとき、DSTおよびCNTは、CNT×N≧DSTを満たす整数として規定されることを特徴とする請求項1に記載の演算処理装置。
  3. さらに、第1ビット幅を有する第1レジスタを有し、
    前記ストライドアクセスにより同時にアクセスされるメモリブロックの数は、前記第1ビット幅に従って規定されることを特徴とする請求項1または2に記載の演算処理装置。
  4. 前記ストライドアクセスは、ストライドロード/ストア命令によるアクセスであり、
    デコードした命令が前記ストライドロード/ストア命令のとき、該ストライドロード/ストア命令の先行命令がロード/ストア命令の場合には、当該先行命令が完了した時点で、前記ストライドロード/ストア命令を前記ベクトルパイプラインへ発行するようになっていることを特徴とする請求項1〜3のいずれか1項に記載の演算処理装置。
  5. さらに、アドレス生成部を有し、
    該アドレス生成部は、前記第1および第2パラメータにより規定される前記基本パターンおよびベースアドレスを受け取って、前記複数のメモリブロックに対するアドレス信号をそれぞれ生成することを特徴とする請求項1〜4のいずれか1項に記載の演算処理装置。
JP2010278041A 2010-12-14 2010-12-14 演算処理装置 Expired - Fee Related JP5664198B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010278041A JP5664198B2 (ja) 2010-12-14 2010-12-14 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010278041A JP5664198B2 (ja) 2010-12-14 2010-12-14 演算処理装置

Publications (2)

Publication Number Publication Date
JP2012128559A true JP2012128559A (ja) 2012-07-05
JP5664198B2 JP5664198B2 (ja) 2015-02-04

Family

ID=46645529

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010278041A Expired - Fee Related JP5664198B2 (ja) 2010-12-14 2010-12-14 演算処理装置

Country Status (1)

Country Link
JP (1) JP5664198B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200057B2 (en) 2017-05-15 2021-12-14 Fujitsu Limited Arithmetic processing apparatus and method for controlling arithmetic processing apparatus
JP7346883B2 (ja) 2019-04-10 2023-09-20 日本電気株式会社 ベクトルプロセッサ装置及び生成方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10134036A (ja) * 1996-08-19 1998-05-22 Samsung Electron Co Ltd マルチメディア信号プロセッサの単一命令多重データ処理
JP2010218350A (ja) * 2009-03-18 2010-09-30 Nec Corp 情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10134036A (ja) * 1996-08-19 1998-05-22 Samsung Electron Co Ltd マルチメディア信号プロセッサの単一命令多重データ処理
JP2010218350A (ja) * 2009-03-18 2010-09-30 Nec Corp 情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200057B2 (en) 2017-05-15 2021-12-14 Fujitsu Limited Arithmetic processing apparatus and method for controlling arithmetic processing apparatus
JP7346883B2 (ja) 2019-04-10 2023-09-20 日本電気株式会社 ベクトルプロセッサ装置及び生成方法

Also Published As

Publication number Publication date
JP5664198B2 (ja) 2015-02-04

Similar Documents

Publication Publication Date Title
US11714642B2 (en) Systems, methods, and apparatuses for tile store
JP7416393B2 (ja) テンソル並べ替えエンジンのための装置および方法
CN107077334B (zh) 从多维阵列预取多维元素块的硬件装置和方法
JP5658556B2 (ja) メモリ制御装置、及びメモリ制御方法
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
EP3629158B1 (en) Systems and methods for performing instructions to transform matrices into row-interleaved format
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
KR101597774B1 (ko) 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들
CN107908427B (zh) 用于多维数组中的元素偏移量计算的指令
CN107220029B (zh) 掩码置换指令的装置和方法
EP3623941B1 (en) Systems and methods for performing instructions specifying ternary tile logic operations
EP3629154B1 (en) Systems for performing instructions to quickly convert and use tiles as 1d vectors
JP7244046B2 (ja) 遠隔アトミックオペレーションの空間的・時間的マージ
JP7419629B2 (ja) データ表現間の一貫性のある変換を加速するプロセッサ、方法、プログラム、コンピュータ可読記憶媒体、および装置
CN107145335B (zh) 用于大整数运算的向量指令的装置和方法
EP2962187B1 (en) Vector register addressing and functions based on a scalar register data value
CN108415882B (zh) 利用操作数基础系统转换和再转换的向量乘法
CN114153498A (zh) 用于加载片寄存器对的系统和方法
US20240143325A1 (en) Systems, methods, and apparatuses for matrix operations
EP3623940A2 (en) Systems and methods for performing horizontal tile operations
EP3929733A1 (en) Matrix transpose and multiply
CN113885942A (zh) 用于将片寄存器对归零的系统和方法
JP2018500629A (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
JP5664198B2 (ja) 演算処理装置
CN107168682B (zh) 用于确定值是否在范围内的指令的装置和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140909

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141124

R150 Certificate of patent or registration of utility model

Ref document number: 5664198

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees