(57)【要約】【課題】データを格納するメモリの管理をより簡易な処理によって実現できるとともに、メモリ管理に要する回路規模を増大させないようにする。【解決手段】データ制御手段３０は、記憶手段６０にデータを書き込む際に、データが記憶されたページ６１，６２，・・・，６ｎの最終部６１ａ，６２ａ，・・・，６ｎａに、当該ページに格納されたデータ数を示す情報と、リンク先のページを示すページポインタ情報または最終ページであることを示す情報とを設定する。そして、ページ管理手段１０は、データが格納されていないページのうちの先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を管理する。【選択図】図１
2009104497.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段における記憶領域をページ単位で管理するメモリ管理方式であって、
記憶手段にデータを書き込む際に、データが記憶されたページの最終部に、当該ページに格納されたデータ数を示す情報と、リンク先のページを示すページポインタ情報または最終ページであることを示す情報とを設定するデータ制御手段と、
データが格納されていないページのうちの先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を管理するページ管理手段と
を備えたことを特徴とするメモリ管理方式。
【請求項２】
データ制御手段は、記憶手段からデータを読み出した場合に、データを読み出したページリストにおける先頭ページを示す情報、データを読み出した各ページにおける最終ページを示す情報、およびデータを読み出したページの数を示す情報を出力し、
ページ管理手段は、前記データ制御手段が出力した各情報にもとづいて、先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を更新する
請求項１記載のメモリ管理方式。
【請求項３】
ページ管理手段は、データ制御手段から出力された先頭ページを示す情報を、データが格納されていないページのうちの最終ページにページポインタ情報として設定する
請求項２記載のメモリ管理方式。
【請求項４】
データ制御手段は、一群のデータが格納されたページのうちの最終ページの最終部に、最終ページであることを示す情報を設定する
請求項１から請求項３のうちのいずれか１項に記載のメモリ管理方式。
【請求項５】
記憶手段としてのメモリに対するデータの書き込み、およびメモリからのデータの読み出しの制御を行うメモリアクセス制御部を備え、
データ制御手段として、前記メモリアクセス制御部を介して送信データを一旦メモリに書き込みメモリに書き込まれた送信データを前記メモリアクセス制御部を介して読み出して出力する送信データ制御部と、前記メモリアクセス制御部を介して受信データを一旦メモリに書き込みメモリに書き込まれた受信データを前記メモリアクセス制御部を介して読み出して出力する受信データ制御部とを含み、
ページ管理手段として、前記メモリアクセス制御部、前記送信データ制御部および前記受信データ制御部と信号を送受信可能に接続されたフリーページ管理部を含み、
前記フリーページ管理部は、先頭ページを示す情報を生成するページポインタ生成部と、先頭ページを示す情報を出力する先頭ポインタ管理部と、最終ページを示す情報を出力する最終ポインタ管理部と、ページ数を管理するページ数管理部とを含む
請求項１から請求項４のうちのいずれか１項に記載のメモリ管理方式。
【請求項６】
送信データ制御部および受信データ制御部は、データをメモリに書き込む場合にページ取得要求信号を出力し、
先頭ポインタ管理部は、前記ページ取得要求信号に応じて、先頭ページを示す情報をページ取得要求信号を出力した制御部に出力し、
ページポインタ生成部は、前記ページ取得要求信号に応じて先頭ページを示す情報を更新し、更新後の情報を前記先頭ポインタ管理部に出力し、
ページ数管理部は、前記ページ取得要求信号に応じて、データが格納されていないページ数を減らす
請求項５記載のメモリ管理方式。
【請求項７】
メモリアクセス制御部、送信データ制御部、受信データ制御部およびフリーページ管理部が、１チップＬＳＩに集積化されている
請求項５または請求項６記載のメモリ管理方式。
【請求項８】
記憶手段における記憶領域をページ単位で管理するメモリ管理方法であって、
記憶手段にデータを書き込む際に、データが記憶されたページの最終部に、当該ページに格納されたデータ数を示す情報と、リンク先のページを示すページポインタ情報または最終ページであることを示す情報とを設定し、
データが格納されていないページのうちの先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を管理する
ことを特徴とするメモリ管理方法。
【請求項９】
記憶手段からデータが読み出された場合に、データを読み出したページリストにおける先頭ページを示す情報、データを読み出したページリストにおける最終ページを示す情報、およびデータを読み出したページの数を示す情報にもとづいて、先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を更新する
請求項８記載のメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フレームデータを送受信するシステムにおけるメモリ管理方式およびメモリ管理方法に関する。
【背景技術】
【０００２】
近年のディジタル技術の発展に伴って、通信ネットワークを介して接続されるデータ通信機器間で、通信ネットワークを介して送受信されるフレームデータデータのデータ量が増大している。その結果、データ通信機器に搭載されるフレームデータを格納するメモリの容量が増大している。メモリ容量が多くなる程、メモリ管理が複雑になるので、メモリ管理を効率化させる技術の必要性が高まっている。また、データ量の増大に伴って、メモリ管理を行う際の回路規模の増加をいかに抑えるかということも重要な課題になっている。
【０００３】
メモリ管理方式として、メモリをページ単位に分割し、ページ単位で管理する方式が存在する。そのような方式では、フレームデータが複数のページに跨って格納された場合には、各ページをリンクさせる必要がある。フレームデータが格納された各ページをリンクさせようとすると、各ページのリンク情報（ページポインタ情報）を記憶する専用の領域が必要になる。そのため、回路規模が増加し、ページ管理も複雑になる。また、使用ページリストと未使用ページリスト（フリーページリスト）とを管理する必要もあるから、個別の管理テーブルが必要になり、メモリ管理がより複雑になる。
【０００４】
メモリをページ単位で管理する方式であって、メモリ管理の複雑さを低減できる方式として、複数のページを１つの連続領域として管理する方式がある（特許文献１，２参照）。ただし、特許文献２に記載された方式では、任意の複数ページを１つのレコードとして管理しているに過ぎない。
【０００５】
【特許文献１】特開２００３−８５００９号公報（段落０００２，０００６、図８，図９）
【特許文献２】特開平６−１４９６３７号公報（段落００２０、図３）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載された方式では、連続した複数のページを１つの管理単位（以下、連続領域という。）にしている。そして、メモリにおいて１つの連続領域の前方に位置する連続領域の終了ページ番号と、１つの連続領域の後方に位置する連続領域の開始ページ番号とが管理されている。すなわち、１つの連続領域を等価的に１つのページとみなすと、前ページの番号と後ページの番号とが管理レコードによって管理されている。
【０００７】
すると、例えば、ある連続領域を削除する場合には、管理レコードの記述において、削除対象の連続領域の後方に位置する連続領域に関して、その連続領域に対する前ページの番号を変更するとともに、削除対象の連続領域の前方に位置する連続領域に関して、その連続領域に対する後ページの番号を変更するといった複雑な処理を行う必要がある。また、特許文献１に記載された方式では、リンク情報を有する管理レコードを記憶する専用の領域が必要であり、回路規模は増加する。
【０００８】
そこで、本発明は、データを格納するメモリの管理をより簡易な処理によって実現できるとともに、メモリ管理に要する回路規模を増大させないようにすることができるメモリ管理方式およびメモリ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のメモリ管理方式は、記憶手段における記憶領域をページ単位で管理するメモリ管理方式であって、記憶手段にデータを書き込む際に、データが記憶されたページの最終部に、当該ページに格納されたデータ数を示す情報と、リンク先のページを示すページポインタ情報または最終ページであることを示す情報とを設定するデータ制御手段と、データが格納されていないページのうちの先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を管理するページ管理手段とを備えたことを特徴とする。
【００１０】
本発明のメモリ管理方法は、記憶手段における記憶領域をページ単位で管理するメモリ管理方法であって、記憶手段にデータを書き込む際に、データが記憶されたページの最終部に、当該ページに格納されたデータ数を示す情報と、リンク先のページを示すページポインタ情報または最終ページであることを示す情報とを設定し、データが格納されていないページのうちの先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を管理することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、データを格納するメモリの管理をより簡易な処理によって実現できるとともに、メモリ管理に要する回路規模を増大させないようにすることができる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明の実施形態を図面を参照して説明する。
【００１３】
まず、本発明によるメモリ管理方式の概要を、図１のブロック図を参照して説明する。図１に示す構成では、データ制御手段３０は、記憶手段６０にデータを書き込む際に、データが記憶されたページ６１，６２，・・・，６ｎの最終部６１ａ，６２ａ，・・・，６ｎａに、当該ページに格納されたデータ数を示す情報と、リンク先のページを示すページポインタ情報または最終ページであることを示す情報とを設定する。そして、ページ管理手段１０は、データが格納されていないページのうちの先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を管理する。データ制御手段３０は、記憶手段６０からデータを読み出した場合に、データを読み出したページリストにおける先頭ページを示す情報、データを読み出したページリストにおける最終ページを示す情報、およびデータを読み出したページの数を示す情報をページ管理手段１０に出力し、ページ管理手段１０は、データ制御手段３０が出力した各情報にもとづいて、内部に保存されている先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を更新する。
【００１４】
実施形態１．
図２は、本発明によるメモリ管理方法の第１の実施形態が適用されるフレームデータ送受信回路を示すブロック図である。図２に示すフレームデータ送受信回路において、フリーページ管理部１は、フリーページ情報を管理するブロックである。Ｉ／Ｏ制御部２は、システムインタフェースとは制御バスで接続され、システムインタフェースからメモリサイズおよびページサイズを設定する際に使用されるインタフェースブロックである。
【００１５】
システムインタフェースは、例えば、フレームデータ送受信回路が組み込まれる装置におけるアプリケーションが機能する部分（フレームデータ送受信回路以外の回路等：例えば、装置の制御部やオペレーティングシステム）とフレームデータ送受信回路との間のインタフェースである。ユーザインタフェースは、例えば、フレームデータ送受信回路が組み込まれる装置における周辺デバイス等とフレームデータ送受信回路との間のインタフェースである。
【００１６】
送信データ制御部３は、システムインタフェースからの送信データ（Ｓ）をユーザインタフェースに送信データ（Ｕ）として転送するための制御ブロックである。受信データ制御部４は、ユーザインタフェースからの受信データ（Ｕ）をシステムインタフェースに受信データ（Ｓ）として転送するための制御ブロックである。メモリアクセス制御部５は、フリーページ管理部１、送信データ制御部３および受信データ制御部４からメモリ６へのデータライト要求またはデータリード要求を調停するブロックである。メモリ６は、ユーザインタフェースまたはシステムインタフェースに転送するデータを格納するための記憶部であり、例えば半導体によるランダムアクセスメモリ（ＲＡＭ）である。
【００１７】
次に、データを転送する際のメモリ管理方法を説明する。図２に示すフレームデータ送受信回路において、まず、システムインタフェース側から、Ｉ／Ｏ制御部２を介してフリーページ管理部１に、メモリサイズを示すメモリサイズ信号およびページサイズを示すページサイズ信号と、メモリサイズおよびページサイズのサイズ設定が完了したことを通知するサイズ設定通知信号との各設定信号が通知される。フリーページ管理部１は、サイズ設定通知信号がアサートされたタイミングでメモリサイズ信号とページサイズ信号とを内部レジスタにラッチし、メモリ６の総ページ数を算出する。
【００１８】
次に、システムインタフェース側からユーザインタフェース側に送信データを転送するためのデータ転送要求が通知された場合について説明する。送信データ制御部３は、メモリ６内において送信データを格納するためのフリーページを取得するために、ページ取得要求を示すページ取得要求信号（Tx）をメモリアクセス制御部５に出力する。メモリアクセス制御部５は、他のブロックのリクエストとの調停を行い、送信データ制御部３からのページ取得要求信号（Tx）を受け付けた場合には、フリーページ管理部１にページ取得要求信号を通知する。また、メモリアクセス制御部５は、送信データ制御部３に対してページ取得要求ＡＣＫ信号（Tx）を返信することによって、ページ取得要求信号（Tx）によるページ取得要求を受け付けたことを通知する。なお、メモリアクセス制御部５がフリーページ管理部１に通知するページ取得要求信号は、ページ取得要求ＡＣＫ信号（Tx）と同じ信号になる。
【００１９】
送信データ制御部３は、メモリアクセス制御部５からのページ取得要求ＡＣＫ信号（Tx）を受け取ると、フリーページ管理部１が示す先頭フリーページポインタ値（ページアドレス値）を内部に保持する。フリーページ管理部１は、メモリアクセス制御部５からページ取得要求を受けると、送信データ制御部３が保持したフリーページポインタ値（ページアドレス値）の次のページポインタ値（ページアドレス値）を新たなフリーページポインタ値（ページアドレス値）として記憶する。新たなフリーページポインタ値（ページアドレス値）の決定の仕方として、例えば、次の２通りがある。
【００２０】
第１は、一度も転送データが書き込まれていないページがメモリ６の内部に存在する場合に適用される決定の仕方である。そのようなページがメモリ６の内部に存在するということは、今までに使用されたフリーページ数がフリーページ管理部１で最初に決定された総ページ数に到達していないことを意味する。この場合には、フリーページ管理部１の内部に存在するページポインタ生成部１１（図３参照）で生成される値が、新たなフリーページポインタ値（ページアドレス値）として保持される。
【００２１】
第２は、メモリ６の内部の全てのページに最低一度は転送データが書き込まれた場合に適用される決定の仕方である。全てのページに最低一度は転送データが書き込まれたということは、今までに使用されたフリーページ数がフリーページ管理部１で最初に決定された総ページ数に到達していることを意味する。この場合には、後述するように、各ページの最終ワードにはリンク先のページポインタ値（ページアドレス値）が保持されている。よって、先頭フリーページの最終ワードに記憶されているページポインタ値（ページアドレス値）が、新たなフリーページポインタ値（ページアドレス値）として保持されることになる。なお、メモリ６の内部の全てのページに最低一度は転送データが書き込まれた場合には、メモリ６内には使用中のページがチェーニングされている１本または複数本の使用中ページリストと、フリーページがチェーニングされている１本のフリーページリストとが存在することになる。そして、ページ取得要求が通知されたときに、フリーページリストにチェーニングされている先頭から数えて２番目のページのポインタ値（ページアドレス値）が、新たなフリーページポインタ値（ページアドレス値）として保持されることになる。
【００２２】
送信データ制御部３は、取得したフリーページに送信するデータを書き込んでいく。取得したフリーページに送信データを書き込んでいくときに、送信データ制御部３は、データライト要求信号（Tx）、ライトアドレス信号（Tx）（フリーページのアドレス）およびライトデータ（Tx）をメモリアクセス制御部５に出力する。メモリアクセス制御部５は、他のブロックのリクエストとの調停を行い、送信データ制御部３からのデータライト要求信号（Tx）によるデータライト要求を受け付けた場合には、メモリ６における送信データ制御部３からライトアドレス信号（Tx）で通知されたアドレスにデータを書き込む。
【００２３】
具体的には、メモリアクセス制御部５は、メモリ６に対してメモリライトイネーブル信号を与え、ライトアドレス信号（Tx）で通知されたアドレスを示すメモリアドレス信号を出力するとともに、ライトデータ（Tx）をメモリライトデータとしてメモリ６に出力する。
【００２４】
メモリアクセス制御部５は、メモリ６にデータを書き込むときに、送信データ制御部３に対してデータライト要求ＡＣＫ信号（Tx）を返信することによって、データライト要求を受け付けたことを通知する。なお、送信データ制御部３は、書き込みデータが存在する間、データライト要求信号（Tx）を出力する動作を繰り返す。
【００２５】
また、送信データ制御部３は、一連のデータライト要求信号（Tx）を出力する動作において、送信するデータが１ページに納まらない場合には、新たなフリーページを取得する。新たなフリーページを取得する場合、送信データ制御部３は、ページ取得要求信号（Tx）を出力することによってページ取得要求を行う動作を再度実行する。その場合、最初に取得して送信するデータを書き込んだページと新たに取得したフリーページとのチェーニングも実行する。送信データ制御部３は、最初に取得したページの最終ワードに新たに取得したフリーページのポインタ値（ページアドレス値）を書き込むことによってページのチェーニングを実現する。
【００２６】
以上のように、送信データ制御部３は、送信するデータをメモリ６に書き込む場合に、ページ取得要求信号（Tx）およびデータライト要求信号（Tx）を出力する動作を繰り返し行うことによって、１フレーム分のデータのメモリ６への書き込むを実現する。また、送信する１フレーム分のデータが１ページに納まらない場合には、メモリ６内の複数のページに跨って送信するデータが格納される。しかし、送信するデータが連続するページに跨って格納されるとは限らない。つまり、送信するデータがメモリ６内の飛び飛びに位置するページに跨って格納されることもありえる。しかし、いずれの場合にも、複数ページ間のチェーニングは、上述したように、各ページの最終ワードに次ページのポインタ値（ページアドレス値）を記憶させることによって実現されるので、送信するデータの正当性は確保される。
【００２７】
また、送信する１フレーム分のデータを取得したページに格納する処理を終了した場合には、送信データ制御部３は、最終ワードの次ページのポインタ値（ページアドレス値）に、ページのリンク先がないことを示すデータを記憶させる。送信データ制御部３は、ページのリンク先がない場合、つまり、送信するデータの最終バイトを格納した場合には、次ページのポインタ値（ページアドレス値）として、ポインタ値＝ａｌｌ’１’を記憶させる。ポインタ値＝ａｌｌ’１’は送信するデータの最終バイトが格納されているページであることを示すことにすることによって、送信するデータの最終ページを認識可能になる。また、所定の特定のポインタ値が最終ページを示すことにすることによって、送信する１フレームのデータが１ページに納まっているか、複数ページに跨っているかに関わらず、データの最終位置を容易に確認できる。
【００２８】
また、送信データ制御部３は、送信するデータを格納する各ページの最終ワードに、次ページのポインタ値（ページアドレス値）とともに、そのページに格納したデータのバイト数も記憶させる。つまり、各ページの最終ワード位置には、次ページのポインタ値（ページアドレス値）とそのページに格納したデータバイト数を通知する情報バイトが存在することになる。１フレームのデータが複数ページに跨る場合、１フレームの最終バイトを格納した最終ページ以外では、格納データバイト数は一定の値になるが、最終ページの格納データバイト数は送信するフレーム長によって異なることになる。
【００２９】
送信データ制御部３は、メモリ６へ格納した送信データをユーザインタフェース側に送信する場合には、１フレーム分のデータを格納したページリストの先頭ページからデータをリードして、ユーザインタフェース側に転送していく。このとき、送信データ制御部３は、最初に取得したページのポインタ値（ページアドレス値）を指定するだけで、２ページ目以降のリンク先を、各ページの最終ワードに記憶されている次ページのポインタ値（ページアドレス値）を辿ることによって容易にデータの格納先を判断することができる。つまり、転送データの先頭のデータが格納されているページのポインタ値（ページアドレス値）を記憶しておくのみで、最終ページ情報である次ポインタ値＝ａｌｌ’１’を読み出すまで、各ページの最終ワードに記憶されている次ページのポインタ値（ページアドレス値）からデータを読み出すことによって、データの送信が容易に実現できる。
【００３０】
送信データ制御部３は、ユーザインタフェース側にデータを転送するための適切な時刻になったときに、データリード要求信号（Tx）とリードアドレス信号（Tx）（ページリストの先頭アドレス）とをメモリアクセス制御部５に出力する。メモリアクセス制御部５は、他のブロックのリクエストとの調停を行い、送信データ制御部３からデータリード要求信号（Tx）によるデータリード要求を受け付けた場合に、送信データ制御部３からリードアドレス信号（Tx）で通知されたアドレスからデータを読み出し始める。
【００３１】
具体的には、メモリアクセス制御部５は、メモリ６に対してメモリリードイネーブル信号を与え、リードアドレス信号（Tx）で通知されたアドレスを示すメモリアドレス信号を出力するとともに、メモリ６から出力されるリードデータを入力する。
【００３２】
また、メモリアクセス制御部５は、メモリ６からデータを読み出し始めるときに、送信データ制御部３に対してデータリード要求ＡＣＫ信号（Tx）を返信することによって、データリード要求（Tx）を受け付けたことを通知する。送信データ制御部３は、データリード要求ＡＣＫ（Tx）信号が通知されると、メモリ６から読み出されるリードデータ（Tx）をユーザインタフェース側に送信していく。
【００３３】
送信データ制御部３は、ページリストの最終（次ポインタ値＝ａｌｌ’１’）を検出するまで、上記の方法によって２ページ目以降のリンク先のページからデータをリードしてユーザインタフェース側に送信する。送信データ制御部３は、メモリ６から最終データを入力するまで、データリード要求信号（Tx）とリードアドレス信号（Tx）を出力する動作を繰り返す。なお、１フレーム分のデータが１ページに納まっている場合には、先頭ページの次ページポインタ値（ページアドレス値）はａｌｌ’１’になっているので、最終ワードに保持されている格納バイト数分のデータをユーザインタフェース側に送信した時点でデータリード動作は完了する。
【００３４】
送信データ制御部３は、１フレーム分のデータの送信が完了し、メモリ６に格納されているデータが不要になった場合には、ページリストの開放を行い、使用していたページリストをフリーページリストにリンクさせる処理を行う。
【００３５】
具体的には、送信データ制御部３は、ページ開放要求を示すページ開放要求信号（Tx）と開放ページリストの先頭ポインタ（データを読み出したページリストにおける先頭ページを示す。）を示す開放ページリスト先頭ポインタ信号（Tx）とをメモリアクセス制御部５に出力する。メモリアクセス制御部５は、他のブロックのリクエストとの調停を行い、送信データ制御部３からのページ開放要求信号（Tx）によるページ開放要求を受け付けた場合には、フリーページリストの最終ページの最終ワードにおける次ポインタ値（ページアドレス値）情報に送信データ制御部３から通知された開放ページリスト先頭ポインタ（Tx）をライトするとともに、送信データ制御部３に対してページ開放要求ＡＣＫ信号（Tx）を返信してページ開放要求信号（Tx）を受け付けたことを通知する。なお、フリーページリストの最終ページの最終ワードのアドレスは、フリーページ管理部１からメモリアクセス制御部５に通知されている。
【００３６】
メモリアクセス制御部５は、送信データ制御部３からのページ開放要求信号（Tx）を受け付けた場合には、フリーページ管理部１に対してページ開放要求信号を通知する。また、メモリアクセス制御部５がフリーページ管理部１に通知するページ開放要求信号は、ページ開放要求ＡＣＫ信号（Tx）と同じ信号になる。
【００３７】
フリーページ管理部１は、ページ開放要求信号を受け取ると送信データ制御部３から通知される開放ページリスト最終ポインタ信号（Tx）が示す開放ページリスト最終ポインタ（データを読み出したページリストにおける最終ページを示す。）を新たな最終フリーページのポインタ値（ページアドレス値）として更新する。さらに、フリーページ管理部１は、送信データ制御部３から通知される開放ページリスト長信号（Tx）が示す開放ページリスト長（データを読み出したページの数を示す。）のページ数をフリーページリスト長に加えて、新たなフリーページリスト長として更新する。
【００３８】
以上のように、この実施形態では、メモリ６をページ単位に分割し、各ページの最終ワード位置に次ページのポインタ値（ページアドレス値）と格納データバイト数とを記憶させる。よって、各ページのチェーニングと有効データバイト数とを容易に判断できる。さらに、１フレーム分のデータ（一群のデータ）を格納したページリストの先頭ポインタ、最終ポインタおよびページリスト長の３種類の情報を記憶しておくだけで、データ転送時にページリストの先頭ポインタ値（ページアドレス値）を指定してデータ転送を実現できる。また、ページリスト開放時には先頭ポインタ値、最終ポインタ値およびページリスト長を指定するだけでページリストを開放して、フリーページリストにリンクさせることができる。
【００３９】
次に、ユーザインタフェース側からシステムインタフェース側に受信データを転送するためのデータ転送要求が通知された場合について説明する。受信データを転送する場合の動作は、上述した送信データを転送する場合の動作と基本的に同じであり、データ転送方向が異なるだけである。
【００４０】
受信データ制御部４は、メモリ６内に受信データを格納するときには、ページ取得要求を示すページ取得要求信号（Rx）をメモリアクセス制御部５に出力し、メモリアクセス制御部５からのページ取得要求ＡＣＫ信号（Rx）を受けて、フリーページ管理部１が示す先頭フリーページポインタ値（ページアドレス値）を内部に保持する。受信データ制御部４は、取得したフリーページに受信したデータを書き込んでいく。受信データ制御部４は、取得したフリーページに受信データを書き込んでいくときに、データライト要求信号（Rx）、ライトアドレス信号（Rx）（フリーページのアドレス）およびライトデータ（Rx）をメモリアクセス制御部５に出力する。受信データ制御部４は、メモリアクセス制御部５からのデータライト要求ＡＣＫ信号（Rx）を受けると、次のデータライト要求信号（Rx）をメモリアクセス制御部５に出力する。受信データ制御部４は、書き込みデータが存在する間、データライト要求信号（Rx）を出力する動作を繰り返す。
【００４１】
また、一連のデータライト要求信号（Rx）を出力する動作において、受信したデータが１ページに納まらない場合には、受信データ制御部４は、ページ取得要求信号（Rx）を出力する動作を再度行うことになるが、その場合、最初に取得して受信したデータを書き込んだページと新たに取得したフリーページとのチェーニングも実行する。受信データ制御部４は、最初に取得したページの最終ワードに新たに取得したフリーページのポインタ値（ページアドレス値）を書き込むことによってページのチェーニングを実現する。
【００４２】
受信データ制御部４は、受信したデータをメモリ６に書き込む場合には、ページ取得要求信号（Rx）およびデータライト要求信号（Rx）を出力する動作を繰り返し行うことによって１フレーム分のデータをメモリ６に書き込む。
【００４３】
また、受信した１フレーム分のデータの取得したページへの格納が完了した場合には、受信データ制御部４は、最終ワードの次ページのポインタ値（ページアドレス値）に、ページのリンク先がないことを意味するポインタ値＝ａｌｌ’１’を記憶させる。
【００４４】
また、受信データ制御部４は、受信したデータを格納する各ページの最終ワードに、次ページのポインタ値（ページアドレス値）とともにそのページに格納したデータのバイト数も記憶させる。つまり、各ページの最終ワード位置には次ページのポインタ値（ページアドレス値）と、そのページに格納したデータバイト数とを通知する情報バイトが存在することになる。１フレームのデータが複数ページに跨る場合には、１フレームの最終バイトを格納した最終ページ以外では、格納データバイト数は一定の値になるが、最終ページの格納データバイト数は送信するフレーム長によって異なることになる。
【００４５】
受信データ制御部４は、メモリ６へ格納した受信データをシステムインタフェース側に転送する場合には、１フレーム分のデータを格納したページリストの先頭ページからデータをリードして、システムインタフェース側に転送していく。このとき、受信データ制御部４は、最初に取得したページのポインタ値（ページアドレス値）を指定するだけで、２ページ目以降のリンク先は各ページの最終ワードに記憶してある次ページのポインタ値（ページアドレス値）を辿ることによって容易にデータの格納先を判断することができる。つまり、転送データの先頭が格納されているページのポインタ値（ページアドレス値）を記憶しておくだけで、最終ページ情報である次ポインタ値＝ａｌｌ’１’を読み出すまで、各ページの最終ワードに記憶されている次ページのポインタ値（ページアドレス値）からデータを読み出すことによって、データの送信が容易に実現できる。
【００４６】
受信データ制御部４は、システムインタフェース側へデータを転送するための適切な時刻になったときに、データリード要求信号（Rx）とリードアドレス信号（Rx）（ページリストの先頭アドレス）とをメモリアクセス制御部５に出力する。受信データ制御部４は、メモリアクセス制御部５からデータリード要求ＡＣＫ信号（Rx）を受けると、メモリ６から読み出されるリードデータ（Rx）をシステムインタフェース側に転送していく。
【００４７】
受信データ制御部４は、ページリストの最終（次ポインタ値＝ａｌｌ’１’）を検出するまで、上記の方法によって２ページ目以降のリンク先のページからデータをリードしてシステムインタフェース側に転送していく。受信データ制御部４は、メモリ６から最終データを入力するまで、データリード要求信号（Rx）とリードアドレス信号（Rx）を出力する動作を繰り返す。なお、１フレーム分のデータが１ページに納まっている場合には、先頭ページの次ページポインタ値（ページアドレス値）はａｌｌ’１’になっているので、最終ワードに保持されている格納バイト数分のデータをシステムインタフェース側に転送した時点でデータリード動作は完了する。
【００４８】
受信データ制御部４は、１フレーム分のデータの転送が完了し、メモリ６に格納されているデータが不要になった場合には、ページリストの開放を行い、使用していたページリストをフリーページリストへリンクさせる処理を行う。
【００４９】
具体的には、受信データ制御部４は、ページ開放要求を示すページ開放要求信号（Rx）と開放ページリストの先頭ポインタを示す開放ページリスト先頭ポインタ信号（Rx）とをメモリアクセス制御部５に出力する。メモリアクセス制御部５は、受信データ制御部４からページ開放要求（Rx）を受け付けた場合には、フリーページリストの最終ページの最終ワードの次ポインタ値（ページアドレス値）情報に受信データ制御部４から通知された開放ページリスト先頭ポインタ信号（Rx）が示す開放ページリスト先頭ポインタをライトするとともに、受信データ制御部４に対してページ開放要求ＡＣＫ信号（Rx）を返信することによって、ページ開放要求信号（Rx）を受け付けたことを通知する。なお、フリーページリストの最終ページの最終ワードのアドレスは、フリーページ管理部１からメモリアクセス制御部５に通知される。
【００５０】
また、メモリアクセス制御部５は、受信データ制御部４からのページ開放要求信号（Rx）を受け付けた場合には、フリーページ管理部１に対してページ開放要求信号を通知する。なお、メモリアクセス制御部５がフリーページ管理部１に通知するページ開放要求信号は、ページ開放要求ＡＣＫ信号（Rx）と同じ信号になる。フリーページ管理部１は、ページ開放要求信号を受け取ると受信データ制御部４から通知される開放ページリスト最終ポインタ信号（Rx）が示す開放ページリスト最終ポインタを新たな最終フリーページのポインタ値（ページアドレス値）として更新する。さらに、にフリーページ管理部１は、受信データ制御部４から通知される開放ページリスト長信号（Rx）が示すページ数をフリーページリスト長に加えて、新たなフリーページリスト長として更新する。
【００５１】
次に、図３〜図１２を用いて、本実施形態のメモリ管理方式を説明する。図３は、フリーページ管理部１の構成例を示すブロック図である。図３に示すフリーページ管理部１において、システムインタフェース側からページポインタ生成部１１に、メモリサイズ信号およびページサイズ信号と、メモリサイズおよびページサイズのサイズ設定が完了したことを通知するサイズ設定通知信号との各設定信号が通知される。
【００５２】
ページポインタ生成部１１は、サイズ設定通知信号がアサートされたタイミングでメモリサイズ信号とページサイズ信号とを内部レジスタにラッチし、メモリ６の総ページ数を算出する。ページポインタ生成部１１は、メモリ６の総ページ数を算出するとともに、フリーページの最終ポインタ初期値および算出完了通知信号を、最終ポインタ管理部１３およびページ数管理部１４に出力する。最終ポインタ管理部１３は、ページポインタ生成部１１から通知される算出完了通知信号がアサートされるタイミングで、最終ポインタ初期値を内部レジスタにラッチする。最終ポインタ初期値が内部レジスタにラッチされたことによって、フリーページ最終ポインタの初期値が決定されたことになる。
【００５３】
また、ページ数管理部１４は、ページポインタ生成部１１から通知される算出完了通知信号がアサートされるタイミングで、総ページ数信号を内部レジスタにラッチする。最終ポインタ初期値が内部レジスタにラッチされることによって、残りフリーページ数の初期値が決定されたことになる。また、フリーページの先頭ポインタ値を常に’０’と定義し、初期状態において先頭ポインタ管理部１２は先頭ポインタ値＝０を出力する。
【００５４】
図４は、先頭ポインタ値＝０が出力されたときのメモリ６の状態例を示す説明図である。メモリサイズ信号とページサイズ信号が通知されることによって、総ページ数が決定することになるが、メモリ６内にはページのチェーンはできていない。よって、各ページの最終ワードに、次ポインタ値および格納データバイト数は定義されていない。なお、図４に示す例では、総ページ数＝ｎページ、次ポインタ値＝UnKnown 、格納データバイト数＝UnKnownとなり、各ページはどこにもリンクされていないことになる。また、フリーページの最終ポインタ値は“ｎ”である。
【００５５】
次に、図４に示されているページ最終ワードに存在する次ポインタ値情報（ＮＰ：Next Pointer）、および格納データバイト数（ＬＥＮ：Length）の各情報を説明する。次ポインタ値情報（ＮＰ：Next Pointer）、および格納データバイト数（ＬＥＮ：Length）の各情報を格納するための必要ビット数は、メモリサイズとページサイズとの関係によって決定される。例えば、メモリサイズが１６キロバイト、ページサイズが１２８バイトである場合には、メモリ６の総ページ数は１２８ページになる。ページポインタ値は、’０’を基点にすると、０〜１２７までの範囲の値になる。１６進で表現すると０ｘ００〜０ｘ７Ｆまでの７ビットの信号で表現できる。各ページの格納データバイト数は、最高（１２８−ＮＰ−ＬＥＮ）バイトであり、１６進で表現すると７ビットの信号で表現できる。つまり、この場合、次ポインタ値とＬＥＮとをともに７ビットの信号で表現できるので、バイト単位で管理すると、各１バイト、合計２バイトの領域があればよいことになり、本来のフレームデータを格納する領域は１２８−２＝１２６バイトになる。
【００５６】
なお、ＮＰは最終バイトである１２７バイト目に記憶され、ＬＥＮはＮＰの１バイト前の１２６バイト目に記憶される。また、ページリストの最終を表現する次ポインタ値＝ａｌｌ’１’は、ＮＰが記憶される１バイト分の領域に設定される。ＮＰがａｌｌ’１’になることはないので、通常の次ポインタ値（７ビット分）と区別できる。
【００５７】
また、他の例としてメモリサイズが３２キロバイト、ページサイズが１２８バイトの場合を考える。この場合、メモリ６の総ページ数は２５６ページになる。ページポインタ値は、’０’を基点にすると、０〜２５５までの範囲になる。１６進で表現すると０ｘ００〜０ｘＦＦまでの８ビットの信号で表現できる。各ページの格納データバイト数は、１６進で表現すると７ビットの信号で表現される。つまり、この場合、次ポインタ値は８ビット、ＬＥＮは７ビットの信号で表現できるので、バイト単位で管理すると次ポインタ値＋ＬＥＮ＝２バイトの領域があればよく、本来のフレームデータを格納する領域は１２８−２＝１２６バイトになる。
【００５８】
なお、８ビットの次ポインタ値を、１２６バイト目の最終ビット（ビット７）と最終バイトである１２７バイト目のビット０〜ビット６に記憶し、ＬＥＮを、１２６バイト目のビット０〜ビット６に記憶する。また、ページリストの最終を表現する次ポインタ値＝ａｌｌ’１’は、ＮＰが記憶される１ビット＋１バイト分（９ビット分）の領域（この例では、１２６バイト目の最終ビット（ビット７）と１２７バイト目）に設定される。ＮＰが記憶されるときに１２７バイト目のビット７を０にしておけば９ビットがａｌｌ’１’になることはないので、通常の次ポインタ値（８ビット分）と区別できる。
【００５９】
また、さらに他の例としてメモリサイズが６４キロバイト、ページサイズが１２８バイトの場合を考える。この場合、メモリ６の総ページ数は５１２ページになる。ページポインタ値、’０’を基点にすると、０〜５１１までの範囲になる。１６進で表現すると０ｘ０００〜０ｘ１ＦＦまでの９ビットの信号で表現できる。各ページの格納データバイト数は、１６進で表現すると７ビットの信号で表現される。つまり、この場合、次ポインタ値は９ビット、ＬＥＮは７ビットの信号で表現できるので、２バイトの情報量が必要になる。さらにページリストの最終である次ポインタ値＝ａｌｌ’１’を表現するには、プラス１ビットの信号が必要であり、バイト単位で管理するとプラス１バイトの情報量が必要である。つまり、ＮＰ＝２バイト、ＬＥＮ＝１バイトの合計３バイトの領域が必要になり、本来のフレームデータを格納する領域は１２８−３＝１２５バイトになる。
【００６０】
次に、サイズ設定通知後、最初にページ取得要求信号によってページ取得要求が通知された場合の動作を説明する。図３において、ページ取得要求が通知された場合、ページ取得要求元のブロック（例えば、送信データ制御部３や受信データ制御部４）は先頭ポインタ管理部１２が通知するポインタ値＝０のページを取得する。
【００６１】
また、先頭ポインタ管理部１２は、ページポインタ生成部１１から通知される次のポインタ値である’１’を先頭ポインタ値として内部にラッチし、ページ取得要求元のブロックに、先頭フリーページポインタ信号で先頭フリーページポインタ値として通知する。また、ページポインタ生成部１１は、内部ページポインタ生成用カウンタをインクリメント（＋１）する。この場合、内部ページポインタ生成用カウンタの値は’２’になる。また、ページ取得要求に応じてフリーページが１ページ減るので、ページ数管理部１４は、内部残りフリーページ管理用カウンタをデクリメント（−１）する。さらに、２回目のページ取得要求が通知された場合には、ページ取得要求先のブロックは、先頭ポインタ管理部１２が通知するポインタ値＝１のページを取得する。
【００６２】
また、先頭ポインタ管理部１２は、ページポインタ生成部１１から通知される次のポインタ値である’２’を先頭ポインタ値として内部にラッチし、先頭フリーページポインタ値としてページ取得要求元のブロックに通知する。また、ページポインタ生成部１１は、内部ページポインタ生成用カウンタをインクリメント（＋１）する。この場合、内部ページポインタ生成用カウンタの値は’３’になる。また、ページ取得要求によりフリーページが１ページ減るので、ページ数管理部１４は、内部残りフリーページ管理用カウンタをデクリメント（−１）する。以降、ページ取得要求が通知される毎に同様の動作が繰り返される。
【００６３】
図５および図６は、ページ取得要求信号によってページ取得要求が通知された場合の動作を説明するための説明図である。
【００６４】
図５に示す例では、ページ取得要求が６回行われ、ページ３とページ５にデータが書き込まれている最中であり、フリーページの先頭ポインタ値が’６’であることが示されている。なお、図５には、“ページ０→ページ１→ページ３”と“ページ２→ページ４→ページ５”の２本のページリストが形成途中であることも示されている。さらに、図６には、ページ取得要求動作とデータ書き込み動作が継続して行われ、“ページ０→ページ１→ページ３→ページ６”の１本のページリストが完成したことが示されている。ページ６の次ポインタ値がａｌｌ’１’であることから、１本のページリストの最終ページであることが容易に判断できる。
【００６５】
次に、ページ取得要求が総ページ数の数分通知された場合の動作を説明する。図３において、ページ取得要求が（総ページ数−１）回通知された場合、ページポインタ生成部１１の内部ページポインタ生成用カウンタのカウント値（内部ページポインタ生成用カウンタ値）は’０’になる。その場合には、ページポインタ生成部１１は、カウント動作を停止するとともに、先頭ポインタ管理部１２に対してポインタ生成完了通知信号をアサートする。このとき、先頭ポインタ管理部１２は、先頭フリーページポインタ値として、（総ページ数−１）と等しい値を通知する。なお、この値は、最終ポインタ初期値と等しい値になる。そして、この状態でさらにもう１回ページ取得要求が通知されると、ページ取得要求元のブロックはメモリ６の最終ページを取得することになり、先頭ポインタ管理部１２は、メモリ６の最終ページにリンクされているページを新たな先頭フリーページポインタ値として通知することになる。また、メモリ６の最終ページに新たなページがリンクされるには、ページリストの開放動作が最低１回実行されていることが前提になるが、ページリストの開放動作については後述する。
【００６６】
次に、先頭ポインタ管理部１２がメモリ６の最終ページにリンクされているページを先頭フリーページポインタ値として保持する仕組みを説明する。先頭ポインタ管理部１２は、ページポインタ生成部１１からポインタ生成完了通知信号がアサートされた状態でページ取得要求が通知されると、先頭フリーページの最終ワードデータ信号で通知される次ポインタ情報を内部にラッチし、ページ取得要求元のブロックに対して、先頭フリーページポインタ値として先頭フリーページポインタ信号で通知する。先頭フリーページの最終ワードデータ信号は、メモリ６から読み出された信号であり、ページ取得要求がある度に先頭フリーページポインタが示すページの最終ワードのデータを読み出す動作が実行されている。
【００６７】
しかし、先頭ポインタ管理部１２は、ページポインタ生成部１１の内部ページポインタ生成用カウンタが満了する（ポインタ生成完了通知信号がアサートされる）まで、ページポインタ生成部１１から通知されるポインタ信号を先頭フリーページポインタとして保持し、ページポインタ生成部１１の内部ページポインタ生成用カウンタが満了した（ポインタ生成完了通知信号がアサートされた）時点で、メモリ６から読み出された先頭フリーページの最終ワードデータ信号を先頭フリーページポインタとして保持する。
【００６８】
図７は、ページ取得要求が総ページ数の数分通知された場合の動作を説明するための説明図である。図７に示す例は、ページ取得要求が総ページ数回（ｎ回）行われたことにもとづいて、ページｎにデータが書き込まれている最中であり、メモリ最終ページｎの次にリンクされているページとして次ポインタ値＝ｋが通知されている状態を示す例である。
【００６９】
なお、図７には、“ページ０→ページ１→ページ３→ページ６”と“ページ２→ページ４→ページ５”の２本のページリストが完成し、“ページｉ→ページｎ−１→ページｎ”の１本のページリストが形成途中であることも示されている。
【００７０】
次に、ページ開放要求が通知された場合の動作を説明する。図３において、ページ開放要求が通知された場合には、最終ポインタ管理部１３は、同時に通知される開放ページリスト最終ポインタ信号が示す開放ページリスト最終ポインタの値を新たな最終フリーページポインタ値として内部に保持する。また、ページ数管理部１４は、同時に通知される開放ページリスト長信号の値を内部残りフリーページ管理用カウンタに加算し、残りフリーページ数の値を更新する。さらに、最終フリーページポインタ値および残りフリーページ数が更新されるタイミングで、最終ポインタ管理部１３から出力される更新前の最終フリーページの最終ワードポインタ信号が示す位置に開放ページリスト先頭ポインタ信号で示す値を記憶させ、フリーページリストの更新も行う。なお、開放ページリスト先頭ポインタ信号は、ページ開放要求元のブロックからメモリ６に直接渡されることになる。
【００７１】
以上の一連の処理によって、最終フリーページポインタ値、残りフリーページ数、およびフリーページリストが更新される。以降、ページ開放要求が通知される毎に同様の処理が繰り返される。
【００７２】
図８は、ページ開放要求が通知された場合のフリーページ管理部１の動作を説明するための説明図である。図８に示す例は、送信データページリストの開放要求が通知されると、フリーページリストの最後であるページｎに、開放される送信データページリスト（ページ０→ページ１→ページ３→ページ６）の先頭ページ０がリンクされ（図８（Ａ），（Ｂ）参照）、フリーページリストの最終ページがページ６に更新されている（図８（Ｃ）参照）ことを示す例である。つまり、ページリスト開放要求によって、現時点のフリーページリストの最終ページであるページｎの最終ワードの次ポインタ値にページ０が新たに記憶されることによって、フリーページリストの更新が行われる。そして、途中のページチェーンはメモリ６内部の各ページ内に記憶されているので、フリーページ管理部１は、フリーページリストの先頭と最終のページ（ページポインタ）情報を記憶（保持）するだけでよく、管理の簡易化が実現される。
【００７３】
以上のように、ページ取得動作とページ開放動作とを繰り返すことによって、メモリ６の内部にページリストが形成される。また、複数本のデータページリストと１本のフリーページリストが存在することになる。また、使用中のページおよびフリーページは、ページ取得動作とページ開放動作とが繰り返されることによってメモリ６内に点在することになるが、各ページの最終ワードに次ポインタ（次ページアドレス）情報が記憶されているので、各ページの連続性は確保される。つまり、各ページリストの正当性は容易に確保されることになると同時に、管理も簡易化できる。
【００７４】
図９は、ページ取得動作とページ開放動作とが繰り返される場合のメモリ６の状態を示す説明図である。図９には、ページ取得動作とページ開放動作とが繰り返し実行されることによって、複数のデータページリスト＿Ｎｏ．１（ページ０→ページ１→ページｉ）およびデータページリスト＿Ｎｏ．２（ページ２→ページｊ→ページｎ→ページｋ）と、１本のフリーページリスト（ページ３→ページ４→・・・・・→ページｎ−１）とが形成されていることが例示されている。
【００７５】
図１０および図１１は、ページ取得動作が行われる場合のフリーページ管理部１の動作、およびページ開放動作が行われる場合のフリーページ管理部１の動作を示すタイミング図である。
【００７６】
図１０に例示するように、ページ取得要求が通知され、要求が受け付けられる（ページ取得要求ＡＣＫがアサートされる）と、ページポインタ生成部１１は、内部ページポインタ生成用カウンタをインクリメント（＋１）し、先頭ポインタ管理部１２は、先頭フリーページポインタ値を更新前の内部ページポインタ生成用カウンタ値に更新する。更に、ページ取得動作が繰り返され、内部ページポインタ生成用カウンタが満了した（ポインタ生成完了通知信号がアサートされた）場合、メモリ６の内部のページチェーンが完成したことになる。以降にページ取得要求が通知された場合には、先頭ポインタ管理部１２は、メモリ６から読み出した先頭フリーページの最終ワードデータに記憶されている次ポインタ値を新たな先頭フリーページポインタ値として更新する。
【００７７】
また、ページ数管理部１４は、ページ取得要求ＡＣＫ信号がアサートされる毎に内部残りフリーページ管理用カウンタの値を−１デクリメント（−１）する。次に、図１１に示すように、ページ開放要求が通知され、要求が受け付けられる（ページ開放要求ＡＣＫがアサートされる）と、最終ポインタ管理部１３は、最終フリーページポインタ値を開放ページリスト最終ポインタ信号で通知される値に更新する。また、ページ数管理部１４は、ページ開放要求ＡＣＫ信号がアサートされると、内部残りフリーページ管理用カウンタの値に開放ページリスト長で通知される値を加算する。
【００７８】
また、この実施形態では、図１０および図１１に示すように、ページ取得動作およびページ開放動作は、メモリ６へのアクセス競合が発生しない限り、１クロックで完了できることを特徴としている。すなわち、データ転送およびページ管理の効率化が実現されている。
【００７９】
次に、残りフリーページ数が少なくなった場合の動作を説明する。図３において、ページ取得要求が繰り返され、残りフリーページ数が２ページになった場合、ページ数管理部１４はメモリオーバフロー通知信号をアサートする。メモリオーバフロー通知信号がアサートされた場合、データ転送制御を行うブロックはページ取得動作を停止し、残りフリーページが３ページ以上になるまで待機する必要がある。残りフリーページが２ページとなった時点でメモリオーバフロー通知信号をアサートする理由は、フリーページチェーンを形成するには最低２ページ必要であり、残りフリーページが１ページ以下になるとフリーページチェーンが破壊され、正常なページ管理ができなくなってしまうためである。
【００８０】
図１２は、メモリオーバフローが発生した場合のフリーページ管理部１の動作を示すタイミング図である。図１２に示す例では、ページ取得動作が繰り返され、残りフリーページ数が２ページになった場合に、メモリオーバフロー通知信号がアサートされている。そして、この状態でページ開放動作が実行され、残りフリーページ数が３ページ以上になると（図１２に示す例では７になっている。）メモリオーバフロー通知信号はデアサートされ、再度ページ取得動作が可能になる。
【００８１】
実施形態２，
次に、本発明の第２の実施形態を図面を参照して説明する。図１３は第２の実施形態におけるメモリ６の状態例を示す説明図である。なお、第２の実施形態のフレームデータ送受信回路の構成は、図２および図３に示された構成と同様である。第２の実施形態では、各ページの最終ワードに記憶させる情報として、第１の実施形態における情報に、ページリスト最終情報（Ｅ）が追加されている。
【００８２】
第１の実施形態では、ページリストの最終を示す情報が次ポインタ値＝ａｌｌ’１’と定義されたが、第２の実施形態では、新たにページリスト最終を示す専用のビットが設けられている。各ページの最終ワードに記憶される情報として、次ポインタ情報（ＮＰ）および格納データバイト数情報（ＬＥＮ）に加えて、ページリスト最終情報（Ｅ）が存在することによって、ページリストの最終判断が容易になる。
【００８３】
図２に示す構成おいて、メモリ６の内部の各ページの最終ワードの情報を図１３に例示するように変更した場合には、送信データ制御部３および受信データ制御部４は、取得したページにデータを書き込むときに、転送するフレームデータが１ページに納まらない場合に、ページリスト最終情報（Ｅ）に’０’を設定する。転送するフレームデータの最終バイトを格納できた場合には、該当ページのページリスト最終情報（Ｅ）に’１’を設定する。また、次ポインタ情報（ＮＰ）については、次ポインタ情報のみを記憶させ、フレームデータの最終バイトを格納した場合でも、特別な次ポインタ情報を設定することはしない。具体的には、次ポインタ値＝ａｌｌ’１’の設定は不要であり、ポインタ値としてはどのような値を設定してもよい。なお、格納データバイト数情報（ＬＥＮ）については第１の実施形態の場合と同様に、各ページに格納されたデータバイト数を記憶させる。
【００８４】
この実施形態では、ページリストの最終を示す情報として専用のビットを用意するので、ページリストの最終判断をより容易に実行でき、データ転送制御の効率がより高くなる。
【００８５】
上記の各実施形態では、メモリの各ページの最終ワードに、次ポインタ（次ページアドレス）情報および格納データバイト数情報を記憶させることによって、各ページのリンク管理が簡易化できる。また、ページ管理手段は、フリーページの先頭ポインタ、最終ポインタおよび残りページ数の３種類の情報だけを管理すればよく、特別にページ管理テーブルを用意する必要がないため、ページ管理を簡易化できる。
【００８６】
特に、送信データ制御部３および受信データ制御部４は、メモリ６からデータが読み出された場合に、データを読み出したページリストにおける先頭ページを示す情報、データを読み出したページリストにおける最終ページを示す情報、およびデータを読み出したページの数を示す情報を出力し、フリーページ管理部１は、送信データ制御部３または受信データ制御部４が出力した各情報にもとづいて、先頭ページを示す情報、最終ページを示す情報、およびページ数を示す情報を更新するだけでフリーページ（データが格納されていないページ）の管理を行うことができ、フリーページの管理を簡易化できる。
【００８７】
図２に示されたフレームデータ送受信回路を、１チップＬＳＩまたは数チップのＬＳＩに集積化してもよい。その場合には、フリーページ管理部１を実現する回路部分は、フリーページの先頭ポインタ、最終ポインタおよび残りページ数の３種類の情報だけを管理する構成を有すればよく、特別にページ管理テーブルを用意する必要がないため、フリーページ管理部１等の回路規模を削減できる。
【産業上の利用可能性】
【００８８】
本発明は、メモリを使用してデータ転送を行うデータ通信機器全般、およびディジタルＬＳＩ全般等に適用可能である。
【図面の簡単な説明】
【００８９】
【図１】本発明の概要を示すブロック図である。
【図２】フレームデータ送受信回路を示すブロック図である。
【図３】フリーページ管理部の構成例を示すブロック図である。
【図４】先頭ポインタ値＝０が出力されたときのメモリの状態例を示す説明図である。
【図５】ページ取得要求信号によってページ取得要求が通知された場合の動作を説明するための説明図である。
【図６】ページ取得要求信号によってページ取得要求が通知された場合の動作を説明するための説明図である。
【図７】ページ取得要求が総ページ数の数分通知された場合の動作を説明するための説明図である。
【図８】ページ開放要求が通知された場合のフリーページ管理部の動作を説明するための説明図である。
【図９】ページ取得動作とページ開放動作とが繰り返される場合のメモリの状態を示す説明図である。
【図１０】ページ取得動作が行われる場合のフリーページ管理部の動作を示すタイミング図である。
【図１１】ページ開放動作が行われる場合のフリーページ管理部の動作を示すタイミング図である。
【図１２】メモリオーバフローが発生した場合のフリーページ管理部の動作を示すタイミング図である。
【図１３】第２の実施形態におけるメモリの状態例を示す説明図である。
【符号の説明】
【００９０】
１    フリーページ管理部
２    Ｉ／Ｏ制御部
３    送信データ制御部
４    受信データ制御部
５    メモリアクセス制御部
６    メモリ
１１  ページポインタ生成部
１２  先頭ポインタ管理部
１３  最終ポインタ管理部
１４  ページ数管理部
【図１】
2009104497.tif 000003
【図２】
2009104497.tif 000004
【図３】
2009104497.tif 000005
【図４】
2009104497.tif 000006
【図５】
2009104497.tif 000007
【図６】
2009104497.tif 000008
【図７】
2009104497.tif 000009
【図８】
2009104497.tif 000010
【図９】
2009104497.tif 000011
【図１０】
2009104497.tif 000012
【図１１】
2009104497.tif 000013
【図１２】
2009104497.tif 000014
【図１３】
2009104497.tif 000015