(57)【特許請求の範囲】
【請求項１】
データの送受信に用いられるメモリ装置において、
データ送信元から出力される前記データを格納し、前記データの出力先であるデータ送信先に対して前記データを出力するデータバッファと、
前記データ送信元が受動的にデータを出力するか否か、および前記データ送信先が受動的にデータを入力するか否か、を初期設定命令の有無により判断し、少なくとも、前記データ送信元が受動的にデータを出力する、または、前記データ送信先が受動的にデータを入力すると判断した場合に、前記初期設定命令により動作条件が設定されるレジスタを備える判断部と、
前記データ送信元が、受動的にデータを出力することが予め定められているとき、前記レジスタに設定された動作条件に基づき所定のタイミングで前記出力されるデータを前記データバッファに転送し、前記データ送信元が、自ら前記データバッファへのデータ転送を起動するユニットである場合は前記レジスタに動作条件が設定されないことで起動しない送信元データ転送部と、
前記データ送信先が、受動的にデータを入力することが予め定められているとき、前記レジスタに設定された動作条件に基づき所定のタイミングで前記データ送信先にデータを転送し、前記データ送信先が、自ら前記データバッファからのデータ転送を起動するユニットである場合は前記レジスタに動作条件が設定されないことで起動しない送信先データ転送部と、
を備えることを特徴とするメモリ装置。
【請求項２】
前記データ送信元は、ＣＰＵまたはメモリであり、
前記データ送信元が前記メモリであるとき、前記送信元データ転送部が前記出力されるデータを前記データバッファに転送することを特徴とする請求項１記載のメモリ装置。
【請求項３】
前記ＣＰＵが前記データ送信先を兼ねることを特徴とする請求項２記載のメモリ装置。
【請求項４】
前記メモリが前記データ送信先を兼ねることを特徴とする請求項２記載のメモリ装置。
【請求項５】
前記データ送信先は、ＣＰＵまたはメモリであり、
前記データ送信先が前記メモリであるとき、前記送信先データ転送部が前記データ送信先にデータを転送することを特徴とする請求項１記載のメモリ装置。
【請求項６】
前記送信元データ転送部または前記送信先データ転送部がデータを転送するときは、前記データを連続して転送することを特徴とする請求項１記載のメモリ装置。
【請求項７】
前記送信元データ転送部または前記送信先データ転送部がデータを転送するときは、前記データ毎に一定の間隔を保って転送することを特徴とする請求項１記載のメモリ装置。
【請求項８】
前記送信元データ転送部または前記送信先データ転送部がデータを転送するときは、前記データ毎に一定の間隔を保つ複数のデータ集合体を作成し、前記各データ集合体を一定の間隔を保った状態で転送することを特徴とする請求項１記載のメモリ装置。
【請求項９】
前記データバッファはＦＩＦＯ制御を行うよう構成されていることを特徴とする請求項１記載のメモリ装置。
【請求項１０】
ライト信号の入力により、前記データバッファ内の前記データの書き込み先のアドレスを指示するライトポインタと、リード信号の入力により前記データバッファ内の前記データの読み出し先のアドレスを指示するリードポインタとに基づいて、前記データバッファのシーケンス制御を行うアドレス制御部を備えることを特徴とする請求項１記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ装置に関し、特にデータの送受信を行うメモリ装置に関する。
【背景技術】
【０００２】
現在のコンピュータ等においては、データの送受信を行うための種々のバッファ（送受信手段）が存在する。
例えば、１つのＣＰＵ（Central Processing Unit）内でのデータ転送の手段として、割り込みや関数のコールに応じるためにレジスタ等の情報を一時的に退避しておくための領域として用いられるスタックメモリが知られている。スタックメモリは、一般的には、通常の一次元のメモリ上にスタックポインタを用いて実装する。
【０００３】
また、異なるＣＰＵ間でのデータ転送の手段として、ソフトウェアによるインタフェースを構築する共有メモリが知られている。
また、ＣＰＵとメモリとの間のデータ転送の手段としては、キャッシュメモリが知られている。
【０００４】
キャッシュメモリはハードウェアが制御を行うので、ソフトウェアはその構造を意識する必要はなく、非常に汎用性の高いデータバッファである。また、キャッシュメモリはデータの入れ替えをハードウェアが自動で行うので、ソフトウェアによるデータのアクセスの容易性という点ではシームレスであるという利点がある。
【０００５】
しかしながら、キャッシュメモリは、データの転送単位がキャッシュラインサイズで規定されるため、離散的なデータに対しては非効率的であり、また、元々データアクセスの時間的・空間的局所性を活用した技術であるため、再利用性のないデータへのアクセスについては無駄に容量を消費してしまい(キャッシュを汚す状態となり)、性能低下につながるという問題がある。さらに、キャッシュ容量によってはＣＰＵの演算性能に大きな差が出てしまうという問題がある。
【０００６】
そこで、キャッシュメモリと併用することにより、再利用性のないデータについても無駄にキャッシュメモリの容量を消費することなく（キャッシュを汚すことなく）バッファリングすることができるストリームバッファを備えた記憶装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平９−３１９６５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、スタックメモリ、共有メモリは、専用のハードウェア・ソフトウェアの枠組みを設ける必要があり、汎用性が低いという問題がある。また、特許文献１に記載の記憶装置は、ＣＰＵとメモリ間の送受信においてのみ使用可能であり、他の構成に適用することが難しいという問題がある。
【０００９】
以上をまとめると、従来のデータの送受信手段を構成するハードウェアは、送受信を行う制御対象（ＣＰＵ、メモリ）の組み合わせに応じて適宜変更を行う必要があった。すなわち、任意のデータ通信のインフラを統一的に提供できる枠組みが存在しなかった。
【００１０】
本発明はこのような点に鑑みてなされたものであり、ハードウェア構造を変化させることなく種々の送信元および送信先に対応することができるメモリ装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記問題を解決するために、データの送受信に用いられるメモリ装置において、データ送信元から出力される前記データを格納し、前記データの出力先であるデータ送信先に対して前記データを出力するデータバッファと、前記データ送信元が、受動的にデータを出力することが予め定められているとき、所定のタイミングで前記出力されるデータを前記データバッファに転送し、前記データ送信元が、自ら前記データバッファへのデータ転送を起動するユニットである場合使用されない送信元データ転送部と、前記データ送信先が、受動的にデータを入力することが予め定められているとき、所定のタイミングで前記データ送信先にデータを転送し、前記データ送信先が、自ら前記データバッファからのデータ転送を起動するユニットである場合使用されない送信先データ転送部と、を備えることを特徴とするメモリ装置が提供される。
【発明の効果】
【００１２】
本発明によれば、メモリ装置に接続されるデータ送信元およびデータ送信先に拘わらず、メモリ装置のハードウェア構成を変更することなく確実にデータの送受信を行うことができる。これにより、システム開発の効率を向上させることができる。
【００１３】
また、送信元アドレス変換部および送信先アドレス変換部が必要に応じて配列処理を行うことにより、配列処理を行った後に別個ソフトウェアによる再配列処理を省略することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の概要を示す原理図である。
【図２】データ送受信システムを示すブロック図である。
【図３】入力用アドレス変換部の内部構造を示すブロック図である。
【図４】出力用アドレス変換部の内部構造を示すブロック図である。
【図５】シフトレジスタの内部構造を示すブロック図である。
【図６】ＲＡＭとアドレス制御部との構造を示すブロック図である。
【図７】データ送受信システムの６つの構成例を示す図（表）である。
【図８】オプションＢにおけるＲＡＭの書き込み・読み出し動作の一例を示す概要図である。
【図９】オプションＥにおけるＲＡＭの書き込み・読み出し動作の一例を示す概要図である。
【図１０】構成１のデータ送受信システムを示すブロック図である。
【図１１】第１の転送モードを示す概略図である。
【図１２】連続アクセスモードを用いる例を示す概略図である。
【図１３】第２の転送モードを示す概略図である。
【図１４】ディスタンスアクセスモードを用いる例を示す概略図である。
【図１５】第３の転送モードを示す概略図である。
【図１６】マルチディスタンスアクセスモードを用いる例を示す概略図である。
【図１７】構成２のメモリ装置を示すブロック図である。
【図１８】構成３のメモリ装置を示すブロック図である。
【図１９】構成４のメモリ装置を示すブロック図である。
【図２０】構成５のメモリ装置を示すブロック図である。
【図２１】構成６のメモリ装置を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図１は、本発明の概要を示す原理図である。
図１に示すデータ送受信システム１０は、メモリ装置１と、データ送信元２と、データ送信先３とを有している。
【００１６】
メモリ装置１は、データバッファ４と、送信元アドレス変換部５と、送信先アドレス変換部６とを有している。
データバッファ４は、データ送信元２から出力されるデータを格納し、データの出力先であるデータ送信先３に対してデータを出力する。
【００１７】
送信元アドレス変換部５は、データ送信元２が受動的にデータを出力するものであるとき、すなわちデータ送信元２がデータバッファ４にデータの出力を行う際に、外部からデータ出力命令を受ける必要があるとき、データ送信元２からデータバッファ４に出力されるデータの配列処理を行う。
【００１８】
送信先アドレス変換部６は、データ送信先３が受動的にデータを入力するものであるとき、すなわちデータ送信先３がデータバッファ４からのデータの入力を行う際に、外部からデータ入力命令を受ける必要があるとき、データバッファ４からデータ送信先３にデータを転送する際のデータの配列処理を行う。
【００１９】
以下、本発明の実施の形態を図面を参照して説明する。
図２は、データ送受信システムを示すブロック図である。
データ送受信システム１００は、ストリームバッファ（メモリ装置）１１０にデータを入力するデータ送信元としてＣＰＵ１０１またはメモリ１０３が選択され、ストリームバッファ１１０からデータが出力されるデータ送信先としてＣＰＵ１０１、１０２、メモリ１０３、１０４のうちのいずれか１つが選択されて使用されるシステムである。
【００２０】
図２では、一例としてデータ送信元としてＣＰＵ１０１が選択され、データ送信先としてメモリ１０４が選択されている。
ストリームバッファ１１０は、ＣＰＵ１０１に接続される入力ポート１１１と、入力ポート１１１に入力されるデータをバッファするシフトレジスタ１１２ａおよびＲＡＭ（Random Access Memory）１１２ｂと、必要に応じてＲＡＭ１１２ｂにバッファされているデータの読み出し先、書き込み先を指定するアドレス制御部１１２ｃとを備えるデータバッファ１１２と、入力ポート１１１からデータバッファ１１２に入力される（データバッファ１１２に転送される）データを必要に応じて所望のタイミングで出力させることができる入力用アドレス変換部１１３と、メモリ１０４に接続される出力ポート１１４と、データバッファ１１２からメモリ１０４に出力される（メモリ１０４に転送される）データを必要に応じて所望のタイミングで出力させることができる出力用アドレス変換部１１５とを有している。
【００２１】
入力ポート１１１から出力されるデータは、後述するデータバッファアクセスモードのオプションＡ〜Ｆに応じてシフトレジスタ１１２ａまたはＲＡＭ１１２ｂに入力される（シフトレジスタ１１２ａまたはＲＡＭ１１２ｂが選択される）。
【００２２】
次に、ストリームバッファ１１０の各部の構造について説明する。
図３は、入力用アドレス変換部の内部構造を示すブロック図である。
入力用アドレス変換部１１３は、スタートアドレスレジスタ１２１とカウンタ１２２とＡＬＵ１２３とアクセスアドレスレジスタ１２４とエンドアドレスレジスタ１２５と比較部１２６とを有している。
【００２３】
入力用アドレス変換部１１３は、後述するレジスタ設定命令が入力されると、その動作を開始する。
スタートアドレスレジスタ１２１は、データバッファ１１２へのデータ転送のスタートアドレスを示すレジスタであり、レジスタ設定命令が入力されると、スタートアドレスをＡＬＵ１２３に出力する。
【００２４】
カウンタ１２２は、アクセスアドレスレジスタ１２４にアクセスが行われる毎にカウント値をインクリメントし、そのカウント値をＡＬＵ１２３に出力する。
ＡＬＵ１２３は、スタートアドレスレジスタ１２１から出力されるスタートアドレスにカウンタ１２２のカウント値の情報を付加して、その結果をアクセスアドレスレジスタ１２４に出力する。
【００２５】
アクセスアドレスレジスタ１２４は、ＡＬＵ１２３からの出力があると、アクセスアドレスレジスタ１２４の値を入力ポート１１１に出力し、カウント値を比較部１２６に出力する。
【００２６】
エンドアドレスレジスタ１２５は、データバッファ１１２へのデータ転送の終了アドレスが格納されるレジスタである。
比較部１２６は、アクセスアドレスレジスタ１２４の値とエンドアドレスレジスタ１２５の値とを比較し、その値が等しいとき、データ転送の終了を表す転送完了割り込み信号を出力する。
【００２７】
図４は、出力用アドレス変換部の内部構造を示すブロック図である。
出力用アドレス変換部１１５は、スタートアドレスレジスタ１３１とカウンタ１３２とＡＬＵ１３３とアクセスアドレスレジスタ１３４とエンドアドレスレジスタ１３５と比較部１３６とを有している。
【００２８】
出力用アドレス変換部１１５は、レジスタ設定命令が入力されると、その動作を開始する。
スタートアドレスレジスタ１３１は、データバッファ１１２の出力側に接続されるデータ送信先（本実施の形態ではメモリ１０４）へのデータ転送のスタートアドレスを示すレジスタであり、レジスタ設定命令が入力されると、スタートアドレスをＡＬＵ１３３に出力する。
【００２９】
カウンタ１３２は、アクセスアドレスレジスタ１３４にアクセスが行われる毎にカウント値をインクリメントし、そのカウント値をＡＬＵ１３３に出力する。
ＡＬＵ１３３は、スタートアドレスレジスタ１３１から出力されるスタートアドレスにカウンタ１３２のカウント値の情報を付加して、その結果をアクセスアドレスレジスタ１３４に出力する。
【００３０】
アクセスアドレスレジスタ１３４は、ＡＬＵ１３３からの出力があると、アクセスアドレスレジスタ１３４の値を出力ポート１１４に出力し、カウント値を比較部１３６に出力する。
【００３１】
エンドアドレスレジスタ１３５は、メモリ１０４へのデータ転送の終了アドレスが格納されるレジスタである。
比較部１３６は、アクセスアドレスレジスタ１３４の値とエンドアドレスレジスタ１３５の値とを比較し、その値が等しいとき転送完了割り込み信号を出力する。
【００３２】
図５は、シフトレジスタの内部構造を示すブロック図である。
シフトレジスタ１１２ａは、（ｎ＋１）個（ｎは１以上の整数）のバッファ０、１、・・・、ｎ−１、ｎを有している。
【００３３】
また、シフトレジスタ１１２ａの書き込みアドレスは、バッファｎから始まり、バッファｎ−１、バッファｎ−２、バッファｎ−３、・・・と順次アドレスが進む。また、読み出しアドレスは、バッファ０から始まり、バッファ１、バッファ２、バッファ３、・・・と順次アドレスが進む。
【００３４】
図６は、ＲＡＭとアドレス制御部との構造を示すブロック図である。
なお、図６ではシフトレジスタ１１２ａの図示を省略している。
ＲＡＭ１１２ｂは、複数のメモリセルを備える（ｎ＋１）行（ｎは１以上の整数）のバッファ０、１、・・・、ｎ−１、ｎで構成されている。
【００３５】
アドレス制御部１１２ｃは、ＲＡＭ１１２ｂにデータを書き込む際の（ライトアクセスする）アドレスを指定するライトポインタ（以下「ＷＰ」という）を生成するＷＰ生成部１４１と、ＲＡＭ１１２ｂからデータを読み出す際の（リードアクセスする）アドレスを指定するリードポインタ（以下「ＲＰ」という）を生成するＲＰ生成部１４２と、ライトポート１４３とリードポート１４４とを有している。
【００３６】
ＷＰ生成部１４１により生成されたＷＰは、ライトポート１４３を介してＲＡＭ１１２ｂに出力される。また、ＲＰ生成部１４２により生成されたＲＰは、リードポート１４４を介してＲＡＭ１１２ｂに出力される。
【００３７】
次に、データ送受信システム１００の構成例について説明する。
図７は、データ送受信システムの６つの構成例を示す図（表）である。
図７では、横方向に、「入力側」、「出力側」、「入力用アドレス変換部」、「出力用アドレス変換部」、「転送モード」、「データバッファアクセスモード」の欄が設けられている。各欄の横方向に並べられた情報同士が互いに関連づけられて各構成に関する情報を構成している。
【００３８】
「入力側」の欄には、ストリームバッファ１１０の入力側に接続されるデータ送信元を示している。構成１、３、４では、ＣＰＵ１０１がデータ送信元として選択され、構成２、５、６ではメモリ１０３が選択される。
【００３９】
「出力側」の欄には、ストリームバッファ１１０の出力側に接続されるデータ送信先を示している。構成１、５ではメモリ１０４がデータ送信先として選択され、構成２、３ではＣＰＵ１０２がデータ送信先として選択され、構成４ではＣＰＵ１０１がデータ送信先として選択され、構成６ではメモリ１０３がデータ送信先として選択される。
【００４０】
ここで、構成４ではＣＰＵ１０１がデータ送信元とデータ送信先とを兼ねている。同様に、構成６ではメモリ１０３がデータ送信元とデータ送信先とを兼ねている。
そして、構成１〜６では選択したＣＰＵ、メモリがストリームバッファ１１０と組み合わされて用いられる。
【００４１】
「入力用アドレス変換部」の欄は、入力用アドレス変換部１１３を使用する必要があるか否かを示している。
ストリームバッファ１１０の入力側にＣＰＵ１０１のような自らデータ転送を起動する能動的なユニットを接続した場合、ストリームバッファ１１０へのデータの入力は、ＣＰＵ１０１が主体的に行う。よって、構成１、３、４では入力用アドレス変換部１１３を使用することなく、所望のタイミングでデータの転送を行うことができるため、入力用アドレス変換部１１３は必要ではない。
【００４２】
一方、ストリームバッファ１１０の入力側にメモリ１０３のような受動的なユニットを接続した場合、すなわち構成２、５、６では、ストリームバッファ１１０への所望のタイミングでのデータの入力は、入力用アドレス変換部１１３を使用する必要がある。
【００４３】
「出力用アドレス変換部」の欄は、出力用アドレス変換部１１５を使用する必要があるか否かを示している。
ストリームバッファ１１０の出力側にＣＰＵ１０２のような自らデータ転送を起動する能動的なユニットを接続した場合、ストリームバッファ１１０からのデータの出力は、ＣＰＵ１０２が主体的に行う。よって、構成２、３、４では出力用アドレス変換部１１５を使用することなく所望のタイミングでデータの転送を行うことができるため、出力用アドレス変換部１１５は必要ではない。
【００４４】
一方、ストリームバッファ１１０の出力側にメモリ１０３、１０４のような受動的なユニットを接続した場合、すなわち構成１、５、６では、ストリームバッファ１１０からの所望のタイミングでのデータの出力は、出力用アドレス変換部１１５を使用する必要がある。
【００４５】
「転送モード」の欄は、転送モードが使用可能か否かを示している。転送モードは、入力側、出力側のうちの少なくとも一方にＣＰＵを用いない構成において、データ送信元からデータバッファ１１２にデータを転送する際のデータの配列処理、またはデータバッファ１１２からデータ送信先にデータを転送する際のデータの配列処理のオプション、換言すればデータを所望の距離（間隔）で転送するためのオプションであり、構成１、２、５、６で使用可能である。なお、転送モードについては後に詳述する。
【００４６】
「データバッファアクセスモード」の欄は、データバッファ１１２にどのようにデータを書き込むか、またはデータバッファ１１２からどのようにしてデータを読み出すかを指定するオプションである。アクセスモードにはオプションＡ〜Ｅの５つのオプションが存在する。
【００４７】
次に、オプションＡ〜Ｅについて説明する。
＜オプションＡ＞
オプションＡではデータの格納先としてシフトレジスタ１１２ａが選択される。
【００４８】
シフトレジスタ１１２ａへのデータの書き込み時には、入力ポート１１１からバッファｎに対してデータが書き込まれ、バッファｎ−１、バッファｎ−２、・・・と順次データが書き込まれる。書き込んだデータの読み出し時には、バッファ０から出力ポート１１４にデータの読み出しが始まり、バッファ１、バッファ２、バッファ３、・・・と順次データが読み出される。すなわち、オプションＡでは、シフトレジスタ１１２ａ（データバッファ１１２）をＦＩＦＯ（First-In-First-Out）として使用する。
【００４９】
このオプションＡでは、ＦＩＦＯ構造により，バッファの容量に拘わらずシームレスな環境を提供することができる。また、データバッファ１１２の制御をソフトウェアを用いずに行うことができるため、汎用性が高く、また、ソフトウェアの実行によるＣＰＵの負担を軽減させることができる。
【００５０】
ところでオプションＡは、ストリームバッファ１１０に接続されるＣＰＵ１０１、１０２およびメモリ１０３、１０４に関係なく選択することができる。よって、オプションＡは構成１〜６で選択可能なオプションである。
【００５１】
＜オプションＢ＞
オプションＢではデータの格納先としてＲＡＭ１１２ｂが選択される。
オプションＢは、ＲＡＭ１１２ｂでオプションＡと同様にＦＩＦＯを実現するオプションである。オプションＢは、ＷＰおよびＲＰを指定することにより、ＲＡＭ１１２ｂの書き込みアドレスおよび読み出しアドレスを指定する。ＷＰおよびＲＰを指定する必要があるため、ストリームバッファ１１０にＣＰＵ１０１、１０２の少なくとも１つが接続される必要がある。よって、オプションＢは構成１〜４で選択可能なオプションである。
【００５２】
次に、オプションＢにおけるＲＡＭ１１２ｂのデータの書き込み・読み出し動作について説明する。
図８は、オプションＢにおけるＲＡＭの書き込み・読み出し動作の一例を示す概要図である。
【００５３】
なお、以下では説明を分かり易くするため、データ書き込み対象のアドレスおよびデータ読み出し対象のアドレスを矢印で指し示す。
まず、ＷＰおよびＲＰをバッファ０に指定する。この状態を初期状態とする。次に、ＷＰをバッファ１に指定する（ステップＳ１）。これによりバッファ１にデータが書き込まれる。このときＲＰはバッファ０に指定されているため、バッファ０のデータが読み出される。次に、ＷＰをバッファ２に指定する（ステップＳ２）。これによりバッファ２にデータが書き込まれる。次に、ＲＰをバッファ１に指定する（ステップＳ３）。これによりバッファ１のデータが読み出される。次に、ＲＰをバッファ０に指定する（ステップＳ４）。これによりバッファ０のデータが再び読み出される。次に、ＲＰをバッファ１に指定する（ステップＳ５）。これによりバッファ１のデータが再び読み出される。
【００５４】
このオプションＢでは、オプションＡと同様にＦＩＦＯを実現することができる。さらに、ＲＰを巻き戻す（ステップＳ３〜ステップＳ４の動作）ことにより、同じデータを再び取り出すことができる。
【００５５】
＜オプションＣ＞
オプションＣではデータの格納先としてＲＡＭ１１２ｂが選択される。
オプションＣは、入力ポート１１１に接続したデータ送信元はＲＡＭ１１２ｂのアドレスを直接指定する。また、データの読み出しはＲＰを指定することにより行う。書き込み時にＲＡＭ１１２ｂのアドレスを直接指定する必要があるため、入力ポート１１１にＣＰＵ１０１が接続される必要がある。よって、オプションＢは構成１、３、４で選択可能なオプションである。
【００５６】
このオプションＣでは、データを再利用することができ、ストリームバッファ１１０をメモリのように使用することができる。
＜オプションＤ＞
オプションＤではデータの格納先としてＲＡＭ１１２ｂが選択される。
【００５７】
オプションＤは、出力ポート１１４に接続したデータ送信先はＲＡＭ１１２ｂのアドレスを直接指定する。また、データの書き込みはＷＰを指定することにより行う。読み出し時にＲＡＭ１１２ｂのアドレスを直接指定する必要があるため、出力ポート１１４にＣＰＵ１０１またはＣＰＵ１０２が接続される必要がある。よって、オプションＤは構成２、３、４で選択可能なオプションである。
【００５８】
このオプションＤでは、データを再利用することができ、ストリームバッファ１１０をメモリのように使用することができる。
＜オプションＥ＞
オプションＥではデータの格納先としてＲＡＭ１１２ｂが選択される。
【００５９】
オプションＥは、ＲＡＭ１１２ｂ内でＦＩＬＯ（First-in-Last-out）を実現するオプションである。オプションＥは、ＷＰで書き込んだ直前のアドレスにＲＰを指定する。ＷＰおよびＲＰを指定する必要があるため、ストリームバッファ１１０にＣＰＵ１０１、１０２の少なくとも１つが接続される必要がある。よって、オプションＥは構成１〜４で選択可能なオプションである。
【００６０】
次に、オプションＥにおけるＲＡＭ１１２ｂの書き込み・読み出し動作について説明する。
図９は、オプションＥにおけるＲＡＭの書き込み・読み出し動作の一例を示す概要図である。
【００６１】
まず、ＷＰおよびＲＰをバッファ０に指定する。この状態を初期状態とする。次に、ＷＰをバッファ１に指定する（ステップＳ１１）。これによりバッファ１にデータが書き込まれる。このときＲＰはバッファ０に指定されているため、バッファ０のデータが読み出される。次に、ＷＰをバッファ２に指定し、ＲＰはバッファ１に指定する（ステップＳ１２）。これによりバッファ２にデータが書き込まれ、バッファ１のデータが読み出される。次に、ＷＰをバッファ１に指定し、ＲＰはバッファ０に指定する（ステップＳ１３）。これによりバッファ１にデータが書き込まれ、バッファ０のデータが読み出される。次に、ＷＰをバッファ０に指定する（ステップＳ１４）。これによりバッファ０のデータが書き込まれる。
【００６２】
このオプションＥでは、ＦＩＬＯを実現することができるため、ＲＡＭ１１２ｂの容量の範囲内でスタックメモリとして用いることができる。
次に、構成１〜６について詳しく説明する。
【００６３】
＜構成１＞
図１０は、構成１のデータ送受信システムを示すブロック図である。
図１０に示すように、データ送受信システム１００ａは、ストリームバッファ１１０と、ストリームバッファ１１０の入力側に設けられたＣＰＵ１０１と、ストリームバッファ１１０の出力側に設けられたメモリ１０４とを有する。また、出力ポート１１４とメモリ１０４との間に、ＡＬＵ１３０が設けられている。
【００６４】
なお、本構成では代表的に、データバッファ１１２のオプションにオプションＡを選択した場合について説明する。
また、図１０以降の各図面では説明を分かり易くするため、前述したオプション等により選択されないストリームバッファ１１０内の構成要素（構成１では入力用アドレス変換部１１３、ＲＡＭ１１２ｂおよびアドレス制御部１１２ｃ）についてはその記載を省略している。
【００６５】
ＣＰＵ１０１は、ストア命令、レジスタ設定命令などを出力し、ビジー信号、転送完了割り込み信号等の各種信号を入力する命令制御部１１７と、再利用性の高いデータをキャッシュするデータキャッシュ１１８とを有している。
【００６６】
ＣＰＵ１０１は、再利用性の高いデータをデータキャッシュ１１８にキャッシュし、ＡＬＵ１３０を介してメモリ１０４に格納する。また、ＣＰＵ１０１は、再利用性の低いデータを、ストア命令等により入力ポート１１１を介してシフトレジスタ１１２ａに出力する。
【００６７】
シフトレジスタ１１２ａにバッファされるデータは、順次、出力ポート１１４に出力される。また、シフトレジスタ１１２ａは、シフトレジスタ１１２ａからのデータの読み出しがストア命令によるデータの入力に追いつかず、シフトレジスタ１１２ａの全てのバッファがデータによって満たされた場合は、ＣＰＵ１０１の命令制御部１１７に対してビジー（busy）信号を出力する。
【００６８】
出力ポート１１４は、出力用アドレス変換部１１５からのメモリ１０４のアクセス先のアドレス指定を受けてデータを転送する。
ここで、出力用アドレス変換部１１５は、メモリ１０４へのデータの転送時に、以下に説明する３つの転送モードを有する。以下、転送モードについて順番に説明する。
【００６９】
＜第１の転送モード＞
図１１は、第１の転送モードを示す概略図である。
第１の転送モードでは、メモリ１０４に対してシフトレジスタ１１２ａの任意のバッファ（ＲＡＭ１１２ｂでは任意の開始アドレス）からｍ（１≦ｍ≦ｎ＋１）個のデータを連続して転送する。図１１では、データ長Ｘのｎ＋１個のデータが第１の転送モードにより転送されたメモリ１０４を示している。なお、以下では第１の転送モードを「連続アクセスモード」という。
【００７０】
連続アクセスモードは、例えば、二次元画像データの配置において、連続する横方向への画像処理を行う場合等、一般的な配列アクセスに有効なモードである。
図１２は、連続アクセスモードを用いる例を示す概略図である。
【００７１】
例えば、メモリ１０４のアドレス長（アドレス０〜アドレスＭＡＸ）と、画像表示装置の画像表示領域Ａに表示し得る画像データのアドレス長とが等しく設定されているとき、画像表示領域Ａ内の領域Ａ１（図１２中斜線部）に所定のデータを表示させる場合、出力用アドレス変換部１１５は、領域Ａ１内に対応するメモリ１０４のアドレスにデータ０、データ１、データ２、・・・、データｎが格納されるように、出力ポート１１４からデータ０、データ１、データ２、・・・、データｎを連続して出力させる。これにより、メモリ１０４から画像表示装置（図示せず）に転送されたデータは、図１２に示すように横方向に連続して表示される。
【００７２】
＜第２の転送モード＞
図１３は、第２の転送モードを示す概略図である。
第２の転送モードでは、ｍ個のデータをメモリ１０４に転送する際に、メモリ１０４の任意の開始アドレスからデータ毎に一定の距離（ディスタンス）を保持するように、出力用アドレス変換部１１５のＡＬＵ１３３の演算機能を調節してアクセスアドレスレジスタ１３４からの値が出力されるタイミングを調整する。図１３では、データ長Ｙのｎ＋１個のデータが第２の転送モードにより転送されたメモリ１０４を示している。なお、以下では第２の転送モードを「ディスタンスアクセスモード」という。このディスタンスアクセスモードは、例えば、二次元画像データを画像表示装置の縦方向に連続して表示する場合等に有効なモードである。
【００７３】
図１４は、ディスタンスアクセスモードを用いる例を示す概略図である。
メモリ１０４のアドレス長（アドレス０〜アドレスＭＡＸ）と、画像表示装置の画像表示領域Ａに表示し得る画像データのアドレス長とが等しく設定されているときに、画像表示領域Ａ内の領域Ａ２（図１４中斜線部）に所定のデータを表示させる場合、出力用アドレス変換部１１５は、領域Ａ２内のデータ０とデータ１との間の領域が、図１３に示すディスタンスに対応するように、メモリ１０４にデータが格納されるように、出力ポート１１４からデータ０、データ１、データ２、・・・、データｎを出力させる。これにより、メモリ１０４から画像表示装置（図示せず）に転送されたデータは、所定距離だけ離間して表示され、その結果縦方向に連続して表示される。
【００７４】
＜第３の転送モード＞
図１５は、第３の転送モードを示す概略図である。
第３の転送モードでは、（ｎ＋１）個のデータをメモリ１０４に転送する際に、メモリ１０４の任意の開始アドレスからデータ毎に一定の距離（ディスタンス０）を保持するデータ長Ｗのｍ個（ｍは（ｎ＋１）以下の整数）のデータで構成される複数の集合体が、集合体毎に一定の距離（ディスタンス１）を保持するように、出力用アドレス変換部１１５のＡＬＵ１３３の演算機能を調節してアクセスアドレスレジスタ１３４からの値が出力されるタイミングを調整する。図１５では、データ長Ｚのｎ＋１個のデータが第３の転送モードにより転送されたメモリ１０４を示している。なお、以下では第３の転送モードを「マルチディスタンスアクセスモード」という。このマルチディスタンスアクセスモードは、例えば、二次元画像データを画像表示装置の所定の矩形範囲に表示する場合等に有効なモードである。
【００７５】
図１６は、マルチディスタンスアクセスモードを用いる例を示す概略図である。
例えば、メモリ１０４のアドレス長（アドレス０〜アドレスＭＡＸ）と、画像表示装置の画像表示領域Ａに表示し得る画像データのアドレス長とが等しく設定されているときに、画像表示領域Ａ内の領域Ａ３（図１６中斜線部）に所定のデータを表示させる場合、出力用アドレス変換部１１５は、領域Ａ３内のデータ０とデータ１との間の領域が、図１５に示すディスタンス０に対応し、領域Ａ３の各行の最後部と次の行の先頭部との間の領域がディスタンス１に対応するようにメモリ１０４にデータが格納されるように、出力ポート１１４からデータ０、データ１、データ２、・・・、データｎを出力させる。これにより、メモリ１０４から画像表示装置（図示せず）に転送されたデータは、所定距離だけ離間して表示され、その結果縦方向に連続して表示される。
【００７６】
このような３つの転送モードを状況に応じて使い分けることにより、メモリ１０４の所望のアドレスにデータを格納することができる。
次に、データ送受信システム１００ａの動作について説明する。
【００７７】
まず、ストリームバッファ１１０を使用するソフトウェアの実行に先立ち、ストリームバッファ１１０の初期設定を行う。具体的には、ＣＰＵ１０１からのレジスタ設定命令（これは専用の命令でもよいし、特殊なアドレスのストア命令として実装してもよい）により、出力用アドレス変換部１１５のスタートアドレスレジスタ１３１およびエンドアドレスレジスタ１３５を設定する。
【００７８】
次に、ストリームバッファ１１０を実際に使用するソフトウェアを起動する。ソフトウェアは生成したデータをストアデータとしてＣＰＵ１０１から出力する（この実施例では、ストリームバッファへのストア操作に特殊な命令を使わずに、ストリームバッファを示す固定のアドレスを持ったストア命令で実装する例を示している）。
【００７９】
ストリームバッファ１１０に入力されたストア命令は、入力ポート１１１を介してデータバッファ１１２に随時格納される。
次に、出力用アドレス変換部１１５は、最初のデータの出力に備えてスタートアドレスレジスタ１３１の内容を、ＡＬＵ１３３を介してアクセスアドレスレジスタ１３４にコピーする。そして、アクセスアドレスレジスタ１３４は、アクセスアドレスレジスタの値を出力ポート１１４に出力し、カウンタ１３２の値をインクリメントする。
【００８０】
その後、出力ポート１１４は、アクセスアドレスレジスタ１３４から値の出力があったときに（アクセスアドレスレジスタ１３４からの値の出力のタイミングで）メモリ１０４にメモリアクセスを行う。
【００８１】
この構成１のデータ送受信システム１００ａによれば、簡易な構成で、再利用性の低いデータをデータキャッシュ１１８を介さずにメモリ１０４に対して転送することができる。
【００８２】
＜構成２＞
次に、構成２のデータ送受信システムについて説明する。
図１７は構成２のメモリ装置を示すブロック図である。
【００８３】
以下、構成２のデータ送受信システム１００ｂについて、前述したデータ送受信システム１００ａとの相違点を中心に説明し、同様の事項については、その説明を省略する。
構成２のデータ送受信システム１００ｂは、ストリームバッファ１１０と、ストリームバッファ１１０の入力側に設けられたメモリ１０３と、ストリームバッファ１１０の出力側に設けられたＣＰＵ１０２とを有する。
【００８４】
構成２のストリームバッファ１１０は、入力ポート１１１を介してＣＰＵ１０２とは非同期にメモリ１０３からデータを読み出し、ＣＰＵ１０２はロード命令（またはそれに相当する操作）によりストリームバッファ１１０からデータを取り出す。
【００８５】
データバッファ１１２が一杯か否かは入力用アドレス変換部１１３が把握し、メモリに対するリクエストの発行を制御する。
よって、構成２において用いられるストリームバッファ１１０の部位は、入力ポート１１１、データバッファ１１２、入力用アドレス変換部１１３および出力ポート１１４である。
【００８６】
ここで、構成２における転送モードは、メモリ１０３からデータバッファ１１２にデータを転送する際に用いられる。
以下、構成２の転送モードについて説明するが、前述した構成１の転送モードとの相違点を中心に説明し、同様の事項については、その説明を省略する。
【００８７】
＜連続アクセスモード＞
構成２の連続アクセスモードでは、メモリ１０３の任意の開始アドレスからｍ個のデータをシフトレジスタ１１２ａに連続して転送する。
【００８８】
＜ディスタンスアクセスモード＞
構成２のディスタンスアクセスモードでは、ｍ個のデータをシフトレジスタ１１２ａに転送する際に、シフトレジスタ１１２ａの任意のバッファからデータ毎に一定の距離（ディスタンス）を保持するように、入力用アドレス変換部１１３のＡＬＵ１２３の演算機能を調節してアクセスアドレスレジスタ１２４からの値が出力されるタイミングを調整する。
【００８９】
＜マルチディスタンスアクセスモード＞
構成２のマルチディスタンスアクセスモードでは、（ｎ＋１）個のデータをシフトレジスタ１１２ａに転送する際に、メモリ１０４の任意の開始アドレスからデータ毎に一定の距離（ディスタンス０）を保持するｍ個（ｍは（ｎ＋１）以下の整数）のデータで構成される複数の集合体が、集合体毎に一定の距離（データ長０）を保持するように、入力用アドレス変換部１１３のＡＬＵ１２３の演算機能を調節してアクセスアドレスレジスタ１２４からの値が出力されるタイミングを調整する。
【００９０】
次に、構成２のデータ送受信システム１００ｂの動作について説明する。
まず、ストリームバッファ１１０を実際に使用するソフトウェアの実行に先立ち、ストリームバッファ１１０の初期設定を行う。具体的にはＣＰＵ１０２からのレジスタ設定命令（これは専用の命令でもよいし、特殊なアドレスのストア命令として実装してもよい）により、入力用アドレス変換部１１３のスタートアドレスレジスタ１２１とエンドアドレスレジスタ１２５とを設定する。
【００９１】
次に、ストリームバッファ１１０に対してデータ転送の起動を指示する。具体的には、命令制御部１０７のレジスタ設定命令により、アクセスアドレスレジスタ１２４に起動指示を送る。
【００９２】
アクセスアドレスレジスタ１２４がデータ転送開始指示を受け取ると、入力用アドレス変換部１１３では、まず、最初のデータ入力に備えてスタートアドレスレジスタ１２１の内容をアクセスアドレスレジスタ１２４にコピーする。次に、アクセスアドレスレジスタ１２４は、このアクセスアドレスレジスタ１２４の値を入力ポート１１１に出力する。
【００９３】
入力ポート１１１は、アクセスアドレスレジスタ１２４から値の出力があったときに（アクセスアドレスレジスタ１２４からの値の出力のタイミングで）シフトレジスタ１１２ａにアクセスを行う。
【００９４】
その後、アクセスアドレスレジスタ１２４は、１つのデータを入力ポート１１１に出力する毎にアクセスアドレスレジスタ１２４の値をインクリメントし（inc）、再設定する。
【００９５】
比較部１２６は、エンドアドレスレジスタ１２５の値とアクセスアドレスレジスタ１２４との値を比較し、これらの値が等しくなったときに、命令制御部に対して転送完了割り込み信号を出力する。
【００９６】
ＣＰＵ１０２は、データ転送指示を出した後、任意のタイミングでストリームバッファ１１０を実際に使用するソフトウェアを起動する。ソフトウェアは、データが必要になるとストリームバッファ１１０から読み出す。本実施の形態では、ストリームバッファ１１０からのロード操作に特殊な命令を使わずに、ストリームバッファを示す固定のアドレスを持ったロード命令で実装する例を示している。本実施の形態では、ストリームバッファからデータを読む際にデータがまだない(データバッファが空)場合には、ストリームバッファはデータを返さずＣＰＵ１０２を待たせることを想定している。
【００９７】
このような構成２のデータ送受信システム１００ｂにおいても、データ送受信システム１００ａと同様の効果が得られる。すなわち、ＣＰＵで消費する再利用性の低いデータを、キャッシュメモリを通さずにメモリから読み込むことができる。
【００９８】
＜構成３＞
次に、構成３のメモリ装置について説明する。
図１８は構成３のメモリ装置を示すブロック図である。
【００９９】
以下、構成３のデータ送受信システム１００ｃについて、前述したデータ送受信システム１００ａおよびデータ送受信システム１００ｂとの相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１００】
構成３のデータ送受信システム１００ｃは、異なる２つのＣＰＵ間の通信用バッファとして機能するものであり、ストリームバッファ１１０と、ストリームバッファ１１０の入力側に設けられたＣＰＵ１０１と、ストリームバッファ１１０の出力側に設けられたＣＰＵ１０２とを有する。
【０１０１】
このように、ストリームバッファ１１０の入力側および出力側に、それぞれＣＰＵ１０１、１０２を接続した場合、ストリームバッファ１１０へのデータの入力はＣＰＵ１０１が主体的に行い、ストリームバッファ１１０からのデータの出力はＣＰＵ１０２が主体的に行う。よって、構成３においては入力用アドレス変換部１１３および出力用アドレス変換部１１５は使用しない。その結果、構成３において用いられるストリームバッファ１１０の構成要素は、入力ポート１１１、出力ポート１１４およびデータバッファ１１２である。
【０１０２】
また、構成３においては、ＣＰＵ１０１およびＣＰＵ１０２において、任意にアドレスと、アドレスに格納されるデータとを設定し得ることから、転送モードを切り替えて送信する必要はない。よって、構成３では転送モードのオプションは設定されない。
【０１０３】
このような構成３のデータ送受信システム１００ｃにおいても、データ送受信システム１００ａおよびデータ送受信システム１００ｂと同様の効果が得られる。
＜構成４＞
次に、構成４のメモリ装置について説明する。
【０１０４】
図１９は構成４のメモリ装置を示すブロック図である。
以下、構成４のデータ送受信システム１００ｄについて、前述したデータ送受信システム１００ｃとの相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１０５】
構成４のデータ送受信システム１００ｄは、ストリームバッファ１１０と、ストリームバッファ１１０の入力側および出力側にＣＰＵ１０１が接続されている。
ストリームバッファ１１０の入力側および出力側にＣＰＵ１０１を接続した場合、ストリームバッファ１１０へのデータの入力およびストリームバッファ１１０からのデータの出力は、ＣＰＵ１０１が主体的に行う。よって、構成４においては入力用アドレス変換部１１３および出力用アドレス変換部１１５の機能は使用しない。その結果、構成４において、用いられるストリームバッファ１１０の構成要素は、入力ポート１１１、出力ポート１１４およびデータバッファ１１２である。
【０１０６】
また、構成４においても構成３と同様に、ＣＰＵ１０１において、任意にアドレスおよびアドレスに格納されるデータを設定し得ることから転送モードのオプションは設定されない。
【０１０７】
このような構成４のデータ送受信システム１００ｄにおいても、データ送受信システム１００ｃと同様の効果が得られる。
特に、構成４のデータ送受信システム１００ｄでは、ストリームバッファ１１０に対してオプションＤやオプションＥの機能を適用することにより、ＣＰＵ１０１が使用するスタックメモリとして機能させることができる。また、同じＣＰＵ１０１内の異なるプロセス間の通信用バッファとして機能させることもできる。
【０１０８】
＜構成５＞
次に、構成５のメモリ装置について説明する。
図２０は、構成５のメモリ装置を示すブロック図である。
【０１０９】
以下、構成５のデータ送受信システム１００ｅについて、前述したデータ送受信システム１００ａおよびデータ送受信システム１００ｂとの相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１１０】
構成５のデータ送受信システム１００ｅは、ストリームバッファ１１０と、ストリームバッファ１１０の入力側に設けられたメモリ１０３と、ストリームバッファ１１０の出力側に設けられたメモリ１０４とを有する。
【０１１１】
このように、ストリームバッファ１１０の入力側にメモリ１０３のような受動的なユニットを接続した場合、ストリームバッファ１１０へのデータの入力は、ストリームバッファ１１０内の入力用アドレス変換部１１３がデータバッファ１１２に格納するデータのタイミング制御（データバッファ１１２のアドレス制御）を行って、メモリ１０３に対し、データの転送を要求する。
【０１１２】
一方、ストリームバッファ１１０の出力側にメモリ１０４のような受動的なユニットを接続した場合、ストリームバッファ１１０からのデータの出力は、ストリームバッファ１１０内の出力用アドレス変換部１１５がデータバッファ１１２のアドレス制御を行って、メモリ１０４に対し、データの転送を行う。
【０１１３】
なお、本構成のストリームバッファ１１０の初期設定は、ストリームバッファ１１０内に予め別途記憶手段を用意し、その記憶手段から初期設定命令をロードすることにより行う。または、レジスタ設定命令を外部から入力し、その命令により行う。
【０１１４】
このような構成５のデータ送受信システム１００ｅにおいても、データ送受信システム１００ａおよびデータ送受信システム１００ｂと同様の効果が得られる。
さらに構成５のデータ送受信システム１００ｅでは、ストリームバッファ１１０を、ＣＰＵを介在させることなくメモリの所定の領域から別の領域へブロック転送を行うＤＭＡとして機能させることができる。
【０１１５】
なお、入力用アドレス変換部１１３が行うデータ転送モードと出力用アドレス変換部１１５が行うデータ転送モードは同じであってもよいし、異なっていてもよい。
＜構成６＞
次に、構成６のメモリ装置について説明する。
【０１１６】
図２１は構成６のメモリ装置を示すブロック図である。
以下、構成６のデータ送受信システム１００ｆについて、前述したデータ送受信システム１００ｅとの相違点を中心に説明し、同様の事項については、その説明を省略する。
【０１１７】
構成６のデータ送受信システム１００ｆは、ストリームバッファ１１０と、ストリームバッファ１１０の入力側および出力側に設けられたメモリ１０３とを有する。
ストリームバッファ１１０の入力側および出力側にメモリ１０３を接続した場合、ストリームバッファ１１０へのデータの入力およびストリームバッファ１１０からのデータの出力は、入力用アドレス変換部１１３および出力用アドレス変換部１１５が行う。
【０１１８】
よって構成６において用いられるストリームバッファ１１０の構成要素は、入力用アドレス変換部１１３、出力用アドレス変換部１１５、入力ポート１１１、出力ポート１１４およびデータバッファ１１２である。
【０１１９】
このような構成６のデータ送受信システム１００ｆにおいても、データ送受信システム１００ｅと同様の効果が得られる。
さらに、構成６のデータ送受信システム１００ｆでは、ストリームバッファ１１０を、１次キャッシュと主記憶、または１次キャッシュと２次キャッシュなどの複数のメモリ階層間の転送バッファとして機能させることができる。また、ストリームバッファ１１０を、任意のＣＰＵのローカルメモリから別のＣＰＵのローカルメモリへの転送に用いることもできる。
【０１２０】
以上述べたように、本実施の形態のデータ送受信システム１００ａ〜１００ｆ（ストリームバッファ（メモリ装置）１１０）によれば、ストリームバッファ１１０に接続されるＣＰＵ１０１、１０２およびメモリ１０３、１０４に拘わらず、ストリームバッファ１１０のハードウェア構成を変更することなく確実にデータの送受信を行うことができる。これにより、システム開発の効率を向上させることができる。
【０１２１】
また、再利用性のないデータに対しても無駄にキャッシュメモリの容量を消費することがない（キャッシュを汚さない）専用の効率のよいデータパスを実現することができる。
また、オプションＡを選択した場合、シフトレジスタ１１２ａの制御は、ストリームバッファ１１０のハードウェア主体で行われるため、ストリームバッファ１１０の出力側に接続されるデータ送信先がソフトウェアによる特別な制御を行うことなく送受信システムの構造を簡易なものにすることができる。
【０１２２】
また、データ転送のオプションを設定することにより、メモリ１０３、１０４の所望のアドレスにデータを格納することができる。
さらに、オプションＡ〜Ｅを設定することにより、メモリ１０３、１０４の所望のアドレスに所望のデータを格納することができる。
【０１２３】
これにより、メモリ１０３、１０４のアドレスにデータを格納後、別個ソフトウェアによる再配列処理を省略することができる。
以上、本発明のメモリ装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１２４】
例えば、ストリームバッファ１１０内に、データバッファ１１２とは別個にメモリおよびそのメモリのアドレスを管理するアドレス制御部を設け、データバッファ１１２をオーバーフローしたデータを一時的にこのメモリに退避するように構成することで、データバッファ１１２の容量に制限されないスタックメモリを実現することもできる。
【０１２５】
また、本発明は、前述した実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、入力ポート１１１および出力ポート１１４には、ＣＰＵ１０１、１０２、メモリ１０３、１０４を接続した例を説明したが、これに限らず、例えば、Ｉ／Ｏを接続することもできる。
【０１２６】
また、本実施の形態ではアドレス制御部１１２ｃは、データバッファ１１２内に設置したが、これに限らず、ストリームバッファ１１０内に設置されていればよい。
（付記１）  データの送受信に用いられるメモリ装置において、
データ送信元から出力される前記データを格納し、前記データの出力先であるデータ送信先に対して前記データを出力するデータバッファと、
前記データ送信元が、受動的にデータを出力するものであるとき、前記出力されるデータに対して配列処理を行う送信元アドレス変換部と、
前記データ送信先が、受動的にデータを入力するものであるとき、前記データ送信先に入力するデータに対して配列処理を行う送信先アドレス変換部と、
を備えることを特徴とするメモリ装置。
【０１２７】
（付記２）  前記データ送信元は、ＣＰＵまたはメモリであり、
前記データ送信元が前記メモリであるとき、前記送信元アドレス変換部が前記配列処理を行うことを特徴とする付記１記載のメモリ装置。
【０１２８】
（付記３）  前記ＣＰＵが前記データ送信先を兼ねることを特徴とする付記２記載のメモリ装置。
（付記４）  前記メモリが前記データ送信先を兼ねることを特徴とする付記２記載のメモリ装置。
【０１２９】
（付記５）  前記データ送信先は、ＣＰＵまたはメモリであり、
前記データ送信先が前記メモリであるとき、前記送信先アドレス変換部が前記配列処理を行うことを特徴とする付記１記載のメモリ装置。
【０１３０】
（付記６）  前記配列処理は、前記データを連続して転送する処理であることを特徴とする付記１記載のメモリ装置。
（付記７）  前記配列処理は、前記データ毎に一定の間隔を保って転送する処理であることを特徴とする付記１記載のメモリ装置。
【０１３１】
（付記８）  前記配列処理は、前記データ毎に一定の間隔を保つ複数のデータ集合体を作成し、前記各データ集合体を一定の間隔を保った状態で転送する処理であることを特徴とする付記１記載のメモリ装置。
【０１３２】
（付記９）  前記送信元アドレス変換部と前記送信先アドレス変換部とは、それぞれ、異なる前記配列処理を行うことを特徴とする付記１記載のメモリ装置。
（付記１０）  前記データバッファはＦＩＦＯ制御を行うよう構成されていることを特徴とする付記１記載のメモリ装置。
【０１３３】
（付記１１）  ライト信号の入力により、前記データバッファ内の前記データの書き込み先のアドレスを指示するライトポインタと、リード信号の入力により前記データバッファ内の前記データの読み出し先のアドレスを指示するリードポインタとに基づいて、前記データバッファのシーケンス制御を行うアドレス制御部を備えることを特徴とする付記１記載のメモリ装置。
【０１３４】
（付記１２）  前記ライトポインタを生成するライトポインタ生成部と、前記リードポインタを生成するリードポインタ生成部とを有することを特徴とする付記１１記載のメモリ装置。
【符号の説明】
【０１３５】
１  メモリ装置
２  データ送信元
３  データ送信先
４  データバッファ
５  送信元アドレス変換部
６  送信先アドレス変換部
１０１、１０２  ＣＰＵ
１０３、１０４  メモリ
１１０  ストリームバッファ
１１２  データバッファ
１１２ｃ  アドレス制御部
１１３  入力用アドレス変換部
１１５  出力用アドレス変換部
【図１】
0005338937.tif 000002
【図２】
0005338937.tif 000003
【図３】
0005338937.tif 000004
【図４】
0005338937.tif 000005
【図５】
0005338937.tif 000006
【図６】
0005338937.tif 000007
【図７】
0005338937.tif 000008
【図８】
0005338937.tif 000009
【図９】
0005338937.tif 000010
【図１０】
0005338937.tif 000011
【図１１】
0005338937.tif 000012
【図１２】
0005338937.tif 000013
【図１３】
0005338937.tif 000014
【図１４】
0005338937.tif 000015
【図１５】
0005338937.tif 000016
【図１６】
0005338937.tif 000017
【図１７】
0005338937.tif 000018
【図１８】
0005338937.tif 000019
【図１９】
0005338937.tif 000020
【図２０】
0005338937.tif 000021
【図２１】
0005338937.tif 000022