JP2007264909A - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP2007264909A
JP2007264909A JP2006087434A JP2006087434A JP2007264909A JP 2007264909 A JP2007264909 A JP 2007264909A JP 2006087434 A JP2006087434 A JP 2006087434A JP 2006087434 A JP2006087434 A JP 2006087434A JP 2007264909 A JP2007264909 A JP 2007264909A
Authority
JP
Japan
Prior art keywords
data
processor
memory
register
memory access
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.)
Pending
Application number
JP2006087434A
Other languages
English (en)
Inventor
Shuo Nomura
村 周 央 野
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2006087434A priority Critical patent/JP2007264909A/ja
Priority to US11/691,046 priority patent/US7870348B2/en
Publication of JP2007264909A publication Critical patent/JP2007264909A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

【課題】回路規模の増大を抑制しつつ、大きなデータに対して繰り返し同じ処理を行うことに適した演算処理装置を提供する。
【解決手段】演算処理装置は、予め定められたアクセスパターンに基づいて、メモリにアクセスして、データを順次読み出すメモリアクセス回路と、前記メモリアクセス回路が読み出したデータを格納するための格納部であって、当該格納部の空き容量が無くなるまで、前記メモリアクセス回路が前記メモリからデータを順次読み出し、この読み出したデータが格納される、格納部と、前記格納部に格納されているデータを取得する、プロセッサと、を備えて構成されている。
【選択図】図1

Description

本発明は、演算処理装置に関し、特に、大量のデータを処理する演算処理装置に関する。
オーディオデータやビデオデータなどのデータのストリームを再生する場合、メディアストリーミング処理を行うが、このメディアストリーミング処理では、複数の処理を繰り返して1つのデータに対して行うというよりは、むしろ、少ない限定された処理を大量のデータに対して行うという特質を有している。
このようなデータストリーミング処理をプロセッサで行う場合、(1)データのロード、(2)演算、(3)ポインタのインクリメントを繰り返すこととなる。DSPなどの専用プロセッサには、このような処理のための専用命令群が用意されており、この処理を1命令で実行することができる。しかし、汎用RISCプロセッサなどの演算処理装置でこの処理を行おうとすると、3命令以上必要となってしまう。汎用RISCプロセッサで、例えば、ストリームデータの総和を求めるプログラムを示すと、次のようになる。

int totalsum(int *streamData, int dataNum)
{
int i;
_R1=0;
_R2=streamdata;
for (i=0; i<dataNum; i++){
_R3=*(_R2);
_R1=_R1+_R3
_R2=_R2+1;
}
return(_R1);
}
ここで例示したプログラムは、配列streamDataの総和を求める関数totalsum()のプログラムである。dataNumは、streamDataのデータ個数を示している。また、R1、R2、R3は、それぞれレジスタを示している。具体的には、R1は総和が格納されるレジスタであり、R2は配列streamDataの位置を示すポインタが格納されているレジスタであり、R3はstreamDataからロードされたデータが格納されるレジスタである。
このプログラムにおいては、まず、総和を格納するレジスタR1のデータを、ゼロにリセットする。続いて、レジスタR2に、streamDataの値(つまりポインタ)を格納する。
次に、for文によるループ内の命令から分かるように、(1)_R3=*(_R2)で_R2で指定された位置にあるstreamDataがレジスタR3にロードされる。続いて、(2)_R1=_R1+_R3により、レジスタR1の現在のデータに、ロードしたレジスタR3のデータを加算する。続いて、(3)ポインタを格納しているレジスタR2の値を、1つインクリメントする。
そして、このような(1)から(3)の処理を、for文の条件を満たす限り、つまりi<dataNumという条件を満たす限り、繰り返して行う。具体的には、dataNumの数だけ、これら(1)から(3)の処理を繰り返すこととなる。
この例からも分かるように、データストリーミング処理を汎用RISCプロセッサで行う場合、(1)データのロード、(2)演算、(3)ポインタのインクリメントという3つの命令を繰り返すこととなる。
このように繰り返す命令の数を削減するために、汎用RISCプロセッサでも、DSPにあるような専用命令群を用意することも考えられるが、複雑な命令群を実装すると、RISCプロセッサの回路規模が大きくなってしまうという問題が生じる。
このような問題は、データストリーミング処理に限らず、大きなデータに対して、繰り返して同じ処理を行うあらゆるデータ処理で、生じる可能性がある。
また、類似の問題を解決するため、米国特許第5,155,816号公報では、通常のロード命令とは別系統の浮動小数点のロード命令PFloadを用意するとともに、PFload命令によるデータの供給とデータ処理のミスマッチを低減するために、PFload命令によって得られたデータを、FIFOバッファに格納し、順次出力するようにしている。また、米国特許第6,282,631号公報では、FIFOバッファがメモリ空間にマップされており、デコード対象のビットストリームを順次読み出すためにこのFIFOバッファが使用されている。これらの文献では、いずれもメモリアクセスのレイテンシを隠蔽するため、FIFOバッファが用いられているが、レイテンシ改善効果が必ずしも十分ではいか、或いは、回路規模の大型化が避けられない。
米国特許第5,155,816号公報 米国特許第6,282,631号公報
そこで、本発明では、回路規模の増大を抑制しつつ、大きなデータに対して繰り返し同じ処理を行うことに適した演算処理装置を提供することを目的とする。
上記課題を解決するため、本発明に係る演算処理装置は、
予め定められたアクセスパターンに基づいて、メモリにアクセスして、データを順次読み出すメモリアクセス回路と、
前記メモリアクセス回路が読み出したデータを格納するための格納部であって、当該格納部の空き容量が無くなるまで、前記メモリアクセス回路が前記メモリからデータを順次読み出し、この読み出したデータが格納される、格納部と、
前記格納部に格納されているデータを取得する、プロセッサと、
を備えることを特徴とする。
本発明によれば、回路規模の増大を抑制しつつ、大きなデータに対して繰り返し同じ処理を行うことに適した演算処理装置を提供することができる。
本実施形態では、ストリームデータへのアクセスパターンは予め定まった規則性を有しているという特徴を利用して、回路規模の増大を最小限に抑えながら、ストリーミング処理の高速化を図らんとしたものである。より詳しくを以下に説明する。
図1は、本実施形態に係る演算処理装置の回路構成の一例を説明するブロック図である。この図1に基づいて、上述したストリームデータの総和を求める処理を行う場合における演算処理装置の動作について説明する。
この図1に示すように、本実施形態に係る演算処理装置は、プロセッサ10と、レジスタファイル12と、メモリ14と、メモリアクセス回路20と、FIFOイネーブルレジスタ24と、比較器26と、論理積回路28と、FIFOバッファ30と、セレクタ32と、論理積回路34とを備えて、構成されている。
本実施形態では、図1に示す各構成要素は、1つの集積回路として1チップで構成されているが、その構成態様は任意である。例えば、メモリ14については、この演算処理装置に含める必要はなく、別チップとして構成してもよい。
まず、本実施形態における起動制御信号であるアクセスパターン指定信号に基づいて、メモリアクセス回路20は起動する。このメモリアクセス回路20が起動されると、メモリアクセス回路20は、メモリ14にアクセスして、予め定められている規則性に基づいて、streamDataのデータを読み出し、FIFOバッファ30に格納し、これをFIFOバッファ30の空きがなくなるまで繰り返す。本実施形態では、streamDataの先頭から順番にという規則性が予め定められている。このFIFOバッファ30が本実施形態における格納部を構成している。
具体的には、メモリアクセス回路20は、アクセス信号をメモリ14に出力する。メモリ14は、プロセッサ10からもアクセス信号が入力されることがあるので、これらメモリアクセス回路20からのアクセスと、プロセッサ10からのアクセスとの調停も行う。2つのアクセスが競合した場合の優先順位は様々なものが考えられるが、例えば、プロセッサ10からのアクセスを優先したり、メモリアクセス回路20からのアクセスを優先したりするアルゴリズムが考えられる。
本実施形態では、アクセス信号にアクセスすべきメモリ14のアドレスが含まれているので、メモリ14は、指定されたアドレスのデータを読み出し、メモリ出力データとして、メモリアクセス回路20又はプロセッサ10に出力する。
なお、図1の例では、プロセッサ10からのアクセス信号とメモリアクセス回路20からのアクセス信号が競合した場合の調停機能を、メモリ14が備えているが、メモリ14がこのような調停機能を備えていない場合には、図2に示すように、調停ユニット22をこのメモリ14とは別個に設けて、プロセッサ10とメモリアクセス回路20は、この調停ユニット22を介して、メモリ14にアクセスするようにすればよい。
図1に示すように、メモリ14から出力されたメモリ出力データを取得したメモリアクセス回路20は、これをFIFO入力データとしてFIFOバッファ30に出力し、読み出しデータ(streamData)として、FIFOバッファ30に格納する。streamDataは、dataNum個の配列で構成されているので、FIFOバッファ30に空き領域があれば、メモリアクセス回路20は、メモリ14からstreamDataを順番に読み出して、FIFOバッファ30に格納する。
メモリアクセス回路20は、FIFOバッファ30に空き領域があるかどうかを、FIFOバッファ30の出力する空き容量信号に基づいて判断する。
一方、プロセッサ10は、データ読み出しの必要なレジスタが発生すると、そのレジスタ番号を、処理入力レジスタ番号として、レジスタファイル12に出力する。レジスタファイル12では、処理入力レジスタ番号で指定された番号のレジスタのデータを、レジスタファイル出力データとして、セレクタ32に出力する。
また、プロセッサ10から出力された処理入力レジスタ番号は、比較器26にも入力される。本実施形態では、メモリ14から先読みされたデータが格納されるレジスタ番号は15番と定められている。このため、比較器26は、入力された処理入力レジスタ番号が15番であるかどうかを判断し、入力された処理入力レジスタ番号が15番である場合にはハイレベルの比較結果信号を出力し、入力された処理入力レジスタ番号が15番でない場合にはローレベルの比較結果信号を出力する。
また、プロセッサ10は、メモリアクセス回路20を起動した先読み用のFIFOバッファ30を用いた処理を行う場合には、この処理に先立って、ハイレベルのイネーブルレジスタ制御信号をFIFOイネーブルレジスタ24に入力する。このため、先読み用のFIFOバッファ30を用いる処理を行っている場合には、FIFOイネーブルレジスタ24の出力信号は、ハイレベルになっている。このFIFOイネーブルレジスタ24の出力信号と、比較器26の比較結果信号とは、論理積回路28に入力されている。
したがって、論理積回路28の出力であるFIFO出力イネーブル信号は、先読み用のFIFOバッファ30を用いる処理を行っている間に、15番の処理入力レジスタ番号がプロセッサ10から出力された場合には、ハイレベルとなる。
FIFOバッファ30は、このハイレベルのFIFO出力イネーブル信号が入力されると、保持しているデータを格納された順に、FIFO出力データとして、セレクタ32に出力する。そして、FIFOバッファ30は、出力したデータをクリアして、次のデータを受け入れるために、空き容量信号をメモリアクセス回路20に出力する。FIFO出力イネーブル信号は、プロセッサ10が15番の処理入力レジスタ番号を出力するたびに、ローレベルからハイレベルに切り替わることになるので、FIFOバッファ30は、FIFO出力イネーブル信号がローレベルからハイレベルに切り替わるたびに、最も始めに格納されたデータを、FIFO出力データとして出力することとなる。
上述したところから分かるように、セレクタ32には、レジスタファイル12からのレジスタファイル出力データと、FIFOバッファ30からのFIFO出力データとが入力されているが、これらに加えて、論理積回路28からのFIFO出力イネーブル信号も入力されている。そして、セレクタ32は、このFIFO出力イネーブル信号に基づいて、レジスタファイル出力データとFIFO出力データのうちのどちらか一方を、処理入力データとして、プロセッサ10に出力する。
具体的には、FIFO出力イネーブル信号がハイレベルの場合には、FIFO出力データを処理入力データとしてプロセッサ10に出力し、FIFO出力イネーブル信号がローレベルの場合には、レジスタファイル出力データを処理入力データとしてプロセッサ10に出力する。これにより、プロセッサ10は、メモリアクセス回路20を起動した先読み用のFIFOバッファ30を用いる処理を実行している場合には、先読みしてFIFOバッファ30に格納されているデータをレジスタ15として取得することができる。一方、通常の処理を行っている場合には、レジスタファイル12に格納されているレジスタ15のデータを取得することができる。
論理積回路34は、FIFOバッファ30に先読みしたデータが格納されていない場合に、プロセッサ10の命令の実行を待たせるために設けられている。すなわち、論理積回路34には、FIFOバッファ30から出力されたFIFOバッファ30が空であることを示す信号と、論理積回路34から出力されたFIFO出力イネーブル信号とが入力されている。このFIFOバッファ30が空であることを示す信号は、FIFOバッファ30が空である場合にハイレベルになる信号である。したがって、FIFO出力イネーブル信号がハイレベルのとき(つまり、メモリアクセス回路20を起動したFIFOバッファ30を用いた先読み処理を実行している間に、レジスタ15の読み出しをCPU10がしたとき)に、FIFOバッファ30が空になると、論理積回路34は、ハイレベルのデータハザードストール信号を出力する。
CPU10では、データハザードストール信号がハイレベルである場合には、先読み用のFIFOバッファ30が空であるので、その命令の実行を待つこととなる。逆に、データハザードストール信号がローレベルである場合には、上述したように、先読みされたデータに基づいて命令を実行する。
なお、レジスタファイル12のレジスタにデータを書き込む場合には、プロセッサ10は、書き込むレジスタの番号を処理出力レジスタ番号として、レジスタファイル12に出力するとともに、書き込むべきデータを、処理出力データとして、レジスタファイル12に出力する。
本実施形態においては、このレジスタファイル12には、複数のレジスタが設けられており、これら複数のレジスタのそれぞれにはレジスタ番号が付されている。このため、プロセッサ10は、レジスタ番号を指定することにより、データを書き込んだり読み込んだりするレジスタを指定することができる。
以下に、上述した演算処理装置において、streamDataの総和を求める処理を実行するプログラムの一例を示す。

int totalsum_fifo(int *streamData, int dataNum)
{
int i;
_R1=0;
enablefifo();
prefetchfifo(streamdata, dataNum);
for (i=0; i<dataNum; i++){
_R1=_R1+_R15;
}
disablefifo()
return(_R1);
}
このプログラムは、*streamDataとdataNumとを引数とした関数であり、streamDataの総和を返す関数である。
このプログラムにおいては、まず、int i により、変数iが整数であることを宣言している。続いて、_R1=0により、総和を格納するためのレジスタ_R1をゼロに初期化している。続いて、enablefifo()により、上述したイネーブルレジスタ制御信号をイネーブルにしている。すなわち、イネーブルレジスタ制御信号をローレベルからハイレベルに切り替えている。
次に、prefetchfifo(streamdata, dataNum)により、メモリアクセス回路20を稼働させる。具体的には、上述したアクセスパターン指定信号により、メモリアクセス回路20を起動するとともに、引数として先読みするデータstreamdataと、データの個数 dataNumとをメモリアクセス回路20に指定する。このstreamdataでは、メモリ14の先頭アドレスが指定されていることとなる。これにより、メモリアクセス回路20は、予め定められた規則に従って、メモリ14からstreamDataで指定されたアドレスから、順番に、dataNum個、データを読み出して、FIFOバッファ30に順次格納する処理を開始する。
次に、for (i=0; i<dataNum; i++)と、_R1=_R1+_R15とにより、_R1=_R1+_R15の処理がdataNum回繰り返される。すなわち、レジスタ_R15には、FIFOバッファ30に先読みされたstreamDataが順次格納されてくるので、このレジスタ_R15を、総和を算出するレジスタ_R1に加算していく。
_R1=_R1+_R15の処理がdataNum回繰り返された後、disablefifo()により、イネーブルレジスタ制御信号をディセーブルにする。すなわち、イネーブルレジスタ制御信号をハイレベルからローレベルに切り替える。そして、return(_R1)により、算出された総和をレジスタ_R1により返す。
図3は、FIFOバッファ30の処理内容を説明するためのフローチャートを示す図である。この図3に示す処理は、この演算処理装置に電源が供給された段階で自動的に起動される処理である。
図3に示すように、FIFOバッファ30では、FIFOバッファ30内のデータの数を表すCOUNTの値を初期化して、ゼロにする(ステップS10)。ここでは、データを格納するためのN個の配列FIFODATA〔0…N−1〕が設けられていることを仮定しているので、COUNTは0…N−1の整数である。また、配列FIFODATA〔0…N−1〕のそれぞれの大きさは、レジスタファイル12のレジスタのビット数と同じ(つまり汎用レジスタのビット幅と同じ)であるものとする。
次に、FIFOバッファ30では、メモリアクセス回路20からのFIFO入力データがあるかどうかをチェックする(ステップS12)。
メモリアクセス回路20からのFIFO入力データがある場合には、FIFOバッファ30は、FIFODATA〔COUNT〕に、FIFO入力データを格納し、COUNTを1つインクリメントする(ステップS14)。一方、FIFO入力データが無い場合には、このステップS14はバイパスする。
次に、FIFOバッファ30は、FIFO出力データを出力する指示があるかどうかをチェックする(ステップS16)。具体的には、ハイレベルのFIFO出力イネーブル信号が入力されているかどうかをチェックする。
FIFO出力データを出力する指示がない場合には、FIFOバッファ30は、上述したステップS12に戻る。一方、FIFO出力データを出力する指示がある場合には、FIFOバッファ30は、COUNTの値がゼロであるかどうかをチェックする(ステップS18)。
COUNTの値がゼロでない場合には、FIFOバッファ30は、FIFODATA〔0〕の値を、FIFO出力データとして、セレクタ32に出力する(ステップS20)。続いて、FIFOバッファ30は、配列FIFODATA〔1〕からFIFODATA〔N−1〕の値を、FIFODATA〔0〕方向に1つシフトして、COUNTを1つデクリメントする(ステップS22)。すなわち、i=0からi=N−2について、FIFODATA〔i〕=FIFODATA〔i+1〕を行う。このCOUNTの値は、メモリアクセス回路20に出力される。すなわち、本実施形態においては、COUNTの値がN−1より小さい場合には、空き容量信号がFIFOバッファ30からメモリアクセス回路20に出力されていることとなる。そして、上述したステップS12に戻る。
これに対して、ステップS18でCOUNTの値がゼロであった場合には、FIFOバッファ30は、FIFOが空であることを示す信号を、論理積回路34に出力する(ステップS24)。そして、上述したステップS12に戻る。
図4は、メモリアクセス回路20の処理内容を説明するためのフローチャートを示す図である。この図4に示す処理は、この演算処理装置に電源が供給された段階で自動的に起動される処理である。
図4に示すように、メモリアクセス回路20は、プロセッサ10からのアクセスパターン指定信号の入力があるかどうかをチェックする(ステップS30)。すなわち、プロセッサ10は、アクセスパターン指定信号を用いて、メモリアクセス回路20を起動するので、このアクセスパターン指定信号が入力されたかどうかをチェックする。このアクセスパターン指定信号の入力がない場合には、このステップS30を繰り返して待機する。
一方、アクセスパターン指定信号の入力があった場合には、メモリアクセス回路20は、開始アドレスをADDRESSに取り込み、データ数をDATACOUNTに取り込む(ステップS32)。本実施形態では、この開始アドレスやデータ数は、アクセスパターン指定信号に含まれているデータである。メモリアクセス回路20を用いた先読みを行う場合、プロセッサ10は、アクセスパターン指定信号をアクセス回路20に出力するので、メモリアクセス回路20は、このアクセスパターン指定信号に含まれている開始アドレスとデータ数を取り込む。上述したプログラムにおいては、開始アドレスは引数のstreamDataで指定されており、データ数は引数のdataNumで指定されている。
次に、メモリアクセス回路20は、DATACOUNTの値がゼロであるかどうかをチェックする(ステップS34)。DATACOUNTの値がゼロである場合には、メモリ14から指定されたデータをすべて読み込んで、FIFOバッファ30に送ったことになるので、上述したステップS30に戻る。
一方、DATACOUNTの値がゼロでない場合には、FIFOバッファ30の空き容量をチェックする(ステップS36)。FIFOバッファ30の空き容量は、上述したように、FIFOバッファ30から出力されたCOUNTの値により確認できる。具体的には、COUNTの値がN−1であれば、FIFOバッファ30の空き容量はゼロであり、COUNTの値がN−2以下であれば、FIFOバッファ30に空き容量があることになる。FIFOバッファ30の空き容量がゼロである場合には、このステップS36を繰り返して、FIFOバッファ30に空き容量ができるまで待機する。
一方、FIFOバッファ30に空き容量がゼロではない場合には、メモリアクセス回路20は、メモリ14からADDRESSで指定されたアドレスのデータを取得して、FIFOバッファ30にFIFO入力データとして送信する(ステップS38)。
次に、メモリアクセス回路20は、DATACOUNTを1つデクリメントする(ステップS40)。続いて、メモリアクセス回路20は、ADDRESSに、レジスタファイル12のレジスタのデータ幅の大きさだけ、加算する(ステップS42)。すなわち、ADDRESSがメモリ14内の次のデータを指し示すようにする。そして、上述したステップS34からを繰り返す。
以上のように、本実施形態に係る演算処理装置によれば、メモリ14に対するアクセスパターンが予め定まっているようなデータアクセスについては、メモリアクセス回路20がメモリ14からこのアクセスパターンに従って先読みし、FIFOバッファ30に格納しておくこととしたので、プロセッサ10は極めて高速に、アクセスすべきアドレスのデータを取得することができる。また、汎用のプロセッサに対して大規模な回路の追加をすることなく、本実施形態に係る演算処理装置は実現できるので、演算処理装置の小型化を図ることができる。
なお、本発明は上記実施形態に限定されず種々に変形可能である。例えば、上述した実施形態では、予め定まっているメモリ14へのアクセスパターンは、単純なリニアアクセスであったが、このアクセスパターンはリニアアクセスに限るものではなく、スライド型や矩形といった複雑なアクセスパターンでも、予め定まったパターンがあれば、本発明を適用することができる。また、バイト、ハーフワード、ワードといった語長の指定や、シャッフルなどのデータの整形操作を、メモリアクセス回路20で行うこともできる。その場合は、メモリアクセス回路20は、メモリ14から必要なデータを取得し、指定された操作を行った上で、FIFOバッファ30にFIFO入力データを出力すればよい。
図5は、アクセスパターンの変形例として、1次元スライドアクセスを説明するための図である。この図5に示すように、1次元スライドアクセスでは、アクセスパターン指定信号において、開始アドレスとデータ数に加えて、ステップS42で加算するアドレスも指定されている。この例では、開始アドレスが「20」であり、データ数が「30」であり、加算するアドレスが「10」である。このため、ADDRESSは開始アドレス「20」から始まり、ステップS42でADDRESSが「10」ずつ加算され、最終的にADDRESSが「310」になるまで先読みが繰り返される。
図6は、アクセスパターンの別の変形例として、2次元スライドアクセスを説明するための図である。この図6に示すように、2次元スライドアクセスでは、アクセスパターン指定信号において、開始アドレスに加えて、水平方向のデータ数と、ステップS42で加算する水平方向のアドレスの大きさと、垂直方向のデータ数と、ステップS42で加算する垂直方向のアドレスの大きさとが、指定されている。
この例では、開始アドレスが「20」であり、水平方向のデータ数が「6」であり、水平方向に加算するアドレスの大きさ(ステップ数)が「20」であり、垂直方向のデータ数が「5」であり、垂直方向に加算するアドレスの大きさ(ステップ数)が「200」である。このため、ADDRESSは開始アドレス「20」から始まり、水平方向に「20」アドレスずつ増え、ADDRESSが「6」個目の「120」に到達した時点で、垂直方向に「200」アドレスを加算し、また、水平方向に「20」アドレスずつ増える処理を繰り返す。そして、最終的に水平方向に「6」個、垂直方向に「5」個の2次元アドレスにアクセスするまで、この処理を繰り返す。この図6の例では、最終アドレスADDRESSは「920」となる。
図7及び図8は、メモリアクセス回路20が行うデータの整形操作の一例を説明するための図である。この図7及び図8の例では、プロセッサ10のレジスタ幅を32ビットであると仮定している。
図7に示すように、必要とされているデータが、符号なし8ビットのバイトデータである場合には、第8ビットから第31ビットをクリアして、第0ビットから第7ビットを残す操作を行う。一方、必要とされているデータが、符号なし16ビットのハーフワードデータである場合には、第16ビットから第31ビットをクリアして、第0ビットから第15ビットを残す操作をする。
また、図8に示すように、必要とされているデータが、符号付き8ビットのバイトデータである場合には、第7ビットの値を左端の第31ビットにコピーするとともに、第8ビットから第30ビットをクリアして、第0ビットから第6ビットを残す処理を行う。一方、必要とされているデータが、符号付き16ビットのハーフワードデータである場合には、第15ビットの値を左端の第31ビットにコピーするとともに、第16ビットから第30ビットをクリアして、第0ビットから第14ビットを残す処理を行う。
図9は、メモリアクセス回路20が行うデータのシャッフルパターンの一例を示す図である。この図9の例では、メモリ14から前回ロードした32ビットのデータと、メモリ14から今回ロードした32ビットのデータとをシャッフルして、32ビットのFIFO入力データを生成している。
具体的には、今回ロードしたデータの第3バイトを、FIFO入力データの第1バイトに挿入し、前回ロードしたデータの第3バイトを、FIFO入力データの第2バイトに挿入し、今回ロードしたデータの第4バイトを、FIFO入力データの第3バイトに挿入し、前回ロードしたデータの第4バイトを、FIFO入力データの第4バイトに挿入することにより、FIFO入力データを生成する。この対応付けは予め定められており、メモリアクセス回路20に指定されているものとする。
このような複数のデータアクセスパターンに、メモリアクセス回路20が対応している場合には、どのアクセスパターンでメモリ14から先読みするかは、プロセッサ10が出力するアクセスパターン指定信号を用いて指定するように、すればよい。
本実施形態に係る演算処理装置の内部構成の一例を説明するためのブロック図。 演算処理装置の内部構成の変形例を説明するための図。 図1のFIFOバッファで実行される処理内容の一例を説明するフローチャートを示す図。 図1のメモリアクセス回路で実行される処理内容の一例を説明するフローチャートを示す図。 メモリアクセスパターンの変形例として、1次元スライドアクセスの内容を示す図。 メモリアクセスパターンの変形例として、2次元スライドアクセスの内容を示す図。 メモリアクセス回路が行うデータ整形操作の一例として、符号なし8ビットデータと符号なし16ビットデータに対するデータ操作の内容を示す図。 メモリアクセス回路が行うデータ整形操作の一例として、符号付き8ビットデータと符号付き16ビットデータに対するデータ操作の内容を示す図。 メモリアクセス回路が行うデータ整形操作の一例として、データのシャッフルパターンの内容を示す図。
符号の説明
10 プロセッサ
12 レジスタファイル
14 メモリ
20 メモリアクセス回路
24 FIFOイネーブルレジスタ
26 比較器
28 論理積回路
30 FIFOバッファ
32 セレクタ
34 論理積回路

Claims (5)

  1. 予め定められたアクセスパターンに基づいて、メモリにアクセスして、データを順次読み出すメモリアクセス回路と、
    前記メモリアクセス回路が読み出したデータを格納するための格納部であって、当該格納部の空き容量が無くなるまで、前記メモリアクセス回路が前記メモリからデータを順次読み出し、この読み出したデータが格納される、格納部と、
    前記格納部に格納されているデータを取得する、プロセッサと、
    を備えることを特徴とする演算処理装置。
  2. 前記プロセッサがデータを取得するための複数のレジスタが格納されているレジスタファイルであって、前記レジスタにはそれぞれレジスタ番号が付されており、前記プロセッサがレジスタ番号を指定した場合には、指定されたレジスタ番号のデータを出力する、レジスタファイルと、
    前記格納部から出力されたデータと前記レジスタファイルからの出力されたデータのうち、いずれかのデータを選択して、前記プロセッサに出力する、セレクタと、
    をさらに備えることを特徴とする請求項1に記載の演算処理装置。
  3. 前記メモリアクセス回路は、前記プロセッサから出力される起動制御信号により起動される、ことを特徴とする請求項1又は請求項2に記載の演算処理装置。
  4. 前記メモリアクセス回路が起動されている状態で、前記プロセッサが指定したレジスタ番号が、予め定められているレジスタ番号と一致した場合には、前記セレクタは、前記格納部から出力されたデータを、前記プロセッサに出力する、ことを特徴とする請求項3に記載の演算処理装置。
  5. 前記格納部は、格納されたデータが、格納された順に出力されるバッファにより構成されている、ことを特徴とする請求項1乃至請求項4のいずれかに記載の演算処理装置。
JP2006087434A 2006-03-28 2006-03-28 演算処理装置 Pending JP2007264909A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006087434A JP2007264909A (ja) 2006-03-28 2006-03-28 演算処理装置
US11/691,046 US7870348B2 (en) 2006-03-28 2007-03-26 Processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006087434A JP2007264909A (ja) 2006-03-28 2006-03-28 演算処理装置

Publications (1)

Publication Number Publication Date
JP2007264909A true JP2007264909A (ja) 2007-10-11

Family

ID=38560816

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006087434A Pending JP2007264909A (ja) 2006-03-28 2006-03-28 演算処理装置

Country Status (2)

Country Link
US (1) US7870348B2 (ja)
JP (1) JP2007264909A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012522986A (ja) * 2009-04-03 2012-09-27 アナログ デバイシス, インコーポレイテッド シングルポートメモリを伴うデジタル出力センサfifoバッファ
JP2020072888A (ja) * 2019-10-23 2020-05-14 株式会社ユニバーサルエンターテインメント 遊技機
JP2020072850A (ja) * 2019-10-09 2020-05-14 株式会社ユニバーサルエンターテインメント 遊技機

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887435A (ja) * 1994-09-19 1996-04-02 Matsushita Electric Ind Co Ltd ファイルサーバ装置
JPH096614A (ja) * 1995-06-21 1997-01-10 Sanyo Electric Co Ltd データ処理装置
JPH1165841A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
JP2000148578A (ja) * 1998-11-09 2000-05-30 Sony Corp 記憶装置および画像データ処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155816A (en) 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
JP3127853B2 (ja) * 1997-04-30 2001-01-29 日本電気株式会社 メモリ集積回路並びにこれを用いた主記憶システム及びグラフィクスメモリシステム
US6052756A (en) * 1998-01-23 2000-04-18 Oki Electric Industry Co., Ltd. Memory page management
US6282631B1 (en) 1998-12-23 2001-08-28 National Semiconductor Corporation Programmable RISC-DSP architecture
US7353334B2 (en) * 2002-08-19 2008-04-01 Aristos Logic Corporation Method of increasing performance and manageability of network storage systems using optimized cache setting and handling policies
JP2006127460A (ja) * 2004-06-09 2006-05-18 Renesas Technology Corp 半導体装置、半導体信号処理装置、およびクロスバースイッチ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887435A (ja) * 1994-09-19 1996-04-02 Matsushita Electric Ind Co Ltd ファイルサーバ装置
JPH096614A (ja) * 1995-06-21 1997-01-10 Sanyo Electric Co Ltd データ処理装置
JPH1165841A (ja) * 1997-08-11 1999-03-09 Sony Corp 演算処理装置およびその方法
JP2000148578A (ja) * 1998-11-09 2000-05-30 Sony Corp 記憶装置および画像データ処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012522986A (ja) * 2009-04-03 2012-09-27 アナログ デバイシス, インコーポレイテッド シングルポートメモリを伴うデジタル出力センサfifoバッファ
JP2020072850A (ja) * 2019-10-09 2020-05-14 株式会社ユニバーサルエンターテインメント 遊技機
JP2020072888A (ja) * 2019-10-23 2020-05-14 株式会社ユニバーサルエンターテインメント 遊技機

Also Published As

Publication number Publication date
US20070233974A1 (en) 2007-10-04
US7870348B2 (en) 2011-01-11

Similar Documents

Publication Publication Date Title
JP6274672B2 (ja) 装置および方法
JP6109910B2 (ja) メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法
KR101817034B1 (ko) 반복 종속 조건을 갖는 반복들의 벡터 루프들을 구현하기 위한 명령어
JP5834997B2 (ja) ベクトルプロセッサ、ベクトルプロセッサの処理方法
US20140143513A1 (en) Method and apparatus for efficient, low-latency, streaming memory copies
JP3558163B2 (ja) 拡張命令語縮約装置
JP2007264909A (ja) 演算処理装置
US20020169900A1 (en) Direct memory access controller, and direct memory access control method
JP2009093513A (ja) 命令ビット長削減方法
JP2008204249A (ja) データプロセッサ
JP2556182B2 (ja) デ−タ処理装置
GB2343027A (en) Processor and memory control for accessing a square memory area
TW201823972A (zh) 向量產生指令
JP2008071061A (ja) 情報処理装置
CN110337637B (zh) 数据处理方法和设备
US6363469B1 (en) Address generation apparatus
US20090063808A1 (en) Microprocessor and method of processing data
JP5292831B2 (ja) プログラマブルコントローラ
JP2791086B2 (ja) 命令プリフェッチ装置
JP5025521B2 (ja) 半導体装置
JP4553622B2 (ja) データ処理装置
JP2687765B2 (ja) 分岐予測方式
JP5679263B2 (ja) 情報処理装置及びマイクロ命令処理方法
JP2008299501A (ja) プロセッサ
JP2016018320A (ja) 情報処理システム、情報処理方法、および、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110712