JP5800347B2 - 情報処理装置及びデータアクセス方法 - Google Patents
情報処理装置及びデータアクセス方法 Download PDFInfo
- Publication number
- JP5800347B2 JP5800347B2 JP2010082655A JP2010082655A JP5800347B2 JP 5800347 B2 JP5800347 B2 JP 5800347B2 JP 2010082655 A JP2010082655 A JP 2010082655A JP 2010082655 A JP2010082655 A JP 2010082655A JP 5800347 B2 JP5800347 B2 JP 5800347B2
- Authority
- JP
- Japan
- Prior art keywords
- stream
- data
- channel
- unit
- information
- 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.)
- Expired - Fee Related
Links
Images
Description
ストリーム識別情報によって識別されるストリームデータを複数格納するメモリと、
前記ストリーム識別情報にもとづいて前記ストリームデータを先読みしつつ記憶するひとつ以上のチャネルユニットと、
前記チャネルユニットが記憶したストリームデータにアクセスするプロセッサと、
を備えた情報処理装置。
前記チャネルユニットは、前記プロセッサからストリームデータを受け取って記憶しつつ、以前に記憶したストリームデータを前記ストリーム識別情報にもとづいて前記メモリへ格納してもよい。
メモリに格納され、ストリーム識別情報で識別されるストリームデータに対してプロセッサがアクセスするデータアクセス方法であって、
前記ストリーム識別情報にもとづいて前記ストリームデータに対してチャネルユニットを割り当てて、
前記チャネルユニットがメモリに格納された前記ストリームデータを先読みしつつ記憶し、
前記プロセッサが前記チャネルユニットに記憶されたストリームデータにアクセスするような、データアクセス方法。
前記チャネルユニットは、前記プロセッサからストリームデータを受け取って記憶しつつ、以前に記憶したストリームデータを前記ストリーム識別情報にもとづいて前記メモリへ格納してもよい。
プロセッサ1は、チャネルユニットが先読みしたストリームデータにアクセスする。
メモリ2は、ストリーム識別情報によって識別されるストリームデータを複数格納する。
チャネルユニット21〜24は、自身に割り当てられたストリームデータをメモリ2から先読みする。また、チャネルユニット21〜24は、メモリ2に格納される複数のストリームデータのストリーム識別情報に応じて、ストリームデータに割り当てられる。なお、異なるストリーム識別情報によって示されるストリームデータに対して異なるチャネルユニットが割り当てられる。
チャネルユニット21〜24のうちのいずれかは、ストリームデータのストリーム識別情報に応じて、異なるストリーム識別情報によって示されるストリームデータに対して異なるチャネルユニットが割り当てられるようにストリームデータを自身に割り当てる。
ストリームデータが割り当てられたチャネルユニットは、自身に割り当てられたストリームデータを先読みする。
プロセッサは、チャネルユニットが先読みしたストリームデータにアクセスする。
プロセッサ1は、演算器、レジスタ、制御ユニット、などを備えたCPUやDSPなどの計算機であり、制御ユニットが外部に接続されたメモリ2に格納されたプログラムを解釈し、それにもとづいて演算器を動作させ、レジスタや外部に接続されたメモリ2へ演算結果を書込む。以降の説明において、プロセッサ1が何かの処理を行うと表記されている場合には、実際には、その処理がプログラムとして記述されていて、そのプログラムをプロセッサ1が実行することによって、その処理が行われる、ということを意味する。
・ストリームの現在位置(アドレス)を表すストリームポインタ
・ストリームの内容をゼロで初期化するか否かを表すゼロクリアフラグ
・チャネル記憶ユニットにストリーム情報が格納されていることを示すCHVALIDフラグ
・ストリームの64バイトのデータを格納するためのバッファ0
・バッファ0に格納されたデータの開始アドレスのタグを格納するためのタグ0
・バッファ0にデータが格納されているか否かを表すフラグを格納するためのBFVALIDフラグ0
・バッファ0に格納されたデータがメモリ2に格納されたデータと不一致となっているか否かを表すフラグを格納するDIRTYフラグ0
・ストリームの64バイトのデータを格納するためのバッファ1
・バッファ1に格納されたデータの開始アドレスのタグを格納するためのタグ1
・バッファ1にデータが格納されているか否かを表すフラグを格納するためのBFVALIDフラグ1
・バッファ1に格納されたデータがメモリ2に格納されたデータと不一致となっているか否かを表すフラグを格納するDIRTYフラグ1
本実施の形態では、バッファ0あるいはバッファ1のサイズを64バイトとしているが、バッファのサイズは64バイトには限定されない。64バイトではなく、バッファのサイズを32バイトあるいは128バイトなどの2のべき乗の数にしてもよい。
ストリームアクセスユニット10がもつ機能に共通の動作を説明する。共通の機能とは、「チャネル割り当て」と「データ取得処理」である。これらの動作をまず説明した後で、ストリームアクセスユニット10の機能を説明する。
まず、ストリームアクセスユニット10がもつ機能に共通の動作である「チャネル割り当て」について説明する。チャネル割り当ては、ストリームアクセスユニット10がもつチャネルユニットの中からひとつを選んで、ストリームのアクセスに割り当てる処理である。チャネル割り当てでは、割り当て対象のストリームはSID0というストリームIDで指定される。SID0はプロセッサ1からストリームアクセスユニット10へ与えられる制御信号に含まれている。このチャネル割り当てによって、プロセッサ1がアクセスするストリームをキャッシュ及び先読みするチャネルユニットを選択する。つまり、プロセッサ1がアクセスするストリームに、ストリームを先読みするチャネルユニットを割り当てる。チャネル割り当ての処理のフローチャートを図5に示す。チャネル割り当ての処理の流れは以下のとおりである。各項目の内容を以降で具体的に説明する。
・ステップS112:置換えチャネルユニットのバッファの内容を書き戻す
・ステップS113:置換えチャネルユニットのストリーム情報を退避
・ステップS114:新たなストリーム情報を置換えチャネルユニットへ格納
ステップS111において、ストリームアクセスユニット10のメイン制御ユニット11は、チャネルユニット12A、12B、12C、12Dの中から、所定の基準にもとづいて、ひとつのチャネルユニットを選択する。選択したチャネルユニットをCH99と呼ぶことにする。ここで、所定の基準とは、例えば、最近最も使用されていないチャネルユニットを選ぶとか、番号順にチャネルユニットを選ぶとか、ランダムにチャネルユニットを選ぶ、などが考えられる。一般的なキャッシュのライン置換えアルゴリズムを、チャネルユニットの選択に応用してもよい。メイン制御ユニット11は、選択したチャネルユニットに、ストリームの割り当てを指示する制御信号を出力する。この制御信号には、SID0が含まれる。チャネルユニット12A、12B、12C、12Dは、この制御信号に応じて、ステップS112以降の処理を実行する。なお、チャネルユニット12A、12B、12C、12Dは、この制御信号に含まれるSID0が示すストリームを自身に割り当てる。
ステップS112において、チャネルユニットCH99のチャネル制御ユニット121は、もしチャネル記憶ユニット122のいずれかのバッファのDIRTYフラグがゼロでなければ、メモリアクセスユニット13を使って、そのバッファの内容をタグが示すメモリ2上のアドレスへ書き戻し、そのバッファのDIRTYフラグをゼロにする。そうでなければ、チャネルユニットCH99のチャネル制御ユニット121は、何もしない。
ステップS113において、もしチャネルユニットCH99のチャネル記憶ユニット122のCHVALIDフラグがゼロでなければ、チャネルユニットCH99のチャネル制御ユニット121は、チャネル記憶ユニット122のストリームIDが示すメモリ領域へ チャネル記憶ユニット122のストリーム情報を格納する。ストリーム情報は後述する「OPEN」という処理によって作成される情報である。ストリーム情報は「READ」や「WRITE」などの処理によって変更される。ストリーム情報の中身についてはステップS114で説明する。ここで、ストリームIDは、後述するように、メモリ2においてストリーム情報が格納されるアドレスを示す。なお、ここでのストリーム情報のメモリ2への格納は、選択したチャネルユニットに既にストリームが割り当てられている場合(CHVALIDフラグがゼロでない場合)に行われる。この場合、次のステップS114において、新たに割り当てるSID0のストリームのストリーム情報をチャネル記憶ユニット112に格納するため、既に割り当てられているストリームのストリーム情報をメモリ2に退避するようにしている。
ステップS114において、チャネルユニットCH99のチャネル制御ユニット121は、メモリアクセスユニット13を使って、SID0というストリームIDが示すメモリ領域からストリーム情報を読み出し、それをチャネル記憶ユニット122に格納するとともに、チャネル記憶ユニット122のCHVALIDフラグへ1を代入する。なお、SID0というストリームIDに対応したストリーム情報は「OPEN」という処理によってメモリ2上に作成されたものである。「OPEN」は新たなストリームを利用開始する処理である。チャネルユニットCH99がSID0というストリームIDのストリームを扱うためには、それに対応するストリーム情報をメモリ2から読み出して、チャネル記憶ユニット122に格納するのである。ここで、チャネル記憶ユニット122に格納されるストリーム情報は以下の項目を含む。
・ストリームポインタ:ストリームの現在位置を表すアドレス
・ゼロクリアフラグ:ストリームの内容をゼロで初期化するか否かを表すフラグ
以上が「チャネル割り当て」の処理内容である。
次に、「データ取得処理」について説明する。データ取得処理は、ストリームアクセスユニット10のチャネルユニット(12A、12B、12C、12Dのいずれか)において、チャネル記憶ユニット122のストリームポインタに対応するバッファをバッファ0あるいはバッファ1から選択し、選択したバッファにデータを格納する処理である。格納されるデータは、ゼロか、あるいはストリームポインタが示すメモリ2上のアドレスから読み込んだデータである。どちらのデータが格納されるかは、チャネル記憶ユニット122のゼロクリアフラグによって決まる。例えば、ゼロクリアフラグがゼロの場合は、メモリ2のストリームポインタが示すアドレスから読み込んだデータが選択したバッファに格納される。また、例えば、ゼロクリアフラグがゼロ以外の場合は、選択したバッファ全体にゼロが格納される。データ取得処理のフローチャートを図6に示す。データ取得処理の流れは以下のとおりである。各項目の内容を以降で具体的に説明する。以降の説明では、データ取得処理の対象となるチャネルユニットをCH99と呼ぶことにする。
・ステップS122:選択したバッファにデータを転送
・ステップS123:選択したバッファのDIRTYフラグをクリア
・ステップS124:選択したバッファをクリア
・ステップS125:選択したバッファのDIRTYフラグをセット
・ステップS126:選択したバッファのタグをセット
・ステップS127:選択したバッファのBFVALIDフラグをセット
ステップS121において、チャネルユニットCH99のチャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタに対応するバッファをチャネル記憶ユニット122のバッファ0もしくはバッファ1の中から選択する。ここで、選択方法としては、ストリームポインタの所定のビットの値にもとづいてバッファ0かバッファ1を選択する、あるいは最近もっともアクセスされていない方のバッファを選択する、という方法などが考えられる。ストリームポインタの所定のビットの値を使う方法の具体的な例をひとつ示す。本実施の形態では、バッファ0、1の容量が64バイトの場合について例示しているので、ストリームポインタの下位6ビット(64バイト分)以外のひとつのビットの値を使って、バッファ0あるいはバッファ1のいずれかを選択してもよい。このようにして選択したバッファをBF99と呼ぶことにする。
つづいて、もしチャネル記憶ユニット122のゼロクリアフラグがゼロならば、ステップS122へ進む。もしそうでないならば、ステップS124へ進む。
ステップS122において、チャネルユニットCH99のチャネル制御ユニット121は、もしチャネル記憶ユニット122のゼロクリアフラグがゼロならば、メモリアクセスユニット13を使って、チャネル記憶ユニット122のストリームポインタが示すメモリ2上のアドレスから始まる64バイトのデータを読み出し、そのデータをバッファBF99へ格納する。つづいて、ステップS123へ進む。
ステップS123において、チャネルユニットCH99のチャネル制御ユニット121は、もしチャネル記憶ユニット122のゼロクリアフラグがゼロならば、バッファBF99のDIRTYフラグへゼロを書込む。つづいて、ステップS126へ進む。
ステップS124において、チャネルユニットCH99のチャネル制御ユニット121は、もしチャネル記憶ユニット122のゼロクリアフラグがゼロでないならば、バッファBF99の全体にゼロを書込む。ここで、バッファのゼロクリアは、例えば、後述するストリームへデータを書き込む処理「WRITE」において、プロセッサ1がストリームに対して新規にデータの書き込みを行う場合に行われる。「WRITE」はデータを書き込む処理なので、書き込む以前のデータの値を必要としないことが多い。そこで、書き込む以前のデータの値が必要ない場合には、それらをゼロだと仮定することによって、メモリ2から書き込む以前のデータを読み込む処理を省略することができる。さらに、ストリームに対して書き込みをする場合において、プロセッサ1が書き込んだデータ以外のデータを全てゼロとしたい場合にも有効である。このようにすることで、メモリ2からストリームを読み出す処理(ステップS122)を省略することができる。つづいて、ステップS125へ進む。
ステップS125において、チャネルユニットCH99のチャネル制御ユニット121は、もしチャネル記憶ユニット122のゼロクリアフラグがゼロでないならば、バッファBF99のDIRTYフラグへ1を書込む。つづいて、ステップS126へ進む。
ステップS126において、チャネルユニットCH99のチャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタに対応するタグの値を計算し、バッファBF99のタグへ書き込む。タグの計算方法としては、例えば、ストリームポインタの上位数ビットの値をそのままタグとする、などの方法でもよい。つづいて、ステップS127に進む。
ステップS127において、チャネルユニットCH99のチャネル制御ユニット121は、バッファBF99のBFVALIDフラグへ1を書込む。
以上が「データ取得処理」の処理内容である。
ストリームアクセスユニット10によるストリーム処理の動作について説明する。ここでは、以下の五つの処理に分けて、ストリームアクセスユニット10の動作を説明する。
・ストリームからデータを読み込む:READ
・ストリームへデータを書込む:WRITE
・ストリームのカレントポジションを移動する:SEEK
・ストリームを利用停止する:CLOSE
「OPEN」は、ストリームをストリームアクセスユニット10が扱えるようにするための初期化処理である。ストリームアクセスユニット10は、ストリームIDを使ってストリームを識別する。したがって、ストリームアクセスユニット10が扱うストリームにはIDを割り当てる必要がある。ストリームIDは、ストリームを利用開始する処理の中で割り当てられる。
・ステップS12:ストリーム情報作成
・ステップS13:チャネル割り当て要求
・ステップS14:チャネル割り当て
・ステップS15:データ取得処理
ステップS11において、プロセッサ1は、新たなストリームに関する情報を格納するためのメモリ領域を割り当てる。具体的には、ストリーム情報を格納するためのメモリ領域のアドレスを予めテーブル(ストリームIDテーブル)に格納しておいて、そのテーブルの中から利用可能なアドレスを見つけて、新たなストリーム情報に割り当てる。このアドレスをストリームIDとして使用する。つまり、ストリームIDは、ストリームを識別するストリーム識別情報として機能する。テーブルの各エントリには、アドレスと、アドレスを使用中か否かを表すフラグ、を格納しておく。アドレスをストリームIDとして使用する際には、そのアドレスに対応するフラグに1を代入する。
ステップS12において、プロセッサ1は、新たなストリームに関するストリーム情報を作成し、そのストリーム情報をストリームIDが示すメモリ2上のアドレスへ格納する。ここで、メモリ2に格納されるストリーム情報は以下の項目を含む。
・ストリームの内容をゼロで初期化するか否かを表すゼロクリアフラグ
・ストリームの現在のアドレスを表すストリームポインタ(初期値はストリーム開始アドレスの下位6ビット(バッファサイズの64バイト分に相当)をゼロにした値)
[ステップS13:チャネル割り当て要求]
ステップS13において、プロセッサ1は、ストリームアクセスユニット10に対して、新たなストリームにチャネルユニットをひとつ割り当てるように指示する。この指示は、新たなストリームを特定するために、ストリームID(SID0)を含んでいる。言い換えると、プロセッサ1は、ストリームの割り当てを指示する制御信号をメイン制御ユニット10に出力する。メイン制御ユニット11は、この制御信号に応じて、ステップS14の処理を実行する。
ステップS14において、ストリームアクセスユニット10のメイン制御ユニット11は、与えられたSID0というストリームIDにチャネルユニットを割り当てる。この割り当て処理は、共通処理のステップS111〜S114のチャネル割り当てである。
ステップS15において、ステップ15で割り当てられたチャネルユニットCH99のチャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタに対応するバッファを選択し、そのバッファへデータを格納する。このデータ取得処理は、共通処理のステップS121〜S127のデータ取得処理である。この処理によって選択されたチャネルユニットCH99のバッファをBF99と呼ぶことにする。
以上が「OPEN」の処理内容である。
「READ」は、ストリームからデータを読み出す処理である。プロセッサ1は、ストリームを特定するためのストリームID(SID0)と、読み出したいデータのサイズ(SIZE0)と、ストリームリードコマンドと、をストリームアクセスユニット10へ送信する。ストリームアクセスユニット10は、これらを受け取って、SID0というストリームから指定されたサイズのデータを読み出して、そのデータをプロセッサ1へ送信する。ストリームからデータを読み出す処理「READ」のフローチャートを図8に示す。
ストリームアクセスユニット10がSID0というストリームから指定されたサイズSIZE0のデータを読み出す処理の流れは以下のとおりである。各項目の内容を以降で具体的に説明する。
・ステップS22:チャネル割り当て
・ステップS23:データ取得処理
・ステップS24:バッファからデータ読み出し
・ステップS25:データ先読み要否判定
・ステップS26:データ先読み処理
・ステップS27:ストリームの現在位置更新
ステップS21において、メイン制御ユニット11は、 与えられたストリームID(SID0)をチャネル記憶ユニット122の中にもつチャネルユニットを探す。なお、メイン制御ユニット11は、プロセッサ1から出力されたストリームリードコマンドに応じて、ステップS21の処理を実行する。もしそのようなチャネルユニットが見つかれば、それをCH99として、ステップS24に進む。チャネルユニットCH99が見つかった場合、メイン制御ユニット11は、データの読み出しを指示する制御信号をチャネルユニットCH99に出力する。この制御信号には、プロセッサ1から出力されたSIZE0が含まれる。チャネルユニットCH99は、この制御信号に応じて、ステップS24の処理を実行する。もしそのようなチャネルユニットが見つからなければ、ステップS22に進む。
ステップS22において、メイン制御ユニット11は、与えられたSID0というストリームIDを使って、共通処理のステップS111〜S114のチャネル割り当てを行う。この処理によって割り当てられたチャネルユニットをCH99と呼ぶことにする。つづいて、ステップS23へ進む。
ステップS23において、チャネルユニットCH99のチャネル制御ユニット121は、共通処理のステップS121〜S127のデータ取得処理を行う。つづいて、ステップS24へ進む。ここで、チャネルユニットCH99がデータの取得完了を通知する制御信号をメイン制御ユニット11に出力するようにして、メイン制御ユニット11が、この制御信号に応じて、データの読み出しを指示する制御信号をチャネルユニットCH99に出力するようにしてもよい。また、ストリームの割り当てを指示する制御信号に、続けて、データ取得が完了したら、ステップS24の処理を実行することを指示する情報を含めてもよい。
ステップS24において、チャネルユニットCH99のチャネル制御ユニット121は、 チャネル記憶ユニット122のストリームポインタのタグと同じタグをもつバッファをチャネル記憶ユニット122のバッファ0もしくはバッファ1の中から選択する。ここで、ストリームポインタのタグと同じタグをもつバッファとは、ストリームポインタが示すアドレスのデータが格納されるバッファのことである。選択したバッファをBF99とする。
ステップS25において、チャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタを64バイト分(バッファのサイズ分)進めたアドレスに対応するバッファを選択する。ここで選択したバッファをBF98とする。アドレスからバッファを選択する方法は、共通処理のステップS121「バッファ選択」と同じでもよいし、より簡易的な方法を用いてもよい。例えば、本実施の形態ではチャネル記憶ユニット122のバッファの数は2個でそのサイズは64バイトなので、バッファBF98とストリームポインタに対応するバッファBF99とは互いに異なるはずである。したがって、バッファの数が2個の場合には、バッファBF99ではないバッファを選択し、それをBF98としてもよい。もしバッファBF98のBFVALIDフラグがゼロであるならば、データ先読み処理が必要なので、ステップS26に進む。もしそうでなければ、データ先読み処理は不要なので、ステップS27に進む。
ステップS26において、チャネル制御ユニット121は、チャネル記憶ユニット122のゼロクリアフラグにもとづいて、チャネル記憶ユニット122のストリームポインタを64バイト分(バッファのサイズ分)進めたアドレスから始まる64バイトのデータか、もしくはゼロ(64バイト分)、のいずれかをステップS25で選択したバッファBF98へ格納する。この処理は、共通処理のステップS121〜S127のデータ取得処理とほぼ同じである。異なる点は、ステップS121〜S127のデータ取得処理ではストリームポインタの値をアドレスとして使うのに対して、ステップS26ではストリームポインタを64バイト分進めたアドレスを、メモリ2からデータを読み出すアドレスとして使う、ということである。データ先読み処理において、メモリからバッファBF98へのデータ転送は、他の処理と並行して行われてもよい。例えば、データ先読み処理の完了を待たずに、チャネル制御ユニット121は、ステップS27を開始してもよい。
ステップS27において、チャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタに、データサイズを表すSIZE0を加算する。
以上が「READ」の処理内容である。
「WRITE」は、ストリームへデータを書込む処理である。プロセッサ1は、ストリームを特定するためのストリームID(SID0)と、書き込みたいデータと、そのデータのサイズ(SIZE0)と、ストリームライトコマンドと、をストリームアクセスユニット10へ送信する。ストリームアクセスユニット10は、これらを受け取って、SID0というストリームへ与えられたデータを書込む。ストリームへデータを書込む処理「WRITE」のフローチャートを図9に示す。
ストリームアクセスユニット10がSID0というストリームへ与えられたデータを書込む処理の流れは以下のとおりである。各項目の内容を以降で具体的に説明する。
・ステップS32:チャネル割り当て
・ステップS33:データ取得処理
・ステップS34:バッファへデータ書き込み
・ステップS35:データ書き戻し要否判定
・ステップS36:データ書き戻し処理
・ステップS37:データ先読み要否判定
・ステップS38:データ先読み処理
・ステップS39:ストリームの現在位置更新
ステップS31において、メイン制御ユニット11は、与えられたストリームID(SID0)をチャネル記憶ユニット122の中にもつチャネルユニットを探す。なお、メイン制御ユニット11は、プロセッサ1から出力されたストリームライトコマンドに応じて、ステップS31の処理を実行する。もしそのようなチャネルユニットが見つかれば、それをCH99として、ステップS34に進む。チャネルユニットCH99が見つかった場合、メイン制御ユニット11は、データの書き出しを指示する制御信号をチャネルユニットCH99に出力する。この制御信号には、プロセッサ1から出力された書き込みデータ及びSIZE0が含まれる。チャネルユニットCH99は、この制御信号に応じて、ステップS34の処理を実行する。もしそのようなチャネルユニットが見つからなければ、ステップS32に進む。
ステップS32において、メイン制御ユニット11は、与えられたSID0というストリームIDを使って、共通処理のステップS111〜S114のチャネル割り当てを行う。この処理によって割り当てられたチャネルユニットをCH99と呼ぶことにする。つづいて、ステップS33へ進む。
ステップS33において、チャネルユニットCH99のチャネル制御ユニット121は、 共通処理のステップS121〜S127のデータ取得処理を行う。つづいて、ステップS34へ進む。ここで、チャネルユニットCH99がデータの取得完了を通知する制御信号をメイン制御ユニット11に出力するようにして、メイン制御ユニット11が、この制御信号に応じて、データの書き出しを指示する制御信号をチャネルユニットCH99に出力するようにしてもよい。また、ストリームの割り当てを指示する制御信号に、続けて、データ取得が完了したら、ステップS34の処理を実行することを指示する情報を含めてもよい。
ステップS34において、チャネルユニットCH99のチャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタから計算したタグと同じタグをもつバッファをチャネル記憶ユニット122のバッファ0もしくはバッファ1の中から選択する。選択したバッファをBF99とする。
ステップS35において、チャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタから64バイト分(バッファのサイズ分)遡ったアドレスを減算した値で表されるアドレスに対応するバッファを選択し、そのバッファのDIRTYフラグがゼロであるか否かを調べる。アドレスからバッファを選択する方法は、共通処理のステップS25における「バッファ選択」と同じである。ここで選択したバッファをBF98とする。もしBF98のDIRTYフラグがゼロならば、データ書き戻し処理は不要なので、ステップS37に進む。もしそうでなければ、データ書き戻し処理が必要なので、ステップS36に進む。
ステップS36において、チャネルユニットCH99のチャネル制御ユニット121は、メモリアクセスユニット13を使って、バッファBF98のタグが示すメモリ2上のアドレスへバッファBF98の内容を書き戻し、バッファBF98のDIRTYフラグおよびBFVALIDフラグをどちらもゼロにする。データ書き戻し処理において、バッファBF98からメモリ2へのデータ転送は、他の処理と並行して行われてもよい。例えば、データ書き戻し処理の完了を待たずに、チャネル制御ユニット121は、ステップS37を開始してもよい。
ステップS37において、チャネルユニットCH99のチャネル制御ユニット121は、BFVALIDフラグがゼロであるようなバッファが存在する場合にだけ、ステップS25と同様の「データ先読み要否判定」を行う。つまり、もし先読みしたデータを格納可能なバッファが存在するならば、データ先読みの要否を判断する。そうでない場合には、データ先読みは不要と判断し、ステップS39へ進む。ステップS25の「データ先読み要否判定」については既に説明しているので、ここでは説明を省略する。
なお、「WRITE」はストリームへデータを書き込む処理であるため、先読みしたデータは上書きされ、メモリから先読みされたデータが無駄になってしまう。したがって、書き込み対象となるストリームに対しては、「OPEN」において、ゼロクリアフラグをセットしておくことが望ましい。そうすれば、「WRITE」におけるデータ先読みにおいて、メモリからのデータ先読みは行われず、ゼロという値がバッファへ格納される。
ステップS38におけるデータ先読み処理は、ステップS26のデータ先読み処理と同様であるため、説明を省略する。
ステップS39において、チャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタに、データサイズを表すSIZE0を加算する。
以上が「WRITE」の処理内容である。
「SEEK」は、ストリームの現在位置(ストリームポインタの値)を変更する処理である。プロセッサ1は、ストリームを特定するためのストリームID(SID0)と、新たなストリームポインタの値(SPTR0)と、ストリームシークコマンドと、をストリームアクセスユニット10へ送信する。ストリームアクセスユニット10は、これらを受け取って、SID0というストリームのストリームポインタへSPTR0を代入する。ストリームの現在位置を変更する処理「SEEK」のフローチャートを図10に示す。
ストリームアクセスユニット10がSID0というストリームのストリームポインタの値を変更する処理の流れは以下のとおりである。各項目の内容を以降で具体的に説明する。
・ステップS42:チャネルユニット割り当て
・ステップS43:ストリーム現在位置更新
・ステップS44:データ取得処理
ステップS41において、メイン制御ユニット11は、与えられたストリームID(SID0)をチャネル記憶ユニット122の中にもつチャネルユニットを探す。なお、メイン制御ユニット11は、プロセッサ1から出力されたストリームシークコマンドに応じて、ステップS41の処理を実行する。もしそのようなチャネルユニットが見つかれば、それをCH99として、ステップS43に進む。チャネルユニットCH99が見つかった場合、メイン制御ユニット11は、ストリームの現在位置の更新を指示する制御信号をチャネルユニットCH99に出力する。この制御信号には、プロセッサ1から出力されたストリームポインタの値が含まれる。チャネルユニットCH99は、この制御信号に応じて、ステップS43の処理を実行する。もしそのようなチャネルユニットが見つからなければ、ステップS42に進む。
ステップS42において、メイン制御ユニット11は、与えられたSID0というストリームIDを使って、共通処理のステップS111〜S114のチャネル割り当てを行う。ここの処理によって割り当てられたチャネルユニットをCH99と呼ぶことにする。つづいて、ステップS43へ進む。ここで、チャネルユニットCH99がチャネルユニットの割り当てを通知する制御信号をメイン制御ユニット11に出力するようにして、メイン制御ユニット11が、この制御信号に応じて、ストリームの現在位置の更新を指示する制御信号をチャネルユニットCH99に出力するようにしてもよい。また、ストリームの割り当てを指示する制御信号に、続けて、チャネルユニットの割り当てが完了したら、ステップS43の処理を実行することを指示する情報を含めてもよい。
ステップS43において、チャンルユニットCH99のチャネル制御ユニット121は、チャネル記憶ユニット122のストリームポインタに、与えられたストリームポインタの値SPTR0を代入する。具体的には、メイン制御ユニット11から出力されたストリームポインタの値を、チャネル記憶ユニット122のストリームポインタに格納する。
ステップS44において、チャネルユニットCH99のチャネル制御ユニット121は、共通処理のステップS121〜S127のデータ取得処理を行う。データ取得処理において、メモリからバッファへのデータ転送は、他の処理と並行して行われてもよい。例えば、データ取得処理の完了を待たずに、チャネル制御ユニット121は、「SEEK」という処理を終了し、別の処理を開始してもよい。
以上が「SEEK」の処理内容である。
「CLOSE」は、ストリームアクセスユニット10があるストリームの利用を停止する処理である。プロセッサ1は、ストリームを特定するためのストリームID(SID0)と、ストリームクローズコマンドと、をストリームアクセスユニット10へ送信する。ストリームクローズコマンドを受け取ったら、ストリームアクセスユニット10は、SID0というストリームに割り当てられたチャネルユニットを解放する。
ストリームアクセスユニット10がストリームクローズコマンドを受信した時の処理の流れは以下のとおりである。各項目の内容を以降で具体的に説明する。
・ステップS52:データ書き戻し処理
・ステップS53:チャネルユニット解放
ステップS51において、メイン制御ユニット11は、与えられたストリームID(SID0)をチャネル記憶ユニット122の中にもつチャネルユニットを探す。なお、メイン制御ユニット11は、プロセッサ1から出力されたストリームクローズコマンドに応じて、ステップS51の処理を実行する。もしそのようなチャネルユニットが見つかれば、それをCH99として、ステップS52に進む。チャネルユニットCH99が見つかった場合、メイン制御ユニット11は、ストリームの割り当て解除を指示する制御信号をチャネルユニットCH99に出力する。チャネルユニットCH99は、この制御信号に応じて、ステップS52の処理を実行する。もしそのようなチャネルユニットが見つからなければ、処理を終了する。
ステップS52において、選択されたチャネルユニットCH99のチャネル制御ユニット121は、もしチャネル記憶ユニット122のいずれかのバッファのDIRTYフラグがゼロでなければ、そのバッファの内容をタグが示すメモリ上のアドレスへ書き戻し、そのバッファのDIRTYフラグおよびBFVALIDフラグをゼロにする。もしチャネルユニットCH99のいずれのバッファのDIRTYフラグもゼロであれば、チャネル制御ユニット121はなにもしない。つづいて、ステップS53へ進む。
ステップS53において、選択されたチャネルユニットCH99のチャネル制御ユニット121は、チャネル記憶ユニット122のCHVALIDフラグへゼロを代入する。CHVALIDフラグがゼロであるようなチャネルユニットはストリームIDが割り当てられていないことを意味する。
したがって、一般的なキャッシュメモリに比べて、本発明は少ない記憶要素でストリームデータを記憶することができる。このことによって、小回路規模のキャッシュを実現できる。
図1には、チャネルユニットを4個備えるストリームアクセスユニット10が描かれているが、ストリームアクセスユニット10のチャネルユニットの数は1個でも、複数個でもよい。チャネルユニットの数を増やすと、同時に記憶可能なストリームの数を増やすことができる。チャネルユニットの数を減らすと、回路規模を削減することができる。
2 メモリ
10 ストリームアクセスユニット
11 メイン制御ユニット
12A、12B、12C、12D、21、22、23、24 チャネルユニット
13 メモリアクセスユニット
121 チャネル制御ユニット
122 チャネル記憶ユニット
Claims (3)
- ストリーム識別情報によって識別されるストリームデータを格納するメモリと、
前記ストリーム識別情報にもとづいて前記ストリームデータを先読みしつつ記憶するひとつ以上のチャネルユニットと、
前記チャネルユニットが記憶したストリームデータにアクセスするプロセッサと、
前記プロセッサから送信されるストリームアクセス要求に応じて、前記ストリームアクセス要求に含まれるストリーム識別情報を前記チャネルユニットのいずれかを選択して割り当てるメイン制御ユニットと、
を備え、
前記チャネルユニットは、前記ストリームデータの位置情報を含むストリーム情報を保持し、前記メイン制御ユニットから割り当てられたストリーム識別情報に対応するストリームデータを前記ストリーム情報に基づいて前記メモリから先読みして記憶するとともに、前記ストリームデータの先読みに応じて前記位置情報を更新し、
前記チャネルユニットは、新たにストリーム識別情報が割り当てられた場合、前記保持しているストリーム情報を前記メモリに退避し、前記新たに割り当てられたストリーム識別情報に対応するストリームデータのストリーム情報を前記メモリから読み出して保持する
ことを特徴とする情報処理装置。 - 前記チャネルユニットは、所定のサイズのデータが格納される第1のデータ記憶部及び第2のデータ記憶部を備え、前記位置情報が示す位置のデータを第1データ記憶部に格納し、第1データ記憶部に格納されたデータの後続データを第2データ記憶部に格納する、ことを特徴とする請求項1に記載の情報処理装置。
- メモリに格納され、ストリーム識別情報で識別されるストリームデータに対してプロセッサがアクセスするデータアクセス方法であって、
ひとつ以上のチャネルユニットのいずれかを選択して前記ストリーム識別情報を割り当てる割り当てステップと、
前記チャネルユニットが割り当てられたストリーム識別情報に対応するストリームデータを前記メモリから先読みしつつ記憶する先読みステップと、
前記プロセッサが前記チャネルユニットに記憶されたストリームデータにアクセスするアクセスステップと、を備え、
前記チャネルユニットは、前記ストリームデータの位置情報を含むストリーム情報を保持し、
前記先読みステップでは、前記チャネルユニットが前記ストリーム情報に基づいて前記ストリームデータを先読みするとともに、前記ストリームデータの先読みに応じて前記位置情報を更新し、
前記割り当てステップでは、前記ストリーム識別情報が新たに割り当てられるチャネルユニットで保持していたストリーム情報を前記メモリに退避し、新たに割り当てられるストリーム識別情報に対応するストリームデータのストリーム情報を前記メモリから読み出して前記チャネルユニットで保持する
データアクセス方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010082655A JP5800347B2 (ja) | 2010-03-31 | 2010-03-31 | 情報処理装置及びデータアクセス方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010082655A JP5800347B2 (ja) | 2010-03-31 | 2010-03-31 | 情報処理装置及びデータアクセス方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011215805A JP2011215805A (ja) | 2011-10-27 |
JP5800347B2 true JP5800347B2 (ja) | 2015-10-28 |
Family
ID=44945478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010082655A Expired - Fee Related JP5800347B2 (ja) | 2010-03-31 | 2010-03-31 | 情報処理装置及びデータアクセス方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5800347B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102074329B1 (ko) | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
KR102161448B1 (ko) | 2014-02-03 | 2020-10-05 | 삼성전자 주식회사 | 멀티 채널 메모리를 포함하는 시스템 및 그 동작 방법 |
US10866905B2 (en) * | 2016-05-25 | 2020-12-15 | Samsung Electronics Co., Ltd. | Access parameter based multi-stream storage device access |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3350043B2 (ja) * | 1990-07-27 | 2002-11-25 | 株式会社日立製作所 | 図形処理装置及び図形処理方法 |
US5761417A (en) * | 1994-09-08 | 1998-06-02 | International Business Machines Corporation | Video data streamer having scheduler for scheduling read request for individual data buffers associated with output ports of communication node to one storage node |
JP2002041358A (ja) * | 2000-07-24 | 2002-02-08 | Sony Corp | プロセッサシステム |
DE602004029870D1 (de) * | 2003-03-06 | 2010-12-16 | Nxp Bv | Datenverarbeitungssystem mit einem für die verarbeitung von datenflussanwendungen optimierten cache |
JP2008009857A (ja) * | 2006-06-30 | 2008-01-17 | Toshiba Corp | キャッシュ制御回路およびプロセッサシステム |
-
2010
- 2010-03-31 JP JP2010082655A patent/JP5800347B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011215805A (ja) | 2011-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9996466B2 (en) | Apparatus, system and method for caching compressed data | |
US5958040A (en) | Adaptive stream buffers | |
JP6613375B2 (ja) | プロファイリングキャッシュ置換 | |
US7877547B2 (en) | Method, system and circuit for efficiently managing a cache storage device | |
US20040049641A1 (en) | System and method for controlling prefetching | |
JP2018163659A (ja) | 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション | |
JP2007241927A (ja) | データ記憶装置及び方法 | |
JP6859361B2 (ja) | 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと | |
CN101826056A (zh) | 数据处理设备和方法 | |
JP2017117179A (ja) | 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法 | |
JP2010517179A (ja) | プロセッサにおいてキャッシュポリシーを設定するための方法および装置 | |
US6901500B1 (en) | Method and apparatus for prefetching information and storing the information in a stream buffer | |
JP2019525330A (ja) | キャッシュテスト領域に基づくプリフェッチデータに対するキャッシュ転送ポリシーの選択 | |
JP2017072982A (ja) | 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム | |
JP2023507078A (ja) | プリフェッチレベルの降格 | |
JP2003517682A (ja) | キャッシュを有するデータプロセッサ | |
JP4888839B2 (ja) | キャッシュメモリを備えるベクトル計算機システム、及びその動作方法 | |
US6931490B2 (en) | Set address correlation address predictors for long memory latencies | |
JP5800347B2 (ja) | 情報処理装置及びデータアクセス方法 | |
US9852082B2 (en) | Information processing apparatus and cache control method | |
JP2006018841A (ja) | さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法 | |
JPH0934786A (ja) | 命令供給装置 | |
JP7132491B2 (ja) | メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法 | |
JP2022046413A (ja) | 記憶デバイスのための改良された先読み能力 | |
JP2004326175A (ja) | プロセッサ、キャッシュシステム及びキャッシュメモリ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130207 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131120 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131210 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140206 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140311 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140611 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20140619 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20140815 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150701 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150820 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5800347 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |