説明

半導体装置およびそれを用いた通信装置

【課題】パケットデータの処理速度の高速化を図ることが可能な半導体装置を提供すること。
【解決手段】制御回路10は、ネットワークプロセッサから第1のパケットデータの書き込みの中断指示を受けたときに、第1のパケットデータの書き込みを中断し、FIFO24にネットワークプロセッサから受けた第2のパケットデータを格納し、ネットワークプロセッサから第2のパケットデータの書き込みの中断指示を受けたときに、第1のパケットデータの書き込みを再開する。したがって、パケットデータの処理速度の高速化を図ることが可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケットデータを一時的に保存して適宜出力する技術に関し、特に、複数のポートから入力されるパケットデータを効率的にパケットバッファに書き込むように制御する半導体装置およびそれを用いた通信装置に関する。
【背景技術】
【0002】
近年、ネットワークの高速化が進んでおり、ルータ、スイッチなどの通信装置も高速化に対応する必要がある。一般に、ルータやスイッチなどの通信装置においては、転送先を決定するまでデータをメモリなどの記憶装置に一時的に保存しておく必要がある。そのため、ネットワークの高速化に伴ってネットワークプロセッサおよびパケットバッファのデータ転送レートが上がり、パケットバッファとして使用されるメモリの容量もより大きなものが必要となる。たとえば、10GビットErthenetの場合、10Gb/sのデータ転送レートのネットワークプロセッサと、10Gb/sのデータ転送レートおよび2.5Gbの容量を有するパケットバッファとが必要となる。
【0003】
また、サービス品質を向上させるために、通信装置に入力されたパケットデータが優先順位にしたがって分類され、キューごとに蓄積される。このとき、ユニキャストの場合にはパケットデータが1回だけ書き込まれる。
【0004】
さらに、サービス品質の公平性を保つために、キューの占有を避けるように動作させる必要がある。具体的には、キューにデータが溜まっている場合には、そのキューにデータを書き込まないように制御する。これらに関連する技術として、下記の特許文献1〜2に開示された発明がある。
【0005】
特許文献1は、所定期間パケットバッファ内に滞留するパケットを、パケットバッファから読み出しを行うことなく実質的に破棄することを可能とするパケット転送装置およびパケット破棄方法を提供することを目的とする。パケットバッファ管理部では、パケットバッファの書き込み可能なアドレスに対するパケットの書き込み順序と、書き込み済みのアドレスからのパケットの読み出し順序とを管理している。このアドレスに対する順序付けは、パケットバッファのアドレスに対応したポインタアドレスのポインタによるキューを用いて行われる。
【0006】
特許文献2は、可変長パケットを高速スイッチングでき、且つ、バッファメモリを効率的に利用できるパケットスイッチを提供することを目的とする。各入力回線から受信した可変長パケットを固定長のデータブロック単位で共通バッファメモリに書き込む構造のパケットスイッチにおいて、データ書込み時に、バッファ制御部が、入力回線別の入力キューを形成し、可変長パケットの最終データブロックが入力キューに登録された時、入力キューのリンクド・アドレスリストを転送先出力回線と対応した出力キューにリンクする。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−260535号公報
【特許文献2】特開2002−152247号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
従来のルータ、スイッチなどの通信装置においては、パケットバッファに書き込まれたパケットデータが読み出される場合にもパケット単位で読み出されるため、1つのパケットデータの書き込みが終了するまで、次のパケットデータの書き込みができず、効率的にパケットデータの書き込みが行なえないといった問題点があった。
【0009】
このような問題点は、上述の特許文献1〜2に開示された発明を用いたとしても解決することができない。
【0010】
本発明は、上記問題点を解決するためになされたものであり、その目的は、パケットデータの処理速度の高速化を図ることが可能な半導体装置およびそれを用いた通信装置を提供することである。
【課題を解決するための手段】
【0011】
本発明の一実施例によれば、ネットワークプロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置が提供される。制御回路は、ネットワークプロセッサからパケットデータを受けてFIFOに格納し、FIFOに格納されたパケットデータを読み出してメモリに書き込むための制御を行なう。制御回路は、ネットワークプロセッサから第1のパケットデータの書き込みコマンドを受けたときに、FIFOにネットワークプロセッサから受けた第1のパケットデータを格納し、ネットワークプロセッサから第1のパケットデータの書き込みの中断指示を受けたときに、第1のパケットデータの書き込みを中断し、ネットワークプロセッサから第2のパケットデータの書き込みコマンドを受けたときに、FIFOにネットワークプロセッサから受けた第2のパケットデータを格納し、ネットワークプロセッサから第2のパケットデータの書き込みの中断指示を受けたときに、第1のパケットデータの書き込みを再開する。
【発明の効果】
【0012】
本発明の一実施例によれば、制御回路は、ネットワークプロセッサから第1のパケットデータの書き込みの中断指示を受けたときに、第1のパケットデータの書き込みを中断し、FIFOにネットワークプロセッサから受けた第2のパケットデータを格納し、ネットワークプロセッサから第2のパケットデータの書き込みの中断指示を受けたときに、第1のパケットデータの書き込みを再開するので、パケットデータの処理速度の高速化を図ることが可能となる。
【図面の簡単な説明】
【0013】
【図1】ルータやスイッチなどの通信装置の構成例を示す図である。
【図2】図1に示す通信装置の動作の一例を説明するための図である。
【図3】キューに対するパケットデータの書き込み制御の一例を示す図である。
【図4】図1に示す通信装置の動作を模式的に示す図である。
【図5】本発明の第1の実施の形態における通信装置のネットワークプロセッサ1が、パケットバッファ2にパケットデータを書き込むときのタイミングチャートの一例である。
【図6】本発明の第1の実施の形態における通信装置のパケットバッファ2の内部構成を示すブロック図である。
【図7】パケットデータの書き込み用のFIFO24および読み出し用のFIFO28の詳細を説明するための図である。
【図8】本発明の第2の実施の形態の通信装置におけるパケットデータの書き込み動作の一例を示す図である。
【図9】本発明の第2の実施の形態におけるパケットバッファ2の構成例を示すブロック図である。
【図10】本発明の第2の実施の形態におけるヘッドポインタ、リンクドリストおよびテイルポインタの他の一例を示す図である。
【図11】1つのアドレスに対応するバンクの構成を示す図である。
【図12】本発明の第3の実施の形態における通信装置のネットワークプロセッサ1が、パケットバッファ2にパケットデータを書き込むときのタイミングチャートの一例である。
【図13】本発明の第3の実施の形態における通信装置のヘッドポインタ、リンクドリストおよびテイルポインタの構成を示す図である。
【図14】パケットバッファ2がネットワークプロセッサ1からのパケットデータ書き込み時にStart信号を受けたときの動作を説明するための図である。
【図15】パケットバッファ2がネットワークプロセッサ1からのパケットデータ書き込み時にCNT信号を受けたときの動作を説明するための図である。
【図16】パケットバッファ2がネットワークプロセッサ1からのパケットデータ書き込み時にEnd信号を受けるときの動作を説明するための図である。
【発明を実施するための形態】
【0014】
図1は、ルータやスイッチなどの通信装置の構成例を示す図である。この通信装置は、通信装置全体の制御を行なうネットワークプロセッサ1と、パケットデータを蓄積して適宜出力するパケットバッファ2とを含む。
【0015】
ネットワークプロセッサ1は、パケットデータを受信すると、パケットバッファ2に対して、パケットデータの書き込みを指示するコマンドと、パケットデータを格納するキュー番号と、パケットデータとを出力する。
【0016】
パケットバッファ2は、ネットワークプロセッサ1からコマンドとキュー番号とを受けると、キュー番号に対応するキューに対してネットワークプロセッサ1から受けたパケットデータを書き込む。
【0017】
図2は、図1に示す通信装置の動作の一例を説明するための図である。図2において、a〜hはパケットデータを示しており、カッコ内はパケットデータを書き込むキュー番号を示している。a〜hはユニキャストのパケットデータである。
【0018】
図2の左側に示すように、ネットワークプロセッサ1はパケットバッファ2に対して、コマンド、キュー番号およびパケットデータa〜hを順次出力して、キュー番号に対応するキューにパケットデータを順次書き込む。
【0019】
図2の中央に示すように、キューQ0〜Qnに対してパケットデータa〜hが書き込まれる。そして、図2の右側に示すように、パケットバッファ2は、ネットワークプロセッサ1からパケットデータ読み出しコマンドを受けて、パケットデータの優先順位にしたがってパケットデータを順次出力する。なお、図2においては、パケットデータが、a、e、f、b、g、c、d、hの順に出力されている。
【0020】
図3は、キューに対するパケットデータの書き込み制御の一例を示す図である。サービス品質を向上させるために、1つのキューによる占有を避けるように動作させる必要がある。そのため、図3に示すように、1つのキュー(Q1)にパケットデータが溜まっている場合、そのキューにパケットデータを書き込まないように制御が行なわれる。
【0021】
図4は、図1に示す通信装置の動作を模式的に示す図である。図4の左側に示すように、ネットワークプロセッサ1は複数のポートから入力されるパケットデータを処理するが、たとえば、各入力ポートのデータ転送レートは1Gbpsである。
【0022】
また、ネットワークプロセッサ1は、複数のポートからパケットデータを入力し、そのパケットデータをパケットバッファ2に書き込む。そして、ネットワークプロセッサ1は、パケットバッファ2からパケットデータを読み出して、図4の右側に示すように、複数のポートにパケットデータを出力する。このとき、ネットワークプロセッサ1は、10Gbpsのデータ転送レートで処理が可能である。
【0023】
このとき、複数のポートから同時にパケットデータが入力されると、上述のように、1つのパケットデータの入力が終了するまで他のパケットの書き込みが行なえないため、他のパケットの処理が待たされることになる。したがって、ネットワークプロセッサ1は、10Gbpsのデータ転送レートで処理が行なえるのに、1Gpbsのデータ転送レートでしか処理を行なっていないことになり、効率的に処理を行なっているとは言えない。
【0024】
本発明の実施の形態における通信装置は、1つのパケットデータをパケットバッファ2に書き込んでいる最中であっても、他のパケットデータの書き込みを可能とするものである。以下、本発明の実施の形態における通信装置について詳細に説明する。
【0025】
(第1の実施の形態)
図5は、本発明の第1の実施の形態における通信装置のネットワークプロセッサ1が、パケットバッファ2にパケットデータを書き込むときのタイミングチャートの一例である。なお、ネットワークプロセッサ1およびパケットバッファ2はCLK信号に同期して動作する。
【0026】
まず、T1において、ネットワークプロセッサ1がパケットバッファ2に対して、パケットデータの書き込みコマンド(Wt)を出力すると共に、キュー番号(#0)を出力する。このとき、ネットワークプロセッサ1は、パケットの最初を示すStart信号を活性する(Hレベルにする)。なお、以下の説明においては、キュー番号#0に対応するキューをQ0、キュー番号#1に対応するキューをQ1とする。
【0027】
その後、CLK信号に同期して、ネットワークプロセッサ1がパケットバッファ2に対してパケットデータを順次書き込む。このとき、パケットバッファ2は、後述するFIFO(First In First Out)のキューQ0にパケットデータを書き込む。
【0028】
T2において、ネットワークプロセッサ1が次のパケットデータ(Q1)の書き込みを行なうために、Q0へのパケットデータの書き込みを中断させるCNT信号を活性する(Hレベルにする)。このとき、パケットバッファ2は、Q0へのパケットデータの書き込みを中断する。なお、ネットワークプロセッサ1は、中断したQ0へのパケットデータを引き続き入力ポートから入力してバッファリングするものとする。
【0029】
ここで、ネットワークプロセッサ1がパケットバッファ2に対してパケットデータを書き込む速度は、パケットデータがポートに入力される速度よりも速いため、見かけ上、複数のポートから入力されるパケットデータを並行して処理することができる。
【0030】
T3において、ネットワークプロセッサ1がパケットバッファ2に対して、パケットデータの書き込みコマンド(Wt)を出力すると共に、キュー番号(#1)を出力する。このとき、ネットワークプロセッサ1は、パケットの最初を示すStart信号を活性する(Hレベルにする)。
【0031】
その後、CLK信号に同期して、ネットワークプロセッサ1がパケットバッファ2に対してパケットデータを順次書き込む。このとき、パケットバッファ2は、FIFOのキューQ1にパケットデータを書き込む。
【0032】
T4において、ネットワークプロセッサ1が最初のパケットデータ(Q0)の書き込みを再開するために、Q1へのパケットデータの書き込みを中断させるCNT信号を活性する(Hレベルにする)。このとき、パケットバッファ2は、Q1へのパケットデータの書き込みを中断する。
【0033】
T5において、ネットワークプロセッサ1がパケットバッファ2に対して、パケットデータの書き込みコマンド(Wt)を出力すると共に、キュー番号(#0)を出力する。このとき、パケットバッファ2は、中断していたQ0へのパケットバッファの書き込みを再開する。
【0034】
T6において、ネットワークプロセッサ1は、Q0へのパケットデータの書き込みの終了を示すEND信号をパケットバッファ2に出力する。このとき、パケットバッファ2は、Q0へのパケットデータの書き込みを終了する。なお、T7以降において、同様の処理が行なわれる。
【0035】
図6は、本発明の第1の実施の形態における通信装置のパケットバッファ2の内部構成を示すブロック図である。このパケットバッファ2は、ネットワークプロセッサ1からのコマンドに応じてパケットデータの書き込みおよび読み出しを制御する制御回路10と、パケットデータを記憶するメモリ11とを含む。なお、図6においては、制御回路10が1つのLSIによって構成され、SDRAM(Synchronous Dynamic Random Access Memory)などの汎用メモリ11が外付けされる構成としているが、これに限られるものではない。
【0036】
制御回路10は、コマンド入力部21と、データ入力部23と、パケットデータの書き込み用のFIFO24と、データ出力部25と、読み出しコントローラ26と、書き込みコントローラ27と、パケットデータの読み出し用のFIFO28とを含む。
【0037】
コマンド入力部21は、ネットワークプロセッサ1からコマンドを受け、コマンドがパケットデータの読み出しであれば、読み出しコントローラ26にメモリ11からのパケットデータの読み出しを指示する。また、コマンドがパケットデータの書き込みであれば、書き込みコントローラ27にパケットデータの書き込みを指示する。
【0038】
また、コマンド入力部21は、ネットワークプロセッサ1からパケットデータの書き込みコマンドおよびStart信号を受けると、データ入力部23に対して、キュー番号によって指定されたFIFO24内のキューに、ネットワークプロセッサ1から入力したパケットデータを書き込むように指示する。
【0039】
また、コマンド入力部21は、ネットワークプロセッサ1からCNT信号を受けると、データ入力部23に対して、そのパケットデータの書き込みを中断するように指示する。そして、ネットワークプロセッサ1から、同じキューに対するパケットデータの書き込みコマンドを受けると、データ入力部23に対して、そのキューに対するパケットデータの書き込みの再開を指示する。また、コマンド入力部21は、ネットワークプロセッサ1からEND信号を受けると、データ入力部23に対して、そのパケットデータの書き込みを終了するように指示する。
【0040】
データ入力部23は、コマンド入力部21からの指示に応じて、FIFO24内のキューに対するパケットデータの書き込み、パケットデータの書き込みの中断、およびパケットデータの書き込みの終了などを行なう。
【0041】
書き込みコントローラ27は、コマンド入力部21からパケットデータの書き込み指示を受けると、ネットワークプロセッサ1から受けたキュー番号に対応するメモリ11内のキューに、FIFO24にバッファリングされたパケットデータを書き込む。
【0042】
読み出しコントローラ26は、コマンド入力部21からパケットデータの読み出し指示を受けると、ネットワークプロセッサ1から受けたキュー番号に対応するメモリ11内のキューからパケットデータを読み出して、FIFO28内の対応するキューにパケットデータを書き込む。
【0043】
データ出力部25は、FIFO28内の対応するキューに対するパケットデータの書き込みが終了すると、FIFO28内のそのキューからパケットデータを読み出し、そのパケットデータをネットワークプロセッサ1に出力する。
【0044】
図7は、パケットデータの書き込み用のFIFO24および読み出し用のFIFO28の詳細を説明するための図である。FIFO24は、キューQ0〜Qnに分けられており、それぞれのキューが複数のパケットデータを格納できるだけの容量を有している。上述のように、パケットデータの書き込みが中断される場合には、キューに対して1つのパケットデータの書込みが完了したときに、そのパケットデータがペイロード27(メモリ11)に移されることになる。
【0045】
また、FIFO28についても同様に、キューQ0〜Qnに分けられており、それぞれのキューが複数のパケットデータを格納できるだけの容量を有している。ペイロード27(メモリ11)からパケットデータを読み出してFIFO28に書き込む場合には、パケット単位で書込みが行なわれる。パケットデータを書き込むときと同様に、パケットデータをFIFO28から読み出して出力する場合にも、パケットデータの読み出しを中断しながらネットワークプロセッサ1に出力する。
【0046】
以上説明したように、本実施の形態における通信装置によれば、ネットワークプロセッサ1がCNT信号をパケットバッファ2に出力し、1つのパケットデータの書き込みの途中で別のパケットデータの書き込みを行なうようにしたので、複数のポートから同時にパケットデータを入力する場合でも、それらのデータパケットの書き込みを並行して行なえるようになり、処理速度の高速化を図ることが可能となった。
【0047】
(第2の実施の形態)
第1の実施の形態における通信装置は、FIFO24および28を設けてパケットデータを一時的に格納するものであった。しかしながら、キュー数が多くなるに従ってFIFOのメモリサイズも大きくなってしまう。本発明の第2の実施の形態においては、ペイロードアドレスを管理することによって、FIFOのメモリサイズを削減するものである。
【0048】
まず、本発明の第2の実施の形態における通信装置の動作の理解を容易にするために、通信装置におけるヘッドポインタ、テイルポインタ、リンクドリストおよびペイロード(メモリ11)の動作について説明する。
【0049】
図8は、本発明の第2の実施の形態の通信装置におけるパケットデータの書き込み動作の一例を示す図である。ヘッドポインタは、キューQ0〜Qnのそれぞれについて最初にパケットデータが書き込まれているメモリ11のアドレスを示すものである。たとえば、キューQ0の最初のパケットデータがメモリ11のアドレス00(データa)に書き込まれていることを示している。
【0050】
テイルポインタは、キューQ0〜Qnのそれぞれについて最後尾のパケットデータが書き込まれているメモリ11のアドレスを示すものである。たとえば、キューQ0の最後尾のパケットがメモリ11のアドレス09(データj)に書き込まれていることを示している。
【0051】
リンクドリストは、ヘッドポインタによって示される先頭のパケットデータのアドレスからテイルポインタによって示される最後尾のパケットデータのアドレスまでを数珠つなぎにして示すものである。たとえば、キューQ0の最初のパケットデータが格納されるアドレス00に対応するリンクドリストにアドレス05が書き込まれているので、次のパケットデータがメモリ11のアドレス05(データg)に格納されていることが分かる。さらに、2番目のパケットデータが格納されるアドレス05に対応するリンクドリストにアドレス09が書き込まれているので、その次のパケットデータがメモリ11のアドレス09(データj)に格納されていることが分かる。
【0052】
図8に示すように、ヘッドポインタ、リンクドリストおよびテイルポインタに、パケットの区切りを示すEndビットを設けている。このEndビットを参照することによって、1つのパケットデータの区切りを判別する。なお、図8においては、パケットデータの区切りのEndビットに“E”が格納されている。
【0053】
図9は、本発明の第2の実施の形態におけるパケットバッファ2の構成例を示すブロック図である。このパケットバッファ2は、コマンドデコーダ31と、ポインタ32と、空きアドレスコントローラ33と、リンクドリスト34と、メモリ11に対するアクセスを制御するメモリコントローラ35とを含む。なお、メモリコントローラ35には、図6に示すパケットバッファと同様に、メモリ11が接続されるものとする。
【0054】
また、図9では、データ入力部、データ出力部、FIFOの記載を省略している。図9のパケットバッファにおいても、図6のパケットバッファと同様に、ネットワークプロセッサ1とメモリ11との間に、パケットデータの入出力を行なうデータ入力部、データ出力部、FIFOが配置される。
【0055】
また、ネットワークプロセサ1がパケットバッファ2にパケットデータを書き込むときの動作は、図5のタイミングチャートに示す第1の実施の形態における通信装置の動作と同様である。
【0056】
コマンドデコーダ31は、ネットワークプロセッサ1から受けたコマンドをデコードし、デコード結果に応じてポインタ32、空きアドレスコントローラ33などを制御する。
【0057】
ポインタ32は、上述のヘッドポインタおよびテイルポインタに対応しており、Endビットが付加されている。また、リンクドリスト34は、上述のようにリンクドリストにEndビットが付加されている。
【0058】
空きアドレスコントローラ33は、メモリ11の空きアドレスを管理しており、コマンドデコーダ31によってパケットデータの書き込みコマンドがデコードされたときに、メモリ11の空きアドレスを出力する。
【0059】
メモリコントローラ35は、コマンドデコーダ31からの指示に応じて、パケットデータをメモリ11に書き込む制御を行なったり、メモリ11からパケットデータを読み出す制御を行なったりする。
【0060】
コマンドデコーダ31がユニキャストのパケットデータの書き込みコマンドをデコードした場合、対応するキューのテイルポインタを読み出すと共に、空きアドレスコントローラ33に空きアドレスをメモリコントローラ35に出力させる。
【0061】
そして、コマンドデコーダ31は、メモリコントローラ35にパケットデータをメモリ11に書き込ませる。このとき、テイルポインタが示すリンクドリスト34の領域にその空きアドレスを書き込み、テイルポインタにもその空きアドレスを書き込む。
【0062】
そして、コマンドデコーダ31は、ネットワークプロセッサ1からEND信号を受けたときに、リンクドリスト34のEndビットおよびテイルポインタのEndビットにパケットの終了を示す情報を書き込む。
【0063】
上述のように、パケットバッファ2がネットワークプロセッサ1からCNT信号を受けた後、パケットデータの書き込みを再開するときに再度パケットデータの書き込みコマンドが発行されるため、新しいアドレスにパケットデータの続きが書き込まれることになる。そのため、パケットの区切りを示すEndビットが必要となる。
【0064】
コマンドデコーダ31がユニキャストのパケットデータの読み出しコマンドをデコードした場合、キュー番号に対応するヘッドポインタにアクセスして、最初のパケットデータが格納されるアドレスを出力させる。
【0065】
そして、コマンドデコーダ31は、メモリコントローラ35にメモリ11のそのアドレスからパケットデータを読み出させる。このとき、そのアドレスが空きアドレスとして空きアドレスコントローラ33に登録される。そして、ヘッドポインタが示すリンクドリストにアクセスし、そのアドレスおよびEndビットがヘッドポインタに格納される。ヘッドポインタのEndビットがパケットの終了を示すまで、そのパケットデータの読み出しが継続される。
【0066】
図10は、本発明の第2の実施の形態におけるヘッドポインタ、リンクドリストおよびテイルポインタの他の一例を示す図である。図8に示すEndビットが、バンクポインタに置き換えられた構成を有している。図10においては、1つのアドレスが複数のバンクによって構成されており、バンクポインタによってパケットデータがどのバンクに書き込まれているかを示している。
【0067】
たとえば、ヘッドポインタにおいては、キューQ0の最初のパケットデータがメモリ11のアドレス00のバンクB3およびB2に書き込まれていることを示している。また、テイルポインタにおいては、キューQ0の最後尾のパケットがメモリ11のアドレス09のバンクB1およびB2に書き込まれていることを示している。
【0068】
図11は、1つのアドレスに対応するバンクの構成を示す図である。図11においては、1つのアドレスが8バンクによって構成されており、1つのアドレスには1つのパケットデータが格納されることを示している。したがって、8バンクの容量の合計が、1つのパケットデータのサイズよりも大きいものとする。
【0069】
図8に示すEndビットを用いてパケットデータの書き込みを行なう場合、ネットワークプロセッサ1からCNT信号を受けた後、パケットデータの書き込みを再開するときに違うアドレスにパケットデータの続きを書き込むようにしていた。図10に示すバンクポインタを用いてパケットデータの書き込みを行なう場合、ネットワークプロセッサ1からCNT信号を受けた後、パケットデータの書き込みを再開するときに同じアドレスの違うバンクにパケットデータを書き込む。
【0070】
以上説明したように、本実施の形態における通信装置によれば、ヘッドポインタ、テイルポインタおよびリンクドリストにEndビットまたはバンクポインタを持たせ、パケットデータの書き込みが再開されるときに違うアドレスまたは違うバンクにパケットデータを書き込むようにした。これによって、パケットデータを一時的に格納するFIFOのメモリサイズを削減することが可能となった。また、FIFOのメモリサイズを削減することに伴い、それを制御する回路についても不要となり、通信装置の回路規模を削減することが可能となった。
【0071】
(第3の実施の形態)
第2の実施の形態における通信装置は、ヘッドポインタ、テイルポインタおよびリンクドリストにEndビットまたはバンクポインタを持たせ、パケットデータの書き込みが再開されるときに違うアドレスまたは違うバンクにパケットデータを書き込むものであった。しかしながら、同じキュー番号のキューに対して複数のパケットデータの書込みが同時に発生した場合には、それに対処することができない。
【0072】
本発明の第3の実施の形態における通信装置は、図10に示すヘッドポインタ、リンクドリストおよびテイルポインタの構成にライン情報を追加して、同じキュー番号のキューに対して複数のパケットデータの書き込みが同時に発生した場合でも、パケットデータの書き込みを行なえるようにしたものである。
【0073】
なお、本実施の形態における通信装置の構成は、図9に示す第2の実施の形態における通信装置の構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【0074】
図12は、本発明の第3の実施の形態における通信装置のネットワークプロセッサ1が、パケットバッファ2にパケットデータを書き込むときのタイミングチャートの一例である。なお、ネットワークプロセッサ1およびパケットバッファ2はCLK信号に同期して動作する。
【0075】
まず、T1において、ネットワークプロセッサ1がパケットバッファ2に対して、パケットデータの書き込みコマンド(Wt)を出力すると共に、キュー番号(#0)およびライン番号(#0)を出力する。このとき、ネットワークプロセッサ1は、パケットの最初を示すStart信号を活性する(Hレベルにする)。ここで、ライン番号とは、どのポートから入力されたパケットであるかを識別するための情報である
その後、CLK信号に同期して、ネットワークプロセッサ1がパケットバッファ2に対してパケットデータを順次書き込む。
【0076】
T2において、ネットワークプロセッサ1が2番目のパケットデータの書き込みを行なうために、最初のパケットデータの書き込みを中断させるCNT信号を活性する(Hレベルにする)。このとき、パケットバッファ2は、最初のパケットデータの書き込みを中断する。
【0077】
T3において、ネットワークプロセッサ1がパケットバッファ2に対して、2番目のパケットデータの書き込みコマンド(Wt)を出力すると共に、キュー番号(#0)を出力する。このとき、ネットワークプロセッサ1は、パケットの最初を示すStart信号を活性する(Hレベルにする)。ここで、2番目のデータパケットの書き込み先が、最初のパケットデータの書き込み先と同じキューQ0であるので、ネットワークプロセッサ1は、ポート番号を識別するためのライン番号(#1)をパケットバッファ2に出力する。
【0078】
その後、CLK信号に同期して、ネットワークプロセッサ1がパケットバッファ2に対して2番目のパケットデータを順次書き込む。
【0079】
T4において、ネットワークプロセッサ1が最初のパケットデータの書き込みを再開するために、2番目のパケットデータの書き込みを中断させるCNT信号を活性する(Hレベルにする)。このとき、パケットバッファ2は、2番目のパケットデータの書き込みを中断する。
【0080】
T5において、ネットワークプロセッサ1がパケットバッファ2に対して、最初のパケットデータの書き込みコマンド(Wt)を出力すると共に、キュー番号(#0)およびライン番号(#0)を出力する。このとき、パケットバッファ2は、中断していた最初のパケットバッファの書き込みを再開する。
【0081】
T6において、ネットワークプロセッサ1は、最初のパケットデータの書き込みの終了を示すEND信号をパケットバッファ2に出力する。このとき、パケットバッファ2は、最初のパケットデータの書き込みを終了する。なお、T7以降において、同様の処理が行なわれる。
【0082】
図13は、本発明の第3の実施の形態における通信装置のヘッドポインタ、リンクドリストおよびテイルポインタの構成を示す図である。図10に示す第2の実施の形態におけるヘッドポインタ、リンクドリストおよびテイルポインタと比較して、ラインポインタが追加されている点が異なる。なお、図13においては、テイルポインタにバンクポインタが付加されていないが、第2の実施の形態と同様にバンクポインタを付加するようにしてもよい。
【0083】
ラインポインタは、アドレス、キュー番号およびバンクポインタを有している。たとえば、ラインポインタ#0のキュー番号と、ラインポインタ#1のキュー番号とを同じにすることによって、2つのパケットデータを同じキューに同時に書き込む場合にも対応することができる。
【0084】
図14〜16は、本発明の第3の実施の形態における通信装置の動作を説明するための図である。図14は、パケットバッファ2がネットワークプロセッサ1からのパケットデータ書き込み時にStart信号を受けたときの動作を説明するための図である。
【0085】
まず、パケットバッファ2がパケットデータの書き込みコマンド、ポート番号(Ch0)およびキュー番号(Q#)を受けると(1)、リンクドリスト34は、パケットデータの書き込みコマンドをメモリコントローラ35に出力する。このとき、メモリコントローラ35は、ネットワークプロセッサ1から出力されるパケットデータを受ける(2)。
【0086】
メモリコントローラ35は、バンクの衝突を回避するために使用されていないバンクを抽出し、そのバンク候補をリンクドリスト34に提示する(4)。リンクドリスト34は、メモリコントローラ35から提示されたバンク候補の中からパケットデータを書き込むバンクを選択し(5)、そのアドレス(A)とバンク番号(B)とをメモリコントローラ35に指示する(6)。
【0087】
メモリコントローラ35は、リンクドリスト34からアドレスおよびバンク番号を受けると、ネットワークプロセッサ1から受けたパケットデータをメモリ(DRAM)11の指定されたアドレスのバンクに書き込む(7)。このとき、リンクドリスト34は、ラインポインタを生成し、キュー番号(Q)、アドレス(A)およびバンク番号(B1)を記憶部36に書き込む(8)。ここで、リンクドリスト34は、内部のカウンタCに“1”を設定し、C番目のバンクポインタにパケットデータを書き込むバンク番号を書き込む。なお、記憶部36は、図13に示すラインポインタ(Line#0〜Line#a)を記憶するものであり、メモリやレジスタなどによって構成される。
【0088】
図15は、パケットバッファ2がネットワークプロセッサ1からのパケットデータ書き込み時にCNT信号を受けたときの動作を説明するための図である。まず、パケットバッファ2がパケットデータの書き込みコマンドおよびポート番号(Ch0)を受けると(1)、リンクドリスト34は、パケットデータの書き込みコマンドをメモリコントローラ35に出力する。このとき、リンクドリスト34は、記憶部36に格納されるポート番号(Ch0)に対応するラインポインタを読み出す。また、メモリコントローラ35は、ネットワークプロセッサ1から出力されるパケットデータを受ける(2)。
【0089】
メモリコントローラ35は、バンクの衝突を回避するために使用されていないバンクを抽出し、そのバンク候補をリンクドリスト34に提示する(4)。リンクドリスト34は、メモリコントローラ35から提示されたバンク候補の中からパケットデータを書き込むバンクを選択し(5)、そのアドレス(A)とバンク番号(B)とをメモリコントローラ35に指示する(6)。
【0090】
メモリコントローラ35は、リンクドリスト34からアドレスおよびバンク番号を受けると、ネットワークプロセッサ1から受けたパケットデータをメモリ(DRAM)11の指定されたアドレスのバンクに書き込む(7)。このとき、リンクドリスト34は、ラインポインタのバンクポインタの情報を修正し、キュー番号(Q)、アドレス(A)およびバンク番号(B(C+1))を記憶部36に書き込む(8)。ここで、リンクドリスト34は、内部のカウンタCをインクリメントし、C+1番目のバンクポインタにパケットデータを書き込むバンク番号を書き込む。
【0091】
図16は、パケットバッファ2がネットワークプロセッサ1からのパケットデータ書き込み時にEnd信号を受けるときの動作を説明するための図である。まず、パケットバッファ2がパケットデータの書き込みコマンドおよびポート番号(Ch0)を受けると(1)、リンクドリスト34は、パケットデータの書き込みコマンドをメモリコントローラ35に出力する。このとき、リンクドリスト34は、記憶部36に格納されるポート番号(Ch0)に対応するラインポインタを読み出す。また、メモリコントローラ35は、ネットワークプロセッサ1から出力されるパケットデータを受ける(2)。
【0092】
メモリコントローラ35は、バンクの衝突を回避するために使用されていないバンクを抽出し、そのバンク候補をリンクドリスト34に提示する(4)。リンクドリスト34は、メモリコントローラ35から提示されたバンク候補の中からパケットデータを書き込むバンクを選択し(5)、そのアドレス(A)とバンク番号(B)とをメモリコントローラ35に指示する(6)。
【0093】
メモリコントローラ35は、リンクドリスト34からアドレスおよびバンク番号を受けると、ネットワークプロセッサ1から受けたパケットデータをメモリ(DRAM)11の指定されたアドレスのバンクに書き込む(7)。
【0094】
リンクドリスト34は、ネットワークプロセッサ1からEnd信号を受けると、ラインポインタのバンクポインタの情報を修正し、キュー番号(Q)、アドレス(A)およびバンク番号(B(C+1))を対応するリンクドリストに書き込む(8)。ここで、リンクドリスト34は、内部のカウンタCをインクリメントし、C+1番目のバンクポインタにパケットデータを書き込むバンク番号を書き込む。
【0095】
以上説明したように、本実施の形態における通信装置によれば、ラインポインタを設けてパケットデータを書き込むキュー番号を管理するようにしたので、第2の実施の形態において説明した効果に加えて、同じキュー番号のキューに複数のポートから入力されるパケットを同時に書き込むことが可能となった。
【0096】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0097】
1 ネットワークプロセッサ、2 パケットバッファ、10 制御回路、11 メモリ、21 コマンド入力部、23 データ入力部、24,28 FIFO、25 データ出力部、26 読み出しコントローラ、27 書き込みコントローラ、31 コマンドデコーダ、32 ポインタ、33 空きアドレスコントローラ、34 リンクドリスト、35 メモリコントローラ、36 記憶部。

【特許請求の範囲】
【請求項1】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
パケットデータを一時的に記憶する記憶手段と、
前記プロセッサからパケットデータを受けて前記記憶手段に格納し、前記記憶手段に格納されたパケットデータを読み出して前記メモリに書き込むための制御を行なう制御手段とを含み、
前記制御手段は、前記プロセッサから第1のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第1のパケットデータを格納し、前記プロセッサから前記第1のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを中断し、前記プロセッサから第2のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第2のパケットデータを格納し、前記プロセッサから前記第2のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを再開する、半導体装置。
【請求項2】
前記記憶手段は、パケットデータを記憶する複数のキューを有しており、
前記制御手段は、前記プロセッサから前記第1のパケットデータの書き込みコマンドを受けたときに、前記記憶手段の第1のキューに前記プロセッサから受けた前記第1のパケットデータを格納し、前記プロセッサから前記第1のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを中断し、前記プロセッサから第2のパケットデータの書き込みコマンドを受けたときに、前記記憶手段の第2のキューに前記プロセッサから受けた前記第2のパケットデータを格納し、前記プロセッサから前記第2のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの前記第1のキューへの書き込みを再開する、請求項1記載の半導体装置。
【請求項3】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記メモリ内のキューごとに先頭のパケットデータが格納される前記メモリのアドレスを記憶するヘッドポインタと、
前記メモリ内のキューごとに最後尾のパケットデータが格納される前記メモリのアドレスを記憶するテイルポインタと、
前記メモリ内のキューごとに前記先頭のパケットデータから前記最後尾のパケットデータまでの複数のパケットデータが前記メモリのどのアドレスに格納されるかの情報をリンク形式で記憶するリンクドリストと、
前記プロセッサからパケットデータを受けて前記メモリに書き込むための制御を行なう制御手段とを含み、
少なくとも前記テイルポインタおよび前記リンクドリストは、1つのパケットデータの終わりを示す情報を格納するビットを含み、
前記制御手段は、前記プロセッサから第1のパケットデータの書き込みコマンドを受けたときに、前記メモリの第1の領域に前記プロセッサから受けた前記第1のパケットデータを格納し、前記プロセッサから前記第1のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを中断し、前記プロセッサから第2のパケットデータの書き込みコマンドを受けたときに、前記メモリの第2の領域に前記プロセッサから受けた第2のパケットデータを格納し、前記プロセッサから前記第2のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを再開して前記メモリの第3の領域に前記第1のパケットデータの続きを書き込み、前記第1のパケットデータの書き込み終了時に前記テイルポインタおよび前記リンクドリストを更新すると共に前記ビットにパケットデータの終わりを示す情報を書き込む、半導体装置。
【請求項4】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記メモリ内のキューごとに先頭のパケットデータが格納される前記メモリのアドレスを記憶するヘッドポインタと、
前記メモリ内のキューごとに最後尾のパケットデータが格納される前記メモリのアドレスを記憶するテイルポインタと、
前記メモリ内のキューごとに前記先頭のパケットデータから前記最後尾のパケットデータまでの複数のパケットデータが前記メモリのどのアドレスに格納されるかの情報をリンク形式で記憶するリンクドリストと、
前記プロセッサからパケットデータを受けて前記メモリに書き込むための制御を行なう制御手段とを含み、
前記メモリは、複数のバンクが割り付けられたアドレスを複数有しており、
少なくとも前記テイルポインタおよび前記リンクドリストは、パケットデータを書き込んだバンク情報を示すバンクポインタを含み、
前記制御手段は、前記プロセッサから第1のパケットデータの書き込みコマンドを受けたときに、前記メモリの第1のアドレスの第1のバンクに前記プロセッサから受けた前記第1のパケットデータを格納し、前記プロセッサから前記第1のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを中断し、前記プロセッサから第2のパケットデータの書き込みコマンドを受けたときに、前記メモリの第2のアドレスの第2のバンクに前記プロセッサから受けた第2のパケットデータを格納し、前記プロセッサから前記第2のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを再開して前記メモリの前記第1のアドレスの第3のバンクに前記第1のパケットデータの続きを書き込み、前記第1のパケットデータの書き込み終了時に前記テイルポインタおよび前記リンクドリストを更新すると共に前記バンクポインタにパケットデータを書き込んだバンク情報を書き込む、半導体装置。
【請求項5】
プロセッサから受けたコマンドに応じて、メモリへのパケットデータの書き込みを制御する半導体装置であって、
前記メモリ内のキューごとに先頭のパケットデータが格納される前記メモリのアドレスを記憶するヘッドポインタと、
前記メモリ内のキューごとに最後尾のパケットデータが格納される前記メモリのアドレスを記憶するテイルポインタと、
前記メモリ内のキューごとに前記先頭のパケットデータから前記最後尾のパケットデータまでの複数のパケットデータが前記メモリのどのアドレスに格納されるかの情報をリンク形式で記憶するリンクドリストと、
前記プロセッサからパケットデータを受けて前記メモリに書き込むための制御を行なう制御手段とを含み、
前記メモリは、複数のバンクが割り付けられたアドレスを複数有しており、
少なくとも前記テイルポインタおよび前記リンクドリストは、パケットデータを書き込んだバンク情報を示すバンクポインタを含み、
前記制御手段は、前記プロセッサからあるキューに対する第1のパケットデータの書き込みコマンドを受けたときに、前記メモリの第1のアドレスの第1のバンクに前記プロセッサから受けた前記第1のパケットデータを格納して第1のラインポインタに前記第1のアドレスおよび前記あるキューの番号を格納し、前記プロセッサから前記第1のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを中断し、前記プロセッサから前記あるキューに対する第2のパケットデータの書き込みコマンドを受けたときに、前記メモリの第2のアドレスの第2のバンクに前記プロセッサから受けた第2のパケットデータを格納して第2のラインポインタに前記第2のアドレスおよび前記あるキューの番号を格納し、前記プロセッサから前記第2のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを再開して前記メモリの前記第1のアドレスの第3のバンクに前記第1のパケットデータの続きを書き込み、前記第1のパケットデータの書き込み終了時に前記テイルポインタおよび前記リンクドリストを更新すると共に前記バンクポインタにパケットデータを書き込んだバンク情報を書き込む、半導体装置。
【請求項6】
プロセッサと、
パケットデータを記憶するメモリと、
前記プロセッサから受けたコマンドに応じて、前記メモリへのパケットデータの書き込みを制御する半導体装置とを含んだ通信装置であって、
前記半導体装置は、パケットデータを一時的に記憶する記憶手段と、
前記プロセッサからパケットデータを受けて前記記憶手段に格納し、前記記憶手段に格納されたパケットデータを読み出して前記メモリに書き込むための制御を行なう制御手段とを含み、
前記制御手段は、前記プロセッサから第1のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第1のパケットデータを格納し、前記プロセッサから前記第1のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを中断し、前記プロセッサから第2のパケットデータの書き込みコマンドを受けたときに、前記記憶手段に前記プロセッサから受けた前記第2のパケットデータを格納し、前記プロセッサから前記第2のパケットデータの書き込みの中断指示を受けたときに、前記第1のパケットデータの書き込みを再開する、通信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−253598(P2012−253598A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−125160(P2011−125160)
【出願日】平成23年6月3日(2011.6.3)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成20年度、独立行政法人情報通信研究機構「高度通信・放送研究開発委託研究/新世代ネットワークの構築に関する設計・評価手法の研究開発 課題ウ ネットワークのエネルギー消費を低減させる新しい技術の研究開発およびその評価〜レイヤ3による資源発見機構の実現とエネルギー削減への貢献〜」、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】