JP2001229172A - テーブルを用いたデータ処理装置および処理システム - Google Patents

テーブルを用いたデータ処理装置および処理システム

Info

Publication number
JP2001229172A
JP2001229172A JP2000036874A JP2000036874A JP2001229172A JP 2001229172 A JP2001229172 A JP 2001229172A JP 2000036874 A JP2000036874 A JP 2000036874A JP 2000036874 A JP2000036874 A JP 2000036874A JP 2001229172 A JP2001229172 A JP 2001229172A
Authority
JP
Japan
Prior art keywords
data
memory
processing
input
input data
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
JP2000036874A
Other languages
English (en)
Other versions
JP4558879B2 (ja
Inventor
Akira Jinzaki
明 陣崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2000036874A priority Critical patent/JP4558879B2/ja
Priority to US09/782,285 priority patent/US6742107B2/en
Priority to DE60124161T priority patent/DE60124161T2/de
Priority to EP01301333A priority patent/EP1126367B1/en
Publication of JP2001229172A publication Critical patent/JP2001229172A/ja
Application granted granted Critical
Publication of JP4558879B2 publication Critical patent/JP4558879B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 ストリームデータ処理をはじめ、汎用のデー
タ処理を高速に実行することができ、また処理機能を容
易に変更することができるデータ処理装置を提供する。 【解決手段】 入力されるデータをメモリ検索用データ
に変換する手段2と、該メモリ検索用データを用いてメ
モリ4を検索し、入力データに対して行われるべき処理
の内容を含む状態語を状態遷移テーブルから読み出す手
段3と、読み出された状態語の内容に応じて、次の入力
データに対して行われるべき処理の状態に対応する状態
遷移テーブルへのアクセス情報を得ると同時に、入力さ
れたデータに対して状態語の内容に応じた演算を実行す
る手段5とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はプロセッサなどのデ
ータ処理装置に係り、さらに詳しくは、例えばサンプリ
ング周期毎に発生する時系列データなど一連のデータ
(ストリームデータ)を高速に処理するために、命令列
を読み込む必要を無くし、入力されるデータに対応して
メモリを検索し、検索された内容に応じて入力データに
対する処理を実行する、テーブルを用いたデータ処理装
置に関する。
【0002】
【従来の技術】ネットワーク通信で用いられる通信パケ
ット、ビデオ/音声データ、各種センサからサンプリン
グ周期毎に発生する時系列データディスクをリードライ
トするデータ、データフロープロセッサの演算データ、
並列計算機のプロセッサ間通信データなどの一連のデー
タ(ストリームデータ)を処理する場合は非常に多い。
ここでいうストリームデータ処理とは概ね以下のような
特性の一つあるいは複数をもつ。 A)一定のあるいは間欠的な転送速度で一定の語長のデ
ータが処理装置に入力される B)ストリームデータは複数の種類のデータが多重化さ
れる場合がある C)処理出力は新たなストリームデータになりうる D)処理出力はメモリにバッファリングされることがあ
りうる E)入力ストリームデータおよび出力(データストリー
ム)は複数でありうる F)処理シーケンスを有限状態機械で構成できる G)処理機能の一つとしてテーブル検索があり、ストリ
ームデータ語をキーとしてテーブル検索をおこなう必要
がある H)処理機能の一つとして特殊な演算があり、ストリー
ムデータ語に対して演算する必要がある ここで有限状態機械(Finite State Machine)は形式言
語理論で定義された意味では最も能力の低いクラスのオ
ートマトンの名称でもある。本発明では敢えて有限状態
機械という言葉を使用するが、これは一般的な意味で有
限の状態と状態遷移で定義される状態機械を意味する。
【0003】ストリームデータはネットワーク、バスな
どの伝送路を介して計算機などの処理装置に転送され、
処理される。このようなストリームデータの速度はデバ
イス速度の向上に従って年々高速化しており、通信パケ
ットを例にとると現在でも1Gbps(125 MB/sec)〜4G
bps(500MB/sec)が要求されており、将来はさらに高速化
する見込みである。例えば転送速度が1Gbps のストリ
ームデータをバイト処理すると8ns(125 MHz)、4バイ
ト単位で処理しても32ns(31.25 MHz) で処理しなければ
ならない。高速のストリームデータを処理しようとする
とこの性能が問題となる。また機能的にも画像処理、通
信処理など複雑な処理が要求されるだけでなく、処理内
容を柔軟に変更できることが求められている。
【0004】本発明はストリームデータ処理をはじめと
する汎用データ処理を目的とし、特に処理内容を変更可
能な処理装置(プロセッサ)の構成方式にかかわる。ス
トリームデータを処理するための従来技術はハードウェ
ア方式とソフトウェア方式に大別される。ストリームデ
ータの処理は論理的にはハードウェア方式でもソフトウ
ェア方式でも実現可能であるが、考慮しなければならな
いのは処理性能と機能変更の容易さである。
【0005】ハードウェア方式は処理機能を専用のハー
ドウェアで実現する方式で広く用いられている。専用ハ
ードウェア処理ではストリームデータを入出力速度で処
理できるよう専用ハードウェアを構成するので、ストリ
ームデータをバッファリングすることなく一語入力する
毎に逐次的に処理する方式(逐次処理方式)が可能であ
る。バッファリングしないといってもある程度のエラス
ティックバッファを介することで転送レートと処理レー
トの調整をする場合はあるが、逐次処理方式では一連の
ストリームデータを全部メモリに格納してから処理する
一括処理方式に比べて一般に処理遅延が小さくなる長所
がある。
【0006】現在のCMOSデバイスの性能は250MHz程
度であるから、処理する語長を適切に調整することで逐
次処理方式を用いた低遅延、高性能を実現可能である
が、こんどは機能の変更可能性が問題となる。この問題
を解決するために従来より用いられる方式としてはFP
GA(Field Programmable Gate Array),PLD(Prog
rammable Logic Device)などの再構成可能なデバイスを
用いる方法がある。再構成可能なデバイスを用いる方式
は一部のインターネットルータなどで用いられている
が、現在のプログラマブルデバイスでは実現できる回路
量が限られること、性能が押さえられることから機能を
限定した分野のみで使用される。今後テクノロジの進歩
によって大規模かつ高性能のデバイスが利用可能になる
としても、同じテクノロジを用いたストリームデータの
転送速度も同様に向上すると考えられるので再構成可能
なデバイスの利用分野は常に性能の低い分野に限定され
ると考えられる。
【0007】次にソフトウェア方式は汎用または専用の
プロセッサおよびプロセッサが実行するソフトウェアを
用いて処理を行う方式である。ソフトウェアによって機
能を実現するため、機能変更が容易という利点がある。
また、計算機システムにおいてはプロセッサが存在して
いるので、最小限のハードウェアで実現でき、低コスト
化がはかれるという利点もある。
【0008】しかしながら性能的にはいくつかの問題が
ある。一般に一つのストリームデータを処理するために
は複数の命令を実行しなければならないため、プロセッ
サはストリームデータの転送速度の複数倍の速度で動作
しなければならない。仮に一つのストリームデータを処
理するために10命令を実行しなければならないとする
と、1Gbps のストリームデータを4B処理するために
は312.5MHz以上で動作するプロセッサを100 %動作させ
る必要がある。結局のところストリームデータの転送速
度が低速であればソウトウェア方式は有効であるが、プ
ロセッサの動作周波数に近い高速なストリームデータを
処理するのは困難である。
【0009】また計算機は一般にオペレーティングシス
テムなどの管理システムのもとで動作するものであっ
て、ストリームデータが発生したからといって直ちに処
理を開始できない場合がある。そこで一連のストリーム
データをメモリに格納し、まとまった量がたまってから
一括処理し、結果データを得たり、再度別の場所に転送
する。このような一括処理方式は通常計算機システムで
採用される代表的な方式であって、ストリームデータを
I/Oバスを介してメモリに貯え、一連のデータが格納
されたところで計算機がソフトウェアによってデータを
処理し、処理が終わると結果をI/Oバスを介して他に
転送する。具体的には多くの計算機ネットワーク処理、
画像処理、インターネットルータなどがこの方式を採用
している。この方式ではデータをメモリに格納するため
遅延を生じるのが問題である。このため処理能力的には
十分であっても処理が間欠的になり、低遅延の逐次処理
方式は採用できない。これはリアルタイム(実時間)性
の問題として広く知られている。
【0010】以上をまとめると、従来技術において、ハ
ードウェア方式は高速処理可能な反面、機能変更が困難
であり、ソフトウェア方式は柔軟に機能変更できる反
面、性能に限りがある。そこで、機能変更可能かつ逐次
処理可能な処理方式が求められている。
【0011】従来のプロセッサは、図27に示されるよ
うに、ノイマン型プロセッサと呼ばれるストアドプログ
ラム方式であって、ハードウェアとしては基本的な要素
となる演算装置とプログラムを実行するための機構から
なる。プログラムはこれらのハードウェアを利用して処
理機能を実現するもので、プログラムを変更することに
よって機能を変更できる点が特徴である。ストアドプロ
グラム方式ではデータを処理するために、処理機能を実
現するプログラムを構成する命令(インストラクショ
ン)を獲得(フェッチ)し、これを解読(デコード)
し、実行(イグゼキュート)するというハードウェア操
作が必要である。処理内容が複雑になると一個のデータ
を処理するために複数の命令を処理する必要がある。従
って一般的にストアドプログラム方式のデータ処理能力
はプロセッサの命令処理能力に比例し、かつデータ処理
性能は命令処理性能より低い。いいかかえると命令処理
性能より高速のデータ処理性能は得られない。
【0012】また、一個のデータを処理するのに複数の
命令を実行しなければならないので、データ処理性能は
命令処理性能の1/nになる。ここでnはプロセッサの
アーキテクチャや処理内容に依存する数値であるが、一
般に単純なコード変換でも5〜10,複雑な通信パケット
処理では100 〜1000程度になる場合がある。すなわち、
ある周波数のストリームデータを処理するためには、そ
の周波数の5〜1000倍の命令処理性能をもつプロセッサ
が必要である。
【0013】従来技術では命令処理性能を向上させる面
とnを小さくする面の両面から改善が行われている。キ
ャッシュ、パイプラインなどは命令処理性能面、マルチ
メディア処理用命令セットであるMMX命令などはnを
小さくする面からの改善である。また並列処理は両面に
寄与する改善策といえる。しかし、以上に説明したよう
に、ストアドプログラム方式のプロセッサでは本質的に
「命令処理性能>データ処理性能」の制限を免れること
はできない。通信ネットワークなどストリームデータを
供給する側は専用ハードウェアで構成されるため、同じ
半導体テクノロジを用いた時、「ストリームデータ性能
=命令処理性能>データ処理性能」の関係が常に成り立
ち、アドレス処理方式では永久にストリームデータを処
理することは不可能ということになる。
【0014】ストアドプログラム方式のプロセッサは命
令ストリームを高速に処理するように最適化された有限
状態機械である。プロセッサが処理する命令の形式を変
更する方式は従来から提案されており、そのような方式
を備えたプロセッサアーキテクチャをダイナミックアー
キテクチャとよぶ。ダイナミックアーキテクチャを実現
する一般的な方式としては主にCISC(Complex Inst
ruction Set Computer) で用いられるマイクロプログラ
ム方式がある。
【0015】マイクロプログラム方式の詳細な説明は省
略するが、概略は以下のようなものである。まず命令を
デコードした結果、その命令に対応するマイクロ命令の
アドレスを得る。マイクロ命令は制御記憶に格納された
プログラムで、これを実行することによってもともとの
命令の機能を実現する。マイクロ命令には様々な実現方
式があるが、一般的にプロセッサハードウェアの資源を
制御するためのビット列からなっており、この命令を順
次読み出し、ハードウェアに適用することによって目的
の機能を得る。マイクロプログラムプロセッサの処理の
基本的な手順は以下のようになる。
【0016】第1手順:命令を読み込む。 第2手順:命令に対応して定義される処理(マイクロ命
令)を選択する。 第3手順:選択された処理を実行し、第1手順に戻る。
【0017】そこて、この制御記憶に格納されるマイク
ロ命令を変更することでプロセッサの命令を変更するこ
とができる。但し、従来のマイクロ命令の形式はプロセ
ッサハードウェアが持つ資源に応じて固定的であり、変
更はあくまでもプロセッサアーキテクチャの範囲内に限
定される。このため任意のデータを処理できるほどの柔
軟さはないし、仮に複数のマイクロ命令を用いて処理を
実現できたとしても、これはプロセッサのプログラムレ
ベルで処理するのと本質的に同じであるため処理性能は
低下する。RISC(Reduced Instruction Set Comput
er) はマイクロプログラム処理の性能制限を克服するた
めに考案された方式であるが、このことはマイクロプロ
グラム方式が場合によって性能的に問題があることを示
している。
【0018】以上のようにマイクロプログラム方式には
アーキテクチャ的な制限の問題と性能の問題があり、マ
イクロプログラム方式のプロセッサを用いて一般的なス
トリームデータ処理を実現することは、従来提案された
ことがないと考えられる。
【0019】
【発明が解決しようとする課題】以上説明したように、
例えばストリームデータ処理をハードウェア方式で実現
する場合には、処理速度の点については高い性能を実現
できるが、機能変更が容易でないという問題点があっ
た。
【0020】またソフトウェア方式を用いる場合には、
データ処理性能が常に命令処理性能より低いという制限
を免れることができず、ダイナミックアーキテクチャ実
現のためのマイクロプログラム方式においても機能変更
に柔軟さがないという問題点があった。
【0021】本発明の課題は、上述の問題点に鑑み、マ
イクロプログラム方式に類似したダイナミックアーキテ
クチャを用いて、プロセッサに命令ではなく、ストリー
ムデータを直接処理させることによって、ストリームデ
ータ処理を始めとする汎用データ処理を高速に実行する
ことができ、また処理機能を容易に変更することができ
るデータ処理装置を提供することである。
【0022】
【課題を解決するための手段】図1は本発明の原理構成
ブロック図である。同図は、例えば有限状態機械とし
て、ストリームデータを処理するストリームプロセッサ
を実現するための、テーブルを用いたデータ処理装置1
の構成ブロック図である。
【0023】図1において、入力変換手段2は入力され
るデータをメモリ検索用データ、例えば入力データに含
まれるメモリ検索用データを更にビット数の少ないメモ
リ検索用データに変換するものである。ただし発明の実
施の形態によっては入力されるデータそのものをメモリ
検索用データとして用いることもできる。
【0024】メモリ検索手段3はそのメモリ検索用デー
タを用いてメモリ4を検索し、入力データに対して行わ
れるべき処理の状態に対応して、その処理の内容を含む
データとしての状態語が1つのエントリに格納されてい
る状態遷移テーブル内の状態語を読み出すものである。
【0025】演算手段5は読み出された状態語の内容に
応じて、次の入力データに対応して行われるべき処理の
状態に対応する状態遷移テーブルへのアクセス情報を得
ると同時に、その状態語の内容に応じた演算を入力され
たデータに対して実行するものである。
【0026】本発明の実施の形態においては、データ処
理装置の内部のメモリの状態遷移テーブルの内容をデー
タ処理前、あるいは処理中に変更する状態遷移テーブル
書き換え手段を更に備えることもできる。
【0027】本発明の実施形態においては、前述の状態
語は入力に関するデータを格納する領域、状態遷移先へ
のアクセス情報を格納する領域、演算の内容を格納する
領域、結果の出力に関するデータを格納する領域、およ
びこれら4つの領域のいずれが状態語に含まれるかを示
すタグ領域のうちで、少なくとも前述の4つの領域の中
の1つ以上を含み、1つ以上の領域を備えるものであ
る。この場合、前述の4つの領域のうちでいずれが備え
られるかによって、状態語はそれぞれ一定の長さを持つ
こともできる。
【0028】また発明の実施の形態によっては、状態語
はタグ領域を必ず備えるようにすることもできる。この
場合タグ領域を状態語そのものに備えるのではなく、状
態語の領域構成毎にそれぞれ対応するタグを格納する複
数のタグレジスタが備えられ、タグがどのタグレジスタ
に格納されているかによって状態語の領域構成をメモリ
検索手段3が認識することもできる。
【0029】発明の実施の形態においては、入力変換手
段2は入力されるデータ内で任意の位置にある複数のビ
ットを、入力データに対応するビット配置上で任意の連
続した位置にまとめるマスクアンドキャザー処理を実行
することもできる。
【0030】またメモリ検索手段3は入力変換手段2の
出力とメモリのベースアドレスとを合成して状態語のア
ドレスを求めると共に、そのアドレスに格納されている
状態語に含まれているメモリアドレスを次に行うべきメ
モリ検索におけるベースアドレスとして使用することも
できる。
【0031】本発明の実施の形態においては、演算手段
5は演算に必要なデータを格納するレジスタ手段と、レ
ジスタ手段に格納されているデータと入力データとを用
いて演算を実行する演算処理手段とを備えることもでき
る。
【0032】この場合演算処理手段が、入力されたデー
タの演算処理の間は演算結果の出力を遅延させるための
FIFOメモリ手段を更に備えることもできる。実施の
形態においては、演算手段は入力データに対応する演算
結果を格納するテーブルを更に備えて、演算処理手段が
入力データに対応してそのテーブルを検索することによ
って演算結果を出力することもできる。
【0033】また演算手段5は、入力されたデータを一
時的に格納する入力FIFOメモリ手段と、演算処理手
段の出力を一時的に格納する出力FIFOメモリ手段と
を更に備えることもできる。
【0034】また実施形態においては、演算処理手段が
入力データのデータ構造に対応して複数の領域を有する
レジスタ手段を備え、入力データを分割してその複数の
領域に格納し、格納結果のデータの全部、または一部に
対して所定の処理を実行することもできる。
【0035】この場合所定の処理は、格納されたデータ
があらかじめ定められたデータ構造のパターンに一致す
るか否かを判定する処理であることも、また1つ以上の
領域に格納内容を抽出して、あらかじめ定められた形式
のデータとしてまとめ、入力データの特徴を示す情報を
求める処理であることもできる。
【0036】実施の形態においては、演算手段5は演算
処理に必要なデータを格納するメモリ検索用のデータと
して、入力データをビット数の少ないメモリ検索用デー
タに変換する手段を備えることもできる。この場合、こ
の手段は前述のマスクアンドキャザー処理を実行するこ
ともできる。
【0037】本発明の実施形態においては、図1で説明
したデータ処理装置が直接、あるいはバッファメモリを
介して順次直列に接続されたデータ処理システムを構成
することもできる。
【0038】この場合一部、または全部のデータ処理装
置からの処理状態表示信号を受けて、データ処理装置間
の処理を同期させるための信号をデータ処理装置に与え
る処理同期手段を更に備えることもできる。
【0039】本発明の実施の形態においては、入力デー
タが直接、あるいはバッファメモリを介してそれぞれ与
えられ、並列に接続された、図1で説明した構成を有す
るデータ処理装置によって、データ処理システムを構成
することもできる。
【0040】この場合、このシステムに対して複数のデ
ータが多重化されて入力される時、その入力データを所
定の方法で分離し、複数のデータ処理装置の中であらか
じめ定められた2つ以上のデータ処理装置に入力させる
手段を更に備えることもできる。
【0041】またこのシステムに対して、複数のデータ
がアドレスによって領域分割されたバスを介して多重化
されて入力される時、バス内の領域のアドレスに対応し
て多重化入力データを所定の方法で分離し、あらかじめ
定められた2つ以上のデータ処理装置に入力させる手段
を備えることもできる。
【0042】本発明の実施の形態においては、図1で説
明したデータ処理システムを単純化して、入力されるデ
ータをメモリ検索用データに変換する入力変換手段と、
そのメモリ検索用データを用いてメモリを検索し、入力
データに対して行われるべき処理に対応して、その処理
の内容を含むデータが1つのエントリに格納されている
テーブル内のデータを読み出すメモリ検索手段と、読み
出されたデータの内容に対応して、次の入力データに対
して行われるべき処理に対応するテーブルへのアクセス
情報を得ると同時に、読み出されたデータの内容に応じ
た演算を入力データに対して実行する演算手段とを備え
るデータ処理装置を用いることもできる。
【0043】また実施の形態においては、データ処理装
置の構成を更に単純化し、入力されるデータをメモリ検
索用データに変換する入力変換手段と、メモリ検索用デ
ータを用いてメモリ内のテーブルに格納されているデー
タを読み出すメモリ検索手段と、読み出されたデータに
対応して入力データに対する演算を実行する演算手段と
を備えるデータ処理装置を用いることもできる。
【0044】以上説明した本発明のテーブルを用いたテ
ーブル処理装置では、データ処理装置に命令ではなく、
例えばストリームデータを直接処理させることになる。
ストリームデータ処理の基本的な手順は次のようにな
る。
【0045】第1手順:入力データを読み込む。 第2手順:入力データに対応して定義される処理を選択
する。 第3手順:選択された処理を実行し、第1手順に戻る。
【0046】この手順はマイクロプログラム方式のプロ
セッサが命令を実行する場合と本質的に同様の処理であ
る。本発明では従来のマイクロプログラム方式を一歩進
めて、命令ストリームを読み込む必要をなくし、例えば
ストリームデータ処理を実現するダイナミックアーキテ
クチャを構築するものである。このようなデータ処理装
置を実現するために入力データを解析し、処理を行う有
限状態機械が構成される。処理機能を変更可能とするた
めに、メモリに格納されている状態遷移表の内容を処理
前、あるいは処理の途中で更新することにより、有限状
態機械の構成を変更可能とすることができる。
【0047】
【発明の実施の形態】図2は本発明の有限状態機械、例
えばストリームプロセッサの基本構成ブロック図であ
る。一般に本発明における有限状態機械、例えばストリ
ームプロセッサは入力、状態、状態遷移、および出力の
4つの要素によって定義される。まず入力はそれぞれの
状態において定義される入力データであり、具体的には
入力されるストリームデータの全部、あるいは一部、さ
らに例えば演算に必要な有限状態機械の内部情報などで
ある。
【0048】状態は有限状態機械の内部状態であり、処
理の過程で状態の推移が行われる。ある状態において定
義される入力のそれぞれに対して、次の状態遷移と出力
とが定義される。
【0049】状態遷移は状態から状態への遷移規則を示
すものであり、一般に有限状態機械内でメモリに状態遷
移表(テーブル)の形式で格納される。出力は状態に対
応して定義される出力データであり、具体的には出力さ
れるストリームデータの全部、あるいは一部、ハードウ
ェアを制御するための制御語などである。
【0050】有限状態機械は、例えば前述のようなスト
リームデータを処理するストリームプロセッサである
が、より一般的には順序回路と同様の動作を行うもので
ある。すなわちあるサイクルにおいて1つの状態に対応
して順序回路の最初の段の動作が行われ、次のサイクル
で状態遷移先の状態に対応して順序回路の次の段の動作
が行われ、以下同様の動作が繰り返されるものと考える
ことができる。
【0051】図2は有限状態機械の最も基本的な実施形
態を示すものであり、有限状態機械10は入力変換機構
11、状態遷移表(テーブル)を格納するメモリ12、
検索機構13、および演算・出力機構14によって構成
されている。入力変換機構11は入力データに含まれ
る、例えばメモリ検索用のデータを、例えばビット数の
より少ないメモリ検索値に変換し、検索機構13、およ
び必要に応じて演算・出力機構14に与えるものであ
る。
【0052】検索機構13は、入力変換機構11から与
えられたメモリ検索値を用いて、メモリ12に格納され
ている状態遷移表を検索する。後述するように、状態遷
移表は複数のエントリから構成され、各エントリには入
力データに対して行われるべき演算処理などの状態に対
応する状態語が格納されている。この状態語には、入力
データに対する処理の内容を規定する、例えば制御語に
加えて、次の状態遷移表の先頭アドレス、すなわち状態
遷移先のアドレスが格納されている。
【0053】演算・出力機構14は、検索された状態語
の内容によって入力データに対して必要な演算などの処
理を実行し、必要に応じて出力データを有限状態機械1
0の外部に出力するものである。
【0054】本発明の実施形態においては、有限状態機
械の構成として図2の構成をより一般化、単純化したも
のを使用することもできる。例えばメモリ12に状態遷
移表という有限状態機械特有の表を格納することなく、
メモリ12に格納された任意のデータを、各サイクルで
入力されるデータをパラメータとしてアクセスし、メモ
リのアクセス結果や入力データを用いて演算を行って出
力を得たり、次のメモリアクセス先を求めたりするデー
タ処理装置とすることもできる。
【0055】また更に有限状態機械を一般化、単純化し
たデータ処理装置として、単にメモリにアクセスし、メ
モリに格納された任意のデータを用いて順次入力される
データに対する演算などを行って出力を得るデータ処理
装置を実現することもできる。この場合には、各サイク
ルにおいて順次入力される入力データをパラメータとし
て、メモリのアクセス先が決定されるだけであり、次の
メモリアクセス先の獲得、すなわち状態遷移に相当する
動作は行われない。すなわちこの場合には、固定された
メモリデータを用いるだけで、入力データに対して必要
な演算を実行できるような比較的単純な動作を実行する
データ処理装置が実現される。
【0056】以下の説明では、本発明の内容を図2に示
した最も基本的な構成を用いて説明することにし、有限
状態機械を一般化、単純化したデータ処理装置の動作に
ついては特に記述しない。
【0057】図2においてメモリ12は、ランダムアク
セス可能なメモリであれば、読み出し専用であっても、
また書き換え可能なメモリであってもよい。メモリ12
として書き換え可能なメモリを用いて、処理の前、ある
いは処理の途中に格納されている状態遷移表の内容を変
更することによって、処理の内容を変更することが可能
となる。
【0058】図3は入力ストリームデータにあらかじめ
定められた処理を実行して処理結果を出力ストリームデ
ータとして出力する有限状態機械としてのストリームプ
ロセッサを示す。この有限状態機械10はその構成を変
更可能なものである。すなわち、その内部のメモリに格
納されている状態遷移表(テーブル)の内容を処理の
前、あるいは処理の途中で更新することにより、有限状
態機械10の構成を静的、または動的に変更することが
できる。
【0059】次に有限状態機械の実行サイクルについて
図4を用いて説明する。図4で有限状態機械、例えばス
トリームプロセッサは基本的には単一のクロックに同期
して動作する。1つのサイクルの動作は入力、状態遷
移、処理、および出力の4段階からなる。まず1つのサ
イクルの始まりで入力データが確定し、図2の入力変換
機構11によってメモリ検索用の検索値が求められ、状
態遷移表の検索、すなわち状態遷移が開始される。状態
遷移は状態遷移表の検索、すなわちメモリアクセスによ
って状態語が確定し、その内容によって状態遷移先、す
なわち次の状態が確定することを意味する。
【0060】次の状態が確定すると同時に入力データに
対する処理が開始され、処理が完了して出力、すなわち
演算結果が確定すると、必要に応じてその結果が出力さ
れると共に、次のサイクルに対応する次のデータの入力
動作が開始され、次のサイクル開始時点では入力データ
が確定し、以下同様の動作が繰り返される。
【0061】図4において有限状態機械の処理時間は入
力に必要な時間、状態遷移表を検索するメモリアクセス
タイム、演算・出力機構の処理時間の合計となる。これ
らの時間の中で最も長いものはメモリアクセスタイムで
あり、現在のテクノロジではLSI内蔵メモリで4〜5
ns程度であり、単純な演算しか行わない場合のサイクル
タイムは10ns以下になると考えられる。すなわち100MHz
程度の動作が可能と期待される。
【0062】図4で説明したように基本的には1つのサ
イクルで入力データに対応する1つの処理が実行される
ことを基本とするが、例えば演算処理に時間が必要な場
合には、その処理の完了を待って同期をとる必要があ
る。図5はこのような処理の同期を説明する図である。
【0063】例えば有限状態機械が入力動作可能になっ
ても、入力データがない場合にはそのまま待機する必要
があり、また入力データに対する処理の時間が長い場合
にも同期をとる必要がある。図5は1つのサイクルにお
いて開始された処理が次のサイクルの開始時点までに完
了しなかった場合の説明図である。処理が完了し、出力
が確定するのは次のサイクルの途中であり、それまで次
の入力データの入力動作の開始は遅らされる。
【0064】このような制御は、状態遷移表の中の状態
語に格納されている制御語の内容によって、例えば図2
の演算・出力機構14が起動された後に演算・出力機構
14から出力される処理完了の有無を示す信号を検査す
ることによって実現できる。但し後述するように演算の
種類によっては、演算・出力機構による処理が実行され
ている状態で状態遷移を完了させ、次の状態に対応する
処理を開始することもできる。
【0065】ストリームデータは入力、出力共に外部の
クロック、例えばネットワークのクロックに同期して転
送されることが多い。この場合、有限状態機械はこのよ
うな入力・出力クロックの2倍以上の平均周波数で動作
する必要がある。これはシャノンの標本化定理による。
また演算の内容によっては図5で説明したように処理に
時間がかかる場合があり、この場合有限状態機械は処理
の完了を待つ必要があり、その間に新しいストリームデ
ータが到着しても処理を行うことができない。
【0066】図6はこのような処理速度の違いを吸収す
るための入出力同期の説明図である。同図に示すよう
に、有限状態機械10の入力側、および出力側にFIF
Oメモリを設けることによって、処理速度の違いを吸収
することができる。有限状態機械10は入力FIFOメ
モリ16が空の時には待機状態となり、新たなデータが
到着するまで動作を停止する。また出力FIFOメモリ
17が一杯になった場合には、そのメモリに空きができ
るまで有限状態機械10、例えばストリームプロセッサ
は処理を停止する。
【0067】続いて図2の有限状態機械の各構成要素の
動作について更に詳細に説明する。図7は入力変換機構
11の構成例の説明図である。同図において入力変換機
構11は入力データ、または演算・出力機構14から与
えられるデータを選択するためのセレクタ21、変換の
ために必要なパラメータを格納する複数のパラメータメ
モリ22a,22b,・・・、およびセレクタ21の出
力とパラメータメモリの格納内容を用いて入力データの
変換を実行する変換回路23から構成されている。
【0068】入力変換機構11は、メモリ12に格納さ
れている状態遷移表内の状態語の検索処理を効率化する
ために、入力データに含まれるメモリ検索用のデータ
を、例えばビット数の少ないメモリ検索値に変換する機
構である。例えばストリームプロセッサにおいて、一般
にストリームデータの形式は多種多様であり、例えば4
バイト入力のストリームデータによって状態遷移表を作
ると、その状態遷移表には232(4G)のエントリが必
要となる。このような巨大な状態遷移表をチップ内の高
速アクセス可能なメモリにおくのは困難であり、また実
際には全ての入力パターンが有効でないことが多いた
め、入力されたストリームデータからその状態に応じて
検索に必要なデータ、すなわち検索値への変換を行うこ
とによって、状態遷移表の検索処理が高速化される。
【0069】入力変換機構11は、入力データと共に演
算・出力機構14の出力を用いて、メモリの検索値を生
成する。演算・出力機構によって行われる演算として
は、入力データに対応してエンディアンやビット配置を
変換する演算,ハッシュ方式によってデータを検索する
ためのハッシュ値を計算するハッシュ演算などがある。
また演算に相当してテーブル、例えばルックアップテー
ブル(LUT)を用いることもできる。このようなテー
ブルは本質的にメモリ12に格納されている状態遷移表
と同様のものであるが、状態遷移表とは独立にテーブル
を設けることによって処理がパイプライン化され、スル
ープットを向上させる効果がある。
【0070】図8は入力変換機構によるビット配置変換
演算としてのマスクアンドギャザー(MAG)処理の説
明図である。この処理においては、入力データから任意
のビットや領域が抽出され、あらかじめ定められた方法
によってメモリの検索値が作成される。すなわち入力デ
ータに対してMAGパターンが指定され、MAG処理を
行うことによってLSB側に集約されたメモリ検索値が
処理結果として得られている。処理結果はMSB側に集
約してもよく、どちらに集約するかを指定可能としても
よい。更に集約する位置を1ワードの端ではなく、途中
にすることも可能である。このように処理結果をあるビ
ット数にまとめることによって、状態遷移表としてのテ
ーブルあたりのエントリの数が一定でない場合にも検索
を高速化することのできる検索値を作成することができ
る。
【0071】次に状態遷移表(テーブル)について説明
する。図9は状態遷移表の基本構造の例である。図2の
メモリ12の内部には一般に複数個の状態に対応する複
数の状態遷移表が格納される。状態遷移表はある状態を
定義するテーブルであり、その状態で定義される入力に
対応する個数のテーブルエントリ(状態語)から構成さ
れ、この状態語によって特定の入力データに対応する状
態遷移と、その入力データに対する処理の内容が定義さ
れる。 1つの状態語、すなわちエントリは1個、また
は複数の領域からなる。領域としては、タグ、入力、状
態遷移、制御語、出力の5つが考えられる。タグはその
状態語の種類や構成を示す識別子であり、入力はその状
態語を選択するための検索データパターンである。この
検索データパターンとは入力変換機構11によって変換
されたメモリ検索値でもよく、また入力データのうちの
メモリアクセスのためのパターンそのものであってもよ
い。このようなパターンを1つの領域として状態語に格
納しておく理由は、一般的に比較によって入力データを
検索する場合があるためである。
【0072】状態遷移は状態遷移先、すなわち次の状態
遷移表の先頭アドレスであり、制御語は入力データに対
して行われるべき演算の内容などを示すものである。ま
た出力はハードウェアに対応する制御語、すなわち従来
のマイクロ命令と同様のもの、あるいは出力データその
ものを示すものなどである。
【0073】状態語はこの5つの領域を全て備えるとは
限らない。例えば1個の状態遷移表だけを備えた有限状
態機械においては、状態遷移先は不必要であり、状態語
に状態遷移の領域を定義する必要はない。また入力の検
査が不必要な場合には入力の領域も不要であり、同様に
制御語、出力の領域も不必要な場合があり、このような
場合にはメモリの節約のためにこのような領域が省略さ
れる。ただしタグは状態語を解読するために必ず必要な
領域である。
【0074】状態語の領域のうちでタグは状態語の種類
や構成を示す識別子であり、タグの内容に対応して状態
語の長さが設定されることになる。すなわちタグの内
容、例えば状態遷移の領域が含まれるか否かによって、
状態語の長さは可変となる。そこで状態遷移表を格納す
るメモリ12に対するアクセスは様々な語長で行えるこ
とが必要となり、メモリ12は様々なバスサイズでアク
セスできるものでなければならない。例えばメモリ空間
毎にあらかじめサイズを定義しておくことにより、状態
遷移表のアドレスによって、メモリ12に対するアクセ
スサイズを切り替えることが可能となる。
【0075】前述のように状態語の中でタグ領域は必ず
必要なものではあるが、状態語の長さに応じて状態語の
領域構成をあらかじめ決めておき、例えばメモリ空間毎
に格納されている状態語の長さを変えることによって、
アクセスされたメモリ空間によって状態語の領域構成が
判明するようにしておくことにすると状態語にタグ領域
を含める必要がなくなるため、状態語の情報量を削減す
ることができる。
【0076】更にバイトアクセス、例えば1バイトのア
ドレスによってアクセスされた状態語は必ずバイトデー
タを出力するものであるという定義を作っておけば、エ
ントリあたり1バイトの状態遷移表を用いてコード変換
処理を実現することができる。この場合、状態語にタグ
領域を含めるとすると、タグ領域と出力するバイトデー
タとが状態語の内容として必要となるため、エントリあ
たり1バイトではすまなくなる。
【0077】このようにタグ領域自体を不必要とするこ
ともできるが、またタグ領域を状態語に含めるのではな
く、タグを格納するタグレジスタを図2のメモリ12と
別に設け、そこにタグ領域の内容を格納することによっ
て状態語の領域構成を知ることも可能である。このよう
なタグレジスタを状態語の長さ毎に設けておき、その内
容を可変にすることによって状態語の領域構成を変更可
能とすることもできる。状態語の長さが異なることによ
って、状態語に含まれる領域構成が異なってくるため、
タグの内容も異なり、異なる長さの状態語に対応して複
数のタグレジスタが必要となる。
【0078】図2において状態遷移表は有限状態機械1
0の内部のメモリ12に格納されている。有限状態機械
の性能は状態遷移表のアクセスタイムに依存するため、
このアクセスは高速に実行されることが望ましい。しか
しながら複雑な有限状態機械では大きな状態遷移表が必
要となり、状態遷移表を一般に容量の大きい外部メモリ
に格納し、一部分を有限状態機械内部にキャッシュする
ことによって動作の高速化が図られる。
【0079】状態遷移表へのアクセスパターンは有限状
態機械によって行われる動作に依存するが、ある状態か
ら始まる状態遷移の可能性は過去の動作経験によってあ
らかじめある程度予測可能であり、この予測に基づいて
必要な状態遷移表の内容を事前にキャッシングすること
も可能である。更にこの事前キャッシングの動作を制御
語の内容として組み込むことによって、意図的なスケジ
ューリングも可能となる。
【0080】次に検索機構の動作について説明する。図
2の検索機構13は、入力変換機構11から与えられた
メモリ検索値を用いてメモリ12の内部の状態遷移表を
検索するものであり、この検索のための方法としては最
も単純な方法として、状態遷移表の先頭アドレスに、例
えば演算・出力機構14による演算結果、すなわち前述
のハッシュ値の計算結果などを加算することによって入
力データに対応するエントリ、すなわち状態語のアドレ
スを求めることができる。また例えば状態遷移表の先頭
アドレスを2の冪乗となるようにしておき、これをベー
スアドレス、検索値をオフセットアドレスとしてベース
アドレスとオフセットアドレスとの論理和をとる方法も
ある。
【0081】図10は検索機構の動作説明図である。同
図において現状態は現在の状態に対応する状態遷移表の
先頭アドレスを指しており、入力データ、または演算・
出力機構14の出力する演算結果が与えられることによ
って、例えば状態遷移表の先頭アドレスとの単純な加算
(入力合成)によって入力データに対応する状態語のエ
ントリを指すアドレスが求められ、その状態語の内部の
状態遷移が次の状態に対応する状態遷移表の先頭アドレ
ス、すなわち次状態を示す値として出力されると共に、
検索された状態語の内部に格納されている制御語などが
出力される。次の状態遷移表の先頭アドレス、次の入力
データに対する現状態の値として用いられる。
【0082】一般にメモリ検索の手法は多種多様であ
る。高速性を図るために連想メモリ(コンテントアドレ
ッサブルメモリ、CAM)などの手法や、検索のための
ハードウェアを用いる方法もあるが、本発明においては
どのようなメモリ検索方法を用いることもできる。
【0083】図11は状態遷移表の検索例の説明図であ
る。同図において最初の入力データに対応する状態遷移
表は24であり、また入力データ中に含まれるメモリ検
索用のデータXが8ビットであるとすると、状態遷移表
24は8ビットに対応する256 個のエントリを持つこと
になる。そしてその8ビットの内容が例えばそのまま状
態遷移表24の先頭アドレスに加算され、1つのエント
リ、すなわち状態語25が検索される。この状態語には
図9で説明したように状態遷移、すなわち次の状態遷移
表の先頭アドレスが格納されており、このアドレスによ
って第2の状態遷移表26が確定され、また制御語の内
容に対応して入力データに対する演算などの処理が実行
される。
【0084】次の入力データが与えられるとメモリ検索
用のデータ、例えばYに応じて前述と同様にして1つの
エントリ、すなわち状態語27が検索されて、入力デー
タに対して同様に処理が実行される。
【0085】なお図11では入力データのうちのメモリ
検索用のデータ、例えば8ビットがそのまま状態遷移表
の中の1つの状態語の検索に用いられるものとしたが、
前述のように入力変換機構11によって例えば4ビット
への変換を行うこによって、より少ないエントリ、例え
ば16個のエントリを持つ状態遷移表の検索が行われる。
【0086】ここで本実施形態におけるデータ処理と状
態遷移について具体例を用いて説明する。例えば3つの
データA,B、およびCを用いて(A・B)+Cの計算
を行うものとし、第1〜第3のサイクルにおいて入力デ
ータとしてA,B、およびCがこの順序で与えられるも
のとする。
【0087】第1のサイクルでは、入力データ内のメモ
リアクセス用のデータから入力変換機構11によって、
例えばビット数の少ないメモリ検索値が求められ、この
検索値を用いて第1の状態遷移表から状態語が読み出さ
れる。この状態語には入力データとしてのAを、例えば
データ処理装置内のレジスタに格納する動作が規定され
ており、入力データAは第1のサイクルにおいてレジス
タに格納されると共に、次のサイクル、すなわち第2サ
イクルで入力されるデータBとの積を求めるための第2
の状態遷移表の先頭アドレスが得られる。
【0088】第2のサイクルでは、一般的には入力デー
タのうちメモリアクセス用のデータが同様に検索値に変
換され、第2の状態遷移表の先頭アドレスと、例えば加
算されて状態語が読み出されることによって、レジスタ
に格納されているデータAと入力データBとの積が求め
られ、この結果がレジスタに再び格納される。但しこの
ような具体例では各サイクルで行う処理が確定されてお
り、実行順序も固定であるため、第2の状態遷移表の先
頭アドレスがそのまま読み出すべき状態語のアドレスと
して用いられる。
【0089】第2のサイクルでは、同時に次の第3サイ
クルで入力されるデータCとの加算を行うための状態語
が格納されている第3の状態遷移表の先頭アドレスが求
められる。そして第3のサイクルで第1、第2サイクル
と同様にして第3の状態遷移表の中の状態語が読み出さ
れ、レジスタに格納されている値A・Bと入力データC
との加算が行われることになる。
【0090】図2の各構成要素の説明に戻り、続いて演
算・出力機構14の動作について説明する。演算・出力
機構14は、状態遷移表に格納されている状態語の中の
制御語の領域の格納内容に従って、入力データに対する
演算を行ったり、演算結果を出力したりするものであ
る。演算・出力機構14を、例えばストリームプロセッ
サに備える理由は、純粋な有限状態機械だけでは実現で
きないような処理を実現したり、性能を高速化するため
である。例えば浮動小数点演算などはその最もよい例で
あるが、ストリーム処理を考慮すると、他にも様々な演
算・出力処理が考えられる。
【0091】演算・出力機構14としては、同時に複数
の演算回路を動作させることもできる。例えば入力デー
タの数をカウントしながら、エラー検出処理としてのサ
イクリックリダンダンシーチェック(CRC)計算を実
行し、同時に出力データを外部に転送するような並列的
な処理を実行することによって、ソフトウェアで逐次手
続き的な処理を行うよりも、処理の高速化を実現するこ
とができる。
【0092】図12は演算・出力機構の構成例のブロッ
ク図である。同図において演算・出力機構14は、複数
の演算機構30a,30b,...と、これらの演算機
構からの出力を選択して、有限状態機械10の出力とす
るための出力セレクタ31とから構成される。各演算機
構30a,30b,...、および出力セレクタ31の
制御は、状態語が格納されている状態語レジスタ32か
ら出力される制御データ(結合されていない矢印)によ
って行われる。各演算機構への入力としては、入力デー
タ、状態語レジスタ32から出力される状態語の内容と
しての例えば制御語、および各演算機構の内部に含まれ
る演算回路の出力などがある。このような構成、および
各部の接続は必要に応じて変更されるものであり、図1
2の構成に限定されるものでないことは当然である。
【0093】図12において各演算機構30a,30
b,...は、それぞれ入力セレクタ34、レジスタ3
5、および演算回路36から構成されている。レジスタ
35は演算に必要とされる複数の演算データを格納する
メモリであり、必要に応じて入力データ、出力データな
どを格納する。レジスタとしては単純なメモリの他に、
FIFOメモリ、カウンタ、アキュミュレータ、コンパ
レータ、シフタ、エンデアン変換、ビット配列変換、コ
ード変換などの機能を持つものを用いる場合がある。し
かしながら、これらの機能をレジスタによって実現する
か、演算回路として実現するかは実施上の問題である。
本発明として特に特定するものではない。
【0094】演算回路36はあらかじめ決められた演算
を行う回路であり、演算の種類は想定されるアプリケー
ションに依存する。例えば数値計算では整数演算、浮動
小数点演算、などの数値演算である。信号処理では積和
計算や、フーリエ変換などであり、通信処理ではCRC
計算、IPチェックサム計算などである。ここでIPチ
ェックサム計算とは、インターネットプロトコルヘッダ
のチェックサムの計算である。チェックサム計算では、
ヘッダが16ビットワードの並びとみなされ、それぞれ
の和が1の補数によって計算され、その結果の1の補数
をもってチェックサムとされる。
【0095】また演算の種類としての暗号処理ではDE
S演算、MD5演算などがある。ここでMD5演算は、
インターネットにおけるデータにセキュリティのために
データの証明をつけるものであり、ハッシュデータを利
用して送信データに対応して特殊な数式の計算によって
求められるコードをデータと一緒に送信し、受信側で同
じ手法で取り出されたハッシュデータと比較されること
によって、データのセキュリティを確保する方式であ
る。本発明では、演算回路によって行われる演算は特に
特定されず、どのようなタイプの演算も実現できるよう
な一般的な構成が用いられる。
【0096】図13はそのような一般的な演算回路の構
成例の説明図である。同図において、演算回路36は一
般に複数のレジスタ38a,38b,...、および論
理回路39によって構成されている。演算回路36への
制御入力は、図12における状態語レジスタ32から直
接に与えられ、出力はレジスタ35に格納される。また
演算結果出力は、例えば図2で説明した入力変換機構1
1に与えられるデータであり、入力データからメモリ検
索値への変換に必要な、例えばハッシュ値である。
【0097】演算回路の制御は、マイクロプログラム方
式と同様に、制御語の内容によって行われる。従って複
数の演算を同時に制御できるような制御語を用いる場合
には、1個の入力データに対して複数の処理を同時に実
行することができる。図14はそのような複数の処理を
同時に実行する演算回路としてのカウンタ回路の例であ
る。
【0098】同図において演算回路は複数のカウンタ4
0a,40b,...、およびセレクタ41から構成さ
れている。各カウンタは制御語の内容に対応して、入力
データによってプリセットされたり、カウント動作を行
ったり、任意のカウント値をセレクタ41を介して出力
したりすることができる。制御語の内容を適切に構成す
ることによって、複数のカウンタの同時制御が実行され
る。
【0099】FIFOメモリも演算回路の一種として使
用することができる。例えばインターネットプロトコル
バージョン4,IPv4のパケットをIPv6のパケッ
トの中に埋め込んで通信を行うためのパケットカプセリ
ングや、エラーコードチェックなどの処理ではパケッ
ト、例えばストリームデータを全部チェックしないと結
果を出力できない場合があり、このような場合に入力ス
トリームデータを外部に出力するまでの間、1パケット
分のデータを保存しておく必要がある。そこでFIFO
メモリがバッファメモリとして用意され、出力可能とな
るまで1パケット分のデータが一時的に保存される。図
15はそのようなバッファメモリの構成を示し、複数の
FIFOメモリ42a,42b,...、およびセレク
タ43によって構成されている。
【0100】演算回路、例えば論理回路をテーブル、例
えばルックアップテーブル(LUT)によって実現する
方法は広く知られている。このようなテーブルは、本発
明における状態遷移表と同様の演算テーブルとして実現
することが可能である。この場合、状態語はタグと出力
とからなるものと考えられ、また入力データは演算対象
データである。
【0101】このような場合、演算回路専用のハードウ
ェアで実現するか、テーブルを用いて実現するかは発明
の実施方法や目的に依存する。目的によっては、例えば
通信処理に用いられるルーティングテーブルのように非
常に大きなテーブルを必要とする場合がある。このよう
な場合には、演算回路として大きなテーブルを検索する
機構を設けることが必要となる。
【0102】図16はそのようなテーブル検索機構の構
成例の説明図である。このテーブルの検索方法は、図1
0で説明した状態遷移表の検索方法とほぼ同様であり、
外部メモリ上の1つのテーブルの先頭アドレスを指す現
アドレスと、入力データに対応するメモリ検索値との、
例えば加算によって、テーブル内の1つのエントリが検
索され、また必要に応じて次のテーブルの先頭アドレス
(次アドレス)を求めることもできる。
【0103】前述のように、有限状態機械においては、
ある状態に対応して開始された演算が終了するまでは次
の状態への状態遷移は行われないのが原則であり、演算
回路の処理時間は有限状態機械の性能に大きな影響を与
える。しかしながら処理内容によっては、演算回路の処
理結果を直ちに必要としない場合があり、このような場
合は演算が完了しなくても、次の状態に遷移する方が効
率的である。
【0104】例えば暗号処理において、入力ストリーム
データに対してDES処理を行って結果を出力するよう
な場合においては、有限状態機械の内部でのその結果を
利用するわけではないため、連続するサイクルにおいて
DES演算の対象となる入力データを次々と与えて演算
を実行すればよい。但しこの場合は、DES演算は複数
の連続するデータに対して行われることになり、DES
演算の次の状態は同じDES演算である。
【0105】図17は、このようにDES演算を行うた
めに、データ入力部にFIFOメモリを設けたDES演
算回路の構成ブロック図である。同図においてDES演
算回路は、入力データを書き込むためのFIFOメモリ
45、DESキーを格納するレジスタ46、DESモー
ドを格納するレジスタ47、DESコア演算部48、お
よび出力側のFIFOメモリ49から構成されている。
入力側のFIFOメモリ45は、このメモリに空きがあ
る限り入力データを待ち時間なく書き込むためのもので
あり、また出力側のFIFOメモリ49は、このメモリ
にデータが格納されたことを検出して、有限状態機械が
データの出力を行うためのものである。このような演算
回路の構成はDESに限らず、処理スループットが一定
ではないが、平均的には入力ストリームデータの速度と
同程度か、あるいは速い場合に、有限状態機械のスルー
プットを低下させない効果がある。
【0106】また演算回路の例として、パターンメモリ
を用いたパターン処理回路がある。例えば通信パケット
のヘッダ部分はいくつかの領域で構成されており、それ
らの値は相互に関連性を持っている。図18はIPv4
パケットのヘッダ部分を示す。同図においてディスティ
ネーションアドレスまでの部分がヘッダ部分である。本
発明の有限状態機械では、このように例えばインターネ
ットプロトコルのように広く用いられ、形式が確定して
いるようなデータのデータ構造の解析を、パターン処理
回路によって実行することができる。
【0107】図19はそのようなパターン処理回路の構
成例のブロック図である。同図においてパターン処理回
路は、複数のレジスタ50a,50b,...、および
パターン処理部51によって構成されている。パターン
処理回路は確定したデータ構造のデータに対する処理を
行うものであり、入力データを例えば分割して複数のレ
ジスタに逐次格納した後に、入力データが想定されてい
るデータのデータ構造に一致するかを検査したり、デー
タ構造の中の特定の領域の内容を変更したりすることが
できる。パターン処理部51の構成は目的に依存する
が、基本的には論理回路によって実現できる。
【0108】パターン処理回路の変形例としてプロファ
イル作成回路、すなわちプロファイラがある。プロファ
イラは一連のストリームデータの特徴を表わす情報とし
てのプロファイルを作成するものである。例えば図18
で示したように、IPv4パケットのヘッダは複数の語
から構成されるデータ構造を持っており、全ての領域を
調べることによってIPv4パケットであることが認識
できる。そして一度データ構造をチェックした後では、
あらかじめ定義されたIPv4を示す、例えば1バイト
のコードをプロファイルとして付与することにより、そ
の後はそのコードによってデータ構造の識別が可能とな
る。
【0109】このようなプロファイル処理は、一般的な
有限状態機械としての順序回路を用いて実現することも
可能であるが、例えばIPv4パケットのように頻繁に
使われるデータ構造についてはあらかじめ専用の演算回
路を用意しておくことによって、高速な処理が可能とな
る。
【0110】演算・出力機構の内部には、例えば図8で
説明したようなMAG処理部を備えることも可能であ
る。入力変換機構の内部のMAG処理部は、状態遷移表
が格納されたメモリを検索するためのメモリ検索値を求
めるために使用されるが、演算・出力機構では図16で
説明したように、例えば論理回路の代わりにLUTが用
いられることがあり、このようなテーブルに対するアク
セスを行うために、演算処理の段階でビット数の少ない
検索値を使用することによって、テーブルへのアクセス
を高速化することができ、このような場合にMAG処理
は有効である。
【0111】次に複雑な処理を実現するための有限状態
機械の直列、または並列処理について説明する。例えば
パケット処理は一般に複雑な処理である。例えばIPチ
ェックサム計算は、IPヘッダの内容を確定した後に計
算する必要があり、例えば前述のパケットカプセリング
においては、IPヘッダの内容を変更しながら、同時に
IPチェックサムの計算を行う必要がある。このような
場合には、作業用レジスタを中間的に使用して、複数の
サイクルを用いて必要な処理を実現することもできる
が、このような処理では遅延の増加、スループットの低
下を招くことになる。
【0112】このような複雑な処理を効率的に行うため
の1つの解決策が、有限状態機械を直列に接続して、パ
イプライン構成を用いることである。図20はそのよう
なパイプライン構成の説明図である。同図においては複
数の有限状態機械53a,53b,...が、それぞれ
FIFOメモリ54a,54b,...を介して直列に
接続されている。前述のパケット処理では、第1段目の
有限状態機械53aによってIPヘッダの変換が行わ
れ、第2段目の機械53bによってIPチェックサム計
算が行われる。各有限状態機械は全く独立に動作するた
め、機械的に有限状態機械を直列に接続することもでき
る。ハードウェアの容量が許すならば、このように有限
状態機械のパイプライン構成をとることが望ましい。
【0113】次に有限状態機械を複数個並列に動作させ
ることによって、データ処理能力を向上させることがで
きる。図21はこのような並列構成の例を示す。この例
では、複数個の有限状態機械53a,53b,...が
全て同じ処理速度で同期して動作するものとし、そのた
め並列に接続された有限状態機械の入力側にFIFOメ
モリ55a、出力側にFIFOメモリ55bがそれぞれ
1個だけ備えられる。
【0114】また複数の並列接続有限状態機械のうち
で、データ処理速度が異なるものが一部存在するような
場合には、処理の同期をとるために相互に信号をやり取
りする必要がある。また有限状態機械の間での動作の同
期を実現するために、一部の有限状態機械の入力側、ま
たは出力側にFIFOメモリを備えて、例えば処理時間
の異なる演算機構の間での動作の同期をとるのと同様の
動作を行わせる必要がある。
【0115】更に並列に動作する有限状態機械の処理速
度が、個々の有限状態機械毎にまちまちの場合には、個
々の有限状態機械の入力側、および出力側にそれぞれF
IFOメモリを設ける必要がある。このような並列構成
を図22に示す。同図においては入力データの読み込み
と、データ出力とを処理の同期をとるために制御する必
要があるが、この制御も前述と同様に動作時間の異なる
演算機構の間での演算処理を同期させるのと同じ方法を
用いて実現できる。
【0116】前述のように直列接続、または並列接続さ
れた複数の有限状態機械を備えるシステムでは、有限状
態機械の間で動作の同期をとる必要がある。図23はそ
のための同期回路を持つ有限状態機械の並列構成の例を
示す。同図においてシステム構成自体は図21と同様で
あるが、複数の有限状態機械53a,53b,...の
間で処理の同期をとるために、各有限状態機械の処理状
態が同期回路に集められ、その出力を各有限状態機械へ
の入力として与えることによって、各有限状態機械が他
の有限状態機械と同期して処理を行うことができる。
【0117】次に多重ストリームデータの処理について
説明する。例えば計算機バスのように、複数のデータの
転送を共有バスを用いて行うような場合には、複数の互
いに独立なストリームデータが多重化されて転送される
ことが多い。そこで本発明のストリームプロセッサにこ
のようなデータを処理させる場合には、多重化されたス
トリームデータを独立なデータに分類する機能が必要で
ある。そのような分別機能を用いることによって、複数
の互いに独立なストリームデータが多重化されて転送さ
れる場合に、そのストリームデータを分類して互いに独
立なストリームデータに分割した後に、例えば図22で
説明した並列に接続された各有限状態機械にそれぞれ入
力させることによって、多重化されたストリームデータ
の処理を実行することができる。
【0118】また例えば計算機バスのアドレス空間があ
らかじめ複数の領域に分割され、複数の互いに独立なス
トリームデータがその複数の領域を用いて転送されるよ
うな、アドレス付きで計算機バス内のアドレス空間を多
重化されてストリームデータが転送される場合には、転
送されるデータのアドレスがその複数の領域のどの領域
に属するかによって、互いに独立なストリームデータの
分類を行うことができる。
【0119】最後に本発明の有限状態機械、例えばスト
リームプロセッサの具体的な応用例について説明する。
第1の応用例としてのアスキー(ACSII)コード変
換処理を図24に示す。この例では入力ストリームのバ
イトデータがアスキーコードとして扱われ、大文字が小
文字に変換されるものとする。この場合ストリームプロ
セッサは大文字を小文字に変換するアスキーコード変換
表60を備えており、入力される1文字毎にその変換表
が検索されて、結果が出力される。アスキーコードは7
ビットであり、変換表60の大きさは128 エントリであ
る。
【0120】図25はこの例における状態遷移のステー
トマシンを示す。アスキーコード変換ステートマシンは
状態を1つだけ持ち、入力と出力がそれぞれアスキーコ
ードであるような有限状態機械である。アスキーコード
変換表は1つの状態を表し、変換表の各々のエントリが
入力文字に対応するステートマシンの動作を示す。この
ようなステートマシンは、単純なLUTを用いて、処理
内容を変更可能なものとして構成可能である。ストリー
ムプロセッサにおいては、アスキーコード変換表を1個
の状態遷移表として備えることになる。この状態遷移
表、すなわちLUTは128 エントリであり、出力は7ビ
ットのアスキーコードである。状態が1個なので、状態
遷移は行われない。ストリームプロセッサの処理性能は
基本的にLUTのアクセス性能に依存する。LUTは小
規模、かつ高速なメモリによって構成することができ
る。
【0121】次に第2の応用例として、パケットのラベ
リングについて説明する。パケットラベリングは、コー
ド変換より若干複雑な処理であり、入力されるパケット
の内容を解析し、その結果に基づいてラベルの内容を決
定し、そのラベルをパケットの先頭に付け加えて出力す
ることであり、タギングということもある。当然その逆
変換処理として、ラベルやヘッダの一部、または全部を
削除する処理もあるが、ここではこれらをまとめてパケ
ットラベリング処理と呼ぶ。パケットラベリングは、ほ
とんど全てのパケット通信処理において必要不可欠な機
能である。
【0122】図26は、パケットラベリング処理の説明
図である。この処理では、ヘッダの内容を解析する時間
と、新しいデータとしてのラベルを生成し、入力パケッ
トの先頭に挿入するための時間を作る必要がある。ここ
でヘッダの内容を解析するには、一般に入力パケットの
転送レートよりも長い時間が必要である。このため図2
6の解析/ラベル生成処理部70においては、テーブル
検索機構などを用いて、解析とラベルの生成を行い、そ
の間は入力パケットはFIFOメモリ71に格納され、
ラベル生成が終了するとラベルが出力され、その後に引
き続いてFIFOメモリ71に格納されている入力パケ
ットを出力して、全体としての出力パケットを得るよう
な動作が実行される。
【0123】このようなパケットラベリングは、パケッ
ト通信処理における基本的な機能を全て含むものであ
る。例えばインターネットプロトコルにおけるパケット
のルーティングでは、パケットのヘッダが解析され、T
TL領域が書き換えられて、次の転送先アドレスがラベ
ルに書き込まれ、パケットの転送が行われる。
【0124】ここでTTL領域はタイムツーライブ(生
存時間)であり、パケットの送信側で、パケットが受信
側で受信できるまでの時間を予測して、TTLの設定が
行われる。途中ゲートウェイのIPモジュールでは、処
理に費やした時間をこの値から減らし、パケットを転送
する。処理時間を計測することができない場合でも、少
なくともTTLの値から1だけ減算する。途中のIPモ
ジュールにおいてTTLの値が0となったパケットが検
出された時には、そのパケットは廃棄される。
【0125】更に複雑なパケットラベリングの例として
は、セキュリティアーキテクチャフォーインターネット
プロトコルIPSecがある。例えばデータをカプセル
化してトンネリングする手法を規定するESP(エンカ
プシュレーテッドセキュリティペイロード)では、入力
ヘッダの一部を書き換えると共に、それを暗号化/復号
化したうえで新しいヘッダ(ラベル)を付け加えたり、
逆変換したりする。当然ヘッダの書き換えによってIP
チェックサムの変更も必要となる。このような複雑な処
理を実現するためには、図26で示したように単純なF
IFOメモリを用いるだけでは不充分であり、複数のス
トリームプロセッサがパイプライン方式で動作するよう
な構造も必要となる。
【0126】
【発明の効果】以上詳細に説明したように、本発明によ
れば有限状態機械、例えばストリームプロセッサを状態
遷移規則を格納したメモリを備える形式で構成すること
ができ、またこのメモリの格納内容を変更することによ
って有限状態機械の動作を変更することが可能となる。
そしてFIFOメモリ、レジスタ、各種演算回路を用い
ることによって、多様な処理を実現することが可能とな
り、汎用のプロセッサとしての使用が可能である。
【0127】次に本発明によれば、状態遷移表の1つの
状態語のアクセスによって、データ入力、解析、状態遷
移、複数の演算の実行、およびデータ出力が可能とな
り、処理の速度は状態遷移表のアクセス性能によって規
定される。最近のVLSIテクノロジを用いれば、100M
Hz以上の処理性能を実現することができ、ソフトウェア
と高価な高速プロセッサとを用いる場合に比較して、低
コストで、高速な処理を実現することができ、データ処
理装置の基本的な性能向上に寄与するところが大きい。
【図面の簡単な説明】
【図1】本発明の原理構成ブロック図である。
【図2】本発明における有限状態機械の基本構成を示す
ブロック図である。
【図3】ストリームデータを処理する有限状態機械の説
明図である。
【図4】有限状態機械の実行サイクルを説明する図であ
る。
【図5】有限状態機械内部での処理の同期を説明する図
である。
【図6】有限状態機械とデータ入出力との同期を説明す
る図である。
【図7】入力変換機構の構成例を示す図である。
【図8】入力変換処理としてのマスクアンドギャザー機
能を説明する図である。
【図9】状態遷移表の基本構造を説明する図である。
【図10】検索機構の動作を説明する図である。
【図11】状態遷移表の検索例を説明する図である。
【図12】演算・出力機構の構成例を示す図である。
【図13】一般的な演算回路の構成例を示す図である。
【図14】演算回路としてのカウンタ回路の構成例を示
す図である。
【図15】演算回路としてのバッファメモリの構成例を
示す図である。
【図16】演算回路としてのテーブル検索機構の動作を
説明する図である。
【図17】データ入力部にFIFOメモリを設けたDE
S演算回路の構成例を示す図である。
【図18】IPv4パケットのヘッダ部分を示す図であ
る。
【図19】演算回路としてのパターン処理回路の構成例
を示す図である。
【図20】有限状態機械が直列に接続されたパイプライ
ン構成を説明する図である。
【図21】複数の有限状態機械が並列に接続されたシス
テムの構成例を示す図である。
【図22】入力側、および出力側にFIFOメモリがそ
れぞれ接続された有限状態機械の並列構成を示す図であ
る。
【図23】複数の有限状態機械の間での動作の同期をと
るための同期回路を持つシステムの構成例を示す図であ
る。
【図24】有限状態機械の第1の応用例としてのアスキ
ーコード変換処理の説明図である。
【図25】アスキーコード変換処理における状態遷移の
ステートマシンを説明する図である。
【図26】有限状態機械の第2の応用例としてのパケッ
トラベリングを説明する図である。
【図27】ストアードプログラム方式の計算機における
ストリームデータ処理の説明図である。
【符号の説明】
1 テーブルを用いたデータ処理装置 2 入力変換手段 3 メモリ検索手段 4 メモリ(状態遷移表) 5 演算手段 10 有限状態機械 11 入力変換機構 12 メモリ(状態遷移表) 13 検索機構 14 演算・出力機構 16 入力FIFOメモリ 17 出力FIFOメモリ

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 入力されるデータをメモリ検索用データ
    に変換する入力変換手段と、 該メモリ検索用データを用いてメモリを検索し、入力デ
    ータに対して行われるべき処理の状態に対応して、該処
    理の内容を含むデータとしての状態語が1つのエントリ
    に格納されている状態遷移テーブル内の状態語を読み出
    すメモリ検索手段と、 該読み出された状態語の内容に応じて、次の入力データ
    に対応して行われるべき処理の状態に対応する状態遷移
    テーブルへのアクセス情報を得ると同時に、該状態語の
    内容に応じた演算を入力されたデータに対して実行する
    演算手段とを備えることを特徴とするテーブルを用いた
    データ処理装置。
  2. 【請求項2】 前記メモリ内の状態遷移テーブルの内容
    をデータ処理前、あるいは処理中に変更する状態遷移テ
    ーブル書き換え手段をさらに備えることを特徴とする請
    求項1記載のテーブルを用いたデータ処理装置。
  3. 【請求項3】 前記状態語が、該状態語に対応する入力
    に関するデータを格納する領域、前記状態遷移先へのア
    クセス情報を格納する領域、前記演算の内容を格納する
    領域、演算結果の出力に関するデータを格納する領域、
    および該状態語にこれらの4つの領域のいずれが含まれ
    るかを示すタグ領域のうちで少なくとも該4つの領域の
    中の1つ以上の領域を含み、1つ以上の領域を備えるこ
    とを特徴とする請求項1記載のテーブルを用いたデータ
    処理装置。
  4. 【請求項4】 前記状態語が前記タグ領域を必ず備える
    ことを特徴とする請求項3記載のテーブルを用いたデー
    タ処理装置。
  5. 【請求項5】 前記状態語が、前記4つの領域のうちで
    いずれの領域が備えられるかによって、それぞれ一定の
    長さを、持つことを特徴とする請求項3記載のテーブル
    を用いたデータ処理装置。
  6. 【請求項6】 前記状態語が備える1つ以上の領域の種
    類によって決定される状態語の領域構成毎にそれぞれ対
    応する前記タグを格納する複数のタグレジスタを更に備
    え、 前記メモリ検索手段が状態後のアクセスに際して、該状
    態語のタグがどのタグレジスタに格納されているかによ
    って該状態語の領域構成を認識することを特徴とする請
    求項3記載のテーブルを用いたデータ処理装置。
  7. 【請求項7】 前記入力変換手段が、前記入力されるデ
    ータを、前記状態語を読み出すためのメモリ検索用デー
    タであって、該入力されるデータよりビット数の少ない
    メモリ検索用データに変換することを特徴とする請求項
    1記載のテーブルを用いたデータ処理装置。
  8. 【請求項8】 前記入力変換手段が、前記入力されるデ
    ータ内で任意の位置にある複数のビットを抽出し、該入
    力データに対応するビット配置上で任意の連続した位置
    に抽出されたビットをまとめるマスクアンドギャザー処
    理を実行することを特徴とする請求項7記載のテーブル
    を用いたデータ処理装置。
  9. 【請求項9】 前記メモリ検索手段が、前記入力変換手
    段の出力と前記メモリのベースアドレスとを合成して前
    記読み出すべき状態語のアドレスを求めると共に、該ア
    ドレスに格納されている状態語にメモリアドレスが含ま
    れている時、該メモリアドレスを次に行うべきメモリ検
    索におけるメモリベースアドレスとして使用することを
    特徴とする請求項1記載のテーブルを用いたデータ処理
    装置。
  10. 【請求項10】 前記演算手段が、 演算に必要なデータを格納するレジスタ手段と、 該レジスタ手段に格納されているデータと前記入力され
    たデータとを用いて演算を実行する演算処理手段として
    備えることを特徴とする請求項1記載のテーブルを用い
    たデータ処理装置。
  11. 【請求項11】 前記演算処理手段が、前記入力された
    データを演算処理する間は演算結果の出力を遅延させる
    ためのFIFOメモリ手段を更に備えることを特徴とす
    る請求項10記載のテーブルを用いたデータ処理装置。
  12. 【請求項12】 前記演算手段が、入力データに対応す
    る演算の結果を格納するテーブルを更に備え、 前記演算処理手段が入力データに対応して該テーブルを
    検索し、演算結果を出力することを特徴とする請求項1
    0記載のテーブルを用いたデータ処理装置。
  13. 【請求項13】 前記演算手段が、 前記入力されたデータを一時的に格納する入力FIFO
    メモリ手段と、 前記演算処理手段の演算結果を一時的に格納する出力F
    IFOメモリ手段とを更に備えることを特徴とする請求
    項10記載のテーブルを用いたデータ処理装置。
  14. 【請求項14】 前記演算処理手段が、入力されたデー
    タのデータ構造に対応する複数の領域を有するレジスタ
    手段を備え、 入力されたデータのデータ構造に対応して該入力された
    データを分割して該複数の領域に格納し、該格納結果に
    対応して該格納されたデータの全部、または一部に対し
    て所定の処理を実行することを特徴とする請求項10記
    載のテーブルを用いたデータ処理装置。
  15. 【請求項15】 前記所定の処理が、前記格納されたデ
    ータがあらかじめ定められたデータ構造のパターンに一
    致するか否かを判定する処理であることを特徴とする請
    求項14記載のテーブルを用いたデータ処理装置。
  16. 【請求項16】 前記所定の処理が、前記複数の領域の
    うちの1つ以上の領域の格納内容を抽出し、該抽出され
    たデータをあらかじめ定められた形式のデータとしてま
    とめ、入力されたデータの特徴を示す情報を求める処理
    であることを特徴とする請求項14記載のテーブルを用
    いたデータ処理装置。
  17. 【請求項17】 前記演算手段が、前記入力されたデー
    タを、演算処理に必要なデータを格納しているメモリを
    検索するためのデータであって、該入力されたデータよ
    りビット数の少ないメモリ検索用データに変換する演算
    処理用データ格納メモリ検索データ作成手段を更に備え
    ることを特徴とする請求項10記載のテーブルを用いた
    データ処理装置。
  18. 【請求項18】 前記演算処理用データ格納メモリ検索
    データ作成手段が、前記入力されたデータ内で任意の位
    置にある複数のビットを抽出し、該入力データに対応す
    るビット配置上で任意の連続した位置にまとめるマスク
    アンドギャザー処理を実行することを特徴とする請求項
    17記載のテーブルを用いたデータ処理装置。
  19. 【請求項19】 直接、あるいはバッファメモリを介し
    て順次直列に接続された複数のデータ処理装置から構成
    されるデータ処理システムにおいて、 該複数のデータ処理装置のそれぞれが入力されるデータ
    をメモリ検索用データに変換する入力変換手段と、 該メモリ検索用データを用いてメモリを検索し、入力デ
    ータに対して行われるべき処理の状態に対応して、該処
    理の内容を含むデータとしての状態語が1つのエントリ
    に格納されている状態遷移テーブル内の状態語を読み出
    すメモリ検索手段と、 該読み出された状態語の内容に応じて、次の入力データ
    に対応して行われるべき処理の状態に対応する状態遷移
    テーブルへのアクセス情報を得ると同時に、該状態語の
    内容に応じた演算を入力されたデータに対して実行する
    演算手段とを備えることを特徴とするテーブルを用いた
    データ処理システム。
  20. 【請求項20】 前記データ処理システムにおいて、 前記複数のデータ処理装置の一部、または全部のデータ
    処理装置からの処理状態表示信号を受けて、複数のデー
    タ処理装置間の処理を同期させるための信号を該一部、
    または全部のデータ処理装置に与える処理同期手段を更
    に備えることを特徴とする請求項19記載のテーブルを
    用いたデータ処理システム。
  21. 【請求項21】 入力データが直接、あるいはバッファ
    メモリを介してそれぞれ与えられ、並列に接続された複
    数のデータ処理装置によって構成されるデータ処理装置
    システムにおいて、 該複数のデータ処理装置のそれぞれが、入力されるデー
    タをメモリ検索用データに変換する入力変換手段と、 該メモリ検索用データを用いてメモリを検索し、入力デ
    ータに対して行われるべき処理の状態に対応して、該処
    理の内容を含むデータとしての状態語が1つのエントリ
    に格納されている状態遷移テーブル内の状態語を読み出
    すメモリ検索手段と、 該読み出された状態語の内容に応じて、次の入力データ
    に対応して行われるべき処理の状態に対応する状態遷移
    テーブルへのアクセス情報を得ると同時に、該状態語の
    内容に応じた演算を入力されたデータに対して実行する
    演算手段とを備えることを特徴とするテーブルを用いた
    データ処理システム。
  22. 【請求項22】 前記データ処理システムに対して複数
    のデータが多重化されて入力データとして与えられる
    時、該入力データをあらかじめ規定された方法で分離
    し、前記複数のデータ処理装置の中であらかじめ定めら
    れた2つ以上のデータ処理装置に入力させる多重化入力
    データ分離手段を更に備えることを特徴とする請求項2
    1記載のテーブルを用いたデータ処理システム。
  23. 【請求項23】 前記データ処理システムに対して複数
    のデータがアドレスによって領域分割されたバスを介し
    て多重化されて入力される時、入力されるデータが経由
    してきたバス内の領域のアドレスに対応して該多重化さ
    れた入力データをあらかじめ規定された方法で分離し、
    前記複数のデータ処理装置の中であらかじめ定められた
    2つ以上のデータ処理装置に入力させる多重化入力デー
    タ分離手段を更に備えることを特徴とす請求項21記載
    のテーブルを用いたデータ処理システム。
  24. 【請求項24】 入力されるデータをメモリ検索用のデ
    ータに変換する入力変換手段と、 該メモリ検索用データを用いてメモリを検索し、入力デ
    ータに対して行われるべき処理に対応して、該処理の内
    容を含むデータが1つのエントリに格納されているテー
    ブル内のデータを読み出すメモリ検索手段と、 該読み出されたデータの内容に対応して、次の入力デー
    タに対して行われるべき処理に対応するテーブルへのア
    クセス情報を得ると同時に、該読み出されたデータの内
    容に応じた演算を入力されたデータに対して実行する演
    算手段とを備えることを特徴とするテーブルを用いたデ
    ータ処理装置。
  25. 【請求項25】 入力されるデータをメモリ検索用デー
    タに変換する入力変換手段と、 該メモリ検索用データを用いてメモリ内のテーブルに格
    納されているデータを読み出すメモリ検索手段と、 該読み出されたデータに対応して、入力データに対する
    演算を実行する演算手段とを備えることを特徴とするテ
    ーブルを用いたデータ処理装置。
  26. 【請求項26】 入力されるデータを用いてメモリを検
    索し、入力データに対して行われるべき処理の状態に対
    応して、該処理の内容を含むデータとしての状態語が1
    つのエントリに格納されている状態遷移テーブル内の状
    態語を読み出すメモリ検索手段と、 該読み出された状態語の内容に応じて、次の入力データ
    に対応して行われるべき処理の状態に対応する状態遷移
    テーブルへのアクセス情報を得ると同時に、該状態語の
    内容に応じた演算を入力されたデータに対して実行する
    演算手段とを備えることを特徴とするテーブルを用いた
    データ処理装置。
  27. 【請求項27】 入力されるデータをメモリ検索用デー
    タに変換し、 該メモリ検索用データを用いてメモリを検索し、入力デ
    ータに対して行われるべき処理の状態に対応して、該処
    理の内容を含むデータとしての状態語が1つのエントリ
    に格納されている状態遷移テーブル内の状態語を読み出
    してメモリ検索し、 該読み出された状態語の内容に応じて、次の入力データ
    に対応して行われるべき処理の状態に対応する状態遷移
    テーブルへのアクセス情報を得ると同時に、該状態語の
    内容に応じた演算を入力されたデータに対して実行する
    ことを特徴とするテーブルを用いたデータ処理方法。
  28. 【請求項28】 入力されるデータをメモリ検索用のデ
    ータに変換し、 該メモリ検索用データを用いてメモリを検索し、入力デ
    ータに対して行われるべき処理に対応して、該処理の内
    容を含むデータが1つのエントリに格納されているテー
    ブル内のデータを読み出してメモリ検索し、 該読み出されたデータの内容に対応して、次の入力デー
    タに対して行われるべき処理に対応するテーブルへのア
    クセス情報を得ると同時に、該読み出されたデータの内
    容に応じた演算を入力されたデータに対して実行するこ
    とを特徴とするテーブルを用いたデータ処理方法。
  29. 【請求項29】 入力されるデータをメモリ検索用デー
    タに変換し、 該メモリ検索用データを用いてメモリ内のテーブルに格
    納されているデータを読み出してメモリ検索し、 該読み出されたデータに対応して、入力データに対する
    演算を実行することを特徴とするテーブルを用いたデー
    タ処理方法。
  30. 【請求項30】 入力されるデータを用いてメモリを検
    索し、入力データに対して行われるべき処理の状態に対
    応して、該処理の内容を含むデータとしての状態語が1
    つのエントリに格納されている状態遷移テーブル内の状
    態語を読み出してメモリ検索し、 該読み出された状態語の内容に応じて、次の入力データ
    に対応して行われるべき処理の状態に対応する状態遷移
    テーブルへのアクセス情報を得ると同時に、該状態語の
    内容に応じた演算を入力されたデータに対して実行する
    ことを特徴とするテーブルを用いたデータ処理方法。
JP2000036874A 2000-02-15 2000-02-15 テーブルを用いたデータ処理装置および処理システム Expired - Fee Related JP4558879B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2000036874A JP4558879B2 (ja) 2000-02-15 2000-02-15 テーブルを用いたデータ処理装置および処理システム
US09/782,285 US6742107B2 (en) 2000-02-15 2001-02-14 Dynamically configured processing of composite stream input data using next conversion determining state transition table searched by converted input data
DE60124161T DE60124161T2 (de) 2000-02-15 2001-02-15 Datenverarbeitungsvorrichtung, -system und -verfahren benützend eine Zustandstransitiontabelle
EP01301333A EP1126367B1 (en) 2000-02-15 2001-02-15 Data processing device, system and method using a state transition table

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000036874A JP4558879B2 (ja) 2000-02-15 2000-02-15 テーブルを用いたデータ処理装置および処理システム

Publications (2)

Publication Number Publication Date
JP2001229172A true JP2001229172A (ja) 2001-08-24
JP4558879B2 JP4558879B2 (ja) 2010-10-06

Family

ID=18560849

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000036874A Expired - Fee Related JP4558879B2 (ja) 2000-02-15 2000-02-15 テーブルを用いたデータ処理装置および処理システム

Country Status (4)

Country Link
US (1) US6742107B2 (ja)
EP (1) EP1126367B1 (ja)
JP (1) JP4558879B2 (ja)
DE (1) DE60124161T2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006074780A (ja) * 2004-09-02 2006-03-16 Internatl Business Mach Corp <Ibm> 待ち時間の少ないデータ暗号解除インターフェース
JP2007522571A (ja) * 2004-02-13 2007-08-09 シーメンス アクチエンゲゼルシヤフト 任意のアルゴリズムを並列計算するための再構成可能なスイッチング装置
JP2008516306A (ja) * 2004-09-15 2008-05-15 ストリームシールド ネットワークス リミテッド ネットワークベースのセキュリティプラットフォーム
JP2009032257A (ja) * 2001-12-13 2009-02-12 Quicksilver Technologies Inc 有限状態機械制御コードを選択的に用いるプロセッサアーキテクチャ
WO2009050797A1 (ja) * 2007-10-17 2009-04-23 Fujitsu Limited 検索装置および検索方法
JP2010206806A (ja) * 2003-03-27 2010-09-16 Rohde & Schwarz Gmbh & Co Kg エンドシステムのメッセージの参照メッセージからの変異を決定する方法
JP2011134310A (ja) * 2009-11-23 2011-07-07 Beckhoff Automation Gmbh リアルタイム・ランタイムシステムおよびそのようなランタイムシステムのための機能モジュール
WO2011102432A1 (ja) 2010-02-18 2011-08-25 Inoue Katsumi 情報絞り込み検出機能を備えたメモリ、このメモリを用いた情報検出方法、このメモリを含む装置、情報の検出方法、メモリの使用方法、およびメモリアドレス比較回路
JP5071486B2 (ja) * 2008-01-22 2012-11-14 富士通株式会社 検索装置および検索方法
JPWO2013137067A1 (ja) * 2012-03-15 2015-08-03 日本電気株式会社 演算装置、演算方法及び演算プログラム
JP2015184959A (ja) * 2014-03-25 2015-10-22 株式会社豊田中央研究所 ストリームデータ処理装置、ストリームデータ処理方法、ストリームデータ処理プログラム

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820523B1 (fr) * 2001-02-08 2003-05-16 St Microelectronics Sa Microprocesseur comportant une instruction d'inversion des bits d'un mot binaire
CA2357444A1 (en) * 2001-09-13 2003-03-13 Armadillo Networks Inc. System and methods for automatic negotiation in distributed computing
US7415042B1 (en) * 2002-02-19 2008-08-19 Utstarcom, Inc. System and method for dynamic information retrieval using a state machine
US7554685B2 (en) 2002-07-26 2009-06-30 Ricoh Company, Ltd. Image forming apparatus, information processing apparatus, program execution method and program producing method
US7451143B2 (en) * 2002-08-28 2008-11-11 Cisco Technology, Inc. Programmable rule processing apparatus for conducting high speed contextual searches and characterizations of patterns in data
US7464254B2 (en) * 2003-01-09 2008-12-09 Cisco Technology, Inc. Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
WO2004081761A2 (en) * 2003-03-12 2004-09-23 Sensory Networks Inc. Apparatus and method for memory efficient, programmable, pattern matching finite state machine hardware
US7405719B2 (en) * 2003-05-01 2008-07-29 Genesis Microchip Inc. Using packet transfer for driving LCD panel driver electronics
US8068485B2 (en) * 2003-05-01 2011-11-29 Genesis Microchip Inc. Multimedia interface
US8204076B2 (en) * 2003-05-01 2012-06-19 Genesis Microchip Inc. Compact packet based multimedia interface
US8059673B2 (en) 2003-05-01 2011-11-15 Genesis Microchip Inc. Dynamic resource re-allocation in a packet based video display interface
US7346062B2 (en) 2003-07-10 2008-03-18 International Business Machines Corporation Apparatus and method to coordinate calendar searches in a network scheduler given limited resources
JP4263976B2 (ja) * 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US7634090B2 (en) 2003-09-26 2009-12-15 Genesis Microchip Inc. Packet based high definition high-bandwidth digital content protection
US7685434B2 (en) 2004-03-02 2010-03-23 Advanced Micro Devices, Inc. Two parallel engines for high speed transmit IPsec processing
US20050283357A1 (en) * 2004-06-22 2005-12-22 Microsoft Corporation Text mining method
JP4172477B2 (ja) * 2005-08-17 2008-10-29 村田機械株式会社 パターンの実機への実装方法
US7724784B2 (en) * 2006-09-13 2010-05-25 International Business Machines Corporation System and method for classifying data streams using high-order models
JP2008131481A (ja) * 2006-11-22 2008-06-05 Denso Corp データ中継装置
EP2099031A1 (fr) * 2008-03-07 2009-09-09 Axalto S.A. Procédés pour fabriquer un empilement de circuits mémoire et pour adresser un circuit mémoire, empilement et dispositif correspondants
CN101739400B (zh) * 2008-11-11 2014-08-13 日电(中国)有限公司 生成索引的方法和装置以及检索方法和装置
US8429440B2 (en) 2009-05-13 2013-04-23 Stmicroelectronics, Inc. Flat panel display driver method and system
US8156238B2 (en) 2009-05-13 2012-04-10 Stmicroelectronics, Inc. Wireless multimedia transport method and apparatus
US20110007754A1 (en) * 2009-07-10 2011-01-13 Gerald Pepper Flexible Hardware Checksum Generator
US20110219016A1 (en) * 2010-03-04 2011-09-08 Src, Inc. Stream Mining via State Machine and High Dimensionality Database
US8671234B2 (en) 2010-05-27 2014-03-11 Stmicroelectronics, Inc. Level shifting cable adaptor and chip system for use with dual-mode multi-media device
US8972923B2 (en) * 2011-02-08 2015-03-03 Maxeler Technologies Ltd. Method and apparatus and software code for generating a hardware stream processor design
US9268881B2 (en) 2012-10-19 2016-02-23 Intel Corporation Child state pre-fetch in NFAs
US9117170B2 (en) 2012-11-19 2015-08-25 Intel Corporation Complex NFA state matching method that matches input symbols against character classes (CCLs), and compares sequence CCLs in parallel
US9665664B2 (en) 2012-11-26 2017-05-30 Intel Corporation DFA-NFA hybrid
US9304768B2 (en) 2012-12-18 2016-04-05 Intel Corporation Cache prefetch for deterministic finite automaton instructions
US9251440B2 (en) * 2012-12-18 2016-02-02 Intel Corporation Multiple step non-deterministic finite automaton matching
US9268570B2 (en) 2013-01-23 2016-02-23 Intel Corporation DFA compression and execution
US9235564B2 (en) * 2013-07-19 2016-01-12 International Business Machines Corporation Offloading projection of fixed and variable length database columns
US9501591B2 (en) * 2013-12-09 2016-11-22 International Business Machines Corporation Dynamically modifiable component model
WO2015123509A1 (en) * 2014-02-13 2015-08-20 Emerge Print Management, Llc System and method for the passive monitoring and reporting of printer-related data on usb cables
US10165130B2 (en) 2014-02-13 2018-12-25 Emerge Print Management, Llc System and method for the passive monitoring and reporting of printer-related data on USB cables
US10261688B2 (en) * 2016-04-02 2019-04-16 Intel Corporation Performing search and replace operations in a memory device using command parameters and a storage controller without transferring data to a processor
US20180218056A1 (en) * 2017-01-30 2018-08-02 Netzyn, Inc. System and method for reducing perceived latency in a display-server computing system
IT201700088977A1 (it) 2017-08-02 2019-02-02 St Microelectronics Srl Procedimento per il riconoscimento di gesti, circuito, dispositivo e prodotto informatico corrispondenti
CN108762460A (zh) * 2018-06-28 2018-11-06 北京比特大陆科技有限公司 一种数据处理电路、算力板、矿机以及挖矿系统
US11520502B2 (en) * 2019-12-31 2022-12-06 Micron Technology, Inc. Performance control for a memory sub-system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4984192A (en) 1988-12-02 1991-01-08 Ultrasystems Defense Inc. Programmable state machines connectable in a reconfiguration switching network for performing real-time data processing
US5459841A (en) * 1993-12-28 1995-10-17 At&T Corp. Finite state machine with minimized vector processing
JPH08305554A (ja) 1995-04-27 1996-11-22 Hitachi Ltd 階層化状態遷移決定表に基づくプログラム実行方法および装置
US5995963A (en) 1996-06-27 1999-11-30 Fujitsu Limited Apparatus and method of multi-string matching based on sparse state transition list
US6131151A (en) 1997-11-12 2000-10-10 Lsi Logic Corporation Processing high-speed digital datastreams with reduced memory
JPH11296381A (ja) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
US6442672B1 (en) * 1998-09-30 2002-08-27 Conexant Systems, Inc. Method for dynamic allocation and efficient sharing of functional unit datapaths

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009032257A (ja) * 2001-12-13 2009-02-12 Quicksilver Technologies Inc 有限状態機械制御コードを選択的に用いるプロセッサアーキテクチャ
JP2010206806A (ja) * 2003-03-27 2010-09-16 Rohde & Schwarz Gmbh & Co Kg エンドシステムのメッセージの参照メッセージからの変異を決定する方法
JP2012074051A (ja) * 2004-02-13 2012-04-12 Siemens Ag 任意のアルゴリズムを並列計算するための再構成可能な論理回路装置
JP2007522571A (ja) * 2004-02-13 2007-08-09 シーメンス アクチエンゲゼルシヤフト 任意のアルゴリズムを並列計算するための再構成可能なスイッチング装置
JP2006074780A (ja) * 2004-09-02 2006-03-16 Internatl Business Mach Corp <Ibm> 待ち時間の少ないデータ暗号解除インターフェース
JP2008516306A (ja) * 2004-09-15 2008-05-15 ストリームシールド ネットワークス リミテッド ネットワークベースのセキュリティプラットフォーム
US8219538B2 (en) 2007-10-17 2012-07-10 Fujitsu Limited Search device and search method
WO2009050797A1 (ja) * 2007-10-17 2009-04-23 Fujitsu Limited 検索装置および検索方法
JP5041003B2 (ja) * 2007-10-17 2012-10-03 富士通株式会社 検索装置および検索方法
JP5071486B2 (ja) * 2008-01-22 2012-11-14 富士通株式会社 検索装置および検索方法
JP2011134310A (ja) * 2009-11-23 2011-07-07 Beckhoff Automation Gmbh リアルタイム・ランタイムシステムおよびそのようなランタイムシステムのための機能モジュール
WO2011102432A1 (ja) 2010-02-18 2011-08-25 Inoue Katsumi 情報絞り込み検出機能を備えたメモリ、このメモリを用いた情報検出方法、このメモリを含む装置、情報の検出方法、メモリの使用方法、およびメモリアドレス比較回路
US9275734B2 (en) 2010-02-18 2016-03-01 Katsumi Inoue Memory having information refinement detection function by applying a logic operation in parallel for each memory address to the match/mismatch results of data items and memory addresses, information detection method using memory, and memory address comparison circuit for the memory
JPWO2013137067A1 (ja) * 2012-03-15 2015-08-03 日本電気株式会社 演算装置、演算方法及び演算プログラム
JP2015184959A (ja) * 2014-03-25 2015-10-22 株式会社豊田中央研究所 ストリームデータ処理装置、ストリームデータ処理方法、ストリームデータ処理プログラム

Also Published As

Publication number Publication date
US6742107B2 (en) 2004-05-25
DE60124161D1 (de) 2006-12-14
EP1126367A1 (en) 2001-08-22
JP4558879B2 (ja) 2010-10-06
US20010014936A1 (en) 2001-08-16
DE60124161T2 (de) 2007-08-30
EP1126367B1 (en) 2006-11-02

Similar Documents

Publication Publication Date Title
JP4558879B2 (ja) テーブルを用いたデータ処理装置および処理システム
US9495479B2 (en) Traversal with arc configuration information
EP2215565B1 (en) Deterministic finite automata (dfa) graph compression
EP2215563B1 (en) Method and apparatus for traversing a deterministic finite automata (dfa) graph compression
EP2668577B1 (en) Unrolling quantifications to control in-degree and/or out degree of automaton
US6212569B1 (en) Data processor with bit stuffing instruction set extension
US6804240B1 (en) Fast and adaptive packet processing device and method using digest information of input packet
US8819217B2 (en) Intelligent graph walking
US7673187B2 (en) Data processing apparatus and method for reducing trace bandwidth
US6356999B1 (en) Data processor with trie traversal instruction set extension
US11218574B2 (en) Directed graph traversal using content-addressable memory
US6920562B1 (en) Tightly coupled software protocol decode with hardware data encryption
JP2015165650A (ja) ソフトウェア・デファインド・ネットワークエンジンにおいてパケット修正・転送のためにルックアップを生成し決定を行う装置および方法
US20140244554A1 (en) Non-deterministic finite state machine module for use in a regular expression matching system
US20210295181A1 (en) Finite automata global counter in a data flow graph-driven analytics platform having analytics hardware accelerators
KR100512980B1 (ko) 메인프로세서의 패킷 헤더 처리 효율 향상을 위해 패킷헤더 필더를 추출해 정렬하는 패킷프로세서,버퍼메모리제어장치 및 그 방법
US11960772B2 (en) Pipeline using match-action blocks
US11425036B1 (en) Pipelined match-action circuitry
CN113992610A (zh) 支持网络处理器的数据包包头处理电路系统及其控制方法
CN113672946A (zh) 数据加解密组件、相关装置和方法
Efnusheva et al. Design of Reconfigurable Memory for Fast Network Packet Header Parsing
Zolfaghari Flexible Low-Area Hardware Architectures for Packet Processing in Software-Defined Networks
Shimura et al. On-the-fly data compression/decompression mechanism with expether
CN110650064A (zh) 一种通用且可配置的网络流量测量系统
CN112994886A (zh) 一种用于生成tcam搜索关键字的硬件及实现方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091204

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: 20100720

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100722

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130730

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees