(57)【要約】本発明は、入力処理部と、データ記憶装置と、先入れ先出しメモリと、出力処理部によって、同一の入力値を圧縮する記憶装置を提供するものである。  入力処理部は、入力値に対して、データ記憶装置内の前記入力値に対応するアドレス位置のデータを調べ、前記データが無効な値の場合、初期値を前記入力値に対応するアドレス位置に記憶し、且つ、前記入力値を先入れ先出しメモリに記憶し、前記データが有効な値の場合、前記データに演算を行って前記入力値に対応するアドレス位置に書き戻す。  出力処理部は、入力値が先入れ先出しメモリに記憶されており、且つ、データ記憶装置内の前記入力値に対応するアドレス位置のデータが有効な値の場合、前記入力値を出力し、且つ、前記入力値に対応するアドレス位置のデータを読み出して出力データとして出力する。
2004051492.tif 000002
【特許請求の範囲】
【請求項１】
入力処理部と、
データ記憶装置と、
先入れ先出しメモリと、
出力処理部とを有し、
前記入力処理部は、
入力値に対して、データ記憶装置内の前記入力値に対応するアドレス位置に、有効な値を有するデータが記憶されているかどうかを決定し、
前記データが無効な値である場合には、予め定められた初期値を、前記データとして、前記データ記憶装置内の前記入力値に対応するアドレス位置に記憶し、且つ、前記入力値を、前記先入れ先出しメモリに記憶し、
前記データが無効な値以外の値の場合には、
前記データ記憶装置内の前記入力値に対応する前記データ記憶装置内のアドレス位置に記憶されている前記データに演算を行った結果を、前記データ記憶装置内の前記入力値に対応するアドレス位置に書き戻し、且つ、前記入力値を、前記先入れ先出しメモリに記憶せず、且つ、
前記出力処理部は、
１個以上の前記入力値が、前記先入れ先出しメモリに記憶されており且つ前記入力値に対応するアドレス位置に記憶されている前記データが、無効な値以外の値の場合には、前記先入れ先出しメモリの先頭に記憶されている前記入力値を読み出して出力値としして出力し、且つ、前記データ記憶装置から、前記出力値に対応するアドレス位置から、前記データ記憶装置に記憶されている前記データを読み出して出力データとして出力し、その後に、前記データ記憶装置内の前記出力値に対応するアドレス位置には無効な値を書き戻すことを特徴とする、同一の入力値を圧縮する記憶装置。
【請求項２】
前記演算は、１を加算することである、請求項１に記載の同一の入力値を圧縮する記憶装置。
【請求項３】
前記演算は、前記データ、前記入力値又は、前記データと前記入力値の組合せに従って、決定されることを特徴とする、請求項１に記載の同一の入力値を圧縮する記憶装置。
【請求項４】
前記入力処理部は、
外部より入力される演算値を保持し、
入力値に対して、データ記憶装置内の前記入力値に対応するアドレス位置に、有効な値を有するデータが記憶されているかどうかを決定し、
前記データが無効な値である場合には、予め定められた初期値を、前記データとして、前記データ記憶装置内の前記入力値に対応するアドレス位置に記憶し、且つ、前記入力値を、前記先入れ先出しメモリに記憶し、
前記データが無効な値以外の値の場合には、
前記データ記憶装置内の前記入力値に対応するアドレス位置に記憶されている前記データに、前記演算値を用いて演算した結果を、前記データ記憶装置内の前記入力値に対応するアドレス位置に書き戻し、且つ、前記入力値を、前記先入れ先出しメモリに記憶しないことを特徴とする、請求項１に記載の同一の入力値を圧縮する記憶装置。
【請求項５】
前記演算は、前記演算値を加算することである、請求項４に記載の同一の入力値を圧縮する記憶装置。
【請求項６】
前記演算は、前記データ、前記入力値、前記演算値、又は、前記データと前記入力値と前記演算値の組合せに従って、決定されることを特徴とする、請求項４に記載の同一の入力値を圧縮する記憶装置。
【請求項７】
前記演算を、外部からの設定により決定する手段を更に有する請求項４に記載の同一の入力値を圧縮する記憶装置。。
【請求項８】
前記出力処理部は、
１個以上の前記入力値が、前記先入れ先出しメモリに記憶されており且つ前記入力値に対応する、前記データ記憶装置内のアドレス位置に記憶されている前記データが、無効な値以外の値の場合には、前記先入れ先出しメモリの先頭に記憶されている前記入力値を読み出して出力値として出力し、且つ、前記データ記憶装置から、前記出力値に対応するアドレス位置から、前記データ記憶装置に記憶されている前記データを読み出して、前記データから１を減算した結果の新たなデータを作成し、
前記新たなデータが、前記予め定められた初期値である場合には、前記無効な値を、前記データ記憶装置内の前記出力値に対応するアドレス位置に書き込み、
前記新たなデータが、前記予め定められた初期値以外の値ある場合には、前記新たなデータを、前記データ記憶装置内の前記出力値に対応するアドレス位置に書き戻すことを特徴とする、請求項１に記載の同一の入力値を圧縮する記憶装置。
【請求項９】
前記データが有効であるか又は無効かであるかを示すフラグを、前記データ記憶装置内に記憶し、且つ、前記データが無効な値であるか又は無効な値以外の値であるかは、前記フラグの値に基づいて決定することを特徴とする、請求項１乃至８のうちいずれか一項に記載の同一の入力値を圧縮する記憶装置。
【請求項１０】
前記演算の結果が予め定められた条件を満たす場合には、前記データ記憶装置に記憶する前記データにフラグを付加し、且つ、前記出力データにも前記フラグを追加することを特徴とする、請求項１乃至９のうちいずれか一項に記載の同一の入力値を圧縮する記憶装置。
【請求項１１】
前記出力データを前記データ記憶装置から読み出す前に、前記データ記憶装置内に保持している前記データを無効化し、前記データが無効であることを示すフラグも前記データ記憶装置に記憶し、且つ、前記フラグを前記出力データとともに出力ことを特徴とする、請求項１乃至９のうちいずれか一項に記載の同一の入力値を圧縮する記憶装置。
【請求項１２】
前記出力データを前記データ記憶装置から読み出したときに、前記同一の入力値を圧縮する記憶装置内の何れかのハードウェアのエラーが発生した場合には、ハードウェアのエラーが発生したことを示すフラグも前記データ記憶装置に記憶し、且つ、前記フラグを前記出力データと共に出力ことを特徴とする、請求項１乃至９のうちいずれか一項に記載の同一の入力値を圧縮する記憶装置。
【請求項１３】
前記データ及び前記フラグを保持する前記データ記憶装置を、応答速度の異なる複数のデータ記憶装置から構成することを特徴とする請求項１乃至１２のうちいずれか一項に記載の同一の入力値を圧縮する記憶装置。
【発明の詳細な説明】
【技術分野】  本発明は、連続的なデータのシーケンスの処理を行う装置の入力に設けられた記憶装置に関連し、特に、同一の入力値を圧縮して記憶する記憶装置に関連する。
【背景技術】  連続的なデータのシーケンスが入力されて、その処理を行う装置においては、その処理を行う装置内に設けられた、入力されたデータの処理を行う回路は、データがその装置に供給される間隔よりも、長い処理実行時間を要する場合が多い。そして、データがその処理を行う装置に供給される間隔と処理実行時間の間の、速度差を吸収するために、ＦＩＦＯ（ファーストインファーストアウト、先入れ先出し）メモリが、処理を行う装置の入力に設けられて、しばしば使用される。
例えば、特開平９−２７４５９９号公報には、連続する同一のデータを全てＦＩＦＯメモリに書き込む必要をなくし、メモリの有効利用を図る目的のバッファメモリ装置が開示されている。
ＦＩＦＯメモリが設けられている場合でも、処理を行う装置へ供給されるデータのシーケンスの速度の方が、データの処理を行う回路の処理実行時間よりも速いと、処理を行う装置の入力に設けられたＦＩＦＯメモリが一杯となり、データのシーケンスの供給を行っているデータの供給側（入力側）の装置の処理を停止する必要が発生する。
しかし、このデータの供給側の装置の処理の停止が、複数の装置の停止を引き起こすことを防止するために、その複数の装置の各装置に、処理を待たせるための機構を追加する必要が生ずる場合がある。又は、タイムアウトのような所定の一定時間を経過すると、処理を終了してしまう装置があるような場合には、処理の停止期間が、そのタイムアウト時間以上とならないことを保証する必要もある。
また、一方では、データの供給側の装置から送られてくるデータのシーケンスは、送られてくる順序を正確に守って、ＦＩＦＯメモリから処理を行う装置に出力される必要がない場合もある。更に、データの供給側の装置から送られてくるデータのシーケンスの複数の入力データを、１個にまとめてから、処理を行う装置に対して、ＦＩＦＯメモリから供給しても、処理を行う装置では、正しく処理を行えるデータ形式である場合も多い。
しかし、従来の技術では、ＦＩＦＯメモリのサイズを超えて、ＦＩＦＯメモリにデータが入力された場合には、入力されたデータは破棄されるか、又は、破棄されたデータの再送等の処理を行って、破棄されたデータを再度ＦＩＦＯメモリに送る機構が必要だった。
そして、ＦＩＦＯメモリに記憶スペースがないことにより、送られてきたデータを記憶することができない時間が、上述のように、所定の一定時間を超えたり、又は、破棄されたデータの再送回数が所定の閾値を超えた場合には、システムに依存して、システムがダウンする場合もあった。更に、データの供給側の装置から送られてくるデータのシーケンスを処理する装置内で、負荷分散が出来るように、データの種類毎に処理を行う装置が分かれている場合には、従来技術のＦＩＦＯメモリを使用すると、同一の入力データが偏ると、その入力データに対する処理しか出来なくなり、負荷分散ができないという問題もある。
【発明の開示】
本発明は上記の点に鑑みてなされたもので、上記問題点を解決した、同一の入力値を圧縮する記憶装置を提供することを目的とする。
この目的を達成するために、本発明の、同一の入力値を圧縮する記憶装置は、
入力処理部と、
データ記憶装置と、
先入れ先出しメモリと、
出力処理部とを有し、
前記入力処理部は、
入力値に対して、データ記憶装置内の前記入力値に対応するアドレス位置に、有効な値を有するデータが記憶されているかどうかを決定し、
前記データが無効な値である場合には、予め定められた初期値を、前記データとして、前記データ記憶装置内の前記入力値に対応するアドレス位置に記憶し、且つ、前記入力値を、前記先入れ先出しメモリに記憶し、
前記データが無効な値以外の値の場合には、
前記データ記憶装置内の前記入力値に対応する前記データ記憶装置内のアドレス位置に記憶されている前記データに演算を行って、前記データ記憶装置内の前記入力値に対応するアドレス位置に書き戻し、且つ、前記入力値を、前記先入れ先出しメモリに記憶せず、且つ、
前記出力処理部は、
１個以上の前記入力値が、前記先入れ先出しメモリに記憶されており且つ前記入力値に対応するアドレス位置に記憶されている前記データが、無効な値以外の値の場合には、前記先入れ先出しメモリの先頭に記憶されている前記入力値を読み出して出力値としして出力し、且つ、前記データ記憶装置から、前記出力値に対応するアドレス位置から、前記データ記憶装置に記憶されている前記データを読み出して出力データとして出力し、且つ、前記データ記憶装置内の前記出力値に対応するアドレス位置には無効な値を書き戻すことを特徴とする。
本発明によれば、本発明に従った同一の入力値を圧縮する記憶装置は、データの供給側の装置から送られてくるデータのシーケンス内の、同じ種類に属する入力データに対して演算を行って圧縮することにより、有限の記憶領域を有する記憶装置内に、固定の時間で入力データを記憶する処理を行うことが出来る。
これにより、処理を行う装置にデータのシーケンスのをデータの供給側装置においては、その処理を待たせる機構が不要になったり、又は、その処理の停止期間が、タイムアウト時間以上とならないことを保証できる。更に、ある特定の種類のデータに対して、ＦＩＦＯメモリからデータを出力することが偏ることもなく、常に一定時間内に出力を行うことも出来る。これにより上述のように、入力側の装置から送られてくるデータのシーケンスを処理する装置内で、負荷分散が出来るように、データの種類毎に処理を行う装置が分かれている場合であっても、同一の入力データに対する処理しか出来なくなるという問題も解消され、負荷分散が可能となる。
【図面の簡単な説明】  本発明の他の目的、特徴及び利点は、添付の図面を参照しながら以下の詳細な説明を読むことにより一層明瞭となるであろう。
図１は、本発明に従った同一の入力値を圧縮する記憶装置の原理的な構成を示す図である。
図２は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置の基本的な構成を示す図である。
図３は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置のデータ入力処理部の詳細な構成例を示す図である。
図４は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置のデータ入力処理部の動作のフローチャートを示す図である。
図５は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置のデータ出力処理部の詳細な構成例を示す図である。
図６は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置のデータ出力処理部の動作のフローチャートを示す図である。
図７は、本発明に従った第２の実施例の同一の入力値を圧縮する記憶装置の構成を示す図である。
図８は、本発明に従った第３の実施例の同一の入力値を圧縮する記憶装置のデータ出力部の動作のフローチャートを示す図である。
図９は、本発明に従った第４の実施例を示す図である。
図１０は、本発明に従った第５の実施例を示す図である。
【発明を実施するための最良の形態】  以下に、本発明を実施するための実施の形態について、図面を用いて説明する。
図１は、本発明に従った同一のアドレス入力値を圧縮する記憶装置の原理的な構成を示す図である。
図１は、本発明に従った同一の入力値を圧縮する記憶装置１００、記憶装置１００に接続された処理装置１１０、記憶装置１００が接続されたシステムバス１５０、システムバス１５０に接続されたＣＰＵ（中央処理装置）１６０とメモリ１７０を示す。記憶装置１００は、入力処理部１０１、圧縮ＦＩＦＯ（ファーストインファーストアウト、先入れ先出し）メモリ１０２、データ数管理部１０３、記憶装置部１０４及び、出力処理部１０５を有する。
図１では、例えば、記憶装置１００と処理装置１１０は、コンピュータ内部のシステムバス１５０に接続されたサブシステムカード上に配置され、そして、システムバス１５０を経由して、ＣＰＵ１６０等から入力されるデータのストリームを、本発明に従って、同一の入力値を圧縮する記憶装置１００により記憶し、記憶装置１００の出力を、処理装置１１０に供給して、処理装置１１０内で処理を行うシステムを示す。本発明においては、システムバス１５０を経由して、ＣＰＵ１６０等から入力されるデータのストリームを構成する入力値は、例えば、処理装置１１０を構成する各構成要素のアドレス値であり、このアドレス値は、ＣＰＵ１６０から処理装置１１０を構成する構成要素に対する命令でもよい。
例えば、システムバス１５０に接続された上記カードは、その上に配置されたＬＳＩ等の処理装置内のマイクロコントローラ等により、ＣＰＵ１６０から受けた命令を、一つずつ処理していくようなシステムである。このような場合には、そのデータの処理速度は、システムバスからの命令の入力値の入力される速度よりも遅い場合が多い。
次に、図１に示す原理的な構成例の動作を説明する、図１においては、入力処理部１０１は、システムバス１５０を経由して入力される入力値に対して、データ記憶装置１０４内の入力値Ａに対応するアドレス位置に、有効な値を有するデータが記憶されているかどうかを決定する。そして、その記憶されているデータが、ゼロのような無効な値である場合には、例えば、１のような、予め定められた初期値を、初期データとして、データ記憶装置１０４内の入力値Ａに対応するアドレス位置に記憶し、且つ、その入力値Ａを、圧縮ＦＩＦＯ（先入れ先出し）メモリ１０２に記憶する。一方、データ記憶装置１０４内の入力値Ａに対応するアドレス位置に、無効な値以外の値のデータが記憶されている場合には、入力値Ａに対応するデータ記憶装置１０４内のアドレス位置に記憶されているデータに、例えば、１を加算するというような、演算を行って、データ記憶装置１０４内の入力値Ａに対応するアドレス位置に書き戻し、且つ、この場合には、入力値Ａを、圧縮ＦＩＦＯメモリ１０２には記憶しない。以上のように動作することにより、圧縮ＦＩＦＯメモリ１０２には、入力された入力値が記憶され、データ記憶装置１０４のこの入力値の示すアドレス位置には、その入力値が何回入力されたかが記憶される。
一方、出力処理部１０５は、１個以上の入力値Ａが、圧縮ＦＩＦＯメモリ１０２に記憶されており且つ入力値Ａに対応するアドレス位置に記憶されているデータが、無効な値以外の値の場合には、圧縮ＦＩＦＯメモリ１０２の先頭に記憶されている入力値Ａを読み出してこれを、出力値Ｆとしして出力する。そして、更に、データ記憶装置１０４から、その出力値Ｆに対応するアドレス位置から、データ記憶装置１０４に記憶されているデータを読み出して出力データＧとして出力する。そして、データ記憶装置１０４内の出力値に対応するアドレス位置には、ゼロのような無効な値を書き戻す。
以上により、本実施例に従った同一の入力値を圧縮する記憶装置は、データ供給側の装置から送られてくるデータのシーケンス内の、同じ種類に属する入力データに対して演算を行って圧縮することにより、有限の記憶領域を有する記憶装置内に、固定の時間で入力データを記憶する処理を行うことができる。
これにより、処理を行う装置にデータのシーケンスの圧縮の装置においては、その処理を待たせる機構が不要になったり、又は、その処理の停止期間が、タイムアウト時間以上とならないことを保証できる。更に、ある特定の種類のデータに対して、圧縮ＦＩＦＯメモリからデータを出力することが偏ることもなく、常に一定時間内に出力を行うことも出来る。これにより上述のように、入力側の装置から送られてくるデータのシーケンスを処理する装置内で、負荷分散が出来るように、データの種類毎に処理を行う装置が分かれている場合でも、同一の入力データに対する処理しか出来なくなるという問題も解消され、負荷分散が可能となる。
本発明は、上記のような構成例に限らず、ＬＳＩチップ間の接続、バスからの入力、通信経路からの入力、ＬＳＩチップ内の機能モジュール間の接続等のような、動作速度の異なる機能単位の間で、データの授受を行う場合に適用できる。
次に、本発明の第１の実施例について以下に説明する。
図２は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置の基本的な構成を示す図であり、図１に示す本発明に従った同一の入力値を圧縮する記憶装置の原理的な構成の中の同一の入力値を圧縮する記憶装置１００の詳細な実施例を示す。図２においては、図１と同一の番号を付した構成要素は、同一の構成要素を示す。
図２において、参照番号２０１は演算部を示す。また、記憶装置部１０４は、アドレス部２０２、データ記憶部２０３及びフラグ記憶部２０４より構成される。フラグ記憶部は、データ記憶部２０３に記憶されているデータが、有効か／無効かを示すフラグ又は、ハードウェア内で何れかの形式のエラーが発生したことを示すフラグ等を、データ記憶部２０３にデータを記憶するときに記憶することができる。
次に、図２の動作の概要を説明する。
図２においては、入力処理部１０１から、図１に示すシステムバス１５０に、入力許可１２０Ｂが送られると、図１と同様に、入力処理部１０１には、システムバス１５０を経由して入力されるアドレス入力Ａの入力値１２０Ａが入力される。この入力値１２０Ａに対して、入力処理部１０１は、データ記憶装置１０４内の入力値Ａに対応するアドレス位置に、有効な値を有するデータが記憶されているかどうかを決定する。例えば、図２に示すように入力値１０２Ａが０ｘ５である場合には、入力処理部１０１は、０ｘ５を、記憶装置部１０４のアドレス部２０２に送り、記憶装置部１０４のデータ記憶部２０３に記憶されているデータを読む。読み出されたデータ１２７は、入力処理部１０１に入力される。この場合には、記憶装置部１０４のアドレス０ｘ５に記憶されているデータＣは、０ｘ０００００００２である。これは、入力処理部１０１が、入力値０ｘ５を既に２回受信したことを示し、有効な値である。
従って、この場合には、データ記憶装置１０４内のアドレス入力Ａである入力値１２０Ａに対応するデータ記憶装置１０４内のアドレス位置０ｘ５に記憶されているデータ０ｘ０００００００２に、演算部２０１内で、例えば、１を加算するというような、演算を行って、その結果であるデータ０ｘ０００００００３を、データ記憶装置１０４内のアドレス位置０ｘ５に書き戻す。しかし、入力値０ｘ５は、圧縮ＦＩＦＯメモリ１０２内に既に存在するので、圧縮ＦＩＦＯメモリ１０２内には、更には記憶しない。入力値０ｘ５が既に、圧縮ＦＩＦＯメモリ１０２内に存在するか否かは、圧縮ＦＩＦＯメモリ１０２内をモニタすることにより検出できる。
一方、出力処理部１０５は、１個以上の入力値１２０Ａが、圧縮ＦＩＦＯメモリ１０２に記憶されているかどうかを検出する。データ数管理部１０３により、圧縮ＦＩＦＯメモリ１０２内への入力と、圧縮ＦＩＦＯメモリ１０２からの出力をモニタすることにより検出できる。また、簡単には、圧縮ＦＩＦＯメモリ１０２のリードポインタとライトポインタのずれからも、検出できる。
本実施例では、出力処理部１０５は、１個以上の入力値１２０Ａが、圧縮ＦＩＦＯメモリ１０２に記憶されており且つ入力値１２０Ａに対応するアドレス位置に記憶されているデータが、有効であるので、圧縮ＦＩＦＯメモリ１０２の先頭に記憶されている入力値である０ｘ３を読み出してこれを、アドレス出力Ｆである出力値１２９Ｆとしして出力する。そして、更に、データ記憶装置１０４から、その出力値０ｘ３に対応するアドレス位置から、データ記憶装置１０４に記憶されているデータ０ｘ０００００００５を読み出して、データ出力Ｇとして出力する。そして、データ記憶装置１０４内の出力値に対応するアドレス位置０ｘ３には無効な値であることを示す値０ｘ００００００００を書き戻す。このときに、フラグ記憶部２０４には、データが無効であることを示すフラグを記憶してもよい。
次に、図３と図４を用いて、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置１００のデータ入力部１０１の構成実施例を説明する。図３は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置のデータ入力処理部１０１の詳細な構成例を示す図である。また、図４は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置のデータ入力処理部１０１の動作のフローチャートを示す図である。
図３のデータ入力処理部１０１は、主に、入力管理部３０１、比較部３０２、選択部３０３、演算部３０４、データ待ち合わせ部３０７、ライトポインタ管理部３０８、及び、＋１加算部３０９より構成される。演算部３０４は、更に、本実施例では、１を加算する加算部３０５と、選択部３０６により構成される。入力処理部１０１は、図４に示されたデータ入力処理部１０１の動作のフローチャートのように動作する。
図４のフローチャートでは、先ず最初に、ステップＳ４０１で、図３の入力イネーブル信号（３１０）が入力されて、処理が開始する。
次に、ステップＳ４０２で、入力処理部１０１から、システムバス１５０を介して、入力許可信号（３１１）が出力される。入力許可信号（３１１）を用いて、記憶装置１００が、その中の入力処理部１０１やデータ記憶装置１０４へアクセスしているときは入力を待たせる。例えば、図１のシステムバス１５０に接続されている場合には、この入力許可信号（３１１）がディスエーブルのときに、アドレス入力Ａ（３１２）があると、入力処理部１０１から図１のＣＰＵ１６０へ、システムバス１５０を介して、リトライが発生する。ただし、入力処理部１０１やデータ記憶装置１０４への書き込み処理にかかる時間よりも、入力間隔が長ければ、入力許可信号による制御は必要ない。
次に、ステップＳ４０３で、アドレス入力Ａ（３１２）が入力されたかどうかが検出される。アドレス入力Ａ（３１２）が入力された場合には、ステップＳ４０４に進み、それ以外の場合には、ステップＳ４０２に戻る。
次に、ステップＳ４０４で、図３のアドレス入力Ａ（３１２）とアドレス出力Ｆ（３１３）を比較部３０２で比較する。アドレス入力Ａ（３１２）とアドレス出力Ｆ（３１３）が同一の場合には、データ出力Ｇ（３１４）が演算部３０４の演算の対象となるので、ステップＳ４１３に進み、選択部３０３により、データＣ（３１５）のうちからデータ出力Ｇ（３１４）を選択する。そのようでない場合には、ステップＳ４０５に進み、記憶装置部１０４からデータＣ（３１５）を読み出し、選択部３０３により、データＣ（３１５）を選択する。
次に、ステップＳ４０６に進み、図３のデータ待ち合わせ部３０７により、読み出されたデータＣ（３１５）が有効か否かが判断される。ステップＳ４０６の判断では、例えば、読み出されたデータＣ（３１５）が、ゼロの場合には無効であり、そして、ゼロ以外の値の場合には有効であると判断してもよい。また、図２の、データ記憶装置１０４のフラグ記憶部２０４に記憶されている、データが有効か否かを示すフラグを、データＣ（３１５）とともに読み出して判断してもよい。
ステップＳ４０６で、データＣ（３１５）が有効であると判断された場合には、ステップＳ４０７に進み、演算部３０４内の加算部３０５により、データＣ（３１５）のような選択器３０３の出力に”１”が加算され、そして、選択部３０６により、加算結果が選択される。そして、ステップＳ４０８で、データ記憶装置１０４にライトアドレス（３１６）と前記加算結果であるライトデータ（３１７）を供給して、データ記憶装置１０４に、データＣ（３１５）に１の加算された新たなデータを書き戻す。そして、データ記憶装置１０４からのライト完了信号（３１８）を受けた後に、入力許可信号（３１１）をイネーブル状態に戻し、処理は、ステップＳ４０２に戻る。
一方、ステップＳ４０６で、データＣ（３１５）が無効であると判断された場合には、ステップＳ４０９に進み、演算部３０４内の選択部３０６により、”１”を選択し、データ記憶装置１０４にライトアドレス（３１６）と”１”であるライトデータ（３１７）を供給して、データ記憶装置１０４に、有効なデータを書き戻す。
次に、データ記憶装置１０４からのライト終了信号（３１８）を受けた後に、ステップＳ４１０に進み、圧縮ＦＩＦＯメモリ１０２への、ライトアドレス（３１９）を発生し、ライトデータ（３２０）を圧縮ＦＩＦＯメモリ１０２に書き込む。
次に、ステップＳ４１１で、ライトポインタ管理部３０８により、加算部３０９を制御してライトポインタを１だけ増加させる。
そして、次に、ステップＳ４１２で、ライトポインタ管理部３０８により、データ保持数を１増加させる指示（３２１）を、図２のデータ数管理部１０３に出力し、圧縮ＦＩＦＯメモリ１０２内に記憶されているデータ数が１増加したことを記憶させる。そして、最後に、圧縮ＦＩＦＯメモリ１０２からのライト完了信号（３２２）を受けた後に、入力許可信号（３１１）をイネーブル状態に戻し、処理は、ステップＳ４０２に戻る。
次に、図５と図６を用いて、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置１００のデータ出力処理部１０５の実施例を説明する。図５は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置の出力処理部１０５の詳細な実施例を示す図である。また、図６は、本発明に従った第１の実施例の同一の入力値を圧縮する記憶装置の出力処理部１０５の動作のフローチャートを示す図である。
図５の出力処理部１０５は、主に、データ保持数が正か否かを判断する判断ブロック５０１、リードポインタ管理部５０２、＋１を加算する加算部５０３、出力データ準備完了制御部５０４及び選択部５０５より構成される。出力処理部１０５は、図６に示されたデータ出力処理部１０５の動作のフローチャートのように動作する。
図６のフローチャートでは、先ず最初に、ステップＳ６０１で、図１の処理装置１１０からの読み出し信号（５０９）が入力されて、処理が開始する。
次に、ステップＳ６０２では、判断ブロック５０１により、図２のデータ数管理部１０３より供給される、データ保持数（５１０）が、正であるか否かが判断される。データ保持数（５１０）が正である場合には、処理はステップＳ６０３に進む。データ保持数（５１０）が正でない場合には、データ保持数（５１０）が正となるまで、ステップＳ６０２を繰返す。
次に、ステップＳ６０３で、リードポインタ管理部５０２により、圧縮ＦＩＦＯメモリ１０２にアドレス信号（５１１）が供給され、圧縮ＦＩＦＯメモリ１０２により、アドレスデータＥ（５１２）が供給される。
次に、ステップＳ６０４で、圧縮ＦＩＦＯメモリ１０２により供給されたアドレスデータＥ（５１２）を、アドレス出力Ｆ（５１３）として、図１の処理装置１１０に出力し、同時に、データ記憶装置１０４のリードアドレス出力（５１４）として、データ記憶装置１０４に供給し、データ記憶装置１０４からそのアドレス出力（５１４）に記憶されているデータ（５１５）を受信する。
次に、ステップＳ６０５で、データ記憶装置１０４のリードアドレス出力（５１４）の記憶内容に無効値を書き込んで、無効化する。このときには、データ記憶装置１０４内のフラグ記憶部２０４に無効であることを示すフラグを書き込むこともできる。
次に、ステップＳ６０６で、リードポインタ管理部５０２は、加算部５０３を使用して、圧縮ＦＩＦＯメモリ１０２のリードポインタを１だけ増加させる。
次に、ステップＳ６０７で、出力データ準備完了制御部５０４により、図１の処理装置１１０に、データ出力Ｇの準備が完了したことを示す通知（５１６）を送る。
次に、ステップＳ６０８では、出力データ準備完了制御部５０４により、図１の処理装置１１０が、要求信号（５１７）を出力したかどうかが検査される。図１の処理装置１１０が、要求信号（５１７）を出力している場合には、ステップＳ６０９に進み、要求信号（５１７）を出力していない場合には、ステップＳ６１０へ進む。
次に、ステップＳ６０９では、選択器５０５を制御して、データ記憶装置１０４から読み出されたデータ（５１５）を、データ出力Ｇ（５２０）として、図１の処理装置１１０に出力する。
ステップＳ６１０では、入力処理部１０１に、システムバス１５０から、現在処理装置１１０に出力使用としている、アドレス出力Ｆ（５１３）と同一のアドレス入力Ａ（３１２）があったか、どうかが検査される。同一のアドレス入力Ａ（３１２）がない場合には、ステップＳ６０７に進む。同一のアドレス入力Ａ（３１２）があった場合には、ステップＳ６１２に進み、図３の比較器３０２より供給される比較信号５１８により、選択器５０５を切り換えて、図３の出力処理のデータ置き換えのための読み出しを待っていたデータに入力を反映した値を有するデータ（５１９）を選択して、データ出力Ｇ（５２０）として、図１の処理装置１１０に出力する。そして、ステップＳ６１２の終了後に、ステップＳ６０７に戻る。
ステップＳ６０９では、リードポインタ管理部５０２が、圧縮ＦＩＦＯメモリ１０２からデータを１つ読み出したので、図２のデータ数管理部１０３に、データ保持数を１つ減ずる指示（５２１）を送る。
次に、本発明の第２の実施例を説明する。図７は、本発明に従った第２の実施例の同一の入力値を圧縮する記憶装置の構成を示す図である。図７において、図２と同一番号を付した構成要素は同一の構成要素を示す。図２においては、入力処理部１０１の演算部２０１が、外部より制御する構成ではなく、例えば、１を加算するというような、予め定められた所定の演算を行う構成である。しかし、本実施例においては、図２に示す実施例と異なり、この演算部２０１の行う演算を、外部から入力するデータ入力Ｈ（１２０Ｃ）を用いて演算を行う構成とした。即ち、図７の実施例は、図２の実施例と同一の動作を行い、演算に際してのみ、外部から入力するデータ入力Ｈ（１２０Ｃ）を用いて演算を行う構成とした。
また、本実施例では、演算部２０１の行う演算を、加算のような予め定められた演算ではなく、データＣに対して行う演算を予め定めずに、アドレス入力Ａ、データＣ、外部から入力するデータ入力Ｈ（１２０Ｃ）、または、その組み合わせ、または外部から演算内容を設定することにより決定することができる。これにより、アドレス入力Ａの全てのアドレス空間で同一のデータ操作を行わない場合や或は、処理の途中で演算内容を変えることができる。
また、図７の実施例では、ある特定のアドレス入力Ａまたはあるアドレス入力Ａに対する特定のデータ入力Ｈが入力された場合等に、対応するデータＣを無効化するようにしてもよい。これは、圧縮ＦＩＦＯメモリ１０２には、既にそのアドレス入力Ａが書き込まれているので、圧縮ＦＩＦＯメモリ１０２からその情報を消去することは難しいので、データ記憶装置１０４内に記憶されたデータ自体に無効であるという情報を保持させる。そして、圧縮ＦＩＦＯメモリ１０２から、無効なデータの記憶されたアドレス入力Ａが読み出された場合には、処理装置１１０に、このデータが無効であるという情報を付加して供給する。または、その情報を、処理装置１１０には供給せずに破棄して、次のデータの読み出しに移る。これは、処理装置１１０が、期待したタイミング以外で、処理装置１１０に記憶装置１００からデータが供給された場合ときには、エラーとするようになっている場合において、まだデータ記憶装置１０４内に保持されているデータが供給されたときに、処理装置１１０がエラーとして扱わないように、することを保証するための機構である。
データ記憶装置１０４の無効化されたデータを記憶しているアドレスへ、データが入力された場合には、入力処理部１０１の処理は、データが既にデータ記憶装置１０４に記憶されている場合の処理に従う。しかし、演算は行わずに、入力データを、そのままデータ記憶装置１０４に書き戻す（データの扱いについてはデータ記憶装置１０４にデータが書かれていない場合の操作と同じとなる）。
次に、本発明の第３の実施例について説明する。図８は、本発明に従った第３の実施例の同一の入力値を圧縮する記憶装置の出力処理部１０５の動作のフローチャートを示す図である。
本実施例は、ＦＩＦＯメモリのアドレス出力Ｆに対応するデータ出力Ｇを行わずに、アドレス出力Ｆを、データ記憶装置１０４に記憶された値を１づつ減少させながら、その回数分だけ行う構成である。これは、複数のアドレス入力Ａが記憶されているが、しかし図１の処理装置１１０側では１個ずつしか処理を行えない場合に有効である。
図８のステップＳ８０１からＳ８０４の動作内容は、それぞれ図６のステップＳ６０１からＳ６０４と同様であり、図８のステップＳ８１４からＳ８１７の動作内容は、それぞれ図６のステップＳ６０５からＳ６０８と同様であり、そして、図８のステップＳ８１１からＳ８１３の動作内容は、それぞれ図６のステップＳ６０７からＳ６０９と同様である。
図８のフローチャートでは、ステップＳ８０１からＳ８０４の各動作は、それぞれ図６のステップＳ６０１からＳ６０４の処理と同様である。
次に、ステップＳ８０５で、データ記憶装置１０４内に記憶されたデータが、２以上であるかどうかが検査される。データ記憶装置１０４内に記憶されたデータが、２以上である場合には、ステップＳ８０６に進み、そして、２以上でない場合には、ステップＳ８１４に進む。
ステップＳ８１４からステップＳ８１７の各動作は、図６のステップＳ６０５からＳ６０８と同様である。
ステップＳ８０６では、データ記憶装置１０４内に記憶されたデータ値を”１”だけ減じる。そして、ステップＳ８０７で、データ記憶装置１０４内に、”１”だけ減じられたデータ値を書き戻す。
次に、ステップＳ８０８で、圧縮ＦＩＦＯメモリ１０２のライトポインタの位置へ、アドレス出力Ｆを書き込む。
次に、ステップＳ８０９で、圧縮ＦＩＦＯメモリ１０２のライトポインタを更新し、そして、続いてステップＳ８１０で、リードポインタを更新する。
次のステップＳ８１１からＳ８１３の各動作は、図６のそれぞれ図６のステップＳ６０７からＳ６０９と同様である。
本実施例では、ライトポインタの更新が入力処理部１０１と出力処理部１０５の両方から行う必要があるため、一時には、何れか一方のみしか行わないようにする排他処理を設ける。しかし、データ記憶装置１０４への書き戻しが発生した場合（データが２以上の場合）には、データを保持しているエントリ数は変化しないため、データ保持数は変化しない。
次に、本発明の第４の実施例を説明する。図９は、本発明に従った第４の実施例を示す図である。本実施例は、図７に示す、第２に実施例の演算が期待値と異なる結果が得られた場合の実施例である。
例えば、図７の入力処理部１０１中の演算部２０１の演算結果が、データＣ、外部から入力するデータ入力Ｈ（１２０Ｃ）、アドレス入力Ａ、又は、その組み合わせから期待される値にならない場合には、そのエラー情報を、フラグ記憶部２０４に、保持することができる。また、データ記憶装置１０４のデータ記憶部２０３には演算結果のままのデータを記憶するする。一旦このような状態になった後に、更に、行った演算で期待する結果に戻る可能性もあるため、このエラー情報は保持しつづける。データがある所定の値以上にならないことが期待される場合や、アドレス入力Ａが記録されない等の異常が無いことを検出することができる。
このフラグ記憶部２０４に記憶された情報は、記憶装置１００からのデータの出力時に、データの一部または、データとは別の情報として、処理装置１１０に供給される。
この例を、図９に示す。例えば、あるアドレス入力に対するデータＨについて，保持しているデータＣとの間に次の関係、
データＣ［１５：０］＋データＨ［３１：１６］＝データＨ［１５：０］        （１）
が成り立つことが期待されているとする。そして、このときに、データＣとして保持するデータは次のように得られる。
新データＣ［３１：１６］＝データＣ［３１：１６］＋データＨ［３１：１６］  （２）
新データＣ［１５：０］＝データＨ［１５：０］                              （３）
ただし，データＣが無効である場合はチェックは行われず，データＣは０ｘ００００００００であったとして扱われる。ここで、［３１：１６］は、データがビット０から３１ビットを有するとしたときの、データの第３１ビットから１６ビット目のデータに対応する。ここで、ビット０が最小桁ビット（ＬＳＢ）である
図９に示す例では、（Ａ）から（Ｃ）の場合には上記関係が成立するが、しかし、（Ｄ）の場合には、上述の式（１）の条件を満足しない。従って、エラー情報ｅを、フラグ記憶部２０４に保持し、そのデータがデータ記憶装置１０４から読み出される時に同時に読み出すことにより、処理装置１１０は、データが誤りであることがわかり、誤った処理を防ぐことができる。
また、データ記憶装置１０４からの読み出しの際に、修復不能なハードウェア的なエラーが発生した場合には、そのエラー情報をデータ記憶装置１０４内に合わせて保持することも可能である。演算自体は、間違っていると考えられるデータに対して実行し、そして演算結果をデータ記憶装置１０４内に保持する。一旦、このような状態になったあとは、このエラー情報は保持しつづける。この結果、ハードウェアのエラー発生時に、出来る限りその影響を少なくすることができる。ハードウェアのエラーが起こった場合には、処理装置１１０にデータ記憶装置１０４に保持されているエラーを通知して、エラー範囲をそのアドレス入力Ａを使用しているものだけに限定することが可能となる。このデータ記憶装置１０４に記憶されているエラー情報は、データ記憶装置１０４から出力する際に、データの一部またはデータとは別の情報として、処理装置１１０に供給される。
次に、本発明の第５の実施例について説明する。図１０は、本発明に従った第５の実施例を示す図である。図１０は、図２に示す実施例のうち、入力処理部１０１データ記憶装置１０４及び出力処理部１０５の部分及び、そして、更にキャッシュメモリ１００１を示す。本実施例では、キャッシュメモリ１００１は、データ記憶装置１０４の出力と、入力処理部１０１に接続されておりそして、その両方からデータが入力され、そして、出力処理部１０５にデータを出力する。
本実施例は、例えば、広いアドレス空間のアドレス入力Ａを記憶する等の場合には、データ記憶装置１０４として、アクセスレイテンシの大きなメモリを使用する場合がある。この場合には、よく使用されることが期待されるアドレス入力Ａに対して記憶されるデータは、動作速度の速いメモリを使用したり、又は、最初の数回のアドレス入力Ａは、データ記憶装置１０４内にその回数を書き込まずに、動作速度の速いメモリであるキャッシュメモリ１００１に保持する。そして、再度のアドレス入力Ａがあったときのデータ加算時には、データ記憶装置１０４とキャッシュメモリ１００１のどちらに保持しているかを判断して、入力処理部１０１が入力を行う。これにより記憶装置へのアクセスレイテンシを小さく見えるようにすることができる。
【図１】
2004051492.tif 000003
【図２】
2004051492.tif 000004
【図３】
2004051492.tif 000005
【図４】
2004051492.tif 000006
【図５】
2004051492.tif 000007
【図６】
2004051492.tif 000008
【図７】
2004051492.tif 000009
【図８】
2004051492.tif 000010
【図９】
2004051492.tif 000011
【図１０】
2004051492.tif 000012
【国際調査報告】
2004051492.tif 000013
2004051492.tif 000014
2004051492.tif 000015