JP2001166916A - リングバッファ制御方法 - Google Patents

リングバッファ制御方法

Info

Publication number
JP2001166916A
JP2001166916A JP34621199A JP34621199A JP2001166916A JP 2001166916 A JP2001166916 A JP 2001166916A JP 34621199 A JP34621199 A JP 34621199A JP 34621199 A JP34621199 A JP 34621199A JP 2001166916 A JP2001166916 A JP 2001166916A
Authority
JP
Japan
Prior art keywords
index
ring buffer
address
data
block
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.)
Withdrawn
Application number
JP34621199A
Other languages
English (en)
Inventor
Naoki Nishiyama
直樹 西山
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.)
Victor Company of Japan Ltd
Original Assignee
Victor Company of Japan 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 Victor Company of Japan Ltd filed Critical Victor Company of Japan Ltd
Priority to JP34621199A priority Critical patent/JP2001166916A/ja
Publication of JP2001166916A publication Critical patent/JP2001166916A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 リングバッファのメモリアドレス指定を単純
化してマイクロプロセッサの処理負担を軽減する。 【解決手段】 リングバッファの処理ブロック1〜n毎
にインデックスI=1〜nを設けてインデックスI=1
〜n毎に各ブロックのアドレスA1〜Anを設けるとと
もに、インデックスI=nの後にインデックスI=n+
1を設けてインデックスI=n+1に最初のブロックの
アドレスA1と最初のインデックスを示すインデックス
データ「1」を設ける。インデックスカウンタCをイン
クリメントすることによりインデックスIを順方向に参
照して個々のアドレスに基づいて各ブロックを順方向に
アクセスし、インデックスI=nを参照した後にインデ
ックスI=n+1を参照してそのアドレスA1に基づい
て最初のブロックをアクセスするとともに、そのインデ
ックスデータに基づいてインデックスカウンタを「1」
に戻す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、リングバッファの
終端アドレスを判別しないリングバッファ制御方法に関
し、リングバッファで管理されているデータを参照する
場合のバッファのポインタアドレスの操作に関する。
【0002】
【従来の技術】近年の高密度化されたデータ記録技術や
マイクロプロセッサの高性能化に伴い、高速かつ大量の
デジタルデータを複雑に加工し、伝送するニーズが高ま
っている。また、限られたバッファメモリ容量の中で、
これら大量のデータを取り扱う場合、バッファメモリに
記憶された過去の古いデータを順次新しいデータで置き
換えて使用する必要がある。その場合、図1に示すよう
にバッファメモリの終端とする領域Anまでデータが満
たされると、一度データを記憶したバッファメモリの先
頭領域A1に戻ってデータを格納するようなリングバッ
ファと呼ばれるリング構造のバッファによってデータを
管理するのが一般的である。
【0003】また、これらの大量データに対し、データ
のエンコード処理など限られた時間の中で高度なデータ
処理を行う必要がある場合には、エンコーダなどの専用
プロセッサを用い、それを外部の汎用マイクロプロセッ
サにより制御するのが一般的である。この汎用のマイク
ロプロセッサがバッファメモリにアクセスする場合、バ
ッファメモリのアドレスA1〜Anを指定する必要があ
るが、リングバッファの場合には、アクセスするバッフ
ァメモリのアドレスA1〜Anの設定及びリングバッフ
ァの終端アドレスAnを判別し、終端Anに達している
場合は先頭A1までアドレスを戻す処理が必要になる。
【0004】ここで、汎用のマイクロプロセッサ上で、
リングバッファで管理されているデータを参照する従来
のリングバッファ制御方法の一例を説明する。図5は図
1に示すようにリングバッファの各ブロックのアドレス
をA1(先頭)〜An(終端)として、これらのデータ
を順次ブロック単位で参照する処理プログラムを示す。
【0005】まず、アクセスするリングバッファのメモ
リアドレスポインタAcにリングバッファの先頭アドレ
スA1を設定する(ステップS1)。次にリングバッフ
ァメモリアドレスポインタ(単にアドレスポインタとも
いう)Acが示す位置からアクセスしてデータを読み出
し(ステップS2)、次いでリングバッファメモリアド
レスポインタAcに次のブロックアドレスをセットする
(ステップS3)。次に、このバッファメモリアドレス
ポインタが終端アドレスAnを超えているか判別し(ス
テップS4)、超えている場合にはステップS5におい
てバッファメモリアドレスを先頭アドレスA1に設定
し、次いでステップS6に進む。他方、ステップS4に
おいて超えていない場合にはそのままステップS6に進
む。以下、必要な分だけステップS6からステップS2
に戻って上記処理を繰り返す。
【0006】
【発明が解決しようとする課題】しかしながら、上記従
来例では、専用プロセッサが独自のアドレッシングによ
るリングバッファを持っている場合には、汎用プロセッ
サのリングバッファメモリアドレスポインタAcに次の
ブロックアドレスをセットする処理(ステップS3)
と、リングバッファメモリアドレスポインタAcが終端
アドレスAnを超えているか判別する処理(ステップS
4)が複雑になるうえ、これらの処理に掛かる時間によ
り、本来のデータ処理の時間が圧迫され、高速なデータ
処理に支障をきたすものとなっていた。
【0007】また、リングバッファのブロックの大きさ
に変更があった場合や専用プロセッサの変更など、リン
グバッファの物理的なアドレスの指定方法に変更が生じ
た場合、これらの処理は全面的に変更する必要があると
いう問題があった。さらに、リングバッファを逆方向に
参照したい場合などのリングバッファの操作方法に変更
が生じた場合には、上記ステップS3〜S5のすべての
処理を新たに設計し直す必要があるなど、リングバッフ
ァを柔軟に制御することが困難であった。なお、この種
の従来例としては、例えば特開平11−85460号公
報、特開平7−28623号公報などに示されている。
【0008】本発明は上記従来例の問題点に鑑み、リン
グバッファのメモリアドレス指定を単純化してマイクロ
プロセッサの処理負担を軽減することができると共に、
専用プロセッサが持つ独自のアドレッシングの指定又は
リングバッファの参照方法の変更にも柔軟に対応できる
リングバッファ制御方法を提供することを目的とする。
【0009】
【課題を解決するための手段】本発明は上記目的を達成
するために、インデックスカウンタを処理ブロック毎に
インクリメントしてブロックを順方向にアクセスし、ま
た、インデックスデータによりインデックスカウンタを
最後の処理ブロックから最初の処理ブロックに戻すよう
にしたものである。また、インデックスカウンタを処理
ブロック毎にデクリメントしてブロックを逆方向にアク
セスし、また、インデックスデータによりインデックス
カウンタを最初の処理ブロックから最後の処理ブロック
に戻すようにしたものである。
【0010】すなわち本発明によれば、リングバッファ
の複数の処理ブロックの各々毎に第1のインデックスを
設けて前記第1のインデックス毎に各ブロックのアドレ
スを記憶するとともに、前記複数の第1のインデックス
の最後のインデックスの後に更に1つの第2のインデッ
クスを設けてその第2のインデックスに最初のブロック
のアドレスと前記複数の第1のインデックスの最初のイ
ンデックスを示すインデックスデータを記憶し、インデ
ックスカウンタをインクリメントすることにより前記複
数の第1のインデックスを順方向に参照して各インデッ
クスのアドレスに基づいて各ブロックを順方向にアクセ
スし、前記第1のインデックスの最後のインデックスを
参照した後に前記第2のインデックスを参照してそのア
ドレスに基づいて最初のブロックをアクセスするととも
に、そのインデックスデータにインデックスカウンタを
戻すリングバッファ制御方法が提供される。
【0011】
【発明の実施の形態】以下、図面を参照して本発明の実
施の形態を説明する。図1はリングバッファの構造を示
す説明図、図2は本発明に係るリングバッファ制御用配
列データを示す説明図、図3は本発明に係るリングバッ
ファの順方向制御方法の一実施形態を示すフローチャー
ト、図4は本発明に係るリングバッファの逆方向制御方
法の一実施形態を示すフローチャートである。
【0012】図1は制御対象のリングバッファの構造を
示し、このリングバッファは、ある大きさを持つn個の
ブロックから成り、その物理的なアドレスをA1〜An
で表わす。このリングバッファを制御するために、図2
に示すような配列データ(以下、「リングバッファ制御
用配列」とする)を制御側のプロセッサのRAM(不図
示)上に構築する。このリングバッファ制御用配列は、
リングバッファ中の1つのブロックに対して2つの要素
D1、D2を持つ2次元の配列構造になっており、第1
の要素D1はリングバッファの物理的な「アドレスポイ
ンタデータD1」であり、第2の要素は配列データの
「インデックスデータD2」である。
【0013】リングバッファ制御用配列はリングバッフ
ァのn個のブロックに対して、n+2組のインデックス
I(=0,1,2〜n,n+1)を持ち、各インデック
スIは要素D1、D2を持つ。そして、インデックスI
=1〜nにそれぞれ対応させて、リングバッファの開始
点から終了点までの物理アドレスポインタデータD1=
A1〜An及びインデックスデータD2=1〜nを配置
したリングバッファ制御用配列を構築する。さらに、順
方向を制御するための最後のインデックスI=n+1に
は、リングバッファの開始点の物理アドレスポインタデ
ータD1=A1及びインデックスデータD2=1をそれ
ぞれ配置する。また、逆方向を制御するための最初のイ
ンデックスI=0に対応する第1、第2の要素D1、D
2として、それぞれリングバッファの終了点に対応する
物理アドレスポインタデータD1=An及びインデック
スデータD2=nを配置する。
【0014】次に、このリングバッファ制御用配列のデ
ータを用いたリングバッファの順方向の制御方法につい
て図3を参照して説明する。まず、インデックスIを示
すインデックスカウンタCの初期値を「1」とする(ス
テップS11)。ここで、図2に示すように、リングバ
ッファ制御用配列のインデックスI=1に対応するリン
グバッファのアドレスポインタデータD1は、リングバ
ッファの先頭アドレスA1が設定されているので、これ
によりリングバッファの先頭アドレスA1を指定するこ
とができる。
【0015】これによりリングバッファの先頭アドレス
A1にアクセスし(ステップS12)、次いでインデッ
クスI=1のインデックスデータD2=1をインデック
スカウンタCにセットする(ステップS13)。この場
合、インデックスI=1に対応するインデックスデータ
D2は1であるためインデックスカウンタCに変化は無
い。
【0016】バッファメモリアドレスを次のブロックの
先頭に移動する処理では、インデックスカウンタCをイ
ンクリメントする(ステップS14)。次いでステップ
S15において処理終了でなければステップS12に戻
る。以下、順次インデックスカウンタCを初期値=1か
らインクリメントしながら、インデックスカウンタCが
示すインデックスIを参照して個々のアドレスに基づい
て各ブロックを順方向にアクセスするとともに、インデ
ックスIのインデックスデータD2をインデックスカウ
ンタCにセットする。そして、リングバッファの終端A
nまでアクセスが終了すると、インデックスI=nのイ
ンデックスデータD2はnになっている。したがって、
ここまではインデックスカウンタCはブロック毎にイン
クリメントする。
【0017】その後、インデックスカウンタCをインク
リメントしてC=n+1にすると、インデックスI=n
+1に対応するアドレスポインタデータD1は、リング
バッファの先頭アドレスA1が設定されているのでアド
レスが先頭に戻ることになる。また、インデックスI=
n+1に対応するインデックスデータD2は初期値=1
が設定され、それをインデックスカウンタCにセットす
るので、初期状態に戻ることになる。
【0018】また、リングバッファを逆方向に参照する
場合は図4に示すように、ステップS11’における初
期化処理(C=n)と、ステップS14’における「デ
クリメント:C←C−1)」処理に変更するだけで対応
が可能となる。すなわち、インデックスカウンタCをn
から順次デクリメントし、C=0になった場合には、イ
ンデックスI=0に対応するリングバッファのアドレス
ポインタデータD1には、リングバッファの終端アドレ
スAnが設定されているので、リングバッファの終端ア
ドレスAnにアクセスすることができる。また、インデ
ックスI=0に対応するインデックスデータD2はnに
設定されているので、これをインデックスカウンタCに
セットするとC=nになり、このため引き続きインデッ
クスカウンタCをnからデクリメントすることができ
る。
【0019】以上により、従来必要としていた物理的な
アドレスポインタの移動処理、リングバッファの終端又
は先頭の判断処理及びそれに伴うアドレスポインタを終
端又は先頭に戻す特別な処理が不要になる。また、イン
デックスカウンタCの初期値は1(順方向制御時)、n
(逆方向制御時)に限定されず、任意の値kに設定すれ
ば任意のアドレスAkから順方向にも逆方向にもアクセ
スすることができる。
【0020】
【発明の効果】以上説明したように本発明によれば、リ
ングバッファの終端又は先頭に至った場合でも特別な処
理を必要とせず、インデックスカウンタをインクリメン
トあるいはデクリメントする単純な操作をすることだけ
でリングバッファを制御することが可能になる。また、
専用プロセッサが持つ特有なリングバッファのアドレッ
シングが必要な場合でも、物理的なアドレスポインタを
リングバッファ制御用配列データ上に構築することによ
り複雑なポインタの操作が不要になり、また、リングバ
ッファの逆方向アクセスなどを容易に行うことが可能に
なる。また、従来のポインタ操作に掛かる処理時間を軽
減できる。さらに、専用プロセッサの変更、またはリン
グバッファの容量が変化した場合のプログラムの変更も
リングバッファ制御用配列のデータを変更するだけで対
応することができ、柔軟な制御が可能となる。
【図面の簡単な説明】
【図1】リングバッファの構造を示す説明図である。
【図2】本発明に係るリングバッファ制御用配列データ
を示す説明図である。
【図3】本発明に係るリングバッファの順方向制御方法
の一実施形態を示すフローチャートである。
【図4】本発明に係るリングバッファの逆方向制御方法
の一実施形態を示すフローチャートである。
【図5】従来のリングバッファ制御方法を示すフローチ
ャートである。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 リングバッファの複数の処理ブロックの
    各々毎に第1のインデックスを設けて前記第1のインデ
    ックス毎に各ブロックのアドレスを記憶するとともに、
    前記複数の第1のインデックスの最後のインデックスの
    後に更に1つの第2のインデックスを設けてその第2の
    インデックスに最初のブロックのアドレスと前記複数の
    第1のインデックスの最初のインデックスを示すインデ
    ックスデータを記憶し、 インデックスカウンタをインクリメントすることにより
    前記複数の第1のインデックスを順方向に参照して各イ
    ンデックスのアドレスに基づいて各ブロックを順方向に
    アクセスし、 前記第1のインデックスの最後のインデックスを参照し
    た後に前記第2のインデックスを参照してそのアドレス
    に基づいて最初のブロックをアクセスするとともに、そ
    のインデックスデータにインデックスカウンタを戻すリ
    ングバッファ制御方法。
  2. 【請求項2】 前記複数の第1のインデックスの最初の
    インデックスの前に更に1つの第3のインデックスを設
    けてその第3のインデックスに最後のブロックのアドレ
    スと前記複数の第1のインデックスの最後のインデック
    スを示すインデックスデータを記憶し、 前記インデックスカウンタをデクリメントすることによ
    り前記複数の第1のインデックスを逆方向に参照して各
    インデックスに基づいて各ブロックを逆方向にアクセス
    し、 前記第1のインデックスの最初のインデックスを参照し
    た後に前記第3のインデックスを参照してそのアドレス
    に基づいて最後のブロックをアクセスするとともに、そ
    のインデックスデータにインデックスカウンタを戻す請
    求項1記載のリングバッファ制御方法。
JP34621199A 1999-12-06 1999-12-06 リングバッファ制御方法 Withdrawn JP2001166916A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34621199A JP2001166916A (ja) 1999-12-06 1999-12-06 リングバッファ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34621199A JP2001166916A (ja) 1999-12-06 1999-12-06 リングバッファ制御方法

Publications (1)

Publication Number Publication Date
JP2001166916A true JP2001166916A (ja) 2001-06-22

Family

ID=18381869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34621199A Withdrawn JP2001166916A (ja) 1999-12-06 1999-12-06 リングバッファ制御方法

Country Status (1)

Country Link
JP (1) JP2001166916A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008537620A (ja) * 2005-03-21 2008-09-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ サーキュラー・バッファ・メモリを用いて蛇行走査順序でデータ・アレイを処理する方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008537620A (ja) * 2005-03-21 2008-09-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ サーキュラー・バッファ・メモリを用いて蛇行走査順序でデータ・アレイを処理する方法

Similar Documents

Publication Publication Date Title
JPS62237547A (ja) アドレス変換方式
US4639862A (en) Computer system
US6684267B2 (en) Direct memory access controller, and direct memory access control method
US4250548A (en) Computer apparatus
JPS6122817B2 (ja)
JP2001166916A (ja) リングバッファ制御方法
US4816992A (en) Method of operating a data processing system in response to an interrupt
JPH01125644A (ja) データ転送装置
JP3260399B2 (ja) 非同期i/oダイナミックプライオリティチェンジ方式
JP2748504B2 (ja) 入力処理装置
JP2672497B2 (ja) データ処理装置
JPS5824822B2 (ja) デ−タメモリブロックのアクセス方法
JP2847863B2 (ja) マイクロプロセッサ割込み制御方式
JP2615046B2 (ja) レコード追加処理方法
JP2540844B2 (ja) デ−タ転送制御方法
JPS59136831A (ja) デ−タ転送制御装置
JP2594611B2 (ja) Dma転送制御装置
JP2988048B2 (ja) 辞書情報常駐アクセス装置
JP2728151B2 (ja) プログラマブルコントローラ
JPH0731608B2 (ja) 情報処理装置
JPS6331808B2 (ja)
JPS592938B2 (ja) メモリ ワ−クスペ−ス アンドレツシングホウホウオヨビソウチ
JPS595355A (ja) 仮想スタツクのアクセス制御方式
JPH03276306A (ja) プログラマブルコントローラ
JPS6124737B2 (ja)

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070206