JP3183669B2 - 可変長の文字ストリング用のプロセッサ - Google Patents

可変長の文字ストリング用のプロセッサ

Info

Publication number
JP3183669B2
JP3183669B2 JP51121995A JP51121995A JP3183669B2 JP 3183669 B2 JP3183669 B2 JP 3183669B2 JP 51121995 A JP51121995 A JP 51121995A JP 51121995 A JP51121995 A JP 51121995A JP 3183669 B2 JP3183669 B2 JP 3183669B2
Authority
JP
Japan
Prior art keywords
substring
character strings
substrings
unit
string
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
Application number
JP51121995A
Other languages
English (en)
Other versions
JPH09503327A (ja
Inventor
ハーラー、ヴィルヘルム、エーニスト
ゲツラフ、クラウス、ヨーグ
クリンスキイ、ハーバート
コスター、ラルフ
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH09503327A publication Critical patent/JPH09503327A/ja
Application granted granted Critical
Publication of JP3183669B2 publication Critical patent/JP3183669B2/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/02Comparing digital values
    • G06F7/026Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 本発明は、プログラム命令によって対単位でアドレス
可能であり、それからデータ経路幅に対応するサブスト
リングが2つのオペランド・レジスタに転送される文字
ストリングを格納する複数の記憶ユニットからなるシス
テムを含み、処理操作を実行する演算論理ユニットを含
み、処理の結果から得られ、プログラムの分岐を制御す
る信号を格納する条件コード回路を含み、記憶ユニット
内の文字ストリングの対のサブストリングを順次アドレ
ス指定し、各種ユニットの動作とそれらの間の転送を連
続マシン・サイクルで制御する制御ユニットを含む、可
変長の文字ストリング用のプロセッサに関する。
データベースを照会するコンピュータ・アプリケーシ
ョンや、テキスト処理と高水準プログラミング言語のサ
ポートの分野のアプリケーションでは、大量の文字スト
リングの処理が必要になる。一般的に言えば、文字スト
リングとは、可変長のバイト列から構成されるデータ要
素である。文字ストリングの長さは、記憶ユニットのサ
イズによってのみ限定され、1バイトから多数のバイト
の範囲に及ぶ可能性がある。これは、長さコード、ある
いは文字ストリングに含まれ、そのストリングの末尾を
示す特殊文字によって判定することができる。通常、文
字ストリング命令は、様々な長さの文字ストリングを処
理しなければならない。頻繁に行われる類の処理として
は、2つの文字ストリングの比較、互いに一致するか互
いに異なる第1のバイト対の検出、文字ストリングAと
文字ストリングB内の何らかの文字ストリングの検出、
文字ストリング内のサブストリングの探索、ある文字ス
トリングを別の記憶位置への移動などがある。
文字ストリング用の複合命令には3つのオペランドが
ある。すなわち、第1の文字ストリングAのアドレス
と、第2の文字ストリングBのアドレスと、文字ストリ
ングAおよびBの末尾をマークする第3のオペランドと
してのストリング終了バイトのアドレスであって、Aと
Bは可変長である。このような命令を実行するには、一
連の操作が必要である。互いに一致しない1つのバイト
対またはストリング終了バイトを検出するまで、第1の
オペランドを表す文字ストリングを左から右にバイト単
位で第2のオペランドを表す文字ストリングと比較す
る。両方の文字ストリングのストリング終了バイトが同
じビット位置で検出される場合、両方の文字ストリング
は等しい。2つの文字ストリングの一方だけでストリン
グ終了バイトが検出される場合、この文字ストリングの
方が短いので、小さい方と見なされる。これに対して、
ストリング終了文字ではなく、不一致バイト対が検出さ
れる場合は、2つのオペランドのうちのどちらが小さい
方かを判定するために、両方のバイトを比較しなければ
ならない。したがって、この命令の実行は、文字ストリ
ングA内のストリング終了バイトの探索、文字ストリン
グB内のストリング終了バイトの探索、不一致を検出す
るための両方の文字ストリングの比較、どちらの文字ス
トリングの方が小さいかを判定するために一方の文字ス
トリングからもう一方の文字ストリングを減算すること
という各種フェーズを含む。このような様々な操作を実
行するには、マイクロプロセッサの制御および処理時間
において相当なオーバヘッドを必要とする。
文字ストリング命令の実行の高速化のためには、複数
のバイトを並列に比較可能な回路の方が優れていること
は周知である(米国特許第4896133号)。このような構
成の場合、1回の比較操作によって文字ストリング内の
特定の制御文字を検出することが可能であり、その場
合、この制御文字の複数コピーがオペランド・レジスタ
のすべてのバイト位置に格納され、そのストリングの8
バイトと同時に比較される。一致が検出されると、マイ
クロプログラムの制御下で次のプログラム命令への分岐
が行われる。代替ケースでは、追加の文字ストリングを
使用してこの比較が繰り返される。この比較操作は、複
数の排他NOR回路からなるバンクによって、またはこの
構成が使用されるプロセッサの演算論理ユニットによっ
て実行することができる。ただし、この構成が適してい
るのは、上記の操作フェーズの一部を並列実行する場合
に限られる。
従来のデータ処理システムでは、中央処理装置内に存
在する各種機構を使用することによってマイクロプログ
ラムが実行する特殊文字ストリング命令を提供すること
(米国特許第4556951号)も最先端技術である。このよ
うな命令では、処理すべき文字ストリイングの長さは、
その命令に含まれ、ストリングの到達範囲内のバイト数
を表す長さコードによって指定される。また、文字の比
較は、プロセッサの演算論理ユニットの動作によって実
行される。このようなシステムの場合、文字ストリン
グ、サブストリング、または個々の文字同士の一致また
は不一致を示し、プログラムの後続部分の分岐を制御す
るために、出力の一部として生成される条件コードが使
用される。ただし、この構成でも、冒頭に説明した操作
フェーズを実行するために不可欠な多数のマイクロプロ
グラム・ステップのために相当なオーバヘッドが必要に
なる。
本発明の関心事は、上記の短所を回避し、並列処理の
原理をさらに利用する、文字ストリング用の改良された
プロセッサを規定することである。上記の問題を解決す
るための本発明の構成は、請求の範囲1ないし4によっ
て示されている。
下記の図面を利用して、本発明の好適な構成の例を以
下に説明する。
第1図は、本発明に対応する文字ストリング・プロセ
ッサのブロック図である。
第2図は、第1図の構成の動作方法を説明するための
文字ストリングの処理中の一致条件と不一致条件を示す
表である。
第3図は、第1図の構成で使用するための結果スコア
論理回路のブロック図である。
第4図は、第1図のプロセッサの制御ユニットで使用
するマイクロプログラムの流れ図である。
第1図のプロセッサは、ローカル・メモリ10と、演算
ユニット20と、制御ユニット40とを含む。これらのユニ
ットは、従来の方法で構築されているので、ここではこ
れ以上詳細に説明しない。記憶装置10は、容量が限定さ
れた高速記憶装置で、プロセッサ・チップ上に搭載さ
れ、マルチプレクサ13により、従来どおり個別の半導体
チップを含む記憶ユニット12に接続されている。記憶ユ
ニット12は多数の文字ストリングを含み、この文字スト
リングは全体で1つのデータベースなどを形成する可能
性がある。それぞれの文字ストリングは複数のバイトか
ら構成され、それぞれのバイトは1つの文字を表す。た
だし、文字とバイトとの間には、1バイトで2文字を表
すなど、他の関係も選択可能である。1つの文字ストリ
ングに属す文字の数は可変であり、広い範囲内で自由に
選択することができる。制限とは、記憶装置の容量を意
味するだけにすぎない。1つの文字ストリングの長さ
は、そのストリングの最後のバイトによって表され、処
理中にストリングの末尾を示す、ストリング終了文字に
よって決まる。現行のアプリケーション・プログラムに
は、この処理を行う文字ストリング命令が含まれ、この
ような命令は、通常、長さが異なる互いに関連のある2
つの文字ストリングをアドレス指定し、その処理を制御
する。典型的な形式の処理としては、等しいか等しくな
いかのテスト、どちらの文字ストリングが大きい方かま
たは小さい方かの判定、たとえば、英字順などの事前定
義済みの順序付け方式でどちらの文字ストリングがもう
一方の文字ストリングより策に来るかの判定などがあ
る。これは、左から右に、不一致バイトを伴う第1のバ
イト位置を確立するために、両方の文字ストリングを対
にしてその個々のバイトをテストすることによって行わ
れる。文字ストリング命令には3つのオペランドがあ
る。すなわち、第1の文字ストリングAのアドレスと、
第2の文字ストリングBのアドレスと、通常は長さが異
なる両方の文字ストリングの末尾をマークするためにプ
ログラマが選択する。第3のオペランドとしてのストリ
ング終了バイトのアドレスである。文字ストリング命令
を含むアプリケーション・プログラムは記憶装置12に格
納される。文字ストリング命令を実行するマイクロプロ
グラムは制御記憶装置内にあり、この装置は図示しない
が、制御ユニット40の一部である。ローカル記憶装置10
には、一度に文字ストリングの一部ずつ、徐々に記憶装
置12からロードされる。
記憶装置10の出力は、バス14および15を使用してオペ
ランド・レジスタ16および18に接続され、それぞれのレ
ジスタは4バイトのサブストリングを受け入れるように
設計されている。制御ユニット40の制御下でレジスタ16
および18は、毎回、処理すべき2つの文字ストリングA
およびBの第1のサブストリングから始まって、1マシ
ン・サイクル中に同時にロードされる。AとBは現行文
字ストリング命令内のオペランド・アドレスによってア
ドレス指定される。以下の説明では、これらのサブスト
リングもAおよびBと呼ぶが、サブストリングAはレジ
スタ16に格納され、サブストリングBはレジスタ18に格
納される。演算ユニット20、論理ユニット22、比較器ユ
ニット24は、バス17および19を使用して、オペランド・
レジスタ16および18の出力側で互いに並列に接続され
る。これらのレジスタに格納されたサブストリングAお
よびBは、それぞれバス17および19を介して、上記のユ
ニットに同時に経路指定され、上記のユニットによって
受け取られる。
比較器ユニット24は、もう1つのレジスタ26の出力に
接続された第3の入力を示し、このレジスタには、文字
ストリング命令によって第3のオペランドとして定義さ
れるストリング終了マークが格納され、このマークは、
予備操作でレジスタ16を介して記憶装置10から受け取
る。これは、サブストリング・オペランドがユニット2
0、22、24に経路指定される前に行われる。比較器ユニ
ット24は、並列複数比較を実行する。これは、レジスタ
26内のマークをサブストリングAの各バイトおよびサブ
ストリングBの各バイトと比較する。この比較操作は、
図示されていない排他OR回路を使用して行われる。比較
器ユニット24には、それぞれが4本の線を備えた2つの
出力28および30がある。サブストリングAの4つのバイ
トの1つがレジスタ26内のバイト終了マークと一致する
場合、出力線28上には信号EA(0)、EA(1)、EA
(2)、EA(3)がそれぞれ出力される。それぞれの信
号にはサブストリングA内のバイト位置が1つずつ割り
当てられ、ユニット24内のこの位置に供給されたバイト
がレジスタ26内のストリング終了バイトと一致すること
を示す。同様に、サブストリングBの4つのバイトの1
つがレジスタ26内のストリング終了マークと一致する場
合、出力線30上には信号EB(0)、EB(1)、EB
(2)、EB(3)がそれぞれ出力される。この場合も、
それぞれの信号は、サブストリングB内の割当て済みバ
イト位置に関する位置を示す。
論理ユニット22は、オペランドに対して、AND、OR、
排他ORなど、様々な論理演算を選択的に実行する。この
場合、比較操作は、オペランドの入力バイト内に一致が
存在しないことを検出する際のみ、重要になる。比較
は、オペランドAの4つのバイト位置の内容と、オペラ
ンドBの対応する4つのバイト位置の内容との間で行わ
れる。また、この比較は並列実行される。不一致の検出
を目的としているので、比較を行うために適切な論理演
算は、両方のビットが等しくない場合に各オペランド・
ビット対ごとに出力信号を1つずつ生成する排他ORであ
る。オペランド・バイトに関しては、これは、対象とな
るオペランド・バイト対の不一致を示すために1つのビ
ット位置の出力信号で十分であることを意味する。論理
ユニット22は、出力32上に4つの信号MC(0)、MC
(1)、MC(2)、MC(3)を生成し、それぞれが両方
のオペランドAおよびBの1つのバイト位置に割り当て
られる。これらの信号のうち、1つまたは複数が発生し
た場合は、割り当てられた位置のオペランド・バイトが
互いに等しくないことを示している。
演算ユニット20は、B−Aという減算を実行する。こ
れは、サブストリングBにサブストリングAの2の補数
を加算することによって行われる。これを行うため、補
数器36を介して演算ユニット20のAオペランド入力にレ
ジスタ16からサブストリングAが経路指定される。この
間、Bオペランド入力に接続された補数器38は使用禁止
状態のままになっている。演算ユニット20の最上位バイ
ト位置には繰上り出力線34が用意されている。これは、
ユニット20の出力信号のうち、この場合に関心のある信
号出力である。線34上の繰上り信号「1」は、オペラン
ドAがオペランドBより小さいことを示し、このような
信号がない場合は、オペランドAがオペランドBより大
きいことを示す。演算ユニット20の動作のため、サブス
トリングAおよびBを演算オペランドであると見なす。
以下の例は、これらの信号が生成されたときの演算ユニ
ット20の動作を示している。
上記の例の一番上の行は、文字ストリング(サブスト
リング)AおよびBのバイト位置を示し、次の2行では
これらの文字ストリングを16進表現で再現し、その下の
2行では2進表現で再現する。バイト位置3の「x」
は、この位置のバイトがその結果に何の影響も及ぼさ
ず、したがって、その位置ではいずれの文字でも構わな
いことを意味する。両方のストリングのバイト位置2に
は不一致(MC)が存在し、この位置のストリングAの値
はストリングBの対応する値より小さいことは明らかで
ある。ストリングBの2進表現は最後の行から3番目の
行に繰り返されているが、最後から2番目の行であるス
トリングAは、加算の実行のために演算ユニットのオペ
ランドA入力に供給される場合と同様に2の補数表現で
示されている。最後の行は、加算中に発生する繰り上り
を示している。まず、繰上りは2の補数の生成の一部と
して最下位バイト位置、すなわちバイト3に供給され
る。これは、線48上の制御ユニット40からの信号によっ
て周知の方法で行われるが、この信号は減算の実行のた
めに演算ユニット20も制御する。バイト位置2では繰上
りが生成され、これがバイト位置1に達し、そこから位
置0にも達し、それが線34上で繰上りを生成する。この
繰上りは、ストリングAがストリングBより小さいこと
を示すように機能する。同時に、論理ユニット22は、上
記の例の行4および5のように、真の(すなわち、補数
ではない)2進表現でそれに供給されたストリングAと
Bの比較をすでに行っている。この比較の結果として、
論理ユニット22はその出力線上にMC(2)信号を生成
し、位置2のバイト同士が等しくないことを示す。この
表示と線34上の繰上りは、バイト位置3のバイトとは無
関係である。上記の例のこの位置で繰上りが発生しない
場合、その結果は図示の通りになる。位置3で繰上りが
発生すると想定した場合、それによって何の変更も行わ
れない。この場合、位置2のストリングBのバイトは当
然のことながら1だけ増加する。しかし、このことは、
依然としてこの位置で繰上りが発生し、その結果、線34
上に繰上り信号が出力されることを変えるものではな
い。また、位置3のバイト同士が等しくなく、その結
果、上記のMC(2)信号に続いて論理ユニット22にMC
(3)という出力信号が発生しても、これは一切影響し
ない。というのは、これは、ストリングの先頭に最も近
い位置にあるバイト位置の不一致信号のみに依存するか
らである。したがって、不一致位置の右にあるバイトが
ユニット20および22の動作の結果に一切影響しないこと
は明らかである。また、ユニット20および22の出力に発
生する通常の結果、すなわちA−Bという代数差と、ス
トリングAおよびBの排他OR演算とは、本発明の構成に
とってまったく重要ではないことを付け加える必要があ
る。両方のユニット20および22の通常の動作の場合、こ
れらの結果は、マルチプレクサ39、バス42、マルチプレ
クサ13を介してローカル記憶装置に伝送され、そこに格
納される。
第1図の構成の動作は、制御ユニット40によって制御
される。このユニットは、線46〜51上に制御信号を生成
し、それが個別のユニットに送られる。これらの信号は
所与のクロック間隔で生成される。レジスタ16および18
に文字ストリングAおよびBの4バイトをそれぞれロー
ドするために、バス46を介して記憶装置10へのアクセス
が行われる。線47上の制御信号によって、これらのバイ
トがユニット20、22、24に転送されると同時に、補数器
36が使用可能になる。線49上の制御信号COMP(A,B)お
よび線50上の制御信号COMP EZ(A,B)と同時に、線48
上に減算制御信号SUB B−Aが発生する。COMP(A,B)
により、論理ユニットは排他OR演算を実行することがで
き、COMP EZ(A,B)はレジスタ26から比較器ユニット
にストリング終了マークEZを転送し、後者を前述の複数
比較を実行するために使用可能にする。線47〜50上の制
御信号によって開始された動作は、1マシン・サイクル
を要する。このサイクルが終わると、サブストリングA
およびBの処理結果は、線28、30、32、34上の標識信号
EA(0...3)、EB(0...3)、MC(0...3)、CARRY(0)
として出力される。これらの信号は標識回路60に送られ
るが、この回路については第2図および第3図を参照し
て説明する。
第2図の表の左側部分は信号MC、EA、EBの組合せとし
て可能なパターンを示し、右側部分には選択した有効な
信号の組合せを示している。標識論理回路60は、有効な
サブストリングを切り詰める回路62を有し、記憶装置12
内の文字ストリングのアクセス中に物理的な記憶容量の
限界を超えたときに発生しうる、サブストリングの位置
合せ不良に対応する。さらに、標識論理回路60は、優先
順位の判定のための回路64、ならびに線34上の繰上り信
号によって制御される選択回路66を有する。
有効なサブストリングを切り詰める回路62は、バス70
を介して選択的に条件付けされるAND回路72、73、74を
含む。ユニット24および22の出力からのバス28、30、32
の4本の線のそれぞれは、AND回路72、73、74の1つに
それぞれ接続され、これらの回路は、上記のユニット内
で処理された4バイトすべてについてバス70上に条件付
け信号が出力された場合に、これらの線上の信号に対応
する出力信号をバス76上に送達する。これに対して、ア
ドレス指定された記憶範囲が何らかの記憶限界を超えた
ために、記憶アクセスによってレジスタ16および18に不
完全なストリングA、Bだけがロードされた場合、制御
ユニット40は、有効バイトが一切処理されていないバイ
ト位置に対応するバス線上の条件付け信号を使用禁止に
する。たとえば、これは線71に割り振られたバイト2お
よび3になる可能性があり、その結果、バス70上にはAN
D回路72、73、74からの出力信号が一切発生しなくな
る。バス76への入力接続部をA0〜A3、B0〜B3、M0〜M3と
示すが、この接続部は、A0〜A3が線28に、B0〜B3が線30
に、M0〜M3が線32というように割り振られている。優先
順位論理回路64は、サブストリングAまたはB内のスト
リング終了文字のバイト位置と、これらのサブストリン
グ間の不一致のバイト位置という標識を決定する。これ
は、AND回路82〜85によって行われ、その間にはインバ
ータ78〜80が設けられている。例示のため、ここではAN
D回路とインバータの一部を省略する。AND回路82は、バ
イト位置0の不一致を示す入力信号M0をバスから受け取
る。この信号は、信号A0、B0が一切存在しない場合、す
なわち、同じバイト位置にバイト終了文字が一切示され
ていない場合のみ、バスに伝送される。この場合、AND
回路82はその前にあるインバータ78からの出力信号によ
って条件付けされる。同様に、AND回路83は、バイト位
置0またはバイト位置1のいずれにもストリング終了文
字が示されず、バイト位置0に不一致が一切示されてい
ない場合に、バス88に不一致信号M1を伝送する。同じ方
法で、図示されていないAND回路によって不一致信号M2
およびM3がバス88に伝送される。信号A0とB0はバス76か
らバス88に直接送られる。バイト位置0についてバイト
終了文字または不一致のいずれも示されていない場合、
AND回路84は信号A1をバス88上に伝送する。これと同等
の信号B1の伝送はAND回路85を介して行われる。いずれ
の場合にも下位バイト位置のすべてがバイト終了文字ま
たは不一致を一切示していない場合、残りのストリング
終了標識信号A2、A3、B2、B3はまったく同じようにAND
回路(図示せず)を介してバス88に伝送される。バス88
からの信号A0〜A3、B0〜B3、M0〜M3は、OR回路89によっ
てそれぞれ信号EA、EB、MCに結合される。結合した信号
は、別のバス90によって繰上りスコア論理回路66に経路
指定され、この回路も演算ユニット20の最上位バイト位
置からの繰上り線34に接続されている。繰上りスコア論
理回路66は、AND回路91、93、94と、インバータ92とを
有し、2つのサブストリングAおよびBのどちらが大き
い方かまたは小さい方かを、線95および96上にそれぞれ
示す。これを行うため、AND回路91は、線34上の繰り上
り信号によって条件付けされている場合、線95にMC信号
を伝送する。線95上の出力信号は、サブストリングAが
サブストリングBより小さいことを示し、図示されてい
ないラッチ回路内に条件コードCC=01を設定するように
機能する。また、繰上り信号が一切存在せず、しかもイ
ンバータ92が条件信号をAND回路93に供給する場合、AND
回路93を介して線96に信号MCも伝送される。線96上の出
力信号は、サブストリングBがサブストリングAより小
さいことを示し、条件コードCC=10を設定するように機
能する。これに加え、AND回路94は、信号EAおよびEBが
バス90上に同時に発生した場合、すなわち、サブストリ
ングAとサブストリングBの両方でストリング終了文字
が検出された場合、線97上で出力信号を送達する。線97
上の信号は、条件コードCC=00を設定するように機能
し、両方のサブストリングが等しいことを示す。さら
に、信号EAとEBはバス90からバス98および99に経路指定
され、条件コードCC=01およびCC=10を設定する。両者
の信号は、サブストリングAおよびBのストリング終了
をそれぞれ示す。これらの信号が線95および96上の信号
と同じ条件コードを設定するように機能することは明ら
かである。すなわち、サブストリングAの末尾は、サブ
ストリングAがサブストリングBより小さいことも示
し、サブストリングBの末尾は、サブストリングBがサ
ブストリングAより小さいことも示している。バス88に
接続されたバス100は、最後のサブストリング処理中に
検出した一致のバイト位置を同時に示している。この表
示は、バス88の入力信号A0〜A3およびB0〜B3から直接発
生し、後続のプログラム命令の実行に使用するために、
図には示していないレジスタに一時的に格納される。
第4図は、2つの文字ストリングAおよびBを処理す
べきときに必ず制御回路40内で繰り返し使用可能にな
る、マイクロプログラム・ルーチンの重要ステップの簡
略表現を示している。このマイクロプログラム・ルーチ
ンは、制御ユニットの記憶装置(図示せず)にプロセッ
サのマイクロプログラムの一部として格納される。ステ
ップ101は、実行すべき各文字ストリング命令が定義す
る開始アドレスから始まって、記憶ユニット12からの文
字ストリングAの最初の8バイトをローカル・データ記
憶装置10に転送する。同時に、開始アドレスを8だけ増
分する。同じ操作は、ステップ102で文字ストリングB
についても行われる。ステップ103は、記憶ユニット10
内の文字ストリングAおよびBの最初の4バイトをレジ
スタ16および18にそれぞれ転送する。この転送は1マシ
ン・サイクル中に実施される。次にステップ104では、
レジスタ16および18内のサブストリングAおよびBが上
記のようにユニット20、22、24で並列処理される。この
処理操作もちょうど1マシン・サイクル中に実施され
る。ステップ105は、記憶装置10からの文字ストリング
AおよびBの別の4バイトを新しいサブストリングAお
よびBとしてレジスタ16および18にロードする。この後
には、ステップ104と同等の新しい処理ステップ106が続
く。次に、分岐ステップ107は、ステップ104または106
が出力信号EA、EB、またはMCを検出したかどうかをテス
トする。
これは、線97、98、99(第3図)の信号条件をサンプ
リングすることによって行われる。出力信号EA、EB、MC
が一切存在しない場合、マイクロプログラムは分岐して
ステップ101に戻り、制御ユニット12内の次の8バイト
にアクセスする。これに対して、このような出力信号が
検出された場合、これは、文字ストリングAおよびBの
処理が終了したことを意味する。
通常、これは、第4図に示す場合のように、マイクロ
プログラム・ルーチンの第1のパスの直後になるわけで
はないが、長いストリングを処理するためにはこのよう
なパスが数回必要になる。パスが何回必要であるかにか
かわらず、ステップ107は、結果がYESのときにステップ
108に分岐し、そこで線95〜99の信号条件に対応する条
件コードCCが設定される。次のステップ109は、マイク
ロプログラムと、文字ストリング命令の実行の両方を修
了する。現行アプリケーション・コマンドの次の命令は
分岐命令である可能性があり、この分岐命令は、プログ
ラム制御セクションに分岐するために事前に設定された
条件コードCCを使用する。これは、出力バス100上に示
された不一致バイト位置のアドレスを含む、文字ストリ
ング処理命令からの処理結果を再利用する。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリンスキイ、ハーバート ドイツ国シェーナイヒ、ヘルマン―ヴァ ーマ―シュトラーセ 4 (72)発明者 コスター、ラルフ ドイツ国ホリツガンリンゼン、リッテン センシュトラーセ 12 (56)参考文献 特開 平5−216658(JP,A) 特開 昭50−122836(JP,A) 特開 平4−109337(JP,A) 特開 昭64−72236(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/355

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】プログラム命令によって対単位でアドレス
    可能であり、それからデータ経路幅に対応するサブスト
    リングが2つのオペランド・レジスタに転送される文字
    ストリングを格納する複数の記憶ユニットからなるシス
    テムを含み、処理操作を実行する演算論理ユニットを含
    み、処理の結果から得られ、プログラムの分岐を制御す
    るように機能する信号を格納する条件コード回路を含
    み、記憶ユニット内の文字ストリングの対のサブストリ
    ングを順次アドレス指定し、各種ユニットの動作ならび
    にそれらの間の転送を連続マシン・サイクルで制御する
    制御ユニットを含む、可変長の文字ストリング用のプロ
    セッサにおいて、 オペランド・レジスタ(16、18)が演算ユニット(2
    0)、論理ユニット(22)および比較器ユニット(24)
    と並列に接続され、 ストリング終了マーク(E)を再ロード可能なマーキン
    グ・レジスタ(26)が前記比較器ユニットのもう1つの
    入力に接続され、 前記オペランド・レジスタ内に格納されたサブストリン
    グが、一方のサブストリングから他方のサブストリング
    を減算するために前記演算ユニットに、両方のサブスト
    リングの比較のために前記論理ユニットに、両方のサブ
    ストリングの文字と前記マーキング・レジスタの内容と
    を比較するために前記比較器ユニットに同時に経路指定
    され、 これらのユニットの出力信号が同じマシン・サイクル内
    で得られ、前記比較器ユニットの出力信号が両方の文字
    ストリングまたはサブストリングが等しいことを示すよ
    うに機能し、前記論理ユニットの出力信号が両方の文字
    ストリングまたはサブストリングが等しくないことを示
    すように機能し、前記演算ユニットからの繰上り信号が
    2つの文字ストリングまたはサブストリングのどちらが
    大きい方または小さい方であるかを示すように機能し、 前記演算ユニットが、両方のサブストリング内の同じ位
    置にあるバイト同士を並列に加算するように設計され、
    その入力の1つに補数器(36)が接続され、その最上位
    バイト位置に繰上り出力線(34)が接続され、使用可能
    になっている前記補数器を介して経路指定された一方の
    サブストリングが他方のサブストリングより大きい2進
    値を有する場合には、前記繰上り出力線上に繰上り信号
    が出力され、このような繰上り信号が存在しない場合に
    は、他方のサブストリングの方が大きいことを示し、 スコア論理回路(60)が、前記比較器ユニットおよび前
    記論理ユニットからの出力信号(EA、EB、MC)の間の優
    先順位を判定する回路(64)を含み、それぞれの場合に
    一方または他方のサブストリングまたは両方のサブスト
    リングについて前記ストリング終了文字との一致が検出
    された最下位バイト位置を示し、それぞれの場合に不一
    致が検出された最下位バイト位置を出力バス(100)上
    に示すことを特徴とする、可変長の文字ストリング用の
    プロセッサ。
JP51121995A 1993-10-08 1994-09-12 可変長の文字ストリング用のプロセッサ Expired - Fee Related JP3183669B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE4334294.9 1993-10-08
DE4334294A DE4334294C1 (de) 1993-10-08 1993-10-08 Prozessor für Zeichenketten variabler Länge
PCT/EP1994/003045 WO1995010803A1 (de) 1993-10-08 1994-09-12 Prozessor für zeichenketten variabler länge

Publications (2)

Publication Number Publication Date
JPH09503327A JPH09503327A (ja) 1997-03-31
JP3183669B2 true JP3183669B2 (ja) 2001-07-09

Family

ID=6499679

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51121995A Expired - Fee Related JP3183669B2 (ja) 1993-10-08 1994-09-12 可変長の文字ストリング用のプロセッサ

Country Status (5)

Country Link
US (1) US5761521A (ja)
EP (1) EP0722583A1 (ja)
JP (1) JP3183669B2 (ja)
DE (1) DE4334294C1 (ja)
WO (1) WO1995010803A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6114945A (en) * 1997-05-08 2000-09-05 Texas Instruments Incorporated Apparatus and method for programmable fast comparison of a result of a logic operation with an selected result
JPH1145211A (ja) * 1997-07-28 1999-02-16 Fujitsu Ltd 情報処理装置用試験装置および情報処理装置用試験方法
US5944772A (en) * 1997-11-07 1999-08-31 International Business Machines Corporation Combined adder and logic unit
US6061775A (en) * 1997-12-12 2000-05-09 Advanced Micro Devices, Inc. Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types
US7191318B2 (en) * 2002-12-12 2007-03-13 Alacritech, Inc. Native copy instruction for file-access processor with copy-rule-based validation
KR20060014600A (ko) * 2004-08-11 2006-02-16 삼성전자주식회사 외부 메모리에 저장된 데이터의 변경유무를 체크하는 장치및 방법
JP4147423B2 (ja) * 2004-11-12 2008-09-10 セイコーエプソン株式会社 任意精度演算器、任意精度演算方法、および電子機器
US7613755B1 (en) * 2005-04-01 2009-11-03 Netlogic Microsystems, Inc. Signature searching system
US7949700B2 (en) * 2005-04-05 2011-05-24 Sunfish Studio, Llc Modal interval processor
US8073893B1 (en) 2005-08-25 2011-12-06 Robert T. Jenkins Method and/or system for comparing character expressions
US8484236B1 (en) 2006-06-30 2013-07-09 Robert T. Jenkins and Virginia T. Jenkins Method and/or system for processing data streams
US7849399B2 (en) * 2007-06-29 2010-12-07 Walter Hoffmann Method and system for tracking authorship of content in data
KR20100126690A (ko) * 2008-02-18 2010-12-02 샌드브리지 테크놀로지스, 인코포레이티드 널-종료 문자열 동작을 가속화하는 방법
US8380779B2 (en) * 2009-05-29 2013-02-19 Freescale Semiconductor, Inc. Technique for determining if a logical sum of a first operand and a second operand is the same as a third operand
US9323534B2 (en) 2013-03-15 2016-04-26 Freescale Semiconductor, Inc. Method and apparatus for detecting a collision between multiple threads of execution for accessing a memory array
US9116799B2 (en) 2013-06-30 2015-08-25 Freescale Semiconductor, Inc. Method for detecting bank collision at a memory and device therefor
US20180367673A1 (en) * 2016-12-27 2018-12-20 Bronson Picket Enhanced communication using variable length strings of alphanumerics, symbols, and other input
US10564965B2 (en) * 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10678506B2 (en) * 2017-08-01 2020-06-09 Arm Limited Matching consecutive values in a data processing apparatus

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4094001A (en) * 1977-03-23 1978-06-06 General Electric Company Digital logic circuits for comparing ordered character strings of variable length
DE2830467C2 (de) * 1978-07-11 1983-07-14 Artemij Michajlovič Eršov Informationsverarbeitungs-Einrichtung
US4384325A (en) * 1980-06-23 1983-05-17 Sperry Corporation Apparatus and method for searching a data base using variable search criteria
US4556951A (en) * 1982-06-06 1985-12-03 Digital Equipment Corporation Central processor with instructions for processing sequences of characters
US4575795A (en) * 1983-04-01 1986-03-11 Honeywell Information Systems Inc. Apparatus for detecting a predetermined character of a data string
US4618956A (en) * 1983-09-29 1986-10-21 Tandem Computers Incorporated Method of operating enhanced alu test hardware
US4760523A (en) * 1984-06-29 1988-07-26 Trw Inc. Fast search processor
DE3507100A1 (de) * 1985-02-28 1986-08-28 Siemens AG, 1000 Berlin und 8000 München Operationsnetzwerk fuer einen parallelrechner
US4896133A (en) * 1987-02-10 1990-01-23 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5212697A (en) * 1988-09-13 1993-05-18 Ricoh Company, Ltd. Variable length character string detection apparatus
US5222225A (en) * 1988-10-07 1993-06-22 International Business Machines Corporation Apparatus for processing character string moves in a data processing system
AU624205B2 (en) * 1989-01-23 1992-06-04 General Electric Capital Corporation Variable length string matcher
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
CA2045773A1 (en) * 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
US5440753A (en) * 1992-11-13 1995-08-08 Motorola, Inc. Variable length string matcher
AU7108994A (en) * 1993-06-14 1995-01-03 Apple Computer, Inc. Method and apparatus for finding a termination character within a variable length character string or a processor

Also Published As

Publication number Publication date
DE4334294C1 (de) 1995-04-20
EP0722583A1 (de) 1996-07-24
JPH09503327A (ja) 1997-03-31
US5761521A (en) 1998-06-02
WO1995010803A1 (de) 1995-04-20

Similar Documents

Publication Publication Date Title
JP3183669B2 (ja) 可変長の文字ストリング用のプロセッサ
US5465374A (en) Processor for processing data string by byte-by-byte
EP0239081B1 (en) Pipelined data processor capable of decoding and executing plural instructions in parallel
JP2825550B2 (ja) 多重仮想空間アドレス制御方法および計算機システム
US5408626A (en) One clock address pipelining in segmentation unit
US4896133A (en) Parallel string processor and method for a minicomputer
US5241638A (en) Dual cache memory
KR970011208B1 (ko) 파이프라인된 기록버퍼 레지스터
JP3637922B2 (ja) プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置
JPH0814801B2 (ja) プログラマブルアクセスメモリ
US4371924A (en) Computer system apparatus for prefetching data requested by a peripheral device from memory
US5187783A (en) Controller for direct memory access
KR880000340B1 (ko) 데이타 처리 시스템
JPS629930B2 (ja)
US5081608A (en) Apparatus for processing record-structured data by inserting replacement data of arbitrary length into selected data fields
US4384343A (en) Firmware controlled search and verify apparatus and method for a data processing system
US4961067A (en) Pattern driven interrupt in a digital data processor
US5210835A (en) Data processing system having apparatus for increasing the execution speed of bit field instructions
US4941085A (en) Data processing system having apparatus for increasing the execution speed of bit field instructions
US5010483A (en) Vector processor capable of indirect addressing
EP0468402B1 (en) Character string retrieving system and method
WO1988006308A1 (en) Parallel string processor and method for a minicomputer
JPH05158793A (ja) 並列キャッシュメモリ
WO1989001653A1 (en) Parallel string processor and method for a minicomputer
US20030074532A1 (en) Instruction pair detection and pseudo ports for cache array

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees