JPH0798600A - 配列処理方式 - Google Patents

配列処理方式

Info

Publication number
JPH0798600A
JPH0798600A JP5264401A JP26440193A JPH0798600A JP H0798600 A JPH0798600 A JP H0798600A JP 5264401 A JP5264401 A JP 5264401A JP 26440193 A JP26440193 A JP 26440193A JP H0798600 A JPH0798600 A JP H0798600A
Authority
JP
Japan
Prior art keywords
row
buffer
function output
function
array
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
JP5264401A
Other languages
English (en)
Other versions
JP2526802B2 (ja
Inventor
Toshihiro Hayata
利浩 早田
Toshiki Miyano
俊樹 宮野
Masahiro Serizawa
芹沢  昌宏
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP5264401A priority Critical patent/JP2526802B2/ja
Priority to CA002133020A priority patent/CA2133020C/en
Priority to DE69432006T priority patent/DE69432006T2/de
Priority to EP94307065A priority patent/EP0645697B1/en
Publication of JPH0798600A publication Critical patent/JPH0798600A/ja
Application granted granted Critical
Publication of JP2526802B2 publication Critical patent/JP2526802B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)
  • Circuits Of Receivers In General (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】 L行M列配列の各行成分に所定の関数を適用
して得られるK個の配列要素を含むL個分の関数出力に
対して、所定の評価方法で順序付けしたときの上位N個
の関数出力を、効率良く選択し得るようにする。 【構成】 演算装置5は、配列1の各行成分毎に、関数
2を適用して得た関数出力がバッファ3に保持されてい
る現在までの全関数出力との関係でどの順位になるかを
決定し、N番目以内に入るときは、N+1番目の関数出
力をバッファ3から追い出し、今回の関数出力及びその
生成元となった行成分の行番号をバッファ3に格納す
る。また、今回の関数出力を格納したバッファ3の行番
号をバッファ8に保持する。バッファ8は、各々1つの
行番号を保持するN個の配列要素をリング状に並べた循
環バッファ6と、このバッファ6の開始点となる配列要
素を指示する開始点指示バッファ7とで構成される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、音声符号化技術の一種
であるVSELPにおけるコードブック探索処理等に好
適な配列処理方式に関し、特に、L行M列配列の各行成
分に所定の関数を適用して得られるK個の配列要素を含
むL個分の関数出力に対して、所定の評価方法で順位付
けしたときの上位N個の関数出力を選択する配列処理方
式に関する。
【0002】
【従来の技術】音声符号化技術の一種にVSELP(V
ector Sum ExcitedLinear P
redication)方式があり、この方式において
コードブック探索という処理が行われる(これに関する
文献としては、例えば平成2年特許出願公表第5021
35号公報がある)。
【0003】ここで、VSELPにおけるコードブック
探索処理は、 Ei = Σ{p(n) −γfi (n) }2 …(1) を最小にする符号語iを求める処理であるが、その解法
として、 Ci = Σfi (n) p(n) …(2) Gi = Σ{fi (n) }2 …(3) を定義し、 (Ci 2 /Gi …(4) を最大にする符号語iを選択する手法がある。なお、p
(n) は音声信号,fi (n) はi番目の符号語を使って擬
似的に発生させた音声信号,γは各符号語iに対して最
適化された値である。
【0004】このようなコードブック探索処理では、p
(0),…,p(N-1),fi (0),…, fi (N-1) を第i行の行成
分とするL行M列配列を用意し、このL行M列配列の各
行成分に上記(2)および(3)式の関数を適用してC
i とGi とを求め、上記(4)式を最大とするCi とG
i との組を、1つだけ求めるのではなく、その最大のも
のからN個だけその順位付けを行って選択し、後の処理
においてその1つを決定するという処理が行われる。
【0005】即ち、L行M列配列の各行成分に所定の関
数を適用して得られるK個の配列要素を含むL個分の関
数出力に対して、所定の評価方法で順位付けしたときの
上位N個の関数出力を順位付けて選択するという処理で
ある。
【0006】従来、このような処理は、図13に示すよ
うな構成により、以下のように実施されていた。
【0007】図13において、1はL行M列配列、2は
上記(2),(3)の関数に相当する行成分関数、3’
はN行K列の配列で構成された関数出力バッファ、4は
N行M列の配列で構成された行成分バッファ、5’は演
算装置であり、この演算装置5’は図14に示す処理を
実行する。
【0008】先ず、演算装置5’は、L行M列配列1の
0行目の行成分(その行を構成するM個の配列要素)に
注目し(S101)、行成分関数2を適用してK個の要
素を含む関数出力を得る(S103)。そして、これを
関数出力バッファ3’の0行目に格納し(S110)、
生成元のL行M列配列1の0行目の行成分を行成分バッ
ファ4の0行目に格納する(S111)。
【0009】次に、L行M列配列1の1行目の行成分に
注目し(S101)、行成分関数2を適用して関数出力
を得(S103)、関数出力バッファ3’の0行目に格
納されている関数出力と前記(4)の評価方法で比較し
て、順位m(最高順位はm=0とする)を求める(S1
05)。そして、順位mが最下位(即ち、今の場合m=
1)のときは、今回の関数出力を関数出力バッファ3’
の1行目に格納し(S110)、生成元のL行M列配列
1の1行目の行成分を行成分バッファ4の1行目に格納
する(S111)。
【0010】他方、順位mが最下位でなければ(即ち、
今の場合m=0)、今回の関数出力を関数出力バッファ
3’の0行目に挿入するために、元0行目に格納されて
いる関数出力を1行目に移動し、空いた0行目に今回の
関数出力を格納する(S107)。また、L行M列配列
1の1行目の行成分を行成分バッファ4の0行目に挿入
するために、元0行目に格納されている行成分を1行目
に移動し、空いた0行目にL行M列1の1行目の行成分
を格納する(S108)。
【0011】以降、同様にしてL行M列配列1のN−1
行目の行成分まで処理すると、関数出力バッファ3’お
よび行成分バッファ4はその時点でフル状態となる。
【0012】L行M列配列1のN行目以降の処理では、
処理S105の処理で決定された順位mが最下位(即ち
m=N)と判定されると(S106でYES)、処理S
109により処理S110,S111がスキップされ、
その関数出力および元の行成分の関数出力バッファ3’
および行成分バッファ4への格納は行われない。他方、
mが最下位でないと判定された場合(S106でN
O)、処理S107においては関数出力バッファ3’の
N−1行目に格納されている関数出力が追い出され、今
回の関数出力がその順位mに相当する行に挿入される。
例えば、m=0とすると、0行目〜N−2行目に格納さ
れている関数出力がそれぞれ1行下に移し変えられ、今
回の関数出力が0行目に書き込まれる。同様に処理S1
08においても、N−1行目に格納されている行成分が
追い出されて、今回の行成分がその順位mに相当する行
に挿入される。
【0013】以上のような処理がL行M列配列1の最後
のL−1行まで行われると、関数出力バッファ3’には
順位の高い順にN個の関数出力が格納され、行成分バッ
ファ4には対応する行成分が順位順に格納されることに
なる。これにより、所定の評価方法で順位付けしたとき
の上位N個の関数出力の選択と、各々の関数出力の生成
元となった行成分との対応付けが完了する。
【0014】
【発明が解決しようとする課題】従来は上述したように
して上位N個の関数出力をその順位を定めつつ選択して
いたが、以下のような問題点があった。
【0015】関数出力バッファ上での関数出力の並び
で、関数出力バッファに格納されているN個の関数出力
の順位を管理するようにしているため、新たに生成され
た関数出力の順位mが0に近いほど、関数出力バッファ
上での関数出力の移し替え処理量が多くなる。即ち、例
えばm=0の場合、0行目〜N−2行目に格納されてい
る関数出力をそれぞれ1行下に移し変えるために、合計
(N−1)×K個の配列要素の移し替えが必要となる。
このため、移し替えを実行するための演算である交換演
算の回数が多くなり、処理終了までに多くの時間を必要
とする。
【0016】また、選択した上位N個の関数出力に対応
する元の行成分がどれであるかを、関数出力バッファ上
での関数出力の並び順に元の行成分を行成分バッファに
格納することで実現しているため、関数出力バッファ上
での配列要素の交換と同様の交換が行成分バッファでも
必要となり、処理時間が益々長くなる。
【0017】本発明はこのような従来の問題点を解決し
たものであり、その目的は、交換演算の回数を大幅に低
減し得る配列処理方式を提供することにある。
【0018】
【課題を解決するための手段】本発明は上記の目的を達
成するために、L行M列配列の各行成分に所定の関数を
適用して得られるK個の配列要素を含むL個分の関数出
力に対して、所定の評価方法で順位付けしたときの上位
N個の関数出力を選択する配列処理方式において、N個
分の関数出力を保持するための関数出力バッファと、該
関数出力バッファに保持された各関数出力の順位を、そ
の関数出力が保持されている前記関数出力バッファの行
番号を順位順に並べることにより管理する順位保持バッ
ファと、前記L行M列配列の各行成分毎に、前記所定の
関数を適用して得られる関数出力が前記関数出力バッフ
ァに保持されている全関数出力との関係でどの順位にな
るかを決定し、N番目以内に入るときは、N+1番目の
関数出力を前記関数出力バッファから追い出して前記N
番目以内に入った関数出力を前記関数出力バッファに格
納し、且つ、その格納した前記関数出力バッファの行番
号が前記決定した順位で前記順位保持バッファに保持さ
れるように前記順位保持バッファを更新する演算装置と
を備えている。
【0019】また、前記順位保持バッファは、各々1つ
の行番号を保持するN個の配列要素を論理的にリング状
に並べた循環バッファと、該循環バッファの開始点とな
る配列要素を指示する開始点指示バッファとで構成さ
れ、前記関数出力バッファの行番号を、前記開始点とな
る配列要素を先頭として所定方向に順位順に保持するこ
とで順位を管理する構成を有し、前記演算装置は、前記
順位保持バッファを更新する際、新たに登録する行番号
の順位に応じて、その順位より下位の順位の行番号の格
納先を前記循環バッファ上で前記所定方向に変更する
か、その順位より上位の順位の行番号の格納先を前記所
定方向と逆方向に変更するかを決定し、逆方向に変更し
たときは前記開始点指示バッファの指示する開始点とな
る配列要素を前記所定方向と逆方向の1つ隣の配列要素
に変更するようにしている。
【0020】更に、前記関数出力バッファに、関数出力
を格納する配列要素以外にその関数出力の生成元となっ
た前記L行M列配列の行成分の行番号を保持する配列要
素を備え、前記演算装置は、関数出力に加えその生成元
となった行成分の行番号を前記関数出力バッファに格納
するようにしている。
【0021】
【作用】本発明の配列処理方式においては、L行M列配
列の各行成分毎に、演算装置が、所定の関数を適用して
得られる関数出力が関数出力バッファに保持されている
現在までの全関数出力との関係でどの順位になるかを決
定し、N番目以内に入るときは、N+1番目の関数出力
を関数出力バッファから追い出して前記N番目以内に入
った関数出力およびその生成元となった行成分の行番号
を関数出力バッファに格納し、且つ、その格納した関数
出力バッファの行番号が前記決定した順位で順位保持バ
ッファに保持されるように順位保持バッファを更新す
る。
【0022】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0023】図1を参照すると、本発明の一実施例の配
列処理方式は、L行M列配列1と、行成分関数2と、関
数出力バッファ3と、順位保持バッファ8と、演算装置
5とで構成されている。
【0024】図1において、L行M列配列1および行成
分関数2は図13に示したものと同一であるが、関数出
力バッファ3は、各行の配列要素が1つ増えており、そ
の増やした配列要素に関数出力の生成元となったL行M
列配列1の行成分の行番号を格納するようにしている。
また、関数出力バッファ3上での関数出力の並びで個々
の関数出力の順位を管理するのではなく、順位保持バッ
ファ8で順位を管理するようにしている。
【0025】順位保持バッファ8は、本実施例では、各
々1つの行番号を保持するN個の配列要素を論理的にリ
ング状に並べた循環バッファ6と、循環バッファ6の開
始点となる配列要素を指示する開始点指示バッファ7と
で構成され、関数出力バッファ3の行番号を、開始点と
なる配列要素を先頭として時計方向に順位順に保持する
ことで順位を管理している。
【0026】図2および図3は演算装置5の処理例を示
すフローチャートであり、以下、各図を参照して、L行
M列配列1の各行成分に行成分関数2を適用して得られ
るK個の配列要素を含むL個分の関数出力に対して、所
定の評価方法で順位付けしたときの上位N個の関数出力
を選択する動作を説明する。
【0027】演算装置5は起動されると、図2に示す処
理を開始し、L行M列配列1の0行目からL−1行目ま
で、1つずつの行成分に注目して処理を進める(S
1)。そして、最後のL−1行目の行成分を処理し終え
ると(S2でYES)、処理を終了する。
【0028】注目中の1つの行成分(現行成分)に対し
ては以下の処理を行う。
【0029】先ず、現行成分に行成分関数2を適用して
K個の要素を含む関数出力を得る(S3)。そして、最
初の関数出力については(S4でYES)、その関数出
力の順位mを0とし、その関数出力と生成元となったL
行M列配列1の行成分の行番号0とを関数出力バッファ
3の空きの行に格納し(S6)、その格納した行番号
を、循環バッファ6の開始点指示バッファ(以下、ST
と称す)7で指示される配列要素からm=0番目の配列
要素に格納する(S7)。
【0030】他方、最初の関数出力以外の関数出力につ
いては(S4でNO)、関数出力バッファ3に格納され
ている関数出力と現関数出力とを従来と同様の評価方法
で比較し、今回の関数出力の順位mを求める(S8)。
【0031】この処理S8における順位の決定は、今回
の関数出力を関数出力バッファ3に格納されている関数
出力1つずつと順次比較していく方法でも可能である
が、例えば2分探索法を使用して効率的に順位を決定す
るようにしても良い。即ち、循環バッファ6に保持され
ている最小順位をXとすると、先ずその半分のX/2の
順位の関数出力と今回の関数出力とを比較し、次に、そ
の結果に応じてX/4あるいは3X/4の順位の関数出
力と比較するといった如くに、比較を進めていく方法で
ある。
【0032】さて、順位mを決定すると、決定した順位
が最下位であるか否かを判別し(S9)、最下位であれ
ば(S9でYES)、今回の関数出力と生成元となった
L行M列配列1の行成分の行番号とを関数出力バッファ
3の空きの行に格納し(S6)、その格納した行番号
を、循環バッファ6のST7で指示される配列要素から
m番目の配列要素に格納する(S7)。但し、処理S9
で最下位と判定された場合に、関数出力バッファ3に空
きの行が無く既にN個の関数出力が格納されている場合
(S10でNO)、処理S6,S7は実行せず、当該注
目中の行成分の処理を終える。これは、順位mが最下位
であり且つ関数出力バッファ3に空きの行が無いとうこ
とは、順位mがN+1ということなので、今回の関数出
力が上位N番までの関数出力にはなり得ないからであ
る。
【0033】また、処理S9で順位mが最下位でないと
判別された場合、図3の処理に進み、関数出力バッファ
3に空きの行があるか否かを判別し(S11)、空きの
行があれば、処理S6と同様に、今回の関数出力と生成
元となったL行M列配列1の行成分の行番号とを関数出
力バッファ3の空きの行に格納する(S12)。しか
し、空きの行が無ければ、即ち関数出力バッファ3にN
個の関数出力が既に格納されていれば、循環バッファ6
を参照して順位が最下位の関数出力が格納されている関
数出力バッファ3の行番号を認識し、その行番号の行
に、今回の関数出力と生成元となったL行M列配列1の
行成分の行番号とを上書きする(S13)。
【0034】そして、処理S14〜S20において、順
位保持バッファ8に対する処理を行い、処理S12また
は処理S13で使用した関数出力バッファ3の行の行番
号が処理S8で決定された順位mで保持されるように順
位保持バッファ8を更新する。この順位保持バッファ8
の更新は以下のようにして行われる。
【0035】先ず、順位mが、循環バッファ6に登録さ
れている行番号の登録数を2で割った数値(但し、割り
切れないときは例えば四捨五入あるいは少数点以下を切
り捨てる等により整数値とする)以上か否かを判別する
(S14)。
【0036】そして、m≧[登録数/2]の場合(S1
4でYES)、循環バッファ6のST7で指示される配
列要素からm番目以降の配列要素に格納されている行番
号の格納先を、下位側(時計方向)に1つ移動し(S1
5)、次いで、循環バッファ6のST7で指示される配
列要素からm番目の配列要素に、今回の関数出力を格納
した関数出力バッファ3の行の行番号を格納する(S1
6)。そして、現注目中の行成分の処理を終える。
【0037】他方、m<[登録数/2]の場合(S14
でNO)、m=0か否かを判別し(S17)、m=0の
場合は(S17でYES)、ST7が指示している循環
バッファ6の開始点となる配列要素を順位方向(時計方
向)と逆方向の1つ隣の配列要素に変更し(S19)、
次いで、循環バッファ6のST7で指示される配列要素
からm番目の配列要素に、今回の関数出力を格納した関
数出力バッファ3の行の行番号を格納する(S20)。
そして、現注目中の行成分の処理を終える。
【0038】また、m≠0の場合(S17でNO)、循
環バッファ6のST7で指示される配列要素からm−1
番目までの配列要素に格納されている行番号の格納先
を、順位の上位側(反時計方向側)の1つ隣の配列要素
に移動し(S18)、処理S19およびS20を実行し
て、現注目中の行成分の処理を終える。
【0039】次に、本実施例の理解を容易にする為に、
幾つかの状況を想定して動作を具体的に説明する。例と
しては、N=8とし、LはNより十分大きな値とする。
【0040】L行M列配列1の0行目の行成分の処理に
おいては、その行成分を行成分関数2に適用して得られ
た関数出力と生成元の行成分の行番号0とが、図10に
示すように関数出力バッファ3の0行目に格納され(S
15)、行番号0が図4(a)に示すようにST7が指
示する配列要素からm=0番目の配列要素、つまりST
7が指示する配列要素自体に格納される(S16)。
【0041】L行M列配列1の次の1行目,2行目,3
行目の行成分に対する処理において、それぞれ現在まで
に算出された関数出力との関係で最下位と判定されたと
すると、処理S9,S10を経て処理S6,S7が実行
され、それらの行成分を行成分関数2に適用して得られ
た関数出力と生成元の行成分の行番号1,2,3とが、
図10に示すように関数出力バッファ3の1,2,3行
目に格納され、この格納に使用された行の行番号1,
2,3が図4(a)に示すようにST7が指示する配列
要素からm=1,m=2,m=3番目の配列要素にそれ
ぞれ格納される。
【0042】L行M列配列1の次の4行目の行成分に対
する処理において、算出された関数出力の順位mが1で
あったとすると、処理S9,S11を経て処理S12に
進み、算出された関数出力と生成元の行成分の行番号4
とが図10に示すように関数出力バッファ3の4行目に
格納された後、m=1<[4/2]なので、処理S1
4,S17を経て処理S18,S19,S20が実行さ
れる。即ち、図4(a)の状態の循環バッファ6のST
7で指示される配列要素からm(今は1)−1=0番目
までの配列要素に格納されている行番号0が、図4
(b)のように上位側に1つ移動され(S18)、次い
で、ST7が指示する開始点となる配列要素が図4
(c)に示すように1つ変更され、次いで、図4(d)
に示すように、行番号4が、ST7が指示する配列要素
からm=1番目の配列要素に格納される。これにより、
新たに管理される順位は、行番号で表現して、上位から
順に0,4,1,2,3となる。
【0043】図4(d)と同じ状態を図5(a)に示し
ており、この状態でL行M列配列1の次の5行目の行成
分について求められた関数出力の順位mが0と判定され
たとすると、処理S9,S11を経て処理S12が実行
され、その関数出力と生成元の行成分の行番号5とが図
10に示すように関数出力バッファ3の5行目に格納さ
れた後、処理S14,処理S17を経て処理S19,S
20が実行される。即ち、図5(a)の状態の循環バッ
ファ6のST7が指示する開始点となる配列要素が図5
(b)に示すように1つ変更され、次に、行番号5が、
ST7が指示する配列要素からm=0番目の配列要素、
つまりST7が指示する配列要素自体に格納される。こ
れにより、図5(c)に示すように新たに管理される順
位は、5,0,4,1,2,3となる。
【0044】図5(c)と同じ状態を図6(a)に示し
ており、この状態でL行M列配列1の次の6行目の行成
分に対する処理において、算出された関数出力の順位m
が4であったとすると、処理S9,S11を経て処理S
12が実行され、その関数出力と生成元の行成分の行番
号6とが図10に示すように関数出力バッファ3の6行
目に格納される。そして、処理S14へ進み、m=4≧
[6/2]なので、処理S15,S16が実行される。
即ち、図6(a)のST7で指示される配列要素からm
=4番目以降の配列要素に格納されている行番号2,3
が、図6(b)に示すように順位の下位側の隣の配列要
素に移動され(S15)、次に、ST7で指示される配
列要素からm=4番目の配列要素に、今回の関数出力お
よびその生成元となった行成分の行番号を格納した関数
出力バッファ3の行の行番号6が格納される(S1
6)。これにより、循環バッファ6は図6(c)のよう
になる。
【0045】図7(a)はL行M列配列1の7行目の配
列要素まで処理し終えた時点の循環バッファ6の状態を
示しており、全ての配列要素に行番号が格納されてい
る。この時点では、関数出力バッファ3の全行が使い尽
くされ、例えば図10に示すような内容になっている。
この状態で、L行M列配列1の次の8行目の行成分の処
理で算出された関数出力の順位mが8つまり最下位と判
定されたとすると、処理S9を経て処理S10へ進み、
ここで関数出力バッファ3に空きの行がないことが確認
されて、行番号8の行成分の処理が終わる。即ち、図1
0に示す関数出力バッファ3の内容および図7(a)に
示す循環バッファ6の内容に変化はない。
【0046】次にL行M列配列1の9行目の行成分につ
いて求められた関数出力の順位mが3であったとする
と、処理S9,S11を経て処理S13へ進み、図7
(a)の状態の循環バッファ6から最下位の行番号7が
認識され、図10の関数出力バッファ3の行番号7の行
に、今回の9行目の行成分にかかる関数出力およびその
行番号9とが上書きされる。これにより、関数出力バッ
ファ3の内容は図11に示すように変化する。そして、
処理S14では、m=3<[8/2]と判定され、処理
S17を経て処理S18,S19,S20が実行され
る。これにより、図7(a)の状態の循環バッファ6の
順位m(今は3)−1=2までの行番号5,0,4が図
7(b)に示すように1つ移動される(S18)。この
とき、最下位の行番号7は最上位の行番号5によって上
書きされる。次にST7が図7(c)に示すように1つ
変更され(S19)、今回処理したL行M列配列1の9
行目の行成分にかかる関数出力を格納した関数出力バッ
ファ3の行の行番号7が図7(d)に示すように格納さ
れる。これにより、新たに管理される順位は、5,0,
4,7,1,6,2,3となる。
【0047】図7(d)と同じ状態を図8(a)に示し
ており、この状態でL行M列配列1の次の10行目の行
成分にかかる関数出力の順位mが6と判定されたとする
と、処理S9,S11を経て処理S13へ進み、図8
(a)の状態の循環バッファ6から最下位の行番号3が
認識され、関数出力バッファ3の行番号3の行に、今回
の10行目の行成分にかかる関数出力およびその行番号
10とが、図12に示すように格納される。そして、m
=6≧[8/2]なので、処理S15に進み、図8
(a)のST7が指示する配列要素からm=6番目以降
の配列要素に格納されている行番号2,3が下位側に1
つ移動される。このとき、最下位の行番号3はST7が
指示する配列要素へは移さず、破棄する。これにより、
循環バッファ6の状態は図8(b)のようになる。そし
て、ST7が示す配列要素からm=6番目の配列要素に
行番号3が格納され、循環バッファ6は図8(c)のよ
うになる。
【0048】図8(c)と同じ状態を図9(a)に示し
ており、この状態でL行M列1の次の11行目の行成分
にかかる関数出力の順位mが7と判定されたとすると、
処理S9,S11を経て処理13へ進み、図9(a)の
状態の循環バッファ6から最下位の行番号2が認識さ
れ、関数出力バッファ3の行番号2の行に、今回の11
行目の行成分にかかる関数出力およびその行番号11と
が、図12に示すように格納される。そして、m=7≧
[8/2]なので、処理S15に進み、図9(a)のS
Tが指示する配列要素からm=7番目以降の配列要素に
格納されている行番号2が下位側に1つ移動され、この
行番号2が破棄される。これにより、循環バッファ6の
状態は図9(b)のようになる。そして、ST7が示す
配列要素からm=7番目の配列要素に、今回の関数出力
を格納した関数出力バッファ3の行番号である2を格納
する。これにより、循環バッファ6は図9(c)のよう
になる。なお、このように、関数出力バッファ3がフル
状態で新たな関数出力の順位mが7のとき、循環バッフ
ァ6の内容に実質的な変更はないので、順位保持バッフ
ァ8の操作を省略することも可能である。
【0049】
【発明の効果】以上説明した本発明の配列処理方式によ
れば、以下のような効果を得ることができる。
【0050】処理の過程で得られる現在までの上位N個
の関数出力の順位を、従来のように関数出力バッファ上
での関数出力の並び順で管理するのではなく、関数出力
バッファには順位と無関係に上位N個の関数出力を格納
し、その格納されている行番号を別の順位保持バッファ
に順位順に保持することで管理するため、交換演算はN
個の配列要素を持つ順位保持バッファに対してのみ実施
すれば良く、交換演算数を大幅に低減することができ
る。
【0051】特に、循環バッファと開始点指示バッファ
とを使用し、順位保持バッファを更新する際、新たに登
録する行番号の順位に応じて、その順位より下位の順位
の行番号の格納先を循環バッファ上で所定方向に変更す
るか、その順位より上位の順位の行番号の格納先を所定
方向と逆方向に変更するかを切り分けることにより、交
換演算数をより一層低減することができる。
【0052】関数出力に加えその生成元となった行成分
の行番号を関数出力バッファに格納することで、各関数
出力とその生成元となったL行M列の行成分を対応付け
るようにしているため、従来のような行成分バッファが
不要となり、行成分バッファに対する交換演算も不要と
なる。
【図面の簡単な説明】
【図1】本発明の一実施例の構成図である。
【図2】本発明の一実施例における演算装置の処理例の
一部を示すフローチャートである。
【図3】本発明の一実施例における演算装置の処理例の
残りの部分を示すフローチャートである。
【図4】L行M列配列の4行目までの行成分が処理され
た時点の循環バッファの状態例を示す図である。
【図5】L行M列配列の5行目までの行成分が処理され
た時点の循環バッファの状態例を示す図である。
【図6】L行M列配列の6行目までの行成分が処理され
た時点の循環バッファの状態例を示す図である。
【図7】L行M列配列の9行目までの行成分が処理され
た時点の循環バッファの状態例を示す図である。
【図8】L行M列配列の10行目までの行成分が処理さ
れた時点の循環バッファの状態例を示す図である。
【図9】L行M列配列の11行目までの行成分が処理さ
れた時点の循環バッファの状態例を示す図である。
【図10】L行M列配列の7行目までの行成分が処理さ
れた時点の関数出力バッファの状態例を示す図である。
【図11】L行M列配列の9行目までの行成分が処理さ
れた時点の関数出力バッファの状態例を示す図である。
【図12】L行M列配列の11行目までの行成分が処理
された時点の関数出力バッファの状態例を示す図であ
る。
【図13】従来の配列処理方式の構成図である。
【図14】従来の配列処理方式における演算装置の処理
を示すフローチャートである。
【符号の説明】
1…L行M列配列 2…行成分関数 3…関数出力バッファ 5…演算装置 6…循環バッファ 7…開始点指示バッファ(ST) 8…順位保持バッファ

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 L行M列配列の各行成分に所定の関数を
    適用して得られるK個の配列要素を含むL個分の関数出
    力に対して、所定の評価方法で順位付けしたときの上位
    N個の関数出力を選択する配列処理方式において、 N個分の関数出力を保持するための関数出力バッファ
    と、 該関数出力バッファに保持された各関数出力の順位を、
    その関数出力が保持されている前記関数出力バッファの
    行番号を順位順に並べることにより管理する順位保持バ
    ッファと、 前記L行M列配列の各行成分毎に、前記所定の関数を適
    用して得られる関数出力が前記関数出力バッファに保持
    されている全関数出力との関係でどの順位になるかを決
    定し、N番目以内に入るときは、N+1番目の関数出力
    を前記関数出力バッファから追い出して前記N番目以内
    に入った関数出力を前記関数出力バッファに格納し、且
    つ、その格納した前記関数出力バッファの行番号が前記
    決定した順位で前記順位保持バッファに保持されるよう
    に前記順位保持バッファを更新する演算装置とを具備す
    ることを特徴とする配列処理方式。
  2. 【請求項2】 前記順位保持バッファは、各々1つの行
    番号を保持するN個の配列要素を論理的にリング状に並
    べた循環バッファと、該循環バッファの開始点となる配
    列要素を指示する開始点指示バッファとで構成され、前
    記関数出力バッファの行番号を、前記開始点となる配列
    要素を先頭として所定方向に順位順に保持することで順
    位を管理する構成を有することを特徴とする請求項1記
    載の配列処理方式。
  3. 【請求項3】 前記演算装置は、前記順位保持バッファ
    を更新する際、新たに登録する行番号の順位に応じて、
    その順位より下位の順位の行番号の格納先を前記循環バ
    ッファ上で前記所定方向に変更するか、その順位より上
    位の順位の行番号の格納先を前記所定方向と逆方向に変
    更するかを決定し、逆方向に変更したときは前記開始点
    指示バッファの指示する開始点となる配列要素を前記所
    定方向と逆方向の1つ隣の配列要素に変更することを特
    徴とする請求項2記載の配列処理方式。
  4. 【請求項4】 前記関数出力バッファに、関数出力を格
    納する配列要素以外にその関数出力の生成元となった前
    記L行M列配列の行成分の行番号を保持する配列要素を
    備え、 前記演算装置は、関数出力に加えその生成元となった行
    成分の行番号を前記関数出力バッファに格納することを
    特徴とする請求項3記載の配列処理方式。
JP5264401A 1993-09-28 1993-09-28 配列処理方式 Expired - Fee Related JP2526802B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP5264401A JP2526802B2 (ja) 1993-09-28 1993-09-28 配列処理方式
CA002133020A CA2133020C (en) 1993-09-28 1994-09-27 Minimum shift data arranging method and apparatus
DE69432006T DE69432006T2 (de) 1993-09-28 1994-09-28 Minimale Verschiebung von Datenarrangierverfahren und Gerät
EP94307065A EP0645697B1 (en) 1993-09-28 1994-09-28 Minimum shift data arranging method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5264401A JP2526802B2 (ja) 1993-09-28 1993-09-28 配列処理方式

Publications (2)

Publication Number Publication Date
JPH0798600A true JPH0798600A (ja) 1995-04-11
JP2526802B2 JP2526802B2 (ja) 1996-08-21

Family

ID=17402654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5264401A Expired - Fee Related JP2526802B2 (ja) 1993-09-28 1993-09-28 配列処理方式

Country Status (4)

Country Link
EP (1) EP0645697B1 (ja)
JP (1) JP2526802B2 (ja)
CA (1) CA2133020C (ja)
DE (1) DE69432006T2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3611316A (en) * 1969-12-24 1971-10-05 Ibm Indirect indexed searching and sorting
DE3278297D1 (en) * 1981-05-18 1988-05-05 Ibm Method of qualifying and sorting file record data in a text processing system
US5117495A (en) * 1990-03-07 1992-05-26 Syncsort Incorporated Method of sorting data records

Also Published As

Publication number Publication date
CA2133020C (en) 1999-01-12
DE69432006T2 (de) 2003-04-30
CA2133020A1 (en) 1995-03-29
EP0645697B1 (en) 2003-01-15
EP0645697A1 (en) 1995-03-29
JP2526802B2 (ja) 1996-08-21
DE69432006D1 (de) 2003-02-20

Similar Documents

Publication Publication Date Title
Norman et al. A genetic algorithm methodology for complex scheduling problems
US4131947A (en) Random access digital sorter
JP2753260B2 (ja) マージ方法
WO1991018343A1 (en) Production system
JPH0997262A (ja) データ検索装置
JP2526802B2 (ja) 配列処理方式
JPH09282359A (ja) ジョブショップスケジューリング装置
JP2850082B2 (ja) ファジイ推論のmin−max 演算回路
WO1999015944A2 (en) Method and apparatus for searching and displaying data
RU2007107795A (ru) Эффективные по использованию памяти способы декодирования кодов с низкой плотностью контроля по честности (ldpc) и устройства для осуществления этих способов
JPH1139344A (ja) 2次元配列コードを用いた文字列検索方法
JP2541457B2 (ja) デ―タ並び替え方法及びデ―タ並び替え装置
JP2001184370A (ja) キーワード検索式生成装置及びキーワード検索式生成方法
REDDY Combinatorial Optimization Using (Integer) Linear Programming and Metaheuristics
JPH06274328A (ja) 複数の処理モジュールからなるプログラムの実行方法
JP2636709B2 (ja) 論理最適化装置
JPS6266326A (ja) 日本語デ−タ整列処理方式
JPH0295552A (ja) 部品表作成システム
JP2891128B2 (ja) ファジィルールの表示,編集方法およびその構築装置
GB2190772A (en) Data storage/retrieval
IE911347A1 (en) System and method for determining three-dimensional¹structures of proteins
JPS6385823A (ja) マルチキ−・ソ−タ
JPH07210546A (ja) 文書作成装置
JPH05189482A (ja) 情報検索装置
JPH0273478A (ja) 複数2次元パターンの検索方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080614

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090614

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100614

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100614

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110614

Year of fee payment: 15

LAPS Cancellation because of no payment of annual fees