Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4018961B2 - Data processing device - Google Patents
[go: Go Back, main page]

JP4018961B2 - Data processing device - Google Patents

Data processing device Download PDF

Info

Publication number
JP4018961B2
JP4018961B2 JP2002292985A JP2002292985A JP4018961B2 JP 4018961 B2 JP4018961 B2 JP 4018961B2 JP 2002292985 A JP2002292985 A JP 2002292985A JP 2002292985 A JP2002292985 A JP 2002292985A JP 4018961 B2 JP4018961 B2 JP 4018961B2
Authority
JP
Japan
Prior art keywords
address
memory
data
buffer memory
shared buffer
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 - Lifetime
Application number
JP2002292985A
Other languages
Japanese (ja)
Other versions
JP2004129083A (en
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 パナソニック コミュニケーションズ株式会社
Priority to JP2002292985A priority Critical patent/JP4018961B2/en
Publication of JP2004129083A publication Critical patent/JP2004129083A/en
Application granted granted Critical
Publication of JP4018961B2 publication Critical patent/JP4018961B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、LANに接続されるルータ、LANスイッチ又はデータ端末装置等のデータ処理装置に係り、特にLANから受信したデータをバッファリングして他へ送信する際にデータの書き込む/読み出しに関するメモリ制御を伴うデータ処理装置に関する。
【0002】
【従来の技術】
従来のネットワーク機器は、イーサネット(R)等のLANから受信したIPパケットをバッファメモリに蓄積し、CPUが読込んで宛先を確認した後に、再びバッファメモリに書き込んで宛先へ送信している。
【0003】
図16は従来のネットワーク機器の概略的な構成を示している。ネットワーク機器は、コネクタ等の物理層インターフェース(PHY)1を介してLANに接続され、LAN上を流れるIPパケットを受信し又は送信する際のバッファリングはLSI内部ブロック2にて行う。CPU3はLSI内部ブロック2におけるIPパケットの受信/送信を制御する。図16に示すネットワーク機器は、LAN1〜LAN3の3つのネットワークに接続可能に構成されており、コネクタ1a、1b、1cにて物理的に接続される。LSI内部ブロック2内には、コネクタ1a、1b、1c(LAN1〜LAN3)に対してネットワークインターフェース4、5、6が設置されている。ネットワークインターフェース4、5、6に対して個別にバッファメモリ7、8、9が設けられている。バッファメモリ7、8、9は、それぞれ受信用バッファメモリと送信用バッファメモリとで構成されている。
【0004】
例えば、LAN1から受信したパケットデータをLAN2へ送出する場合、LAN1から受信したパケットデータは、バッファメモリ7の受信用バッファメモリに格納され、その後にCPU3が受信用バッファメモリから読み出してLAN2のバッファメモリ8の送信用バッファメモリに書き込むことでLAN2へ送出される。
【0005】
また、長さの異なる複数のメインメモリ上のパケット領域を管理する複数の受信用パケットバッファを設けて、ソフトウエア上のオーバヘッドを減らして、受信用のパケット領域を確保する技術がある(例えば、特許文献1参照)。
【0006】
【特許文献1】
特開2002−244517号公報(図2)
【0007】
【発明が解決しようとする課題】
しかしながら、上記した従来の技術では、ネットワーク機器に接続される個々のLAN1−3に対応してそれぞれ専用の受信用バッファメモリ及び送信用バッファメモリを設けているので、CPU3が受信用バッファメモリからパケットデータを読み込んで、再度送信用バッファメモリに書き込むといった移し変えの作業に時間が要するといった問題があった。
【0008】
また、ネットワーク機器に接続される個々のLAN1−3に対応してそれぞれ専用の受信用バッファメモリ及び送信用バッファメモリを設けているが、製品としては1チャンネルしか使用しない場合も有り得、そのような場合には2チャンネル分のバッファメモリが無駄になるといった問題があった。
【0009】
さらに、ネットワーク機器に接続されるLANの数が増大すると、それに合わせてバッファメモリも増設しなければならず、またCPUの処理速度に余裕がない場合は、受信用バッファメモリを増設しなければならず、バッファメモリが増大する傾向にあった。
【0010】
また、特開2002−244517号は、入力用通信手段と出力用通信手段とをそれぞれ1個づつ有するもので、入力用及び出力用を兼ねた通信手段を複数個有するものではない。そのため、入力用及び出力用を兼ねた通信手段を複数個設けた場合の上記課題に対応できなかった。
【0011】
本発明は、以上のような実情に鑑みて成されたものであり、バッファメモリの増大を抑制してコストダウン、装置の小型化を図ることができると共に、CPUによる受信用バッファメモリから送信用バッファメモリへのデータの移し変え作業を無くして処理の高速化を実現するデータ処理装置を提供することを目的とする。
【0012】
【課題を解決するための手段】
本発明は、LANとのインターフェースを行う複数のネットワークインターフェース手段と、前記複数のネットワークインターフェース手段によりデータの格納および格納されたデータの読み出しのためにアクセスされる共有バッファメモリと、前記共有バッファメモリにアクセスするための仮想メモリアドレスを前記共有バッファメモリの実際の実メモリアドレスに変換するものであって前記ネットワークインターフェース手段ごとに使用する仮想メモリアドレスのアドレス範囲が区分されるとともに前記区分されたアドレス範囲を受信用と送信用とでさらに分けて仮想メモリアドレスが設定されたアドレス変換テーブルと、前記ネットワークインターフェース手段から前記共有バッファメモリにアクセスするために仮想メモリアドレスが入力されると前記アドレス変換テーブルを用いて当該仮想メモリアドレスを実メモリアドレスに変換し、変換された実メモリアドレスの共有バッファメモリにアクセスする制御手段とを備えた。
【0013】
また本発明は、ネットワークインターフェース手段から指定された仮想メモリアドレスをアドレス変換テーブルで実際にデータを読み出す実メモリアドレスに変換し、ネットワークインターフェース手段から指定されたアドレスに関わらず制御手段で実際にデータを共有バッファメモリのどの格納領域から読み出すかを任意に設定できるように構成し、共有バッファメモリ内でデータを移し変える処理を行うことなくデータを読み出せるようにした。
【0014】
【発明の実施の形態】
本発明の第1の態様は、LANとのインターフェースを行う複数のネットワークインターフェース手段と、前記複数のネットワークインターフェース手段によりデータの格納および格納されたデータの読み出しのためにアクセスされる共有バッファメモリと、前記共有バッファメモリにアクセスするための仮想メモリアドレスを前記共有バッファメモリの実際の実メモリアドレスに変換するものであって前記ネットワークインターフェース手段ごとに使用する仮想メモリアドレスのアドレス範囲が区分されるとともに前記区分されたアドレス範囲を受信用と送信用とでさらに分けて仮想メモリアドレスが設定されたアドレス変換テーブルと、前記ネットワークインターフェース手段から前記共有バッファメモリにアクセスするために仮想メモリアドレスが入力されると前記アドレス変換テーブルを用いて当該仮想メモリアドレスを実メモリアドレスに変換し、変換された実メモリアドレスの共有バッファメモリにアクセスする制御手段とを備えるものとした。
【0015】
以上のように構成されたデータ処理装置によれば、ネットワークインターフェース手段から指定された仮想メモリアドレスに関わらず制御手段で実際にデータを共有バッファメモリのどの領域にアクセスするかを任意に設定できるので、ネットワークインターフェース手段から同一の仮想メモリアドレスが指定された場合でも共有バッファメモリ内でデータを移し変える処理を行う必要がなく、共有バッファメモリを有効に活用できると共に処理を高速にできる。
【0017】
また、メモリに書き込んだときにネットワークインターフェース手段が使用した仮想メモリアドレスとは異なる仮想メモリアドレスを使用してネットワークインターフェース手段が読み出しアドレスを指定でき、メモリ内でデータを移し変える処理を行うことなく同一アドレスからデータを読み出せるので、共有バッファメモリを有効に活用できると共に処理を高速にできる。
【0020】
本発明の第2の態様は、前記制御手段は、前記アドレス変換テーブルに仮想メモリアドレスに対応する実メモリアドレスが設定されていない場合、前記共有バッファメモリの実メモリアドレスにおいて空き領域となっている最小アドレスにアクセスするものとした。
【0021】
以上のように構成されたデータ処理装置によれば、ネットワークインターフェース手段から指定された仮想メモリアドレスに関わらず制御手段で実際にデータを共有バッファメモリのどの領域にアクセスするかを任意に設定できるので、ネットワークインターフェース手段から同一の仮想メモリアドレスが指定された場合でも共有バッファメモリ内でデータを移し変える処理を行う必要がなく、共有バッファメモリを有効に活用できると共に処理を高速にできる。
【0022】
また、ネットワークインターフェース手段から指定された仮想メモリアドレスを実際にデータを格納する共有バッファメモリの実メモリアドレスに変換する際、使用環境に応じてソフト的にも又はハード的にも対応できるので、利用度の高いアドレス変換を実現できる。
【0023】
本発明の第3の態様は、第1の態様のデータ処理装置において、共有バッファメモリは、データの格納領域がパケット通信で転送される最大データ量より小さい単位に分割されるものとした。
【0024】
従来のように、データの格納領域をパケット通信で転送される最大データ量が収まる容量で構成すると、実際にパケット通信で転送される最大データ量より小さいデータ量のデータを格納する際、格納領域内に無駄な空きスペースが生じ、メモリの利用効率が悪かった。
【0025】
そこで、本発明によると、データの格納領域を、パケット通信で転送される最大データ量より小さい単位に分割することにより、実際にパケット通信で転送されるデータを格納する際に無駄な空きスペースが生じにくく、メモリを有効活用できる。
【0026】
本発明の第4の態様は、第1の態様のデータ処理装置において、前記制御手段は、前記アドレス変換テーブルにイニシャル値として共有バッファメモリの実メモリアドレスの範囲外の値を設定し、前記共有バッファメモリにデータを格納する際に前記アドレス変換テーブルの書換えを行うものとした。
これによると、ネットワークインターフェース手段から指定された仮想メモリアドレスに関わらず制御手段で実際にデータを共有バッファメモリのどの領域にアクセスするかを任意に設定できる。また、前記アドレス変換テーブルの記憶領域内にイニシャル値としてメモリの格納領域のいずれも指定しない値を設定することにより、アドレス変換テーブル内のいずれも指定しない値が格納されている記憶領域をカウントすれば、メモリの格納領域のほとんどが使用されてメモリフルの状態が近いことが分かるので、メモリの未使用領域が残り少ないことを容易に判別できる。
本発明の第5の態様は、第4の態様のデータ処理装置において、前記制御手段は、前記アドレス変換テーブルにより変換された実メモリアドレスが前記イニシャル値の場合共有バッファメモリの実メモリアドレスにおいて空き領域となっている最小アドレスから順に使用されるように前記アドレス変換テーブルのイニシャル値を書換えるものとした。
【0027】
これによると、前記制御手段は、共有バッファメモリの格納領域がアドレスの小さい順に使用されるように前記アドレス変換テーブルの記憶領域内の値を設定することにより、共有バッファメモリ内において使用中の格納領域と未使用の格納領域がまとまっておらず未使用の格納領域が点在する場合でも、共有バッファメモリ内の未使用の格納領域をアドレスの小さい順番に選択するので、実際の共有バッファメモリは未使用の格納領域が点在していても、処理手段側から見ると連続したアドレスにデータを格納しているように制御でき、共有バッファメモリを利用しやすくできる。また、点在する未使用の格納領域を有効利用できるので、共有バッファメモリを無駄なく効率的に利用できる。
【0029】
本発明の第6の態様は、第4または第5の態様のデータ処理装置において、前記制御手段は、前記共有バッファメモリ空き領域が所定量以下になった場合、前記アドレス変換テーブルの書き換えを行わないものである。
【0030】
これによると、前記共有バッファメモリに空き領域がなくなった場合、それ以降前記制御手段は前記アドレス変換テーブルにアドレス書換えを行なわないので、既に共有バッファメモリ内に格納されているデータが上書きされるのを防止できる。
【0031】
本発明の第7の態様は、第4から第6のいずれかの態様のデータ処理装置において、前記制御手段は、前記アドレス変換テーブルに未使用領域がなくなった場合、前記アドレス変換テーブルの書き換えを行わないものである。
【0032】
これによると、前記アドレス変換テーブルに空き領域がなくなった場合、それ以降前記制御手段は前記アドレス変換テーブルにアドレス書換えを行なわないので、既にアドレス変換テーブル内に格納されているデータが上書きされるのを防止できる。
【0033】
本発明の第8の態様は、第1または第2の態様のデータ処理装置において、前記制御手段は、前記アドレス変換テーブルによって変換されたアドレスが前記共有バッファメモリのいずれの実メモリアドレスでもない場合、前記変換後の実メモリアドレスへのデータの格納および読み出しを停止するものである。
【0034】
これによると、前記アドレス変換テーブルによって変換されたアドレスが前記共有バッファメモリのいずれの実メモリアドレスでもない場合、データの書込処理又は読出処理を停止するので、実際には共有バッファメモリのどこにもデータが書込まれていないにも関わらず書込処理が正常終了したものと誤判断して処理が進んだり、また、実際には共有バッファメモリのどこからもデータが読出されていないにも関わらず読出処理が正常終了したものと誤判断して処理が進むのを防止できる。
【0035】
特にソフトのバグにより本来指定すべきアドレスとは異なるアドレスを指定するということが起こり得る。この場合、本発明によれば、データの書込処理又は読出処理を停止するので、誤動作の処理が進行するのを防止できる。
【0036】
本発明の第9の態様は、第1または第4の態様のデータ処理装置において、前記制御手段は、前記共有バッファメモリの実メモリアドレスを前記アドレス変換テーブルに書込む専用ハード回路を別途設け、前記共有バッファメモリのどの実メモリアドレスにデータを格納するかについて前記格納すべき実メモリアドレスに基づいてコマンドを生成し、この専用ハード回路が前記コマンドを解析して前記アドレス変換テーブルに実メモリアドレスを書込むものとした。
【0037】
従来のように、データを格納するのにメモリの格納領域を例えば4個使用する場合、制御手段はアドレス変換テーブルに4回のアドレスを書込む必要がある。これによると、制御手段はアドレス変換テーブルの書込み処理のためにその間占有されることになる。
【0038】
そこで、本発明によると、制御手段において必要なメモリの格納領域の大きさが分かると前記メモリの格納領域を示すアドレスに基づいてコマンドを生成し、また、前記アドレス変換テーブルにアドレスを書込む専用ハード回路を設け、この専用ハード回路が前記コマンドを解析して前記アドレス変換テーブルにアドレスを書込むことにより、制御手段は、必要なメモリの格納領域の大きさに関わらず、コマンドを1回送出するだけで、前記アドレス変換テーブルの複数の記憶領域内の書換えを行うことができるので、制御手段の負荷を軽減し、処理の高速化を図ることができる。
【0039】
本発明の第10の態様は、第1の態様のデータ処理装置において、前記制御手段は、前記バッファメモリから読み出されてネットワークインターフェース手段を介してLANに送信される送信データと前記ネットワークインターフェース手段がLANから受信して前記バッファメモリに格納する受信データとを同一バスを用いて同一の共有バッファメモリに対して格納又は読出を行い、且つ前記共有バッファメモリにアクセスする仮想メモリアドレスを送信データ用及び受信データ用に分けて管理するものである。
【0040】
これによると、送信データと受信データとを同一バスを用いて同一の共有バッファメモリに対して格納又は読出を行うことにより、送信データの読出しと受信データの格納とは同時には行われないので、送信データに対して共有バッファメモリの全アドレスを対象とする送信データ専用のアドレスを付与し、又、受信データに対して共有バッファメモリの全アドレスを対象とする受信データ専用のアドレスを付与すれば、見かけ上実メモリ容量の倍の容量があるように管理でき、送信データと受信データとが相互に上書きすることなく、必要とされるメモリ容量を半分以下に抑えることができる。その結果、ネットワークインターフェース手段側に対して、予め実メモリの倍以上のメモリ容量があるように装うことができるので、ネットワークインターフェース手段側に実メモリの容量以上の通信を支障なく行わせることができる。
【0041】
また、送信データと受信データとを同一バスを用いて同一の共有バッファメモリに対して格納又は読出を行う場合であっても、各ネットワークインターフェース手段が共有バッファメモリの格納領域を示すアドレスを送信データ用及び受信データ用に分けて各々保有することにより、あるデータの送信中に他のデータを受信してもバス上でデータが衝突することがないので、安定したデータ通信を保障できる。
【0045】
以下、本発明に係るデータ処理装置を適用したネットワーク機器の一実施の形態について図面を参照して具体的に説明する。
【0046】
図1は本実施の形態に係るネットワーク機器の機能ブロック図である。本実施の形態は、3つのLAN1、2、3(例えば、イーサネット(R))に接続するための物理層インターフェース(PHY)1が設けられている。物理層インターフェース(PHY)1はLAN1、2、3の規格に準拠した形状のコネクタ1a、1b、1cで構成される。LSI内部ブロック100は、各コネクタ1a、1b、1cに対応してネットワークインターフェース101、102、103が設置されている。ネットワークインターフェース101、102、103は、LAN1、2、3の仕様(プロトコル等)に基づいて動作し、LAN1、2、3とのインターフェースを取る働きをする。また、ネットワークインターフェース101、102、103は、受信時には受信用アドレスを使用してメモリアクセス動作を実行し、送信動作時には送信用アドレスを使用してメモリアクセス動作する。これらのネットワークインターフェース101、102、103に対して1つの共用バッファメモリ104を備えている。共用バッファメモリ104は、例えばRAMで構成することができる。共用バッファメモリ104に対する書込み/読出しを制御するためにメモリ制御回路105が設けられている。ネットワークインターフェース101、102、103と共用バッファメモリ104とは1つの内部バス106で接続される。暗号回路107は、IPv6に準拠して暗号化されたデータを復号化し又は送信データを暗号化する部分である。暗号回路107は、暗号モジュールの受信用アドレスを使用してメモリアクセスし、暗号モジュールの送信用アドレスを使用してメモリアクセスする。
【0047】
本実施の形態は、1つの共用バッファメモリ104を、複数のネットワークインターフェース101、102、103及び暗号回路107並びにCPU200が送信用バッファメモリ及び受信用バッファメモリとして使用する。メモリ制御回路105は、後述するアドレス変換を実施する。
【0048】
図2はメモリ制御回路105のアドレス変換に関する機能を示したブロック図である。メモリ制御回路105は、アドレス変換テーブル201と、セレクタ202と、コマンド解析回路203とを備えている。
【0049】
アドレス変換テーブル201は、テーブル−0からテーブル−255までの256段構成になっていて、ネットワークインターフェース101〜103等が共用バッファメモリ104にアクセスするために使用するメモリアドレス空間(以下、仮想メモリアドレス空間と呼ぶ)を、共用バッファメモリ104の現実のアドレス空間(以下、実メモリアドレス空間と呼ぶ)に変換するテーブルデータがそれぞれ格納されている。アドレス変換テーブル201を構成している256段の各テーブルは、仮想メモリアドレス空間の上位8ビットが予め固定的に割り付けられている。
【0050】
セレクタ202は、ネットワークインターフェース101〜103等がアクセスする仮想メモリアドレスの上位8ビットが入力し、その入力アドレスにしたがって1つのテーブルを選択し、選択したテーブルのテーブルデータを共用バッファメモリ104に対して実メモリアドレス空間の上位8ビットとして出力する。なお、ネットワークインターフェース101〜103のアクセスアドレスの下位8ビットは、そのまま変換されずに実メモリアドレスの下位8ビットとして出力する。
【0051】
コマンド解析回路203は、CPU200から制御線を介して与えられるコマンドを解析し、解析結果に示される指示内容にしたがってアドレス変換テーブル201のテーブルデータを、クリア、コピー、移動又は再設定する処理を実行する。また、コマンド解析回路203は、解析結果に示される指示内容にしたがって共用バッファメモリ104の使用状況フラグをリセットする。
【0052】
ここで、ネットワークインターフェース101〜103等が共用バッファメモリ104へアクセスする際に用いる仮想メモリアドレスについて説明する。
【0053】
図3に示すように、各ネットワークインターフェース101〜103は各2Kバイトの受信用アドレスと送信用アドレスとを使用可能になっている。また、暗号回路107は、IPv6に準拠した暗号化に対応させて各2Kバイトの暗号モジュールの送信用アドレスと暗号モジュールの受信用アドレスとを使用可能である。さらに、CPU200は直接共用バッファメモリ104にアクセスするために、全仮想メモリアドレス空間(0000h〜ffffh)を使用可能である。
【0054】
このように、複数のネットワークインタフェース101〜103、暗号回路107、CPU200は、送信データと受信データとを同一バスを用いて同一の共用バッファメモリ104に対して書き込み/読み出しを行い、且つ共用バッファメモリ104にアクセスするためのアドレスを送信用アドレス及び受信用アドレスに分けるものとした。これにより、送信データと受信データとを同一バスを用いて同一メモリに対して格納又は読出を行うことにより、送信データの読出しと受信データの格納とは同時には行われないこととなり、送信用アドレス空間として実メモリアドレスの全アドレスを対象とする送信データ専用のアドレスを付与し、又、受信用アドレス空間として実メモリアドレスの全アドレスを対象とする受信データ専用のアドレスを付与すれば、見かけ上実メモリ容量の倍の容量があるように管理でき、送信データと受信データとが相互に上書きすることなく、必要とされるメモリ容量を半分以下に抑えることができる。その結果、書き込み/読み出し側となるネットワークインターフェースなどに対して、予め実メモリの倍以上のメモリ容量があるように装うことができるので、ネットワークインターフェースなどを実メモリの容量以上の通信を支障なく行わせることができる。
【0055】
また、送信データと受信データとを同一バスを用いて同一のメモリに対して格納又は読出を行う場合であっても、各ネットワークインターフェースなどがメモリの格納領域を示すアドレスを送信データ用及び受信データ用に分けて各々保有することにより、あるデータの送信中に他のデータを受信してもバス上でデータが衝突することがないので、安定したデータ通信を保障できる。
【0056】
また、上記したように受信用アドレス空間及び送信用アドレス空間をそれぞれ2Kバイトとしたのは、イーサネット(R)に関する規格では1パケットの最大容量を1.5Kバイトと定めているからである。他の種類のネットワークに適用する場合は、そのネットワークの規格で定められている送信単位(パケット等)の最大容量に合わせることになる。
【0057】
上記のように各ネットワークインターフェース101〜103は、各2Kバイトの受信用アドレス空間と送信用アドレス空間を有しているが、各2Kバイトの受信用アドレス空間と送信用アドレス空間は、さらに256バイト単位でページ分割されている。
【0058】
図4はネットワークインターフェース101について、受信用アドレス空間と送信用アドレス空間とを256バイト単位でページ分割したときのアドレスの割付けを示している。同図において、ライトターゲットアドレスは受信用アドレスであり、リードターゲットアドレスは送信用アドレスである。例えば、ネットワークインターフェース101が500バイトのデータを受信した場合、ライトターゲットアドレスとして0000h〜01ehにアクセスすることになる。上位ビットが00のときはテーブル−0が選択され、テーブル−0に書かれている上位アドレスが出力される。また、上位ビットが01のときはテーブル−1が選択され、テーブル−1に書かれている上位アドレスが出力される。
【0059】
一方、共用バッファメモリ104はデータの格納領域が256バイト単位で分割されている。すなわち、記憶領域の最小単位は256バイトに設定されている。このように仮想メモリアドレス空間と実メモリアドレス空間は、データの記憶領域が256バイト単位の分割領域に区分けされていて、アドレス変換テーブル201によって双方の分割領域(ページ)が対応付けられている。
【0060】
図5は、ネットワークインターフェース101〜103等がメモリアクセスの際に使用する仮想メモリアドレス空間の分割領域(ページ)と、共用バッファメモリ104の実メモリアドレス空間の分割領域との対応関係を示す図である。なお、本実施の形態では共用バッファメモリ104にRAMを想定しているので、図5には仮想メモリの代わりに仮想RAM、RAMと言う文字を使用している。
【0061】
このように、仮想メモリアドレス空間及び実メモリアドレス空間を256バイトの分割領域に分割しているので、共用バッファメモリ104を有効活用できる効果を奏する。データの格納領域をパケット通信で転送される最大データ量が収まる容量(例えば、1.5Kバイト)で構成すると、実際にパケット通信で転送される最大データ量より小さいデータ量のデータを格納する際、格納領域内に無駄な空きスペースが生じ、メモリの利用効率が悪くなる。本発明は、分割領域をパケット通信で転送される最大データ量より小さい単位(例えば、256バイト)に分割することにより、実際にパケット通信で転送されるデータを格納する際に無駄な空きスペースが生じにくく、メモリを有効活用できるようにしている。なお、分割領域をさらに小さいサイズに分割すれば、さらにメモリの使用効率を改善できるが、ページ数が多くなりすぎて管理が煩雑になるので、使用目的に応じて適切なサイズを選択することが望ましい。
【0062】
次に、以上のように構成された本実施の形態に係るネットワーク機器の具体的なメモリ制御動作について説明する。
【0063】
初めに、図6から図9を参照して、共用バッファメモリ104へ受信パケットデータを書き込む受信動作について説明する。一例として、ネットワークインターフェース101がLAN1から1パケットが768バイトから1024バイトの間のデータサイズを有するIPパケットを受信した場合の動作を説明する。
【0064】
ネットワークインターフェース101は、LAN1からパケットデータを受信すると、メモリ制御回路105に対して受信用アドレスを指定してメモリアクセスする。このとき、ネットワークインターフェース101がアクセスする受信用アドレスは図4に示すようにライトターゲットアドレスが0000hから開始することになる。そして、受信パケットデータの全てを書き込み終了するまでライトターゲットアドレスを0000hから順次インクリメントしていくことになる。パケットデータはライトターゲットアドレスのインクリメント動作に同期して共用バッファメモリ104へ転送される。
【0065】
また、アドレス変換テーブル201の各テーブルは、ライトターゲットアドレスの上位ビットで選択されたときに共用バッファメモリ104の空き分割領域の上位アドレスが設定されるようにテーブルデータが書き込み制御される。アドレス変換テーブル201に対するテーブルデータの書き込み制御はメモリ制御回路105が空き分割領域を探して該当テーブルに自動的に設定する自動モードと、CPU200が空き分割領域を管理していてコマンド解析回路203を介して該当テーブルにテーブルデータを設定する手動モードとがある。
【0066】
図6は、図4に示すライトターゲットアドレスを0000hから00ffhにインクリメントしている過程を示している。この間では仮想メモリアドレスであるライトターゲットアドレス[00**]は上位ビットが00を示すので、セレクタ202は00が割り付けられたテーブル−0を選択する。図6に示す例では、テーブル−0にテーブルデータとして02が設定されているので、02を変換後の上位アドレスとして出力する。この結果、実メモリアドレスとなるライトターゲットアドレスは[02**]に変換される。これにより、パケットデータの最初の256バイトは実メモリアドレスの0200h〜02ffhに格納される。
【0067】
図7は、ライトターゲットアドレスとして0000h〜00ffhの書き込みが完了して、引き続きライトターゲットアドレスを0100h〜01ffhの範囲内でインクリメントしている過程を示している。この間では仮想メモリアドレスであるライトターゲットアドレス[01**]は上位ビットが01を示すので、セレクタ202は01が割り付けられたテーブル−1を選択する。図7に示す例では、テーブル−1にテーブルデータとして03が設定されているので、03を変換後の上位アドレスとして出力する。この結果、実メモリアドレスであるライトターゲットアドレスは[03**]に変換される。これにより、パケットデータの次の256バイトは実メモリアドレスの0300h〜03ffhに格納される。
【0068】
図8は、ライトターゲットアドレスとして0100h〜01ffhの書き込みが完了して、引き続きライトターゲットアドレスを0200h〜02ffhの範囲内でインクリメントしている過程を示している。この間では仮想メモリアドレスであるライトターゲットアドレス[02**]は上位ビットが02を示すので、セレクタ202は02が割り付けられたテーブル−2を選択する。図8に示す例では、テーブル−2にテーブルデータとして7eが設定されているので、7eを変換後の上位アドレスとして出力する。この結果、実メモリアドレスとなるライトターゲットアドレスは[7e**]に変換される。これにより、パケットデータのさらに次の256バイトは実メモリアドレスの7e00h〜7effhに格納される。
【0069】
図9は、ライトターゲットアドレスとして0200h〜02ffhの書き込みが完了して、引き続きライトターゲットアドレスを0300h〜03ffhの範囲内でインクリメントしている過程を示している。この間では仮想メモリアドレスであるライトターゲットアドレス[03**]は上位ビットが03を示すので、セレクタ202は03が割り付けられたテーブル−3を選択する。図9に示す例では、テーブル−3にテーブルデータとして7fが設定されているので、7fを変換後の上位アドレスとして出力する。この結果、実メモリアドレス空間でのライトターゲットアドレスは[7f**]に変換される。これにより、パケットデータのさらに次の256バイトは実メモリアドレスの7f00h〜7f**hに格納される。**は最終の下位アドレスである。
【0070】
このように、本実施の形態は、ネットワークインターフェース101がライトターゲットアドレスとして出力するアドレスは連続したアドレスでありながら、その連続したライトターゲットアドレスをアドレス変換テーブル201によってランダムな実メモリアドレスに変換できる。実メモリアドレスにてアクセスされる共用バッファメモリ104に不連続に空き領域が存在する場合であっても、アドレス変換テーブル201のテーブルデータを制御することでその不連続な空き領域にパケットデータを格納することができる。本実施の形態のように、複数のネットワークインターフェースのバッファメモリを共有化し、且つ受信用バッファメモリと送信用バッファメモリとを共有化する構成においては、不連続であっても空き領域を利用できることはメモリのオーバーフロー防止の観点からも非常に有効である。
【0071】
また、アドレス変換テーブル201でネットワークインターフェース101から指定されたアドレスを実際にデータを格納する実メモリアドレス(上位アドレス)に変換し、ネットワークインターフェース101から指定されたアドレスに関わらず実際にデータを実メモリアドレスのどのアドレスに格納するかを任意に設定できるので、ネットワークインターフェース101から同一のアドレスが指定された場合でも共用バッファメモリ内でデータを移し変える処理を行う必要がなく、メモリを有効に活用できると共に処理を高速にできる。
【0072】
次に、図10から図13を参照して、共用バッファメモリ104からパケットデータを読み出す送信動作について説明する。上記した受信動作(図6から図9)で共用バッファメモリ104に書き込まれたデータを、ネットワークインターフェース101がLAN1から送出する場合を説明する。
【0073】
上記したように、共用バッファメモリ104の実メモリアドレスには、0200h〜02ffh、0300h〜03ffh、7e00h〜7effh、7f00h〜7f**hの順にデータが格納されている。これに対して、ネットワークインターフェース101は、図4に示す送信用アドレス空間0800h〜0bffhをリードターゲットアドレスとして使用する。ネットワークインターフェース101は、送信用アドレス空間の開始アドレスである0800hから順次インクリメントしたリードターゲットアドレスを出力する。
【0074】
一方、CPU200は今回読み出し対象にしているパケットデータの格納アドレスである実メモリアドレスを把握している。図9に示すように、データが格納されている実メモリアドレスの上位アドレスは02、03、7e、7fである。また、ネットワークインターフェース101の送信用アドレス(仮想メモリアドレス)も固定である。ネットワークインターフェース101の送信用アドレスは、上位アドレスが08、09、0a、0bと変化する。そこで、CPU200は、アドレス変換テーブル201において08、09、0a、0bが割り付けられたテーブル−8、テーブル−9、テーブル−10、テーブル−11に、実メモリアドレスの上位アドレス02、03、7e、7fを、それぞれテーブルデータとして設定する。
【0075】
図10は、図4に示すリードターゲットアドレスを0800h〜08ffhの範囲内でインクリメントしている過程を示している。この間では仮想メモリアドレスであるリードターゲットアドレス[08**]は上位ビットが08を示すので、セレクタ202は08が割り付けられたテーブル−8を選択する。このとき、テーブル−8には02が設定されているので、02を変換後の上位アドレスとして出力する。この結果、実メモリアドレス空間でのリードターゲットアドレスは[02**]に変換される。これにより、パケットデータの最初の256バイトは実メモリアドレスの0200h〜02ffhから読み出される。
【0076】
図11は、図4に示すリードターゲットアドレスを0900h〜09ffhの範囲内でインクリメントしている過程を示している。この間では仮想メモリアドレスであるリードターゲットアドレス[09**]は上位ビットが09を示すので、セレクタ202は09が割り付けられたテーブル−9を選択する。このとき、テーブル−9には03が設定されているので、03を変換後の上位アドレスとして出力する。この結果、実メモリアドレス空間でのリードターゲットアドレスは[03**]に変換される。これにより、パケットデータの最初の256バイトは実メモリアドレスの0300h〜03ffhから読み出される。
【0077】
図12は、図4に示すリードターゲットアドレスを0a00h〜0affhの範囲内でインクリメントしている過程を示している。この間では仮想メモリアドレスであるリードターゲットアドレス[0a**]は上位ビットが0aを示すので、セレクタ202は7eが割り付けられたテーブル−10を選択する。このとき、テーブル−10には7eが設定されているので、7eを変換後の上位アドレスとして出力する。この結果、実メモリアドレス空間でのリードターゲットアドレスは[7e**]に変換される。これにより、パケットデータの最初の256バイトは実メモリアドレスの7e00h〜7effhから読み出される。
【0078】
図13は、図4に示すリードターゲットアドレスを0b00h〜0bffhの範囲内でインクリメントしている過程を示している。この間では仮想メモリアドレスであるリードターゲットアドレス[0b**]は上位ビットが0bを示すので、セレクタ202は7fが割り付けられたテーブル−11を選択する。このとき、テーブル−11には7fが設定されているので、7fを変換後の上位アドレスとして出力する。この結果、実メモリアドレス空間でのリードターゲットアドレスは[7f**]に変換される。これにより、パケットデータの最初の256バイトは実メモリアドレスの7f00h〜7f**hから読み出される。
【0079】
このように、ネットワークインターフェース101の送信用アドレス(仮想メモリアドレス)をアドレス変換テーブル201で実際にデータが格納されている実メモリアドレスに変換するようにしたので、メモリ内でデータを移し変える処理を行う必要がなく、CPU200は受信データを送信用に読込む必要もないことから、処理の高速化を図ることができる。
【0080】
なお、以上の説明ではネットワークインターフェース101でパケットデータ受信して、同一のネットワークインターフェース101で当該パケットデータを送信する場合を説明した。しかし、他のネットワークインターフェース102、103間でも図3に示すように各自に割り付けられた送信用アドレス,受信用アドレスを使用して共用バッファメモリ104に対する書き込み/読み出しを実行することができる。また、暗号回路107でデータを暗号化または復号化する場合も、暗号回路107が暗号モジュールの送信当アドレス、受信用アドレスを使用してメモリアクセスし、CPU200によるデータの移し変えを行うことなく、共用バッファメモリ104に対する書き込み/読み出しを実行することができる。
【0081】
次に、アドレス変換テーブル201のテーブルデータを自動的に設定する自動モードについて説明する。どのようなタイミングでLAN1、2、3からデータが受信されるのか分からない。そのため、常に自動モードで受信可能にしておくことで、いつ受信されるかまたどの程度のサイズか分からない受信に備えることができる。
【0082】
図14はメモリ制御回路105及び共用バッファメモリ104において自動モードに係わる部分を抜き出して示す図である。256個のテーブルから構成されるアドレス変換テーブル201の各テーブルにテーブルデータが設定されているか否か示すテーブルフラグ210がハード的に用意されている。テーブルフラグ210は、対応するテーブルに有意なテーブルデータが設定されている場合は1が立つ。また、テーブルにテーブルデータが設定されておらずいずれのアドレスをも指定しないことを示す値FFが入っている場合は0が立つように更新される。
【0083】
セレクタ202の出力信号は第3選択手段となるセレクタ211の一方の入力端に入力している。セレクタ211のもう一方の入力端には後述する第2選択手段となる最小フラグ検出回路213からの出力信号が入力する。このセレクタ211は前段のセレクタ202からFFが入力したときは最小フラグ検出回路213からの出力信号を選択して出力する。セレクタ211の出力信号が実メモリアドレスの上位ビットを指示するように構成している。
【0084】
共用バッファメモリ104の実メモリアドレスの使用状況が常に反映される使用状況フラグ212がハード的に用意されている。使用状況フラグ212は、初期値では0が設定されているが、対応する実メモリアドレスにデータが書き込まれると1が立つように更新される。なお、本例では上位アドレスにて指定される分割領域単位(256バイト)で記憶領域を使用するので実メモリアドレスの上位アドレスだけを監視しているが、さらに詳細な使用状況を監視するのであれば下位アドレスまで監視する。
【0085】
最小フラグ検出回路213は、使用状況フラグ212を先頭アドレス側からスキャンして最初に0が立てられている上位アドレスを出力値として出力する。すなわち、常に実メモリアドレス空間において未使用の最小アドレスを出力値とする。
【0086】
図14を参照して、自動モードでの具体的な動作について説明する。図14に示す状態は、アドレス変換テーブル201のテーブル−0、1、4に既にテーブルデータが設定され、その結果、実メモリアドレス(上位アドレス)の00h、02h、03hにデータが格納されている状態である。
【0087】
最小フラグ検出回路213は、かかる状況において、実メモリアドレスの01hを空き領域の最小アドレスとして出力している。そして、書き込みアドレスの上位アドレスとして05hがセレクタ202に与えられている。セレクタ202は、上位アドレス05hに基づいてテーブル−5を選択するが、当該テーブル−5に値としてFFを後段のセレクタ211へ出力する。
【0088】
セレクタ211は、アドレス変換テーブル201からFFが入力された場合は、最小フラグ検出回路213から入力する最小アドレスを選択するので、実メモリアドレスとしては最小アドレスが選択されることになる。すなわち、アドレス変換テーブル201によって実メモリアドレスを指定しない場合は、実メモリで空き領域となっている最小アドレスにデータが格納される。
【0089】
これにより、実メモリアドレスにおいて使用中の格納領域と未使用の格納領域がまとまっておらず未使用の格納領域が点在する場合でも、実メモリアドレスの未使用の格納領域をアドレスの小さい順番に選択するので、点在する未使用の格納領域を有効利用できるので、共用バッファメモリ104を無駄なく効率的に利用できる。また、実際のメモリは未使用の格納領域が点在していても、ネットワークインターフェース101、102、103側から見ると連続したアドレスにデータを格納しているように制御でき、共用バッファメモリ104を利用しやすくできる。
【0090】
また、本実施の形態は、アドレス変換テーブル201の各テーブルにイニシャル値としてメモリの格納領域のいずれも指定しない値FFを設定している。そして、セレクタ202からアドレス変換テーブル201のいずれかのテーブルが指定されると、実メモリアドレスの小さい順に使用されるように最小フラグ検出回路213及びセレクタ211を動作させることとした。
【0091】
これにより、複数のネットワークインターフェース101、102、103等から共用バッファメモリ104に対して同時に送受信動作を実行しない限り、常に1パケット分のデータをまとめて格納でき、1パケットデータが格納された領域の先頭アドレスから順番に当該パケットデータが順番に格納されるので、CPU200は常に格納領域の先頭アドレスから受信データをチェックすればデータ確認を行うことができ、処理の簡素化、高速化を図ることができる。
【0092】
一方、警告発生回路214は、最小フラグ検出回路213の出力値を監視して共用バッファメモリ104の空き領域が所定量以下になるとCPU200に対して割込信号1を出力する。CPU200は、警告発生回路214から割込信号1を受けるとそれ以降アドレス変換テーブル201にアドレス(テーブルデータ)の書き換えを行わないように動作する。
【0093】
これにより、共用バッファメモリ104に空き領域が無くなった場合、CPU200に割込信号1を発することにより、それ以降CPU200がアドレス変換テーブル201にアドレスの書き換えを行わないので、既に共用バッファメモリ104に格納されているデータが上書きされるのを防止できる。
【0094】
また、警告発生回路214は、アドレス変換テーブル201のテーブルフラグ210を監視してアドレス変換テーブル201のFFをカウントしてカウント値(空き領域)が所定以下になるとCPU200に対して割込信号2を出力する。CPU200は、警告発生回路214から割込信号2を受けるとそれ以降アドレス変換テーブル201にアドレスの書き換えを行わないように動作する。
【0095】
例えば、LAN1からの受信データを書き込んでいるときに、他のLAN2からの受信データの書き込みが発生したら、実メモリアドレスは空き領域があるがアドレス変換テーブル201が一杯になる状態が発生する可能性が有る。本実施の形態によれば、アドレス変換テーブル201に空き領域がなくなった時点で、CPU200に対して割込信号2を発することで、それ以降アドレス変換テーブル201にアドレス書換えを行なわないので、既にアドレス変換テーブル201内に格納されているデータが上書きされるのを防止できる。
【0096】
また、本実施の形態は、セレクタ211の出力が実メモリアドレスのいずれのアドレスも選択していない場合、警報発生回路214がCPU200に対して割込信号3を発するように構成した。CPU200は、割込信号3を受信した時はデータの書込処理又は読出処理を停止させる。
【0097】
これによると、セレクタ211の出力が実メモリアドレスのいずれのアドレスも選択していない場合、CPU200に対して割込信号3を発することにより、データの書込処理又は読出処理を停止するので、実際には実メモリアドレスのどこにもデータが書込まれていないにも関わらず書込処理が正常終了したものと誤判断して処理が進んだり、また、実際には実メモリアドレスのどこからもデータが読出されていないにも関わらず読出処理が正常終了したものと誤判断して処理が進むのを防止できる。
【0098】
特に、CPU200がライトアドレス/リードアドレスをソフト的に設定する場合、ソフトのバグにより本来指定すべきアドレスとは異なるアドレスを指定するということが起こり得る。この場合、本実施の形態によれば、CPU200に対して割込信号3を発することでデータの書込処理又は読出処理を停止するので、誤動作の処理が進行するのを防止できる。
【0099】
次に、コマンド解析回路203がCPU200の生成したコマンドを解析してアドレス変換テーブル201のテーブルデータを操作する動作について説明する。コマンド解析回路203は、図15に示すような32ビット空間のコマンドレジスタを構成する。本実施の形態ではコマンドの各フィールドの意味は次の様になっている。[31:24]の8ビットはコマンド種類を示すフィールドとなっている。コマンドには、テーブルデータの削除を指示するCLEAR、テーブルデータのコピーを意味するCOPY、テーブルデータの移動を意味するMOVE、テーブルデータ(例えば00)の書き込みを意味するALLOCATIONが有る。[23:16]の8ビットは、ページ数を入力するフィールドである。[15:8]の8ビットは、削除、移動、コピーの対象の削除又は移動・コピー元の先頭ページを示すフィールドである。[7:0]の8ビットは、移動・コピー先の先頭ページを示すフィールドである。
【0100】
以上のようなコマンドはCPU200が状況に応じて生成する。たとえば、アドレス変換テーブル201のテーブルデータを初期化してFFに変更する場合は、コマンド種別(CLEAR)、先頭ページ(テーブル番号)、ページ数を各フィールドに指定したコマンドを生成し、コマンド解析回路203へ与える。コマンド解析回路203は、CPU200から与えられたコマンドを解析し、解析結果に基づいて指示されている先頭ページから指示されたページ数だけテーブルデータを消去することによりFFにする。
【0101】
従来は、データを格納するのにメモリの格納領域を例えば4個使用する場合、CPU200はアドレス変換テーブル201に4回のアドレスを書込む必要がある。これによると、CPU200はアドレス変換テーブル201の書込み処理のためにその間占有されることになる。
【0102】
そこで、本実施の形態によると、CPU200において必要な実メモリアドレスの格納領域の大きさが分かると実メモリアドレスの格納領域を示すアドレスに基づいてコマンドを生成し、また、前記アドレス変換テーブル201にアドレスをコマンド解析回路203がコマンドを解析してアドレス変換テーブル201にアドレスを書込むことにより、CPU200は必要なメモリの格納領域の大きさに関わらず、コマンドを1回送出するだけで、アドレス変換テーブル201の複数の記憶領域内の書換えを行うことができるので、CPU200の負荷を軽減し、処理の高速化を図ることができる。
【0103】
次に、最小フラグ検出回路213、セレクタ211の自動モード動作を規制して、CPU200がアドレス変換テーブルのテーブルデータを書き換える手動モード(受信動作時)について説明する。
【0104】
共用バッファメモリ104にデータが格納されていない初期状態では、いずれかのネットワークインターフェース101、102、103から指定されるライトターゲットアドレス(00h〜ffhのいずれか)を実メモリアドレス(00h〜7fhのいずれか)に変換するテーブルデータをアドレス変換テーブル201に設定する。なお、アドレス変換テーブル201には初期値として実メモリアドレスのいずれも指定しない値FFを設定している。
【0105】
1パケット分の受信動作(格納)が終了すると、アドレス変換テーブル201にデータが格納された実メモリアドレス(上位アドレス)がテーブルデータとして残っている。CPU200は、アドレス変換テーブル201のテーブルデータから実メモリアドレスの空き領域を認識することができる。例えば、1回の受信動作が完了したらアドレス変換テーブル201のテーブルデータを読込んで実メモリアドレスの空き領域を把握する。
【0106】
次の受信動作を開始する場合、今回のライトターゲットアドレス(上位アドレス)がCPU200の把握している実メモリアドレスの空き領域に変換されるように、ライトターゲットアドレス(上位アドレス)に対応したテーブルのテーブルデータを書き換える。
【0107】
これにより、ネットワークインターフェースなどの書き込み側は常に同じ受信用アドレスを使用してアクセスしても、当該受信用アドレスがアドレス変換テーブル201により実メモリアドレスの空き領域を指示するアドレスに変換されて書き込まれるものとなる。
【0108】
また、本実施の形態は、手動モードにおいても、アドレス変換テーブル201には初期値としてFFを設定し、実メモリアドレスの格納領域がアドレスの小さい順に使用されるように前記アドレス変換テーブル201のテーブルデータを設定することも可能である。
【0109】
これにより、実メモリアドレスにおいて使用中の格納領域と未使用の格納領域がまとまっておらず未使用の格納領域が点在する場合でも、実メモリアドレスの未使用の格納領域をアドレスの小さい順番に選択するので、点在する未使用の格納領域を有効利用できるので、共用バッファメモリ104を無駄なく効率的に利用できる。また、実際のメモリは未使用の格納領域が点在していても、ネットワークインターフェース101、102、103側から見ると連続したアドレスにデータを格納しているように制御でき、共用バッファメモリ104を利用しやすくできる。
【0110】
なお、送信動作では手動モードしか使用されない。送信動作の場合は、受信動作の場合と異なり、共用バッファメモリ104の特定メモリアドレスの格納領域からデータを読み出す必要があるからである。手動モードでの送信動作は上記した通りである。すなわち、送信動作を開始する場合は、CPU200はパケットデータが格納された実メモリアドレスを把握していて、使用する送信用アドレスも把握しているので、送信用アドレス(上位アドレス)がパケットデータの格納された実メモリアドレスに変換するテーブルデータをアドレス変換テーブル201に設定する。この結果、例えばネットワークインターフェース102が割り付けられている送信用アドレスでアクセスしてきても、アドレス変換テーブル201によりパケットデータの格納された実メモリアドレスに変換されてデータが読み出されることとなる。
【0111】
【発明の効果】
以上詳記したように本発明によれば、バッファメモリの増大を抑制してコストダウン、装置の小型化を図ることができると共に、CPUによる受信用バッファメモリから送信用バッファメモリへのデータの移し変え作業を無くして処理の高速化を実現するデータ処理装置を提供できる。
【図面の簡単な説明】
【図1】本発明の一実施の形態に係るネットワーク機器の機能ブロック図
【図2】図1に示すネットワーク機器におけるメモリ制御回路の機能ブロック図
【図3】受信用アドレスと送信用アドレスの割付を示す図
【図4】ネットワークインターフェースからメモリアクセスする際のページ毎のアドレス対応例を示す図
【図5】アドレス変換テーブルのページ分割領域から実メモリアドレスのページ分割領域への変換例を示す図
【図6】受信用アドレスとして00hが指定されたときのアドレス変換例を示す図
【図7】受信用アドレスとして01hが指定されたときのアドレス変換例を示す図
【図8】受信用アドレスとして02hが指定されたときのアドレス変換例を示す図
【図9】受信用アドレスとして03hが指定されたときのアドレス変換例を示す図
【図10】送信用アドレスとして08hが指定されたときのアドレス変換例を示す図
【図11】送信用アドレスとして09hが指定されたときのアドレス変換例を示す図
【図12】送信用アドレスとして0ahが指定されたときのアドレス変換例を示す図
【図13】送信用アドレスとして0bhが指定されたときのアドレス変換例を示す図
【図14】アドレス変換テーブル、共用バッファメモリ及び周辺回路による自動モードの動作説明図
【図15】コマンドレジスタの構成図
【図16】従来のネットワーク機器の機能ブロック図
【符号の説明】
1 物理層インターフェース
100 LSI内部ブロック
101、102、103 ネットワークインターフェース
104 共用バッファメモリ
105 メモリ制御回路
106 内部バス
107 暗号回路
200 CPU
201 アドレス変換テーブル
202、211 セレクタ
203 コマンド解析回路
210 テーブルフラグ
212 使用状況フラグ
213 最小フラグ検出回路
214 警告発生回路
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data processing device such as a router, a LAN switch, or a data terminal device connected to a LAN, and more particularly to memory control related to data writing / reading when data received from a LAN is buffered and transmitted to another device. The present invention relates to a data processing apparatus involving
[0002]
[Prior art]
A conventional network device accumulates IP packets received from a LAN such as Ethernet (R) in a buffer memory, and after the CPU reads and confirms the destination, it writes it again in the buffer memory and transmits it to the destination.
[0003]
FIG. 16 shows a schematic configuration of a conventional network device. The network device is connected to the LAN through a physical layer interface (PHY) 1 such as a connector, and buffering when receiving or transmitting an IP packet flowing on the LAN is performed by the LSI internal block 2. The CPU 3 controls reception / transmission of IP packets in the LSI internal block 2. The network device shown in FIG. 16 is configured to be connectable to three networks, LAN1 to LAN3, and is physically connected by connectors 1a, 1b, and 1c. In the LSI internal block 2, network interfaces 4, 5, and 6 are installed for the connectors 1a, 1b, and 1c (LAN1 to LAN3). Buffer memories 7, 8, and 9 are individually provided for the network interfaces 4, 5, and 6. The buffer memories 7, 8, and 9 are each composed of a reception buffer memory and a transmission buffer memory.
[0004]
For example, when packet data received from the LAN 1 is sent to the LAN 2, the packet data received from the LAN 1 is stored in the reception buffer memory of the buffer memory 7, and then read out from the reception buffer memory by the CPU 3 to be buffered in the LAN 2. 8 is sent to the LAN 2 by writing to the transmission buffer memory.
[0005]
In addition, there is a technique for securing a packet area for reception by providing a plurality of reception packet buffers for managing packet areas on a plurality of main memories having different lengths, reducing overhead on software (for example, Patent Document 1).
[0006]
[Patent Document 1]
JP 2002-244517 A (FIG. 2)
[0007]
[Problems to be solved by the invention]
However, in the above-described conventional technology, the dedicated reception buffer memory and the transmission buffer memory are provided corresponding to each LAN 1-3 connected to the network device, so that the CPU 3 receives the packet from the reception buffer memory. There has been a problem that it takes time to transfer data such as reading data and writing it again to the buffer memory for transmission.
[0008]
In addition, a dedicated reception buffer memory and transmission buffer memory are provided corresponding to each LAN 1-3 connected to the network device. However, as a product, only one channel may be used. In this case, there is a problem that the buffer memory for two channels is wasted.
[0009]
Furthermore, if the number of LANs connected to network equipment increases, the buffer memory must be increased accordingly. If the CPU processing speed is not sufficient, the reception buffer memory must be increased. However, the buffer memory tends to increase.
[0010]
Japanese Patent Application Laid-Open No. 2002-244517 has one input communication means and one output communication means, and does not have a plurality of communication means both for input and output. For this reason, it has not been possible to cope with the above problem in the case where a plurality of communication means serving both for input and output are provided.
[0011]
The present invention has been made in view of the above circumstances, and can suppress the increase of the buffer memory, reduce the cost, reduce the size of the apparatus, and perform transmission from the reception buffer memory by the CPU. An object of the present invention is to provide a data processing apparatus that eliminates the work of transferring data to a buffer memory and realizes high-speed processing.
[0012]
[Means for Solving the Problems]
  The present inventionA plurality of network interface means for interfacing with a LAN; a shared buffer memory accessed by the plurality of network interface means for storing data and reading the stored data; and for accessing the shared buffer memory A virtual memory address is converted into an actual real memory address of the shared buffer memory, and an address range of a virtual memory address used for each network interface unit is divided, and the divided address range is used for reception. An address conversion table in which virtual memory addresses are set separately for transmission and a virtual memory address is input from the network interface means to access the shared buffer memory Using said address conversion table converts the virtual memory addresses into real memory addresses, and a control means for accessing the shared buffer memory of the translated real memory address.
[0013]
  The present invention also providesNetwork interfaceSpecified by meansVirtual memoryRead data from address by address conversion tableReal memory addressConverted toNetwork interfaceRegardless of the address specified by the means, the control meansShared bufferIt is configured to be able to arbitrarily set which storage area of memory to read,Shared bufferThe data can be read without performing the process of changing the data in the memory.
[0014]
DETAILED DESCRIPTION OF THE INVENTION
  The first aspect of the present invention is:A plurality of network interface means for interfacing with a LAN; a shared buffer memory accessed by the plurality of network interface means for storing data and reading the stored data; and for accessing the shared buffer memory A virtual memory address is converted into an actual real memory address of the shared buffer memory, and an address range of a virtual memory address used for each network interface unit is divided, and the divided address range is used for reception. An address conversion table in which virtual memory addresses are set separately for transmission and a virtual memory address is input from the network interface means to access the shared buffer memory Using said address conversion table converts the virtual memory addresses into real memory addresses, and intended to comprise a control means for accessing the shared buffer memory of the translated real memory address.
[0015]
  According to the data processing apparatus configured as described above,Network interfaceSpecified by meansVirtual memoryRegardless of the address, the data is actually sent by the control means.Shared bufferWhich memoryAccess areaCan be set arbitrarily,Network interfaceSame from meansVirtual memoryEven if an address is specifiedShared bufferThere is no need to transfer data in memory,Shared bufferMemory can be used effectively and processing can be performed at high speed.
[0017]
  Also memoryWhen writing toNetwork interfaceMeans usedVirtual memoryDifferent from addressVirtual memoryUsing addressNetwork interfaceThe means can specify the read address, and can read the data from the same address without performing the process of moving the data in the memory,Shared bufferMemory can be used effectively and processing can be performed at high speed.
[0020]
  Of the present inventionSecond aspectIsWhen the real memory address corresponding to the virtual memory address is not set in the address conversion table, the control means accesses the minimum address that is an empty area in the real memory address of the shared buffer memory.
[0021]
  According to the data processing apparatus configured as described above,Network interfaceSpecified by meansVirtual memoryRegardless of the address, the data is actually sent by the control means.Shared bufferWhich memoryAccess areaCan be set arbitrarily,Network interfaceSame from meansVirtual memoryEven if an address is specifiedShared bufferThere is no need to transfer data in memory,Shared bufferMemory can be used effectively and processing can be performed at high speed.
[0022]
  Also,Network interfaceSpecified by meansVirtual memoryAddress to actually store the dataShared bufferMemoryReal memoryWhen converting to an address, it is possible to cope with both software and hardware according to the use environment, so that address conversion with high utilization can be realized.
[0023]
  Of the present inventionThird aspectIsFirst aspectIn the data processing apparatus ofShared bufferIn the memory, the data storage area is divided into units smaller than the maximum data amount transferred by packet communication.
[0024]
When the data storage area is configured with a capacity that can accommodate the maximum data amount transferred by packet communication as in the conventional case, when storing data with a data amount smaller than the maximum data amount actually transferred by packet communication, the storage area Unnecessary empty space was generated in the memory, and the memory utilization efficiency was poor.
[0025]
Therefore, according to the present invention, by dividing the data storage area into units smaller than the maximum amount of data transferred by packet communication, there is wasted space when storing data actually transferred by packet communication. It is hard to occur and the memory can be used effectively.
[0026]
  According to a fourth aspect of the present invention, in the data processing device according to the first aspect, the control unit sets a value outside the range of the real memory address of the shared buffer memory as an initial value in the address conversion table, and The address conversion table is rewritten when data is stored in the buffer memory.
  According to this, regardless of the virtual memory address designated by the network interface means, it is possible to arbitrarily set which area of the shared buffer memory the data is actually accessed by the control means. In addition, by setting a value that does not specify any of the memory storage areas as an initial value in the storage area of the address conversion table, the storage area that stores a value that does not specify any of the address conversion table is counted. For example, since most of the storage area of the memory is used and the memory is almost full, it can be easily determined that the unused area of the memory is small.
  Of the present inventionFifth aspectIsFourth aspectIn the data processing apparatus, the control means includes:When the actual memory address converted by the address conversion table is the initial value,Shared bufferMemoryFrom the smallest address that is free in the real memory addressTo be used in orderThe initial value of the address conversion table is rewritten.
[0027]
  According to this, the control means isShared bufferBy setting the value in the storage area of the address conversion table so that the storage area of the memory is used in ascending order of addresses,Shared bufferEven if the storage area in use and the unused storage area are not gathered in the memory and there are scattered unused storage areas,Shared bufferSince unused storage areas in memory are selected in ascending order of addresses,Shared bufferEven if the memory is dotted with unused storage areas, it can be controlled to store data at consecutive addresses when viewed from the processing means side,Shared bufferYou can use memory easily. Also, since unused storage areas that are scattered can be used effectively,Shared bufferMemory can be used efficiently without waste.
[0029]
  Of the present inventionSixth aspectIsFourth or fifth aspectIn the data processing apparatus ofThe control means includes the shared buffermemoryofFree spaceIs below the specified amountIfThe address conversion table is not rewritten.
[0030]
  According to this, saidShared bufferWhen there is no more free space in memory,ThatThereafter, the control means does not rewrite the address in the address conversion table.Shared bufferThe data stored in the memory can be prevented from being overwritten.
[0031]
  Of the present inventionSeventh aspectIsAny of the fourth to sixth aspectsIn the data processing apparatus ofThe control means includesIn the address conversion tableUnused areaIf you run out ofThe address conversion table is not rewritten.
[0032]
  According to this, when there is no more free space in the address translation table,ThatThereafter, the control means does not rewrite the address in the address conversion table, so that data already stored in the address conversion table can be prevented from being overwritten.
[0033]
  Of the present inventionEighth aspectIsFirst or second aspectIn the data processing apparatus ofThe control means uses the address converted by the address conversion table.SaidShared bufferAny of the memoryReal memoryaddressnotIfStop storing and reading data at the real memory address after the conversionIs.
[0034]
  according to this,The address converted by the address conversion table isSaidShared bufferAny of the memoryReal memoryaddressnotCase,dataWill actually stop writing or readingShared bufferEven if no data has been written anywhere in the memory, the process is misjudged as having been completed normally, and the process proceeds.Shared bufferIt is possible to prevent the reading process from being erroneously determined as having been normally completed although no data is read from anywhere in the memory, and the process from proceeding.
[0035]
  In particular,It is possible to specify an address different from the address that should be originally specified due to a software bug. In this case, according to the present invention,,dataSince the writing process or reading process is stopped, it is possible to prevent the malfunction process from proceeding.
[0036]
  Of the present inventionNinth aspectIs1st or 4th aspectIn the data processing apparatus, the control means includes:Separately providing a dedicated hardware circuit for writing the real memory address of the shared buffer memory to the address conversion table,SaidShared bufferWhich memoryReal memoryWhether to store data at the address should be storedReal memoryA command is generated based on the address, and the dedicated hardware circuit analyzes the command to generate the address conversion table.Real memoryThe address is to be written.
[0037]
As in the prior art, when using, for example, four memory storage areas for storing data, the control means needs to write four addresses in the address conversion table. According to this, the control means is occupied during the writing process of the address conversion table.
[0038]
Therefore, according to the present invention, when the size of the memory storage area required by the control means is known, a command is generated based on the address indicating the memory storage area, and the address is written to the address conversion table. A hardware circuit is provided, and this dedicated hardware circuit analyzes the command and writes the address in the address conversion table, so that the control means sends the command once regardless of the size of the required storage area of the memory. Thus, the address conversion table can be rewritten in a plurality of storage areas, so that the load on the control means can be reduced and the processing speed can be increased.
[0039]
  Of the present inventionTenth aspectIsFirst aspectIn the data processing apparatus ofThe control means is read from the buffer memory and transmitted to the LAN via the network interface means.Send data andThe network interface means receives from the LAN and stores it in the buffer memoryReceive data is the same using the same busShared bufferStore or read from memory, andShared buffermemoryVirtual memory to accessDividing addresses for transmission data and reception datamanagementTo do.
[0040]
  According to this, transmission data and reception data are the same using the same bus.Shared bufferBy storing or reading from the memory, reading of the transmission data and storing of the reception data are not performed at the same time.Shared bufferA dedicated address for transmission data for all addresses in the memory is assigned, and for received dataShared bufferIf addresses dedicated to received data for all addresses in the memory are assigned, it can be managed so that there is a capacity that is double the actual memory capacity, and transmission data and received data do not need to be overwritten. Memory capacity can be reduced to less than half. as a result,Network interfaceSince it is possible to pretend that there is a memory capacity more than twice the real memory in advance,Network interfaceMeans sideActuallyCommunication exceeding the capacity of the memory can be performed without hindrance.
[0041]
  Also, the same data is used for transmission data and reception data using the same bus.Shared bufferEven when storing or reading from memory,Network interfaceMeansShared bufferBy holding the address indicating the storage area of the memory separately for transmission data and reception data, even if other data is received during transmission of certain data, data does not collide on the bus, Stable data communication can be ensured.
[0045]
Hereinafter, an embodiment of a network device to which a data processing apparatus according to the present invention is applied will be described in detail with reference to the drawings.
[0046]
FIG. 1 is a functional block diagram of a network device according to the present embodiment. In the present embodiment, a physical layer interface (PHY) 1 for connecting to three LANs 1, 2, 3 (for example, Ethernet (R)) is provided. The physical layer interface (PHY) 1 includes connectors 1a, 1b, and 1c having shapes conforming to the standards of LANs 1, 2, and 3. The LSI internal block 100 is provided with network interfaces 101, 102, 103 corresponding to the connectors 1a, 1b, 1c. The network interfaces 101, 102, and 103 operate based on the specifications (protocols and the like) of the LANs 1, 2, and 3 and serve to interface with the LANs 1, 2, and 3. The network interfaces 101, 102, and 103 perform a memory access operation using the reception address during reception, and perform a memory access operation using the transmission address during transmission operation. One shared buffer memory 104 is provided for these network interfaces 101, 102, and 103. The shared buffer memory 104 can be constituted by a RAM, for example. A memory control circuit 105 is provided to control writing / reading to / from the shared buffer memory 104. The network interfaces 101, 102, 103 and the shared buffer memory 104 are connected by a single internal bus 106. The encryption circuit 107 is a part that decrypts data encrypted according to IPv6 or encrypts transmission data. The encryption circuit 107 performs memory access using the reception address of the encryption module, and performs memory access using the transmission address of the encryption module.
[0047]
In this embodiment, one shared buffer memory 104 is used as a transmission buffer memory and a reception buffer memory by the plurality of network interfaces 101, 102, 103, the encryption circuit 107, and the CPU 200. The memory control circuit 105 performs address conversion described later.
[0048]
FIG. 2 is a block diagram showing functions related to address conversion of the memory control circuit 105. The memory control circuit 105 includes an address conversion table 201, a selector 202, and a command analysis circuit 203.
[0049]
The address conversion table 201 has a 256-stage configuration from Table-0 to Table-255, and a memory address space (hereinafter referred to as a virtual memory address) used by the network interfaces 101 to 103 and the like to access the shared buffer memory 104. Table data for converting a space) into an actual address space of the shared buffer memory 104 (hereinafter referred to as a real memory address space) is stored. In each table of 256 stages constituting the address conversion table 201, the upper 8 bits of the virtual memory address space are fixedly allocated in advance.
[0050]
The selector 202 receives the upper 8 bits of the virtual memory address accessed by the network interfaces 101 to 103, etc., selects one table according to the input address, and sends the table data of the selected table to the shared buffer memory 104. Output as upper 8 bits of real memory address space. Note that the lower 8 bits of the access address of the network interfaces 101 to 103 are output as the lower 8 bits of the actual memory address without being converted as they are.
[0051]
The command analysis circuit 203 analyzes a command given from the CPU 200 via a control line, and executes a process of clearing, copying, moving or resetting the table data of the address conversion table 201 according to the instruction content indicated in the analysis result To do. Further, the command analysis circuit 203 resets the usage status flag of the shared buffer memory 104 according to the instruction content indicated in the analysis result.
[0052]
Here, a virtual memory address used when the network interfaces 101 to 103 and the like access the shared buffer memory 104 will be described.
[0053]
As shown in FIG. 3, each of the network interfaces 101 to 103 can use a 2 Kbyte reception address and a transmission address. Also, the encryption circuit 107 can use the transmission address of the encryption module and the reception address of the encryption module each having 2 Kbytes in correspondence with encryption complying with IPv6. Further, the CPU 200 can use the entire virtual memory address space (0000h to ffffh) to directly access the shared buffer memory 104.
[0054]
As described above, the plurality of network interfaces 101 to 103, the encryption circuit 107, and the CPU 200 write / read the transmission data and the reception data to / from the same shared buffer memory 104 using the same bus, and the shared buffer memory The address for accessing 104 is divided into a transmission address and a reception address. As a result, transmission data and reception data are stored in or read from the same memory using the same bus, so that transmission data reading and reception data storage are not performed at the same time. If an address dedicated to transmission data that covers all addresses of the real memory address is given as a space, and an address dedicated to reception data that covers all addresses of the real memory address is given as an address space for reception, apparently Management can be performed so that there is twice the actual memory capacity, and the required memory capacity can be reduced to half or less without the transmission data and the reception data being overwritten with each other. As a result, the network interface on the writing / reading side can be preliminarily equipped with a memory capacity more than double that of the real memory, so communication over the capacity of the real memory can be performed without any trouble. Can be made.
[0055]
Even when transmission data and reception data are stored in or read from the same memory using the same bus, each network interface or the like uses the address indicating the storage area of the memory for transmission data and reception data. By holding the data separately for each purpose, even if other data is received during transmission of certain data, data does not collide on the bus, so that stable data communication can be ensured.
[0056]
In addition, as described above, the reception address space and the transmission address space are set to 2 K bytes, respectively, because the maximum capacity of one packet is defined as 1.5 K bytes in the standard regarding Ethernet (R). When applied to other types of networks, the maximum capacity of transmission units (packets, etc.) defined in the standard of the network is used.
[0057]
As described above, each of the network interfaces 101 to 103 has a 2 Kbyte reception address space and a transmission address space. However, each 2 Kbyte reception address space and transmission address space further includes 256 bytes. The page is divided in units.
[0058]
FIG. 4 shows the address assignment when the reception address space and the transmission address space are page-divided in units of 256 bytes for the network interface 101. In the figure, the write target address is a reception address, and the read target address is a transmission address. For example, when the network interface 101 receives 500 bytes of data, it accesses 0000h to 01eh as the write target address. When the upper bit is 00, table-0 is selected and the upper address written in table-0 is output. When the upper bit is 01, table-1 is selected and the upper address written in table-1 is output.
[0059]
On the other hand, in the shared buffer memory 104, the data storage area is divided in units of 256 bytes. That is, the minimum unit of the storage area is set to 256 bytes. As described above, in the virtual memory address space and the real memory address space, the data storage area is divided into 256-byte divided areas, and both divided areas (pages) are associated by the address conversion table 201.
[0060]
FIG. 5 is a diagram showing a correspondence relationship between the divided areas (pages) of the virtual memory address space used by the network interfaces 101 to 103 and the like for memory access and the divided areas of the real memory address space of the shared buffer memory 104. is there. In the present embodiment, since the RAM is assumed for the shared buffer memory 104, characters such as virtual RAM and RAM are used instead of virtual memory in FIG.
[0061]
As described above, since the virtual memory address space and the real memory address space are divided into 256-byte divided areas, the shared buffer memory 104 can be effectively used. When the data storage area is configured with a capacity (for example, 1.5 Kbytes) that can accommodate the maximum data amount transferred by packet communication, when storing data having a data amount smaller than the maximum data amount actually transferred by packet communication In this case, useless empty space is generated in the storage area, and the use efficiency of the memory is deteriorated. The present invention divides the divided area into units (for example, 256 bytes) smaller than the maximum amount of data transferred by packet communication, so that there is no wasteful space when storing data actually transferred by packet communication. It is unlikely to occur and the memory can be used effectively. If the divided area is divided into smaller sizes, the memory usage efficiency can be further improved. However, since the number of pages becomes too large and management becomes complicated, it is possible to select an appropriate size according to the purpose of use. desirable.
[0062]
Next, a specific memory control operation of the network device according to the present embodiment configured as described above will be described.
[0063]
First, a reception operation for writing received packet data to the shared buffer memory 104 will be described with reference to FIGS. As an example, an operation when the network interface 101 receives an IP packet having a data size between 768 bytes and 1024 bytes from the LAN 1 will be described.
[0064]
When the network interface 101 receives packet data from the LAN 1, the network interface 101 accesses the memory by specifying a reception address to the memory control circuit 105. At this time, the reception address accessed by the network interface 101 starts from the write target address 0000h as shown in FIG. Then, the write target address is sequentially incremented from 0000h until all the received packet data is written. The packet data is transferred to the shared buffer memory 104 in synchronization with the write target address increment operation.
[0065]
Each table of the address conversion table 201 is controlled so that the upper address of the empty divided area of the shared buffer memory 104 is set when the upper bit of the write target address is selected. Table data write control for the address conversion table 201 is performed by an automatic mode in which the memory control circuit 105 searches for a free divided area and automatically sets the corresponding table, and the CPU 200 manages the free divided area via the command analysis circuit 203. There is a manual mode in which table data is set in the corresponding table.
[0066]
FIG. 6 shows a process of incrementing the write target address shown in FIG. 4 from 0000h to 00ffh. During this time, the write target address [00 **], which is a virtual memory address, indicates 00, so the selector 202 selects the table-0 to which 00 is assigned. In the example shown in FIG. 6, since 02 is set as table data in the table-0, 02 is output as the converted higher address. As a result, the write target address that is the actual memory address is converted to [02 **]. Thereby, the first 256 bytes of the packet data are stored in the real memory addresses 0200h to 02ffh.
[0067]
FIG. 7 shows a process in which writing of 0000h to 00ffh as the write target address is completed and the write target address is continuously incremented within the range of 0100h to 01ffh. During this time, the write target address [01 **], which is a virtual memory address, indicates 01 in the upper bit, so that the selector 202 selects the table-1 to which 01 is assigned. In the example shown in FIG. 7, since 03 is set as table data in Table-1, 03 is output as the converted higher address. As a result, the write target address, which is a real memory address, is converted to [03 **]. As a result, the next 256 bytes of the packet data are stored in 0300h to 03ffh of the real memory addresses.
[0068]
FIG. 8 shows a process in which writing of 0100h to 01ffh as the write target address is completed and the write target address is continuously incremented within the range of 0200h to 02ffh. During this period, the write target address [02 **], which is a virtual memory address, indicates 02 as the upper bit, so the selector 202 selects Table-2 to which 02 is assigned. In the example shown in FIG. 8, since 7e is set as the table data in Table-2, 7e is output as the converted higher address. As a result, the write target address that is the actual memory address is converted to [7e **]. As a result, the next 256 bytes of the packet data are stored in real memory addresses 7e00h to 7effh.
[0069]
FIG. 9 shows a process in which writing of 0200h to 02ffh is completed as the write target address and the write target address is continuously incremented within the range of 0300h to 03ffh. During this time, the write target address [03 **], which is a virtual memory address, indicates that the upper bit is 03, so the selector 202 selects Table-3 to which 03 is assigned. In the example shown in FIG. 9, since 7f is set as the table data in Table-3, 7f is output as the converted higher address. As a result, the write target address in the real memory address space is converted to [7f **]. As a result, the next 256 bytes of the packet data are stored in real memory addresses 7f00h to 7f ** h. ** is the last lower address.
[0070]
As described above, according to the present embodiment, although the addresses output from the network interface 101 as the write target addresses are continuous addresses, the continuous write target addresses can be converted into random real memory addresses by the address conversion table 201. Even if there is a discontinuous empty area in the shared buffer memory 104 accessed by the real memory address, the packet data is stored in the discontinuous empty area by controlling the table data of the address conversion table 201. can do. In the configuration in which the buffer memory of a plurality of network interfaces is shared and the reception buffer memory and the transmission buffer memory are shared as in the present embodiment, it is possible to use a free area even if it is discontinuous. This is very effective from the viewpoint of preventing memory overflow.
[0071]
In addition, the address specified by the network interface 101 in the address conversion table 201 is converted into a real memory address (higher address) that actually stores data, and the data is actually stored in the real memory regardless of the address specified by the network interface 101. Since it is possible to arbitrarily set which address of the address is stored, even when the same address is designated from the network interface 101, it is not necessary to perform processing for transferring data in the shared buffer memory, and the memory can be used effectively. At the same time, the processing speed can be increased.
[0072]
Next, a transmission operation for reading packet data from the shared buffer memory 104 will be described with reference to FIGS. A case where the network interface 101 sends out the data written in the shared buffer memory 104 in the above receiving operation (FIGS. 6 to 9) from the LAN 1 will be described.
[0073]
As described above, the real memory addresses of the shared buffer memory 104 store data in the order of 0200h-02ffh, 0300h-03ffh, 7e00h-7effh, 7f00h-7f ** h. On the other hand, the network interface 101 uses the transmission address space 0800h to 0bffh shown in FIG. 4 as the read target address. The network interface 101 outputs the read target address sequentially incremented from 0800h, which is the start address of the transmission address space.
[0074]
On the other hand, the CPU 200 knows the real memory address that is the storage address of the packet data to be read this time. As shown in FIG. 9, the upper addresses of the real memory addresses where data is stored are 02, 03, 7e, and 7f. The transmission address (virtual memory address) of the network interface 101 is also fixed. As for the transmission address of the network interface 101, the upper address changes to 08, 09, 0a, and 0b. Therefore, the CPU 200 adds the upper addresses 02, 03, 7e, and the higher addresses 02, 03, 7e, 7f are respectively set as table data.
[0075]
FIG. 10 shows a process of incrementing the read target address shown in FIG. 4 within the range of 0800h to 08ffh. During this time, the read target address [08 **], which is a virtual memory address, has an upper bit of 08, so the selector 202 selects the table-8 to which 08 is allocated. At this time, since 02 is set in Table-8, 02 is output as the converted higher address. As a result, the read target address in the real memory address space is converted to [02 **]. As a result, the first 256 bytes of the packet data are read from the actual memory addresses 0200h to 02ffh.
[0076]
FIG. 11 shows a process of incrementing the read target address shown in FIG. 4 within the range of 0900h to 09ffh. During this time, the read target address [09 **], which is a virtual memory address, has a high-order bit of 09, so the selector 202 selects Table-9 to which 09 is assigned. At this time, since 03 is set in Table-9, 03 is output as the converted higher address. As a result, the read target address in the real memory address space is converted to [03 **]. As a result, the first 256 bytes of the packet data are read from the actual memory addresses 0300h to 03ffh.
[0077]
FIG. 12 shows a process of incrementing the read target address shown in FIG. 4 within the range of 0a00h to 0affh. During this time, the read target address [0a **], which is a virtual memory address, indicates that the upper bit indicates 0a, so that the selector 202 selects the table-10 to which 7e is allocated. At this time, since 7e is set in the table-10, 7e is output as the converted higher address. As a result, the read target address in the real memory address space is converted to [7e **]. As a result, the first 256 bytes of the packet data are read from the real memory addresses 7e00h to 7effh.
[0078]
FIG. 13 shows a process of incrementing the read target address shown in FIG. 4 within the range of 0b00h to 0bffh. During this time, the read target address [0b **], which is a virtual memory address, indicates that the upper bit is 0b, so that the selector 202 selects the table-11 to which 7f is allocated. At this time, since 7f is set in the table-11, 7f is output as an upper address after conversion. As a result, the read target address in the real memory address space is converted to [7f **]. As a result, the first 256 bytes of the packet data are read from the real memory addresses 7f00h to 7f ** h.
[0079]
As described above, since the transmission address (virtual memory address) of the network interface 101 is converted into the real memory address where the data is actually stored in the address conversion table 201, the process of transferring the data in the memory is performed. Since there is no need to perform the process and the CPU 200 does not need to read the received data for transmission, the processing speed can be increased.
[0080]
In the above description, the case where the packet data is received by the network interface 101 and the packet data is transmitted by the same network interface 101 has been described. However, writing / reading to / from the shared buffer memory 104 can be executed between the other network interfaces 102 and 103 using the transmission address and the reception address assigned to each other as shown in FIG. Also, when the encryption circuit 107 encrypts or decrypts the data, the encryption circuit 107 accesses the memory using the transmission address and reception address of the encryption module, and the CPU 200 does not transfer the data. Write / read to / from the shared buffer memory 104 can be executed.
[0081]
Next, an automatic mode for automatically setting the table data of the address conversion table 201 will be described. I don't know when the data is received from LAN 1, 2, 3 at any timing. Therefore, by always allowing reception in the automatic mode, it is possible to prepare for reception that does not know when it is received or how large.
[0082]
FIG. 14 is a diagram showing a part relating to the automatic mode extracted from the memory control circuit 105 and the shared buffer memory 104. A table flag 210 indicating whether or not table data is set in each table of the address conversion table 201 composed of 256 tables is prepared in hardware. The table flag 210 is set to 1 when significant table data is set in the corresponding table. Further, when the table data is not set in the table and the value FF indicating that no address is specified is entered, the table is updated so that 0 is set.
[0083]
The output signal of the selector 202 is input to one input terminal of the selector 211 serving as the third selection unit. The other input terminal of the selector 211 receives an output signal from a minimum flag detection circuit 213 serving as second selection means described later. The selector 211 selects and outputs an output signal from the minimum flag detection circuit 213 when FF is input from the selector 202 in the previous stage. The output signal of the selector 211 is configured to indicate the upper bit of the actual memory address.
[0084]
A usage status flag 212 that always reflects the usage status of the real memory address of the shared buffer memory 104 is provided in hardware. The usage status flag 212 is set to 0 as an initial value, but is updated so that 1 is set when data is written to the corresponding real memory address. In this example, since the storage area is used in the divided area unit (256 bytes) specified by the upper address, only the upper address of the real memory address is monitored, but more detailed usage status may be monitored. Monitor to lower addresses.
[0085]
The minimum flag detection circuit 213 scans the usage status flag 212 from the head address side, and outputs an upper address that is initially set to 0 as an output value. In other words, the smallest unused address in the real memory address space is always used as the output value.
[0086]
A specific operation in the automatic mode will be described with reference to FIG. In the state shown in FIG. 14, table data has already been set in the tables-0, 1, and 4 of the address conversion table 201, and as a result, data is stored in 00h, 02h, and 03h of real memory addresses (upper addresses). State.
[0087]
In such a situation, the minimum flag detection circuit 213 outputs the real memory address 01h as the minimum address of the free area. Then, 05h is given to the selector 202 as an upper address of the write address. The selector 202 selects the table-5 based on the upper address 05h, but outputs FF to the subsequent selector 211 as a value in the table-5.
[0088]
Since the selector 211 selects the minimum address input from the minimum flag detection circuit 213 when FF is input from the address conversion table 201, the minimum address is selected as the actual memory address. That is, when the real memory address is not designated by the address conversion table 201, the data is stored at the minimum address that is an empty area in the real memory.
[0089]
As a result, even if the storage area in use and the unused storage area are not gathered in the real memory address and the unused storage areas are scattered, the unused storage areas in the real memory address are arranged in ascending order of the addresses. Since the selected storage areas are effectively used, the shared buffer memory 104 can be used efficiently without waste. In addition, even if the actual memory is dotted with unused storage areas, it can be controlled so that data is stored at consecutive addresses when viewed from the network interface 101, 102, 103 side. Easy to use.
[0090]
In the present embodiment, a value FF that does not designate any storage area of the memory is set as an initial value in each table of the address conversion table 201. When any one of the address conversion tables 201 is designated from the selector 202, the minimum flag detection circuit 213 and the selector 211 are operated so that they are used in ascending order of the real memory addresses.
[0091]
As a result, unless a plurality of network interfaces 101, 102, 103, etc. simultaneously execute transmission / reception operations on the shared buffer memory 104, data for one packet can always be stored together, and an area in which one packet data is stored can be stored. Since the packet data is stored in order from the top address, the CPU 200 can always confirm the data by checking the received data from the top address of the storage area, thereby simplifying and speeding up the processing. it can.
[0092]
On the other hand, the warning generation circuit 214 monitors the output value of the minimum flag detection circuit 213 and outputs an interrupt signal 1 to the CPU 200 when the free area of the shared buffer memory 104 becomes a predetermined amount or less. When receiving the interrupt signal 1 from the warning generation circuit 214, the CPU 200 operates so as not to rewrite the address (table data) in the address conversion table 201 thereafter.
[0093]
As a result, when there is no more free space in the shared buffer memory 104, the CPU 200 does not rewrite the address in the address conversion table 201 by issuing an interrupt signal 1 to the CPU 200, so that it is already stored in the shared buffer memory 104. It is possible to prevent overwritten data being overwritten.
[0094]
Further, the warning generation circuit 214 monitors the table flag 210 of the address conversion table 201, counts the FFs of the address conversion table 201, and outputs an interrupt signal 2 to the CPU 200 when the count value (free area) becomes a predetermined value or less. Output. When receiving the interrupt signal 2 from the warning generation circuit 214, the CPU 200 operates so as not to rewrite the address in the address conversion table 201 thereafter.
[0095]
For example, when receiving data from another LAN 2 is written while data received from the LAN 1 is being written, there is a possibility that a real memory address has a free area but the address conversion table 201 becomes full. There is. According to the present embodiment, when there is no more free area in the address conversion table 201, by issuing an interrupt signal 2 to the CPU 200, the address conversion table 201 is not rewritten thereafter. Data stored in the conversion table 201 can be prevented from being overwritten.
[0096]
In the present embodiment, the alarm generation circuit 214 issues an interrupt signal 3 to the CPU 200 when the output of the selector 211 has not selected any address of the real memory address. When the CPU 200 receives the interrupt signal 3, the CPU 200 stops the data writing or reading process.
[0097]
According to this, when none of the real memory addresses is selected as the output of the selector 211, the data write process or read process is stopped by issuing the interrupt signal 3 to the CPU 200. In some cases, the process proceeds with a misjudgment that the writing process has been completed normally even though no data has been written anywhere in the real memory address. It is possible to prevent the reading process from being erroneously determined to have ended normally even though it has not been read and proceeding.
[0098]
In particular, when the CPU 200 sets the write address / read address in software, it may happen that an address different from the address that should be originally specified is specified due to a software bug. In this case, according to the present embodiment, the data write process or read process is stopped by issuing the interrupt signal 3 to the CPU 200, so that it is possible to prevent the malfunction process from proceeding.
[0099]
Next, an operation in which the command analysis circuit 203 analyzes the command generated by the CPU 200 and operates the table data of the address conversion table 201 will be described. The command analysis circuit 203 constitutes a 32-bit space command register as shown in FIG. In this embodiment, the meaning of each field of the command is as follows. 8 bits of [31:24] is a field indicating a command type. The commands include CLEAR for instructing deletion of table data, COPY for copying table data, MOVE for moving table data, and ALLOCATION for writing table data (for example, 00). 8 bits of [23:16] is a field for inputting the number of pages. 8 bits of [15: 8] is a field indicating the first page of the deletion, movement, or copy target deletion or movement / copy source. 8 bits of [7: 0] is a field indicating the first page of the move / copy destination.
[0100]
The commands as described above are generated by the CPU 200 according to the situation. For example, when the table data of the address conversion table 201 is initialized and changed to FF, a command specifying the command type (CLEAR), the first page (table number), and the number of pages in each field is generated, and the command analysis circuit 203 Give to. The command analysis circuit 203 analyzes the command given from the CPU 200, and deletes the table data by the number of pages designated from the first page designated based on the analysis result to make FF.
[0101]
Conventionally, when, for example, four memory storage areas are used to store data, the CPU 200 needs to write addresses four times to the address conversion table 201. According to this, the CPU 200 is occupied during the writing process of the address conversion table 201.
[0102]
Therefore, according to the present embodiment, when the size of the storage area for the real memory address necessary in the CPU 200 is known, a command is generated based on the address indicating the storage area for the real memory address, and the address conversion table 201 stores the command. When the command analysis circuit 203 analyzes the command and writes the address to the address conversion table 201, the CPU 200 can send the command only once, regardless of the size of the required storage area of the memory. Since rewriting in a plurality of storage areas of the table 201 can be performed, the load on the CPU 200 can be reduced and the processing speed can be increased.
[0103]
Next, a manual mode (during a reception operation) in which the CPU 200 rewrites the table data of the address conversion table by restricting the automatic mode operation of the minimum flag detection circuit 213 and the selector 211 will be described.
[0104]
In an initial state where no data is stored in the shared buffer memory 104, a write target address (any one of 00h to ffh) designated from any one of the network interfaces 101, 102, and 103 is changed to any real memory address (00h to 7fh). Table data to be converted into () is set in the address conversion table 201. In the address conversion table 201, a value FF that does not designate any real memory address is set as an initial value.
[0105]
When the reception operation (storage) for one packet is completed, the real memory address (upper address) where the data is stored in the address conversion table 201 remains as table data. The CPU 200 can recognize the free area of the real memory address from the table data of the address conversion table 201. For example, when one reception operation is completed, the table data of the address conversion table 201 is read to grasp the free area of the real memory address.
[0106]
When starting the next reception operation, the table corresponding to the write target address (upper address) is converted so that the current write target address (upper address) is converted into an empty area of the real memory address known by the CPU 200. Rewrite table data.
[0107]
Thus, even if the writing side such as the network interface always accesses using the same reception address, the reception address is converted into an address indicating a free area of the real memory address by the address conversion table 201 and written. It will be a thing.
[0108]
Further, in the present embodiment, even in the manual mode, the address conversion table 201 sets FF as an initial value, and the table of the address conversion table 201 is used so that storage areas of real memory addresses are used in ascending order of addresses. It is also possible to set data.
[0109]
As a result, even if the storage area in use and the unused storage area are not gathered in the real memory address and the unused storage areas are scattered, the unused storage areas in the real memory address are arranged in ascending order of the addresses. Since the selected storage areas are effectively used, the shared buffer memory 104 can be used efficiently without waste. In addition, even if the actual memory is dotted with unused storage areas, it can be controlled so that data is stored at consecutive addresses when viewed from the network interface 101, 102, 103 side. Easy to use.
[0110]
In the transmission operation, only the manual mode is used. This is because, in the case of the transmission operation, unlike the case of the reception operation, it is necessary to read data from the storage area of the specific memory address in the shared buffer memory 104. The transmission operation in the manual mode is as described above. That is, when starting the transmission operation, the CPU 200 knows the real memory address where the packet data is stored and also knows the transmission address to be used. Therefore, the transmission address (upper address) is the packet data Table data to be converted into the stored real memory address is set in the address conversion table 201. As a result, for example, even if the network interface 102 is accessed using the assigned transmission address, the address conversion table 201 converts the packet data into a real memory address where the packet data is stored, and the data is read out.
[0111]
【The invention's effect】
As described above in detail, according to the present invention, an increase in the buffer memory can be suppressed, the cost can be reduced, the apparatus can be downsized, and the data can be transferred from the reception buffer memory to the transmission buffer memory by the CPU. It is possible to provide a data processing device that eliminates the change work and realizes high-speed processing.
[Brief description of the drawings]
FIG. 1 is a functional block diagram of a network device according to an embodiment of the present invention.
FIG. 2 is a functional block diagram of a memory control circuit in the network device shown in FIG.
FIG. 3 is a diagram showing allocation of reception addresses and transmission addresses.
FIG. 4 is a diagram showing an example of address correspondence for each page when memory is accessed from the network interface.
FIG. 5 is a diagram illustrating an example of conversion from a page division area of an address conversion table to a page division area of a real memory address;
FIG. 6 is a diagram showing an example of address conversion when 00h is specified as a receiving address.
FIG. 7 is a diagram showing an example of address conversion when 01h is designated as a receiving address.
FIG. 8 is a diagram showing an example of address conversion when 02h is specified as a receiving address;
FIG. 9 is a diagram showing an example of address conversion when 03h is designated as a receiving address.
FIG. 10 is a diagram showing an example of address conversion when 08h is designated as the transmission address.
FIG. 11 is a diagram showing an example of address conversion when 09h is specified as a transmission address;
FIG. 12 is a diagram showing an example of address conversion when 0ah is specified as a transmission address;
FIG. 13 is a diagram showing an example of address conversion when 0bh is specified as a transmission address;
FIG. 14 is an operation explanatory diagram of an automatic mode using an address conversion table, a shared buffer memory, and peripheral circuits.
FIG. 15 is a configuration diagram of a command register.
FIG. 16 is a functional block diagram of a conventional network device.
[Explanation of symbols]
1 Physical layer interface
100 LSI internal block
101, 102, 103 Network interface
104 Shared buffer memory
105 Memory control circuit
106 Internal bus
107 Cryptographic circuit
200 CPU
201 Address conversion table
202, 211 selector
203 Command analysis circuit
210 Table flag
212 Usage flag
213 Minimum flag detection circuit
214 Warning generation circuit

Claims (10)

LANとのインターフェースを行う複数のネットワークインターフェース手段と、前記複数のネットワークインターフェース手段によりデータの格納および格納されたデータの読み出しのためにアクセスされる共有バッファメモリと、前記共有バッファメモリにアクセスするための仮想メモリアドレスを前記共有バッファメモリの実際の実メモリアドレスに変換するものであって前記ネットワークインターフェース手段ごとに使用する仮想メモリアドレスのアドレス範囲が区分されるとともに前記区分されたアドレス範囲を受信用と送信用とでさらに分けて仮想メモリアドレスが設定されたアドレス変換テーブルと、前記ネットワークインターフェース手段から前記共有バッファメモリにアクセスするために仮想メモリアドレスが入力されると前記アドレス変換テーブルを用いて当該仮想メモリアドレスを実メモリアドレスに変換し、変換された実メモリアドレスの共有バッファメモリにアクセスする制御手段と、A plurality of network interface means for interfacing with a LAN; a shared buffer memory accessed by the plurality of network interface means for storing data and reading the stored data; and for accessing the shared buffer memory A virtual memory address is converted into an actual real memory address of the shared buffer memory, and an address range of a virtual memory address used for each network interface unit is divided, and the divided address range is used for reception. An address conversion table in which virtual memory addresses are further divided for transmission and a virtual memory address is input from the network interface means to access the shared buffer memory And control means converts the virtual memory addresses into real memory address to access the shared buffer memory of the translated real memory address using the address conversion table,
を備えたデータ処理装置。  A data processing apparatus comprising:
前記制御手段は、The control means includes
前記アドレス変換テーブルに仮想メモリアドレスに対応する実メモリアドレスが設定されていない場合、前記共有バッファメモリの実メモリアドレスにおいて空き領域となっている最小アドレスにアクセスする、When a real memory address corresponding to a virtual memory address is not set in the address conversion table, the smallest address that is an empty area in the real memory address of the shared buffer memory is accessed.
請求項1記載のデータ処理装置。The data processing apparatus according to claim 1.
前記共有バッファメモリは、
データの格納領域がパケット通信で転送される最大データ量より小さい単位に分割されている
請求項1記載のデータ処理装置。
The shared buffer memory is
The data storage area is divided into units smaller than the maximum amount of data transferred by packet communication .
The data processing apparatus according to claim 1 .
前記制御手段は、The control means includes
前記アドレス変換テーブルにイニシャル値として共有バッファメモリの実メモリアドレスの範囲外の値を設定し、前記共有バッファメモリにデータを格納する際に前記アドレス変換テーブルの書換えを行う、A value outside the range of the real memory address of the shared buffer memory is set as an initial value in the address conversion table, and the address conversion table is rewritten when data is stored in the shared buffer memory.
請求項1記載のデータ処理装置。The data processing apparatus according to claim 1.
前記制御手段は、
前記アドレス変換テーブルにより変換された実メモリアドレスが前記イニシャル値の場合共有バッファメモリの実メモリアドレスにおいて空き領域となっている最小アドレスから順に使用されるように前記アドレス変換テーブルのイニシャル値を書換える、
請求項4に記載のデータ処理装置。
The control means includes
When the real memory address converted by the address conversion table is the initial value, the initial value of the address conversion table is rewritten so that it is used in order from the smallest address that is an empty area in the real memory address of the shared buffer memory. The
The data processing apparatus according to claim 4 .
前記制御手段は、
前記共有バッファメモリ空き領域が所定量以下になった場合、前記アドレス変換テーブルの書き換えを行わない、
請求項4または請求項5に記載のデータ処理装置。
The control means includes
When the free area of the shared buffer memory becomes a predetermined amount or less, the address conversion table is not rewritten,
The data processing apparatus according to claim 4 or 5 .
前記制御手段は、
前記アドレス変換テーブルに未使用領域がなくなった場合、前記アドレス変換テーブルの書き換えを行わない、
請求項4から請求項6のいずれかに記載のデータ処理装置。
The control means includes
When there is no unused area in the address conversion table, the address conversion table is not rewritten.
The data processing apparatus according to any one of claims 4 to 6 .
前記制御手段は、
前記アドレス変換テーブルによって変換されたアドレスが前記共有バッファメモリのいずれの実メモリアドレスでもない場合、前記変換後の実メモリアドレスへのデータの格納および読み出しを停止する、
請求項1または請求項2に記載のデータ処理装置。
The control means includes
If the address converted by the address conversion table is not any real memory address of the shared buffer memory , stop storing and reading data to the real memory address after conversion,
The data processing apparatus according to claim 1 or 2 .
前記制御手段は、
前記共有バッファメモリの実メモリアドレスを前記アドレス変換テーブルに書込む専用ハード回路を別途設け、前記共有バッファメモリのどの実メモリアドレスにデータを格納するかについて前記格納すべき実メモリアドレスに基づいてコマンドを生成し、この専用ハード回路が前記コマンドを解析して前記アドレス変換テーブルに実メモリアドレスを書込む
請求項1または請求項4に記載のデータ処理装置。
The control means includes
A dedicated hardware circuit for writing the real memory address of the shared buffer memory into the address conversion table is separately provided, and a command based on the real memory address to be stored is stored as to which real memory address of the shared buffer memory is to store data. The dedicated hardware circuit analyzes the command and writes the real memory address to the address conversion table .
The data processing apparatus according to claim 1 or 4 .
前記制御手段は、
前記バッファメモリから読み出されてネットワークインターフェース手段を介してLANに送信される送信データと前記ネットワークインターフェース手段がLANから受信して前記バッファメモリに格納する受信データとを同一バスを用いて同一の共有バッファメモリに対して格納又は読出を行い、且つ前記共有バッファメモリにアクセスする仮想メモリアドレスを送信データ用及び受信データ用に分けて管理する
請求項1記載のデータ処理装置。
The control means includes
Transmission data read from the buffer memory and transmitted to the LAN via the network interface means and reception data received by the network interface means from the LAN and stored in the buffer memory are shared using the same bus. The virtual memory address for storing or reading the buffer memory and accessing the shared buffer memory is managed separately for transmission data and reception data .
The data processing apparatus according to claim 1 .
JP2002292985A 2002-10-04 2002-10-04 Data processing device Expired - Lifetime JP4018961B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002292985A JP4018961B2 (en) 2002-10-04 2002-10-04 Data processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002292985A JP4018961B2 (en) 2002-10-04 2002-10-04 Data processing device

Publications (2)

Publication Number Publication Date
JP2004129083A JP2004129083A (en) 2004-04-22
JP4018961B2 true JP4018961B2 (en) 2007-12-05

Family

ID=32284071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002292985A Expired - Lifetime JP4018961B2 (en) 2002-10-04 2002-10-04 Data processing device

Country Status (1)

Country Link
JP (1) JP4018961B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5411090B2 (en) * 2010-08-20 2014-02-12 日本電信電話株式会社 Buffer control method and buffer control apparatus

Also Published As

Publication number Publication date
JP2004129083A (en) 2004-04-22

Similar Documents

Publication Publication Date Title
EP1896965B1 (en) Dma descriptor queue read and cache write pointer arrangement
US5923660A (en) Switching ethernet controller
US9063561B2 (en) Direct memory access for loopback transfers in a media controller architecture
JP6899852B2 (en) Storage device
KR100773013B1 (en) Method and apparatus for controlling data flow between data processing systems through memory
US5884313A (en) System and method for efficient remote disk I/O
US20090119460A1 (en) Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space
US20040109369A1 (en) Scratchpad memory
WO2013136522A1 (en) Computer system and method for communicating data between computers
EP0780768A1 (en) Direct programmed I/O device control method using virtual registers
KR19990067730A (en) An apparatus and method for transmitting and receiving data into and out of a universal serial bus device
KR20030071856A (en) Method and Apparatus for controlling flow of data between data processing systems via a memory
CN101539902A (en) DMA device for nodes in multi-computer system and communication method
KR20040012716A (en) Method and Apparatus for transferring interrupts from a peripheral device to a host computer system
JP4018961B2 (en) Data processing device
US7032035B2 (en) Method and apparatus for improving transmission performance by caching frequently-used packet headers
KR101485081B1 (en) Controller with indirect accessible memory
JPWO2013062109A1 (en) I/O device control system and I/O device control method
EP2363807B1 (en) Address encryption/rate pacing
JP2008541276A (en) Simultaneous read response confirmation extended direct memory access unit
JP2000259523A (en) Data transfer device, lan communication system and data transfer method
CA2295279A1 (en) Communication processing apparatus, superior system thereof, communication processing system, communication processing system network and communication processing process
JP2006244194A (en) Usb controller, and device controller

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070501

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070628

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070921

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110928

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120928

Year of fee payment: 5