JP2004272851A - 信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム - Google Patents
信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム Download PDFInfo
- Publication number
- JP2004272851A JP2004272851A JP2003066443A JP2003066443A JP2004272851A JP 2004272851 A JP2004272851 A JP 2004272851A JP 2003066443 A JP2003066443 A JP 2003066443A JP 2003066443 A JP2003066443 A JP 2003066443A JP 2004272851 A JP2004272851 A JP 2004272851A
- Authority
- JP
- Japan
- Prior art keywords
- data
- prefetch
- address
- loop
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008569 process Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 12
- 239000008186 active pharmaceutical agent Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L13/00—Speech synthesis; Text to speech systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Electrophonic Musical Instruments (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】プロセッサー1と、内部に配置されたキャッシュメモリー11と、プロセッサー1に内蔵され、命令解読部/発行部5、レジスターファイル6、プリフェッチ実行制御部7、外部メモリー制御部8、キャッシュメモリー制御部9及びデータ処理部12からなる処理実行部2と、及びプロセッサー1の外部に配置された外部メモリー10とで構成する。外部メモリー10からキャッシュメモリー11にループ型データを読み出す際に、終端において自動的に始点に戻り、連続してループ型データを読み出す。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、信号処理装置に関し、更に、プリフェッチ命令方法及びプリフェッチ命令プログラムに関する。
【0002】
【従来の技術】
現在、マイクロプロセッサー等においては、映像・音声といったマルチメディアデータ処理を効率的にかつ高速に実行するために、大容量のキャッシュメモリーを搭載している。キャッシュメモリーはマルチメディアデータを高速処理する上で一番重要な技術である。なぜならば、キャッシュメモリーはプロセッサー内に配置されていて、プロセッサーと同じスピードで動作するからである。一方、キャッシュメモリーは容量が小さいことから、大容量のデータを記憶することはできない。したがって、外部メモリーから取り込むデータの内、ある一部をもってきて活用することになる。キャッシュメモリーには必要なデータを取り込んでおくと効率がよい。
【0003】
まず、一番簡単な構成を用いて説明すると、プロセッサーに対して外部メモリーが接続され、この外部メモリーから必要なときに必要なデータを読み出して、プロセッサーを実行する場合がある。プロセッサー内の実行処理部に対して外部メモリーからデータが供給されるため、このように外部メモリーから読み出す場合、アクセス開始時からデータ実行処理到着まで、時間が長くかかるという欠点がある。
【0004】
一方、プロセッサー内にキャッシュメモリーが存在する構成においては、外部メモリーからデータがキャッシュメモリーに供給されるため、キャッシュメモリーから読み出す場合、アクセス開始時からデータ処理実行部到着まで、時間が短くてすむ。
【0005】
しかるに、キャッシュメモリーの容量が小さいために、キャッシュメモリーに所望のデータが無く、外部メモリーから必要なデータを読み出す場合には、外部メモリーからプロセッサー内の処理実行部までデータの転送に時間を要するため、アクセス開始からデータ処理実行部到着まで、時間が長くかかるという欠点が存在する。即ち、データ処理に必要なデータが現実に必要になってから、その必要なデータが格納されている外部メモリーにアクセスして読み出そうとすると、そのデータが外部メモリーから読み出されてくるまでにかなりの時間がかかる。その分処理が停滞することが十分にありうる。
【0006】
そこで、あらかじめキャッシュメモリー内に使用頻度の高いデータを登録し、この登録済みのデータに対してアクセスするというプリフェッチ命令機能を搭載したプロセッサーにおいては、アクセス開始からデータ処理実行部到着まで時間は短くてすむという利点が存在する。
【0007】
即ち、プロセッサーの命令にプリフェッチ命令というものを組み込んで、ソフトウェアが処理に必要と思われるデータを予め、プロセッサーに搭載されているキャッシュメモリーに読み込んでおくことができるようにする。特に、映像・音声といったマルチメディアデータを処理する上では、必要なデータを、予め取り込んでおくと効率がよい。即ち、プリフェッチ命令によって、ほしい時期にプリフェッチデータを発行すると好都合である。
【0008】
現在のマイクロプロセッサー等では、以上の2つの機能、即ち、高速キャッシュメモリー機能とプロセッサーからのプリフェッチ命令によるプリフェッチデータの読み出し機能の実現により、映像そして音声といったマルチメディアデータ処理を行っている。
【0009】
ところが、現在のところ、プリフェッチ命令によってデータを読み出す形式においては、読み出す開始点から読み終わる終点まで、アドレスが大きくなる方向のみのデータ列しか読み出すことはできない。
【0010】
ここで、一般的なプリフェッチ命令の機能を説明する。外部メモリー上のアドレスデータEADにおいて、プリフェッチデータPD を選択してキャッシュメモリーへ転送する場合には、図11に示すように、開始アドレスSAとデータサイズDSを指定してプリフェッチデータPDを選択する。この選択されたプリフェッチデータPDをキャッシュメモリーへ転送し、キャッシュメモリー上のアドレスデータCADにおいて、所望のキャッシュデータCDを得ることができる。ここで、外部メモリー上のアドレスデータEADおいて、開始アドレスSAからデータサイズDSを指定することから、プリフェッチ命令によってデータを読み出す場合、図11において右方向へアドレスが大きくなる方向にあることから、アドレスが大きくなる方向のみのデータ列しか読み出すことはできない。
【0011】
外部メモリー上において、インターバルをおいて飛び飛びに存在するデータをまとめてキャッシュメモリーに転送する場合もある。例えば、映像データにおいては、R (赤),G(緑),B(青)の色分離データをそれぞれまとめて、Rだけのデータ、Gだけのデータ、Bだけのデータとしてキャッシュメモリーに転送することがある。このように飛び飛びのデータを扱う場合、例えば図12に示すように、外部メモリー上のアドレスデータEAD内のブロックデータBD1,BD2,BD3,BD4は飛び飛びの位置に置かれている。このような外部メモリー上のアドレスデータEADをキャッシュメモリー上のアドレスデータCADに転送してキャッシュデータCDを得る場合、これらのデータをまとめてキャッシュメモリー上において圧縮された形に転送している。ブロックデータBD1は、開始アドレスSAから所定のブロックサイズBSによって規定され、他のブロックデータBD2,BD3,BD4も同様に規定される。何ブロックアクセスするかはブロック数BNによってあらかじめ決めておく。各ブロックデータの開始アドレスSA間をストライドSTによって規定している。図12の例においても、プリフェッチ命令によってデータを読み出す場合、外部メモリー上のアドレスデータEADにおいて、読み出す開始点から読み終わる終点まで、飛び飛びのデータを読み出すとしても、アドレスが大きくなる方向のみのデータ列しか読み出すことはできない。
【0012】
いわゆるインターネット上からの動画配信等において利用されているストリーミング技術においては、音声及び映像データの場合のデータ処理は、上記に示すようなプリフェッチ命令で十分である。しかしながら、データを何回もループして読み出すような音声合成処理を行うような場合には、ソフトウェア側で常に読み出すアドレスがループの終点に達したのかどうかという判断処理をしなければならない。即ち、図13に示すように、外部メモリー上のアドレスデータEADにおいて、開始アドレスSAからデータサイズDSの範囲内にあるループデータLDを繰り返し読み出す場合には、データサイズDSの範囲をSW10,SW11,SW12・・・と繰り返し何回もスキャンすることによって、所望のループデータLDDを滑らかに連続した形で読み出すことができる。しかるに、データを何回もループして読み出すような音声合成処理を行うような場合には、読み出すアドレスがループの終点に達したのかどうかという判断処理を、常にソフトウェア側で実行する必要があり、ソフトウェアとして大変な困難性を伴う。
【0013】
そしてループの終点に達したと判断した場合には、あらためてループの始点から所望のデータ量をプリフェッチするように命令の再発行をしなければならない。図13の例では、音声データとして「ポー」という音を何回も繰り返して再生する場合の例に対応している。開始アドレスSAからデータサイズDSの範囲内にあるループデータLDを、繰り返し読み出しサイズSW10,SW11,SW12にわたって3回繰り返して読み出す例が示されている。この場合にも、対象外データEXDを読み出してしまう可能性もある。「ポー」という音声を3回繰り返し再生した場合において、所望のループデータLDDの連続波形(横軸:時間)の様子も示されている。前述の通り、データを何回もループして読み出すような音声合成処理を行うような場合には、読み出すアドレスがループの終点に達したのかどうかという判断処理を、常にソフトウェア側で実行する必要があり、ソフトウェアとして大変な困難性を伴う。
【0014】
この場合でもデータのサイズが大きく、なかなかループの終点に達しないようなデータを処理する場合には、その判断処理及び対応処理は、あまり大きなソフトウェア上の負荷にはならない。しかしながら、電子楽器のようにループ処理を行うデータのサイズが音素と呼ばれる短周期波形からストリーミングのような長時間の音をサンプリングしたような音を複数(数十や数百)扱うような場合には、上記のような判断処理や対応処理の総計処理数は膨大な量になる。
【0015】
【発明が解決しようとする課題】
本発明の目的は、あらかじめデータが格納されているメモリー上のデータの始点と終点を割り出すことができるパラメーターを有するプリフェッチ命令を利用して、データを「連続したデータ列」として、キャッシュメモリーにあらかじめ読み出して格納することができる信号処理装置を提供することにある。
【0016】
更に、本発明の目的は、ループ型データ構造に対するプリフェッチ命令機能を有する信号処理装置において使用するプリフェッチ命令方法及びプリフェッチ命令プログラムを提供することにある。
【0017】
【課題を解決するための手段】
上記目的を達成するために、本発明の第1の特徴は、(イ)キャッシュメモリーとキャッシュメモリーに一時格納された情報を用いて処理する処理実行部とを有するプロセッサーと、(ロ)プロセッサーの外部に配置された外部メモリーとを備え、(ハ)処理実行部はループ型データの終端において自動的にループ型データの始点に戻り、連続してループ型データを外部メモリーからキャッシュメモリーに読み出すことを特徴とする信号処理装置であることを要旨とする。
【0018】
本発明の第2の特徴は、(イ)外部メモリー上のアドレスデータに開始アドレスを設定する手順と、(ロ)開始アドレスから所定のデータサイズを有するループデータを定義する手順と、(ハ)プリフェッチ領域内のデータサイズの内、ループデータの終端部において、ループエンドプリフェッチデータを読み出す手順と、(ニ)自動的に前記ループデータの始点に戻り、ループスタートプリフェッチデータを読み出す手順と、(ホ)外部メモリー上のループ型データをキャッシュメモリー上のアドレスデータへ連続して転送する手順とを備えることを特徴とするプリフェッチ命令方法であることを要旨とする。
【0019】
本発明の第3の特徴は、(イ)外部メモリー上のアドレスデータにおいて、ループスタートアドレス及びループエンドオフセットを決定して、ループプリフェッチ適用領域とループプリフェッチ適用外領域及び対象外データを決定する手順と、(ロ)ループプリフェッチ適用外領域において、プリフェッチスタートアドレスを指定する手順と、(ハ)プリフェッチスタートアドレスから所定のストライドアドレスを指定して、飛び飛びのブロックデータをブロックサイズ単位に読み出す手順と、(ニ)ループプリフェッチ適用領域の終端に到達したとき、自動的にループスタートアドレスに戻る手順と、(ホ)終端において、ループエンドプリフェッチデータとループスタートプリフェッチデータを連続的に結合する手順とを備えることを特徴とするプリフェッチ命令方法であることを要旨とする。
【0020】
本発明の第4の特徴は、(イ)転送データ数とデータ転送分の和を新たな転送データ数として設定する手順と、(ロ)転送アドレスとデータ転送分のアドレスとの和を新たな転送アドレスとして設定する手順と、(ハ)新たな転送アドレスの値がループスタートアドレスとループエンドオフセットの和よりも大であるかどうかを判断する手順と、(ニ)和よりも小であるならば、ブロックサイズが新たな転送データ数に等しいかどうかを判断する手順と、(ホ)和よりも大であるならば、ループ終端をはみ出した後ろの部分のデータは捨て、残った前の部分のデータをバッファに格納する手順と、(へ)データ転送分から残ったデータ転送分を引いた値で表されるデータをループスタートアドレスの位置から確保し、バッファの空いた部分にデータを書き込む手順と、(ト)データ転送分から残ったデータ転送分を引いたアドレスと新たな転送アドレスとの和が更に新たな転送アドレスとなるように設定する手順とを備えることを特徴とするプリフェッチ命令方法であることを要旨とする。
【0021】
本発明の第5の特徴は、(イ)データ数とデータ転送分の和を新たな転送データ数として設定する手順と、(ロ)転送アドレスとデータ転送分のアドレスとの和を新たな転送アドレスとして設定する命令と、(ハ)新たな転送アドレスの値がループスタートアドレスとループエンドオフセットの和よりも大であるかどうかを判断する命令と、(ニ)和よりも小であるならば、ブロックサイズが新たな転送データ数に等しいかどうかを判断する命令と、(ホ)和よりも大であるならば、ループ終端をはみ出した後ろの部分のデータは捨て、残った前の部分のデータをバッファに格納する命令と、(へ)データ転送分から残ったデータ転送分を引いた値で表されるデータをループスタートアドレスの位置から確保し、バッファの空いた部分にデータを書き込む命令と、(ト)データ転送分から残ったデータ転送分を引いたアドレスと新たな転送アドレスの和が更に新たな転送アドレスとなるように設定する命令とを信号処理装置に実行させることを特徴とするプリフェッチ命令プログラムであることを要旨とする。
【0022】
【発明の実施の形態】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【0023】
本発明の実施形態に係る信号処理装置3は、図1に示すように、外部メモリー10と、キャッシュメモリー11と、プロセッサー1からの実行命令COMを受信する命令解読部/発行部5と、命令解読部/発行部5からのレジスター番号指定信号RNAをそれぞれのレジスター“A”、“B”、“C”において受信する汎用レジスター(専用レジスターでも可)ファイル6と、汎用レジスターファイル6からのレジスター内容出力データREと命令解読部/発行部5からのプリフェッチ命令実行信号PCEとをともに受信するプリフェッチ実行制御部7と、プリフェッチ実行制御部7からのキャッシュメモリー制御指示信号CMCを受信しキャッシュメモリー11との間でデータバス13Bを介してデータを送受信するキャッシュメモリー制御部9と、プリフェッチ実行制御部7からの外部メモリー制御指示信号EMCを受信し、外部メモリー10との間でデータバス13Bを介してデータを送受信する外部メモリー制御部8と、外部メモリー制御部8及びキャッシュメモリー制御部9との間でデータバス13Aを介してデータを送受信するデータ処理部12とからなる。ここで、外部メモリー制御指示信号EMCは、後述する図7に示す外部メモリーアクセスアドレス情報とほぼ同様の情報を含むものと考えてよい。但し、図1に示すように、プリフェッチ実行制御部7と外部メモリー制御部8との間の信号であることから、外部メモリー制御指示信号EMCにはアドレス情報以外の情報も含まれる。
【0024】
本発明の実施形態に係る信号処理装置3は、模式的には図2に示すように、処理実行部2とキャッシュメモリー11から構成されており、ループ型データ構造に対するプリフェッチ命令機能を有する。図1との関係においては、図1の外部メモリー10及びキャッシュメモリー11が図2の外部メモリー10及びキャッシュメモリー11に対応している。実行処理部2は図1において、外部メモリー10とキャッシュメモリー11以外の構成要素がすべて含まれる。即ち、実行処理部2は、図1における命令解読部/発行部5と、汎用レジスター6と、プリフェッチ実行制御部7と、外部メモリー制御部8と、キャッシュメモリー制御部9と、データ処理部12とを含む。プロセッサー1には処理実行部2とキャッシュメモリー11が含まれる。
【0025】
プロセッサー1の内部において命令を実行する場合に、まずその実行されるプロセッサー1からの実行命令COMは、命令解読部/発行部5においてその命令の種類が判断される。その結果、命令解読部/発行部5からはプリフェッチ命令実行信号PCEがプリフェッチ実行制御部7に対して発行され、レジスター番号指定信号RNAが汎用レジスターファイル6に対して発行される。図1の命令解読部/発行部5では、解読部と発行部を一つのブロックとして表現しているが別々のブロックで表現してもよい。仮に命令が「プリフェッチ命令」の場合には、命令発行の段階で、そのプリフェッチ命令に含まれるレジスター番号指定信号RNAからなるレジスター指定情報が、汎用レジスター(専用レジスター)ファイル6に送られて、そのレジスター番号指定信号RNAのレジスター指定情報通りにレジスターが選択され、レジスターに格納されている情報が、レジスター内容出力データREとして、プリフェッチ実行制御部7に送られる。ここでレジスター番号指定信号RNAからなるレジスター指定情報とは、プロセッサーに搭載されている複数の汎用レジスターファイル6の中から、その命令で使用するレジスターを指定する情報である。或いは又、元々プロセッサーに本発明を実現するために専用に設けられた専用レジスターを指定する情報である。或いは又、前述の2種類のレジスターを組み合わせたレジスターの中から使用するレジスターを指定する情報であってもよい。
【0026】
図1では、汎用レジスターファイル6からレジスター“A”とレジスター“B”そしてレジスター“C”の3つが選ばれて出力されているが、特に3つに限定するわけではなく、本発明を実施するのに必要な情報が確保できれば、レジスターの本数は更に多く選ばれてもよい。基本的に、必要なレジスターの本数は、そのプロセッサーのアーキテクチャー(基本構成)によって決定されるため、アーキテクチャーに依存して選ばれることになる。
【0027】
また命令解読部/発行部5から「プリフェッチ命令」であることが判明して、「プリフェッチ命令」を実行するように、プリフェッチ命令実行信号PCEが発行されプリフェッチ実行制御部7に転送されると、上記レジスターの内容を元にプリフェッチ実行制御部7が、レジスター内容出力データREに従ってプリフェッチの動作を開始する。
【0028】
プリフェッチ実行制御部7は、レジスター内容出力データREの値にしたがって、プリフェッチするデータがループの終端アドレスに到達しているかどうかを判断しながら、データを外部メモリー10から読み出すアドレスを計算し、生成して、外部メモリー制御指示信号EMCとして外部メモリー制御部8に伝達する。
【0029】
上記動作と同時に、キャッシュメモリー制御指示信号CMCをキャッシュメモリー制御部9に伝達し、プリフェッチに伴う外部メモリー制御とキャッシュメモリー制御を実行する。
【0030】
図1に示すように、データ処理部12と外部メモリー制御部8及びキャッシュメモリー制御部9の間にはデータバス13Aが接続されている。また、外部メモリー10と外部メモリー制御部8との間、及びキャッシュメモリー11とキャッシュメモリー制御部9との間にもデータバス13Bが接続されている。キャッシュメモリー11に格納されたデータは、その後、データ処理部12で使用される。したがって、プリフェッチによって読み出されたデータは、データバス13B及び13Aを通じて、外部メモリー10からキャッシュメモリー11に格納される。
【0031】
キャッシュメモリー11はループ型データ構造に対するプリフェッチ命令に対して対処可能である。循環アドレスによるアクセスを備えたプリフェッチ命令機能プログラムによって、ループ型データの実行処理が可能である。キャッシュメモリー11は、高速動作が可能であるが、メモリー容量は小さい。したがって、メモリー内容を更新する必要がある。そのために、大容量の外部メモリー10が必須である。キャッシュメモリー11から処理実行部2までのデータDDの流れDFを図2中において模式的に描いている。本発明は、予めデータが格納されているキャッシュメモリー11上のデータの始点と終点を割り出すことができるパラメーターを伴って、ループの終点でのソフトウェアによる判断処理及び対応処理をすることなく、データを「連続したデータ列」として、キャッシュメモリー11に予め読み出して格納することができる。即ち、プリフェッチ命令で動作可能である。
【0032】
本発明の信号処理装置3を構成するプロセッサー1によれば、ループ型データ構造に対するプリフェッチ命令機能を備えることにより、電子楽器のようにループ処理を行うデータのサイズが音素と呼ばれる短周期波形からストリーミングのような長時間の音をサンプリングしたような音を、数十や数百扱うような場合に、判断処理や対応処理の総計処理数は膨大な量になる問題に対しても十分に対処することができる。この場合でもデータのサイズが大きく、なかなかループの終点に達しないようなデータを処理する場合には、その判断処理そして対応処理があまり大きなソフトウェア上の負荷にはならない。
【0033】
一般的なプリフェッチを用いた場合において、ル―プデータLDの終端をまたぐ際には、図3の比較例に示すように、第1段階(F)として、終端まで行ったらプリフェッチを意図的に止め、終端からのプリフェッチを発行する。即ち、外部メモリー上のアドレスデータEADにおいて、開始アドレスSAからデータサイズDSのループデータLDの終端部において、プリフェッチ領域PA、及びプリフェッチ領域PAのデータサイズDSPを定義する。データサイズDSにわたってループデータLDを読み出すとき、終端まで行ったらプリフェッチを意図的に止め、終端からのプリフェッチを発行して、キャッシュメモリー上のアドレスデータCADを作成する。プリフェッチ領域PA近傍においては、終端まで行ったらプリフェッチを意図的に止めるため、プリフェッチ領域PAのデータサイズDSPの内、終端までのデータが読み出される。このとき転送されるデータはプリフェッチデータPDの内、ループエンドプリフェッチデータPLEである。
【0034】
次に、第2段階(S)として、プリフェッチデータPDの内、ループスタートプリフェッチデータPLSの転送を実行する。第1段階(F)の後に、始点からのプリフェッチを発行することで得られたデータを連続させる。即ち、ループ終端でプリフェッチを意図的に止め、あたかも連続したデータとしている。図3において、PLEはループエンドプリフェッチデータ意味し、PLSはループスタートプリフェッチデータを意味する。ループエンドプリフェッチデータPLEとループスタートプリフェッチデータPLSの組み合わせによってキャッシュメモリー上のアドレスデータCADが得られる。しかし、時として、外部メモリー上のアドレスデータEADにおいて、対象外データEXDを読み込んでしまうことがある。また、例えば、データの読み出しを行なっている途中でループの終端に達した場合には、ループの終端に達したということをソフトウェアが認識し、再び折り返した部分のデータの読み出しを実行しなければならないという、作業上の複雑さが存在している。
【0035】
以上において、第1段階(F)では、終端までのデータとしてのループエンドプリフェッチデータPLEを転送する状況を示し、第2段階(S)では、始点に戻って、再び残りの部分のデータとしてのループスタートプリフェッチデータPLSの転送を実行しなければならない。
【0036】
このような一般的なループデータの取り扱いに対して、本発明の実施形態に係る信号処理装置3においては、図4に示すように、プリフェッチを用いた場合、ループの終端をまたぐ際に終端まで行ったら、始点に自動的に戻ってプリフェッチを実行する点に特徴がある。外部メモリー上のアドレスデータEADにおいて、開始アドレスSAから所定のデータサイズDSのループデータLD読み出す場合には、プリフェッチ領域PAにおいて終端まで行ったら、自動的に始点に戻ってプリフェッチを実行するため、対象外データEXDを読み出すことはなく、極めてシームレスにデータを連続して読み出すことができる。即ち、ソフトウェアがループの終端に達したということを気にすることなく、連続したデータとして受信することができる。
【0037】
次に図1に示したプロセッサー1からの実行命令COMの命令フォーマットの例を説明する。
【0038】
本発明を実行するために、プロセッサー1からの実行命令にレジスターの番号を指定する領域等が必要となる。本命令を実現するための、命令フォーマットIの一例は、図5に示すように、アドレス上、命令識別子IID,レジスター番号識別子A RNDA,レジスター番号識別子B RNDB,及びレジスター番号識別子C RNDCの結合からなる。プロセッサーにおいて、一般に命令フォーマットはすべて同じビット長をとり、その中に命令の内容を示す「命令識別子」が存在する。本発明の実施形態にかかるにプロセッサーにおいて、命令識別子IIDは、ループ型データ構造を有するデータの“プリフェッチ命令”に固有の値が割り当てられる。命令識別子IIDに続く情報が、以下の3つのレジスター番号識別子A RNDA,レジスター番号識別子B RNDB及びレジスター番号識別子C RNDCである。これら識別子によって指定される汎用レジスター(もしくは専用レジスター)ファイル6に、本プリフェッチ命令を実行するのに必要な情報が格納されている。
【0039】
本発明の実施形態に係る信号処理装置3において、プリフェッチ命令を実行するのに必要な構成例として、図1に示すように、3つのレジスターを指定しているが、必要な情報が得られるのであれば識別子が1つだけであってもよい。
【0040】
次に、プリフェッチ命令の実行において必要な汎用レジスター(専用レジスター)ファイル6のデータの内容について説明する。
【0041】
汎用レジスター(専用レジスター)ファイル6に格納される情報例は、図6に示すように、情報の種類は6種類あり、それぞれループスタートアドレスLSA、ループエンドオフセットLEF、プリフェッチスタートアドレスPSA、ストライドアドレスSTA、ブロックサイズBS、プリフェッチブロック数PBNである。
【0042】
以下にそれぞれについて説明する。
【0043】
「ループスタートアドレスLSA」とは、ループプリフェッチを行うループ部分の先頭のアドレスを指定するパラメーターである。ループスタートアドレスLSAは絶対アドレスで指定する。
【0044】
「ループエンドオフセットLEF」とは、ループプリフェッチを行うループ部分の終端のアドレスを指定するためのパラメーターである。この「ループエンドオフセットLEF」は、データ量を節約するためにループスタートアドレスLSAからの差分で表現する。ループエンドオフセットLEFは相対アドレスで指定する。尚、ループエンドオフセットLEFを決める仕組みは以下の通りである。即ち、ユーザーが予め定義をしておく。したがって、はじめから決まった値をとる。
【0045】
「プリフェッチスタートアドレスPSA」とは、プリフェッチを開始するアドレスを指定するためのパラメーターである。プリフェッチスタートアドレスPSAは絶対アドレスで指定する。
【0046】
「ストライドアドレスSTA」は、既存の技術で使用されているものであるが、飛び飛びに存在するデータをプリフェッチするために使われるパラメーターである。連続したデータの塊(ブロックと呼ぶ。)のブロック間の先頭アドレス同士の差を表す。ストライドアドレスSTAはプログラムによって決まる。
【0047】
「ブロックサイズBS」は、ストライドアドレスSTAにおいて説明した通り、連続したデータの塊(ブロック)のデータ量を指定するためのパラメーターである。
【0048】
「プリフェッチブロック数PBN」は、プリフェッチ命令によって、何個のブロックをプリフェッチするかというブロック数を指定するためのパラメーターである。
【0049】
各情報がどのように使われるのかを図6を用いて説明する。図6では、プリフェッチの開始アドレスが、ループスタートアドレスLSAとループエンドオフセットLEFで定義されたループプリフェッチ適用外領域LPEに、プリフェッチスタートアドレスPSAを指定してプリフェッチを開始している。即ち、図6に示すように、外部メモリー上のアドレスデータEADにおいて、ループスタートアドレスLSAとループエンドオフセットLEFによって、ループプリフェッチ適用領域LPAを決定する。それ以外の領域は対象外データEXDである。ループスタートアドレスLSA以前の領域は、図6に示すように、ループプリフェッチ適用外領域LPEである。この場合には、通常のプリフェッチ同様にブロックサイズBS、ストライドアドレスSTA、プリフェッチブロック数PBNにしたがって、ブロックサイズBS単位に、飛び飛びにデータを外部メモリー10から読み込んでいく。
【0050】
図6に示すように、ループプリフェッチ適用領域LPAに入っても、同様の読み出しを行う。ただし、ループ終端(図6ではループプリフェッチ適用領域LPAにおいて、ループエンドオフセットLEFによって定義される右端)に達すると、読み出しアドレスをループスタートアドレスLSAで指定されたアドレスに戻して、ブロックサイズBSの残りの分を読み出す。キャッシュメモリー11上のアドレスデータCAD、即ち、キャッシュエントリーは、図6に示すように、飛び飛びに読み出したデータを圧縮してまとめた形式となり、これによって、キャッシュメモリー11への格納状況を模式的に理解することができる。更に、詳細に説明すると、図6において、PLEはループエンドプリフェッチに関係するプリフェッチデータであり、PLSはループスタートプリフェッチに関係するプリフェッチデータである。最下段に示すブロック8についての詳細な拡大図をみると、ループエンドプリフェッチデータPLEの間のデータは、ループエンドまでのデータをプリフェッチしたデータであり、ループスタートプリフェッチデータPLSの間のデータはループスタートに戻ってから、残りのブロックサイズ分をプリフェッチしたデータである。
【0051】
そして、プリフェッチブロック数PBNの分量分を読み出し終わると、読み出したデータをすべてキャッシュメモリー11に格納して、実行したプリフェッチ命令を終了する。ここで、外部メモリー10から読み出した場合には、その度にキャッシュメモリー11に格納しても構わない。
【0052】
次に、本プリフェッチ命令を実行する上で重要なプリフェッチ実行制御部(ハードウェア)7について説明する。
【0053】
プリフェッチ実行制御部7は、前項目で挙げた情報、即ち、図7に示した通り、ループスタートアドレスLSAD、ループエンドオフセットLEFD、プリフェッチスタートアドレスPSAD、ストライドアドレスSTAD、ブロックサイズBSD、プリフェッチブロック数PBNDを受信し、かつ本プリフェッチ命令を実行した時に動作をする。即ち、プリフェッチ命令実行信号PCEを図1に示す命令解読部/発行部5より受信し、プロセッサー1からの実行命令COMがプリフェッチ命令であることを確認してから動作を開始する。
【0054】
プリフェッチ実行制御部7には、図7に示すように、汎用レジスターファイル6から提供されるレジスター内容出力データREが本プリフェッチ命令に必要な各種情報として送られてくる。この情報はプリフェッチ実行制御部7内の一時記憶装置(メモリーレジスター)18に格納され、本プリフェッチ命令が終了するまで保持され続ける。プリフェッチ実行制御部7においては、図7に示すように、これら6つのデータは、一時記憶装置18内において、ループスタートアドレスデータLSAD、ループエンドオフセットデータLEFD、プリフェッチスタートアドレスデータPSAD、ストライドアドレスデータSTAD、ブロックサイズデータBSD、及びプリフェッチブロック数データPBNDとして蓄積される。これらの情報の中で、ループスタートアドレスデータLSADからブロックサイズデータBSDまでの情報は、具体的に外部メモリー10にアクセスする際のアドレスの情報を生成するために、プリフェッチアドレス演算生成/比較部15に送られる。
【0055】
プリフェッチアドレス演算生成/比較部15では、入力される情報を元にして、外部メモリーアクセスアドレス情報EMAが生成される。同時に、生成された外部メモリーアクセスアドレス情報EMAが、ループスタートアドレスデータLSADとループエンドオフセットデータLEFDを加算したいわゆるループ部の終端を越えていないかどうかの比較も行われる。またプリフェッチブロック数データPBNDの情報は、プリフェッチブロック数演算部16に送られる。プリフェッチブロック数演算部16においては、外部メモリー10にアクセスする際に数えなければならないプリフェッチブロック数データPBNDの進行度を管理する。正しくアドレスを生成するために、プリフェッチアドレス演算生成/比較部15とプリフェッチブロック数演算部16間には制御信号CSAがあり、お互いの状況を管理している。上記のプリフェッチアドレス演算生成/比較部15のブロックの演算によって生成された外部メモリーアクセスアドレス情報EMAに関係するアドレスは、外部メモリー制御部8に送られる。
【0056】
この外部メモリーアクセスアドレス情報EMAに関係するアドレスを元に、外部メモリー制御部8は、図1に示すように、外部メモリー10にアクセスする。外部メモリー10へのアクセスの状況を反映するために、外部メモリー制御部8からアクセスの状況が外部メモリーアクセス数状況判定部17に送られる。アクセスの状況とは、与えられたアドレスに対して、所望の数のアドレス分アクセスが終了したかどうかを判定する情報のことであり、外部メモリー制御指示応答信号EMRと呼ばれる。逐次状況を反映する必要があるのは、本発明によるプリフェッチ命令によって、外部メモリー10にアクセスが開始してから終了するまで、ずっと本プリフェッチ命令によるメモリーアクセスによって外部メモリー制御部8を占有し続けられるわけではないからである。
【0057】
その理由として第1に、外部メモリー制御部8は他に同時期に発生したアクセスとの優先度を考慮して、優先度の高いアクセスから順番にアクセスが実行される。プリフェッチによるメモリーアクセスは比較的低い優先度に置かれるため、結果的に他のアクセスが無い期間を見つけてアクセスが行われる。そのためメモリーアクセスは細切れに分割されて実行されるので、外部メモリー制御部8の状況を見ながら、プリフェッチによるメモリーアクセスを実行していくことになるからである。第2の理由として、外部メモリー10に対する一回のアクセスで、アクセス可能なデータ量が決まっているということが挙げられる。通常外部メモリー10に対するアクセスは、ある定義されたデータ量単位で行われる。その定義されたデータ量とは、外部メモリー10のコピー先もしくはコピー元になるキャッシュメモリー11のキャッシュラインサイズで決まる。仮にキャッシュメモリー11のキャッシュラインサイズが32バイトであるすると、1回の外部メモリー10のアクセスによって転送されるデータ量は32バイトになる。
【0058】
外部メモリーアクセス数状況判定部17では、以上の理由によって徐々に行われていく(プリフェッチに関する)外部メモリー制御部8の状況を監視し、それによって得られる「外部メモリー制御部8が利用可能」といった情報や「どこまでのデータをアクセスしたか」といった進行状況を、制御信号CSBを介してプリフェッチアドレス演算生成/比較部15に伝え、プリフェッチアドレス演算生成/比較部15を制御する。更に制御信号CSAを介して、プリフェッチブロック数演算部16を制御することになる。
【0059】
ループ型データ構造に対するプリフェッチ命令機能を有するプロセッサーのプリフェッチ命令方法の動作フローチャートは、図8に示すようにステップS1からS10と、図9に示すようにステップS12からS16と、図10に示すようにステップS17からS20との組み合わせからなる。
【0060】
(a) ステップS1において、転送ブロック数を0に設定し、次にステップS2において、転送データ数を0に設定する。更にステップS3において、ブロック先頭アドレスがプリフェッチスタートアドレスPSAに等しくなるように設定し、ステップS4において、転送アドレスがプリフェッチスタートアドレスPSAに等しくなるように設定する。この状態から、ステップS5において、転送を実行する。即ち、外部メモリー10から読み出す。次にステップS6において、読み出したデータを一時的にバッファに格納する。次にステップS7において、転送データ数とデータ転送分の和を新たな転送データ数として設定する。更に、ステップS8において、転送アドレスとデータ転送分のアドレスとの和を新たな転送アドレスとして設定する。
【0061】
(b) 次のステップS9において、転送アドレスがループスタートアドレスLSAとループエンドオフセットLEFの和よりも大であるかどうかを判断する。
【0062】
(c) YESであるならば、ステップS12へ進む(図9)。NOであるならば、次のステップS10に進み、ブロックサイズBSが転送データ数に等しいかどうかを判断する。
【0063】
(d) ステップS10において、YESであるならば、ステップS17へ進む(図10)。NOであるならば、次のステップS11へ進む。ステップS11において、読み出したデータをバッファからキャッシュに格納する。次に、ステップS5に戻る。
【0064】
(e) ステップS12においては、ループ終端をはみ出した後ろの部分のデータは捨て、残った前の部分のデータをバッファに格納する。このとき、「新たな転送データ数」をA,「転送データ数」をB,「残ったデータ転送分」をΔRDとすると、
A=B+ΔRD ・・・(1)
となる。
【0065】
(f) 次に、ステップS13において、転送アドレスがループスタートアドレスLSAに等しくなるように設定する。この状態から、ステップS14において、転送を実行する。即ち、外部メモリー10から読み出す。
【0066】
(g) 次にステップS15において、「データ転送分」をΔDとすると、
(ΔD−ΔRD)で表される分のデータをループスタートアドレスLSAの位置から確保し、バッファの空いた部分にこのデータを書き込む。このとき、
A=B+ΔRD+(ΔD―ΔRD)=B+ΔD ・・・(2)
となる。
【0067】
(h) したがって、ステップS12からステップS15の間において、データ転送数の調節が行われている。
【0068】
(i) 次に、ステップS16において、転送アドレスと(ΔD―ΔRD)のアドレスとの和が新たな転送アドレスとなるように設定する。次に、ステップS10に進む(図8)。ステップS10において、ブロックサイズBSが転送データ数に等しいかどうかを判断し、YESであれば、ステップS17へ進む(図10)。NOであれば、ステップS11へ進む。
【0069】
(j) ステップS17においては、転送ブロック数に1を加えた数を新たな転送ブロック数となるように設定する。次に、ステップS18において、プリフェッチブロック数PBNが転送ブロック数BNに等しいかどうかを判断する。YESであるならば、ステップS19に進み、プリフェッチ転送終了とする。NOであるならば、ステップS20において、転送アドレスと(ストライドアドレスSTA―ブロックサイズBS)との和がブロック先頭アドレスとなるように設定する。次に、ステップS11へ進む(図8)。ステップS11から先はステップS5へ戻り、最終的にステップS9においてNOと判断され、ステップS10においてYESと判断され、更にステップS18において、YESと判断されてプリフェッチ転送終了となるまで、フローチャートは進行を続けることになる。
【0070】
本発明の実施の形態において説明したフローチャートはプログラムの実行においてもそのまま適用できることはもちろんである。更にまた、このようなプログラムを記録した媒体を提供できることも明らかである。
【0071】
(その他の実施の形態)
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【0072】
【発明の効果】
本発明の信号処理装置によれば、メモリー上に置かれているデータにおいて、ループ状に使用されるデータを自動的に継ぎ目の無いデータとしてキャッシュにプリフェッチできるのでデータ処理を行う上で非常に簡単になり、ソフトウェアのパフォーマンスの向上を図ることができる。
【0073】
更に、本発明のプリフェッチ命令方法及びプリフェッチ命令プログラムによれば、判断処理や対応処理の総計処理数が膨大な量になる問題に対しても対処することができ、信号処理装置の性能向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る信号処理装置の詳細なブロック構成図。
【図2】本発明の第1の実施形態に係る信号処理装置の模式的ブロック構成図。
【図3】本発明の比較例として、一般的なプリフェッチを用いた場合で、ループの終端まで行ったら、プリフェッチを意図的に止め、始点からプリフェッチを発行し、キャッシュメモリーへデータ転送をする方法を説明する構成図。
【図4】本発明の第1の実施形態に係る信号処理装置において、ループの終端まで行ったら、始点に自動的に戻ってプリフェッチを行い、キャッシュメモリーへデータ転送をする方法を説明する構成図。
【図5】本発明の第1の実施形態に係る信号処理装置において使用する命令フォーマットの構成例。
【図6】本発明の第1の実施形態に係る信号処理装置において、飛び飛びに存在する外部メモリー内のデータをキャッシュメモリーへ格納する方法の動作説明図。
【図7】本発明の第1の実施形態に係る信号処理装置において、プリフェッチ実行制御部のブロック説明図。
【図8】本発明の第1の実施形態に係る信号処理装置において、ループ型データ構造に対するプリフェッチ命令方法のフローチャート説明図(ステップS1からS11まで)。
【図9】本発明の第1の実施形態に係る信号処理装置において、ループ型データ構造に対するプリフェッチ命令方法のフローチャート説明図(ステップS9からS16まで)。
【図10】本発明の第1の実施形態に係る信号処理装置において、ループ型データ構造に対するプリフェッチ命令方法のフローチャート説明図(ステップS10からS20まで)。
【図11】外部メモリー上のアドレスデータにおいて、プリフェッチデータを選択してキャッシュメモリーへ転送する、一般的なプリフェッチ命令の機能を説明する図。
【図12】外部メモリー上のアドレスデータにおいて、飛び飛びの位置にあるプリフェッチデータを選択してキャッシュメモリーへ転送する、一般的なプリフェッチ命令の機能を説明する図。
【図13】外部メモリー上のアドレスデータにおいて、ループデータを繰り返し選択してキャッシュメモリーへ転送する、一般的なプリフェッチ命令の機能を説明する図。
【符号の説明】
1…プロセッサー
2…処理実行部
3…信号処理装置
5…命令解読部/発行部
6…汎用レジスターファイル
7…プリフェッチ実行制御部
8…外部メモリー制御部
9…キャッシュメモリー制御部
10…外部メモリー
11…キャッシュメモリー
12…データ処理部
13A,13B…データバス
15…プリフェッチアドレス演算生成/比較部
16…プリフェッチブロック数演算部
17…外部メモリーアクセス数状況判定部
18…一時記憶装置
DD…データ
EAD…外部メモリー上のアドレスデータ
EXD…外部メモリー上の対象外データ
CAD…キャッシュメモリー上のアドレスデータ
SA…開始アドレス
LD…ループデータ
LDD…所望のループデータ
DS…データサイズ
DSP…プリフェッチ領域のデータサイズ
COM…プロセッサーからの実行命令
PCE…プリフェッチ命令実行信号
RNA…レジスター番号指定信号
RE…レジスター内容出力データ
EMC…外部メモリー制御指示信号
CMC…キャッシュメモリー制御指示信号
BS…ブロックサイズ
BN…ブロック数(番号)
CD…キャッシュデータ
ST…ストライド
PD…プリフェッチデータ
PA…プリフェッチ領域
LSA…ループスタートアドレス
LEF…ループエンドオフセット
PSA…プリフェッチスタートアドレス
STA…ストライドアドレス
PBN…プリフェッチブロック数
LPA…ループプリフェッチ適用領域
LPE…ループプリフェッチ適用外領域
EXD…対象外データ
CSA,CSB…制御信号
EMA…外部メモリーアクセスアドレス情報
EMR…外部メモリー制御指示応答信号
LSAD…ループスタートアドレスデータ
LEFD…ループエンドオフセットデータ
PSAD…プリフェッチスタートアドレスデータ
BSD…ブロックサイズデータ
STAD…ストライドアドレスデータ
PBND…プリフェッチブロック数データ
DF…データの流れ
PLE…ループエンドプリフェッチデータ
PLS…ループスタートプリフェッチデータ
SW10,SW11,SW12…繰り返し読み出しサイズ
S1,S2,S3,・・・,S20…ステップ
BD1,BD2,BD3,BD4…ブロックデータ
COM…命令フォーマット
IID…命令識別子
RNDA…レジスター番号識別子A
RNDB…レジスター番号識別子B
RNDC…レジスター番号識別子C
Claims (11)
- キャッシュメモリーと該キャッシュメモリーに一時格納された情報を用いて処理する処理実行部とを有するプロセッサーと、
前記プロセッサーの外部に配置された外部メモリー
とを備え、前記処理実行部はループ型データの終端において自動的に前記ループ型データの始点に戻り、連続して前記ループ型データを前記外部メモリーから前記キャッシュメモリーに読み出すことを特徴とする信号処理装置。 - 前記処理実行部は、
プロセッサーからの実行命令を受信する命令解読部/発行部と、
前記命令解読部/発行部からのレジスター番号指定信号を受信するレジスターファイルと、
前記命令解読部/発行部からのプリフェッチ命令実行信号と前記レジスターファイルからのレジスター内容出力データとを受信するプリフェッチ実行制御部と、
前記プリフェッチ実行制御部からの外部メモリー制御指示信号を受信する外部メモリー制御部と、
前記プリフェッチ実行制御部からのキャッシュメモリー制御指示信号を受信するキャッシュメモリー制御部と、
前記外部メモリー制御部と前記キャッシュメモリー制御部に接続されるデータ処理部
とを備えることを特徴とする請求項1記載の信号処理装置。 - 前記プリフェッチ実行制御部は、
前記レジスターファイルからのレジスター内容出力データを受信する一時記憶装置と、
前記一時記憶装置からのデータを受信するプリフェッチアドレス演算生成比較部と、
前記一時記憶装置から、前記データとは別のプリフェッチブロック数データを受信し、前記プリフェッチアドレス演算生成比較部との間で第1の制御信号を送受信するプリフェッチブロック数演算部と、
前記プリフェッチアドレス演算生成比較部から送出される外部メモリーアクセスアドレス情報を受信する外部メモリー制御部から外部メモリー制御指示応答信号を受信して、第2の制御信号を前記プリフェッチアドレス演算生成比較部に送出する外部メモリーアクセス数状況判定部
とを備えることを特徴とする請求項2に記載の信号処理装置。 - 前記一時記憶装置は、
ループスタートアドレスデータを格納するループスタートアドレスデータ領域と、
ループエンドオフセットデータを格納するループエンドオフセットデータ領域と、
プリフェッチスタートアドレスデータを格納するプリフェッチスタートアドレスデータ領域と、
ストライドアドレスデータを格納するストライドアドレスデータ領域と、
ブロックサイズデータを格納するブロックサイズデータ領域と、
プリフェッチブロック数データを格納するプリフェッチブロック数データ領域
とを備えることを特徴とする請求項3記載の信号処理装置。 - 外部メモリー上のアドレスデータに開始アドレスを設定する手順と、
前記開始アドレスから所定のデータサイズを有するループデータを定義する手順と、
プリフェッチ領域内のデータサイズの内、前記ループデータの終端部において、ループエンドプリフェッチデータを読み出す手順と、
自動的に前記ループデータの始点に戻り、ループスタートプリフェッチデータを読み出す手順と、
前記外部メモリー上の前記ループ型データをキャッシュメモリー上のアドレスデータへ連続して転送する手順
とを備えることを特徴とするプリフェッチ命令方法。 - 外部メモリー上のアドレスデータにおいて、ループスタートアドレス及びループエンドオフセットを決定して、ループプリフェッチ適用領域とループプリフェッチ適用外領域及び対象外データを決定する手順と、
前記ループプリフェッチ適用外領域において、プリフェッチスタートアドレスを指定する手順と、
前記プリフェッチスタートアドレスから所定のストライドアドレスを指定して、飛び飛びのブロックデータをブロックサイズ単位に読み出す手順と、
前記ループプリフェッチ適用領域の終端に到達したとき、自動的に前記ループスタートアドレスに戻る手順と、
前記終端において、ループエンドプリフェッチデータとループスタートプリフェッチデータを連続的に結合する手順
とを備えることを特徴とするプリフェッチ命令方法。 - 前記プリフェッチスタートアドレスから所定のストライドアドレスを指定して、飛び飛びのブロックデータをブロックサイズ単位に読み出す手順は、前記ループプリフェッチ適用領域に入っても継続することを特徴とする請求項6記載のプリフェッチ命令方法。
- 転送データ数とデータ転送分の和を新たな転送データ数として設定する手順と、
転送アドレスと前記データ転送分のアドレスとの和を新たな転送アドレスとして設定する手順と、
前記新たな転送アドレスの値がループスタートアドレスとループエンドオフセットの和よりも大であるかどうかを判断する手順と、
前記和よりも小であるならば、ブロックサイズが前記新たな転送データ数に等しいかどうかを判断する手順と、
前記和よりも大であるならば、ループ終端をはみ出した後ろの部分のデータは捨て、残った前の部分のデータをバッファに格納する手順と、
前記データ転送分から前記残ったデータ転送分を引いた値で表されるデータをループスタートアドレスの位置から確保し、バッファの空いた部分に前記データを書き込む手順と、
前記データ転送分から前記残ったデータ転送分を引いたアドレスと前記新たな転送アドレスとの和が更に新たな転送アドレスとなるように設定する手順
とを備えることを特徴とするプリフェッチ命令方法。 - 前記ブロックサイズが前記新たな転送データ数に等しくないならば、読み出したデータをバッファからキャッシュに格納する手順と、
前記ブロックサイズが前記新たな転送データ数に等しいならば、転送ブロック数に1を加えた値を新たな転送ブロック数となるように設定する手順と、
プリフェッチブロック数が前記新たな転送ブロック数に等しいかどうかを判断する手順と、
前記プリフェッチブロック数が前記新たな転送ブロック数に等しいならば、プリフェッチ転送終了とする手順と、
前記プリフェッチブロック数が前記新たな転送ブロック数に等しくないならば、ストライドアドレスからブロックサイズの値を引いた値と前記新たな転送アドレスとの和がブロック先頭アドレスとなるように設定する手順と、
とを備えることを特徴とする請求項5記載のプリフェッチ命令方法。 - 転送データ数とデータ転送分の和を新たな転送データ数として設定する手順と、
転送アドレスと前記データ転送分のアドレスとの和を新たな転送アドレスとして設定する命令と、
前記新たな転送アドレスの値がループスタートアドレスとループエンドオフセットの和よりも大であるかどうかを判断する命令と、
前記和よりも小であるならば、ブロックサイズが前記新たな転送データ数に等しいかどうかを判断する命令と、
前記和よりも大であるならば、ループ終端をはみ出した後ろの部分のデータは捨て、残った前の部分のデータをバッファに格納する命令と、
前記データ転送分から前記残ったデータ転送分を引いた値で表されるデータをループスタートアドレスの位置から確保し、バッファの空いた部分に前記データを書き込む命令と、
前記データ転送分から前記残ったデータ転送分を引いたアドレスと前記新たな転送アドレスの和が更に新たな転送アドレスとなるように設定する命令
とを信号処理装置に実行させることを特徴とするプリフェッチ命令プログラム。 - 前記ブロックサイズが前記新たな転送データ数に等しくないならば、読み出したデータをバッファからキャッシュに格納する命令と、
前記ブロックサイズが前記新たな転送データ数に等しいならば、転送ブロック数に1を加えた値を新たにな転送ブロック数となるように設定する命令と、
プリフェッチブロック数が前記新たな転送ブロック数に等しいかどうかを判断する命令と、
前記プリフェッチブロック数が前記新たな転送ブロック数に等しいならば、プリフェッチ転送終了とする命令と、
前記プリフェッチブロック数が前記新たな転送ブロック数に等しくないならば、ストライドアドレスからブロックサイズの値を引いた値と前記新たな転送アドレスとの和がブロック先頭アドレスとなるように設定する命令と、
とを信号処理装置に実行させることを特徴とする請求項10記載のプリフェッチ命令プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003066443A JP3934569B2 (ja) | 2003-03-12 | 2003-03-12 | 信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム |
US10/453,723 US7020749B2 (en) | 2003-03-12 | 2003-06-04 | Signal processor, prefetch instruction method and prefetch instruction program |
TW093106317A TWI250447B (en) | 2003-03-12 | 2004-03-10 | Signal processing device, pre-fetching method and pre-fetching program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003066443A JP3934569B2 (ja) | 2003-03-12 | 2003-03-12 | 信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004272851A true JP2004272851A (ja) | 2004-09-30 |
JP3934569B2 JP3934569B2 (ja) | 2007-06-20 |
Family
ID=32959246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003066443A Expired - Fee Related JP3934569B2 (ja) | 2003-03-12 | 2003-03-12 | 信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US7020749B2 (ja) |
JP (1) | JP3934569B2 (ja) |
TW (1) | TWI250447B (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100761648B1 (ko) * | 2005-01-06 | 2007-09-27 | 산요덴키가부시키가이샤 | 데이터 처리용 집적 회로 |
US10242655B1 (en) | 2017-09-27 | 2019-03-26 | Casio Computer Co., Ltd. | Electronic musical instrument, method of generating musical sounds, and storage medium |
US10474387B2 (en) | 2017-07-28 | 2019-11-12 | Casio Computer Co., Ltd. | Musical sound generation device, musical sound generation method, storage medium, and electronic musical instrument |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7386434B1 (en) * | 2004-02-20 | 2008-06-10 | Unisys Corporation | Method and apparatus for creating integrated circuit simulator test source files |
US9003165B2 (en) * | 2008-12-09 | 2015-04-07 | Shlomo Selim Rakib | Address generation unit using end point patterns to scan multi-dimensional data structures |
JP5533888B2 (ja) * | 2010-02-10 | 2014-06-25 | 日本電気株式会社 | ストレージ装置 |
US9772824B2 (en) * | 2015-03-25 | 2017-09-26 | International Business Machines Corporation | Program structure-based blocking |
US10073769B2 (en) | 2015-10-15 | 2018-09-11 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
TWI537729B (zh) | 2015-10-15 | 2016-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US9965278B1 (en) | 2016-12-20 | 2018-05-08 | Texas Instruments Incorporated | Streaming engine with compressed encoding for loop circular buffer sizes |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5357618A (en) * | 1991-04-15 | 1994-10-18 | International Business Machines Corporation | Cache prefetch and bypass using stride registers |
US5752037A (en) * | 1996-04-26 | 1998-05-12 | Hewlett-Packard Company | Method of prefetching data for references with multiple stride directions |
US5953512A (en) | 1996-12-31 | 1999-09-14 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods implementing a loop and/or stride predicting load target buffer |
US5898865A (en) * | 1997-06-12 | 1999-04-27 | Advanced Micro Devices, Inc. | Apparatus and method for predicting an end of loop for string instructions |
US6202130B1 (en) * | 1998-04-17 | 2001-03-13 | Motorola, Inc. | Data processing system for processing vector data and method therefor |
-
2003
- 2003-03-12 JP JP2003066443A patent/JP3934569B2/ja not_active Expired - Fee Related
- 2003-06-04 US US10/453,723 patent/US7020749B2/en not_active Expired - Fee Related
-
2004
- 2004-03-10 TW TW093106317A patent/TWI250447B/zh not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100761648B1 (ko) * | 2005-01-06 | 2007-09-27 | 산요덴키가부시키가이샤 | 데이터 처리용 집적 회로 |
US7502900B2 (en) | 2005-01-06 | 2009-03-10 | Sanyo Electric Co., Ltd. | Data processing integrated circuit including a memory transfer controller |
US10474387B2 (en) | 2017-07-28 | 2019-11-12 | Casio Computer Co., Ltd. | Musical sound generation device, musical sound generation method, storage medium, and electronic musical instrument |
US10242655B1 (en) | 2017-09-27 | 2019-03-26 | Casio Computer Co., Ltd. | Electronic musical instrument, method of generating musical sounds, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
TW200426674A (en) | 2004-12-01 |
JP3934569B2 (ja) | 2007-06-20 |
US7020749B2 (en) | 2006-03-28 |
TWI250447B (en) | 2006-03-01 |
US20040181655A1 (en) | 2004-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW315546B (ja) | ||
TW509923B (en) | Opcode-driven buffer manager for use in data storage devices | |
JP2004171411A (ja) | データ記憶装置及びバッファメモリの管理方法 | |
JP3934569B2 (ja) | 信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム | |
JP5068197B2 (ja) | データをテープ媒体に書き込む装置及び方法 | |
JP2003122703A (ja) | 複数のデータ・ストリームを管理するためのバッファ分割 | |
JPH11242563A (ja) | ディスク媒体アクセスインタフェース装置およびそのアクセス方法およびディスクドライブ装置 | |
US8417087B2 (en) | Video data processing system, video server, gateway server, and video data management method | |
JP2007501473A (ja) | メインメモリとストレージ装置との間のデータ転送を行うための方法及び装置 | |
JP2007323694A (ja) | 記録装置および方法、プログラム、並びに記録媒体 | |
KR100659915B1 (ko) | 데이터 전송 방법 및 장치 | |
US6801961B2 (en) | Method for solving intermission of streaming data and associated device thereof | |
CN113992610A (zh) | 支持网络处理器的数据包包头处理电路系统及其控制方法 | |
JPH11149706A (ja) | 記録再生装置及び記録再生方法 | |
JP2004088328A (ja) | データ処理装置、同装置におけるデータ記録方法及びデータ再生方法 | |
JPH05108275A (ja) | ストリーム・テープ装置 | |
US20020054543A1 (en) | Apparatus and method for reproducing stream data and recording medium therefor | |
JP4282538B2 (ja) | データ記録再生装置及びデータ転送装置 | |
US20020054542A1 (en) | Apparatus and method for reproducing stream data and recording medium therefor | |
JP2006154638A (ja) | 再生装置、画像表示方法 | |
JP2009289238A (ja) | データ処理システム及びストレージ制御方法 | |
JP2004013473A (ja) | 磁気ディスク装置におけるデータ書き込み制御方法 | |
JP2006171626A (ja) | 楽曲再生装置 | |
JPH1078912A (ja) | データ入出力処理装置 | |
JPH10171689A (ja) | ビデオサーバ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061002 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061017 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061218 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070222 |
|
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: 20070306 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070315 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100330 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |